<?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>39716</bug_id>
          
          <creation_ts>2010-05-26 02:47:34 -0700</creation_ts>
          <short_desc>Teach the HTML5 parser how to handle external scripts</short_desc>
          <delta_ts>2010-05-27 00:41:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39259</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>230629</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-26 02:47:34 -0700</bug_when>
    <thetext>Teach the HTML5 parser how to handle external scripts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230630</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-26 02:48:34 -0700</bug_when>
    <thetext>I have a work in progress I&apos;ll upload.  It causes a bunch of test regressions and is not nearly ready for review yet (but it does handle simple &lt;script src=&quot;&quot;&gt; tags!).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230631</commentid>
    <comment_count>2</comment_count>
      <attachid>57084</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-26 02:50:00 -0700</bug_when>
    <thetext>Created attachment 57084
very rough work in progress which makes external scripts work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231017</commentid>
    <comment_count>3</comment_count>
      <attachid>57180</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-26 17:45:02 -0700</bug_when>
    <thetext>Created attachment 57180
slightly better work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231019</commentid>
    <comment_count>4</comment_count>
      <attachid>57180</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-26 17:45:43 -0700</bug_when>
    <thetext>Comment on attachment 57180
slightly better work in progress

Didn&apos;t mean to mark this for review, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231116</commentid>
    <comment_count>5</comment_count>
      <attachid>57196</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-26 22:56:39 -0700</bug_when>
    <thetext>Created attachment 57196
for adam to look at while I clean it up a bit yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231130</commentid>
    <comment_count>6</comment_count>
      <attachid>57199</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-26 23:38:30 -0700</bug_when>
    <thetext>Created attachment 57199
Ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231134</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-05-26 23:52:55 -0700</bug_when>
    <thetext>Attachment 57199 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/2497061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231139</commentid>
    <comment_count>8</comment_count>
      <attachid>57199</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-26 23:59:18 -0700</bug_when>
    <thetext>Comment on attachment 57199
Ready for review

Thanks for working on this patch.  I know it was painful, but this looks like a good patch to start iterating from.  Please address the verbal comments before landing.

WebCore/html/HTML5TreeBuilder.cpp:120
 +      m_isPaused = false;
I&apos;m not 100% sold on this model, but we&apos;ll see how it pans out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231147</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-27 00:14:34 -0700</bug_when>
    <thetext>Committed r60275: &lt;http://trac.webkit.org/changeset/60275&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231159</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-27 00:41:51 -0700</bug_when>
    <thetext>Attachment 57199 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2514084</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57084</attachid>
            <date>2010-05-26 02:50:00 -0700</date>
            <delta_ts>2010-05-26 17:44:58 -0700</delta_ts>
            <desc>very rough work in progress which makes external scripts work</desc>
            <filename>bug-39716-20100526024958.patch</filename>
            <type>text/plain</type>
            <size>28858</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjI5MWVhMmE2YTUzZDMxYmJhNmZkMzhhZDY2Y2E1OTQxNTQzMzlhNS4uMWViMzM4NGM1YWM0NmE5
MmQxOWRhM2YzYmVmOTkzY2I0YmRiNmUzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wNS0yNiAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVhY2ggdGhlIEhUTUw1IHBhcnNlciBob3cgdG8gaGFuZGxl
IGV4dGVybmFsIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM5NzE2CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIu
aDoKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4pOgorICAgICAgICAqIGRvbS9TY3Jp
cHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OkhUTUw1U2NyaXB0UnVubmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpmcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3JpcHRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVTY3JpcHRFcnJvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0
UnVubmVyOjpleGVjdXRlRXh0ZXJuYWxTY3JpcHRzSWZSZWFkeSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MNVNjcmlwdFJ1bm5lcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTDVTY3JpcHRSdW5uZXI6OnJlcXVlc3RTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TDVTY3JpcHRSdW5uZXI6OnJ1blNjcmlwdCk6CisgICAgICAgICogaHRtbC9IVE1MNVNjcmlwdFJ1
bm5lci5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUw1VG9rZW5pemVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpIVE1MNVRva2VuaXplcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVU
b2tlbml6ZXI6OmlzV2FpdGluZ0ZvclNjcmlwdHMpOgorICAgICAgICAqIGh0bWwvSFRNTDVUb2tl
bml6ZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6SFRNTDVUcmVlQnVpbGRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNVRyZWVCdWlsZGVyOjpoYW5kbGVTY3JpcHRTdGFydFRhZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MNVRyZWVCdWlsZGVyOjpoYW5kbGVTY3JpcHRFbmRUYWcpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6dGFrZVNjcmlwdFRvUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MNVRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcik6
CisgICAgICAgICogaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MNVRyZWVCdWlsZGVyOjpzZXRQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUcmVl
QnVpbGRlcjo6aXNQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6
KToKKwogMjAxMC0wNS0yNSAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBTdGV2ZSBGYWxrZW5idXJnLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBlNDJjYmZiM2Q0Y2Y2OTc4YjJkMWJjMmVmMzE2ZDI2N2Qy
YzJlZDIzLi5lYWZkMWY0OTQzNmM5MDJjMjVmNzdhNGU3OGFjYzRlYjIyODIxMTEyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzAxMSw2ICszMDExLDgg
QEAKIAkJQTg3MURGRTUwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODcxREZFMTBBMTUzNzZC
MDBCMTJBNjggLyogUmVuZGVyV2lkZ2V0LmNwcCAqLzsgfTsKIAkJQTg3OUM2MjUxMUE5RDFGNzAw
NTkyMzdBIC8qIEhUTUw1VHJlZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3OUM2MjMxMUE5RDFGNzAwNTkyMzdBIC8qIEhUTUw1VHJl
ZUJ1aWxkZXIuY3BwICovOyB9OwogCQlBODc5QzYyNjExQTlEMUY3MDA1OTIzN0EgLyogSFRNTDVU
cmVlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTg3OUM2MjQxMUE5RDFGNzAwNTkyMzdBIC8qIEhUTUw1VHJlZUJ1aWxkZXIuaCAqLzsgfTsK
KwkJQTg3OUM4QkQxMUFDRkRENDAwNTkyMzdBIC8qIEhUTUw1U2NyaXB0UnVubmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODc5QzhCQjExQUNGREQ0
MDA1OTIzN0EgLyogSFRNTDVTY3JpcHRSdW5uZXIuaCAqLzsgfTsKKwkJQTg3OUM4QkUxMUFDRkRE
NDAwNTkyMzdBIC8qIEhUTUw1U2NyaXB0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NzlDOEJDMTFBQ0ZERDQwMDU5MjM3QSAvKiBIVE1M
NVNjcmlwdFJ1bm5lci5jcHAgKi87IH07CiAJCUE4ODNERjI3MEYzRDA0NUQwMEYxOUJGNiAvKiBW
aXNpYmxlU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4ODNERjI1MEYzRDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9uLmNw
cCAqLzsgfTsKIAkJQTg4M0RGMjgwRjNEMDQ1RDAwRjE5QkY2IC8qIFZpc2libGVTZWxlY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4ODNERjI2
MEYzRDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTg4QUQ1MkYwOTUyNEI5MjAwMUREMTk2
IC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTg1RDdBMkYwODc5RUJBOTAwNkE5MTcyIC8qIFF1YXJ0ekNvcmUu
ZnJhbWV3b3JrICovOyB9OwpAQCAtODQ0NSw2ICs4NDQ3LDggQEAKIAkJQTg3MURGRTEwQTE1Mzc2
QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVuZGVyV2lkZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTg3OUM2MjMxMUE5RDFGNzAwNTkyMzdBIC8qIEhUTUw1VHJlZUJ1aWxkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTDVUcmVlQnVpbGRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NzlDNjI0MTFBOUQxRjcwMDU5MjM3QSAvKiBI
VE1MNVRyZWVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUw1
VHJlZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTg3OUM4QkIxMUFD
RkRENDAwNTkyMzdBIC8qIEhUTUw1U2NyaXB0UnVubmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhUTUw1U2NyaXB0UnVubmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE4NzlDOEJDMTFBQ0ZERDQwMDU5MjM3QSAvKiBIVE1MNVNjcmlwdFJ1bm5lci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MNVNjcmlwdFJ1bm5lci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4ODNERjI1MEYzRDA0NUQwMEYxOUJG
NiAvKiBWaXNpYmxlU2VsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFZpc2libGVTZWxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBODgzREYyNjBGM0QwNDVEMDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpYmxlU2VsZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE4OERENDg2MEI0NjI5QTMwMEMwMjk5MCAvKiBQYXRoVHJhdmVy
c2FsU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF0aFRyYXZlcnNh
bFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzM0NiwxMSArMTMzNTAs
MTMgQEAKIAkJCQlBODEzNkQzNjA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0LmggKi8s
CiAJCQkJOTdFOEIzNTQxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuY3BwICovLAogCQkJ
CTk3RThCMzU1MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmggKi8sCi0JCQkJQTg3OUM2
MjMxMUE5RDFGNzAwNTkyMzdBIC8qIEhUTUw1VHJlZUJ1aWxkZXIuY3BwICovLAotCQkJCUE4NzlD
NjI0MTFBOUQxRjcwMDU5MjM3QSAvKiBIVE1MNVRyZWVCdWlsZGVyLmggKi8sCisJCQkJQTg3OUM4
QkMxMUFDRkRENDAwNTkyMzdBIC8qIEhUTUw1U2NyaXB0UnVubmVyLmNwcCAqLywKKwkJCQlBODc5
QzhCQjExQUNGREQ0MDA1OTIzN0EgLyogSFRNTDVTY3JpcHRSdW5uZXIuaCAqLywKIAkJCQk5N0U4
QjNDMjExQTI4OTA4MDAxNjk0MDkgLyogSFRNTDVUb2tlbi5oICovLAogCQkJCUE4NzEwMzg4MTFB
Mjk0NzAwMERCRDUwRSAvKiBIVE1MNVRva2VuaXplci5jcHAgKi8sCiAJCQkJQTg3MTAzODkxMUEy
OTQ3MDAwREJENTBFIC8qIEhUTUw1VG9rZW5pemVyLmggKi8sCisJCQkJQTg3OUM2MjMxMUE5RDFG
NzAwNTkyMzdBIC8qIEhUTUw1VHJlZUJ1aWxkZXIuY3BwICovLAorCQkJCUE4NzlDNjI0MTFBOUQx
RjcwMDU5MjM3QSAvKiBIVE1MNVRyZWVCdWlsZGVyLmggKi8sCiAJCQkJQkM5N0UyMzkxMDkxNDQ5
NTAwMTBEMzYxIC8qIEhUTUxBbGxDb2xsZWN0aW9uLmNwcCAqLywKIAkJCQlCQzk3RTIzODEwOTE0
NDk1MDAxMEQzNjEgLyogSFRNTEFsbENvbGxlY3Rpb24uaCAqLywKIAkJCQlCQzk3RTIzQzEwOTE0
NkYxMDAxMEQzNjEgLyogSFRNTEFsbENvbGxlY3Rpb24uaWRsICovLApAQCAtMTkzMzEsNiArMTkz
MzcsNyBAQAogCQkJCUM1NDQyNzRCMTFBNTdFN0EwMDYzQTc0OSAvKiBET01TdHJpbmdMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDNTEzN0NGMzExQTU4Mzc4MDA0QURCOTkgLyogSlNET01TdHJp
bmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkMxMjE3RDExQUI5RTc3MDAzQzQ2MkMgLyog
U3VzcGVuZGFibGVUaW1lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTg3OUM4QkQxMUFDRkRENDAw
NTkyMzdBIC8qIEhUTUw1U2NyaXB0UnVubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIxNjIxLDYg
KzIxNjI4LDcgQEAKIAkJCQlDNTEzN0NGMjExQTU4Mzc4MDA0QURCOTkgLyogSlNET01TdHJpbmdM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1NTYxMEYxMTFBNzA0RUIwMEI4MkQyNyAvKiBE
T01TdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTYyQzEyMTdDMTFBQjlFNzcwMDND
NDYyQyAvKiBTdXNwZW5kYWJsZVRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4NzlDOEJF
MTFBQ0ZERDQwMDU5MjM3QSAvKiBIVE1MNVNjcmlwdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlk
ZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaApp
bmRleCA4ZTY5YjZiYWRmYWY5MTBkNDU2NDI1YWMwMDFlYTBlMGUyZjU2NTY4Li44MDlhNDg4MDZh
NTVjZjE1ZTM2OWYwNDczMjc1NGI0NzdkNWQ3YmIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhh
bmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIiAvLyBmb3Igc3RyaW5nVG9VU3RyaW5nCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlUHJvdmlk
ZXIuaCIKICNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5oPgogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3Bw
CmluZGV4IGI0NTdmNWQzOTY5NGVjYmFhZWM0OWE5YmFmZGNiNjk0MDJlOTBmOGUuLjBhYzA4NDZh
MTI0MjEwN2FmMDVlNGM4OTU4NDg4YTlhNDQ0YWIzOTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBA
IC05NywxNSArOTcsNiBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJl
bihTY3JpcHRFbGVtZW50RGF0YSYgZGF0YSwgY29uc3QgU3RyaW5nJgogICAgIC8vIGFsbG93IGR5
bmFtaWMgbG9hZGluZyBsYXRlci4KICAgICBpZiAoc291cmNlVXJsLmlzRW1wdHkoKSAmJiBkYXRh
LnNjcmlwdENvbnRlbnQoKS5pc0VtcHR5KCkpCiAgICAgICAgIGRhdGEuc2V0Q3JlYXRlZEJ5UGFy
c2VyKGZhbHNlKTsKLSAgICAvLyBIVE1MNSBSZXF1aXJlcyB0aGF0IHdlIGV4ZWN1dGUgc2NyaXB0
cyBmcm9tIHRoZSBwYXJzZXIsIG5vdCBmcm9tCi0gICAgLy8gSFRNTFRva2VuaXplciBsaWtlIHdl
IGN1cnJlbnRseSBkby4KLSAgICAvLyBGSVhNRTogSXQgbWF5IG5vdCBiZSBzYWZlIHRvIGV4ZWN1
dGUgc2NyaXB0cyBmcm9tIGhlcmUgaWYKLSAgICAvLyBIVE1MUGFyc2VyOjpwb3BPbmVCbG9ja0Nv
bW1vbiBpcyBub3QgcmVlbnRyYW50LgotICAgIGVsc2UgaWYgKHVzZUhUTUw1UGFyc2VyKGRhdGEu
ZWxlbWVudCgpLT5kb2N1bWVudCgpKSkgewotICAgICAgICAvLyBUaGlzIGlzIGN1cnJlbnRseSBh
biBpbmNvbXBsZXRlIGltcGxlbWVudGF0aW9uLCBzZWU6Ci0gICAgICAgIC8vIGh0dHA6Ly93d3cu
d2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3Rva2VuaXph
dGlvbi5odG1sI3BhcnNpbmctbWFpbi1pbmNkYXRhCi0gICAgICAgIGRhdGEuZXZhbHVhdGVTY3Jp
cHQoU2NyaXB0U291cmNlQ29kZShkYXRhLnNjcmlwdENvbnRlbnQoKSwgZGF0YS5lbGVtZW50KCkt
PmRvY3VtZW50KCktPnVybCgpKSk7IC8vIEZJWE1FOiBQcm92aWRlIGEgcmVhbCBzdGFydGluZyBs
aW5lIG51bWJlciBoZXJlCi0gICAgfQogfQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmhhbmRsZVNv
dXJjZUF0dHJpYnV0ZShTY3JpcHRFbGVtZW50RGF0YSYgZGF0YSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVcmwpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmggYi9XZWJDb3Jl
L2RvbS9TY3JpcHRFbGVtZW50LmgKaW5kZXggZmFkNmZlNzI1NjZhMjUyMWI2YzM1N2M2MjZiNGZj
Y2UzOTQzNGI2OS4uOGNjODRmY2Q0OWVlYmU4YTJhNjY2NWU1MjU5ZGVhOGUwODIwNDZjMyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL1Nj
cmlwdEVsZW1lbnQuaApAQCAtOTQsOSArOTQsOSBAQCBwcml2YXRlOgogICAgIFNjcmlwdEVsZW1l
bnQqIG1fc2NyaXB0RWxlbWVudDsKICAgICBFbGVtZW50KiBtX2VsZW1lbnQ7CiAgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBtX2NhY2hlZFNjcmlwdDsKLSAgICBib29sIG1f
Y3JlYXRlZEJ5UGFyc2VyOworICAgIGJvb2wgbV9jcmVhdGVkQnlQYXJzZXI7IC8vIEhUTUw1OiAi
cGFyc2VyLWluc2VydGVkIgogICAgIGJvb2wgbV9yZXF1ZXN0ZWQ7Ci0gICAgYm9vbCBtX2V2YWx1
YXRlZDsKKyAgICBib29sIG1fZXZhbHVhdGVkOyAvLyBIVE1MNTogImFscmVhZHkgc3RhcnRlZCIK
ICAgICBib29sIG1fZmlyZWRMb2FkOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUw1U2NyaXB0UnVubmVyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTZhMjJhNmIzYmQwNDA2ZTI1YjNmMGY0YjI2NjIzODk3NGYwYWFmYQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAKQEAgLTAs
MCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTDVTY3JpcHRSdW5uZXIuaCIK
KworI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgorI2lu
Y2x1ZGUgIkRvY0xvYWRlci5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFdmVu
dC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU2NyaXB0U291cmNlQ29kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CisKK0hUTUw1U2NyaXB0UnVubmVyOjpIVE1MNVNjcmlwdFJ1bm5l
cihEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQoreworfQor
CitGcmFtZSogSFRNTDVTY3JpcHRSdW5uZXI6OmZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9kb2N1bWVudC0+ZnJhbWUoKTsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgbWF0Y2gg
MTAuMi41LjExICJBbiBlbmQgdGFnIHdob3NlIHRhZyBuYW1lIGlzICdzY3JpcHQnIgorLy8gU2Ny
aXB0IGhhbmRsaW5nIGxpdmVzIG91dHNpZGUgdGhlIHRyZWUgYnVpbGRlciB0byBrZWVwIHRoZSBl
YWNoIGNsYXNzIHNpbXBsZS4KK2Jvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5n
U2NyaXB0cyhQYXNzUmVmUHRyPEVsZW1lbnQ+IHNjcmlwdEVsZW1lbnQpCit7CisgICAgLy8gRklY
TUU6IElmIHNjcmlwdGluZyBpcyBkaXNhYmxlZCwgYWx3YXlzIGp1c3QgcmV0dXJuIHRydWU7Cisg
ICAgCisgICAgLy8gRmlyc3QgdHJ5IHRvIGV4ZWN1dGUgdGhlIHNjcmlwdCBnaXZlbiB0byB1cy4K
KyAgICBpZiAoc2NyaXB0RWxlbWVudCkgeworICAgICAgICBtX3NjcmlwdE5lc3RpbmdMZXZlbCsr
OworICAgICAgICBydW5TY3JpcHQoc2NyaXB0RWxlbWVudC5nZXQoKSk7CisgICAgICAgIG1fc2Ny
aXB0TmVzdGluZ0xldmVsLS07CisgICAgICAgIGlmIChtX3NjcmlwdE5lc3RpbmdMZXZlbCAhPSAw
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBEb24ndCBjb250aW51ZSBwYXJzaW5nLgor
CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIFJlc3RvcmUgaW5zZXJ0aW9uIHBvaW50Pwor
ICAgICAgICAvLyBGSVhNRTogSGFuZGxlIHJlLWVudHJhbnQgc2NyaXB0cyBhbmQgbV9wZW5kaW5n
UGFyc2luZ0Jsb2NraW5TY3JpcHQuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IC8vIElmIHdlIHdlcmUgbm90IGNhbGxlZCB3aXRoIGEgc2NyaXB0LCB0aGVuIGNoZWNrIHRvIHNl
ZSBpZiB3ZSBoYXZlIGFueQorICAgIC8vIHBlbmRpbmcgc2NyaXB0cyB0byBydW4gKGFzIHRoaXMg
aXMgdGhlIGVuZCBvZiB0aGUgdG9rZW4gc3RyZWFtKS4KKyAgICAvLyBGSVhNRTogUnVuIGRlZmVy
cmVkIHNjcmlwdHMuCisgICAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gZmFsc2UgYW5kIHN0b3AgcGFy
c2luZy4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2lubGluZSBQYXNzUmVmUHRyPEV2ZW50PiBj
cmVhdGVTY3JpcHRMb2FkRXZlbnQoKQoreworICAgIHJldHVybiBFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSk7Cit9CisKK2lubGluZSBQYXNzUmVmUHRy
PEV2ZW50PiBjcmVhdGVTY3JpcHRFcnJvckV2ZW50KCkKK3sKKyAgICByZXR1cm4gRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgdHJ1ZSwgZmFsc2UpOworfQorCit2b2lkIEhU
TUw1U2NyaXB0UnVubmVyOjpleGVjdXRlRXh0ZXJuYWxTY3JpcHRzSWZSZWFkeSgpCit7CisgICAg
QVNTRVJUKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdC0+aXNMb2FkZWQoKSk7
CisKKyAgICAvLyByZW1vdmVDbGllbnQgZmlyc3QgdG8gcHJldmVudCByZWN1cnNpb24gaWYgdGhl
IHNjcmlwdCByZWxvYWRzIGl0c2VsZi4KKyAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUo
bV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0LmdldCgpKTsKKyAgICBib29sIGVy
cm9yT2NjdXJyZWQgPSBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQtPmVycm9y
T2NjdXJyZWQoKTsKKyAgICBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQtPnJl
bW92ZUNsaWVudCh0aGlzKTsKKworICAgIGlmIChlcnJvck9jY3VycmVkKQorICAgICAgICBtX3Bh
cnNpbmdCbG9ja2luZ1NjcmlwdC5lbGVtZW50LT5kaXNwYXRjaEV2ZW50KGNyZWF0ZVNjcmlwdEVy
cm9yRXZlbnQoKSk7CisgICAgZWxzZSB7CisgICAgICAgIGlmICh0b1NjcmlwdEVsZW1lbnQobV9w
YXJzaW5nQmxvY2tpbmdTY3JpcHQuZWxlbWVudC5nZXQoKSktPnNob3VsZEV4ZWN1dGVBc0phdmFT
Y3JpcHQoKSkKKyAgICAgICAgICAgIGZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHNv
dXJjZUNvZGUpOworICAgICAgICBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5lbGVtZW50LT5kaXNw
YXRjaEV2ZW50KGNyZWF0ZVNjcmlwdExvYWRFdmVudCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgSFRN
TDVTY3JpcHRSdW5uZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikKK3sKKyAgICBl
eGVjdXRlRXh0ZXJuYWxTY3JpcHRzSWZSZWFkeSgpOworfQorCit2b2lkIEhUTUw1U2NyaXB0UnVu
bmVyOjpyZXF1ZXN0U2NyaXB0KEVsZW1lbnQqIHNjcmlwdCkKK3sKKyAgICBBdG9taWNTdHJpbmcg
c3JjVmFsdWUgPSBzY3JpcHQtPmdldEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICAvLyBGSVhNRTog
V2UgbmVlZCB0byByZXNvbHZlIHRoZSB1cmwgcmVsYXRpdmUgdG8gdGhlIGVsZW1lbnQuCisgICAg
bV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuaXNSZWFkeSA9IGZhbHNlOworICAgIG1fcGFyc2luZ0Js
b2NraW5nU2NyaXB0LmVsZW1lbnQgPSBzY3JpcHQ7CisgICAgaWYgKCFzY3JpcHQtPmRpc3BhdGNo
QmVmb3JlTG9hZEV2ZW50KHNyY1ZhbHVlKSkgLy8gUGFydCBvZiBIVE1MNT8KKyAgICAgICAgcmV0
dXJuOworICAgIC8vIFRoaXMgc2hvdWxkIGNvcnJlY3RseSByZXR1cm4gMCBmb3IgZW1wdHkgb3Ig
aW52YWxpZCBzcmNWYWx1ZXMuCisgICAgQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQgPSBtX2Rv
Y3VtZW50LT5kb2NMb2FkZXIoKS0+cmVxdWVzdFNjcmlwdChzcmNWYWx1ZSwgdG9TY3JpcHRFbGVt
ZW50KHNjcmlwdCktPnNjcmlwdENoYXJzZXQoKSk7CisgICAgaWYgKCFjYWNoZWRTY3JpcHQpIHsK
KyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gRGlzcGF0Y2ggZXJyb3IgZXZlbnQuCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2Ny
aXB0ID0gY2FjaGVkU2NyaXB0OworICAgIC8vIE5PVEU6IFRoaXMgbWF5IGNhdXNlIGltbWVkaWF0
ZSBleGVjdXRpb24gb2YgdGhlIHNjcmlwdC4KKyAgICBjYWNoZWRTY3JpcHQtPmFkZENsaWVudCh0
aGlzKTsKK30KKwordm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6cnVuU2NyaXB0KEVsZW1lbnQqIHNj
cmlwdCkKK3sKKyAgICAvLyBDaGVjayBzY3JpcHQgdHlwZSBhbmQgbGFuZ3VhZ2UsIGN1cnJlbnQg
Y29kZSB1c2VzIFNjcmlwdEVsZW1lbnQ6OnNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSwgYnV0
IHRoYXQgbWF5IG5vdCBiZSBIVE1MNSBjb21wbGlhbnQuCisgICAgbm90SW1wbGVtZW50ZWQoKTsg
Ly8gZXZlbnQgZm9yIHN1cHBvcnQKKworICAgIGlmIChzY3JpcHQtPmhhc0F0dHJpYnV0ZShzcmNB
dHRyKSkgeworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIGRlZmVyIGFuZCBhc3luYworICAgICAg
ICByZXF1ZXN0U2NyaXB0KHNjcmlwdCk7CisgICAgfSBlbHNlIGlmICghbV9kb2N1bWVudC0+aGF2
ZVN0eWxlc2hlZXRzTG9hZGVkKCkpIHsKKyAgICAgICAgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQu
ZWxlbWVudCA9IHNjcmlwdDsKKyAgICAgICAgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuaXNSZWFk
eSA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgS1VSTCBkb2N1bWVudFVSTCA9IGZyYW1l
KCkgPyBmcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKSA6IEtVUkwoKTsKKyAgICAgICAgLy8gRklY
TUU6IE5lZWQgYSBsaW5lIG51bWJlcnMgaW1wbGVtZW5hdGlvbi4KKyAgICAgICAgU2NyaXB0U291
cmNlQ29kZSBzb3VyY2VDb2RlID0gU2NyaXB0U291cmNlQ29kZShzY3JpcHQtPnRleHRDb250ZW50
KCksIGRvY3VtZW50VVJMLCAwKTsKKyAgICAgICAgZnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVT
Y3JpcHQoc291cmNlQ29kZSk7CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTDVTY3JpcHRSdW5uZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYwMmU5YmI4MzQyYWNlMDJkMzJhMGU4ODMxMmFiODExODEwZjIyNGIKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuaApAQCAtMCww
ICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBIVE1MNVNjcmlwdFJ1bm5lcl9oCisjZGVmaW5lIEhUTUw1U2NyaXB0UnVubmVy
X2gKKworI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhY2hl
ZFJlc291cmNlOworY2xhc3MgQ2FjaGVkU2NyaXB0OworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBF
bGVtZW50OworY2xhc3MgRnJhbWU7CisKK2NsYXNzIEhUTUw1U2NyaXB0UnVubmVyIDogcHVibGlj
IE5vbmNvcHlhYmxlLCBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CitwdWJsaWM6CisgICAgSFRNTDVT
Y3JpcHRSdW5uZXIoRG9jdW1lbnQqKTsKKworICAgIC8vIFByb2Nlc3NlcyB0aGUgcGFzc2VkIGlu
IHNjcmlwdCBhbmQgYW55IHBlbmRpbmcgc2NyaXB0cyBpZiBwb3NzaWJsZS4KKyAgICBib29sIGV4
ZWN1dGVQZW5kaW5nU2NyaXB0cyhQYXNzUmVmUHRyPEVsZW1lbnQ+IHNjcmlwdFRvUHJvY2Vzcyk7
CisKK3ByaXZhdGU6CisgICAgLy8gQ2FjaGVkUmVzb3VyY2VDbGllbnQKKyAgICB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CisKKyAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsK
KworICAgIHZvaWQgZXhlY3V0ZUV4dGVybmFsU2NyaXB0c0lmUmVhZHkoKTsKKworICAgIHZvaWQg
cmVxdWVzdFNjcmlwdChFbGVtZW50Kik7CisgICAgdm9pZCBydW5TY3JpcHQoRWxlbWVudCopOwor
CisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisKKyAgICBzdHJ1Y3QgUGVuZGluZ1NjcmlwdCB7
CisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50OworICAgICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IGNhY2hlZFNjcmlwdDsKKyAgICAgICAgYm9vbCBpc1JlYWR5
OyAvLyBjYWNoZWRTY3JpcHQtPmlzTG9hZGVkKCkgaXMgbm90IHN1ZmZpY2llbnQsIGFzIG5vbi1l
eHRlcm5hbCBzY3JpcHRzIG1heSBlbmQgdXAgYmxvY2tpbmcgdGhlIHBhcnNlci4KKyAgICB9Owor
ICAgIFBlbmRpbmdTY3JpcHQgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQ7CisgICAgc2l6ZV90IG1f
c2NyaXB0TmVzdGluZ0xldmVsOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MNVRva2VuaXplci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIu
Y3BwCmluZGV4IDBiM2JhMDQyZWE3N2VmMjY5OTZmMmI1MjMyMGMzNTA1OTY3MGU5YjQuLjgwNTQ2
YWU2YzRiYmMxMWYzYThmNjRiYmQ3Mzc2ZGJlNzhkNmJmYmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MNVRva2VuaXplci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVy
LmNwcApAQCAtMjYsOSArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJI
VE1MNVRva2VuaXplci5oIgogCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUw1
TGV4ZXIuaCIKKyNpbmNsdWRlICJIVE1MNVNjcmlwdFJ1bm5lci5oIgogI2luY2x1ZGUgIkhUTUw1
VG9rZW4uaCIKICNpbmNsdWRlICJIVE1MNVRyZWVCdWlsZGVyLmgiCisjaW5jbHVkZSAiSFRNTERv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAKQEAgLTM3LDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSFRNTDVUb2tlbml6ZXI6
OkhUTUw1VG9rZW5pemVyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgcmVwb3J0RXJyb3Jz
KQogICAgIDogVG9rZW5pemVyKCkKICAgICAsIG1fbGV4ZXIobmV3IEhUTUw1TGV4ZXIpCisgICAg
LCBtX3NjcmlwdFJ1bm5lcihuZXcgSFRNTDVTY3JpcHRSdW5uZXIoZG9jdW1lbnQpKQogICAgICwg
bV90cmVlQnVpbGRlcihuZXcgSFRNTDVUcmVlQnVpbGRlcihtX2xleGVyLmdldCgpLCBkb2N1bWVu
dCwgcmVwb3J0RXJyb3JzKSkKIHsKICAgICBiZWdpbigpOwpAQCAtNTIsMTIgKzU2LDI2IEBAIHZv
aWQgSFRNTDVUb2tlbml6ZXI6OmJlZ2luKCkKIAogdm9pZCBIVE1MNVRva2VuaXplcjo6d3JpdGUo
Y29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGJvb2wpCiB7CisgICAgLy8gRklYTUU6IFRo
aXMgZG9lcyBub3QgeWV0IGNvcnJlY3RseSBoYW5kbGUgcmVlbnRyYW50IHdyaXRlcy4KICAgICBt
X3NvdXJjZS5hcHBlbmQoc291cmNlKTsKIAotICAgIEhUTUw1VG9rZW4gdG9rZW47Ci0gICAgd2hp
bGUgKG1fbGV4ZXItPm5leHRUb2tlbihtX3NvdXJjZSwgdG9rZW4pKSB7Ci0gICAgICAgIG1fdHJl
ZUJ1aWxkZXItPmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4odG9rZW4pOwotICAgICAgICB0b2tlbi5j
bGVhcigpOworICAgIHdoaWxlICghbV9zb3VyY2UuaXNFbXB0eSgpKSB7CisgICAgICAgIEhUTUw1
VG9rZW4gdG9rZW47CisgICAgICAgIHdoaWxlICghbV90cmVlQnVpbGRlci0+aXNQYXVzZWQoKSAm
JiBtX2xleGVyLT5uZXh0VG9rZW4obV9zb3VyY2UsIHRva2VuKSkgeworICAgICAgICAgICAgbV90
cmVlQnVpbGRlci0+Y29uc3RydWN0VHJlZUZyb21Ub2tlbih0b2tlbik7CisgICAgICAgICAgICB0
b2tlbi5jbGVhcigpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhlIHBhcnNlciB3aWxsIHBh
dXNlIGl0c2VsZiB3aGVuIHdhaXRpbmcgb24gYSBzY3JpcHQgdG8gbG9hZCBvciBydW4uCisgICAg
ICAgIC8vIFNjcmlwdFJ1bm5lciBleGVjdXRlcyBzY3JpcHRzIGF0IHRoZSByaWdodCB0aW1lcyBh
bmQgaGFuZGxlcyByZWVudHJhbmN5LgorICAgICAgICBib29sIHNob3VsZENvbnRpbnVlUGFyc2lu
ZyA9IG1fc2NyaXB0UnVubmVyLT5leGVjdXRlUGVuZGluZ1NjcmlwdHMobV90cmVlQnVpbGRlci0+
dGFrZVNjcmlwdFRvUHJvY2VzcygpKTsKKyAgICAgICAgaWYgKCFzaG91bGRDb250aW51ZVBhcnNp
bmcpIHsKKyAgICAgICAgICAgIC8vIEFTU0VSVChtX3NvdXJjZS5pc0VtcHR5KCkgfHwgbV90cmVl
QnVpbGRlci0+aXNQYXVzZWQoKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogdGhlIHNjcmlwdCBy
dW5uZXIgc2hvdWxkIGVpdGhlciBtYWtlIHRoaXMgY2FsbCBvciByZXR1cm4gYSBzcGVjaWFsCisg
ICAgICAgICAgICAvLyB2YWx1ZSB0byBpbmRpY2F0ZSB3ZSBzaG91bGQgcGF1c2UuCisgICAgICAg
ICAgICBtX3RyZWVCdWlsZGVyLT5zZXRQYXVzZWQodHJ1ZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTczLDggKzkxLDggQEAgdm9pZCBIVE1MNVRva2Vu
aXplcjo6ZmluaXNoKCkKIAogYm9vbCBIVE1MNVRva2VuaXplcjo6aXNXYWl0aW5nRm9yU2NyaXB0
cygpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgLy8gRklYTUU6IElzIHRoaXMgcmlnaHQ/CisgICAgcmV0dXJuIG1fdHJlZUJ1aWxkZXItPmlz
UGF1c2VkKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXpl
ci5oIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmgKaW5kZXggN2Q1MDNhYWI1YWNkYzk3
NWRjMjBhMzUyMjkyZGI1N2M5NDU0Y2FiZS4uZTBmMGRmZDhiZDdlZGZhNmQyMzJkMjk0YmU3Mzc0
MTIxNDIzYzk0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmgKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmgKQEAgLTMzLDE4ICszMywxNSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxEb2N1bWVudDsKLWNsYXNzIEhUTUw1VHJl
ZUJ1aWxkZXI7CiBjbGFzcyBIVE1MNUxleGVyOworY2xhc3MgSFRNTDVTY3JpcHRSdW5uZXI7Citj
bGFzcyBIVE1MNVRyZWVCdWlsZGVyOworY2xhc3MgSFRNTERvY3VtZW50OwogCi0vLyBGSVhNRTog
VGhpcyBpcyB0aGUgd3JvbmcgbGF5ZXIgdG8gaG9vayBpbiB0aGUgbmV3IEhUTUwgNSBMZXhlciwK
LS8vIGhvd2V2ZXIgSFRNTFRva2VuaXplciBpcyB0b28gbGFyZ2UgYW5kIHRvbyBmcmFnaWxlIG9m
IGEgY2xhc3MgdG8gaGFjayBpbnRvLgotLy8gRXZlbnR1YWxseSB3ZSBzaG91bGQgc3BsaXQgYWxs
IG9mIHRoZSBIVE1MIGxleGVyIGxvZ2ljIG91dCBmcm9tIEhUTUxUb2tlbml6ZXIKLS8vIGFuZCB0
aGVuIHNoYXJlIG5vbi1sZXhlci1zcGVjaWZpYyB0b2tlbml6ZXIgbG9naWMgYmV0d2VlbiBIVE1M
NSBhbmQgdGhlCi0vLyBsZWdhY3kgV2ViS2l0IEhUTUwgbGV4ZXIuCi0KLS8vIEZJWE1FOiBUaGlz
IGNsYXNzIGlzIGZhciBmcm9tIGNvbXBsZXRlLgotY2xhc3MgSFRNTDVUb2tlbml6ZXIgOiAgcHVi
bGljIFRva2VuaXplciwgcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKKy8vIEZJWE1FOiBU
aGUgd2hvbGUgVG9rZW5pemVyIGNsYXNzIHN5c3RlbSBzaG91bGQgYmUgcmVuYW1lZCAiUGFyc2Vy
IgorLy8gb3IgIlBhcnNlckNvbnRyb2xsZXIiIGFzIHRoZSBqb2Igb2YgdGhpcyBjbGFzcyBpcyB0
byBkcml2ZSBwYXJzaW5nIHByb2Nlc3MKKy8vIGJ1dCBpdCBkb2VzIG5vdCBpdHNlbGYgVG9rZW5p
emUuCitjbGFzcyBIVE1MNVRva2VuaXplciA6ICBwdWJsaWMgVG9rZW5pemVyIHsKIHB1YmxpYzoK
ICAgICBIVE1MNVRva2VuaXplcihIVE1MRG9jdW1lbnQqLCBib29sIHJlcG9ydEVycm9ycyk7CiAg
ICAgdmlydHVhbCB+SFRNTDVUb2tlbml6ZXIoKTsKQEAgLTU5LDYgKzU2LDcgQEAgcHJpdmF0ZToK
ICAgICBTZWdtZW50ZWRTdHJpbmcgbV9zb3VyY2U7CiAKICAgICBPd25QdHI8SFRNTDVMZXhlcj4g
bV9sZXhlcjsKKyAgICBPd25QdHI8SFRNTDVTY3JpcHRSdW5uZXI+IG1fc2NyaXB0UnVubmVyOwog
ICAgIE93blB0cjxIVE1MNVRyZWVCdWlsZGVyPiBtX3RyZWVCdWlsZGVyOwogfTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUw1VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDJiMWIxNzg3NWFlYzBhODNlZjhmY2IwMTQ2YTFmNzhh
ZDU2NDJmMjQuLjc1NTkwNzkwODQ4MGE4ZGM2NDJjNGQwMWIxNDc4MjVkZjRhMGE5NzIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJIVE1MNVRyZWVCdWlsZGVyLmgiCiAKLSNpbmNsdWRlICJBdHRyaWJ1
dGUuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTDVMZXhlci5oIgogI2lu
Y2x1ZGUgIkhUTUw1VG9rZW4uaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKQEAgLTQzLDcg
KzQzLDExIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBIVE1MNVRyZWVCdWlsZGVyOjpI
VE1MNVRyZWVCdWlsZGVyKEhUTUw1TGV4ZXIqIGxleGVyLCBIVE1MRG9jdW1lbnQqIGRvY3VtZW50
LCBib29sIHJlcG9ydEVycm9ycykKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBt
X3JlcG9ydEVycm9ycyhyZXBvcnRFcnJvcnMpCisgICAgLCBtX2lzUGF1c2VkKGZhbHNlKQogICAg
ICwgbV9sZXhlcihsZXhlcikKKyAgICAsIG1faW5zZXJ0aW9uTW9kZShJbml0aWFsKQorICAgICwg
bV9vcmlnaW5hbEluc2VydGlvbk1vZGUoSW5pdGlhbCkKKyAgICAsIG1fc2Vjb25kYXJ5SW5zZXJ0
aW9uTW9kZShJbml0aWFsKQogICAgICwgbV9sZWdhY3lIVE1MUGFyc2VyKG5ldyBIVE1MUGFyc2Vy
KGRvY3VtZW50LCByZXBvcnRFcnJvcnMpKQogewogfQpAQCAtOTMsMjMgKzk3LDM0IEBAIHN0YXRp
YyB2b2lkIGNvbnZlcnRUb09sZFN0eWxlKEhUTUw1VG9rZW4mIHRva2VuLCBUb2tlbiYgb2xkU3R5
bGVUb2tlbikKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZT4gSFRNTDVUcmVlQnVpbGRlcjo6
cGFzc1Rva2VuVG9MZWdhY3lQYXJzZXIoSFRNTDVUb2tlbiYgdG9rZW4pCit2b2lkIEhUTUw1VHJl
ZUJ1aWxkZXI6OmhhbmRsZVNjcmlwdFN0YXJ0VGFnKCkKIHsKLSAgICBpZiAodG9rZW4udHlwZSgp
ID09IEhUTUw1VG9rZW46OlN0YXJ0VGFnKSB7Ci0gICAgICAgIC8vIFRoaXMgd29yayBpcyBzdXBw
b3NlZCB0byBiZSBkb25lIGJ5IHRoZSBwYXJzZXIsIGJ1dAotICAgICAgICAvLyB3aGVuIHVzaW5n
IHRoZSBvbGQgcGFyc2VyIGZvciB3ZSBoYXZlIHRvIGRvIHRoaXMgbWFudWFsbHkuCi0gICAgICAg
IGlmICh0b2tlbi5uYW1lKCkgPT0gc2NyaXB0VGFnKQotICAgICAgICAgICAgbV9sZXhlci0+c2V0
U3RhdGUoSFRNTDVMZXhlcjo6U2NyaXB0RGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAodG9r
ZW4ubmFtZSgpID09IHRleHRhcmVhVGFnIHx8IHRva2VuLm5hbWUoKSA9PSB0aXRsZVRhZykKLSAg
ICAgICAgICAgIG1fbGV4ZXItPnNldFN0YXRlKEhUTUw1TGV4ZXI6OlJDREFUQVN0YXRlKTsKLSAg
ICAgICAgZWxzZSBpZiAodG9rZW4ubmFtZSgpID09IHN0eWxlVGFnIHx8IHRva2VuLm5hbWUoKSA9
PSBpZnJhbWVUYWcKLSAgICAgICAgICAgICAgICAgfHwgdG9rZW4ubmFtZSgpID09IHhtcFRhZyB8
fCB0b2tlbi5uYW1lKCkgPT0gbm9lbWJlZFRhZykgewotICAgICAgICAgICAgLy8gRklYTUU6IG5v
c2NyaXB0IGFuZCBub2ZyYW1lcyBtYXkgY29uZGl0aW9uYWxseSBlbnRlciB0aGlzIHN0YXRlIGFz
IHdlbGwuCi0gICAgICAgICAgICBtX2xleGVyLT5zZXRTdGF0ZShIVE1MNUxleGVyOjpSQVdURVhU
U3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKHRva2VuLm5hbWUoKSA9PSBwbGFpbnRleHRUYWcp
Ci0gICAgICAgICAgICBtX2xleGVyLT5zZXRTdGF0ZShIVE1MNUxleGVyOjpQTEFJTlRFWFRTdGF0
ZSk7Ci0gICAgfQorICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIFRoZSBIVE1MIGZyZ21lbnQgY2Fz
ZT8KKyAgICBtX2xleGVyLT5zZXRTdGF0ZShIVE1MNUxleGVyOjpTY3JpcHREYXRhU3RhdGUpOwor
ICAgIG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOworICAgIG1faW5z
ZXJ0aW9uTW9kZSA9IFRleHQ7Cit9CisKK3ZvaWQgSFRNTDVUcmVlQnVpbGRlcjo6aGFuZGxlU2Ny
aXB0RW5kVGFnKEVsZW1lbnQqIHNjcmlwdEVsZW1lbnQpCit7CisgICAgQVNTRVJUKCFtX3Njcmlw
dFRvUHJvY2Vzcyk7IC8vIENhbGxlciBuZXZlciBjYWxsZWQgdGFrZVNjcmlwdFRvUHJvY2VzcyEK
KyAgICBtX2luc2VydGlvbk1vZGUgPSBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZTsKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOyAvLyBTYXZlIGluc2VydGlvbiBwb2ludD8KKworICAgIC8vIFBhdXNlIG91
cnNlbHZlcyBzbyB0aGF0IHBhcnNpbmcgc3RvcHMgdW50aWwgdGhlIHNjcmlwdCBjYW4gYmUgcHJv
Y2Vzc2VkIGJ5IHRoZSBjYWxsZXIuCisgICAgbV9pc1BhdXNlZCA9IHRydWU7CisgICAgbV9zY3Jp
cHRUb1Byb2Nlc3MgPSBzY3JpcHRFbGVtZW50OworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IEhU
TUw1VHJlZUJ1aWxkZXI6OnRha2VTY3JpcHRUb1Byb2Nlc3MoKQoreworICAgIC8vIFVucGF1c2Ug
b3Vyc2VsdmVzLCBjYWxsZXJzIG1heSBwYXVzZSB1cyBhZ2FpbiB3aGVuIHByb2Nlc3NpbmcgdGhl
IHNjcmlwdC4KKyAgICBtX2lzUGF1c2VkID0gZmFsc2U7CisgICAgcmV0dXJuIG1fc2NyaXB0VG9Q
cm9jZXNzLnJlbGVhc2UoKTsKK30KIAorUGFzc1JlZlB0cjxOb2RlPiBIVE1MNVRyZWVCdWlsZGVy
OjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcihIVE1MNVRva2VuJiB0b2tlbikKK3sKICAgICBpZiAo
dG9rZW4udHlwZSgpID09IEhUTUw1VG9rZW46OkRPQ1RZUEUpIHsKICAgICAgICAgRG9jdHlwZVRv
a2VuIGRvY3R5cGVUb2tlbjsKICAgICAgICAgZG9jdHlwZVRva2VuLm1fbmFtZS5hcHBlbmQodG9r
ZW4ubmFtZSgpLmNoYXJhY3RlcnMoKSwgdG9rZW4ubmFtZSgpLmxlbmd0aCgpKTsKQEAgLTEyNCw3
ICsxMzksMzEgQEAgUGFzc1JlZlB0cjxOb2RlPiBIVE1MNVRyZWVCdWlsZGVyOjpwYXNzVG9rZW5U
b0xlZ2FjeVBhcnNlcihIVE1MNVRva2VuJiB0b2tlbikKICAgICBUb2tlbiBvbGRTdHlsZVRva2Vu
OwogICAgIGNvbnZlcnRUb09sZFN0eWxlKHRva2VuLCBvbGRTdHlsZVRva2VuKTsKIAotICAgIHJl
dHVybiBtX2xlZ2FjeUhUTUxQYXJzZXItPnBhcnNlVG9rZW4oJm9sZFN0eWxlVG9rZW4pOworICAg
IFJlZlB0cjxOb2RlPiByZXN1bHQgPSAgbV9sZWdhY3lIVE1MUGFyc2VyLT5wYXJzZVRva2VuKCZv
bGRTdHlsZVRva2VuKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUw1VG9rZW46OlN0YXJ0
VGFnKSB7CisgICAgICAgIC8vIFRoaXMgd29yayBpcyBzdXBwb3NlZCB0byBiZSBkb25lIGJ5IHRo
ZSBwYXJzZXIsIGJ1dAorICAgICAgICAvLyB3aGVuIHVzaW5nIHRoZSBvbGQgcGFyc2VyIGZvciB3
ZSBoYXZlIHRvIGRvIHRoaXMgbWFudWFsbHkuCisgICAgICAgIGlmICh0b2tlbi5uYW1lKCkgPT0g
c2NyaXB0VGFnKXsKKyAgICAgICAgICAgIGhhbmRsZVNjcmlwdFN0YXJ0VGFnKCk7CisgICAgICAg
ICAgICBtX2xhc3RTY3JpcHRFbGVtZW50ID0gc3RhdGljX3BvaW50ZXJfY2FzdDxFbGVtZW50Pihy
ZXN1bHQpOworICAgICAgICB9IGVsc2UgaWYgKHRva2VuLm5hbWUoKSA9PSB0ZXh0YXJlYVRhZyB8
fCB0b2tlbi5uYW1lKCkgPT0gdGl0bGVUYWcpCisgICAgICAgICAgICBtX2xleGVyLT5zZXRTdGF0
ZShIVE1MNUxleGVyOjpSQ0RBVEFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKHRva2VuLm5hbWUo
KSA9PSBzdHlsZVRhZyB8fCB0b2tlbi5uYW1lKCkgPT0gaWZyYW1lVGFnCisgICAgICAgICAgICAg
ICAgIHx8IHRva2VuLm5hbWUoKSA9PSB4bXBUYWcgfHwgdG9rZW4ubmFtZSgpID09IG5vZW1iZWRU
YWcpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBub3NjcmlwdCBhbmQgbm9mcmFtZXMgbWF5IGNv
bmRpdGlvbmFsbHkgZW50ZXIgdGhpcyBzdGF0ZSBhcyB3ZWxsLgorICAgICAgICAgICAgbV9sZXhl
ci0+c2V0U3RhdGUoSFRNTDVMZXhlcjo6UkFXVEVYVFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlm
ICh0b2tlbi5uYW1lKCkgPT0gcGxhaW50ZXh0VGFnKQorICAgICAgICAgICAgbV9sZXhlci0+c2V0
U3RhdGUoSFRNTDVMZXhlcjo6UExBSU5URVhUU3RhdGUpOworICAgIH0KKyAgICBpZiAodG9rZW4u
dHlwZSgpID09IEhUTUw1VG9rZW46OkVuZFRhZykgeworICAgICAgICBpZiAodG9rZW4ubmFtZSgp
ID09IHNjcmlwdFRhZykgeworICAgICAgICAgICAgaWYgKG1fbGFzdFNjcmlwdEVsZW1lbnQpIHsK
KyAgICAgICAgICAgICAgICBoYW5kbGVTY3JpcHRFbmRUYWcobV9sYXN0U2NyaXB0RWxlbWVudC5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgbV9sYXN0U2NyaXB0RWxlbWVudCA9IDA7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9
CiAKIFBhc3NSZWZQdHI8Tm9kZT4gSFRNTDVUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21U
b2tlbihIVE1MNVRva2VuJiB0b2tlbikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNVRy
ZWVCdWlsZGVyLmggYi9XZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5oCmluZGV4IDM1YWQw
YzhhNTBkNDE0ZGVhZDllYTU4NzZhNTE3MmEyYjQyNjNjOWMuLmE1MzRhMmVjOTRjYzE4YjdjZjk5
YzlkNGFhMGVlMmQxOGQ2Yzc4ODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVC
dWlsZGVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuaApAQCAtMjksMTAg
KzI5LDEzIEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBFbGVtZW50OworY2xhc3MgRnJhbWU7CiBjbGFz
cyBIVE1MNUxleGVyOwogY2xhc3MgSFRNTDVUb2tlbjsKIGNsYXNzIEhUTUxEb2N1bWVudDsKQEAg
LTQ0LDIzICs0Nyw2NSBAQCBwdWJsaWM6CiAgICAgSFRNTDVUcmVlQnVpbGRlcihIVE1MNUxleGVy
KiwgSFRNTERvY3VtZW50KiwgYm9vbCByZXBvcnRFcnJvcnMpOwogICAgIH5IVE1MNVRyZWVCdWls
ZGVyKCk7CiAKKyAgICB2b2lkIHNldFBhdXNlZChib29sIHBhdXNlZCkgeyBtX2lzUGF1c2VkID0g
cGF1c2VkOyB9CisgICAgYm9vbCBpc1BhdXNlZCgpIHsgcmV0dXJuIG1faXNQYXVzZWQ7IH0KKwog
ICAgIC8vIFRoZSB0b2tlbiByZWFsbHkgc2hvdWxkIGJlIHBhc3NlZCBhcyBhIGNvbnN0JiBzaW5j
ZSBpdCdzIG5ldmVyIG1vZGlmaWVkLgogICAgIFBhc3NSZWZQdHI8Tm9kZT4gY29uc3RydWN0VHJl
ZUZyb21Ub2tlbihIVE1MNVRva2VuJik7CisgICAgLy8gTXVzdCBiZSBjYWxsZWQgd2hlbiBwYXJz
ZXIgaXMgcGF1c2VkIGJlZm9yZSBjYWxsaW5nIHRoZSBwYXJzZXIgYWdhaW4uCisgICAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiB0YWtlU2NyaXB0VG9Qcm9jZXNzKCk7CisKKyAgICAvLyBEb25lLCBjbG9z
ZSBhbnkgb3BlbiB0YWdzLCBldGMuCiAgICAgdm9pZCBmaW5pc2hlZCgpOwogCiBwcml2YXRlOgog
ICAgIFBhc3NSZWZQdHI8Tm9kZT4gcGFzc1Rva2VuVG9MZWdhY3lQYXJzZXIoSFRNTDVUb2tlbiYp
OwogICAgIFBhc3NSZWZQdHI8Tm9kZT4gcHJvY2Vzc1Rva2VuKEhUTUw1VG9rZW4mLCBVQ2hhciBj
dXJyZW50Q2hhcmFjdGVyID0gMCk7CisgICAgCisgICAgdm9pZCBoYW5kbGVTY3JpcHRTdGFydFRh
ZygpOworICAgIHZvaWQgaGFuZGxlU2NyaXB0RW5kVGFnKEVsZW1lbnQqKTsKIAotICAgIC8vIFdl
IGNvdWxkIGdyYWIgbV9kb2N1bWVudCBvZmYgdGhlIGxleGVyIGlmIHdlIHdhbnRlZCB0byBzYXZl
IHNwYWNlLgotICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIERvY3VtZW50KiBtX2RvY3Vt
ZW50OyAvLyBUaGlzIGlzIG9ubHkgdXNlZCBieSB0aGUgbV9sZWdhY3lQYXJzZXIgZm9yIG5vdy4K
ICAgICBib29sIG1fcmVwb3J0RXJyb3JzOworICAgIGJvb2wgbV9pc1BhdXNlZDsKICAgICAvLyBI
VE1MNSBzcGVjIHJlcXVpcmVzIHRoYXQgd2UgYmUgYWJsZSB0byBjaGFuZ2UgdGhlIHN0YXRlIG9m
IHRoZSBsZXhlcgogICAgIC8vIGZyb20gd2l0aGluIHBhcnNlciBhY3Rpb25zLgogICAgIEhUTUw1
TGV4ZXIqIG1fbGV4ZXI7CiAKKyAgICBlbnVtIEluc2VydGlvbk1vZGUgeworICAgICAgICBJbml0
aWFsLAorICAgICAgICBCZWZvcmVIVE1MLAorICAgICAgICBCZWZvcmVIZWFkLAorICAgICAgICBJ
bkhlYWQsCisgICAgICAgIEluSGVhZE5vc2NyaXB0LAorICAgICAgICBBZnRlckhlYWQsCisgICAg
ICAgIEluQm9keSwKKyAgICAgICAgVGV4dCwKKyAgICAgICAgSW5UYWJsZSwKKyAgICAgICAgSW5U
YWJsZVRleHQsCisgICAgICAgIEluQ2FwdGlvbiwKKyAgICAgICAgSW5Db2x1bW5Hcm91cCwKKyAg
ICAgICAgSW5UYWJsZUJvZHksCisgICAgICAgIEluUm93LAorICAgICAgICBJbkNlbGwsCisgICAg
ICAgIEluU2VsZWN0LAorICAgICAgICBJblNlbGVjdEluVGFibGUsCisgICAgICAgIEluRm9yZWln
bkNvbnRlbnQsCisgICAgICAgIEFmdGVyQm9keSwKKyAgICAgICAgSW5GcmFtZXNldCwKKyAgICAg
ICAgQWZ0ZXJGcmFtZXNldCwKKyAgICAgICAgQWZ0ZXJBZnRlckJvZHksCisgICAgICAgIEFmdGVy
QWZ0ZXJGcmFtZXNldCwKKyAgICB9OworCisgICAgSW5zZXJ0aW9uTW9kZSBtX2luc2VydGlvbk1v
ZGU7CisgICAgSW5zZXJ0aW9uTW9kZSBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZTsKKyAgICBJbnNl
cnRpb25Nb2RlIG1fc2Vjb25kYXJ5SW5zZXJ0aW9uTW9kZTsKKwogICAgIC8vIFdlJ3JlIHJlLXVz
aW5nIGxvZ2ljIGZyb20gdGhlIG9sZCBIVE1MUGFyc2VyIHdoaWxlIHRoaXMgY2xhc3MgaXMgYmVp
bmcgd3JpdHRlbi4KICAgICBPd25QdHI8SFRNTFBhcnNlcj4gbV9sZWdhY3lIVE1MUGFyc2VyOwor
ICAgIFJlZlB0cjxFbGVtZW50PiBtX2xhc3RTY3JpcHRFbGVtZW50OyAgLy8gRklYTUU6IFRoaXMg
aXMgYSBoYWNrIGZvciA8c2NyaXB0PiBzdXBwb3J0LgorICAgIFJlZlB0cjxFbGVtZW50PiBtX3Nj
cmlwdFRvUHJvY2VzczsgLy8gU2V0IHRvIGEgPHNjcmlwdD4gdGFnIHdoaWNoIG5lZWRzIHByb2Nl
c3NpbmcuCiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57180</attachid>
            <date>2010-05-26 17:45:02 -0700</date>
            <delta_ts>2010-05-26 22:56:35 -0700</delta_ts>
            <desc>slightly better work in progress</desc>
            <filename>bug-39716-20100526174501.patch</filename>
            <type>text/plain</type>
            <size>32688</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzJhNWJiMzA3NmJhZWU5YTIwMGQ2NGQ3Y2JkOTMyNjM1OThjMDBkNi4uOTExMzY1ZGQzNDgwZjE5
