<?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>238521</bug_id>
          
          <creation_ts>2022-03-29 14:15:08 -0700</creation_ts>
          <short_desc>Add HashTranslator for ASCIILiteral for faster lookup in HashMaps / HashSets</short_desc>
          <delta_ts>2022-03-30 10:47:54 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=238408</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>samuel_white</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1856181</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-29 14:15:08 -0700</bug_when>
    <thetext>Add HashTranslator for ASCIILiteral for faster lookup in HashMaps / HashSets using an ASCIILiteral.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856183</commentid>
    <comment_count>1</comment_count>
      <attachid>456057</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-29 14:17:10 -0700</bug_when>
    <thetext>Created attachment 456057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856210</commentid>
    <comment_count>2</comment_count>
      <attachid>456067</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-29 15:10:15 -0700</bug_when>
    <thetext>Created attachment 456067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856282</commentid>
    <comment_count>3</comment_count>
      <attachid>456067</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-29 20:30:13 -0700</bug_when>
    <thetext>Comment on attachment 456067
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856392</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-30 07:57:52 -0700</bug_when>
    <thetext>Committed r292106 (249026@main): &lt;https://commits.webkit.org/249026@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456067.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856393</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-30 07:58:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/91044544&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856421</commentid>
    <comment_count>6</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-03-30 09:53:50 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856422</commentid>
    <comment_count>7</comment_count>
      <attachid>456134</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-03-30 09:53:53 -0700</bug_when>
    <thetext>Created attachment 456134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856424</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 09:58:00 -0700</bug_when>
    <thetext>Reopened by mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856426</commentid>
    <comment_count>9</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-03-30 10:01:03 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Reopened by mistake.

Yes, sorry about that, problem merging the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856458</commentid>
    <comment_count>10</comment_count>
      <attachid>456067</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-30 10:47:54 -0700</bug_when>
    <thetext>Comment on attachment 456067
Patch

Seems like we should also eventually add a mechanism so there is a default translator for each type, so we can get rid of most of the explicit &lt;HashTranslatorASCIILiteral&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456057</attachid>
            <date>2022-03-29 14:17:10 -0700</date>
            <delta_ts>2022-03-29 15:16:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238521-20220329141709.patch</filename>
            <type>text/plain</type>
            <size>28159</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU0ZWVmYjYyZjdiOWE0YzRlYTRmN2Nl
