<?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>197710</bug_id>
          
          <creation_ts>2019-05-08 14:08:16 -0700</creation_ts>
          <short_desc>Pass insertTextAsync options as a struct</short_desc>
          <delta_ts>2019-05-08 15:51:40 -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 Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>197632</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1534477</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-05-08 14:08:16 -0700</bug_when>
    <thetext>WebPageProxy::insertTextAsync() is becoming unwieldy to work with given the large number of optional arguments that can be passed and I am eyeing to pass another optional argument towards fixing bug #197632. Let&apos;s pass a struct of options instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534493</commentid>
    <comment_count>1</comment_count>
      <attachid>369424</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-05-08 14:37:03 -0700</bug_when>
    <thetext>Created attachment 369424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534505</commentid>
    <comment_count>2</comment_count>
      <attachid>369427</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-05-08 15:09:14 -0700</bug_when>
    <thetext>Created attachment 369427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534511</commentid>
    <comment_count>3</comment_count>
      <attachid>369431</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-05-08 15:14:11 -0700</bug_when>
    <thetext>Created attachment 369431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534521</commentid>
    <comment_count>4</comment_count>
      <attachid>369431</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-05-08 15:25:30 -0700</bug_when>
    <thetext>Comment on attachment 369431
Patch

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

Looks like a nice simplification. r=me.

&gt; Source/WebKit/Shared/Cocoa/InsertTextOptions.h:36
&gt; +    EditingRangeIsRelativeTo editingRangeIsRelativeTo { EditingRangeIsRelativeTo::EditableRoot };

It might be more space-efficient to move the booleans to the bottom of the struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534529</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-05-08 15:47:39 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #4)
&gt; Comment on attachment 369431 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=369431&amp;action=review
&gt; 
&gt; Looks like a nice simplification. r=me.
&gt; 
&gt; &gt; Source/WebKit/Shared/Cocoa/InsertTextOptions.h:36
&gt; &gt; +    EditingRangeIsRelativeTo editingRangeIsRelativeTo { EditingRangeIsRelativeTo::EditableRoot };
&gt; 
&gt; It might be more space-efficient to move the booleans to the bottom of the
&gt; struct.

It shouldn&apos;t make a difference. sizeof(bool) == 1 == sizeof(uint8_t).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534534</commentid>
    <comment_count>6</comment_count>
      <attachid>369431</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-05-08 15:48:35 -0700</bug_when>
    <thetext>Comment on attachment 369431
Patch

Clearing flags on attachment: 369431

Committed r245073: &lt;https://trac.webkit.org/changeset/245073&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534535</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-05-08 15:48:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534537</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-08 15:51:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/50600263&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369424</attachid>
            <date>2019-05-08 14:37:03 -0700</date>
            <delta_ts>2019-05-08 15:09:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197710-20190508143702.patch</filename>
            <type>text/plain</type>
            <size>24064</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE2MmU4YjcyZTBkNTNlY2Ez