NzUzZjU5YmFjNGNjNTY2ZWVjYmFlNmM3MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wNS0yNiAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVhY2ggdGhlIEhUTUw1IHBhcnNlciBob3cgdG8gaGFuZGxl
IGV4dGVybmFsIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM5NzE2CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIu
aDoKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4pOgorICAgICAgICAqIGRvbS9TY3Jp
cHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OkhUTUw1U2NyaXB0UnVubmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpmcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3JpcHRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVTY3JpcHRFcnJvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0
UnVubmVyOjpleGVjdXRlRXh0ZXJuYWxTY3JpcHRzSWZSZWFkeSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MNVNjcmlwdFJ1bm5lcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTDVTY3JpcHRSdW5uZXI6OnJlcXVlc3RTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TDVTY3JpcHRSdW5uZXI6OnJ1blNjcmlwdCk6CisgICAgICAgICogaHRtbC9IVE1MNVNjcmlwdFJ1
bm5lci5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUw1VG9rZW5pemVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpIVE1MNVRva2VuaXplcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVU
b2tlbml6ZXI6OmlzV2FpdGluZ0ZvclNjcmlwdHMpOgorICAgICAgICAqIGh0bWwvSFRNTDVUb2tl
bml6ZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6SFRNTDVUcmVlQnVpbGRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNVRyZWVCdWlsZGVyOjpoYW5kbGVTY3JpcHRTdGFydFRhZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MNVRyZWVCdWlsZGVyOjpoYW5kbGVTY3JpcHRFbmRUYWcpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6dGFrZVNjcmlwdFRvUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MNVRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcik6
CisgICAgICAgICogaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MNVRyZWVCdWlsZGVyOjpzZXRQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUcmVl
QnVpbGRlcjo6aXNQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6
KToKKwogMjAxMC0wNS0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4Yjg4OWI5MWEwOTRmNjBkYTFhNGE4ZDExNDIzM2I1
YWM1ZTEzMTNlLi5jZWJhYzRhZDE5ODEzOGVjZGU2NzEzMDAxZTJlYmY0Y2E1MTMyNWU3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjkxNiw2ICsyOTE2
LDggQEAKIAkJQTgzM0M4MEMwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MzNDODBBMEEyQ0YyNTYw
MEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgKi87IH07CiAJCUE4MzNDODBEMEEyQ0YyNTYwMEQ1NzY2
NCAvKiBYTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTgzM0M4MEIwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmggKi87IH07CiAJCUE4
MzNDODUyMEEyQ0Y1MjgwMEQ1NzY2NCAvKiBTVkdFbGVtZW50RmFjdG9yeS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFFNjA5RDE1MDhEMDAw
RTYxRDcgLyogU1ZHRWxlbWVudEZhY3RvcnkuY3BwICovOyB9OworCQlBODNCM0FGMDExQURFRkY1
MDA0NTg4MDkgLyogSFRNTDVTY3JpcHRSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgzQjNBRUUxMUFERUZGNTAwNDU4ODA5IC8qIEhUTUw1
U2NyaXB0UnVubmVyLmNwcCAqLzsgfTsKKwkJQTgzQjNBRjExMUFERUZGNTAwNDU4ODA5IC8qIEhU
TUw1U2NyaXB0UnVubmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODNCM0FFRjExQURFRkY1MDA0NTg4MDkgLyogSFRNTDVTY3JpcHRSdW5uZXIuaCAq
LzsgfTsKIAkJQTgzQjc4RkMwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VVcmlFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODNC
NzhGMjBDQ0FGRjE1MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZVVyaUVsZW1lbnQuaCAqLzsgfTsK
IAkJQTgzQjc4RkQwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4M0I3OEYz
MENDQUZGMTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAgKi87IH07CiAJ
CUE4M0I3OEZFMENDQUZGMTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlU3JjRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgzQjc4RjQwQ0NB
RkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VTcmNFbGVtZW50LmggKi87IH07CkBAIC04MzU3
LDYgKzgzNTksOCBAQAogCQlBODMzQzdGNjBBMkNGMUQ4MDBENTc2NjQgLyogeG1sYXR0cnMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IHhtbGF0dHJzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBODMzQzgwQTBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTE5hbWVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgzM0M4MEIwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxOYW1lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBODNCM0FFRTExQURFRkY1MDA0NTg4MDkgLyogSFRNTDVT
Y3JpcHRSdW5uZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRN
TDVTY3JpcHRSdW5uZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBODNCM0FF
RjExQURFRkY1MDA0NTg4MDkgLyogSFRNTDVTY3JpcHRSdW5uZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSFRNTDVTY3JpcHRSdW5uZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTgzQjc4RjIwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VVcmlF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHRm9udEZhY2VV
cmlFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4M0I3OEYzMENDQUZG
MTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4M0I3OEY0MENDQUZGMTUwMDBCMDgyNSAvKiBKU1NW
R0ZvbnRGYWNlU3JjRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1NWR0ZvbnRGYWNlU3JjRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTMzMjYsMTAgKzEzMzMwLDEwIEBACiAJCTkzRUVDMUVDMDlDMjg3NzcwMEM1MTVEMSAvKiBodG1s
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0OTQ4NEZB
RTEwMkNGMDFFMDAxODdERDMgLyogY2FudmFzICovLAogCQkJCTJFQUZBRjBCMTBFMkFGMkQwMDdF
RDNENiAvKiBCbG9iLmNwcCAqLywKIAkJCQkyRUFGQUYwQzEwRTJBRjJEMDA3RUQzRDYgLyogQmxv
Yi5oICovLAogCQkJCTJFQUZBRjBEMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmlkbCAqLywKKwkJ
CQk0OTQ4NEZBRTEwMkNGMDFFMDAxODdERDMgLyogY2FudmFzICovLAogCQkJCTkzQzQ0MUVEMEY4
MTNBMUEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uQ2FjaGUuY3BwICovLAogCQkJCTkzQzQ0MUVFMEY4
MTNBMUEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uQ2FjaGUuaCAqLywKIAkJCQk5M0M0NDFGRjBGODEz
QUUxMDBDMUE2MzQgLyogQ29sbGVjdGlvblR5cGUuaCAqLywKQEAgLTEzMzcwLDYgKzEzMzc0LDgg
QEAKIAkJCQlBODEzNkQzNjA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0LmggKi8sCiAJ
CQkJOTdFOEIzNTQxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuY3BwICovLAogCQkJCTk3
RThCMzU1MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmggKi8sCisJCQkJQTgzQjNBRUUx
MUFERUZGNTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0UnVubmVyLmNwcCAqLywKKwkJCQlBODNCM0FF
RjExQURFRkY1MDA0NTg4MDkgLyogSFRNTDVTY3JpcHRSdW5uZXIuaCAqLywKIAkJCQk5N0U4QjND
MjExQTI4OTA4MDAxNjk0MDkgLyogSFRNTDVUb2tlbi5oICovLAogCQkJCUE4NzEwMzg4MTFBMjk0
NzAwMERCRDUwRSAvKiBIVE1MNVRva2VuaXplci5jcHAgKi8sCiAJCQkJQTg3MTAzODkxMUEyOTQ3
MDAwREJENTBFIC8qIEhUTUw1VG9rZW5pemVyLmggKi8sCkBAIC0xOTM2Myw2ICsxOTM2OSw3IEBA
CiAJCQkJQjY2OTNFRUMxMUFENjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCNjY5M0VFRTExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmVS
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNjY5M0VGMzExQUQ2NDg2MDAzRjI3NzAgLyog
SlNJREJPYmplY3RTdG9yZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUE4M0IzQUYxMTFB
REVGRjUwMDQ1ODgwOSAvKiBIVE1MNVNjcmlwdFJ1bm5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
MTY1Nyw2ICsyMTY2NCw3IEBACiAJCQkJQjY2OTNFRUQxMUFENjNFNjAwM0YyNzcwIC8qIElEQk9i
amVjdFN0b3JlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNjY5M0VGMjExQUQ2NDg2
MDAzRjI3NzAgLyogSlNJREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjYyN0ZCMkQxMUFENzQzNTAwRTk3QjcyIC8qIElEQkRhdGFiYXNlSW1wbC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBODNCM0FGMDExQURFRkY1MDA0NTg4MDkgLyogSFRNTDVTY3JpcHRSdW5u
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
Y2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNj
cmlwdFNvdXJjZVByb3ZpZGVyLmgKaW5kZXggOGU2OWI2YmFkZmFmOTEwZDQ1NjQyNWFjMDAxZWEw
ZTBlMmY1NjU2OC4uODA5YTQ4ODA2YTU1Y2YxNWUzNjlmMDQ3MzI3NTRiNDc3ZDVkN2JiMyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5o
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIK
KyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIgLy8gZm9yIHN0cmluZ1RvVVN0cmluZwogI2luY2x1
ZGUgIlNjcmlwdFNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUu
aD4KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9XZWJDb3Jl
L2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCBiNDU3ZjVkMzk2OTRlY2JhYWVjNDlhOWJhZmRj
YjY5NDAyZTkwZjhlLi4wYWMwODQ2YTEyNDIxMDdhZjA1ZTRjODk1ODQ4OGE5YTQ0NGFiMzkyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcApAQCAtOTcsMTUgKzk3LDYgQEAgdm9pZCBTY3JpcHRFbGVtZW50
OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oU2NyaXB0RWxlbWVudERhdGEmIGRhdGEsIGNvbnN0IFN0
cmluZyYKICAgICAvLyBhbGxvdyBkeW5hbWljIGxvYWRpbmcgbGF0ZXIuCiAgICAgaWYgKHNvdXJj
ZVVybC5pc0VtcHR5KCkgJiYgZGF0YS5zY3JpcHRDb250ZW50KCkuaXNFbXB0eSgpKQogICAgICAg
ICBkYXRhLnNldENyZWF0ZWRCeVBhcnNlcihmYWxzZSk7Ci0gICAgLy8gSFRNTDUgUmVxdWlyZXMg
dGhhdCB3ZSBleGVjdXRlIHNjcmlwdHMgZnJvbSB0aGUgcGFyc2VyLCBub3QgZnJvbQotICAgIC8v
IEhUTUxUb2tlbml6ZXIgbGlrZSB3ZSBjdXJyZW50bHkgZG8uCi0gICAgLy8gRklYTUU6IEl0IG1h
eSBub3QgYmUgc2FmZSB0byBleGVjdXRlIHNjcmlwdHMgZnJvbSBoZXJlIGlmCi0gICAgLy8gSFRN
TFBhcnNlcjo6cG9wT25lQmxvY2tDb21tb24gaXMgbm90IHJlZW50cmFudC4KLSAgICBlbHNlIGlm
ICh1c2VIVE1MNVBhcnNlcihkYXRhLmVsZW1lbnQoKS0+ZG9jdW1lbnQoKSkpIHsKLSAgICAgICAg
Ly8gVGhpcyBpcyBjdXJyZW50bHkgYW4gaW5jb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiwgc2VlOgot
ICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13
b3JrL211bHRpcGFnZS90b2tlbml6YXRpb24uaHRtbCNwYXJzaW5nLW1haW4taW5jZGF0YQotICAg
ICAgICBkYXRhLmV2YWx1YXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoZGF0YS5zY3JpcHRDb250
ZW50KCksIGRhdGEuZWxlbWVudCgpLT5kb2N1bWVudCgpLT51cmwoKSkpOyAvLyBGSVhNRTogUHJv
dmlkZSBhIHJlYWwgc3RhcnRpbmcgbGluZSBudW1iZXIgaGVyZQotICAgIH0KIH0KIAogdm9pZCBT
Y3JpcHRFbGVtZW50OjpoYW5kbGVTb3VyY2VBdHRyaWJ1dGUoU2NyaXB0RWxlbWVudERhdGEmIGRh
dGEsIGNvbnN0IFN0cmluZyYgc291cmNlVXJsKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5oIGIvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCmluZGV4IGZhZDZmZTcy
NTY2YTI1MjFiNmMzNTdjNjI2YjRmY2NlMzk0MzRiNjkuLjhjYzg0ZmNkNDllZWJlOGEyYTY2NjVl
NTI1OWRlYThlMDgyMDQ2YzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
aAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKQEAgLTk0LDkgKzk0LDkgQEAgcHJp
dmF0ZToKICAgICBTY3JpcHRFbGVtZW50KiBtX3NjcmlwdEVsZW1lbnQ7CiAgICAgRWxlbWVudCog
bV9lbGVtZW50OwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gbV9jYWNo
ZWRTY3JpcHQ7Ci0gICAgYm9vbCBtX2NyZWF0ZWRCeVBhcnNlcjsKKyAgICBib29sIG1fY3JlYXRl
ZEJ5UGFyc2VyOyAvLyBIVE1MNTogInBhcnNlci1pbnNlcnRlZCIKICAgICBib29sIG1fcmVxdWVz
dGVkOwotICAgIGJvb2wgbV9ldmFsdWF0ZWQ7CisgICAgYm9vbCBtX2V2YWx1YXRlZDsgLy8gSFRN
TDU6ICJhbHJlYWR5IHN0YXJ0ZWQiCiAgICAgYm9vbCBtX2ZpcmVkTG9hZDsKIH07CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAgYi9XZWJDb3JlL2h0bWwv
SFRNTDVTY3JpcHRSdW5uZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1NmI1ZDc1NTc1OTI4MjMyZTAyYWE2
MmI5Yjk0YmMyYjEwZGE1MzQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVT
Y3JpcHRSdW5uZXIuY3BwCkBAIC0wLDAgKzEsMjE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkhUTUw1U2NyaXB0UnVubmVyLmgiCisKKyNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRl
ICJDYWNoZWRTY3JpcHQuaCIKKyNpbmNsdWRlICJEb2NMb2FkZXIuaCIKKyNpbmNsdWRlICJFbGVt
ZW50LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RWxlbWVudC5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitIVE1MNVNjcmlwdFJ1
bm5lcjo6SFRNTDVTY3JpcHRSdW5uZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBDYWNoZWRSZXNvdXJj
ZUNsaWVudCogbG9hZE5vdGlmaWVyKQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAs
IG1fbG9hZE5vdGlmaWVyKGxvYWROb3RpZmllcikKKyAgICAsIG1fc2NyaXB0TmVzdGluZ0xldmVs
KDApCit7Cit9CisKK0hUTUw1U2NyaXB0UnVubmVyOjp+SFRNTDVTY3JpcHRSdW5uZXIoKQorewor
ICAgIC8vIElmIHRoZSBwYWdlIGNvbXBsZXRlZCBsb2FkaW5nIHdlIHNob3VsZCBoYXZlIHJ1biBh
bGwgc2NyaXB0cy4KKyAgICAvLyBUaGlzIEFTU0VSVCBtYXkgbm90IGhvbGQgaW4gdGhlIGNhc2Ug
b2YgbmF2aWdhdGlvbiBiZWZvcmUgY29tcGxldGUgbG9hZC4KKyAgICBBU1NFUlQoIW1fcGFyc2lu
Z0Jsb2NraW5nU2NyaXB0LmVsZW1lbnQpOworfQorCisKK0ZyYW1lKiBIVE1MNVNjcmlwdFJ1bm5l
cjo6ZnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2RvY3VtZW50LT5mcmFtZSgpOworfQor
CitpbmxpbmUgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRlU2NyaXB0TG9hZEV2ZW50KCkKK3sKKyAg
ICByZXR1cm4gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFs
c2UpOworfQorCitpbmxpbmUgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRlU2NyaXB0RXJyb3JFdmVu
dCgpCit7CisgICAgcmV0dXJuIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQs
IHRydWUsIGZhbHNlKTsKK30KKworU2NyaXB0U291cmNlQ29kZSBIVE1MNVNjcmlwdFJ1bm5lcjo6
c291cmNlRnJvbVBlbmRpbmdTY3JpcHQoY29uc3QgUGVuZGluZ1NjcmlwdCYgc2NyaXB0LCBib29s
JiBlcnJvck9jY3VycmVkKQoreworICAgIGlmIChzY3JpcHQuY2FjaGVkU2NyaXB0KSB7CisgICAg
ICAgIGVycm9yT2NjdXJyZWQgPSBzY3JpcHQuY2FjaGVkU2NyaXB0LT5lcnJvck9jY3VycmVkKCk7
CisgICAgICAgIEFTU0VSVChzY3JpcHQuY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpKTsKKyAgICAg
ICAgcmV0dXJuIFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LmNhY2hlZFNjcmlwdC5nZXQoKSk7Cisg
ICAgfQorICAgIGVycm9yT2NjdXJyZWQgPSBmYWxzZTsKKyAgICAvLyBGSVhNRTogTGluZSBudW1i
ZXJzIGFyZSB3cm9uZy4KKyAgICBLVVJMIGRvY3VtZW50VVJMID0gZnJhbWUoKSA/IGZyYW1lKCkt
PmRvY3VtZW50KCktPnVybCgpIDogS1VSTCgpOworICAgIHJldHVybiBTY3JpcHRTb3VyY2VDb2Rl
KHNjcmlwdC5lbGVtZW50LT50ZXh0Q29udGVudCgpLCBkb2N1bWVudFVSTCk7Cit9CisKK2Jvb2wg
SFRNTDVTY3JpcHRSdW5uZXI6OmlzUGVuZGluZ1NjcmlwdFJlYWR5KGNvbnN0IFBlbmRpbmdTY3Jp
cHQmIHNjcmlwdCkKK3sKKyAgICBpZiAoIW1fZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRl
ZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHNjcmlwdC5jYWNoZWRTY3JpcHQg
JiYgIXNjcmlwdC5jYWNoZWRTY3JpcHQtPmlzTG9hZGVkKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0
ZVBlbmRpbmdTY3JpcHQoKQoreworICAgIEFTU0VSVCghbV9zY3JpcHROZXN0aW5nTGV2ZWwpOwor
ICAgIEFTU0VSVChtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSk7CisgICAgYm9v
bCBlcnJvck9jY3VycmVkID0gZmFsc2U7CisgICAgQVNTRVJUKGlzUGVuZGluZ1NjcmlwdFJlYWR5
KG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KSk7CisgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VD
b2RlID0gc291cmNlRnJvbVBlbmRpbmdTY3JpcHQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQsIGVy
cm9yT2NjdXJyZWQpOworCisgICAgUmVmUHRyPEVsZW1lbnQ+IHNjcmlwdEVsZW1lbnQgPSBtX3Bh
cnNpbmdCbG9ja2luZ1NjcmlwdC5lbGVtZW50LnJlbGVhc2UoKTsKKyAgICBDYWNoZWRTY3JpcHQq
IGNhY2hlZFNjcmlwdCA9IG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdC5nZXQo
KTsKKyAgICBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQgPSAwOworCisgICAg
Ly8gcmVtb3ZlQ2xpZW50IGJlZm9yZSBleGVjdXRpb24gdG8gcHJldmVudCByZWN1cnNpb24gaWYg
dGhlIHNjcmlwdCByZWxvYWRzIGl0c2VsZi4KKyAgICBpZiAoY2FjaGVkU2NyaXB0KQorICAgICAg
ICBjYWNoZWRTY3JpcHQtPnJlbW92ZUNsaWVudChtX2xvYWROb3RpZmllcik7CisKKyAgICBtX3Nj
cmlwdE5lc3RpbmdMZXZlbCsrOworICAgIGlmIChlcnJvck9jY3VycmVkKQorICAgICAgICBzY3Jp
cHRFbGVtZW50LT5kaXNwYXRjaEV2ZW50KGNyZWF0ZVNjcmlwdEVycm9yRXZlbnQoKSk7CisgICAg
ZWxzZSB7CisgICAgICAgIGlmICh0b1NjcmlwdEVsZW1lbnQoc2NyaXB0RWxlbWVudC5nZXQoKSkt
PnNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSkKKyAgICAgICAgICAgIGZyYW1lKCktPnNjcmlw
dCgpLT5leGVjdXRlU2NyaXB0KHNvdXJjZUNvZGUpOworICAgICAgICBzY3JpcHRFbGVtZW50LT5k
aXNwYXRjaEV2ZW50KGNyZWF0ZVNjcmlwdExvYWRFdmVudCgpKTsKKyAgICB9CisgICAgbV9zY3Jp
cHROZXN0aW5nTGV2ZWwtLTsKKyAgICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xldmVsKTsKK30K
KworLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgbWF0Y2ggMTAuMi41LjExICJBbiBlbmQgdGFnIHdo
b3NlIHRhZyBuYW1lIGlzICdzY3JpcHQnIgorLy8gU2NyaXB0IGhhbmRsaW5nIGxpdmVzIG91dHNp
ZGUgdGhlIHRyZWUgYnVpbGRlciB0byBrZWVwIHRoZSBlYWNoIGNsYXNzIHNpbXBsZS4KK2Jvb2wg
SFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0cyhQYXNzUmVmUHRyPEVsZW1l
bnQ+IHNjcmlwdEVsZW1lbnQpCit7CisgICAgLy8gRklYTUU6IElmIHNjcmlwdGluZyBpcyBkaXNh
YmxlZCwgYWx3YXlzIGp1c3QgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoc2NyaXB0RWxlbWVudCkg
eworICAgICAgICAvLyBUcnkgdG8gZXhlY3V0ZSB0aGUgc2NyaXB0IGdpdmVuIHRvIHVzLgorICAg
ICAgICBydW5TY3JpcHQoc2NyaXB0RWxlbWVudC5nZXQoKSk7CisgICAgICAgIGlmIChtX3Njcmlw
dE5lc3RpbmdMZXZlbCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gRG9uJ3QgY29udGlu
dWUgcGFyc2luZy4KKyAgICAgICAgaWYgKCFleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7
IC8vIFJlc3RvcmUgaW5zZXJ0aW9uIHBvaW50PworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIHJl
LWVudHJhbnQgc2NyaXB0cyBhbmQgbV9wZW5kaW5nUGFyc2luZ0Jsb2NraW5TY3JpcHQuCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIElmIHdlIHdlcmUgbm90IGNhbGxlZCB3
aXRoIGEgc2NyaXB0LCB0aGVuIGNoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGFueQorICAgIC8vIHBl
bmRpbmcgc2NyaXB0cyB0byBydW4gKGFzIHRoaXMgaXMgdGhlIGVuZCBvZiB0aGUgdG9rZW4gc3Ry
ZWFtKS4KKyAgICAvLyBGSVhNRTogUnVuIGRlZmVycmVkIHNjcmlwdHMuCisgICAgLy8gT3RoZXJ3
aXNlLCByZXR1cm4gZmFsc2UgYW5kIHN0b3AgcGFyc2luZy4KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRz
KCkKK3sKKyAgICB3aGlsZSAobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuZWxlbWVudCkgeworICAg
ICAgICAvLyBXZSBvbmx5IHJlYWxseSBuZWVkIHRvIGNoZWNrIG9uY2UuCisgICAgICAgIGlmICgh
bV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGV4ZWN1dGVQZW5kaW5nU2NyaXB0KCk7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCitib29sIEhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRp
bmdGb3JMb2FkKENhY2hlZFJlc291cmNlKikKK3sKKyAgICBBU1NFUlQobV9wYXJzaW5nQmxvY2tp
bmdTY3JpcHQuZWxlbWVudCk7CisgICAgcmV0dXJuIGV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3Jp
cHRzKCk7Cit9CisKK2Jvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGlu
Z0ZvclN0eWxlc2hlZXRzKCkKK3sKKyAgICBBU1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hl
ZXRzTG9hZGVkKCkpOworICAgIC8vIElmIHdlIGRvbid0IGFjdHVhbGx5IGhhdmUgYW55dGhpbmcg
dG8gZXhlY3V0ZSwgd2Ugd2VyZW4ndCBibG9ja2VkLCB0ZWxsIHRoZSBjYWxsZXIgbm90IHRvIGJv
dGhlciByZXN0YXJ0aW5nIHBhcnNpbmcuCisgICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0
LmVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZXhlY3V0ZVBhcnNp
bmdCbG9ja2luZ1NjcmlwdHMoKTsKK30KKwordm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6cmVxdWVz
dFNjcmlwdChFbGVtZW50KiBzY3JpcHQpCit7CisgICAgQVNTRVJUKCFtX3BhcnNpbmdCbG9ja2lu
Z1NjcmlwdC5lbGVtZW50KTsKKyAgICBBdG9taWNTdHJpbmcgc3JjVmFsdWUgPSBzY3JpcHQtPmdl
dEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byByZXNvbHZlIHRo
ZSB1cmwgcmVsYXRpdmUgdG8gdGhlIGVsZW1lbnQuCisgICAgbV9wYXJzaW5nQmxvY2tpbmdTY3Jp
cHQuZWxlbWVudCA9IHNjcmlwdDsKKyAgICBpZiAoIXNjcmlwdC0+ZGlzcGF0Y2hCZWZvcmVMb2Fk
RXZlbnQoc3JjVmFsdWUpKSAvLyBQYXJ0IG9mIEhUTUw1PworICAgICAgICByZXR1cm47CisgICAg
Ly8gVGhpcyBzaG91bGQgY29ycmVjdGx5IHJldHVybiAwIGZvciBlbXB0eSBvciBpbnZhbGlkIHNy
Y1ZhbHVlcy4KKyAgICBDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCA9IG1fZG9jdW1lbnQtPmRv
Y0xvYWRlcigpLT5yZXF1ZXN0U2NyaXB0KHNyY1ZhbHVlLCB0b1NjcmlwdEVsZW1lbnQoc2NyaXB0
KS0+c2NyaXB0Q2hhcnNldCgpKTsKKyAgICBpZiAoIWNhY2hlZFNjcmlwdCkgeworICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOyAvLyBEaXNwYXRjaCBlcnJvciBldmVudC4KKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQgPSBjYWNo
ZWRTY3JpcHQ7CisgICAgLy8gTk9URTogVGhpcyBtYXkgY2F1c2UgaW1tZWRpYXRlIGV4ZWN1dGlv
biBvZiB0aGUgc2NyaXB0LgorICAgIGNhY2hlZFNjcmlwdC0+YWRkQ2xpZW50KG1fbG9hZE5vdGlm
aWVyKTsKK30KKwordm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6cnVuU2NyaXB0KEVsZW1lbnQqIHNj
cmlwdCkKK3sKKyAgICBBU1NFUlQoIW1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmVsZW1lbnQpOwor
ICAgIG1fc2NyaXB0TmVzdGluZ0xldmVsKys7CisgICAgLy8gQ2hlY2sgc2NyaXB0IHR5cGUgYW5k
IGxhbmd1YWdlLCBjdXJyZW50IGNvZGUgdXNlcyBTY3JpcHRFbGVtZW50OjpzaG91bGRFeGVjdXRl
QXNKYXZhU2NyaXB0KCksIGJ1dCB0aGF0IG1heSBub3QgYmUgSFRNTDUgY29tcGxpYW50LgorICAg
IG5vdEltcGxlbWVudGVkKCk7IC8vIGV2ZW50IGZvciBzdXBwb3J0CisKKyAgICBpZiAoc2NyaXB0
LT5oYXNBdHRyaWJ1dGUoc3JjQXR0cikpIHsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBkZWZl
ciBhbmQgYXN5bmMKKyAgICAgICAgcmVxdWVzdFNjcmlwdChzY3JpcHQpOworICAgIH0gZWxzZSBp
ZiAoIW1fZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKQorICAgICAgICBtX3BhcnNp
bmdCbG9ja2luZ1NjcmlwdC5lbGVtZW50ID0gc2NyaXB0OworICAgIGVsc2UgeworICAgICAgICBL
VVJMIGRvY3VtZW50VVJMID0gZnJhbWUoKSA/IGZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpIDog
S1VSTCgpOworICAgICAgICAvLyBGSVhNRTogTmVlZCBhIGxpbmUgbnVtYmVycyBpbXBsZW1lbmF0
aW9uLgorICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBTY3JpcHRTb3VyY2VD
b2RlKHNjcmlwdC0+dGV4dENvbnRlbnQoKSwgZG9jdW1lbnRVUkwsIDApOworICAgICAgICBmcmFt
ZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzb3VyY2VDb2RlKTsKKyAgICB9CisgICAgbV9z
Y3JpcHROZXN0aW5nTGV2ZWwtLTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUw1U2NyaXB0UnVubmVyLmggYi9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hMDcyYTcyZTdhNzI0MjZjNTM5NDEyZjZlZTQwMzUxOTJlNjQyNDZkCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmgKQEAgLTAsMCArMSw4
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgSFRNTDVTY3JpcHRSdW5uZXJfaAorI2RlZmluZSBIVE1MNVNjcmlwdFJ1bm5lcl9oCisK
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRSZXNv
dXJjZUNsaWVudDsKK2NsYXNzIENhY2hlZFNjcmlwdDsKK2NsYXNzIERvY3VtZW50OworY2xhc3Mg
RWxlbWVudDsKK2NsYXNzIEZyYW1lOworY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKKworY2xhc3Mg
SFRNTDVTY3JpcHRSdW5uZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIEhU
TUw1U2NyaXB0UnVubmVyKERvY3VtZW50KiwgQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKKyAgICB+
SFRNTDVTY3JpcHRSdW5uZXIoKTsKKworICAgIC8vIFByb2Nlc3NlcyB0aGUgcGFzc2VkIGluIHNj
cmlwdCBhbmQgYW55IHBlbmRpbmcgc2NyaXB0cyBpZiBwb3NzaWJsZS4KKyAgICBib29sIGV4ZWN1
dGVQZW5kaW5nU2NyaXB0cyhQYXNzUmVmUHRyPEVsZW1lbnQ+IHNjcmlwdFRvUHJvY2Vzcyk7Cisg
ICAgLy8gUHJvY2Vzc2VzIGFueSBwZW5kaW5nIHNjcmlwdHMuCisgICAgYm9vbCBleGVjdXRlU2Ny
aXB0c1dhaXRpbmdGb3JMb2FkKENhY2hlZFJlc291cmNlKik7CisgICAgYm9vbCBleGVjdXRlU2Ny
aXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpOworCitwcml2YXRlOgorICAgIHN0cnVjdCBQZW5k
aW5nU2NyaXB0IHsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CisgICAgICAgIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gY2FjaGVkU2NyaXB0OworICAgICAgICAv
LyBIVE1MNSBoYXMgYW4gaXNSZWFkeSBwYXJhbWV0ZXIsIGhvd2V2ZXIgaXNSZWFkeSBlbmRzIHVw
IGVxdWl2YWxlbnQgdG8KKyAgICAgICAgLy8gbV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9h
ZGVkKCkgJiYgY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpCisgICAgfTsKKworICAgIEZyYW1lKiBm
cmFtZSgpIGNvbnN0OworCisgICAgYm9vbCBleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygp
OworICAgIHZvaWQgZXhlY3V0ZVBlbmRpbmdTY3JpcHQoKTsKKworICAgIHZvaWQgcmVxdWVzdFNj
cmlwdChFbGVtZW50Kik7CisgICAgdm9pZCBydW5TY3JpcHQoRWxlbWVudCopOworCisgICAgYm9v
bCBpc1BlbmRpbmdTY3JpcHRSZWFkeShjb25zdCBQZW5kaW5nU2NyaXB0Jik7CisgICAgU2NyaXB0
U291cmNlQ29kZSBzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChjb25zdCBQZW5kaW5nU2NyaXB0Jiwg
Ym9vbCYgZXJyb3JPY2N1cnJlZCk7CisKKyAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICBD
YWNoZWRSZXNvdXJjZUNsaWVudCogbV9sb2FkTm90aWZpZXI7CisgICAgUGVuZGluZ1NjcmlwdCBt
X3BhcnNpbmdCbG9ja2luZ1NjcmlwdDsKKyAgICBzaXplX3QgbV9zY3JpcHROZXN0aW5nTGV2ZWw7
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5p
emVyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5jcHAKaW5kZXggNTA3ZDQ3NzVh
YzM3ODk3MmMxODQ0MTQ4M2U4MDQ2NzI1OGUxOTllYy4uMmZlOWE1NDBmOWM1NTFjZjc1MzQ4M2M5
Zjk1OWQ4NjE1MTU2YzI1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVy
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuY3BwCkBAIC0yNiw4ICsyNiwx
MiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUw1VG9rZW5pemVyLmgiCiAK
KyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTDVMZXhlci5oIgorI2luY2x1ZGUg
IkhUTUw1U2NyaXB0UnVubmVyLmgiCisjaW5jbHVkZSAiSFRNTDVUb2tlbi5oIgogI2luY2x1ZGUg
IkhUTUw1VHJlZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJOb2RlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIApAQCAtMzYsNiArNDAsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBIVE1MNVRva2VuaXplcjo6SFRNTDVUb2tlbml6ZXIoSFRN
TERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCiAgICAgOiBUb2tlbml6ZXIo
KQogICAgICwgbV9sZXhlcihuZXcgSFRNTDVMZXhlcikKKyAgICAsIG1fc2NyaXB0UnVubmVyKG5l
dyBIVE1MNVNjcmlwdFJ1bm5lcihkb2N1bWVudCwgdGhpcykpCiAgICAgLCBtX3RyZWVCdWlsZGVy
KG5ldyBIVE1MNVRyZWVCdWlsZGVyKG1fbGV4ZXIuZ2V0KCksIGRvY3VtZW50LCByZXBvcnRFcnJv
cnMpKQogewogICAgIGJlZ2luKCk7CkBAIC01MSwxNCArNTYsMjkgQEAgdm9pZCBIVE1MNVRva2Vu
aXplcjo6YmVnaW4oKQogCiB2b2lkIEhUTUw1VG9rZW5pemVyOjpwdW1wTGV4ZXIoKQogewotICAg
IHdoaWxlIChtX2xleGVyLT5uZXh0VG9rZW4obV9zb3VyY2UsIG1fdG9rZW4pKSB7Ci0gICAgICAg
IG1fdHJlZUJ1aWxkZXItPmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4obV90b2tlbik7Ci0gICAgICAg
IG1fdG9rZW4uY2xlYXIoKTsKKyAgICB3aGlsZSAoIW1fc291cmNlLmlzRW1wdHkoKSkgeworICAg
ICAgICBIVE1MNVRva2VuIHRva2VuOworICAgICAgICB3aGlsZSAoIW1fdHJlZUJ1aWxkZXItPmlz
UGF1c2VkKCkgJiYgbV9sZXhlci0+bmV4dFRva2VuKG1fc291cmNlLCB0b2tlbikpIHsKKyAgICAg
ICAgICAgIG1fdHJlZUJ1aWxkZXItPmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4odG9rZW4pOworICAg
ICAgICAgICAgdG9rZW4uY2xlYXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoZSBwYXJz
ZXIgd2lsbCBwYXVzZSBpdHNlbGYgd2hlbiB3YWl0aW5nIG9uIGEgc2NyaXB0IHRvIGxvYWQgb3Ig
cnVuLgorICAgICAgICAvLyBTY3JpcHRSdW5uZXIgZXhlY3V0ZXMgc2NyaXB0cyBhdCB0aGUgcmln
aHQgdGltZXMgYW5kIGhhbmRsZXMgcmVlbnRyYW5jeS4KKyAgICAgICAgYm9vbCBzaG91bGRDb250
aW51ZVBhcnNpbmcgPSBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZVBlbmRpbmdTY3JpcHRzKG1fdHJl
ZUJ1aWxkZXItPnRha2VTY3JpcHRUb1Byb2Nlc3MoKSk7CisgICAgICAgIGlmICghc2hvdWxkQ29u
dGludWVQYXJzaW5nKSB7CisgICAgICAgICAgICAvLyBBU1NFUlQobV9zb3VyY2UuaXNFbXB0eSgp
IHx8IG1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpOworICAgICAgICAgICAgLy8gRklYTUU6IHRo
ZSBzY3JpcHQgcnVubmVyIHNob3VsZCBlaXRoZXIgbWFrZSB0aGlzIGNhbGwgb3IgcmV0dXJuIGEg
c3BlY2lhbAorICAgICAgICAgICAgLy8gdmFsdWUgdG8gaW5kaWNhdGUgd2Ugc2hvdWxkIHBhdXNl
LgorICAgICAgICAgICAgbV90cmVlQnVpbGRlci0+c2V0UGF1c2VkKHRydWUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogfQogCiB2b2lkIEhUTUw1VG9rZW5pemVyOjp3
cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCkKIHsKKyAgICAvLyBGSVhN
RTogVGhpcyBkb2VzIG5vdCB5ZXQgY29ycmVjdGx5IGhhbmRsZSByZWVudHJhbnQgd3JpdGVzLgog
ICAgIG1fc291cmNlLmFwcGVuZChzb3VyY2UpOwogICAgIHB1bXBMZXhlcigpOwogfQpAQCAtNzcs
OCArOTcsMjggQEAgdm9pZCBIVE1MNVRva2VuaXplcjo6ZmluaXNoKCkKIAogYm9vbCBIVE1MNVRv
a2VuaXplcjo6aXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gRklYTUU6IElzIHRoaXMgcmlnaHQ/Cisg
ICAgcmV0dXJuIG1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCk7Cit9CisKK3ZvaWQgSFRNTDVUb2tl
bml6ZXI6OnJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbigpCit7CisgICAgLy8gRklY
TUU6IFRoaXMgaXMgdGhlIHdyb25nIHdyaXRlIGluIHRoZSBjYXNlIG9mIGRvY3VtZW50LndyaXRl
IHJlLWVudHJ5LgorICAgIHdyaXRlKFNlZ21lbnRlZFN0cmluZygpLCB0cnVlKTsKK30KKwordm9p
ZCBIVE1MNVRva2VuaXplcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJl
c291cmNlKQoreworICAgIGJvb2wgc2hvdWxkQ29udGludWVQYXJzaW5nID0gbV9zY3JpcHRSdW5u
ZXItPmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQoY2FjaGVkUmVzb3VyY2UpOworICAgIGlm
IChzaG91bGRDb250aW51ZVBhcnNpbmcpCisgICAgICAgIHJlc3VtZVBhcnNpbmdBZnRlclNjcmlw
dEV4ZWN1dGlvbigpOworfQorCit2b2lkIEhUTUw1VG9rZW5pemVyOjpleGVjdXRlU2NyaXB0c1dh
aXRpbmdGb3JTdHlsZXNoZWV0cygpCit7CisgICAgYm9vbCBzaG91bGRDb250aW51ZVBhcnNpbmcg
PSBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsK
KyAgICBpZiAoc2hvdWxkQ29udGludWVQYXJzaW5nKQorICAgICAgICByZXN1bWVQYXJzaW5nQWZ0
ZXJTY3JpcHRFeGVjdXRpb24oKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUw1VG9rZW5pemVyLmggYi9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuaAppbmRleCAzYjA0
MWIxNTBkZGJmNmNmNzk1NjBkNjlkOTZkYzc2ZTRhNzdlZDY3Li5hODQ1OGYzZThlMWU0MmE1ZDhm
ODc0M2ViYWI0NmRlYWVhMjI1YmNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVUb2tl
bml6ZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuaApAQCAtMzQsMTggKzM0
LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTERvY3VtZW50OwotY2xh
c3MgSFRNTDVUcmVlQnVpbGRlcjsKIGNsYXNzIEhUTUw1TGV4ZXI7CitjbGFzcyBIVE1MNVNjcmlw
dFJ1bm5lcjsKK2NsYXNzIEhUTUw1VHJlZUJ1aWxkZXI7CitjbGFzcyBIVE1MRG9jdW1lbnQ7CiAK
LS8vIEZJWE1FOiBUaGlzIGlzIHRoZSB3cm9uZyBsYXllciB0byBob29rIGluIHRoZSBuZXcgSFRN
TCA1IExleGVyLAotLy8gaG93ZXZlciBIVE1MVG9rZW5pemVyIGlzIHRvbyBsYXJnZSBhbmQgdG9v
IGZyYWdpbGUgb2YgYSBjbGFzcyB0byBoYWNrIGludG8uCi0vLyBFdmVudHVhbGx5IHdlIHNob3Vs
ZCBzcGxpdCBhbGwgb2YgdGhlIEhUTUwgbGV4ZXIgbG9naWMgb3V0IGZyb20gSFRNTFRva2VuaXpl
cgotLy8gYW5kIHRoZW4gc2hhcmUgbm9uLWxleGVyLXNwZWNpZmljIHRva2VuaXplciBsb2dpYyBi
ZXR3ZWVuIEhUTUw1IGFuZCB0aGUKLS8vIGxlZ2FjeSBXZWJLaXQgSFRNTCBsZXhlci4KLQotLy8g
RklYTUU6IFRoaXMgY2xhc3MgaXMgZmFyIGZyb20gY29tcGxldGUuCi1jbGFzcyBIVE1MNVRva2Vu
aXplciA6ICBwdWJsaWMgVG9rZW5pemVyLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewor
Ly8gRklYTUU6IFRoZSB3aG9sZSBUb2tlbml6ZXIgY2xhc3Mgc3lzdGVtIHNob3VsZCBiZSByZW5h
bWVkICJQYXJzZXIiCisvLyBvciAiUGFyc2VyQ29udHJvbGxlciIgYXMgdGhlIGpvYiBvZiB0aGlz
IGNsYXNzIGlzIHRvIGRyaXZlIHBhcnNpbmcgcHJvY2VzcworLy8gYnV0IGl0IGRvZXMgbm90IGl0
c2VsZiBUb2tlbml6ZS4KK2NsYXNzIEhUTUw1VG9rZW5pemVyIDogIHB1YmxpYyBUb2tlbml6ZXIs
IENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBIVE1MNVRva2VuaXplcihIVE1M
RG9jdW1lbnQqLCBib29sIHJlcG9ydEVycm9ycyk7CiAgICAgdmlydHVhbCB+SFRNTDVUb2tlbml6
ZXIoKTsKQEAgLTU1LDkgKzUyLDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kKCk7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpOwogICAgIHZpcnR1YWwgYm9vbCBpc1dhaXRpbmdG
b3JTY3JpcHRzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTY3JpcHRzV2FpdGlu
Z0ZvclN0eWxlc2hlZXRzKCk7CisKKyAgICAvLyBDYWNoZWRSZXNvdXJjZUNsaWVudAorICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwogCiBwcml2YXRlOgog
ICAgIHZvaWQgcHVtcExleGVyKCk7CisgICAgdm9pZCByZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRF
eGVjdXRpb24oKTsKIAogICAgIFNlZ21lbnRlZFN0cmluZyBtX3NvdXJjZTsKIApAQCAtNjUsNiAr
NjcsNyBAQCBwcml2YXRlOgogICAgIEhUTUw1VG9rZW4gbV90b2tlbjsKIAogICAgIE93blB0cjxI
VE1MNUxleGVyPiBtX2xleGVyOworICAgIE93blB0cjxIVE1MNVNjcmlwdFJ1bm5lcj4gbV9zY3Jp
cHRSdW5uZXI7CiAgICAgT3duUHRyPEhUTUw1VHJlZUJ1aWxkZXI+IG1fdHJlZUJ1aWxkZXI7CiB9
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAgYi9XZWJD
b3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAKaW5kZXggMmIxYjE3ODc1YWVjMGE4M2VmOGZj
YjAxNDZhMWY3OGFkNTY0MmYyNC4uNzU1OTA3OTA4NDgwYThkYzY0MmM0ZDAxYjE0NzgyNWRmNGEw
YTk3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUw1VHJlZUJ1aWxkZXIuaCIKIAotI2luY2x1
ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MNUxl
eGVyLmgiCiAjaW5jbHVkZSAiSFRNTDVUb2tlbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5o
IgpAQCAtNDMsNyArNDMsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIEhUTUw1VHJl
ZUJ1aWxkZXI6OkhUTUw1VHJlZUJ1aWxkZXIoSFRNTDVMZXhlciogbGV4ZXIsIEhUTUxEb2N1bWVu
dCogZG9jdW1lbnQsIGJvb2wgcmVwb3J0RXJyb3JzKQogICAgIDogbV9kb2N1bWVudChkb2N1bWVu
dCkKICAgICAsIG1fcmVwb3J0RXJyb3JzKHJlcG9ydEVycm9ycykKKyAgICAsIG1faXNQYXVzZWQo
ZmFsc2UpCiAgICAgLCBtX2xleGVyKGxleGVyKQorICAgICwgbV9pbnNlcnRpb25Nb2RlKEluaXRp
YWwpCisgICAgLCBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZShJbml0aWFsKQorICAgICwgbV9zZWNv
bmRhcnlJbnNlcnRpb25Nb2RlKEluaXRpYWwpCiAgICAgLCBtX2xlZ2FjeUhUTUxQYXJzZXIobmV3
IEhUTUxQYXJzZXIoZG9jdW1lbnQsIHJlcG9ydEVycm9ycykpCiB7CiB9CkBAIC05MywyMyArOTcs
MzQgQEAgc3RhdGljIHZvaWQgY29udmVydFRvT2xkU3R5bGUoSFRNTDVUb2tlbiYgdG9rZW4sIFRv
a2VuJiBvbGRTdHlsZVRva2VuKQogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBIVE1MNVRy
ZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcihIVE1MNVRva2VuJiB0b2tlbikKK3Zv
aWQgSFRNTDVUcmVlQnVpbGRlcjo6aGFuZGxlU2NyaXB0U3RhcnRUYWcoKQogewotICAgIGlmICh0
b2tlbi50eXBlKCkgPT0gSFRNTDVUb2tlbjo6U3RhcnRUYWcpIHsKLSAgICAgICAgLy8gVGhpcyB3
b3JrIGlzIHN1cHBvc2VkIHRvIGJlIGRvbmUgYnkgdGhlIHBhcnNlciwgYnV0Ci0gICAgICAgIC8v
IHdoZW4gdXNpbmcgdGhlIG9sZCBwYXJzZXIgZm9yIHdlIGhhdmUgdG8gZG8gdGhpcyBtYW51YWxs
eS4KLSAgICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBzY3JpcHRUYWcpCi0gICAgICAgICAgICBt
X2xleGVyLT5zZXRTdGF0ZShIVE1MNUxleGVyOjpTY3JpcHREYXRhU3RhdGUpOwotICAgICAgICBl
bHNlIGlmICh0b2tlbi5uYW1lKCkgPT0gdGV4dGFyZWFUYWcgfHwgdG9rZW4ubmFtZSgpID09IHRp
dGxlVGFnKQotICAgICAgICAgICAgbV9sZXhlci0+c2V0U3RhdGUoSFRNTDVMZXhlcjo6UkNEQVRB
U3RhdGUpOwotICAgICAgICBlbHNlIGlmICh0b2tlbi5uYW1lKCkgPT0gc3R5bGVUYWcgfHwgdG9r
ZW4ubmFtZSgpID09IGlmcmFtZVRhZwotICAgICAgICAgICAgICAgICB8fCB0b2tlbi5uYW1lKCkg
PT0geG1wVGFnIHx8IHRva2VuLm5hbWUoKSA9PSBub2VtYmVkVGFnKSB7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogbm9zY3JpcHQgYW5kIG5vZnJhbWVzIG1heSBjb25kaXRpb25hbGx5IGVudGVyIHRo
aXMgc3RhdGUgYXMgd2VsbC4KLSAgICAgICAgICAgIG1fbGV4ZXItPnNldFN0YXRlKEhUTUw1TGV4
ZXI6OlJBV1RFWFRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodG9rZW4ubmFtZSgpID09IHBs
YWludGV4dFRhZykKLSAgICAgICAgICAgIG1fbGV4ZXItPnNldFN0YXRlKEhUTUw1TGV4ZXI6OlBM
QUlOVEVYVFN0YXRlKTsKLSAgICB9CisgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gVGhlIEhUTUwg
ZnJnbWVudCBjYXNlPworICAgIG1fbGV4ZXItPnNldFN0YXRlKEhUTUw1TGV4ZXI6OlNjcmlwdERh
dGFTdGF0ZSk7CisgICAgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBtX2luc2VydGlvbk1vZGU7
CisgICAgbV9pbnNlcnRpb25Nb2RlID0gVGV4dDsKK30KKwordm9pZCBIVE1MNVRyZWVCdWlsZGVy
OjpoYW5kbGVTY3JpcHRFbmRUYWcoRWxlbWVudCogc2NyaXB0RWxlbWVudCkKK3sKKyAgICBBU1NF
UlQoIW1fc2NyaXB0VG9Qcm9jZXNzKTsgLy8gQ2FsbGVyIG5ldmVyIGNhbGxlZCB0YWtlU2NyaXB0
VG9Qcm9jZXNzIQorICAgIG1faW5zZXJ0aW9uTW9kZSA9IG1fb3JpZ2luYWxJbnNlcnRpb25Nb2Rl
OworICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIFNhdmUgaW5zZXJ0aW9uIHBvaW50PworCisgICAg
Ly8gUGF1c2Ugb3Vyc2VsdmVzIHNvIHRoYXQgcGFyc2luZyBzdG9wcyB1bnRpbCB0aGUgc2NyaXB0
IGNhbiBiZSBwcm9jZXNzZWQgYnkgdGhlIGNhbGxlci4KKyAgICBtX2lzUGF1c2VkID0gdHJ1ZTsK
KyAgICBtX3NjcmlwdFRvUHJvY2VzcyA9IHNjcmlwdEVsZW1lbnQ7Cit9CisKK1Bhc3NSZWZQdHI8
RWxlbWVudD4gSFRNTDVUcmVlQnVpbGRlcjo6dGFrZVNjcmlwdFRvUHJvY2VzcygpCit7CisgICAg
Ly8gVW5wYXVzZSBvdXJzZWx2ZXMsIGNhbGxlcnMgbWF5IHBhdXNlIHVzIGFnYWluIHdoZW4gcHJv
Y2Vzc2luZyB0aGUgc2NyaXB0LgorICAgIG1faXNQYXVzZWQgPSBmYWxzZTsKKyAgICByZXR1cm4g
bV9zY3JpcHRUb1Byb2Nlc3MucmVsZWFzZSgpOworfQogCitQYXNzUmVmUHRyPE5vZGU+IEhUTUw1
VHJlZUJ1aWxkZXI6OnBhc3NUb2tlblRvTGVnYWN5UGFyc2VyKEhUTUw1VG9rZW4mIHRva2VuKQor
ewogICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTDVUb2tlbjo6RE9DVFlQRSkgewogICAgICAg
ICBEb2N0eXBlVG9rZW4gZG9jdHlwZVRva2VuOwogICAgICAgICBkb2N0eXBlVG9rZW4ubV9uYW1l
LmFwcGVuZCh0b2tlbi5uYW1lKCkuY2hhcmFjdGVycygpLCB0b2tlbi5uYW1lKCkubGVuZ3RoKCkp
OwpAQCAtMTI0LDcgKzEzOSwzMSBAQCBQYXNzUmVmUHRyPE5vZGU+IEhUTUw1VHJlZUJ1aWxkZXI6
OnBhc3NUb2tlblRvTGVnYWN5UGFyc2VyKEhUTUw1VG9rZW4mIHRva2VuKQogICAgIFRva2VuIG9s
ZFN0eWxlVG9rZW47CiAgICAgY29udmVydFRvT2xkU3R5bGUodG9rZW4sIG9sZFN0eWxlVG9rZW4p
OwogCi0gICAgcmV0dXJuIG1fbGVnYWN5SFRNTFBhcnNlci0+cGFyc2VUb2tlbigmb2xkU3R5bGVU
b2tlbik7CisgICAgUmVmUHRyPE5vZGU+IHJlc3VsdCA9ICBtX2xlZ2FjeUhUTUxQYXJzZXItPnBh
cnNlVG9rZW4oJm9sZFN0eWxlVG9rZW4pOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTDVU
b2tlbjo6U3RhcnRUYWcpIHsKKyAgICAgICAgLy8gVGhpcyB3b3JrIGlzIHN1cHBvc2VkIHRvIGJl
IGRvbmUgYnkgdGhlIHBhcnNlciwgYnV0CisgICAgICAgIC8vIHdoZW4gdXNpbmcgdGhlIG9sZCBw
YXJzZXIgZm9yIHdlIGhhdmUgdG8gZG8gdGhpcyBtYW51YWxseS4KKyAgICAgICAgaWYgKHRva2Vu
Lm5hbWUoKSA9PSBzY3JpcHRUYWcpeworICAgICAgICAgICAgaGFuZGxlU2NyaXB0U3RhcnRUYWco
KTsKKyAgICAgICAgICAgIG1fbGFzdFNjcmlwdEVsZW1lbnQgPSBzdGF0aWNfcG9pbnRlcl9jYXN0
PEVsZW1lbnQ+KHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSBpZiAodG9rZW4ubmFtZSgpID09IHRl
eHRhcmVhVGFnIHx8IHRva2VuLm5hbWUoKSA9PSB0aXRsZVRhZykKKyAgICAgICAgICAgIG1fbGV4
ZXItPnNldFN0YXRlKEhUTUw1TGV4ZXI6OlJDREFUQVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
dG9rZW4ubmFtZSgpID09IHN0eWxlVGFnIHx8IHRva2VuLm5hbWUoKSA9PSBpZnJhbWVUYWcKKyAg
ICAgICAgICAgICAgICAgfHwgdG9rZW4ubmFtZSgpID09IHhtcFRhZyB8fCB0b2tlbi5uYW1lKCkg
PT0gbm9lbWJlZFRhZykgeworICAgICAgICAgICAgLy8gRklYTUU6IG5vc2NyaXB0IGFuZCBub2Zy
YW1lcyBtYXkgY29uZGl0aW9uYWxseSBlbnRlciB0aGlzIHN0YXRlIGFzIHdlbGwuCisgICAgICAg
ICAgICBtX2xleGVyLT5zZXRTdGF0ZShIVE1MNUxleGVyOjpSQVdURVhUU3RhdGUpOworICAgICAg
ICB9IGVsc2UgaWYgKHRva2VuLm5hbWUoKSA9PSBwbGFpbnRleHRUYWcpCisgICAgICAgICAgICBt
X2xleGVyLT5zZXRTdGF0ZShIVE1MNUxleGVyOjpQTEFJTlRFWFRTdGF0ZSk7CisgICAgfQorICAg
IGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTDVUb2tlbjo6RW5kVGFnKSB7CisgICAgICAgIGlmICh0
b2tlbi5uYW1lKCkgPT0gc2NyaXB0VGFnKSB7CisgICAgICAgICAgICBpZiAobV9sYXN0U2NyaXB0
RWxlbWVudCkgeworICAgICAgICAgICAgICAgIGhhbmRsZVNjcmlwdEVuZFRhZyhtX2xhc3RTY3Jp
cHRFbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX2xhc3RTY3JpcHRFbGVtZW50ID0g
MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlPiBIVE1MNVRyZWVCdWlsZGVyOjpjb25zdHJ1
Y3RUcmVlRnJvbVRva2VuKEhUTUw1VG9rZW4mIHRva2VuKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUw1VHJlZUJ1aWxkZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmgK
aW5kZXggMzVhZDBjOGE1MGQ0MTRkZWFkOWVhNTg3NmE1MTcyYTJiNDI2M2M5Yy4uYTUzNGEyZWM5
NGNjMThiN2NmOTljOWQ0YWEwZWUyZDE4ZDZjNzg4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUw1VHJlZUJ1aWxkZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5o
CkBAIC0yOSwxMCArMjksMTMgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBG
cmFtZTsKIGNsYXNzIEhUTUw1TGV4ZXI7CiBjbGFzcyBIVE1MNVRva2VuOwogY2xhc3MgSFRNTERv
Y3VtZW50OwpAQCAtNDQsMjMgKzQ3LDY1IEBAIHB1YmxpYzoKICAgICBIVE1MNVRyZWVCdWlsZGVy
KEhUTUw1TGV4ZXIqLCBIVE1MRG9jdW1lbnQqLCBib29sIHJlcG9ydEVycm9ycyk7CiAgICAgfkhU
TUw1VHJlZUJ1aWxkZXIoKTsKIAorICAgIHZvaWQgc2V0UGF1c2VkKGJvb2wgcGF1c2VkKSB7IG1f
aXNQYXVzZWQgPSBwYXVzZWQ7IH0KKyAgICBib29sIGlzUGF1c2VkKCkgeyByZXR1cm4gbV9pc1Bh
dXNlZDsgfQorCiAgICAgLy8gVGhlIHRva2VuIHJlYWxseSBzaG91bGQgYmUgcGFzc2VkIGFzIGEg
Y29uc3QmIHNpbmNlIGl0J3MgbmV2ZXIgbW9kaWZpZWQuCiAgICAgUGFzc1JlZlB0cjxOb2RlPiBj
b25zdHJ1Y3RUcmVlRnJvbVRva2VuKEhUTUw1VG9rZW4mKTsKKyAgICAvLyBNdXN0IGJlIGNhbGxl
ZCB3aGVuIHBhcnNlciBpcyBwYXVzZWQgYmVmb3JlIGNhbGxpbmcgdGhlIHBhcnNlciBhZ2Fpbi4K
KyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IHRha2VTY3JpcHRUb1Byb2Nlc3MoKTsKKworICAgIC8v
IERvbmUsIGNsb3NlIGFueSBvcGVuIHRhZ3MsIGV0Yy4KICAgICB2b2lkIGZpbmlzaGVkKCk7CiAK
IHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxOb2RlPiBwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcihI
VE1MNVRva2VuJik7CiAgICAgUGFzc1JlZlB0cjxOb2RlPiBwcm9jZXNzVG9rZW4oSFRNTDVUb2tl
biYsIFVDaGFyIGN1cnJlbnRDaGFyYWN0ZXIgPSAwKTsKKyAgICAKKyAgICB2b2lkIGhhbmRsZVNj
cmlwdFN0YXJ0VGFnKCk7CisgICAgdm9pZCBoYW5kbGVTY3JpcHRFbmRUYWcoRWxlbWVudCopOwog
Ci0gICAgLy8gV2UgY291bGQgZ3JhYiBtX2RvY3VtZW50IG9mZiB0aGUgbGV4ZXIgaWYgd2Ugd2Fu
dGVkIHRvIHNhdmUgc3BhY2UuCi0gICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgRG9jdW1l
bnQqIG1fZG9jdW1lbnQ7IC8vIFRoaXMgaXMgb25seSB1c2VkIGJ5IHRoZSBtX2xlZ2FjeVBhcnNl
ciBmb3Igbm93LgogICAgIGJvb2wgbV9yZXBvcnRFcnJvcnM7CisgICAgYm9vbCBtX2lzUGF1c2Vk
OwogICAgIC8vIEhUTUw1IHNwZWMgcmVxdWlyZXMgdGhhdCB3ZSBiZSBhYmxlIHRvIGNoYW5nZSB0
aGUgc3RhdGUgb2YgdGhlIGxleGVyCiAgICAgLy8gZnJvbSB3aXRoaW4gcGFyc2VyIGFjdGlvbnMu
CiAgICAgSFRNTDVMZXhlciogbV9sZXhlcjsKIAorICAgIGVudW0gSW5zZXJ0aW9uTW9kZSB7Cisg
ICAgICAgIEluaXRpYWwsCisgICAgICAgIEJlZm9yZUhUTUwsCisgICAgICAgIEJlZm9yZUhlYWQs
CisgICAgICAgIEluSGVhZCwKKyAgICAgICAgSW5IZWFkTm9zY3JpcHQsCisgICAgICAgIEFmdGVy
SGVhZCwKKyAgICAgICAgSW5Cb2R5LAorICAgICAgICBUZXh0LAorICAgICAgICBJblRhYmxlLAor
ICAgICAgICBJblRhYmxlVGV4dCwKKyAgICAgICAgSW5DYXB0aW9uLAorICAgICAgICBJbkNvbHVt
bkdyb3VwLAorICAgICAgICBJblRhYmxlQm9keSwKKyAgICAgICAgSW5Sb3csCisgICAgICAgIElu
Q2VsbCwKKyAgICAgICAgSW5TZWxlY3QsCisgICAgICAgIEluU2VsZWN0SW5UYWJsZSwKKyAgICAg
ICAgSW5Gb3JlaWduQ29udGVudCwKKyAgICAgICAgQWZ0ZXJCb2R5LAorICAgICAgICBJbkZyYW1l
c2V0LAorICAgICAgICBBZnRlckZyYW1lc2V0LAorICAgICAgICBBZnRlckFmdGVyQm9keSwKKyAg
ICAgICAgQWZ0ZXJBZnRlckZyYW1lc2V0LAorICAgIH07CisKKyAgICBJbnNlcnRpb25Nb2RlIG1f
aW5zZXJ0aW9uTW9kZTsKKyAgICBJbnNlcnRpb25Nb2RlIG1fb3JpZ2luYWxJbnNlcnRpb25Nb2Rl
OworICAgIEluc2VydGlvbk1vZGUgbV9zZWNvbmRhcnlJbnNlcnRpb25Nb2RlOworCiAgICAgLy8g
V2UncmUgcmUtdXNpbmcgbG9naWMgZnJvbSB0aGUgb2xkIEhUTUxQYXJzZXIgd2hpbGUgdGhpcyBj
bGFzcyBpcyBiZWluZyB3cml0dGVuLgogICAgIE93blB0cjxIVE1MUGFyc2VyPiBtX2xlZ2FjeUhU
TUxQYXJzZXI7CisgICAgUmVmUHRyPEVsZW1lbnQ+IG1fbGFzdFNjcmlwdEVsZW1lbnQ7ICAvLyBG
SVhNRTogVGhpcyBpcyBhIGhhY2sgZm9yIDxzY3JpcHQ+IHN1cHBvcnQuCisgICAgUmVmUHRyPEVs
ZW1lbnQ+IG1fc2NyaXB0VG9Qcm9jZXNzOyAvLyBTZXQgdG8gYSA8c2NyaXB0PiB0YWcgd2hpY2gg
bmVlZHMgcHJvY2Vzc2luZy4KIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57196</attachid>
            <date>2010-05-26 22:56:39 -0700</date>
            <delta_ts>2010-05-26 23:38:10 -0700</delta_ts>
            <desc>for adam to look at while I clean it up a bit yet</desc>
            <filename>bug-39716-20100526225638.patch</filename>
            <type>text/plain</type>
            <size>33089</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGM0MmVkNDA2MjUwYTcxNzBhNzQwZmRhNTU4NjY3Mjg4ZGZlOGUyMC4uYmJjMzRmMzRiOTU0MWJm