N2EwZDJiYjVmZDQzYzg4NDQuLjkyY2VhNTRjNzBjZTdiMDM0MjgyYTA4M2ViZmNhMDkyMzU4NmVj
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgSGFzaFRyYW5zbGF0b3IgZm9yIEFTQ0lJTGl0ZXJh
bCBmb3IgZmFzdGVyIGxvb2t1cCBpbiBIYXNoTWFwcyAvIEhhc2hTZXRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSGFzaFRyYW5zbGF0b3IgZm9y
IEFTQ0lJTGl0ZXJhbCBmb3IgZmFzdGVyIGxvb2t1cCBpbiBIYXNoTWFwcyAvIEhhc2hTZXRzIHVz
aW5nIGFuIEFTQ0lJTGl0ZXJhbCwKKyAgICAgICAgd2l0aG91dCB0aGUgbmVlZCBmb3IgYWxsb2Nh
dGluZyBhIFN0cmluZy4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAg
ICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6SGFzaFRyYW5zbGF0b3JB
U0NJSUxpdGVyYWw6Omhhc2gpOgorICAgICAgICAoV1RGOjpIYXNoVHJhbnNsYXRvckFTQ0lJTGl0
ZXJhbDo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbDo6
dHJhbnNsYXRlKToKKwogMjAyMi0wMy0yOCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXNhYmxlIGN1c3RvbSBzdG9yYWdlIHBhdGhzIGZvciBJbmRleGVkREIg
YW5kIExvY2FsU3RvcmFnZSBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEyM2IyNzMxOTEwNjRm
YjU0YWNmNWU0ZDFkOTZiM2QwOGZhNzdlOC4uMGIzYzk3MDQzY2ZhNGRkOWJkYzExMTg0NDAxN2Yx
OTA0NWQyMjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAzLTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEhhc2hUcmFuc2xhdG9y
IGZvciBBU0NJSUxpdGVyYWwgZm9yIGZhc3RlciBsb29rdXAgaW4gSGFzaE1hcHMgLyBIYXNoU2V0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEhh
c2hUcmFuc2xhdG9yIGZvciBBU0NJSUxpdGVyYWwgZm9yIGZhc3RlciBsb29rdXAgaW4gSGFzaE1h
cHMgLyBIYXNoU2V0cyB1c2luZyBhbiBBU0NJSUxpdGVyYWwsCisgICAgICAgIHdpdGhvdXQgdGhl
IG5lZWQgZm9yIGFsbG9jYXRpbmcgYSBTdHJpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpwYWNrYWdlRm9ybURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBsdWdpblJl
cGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6YWxsb3dzQ3Jvc3NPcmln
aW5NZXRob2QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRS
ZXN1bHRDYWNoZUl0ZW06OnZhbGlkYXRlQ3Jvc3NPcmlnaW5IZWFkZXJzIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpmaWx0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplSFRUUEhlYWRlckZpZWxkc0FjY29yZGlu
Z1RvVGFpbnRpbmcpOgorCiAyMDIyLTAzLTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ1NTIENvbnRhaW5lciBRdWVyaWVzXSBTdXBwb3J0IENTU09NCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDQzZDFiMDdmZDdiZWIzMjJkZDk2NjUyZGE3YjY0ODQzOGMwZWJmNTIuLmU4M2I0
YjIwOWUyOTNkZWRjNGY3MzQ2Zjc5OWIxZWFjMDE2ZjQ4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgSGFzaFRyYW5zbGF0b3IgZm9yIEFTQ0lJTGl0ZXJhbCBmb3IgZmFzdGVyIGxvb2t1
cCBpbiBIYXNoTWFwcyAvIEhhc2hTZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzg1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgSGFzaFRyYW5zbGF0b3IgZm9yIEFTQ0lJTGl0ZXJhbCBmb3Ig
ZmFzdGVyIGxvb2t1cCBpbiBIYXNoTWFwcyAvIEhhc2hTZXRzIHVzaW5nIGFuIEFTQ0lJTGl0ZXJh
bCwKKyAgICAgICAgd2l0aG91dCB0aGUgbmVlZCBmb3IgYWxsb2NhdGluZyBhIFN0cmluZy4KKwor
ICAgICAgICAqIFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6Z2V0VXNlckRpcmVjdG9yeVN1ZmZpeCk6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGls
aWFyeVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2Nv
Y29hL1Byb2Nlc3NMYXVuY2hlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1
bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGli
L1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNo
ZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3MpOgorCiAyMDIy
LTAzLTI5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IERvbid0IHNlbmQgc3luYyBSZW1vdGVNZWRpYVBsYXllclByb3h5IG1lc3NhZ2VzIHRoYXQgd2Ug
a25vdyB3aWxsIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggYzI0ZWVlOTU0MmNh
NGI5ZmVhYjVkOTNlY2FkOTQxY2JiMTRmYjJlZC4uNzM1MDhlY2ViNjU1YTVhNWRmYzNjYjU3YzFm
OGJiMTg3MjIyYWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTYwLDYgKzYwLDcg
QEAgY2xhc3MgU3ltYm9sUmVnaXN0cnk7CiAKIHN0cnVjdCBDU3RyaW5nVHJhbnNsYXRvcjsKIHN0
cnVjdCBIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOworc3RydWN0IEhhc2hUcmFuc2xh
dG9yQVNDSUlMaXRlcmFsOwogc3RydWN0IExDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBT
dWJzdHJpbmdUcmFuc2xhdG9yOwogc3RydWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKQEAgLTE3
OCw2ICsxNzksNyBAQCBjbGFzcyBTdHJpbmdJbXBsIDogcHJpdmF0ZSBTdHJpbmdJbXBsU2hhcGUg
ewogCiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OkNTdHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVu
ZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOworICAgIGZyaWVu
ZCBzdHJ1Y3QgV1RGOjpIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbDsKICAgICBmcmllbmQgc3Ry
dWN0IFdURjo6TENoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpT
dWJzdHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRy
YW5zbGF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCAxMGZlY2Q4OTYwZjlmMjUxNmIx
MmNlMTA1OTA1MjJhN2IwNmY5ZmE4Li4zMDMzYmE1OTYxNGEzOGUyOWRhODg4M2JmZmQzYTMzNWFi
NjVkZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTYwOSw2ICs2MDksMjQgQEAgdGVt
cGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IFMKICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpLCBsb3dlcmNhc2VMZXR0ZXJzKTsKIH0KIAorc3RydWN0
IEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChB
U0NJSUxpdGVyYWwgbGl0ZXJhbCkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6
OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGxpdGVyYWwuY2hhcmFjdGVycygpLCBsaXRlcmFs
Lmxlbmd0aCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmcm
IGEsIEFTQ0lJTGl0ZXJhbCBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICB9
CisKKyAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoU3RyaW5nJiBsb2NhdGlvbiwgQVNDSUlMaXRl
cmFsIGxpdGVyYWwsIHVuc2lnbmVkIGhhc2gpCisgICAgeworICAgICAgICBsb2NhdGlvbiA9IGxp
dGVyYWw7CisgICAgICAgIGxvY2F0aW9uLmltcGwoKS0+c2V0SGFzaChoYXNoKTsKKyAgICB9Cit9
OworCiBpbmxpbmUgbmFtZXNwYWNlIFN0cmluZ0xpdGVyYWxzIHsKIAogaW5saW5lIFN0cmluZyBv
cGVyYXRvciIiIF9zdHIoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90KQpAQCAtNjIwLDYg
KzYzOCw3IEBAIGlubGluZSBTdHJpbmcgb3BlcmF0b3IiIiBfc3RyKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMsIHNpemVfdCkKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKK3VzaW5nIFdURjo6SGFzaFRy
YW5zbGF0b3JBU0NJSUxpdGVyYWw7CiB1c2luZyBXVEY6OktlZXBUcmFpbGluZ1plcm9zOwogdXNp
bmcgV1RGOjpTdHJpbmc7CiB1c2luZyBXVEY6OmFwcGVuZE51bWJlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNmY2ZGM2
N2NjMzRiOGQ0MDdhYmY2ZGU0NjRjNTI5Yzc0MjM2ZDVmMi4uMzJlYTFkNDlmN2RmZTRhMjAwZDll
NWMwYzU4MzcyNjA3YjVkZDIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTE1MCwxMCArMTUwLDEwIEBAIFJlZlB0cjxE
T01Gb3JtRGF0YT4gRmV0Y2hCb2R5Q29uc3VtZXI6OnBhY2thZ2VGb3JtRGF0YShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjCiAgICAgICAgICAgICBjb250ZW50RGlzcG9zaXRpb25QYXJhbWV0ZXJz
QmVnaW4rKzsKIAogICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZVBhcmFtZXRlcnMoU3Ry
aW5nVmlldyhoZWFkZXIpLnN1YnN0cmluZyhjb250ZW50RGlzcG9zaXRpb25QYXJhbWV0ZXJzQmVn
aW4sIGNvbnRlbnREaXNwb3NpdGlvbkVuZCAtIGNvbnRlbnREaXNwb3NpdGlvblBhcmFtZXRlcnNC
ZWdpbiksIDApOwotICAgICAgICBTdHJpbmcgbmFtZSA9IHBhcmFtZXRlcnMuZ2V0KCJuYW1lIl9z
KTsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSBwYXJhbWV0ZXJzLmdldDxIYXNoVHJhbnNsYXRvckFT
Q0lJTGl0ZXJhbD4oIm5hbWUiX3MpOwogICAgICAgICBpZiAoIW5hbWUpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhcmFtZXRlcnMuZ2V0KCJm
aWxlbmFtZSJfcyk7CisgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhcmFtZXRlcnMuZ2V0PEhh
c2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigiZmlsZW5hbWUiX3MpOwogICAgICAgICBpZiAoIWZp
bGVuYW1lKQogICAgICAgICAgICAgZm9ybS5hcHBlbmQobmFtZSwgU3RyaW5nOjpmcm9tVVRGOChi
b2R5QmVnaW4sIGJvZHlMZW5ndGgpKTsKICAgICAgICAgZWxzZSB7CkBAIC0xNzYsNyArMTc2LDcg
QEAgUmVmUHRyPERPTUZvcm1EYXRhPiBGZXRjaEJvZHlDb25zdW1lcjo6cGFja2FnZUZvcm1EYXRh
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGMKICAgICAgICAgaWYgKCFtaW1lVHlwZSkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG1pbWVUeXBlLT50eXBlLCAibXVsdGlwYXJ0IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShtaW1lVHlwZS0+c3VidHlwZSwgImZvcm0tZGF0YSIpKSB7Ci0gICAgICAgICAgICBhdXRv
IGl0ZXJhdG9yID0gbWltZVR5cGUtPnBhcmFtZXRlcnMuZmluZCgiYm91bmRhcnkiX3MpOworICAg
ICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1pbWVUeXBlLT5wYXJhbWV0ZXJzLmZpbmQ8SGFzaFRy
YW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJib3VuZGFyeSJfcyk7CiAgICAgICAgICAgICBpZiAoaXRl
cmF0b3IgIT0gbWltZVR5cGUtPnBhcmFtZXRlcnMuZW5kKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGl0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRl
eCBkZDE2Zjg5M2YyZDY5NTJjYzVmMDAzMDhmOWQwZDk5YWI4YjBlOGEyLi4xYWVkNDUwNDk0YzYy
YmE3ODgwOGY1MjIwNjEzMzdkOTVjMjhmZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAt
ODQsMTYgKzg0LDE2IEBAIGF1dG8gWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVw
bGFjZW1lbnQoU2hhZG93Um9vdCYgcm9vdCkgLT4gSW5zdGFsbFJlCiAgICAgcm9vdC5hcHBlbmRD
aGlsZCgqbV9lbWJlZFNoYWRvd0VsZW1lbnQpOwogCiAgICAgYXV0byBpZnJhbWVFbGVtZW50ID0g
SFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmlmcmFtZVRhZywgbV9wYXJlbnRF
bGVtZW50LT5kb2N1bWVudCgpKTsKLSAgICBpZiAobV9hdHRyaWJ1dGVzLmNvbnRhaW5zKCJ3aWR0
aCJfcykpCisgICAgaWYgKG1fYXR0cmlidXRlcy5jb250YWluczxIYXNoVHJhbnNsYXRvckFTQ0lJ
TGl0ZXJhbD4oIndpZHRoIl9zKSkKICAgICAgICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZygi
MTAwJSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKLSAgICBjb25zdCBh
dXRvJiBoZWlnaHRWYWx1ZSA9IG1fYXR0cmlidXRlcy5maW5kKCJoZWlnaHQiX3MpOworICAgIGNv
bnN0IGF1dG8mIGhlaWdodFZhbHVlID0gbV9hdHRyaWJ1dGVzLmZpbmQ8SGFzaFRyYW5zbGF0b3JB
U0NJSUxpdGVyYWw+KCJoZWlnaHQiX3MpOwogICAgIGlmIChoZWlnaHRWYWx1ZSAhPSBtX2F0dHJp
YnV0ZXMuZW5kKCkpIHsKICAgICAgICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxO
YW1lczo6c3R5bGVBdHRyLCBBdG9tU3RyaW5nKCJtYXgtaGVpZ2h0OiAxMDAlIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICAgICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhlaWdodEF0dHIsIGhlaWdo
dFZhbHVlLT52YWx1ZSk7CiAgICAgfQogCi0gICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIHlvdVR1YmVVUkwobV9h
dHRyaWJ1dGVzLmdldCgic3JjIl9zKSkpOworICAgIGlmcmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCB5b3VUdWJlVVJMKG1f
YXR0cmlidXRlcy5nZXQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJzcmMiX3MpKSk7CiAg
ICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OmZyYW1lYm9yZGVyQXR0ciwgQXRvbVN0cmluZygiMCIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgCiAgICAgLy8gRGlzYWJsZSBmcmFtZSBmbGF0dGVuaW5n
IGZvciB0aGlzIGlmcmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAppbmRleCBhODdmZTVkN2Fh
ZTVlODBkMzk3NTQ5OWM0YzU2YTZlMDE3ZGYxMWRiLi45Njc0NTk0MGY2NjYxOWU5YTEzZDlkMTY5
NjA3YTFiNzkyZThlNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCkBAIC03Niw3ICs3Niw3
IEBAIGJvb2wgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2Uo
Y29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluCiAKICAgICB1bnNpZ25lZCBleHBlY3RlZE51bVBh
cmFtZXRlcnMgPSAwOwogICAgIGludCB3aW5kb3dCaXRzID0gMTU7Ci0gICAgYXV0byBwYXJhbWV0
ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQoIm1heF93aW5kb3dfYml0cyJfcyk7CisgICAgYXV0
byBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxp
dGVyYWw+KCJtYXhfd2luZG93X2JpdHMiX3MpOwogICAgIGlmIChwYXJhbWV0ZXIgIT0gc2VydmVy
UGFyYW1ldGVycy5lbmQoKSkgewogICAgICAgICB3aW5kb3dCaXRzID0gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8aW50PihwYXJhbWV0ZXItPnZhbHVlKS52YWx1ZV9vcigwKTsKICAg
ICAgICAgaWYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkgewpAQCAtODcsNyAr
ODcsNyBAQCBib29sIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3Bv
bnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbgogICAgIH0KIAogICAgIFdlYlNvY2tldERl
ZmxhdGVyOjpDb250ZXh0VGFrZU92ZXJNb2RlIG1vZGUgPSBXZWJTb2NrZXREZWZsYXRlcjo6VGFr
ZU92ZXJDb250ZXh0OwotICAgIHBhcmFtZXRlciA9IHNlcnZlclBhcmFtZXRlcnMuZmluZCgibm9f
Y29udGV4dF90YWtlb3ZlciJfcyk7CisgICAgcGFyYW1ldGVyID0gc2VydmVyUGFyYW1ldGVycy5m
aW5kPEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigibm9fY29udGV4dF90YWtlb3ZlciJfcyk7
CiAgICAgaWYgKHBhcmFtZXRlciAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7CiAgICAgICAg
IGlmICghcGFyYW1ldGVyLT52YWx1ZS5pc051bGwoKSkgewogICAgICAgICAgICAgbV9mYWlsdXJl
UmVhc29uID0gIlJlY2VpdmVkIGludmFsaWQgbm9fY29udGV4dF90YWtlb3ZlciBwYXJhbWV0ZXIi
X3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4
IDAxYTYyNDBkNGMzMjk0YjEyZjgxMGJkNmQxZDMyZTQyOWMwOTNmYzQuLjk3NDY5NjI5Zjk0NTNl
N2QxNjM3YWE1NWE4MzY0MWNkNGUwZWVkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgUHJvY2Vzc2luZ0lu
c3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBw
YXJzZUF0dHJpYnV0ZXMoZGF0YSgpKTsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGVzKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBTdHJpbmcgdHlwZSA9IGF0dHJpYnV0ZXMtPmdldCgidHlw
ZSJfcyk7CisgICAgICAgIFN0cmluZyB0eXBlID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xh
dG9yQVNDSUlMaXRlcmFsPigidHlwZSJfcyk7CiAKICAgICAgICAgbV9pc0NTUyA9IHR5cGUuaXNF
bXB0eSgpIHx8IHR5cGUgPT0gInRleHQvY3NzIjsKICNpZiBFTkFCTEUoWFNMVCkKQEAgLTEwMywx
MSArMTAzLDExIEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQo
KQogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgU3RyaW5nIGhyZWYgPSBh
dHRyaWJ1dGVzLT5nZXQoImhyZWYiX3MpOwotICAgICAgICBTdHJpbmcgYWx0ZXJuYXRlID0gYXR0
cmlidXRlcy0+Z2V0KCJhbHRlcm5hdGUiX3MpOworICAgICAgICBTdHJpbmcgaHJlZiA9IGF0dHJp
YnV0ZXMtPmdldDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oImhyZWYiX3MpOworICAgICAg
ICBTdHJpbmcgYWx0ZXJuYXRlID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xhdG9yQVNDSUlM
aXRlcmFsPigiYWx0ZXJuYXRlIl9zKTsKICAgICAgICAgbV9hbHRlcm5hdGUgPSBhbHRlcm5hdGUg
PT0gInllcyI7Ci0gICAgICAgIG1fdGl0bGUgPSBhdHRyaWJ1dGVzLT5nZXQoInRpdGxlIl9zKTsK
LSAgICAgICAgbV9tZWRpYSA9IGF0dHJpYnV0ZXMtPmdldCgibWVkaWEiX3MpOworICAgICAgICBt
X3RpdGxlID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigidGl0
bGUiX3MpOworICAgICAgICBtX21lZGlhID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xhdG9y
QVNDSUlMaXRlcmFsPigibWVkaWEiX3MpOwogCiAgICAgICAgIGlmIChtX2FsdGVybmF0ZSAmJiBt
X3RpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1Niw3ICsxNTYsNyBA
QCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KCkKICAgICAgICAg
ICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgU3RyaW5n
IGNoYXJzZXQgPSBhdHRyaWJ1dGVzLT5nZXQoImNoYXJzZXQiX3MpOworICAgICAgICAgICAgICAg
IFN0cmluZyBjaGFyc2V0ID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRl
cmFsPigiY2hhcnNldCJfcyk7CiAgICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSwgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgc3RkOjpudWxsb3B0LCBjaGFyc2V0
LmlzRW1wdHkoKSA/IGRvY3VtZW50KCkuY2hhcnNldCgpIDogV1RGTW92ZShjaGFyc2V0KSk7CiAK
ICAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlX29y
KG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
RW1iZWRkZXJQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luRW1i
ZWRkZXJQb2xpY3kuY3BwCmluZGV4IDRiZjcwNTBjY2NiN2UwYzczYjBkMTk3M2UzYzAxYTI1Mzg5
MDZiNDcuLjJmODYzZWVhYWQ3ZGRmYmQwODNhMTQ4ZjllNjJhMzgwODI2MjhkODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5jcHAK
QEAgLTQ1LDcgKzQ1LDcgQEAgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSBvYnRhaW5Dcm9zc09y
aWdpbkVtYmVkZGVyUG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UKICAgICAgICAgYXV0byBj
b2VwUGFyc2luZ1Jlc3VsdCA9IHBhcnNlU3RydWN0dXJlZEZpZWxkVmFsdWUocmVzcG9uc2UuaHR0
cEhlYWRlckZpZWxkKGhlYWRlck5hbWUpKTsKICAgICAgICAgaWYgKGNvZXBQYXJzaW5nUmVzdWx0
ICYmIGNvZXBQYXJzaW5nUmVzdWx0LT5maXJzdCA9PSAicmVxdWlyZS1jb3JwIikgewogICAgICAg
ICAgICAgdmFsdWUgPSBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5VmFsdWU6OlJlcXVpcmVDT1JQ
OwotICAgICAgICAgICAgcmVwb3J0aW5nRW5kcG9pbnQgPSBjb2VwUGFyc2luZ1Jlc3VsdC0+c2Vj
b25kLmdldCgicmVwb3J0LXRvIl9zKTsKKyAgICAgICAgICAgIHJlcG9ydGluZ0VuZHBvaW50ID0g
Y29lcFBhcnNpbmdSZXN1bHQtPnNlY29uZC5nZXQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+
KCJyZXBvcnQtdG8iX3MpOwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAKaW5kZXggNzRiZDEyOWYxYzgx
MjBkMzZjYWM2MWUyNzhmMGE4ZGJjNjA1ZWU3MS4uZTM3MDBmNzlkOWVmMTRjMjNkNjJjY2U5NTZk
YTdmYjQxM2Y4OTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3kuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kgb2J0YWluQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmUKICAgICAgICAgfSBlbHNlIGlmIChjb29wUGFyc2luZ1Jlc3VsdC0+Zmlyc3QgPT0gInNh
bWUtb3JpZ2luLWFsbG93LXBvcHVwcyIpCiAgICAgICAgICAgICB2YWx1ZSA9IENyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5VmFsdWU6OlNhbWVPcmlnaW5BbGxvd1BvcHVwczsKIAotICAgICAgICByZXBv
cnRpbmdFbmRwb2ludCA9IGNvb3BQYXJzaW5nUmVzdWx0LT5zZWNvbmQuZ2V0KCJyZXBvcnQtdG8i
X3MpOworICAgICAgICByZXBvcnRpbmdFbmRwb2ludCA9IGNvb3BQYXJzaW5nUmVzdWx0LT5zZWNv
bmQuZ2V0PEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigicmVwb3J0LXRvIl9zKTsKICAgICB9
OwogCiAgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgcG9saWN5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3Bw
CmluZGV4IGVmNGQ1OGNhNzMwNWRhNjc4NTU2MTU3YTQ2OTRhYTBmOTQ0MWY1MjQuLjYwNWExNzI2
MDc3Zjc0NDE1YzE5ZDQ1Y2E3YjYwMTA4MTA4OTRiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKQEAg
LTg1LDEyICs4NSwxMiBAQCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZUl0ZW06OnZhbGlkYXRlTWV0aG9kQW5kSGVhZAogCiBib29sIENyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjphbGxvd3NDcm9zc09yaWdpbk1ldGhvZChjb25z
dCBTdHJpbmcmIG1ldGhvZCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWV0aG9kcy5jb250YWlucyhtZXRob2Qp
IHx8IChtX21ldGhvZHMuY29udGFpbnMoIioiX3MpICYmIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
ICE9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpIHx8IGlzT25BY2Nlc3NDb250cm9sU2lt
cGxlUmVxdWVzdE1ldGhvZEFsbG93bGlzdChtZXRob2QpOworICAgIHJldHVybiBtX21ldGhvZHMu
Y29udGFpbnMobWV0aG9kKSB8fCAobV9tZXRob2RzLmNvbnRhaW5zPEhhc2hUcmFuc2xhdG9yQVND
SUlMaXRlcmFsPigiKiJfcykgJiYgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgIT0gU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k6OlVzZSkgfHwgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0
aG9kQWxsb3dsaXN0KG1ldGhvZCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBDcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6dmFsaWRhdGVDcm9zc09yaWdpbkhlYWRlcnMo
Y29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMsIFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSBjb25zdAogewotICAgIGJvb2wgdmFsaWRXaWxk
Y2FyZCA9IG1faGVhZGVycy5jb250YWlucygiKiJfcykgJiYgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgIT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKKyAgICBib29sIHZhbGlkV2lsZGNh
cmQgPSBtX2hlYWRlcnMuY29udGFpbnM8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCIqIl9z
KSAmJiBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSAhPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6
VXNlOwogICAgIGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDogcmVxdWVzdEhlYWRlcnMpIHsKICAg
ICAgICAgaWYgKGhlYWRlci5rZXlBc0hUVFBIZWFkZXJOYW1lICYmIGlzQ3Jvc3NPcmlnaW5TYWZl
UmVxdWVzdEhlYWRlcihoZWFkZXIua2V5QXNIVFRQSGVhZGVyTmFtZS52YWx1ZSgpLCBoZWFkZXIu
dmFsdWUpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IGQ5MmE5
M2IxNDI3YWEyNDQyNGJjYmNlMzQyMjUwZTlmOWRjOTk5NmUuLjBlZjk4ODE1YmVjOWUwYTdkYmNm
MTg1NTEyOTI0Y2FjMzkxZmNiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC0xOTMsNyArMTkzLDcg
QEAgUmVzb3VyY2VSZXNwb25zZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZmlsdGVyKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLAogICAgIGZpbHRlcmVkUmVzcG9uc2Uuc2V0VHlwZShU
eXBlOjpDb3JzKTsKIAogICAgIGF1dG8gYWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlclNldCA9IHZh
bHVlT3JEZWZhdWx0KHBhcnNlQWNjZXNzQ29udHJvbEFsbG93TGlzdDxBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+KHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXNz
Q29udHJvbEV4cG9zZUhlYWRlcnMpKSk7Ci0gICAgaWYgKHBlcmZvcm1DaGVjayA9PSBQZXJmb3Jt
RXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpZZXMgJiYgYWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlclNl
dC5jb250YWlucygiKiJfcykpCisgICAgaWYgKHBlcmZvcm1DaGVjayA9PSBQZXJmb3JtRXhwb3Nl
QWxsSGVhZGVyc0NoZWNrOjpZZXMgJiYgYWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlclNldC5jb250
YWluczxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oIioiX3MpKQogICAgICAgICByZXR1cm4g
ZmlsdGVyZWRSZXNwb25zZTsKIAogICAgIGZpbHRlcmVkUmVzcG9uc2UubV9odHRwSGVhZGVyRmll
bGRzLnVuY29tbW9uSGVhZGVycygpLnJlbW92ZUFsbE1hdGNoaW5nKFsmXShhdXRvJiBlbnRyeSkg
ewpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXpl
SFRUUEhlYWRlckZpZWxkc0FjY29yZGluZ1RvVGFpbnRpbmcoKQogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpDb3JzOiB7CiAgICAgICAgIGF1dG8g
Y29yc1NhZmVIZWFkZXJTZXQgPSB2YWx1ZU9yRGVmYXVsdChwYXJzZUFjY2Vzc0NvbnRyb2xBbGxv
d0xpc3Q8QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPihodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJzKSkpOwotICAgICAgICBpZiAoY29yc1Nh
ZmVIZWFkZXJTZXQuY29udGFpbnMoIioiX3N0cikpCisgICAgICAgIGlmIChjb3JzU2FmZUhlYWRl
clNldC5jb250YWluczxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oIioiX3MpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5jb21tb25IZWFkZXJz
KCkucmVtb3ZlQWxsTWF0Y2hpbmcoWyZjb3JzU2FmZUhlYWRlclNldF0oYXV0byYgaGVhZGVyKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCmlu
ZGV4IDIxZTZkODc1NzEzNTlkOTFjMjNjNWIwYjYwOTg5ODQzM2E5YTFmYTQuLmUwNWFjY2NlN2Zm
MTRlNjAyMTEzMWZlMzJmYTg2NjkxZDQxYjY4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCkBAIC02NDIsNyArNjQyLDcgQEAgc3RhdGlj
IGJvb2wgYXBwbHlTYW5kYm94KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXQKIAogc3RhdGljIFN0cmluZyBnZXRVc2VyRGlyZWN0b3J5U3VmZml4
KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiB7Ci0gICAgYXV0byB1c2VyRGlyZWN0b3J5U3VmZml4ID0gcGFyYW1ldGVycy5leHRyYUlu
aXRpYWxpemF0aW9uRGF0YS5maW5kKCJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiKTsKKyAgICBhdXRv
IHVzZXJEaXJlY3RvcnlTdWZmaXggPSBwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LmZpbmQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgi
X3MpOwogICAgIGlmICh1c2VyRGlyZWN0b3J5U3VmZml4ICE9IHBhcmFtZXRlcnMuZXh0cmFJbml0
aWFsaXphdGlvbkRhdGEuZW5kKCkpIHsKICAgICAgICAgU3RyaW5nIHN1ZmZpeCA9IHVzZXJEaXJl
Y3RvcnlTdWZmaXgtPnZhbHVlOwogICAgICAgICBhdXRvIGZpcnN0UGF0aFNlcGFyYXRvciA9IHN1
ZmZpeC5maW5kKCcvJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmZGQyZjZlMGRhNGIwNmNkYWRhZDE2MzNiMDE0ZDViZDhi
ZTE5NjJmLi4xYzU0ZTAxNTg0ZTYwMzA1NDA4NjRiYjE2ZTE0NTY2YTgyNzgzMGJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKQEAg
LTY1LDEwICs2NSwxMCBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0
aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdQogICAgIGxhdW5jaE9wdGlv
bnMucHJvY2Vzc0lkZW50aWZpZXIgPSBtX3Byb2Nlc3NJZGVudGlmaWVyOwogCiAgICAgaWYgKGNv
bnN0IGNoYXIqIHVzZXJEaXJlY3RvcnlTdWZmaXggPSBnZXRlbnYoIkRJUkhFTFBFUl9VU0VSX0RJ
Ul9TVUZGSVgiKSkKLSAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0
YS5hZGQoInVzZXItZGlyZWN0b3J5LXN1ZmZpeCJfcywgdXNlckRpcmVjdG9yeVN1ZmZpeCk7Cisg
ICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkPEhhc2hUcmFu
c2xhdG9yQVNDSUlMaXRlcmFsPigidXNlci1kaXJlY3Rvcnktc3VmZml4Il9zLCB1c2VyRGlyZWN0
b3J5U3VmZml4KTsKIAogICAgIGlmIChtX2Fsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSkK
LSAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoImFsd2F5
cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3JpdHkiX3MsICJ0cnVlIik7CisgICAgICAgIGxhdW5j
aE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkPEhhc2hUcmFuc2xhdG9yQVNDSUlM
aXRlcmFsPigiYWx3YXlzLXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0eSJfcywgInRydWUiKTsK
IAogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkgJiYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKSkKICAgICBjb25zdCBjaGFyKiB2YXJuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvY29jb2EvUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9jb2NvYS9Qcm9jZXNzTGF1bmNoZXJDb2Nv
YS5tbQppbmRleCAwYzVjZGRkMTk5MjcxNGY1NmZjZmIxMDMxNjIyNmQyMTE2MWU0ZTJiLi45OWU2
ZTAwZGMyNThmOTMxN2UyODE2OTM4MDgyNWM3ZWZkZjQ2MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9jb2NvYS9Qcm9jZXNzTGF1bmNoZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9jb2NvYS9Qcm9jZXNzTGF1bmNo
ZXJDb2NvYS5tbQpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKCkKICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUoaW5pdGlhbGl6YXRpb25N
ZXNzYWdlLmdldCgpLCAiQ29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMiLCBjb250YWluZXJF
bnZpcm9ubWVudFZhcmlhYmxlcy5nZXQoKSk7CiAjZW5kaWYKIAotICAgIGF1dG8gbGFuZ3VhZ2Vz
SXRlcmF0b3IgPSBtX2xhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZmluZCgi
T3ZlcnJpZGVMYW5ndWFnZXMiKTsKKyAgICBhdXRvIGxhbmd1YWdlc0l0ZXJhdG9yID0gbV9sYXVu
Y2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmZpbmQ8SGFzaFRyYW5zbGF0b3JBU0NJ
SUxpdGVyYWw+KCJPdmVycmlkZUxhbmd1YWdlcyJfcyk7CiAgICAgaWYgKGxhbmd1YWdlc0l0ZXJh
dG9yICE9IG1fbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5lbmQoKSkgewog
ICAgICAgICBMT0dfV0lUSF9TVFJFQU0oTGFuZ3VhZ2UsIHN0cmVhbSA8PCAiUHJvY2VzcyBMYXVu
Y2hlciBpcyBjb3B5aW5nIE92ZXJyaWRlTGFuZ3VhZ2VzIGludG8gaW5pdGlhbGl6YXRpb24gbWVz
c2FnZTogIiA8PCBsYW5ndWFnZXNJdGVyYXRvci0+dmFsdWUpOwogICAgICAgICBhdXRvIGxhbmd1
YWdlcyA9IGFkb3B0T1NPYmplY3QoeHBjX2FycmF5X2NyZWF0ZShudWxscHRyLCAwKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVu
Y2hlckdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9j
ZXNzTGF1bmNoZXJHTGliLmNwcAppbmRleCAxMjRiZmMzZjE2ZTg4YWViNzAxMTMwNGNhYzk1N2Zh
YTFlZTgwZDBjLi44M2M4ODMyNWM5YjMwYjU2MzVhNTIxNGFhNjM3Njc1ZjZjMTA2YjgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVu
Y2hlckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIv
UHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIFByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAKICNpZiBPUyhMSU5VWCkKICAgICBjb25zdCBjaGFy
KiBzYW5kYm94RW52ID0gZ19nZXRlbnYoIldFQktJVF9GT1JDRV9TQU5EQk9YIik7Ci0gICAgYm9v
bCBzYW5kYm94RW5hYmxlZCA9IG1fbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0
YS5nZXQoImVuYWJsZS1zYW5kYm94IikgPT0gInRydWUiOworICAgIGJvb2wgc2FuZGJveEVuYWJs
ZWQgPSBtX2xhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0PEhhc2hUcmFu
c2xhdG9yQVNDSUlMaXRlcmFsPigiZW5hYmxlLXNhbmRib3giX3MpID09ICJ0cnVlIjsKIAogICAg
IGlmIChzYW5kYm94RW52KQogICAgICAgICBzYW5kYm94RW5hYmxlZCA9ICFzdHJjbXAoc2FuZGJv
eEVudiwgIjEiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IGJkYzhhNDMxY2Q1MzQ0NzA4NDVkYTVkYjBmYzE1MmU5YTY3NjBmMDkuLmE4ZWY1ZGJj
NDdlNmVjYjJhNDYzZmU3Yjg1ZDFjZWQ5ZWEwMzQ1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9u
cyYgbGF1bmNoT3B0CiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sLT5jdXN0b21XZWJDb250ZW50U2Vy
dmljZUJ1bmRsZUlkZW50aWZpZXIoKS5pc0VtcHR5KCkpCiAgICAgICAgIGxhdW5jaE9wdGlvbnMu
Y3VzdG9tV2ViQ29udGVudFNlcnZpY2VCdW5kbGVJZGVudGlmaWVyID0gbV9wcm9jZXNzUG9vbC0+
Y3VzdG9tV2ViQ29udGVudFNlcnZpY2VCdW5kbGVJZGVudGlmaWVyKCkuYXNjaWkoKTsKICAgICBp
ZiAoV2ViS2l0Ojppc0luc3BlY3RvclByb2Nlc3NQb29sKHByb2Nlc3NQb29sKCkpKQotICAgICAg
ICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgiaW5zcGVjdG9yLXBy
b2Nlc3MiX3MsICIxIl9zKTsKKyAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0
aW9uRGF0YS5hZGQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJpbnNwZWN0b3ItcHJvY2Vz
cyJfcywgIjEiX3MpOwogCiAgICAgTE9HKExhbmd1YWdlLCAiV2ViUHJvY2Vzc1Byb3h5IGlzIGdl
dHRpbmcgbGF1bmNoIG9wdGlvbnMuIik7CiAgICAgYXV0byBvdmVycmlkZUxhbmd1YWdlcyA9IG1f
cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5vdmVycmlkZUxhbmd1YWdlcygpOwpAQCAtNDIz
LDE0ICs0MjMsMTQgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJv
Y2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHQKICAgICAgICAgICAgIGxhbmd1
YWdlU3RyaW5nLmFwcGVuZChvdmVycmlkZUxhbmd1YWdlc1tpXSk7CiAgICAgICAgIH0KICAgICAg
ICAgTE9HX1dJVEhfU1RSRUFNKExhbmd1YWdlLCBzdHJlYW0gPDwgIlNldHRpbmcgV2ViUHJvY2Vz
cydzIGxhdW5jaCBPdmVycmlkZUxhbmd1YWdlcyB0byAiIDw8IGxhbmd1YWdlU3RyaW5nKTsKLSAg
ICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoIk92ZXJyaWRl
TGFuZ3VhZ2VzIl9zLCBsYW5ndWFnZVN0cmluZy50b1N0cmluZygpKTsKKyAgICAgICAgbGF1bmNo
T3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxp
dGVyYWw+KCJPdmVycmlkZUxhbmd1YWdlcyJfcywgbGFuZ3VhZ2VTdHJpbmcudG9TdHJpbmcoKSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIExPRyhMYW5ndWFnZSwgIm92ZXJyaWRlTGFuZ3VhZ2VzIGlz
IHN0aWxsIGVtcHR5LiBOb3Qgc2V0dGluZyBXZWJQcm9jZXNzJ3MgbGF1bmNoIE92ZXJyaWRlTGFu
Z3VhZ2VzLiIpOwogCiAgICAgbGF1bmNoT3B0aW9ucy5ub25WYWxpZEluamVjdGVkQ29kZUFsbG93
ZWQgPSBzaG91bGRBbGxvd05vblZhbGlkSW5qZWN0ZWRDb2RlKCk7CiAKICAgICBpZiAoaXNQcmV3
YXJtZWQoKSkKLSAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5h
ZGQoImlzLXByZXdhcm1lZCJfcywgIjEiX3MpOworICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhLmFkZDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oImlzLXBy
ZXdhcm1lZCJfcywgIjEiX3MpOwogCiAjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCiAgICAgbGF1
bmNoT3B0aW9ucy5wcm9jZXNzUGF0aCA9IG1fcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NQYXRoKCk7
CkBAIC00NDMsOCArNDQzLDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlv
bnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHQKICAgICB9CiAKICAg
ICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pIHsKLSAgICAgICAgbGF1bmNoT3B0aW9u
cy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiX3Ms
ICIxIl9zKTsKLSAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5h
ZGQoInJlZ2lzdHJhYmxlLWRvbWFpbiJfcywgbV9yZWdpc3RyYWJsZURvbWFpbi0+c3RyaW5nKCkp
OworICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZDxIYXNo
VHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiX3MsICIxIl9z
KTsKKyAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQ8SGFz
aFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJyZWdpc3RyYWJsZS1kb21haW4iX3MsIG1fcmVnaXN0
cmFibGVEb21haW4tPnN0cmluZygpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCmluZGV4IGM4MDg3MzQw
NmY4NmU1YjgzMjEwYzM2YWJlZjE3MGNjOWYzNmVjNjQuLjMwNGQ5MGUwMWRlNjhlOTUyZGEyNzIw
MjE2ZjQ3ZmU2Yzc1YWQ1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcApAQCAtMzksNyArMzksNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNo
T3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCiB7
Ci0gICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5zZXQoImVuYWJsZS1z
YW5kYm94IiwgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuc2V0PEhhc2hU
cmFuc2xhdG9yQVNDSUlMaXRlcmFsPigiZW5hYmxlLXNhbmRib3giX3MsIG1fcHJvY2Vzc1Bvb2wt
PnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIAogICAgIGlmIChtX3Byb2Nl
c3NQb29sLT5zYW5kYm94RW5hYmxlZCgpKSB7CiAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRh
dGFTdG9yZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsKQEAgLTUxLDkgKzUxLDkgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNo
ZXI6OkxhdW5jaE9wdGlvbnMmIGwKIAogICAgICAgICBBU1NFUlQoZGF0YVN0b3JlKTsKICAgICAg
ICAgZGF0YVN0b3JlLT5yZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwotICAgICAgICBs
YXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgid2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkiLCBkYXRhU3RvcmUtPnJlc29sdmVkRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAg
ICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuc2V0KCJtZWRpYUtleXNE
aXJlY3RvcnkiLCBkYXRhU3RvcmUtPnJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5KCkpOwotICAg
ICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSIsIGRhdGFTdG9yZS0+cmVzb2x2ZWRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCkpOworICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LnNldDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oIndlYlNRTERhdGFiYXNlRGlyZWN0b3J5
Il9zLCBkYXRhU3RvcmUtPnJlc29sdmVkRGF0YWJhc2VEaXJlY3RvcnkoKSk7CisgICAgICAgIGxh
dW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuc2V0PEhhc2hUcmFuc2xhdG9yQVND
SUlMaXRlcmFsPigibWVkaWFLZXlzRGlyZWN0b3J5Il9zLCBkYXRhU3RvcmUtPnJlc29sdmVkTWVk
aWFLZXlzRGlyZWN0b3J5KCkpOworICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6
YXRpb25EYXRhLnNldDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oImFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkiX3MsIGRhdGFTdG9yZS0+cmVzb2x2ZWRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkpOwogCiAgICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFTYW5kYm94UGF0aHMgPSBtX3By
b2Nlc3NQb29sLT5zYW5kYm94UGF0aHMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCA1M2ViMjY3ZTI3MDMyN2Q1
YzM3NjQwNzZlYTA4MTA3MjQ3NjAxOTIyLi5jMTFiMmM5Yzc1OWQyNWY4OWJhNjA4YzJhOGUwNzdl
ODVhODI1NjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KQEAgLTYzNCwxNyArNjM0LDE3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRp
b25QCiAgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaG91bGRTZXR1cFBvd2VyT2JzZXJ2ZXIo
KSA9IGZhbHNlOwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAotICAgIGlmIChwYXJhbWV0ZXJz
LmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmdldCgiaW5zcGVjdG9yLXByb2Nlc3MiX3MpID09ICIx
IikKKyAgICBpZiAocGFyYW1ldGVycy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQ8SGFzaFRy
YW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJpbnNwZWN0b3ItcHJvY2VzcyJfcykgPT0gIjEiKQogICAg
ICAgICBtX3Byb2Nlc3NUeXBlID0gUHJvY2Vzc1R5cGU6Okluc3BlY3RvcjsKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgZWxzZSBpZiAocGFyYW1ldGVycy5leHRyYUluaXRpYWxpemF0
aW9uRGF0YS5nZXQoInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiX3MpID09ICIxIikgeworICAgIGVs
c2UgaWYgKHBhcmFtZXRlcnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0PEhhc2hUcmFuc2xh
dG9yQVNDSUlMaXRlcmFsPigic2VydmljZS13b3JrZXItcHJvY2VzcyJfcykgPT0gIjEiKSB7CiAg
ICAgICAgIG1fcHJvY2Vzc1R5cGUgPSBQcm9jZXNzVHlwZTo6U2VydmljZVdvcmtlcjsKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBSZWdpc3RyYWJsZURv
bWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHBhcmFtZXRl
cnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KCJyZWdpc3RyYWJsZS1kb21haW4iX3MpKTsK
KyAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcocGFyYW1ldGVycy5leHRyYUluaXRp
YWxpemF0aW9uRGF0YS5nZXQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJyZWdpc3RyYWJs
ZS1kb21haW4iX3MpKTsKICNlbmRpZgogICAgIH0KICNlbmRpZgotICAgIGVsc2UgaWYgKHBhcmFt
ZXRlcnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KCJpcy1wcmV3YXJtZWQiX3MpID09ICIx
IikKKyAgICBlbHNlIGlmIChwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmdldDxI
YXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oImlzLXByZXdhcm1lZCJfcykgPT0gIjEiKQogICAg
ICAgICBtX3Byb2Nlc3NUeXBlID0gUHJvY2Vzc1R5cGU6OlByZXdhcm1lZFdlYkNvbnRlbnQ7CiAg
ICAgZWxzZQogICAgICAgICBtX3Byb2Nlc3NUeXBlID0gUHJvY2Vzc1R5cGU6OldlYkNvbnRlbnQ7
Cg==
</data>
<flag name="commit-queue"
          id="484254"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456067</attachid>
            <date>2022-03-29 15:10:15 -0700</date>
            <delta_ts>2022-03-30 09:57:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238521-20220329151014.patch</filename>
            <type>text/plain</type>
            <size>28047</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU0ZWVmYjYyZjdiOWE0YzRlYTRmN2Nl
