<?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>109971</bug_id>
          
          <creation_ts>2013-02-15 14:12:21 -0800</creation_ts>
          <short_desc>Hide MainResourceLoader from the outside world</short_desc>
          <delta_ts>2013-03-15 10:47:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>104969</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>834366</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-02-15 14:12:21 -0800</bug_when>
    <thetext>Currently, the class MainResourceLoader is accessible via DocumentLoader::mainResourceLoader().  As a part of merging MainResourceLoader into DocumentLoader, we need to do something with this function.  Many of the uses of DocumentLoader::mainResourceLoader() would be satisfied by making it return the ResourceLoader that is loading the main resource, rather than the MainResourceLoader (see why we want to delete MainResourceLoader?)  However, at least temporarily, PluginDocument and MediaDocument need to be able to access the main resource&apos;s CachedResource so that they can disable buffering in the cache layer, so we&apos;ll need to expose that, too.

In addition, the class MainResourceLoader is exposed to the WebKit layer via FrameLoaderClient::convertMainResourceLoadToDownload.  This should probably take a DocumentLoader* instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855520</commentid>
    <comment_count>1</comment_count>
      <attachid>193195</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-14 15:17:24 -0700</bug_when>
    <thetext>Created attachment 193195
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856086</commentid>
    <comment_count>2</comment_count>
      <attachid>193195</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-15 10:33:20 -0700</bug_when>
    <thetext>Comment on attachment 193195
patch

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

&gt; Source/WebCore/loader/DocumentLoader.cpp:126
&gt; +ResourceLoader* DocumentLoader::mainResourceLoader() const
&gt; +{
&gt; +    return m_mainResourceLoader ? m_mainResourceLoader-&gt;loader() : 0;
&gt; +}

Nate tells me this slight nuttiness is going to be short-lived.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856090</commentid>
    <comment_count>3</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-15 10:35:07 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 193195 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193195&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/DocumentLoader.cpp:126
&gt; &gt; +ResourceLoader* DocumentLoader::mainResourceLoader() const
&gt; &gt; +{
&gt; &gt; +    return m_mainResourceLoader ? m_mainResourceLoader-&gt;loader() : 0;
&gt; &gt; +}
&gt; 
&gt; Nate tells me this slight nuttiness is going to be short-lived.

Yeah, sadly it has going to be there temporarily unless I did this merger as a 150KB monster patch. Hopefully a week or less, we&apos;ll see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856096</commentid>
    <comment_count>4</comment_count>
      <attachid>193195</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 10:47:25 -0700</bug_when>
    <thetext>Comment on attachment 193195
patch

Clearing flags on attachment: 193195

