<?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>105779</bug_id>
          
          <creation_ts>2012-12-26 15:51:04 -0800</creation_ts>
          <short_desc>Add an initial stab at a generic supplemental interface for WebProcess</short_desc>
          <delta_ts>2012-12-27 11:14:06 -0800</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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>797402</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-26 15:51:04 -0800</bug_when>
    <thetext>Add an initial stab at a generic supplimental interface for WebProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797445</commentid>
    <comment_count>1</comment_count>
      <attachid>180774</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-26 18:55:36 -0800</bug_when>
    <thetext>Created attachment 180774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797446</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-26 18:57:47 -0800</bug_when>
    <thetext>Attachment 180774 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/WebProcess/KeyValueStorage/WebKeyValueStorageManager.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797595</commentid>
    <comment_count>3</comment_count>
      <attachid>180774</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-12-27 10:01:00 -0800</bug_when>
    <thetext>Comment on attachment 180774
Patch

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

Change looks OK, but not sure about the rationale for using a class and virtual functions here.

&gt; Source/WebKit2/WebProcess/WebProcessSupplement.h:43
&gt; +    virtual void initialize(const WebProcessCreationParameters&amp;)
&gt; +    {
&gt; +    }

I don’t understand why this is a virtual function, thus I don’t understand the purpose of the WebProcessSupplement class. I see no clients that are calling this function polymorphically. It seems to me that we could just have a calling convention about having initialize functions that take WebProcessCreationParameters instead of a base class with virtual functions.

If this does stay a class, then given the way this is currently used, I suggest a pure virtual function here instead. Callers aren’t calling through to the base class, and all derived classes are required to implement this, it seems.