ZTVjNzM3MTY3Yjk0OWUzNDljMjE3NWUuLmFkYWI2NGI0NTZmYTc4M2U3NzY5OWFkMGI1YzdlMGQ2
MTBiNjY1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDUtMDggIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3MgaW5zZXJ0VGV4dEFzeW5j
IG9wdGlvbnMgYXMgYSBzdHJ1Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NzcxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5jKCkgaXMgYmVjb21pbmcg
dW53aWVsZHkgdG8gd29yayB3aXRoIGdpdmVuIHRoZSBsYXJnZSBudW1iZXIgb2YKKyAgICAgICAg
b3B0aW9uYWwgYXJndW1lbnRzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBpdC4gTGV0J3MgcGFzcyBh
IHN0cnVjdCBpbnN0ZWFkLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRp
b25zLmNwcDogQWRkZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViS2l0OjpJbnNl
cnRUZXh0T3B0aW9ucz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2Vi
S2l0OjpJbnNlcnRUZXh0T3B0aW9ucz46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0NvY29h
L0luc2VydFRleHRPcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9FZGl0aW5nUmFu
Z2UuaDogQWRkIEVudW1UcmFpdCBzbyB0aGF0IHdlIGNhbiBlbmNvZGUgdGhlIEVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbworICAgICAgICBlbnVtZXJhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OiBBZGQgYSBuZXcgZmlsZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjppbnNlcnRUZXh0KTogVXBk
YXRlIGNvZGUgbm93IHRoYXQgd2UgcGFzcyBhIHN0cnVjdC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnNldE1hcmtlZFRleHQpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRUZXh0
QXN5bmMpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgaW5zZXJ0VGV4dDpdKTogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOiBEaXR0by4KKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2Vy
dFRleHRBc3luYyk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IERp
dHRvLgorCiAyMDE5LTA1LTAzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBHb29nbGUgRG9jcyAmIFlhaG9vISBKYXBhbjogQ2Fu4oCZdCBjb21wb3NlIGNoYXJh
Y3RlcnMgd2l0aCBDaGluZXNlIG9yIEphcGFuZXNlIGtleWJvYXJkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAwMGVm
ZGM3M2JhZjYyNzliZmE0MmUzYzVlODVjNWVmYjQzNzk2MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcApAQCAtMCwwICsx
LDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc2Vy
dFRleHRPcHRpb25zLmgiCisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zJiBvcHRpb25zKQoreworICAgIGVuY29kZXIgPDwg
b3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cDsKKyAgICBlbmNvZGVyIDw8IG9wdGlvbnMuc3VwcHJl
c3NTZWxlY3Rpb25VcGRhdGU7CisgICAgZW5jb2RlciA8PCBvcHRpb25zLmVkaXRpbmdSYW5nZUlz
UmVsYXRpdmVUbzsKK30KKworT3B0aW9uYWw8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz4gQXJn
dW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgV2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcHRpb25zLnN1cHBy
ZXNzU2VsZWN0aW9uVXBkYXRlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMuZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gb3B0aW9uczsKK30KKworfSAv
LyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9J
bnNlcnRUZXh0T3B0aW9ucy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4
dE9wdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTY5NTIwYWUzMDVmYjY3OWE3YjhlMzFhZjU3YmJmMTQx
OGUzZjk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5z
ZXJ0VGV4dE9wdGlvbnMuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkVkaXRpbmdSYW5n
ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IEluc2VydFRleHRPcHRpb25zIHsK
KyAgICBib29sIHJlZ2lzdGVyVW5kb0dyb3VwIHsgZmFsc2UgfTsKKyAgICBib29sIHN1cHByZXNz
U2VsZWN0aW9uVXBkYXRlIHsgZmFsc2UgfTsKKyAgICBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8g
ZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIHsgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0
YWJsZVJvb3QgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgSVBD
IHsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpJbnNlcnRUZXh0T3B0
aW9ucz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViS2l0OjpJ
bnNlcnRUZXh0T3B0aW9ucyYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJLaXQ6Okluc2VydFRl
eHRPcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOworfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGlu
Z1JhbmdlLmgKaW5kZXggMWY1NmFlZmYyOTI4OTYzZjEzYmIyNGEwODE2ZjI3Zjg4ZTEyNDI2Zi4u
OTQ3MzhiN2Y4OGU5ZTA1OGRhMmVkMjU0YTE2MDQ0ZWJjNmI5MzA2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvRWRpdGluZ1JhbmdlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTEsMyArOTIs
OSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYktpdDo6RWRpdGluZ1Jhbmdl
PiB7CiAgICAgc3RhdGljIE9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIH0KKworbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYktpdDo6RWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvPiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczxXZWJLaXQ6OkVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbywgV2ViS2l0
OjpFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCwgV2ViS2l0OjpFZGl0aW5n
UmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaD47Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IGI0MDRlM2FiZWI0MTM2NjgxNDY4ZmFlODE0YzFiNDIwOGVlMTYyZGYuLjUzNjg2OWIw
NmYyNmQxNTZiNWYzNzEwN2ZlZDA2ZjgyMzdhMjVjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
QEAgLTE0Miw2ICsxNDIsNyBAQCBTaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQog
U2hhcmVkL0NvY29hL0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbQogU2hhcmVkL0NvY29hL0NvbXBs
ZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIubW0KIFNoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVz
dWx0Lm1tCitTaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuY3BwCiBTaGFyZWQvQ29jb2Ev
TG9hZFBhcmFtZXRlcnNDb2NvYS5tbQogU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlLmNwcAogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGVlYmUwMmM5
NDFlZjU5NTNhNjdhM2I3ZmI5MTI0YWY0NmZkMzZlZjQuLjRkZmZjNTIxNjQwMjNhMDE5NGY3ZjEx
Y2JkM2M3MTBkZTJiMDAyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5o
IgogI2ltcG9ydCAiRnVsbHNjcmVlbkNsaWVudC5oIgogI2ltcG9ydCAiR2VuZXJpY0NhbGxiYWNr
LmgiCisjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiTmF0aXZlV2ViR2VzdHVyZUV2ZW50LmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXli
b2FyZEV2ZW50LmgiCkBAIC00NzU5LDggKzQ3NjAsMTQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aW5z
ZXJ0VGV4dChpZCBzdHJpbmcsIE5TUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSkKICAgICBldmVudFRl
eHQucmVwbGFjZShOU0JhY2tUYWJDaGFyYWN0ZXIsIE5TVGFiQ2hhcmFjdGVyKTsgLy8gc2FtZSB0
aGluZyBpcyBkb25lIGluIEtleUV2ZW50TWFjLm1tIGluIFdlYkNvcmUKICAgICBpZiAoIWRpY3Rh
dGlvbkFsdGVybmF0aXZlcy5pc0VtcHR5KCkpCiAgICAgICAgIG1fcGFnZS0+aW5zZXJ0RGljdGF0
ZWRUZXh0QXN5bmMoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLCBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMsIHJlZ2lzdGVyVW5kb0dyb3VwKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+aW5z
ZXJ0VGV4dEFzeW5jKGV2ZW50VGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgcmVnaXN0ZXJVbmRvR3Jv
dXAsIG1faXNUZXh0SW5zZXJ0aW9uUmVwbGFjaW5nU29mdFNwYWNlID8gRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvOjpQYXJhZ3JhcGggOiBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxl
Um9vdCwgbV9pc1RleHRJbnNlcnRpb25SZXBsYWNpbmdTb2Z0U3BhY2UpOworICAgIGVsc2Ugewor
ICAgICAgICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOworICAgICAgICBvcHRpb25zLnJlZ2lz
dGVyVW5kb0dyb3VwID0gcmVnaXN0ZXJVbmRvR3JvdXA7CisgICAgICAgIG9wdGlvbnMuc3VwcHJl
c3NTZWxlY3Rpb25VcGRhdGUgPSBtX2lzVGV4dEluc2VydGlvblJlcGxhY2luZ1NvZnRTcGFjZSA/
IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6UGFyYWdyYXBoIDogRWRpdGluZ1JhbmdlSXNSZWxh
dGl2ZVRvOjpFZGl0YWJsZVJvb3Q7CisgICAgICAgIG9wdGlvbnMuc3VwcHJlc3NTZWxlY3Rpb25V
cGRhdGUgPSBtX2lzVGV4dEluc2VydGlvblJlcGxhY2luZ1NvZnRTcGFjZTsKKworICAgICAgICBt
X3BhZ2UtPmluc2VydFRleHRBc3luYyhldmVudFRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1v
dmUob3B0aW9ucykpOworICAgIH0KIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2VsZWN0ZWRSYW5n
ZVdpdGhDb21wbGV0aW9uSGFuZGxlcih2b2lkKF5jb21wbGV0aW9uSGFuZGxlclB0cikoTlNSYW5n
ZSBzZWxlY3RlZFJhbmdlKSkKQEAgLTQ5NTcsNyArNDk2NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNldE1hcmtlZFRleHQoaWQgc3RyaW5nLCBOU1JhbmdlIHNlbGVjdGVkUmFuZ2UsIE5TUmFuZ2Ug
cmVwbGFjCiAgICAgICAgIG5vdGlmeUlucHV0Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRp
b24oKTsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdG9yZSB0aGUgY29tbWFuZCB0byBo
YW5kbGUgaXQgYWZ0ZXIgRE9NIGV2ZW50IHByb2Nlc3NpbmcsIGFzIGl0J3MgcmVndWxhciBrZXli
b2FyZCBpbnB1dCBub3csIG5vdCBhIGNvbXBvc2l0aW9uLgogICAgICAgICBpZiAoW3RleHQgbGVu
Z3RoXSA9PSAxICYmIGlzQVNDSUkoW3RleHQgY2hhcmFjdGVyQXRJbmRleDowXSkpCi0gICAgICAg
ICAgICBtX3BhZ2UtPmluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlKTsKKyAg
ICAgICAgICAgIG1fcGFnZS0+aW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2Us
IHsgfSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIE5TQmVlcCgpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAzZDJjOWUx
NzA3ODI0ZjA1OGY4NzNkN2E5MWE0MzUyOWRhZGU3ODQ2Li5mZmJlZGFlYjM0YWJmM2UwMWNhMzJk
NGVjNTkyM2U3N2EyMDdiNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRnJhbWVJbmZv
RGF0YS5oIgorI2luY2x1ZGUgIkluc2VydFRleHRPcHRpb25zLmgiCiAjaW5jbHVkZSAiTG9hZFBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViR2Vz
dHVyZUV2ZW50LmgiCkBAIC03ODc4LDEyICs3ODc5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgICAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEFzeW5jKHRleHQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAs
IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8sIGJvb2wg
c3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFz
eW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJh
bmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6SW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIHJlZ2lz
dGVyVW5kb0dyb3VwLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZWRpdGluZ1JhbmdlSXNSZWxhdGl2
ZVRvKSwgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVu
dFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5n
ZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2MyNzdiNmQ4NGM2NjUwNTU5MThmMDhlMmJk
MjY0ZjY5YmM1YzY4Ni4uOTRkZWNkYWI4NDNlNDU4YjA1MDBiMzU1NWY3YTdiNDk3Y2U4ZDI3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI4Myw2ICsyODMsNyBA
QCBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q7CiBzdHJ1Y3QgRWRpdGluZ1Jh
bmdlOwogc3RydWN0IEVkaXRvclN0YXRlOwogc3RydWN0IEZyYW1lSW5mb0RhdGE7CitzdHJ1Y3Qg
SW5zZXJ0VGV4dE9wdGlvbnM7CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q7
CiBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOwpA
QCAtNzYyLDcgKzc2Myw3IEBAIHB1YmxpYzoKICAgICBDQUxheWVyICphY2NlbGVyYXRlZENvbXBv
c2l0aW5nUm9vdExheWVyKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFRleHRBc3luYyhjb25zdCBT
dHJpbmcmKTsKLSAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91
cCA9IGZhbHNlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPSBFZGl0aW5nUmFuZ2VJc1JlbGF0
aXZlVG86OkVkaXRhYmxlUm9vdCwgYm9vbCBzdXBwcmVzc1NlbGVjdGlvblVwZGF0ZSA9IGZhbHNl
KTsKKyAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVk
aXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgSW5zZXJ0VGV4dE9wdGlvbnMmJik7CiAgICAg
dm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1Jhbmdl
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5
bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKICAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIFdURjo6RnVuY3Rpb248dm9pZCAodWludDY0X3QsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDZmZWMxZGQ3Mjg1MDU1ZjE0YTg0NGNiYzI3
MTdmMjhjYjFjZGFkZjAuLjAzZDI0ZjYzMWU4YmFjYWE4NGJhNzZmODU3Y2RlZmI4MmM3MjM4Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzEsOCArMzEsOCBAQAogI2ltcG9ydCAiQVBJVUlDbGllbnQu
aCIKICNpbXBvcnQgIkRvY3VtZW50RWRpdGluZ0NvbnRleHQuaCIKICNpbXBvcnQgIkVkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJFZGl0aW5nUmFuZ2UuaCIKICNpbXBvcnQgIklu
cHV0Vmlld1VwZGF0ZURlZmVycmVyLmgiCisjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgog
I2ltcG9ydCAiTmF0aXZlV2ViVG91Y2hFdmVudC5oIgpAQCAtNDE1Miw3ICs0MTUyLDcgQEAgLSAo
dm9pZClkZWxldGVCYWNrd2FyZAogLy8gSW5zZXJ0cyB0aGUgZ2l2ZW4gc3RyaW5nLCByZXBsYWNp
bmcgYW55IHNlbGVjdGVkIG9yIG1hcmtlZCB0ZXh0LgogLSAodm9pZClpbnNlcnRUZXh0OihOU1N0
cmluZyAqKWFTdHJpbmdWYWx1ZQogewotICAgIF9wYWdlLT5pbnNlcnRUZXh0QXN5bmMoYVN0cmlu
Z1ZhbHVlLCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSgpKTsKKyAgICBfcGFnZS0+aW5zZXJ0VGV4dEFz
eW5jKGFTdHJpbmdWYWx1ZSwgV2ViS2l0OjpFZGl0aW5nUmFuZ2UoKSwgeyB9KTsKIH0KIAogLSAo
Qk9PTCloYXNUZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQppbmRleCAxMzhkMTMyYWMxZjMxNjI5NGNkNjNkYjg5NDE3OTMzZThjNWZmZTU0Li5h
ODAzZDI3M2RiNGIwOWMzMDg0YTI1YWI4MjIwMzdkNGI1NmY4M2I0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTMyLDggKzMyLDggQEAK
ICNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgi
CiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCi0jaW1wb3J0ICJFZGl0aW5nUmFuZ2UuaCIKICNp
bXBvcnQgIkVkaXRvclN0YXRlLmgiCisjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2lt
cG9ydCAiTWVudVV0aWxpdGllcy5oIgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5o
IgogI2ltcG9ydCAiUERGQ29udGV4dE1lbnUuaCIKQEAgLTE5OCwxMyArMTk4LDE5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IEVkaXRpbmdSYW5nCiAgICAgfQogCiAgICAgaWYgKGRpY3RhdGlvbkFsdGVybmF0aXZl
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50
UmFuZ2UsIHJlZ2lzdGVyVW5kb0dyb3VwKTsKKyAgICAgICAgSW5zZXJ0VGV4dE9wdGlvbnMgb3B0
aW9uczsKKyAgICAgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dy
b3VwOworCisgICAgICAgIGluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBX
VEZNb3ZlKG9wdGlvbnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHRBc3luYyh0ZXh0LCBy
ZXBsYWNlbWVudFJhbmdlLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIHJlZ2lzdGVyVW5kb0dyb3Vw
KSwgbV9wYWdlSUQpOwogI2Vsc2UKLSAgICBpbnNlcnRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1l
bnRSYW5nZSwgcmVnaXN0ZXJVbmRvR3JvdXApOworICAgIEluc2VydFRleHRPcHRpb25zIG9wdGlv
bnM7CisgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dyb3VwOwor
CisgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUob3B0
aW9ucykpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDhlZWM0MzIzYjQ5ODVjMjIzOTk0ZTExZGViZGU2YzUyNmU3
MTg4MjYuLjA4YmQ5MTA2YzdlMTBlNzIyMmIzY2UxM2I0OTFjYjY3OGUyY2JhNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU5NCw2
ICsxNTk0LDcgQEAKIAkJQ0UxQTBCRDUxQTQ4RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRDb25maWd1
cmF0aW9uU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTFBMEJDRjFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCAq
LzsgfTsKIAkJQ0UxQTBCRDYxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCRDAxQTQ4RTZDNjAwNTRF
Rjc0IC8qIFRDQ1NQSS5oICovOyB9OwogCQlDRTFBMEJENzFBNDhFNkM2MDA1NEVGNzQgLyogVGV4
dElucHV0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTFBMEJEMTFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggKi87IH07CisJCUNF
NTUwRTE1MjI4Mzc1MjIwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1NTBFMTIyMjgzNzNDODAwRDI4
NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggKi87IH07CiAJCUNFNUI0Qzg4MjFCNzNEODcwMDIy
RTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTVCNEM4NjIxQjczRDg3MDAyMkU2NEYg
LyogV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oICovOyB9OwogCQlDRTcwRUU1RDIy
NDQyQkQwMDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNzBFRTVDMjI0NDJCRDAwMEUwQUYwRiAv
KiBXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oICovOyB9OwogCQlDRUM4RjlDQjFGREY1ODcwMDAyNjM1
RTcgLyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZVByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQzhGOUNBMUZERjU4NzAwMDI2MzVF
NyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00NDk5LDYgKzQ1MDAsOCBAQAog
CQlDRTFBMEJDRjFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFuYWdlZENvbmZpZ3VyYXRpb25TUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0
IC8qIFRDQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUQ0NTUEkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8q
IFRleHRJbnB1dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0SW5w
dXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U1NTBFMTIyMjgzNzNDODAw
RDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc2VydFRleHRP
cHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFNTUwRTEzMjI4Mzc0NDQw
MEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNl
cnRUZXh0T3B0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNUI0Qzg2
MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaDsgcGF0aCA9IGlv
cy9XS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFNUI0Qzg3MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hh
bmdlZFdlYkV2ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tTeW50aGV0aWNGbGFnc0No
YW5nZWRXZWJFdmVudC5tbTsgcGF0aCA9IGlvcy9XS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2
ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTcwRUU1QTIyNDQyQkIzMDBF
MEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBX
S0Zvcm1QZXJpcGhlcmFsQmFzZS5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFs
QmFzZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzNDksNiArNjM1Miw4IEBA
CiAJCQkJMzdCRUM0REUxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXIubW0gKi8sCiAJCQkJQzU1RjkxNkMxQzU5NUU0NDAwMjlFOTJEIC8qIERhdGFEZXRlY3Rp
b25SZXN1bHQuaCAqLywKIAkJCQlDNTVGOTE2RDFDNTk1RTQ0MDAyOUU5MkQgLyogRGF0YURldGVj
dGlvblJlc3VsdC5tbSAqLywKKwkJCQlDRTU1MEUxMzIyODM3NDQ0MDBEMjg3OTEgLyogSW5zZXJ0
VGV4dE9wdGlvbnMuY3BwICovLAorCQkJCUNFNTUwRTEyMjI4MzczQzgwMEQyODc5MSAvKiBJbnNl
cnRUZXh0T3B0aW9ucy5oICovLAogCQkJCTJEMTA4NzYyMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2Fk
UGFyYW1ldGVyc0NvY29hLm1tICovLAogCQkJCUNEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQ
cm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCAqLywKIAkJCQlDRDI4NjVFRDIyNTU1NjIwMDA2MDZB
QzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovLApAQCAtOTI3Miw2ICs5Mjc3LDcg
QEAKIAkJCQlCQzMzRTBEMTEyNDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxNERGNzcxMjBCNUI3OTAwODI2QzBDIC8qIElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJERDQ1QURFMUU1
Rjg5NzIwMDZDMzU1RiAvKiBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0U1NTBFMTUyMjgzNzUyMjAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUUzOTFGRDIxODNDMUY4MDBDOEZCMzEgLyogSW5zcGVjdG9yVGFy
Z2V0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkNFNURGMUM1MDc2NkEwMENERTNGQSAv
KiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggYTNlYWM5YzZkMmVmZDFkYjEwYzYzNDdlNzE3MjlhODg1NDUzODIwYS4u
MThlZjFiOWUxMTYyZGZmNDJhZTRhOTliYzg5MDY3ZDNiMDU1M2Y0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNp
bmNsdWRlICJJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZEJ1bmRsZS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCIKKyNpbmNs
dWRlICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC01
MTE4LDcgKzUxMTksNyBAQCB2b2lkIFdlYlBhZ2U6OnNldFRleHRBc3luYyhjb25zdCBTdHJpbmcm
IHRleHQpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6aW5z
ZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBs
YWNlbWVudEVkaXRpbmdSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCwgdWludDMyX3QgZWRp
dGluZ1JhbmdlSXNSZWxhdGl2ZVRvLCBib29sIHN1cHByZXNzU2VsZWN0aW9uVXBkYXRlKQordm9p
ZCBXZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0
aW5nUmFuZ2UmIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmIG9w
dGlvbnMpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKIApAQCAtNTEyNiwxNCArNTEyNywxNCBAQCB2b2lkIFdlYlBh
Z2U6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYgcmVwbGFjZW1lbgogCiAgICAgYm9vbCByZXBsYWNlc1RleHQgPSBmYWxzZTsKICAgICBpZiAo
cmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQpIHsKLSAgICAgICAg
aWYgKGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShmcmFtZSwg
cmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UsIHN0YXRpY19jYXN0PEVkaXRpbmdSYW5nZUlzUmVsYXRp
dmVUbz4oZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKSkpIHsKLSAgICAgICAgICAgIFNldEZvclNj
b3BlPGJvb2w+IGlzU2VsZWN0aW5nVGV4dFdoaWxlSW5zZXJ0aW5nQXN5bmNocm9ub3VzbHkobV9p
c1NlbGVjdGluZ1RleHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5LCBzdXBwcmVzc1NlbGVj
dGlvblVwZGF0ZSk7CisgICAgICAgIGlmIChhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSBFZGl0aW5n
UmFuZ2U6OnRvUmFuZ2UoZnJhbWUsIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLCBvcHRpb25zLmVk
aXRpbmdSYW5nZUlzUmVsYXRpdmVUbykpIHsKKyAgICAgICAgICAgIFNldEZvclNjb3BlPGJvb2w+
IGlzU2VsZWN0aW5nVGV4dFdoaWxlSW5zZXJ0aW5nQXN5bmNocm9ub3VzbHkobV9pc1NlbGVjdGlu
Z1RleHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5LCBvcHRpb25zLnN1cHByZXNzU2VsZWN0
aW9uVXBkYXRlKTsKICAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihW
aXNpYmxlU2VsZWN0aW9uKCpyZXBsYWNlbWVudFJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklUWSkp
OwogICAgICAgICAgICAgcmVwbGFjZXNUZXh0ID0gcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UubGVu
Z3RoOwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmIChyZWdpc3RlclVuZG9Hcm91cCkK
KyAgICBpZiAob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkKICAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpKTsKICAgICAK
ICAgICBpZiAoIWZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhMjg4YmZlY2MwYzk3ZGNjOTRl
NjQxNjZhZTFjNzM5OWRkZGQ5MTQwLi4zZWEzZDE4YTQ5ZWMwYTcwNzIwYjdiYzczY2QxZDA1ZTkz
MGM2ZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC0xODQsNiArMTg0LDcgQEAgc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwogc3RydWN0IEds
b2JhbEZyYW1lSWRlbnRpZmllcjsKIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOwogc3Ry
dWN0IEhpZ2hsaWdodDsKK3N0cnVjdCBJbnNlcnRUZXh0T3B0aW9uczsKIHN0cnVjdCBLZXlwcmVz
c0NvbW1hbmQ7CiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbzsKIHN0cnVjdCBUZXh0Q2hl
Y2tpbmdSZXN1bHQ7CkBAIC03NzgsNyArNzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZENv
bXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0SW5wdXQpOwogCiAgICAgdm9pZCBzZXRUZXh0QXN5
bmMoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBpbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGJvb2wgcmVnaXN0
ZXJVbmRvR3JvdXAgPSBmYWxzZSwgdWludDMyX3QgZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID0g
KHVpbnQzMl90KUVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290LCBib29sIHN1
cHByZXNzU2VsZWN0aW9uVXBkYXRlID0gZmFsc2UpOworICAgIHZvaWQgaW5zZXJ0VGV4dEFzeW5j
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdl
LCBJbnNlcnRUZXh0T3B0aW9ucyYmKTsKICAgICB2b2lkIGdldE1hcmtlZFJhbmdlQXN5bmMoQ2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmMoQ2FsbGJhY2tJRCk7CiAg
ICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBDYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDNmZjRlNDA4NzEyYTQ3ZDYyMTI3ZDAxNDU1
ZWM2NTdlZjIyMzgwNjEuLmFkMWNiMGUwZGYzZjQ3ZTdmNWFiZjkxYTE2MmJlMzI3N2RmMDI0MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgpAQCAtNDI4LDcgKzQyOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5
UmVjZWl2ZXIgewogICAgIEFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgV2ViS2l0
OjpXZWJNb3VzZUV2ZW50IGV2ZW50KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCiAKICAg
ICBTZXRUZXh0QXN5bmMoU3RyaW5nIHRleHQpCi0gICAgSW5zZXJ0VGV4dEFzeW5jKFN0cmluZyB0
ZXh0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCBy
ZWdpc3RlclVuZG9Hcm91cCwgdWludDMyX3QgZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvLCBib29s
IHN1cHByZXNzU2VsZWN0aW9uVXBkYXRlKQorICAgIEluc2VydFRleHRBc3luYyhTdHJpbmcgdGV4
dCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UsIHN0cnVjdCBX
ZWJLaXQ6Okluc2VydFRleHRPcHRpb25zIG9wdGlvbnMpCiAgICAgR2V0TWFya2VkUmFuZ2VBc3lu
YyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRTZWxlY3RlZFJhbmdlQXN5
bmMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgQ2hhcmFjdGVySW5kZXhGb3JQ
b2ludEFzeW5jKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369427</attachid>
            <date>2019-05-08 15:09:14 -0700</date>
            <delta_ts>2019-05-08 15:14:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197710-20190508150913.patch</filename>
            <type>text/plain</type>
            <size>24129</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE2MmU4YjcyZTBkNTNlY2Ez