MDlkYTUzMmE1NDBlMjc3YzFjOTU0Y2Q5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wNS0yNiAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVhY2ggdGhlIEhUTUw1IHBhcnNlciBob3cgdG8gaGFuZGxl
IGV4dGVybmFsIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM5NzE2CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIu
aDoKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4pOgorICAgICAgICAqIGRvbS9TY3Jp
cHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OkhUTUw1U2NyaXB0UnVubmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpmcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3JpcHRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVTY3JpcHRFcnJvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0
UnVubmVyOjpleGVjdXRlRXh0ZXJuYWxTY3JpcHRzSWZSZWFkeSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MNVNjcmlwdFJ1bm5lcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTDVTY3JpcHRSdW5uZXI6OnJlcXVlc3RTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TDVTY3JpcHRSdW5uZXI6OnJ1blNjcmlwdCk6CisgICAgICAgICogaHRtbC9IVE1MNVNjcmlwdFJ1
bm5lci5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUw1VG9rZW5pemVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpIVE1MNVRva2VuaXplcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVU
b2tlbml6ZXI6OmlzV2FpdGluZ0ZvclNjcmlwdHMpOgorICAgICAgICAqIGh0bWwvSFRNTDVUb2tl
bml6ZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6SFRNTDVUcmVlQnVpbGRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNVRyZWVCdWlsZGVyOjpoYW5kbGVTY3JpcHRTdGFydFRhZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MNVRyZWVCdWlsZGVyOjpoYW5kbGVTY3JpcHRFbmRUYWcpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6dGFrZVNjcmlwdFRvUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MNVRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcik6
CisgICAgICAgICogaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MNVRyZWVCdWlsZGVyOjpzZXRQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUcmVl
QnVpbGRlcjo6aXNQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6
KToKKwogMjAxMC0wNS0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2MDI2Mi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGI4ODliOTFhMDk0ZjYwZGExYTRhOGQxMTQyMzNi
NWFjNWUxMzEzZS4uY2ViYWM0YWQxOTgxMzhlY2RlNjcxMzAwMWUyZWJmNGNhNTEzMjVlNyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MTYsNiArMjkx
Niw4IEBACiAJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODMzQzgwQTBBMkNGMjU2
MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwICovOyB9OwogCQlBODMzQzgwRDBBMkNGMjU2MDBENTc2
NjQgLyogWE1MTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4MzNDODBCMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5oICovOyB9OwogCQlB
ODMzQzg1MjBBMkNGNTI4MDBENTc2NjQgLyogU1ZHRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxRTYwOUQxNTA4RDAw
MEU2MUQ3IC8qIFNWR0VsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKKwkJQTgzQjNBRjAxMUFERUZG
NTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4M0IzQUVFMTFBREVGRjUwMDQ1ODgwOSAvKiBIVE1M
NVNjcmlwdFJ1bm5lci5jcHAgKi87IH07CisJCUE4M0IzQUYxMTFBREVGRjUwMDQ1ODgwOSAvKiBI
VE1MNVNjcmlwdFJ1bm5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTgzQjNBRUYxMUFERUZGNTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0UnVubmVyLmgg
Ki87IH07CiAJCUE4M0I3OEZDMENDQUZGMTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlVXJpRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgz
Qjc4RjIwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VVcmlFbGVtZW50LmggKi87IH07
CiAJCUE4M0I3OEZEMENDQUZGMTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODNCNzhG
MzBDQ0FGRjE1MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwICovOyB9Owog
CQlBODNCNzhGRTBDQ0FGRjE1MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZVNyY0VsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4M0I3OEY0MEND
QUZGMTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlU3JjRWxlbWVudC5oICovOyB9OwpAQCAtODM1
Nyw2ICs4MzU5LDggQEAKIAkJQTgzM0M3RjYwQTJDRjFEODAwRDU3NjY0IC8qIHhtbGF0dHJzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSB4bWxhdHRycy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTgzM0M4MEEwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxOYW1lcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MzNDODBCMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MTmFtZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgzQjNBRUUxMUFERUZGNTAwNDU4ODA5IC8qIEhUTUw1
U2NyaXB0UnVubmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhU
TUw1U2NyaXB0UnVubmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgzQjNB
RUYxMUFERUZGNTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0UnVubmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUw1U2NyaXB0UnVubmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE4M0I3OEYyMENDQUZGMTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlVXJp
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR0ZvbnRGYWNl
VXJpRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODNCNzhGMzBDQ0FG
RjE1MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODNCNzhGNDBDQ0FGRjE1MDAwQjA4MjUgLyogSlNT
VkdGb250RmFjZVNyY0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTVkdGb250RmFjZVNyY0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzMzI2LDEwICsxMzMzMCwxMCBAQAogCQk5M0VFQzFFQzA5QzI4Nzc3MDBDNTE1RDEgLyogaHRt
bCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDk0ODRG
QUUxMDJDRjAxRTAwMTg3REQzIC8qIGNhbnZhcyAqLywKIAkJCQkyRUFGQUYwQjEwRTJBRjJEMDA3
RUQzRDYgLyogQmxvYi5jcHAgKi8sCiAJCQkJMkVBRkFGMEMxMEUyQUYyRDAwN0VEM0Q2IC8qIEJs
b2IuaCAqLywKIAkJCQkyRUFGQUYwRDEwRTJBRjJEMDA3RUQzRDYgLyogQmxvYi5pZGwgKi8sCisJ
CQkJNDk0ODRGQUUxMDJDRjAxRTAwMTg3REQzIC8qIGNhbnZhcyAqLywKIAkJCQk5M0M0NDFFRDBG
ODEzQTFBMDBDMUE2MzQgLyogQ29sbGVjdGlvbkNhY2hlLmNwcCAqLywKIAkJCQk5M0M0NDFFRTBG
ODEzQTFBMDBDMUE2MzQgLyogQ29sbGVjdGlvbkNhY2hlLmggKi8sCiAJCQkJOTNDNDQxRkYwRjgx
M0FFMTAwQzFBNjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi8sCkBAIC0xMzM3MCw2ICsxMzM3NCw4
IEBACiAJCQkJQTgxMzZEMzYwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5oICovLAog
CQkJCTk3RThCMzU0MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmNwcCAqLywKIAkJCQk5
N0U4QjM1NTExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTDVMZXhlci5oICovLAorCQkJCUE4M0IzQUVF
MTFBREVGRjUwMDQ1ODgwOSAvKiBIVE1MNVNjcmlwdFJ1bm5lci5jcHAgKi8sCisJCQkJQTgzQjNB
RUYxMUFERUZGNTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0UnVubmVyLmggKi8sCiAJCQkJOTdFOEIz
QzIxMUEyODkwODAwMTY5NDA5IC8qIEhUTUw1VG9rZW4uaCAqLywKIAkJCQlBODcxMDM4ODExQTI5
NDcwMDBEQkQ1MEUgLyogSFRNTDVUb2tlbml6ZXIuY3BwICovLAogCQkJCUE4NzEwMzg5MTFBMjk0
NzAwMERCRDUwRSAvKiBIVE1MNVRva2VuaXplci5oICovLApAQCAtMTkzNjMsNiArMTkzNjksNyBA
QAogCQkJCUI2NjkzRUVDMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjY2OTNFRUUxMUFENjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3Jl
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjY2OTNFRjMxMUFENjQ4NjAwM0YyNzcwIC8q
IEpTSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBODNCM0FGMTEx
QURFRkY1MDA0NTg4MDkgLyogSFRNTDVTY3JpcHRSdW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
MjE2NTcsNiArMjE2NjQsNyBAQAogCQkJCUI2NjkzRUVEMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJP
YmplY3RTdG9yZVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjY2OTNFRjIxMUFENjQ4
NjAwM0YyNzcwIC8qIEpTSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUI2MjdGQjJEMTFBRDc0MzUwMEU5N0I3MiAvKiBJREJEYXRhYmFzZUltcGwuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTgzQjNBRjAxMUFERUZGNTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0UnVu
bmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRTb3VyY2VQcm92aWRlci5oCmluZGV4IDhlNjliNmJhZGZhZjkxMGQ0NTY0MjVhYzAwMWVh
MGUwZTJmNTY1NjguLjgwOWE0ODgwNmE1NWNmMTVlMzY5ZjA0NzMyNzU0YjQ3N2Q1ZDdiYjMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIu
aAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0Lmgi
CisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiIC8vIGZvciBzdHJpbmdUb1VTdHJpbmcKICNpbmNs
dWRlICJTY3JpcHRTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VDb2Rl
Lmg+CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggYjQ1N2Y1ZDM5Njk0ZWNiYWFlYzQ5YTliYWZk
Y2I2OTQwMmU5MGY4ZS4uMGFjMDg0NmExMjQyMTA3YWYwNWU0Yzg5NTg0ODhhOWE0NDRhYjM5MiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTk3LDE1ICs5Nyw2IEBAIHZvaWQgU2NyaXB0RWxlbWVu
dDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKFNjcmlwdEVsZW1lbnREYXRhJiBkYXRhLCBjb25zdCBT
dHJpbmcmCiAgICAgLy8gYWxsb3cgZHluYW1pYyBsb2FkaW5nIGxhdGVyLgogICAgIGlmIChzb3Vy
Y2VVcmwuaXNFbXB0eSgpICYmIGRhdGEuc2NyaXB0Q29udGVudCgpLmlzRW1wdHkoKSkKICAgICAg
ICAgZGF0YS5zZXRDcmVhdGVkQnlQYXJzZXIoZmFsc2UpOwotICAgIC8vIEhUTUw1IFJlcXVpcmVz
IHRoYXQgd2UgZXhlY3V0ZSBzY3JpcHRzIGZyb20gdGhlIHBhcnNlciwgbm90IGZyb20KLSAgICAv
LyBIVE1MVG9rZW5pemVyIGxpa2Ugd2UgY3VycmVudGx5IGRvLgotICAgIC8vIEZJWE1FOiBJdCBt
YXkgbm90IGJlIHNhZmUgdG8gZXhlY3V0ZSBzY3JpcHRzIGZyb20gaGVyZSBpZgotICAgIC8vIEhU
TUxQYXJzZXI6OnBvcE9uZUJsb2NrQ29tbW9uIGlzIG5vdCByZWVudHJhbnQuCi0gICAgZWxzZSBp
ZiAodXNlSFRNTDVQYXJzZXIoZGF0YS5lbGVtZW50KCktPmRvY3VtZW50KCkpKSB7Ci0gICAgICAg
IC8vIFRoaXMgaXMgY3VycmVudGx5IGFuIGluY29tcGxldGUgaW1wbGVtZW50YXRpb24sIHNlZToK
LSAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjcGFyc2luZy1tYWluLWluY2RhdGEKLSAg
ICAgICAgZGF0YS5ldmFsdWF0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKGRhdGEuc2NyaXB0Q29u
dGVudCgpLCBkYXRhLmVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+dXJsKCkpKTsgLy8gRklYTUU6IFBy
b3ZpZGUgYSByZWFsIHN0YXJ0aW5nIGxpbmUgbnVtYmVyIGhlcmUKLSAgICB9CiB9CiAKIHZvaWQg
U2NyaXB0RWxlbWVudDo6aGFuZGxlU291cmNlQXR0cmlidXRlKFNjcmlwdEVsZW1lbnREYXRhJiBk
YXRhLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVybCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Nj
cmlwdEVsZW1lbnQuaCBiL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAppbmRleCBmYWQ2ZmU3
MjU2NmEyNTIxYjZjMzU3YzYyNmI0ZmNjZTM5NDM0YjY5Li44Y2M4NGZjZDQ5ZWViZThhMmE2NjY1
ZTUyNTlkZWE4ZTA4MjA0NmMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50
LmgKKysrIGIvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCkBAIC05NCw5ICs5NCw5IEBAIHBy
aXZhdGU6CiAgICAgU2NyaXB0RWxlbWVudCogbV9zY3JpcHRFbGVtZW50OwogICAgIEVsZW1lbnQq
IG1fZWxlbWVudDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2Fj
aGVkU2NyaXB0OwotICAgIGJvb2wgbV9jcmVhdGVkQnlQYXJzZXI7CisgICAgYm9vbCBtX2NyZWF0
ZWRCeVBhcnNlcjsgLy8gSFRNTDU6ICJwYXJzZXItaW5zZXJ0ZWQiCiAgICAgYm9vbCBtX3JlcXVl
c3RlZDsKLSAgICBib29sIG1fZXZhbHVhdGVkOworICAgIGJvb2wgbV9ldmFsdWF0ZWQ7IC8vIEhU
TUw1OiAiYWxyZWFkeSBzdGFydGVkIgogICAgIGJvb2wgbV9maXJlZExvYWQ7CiB9OwogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwIGIvV2ViQ29yZS9odG1s
L0hUTUw1U2NyaXB0UnVubmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDE5MGQ5MWZlZDg3NTU4MTJmYTFm
NGFmYjAwMWI0MTE2MDE1NjFjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1
U2NyaXB0UnVubmVyLmNwcApAQCAtMCwwICsxLDIyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJIVE1MNVNjcmlwdFJ1bm5lci5oIgorCisjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVk
ZSAiQ2FjaGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCisjaW5jbHVkZSAiRWxl
bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNj
cmlwdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKworSFRNTDVTY3JpcHRS
dW5uZXI6OkhUTUw1U2NyaXB0UnVubmVyKERvY3VtZW50KiBkb2N1bWVudCwgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQqIGxvYWROb3RpZmllcikKKyAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCisgICAg
LCBtX2xvYWROb3RpZmllcihsb2FkTm90aWZpZXIpCisgICAgLCBtX3NjcmlwdE5lc3RpbmdMZXZl
bCgwKQoreworfQorCitIVE1MNVNjcmlwdFJ1bm5lcjo6fkhUTUw1U2NyaXB0UnVubmVyKCkKK3sK
KyAgICAvLyBJZiB0aGUgcGFnZSBjb21wbGV0ZWQgbG9hZGluZyB3ZSBzaG91bGQgaGF2ZSBydW4g
YWxsIHNjcmlwdHMuCisgICAgLy8gVGhpcyBBU1NFUlQgbWF5IG5vdCBob2xkIGluIHRoZSBjYXNl
IG9mIG5hdmlnYXRpb24gYmVmb3JlIGNvbXBsZXRlIGxvYWQuCisgICAgQVNTRVJUKCFtX3BhcnNp
bmdCbG9ja2luZ1NjcmlwdC5lbGVtZW50KTsKK30KKworCitGcmFtZSogSFRNTDVTY3JpcHRSdW5u
ZXI6OmZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kb2N1bWVudC0+ZnJhbWUoKTsKK30K
KworaW5saW5lIFBhc3NSZWZQdHI8RXZlbnQ+IGNyZWF0ZVNjcmlwdExvYWRFdmVudCgpCit7Cisg
ICAgcmV0dXJuIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZh
bHNlKTsKK30KKworaW5saW5lIFBhc3NSZWZQdHI8RXZlbnQ+IGNyZWF0ZVNjcmlwdEVycm9yRXZl
bnQoKQoreworICAgIHJldHVybiBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50
LCB0cnVlLCBmYWxzZSk7Cit9CisKK1NjcmlwdFNvdXJjZUNvZGUgSFRNTDVTY3JpcHRSdW5uZXI6
OnNvdXJjZUZyb21QZW5kaW5nU2NyaXB0KGNvbnN0IFBlbmRpbmdTY3JpcHQmIHNjcmlwdCwgYm9v
bCYgZXJyb3JPY2N1cnJlZCkKK3sKKyAgICBpZiAoc2NyaXB0LmNhY2hlZFNjcmlwdCkgeworICAg
ICAgICBlcnJvck9jY3VycmVkID0gc2NyaXB0LmNhY2hlZFNjcmlwdC0+ZXJyb3JPY2N1cnJlZCgp
OworICAgICAgICBBU1NFUlQoc2NyaXB0LmNhY2hlZFNjcmlwdC0+aXNMb2FkZWQoKSk7CisgICAg
ICAgIHJldHVybiBTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5jYWNoZWRTY3JpcHQuZ2V0KCkpOwor
ICAgIH0KKyAgICBlcnJvck9jY3VycmVkID0gZmFsc2U7CisgICAgLy8gRklYTUU6IExpbmUgbnVt
YmVycyBhcmUgd3JvbmcuCisgICAgS1VSTCBkb2N1bWVudFVSTCA9IGZyYW1lKCkgPyBmcmFtZSgp
LT5kb2N1bWVudCgpLT51cmwoKSA6IEtVUkwoKTsKKyAgICByZXR1cm4gU2NyaXB0U291cmNlQ29k
ZShzY3JpcHQuZWxlbWVudC0+dGV4dENvbnRlbnQoKSwgZG9jdW1lbnRVUkwpOworfQorCitib29s
IEhUTUw1U2NyaXB0UnVubmVyOjppc1BlbmRpbmdTY3JpcHRSZWFkeShjb25zdCBQZW5kaW5nU2Ny
aXB0JiBzY3JpcHQpCit7CisgICAgLy8gRklYTUU6IFdlIGNhbid0IGJsb2NrIGZvciBzdHlsZXNo
ZWV0cyB5ZXQsIGJlY2F1c2UgdGhhdCBjYXVzZXMgdXMgdG8gcmUtZW50ZXIKKyAgICAvLyB0aGUg
cGFyc2VyIGZyb20gZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMgd2hlbiBwYXJz
aW5nIHN0eWxlIHRhZ3MuCisgICAgLy8gaWYgKCFtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNM
b2FkZWQoKSkKKyAgICAvLyAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChzY3JpcHQuY2FjaGVk
U2NyaXB0ICYmICFzY3JpcHQuY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgSFRNTDVTY3JpcHRSdW5uZXI6
OmV4ZWN1dGVQZW5kaW5nU2NyaXB0KCkKK3sKKyAgICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xl
dmVsKTsKKyAgICAvLyBGSVhNRTogV2UgY2FuJ3QgYmxvY2sgZm9yIHN0eWxlc2hlZXRzIHlldCwg
YmVjYXVzZSB0aGF0IGNhdXNlcyB1cyB0byByZS1lbnRlcgorICAgIC8vIHRoZSBwYXJzZXIgZnJv
bSBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyB3aGVuIHBhcnNpbmcgc3R5bGUg
dGFncy4KKyAgICAvLyBBU1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkp
OworICAgIGJvb2wgZXJyb3JPY2N1cnJlZCA9IGZhbHNlOworICAgIEFTU0VSVChpc1BlbmRpbmdT
Y3JpcHRSZWFkeShtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCkpOworICAgIFNjcmlwdFNvdXJjZUNv
ZGUgc291cmNlQ29kZSA9IHNvdXJjZUZyb21QZW5kaW5nU2NyaXB0KG1fcGFyc2luZ0Jsb2NraW5n
U2NyaXB0LCBlcnJvck9jY3VycmVkKTsKKworICAgIFJlZlB0cjxFbGVtZW50PiBzY3JpcHRFbGVt
ZW50ID0gbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuZWxlbWVudC5yZWxlYXNlKCk7CisgICAgQ2Fj
aGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQgPSBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRT
Y3JpcHQuZ2V0KCk7CisgICAgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0ID0g
MDsKKworICAgIC8vIHJlbW92ZUNsaWVudCBiZWZvcmUgZXhlY3V0aW9uIHRvIHByZXZlbnQgcmVj
dXJzaW9uIGlmIHRoZSBzY3JpcHQgcmVsb2FkcyBpdHNlbGYuCisgICAgaWYgKGNhY2hlZFNjcmlw
dCkKKyAgICAgICAgY2FjaGVkU2NyaXB0LT5yZW1vdmVDbGllbnQobV9sb2FkTm90aWZpZXIpOwor
CisgICAgbV9zY3JpcHROZXN0aW5nTGV2ZWwrKzsKKyAgICBpZiAoZXJyb3JPY2N1cnJlZCkKKyAg
ICAgICAgc2NyaXB0RWxlbWVudC0+ZGlzcGF0Y2hFdmVudChjcmVhdGVTY3JpcHRFcnJvckV2ZW50
KCkpOworICAgIGVsc2UgeworICAgICAgICBpZiAodG9TY3JpcHRFbGVtZW50KHNjcmlwdEVsZW1l
bnQuZ2V0KCkpLT5zaG91bGRFeGVjdXRlQXNKYXZhU2NyaXB0KCkpCisgICAgICAgICAgICBmcmFt
ZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzb3VyY2VDb2RlKTsKKyAgICAgICAgc2NyaXB0
RWxlbWVudC0+ZGlzcGF0Y2hFdmVudChjcmVhdGVTY3JpcHRMb2FkRXZlbnQoKSk7CisgICAgfQor
ICAgIG1fc2NyaXB0TmVzdGluZ0xldmVsLS07CisgICAgQVNTRVJUKCFtX3NjcmlwdE5lc3RpbmdM
ZXZlbCk7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG1hdGNoIDEwLjIuNS4xMSAiQW4g
ZW5kIHRhZyB3aG9zZSB0YWcgbmFtZSBpcyAnc2NyaXB0JyIKKy8vIFNjcmlwdCBoYW5kbGluZyBs
aXZlcyBvdXRzaWRlIHRoZSB0cmVlIGJ1aWxkZXIgdG8ga2VlcCB0aGUgZWFjaCBjbGFzcyBzaW1w
bGUuCitib29sIEhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdHMoUGFzc1Jl
ZlB0cjxFbGVtZW50PiBzY3JpcHRFbGVtZW50KQoreworICAgIC8vIEZJWE1FOiBJZiBzY3JpcHRp
bmcgaXMgZGlzYWJsZWQsIGFsd2F5cyBqdXN0IHJldHVybiB0cnVlOworCisgICAgaWYgKHNjcmlw
dEVsZW1lbnQpIHsKKyAgICAgICAgLy8gVHJ5IHRvIGV4ZWN1dGUgdGhlIHNjcmlwdCBnaXZlbiB0
byB1cy4KKyAgICAgICAgcnVuU2NyaXB0KHNjcmlwdEVsZW1lbnQuZ2V0KCkpOworICAgICAgICBp
ZiAobV9zY3JpcHROZXN0aW5nTGV2ZWwpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIERv
bid0IGNvbnRpbnVlIHBhcnNpbmcuCisgICAgICAgIGlmICghZXhlY3V0ZVBhcnNpbmdCbG9ja2lu
Z1NjcmlwdHMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOyAvLyBSZXN0b3JlIGluc2VydGlvbiBwb2ludD8KKyAgICAgICAgLy8gRklYTUU6
IEhhbmRsZSByZS1lbnRyYW50IHNjcmlwdHMgYW5kIG1fcGVuZGluZ1BhcnNpbmdCbG9ja2luU2Ny
aXB0LgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSB3ZXJlIG5v
dCBjYWxsZWQgd2l0aCBhIHNjcmlwdCwgdGhlbiBjaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBhbnkK
KyAgICAvLyBwZW5kaW5nIHNjcmlwdHMgdG8gcnVuIChhcyB0aGlzIGlzIHRoZSBlbmQgb2YgdGhl
IHRva2VuIHN0cmVhbSkuCisgICAgLy8gRklYTUU6IFJ1biBkZWZlcnJlZCBzY3JpcHRzLgorICAg
IC8vIE90aGVyd2lzZSwgcmV0dXJuIGZhbHNlIGFuZCBzdG9wIHBhcnNpbmcuCisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlUGFyc2luZ0Jsb2Nr
aW5nU2NyaXB0cygpCit7CisgICAgd2hpbGUgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmVsZW1l
bnQpIHsKKyAgICAgICAgLy8gV2Ugb25seSByZWFsbHkgbmVlZCB0byBjaGVjayBvbmNlLgorICAg
ICAgICBpZiAoIWlzUGVuZGluZ1NjcmlwdFJlYWR5KG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZXhlY3V0ZVBlbmRpbmdTY3JpcHQo
KTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSFRNTDVTY3JpcHRSdW5uZXI6
OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqKQoreworICAgIEFT
U0VSVChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5lbGVtZW50KTsKKyAgICBBU1NFUlQobV9wYXJz
aW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpKTsKKyAgICByZXR1cm4g
ZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsKK30KKworYm9vbCBIVE1MNVNjcmlwdFJ1
bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKQoreworICAgIEFTU0VS
VChtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSk7CisgICAgLy8gSWYgd2UgZG9u
J3QgYWN0dWFsbHkgaGF2ZSBhbnl0aGluZyB0byBleGVjdXRlLCB3ZSB3ZXJlbid0IGJsb2NrZWQs
IHRlbGwgdGhlIGNhbGxlciBub3QgdG8gYm90aGVyIHJlc3RhcnRpbmcgcGFyc2luZy4KKyAgICBp
ZiAobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiBleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygpOworfQorCit2b2lk
IEhUTUw1U2NyaXB0UnVubmVyOjpyZXF1ZXN0U2NyaXB0KEVsZW1lbnQqIHNjcmlwdCkKK3sKKyAg
ICBBU1NFUlQoIW1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmVsZW1lbnQpOworICAgIEF0b21pY1N0
cmluZyBzcmNWYWx1ZSA9IHNjcmlwdC0+Z2V0QXR0cmlidXRlKHNyY0F0dHIpOworICAgIC8vIEZJ
WE1FOiBXZSBuZWVkIHRvIHJlc29sdmUgdGhlIHVybCByZWxhdGl2ZSB0byB0aGUgZWxlbWVudC4K
KyAgICBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5lbGVtZW50ID0gc2NyaXB0OworICAgIGlmICgh
c2NyaXB0LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVudChzcmNWYWx1ZSkpIC8vIFBhcnQgb2YgSFRN
TDU/CisgICAgICAgIHJldHVybjsKKyAgICAvLyBUaGlzIHNob3VsZCBjb3JyZWN0bHkgcmV0dXJu
IDAgZm9yIGVtcHR5IG9yIGludmFsaWQgc3JjVmFsdWVzLgorICAgIENhY2hlZFNjcmlwdCogY2Fj
aGVkU2NyaXB0ID0gbV9kb2N1bWVudC0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQoc3JjVmFs
dWUsIHRvU2NyaXB0RWxlbWVudChzY3JpcHQpLT5zY3JpcHRDaGFyc2V0KCkpOworICAgIGlmICgh
Y2FjaGVkU2NyaXB0KSB7CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIERpc3BhdGNoIGVy
cm9yIGV2ZW50LgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcGFyc2luZ0Jsb2NraW5n
U2NyaXB0LmNhY2hlZFNjcmlwdCA9IGNhY2hlZFNjcmlwdDsKKyAgICAvLyBOT1RFOiBUaGlzIG1h
eSBjYXVzZSBpbW1lZGlhdGUgZXhlY3V0aW9uIG9mIHRoZSBzY3JpcHQuCisgICAgY2FjaGVkU2Ny
aXB0LT5hZGRDbGllbnQobV9sb2FkTm90aWZpZXIpOworfQorCit2b2lkIEhUTUw1U2NyaXB0UnVu
bmVyOjpydW5TY3JpcHQoRWxlbWVudCogc2NyaXB0KQoreworICAgIEFTU0VSVCghbV9wYXJzaW5n
QmxvY2tpbmdTY3JpcHQuZWxlbWVudCk7CisgICAgbV9zY3JpcHROZXN0aW5nTGV2ZWwrKzsKKyAg
ICAvLyBDaGVjayBzY3JpcHQgdHlwZSBhbmQgbGFuZ3VhZ2UsIGN1cnJlbnQgY29kZSB1c2VzIFNj
cmlwdEVsZW1lbnQ6OnNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSwgYnV0IHRoYXQgbWF5IG5v
dCBiZSBIVE1MNSBjb21wbGlhbnQuCisgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gZXZlbnQgZm9y
IHN1cHBvcnQKKworICAgIGlmIChzY3JpcHQtPmhhc0F0dHJpYnV0ZShzcmNBdHRyKSkgeworICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIGRlZmVyIGFuZCBhc3luYworICAgICAgICByZXF1ZXN0U2Ny
aXB0KHNjcmlwdCk7CisgICAgfSBlbHNlIGlmICghbV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRz
TG9hZGVkKCkpIHsKKyAgICAgICAgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuZWxlbWVudCA9IHNj
cmlwdDsKKyAgICB9IGVsc2UgeworICAgICAgICBLVVJMIGRvY3VtZW50VVJMID0gZnJhbWUoKSA/
IGZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpIDogS1VSTCgpOworICAgICAgICAvLyBGSVhNRTog
TmVlZCBhIGxpbmUgbnVtYmVycyBpbXBsZW1lbmF0aW9uLgorICAgICAgICBTY3JpcHRTb3VyY2VD
b2RlIHNvdXJjZUNvZGUgPSBTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC0+dGV4dENvbnRlbnQoKSwg
ZG9jdW1lbnRVUkwsIDApOworICAgICAgICBmcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlw
dChzb3VyY2VDb2RlKTsKKyAgICB9CisgICAgbV9zY3JpcHROZXN0aW5nTGV2ZWwtLTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmggYi9XZWJDb3Jl
L2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDcyYTcyZTdhNzI0MjZjNTM5
NDEyZjZlZTQwMzUxOTJlNjQyNDZkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUw1U2NyaXB0UnVubmVyLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSFRNTDVTY3JpcHRSdW5uZXJfaAor
I2RlZmluZSBIVE1MNVNjcmlwdFJ1bm5lcl9oCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNs
aWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKK2NsYXNzIENhY2hlZFNj
cmlwdDsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRWxlbWVudDsKK2NsYXNzIEZyYW1lOworY2xh
c3MgU2NyaXB0U291cmNlQ29kZTsKKworY2xhc3MgSFRNTDVTY3JpcHRSdW5uZXIgOiBwdWJsaWMg
Tm9uY29weWFibGUgeworcHVibGljOgorICAgIEhUTUw1U2NyaXB0UnVubmVyKERvY3VtZW50Kiwg
Q2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKKyAgICB+SFRNTDVTY3JpcHRSdW5uZXIoKTsKKworICAg
IC8vIFByb2Nlc3NlcyB0aGUgcGFzc2VkIGluIHNjcmlwdCBhbmQgYW55IHBlbmRpbmcgc2NyaXB0
cyBpZiBwb3NzaWJsZS4KKyAgICBib29sIGV4ZWN1dGVQZW5kaW5nU2NyaXB0cyhQYXNzUmVmUHRy
PEVsZW1lbnQ+IHNjcmlwdFRvUHJvY2Vzcyk7CisgICAgLy8gUHJvY2Vzc2VzIGFueSBwZW5kaW5n
IHNjcmlwdHMuCisgICAgYm9vbCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKENhY2hlZFJl
c291cmNlKik7CisgICAgYm9vbCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygp
OworCitwcml2YXRlOgorICAgIHN0cnVjdCBQZW5kaW5nU2NyaXB0IHsKKyAgICAgICAgUmVmUHRy
PEVsZW1lbnQ+IGVsZW1lbnQ7CisgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNj
cmlwdD4gY2FjaGVkU2NyaXB0OworICAgICAgICAvLyBIVE1MNSBoYXMgYW4gaXNSZWFkeSBwYXJh
bWV0ZXIsIGhvd2V2ZXIgaXNSZWFkeSBlbmRzIHVwIGVxdWl2YWxlbnQgdG8KKyAgICAgICAgLy8g
bV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkgJiYgY2FjaGVkU2NyaXB0LT5pc0xv
YWRlZCgpCisgICAgfTsKKworICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OworCisgICAgYm9vbCBl
eGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygpOworICAgIHZvaWQgZXhlY3V0ZVBlbmRpbmdT
Y3JpcHQoKTsKKworICAgIHZvaWQgcmVxdWVzdFNjcmlwdChFbGVtZW50Kik7CisgICAgdm9pZCBy
dW5TY3JpcHQoRWxlbWVudCopOworCisgICAgYm9vbCBpc1BlbmRpbmdTY3JpcHRSZWFkeShjb25z
dCBQZW5kaW5nU2NyaXB0Jik7CisgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VGcm9tUGVuZGlu
Z1NjcmlwdChjb25zdCBQZW5kaW5nU2NyaXB0JiwgYm9vbCYgZXJyb3JPY2N1cnJlZCk7CisKKyAg
ICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVudCogbV9sb2Fk
Tm90aWZpZXI7CisgICAgUGVuZGluZ1NjcmlwdCBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdDsKKyAg
ICBzaXplX3QgbV9zY3JpcHROZXN0aW5nTGV2ZWw7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1M
NVRva2VuaXplci5jcHAKaW5kZXggNTA3ZDQ3NzVhYzM3ODk3MmMxODQ0MTQ4M2U4MDQ2NzI1OGUx
OTllYy4uNjI1ZGFkMTU2N2QzYzYwNjMwOTNlNWU4OWVmYjlmOTczYzQ2MzU4MiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TDVUb2tlbml6ZXIuY3BwCkBAIC0yNiw4ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkhUTUw1VG9rZW5pemVyLmgiCiAKKyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTDVMZXhlci5oIgorI2luY2x1ZGUgIkhUTUw1U2NyaXB0UnVubmVyLmgiCisjaW5j
bHVkZSAiSFRNTDVUb2tlbi5oIgogI2luY2x1ZGUgIkhUTUw1VHJlZUJ1aWxkZXIuaCIKKyNpbmNs
dWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKIApAQCAtMzYsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBIVE1M
NVRva2VuaXplcjo6SFRNTDVUb2tlbml6ZXIoSFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBy
ZXBvcnRFcnJvcnMpCiAgICAgOiBUb2tlbml6ZXIoKQogICAgICwgbV9sZXhlcihuZXcgSFRNTDVM
ZXhlcikKKyAgICAsIG1fc2NyaXB0UnVubmVyKG5ldyBIVE1MNVNjcmlwdFJ1bm5lcihkb2N1bWVu
dCwgdGhpcykpCiAgICAgLCBtX3RyZWVCdWlsZGVyKG5ldyBIVE1MNVRyZWVCdWlsZGVyKG1fbGV4
ZXIuZ2V0KCksIGRvY3VtZW50LCByZXBvcnRFcnJvcnMpKQogewogICAgIGJlZ2luKCk7CkBAIC01
MSwzNCArNTYsODQgQEAgdm9pZCBIVE1MNVRva2VuaXplcjo6YmVnaW4oKQogCiB2b2lkIEhUTUw1
VG9rZW5pemVyOjpwdW1wTGV4ZXIoKQogeworICAgIEFTU0VSVCghbV90cmVlQnVpbGRlci0+aXNQ
YXVzZWQoKSk7CiAgICAgd2hpbGUgKG1fbGV4ZXItPm5leHRUb2tlbihtX3NvdXJjZSwgbV90b2tl
bikpIHsKICAgICAgICAgbV90cmVlQnVpbGRlci0+Y29uc3RydWN0VHJlZUZyb21Ub2tlbihtX3Rv
a2VuKTsKICAgICAgICAgbV90b2tlbi5jbGVhcigpOworCisgICAgICAgIGlmICghbV90cmVlQnVp
bGRlci0+aXNQYXVzZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIFRo
ZSBwYXJzZXIgd2lsbCBwYXVzZSBpdHNlbGYgd2hlbiB3YWl0aW5nIG9uIGEgc2NyaXB0IHRvIGxv
YWQgb3IgcnVuLgorICAgICAgICAvLyBTY3JpcHRSdW5uZXIgZXhlY3V0ZXMgc2NyaXB0cyBhdCB0
aGUgcmlnaHQgdGltZXMgYW5kIGhhbmRsZXMgcmVlbnRyYW5jeS4KKyAgICAgICAgYm9vbCBzaG91
bGRDb250aW51ZVBhcnNpbmcgPSBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZVBlbmRpbmdTY3JpcHRz
KG1fdHJlZUJ1aWxkZXItPnRha2VTY3JpcHRUb1Byb2Nlc3MoKSk7CisgICAgICAgIGlmICghc2hv
dWxkQ29udGludWVQYXJzaW5nKSB7CisgICAgICAgICAgICAvLyBBU1NFUlQobV9zb3VyY2UuaXNF
bXB0eSgpIHx8IG1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpOworICAgICAgICAgICAgLy8gRklY
TUU6IHRoZSBzY3JpcHQgcnVubmVyIHNob3VsZCBlaXRoZXIgbWFrZSB0aGlzIGNhbGwgb3IgcmV0
dXJuIGEgc3BlY2lhbAorICAgICAgICAgICAgLy8gdmFsdWUgdG8gaW5kaWNhdGUgd2Ugc2hvdWxk
IHBhdXNlLgorICAgICAgICAgICAgbV90cmVlQnVpbGRlci0+c2V0UGF1c2VkKHRydWUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogfQogCiB2b2lkIEhUTUw1VG9rZW5p
emVyOjp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCkKIHsKKyAgICAv
LyBGSVhNRTogVGhpcyBkb2VzIG5vdCB5ZXQgY29ycmVjdGx5IGhhbmRsZSByZWVudHJhbnQgd3Jp
dGVzLgogICAgIG1fc291cmNlLmFwcGVuZChzb3VyY2UpOwotICAgIHB1bXBMZXhlcigpOworICAg
IGlmICghbV90cmVlQnVpbGRlci0+aXNQYXVzZWQoKSkKKyAgICAgICAgcHVtcExleGVyKCk7CiB9
CiAKIHZvaWQgSFRNTDVUb2tlbml6ZXI6OmVuZCgpCiB7Ci0gICAgbV9zb3VyY2UuY2xvc2UoKTsK
LSAgICBwdW1wTGV4ZXIoKTsKKyAgICBpZiAoIW1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpCisg
ICAgICAgIHB1bXBMZXhlcigpOwogICAgIG1fdHJlZUJ1aWxkZXItPmZpbmlzaGVkKCk7CiB9CiAK
IHZvaWQgSFRNTDVUb2tlbml6ZXI6OmZpbmlzaCgpCiB7Ci0gICAgZW5kKCk7CisgICAgLy8gZmlu
aXNoKCkgaW5kaWNhdGVzIHdlIHdpbGwgbm90IHJlY2VpdmUgYW55IG1vcmUgZGF0YS4gSWYgd2Ug
YXJlIHdhaXRpbmcgb24KKyAgICAvLyBhbiBleHRlcm5hbCBzY3JpcHQgdG8gbG9hZCwgd2UgY2Fu
J3QgZmluaXNoIHBhcnNpbmcgcXVpdGUgeWV0LgorICAgIG1fc291cmNlLmNsb3NlKCk7CisgICAg
aWYgKCFtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKQorICAgICAgICBlbmQoKTsKIH0KIAogYm9v
bCBIVE1MNVRva2VuaXplcjo6aXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0CiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gRklYTUU6IElzIHRoaXMg
cmlnaHQ/CisgICAgcmV0dXJuIG1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCk7Cit9CisKK3ZvaWQg
SFRNTDVUb2tlbml6ZXI6OnJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbigpCit7Cisg
ICAgQVNTRVJUKCFtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKTsKKyAgICAvLyBGSVhNRTogVGhp
cyBpcyB0aGUgd3Jvbmcgd3JpdGUgaW4gdGhlIGNhc2Ugb2YgZG9jdW1lbnQud3JpdGUgcmUtZW50
cnkuCisgICAgcHVtcExleGVyKCk7CisgICAgaWYgKG1fc291cmNlLmlzRW1wdHkoKSAmJiBtX3Nv
dXJjZS5pc0Nsb3NlZCgpKQorICAgICAgICBlbmQoKTsgLy8gVGhlIGRvY3VtZW50IGFscmVhZHkg
ZmluaXNoZWQgcGFyc2luZyB3ZSB3ZXJlIGp1c3Qgd2FpdGluZyBvbiBzY3JpcHRzIHdoZW4gZmlu
aXNoZWQoKSB3YXMgY2FsbGVkLgorfQorCit2b2lkIEhUTUw1VG9rZW5pemVyOjpub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCit7CisgICAgYm9vbCBzaG91bGRD
b250aW51ZVBhcnNpbmcgPSBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9y
TG9hZChjYWNoZWRSZXNvdXJjZSk7CisgICAgaWYgKHNob3VsZENvbnRpbnVlUGFyc2luZykgewor
ICAgICAgICBtX3RyZWVCdWlsZGVyLT5zZXRQYXVzZWQoZmFsc2UpOworICAgICAgICByZXN1bWVQ
YXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKTsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTDVUb2tl
bml6ZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkKK3sKKyAgICAvLyBG
SVhNRTogV2UgY2FuJ3QgYmxvY2sgZm9yIHN0eWxlc2hlZXRzIHlldCwgYmVjYXVzZSB0aGF0IGNh
dXNlcyB1cyB0byByZS1lbnRlcgorICAgIC8vIHRoZSBwYXJzZXIgZnJvbSBleGVjdXRlU2NyaXB0
c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyB3aGVuIHBhcnNpbmcgc3R5bGUgdGFncy4KKy8vICAgIGJv
b2wgc2hvdWxkQ29udGludWVQYXJzaW5nID0gbV9zY3JpcHRSdW5uZXItPmV4ZWN1dGVTY3JpcHRz
V2FpdGluZ0ZvclN0eWxlc2hlZXRzKCk7CisvLyAgICBpZiAoc2hvdWxkQ29udGludWVQYXJzaW5n
KSB7CisvLyAgICAgICAgbV90cmVlQnVpbGRlci0+c2V0UGF1c2VkKGZhbHNlKTsKKy8vICAgICAg
ICByZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKTsKKy8vICAgIH0KIH0KIAogfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmggYi9XZWJDb3JlL2h0bWwv
SFRNTDVUb2tlbml6ZXIuaAppbmRleCAzYjA0MWIxNTBkZGJmNmNmNzk1NjBkNjlkOTZkYzc2ZTRh
NzdlZDY3Li5hODQ1OGYzZThlMWU0MmE1ZDhmODc0M2ViYWI0NmRlYWVhMjI1YmNiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TDVUb2tlbml6ZXIuaApAQCAtMzQsMTggKzM0LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgSFRNTERvY3VtZW50OwotY2xhc3MgSFRNTDVUcmVlQnVpbGRlcjsKIGNsYXNzIEhU
TUw1TGV4ZXI7CitjbGFzcyBIVE1MNVNjcmlwdFJ1bm5lcjsKK2NsYXNzIEhUTUw1VHJlZUJ1aWxk
ZXI7CitjbGFzcyBIVE1MRG9jdW1lbnQ7CiAKLS8vIEZJWE1FOiBUaGlzIGlzIHRoZSB3cm9uZyBs
YXllciB0byBob29rIGluIHRoZSBuZXcgSFRNTCA1IExleGVyLAotLy8gaG93ZXZlciBIVE1MVG9r
ZW5pemVyIGlzIHRvbyBsYXJnZSBhbmQgdG9vIGZyYWdpbGUgb2YgYSBjbGFzcyB0byBoYWNrIGlu
dG8uCi0vLyBFdmVudHVhbGx5IHdlIHNob3VsZCBzcGxpdCBhbGwgb2YgdGhlIEhUTUwgbGV4ZXIg
bG9naWMgb3V0IGZyb20gSFRNTFRva2VuaXplcgotLy8gYW5kIHRoZW4gc2hhcmUgbm9uLWxleGVy
LXNwZWNpZmljIHRva2VuaXplciBsb2dpYyBiZXR3ZWVuIEhUTUw1IGFuZCB0aGUKLS8vIGxlZ2Fj
eSBXZWJLaXQgSFRNTCBsZXhlci4KLQotLy8gRklYTUU6IFRoaXMgY2xhc3MgaXMgZmFyIGZyb20g
Y29tcGxldGUuCi1jbGFzcyBIVE1MNVRva2VuaXplciA6ICBwdWJsaWMgVG9rZW5pemVyLCBwdWJs
aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworLy8gRklYTUU6IFRoZSB3aG9sZSBUb2tlbml6ZXIg
Y2xhc3Mgc3lzdGVtIHNob3VsZCBiZSByZW5hbWVkICJQYXJzZXIiCisvLyBvciAiUGFyc2VyQ29u
dHJvbGxlciIgYXMgdGhlIGpvYiBvZiB0aGlzIGNsYXNzIGlzIHRvIGRyaXZlIHBhcnNpbmcgcHJv
Y2VzcworLy8gYnV0IGl0IGRvZXMgbm90IGl0c2VsZiBUb2tlbml6ZS4KK2NsYXNzIEhUTUw1VG9r
ZW5pemVyIDogIHB1YmxpYyBUb2tlbml6ZXIsIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICBIVE1MNVRva2VuaXplcihIVE1MRG9jdW1lbnQqLCBib29sIHJlcG9ydEVycm9ycyk7
CiAgICAgdmlydHVhbCB+SFRNTDVUb2tlbml6ZXIoKTsKQEAgLTU1LDkgKzUyLDE0IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpOwog
ICAgIHZpcnR1YWwgYm9vbCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCk7CisKKyAgICAvLyBD
YWNoZWRSZXNvdXJjZUNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSopOwogCiBwcml2YXRlOgogICAgIHZvaWQgcHVtcExleGVyKCk7CisgICAgdm9p
ZCByZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKTsKIAogICAgIFNlZ21lbnRlZFN0
cmluZyBtX3NvdXJjZTsKIApAQCAtNjUsNiArNjcsNyBAQCBwcml2YXRlOgogICAgIEhUTUw1VG9r
ZW4gbV90b2tlbjsKIAogICAgIE93blB0cjxIVE1MNUxleGVyPiBtX2xleGVyOworICAgIE93blB0
cjxIVE1MNVNjcmlwdFJ1bm5lcj4gbV9zY3JpcHRSdW5uZXI7CiAgICAgT3duUHRyPEhUTUw1VHJl
ZUJ1aWxkZXI+IG1fdHJlZUJ1aWxkZXI7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTDVUcmVlQnVpbGRlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAK
aW5kZXggMmIxYjE3ODc1YWVjMGE4M2VmOGZjYjAxNDZhMWY3OGFkNTY0MmYyNC4uZjAzZTA5NzFm
N2E4NmNlN2Y2YjdhMjYxMTM2MDkyOTgwZDY1ZmVhNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUw1VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVy
LmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhU
TUw1VHJlZUJ1aWxkZXIuaCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MNUxleGVyLmgiCiAjaW5jbHVkZSAiSFRNTDVUb2tlbi5o
IgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgpAQCAtNDMsNiArNDMsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogSFRNTDVUcmVlQnVpbGRlcjo6SFRNTDVUcmVlQnVpbGRlcihIVE1M
NUxleGVyKiBsZXhlciwgSFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMp
CiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9yZXBvcnRFcnJvcnMocmVwb3J0
RXJyb3JzKQorICAgICwgbV9pc1BhdXNlZChmYWxzZSkKICAgICAsIG1fbGV4ZXIobGV4ZXIpCiAg
ICAgLCBtX2xlZ2FjeUhUTUxQYXJzZXIobmV3IEhUTUxQYXJzZXIoZG9jdW1lbnQsIHJlcG9ydEVy
cm9ycykpCiB7CkBAIC05MywyMyArOTQsMzIgQEAgc3RhdGljIHZvaWQgY29udmVydFRvT2xkU3R5
bGUoSFRNTDVUb2tlbiYgdG9rZW4sIFRva2VuJiBvbGRTdHlsZVRva2VuKQogICAgIH0KIH0KIAot
UGFzc1JlZlB0cjxOb2RlPiBIVE1MNVRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNl
cihIVE1MNVRva2VuJiB0b2tlbikKK3ZvaWQgSFRNTDVUcmVlQnVpbGRlcjo6aGFuZGxlU2NyaXB0
U3RhcnRUYWcoKQogewotICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTDVUb2tlbjo6U3RhcnRU
YWcpIHsKLSAgICAgICAgLy8gVGhpcyB3b3JrIGlzIHN1cHBvc2VkIHRvIGJlIGRvbmUgYnkgdGhl
IHBhcnNlciwgYnV0Ci0gICAgICAgIC8vIHdoZW4gdXNpbmcgdGhlIG9sZCBwYXJzZXIgZm9yIHdl
IGhhdmUgdG8gZG8gdGhpcyBtYW51YWxseS4KLSAgICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBz
Y3JpcHRUYWcpCi0gICAgICAgICAgICBtX2xleGVyLT5zZXRTdGF0ZShIVE1MNUxleGVyOjpTY3Jp
cHREYXRhU3RhdGUpOwotICAgICAgICBlbHNlIGlmICh0b2tlbi5uYW1lKCkgPT0gdGV4dGFyZWFU
YWcgfHwgdG9rZW4ubmFtZSgpID09IHRpdGxlVGFnKQotICAgICAgICAgICAgbV9sZXhlci0+c2V0
U3RhdGUoSFRNTDVMZXhlcjo6UkNEQVRBU3RhdGUpOwotICAgICAgICBlbHNlIGlmICh0b2tlbi5u
YW1lKCkgPT0gc3R5bGVUYWcgfHwgdG9rZW4ubmFtZSgpID09IGlmcmFtZVRhZwotICAgICAgICAg
ICAgICAgICB8fCB0b2tlbi5uYW1lKCkgPT0geG1wVGFnIHx8IHRva2VuLm5hbWUoKSA9PSBub2Vt
YmVkVGFnKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogbm9zY3JpcHQgYW5kIG5vZnJhbWVzIG1h
eSBjb25kaXRpb25hbGx5IGVudGVyIHRoaXMgc3RhdGUgYXMgd2VsbC4KLSAgICAgICAgICAgIG1f
bGV4ZXItPnNldFN0YXRlKEhUTUw1TGV4ZXI6OlJBV1RFWFRTdGF0ZSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAodG9rZW4ubmFtZSgpID09IHBsYWludGV4dFRhZykKLSAgICAgICAgICAgIG1fbGV4ZXIt
PnNldFN0YXRlKEhUTUw1TGV4ZXI6OlBMQUlOVEVYVFN0YXRlKTsKLSAgICB9CisgICAgbm90SW1w
bGVtZW50ZWQoKTsgLy8gVGhlIEhUTUwgZnJnbWVudCBjYXNlPworICAgIG1fbGV4ZXItPnNldFN0
YXRlKEhUTUw1TGV4ZXI6OlNjcmlwdERhdGFTdGF0ZSk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsg
Ly8gU2F2ZSBpbnNlcnRpb24gbW9kZS4KK30KKwordm9pZCBIVE1MNVRyZWVCdWlsZGVyOjpoYW5k
bGVTY3JpcHRFbmRUYWcoRWxlbWVudCogc2NyaXB0RWxlbWVudCkKK3sKKyAgICBBU1NFUlQoIW1f
c2NyaXB0VG9Qcm9jZXNzKTsgLy8gQ2FsbGVyIG5ldmVyIGNhbGxlZCB0YWtlU2NyaXB0VG9Qcm9j
ZXNzIQorICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIFNhdmUgaW5zZXJ0aW9uIG1vZGUgYW5kIGlu
c2VydGlvbiBwb2ludD8KKworICAgIC8vIFBhdXNlIG91cnNlbHZlcyBzbyB0aGF0IHBhcnNpbmcg
c3RvcHMgdW50aWwgdGhlIHNjcmlwdCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IHRoZSBjYWxsZXIuCisg
ICAgbV9pc1BhdXNlZCA9IHRydWU7CisgICAgbV9zY3JpcHRUb1Byb2Nlc3MgPSBzY3JpcHRFbGVt
ZW50OworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUw1VHJlZUJ1aWxkZXI6OnRha2VTY3Jp
cHRUb1Byb2Nlc3MoKQoreworICAgIC8vIFVucGF1c2Ugb3Vyc2VsdmVzLCBjYWxsZXJzIG1heSBw
YXVzZSB1cyBhZ2FpbiB3aGVuIHByb2Nlc3NpbmcgdGhlIHNjcmlwdC4KKyAgICBtX2lzUGF1c2Vk
ID0gZmFsc2U7CisgICAgcmV0dXJuIG1fc2NyaXB0VG9Qcm9jZXNzLnJlbGVhc2UoKTsKK30KIAor
UGFzc1JlZlB0cjxOb2RlPiBIVE1MNVRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNl
cihIVE1MNVRva2VuJiB0b2tlbikKK3sKICAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUw1VG9r
ZW46OkRPQ1RZUEUpIHsKICAgICAgICAgRG9jdHlwZVRva2VuIGRvY3R5cGVUb2tlbjsKICAgICAg
ICAgZG9jdHlwZVRva2VuLm1fbmFtZS5hcHBlbmQodG9rZW4ubmFtZSgpLmNoYXJhY3RlcnMoKSwg
dG9rZW4ubmFtZSgpLmxlbmd0aCgpKTsKQEAgLTEyNCw3ICsxMzQsMzEgQEAgUGFzc1JlZlB0cjxO
b2RlPiBIVE1MNVRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcihIVE1MNVRva2Vu
JiB0b2tlbikKICAgICBUb2tlbiBvbGRTdHlsZVRva2VuOwogICAgIGNvbnZlcnRUb09sZFN0eWxl
KHRva2VuLCBvbGRTdHlsZVRva2VuKTsKIAotICAgIHJldHVybiBtX2xlZ2FjeUhUTUxQYXJzZXIt
PnBhcnNlVG9rZW4oJm9sZFN0eWxlVG9rZW4pOworICAgIFJlZlB0cjxOb2RlPiByZXN1bHQgPSAg
bV9sZWdhY3lIVE1MUGFyc2VyLT5wYXJzZVRva2VuKCZvbGRTdHlsZVRva2VuKTsKKyAgICBpZiAo
dG9rZW4udHlwZSgpID09IEhUTUw1VG9rZW46OlN0YXJ0VGFnKSB7CisgICAgICAgIC8vIFRoaXMg
d29yayBpcyBzdXBwb3NlZCB0byBiZSBkb25lIGJ5IHRoZSBwYXJzZXIsIGJ1dAorICAgICAgICAv
LyB3aGVuIHVzaW5nIHRoZSBvbGQgcGFyc2VyIGZvciB3ZSBoYXZlIHRvIGRvIHRoaXMgbWFudWFs
bHkuCisgICAgICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gc2NyaXB0VGFnKXsKKyAgICAgICAgICAg
IGhhbmRsZVNjcmlwdFN0YXJ0VGFnKCk7CisgICAgICAgICAgICBtX2xhc3RTY3JpcHRFbGVtZW50
ID0gc3RhdGljX3BvaW50ZXJfY2FzdDxFbGVtZW50PihyZXN1bHQpOworICAgICAgICB9IGVsc2Ug
aWYgKHRva2VuLm5hbWUoKSA9PSB0ZXh0YXJlYVRhZyB8fCB0b2tlbi5uYW1lKCkgPT0gdGl0bGVU
YWcpCisgICAgICAgICAgICBtX2xleGVyLT5zZXRTdGF0ZShIVE1MNUxleGVyOjpSQ0RBVEFTdGF0
ZSk7CisgICAgICAgIGVsc2UgaWYgKHRva2VuLm5hbWUoKSA9PSBzdHlsZVRhZyB8fCB0b2tlbi5u
YW1lKCkgPT0gaWZyYW1lVGFnCisgICAgICAgICAgICAgICAgIHx8IHRva2VuLm5hbWUoKSA9PSB4
bXBUYWcgfHwgdG9rZW4ubmFtZSgpID09IG5vZW1iZWRUYWcpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBub3NjcmlwdCBhbmQgbm9mcmFtZXMgbWF5IGNvbmRpdGlvbmFsbHkgZW50ZXIgdGhpcyBz
dGF0ZSBhcyB3ZWxsLgorICAgICAgICAgICAgbV9sZXhlci0+c2V0U3RhdGUoSFRNTDVMZXhlcjo6
UkFXVEVYVFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmICh0b2tlbi5uYW1lKCkgPT0gcGxhaW50
ZXh0VGFnKQorICAgICAgICAgICAgbV9sZXhlci0+c2V0U3RhdGUoSFRNTDVMZXhlcjo6UExBSU5U
RVhUU3RhdGUpOworICAgIH0KKyAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUw1VG9rZW46OkVu
ZFRhZykgeworICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IHNjcmlwdFRhZykgeworICAgICAg
ICAgICAgaWYgKG1fbGFzdFNjcmlwdEVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVT
Y3JpcHRFbmRUYWcobV9sYXN0U2NyaXB0RWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICAgICAg
bV9sYXN0U2NyaXB0RWxlbWVudCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8Tm9kZT4gSFRN
TDVUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihIVE1MNVRva2VuJiB0b2tlbikK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmggYi9XZWJDb3JlL2h0
bWwvSFRNTDVUcmVlQnVpbGRlci5oCmluZGV4IDM1YWQwYzhhNTBkNDE0ZGVhZDllYTU4NzZhNTE3
MmEyYjQyNjNjOWMuLjI5NWRkOWJkNGE0NTM4ZDlhNmQxYWY2NGJhMGFiYTk5NThlYTE5ZDYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmgKKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUw1VHJlZUJ1aWxkZXIuaApAQCAtMjksMTAgKzI5LDEzIEBACiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi91bmlj
b2RlL1VuaWNvZGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7Citj
bGFzcyBFbGVtZW50OworY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1MNUxleGVyOwogY2xhc3MgSFRN
TDVUb2tlbjsKIGNsYXNzIEhUTUxEb2N1bWVudDsKQEAgLTQ0LDIzICs0NywzNSBAQCBwdWJsaWM6
CiAgICAgSFRNTDVUcmVlQnVpbGRlcihIVE1MNUxleGVyKiwgSFRNTERvY3VtZW50KiwgYm9vbCBy
ZXBvcnRFcnJvcnMpOwogICAgIH5IVE1MNVRyZWVCdWlsZGVyKCk7CiAKKyAgICB2b2lkIHNldFBh
dXNlZChib29sIHBhdXNlZCkgeyBtX2lzUGF1c2VkID0gcGF1c2VkOyB9CisgICAgYm9vbCBpc1Bh
dXNlZCgpIHsgcmV0dXJuIG1faXNQYXVzZWQ7IH0KKwogICAgIC8vIFRoZSB0b2tlbiByZWFsbHkg
c2hvdWxkIGJlIHBhc3NlZCBhcyBhIGNvbnN0JiBzaW5jZSBpdCdzIG5ldmVyIG1vZGlmaWVkLgog
ICAgIFBhc3NSZWZQdHI8Tm9kZT4gY29uc3RydWN0VHJlZUZyb21Ub2tlbihIVE1MNVRva2VuJik7
CisgICAgLy8gTXVzdCBiZSBjYWxsZWQgd2hlbiBwYXJzZXIgaXMgcGF1c2VkIGJlZm9yZSBjYWxs
aW5nIHRoZSBwYXJzZXIgYWdhaW4uCisgICAgUGFzc1JlZlB0cjxFbGVtZW50PiB0YWtlU2NyaXB0
VG9Qcm9jZXNzKCk7CisKKyAgICAvLyBEb25lLCBjbG9zZSBhbnkgb3BlbiB0YWdzLCBldGMuCiAg
ICAgdm9pZCBmaW5pc2hlZCgpOwogCiBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8Tm9kZT4gcGFz
c1Rva2VuVG9MZWdhY3lQYXJzZXIoSFRNTDVUb2tlbiYpOwogICAgIFBhc3NSZWZQdHI8Tm9kZT4g
cHJvY2Vzc1Rva2VuKEhUTUw1VG9rZW4mLCBVQ2hhciBjdXJyZW50Q2hhcmFjdGVyID0gMCk7Cisg
ICAgCisgICAgdm9pZCBoYW5kbGVTY3JpcHRTdGFydFRhZygpOworICAgIHZvaWQgaGFuZGxlU2Ny
aXB0RW5kVGFnKEVsZW1lbnQqKTsKIAotICAgIC8vIFdlIGNvdWxkIGdyYWIgbV9kb2N1bWVudCBv
ZmYgdGhlIGxleGVyIGlmIHdlIHdhbnRlZCB0byBzYXZlIHNwYWNlLgotICAgIERvY3VtZW50KiBt
X2RvY3VtZW50OworICAgIERvY3VtZW50KiBtX2RvY3VtZW50OyAvLyBUaGlzIGlzIG9ubHkgdXNl
ZCBieSB0aGUgbV9sZWdhY3lQYXJzZXIgZm9yIG5vdy4KICAgICBib29sIG1fcmVwb3J0RXJyb3Jz
OworICAgIGJvb2wgbV9pc1BhdXNlZDsKICAgICAvLyBIVE1MNSBzcGVjIHJlcXVpcmVzIHRoYXQg
d2UgYmUgYWJsZSB0byBjaGFuZ2UgdGhlIHN0YXRlIG9mIHRoZSBsZXhlcgogICAgIC8vIGZyb20g
d2l0aGluIHBhcnNlciBhY3Rpb25zLgogICAgIEhUTUw1TGV4ZXIqIG1fbGV4ZXI7CiAKICAgICAv
LyBXZSdyZSByZS11c2luZyBsb2dpYyBmcm9tIHRoZSBvbGQgSFRNTFBhcnNlciB3aGlsZSB0aGlz
IGNsYXNzIGlzIGJlaW5nIHdyaXR0ZW4uCiAgICAgT3duUHRyPEhUTUxQYXJzZXI+IG1fbGVnYWN5
SFRNTFBhcnNlcjsKKyAgICBSZWZQdHI8RWxlbWVudD4gbV9sYXN0U2NyaXB0RWxlbWVudDsgIC8v
IEZJWE1FOiBUaGlzIGlzIGEgaGFjayBmb3IgPHNjcmlwdD4gc3VwcG9ydC4KKyAgICBSZWZQdHI8
RWxlbWVudD4gbV9zY3JpcHRUb1Byb2Nlc3M7IC8vIFNldCB0byBhIDxzY3JpcHQ+IHRhZyB3aGlj
aCBuZWVkcyBwcm9jZXNzaW5nLgogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57199</attachid>
            <date>2010-05-26 23:38:30 -0700</date>
            <delta_ts>2010-05-26 23:59:17 -0700</delta_ts>
            <desc>Ready for review</desc>
            <filename>bug-39716-20100526233829.patch</filename>
            <type>text/plain</type>
            <size>39318</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNjBhM2ViMGJhMzI0ZWViZDE0ZDcyYzI0OGFjMmNhYmI5YzAzOWY4Li41NDk0NGI2