N2EwZDJiYjVmZDQzYzg4NDQuLjkyY2VhNTRjNzBjZTdiMDM0MjgyYTA4M2ViZmNhMDkyMzU4NmVj
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgSGFzaFRyYW5zbGF0b3IgZm9yIEFTQ0lJTGl0ZXJh
bCBmb3IgZmFzdGVyIGxvb2t1cCBpbiBIYXNoTWFwcyAvIEhhc2hTZXRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSGFzaFRyYW5zbGF0b3IgZm9y
IEFTQ0lJTGl0ZXJhbCBmb3IgZmFzdGVyIGxvb2t1cCBpbiBIYXNoTWFwcyAvIEhhc2hTZXRzIHVz
aW5nIGFuIEFTQ0lJTGl0ZXJhbCwKKyAgICAgICAgd2l0aG91dCB0aGUgbmVlZCBmb3IgYWxsb2Nh
dGluZyBhIFN0cmluZy4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAg
ICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6SGFzaFRyYW5zbGF0b3JB
U0NJSUxpdGVyYWw6Omhhc2gpOgorICAgICAgICAoV1RGOjpIYXNoVHJhbnNsYXRvckFTQ0lJTGl0
ZXJhbDo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbDo6
dHJhbnNsYXRlKToKKwogMjAyMi0wMy0yOCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXNhYmxlIGN1c3RvbSBzdG9yYWdlIHBhdGhzIGZvciBJbmRleGVkREIg
YW5kIExvY2FsU3RvcmFnZSBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEyM2IyNzMxOTEwNjRm
YjU0YWNmNWU0ZDFkOTZiM2QwOGZhNzdlOC4uMGIzYzk3MDQzY2ZhNGRkOWJkYzExMTg0NDAxN2Yx
OTA0NWQyMjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAzLTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEhhc2hUcmFuc2xhdG9y
IGZvciBBU0NJSUxpdGVyYWwgZm9yIGZhc3RlciBsb29rdXAgaW4gSGFzaE1hcHMgLyBIYXNoU2V0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEhh
c2hUcmFuc2xhdG9yIGZvciBBU0NJSUxpdGVyYWwgZm9yIGZhc3RlciBsb29rdXAgaW4gSGFzaE1h
cHMgLyBIYXNoU2V0cyB1c2luZyBhbiBBU0NJSUxpdGVyYWwsCisgICAgICAgIHdpdGhvdXQgdGhl
IG5lZWQgZm9yIGFsbG9jYXRpbmcgYSBTdHJpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpwYWNrYWdlRm9ybURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBsdWdpblJl
cGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6YWxsb3dzQ3Jvc3NPcmln
aW5NZXRob2QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRS
ZXN1bHRDYWNoZUl0ZW06OnZhbGlkYXRlQ3Jvc3NPcmlnaW5IZWFkZXJzIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpmaWx0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplSFRUUEhlYWRlckZpZWxkc0FjY29yZGlu
Z1RvVGFpbnRpbmcpOgorCiAyMDIyLTAzLTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ1NTIENvbnRhaW5lciBRdWVyaWVzXSBTdXBwb3J0IENTU09NCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDQzZDFiMDdmZDdiZWIzMjJkZDk2NjUyZGE3YjY0ODQzOGMwZWJmNTIuLmU4M2I0
YjIwOWUyOTNkZWRjNGY3MzQ2Zjc5OWIxZWFjMDE2ZjQ4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgSGFzaFRyYW5zbGF0b3IgZm9yIEFTQ0lJTGl0ZXJhbCBmb3IgZmFzdGVyIGxvb2t1
cCBpbiBIYXNoTWFwcyAvIEhhc2hTZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzg1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgSGFzaFRyYW5zbGF0b3IgZm9yIEFTQ0lJTGl0ZXJhbCBmb3Ig
ZmFzdGVyIGxvb2t1cCBpbiBIYXNoTWFwcyAvIEhhc2hTZXRzIHVzaW5nIGFuIEFTQ0lJTGl0ZXJh
bCwKKyAgICAgICAgd2l0aG91dCB0aGUgbmVlZCBmb3IgYWxsb2NhdGluZyBhIFN0cmluZy4KKwor
ICAgICAgICAqIFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6Z2V0VXNlckRpcmVjdG9yeVN1ZmZpeCk6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGls
aWFyeVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2Nv
Y29hL1Byb2Nlc3NMYXVuY2hlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1
bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGli
L1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNo
ZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3MpOgorCiAyMDIy
LTAzLTI5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IERvbid0IHNlbmQgc3luYyBSZW1vdGVNZWRpYVBsYXllclByb3h5IG1lc3NhZ2VzIHRoYXQgd2Ug
a25vdyB3aWxsIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggYzI0ZWVlOTU0MmNh
NGI5ZmVhYjVkOTNlY2FkOTQxY2JiMTRmYjJlZC4uNzM1MDhlY2ViNjU1YTVhNWRmYzNjYjU3YzFm
OGJiMTg3MjIyYWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTYwLDYgKzYwLDcg
QEAgY2xhc3MgU3ltYm9sUmVnaXN0cnk7CiAKIHN0cnVjdCBDU3RyaW5nVHJhbnNsYXRvcjsKIHN0
cnVjdCBIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOworc3RydWN0IEhhc2hUcmFuc2xh
dG9yQVNDSUlMaXRlcmFsOwogc3RydWN0IExDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBT
dWJzdHJpbmdUcmFuc2xhdG9yOwogc3RydWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKQEAgLTE3
OCw2ICsxNzksNyBAQCBjbGFzcyBTdHJpbmdJbXBsIDogcHJpdmF0ZSBTdHJpbmdJbXBsU2hhcGUg
ewogCiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OkNTdHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVu
ZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOworICAgIGZyaWVu
ZCBzdHJ1Y3QgV1RGOjpIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbDsKICAgICBmcmllbmQgc3Ry
dWN0IFdURjo6TENoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpT
dWJzdHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRy
YW5zbGF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCAxMGZlY2Q4OTYwZjlmMjUxNmIx
MmNlMTA1OTA1MjJhN2IwNmY5ZmE4Li4zMDMzYmE1OTYxNGEzOGUyOWRhODg4M2JmZmQzYTMzNWFi
NjVkZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTYwOSw2ICs2MDksMjQgQEAgdGVt
cGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IFMKICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpLCBsb3dlcmNhc2VMZXR0ZXJzKTsKIH0KIAorc3RydWN0
IEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChB
U0NJSUxpdGVyYWwgbGl0ZXJhbCkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6
OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGxpdGVyYWwuY2hhcmFjdGVycygpLCBsaXRlcmFs
Lmxlbmd0aCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmcm
IGEsIEFTQ0lJTGl0ZXJhbCBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICB9
CisKKyAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoU3RyaW5nJiBsb2NhdGlvbiwgQVNDSUlMaXRl
cmFsIGxpdGVyYWwsIHVuc2lnbmVkIGhhc2gpCisgICAgeworICAgICAgICBsb2NhdGlvbiA9IGxp
dGVyYWw7CisgICAgICAgIGxvY2F0aW9uLmltcGwoKS0+c2V0SGFzaChoYXNoKTsKKyAgICB9Cit9
OworCiBpbmxpbmUgbmFtZXNwYWNlIFN0cmluZ0xpdGVyYWxzIHsKIAogaW5saW5lIFN0cmluZyBv
cGVyYXRvciIiIF9zdHIoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90KQpAQCAtNjIwLDYg
KzYzOCw3IEBAIGlubGluZSBTdHJpbmcgb3BlcmF0b3IiIiBfc3RyKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMsIHNpemVfdCkKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKK3VzaW5nIFdURjo6SGFzaFRy
YW5zbGF0b3JBU0NJSUxpdGVyYWw7CiB1c2luZyBXVEY6OktlZXBUcmFpbGluZ1plcm9zOwogdXNp
bmcgV1RGOjpTdHJpbmc7CiB1c2luZyBXVEY6OmFwcGVuZE51bWJlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNmY2ZGM2
N2NjMzRiOGQ0MDdhYmY2ZGU0NjRjNTI5Yzc0MjM2ZDVmMi4uMzJlYTFkNDlmN2RmZTRhMjAwZDll
NWMwYzU4MzcyNjA3YjVkZDIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTE1MCwxMCArMTUwLDEwIEBAIFJlZlB0cjxE
T01Gb3JtRGF0YT4gRmV0Y2hCb2R5Q29uc3VtZXI6OnBhY2thZ2VGb3JtRGF0YShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjCiAgICAgICAgICAgICBjb250ZW50RGlzcG9zaXRpb25QYXJhbWV0ZXJz
QmVnaW4rKzsKIAogICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZVBhcmFtZXRlcnMoU3Ry
aW5nVmlldyhoZWFkZXIpLnN1YnN0cmluZyhjb250ZW50RGlzcG9zaXRpb25QYXJhbWV0ZXJzQmVn
aW4sIGNvbnRlbnREaXNwb3NpdGlvbkVuZCAtIGNvbnRlbnREaXNwb3NpdGlvblBhcmFtZXRlcnNC
ZWdpbiksIDApOwotICAgICAgICBTdHJpbmcgbmFtZSA9IHBhcmFtZXRlcnMuZ2V0KCJuYW1lIl9z
KTsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSBwYXJhbWV0ZXJzLmdldDxIYXNoVHJhbnNsYXRvckFT
Q0lJTGl0ZXJhbD4oIm5hbWUiX3MpOwogICAgICAgICBpZiAoIW5hbWUpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhcmFtZXRlcnMuZ2V0KCJm
aWxlbmFtZSJfcyk7CisgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhcmFtZXRlcnMuZ2V0PEhh
c2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigiZmlsZW5hbWUiX3MpOwogICAgICAgICBpZiAoIWZp
bGVuYW1lKQogICAgICAgICAgICAgZm9ybS5hcHBlbmQobmFtZSwgU3RyaW5nOjpmcm9tVVRGOChi
b2R5QmVnaW4sIGJvZHlMZW5ndGgpKTsKICAgICAgICAgZWxzZSB7CkBAIC0xNzYsNyArMTc2LDcg
QEAgUmVmUHRyPERPTUZvcm1EYXRhPiBGZXRjaEJvZHlDb25zdW1lcjo6cGFja2FnZUZvcm1EYXRh
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGMKICAgICAgICAgaWYgKCFtaW1lVHlwZSkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG1pbWVUeXBlLT50eXBlLCAibXVsdGlwYXJ0IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShtaW1lVHlwZS0+c3VidHlwZSwgImZvcm0tZGF0YSIpKSB7Ci0gICAgICAgICAgICBhdXRv
IGl0ZXJhdG9yID0gbWltZVR5cGUtPnBhcmFtZXRlcnMuZmluZCgiYm91bmRhcnkiX3MpOworICAg
ICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1pbWVUeXBlLT5wYXJhbWV0ZXJzLmZpbmQ8SGFzaFRy
YW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJib3VuZGFyeSJfcyk7CiAgICAgICAgICAgICBpZiAoaXRl
cmF0b3IgIT0gbWltZVR5cGUtPnBhcmFtZXRlcnMuZW5kKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGl0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRl
eCBkZDE2Zjg5M2YyZDY5NTJjYzVmMDAzMDhmOWQwZDk5YWI4YjBlOGEyLi4xYWVkNDUwNDk0YzYy
YmE3ODgwOGY1MjIwNjEzMzdkOTVjMjhmZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAt
ODQsMTYgKzg0LDE2IEBAIGF1dG8gWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVw
bGFjZW1lbnQoU2hhZG93Um9vdCYgcm9vdCkgLT4gSW5zdGFsbFJlCiAgICAgcm9vdC5hcHBlbmRD
aGlsZCgqbV9lbWJlZFNoYWRvd0VsZW1lbnQpOwogCiAgICAgYXV0byBpZnJhbWVFbGVtZW50ID0g
SFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmlmcmFtZVRhZywgbV9wYXJlbnRF
bGVtZW50LT5kb2N1bWVudCgpKTsKLSAgICBpZiAobV9hdHRyaWJ1dGVzLmNvbnRhaW5zKCJ3aWR0
aCJfcykpCisgICAgaWYgKG1fYXR0cmlidXRlcy5jb250YWluczxIYXNoVHJhbnNsYXRvckFTQ0lJ
TGl0ZXJhbD4oIndpZHRoIl9zKSkKICAgICAgICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZygi
MTAwJSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKLSAgICBjb25zdCBh
dXRvJiBoZWlnaHRWYWx1ZSA9IG1fYXR0cmlidXRlcy5maW5kKCJoZWlnaHQiX3MpOworICAgIGNv
bnN0IGF1dG8mIGhlaWdodFZhbHVlID0gbV9hdHRyaWJ1dGVzLmZpbmQ8SGFzaFRyYW5zbGF0b3JB
U0NJSUxpdGVyYWw+KCJoZWlnaHQiX3MpOwogICAgIGlmIChoZWlnaHRWYWx1ZSAhPSBtX2F0dHJp
YnV0ZXMuZW5kKCkpIHsKICAgICAgICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxO
YW1lczo6c3R5bGVBdHRyLCBBdG9tU3RyaW5nKCJtYXgtaGVpZ2h0OiAxMDAlIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICAgICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhlaWdodEF0dHIsIGhlaWdo
dFZhbHVlLT52YWx1ZSk7CiAgICAgfQogCi0gICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIHlvdVR1YmVVUkwobV9h
dHRyaWJ1dGVzLmdldCgic3JjIl9zKSkpOworICAgIGlmcmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCB5b3VUdWJlVVJMKG1f
YXR0cmlidXRlcy5nZXQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJzcmMiX3MpKSk7CiAg
ICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OmZyYW1lYm9yZGVyQXR0ciwgQXRvbVN0cmluZygiMCIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgCiAgICAgLy8gRGlzYWJsZSBmcmFtZSBmbGF0dGVuaW5n
IGZvciB0aGlzIGlmcmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAppbmRleCBhODdmZTVkN2Fh
ZTVlODBkMzk3NTQ5OWM0YzU2YTZlMDE3ZGYxMWRiLi45Njc0NTk0MGY2NjYxOWU5YTEzZDlkMTY5
NjA3YTFiNzkyZThlNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCkBAIC03Niw3ICs3Niw3
IEBAIGJvb2wgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2Uo
Y29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluCiAKICAgICB1bnNpZ25lZCBleHBlY3RlZE51bVBh
cmFtZXRlcnMgPSAwOwogICAgIGludCB3aW5kb3dCaXRzID0gMTU7Ci0gICAgYXV0byBwYXJhbWV0
ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQoIm1heF93aW5kb3dfYml0cyJfcyk7CisgICAgYXV0
byBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxp
dGVyYWw+KCJtYXhfd2luZG93X2JpdHMiX3MpOwogICAgIGlmIChwYXJhbWV0ZXIgIT0gc2VydmVy
UGFyYW1ldGVycy5lbmQoKSkgewogICAgICAgICB3aW5kb3dCaXRzID0gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8aW50PihwYXJhbWV0ZXItPnZhbHVlKS52YWx1ZV9vcigwKTsKICAg
ICAgICAgaWYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkgewpAQCAtODcsNyAr
ODcsNyBAQCBib29sIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3Bv
bnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbgogICAgIH0KIAogICAgIFdlYlNvY2tldERl
ZmxhdGVyOjpDb250ZXh0VGFrZU92ZXJNb2RlIG1vZGUgPSBXZWJTb2NrZXREZWZsYXRlcjo6VGFr
ZU92ZXJDb250ZXh0OwotICAgIHBhcmFtZXRlciA9IHNlcnZlclBhcmFtZXRlcnMuZmluZCgibm9f
Y29udGV4dF90YWtlb3ZlciJfcyk7CisgICAgcGFyYW1ldGVyID0gc2VydmVyUGFyYW1ldGVycy5m
aW5kPEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigibm9fY29udGV4dF90YWtlb3ZlciJfcyk7
CiAgICAgaWYgKHBhcmFtZXRlciAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7CiAgICAgICAg
IGlmICghcGFyYW1ldGVyLT52YWx1ZS5pc051bGwoKSkgewogICAgICAgICAgICAgbV9mYWlsdXJl
UmVhc29uID0gIlJlY2VpdmVkIGludmFsaWQgbm9fY29udGV4dF90YWtlb3ZlciBwYXJhbWV0ZXIi
X3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4
IDAxYTYyNDBkNGMzMjk0YjEyZjgxMGJkNmQxZDMyZTQyOWMwOTNmYzQuLjk3NDY5NjI5Zjk0NTNl
N2QxNjM3YWE1NWE4MzY0MWNkNGUwZWVkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgUHJvY2Vzc2luZ0lu
c3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBw
YXJzZUF0dHJpYnV0ZXMoZGF0YSgpKTsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGVzKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBTdHJpbmcgdHlwZSA9IGF0dHJpYnV0ZXMtPmdldCgidHlw
ZSJfcyk7CisgICAgICAgIFN0cmluZyB0eXBlID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xh
dG9yQVNDSUlMaXRlcmFsPigidHlwZSJfcyk7CiAKICAgICAgICAgbV9pc0NTUyA9IHR5cGUuaXNF
bXB0eSgpIHx8IHR5cGUgPT0gInRleHQvY3NzIjsKICNpZiBFTkFCTEUoWFNMVCkKQEAgLTEwMywx
MSArMTAzLDExIEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQo
KQogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgU3RyaW5nIGhyZWYgPSBh
dHRyaWJ1dGVzLT5nZXQoImhyZWYiX3MpOwotICAgICAgICBTdHJpbmcgYWx0ZXJuYXRlID0gYXR0
cmlidXRlcy0+Z2V0KCJhbHRlcm5hdGUiX3MpOworICAgICAgICBTdHJpbmcgaHJlZiA9IGF0dHJp
YnV0ZXMtPmdldDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oImhyZWYiX3MpOworICAgICAg
ICBTdHJpbmcgYWx0ZXJuYXRlID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xhdG9yQVNDSUlM
aXRlcmFsPigiYWx0ZXJuYXRlIl9zKTsKICAgICAgICAgbV9hbHRlcm5hdGUgPSBhbHRlcm5hdGUg
PT0gInllcyI7Ci0gICAgICAgIG1fdGl0bGUgPSBhdHRyaWJ1dGVzLT5nZXQoInRpdGxlIl9zKTsK
LSAgICAgICAgbV9tZWRpYSA9IGF0dHJpYnV0ZXMtPmdldCgibWVkaWEiX3MpOworICAgICAgICBt
X3RpdGxlID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigidGl0
bGUiX3MpOworICAgICAgICBtX21lZGlhID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xhdG9y
QVNDSUlMaXRlcmFsPigibWVkaWEiX3MpOwogCiAgICAgICAgIGlmIChtX2FsdGVybmF0ZSAmJiBt
X3RpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1Niw3ICsxNTYsNyBA
QCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KCkKICAgICAgICAg
ICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgU3RyaW5n
IGNoYXJzZXQgPSBhdHRyaWJ1dGVzLT5nZXQoImNoYXJzZXQiX3MpOworICAgICAgICAgICAgICAg
IFN0cmluZyBjaGFyc2V0ID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRl
cmFsPigiY2hhcnNldCJfcyk7CiAgICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSwgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgc3RkOjpudWxsb3B0LCBjaGFyc2V0
LmlzRW1wdHkoKSA/IGRvY3VtZW50KCkuY2hhcnNldCgpIDogV1RGTW92ZShjaGFyc2V0KSk7CiAK
ICAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlX29y
KG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
RW1iZWRkZXJQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luRW1i
ZWRkZXJQb2xpY3kuY3BwCmluZGV4IDRiZjcwNTBjY2NiN2UwYzczYjBkMTk3M2UzYzAxYTI1Mzg5
MDZiNDcuLjJmODYzZWVhYWQ3ZGRmYmQwODNhMTQ4ZjllNjJhMzgwODI2MjhkODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5jcHAK
QEAgLTQ1LDcgKzQ1LDcgQEAgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSBvYnRhaW5Dcm9zc09y
aWdpbkVtYmVkZGVyUG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UKICAgICAgICAgYXV0byBj
b2VwUGFyc2luZ1Jlc3VsdCA9IHBhcnNlU3RydWN0dXJlZEZpZWxkVmFsdWUocmVzcG9uc2UuaHR0
cEhlYWRlckZpZWxkKGhlYWRlck5hbWUpKTsKICAgICAgICAgaWYgKGNvZXBQYXJzaW5nUmVzdWx0
ICYmIGNvZXBQYXJzaW5nUmVzdWx0LT5maXJzdCA9PSAicmVxdWlyZS1jb3JwIikgewogICAgICAg
ICAgICAgdmFsdWUgPSBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5VmFsdWU6OlJlcXVpcmVDT1JQ
OwotICAgICAgICAgICAgcmVwb3J0aW5nRW5kcG9pbnQgPSBjb2VwUGFyc2luZ1Jlc3VsdC0+c2Vj
b25kLmdldCgicmVwb3J0LXRvIl9zKTsKKyAgICAgICAgICAgIHJlcG9ydGluZ0VuZHBvaW50ID0g
Y29lcFBhcnNpbmdSZXN1bHQtPnNlY29uZC5nZXQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+
KCJyZXBvcnQtdG8iX3MpOwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAKaW5kZXggNzRiZDEyOWYxYzgx
MjBkMzZjYWM2MWUyNzhmMGE4ZGJjNjA1ZWU3MS4uZTM3MDBmNzlkOWVmMTRjMjNkNjJjY2U5NTZk
YTdmYjQxM2Y4OTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3kuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kgb2J0YWluQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmUKICAgICAgICAgfSBlbHNlIGlmIChjb29wUGFyc2luZ1Jlc3VsdC0+Zmlyc3QgPT0gInNh
bWUtb3JpZ2luLWFsbG93LXBvcHVwcyIpCiAgICAgICAgICAgICB2YWx1ZSA9IENyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5VmFsdWU6OlNhbWVPcmlnaW5BbGxvd1BvcHVwczsKIAotICAgICAgICByZXBv
cnRpbmdFbmRwb2ludCA9IGNvb3BQYXJzaW5nUmVzdWx0LT5zZWNvbmQuZ2V0KCJyZXBvcnQtdG8i
X3MpOworICAgICAgICByZXBvcnRpbmdFbmRwb2ludCA9IGNvb3BQYXJzaW5nUmVzdWx0LT5zZWNv
bmQuZ2V0PEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigicmVwb3J0LXRvIl9zKTsKICAgICB9
OwogCiAgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgcG9saWN5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3Bw
CmluZGV4IGVmNGQ1OGNhNzMwNWRhNjc4NTU2MTU3YTQ2OTRhYTBmOTQ0MWY1MjQuLjYwNWExNzI2
MDc3Zjc0NDE1YzE5ZDQ1Y2E3YjYwMTA4MTA4OTRiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKQEAg
LTg1LDEyICs4NSwxMiBAQCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZUl0ZW06OnZhbGlkYXRlTWV0aG9kQW5kSGVhZAogCiBib29sIENyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjphbGxvd3NDcm9zc09yaWdpbk1ldGhvZChjb25z
dCBTdHJpbmcmIG1ldGhvZCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWV0aG9kcy5jb250YWlucyhtZXRob2Qp
IHx8IChtX21ldGhvZHMuY29udGFpbnMoIioiX3MpICYmIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
ICE9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpIHx8IGlzT25BY2Nlc3NDb250cm9sU2lt
cGxlUmVxdWVzdE1ldGhvZEFsbG93bGlzdChtZXRob2QpOworICAgIHJldHVybiBtX21ldGhvZHMu
Y29udGFpbnMobWV0aG9kKSB8fCAobV9tZXRob2RzLmNvbnRhaW5zPEhhc2hUcmFuc2xhdG9yQVND
SUlMaXRlcmFsPigiKiJfcykgJiYgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgIT0gU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k6OlVzZSkgfHwgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0
aG9kQWxsb3dsaXN0KG1ldGhvZCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBDcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6dmFsaWRhdGVDcm9zc09yaWdpbkhlYWRlcnMo
Y29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMsIFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSBjb25zdAogewotICAgIGJvb2wgdmFsaWRXaWxk
Y2FyZCA9IG1faGVhZGVycy5jb250YWlucygiKiJfcykgJiYgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgIT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKKyAgICBib29sIHZhbGlkV2lsZGNh
cmQgPSBtX2hlYWRlcnMuY29udGFpbnM8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCIqIl9z
KSAmJiBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSAhPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6
VXNlOwogICAgIGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDogcmVxdWVzdEhlYWRlcnMpIHsKICAg
ICAgICAgaWYgKGhlYWRlci5rZXlBc0hUVFBIZWFkZXJOYW1lICYmIGlzQ3Jvc3NPcmlnaW5TYWZl
UmVxdWVzdEhlYWRlcihoZWFkZXIua2V5QXNIVFRQSGVhZGVyTmFtZS52YWx1ZSgpLCBoZWFkZXIu
dmFsdWUpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IGQ5MmE5
M2IxNDI3YWEyNDQyNGJjYmNlMzQyMjUwZTlmOWRjOTk5NmUuLjBlZjk4ODE1YmVjOWUwYTdkYmNm
MTg1NTEyOTI0Y2FjMzkxZmNiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC0xOTMsNyArMTkzLDcg
QEAgUmVzb3VyY2VSZXNwb25zZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZmlsdGVyKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLAogICAgIGZpbHRlcmVkUmVzcG9uc2Uuc2V0VHlwZShU
eXBlOjpDb3JzKTsKIAogICAgIGF1dG8gYWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlclNldCA9IHZh
bHVlT3JEZWZhdWx0KHBhcnNlQWNjZXNzQ29udHJvbEFsbG93TGlzdDxBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+KHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXNz
Q29udHJvbEV4cG9zZUhlYWRlcnMpKSk7Ci0gICAgaWYgKHBlcmZvcm1DaGVjayA9PSBQZXJmb3Jt
RXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpZZXMgJiYgYWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlclNl
dC5jb250YWlucygiKiJfcykpCisgICAgaWYgKHBlcmZvcm1DaGVjayA9PSBQZXJmb3JtRXhwb3Nl
QWxsSGVhZGVyc0NoZWNrOjpZZXMgJiYgYWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlclNldC5jb250
YWluczxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oIioiX3MpKQogICAgICAgICByZXR1cm4g
ZmlsdGVyZWRSZXNwb25zZTsKIAogICAgIGZpbHRlcmVkUmVzcG9uc2UubV9odHRwSGVhZGVyRmll
bGRzLnVuY29tbW9uSGVhZGVycygpLnJlbW92ZUFsbE1hdGNoaW5nKFsmXShhdXRvJiBlbnRyeSkg
ewpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXpl
SFRUUEhlYWRlckZpZWxkc0FjY29yZGluZ1RvVGFpbnRpbmcoKQogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpDb3JzOiB7CiAgICAgICAgIGF1dG8g
Y29yc1NhZmVIZWFkZXJTZXQgPSB2YWx1ZU9yRGVmYXVsdChwYXJzZUFjY2Vzc0NvbnRyb2xBbGxv
d0xpc3Q8QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPihodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJzKSkpOwotICAgICAgICBpZiAoY29yc1Nh
ZmVIZWFkZXJTZXQuY29udGFpbnMoIioiX3N0cikpCisgICAgICAgIGlmIChjb3JzU2FmZUhlYWRl
clNldC5jb250YWluczxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oIioiX3MpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5jb21tb25IZWFkZXJz
KCkucmVtb3ZlQWxsTWF0Y2hpbmcoWyZjb3JzU2FmZUhlYWRlclNldF0oYXV0byYgaGVhZGVyKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCmlu
ZGV4IDIxZTZkODc1NzEzNTlkOTFjMjNjNWIwYjYwOTg5ODQzM2E5YTFmYTQuLmUwNWFjY2NlN2Zm
MTRlNjAyMTEzMWZlMzJmYTg2NjkxZDQxYjY4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCkBAIC02NDIsNyArNjQyLDcgQEAgc3RhdGlj
IGJvb2wgYXBwbHlTYW5kYm94KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXQKIAogc3RhdGljIFN0cmluZyBnZXRVc2VyRGlyZWN0b3J5U3VmZml4
KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiB7Ci0gICAgYXV0byB1c2VyRGlyZWN0b3J5U3VmZml4ID0gcGFyYW1ldGVycy5leHRyYUlu
aXRpYWxpemF0aW9uRGF0YS5maW5kKCJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiKTsKKyAgICBhdXRv
IHVzZXJEaXJlY3RvcnlTdWZmaXggPSBwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LmZpbmQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgi
X3MpOwogICAgIGlmICh1c2VyRGlyZWN0b3J5U3VmZml4ICE9IHBhcmFtZXRlcnMuZXh0cmFJbml0
aWFsaXphdGlvbkRhdGEuZW5kKCkpIHsKICAgICAgICAgU3RyaW5nIHN1ZmZpeCA9IHVzZXJEaXJl
Y3RvcnlTdWZmaXgtPnZhbHVlOwogICAgICAgICBhdXRvIGZpcnN0UGF0aFNlcGFyYXRvciA9IHN1
ZmZpeC5maW5kKCcvJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmZGQyZjZlMGRhNGIwNmNkYWRhZDE2MzNiMDE0ZDViZDhi
ZTE5NjJmLi4xYzU0ZTAxNTg0ZTYwMzA1NDA4NjRiYjE2ZTE0NTY2YTgyNzgzMGJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKQEAg
LTY1LDEwICs2NSwxMCBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0
aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdQogICAgIGxhdW5jaE9wdGlv
bnMucHJvY2Vzc0lkZW50aWZpZXIgPSBtX3Byb2Nlc3NJZGVudGlmaWVyOwogCiAgICAgaWYgKGNv
bnN0IGNoYXIqIHVzZXJEaXJlY3RvcnlTdWZmaXggPSBnZXRlbnYoIkRJUkhFTFBFUl9VU0VSX0RJ
Ul9TVUZGSVgiKSkKLSAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0
YS5hZGQoInVzZXItZGlyZWN0b3J5LXN1ZmZpeCJfcywgdXNlckRpcmVjdG9yeVN1ZmZpeCk7Cisg
ICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkPEhhc2hUcmFu
c2xhdG9yQVNDSUlMaXRlcmFsPigidXNlci1kaXJlY3Rvcnktc3VmZml4Il9zLCB1c2VyRGlyZWN0
b3J5U3VmZml4KTsKIAogICAgIGlmIChtX2Fsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSkK
LSAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoImFsd2F5
cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3JpdHkiX3MsICJ0cnVlIik7CisgICAgICAgIGxhdW5j
aE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkPEhhc2hUcmFuc2xhdG9yQVNDSUlM
aXRlcmFsPigiYWx3YXlzLXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0eSJfcywgInRydWUiKTsK
IAogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkgJiYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKSkKICAgICBjb25zdCBjaGFyKiB2YXJuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvY29jb2EvUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9jb2NvYS9Qcm9jZXNzTGF1bmNoZXJDb2Nv
YS5tbQppbmRleCAwYzVjZGRkMTk5MjcxNGY1NmZjZmIxMDMxNjIyNmQyMTE2MWU0ZTJiLi45OWU2
ZTAwZGMyNThmOTMxN2UyODE2OTM4MDgyNWM3ZWZkZjQ2MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9jb2NvYS9Qcm9jZXNzTGF1bmNoZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9jb2NvYS9Qcm9jZXNzTGF1bmNo
ZXJDb2NvYS5tbQpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKCkKICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUoaW5pdGlhbGl6YXRpb25N
ZXNzYWdlLmdldCgpLCAiQ29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMiLCBjb250YWluZXJF
bnZpcm9ubWVudFZhcmlhYmxlcy5nZXQoKSk7CiAjZW5kaWYKIAotICAgIGF1dG8gbGFuZ3VhZ2Vz
SXRlcmF0b3IgPSBtX2xhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZmluZCgi
T3ZlcnJpZGVMYW5ndWFnZXMiKTsKKyAgICBhdXRvIGxhbmd1YWdlc0l0ZXJhdG9yID0gbV9sYXVu
Y2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmZpbmQ8SGFzaFRyYW5zbGF0b3JBU0NJ
SUxpdGVyYWw+KCJPdmVycmlkZUxhbmd1YWdlcyJfcyk7CiAgICAgaWYgKGxhbmd1YWdlc0l0ZXJh
dG9yICE9IG1fbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5lbmQoKSkgewog
ICAgICAgICBMT0dfV0lUSF9TVFJFQU0oTGFuZ3VhZ2UsIHN0cmVhbSA8PCAiUHJvY2VzcyBMYXVu
Y2hlciBpcyBjb3B5aW5nIE92ZXJyaWRlTGFuZ3VhZ2VzIGludG8gaW5pdGlhbGl6YXRpb24gbWVz
c2FnZTogIiA8PCBsYW5ndWFnZXNJdGVyYXRvci0+dmFsdWUpOwogICAgICAgICBhdXRvIGxhbmd1
YWdlcyA9IGFkb3B0T1NPYmplY3QoeHBjX2FycmF5X2NyZWF0ZShudWxscHRyLCAwKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVu
Y2hlckdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9j
ZXNzTGF1bmNoZXJHTGliLmNwcAppbmRleCAxMjRiZmMzZjE2ZTg4YWViNzAxMTMwNGNhYzk1N2Zh
YTFlZTgwZDBjLi44M2M4ODMyNWM5YjMwYjU2MzVhNTIxNGFhNjM3Njc1ZjZjMTA2YjgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVu
Y2hlckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIv
UHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIFByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAKICNpZiBPUyhMSU5VWCkKICAgICBjb25zdCBjaGFy
KiBzYW5kYm94RW52ID0gZ19nZXRlbnYoIldFQktJVF9GT1JDRV9TQU5EQk9YIik7Ci0gICAgYm9v
bCBzYW5kYm94RW5hYmxlZCA9IG1fbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0
YS5nZXQoImVuYWJsZS1zYW5kYm94IikgPT0gInRydWUiOworICAgIGJvb2wgc2FuZGJveEVuYWJs
ZWQgPSBtX2xhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0PEhhc2hUcmFu
c2xhdG9yQVNDSUlMaXRlcmFsPigiZW5hYmxlLXNhbmRib3giX3MpID09ICJ0cnVlIjsKIAogICAg
IGlmIChzYW5kYm94RW52KQogICAgICAgICBzYW5kYm94RW5hYmxlZCA9ICFzdHJjbXAoc2FuZGJv
eEVudiwgIjEiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IGJkYzhhNDMxY2Q1MzQ0NzA4NDVkYTVkYjBmYzE1MmU5YTY3NjBmMDkuLmE4ZWY1ZGJj
NDdlNmVjYjJhNDYzZmU3Yjg1ZDFjZWQ5ZWEwMzQ1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9u
cyYgbGF1bmNoT3B0CiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sLT5jdXN0b21XZWJDb250ZW50U2Vy
dmljZUJ1bmRsZUlkZW50aWZpZXIoKS5pc0VtcHR5KCkpCiAgICAgICAgIGxhdW5jaE9wdGlvbnMu
Y3VzdG9tV2ViQ29udGVudFNlcnZpY2VCdW5kbGVJZGVudGlmaWVyID0gbV9wcm9jZXNzUG9vbC0+
Y3VzdG9tV2ViQ29udGVudFNlcnZpY2VCdW5kbGVJZGVudGlmaWVyKCkuYXNjaWkoKTsKICAgICBp
ZiAoV2ViS2l0Ojppc0luc3BlY3RvclByb2Nlc3NQb29sKHByb2Nlc3NQb29sKCkpKQotICAgICAg
ICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgiaW5zcGVjdG9yLXBy
b2Nlc3MiX3MsICIxIl9zKTsKKyAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0
aW9uRGF0YS5hZGQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJpbnNwZWN0b3ItcHJvY2Vz
cyJfcywgIjEiX3MpOwogCiAgICAgTE9HKExhbmd1YWdlLCAiV2ViUHJvY2Vzc1Byb3h5IGlzIGdl
dHRpbmcgbGF1bmNoIG9wdGlvbnMuIik7CiAgICAgYXV0byBvdmVycmlkZUxhbmd1YWdlcyA9IG1f
cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5vdmVycmlkZUxhbmd1YWdlcygpOwpAQCAtNDIz
LDE0ICs0MjMsMTQgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJv
Y2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHQKICAgICAgICAgICAgIGxhbmd1
YWdlU3RyaW5nLmFwcGVuZChvdmVycmlkZUxhbmd1YWdlc1tpXSk7CiAgICAgICAgIH0KICAgICAg
ICAgTE9HX1dJVEhfU1RSRUFNKExhbmd1YWdlLCBzdHJlYW0gPDwgIlNldHRpbmcgV2ViUHJvY2Vz
cydzIGxhdW5jaCBPdmVycmlkZUxhbmd1YWdlcyB0byAiIDw8IGxhbmd1YWdlU3RyaW5nKTsKLSAg
ICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoIk92ZXJyaWRl
TGFuZ3VhZ2VzIl9zLCBsYW5ndWFnZVN0cmluZy50b1N0cmluZygpKTsKKyAgICAgICAgbGF1bmNo
T3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxp
dGVyYWw+KCJPdmVycmlkZUxhbmd1YWdlcyJfcywgbGFuZ3VhZ2VTdHJpbmcudG9TdHJpbmcoKSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIExPRyhMYW5ndWFnZSwgIm92ZXJyaWRlTGFuZ3VhZ2VzIGlz
IHN0aWxsIGVtcHR5LiBOb3Qgc2V0dGluZyBXZWJQcm9jZXNzJ3MgbGF1bmNoIE92ZXJyaWRlTGFu
Z3VhZ2VzLiIpOwogCiAgICAgbGF1bmNoT3B0aW9ucy5ub25WYWxpZEluamVjdGVkQ29kZUFsbG93
ZWQgPSBzaG91bGRBbGxvd05vblZhbGlkSW5qZWN0ZWRDb2RlKCk7CiAKICAgICBpZiAoaXNQcmV3
YXJtZWQoKSkKLSAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5h
ZGQoImlzLXByZXdhcm1lZCJfcywgIjEiX3MpOworICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhLmFkZDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oImlzLXBy
ZXdhcm1lZCJfcywgIjEiX3MpOwogCiAjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCiAgICAgbGF1
bmNoT3B0aW9ucy5wcm9jZXNzUGF0aCA9IG1fcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NQYXRoKCk7
CkBAIC00NDMsOCArNDQzLDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlv
bnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHQKICAgICB9CiAKICAg
ICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pIHsKLSAgICAgICAgbGF1bmNoT3B0aW9u
cy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiX3Ms
ICIxIl9zKTsKLSAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5h
ZGQoInJlZ2lzdHJhYmxlLWRvbWFpbiJfcywgbV9yZWdpc3RyYWJsZURvbWFpbi0+c3RyaW5nKCkp
OworICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZDxIYXNo
VHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiX3MsICIxIl9z
KTsKKyAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQ8SGFz
aFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJyZWdpc3RyYWJsZS1kb21haW4iX3MsIG1fcmVnaXN0
cmFibGVEb21haW4tPnN0cmluZygpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCmluZGV4IGM4MDg3MzQw
NmY4NmU1YjgzMjEwYzM2YWJlZjE3MGNjOWYzNmVjNjQuLjYzMzg4NGRhZGNiMWZhYThmOGIxYTMx
ZDk1NTk4NzhmZWM2Mzk3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcApAQCAtMzksNyArMzksNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNo
T3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCiB7
Ci0gICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5zZXQoImVuYWJsZS1z
YW5kYm94IiwgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuc2V0KCJlbmFi
bGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSA/ICJ0cnVlIiA6
ICJmYWxzZSIpOwogCiAgICAgaWYgKG1fcHJvY2Vzc1Bvb2wtPnNhbmRib3hFbmFibGVkKCkpIHsK
ICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSogZGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3Jl
LmdldCgpOwpAQCAtNTEsOSArNTEsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1H
ZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbAogCiAgICAg
ICAgIEFTU0VSVChkYXRhU3RvcmUpOwogICAgICAgICBkYXRhU3RvcmUtPnJlc29sdmVEaXJlY3Rv
cmllc0lmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXph
dGlvbkRhdGEuc2V0KCJ3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSIsIGRhdGFTdG9yZS0+cmVzb2x2
ZWREYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRp
YWxpemF0aW9uRGF0YS5zZXQoIm1lZGlhS2V5c0RpcmVjdG9yeSIsIGRhdGFTdG9yZS0+cmVzb2x2
ZWRNZWRpYUtleXNEaXJlY3RvcnkoKSk7Ci0gICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0
aWFsaXphdGlvbkRhdGEuc2V0KCJhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5IiwgZGF0YVN0b3Jl
LT5yZXNvbHZlZEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgICAgIGxhdW5jaE9w
dGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuc2V0KCJ3ZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSJfcywgZGF0YVN0b3JlLT5yZXNvbHZlZERhdGFiYXNlRGlyZWN0b3J5KCkpOworICAgICAgICBs
YXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgibWVkaWFLZXlzRGlyZWN0
b3J5Il9zLCBkYXRhU3RvcmUtPnJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5KCkpOworICAgICAg
ICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSJfcywgZGF0YVN0b3JlLT5yZXNvbHZlZEFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKSk7CiAKICAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYVNhbmRib3hQYXRocyA9IG1f
cHJvY2Vzc1Bvb2wtPnNhbmRib3hQYXRocygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IDUzZWIyNjdlMjcwMzI3
ZDVjMzc2NDA3NmVhMDgxMDcyNDc2MDE5MjIuLmMxMWIyYzljNzU5ZDI1Zjg5YmE2MDhjMmE4ZTA3
N2U4NWE4MjU2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbQpAQCAtNjM0LDE3ICs2MzQsMTcgQEAgdm9pZCBXZWJQcm9jZXNzOjpw
bGF0Zm9ybUluaXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXph
dGlvblAKICAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNob3VsZFNldHVwUG93ZXJPYnNlcnZl
cigpID0gZmFsc2U7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0gICAgaWYgKHBhcmFtZXRl
cnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KCJpbnNwZWN0b3ItcHJvY2VzcyJfcykgPT0g
IjEiKQorICAgIGlmIChwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmdldDxIYXNo
VHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oImluc3BlY3Rvci1wcm9jZXNzIl9zKSA9PSAiMSIpCiAg
ICAgICAgIG1fcHJvY2Vzc1R5cGUgPSBQcm9jZXNzVHlwZTo6SW5zcGVjdG9yOwogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBlbHNlIGlmIChwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6
YXRpb25EYXRhLmdldCgic2VydmljZS13b3JrZXItcHJvY2VzcyJfcykgPT0gIjEiKSB7CisgICAg
ZWxzZSBpZiAocGFyYW1ldGVycy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQ8SGFzaFRyYW5z
bGF0b3JBU0NJSUxpdGVyYWw+KCJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIl9zKSA9PSAiMSIpIHsK
ICAgICAgICAgbV9wcm9jZXNzVHlwZSA9IFByb2Nlc3NUeXBlOjpTZXJ2aWNlV29ya2VyOwogI2lm
IFBMQVRGT1JNKE1BQykKLSAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbiA9IFJlZ2lzdHJhYmxl
RG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcocGFyYW1l
dGVycy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQoInJlZ2lzdHJhYmxlLWRvbWFpbiJfcykp
OworICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhwYXJhbWV0ZXJzLmV4dHJhSW5p
dGlhbGl6YXRpb25EYXRhLmdldDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oInJlZ2lzdHJh
YmxlLWRvbWFpbiJfcykpOwogI2VuZGlmCiAgICAgfQogI2VuZGlmCi0gICAgZWxzZSBpZiAocGFy
YW1ldGVycy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQoImlzLXByZXdhcm1lZCJfcykgPT0g
IjEiKQorICAgIGVsc2UgaWYgKHBhcmFtZXRlcnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0
PEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigiaXMtcHJld2FybWVkIl9zKSA9PSAiMSIpCiAg
ICAgICAgIG1fcHJvY2Vzc1R5cGUgPSBQcm9jZXNzVHlwZTo6UHJld2FybWVkV2ViQ29udGVudDsK
ICAgICBlbHNlCiAgICAgICAgIG1fcHJvY2Vzc1R5cGUgPSBQcm9jZXNzVHlwZTo6V2ViQ29udGVu
dDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456134</attachid>
            <date>2022-03-30 09:53:53 -0700</date>
            <delta_ts>2022-03-30 09:57:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238521-20220330125352.patch</filename>
            <type>text/plain</type>
            <size>12042</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmViYTMyNTZmOGI3MmZm
ZjJkYjlhNTY2ODkyMWI0ZjFjMTQ4OGFkYi4uMjUxYWEwMTljMzg3MmNmMDU3ZGY4ZGM3ZDU2MDBl
MGFlNmM4YjAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtNjA1Miw2ICs2MDUyLDM1IEBACiAgICAgICAgICog
Q29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZzoKICAgICAgICAgKiBQcm9maWxpbmcvV2Vi
Q29yZS5wcm9mZGF0YTogQWRkZWQuCiAKKzIwMjItMDMtMzAgIEFuZHJlcyBHb256YWxleiAgPGFu
ZHJlc2dfMjJAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IHN0cmVhbWluZyBvZiBBWCB0cmVl
cyBmcm9tIHRoZSBjbGFzcyBBWExvZ2dlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODU1MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTEwNDE5
MjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQVhM
b2dnZXIgZnVuY3Rpb25hbGl0eSBpcyBkZWJ1ZyBvbmx5LiBXZSBuZWVkIHRvIHN0cmVhbSB0aGUg
Y29udGVudCBvZgorICAgICAgICB0aGUgQVggdHJlZXMgYm90aCBpbiBkZWJ1ZyBhbmQgcmVsZWFz
ZSBidWlsZHMuIFRoaXMgcGF0Y2ggc3BsaXRzCisgICAgICAgIHN0cmVhbWluZyBvZiB0aGUgQVgg
dHJlZXMgZnJvbSB0aGUgQVhMb2dnZXIgY2xhc3MsIHdoaWNoIHJlbWFpbnMgYSBkZWJ1ZworICAg
ICAgICBvbmx5IHV0aWxpdHkuCisgICAgICAgIEluIGFkZGl0aW9uLCBhZGRlZCBhIG1lY2hhbmlz
bSB0byBjb250cm9sIHdoYXQgaXMgc3RyZWFtZWQgdmlhIHRoZQorICAgICAgICBBWFN0cmVhbU9w
dGlvbnMgZW51bWVyYXRpb24uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZExvZyk6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmVhbUlzb2xhdGVkU3VidHJlZU9uTWFpblRo
cmVhZCk6CisgICAgICAgIFN0cmVhbXMgYSBzbmFwc2hvdCBvZiB0aGUgaGllcmFyY2h5IG9mIEFY
SXNvbGF0ZWRPYmplY3RzIG9uIHRoZSBtYWluCisgICAgICAgIHRocmVhZCwgbGltaXRpbmcgdGhl
IHByb3BlcnRpZXMgb2YgdGhlIEFYSXNvbGF0ZWRPYmplY3QgdGhhdCBjYW4gYmUKKyAgICAgICAg
YWNjZXNzZWQgdXNpbmcgQVhTdHJlYW1PcHRpb25zLgorCisgICAgICAgIChXZWJDb3JlOjpzdHJl
YW1BWENvcmVPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6c3RyZWFtU3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBWExvZ2dlcjo6YWRkKTogUmVwbGFjZWQgd2l0aCBzdHJlYW1TdWJ0cmVl
LgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhMb2dnZXIuaDoKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgorCiAyMDIyLTAzLTIxICBaaXJh
biBTdW4gIDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW3NlbGVjdGlvbl0gSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkgc2hvdWxkbid0IGJlIGNhbGxl
ZCBpbiBzZXRSYW5nZVRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhMb2dnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5j
cHAKaW5kZXggOTQxNDYxODJhNWFiZGRiMmM5MGU2MTYxYjBmZGZhMGY2YzNlZTU0ZC4uMTUyMjVh
NGIxMzcxNDYxOTk3ZmI1N2ZiYzlhOWY1NjI2YjYzN2YzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKQEAgLTI3LDggKzI3LDYgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiAhTE9HX0RJU0FCTEVECiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIK
IAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCkBAIC00NiwxMiArNDQs
MTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGJvb2wgc2hvdWxkTG9nKCkKIHsKICAg
ICAvLyBNb2RpZnkgdGhlIGluaXRpYWxpemVyIGxpc3QgYmVsb3cgdG8gY2hvb3NlIHdoYXQgdGhy
ZWFkIHlvdSB3YW50IHRvIGxvZyBtZXNzYWdlcyBmcm9tLgotICAgIHN0YXRpYyBPcHRpb25TZXQ8
QVhMb2dnaW5nT3B0aW9ucz4gbG9nZ2luZ09wdGlvbnMgeyBBWExvZ2dpbmdPcHRpb25zOjpNYWlu
VGhyZWFkLCBBWExvZ2dpbmdPcHRpb25zOjpPZmZNYWluVGhyZWFkIH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBPcHRpb25TZXQ8QVhMb2dnaW5nT3B0aW9ucz4gbG9nZ2luZ09wdGlvbnMgeyBBWExv
Z2dpbmdPcHRpb25zOjpNYWluVGhyZWFkLCBBWExvZ2dpbmdPcHRpb25zOjpPZmZNYWluVGhyZWFk
IH07CiAKICAgICByZXR1cm4gKGlzTWFpblRocmVhZCgpICYmIGxvZ2dpbmdPcHRpb25zICYgQVhM
b2dnaW5nT3B0aW9uczo6TWFpblRocmVhZCkKICAgICAgICAgfHwgKCFpc01haW5UaHJlYWQoKSAm
JiBsb2dnaW5nT3B0aW9ucyAmIEFYTG9nZ2luZ09wdGlvbnM6Ok9mZk1haW5UaHJlYWQpOwogfQog
CisjaWYgIUxPR19ESVNBQkxFRAorCiBBWExvZ2dlcjo6QVhMb2dnZXIoY29uc3QgU3RyaW5nJiBt
ZXRob2ROYW1lKQogICAgIDogbV9tZXRob2ROYW1lKG1ldGhvZE5hbWUpCiB7CkBAIC0xMTYsMjMg
KzExNiw2IEBAIHZvaWQgQVhMb2dnZXI6OmxvZyhjb25zdCBWZWN0b3I8UmVmUHRyPEFYQ29yZU9i
amVjdD4+JiBvYmplY3RzKQogICAgIH0KIH0KIAotdm9pZCBBWExvZ2dlcjo6YWRkKFRleHRTdHJl
YW0mIHN0cmVhbSwgY29uc3QgUmVmUHRyPEFYQ29yZU9iamVjdD4mIG9iamVjdCwgYm9vbCByZWN1
cnNpdmUpCi17Ci0gICAgaWYgKHNob3VsZExvZygpKSB7Ci0gICAgICAgIGlmICghb2JqZWN0KQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHN0cmVhbS5pbmNyZWFzZUluZGVudCgpOwot
ICAgICAgICBzdHJlYW0gPDwgKm9iamVjdDsKLQotICAgICAgICBpZiAocmVjdXJzaXZlKSB7Ci0g
ICAgICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogb2JqZWN0LT5jaGlsZHJlbihmYWxzZSkpCi0g
ICAgICAgICAgICAgICAgYWRkKHN0cmVhbSwgY2hpbGQsIHRydWUpOwotICAgICAgICB9Ci0gICAg
ICAgIHN0cmVhbS5kZWNyZWFzZUluZGVudCgpOwotICAgIH0KLX0KLQogdm9pZCBBWExvZ2dlcjo6
bG9nKGNvbnN0IHN0ZDo6cGFpcjxSZWZQdHI8QVhDb3JlT2JqZWN0PiwgQVhPYmplY3RDYWNoZTo6
QVhOb3RpZmljYXRpb24+JiBub3RpZmljYXRpb24pCiB7CiAgICAgaWYgKHNob3VsZExvZygpKSB7
CkBAIC0xODAsNiArMTYzLDggQEAgdm9pZCBBWExvZ2dlcjo6bG9nKEFYT2JqZWN0Q2FjaGUmIGF4
T2JqZWN0Q2FjaGUpCiAgICAgfQogfQogCisjZW5kaWYgLy8gIUxPR19ESVNBQkxFRAorCiBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZSkKIHsKICAgICBzdHJlYW0gPDwgYWNjZXNzaWJpbGl0eVJvbGVUb1N0cmluZyhyb2xlKTsK
QEAgLTUyMSw0MSArNTA2LDQ2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
c3RyZWFtLCBBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbiBub3RpZmljCiAKIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBBWENvcmVPYmplY3QmIG9i
amVjdCkKIHsKLSAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwU2NvcGUoc3RyZWFtKTsK
LSAgICBzdHJlYW0gPDwgIm9iamVjdElEICIgPDwgb2JqZWN0Lm9iamVjdElEKCk7Ci0gICAgYXV0
byByb2xlID0gb2JqZWN0LnJvbGVWYWx1ZSgpOwotICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoInJv
bGVWYWx1ZSIsIHJvbGUpOwotCi0gICAgYXV0byogcGFyZW50ID0gb2JqZWN0LnBhcmVudE9iamVj
dFVuaWdub3JlZCgpOwotICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoInBhcmVudE9iamVjdCIsIHBh
cmVudCA/IHBhcmVudC0+b2JqZWN0SUQoKSA6IEFYSUQoKSk7Ci0KLSAgICBzdHJlYW0uZHVtcFBy
b3BlcnR5KCJpZGVudGlmaWVyQXR0cmlidXRlIiwgb2JqZWN0LmlkZW50aWZpZXJBdHRyaWJ1dGUo
KSk7Ci0KLSAgICBhdXRvKiBvYmplY3RXaXRoSW50ZXJlc3RpbmdIVE1MID0gcm9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QnV0dG9uID8gLy8gQWRkIGhlcmUgb3RoZXIgcm9sZXMgb2YgaW50ZXJl
c3QuCi0gICAgICAgICZvYmplY3QgOiBudWxscHRyOwotICAgIGlmIChyb2xlID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpTdGF0aWNUZXh0ICYmIHBhcmVudCkKLSAgICAgICAgb2JqZWN0V2l0aEludGVy
ZXN0aW5nSFRNTCA9IHBhcmVudDsKLSAgICBpZiAob2JqZWN0V2l0aEludGVyZXN0aW5nSFRNTCkK
LSAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgib3V0ZXJIVE1MIiwgb2JqZWN0V2l0aEludGVy
ZXN0aW5nSFRNTC0+b3V0ZXJIVE1MKCkpOwotCi0gICAgaWYgKGF1dG8qIGF4T2JqZWN0ID0gZHlu
YW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KCZvYmplY3QpOyBheE9iamVjdCAmJiBh
eE9iamVjdC0+aGFzRGlzcGxheUNvbnRlbnRzKCkpCi0gICAgICAgIHN0cmVhbS5kdW1wUHJvcGVy
dHkoImhhc0Rpc3BsYXlDb250ZW50cyIsIHRydWUpOwotICAgIHN0cmVhbS5kdW1wUHJvcGVydHko
ImFkZHJlc3MiLCAmb2JqZWN0KTsKLSAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJ3cmFwcGVyIiwg
b2JqZWN0LndyYXBwZXIoKSk7Ci0KKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEFYU3RyZWFtT3B0
aW9ucz4gb3B0aW9ucyA9IHsgQVhTdHJlYW1PcHRpb25zOjpPYmplY3RJRCwgQVhTdHJlYW1PcHRp
b25zOjpSb2xlLCBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElELCBBWFN0cmVhbU9wdGlvbnM6Oklk
ZW50aWZpZXJBdHRyaWJ1dGUsIEFYU3RyZWFtT3B0aW9uczo6T3V0ZXJIVE1MLCBBWFN0cmVhbU9w
dGlvbnM6OkRpc3BsYXlDb250ZW50cywgQVhTdHJlYW1PcHRpb25zOjpBZGRyZXNzIH07CisgICAg
c3RyZWFtQVhDb3JlT2JqZWN0KHN0cmVhbSwgb2JqZWN0LCBvcHRpb25zKTsKICAgICByZXR1cm4g
c3RyZWFtOwogfQogCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBBWElzb2xhdGVkVHJlZSYg
dHJlZSkKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBUZXh0U3RyZWFtOjpH
cm91cFNjb3BlIGdyb3VwU2NvcGUoc3RyZWFtKTsKICAgICBzdHJlYW0gPDwgInRyZWVJRCAiIDw8
IHRyZWUudHJlZUlEKCk7CiAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgicm9vdE5vZGVJRCIsIHRy
ZWUucm9vdE5vZGUoKS0+b2JqZWN0SUQoKSk7CiAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgiZm9j
dXNlZE5vZGVJRCIsIHRyZWUubV9mb2N1c2VkTm9kZUlEKTsKLSAgICBBWExvZ2dlcjo6YWRkKHN0
cmVhbSwgdHJlZS5yb290Tm9kZSgpLCB0cnVlKTsKKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEFY
U3RyZWFtT3B0aW9ucz4gb3B0aW9ucyA9IHsgQVhTdHJlYW1PcHRpb25zOjpPYmplY3RJRCwgQVhT
dHJlYW1PcHRpb25zOjpSb2xlLCBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElELCBBWFN0cmVhbU9w
dGlvbnM6OklkZW50aWZpZXJBdHRyaWJ1dGUsIEFYU3RyZWFtT3B0aW9uczo6T3V0ZXJIVE1MLCBB
WFN0cmVhbU9wdGlvbnM6OkRpc3BsYXlDb250ZW50cywgQVhTdHJlYW1PcHRpb25zOjpBZGRyZXNz
IH07CisgICAgc3RyZWFtU3VidHJlZShzdHJlYW0sIHRyZWUucm9vdE5vZGUoKSwgb3B0aW9ucyk7
CiAgICAgcmV0dXJuIHN0cmVhbTsKIH0KKwordm9pZCBzdHJlYW1Jc29sYXRlZFN1YnRyZWVPbk1h
aW5UaHJlYWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBBWElzb2xhdGVkVHJlZSYgdHJlZSwg
QVhJRCBvYmplY3RJRCwgY29uc3QgT3B0aW9uU2V0PEFYU3RyZWFtT3B0aW9ucz4mIG9wdGlvbnMp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICghc2hvdWxkTG9nKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHN0cmVhbS5pbmNyZWFzZUluZGVudCgpOworICAgIFRl
eHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXBTY29wZShzdHJlYW0pOworCisgICAgaWYgKG9wdGlv
bnMgJiBBWFN0cmVhbU9wdGlvbnM6Ok9iamVjdElEKQorICAgICAgICBzdHJlYW0gPDwgIm9iamVj
dElEICIgPDwgb2JqZWN0SUQ7CisKKyAgICBhdXRvIGlkcyA9IHRyZWUubV9ub2RlTWFwLmdldChv
YmplY3RJRCk7CisgICAgaWYgKG9wdGlvbnMgJiBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElEKQor
ICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJwYXJlbnRPYmplY3QiLCBpZHMucGFyZW50SUQp
OworCisgICAgZm9yIChhdXRvJiBjaGlsZElEIDogaWRzLmNoaWxkcmVuSURzKQorICAgICAgICBz
dHJlYW1Jc29sYXRlZFN1YnRyZWVPbk1haW5UaHJlYWQoc3RyZWFtLCB0cmVlLCBjaGlsZElELCBv
cHRpb25zKTsKKworICAgIHN0cmVhbS5kZWNyZWFzZUluZGVudCgpOworfQogI2VuZGlmCiAKIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBBWE9iamVjdENhY2hlJiBh
eE9iamVjdENhY2hlKQpAQCAtNTYzLDE0ICs1NTMsNjkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiBzdHJlYW0sIEFYT2JqZWN0Q2FjaGUmIGF4T2JqZWN0Q2FjaGUpCiAgICAg
VGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cFNjb3BlKHN0cmVhbSk7CiAgICAgc3RyZWFtIDw8
ICJBWE9iamVjdENhY2hlICIgPDwgJmF4T2JqZWN0Q2FjaGU7CiAKLSAgICBpZiAoYXV0byogcm9v
dCA9IGF4T2JqZWN0Q2FjaGUuZ2V0KGF4T2JqZWN0Q2FjaGUuZG9jdW1lbnQoKS52aWV3KCkpKQot
ICAgICAgICBBWExvZ2dlcjo6YWRkKHN0cmVhbSwgcm9vdCwgdHJ1ZSk7Ci0gICAgZWxzZQorICAg
IGlmIChhdXRvKiByb290ID0gYXhPYmplY3RDYWNoZS5nZXQoYXhPYmplY3RDYWNoZS5kb2N1bWVu
dCgpLnZpZXcoKSkpIHsKKyAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxBWFN0cmVhbU9wdGlv
bnM+IG9wdGlvbnMgPSB7IEFYU3RyZWFtT3B0aW9uczo6T2JqZWN0SUQsIEFYU3RyZWFtT3B0aW9u
czo6Um9sZSwgQVhTdHJlYW1PcHRpb25zOjpQYXJlbnRJRCwgQVhTdHJlYW1PcHRpb25zOjpJZGVu
dGlmaWVyQXR0cmlidXRlLCBBWFN0cmVhbU9wdGlvbnM6Ok91dGVySFRNTCwgQVhTdHJlYW1PcHRp
b25zOjpEaXNwbGF5Q29udGVudHMsIEFYU3RyZWFtT3B0aW9uczo6QWRkcmVzcyB9OworICAgICAg
ICBzdHJlYW1TdWJ0cmVlKHN0cmVhbSwgcm9vdCwgb3B0aW9ucyk7CisgICAgfSBlbHNlCiAgICAg
ICAgIHN0cmVhbSA8PCAiTm8gcm9vdCEiOwogCiAgICAgcmV0dXJuIHN0cmVhbTsKIH0KIAotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQordm9pZCBzdHJlYW1BWENvcmVPYmplY3QoVGV4dFN0cmVhbSYg
c3RyZWFtLCBjb25zdCBBWENvcmVPYmplY3QmIG9iamVjdCwgY29uc3QgT3B0aW9uU2V0PEFYU3Ry
ZWFtT3B0aW9ucz4mIG9wdGlvbnMpCit7CisgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91
cFNjb3BlKHN0cmVhbSk7CiAKLSNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECisgICAgaWYgKG9wdGlv
bnMgJiBBWFN0cmVhbU9wdGlvbnM6Ok9iamVjdElEKQorICAgICAgICBzdHJlYW0gPDwgIm9iamVj
dElEICIgPDwgb2JqZWN0Lm9iamVjdElEKCk7CisKKyAgICBpZiAob3B0aW9ucyAmIEFYU3RyZWFt
T3B0aW9uczo6Um9sZSkKKyAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgicm9sZSIsIG9iamVj
dC5yb2xlVmFsdWUoKSk7CisKKyAgICBpZiAob3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6UGFy
ZW50SUQpIHsKKyAgICAgICAgYXV0byogcGFyZW50ID0gb2JqZWN0LnBhcmVudE9iamVjdFVuaWdu
b3JlZCgpOworICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJwYXJlbnRPYmplY3QiLCBwYXJl
bnQgPyBwYXJlbnQtPm9iamVjdElEKCkgOiBBWElEKCkpOworICAgIH0KKworICAgIGlmIChvcHRp
b25zICYgQVhTdHJlYW1PcHRpb25zOjpJZGVudGlmaWVyQXR0cmlidXRlKQorICAgICAgICBzdHJl
YW0uZHVtcFByb3BlcnR5KCJpZGVudGlmaWVyQXR0cmlidXRlIiwgb2JqZWN0LmlkZW50aWZpZXJB
dHRyaWJ1dGUoKSk7CisKKyAgICBpZiAob3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6T3V0ZXJI
VE1MKSB7CisgICAgICAgIGF1dG8gcm9sZSA9IG9iamVjdC5yb2xlVmFsdWUoKTsKKyAgICAgICAg
YXV0byogb2JqZWN0V2l0aEludGVyZXN0aW5nSFRNTCA9IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OkJ1dHRvbiA/IC8vIEFkZCBoZXJlIG90aGVyIHJvbGVzIG9mIGludGVyZXN0LgorICAgICAg
ICAgICAgJm9iamVjdCA6IG51bGxwdHI7CisKKyAgICAgICAgYXV0byogcGFyZW50ID0gb2JqZWN0
LnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6U3RhdGljVGV4dCAmJiBwYXJlbnQpCisgICAgICAgICAgICBvYmplY3RXaXRoSW50
ZXJlc3RpbmdIVE1MID0gcGFyZW50OworCisgICAgICAgIGlmIChvYmplY3RXaXRoSW50ZXJlc3Rp
bmdIVE1MKQorICAgICAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgib3V0ZXJIVE1MIiwgb2Jq
ZWN0V2l0aEludGVyZXN0aW5nSFRNTC0+b3V0ZXJIVE1MKCkpOworICAgIH0KKworICAgIGlmIChv
cHRpb25zICYgQVhTdHJlYW1PcHRpb25zOjpEaXNwbGF5Q29udGVudHMpIHsKKyAgICAgICAgaWYg
KGF1dG8qIGF4T2JqZWN0ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KCZv
YmplY3QpOyBheE9iamVjdC0+aGFzRGlzcGxheUNvbnRlbnRzKCkpCisgICAgICAgICAgICBzdHJl
YW0uZHVtcFByb3BlcnR5KCJoYXNEaXNwbGF5Q29udGVudHMiLCB0cnVlKTsKKyAgICB9CisKKyAg
ICBpZiAob3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6QWRkcmVzcykgeworICAgICAgICBzdHJl
YW0uZHVtcFByb3BlcnR5KCJhZGRyZXNzIiwgJm9iamVjdCk7CisgICAgICAgIHN0cmVhbS5kdW1w
UHJvcGVydHkoIndyYXBwZXIiLCBvYmplY3Qud3JhcHBlcigpKTsKKyAgICB9Cit9CisKK3ZvaWQg
c3RyZWFtU3VidHJlZShUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IFJlZlB0cjxBWENvcmVPYmpl
Y3Q+JiBvYmplY3QsIGNvbnN0IE9wdGlvblNldDxBWFN0cmVhbU9wdGlvbnM+JiBvcHRpb25zKQor
eworICAgIGlmICghb2JqZWN0IHx8ICFzaG91bGRMb2coKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgc3RyZWFtLmluY3JlYXNlSW5kZW50KCk7CisKKyAgICBzdHJlYW1BWENvcmVPYmplY3Qoc3Ry
ZWFtLCAqb2JqZWN0LCBvcHRpb25zKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogb2JqZWN0LT5j
aGlsZHJlbihmYWxzZSkpCisgICAgICAgIHN0cmVhbVN1YnRyZWUoc3RyZWFtLCBjaGlsZCwgb3B0
aW9ucyk7CisKKyAgICBzdHJlYW0uZGVjcmVhc2VJbmRlbnQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExv
Z2dlci5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5oCmluZGV4IGQx
ZmJhZmIxN2NiYmVjMzI0YWUyMGI5ZjE2Y2MwMmY3MGNhMDVmMDguLjkxM2QwMDkzYTUwN2IyZmZi
N2UyZTVlNTQ4Y2E3N2ZiOTdhNzk1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhMb2dnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
TG9nZ2VyLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiAhTE9HX0RJ
U0FCTEVECi0KICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJp
bGl0eU9iamVjdEludGVyZmFjZS5oIgogCkBAIC0zNyw2ICszNSwxOCBAQCBlbnVtIGNsYXNzIEFY
TG9nZ2luZ09wdGlvbnMgOiB1aW50OF90IHsKICAgICBPZmZNYWluVGhyZWFkID0gMSA8PCAxLCAv
LyBMb2dzIG1lc3NhZ2VzIG9mZiB0aGUgbWFpbiB0aHJlYWQuCiB9OwogCitlbnVtIGNsYXNzIEFY
U3RyZWFtT3B0aW9ucyA6IHVpbnQ4X3QgeworICAgIE9iamVjdElEID0gMSA8PCAwLAorICAgIFJv
bGUgPSAxIDw8IDEsCisgICAgUGFyZW50SUQgPSAxIDw8IDIsCisgICAgSWRlbnRpZmllckF0dHJp
YnV0ZSA9IDEgPDwgMywKKyAgICBPdXRlckhUTUwgPSAxIDw8IDQsCisgICAgRGlzcGxheUNvbnRl
bnRzID0gMSA8PCA1LAorICAgIEFkZHJlc3MgPSAxIDw8IDYsCit9OworCisjaWYgIUxPR19ESVNB
QkxFRAorCiBjbGFzcyBBWExvZ2dlciB7CiBwdWJsaWM6CiAgICAgQVhMb2dnZXIoKSA9IGRlZmF1
bHQ7CkBAIC02MSwxMSArNzEsMTQgQEAgcHJpdmF0ZToKICNkZWZpbmUgQVhUUkFDRShtZXRob2RO
YW1lKSBBWExvZ2dlciBheExvZ2dlcihtZXRob2ROYW1lKQogI2RlZmluZSBBWExPRyh4KSBBWExv
Z2dlcjo6bG9nKHgpCiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQogI2Vsc2UKIAogI2RlZmlu
ZSBBWFRSQUNFKG1ldGhvZE5hbWUpICh2b2lkKTAKICNkZWZpbmUgQVhMT0coeCkgKHZvaWQpMAog
CiAjZW5kaWYgLy8gIUxPR19ESVNBQkxFRAorCit2b2lkIHN0cmVhbUFYQ29yZU9iamVjdChUZXh0
U3RyZWFtJiwgY29uc3QgQVhDb3JlT2JqZWN0JiwgY29uc3QgT3B0aW9uU2V0PEFYU3RyZWFtT3B0
aW9ucz4mKTsKK3ZvaWQgc3RyZWFtU3VidHJlZShUZXh0U3RyZWFtJiwgY29uc3QgUmVmUHRyPEFY
Q29yZU9iamVjdD4mLCBjb25zdCBPcHRpb25TZXQ8QVhTdHJlYW1PcHRpb25zPiYpOworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCBmYmU3NzIyOGIxNmZm
YTBlMGE4ZTA3ZjdmMTllNjlkODViYmFjMGM1Li44NDRhNzkzODg4Y2IzMDllNjdiYjJhNzI3MmFi
NjczMjg1NWUyZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhJc29sYXRlZE9iamVjdDsKIGNsYXNzIEFYT2JqZWN0
Q2FjaGU7CiBjbGFzcyBQYWdlOworZW51bSBjbGFzcyBBWFN0cmVhbU9wdGlvbnMgOiB1aW50OF90
OwogCiB1c2luZyBBWElzb2xhdGVkVHJlZUlEID0gdW5zaWduZWQ7CiAKQEAgLTMyMyw2ICszMjQs
NyBAQCBzdHJ1Y3QgQVhQcm9wZXJ0eUNoYW5nZSB7CiBjbGFzcyBBWElzb2xhdGVkVHJlZSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBWElzb2xhdGVkVHJlZT4gewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEFYSXNvbGF0ZWRUcmVlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgZnJpZW5kIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBB
WElzb2xhdGVkVHJlZSYpOworICAgIGZyaWVuZCB2b2lkIHN0cmVhbUlzb2xhdGVkU3VidHJlZU9u
TWFpblRocmVhZChUZXh0U3RyZWFtJiwgY29uc3QgQVhJc29sYXRlZFRyZWUmLCBBWElELCBjb25z
dCBPcHRpb25TZXQ8QVhTdHJlYW1PcHRpb25zPiYpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
QVhJc29sYXRlZFRyZWU+IGNyZWF0ZShBWE9iamVjdENhY2hlKik7CiAgICAgdmlydHVhbCB+QVhJ
c29sYXRlZFRyZWUoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>