<?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>144661</bug_id>
          
          <creation_ts>2015-05-05 20:37:30 -0700</creation_ts>
          <short_desc>[iOS] Close all open databases in expiration handler of process assertion</short_desc>
          <delta_ts>2015-05-11 15:58:52 -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>iPhone / iPad</rep_platform>
          <op_sys>iOS 8.2</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=144657</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=144880</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>beidson</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1092021</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-05 20:37:30 -0700</bug_when>
    <thetext>We should interrupt all in-progress database transactions on expiration of a UIProcess process assertion so that the WebProcess is not terminated on suspension because it is holding a lock on a database file (since it is performing a database transaction).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092022</commentid>
    <comment_count>1</comment_count>
      <attachid>252444</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-05 20:40:48 -0700</bug_when>
    <thetext>Created attachment 252444
Part 1: Add infrastructure to interrupt all databases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092345</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-05-06 15:13:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/20845052&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093030</commentid>
    <comment_count>3</comment_count>
      <attachid>252681</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-07 21:29:28 -0700</bug_when>
    <thetext>Created attachment 252681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093031</commentid>
    <comment_count>4</comment_count>
      <attachid>252682</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-07 21:36:21 -0700</bug_when>
    <thetext>Created attachment 252682
Patch

Remove whitespace inadvertently added to -[WebDatabaseManager endBackgroundTask].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093601</commentid>
    <comment_count>5</comment_count>
      <attachid>252682</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-10 15:11:18 -0700</bug_when>
    <thetext>Comment on attachment 252682
Patch

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

&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:311
&gt; +    Vector&lt;RefPtr&lt;Database&gt;&gt; openDatabases;

Might be able to use Vector&lt;Ref&lt;Database&gt;&gt; here instead.

&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:321
&gt; +        for (auto&amp; databaseOrigin : *m_openDatabaseMap) {
&gt; +            for (auto&amp; databaseName : *databaseOrigin.value) {
&gt; +                for (auto&amp; database : *databaseName.value)
&gt; +                    openDatabases.append(database);
&gt; +            }
&gt; +        }

This should be written using values():

    for (auto&amp; nameMap : m_openDatabaseMap-&gt;values()) {
        for (auto&amp; set : nameMap-&gt;values()) {
            for (auto&amp; database : *set)
                openDatabases.append(database);
        }
    }