ZTVjNzM3MTY3Yjk0OWUzNDljMjE3NWUuLmFkYWI2NGI0NTZmYTc4M2U3NzY5OWFkMGI1YzdlMGQ2
MTBiNjY1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDUtMDggIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3MgaW5zZXJ0VGV4dEFzeW5j
IG9wdGlvbnMgYXMgYSBzdHJ1Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NzcxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5jKCkgaXMgYmVjb21pbmcg
dW53aWVsZHkgdG8gd29yayB3aXRoIGdpdmVuIHRoZSBsYXJnZSBudW1iZXIgb2YKKyAgICAgICAg
b3B0aW9uYWwgYXJndW1lbnRzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBpdC4gTGV0J3MgcGFzcyBh
IHN0cnVjdCBpbnN0ZWFkLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRp
b25zLmNwcDogQWRkZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViS2l0OjpJbnNl
cnRUZXh0T3B0aW9ucz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2Vi
S2l0OjpJbnNlcnRUZXh0T3B0aW9ucz46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0NvY29h
L0luc2VydFRleHRPcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9FZGl0aW5nUmFu
Z2UuaDogQWRkIEVudW1UcmFpdCBzbyB0aGF0IHdlIGNhbiBlbmNvZGUgdGhlIEVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbworICAgICAgICBlbnVtZXJhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OiBBZGQgYSBuZXcgZmlsZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjppbnNlcnRUZXh0KTogVXBk
YXRlIGNvZGUgbm93IHRoYXQgd2UgcGFzcyBhIHN0cnVjdC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnNldE1hcmtlZFRleHQpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRUZXh0
QXN5bmMpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgaW5zZXJ0VGV4dDpdKTogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOiBEaXR0by4KKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2Vy
dFRleHRBc3luYyk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IERp
dHRvLgorCiAyMDE5LTA1LTAzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBHb29nbGUgRG9jcyAmIFlhaG9vISBKYXBhbjogQ2Fu4oCZdCBjb21wb3NlIGNoYXJh
Y3RlcnMgd2l0aCBDaGluZXNlIG9yIEphcGFuZXNlIGtleWJvYXJkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAwMGVm
ZGM3M2JhZjYyNzliZmE0MmUzYzVlODVjNWVmYjQzNzk2MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcApAQCAtMCwwICsx
LDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc2Vy
dFRleHRPcHRpb25zLmgiCisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zJiBvcHRpb25zKQoreworICAgIGVuY29kZXIgPDwg
b3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cDsKKyAgICBlbmNvZGVyIDw8IG9wdGlvbnMuc3VwcHJl
c3NTZWxlY3Rpb25VcGRhdGU7CisgICAgZW5jb2RlciA8PCBvcHRpb25zLmVkaXRpbmdSYW5nZUlz
UmVsYXRpdmVUbzsKK30KKworT3B0aW9uYWw8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz4gQXJn
dW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgV2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcHRpb25zLnN1cHBy
ZXNzU2VsZWN0aW9uVXBkYXRlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMuZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gb3B0aW9uczsKK30KKworfSAv
LyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9J
bnNlcnRUZXh0T3B0aW9ucy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4
dE9wdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTY5NTIwYWUzMDVmYjY3OWE3YjhlMzFhZjU3YmJmMTQx
OGUzZjk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5z
ZXJ0VGV4dE9wdGlvbnMuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkVkaXRpbmdSYW5n
ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IEluc2VydFRleHRPcHRpb25zIHsK
KyAgICBib29sIHJlZ2lzdGVyVW5kb0dyb3VwIHsgZmFsc2UgfTsKKyAgICBib29sIHN1cHByZXNz
U2VsZWN0aW9uVXBkYXRlIHsgZmFsc2UgfTsKKyAgICBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8g
ZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIHsgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0
YWJsZVJvb3QgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgSVBD
IHsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpJbnNlcnRUZXh0T3B0
aW9ucz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViS2l0OjpJ
bnNlcnRUZXh0T3B0aW9ucyYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJLaXQ6Okluc2VydFRl
eHRPcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOworfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGlu
Z1JhbmdlLmgKaW5kZXggMWY1NmFlZmYyOTI4OTYzZjEzYmIyNGEwODE2ZjI3Zjg4ZTEyNDI2Zi4u
OTQ3MzhiN2Y4OGU5ZTA1OGRhMmVkMjU0YTE2MDQ0ZWJjNmI5MzA2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvRWRpdGluZ1JhbmdlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTEsMyArOTIs
OSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYktpdDo6RWRpdGluZ1Jhbmdl
PiB7CiAgICAgc3RhdGljIE9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIH0KKworbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYktpdDo6RWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvPiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczxXZWJLaXQ6OkVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbywgV2ViS2l0
OjpFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCwgV2ViS2l0OjpFZGl0aW5n
UmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaD47Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IGI0MDRlM2FiZWI0MTM2NjgxNDY4ZmFlODE0YzFiNDIwOGVlMTYyZGYuLjUzNjg2OWIw
NmYyNmQxNTZiNWYzNzEwN2ZlZDA2ZjgyMzdhMjVjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
QEAgLTE0Miw2ICsxNDIsNyBAQCBTaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQog
U2hhcmVkL0NvY29hL0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbQogU2hhcmVkL0NvY29hL0NvbXBs
ZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIubW0KIFNoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVz
dWx0Lm1tCitTaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuY3BwCiBTaGFyZWQvQ29jb2Ev
TG9hZFBhcmFtZXRlcnNDb2NvYS5tbQogU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlLmNwcAogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGVlYmUwMmM5
NDFlZjU5NTNhNjdhM2I3ZmI5MTI0YWY0NmZkMzZlZjQuLjRkZmZjNTIxNjQwMjNhMDE5NGY3ZjEx
Y2JkM2M3MTBkZTJiMDAyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5o
IgogI2ltcG9ydCAiRnVsbHNjcmVlbkNsaWVudC5oIgogI2ltcG9ydCAiR2VuZXJpY0NhbGxiYWNr
LmgiCisjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiTmF0aXZlV2ViR2VzdHVyZUV2ZW50LmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXli
b2FyZEV2ZW50LmgiCkBAIC00NzU5LDggKzQ3NjAsMTQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aW5z
ZXJ0VGV4dChpZCBzdHJpbmcsIE5TUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSkKICAgICBldmVudFRl
eHQucmVwbGFjZShOU0JhY2tUYWJDaGFyYWN0ZXIsIE5TVGFiQ2hhcmFjdGVyKTsgLy8gc2FtZSB0
aGluZyBpcyBkb25lIGluIEtleUV2ZW50TWFjLm1tIGluIFdlYkNvcmUKICAgICBpZiAoIWRpY3Rh
dGlvbkFsdGVybmF0aXZlcy5pc0VtcHR5KCkpCiAgICAgICAgIG1fcGFnZS0+aW5zZXJ0RGljdGF0
ZWRUZXh0QXN5bmMoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLCBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMsIHJlZ2lzdGVyVW5kb0dyb3VwKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+aW5z
ZXJ0VGV4dEFzeW5jKGV2ZW50VGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgcmVnaXN0ZXJVbmRvR3Jv
dXAsIG1faXNUZXh0SW5zZXJ0aW9uUmVwbGFjaW5nU29mdFNwYWNlID8gRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvOjpQYXJhZ3JhcGggOiBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxl
Um9vdCwgbV9pc1RleHRJbnNlcnRpb25SZXBsYWNpbmdTb2Z0U3BhY2UpOworICAgIGVsc2Ugewor
ICAgICAgICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOworICAgICAgICBvcHRpb25zLnJlZ2lz
dGVyVW5kb0dyb3VwID0gcmVnaXN0ZXJVbmRvR3JvdXA7CisgICAgICAgIG9wdGlvbnMuc3VwcHJl
c3NTZWxlY3Rpb25VcGRhdGUgPSBtX2lzVGV4dEluc2VydGlvblJlcGxhY2luZ1NvZnRTcGFjZSA/
IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6UGFyYWdyYXBoIDogRWRpdGluZ1JhbmdlSXNSZWxh
dGl2ZVRvOjpFZGl0YWJsZVJvb3Q7CisgICAgICAgIG9wdGlvbnMuc3VwcHJlc3NTZWxlY3Rpb25V
cGRhdGUgPSBtX2lzVGV4dEluc2VydGlvblJlcGxhY2luZ1NvZnRTcGFjZTsKKworICAgICAgICBt
X3BhZ2UtPmluc2VydFRleHRBc3luYyhldmVudFRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1v
dmUob3B0aW9ucykpOworICAgIH0KIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2VsZWN0ZWRSYW5n
ZVdpdGhDb21wbGV0aW9uSGFuZGxlcih2b2lkKF5jb21wbGV0aW9uSGFuZGxlclB0cikoTlNSYW5n
ZSBzZWxlY3RlZFJhbmdlKSkKQEAgLTQ5NTcsNyArNDk2NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNldE1hcmtlZFRleHQoaWQgc3RyaW5nLCBOU1JhbmdlIHNlbGVjdGVkUmFuZ2UsIE5TUmFuZ2Ug
cmVwbGFjCiAgICAgICAgIG5vdGlmeUlucHV0Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRp
b24oKTsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdG9yZSB0aGUgY29tbWFuZCB0byBo
YW5kbGUgaXQgYWZ0ZXIgRE9NIGV2ZW50IHByb2Nlc3NpbmcsIGFzIGl0J3MgcmVndWxhciBrZXli
b2FyZCBpbnB1dCBub3csIG5vdCBhIGNvbXBvc2l0aW9uLgogICAgICAgICBpZiAoW3RleHQgbGVu
Z3RoXSA9PSAxICYmIGlzQVNDSUkoW3RleHQgY2hhcmFjdGVyQXRJbmRleDowXSkpCi0gICAgICAg
ICAgICBtX3BhZ2UtPmluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlKTsKKyAg
ICAgICAgICAgIG1fcGFnZS0+aW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2Us
IHsgfSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIE5TQmVlcCgpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAzZDJjOWUx
NzA3ODI0ZjA1OGY4NzNkN2E5MWE0MzUyOWRhZGU3ODQ2Li5mZmJlZGFlYjM0YWJmM2UwMWNhMzJk
NGVjNTkyM2U3N2EyMDdiNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRnJhbWVJbmZv
RGF0YS5oIgorI2luY2x1ZGUgIkluc2VydFRleHRPcHRpb25zLmgiCiAjaW5jbHVkZSAiTG9hZFBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViR2Vz
dHVyZUV2ZW50LmgiCkBAIC03ODc4LDEyICs3ODc5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgICAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEFzeW5jKHRleHQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAs
IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8sIGJvb2wg
c3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFz
eW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJh
bmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6SW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIHJlZ2lz
dGVyVW5kb0dyb3VwLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZWRpdGluZ1JhbmdlSXNSZWxhdGl2
ZVRvKSwgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVu
dFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5n
ZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2MyNzdiNmQ4NGM2NjUwNTU5MThmMDhlMmJk
MjY0ZjY5YmM1YzY4Ni4uOTRkZWNkYWI4NDNlNDU4YjA1MDBiMzU1NWY3YTdiNDk3Y2U4ZDI3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI4Myw2ICsyODMsNyBA
QCBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q7CiBzdHJ1Y3QgRWRpdGluZ1Jh
bmdlOwogc3RydWN0IEVkaXRvclN0YXRlOwogc3RydWN0IEZyYW1lSW5mb0RhdGE7CitzdHJ1Y3Qg
SW5zZXJ0VGV4dE9wdGlvbnM7CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q7
CiBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOwpA
QCAtNzYyLDcgKzc2Myw3IEBAIHB1YmxpYzoKICAgICBDQUxheWVyICphY2NlbGVyYXRlZENvbXBv
c2l0aW5nUm9vdExheWVyKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFRleHRBc3luYyhjb25zdCBT
dHJpbmcmKTsKLSAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91
cCA9IGZhbHNlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPSBFZGl0aW5nUmFuZ2VJc1JlbGF0
aXZlVG86OkVkaXRhYmxlUm9vdCwgYm9vbCBzdXBwcmVzc1NlbGVjdGlvblVwZGF0ZSA9IGZhbHNl
KTsKKyAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVk
aXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgSW5zZXJ0VGV4dE9wdGlvbnMmJik7CiAgICAg
dm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1Jhbmdl
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5
bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKICAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIFdURjo6RnVuY3Rpb248dm9pZCAodWludDY0X3QsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDZmZWMxZGQ3Mjg1MDU1ZjE0YTg0NGNiYzI3
MTdmMjhjYjFjZGFkZjAuLjAzZDI0ZjYzMWU4YmFjYWE4NGJhNzZmODU3Y2RlZmI4MmM3MjM4Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzEsOCArMzEsOCBAQAogI2ltcG9ydCAiQVBJVUlDbGllbnQu
aCIKICNpbXBvcnQgIkRvY3VtZW50RWRpdGluZ0NvbnRleHQuaCIKICNpbXBvcnQgIkVkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJFZGl0aW5nUmFuZ2UuaCIKICNpbXBvcnQgIklu
cHV0Vmlld1VwZGF0ZURlZmVycmVyLmgiCisjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgog
I2ltcG9ydCAiTmF0aXZlV2ViVG91Y2hFdmVudC5oIgpAQCAtNDE1Miw3ICs0MTUyLDcgQEAgLSAo
dm9pZClkZWxldGVCYWNrd2FyZAogLy8gSW5zZXJ0cyB0aGUgZ2l2ZW4gc3RyaW5nLCByZXBsYWNp
bmcgYW55IHNlbGVjdGVkIG9yIG1hcmtlZCB0ZXh0LgogLSAodm9pZClpbnNlcnRUZXh0OihOU1N0
cmluZyAqKWFTdHJpbmdWYWx1ZQogewotICAgIF9wYWdlLT5pbnNlcnRUZXh0QXN5bmMoYVN0cmlu
Z1ZhbHVlLCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSgpKTsKKyAgICBfcGFnZS0+aW5zZXJ0VGV4dEFz
eW5jKGFTdHJpbmdWYWx1ZSwgV2ViS2l0OjpFZGl0aW5nUmFuZ2UoKSwgeyB9KTsKIH0KIAogLSAo
Qk9PTCloYXNUZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQppbmRleCAxMzhkMTMyYWMxZjMxNjI5NGNkNjNkYjg5NDE3OTMzZThjNWZmZTU0Li5h
ODAzZDI3M2RiNGIwOWMzMDg0YTI1YWI4MjIwMzdkNGI1NmY4M2I0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTMyLDggKzMyLDggQEAK
ICNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgi
CiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCi0jaW1wb3J0ICJFZGl0aW5nUmFuZ2UuaCIKICNp
bXBvcnQgIkVkaXRvclN0YXRlLmgiCisjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2lt
cG9ydCAiTWVudVV0aWxpdGllcy5oIgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5o
IgogI2ltcG9ydCAiUERGQ29udGV4dE1lbnUuaCIKQEAgLTE5OCwxMyArMTk4LDE5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IEVkaXRpbmdSYW5nCiAgICAgfQogCiAgICAgaWYgKGRpY3RhdGlvbkFsdGVybmF0aXZl
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50
UmFuZ2UsIHJlZ2lzdGVyVW5kb0dyb3VwKTsKKyAgICAgICAgSW5zZXJ0VGV4dE9wdGlvbnMgb3B0
aW9uczsKKyAgICAgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dy
b3VwOworCisgICAgICAgIGluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBX
VEZNb3ZlKG9wdGlvbnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHRBc3luYyh0ZXh0LCBy
ZXBsYWNlbWVudFJhbmdlLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIHJlZ2lzdGVyVW5kb0dyb3Vw
KSwgbV9wYWdlSUQpOwogI2Vsc2UKLSAgICBpbnNlcnRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1l
bnRSYW5nZSwgcmVnaXN0ZXJVbmRvR3JvdXApOworICAgIEluc2VydFRleHRPcHRpb25zIG9wdGlv
bnM7CisgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dyb3VwOwor
CisgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUob3B0
aW9ucykpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDhlZWM0MzIzYjQ5ODVjMjIzOTk0ZTExZGViZGU2YzUyNmU3
MTg4MjYuLjA4YmQ5MTA2YzdlMTBlNzIyMmIzY2UxM2I0OTFjYjY3OGUyY2JhNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU5NCw2
ICsxNTk0LDcgQEAKIAkJQ0UxQTBCRDUxQTQ4RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRDb25maWd1
cmF0aW9uU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTFBMEJDRjFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCAq
LzsgfTsKIAkJQ0UxQTBCRDYxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCRDAxQTQ4RTZDNjAwNTRF
Rjc0IC8qIFRDQ1NQSS5oICovOyB9OwogCQlDRTFBMEJENzFBNDhFNkM2MDA1NEVGNzQgLyogVGV4
dElucHV0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTFBMEJEMTFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggKi87IH07CisJCUNF
NTUwRTE1MjI4Mzc1MjIwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1NTBFMTIyMjgzNzNDODAwRDI4
NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggKi87IH07CiAJCUNFNUI0Qzg4MjFCNzNEODcwMDIy
RTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTVCNEM4NjIxQjczRDg3MDAyMkU2NEYg
LyogV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oICovOyB9OwogCQlDRTcwRUU1RDIy
NDQyQkQwMDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNzBFRTVDMjI0NDJCRDAwMEUwQUYwRiAv
KiBXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oICovOyB9OwogCQlDRUM4RjlDQjFGREY1ODcwMDAyNjM1
RTcgLyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZVByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQzhGOUNBMUZERjU4NzAwMDI2MzVF
NyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00NDk5LDYgKzQ1MDAsOCBAQAog
CQlDRTFBMEJDRjFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFuYWdlZENvbmZpZ3VyYXRpb25TUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0
IC8qIFRDQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUQ0NTUEkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8q
IFRleHRJbnB1dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0SW5w
dXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U1NTBFMTIyMjgzNzNDODAw
RDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc2VydFRleHRP
cHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFNTUwRTEzMjI4Mzc0NDQw
MEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNl
cnRUZXh0T3B0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNUI0Qzg2
MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaDsgcGF0aCA9IGlv
cy9XS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFNUI0Qzg3MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hh
bmdlZFdlYkV2ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tTeW50aGV0aWNGbGFnc0No
YW5nZWRXZWJFdmVudC5tbTsgcGF0aCA9IGlvcy9XS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2
ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTcwRUU1QTIyNDQyQkIzMDBF
MEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBX
S0Zvcm1QZXJpcGhlcmFsQmFzZS5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFs
QmFzZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzNDksNiArNjM1Miw4IEBA
CiAJCQkJMzdCRUM0REUxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXIubW0gKi8sCiAJCQkJQzU1RjkxNkMxQzU5NUU0NDAwMjlFOTJEIC8qIERhdGFEZXRlY3Rp
b25SZXN1bHQuaCAqLywKIAkJCQlDNTVGOTE2RDFDNTk1RTQ0MDAyOUU5MkQgLyogRGF0YURldGVj
dGlvblJlc3VsdC5tbSAqLywKKwkJCQlDRTU1MEUxMzIyODM3NDQ0MDBEMjg3OTEgLyogSW5zZXJ0
VGV4dE9wdGlvbnMuY3BwICovLAorCQkJCUNFNTUwRTEyMjI4MzczQzgwMEQyODc5MSAvKiBJbnNl
cnRUZXh0T3B0aW9ucy5oICovLAogCQkJCTJEMTA4NzYyMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2Fk
UGFyYW1ldGVyc0NvY29hLm1tICovLAogCQkJCUNEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQ
cm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCAqLywKIAkJCQlDRDI4NjVFRDIyNTU1NjIwMDA2MDZB
QzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovLApAQCAtOTI3Miw2ICs5Mjc3LDcg
QEAKIAkJCQlCQzMzRTBEMTEyNDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxNERGNzcxMjBCNUI3OTAwODI2QzBDIC8qIElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJERDQ1QURFMUU1
Rjg5NzIwMDZDMzU1RiAvKiBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0U1NTBFMTUyMjgzNzUyMjAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUUzOTFGRDIxODNDMUY4MDBDOEZCMzEgLyogSW5zcGVjdG9yVGFy
Z2V0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkNFNURGMUM1MDc2NkEwMENERTNGQSAv
KiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggYTNlYWM5YzZkMmVmZDFkYjEwYzYzNDdlNzE3MjlhODg1NDUzODIwYS4u
YzI3ZjViNzcxOGExNDlmYjBkNjgwMTFmZjVlZDlmNWU4YzY0MmNmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI1Miw2ICsyNTIsNyBAQAog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJJbnNlcnRUZXh0T3B0aW9u
cy5oIgogI2luY2x1ZGUgIlBERlBsdWdpbi5oIgogI2luY2x1ZGUgIlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIgpAQCAtNTEx
OCw3ICs1MTE5LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0
ZXh0KQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYlBhZ2U6Omluc2Vy
dFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFj
ZW1lbnRFZGl0aW5nUmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAsIHVpbnQzMl90IGVkaXRp
bmdSYW5nZUlzUmVsYXRpdmVUbywgYm9vbCBzdXBwcmVzc1NlbGVjdGlvblVwZGF0ZSkKK3ZvaWQg
V2ViUGFnZTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGlu
Z1JhbmdlJiByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSwgSW5zZXJ0VGV4dE9wdGlvbnMmJiBvcHRp
b25zKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9j
dXNlZE9yTWFpbkZyYW1lKCk7CiAKQEAgLTUxMjYsMTQgKzUxMjcsMTQgQEAgdm9pZCBXZWJQYWdl
OjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2Um
IHJlcGxhY2VtZW4KIAogICAgIGJvb2wgcmVwbGFjZXNUZXh0ID0gZmFsc2U7CiAgICAgaWYgKHJl
cGxhY2VtZW50RWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGlm
IChhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoZnJhbWUsIHJl
cGxhY2VtZW50RWRpdGluZ1JhbmdlLCBzdGF0aWNfY2FzdDxFZGl0aW5nUmFuZ2VJc1JlbGF0aXZl
VG8+KGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbykpKSB7Ci0gICAgICAgICAgICBTZXRGb3JTY29w
ZTxib29sPiBpc1NlbGVjdGluZ1RleHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5KG1faXNT
ZWxlY3RpbmdUZXh0V2hpbGVJbnNlcnRpbmdBc3luY2hyb25vdXNseSwgc3VwcHJlc3NTZWxlY3Rp
b25VcGRhdGUpOworICAgICAgICBpZiAoYXV0byByZXBsYWNlbWVudFJhbmdlID0gRWRpdGluZ1Jh
bmdlOjp0b1JhbmdlKGZyYW1lLCByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSwgb3B0aW9ucy5lZGl0
aW5nUmFuZ2VJc1JlbGF0aXZlVG8pKSB7CisgICAgICAgICAgICBTZXRGb3JTY29wZTxib29sPiBp
c1NlbGVjdGluZ1RleHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5KG1faXNTZWxlY3RpbmdU
ZXh0V2hpbGVJbnNlcnRpbmdBc3luY2hyb25vdXNseSwgb3B0aW9ucy5zdXBwcmVzc1NlbGVjdGlv
blVwZGF0ZSk7CiAgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlz
aWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsK
ICAgICAgICAgICAgIHJlcGxhY2VzVGV4dCA9IHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLmxlbmd0
aDsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAocmVnaXN0ZXJVbmRvR3JvdXApCisg
ICAgaWYgKG9wdGlvbnMucmVnaXN0ZXJVbmRvR3JvdXApCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJJbnNlcnRpb25VbmRvR3JvdXBpbmcoKSk7CiAgICAgCiAg
ICAgaWYgKCFmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTI4OGJmZWNjMGM5N2RjYzk0ZTY0
MTY2YWUxYzczOTlkZGRkOTE0MC4uNWFjYjU2YThkZWE3YWI1ODRmMjNiODM2YWFlZTViMTEzMjVi
N2VhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
MjQ4LDkgKzI0OCwxMCBAQCBlbnVtIEZpbmRPcHRpb25zIDogdWludDE2X3Q7CiBlbnVtIGNsYXNz
IERyYWdDb250cm9sbGVyQWN0aW9uIDogdWludDhfdDsKIAogc3RydWN0IEF0dHJpYnV0ZWRTdHJp
bmc7Ci1zdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdDsKIHN0cnVjdCBCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGU7CitzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdDsKIHN0cnVjdCBFZGl0b3JTdGF0
ZTsKK3N0cnVjdCBJbnNlcnRUZXh0T3B0aW9uczsKIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbjsKIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdDsKIHN0
cnVjdCBMb2FkUGFyYW1ldGVyczsKQEAgLTc3OCw3ICs3NzksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0
SW5wdXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRleHRJbnB1dCk7CiAKICAgICB2b2lkIHNl
dFRleHRBc3luYyhjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9v
bCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlLCB1aW50MzJfdCBlZGl0aW5nUmFuZ2VJc1JlbGF0
aXZlVG8gPSAodWludDMyX3QpRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3Qs
IGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUgPSBmYWxzZSk7CisgICAgdm9pZCBpbnNlcnRU
ZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2Vt
ZW50UmFuZ2UsIEluc2VydFRleHRPcHRpb25zJiYpOwogICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2VB
c3luYyhDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2VBc3luYyhDYWxsYmFj
a0lEKTsKICAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggM2ZmNGU0MDg3MTJhNDdkNjIx
MjdkMDE0NTVlYzY1N2VmMjIzODA2MS4uYWQxY2IwZTBkZjNmNDdlN2Y1YWJmOTFhMTYyYmUzMjc3
ZGYwMjQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00MjgsNyArNDI4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVy
LCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25v
dXMKIAogICAgIFNldFRleHRBc3luYyhTdHJpbmcgdGV4dCkKLSAgICBJbnNlcnRUZXh0QXN5bmMo
U3RyaW5nIHRleHQsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJhbmdl
LCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwLCB1aW50MzJfdCBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZl
VG8sIGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUpCisgICAgSW5zZXJ0VGV4dEFzeW5jKFN0
cmluZyB0ZXh0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwg
c3RydWN0IFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnMgb3B0aW9ucykKICAgICBHZXRNYXJrZWRS
YW5nZUFzeW5jKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldFNlbGVjdGVk
UmFuZ2VBc3luYyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBDaGFyYWN0ZXJJ
bmRleEZvclBvaW50QXN5bmMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369431</attachid>
            <date>2019-05-08 15:14:11 -0700</date>
            <delta_ts>2019-05-08 15:48:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197710-20190508151410.patch</filename>
            <type>text/plain</type>
            <size>24132</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE2MmU4YjcyZTBkNTNlY2Ez