NmMwODhmNjViMjg0ODA1ZDRiMGY0ZDE5MmZiY2NmYjBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEgQEAK
KzIwMTAtMDUtMjYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBvdXIgZXhwZWN0YXRp
b25zIG5vdyB0aGF0IHdlJ3JlIGhhbmRsaW5nIGV4dGVybmFsIHNjcmlwdHMuCisKKyAgICAgICAg
KiBodG1sNWxpYi93ZWJraXQtcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4dDoKKwogMjAxMC0wNS0y
NiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvd2Via2l0LXJ1
bm5lci1leHBlY3RlZC1odG1sNS50eHQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi93ZWJraXQtcnVu
bmVyLWV4cGVjdGVkLWh0bWw1LnR4dAppbmRleCAzMWNkYzczYzU4NWY4MTczMTk1YTViNjI3ZGE5
N2JiNzI4YTI2Zjg3Li5iN2RjYTAxODU4MzNkNmVkMWRkYjFhYTg2ZWUyMDdkMTI1Y2UzZmU3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odG1sNWxpYi93ZWJraXQtcnVubmVyLWV4cGVjdGVkLWh0
bWw1LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi93ZWJraXQtcnVubmVyLWV4cGVjdGVk
LWh0bWw1LnR4dApAQCAtMSwxNyArMSw5IEBACiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogU3lu
dGF4RXJyb3I6IFBhcnNlIGVycm9yCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogU3ludGF4RXJy
b3I6IFBhcnNlIGVycm9yCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmZXJlbmNlRXJyb3I6
IENhbid0IGZpbmQgdmFyaWFibGU6IGEKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBTeW50YXhF
cnJvcjogUGFyc2UgZXJyb3IKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBTeW50YXhFcnJvcjog
UGFyc2UgZXJyb3IKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBTeW50YXhFcnJvcjogUGFyc2Ug
ZXJyb3IKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IK
LUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJp
YWJsZTogYQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFN5bnRheEVycm9yOiBQYXJzZSBlcnJv
cgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFN5bnRheEVycm9yOiBQYXJzZSBlcnJvcgotQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDE6IFN5bnRheEVycm9yOiBQYXJzZSBlcnJvcgotQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE6IFN5bnRheEVycm9yOiBQYXJzZSBlcnJvcgogQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDI6IFBBU1MKIENPTlNPTEUgTUVTU0FHRTogbGluZSAyOiBGT088c3Bhbj5CQVI8L3Nw
YW4+QkFaCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogU3ludGF4RXJyb3I6IFBhcnNlIGVycm9y
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yCiBDb250
ZW50LVR5cGU6IHRleHQvcGxhaW4KIHJlc291cmNlcy90ZXN0czEuZGF0OiAyNSwgMjksIDMwLCAz
MiwgMzMsIDM0LCAzNSwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3
LCA0OCwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NywgNTksIDc4LCA3OSwgODAsIDgxLCA4MiwgODcs
IDkwLCA5MSwgOTIsIDk2LCA5OCwgMTAxLCAxMDQsIDEwNiwgMTA5LCAxMTMKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4YzQyZWQ0MDYy
NTBhNzE3MGE3NDBmZGE1NTg2NjcyODhkZmU4ZTIwLi5jMmQwODQ4NDYzYTc1MDJiMWI3ZDljNGQ0
MTQ5NGM4MmQ4MmQ3YzUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMC0wNS0yNiAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGVhY2ggdGhlIEhUTUw1IHBhcnNlciBob3cgdG8gaGFuZGxlIGV4dGVybmFs
IHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM5NzE2CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSBmb3IgdGhlIEhUTUw1VG9rZW5pemVy
IHRvIHJ1biBleHRlcm5hbCBzY3JpcHRzLgorICAgICAgICBJIGNyZWF0ZWQgYSBuZXcgY2xhc3Mg
SFRNTDVTY3JpcHRSdW5uZXIgdG8gaG9sZCBhbGwgb2YgdGhlCisgICAgICAgIHNjcmlwdC1sb2dp
YyB3aGljaCBpcyBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgb2xkIEhUTUxUb2tlbml6ZXIuCisK
KyAgICAgICAgVGhlIGRlc2lnbiBpcyBmb3IgdGhlIEhUTUw1VG9rZW5pemVyICh0aGUgImNvbnRy
b2xsZXIiKSB0byBob2xkCisgICAgICAgIHRoZSBMZXhlciwgVHJlZUJ1aWxkZXIgYW5kIFNjcmlw
dFJ1bm5lci4gIFRoZSBMZXhlciByZXR1cm5zIGJhY2sKKyAgICAgICAgdG8gdGhlIGNvbnRyb2xs
ZXIsIHdoaWNoIHBhc3NlcyB0b2tlbnMgdG8gdGhlIFRyZWVCdWlsZGVyLiAgV2hlbiB0aGUKKyAg
ICAgICAgdHJlZWJ1aWxkZXIgZW5jb3VudGVycyBhIDwvc2NyaXB0PiB0YWcgaXQgcGF1c2VzIGl0
c2VsZiBhbmQgcmV0dXJucworICAgICAgICBiYWNrIHRvIHRoZSBjb250cm9sbGVyIHdoaWNoIGNh
bGxzIHRoZSBTY3JpcHRSdW5uZXIuICBUaGUgVHJlZUJ1aWxkZXIKKyAgICAgICAgaXMgdW4tcGF1
c2VkIHdoZW4gdGhlIEhUTUw1VG9rZW5pemVyIGNhbGxzIHRha2VTY3JpcHRUb1Byb2Nlc3MoKS4K
KworICAgICAgICBUaGUgU2NyaXB0UnVubmVyIGF0dGVtcHRzIHRvIHByb2Nlc3MgdGhlIHBhc3Nl
ZCBzY3JpcHQsIGFuZCBhZGRpdGlvbmFsbHkKKyAgICAgICAgYW55IGJsb2NrZWQgc2NyaXB0cyBp
dCBjYW4uICBJdCByZXR1cm5zIHRvIHRoZSBjb250cm9sbGVyIGluZGljYXRpbmcgaWYKKyAgICAg
ICAgcGFyc2luZyBzaG91bGQgY29udGludWUuICBJZiBub3QsIGNhbGxiYWNrcyB3aGVuIGV4dGVy
bmFsIHNjcmlwdHMgbG9hZAorICAgICAgICBvciB3aGVuIHN0eWxlc2hlZXRzIGFyZSBmaW5pc2hl
ZCBwYXJzaW5nIHdpbGwgY2F1c2UgdGhlIGNvbnRyb2xsZXIgdG8KKyAgICAgICAga2ljayBvZmYg
c2NyaXB0IGV4ZWN1dGlvbiBhbmQgcGFyc2luZyBhZ2FpbiBhdCBhIGxhdGVyIHBvaW50LgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAgLSBB
ZGQgSFRNTDVTY3JpcHRSdW5uZXIuKgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZFNjcmlw
dFNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICAtIFJlbW92ZSBtaXNzaW5nIGhlYWRlciBkaXNj
b3ZlcmVkIHdoaWxlIGJ1aWxkaW5nLgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6
CisgICAgICAgICAtIFJlbW92ZSBwcmV2aW91cyBoYWNrIGZvciBpbmxpbmUgPHNjcmlwdD4gZXhl
Y3V0aW9uLgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICAtIEV4cGxh
aW4gdGhlIEhUTUw1IHNwZWMgbmFtZXMgZm9yIG1fZXZhbHVhdGVkIGFuZCBtX2NyZWF0ZWRCeVBh
cnNlci4KKyAgICAgICAgKiBodG1sL0hUTUw1U2NyaXB0UnVubmVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6SFRNTDVTY3JpcHRSdW5uZXIpOgorICAg
ICAgICAgLSBUaGUgSFRNTDVUb2tlbml6ZXIgaXMgcGFzc2VkIHRvIHRoZSBIVE1MNVNjcmlwdFJ1
bm5lciBhcyBhCisgICAgICAgICAgIENhY2hlZFJlc291cmNlQ2xpZW50LiAgVGhlIEhUTUw1U2Ny
aXB0UnVubmVyIHdpbGwgcmVnaXN0ZXIgdGhlCisgICAgICAgICAgIEhUTUw1VG9rZW5pemVyIGZv
ciBub3RpZnlGaW5pc2hlZCBjYWxsYmFja3Mgd2hlbiB0aGUgc2NyaXB0cyBsb2FkLgorICAgICAg
ICAgICBUaGUgSFRNTDVUb2tlbml6ZXIgaXMgZXhwZWN0ZWQgdG8gY2FsbCB0aGUgSFRNTDVTY3Jp
cHRSdW5uZXIgdG8KKyAgICAgICAgICAgZXhlY3V0ZSBhbnkgbG9hZGVkIHNjcmlwdHMgYXQgdGhh
dCBwb2ludC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjp+SFRNTDVTY3Jp
cHRSdW5uZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OmZyYW1lKTog
SGVscGVyIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdExvYWRFdmVudCk6
IEhlbHBlciBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRFcnJvckV2ZW50
KTogSGVscGVyIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpz
b3VyY2VGcm9tUGVuZGluZ1NjcmlwdCk6CisgICAgICAgICAtIEhlbHBlciBtZXRob2QgZm9yIGRl
YWxpbmcgd2l0aCBib3RoIGlubGluZSBhbmQgZXh0ZXJuYWwgc2NyaXB0IHR5cGVzLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OmlzUGVuZGluZ1NjcmlwdFJlYWR5KToKKyAg
ICAgICAgIC0gSGVscGVyIGZvciBkZWFsaW5nIHdpdGggYm90aCBpbmxpbmUgYW5kIGV4dGVybmFs
IHNjcmlwdHMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBl
bmRpbmdTY3JpcHQpOgorICAgICAgICAgLSBFeGVjdXRlIG9uZSBzY3JpcHQuICBCb3RoIGV4dGVy
bmFsIGFuZCBpbmxpbmUgc2NyaXB0cworICAgICAgICAgICBjYW4gYmVjb21lIG1fcGFyc2luZ0Js
b2NraW5nU2NyaXB0IGlmIHRoZXkgY2FuJ3QgYmUgZXhlY3V0ZWQKKyAgICAgICAgICAgaW1tZWRp
YXRlbHkgYWZ0ZXIgcGFyc2luZy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVy
OjpleGVjdXRlUGVuZGluZ1NjcmlwdHMpOgorICAgICAgICAgLSBUYWtlcyBhIHNjcmlwdCBlbGVt
ZW50IGZyb20gdGhlIHRyZWUgYnVpbGRlciBhbmQgdHJpZXMKKyAgICAgICAgICAgdG8gcHJvY2Vz
cyBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlUGFyc2lu
Z0Jsb2NraW5nU2NyaXB0cyk6CisgICAgICAgICAtIFJ1bnMgdGhlIGN1cnJlbnQgcGFyc2luZyBi
bG9ja2luZyBzY3JpcHQgaWYgcmVhZHkuCisgICAgICAgICAtIFJ1bm5pbmcgYSBzY3JpcHQgY291
bGQgYWRkIGFub3RoZXIgcGFyc2luZyBibG9ja2luZyBzY3JpcHQKKyAgICAgICAgICAgc28gd2Ug
bG9vcCB1bnRpbCB0aGVyZSBpcyBubyByZWFkeS10by1ydW4gcGFyc2luZyBibG9ja2luZyBzY3Jp
cHQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdHNX
YWl0aW5nRm9yTG9hZCk6CisgICAgICAgICAtIENhbGxlZCBieSBIVE1MNVRva2VuaXplciB3aGVu
IGEgc2NyaXB0IGxvYWRzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OmV4
ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKToKKyAgICAgICAgIC0gQ2FsbGVkIGJ5
IEhUTUw1VG9rZW5pemVyIHdoZW4gc3R5bGVzaGVldHMgY29tcGxldGUuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6cmVxdWVzdFNjcmlwdCk6CisgICAgICAgICAtIFRyYW5z
Y3JpcHRpb24gb2YgdGhlIEhUTUw1IHNwZWMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlw
dFJ1bm5lcjo6cnVuU2NyaXB0KToKKyAgICAgICAgIC0gVHJhbnNjcmlwdGlvbiBvZiB0aGUgSFRN
TDUgc3BlYy4KKyAgICAgICAgKiBodG1sL0hUTUw1U2NyaXB0UnVubmVyLmg6IEFkZGVkLgorICAg
ICAgICAgLSBOZXcgY2xhc3MgdG8gaGFuZGxlIHNjcmlwdCBsb2FkaW5nIGFuZCBleGVjdXRpb24g
Zm9yIHRoZSBIVE1MNSBwYXJzZXIuCisgICAgICAgICogaHRtbC9IVE1MNVRva2VuaXplci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6SFRNTDVUb2tlbml6ZXIpOgorICAg
ICAgICAgLSBDcmVhdGUgYSBIVE1MNVNjcmlwdFJ1bm5lciBhbmQgcGFzcyBpdCAidGhpcyIgYXMg
dGhlIENhY2hlZFJlc291cmNlQ2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6
ZXI6OnB1bXBMZXhlcik6CisgICAgICAgICAtIFdoZW4gdGhlIHBhcnNlciBpcyBwYXVzZWQsIHRy
eSB0byBydW4gc2NyaXB0cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjp3cml0
ZSk6CisgICAgICAgICAtIE9ubHkgcHVtcCB0aGUgbGV4ZXIgd2hlbiB0aGUgcGFyc2VyIGlzIG5v
dCBwYXVzZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6ZW5kKToKKyAgICAg
ICAgIC0gZmluaXNoKCkgdGVsbHMgdXMgdGhhdCB3ZSd2ZSByZWFjaGVkIEVPRiwgbm90IGVuZCgp
CisgICAgICAgICAtIE9ubHkgcHVtcCB0aGUgbGV4ZXIgd2hlbiB0aGUgcGFyc2VyIGlzIG5vdCBw
YXVzZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6ZmluaXNoKToKKyAgICAg
ICAgIC0gTWFyayBFT0YsIGFuZCBlbmQoKSBpZiB3ZSdyZSBub3Qgd2FpdGluZyBvbiBzY3JpcHRz
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OmlzV2FpdGluZ0ZvclNjcmlwdHMp
OgorICAgICAgICAgLSBpc1BhdXNlZCgpIHNlZW1zIHRvIG1lYW4gaXNQYXVzZWRGb3JFeHRlcm5h
bFNjcmlwdHMoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpyZXN1bWVQYXJz
aW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6
ZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpl
eGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyk6CisgICAgICAgICogaHRtbC9IVE1M
NVRva2VuaXplci5oOgorICAgICAgICAqIGh0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MNVRyZWVCdWlsZGVyOjpIVE1MNVRyZWVCdWlsZGVyKToKKyAgICAg
ICAgIC0gQWRkIGFuIG1faXNQYXVzZWQgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VHJl
ZUJ1aWxkZXI6OmhhbmRsZVNjcmlwdFN0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1
VHJlZUJ1aWxkZXI6OmhhbmRsZVNjcmlwdEVuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
NVRyZWVCdWlsZGVyOjp0YWtlU2NyaXB0VG9Qcm9jZXNzKToKKyAgICAgICAgIC0gQWNrbm93bGVk
Z2UgdGhhdCB0aGUgY2FsbGVyIGhhcyByZWNlaXZlZCB0aGUgc2NyaXB0IGVsZW1lbnQuCisgICAg
ICAgICAgIEl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBleGVjdXRlIHRoZSBz
Y3JpcHQgaWYgbmVjZXNzYXJ5CisgICAgICAgICAgIGFuZCByZS1wYXVzZSB0aGUgdHJlZSBidWls
ZGVyIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VHJlZUJ1aWxkZXI6OnBh
c3NUb2tlblRvTGVnYWN5UGFyc2VyKToKKyAgICAgICAgIC0gU2F2ZSBvZmYgdGhlIGN1cnJlbnQg
c2NyaXB0IHRhZyBzbyB0aGF0IGl0IGNhbiBiZSBwYXNzZWQgdG8KKyAgICAgICAgICAgdGhlIEhU
TUw1U2NyaXB0UnVubmVyIHdoZW4gd2UncmUgcGF1c2VkLgorICAgICAgICAqIGh0bWwvSFRNTDVU
cmVlQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6c2V0UGF1
c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VHJlZUJ1aWxkZXI6OmlzUGF1c2VkKToKKwog
MjAxMC0wNS0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2MDI2Mi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOGI4ODliOTFhMDk0ZjYwZGExYTRhOGQxMTQyMzNiNWFjNWUx
MzEzZS4uY2ViYWM0YWQxOTgxMzhlY2RlNjcxMzAwMWUyZWJmNGNhNTEzMjVlNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MTYsNiArMjkxNiw4IEBA
CiAJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODMzQzgwQTBBMkNGMjU2MDBENTc2
NjQgLyogWE1MTmFtZXMuY3BwICovOyB9OwogCQlBODMzQzgwRDBBMkNGMjU2MDBENTc2NjQgLyog
WE1MTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4MzNDODBCMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5oICovOyB9OwogCQlBODMzQzg1
MjBBMkNGNTI4MDBENTc2NjQgLyogU1ZHRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxRTYwOUQxNTA4RDAwMEU2MUQ3
IC8qIFNWR0VsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKKwkJQTgzQjNBRjAxMUFERUZGNTAwNDU4
ODA5IC8qIEhUTUw1U2NyaXB0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4M0IzQUVFMTFBREVGRjUwMDQ1ODgwOSAvKiBIVE1MNVNjcmlw
dFJ1bm5lci5jcHAgKi87IH07CisJCUE4M0IzQUYxMTFBREVGRjUwMDQ1ODgwOSAvKiBIVE1MNVNj
cmlwdFJ1bm5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTgzQjNBRUYxMUFERUZGNTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0UnVubmVyLmggKi87IH07
CiAJCUE4M0I3OEZDMENDQUZGMTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgzQjc4RjIw
Q0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VVcmlFbGVtZW50LmggKi87IH07CiAJCUE4
M0I3OEZEMENDQUZGMTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODNCNzhGMzBDQ0FG
RjE1MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwICovOyB9OwogCQlBODNC
NzhGRTBDQ0FGRjE1MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZVNyY0VsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4M0I3OEY0MENDQUZGMTUw
MDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlU3JjRWxlbWVudC5oICovOyB9OwpAQCAtODM1Nyw2ICs4
MzU5LDggQEAKIAkJQTgzM0M3RjYwQTJDRjFEODAwRDU3NjY0IC8qIHhtbGF0dHJzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSB4bWxhdHRycy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTgzM0M4MEEwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4MzNDODBCMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MTmFtZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTgzQjNBRUUxMUFERUZGNTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0
UnVubmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUw1U2Ny
aXB0UnVubmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgzQjNBRUYxMUFE
RUZGNTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0UnVubmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhUTUw1U2NyaXB0UnVubmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4M0I3OEYyMENDQUZGMTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlVXJpRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR0ZvbnRGYWNlVXJpRWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODNCNzhGMzBDQ0FGRjE1MDAw
QjA4MjUgLyogSlNTVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBODNCNzhGNDBDQ0FGRjE1MDAwQjA4MjUgLyogSlNTVkdGb250
RmFjZVNyY0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdG
b250RmFjZVNyY0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMzI2
LDEwICsxMzMzMCwxMCBAQAogCQk5M0VFQzFFQzA5QzI4Nzc3MDBDNTE1RDEgLyogaHRtbCAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDk0ODRGQUUxMDJD
RjAxRTAwMTg3REQzIC8qIGNhbnZhcyAqLywKIAkJCQkyRUFGQUYwQjEwRTJBRjJEMDA3RUQzRDYg
LyogQmxvYi5jcHAgKi8sCiAJCQkJMkVBRkFGMEMxMEUyQUYyRDAwN0VEM0Q2IC8qIEJsb2IuaCAq
LywKIAkJCQkyRUFGQUYwRDEwRTJBRjJEMDA3RUQzRDYgLyogQmxvYi5pZGwgKi8sCisJCQkJNDk0
ODRGQUUxMDJDRjAxRTAwMTg3REQzIC8qIGNhbnZhcyAqLywKIAkJCQk5M0M0NDFFRDBGODEzQTFB
MDBDMUE2MzQgLyogQ29sbGVjdGlvbkNhY2hlLmNwcCAqLywKIAkJCQk5M0M0NDFFRTBGODEzQTFB
MDBDMUE2MzQgLyogQ29sbGVjdGlvbkNhY2hlLmggKi8sCiAJCQkJOTNDNDQxRkYwRjgxM0FFMTAw
QzFBNjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi8sCkBAIC0xMzM3MCw2ICsxMzM3NCw4IEBACiAJ
CQkJQTgxMzZEMzYwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5oICovLAogCQkJCTk3
RThCMzU0MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmNwcCAqLywKIAkJCQk5N0U4QjM1
NTExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTDVMZXhlci5oICovLAorCQkJCUE4M0IzQUVFMTFBREVG
RjUwMDQ1ODgwOSAvKiBIVE1MNVNjcmlwdFJ1bm5lci5jcHAgKi8sCisJCQkJQTgzQjNBRUYxMUFE
RUZGNTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0UnVubmVyLmggKi8sCiAJCQkJOTdFOEIzQzIxMUEy
ODkwODAwMTY5NDA5IC8qIEhUTUw1VG9rZW4uaCAqLywKIAkJCQlBODcxMDM4ODExQTI5NDcwMDBE
QkQ1MEUgLyogSFRNTDVUb2tlbml6ZXIuY3BwICovLAogCQkJCUE4NzEwMzg5MTFBMjk0NzAwMERC
RDUwRSAvKiBIVE1MNVRva2VuaXplci5oICovLApAQCAtMTkzNjMsNiArMTkzNjksNyBAQAogCQkJ
CUI2NjkzRUVDMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjY2OTNFRUUxMUFENjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjY2OTNFRjMxMUFENjQ4NjAwM0YyNzcwIC8qIEpTSURC
T2JqZWN0U3RvcmVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBODNCM0FGMTExQURFRkY1
MDA0NTg4MDkgLyogSFRNTDVTY3JpcHRSdW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjE2NTcs
NiArMjE2NjQsNyBAQAogCQkJCUI2NjkzRUVEMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RT
dG9yZVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjY2OTNFRjIxMUFENjQ4NjAwM0Yy
NzcwIC8qIEpTSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI2
MjdGQjJEMTFBRDc0MzUwMEU5N0I3MiAvKiBJREJEYXRhYmFzZUltcGwuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTgzQjNBRjAxMUFERUZGNTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0UnVubmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRTb3VyY2VQcm92aWRlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRT
b3VyY2VQcm92aWRlci5oCmluZGV4IDhlNjliNmJhZGZhZjkxMGQ0NTY0MjVhYzAwMWVhMGUwZTJm
NTY1NjguLjgwOWE0ODgwNmE1NWNmMTVlMzY5ZjA0NzMyNzU0YjQ3N2Q1ZDdiYjMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCisjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiIC8vIGZvciBzdHJpbmdUb1VTdHJpbmcKICNpbmNsdWRlICJT
Y3JpcHRTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VDb2RlLmg+CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5jcHAKaW5kZXggYjQ1N2Y1ZDM5Njk0ZWNiYWFlYzQ5YTliYWZkY2I2OTQw
MmU5MGY4ZS4uMGFjMDg0NmExMjQyMTA3YWYwNWU0Yzg5NTg0ODhhOWE0NDRhYjM5MiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5jcHAKQEAgLTk3LDE1ICs5Nyw2IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6Zmlu
aXNoUGFyc2luZ0NoaWxkcmVuKFNjcmlwdEVsZW1lbnREYXRhJiBkYXRhLCBjb25zdCBTdHJpbmcm
CiAgICAgLy8gYWxsb3cgZHluYW1pYyBsb2FkaW5nIGxhdGVyLgogICAgIGlmIChzb3VyY2VVcmwu
aXNFbXB0eSgpICYmIGRhdGEuc2NyaXB0Q29udGVudCgpLmlzRW1wdHkoKSkKICAgICAgICAgZGF0
YS5zZXRDcmVhdGVkQnlQYXJzZXIoZmFsc2UpOwotICAgIC8vIEhUTUw1IFJlcXVpcmVzIHRoYXQg
d2UgZXhlY3V0ZSBzY3JpcHRzIGZyb20gdGhlIHBhcnNlciwgbm90IGZyb20KLSAgICAvLyBIVE1M
VG9rZW5pemVyIGxpa2Ugd2UgY3VycmVudGx5IGRvLgotICAgIC8vIEZJWE1FOiBJdCBtYXkgbm90
IGJlIHNhZmUgdG8gZXhlY3V0ZSBzY3JpcHRzIGZyb20gaGVyZSBpZgotICAgIC8vIEhUTUxQYXJz
ZXI6OnBvcE9uZUJsb2NrQ29tbW9uIGlzIG5vdCByZWVudHJhbnQuCi0gICAgZWxzZSBpZiAodXNl
SFRNTDVQYXJzZXIoZGF0YS5lbGVtZW50KCktPmRvY3VtZW50KCkpKSB7Ci0gICAgICAgIC8vIFRo
aXMgaXMgY3VycmVudGx5IGFuIGluY29tcGxldGUgaW1wbGVtZW50YXRpb24sIHNlZToKLSAgICAg
ICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9t
dWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjcGFyc2luZy1tYWluLWluY2RhdGEKLSAgICAgICAg
ZGF0YS5ldmFsdWF0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKGRhdGEuc2NyaXB0Q29udGVudCgp
LCBkYXRhLmVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+dXJsKCkpKTsgLy8gRklYTUU6IFByb3ZpZGUg
YSByZWFsIHN0YXJ0aW5nIGxpbmUgbnVtYmVyIGhlcmUKLSAgICB9CiB9CiAKIHZvaWQgU2NyaXB0
RWxlbWVudDo6aGFuZGxlU291cmNlQXR0cmlidXRlKFNjcmlwdEVsZW1lbnREYXRhJiBkYXRhLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVybCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuaCBiL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAppbmRleCBmYWQ2ZmU3MjU2NmEy
NTIxYjZjMzU3YzYyNmI0ZmNjZTM5NDM0YjY5Li44Y2M4NGZjZDQ5ZWViZThhMmE2NjY1ZTUyNTlk
ZWE4ZTA4MjA0NmMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKKysr
IGIvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCkBAIC05NCw5ICs5NCw5IEBAIHByaXZhdGU6
CiAgICAgU2NyaXB0RWxlbWVudCogbV9zY3JpcHRFbGVtZW50OwogICAgIEVsZW1lbnQqIG1fZWxl
bWVudDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2FjaGVkU2Ny
aXB0OwotICAgIGJvb2wgbV9jcmVhdGVkQnlQYXJzZXI7CisgICAgYm9vbCBtX2NyZWF0ZWRCeVBh
cnNlcjsgLy8gSFRNTDU6ICJwYXJzZXItaW5zZXJ0ZWQiCiAgICAgYm9vbCBtX3JlcXVlc3RlZDsK
LSAgICBib29sIG1fZXZhbHVhdGVkOworICAgIGJvb2wgbV9ldmFsdWF0ZWQ7IC8vIEhUTUw1OiAi
YWxyZWFkeSBzdGFydGVkIgogICAgIGJvb2wgbV9maXJlZExvYWQ7CiB9OwogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1
U2NyaXB0UnVubmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDE5MGQ5MWZlZDg3NTU4MTJmYTFmNGFmYjAw
MWI0MTE2MDE1NjFjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0
UnVubmVyLmNwcApAQCAtMCwwICsxLDIyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1M
NVNjcmlwdFJ1bm5lci5oIgorCisjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQ2Fj
aGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCisjaW5jbHVkZSAiRWxlbWVudC5o
IgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNjcmlwdEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKworSFRNTDVTY3JpcHRSdW5uZXI6
OkhUTUw1U2NyaXB0UnVubmVyKERvY3VtZW50KiBkb2N1bWVudCwgQ2FjaGVkUmVzb3VyY2VDbGll
bnQqIGxvYWROb3RpZmllcikKKyAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCisgICAgLCBtX2xv
YWROb3RpZmllcihsb2FkTm90aWZpZXIpCisgICAgLCBtX3NjcmlwdE5lc3RpbmdMZXZlbCgwKQor
eworfQorCitIVE1MNVNjcmlwdFJ1bm5lcjo6fkhUTUw1U2NyaXB0UnVubmVyKCkKK3sKKyAgICAv
LyBJZiB0aGUgcGFnZSBjb21wbGV0ZWQgbG9hZGluZyB3ZSBzaG91bGQgaGF2ZSBydW4gYWxsIHNj
cmlwdHMuCisgICAgLy8gVGhpcyBBU1NFUlQgbWF5IG5vdCBob2xkIGluIHRoZSBjYXNlIG9mIG5h
dmlnYXRpb24gYmVmb3JlIGNvbXBsZXRlIGxvYWQuCisgICAgQVNTRVJUKCFtX3BhcnNpbmdCbG9j
a2luZ1NjcmlwdC5lbGVtZW50KTsKK30KKworCitGcmFtZSogSFRNTDVTY3JpcHRSdW5uZXI6OmZy
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kb2N1bWVudC0+ZnJhbWUoKTsKK30KKworaW5s
aW5lIFBhc3NSZWZQdHI8RXZlbnQ+IGNyZWF0ZVNjcmlwdExvYWRFdmVudCgpCit7CisgICAgcmV0
dXJuIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKTsK
K30KKworaW5saW5lIFBhc3NSZWZQdHI8RXZlbnQ+IGNyZWF0ZVNjcmlwdEVycm9yRXZlbnQoKQor
eworICAgIHJldHVybiBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCB0cnVl
LCBmYWxzZSk7Cit9CisKK1NjcmlwdFNvdXJjZUNvZGUgSFRNTDVTY3JpcHRSdW5uZXI6OnNvdXJj
ZUZyb21QZW5kaW5nU2NyaXB0KGNvbnN0IFBlbmRpbmdTY3JpcHQmIHNjcmlwdCwgYm9vbCYgZXJy
b3JPY2N1cnJlZCkKK3sKKyAgICBpZiAoc2NyaXB0LmNhY2hlZFNjcmlwdCkgeworICAgICAgICBl
cnJvck9jY3VycmVkID0gc2NyaXB0LmNhY2hlZFNjcmlwdC0+ZXJyb3JPY2N1cnJlZCgpOworICAg
ICAgICBBU1NFUlQoc2NyaXB0LmNhY2hlZFNjcmlwdC0+aXNMb2FkZWQoKSk7CisgICAgICAgIHJl
dHVybiBTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5jYWNoZWRTY3JpcHQuZ2V0KCkpOworICAgIH0K
KyAgICBlcnJvck9jY3VycmVkID0gZmFsc2U7CisgICAgLy8gRklYTUU6IExpbmUgbnVtYmVycyBh
cmUgd3JvbmcuCisgICAgS1VSTCBkb2N1bWVudFVSTCA9IGZyYW1lKCkgPyBmcmFtZSgpLT5kb2N1
bWVudCgpLT51cmwoKSA6IEtVUkwoKTsKKyAgICByZXR1cm4gU2NyaXB0U291cmNlQ29kZShzY3Jp
cHQuZWxlbWVudC0+dGV4dENvbnRlbnQoKSwgZG9jdW1lbnRVUkwpOworfQorCitib29sIEhUTUw1
U2NyaXB0UnVubmVyOjppc1BlbmRpbmdTY3JpcHRSZWFkeShjb25zdCBQZW5kaW5nU2NyaXB0JiBz
Y3JpcHQpCit7CisgICAgLy8gRklYTUU6IFdlIGNhbid0IGJsb2NrIGZvciBzdHlsZXNoZWV0cyB5
ZXQsIGJlY2F1c2UgdGhhdCBjYXVzZXMgdXMgdG8gcmUtZW50ZXIKKyAgICAvLyB0aGUgcGFyc2Vy
IGZyb20gZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMgd2hlbiBwYXJzaW5nIHN0
eWxlIHRhZ3MuCisgICAgLy8gaWYgKCFtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQo
KSkKKyAgICAvLyAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChzY3JpcHQuY2FjaGVkU2NyaXB0
ICYmICFzY3JpcHQuY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1
dGVQZW5kaW5nU2NyaXB0KCkKK3sKKyAgICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xldmVsKTsK
KyAgICAvLyBGSVhNRTogV2UgY2FuJ3QgYmxvY2sgZm9yIHN0eWxlc2hlZXRzIHlldCwgYmVjYXVz
ZSB0aGF0IGNhdXNlcyB1cyB0byByZS1lbnRlcgorICAgIC8vIHRoZSBwYXJzZXIgZnJvbSBleGVj
dXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyB3aGVuIHBhcnNpbmcgc3R5bGUgdGFncy4K
KyAgICAvLyBBU1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpOworICAg
IGJvb2wgZXJyb3JPY2N1cnJlZCA9IGZhbHNlOworICAgIEFTU0VSVChpc1BlbmRpbmdTY3JpcHRS
ZWFkeShtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCkpOworICAgIFNjcmlwdFNvdXJjZUNvZGUgc291
cmNlQ29kZSA9IHNvdXJjZUZyb21QZW5kaW5nU2NyaXB0KG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0
LCBlcnJvck9jY3VycmVkKTsKKworICAgIFJlZlB0cjxFbGVtZW50PiBzY3JpcHRFbGVtZW50ID0g
bV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuZWxlbWVudC5yZWxlYXNlKCk7CisgICAgQ2FjaGVkU2Ny
aXB0KiBjYWNoZWRTY3JpcHQgPSBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQu
Z2V0KCk7CisgICAgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0ID0gMDsKKwor
ICAgIC8vIHJlbW92ZUNsaWVudCBiZWZvcmUgZXhlY3V0aW9uIHRvIHByZXZlbnQgcmVjdXJzaW9u
IGlmIHRoZSBzY3JpcHQgcmVsb2FkcyBpdHNlbGYuCisgICAgaWYgKGNhY2hlZFNjcmlwdCkKKyAg
ICAgICAgY2FjaGVkU2NyaXB0LT5yZW1vdmVDbGllbnQobV9sb2FkTm90aWZpZXIpOworCisgICAg
bV9zY3JpcHROZXN0aW5nTGV2ZWwrKzsKKyAgICBpZiAoZXJyb3JPY2N1cnJlZCkKKyAgICAgICAg
c2NyaXB0RWxlbWVudC0+ZGlzcGF0Y2hFdmVudChjcmVhdGVTY3JpcHRFcnJvckV2ZW50KCkpOwor
ICAgIGVsc2UgeworICAgICAgICBpZiAodG9TY3JpcHRFbGVtZW50KHNjcmlwdEVsZW1lbnQuZ2V0
KCkpLT5zaG91bGRFeGVjdXRlQXNKYXZhU2NyaXB0KCkpCisgICAgICAgICAgICBmcmFtZSgpLT5z
Y3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzb3VyY2VDb2RlKTsKKyAgICAgICAgc2NyaXB0RWxlbWVu
dC0+ZGlzcGF0Y2hFdmVudChjcmVhdGVTY3JpcHRMb2FkRXZlbnQoKSk7CisgICAgfQorICAgIG1f
c2NyaXB0TmVzdGluZ0xldmVsLS07CisgICAgQVNTRVJUKCFtX3NjcmlwdE5lc3RpbmdMZXZlbCk7
Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG1hdGNoIDEwLjIuNS4xMSAiQW4gZW5kIHRh
ZyB3aG9zZSB0YWcgbmFtZSBpcyAnc2NyaXB0JyIKKy8vIFNjcmlwdCBoYW5kbGluZyBsaXZlcyBv
dXRzaWRlIHRoZSB0cmVlIGJ1aWxkZXIgdG8ga2VlcCB0aGUgZWFjaCBjbGFzcyBzaW1wbGUuCiti
b29sIEhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdHMoUGFzc1JlZlB0cjxF
bGVtZW50PiBzY3JpcHRFbGVtZW50KQoreworICAgIC8vIEZJWE1FOiBJZiBzY3JpcHRpbmcgaXMg
ZGlzYWJsZWQsIGFsd2F5cyBqdXN0IHJldHVybiB0cnVlOworCisgICAgaWYgKHNjcmlwdEVsZW1l
bnQpIHsKKyAgICAgICAgLy8gVHJ5IHRvIGV4ZWN1dGUgdGhlIHNjcmlwdCBnaXZlbiB0byB1cy4K
KyAgICAgICAgcnVuU2NyaXB0KHNjcmlwdEVsZW1lbnQuZ2V0KCkpOworICAgICAgICBpZiAobV9z
Y3JpcHROZXN0aW5nTGV2ZWwpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIERvbid0IGNv
bnRpbnVlIHBhcnNpbmcuCisgICAgICAgIGlmICghZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1Njcmlw
dHMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOyAvLyBSZXN0b3JlIGluc2VydGlvbiBwb2ludD8KKyAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSByZS1lbnRyYW50IHNjcmlwdHMgYW5kIG1fcGVuZGluZ1BhcnNpbmdCbG9ja2luU2NyaXB0Lgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSB3ZXJlIG5vdCBjYWxs
ZWQgd2l0aCBhIHNjcmlwdCwgdGhlbiBjaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBhbnkKKyAgICAv
LyBwZW5kaW5nIHNjcmlwdHMgdG8gcnVuIChhcyB0aGlzIGlzIHRoZSBlbmQgb2YgdGhlIHRva2Vu
IHN0cmVhbSkuCisgICAgLy8gRklYTUU6IFJ1biBkZWZlcnJlZCBzY3JpcHRzLgorICAgIC8vIE90
aGVyd2lzZSwgcmV0dXJuIGZhbHNlIGFuZCBzdG9wIHBhcnNpbmcuCisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2Ny
aXB0cygpCit7CisgICAgd2hpbGUgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmVsZW1lbnQpIHsK
KyAgICAgICAgLy8gV2Ugb25seSByZWFsbHkgbmVlZCB0byBjaGVjayBvbmNlLgorICAgICAgICBp
ZiAoIWlzUGVuZGluZ1NjcmlwdFJlYWR5KG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZXhlY3V0ZVBlbmRpbmdTY3JpcHQoKTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1
dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqKQoreworICAgIEFTU0VSVCht
X3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5lbGVtZW50KTsKKyAgICBBU1NFUlQobV9wYXJzaW5nQmxv
Y2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpKTsKKyAgICByZXR1cm4gZXhlY3V0
ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsKK30KKworYm9vbCBIVE1MNVNjcmlwdFJ1bm5lcjo6
ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKQoreworICAgIEFTU0VSVChtX2Rv
Y3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSk7CisgICAgLy8gSWYgd2UgZG9uJ3QgYWN0
dWFsbHkgaGF2ZSBhbnl0aGluZyB0byBleGVjdXRlLCB3ZSB3ZXJlbid0IGJsb2NrZWQsIHRlbGwg
dGhlIGNhbGxlciBub3QgdG8gYm90aGVyIHJlc3RhcnRpbmcgcGFyc2luZy4KKyAgICBpZiAobV9w
YXJzaW5nQmxvY2tpbmdTY3JpcHQuZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygpOworfQorCit2b2lkIEhUTUw1
U2NyaXB0UnVubmVyOjpyZXF1ZXN0U2NyaXB0KEVsZW1lbnQqIHNjcmlwdCkKK3sKKyAgICBBU1NF
UlQoIW1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmVsZW1lbnQpOworICAgIEF0b21pY1N0cmluZyBz
cmNWYWx1ZSA9IHNjcmlwdC0+Z2V0QXR0cmlidXRlKHNyY0F0dHIpOworICAgIC8vIEZJWE1FOiBX
ZSBuZWVkIHRvIHJlc29sdmUgdGhlIHVybCByZWxhdGl2ZSB0byB0aGUgZWxlbWVudC4KKyAgICBt
X3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5lbGVtZW50ID0gc2NyaXB0OworICAgIGlmICghc2NyaXB0
LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVudChzcmNWYWx1ZSkpIC8vIFBhcnQgb2YgSFRNTDU/Cisg
ICAgICAgIHJldHVybjsKKyAgICAvLyBUaGlzIHNob3VsZCBjb3JyZWN0bHkgcmV0dXJuIDAgZm9y
IGVtcHR5IG9yIGludmFsaWQgc3JjVmFsdWVzLgorICAgIENhY2hlZFNjcmlwdCogY2FjaGVkU2Ny
aXB0ID0gbV9kb2N1bWVudC0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQoc3JjVmFsdWUsIHRv
U2NyaXB0RWxlbWVudChzY3JpcHQpLT5zY3JpcHRDaGFyc2V0KCkpOworICAgIGlmICghY2FjaGVk
U2NyaXB0KSB7CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIERpc3BhdGNoIGVycm9yIGV2
ZW50LgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0
LmNhY2hlZFNjcmlwdCA9IGNhY2hlZFNjcmlwdDsKKyAgICAvLyBOT1RFOiBUaGlzIG1heSBjYXVz
ZSBpbW1lZGlhdGUgZXhlY3V0aW9uIG9mIHRoZSBzY3JpcHQuCisgICAgY2FjaGVkU2NyaXB0LT5h
ZGRDbGllbnQobV9sb2FkTm90aWZpZXIpOworfQorCit2b2lkIEhUTUw1U2NyaXB0UnVubmVyOjpy
dW5TY3JpcHQoRWxlbWVudCogc2NyaXB0KQoreworICAgIEFTU0VSVCghbV9wYXJzaW5nQmxvY2tp
bmdTY3JpcHQuZWxlbWVudCk7CisgICAgbV9zY3JpcHROZXN0aW5nTGV2ZWwrKzsKKyAgICAvLyBD
aGVjayBzY3JpcHQgdHlwZSBhbmQgbGFuZ3VhZ2UsIGN1cnJlbnQgY29kZSB1c2VzIFNjcmlwdEVs
ZW1lbnQ6OnNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSwgYnV0IHRoYXQgbWF5IG5vdCBiZSBI
VE1MNSBjb21wbGlhbnQuCisgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gZXZlbnQgZm9yIHN1cHBv
cnQKKworICAgIGlmIChzY3JpcHQtPmhhc0F0dHJpYnV0ZShzcmNBdHRyKSkgeworICAgICAgICAv
LyBGSVhNRTogSGFuZGxlIGRlZmVyIGFuZCBhc3luYworICAgICAgICByZXF1ZXN0U2NyaXB0KHNj
cmlwdCk7CisgICAgfSBlbHNlIGlmICghbV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVk
KCkpIHsKKyAgICAgICAgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuZWxlbWVudCA9IHNjcmlwdDsK
KyAgICB9IGVsc2UgeworICAgICAgICBLVVJMIGRvY3VtZW50VVJMID0gZnJhbWUoKSA/IGZyYW1l
KCktPmRvY3VtZW50KCktPnVybCgpIDogS1VSTCgpOworICAgICAgICAvLyBGSVhNRTogTmVlZCBh
IGxpbmUgbnVtYmVycyBpbXBsZW1lbmF0aW9uLgorICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIHNv
dXJjZUNvZGUgPSBTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC0+dGV4dENvbnRlbnQoKSwgZG9jdW1l
bnRVUkwsIDApOworICAgICAgICBmcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzb3Vy
Y2VDb2RlKTsKKyAgICB9CisgICAgbV9zY3JpcHROZXN0aW5nTGV2ZWwtLTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmggYi9XZWJDb3JlL2h0bWwv
SFRNTDVTY3JpcHRSdW5uZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzhkM2M2MzJhNTc4MmQ2ZjI1YzFlYWJm
ZDczNWU5YzA4MjA2ZmM4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1U2Ny
aXB0UnVubmVyLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSFRNTDVTY3JpcHRSdW5uZXJfaAorI2RlZmlu
ZSBIVE1MNVNjcmlwdFJ1bm5lcl9oCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5o
IgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKK2NsYXNzIENhY2hlZFNjcmlwdDsK
K2NsYXNzIERvY3VtZW50OworY2xhc3MgRWxlbWVudDsKK2NsYXNzIEZyYW1lOworY2xhc3MgU2Ny
aXB0U291cmNlQ29kZTsKKworY2xhc3MgSFRNTDVTY3JpcHRSdW5uZXIgOiBwdWJsaWMgTm9uY29w
eWFibGUgeworcHVibGljOgorICAgIEhUTUw1U2NyaXB0UnVubmVyKERvY3VtZW50KiwgQ2FjaGVk
UmVzb3VyY2VDbGllbnQqKTsKKyAgICB+SFRNTDVTY3JpcHRSdW5uZXIoKTsKKworICAgIC8vIFBy
b2Nlc3NlcyB0aGUgcGFzc2VkIGluIHNjcmlwdCBhbmQgYW55IHBlbmRpbmcgc2NyaXB0cyBpZiBw
b3NzaWJsZS4KKyAgICBib29sIGV4ZWN1dGVQZW5kaW5nU2NyaXB0cyhQYXNzUmVmUHRyPEVsZW1l
bnQ+IHNjcmlwdFRvUHJvY2Vzcyk7CisgICAgLy8gUHJvY2Vzc2VzIGFueSBwZW5kaW5nIHNjcmlw
dHMuCisgICAgYm9vbCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKENhY2hlZFJlc291cmNl
Kik7CisgICAgYm9vbCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpOworCitw
cml2YXRlOgorICAgIHN0cnVjdCBQZW5kaW5nU2NyaXB0IHsKKyAgICAgICAgUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQ7CisgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4g
Y2FjaGVkU2NyaXB0OworICAgICAgICAvLyBIVE1MNSBoYXMgYW4gaXNSZWFkeSBwYXJhbWV0ZXIs
IGhvd2V2ZXIgaXNSZWFkeSBlbmRzIHVwIGVxdWl2YWxlbnQgdG8KKyAgICAgICAgLy8gbV9kb2N1
bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkgJiYgY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgp
CisgICAgfTsKKworICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OworCisgICAgYm9vbCBleGVjdXRl
UGFyc2luZ0Jsb2NraW5nU2NyaXB0cygpOworICAgIHZvaWQgZXhlY3V0ZVBlbmRpbmdTY3JpcHQo
KTsKKworICAgIHZvaWQgcmVxdWVzdFNjcmlwdChFbGVtZW50Kik7CisgICAgdm9pZCBydW5TY3Jp
cHQoRWxlbWVudCopOworCisgICAgYm9vbCBpc1BlbmRpbmdTY3JpcHRSZWFkeShjb25zdCBQZW5k
aW5nU2NyaXB0Jik7CisgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VGcm9tUGVuZGluZ1Njcmlw
dChjb25zdCBQZW5kaW5nU2NyaXB0JiwgYm9vbCYgZXJyb3JPY2N1cnJlZCk7CisKKyAgICBEb2N1
bWVudCogbV9kb2N1bWVudDsKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVudCogbV9sb2FkTm90aWZp
ZXI7CisgICAgUGVuZGluZ1NjcmlwdCBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdDsKKyAgICBzaXpl
X3QgbV9zY3JpcHROZXN0aW5nTGV2ZWw7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MNVRva2Vu
aXplci5jcHAKaW5kZXggNTA3ZDQ3NzVhYzM3ODk3MmMxODQ0MTQ4M2U4MDQ2NzI1OGUxOTllYy4u
NjI1ZGFkMTU2N2QzYzYwNjMwOTNlNWU4OWVmYjlmOTczYzQ2MzU4MiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVUb2tl
bml6ZXIuY3BwCkBAIC0yNiw4ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkhUTUw1VG9rZW5pemVyLmgiCiAKKyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTDVMZXhlci5oIgorI2luY2x1ZGUgIkhUTUw1U2NyaXB0UnVubmVyLmgiCisjaW5jbHVkZSAi
SFRNTDVUb2tlbi5oIgogI2luY2x1ZGUgIkhUTUw1VHJlZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJI
VE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKIApAQCAtMzYsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBIVE1MNVRva2Vu
aXplcjo6SFRNTDVUb2tlbml6ZXIoSFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRF
cnJvcnMpCiAgICAgOiBUb2tlbml6ZXIoKQogICAgICwgbV9sZXhlcihuZXcgSFRNTDVMZXhlcikK
KyAgICAsIG1fc2NyaXB0UnVubmVyKG5ldyBIVE1MNVNjcmlwdFJ1bm5lcihkb2N1bWVudCwgdGhp
cykpCiAgICAgLCBtX3RyZWVCdWlsZGVyKG5ldyBIVE1MNVRyZWVCdWlsZGVyKG1fbGV4ZXIuZ2V0
KCksIGRvY3VtZW50LCByZXBvcnRFcnJvcnMpKQogewogICAgIGJlZ2luKCk7CkBAIC01MSwzNCAr
NTYsODQgQEAgdm9pZCBIVE1MNVRva2VuaXplcjo6YmVnaW4oKQogCiB2b2lkIEhUTUw1VG9rZW5p
emVyOjpwdW1wTGV4ZXIoKQogeworICAgIEFTU0VSVCghbV90cmVlQnVpbGRlci0+aXNQYXVzZWQo
KSk7CiAgICAgd2hpbGUgKG1fbGV4ZXItPm5leHRUb2tlbihtX3NvdXJjZSwgbV90b2tlbikpIHsK
ICAgICAgICAgbV90cmVlQnVpbGRlci0+Y29uc3RydWN0VHJlZUZyb21Ub2tlbihtX3Rva2VuKTsK
ICAgICAgICAgbV90b2tlbi5jbGVhcigpOworCisgICAgICAgIGlmICghbV90cmVlQnVpbGRlci0+
aXNQYXVzZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIFRoZSBwYXJz
ZXIgd2lsbCBwYXVzZSBpdHNlbGYgd2hlbiB3YWl0aW5nIG9uIGEgc2NyaXB0IHRvIGxvYWQgb3Ig
cnVuLgorICAgICAgICAvLyBTY3JpcHRSdW5uZXIgZXhlY3V0ZXMgc2NyaXB0cyBhdCB0aGUgcmln
aHQgdGltZXMgYW5kIGhhbmRsZXMgcmVlbnRyYW5jeS4KKyAgICAgICAgYm9vbCBzaG91bGRDb250
aW51ZVBhcnNpbmcgPSBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZVBlbmRpbmdTY3JpcHRzKG1fdHJl
ZUJ1aWxkZXItPnRha2VTY3JpcHRUb1Byb2Nlc3MoKSk7CisgICAgICAgIGlmICghc2hvdWxkQ29u
dGludWVQYXJzaW5nKSB7CisgICAgICAgICAgICAvLyBBU1NFUlQobV9zb3VyY2UuaXNFbXB0eSgp
IHx8IG1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpOworICAgICAgICAgICAgLy8gRklYTUU6IHRo
ZSBzY3JpcHQgcnVubmVyIHNob3VsZCBlaXRoZXIgbWFrZSB0aGlzIGNhbGwgb3IgcmV0dXJuIGEg
c3BlY2lhbAorICAgICAgICAgICAgLy8gdmFsdWUgdG8gaW5kaWNhdGUgd2Ugc2hvdWxkIHBhdXNl
LgorICAgICAgICAgICAgbV90cmVlQnVpbGRlci0+c2V0UGF1c2VkKHRydWUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogfQogCiB2b2lkIEhUTUw1VG9rZW5pemVyOjp3
cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCkKIHsKKyAgICAvLyBGSVhN
RTogVGhpcyBkb2VzIG5vdCB5ZXQgY29ycmVjdGx5IGhhbmRsZSByZWVudHJhbnQgd3JpdGVzLgog
ICAgIG1fc291cmNlLmFwcGVuZChzb3VyY2UpOwotICAgIHB1bXBMZXhlcigpOworICAgIGlmICgh
bV90cmVlQnVpbGRlci0+aXNQYXVzZWQoKSkKKyAgICAgICAgcHVtcExleGVyKCk7CiB9CiAKIHZv
aWQgSFRNTDVUb2tlbml6ZXI6OmVuZCgpCiB7Ci0gICAgbV9zb3VyY2UuY2xvc2UoKTsKLSAgICBw
dW1wTGV4ZXIoKTsKKyAgICBpZiAoIW1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpCisgICAgICAg
IHB1bXBMZXhlcigpOwogICAgIG1fdHJlZUJ1aWxkZXItPmZpbmlzaGVkKCk7CiB9CiAKIHZvaWQg
SFRNTDVUb2tlbml6ZXI6OmZpbmlzaCgpCiB7Ci0gICAgZW5kKCk7CisgICAgLy8gZmluaXNoKCkg
aW5kaWNhdGVzIHdlIHdpbGwgbm90IHJlY2VpdmUgYW55IG1vcmUgZGF0YS4gSWYgd2UgYXJlIHdh
aXRpbmcgb24KKyAgICAvLyBhbiBleHRlcm5hbCBzY3JpcHQgdG8gbG9hZCwgd2UgY2FuJ3QgZmlu
aXNoIHBhcnNpbmcgcXVpdGUgeWV0LgorICAgIG1fc291cmNlLmNsb3NlKCk7CisgICAgaWYgKCFt
X3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKQorICAgICAgICBlbmQoKTsKIH0KIAogYm9vbCBIVE1M
NVRva2VuaXplcjo6aXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gRklYTUU6IElzIHRoaXMgcmlnaHQ/
CisgICAgcmV0dXJuIG1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCk7Cit9CisKK3ZvaWQgSFRNTDVU
b2tlbml6ZXI6OnJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbigpCit7CisgICAgQVNT
RVJUKCFtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKTsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyB0
aGUgd3Jvbmcgd3JpdGUgaW4gdGhlIGNhc2Ugb2YgZG9jdW1lbnQud3JpdGUgcmUtZW50cnkuCisg
ICAgcHVtcExleGVyKCk7CisgICAgaWYgKG1fc291cmNlLmlzRW1wdHkoKSAmJiBtX3NvdXJjZS5p
c0Nsb3NlZCgpKQorICAgICAgICBlbmQoKTsgLy8gVGhlIGRvY3VtZW50IGFscmVhZHkgZmluaXNo
ZWQgcGFyc2luZyB3ZSB3ZXJlIGp1c3Qgd2FpdGluZyBvbiBzY3JpcHRzIHdoZW4gZmluaXNoZWQo
KSB3YXMgY2FsbGVkLgorfQorCit2b2lkIEhUTUw1VG9rZW5pemVyOjpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCit7CisgICAgYm9vbCBzaG91bGRDb250aW51
ZVBhcnNpbmcgPSBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZChj
YWNoZWRSZXNvdXJjZSk7CisgICAgaWYgKHNob3VsZENvbnRpbnVlUGFyc2luZykgeworICAgICAg
ICBtX3RyZWVCdWlsZGVyLT5zZXRQYXVzZWQoZmFsc2UpOworICAgICAgICByZXN1bWVQYXJzaW5n
QWZ0ZXJTY3JpcHRFeGVjdXRpb24oKTsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTDVUb2tlbml6ZXI6
OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkKK3sKKyAgICAvLyBGSVhNRTog
V2UgY2FuJ3QgYmxvY2sgZm9yIHN0eWxlc2hlZXRzIHlldCwgYmVjYXVzZSB0aGF0IGNhdXNlcyB1
cyB0byByZS1lbnRlcgorICAgIC8vIHRoZSBwYXJzZXIgZnJvbSBleGVjdXRlU2NyaXB0c1dhaXRp
bmdGb3JTdHlsZXNoZWV0cyB3aGVuIHBhcnNpbmcgc3R5bGUgdGFncy4KKy8vICAgIGJvb2wgc2hv
dWxkQ29udGludWVQYXJzaW5nID0gbV9zY3JpcHRSdW5uZXItPmV4ZWN1dGVTY3JpcHRzV2FpdGlu
Z0ZvclN0eWxlc2hlZXRzKCk7CisvLyAgICBpZiAoc2hvdWxkQ29udGludWVQYXJzaW5nKSB7Cisv
LyAgICAgICAgbV90cmVlQnVpbGRlci0+c2V0UGF1c2VkKGZhbHNlKTsKKy8vICAgICAgICByZXN1
bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKTsKKy8vICAgIH0KIH0KIAogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmggYi9XZWJDb3JlL2h0bWwvSFRNTDVU
b2tlbml6ZXIuaAppbmRleCAzYjA0MWIxNTBkZGJmNmNmNzk1NjBkNjlkOTZkYzc2ZTRhNzdlZDY3
Li5hODQ1OGYzZThlMWU0MmE1ZDhmODc0M2ViYWI0NmRlYWVhMjI1YmNiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVUb2tl
bml6ZXIuaApAQCAtMzQsMTggKzM0LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgSFRNTERvY3VtZW50OwotY2xhc3MgSFRNTDVUcmVlQnVpbGRlcjsKIGNsYXNzIEhUTUw1TGV4
ZXI7CitjbGFzcyBIVE1MNVNjcmlwdFJ1bm5lcjsKK2NsYXNzIEhUTUw1VHJlZUJ1aWxkZXI7Citj
bGFzcyBIVE1MRG9jdW1lbnQ7CiAKLS8vIEZJWE1FOiBUaGlzIGlzIHRoZSB3cm9uZyBsYXllciB0
byBob29rIGluIHRoZSBuZXcgSFRNTCA1IExleGVyLAotLy8gaG93ZXZlciBIVE1MVG9rZW5pemVy
IGlzIHRvbyBsYXJnZSBhbmQgdG9vIGZyYWdpbGUgb2YgYSBjbGFzcyB0byBoYWNrIGludG8uCi0v
LyBFdmVudHVhbGx5IHdlIHNob3VsZCBzcGxpdCBhbGwgb2YgdGhlIEhUTUwgbGV4ZXIgbG9naWMg
b3V0IGZyb20gSFRNTFRva2VuaXplcgotLy8gYW5kIHRoZW4gc2hhcmUgbm9uLWxleGVyLXNwZWNp
ZmljIHRva2VuaXplciBsb2dpYyBiZXR3ZWVuIEhUTUw1IGFuZCB0aGUKLS8vIGxlZ2FjeSBXZWJL
aXQgSFRNTCBsZXhlci4KLQotLy8gRklYTUU6IFRoaXMgY2xhc3MgaXMgZmFyIGZyb20gY29tcGxl
dGUuCi1jbGFzcyBIVE1MNVRva2VuaXplciA6ICBwdWJsaWMgVG9rZW5pemVyLCBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgeworLy8gRklYTUU6IFRoZSB3aG9sZSBUb2tlbml6ZXIgY2xhc3Mg
c3lzdGVtIHNob3VsZCBiZSByZW5hbWVkICJQYXJzZXIiCisvLyBvciAiUGFyc2VyQ29udHJvbGxl
ciIgYXMgdGhlIGpvYiBvZiB0aGlzIGNsYXNzIGlzIHRvIGRyaXZlIHBhcnNpbmcgcHJvY2Vzcwor
Ly8gYnV0IGl0IGRvZXMgbm90IGl0c2VsZiBUb2tlbml6ZS4KK2NsYXNzIEhUTUw1VG9rZW5pemVy
IDogIHB1YmxpYyBUb2tlbml6ZXIsIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICBIVE1MNVRva2VuaXplcihIVE1MRG9jdW1lbnQqLCBib29sIHJlcG9ydEVycm9ycyk7CiAgICAg
dmlydHVhbCB+SFRNTDVUb2tlbml6ZXIoKTsKQEAgLTU1LDkgKzUyLDE0IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpOwogICAgIHZp
cnR1YWwgYm9vbCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCk7CisKKyAgICAvLyBDYWNoZWRS
ZXNvdXJjZUNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSopOwogCiBwcml2YXRlOgogICAgIHZvaWQgcHVtcExleGVyKCk7CisgICAgdm9pZCByZXN1
bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKTsKIAogICAgIFNlZ21lbnRlZFN0cmluZyBt
X3NvdXJjZTsKIApAQCAtNjUsNiArNjcsNyBAQCBwcml2YXRlOgogICAgIEhUTUw1VG9rZW4gbV90
b2tlbjsKIAogICAgIE93blB0cjxIVE1MNUxleGVyPiBtX2xleGVyOworICAgIE93blB0cjxIVE1M
NVNjcmlwdFJ1bm5lcj4gbV9zY3JpcHRSdW5uZXI7CiAgICAgT3duUHRyPEhUTUw1VHJlZUJ1aWxk
ZXI+IG1fdHJlZUJ1aWxkZXI7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVU
cmVlQnVpbGRlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAKaW5kZXgg
MmIxYjE3ODc1YWVjMGE4M2VmOGZjYjAxNDZhMWY3OGFkNTY0MmYyNC4uOWEwMDllODczNWUxMGEz
YWIzYTg3OGUyYTc4MGVhZjI5ZGZlYTkwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1
VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcApA
QCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUw1VHJl
ZUJ1aWxkZXIuaCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MNUxleGVyLmgiCiAjaW5jbHVkZSAiSFRNTDVUb2tlbi5oIgogI2lu
Y2x1ZGUgIkhUTUxEb2N1bWVudC5oIgpAQCAtNDMsNiArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogSFRNTDVUcmVlQnVpbGRlcjo6SFRNTDVUcmVlQnVpbGRlcihIVE1MNUxleGVy
KiBsZXhlciwgSFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCiAgICAg
OiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9yZXBvcnRFcnJvcnMocmVwb3J0RXJyb3Jz
KQorICAgICwgbV9pc1BhdXNlZChmYWxzZSkKICAgICAsIG1fbGV4ZXIobGV4ZXIpCiAgICAgLCBt
X2xlZ2FjeUhUTUxQYXJzZXIobmV3IEhUTUxQYXJzZXIoZG9jdW1lbnQsIHJlcG9ydEVycm9ycykp
CiB7CkBAIC05MywyMyArOTQsMzUgQEAgc3RhdGljIHZvaWQgY29udmVydFRvT2xkU3R5bGUoSFRN
TDVUb2tlbiYgdG9rZW4sIFRva2VuJiBvbGRTdHlsZVRva2VuKQogICAgIH0KIH0KIAotUGFzc1Jl
ZlB0cjxOb2RlPiBIVE1MNVRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcihIVE1M
NVRva2VuJiB0b2tlbikKK3ZvaWQgSFRNTDVUcmVlQnVpbGRlcjo6aGFuZGxlU2NyaXB0U3RhcnRU
YWcoKQogewotICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTDVUb2tlbjo6U3RhcnRUYWcpIHsK
LSAgICAgICAgLy8gVGhpcyB3b3JrIGlzIHN1cHBvc2VkIHRvIGJlIGRvbmUgYnkgdGhlIHBhcnNl
ciwgYnV0Ci0gICAgICAgIC8vIHdoZW4gdXNpbmcgdGhlIG9sZCBwYXJzZXIgZm9yIHdlIGhhdmUg
dG8gZG8gdGhpcyBtYW51YWxseS4KLSAgICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBzY3JpcHRU
YWcpCi0gICAgICAgICAgICBtX2xleGVyLT5zZXRTdGF0ZShIVE1MNUxleGVyOjpTY3JpcHREYXRh
U3RhdGUpOwotICAgICAgICBlbHNlIGlmICh0b2tlbi5uYW1lKCkgPT0gdGV4dGFyZWFUYWcgfHwg
dG9rZW4ubmFtZSgpID09IHRpdGxlVGFnKQotICAgICAgICAgICAgbV9sZXhlci0+c2V0U3RhdGUo
SFRNTDVMZXhlcjo6UkNEQVRBU3RhdGUpOwotICAgICAgICBlbHNlIGlmICh0b2tlbi5uYW1lKCkg
PT0gc3R5bGVUYWcgfHwgdG9rZW4ubmFtZSgpID09IGlmcmFtZVRhZwotICAgICAgICAgICAgICAg
ICB8fCB0b2tlbi5uYW1lKCkgPT0geG1wVGFnIHx8IHRva2VuLm5hbWUoKSA9PSBub2VtYmVkVGFn
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogbm9zY3JpcHQgYW5kIG5vZnJhbWVzIG1heSBjb25k
aXRpb25hbGx5IGVudGVyIHRoaXMgc3RhdGUgYXMgd2VsbC4KLSAgICAgICAgICAgIG1fbGV4ZXIt
PnNldFN0YXRlKEhUTUw1TGV4ZXI6OlJBV1RFWFRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
dG9rZW4ubmFtZSgpID09IHBsYWludGV4dFRhZykKLSAgICAgICAgICAgIG1fbGV4ZXItPnNldFN0
YXRlKEhUTUw1TGV4ZXI6OlBMQUlOVEVYVFN0YXRlKTsKLSAgICB9CisgICAgbm90SW1wbGVtZW50
ZWQoKTsgLy8gVGhlIEhUTUwgZnJnbWVudCBjYXNlPworICAgIG1fbGV4ZXItPnNldFN0YXRlKEhU
TUw1TGV4ZXI6OlNjcmlwdERhdGFTdGF0ZSk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gU2F2
ZSBpbnNlcnRpb24gbW9kZS4KK30KKwordm9pZCBIVE1MNVRyZWVCdWlsZGVyOjpoYW5kbGVTY3Jp
cHRFbmRUYWcoRWxlbWVudCogc2NyaXB0RWxlbWVudCkKK3sKKyAgICBBU1NFUlQoIW1fc2NyaXB0
VG9Qcm9jZXNzKTsgLy8gQ2FsbGVyIG5ldmVyIGNhbGxlZCB0YWtlU2NyaXB0VG9Qcm9jZXNzIQor
ICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIFNhdmUgaW5zZXJ0aW9uIG1vZGUgYW5kIGluc2VydGlv
biBwb2ludD8KKworICAgIC8vIFBhdXNlIG91cnNlbHZlcyBzbyB0aGF0IHBhcnNpbmcgc3RvcHMg
dW50aWwgdGhlIHNjcmlwdCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IHRoZSBjYWxsZXIuCisgICAgbV9p
c1BhdXNlZCA9IHRydWU7CisgICAgbV9zY3JpcHRUb1Byb2Nlc3MgPSBzY3JpcHRFbGVtZW50Owor
fQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUw1VHJlZUJ1aWxkZXI6OnRha2VTY3JpcHRUb1By
b2Nlc3MoKQoreworICAgIC8vIFVucGF1c2Ugb3Vyc2VsdmVzLCBjYWxsZXJzIG1heSBwYXVzZSB1
cyBhZ2FpbiB3aGVuIHByb2Nlc3NpbmcgdGhlIHNjcmlwdC4KKyAgICAvLyBUaGUgSFRNTDUgc3Bl
YyBpcyB3cml0dGVuIGFzIHRob3VnaCBzY3JpcHRzIGFyZSBleGVjdXRlZCBpbnNpZGUgdGhlIHRy
ZWUKKyAgICAvLyBidWlsZGVyLiAgV2UgcGF1c2UgdGhlIHBhcnNlciB0byBleGl0IHRoZSB0cmVl
IGJ1aWxkZXIsIGFuZCB0aGVuIHJlc3VtZQorICAgIC8vIGJlZm9yZSBydW5uaW5nIHNjcmlwdHMu
CisgICAgbV9pc1BhdXNlZCA9IGZhbHNlOworICAgIHJldHVybiBtX3NjcmlwdFRvUHJvY2Vzcy5y
ZWxlYXNlKCk7Cit9CiAKK1Bhc3NSZWZQdHI8Tm9kZT4gSFRNTDVUcmVlQnVpbGRlcjo6cGFzc1Rv
a2VuVG9MZWdhY3lQYXJzZXIoSFRNTDVUb2tlbiYgdG9rZW4pCit7CiAgICAgaWYgKHRva2VuLnR5
cGUoKSA9PSBIVE1MNVRva2VuOjpET0NUWVBFKSB7CiAgICAgICAgIERvY3R5cGVUb2tlbiBkb2N0
eXBlVG9rZW47CiAgICAgICAgIGRvY3R5cGVUb2tlbi5tX25hbWUuYXBwZW5kKHRva2VuLm5hbWUo
KS5jaGFyYWN0ZXJzKCksIHRva2VuLm5hbWUoKS5sZW5ndGgoKSk7CkBAIC0xMjQsNyArMTM3LDMx
IEBAIFBhc3NSZWZQdHI8Tm9kZT4gSFRNTDVUcmVlQnVpbGRlcjo6cGFzc1Rva2VuVG9MZWdhY3lQ
YXJzZXIoSFRNTDVUb2tlbiYgdG9rZW4pCiAgICAgVG9rZW4gb2xkU3R5bGVUb2tlbjsKICAgICBj
b252ZXJ0VG9PbGRTdHlsZSh0b2tlbiwgb2xkU3R5bGVUb2tlbik7CiAKLSAgICByZXR1cm4gbV9s
ZWdhY3lIVE1MUGFyc2VyLT5wYXJzZVRva2VuKCZvbGRTdHlsZVRva2VuKTsKKyAgICBSZWZQdHI8
Tm9kZT4gcmVzdWx0ID0gIG1fbGVnYWN5SFRNTFBhcnNlci0+cGFyc2VUb2tlbigmb2xkU3R5bGVU
b2tlbik7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MNVRva2VuOjpTdGFydFRhZykgewor
ICAgICAgICAvLyBUaGlzIHdvcmsgaXMgc3VwcG9zZWQgdG8gYmUgZG9uZSBieSB0aGUgcGFyc2Vy
LCBidXQKKyAgICAgICAgLy8gd2hlbiB1c2luZyB0aGUgb2xkIHBhcnNlciBmb3Igd2UgaGF2ZSB0
byBkbyB0aGlzIG1hbnVhbGx5LgorICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IHNjcmlwdFRh
ZykgeworICAgICAgICAgICAgaGFuZGxlU2NyaXB0U3RhcnRUYWcoKTsKKyAgICAgICAgICAgIG1f
bGFzdFNjcmlwdEVsZW1lbnQgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PEVsZW1lbnQ+KHJlc3VsdCk7
CisgICAgICAgIH0gZWxzZSBpZiAodG9rZW4ubmFtZSgpID09IHRleHRhcmVhVGFnIHx8IHRva2Vu
Lm5hbWUoKSA9PSB0aXRsZVRhZykKKyAgICAgICAgICAgIG1fbGV4ZXItPnNldFN0YXRlKEhUTUw1
TGV4ZXI6OlJDREFUQVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAodG9rZW4ubmFtZSgpID09IHN0
eWxlVGFnIHx8IHRva2VuLm5hbWUoKSA9PSBpZnJhbWVUYWcKKyAgICAgICAgICAgICAgICAgfHwg
dG9rZW4ubmFtZSgpID09IHhtcFRhZyB8fCB0b2tlbi5uYW1lKCkgPT0gbm9lbWJlZFRhZykgewor
ICAgICAgICAgICAgLy8gRklYTUU6IG5vc2NyaXB0IGFuZCBub2ZyYW1lcyBtYXkgY29uZGl0aW9u
YWxseSBlbnRlciB0aGlzIHN0YXRlIGFzIHdlbGwuCisgICAgICAgICAgICBtX2xleGVyLT5zZXRT
dGF0ZShIVE1MNUxleGVyOjpSQVdURVhUU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKHRva2Vu
Lm5hbWUoKSA9PSBwbGFpbnRleHRUYWcpCisgICAgICAgICAgICBtX2xleGVyLT5zZXRTdGF0ZShI
VE1MNUxleGVyOjpQTEFJTlRFWFRTdGF0ZSk7CisgICAgfQorICAgIGlmICh0b2tlbi50eXBlKCkg
PT0gSFRNTDVUb2tlbjo6RW5kVGFnKSB7CisgICAgICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gc2Ny
aXB0VGFnKSB7CisgICAgICAgICAgICBpZiAobV9sYXN0U2NyaXB0RWxlbWVudCkgeworICAgICAg
ICAgICAgICAgIGhhbmRsZVNjcmlwdEVuZFRhZyhtX2xhc3RTY3JpcHRFbGVtZW50LmdldCgpKTsK
KyAgICAgICAgICAgICAgICBtX2xhc3RTY3JpcHRFbGVtZW50ID0gMDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAogUGFz
c1JlZlB0cjxOb2RlPiBIVE1MNVRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKEhU
TUw1VG9rZW4mIHRva2VuKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxk
ZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmgKaW5kZXggMzVhZDBjOGE1MGQ0
MTRkZWFkOWVhNTg3NmE1MTcyYTJiNDI2M2M5Yy4uZWU1YmE0NzFiZTA2YjM4MjczMDY1OTI3ZTIy
NzY1ZjNmNzc4NTRkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIu
aAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5oCkBAIC0yOSwxMCArMjksMTMg
QEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBEb2N1bWVudDsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUw1
TGV4ZXI7CiBjbGFzcyBIVE1MNVRva2VuOwogY2xhc3MgSFRNTERvY3VtZW50OwpAQCAtNDQsMjMg
KzQ3LDM1IEBAIHB1YmxpYzoKICAgICBIVE1MNVRyZWVCdWlsZGVyKEhUTUw1TGV4ZXIqLCBIVE1M
RG9jdW1lbnQqLCBib29sIHJlcG9ydEVycm9ycyk7CiAgICAgfkhUTUw1VHJlZUJ1aWxkZXIoKTsK
IAorICAgIHZvaWQgc2V0UGF1c2VkKGJvb2wgcGF1c2VkKSB7IG1faXNQYXVzZWQgPSBwYXVzZWQ7
IH0KKyAgICBib29sIGlzUGF1c2VkKCkgeyByZXR1cm4gbV9pc1BhdXNlZDsgfQorCiAgICAgLy8g
VGhlIHRva2VuIHJlYWxseSBzaG91bGQgYmUgcGFzc2VkIGFzIGEgY29uc3QmIHNpbmNlIGl0J3Mg
bmV2ZXIgbW9kaWZpZWQuCiAgICAgUGFzc1JlZlB0cjxOb2RlPiBjb25zdHJ1Y3RUcmVlRnJvbVRv
a2VuKEhUTUw1VG9rZW4mKTsKKyAgICAvLyBNdXN0IGJlIGNhbGxlZCB3aGVuIHBhcnNlciBpcyBw
YXVzZWQgYmVmb3JlIGNhbGxpbmcgdGhlIHBhcnNlciBhZ2Fpbi4KKyAgICBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IHRha2VTY3JpcHRUb1Byb2Nlc3MoKTsKKworICAgIC8vIERvbmUsIGNsb3NlIGFueSBv
cGVuIHRhZ3MsIGV0Yy4KICAgICB2b2lkIGZpbmlzaGVkKCk7CiAKIHByaXZhdGU6CiAgICAgUGFz
c1JlZlB0cjxOb2RlPiBwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcihIVE1MNVRva2VuJik7CiAgICAg
UGFzc1JlZlB0cjxOb2RlPiBwcm9jZXNzVG9rZW4oSFRNTDVUb2tlbiYsIFVDaGFyIGN1cnJlbnRD
aGFyYWN0ZXIgPSAwKTsKKyAgICAKKyAgICB2b2lkIGhhbmRsZVNjcmlwdFN0YXJ0VGFnKCk7Cisg
ICAgdm9pZCBoYW5kbGVTY3JpcHRFbmRUYWcoRWxlbWVudCopOwogCi0gICAgLy8gV2UgY291bGQg
Z3JhYiBtX2RvY3VtZW50IG9mZiB0aGUgbGV4ZXIgaWYgd2Ugd2FudGVkIHRvIHNhdmUgc3BhY2Uu
Ci0gICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7IC8v
IFRoaXMgaXMgb25seSB1c2VkIGJ5IHRoZSBtX2xlZ2FjeVBhcnNlciBmb3Igbm93LgogICAgIGJv
b2wgbV9yZXBvcnRFcnJvcnM7CisgICAgYm9vbCBtX2lzUGF1c2VkOwogICAgIC8vIEhUTUw1IHNw
ZWMgcmVxdWlyZXMgdGhhdCB3ZSBiZSBhYmxlIHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhlIGxl
eGVyCiAgICAgLy8gZnJvbSB3aXRoaW4gcGFyc2VyIGFjdGlvbnMuCiAgICAgSFRNTDVMZXhlciog
bV9sZXhlcjsKIAogICAgIC8vIFdlJ3JlIHJlLXVzaW5nIGxvZ2ljIGZyb20gdGhlIG9sZCBIVE1M
UGFyc2VyIHdoaWxlIHRoaXMgY2xhc3MgaXMgYmVpbmcgd3JpdHRlbi4KICAgICBPd25QdHI8SFRN
TFBhcnNlcj4gbV9sZWdhY3lIVE1MUGFyc2VyOworICAgIFJlZlB0cjxFbGVtZW50PiBtX2xhc3RT
Y3JpcHRFbGVtZW50OyAvLyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgZm9yIDxzY3JpcHQ+IHN1cHBv
cnQuCisgICAgUmVmUHRyPEVsZW1lbnQ+IG1fc2NyaXB0VG9Qcm9jZXNzOyAvLyBTZXQgdG8gYSA8
c2NyaXB0PiB0YWcgd2hpY2ggbmVlZHMgcHJvY2Vzc2luZy4KIH07CiAKIH0K
</data>
<flag name="review"
          id="41753"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>