&gt; Source/WebKit2/WebProcess/KeyValueStorage/WebKeyValueStorageManager.h:40
&gt; -class WebKeyValueStorageManager : public WebCore::StorageTrackerClient, private CoreIPC::MessageReceiver {
&gt; +class WebKeyValueStorageManager : public WebCore::StorageTrackerClient, public WebProcessSupplement {

Why public derivation from the WebProcessSupplement base class? What client needs to know this is a supplement? I couldn’t find that line of code. It seems all the clients need is the initialize function, which is defined publicly below and does not depend on the base class at all. So this should be public inheritance, or perhaps not inheritance at all (see my comment above).

&gt; Source/WebKit2/WebProcess/KeyValueStorage/WebKeyValueStorageManager.h:46
&gt; +    // WebProcessSupplement
&gt; +    virtual void initialize(const WebProcessCreationParameters&amp;) OVERRIDE;

To me this seems simply a part of the initialization process for this class and not really related to the base class in any interesting way. Not clear why the function is virtual nor why OVERRIDE is relevant.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.h:40
&gt; -class WebDatabaseManager : public WebCore::DatabaseManagerClient, private CoreIPC::MessageReceiver {
&gt; +class WebDatabaseManager : public WebCore::DatabaseManagerClient, public WebProcessSupplement {

Same question about public derivation as above.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.h:46
&gt; +    // WebProcessSupplement
&gt; +    virtual void initialize(const WebProcessCreationParameters&amp;) OVERRIDE;

Same comments as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797629</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-27 11:09:25 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 180774 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180774&amp;action=review
&gt; 
&gt; Change looks OK, but not sure about the rationale for using a class and virtual functions here.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebProcessSupplement.h:43
&gt; &gt; +    virtual void initialize(const WebProcessCreationParameters&amp;)
&gt; &gt; +    {
&gt; &gt; +    }
&gt; 
&gt; I don’t understand why this is a virtual function, thus I don’t understand the purpose of the WebProcessSupplement class. I see no clients that are calling this function polymorphically. It seems to me that we could just have a calling convention about having initialize functions that take WebProcessCreationParameters instead of a base class with virtual functions.
&gt; 
&gt; If this does stay a class, then given the way this is currently used, I suggest a pure virtual function here instead. Callers aren’t calling through to the base class, and all derived classes are required to implement this, it seems.
&gt; 

Ah, indeed, adding the intent would have been wise on my part.  The general idea is to have a system where the WebProcess object holds map of something (probably a name)-&gt;WebProcessSupplement, so that it is possible to extend the WebProcess object without polluting the object itself.  (This will be useful to those that want to extend it in ways that aren&apos;t needed or wanted by every port.) 

Once there is a map, the virtual functions (which in the derived class will be able to become private at that time) will make more sense.  The reason this looks a bit odd right now, is that I am trying to stage it as not to have too large a patch and not break too much each time.  I will add the explanation to the ChangeLog where it should have been to start with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797630</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-27 11:14:06 -0800</bug_when>
    <thetext>Committed r138511: &lt;http://trac.webkit.org/changeset/138511&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180774</attachid>
            <date>2012-12-26 18:55:36 -0800</date>
            <delta_ts>2012-12-27 10:01:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105779-20121226215248.patch</filename>
            <type>text/plain</type>
            <size>18515</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzODQ4NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEyLTI2ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGFuIGluaXRpYWwgc3RhYiBhdCBh
IGdlbmVyaWMgc3VwcGxpbWVudGFsIGludGVyZmFjZSBmb3IgV2ViUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzc5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9LZXlWYWx1ZVN0b3JhZ2Uv
V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZh
bHVlU3RvcmFnZU1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0tleVZhbHVlU3RvcmFnZS9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
Lmg6CisgICAgICAgIChXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRGlyZWN0b3J5KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjppbml0aWFsaXplKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oOgor
ICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVu
Y2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmtleVZhbHVlU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYlByb2Nlc3Mp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUHJvY2Vzc1N1cHBsZW1lbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzU3VwcGxlbWVudDo6fldlYlByb2Nlc3NTdXBwbGVtZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1N1cHBsZW1lbnQ6OmluaXRpYWxpemUpOgorCiAy
MDEyLTEyLTI2ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBYbWFzIGJ1aWxkZml4IGFmdGVyIHIxMzg0NzkuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzODQ3OCkKKysrIFNvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMDcsNiArMTIwNyw3IEBA
IHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVuZG9TdGVwLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29ubmVjdGlv
blRvVUlQcm9jZXNzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25uZWN0
aW9uVG9VSVByb2Nlc3MuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
U3VwcGxlbWVudC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1Rhcmdl
dC5wcmkJKHJldmlzaW9uIDEzODQ3OCkKKysrIFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkJKHdv
cmtpbmcgY29weSkKQEAgLTM4OSw2ICszODksNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVuZG9TdGVwLmggXAogICAgIFdlYlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNz
LmggXAorICAgIFdlYlByb2Nlc3MvV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCBcCiAgICAgV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmggXAogICAgIFdlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVuZGxlLmgg
XAogICAgIFdlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVuZGxlUGFnZS5oIFwKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDEzODQ3OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTM0LDYgKzkzNCw3IEBACiAJCUJDREUwQUJGMTMy
NzI3MDgwMDEyNTlGQiAvKiBQbHVnaW5Qcm9jZXNzLmFwcCBpbiBDb3B5RmlsZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNERTA5NDIxMzI3MjQ5NjAwMTI1OUZCIC8qIFBs
dWdpblByb2Nlc3MuYXBwICovOyB9OwogCQlCQ0UwOTM3NzE0RkIxMjhDMDAxMTM4RDkgLyogTGF5
ZXJIb3N0aW5nQ29udGV4dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRTA5Mzc1MTRGQjEyOEIwMDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0
Lm1tICovOyB9OwogCQlCQ0UwOTM3ODE0RkIxMjhDMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNF
MDkzNzYxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQuaCAqLzsgfTsKKwkJ
QkNFMEU0MjUxNjhCN0EyODAwNTdFNjZBIC8qIFdlYlByb2Nlc3NTdXBwbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0UwRTQyNDE2OEI3QTI4
MDA1N0U2NkEgLyogV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCAqLzsgfTsKIAkJQkNFMTdCN0QxMzgx
RjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFMTdCN0IxMzgxRjExNzAwMTJBNjQxIC8qIFdL
UGFnZVByaXZhdGVNYWMuY3BwICovOyB9OwogCQlCQ0UxN0I3RTEzODFGMTE3MDAxMkE2NDEgLyog
V0tQYWdlUHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNFMTdCN0MxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0UyMzE1
RDEyMkMzMENBMDBENUMzNUEgLyogV2ViVVJMUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFMjMxNUIxMjJDMzBDQTAwRDVDMzVBIC8qIFdl
YlVSTFJlcXVlc3QuaCAqLzsgfTsKQEAgLTIyMDIsNiArMjIwMyw3IEBACiAJCUJDREUwOTQyMTMy
NzI0OTYwMDEyNTlGQiAvKiBQbHVnaW5Qcm9jZXNzLmFwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5hcHBsaWNhdGlvbjsgaW5jbHVkZUlu
SW5kZXggPSAwOyBwYXRoID0gUGx1Z2luUHJvY2Vzcy5hcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCUJDRTA5Mzc1MTRGQjEyOEIwMDExMzhEOSAvKiBMYXllckhvc3Rp
bmdDb250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGF5
ZXJIb3N0aW5nQ29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFMDkz
NzYxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5ZXJIb3N0aW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQ0UwRTQyNDE2OEI3QTI4MDA1N0U2NkEgLyogV2ViUHJvY2Vzc1N1
cHBsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc1N1
cHBsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFMTdCN0IxMzgxRjEx
NzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV0tQYWdlUHJpdmF0ZU1hYy5jcHA7IHBhdGggPSBtYWMvV0tQYWdlUHJp
dmF0ZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRTE3QjdDMTM4MUYx
MTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdLUGFnZVByaXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9XS1BhZ2VQcml2YXRlTWFj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRTIzMTVCMTIyQzMwQ0EwMEQ1QzM1
QSAvKiBXZWJVUkxSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlVSTFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzNzcsNiArMzM3
OSw3IEBACiAJCQkJMUE2RkEzMTUxMUUzOTIzNjAwREIxMzcxIC8qIFdlYktpdE1haW4uY3BwICov
LAogCQkJCUJDMTExQUUzMTEyRjVDMjYwMDMzN0JBQiAvKiBXZWJQcm9jZXNzLmNwcCAqLywKIAkJ
CQlCQzAzMkQ5MTEwRjQzN0FGMDA1OEMxNUEgLyogV2ViUHJvY2Vzcy5oICovLAorCQkJCUJDRTBF
NDI0MTY4QjdBMjgwMDU3RTY2QSAvKiBXZWJQcm9jZXNzU3VwcGxlbWVudC5oICovLAogCQkJCUJD
MzA2NkI5MTI1QTQzNjMwMEU3MTI3OCAvKiBXZWJQcm9jZXNzLm1lc3NhZ2VzLmluICovLAogCQkJ
CTFBNkZBMDFGMTFFMTUyODcwMERCMTM3MSAvKiBXZWJQcm9jZXNzTWFpbi5oICovLAogCQkJKTsK
QEAgLTUwMjAsNiArNTAyMyw3IEBACiAJCQkJMUFEMjVFOTYxNjdBQjA4MTAwRUE5QkNEIC8qIERv
d25sb2FkUHJveHlNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5ODlBNDE0MTY3RDE4NEIwMDRG
OTZEMiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQTUw
NUZBMTY4MDAyNTUwMEE5MzBFQiAvKiBXZWJDb250ZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQlCQ0UwRTQyNTE2OEI3QTI4MDA1N0U2NkEgLyogV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAxMzg0NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQsMTYgKzI1NCwxNCBAQCB2b2lkIFdlYlBy
b2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKGNvCiAgICAgfQogCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKLSAgICAvLyBNYWtlIHN1cmUgdGhlIFdlYkRhdGFiYXNlTWFuYWdlciBpcyBpbml0
aWFsaXplZCBzbyB0aGF0IHRoZSBEYXRhYmFzZSBkaXJlY3RvcnkgaXMgc2V0LgotICAgIG1fZGF0
YWJhc2VNYW5hZ2VyLT5pbml0aWFsaXplKHBhcmFtZXRlcnMuZGF0YWJhc2VEaXJlY3RvcnkpOwor
ICAgIG1fZGF0YWJhc2VNYW5hZ2VyLT5pbml0aWFsaXplKHBhcmFtZXRlcnMpOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoSUNPTkRBVEFCQVNFKQogICAgIG1faWNvbkRhdGFiYXNlUHJveHktPnNldEVu
YWJsZWQocGFyYW1ldGVycy5pY29uRGF0YWJhc2VFbmFibGVkKTsKICNlbmRpZgogCi0gICAgU3Rv
cmFnZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGly
ZWN0b3J5LCBtX2tleVZhbHVlU3RvcmFnZU1hbmFnZXIpOwotICAgIG1fbG9jYWxTdG9yYWdlRGly
ZWN0b3J5ID0gcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgbV9rZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyLT5pbml0aWFsaXplKHBhcmFtZXRlcnMpOwogCiAgICAgaWYgKCFwYXJh
bWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBjYWNo
ZVN0b3JhZ2UoKS5zZXRDYWNoZURpcmVjdG9yeShwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkpOwpAQCAtNDUyLDYgKzQ1MCwxMSBAQCBXZWJDb29raWVNYW5hZ2VyJiBXZWJQcm9j
ZXNzOjpjb29raWVNYW5hCiAgICAgcmV0dXJuICptX2Nvb2tpZU1hbmFnZXI7CiB9CiAKK1dlYktl
eVZhbHVlU3RvcmFnZU1hbmFnZXImIFdlYlByb2Nlc3M6OmtleVZhbHVlU3RvcmFnZU1hbmFnZXIo
KQoreworICAgIHJldHVybiAqbV9rZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOworfQorCiBEb3dubG9h
ZE1hbmFnZXImIFdlYlByb2Nlc3M6OmRvd25sb2FkTWFuYWdlcigpCiB7CiAjaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CShyZXZpc2lvbiAxMzg0NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDYgKzE4Myw3IEBAIHB1YmxpYzoKICAgICBXZWJB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlciYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIoKTsKICAgICBX
ZWJSZXNvdXJjZUNhY2hlTWFuYWdlciYgcmVzb3VyY2VDYWNoZU1hbmFnZXIoKTsKICAgICBXZWJD
b29raWVNYW5hZ2VyJiBjb29raWVNYW5hZ2VyKCk7CisgICAgV2ViS2V5VmFsdWVTdG9yYWdlTWFu
YWdlciYga2V5VmFsdWVTdG9yYWdlTWFuYWdlcigpOwogICAgIERvd25sb2FkTWFuYWdlciYgZG93
bmxvYWRNYW5hZ2VyKCk7CiAgICAgQXV0aGVudGljYXRpb25NYW5hZ2VyJiBhdXRoZW50aWNhdGlv
bk1hbmFnZXIoKTsKIApAQCAtMjA0LDggKzIwNSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xl
YXJSZXNvdXJjZUNhY2hlcyhSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgPSBBbGxSZXNvdXJjZUNhY2hl
cyk7CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25z
dCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsgfQotCiAjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQogICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciYgcGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCk7CiAjZW5kaWYKQEAgLTM5OCw4ICszOTcsNiBAQCBwcml2
YXRlOgogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIqIG1fbm90aWZpY2F0aW9uTWFuYWdlcjsK
ICNlbmRpZgogICAgIFdlYkljb25EYXRhYmFzZVByb3h5KiBtX2ljb25EYXRhYmFzZVByb3h5Owot
ICAgIAotICAgIFN0cmluZyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKIAogI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiAgICAgdm9pZCBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzc1N1cHBsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3NTdXBw
bGVtZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3NTdXBwbGVtZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlByb2Nlc3NTdXBwbGVtZW50X2gKKyNkZWZpbmUgV2ViUHJvY2Vzc1N1
cHBsZW1lbnRfaAorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKKworY2xhc3Mg
V2ViUHJvY2Vzc1N1cHBsZW1lbnQgOiBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJQcm9jZXNzU3VwcGxlbWVudCgpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFdlYlByb2Nlc3NTdXBwbGVtZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvS2V5VmFsdWVTdG9yYWdlL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvS2V5VmFsdWVTdG9yYWdl
L1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxMzg0NzkpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0tleVZhbHVlU3RvcmFnZS9XZWJLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYktleVZhbHVl
U3RvcmFnZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhh
c2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VUcmFja2VyLmg+CkBAIC00NCw2ICs0NSwx
MiBAQCBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpXZWJLZXlWYWx1ZVN0CiAgICAgbV9wcm9j
ZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYktleVZhbHVlU3RvcmFnZU1hbmFn
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7CiB9CiAKK3ZvaWQgV2ViS2V5VmFsdWVT
dG9yYWdlTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIFN0b3JhZ2VUcmFja2VyOjppbml0aWFsaXplVHJhY2tl
cihwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgdGhpcyk7CisgICAgbV9sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeTsKK30KKwog
dm9pZCBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBD
b3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBkaWRSZWNlaXZlV2ViS2V5
VmFsdWVTdG9yYWdlTWFuYWdlck1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVy
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvS2V5VmFsdWVTdG9yYWdlL1dlYktl
eVZhbHVlU3RvcmFnZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0tleVZhbHVlU3RvcmFnZS9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHJldmlz
aW9uIDEzODQ3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvS2V5VmFsdWVTdG9yYWdl
L1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYs
MTAgQEAKICNpZm5kZWYgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcl9oCiAjZGVmaW5lIFdlYktl
eVZhbHVlU3RvcmFnZU1hbmFnZXJfaAogCi0jaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1N0b3Jh
Z2VUcmFja2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTM2LDEzICszNywxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFdlYlByb2Nlc3M7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCi1jbGFzcyBXZWJL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyQ2xp
ZW50LCBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBXZWJLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyQ2xpZW50LCBw
dWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYktleVZh
bHVlU3RvcmFnZU1hbmFnZXIoV2ViUHJvY2VzcyopOwogCisgICAgLy8gV2ViUHJvY2Vzc1N1cHBs
ZW1lbnQKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJikgT1ZFUlJJREU7CisKKyAgICBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFn
ZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OyB9CisK
IHByaXZhdGU6Ci0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURF
OworICAgIC8vIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURFOwogICAgIHZvaWQgZGlkUmVjZWl2ZVdl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXJNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAKICAgICB2b2lkIGdl
dEtleVZhbHVlU3RvcmFnZU9yaWdpbnModWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC01Niw3ICs2
Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdPcmlnaW5z
KCkgT1ZFUlJJREU7CiAKICAgICBWZWN0b3I8dWludDY0X3Q+IG1fb3JpZ2luc1JlcXVlc3RDYWxs
YmFja0lEczsKLQorICAgIFN0cmluZyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBXZWJQ
cm9jZXNzKiBtX3Byb2Nlc3M7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwCShyZXZpc2lvbiAxMzg0NzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYkRhdGFiYXNlTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFz
ZU1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CkBAIC00NSwx
MiArNDYsMTEgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1hbmFnZXIoVwogICAg
IDogbV9wcm9jZXNzKHByb2Nlc3MpCiB7CiAgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkRhdGFiYXNlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0
aGlzKTsKLQogfQogCi12b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBT
dHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmluaXRp
YWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsK
LSAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5pbml0aWFsaXplKGRhdGFiYXNlRGlyZWN0
b3J5KTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5pbml0aWFsaXplKHBhcmFtZXRl
cnMuZGF0YWJhc2VEaXJlY3RvcnkpOwogICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNl
dENsaWVudCh0aGlzKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oCShyZXZp
c2lvbiAxMzg0NzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkRhdGFiYXNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rh
dGFiYXNlTWFuYWdlckNsaWVudC5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgpAQCAtMzcsMTEgKzM3LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJQcm9jZXNzOwogCi1jbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXIgOiBwdWJsaWMg
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyQ2xpZW50LCBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7CitjbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXIgOiBwdWJsaWMgV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyQ2xpZW50LCBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdlYkRhdGFiYXNlTWFuYWdlcik7CiBwdWJsaWM6Ci0gICAgV2Vi
RGF0YWJhc2VNYW5hZ2VyKFdlYlByb2Nlc3MqKTsKLSAgICB2b2lkIGluaXRpYWxpemUoY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7CisgICAgZXhwbGljaXQgV2ViRGF0YWJhc2VNYW5h
Z2VyKFdlYlByb2Nlc3MqKTsKKworICAgIC8vIFdlYlByb2Nlc3NTdXBwbGVtZW50CisgICAgdmly
dHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYp
IE9WRVJSSURFOwogCiAgICAgdm9pZCBzZXRRdW90YUZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9y
aWdpbklkZW50aWZpZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkgY29uc3Q7CiAgICAgdm9p
ZCBkZWxldGVBbGxEYXRhYmFzZXMoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDEzODQ3OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjgsNiArNjgsNyBAQAogI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgogI2luY2x1ZGUgIldl
Ykluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYk5vdGlm
aWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAtMTA3LDYgKzEwOCw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsdWdpbkRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QcmludENvbnRl
eHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JhbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5k
ZXJMYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVHJlZUFzVGV4dC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgpAQCAtMTIyLDEzICsxMjQsMTEgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3Vic3RpdHV0ZURh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVmlzaWJsZVBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9tYXJrdXAuaD4KICNpbmNs
dWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogCi0j
aW5jbHVkZSA8V2ViQ29yZS9SYW5nZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVBvc2l0
aW9uLmg+Ci0KICNpZiBFTkFCTEUoTUhUTUwpCiAjaW5jbHVkZSA8V2ViQ29yZS9NSFRNTEFyY2hp
dmUuaD4KICNlbmRpZgpAQCAtMjM0Myw3ICsyMzQzLDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQ
cmVmZXJlbmNlcyhjb25zdCBXZQogICAgIHNldHRpbmdzLT5zZXRGdWxsU2NyZWVuRW5hYmxlZChz
dG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmZ1bGxTY3JlZW5FbmFi
bGVkS2V5KCkpKTsKICNlbmRpZgogCi0gICAgc2V0dGluZ3MtPnNldExvY2FsU3RvcmFnZURhdGFi
YXNlUGF0aChXZWJQcm9jZXNzOjpzaGFyZWQoKS5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7Cisg
ICAgc2V0dGluZ3MtPnNldExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aChXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5rZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKCkubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpOwog
CiAjaWYgVVNFKEFWRk9VTkRBVElPTikKICAgICBzZXR0aW5ncy0+c2V0QVZGb3VuZGF0aW9uRW5h
YmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmlzQVZGb3Vu
ZGF0aW9uRW5hYmxlZEtleSgpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52
Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShy
ZXZpc2lvbiAxMzg0NzgpCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTE2MTksNiArMTYxOSwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlByb2Nlc3NTdXBwbGVt
ZW50LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFdlYlByb2Nlc3NcV2ViUHJvY2Vzcy5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgo=
</data>
<flag name="review"
          id="198167"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>