ZTVjNzM3MTY3Yjk0OWUzNDljMjE3NWUuLmFkYWI2NGI0NTZmYTc4M2U3NzY5OWFkMGI1YzdlMGQ2
MTBiNjY1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDUtMDggIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3MgaW5zZXJ0VGV4dEFzeW5j
IG9wdGlvbnMgYXMgYSBzdHJ1Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NzcxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5jKCkgaXMgYmVjb21pbmcg
dW53aWVsZHkgdG8gd29yayB3aXRoIGdpdmVuIHRoZSBsYXJnZSBudW1iZXIgb2YKKyAgICAgICAg
b3B0aW9uYWwgYXJndW1lbnRzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBpdC4gTGV0J3MgcGFzcyBh
IHN0cnVjdCBpbnN0ZWFkLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRp
b25zLmNwcDogQWRkZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViS2l0OjpJbnNl
cnRUZXh0T3B0aW9ucz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2Vi
S2l0OjpJbnNlcnRUZXh0T3B0aW9ucz46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0NvY29h
L0luc2VydFRleHRPcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9FZGl0aW5nUmFu
Z2UuaDogQWRkIEVudW1UcmFpdCBzbyB0aGF0IHdlIGNhbiBlbmNvZGUgdGhlIEVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbworICAgICAgICBlbnVtZXJhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OiBBZGQgYSBuZXcgZmlsZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjppbnNlcnRUZXh0KTogVXBk
YXRlIGNvZGUgbm93IHRoYXQgd2UgcGFzcyBhIHN0cnVjdC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnNldE1hcmtlZFRleHQpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRUZXh0
QXN5bmMpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgaW5zZXJ0VGV4dDpdKTogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOiBEaXR0by4KKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2Vy
dFRleHRBc3luYyk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IERp
dHRvLgorCiAyMDE5LTA1LTAzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBHb29nbGUgRG9jcyAmIFlhaG9vISBKYXBhbjogQ2Fu4oCZdCBjb21wb3NlIGNoYXJh
Y3RlcnMgd2l0aCBDaGluZXNlIG9yIEphcGFuZXNlIGtleWJvYXJkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAwMGVm
ZGM3M2JhZjYyNzliZmE0MmUzYzVlODVjNWVmYjQzNzk2MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcApAQCAtMCwwICsx
LDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc2Vy
dFRleHRPcHRpb25zLmgiCisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zJiBvcHRpb25zKQoreworICAgIGVuY29kZXIgPDwg
b3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cDsKKyAgICBlbmNvZGVyIDw8IG9wdGlvbnMuc3VwcHJl
c3NTZWxlY3Rpb25VcGRhdGU7CisgICAgZW5jb2RlciA8PCBvcHRpb25zLmVkaXRpbmdSYW5nZUlz
UmVsYXRpdmVUbzsKK30KKworT3B0aW9uYWw8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz4gQXJn
dW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgV2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcHRpb25zLnN1cHBy
ZXNzU2VsZWN0aW9uVXBkYXRlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMuZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gb3B0aW9uczsKK30KKworfSAv
LyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9J
bnNlcnRUZXh0T3B0aW9ucy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4
dE9wdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTY5NTIwYWUzMDVmYjY3OWE3YjhlMzFhZjU3YmJmMTQx
OGUzZjk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5z
ZXJ0VGV4dE9wdGlvbnMuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkVkaXRpbmdSYW5n
ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IEluc2VydFRleHRPcHRpb25zIHsK
KyAgICBib29sIHJlZ2lzdGVyVW5kb0dyb3VwIHsgZmFsc2UgfTsKKyAgICBib29sIHN1cHByZXNz
U2VsZWN0aW9uVXBkYXRlIHsgZmFsc2UgfTsKKyAgICBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8g
ZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIHsgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0
YWJsZVJvb3QgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgSVBD
IHsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpJbnNlcnRUZXh0T3B0
aW9ucz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViS2l0OjpJ
bnNlcnRUZXh0T3B0aW9ucyYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJLaXQ6Okluc2VydFRl
eHRPcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOworfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGlu
Z1JhbmdlLmgKaW5kZXggMWY1NmFlZmYyOTI4OTYzZjEzYmIyNGEwODE2ZjI3Zjg4ZTEyNDI2Zi4u
OTQ3MzhiN2Y4OGU5ZTA1OGRhMmVkMjU0YTE2MDQ0ZWJjNmI5MzA2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvRWRpdGluZ1JhbmdlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTEsMyArOTIs
OSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYktpdDo6RWRpdGluZ1Jhbmdl
PiB7CiAgICAgc3RhdGljIE9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIH0KKworbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYktpdDo6RWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvPiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczxXZWJLaXQ6OkVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbywgV2ViS2l0
OjpFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCwgV2ViS2l0OjpFZGl0aW5n
UmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaD47Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IGI0MDRlM2FiZWI0MTM2NjgxNDY4ZmFlODE0YzFiNDIwOGVlMTYyZGYuLjUzNjg2OWIw
NmYyNmQxNTZiNWYzNzEwN2ZlZDA2ZjgyMzdhMjVjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
QEAgLTE0Miw2ICsxNDIsNyBAQCBTaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQog
U2hhcmVkL0NvY29hL0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbQogU2hhcmVkL0NvY29hL0NvbXBs
ZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIubW0KIFNoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVz
dWx0Lm1tCitTaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuY3BwCiBTaGFyZWQvQ29jb2Ev
TG9hZFBhcmFtZXRlcnNDb2NvYS5tbQogU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlLmNwcAogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGVlYmUwMmM5
NDFlZjU5NTNhNjdhM2I3ZmI5MTI0YWY0NmZkMzZlZjQuLjI5NjEwMzA1NGQyNjVmYTg4ZWM3ZWE2
NDg2YzViZWVkZWJlMjkzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5o
IgogI2ltcG9ydCAiRnVsbHNjcmVlbkNsaWVudC5oIgogI2ltcG9ydCAiR2VuZXJpY0NhbGxiYWNr
LmgiCisjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiTmF0aXZlV2ViR2VzdHVyZUV2ZW50LmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXli
b2FyZEV2ZW50LmgiCkBAIC00NzU5LDggKzQ3NjAsMTQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aW5z
ZXJ0VGV4dChpZCBzdHJpbmcsIE5TUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSkKICAgICBldmVudFRl
eHQucmVwbGFjZShOU0JhY2tUYWJDaGFyYWN0ZXIsIE5TVGFiQ2hhcmFjdGVyKTsgLy8gc2FtZSB0
aGluZyBpcyBkb25lIGluIEtleUV2ZW50TWFjLm1tIGluIFdlYkNvcmUKICAgICBpZiAoIWRpY3Rh
dGlvbkFsdGVybmF0aXZlcy5pc0VtcHR5KCkpCiAgICAgICAgIG1fcGFnZS0+aW5zZXJ0RGljdGF0
ZWRUZXh0QXN5bmMoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLCBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMsIHJlZ2lzdGVyVW5kb0dyb3VwKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+aW5z
ZXJ0VGV4dEFzeW5jKGV2ZW50VGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgcmVnaXN0ZXJVbmRvR3Jv
dXAsIG1faXNUZXh0SW5zZXJ0aW9uUmVwbGFjaW5nU29mdFNwYWNlID8gRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvOjpQYXJhZ3JhcGggOiBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxl
Um9vdCwgbV9pc1RleHRJbnNlcnRpb25SZXBsYWNpbmdTb2Z0U3BhY2UpOworICAgIGVsc2Ugewor
ICAgICAgICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOworICAgICAgICBvcHRpb25zLnJlZ2lz
dGVyVW5kb0dyb3VwID0gcmVnaXN0ZXJVbmRvR3JvdXA7CisgICAgICAgIG9wdGlvbnMuZWRpdGlu
Z1JhbmdlSXNSZWxhdGl2ZVRvID0gbV9pc1RleHRJbnNlcnRpb25SZXBsYWNpbmdTb2Z0U3BhY2Ug
PyBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCA6IEVkaXRpbmdSYW5nZUlzUmVs
YXRpdmVUbzo6RWRpdGFibGVSb290OworICAgICAgICBvcHRpb25zLnN1cHByZXNzU2VsZWN0aW9u
VXBkYXRlID0gbV9pc1RleHRJbnNlcnRpb25SZXBsYWNpbmdTb2Z0U3BhY2U7CisKKyAgICAgICAg
bV9wYWdlLT5pbnNlcnRUZXh0QXN5bmMoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZN
b3ZlKG9wdGlvbnMpKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNlbGVjdGVkUmFu
Z2VXaXRoQ29tcGxldGlvbkhhbmRsZXIodm9pZCheY29tcGxldGlvbkhhbmRsZXJQdHIpKE5TUmFu
Z2Ugc2VsZWN0ZWRSYW5nZSkpCkBAIC00OTU3LDcgKzQ5NjQsNyBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpzZXRNYXJrZWRUZXh0KGlkIHN0cmluZywgTlNSYW5nZSBzZWxlY3RlZFJhbmdlLCBOU1Jhbmdl
IHJlcGxhYwogICAgICAgICBub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0
aW9uKCk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3RvcmUgdGhlIGNvbW1hbmQgdG8g
aGFuZGxlIGl0IGFmdGVyIERPTSBldmVudCBwcm9jZXNzaW5nLCBhcyBpdCdzIHJlZ3VsYXIga2V5
Ym9hcmQgaW5wdXQgbm93LCBub3QgYSBjb21wb3NpdGlvbi4KICAgICAgICAgaWYgKFt0ZXh0IGxl
bmd0aF0gPT0gMSAmJiBpc0FTQ0lJKFt0ZXh0IGNoYXJhY3RlckF0SW5kZXg6MF0pKQotICAgICAg
ICAgICAgbV9wYWdlLT5pbnNlcnRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSk7Cisg
ICAgICAgICAgICBtX3BhZ2UtPmluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdl
LCB7IH0pOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBOU0JlZXAoKTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggM2QyYzll
MTcwNzgyNGYwNThmODczZDdhOTFhNDM1MjlkYWRlNzg0Ni4uNTlmZDAwOTYzMDkxNWYwMjE2ZWZj
ODg4YjM3ZGE0OGM3YjcwNzhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC0xODgsNiArMTg4LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1
ZGUgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJJbnNlcnRUZXh0T3B0aW9ucy5oIgog
I2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNsdWRlICJS
ZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCIKICNpbmNsdWRlICJUb3Vj
aEJhck1lbnVEYXRhLmgiCkBAIC03ODc4LDEyICs3ODc5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgICAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEFzeW5jKHRleHQpLCBtX3BhZ2VJRCk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3Jv
dXAsIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8sIGJv
b2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4
dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVu
dFJhbmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6SW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIHJl
Z2lzdGVyVW5kb0dyb3VwLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZWRpdGluZ1JhbmdlSXNSZWxh
dGl2ZVRvKSwgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNl
bWVudFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdS
YW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2MyNzdiNmQ4NGM2NjUwNTU5MThmMDhl
MmJkMjY0ZjY5YmM1YzY4Ni4uOTRkZWNkYWI4NDNlNDU4YjA1MDBiMzU1NWY3YTdiNDk3Y2U4ZDI3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI4Myw2ICsyODMs
NyBAQCBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q7CiBzdHJ1Y3QgRWRpdGlu
Z1JhbmdlOwogc3RydWN0IEVkaXRvclN0YXRlOwogc3RydWN0IEZyYW1lSW5mb0RhdGE7CitzdHJ1
Y3QgSW5zZXJ0VGV4dE9wdGlvbnM7CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3Q7CiBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRh
OwpAQCAtNzYyLDcgKzc2Myw3IEBAIHB1YmxpYzoKICAgICBDQUxheWVyICphY2NlbGVyYXRlZENv
bXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFRleHRBc3luYyhjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9H
cm91cCA9IGZhbHNlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPSBFZGl0aW5nUmFuZ2VJc1Jl
bGF0aXZlVG86OkVkaXRhYmxlUm9vdCwgYm9vbCBzdXBwcmVzc1NlbGVjdGlvblVwZGF0ZSA9IGZh
bHNlKTsKKyAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0
IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgSW5zZXJ0VGV4dE9wdGlvbnMmJik7CiAg
ICAgdm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1Jh
bmdlLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdl
QXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKICAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIFdURjo6RnVuY3Rpb248dm9pZCAodWludDY0X3QsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDZmZWMxZGQ3Mjg1MDU1ZjE0YTg0NGNi
YzI3MTdmMjhjYjFjZGFkZjAuLjAzZDI0ZjYzMWU4YmFjYWE4NGJhNzZmODU3Y2RlZmI4MmM3MjM4
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzEsOCArMzEsOCBAQAogI2ltcG9ydCAiQVBJVUlDbGll
bnQuaCIKICNpbXBvcnQgIkRvY3VtZW50RWRpdGluZ0NvbnRleHQuaCIKICNpbXBvcnQgIkVkaXRh
YmxlSW1hZ2VDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJFZGl0aW5nUmFuZ2UuaCIKICNpbXBvcnQg
IklucHV0Vmlld1VwZGF0ZURlZmVycmVyLmgiCisjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5o
IgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5o
IgogI2ltcG9ydCAiTmF0aXZlV2ViVG91Y2hFdmVudC5oIgpAQCAtNDE1Miw3ICs0MTUyLDcgQEAg
LSAodm9pZClkZWxldGVCYWNrd2FyZAogLy8gSW5zZXJ0cyB0aGUgZ2l2ZW4gc3RyaW5nLCByZXBs
YWNpbmcgYW55IHNlbGVjdGVkIG9yIG1hcmtlZCB0ZXh0LgogLSAodm9pZClpbnNlcnRUZXh0OihO
U1N0cmluZyAqKWFTdHJpbmdWYWx1ZQogewotICAgIF9wYWdlLT5pbnNlcnRUZXh0QXN5bmMoYVN0
cmluZ1ZhbHVlLCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSgpKTsKKyAgICBfcGFnZS0+aW5zZXJ0VGV4
dEFzeW5jKGFTdHJpbmdWYWx1ZSwgV2ViS2l0OjpFZGl0aW5nUmFuZ2UoKSwgeyB9KTsKIH0KIAog
LSAoQk9PTCloYXNUZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQppbmRleCAxMzhkMTMyYWMxZjMxNjI5NGNkNjNkYjg5NDE3OTMzZThjNWZmZTU0
Li5hODAzZDI3M2RiNGIwOWMzMDg0YTI1YWI4MjIwMzdkNGI1NmY4M2I0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTMyLDggKzMyLDgg
QEAKICNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIkNvbG9yU3BhY2VEYXRh
LmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCi0jaW1wb3J0ICJFZGl0aW5nUmFuZ2UuaCIK
ICNpbXBvcnQgIkVkaXRvclN0YXRlLmgiCisjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgog
I2ltcG9ydCAiTWVudVV0aWxpdGllcy5oIgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dC5oIgogI2ltcG9ydCAiUERGQ29udGV4dE1lbnUuaCIKQEAgLTE5OCwxMyArMTk4LDE5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IEVkaXRpbmdSYW5nCiAgICAgfQogCiAgICAgaWYgKGRpY3RhdGlvbkFsdGVybmF0
aXZlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2Vt
ZW50UmFuZ2UsIHJlZ2lzdGVyVW5kb0dyb3VwKTsKKyAgICAgICAgSW5zZXJ0VGV4dE9wdGlvbnMg
b3B0aW9uczsKKyAgICAgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5k
b0dyb3VwOworCisgICAgICAgIGluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdl
LCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHRBc3luYyh0ZXh0
LCByZXBsYWNlbWVudFJhbmdlLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIHJlZ2lzdGVyVW5kb0dy
b3VwKSwgbV9wYWdlSUQpOwogI2Vsc2UKLSAgICBpbnNlcnRUZXh0QXN5bmModGV4dCwgcmVwbGFj
ZW1lbnRSYW5nZSwgcmVnaXN0ZXJVbmRvR3JvdXApOworICAgIEluc2VydFRleHRPcHRpb25zIG9w
dGlvbnM7CisgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dyb3Vw
OworCisgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUo
b3B0aW9ucykpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhlZWM0MzIzYjQ5ODVjMjIzOTk0ZTExZGViZGU2YzUy
NmU3MTg4MjYuLjA4YmQ5MTA2YzdlMTBlNzIyMmIzY2UxM2I0OTFjYjY3OGUyY2JhNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU5
NCw2ICsxNTk0LDcgQEAKIAkJQ0UxQTBCRDUxQTQ4RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRDb25m
aWd1cmF0aW9uU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRTFBMEJDRjFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEku
aCAqLzsgfTsKIAkJQ0UxQTBCRDYxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCRDAxQTQ4RTZDNjAw
NTRFRjc0IC8qIFRDQ1NQSS5oICovOyB9OwogCQlDRTFBMEJENzFBNDhFNkM2MDA1NEVGNzQgLyog
VGV4dElucHV0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRTFBMEJEMTFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggKi87IH07CisJ
CUNFNTUwRTE1MjI4Mzc1MjIwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1NTBFMTIyMjgzNzNDODAw
RDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggKi87IH07CiAJCUNFNUI0Qzg4MjFCNzNEODcw
MDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTVCNEM4NjIxQjczRDg3MDAyMkU2
NEYgLyogV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oICovOyB9OwogCQlDRTcwRUU1
RDIyNDQyQkQwMDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNzBFRTVDMjI0NDJCRDAwMEUwQUYw
RiAvKiBXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oICovOyB9OwogCQlDRUM4RjlDQjFGREY1ODcwMDAy
NjM1RTcgLyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZVByaXZhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQzhGOUNBMUZERjU4NzAwMDI2
MzVFNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlUHJpdmF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00NDk5LDYgKzQ1MDAsOCBA
QAogCQlDRTFBMEJDRjFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFuYWdlZENvbmZpZ3VyYXRpb25T
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRF
Rjc0IC8qIFRDQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUQ0NTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0
IC8qIFRleHRJbnB1dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0
SW5wdXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U1NTBFMTIyMjgzNzND
ODAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc2VydFRl
eHRPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFNTUwRTEzMjI4Mzc0
NDQwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnNlcnRUZXh0T3B0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNUI0
Qzg2MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaDsgcGF0aCA9
IGlvcy9XS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFNUI0Qzg3MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdz
Q2hhbmdlZFdlYkV2ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tTeW50aGV0aWNGbGFn
c0NoYW5nZWRXZWJFdmVudC5tbTsgcGF0aCA9IGlvcy9XS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdl
YkV2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTcwRUU1QTIyNDQyQkIz
MDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBXS0Zvcm1QZXJpcGhlcmFsQmFzZS5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhl
cmFsQmFzZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzNDksNiArNjM1Miw4
IEBACiAJCQkJMzdCRUM0REUxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXIubW0gKi8sCiAJCQkJQzU1RjkxNkMxQzU5NUU0NDAwMjlFOTJEIC8qIERhdGFEZXRl
Y3Rpb25SZXN1bHQuaCAqLywKIAkJCQlDNTVGOTE2RDFDNTk1RTQ0MDAyOUU5MkQgLyogRGF0YURl
dGVjdGlvblJlc3VsdC5tbSAqLywKKwkJCQlDRTU1MEUxMzIyODM3NDQ0MDBEMjg3OTEgLyogSW5z
ZXJ0VGV4dE9wdGlvbnMuY3BwICovLAorCQkJCUNFNTUwRTEyMjI4MzczQzgwMEQyODc5MSAvKiBJ
bnNlcnRUZXh0T3B0aW9ucy5oICovLAogCQkJCTJEMTA4NzYyMUQyQzY0MUIwMEI4NUY4MiAvKiBM
b2FkUGFyYW1ldGVyc0NvY29hLm1tICovLAogCQkJCUNEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAv
KiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCAqLywKIAkJCQlDRDI4NjVFRDIyNTU1NjIwMDA2
MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovLApAQCAtOTI3Miw2ICs5Mjc3
LDcgQEAKIAkJCQlCQzMzRTBEMTEyNDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxNERGNzcxMjBCNUI3OTAwODI2QzBDIC8q
IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJERDQ1QURF
MUU1Rjg5NzIwMDZDMzU1RiAvKiBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQ0U1NTBFMTUyMjgzNzUyMjAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNUUzOTFGRDIxODNDMUY4MDBDOEZCMzEgLyogSW5zcGVjdG9y
VGFyZ2V0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkNFNURGMUM1MDc2NkEwMENERTNG
QSAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1
ZXN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggYTNlYWM5YzZkMmVmZDFkYjEwYzYzNDdlNzE3MjlhODg1NDUzODIw
YS4uYzI3ZjViNzcxOGExNDlmYjBkNjgwMTFmZjVlZDlmNWU4YzY0MmNmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI1Miw2ICsyNTIsNyBA
QAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJJbnNlcnRUZXh0T3B0
aW9ucy5oIgogI2luY2x1ZGUgIlBERlBsdWdpbi5oIgogI2luY2x1ZGUgIlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIgpAQCAt
NTExOCw3ICs1MTE5LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRUZXh0QXN5bmMoY29uc3QgU3RyaW5n
JiB0ZXh0KQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYlBhZ2U6Omlu
c2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVw
bGFjZW1lbnRFZGl0aW5nUmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAsIHVpbnQzMl90IGVk
aXRpbmdSYW5nZUlzUmVsYXRpdmVUbywgYm9vbCBzdXBwcmVzc1NlbGVjdGlvblVwZGF0ZSkKK3Zv
aWQgV2ViUGFnZTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRp
dGluZ1JhbmdlJiByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSwgSW5zZXJ0VGV4dE9wdGlvbnMmJiBv
cHRpb25zKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCku
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKQEAgLTUxMjYsMTQgKzUxMjcsMTQgQEAgdm9pZCBXZWJQ
YWdlOjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFu
Z2UmIHJlcGxhY2VtZW4KIAogICAgIGJvb2wgcmVwbGFjZXNUZXh0ID0gZmFsc2U7CiAgICAgaWYg
KHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAg
IGlmIChhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoZnJhbWUs
IHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLCBzdGF0aWNfY2FzdDxFZGl0aW5nUmFuZ2VJc1JlbGF0
aXZlVG8+KGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbykpKSB7Ci0gICAgICAgICAgICBTZXRGb3JT
Y29wZTxib29sPiBpc1NlbGVjdGluZ1RleHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5KG1f
aXNTZWxlY3RpbmdUZXh0V2hpbGVJbnNlcnRpbmdBc3luY2hyb25vdXNseSwgc3VwcHJlc3NTZWxl
Y3Rpb25VcGRhdGUpOworICAgICAgICBpZiAoYXV0byByZXBsYWNlbWVudFJhbmdlID0gRWRpdGlu
Z1JhbmdlOjp0b1JhbmdlKGZyYW1lLCByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSwgb3B0aW9ucy5l
ZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pKSB7CisgICAgICAgICAgICBTZXRGb3JTY29wZTxib29s
PiBpc1NlbGVjdGluZ1RleHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5KG1faXNTZWxlY3Rp
bmdUZXh0V2hpbGVJbnNlcnRpbmdBc3luY2hyb25vdXNseSwgb3B0aW9ucy5zdXBwcmVzc1NlbGVj
dGlvblVwZGF0ZSk7CiAgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkp
KTsKICAgICAgICAgICAgIHJlcGxhY2VzVGV4dCA9IHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLmxl
bmd0aDsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAocmVnaXN0ZXJVbmRvR3JvdXAp
CisgICAgaWYgKG9wdGlvbnMucmVnaXN0ZXJVbmRvR3JvdXApCiAgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJJbnNlcnRpb25VbmRvR3JvdXBpbmcoKSk7CiAgICAg
CiAgICAgaWYgKCFmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTI4OGJmZWNjMGM5N2RjYzk0
ZTY0MTY2YWUxYzczOTlkZGRkOTE0MC4uNWFjYjU2YThkZWE3YWI1ODRmMjNiODM2YWFlZTViMTEz
MjViN2VhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMjQ4LDkgKzI0OCwxMCBAQCBlbnVtIEZpbmRPcHRpb25zIDogdWludDE2X3Q7CiBlbnVtIGNs
YXNzIERyYWdDb250cm9sbGVyQWN0aW9uIDogdWludDhfdDsKIAogc3RydWN0IEF0dHJpYnV0ZWRT
dHJpbmc7Ci1zdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdDsKIHN0cnVjdCBCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGU7CitzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdDsKIHN0cnVjdCBFZGl0b3JT
dGF0ZTsKK3N0cnVjdCBJbnNlcnRUZXh0T3B0aW9uczsKIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbjsKIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdDsK
IHN0cnVjdCBMb2FkUGFyYW1ldGVyczsKQEAgLTc3OCw3ICs3NzksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhU
ZXh0SW5wdXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRleHRJbnB1dCk7CiAKICAgICB2b2lk
IHNldFRleHRBc3luYyhjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGluc2VydFRleHRBc3luYyhj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwg
Ym9vbCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlLCB1aW50MzJfdCBlZGl0aW5nUmFuZ2VJc1Jl
bGF0aXZlVG8gPSAodWludDMyX3QpRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJv
b3QsIGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUgPSBmYWxzZSk7CisgICAgdm9pZCBpbnNl
cnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxh
Y2VtZW50UmFuZ2UsIEluc2VydFRleHRPcHRpb25zJiYpOwogICAgIHZvaWQgZ2V0TWFya2VkUmFu
Z2VBc3luYyhDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2VBc3luYyhDYWxs
YmFja0lEKTsKICAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggM2ZmNGU0MDg3MTJhNDdk
NjIxMjdkMDE0NTVlYzY1N2VmMjIzODA2MS4uYWQxY2IwZTBkZjNmNDdlN2Y1YWJmOTFhMTYyYmUz
Mjc3ZGYwMjQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00MjgsNyArNDI4LDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVt
YmVyLCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIHJlc3VsdCkgU3luY2hy
b25vdXMKIAogICAgIFNldFRleHRBc3luYyhTdHJpbmcgdGV4dCkKLSAgICBJbnNlcnRUZXh0QXN5
bmMoU3RyaW5nIHRleHQsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJh
bmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwLCB1aW50MzJfdCBlZGl0aW5nUmFuZ2VJc1JlbGF0
aXZlVG8sIGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUpCisgICAgSW5zZXJ0VGV4dEFzeW5j
KFN0cmluZyB0ZXh0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5n
ZSwgc3RydWN0IFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnMgb3B0aW9ucykKICAgICBHZXRNYXJr
ZWRSYW5nZUFzeW5jKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldFNlbGVj
dGVkUmFuZ2VBc3luYyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBDaGFyYWN0
ZXJJbmRleEZvclBvaW50QXN5bmMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>