&gt; Source/WebKit2/UIProcess/ProcessThrottler.h:44
&gt; +class ProcessThrottler : public ProcessAssertionClient {

Please make this private inheritance instead.

&gt; Source/WebKit2/UIProcess/ProcessThrottler.h:61
&gt; +    // ProcessAssertionClient
&gt; +    void assertionWillExpireImminently() override;

Please make this private.

&gt; Source/WebKit2/UIProcess/ios/ProcessAssertionIOS.mm:47
&gt; +- (void)addClient:(ProcessAssertionClient *)client;
&gt; +- (void)removeClient:(ProcessAssertionClient *)client;

Wrong formatting. ProcessAssertionClient isn’t an Objective-C class. Also, these arguments should be references, not pointers.

&gt; Source/WebKit2/UIProcess/ios/ProcessAssertionIOS.mm:56
&gt; +    HashSet&lt;ProcessAssertionClient *&gt; _clients;

Wrong formatting. ProcessAssertionClient isn’t an Objective-C class.

&gt; Source/WebKit2/UIProcess/ios/ProcessAssertionIOS.mm:111
&gt; +            for (auto* client : _clients)
&gt; +                client-&gt;assertionWillExpireImminently();

What guarantees the body of assertionWillExpireImminently won’t call something that could reenter and call addClient: or removeClient: while iterating _clients?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093785</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-11 09:58:30 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:311
&gt; &gt; +    Vector&lt;RefPtr&lt;Database&gt;&gt; openDatabases;
&gt; 
&gt; Might be able to use Vector&lt;Ref&lt;Database&gt;&gt; here instead.
&gt; 

Will use Vector&lt;Ref&lt;Database&gt;&gt;.

&gt; &gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:321
&gt; &gt; +        for (auto&amp; databaseOrigin : *m_openDatabaseMap) {
&gt; &gt; +            for (auto&amp; databaseName : *databaseOrigin.value) {
&gt; &gt; +                for (auto&amp; database : *databaseName.value)
&gt; &gt; +                    openDatabases.append(database);
&gt; &gt; +            }
&gt; &gt; +        }
&gt; 
&gt; This should be written using values():
&gt; 
&gt;     for (auto&amp; nameMap : m_openDatabaseMap-&gt;values()) {
&gt;         for (auto&amp; set : nameMap-&gt;values()) {
&gt;             for (auto&amp; database : *set)
&gt;                 openDatabases.append(database);
&gt;         }
&gt;     }
&gt; 

Will fix.

&gt; &gt; Source/WebKit2/UIProcess/ProcessThrottler.h:44
&gt; &gt; +class ProcessThrottler : public ProcessAssertionClient {
&gt; 
&gt; Please make this private inheritance instead.
&gt; 

Will use private inheritance.

&gt; &gt; Source/WebKit2/UIProcess/ProcessThrottler.h:61
&gt; &gt; +    // ProcessAssertionClient
&gt; &gt; +    void assertionWillExpireImminently() override;
&gt; 
&gt; Please make this private.
&gt; 

Will make this private.

&gt; &gt; Source/WebKit2/UIProcess/ios/ProcessAssertionIOS.mm:47
&gt; &gt; +- (void)addClient:(ProcessAssertionClient *)client;
&gt; &gt; +- (void)removeClient:(ProcessAssertionClient *)client;
&gt; 
&gt; Wrong formatting. ProcessAssertionClient isn’t an Objective-C class. Also,
&gt; these arguments should be references, not pointers.
&gt; 

Will use references instead of pointers and fix formatting.

&gt; &gt; Source/WebKit2/UIProcess/ios/ProcessAssertionIOS.mm:56
&gt; &gt; +    HashSet&lt;ProcessAssertionClient *&gt; _clients;
&gt; 
&gt; Wrong formatting. ProcessAssertionClient isn’t an Objective-C class.
&gt; 

Will fix formatting.

&gt; &gt; Source/WebKit2/UIProcess/ios/ProcessAssertionIOS.mm:111
&gt; &gt; +            for (auto* client : _clients)
&gt; &gt; +                client-&gt;assertionWillExpireImminently();
&gt; 
&gt; What guarantees the body of assertionWillExpireImminently won’t call
&gt; something that could reenter and call addClient: or removeClient: while
&gt; iterating _clients?

Will copy HashSet&lt;ProcessAssertionClient*&gt; to a vector and iterate over the vector to prevent issues with such reentrancy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093788</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-11 10:28:40 -0700</bug_when>
    <thetext>Committed r184105: &lt;http://trac.webkit.org/changeset/184105&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093841</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-11 12:02:39 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; &gt; Source/WebKit2/UIProcess/ios/ProcessAssertionIOS.mm:111
&gt; &gt; &gt; +            for (auto* client : _clients)
&gt; &gt; &gt; +                client-&gt;assertionWillExpireImminently();
&gt; &gt; 
&gt; &gt; What guarantees the body of assertionWillExpireImminently won’t call
&gt; &gt; something that could reenter and call addClient: or removeClient: while
&gt; &gt; iterating _clients?
&gt; 
&gt; Will copy HashSet&lt;ProcessAssertionClient*&gt; to a vector and iterate over the
&gt; vector to prevent issues with such reentrancy.

We should also ensure that client is still in the list of clients managed by WKProcessAssertionBackgroundTaskManager. Filed bug #144880 to address this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252444</attachid>
            <date>2015-05-05 20:40:48 -0700</date>
            <delta_ts>2015-05-07 21:26:49 -0700</delta_ts>
            <desc>Part 1: Add infrastructure to interrupt all databases</desc>
            <filename>Part1-InterruptAllDatabases.patch</filename>
            <type>text/plain</type>
            <size>6669</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBhYjM5NTI4NDAyOTUwZDM5ODA3YjU4OWEzMjRlNDlkODU0NWY2Y2EyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDUgTWF5IDIwMTUgMDg6NTU6MjcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBQYXJ0IDEg
LSBBZGQgaW5mcmFzdHJ1Y3R1cmUgdG8gaW50ZXJydXB0IGFsbCBkYXRhYmFzZXMuCgotLS0KIC4u
Li9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCAgICAgICB8ICAx
ICsKIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNw
cCB8ICA1ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
TWFuYWdlci5oICAgfCAgMSArCiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlU2VydmVyLmNwcCAgfCAgNSArKysrKwogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oICAgIHwgIDEgKwogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIHwgMTggKysrKysrKysrKysrKysrKysr
CiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oICAg
fCAgMSArCiAuLi4vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwICAgfCAgNSArKysrKwogLi4uL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJh
c2VNYW5hZ2VyLmggICAgIHwgIDIgKysKIDkgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygr
KQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJh
Y3REYXRhYmFzZVNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9B
YnN0cmFjdERhdGFiYXNlU2VydmVyLmgKaW5kZXggM2UyNGViNi4uYWMxODU1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERh
dGFiYXNlU2VydmVyLmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIHNldFBhdXNlQWxsRGF0YWJhc2VzKGJvb2wpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBp
bnRlcnJ1cHRBbGxEYXRhYmFzZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGludGVycnVwdEFs
bERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgRGF0YWJhc2VDb250ZXh0KikgPSAwOwogCiBwcm90
ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHAKaW5kZXggZDgyODRjMS4uNjU4NDBjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApA
QCAtNDAyLDYgKzQwMiwxMSBAQCB2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0UGF1c2VBbGxEYXRh
YmFzZXMoYm9vbCBwYXVzZUFsbERhdGFiYXNlcykKICAgICBtX3NlcnZlci0+c2V0UGF1c2VBbGxE
YXRhYmFzZXMocGF1c2VBbGxEYXRhYmFzZXMpOwogfQogCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6
aW50ZXJydXB0QWxsRGF0YWJhc2VzKCkKK3sKKyAgICBtX3NlcnZlci0+aW50ZXJydXB0QWxsRGF0
YWJhc2VzKCk7Cit9CisKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFz
ZXNGb3JDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgUmVm
UHRyPERhdGFiYXNlQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0ID0gZXhpc3RpbmdEYXRhYmFzZUNv
bnRleHRGb3IoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAppbmRleCA1MzlmNTU1Li5iZTU2MjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
LmgKQEAgLTEwNSw2ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFBhdXNlQWxsRGF0YWJhc2VzKGJvb2wpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBp
bnRlcnJ1cHRBbGxEYXRhYmFzZXMoKTsKICAgICB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0Zv
ckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcApp
bmRleCA1NTE0NGQ4Li42YzExMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcApAQCAtMTE3LDYgKzExNywxMSBAQCB2
b2lkIERhdGFiYXNlU2VydmVyOjpzZXRQYXVzZUFsbERhdGFiYXNlcyhib29sIHBhdXNlQWxsRGF0
YWJhc2VzKQogI2VuZGlmCiB9CiAKK3ZvaWQgRGF0YWJhc2VTZXJ2ZXI6OmludGVycnVwdEFsbERh
dGFiYXNlcygpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaW50ZXJydXB0QWxs
RGF0YWJhc2VzKCk7Cit9CisKIHZvaWQgRGF0YWJhc2VTZXJ2ZXI6OmludGVycnVwdEFsbERhdGFi
YXNlc0ZvckNvbnRleHQoY29uc3QgRGF0YWJhc2VDb250ZXh0KiBjb250ZXh0KQogewogICAgIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQo
Y29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlU2VydmVyLmgKaW5kZXggOTljNzUxOC4uYjg1NTkwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaApAQCAtNjIsNiAr
NjIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGF1c2VBbGxEYXRhYmFzZXMo
Ym9vbCkgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2Vz
KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNv
bnRleHQoY29uc3QgRGF0YWJhc2VDb250ZXh0Kik7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApp
bmRleCBhM2Y1ODI2Li5lN2JjOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0zMDYsNiArMzA2LDI0IEBA
IHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZVRyYWNrZXI6OmdldE1heFNpemVGb3JEYXRhYmFz
ZShjb25zdCBEYXRhYmFzZSogZGF0YWJhCiAgICAgcmV0dXJuIG1heFNpemU7CiB9CiAKK3ZvaWQg
RGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXMoKQoreworICAgIFZlY3RvcjxS
ZWZQdHI8RGF0YWJhc2VCYWNrZW5kQmFzZT4+IG9wZW5EYXRhYmFzZXM7CisgICAgeworICAgICAg
ICBNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQp
OworICAgICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlTWFwKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlT3JpZ2luIDogKm1fb3BlbkRhdGFiYXNlTWFwKSB7
CisgICAgICAgICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlTmFtZSA6ICpkYXRhYmFzZU9yaWdpbi52
YWx1ZSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiAqZGF0YWJhc2VO
YW1lLnZhbHVlKQorICAgICAgICAgICAgICAgICAgICBvcGVuRGF0YWJhc2VzLmFwcGVuZChkYXRh
YmFzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChhdXRvJiBk
YXRhYmFzZSA6IG9wZW5EYXRhYmFzZXMpCisgICAgICAgIGRhdGFiYXNlLT5pbnRlcnJ1cHQoKTsK
K30KKwogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRl
eHQoY29uc3QgRGF0YWJhc2VDb250ZXh0KiBjb250ZXh0KQogewogICAgIFZlY3RvcjxSZWZQdHI8
RGF0YWJhc2VCYWNrZW5kQmFzZT4+IG9wZW5EYXRhYmFzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAppbmRleCBkY2I0Zjcx
Li5hMjIwNmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmgKQEAgLTc0LDYgKzc0LDcgQEAgcHVibGljOgogCiAgICAgdW5z
aWduZWQgbG9uZyBsb25nIGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZSopOwog
CisgICAgdm9pZCBpbnRlcnJ1cHRBbGxEYXRhYmFzZXMoKTsKICAgICB2b2lkIGludGVycnVwdEFs
bERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgRGF0YWJhc2VDb250ZXh0Kik7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggMTMxZjBlMy4uNjYzZWM1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRh
YmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTQyLDYgKzE0MiwxMSBAQCB2b2lkIFdl
YkRhdGFiYXNlTWFuYWdlcjo6c2V0UGF1c2VBbGxEYXRhYmFzZXMoYm9vbCBwYXVzZUFsbERhdGFi
YXNlcykKICAgICBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLnNldFBhdXNlQWxsRGF0YWJh
c2VzKHBhdXNlQWxsRGF0YWJhc2VzKTsKIH0KIAordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6Omlu
dGVycnVwdEFsbERhdGFiYXNlcygpIGNvbnN0Cit7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjpzaW5n
bGV0b24oKS5pbnRlcnJ1cHRBbGxEYXRhYmFzZXMoKTsKK30KKwogdm9pZCBXZWJEYXRhYmFzZU1h
bmFnZXI6OnNldFF1b3RhRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwg
dW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKSBjb25zdAogewogICAgIC8vIElmIHRoZSBxdW90YSBp
cyBzZXQgdG8gYSB2YWx1ZSBsb3dlciB0aGFuIHRoZSBjdXJyZW50IHVzYWdlLCB0aGF0IHF1b3Rh
IHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oCmluZGV4IDQ4MzhiNzguLjhjMzI5ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0
YWJhc2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaApAQCAtNDgsNiArNDgsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldFBhdXNlQWxsRGF0YWJhc2VzKGJvb2wgPSB0cnVlKTsKIAorICAgIHZvaWQgaW50
ZXJydXB0QWxsRGF0YWJhc2VzKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgLy8gV2ViUHJvY2Vz
c1N1cHBsZW1lbnQKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7Ci0tIAoyLjMuNCAoQXBwbGUgR2l0LTU2KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252681</attachid>
            <date>2015-05-07 21:29:28 -0700</date>
            <delta_ts>2015-05-07 21:36:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144661-20150507212810.patch</filename>
            <type>text/plain</type>
            <size>38295</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThjZWQ4YjYyNDI3NmI2
N2U2MmNkM2M0MjM5NjU1MzAyYzljMjgzYS4uZDc0NjQ3Njg5OTZhYzk1NzVjMjM3OWU5NGMyMTRl
OGQ1ZmRlZDMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE1LTA1LTA3ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBDbG9zZSBhbGwg
b3BlbiBkYXRhYmFzZXMgaW4gZXhwaXJhdGlvbiBoYW5kbGVyIG9mIHByb2Nlc3MgYXNzZXJ0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwODQ1MDUyPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBmdW5jdGlvbmFsaXR5IGluIFdlYkNv
cmUgdG8gY2xvc2UgYWxsIG9wZW4gZGF0YWJhc2VzLiBDbG9zaW5nIGEgU1FMaXRlIGRhdGFiYXNl
CisgICAgICAgIHdpbGwgaW50ZXJydXB0IGFueSBpbi1wcm9ncmVzcyBkYXRhYmFzZSB0cmFuc2Fj
dGlvbnMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VT
ZXJ2ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmNsb3NlQWxsRGF0YWJhc2Vz
KTogQWRkZWQ7IHR1cm5zIGFyb3VuZCBhbmQgY2FsbHMgRGF0YWJhc2VTZXJ2ZXI6OmNsb3NlQWxs
RGF0YWJhc2VzKCkuCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuaDogRXhwb3J0IERhdGFiYXNlTWFuYWdlcjo6Y2xvc2VBbGxEYXRhYmFzZXMoKSBzbyB0aGF0
CisgICAgICAgIHdlIGNhbiBjYWxsIGluIGZyb20gV2ViS2l0Mi4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlU2VydmVyOjpjbG9zZUFsbERhdGFiYXNlcyk6IEFkZGVkOyB0dXJucyBhcm91bmQgYW5kIGNh
bGxzIERhdGFiYXNlVHJhY2tlcjo6Y2xvc2VBbGxEYXRhYmFzZXMoKS4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpjbG9zZUFsbERhdGFiYXNlcyk6IEFkZGVkOyBjbG9zZXMgYWxsIG9wZW4gZGF0YWJh
c2VzLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmg6IEV4
cG9ydCBEYXRhYmFzZVRyYWNrZXI6OmNsb3NlQWxsRGF0YWJhc2VzKCkgc28gdGhhdAorICAgICAg
ICB3ZSBjYW4gY2FsbCBpbiBmcm9tIExlZ2FjeSBXZWJLaXQuCisKIDIwMTUtMDUtMDcgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUGxheWJh
Y2sgdGFyZ2V0IGlzbid0IHNldCBvbiBuZXcgZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDhj
NThjMTAzNzhlNjVjZDk4ZWM1YjFjYTZhMWRmNGM3ZTNhNWExZmMuLmQ3NGVjN2Y5MGQxMTI2MmQ4
NjJiODE3MWQzYzk3MTk3MDVlMDM5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxNS0wNS0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAg
ICAgW2lPU10gQ2xvc2UgYWxsIG9wZW4gZGF0YWJhc2VzIGluIGV4cGlyYXRpb24gaGFuZGxlciBv
ZiBwcm9jZXNzIGFzc2VydGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ0NjYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDg0NTA1Mj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3IgTGVnYWN5
IFdlYktpdCwgY2xvc2UgYWxsIG9wZW4gZGF0YWJhc2VzIHdoZW4gdGhlIHByb2Nlc3MgYXNzZXJ0
aW9uIGV4cGlyYXRpb24KKyAgICAgICAgaGFuZGxlciBpcyBjYWxsZWQuCisKKyAgICAgICAgKiBT
dG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAgKCtbV2ViRGF0YWJhc2VNYW5h
Z2VyIHN0YXJ0QmFja2dyb3VuZFRhc2tdKTogQ2FsbCBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5jbG9zZUFsbERhdGFiYXNlcygpCisgICAgICAgIGluIHRoZSBleHBpcmF0aW9uIGhhbmRsZXIg
dG8gY2xvc2UgYWxsIG9wZW4gZGF0YWJhc2VzLiBBcyBhIHNpZGUgZWZmZWN0IG9mIGNsb3NpbmcK
KyAgICAgICAgYSBkYXRhYmFzZSBhbGwgaW4tcHJvZ3Jlc3MgZGF0YWJhc2UgdHJhbnNhY3Rpb25z
IGFyZSBpbnRlcnJ1cHRlZC4KKwogMjAxNS0wNC0wMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjaW5nIHRoZSBQbGF0Zm9ybSBBYnN0
cmFjdGlvbiBMYXllciAoUEFMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDE3MGE3NzQ2NmE5ZWFjMzZmNjFmMmZh
ZGUzMmRmMDljM2Q0YzRjYWEuLjA5NjgwZDE2NDE0ODJlMjY3YzVhOWQ5NTU4YjVjYzRjMTk1OTc4
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MCBAQAorMjAxNS0wNS0wNyAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gQ2xvc2UgYWxsIG9wZW4gZGF0
YWJhc2VzIGluIGV4cGlyYXRpb24gaGFuZGxlciBvZiBwcm9jZXNzIGFzc2VydGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjYxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yMDg0NTA1Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGb3IgV2ViS2l0MiwgY2xvc2UgYWxsIG9wZW4gZGF0YWJhc2Vz
IHdoZW4gdGhlIHByb2Nlc3MgYXNzZXJ0aW9uIGV4cGlyYXRpb24KKyAgICAgICAgaGFuZGxlciBp
cyBjYWxsZWQuCisKKyAgICAgICAgV2hlbiB0aGUgcHJvY2VzcyBhc3NlcnRpb24gZXhwaXJhdGlv
biBoYW5kbGVyIGlzIGNhbGxlZCB3ZSBkaXNwYXRjaCBhIHN5bmNocm9ub3VzCisgICAgICAgIG1l
c3NhZ2UgY2FsbGVkIFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkgdG8gdGhlIHtXZWIsIE5l
dHdvcmt9IHByb2Nlc3NlcyB0byBpbmZvcm0KKyAgICAgICAgdGhlbSB0aGF0IHRoZXkgd2lsbCBi
ZSBzdXNwZW5kZWQgaW1taW5lbnRseS4gVGhlIHtXZWIsIE5ldHdvcmt9IHByb2Nlc3Mgd2lsbCBh
bHdheXMKKyAgICAgICAgc2VydmljZSB0aGlzIG1lc3NhZ2UgcmVnYXJkbGVzcyBpZiB0aGV5IHdl
cmUgd2FpdGluZyBmb3IgYW5vdGhlciBtZXNzYWdlLiBJbiB0aGUKKyAgICAgICAgV2ViUHJvY2Vz
cywgd2Ugd2lsbCBjbG9zZSBhbGwgb3BlbiBkYXRhYmFzZXMgYW1vbmcgb3RoZXIgdGFza3MgdXBv
biByZWNlaXZpbmcgdGhpcworICAgICAgICBtZXNzYWdlLiBJbiB0aGUgTmV0d29ya1Byb2Nlc3Ms
IHdlIHdpbGwgcHVyZ2Ugc29tZSBkYXRhIGZyb20gbWVtb3J5LgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKTogTW9kaWZpZWQgdG8gY2FsbCBOZXR3b3JrUHJv
Y2Vzczo6ZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoKQorICAgICAgICB0byBw
cm9jZXNzIHRoZSBzeW5jaHJvbm91cyBQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5IG1lc3Nh
Z2UuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJ
bW1pbmVudGx5KTogQWRkZWQ7IGZyZWUgc29tZSBtZW1vcnkuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbjogQWRkZWQgc3luY2hyb25vdXMgbWVzc2FnZSBQcm9jZXNzV2ls
bFN1c3BlbmRJbW1pbmVudGx5LgorICAgICAgICAqIFNoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOiBBZGRlZCBw
YXJhbWV0ZXIgc2VuZFN5bmNGbGFncyBzbyB0aGF0IHdlIGNhbiBzZW5kCisgICAgICAgIGEgc3lu
YyBtZXNzYWdlIHdpdGggZmxhZyBJUEM6OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJy
aXZlcyB0byBjYXVzZSB0aGUge1dlYiwgTmV0d29ya31Qcm9jZXNzCisgICAgICAgIHRvIHByb2Nl
c3MgdGhlIG1lc3NhZ2UgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIHdhaXRpbmcgZm9yIGFu
b3RoZXIgbWVzc2FnZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFBy
b2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkpOiBBZGRlZC4gU2VuZHMgdGhlIG1lc3NhZ2UKKyAg
ICAgICAgUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSB0byB0aGUgTmV0d29ya1Byb2Nlc3Mu
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpzZXRDbGllbnQpOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5oOiBBZGRlZCBhYnN0cmFjdCBjbGFzcyBQcm9jZXNzQXNz
ZXJ0aW9uQ2xpZW50LgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uQ2xpZW50Ojp+
UHJvY2Vzc0Fzc2VydGlvbkNsaWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNz
QXNzZXJ0aW9uOjpzZXRDbGllbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0Fz
c2VydGlvbjo6Y2xpZW50KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJv
dHRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpkaWRDb25uZWN0
VG9Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6YXNzZXJ0aW9u
V2lsbEV4cGlyZUltbWluZW50bHkpOiBBZGRlZDsgaW1wbGVtZW50cyB0aGUgUHJvY2Vzc0Fzc2Vy
dGlvbkNsaWVudAorICAgICAgICBpbnRlcmZhY2UuIE5vdGlmeSB0aGUgcHJvY2VzcyB0aHJvdHRs
ZXIgY2xpZW50cyB0aGF0IHRoZSBhc3NlcnRpb24gaXMgbmVhciBleHBpcmF0aW9uLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1By
b2Nlc3NUaHJvdHRsZXJDbGllbnQuaDogQWRkZWQgCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2VuZFBy
b2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkpOiBBZGRlZC4gU2VuZHMgdGhlIG1lc3NhZ2UKKyAg
ICAgICAgUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSB0byB0aGUgV2ViUHJvY2Vzcy4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NBc3NlcnRp
b25CYWNrZ3JvdW5kVGFza01hbmFnZXIgYWRkQ2xpZW50Ol0pOiBBZGRlZC4KKyAgICAgICAgKC1b
V0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIHJlbW92ZUNsaWVudDpdKTog
QWRkZWQuCisgICAgICAgICgtW1dLUHJvY2Vzc0Fzc2VydGlvbkJhY2tncm91bmRUYXNrTWFuYWdl
ciBfdXBkYXRlQmFja2dyb3VuZFRhc2tdKTogTW9kaWZpZWQgZXhwaXJhdGlvbiBoYW5kbGVyCisg
ICAgICAgIHRvIG5vdGlmeSBQcm9jZXNzQXNzZXJ0aW9uQ2xpZW50IGNsaWVudHMgdGhhdCB0aGUg
YXNzZXJ0aW9uIGlzIG5lYXIgZXhwaXJhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0Fz
c2VydGlvbjo6flByb2Nlc3NBc3NlcnRpb24pOiBSZW1vdmUgdGhlIGNsaWVudCBvbiBkZXN0cnVj
dGlvbi4KKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpzZXRDbGllbnQp
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6Y2xvc2VB
bGxEYXRhYmFzZXMpOiBBZGRlZDsgdHVybnMgYXJvdW5kIGFuZCBjYWxscyBEYXRhYmFzZU1hbmFn
ZXI6OmNsb3NlQWxsRGF0YWJhc2VzKCkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3Nh
Z2UpOiBDYWxsIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jV2ViUHJvY2Vzc01lc3NhZ2UoKSB0
byBwcm9jZXNzCisgICAgICAgIHRoZSBzeW5jaHJvbm91cyBQcm9jZXNzV2lsbFN1c3BlbmRJbW1p
bmVudGx5IG1lc3NhZ2UuIFJlbW92ZWQgbG9nZ2luZyBmb3IgYW4gdW5oYW5kbGVkIHN5bmNocm9u
b3VzIG1lc3NhZ2UKKyAgICAgICAgc2luY2UgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNXZWJQ
cm9jZXNzTWVzc2FnZSgpIHdpbGwgQVNTRVJUX05PVF9SRUFDSEVEKCkgZm9yIHN1Y2ggYSBtZXNz
YWdlLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKTogRXh0
cmFjdGVkIGNvZGUgZnJvbSBXZWJQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmQoKSBzbyB0aGF0
IGl0IGNhbgorICAgICAgICBiZSB1c2VkIGZyb20gYm90aCBXZWJQcm9jZXNzOjpwcm9jZXNzV2ls
bFN1c3BlbmQoKSBhbmQgV2ViUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgp
LiBBbmQgbW9kaWZpZWQKKyAgICAgICAgaXQgdG8gY29uZGl0aW9uYWxseSBkaXNwYXRjaCBhIFBy
b2Nlc3NSZWFkeVRvU3VzcGVuZCBtZXNzYWdlIHRvIHRoZSBXZWJQcm9jZXNzUHJveHkuIFdlIG9u
bHkgd2FudCB0byBkaXNwYXRjaAorICAgICAgICBzdWNoIGEgbWVzc2FnZSBhcyBwYXJ0IG9mIGEg
Y29vcmRpbmF0ZWQgc3VzcGVuc2lvbiBieSB0aGUgUHJvY2Vzc1Rocm90dGxlci4gVGhhdCBpcywg
d2UgZG8gbm90IHdhbnQgdG8gZGlzcGF0Y2gKKyAgICAgICAgdGhlIFByb2Nlc3NSZWFkeVRvU3Vz
cGVuZCBtZXNzYWdlIHdoZW4gdGhlIGJhY2tncm91bmQgYXNzZXJ0aW9uIGlzIG5lYXIgZXhwaXJh
dGlvbiAoaS5lLiBXZWJQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKKyAg
ICAgICAgaXMgY2FsbGVkKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cHJvY2Vzc1dp
bGxTdXNwZW5kSW1taW5lbnRseSk6IEFkZGVkLiBTdXNwZW5kIGFsbCBvcGVuIGRhdGFiYXNlcyBh
bW9uZyBvdGhlciB0YXNrcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cHJvY2Vzc1dp
bGxTdXNwZW5kKTogSW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgV2ViUHJvY2Vzczo6cHJlcGFyZVRv
U3VzcGVuZCgpLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcm9jZXNzU3VzcGVuc2lv
bkNsZWFudXBUaW1lckZpcmVkKTogTW9kaWZpZWQgdG8gY29uZGl0aW9uYWxseSBkaXNwYXRjaCBh
IFByb2Nlc3NSZWFkeVRvU3VzcGVuZAorICAgICAgICBtZXNzYWdlIHRvIHRoZSBXZWJQcm9jZXNz
UHJveHkuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnByb2Nlc3NEaWRSZXN1bWUpOiBT
dG9wIHRoZSBzdXNwZW5zaW9uIGNsZWFudXAgdGltZXIsIHdoaWNoIG1heSBiZSBhY3RpdmUgaWYg
dGhlIFdlYlByb2Nlc3MKKyAgICAgICAgZGlkIG5vdCBtYXJrIGFsbCBpdHMgZ3JhcGhpY3MgbGF5
ZXJzIGFzIHZvbGF0aWxlIGJlZm9yZSBwcm9jZXNzIHN1c3BlbnNpb24uCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluOiBBZGRlZCBzeW5jaHJvbm91cyBtZXNzYWdlIFByb2Nlc3NXaWxsU3VzcGVuZElt
bWluZW50bHkuCisKIDIwMTUtMDUtMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBPcHRpb25zR1RLLmNtYWtl
IGFuZCBORVdTIGZvciAyLjkuMSByZWxlYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaAppbmRleCAz
ZTI0ZWI2ZjQ0OGMwNWE0YTRkNWI2YzAwYTg4ODQwN2U2NTNmNjgyLi40MjkxMmZjNDkzZGIzNDVm
ZjdkNDEwNjQzZWIwZDJjMDcxMDdmYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaApAQCAtNTcs
NiArNTcsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNr
ZW5kQmFzZT4gb3BlbkRhdGFiYXNlKFJlZlB0cjxEYXRhYmFzZUNvbnRleHQ+JiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25J
bk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiwgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIE9wZW5B
dHRlbXB0ID0gRmlyc3RUcnlUb09wZW5EYXRhYmFzZSkgPSAwOwogCisgICAgdmlydHVhbCB2b2lk
IGNsb3NlQWxsRGF0YWJhc2VzKCkgPSAwOworCiAgICAgdmlydHVhbCBib29sIGhhc0VudHJ5Rm9y
T3JpZ2luKFNlY3VyaXR5T3JpZ2luKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvcmlnaW5zKFZl
Y3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgcmVzdWx0KSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBWZWN0b3I8U3RyaW5n
PiYgcmVzdWx0KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggZDgyODRjMWJhMWJiZDM2ODM1YjQ2N2Uz
OWNiMTRmZTU0YjkwMjAxMy4uODE1ZjUwMWU4MWIzMzk1ZTA1NWY5NGM4NWI3YjczOGM0OTgzY2Ey
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmNwcApAQCAtNDAyLDYgKzQwMiwxMSBAQCB2b2lkIERhdGFiYXNlTWFuYWdl
cjo6c2V0UGF1c2VBbGxEYXRhYmFzZXMoYm9vbCBwYXVzZUFsbERhdGFiYXNlcykKICAgICBtX3Nl
cnZlci0+c2V0UGF1c2VBbGxEYXRhYmFzZXMocGF1c2VBbGxEYXRhYmFzZXMpOwogfQogCit2b2lk
IERhdGFiYXNlTWFuYWdlcjo6Y2xvc2VBbGxEYXRhYmFzZXMoKQoreworICAgIG1fc2VydmVyLT5j
bG9zZUFsbERhdGFiYXNlcygpOworfQorCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6aW50ZXJydXB0
QWxsRGF0YWJhc2VzRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ewogICAgIFJlZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCA9IGV4aXN0aW5n
RGF0YWJhc2VDb250ZXh0Rm9yKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgKaW5kZXggNTM5ZjU1NWRmZTc1MzQ1
YTJhYzMwMTIwYzA1YmQ1ZGIzZGMwY2ZkMS4uMjRjY2IxZmIyYzVmZTlkNWYwMWQxMjI4MzQwYzZl
MzM3ODE5NmQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5oCkBAIC04NSw2ICs4NSw5IEBAIHB1YmxpYzoKICAgICBQYXNz
UmVmUHRyPERhdGFiYXNlPiBvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0
cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0
cjxEYXRhYmFzZUNhbGxiYWNrPiwgRGF0YWJhc2VFcnJvciYpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBoYXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2VBbGxEYXRhYmFzZXMoKTsKKwogICAgIHZvaWQgc3Rv
cERhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRGF0YWJhc2VUYXNrU3luY2hyb25p
emVyKik7CiAKICAgICBTdHJpbmcgZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbios
IGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCA9IHRydWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2Vy
dmVyLmNwcAppbmRleCA1NTE0NGQ4MzY5YWJlODNlZDljMjc5ZTM0NGMxOGVkYzgzNTRjYzI2Li5l
ZWMzMWQxMzMyYmE2MzkwZjU5ODU0MmEyMzk2NGRkOGM1NjNhMjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcApAQCAt
MTE3LDYgKzExNywxMSBAQCB2b2lkIERhdGFiYXNlU2VydmVyOjpzZXRQYXVzZUFsbERhdGFiYXNl
cyhib29sIHBhdXNlQWxsRGF0YWJhc2VzKQogI2VuZGlmCiB9CiAKK3ZvaWQgRGF0YWJhc2VTZXJ2
ZXI6OmNsb3NlQWxsRGF0YWJhc2VzKCkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5jbG9zZUFsbERhdGFiYXNlcygpOworfQorCiB2b2lkIERhdGFiYXNlU2VydmVyOjppbnRlcnJ1
cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQ29udGV4dCogY29udGV4dCkK
IHsKICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNG
b3JDb250ZXh0KGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oCmluZGV4IDM4NDg4NGRmYTU2NDA4Nzk1NDFiNTgwZDU3
OTYzMDFiMDk1MTFjYmMuLmZiMThhNmQ2M2MyZTZhMTU5ZDBjODVmOWU5NjhmYzJjNGU1MTJiODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VT
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
U2VydmVyLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPERhdGFiYXNlQmFja2VuZEJhc2U+IG9wZW5EYXRhYmFzZShSZWZQdHI8RGF0YWJhc2VDb250
ZXh0PiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24s
IGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwg
Ym9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYsIFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBPcGVuQXR0ZW1wdCk7CiAKKyAgICB2b2lkIGNsb3NlQWxsRGF0YWJhc2VzKCkg
b3ZlcnJpZGU7CisKICAgICB2aXJ0dWFsIGJvb2wgaGFzRW50cnlGb3JPcmlnaW4oU2VjdXJpdHlP
cmlnaW4qKTsKICAgICB2aXJ0dWFsIHZvaWQgb3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCBib29sIGRhdGFiYXNlTmFtZXNGb3JPcmln
aW4oU2VjdXJpdHlPcmlnaW4qLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApp
bmRleCBhM2Y1ODI2ZTQ3NTc5Y2VlYTgwNmZlM2MxYjQ0NmIxNTViY2Q0NzQxLi4zMGMzYmE0YWQ3
MzZiMjI3MTdhNzZhOTM2MmU0YzgzNGE3N2M1ZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0zMDYsNiAr
MzA2LDI0IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZVRyYWNrZXI6OmdldE1heFNpemVG
b3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZSogZGF0YWJhCiAgICAgcmV0dXJuIG1heFNpemU7CiB9
CiAKK3ZvaWQgRGF0YWJhc2VUcmFja2VyOjpjbG9zZUFsbERhdGFiYXNlcygpCit7CisgICAgVmVj
dG9yPFJlZlB0cjxEYXRhYmFzZT4+IG9wZW5EYXRhYmFzZXM7CisgICAgeworICAgICAgICBNdXRl
eExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAg
ICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlTWFwKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBmb3IgKGF1dG8mIGRhdGFiYXNlT3JpZ2luIDogKm1fb3BlbkRhdGFiYXNlTWFwKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlTmFtZSA6ICpkYXRhYmFzZU9yaWdpbi52YWx1ZSkg
eworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiAqZGF0YWJhc2VOYW1lLnZh
bHVlKQorICAgICAgICAgICAgICAgICAgICBvcGVuRGF0YWJhc2VzLmFwcGVuZChkYXRhYmFzZSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChhdXRvJiBkYXRhYmFz
ZSA6IG9wZW5EYXRhYmFzZXMpCisgICAgICAgIGRhdGFiYXNlLT5jbG9zZSgpOworfQorCiB2b2lk
IERhdGFiYXNlVHJhY2tlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBE
YXRhYmFzZUNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxEYXRhYmFzZUJh
Y2tlbmRCYXNlPj4gb3BlbkRhdGFiYXNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCmluZGV4IGRjYjRmNzEzODg2YjJiY2M2
N2UxNGM3Zjk4NWIxNmZmY2EzZTY1OTMuLmVhYTRmYjQ1YWIxMWI2ZTU4ZjQzY2YzMGQ2M2RhM2Nl
Y2JmMDMwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXIuaApAQCAtNzQsNiArNzQsOCBAQCBwdWJsaWM6CiAKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IERhdGFiYXNlKik7CiAK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlQWxsRGF0YWJhc2VzKCk7CisKICAgICB2b2lk
IGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgRGF0YWJhc2VDb250ZXh0Kik7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VN
YW5hZ2VyLm1tCmluZGV4IGI0MGFmN2I1MmI3ZDM0Zjc0NjQzY2ViNjEzMWUzMjRiZDVhM2ExZGIu
LjU5NGI2MDIxZWNjM2Y2MGZmYmQ4ZmFiNzY2ZjA4MTQ1NjQ3ZGEwYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCkBAIC0yNjcsNyArMjY3
LDEwIEBAICsgKHZvaWQpc3RhcnRCYWNrZ3JvdW5kVGFzawogICAgIGlmIChnZXRUcmFuc2FjdGlv
bkJhY2tncm91bmRUYXNrSWRlbnRpZmllcigpICE9IGludmFsaWRXZWJCYWNrZ3JvdW5kVGFza0lk
ZW50aWZpZXIoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHNldFRyYW5zYWN0aW9uQmFj
a2dyb3VuZFRhc2tJZGVudGlmaWVyKHN0YXJ0QmFja2dyb3VuZFRhc2soXiB7IFtXZWJEYXRhYmFz
ZU1hbmFnZXIgZW5kQmFja2dyb3VuZFRhc2tdOyB9KSk7CisgICAgc2V0VHJhbnNhY3Rpb25CYWNr
Z3JvdW5kVGFza0lkZW50aWZpZXIoc3RhcnRCYWNrZ3JvdW5kVGFzayheIHsKKyAgICAgICAgRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuY2xvc2VBbGxEYXRhYmFzZXMoKTsKKyAgICAgICAgW1dl
YkRhdGFiYXNlTWFuYWdlciBlbmRCYWNrZ3JvdW5kVGFza107CisgICAgfSkpOwogfQogCiArICh2
b2lkKWVuZEJhY2tncm91bmRUYXNrCkBAIC0yODEsNyArMjg0LDcgQEAgKyAodm9pZCllbmRCYWNr
Z3JvdW5kVGFzawogICAgIC8vIHdpbGwgYmUgaW52YWxpZCBmb3IgdGhlIHNlY29uZCBjYWxsZXIu
CiAgICAgaWYgKGdldFRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyKCkgPT0gaW52
YWxpZFdlYkJhY2tncm91bmRUYXNrSWRlbnRpZmllcigpKQogICAgICAgICByZXR1cm47Ci0gICAg
ICAgIAorCiAgICAgZW5kQmFja2dyb3VuZFRhc2soZ2V0VHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFz
a0lkZW50aWZpZXIoKSk7CiAgICAgc2V0VHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZp
ZXIoaW52YWxpZFdlYkJhY2tncm91bmRUYXNrSWRlbnRpZmllcigpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAzZjQ0MThi
ZWEyYTI2ZTEwNWU0ZTU4MTdhM2Q5OTdiNzI2MTVjZDk2Li5mOGJkNjFmYjJjOWNmMzE1OTVmYTNm
MzlhOTIwNTM1N2E1ZjQ5MmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMzIsNyArMTMyLDEwIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpNZXNzYWdlCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewot
ICAgIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICBpZiAobWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlz
cGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQpAQCAtNTA1LDYgKzUwOCwxMiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjp0ZXJtaW5hdGUoKQogICAgIENoaWxkUHJvY2Vzczo6dGVybWluYXRl
KCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50
bHkoYm9vbCYgaGFuZGxlZCkKK3sKKyAgICBsb3dNZW1vcnlIYW5kbGVyKHRydWUpOworICAgIGhh
bmRsZWQgPSB0cnVlOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3Bl
bmQoKQogewogICAgIGxvd01lbW9yeUhhbmRsZXIodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBjNWJkZDMwNGIyZGQzNWZhMGZj
MDQzOWNiMjJkNDUzYmRkZDc2N2UwLi4xNmZiMjY5NTkwOTE4ZDQ4M2VmMTdkNTJhNmE5ZmFmODBk
MDEyOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKQEAgLTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAgIERvd25sb2FkTWFuYWdlciYgZG93
bmxvYWRNYW5hZ2VyKCk7CiAgICAgYm9vbCBjYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRp
b247IH0KIAorICAgIHZvaWQgcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseShib29sJiBoYW5k
bGVkKTsKICAgICB2b2lkIHByb2Nlc3NXaWxsU3VzcGVuZCgpOwogICAgIHZvaWQgY2FuY2VsUHJv
Y2Vzc1dpbGxTdXNwZW5kKCk7CiAgICAgdm9pZCBwcm9jZXNzRGlkUmVzdW1lKCk7CkBAIC0xMjIs
NiArMTIzLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2UgSGFuZGxlcnMKICAgICB2b2lk
IGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpN
ZXNzYWdlRGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQ
cm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9p
ZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwogICAgIHZvaWQgZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCA2NjJiNTUzN2M2MWI3NzIwYWY1NTM2MzM3NzE5YjdlM2I3ODQ0ZjVjLi5kNWNhNjA0
NDk4ZThhZjU4NzdjZTRmMDM0NGU2YzA1ZTFlM2UzMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
NTgsNiArNTgsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnModWludDMyX3QgY2FjaGVzVG9DbGVhcikKICAg
ICBTZXRDYWNoZU1vZGVsKHVpbnQzMl90IGNhY2hlTW9kZWwpOwogCisgICAgUHJvY2Vzc1dpbGxT
dXNwZW5kSW1taW5lbnRseSgpIC0+IChib29sIGhhbmRsZWQpCiAgICAgUHJvY2Vzc1dpbGxTdXNw
ZW5kKCkKICAgICBDYW5jZWxQcm9jZXNzV2lsbFN1c3BlbmQoKQogICAgIFByb2Nlc3NEaWRSZXN1
bWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuaAppbmRleCA2MGEw
NTlmNDA1NTc1YTMwMjZlNWYzZmFkMjdlOTNhNTNlYzhmZmE3Li41NTg5NDdiMDdjOTBjZmMzMjM2
NzBmMWVlYTU4NDhhODRmNGFkMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q2hpbGRQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9j
ZXNzUHJveHkuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXJtaW5hdGUo
KTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncyA9IDApOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFQ6OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHN0ZDo6Y2hyb25vOjptaWxsaXNl
Y29uZHMgdGltZW91dCA9IHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDEpKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYm
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVv
dXQgPSBzdGQ6OmNocm9ubzo6c2Vjb25kcygxKSwgdW5zaWduZWQgc2VuZFN5bmNGbGFncyA9IDAp
OwogICAgIAogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0CiAgICAgewpA
QCAtMTA1LDE0ICsxMDUsMTQgQEAgYm9vbCBDaGlsZFByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVz
c2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2EKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVT4gCi1ib29sIENoaWxkUHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVz
c2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0KQorYm9vbCBDaGlsZFByb2Nlc3NQcm94
eTo6c2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZW91dCwgdW5z
aWduZWQgc2VuZFN5bmNGbGFncykKIHsKICAgICBDT01QSUxFX0FTU0VSVChVOjppc1N5bmMsIFN5
bmNNZXNzYWdlRXhwZWN0ZWQpOwogCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiBjb25uZWN0aW9uKCktPnNlbmRTeW5jKHN0ZDo6Zm9y
d2FyZDxVPihtZXNzYWdlKSwgV1RGOjptb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRCwgdGltZW91
dCk7CisgICAgcmV0dXJuIGNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoc3RkOjpmb3J3YXJkPFU+KG1l
c3NhZ2UpLCBXVEY6Om1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCBzZW5kU3lu
Y0ZsYWdzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDQ2NzAxM2QwNjM1MmRmMTEzNDZmNzQzMzU1ODhiMzdlZGJiZmJmNWEuLjMzNGMyYjYxYTIzMTcz
ZTRhZjI5N2YzNjk5NDUyMWM2NWMxMTcwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMTMsNiAr
MzEzLDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoVmFsdWUodWludDY0X3QgcGFnZUlELCBjb25zdCBTCiAgICAgcGFnZS0+bG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoVmFsdWUobWVzc2FnZSwgZGVzY3JpcHRpb24sIHZhbHVlLCBzaG91bGRTYW1w
bGUpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3Bl
bmRJbW1pbmVudGx5KCkKK3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpLCBNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHk6OlJlcGx5KGhh
bmRsZWQpLAorICAgICAgICAwLCBzdGQ6OmNocm9ubzo6c2Vjb25kcygxKSwgSVBDOjpJbnRlcnJ1
cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOworfQorICAgIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kKCkKIHsKICAgICBpZiAoY2FuU2VuZE1l
c3NhZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA3Y2IyMWY2ZWI0NDIxNzgxYmViNTVjMTg5N2RjOGNl
NzkwZDFmYzAyLi5kYWQ0NzllNWFhOWRkODhkYjMwMjYzOWJiMzRhNTczZTM0MTFkMGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCkBAIC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByb2Nlc3NT
dXBwcmVzc2lvbkVuYWJsZWQoYm9vbCk7CiAjZW5kaWYKIAorICAgIHZvaWQgc2VuZFByb2Nlc3NX
aWxsU3VzcGVuZEltbWluZW50bHkoKSBvdmVycmlkZTsKICAgICB2b2lkIHNlbmRQcm9jZXNzV2ls
bFN1c3BlbmQoKSBvdmVycmlkZTsKICAgICB2b2lkIHNlbmRDYW5jZWxQcm9jZXNzV2lsbFN1c3Bl
bmQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbFByb2Nlc3NTdXNwZW5zaW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5jcHAKaW5kZXggZjgy
NzZhNmY1ZjkwNzI1ZTZlOGEyNjRlMThlNzA4ZmZlZTJiNWQ5ZC4uZTAyNzliZDhhMzkyY2YzY2Iw
MmUyNzdlOGNhZDAyNTk2NWU2MGU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1Byb2Nlc3NBc3NlcnRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
cm9jZXNzQXNzZXJ0aW9uLmNwcApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFByb2Nlc3NBc3NlcnRp
b246OnNldFN0YXRlKEFzc2VydGlvblN0YXRlIGFzc2VydGlvblN0YXRlKQogCiAgICAgbV9hc3Nl
cnRpb25TdGF0ZSA9IGFzc2VydGlvblN0YXRlOwogfQotICAgIAorCiBQcm9jZXNzQW5kVUlBc3Nl
cnRpb246OlByb2Nlc3NBbmRVSUFzc2VydGlvbihwaWRfdCBwaWQsIEFzc2VydGlvblN0YXRlIGFz
c2VydGlvblN0YXRlKQogICAgIDogUHJvY2Vzc0Fzc2VydGlvbihwaWQsIGFzc2VydGlvblN0YXRl
KQogewpAQCAtNjAsNyArNjAsMTIgQEAgdm9pZCBQcm9jZXNzQW5kVUlBc3NlcnRpb246OnNldFN0
YXRlKEFzc2VydGlvblN0YXRlIGFzc2VydGlvblN0YXRlKQogewogICAgIFByb2Nlc3NBc3NlcnRp
b246OnNldFN0YXRlKGFzc2VydGlvblN0YXRlKTsKIH0KLSAgICAKKwordm9pZCBQcm9jZXNzQW5k
VUlBc3NlcnRpb246OnNldENsaWVudChQcm9jZXNzQXNzZXJ0aW9uQ2xpZW50JiBjbGllbnQpCit7
CisgICAgUHJvY2Vzc0Fzc2VydGlvbjo6c2V0Q2xpZW50KGNsaWVudCk7Cit9CisKIH0KIAogI2Vu
ZGlmIC8vICFQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUHJvY2Vzc0Fzc2VydGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NB
c3NlcnRpb24uaAppbmRleCBhNzIyYzlkNDliMjY1MTdlMGY1ZDliM2VhNWM0Nzc0ODJlZjU3ZWE5
Li45NWM5N2MxM2U2YjcyNjc0NzMwMGU5ZGZjNjQ0MDJjNDJhNTNiMWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmgKQEAgLTM5LDI3ICszOSwzOCBAQCBl
bnVtIGNsYXNzIEFzc2VydGlvblN0YXRlIHsKICAgICBGb3JlZ3JvdW5kCiB9OwogCitjbGFzcyBQ
cm9jZXNzQXNzZXJ0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Qcm9jZXNzQXNz
ZXJ0aW9uQ2xpZW50KCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBhc3NlcnRpb25XaWxsRXhwaXJl
SW1taW5lbnRseSgpID0gMDsKK307CisKIGNsYXNzIFByb2Nlc3NBc3NlcnRpb24gewogcHVibGlj
OgogICAgIFByb2Nlc3NBc3NlcnRpb24ocGlkX3QsIEFzc2VydGlvblN0YXRlKTsKICAgICB+UHJv
Y2Vzc0Fzc2VydGlvbigpOwogCisgICAgdm9pZCBzZXRDbGllbnQoUHJvY2Vzc0Fzc2VydGlvbkNs
aWVudCYgY2xpZW50KSB7IG1fY2xpZW50ID0gJmNsaWVudDsgfQorICAgIFByb2Nlc3NBc3NlcnRp
b25DbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisKICAgICBBc3NlcnRpb25T
dGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXNzZXJ0aW9uU3RhdGU7IH0KLSAgICAKICAg
ICB2b2lkIHNldFN0YXRlKEFzc2VydGlvblN0YXRlKTsKLSAgICAKKwogcHJpdmF0ZToKICNpZiBQ
TEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQogICAgIFJldGFpblB0cjxC
S1NQcm9jZXNzQXNzZXJ0aW9uPiBtX2Fzc2VydGlvbjsKICNlbmRpZgogICAgIEFzc2VydGlvblN0
YXRlIG1fYXNzZXJ0aW9uU3RhdGU7CisgICAgUHJvY2Vzc0Fzc2VydGlvbkNsaWVudCogbV9jbGll
bnQgeyBudWxscHRyIH07CiB9OwogICAgIAogY2xhc3MgUHJvY2Vzc0FuZFVJQXNzZXJ0aW9uIDog
cHVibGljIFByb2Nlc3NBc3NlcnRpb24gewogcHVibGljOgogICAgIFByb2Nlc3NBbmRVSUFzc2Vy
dGlvbihwaWRfdCwgQXNzZXJ0aW9uU3RhdGUpOwogICAgIH5Qcm9jZXNzQW5kVUlBc3NlcnRpb24o
KTsKLSAgICAKKworICAgIHZvaWQgc2V0Q2xpZW50KFByb2Nlc3NBc3NlcnRpb25DbGllbnQmKTsK
KwogICAgIHZvaWQgc2V0U3RhdGUoQXNzZXJ0aW9uU3RhdGUpOwogfTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCBiZDZlZWE2N2Uy
ZDQyMThlMWVkNjdkZjg4M2Y2NDYwODJkNTYyMTE4Li44MTRlYzA5NGNkMzE3ZDU4YTA2ZDJhOGI5
Y2ZiMzhkZWZhODg3ZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJv
Y2Vzc1Rocm90dGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NU
aHJvdHRsZXIuY3BwCkBAIC04OCw2ICs4OCw3IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6ZGlk
Q29ubmVjdFRvUHJvY2VzcyhwaWRfdCBwaWQpCiB7CiAgICAgbV9zdXNwZW5kVGltZXIuc3RvcCgp
OwogICAgIG1fYXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQW5kVUlBc3NlcnRp
b24+KHBpZCwgYXNzZXJ0aW9uU3RhdGUoKSk7CisgICAgbV9hc3NlcnRpb24tPnNldENsaWVudCgq
dGhpcyk7CiB9CiAgICAgCiB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnN1c3BlbmRUaW1lckZpcmVk
KCkKQEAgLTEwOSw0ICsxMTAsOSBAQCB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OmRpZENhbmNlbFBy
b2Nlc3NTdXNwZW5zaW9uKCkKICAgICBBU1NFUlQobV9zdXNwZW5kTWVzc2FnZUNvdW50ID49IDAp
OwogfQogCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OmFzc2VydGlvbldpbGxFeHBpcmVJbW1pbmVu
dGx5KCkKK3sKKyAgICBtX3Byb2Nlc3MtPnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5
KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNz
VGhyb3R0bGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5o
CmluZGV4IDNlNjhlODgwMDg3YTgzNjQwZjdiMjgzMDhhNTgxOWZhZWZmMTgxZjMuLjFmOWFjNTZh
OGI5YTIwZmQwMWJhNmQxMDNlZGU2ZTFkYTQ3NTI2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaApAQCAtNDEsNyArNDEsNyBAQCB0eXBlZGVmIFJlZkNv
dW50ZXI6OlRva2VuPFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkVG9rZW5UeXBlPiBQcm9jZXNz
U3VwcHJlc3NpbwogCiBjbGFzcyBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50OwogCi1jbGFzcyBQcm9j
ZXNzVGhyb3R0bGVyIHsKK2NsYXNzIFByb2Nlc3NUaHJvdHRsZXIgOiBwdWJsaWMgUHJvY2Vzc0Fz
c2VydGlvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgZW51bSBGb3JlZ3JvdW5kQWN0aXZpdHlUb2tl
blR5cGUgeyB9OwogICAgIHR5cGVkZWYgUmVmQ291bnRlcjo6VG9rZW48Rm9yZWdyb3VuZEFjdGl2
aXR5VG9rZW5UeXBlPiBGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbjsKQEAgLTU2LDcgKzU2LDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZENvbm5lY3RUb1Byb2Nlc3MocGlkX3QpOwogICAgIHZvaWQg
cHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCk7CiAgICAgdm9pZCBkaWRDYW5jZWxQcm9jZXNzU3VzcGVu
c2lvbigpOwotICAgIAorCisgICAgLy8gUHJvY2Vzc0Fzc2VydGlvbkNsaWVudAorICAgIHZvaWQg
YXNzZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAg
ICBBc3NlcnRpb25TdGF0ZSBhc3NlcnRpb25TdGF0ZSgpOwogICAgIHZvaWQgdXBkYXRlQXNzZXJ0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90
dGxlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXJD
bGllbnQuaAppbmRleCBjZTEzNWFmMmNhNTZjZWUyNzVhNjUzYmE0MjFjZDY1MmRiOTRmYmJmLi4y
ZjUyNmEzMzIyZGFhZDhkMjRjNDljMGQwMmJlNDJhNDE0YjUwY2FiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgKQEAgLTMyLDYgKzMy
LDcgQEAgY2xhc3MgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UHJvY2Vzc1Rocm90dGxlckNsaWVudCgpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIHNlbmRQ
cm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZW5k
UHJvY2Vzc1dpbGxTdXNwZW5kKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZW5kQ2FuY2VsUHJv
Y2Vzc1dpbGxTdXNwZW5kKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZW5kUHJvY2Vzc0RpZFJl
c3VtZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKaW5kZXggZmIwZmI0OGE5OWZkNDQ1ZWNlNGE2YWQ5NjhkY2Q0YzAyMDIzMzAyNS4uZTFmYjE3
ZDU4NmFkMGY0ZjNlMWUwN2M2NDgxM2RlNGY0MDcyNzAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTg4OSw2ICs4ODksMTYgQEAgUmVmUHRy
PEFQSTo6T2JqZWN0PiBXZWJQcm9jZXNzUHJveHk6OnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMo
QVBJOjpPYmplY3QqIG9iamUKICAgICByZXR1cm4gVXNlckRhdGE6OnRyYW5zZm9ybShvYmplY3Qs
IFRyYW5zZm9ybWVyKCkpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NX
aWxsU3VzcGVuZEltbWluZW50bHkoKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSwgTWVz
c2FnZXM6OldlYlByb2Nlc3M6OlByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHk6OlJlcGx5KGhh
bmRsZWQpLAorICAgICAgICAwLCBzdGQ6OmNocm9ubzo6c2Vjb25kcygxKSwgSVBDOjpJbnRlcnJ1
cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOworfQorCiB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6c2VuZFByb2Nlc3NXaWxsU3VzcGVuZCgpCiB7CiAgICAgaWYgKGNhblNlbmRNZXNzYWdlKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggYmY1MjAy
YTA2YTU0YTA0M2Q2OWQ5MGRjOGEyY2FhMzE5YjBlMWEyOS4uYWFhY2E1MzJhNTIwOWVkMzNhMjQ5
MjlkNDhhNmQ1NTczNGQyZGIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaApAQCAtMTQzLDYgKzE0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2luZG93
U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpOwogCisgICAgdm9pZCBzZW5kUHJvY2Vzc1dp
bGxTdXNwZW5kSW1taW5lbnRseSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2VuZFByb2Nlc3NXaWxs
U3VzcGVuZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCk7CiAg
ICAgdm9pZCBzZW5kQ2FuY2VsUHJvY2Vzc1dpbGxTdXNwZW5kKCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0KaW5k
ZXggMmEyY2EzNGRlNjFiYWZmOWVmODRlYTJkZDJkYTc4MmEzZmUzN2Q3Ny4uOWMwOTc4NTFkMjNi
MmQyMTBjNTczMDBiZjE3ZjZkZGJlNGRmNGM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQpAQCAtMzAsOSArMzAsMTIgQEAK
IAogI2ltcG9ydCAiQktTUHJvY2Vzc0Fzc2VydGlvblNQSS5oIgogI2ltcG9ydCA8VUlLaXQvVUlB
cHBsaWNhdGlvbi5oPgorI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KIAogI2lmICFQTEFURk9STShJ
T1NfU0lNVUxBVE9SKQogCit1c2luZyBXZWJLaXQ6OlByb2Nlc3NBc3NlcnRpb25DbGllbnQ7CisK
IEBpbnRlcmZhY2UgV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIDogTlNP
YmplY3QKIAogKyAoV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyICopc2hh
cmVkOwpAQCAtNDAsNiArNDMsOSBAQCArIChXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFz
a01hbmFnZXIgKilzaGFyZWQ7CiAtICh2b2lkKWluY3JlbWVudE5lZWRzVG9SdW5JbkJhY2tncm91
bmRDb3VudDsKIC0gKHZvaWQpZGVjcmVtZW50TmVlZHNUb1J1bkluQmFja2dyb3VuZENvdW50Owog
CistICh2b2lkKWFkZENsaWVudDooUHJvY2Vzc0Fzc2VydGlvbkNsaWVudCAqKWNsaWVudDsKKy0g
KHZvaWQpcmVtb3ZlQ2xpZW50OihQcm9jZXNzQXNzZXJ0aW9uQ2xpZW50ICopY2xpZW50OworCiBA
ZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01h
bmFnZXIKQEAgLTQ3LDYgKzUzLDcgQEAgQGltcGxlbWVudGF0aW9uIFdLUHJvY2Vzc0Fzc2VydGlv
bkJhY2tncm91bmRUYXNrTWFuYWdlcgogICAgIHVuc2lnbmVkIF9uZWVkc1RvUnVuSW5CYWNrZ3Jv
dW5kQ291bnQ7CiAgICAgQk9PTCBfYXBwSXNCYWNrZ3JvdW5kOwogICAgIFVJQmFja2dyb3VuZFRh
c2tJZGVudGlmaWVyIF9iYWNrZ3JvdW5kVGFzazsKKyAgICBIYXNoU2V0PFByb2Nlc3NBc3NlcnRp
b25DbGllbnQgKj4gX2NsaWVudHM7CiB9CiAKICsgKFdLUHJvY2Vzc0Fzc2VydGlvbkJhY2tncm91
bmRUYXNrTWFuYWdlciAqKXNoYXJlZApAQCAtODMsNiArOTAsMTYgQEAgLSAodm9pZClkZWFsbG9j
CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCistICh2b2lkKWFkZENsaWVudDooUHJvY2Vzc0Fz
c2VydGlvbkNsaWVudCAqKWNsaWVudAoreworICAgIF9jbGllbnRzLmFkZChjbGllbnQpOworfQor
CistICh2b2lkKXJlbW92ZUNsaWVudDooUHJvY2Vzc0Fzc2VydGlvbkNsaWVudCAqKWNsaWVudAor
eworICAgIF9jbGllbnRzLnJlbW92ZShjbGllbnQpOworfQorCiAtICh2b2lkKV91cGRhdGVCYWNr
Z3JvdW5kVGFzawogewogICAgIGJvb2wgc2hvdWxkSG9sZFRhc2sgPSBfbmVlZHNUb1J1bkluQmFj
a2dyb3VuZENvdW50ICYmIF9hcHBJc0JhY2tncm91bmQ7CkBAIC05MCw2ICsxMDcsOCBAQCAtICh2
b2lkKV91cGRhdGVCYWNrZ3JvdW5kVGFzawogICAgIGlmIChzaG91bGRIb2xkVGFzayAmJiBfYmFj
a2dyb3VuZFRhc2sgPT0gVUlCYWNrZ3JvdW5kVGFza0ludmFsaWQpIHsKICAgICAgICAgX2JhY2tn
cm91bmRUYXNrID0gW1tVSUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBiZWdpbkJhY2tn
cm91bmRUYXNrV2l0aE5hbWU6QCJjb20uYXBwbGUuV2ViS2l0LlByb2Nlc3NBc3NlcnRpb24iIGV4
cGlyYXRpb25IYW5kbGVyOl57CiAgICAgICAgICAgICBOU0xvZyhAIkJhY2tncm91bmQgdGFzayBl
eHBpcmVkIHdoaWxlIGhvbGRpbmcgV2ViS2l0IFByb2Nlc3NBc3NlcnRpb24uIik7CisgICAgICAg
ICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IF9jbGllbnRzKQorICAgICAgICAgICAgICAgIGNsaWVu
dC0+YXNzZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKTsKICAgICAgICAgICAgIFtbVUlBcHBs
aWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0gZW5kQmFja2dyb3VuZFRhc2s6X2JhY2tncm91bmRU
YXNrXTsKICAgICAgICAgICAgIF9iYWNrZ3JvdW5kVGFzayA9IFVJQmFja2dyb3VuZFRhc2tJbnZh
bGlkOwogICAgICAgICB9XTsKQEAgLTE2MCw2ICsxNzksOCBAQCBQcm9jZXNzQXNzZXJ0aW9uOjpQ
cm9jZXNzQXNzZXJ0aW9uKHBpZF90IHBpZCwgQXNzZXJ0aW9uU3RhdGUgYXNzZXJ0aW9uU3RhdGUp
CiAKIFByb2Nlc3NBc3NlcnRpb246On5Qcm9jZXNzQXNzZXJ0aW9uKCkKIHsKKyAgICBpZiAoUHJv
Y2Vzc0Fzc2VydGlvbkNsaWVudCogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIFtb
V0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIHNoYXJlZF0gcmVtb3ZlQ2xp
ZW50OmNsaWVudF07CiAgICAgW21fYXNzZXJ0aW9uIGludmFsaWRhdGVdOwogfQogCkBAIC0xOTUs
NiArMjE2LDE0IEBAIHZvaWQgUHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpzZXRTdGF0ZShBc3NlcnRp
b25TdGF0ZSBhc3NlcnRpb25TdGF0ZSkKICAgICBQcm9jZXNzQXNzZXJ0aW9uOjpzZXRTdGF0ZShh
c3NlcnRpb25TdGF0ZSk7CiB9CiAKK3ZvaWQgUHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpzZXRDbGll
bnQoUHJvY2Vzc0Fzc2VydGlvbkNsaWVudCYgbmV3Q2xpZW50KQoreworICAgIFtbV0tQcm9jZXNz
QXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIHNoYXJlZF0gYWRkQ2xpZW50OiZuZXdDbGll
bnRdOworICAgIGlmIChQcm9jZXNzQXNzZXJ0aW9uQ2xpZW50KiBvbGRDbGllbnQgPSB0aGlzLT5j
bGllbnQoKSkKKyAgICAgICAgW1tXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01hbmFn
ZXIgc2hhcmVkXSByZW1vdmVDbGllbnQ6b2xkQ2xpZW50XTsKKyAgICBQcm9jZXNzQXNzZXJ0aW9u
OjpzZXRDbGllbnQobmV3Q2xpZW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bHNlIC8vIFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCkBAIC0yMjksNiArMjU4LDExIEBAIHZvaWQg
UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpzZXRTdGF0ZShBc3NlcnRpb25TdGF0ZSBhc3NlcnRpb25T
dGF0ZSkKICAgICBQcm9jZXNzQXNzZXJ0aW9uOjpzZXRTdGF0ZShhc3NlcnRpb25TdGF0ZSk7CiB9
CiAKK3ZvaWQgUHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpzZXRDbGllbnQoUHJvY2Vzc0Fzc2VydGlv
bkNsaWVudCYgbmV3Q2xpZW50KQoreworICAgIFByb2Nlc3NBc3NlcnRpb246OnNldENsaWVudChu
ZXdDbGllbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19TSU1VTEFUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggMTMx
ZjBlMzhkNmJmMTkzOTlmNjFkMmM3YmMwYmU3NDI4MGI0OWRiMi4uNzgwY2JiMDYxZTk3NWY5ZGQy
N2FkODI5YjAyZGM0MzQ0NWM3ZDUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApA
QCAtMTQyLDYgKzE0MiwxMSBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UGF1c2VBbGxE
YXRhYmFzZXMoYm9vbCBwYXVzZUFsbERhdGFiYXNlcykKICAgICBEYXRhYmFzZU1hbmFnZXI6OnNp
bmdsZXRvbigpLnNldFBhdXNlQWxsRGF0YWJhc2VzKHBhdXNlQWxsRGF0YWJhc2VzKTsKIH0KIAor
dm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmNsb3NlQWxsRGF0YWJhc2VzKCkgY29uc3QKK3sKKyAg
ICBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLmNsb3NlQWxsRGF0YWJhc2VzKCk7Cit9CisK
IHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YUZvck9yaWdpbihjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkgY29uc3QKIHsKICAg
ICAvLyBJZiB0aGUgcXVvdGEgaXMgc2V0IHRvIGEgdmFsdWUgbG93ZXIgdGhhbiB0aGUgY3VycmVu
dCB1c2FnZSwgdGhhdCBxdW90YSB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaAppbmRleCAz
M2M3YTg2ZGYxMGZiZDU4Yzg5NzEyMTlmM2EzNjFjM2NiN2I2OTg0Li41NDAzZWIyMTliNGQ1NGI5
ODY0NWE3NjJjZDZiMDk4YTJiMWMxYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgKQEAg
LTQ4LDYgKzQ4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQYXVzZUFsbERhdGFiYXNlcyhi
b29sKTsKIAorICAgIHZvaWQgY2xvc2VBbGxEYXRhYmFzZXMoKSBjb25zdDsKKwogcHJpdmF0ZToK
ICAgICAvLyBXZWJQcm9jZXNzU3VwcGxlbWVudAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXpl
KGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDIwMTNiYTg5YzA5MGMxZDk2MDI3
OTFhMjRiYmFiMjg5NTAxMDk3ODEuLjU3MThiMTUzNzE4ZTZhZmEwNTZiMWJhYzY1NTEwNjRhZjk3
OGNhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNjA4
LDcgKzYwOCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdlCiAgICAgaWYgKG1lc3NhZ2VSZWNl
aXZlck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlF
bmNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HX0VSUk9SKCJVbmhhbmRsZWQgc3lu
Y2hyb25vdXMgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXM6JXMnIiwgZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0
cmluZygpLmRhdGEoKSk7CisgICAgZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdl
RGVjb2RlciYgZGVjb2RlcikKQEAgLTEyMTcsMTYgKzEyMTcsMzEgQEAgdm9pZCBXZWJQcm9jZXNz
OjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMoKQogICAgIH0KIH0KICNlbmRpZgotICAg
IAotdm9pZCBXZWJQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmQoKQorCit2b2lkIFdlYlByb2Nl
c3M6OnByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQg
c2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQpCiB7CiAgICAgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5yZWxlYXNlTWVtb3J5KHRydWUpOwogICAgIHNldEFsbExh
eWVyVHJlZVN0YXRlc0Zyb3plbih0cnVlKTsKIAotICAgIGlmICghbWFya0FsbExheWVyc1ZvbGF0
aWxlSWZQb3NzaWJsZSgpKQotICAgICAgICBtX3Byb2Nlc3NTdXNwZW5zaW9uQ2xlYW51cFRpbWVy
LnN0YXJ0UmVwZWF0aW5nKHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMoMjApKTsKLSAgICBlbHNl
Ci0gICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCksIDApOworICAgIGlmIChtYXJrQWxs
TGF5ZXJzVm9sYXRpbGVJZlBvc3NpYmxlKCkpIHsKKyAgICAgICAgaWYgKHNob3VsZEFja25vd2xl
ZGdlV2hlblJlYWR5VG9TdXNwZW5kID09IFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNw
ZW5kOjpZZXMpCisgICAgICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpLCAwKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3Nob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9T
dXNwZW5kID0gc2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ7CisgICAgbV9wcm9j
ZXNzU3VzcGVuc2lvbkNsZWFudXBUaW1lci5zdGFydFJlcGVhdGluZyhzdGQ6OmNocm9ubzo6bWls
bGlzZWNvbmRzKDIwKSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5k
SW1taW5lbnRseShib29sJiBoYW5kbGVkKQoreworICAgIHN1cHBsZW1lbnQ8V2ViRGF0YWJhc2VN
YW5hZ2VyPigpLT5jbG9zZUFsbERhdGFiYXNlcygpOworICAgIHByZXBhcmVUb1N1c3BlbmQoU2hv
dWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ6Ok5vKTsKKyAgICBoYW5kbGVkID0gdHJ1
ZTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmQoKQoreworICAgIHBy
ZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ6Olllcyk7
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6Y2FuY2VsUHJvY2Vzc1dpbGxTdXNwZW5kKCkKQEAgLTEy
NjMsMTQgKzEyNzgsMTYgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRBbGxMYXllclRyZWVTdGF0ZXNG
cm96ZW4oYm9vbCBmcm96ZW4pCiAKIHZvaWQgV2ViUHJvY2Vzczo6cHJvY2Vzc1N1c3BlbnNpb25D
bGVhbnVwVGltZXJGaXJlZCgpCiB7Ci0gICAgaWYgKG1hcmtBbGxMYXllcnNWb2xhdGlsZUlmUG9z
c2libGUoKSkgewotICAgICAgICBtX3Byb2Nlc3NTdXNwZW5zaW9uQ2xlYW51cFRpbWVyLnN0b3Ao
KTsKKyAgICBpZiAoIW1hcmtBbGxMYXllcnNWb2xhdGlsZUlmUG9zc2libGUoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fcHJvY2Vzc1N1c3BlbnNpb25DbGVhbnVwVGltZXIuc3RvcCgpOworICAg
IGlmIChtX3Nob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kID09IFNob3VsZEFja25v
d2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpZZXMpCiAgICAgICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UHJvY2Vzc1JlYWR5VG9T
dXNwZW5kKCksIDApOwotICAgIH0KIH0KICAgICAKIHZvaWQgV2ViUHJvY2Vzczo6cHJvY2Vzc0Rp
ZFJlc3VtZSgpCiB7CisgICAgbV9wcm9jZXNzU3VzcGVuc2lvbkNsZWFudXBUaW1lci5zdG9wKCk7
CiAgICAgc2V0QWxsTGF5ZXJUcmVlU3RhdGVzRnJvemVuKGZhbHNlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA5MmFkYmMxZWYyODJhZDI1MWI3YjBmOThh
ZWE2MGVlOWYyNTRhMjU2Li44M2NmNjlhMGEyZmViMDg5ZjE3NzRlZDM5M2JhNTI1YzJhOTEyZDk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTg0LDYgKzE4NCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9z
dChjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBTdHJpbmcmIGhvc3QpOwog
I2VuZGlmCiAKKyAgICB2b2lkIHByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoYm9vbCYgaGFu
ZGxlZCk7CiAgICAgdm9pZCBwcm9jZXNzV2lsbFN1c3BlbmQoKTsKICAgICB2b2lkIGNhbmNlbFBy
b2Nlc3NXaWxsU3VzcGVuZCgpOwogICAgIGJvb2wgbWFya0FsbExheWVyc1ZvbGF0aWxlSWZQb3Nz
aWJsZSgpOwpAQCAtMjgyLDYgKzI4Myw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVJbmpl
Y3RlZEJ1bmRsZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgVXNlckRh
dGEmIG1lc3NhZ2VCb2R5KTsKICAgICB2b2lkIHNldEluamVjdGVkQnVuZGxlUGFyYW1ldGVyKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAorICAgIGVudW0g
Y2xhc3MgU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQgeyBObywgWWVzIH07Cisg
ICAgdm9pZCBwcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNw
ZW5kKTsKKwogICAgIC8vIENoaWxkUHJvY2VzcwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXpl
UHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVByb2Nlc3NOYW1lKGNvbnN0IENoaWxk
UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwpAQCAtMzA3LDYgKzMx
MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUHJv
Y2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNzTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdm9pZCBk
aWRSZWNlaXZlU3luY1dlYlByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVz
c2FnZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKTsKIAog
ICAgIC8vIFdlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudAogICAgIHZpcnR1YWwgdm9pZCBn
ZXRPcmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZl
Y3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+Jik+IGNvbXBsZXRpb24pIG92ZXJyaWRlOwpAQCAtMzgx
LDYgKzM4Niw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYlNRTGl0ZURh
dGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKICNlbmRpZgorCisgICAg
U2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQgbV9zaG91bGRBY2tub3dsZWRnZVdo
ZW5SZWFkeVRvU3VzcGVuZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGExMzc2
ODFhMjVkYTdhMzFlNjVlOTQ5NjgwZmVhNDc5MzNjMWJlOWQuLjY5OTMzMGYwNzU5OWM1MTljMzNm
ZmY0NmNjNzczNzc3NzIyOTQ2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEwMCw2ICsxMDAsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRFbmFibGVkU2VydmljZXMoYm9vbCBo
YXNJbWFnZVNlcnZpY2VzLCBib29sIGhhc1NlbGVjdGlvblNlcnZpY2VzLCBib29sIGhhc1JpY2hD
b250ZW50U2VydmljZXMpCiAjZW5kaWYKIAorICAgIFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50
bHkoKSAtPiAoYm9vbCBoYW5kbGVkKQogICAgIFByb2Nlc3NXaWxsU3VzcGVuZCgpCiAgICAgQ2Fu
Y2VsUHJvY2Vzc1dpbGxTdXNwZW5kKCkKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252682</attachid>
            <date>2015-05-07 21:36:21 -0700</date>
            <delta_ts>2015-05-10 15:11:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144661-20150507213503.patch</filename>
            <type>text/plain</type>
            <size>37930</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThjZWQ4YjYyNDI3NmI2
N2U2MmNkM2M0MjM5NjU1MzAyYzljMjgzYS4uZDc0NjQ3Njg5OTZhYzk1NzVjMjM3OWU5NGMyMTRl
OGQ1ZmRlZDMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE1LTA1LTA3ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBDbG9zZSBhbGwg
b3BlbiBkYXRhYmFzZXMgaW4gZXhwaXJhdGlvbiBoYW5kbGVyIG9mIHByb2Nlc3MgYXNzZXJ0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwODQ1MDUyPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBmdW5jdGlvbmFsaXR5IGluIFdlYkNv
cmUgdG8gY2xvc2UgYWxsIG9wZW4gZGF0YWJhc2VzLiBDbG9zaW5nIGEgU1FMaXRlIGRhdGFiYXNl
CisgICAgICAgIHdpbGwgaW50ZXJydXB0IGFueSBpbi1wcm9ncmVzcyBkYXRhYmFzZSB0cmFuc2Fj
dGlvbnMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VT
ZXJ2ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmNsb3NlQWxsRGF0YWJhc2Vz
KTogQWRkZWQ7IHR1cm5zIGFyb3VuZCBhbmQgY2FsbHMgRGF0YWJhc2VTZXJ2ZXI6OmNsb3NlQWxs
RGF0YWJhc2VzKCkuCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuaDogRXhwb3J0IERhdGFiYXNlTWFuYWdlcjo6Y2xvc2VBbGxEYXRhYmFzZXMoKSBzbyB0aGF0
CisgICAgICAgIHdlIGNhbiBjYWxsIGluIGZyb20gV2ViS2l0Mi4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlU2VydmVyOjpjbG9zZUFsbERhdGFiYXNlcyk6IEFkZGVkOyB0dXJucyBhcm91bmQgYW5kIGNh
bGxzIERhdGFiYXNlVHJhY2tlcjo6Y2xvc2VBbGxEYXRhYmFzZXMoKS4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpjbG9zZUFsbERhdGFiYXNlcyk6IEFkZGVkOyBjbG9zZXMgYWxsIG9wZW4gZGF0YWJh
c2VzLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmg6IEV4
cG9ydCBEYXRhYmFzZVRyYWNrZXI6OmNsb3NlQWxsRGF0YWJhc2VzKCkgc28gdGhhdAorICAgICAg
ICB3ZSBjYW4gY2FsbCBpbiBmcm9tIExlZ2FjeSBXZWJLaXQuCisKIDIwMTUtMDUtMDcgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUGxheWJh
Y2sgdGFyZ2V0IGlzbid0IHNldCBvbiBuZXcgZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDhj
NThjMTAzNzhlNjVjZDk4ZWM1YjFjYTZhMWRmNGM3ZTNhNWExZmMuLmQ3NGVjN2Y5MGQxMTI2MmQ4
NjJiODE3MWQzYzk3MTk3MDVlMDM5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxNS0wNS0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAg
ICAgW2lPU10gQ2xvc2UgYWxsIG9wZW4gZGF0YWJhc2VzIGluIGV4cGlyYXRpb24gaGFuZGxlciBv
ZiBwcm9jZXNzIGFzc2VydGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ0NjYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDg0NTA1Mj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3IgTGVnYWN5
IFdlYktpdCwgY2xvc2UgYWxsIG9wZW4gZGF0YWJhc2VzIHdoZW4gdGhlIHByb2Nlc3MgYXNzZXJ0
aW9uIGV4cGlyYXRpb24KKyAgICAgICAgaGFuZGxlciBpcyBjYWxsZWQuCisKKyAgICAgICAgKiBT
dG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAgKCtbV2ViRGF0YWJhc2VNYW5h
Z2VyIHN0YXJ0QmFja2dyb3VuZFRhc2tdKTogQ2FsbCBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5jbG9zZUFsbERhdGFiYXNlcygpCisgICAgICAgIGluIHRoZSBleHBpcmF0aW9uIGhhbmRsZXIg
dG8gY2xvc2UgYWxsIG9wZW4gZGF0YWJhc2VzLiBBcyBhIHNpZGUgZWZmZWN0IG9mIGNsb3NpbmcK
KyAgICAgICAgYSBkYXRhYmFzZSBhbGwgaW4tcHJvZ3Jlc3MgZGF0YWJhc2UgdHJhbnNhY3Rpb25z
IGFyZSBpbnRlcnJ1cHRlZC4KKwogMjAxNS0wNC0wMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjaW5nIHRoZSBQbGF0Zm9ybSBBYnN0
cmFjdGlvbiBMYXllciAoUEFMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDE3MGE3NzQ2NmE5ZWFjMzZmNjFmMmZh
ZGUzMmRmMDljM2Q0YzRjYWEuLjA5NjgwZDE2NDE0ODJlMjY3YzVhOWQ5NTU4YjVjYzRjMTk1OTc4
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MCBAQAorMjAxNS0wNS0wNyAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gQ2xvc2UgYWxsIG9wZW4gZGF0
YWJhc2VzIGluIGV4cGlyYXRpb24gaGFuZGxlciBvZiBwcm9jZXNzIGFzc2VydGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjYxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yMDg0NTA1Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGb3IgV2ViS2l0MiwgY2xvc2UgYWxsIG9wZW4gZGF0YWJhc2Vz
IHdoZW4gdGhlIHByb2Nlc3MgYXNzZXJ0aW9uIGV4cGlyYXRpb24KKyAgICAgICAgaGFuZGxlciBp
cyBjYWxsZWQuCisKKyAgICAgICAgV2hlbiB0aGUgcHJvY2VzcyBhc3NlcnRpb24gZXhwaXJhdGlv
biBoYW5kbGVyIGlzIGNhbGxlZCB3ZSBkaXNwYXRjaCBhIHN5bmNocm9ub3VzCisgICAgICAgIG1l
c3NhZ2UgY2FsbGVkIFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkgdG8gdGhlIHtXZWIsIE5l
dHdvcmt9IHByb2Nlc3NlcyB0byBpbmZvcm0KKyAgICAgICAgdGhlbSB0aGF0IHRoZXkgd2lsbCBi
ZSBzdXNwZW5kZWQgaW1taW5lbnRseS4gVGhlIHtXZWIsIE5ldHdvcmt9IHByb2Nlc3Mgd2lsbCBh
bHdheXMKKyAgICAgICAgc2VydmljZSB0aGlzIG1lc3NhZ2UgcmVnYXJkbGVzcyBpZiB0aGV5IHdl
cmUgd2FpdGluZyBmb3IgYW5vdGhlciBtZXNzYWdlLiBJbiB0aGUKKyAgICAgICAgV2ViUHJvY2Vz
cywgd2Ugd2lsbCBjbG9zZSBhbGwgb3BlbiBkYXRhYmFzZXMgYW1vbmcgb3RoZXIgdGFza3MgdXBv
biByZWNlaXZpbmcgdGhpcworICAgICAgICBtZXNzYWdlLiBJbiB0aGUgTmV0d29ya1Byb2Nlc3Ms
IHdlIHdpbGwgcHVyZ2Ugc29tZSBkYXRhIGZyb20gbWVtb3J5LgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKTogTW9kaWZpZWQgdG8gY2FsbCBOZXR3b3JrUHJv
Y2Vzczo6ZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoKQorICAgICAgICB0byBw
cm9jZXNzIHRoZSBzeW5jaHJvbm91cyBQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5IG1lc3Nh
Z2UuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJ
bW1pbmVudGx5KTogQWRkZWQ7IGZyZWUgc29tZSBtZW1vcnkuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbjogQWRkZWQgc3luY2hyb25vdXMgbWVzc2FnZSBQcm9jZXNzV2ls
bFN1c3BlbmRJbW1pbmVudGx5LgorICAgICAgICAqIFNoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOiBBZGRlZCBw
YXJhbWV0ZXIgc2VuZFN5bmNGbGFncyBzbyB0aGF0IHdlIGNhbiBzZW5kCisgICAgICAgIGEgc3lu
YyBtZXNzYWdlIHdpdGggZmxhZyBJUEM6OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJy
aXZlcyB0byBjYXVzZSB0aGUge1dlYiwgTmV0d29ya31Qcm9jZXNzCisgICAgICAgIHRvIHByb2Nl
c3MgdGhlIG1lc3NhZ2UgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIHdhaXRpbmcgZm9yIGFu
b3RoZXIgbWVzc2FnZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFBy
b2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkpOiBBZGRlZC4gU2VuZHMgdGhlIG1lc3NhZ2UKKyAg
ICAgICAgUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSB0byB0aGUgTmV0d29ya1Byb2Nlc3Mu
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpzZXRDbGllbnQpOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5oOiBBZGRlZCBhYnN0cmFjdCBjbGFzcyBQcm9jZXNzQXNz
ZXJ0aW9uQ2xpZW50LgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uQ2xpZW50Ojp+
UHJvY2Vzc0Fzc2VydGlvbkNsaWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNz
QXNzZXJ0aW9uOjpzZXRDbGllbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0Fz
c2VydGlvbjo6Y2xpZW50KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJv
dHRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpkaWRDb25uZWN0
VG9Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6YXNzZXJ0aW9u
V2lsbEV4cGlyZUltbWluZW50bHkpOiBBZGRlZDsgaW1wbGVtZW50cyB0aGUgUHJvY2Vzc0Fzc2Vy
dGlvbkNsaWVudAorICAgICAgICBpbnRlcmZhY2UuIE5vdGlmeSB0aGUgcHJvY2VzcyB0aHJvdHRs
ZXIgY2xpZW50cyB0aGF0IHRoZSBhc3NlcnRpb24gaXMgbmVhciBleHBpcmF0aW9uLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1By
b2Nlc3NUaHJvdHRsZXJDbGllbnQuaDogQWRkZWQgCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2VuZFBy
b2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkpOiBBZGRlZC4gU2VuZHMgdGhlIG1lc3NhZ2UKKyAg
ICAgICAgUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSB0byB0aGUgV2ViUHJvY2Vzcy4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NBc3NlcnRp
b25CYWNrZ3JvdW5kVGFza01hbmFnZXIgYWRkQ2xpZW50Ol0pOiBBZGRlZC4KKyAgICAgICAgKC1b
V0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIHJlbW92ZUNsaWVudDpdKTog
QWRkZWQuCisgICAgICAgICgtW1dLUHJvY2Vzc0Fzc2VydGlvbkJhY2tncm91bmRUYXNrTWFuYWdl
ciBfdXBkYXRlQmFja2dyb3VuZFRhc2tdKTogTW9kaWZpZWQgZXhwaXJhdGlvbiBoYW5kbGVyCisg
ICAgICAgIHRvIG5vdGlmeSBQcm9jZXNzQXNzZXJ0aW9uQ2xpZW50IGNsaWVudHMgdGhhdCB0aGUg
YXNzZXJ0aW9uIGlzIG5lYXIgZXhwaXJhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0Fz
c2VydGlvbjo6flByb2Nlc3NBc3NlcnRpb24pOiBSZW1vdmUgdGhlIGNsaWVudCBvbiBkZXN0cnVj
dGlvbi4KKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpzZXRDbGllbnQp
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6Y2xvc2VB
bGxEYXRhYmFzZXMpOiBBZGRlZDsgdHVybnMgYXJvdW5kIGFuZCBjYWxscyBEYXRhYmFzZU1hbmFn
ZXI6OmNsb3NlQWxsRGF0YWJhc2VzKCkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3Nh
Z2UpOiBDYWxsIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jV2ViUHJvY2Vzc01lc3NhZ2UoKSB0
byBwcm9jZXNzCisgICAgICAgIHRoZSBzeW5jaHJvbm91cyBQcm9jZXNzV2lsbFN1c3BlbmRJbW1p
bmVudGx5IG1lc3NhZ2UuIFJlbW92ZWQgbG9nZ2luZyBmb3IgYW4gdW5oYW5kbGVkIHN5bmNocm9u
b3VzIG1lc3NhZ2UKKyAgICAgICAgc2luY2UgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNXZWJQ
cm9jZXNzTWVzc2FnZSgpIHdpbGwgQVNTRVJUX05PVF9SRUFDSEVEKCkgZm9yIHN1Y2ggYSBtZXNz
YWdlLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKTogRXh0
cmFjdGVkIGNvZGUgZnJvbSBXZWJQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmQoKSBzbyB0aGF0
IGl0IGNhbgorICAgICAgICBiZSB1c2VkIGZyb20gYm90aCBXZWJQcm9jZXNzOjpwcm9jZXNzV2ls
bFN1c3BlbmQoKSBhbmQgV2ViUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgp
LiBBbmQgbW9kaWZpZWQKKyAgICAgICAgaXQgdG8gY29uZGl0aW9uYWxseSBkaXNwYXRjaCBhIFBy
b2Nlc3NSZWFkeVRvU3VzcGVuZCBtZXNzYWdlIHRvIHRoZSBXZWJQcm9jZXNzUHJveHkuIFdlIG9u
bHkgd2FudCB0byBkaXNwYXRjaAorICAgICAgICBzdWNoIGEgbWVzc2FnZSBhcyBwYXJ0IG9mIGEg
Y29vcmRpbmF0ZWQgc3VzcGVuc2lvbiBieSB0aGUgUHJvY2Vzc1Rocm90dGxlci4gVGhhdCBpcywg
d2UgZG8gbm90IHdhbnQgdG8gZGlzcGF0Y2gKKyAgICAgICAgdGhlIFByb2Nlc3NSZWFkeVRvU3Vz
cGVuZCBtZXNzYWdlIHdoZW4gdGhlIGJhY2tncm91bmQgYXNzZXJ0aW9uIGlzIG5lYXIgZXhwaXJh
dGlvbiAoaS5lLiBXZWJQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKKyAg
ICAgICAgaXMgY2FsbGVkKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cHJvY2Vzc1dp
bGxTdXNwZW5kSW1taW5lbnRseSk6IEFkZGVkLiBTdXNwZW5kIGFsbCBvcGVuIGRhdGFiYXNlcyBh
bW9uZyBvdGhlciB0YXNrcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cHJvY2Vzc1dp
bGxTdXNwZW5kKTogSW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgV2ViUHJvY2Vzczo6cHJlcGFyZVRv
U3VzcGVuZCgpLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcm9jZXNzU3VzcGVuc2lv
bkNsZWFudXBUaW1lckZpcmVkKTogTW9kaWZpZWQgdG8gY29uZGl0aW9uYWxseSBkaXNwYXRjaCBh
IFByb2Nlc3NSZWFkeVRvU3VzcGVuZAorICAgICAgICBtZXNzYWdlIHRvIHRoZSBXZWJQcm9jZXNz
UHJveHkuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnByb2Nlc3NEaWRSZXN1bWUpOiBT
dG9wIHRoZSBzdXNwZW5zaW9uIGNsZWFudXAgdGltZXIsIHdoaWNoIG1heSBiZSBhY3RpdmUgaWYg
dGhlIFdlYlByb2Nlc3MKKyAgICAgICAgZGlkIG5vdCBtYXJrIGFsbCBpdHMgZ3JhcGhpY3MgbGF5
ZXJzIGFzIHZvbGF0aWxlIGJlZm9yZSBwcm9jZXNzIHN1c3BlbnNpb24uCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluOiBBZGRlZCBzeW5jaHJvbm91cyBtZXNzYWdlIFByb2Nlc3NXaWxsU3VzcGVuZElt
bWluZW50bHkuCisKIDIwMTUtMDUtMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBPcHRpb25zR1RLLmNtYWtl
IGFuZCBORVdTIGZvciAyLjkuMSByZWxlYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaAppbmRleCAz
ZTI0ZWI2ZjQ0OGMwNWE0YTRkNWI2YzAwYTg4ODQwN2U2NTNmNjgyLi40MjkxMmZjNDkzZGIzNDVm
ZjdkNDEwNjQzZWIwZDJjMDcxMDdmYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaApAQCAtNTcs
NiArNTcsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNr
ZW5kQmFzZT4gb3BlbkRhdGFiYXNlKFJlZlB0cjxEYXRhYmFzZUNvbnRleHQ+JiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25J
bk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiwgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIE9wZW5B
dHRlbXB0ID0gRmlyc3RUcnlUb09wZW5EYXRhYmFzZSkgPSAwOwogCisgICAgdmlydHVhbCB2b2lk
IGNsb3NlQWxsRGF0YWJhc2VzKCkgPSAwOworCiAgICAgdmlydHVhbCBib29sIGhhc0VudHJ5Rm9y
T3JpZ2luKFNlY3VyaXR5T3JpZ2luKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvcmlnaW5zKFZl
Y3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgcmVzdWx0KSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBWZWN0b3I8U3RyaW5n
PiYgcmVzdWx0KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggZDgyODRjMWJhMWJiZDM2ODM1YjQ2N2Uz
OWNiMTRmZTU0YjkwMjAxMy4uODE1ZjUwMWU4MWIzMzk1ZTA1NWY5NGM4NWI3YjczOGM0OTgzY2Ey
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmNwcApAQCAtNDAyLDYgKzQwMiwxMSBAQCB2b2lkIERhdGFiYXNlTWFuYWdl
cjo6c2V0UGF1c2VBbGxEYXRhYmFzZXMoYm9vbCBwYXVzZUFsbERhdGFiYXNlcykKICAgICBtX3Nl
cnZlci0+c2V0UGF1c2VBbGxEYXRhYmFzZXMocGF1c2VBbGxEYXRhYmFzZXMpOwogfQogCit2b2lk
IERhdGFiYXNlTWFuYWdlcjo6Y2xvc2VBbGxEYXRhYmFzZXMoKQoreworICAgIG1fc2VydmVyLT5j
bG9zZUFsbERhdGFiYXNlcygpOworfQorCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6aW50ZXJydXB0
QWxsRGF0YWJhc2VzRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ewogICAgIFJlZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCA9IGV4aXN0aW5n
RGF0YWJhc2VDb250ZXh0Rm9yKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgKaW5kZXggNTM5ZjU1NWRmZTc1MzQ1
YTJhYzMwMTIwYzA1YmQ1ZGIzZGMwY2ZkMS4uMjRjY2IxZmIyYzVmZTlkNWYwMWQxMjI4MzQwYzZl
MzM3ODE5NmQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5oCkBAIC04NSw2ICs4NSw5IEBAIHB1YmxpYzoKICAgICBQYXNz
UmVmUHRyPERhdGFiYXNlPiBvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0
cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0
cjxEYXRhYmFzZUNhbGxiYWNrPiwgRGF0YWJhc2VFcnJvciYpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBoYXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2VBbGxEYXRhYmFzZXMoKTsKKwogICAgIHZvaWQgc3Rv
cERhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRGF0YWJhc2VUYXNrU3luY2hyb25p
emVyKik7CiAKICAgICBTdHJpbmcgZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbios
IGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCA9IHRydWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2Vy
dmVyLmNwcAppbmRleCA1NTE0NGQ4MzY5YWJlODNlZDljMjc5ZTM0NGMxOGVkYzgzNTRjYzI2Li5l
ZWMzMWQxMzMyYmE2MzkwZjU5ODU0MmEyMzk2NGRkOGM1NjNhMjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcApAQCAt
MTE3LDYgKzExNywxMSBAQCB2b2lkIERhdGFiYXNlU2VydmVyOjpzZXRQYXVzZUFsbERhdGFiYXNl
cyhib29sIHBhdXNlQWxsRGF0YWJhc2VzKQogI2VuZGlmCiB9CiAKK3ZvaWQgRGF0YWJhc2VTZXJ2
ZXI6OmNsb3NlQWxsRGF0YWJhc2VzKCkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5jbG9zZUFsbERhdGFiYXNlcygpOworfQorCiB2b2lkIERhdGFiYXNlU2VydmVyOjppbnRlcnJ1
cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQ29udGV4dCogY29udGV4dCkK
IHsKICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNG
b3JDb250ZXh0KGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oCmluZGV4IDM4NDg4NGRmYTU2NDA4Nzk1NDFiNTgwZDU3
OTYzMDFiMDk1MTFjYmMuLmZiMThhNmQ2M2MyZTZhMTU5ZDBjODVmOWU5NjhmYzJjNGU1MTJiODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VT
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
U2VydmVyLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPERhdGFiYXNlQmFja2VuZEJhc2U+IG9wZW5EYXRhYmFzZShSZWZQdHI8RGF0YWJhc2VDb250
ZXh0PiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24s
IGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwg
Ym9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYsIFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBPcGVuQXR0ZW1wdCk7CiAKKyAgICB2b2lkIGNsb3NlQWxsRGF0YWJhc2VzKCkg
b3ZlcnJpZGU7CisKICAgICB2aXJ0dWFsIGJvb2wgaGFzRW50cnlGb3JPcmlnaW4oU2VjdXJpdHlP
cmlnaW4qKTsKICAgICB2aXJ0dWFsIHZvaWQgb3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCBib29sIGRhdGFiYXNlTmFtZXNGb3JPcmln
aW4oU2VjdXJpdHlPcmlnaW4qLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApp
bmRleCBhM2Y1ODI2ZTQ3NTc5Y2VlYTgwNmZlM2MxYjQ0NmIxNTViY2Q0NzQxLi4zMGMzYmE0YWQ3
MzZiMjI3MTdhNzZhOTM2MmU0YzgzNGE3N2M1ZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0zMDYsNiAr
MzA2LDI0IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZVRyYWNrZXI6OmdldE1heFNpemVG
b3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZSogZGF0YWJhCiAgICAgcmV0dXJuIG1heFNpemU7CiB9
CiAKK3ZvaWQgRGF0YWJhc2VUcmFja2VyOjpjbG9zZUFsbERhdGFiYXNlcygpCit7CisgICAgVmVj
dG9yPFJlZlB0cjxEYXRhYmFzZT4+IG9wZW5EYXRhYmFzZXM7CisgICAgeworICAgICAgICBNdXRl
eExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAg
ICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlTWFwKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBmb3IgKGF1dG8mIGRhdGFiYXNlT3JpZ2luIDogKm1fb3BlbkRhdGFiYXNlTWFwKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlTmFtZSA6ICpkYXRhYmFzZU9yaWdpbi52YWx1ZSkg
eworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiAqZGF0YWJhc2VOYW1lLnZh
bHVlKQorICAgICAgICAgICAgICAgICAgICBvcGVuRGF0YWJhc2VzLmFwcGVuZChkYXRhYmFzZSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChhdXRvJiBkYXRhYmFz
ZSA6IG9wZW5EYXRhYmFzZXMpCisgICAgICAgIGRhdGFiYXNlLT5jbG9zZSgpOworfQorCiB2b2lk
IERhdGFiYXNlVHJhY2tlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBE
YXRhYmFzZUNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxEYXRhYmFzZUJh
Y2tlbmRCYXNlPj4gb3BlbkRhdGFiYXNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCmluZGV4IGRjYjRmNzEzODg2YjJiY2M2
N2UxNGM3Zjk4NWIxNmZmY2EzZTY1OTMuLmVhYTRmYjQ1YWIxMWI2ZTU4ZjQzY2YzMGQ2M2RhM2Nl
Y2JmMDMwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXIuaApAQCAtNzQsNiArNzQsOCBAQCBwdWJsaWM6CiAKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IERhdGFiYXNlKik7CiAK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlQWxsRGF0YWJhc2VzKCk7CisKICAgICB2b2lk
IGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgRGF0YWJhc2VDb250ZXh0Kik7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VN
YW5hZ2VyLm1tCmluZGV4IGI0MGFmN2I1MmI3ZDM0Zjc0NjQzY2ViNjEzMWUzMjRiZDVhM2ExZGIu
LmM2MWU1YzBjZTVhNTBkMmRkNjdhY2RlNWVjNmVhZTAxMDZiMmNkYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCkBAIC0yNjcsNyArMjY3
LDEwIEBAICsgKHZvaWQpc3RhcnRCYWNrZ3JvdW5kVGFzawogICAgIGlmIChnZXRUcmFuc2FjdGlv
bkJhY2tncm91bmRUYXNrSWRlbnRpZmllcigpICE9IGludmFsaWRXZWJCYWNrZ3JvdW5kVGFza0lk
ZW50aWZpZXIoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHNldFRyYW5zYWN0aW9uQmFj
a2dyb3VuZFRhc2tJZGVudGlmaWVyKHN0YXJ0QmFja2dyb3VuZFRhc2soXiB7IFtXZWJEYXRhYmFz
ZU1hbmFnZXIgZW5kQmFja2dyb3VuZFRhc2tdOyB9KSk7CisgICAgc2V0VHJhbnNhY3Rpb25CYWNr
Z3JvdW5kVGFza0lkZW50aWZpZXIoc3RhcnRCYWNrZ3JvdW5kVGFzayheIHsKKyAgICAgICAgRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuY2xvc2VBbGxEYXRhYmFzZXMoKTsKKyAgICAgICAgW1dl
YkRhdGFiYXNlTWFuYWdlciBlbmRCYWNrZ3JvdW5kVGFza107CisgICAgfSkpOwogfQogCiArICh2
b2lkKWVuZEJhY2tncm91bmRUYXNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggM2Y0NDE4YmVhMmEyNmUxMDVlNGU1ODE3YTNkOTk3
YjcyNjE1Y2Q5Ni4uZjhiZDYxZmIyYzljZjMxNTk1ZmEzZjM5YTkyMDUzNTdhNWY0OTJkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtMTMyLDcgKzEzMiwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpN
ZXNzYWdlRW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKLSAgICBtZXNzYWdlUmVjZWl2ZXJNYXAo
KS5kaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7
CisgICAgaWYgKG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGlk
UmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25u
ZWN0aW9uJikKQEAgLTUwNSw2ICs1MDgsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6dGVybWlu
YXRlKCkKICAgICBDaGlsZFByb2Nlc3M6OnRlcm1pbmF0ZSgpOwogfQogCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KGJvb2wmIGhhbmRsZWQpCit7Cisg
ICAgbG93TWVtb3J5SGFuZGxlcih0cnVlKTsKKyAgICBoYW5kbGVkID0gdHJ1ZTsKK30KKwogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kKCkKIHsKICAgICBsb3dNZW1vcnlI
YW5kbGVyKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKaW5kZXggYzViZGQzMDRiMmRkMzVmYTBmYzA0MzljYjIyZDQ1M2JkZGQ3NjdlMC4u
MTZmYjI2OTU5MDkxOGQ0ODNlZjE3ZDUyYTZhOWZhZjgwZDAxMjhkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC03OCw2ICs3OCw3IEBA
IHB1YmxpYzoKICAgICBEb3dubG9hZE1hbmFnZXImIGRvd25sb2FkTWFuYWdlcigpOwogICAgIGJv
b2wgY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uOyB9CiAKKyAgICB2b2lkIHByb2Nl
c3NXaWxsU3VzcGVuZEltbWluZW50bHkoYm9vbCYgaGFuZGxlZCk7CiAgICAgdm9pZCBwcm9jZXNz
V2lsbFN1c3BlbmQoKTsKICAgICB2b2lkIGNhbmNlbFByb2Nlc3NXaWxsU3VzcGVuZCgpOwogICAg
IHZvaWQgcHJvY2Vzc0RpZFJlc3VtZSgpOwpAQCAtMTIyLDYgKzEyMyw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nl
c3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rl
cj4mKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoKTsKICAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
V2ViQ29yZTo6U2Vzc2lvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNjYyYjU1MzdjNjFiNzcy
MGFmNTUzNjMzNzcxOWI3ZTNiNzg0NGY1Yy4uZDVjYTYwNDQ5OGU4YWY1ODc3Y2U0ZjAzNDRlNmMw
NWUxZTNlMzIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTU4LDYgKzU4LDcgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsZWFyQ2FjaGVGb3JBbGxP
cmlnaW5zKHVpbnQzMl90IGNhY2hlc1RvQ2xlYXIpCiAgICAgU2V0Q2FjaGVNb2RlbCh1aW50MzJf
dCBjYWNoZU1vZGVsKTsKIAorICAgIFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSAtPiAo
Ym9vbCBoYW5kbGVkKQogICAgIFByb2Nlc3NXaWxsU3VzcGVuZCgpCiAgICAgQ2FuY2VsUHJvY2Vz
c1dpbGxTdXNwZW5kKCkKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmgKaW5kZXggNjBhMDU5ZjQwNTU3NWEzMDI2ZTVmM2ZhZDI3
ZTkzYTUzZWM4ZmZhNy4uNTU4OTQ3YjA3YzkwY2ZjMzIzNjcwZjFlZWE1ODQ4YTg0ZjRhZDI3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVu
c2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBi
b29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVvdXQgPSBzdGQ6OmNo
cm9ubzo6c2Vjb25kcygxKSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3lu
YyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0ID0gc3RkOjpjaHJvbm86OnNlY29u
ZHMoMSksIHVuc2lnbmVkIHNlbmRTeW5jRmxhZ3MgPSAwKTsKICAgICAKICAgICBJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdAogICAgIHsKQEAgLTEwNSwxNCArMTA1LDE0IEBAIGJv
b2wgQ2hpbGRQcm9jZXNzUHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIHVuc2lnbmVkIG1lc3NhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFU+IAotYm9vbCBD
aGlsZFByb2Nlc3NQcm94eTo6c2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5
JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29u
ZHMgdGltZW91dCkKK2Jvb2wgQ2hpbGRQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNzYWdl
LCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBzdGQ6
OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVvdXQsIHVuc2lnbmVkIHNlbmRTeW5jRmxhZ3MpCiB7
CiAgICAgQ09NUElMRV9BU1NFUlQoVTo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAog
ICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gY29ubmVjdGlvbigpLT5zZW5kU3luYyhzdGQ6OmZvcndhcmQ8VT4obWVzc2FnZSksIFdURjo6
bW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQpOworICAgIHJldHVybiBjb25uZWN0
aW9uKCktPnNlbmRTeW5jKHN0ZDo6Zm9yd2FyZDxVPihtZXNzYWdlKSwgV1RGOjptb3ZlKHJlcGx5
KSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgc2VuZFN5bmNGbGFncyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA0NjcwMTNkMDYzNTJkZjExMzQ2Zjc0
MzM1NTg4YjM3ZWRiYmZiZjVhLi4zMzRjMmI2MWEyMzE3M2U0YWYyOTdmMzY5OTQ1MjFjNjVjMTE3
MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzEzLDYgKzMxMywxNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgUwogICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKG1lc3Nh
Z2UsIGRlc2NyaXB0aW9uLCB2YWx1ZSwgc2hvdWxkU2FtcGxlKTsKIH0KIAordm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpCit7CisgICAg
aWYgKCFjYW5TZW5kTWVzc2FnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGhhbmRs
ZWQgPSBmYWxzZTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nl
c3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9j
ZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5OjpSZXBseShoYW5kbGVkKSwKKyAgICAgICAgMCwgc3Rk
OjpjaHJvbm86OnNlY29uZHMoMSksIElQQzo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VB
cnJpdmVzKTsKK30KKyAgICAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NX
aWxsU3VzcGVuZCgpCiB7CiAgICAgaWYgKGNhblNlbmRNZXNzYWdlKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggN2NiMjFmNmViNDQyMTc4MWJlYjU1YzE4OTdkYzhjZTc5MGQxZmMwMi4uZGFkNDc5ZTVhYTlk
ZDg4ZGIzMDI2MzliYjM0YTU3M2UzNDExZDBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtNjksNiArNjks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wp
OwogI2VuZGlmCiAKKyAgICB2b2lkIHNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZW5kQ2FuY2VsUHJvY2Vzc1dpbGxTdXNwZW5kKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRDYW5jZWxQcm9jZXNzU3VzcGVuc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1Byb2Nlc3NBc3NlcnRpb24uY3BwCmluZGV4IGY4Mjc2YTZmNWY5MDcyNWU2ZThhMjY0ZTE4
ZTcwOGZmZWUyYjVkOWQuLmUwMjc5YmQ4YTM5MmNmM2NiMDJlMjc3ZThjYWQwMjU5NjVlNjBlNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgdm9pZCBQcm9jZXNzQXNzZXJ0aW9uOjpzZXRTdGF0ZShBc3NlcnRpb25T
dGF0ZSBhc3NlcnRpb25TdGF0ZSkKIAogICAgIG1fYXNzZXJ0aW9uU3RhdGUgPSBhc3NlcnRpb25T
dGF0ZTsKIH0KLSAgICAKKwogUHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpQcm9jZXNzQW5kVUlBc3Nl
cnRpb24ocGlkX3QgcGlkLCBBc3NlcnRpb25TdGF0ZSBhc3NlcnRpb25TdGF0ZSkKICAgICA6IFBy
b2Nlc3NBc3NlcnRpb24ocGlkLCBhc3NlcnRpb25TdGF0ZSkKIHsKQEAgLTYwLDcgKzYwLDEyIEBA
IHZvaWQgUHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpzZXRTdGF0ZShBc3NlcnRpb25TdGF0ZSBhc3Nl
cnRpb25TdGF0ZSkKIHsKICAgICBQcm9jZXNzQXNzZXJ0aW9uOjpzZXRTdGF0ZShhc3NlcnRpb25T
dGF0ZSk7CiB9Ci0gICAgCisKK3ZvaWQgUHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpzZXRDbGllbnQo
UHJvY2Vzc0Fzc2VydGlvbkNsaWVudCYgY2xpZW50KQoreworICAgIFByb2Nlc3NBc3NlcnRpb246
OnNldENsaWVudChjbGllbnQpOworfQorCiB9CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmgKaW5kZXggYTcyMmM5
ZDQ5YjI2NTE3ZTBmNWQ5YjNlYTVjNDc3NDgyZWY1N2VhOS4uOTVjOTdjMTNlNmI3MjY3NDczMDBl
OWRmYzY0NDAyYzQyYTUzYjFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1Byb2Nlc3NBc3NlcnRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vz
c0Fzc2VydGlvbi5oCkBAIC0zOSwyNyArMzksMzggQEAgZW51bSBjbGFzcyBBc3NlcnRpb25TdGF0
ZSB7CiAgICAgRm9yZWdyb3VuZAogfTsKIAorY2xhc3MgUHJvY2Vzc0Fzc2VydGlvbkNsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+UHJvY2Vzc0Fzc2VydGlvbkNsaWVudCgpIHsgfTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXNzZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKSA9IDA7Cit9Owor
CiBjbGFzcyBQcm9jZXNzQXNzZXJ0aW9uIHsKIHB1YmxpYzoKICAgICBQcm9jZXNzQXNzZXJ0aW9u
KHBpZF90LCBBc3NlcnRpb25TdGF0ZSk7CiAgICAgflByb2Nlc3NBc3NlcnRpb24oKTsKIAorICAg
IHZvaWQgc2V0Q2xpZW50KFByb2Nlc3NBc3NlcnRpb25DbGllbnQmIGNsaWVudCkgeyBtX2NsaWVu
dCA9ICZjbGllbnQ7IH0KKyAgICBQcm9jZXNzQXNzZXJ0aW9uQ2xpZW50KiBjbGllbnQoKSB7IHJl
dHVybiBtX2NsaWVudDsgfQorCiAgICAgQXNzZXJ0aW9uU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX2Fzc2VydGlvblN0YXRlOyB9Ci0gICAgCiAgICAgdm9pZCBzZXRTdGF0ZShBc3NlcnRp
b25TdGF0ZSk7Ci0gICAgCisKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKSAmJiAhUExBVEZP
Uk0oSU9TX1NJTVVMQVRPUikKICAgICBSZXRhaW5QdHI8QktTUHJvY2Vzc0Fzc2VydGlvbj4gbV9h
c3NlcnRpb247CiAjZW5kaWYKICAgICBBc3NlcnRpb25TdGF0ZSBtX2Fzc2VydGlvblN0YXRlOwor
ICAgIFByb2Nlc3NBc3NlcnRpb25DbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogfTsKICAg
ICAKIGNsYXNzIFByb2Nlc3NBbmRVSUFzc2VydGlvbiA6IHB1YmxpYyBQcm9jZXNzQXNzZXJ0aW9u
IHsKIHB1YmxpYzoKICAgICBQcm9jZXNzQW5kVUlBc3NlcnRpb24ocGlkX3QsIEFzc2VydGlvblN0
YXRlKTsKICAgICB+UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uKCk7Ci0gICAgCisKKyAgICB2b2lkIHNl
dENsaWVudChQcm9jZXNzQXNzZXJ0aW9uQ2xpZW50Jik7CisKICAgICB2b2lkIHNldFN0YXRlKEFz
c2VydGlvblN0YXRlKTsKIH07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJv
Y2Vzc1Rocm90dGxlci5jcHAKaW5kZXggYmQ2ZWVhNjdlMmQ0MjE4ZTFlZDY3ZGY4ODNmNjQ2MDgy
ZDU2MjExOC4uODE0ZWMwOTRjZDMxN2Q1OGEwNmQyYThiOWNmYjM4ZGVmYTg4N2U5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAtODgsNiAr
ODgsNyBAQCB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OmRpZENvbm5lY3RUb1Byb2Nlc3MocGlkX3Qg
cGlkKQogewogICAgIG1fc3VzcGVuZFRpbWVyLnN0b3AoKTsKICAgICBtX2Fzc2VydGlvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihwaWQsIGFzc2VydGlvblN0YXRl
KCkpOworICAgIG1fYXNzZXJ0aW9uLT5zZXRDbGllbnQoKnRoaXMpOwogfQogICAgIAogdm9pZCBQ
cm9jZXNzVGhyb3R0bGVyOjpzdXNwZW5kVGltZXJGaXJlZCgpCkBAIC0xMDksNCArMTEwLDkgQEAg
dm9pZCBQcm9jZXNzVGhyb3R0bGVyOjpkaWRDYW5jZWxQcm9jZXNzU3VzcGVuc2lvbigpCiAgICAg
QVNTRVJUKG1fc3VzcGVuZE1lc3NhZ2VDb3VudCA+PSAwKTsKIH0KIAordm9pZCBQcm9jZXNzVGhy
b3R0bGVyOjphc3NlcnRpb25XaWxsRXhwaXJlSW1taW5lbnRseSgpCit7CisgICAgbV9wcm9jZXNz
LT5zZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpOworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaAppbmRleCAzZTY4ZTg4MDA4N2E4MzY0
MGY3YjI4MzA4YTU4MTlmYWVmZjE4MWYzLi4xZjlhYzU2YThiOWEyMGZkMDFiYTZkMTAzZWRlNmUx
ZGE0NzUyNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc1Ro
cm90dGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVy
LmgKQEAgLTQxLDcgKzQxLDcgQEAgdHlwZWRlZiBSZWZDb3VudGVyOjpUb2tlbjxQcm9jZXNzU3Vw
cHJlc3Npb25EaXNhYmxlZFRva2VuVHlwZT4gUHJvY2Vzc1N1cHByZXNzaW8KIAogY2xhc3MgUHJv
Y2Vzc1Rocm90dGxlckNsaWVudDsKIAotY2xhc3MgUHJvY2Vzc1Rocm90dGxlciB7CitjbGFzcyBQ
cm9jZXNzVGhyb3R0bGVyIDogcHVibGljIFByb2Nlc3NBc3NlcnRpb25DbGllbnQgewogcHVibGlj
OgogICAgIGVudW0gRm9yZWdyb3VuZEFjdGl2aXR5VG9rZW5UeXBlIHsgfTsKICAgICB0eXBlZGVm
IFJlZkNvdW50ZXI6OlRva2VuPEZvcmVncm91bmRBY3Rpdml0eVRva2VuVHlwZT4gRm9yZWdyb3Vu
ZEFjdGl2aXR5VG9rZW47CkBAIC01Niw3ICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRD
b25uZWN0VG9Qcm9jZXNzKHBpZF90KTsKICAgICB2b2lkIHByb2Nlc3NSZWFkeVRvU3VzcGVuZCgp
OwogICAgIHZvaWQgZGlkQ2FuY2VsUHJvY2Vzc1N1c3BlbnNpb24oKTsKLSAgICAKKworICAgIC8v
IFByb2Nlc3NBc3NlcnRpb25DbGllbnQKKyAgICB2b2lkIGFzc2VydGlvbldpbGxFeHBpcmVJbW1p
bmVudGx5KCkgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAgQXNzZXJ0aW9uU3RhdGUgYXNzZXJ0
aW9uU3RhdGUoKTsKICAgICB2b2lkIHVwZGF0ZUFzc2VydGlvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgKaW5kZXggY2UxMzVhZjJj
YTU2Y2VlMjc1YTY1M2JhNDIxY2Q2NTJkYjk0ZmJiZi4uMmY1MjZhMzMyMmRhYWQ4ZDI0YzQ5YzBk
MDJiZTQyYTQxNGI1MGNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1By
b2Nlc3NUaHJvdHRsZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJv
Y2Vzc1Rocm90dGxlckNsaWVudC5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIFByb2Nlc3NUaHJv
dHRsZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflByb2Nlc3NUaHJvdHRsZXJDbGll
bnQoKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5l
bnRseSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2VuZFByb2Nlc3NXaWxsU3VzcGVuZCgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2VuZENhbmNlbFByb2Nlc3NXaWxsU3VzcGVuZCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2VuZFByb2Nlc3NEaWRSZXN1bWUoKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGZiMGZiNDhhOTlmZDQ0
NWVjZTRhNmFkOTY4ZGNkNGMwMjAyMzMwMjUuLmUxZmIxN2Q1ODZhZDBmNGYzZTFlMDdjNjQ4MTNk
ZTRmNDA3MjcwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCkBAIC04ODksNiArODg5LDE2IEBAIFJlZlB0cjxBUEk6Ok9iamVjdD4gV2ViUHJvY2Vz
c1Byb3h5Ojp0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKEFQSTo6T2JqZWN0KiBvYmplCiAgICAg
cmV0dXJuIFVzZXJEYXRhOjp0cmFuc2Zvcm0ob2JqZWN0LCBUcmFuc2Zvcm1lcigpKTsKIH0KIAor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkK
K3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGJv
b2wgaGFuZGxlZCA9IGZhbHNlOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpQ
cm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpQcm9j
ZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5OjpSZXBseShoYW5kbGVkKSwKKyAgICAgICAgMCwgc3Rk
OjpjaHJvbm86OnNlY29uZHMoMSksIElQQzo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VB
cnJpdmVzKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3Bl
bmQoKQogewogICAgIGlmIChjYW5TZW5kTWVzc2FnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGJmNTIwMmEwNmE1NGEwNDNkNjlkOTBkYzhhMmNh
YTMxOWIwZTFhMjkuLmFhYWNhNTMyYTUyMDllZDMzYTI0OTI5ZDQ4YTZkNTU3MzRkMmRiMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTE0Myw2ICsx
NDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNo
YW5nZWQoKTsKIAorICAgIHZvaWQgc2VuZFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSBv
dmVycmlkZTsKICAgICB2b2lkIHNlbmRQcm9jZXNzV2lsbFN1c3BlbmQoKSBvdmVycmlkZTsKICAg
ICB2b2lkIHByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpOwogICAgIHZvaWQgc2VuZENhbmNlbFByb2Nl
c3NXaWxsU3VzcGVuZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tCmluZGV4IDJhMmNhMzRkZTYxYmFmZjllZjg0
ZWEyZGQyZGE3ODJhM2ZlMzdkNzcuLjljMDk3ODUxZDIzYjJkMjEwYzU3MzAwYmYxN2Y2ZGRiZTRk
ZjRjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fz
c2VydGlvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NB
c3NlcnRpb25JT1MubW0KQEAgLTMwLDkgKzMwLDEyIEBACiAKICNpbXBvcnQgIkJLU1Byb2Nlc3NB
c3NlcnRpb25TUEkuaCIKICNpbXBvcnQgPFVJS2l0L1VJQXBwbGljYXRpb24uaD4KKyNpbXBvcnQg
PHd0Zi9IYXNoU2V0Lmg+CiAKICNpZiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKIAordXNpbmcg
V2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uQ2xpZW50OworCiBAaW50ZXJmYWNlIFdLUHJvY2Vzc0Fz
c2VydGlvbkJhY2tncm91bmRUYXNrTWFuYWdlciA6IE5TT2JqZWN0CiAKICsgKFdLUHJvY2Vzc0Fz
c2VydGlvbkJhY2tncm91bmRUYXNrTWFuYWdlciAqKXNoYXJlZDsKQEAgLTQwLDYgKzQzLDkgQEAg
KyAoV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyICopc2hhcmVkOwogLSAo
dm9pZClpbmNyZW1lbnROZWVkc1RvUnVuSW5CYWNrZ3JvdW5kQ291bnQ7CiAtICh2b2lkKWRlY3Jl
bWVudE5lZWRzVG9SdW5JbkJhY2tncm91bmRDb3VudDsKIAorLSAodm9pZClhZGRDbGllbnQ6KFBy
b2Nlc3NBc3NlcnRpb25DbGllbnQgKiljbGllbnQ7CistICh2b2lkKXJlbW92ZUNsaWVudDooUHJv
Y2Vzc0Fzc2VydGlvbkNsaWVudCAqKWNsaWVudDsKKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24g
V0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyCkBAIC00Nyw2ICs1Myw3IEBA
IEBpbXBsZW1lbnRhdGlvbiBXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01hbmFnZXIK
ICAgICB1bnNpZ25lZCBfbmVlZHNUb1J1bkluQmFja2dyb3VuZENvdW50OwogICAgIEJPT0wgX2Fw
cElzQmFja2dyb3VuZDsKICAgICBVSUJhY2tncm91bmRUYXNrSWRlbnRpZmllciBfYmFja2dyb3Vu
ZFRhc2s7CisgICAgSGFzaFNldDxQcm9jZXNzQXNzZXJ0aW9uQ2xpZW50ICo+IF9jbGllbnRzOwog
fQogCiArIChXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01hbmFnZXIgKilzaGFyZWQK
QEAgLTgzLDYgKzkwLDE2IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIAorLSAodm9pZClhZGRDbGllbnQ6KFByb2Nlc3NBc3NlcnRpb25DbGllbnQgKiljbGllbnQK
K3sKKyAgICBfY2xpZW50cy5hZGQoY2xpZW50KTsKK30KKworLSAodm9pZClyZW1vdmVDbGllbnQ6
KFByb2Nlc3NBc3NlcnRpb25DbGllbnQgKiljbGllbnQKK3sKKyAgICBfY2xpZW50cy5yZW1vdmUo
Y2xpZW50KTsKK30KKwogLSAodm9pZClfdXBkYXRlQmFja2dyb3VuZFRhc2sKIHsKICAgICBib29s
IHNob3VsZEhvbGRUYXNrID0gX25lZWRzVG9SdW5JbkJhY2tncm91bmRDb3VudCAmJiBfYXBwSXNC
YWNrZ3JvdW5kOwpAQCAtOTAsNiArMTA3LDggQEAgLSAodm9pZClfdXBkYXRlQmFja2dyb3VuZFRh
c2sKICAgICBpZiAoc2hvdWxkSG9sZFRhc2sgJiYgX2JhY2tncm91bmRUYXNrID09IFVJQmFja2dy
b3VuZFRhc2tJbnZhbGlkKSB7CiAgICAgICAgIF9iYWNrZ3JvdW5kVGFzayA9IFtbVUlBcHBsaWNh
dGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0gYmVnaW5CYWNrZ3JvdW5kVGFza1dpdGhOYW1lOkAiY29t
LmFwcGxlLldlYktpdC5Qcm9jZXNzQXNzZXJ0aW9uIiBleHBpcmF0aW9uSGFuZGxlcjpeewogICAg
ICAgICAgICAgTlNMb2coQCJCYWNrZ3JvdW5kIHRhc2sgZXhwaXJlZCB3aGlsZSBob2xkaW5nIFdl
YktpdCBQcm9jZXNzQXNzZXJ0aW9uLiIpOworICAgICAgICAgICAgZm9yIChhdXRvKiBjbGllbnQg
OiBfY2xpZW50cykKKyAgICAgICAgICAgICAgICBjbGllbnQtPmFzc2VydGlvbldpbGxFeHBpcmVJ
bW1pbmVudGx5KCk7CiAgICAgICAgICAgICBbW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRp
b25dIGVuZEJhY2tncm91bmRUYXNrOl9iYWNrZ3JvdW5kVGFza107CiAgICAgICAgICAgICBfYmFj
a2dyb3VuZFRhc2sgPSBVSUJhY2tncm91bmRUYXNrSW52YWxpZDsKICAgICAgICAgfV07CkBAIC0x
NjAsNiArMTc5LDggQEAgUHJvY2Vzc0Fzc2VydGlvbjo6UHJvY2Vzc0Fzc2VydGlvbihwaWRfdCBw
aWQsIEFzc2VydGlvblN0YXRlIGFzc2VydGlvblN0YXRlKQogCiBQcm9jZXNzQXNzZXJ0aW9uOjp+
UHJvY2Vzc0Fzc2VydGlvbigpCiB7CisgICAgaWYgKFByb2Nlc3NBc3NlcnRpb25DbGllbnQqIGNs
aWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBbW1dLUHJvY2Vzc0Fzc2VydGlvbkJhY2tn
cm91bmRUYXNrTWFuYWdlciBzaGFyZWRdIHJlbW92ZUNsaWVudDpjbGllbnRdOwogICAgIFttX2Fz
c2VydGlvbiBpbnZhbGlkYXRlXTsKIH0KIApAQCAtMTk1LDYgKzIxNiwxNCBAQCB2b2lkIFByb2Nl
c3NBbmRVSUFzc2VydGlvbjo6c2V0U3RhdGUoQXNzZXJ0aW9uU3RhdGUgYXNzZXJ0aW9uU3RhdGUp
CiAgICAgUHJvY2Vzc0Fzc2VydGlvbjo6c2V0U3RhdGUoYXNzZXJ0aW9uU3RhdGUpOwogfQogCit2
b2lkIFByb2Nlc3NBbmRVSUFzc2VydGlvbjo6c2V0Q2xpZW50KFByb2Nlc3NBc3NlcnRpb25DbGll
bnQmIG5ld0NsaWVudCkKK3sKKyAgICBbW1dLUHJvY2Vzc0Fzc2VydGlvbkJhY2tncm91bmRUYXNr
TWFuYWdlciBzaGFyZWRdIGFkZENsaWVudDombmV3Q2xpZW50XTsKKyAgICBpZiAoUHJvY2Vzc0Fz
c2VydGlvbkNsaWVudCogb2xkQ2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIFtbV0tQ
cm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIHNoYXJlZF0gcmVtb3ZlQ2xpZW50
Om9sZENsaWVudF07CisgICAgUHJvY2Vzc0Fzc2VydGlvbjo6c2V0Q2xpZW50KG5ld0NsaWVudCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZWxzZSAvLyBQTEFURk9STShJT1NfU0lN
VUxBVE9SKQpAQCAtMjI5LDYgKzI1OCwxMSBAQCB2b2lkIFByb2Nlc3NBbmRVSUFzc2VydGlvbjo6
c2V0U3RhdGUoQXNzZXJ0aW9uU3RhdGUgYXNzZXJ0aW9uU3RhdGUpCiAgICAgUHJvY2Vzc0Fzc2Vy
dGlvbjo6c2V0U3RhdGUoYXNzZXJ0aW9uU3RhdGUpOwogfQogCit2b2lkIFByb2Nlc3NBbmRVSUFz
c2VydGlvbjo6c2V0Q2xpZW50KFByb2Nlc3NBc3NlcnRpb25DbGllbnQmIG5ld0NsaWVudCkKK3sK
KyAgICBQcm9jZXNzQXNzZXJ0aW9uOjpzZXRDbGllbnQobmV3Q2xpZW50KTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfU0lNVUxBVE9SKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRh
YmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDEzMWYwZTM4ZDZiZjE5Mzk5ZjYxZDJjN2Jj
MGJlNzQyODBiNDlkYjIuLjc4MGNiYjA2MWU5NzVmOWRkMjdhZDgyOWIwMmRjNDM0NDVjN2Q1MzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTE0Miw2ICsxNDIsMTEgQEAgdm9p
ZCBXZWJEYXRhYmFzZU1hbmFnZXI6OnNldFBhdXNlQWxsRGF0YWJhc2VzKGJvb2wgcGF1c2VBbGxE
YXRhYmFzZXMpCiAgICAgRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRQYXVzZUFsbERh
dGFiYXNlcyhwYXVzZUFsbERhdGFiYXNlcyk7CiB9CiAKK3ZvaWQgV2ViRGF0YWJhc2VNYW5hZ2Vy
OjpjbG9zZUFsbERhdGFiYXNlcygpIGNvbnN0Cit7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjpzaW5n
bGV0b24oKS5jbG9zZUFsbERhdGFiYXNlcygpOworfQorCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdl
cjo6c2V0UXVvdGFGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1bnNp
Z25lZCBsb25nIGxvbmcgcXVvdGEpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIHF1b3RhIGlzIHNl
dCB0byBhIHZhbHVlIGxvd2VyIHRoYW4gdGhlIGN1cnJlbnQgdXNhZ2UsIHRoYXQgcXVvdGEgd2ls
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJEYXRhYmFzZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgKaW5kZXggMzNjN2E4NmRmMTBmYmQ1OGM4OTcxMjE5
ZjNhMzYxYzNjYjdiNjk4NC4uNTQwM2ViMjE5YjRkNTRiOTg2NDVhNzYyY2Q2YjA5OGEyYjFjMWIw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJEYXRhYmFzZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0UGF1c2VBbGxEYXRhYmFzZXMoYm9vbCk7CiAKKyAgICB2b2lkIGNsb3Nl
QWxsRGF0YWJhc2VzKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgLy8gV2ViUHJvY2Vzc1N1cHBs
ZW1lbnQKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCAyMDEzYmE4OWMwOTBjMWQ5NjAyNzkxYTI0YmJhYjI4OTUwMTA5NzgxLi41
NzE4YjE1MzcxOGU2YWZhMDU2YjFiYWM2NTUxMDY0YWY5NzhjYTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTYwOCw3ICs2MDgsNyBAQCB2b2lkIFdlYlBy
b2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6TWVzc2FnZQogICAgIGlmIChtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaFN5bmNN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlcikpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIExPR19FUlJPUigiVW5oYW5kbGVkIHN5bmNocm9ub3VzIHdlYiBwcm9jZXNzIG1l
c3NhZ2UgJyVzOiVzJyIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCku
ZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCkpOworICAgIGRp
ZFJlY2VpdmVTeW5jV2ViUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlF
bmNvZGVyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCkBAIC0x
MjE3LDE2ICsxMjE3LDMxIEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVzZXRBbGxHZW9sb2NhdGlvblBl
cm1pc3Npb25zKCkKICAgICB9CiB9CiAjZW5kaWYKLSAgICAKLXZvaWQgV2ViUHJvY2Vzczo6cHJv
Y2Vzc1dpbGxTdXNwZW5kKCkKKwordm9pZCBXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKFNo
b3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kIHNob3VsZEFja25vd2xlZGdlV2hlblJl
YWR5VG9TdXNwZW5kKQogewogICAgIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCku
cmVsZWFzZU1lbW9yeSh0cnVlKTsKICAgICBzZXRBbGxMYXllclRyZWVTdGF0ZXNGcm96ZW4odHJ1
ZSk7CiAKLSAgICBpZiAoIW1hcmtBbGxMYXllcnNWb2xhdGlsZUlmUG9zc2libGUoKSkKLSAgICAg
ICAgbV9wcm9jZXNzU3VzcGVuc2lvbkNsZWFudXBUaW1lci5zdGFydFJlcGVhdGluZyhzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzKDIwKSk7Ci0gICAgZWxzZQotICAgICAgICBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlByb2Nlc3NSZWFk
eVRvU3VzcGVuZCgpLCAwKTsKKyAgICBpZiAobWFya0FsbExheWVyc1ZvbGF0aWxlSWZQb3NzaWJs
ZSgpKSB7CisgICAgICAgIGlmIChzaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCA9
PSBTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6WWVzKQorICAgICAgICAgICAg
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgbV9zaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCA9IHNob3VsZEFja25vd2xl
ZGdlV2hlblJlYWR5VG9TdXNwZW5kOworICAgIG1fcHJvY2Vzc1N1c3BlbnNpb25DbGVhbnVwVGlt
ZXIuc3RhcnRSZXBlYXRpbmcoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcygyMCkpOworfQorCit2
b2lkIFdlYlByb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoYm9vbCYgaGFuZGxl
ZCkKK3sKKyAgICBzdXBwbGVtZW50PFdlYkRhdGFiYXNlTWFuYWdlcj4oKS0+Y2xvc2VBbGxEYXRh
YmFzZXMoKTsKKyAgICBwcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5
VG9TdXNwZW5kOjpObyk7CisgICAgaGFuZGxlZCA9IHRydWU7Cit9CisKK3ZvaWQgV2ViUHJvY2Vz
czo6cHJvY2Vzc1dpbGxTdXNwZW5kKCkKK3sKKyAgICBwcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFj
a25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpZZXMpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6
OmNhbmNlbFByb2Nlc3NXaWxsU3VzcGVuZCgpCkBAIC0xMjYzLDE0ICsxMjc4LDE2IEBAIHZvaWQg
V2ViUHJvY2Vzczo6c2V0QWxsTGF5ZXJUcmVlU3RhdGVzRnJvemVuKGJvb2wgZnJvemVuKQogCiB2
b2lkIFdlYlByb2Nlc3M6OnByb2Nlc3NTdXNwZW5zaW9uQ2xlYW51cFRpbWVyRmlyZWQoKQogewot
ICAgIGlmIChtYXJrQWxsTGF5ZXJzVm9sYXRpbGVJZlBvc3NpYmxlKCkpIHsKLSAgICAgICAgbV9w
cm9jZXNzU3VzcGVuc2lvbkNsZWFudXBUaW1lci5zdG9wKCk7CisgICAgaWYgKCFtYXJrQWxsTGF5
ZXJzVm9sYXRpbGVJZlBvc3NpYmxlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Byb2Nlc3NT
dXNwZW5zaW9uQ2xlYW51cFRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV9zaG91bGRBY2tub3dsZWRn
ZVdoZW5SZWFkeVRvU3VzcGVuZCA9PSBTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVu
ZDo6WWVzKQogICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OlByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpLCAwKTsKLSAgICB9CiB9
CiAgICAgCiB2b2lkIFdlYlByb2Nlc3M6OnByb2Nlc3NEaWRSZXN1bWUoKQogeworICAgIG1fcHJv
Y2Vzc1N1c3BlbnNpb25DbGVhbnVwVGltZXIuc3RvcCgpOwogICAgIHNldEFsbExheWVyVHJlZVN0
YXRlc0Zyb3plbihmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKaW5kZXggOTJhZGJjMWVmMjgyYWQyNTFiN2IwZjk4YWVhNjBlZTlmMjU0YTI1Ni4uODNjZjY5
YTBhMmZlYjA4OWYxNzc0ZWQzOTNiYTUyNWMyYTkxMmQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTE4NCw2ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
bGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKICNlbmRpZgogCisgICAgdm9pZCBwcm9j
ZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KGJvb2wmIGhhbmRsZWQpOwogICAgIHZvaWQgcHJvY2Vz
c1dpbGxTdXNwZW5kKCk7CiAgICAgdm9pZCBjYW5jZWxQcm9jZXNzV2lsbFN1c3BlbmQoKTsKICAg
ICBib29sIG1hcmtBbGxMYXllcnNWb2xhdGlsZUlmUG9zc2libGUoKTsKQEAgLTI4Miw2ICsyODMs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlSW5qZWN0ZWRCdW5kbGVNZXNzYWdlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9keSk7CiAgICAg
dm9pZCBzZXRJbmplY3RlZEJ1bmRsZVBhcmFtZXRlcihjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJik7CiAKKyAgICBlbnVtIGNsYXNzIFNob3VsZEFja25vd2xlZGdl
V2hlblJlYWR5VG9TdXNwZW5kIHsgTm8sIFllcyB9OworICAgIHZvaWQgcHJlcGFyZVRvU3VzcGVu
ZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCk7CisKICAgICAvLyBDaGlsZFBy
b2Nlc3MKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9j
ZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGluaXRpYWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBh
cmFtZXRlcnMmKSBvdmVycmlkZTsKQEAgLTMwNyw2ICszMTEsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpNZXNzYWdlRGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNz
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jik7CiAKICAgICAvLyBXZWJPcmlnaW5EYXRhTWFu
YWdlclN1cHBsZW1lbnQKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3JpZ2lucyhXS09yaWdpbkRhdGFU
eXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRh
PiYpPiBjb21wbGV0aW9uKSBvdmVycmlkZTsKQEAgLTM4MSw2ICszODYsOCBAQCBwcml2YXRlOgog
I2lmIFBMQVRGT1JNKElPUykKICAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXI7CiAjZW5kaWYKKworICAgIFNob3VsZEFja25vd2xlZGdlV2hlblJl
YWR5VG9TdXNwZW5kIG1fc2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBhMTM3NjgxYTI1ZGE3YTMxZTY1ZTk0OTY4MGZl
YTQ3OTMzYzFiZTlkLi42OTkzMzBmMDc1OTljNTE5YzMzZmZmNDZjYzc3Mzc3NzcyMjk0NjQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC0xMDAsNiArMTAwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgU2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFzSW1hZ2VTZXJ2aWNlcywgYm9vbCBo
YXNTZWxlY3Rpb25TZXJ2aWNlcywgYm9vbCBoYXNSaWNoQ29udGVudFNlcnZpY2VzKQogI2VuZGlm
CiAKKyAgICBQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkgLT4gKGJvb2wgaGFuZGxlZCkK
ICAgICBQcm9jZXNzV2lsbFN1c3BlbmQoKQogICAgIENhbmNlbFByb2Nlc3NXaWxsU3VzcGVuZCgp
CiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgpCg==
</data>
<flag name="review"
          id="277520"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>