Committed r145914: &lt;http://trac.webkit.org/changeset/145914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856097</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 10:47:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193195</attachid>
            <date>2013-03-14 15:17:24 -0700</date>
            <delta_ts>2013-03-15 10:47:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>dl_mrl_WK.txt</filename>
            <type>text/plain</type>
            <size>46150</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTg0OSkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAzLTE0
ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSGlkZSBNYWlu
UmVzb3VyY2VMb2FkZXIgZnJvbSB0aGUgb3V0c2lkZSB3b3JsZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTcxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChX
ZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKiBX
ZWJGcmFtZS5oOgorCiAyMDEzLTAzLTE0ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
IHNldHRpbmcgdG8gV2ViQ29yZTo6UGFnZQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJh
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2
aXNpb24gMTQ1ODM1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MCw3ICs4MCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0luRWxl
bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0tleWJvYXJkRXZlbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL01haW5SZXNvdXJjZUxvYWRl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTW91c2VSZWxhdGVkRXZlbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CkBAIC05
MCw2ICs4OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5WaWV3Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QcmludENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxl
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+CkBAIC0xNzkxLDcgKzE3OTEsNyBA
QAogICAgIHBvbGljeURlbGVnYXRlLT51bmFibGVUb0ltcGxlbWVudFBvbGljeVdpdGhFcnJvcihk
LT53ZWJWaWV3LCB3ZWJFcnJvci5nZXQoKSwgdGhpcyk7CiB9CiAKLXZvaWQgV2ViRnJhbWU6OmNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChNYWluUmVzb3VyY2VMb2FkZXIqIG1haW5S
ZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgV2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3Vy
Y2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7CiAgICAgQ09NUHRyPElXZWJEb3dubG9hZERlbGVnYXRlPiBkb3dubG9hZERlbGVnYXRlOwog
ICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKQEAgLTE4MDcsNyArMTgwNyw3IEBACiAgICAg
Ly8gSXRzIHRoZSBkZWxlZ2F0ZSdzIGpvYiB0byByZWYgdGhlIFdlYkRvd25sb2FkIHRvIGtlZXAg
aXQgYWxpdmUgLSBvdGhlcndpc2UgaXQgd2lsbCBiZSBkZXN0cm95ZWQKICAgICAvLyB3aGVuIHRo
aXMgbWV0aG9kIHJldHVybnMKICAgICBDT01QdHI8V2ViRG93bmxvYWQ+IGRvd25sb2FkOwotICAg
IGRvd25sb2FkLmFkb3B0UmVmKFdlYkRvd25sb2FkOjpjcmVhdGVJbnN0YW5jZShtYWluUmVzb3Vy
Y2VMb2FkZXItPmxvYWRlcigpLT5oYW5kbGUoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGRvd25sb2Fk
RGVsZWdhdGUuZ2V0KCkpKTsKKyAgICBkb3dubG9hZC5hZG9wdFJlZihXZWJEb3dubG9hZDo6Y3Jl
YXRlSW5zdGFuY2UoZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpLT5oYW5kbGUo
KSwgcmVxdWVzdCwgcmVzcG9uc2UsIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkpKTsKIH0KIAogYm9v
bCBXZWJGcmFtZTo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1l
bnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgaW50IC8qbGVuZ3RoKi8pCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmgJKHJldmlzaW9uIDE0NTgz
NSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
OCw3ICszMzgsNyBAQAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1l
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRp
b25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdl
YkNvcmU6OkZvcm1TdGF0ZT4pOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1w
bGVtZW50UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICB2aXJ0dWFs
IHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6Ok1haW5SZXNv
dXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNv
dXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwog
CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGludCBsZW5ndGgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkocmV2aXNpb24gMTQ1ODM1KQorKysg
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MTIsNyArNzEyLDcgQEAKICAgICByZXR1cm4gRG9jdW1lbnRMb2Fk
ZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXeDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6Ok1h
aW5SZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojpjb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5oCShyZXZpc2lvbiAxNDU4MzUpCisrKyBTb3VyY2UvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODQsNyArMTg0LDcgQEAKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90
RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwg
V1RGOjpQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKE1haW5SZXNvdXJjZUxv
YWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChE
b2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlh
bFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lv
biAxNDU4NDkpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDEzLTAzLTE0ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSGlkZSBNYWluUmVzb3VyY2VMb2FkZXIgZnJvbSB0aGUgb3V0c2lk
ZSB3b3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA5OTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2Fk
KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKyAgICAg
ICAgKEZyYW1lTG9hZGVyQ2xpZW50V3gpOgorCiAyMDEzLTAzLTE0ICBNYW51ZWwgUmVnbyBDYXNh
c25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBzZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkIHNldHRpbmcgdG8gV2ViQ29yZTo6UGFnZQpJbmRleDogU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5oCShyZXZpc2lvbiAxNDU4MzUpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNyArMjAxLDcg
QEAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKE1haW5SZXNvdXJjZUxvYWRlciosIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNy
ZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5j
cHAJKHJldmlzaW9uIDE0NTgzNSkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODU3LDcgKzg1Nyw3
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLmZhaWxpbmdVUkwoKS51dGY4KCku
ZGF0YSgpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y29udmVydE1haW5SZXNv
dXJjZUxvYWRUb0Rvd25sb2FkKE1haW5SZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKQogewogICAgIGlmICghbV92aWV3KQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDU4NDkpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMy0xNCAgTmF0ZSBDaGFwaW4g
IDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEhpZGUgTWFpblJlc291cmNlTG9hZGVy
IGZyb20gdGhlIG91dHNpZGUgd29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwOTk3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50RWZsKToKKwogMjAxMy0w
My0xNCAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBBZGQgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCBzZXR0aW5nIHRvIFdlYkNvcmU6
OlBhZ2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkocmV2aXNpb24gMTQ1ODM1KQorKysgU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkod29ya2luZyBj
b3B5KQpAQCAtMTg0LDcgKzE4NCw3IEBACiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEJlY29tZUZyYW1lc2V0KGJvb2wpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBh
Z2UoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250
ZXh0KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDE0NTgzNSkKKysrIFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNiBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93Lmgi
CiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0j
aW5jbHVkZSAiTWFpblJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTExMywx
MiArMTExMiwxMiBAQAogICAgIGdfZXJyb3JfZnJlZSh3ZWJFcnJvcik7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChNYWluUmVz
b3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgR1JlZlB0cjxXZWJL
aXROZXR3b3JrUmVxdWVzdD4gbmV0d29ya1JlcXVlc3QoYWRvcHRHUmVmKGtpdE5ldyhyZXF1ZXN0
KSkpOwogICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUp
OwogCi0gICAgd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZG93bmxvYWQodmlldywgbmV0d29ya1Jl
cXVlc3QuZ2V0KCksIHJlc3BvbnNlLCBtYWluUmVzb3VyY2VMb2FkZXItPmxvYWRlcigpLT5oYW5k
bGUoKSk7CisgICAgd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZG93bmxvYWQodmlldywgbmV0d29y
a1JlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLCBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlTG9h
ZGVyKCktPmhhbmRsZSgpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudDo6
Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpJbmRleDogU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1ODQ5KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMTQgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBIaWRlIE1haW5SZXNvdXJjZUxv
YWRlciBmcm9tIHRoZSBvdXRzaWRlIHdvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk5NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50KToKKwogMjAxMy0wMy0x
NCAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBB
ZGQgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCBzZXR0aW5nIHRvIFdlYkNvcmU6OlBh
Z2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAxNDU4MzUpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTA1LDcgKzEwNSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ljb25EYXRhYmFzZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Mb2FkZXJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL01haW5SZXNvdXJjZUxvYWRl
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bh
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGx1Z2luVmlld0Jhc2UuaD4KQEAgLTI3Myw5ICsyNzIs
OSBAQAogICAgIG1fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgPSBuaWw7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3du
bG9hZChNYWluUmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3Zv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9h
ZChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSA9IG1haW5SZXNvdXJjZUxvYWRlci0+bG9hZGVyKCktPmhhbmRsZSgp
OworICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291
cmNlTG9hZGVyKCktPmhhbmRsZSgpOwogCiAjaWYgVVNFKENGTkVUV09SSykKICAgICBBU1NFUlQo
W1dlYkRvd25sb2FkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkV2l0aExv
YWRpbmdDRlVSTENvbm5lY3Rpb246cmVxdWVzdDpyZXNwb25zZTpkZWxlZ2F0ZTpwcm94eTopXSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE0NTgzNSkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDcgKzcxLDcgQEAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50Migp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZyb21QYXJlbnQzKCkgT1ZFUlJJ
REU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2Fk
KFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGFz
c2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KSBPVkVSUklERTsKIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1ODQ5KQorKysg
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTMtMDMtMTQgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBIaWRlIE1haW5SZXNvdXJjZUxvYWRlciBmcm9tIHRoZSBvdXRzaWRlIHdvcmxkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk5NzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVu
dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKToKKwogMjAxMy0wMy0xNCAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdh
bGlhLmNvbT4KIAogICAgICAgICBBZGQgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCBz
ZXR0aW5nIHRvIFdlYkNvcmU6OlBhZ2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCShyZXZp
c2lvbiAxNDU4MzUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V2luQ0UuaAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBACiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCk7CiAKICAgICB2
aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnZl
cnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7CisgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9E
b3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3
b3JraW5nQ29udGV4dCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAJKHJldmlz
aW9uIDE0NTgzNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5Nyw3ICs0OTcsNyBAQAog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxv
YWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC93aW5j
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE0NTg0OSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMTQgIE5hdGUgQ2hhcGluICA8amFw
aGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBIaWRlIE1haW5SZXNvdXJjZUxvYWRlciBmcm9t
IHRoZSBvdXRzaWRlIHdvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDk5NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpjb252ZXJ0TWFpblJlc291
cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V2luQ0UuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50V2luQ0UpOgorCiAyMDEz
LTAzLTE0ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIEFkZCBzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkIHNldHRpbmcgdG8gV2ViQ29y
ZTo6UGFnZQpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDU4
NDkpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMTQgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBIaWRlIE1haW5SZXNvdXJjZUxvYWRlciBmcm9tIHRoZSBvdXRz
aWRlIHdvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDk5NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5Lmg6CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnkpOgorCiAyMDEzLTAzLTE0ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIEFkZCBzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkIHNldHRp
bmcgdG8gV2ViQ29yZTo6UGFnZQpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDE0NTgzNSkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRl
ICJJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0jaW5jbHVk
ZSAiTWFpblJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCiAj
aW5jbHVkZSAiTmV0d29ya01hbmFnZXIuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgpAQCAtMTIz
MCw5ICsxMjI5LDkgQEAKICAgICBtX3dlYlBhZ2VQcml2YXRlLT5sb2FkKHJlcXVlc3QudXJsKCku
c3RyaW5nKCksIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc6OmVtcHR5U3RyaW5nKCksICJH
RVQiLCBOZXR3b3JrUmVxdWVzdDo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSwgMCwgMCwgMCwgMCwg
ZmFsc2UsIGZhbHNlLCB0cnVlLCAiIiwgc3VnZ2VzdGVkTmFtZSk7CiB9CiAKLXZvaWQgRnJhbWVM
b2FkZXJDbGllbnRCbGFja0JlcnJ5Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQo
TWFpblJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
QmxhY2tCZXJyeTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcikKIHsKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RmlsdGVyU3RyZWFt
KiBzdHJlYW0gPSBOZXR3b3JrTWFuYWdlcjo6aW5zdGFuY2UoKS0+c3RyZWFtRm9ySGFuZGxlKG1h
aW5SZXNvdXJjZUxvYWRlci0+bG9hZGVyKCktPmhhbmRsZSgpKTsKKyAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6RmlsdGVyU3RyZWFtKiBzdHJlYW0gPSBOZXR3b3JrTWFuYWdlcjo6aW5zdGFuY2Uo
KS0+c3RyZWFtRm9ySGFuZGxlKGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+
aGFuZGxlKCkpOwogICAgIEFTU0VSVChzdHJlYW0pOwogCiAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+
bV9jbGllbnQtPmRvd25sb2FkUmVxdWVzdGVkKHN0cmVhbSwgci5zdWdnZXN0ZWRGaWxlbmFtZSgp
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEJsYWNrQmVycnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmgJKHJldmlz
aW9uIDE0NTgzNSkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0
NSw3IEBACiAgICAgdmlydHVhbCB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoTWFpblJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQp
OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRT
aXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpOwogICAgIHZp
cnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZp
c2lvbiAxNDU4MzUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw3IEBACiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCk7CiAgICAgdmlydHVhbCBib29s
IGNhbkNhY2hlUGFnZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291
cmNlTG9hZFRvRG93bmxvYWQoCi0gICAgICAgIFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsCisgICAgICAgIFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwKICAgICAgICAgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OktVUkwm
IHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDE0
NTgzNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NjYsNyArMTQ2Niw3IEBACiAKIC8vIERvd25sb2Fk
aW5nIGlzIGhhbmRsZWQgaW4gdGhlIGJyb3dzZXIgcHJvY2Vzcywgbm90IFdlYktpdC4gSWYgd2Ug
Z2V0IHRvIHRoaXMKIC8vIHBvaW50LCBvdXIgZG93bmxvYWQgZGV0ZWN0aW9uIGNvZGUgaW4gdGhl
IFJlc291cmNlRGlzcGF0Y2hlckhvc3QgaXMgYnJva2VuIQotdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEltcGw6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChNYWluUmVzb3VyY2VMb2Fk
ZXIqIG1haW5SZXNvdXJjZUxvYWRlciwKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpjb252
ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9h
ZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNDU4NDkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAzLTE0ICBOYXRl
IENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSGlkZSBNYWluUmVzb3Vy
Y2VMb2FkZXIgZnJvbSB0aGUgb3V0c2lkZSB3b3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpjb252ZXJ0TWFpblJlc291
cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
aDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50SW1wbCk6CisKIDIwMTMtMDMtMTQgIE1hbnVl
bCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRkIHNlbGVj
dFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgc2V0dGluZyB0byBXZWJDb3JlOjpQYWdlCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuaAkocmV2aXNpb24gMTQ1ODM1KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw3ICsy
MDQsNyBAQAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wp
OwogCiAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6TWFpblJlc291
cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291
cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJn
aW5IZWlnaHQpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihj
b25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wp
OwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAxNDU4MzUpCisrKyBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw3ICs1Myw2IEBACiAjZW5kaWYKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIK
ICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiTWFpblJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNjgsNiArNjcsNyBAQAogI2luY2x1ZGUgIlJlbmRl
clBhcnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCkBAIC05ODMsMTIgKzk4MywxMiBAQAogICAgIHJldHVy
biBsb2FkZXIucmVsZWFzZSgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNvbnZl
cnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXIq
IG1haW5SZXNvdXJjZUxvYWRlciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKQogewogICAgIGlmICghbV93ZWJGcmFtZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUU5ldHdvcmtSZXBseUhhbmRsZXIqIGhhbmRsZXIgPSBtYWlu
UmVzb3VyY2VMb2FkZXItPmxvYWRlcigpLT5oYW5kbGUoKS0+Z2V0SW50ZXJuYWwoKS0+bV9qb2I7
CisgICAgUU5ldHdvcmtSZXBseUhhbmRsZXIqIGhhbmRsZXIgPSBkb2N1bWVudExvYWRlci0+bWFp
blJlc291cmNlTG9hZGVyKCktPmhhbmRsZSgpLT5nZXRJbnRlcm5hbCgpLT5tX2pvYjsKICAgICBR
TmV0d29ya1JlcGx5KiByZXBseSA9IGhhbmRsZXItPnJlbGVhc2UoKTsKICAgICBpZiAocmVwbHkp
IHsKICAgICAgICAgaWYgKG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT5mb3J3YXJkVW5zdXBwb3J0
ZWRDb250ZW50KQpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTg0OSkKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTMtMDMtMTQgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBI
aWRlIE1haW5SZXNvdXJjZUxvYWRlciBmcm9tIHRoZSBvdXRzaWRlIHdvcmxkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk5NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisgICAgICAgIChGcmFtZUxvYWRlckNs
aWVudFF0KToKKwogMjAxMy0wMy0xNCAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdh
bGlhLmNvbT4KIAogICAgICAgICBBZGQgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCBz
ZXR0aW5nIHRvIFdlYkNvcmU6OlBhZ2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lv
biAxNDU4MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5
KQpAQCAtMTI4OCw2ICsxMjg4LDcgQEAKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTZt
YWluUmVzb3VyY2VEYXRhRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTdwYXJzZWRB
cmNoaXZlRGF0YUV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE3cmVwb3J0TWVtb3J5
VXNhZ2VFUE4zV1RGMTZNZW1vcnlPYmplY3RJbmZvRQorX19aTks3V2ViQ29yZTE0RG9jdW1lbnRM
b2FkZXIxOG1haW5SZXNvdXJjZUxvYWRlckV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRl
cjE5aXNMb2FkaW5nSW5BUElTZW5zZUV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE5
b3JpZ2luYWxSZXF1ZXN0Q29weUV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjIxYXJj
aGl2ZVJlc291cmNlRm9yVVJMRVJLTlNfNEtVUkxFCkBAIC0xMzY3LDcgKzEzNjgsNiBAQAogX19a
Tks3V2ViQ29yZTE3UmVndWxhckV4cHJlc3Npb241bWF0Y2hFUktOM1dURjZTdHJpbmdFaVBpCiBf
X1pOSzdXZWJDb3JlMTdSZWd1bGFyRXhwcmVzc2lvbjlzZWFyY2hSZXZFUktOM1dURjZTdHJpbmdF
CiBfX1pOSzdXZWJDb3JlMTdSZXNvdXJjZUVycm9yQmFzZThsYXp5SW5pdEV2Ci1fX1pOSzdXZWJD
b3JlMThNYWluUmVzb3VyY2VMb2FkZXI2bG9hZGVyRXYKIF9fWk5LN1dlYkNvcmUxOFBsYXRmb3Jt
UGFzdGVib2FyZDExY2hhbmdlQ291bnRFdgogX19aTks3V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJv
bGxlcjI0bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zRVBOU184RG9jdW1lbnRFCiBfX1pOSzdXZWJD
b3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTJnZXRIaWdobGlnaHRFUE5TXzlIaWdobGlnaHRFCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE0NTgzNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNiBA
QAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxhbmd1
YWdlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRl
ci5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk1lZGlh
UXVlcnlMaXN0LmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeU1hdGNoZXIuaCIKQEAgLTE0MCw2ICsx
MzksNyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVy
Vmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNj
aGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5oIgpJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTQ1ODQ5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTMtMDMtMTQgIE5hdGUgQ2hhcGluICA8amFw
aGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBIaWRlIE1haW5SZXNvdXJjZUxvYWRlciBmcm9t
IHRoZSBvdXRzaWRlIHdvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDk5NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yIG9ubHkuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwv
SFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9NZWRpYURvY3VtZW50LmNwcDoK
KyAgICAgICAgKiBodG1sL1BsdWdpbkRvY3VtZW50LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5S
ZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZmluaXNo
ZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZWNlaXZlZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldE1haW5SZXNvdXJjZURh
dGFCdWZmZXJpbmdQb2xpY3kpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisKIDIwMTMtMDMtMTQgIE1hbnVlbCBSZWdvIENh
c2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRkIHNlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQgc2V0dGluZyB0byBXZWJDb3JlOjpQYWdlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHJldmlzaW9uIDE0NTgzNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDYgQEAKICNpbmNsdWRlICJIVE1MU291cmNlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRl
b0VsZW1lbnQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCi0jaW5jbHVkZSAiTWFpblJl
c291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJSYXdEYXRh
RG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCkBAIC0xMDYs
NyArMTA1LDcgQEAKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFt
ZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZUxvYWRlcigp
LT5zZXREYXRhQnVmZmVyaW5nUG9saWN5KERvTm90QnVmZmVyRGF0YSk7CisgICAgZnJhbWUtPmxv
YWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5zZXRNYWluUmVzb3VyY2VEYXRhQnVmZmVy
aW5nUG9saWN5KERvTm90QnVmZmVyRGF0YSk7CiB9CiAKIHZvaWQgTWVkaWFEb2N1bWVudFBhcnNl
cjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25zdCBjaGFyKiwgc2l6ZV90KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE0NTgzNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiSFRNTEVtYmVkRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxIdG1sRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUg
Ik1haW5SZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlJhd0RhdGFEb2N1bWVudFBhcnNlci5oIgpAQCAtMTMxLDcgKzEz
MCw3IEBACiAgICAgICAgICAgICAvLyBJbiBhIHBsdWdpbiBkb2N1bWVudCwgdGhlIG1haW4gcmVz
b3VyY2UgaXMgdGhlIHBsdWdpbi4gSWYgd2UgaGF2ZSBhIG51bGwgd2lkZ2V0LCB0aGF0IG1lYW5z
CiAgICAgICAgICAgICAvLyB0aGUgbG9hZGluZyBvZiB0aGUgcGx1Z2luIHdhcyBjYW5jZWxsZWQs
IHdoaWNoIGdpdmVzIHVzIGEgbnVsbCBtYWluUmVzb3VyY2VMb2FkZXIoKSwgc28gd2UKICAgICAg
ICAgICAgIC8vIG5lZWQgdG8gaGF2ZSB0aGlzIGNhbGwgaW4gYSBudWxsIGNoZWNrIG9mIHRoZSB3
aWRnZXQgb3Igb2YgbWFpblJlc291cmNlTG9hZGVyKCkuCi0gICAgICAgICAgICBmcmFtZS0+bG9h
ZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZUxvYWRlcigpLT5zZXRE
YXRhQnVmZmVyaW5nUG9saWN5KERvTm90QnVmZmVyRGF0YSk7CisgICAgICAgICAgICBmcmFtZS0+
bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnNldE1haW5SZXNvdXJjZURhdGFCdWZm
ZXJpbmdQb2xpY3koRG9Ob3RCdWZmZXJEYXRhKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE3
OSw3ICsxNzgsOCBAQAogICAgIGlmICghc2hvdWxkTG9hZFBsdWdpbk1hbnVhbGx5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGZyYW1lKCktPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRl
cigpLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+Y2FuY2VsKCk7CisgICAgRG9jdW1lbnRMb2FkZXIq
IGRvY3VtZW50TG9hZGVyID0gZnJhbWUoKS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVy
KCk7CisgICAgZG9jdW1lbnRMb2FkZXItPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWUoKS0+
bG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKGRvY3VtZW50TG9hZGVyLT5yZXF1ZXN0KCkpKTsKICAg
ICBzZXRTaG91bGRMb2FkUGx1Z2luTWFudWFsbHkoZmFsc2UpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTgzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2Jq
ZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNsdWRlICJN
YWluUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJQbHVnaW5Eb2N1bWVudC5oIgogI2luY2x1
ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAxNDU4MzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkljb25EYXRhYmFzZUJhc2UuaCIKICNpbmNs
dWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTdHJpbmdXaXRo
RGlyZWN0aW9uLmgiCkBAIC04NCw3ICs4NSw3IEBACiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2hGcm9tRnJhbWUoKTsKIAogICAgICAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIoKSBjb25z
dDsKLSAgICAgICAgTWFpblJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIoKSBjb25z
dCB7IHJldHVybiBtX21haW5SZXNvdXJjZUxvYWRlci5nZXQoKTsgfQorICAgICAgICBSZXNvdXJj
ZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyKCkgY29uc3Q7CiAgICAgICAgIFBhc3NSZWZQdHI8
UmVzb3VyY2VCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICAgICAgCiAgICAg
ICAgIERvY3VtZW50V3JpdGVyKiB3cml0ZXIoKSBjb25zdCB7IHJldHVybiAmbV93cml0ZXI7IH0K
QEAgLTE5Niw2ICsxOTcsNyBAQAogICAgICAgICB2b2lkIHNldERpZENyZWF0ZUdsb2JhbEhpc3Rv
cnlFbnRyeShib29sIGRpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRyeSkgeyBtX2RpZENyZWF0ZUds
b2JhbEhpc3RvcnlFbnRyeSA9IGRpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRyeTsgfQogICAgICAg
ICAKICAgICAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpOworICAgICAgICB2b2lkIHNl
dE1haW5SZXNvdXJjZURhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSk7CiAK
ICAgICAgICAgdm9pZCBzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKTsKICAgICAgICAgdm9pZCBj
YW5jZWxNYWluUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcAkocmV2aXNpb24gMTQ1ODM1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NiBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJN
YWluUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJQcm9ncmVzc0V2ZW50LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgpAQCAtMTA0
LDcgKzEwMyw3IEBACiAgICAgICAgIGlmIChpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkpIHsK
ICAgICAgICAgICAgIG1fbWFpblJlc291cmNlQXBwbGljYXRpb25DYWNoZSA9IEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6ZmFsbGJhY2tDYWNoZUZvck1haW5SZXF1ZXN0KHJlcXVlc3QsIGRvY3VtZW50
TG9hZGVyKCkpOwogCi0gICAgICAgICAgICBpZiAoc2NoZWR1bGVMb2FkRmFsbGJhY2tSZXNvdXJj
ZUZyb21BcHBsaWNhdGlvbkNhY2hlKGRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZUxvYWRl
cigpLT5sb2FkZXIoKSwgbV9tYWluUmVzb3VyY2VBcHBsaWNhdGlvbkNhY2hlLmdldCgpKSkKKyAg
ICAgICAgICAgIGlmIChzY2hlZHVsZUxvYWRGYWxsYmFja1Jlc291cmNlRnJvbUFwcGxpY2F0aW9u
Q2FjaGUoZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9hZGVyKCksIG1fbWFpblJlc291
cmNlQXBwbGljYXRpb25DYWNoZS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTgsNyArMTE3LDcgQEAKICAgICAgICAgaWYgKGlzQXBw
bGljYXRpb25DYWNoZUVuYWJsZWQoKSkgewogICAgICAgICAgICAgbV9tYWluUmVzb3VyY2VBcHBs
aWNhdGlvbkNhY2hlID0gQXBwbGljYXRpb25DYWNoZUdyb3VwOjpmYWxsYmFja0NhY2hlRm9yTWFp
blJlcXVlc3QocmVxdWVzdCwgbV9kb2N1bWVudExvYWRlcik7CiAKLSAgICAgICAgICAgIGlmIChz
Y2hlZHVsZUxvYWRGYWxsYmFja1Jlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUoZG9jdW1lbnRM
b2FkZXIoKS0+bWFpblJlc291cmNlTG9hZGVyKCktPmxvYWRlcigpLCBtX21haW5SZXNvdXJjZUFw
cGxpY2F0aW9uQ2FjaGUuZ2V0KCkpKQorICAgICAgICAgICAgaWYgKHNjaGVkdWxlTG9hZEZhbGxi
YWNrUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShkb2N1bWVudExvYWRlcigpLT5tYWluUmVz
b3VyY2VMb2FkZXIoKSwgbV9tYWluUmVzb3VyY2VBcHBsaWNhdGlvbkNhY2hlLmdldCgpKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCShyZXZpc2lvbiAxNDU4MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyAr
NDAsNiBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRl
ICJNYWluUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJNYW5pZmVzdFBhcnNlci5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAxNDU4MzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3
OSw2IEBACiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2luY2x1ZGUgIk1haW5SZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNs
dWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWFpblJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTQ1ODM1KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
NSw3ICszMjUsNyBAQAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IHRoaXMtPnJl
cXVlc3QoKTsKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+c2V0T3JpZ2luYWxVUkxGb3JEb3dubG9h
ZFJlcXVlc3QocmVxdWVzdCk7CiAKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPmNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh0aGlzLCByZXF1ZXN0LCByKTsKKyAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3du
bG9hZChkb2N1bWVudExvYWRlcigpLCByZXF1ZXN0LCByKTsKIAogICAgICAgICAvLyBJdCBtaWdo
dCBoYXZlIGdvbmUgbWlzc2luZwogICAgICAgICBpZiAobG9hZGVyKCkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDE0NTgzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyMCw2ICsxMjAsMTEgQEAKICAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCk7CiB9CiAKK1Jl
c291cmNlTG9hZGVyKiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlTG9hZGVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9tYWluUmVzb3VyY2VMb2FkZXIgPyBtX21haW5SZXNvdXJjZUxvYWRl
ci0+bG9hZGVyKCkgOiAwOworfQorCiBEb2N1bWVudExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKCkK
IHsKICAgICBBU1NFUlQoIW1fZnJhbWUgfHwgZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRM
b2FkZXIoKSAhPSB0aGlzIHx8ICFpc0xvYWRpbmcoKSk7CkBAIC0zMTEsOSArMzE2LDkgQEAKICAg
ICBBU1NFUlQoIW1fZnJhbWUtPnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpIHx8IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aXNEZWJ1Z2dlclBhdXNlZChtX2ZyYW1lKSk7CiAjZW5kaWYKIAotICAg
IGlmIChtYWluUmVzb3VyY2VMb2FkZXIoKSAmJiBtYWluUmVzb3VyY2VMb2FkZXIoKS0+aWRlbnRp
ZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSkgewotICAgICAgICBmcmFtZUxvYWRl
cigpLT5ub3RpZmllcigpLT5kaXNwYXRjaERpZEZpbmlzaExvYWRpbmcodGhpcywgbWFpblJlc291
cmNlTG9hZGVyKCktPmlkZW50aWZpZXIoKSwgZmluaXNoVGltZSk7Ci0gICAgICAgIG1haW5SZXNv
dXJjZUxvYWRlcigpLT5jbGVhcklkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVy
KCk7CisgICAgaWYgKG1fbWFpblJlc291cmNlTG9hZGVyICYmIG1fbWFpblJlc291cmNlTG9hZGVy
LT5pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpKSB7CisgICAgICAgIGZy
YW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyh0aGlzLCBt
X21haW5SZXNvdXJjZUxvYWRlci0+aWRlbnRpZmllcigpLCBmaW5pc2hUaW1lKTsKKyAgICAgICAg
bV9tYWluUmVzb3VyY2VMb2FkZXItPmNsZWFySWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3Vy
Y2VMb2FkZXIoKTsKICAgICB9CiAKICNpZiBVU0UoQ09OVEVOVF9GSUxURVJJTkcpCkBAIC0zNTYs
OSArMzYxLDkgQEAKIAogICAgIC8vIElmIHRoZSBkb2N1bWVudCBzcGVjaWZpZWQgYW4gYXBwbGlj
YXRpb24gY2FjaGUgbWFuaWZlc3QsIGl0IHZpb2xhdGVzIHRoZSBhdXRob3IncyBpbnRlbnQgaWYg
d2Ugc3RvcmUgaXQgaW4gdGhlIG1lbW9yeSBjYWNoZQogICAgIC8vIGFuZCBkZW55IHRoZSBhcHBj
YWNoZSB0aGUgY2hhbmNlIHRvIGludGVyY2VwdCBpdCBpbiB0aGUgZnV0dXJlLCBzbyByZW1vdmUg
ZnJvbSB0aGUgbWVtb3J5IGNhY2hlLgotICAgIGlmIChmcmFtZSgpICYmIG1haW5SZXNvdXJjZUxv
YWRlcigpKSB7Ci0gICAgICAgIGlmIChtYWluUmVzb3VyY2VMb2FkZXIoKS0+Y2FjaGVkTWFpblJl
c291cmNlKCkgJiYgZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aGFzTWFuaWZlc3QoKSkKLSAgICAgICAg
ICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShtYWluUmVzb3VyY2VMb2FkZXIoKS0+Y2FjaGVkTWFp
blJlc291cmNlKCkpOworICAgIGlmIChmcmFtZSgpICYmIG1fbWFpblJlc291cmNlTG9hZGVyKSB7
CisgICAgICAgIGlmIChtX21haW5SZXNvdXJjZUxvYWRlci0+Y2FjaGVkTWFpblJlc291cmNlKCkg
JiYgZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aGFzTWFuaWZlc3QoKSkKKyAgICAgICAgICAgIG1lbW9y
eUNhY2hlKCktPnJlbW92ZShtX21haW5SZXNvdXJjZUxvYWRlci0+Y2FjaGVkTWFpblJlc291cmNl
KCkpOwogICAgIH0KICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5maW5pc2hlZExvYWRpbmdN
YWluUmVzb3VyY2UoKTsKIH0KQEAgLTUwMSw4ICs1MDYsOCBAQAogICAgIH0KICNlbmRpZgogCi0g
ICAgaWYgKG1haW5SZXNvdXJjZUxvYWRlcigpLT5pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlcigpKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRj
aERpZFJlY2VpdmVEYXRhKHRoaXMsIG1haW5SZXNvdXJjZUxvYWRlcigpLT5pZGVudGlmaWVyKCks
IGRhdGEsIGxlbmd0aCwgLTEpOworICAgIGlmIChtX21haW5SZXNvdXJjZUxvYWRlci0+aWRlbnRp
ZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSkKKyAgICAgICAgZnJhbWVMb2FkZXIo
KS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YSh0aGlzLCBtX21haW5SZXNvdXJj
ZUxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhLCBsZW5ndGgsIC0xKTsKIAogICAgIG1fYXBwbGlj
YXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgsIC0x
LCBmYWxzZSk7CiAgICAgbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkID0gbW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCk7CkBAIC05MjgsNiArOTMzLDEyIEBACiAgICAgICAgIGRlbGl2ZXJTdWJz
dGl0dXRlUmVzb3VyY2VzQWZ0ZXJEZWxheSgpOwogfQogCit2b2lkIERvY3VtZW50TG9hZGVyOjpz
ZXRNYWluUmVzb3VyY2VEYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0
YUJ1ZmZlcmluZ1BvbGljeSkKK3sKKyAgICBpZiAobV9tYWluUmVzb3VyY2VMb2FkZXIpCisgICAg
ICAgIG1fbWFpblJlc291cmNlTG9hZGVyLT5zZXREYXRhQnVmZmVyaW5nUG9saWN5KGRhdGFCdWZm
ZXJpbmdQb2xpY3kpOworfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZ1BsdWdJ
bnMoKQogewogICAgIGNhbmNlbEFsbChtX3BsdWdJblN0cmVhbUxvYWRlcnMpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE0NTgzNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NCw3ICs4NCw2IEBACiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiAgICAg
Y2xhc3MgSW50U2l6ZTsKICAgICBjbGFzcyBLVVJMOwotICAgIGNsYXNzIE1haW5SZXNvdXJjZUxv
YWRlcjsKICAgICBjbGFzcyBNZXNzYWdlRXZlbnQ7CiAgICAgY2xhc3MgTmF2aWdhdGlvbkFjdGlv
bjsKICAgICBjbGFzcyBQYWdlOwpAQCAtOTMsNyArOTIsNiBAQAogICAgIGNsYXNzIFBvbGljeUNo
ZWNrZXI7CiAgICAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKICAgICBjbGFzcyBSZXNvdXJjZUhhbmRs
ZTsKLSAgICBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpA
QCAtMjcyLDcgKzI3MCw3IEBACiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEJlY29t
ZUZyYW1lc2V0KGJvb2wpID0gMDsgLy8gQ2FuIGNoYW5nZSBkdWUgdG8gbmF2aWdhdGlvbiBvciBE
T00gbW9kaWZpY2F0aW9uLgogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBj
b25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQoTWFpblJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRN
YWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAKICAgICAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGlu
dCBtYXJnaW5IZWlnaHQpID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4g
Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtV
UkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDE0NTgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDcgKzIyOCw3IEBACiAgICAg
dmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoZWRGcm9tUGFyZW50MygpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWlu
UmVzb3VyY2VMb2FkVG9Eb3dubG9hZChNYWluUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJREUgeyB9CisgICAgdmly
dHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRl
ciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBPVkVS
UklERSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVx
dWVzdCh1bnNpZ25lZCBsb25nLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkocmV2aXNpb24gMTQ1
ODM1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAKICAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2
NF90IGRvd25sb2FkSUQpOwogCiAgICAgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lk
IGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKIAogICAgIFN0cmluZyBzb3VyY2UoKSBjb25zdDsKICAgICBTdHJpbmcg
Y29udGVudHNBc1N0cmluZygpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAxNDU4MzUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MiwxMyArNTIsMTMgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0pTQ1NTU3R5bGVEZWNsYXJhdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9K
U1JhbmdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9NYWluUmVzb3VyY2VMb2FkZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob2Rl
VHJhdmVyc2FsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbHVnaW5Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVHJlZUFzVGV4dC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0
UmVzb3VyY2VEZWNvZGVyLmg+CkBAIC0yNDcsNyArMjQ3LDcgQEAKICAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHBvbGljeURvd25sb2FkSUQs
IHJlcXVlc3QpOwogfQogCi12b2lkIFdlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQoTWFpblJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
Cit2b2lkIFdlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1l
bnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEFTU0VSVChtX3BvbGlj
eURvd25sb2FkSUQpOwogCkBAIC0yNjEsNyArMjYxLDcgQEAKICAgICB9CiAjZW5kaWYKIAotICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmRvd25sb2FkTWFuYWdlcigpLmNvbnZlcnRIYW5kbGVUb0Rv
d25sb2FkKHBvbGljeURvd25sb2FkSUQsIG1haW5SZXNvdXJjZUxvYWRlci0+bG9hZGVyKCktPmhh
bmRsZSgpLCByZXF1ZXN0LCByZXNwb25zZSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuZG93
bmxvYWRNYW5hZ2VyKCkuY29udmVydEhhbmRsZVRvRG93bmxvYWQocG9saWN5RG93bmxvYWRJRCwg
ZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpLT5oYW5kbGUoKSwgcmVxdWVzdCwg
cmVzcG9uc2UpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0IApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTQ1ODM1KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9v
bCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY29udmVy
dE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJj
ZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIE9WRVJS
SURFOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRl
RnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNv
cmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBh
bGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgT1ZFUlJJ
REU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMTQ1
ODM1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNTYsOSArMTI1Niw5IEBACiAg
ICAgcmV0dXJuICFtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb247CiB9CiAKLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChNYWlu
UmVzb3VyY2VMb2FkZXIgKm1haW5SZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVu
dExvYWRlciAqZG9jdW1lbnRMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgbV9mcmFtZS0+Y29udmVy
dE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKG1haW5SZXNvdXJjZUxvYWRlciwgcmVxdWVzdCwg
cmVzcG9uc2UpOworICAgIG1fZnJhbWUtPmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9h
ZChkb2N1bWVudExvYWRlciwgcmVxdWVzdCwgcmVzcG9uc2UpOwogfQogCiBQYXNzUmVmUHRyPEZy
YW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LApJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1ODQ5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDMtMTQgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBIaWRlIE1haW5SZXNvdXJjZUxv
YWRlciBmcm9tIHRoZSBvdXRzaWRlIHdvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk5NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9E
b3dubG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAg
ICAgIChXZWJGcmFtZSk6CisKIDIwMTMtMDMtMTQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWJLaXQyXSBPbmx5IHByZXByb2Nlc3Mgc2FuZGJveCBwcm9maWxl
cyBpZiB3ZSdyZSBidWlsZGluZyBmb3IgdGhlIE9TIFggU0RLCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>