<?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>184559</bug_id>
          
          <creation_ts>2018-04-12 15:36:14 -0700</creation_ts>
          <short_desc>Introduce SuspendedPageProxy to keep old web processes around after their WebPageProxy has been swapped to a new one</short_desc>
          <delta_ts>2018-04-13 11:05:21 -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>WebKit Misc.</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1414197</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-12 15:36:14 -0700</bug_when>
    <thetext>Introduce SuspendedPageProxy to keep old web processes around after their WebPageProxy has been swapped to a new one

This is an intermediate step towards:
1 - Keeping the page cache working
2 - Keeping an origin-keyed process pool around, ready to reuse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414202</commentid>
    <comment_count>1</comment_count>
      <attachid>337844</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-12 15:54:45 -0700</bug_when>
    <thetext>Created attachment 337844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414219</commentid>
    <comment_count>2</comment_count>
      <attachid>337846</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-12 16:19:17 -0700</bug_when>
    <thetext>Created attachment 337846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414234</commentid>
    <comment_count>3</comment_count>
      <attachid>337850</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-12 16:34:47 -0700</bug_when>
    <thetext>Created attachment 337850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414398</commentid>
    <comment_count>4</comment_count>
      <attachid>337850</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-13 08:09:54 -0700</bug_when>
    <thetext>Comment on attachment 337850
Patch

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

&gt; Source/WebCore/loader/DocumentLoader.cpp:659
&gt; +        completionHandler(WTFMove(newRequest));

At this point completionHandler has been moved into navigationPolicyCompletionHandler, right?

&gt; Source/WebCore/loader/FrameLoader.cpp:3234
&gt; +    WTF::Function&lt;void(void)&gt; completionHandler = [this, shouldContinue] {

WTF can be removed.
This should probably also be a CompletionHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414461</commentid>
    <comment_count>5</comment_count>
      <attachid>337904</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-13 10:23:51 -0700</bug_when>
    <thetext>Created attachment 337904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414463</commentid>
    <comment_count>6</comment_count>
      <attachid>337906</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-13 10:31:06 -0700</bug_when>
    <thetext>Created attachment 337906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414475</commentid>
    <comment_count>7</comment_count>
      <attachid>337906</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-13 11:04:28 -0700</bug_when>
    <thetext>Comment on attachment 337906
Patch

Clearing flags on attachment: 337906

Committed r230640: &lt;https://trac.webkit.org/changeset/230640&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414476</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-13 11:04:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414478</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-13 11:05:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/39417321&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337844</attachid>
            <date>2018-04-12 15:54:45 -0700</date>
            <delta_ts>2018-04-12 16:19:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184559-20180412155444.patch</filename>
            <type>text/plain</type>
            <size>50039</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1YzEwMjViZjU2YjFiNmFmODZjYzNh
YWFkNDEyOTdmM2JiMDhjNzUuLmYyNWVmY2QxZjQzMDFjZmIzY2VhYmJiMzc3MDFmY2EwYzM5ZDRk
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDQtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTdXNwZW5kZWRQYWdlUHJveHkgdG8g
a2VlcCBvbGQgd2ViIHByb2Nlc3NlcyBhcm91bmQgYWZ0ZXIgdGhlaXIgV2ViUGFnZVByb3h5IGhh
cyBiZWVuIHN3YXBwZWQgdG8gYSBuZXcgb25lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRGVidWdVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdU
Rjo6ZGVidWdTdHJpbmcpOiBBZGQgYSBkZWJ1ZyB1dGlsaXR5IHRvIGVhc2lseSBjb25zdHJ1Y3Qg
YSAiY29uc3QgY2hhcioiIHRoYXQgaXMgcmVsZWFzZWQgYWZ0ZXIgYSBzcGluIG9mIHRoZSBydW4g
bG9vcC4KKyAgICAgICAgICBUaGlzIGdyZWF0bHkgZWFzZXMgdXNlcyBvdXIgU3RyaW5nIGNsYXNz
ZXMgYW5kIGZ1bmN0aW9ucyBpbnNpZGUgb2YgIiVzIiBzdHlsZSBlbnZpcm9ubWVudHMgbGlrZSBw
cmludGYgYW5kIExPRy4KKwogMjAxOC0wNC0xMiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56
YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBjcmFzaCBob29rIGZ1bmN0
aW9uYWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMGU2YjJmYmYzYjI0NmYxOGE3ZWVjMTZjNjA2ZjlmOWZl
MjI0NzBhLi5mOTZlYWEyM2NlMjg2ODM5ZThhMGM2NTRiZjFmYmM2ODNmODk2MDZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTgtMDQtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTdXNwZW5kZWRQYWdlUHJveHkgdG8ga2Vl
cCBvbGQgd2ViIHByb2Nlc3NlcyBhcm91bmQgYWZ0ZXIgdGhlaXIgV2ViUGFnZVByb3h5IGhhcyBi
ZWVuIHN3YXBwZWQgdG8gYSBuZXcgb25lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJIHRlc3QuCisKKyAgICAgICAgV2Vi
Q29yZSBjaGFuZ2VzIHJld29yayB0aGUgbWVhbmluZyBvZiBhICJGb3JTdXNwZW5zaW9uIiBwb2xp
Y3kgdG8gc2ltcGx5IG5hdmlnYXRlIHRoZSBwYWdlIHRvIGFib3V0OmJsYW5rLgorCisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmg6CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSk6CisKIDIwMTgtMDQtMTIgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNd
IEZpeCBhIGhvc3Qgb2Ygc21hbGwgQ1NTIEFuaW1hdGlvbnMgYW5kIENTUyBUcmFuc2l0aW9ucyBp
c3N1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzNmZTVhZGVmYzc1ZWY4ZjFlMDkxOTczMzNhNzQ5YmUwM2Q0MjM4
MC4uZWU0M2JiNzQ5NWQwYjg2ZGUzNGNmZmQ2YmJlOGIxMjhkZmJkZWVlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw3NyBAQAorMjAxOC0wNC0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW50cm9kdWNlIFN1c3BlbmRlZFBhZ2VQcm94eSB0byBrZWVwIG9sZCB3
ZWIgcHJvY2Vzc2VzIGFyb3VuZCBhZnRlciB0aGVpciBXZWJQYWdlUHJveHkgaGFzIGJlZW4gc3dh
cHBlZCB0byBhIG5ldyBvbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODQ1NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgd2hlbiBhIFdlYlBhZ2VQcm94eSBuYXZpZ2F0
ZXMgYW5kIGlzIHN3YXBwZWQgdG8gYSBuZXcgcHJvY2VzcywgdGhlIG9sZCBwcm9jZXNzIGFsbW9z
dCBhbHdheXMgZ29lcyBhd2F5LgorCisgICAgICAgIFRoaXMgaXMgbm90IGRlc2lyYWJsZSBmb3Ig
YSBmZXcgcmVhc29uczoKKyAgICAgICAgMSAtIFdlIGNhbid0IGtlZXAgdGhlIFBhZ2VDYWNoZSB3
b3JraW5nIGZvciBiYWNrL2ZvcndhcmQgc2NlbmFyaW9zCisgICAgICAgIDIgLSBXZSB0aHJvdyBh
d2F5IGEgImZvby5jb20iIHdlYiBwcm9jZXNzLCBtZWFuaW5nIHRoZSBuZXh0IHRpbWUgd2UgbmVl
ZCB0byBob3N0IGEgImZvby5jb20iIHdlYiBwYWdlIHdlIGhhdmUgdG8gbGF1bmNoCisgICAgICAg
ICAgICBhbmQgaW5pdGlhbGl6ZSBhIG5ldyB3ZWIgcHJvY2Vzcy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgYSBTdXNwZW5kZWRQYWdlUHJveHkgb2JqZWN0IHRvIGtlZXAgYXJvdW5kIHRoZSBv
bGQgd2ViIHByb2Nlc3MgYW5kIHRvIG1hbmFnZSBjb21tdW5pY2F0aW9uIHdpdGggaXQuCisKKyAg
ICAgICAgRm9yIG5vdywgYSBXZWJQYWdlUHJveHkga2VlcHMgZXhhY3RseSBvbmUgInN1c3BlbmRl
ZCBwYWdlIiByZXByZXNlbnRpbmcgdGhlIG1vc3QgcmVjZW50bHkgdmlzaXRlZCBwYWdlIGFuZCBp
dHMgcHJvY2Vzcy4KKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGF0IHByb2Nlc3MgaXMgbmV2ZXIg
cmV1c2VkLgorCisgICAgICAgIFNvIG5vIGJlbmVmaXQgaXMgYWNoaWV2ZWQgd2l0aCB0aGlzIHBh
dGNoLCBidXQgaXQgZW5hYmxlcyBmdXR1cmUgYmVuZWZpdHMuCisKKyAgICAgICAgKiBQbGF0Zm9y
bS9Mb2dnaW5nLmg6CisKKyAgICAgICAgKiBTaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldFN1c3BlbmRl
ZFBhZ2UpOgorICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisKKyAg
ICAgICAgTmV3IG9iamVjdCB0byByZXByZXNlbnQgdGhlIHN0YXRlIG9mIGEgV2ViUGFnZVByb3h5
IGluIGFuIG9sZCB3ZWIgcHJvY2VzcyB0aGF0IGlzIG5vdCBjdXJyZW50bHkgaG9zdGluZyB0aGUg
dmlldy4KKyAgICAgICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6Om1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQpOgor
ICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6flN1c3BlbmRlZFBhZ2VQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6d2ViUHJvY2Vzc0RpZENs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRGaW5pc2hMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6bG9nZ2luZ1N0cmluZyBj
b25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaC4KKyAgICAgICAgKFdlYktpdDo6
U3VzcGVuZGVkUGFnZVByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQ
YWdlUHJveHk6OnBhZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJv
eHk6OnByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6
Oml0ZW0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmlz
aGVkU3VzcGVuZGluZyBjb25zdCk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXR0YWNoVG9Qcm9jZXNzRm9yTmF2
aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5YmVDcmVhdGVTdXNw
ZW5kZWRQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kZWRQYWdl
UHJvY2Vzc0Nsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNo
TG9hZEZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpzdXNwZW5kV2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpzdXNwZW5kZWRQYWdlV2FzRGVzdHJveWVkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6IE9wdGlvbmFsbHkgcGFzcyBXZWJQ
YWdlUHJveHkgbWVzc2FnZXMgYWxvbmcgdG8gU3VzcGVuZGVkUGFnZVByb3h5IG9iamVjdHMuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6Om1heWJlU2h1dERvd24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmNhblRlcm1pbmF0ZUNoaWxkUHJvY2Vzcyk6IERvbid0IHRlcm1pbmF0
ZSBjaGlsZCBwcm9jZXNzZXMgaWYgdGhleSBzdGlsbCBoYXZlIHN1c3BlbmRlZCBwYWdlcy4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SXNTdXNwZW5kZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmlzU3VzcGVuZGVkIGNvbnN0KTogRm9yIG5vdywgdXNlZCBvbmx5IGJ5IFdl
YlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzLiBXaWxsIGhhdmUgbW9yZSB1c2VzIHNvb24uCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKTogQWxsb3cgdGhlIFVJUHJvY2VzcyB0byByZXF1ZXN0IGFu
IHVwZGF0ZSBvZiB0aGUgd2ViIHByb2Nlc3NlcyB1c2VyIHZpc2libGUgbmFtZS4KKwogMjAxOC0w
NC0xMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBb
RXh0cmEgem9vbSBtb2RlXSBTdXBwcmVzcyBVSSBmb3IgaW5wdXRzIG9mIHR5cGUgZmlsZSBpbiBl
eHRyYSB6b29tIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RlYnVnVXRpbGl0aWVz
LmggYi9Tb3VyY2UvV1RGL3d0Zi9EZWJ1Z1V0aWxpdGllcy5oCmluZGV4IDEyMmY3NjgwYTcwYTQ3
ZTMyMGRkMGZlZTRjODdkMzIxNDhiMTViMmUuLmE0NDFiNWNkZThiZDM0ODY1OGIxOGMxNTJmOTU1
YjQ1OTBjZmY4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RlYnVnVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dURi93dGYvRGVidWdVdGlsaXRpZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMSArMjMsMTEgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXVEZfRGVidWdVdGlsaXRpZXNfaAotI2RlZmlu
ZSBXVEZfRGVidWdVdGlsaXRpZXNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAjZGVmaW5lIFNMRUVQX1RIUkVBRF9GT1JfREVCVUdH
RVIoKSBcCiBkbyB7IFwKQEAgLTQwLDQgKzQwLDI0IEBAIGRvIHsgXAogICAgIFdURkJyZWFrcG9p
bnRUcmFwKCk7IFwKIH0gd2hpbGUgKDApCiAKLSNlbmRpZiAvKiBXVEZfRGVidWdVdGlsaXRpZXNf
aCAqLworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVz
PgorY29uc3QgY2hhciogZGVidWdTdHJpbmcoU3RyaW5nVHlwZXMuLi4gc3RyaW5ncykKK3sKKyAg
ICBTdHJpbmcgcmVzdWx0ID0gdHJ5TWFrZVN0cmluZyhzdHJpbmdzLi4uKTsKKyAgICBpZiAoIXJl
c3VsdCkKKyAgICAgICAgQ1JBU0goKTsKKworICAgIGF1dG8gY1N0cmluZyA9IHJlc3VsdC51dGY4
KCk7CisgICAgY29uc3QgY2hhciogY1N0cmluZ0RhdGEgPSBjU3RyaW5nLmRhdGEoKTsKKworICAg
IGNhbGxPbk1haW5UaHJlYWQoW2NTdHJpbmcgPSBXVEZNb3ZlKGNTdHJpbmcpXSB7CisgICAgfSk7
CisKKyAgICByZXR1cm4gY1N0cmluZ0RhdGE7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1
c2luZyBXVEY6OmRlYnVnU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKaW5kZXggODBkYmYxM2YwMjFjZjUzMzU2NGI2ZGIxNWU3NWU0ZTAwMTg5NTczMy4uYTIw
M2M2Y2Q3NzM5NjliNWZiNjFjYjljMjVhMzA2ZjE5MGY5YWNmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291
cmNlUmVxdWVzdCYKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9t
YWluUmVzb3VyY2UpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGlzUmVk
aXJlY3Rpb25Gcm9tU2VydmljZVdvcmtlciA9IHJlZGlyZWN0UmVzcG9uc2Uuc291cmNlKCkgPT0g
UmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyOwotICAgIHdpbGxTZW5kUmVx
dWVzdChXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbaXNSZWRpcmVjdGlvbkZy
b21TZXJ2aWNlV29ya2VyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXNdIChhdXRvJiYgcmVx
dWVzdCkgbXV0YWJsZSB7CisgICAgd2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIHJl
ZGlyZWN0UmVzcG9uc2UsIFNob3VsZENvbnRpbnVlOjpZZXMsIFtpc1JlZGlyZWN0aW9uRnJvbVNl
cnZpY2VXb3JrZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpc10gKGF1dG8mJiByZXF1ZXN0
KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSk7
CiAgICAgICAgIGlmIChyZXF1ZXN0LmlzTnVsbCgpIHx8ICFtX21haW5Eb2N1bWVudEVycm9yLmlz
TnVsbCgpIHx8ICFtX2ZyYW1lKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OwpAQCAtNTUyLDExICs1NTIsMTEgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYKICAgICAgICAg
fSk7CiAgICAgfSk7CiAjZWxzZQotICAgIHdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3Qp
LCByZWRpcmVjdFJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgd2ls
bFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFNob3VsZENv
bnRpbnVlOjpZZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICNlbmRpZgogfQogCi12
b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3
UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
bmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgU2hv
dWxkQ29udGludWUgc2hvdWxkQ29udGludWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIE5vdGUgdGhhdCB0
aGVyZSBhcmUgbm8gYXNzZXJ0cyBoZXJlIGFzIHRoZXJlIGFyZSBmb3IgdGhlIG90aGVyIGNhbGxi
YWNrcy4gVGhpcyBpcyBkdWUgdG8gdGhlCiAgICAgLy8gZmFjdCB0aGF0IHRoaXMgImNhbGxiYWNr
IiBpcyBzZW50IHdoZW4gc3RhcnRpbmcgZXZlcnkgbG9hZCwgYW5kIHRoZSBzdGF0ZSBvZiBjYWxs
YmFjawpAQCAtNTY0LDYgKzU2NCw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAgICAgLy8g
Y2FsbGJhY2tzIGlzIG1lYW50IHRvIHByZXZlbnQuCiAgICAgQVNTRVJUKCFuZXdSZXF1ZXN0Lmlz
TnVsbCgpKTsKIAorICAgIEFTU0VSVChzaG91bGRDb250aW51ZSAhPSBTaG91bGRDb250aW51ZTo6
Tm8pOworCiAgICAgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSA9ICFyZWRpcmVjdFJl
c3BvbnNlLmlzTnVsbCgpOwogICAgIGlmICghZnJhbWVMb2FkZXIoKS0+Y2hlY2tJZkZvcm1BY3Rp
b25BbGxvd2VkQnlDU1AobmV3UmVxdWVzdC51cmwoKSwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UpKSB7CiAgICAgICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2Fu
Y2VsbGVkRXJyb3IobmV3UmVxdWVzdCkpOwpAQCAtNjMwLDIxICs2MzIsMTYgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3Qs
IGNvbnN0IFJlc291cmMKIAogICAgIHNldFJlcXVlc3QobmV3UmVxdWVzdCk7CiAKLSAgICAvLyBG
SVhNRTogSWRlYWxseSB3ZSdkIHN0b3AgdGhlIEkvTyB1bnRpbCB3ZSBoZWFyIGJhY2sgZnJvbSB0
aGUgbmF2aWdhdGlvbiBwb2xpY3kgZGVsZWdhdGUKLSAgICAvLyBsaXN0ZW5lci4gQnV0IHRoZXJl
J3Mgbm8gd2F5IHRvIGRvIHRoYXQgaW4gcHJhY3RpY2UuIFNvIGluc3RlYWQgd2UgY2FuY2VsIGxh
dGVyIGlmIHRoZQotICAgIC8vIGxpc3RlbmVyIHRlbGxzIHVzIHRvLiBJbiBwcmFjdGljZSB0aGF0
IG1lYW5zIHRoZSBuYXZpZ2F0aW9uIHBvbGljeSBuZWVkcyB0byBiZSBkZWNpZGVkCi0gICAgLy8g
c3luY2hyb25vdXNseSBmb3IgdGhlc2UgcmVkaXJlY3QgY2FzZXMuCi0gICAgaWYgKCFkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZSkKKyAgICBpZiAoIWRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
ICYmIHNob3VsZENvbnRpbnVlICE9IFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uKQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAKLSAg
ICBBU1NFUlQoIW1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kpOwotICAgIG1fd2FpdGluZ0Zv
ck5hdmlnYXRpb25Qb2xpY3kgPSB0cnVlOwotICAgIGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNr
ZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KG5ld1JlcXVlc3QpLCBk
aWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZvcm1TdGF0ZSosIFNob3VsZENvbnRpbnVlIHNo
b3VsZENvbnRpbnVlKSBtdXRhYmxlIHsKKyAgICBhdXRvIG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0
aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkg
bXV0YWJsZSB7CiAgICAgICAgIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgPSBmYWxzZTsK
ICAgICAgICAgc3dpdGNoIChzaG91bGRDb250aW51ZSkgewogICAgICAgICBjYXNlIFNob3VsZENv
bnRpbnVlOjpGb3JTdXNwZW5zaW9uOgotICAgICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogU2V0dXAgdGhpcyBwYWdlIGZvciBzdXNwZW5zaW9uIChlLmcuIFBhZ2Ug
Q2FjaGUpIGhlcmUuCisgICAgICAgICAgICAvLyBXZSBoYW5kbGUgc3VzcGVuc2lvbiBieSBuYXZp
Z2F0aW5nIGZvcndhcmQgdG8gYWJvdXQ6YmxhbmssIHdoaWNoIGxlYXZlcyB1cyBzZXR1cCB0byBu
YXZpZ2F0ZSBiYWNrIHRvIHJlc3VtZS4KKyAgICAgICAgICAgIHJlcXVlc3QgPSB7IGJsYW5rVVJM
KCkgfTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpO
bzoKICAgICAgICAgICAgIHN0b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTY1Myw3ICs2NTAsMTcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKICAg
ICAgICAgfQogCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwot
ICAgIH0pOworICAgIH07CisKKyAgICBBU1NFUlQoIW1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xp
Y3kpOworICAgIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgPSB0cnVlOworCisgICAgaWYg
KHNob3VsZENvbnRpbnVlID09IFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgZnJhbWVMb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2
aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QobmV3UmVxdWVzdCksIGRpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlLCBXVEZNb3ZlKG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiBib29sIERvY3VtZW50TG9hZGVyOjp0cnlMb2FkaW5nUmVxdWVzdEZyb21BcHBsaWNh
dGlvbkNhY2hlKCkKQEAgLTE2NTUsOCArMTY2MiwxMCBAQCBib29sIERvY3VtZW50TG9hZGVyOjpt
YXliZUxvYWRFbXB0eSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFy
dExvYWRpbmdNYWluUmVzb3VyY2UoU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpCiB7Cisg
ICAgQVNTRVJUKHNob3VsZENvbnRpbnVlICE9IFNob3VsZENvbnRpbnVlOjpObyk7CisKICAgICBt
X21haW5Eb2N1bWVudEVycm9yID0gUmVzb3VyY2VFcnJvcigpOwogICAgIHRpbWluZygpLm1hcmtT
dGFydFRpbWVBbmRGZXRjaFN0YXJ0KCk7CiAgICAgQVNTRVJUKCFtX21haW5SZXNvdXJjZSk7CkBA
IC0xNjgxLDcgKzE2OTAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWlu
UmVzb3VyY2UoKQogICAgIEFTU0VSVCh0aW1pbmcoKS5zdGFydFRpbWUoKSk7CiAgICAgQVNTRVJU
KHRpbWluZygpLmZldGNoU3RhcnQoKSk7CiAKLSAgICB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0KG1fcmVxdWVzdCksIFJlc291cmNlUmVzcG9uc2UoKSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUg
eworICAgIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobV9yZXF1ZXN0KSwgUmVzb3Vy
Y2VSZXNwb25zZSgpLCBzaG91bGRDb250aW51ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAg
ICBtX3JlcXVlc3QgPSByZXF1ZXN0OwogCiAgICAgICAgIC8vIHdpbGxTZW5kUmVxdWVzdCgpIG1h
eSBsZWFkIHRvIG91ciBGcmFtZSBiZWluZyBkZXRhY2hlZCBvciBjYW5jZWxsaW5nIHRoZSBsb2Fk
IHZpYSBudWxsaW5nIHRoZSBSZXNvdXJjZVJlcXVlc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCmluZGV4IDcwYTFhM2U5ZWM4NDdiYjNmMjNiYzFmNTk4MDA4YTRlNTRhZTM5
NTUuLjE4MDk0ZWM3MWE1MjM2OWIwNTJmZWZlMTk1ZjA4ZWRiZTM1NTYzOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC04NCw2ICs4NCw4IEBAIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0ZVJlc291
cmNlOwogCitlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlOworCiB1c2luZyBSZXNvdXJjZUxvYWRl
ck1hcCA9IEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUmVmUHRyPFJlc291cmNlTG9hZGVyPj47CiAK
IGVudW0gY2xhc3MgQXV0b3BsYXlQb2xpY3kgewpAQCAtMjM3LDcgKzIzOSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCk7CiAgICAgdm9pZCBzZXRNYWluUmVzb3Vy
Y2VEYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kpOwogCi0gICAgdm9pZCBz
dGFydExvYWRpbmdNYWluUmVzb3VyY2UoKTsKKyAgICB2b2lkIHN0YXJ0TG9hZGluZ01haW5SZXNv
dXJjZShTaG91bGRDb250aW51ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIHdpbGxDb250aW51
ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJlZGlyZWN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
CkBAIC0zNTEsNyArMzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyQXJjaGl2ZVJlc291
cmNlcygpOwogI2VuZGlmCiAKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFNob3VsZENvbnRpbnVlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBmaW5pc2hl
ZExvYWRpbmcoKTsKICAgICB2b2lkIG1haW5SZWNlaXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGZlMDU1OGRhNGU4YzcxYzE1Y2E4ODE5
ODZmMDIwNTM0YzExNDNiMTcuLjlmZmJlMjdlZjRiZjAxZWU2YWRiNzA5M2EwOWM4NDE2M2M4YWM0
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzA2LDcgKzMwNiw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmluaXQoKQogICAgIC8vIFRoaXMgc29tZXdoYXQgb2RkIHNl
dCBvZiBzdGVwcyBnaXZlcyB0aGUgZnJhbWUgYW4gaW5pdGlhbCBlbXB0eSBkb2N1bWVudC4KICAg
ICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihS
ZXNvdXJjZVJlcXVlc3QoVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkpLCBTdWJz
dGl0dXRlRGF0YSgpKS5wdHIoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlciht
X3BvbGljeURvY3VtZW50TG9hZGVyLmdldCgpKTsKLSAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXItPnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpOworICAgIG1fcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKFNob3VsZENvbnRpbnVlOjpZZXMp
OwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOwogICAgIG1fZnJhbWUuZG9jdW1l
bnQoKS0+Y2FuY2VsUGFyc2luZygpOwpAQCAtMzIzMSw3ICszMjMxLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWUKICAgICAgICAgZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQubG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoUmVzdWx0KERpYWdub3N0aWNMb2dnaW5nS2V5czo6cGFnZUNhY2hlS2V5KCks
IERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmV0cmlldmFsS2V5KCksIERpYWdub3N0aWNMb2dnaW5n
UmVzdWx0RmFpbCwgU2hvdWxkU2FtcGxlOjpZZXMpOwogICAgIH0KIAotICAgIFdURjo6RnVuY3Rp
b248dm9pZCh2b2lkKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpc10geworICAgIFdURjo6RnVu
Y3Rpb248dm9pZCh2b2lkKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgc2hvdWxkQ29udGlu
dWVdIHsKICAgICAgICAgaWYgKCFtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMzI1MSw3ICszMjUxLDEyIEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fbG9hZGluZ0Zyb21D
YWNoZWRQYWdlID0gZmFsc2U7Ci0gICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+
c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCk7CisKKyAgICAgICAgLy8gV2UgaGFuZGxlIHN1c3Bl
bnNpb24gYnkgbmF2aWdhdGluZyBmb3J3YXJkIHRvIGFib3V0OmJsYW5rLCB3aGljaCBsZWF2ZXMg
dXMgc2V0dXAgdG8gbmF2aWdhdGUgYmFjayB0byByZXN1bWUuCisgICAgICAgIGlmIChzaG91bGRD
b250aW51ZSA9PSBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbikKKyAgICAgICAgICAgIG1f
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+d2lsbENvbnRpbnVlTWFpblJlc291cmNlTG9hZEFm
dGVyUmVkaXJlY3QoeyBibGFua1VSTCgpIH0pOworCisgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKHNob3VsZENvbnRpbnVlKTsKICAg
ICB9OwogICAgIAogICAgIGlmICghZm9ybVN0YXRlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5o
CmluZGV4IDYzZTRjOGUxYzM4MzI0YzhkYTMxOTRiOTNjMzEzMzliY2NhY2ZlMzIuLjQ1NTY2YWM2
NjU2OTg2YzM1ZjY0OTYwYjFjMTE4NTI2Mjk0MDZmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2lu
Zy5oCkBAIC02Miw2ICs2Miw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oUHJpbnRpbmcpIFwKICAg
ICBNKFByb2Nlc3MpIFwKICAgICBNKFByb2Nlc3NTdXNwZW5zaW9uKSBcCisgICAgTShQcm9jZXNz
U3dhcHBpbmcpIFwKICAgICBNKFJlbW90ZUxheWVyVHJlZSkgXAogICAgIE0oUmVzaXplKSBcCiAg
ICAgTShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IDQzMWUzYzE0YTI0OTUzNjc2ZTM5MWY0
NTQyYWY4NmMyNjI2ZDlmNzUuLjFhY2Q1ZGRjYTVlODlhNTMxMTI4MTg3N2JmMDkwNWVhOGExN2Iy
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwCkBAIC0xMDMsNCArMTAzLDkgQEAgdWludDY0X3QgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6
aGlnaGVzdFVzZWRJdGVtSUQoKQogICAgIHJldHVybiBoaWdoZXN0SXRlbUlEOwogfQogCit2b2lk
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldFN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVBy
b3h5JiBwYWdlKQoreworICAgIG1fc3VzcGVuZGVkUGFnZSA9ICZwYWdlOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uaAppbmRleCBlNGJkNTA3MmQxYzIzYTZkNGJlYzFmN2I3MDJlNzZiOGY5OTEyM2EwLi40
ZWEyY2E3MDEwNjVjMTBjZTdmMDExMmQ2NzYzNjFjYTE5NTZkOWY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCkBAIC00MSw2ICs0MSw4IEBAIGNs
YXNzIEVuY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBTdXNwZW5kZWRQYWdl
UHJveHk7CisKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCYWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0Zvcndh
cmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7CkBAIC02Myw2ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBWaWV3U25hcHNob3QqIHNuYXBzaG90KCkgY29uc3QgeyByZXR1cm4gbV9pdGVt
U3RhdGUuc25hcHNob3QuZ2V0KCk7IH0KICAgICB2b2lkIHNldFNuYXBzaG90KFJlZlB0cjxWaWV3
U25hcHNob3Q+JiYgc25hcHNob3QpIHsgbV9pdGVtU3RhdGUuc25hcHNob3QgPSBXVEZNb3ZlKHNu
YXBzaG90KTsgfQogI2VuZGlmCisgICAgdm9pZCBzZXRTdXNwZW5kZWRQYWdlKFN1c3BlbmRlZFBh
Z2VQcm94eSYpOwogCiAgICAgc3RhdGljIHVpbnQ2NF90IGhpZ2hlc3RVc2VkSXRlbUlEKCk7CiAK
QEAgLTcxLDYgKzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZSBtX2l0ZW1TdGF0ZTsKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBTdXNwZW5kZWRQYWdl
UHJveHkqIG1fc3VzcGVuZGVkUGFnZSB7IG51bGxwdHIgfTsKIH07CiAKIHR5cGVkZWYgVmVjdG9y
PFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI3YjMzNzJkY2U2N2IxMjk4NjRiNjRiMjI4NTczMGE5MTQyMTFiNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3Bw
CkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8d3RmL0RlYnVn
VXRpbGl0aWVzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgY29uc3QgSGFzaFNl
dDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4mIG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5k
ZWQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PElQQzo6U3RyaW5nUmVm
ZXJlbmNlPj4gbWVzc2FnZU5hbWVzOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxh
ZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBtZXNzYWdlTmFt
ZXMuZ2V0KCkuYWRkKCJCYWNrRm9yd2FyZEFkZEl0ZW0iKTsKKyAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZCgiQ2xlYXJBbGxFZGl0Q29tbWFuZHMiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZCgiRGlkQ2hhbmdlQ29udGVudFNpemUiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZCgiRGlkQ2hhbmdlTWFpbkRvY3VtZW50Iik7CisgICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoIkRpZENoYW5nZVByb2dyZXNzIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5n
ZXQoKS5hZGQoIkRpZENvbW1pdExvYWRGb3JGcmFtZSIpOworICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJEaWREZXN0cm95TmF2aWdhdGlvbiIpOworICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJEaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSIpOworICAgICAgICBtZXNz
YWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaW5pc2hQcm9ncmVzcyIpOworICAgICAgICBtZXNzYWdl
TmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJzdExheW91dEZvckZyYW1lIik7CisgICAgICAgIG1lc3Nh
Z2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1l
Iik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZE5hdmlnYXRlV2l0aE5hdmln
YXRpb25EYXRhIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFJlYWNoTGF5
b3V0TWlsZXN0b25lIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFNhdmVU
b1BhZ2VDYWNoZSIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFBy
b2dyZXNzIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRWRp
dG9yU3RhdGVDaGFuZ2VkIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIlBhZ2VF
eHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZSIpOworICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJTZXRSZW5kZXJUcmVlU2l6ZSIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKCJTZXRTdGF0dXNUZXh0Iik7CisgICAgfSk7CisKKyAgICByZXR1cm4gbWVzc2FnZU5h
bWVzOworfQorCitTdXNwZW5kZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdl
UHJveHkmIHBhZ2UsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYgaXRlbSkKKyAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9wcm9jZXNzKCZwcm9jZXNz
KQorICAgICwgbV9iYWNrRm9yd2FyZExpc3RJdGVtKGl0ZW0pCit7CisgICAgbV9iYWNrRm9yd2Fy
ZExpc3RJdGVtLT5zZXRTdXNwZW5kZWRQYWdlKCp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3BhZ2UucGFnZUlEKCkp
OworfQorCitTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJveHkoKQoreworICAg
IGlmIChtX3Byb2Nlc3MpCisgICAgICAgIG1fcHJvY2Vzcy0+c3VzcGVuZGVkUGFnZVdhc0Rlc3Ry
b3llZCgqdGhpcyk7Cit9CisKK3ZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojp3ZWJQcm9jZXNzRGlk
Q2xvc2UoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQoreworICAgIEFTU0VSVF9VTlVTRUQocHJv
Y2VzcywgJnByb2Nlc3MgPT0gbV9wcm9jZXNzKTsKKyAgICBtX3Byb2Nlc3MgPSBudWxscHRyOwor
CisgICAgbV9wYWdlLnN1c3BlbmRlZFBhZ2VQcm9jZXNzQ2xvc2VkKCp0aGlzKTsKK30KKwordm9p
ZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZEZpbmlzaExvYWQoKQoreworICAgIEFTU0VSVChtX3By
b2Nlc3MpOworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkgJXMg
ZnJvbSBwcm9jZXNzICVpIGZpbmlzaGVkIHRyYW5zaXRpb24gdG8gc3VzcGVuZGVkIiwgbG9nZ2lu
Z1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworCisgICAgbV9maW5p
c2hlZFN1c3BlbmRpbmcgPSB0cnVlOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpVcGRhdGVBY3RpdmVQYWdlcygpLCAwKTsKK30KKwordm9pZCBTdXNwZW5kZWRQ
YWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBBU1NFUlQoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKworICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
RmluaXNoTG9hZEZvckZyYW1lOjpuYW1lKCkpIHsKKyAgICAgICAgZGlkRmluaXNoTG9hZCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2lmICFMT0dfRElTQUJMRUQKKyAgICBpZiAobWVzc2Fn
ZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpLmNvbnRhaW5zKGRlY29kZXIubWVzc2FnZU5h
bWUoKSkpCisgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkg
cmVjZWl2ZWQgdW5leHBlY3RlZCBXZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwgZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpKTsKKyNlbmRpZgorfQorCisjaWYgIUxPR19E
SVNBQkxFRAorY29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5nKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZGVidWdTdHJpbmcoIigiLCBTdHJpbmc6OmZvcm1hdCgiJXAi
LCB0aGlzKSwgInBhZ2UgSUQgIiwgU3RyaW5nOjpudW1iZXIobV9wYWdlLnBhZ2VJRCgpKSwgIiwg
bV9maW5pc2hlZFN1c3BlbmRpbmcgIiwgU3RyaW5nOjpudW1iZXIobV9maW5pc2hlZFN1c3BlbmRp
bmcpLCAiKSIpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDljYmMw
NzVjNDY4NDVlNTljOGNhNzY0NDZjOTUzYzE3MzIxMWIyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworY2xh
c3MgV2ViUHJvY2Vzc1Byb3h5OworCitjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHkgOiBwdWJsaWMg
UmVmQ291bnRlZDxTdXNwZW5kZWRQYWdlUHJveHk+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PFN1c3BlbmRlZFBhZ2VQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3VzcGVuZGVkUGFnZVByb3h5KHBhZ2UsIHByb2Nl
c3MsIGl0ZW0pKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5TdXNwZW5kZWRQYWdlUHJveHkoKTsK
KworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CisKKyAgICBXZWJQYWdlUHJveHkmIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7
IH0KKyAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nl
c3M7IH0KKyAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrRm9yd2FyZExpc3RJdGVtOyB9CisKKyAgICBib29sIGZpbmlzaGVkU3VzcGVuZGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fZmluaXNoZWRTdXNwZW5kaW5nOyB9CisKKyAgICB2b2lkIHdlYlBy
b2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkmKTsKKworI2lmICFMT0dfRElTQUJMRUQKKyAg
ICBjb25zdCBjaGFyKiBsb2dnaW5nU3RyaW5nKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToK
KyAgICBTdXNwZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5Jiwg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOworCisgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CisK
KyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKKyAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2Vz
czsKKyAgICBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gbV9iYWNrRm9yd2FyZExpc3RJdGVt
OworCisgICAgYm9vbCBtX2ZpbmlzaGVkU3VzcGVuZGluZyB7IGZhbHNlIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDVjYTFiZDI4MDI0YzNmNmQ3MzBhMzJhNjJmMmY3OWExOGU1MzM1NWIuLjhmMzc0MGU5
NjFmM2NiNTcxOWRmMGNjMjQzMjMyZTFjMGQ2YmUyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjQyLDcgKzY0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpoYW5kbGVTeW5jaHJvbm91c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBj
b25zdCBTCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoKQogewogICAg
IGF1dG8gcHJvY2VzcyA9IG1ha2VSZWYobV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZU5l
d1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQobV93ZWJzaXRlRGF0YVN0b3Jl
LmdldCgpKSk7Ci0gICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSk7Cisg
ICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSwgZmFsc2UpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6YXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MpCkBAIC02NTMsMTcgKzY1Myw0NCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6YXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MpCiAKICAgICAvLyBGSVhNRTogdGhpcyBpcyB0byBmaXggdGhlIEFTU0VSVChpc1Zh
bGlkKCkpIGluc2lkZSByZWF0dGFjaFRvV2ViUHJvY2Vzcywgc29tZSBvdGhlciB3YXkgdG8gZml4
IHRoaXMgaXMgbmVlZGVkLgogICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgIHJlYXR0YWNoVG9X
ZWJQcm9jZXNzKFdURk1vdmUocHJvY2VzcykpOworICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKFdU
Rk1vdmUocHJvY2VzcyksIHRydWUpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hU
b1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQorU3VzcGVuZGVkUGFn
ZVByb3h5KiBXZWJQYWdlUHJveHk6Om1heWJlQ3JlYXRlU3VzcGVuZGVkUGFnZShXZWJQcm9jZXNz
UHJveHkmIHByb2Nlc3MpCit7CisgICAgQVNTRVJUKCFtX3N1c3BlbmRlZFBhZ2UgfHwgbV9zdXNw
ZW5kZWRQYWdlLT5wcm9jZXNzKCkgIT0gJnByb2Nlc3MpOworCisgICAgYXV0byogY3VycmVudEl0
ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKTsKKyAgICBpZiAoIWN1cnJlbnRJ
dGVtKSB7CisgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJ
dTY0ICIgdW5hYmxlIHRvIGNyZWF0ZSBzdXNwZW5kZWQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkg
LSBObyBjdXJyZW50IGJhY2svZm9yd2FyZCBpdGVtIiwgcGFnZUlEKCksIHByb2Nlc3MucHJvY2Vz
c0lkZW50aWZpZXIoKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIG1f
c3VzcGVuZGVkUGFnZSA9IFN1c3BlbmRlZFBhZ2VQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNz
LCAqY3VycmVudEl0ZW0pOworCisgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94
eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAl
aSwgYmFjay9mb3J3YXJkIGl0ZW0gJSIgUFJJdTY0LCBwYWdlSUQoKSwgbV9zdXNwZW5kZWRQYWdl
LT5sb2dnaW5nU3RyaW5nKCksIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgY3VycmVudEl0
ZW0tPml0ZW1JRCgpKTsKKworICAgIHJldHVybiBtX3N1c3BlbmRlZFBhZ2UuZ2V0KCk7Cit9CisK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kZWRQYWdlUHJvY2Vzc0Nsb3NlZChTdXNwZW5kZWRQ
YWdlUHJveHkmIHBhZ2UpCit7CisgICAgQVNTRVJUX1VOVVNFRChwYWdlLCAmcGFnZSA9PSBtX3N1
c3BlbmRlZFBhZ2UuZ2V0KCkpOworICAgIG1fc3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7Cit9CisK
K3ZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIGJvb2wgc3VzcGVuZEluT2xkUHJvY2VzcykKIHsKICAgICBBU1NFUlQo
IW1faXNDbG9zZWQpOwogICAgIEFTU0VSVCghaXNWYWxpZCgpKTsKIAogICAgIG1faXNWYWxpZCA9
IHRydWU7Ci0gICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBtX3BhZ2VJRCk7Ci0g
ICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CisKKyAgICBpZiAoIXN1c3BlbmRJ
bk9sZFByb2Nlc3MpIHsKKyAgICAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBt
X3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAg
IH0gZWxzZQorICAgICAgICBtX3Byb2Nlc3MtPnN1c3BlbmRXZWJQYWdlUHJveHkoKnRoaXMpOwog
CiAgICAgbV9wcm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKTsKIApAQCAtMjM1NCw3ICsyMzgxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9u
IGFjdGlvbiwgV2ViRnJhbWVQcm94eSYgZnIKICAgICAgICAgICAgIGF1dG8gcHJvcG9zZWRQcm9j
ZXNzID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMs
ICpuYXZpZ2F0aW9uLCBhY3Rpb24pOwogCiAgICAgICAgICAgICBpZiAocHJvcG9zZWRQcm9jZXNz
LnB0cigpICE9ICZwcm9jZXNzKCkpIHsKLSAgICAgICAgICAgICAgICBMT0coTG9hZGluZywgIlN3
aXRjaGluZyBmcm9tIHByb2Nlc3MgJWkgdG8gbmV3IHByb2Nlc3MgZm9yIG5hdmlnYXRpb24gJSIg
UFJJdTY0ICIgJyVzJyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIG5hdmlnYXRpb24tPm5hdmlnYXRp
b25JRCgpLCBuYXZpZ2F0aW9uLT5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlN3aXRjaGluZyBmcm9tIHByb2Nlc3Mg
JWkgdG8gbmV3IHByb2Nlc3MgZm9yIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyIsIHByb2Nl
c3NJZGVudGlmaWVyKCksIG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLT5s
b2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
bmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLCBwcm9wb3NlZFByb2Nlc3MgPSBXVEZN
b3ZlKHByb3Bvc2VkUHJvY2VzcyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKHBy
b3Bvc2VkUHJvY2VzcykpOwpAQCAtMzU3MSw2ICszNTk4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKIHsKKyAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZy
YW1lIC0gV2ViUGFnZVByb3h5ICVwIHdpdGggbmF2aWdhdGlvbklEICVsbHUgZGlkRmluaXNoTG9h
ZCIsIHRoaXMsIG5hdmlnYXRpb25JRCk7CisKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihtX3BhZ2VDbGllbnQpOwogCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nl
c3MtPndlYkZyYW1lKGZyYW1lSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCA5NGI5OGJjZmE4NzQzOGRlMzhhNDVhYjBkNzFhZGNlMWQ4NTk3MWFlLi4xNTFjNTc2
OWMxMDRhZDFkYTBjZmFmMWU2ZmVkNzc2ZjIzNDJmN2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NUaHJv
dHRsZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVh
YmxlQml0bWFwLmgiCisjaW5jbHVkZSAiU3VzcGVuZGVkUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
U3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlZpc2libGVDb250ZW50UmVjdFVwZGF0
ZUluZm8uaCIKQEAgLTEyODYsNiArMTI4Nyw5IEBAIHB1YmxpYzoKIAogICAgIFdlYlByZWZlcmVu
Y2VzU3RvcmUgcHJlZmVyZW5jZXNTdG9yZSgpIGNvbnN0OwogCisgICAgU3VzcGVuZGVkUGFnZVBy
b3h5KiBtYXliZUNyZWF0ZVN1c3BlbmRlZFBhZ2UoV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9p
ZCBzdXNwZW5kZWRQYWdlUHJvY2Vzc0Nsb3NlZChTdXNwZW5kZWRQYWdlUHJveHkmKTsKKwogcHJp
dmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVp
bnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQg
cGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0xNDM2LDcgKzE0NDAsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogICAgIHZvaWQgYXR0YWNoVG9Qcm9jZXNz
Rm9yTmF2aWdhdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmKTsKLSAgICB2b2lkIHJlYXR0YWNo
VG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYpOworICAgIHZvaWQgcmVhdHRhY2hU
b1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgYm9vbCBzdXNwZW5kSW5PbGRQcm9j
ZXNzKTsKIAogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlYXR0YWNoVG9XZWJQcm9jZXNz
Rm9yUmVsb2FkKCk7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gcmVhdHRhY2hUb1dlYlBy
b2Nlc3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CkBAIC0yMTI5LDYgKzIxMzMs
MTEgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxNb25vdG9uaWNUaW1l
PiBtX3BhZ2VMb2FkU3RhcnQ7CisKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBtb3JlIHRoYW4gb25l
IHN1c3BlbmRlZCBwYWdlIHBlciBXZWJQYWdlUHJveHksCisgICAgLy8gYW5kIGhhdmUgYSBnbG9i
YWwgY29sbGVjdGlvbiBvZiB0aGVtIHBlciBwcm9jZXNzIHBvb2wKKyAgICAvLyAoZS5nLiBmb3Ig
dGhhdCBwcm9jZXNzIHBvb2wncyBwYWdlIGNhY2hlKQorICAgIFJlZlB0cjxTdXNwZW5kZWRQYWdl
UHJveHk+IG1fc3VzcGVuZGVkUGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZWM2YTQxMDQ5
ZWIwOWZiMjNiNzljZmRiZWMyNmNhZTRjOWFhYjk1NS4uYmY1ZmU0YTUyZDllYzc5YTEyMDI5Mzgy
NmQxMzU5OTI1ODkwNDAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiU3VzcGVuZGVkUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIu
aCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVUlNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oIgpAQCAtMzk1LDYgKzM5NiwyNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdWludDY0X3Qg
cGFnZUlEKQogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiB9CiAK
K3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdXNwZW5kV2ViUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYg
d2ViUGFnZSkKK3sKKyAgICBpZiAoYXV0byogc3VzcGVuZGVkUGFnZSA9IHdlYlBhZ2UubWF5YmVD
cmVhdGVTdXNwZW5kZWRQYWdlKCp0aGlzKSkgeworICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5n
LCAiV2ViUHJvY2Vzc1Byb3h5IHBpZCAlaSBhZGRlZCBzdXNwZW5kZWQgcGFnZSAlcyIsIHByb2Nl
c3NJZGVudGlmaWVyKCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSk7CisgICAgICAg
IG1fc3VzcGVuZGVkUGFnZU1hcC5zZXQod2ViUGFnZS5wYWdlSUQoKSwgc3VzcGVuZGVkUGFnZSk7
CisgICAgfQorCisgICAgcmVtb3ZlV2ViUGFnZSh3ZWJQYWdlLCB3ZWJQYWdlLnBhZ2VJRCgpKTsK
KyAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCB3ZWJQYWdlLnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQcm9jZXNz
UHJveHk6OnN1c3BlbmRlZFBhZ2VXYXNEZXN0cm95ZWQoU3VzcGVuZGVkUGFnZVByb3h5JiBzdXNw
ZW5kZWRQYWdlKQoreworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQcm9jZXNzUHJveHkg
cGlkICVpIHN1c3BlbmRlZCBwYWdlICVzIHdhcyBkZXN0cm95ZWQiLCBwcm9jZXNzSWRlbnRpZmll
cigpLCBzdXNwZW5kZWRQYWdlLmxvZ2dpbmdTdHJpbmcoKSk7CisKKyAgICBBU1NFUlQobV9zdXNw
ZW5kZWRQYWdlTWFwLmNvbnRhaW5zKHN1c3BlbmRlZFBhZ2UucGFnZSgpLnBhZ2VJRCgpKSk7Cisg
ICAgbV9zdXNwZW5kZWRQYWdlTWFwLnJlbW92ZShzdXNwZW5kZWRQYWdlLnBhZ2UoKS5wYWdlSUQo
KSk7CisKKyAgICBtYXliZVNodXREb3duKCk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpy
ZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdWludDY0X3QgcGFnZUlEKQogewog
ICAgIGF1dG8qIHJlbW92ZWRQYWdlID0gbV9wYWdlTWFwLnRha2UocGFnZUlEKTsKQEAgLTQxNCwx
MiArNDM2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVBy
b3h5JiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlSUQpCiAgICAgZm9yIChhdXRvIGl0ZW1JRCA6IGl0
ZW1JRHNUb1JlbW92ZSkKICAgICAgICAgbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLnJlbW92ZShp
dGVtSUQpOwogCi0gICAgLy8gSWYgdGhpcyB3YXMgdGhlIGxhc3QgV2ViUGFnZSBvcGVuIGluIHRo
YXQgd2ViIHByb2Nlc3MsIGFuZCB3ZSBoYXZlIG5vIG90aGVyIHJlYXNvbiB0byBrZWVwIGl0IGFs
aXZlLCBsZXQgaXQgZ28uCi0gICAgLy8gV2Ugb25seSBhbGxvdyB0aGlzIHdoZW4gdXNpbmcgYSBu
ZXR3b3JrIHByb2Nlc3MsIGFzIG90aGVyd2lzZSB0aGUgV2ViUHJvY2VzcyBuZWVkcyB0byBwcmVz
ZXJ2ZSBpdHMgc2Vzc2lvbiBzdGF0ZS4KLSAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6VGVybWlu
YXRlZCB8fCAhY2FuVGVybWluYXRlQ2hpbGRQcm9jZXNzKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHNodXREb3duKCk7CisgICAgbWF5YmVTaHV0RG93bigpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlJiBzdG9yZSkKQEAg
LTYzNyw2ICs2NTQsMTUgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIC8vIFdlYlBhZ2VQcm94eSBtZXNzYWdlcyBhcmUgbm9ybWFsbHkgaGFu
ZGxlZCBieSB0aGUgbm9ybWFsICJkaXNwYXRjaE1lc3NhZ2UiIHVwIGFib3ZlLgorICAgIC8vIElm
IHRoZXkgd2VyZSBub3QgaGFuZGxlZCB0aGVyZSwgdGhlbiB0aGV5IG1heSBwb3RlbnRpYWxseSBi
ZSBoYW5kbGVkIGJ5IFN1c3BlbmRlZFBhZ2VQcm94eSBvYmplY3RzLgorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN1c3BlbmRlZFBhZ2UgPSBtX3N1
c3BlbmRlZFBhZ2VNYXAuZ2V0KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkgeworICAgICAgICAg
ICAgc3VzcGVuZGVkUGFnZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBGSVhNRTog
QWRkIHVuaGFuZGxlZCBtZXNzYWdlIGxvZ2dpbmcuCiB9CiAKQEAgLTY4MCw2ICs3MDYsMTAgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgZm9y
IChhdXRvJiBwYWdlIDogcGFnZXMpCiAgICAgICAgIHBhZ2UtPnByb2Nlc3NEaWRUZXJtaW5hdGUo
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpDcmFzaCk7CiAKKyAgICBmb3IgKGF1dG8qIHN1c3Bl
bmRlZFBhZ2UgOiBjb3B5VG9WZWN0b3JPZjxTdXNwZW5kZWRQYWdlUHJveHkqPihtX3N1c3BlbmRl
ZFBhZ2VNYXAudmFsdWVzKCkpKQorICAgICAgICBzdXNwZW5kZWRQYWdlLT53ZWJQcm9jZXNzRGlk
Q2xvc2UoKnRoaXMpOworCisgICAgbV9zdXNwZW5kZWRQYWdlTWFwLmNsZWFyKCk7CiB9CiAKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKQEAgLTgyNyw5ICs4NTcsMTcgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lVc2VyR2VzdHVyZVRva2VuKHVpbnQ2NF90
IGlkZW50aWZpZXIpCiAgICAgbV91c2VySW5pdGlhdGVkQWN0aW9uTWFwLnJlbW92ZShpZGVudGlm
aWVyKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUHJveHk6Om1heWJlU2h1dERvd24oKQoreworICAg
IGlmIChzdGF0ZSgpID09IFN0YXRlOjpUZXJtaW5hdGVkIHx8ICFjYW5UZXJtaW5hdGVDaGlsZFBy
b2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2h1dERvd24oKTsKK30KKwogYm9vbCBX
ZWJQcm9jZXNzUHJveHk6OmNhblRlcm1pbmF0ZUNoaWxkUHJvY2VzcygpCiB7Ci0gICAgaWYgKCFt
X3BhZ2VNYXAuaXNFbXB0eSgpKQorICAgIGlmICghbV9wYWdlTWFwLmlzRW1wdHkoKSB8fCAhbV9z
dXNwZW5kZWRQYWdlTWFwLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKCFtX3Byb2Nlc3NQb29sLT5zaG91bGRUZXJtaW5hdGUodGhpcykpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDgwYWI4YTZiNTk2NTdlMmY4N2VlNzE3
NjI4ZDAwMDU2NzE1MTk3NGEuLmM2NzcwZWE4NTQ4YmRmZjVjNjI5ZjQzZDYzZDAzMmExNzAxNWI1
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC02Niw2
ICs2Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94eTsK
IGNsYXNzIE9iakNPYmplY3RHcmFwaDsKIGNsYXNzIFBhZ2VDbGllbnQ7CitjbGFzcyBTdXNwZW5k
ZWRQYWdlUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OwogY2xhc3Mg
VmlzaXRlZExpbmtTdG9yZTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CkBAIC0yMDgs
NiArMjA5LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKCkg
eyBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMgPSB0cnVlOyB9CiAgICAgYm9vbCBo
YXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDb21t
aXR0ZWRBbnlQcm92aXNpb25hbExvYWRzOyB9CiAKKyAgICB2b2lkIHN1c3BlbmRXZWJQYWdlUHJv
eHkoV2ViUGFnZVByb3h5Jik7CisgICAgdm9pZCBzdXNwZW5kZWRQYWdlV2FzRGVzdHJveWVkKFN1
c3BlbmRlZFBhZ2VQcm94eSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVpbnQ2NF90IGdl
bmVyYXRlUGFnZUlEKCk7CiAgICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vi
c2l0ZURhdGFTdG9yZSYpOwpAQCAtMjIxLDYgKzIyNSw3IEBAIHByaXZhdGU6CiAgICAgLy8gQ2Fs
bGVkIHdoZW4gdGhlIHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkIG9yIHdlIGtub3cgdGhhdCBpdCB3
aWxsIHRlcm1pbmF0ZSBzb29uLgogICAgIC8vIFdpbGwgcG90ZW50aWFsbHkgY2F1c2UgdGhlIFdl
YlByb2Nlc3NQcm94eSBvYmplY3QgdG8gYmUgZnJlZWQuCiAgICAgdm9pZCBzaHV0RG93bigpOwor
ICAgIHZvaWQgbWF5YmVTaHV0RG93bigpOwogCiAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxlcnMu
CiAgICAgdm9pZCBhZGRPclVwZGF0ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgUGFnZVN0YXRlJik7CkBAIC0yOTgsNiArMzAzLDcgQEAgcHJp
dmF0ZToKICAgICBIYXNoU2V0PFN0cmluZz4gbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNj
ZXNzOwogCiAgICAgV2ViUGFnZVByb3h5TWFwIG1fcGFnZU1hcDsKKyAgICBIYXNoTWFwPHVpbnQ2
NF90LCBTdXNwZW5kZWRQYWdlUHJveHkqPiBtX3N1c3BlbmRlZFBhZ2VNYXA7CiAgICAgV2ViRnJh
bWVQcm94eU1hcCBtX2ZyYW1lTWFwOwogICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1NYXAgbV9i
YWNrRm9yd2FyZExpc3RJdGVtTWFwOwogICAgIFVzZXJJbml0aWF0ZWRBY3Rpb25NYXAgbV91c2Vy
SW5pdGlhdGVkQWN0aW9uTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggN2MyZDQ2NTMwMTMwMGM4NWJjZjkzYjM0NWFhOGQ5MmU3ODBm
M2U2MC4uYWQxNTQ3NTkwYzZmZDNhMDg1ZDFkNGVmOWQ2Y2NjOTA1YTM3NjZlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDcwLDYg
KzEwNzAsNyBAQAogCQk1MTVCRTFCNDFENTkxN0ZGMDBERDdDNjggLyogVUlHYW1lcGFkLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUFDMUQ1
NTVDNTEwMEREN0M2OCAvKiBVSUdhbWVwYWQuY3BwICovOyB9OwogCQk1MTVCRTFCNTFENTkxN0ZG
MDBERDdDNjggLyogVUlHYW1lcGFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTVCRTFBRDFENTU1QzUxMDBERDdDNjggLyogVUlHYW1lcGFkLmggKi87
IH07CiAJCTUxNUJFMUI3MUQ1QTk0RkQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlck1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUI2
MUQ1QTk0RjkwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlck1hYy5tbSAqLzsgfTsKKwkJNTE1
QzQxNUMyMDdEN0NBRTAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVDNDE1QTIwN0Q3NEUwMDA3
MjZFMDIgLyogU3VzcGVuZGVkUGFnZVByb3h5LmNwcCAqLzsgfTsKIAkJNTE1RTc3MjcxODNERDZG
NjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcyNTE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1
ZXN0LmNwcCAqLzsgfTsKIAkJNTE1RTc3MjgxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3
MjYxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oICovOyB9OwogCQk1MTYwQkZFMTEz
MzgxREY5MDA5MTg5OTkgLyogTG9nZ2luZ0ZvdW5kYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwQkZFMDEzMzgxREY5MDA5MTg5OTkgLyog
TG9nZ2luZ0ZvdW5kYXRpb24ubW0gKi87IH07CkBAIC0zNDg2LDYgKzM0ODcsOCBAQAogCQk1MTVC
RTFCMDFENTkwMDY5MDBERDdDNjggLyogR2FtZXBhZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR2FtZXBhZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE1QkUxQjExRDU5MDJCNjAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdhbWVwYWREYXRhLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxQjYxRDVBOTRGOTAwREQ3QzY4IC8qIFVJR2FtZXBhZFBy
b3ZpZGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVUlH
YW1lcGFkUHJvdmlkZXJNYWMubW07IHBhdGggPSBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1l
cGFkUHJvdmlkZXJNYWMubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNTE1QzQx
NUEyMDdENzRFMDAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdXNwZW5kZWRQYWdlUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTVDNDE1QjIwN0Q3NEUxMDA3MjZFMDIgLyogU3VzcGVu
ZGVkUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1c3BlbmRl
ZFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVFNzcyNTE4M0RE
NkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFzeW5jUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNUU3NzI2MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNjBCRkUwMTMzODFERjkwMDkxODk5OSAvKiBMb2dnaW5nRm91bmRhdGlv
bi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvZ2dpbmdGb3Vu
ZGF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI2OSw2ICs3MjcyLDgg
QEAKIAkJCQk0MTRERURENTFGOUVERERGMDA0N0M0MEQgLyogU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS5oICovLAogCQkJCTUxQTRENUE4MTZDQUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNzUmVx
dWVzdC5jcHAgKi8sCiAJCQkJNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NS
ZXF1ZXN0LmggKi8sCisJCQkJNTE1QzQxNUEyMDdENzRFMDAwNzI2RTAyIC8qIFN1c3BlbmRlZFBh
Z2VQcm94eS5jcHAgKi8sCisJCQkJNTE1QzQxNUIyMDdENzRFMTAwNzI2RTAyIC8qIFN1c3BlbmRl
ZFBhZ2VQcm94eS5oICovLAogCQkJCTMxOEExRjA0MjA0RjQ3NjQwMDM0ODBCQyAvKiBTeXN0ZW1Q
cmV2aWV3Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMzE1NzEzNUQyMDQwQTlCMjAwODRGOUNGIC8q
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyLmggKi8sCiAJCQkJMUFBNDE3QzkxMkMwMENDQTAwMkJF
NjdCIC8qIFRleHRDaGVja2VyLmggKi8sCkBAIC0xMDg5Myw2ICsxMDg5OCw3IEBACiAJCQkJNTEx
OEU5QUMxRjI5NTk3NzAwM0VGOUY1IC8qIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTAwRDZCMTgzMjdDMTIwMDA4
N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk2QkQ4NUUx
NTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTUxNUM0MTVDMjA3RDdDQUUwMDcyNkUwMiAvKiBTdXNwZW5kZWRQYWdlUHJveHkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzE4QTFGMDUyMDRGNDc2NDAwMzQ4MEJDIC8qIFN5c3RlbVByZXZpZXdD
b250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxNTcxMzVFMjA0MEE5QjIwMDg0RjlD
RiAvKiBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MVpaNDE3RUYxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggMWFlM2Q3M2Y5NjljYmNmOWM5NDc4YzY5Y2U3NDA4NmE1MDAwMmUxMy4uOTUzZGE3
ZDg1MTM5MWFhZTdiMmRiOWM4OTY1ODlkZWE4NzIxNmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU4NjYsNiArNTg2NiwxMSBAQCB2b2lk
IFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRp
ZmllciwgdWludDY0X3QgdGFzawogICAgIGhhbmRsZXItPnRhc2tEaWRDb21wbGV0ZSh0YXNrSWRl
bnRpZmllciwgZXJyb3IpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldElzU3VzcGVuZGVkKGJvb2wg
c3VzcGVuZGVkKQoreworICAgIG1faXNTdXNwZW5kZWQgPSBzdXNwZW5kZWQ7Cit9CisKICNpZiBI
QVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKIHN0YXRpYyB1aW50NjRfdCBuZXh0
UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDRjM2I1OTUxNTE2MjMwYTgxYTI1ODQ3MmE1M2U3
Yzk1YzQ4ZTk3NDAuLmEyOTFiODFjMGMwYmFiNGE3YWE0OWI1OThkMTY1MjVlMTdmYjk0YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwNzIsNiAr
MTA3Miw4IEBAIHB1YmxpYzoKIAogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyLT5pZGVudGlmaWVyKCk7IH0KIAorICAgIGJvb2wgaXNTdXNwZW5kZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzU3VzcGVuZGVkOyB9CisKIHByaXZhdGU6CiAgICAgV2ViUGFn
ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTEz
ODgsNiArMTM5MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2
ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVy
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRD
b21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAorICAgIHZvaWQgc2V0SXNTdXNw
ZW5kZWQoYm9vbCk7CisKICAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90QXRTaXplKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiaXRtYXBTaXplLCBT
bmFwc2hvdE9wdGlvbnMpOwogICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3ROb2RlKFdlYkNv
cmU6Ok5vZGUmLCBTbmFwc2hvdE9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50ID0g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKICNpZiBVU0UoQ0YpCkBAIC0x
NzA1LDYgKzE3MDksNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDcmVkZW50
aWFsc01lc3Nlbmdlcj4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsKICNlbmRpZgogCisgICAgYm9v
bCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggZDhmZTRlNWY0NDU0OGVlYTBkMWUyN2Q0NjQwMjNlYTQyYTkxMmQ4MS4uZTBm
ZjUyMTdlNWQyZWIyZGYyYTYzOTI1NzcyYjM0NmVlZjM5ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00OTEs
NiArNDkxLDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVVJM
U2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50
NjRfdCB0YXNrSWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgVVJMU2No
ZW1lVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0
YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKIAorICAgIFNldElz
U3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKQorCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9Q
QVJUSVRJT05JTkcpCiAgICAgU3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwg
dWludDY0X3QgY29udGV4dElkKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGVhNjk1YmI0MmVmYjZkMWQ4MjU0M2Q2N2Q0
NWQ0MjIzNWE2YTllMmMuLmVmYjA3ZTNmYTNiNTAzYzc5NDM4NWZlYzNhZGU3ZTM2YTJiZGVkYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC0xMjgsNiArMTI4LDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgQ2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIp
CiAgICAgTWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXIgcG9ydCkKIAorICAgIFVwZGF0ZUFjdGl2ZVBhZ2VzKCkKKwogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBTZXRTY3JlZW5Qcm9wZXJ0aWVzKHVpbnQzMl90IHByaW1hcnlTY3JlZW5J
RCwgSGFzaE1hcDx1aW50MzJfdCwgV2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcz4gc2NyZWVuUHJv
cGVydGllcykKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0K
aW5kZXggNjg1MTgzOTNkMGRlNDU2MDY5ZTU0OWNlYzExNjE5MDVlZjdmOTg5ZC4uYTE0NzIwN2M4
NzhlYjBkYmQ1NDVjNjI5NTRjMDRhY2Q2NjFjYzNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0zODcsNyArMzg3LDcgQEAg
dm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVBY3RpdmVQYWdlcygpCiAgICAgYXV0byBhY3RpdmVQYWdl
VVJMcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCiAgICAgZm9y
IChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChwYWdlLT51
c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQorICAgICAgICBpZiAocGFnZS0+dXNlc0VwaGVtZXJhbFNl
c3Npb24oKSB8fCBwYWdlLT5pc1N1c3BlbmRlZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgaWYgKE5TVVJMICpvcmlnaW5Bc1VSTCA9IG9yaWdpbigqcGFnZSkpCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZThiZDZjNzMyMzkx
NjhmNzBiYzRkNjA4MTNiNTJiMjBjNzRmMmI4Yi4uNjU4NTI4ZGQ3OTk3ZGVkZmMxYTA2OGY1NjAz
YWI3NGQ4MmM2YWUxMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE4LTA0LTEyICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgU3VzcGVuZGVkUGFnZVByb3h5IHRv
IGtlZXAgb2xkIHdlYiBwcm9jZXNzZXMgYXJvdW5kIGFmdGVyIHRoZWlyIFdlYlBhZ2VQcm94eSBo
YXMgYmVlbiBzd2FwcGVkIHRvIGEgbmV3IG9uZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDU1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToKKwogMjAxOC0wNC0xMiAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IC0tYnVpbGQtZGlyZWN0b3J5IGZs
YWcgZm9yIHJ1bi13ZWJraXQtdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmlu
ZGV4IDc3MmJkYjJmYzgwZmY1NTIxMDI5N2U3MzAzZmIyZjQwMWEzMDdhMDIuLjIyOTljMDViODA3
NjE2NmY4MTAxZTRiMThlODdjMzUzZjNlMTlkMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdh
dGlvbi5tbQpAQCAtNzUxLDQgKzc1MSw0NCBAQCBURVNUKFByb2Nlc3NTd2FwLCBNYWluRnJhbWVz
T25seSkKICAgICBFWFBFQ1RfRVEoMXUsIHNlZW5QSURzLnNpemUoKSk7CiB9CiAKK1RFU1QoUHJv
Y2Vzc1N3YXAsIE9uZVByZXZpb3VzUHJvY2Vzc1JlbWFpbnMpCit7CisgICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNz
U3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhb
W1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbd2Vi
Vmlld0NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOworICAg
IGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tQU09OU2NoZW1lIGFsbG9jXSBpbml0XSk7CisgICAg
W3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBm
b3JVUkxTY2hlbWU6QCJQU09OIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly9ob3N0MS9tYWluLmh0bWwiXV07CisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL2hvc3QyL21haW4u
aHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgcmVx
dWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJwc29uOi8vaG9zdDMvbWFpbi5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJl
cXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25l
ID0gZmFsc2U7CisKKyAgICAvLyBOYXZpZ2F0aW9ucyB0byAzIGRpZmZlcmVudCBkb21haW5zLCB3
ZSBleHBlY3QgdG8gaGF2ZSBzZWVuIDMgZGlmZmVyZW50IFBJRHMKKyAgICBFWFBFQ1RfRVEoM3Us
IHNlZW5QSURzLnNpemUoKSk7CisKKyAgICAvLyBCdXQgb25seSAyIG9mIHRob3NlIHByb2Nlc3Nl
cyBzaG91bGQgc3RpbGwgYmUgYWxpdmUKKyAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBf
d2ViUHJvY2Vzc0NvdW50XSk7Cit9CisKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337846</attachid>
            <date>2018-04-12 16:19:17 -0700</date>
            <delta_ts>2018-04-12 16:34:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184559-20180412161916.patch</filename>
            <type>text/plain</type>
            <size>50013</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1YzEwMjViZjU2YjFiNmFmODZjYzNh
YWFkNDEyOTdmM2JiMDhjNzUuLmYyNWVmY2QxZjQzMDFjZmIzY2VhYmJiMzc3MDFmY2EwYzM5ZDRk
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDQtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTdXNwZW5kZWRQYWdlUHJveHkgdG8g
a2VlcCBvbGQgd2ViIHByb2Nlc3NlcyBhcm91bmQgYWZ0ZXIgdGhlaXIgV2ViUGFnZVByb3h5IGhh
cyBiZWVuIHN3YXBwZWQgdG8gYSBuZXcgb25lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRGVidWdVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdU
Rjo6ZGVidWdTdHJpbmcpOiBBZGQgYSBkZWJ1ZyB1dGlsaXR5IHRvIGVhc2lseSBjb25zdHJ1Y3Qg
YSAiY29uc3QgY2hhcioiIHRoYXQgaXMgcmVsZWFzZWQgYWZ0ZXIgYSBzcGluIG9mIHRoZSBydW4g
bG9vcC4KKyAgICAgICAgICBUaGlzIGdyZWF0bHkgZWFzZXMgdXNlcyBvdXIgU3RyaW5nIGNsYXNz
ZXMgYW5kIGZ1bmN0aW9ucyBpbnNpZGUgb2YgIiVzIiBzdHlsZSBlbnZpcm9ubWVudHMgbGlrZSBw
cmludGYgYW5kIExPRy4KKwogMjAxOC0wNC0xMiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56
YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBjcmFzaCBob29rIGZ1bmN0
aW9uYWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MmJkMjU3YmY1NDNhMDJkNTkxYmQyZjY3NzQ1ODUzM2E4
ZDExNDE2Li5lNmZjYmUxN2Y2NDJhNmM2YzU5ZTJlYzZiN2RlOWVjYTQzZGRmNTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTgtMDQtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTdXNwZW5kZWRQYWdlUHJveHkgdG8ga2Vl
cCBvbGQgd2ViIHByb2Nlc3NlcyBhcm91bmQgYWZ0ZXIgdGhlaXIgV2ViUGFnZVByb3h5IGhhcyBi
ZWVuIHN3YXBwZWQgdG8gYSBuZXcgb25lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJIHRlc3QuCisKKyAgICAgICAgV2Vi
Q29yZSBjaGFuZ2VzIHJld29yayB0aGUgbWVhbmluZyBvZiBhICJGb3JTdXNwZW5zaW9uIiBwb2xp
Y3kgdG8gc2ltcGx5IG5hdmlnYXRlIHRoZSBwYWdlIHRvIGFib3V0OmJsYW5rLgorCisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmg6CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSk6CisKIDIwMTgtMDQtMTIgIERhbmll
bCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnRlbnQtVHlwZSBub3Qg
ZW5mb3JjZWQgZm9yIDxzY3JpcHQ+IGFsbG93cyBmb3IgWFNTCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzZmU1YWRl
ZmM3NWVmOGYxZTA5MTk3MzMzYTc0OWJlMDNkNDIzODAuLmVlNDNiYjc0OTVkMGI4NmRlMzRjZmZk
NmJiZThiMTI4ZGZiZGVlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMTgtMDQtMTIg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBT
dXNwZW5kZWRQYWdlUHJveHkgdG8ga2VlcCBvbGQgd2ViIHByb2Nlc3NlcyBhcm91bmQgYWZ0ZXIg
dGhlaXIgV2ViUGFnZVByb3h5IGhhcyBiZWVuIHN3YXBwZWQgdG8gYSBuZXcgb25lLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NTU5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0
Y2gsIHdoZW4gYSBXZWJQYWdlUHJveHkgbmF2aWdhdGVzIGFuZCBpcyBzd2FwcGVkIHRvIGEgbmV3
IHByb2Nlc3MsIHRoZSBvbGQgcHJvY2VzcyBhbG1vc3QgYWx3YXlzIGdvZXMgYXdheS4KKworICAg
ICAgICBUaGlzIGlzIG5vdCBkZXNpcmFibGUgZm9yIGEgZmV3IHJlYXNvbnM6CisgICAgICAgIDEg
LSBXZSBjYW4ndCBrZWVwIHRoZSBQYWdlQ2FjaGUgd29ya2luZyBmb3IgYmFjay9mb3J3YXJkIHNj
ZW5hcmlvcworICAgICAgICAyIC0gV2UgdGhyb3cgYXdheSBhICJmb28uY29tIiB3ZWIgcHJvY2Vz
cywgbWVhbmluZyB0aGUgbmV4dCB0aW1lIHdlIG5lZWQgdG8gaG9zdCBhICJmb28uY29tIiB3ZWIg
cGFnZSB3ZSBoYXZlIHRvIGxhdW5jaAorICAgICAgICAgICAgYW5kIGluaXRpYWxpemUgYSBuZXcg
d2ViIHByb2Nlc3MuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgU3VzcGVuZGVkUGFnZVBy
b3h5IG9iamVjdCB0byBrZWVwIGFyb3VuZCB0aGUgb2xkIHdlYiBwcm9jZXNzIGFuZCB0byBtYW5h
Z2UgY29tbXVuaWNhdGlvbiB3aXRoIGl0LgorCisgICAgICAgIEZvciBub3csIGEgV2ViUGFnZVBy
b3h5IGtlZXBzIGV4YWN0bHkgb25lICJzdXNwZW5kZWQgcGFnZSIgcmVwcmVzZW50aW5nIHRoZSBt
b3N0IHJlY2VudGx5IHZpc2l0ZWQgcGFnZSBhbmQgaXRzIHByb2Nlc3MuCisgICAgICAgIEFkZGl0
aW9uYWxseSwgdGhhdCBwcm9jZXNzIGlzIG5ldmVyIHJldXNlZC4KKworICAgICAgICBTbyBubyBi
ZW5lZml0IGlzIGFjaGlldmVkIHdpdGggdGhpcyBwYXRjaCwgYnV0IGl0IGVuYWJsZXMgZnV0dXJl
IGJlbmVmaXRzLgorCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorCisgICAgICAgICog
U2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJC
YWNrRm9yd2FyZExpc3RJdGVtOjpzZXRTdXNwZW5kZWRQYWdlKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oOgorCisgICAgICAgIE5ldyBvYmplY3QgdG8gcmVwcmVz
ZW50IHRoZSBzdGF0ZSBvZiBhIFdlYlBhZ2VQcm94eSBpbiBhbiBvbGQgd2ViIHByb2Nlc3MgdGhh
dCBpcyBub3QgY3VycmVudGx5IGhvc3RpbmcgdGhlIHZpZXcuCisgICAgICAgICogVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjptZXNzYWdl
TmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVk
UGFnZVByb3h5OjpTdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5k
ZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpTdXNw
ZW5kZWRQYWdlUHJveHk6OndlYlByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OlN1
c3BlbmRlZFBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OlN1c3Bl
bmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpTdXNw
ZW5kZWRQYWdlUHJveHk6OmxvZ2dpbmdTdHJpbmcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9Mb2dnaW5nLmguCisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpwYWdlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5Ojpwcm9jZXNzIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjppdGVtIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpmaW5pc2hlZFN1c3BlbmRpbmcgY29uc3QpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmF0dGFjaFRvUHJvY2Vzc0Zvck5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6Om1heWJlQ3JlYXRlU3VzcGVuZGVkUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c3VzcGVuZGVkUGFnZVByb2Nlc3NDbG9zZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c3VzcGVuZFdl
YlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c3VzcGVuZGVk
UGFnZVdhc0Rlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cmVt
b3ZlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2
ZU1lc3NhZ2UpOiBPcHRpb25hbGx5IHBhc3MgV2ViUGFnZVByb3h5IG1lc3NhZ2VzIGFsb25nIHRv
IFN1c3BlbmRlZFBhZ2VQcm94eSBvYmplY3RzLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjptYXli
ZVNodXREb3duKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjYW5UZXJtaW5h
dGVDaGlsZFByb2Nlc3MpOiBEb24ndCB0ZXJtaW5hdGUgY2hpbGQgcHJvY2Vzc2VzIGlmIHRoZXkg
c3RpbGwgaGF2ZSBzdXNwZW5kZWQgcGFnZXMuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNldElzU3VzcGVuZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc1N1c3BlbmRlZCBj
b25zdCk6IEZvciBub3csIHVzZWQgb25seSBieSBXZWJQcm9jZXNzOjp1cGRhdGVBY3RpdmVQYWdl
cy4gV2lsbCBoYXZlIG1vcmUgdXNlcyBzb29uLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1cGRhdGVBY3RpdmVQYWdlcyk6IEFs
bG93IHRoZSBVSVByb2Nlc3MgdG8gcmVxdWVzdCBhbiB1cGRhdGUgb2YgdGhlIHdlYiBwcm9jZXNz
ZXMgdXNlciB2aXNpYmxlIG5hbWUuCisKIDIwMTgtMDQtMTIgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0V4dHJhIHpvb20gbW9kZV0gU3VwcHJlc3Mg
VUkgZm9yIGlucHV0cyBvZiB0eXBlIGZpbGUgaW4gZXh0cmEgem9vbSBtb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9EZWJ1Z1V0aWxpdGllcy5oIGIvU291cmNlL1dURi93dGYvRGVidWdV
dGlsaXRpZXMuaAppbmRleCAxMjJmNzY4MGE3MGE0N2UzMjBkZDBmZWU0Yzg3ZDMyMTQ4YjE1YjJl
Li5hNDQxYjVjZGU4YmQzNDg2NThiMThjMTUyZjk1NWI0NTkwY2ZmOGI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9EZWJ1Z1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RlYnVn
VXRpbGl0aWVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsMTEgKzIzLDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgV1RGX0RlYnVnVXRpbGl0aWVzX2gKLSNkZWZpbmUgV1RGX0RlYnVnVXRpbGl0aWVzX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYv
UHJvY2Vzc0lELmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAog
I2RlZmluZSBTTEVFUF9USFJFQURfRk9SX0RFQlVHR0VSKCkgXAogZG8geyBcCkBAIC00MCw0ICs0
MCwyNCBAQCBkbyB7IFwKICAgICBXVEZCcmVha3BvaW50VHJhcCgpOyBcCiB9IHdoaWxlICgwKQog
Ci0jZW5kaWYgLyogV1RGX0RlYnVnVXRpbGl0aWVzX2ggKi8KK25hbWVzcGFjZSBXVEYgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4KK2NvbnN0IGNoYXIqIGRlYnVnU3RyaW5n
KFN0cmluZ1R5cGVzLi4uIHN0cmluZ3MpCit7CisgICAgU3RyaW5nIHJlc3VsdCA9IHRyeU1ha2VT
dHJpbmcoc3RyaW5ncy4uLik7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIENSQVNIKCk7CisK
KyAgICBhdXRvIGNTdHJpbmcgPSByZXN1bHQudXRmOCgpOworICAgIGNvbnN0IGNoYXIqIGNTdHJp
bmdEYXRhID0gY1N0cmluZy5kYXRhKCk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtjU3RyaW5n
ID0gV1RGTW92ZShjU3RyaW5nKV0geworICAgIH0pOworCisgICAgcmV0dXJuIGNTdHJpbmdEYXRh
OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpkZWJ1Z1N0cmluZzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDgwZGJmMTNmMDIxY2Y1
MzM1NjRiNmRiMTVlNzVlNGUwMDE4OTU3MzMuLmEyMDNjNmNkNzczOTY5YjVmYjYxY2I5YzI1YTMw
NmYxOTBmOWFjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApA
QCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgYm9vbCBpc1JlZGlyZWN0aW9uRnJvbVNlcnZpY2VXb3JrZXIg
PSByZWRpcmVjdFJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6
U2VydmljZVdvcmtlcjsKLSAgICB3aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgcmVk
aXJlY3RSZXNwb25zZSwgW2lzUmVkaXJlY3Rpb25Gcm9tU2VydmljZVdvcmtlciwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCB0aGlzXSAoYXV0byYmIHJlcXVlc3QpIG11dGFibGUgeworICAgIHdpbGxT
ZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBTaG91bGRDb250
aW51ZTo6WWVzLCBbaXNSZWRpcmVjdGlvbkZyb21TZXJ2aWNlV29ya2VyLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHRoaXNdIChhdXRvJiYgcmVxdWVzdCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VCghbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpOwogICAgICAgICBpZiAocmVxdWVzdC5pc051
bGwoKSB8fCAhbV9tYWluRG9jdW1lbnRFcnJvci5pc051bGwoKSB8fCAhbV9mcmFtZSkgewogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTU1MiwxMSArNTUyLDExIEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIH0pOwogICAgIH0pOwogI2Vsc2UKLSAgICB3
aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVl
c3QpLCByZWRpcmVjdFJlc3BvbnNlLCBTaG91bGRDb250aW51ZTo6WWVzLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAjZW5kaWYKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICAvLyBOb3RlIHRoYXQgdGhlcmUgYXJlIG5vIGFzc2VydHMgaGVyZSBh
cyB0aGVyZSBhcmUgZm9yIHRoZSBvdGhlciBjYWxsYmFja3MuIFRoaXMgaXMgZHVlIHRvIHRoZQog
ICAgIC8vIGZhY3QgdGhhdCB0aGlzICJjYWxsYmFjayIgaXMgc2VudCB3aGVuIHN0YXJ0aW5nIGV2
ZXJ5IGxvYWQsIGFuZCB0aGUgc3RhdGUgb2YgY2FsbGJhY2sKQEAgLTU2NCw2ICs1NjQsOCBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3
UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAgIC8vIGNhbGxiYWNrcyBpcyBtZWFudCB0byBwcmV2
ZW50LgogICAgIEFTU0VSVCghbmV3UmVxdWVzdC5pc051bGwoKSk7CiAKKyAgICBBU1NFUlQoc2hv
dWxkQ29udGludWUgIT0gU2hvdWxkQ29udGludWU6Ok5vKTsKKwogICAgIGJvb2wgZGlkUmVjZWl2
ZVJlZGlyZWN0UmVzcG9uc2UgPSAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKTsKICAgICBpZiAo
IWZyYW1lTG9hZGVyKCktPmNoZWNrSWZGb3JtQWN0aW9uQWxsb3dlZEJ5Q1NQKG5ld1JlcXVlc3Qu
dXJsKCksIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKSkgewogICAgICAgICBjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG5ld1JlcXVlc3QpKTsK
QEAgLTYzMCwyMSArNjMyLDE2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAKICAgICBzZXRS
ZXF1ZXN0KG5ld1JlcXVlc3QpOwogCi0gICAgLy8gRklYTUU6IElkZWFsbHkgd2UnZCBzdG9wIHRo
ZSBJL08gdW50aWwgd2UgaGVhciBiYWNrIGZyb20gdGhlIG5hdmlnYXRpb24gcG9saWN5IGRlbGVn
YXRlCi0gICAgLy8gbGlzdGVuZXIuIEJ1dCB0aGVyZSdzIG5vIHdheSB0byBkbyB0aGF0IGluIHBy
YWN0aWNlLiBTbyBpbnN0ZWFkIHdlIGNhbmNlbCBsYXRlciBpZiB0aGUKLSAgICAvLyBsaXN0ZW5l
ciB0ZWxscyB1cyB0by4gSW4gcHJhY3RpY2UgdGhhdCBtZWFucyB0aGUgbmF2aWdhdGlvbiBwb2xp
Y3kgbmVlZHMgdG8gYmUgZGVjaWRlZAotICAgIC8vIHN5bmNocm9ub3VzbHkgZm9yIHRoZXNlIHJl
ZGlyZWN0IGNhc2VzLgotICAgIGlmICghZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpCisgICAg
aWYgKCFkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSAmJiBzaG91bGRDb250aW51ZSAhPSBTaG91
bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwogCi0gICAgQVNTRVJUKCFtX3dhaXRpbmdGb3JOYXZp
Z2F0aW9uUG9saWN5KTsKLSAgICBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5ID0gdHJ1ZTsK
LSAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5
KFJlc291cmNlUmVxdWVzdChuZXdSZXF1ZXN0KSwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2Us
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgbXV0YWJsZSB7Cisg
ICAgYXV0byBuYXZpZ2F0aW9uUG9saWN5Q29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRm9ybVN0YXRlKiwg
U2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIG11dGFibGUgewogICAgICAgICBtX3dhaXRp
bmdGb3JOYXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7CiAgICAgICAgIHN3aXRjaCAoc2hvdWxkQ29u
dGludWUpIHsKICAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbjoKLSAg
ICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAgICAgLy8gRklYTUU6IFNldHVwIHRoaXMg
cGFnZSBmb3Igc3VzcGVuc2lvbiAoZS5nLiBQYWdlIENhY2hlKSBoZXJlLgorICAgICAgICAgICAg
Ly8gV2UgaGFuZGxlIHN1c3BlbnNpb24gYnkgbmF2aWdhdGluZyBmb3J3YXJkIHRvIGFib3V0OmJs
YW5rLCB3aGljaCBsZWF2ZXMgdXMgc2V0dXAgdG8gbmF2aWdhdGUgYmFjayB0byByZXN1bWUuCisg
ICAgICAgICAgICByZXF1ZXN0ID0geyBibGFua1VSTCgpIH07CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Tm86CiAgICAgICAgICAgICBzdG9wTG9hZGlu
Z0ZvclBvbGljeUNoYW5nZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02NTMsNyArNjUwLDE3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAgICAgICAgIH0KIAogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKLSAgICB9KTsKKyAgICB9OworCisgICAgQVNT
RVJUKCFtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5KTsKKyAgICBtX3dhaXRpbmdGb3JOYXZp
Z2F0aW9uUG9saWN5ID0gdHJ1ZTsKKworICAgIGlmIChzaG91bGRDb250aW51ZSA9PSBTaG91bGRD
b250aW51ZTo6Rm9yU3VzcGVuc2lvbikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKG5ld1JlcXVlc3QpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZyYW1lTG9h
ZGVyKCktPnBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1
ZXN0KG5ld1JlcXVlc3QpLCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgV1RGTW92ZShuYXZp
Z2F0aW9uUG9saWN5Q29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogYm9vbCBEb2N1bWVudExvYWRl
cjo6dHJ5TG9hZGluZ1JlcXVlc3RGcm9tQXBwbGljYXRpb25DYWNoZSgpCkBAIC0xNjU1LDggKzE2
NjIsMTAgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3Vy
Y2UoKQordm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKFNob3Vs
ZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKQogeworICAgIEFTU0VSVChzaG91bGRDb250aW51ZSAh
PSBTaG91bGRDb250aW51ZTo6Tm8pOworCiAgICAgbV9tYWluRG9jdW1lbnRFcnJvciA9IFJlc291
cmNlRXJyb3IoKTsKICAgICB0aW1pbmcoKS5tYXJrU3RhcnRUaW1lQW5kRmV0Y2hTdGFydCgpOwog
ICAgIEFTU0VSVCghbV9tYWluUmVzb3VyY2UpOwpAQCAtMTY4MSw3ICsxNjkwLDcgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICBBU1NFUlQodGlt
aW5nKCkuc3RhcnRUaW1lKCkpOwogICAgIEFTU0VSVCh0aW1pbmcoKS5mZXRjaFN0YXJ0KCkpOwog
Ci0gICAgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChtX3JlcXVlc3QpLCBSZXNvdXJj
ZVJlc3BvbnNlKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICB3aWxsU2VuZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0KG1fcmVxdWVzdCksIFJlc291cmNlUmVzcG9uc2UoKSwgc2hvdWxkQ29udGlu
dWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKIAog
ICAgICAgICAvLyB3aWxsU2VuZFJlcXVlc3QoKSBtYXkgbGVhZCB0byBvdXIgRnJhbWUgYmVpbmcg
ZGV0YWNoZWQgb3IgY2FuY2VsbGluZyB0aGUgbG9hZCB2aWEgbnVsbGluZyB0aGUgUmVzb3VyY2VS
ZXF1ZXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA3MGExYTNl
OWVjODQ3YmIzZjIzYmMxZjU5ODAwOGE0ZTU0YWUzOTU1Li4xODA5NGVjNzFhNTIzNjliMDUyZmVm
ZTE5NWYwOGVkYmUzNTU2MzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aApAQCAtODQsNiArODQsOCBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJj
ZUxvYWRlcjsKIGNsYXNzIFN1YnN0aXR1dGVSZXNvdXJjZTsKIAorZW51bSBjbGFzcyBTaG91bGRD
b250aW51ZTsKKwogdXNpbmcgUmVzb3VyY2VMb2FkZXJNYXAgPSBIYXNoTWFwPHVuc2lnbmVkIGxv
bmcsIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4+OwogCiBlbnVtIGNsYXNzIEF1dG9wbGF5UG9saWN5
IHsKQEAgLTIzNyw3ICsyMzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5n
KGJvb2wpOwogICAgIHZvaWQgc2V0TWFpblJlc291cmNlRGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRh
QnVmZmVyaW5nUG9saWN5KTsKIAotICAgIHZvaWQgc3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCk7
CisgICAgdm9pZCBzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoU2hvdWxkQ29udGludWUpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZChjb25zdCBSZXNvdXJj
ZUVycm9yJik7CiAgICAgdm9pZCB3aWxsQ29udGludWVNYWluUmVzb3VyY2VMb2FkQWZ0ZXJSZWRp
cmVjdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtMzUxLDcgKzM1Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjbGVhckFyY2hpdmVSZXNvdXJjZXMoKTsKICNlbmRpZgogCi0gICAgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJik7CisgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBTaG91bGRDb250aW51ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKCk7CiAgICAgdm9pZCBtYWlu
UmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCBmZTA1NThkYTRlOGM3MWMxNWNhODgxOTg2ZjAyMDUzNGMxMTQzYjE3Li45ZmZiZTI3
ZWY0YmYwMWVlNmFkYjcwOTNhMDljODQxNjNjOGFjNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjppbml0
KCkKICAgICAvLyBUaGlzIHNvbWV3aGF0IG9kZCBzZXQgb2Ygc3RlcHMgZ2l2ZXMgdGhlIGZyYW1l
IGFuIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQuCiAgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIo
bV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0KFVSTChQYXJzZWRV
UkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpKSwgU3Vic3RpdHV0ZURhdGEoKSkucHRyKCkpOwogICAg
IHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQo
KSk7Ci0gICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVz
b3VyY2UoKTsKKyAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGluZ01h
aW5SZXNvdXJjZShTaG91bGRDb250aW51ZTo6WWVzKTsKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVj
dChtX2ZyYW1lKTsKICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmNhbmNlbFBhcnNpbmcoKTsKQEAg
LTMyMzEsNyArMzIzMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2
aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgICAgIGRpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50LmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OnBhZ2VDYWNoZUtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJl
dHJpZXZhbEtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdEZhaWwsIFNob3VsZFNhbXBsZTo6
WWVzKTsKICAgICB9CiAKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQodm9pZCk+IGNvbXBsZXRpb25I
YW5kbGVyID0gW3RoaXNdIHsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQodm9pZCk+IGNvbXBsZXRp
b25IYW5kbGVyID0gW3RoaXMsIHNob3VsZENvbnRpbnVlXSB7CiAgICAgICAgIGlmICghbV9wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAg
LTMyNTEsNyArMzI1MSwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5h
dmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZSA9IGZhbHNlOwotICAgICAg
ICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgp
OworCisgICAgICAgIC8vIFdlIGhhbmRsZSBzdXNwZW5zaW9uIGJ5IG5hdmlnYXRpbmcgZm9yd2Fy
ZCB0byBhYm91dDpibGFuaywgd2hpY2ggbGVhdmVzIHVzIHNldHVwIHRvIG5hdmlnYXRlIGJhY2sg
dG8gcmVzdW1lLgorICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWU6
OkZvclN1c3BlbnNpb24pCisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIt
PndpbGxDb250aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJlZGlyZWN0KHsgYmxhbmtVUkwoKSB9
KTsKKworICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGluZ01h
aW5SZXNvdXJjZShzaG91bGRDb250aW51ZSk7CiAgICAgfTsKICAgICAKICAgICBpZiAoIWZvcm1T
dGF0ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA2M2U0YzhlMWMzODMyNGM4ZGEz
MTk0YjkzYzMxMzM5YmNjYWNmZTMyLi40NTU2NmFjNjY1Njk4NmMzNWY2NDk2MGIxYzExODUyNjI5
NDA2Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtNjIsNiArNjIsNyBAQCBleHRl
cm4gIkMiIHsKICAgICBNKFByaW50aW5nKSBcCiAgICAgTShQcm9jZXNzKSBcCiAgICAgTShQcm9j
ZXNzU3VzcGVuc2lvbikgXAorICAgIE0oUHJvY2Vzc1N3YXBwaW5nKSBcCiAgICAgTShSZW1vdGVM
YXllclRyZWUpIFwKICAgICBNKFJlc2l6ZSkgXAogICAgIE0oUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNw
cAppbmRleCA0MzFlM2MxNGEyNDk1MzY3NmUzOTFmNDU0MmFmODZjMjYyNmQ5Zjc1Li4xYWNkNWRk
Y2E1ZTg5YTUzMTEyODE4NzdiZjA5MDVlYThhMTdiMjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMTAzLDQgKzEwMyw5IEBAIHVp
bnQ2NF90IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmhpZ2hlc3RVc2VkSXRlbUlEKCkKICAgICBy
ZXR1cm4gaGlnaGVzdEl0ZW1JRDsKIH0KIAordm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpz
ZXRTdXNwZW5kZWRQYWdlKFN1c3BlbmRlZFBhZ2VQcm94eSYgcGFnZSkKK3sKKyAgICBtX3N1c3Bl
bmRlZFBhZ2UgPSAmcGFnZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggZTRiZDUwNzJkMWMy
M2E2ZDRiZWMxZjdiNzAyZTc2YjhmOTkxMjNhMC4uNGVhMmNhNzAxMDY1YzEwY2U3ZjAxMTJkNjc2
MzYxY2ExOTU2ZDlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0uaApAQCAtNDEsNiArNDEsOCBAQCBjbGFzcyBFbmNvZGVyOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OworCiBjbGFzcyBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
QmFja0ZvcndhcmRMaXN0SXRlbT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViQmFja0Zv
cndhcmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRf
dCBwYWdlSUQpOwpAQCAtNjMsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgVmlld1NuYXBzaG90KiBz
bmFwc2hvdCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbVN0YXRlLnNuYXBzaG90LmdldCgpOyB9CiAg
ICAgdm9pZCBzZXRTbmFwc2hvdChSZWZQdHI8Vmlld1NuYXBzaG90PiYmIHNuYXBzaG90KSB7IG1f
aXRlbVN0YXRlLnNuYXBzaG90ID0gV1RGTW92ZShzbmFwc2hvdCk7IH0KICNlbmRpZgorICAgIHZv
aWQgc2V0U3VzcGVuZGVkUGFnZShTdXNwZW5kZWRQYWdlUHJveHkmKTsKIAogICAgIHN0YXRpYyB1
aW50NjRfdCBoaWdoZXN0VXNlZEl0ZW1JRCgpOwogCkBAIC03MSw2ICs3NCw3IEBAIHByaXZhdGU6
CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgbV9pdGVtU3RhdGU7CiAgICAgdWludDY0
X3QgbV9wYWdlSUQ7CisgICAgU3VzcGVuZGVkUGFnZVByb3h5KiBtX3N1c3BlbmRlZFBhZ2UgeyBu
dWxscHRyIH07CiB9OwogCiB0eXBlZGVmIFZlY3RvcjxSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRl
bT4+IEJhY2tGb3J3YXJkTGlzdEl0ZW1WZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2IzMzcyZGNlNjdiMTI5ODY0
YjY0YjIyODU3MzBhOTE0MjExYjYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdXNwZW5kZWRQYWdlUHJveHku
aCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworc3RhdGljIGNvbnN0IEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuY2U+JiBt
ZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4+IG1lc3NhZ2VOYW1lczsKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUZsYWcsIFtdIHsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiQmFja0ZvcndhcmRB
ZGRJdGVtIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkNsZWFyQWxsRWRpdENv
bW1hbmRzIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENoYW5nZUNvbnRl
bnRTaXplIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENoYW5nZU1haW5E
b2N1bWVudCIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VQcm9n
cmVzcyIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDb21taXRMb2FkRm9y
RnJhbWUiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRGVzdHJveU5hdmln
YXRpb24iKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmlu
aXNoUHJvZ3Jlc3MiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmlyc3RM
YXlvdXRGb3JGcmFtZSIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSIpOworICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSIpOworICAgICAgICBtZXNz
YWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRSZWFjaExheW91dE1pbGVzdG9uZSIpOworICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTYXZlVG9QYWdlQ2FjaGUiKTsKKyAgICAgICAgbWVz
c2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU3RhcnRQcm9ncmVzcyIpOworICAgICAgICBtZXNzYWdl
TmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIik7CisgICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkVkaXRvclN0YXRlQ2hhbmdlZCIpOworICAgICAg
ICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRD
aGFuZ2UiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0UmVuZGVyVHJlZVNp
emUiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0U3RhdHVzVGV4dCIpOwor
ICAgIH0pOworCisgICAgcmV0dXJuIG1lc3NhZ2VOYW1lczsKK30KKworU3VzcGVuZGVkUGFnZVBy
b3h5OjpTdXNwZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCisgICAgOiBtX3BhZ2Uo
cGFnZSkKKyAgICAsIG1fcHJvY2VzcygmcHJvY2VzcykKKyAgICAsIG1fYmFja0ZvcndhcmRMaXN0
SXRlbShpdGVtKQoreworICAgIG1fYmFja0ZvcndhcmRMaXN0SXRlbS0+c2V0U3VzcGVuZGVkUGFn
ZSgqdGhpcyk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1
c3BlbmRlZCh0cnVlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKK30KKworU3VzcGVuZGVkUGFnZVByb3h5
Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkKK3sKKyAgICBpZiAobV9wcm9jZXNzKQorICAgICAgICBt
X3Byb2Nlc3MtPnN1c3BlbmRlZFBhZ2VXYXNEZXN0cm95ZWQoKnRoaXMpOworfQorCit2b2lkIFN1
c3BlbmRlZFBhZ2VQcm94eTo6d2ViUHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHByb2Nlc3MsICZwcm9jZXNzID09IG1fcHJvY2Vz
cyk7CisgICAgbV9wcm9jZXNzID0gbnVsbHB0cjsKKworICAgIG1fcGFnZS5zdXNwZW5kZWRQYWdl
UHJvY2Vzc0Nsb3NlZCgqdGhpcyk7Cit9CisKK3ZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRG
aW5pc2hMb2FkKCkKK3sKKyAgICBBU1NFUlQobV9wcm9jZXNzKTsKKyAgICBMT0coUHJvY2Vzc1N3
YXBwaW5nLCAiU3VzcGVuZGVkUGFnZVByb3h5ICVzIGZyb20gcHJvY2VzcyAlaSBmaW5pc2hlZCB0
cmFuc2l0aW9uIHRvIHN1c3BlbmRlZCIsIGxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKKworICAgIG1fZmluaXNoZWRTdXNwZW5kaW5nID0gdHJ1ZTsKKwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6VXBkYXRlQWN0aXZlUGFn
ZXMoKSwgMCk7Cit9CisKK3ZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgQVNTRVJU
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRGb3JGcmFtZTo6bmFtZSgp
KSB7CisgICAgICAgIGRpZEZpbmlzaExvYWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNp
ZiAhTE9HX0RJU0FCTEVECisgICAgaWYgKG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5k
ZWQoKS5jb250YWlucyhkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKQorICAgICAgICBMT0coUHJvY2Vz
c1N3YXBwaW5nLCAiU3VzcGVuZGVkUGFnZVByb3h5IHJlY2VpdmVkIHVuZXhwZWN0ZWQgV2ViUGFn
ZVByb3h5IG1lc3NhZ2UgJyVzJyIsIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRh
dGEoKSk7CisjZW5kaWYKK30KKworI2lmICFMT0dfRElTQUJMRUQKK2NvbnN0IGNoYXIqIFN1c3Bl
bmRlZFBhZ2VQcm94eTo6bG9nZ2luZ1N0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRlYnVn
U3RyaW5nKCIoIiwgU3RyaW5nOjpmb3JtYXQoIiVwIiwgdGhpcyksICJwYWdlIElEICIsIFN0cmlu
Zzo6bnVtYmVyKG1fcGFnZS5wYWdlSUQoKSksICIsIG1fZmluaXNoZWRTdXNwZW5kaW5nICIsIFN0
cmluZzo6bnVtYmVyKG1fZmluaXNoZWRTdXNwZW5kaW5nKSwgIikiKTsKK30KKyNlbmRpZgorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVk
UGFnZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q5Y2JjMDc1YzQ2ODQ1ZTU5YzhjYTc2NDQ2Yzk1M2Mx
NzMyMTFiMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3Bl
bmRlZFBhZ2VQcm94eS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdlYlByb2Nlc3NQcm94eTsKKworY2xh
c3MgU3VzcGVuZGVkUGFnZVByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8U3VzcGVuZGVkUGFnZVBy
b3h5PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdXNwZW5kZWRQYWdlUHJveHk+IGNyZWF0
ZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYgaXRlbSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN1c3BlbmRlZFBhZ2VQcm94eShwYWdlLCBwcm9jZXNzLCBpdGVtKSk7CisgICAgfQorCisgICAg
dmlydHVhbCB+U3VzcGVuZGVkUGFnZVByb3h5KCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworCisgICAgV2ViUGFnZVByb3h5
JiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CisgICAgV2ViUHJvY2Vzc1Byb3h5KiBw
cm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzOyB9CisgICAgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSYgaXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0SXRlbTsgfQor
CisgICAgYm9vbCBmaW5pc2hlZFN1c3BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2ZpbmlzaGVk
U3VzcGVuZGluZzsgfQorCisgICAgdm9pZCB3ZWJQcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1By
b3h5Jik7CisKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hhciogbG9nZ2luZ1N0cmlu
ZygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgU3VzcGVuZGVkUGFnZVByb3h5KFdl
YlBhZ2VQcm94eSYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsK
KworICAgIHZvaWQgZGlkRmluaXNoTG9hZCgpOworCisgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7
CisgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3M7CisgICAgUmVmPFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0+IG1fYmFja0ZvcndhcmRMaXN0SXRlbTsKKworICAgIGJvb2wgbV9maW5pc2hlZFN1
c3BlbmRpbmcgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1Y2ExYmQyODAyNGMzZjZkNzMw
YTMyYTYyZjJmNzlhMThlNTMzNTViLi44ZjM3NDBlOTYxZjNjYjU3MTlkZjBjYzI0MzIzMmUxYzBk
NmJlMjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTY0
Miw3ICs2NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlU3luY2hyb25vdXNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUwogdm9pZCBXZWJQYWdlUHJveHk6
OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkKIHsKICAgICBhdXRvIHByb2Nlc3MgPSBtYWtlUmVmKG1f
cHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nl
c3NDb3VudExpbWl0KG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSkpOwotICAgIHJlYXR0YWNoVG9X
ZWJQcm9jZXNzKFdURk1vdmUocHJvY2VzcykpOworICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKFdU
Rk1vdmUocHJvY2VzcyksIGZhbHNlKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmF0dGFjaFRv
UHJvY2Vzc0Zvck5hdmlnYXRpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQpAQCAt
NjUzLDE3ICs2NTMsNDQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmF0dGFjaFRvUHJvY2Vzc0Zvck5h
dmlnYXRpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQogCiAgICAgLy8gRklYTUU6
IHRoaXMgaXMgdG8gZml4IHRoZSBBU1NFUlQoaXNWYWxpZCgpKSBpbnNpZGUgcmVhdHRhY2hUb1dl
YlByb2Nlc3MsIHNvbWUgb3RoZXIgd2F5IHRvIGZpeCB0aGlzIGlzIG5lZWRlZC4KICAgICBtX2lz
VmFsaWQgPSBmYWxzZTsKLSAgICByZWF0dGFjaFRvV2ViUHJvY2VzcyhXVEZNb3ZlKHByb2Nlc3Mp
KTsKKyAgICByZWF0dGFjaFRvV2ViUHJvY2VzcyhXVEZNb3ZlKHByb2Nlc3MpLCB0cnVlKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcykKK1N1c3BlbmRlZFBhZ2VQcm94eSogV2ViUGFnZVByb3h5OjptYXli
ZUNyZWF0ZVN1c3BlbmRlZFBhZ2UoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQoreworICAgIEFT
U0VSVCghbV9zdXNwZW5kZWRQYWdlIHx8IG1fc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpICE9ICZw
cm9jZXNzKTsKKworICAgIGF1dG8qIGN1cnJlbnRJdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPmN1
cnJlbnRJdGVtKCk7CisgICAgaWYgKCFjdXJyZW50SXRlbSkgeworICAgICAgICBMT0coUHJvY2Vz
c1N3YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIHVuYWJsZSB0byBjcmVhdGUgc3Vz
cGVuZGVkIHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIC0gTm8gY3VycmVudCBiYWNrL2ZvcndhcmQg
aXRlbSIsIHBhZ2VJRCgpLCBwcm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBtX3N1c3BlbmRlZFBhZ2UgPSBTdXNwZW5kZWRQ
YWdlUHJveHk6OmNyZWF0ZSgqdGhpcywgcHJvY2VzcywgKmN1cnJlbnRJdGVtKTsKKworICAgIExP
RyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNw
ZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICUiIFBS
SXU2NCwgcGFnZUlEKCksIG1fc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBwcm9jZXNz
LnByb2Nlc3NJZGVudGlmaWVyKCksIGN1cnJlbnRJdGVtLT5pdGVtSUQoKSk7CisKKyAgICByZXR1
cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVu
ZGVkUGFnZVByb2Nlc3NDbG9zZWQoU3VzcGVuZGVkUGFnZVByb3h5JiBwYWdlKQoreworICAgIEFT
U0VSVF9VTlVTRUQocGFnZSwgJnBhZ2UgPT0gbV9zdXNwZW5kZWRQYWdlLmdldCgpKTsKKyAgICBt
X3N1c3BlbmRlZFBhZ2UgPSBudWxscHRyOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRh
Y2hUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBib29sIHN1c3Bl
bmRJbk9sZFByb2Nlc3MpCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAgICBBU1NFUlQo
IWlzVmFsaWQoKSk7CiAKICAgICBtX2lzVmFsaWQgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+cmVt
b3ZlV2ViUGFnZSgqdGhpcywgbV9wYWdlSUQpOwotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlSUQpOworCisgICAgaWYgKCFzdXNwZW5kSW5PbGRQcm9jZXNzKSB7CisgICAgICAgIG1f
cHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nl
c3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9wcm9jZXNz
LT5zdXNwZW5kV2ViUGFnZVByb3h5KCp0aGlzKTsKIAogICAgIG1fcHJvY2VzcyA9IFdURk1vdmUo
cHJvY2Vzcyk7CiAKQEAgLTIzNTQsNyArMjM4MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNl
aXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkmIGZy
CiAgICAgICAgICAgICBhdXRvIHByb3Bvc2VkUHJvY2VzcyA9IHByb2Nlc3MoKS5wcm9jZXNzUG9v
bCgpLnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCp0aGlzLCAqbmF2aWdhdGlvbiwgYWN0aW9uKTsKIAog
ICAgICAgICAgICAgaWYgKHByb3Bvc2VkUHJvY2Vzcy5wdHIoKSAhPSAmcHJvY2VzcygpKSB7Ci0g
ICAgICAgICAgICAgICAgTE9HKExvYWRpbmcsICJTd2l0Y2hpbmcgZnJvbSBwcm9jZXNzICVpIHRv
IG5ldyBwcm9jZXNzIGZvciBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcyciLCBwcm9jZXNzSWRl
bnRpZmllcigpLCBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi0+bG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIExPRyhQcm9jZXNzU3dh
cHBpbmcsICJTd2l0Y2hpbmcgZnJvbSBwcm9jZXNzICVpIHRvIG5ldyBwcm9jZXNzIGZvciBuYXZp
Z2F0aW9uICUiIFBSSXU2NCAiICclcyciLCBwcm9jZXNzSWRlbnRpZmllcigpLCBuYXZpZ2F0aW9u
LT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi0+bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogCiAgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5hdmlnYXRpb24gPSBtYWtlUmVmKCpuYXZp
Z2F0aW9uKSwgcHJvcG9zZWRQcm9jZXNzID0gV1RGTW92ZShwcm9wb3NlZFByb2Nlc3MpXSgpIG11
dGFibGUgewogICAgICAgICAgICAgICAgICAgICBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nl
c3MobmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShwcm9wb3NlZFByb2Nlc3MpKTsKQEAgLTM1NzEs
NiArMzU5OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CisgICAgTE9HKExvYWRpbmcsICJX
ZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSAtIFdlYlBhZ2VQcm94eSAlcCB3aXRo
IG5hdmlnYXRpb25JRCAlbGx1IGRpZEZpbmlzaExvYWQiLCB0aGlzLCBuYXZpZ2F0aW9uSUQpOwor
CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIAogICAg
IFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTRiOThiY2ZhODc0MzhkZTM4
YTQ1YWIwZDcxYWRjZTFkODU5NzFhZS4uMTUxYzU3NjljMTA0YWQxZGEwY2ZhZjFlNmZlZDc3NmYy
MzQyZjdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQ0LDYg
KzQ0LDcgQEAKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiU2FuZGJv
eEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIlN1
c3BlbmRlZFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIlN5c3RlbVByZXZpZXdDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKICNp
bmNsdWRlICJWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmgiCkBAIC0xMjg2LDYgKzEyODcs
OSBAQCBwdWJsaWM6CiAKICAgICBXZWJQcmVmZXJlbmNlc1N0b3JlIHByZWZlcmVuY2VzU3RvcmUo
KSBjb25zdDsKIAorICAgIFN1c3BlbmRlZFBhZ2VQcm94eSogbWF5YmVDcmVhdGVTdXNwZW5kZWRQ
YWdlKFdlYlByb2Nlc3NQcm94eSYpOworICAgIHZvaWQgc3VzcGVuZGVkUGFnZVByb2Nlc3NDbG9z
ZWQoU3VzcGVuZGVkUGFnZVByb3h5Jik7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBh
Z2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBh
Z2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAt
MTQzNiw3ICsxNDQwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVhdHRhY2hUb1dlYlByb2Nl
c3MoKTsKICAgICB2b2lkIGF0dGFjaFRvUHJvY2Vzc0Zvck5hdmlnYXRpb24oUmVmPFdlYlByb2Nl
c3NQcm94eT4mJik7Ci0gICAgdm9pZCByZWF0dGFjaFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmKTsKKyAgICB2b2lkIHJlYXR0YWNoVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYsIGJvb2wgc3VzcGVuZEluT2xkUHJvY2Vzcyk7CiAKICAgICBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiByZWF0dGFjaFRvV2ViUHJvY2Vzc0ZvclJlbG9hZCgpOwogICAgIFJlZlB0cjxB
UEk6Ok5hdmlnYXRpb24+IHJlYXR0YWNoVG9XZWJQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSYpOwpAQCAtMjEyOSw2ICsyMTMzLDExIEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIHN0ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4gbV9wYWdlTG9hZFN0YXJ0OworCisgICAg
Ly8gRklYTUU6IFN1cHBvcnQgbW9yZSB0aGFuIG9uZSBzdXNwZW5kZWQgcGFnZSBwZXIgV2ViUGFn
ZVByb3h5LAorICAgIC8vIGFuZCBoYXZlIGEgZ2xvYmFsIGNvbGxlY3Rpb24gb2YgdGhlbSBwZXIg
cHJvY2VzcyBwb29sCisgICAgLy8gKGUuZy4gZm9yIHRoYXQgcHJvY2VzcyBwb29sJ3MgcGFnZSBj
YWNoZSkKKyAgICBSZWZQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IGVjNmE0MTA0OWViMDlmYjIzYjc5Y2ZkYmVjMjZjYWU0Yzlh
YWI5NTUuLmJmNWZlNGE1MmQ5ZWM3OWExMjAyOTM4MjZkMTM1OTkyNTg5MDQwMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKICNp
bmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgorI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQ
cm94eS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJT
dGF0ZS5oIgogI2luY2x1ZGUgIlVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCIKQEAgLTM5
NSw2ICszOTYsMjcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZShX
ZWJQYWdlUHJveHkmIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VJRCkKICAgICB1cGRhdGVCYWNrZ3Jv
dW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3Vz
cGVuZFdlYlBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisgICAgaWYgKGF1dG8q
IHN1c3BlbmRlZFBhZ2UgPSB3ZWJQYWdlLm1heWJlQ3JlYXRlU3VzcGVuZGVkUGFnZSgqdGhpcykp
IHsKKyAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlByb2Nlc3NQcm94eSBwaWQgJWkg
YWRkZWQgc3VzcGVuZGVkIHBhZ2UgJXMiLCBwcm9jZXNzSWRlbnRpZmllcigpLCBzdXNwZW5kZWRQ
YWdlLT5sb2dnaW5nU3RyaW5nKCkpOworICAgICAgICBtX3N1c3BlbmRlZFBhZ2VNYXAuc2V0KHdl
YlBhZ2UucGFnZUlEKCksIHN1c3BlbmRlZFBhZ2UpOworICAgIH0KKworICAgIHJlbW92ZVdlYlBh
Z2Uod2ViUGFnZSwgd2ViUGFnZS5wYWdlSUQoKSk7CisgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgd2ViUGFnZS5w
YWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdXNwZW5kZWRQYWdlV2FzRGVz
dHJveWVkKFN1c3BlbmRlZFBhZ2VQcm94eSYgc3VzcGVuZGVkUGFnZSkKK3sKKyAgICBMT0coUHJv
Y2Vzc1N3YXBwaW5nLCAiV2ViUHJvY2Vzc1Byb3h5IHBpZCAlaSBzdXNwZW5kZWQgcGFnZSAlcyB3
YXMgZGVzdHJveWVkIiwgcHJvY2Vzc0lkZW50aWZpZXIoKSwgc3VzcGVuZGVkUGFnZS5sb2dnaW5n
U3RyaW5nKCkpOworCisgICAgQVNTRVJUKG1fc3VzcGVuZGVkUGFnZU1hcC5jb250YWlucyhzdXNw
ZW5kZWRQYWdlLnBhZ2UoKS5wYWdlSUQoKSkpOworICAgIG1fc3VzcGVuZGVkUGFnZU1hcC5yZW1v
dmUoc3VzcGVuZGVkUGFnZS5wYWdlKCkucGFnZUlEKCkpOworCisgICAgbWF5YmVTaHV0RG93bigp
OworfQorCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZShXZWJQYWdlUHJveHkm
IHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VJRCkKIHsKICAgICBhdXRvKiByZW1vdmVkUGFnZSA9IG1f
cGFnZU1hcC50YWtlKHBhZ2VJRCk7CkBAIC00MTQsMTIgKzQzNiw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdWludDY0X3QgcGFn
ZUlEKQogICAgIGZvciAoYXV0byBpdGVtSUQgOiBpdGVtSURzVG9SZW1vdmUpCiAgICAgICAgIG1f
YmFja0ZvcndhcmRMaXN0SXRlbU1hcC5yZW1vdmUoaXRlbUlEKTsKIAotICAgIC8vIElmIHRoaXMg
d2FzIHRoZSBsYXN0IFdlYlBhZ2Ugb3BlbiBpbiB0aGF0IHdlYiBwcm9jZXNzLCBhbmQgd2UgaGF2
ZSBubyBvdGhlciByZWFzb24gdG8ga2VlcCBpdCBhbGl2ZSwgbGV0IGl0IGdvLgotICAgIC8vIFdl
IG9ubHkgYWxsb3cgdGhpcyB3aGVuIHVzaW5nIGEgbmV0d29yayBwcm9jZXNzLCBhcyBvdGhlcndp
c2UgdGhlIFdlYlByb2Nlc3MgbmVlZHMgdG8gcHJlc2VydmUgaXRzIHNlc3Npb24gc3RhdGUuCi0g
ICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OlRlcm1pbmF0ZWQgfHwgIWNhblRlcm1pbmF0ZUNoaWxk
UHJvY2VzcygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaHV0RG93bigpOworICAgIG1heWJl
U2h1dERvd24oKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFZpc2l0ZWRMaW5rU3Rv
cmUoVmlzaXRlZExpbmtTdG9yZSYgc3RvcmUpCkBAIC02MzcsNiArNjU0LDE1IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBXZWJQYWdl
UHJveHkgbWVzc2FnZXMgYXJlIG5vcm1hbGx5IGhhbmRsZWQgYnkgdGhlIG5vcm1hbCAiZGlzcGF0
Y2hNZXNzYWdlIiB1cCBhYm92ZS4KKyAgICAvLyBJZiB0aGV5IHdlcmUgbm90IGhhbmRsZWQgdGhl
cmUsIHRoZW4gdGhleSBtYXkgcG90ZW50aWFsbHkgYmUgaGFuZGxlZCBieSBTdXNwZW5kZWRQYWdl
UHJveHkgb2JqZWN0cy4KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAg
IGlmIChhdXRvKiBzdXNwZW5kZWRQYWdlID0gbV9zdXNwZW5kZWRQYWdlTWFwLmdldChkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSkpIHsKKyAgICAgICAgICAgIHN1c3BlbmRlZFBhZ2UtPmRpZFJlY2Vp
dmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgfQorCiAgICAgLy8gRklYTUU6IEFkZCB1bmhhbmRsZWQgbWVzc2FnZSBsb2dn
aW5nLgogfQogCkBAIC02ODAsNiArNzA2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mKQogICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VzKQogICAg
ICAgICBwYWdlLT5wcm9jZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6
Q3Jhc2gpOwogCisgICAgZm9yIChhdXRvKiBzdXNwZW5kZWRQYWdlIDogY29weVRvVmVjdG9yT2Y8
U3VzcGVuZGVkUGFnZVByb3h5Kj4obV9zdXNwZW5kZWRQYWdlTWFwLnZhbHVlcygpKSkKKyAgICAg
ICAgc3VzcGVuZGVkUGFnZS0+d2ViUHJvY2Vzc0RpZENsb3NlKCp0aGlzKTsKKworICAgIG1fc3Vz
cGVuZGVkUGFnZU1hcC5jbGVhcigpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZU5hbWUpCkBAIC04MjcsOSArODU3LDE3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRE
ZXN0cm95VXNlckdlc3R1cmVUb2tlbih1aW50NjRfdCBpZGVudGlmaWVyKQogICAgIG1fdXNlcklu
aXRpYXRlZEFjdGlvbk1hcC5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjptYXliZVNodXREb3duKCkKK3sKKyAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6VGVy
bWluYXRlZCB8fCAhY2FuVGVybWluYXRlQ2hpbGRQcm9jZXNzKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHNodXREb3duKCk7Cit9CisKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjYW5UZXJtaW5h
dGVDaGlsZFByb2Nlc3MoKQogewotICAgIGlmICghbV9wYWdlTWFwLmlzRW1wdHkoKSkKKyAgICBp
ZiAoIW1fcGFnZU1hcC5pc0VtcHR5KCkgfHwgIW1fc3VzcGVuZGVkUGFnZU1hcC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9wcm9jZXNzUG9vbC0+c2hvdWxk
VGVybWluYXRlKHRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAppbmRleCA4MGFiOGE2YjU5NjU3ZTJmODdlZTcxNzYyOGQwMDA1NjcxNTE5NzRhLi5jNjc3MGVh
ODU0OGJkZmY1YzYyOWY0M2Q2M2QwMzJhMTcwMTViNWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNjYsNiArNjYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHk7CiBjbGFzcyBPYmpDT2JqZWN0R3JhcGg7CiBj
bGFzcyBQYWdlQ2xpZW50OworY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogY2xhc3MgVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CiBjbGFzcyBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtOwpAQCAtMjA4LDYgKzIwOSw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZCgpIHsgbV9oYXNDb21taXR0ZWRBbnlQcm92aXNp
b25hbExvYWRzID0gdHJ1ZTsgfQogICAgIGJvb2wgaGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxM
b2FkcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxMb2Fkczsg
fQogCisgICAgdm9pZCBzdXNwZW5kV2ViUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYpOworICAgIHZv
aWQgc3VzcGVuZGVkUGFnZVdhc0Rlc3Ryb3llZChTdXNwZW5kZWRQYWdlUHJveHkmKTsKKwogcHJv
dGVjdGVkOgogICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBhZ2VJRCgpOwogICAgIFdlYlBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKQEAgLTIyMSw2
ICsyMjUsNyBAQCBwcml2YXRlOgogICAgIC8vIENhbGxlZCB3aGVuIHRoZSB3ZWIgcHJvY2VzcyBo
YXMgY3Jhc2hlZCBvciB3ZSBrbm93IHRoYXQgaXQgd2lsbCB0ZXJtaW5hdGUgc29vbi4KICAgICAv
LyBXaWxsIHBvdGVudGlhbGx5IGNhdXNlIHRoZSBXZWJQcm9jZXNzUHJveHkgb2JqZWN0IHRvIGJl
IGZyZWVkLgogICAgIHZvaWQgc2h1dERvd24oKTsKKyAgICB2b2lkIG1heWJlU2h1dERvd24oKTsK
IAogICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgYWRkT3JVcGRhdGVCYWNr
Rm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFBhZ2VT
dGF0ZSYpOwpAQCAtMjk4LDYgKzMwMyw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+
IG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2VzczsKIAogICAgIFdlYlBhZ2VQcm94eU1h
cCBtX3BhZ2VNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgU3VzcGVuZGVkUGFnZVByb3h5Kj4g
bV9zdXNwZW5kZWRQYWdlTWFwOwogICAgIFdlYkZyYW1lUHJveHlNYXAgbV9mcmFtZU1hcDsKICAg
ICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcDsKICAg
ICBVc2VySW5pdGlhdGVkQWN0aW9uTWFwIG1fdXNlckluaXRpYXRlZEFjdGlvbk1hcDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdjMmQ0
NjUzMDEzMDBjODViY2Y5M2IzNDVhYThkOTJlNzgwZjNlNjAuLmFkMTU0NzU5MGM2ZmQzYTA4NWQx
ZDRlZjlkNmNjYzkwNWEzNzY2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3MCw2ICsxMDcwLDcgQEAKIAkJNTE1QkUxQjQxRDU5
MTdGRjAwREQ3QzY4IC8qIFVJR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFBQzFENTU1QzUxMDBERDdDNjggLyogVUlHYW1lcGFk
LmNwcCAqLzsgfTsKIAkJNTE1QkUxQjUxRDU5MTdGRjAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxQUQxRDU1
NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oICovOyB9OwogCQk1MTVCRTFCNzFENUE5NEZEMDBE
RDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFCNjFENUE5NEY5MDBERDdDNjggLyogVUlHYW1l
cGFkUHJvdmlkZXJNYWMubW0gKi87IH07CisJCTUxNUM0MTVDMjA3RDdDQUUwMDcyNkUwMiAvKiBT
dXNwZW5kZWRQYWdlUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE1QzQxNUEyMDdENzRFMDAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94
eS5jcHAgKi87IH07CiAJCTUxNUU3NzI3MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3
MjUxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5jcHAgKi87IH07CiAJCTUxNUU3NzI4
MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUU3NzI2MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3lu
Y1JlcXVlc3QuaCAqLzsgfTsKIAkJNTE2MEJGRTExMzM4MURGOTAwOTE4OTk5IC8qIExvZ2dpbmdG
b3VuZGF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE2MEJGRTAxMzM4MURGOTAwOTE4OTk5IC8qIExvZ2dpbmdGb3VuZGF0aW9uLm1tICovOyB9
OwpAQCAtMzQ4Niw2ICszNDg3LDggQEAKIAkJNTE1QkUxQjAxRDU5MDA2OTAwREQ3QzY4IC8qIEdh
bWVwYWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdhbWVwYWREYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUJFMUIxMUQ1OTAyQjYwMEREN0M2
OCAvKiBHYW1lcGFkRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHYW1lcGFkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUJFMUI2
MUQ1QTk0RjkwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlck1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFVJR2FtZXBhZFByb3ZpZGVyTWFjLm1tOyBwYXRo
ID0gVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVyTWFjLm1tOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTUxNUM0MTVBMjA3RDc0RTAwMDcyNkUwMiAvKiBTdXNw
ZW5kZWRQYWdlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3VzcGVuZGVkUGFnZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1
QzQxNUIyMDdENzRFMTAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdXNwZW5kZWRQYWdlUHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE1RTc3MjUxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY1JlcXVlc3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVFNzcyNjE4M0RENkY2MDAwNzIw
M0YgLyogQXN5bmNSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFz
eW5jUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYwQkZFMDEzMzgx
REY5MDA5MTg5OTkgLyogTG9nZ2luZ0ZvdW5kYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBMb2dnaW5nRm91bmRhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTcyNjksNiArNzI3Miw4IEBACiAJCQkJNDE0REVERDUxRjlFRERERjAw
NDdDNDBEIC8qIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaCAqLywKIAkJCQk1MUE0RDVBODE2
Q0FDNEZGMDAwRTYxNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuY3BwICovLAogCQkJCTUxNEJERUQy
MTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oICovLAorCQkJCTUxNUM0MTVB
MjA3RDc0RTAwMDcyNkUwMiAvKiBTdXNwZW5kZWRQYWdlUHJveHkuY3BwICovLAorCQkJCTUxNUM0
MTVCMjA3RDc0RTEwMDcyNkUwMiAvKiBTdXNwZW5kZWRQYWdlUHJveHkuaCAqLywKIAkJCQkzMThB
MUYwNDIwNEY0NzY0MDAzNDgwQkMgLyogU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuY3BwICovLAog
CQkJCTMxNTcxMzVEMjA0MEE5QjIwMDg0RjlDRiAvKiBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5o
ICovLAogCQkJCTFBQTQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlci5oICovLApA
QCAtMTA4OTMsNiArMTA4OTgsNyBAQAogCQkJCTUxMThFOUFDMUYyOTU5NzcwMDNFRjlGNSAvKiBT
dG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUUwMEQ2QjE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTI5NkJEODVFMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdV
dGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTVDNDE1QzIwN0Q3Q0FFMDA3MjZFMDIg
LyogU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxOEExRjA1MjA0
RjQ3NjQwMDM0ODBCQyAvKiBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkzMTU3MTM1RTIwNDBBOUIyMDA4NEY5Q0YgLyogU3lzdGVtUHJldmlld0NvbnRyb2xs
ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFaWjQxN0VGMTJDMDBEODcwMDJCRTY3QiAv
KiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDFhZTNkNzNmOTY5Y2JjZjlj
OTQ3OGM2OWNlNzQwODZhNTAwMDJlMTMuLjk1M2RhN2Q4NTEzOTFhYWU3YjJkYjljODk2NTg5ZGVh
ODcyMTZlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC01ODY2LDYgKzU4NjYsMTEgQEAgdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlk
Q29tcGxldGUodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2sKICAgICBo
YW5kbGVyLT50YXNrRGlkQ29tcGxldGUodGFza0lkZW50aWZpZXIsIGVycm9yKTsKIH0KIAordm9p
ZCBXZWJQYWdlOjpzZXRJc1N1c3BlbmRlZChib29sIHN1c3BlbmRlZCkKK3sKKyAgICBtX2lzU3Vz
cGVuZGVkID0gc3VzcGVuZGVkOworfQorCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJU
SVRJT05JTkcpCiBzdGF0aWMgdWludDY0X3QgbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4
dElkKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCA0YzNiNTk1MTUxNjIzMGE4MWEyNTg0NzJhNTNlN2M5NWM0OGU5NzQwLi5hMjkxYjgxYzBjMGJh
YjRhN2FhNDliNTk4ZDE2NTI1ZTE3ZmI5NGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMDcyLDYgKzEwNzIsOCBAQCBwdWJsaWM6CiAKICAgICBV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+aWRlbnRpZmll
cigpOyB9CiAKKyAgICBib29sIGlzU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N1c3Bl
bmRlZDsgfQorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCkBAIC0xMzg4LDYgKzEzOTAsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVu
dGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklk
ZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAKKyAgICB2b2lkIHNldElzU3VzcGVuZGVkKGJvb2wpOworCiAgICAgUmVmUHRy
PFdlYkltYWdlPiBzbmFwc2hvdEF0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zKTsKICAgICBSZWZQ
dHI8V2ViSW1hZ2U+IHNuYXBzaG90Tm9kZShXZWJDb3JlOjpOb2RlJiwgU25hcHNob3RPcHRpb25z
LCB1bnNpZ25lZCBtYXhpbXVtUGl4ZWxDb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSk7CiAjaWYgVVNFKENGKQpAQCAtMTcwNSw2ICsxNzA5LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI+IG1fY3JlZGVudGlh
bHNNZXNzZW5nZXI7CiAjZW5kaWYKIAorICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGQ4ZmU0ZTVmNDQ1NDhl
ZWEwZDFlMjdkNDY0MDIzZWE0MmE5MTJkODEuLmUwZmY1MjE3ZTVkMmViMmRmMmE2MzkyNTc3MmIz
NDZlZWYzOWQwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDkxLDYgKzQ5MSw4IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhKQogICAgIFVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRf
dCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgZXJyb3IpCiAKKyAgICBTZXRJc1N1c3BlbmRlZChib29sIHN1c3BlbmRlZCkK
KwogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQogICAgIFN0b3JhZ2VB
Y2Nlc3NSZXNwb25zZShib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCBlYTY5NWJiNDJlZmI2ZDFkODI1NDNkNjdkNDVkNDIyMzVhNmE5ZTJjLi5lZmIwN2UzZmEz
YjUwM2M3OTQzODVmZWMzYWRlN2UzNmEyYmRlZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTI4LDYgKzEyOCw4IEBAIG1lc3Nh
Z2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENoZWNrUHJvY2Vzc0xvY2Fs
UG9ydEZvckFjdGl2aXR5KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9y
dCwgdWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyKQogICAgIE1lc3NhZ2VzQXZhaWxhYmxlRm9y
UG9ydChzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQpCiAKKyAgICBV
cGRhdGVBY3RpdmVQYWdlcygpCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgU2V0U2NyZWVuUHJv
cGVydGllcyh1aW50MzJfdCBwcmltYXJ5U2NyZWVuSUQsIEhhc2hNYXA8dWludDMyX3QsIFdlYkNv
cmU6OlNjcmVlblByb3BlcnRpZXM+IHNjcmVlblByb3BlcnRpZXMpCiAjaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IDY4NTE4MzkzZDBkZTQ1NjA2OWU1
NDljZWMxMTYxOTA1ZWY3Zjk4OWQuLmExNDcyMDdjODc4ZWIwZGJkNTQ1YzYyOTU0YzA0YWNkNjYx
Y2MzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQpAQCAtMzg3LDcgKzM4Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQWN0
aXZlUGFnZXMoKQogICAgIGF1dG8gYWN0aXZlUGFnZVVSTHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKIAogICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52
YWx1ZXMoKSkgewotICAgICAgICBpZiAocGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKKyAg
ICAgICAgaWYgKHBhZ2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgcGFnZS0+aXNTdXNwZW5k
ZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChOU1VSTCAqb3JpZ2lu
QXNVUkwgPSBvcmlnaW4oKnBhZ2UpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGU4YmQ2YzczMjM5MTY4ZjcwYmM0ZDYwODEzYjUyYjIwYzc0ZjJi
OGIuLjY1ODUyOGRkNzk5N2RlZGZjMWEwNjhmNTYwM2FiNzRkODJjNmFlMTAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxOC0wNC0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNlIFN1c3BlbmRlZFBhZ2VQcm94eSB0byBrZWVwIG9sZCB3ZWIgcHJvY2Vzc2VzIGFy
b3VuZCBhZnRlciB0aGVpciBXZWJQYWdlUHJveHkgaGFzIGJlZW4gc3dhcHBlZCB0byBhIG5ldyBv
bmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ1
NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06
CisKIDIwMTgtMDQtMTIgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCAtLWJ1aWxkLWRpcmVjdG9yeSBmbGFnIGZvciBydW4td2Via2l0LXRlc3RzCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NT
d2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCA3NzJiZGIyZmM4MGZmNTUyMTAyOTdl
NzMwM2ZiMmY0MDFhMzA3YTAyLi4yMjk5YzA1YjgwNzYxNjZmODEwMWU0YjE4ZTg3YzM1M2YzZTE5
ZDFhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTc1MSw0ICs3NTEsNDQg
QEAgVEVTVChQcm9jZXNzU3dhcCwgTWFpbkZyYW1lc09ubHkpCiAgICAgRVhQRUNUX0VRKDF1LCBz
ZWVuUElEcy5zaXplKCkpOwogfQogCitURVNUKFByb2Nlc3NTd2FwLCBPbmVQcmV2aW91c1Byb2Nl
c3NSZW1haW5zKQoreworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107Cisg
ICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisg
ICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nl
c3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtb
UFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiUFNPTiJdOworCisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1
cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tQU09OTmF2aWdh
dGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uOi8v
aG9zdDEvbWFpbi5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7
CisKKyAgICByZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAInBzb246Ly9ob3N0Mi9tYWluLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL2hvc3QzL21haW4uaHRtbCJd
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8gTmF2aWdh
dGlvbnMgdG8gMyBkaWZmZXJlbnQgZG9tYWlucywgd2UgZXhwZWN0IHRvIGhhdmUgc2VlbiAzIGRp
ZmZlcmVudCBQSURzCisgICAgRVhQRUNUX0VRKDN1LCBzZWVuUElEcy5zaXplKCkpOworCisgICAg
Ly8gQnV0IG9ubHkgMiBvZiB0aG9zZSBwcm9jZXNzZXMgc2hvdWxkIHN0aWxsIGJlIGFsaXZlCisg
ICAgRVhQRUNUX0VRKDJ1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudF0pOworfQorCiAj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337850</attachid>
            <date>2018-04-12 16:34:47 -0700</date>
            <delta_ts>2018-04-13 10:23:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184559-20180412163447.patch</filename>
            <type>text/plain</type>
            <size>49985</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1YzEwMjViZjU2YjFiNmFmODZjYzNh
YWFkNDEyOTdmM2JiMDhjNzUuLmYyNWVmY2QxZjQzMDFjZmIzY2VhYmJiMzc3MDFmY2EwYzM5ZDRk
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDQtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTdXNwZW5kZWRQYWdlUHJveHkgdG8g
a2VlcCBvbGQgd2ViIHByb2Nlc3NlcyBhcm91bmQgYWZ0ZXIgdGhlaXIgV2ViUGFnZVByb3h5IGhh
cyBiZWVuIHN3YXBwZWQgdG8gYSBuZXcgb25lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRGVidWdVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdU
Rjo6ZGVidWdTdHJpbmcpOiBBZGQgYSBkZWJ1ZyB1dGlsaXR5IHRvIGVhc2lseSBjb25zdHJ1Y3Qg
YSAiY29uc3QgY2hhcioiIHRoYXQgaXMgcmVsZWFzZWQgYWZ0ZXIgYSBzcGluIG9mIHRoZSBydW4g
bG9vcC4KKyAgICAgICAgICBUaGlzIGdyZWF0bHkgZWFzZXMgdXNlcyBvdXIgU3RyaW5nIGNsYXNz
ZXMgYW5kIGZ1bmN0aW9ucyBpbnNpZGUgb2YgIiVzIiBzdHlsZSBlbnZpcm9ubWVudHMgbGlrZSBw
cmludGYgYW5kIExPRy4KKwogMjAxOC0wNC0xMiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56
YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBjcmFzaCBob29rIGZ1bmN0
aW9uYWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MmJkMjU3YmY1NDNhMDJkNTkxYmQyZjY3NzQ1ODUzM2E4
ZDExNDE2Li5lNmZjYmUxN2Y2NDJhNmM2YzU5ZTJlYzZiN2RlOWVjYTQzZGRmNTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTgtMDQtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTdXNwZW5kZWRQYWdlUHJveHkgdG8ga2Vl
cCBvbGQgd2ViIHByb2Nlc3NlcyBhcm91bmQgYWZ0ZXIgdGhlaXIgV2ViUGFnZVByb3h5IGhhcyBi
ZWVuIHN3YXBwZWQgdG8gYSBuZXcgb25lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJIHRlc3QuCisKKyAgICAgICAgV2Vi
Q29yZSBjaGFuZ2VzIHJld29yayB0aGUgbWVhbmluZyBvZiBhICJGb3JTdXNwZW5zaW9uIiBwb2xp
Y3kgdG8gc2ltcGx5IG5hdmlnYXRlIHRoZSBwYWdlIHRvIGFib3V0OmJsYW5rLgorCisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmg6CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSk6CisKIDIwMTgtMDQtMTIgIERhbmll
bCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnRlbnQtVHlwZSBub3Qg
ZW5mb3JjZWQgZm9yIDxzY3JpcHQ+IGFsbG93cyBmb3IgWFNTCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzZmU1YWRl
ZmM3NWVmOGYxZTA5MTk3MzMzYTc0OWJlMDNkNDIzODAuLmJjNjY1YTY5NWYwODA2OWM3Y2VhYWJk
Zjc3MGUxYzAyNDc0YmI5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTgtMDQtMTIg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBT
dXNwZW5kZWRQYWdlUHJveHkgdG8ga2VlcCBvbGQgd2ViIHByb2Nlc3NlcyBhcm91bmQgYWZ0ZXIg
dGhlaXIgV2ViUGFnZVByb3h5IGhhcyBiZWVuIHN3YXBwZWQgdG8gYSBuZXcgb25lLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NTU5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0
Y2gsIHdoZW4gYSBXZWJQYWdlUHJveHkgbmF2aWdhdGVzIGFuZCBpcyBzd2FwcGVkIHRvIGEgbmV3
IHByb2Nlc3MsIHRoZSBvbGQgcHJvY2VzcyBhbG1vc3QgYWx3YXlzIGdvZXMgYXdheS4KKworICAg
ICAgICBUaGlzIGlzIG5vdCBkZXNpcmFibGUgZm9yIGEgZmV3IHJlYXNvbnM6CisgICAgICAgIDEg
LSBXZSBjYW4ndCBrZWVwIHRoZSBQYWdlQ2FjaGUgd29ya2luZyBmb3IgYmFjay9mb3J3YXJkIHNj
ZW5hcmlvcworICAgICAgICAyIC0gV2UgdGhyb3cgYXdheSBhICJmb28uY29tIiB3ZWIgcHJvY2Vz
cywgbWVhbmluZyB0aGUgbmV4dCB0aW1lIHdlIG5lZWQgdG8gaG9zdCBhICJmb28uY29tIiB3ZWIg
cGFnZSB3ZSBoYXZlIHRvIGxhdW5jaAorICAgICAgICAgICAgYW5kIGluaXRpYWxpemUgYSBuZXcg
d2ViIHByb2Nlc3MuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgU3VzcGVuZGVkUGFnZVBy
b3h5IG9iamVjdCB0byBrZWVwIGFyb3VuZCB0aGUgb2xkIHdlYiBwcm9jZXNzIGFuZCB0byBtYW5h
Z2UgY29tbXVuaWNhdGlvbiB3aXRoIGl0LgorCisgICAgICAgIEZvciBub3csIGEgV2ViUGFnZVBy
b3h5IGtlZXBzIGV4YWN0bHkgb25lICJzdXNwZW5kZWQgcGFnZSIgcmVwcmVzZW50aW5nIHRoZSBt
b3N0IHJlY2VudGx5IHZpc2l0ZWQgcGFnZSBhbmQgaXRzIHByb2Nlc3MuCisgICAgICAgIEFkZGl0
aW9uYWxseSwgdGhhdCBwcm9jZXNzIGlzIG5ldmVyIHJldXNlZC4KKworICAgICAgICBTbyBubyBi
ZW5lZml0IGlzIGFjaGlldmVkIHdpdGggdGhpcyBwYXRjaCwgYnV0IGl0IGVuYWJsZXMgZnV0dXJl
IGJlbmVmaXRzLgorCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorCisgICAgICAgICog
U2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJC
YWNrRm9yd2FyZExpc3RJdGVtOjpzZXRTdXNwZW5kZWRQYWdlKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oOgorCisgICAgICAgIE5ldyBvYmplY3QgdG8gcmVwcmVz
ZW50IHRoZSBzdGF0ZSBvZiBhIFdlYlBhZ2VQcm94eSBpbiBhbiBvbGQgd2ViIHByb2Nlc3MgdGhh
dCBpcyBub3QgY3VycmVudGx5IGhvc3RpbmcgdGhlIHZpZXcuCisgICAgICAgICogVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5k
ZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlN1c3Bl
bmRlZFBhZ2VQcm94eTo6flN1c3BlbmRlZFBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlN1
c3BlbmRlZFBhZ2VQcm94eTo6d2ViUHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6
U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYktpdDo6U3Vz
cGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlN1
c3BlbmRlZFBhZ2VQcm94eTo6bG9nZ2luZ1N0cmluZyBjb25zdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0xvZ2dpbmcuaC4KKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OnBhZ2UgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OnByb2Nlc3MgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6Oml0ZW0gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmlzaGVkU3VzcGVuZGluZyBjb25zdCk6CisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6YXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bWF5YmVDcmVhdGVTdXNwZW5kZWRQYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kZWRQYWdlUHJvY2Vzc0Nsb3NlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzdXNwZW5k
V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzdXNwZW5k
ZWRQYWdlV2FzRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpy
ZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNl
aXZlTWVzc2FnZSk6IE9wdGlvbmFsbHkgcGFzcyBXZWJQYWdlUHJveHkgbWVzc2FnZXMgYWxvbmcg
dG8gU3VzcGVuZGVkUGFnZVByb3h5IG9iamVjdHMuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1h
eWJlU2h1dERvd24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNhblRlcm1p
bmF0ZUNoaWxkUHJvY2Vzcyk6IERvbid0IHRlcm1pbmF0ZSBjaGlsZCBwcm9jZXNzZXMgaWYgdGhl
eSBzdGlsbCBoYXZlIHN1c3BlbmRlZCBwYWdlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5Lmg6CisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c2V0SXNTdXNwZW5kZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzU3VzcGVuZGVk
IGNvbnN0KTogRm9yIG5vdywgdXNlZCBvbmx5IGJ5IFdlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBh
Z2VzLiBXaWxsIGhhdmUgbW9yZSB1c2VzIHNvb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKTog
QWxsb3cgdGhlIFVJUHJvY2VzcyB0byByZXF1ZXN0IGFuIHVwZGF0ZSBvZiB0aGUgd2ViIHByb2Nl
c3NlcyB1c2VyIHZpc2libGUgbmFtZS4KKwogMjAxOC0wNC0xMiAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbRXh0cmEgem9vbSBtb2RlXSBTdXBwcmVz
cyBVSSBmb3IgaW5wdXRzIG9mIHR5cGUgZmlsZSBpbiBleHRyYSB6b29tIG1vZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0RlYnVnVXRpbGl0aWVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9EZWJ1
Z1V0aWxpdGllcy5oCmluZGV4IDEyMmY3NjgwYTcwYTQ3ZTMyMGRkMGZlZTRjODdkMzIxNDhiMTVi
MmUuLmE0NDFiNWNkZThiZDM0ODY1OGIxOGMxNTJmOTU1YjQ1OTBjZmY4YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0RlYnVnVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dURi93dGYvRGVi
dWdVdGlsaXRpZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMywxMSArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBXVEZfRGVidWdVdGlsaXRpZXNfaAotI2RlZmluZSBXVEZfRGVidWdVdGlsaXRpZXNfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9Qcm9jZXNzSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgog
CiAjZGVmaW5lIFNMRUVQX1RIUkVBRF9GT1JfREVCVUdHRVIoKSBcCiBkbyB7IFwKQEAgLTQwLDQg
KzQwLDI0IEBAIGRvIHsgXAogICAgIFdURkJyZWFrcG9pbnRUcmFwKCk7IFwKIH0gd2hpbGUgKDAp
CiAKLSNlbmRpZiAvKiBXVEZfRGVidWdVdGlsaXRpZXNfaCAqLworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPgorY29uc3QgY2hhciogZGVidWdTdHJp
bmcoU3RyaW5nVHlwZXMuLi4gc3RyaW5ncykKK3sKKyAgICBTdHJpbmcgcmVzdWx0ID0gdHJ5TWFr
ZVN0cmluZyhzdHJpbmdzLi4uKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgQ1JBU0goKTsK
KworICAgIGF1dG8gY1N0cmluZyA9IHJlc3VsdC51dGY4KCk7CisgICAgY29uc3QgY2hhciogY1N0
cmluZ0RhdGEgPSBjU3RyaW5nLmRhdGEoKTsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoW2NTdHJp
bmcgPSBXVEZNb3ZlKGNTdHJpbmcpXSB7CisgICAgfSk7CisKKyAgICByZXR1cm4gY1N0cmluZ0Rh
dGE7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OmRlYnVnU3RyaW5nOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggODBkYmYxM2YwMjFj
ZjUzMzU2NGI2ZGIxNWU3NWU0ZTAwMTg5NTczMy4uYTIwM2M2Y2Q3NzM5NjliNWZiNjFjYjljMjVh
MzA2ZjE5MGY5YWNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGlzUmVkaXJlY3Rpb25Gcm9tU2VydmljZVdvcmtl
ciA9IHJlZGlyZWN0UmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNl
OjpTZXJ2aWNlV29ya2VyOwotICAgIHdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBy
ZWRpcmVjdFJlc3BvbnNlLCBbaXNSZWRpcmVjdGlvbkZyb21TZXJ2aWNlV29ya2VyLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHRoaXNdIChhdXRvJiYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgd2ls
bFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFNob3VsZENv
bnRpbnVlOjpZZXMsIFtpc1JlZGlyZWN0aW9uRnJvbVNlcnZpY2VXb3JrZXIsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgdGhpc10gKGF1dG8mJiByZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUKCFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSk7CiAgICAgICAgIGlmIChyZXF1ZXN0Lmlz
TnVsbCgpIHx8ICFtX21haW5Eb2N1bWVudEVycm9yLmlzTnVsbCgpIHx8ICFtX2ZyYW1lKSB7CiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtNTUyLDExICs1NTIsMTEgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIFJlc291cmNlUmVxdWVzdCYKICAgICAgICAgfSk7CiAgICAgfSk7CiAjZWxzZQotICAg
IHdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgd2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVx
dWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFNob3VsZENvbnRpbnVlOjpZZXMsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICNlbmRpZgogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjp3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGlu
dWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIC8vIE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gYXNzZXJ0cyBoZXJl
IGFzIHRoZXJlIGFyZSBmb3IgdGhlIG90aGVyIGNhbGxiYWNrcy4gVGhpcyBpcyBkdWUgdG8gdGhl
CiAgICAgLy8gZmFjdCB0aGF0IHRoaXMgImNhbGxiYWNrIiBpcyBzZW50IHdoZW4gc3RhcnRpbmcg
ZXZlcnkgbG9hZCwgYW5kIHRoZSBzdGF0ZSBvZiBjYWxsYmFjawpAQCAtNTY0LDYgKzU2NCw4IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBu
ZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAgICAgLy8gY2FsbGJhY2tzIGlzIG1lYW50IHRvIHBy
ZXZlbnQuCiAgICAgQVNTRVJUKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKTsKIAorICAgIEFTU0VSVChz
aG91bGRDb250aW51ZSAhPSBTaG91bGRDb250aW51ZTo6Tm8pOworCiAgICAgYm9vbCBkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZSA9ICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpOwogICAgIGlm
ICghZnJhbWVMb2FkZXIoKS0+Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1AobmV3UmVxdWVz
dC51cmwoKSwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpKSB7CiAgICAgICAgIGNhbmNlbE1h
aW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobmV3UmVxdWVzdCkp
OwpAQCAtNjMwLDIxICs2MzIsMTYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKIAogICAgIHNl
dFJlcXVlc3QobmV3UmVxdWVzdCk7CiAKLSAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSdkIHN0b3Ag
dGhlIEkvTyB1bnRpbCB3ZSBoZWFyIGJhY2sgZnJvbSB0aGUgbmF2aWdhdGlvbiBwb2xpY3kgZGVs
ZWdhdGUKLSAgICAvLyBsaXN0ZW5lci4gQnV0IHRoZXJlJ3Mgbm8gd2F5IHRvIGRvIHRoYXQgaW4g
cHJhY3RpY2UuIFNvIGluc3RlYWQgd2UgY2FuY2VsIGxhdGVyIGlmIHRoZQotICAgIC8vIGxpc3Rl
bmVyIHRlbGxzIHVzIHRvLiBJbiBwcmFjdGljZSB0aGF0IG1lYW5zIHRoZSBuYXZpZ2F0aW9uIHBv
bGljeSBuZWVkcyB0byBiZSBkZWNpZGVkCi0gICAgLy8gc3luY2hyb25vdXNseSBmb3IgdGhlc2Ug
cmVkaXJlY3QgY2FzZXMuCi0gICAgaWYgKCFkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSkKKyAg
ICBpZiAoIWRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICYmIHNob3VsZENvbnRpbnVlICE9IFNo
b3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAKLSAgICBBU1NFUlQoIW1fd2FpdGluZ0Zvck5h
dmlnYXRpb25Qb2xpY3kpOwotICAgIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgPSB0cnVl
OwotICAgIGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xp
Y3koUmVzb3VyY2VSZXF1ZXN0KG5ld1JlcXVlc3QpLCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIEZvcm1TdGF0ZSosIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSBtdXRhYmxlIHsK
KyAgICBhdXRvIG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGb3JtU3RhdGUq
LCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgbXV0YWJsZSB7CiAgICAgICAgIG1fd2Fp
dGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgPSBmYWxzZTsKICAgICAgICAgc3dpdGNoIChzaG91bGRD
b250aW51ZSkgewogICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uOgot
ICAgICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgICAgICAgICAvLyBGSVhNRTogU2V0dXAgdGhp
cyBwYWdlIGZvciBzdXNwZW5zaW9uIChlLmcuIFBhZ2UgQ2FjaGUpIGhlcmUuCisgICAgICAgICAg
ICAvLyBXZSBoYW5kbGUgc3VzcGVuc2lvbiBieSBuYXZpZ2F0aW5nIGZvcndhcmQgdG8gYWJvdXQ6
YmxhbmssIHdoaWNoIGxlYXZlcyB1cyBzZXR1cCB0byBuYXZpZ2F0ZSBiYWNrIHRvIHJlc3VtZS4K
KyAgICAgICAgICAgIHJlcXVlc3QgPSB7IGJsYW5rVVJMKCkgfTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpObzoKICAgICAgICAgICAgIHN0b3BMb2Fk
aW5nRm9yUG9saWN5Q2hhbmdlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTY1Myw3ICs2NTAs
MTcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKICAgICAgICAgfQogCiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwotICAgIH0pOworICAgIH07CisKKyAgICBB
U1NFUlQoIW1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kpOworICAgIG1fd2FpdGluZ0Zvck5h
dmlnYXRpb25Qb2xpY3kgPSB0cnVlOworCisgICAgaWYgKHNob3VsZENvbnRpbnVlID09IFNob3Vs
ZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUobmV3UmVxdWVzdCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZnJhbWVM
b2FkZXIoKS0+cG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJl
cXVlc3QobmV3UmVxdWVzdCksIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBXVEZNb3ZlKG5h
dmlnYXRpb25Qb2xpY3lDb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiBib29sIERvY3VtZW50TG9h
ZGVyOjp0cnlMb2FkaW5nUmVxdWVzdEZyb21BcHBsaWNhdGlvbkNhY2hlKCkKQEAgLTE2NTUsOCAr
MTY2MiwxMCBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSgpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNv
dXJjZSgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoU2hv
dWxkQ29udGludWUgc2hvdWxkQ29udGludWUpCiB7CisgICAgQVNTRVJUKHNob3VsZENvbnRpbnVl
ICE9IFNob3VsZENvbnRpbnVlOjpObyk7CisKICAgICBtX21haW5Eb2N1bWVudEVycm9yID0gUmVz
b3VyY2VFcnJvcigpOwogICAgIHRpbWluZygpLm1hcmtTdGFydFRpbWVBbmRGZXRjaFN0YXJ0KCk7
CiAgICAgQVNTRVJUKCFtX21haW5SZXNvdXJjZSk7CkBAIC0xNjgxLDcgKzE2OTAsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKQogICAgIEFTU0VSVCh0
aW1pbmcoKS5zdGFydFRpbWUoKSk7CiAgICAgQVNTRVJUKHRpbWluZygpLmZldGNoU3RhcnQoKSk7
CiAKLSAgICB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KG1fcmVxdWVzdCksIFJlc291
cmNlUmVzcG9uc2UoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgeworICAgIHdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QobV9yZXF1ZXN0KSwgUmVzb3VyY2VSZXNwb25zZSgpLCBzaG91bGRDb250
aW51ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAgICBtX3JlcXVlc3QgPSByZXF1ZXN0Owog
CiAgICAgICAgIC8vIHdpbGxTZW5kUmVxdWVzdCgpIG1heSBsZWFkIHRvIG91ciBGcmFtZSBiZWlu
ZyBkZXRhY2hlZCBvciBjYW5jZWxsaW5nIHRoZSBsb2FkIHZpYSBudWxsaW5nIHRoZSBSZXNvdXJj
ZVJlcXVlc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDcwYTFh
M2U5ZWM4NDdiYjNmMjNiYzFmNTk4MDA4YTRlNTRhZTM5NTUuLjE4MDk0ZWM3MWE1MjM2OWIwNTJm
ZWZlMTk1ZjA4ZWRiZTM1NTYzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCkBAIC04NCw2ICs4NCw4IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291
cmNlTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwogCitlbnVtIGNsYXNzIFNob3Vs
ZENvbnRpbnVlOworCiB1c2luZyBSZXNvdXJjZUxvYWRlck1hcCA9IEhhc2hNYXA8dW5zaWduZWQg
bG9uZywgUmVmUHRyPFJlc291cmNlTG9hZGVyPj47CiAKIGVudW0gY2xhc3MgQXV0b3BsYXlQb2xp
Y3kgewpAQCAtMjM3LDcgKzIzOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlZmVyc0xvYWRp
bmcoYm9vbCk7CiAgICAgdm9pZCBzZXRNYWluUmVzb3VyY2VEYXRhQnVmZmVyaW5nUG9saWN5KERh
dGFCdWZmZXJpbmdQb2xpY3kpOwogCi0gICAgdm9pZCBzdGFydExvYWRpbmdNYWluUmVzb3VyY2Uo
KTsKKyAgICB2b2lkIHN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZShTaG91bGRDb250aW51ZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKICAgICB2b2lkIHdpbGxDb250aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJl
ZGlyZWN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCkBAIC0zNTEsNyArMzUzLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNsZWFyQXJjaGl2ZVJlc291cmNlcygpOwogI2VuZGlmCiAKLSAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKKyAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFNob3VsZENvbnRpbnVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoKTsKICAgICB2b2lkIG1h
aW5SZWNlaXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCmluZGV4IGZlMDU1OGRhNGU4YzcxYzE1Y2E4ODE5ODZmMDIwNTM0YzExNDNiMTcuLjlmZmJl
MjdlZjRiZjAxZWU2YWRiNzA5M2EwOWM4NDE2M2M4YWM0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omlu
aXQoKQogICAgIC8vIFRoaXMgc29tZXdoYXQgb2RkIHNldCBvZiBzdGVwcyBnaXZlcyB0aGUgZnJh
bWUgYW4gaW5pdGlhbCBlbXB0eSBkb2N1bWVudC4KICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRl
cihtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3QoVVJMKFBhcnNl
ZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkpLCBTdWJzdGl0dXRlRGF0YSgpKS5wdHIoKSk7CiAg
ICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihtX3BvbGljeURvY3VtZW50TG9hZGVyLmdl
dCgpKTsKLSAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGluZ01haW5S
ZXNvdXJjZSgpOworICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5n
TWFpblJlc291cmNlKFNob3VsZENvbnRpbnVlOjpZZXMpOwogCiAgICAgUmVmPEZyYW1lPiBwcm90
ZWN0KG1fZnJhbWUpOwogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FuY2VsUGFyc2luZygpOwpA
QCAtMzIzMSw3ICszMjMxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJO
YXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKICAgICAgICAgZGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KERpYWdu
b3N0aWNMb2dnaW5nS2V5czo6cGFnZUNhY2hlS2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6
cmV0cmlldmFsS2V5KCksIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0RmFpbCwgU2hvdWxkU2FtcGxl
OjpZZXMpOwogICAgIH0KIAotICAgIFdURjo6RnVuY3Rpb248dm9pZCh2b2lkKT4gY29tcGxldGlv
bkhhbmRsZXIgPSBbdGhpc10geworICAgIFdURjo6RnVuY3Rpb248dm9pZCh2b2lkKT4gY29tcGxl
dGlvbkhhbmRsZXIgPSBbdGhpcywgc2hvdWxkQ29udGludWVdIHsKICAgICAgICAgaWYgKCFtX3By
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIApA
QCAtMzI1MSw3ICszMjUxLDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVy
TmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIG1fbG9hZGluZ0Zyb21DYWNoZWRQYWdlID0gZmFsc2U7Ci0gICAg
ICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNl
KCk7CisKKyAgICAgICAgLy8gV2UgaGFuZGxlIHN1c3BlbnNpb24gYnkgbmF2aWdhdGluZyBmb3J3
YXJkIHRvIGFib3V0OmJsYW5rLCB3aGljaCBsZWF2ZXMgdXMgc2V0dXAgdG8gbmF2aWdhdGUgYmFj
ayB0byByZXN1bWUuCisgICAgICAgIGlmIChzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51
ZTo6Rm9yU3VzcGVuc2lvbikKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
ci0+d2lsbENvbnRpbnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3QoeyBibGFua1VSTCgp
IH0pOworCisgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5n
TWFpblJlc291cmNlKHNob3VsZENvbnRpbnVlKTsKICAgICB9OwogICAgIAogICAgIGlmICghZm9y
bVN0YXRlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDYzZTRjOGUxYzM4MzI0Yzhk
YTMxOTRiOTNjMzEzMzliY2NhY2ZlMzIuLjQ1NTY2YWM2NjU2OTg2YzM1ZjY0OTYwYjFjMTE4NTI2
Mjk0MDZmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC02Miw2ICs2Miw3IEBAIGV4
dGVybiAiQyIgewogICAgIE0oUHJpbnRpbmcpIFwKICAgICBNKFByb2Nlc3MpIFwKICAgICBNKFBy
b2Nlc3NTdXNwZW5zaW9uKSBcCisgICAgTShQcm9jZXNzU3dhcHBpbmcpIFwKICAgICBNKFJlbW90
ZUxheWVyVHJlZSkgXAogICAgIE0oUmVzaXplKSBcCiAgICAgTShSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwCmluZGV4IDQzMWUzYzE0YTI0OTUzNjc2ZTM5MWY0NTQyYWY4NmMyNjI2ZDlmNzUuLjFhY2Q1
ZGRjYTVlODlhNTMxMTI4MTg3N2JmMDkwNWVhOGExN2IyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0xMDMsNCArMTAzLDkgQEAg
dWludDY0X3QgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aGlnaGVzdFVzZWRJdGVtSUQoKQogICAg
IHJldHVybiBoaWdoZXN0SXRlbUlEOwogfQogCit2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06
OnNldFN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5JiBwYWdlKQoreworICAgIG1fc3Vz
cGVuZGVkUGFnZSA9ICZwYWdlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAppbmRleCBlNGJkNTA3MmQx
YzIzYTZkNGJlYzFmN2I3MDJlNzZiOGY5OTEyM2EwLi40ZWEyY2E3MDEwNjVjMTBjZTdmMDExMmQ2
NzYzNjFjYTE5NTZkOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zvcndh
cmRMaXN0SXRlbS5oCkBAIC00MSw2ICs0MSw4IEBAIGNsYXNzIEVuY29kZXI7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CisKIGNsYXNzIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpCYWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2
NF90IHBhZ2VJRCk7CkBAIC02Myw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICBWaWV3U25hcHNob3Qq
IHNuYXBzaG90KCkgY29uc3QgeyByZXR1cm4gbV9pdGVtU3RhdGUuc25hcHNob3QuZ2V0KCk7IH0K
ICAgICB2b2lkIHNldFNuYXBzaG90KFJlZlB0cjxWaWV3U25hcHNob3Q+JiYgc25hcHNob3QpIHsg
bV9pdGVtU3RhdGUuc25hcHNob3QgPSBXVEZNb3ZlKHNuYXBzaG90KTsgfQogI2VuZGlmCisgICAg
dm9pZCBzZXRTdXNwZW5kZWRQYWdlKFN1c3BlbmRlZFBhZ2VQcm94eSYpOwogCiAgICAgc3RhdGlj
IHVpbnQ2NF90IGhpZ2hlc3RVc2VkSXRlbUlEKCk7CiAKQEAgLTcxLDYgKzc0LDcgQEAgcHJpdmF0
ZToKIAogICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBtX2l0ZW1TdGF0ZTsKICAgICB1aW50
NjRfdCBtX3BhZ2VJRDsKKyAgICBTdXNwZW5kZWRQYWdlUHJveHkqIG1fc3VzcGVuZGVkUGFnZSB7
IG51bGxwdHIgfTsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtPj4gQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0NjBmNDQ3ZTExZWYzZjgz
ZDQ0ZmMzYzI2ZmUzYjJmNWVmYmU4OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC0wLDAgKzEsMTI1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94
eS5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8d3RmL0RlYnVnVXRpbGl0aWVzLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisjaWYgIUxPR19ESVNBQkxFRAorc3RhdGljIGNvbnN0IEhhc2hTZXQ8SVBD
OjpTdHJpbmdSZWZlcmVuY2U+JiBtZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5j
ZT4+IG1lc3NhZ2VOYW1lczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Cisg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdl
dCgpLmFkZCgiQmFja0ZvcndhcmRBZGRJdGVtIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQo
KS5hZGQoIkNsZWFyQWxsRWRpdENvbW1hbmRzIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQo
KS5hZGQoIkRpZENoYW5nZUNvbnRlbnRTaXplIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQo
KS5hZGQoIkRpZENoYW5nZU1haW5Eb2N1bWVudCIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKCJEaWRDaGFuZ2VQcm9ncmVzcyIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCku
YWRkKCJEaWRDb21taXRMb2FkRm9yRnJhbWUiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgp
LmFkZCgiRGlkRGVzdHJveU5hdmlnYXRpb24iKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgp
LmFkZCgiRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUiKTsKKyAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZCgiRGlkRmluaXNoUHJvZ3Jlc3MiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZCgiRGlkRmlyc3RMYXlvdXRGb3JGcmFtZSIpOworICAgICAgICBtZXNzYWdlTmFt
ZXMuZ2V0KCkuYWRkKCJEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSIpOwor
ICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YSIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRSZWFjaExheW91dE1p
bGVzdG9uZSIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTYXZlVG9QYWdl
Q2FjaGUiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU3RhcnRQcm9ncmVz
cyIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkVkaXRvclN0
YXRlQ2hhbmdlZCIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJQYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgp
LmFkZCgiU2V0UmVuZGVyVHJlZVNpemUiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFk
ZCgiU2V0U3RhdHVzVGV4dCIpOworICAgIH0pOworCisgICAgcmV0dXJuIG1lc3NhZ2VOYW1lczsK
K30KKyNlbmRpZgorCitTdXNwZW5kZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSYgaXRlbSkKKyAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9wcm9jZXNzKCZwcm9j
ZXNzKQorICAgICwgbV9iYWNrRm9yd2FyZExpc3RJdGVtKGl0ZW0pCit7CisgICAgbV9iYWNrRm9y
d2FyZExpc3RJdGVtLT5zZXRTdXNwZW5kZWRQYWdlKCp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3BhZ2UucGFnZUlE
KCkpOworfQorCitTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJveHkoKQorewor
ICAgIGlmIChtX3Byb2Nlc3MpCisgICAgICAgIG1fcHJvY2Vzcy0+c3VzcGVuZGVkUGFnZVdhc0Rl
c3Ryb3llZCgqdGhpcyk7Cit9CisKK3ZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojp3ZWJQcm9jZXNz
RGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQoreworICAgIEFTU0VSVF9VTlVTRUQo
cHJvY2VzcywgJnByb2Nlc3MgPT0gbV9wcm9jZXNzKTsKKyAgICBtX3Byb2Nlc3MgPSBudWxscHRy
OworCisgICAgbV9wYWdlLnN1c3BlbmRlZFBhZ2VQcm9jZXNzQ2xvc2VkKCp0aGlzKTsKK30KKwor
dm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZEZpbmlzaExvYWQoKQoreworICAgIEFTU0VSVCht
X3Byb2Nlc3MpOworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkg
JXMgZnJvbSBwcm9jZXNzICVpIGZpbmlzaGVkIHRyYW5zaXRpb24gdG8gc3VzcGVuZGVkIiwgbG9n
Z2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworCisgICAgbV9m
aW5pc2hlZFN1c3BlbmRpbmcgPSB0cnVlOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpVcGRhdGVBY3RpdmVQYWdlcygpLCAwKTsKK30KKwordm9pZCBTdXNwZW5k
ZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBBU1NFUlQoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKwor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkRmluaXNoTG9hZEZvckZyYW1lOjpuYW1lKCkpIHsKKyAgICAgICAgZGlkRmluaXNoTG9hZCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2lmICFMT0dfRElTQUJMRUQKKyAgICBpZiAobWVz
c2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpLmNvbnRhaW5zKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSkpCisgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJv
eHkgcmVjZWl2ZWQgdW5leHBlY3RlZCBXZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwgZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpKTsKKyNlbmRpZgorfQorCisjaWYgIUxP
R19ESVNBQkxFRAorY29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5n
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVidWdTdHJpbmcoIigiLCBTdHJpbmc6OmZvcm1hdCgi
JXAiLCB0aGlzKSwgInBhZ2UgSUQgIiwgU3RyaW5nOjpudW1iZXIobV9wYWdlLnBhZ2VJRCgpKSwg
IiwgbV9maW5pc2hlZFN1c3BlbmRpbmcgIiwgU3RyaW5nOjpudW1iZXIobV9maW5pc2hlZFN1c3Bl
bmRpbmcpLCAiKSIpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDlj
YmMwNzVjNDY4NDVlNTljOGNhNzY0NDZjOTUzYzE3MzIxMWIyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTAsMCArMSw3
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5Owor
Y2xhc3MgV2ViUHJvY2Vzc1Byb3h5OworCitjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHkgOiBwdWJs
aWMgUmVmQ291bnRlZDxTdXNwZW5kZWRQYWdlUHJveHk+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPFN1c3BlbmRlZFBhZ2VQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3VzcGVuZGVkUGFnZVByb3h5KHBhZ2UsIHBy
b2Nlc3MsIGl0ZW0pKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5TdXNwZW5kZWRQYWdlUHJveHko
KTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJik7CisKKyAgICBXZWJQYWdlUHJveHkmIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2U7IH0KKyAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3By
b2Nlc3M7IH0KKyAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNrRm9yd2FyZExpc3RJdGVtOyB9CisKKyAgICBib29sIGZpbmlzaGVkU3VzcGVuZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fZmluaXNoZWRTdXNwZW5kaW5nOyB9CisKKyAgICB2b2lkIHdl
YlByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkmKTsKKworI2lmICFMT0dfRElTQUJMRUQK
KyAgICBjb25zdCBjaGFyKiBsb2dnaW5nU3RyaW5nKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0
ZToKKyAgICBTdXNwZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5
JiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOworCisgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7
CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKKyAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJv
Y2VzczsKKyAgICBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gbV9iYWNrRm9yd2FyZExpc3RJ
dGVtOworCisgICAgYm9vbCBtX2ZpbmlzaGVkU3VzcGVuZGluZyB7IGZhbHNlIH07Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDVjYTFiZDI4MDI0YzNmNmQ3MzBhMzJhNjJmMmY3OWExOGU1MzM1NWIuLjhmMzc0
MGU5NjFmM2NiNTcxOWRmMGNjMjQzMjMyZTFjMGQ2YmUyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjQyLDcgKzY0Miw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpoYW5kbGVTeW5jaHJvbm91c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBTCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoKQogewog
ICAgIGF1dG8gcHJvY2VzcyA9IG1ha2VSZWYobV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0
ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQobV93ZWJzaXRlRGF0YVN0
b3JlLmdldCgpKSk7Ci0gICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSk7
CisgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSwgZmFsc2UpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCkBAIC02NTMsMTcgKzY1Myw0NCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6YXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MpCiAKICAgICAvLyBGSVhNRTogdGhpcyBpcyB0byBmaXggdGhlIEFTU0VSVChp
c1ZhbGlkKCkpIGluc2lkZSByZWF0dGFjaFRvV2ViUHJvY2Vzcywgc29tZSBvdGhlciB3YXkgdG8g
Zml4IHRoaXMgaXMgbmVlZGVkLgogICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgIHJlYXR0YWNo
VG9XZWJQcm9jZXNzKFdURk1vdmUocHJvY2VzcykpOworICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNz
KFdURk1vdmUocHJvY2VzcyksIHRydWUpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRh
Y2hUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQorU3VzcGVuZGVk
UGFnZVByb3h5KiBXZWJQYWdlUHJveHk6Om1heWJlQ3JlYXRlU3VzcGVuZGVkUGFnZShXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MpCit7CisgICAgQVNTRVJUKCFtX3N1c3BlbmRlZFBhZ2UgfHwgbV9z
dXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkgIT0gJnByb2Nlc3MpOworCisgICAgYXV0byogY3VycmVu
dEl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKTsKKyAgICBpZiAoIWN1cnJl
bnRJdGVtKSB7CisgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIg
UFJJdTY0ICIgdW5hYmxlIHRvIGNyZWF0ZSBzdXNwZW5kZWQgcGFnZSBmb3IgcHJvY2VzcyBwaWQg
JWkgLSBObyBjdXJyZW50IGJhY2svZm9yd2FyZCBpdGVtIiwgcGFnZUlEKCksIHByb2Nlc3MucHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IG1fc3VzcGVuZGVkUGFnZSA9IFN1c3BlbmRlZFBhZ2VQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9j
ZXNzLCAqY3VycmVudEl0ZW0pOworCisgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQ
cm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBp
ZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJSIgUFJJdTY0LCBwYWdlSUQoKSwgbV9zdXNwZW5kZWRQ
YWdlLT5sb2dnaW5nU3RyaW5nKCksIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgY3VycmVu
dEl0ZW0tPml0ZW1JRCgpKTsKKworICAgIHJldHVybiBtX3N1c3BlbmRlZFBhZ2UuZ2V0KCk7Cit9
CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kZWRQYWdlUHJvY2Vzc0Nsb3NlZChTdXNwZW5k
ZWRQYWdlUHJveHkmIHBhZ2UpCit7CisgICAgQVNTRVJUX1VOVVNFRChwYWdlLCAmcGFnZSA9PSBt
X3N1c3BlbmRlZFBhZ2UuZ2V0KCkpOworICAgIG1fc3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7Cit9
CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsIGJvb2wgc3VzcGVuZEluT2xkUHJvY2VzcykKIHsKICAgICBBU1NF
UlQoIW1faXNDbG9zZWQpOwogICAgIEFTU0VSVCghaXNWYWxpZCgpKTsKIAogICAgIG1faXNWYWxp
ZCA9IHRydWU7Ci0gICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBtX3BhZ2VJRCk7
Ci0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CisKKyAgICBpZiAoIXN1c3Bl
bmRJbk9sZFByb2Nlc3MpIHsKKyAgICAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlz
LCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwor
ICAgIH0gZWxzZQorICAgICAgICBtX3Byb2Nlc3MtPnN1c3BlbmRXZWJQYWdlUHJveHkoKnRoaXMp
OwogCiAgICAgbV9wcm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKTsKIApAQCAtMjM1NCw3ICsyMzgx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0
aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSYgZnIKICAgICAgICAgICAgIGF1dG8gcHJvcG9zZWRQ
cm9jZXNzID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRo
aXMsICpuYXZpZ2F0aW9uLCBhY3Rpb24pOwogCiAgICAgICAgICAgICBpZiAocHJvcG9zZWRQcm9j
ZXNzLnB0cigpICE9ICZwcm9jZXNzKCkpIHsKLSAgICAgICAgICAgICAgICBMT0coTG9hZGluZywg
IlN3aXRjaGluZyBmcm9tIHByb2Nlc3MgJWkgdG8gbmV3IHByb2Nlc3MgZm9yIG5hdmlnYXRpb24g
JSIgUFJJdTY0ICIgJyVzJyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpLCBuYXZpZ2F0aW9uLT5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgICAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlN3aXRjaGluZyBmcm9tIHByb2Nl
c3MgJWkgdG8gbmV3IHByb2Nlc3MgZm9yIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyIsIHBy
b2Nlc3NJZGVudGlmaWVyKCksIG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9u
LT5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLCBwcm9wb3NlZFByb2Nlc3MgPSBX
VEZNb3ZlKHByb3Bvc2VkUHJvY2VzcyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3Zl
KHByb3Bvc2VkUHJvY2VzcykpOwpAQCAtMzU3MSw2ICszNTk4LDggQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSkKIHsKKyAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lIC0gV2ViUGFnZVByb3h5ICVwIHdpdGggbmF2aWdhdGlvbklEICVsbHUgZGlkRmluaXNo
TG9hZCIsIHRoaXMsIG5hdmlnYXRpb25JRCk7CisKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHBy
b3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3By
b2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCA5NGI5OGJjZmE4NzQzOGRlMzhhNDVhYjBkNzFhZGNlMWQ4NTk3MWFlLi4xNTFj
NTc2OWMxMDRhZDFkYTBjZmFmMWU2ZmVkNzc2ZjIzNDJmN2U4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NU
aHJvdHRsZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCisjaW5jbHVkZSAiU3VzcGVuZGVkUGFnZVByb3h5LmgiCiAjaW5jbHVk
ZSAiU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZUluZm8uaCIKQEAgLTEyODYsNiArMTI4Nyw5IEBAIHB1YmxpYzoKIAogICAgIFdlYlByZWZl
cmVuY2VzU3RvcmUgcHJlZmVyZW5jZXNTdG9yZSgpIGNvbnN0OwogCisgICAgU3VzcGVuZGVkUGFn
ZVByb3h5KiBtYXliZUNyZWF0ZVN1c3BlbmRlZFBhZ2UoV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAg
dm9pZCBzdXNwZW5kZWRQYWdlUHJvY2Vzc0Nsb3NlZChTdXNwZW5kZWRQYWdlUHJveHkmKTsKKwog
cHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYs
IHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZv
aWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0xNDM2LDcgKzE0NDAsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogICAgIHZvaWQgYXR0YWNoVG9Qcm9j
ZXNzRm9yTmF2aWdhdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmKTsKLSAgICB2b2lkIHJlYXR0
YWNoVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYpOworICAgIHZvaWQgcmVhdHRh
Y2hUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgYm9vbCBzdXNwZW5kSW5PbGRQ
cm9jZXNzKTsKIAogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlYXR0YWNoVG9XZWJQcm9j
ZXNzRm9yUmVsb2FkKCk7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gcmVhdHRhY2hUb1dl
YlByb2Nlc3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CkBAIC0yMTI5LDYgKzIx
MzMsMTEgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxNb25vdG9uaWNU
aW1lPiBtX3BhZ2VMb2FkU3RhcnQ7CisKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBtb3JlIHRoYW4g
b25lIHN1c3BlbmRlZCBwYWdlIHBlciBXZWJQYWdlUHJveHksCisgICAgLy8gYW5kIGhhdmUgYSBn
bG9iYWwgY29sbGVjdGlvbiBvZiB0aGVtIHBlciBwcm9jZXNzIHBvb2wKKyAgICAvLyAoZS5nLiBm
b3IgdGhhdCBwcm9jZXNzIHBvb2wncyBwYWdlIGNhY2hlKQorICAgIFJlZlB0cjxTdXNwZW5kZWRQ
YWdlUHJveHk+IG1fc3VzcGVuZGVkUGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZWM2YTQx
MDQ5ZWIwOWZiMjNiNzljZmRiZWMyNmNhZTRjOWFhYjk1NS4uYmY1ZmU0YTUyZDllYzc5YTEyMDI5
MzgyNmQxMzU5OTI1ODkwNDAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiU3VzcGVuZGVkUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNr
ZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVUlNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlci5oIgpAQCAtMzk1LDYgKzM5NiwyNyBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdWludDY0
X3QgcGFnZUlEKQogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiB9
CiAKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdXNwZW5kV2ViUGFnZVByb3h5KFdlYlBhZ2VQcm94
eSYgd2ViUGFnZSkKK3sKKyAgICBpZiAoYXV0byogc3VzcGVuZGVkUGFnZSA9IHdlYlBhZ2UubWF5
YmVDcmVhdGVTdXNwZW5kZWRQYWdlKCp0aGlzKSkgeworICAgICAgICBMT0coUHJvY2Vzc1N3YXBw
aW5nLCAiV2ViUHJvY2Vzc1Byb3h5IHBpZCAlaSBhZGRlZCBzdXNwZW5kZWQgcGFnZSAlcyIsIHBy
b2Nlc3NJZGVudGlmaWVyKCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSk7CisgICAg
ICAgIG1fc3VzcGVuZGVkUGFnZU1hcC5zZXQod2ViUGFnZS5wYWdlSUQoKSwgc3VzcGVuZGVkUGFn
ZSk7CisgICAgfQorCisgICAgcmVtb3ZlV2ViUGFnZSh3ZWJQYWdlLCB3ZWJQYWdlLnBhZ2VJRCgp
KTsKKyAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCB3ZWJQYWdlLnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnN1c3BlbmRlZFBhZ2VXYXNEZXN0cm95ZWQoU3VzcGVuZGVkUGFnZVByb3h5JiBz
dXNwZW5kZWRQYWdlKQoreworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQcm9jZXNzUHJv
eHkgcGlkICVpIHN1c3BlbmRlZCBwYWdlICVzIHdhcyBkZXN0cm95ZWQiLCBwcm9jZXNzSWRlbnRp
ZmllcigpLCBzdXNwZW5kZWRQYWdlLmxvZ2dpbmdTdHJpbmcoKSk7CisKKyAgICBBU1NFUlQobV9z
dXNwZW5kZWRQYWdlTWFwLmNvbnRhaW5zKHN1c3BlbmRlZFBhZ2UucGFnZSgpLnBhZ2VJRCgpKSk7
CisgICAgbV9zdXNwZW5kZWRQYWdlTWFwLnJlbW92ZShzdXNwZW5kZWRQYWdlLnBhZ2UoKS5wYWdl
SUQoKSk7CisKKyAgICBtYXliZVNodXREb3duKCk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdWludDY0X3QgcGFnZUlEKQog
ewogICAgIGF1dG8qIHJlbW92ZWRQYWdlID0gbV9wYWdlTWFwLnRha2UocGFnZUlEKTsKQEAgLTQx
NCwxMiArNDM2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFn
ZVByb3h5JiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlSUQpCiAgICAgZm9yIChhdXRvIGl0ZW1JRCA6
IGl0ZW1JRHNUb1JlbW92ZSkKICAgICAgICAgbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLnJlbW92
ZShpdGVtSUQpOwogCi0gICAgLy8gSWYgdGhpcyB3YXMgdGhlIGxhc3QgV2ViUGFnZSBvcGVuIGlu
IHRoYXQgd2ViIHByb2Nlc3MsIGFuZCB3ZSBoYXZlIG5vIG90aGVyIHJlYXNvbiB0byBrZWVwIGl0
IGFsaXZlLCBsZXQgaXQgZ28uCi0gICAgLy8gV2Ugb25seSBhbGxvdyB0aGlzIHdoZW4gdXNpbmcg
YSBuZXR3b3JrIHByb2Nlc3MsIGFzIG90aGVyd2lzZSB0aGUgV2ViUHJvY2VzcyBuZWVkcyB0byBw
cmVzZXJ2ZSBpdHMgc2Vzc2lvbiBzdGF0ZS4KLSAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6VGVy
bWluYXRlZCB8fCAhY2FuVGVybWluYXRlQ2hpbGRQcm9jZXNzKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHNodXREb3duKCk7CisgICAgbWF5YmVTaHV0RG93bigpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlJiBzdG9yZSkK
QEAgLTYzNyw2ICs2NTQsMTUgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGUKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIC8vIFdlYlBhZ2VQcm94eSBtZXNzYWdlcyBhcmUgbm9ybWFsbHkg
aGFuZGxlZCBieSB0aGUgbm9ybWFsICJkaXNwYXRjaE1lc3NhZ2UiIHVwIGFib3ZlLgorICAgIC8v
IElmIHRoZXkgd2VyZSBub3QgaGFuZGxlZCB0aGVyZSwgdGhlbiB0aGV5IG1heSBwb3RlbnRpYWxs
eSBiZSBoYW5kbGVkIGJ5IFN1c3BlbmRlZFBhZ2VQcm94eSBvYmplY3RzLgorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN1c3BlbmRlZFBhZ2UgPSBt
X3N1c3BlbmRlZFBhZ2VNYXAuZ2V0KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkgeworICAgICAg
ICAgICAgc3VzcGVuZGVkUGFnZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBGSVhN
RTogQWRkIHVuaGFuZGxlZCBtZXNzYWdlIGxvZ2dpbmcuCiB9CiAKQEAgLTY4MCw2ICs3MDYsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAg
Zm9yIChhdXRvJiBwYWdlIDogcGFnZXMpCiAgICAgICAgIHBhZ2UtPnByb2Nlc3NEaWRUZXJtaW5h
dGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpDcmFzaCk7CiAKKyAgICBmb3IgKGF1dG8qIHN1
c3BlbmRlZFBhZ2UgOiBjb3B5VG9WZWN0b3JPZjxTdXNwZW5kZWRQYWdlUHJveHkqPihtX3N1c3Bl
bmRlZFBhZ2VNYXAudmFsdWVzKCkpKQorICAgICAgICBzdXNwZW5kZWRQYWdlLT53ZWJQcm9jZXNz
RGlkQ2xvc2UoKnRoaXMpOworCisgICAgbV9zdXNwZW5kZWRQYWdlTWFwLmNsZWFyKCk7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKQEAgLTgyNyw5ICs4NTcsMTcg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lVc2VyR2VzdHVyZVRva2VuKHVpbnQ2
NF90IGlkZW50aWZpZXIpCiAgICAgbV91c2VySW5pdGlhdGVkQWN0aW9uTWFwLnJlbW92ZShpZGVu
dGlmaWVyKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUHJveHk6Om1heWJlU2h1dERvd24oKQorewor
ICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpUZXJtaW5hdGVkIHx8ICFjYW5UZXJtaW5hdGVDaGls
ZFByb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2h1dERvd24oKTsKK30KKwogYm9v
bCBXZWJQcm9jZXNzUHJveHk6OmNhblRlcm1pbmF0ZUNoaWxkUHJvY2VzcygpCiB7Ci0gICAgaWYg
KCFtX3BhZ2VNYXAuaXNFbXB0eSgpKQorICAgIGlmICghbV9wYWdlTWFwLmlzRW1wdHkoKSB8fCAh
bV9zdXNwZW5kZWRQYWdlTWFwLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKCFtX3Byb2Nlc3NQb29sLT5zaG91bGRUZXJtaW5hdGUodGhpcykpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDgwYWI4YTZiNTk2NTdlMmY4N2Vl
NzE3NjI4ZDAwMDU2NzE1MTk3NGEuLmM2NzcwZWE4NTQ4YmRmZjVjNjI5ZjQzZDYzZDAzMmExNzAx
NWI1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC02
Niw2ICs2Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94
eTsKIGNsYXNzIE9iakNPYmplY3RHcmFwaDsKIGNsYXNzIFBhZ2VDbGllbnQ7CitjbGFzcyBTdXNw
ZW5kZWRQYWdlUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OwogY2xh
c3MgVmlzaXRlZExpbmtTdG9yZTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CkBAIC0y
MDgsNiArMjA5LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2Fk
KCkgeyBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMgPSB0cnVlOyB9CiAgICAgYm9v
bCBoYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXND
b21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzOyB9CiAKKyAgICB2b2lkIHN1c3BlbmRXZWJQYWdl
UHJveHkoV2ViUGFnZVByb3h5Jik7CisgICAgdm9pZCBzdXNwZW5kZWRQYWdlV2FzRGVzdHJveWVk
KFN1c3BlbmRlZFBhZ2VQcm94eSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVpbnQ2NF90
IGdlbmVyYXRlUGFnZUlEKCk7CiAgICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwg
V2Vic2l0ZURhdGFTdG9yZSYpOwpAQCAtMjIxLDYgKzIyNSw3IEBAIHByaXZhdGU6CiAgICAgLy8g
Q2FsbGVkIHdoZW4gdGhlIHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkIG9yIHdlIGtub3cgdGhhdCBp
dCB3aWxsIHRlcm1pbmF0ZSBzb29uLgogICAgIC8vIFdpbGwgcG90ZW50aWFsbHkgY2F1c2UgdGhl
IFdlYlByb2Nlc3NQcm94eSBvYmplY3QgdG8gYmUgZnJlZWQuCiAgICAgdm9pZCBzaHV0RG93bigp
OworICAgIHZvaWQgbWF5YmVTaHV0RG93bigpOwogCiAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxl
cnMuCiAgICAgdm9pZCBhZGRPclVwZGF0ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgUGFnZVN0YXRlJik7CkBAIC0yOTgsNiArMzAzLDcgQEAg
cHJpdmF0ZToKICAgICBIYXNoU2V0PFN0cmluZz4gbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFk
QWNjZXNzOwogCiAgICAgV2ViUGFnZVByb3h5TWFwIG1fcGFnZU1hcDsKKyAgICBIYXNoTWFwPHVp
bnQ2NF90LCBTdXNwZW5kZWRQYWdlUHJveHkqPiBtX3N1c3BlbmRlZFBhZ2VNYXA7CiAgICAgV2Vi
RnJhbWVQcm94eU1hcCBtX2ZyYW1lTWFwOwogICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1NYXAg
bV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwOwogICAgIFVzZXJJbml0aWF0ZWRBY3Rpb25NYXAgbV91
c2VySW5pdGlhdGVkQWN0aW9uTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2MyZDQ2NTMwMTMwMGM4NWJjZjkzYjM0NWFhOGQ5MmU3
ODBmM2U2MC4uYWQxNTQ3NTkwYzZmZDNhMDg1ZDFkNGVmOWQ2Y2NjOTA1YTM3NjZlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDcw
LDYgKzEwNzAsNyBAQAogCQk1MTVCRTFCNDFENTkxN0ZGMDBERDdDNjggLyogVUlHYW1lcGFkLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUFD
MUQ1NTVDNTEwMEREN0M2OCAvKiBVSUdhbWVwYWQuY3BwICovOyB9OwogCQk1MTVCRTFCNTFENTkx
N0ZGMDBERDdDNjggLyogVUlHYW1lcGFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFBRDFENTU1QzUxMDBERDdDNjggLyogVUlHYW1lcGFkLmgg
Ki87IH07CiAJCTUxNUJFMUI3MUQ1QTk0RkQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlck1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJF
MUI2MUQ1QTk0RjkwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlck1hYy5tbSAqLzsgfTsKKwkJ
NTE1QzQxNUMyMDdEN0NBRTAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVDNDE1QTIwN0Q3NEUw
MDA3MjZFMDIgLyogU3VzcGVuZGVkUGFnZVByb3h5LmNwcCAqLzsgfTsKIAkJNTE1RTc3MjcxODNE
RDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcyNTE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNS
ZXF1ZXN0LmNwcCAqLzsgfTsKIAkJNTE1RTc3MjgxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVx
dWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1
RTc3MjYxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oICovOyB9OwogCQk1MTYwQkZF
MTEzMzgxREY5MDA5MTg5OTkgLyogTG9nZ2luZ0ZvdW5kYXRpb24ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwQkZFMDEzMzgxREY5MDA5MTg5OTkg
LyogTG9nZ2luZ0ZvdW5kYXRpb24ubW0gKi87IH07CkBAIC0zNDg2LDYgKzM0ODcsOCBAQAogCQk1
MTVCRTFCMDFENTkwMDY5MDBERDdDNjggLyogR2FtZXBhZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2FtZXBhZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE1QkUxQjExRDU5MDJCNjAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdhbWVwYWREYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxQjYxRDVBOTRGOTAwREQ3QzY4IC8qIFVJR2FtZXBh
ZFByb3ZpZGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
VUlHYW1lcGFkUHJvdmlkZXJNYWMubW07IHBhdGggPSBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlH
YW1lcGFkUHJvdmlkZXJNYWMubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNTE1
QzQxNUEyMDdENzRFMDAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdXNwZW5kZWRQYWdlUHJveHkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTVDNDE1QjIwN0Q3NEUxMDA3MjZFMDIgLyogU3Vz
cGVuZGVkUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1c3Bl
bmRlZFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVFNzcyNTE4
M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFzeW5jUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNUU3NzI2MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNjBCRkUwMTMzODFERjkwMDkxODk5OSAvKiBMb2dnaW5nRm91bmRh
dGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvZ2dpbmdG
b3VuZGF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI2OSw2ICs3Mjcy
LDggQEAKIAkJCQk0MTRERURENTFGOUVERERGMDA0N0M0MEQgLyogU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS5oICovLAogCQkJCTUxQTRENUE4MTZDQUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNz
UmVxdWVzdC5jcHAgKi8sCiAJCQkJNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3Rp
Y3NSZXF1ZXN0LmggKi8sCisJCQkJNTE1QzQxNUEyMDdENzRFMDAwNzI2RTAyIC8qIFN1c3BlbmRl
ZFBhZ2VQcm94eS5jcHAgKi8sCisJCQkJNTE1QzQxNUIyMDdENzRFMTAwNzI2RTAyIC8qIFN1c3Bl
bmRlZFBhZ2VQcm94eS5oICovLAogCQkJCTMxOEExRjA0MjA0RjQ3NjQwMDM0ODBCQyAvKiBTeXN0
ZW1QcmV2aWV3Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMzE1NzEzNUQyMDQwQTlCMjAwODRGOUNG
IC8qIFN5c3RlbVByZXZpZXdDb250cm9sbGVyLmggKi8sCiAJCQkJMUFBNDE3QzkxMkMwMENDQTAw
MkJFNjdCIC8qIFRleHRDaGVja2VyLmggKi8sCkBAIC0xMDg5Myw2ICsxMDg5OCw3IEBACiAJCQkJ
NTExOEU5QUMxRjI5NTk3NzAwM0VGOUY1IC8qIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTAwRDZCMTgzMjdDMTIw
MDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk2QkQ4
NUUxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTUxNUM0MTVDMjA3RDdDQUUwMDcyNkUwMiAvKiBTdXNwZW5kZWRQYWdlUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzE4QTFGMDUyMDRGNDc2NDAwMzQ4MEJDIC8qIFN5c3RlbVByZXZp
ZXdDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxNTcxMzVFMjA0MEE5QjIwMDg0
RjlDRiAvKiBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMVpaNDE3RUYxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggMWFlM2Q3M2Y5NjljYmNmOWM5NDc4YzY5Y2U3NDA4NmE1MDAwMmUxMy4uOTUz
ZGE3ZDg1MTM5MWFhZTdiMmRiOWM4OTY1ODlkZWE4NzIxNmUyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU4NjYsNiArNTg2NiwxMSBAQCB2
b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRl
bnRpZmllciwgdWludDY0X3QgdGFzawogICAgIGhhbmRsZXItPnRhc2tEaWRDb21wbGV0ZSh0YXNr
SWRlbnRpZmllciwgZXJyb3IpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldElzU3VzcGVuZGVkKGJv
b2wgc3VzcGVuZGVkKQoreworICAgIG1faXNTdXNwZW5kZWQgPSBzdXNwZW5kZWQ7Cit9CisKICNp
ZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKIHN0YXRpYyB1aW50NjRfdCBu
ZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDRjM2I1OTUxNTE2MjMwYTgxYTI1ODQ3MmE1
M2U3Yzk1YzQ4ZTk3NDAuLmEyOTFiODFjMGMwYmFiNGE3YWE0OWI1OThkMTY1MjVlMTdmYjk0YTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwNzIs
NiArMTA3Miw4IEBAIHB1YmxpYzoKIAogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyLT5pZGVudGlmaWVyKCk7IH0KIAorICAgIGJvb2wgaXNTdXNwZW5k
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3VzcGVuZGVkOyB9CisKIHByaXZhdGU6CiAgICAgV2Vi
UGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAg
LTEzODgsNiArMTM5MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVj
ZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlm
aWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tE
aWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAorICAgIHZvaWQgc2V0SXNT
dXNwZW5kZWQoYm9vbCk7CisKICAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90QXRTaXplKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiaXRtYXBTaXpl
LCBTbmFwc2hvdE9wdGlvbnMpOwogICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3ROb2RlKFdl
YkNvcmU6Ok5vZGUmLCBTbmFwc2hvdE9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50
ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKICNpZiBVU0UoQ0YpCkBA
IC0xNzA1LDYgKzE3MDksNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDcmVk
ZW50aWFsc01lc3Nlbmdlcj4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsKICNlbmRpZgogCisgICAg
Ym9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KaW5kZXggZDhmZTRlNWY0NDU0OGVlYTBkMWUyN2Q0NjQwMjNlYTQyYTkxMmQ4MS4u
ZTBmZjUyMTdlNWQyZWIyZGYyYTYzOTI1NzcyYjM0NmVlZjM5ZDBjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00
OTEsNiArNDkxLDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAg
VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1
aW50NjRfdCB0YXNrSWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgVVJM
U2NoZW1lVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRf
dCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKIAorICAgIFNl
dElzU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKQorCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFH
RV9QQVJUSVRJT05JTkcpCiAgICAgU3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRl
ZCwgdWludDY0X3QgY29udGV4dElkKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGVhNjk1YmI0MmVmYjZkMWQ4MjU0M2Q2
N2Q0NWQ0MjIzNWE2YTllMmMuLmVmYjA3ZTNmYTNiNTAzYzc5NDM4NWZlYzNhZGU3ZTM2YTJiZGVk
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC0xMjgsNiArMTI4LDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciB7CiAgICAgQ2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIpCiAgICAgTWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXIgcG9ydCkKIAorICAgIFVwZGF0ZUFjdGl2ZVBhZ2VzKCkKKwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBTZXRTY3JlZW5Qcm9wZXJ0aWVzKHVpbnQzMl90IHByaW1hcnlTY3Jl
ZW5JRCwgSGFzaE1hcDx1aW50MzJfdCwgV2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcz4gc2NyZWVu
UHJvcGVydGllcykKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQw
MApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0KaW5kZXggNjg1MTgzOTNkMGRlNDU2MDY5ZTU0OWNlYzExNjE5MDVlZjdmOTg5ZC4uYTE0NzIw
N2M4NzhlYjBkYmQ1NDVjNjI5NTRjMDRhY2Q2NjFjYzNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0zODcsNyArMzg3LDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVBY3RpdmVQYWdlcygpCiAgICAgYXV0byBhY3RpdmVQ
YWdlVVJMcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCiAgICAg
Zm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChwYWdl
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQorICAgICAgICBpZiAocGFnZS0+dXNlc0VwaGVtZXJh
bFNlc3Npb24oKSB8fCBwYWdlLT5pc1N1c3BlbmRlZCgpKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgaWYgKE5TVVJMICpvcmlnaW5Bc1VSTCA9IG9yaWdpbigqcGFnZSkpCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZThiZDZjNzMy
MzkxNjhmNzBiYzRkNjA4MTNiNTJiMjBjNzRmMmI4Yi4uNjU4NTI4ZGQ3OTk3ZGVkZmMxYTA2OGY1
NjAzYWI3NGQ4MmM2YWUxMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE4LTA0LTEyICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgU3VzcGVuZGVkUGFnZVByb3h5
IHRvIGtlZXAgb2xkIHdlYiBwcm9jZXNzZXMgYXJvdW5kIGFmdGVyIHRoZWlyIFdlYlBhZ2VQcm94
eSBoYXMgYmVlbiBzd2FwcGVkIHRvIGEgbmV3IG9uZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDU1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToKKwogMjAxOC0wNC0xMiAgSm9uYXRoYW4gQmVk
YXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IC0tYnVpbGQtZGlyZWN0b3J5
IGZsYWcgZm9yIHJ1bi13ZWJraXQtdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
CmluZGV4IDc3MmJkYjJmYzgwZmY1NTIxMDI5N2U3MzAzZmIyZjQwMWEzMDdhMDIuLjIyOTljMDVi
ODA3NjE2NmY4MTAxZTRiMThlODdjMzUzZjNlMTlkMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbQpAQCAtNzUxLDQgKzc1MSw0NCBAQCBURVNUKFByb2Nlc3NTd2FwLCBNYWluRnJh
bWVzT25seSkKICAgICBFWFBFQ1RfRVEoMXUsIHNlZW5QSURzLnNpemUoKSk7CiB9CiAKK1RFU1Qo
UHJvY2Vzc1N3YXAsIE9uZVByZXZpb3VzUHJvY2Vzc1JlbWFpbnMpCit7CisgICAgYXV0byBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9j
ZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHRO
UyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBb
d2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOwor
ICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tQU09OU2NoZW1lIGFsbG9jXSBpbml0XSk7Cisg
ICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQo
KSBmb3JVUkxTY2hlbWU6QCJQU09OIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
KyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisg
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly9ob3N0MS9tYWluLmh0bWwiXV07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL2hvc3QyL21h
aW4uaHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAg
cmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJwc29uOi8vaG9zdDMvbWFpbi5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBk
b25lID0gZmFsc2U7CisKKyAgICAvLyBOYXZpZ2F0aW9ucyB0byAzIGRpZmZlcmVudCBkb21haW5z
LCB3ZSBleHBlY3QgdG8gaGF2ZSBzZWVuIDMgZGlmZmVyZW50IFBJRHMKKyAgICBFWFBFQ1RfRVEo
M3UsIHNlZW5QSURzLnNpemUoKSk7CisKKyAgICAvLyBCdXQgb25seSAyIG9mIHRob3NlIHByb2Nl
c3NlcyBzaG91bGQgc3RpbGwgYmUgYWxpdmUKKyAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9v
bCBfd2ViUHJvY2Vzc0NvdW50XSk7Cit9CisKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337904</attachid>
            <date>2018-04-13 10:23:51 -0700</date>
            <delta_ts>2018-04-13 10:31:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184559-20180413102349.patch</filename>
            <type>text/plain</type>
            <size>50030</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1YzEwMjViZjU2YjFiNmFmODZjYzNh
YWFkNDEyOTdmM2JiMDhjNzUuLmYyNWVmY2QxZjQzMDFjZmIzY2VhYmJiMzc3MDFmY2EwYzM5ZDRk
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDQtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTdXNwZW5kZWRQYWdlUHJveHkgdG8g
a2VlcCBvbGQgd2ViIHByb2Nlc3NlcyBhcm91bmQgYWZ0ZXIgdGhlaXIgV2ViUGFnZVByb3h5IGhh
cyBiZWVuIHN3YXBwZWQgdG8gYSBuZXcgb25lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRGVidWdVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdU
Rjo6ZGVidWdTdHJpbmcpOiBBZGQgYSBkZWJ1ZyB1dGlsaXR5IHRvIGVhc2lseSBjb25zdHJ1Y3Qg
YSAiY29uc3QgY2hhcioiIHRoYXQgaXMgcmVsZWFzZWQgYWZ0ZXIgYSBzcGluIG9mIHRoZSBydW4g
bG9vcC4KKyAgICAgICAgICBUaGlzIGdyZWF0bHkgZWFzZXMgdXNlcyBvdXIgU3RyaW5nIGNsYXNz
ZXMgYW5kIGZ1bmN0aW9ucyBpbnNpZGUgb2YgIiVzIiBzdHlsZSBlbnZpcm9ubWVudHMgbGlrZSBw
cmludGYgYW5kIExPRy4KKwogMjAxOC0wNC0xMiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56
YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBjcmFzaCBob29rIGZ1bmN0
aW9uYWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MmJkMjU3YmY1NDNhMDJkNTkxYmQyZjY3NzQ1ODUzM2E4
ZDExNDE2Li5lNmZjYmUxN2Y2NDJhNmM2YzU5ZTJlYzZiN2RlOWVjYTQzZGRmNTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTgtMDQtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTdXNwZW5kZWRQYWdlUHJveHkgdG8ga2Vl
cCBvbGQgd2ViIHByb2Nlc3NlcyBhcm91bmQgYWZ0ZXIgdGhlaXIgV2ViUGFnZVByb3h5IGhhcyBi
ZWVuIHN3YXBwZWQgdG8gYSBuZXcgb25lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJIHRlc3QuCisKKyAgICAgICAgV2Vi
Q29yZSBjaGFuZ2VzIHJld29yayB0aGUgbWVhbmluZyBvZiBhICJGb3JTdXNwZW5zaW9uIiBwb2xp
Y3kgdG8gc2ltcGx5IG5hdmlnYXRlIHRoZSBwYWdlIHRvIGFib3V0OmJsYW5rLgorCisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmg6CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSk6CisKIDIwMTgtMDQtMTIgIERhbmll
bCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnRlbnQtVHlwZSBub3Qg
ZW5mb3JjZWQgZm9yIDxzY3JpcHQ+IGFsbG93cyBmb3IgWFNTCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzZmU1YWRl
ZmM3NWVmOGYxZTA5MTk3MzMzYTc0OWJlMDNkNDIzODAuLmJjNjY1YTY5NWYwODA2OWM3Y2VhYWJk
Zjc3MGUxYzAyNDc0YmI5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTgtMDQtMTIg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBT
dXNwZW5kZWRQYWdlUHJveHkgdG8ga2VlcCBvbGQgd2ViIHByb2Nlc3NlcyBhcm91bmQgYWZ0ZXIg
dGhlaXIgV2ViUGFnZVByb3h5IGhhcyBiZWVuIHN3YXBwZWQgdG8gYSBuZXcgb25lLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NTU5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0
Y2gsIHdoZW4gYSBXZWJQYWdlUHJveHkgbmF2aWdhdGVzIGFuZCBpcyBzd2FwcGVkIHRvIGEgbmV3
IHByb2Nlc3MsIHRoZSBvbGQgcHJvY2VzcyBhbG1vc3QgYWx3YXlzIGdvZXMgYXdheS4KKworICAg
ICAgICBUaGlzIGlzIG5vdCBkZXNpcmFibGUgZm9yIGEgZmV3IHJlYXNvbnM6CisgICAgICAgIDEg
LSBXZSBjYW4ndCBrZWVwIHRoZSBQYWdlQ2FjaGUgd29ya2luZyBmb3IgYmFjay9mb3J3YXJkIHNj
ZW5hcmlvcworICAgICAgICAyIC0gV2UgdGhyb3cgYXdheSBhICJmb28uY29tIiB3ZWIgcHJvY2Vz
cywgbWVhbmluZyB0aGUgbmV4dCB0aW1lIHdlIG5lZWQgdG8gaG9zdCBhICJmb28uY29tIiB3ZWIg
cGFnZSB3ZSBoYXZlIHRvIGxhdW5jaAorICAgICAgICAgICAgYW5kIGluaXRpYWxpemUgYSBuZXcg
d2ViIHByb2Nlc3MuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgU3VzcGVuZGVkUGFnZVBy
b3h5IG9iamVjdCB0byBrZWVwIGFyb3VuZCB0aGUgb2xkIHdlYiBwcm9jZXNzIGFuZCB0byBtYW5h
Z2UgY29tbXVuaWNhdGlvbiB3aXRoIGl0LgorCisgICAgICAgIEZvciBub3csIGEgV2ViUGFnZVBy
b3h5IGtlZXBzIGV4YWN0bHkgb25lICJzdXNwZW5kZWQgcGFnZSIgcmVwcmVzZW50aW5nIHRoZSBt
b3N0IHJlY2VudGx5IHZpc2l0ZWQgcGFnZSBhbmQgaXRzIHByb2Nlc3MuCisgICAgICAgIEFkZGl0
aW9uYWxseSwgdGhhdCBwcm9jZXNzIGlzIG5ldmVyIHJldXNlZC4KKworICAgICAgICBTbyBubyBi
ZW5lZml0IGlzIGFjaGlldmVkIHdpdGggdGhpcyBwYXRjaCwgYnV0IGl0IGVuYWJsZXMgZnV0dXJl
IGJlbmVmaXRzLgorCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorCisgICAgICAgICog
U2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJC
YWNrRm9yd2FyZExpc3RJdGVtOjpzZXRTdXNwZW5kZWRQYWdlKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oOgorCisgICAgICAgIE5ldyBvYmplY3QgdG8gcmVwcmVz
ZW50IHRoZSBzdGF0ZSBvZiBhIFdlYlBhZ2VQcm94eSBpbiBhbiBvbGQgd2ViIHByb2Nlc3MgdGhh
dCBpcyBub3QgY3VycmVudGx5IGhvc3RpbmcgdGhlIHZpZXcuCisgICAgICAgICogVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5k
ZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlN1c3Bl
bmRlZFBhZ2VQcm94eTo6flN1c3BlbmRlZFBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlN1
c3BlbmRlZFBhZ2VQcm94eTo6d2ViUHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6
U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYktpdDo6U3Vz
cGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlN1
c3BlbmRlZFBhZ2VQcm94eTo6bG9nZ2luZ1N0cmluZyBjb25zdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0xvZ2dpbmcuaC4KKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OnBhZ2UgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OnByb2Nlc3MgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6Oml0ZW0gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmlzaGVkU3VzcGVuZGluZyBjb25zdCk6CisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6YXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bWF5YmVDcmVhdGVTdXNwZW5kZWRQYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kZWRQYWdlUHJvY2Vzc0Nsb3NlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzdXNwZW5k
V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzdXNwZW5k
ZWRQYWdlV2FzRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpy
ZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNl
aXZlTWVzc2FnZSk6IE9wdGlvbmFsbHkgcGFzcyBXZWJQYWdlUHJveHkgbWVzc2FnZXMgYWxvbmcg
dG8gU3VzcGVuZGVkUGFnZVByb3h5IG9iamVjdHMuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1h
eWJlU2h1dERvd24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNhblRlcm1p
bmF0ZUNoaWxkUHJvY2Vzcyk6IERvbid0IHRlcm1pbmF0ZSBjaGlsZCBwcm9jZXNzZXMgaWYgdGhl
eSBzdGlsbCBoYXZlIHN1c3BlbmRlZCBwYWdlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5Lmg6CisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c2V0SXNTdXNwZW5kZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzU3VzcGVuZGVk
IGNvbnN0KTogRm9yIG5vdywgdXNlZCBvbmx5IGJ5IFdlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBh
Z2VzLiBXaWxsIGhhdmUgbW9yZSB1c2VzIHNvb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKTog
QWxsb3cgdGhlIFVJUHJvY2VzcyB0byByZXF1ZXN0IGFuIHVwZGF0ZSBvZiB0aGUgd2ViIHByb2Nl
c3NlcyB1c2VyIHZpc2libGUgbmFtZS4KKwogMjAxOC0wNC0xMiAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbRXh0cmEgem9vbSBtb2RlXSBTdXBwcmVz
cyBVSSBmb3IgaW5wdXRzIG9mIHR5cGUgZmlsZSBpbiBleHRyYSB6b29tIG1vZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0RlYnVnVXRpbGl0aWVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9EZWJ1
Z1V0aWxpdGllcy5oCmluZGV4IDEyMmY3NjgwYTcwYTQ3ZTMyMGRkMGZlZTRjODdkMzIxNDhiMTVi
MmUuLmE0NDFiNWNkZThiZDM0ODY1OGIxOGMxNTJmOTU1YjQ1OTBjZmY4YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0RlYnVnVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dURi93dGYvRGVi
dWdVdGlsaXRpZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMywxMSArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBXVEZfRGVidWdVdGlsaXRpZXNfaAotI2RlZmluZSBXVEZfRGVidWdVdGlsaXRpZXNfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9Qcm9jZXNzSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgog
CiAjZGVmaW5lIFNMRUVQX1RIUkVBRF9GT1JfREVCVUdHRVIoKSBcCiBkbyB7IFwKQEAgLTQwLDQg
KzQwLDI0IEBAIGRvIHsgXAogICAgIFdURkJyZWFrcG9pbnRUcmFwKCk7IFwKIH0gd2hpbGUgKDAp
CiAKLSNlbmRpZiAvKiBXVEZfRGVidWdVdGlsaXRpZXNfaCAqLworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPgorY29uc3QgY2hhciogZGVidWdTdHJp
bmcoU3RyaW5nVHlwZXMuLi4gc3RyaW5ncykKK3sKKyAgICBTdHJpbmcgcmVzdWx0ID0gdHJ5TWFr
ZVN0cmluZyhzdHJpbmdzLi4uKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgQ1JBU0goKTsK
KworICAgIGF1dG8gY1N0cmluZyA9IHJlc3VsdC51dGY4KCk7CisgICAgY29uc3QgY2hhciogY1N0
cmluZ0RhdGEgPSBjU3RyaW5nLmRhdGEoKTsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoW2NTdHJp
bmcgPSBXVEZNb3ZlKGNTdHJpbmcpXSB7CisgICAgfSk7CisKKyAgICByZXR1cm4gY1N0cmluZ0Rh
dGE7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OmRlYnVnU3RyaW5nOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggODBkYmYxM2YwMjFj
ZjUzMzU2NGI2ZGIxNWU3NWU0ZTAwMTg5NTczMy4uZmJjNzQzNDE5NjQzN2QzNGZiNzIwZGNhMDVl
NzE4NGZlYmRmMGFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGlzUmVkaXJlY3Rpb25Gcm9tU2VydmljZVdvcmtl
ciA9IHJlZGlyZWN0UmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNl
OjpTZXJ2aWNlV29ya2VyOwotICAgIHdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBy
ZWRpcmVjdFJlc3BvbnNlLCBbaXNSZWRpcmVjdGlvbkZyb21TZXJ2aWNlV29ya2VyLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHRoaXNdIChhdXRvJiYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgd2ls
bFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFNob3VsZENv
bnRpbnVlOjpZZXMsIFtpc1JlZGlyZWN0aW9uRnJvbVNlcnZpY2VXb3JrZXIsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgdGhpc10gKGF1dG8mJiByZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUKCFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSk7CiAgICAgICAgIGlmIChyZXF1ZXN0Lmlz
TnVsbCgpIHx8ICFtX21haW5Eb2N1bWVudEVycm9yLmlzTnVsbCgpIHx8ICFtX2ZyYW1lKSB7CiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtNTUyLDExICs1NTIsMTEgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIFJlc291cmNlUmVxdWVzdCYKICAgICAgICAgfSk7CiAgICAgfSk7CiAjZWxzZQotICAg
IHdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgd2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVx
dWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFNob3VsZENvbnRpbnVlOjpZZXMsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICNlbmRpZgogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjp3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGlu
dWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIC8vIE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gYXNzZXJ0cyBoZXJl
IGFzIHRoZXJlIGFyZSBmb3IgdGhlIG90aGVyIGNhbGxiYWNrcy4gVGhpcyBpcyBkdWUgdG8gdGhl
CiAgICAgLy8gZmFjdCB0aGF0IHRoaXMgImNhbGxiYWNrIiBpcyBzZW50IHdoZW4gc3RhcnRpbmcg
ZXZlcnkgbG9hZCwgYW5kIHRoZSBzdGF0ZSBvZiBjYWxsYmFjawpAQCAtNTY0LDYgKzU2NCw4IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBu
ZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAgICAgLy8gY2FsbGJhY2tzIGlzIG1lYW50IHRvIHBy
ZXZlbnQuCiAgICAgQVNTRVJUKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKTsKIAorICAgIEFTU0VSVChz
aG91bGRDb250aW51ZSAhPSBTaG91bGRDb250aW51ZTo6Tm8pOworCiAgICAgYm9vbCBkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZSA9ICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpOwogICAgIGlm
ICghZnJhbWVMb2FkZXIoKS0+Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1AobmV3UmVxdWVz
dC51cmwoKSwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpKSB7CiAgICAgICAgIGNhbmNlbE1h
aW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobmV3UmVxdWVzdCkp
OwpAQCAtNjMwLDIxICs2MzIsMTYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKIAogICAgIHNl
dFJlcXVlc3QobmV3UmVxdWVzdCk7CiAKLSAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSdkIHN0b3Ag
dGhlIEkvTyB1bnRpbCB3ZSBoZWFyIGJhY2sgZnJvbSB0aGUgbmF2aWdhdGlvbiBwb2xpY3kgZGVs
ZWdhdGUKLSAgICAvLyBsaXN0ZW5lci4gQnV0IHRoZXJlJ3Mgbm8gd2F5IHRvIGRvIHRoYXQgaW4g
cHJhY3RpY2UuIFNvIGluc3RlYWQgd2UgY2FuY2VsIGxhdGVyIGlmIHRoZQotICAgIC8vIGxpc3Rl
bmVyIHRlbGxzIHVzIHRvLiBJbiBwcmFjdGljZSB0aGF0IG1lYW5zIHRoZSBuYXZpZ2F0aW9uIHBv
bGljeSBuZWVkcyB0byBiZSBkZWNpZGVkCi0gICAgLy8gc3luY2hyb25vdXNseSBmb3IgdGhlc2Ug
cmVkaXJlY3QgY2FzZXMuCi0gICAgaWYgKCFkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSkKKyAg
ICBpZiAoIWRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICYmIHNob3VsZENvbnRpbnVlICE9IFNo
b3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAKLSAgICBBU1NFUlQoIW1fd2FpdGluZ0Zvck5h
dmlnYXRpb25Qb2xpY3kpOwotICAgIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgPSB0cnVl
OwotICAgIGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xp
Y3koUmVzb3VyY2VSZXF1ZXN0KG5ld1JlcXVlc3QpLCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIEZvcm1TdGF0ZSosIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSBtdXRhYmxlIHsK
KyAgICBhdXRvIG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGb3JtU3RhdGUq
LCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgbXV0YWJsZSB7CiAgICAgICAgIG1fd2Fp
dGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgPSBmYWxzZTsKICAgICAgICAgc3dpdGNoIChzaG91bGRD
b250aW51ZSkgewogICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uOgot
ICAgICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgICAgICAgICAvLyBGSVhNRTogU2V0dXAgdGhp
cyBwYWdlIGZvciBzdXNwZW5zaW9uIChlLmcuIFBhZ2UgQ2FjaGUpIGhlcmUuCisgICAgICAgICAg
ICAvLyBXZSBoYW5kbGUgc3VzcGVuc2lvbiBieSBuYXZpZ2F0aW5nIGZvcndhcmQgdG8gYWJvdXQ6
YmxhbmssIHdoaWNoIGxlYXZlcyB1cyBzZXR1cCB0byBuYXZpZ2F0ZSBiYWNrIHRvIHJlc3VtZS4K
KyAgICAgICAgICAgIHJlcXVlc3QgPSB7IGJsYW5rVVJMKCkgfTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpObzoKICAgICAgICAgICAgIHN0b3BMb2Fk
aW5nRm9yUG9saWN5Q2hhbmdlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTY1Myw3ICs2NTAs
MTcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKICAgICAgICAgfQogCiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwotICAgIH0pOworICAgIH07CisKKyAgICBB
U1NFUlQoIW1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kpOworICAgIG1fd2FpdGluZ0Zvck5h
dmlnYXRpb25Qb2xpY3kgPSB0cnVlOworCisgICAgaWYgKHNob3VsZENvbnRpbnVlID09IFNob3Vs
ZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uKSB7CisgICAgICAgIG5hdmlnYXRpb25Qb2xpY3lDb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpLCBudWxscHRyLCBzaG91bGRDb250aW51
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lD
aGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChuZXdSZXF1ZXN0
KSwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIFdURk1vdmUobmF2aWdhdGlvblBvbGljeUNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIGJvb2wgRG9jdW1lbnRMb2FkZXI6OnRyeUxvYWRpbmdS
ZXF1ZXN0RnJvbUFwcGxpY2F0aW9uQ2FjaGUoKQpAQCAtMTY1NSw4ICsxNjYyLDEwIEBAIGJvb2wg
RG9jdW1lbnRMb2FkZXI6Om1heWJlTG9hZEVtcHR5KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKK3ZvaWQgRG9j
dW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZShTaG91bGRDb250aW51ZSBzaG91
bGRDb250aW51ZSkKIHsKKyAgICBBU1NFUlQoc2hvdWxkQ29udGludWUgIT0gU2hvdWxkQ29udGlu
dWU6Ok5vKTsKKwogICAgIG1fbWFpbkRvY3VtZW50RXJyb3IgPSBSZXNvdXJjZUVycm9yKCk7CiAg
ICAgdGltaW5nKCkubWFya1N0YXJ0VGltZUFuZEZldGNoU3RhcnQoKTsKICAgICBBU1NFUlQoIW1f
bWFpblJlc291cmNlKTsKQEAgLTE2ODEsNyArMTY5MCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpCiAgICAgQVNTRVJUKHRpbWluZygpLnN0YXJ0VGlt
ZSgpKTsKICAgICBBU1NFUlQodGltaW5nKCkuZmV0Y2hTdGFydCgpKTsKIAotICAgIHdpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobV9yZXF1ZXN0KSwgUmVzb3VyY2VSZXNwb25zZSgpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkgbXV0YWJsZSB7CisgICAgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCht
X3JlcXVlc3QpLCBSZXNvdXJjZVJlc3BvbnNlKCksIHNob3VsZENvbnRpbnVlLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkg
bXV0YWJsZSB7CiAgICAgICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CiAKICAgICAgICAgLy8gd2ls
bFNlbmRSZXF1ZXN0KCkgbWF5IGxlYWQgdG8gb3VyIEZyYW1lIGJlaW5nIGRldGFjaGVkIG9yIGNh
bmNlbGxpbmcgdGhlIGxvYWQgdmlhIG51bGxpbmcgdGhlIFJlc291cmNlUmVxdWVzdC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNzBhMWEzZTllYzg0N2JiM2YyM2Jj
MWY1OTgwMDhhNGU1NGFlMzk1NS4uMTgwOTRlYzcxYTUyMzY5YjA1MmZlZmUxOTVmMDhlZGJlMzU1
NjM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTg0LDYgKzg0
LDggQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBTdWJzdGl0dXRlUmVzb3VyY2U7CiAKK2VudW0gY2xhc3MgU2hvdWxkQ29udGludWU7CisKIHVz
aW5nIFJlc291cmNlTG9hZGVyTWFwID0gSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBSZWZQdHI8UmVz
b3VyY2VMb2FkZXI+PjsKIAogZW51bSBjbGFzcyBBdXRvcGxheVBvbGljeSB7CkBAIC0yMzcsNyAr
MjM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKICAgICB2
b2lkIHNldE1haW5SZXNvdXJjZURhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGlj
eSk7CiAKLSAgICB2b2lkIHN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpOworICAgIHZvaWQgc3Rh
cnRMb2FkaW5nTWFpblJlc291cmNlKFNob3VsZENvbnRpbnVlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAg
IHZvaWQgd2lsbENvbnRpbnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAKQEAgLTM1MSw3ICszNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y2xlYXJBcmNoaXZlUmVzb3VyY2VzKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOworICAgIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgU2hvdWxk
Q29udGludWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsK
ICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZygpOwogICAgIHZvaWQgbWFpblJlY2VpdmVkRXJyb3Io
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZmUwNTU4
ZGE0ZThjNzFjMTVjYTg4MTk4NmYwMjA1MzRjMTE0M2IxNy4uYmQ2M2QwYjliNzMwY2IzOWE2ZGNi
MjRlMTZmOWRjMDMyNDJhNzBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiAgICAgLy8gVGhp
cyBzb21ld2hhdCBvZGQgc2V0IG9mIHN0ZXBzIGdpdmVzIHRoZSBmcmFtZSBhbiBpbml0aWFsIGVt
cHR5IGRvY3VtZW50LgogICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG1fY2xpZW50LmNyZWF0
ZURvY3VtZW50TG9hZGVyKFJlc291cmNlUmVxdWVzdChVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0
eVN0cmluZygpKSksIFN1YnN0aXR1dGVEYXRhKCkpLnB0cigpKTsKICAgICBzZXRQcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwotICAgIG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCk7CisgICAg
bV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2UoU2hv
dWxkQ29udGludWU6Olllcyk7CiAKICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAg
ICAgbV9mcmFtZS5kb2N1bWVudCgpLT5jYW5jZWxQYXJzaW5nKCk7CkBAIC0zMjMxLDcgKzMyMzEs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3ko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgICAgICBkaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudC5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
OjpwYWdlQ2FjaGVLZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXRyaWV2YWxLZXkoKSwg
RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRGYWlsLCBTaG91bGRTYW1wbGU6Olllcyk7CiAgICAgfQog
Ci0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPiBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlz
XSB7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4gY29tcGxldGlvbkhhbmRsZXIg
PSBbdGhpcywgc2hvdWxkQ29udGludWVdIHsKICAgICAgICAgaWYgKCFtX3Byb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMzI1MSw3ICsz
MjUxLDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBv
bGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIG1fbG9hZGluZ0Zyb21DYWNoZWRQYWdlID0gZmFsc2U7Ci0gICAgICAgIG1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCk7CisKKyAgICAg
ICAgLy8gV2UgaGFuZGxlIHN1c3BlbnNpb24gYnkgbmF2aWdhdGluZyBmb3J3YXJkIHRvIGFib3V0
OmJsYW5rLCB3aGljaCBsZWF2ZXMgdXMgc2V0dXAgdG8gbmF2aWdhdGUgYmFjayB0byByZXN1bWUu
CisgICAgICAgIGlmIChzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVu
c2lvbikKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+d2lsbENvbnRp
bnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3QoeyBibGFua1VSTCgpIH0pOworCisgICAg
ICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNl
KHNob3VsZENvbnRpbnVlKTsKICAgICB9OwogICAgIAogICAgIGlmICghZm9ybVN0YXRlKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDYzZTRjOGUxYzM4MzI0YzhkYTMxOTRiOTNjMzEz
MzliY2NhY2ZlMzIuLjQ1NTY2YWM2NjU2OTg2YzM1ZjY0OTYwYjFjMTE4NTI2Mjk0MDZmNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC02Miw2ICs2Miw3IEBAIGV4dGVybiAiQyIgewog
ICAgIE0oUHJpbnRpbmcpIFwKICAgICBNKFByb2Nlc3MpIFwKICAgICBNKFByb2Nlc3NTdXNwZW5z
aW9uKSBcCisgICAgTShQcm9jZXNzU3dhcHBpbmcpIFwKICAgICBNKFJlbW90ZUxheWVyVHJlZSkg
XAogICAgIE0oUmVzaXplKSBcCiAgICAgTShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IDQz
MWUzYzE0YTI0OTUzNjc2ZTM5MWY0NTQyYWY4NmMyNjI2ZDlmNzUuLjFhY2Q1ZGRjYTVlODlhNTMx
MTI4MTg3N2JmMDkwNWVhOGExN2IyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0xMDMsNCArMTAzLDkgQEAgdWludDY0X3QgV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbTo6aGlnaGVzdFVzZWRJdGVtSUQoKQogICAgIHJldHVybiBoaWdo
ZXN0SXRlbUlEOwogfQogCit2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldFN1c3BlbmRl
ZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5JiBwYWdlKQoreworICAgIG1fc3VzcGVuZGVkUGFnZSA9
ICZwYWdlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAppbmRleCBlNGJkNTA3MmQxYzIzYTZkNGJlYzFm
N2I3MDJlNzZiOGY5OTEyM2EwLi40ZWEyY2E3MDEwNjVjMTBjZTdmMDExMmQ2NzYzNjFjYTE5NTZk
OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJ
dGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5o
CkBAIC00MSw2ICs0MSw4IEBAIGNsYXNzIEVuY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CitjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CisKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCYWNrRm9yd2Fy
ZExpc3RJdGVtPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7
CkBAIC02Myw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICBWaWV3U25hcHNob3QqIHNuYXBzaG90KCkg
Y29uc3QgeyByZXR1cm4gbV9pdGVtU3RhdGUuc25hcHNob3QuZ2V0KCk7IH0KICAgICB2b2lkIHNl
dFNuYXBzaG90KFJlZlB0cjxWaWV3U25hcHNob3Q+JiYgc25hcHNob3QpIHsgbV9pdGVtU3RhdGUu
c25hcHNob3QgPSBXVEZNb3ZlKHNuYXBzaG90KTsgfQogI2VuZGlmCisgICAgdm9pZCBzZXRTdXNw
ZW5kZWRQYWdlKFN1c3BlbmRlZFBhZ2VQcm94eSYpOwogCiAgICAgc3RhdGljIHVpbnQ2NF90IGhp
Z2hlc3RVc2VkSXRlbUlEKCk7CiAKQEAgLTcxLDYgKzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIEJh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBtX2l0ZW1TdGF0ZTsKICAgICB1aW50NjRfdCBtX3BhZ2VJ
RDsKKyAgICBTdXNwZW5kZWRQYWdlUHJveHkqIG1fc3VzcGVuZGVkUGFnZSB7IG51bGxwdHIgfTsK
IH07CiAKIHR5cGVkZWYgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gQmFja0Zv
cndhcmRMaXN0SXRlbVZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5k
ZWRQYWdlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0NjBmNDQ3ZTExZWYzZjgzZDQ0ZmMzYzI2ZmUz
YjJmNWVmYmU4OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgorCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CisjaW5jbHVkZSA8d3RmL0RlYnVnVXRpbGl0aWVzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CisjaWYgIUxPR19ESVNBQkxFRAorc3RhdGljIGNvbnN0IEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZl
cmVuY2U+JiBtZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4+IG1lc3NhZ2VO
YW1lczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiQmFj
a0ZvcndhcmRBZGRJdGVtIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkNsZWFy
QWxsRWRpdENvbW1hbmRzIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENo
YW5nZUNvbnRlbnRTaXplIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENo
YW5nZU1haW5Eb2N1bWVudCIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRD
aGFuZ2VQcm9ncmVzcyIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDb21t
aXRMb2FkRm9yRnJhbWUiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRGVz
dHJveU5hdmlnYXRpb24iKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFk
ZCgiRGlkRmluaXNoUHJvZ3Jlc3MiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgi
RGlkRmlyc3RMYXlvdXRGb3JGcmFtZSIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KCJEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSIpOworICAgICAgICBtZXNz
YWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSIpOworICAg
ICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRSZWFjaExheW91dE1pbGVzdG9uZSIpOwor
ICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTYXZlVG9QYWdlQ2FjaGUiKTsKKyAg
ICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU3RhcnRQcm9ncmVzcyIpOworICAgICAg
ICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
Iik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkVkaXRvclN0YXRlQ2hhbmdlZCIp
OworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5k
Q29sb3JEaWRDaGFuZ2UiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0UmVu
ZGVyVHJlZVNpemUiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0U3RhdHVz
VGV4dCIpOworICAgIH0pOworCisgICAgcmV0dXJuIG1lc3NhZ2VOYW1lczsKK30KKyNlbmRpZgor
CitTdXNwZW5kZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBh
Z2UsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRl
bSkKKyAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9wcm9jZXNzKCZwcm9jZXNzKQorICAgICwg
bV9iYWNrRm9yd2FyZExpc3RJdGVtKGl0ZW0pCit7CisgICAgbV9iYWNrRm9yd2FyZExpc3RJdGVt
LT5zZXRTdXNwZW5kZWRQYWdlKCp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3BhZ2UucGFnZUlEKCkpOworfQorCitT
dXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJveHkoKQoreworICAgIGlmIChtX3By
b2Nlc3MpCisgICAgICAgIG1fcHJvY2Vzcy0+c3VzcGVuZGVkUGFnZVdhc0Rlc3Ryb3llZCgqdGhp
cyk7Cit9CisKK3ZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojp3ZWJQcm9jZXNzRGlkQ2xvc2UoV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQoreworICAgIEFTU0VSVF9VTlVTRUQocHJvY2VzcywgJnBy
b2Nlc3MgPT0gbV9wcm9jZXNzKTsKKyAgICBtX3Byb2Nlc3MgPSBudWxscHRyOworCisgICAgbV9w
YWdlLnN1c3BlbmRlZFBhZ2VQcm9jZXNzQ2xvc2VkKCp0aGlzKTsKK30KKwordm9pZCBTdXNwZW5k
ZWRQYWdlUHJveHk6OmRpZEZpbmlzaExvYWQoKQoreworICAgIEFTU0VSVChtX3Byb2Nlc3MpOwor
ICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkgJXMgZnJvbSBwcm9j
ZXNzICVpIGZpbmlzaGVkIHRyYW5zaXRpb24gdG8gc3VzcGVuZGVkIiwgbG9nZ2luZ1N0cmluZygp
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworCisgICAgbV9maW5pc2hlZFN1c3Bl
bmRpbmcgPSB0cnVlOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpVcGRhdGVBY3RpdmVQYWdlcygpLCAwKTsKK30KKwordm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6
OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBBU1NFUlQoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKworICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9h
ZEZvckZyYW1lOjpuYW1lKCkpIHsKKyAgICAgICAgZGlkRmluaXNoTG9hZCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2lmICFMT0dfRElTQUJMRUQKKyAgICBpZiAobWVzc2FnZU5hbWVzVG9J
Z25vcmVXaGlsZVN1c3BlbmRlZCgpLmNvbnRhaW5zKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpCisg
ICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkgcmVjZWl2ZWQg
dW5leHBlY3RlZCBXZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwgZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpLnRvU3RyaW5nKCkuZGF0YSgpKTsKKyNlbmRpZgorfQorCisjaWYgIUxPR19ESVNBQkxFRAor
Y29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5nKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZGVidWdTdHJpbmcoIigiLCBTdHJpbmc6OmZvcm1hdCgiJXAiLCB0aGlzKSwg
InBhZ2UgSUQgIiwgU3RyaW5nOjpudW1iZXIobV9wYWdlLnBhZ2VJRCgpKSwgIiwgbV9maW5pc2hl
ZFN1c3BlbmRpbmcgIiwgU3RyaW5nOjpudW1iZXIobV9maW5pc2hlZFN1c3BlbmRpbmcpLCAiKSIp
OworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDljYmMwNzVjNDY4NDVl
NTljOGNhNzY0NDZjOTUzYzE3MzIxMWIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5OworCitjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHkgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTdXNwZW5kZWRQYWdlUHJveHk+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFN1c3BlbmRl
ZFBhZ2VQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3VzcGVuZGVkUGFnZVByb3h5KHBhZ2UsIHByb2Nlc3MsIGl0ZW0p
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5TdXNwZW5kZWRQYWdlUHJveHkoKTsKKworICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisK
KyAgICBXZWJQYWdlUHJveHkmIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KKyAgICBX
ZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3M7IH0KKyAg
ICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrRm9y
d2FyZExpc3RJdGVtOyB9CisKKyAgICBib29sIGZpbmlzaGVkU3VzcGVuZGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fZmluaXNoZWRTdXNwZW5kaW5nOyB9CisKKyAgICB2b2lkIHdlYlByb2Nlc3NEaWRD
bG9zZShXZWJQcm9jZXNzUHJveHkmKTsKKworI2lmICFMT0dfRElTQUJMRUQKKyAgICBjb25zdCBj
aGFyKiBsb2dnaW5nU3RyaW5nKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBTdXNw
ZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYpOworCisgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CisKKyAgICBXZWJQ
YWdlUHJveHkmIG1fcGFnZTsKKyAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2VzczsKKyAgICBS
ZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gbV9iYWNrRm9yd2FyZExpc3RJdGVtOworCisgICAg
Ym9vbCBtX2ZpbmlzaGVkU3VzcGVuZGluZyB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDVj
YTFiZDI4MDI0YzNmNmQ3MzBhMzJhNjJmMmY3OWExOGU1MzM1NWIuLjhmMzc0MGU5NjFmM2NiNTcx
OWRmMGNjMjQzMjMyZTFjMGQ2YmUyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtNjQyLDcgKzY0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVT
eW5jaHJvbm91c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoKQogewogICAgIGF1dG8gcHJv
Y2VzcyA9IG1ha2VSZWYobV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZU5ld1dlYlByb2Nl
c3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQobV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpKSk7
Ci0gICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSk7CisgICAgcmVhdHRh
Y2hUb1dlYlByb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSwgZmFsc2UpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6YXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MpCkBAIC02NTMsMTcgKzY1Myw0NCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0
YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Mp
CiAKICAgICAvLyBGSVhNRTogdGhpcyBpcyB0byBmaXggdGhlIEFTU0VSVChpc1ZhbGlkKCkpIGlu
c2lkZSByZWF0dGFjaFRvV2ViUHJvY2Vzcywgc29tZSBvdGhlciB3YXkgdG8gZml4IHRoaXMgaXMg
bmVlZGVkLgogICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNz
KFdURk1vdmUocHJvY2VzcykpOworICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKFdURk1vdmUocHJv
Y2VzcyksIHRydWUpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nl
c3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQorU3VzcGVuZGVkUGFnZVByb3h5KiBX
ZWJQYWdlUHJveHk6Om1heWJlQ3JlYXRlU3VzcGVuZGVkUGFnZShXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MpCit7CisgICAgQVNTRVJUKCFtX3N1c3BlbmRlZFBhZ2UgfHwgbV9zdXNwZW5kZWRQYWdl
LT5wcm9jZXNzKCkgIT0gJnByb2Nlc3MpOworCisgICAgYXV0byogY3VycmVudEl0ZW0gPSBtX2Jh
Y2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKTsKKyAgICBpZiAoIWN1cnJlbnRJdGVtKSB7Cisg
ICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgdW5h
YmxlIHRvIGNyZWF0ZSBzdXNwZW5kZWQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgLSBObyBjdXJy
ZW50IGJhY2svZm9yd2FyZCBpdGVtIiwgcGFnZUlEKCksIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZp
ZXIoKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIG1fc3VzcGVuZGVk
UGFnZSA9IFN1c3BlbmRlZFBhZ2VQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzLCAqY3VycmVu
dEl0ZW0pOworCisgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1
NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9m
b3J3YXJkIGl0ZW0gJSIgUFJJdTY0LCBwYWdlSUQoKSwgbV9zdXNwZW5kZWRQYWdlLT5sb2dnaW5n
U3RyaW5nKCksIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgY3VycmVudEl0ZW0tPml0ZW1J
RCgpKTsKKworICAgIHJldHVybiBtX3N1c3BlbmRlZFBhZ2UuZ2V0KCk7Cit9CisKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpzdXNwZW5kZWRQYWdlUHJvY2Vzc0Nsb3NlZChTdXNwZW5kZWRQYWdlUHJveHkm
IHBhZ2UpCit7CisgICAgQVNTRVJUX1VOVVNFRChwYWdlLCAmcGFnZSA9PSBtX3N1c3BlbmRlZFBh
Z2UuZ2V0KCkpOworICAgIG1fc3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIGJvb2wgc3VzcGVuZEluT2xkUHJvY2VzcykKIHsKICAgICBBU1NFUlQoIW1faXNDbG9z
ZWQpOwogICAgIEFTU0VSVCghaXNWYWxpZCgpKTsKIAogICAgIG1faXNWYWxpZCA9IHRydWU7Ci0g
ICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBtX3BhZ2VJRCk7Ci0gICAgbV9wcm9j
ZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CisKKyAgICBpZiAoIXN1c3BlbmRJbk9sZFByb2Nl
c3MpIHsKKyAgICAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBtX3BhZ2VJRCk7
CisgICAgICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIH0gZWxzZQor
ICAgICAgICBtX3Byb2Nlc3MtPnN1c3BlbmRXZWJQYWdlUHJveHkoKnRoaXMpOwogCiAgICAgbV9w
cm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKTsKIApAQCAtMjM1NCw3ICsyMzgxLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwg
V2ViRnJhbWVQcm94eSYgZnIKICAgICAgICAgICAgIGF1dG8gcHJvcG9zZWRQcm9jZXNzID0gcHJv
Y2VzcygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZpZ2F0
aW9uLCBhY3Rpb24pOwogCiAgICAgICAgICAgICBpZiAocHJvcG9zZWRQcm9jZXNzLnB0cigpICE9
ICZwcm9jZXNzKCkpIHsKLSAgICAgICAgICAgICAgICBMT0coTG9hZGluZywgIlN3aXRjaGluZyBm
cm9tIHByb2Nlc3MgJWkgdG8gbmV3IHByb2Nlc3MgZm9yIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIg
JyVzJyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBu
YXZpZ2F0aW9uLT5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAg
ICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlN3aXRjaGluZyBmcm9tIHByb2Nlc3MgJWkgdG8gbmV3
IHByb2Nlc3MgZm9yIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyIsIHByb2Nlc3NJZGVudGlm
aWVyKCksIG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLT5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlv
biA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLCBwcm9wb3NlZFByb2Nlc3MgPSBXVEZNb3ZlKHByb3Bv
c2VkUHJvY2VzcyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlTmF2
aWdhdGlvbkluTmV3UHJvY2VzcyhuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKHByb3Bvc2VkUHJv
Y2VzcykpOwpAQCAtMzU3MSw2ICszNTk4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmkKIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKKyAg
ICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lIC0gV2Vi
UGFnZVByb3h5ICVwIHdpdGggbmF2aWdhdGlvbklEICVsbHUgZGlkRmluaXNoTG9hZCIsIHRoaXMs
IG5hdmlnYXRpb25JRCk7CisKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3Bh
Z2VDbGllbnQpOwogCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZy
YW1lKGZyYW1lSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5
NGI5OGJjZmE4NzQzOGRlMzhhNDVhYjBkNzFhZGNlMWQ4NTk3MWFlLi4xNTFjNTc2OWMxMDRhZDFk
YTBjZmFmMWU2ZmVkNzc2ZjIzNDJmN2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIK
ICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFw
LmgiCisjaW5jbHVkZSAiU3VzcGVuZGVkUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiU3lzdGVtUHJl
dmlld0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uaCIK
QEAgLTEyODYsNiArMTI4Nyw5IEBAIHB1YmxpYzoKIAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUg
cHJlZmVyZW5jZXNTdG9yZSgpIGNvbnN0OwogCisgICAgU3VzcGVuZGVkUGFnZVByb3h5KiBtYXli
ZUNyZWF0ZVN1c3BlbmRlZFBhZ2UoV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9pZCBzdXNwZW5k
ZWRQYWdlUHJvY2Vzc0Nsb3NlZChTdXNwZW5kZWRQYWdlUHJveHkmKTsKKwogcHJpdmF0ZToKICAg
ICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBh
Z2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1J
bml0aWFsaXplKCk7CkBAIC0xNDM2LDcgKzE0NDAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBy
ZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogICAgIHZvaWQgYXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdh
dGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmKTsKLSAgICB2b2lkIHJlYXR0YWNoVG9XZWJQcm9j
ZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYpOworICAgIHZvaWQgcmVhdHRhY2hUb1dlYlByb2Nl
c3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgYm9vbCBzdXNwZW5kSW5PbGRQcm9jZXNzKTsKIAog
ICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlYXR0YWNoVG9XZWJQcm9jZXNzRm9yUmVsb2Fk
KCk7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gcmVhdHRhY2hUb1dlYlByb2Nlc3NXaXRo
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CkBAIC0yMTI5LDYgKzIxMzMsMTEgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxNb25vdG9uaWNUaW1lPiBtX3BhZ2VM
b2FkU3RhcnQ7CisKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBtb3JlIHRoYW4gb25lIHN1c3BlbmRl
ZCBwYWdlIHBlciBXZWJQYWdlUHJveHksCisgICAgLy8gYW5kIGhhdmUgYSBnbG9iYWwgY29sbGVj
dGlvbiBvZiB0aGVtIHBlciBwcm9jZXNzIHBvb2wKKyAgICAvLyAoZS5nLiBmb3IgdGhhdCBwcm9j
ZXNzIHBvb2wncyBwYWdlIGNhY2hlKQorICAgIFJlZlB0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1f
c3VzcGVuZGVkUGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZWM2YTQxMDQ5ZWIwOWZiMjNi
NzljZmRiZWMyNmNhZTRjOWFhYjk1NS4uYmY1ZmU0YTUyZDllYzc5YTEyMDI5MzgyNmQxMzU5OTI1
ODkwNDAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsdWdp
bkluZm9TdG9yZS5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiU3VzcGVuZGVkUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNs
dWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVUlNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlci5oIgpAQCAtMzk1LDYgKzM5NiwyNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRk
RXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdWludDY0X3QgcGFnZUlEKQog
ICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiB9CiAKK3ZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpzdXNwZW5kV2ViUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkK
K3sKKyAgICBpZiAoYXV0byogc3VzcGVuZGVkUGFnZSA9IHdlYlBhZ2UubWF5YmVDcmVhdGVTdXNw
ZW5kZWRQYWdlKCp0aGlzKSkgeworICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiV2ViUHJv
Y2Vzc1Byb3h5IHBpZCAlaSBhZGRlZCBzdXNwZW5kZWQgcGFnZSAlcyIsIHByb2Nlc3NJZGVudGlm
aWVyKCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSk7CisgICAgICAgIG1fc3VzcGVu
ZGVkUGFnZU1hcC5zZXQod2ViUGFnZS5wYWdlSUQoKSwgc3VzcGVuZGVkUGFnZSk7CisgICAgfQor
CisgICAgcmVtb3ZlV2ViUGFnZSh3ZWJQYWdlLCB3ZWJQYWdlLnBhZ2VJRCgpKTsKKyAgICByZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCB3ZWJQYWdlLnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OnN1
c3BlbmRlZFBhZ2VXYXNEZXN0cm95ZWQoU3VzcGVuZGVkUGFnZVByb3h5JiBzdXNwZW5kZWRQYWdl
KQoreworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQcm9jZXNzUHJveHkgcGlkICVpIHN1
c3BlbmRlZCBwYWdlICVzIHdhcyBkZXN0cm95ZWQiLCBwcm9jZXNzSWRlbnRpZmllcigpLCBzdXNw
ZW5kZWRQYWdlLmxvZ2dpbmdTdHJpbmcoKSk7CisKKyAgICBBU1NFUlQobV9zdXNwZW5kZWRQYWdl
TWFwLmNvbnRhaW5zKHN1c3BlbmRlZFBhZ2UucGFnZSgpLnBhZ2VJRCgpKSk7CisgICAgbV9zdXNw
ZW5kZWRQYWdlTWFwLnJlbW92ZShzdXNwZW5kZWRQYWdlLnBhZ2UoKS5wYWdlSUQoKSk7CisKKyAg
ICBtYXliZVNodXREb3duKCk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQ
YWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdWludDY0X3QgcGFnZUlEKQogewogICAgIGF1dG8q
IHJlbW92ZWRQYWdlID0gbV9wYWdlTWFwLnRha2UocGFnZUlEKTsKQEAgLTQxNCwxMiArNDM2LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQ
YWdlLCB1aW50NjRfdCBwYWdlSUQpCiAgICAgZm9yIChhdXRvIGl0ZW1JRCA6IGl0ZW1JRHNUb1Jl
bW92ZSkKICAgICAgICAgbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLnJlbW92ZShpdGVtSUQpOwog
Ci0gICAgLy8gSWYgdGhpcyB3YXMgdGhlIGxhc3QgV2ViUGFnZSBvcGVuIGluIHRoYXQgd2ViIHBy
b2Nlc3MsIGFuZCB3ZSBoYXZlIG5vIG90aGVyIHJlYXNvbiB0byBrZWVwIGl0IGFsaXZlLCBsZXQg
aXQgZ28uCi0gICAgLy8gV2Ugb25seSBhbGxvdyB0aGlzIHdoZW4gdXNpbmcgYSBuZXR3b3JrIHBy
b2Nlc3MsIGFzIG90aGVyd2lzZSB0aGUgV2ViUHJvY2VzcyBuZWVkcyB0byBwcmVzZXJ2ZSBpdHMg
c2Vzc2lvbiBzdGF0ZS4KLSAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6VGVybWluYXRlZCB8fCAh
Y2FuVGVybWluYXRlQ2hpbGRQcm9jZXNzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNodXRE
b3duKCk7CisgICAgbWF5YmVTaHV0RG93bigpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
YWRkVmlzaXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlJiBzdG9yZSkKQEAgLTYzNyw2ICs2
NTQsMTUgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGUKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIC8vIFdlYlBhZ2VQcm94eSBtZXNzYWdlcyBhcmUgbm9ybWFsbHkgaGFuZGxlZCBieSB0
aGUgbm9ybWFsICJkaXNwYXRjaE1lc3NhZ2UiIHVwIGFib3ZlLgorICAgIC8vIElmIHRoZXkgd2Vy
ZSBub3QgaGFuZGxlZCB0aGVyZSwgdGhlbiB0aGV5IG1heSBwb3RlbnRpYWxseSBiZSBoYW5kbGVk
IGJ5IFN1c3BlbmRlZFBhZ2VQcm94eSBvYmplY3RzLgorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN1c3BlbmRlZFBhZ2UgPSBtX3N1c3BlbmRlZFBh
Z2VNYXAuZ2V0KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkgeworICAgICAgICAgICAgc3VzcGVu
ZGVkUGFnZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBGSVhNRTogQWRkIHVuaGFu
ZGxlZCBtZXNzYWdlIGxvZ2dpbmcuCiB9CiAKQEAgLTY4MCw2ICs3MDYsMTAgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgZm9yIChhdXRvJiBw
YWdlIDogcGFnZXMpCiAgICAgICAgIHBhZ2UtPnByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uOjpDcmFzaCk7CiAKKyAgICBmb3IgKGF1dG8qIHN1c3BlbmRlZFBhZ2Ug
OiBjb3B5VG9WZWN0b3JPZjxTdXNwZW5kZWRQYWdlUHJveHkqPihtX3N1c3BlbmRlZFBhZ2VNYXAu
dmFsdWVzKCkpKQorICAgICAgICBzdXNwZW5kZWRQYWdlLT53ZWJQcm9jZXNzRGlkQ2xvc2UoKnRo
aXMpOworCisgICAgbV9zdXNwZW5kZWRQYWdlTWFwLmNsZWFyKCk7CiB9CiAKIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKQEAgLTgyNyw5ICs4NTcsMTcgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmRpZERlc3Ryb3lVc2VyR2VzdHVyZVRva2VuKHVpbnQ2NF90IGlkZW50aWZp
ZXIpCiAgICAgbV91c2VySW5pdGlhdGVkQWN0aW9uTWFwLnJlbW92ZShpZGVudGlmaWVyKTsKIH0K
IAordm9pZCBXZWJQcm9jZXNzUHJveHk6Om1heWJlU2h1dERvd24oKQoreworICAgIGlmIChzdGF0
ZSgpID09IFN0YXRlOjpUZXJtaW5hdGVkIHx8ICFjYW5UZXJtaW5hdGVDaGlsZFByb2Nlc3MoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgc2h1dERvd24oKTsKK30KKwogYm9vbCBXZWJQcm9jZXNz
UHJveHk6OmNhblRlcm1pbmF0ZUNoaWxkUHJvY2VzcygpCiB7Ci0gICAgaWYgKCFtX3BhZ2VNYXAu
aXNFbXB0eSgpKQorICAgIGlmICghbV9wYWdlTWFwLmlzRW1wdHkoKSB8fCAhbV9zdXNwZW5kZWRQ
YWdlTWFwLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX3By
b2Nlc3NQb29sLT5zaG91bGRUZXJtaW5hdGUodGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDgwYWI4YTZiNTk2NTdlMmY4N2VlNzE3NjI4ZDAwMDU2
NzE1MTk3NGEuLmM2NzcwZWE4NTQ4YmRmZjVjNjI5ZjQzZDYzZDAzMmExNzAxNWI1YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC02Niw2ICs2Niw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94eTsKIGNsYXNzIE9i
akNPYmplY3RHcmFwaDsKIGNsYXNzIFBhZ2VDbGllbnQ7CitjbGFzcyBTdXNwZW5kZWRQYWdlUHJv
eHk7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OwogY2xhc3MgVmlzaXRlZExp
bmtTdG9yZTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CkBAIC0yMDgsNiArMjA5LDkg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKCkgeyBtX2hhc0Nv
bW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMgPSB0cnVlOyB9CiAgICAgYm9vbCBoYXNDb21taXR0
ZWRBbnlQcm92aXNpb25hbExvYWRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDb21taXR0ZWRBbnlQ
cm92aXNpb25hbExvYWRzOyB9CiAKKyAgICB2b2lkIHN1c3BlbmRXZWJQYWdlUHJveHkoV2ViUGFn
ZVByb3h5Jik7CisgICAgdm9pZCBzdXNwZW5kZWRQYWdlV2FzRGVzdHJveWVkKFN1c3BlbmRlZFBh
Z2VQcm94eSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUGFn
ZUlEKCk7CiAgICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFT
dG9yZSYpOwpAQCAtMjIxLDYgKzIyNSw3IEBAIHByaXZhdGU6CiAgICAgLy8gQ2FsbGVkIHdoZW4g
dGhlIHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkIG9yIHdlIGtub3cgdGhhdCBpdCB3aWxsIHRlcm1p
bmF0ZSBzb29uLgogICAgIC8vIFdpbGwgcG90ZW50aWFsbHkgY2F1c2UgdGhlIFdlYlByb2Nlc3NQ
cm94eSBvYmplY3QgdG8gYmUgZnJlZWQuCiAgICAgdm9pZCBzaHV0RG93bigpOworICAgIHZvaWQg
bWF5YmVTaHV0RG93bigpOwogCiAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9p
ZCBhZGRPclVwZGF0ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgUGFnZVN0YXRlJik7CkBAIC0yOTgsNiArMzAzLDcgQEAgcHJpdmF0ZToKICAg
ICBIYXNoU2V0PFN0cmluZz4gbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzOwogCiAg
ICAgV2ViUGFnZVByb3h5TWFwIG1fcGFnZU1hcDsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdXNw
ZW5kZWRQYWdlUHJveHkqPiBtX3N1c3BlbmRlZFBhZ2VNYXA7CiAgICAgV2ViRnJhbWVQcm94eU1h
cCBtX2ZyYW1lTWFwOwogICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1NYXAgbV9iYWNrRm9yd2Fy
ZExpc3RJdGVtTWFwOwogICAgIFVzZXJJbml0aWF0ZWRBY3Rpb25NYXAgbV91c2VySW5pdGlhdGVk
QWN0aW9uTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggN2MyZDQ2NTMwMTMwMGM4NWJjZjkzYjM0NWFhOGQ5MmU3ODBmM2U2MC4uYWQx
NTQ3NTkwYzZmZDNhMDg1ZDFkNGVmOWQ2Y2NjOTA1YTM3NjZlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDcwLDYgKzEwNzAsNyBA
QAogCQk1MTVCRTFCNDFENTkxN0ZGMDBERDdDNjggLyogVUlHYW1lcGFkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUFDMUQ1NTVDNTEwMERE
N0M2OCAvKiBVSUdhbWVwYWQuY3BwICovOyB9OwogCQk1MTVCRTFCNTFENTkxN0ZGMDBERDdDNjgg
LyogVUlHYW1lcGFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTVCRTFBRDFENTU1QzUxMDBERDdDNjggLyogVUlHYW1lcGFkLmggKi87IH07CiAJCTUx
NUJFMUI3MUQ1QTk0RkQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlck1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUI2MUQ1QTk0Rjkw
MEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlck1hYy5tbSAqLzsgfTsKKwkJNTE1QzQxNUMyMDdE
N0NBRTAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVDNDE1QTIwN0Q3NEUwMDA3MjZFMDIgLyog
U3VzcGVuZGVkUGFnZVByb3h5LmNwcCAqLzsgfTsKIAkJNTE1RTc3MjcxODNERDZGNjAwMDcyMDNG
IC8qIEFzeW5jUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTVFNzcyNTE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNwcCAq
LzsgfTsKIAkJNTE1RTc3MjgxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3MjYxODNERDZG
NjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oICovOyB9OwogCQk1MTYwQkZFMTEzMzgxREY5MDA5
MTg5OTkgLyogTG9nZ2luZ0ZvdW5kYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwQkZFMDEzMzgxREY5MDA5MTg5OTkgLyogTG9nZ2luZ0Zv
dW5kYXRpb24ubW0gKi87IH07CkBAIC0zNDg2LDYgKzM0ODcsOCBAQAogCQk1MTVCRTFCMDFENTkw
MDY5MDBERDdDNjggLyogR2FtZXBhZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR2FtZXBhZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUx
QjExRDU5MDJCNjAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdhbWVwYWREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE1QkUxQjYxRDVBOTRGOTAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVUlHYW1lcGFkUHJv
dmlkZXJNYWMubW07IHBhdGggPSBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlk
ZXJNYWMubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNTE1QzQxNUEyMDdENzRF
MDAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdXNwZW5kZWRQYWdlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MTVDNDE1QjIwN0Q3NEUxMDA3MjZFMDIgLyogU3VzcGVuZGVkUGFnZVBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1c3BlbmRlZFBhZ2VQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVFNzcyNTE4M0RENkY2MDAwNzIw
M0YgLyogQXN5bmNSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEFzeW5jUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUU3
NzI2MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXN5bmNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNjBCRkUwMTMzODFERjkwMDkxODk5OSAvKiBMb2dnaW5nRm91bmRhdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvZ2dpbmdGb3VuZGF0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI2OSw2ICs3MjcyLDggQEAKIAkJCQk0
MTRERURENTFGOUVERERGMDA0N0M0MEQgLyogU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oICov
LAogCQkJCTUxQTRENUE4MTZDQUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5jcHAg
Ki8sCiAJCQkJNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0Lmgg
Ki8sCisJCQkJNTE1QzQxNUEyMDdENzRFMDAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5j
cHAgKi8sCisJCQkJNTE1QzQxNUIyMDdENzRFMTAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94
eS5oICovLAogCQkJCTMxOEExRjA0MjA0RjQ3NjQwMDM0ODBCQyAvKiBTeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlci5jcHAgKi8sCiAJCQkJMzE1NzEzNUQyMDQwQTlCMjAwODRGOUNGIC8qIFN5c3RlbVBy
ZXZpZXdDb250cm9sbGVyLmggKi8sCiAJCQkJMUFBNDE3QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRl
eHRDaGVja2VyLmggKi8sCkBAIC0xMDg5Myw2ICsxMDg5OCw3IEBACiAJCQkJNTExOEU5QUMxRjI5
NTk3NzAwM0VGOUY1IC8qIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTAwRDZCMTgzMjdDMTIwMDA4N0RENyAvKiBT
dHJpbmdSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk2QkQ4NUUxNTAxOUJDMzAw
NzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxNUM0MTVD
MjA3RDdDQUUwMDcyNkUwMiAvKiBTdXNwZW5kZWRQYWdlUHJveHkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzE4QTFGMDUyMDRGNDc2NDAwMzQ4MEJDIC8qIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxNTcxMzVFMjA0MEE5QjIwMDg0RjlDRiAvKiBTeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMVpaNDE3RUYx
MkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
MWFlM2Q3M2Y5NjljYmNmOWM5NDc4YzY5Y2U3NDA4NmE1MDAwMmUxMy4uOTUzZGE3ZDg1MTM5MWFh
ZTdiMmRiOWM4OTY1ODlkZWE4NzIxNmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU4NjYsNiArNTg2NiwxMSBAQCB2b2lkIFdlYlBhZ2U6
OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWlu
dDY0X3QgdGFzawogICAgIGhhbmRsZXItPnRhc2tEaWRDb21wbGV0ZSh0YXNrSWRlbnRpZmllciwg
ZXJyb3IpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldElzU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVk
KQoreworICAgIG1faXNTdXNwZW5kZWQgPSBzdXNwZW5kZWQ7Cit9CisKICNpZiBIQVZFKENGTkVU
V09SS19TVE9SQUdFX1BBUlRJVElPTklORykKIHN0YXRpYyB1aW50NjRfdCBuZXh0UmVxdWVzdFN0
b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IDRjM2I1OTUxNTE2MjMwYTgxYTI1ODQ3MmE1M2U3Yzk1YzQ4ZTk3
NDAuLmEyOTFiODFjMGMwYmFiNGE3YWE0OWI1OThkMTY1MjVlMTdmYjk0YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwNzIsNiArMTA3Miw4IEBA
IHB1YmxpYzoKIAogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgdXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250
cm9sbGVyLT5pZGVudGlmaWVyKCk7IH0KIAorICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzU3VzcGVuZGVkOyB9CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTEzODgsNiArMTM5
MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1
aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAorICAgIHZvaWQgc2V0SXNTdXNwZW5kZWQoYm9v
bCk7CisKICAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90QXRTaXplKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9w
dGlvbnMpOwogICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUm
LCBTbmFwc2hvdE9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50ID0gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKICNpZiBVU0UoQ0YpCkBAIC0xNzA1LDYgKzE3
MDksNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDcmVkZW50aWFsc01lc3Nl
bmdlcj4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsKICNlbmRpZgogCisgICAgYm9vbCBtX2lzU3Vz
cGVuZGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5k
ZXggZDhmZTRlNWY0NDU0OGVlYTBkMWUyN2Q0NjQwMjNlYTQyYTkxMmQ4MS4uZTBmZjUyMTdlNWQy
ZWIyZGYyYTYzOTI1NzcyYjM0NmVlZjM5ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00OTEsNiArNDkxLDgg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVVJMU2NoZW1lVGFz
a0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNr
SWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgVVJMU2NoZW1lVGFza0Rp
ZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKIAorICAgIFNldElzU3VzcGVuZGVk
KGJvb2wgc3VzcGVuZGVkKQorCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05J
TkcpCiAgICAgU3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3Qg
Y29udGV4dElkKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IGVhNjk1YmI0MmVmYjZkMWQ4MjU0M2Q2N2Q0NWQ0MjIzNWE2
YTllMmMuLmVmYjA3ZTNmYTNiNTAzYzc5NDM4NWZlYzNhZGU3ZTM2YTJiZGVkYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMjgs
NiArMTI4LDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAg
Q2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0SWRlbnRpZmllciBwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIpCiAgICAgTWVz
c2FnZXNBdmFpbGFibGVGb3JQb3J0KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXIgcG9ydCkKIAorICAgIFVwZGF0ZUFjdGl2ZVBhZ2VzKCkKKwogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBTZXRTY3JlZW5Qcm9wZXJ0aWVzKHVpbnQzMl90IHByaW1hcnlTY3JlZW5JRCwgSGFzaE1h
cDx1aW50MzJfdCwgV2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcz4gc2NyZWVuUHJvcGVydGllcykK
ICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggNjg1
MTgzOTNkMGRlNDU2MDY5ZTU0OWNlYzExNjE5MDVlZjdmOTg5ZC4uYTE0NzIwN2M4NzhlYjBkYmQ1
NDVjNjI5NTRjMDRhY2Q2NjFjYzNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0zODcsNyArMzg3LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzOjp1cGRhdGVBY3RpdmVQYWdlcygpCiAgICAgYXV0byBhY3RpdmVQYWdlVVJMcyA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCiAgICAgZm9yIChhdXRvJiBw
YWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChwYWdlLT51c2VzRXBoZW1l
cmFsU2Vzc2lvbigpKQorICAgICAgICBpZiAocGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8
fCBwYWdlLT5pc1N1c3BlbmRlZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
aWYgKE5TVVJMICpvcmlnaW5Bc1VSTCA9IG9yaWdpbigqcGFnZSkpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZThiZDZjNzMyMzkxNjhmNzBiYzRk
NjA4MTNiNTJiMjBjNzRmMmI4Yi4uNjU4NTI4ZGQ3OTk3ZGVkZmMxYTA2OGY1NjAzYWI3NGQ4MmM2
YWUxMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDE4LTA0LTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgU3VzcGVuZGVkUGFnZVByb3h5IHRvIGtlZXAgb2xk
IHdlYiBwcm9jZXNzZXMgYXJvdW5kIGFmdGVyIHRoZWlyIFdlYlBhZ2VQcm94eSBoYXMgYmVlbiBz
d2FwcGVkIHRvIGEgbmV3IG9uZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NDU1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbToKKwogMjAxOC0wNC0xMiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFy
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IC0tYnVpbGQtZGlyZWN0b3J5IGZsYWcgZm9yIHJ1
bi13ZWJraXQtdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IDc3MmJk
YjJmYzgwZmY1NTIxMDI5N2U3MzAzZmIyZjQwMWEzMDdhMDIuLjIyOTljMDViODA3NjE2NmY4MTAx
ZTRiMThlODdjMzUzZjNlMTlkMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpA
QCAtNzUxLDQgKzc1MSw0NCBAQCBURVNUKFByb2Nlc3NTd2FwLCBNYWluRnJhbWVzT25seSkKICAg
ICBFWFBFQ1RfRVEoMXUsIHNlZW5QSURzLnNpemUoKSk7CiB9CiAKK1RFU1QoUHJvY2Vzc1N3YXAs
IE9uZVByZXZpb3VzUHJvY2Vzc1JlbWFpbnMpCit7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5h
dmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vz
c1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlld0NvbmZp
Z3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOworICAgIGF1dG8gaGFu
ZGxlciA9IGFkb3B0TlMoW1tQU09OU2NoZW1lIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdD
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hl
bWU6QCJQU09OIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAInBzb246Ly9ob3N0MS9tYWluLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
ICAgIGRvbmUgPSBmYWxzZTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL2hvc3QyL21haW4uaHRtbCJdXTsK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uOi8v
aG9zdDMvbWFpbi5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7
CisKKyAgICAvLyBOYXZpZ2F0aW9ucyB0byAzIGRpZmZlcmVudCBkb21haW5zLCB3ZSBleHBlY3Qg
dG8gaGF2ZSBzZWVuIDMgZGlmZmVyZW50IFBJRHMKKyAgICBFWFBFQ1RfRVEoM3UsIHNlZW5QSURz
LnNpemUoKSk7CisKKyAgICAvLyBCdXQgb25seSAyIG9mIHRob3NlIHByb2Nlc3NlcyBzaG91bGQg
c3RpbGwgYmUgYWxpdmUKKyAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vz
c0NvdW50XSk7Cit9CisKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337906</attachid>
            <date>2018-04-13 10:31:06 -0700</date>
            <delta_ts>2018-04-13 11:04:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184559-20180413103106.patch</filename>
            <type>text/plain</type>
            <size>50175</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1YzEwMjViZjU2YjFiNmFmODZjYzNh
YWFkNDEyOTdmM2JiMDhjNzUuLmYyNWVmY2QxZjQzMDFjZmIzY2VhYmJiMzc3MDFmY2EwYzM5ZDRk
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDQtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTdXNwZW5kZWRQYWdlUHJveHkgdG8g
a2VlcCBvbGQgd2ViIHByb2Nlc3NlcyBhcm91bmQgYWZ0ZXIgdGhlaXIgV2ViUGFnZVByb3h5IGhh
cyBiZWVuIHN3YXBwZWQgdG8gYSBuZXcgb25lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRGVidWdVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdU
Rjo6ZGVidWdTdHJpbmcpOiBBZGQgYSBkZWJ1ZyB1dGlsaXR5IHRvIGVhc2lseSBjb25zdHJ1Y3Qg
YSAiY29uc3QgY2hhcioiIHRoYXQgaXMgcmVsZWFzZWQgYWZ0ZXIgYSBzcGluIG9mIHRoZSBydW4g
bG9vcC4KKyAgICAgICAgICBUaGlzIGdyZWF0bHkgZWFzZXMgdXNlcyBvdXIgU3RyaW5nIGNsYXNz
ZXMgYW5kIGZ1bmN0aW9ucyBpbnNpZGUgb2YgIiVzIiBzdHlsZSBlbnZpcm9ubWVudHMgbGlrZSBw
cmludGYgYW5kIExPRy4KKwogMjAxOC0wNC0xMiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56
YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBjcmFzaCBob29rIGZ1bmN0
aW9uYWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyODk3OTRkYWQ0OTY2NDIwZjlmZTJmOWJhY2NlYTAzODUy
MjkxZWZhLi41M2I0ZmQyYWMxNmM4ODNlMzlmYjI0NDBmNmZlZDYwODQ2NmFmNjA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTgtMDQtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTdXNwZW5kZWRQYWdlUHJveHkgdG8ga2Vl
cCBvbGQgd2ViIHByb2Nlc3NlcyBhcm91bmQgYWZ0ZXIgdGhlaXIgV2ViUGFnZVByb3h5IGhhcyBi
ZWVuIHN3YXBwZWQgdG8gYSBuZXcgb25lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJIHRlc3QuCisKKyAgICAgICAgV2Vi
Q29yZSBjaGFuZ2VzIHJld29yayB0aGUgbWVhbmluZyBvZiBhICJGb3JTdXNwZW5zaW9uIiBwb2xp
Y3kgdG8gc2ltcGx5IG5hdmlnYXRlIHRoZSBwYWdlIHRvIGFib3V0OmJsYW5rLgorCisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmg6CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSk6CisKIDIwMTgtMDQtMTMgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dlYkNvcmVdIFVz
ZSBAZ2V0QnlJZERpcmVjdFByaXZhdGUgLyBAcHV0QnlJZERpcmVjdFByaXZhdGUgaW4gV2ViQ29y
ZSBKUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBlNDNhOGQyNDA3OGVhYmQyODRhYmJhOTgxODM4NmYyYjVhNmI3MGI4
Li44MWMwYWQzYjRmNTZhOTI2MTU1OTY3NTk5MTI0YWQ1MWI0OTg3YjBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDc2IEBACisyMDE4LTA0LTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBJbnRyb2R1Y2UgU3VzcGVuZGVkUGFnZVByb3h5IHRvIGtlZXAgb2xkIHdl
YiBwcm9jZXNzZXMgYXJvdW5kIGFmdGVyIHRoZWlyIFdlYlBhZ2VQcm94eSBoYXMgYmVlbiBzd2Fw
cGVkIHRvIGEgbmV3IG9uZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4NDU1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB3aGVuIGEgV2ViUGFnZVByb3h5IG5hdmlnYXRl
cyBhbmQgaXMgc3dhcHBlZCB0byBhIG5ldyBwcm9jZXNzLCB0aGUgb2xkIHByb2Nlc3MgYWxtb3N0
IGFsd2F5cyBnb2VzIGF3YXkuCisKKyAgICAgICAgVGhpcyBpcyBub3QgZGVzaXJhYmxlIGZvciBh
IGZldyByZWFzb25zOgorICAgICAgICAxIC0gV2UgY2FuJ3Qga2VlcCB0aGUgUGFnZUNhY2hlIHdv
cmtpbmcgZm9yIGJhY2svZm9yd2FyZCBzY2VuYXJpb3MKKyAgICAgICAgMiAtIFdlIHRocm93IGF3
YXkgYSAiZm9vLmNvbSIgd2ViIHByb2Nlc3MsIG1lYW5pbmcgdGhlIG5leHQgdGltZSB3ZSBuZWVk
IHRvIGhvc3QgYSAiZm9vLmNvbSIgd2ViIHBhZ2Ugd2UgaGF2ZSB0byBsYXVuY2gKKyAgICAgICAg
ICAgIGFuZCBpbml0aWFsaXplIGEgbmV3IHdlYiBwcm9jZXNzLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBhIFN1c3BlbmRlZFBhZ2VQcm94eSBvYmplY3QgdG8ga2VlcCBhcm91bmQgdGhlIG9s
ZCB3ZWIgcHJvY2VzcyBhbmQgdG8gbWFuYWdlIGNvbW11bmljYXRpb24gd2l0aCBpdC4KKworICAg
ICAgICBGb3Igbm93LCBhIFdlYlBhZ2VQcm94eSBrZWVwcyBleGFjdGx5IG9uZSAic3VzcGVuZGVk
IHBhZ2UiIHJlcHJlc2VudGluZyB0aGUgbW9zdCByZWNlbnRseSB2aXNpdGVkIHBhZ2UgYW5kIGl0
cyBwcm9jZXNzLgorICAgICAgICBBZGRpdGlvbmFsbHksIHRoYXQgcHJvY2VzcyBpcyBuZXZlciBy
ZXVzZWQuCisKKyAgICAgICAgU28gbm8gYmVuZWZpdCBpcyBhY2hpZXZlZCB3aXRoIHRoaXMgcGF0
Y2gsIGJ1dCBpdCBlbmFibGVzIGZ1dHVyZSBiZW5lZml0cy4KKworICAgICAgICAqIFBsYXRmb3Jt
L0xvZ2dpbmcuaDoKKworICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U3VzcGVuZGVk
UGFnZSk6CisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaDoKKworICAg
ICAgICBOZXcgb2JqZWN0IHRvIHJlcHJlc2VudCB0aGUgc3RhdGUgb2YgYSBXZWJQYWdlUHJveHkg
aW4gYW4gb2xkIHdlYiBwcm9jZXNzIHRoYXQgaXMgbm90IGN1cnJlbnRseSBob3N0aW5nIHRoZSB2
aWV3LgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5kZWRQYWdlUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OndlYlByb2Nlc3NEaWRD
bG9zZSk6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkRmluaXNoTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmxvZ2dpbmdTdHJpbmcg
Y29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmguCisgICAgICAgIChXZWJLaXQ6
OlN1c3BlbmRlZFBhZ2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVk
UGFnZVByb3h5OjpwYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVBy
b3h5Ojpwcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5
OjppdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpmaW5p
c2hlZFN1c3BlbmRpbmcgY29uc3QpOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dGFjaFRvUHJvY2Vzc0Zvck5h
dmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1heWJlQ3JlYXRlU3Vz
cGVuZGVkUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3VzcGVuZGVkUGFn
ZVByb2Nlc3NDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlz
aExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6c3VzcGVuZFdlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6c3VzcGVuZGVkUGFnZVdhc0Rlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOiBPcHRpb25hbGx5IHBhc3MgV2Vi
UGFnZVByb3h5IG1lc3NhZ2VzIGFsb25nIHRvIFN1c3BlbmRlZFBhZ2VQcm94eSBvYmplY3RzLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjptYXliZVNodXREb3duKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpjYW5UZXJtaW5hdGVDaGlsZFByb2Nlc3MpOiBEb24ndCB0ZXJtaW5h
dGUgY2hpbGQgcHJvY2Vzc2VzIGlmIHRoZXkgc3RpbGwgaGF2ZSBzdXNwZW5kZWQgcGFnZXMuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorCisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldElzU3VzcGVuZGVk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjppc1N1c3BlbmRlZCBjb25zdCk6IEZvciBub3csIHVzZWQgb25seSBieSBX
ZWJQcm9jZXNzOjp1cGRhdGVBY3RpdmVQYWdlcy4gV2lsbCBoYXZlIG1vcmUgdXNlcyBzb29uLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjp1cGRhdGVBY3RpdmVQYWdlcyk6IEFsbG93IHRoZSBVSVByb2Nlc3MgdG8gcmVxdWVzdCBh
biB1cGRhdGUgb2YgdGhlIHdlYiBwcm9jZXNzZXMgdXNlciB2aXNpYmxlIG5hbWUuCisKIDIwMTgt
MDQtMTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIElubGlu
ZSBOZXR3b3JrTG9hZDo6c2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCgpIGludG8gTmV0
d29ya0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0RlYnVnVXRpbGl0aWVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9EZWJ1Z1V0aWxpdGll
cy5oCmluZGV4IDEyMmY3NjgwYTcwYTQ3ZTMyMGRkMGZlZTRjODdkMzIxNDhiMTViMmUuLmE0NDFi
NWNkZThiZDM0ODY1OGIxOGMxNTJmOTU1YjQ1OTBjZmY4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0RlYnVnVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dURi93dGYvRGVidWdVdGlsaXRp
ZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMywxMSArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXVEZf
RGVidWdVdGlsaXRpZXNfaAotI2RlZmluZSBXVEZfRGVidWdVdGlsaXRpZXNfaAorI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNz
SUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAjZGVmaW5l
IFNMRUVQX1RIUkVBRF9GT1JfREVCVUdHRVIoKSBcCiBkbyB7IFwKQEAgLTQwLDQgKzQwLDI0IEBA
IGRvIHsgXAogICAgIFdURkJyZWFrcG9pbnRUcmFwKCk7IFwKIH0gd2hpbGUgKDApCiAKLSNlbmRp
ZiAvKiBXVEZfRGVidWdVdGlsaXRpZXNfaCAqLworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRl
PHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPgorY29uc3QgY2hhciogZGVidWdTdHJpbmcoU3RyaW5n
VHlwZXMuLi4gc3RyaW5ncykKK3sKKyAgICBTdHJpbmcgcmVzdWx0ID0gdHJ5TWFrZVN0cmluZyhz
dHJpbmdzLi4uKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgQ1JBU0goKTsKKworICAgIGF1
dG8gY1N0cmluZyA9IHJlc3VsdC51dGY4KCk7CisgICAgY29uc3QgY2hhciogY1N0cmluZ0RhdGEg
PSBjU3RyaW5nLmRhdGEoKTsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoW2NTdHJpbmcgPSBXVEZN
b3ZlKGNTdHJpbmcpXSB7CisgICAgfSk7CisKKyAgICByZXR1cm4gY1N0cmluZ0RhdGE7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OmRlYnVnU3RyaW5nOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggODBkYmYxM2YwMjFjZjUzMzU2NGI2
ZGIxNWU3NWU0ZTAwMTg5NTczMy4uZmJjNzQzNDE5NjQzN2QzNGZiNzIwZGNhMDVlNzE4NGZlYmRm
MGFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC01MTks
NyArNTE5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYKICAgICBBU1NFUlRfVU5VU0VEKHJl
c291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBib29sIGlzUmVkaXJlY3Rpb25Gcm9tU2VydmljZVdvcmtlciA9IHJlZGly
ZWN0UmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNl
V29ya2VyOwotICAgIHdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJl
c3BvbnNlLCBbaXNSZWRpcmVjdGlvbkZyb21TZXJ2aWNlV29ya2VyLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHRoaXNdIChhdXRvJiYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgd2lsbFNlbmRSZXF1
ZXN0KFdURk1vdmUocmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFNob3VsZENvbnRpbnVlOjpZ
ZXMsIFtpc1JlZGlyZWN0aW9uRnJvbVNlcnZpY2VXb3JrZXIsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgdGhpc10gKGF1dG8mJiByZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFtX3N1
YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSk7CiAgICAgICAgIGlmIChyZXF1ZXN0LmlzTnVsbCgpIHx8
ICFtX21haW5Eb2N1bWVudEVycm9yLmlzTnVsbCgpIHx8ICFtX2ZyYW1lKSB7CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtNTUyLDExICs1NTIsMTEgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJl
c291cmNlUmVxdWVzdCYKICAgICAgICAgfSk7CiAgICAgfSk7CiAjZWxzZQotICAgIHdpbGxTZW5k
UmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgd2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIHJl
ZGlyZWN0UmVzcG9uc2UsIFNob3VsZENvbnRpbnVlOjpZZXMsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICNlbmRpZgogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIC8vIE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gYXNzZXJ0cyBoZXJlIGFzIHRoZXJl
IGFyZSBmb3IgdGhlIG90aGVyIGNhbGxiYWNrcy4gVGhpcyBpcyBkdWUgdG8gdGhlCiAgICAgLy8g
ZmFjdCB0aGF0IHRoaXMgImNhbGxiYWNrIiBpcyBzZW50IHdoZW4gc3RhcnRpbmcgZXZlcnkgbG9h
ZCwgYW5kIHRoZSBzdGF0ZSBvZiBjYWxsYmFjawpAQCAtNTY0LDYgKzU2NCw4IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0
LCBjb25zdCBSZXNvdXJjCiAgICAgLy8gY2FsbGJhY2tzIGlzIG1lYW50IHRvIHByZXZlbnQuCiAg
ICAgQVNTRVJUKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKTsKIAorICAgIEFTU0VSVChzaG91bGRDb250
aW51ZSAhPSBTaG91bGRDb250aW51ZTo6Tm8pOworCiAgICAgYm9vbCBkaWRSZWNlaXZlUmVkaXJl
Y3RSZXNwb25zZSA9ICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpOwogICAgIGlmICghZnJhbWVM
b2FkZXIoKS0+Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1AobmV3UmVxdWVzdC51cmwoKSwg
ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpKSB7CiAgICAgICAgIGNhbmNlbE1haW5SZXNvdXJj
ZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobmV3UmVxdWVzdCkpOwpAQCAtNjMw
LDIxICs2MzIsMTYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKIAogICAgIHNldFJlcXVlc3Qo
bmV3UmVxdWVzdCk7CiAKLSAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSdkIHN0b3AgdGhlIEkvTyB1
bnRpbCB3ZSBoZWFyIGJhY2sgZnJvbSB0aGUgbmF2aWdhdGlvbiBwb2xpY3kgZGVsZWdhdGUKLSAg
ICAvLyBsaXN0ZW5lci4gQnV0IHRoZXJlJ3Mgbm8gd2F5IHRvIGRvIHRoYXQgaW4gcHJhY3RpY2Uu
IFNvIGluc3RlYWQgd2UgY2FuY2VsIGxhdGVyIGlmIHRoZQotICAgIC8vIGxpc3RlbmVyIHRlbGxz
IHVzIHRvLiBJbiBwcmFjdGljZSB0aGF0IG1lYW5zIHRoZSBuYXZpZ2F0aW9uIHBvbGljeSBuZWVk
cyB0byBiZSBkZWNpZGVkCi0gICAgLy8gc3luY2hyb25vdXNseSBmb3IgdGhlc2UgcmVkaXJlY3Qg
Y2FzZXMuCi0gICAgaWYgKCFkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSkKKyAgICBpZiAoIWRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICYmIHNob3VsZENvbnRpbnVlICE9IFNob3VsZENvbnRp
bnVlOjpGb3JTdXNwZW5zaW9uKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShuZXdSZXF1ZXN0KSk7CiAKLSAgICBBU1NFUlQoIW1fd2FpdGluZ0Zvck5hdmlnYXRpb25Q
b2xpY3kpOwotICAgIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgPSB0cnVlOwotICAgIGZy
YW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3Vy
Y2VSZXF1ZXN0KG5ld1JlcXVlc3QpLCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZvcm1T
dGF0ZSosIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSBtdXRhYmxlIHsKKyAgICBhdXRv
IG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRD
b250aW51ZSBzaG91bGRDb250aW51ZSkgbXV0YWJsZSB7CiAgICAgICAgIG1fd2FpdGluZ0Zvck5h
dmlnYXRpb25Qb2xpY3kgPSBmYWxzZTsKICAgICAgICAgc3dpdGNoIChzaG91bGRDb250aW51ZSkg
ewogICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uOgotICAgICAgICAg
ICAgRkFMTFRIUk9VR0g7Ci0gICAgICAgICAgICAvLyBGSVhNRTogU2V0dXAgdGhpcyBwYWdlIGZv
ciBzdXNwZW5zaW9uIChlLmcuIFBhZ2UgQ2FjaGUpIGhlcmUuCisgICAgICAgICAgICAvLyBXZSBo
YW5kbGUgc3VzcGVuc2lvbiBieSBuYXZpZ2F0aW5nIGZvcndhcmQgdG8gYWJvdXQ6YmxhbmssIHdo
aWNoIGxlYXZlcyB1cyBzZXR1cCB0byBuYXZpZ2F0ZSBiYWNrIHRvIHJlc3VtZS4KKyAgICAgICAg
ICAgIHJlcXVlc3QgPSB7IGJsYW5rVVJMKCkgfTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFNob3VsZENvbnRpbnVlOjpObzoKICAgICAgICAgICAgIHN0b3BMb2FkaW5nRm9yUG9s
aWN5Q2hhbmdlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTY1Myw3ICs2NTAsMTcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1Jl
cXVlc3QsIGNvbnN0IFJlc291cmMKICAgICAgICAgfQogCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVxdWVzdCkpOwotICAgIH0pOworICAgIH07CisKKyAgICBBU1NFUlQoIW1f
d2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kpOworICAgIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Q
b2xpY3kgPSB0cnVlOworCisgICAgaWYgKHNob3VsZENvbnRpbnVlID09IFNob3VsZENvbnRpbnVl
OjpGb3JTdXNwZW5zaW9uKSB7CisgICAgICAgIG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpLCBudWxscHRyLCBzaG91bGRDb250aW51ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCku
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChuZXdSZXF1ZXN0KSwgZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIFdURk1vdmUobmF2aWdhdGlvblBvbGljeUNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIGJvb2wgRG9jdW1lbnRMb2FkZXI6OnRyeUxvYWRpbmdSZXF1ZXN0RnJv
bUFwcGxpY2F0aW9uQ2FjaGUoKQpAQCAtMTY1NSw4ICsxNjYyLDEwIEBAIGJvb2wgRG9jdW1lbnRM
b2FkZXI6Om1heWJlTG9hZEVtcHR5KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBEb2N1
bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKK3ZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZShTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51
ZSkKIHsKKyAgICBBU1NFUlQoc2hvdWxkQ29udGludWUgIT0gU2hvdWxkQ29udGludWU6Ok5vKTsK
KwogICAgIG1fbWFpbkRvY3VtZW50RXJyb3IgPSBSZXNvdXJjZUVycm9yKCk7CiAgICAgdGltaW5n
KCkubWFya1N0YXJ0VGltZUFuZEZldGNoU3RhcnQoKTsKICAgICBBU1NFUlQoIW1fbWFpblJlc291
cmNlKTsKQEAgLTE2ODEsNyArMTY5MCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9h
ZGluZ01haW5SZXNvdXJjZSgpCiAgICAgQVNTRVJUKHRpbWluZygpLnN0YXJ0VGltZSgpKTsKICAg
ICBBU1NFUlQodGltaW5nKCkuZmV0Y2hTdGFydCgpKTsKIAotICAgIHdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QobV9yZXF1ZXN0KSwgUmVzb3VyY2VSZXNwb25zZSgpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkg
bXV0YWJsZSB7CisgICAgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChtX3JlcXVlc3Qp
LCBSZXNvdXJjZVJlc3BvbnNlKCksIHNob3VsZENvbnRpbnVlLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7
CiAgICAgICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CiAKICAgICAgICAgLy8gd2lsbFNlbmRSZXF1
ZXN0KCkgbWF5IGxlYWQgdG8gb3VyIEZyYW1lIGJlaW5nIGRldGFjaGVkIG9yIGNhbmNlbGxpbmcg
dGhlIGxvYWQgdmlhIG51bGxpbmcgdGhlIFJlc291cmNlUmVxdWVzdC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNzBhMWEzZTllYzg0N2JiM2YyM2JjMWY1OTgwMDhh
NGU1NGFlMzk1NS4uMTgwOTRlYzcxYTUyMzY5YjA1MmZlZmUxOTVmMDhlZGJlMzU1NjM5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTg0LDYgKzg0LDggQEAgY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0
dXRlUmVzb3VyY2U7CiAKK2VudW0gY2xhc3MgU2hvdWxkQ29udGludWU7CisKIHVzaW5nIFJlc291
cmNlTG9hZGVyTWFwID0gSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBSZWZQdHI8UmVzb3VyY2VMb2Fk
ZXI+PjsKIAogZW51bSBjbGFzcyBBdXRvcGxheVBvbGljeSB7CkBAIC0yMzcsNyArMjM5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKICAgICB2b2lkIHNldE1h
aW5SZXNvdXJjZURhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSk7CiAKLSAg
ICB2b2lkIHN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpOworICAgIHZvaWQgc3RhcnRMb2FkaW5n
TWFpblJlc291cmNlKFNob3VsZENvbnRpbnVlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNh
bmNlbE1haW5SZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgd2ls
bENvbnRpbnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CiAKQEAgLTM1MSw3ICszNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJBcmNo
aXZlUmVzb3VyY2VzKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgU2hvdWxkQ29udGludWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lk
IGZpbmlzaGVkTG9hZGluZygpOwogICAgIHZvaWQgbWFpblJlY2VpdmVkRXJyb3IoY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZmUwNTU4ZGE0ZThjNzFj
MTVjYTg4MTk4NmYwMjA1MzRjMTE0M2IxNy4uYmQ2M2QwYjliNzMwY2IzOWE2ZGNiMjRlMTZmOWRj
MDMyNDJhNzBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMDYs
NyArMzA2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiAgICAgLy8gVGhpcyBzb21ld2hh
dCBvZGQgc2V0IG9mIHN0ZXBzIGdpdmVzIHRoZSBmcmFtZSBhbiBpbml0aWFsIGVtcHR5IGRvY3Vt
ZW50LgogICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG1fY2xpZW50LmNyZWF0ZURvY3VtZW50
TG9hZGVyKFJlc291cmNlUmVxdWVzdChVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygp
KSksIFN1YnN0aXR1dGVEYXRhKCkpLnB0cigpKTsKICAgICBzZXRQcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwotICAgIG1fcHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCk7CisgICAgbV9wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2UoU2hvdWxkQ29udGlu
dWU6Olllcyk7CiAKICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAgICAgbV9mcmFt
ZS5kb2N1bWVudCgpLT5jYW5jZWxQYXJzaW5nKCk7CkBAIC0zMjMxLDcgKzMyMzEsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgICAgICBkaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5sb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpwYWdlQ2Fj
aGVLZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXRyaWV2YWxLZXkoKSwgRGlhZ25vc3Rp
Y0xvZ2dpbmdSZXN1bHRGYWlsLCBTaG91bGRTYW1wbGU6Olllcyk7CiAgICAgfQogCi0gICAgV1RG
OjpGdW5jdGlvbjx2b2lkKHZvaWQpPiBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzXSB7CisgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywg
c2hvdWxkQ29udGludWVdIHsKICAgICAgICAgaWYgKCFtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMzI1MSw3ICszMjUxLDEyIEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1f
bG9hZGluZ0Zyb21DYWNoZWRQYWdlID0gZmFsc2U7Ci0gICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCk7CisKKyAgICAgICAgLy8gV2Ug
aGFuZGxlIHN1c3BlbnNpb24gYnkgbmF2aWdhdGluZyBmb3J3YXJkIHRvIGFib3V0OmJsYW5rLCB3
aGljaCBsZWF2ZXMgdXMgc2V0dXAgdG8gbmF2aWdhdGUgYmFjayB0byByZXN1bWUuCisgICAgICAg
IGlmIChzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbikKKyAg
ICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+d2lsbENvbnRpbnVlTWFpblJl
c291cmNlTG9hZEFmdGVyUmVkaXJlY3QoeyBibGFua1VSTCgpIH0pOworCisgICAgICAgIG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKHNob3VsZENv
bnRpbnVlKTsKICAgICB9OwogICAgIAogICAgIGlmICghZm9ybVN0YXRlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vTG9nZ2luZy5oCmluZGV4IDYzZTRjOGUxYzM4MzI0YzhkYTMxOTRiOTNjMzEzMzliY2NhY2Zl
MzIuLjQ1NTY2YWM2NjU2OTg2YzM1ZjY0OTYwYjFjMTE4NTI2Mjk0MDZmNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vTG9nZ2luZy5oCkBAIC02Miw2ICs2Miw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oUHJp
bnRpbmcpIFwKICAgICBNKFByb2Nlc3MpIFwKICAgICBNKFByb2Nlc3NTdXNwZW5zaW9uKSBcCisg
ICAgTShQcm9jZXNzU3dhcHBpbmcpIFwKICAgICBNKFJlbW90ZUxheWVyVHJlZSkgXAogICAgIE0o
UmVzaXplKSBcCiAgICAgTShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IDQzMWUzYzE0YTI0
OTUzNjc2ZTM5MWY0NTQyYWY4NmMyNjI2ZDlmNzUuLjFhY2Q1ZGRjYTVlODlhNTMxMTI4MTg3N2Jm
MDkwNWVhOGExN2IyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uY3BwCkBAIC0xMDMsNCArMTAzLDkgQEAgdWludDY0X3QgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTo6aGlnaGVzdFVzZWRJdGVtSUQoKQogICAgIHJldHVybiBoaWdoZXN0SXRlbUlE
OwogfQogCit2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldFN1c3BlbmRlZFBhZ2UoU3Vz
cGVuZGVkUGFnZVByb3h5JiBwYWdlKQoreworICAgIG1fc3VzcGVuZGVkUGFnZSA9ICZwYWdlOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaAppbmRleCBlNGJkNTA3MmQxYzIzYTZkNGJlYzFmN2I3MDJlNzZi
OGY5OTEyM2EwLi40ZWEyY2E3MDEwNjVjMTBjZTdmMDExMmQ2NzYzNjFjYTE5NTZkOWY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCkBAIC00MSw2
ICs0MSw4IEBAIGNsYXNzIEVuY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBT
dXNwZW5kZWRQYWdlUHJveHk7CisKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCYWNrRm9yd2FyZExpc3RJdGVt
PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVh
dGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7CkBAIC02Myw2
ICs2NSw3IEBAIHB1YmxpYzoKICAgICBWaWV3U25hcHNob3QqIHNuYXBzaG90KCkgY29uc3QgeyBy
ZXR1cm4gbV9pdGVtU3RhdGUuc25hcHNob3QuZ2V0KCk7IH0KICAgICB2b2lkIHNldFNuYXBzaG90
KFJlZlB0cjxWaWV3U25hcHNob3Q+JiYgc25hcHNob3QpIHsgbV9pdGVtU3RhdGUuc25hcHNob3Qg
PSBXVEZNb3ZlKHNuYXBzaG90KTsgfQogI2VuZGlmCisgICAgdm9pZCBzZXRTdXNwZW5kZWRQYWdl
KFN1c3BlbmRlZFBhZ2VQcm94eSYpOwogCiAgICAgc3RhdGljIHVpbnQ2NF90IGhpZ2hlc3RVc2Vk
SXRlbUlEKCk7CiAKQEAgLTcxLDYgKzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIEJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSBtX2l0ZW1TdGF0ZTsKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBT
dXNwZW5kZWRQYWdlUHJveHkqIG1fc3VzcGVuZGVkUGFnZSB7IG51bGxwdHIgfTsKIH07CiAKIHR5
cGVkZWYgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gQmFja0ZvcndhcmRMaXN0
SXRlbVZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ0NjBmNDQ3ZTExZWYzZjgzZDQ0ZmMzYzI2ZmUzYjJmNWVmYmU4
OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuY3BwCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgorCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVk
ZSA8d3RmL0RlYnVnVXRpbGl0aWVzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWYgIUxP
R19ESVNBQkxFRAorc3RhdGljIGNvbnN0IEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuY2U+JiBt
ZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4+IG1lc3NhZ2VOYW1lczsKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUZsYWcsIFtdIHsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiQmFja0ZvcndhcmRB
ZGRJdGVtIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkNsZWFyQWxsRWRpdENv
bW1hbmRzIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENoYW5nZUNvbnRl
bnRTaXplIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENoYW5nZU1haW5E
b2N1bWVudCIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VQcm9n
cmVzcyIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDb21taXRMb2FkRm9y
RnJhbWUiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRGVzdHJveU5hdmln
YXRpb24iKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmlu
aXNoUHJvZ3Jlc3MiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmlyc3RM
YXlvdXRGb3JGcmFtZSIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSIpOworICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSIpOworICAgICAgICBtZXNz
YWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRSZWFjaExheW91dE1pbGVzdG9uZSIpOworICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTYXZlVG9QYWdlQ2FjaGUiKTsKKyAgICAgICAgbWVz
c2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU3RhcnRQcm9ncmVzcyIpOworICAgICAgICBtZXNzYWdl
TmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIik7CisgICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkVkaXRvclN0YXRlQ2hhbmdlZCIpOworICAgICAg
ICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRD
aGFuZ2UiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0UmVuZGVyVHJlZVNp
emUiKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0U3RhdHVzVGV4dCIpOwor
ICAgIH0pOworCisgICAgcmV0dXJuIG1lc3NhZ2VOYW1lczsKK30KKyNlbmRpZgorCitTdXNwZW5k
ZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKKyAgICA6
IG1fcGFnZShwYWdlKQorICAgICwgbV9wcm9jZXNzKCZwcm9jZXNzKQorICAgICwgbV9iYWNrRm9y
d2FyZExpc3RJdGVtKGl0ZW0pCit7CisgICAgbV9iYWNrRm9yd2FyZExpc3RJdGVtLT5zZXRTdXNw
ZW5kZWRQYWdlKCp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3BhZ2UucGFnZUlEKCkpOworfQorCitTdXNwZW5kZWRQ
YWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJveHkoKQoreworICAgIGlmIChtX3Byb2Nlc3MpCisg
ICAgICAgIG1fcHJvY2Vzcy0+c3VzcGVuZGVkUGFnZVdhc0Rlc3Ryb3llZCgqdGhpcyk7Cit9CisK
K3ZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojp3ZWJQcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzKQoreworICAgIEFTU0VSVF9VTlVTRUQocHJvY2VzcywgJnByb2Nlc3MgPT0g
bV9wcm9jZXNzKTsKKyAgICBtX3Byb2Nlc3MgPSBudWxscHRyOworCisgICAgbV9wYWdlLnN1c3Bl
bmRlZFBhZ2VQcm9jZXNzQ2xvc2VkKCp0aGlzKTsKK30KKwordm9pZCBTdXNwZW5kZWRQYWdlUHJv
eHk6OmRpZEZpbmlzaExvYWQoKQoreworICAgIEFTU0VSVChtX3Byb2Nlc3MpOworICAgIExPRyhQ
cm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkgJXMgZnJvbSBwcm9jZXNzICVpIGZp
bmlzaGVkIHRyYW5zaXRpb24gdG8gc3VzcGVuZGVkIiwgbG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworCisgICAgbV9maW5pc2hlZFN1c3BlbmRpbmcgPSB0
cnVlOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpVcGRhdGVB
Y3RpdmVQYWdlcygpLCAwKTsKK30KKwordm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBBU1NFUlQoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKworICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZEZvckZyYW1l
OjpuYW1lKCkpIHsKKyAgICAgICAgZGlkRmluaXNoTG9hZCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2lmICFMT0dfRElTQUJMRUQKKyAgICBpZiAobWVzc2FnZU5hbWVzVG9JZ25vcmVXaGls
ZVN1c3BlbmRlZCgpLmNvbnRhaW5zKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpCisgICAgICAgIExP
RyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkgcmVjZWl2ZWQgdW5leHBlY3Rl
ZCBXZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRvU3Ry
aW5nKCkuZGF0YSgpKTsKKyNlbmRpZgorfQorCisjaWYgIUxPR19ESVNBQkxFRAorY29uc3QgY2hh
ciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZGVidWdTdHJpbmcoIigiLCBTdHJpbmc6OmZvcm1hdCgiJXAiLCB0aGlzKSwgInBhZ2UgSUQg
IiwgU3RyaW5nOjpudW1iZXIobV9wYWdlLnBhZ2VJRCgpKSwgIiwgbV9maW5pc2hlZFN1c3BlbmRp
bmcgIiwgU3RyaW5nOjpudW1iZXIobV9maW5pc2hlZFN1c3BlbmRpbmcpLCAiKSIpOworfQorI2Vu
ZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDljYmMwNzVjNDY4NDVlNTljOGNhNzY0
NDZjOTUzYzE3MzIxMWIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJvY2Vzc1Byb3h5
OworCitjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTdXNwZW5k
ZWRQYWdlUHJveHk+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFN1c3BlbmRlZFBhZ2VQcm94
eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3VzcGVuZGVkUGFnZVByb3h5KHBhZ2UsIHByb2Nlc3MsIGl0ZW0pKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIH5TdXNwZW5kZWRQYWdlUHJveHkoKTsKKworICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKKyAgICBXZWJQ
YWdlUHJveHkmIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KKyAgICBXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3M7IH0KKyAgICBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtJiBpdGVtKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3RJ
dGVtOyB9CisKKyAgICBib29sIGZpbmlzaGVkU3VzcGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmluaXNoZWRTdXNwZW5kaW5nOyB9CisKKyAgICB2b2lkIHdlYlByb2Nlc3NEaWRDbG9zZShXZWJQ
cm9jZXNzUHJveHkmKTsKKworI2lmICFMT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dn
aW5nU3RyaW5nKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBTdXNwZW5kZWRQYWdl
UHJveHkoV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYpOworCisgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CisKKyAgICBXZWJQYWdlUHJveHkm
IG1fcGFnZTsKKyAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2VzczsKKyAgICBSZWY8V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbT4gbV9iYWNrRm9yd2FyZExpc3RJdGVtOworCisgICAgYm9vbCBtX2Zp
bmlzaGVkU3VzcGVuZGluZyB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDVjYTFiZDI4MDI0
YzNmNmQ3MzBhMzJhNjJmMmY3OWExOGU1MzM1NWIuLjhmMzc0MGU5NjFmM2NiNTcxOWRmMGNjMjQz
MjMyZTFjMGQ2YmUyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtNjQyLDcgKzY0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTeW5jaHJvbm91
c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTCiB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoKQogewogICAgIGF1dG8gcHJvY2VzcyA9IG1h
a2VSZWYobV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0
aW5nUHJvY2Vzc0NvdW50TGltaXQobV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpKSk7Ci0gICAgcmVh
dHRhY2hUb1dlYlByb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSk7CisgICAgcmVhdHRhY2hUb1dlYlBy
b2Nlc3MoV1RGTW92ZShwcm9jZXNzKSwgZmFsc2UpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
YXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
c3MpCkBAIC02NTMsMTcgKzY1Myw0NCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0YWNoVG9Qcm9j
ZXNzRm9yTmF2aWdhdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCiAKICAgICAv
LyBGSVhNRTogdGhpcyBpcyB0byBmaXggdGhlIEFTU0VSVChpc1ZhbGlkKCkpIGluc2lkZSByZWF0
dGFjaFRvV2ViUHJvY2Vzcywgc29tZSBvdGhlciB3YXkgdG8gZml4IHRoaXMgaXMgbmVlZGVkLgog
ICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKFdURk1vdmUo
cHJvY2VzcykpOworICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKFdURk1vdmUocHJvY2VzcyksIHRy
dWUpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQorU3VzcGVuZGVkUGFnZVByb3h5KiBXZWJQYWdlUHJv
eHk6Om1heWJlQ3JlYXRlU3VzcGVuZGVkUGFnZShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit7
CisgICAgQVNTRVJUKCFtX3N1c3BlbmRlZFBhZ2UgfHwgbV9zdXNwZW5kZWRQYWdlLT5wcm9jZXNz
KCkgIT0gJnByb2Nlc3MpOworCisgICAgYXV0byogY3VycmVudEl0ZW0gPSBtX2JhY2tGb3J3YXJk
TGlzdC0+Y3VycmVudEl0ZW0oKTsKKyAgICBpZiAoIWN1cnJlbnRJdGVtKSB7CisgICAgICAgIExP
RyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgdW5hYmxlIHRvIGNy
ZWF0ZSBzdXNwZW5kZWQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgLSBObyBjdXJyZW50IGJhY2sv
Zm9yd2FyZCBpdGVtIiwgcGFnZUlEKCksIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIG1fc3VzcGVuZGVkUGFnZSA9IFN1
c3BlbmRlZFBhZ2VQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzLCAqY3VycmVudEl0ZW0pOwor
CisgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVh
dGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0
ZW0gJSIgUFJJdTY0LCBwYWdlSUQoKSwgbV9zdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCks
IHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgY3VycmVudEl0ZW0tPml0ZW1JRCgpKTsKKwor
ICAgIHJldHVybiBtX3N1c3BlbmRlZFBhZ2UuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5
OjpzdXNwZW5kZWRQYWdlUHJvY2Vzc0Nsb3NlZChTdXNwZW5kZWRQYWdlUHJveHkmIHBhZ2UpCit7
CisgICAgQVNTRVJUX1VOVVNFRChwYWdlLCAmcGFnZSA9PSBtX3N1c3BlbmRlZFBhZ2UuZ2V0KCkp
OworICAgIG1fc3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5
OjpyZWF0dGFjaFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGJv
b2wgc3VzcGVuZEluT2xkUHJvY2VzcykKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogICAg
IEFTU0VSVCghaXNWYWxpZCgpKTsKIAogICAgIG1faXNWYWxpZCA9IHRydWU7Ci0gICAgbV9wcm9j
ZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBtX3BhZ2VJRCk7Ci0gICAgbV9wcm9jZXNzLT5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3BhZ2VJRCk7CisKKyAgICBpZiAoIXN1c3BlbmRJbk9sZFByb2Nlc3MpIHsKKyAg
ICAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBtX3BhZ2VJRCk7CisgICAgICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIH0gZWxzZQorICAgICAgICBt
X3Byb2Nlc3MtPnN1c3BlbmRXZWJQYWdlUHJveHkoKnRoaXMpOwogCiAgICAgbV9wcm9jZXNzID0g
V1RGTW92ZShwcm9jZXNzKTsKIApAQCAtMjM1NCw3ICsyMzgxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQ
cm94eSYgZnIKICAgICAgICAgICAgIGF1dG8gcHJvcG9zZWRQcm9jZXNzID0gcHJvY2VzcygpLnBy
b2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZpZ2F0aW9uLCBhY3Rp
b24pOwogCiAgICAgICAgICAgICBpZiAocHJvcG9zZWRQcm9jZXNzLnB0cigpICE9ICZwcm9jZXNz
KCkpIHsKLSAgICAgICAgICAgICAgICBMT0coTG9hZGluZywgIlN3aXRjaGluZyBmcm9tIHByb2Nl
c3MgJWkgdG8gbmV3IHByb2Nlc3MgZm9yIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyIsIHBy
b2Nlc3NJZGVudGlmaWVyKCksIG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9u
LT5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgTE9HKFBy
b2Nlc3NTd2FwcGluZywgIlN3aXRjaGluZyBmcm9tIHByb2Nlc3MgJWkgdG8gbmV3IHByb2Nlc3Mg
Zm9yIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLT5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VS
ZWYoKm5hdmlnYXRpb24pLCBwcm9wb3NlZFByb2Nlc3MgPSBXVEZNb3ZlKHByb3Bvc2VkUHJvY2Vz
cyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbklu
TmV3UHJvY2VzcyhuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKHByb3Bvc2VkUHJvY2VzcykpOwpA
QCAtMzU3MSw2ICszNTk4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmkKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKKyAgICBMT0coTG9h
ZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lIC0gV2ViUGFnZVByb3h5
ICVwIHdpdGggbmF2aWdhdGlvbklEICVsbHUgZGlkRmluaXNoTG9hZCIsIHRoaXMsIG5hdmlnYXRp
b25JRCk7CisKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQp
OwogCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5NGI5OGJjZmE4
NzQzOGRlMzhhNDVhYjBkNzFhZGNlMWQ4NTk3MWFlLi4xNTFjNTc2OWMxMDRhZDFkYTBjZmFmMWU2
ZmVkNzc2ZjIzNDJmN2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5j
bHVkZSAiU3VzcGVuZGVkUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiU3lzdGVtUHJldmlld0NvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5oIgogI2luY2x1ZGUgIlZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uaCIKQEAgLTEyODYs
NiArMTI4Nyw5IEBAIHB1YmxpYzoKIAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgcHJlZmVyZW5j
ZXNTdG9yZSgpIGNvbnN0OwogCisgICAgU3VzcGVuZGVkUGFnZVByb3h5KiBtYXliZUNyZWF0ZVN1
c3BlbmRlZFBhZ2UoV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9pZCBzdXNwZW5kZWRQYWdlUHJv
Y2Vzc0Nsb3NlZChTdXNwZW5kZWRQYWdlUHJveHkmKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXpl
KCk7CkBAIC0xNDM2LDcgKzE0NDAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZWF0dGFjaFRv
V2ViUHJvY2VzcygpOwogICAgIHZvaWQgYXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmKTsKLSAgICB2b2lkIHJlYXR0YWNoVG9XZWJQcm9jZXNzKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYpOworICAgIHZvaWQgcmVhdHRhY2hUb1dlYlByb2Nlc3MoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgYm9vbCBzdXNwZW5kSW5PbGRQcm9jZXNzKTsKIAogICAgIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IHJlYXR0YWNoVG9XZWJQcm9jZXNzRm9yUmVsb2FkKCk7CiAgICAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gcmVhdHRhY2hUb1dlYlByb2Nlc3NXaXRoSXRlbShXZWJC
YWNrRm9yd2FyZExpc3RJdGVtJik7CkBAIC0yMTI5LDYgKzIxMzMsMTEgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxNb25vdG9uaWNUaW1lPiBtX3BhZ2VMb2FkU3RhcnQ7
CisKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBtb3JlIHRoYW4gb25lIHN1c3BlbmRlZCBwYWdlIHBl
ciBXZWJQYWdlUHJveHksCisgICAgLy8gYW5kIGhhdmUgYSBnbG9iYWwgY29sbGVjdGlvbiBvZiB0
aGVtIHBlciBwcm9jZXNzIHBvb2wKKyAgICAvLyAoZS5nLiBmb3IgdGhhdCBwcm9jZXNzIHBvb2wn
cyBwYWdlIGNhY2hlKQorICAgIFJlZlB0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3VzcGVuZGVk
UGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZWM2YTQxMDQ5ZWIwOWZiMjNiNzljZmRiZWMy
NmNhZTRjOWFhYjk1NS4uYmY1ZmU0YTUyZDllYzc5YTEyMDI5MzgyNmQxMzU5OTI1ODkwNDAyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9y
ZS5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU3VzcGVu
ZGVkUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0
Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5o
IgpAQCAtMzk1LDYgKzM5NiwyNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkRXhpc3RpbmdX
ZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdWludDY0X3QgcGFnZUlEKQogICAgIHVwZGF0
ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzdXNwZW5kV2ViUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKK3sKKyAgICBp
ZiAoYXV0byogc3VzcGVuZGVkUGFnZSA9IHdlYlBhZ2UubWF5YmVDcmVhdGVTdXNwZW5kZWRQYWdl
KCp0aGlzKSkgeworICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiV2ViUHJvY2Vzc1Byb3h5
IHBpZCAlaSBhZGRlZCBzdXNwZW5kZWQgcGFnZSAlcyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHN1
c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSk7CisgICAgICAgIG1fc3VzcGVuZGVkUGFnZU1h
cC5zZXQod2ViUGFnZS5wYWdlSUQoKSwgc3VzcGVuZGVkUGFnZSk7CisgICAgfQorCisgICAgcmVt
b3ZlV2ViUGFnZSh3ZWJQYWdlLCB3ZWJQYWdlLnBhZ2VJRCgpKTsKKyAgICByZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB3
ZWJQYWdlLnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OnN1c3BlbmRlZFBh
Z2VXYXNEZXN0cm95ZWQoU3VzcGVuZGVkUGFnZVByb3h5JiBzdXNwZW5kZWRQYWdlKQoreworICAg
IExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQcm9jZXNzUHJveHkgcGlkICVpIHN1c3BlbmRlZCBw
YWdlICVzIHdhcyBkZXN0cm95ZWQiLCBwcm9jZXNzSWRlbnRpZmllcigpLCBzdXNwZW5kZWRQYWdl
LmxvZ2dpbmdTdHJpbmcoKSk7CisKKyAgICBBU1NFUlQobV9zdXNwZW5kZWRQYWdlTWFwLmNvbnRh
aW5zKHN1c3BlbmRlZFBhZ2UucGFnZSgpLnBhZ2VJRCgpKSk7CisgICAgbV9zdXNwZW5kZWRQYWdl
TWFwLnJlbW92ZShzdXNwZW5kZWRQYWdlLnBhZ2UoKS5wYWdlSUQoKSk7CisKKyAgICBtYXliZVNo
dXREb3duKCk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKFdlYlBh
Z2VQcm94eSYgd2ViUGFnZSwgdWludDY0X3QgcGFnZUlEKQogewogICAgIGF1dG8qIHJlbW92ZWRQ
YWdlID0gbV9wYWdlTWFwLnRha2UocGFnZUlEKTsKQEAgLTQxNCwxMiArNDM2LDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCB1aW50
NjRfdCBwYWdlSUQpCiAgICAgZm9yIChhdXRvIGl0ZW1JRCA6IGl0ZW1JRHNUb1JlbW92ZSkKICAg
ICAgICAgbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLnJlbW92ZShpdGVtSUQpOwogCi0gICAgLy8g
SWYgdGhpcyB3YXMgdGhlIGxhc3QgV2ViUGFnZSBvcGVuIGluIHRoYXQgd2ViIHByb2Nlc3MsIGFu
ZCB3ZSBoYXZlIG5vIG90aGVyIHJlYXNvbiB0byBrZWVwIGl0IGFsaXZlLCBsZXQgaXQgZ28uCi0g
ICAgLy8gV2Ugb25seSBhbGxvdyB0aGlzIHdoZW4gdXNpbmcgYSBuZXR3b3JrIHByb2Nlc3MsIGFz
IG90aGVyd2lzZSB0aGUgV2ViUHJvY2VzcyBuZWVkcyB0byBwcmVzZXJ2ZSBpdHMgc2Vzc2lvbiBz
dGF0ZS4KLSAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6VGVybWluYXRlZCB8fCAhY2FuVGVybWlu
YXRlQ2hpbGRQcm9jZXNzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNodXREb3duKCk7Cisg
ICAgbWF5YmVTaHV0RG93bigpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRl
ZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlJiBzdG9yZSkKQEAgLTYzNyw2ICs2NTQsMTUgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8v
IFdlYlBhZ2VQcm94eSBtZXNzYWdlcyBhcmUgbm9ybWFsbHkgaGFuZGxlZCBieSB0aGUgbm9ybWFs
ICJkaXNwYXRjaE1lc3NhZ2UiIHVwIGFib3ZlLgorICAgIC8vIElmIHRoZXkgd2VyZSBub3QgaGFu
ZGxlZCB0aGVyZSwgdGhlbiB0aGV5IG1heSBwb3RlbnRpYWxseSBiZSBoYW5kbGVkIGJ5IFN1c3Bl
bmRlZFBhZ2VQcm94eSBvYmplY3RzLgorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIHN1c3BlbmRlZFBhZ2UgPSBtX3N1c3BlbmRlZFBhZ2VNYXAuZ2V0
KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkgeworICAgICAgICAgICAgc3VzcGVuZGVkUGFnZS0+
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBGSVhNRTogQWRkIHVuaGFuZGxlZCBtZXNz
YWdlIGxvZ2dpbmcuCiB9CiAKQEAgLTY4MCw2ICs3MDYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgZm9yIChhdXRvJiBwYWdlIDogcGFn
ZXMpCiAgICAgICAgIHBhZ2UtPnByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9u
UmVhc29uOjpDcmFzaCk7CiAKKyAgICBmb3IgKGF1dG8qIHN1c3BlbmRlZFBhZ2UgOiBjb3B5VG9W
ZWN0b3JPZjxTdXNwZW5kZWRQYWdlUHJveHkqPihtX3N1c3BlbmRlZFBhZ2VNYXAudmFsdWVzKCkp
KQorICAgICAgICBzdXNwZW5kZWRQYWdlLT53ZWJQcm9jZXNzRGlkQ2xvc2UoKnRoaXMpOworCisg
ICAgbV9zdXNwZW5kZWRQYWdlTWFwLmNsZWFyKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlTmFtZSkKQEAgLTgyNyw5ICs4NTcsMTcgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRpZERlc3Ryb3lVc2VyR2VzdHVyZVRva2VuKHVpbnQ2NF90IGlkZW50aWZpZXIpCiAgICAg
bV91c2VySW5pdGlhdGVkQWN0aW9uTWFwLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAordm9pZCBX
ZWJQcm9jZXNzUHJveHk6Om1heWJlU2h1dERvd24oKQoreworICAgIGlmIChzdGF0ZSgpID09IFN0
YXRlOjpUZXJtaW5hdGVkIHx8ICFjYW5UZXJtaW5hdGVDaGlsZFByb2Nlc3MoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgc2h1dERvd24oKTsKK30KKwogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmNh
blRlcm1pbmF0ZUNoaWxkUHJvY2VzcygpCiB7Ci0gICAgaWYgKCFtX3BhZ2VNYXAuaXNFbXB0eSgp
KQorICAgIGlmICghbV9wYWdlTWFwLmlzRW1wdHkoKSB8fCAhbV9zdXNwZW5kZWRQYWdlTWFwLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29s
LT5zaG91bGRUZXJtaW5hdGUodGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCmluZGV4IDgwYWI4YTZiNTk2NTdlMmY4N2VlNzE3NjI4ZDAwMDU2NzE1MTk3NGEu
LmM2NzcwZWE4NTQ4YmRmZjVjNjI5ZjQzZDYzZDAzMmExNzAxNWI1YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC02Niw2ICs2Niw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94eTsKIGNsYXNzIE9iakNPYmplY3RH
cmFwaDsKIGNsYXNzIFBhZ2VDbGllbnQ7CitjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CiBjbGFz
cyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsK
IGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CkBAIC0yMDgsNiArMjA5LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKCkgeyBtX2hhc0NvbW1pdHRlZEFu
eVByb3Zpc2lvbmFsTG9hZHMgPSB0cnVlOyB9CiAgICAgYm9vbCBoYXNDb21taXR0ZWRBbnlQcm92
aXNpb25hbExvYWRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDb21taXR0ZWRBbnlQcm92aXNpb25h
bExvYWRzOyB9CiAKKyAgICB2b2lkIHN1c3BlbmRXZWJQYWdlUHJveHkoV2ViUGFnZVByb3h5Jik7
CisgICAgdm9pZCBzdXNwZW5kZWRQYWdlV2FzRGVzdHJveWVkKFN1c3BlbmRlZFBhZ2VQcm94eSYp
OworCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUGFnZUlEKCk7CiAg
ICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwpA
QCAtMjIxLDYgKzIyNSw3IEBAIHByaXZhdGU6CiAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIHdlYiBw
cm9jZXNzIGhhcyBjcmFzaGVkIG9yIHdlIGtub3cgdGhhdCBpdCB3aWxsIHRlcm1pbmF0ZSBzb29u
LgogICAgIC8vIFdpbGwgcG90ZW50aWFsbHkgY2F1c2UgdGhlIFdlYlByb2Nlc3NQcm94eSBvYmpl
Y3QgdG8gYmUgZnJlZWQuCiAgICAgdm9pZCBzaHV0RG93bigpOworICAgIHZvaWQgbWF5YmVTaHV0
RG93bigpOwogCiAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBhZGRPclVw
ZGF0ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgUGFnZVN0YXRlJik7CkBAIC0yOTgsNiArMzAzLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0
PFN0cmluZz4gbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzOwogCiAgICAgV2ViUGFn
ZVByb3h5TWFwIG1fcGFnZU1hcDsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdXNwZW5kZWRQYWdl
UHJveHkqPiBtX3N1c3BlbmRlZFBhZ2VNYXA7CiAgICAgV2ViRnJhbWVQcm94eU1hcCBtX2ZyYW1l
TWFwOwogICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1NYXAgbV9iYWNrRm9yd2FyZExpc3RJdGVt
TWFwOwogICAgIFVzZXJJbml0aWF0ZWRBY3Rpb25NYXAgbV91c2VySW5pdGlhdGVkQWN0aW9uTWFw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggN2MyZDQ2NTMwMTMwMGM4NWJjZjkzYjM0NWFhOGQ5MmU3ODBmM2U2MC4uYWQxNTQ3NTkwYzZm
ZDNhMDg1ZDFkNGVmOWQ2Y2NjOTA1YTM3NjZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDcwLDYgKzEwNzAsNyBAQAogCQk1MTVC
RTFCNDFENTkxN0ZGMDBERDdDNjggLyogVUlHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUFDMUQ1NTVDNTEwMEREN0M2OCAvKiBV
SUdhbWVwYWQuY3BwICovOyB9OwogCQk1MTVCRTFCNTFENTkxN0ZGMDBERDdDNjggLyogVUlHYW1l
cGFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVC
RTFBRDFENTU1QzUxMDBERDdDNjggLyogVUlHYW1lcGFkLmggKi87IH07CiAJCTUxNUJFMUI3MUQ1
QTk0RkQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlck1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUI2MUQ1QTk0RjkwMEREN0M2OCAv
KiBVSUdhbWVwYWRQcm92aWRlck1hYy5tbSAqLzsgfTsKKwkJNTE1QzQxNUMyMDdEN0NBRTAwNzI2
RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVDNDE1QTIwN0Q3NEUwMDA3MjZFMDIgLyogU3VzcGVuZGVk
UGFnZVByb3h5LmNwcCAqLzsgfTsKIAkJNTE1RTc3MjcxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5j
UmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTVFNzcyNTE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJ
NTE1RTc3MjgxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3MjYxODNERDZGNjAwMDcyMDNG
IC8qIEFzeW5jUmVxdWVzdC5oICovOyB9OwogCQk1MTYwQkZFMTEzMzgxREY5MDA5MTg5OTkgLyog
TG9nZ2luZ0ZvdW5kYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTYwQkZFMDEzMzgxREY5MDA5MTg5OTkgLyogTG9nZ2luZ0ZvdW5kYXRpb24u
bW0gKi87IH07CkBAIC0zNDg2LDYgKzM0ODcsOCBAQAogCQk1MTVCRTFCMDFENTkwMDY5MDBERDdD
NjggLyogR2FtZXBhZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2Ft
ZXBhZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxQjExRDU5MDJC
NjAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdhbWVwYWREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE1QkUxQjYxRDVBOTRGOTAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVUlHYW1lcGFkUHJvdmlkZXJNYWMu
bW07IHBhdGggPSBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMubW07
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNTE1QzQxNUEyMDdENzRFMDAwNzI2RTAy
IC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTdXNwZW5kZWRQYWdlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTVDNDE1QjIwN0Q3NEUxMDA3MjZFMDIgLyogU3VzcGVuZGVkUGFnZVByb3h5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1c3BlbmRlZFBhZ2VQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVFNzcyNTE4M0RENkY2MDAwNzIwM0YgLyogQXN5
bmNSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5j
UmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUU3NzI2MTgzREQ2
RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXN5bmNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjBC
RkUwMTMzODFERjkwMDkxODk5OSAvKiBMb2dnaW5nRm91bmRhdGlvbi5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvZ2dpbmdGb3VuZGF0aW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI2OSw2ICs3MjcyLDggQEAKIAkJCQk0MTRERURENTFG
OUVERERGMDA0N0M0MEQgLyogU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oICovLAogCQkJCTUx
QTRENUE4MTZDQUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5jcHAgKi8sCiAJCQkJ
NTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggKi8sCisJCQkJ
NTE1QzQxNUEyMDdENzRFMDAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5jcHAgKi8sCisJ
CQkJNTE1QzQxNUIyMDdENzRFMTAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5oICovLAog
CQkJCTMxOEExRjA0MjA0RjQ3NjQwMDM0ODBCQyAvKiBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5j
cHAgKi8sCiAJCQkJMzE1NzEzNUQyMDQwQTlCMjAwODRGOUNGIC8qIFN5c3RlbVByZXZpZXdDb250
cm9sbGVyLmggKi8sCiAJCQkJMUFBNDE3QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2Vy
LmggKi8sCkBAIC0xMDg5Myw2ICsxMDg5OCw3IEBACiAJCQkJNTExOEU5QUMxRjI5NTk3NzAwM0VG
OUY1IC8qIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBRTAwRDZCMTgzMjdDMTIwMDA4N0RENyAvKiBTdHJpbmdSZWZl
cmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk2QkQ4NUUxNTAxOUJDMzAwNzFGNDI0IC8q
IFN0cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxNUM0MTVDMjA3RDdDQUUw
MDcyNkUwMiAvKiBTdXNwZW5kZWRQYWdlUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE4
QTFGMDUyMDRGNDc2NDAwMzQ4MEJDIC8qIFN5c3RlbVByZXZpZXdDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTMxNTcxMzVFMjA0MEE5QjIwMDg0RjlDRiAvKiBTeXN0ZW1QcmV2aWV3
Q29udHJvbGxlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMVpaNDE3RUYxMkMwMEQ4NzAw
MkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMWFlM2Q3M2Y5
NjljYmNmOWM5NDc4YzY5Y2U3NDA4NmE1MDAwMmUxMy4uOTUzZGE3ZDg1MTM5MWFhZTdiMmRiOWM4
OTY1ODlkZWE4NzIxNmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTU4NjYsNiArNTg2NiwxMSBAQCB2b2lkIFdlYlBhZ2U6OnVybFNjaGVt
ZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFz
awogICAgIGhhbmRsZXItPnRhc2tEaWRDb21wbGV0ZSh0YXNrSWRlbnRpZmllciwgZXJyb3IpOwog
fQogCit2b2lkIFdlYlBhZ2U6OnNldElzU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKQoreworICAg
IG1faXNTdXNwZW5kZWQgPSBzdXNwZW5kZWQ7Cit9CisKICNpZiBIQVZFKENGTkVUV09SS19TVE9S
QUdFX1BBUlRJVElPTklORykKIHN0YXRpYyB1aW50NjRfdCBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb250ZXh0SWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDRjM2I1OTUxNTE2MjMwYTgxYTI1ODQ3MmE1M2U3Yzk1YzQ4ZTk3NDAuLmEyOTFi
ODFjMGMwYmFiNGE3YWE0OWI1OThkMTY1MjVlMTdmYjk0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwNzIsNiArMTA3Miw4IEBAIHB1YmxpYzoK
IAogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5p
ZGVudGlmaWVyKCk7IH0KIAorICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzU3VzcGVuZGVkOyB9CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTEzODgsNiArMTM5MCw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFu
ZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBo
YW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKIAorICAgIHZvaWQgc2V0SXNTdXNwZW5kZWQoYm9vbCk7CisKICAg
ICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90QXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMpOwog
ICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmLCBTbmFwc2hv
dE9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50ID0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKTsKICNpZiBVU0UoQ0YpCkBAIC0xNzA1LDYgKzE3MDksNyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDcmVkZW50aWFsc01lc3Nlbmdlcj4gbV9j
cmVkZW50aWFsc01lc3NlbmdlcjsKICNlbmRpZgogCisgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsg
ZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZDhmZTRl
NWY0NDU0OGVlYTBkMWUyN2Q0NjQwMjNlYTQyYTkxMmQ4MS4uZTBmZjUyMTdlNWQyZWIyZGYyYTYz
OTI1NzcyYjM0NmVlZjM5ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00OTEsNiArNDkxLDggQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVVJMU2NoZW1lVGFza0RpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmll
ciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgVVJMU2NoZW1lVGFza0RpZENvbXBsZXRl
KHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKIAorICAgIFNldElzU3VzcGVuZGVkKGJvb2wgc3Vz
cGVuZGVkKQorCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAg
U3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElk
KQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGVhNjk1YmI0MmVmYjZkMWQ4MjU0M2Q2N2Q0NWQ0MjIzNWE2YTllMmMuLmVm
YjA3ZTNmYTNiNTAzYzc5NDM4NWZlYzNhZGU3ZTM2YTJiZGVkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMjgsNiArMTI4LDgg
QEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2hlY2tQcm9j
ZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciBwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIpCiAgICAgTWVzc2FnZXNBdmFp
bGFibGVGb3JQb3J0KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCkK
IAorICAgIFVwZGF0ZUFjdGl2ZVBhZ2VzKCkKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBTZXRT
Y3JlZW5Qcm9wZXJ0aWVzKHVpbnQzMl90IHByaW1hcnlTY3JlZW5JRCwgSGFzaE1hcDx1aW50MzJf
dCwgV2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcz4gc2NyZWVuUHJvcGVydGllcykKICNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggNjg1MTgzOTNkMGRl
NDU2MDY5ZTU0OWNlYzExNjE5MDVlZjdmOTg5ZC4uYTE0NzIwN2M4NzhlYjBkYmQ1NDVjNjI5NTRj
MDRhY2Q2NjFjYzNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0zODcsNyArMzg3LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1
cGRhdGVBY3RpdmVQYWdlcygpCiAgICAgYXV0byBhY3RpdmVQYWdlVVJMcyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9w
YWdlTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChwYWdlLT51c2VzRXBoZW1lcmFsU2Vzc2lv
bigpKQorICAgICAgICBpZiAocGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCBwYWdlLT5p
c1N1c3BlbmRlZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKE5TVVJM
ICpvcmlnaW5Bc1VSTCA9IG9yaWdpbigqcGFnZSkpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2E5NDAyZDAxMGUyZDFkZDBiNmEyZDU0YzA3MzFl
MzhlMWYzMDVlOC4uMzA0OTZlNmQzYmFkYTEzYzU3OWRjYjRkMzJlNTViMjc0NjQ4MGU1MSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDE4LTA0LTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbnRyb2R1Y2UgU3VzcGVuZGVkUGFnZVByb3h5IHRvIGtlZXAgb2xkIHdlYiBwcm9j
ZXNzZXMgYXJvdW5kIGFmdGVyIHRoZWlyIFdlYlBhZ2VQcm94eSBoYXMgYmVlbiBzd2FwcGVkIHRv
IGEgbmV3IG9uZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDU1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdh
dGlvbi5tbToKKwogMjAxOC0wNC0xMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGln
YWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0geGtiY29tbW9uOiBFUlJPUjogZmFpbGVkIHRvIGFk
ZCBkZWZhdWx0IGluY2x1ZGUgcGF0aCAvaG9tZS9tY2F0YW56YXJvL1Byb2plY3RzL1dlYktpdC9X
ZWJLaXRCdWlsZC9EZXBlbmRlbmNpZXNXUEUvUm9vdC9zaGFyZS9YMTEveGtiCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCA3NzJiZGIyZmM4MGZmNTUyMTAyOTdlNzMwM2ZiMmY0
MDFhMzA3YTAyLi4yMjk5YzA1YjgwNzYxNjZmODEwMWU0YjE4ZTg3YzM1M2YzZTE5ZDFhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2Fw
T25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTc1MSw0ICs3NTEsNDQgQEAgVEVTVChQ
cm9jZXNzU3dhcCwgTWFpbkZyYW1lc09ubHkpCiAgICAgRVhQRUNUX0VRKDF1LCBzZWVuUElEcy5z
aXplKCkpOwogfQogCitURVNUKFByb2Nlc3NTd2FwLCBPbmVQcmV2aW91c1Byb2Nlc3NSZW1haW5z
KQoreworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBw
cm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byB3
ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnBy
b2Nlc3NQb29sLmdldCgpXTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbUFNPTlNjaGVt
ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVI
YW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiUFNPTiJdOworCisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdl
dCgpXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tQU09OTmF2aWdhdGlvbkRlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vaG9zdDEvbWFp
bi5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBy
ZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAInBzb246Ly9ob3N0Mi9tYWluLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRv
bmUgPSBmYWxzZTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL2hvc3QzL21haW4uaHRtbCJdXTsKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8gTmF2aWdhdGlvbnMgdG8g
MyBkaWZmZXJlbnQgZG9tYWlucywgd2UgZXhwZWN0IHRvIGhhdmUgc2VlbiAzIGRpZmZlcmVudCBQ
SURzCisgICAgRVhQRUNUX0VRKDN1LCBzZWVuUElEcy5zaXplKCkpOworCisgICAgLy8gQnV0IG9u
bHkgMiBvZiB0aG9zZSBwcm9jZXNzZXMgc2hvdWxkIHN0aWxsIGJlIGFsaXZlCisgICAgRVhQRUNU
X0VRKDJ1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudF0pOworfQorCiAjZW5kaWYgLy8g
V0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
      

    </bug>

</bugzilla>