<?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>135327</bug_id>
          
          <creation_ts>2014-07-26 23:29:18 -0700</creation_ts>
          <short_desc>Server trust authentication challenges aren’t sent to the navigation delegate</short_desc>
          <delta_ts>2015-01-08 15:53:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>115282</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>ap</cc>
    
    <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eugenebut</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1025050</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-07-26 23:29:18 -0700</bug_when>
    <thetext>Server trust authentication challenges are short-circuited and not passed through to -webView:didReceiveAuthenticationChallenge:completionHandler:.

This was done because the delegate would need to respond with an NSURLCredential that contains a trust, and WebCore::Credential can’t represent such credentials. This can be resolved by making Credential have an NSURLCredential (and removing the special case for identity credentials), similarly to how ProtectionSpace now has an NSURLProtectionSpace.

CredentialStorage may also require some changes to support server trust credentials (which have session persistence).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025087</commentid>
    <comment_count>1</comment_count>
      <attachid>235587</attachid>
    <who name="">mitz</who>
    <bug_when>2014-07-27 20:12:57 -0700</bug_when>
    <thetext>Created attachment 235587
I. Introduce CredentialBase and make Credential derive from it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025088</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-27 20:15:16 -0700</bug_when>
    <thetext>Attachment 235587 did not pass style-queue:


ERROR: Source/WebCore/platform/network/CredentialBase.h:89:  The parameter name &quot;a&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/network/CredentialBase.cpp:43:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/CredentialBase.cpp:157:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 3 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025102</commentid>
    <comment_count>3</comment_count>
      <attachid>235587</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-07-27 23:01:21 -0700</bug_when>
    <thetext>Comment on attachment 235587
I. Introduce CredentialBase and make Credential derive from it

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

r=me -- the comments I made are sort of “side notes”; not all necessarily relevant to this file refactoring

&gt; Source/WebCore/platform/network/CredentialBase.cpp:26
&gt;  #include &quot;config.h&quot;
&gt; +#include &quot;CredentialBase.h&quot;

Should add a blank line before the first include.

&gt; Source/WebCore/platform/network/CredentialBase.cpp:36
&gt;      : m_user(&quot;&quot;)
&gt;      , m_password(&quot;&quot;)

Should use the more efficient emptyString() some day if not now.

&gt; Source/WebCore/platform/network/CredentialBase.cpp:48
&gt;      : m_user(user.length() ? user : &quot;&quot;)
&gt;      , m_password(password.length() ? password : &quot;&quot;)

Should use the more efficient emptyString() some day if not now.

&gt; Source/WebCore/platform/network/CredentialBase.h:25
&gt; + */
&gt; +#ifndef Credential_h

Should add a blank line before the ifndef.

&gt; Source/WebCore/platform/network/CredentialBase.h:30
&gt; +#define CERTIFICATE_CREDENTIALS_SUPPORTED (PLATFORM(COCOA))

The name of this conditional is pretty strange. The feature in question involves interface that is done with platform-specific types, but yet this has a name that sounds like an abstract concept that would not be CoreFoundation-specific.

&gt; Source/WebCore/platform/network/CredentialBase.h:25
&gt;   */
&gt; -#ifndef Credential_h
&gt; -#define Credential_h
&gt; +#ifndef CredentialBase_h

Should add a blank line before the #ifndef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025383</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-07-28 21:23:01 -0700</bug_when>
    <thetext>Committed attachment 235587 as &lt;http://trac.webkit.org/r171722&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025388</commentid>
    <comment_count>5</comment_count>
      <attachid>235664</attachid>
    <who name="">mitz</who>
    <bug_when>2014-07-28 23:22:16 -0700</bug_when>
    <thetext>Created attachment 235664
II. Move the Cocoa-specific parts of CredentialBase into a Cocoa-specific Credential class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025389</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-28 23:23:13 -0700</bug_when>
    <thetext>Attachment 235664 did not pass style-queue:


ERROR: Source/WebCore/platform/network/CredentialBase.h:51:  The parameter name &quot;a&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/network/cocoa/CredentialCocoa.h:63:  The parameter name &quot;identity&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/network/cocoa/CredentialCocoa.h:63:  The parameter name &quot;persistence&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025390</commentid>
    <comment_count>7</comment_count>
      <attachid>235665</attachid>
    <who name="">mitz</who>
    <bug_when>2014-07-28 23:30:09 -0700</bug_when>
    <thetext>Created attachment 235665
II. Move the Cocoa-specific parts of CredentialBase into a Cocoa-specific Credential class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025418</commentid>
    <comment_count>8</comment_count>
      <attachid>235670</attachid>
    <who name="">mitz</who>
    <bug_when>2014-07-29 01:51:32 -0700</bug_when>
    <thetext>Created attachment 235670
II. Move the Cocoa-specific parts of CredentialBase into a Cocoa-specific Credential class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025420</commentid>
    <comment_count>9</comment_count>
      <attachid>235672</attachid>
    <who name="">mitz</who>
    <bug_when>2014-07-29 01:57:32 -0700</bug_when>
    <thetext>Created attachment 235672
II. Move the Cocoa-specific parts of CredentialBase into a Cocoa-specific Credential class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025495</commentid>
    <comment_count>10</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-07-29 09:40:36 -0700</bug_when>
    <thetext>Committed attachment 235672 as &lt;http://trac.webkit.org/r171747&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025586</commentid>
    <comment_count>11</comment_count>
      <attachid>235706</attachid>
    <who name="">mitz</who>
    <bug_when>2014-07-29 15:56:08 -0700</bug_when>
    <thetext>Created attachment 235706
WIP for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025588</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-29 15:56:53 -0700</bug_when>
    <thetext>Attachment 235706 did not pass style-queue:


ERROR: Source/WebCore/platform/network/cocoa/CredentialCocoa.mm:89:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:58:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/mac/AuthenticationMac.mm:156:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/mac/AuthenticationMac.mm:156:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/mac/AuthenticationMac.mm:202:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm:340:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm:340:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 8 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025605</commentid>
    <comment_count>13</comment_count>
      <attachid>235716</attachid>
    <who name="">mitz</who>
    <bug_when>2014-07-29 16:32:14 -0700</bug_when>
    <thetext>Created attachment 235716
III. Make Credential hold onto an NSURLCredential when needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025608</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-29 16:35:46 -0700</bug_when>
    <thetext>Attachment 235716 did not pass style-queue:


ERROR: Source/WebCore/platform/network/cocoa/CredentialCocoa.mm:91:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:58:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/mac/AuthenticationMac.mm:156:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/mac/AuthenticationMac.mm:156:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/mac/AuthenticationMac.mm:202:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm:340:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm:340:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 8 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025758</commentid>
    <comment_count>15</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-07-30 11:57:29 -0700</bug_when>
    <thetext>Committed attachment 235716 as &lt;http://trac.webkit.org/r171801&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025848</commentid>
    <comment_count>16</comment_count>
      <attachid>235788</attachid>
    <who name="">mitz</who>
    <bug_when>2014-07-30 18:09:21 -0700</bug_when>
    <thetext>Created attachment 235788
IV. Allow the delegate to respond to server trust challenges</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025849</commentid>
    <comment_count>17</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-07-30 18:10:34 -0700</bug_when>
    <thetext>Oops! I used a script that obsoleted all other parts and removed their review info. But parts I-III are in. Part IV is what remains.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025965</commentid>
    <comment_count>18</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-07-31 06:36:31 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Committed attachment 235716 [details] as &lt;http://trac.webkit.org/r171801&gt;.

Commit queue is stucked after this change with the following error:

/Volumes/Data/EWS/WebKit/Source/WebCore/platform/network/cocoa/CredentialCocoa.mm:55:13: error: enumeration value &apos;NSURLCredentialPersistenceSynchronizable&apos; not handled in switch [-Werror,-Wswitch]
    switch (persistence) {
            ^
1 error generated.


How is it possible if there isn&apos;t build failure on buildbots,
but only the EWS. Do they have different configuration? Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025972</commentid>
    <comment_count>19</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-07-31 07:15:45 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #15)
&gt; &gt; Committed attachment 235716 [details] [details] as &lt;http://trac.webkit.org/r171801&gt;.
&gt; 
&gt; Commit queue is stucked after this change with the following error:
&gt; 
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/network/cocoa/CredentialCocoa.mm:55:13: error: enumeration value &apos;NSURLCredentialPersistenceSynchronizable&apos; not handled in switch [-Werror,-Wswitch]
&gt;     switch (persistence) {
&gt;             ^
&gt; 1 error generated.
&gt; 
&gt; 
&gt; How is it possible if there isn&apos;t build failure on buildbots,
&gt; but only the EWS. Do they have different configuration? Why?

This error occurs when using the OS X 10.9 SDK to build for OS X 10.8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025973</commentid>
    <comment_count>20</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-07-31 07:16:56 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; This error occurs when using the OS X 10.9 SDK to build for OS X 10.8.

OK, and how can we fix the commit queue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025982</commentid>
    <comment_count>21</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-07-31 09:08:06 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; This error occurs when using the OS X 10.9 SDK to build for OS X 10.8.
&gt; 
&gt; OK, and how can we fix the commit queue?

I am hoping &lt;http://trac.webkit.org/r171854&gt; fixes this particular build configuration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025983</commentid>
    <comment_count>22</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-07-31 09:21:39 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; This error occurs when using the OS X 10.9 SDK to build for OS X 10.8.
&gt; &gt; 
&gt; &gt; OK, and how can we fix the commit queue?
&gt; 
&gt; I am hoping &lt;http://trac.webkit.org/r171854&gt; fixes this particular build configuration.

I had to revert that change, since it broke building with the OS X 10.8 SDK. I will try something else in a moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025989</commentid>
    <comment_count>23</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-07-31 09:42:36 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; &gt; This error occurs when using the OS X 10.9 SDK to build for OS X 10.8.
&gt; &gt; &gt; 
&gt; &gt; &gt; OK, and how can we fix the commit queue?
&gt; &gt; 
&gt; &gt; I am hoping &lt;http://trac.webkit.org/r171854&gt; fixes this particular build configuration.
&gt; 
&gt; I had to revert that change, since it broke building with the OS X 10.8 SDK. I will try something else in a moment.

Tried another fix in &lt;http://trac.webkit.org/r171857&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025990</commentid>
    <comment_count>24</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-07-31 09:43:47 -0700</bug_when>
    <thetext>Committed attachment 235788 as &lt;http://trac.webkit.org/r171858&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044584</commentid>
    <comment_count>25</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-10-28 12:51:49 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Committed attachment 235716 [details] as &lt;http://trac.webkit.org/r171801&gt;.

This broke client certificate authentication, because NSURLCredential doesn’t serialize identities properly. See bug 138144.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059924</commentid>
    <comment_count>26</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-01-08 13:00:13 -0800</bug_when>
    <thetext>*** Bug 140197 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059991</commentid>
    <comment_count>27</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-01-08 15:53:56 -0800</bug_when>
    <thetext>*** Bug 140197 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235587</attachid>
            <date>2014-07-27 20:12:57 -0700</date>
            <delta_ts>2014-07-30 18:09:07 -0700</delta_ts>
            <desc>I. Introduce CredentialBase and make Credential derive from it</desc>
            <filename>bug-135327-20140727201243.patch</filename>
            <type>text/plain</type>
            <size>36566</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MTY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE0LTA3LTI3ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlZCBDcmVkZW50aWFs
QmFzZSBhbmQgbWFkZSBDcmVkZW50aWFsIGRlcml2ZSBmcm9tIGl0CisgICAgICAgIFdvcmsgdG93
YXJkcyBmaXhpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTMy
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IFVwZGF0
ZWQgZm9yIHNvdXJjZSBmaWxlIHJlbmFtZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBD
aGFuZ2VkIHRvIGV4cG9ydCBDcmVkZW50aWFsQmFzZSBzeW1ib2xzLgorCisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajogVXBkYXRlZCBmb3Igc291cmNlIGZpbGUgcmVu
YW1lIGFuZCBuZXcgaGVhZGVyLgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVyczogRGl0dG8uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsLmNwcDogUmVuYW1lZCB0byBDcmVkZW50aWFsQmFzZS5jcHAuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaDogRGVmaW5lZCBDcmVkZW50aWFsIHRvIGRlcml2ZSBm
cm9tIENyZWRlbnRpYWxCYXNlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsQmFzZS5jcHA6IFJlbmFtZWQgQ3JlZGVudGlhbC5jcHAgdG8gdGhpcy4gVXBkYXRlZCBmb3Ig
dGhlIG5ldworICAgICAgICBuYW1lLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsQmFzZS5oOiBDb3BpZWQgZnJvbSBDcmVkZW50aWFsLmgsIHJlbmFtZWQgdGhlIGNsYXNz
IHRvCisgICAgICAgIENyZWRlbnRpYWxCYXNlLCBhbmQgbWFkZSB0aGUgY29uc3RydWN0b3JzIHBy
b3RlY3RlZC4KKwogMjAxNC0wNy0yNyAgQnJ1bm8gZGUgT2xpdmVpcmEgQWJpbmFkZXIgIDxicnVu
by5kQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgU3VwcG9ydCBmb3IgOmVuYWJsZWQg
c2VsZWN0b3Igb24gQW5jaG9yICYgQXJlYSBlbGVtZW50cwpJbmRleDogU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDE3MTY2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0yMjA4LDcgKzIyMDgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnlJbXBsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNl
SGFuZGxlLmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5jcHAKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvQ3Jl
ZGVudGlhbFN0b3JhZ2UuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUu
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMLmNwcApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4JKHJldmlzaW9uIDE3MTY2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw4ICs3MSw2IEBAIF9fWk4zV1RGNlN0cmluZ0MxRVBLMTBf
X0NGU3RyaW5nCiBfX1pON1dlYkNvcmUxMENsaWVudFJlY3RDMUVSS05TXzdJbnRSZWN0RQogX19a
TjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFUktOU185RmxvYXRSZWN0RQogX19aTjdXZWJDb3JlMTBD
bGllbnRSZWN0QzFFdgotX19aTjdXZWJDb3JlMTBDcmVkZW50aWFsQzFFUktOM1dURjZTdHJpbmdF
UzRfTlNfMjFDcmVkZW50aWFsUGVyc2lzdGVuY2VFCi1fX1pON1dlYkNvcmUxMENyZWRlbnRpYWxD
MUV2CiBfX1pON1dlYkNvcmUxMEZsb2F0UG9pbnRDMUVSSzdDR1BvaW50CiBfX1pON1dlYkNvcmUx
MEZsb2F0UG9pbnRDMUVSS05TXzhJbnRQb2ludEUKIF9fWk43V2ViQ29yZTEwRm9udEdseXBoczE1
cmVsZWFzZUZvbnREYXRhRXYKQEAgLTMzNiw2ICszMzQsOSBAQCBfX1pON1dlYkNvcmUxNENhY2hl
ZFJlc291cmNlOWFkZENsaWVudEVQCiBfX1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFUktO
M1dURjZWZWN0b3JJTlNfOUZsb2F0UXVhZEVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBf
X1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFdgogX19aTjdXZWJDb3JlMTRDbGllbnRSZWN0
TGlzdEQxRXYKK19fWk43V2ViQ29yZTE0Q3JlZGVudGlhbEJhc2VDMkVQMjBPcGFxdWVTZWNJZGVu
dGl0eVJlZlBLOV9fQ0ZBcnJheU5TXzIxQ3JlZGVudGlhbFBlcnNpc3RlbmNlRQorX19aTjdXZWJD
b3JlMTRDcmVkZW50aWFsQmFzZUMyRVJLTjNXVEY2U3RyaW5nRVM0X05TXzIxQ3JlZGVudGlhbFBl
cnNpc3RlbmNlRQorX19aTjdXZWJDb3JlMTRDcmVkZW50aWFsQmFzZUMyRXYKIF9fWk43V2ViQ29y
ZTE0RG9jdW1lbnRMb2FkZXIxMGNvbW1pdERhdGFFUEtjbQogX19aTjdXZWJDb3JlMTREb2N1bWVu
dExvYWRlcjEyZGF0YVJlY2VpdmVkRVBOU18xNENhY2hlZFJlc291cmNlRVBLY2kKIF9fWk43V2Vi
Q29yZTE0RG9jdW1lbnRMb2FkZXIxM2F0dGFjaFRvRnJhbWVFdgpAQCAtMTUzNCwxNCArMTUzNSw2
IEBAIF9fWk43V2ViQ29yZTl0b0VsZW1lbnRFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTl1
bmlvblJlY3RFUktOM1dURjZWZWN0b3JJTlNfOUZsb2F0UmVjdEVMbTBFTlMwXzE1Q3Jhc2hPbk92
ZXJmbG93RUVFCiBfX1pOSzNKU0M4QmluZGluZ3MxMFJvb3RPYmplY3QxMmdsb2JhbE9iamVjdEV2
CiBfX1pOSzNXVEY2U3RyaW5nMTRjcmVhdGVDRlN0cmluZ0V2Ci1fX1pOSzdXZWJDb3JlMTBDcmVk
ZW50aWFsMTFoYXNQYXNzd29yZEV2Ci1fX1pOSzdXZWJDb3JlMTBDcmVkZW50aWFsMTFwZXJzaXN0
ZW5jZUV2Ci1fX1pOSzdXZWJDb3JlMTBDcmVkZW50aWFsMTJjZXJ0aWZpY2F0ZXNFdgotX19aTks3
V2ViQ29yZTEwQ3JlZGVudGlhbDR0eXBlRXYKLV9fWk5LN1dlYkNvcmUxMENyZWRlbnRpYWw0dXNl
ckV2Ci1fX1pOSzdXZWJDb3JlMTBDcmVkZW50aWFsN2lzRW1wdHlFdgotX19aTks3V2ViQ29yZTEw
Q3JlZGVudGlhbDhpZGVudGl0eUV2Ci1fX1pOSzdXZWJDb3JlMTBDcmVkZW50aWFsOHBhc3N3b3Jk
RXYKIF9fWk5LN1dlYkNvcmUxMEZsb2F0UG9pbnRjdjdDR1BvaW50RXYKIF9fWk5LN1dlYkNvcmUx
MEZvbnRHbHlwaHMxN3JlYWxpemVGb250RGF0YUF0RVJLTlNfMTVGb250RGVzY3JpcHRpb25Fagog
X19aTks3V2ViQ29yZTEwTGF5b3V0UmVjdDhjb250YWluc0VSS1MwXwpAQCAtMTY1OSw2ICsxNjUy
LDE0IEBAIF9fWk5LN1dlYkNvcmUxM0ltYWdlRG9jdW1lbnQxMmltYWdlRWxlbWUKIF9fWk5LN1dl
YkNvcmUxM1Jlc291cmNlRXJyb3I3Y2ZFcnJvckV2CiBfX1pOSzdXZWJDb3JlMTNSZXNvdXJjZUVy
cm9yN25zRXJyb3JFdgogX19aTks3V2ViQ29yZTEzUmVzb3VyY2VFcnJvcmN2UDdOU0Vycm9yRXYK
K19fWk5LN1dlYkNvcmUxNENyZWRlbnRpYWxCYXNlMTFoYXNQYXNzd29yZEV2CitfX1pOSzdXZWJD
b3JlMTRDcmVkZW50aWFsQmFzZTExcGVyc2lzdGVuY2VFdgorX19aTks3V2ViQ29yZTE0Q3JlZGVu
dGlhbEJhc2UxMmNlcnRpZmljYXRlc0V2CitfX1pOSzdXZWJDb3JlMTRDcmVkZW50aWFsQmFzZTR0
eXBlRXYKK19fWk5LN1dlYkNvcmUxNENyZWRlbnRpYWxCYXNlNHVzZXJFdgorX19aTks3V2ViQ29y
ZTE0Q3JlZGVudGlhbEJhc2U3aXNFbXB0eUV2CitfX1pOSzdXZWJDb3JlMTRDcmVkZW50aWFsQmFz
ZThpZGVudGl0eUV2CitfX1pOSzdXZWJDb3JlMTRDcmVkZW50aWFsQmFzZThwYXNzd29yZEV2CiBf
X1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjEwcmVxdWVzdFVSTEV2CiBfX1pOSzdXZWJDb3Jl
MTREb2N1bWVudExvYWRlcjExZnJhbWVMb2FkZXJFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRM
b2FkZXIxMXJlc3BvbnNlVVJMRXYKQEAgLTIyMTksNyArMjIyMCw2IEBAIF9fWk43V2ViQ29yZTM2
aW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0kKIC5vYmpjX2NsYXNzX25hbWVfV2ViRm9udENhY2hl
CiAub2JqY19jbGFzc19uYW1lX1dlYldpbmRvd0ZhZGVBbmltYXRpb24KIC5vYmpjX2NsYXNzX25h
bWVfV2ViV2luZG93U2NhbGVBbmltYXRpb24KLV9fWk43V2ViQ29yZTEwQ3JlZGVudGlhbEMxRVAy
ME9wYXF1ZVNlY0lkZW50aXR5UmVmUEs5X19DRkFycmF5TlNfMjFDcmVkZW50aWFsUGVyc2lzdGVu
Y2VFCiBfX1pON1dlYkNvcmUxMEZsb2F0UG9pbnRDMUVSSzhfTlNQb2ludAogX19aTjdXZWJDb3Jl
MTBoYW5kQ3Vyc29yRXYKIF9fWk43V2ViQ29yZTExQ2FjaGVkSW1hZ2U1aW1hZ2VFdgpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZp
c2lvbiAxNzE2NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04NTMyLDcgKzg1MzIsNyBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xCbG9iUmVzb3VyY2VIYW5kbGUuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xCbG9iUmVnaXN0
cnkuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xC
bG9iUmVnaXN0cnlJbXBsLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXG5ldHdvcmtcQ3JlZGVudGlhbC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXENyZWRlbnRpYWxCYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcQ3JlZGVudGlhbFN0b3JhZ2UuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xEYXRhVVJMLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcRE5TUmVzb2x2
ZVF1ZXVlLmNwcCIgLz4KQEAgLTE5NzY0LDYgKzE5NzY0LDcgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcQmxvYlJlc291cmNlSGFuZGxlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXENvb2tpZVN0b3JhZ2UuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcQ3JlZGVudGlh
bC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xDcmVk
ZW50aWFsQmFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0
d29ya1xDcmVkZW50aWFsU3RvcmFnZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cbmV0d29ya1xEYXRhVVJMLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXEROU1Jlc29sdmVRdWV1ZS5oIiAvPgpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cwkocmV2aXNpb24gMTcxNjY1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0xNzkxLDcgKzE3OTEsNyBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xCbG9iUmVzb3Vy
Y2VIYW5kbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29yazwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0
d29ya1xDcmVkZW50aWFsLmNwcCI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxuZXR3b3JrXENyZWRlbnRpYWxCYXNlLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5l
dHdvcms8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXG5ldHdvcmtcQ3JlZGVudGlhbFN0b3JhZ2UuY3BwIj4KQEAgLTg4MDgsNiAr
ODgwOCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXENy
ZWRlbnRpYWwuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcms8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdv
cmtcQ3JlZGVudGlhbEJhc2UuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcms8L0Zp
bHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXG5ldHdvcmtcQ3JlZGVudGlhbFN0b3JhZ2UuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3Jt
XG5ldHdvcms8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3MTY2
NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTMxMyw2ICsxMzEzLDcgQEAKIAkJMzc4NEMzNEIwRTExQUEzNDAw
N0Q4RDQ4IC8qIEZvbnRUcmFpdHNNYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzNzg0QzM0QTBFMTFBQTM0MDA3RDhENDggLyogRm9udFRyYWl0c01h
c2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkz
NzkxOUMyMzBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkxOUMyMTBCN0QxODg2MDBB
NTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgKi87IH07CiAJCTM3OTE5QzI0MEI3RDE4ODYw
MEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25J
dGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTM3OTI5
MTdBMTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8q
IENyZWRlbnRpYWxCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMzc5OTE5OTYxMjAwRERGNDAwRUEwNDFDIC8qIFdPRkZGaWxlRm9ybWF0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTkxOTk0
MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5jcHAgKi87IH07CiAJCTM3OTkxOTk3
MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5OTE5OTUxMjAwRERGNDAwRUEwNDFDIC8qIFdP
RkZGaWxlRm9ybWF0LmggKi87IH07CiAJCTM3OTkxOUIyMTIwMERFNTAwMEVBMDQxQyAvKiBsaWJ6
LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mzc5OTE5QjExMjAwREU1MDAwRUEwNDFDIC8qIGxpYnouZHlsaWIgKi87IH07CkBAIC0xODU4LDcg
KzE4NTksNyBAQAogCQk1MTRDNzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRD
NzY0NzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0gKi87IH07CiAJCTUx
NEM3NjUzMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0OTBDRTkyMzRFMDA3
RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovOyB9OwogCQk1MTRDNzY1NTBDRTkyMzRG
MDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNwb25zZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjRCMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNv
dXJjZVJlc3BvbnNlTWFjLm1tICovOyB9OwotCQk1MTRDNzY2RDBDRTkyM0ExMDA3RUYzQ0QgLyog
Q3JlZGVudGlhbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTRDNzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5jcHAgKi87IH07CisJ
CTUxNEM3NjZEMENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsQmFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY1ODBDRTkyM0ExMDA3
RUYzQ0QgLyogQ3JlZGVudGlhbEJhc2UuY3BwICovOyB9OwogCQk1MTRDNzY2RTBDRTkyM0ExMDA3
RUYzQ0QgLyogQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE0Qzc2NTkwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzY2RjBD
RTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NUEwQ0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRh
LmNwcCAqLzsgfTsKIAkJNTE0Qzc2NzAwQ0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY1QjBDRTky
M0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtODMzNSw2ICs4MzM2LDcgQEAKIAkJMzc4NEMzNEEwRTExQUEz
NDAwN0Q4RDQ4IC8qIEZvbnRUcmFpdHNNYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZvbnRUcmFpdHNNYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3
OTE5QzIxMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MTlDMjIwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0
aW9uSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9u
SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc5MjkxNzgxOTg1RUYz
OTAwRjRCNjYxIC8qIENyZWRlbnRpYWxCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENyZWRlbnRpYWxCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3
OTkxOTk0MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXT0ZGRmlsZUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTM3OTkxOTk1MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZv
cm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXT0ZGRmlsZUZvcm1hdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzk5MTlCMTEyMDBERTUwMDBFQTA0MUMg
LyogbGliei5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGliei5keWxpYjsgcGF0aCA9
IC91c3IvbGliL2xpYnouZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CkBAIC04
OTQzLDcgKzg5NDUsNyBAQAogCQk1MTRDNzY0NzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VI
YW5kbGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNv
dXJjZUhhbmRsZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NDkw
Q0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdE1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NEIwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNl
UmVzcG9uc2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBS
ZXNvdXJjZVJlc3BvbnNlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTRD
NzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDcmVkZW50aWFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTE0Qzc2NTgwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWxCYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyZWRlbnRpYWxCYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NTkwQ0U5MjNBMTAwN0VGM0NEIC8q
IENyZWRlbnRpYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVudGlh
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1QTBDRTkyM0ExMDA3RUYz
Q0QgLyogRm9ybURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Rm9ybURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1QjBDRTky
M0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRm9ybURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MzI0LDggKzE2
MzI2LDkgQEAKIAkJCQkyRUI0QkNEMDEyMUYwM0UzMDBFQzQ4ODUgLyogQmxvYlJlc291cmNlSGFu
ZGxlLmNwcCAqLywKIAkJCQkyRUI0QkNEMTEyMUYwM0UzMDBFQzQ4ODUgLyogQmxvYlJlc291cmNl
SGFuZGxlLmggKi8sCiAJCQkJRTEzRjAxRUExMjcwRTEwRDAwREZCQTcxIC8qIENvb2tpZVN0b3Jh
Z2UuaCAqLywKLQkJCQk1MTRDNzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5jcHAg
Ki8sCiAJCQkJNTE0Qzc2NTkwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLywKKwkJ
CQk1MTRDNzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbEJhc2UuY3BwICovLAorCQkJ
CTM3OTI5MTc4MTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oICovLAogCQkJCTUx
QTA1MjMyMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5jcHAgKi8sCiAJCQkJ
NTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJCQkJ
QjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLApAQCAtMjQxNTMsNiArMjQxNTYs
NyBAQAogCQkJCUE3QjZFNjlGMEIyOTFBOTYwMEQwNTI5RiAvKiBEcmFnRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdDRkIzRDIwQjdFRDEwQTAwNzBDMzJEIC8qIERyYWdJbWFnZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODFGNjVGRjYxMzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMzc5MjkxN0ExOTg1RUYzOTAwRjRCNjYxIC8qIENyZWRlbnRpYWxC
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTg3NzBEQzEyNDJDNTM1MDAyMjI2QkEgLyogRHJh
d2luZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCQTY2RjExNzQyQkQ4NjAwQzIwMjUx
IC8qIER5bmFtaWNMaW5rZXJJbnRlcnBvc2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ2RUQy
QzgxMzZCOEU2NjAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJlc3Nvci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNzI3NCw3ICsyNzI3OCw3IEBACiAJCQkJQkM1RUI5NTAwRTgyMDU2QjAwQjI1OTY1IC8q
IENvdW50ZXJEaXJlY3RpdmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzOTJGMTUwMEFEMTg2
MjMwMDY5MUJENCAvKiBDb3VudGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMEIwNTU2
OTA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNTE0Qzc2NkQwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTE0Qzc2NkQwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWxCYXNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTA1MjM0MTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50
aWFsU3RvcmFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2NTEyRDI2RTM4MDBFNzk0
MTUgLyogQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUI0
Q0QyNTEwQjMyMkUyMDBCRkZEN0UgLyogQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0gaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsLmNwcAkocmV2aXNpb24gMTcxNjY1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9DcmVkZW50aWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNjIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJDcmVkZW50aWFsLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Ly8gTmVlZCB0byBlbmZvcmNlIGVtcHR5LCBub24tbnVsbCBzdHJpbmdzIGR1ZSB0byB0aGUgcGlj
a2luZXNzIG9mIHRoZSBTdHJpbmcgPT0gU3RyaW5nIG9wZXJhdG9yCi0vLyBjb21iaW5lZCB3aXRo
IHRoZSBzZW1hbnRpY3Mgb2YgdGhlIFN0cmluZyhOU1N0cmluZyopIGNvbnN0cnVjdG9yCi1DcmVk
ZW50aWFsOjpDcmVkZW50aWFsKCkKLSAgICA6IG1fdXNlcigiIikKLSAgICAsIG1fcGFzc3dvcmQo
IiIpCi0gICAgLCBtX3BlcnNpc3RlbmNlKENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpCi0jaWYg
Q0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECi0gICAgLCBtX3R5cGUoQ3JlZGVudGlh
bFR5cGVQYXNzd29yZCkKLSNlbmRpZiAgICAKLXsKLX0KLSAgIAotLy8gTmVlZCB0byBlbmZvcmNl
IGVtcHR5LCBub24tbnVsbCBzdHJpbmdzIGR1ZSB0byB0aGUgcGlja2luZXNzIG9mIHRoZSBTdHJp
bmcgPT0gU3RyaW5nIG9wZXJhdG9yCi0vLyBjb21iaW5lZCB3aXRoIHRoZSBzZW1hbnRpY3Mgb2Yg
dGhlIFN0cmluZyhOU1N0cmluZyopIGNvbnN0cnVjdG9yCi1DcmVkZW50aWFsOjpDcmVkZW50aWFs
KGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgQ3JlZGVudGlhbFBl
cnNpc3RlbmNlIHBlcnNpc3RlbmNlKQotICAgIDogbV91c2VyKHVzZXIubGVuZ3RoKCkgPyB1c2Vy
IDogIiIpCi0gICAgLCBtX3Bhc3N3b3JkKHBhc3N3b3JkLmxlbmd0aCgpID8gcGFzc3dvcmQgOiAi
IikKLSAgICAsIG1fcGVyc2lzdGVuY2UocGVyc2lzdGVuY2UpCi0jaWYgQ0VSVElGSUNBVEVfQ1JF
REVOVElBTFNfU1VQUE9SVEVECi0gICAgLCBtX3R5cGUoQ3JlZGVudGlhbFR5cGVQYXNzd29yZCkK
LSNlbmRpZgotewotfQotICAgIAotQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChjb25zdCBDcmVkZW50
aWFsJiBvcmlnaW5hbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQotICAgIDog
bV91c2VyKG9yaWdpbmFsLnVzZXIoKSkKLSAgICAsIG1fcGFzc3dvcmQob3JpZ2luYWwucGFzc3dv
cmQoKSkKLSAgICAsIG1fcGVyc2lzdGVuY2UocGVyc2lzdGVuY2UpCi0jaWYgQ0VSVElGSUNBVEVf
Q1JFREVOVElBTFNfU1VQUE9SVEVECi0gICAgLCBtX2lkZW50aXR5KG9yaWdpbmFsLmlkZW50aXR5
KCkpCi0gICAgLCBtX2NlcnRpZmljYXRlcyhvcmlnaW5hbC5jZXJ0aWZpY2F0ZXMoKSkKLSAgICAs
IG1fdHlwZShvcmlnaW5hbC50eXBlKCkpCi0jZW5kaWYKLXsKLX0KLQotYm9vbCBDcmVkZW50aWFs
Ojppc0VtcHR5KCkgY29uc3QKLXsKLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JU
RUQKLSAgICBpZiAobV90eXBlID09IENyZWRlbnRpYWxUeXBlQ2xpZW50Q2VydGlmaWNhdGUgJiYg
KG1faWRlbnRpdHkgfHwgbV9jZXJ0aWZpY2F0ZXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0j
ZW5kaWYKLSAgICAKLSAgICByZXR1cm4gbV91c2VyLmlzRW1wdHkoKSAmJiBtX3Bhc3N3b3JkLmlz
RW1wdHkoKTsKLX0KLSAgICAKLWNvbnN0IFN0cmluZyYgQ3JlZGVudGlhbDo6dXNlcigpIGNvbnN0
Ci17IAotICAgIHJldHVybiBtX3VzZXI7IAotfQotCi1jb25zdCBTdHJpbmcmIENyZWRlbnRpYWw6
OnBhc3N3b3JkKCkgY29uc3QgCi17IAotICAgIHJldHVybiBtX3Bhc3N3b3JkOyAKLX0KLQotYm9v
bCBDcmVkZW50aWFsOjpoYXNQYXNzd29yZCgpIGNvbnN0IAoteyAKLSAgICByZXR1cm4gIW1fcGFz
c3dvcmQuaXNFbXB0eSgpOyAKLX0KLQotQ3JlZGVudGlhbFBlcnNpc3RlbmNlIENyZWRlbnRpYWw6
OnBlcnNpc3RlbmNlKCkgY29uc3QgCi17IAotICAgIHJldHVybiBtX3BlcnNpc3RlbmNlOyAKLX0K
LSAgICAKLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKLUNyZWRlbnRpYWw6
OkNyZWRlbnRpYWwoU2VjSWRlbnRpdHlSZWYgaWRlbnRpdHksIENGQXJyYXlSZWYgY2VydGlmaWNh
dGVzLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2UpCi0gICAgOiBtX3VzZXIoIiIp
Ci0gICAgLCBtX3Bhc3N3b3JkKCIiKQotICAgICwgbV9wZXJzaXN0ZW5jZShwZXJzaXN0ZW5jZSkK
LSAgICAsIG1faWRlbnRpdHkoaWRlbnRpdHkpCi0gICAgLCBtX2NlcnRpZmljYXRlcyhjZXJ0aWZp
Y2F0ZXMpCi0gICAgLCBtX3R5cGUoQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSkKLXsK
LX0KLSAgICAKLVNlY0lkZW50aXR5UmVmIENyZWRlbnRpYWw6OmlkZW50aXR5KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9pZGVudGl0eS5nZXQoKTsKLX0KLSAgICAKLUNGQXJyYXlSZWYgQ3JlZGVu
dGlhbDo6Y2VydGlmaWNhdGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jZXJ0aWZpY2F0ZXMu
Z2V0KCk7Ci19Ci0gICAgCi1DcmVkZW50aWFsVHlwZSBDcmVkZW50aWFsOjp0eXBlKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV90eXBlOwotfQotI2VuZGlmCi0KLWJvb2wgb3BlcmF0b3I9PShjb25z
dCBDcmVkZW50aWFsJiBhLCBjb25zdCBDcmVkZW50aWFsJiBiKQotewotICAgIC8vIENoZWNrIHBl
cnNpc3RlbmNlIGZpcnN0IHNpbmNlIGFsbCBjcmVkZW50aWFsIHR5cGVzCi0gICAgLy8gaGF2ZSB0
aGUgcGVyc2lzdGVuY2UgcHJvcGVydHkuCi0gICAgaWYgKGEucGVyc2lzdGVuY2UoKSAhPSBiLnBl
cnNpc3RlbmNlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSNpZiBDRVJUSUZJQ0FU
RV9DUkVERU5USUFMU19TVVBQT1JURUQKLSAgICBDcmVkZW50aWFsVHlwZSBhVHlwZSA9IGEudHlw
ZSgpOwotICAgIGlmIChhVHlwZSAhPSBiLnR5cGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIAotICAgIC8vIENvbXBhcmluZyBpZGVudGl0eSBhbmQgY2VydGlmaWNhdGUgY2hhaW4gcG9p
bnRlcnMgaXMgdmFsaWQgb25seQotICAgIC8vIGZvciBjbGllbnQgY2VydGlmaWNhdGUgdHlwZSBj
cmVkZW50aWFscy4KLSAgICAvLwotICAgIC8vIEZJWE1FOiBJcyBwb2ludGVyIGNvbXBhcmlzb24g
b2YgdGhlIGlkZW50aXR5IGFuZCBjZXJ0aWZpY2F0ZXMgcHJvcGVydGllcyBzdWZmaWNpZW50Pwot
ICAgIGlmIChhVHlwZSA9PSBDcmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlKSB7Ci0gICAg
ICAgIGlmIChhLmlkZW50aXR5KCkgIT0gYi5pZGVudGl0eSgpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBpZiAoYS5jZXJ0aWZpY2F0ZXMoKSAhPSBiLmNlcnRpZmljYXRlcygp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgLy8gV2Ugb25s
eSBuZWVkIHRvIGNoZWNrIGlkZW50aXR5IGFuZCBjZXJ0aWZpY2F0ZXMgdG8gY29tcGFyZQotICAg
ICAgICAvLyBjbGllbnQgY2VydGlmaWNhdGUgYmFzZWQgY3JlZGVudGlhbHMuCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlQoYS50eXBlKCkgPT0gQ3JlZGVudGlh
bFR5cGVQYXNzd29yZCAmJiBiLnR5cGUoKSA9PSBDcmVkZW50aWFsVHlwZVBhc3N3b3JkKTsKLSNl
bmRpZiAgICAKLSAgICAKLSAgICBpZiAoYS51c2VyKCkgIT0gYi51c2VyKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoYS5wYXNzd29yZCgpICE9IGIucGFzc3dvcmQoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfQotCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaAkocmV2
aXNpb24gMTcxNjY1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDY5ICsyMiwzOSBAQAogICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKICAqLworCiAjaWZuZGVmIENyZWRlbnRpYWxfaAogI2RlZmluZSBD
cmVkZW50aWFsX2gKIAotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0jZGVmaW5l
IENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRCAoUExBVEZPUk0oQ09DT0EpKQotCi0j
aWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECi0jaW5jbHVkZSA8U2VjdXJpdHkv
U2VjQmFzZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgorI2luY2x1ZGUg
IkNyZWRlbnRpYWxCYXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBDcmVkZW50
aWFsUGVyc2lzdGVuY2UgewotICAgIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUsCi0gICAgQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbiwKLSAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2VQ
ZXJtYW5lbnQKLX07Ci0KLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKLWVu
dW0gQ3JlZGVudGlhbFR5cGUgewotICAgIENyZWRlbnRpYWxUeXBlUGFzc3dvcmQsCi0gICAgQ3Jl
ZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZQotfTsKLSNlbmRpZgotCi1jbGFzcyBDcmVkZW50
aWFsIHsKLQorY2xhc3MgQ3JlZGVudGlhbCA6IHB1YmxpYyBDcmVkZW50aWFsQmFzZSB7CiBwdWJs
aWM6Ci0gICAgQ3JlZGVudGlhbCgpOwotICAgIENyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiB1c2Vy
LCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwotICAgIENy
ZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYgb3JpZ2luYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5j
ZSk7Ci0jaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECi0gICAgQ3JlZGVudGlh
bChTZWNJZGVudGl0eVJlZiBpZGVudGl0eSwgQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZXMsIENyZWRl
bnRpYWxQZXJzaXN0ZW5jZSk7Ci0jZW5kaWYKLSAgICAKLSAgICBib29sIGlzRW1wdHkoKSBjb25z
dDsKLSAgICAKLSAgICBjb25zdCBTdHJpbmcmIHVzZXIoKSBjb25zdDsKLSAgICBjb25zdCBTdHJp
bmcmIHBhc3N3b3JkKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0OwotICAg
IENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSgpIGNvbnN0OwotICAgIAotI2lmIENF
UlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAotICAgIFNlY0lkZW50aXR5UmVmIGlkZW50
aXR5KCkgY29uc3Q7Ci0gICAgQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZXMoKSBjb25zdDsKLSAgICBD
cmVkZW50aWFsVHlwZSB0eXBlKCkgY29uc3Q7Ci0jZW5kaWYgICAgCi0gICAgCi1wcml2YXRlOgot
ICAgIFN0cmluZyBtX3VzZXI7Ci0gICAgU3RyaW5nIG1fcGFzc3dvcmQ7Ci0gICAgQ3JlZGVudGlh
bFBlcnNpc3RlbmNlIG1fcGVyc2lzdGVuY2U7CisgICAgQ3JlZGVudGlhbCgpCisgICAgICAgIDog
Q3JlZGVudGlhbEJhc2UoKQorICAgIHsKKyAgICB9CisKKyAgICBDcmVkZW50aWFsKGNvbnN0IFN0
cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNl
IHBlcnNpc3RlbmNlKQorICAgICAgICA6IENyZWRlbnRpYWxCYXNlKHVzZXIsIHBhc3N3b3JkLCBw
ZXJzaXN0ZW5jZSkKKyAgICB7CisgICAgfQorCisgICAgQ3JlZGVudGlhbChjb25zdCBDcmVkZW50
aWFsJiBvcmlnaW5hbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQorICAgICAg
ICA6IENyZWRlbnRpYWxCYXNlKG9yaWdpbmFsLCBwZXJzaXN0ZW5jZSkKKyAgICB7CisgICAgfQor
CiAjaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECi0gICAgUmV0YWluUHRyPFNl
Y0lkZW50aXR5UmVmPiBtX2lkZW50aXR5OwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBtX2Nl
cnRpZmljYXRlczsKLSAgICBDcmVkZW50aWFsVHlwZSBtX3R5cGU7CisgICAgQ3JlZGVudGlhbChT
ZWNJZGVudGl0eVJlZiBpZGVudGl0eSwgQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZXMsIENyZWRlbnRp
YWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSkKKyAgICAgICAgOiBDcmVkZW50aWFsQmFzZShpZGVu
dGl0eSwgY2VydGlmaWNhdGVzLCBwZXJzaXN0ZW5jZSkKKyAgICB7CisgICAgfQogI2VuZGlmCiB9
OwogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQ3JlZGVudGlhbCYgYSwgY29uc3QgQ3JlZGVudGlh
bCYgYik7Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENyZWRlbnRpYWwmIGEsIGNvbnN0
IENyZWRlbnRpYWwmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQotICAgIAotfTsKLSNlbmRpZgor
fQorCisjZW5kaWYgLy8gQ3JlZGVudGlhbF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAkocmV2aXNpb24gMTcxNjY1KQko
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuY3BwOjE3MTY2
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNy
ZWRlbnRpYWwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBOZWVkIHRvIGVuZm9yY2Ug
ZW1wdHksIG5vbi1udWxsIHN0cmluZ3MgZHVlIHRvIHRoZSBwaWNraW5lc3Mgb2YgdGhlIFN0cmlu
ZyA9PSBTdHJpbmcgb3BlcmF0b3IKKy8vIGNvbWJpbmVkIHdpdGggdGhlIHNlbWFudGljcyBvZiB0
aGUgU3RyaW5nKE5TU3RyaW5nKikgY29uc3RydWN0b3IKK0NyZWRlbnRpYWw6OkNyZWRlbnRpYWwo
KQorICAgIDogbV91c2VyKCIiKQorICAgICwgbV9wYXNzd29yZCgiIikKKyAgICAsIG1fcGVyc2lz
dGVuY2UoQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkKKyNpZiBDRVJUSUZJQ0FURV9DUkVERU5U
SUFMU19TVVBQT1JURUQKKyAgICAsIG1fdHlwZShDcmVkZW50aWFsVHlwZVBhc3N3b3JkKQorI2Vu
ZGlmICAgIAoreworfQorICAgCisvLyBOZWVkIHRvIGVuZm9yY2UgZW1wdHksIG5vbi1udWxsIHN0
cmluZ3MgZHVlIHRvIHRoZSBwaWNraW5lc3Mgb2YgdGhlIFN0cmluZyA9PSBTdHJpbmcgb3BlcmF0
b3IKKy8vIGNvbWJpbmVkIHdpdGggdGhlIHNlbWFudGljcyBvZiB0aGUgU3RyaW5nKE5TU3RyaW5n
KikgY29uc3RydWN0b3IKK0NyZWRlbnRpYWw6OkNyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiB1c2Vy
LCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVu
Y2UpCisgICAgOiBtX3VzZXIodXNlci5sZW5ndGgoKSA/IHVzZXIgOiAiIikKKyAgICAsIG1fcGFz
c3dvcmQocGFzc3dvcmQubGVuZ3RoKCkgPyBwYXNzd29yZCA6ICIiKQorICAgICwgbV9wZXJzaXN0
ZW5jZShwZXJzaXN0ZW5jZSkKKyNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQK
KyAgICAsIG1fdHlwZShDcmVkZW50aWFsVHlwZVBhc3N3b3JkKQorI2VuZGlmCit7Cit9CisgICAg
CitDcmVkZW50aWFsOjpDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmIG9yaWdpbmFsLCBDcmVk
ZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2UpCisgICAgOiBtX3VzZXIob3JpZ2luYWwudXNl
cigpKQorICAgICwgbV9wYXNzd29yZChvcmlnaW5hbC5wYXNzd29yZCgpKQorICAgICwgbV9wZXJz
aXN0ZW5jZShwZXJzaXN0ZW5jZSkKKyNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JU
RUQKKyAgICAsIG1faWRlbnRpdHkob3JpZ2luYWwuaWRlbnRpdHkoKSkKKyAgICAsIG1fY2VydGlm
aWNhdGVzKG9yaWdpbmFsLmNlcnRpZmljYXRlcygpKQorICAgICwgbV90eXBlKG9yaWdpbmFsLnR5
cGUoKSkKKyNlbmRpZgoreworfQorCitib29sIENyZWRlbnRpYWw6OmlzRW1wdHkoKSBjb25zdAor
eworI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAorICAgIGlmIChtX3R5cGUg
PT0gQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSAmJiAobV9pZGVudGl0eSB8fCBtX2Nl
cnRpZmljYXRlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIAorICAgIHJl
dHVybiBtX3VzZXIuaXNFbXB0eSgpICYmIG1fcGFzc3dvcmQuaXNFbXB0eSgpOworfQorICAgIAor
Y29uc3QgU3RyaW5nJiBDcmVkZW50aWFsOjp1c2VyKCkgY29uc3QKK3sgCisgICAgcmV0dXJuIG1f
dXNlcjsgCit9CisKK2NvbnN0IFN0cmluZyYgQ3JlZGVudGlhbDo6cGFzc3dvcmQoKSBjb25zdCAK
K3sgCisgICAgcmV0dXJuIG1fcGFzc3dvcmQ7IAorfQorCitib29sIENyZWRlbnRpYWw6Omhhc1Bh
c3N3b3JkKCkgY29uc3QgCit7IAorICAgIHJldHVybiAhbV9wYXNzd29yZC5pc0VtcHR5KCk7IAor
fQorCitDcmVkZW50aWFsUGVyc2lzdGVuY2UgQ3JlZGVudGlhbDo6cGVyc2lzdGVuY2UoKSBjb25z
dCAKK3sgCisgICAgcmV0dXJuIG1fcGVyc2lzdGVuY2U7IAorfQorICAgIAorI2lmIENFUlRJRklD
QVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAorQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChTZWNJZGVu
dGl0eVJlZiBpZGVudGl0eSwgQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZXMsIENyZWRlbnRpYWxQZXJz
aXN0ZW5jZSBwZXJzaXN0ZW5jZSkKKyAgICA6IG1fdXNlcigiIikKKyAgICAsIG1fcGFzc3dvcmQo
IiIpCisgICAgLCBtX3BlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKQorICAgICwgbV9pZGVudGl0eShp
ZGVudGl0eSkKKyAgICAsIG1fY2VydGlmaWNhdGVzKGNlcnRpZmljYXRlcykKKyAgICAsIG1fdHlw
ZShDcmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlKQoreworfQorICAgIAorU2VjSWRlbnRp
dHlSZWYgQ3JlZGVudGlhbDo6aWRlbnRpdHkoKSBjb25zdAoreworICAgIHJldHVybiBtX2lkZW50
aXR5LmdldCgpOworfQorICAgIAorQ0ZBcnJheVJlZiBDcmVkZW50aWFsOjpjZXJ0aWZpY2F0ZXMo
KSBjb25zdAoreworICAgIHJldHVybiBtX2NlcnRpZmljYXRlcy5nZXQoKTsKK30KKyAgICAKK0Ny
ZWRlbnRpYWxUeXBlIENyZWRlbnRpYWw6OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5
cGU7Cit9CisjZW5kaWYKKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IENyZWRlbnRpYWwmIGEsIGNv
bnN0IENyZWRlbnRpYWwmIGIpCit7CisgICAgLy8gQ2hlY2sgcGVyc2lzdGVuY2UgZmlyc3Qgc2lu
Y2UgYWxsIGNyZWRlbnRpYWwgdHlwZXMKKyAgICAvLyBoYXZlIHRoZSBwZXJzaXN0ZW5jZSBwcm9w
ZXJ0eS4KKyAgICBpZiAoYS5wZXJzaXN0ZW5jZSgpICE9IGIucGVyc2lzdGVuY2UoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBP
UlRFRAorICAgIENyZWRlbnRpYWxUeXBlIGFUeXBlID0gYS50eXBlKCk7CisgICAgaWYgKGFUeXBl
ICE9IGIudHlwZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gQ29tcGFy
aW5nIGlkZW50aXR5IGFuZCBjZXJ0aWZpY2F0ZSBjaGFpbiBwb2ludGVycyBpcyB2YWxpZCBvbmx5
CisgICAgLy8gZm9yIGNsaWVudCBjZXJ0aWZpY2F0ZSB0eXBlIGNyZWRlbnRpYWxzLgorICAgIC8v
CisgICAgLy8gRklYTUU6IElzIHBvaW50ZXIgY29tcGFyaXNvbiBvZiB0aGUgaWRlbnRpdHkgYW5k
IGNlcnRpZmljYXRlcyBwcm9wZXJ0aWVzIHN1ZmZpY2llbnQ/CisgICAgaWYgKGFUeXBlID09IENy
ZWRlbnRpYWxUeXBlQ2xpZW50Q2VydGlmaWNhdGUpIHsKKyAgICAgICAgaWYgKGEuaWRlbnRpdHko
KSAhPSBiLmlkZW50aXR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlm
IChhLmNlcnRpZmljYXRlcygpICE9IGIuY2VydGlmaWNhdGVzKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gY2hlY2sgaWRl
bnRpdHkgYW5kIGNlcnRpZmljYXRlcyB0byBjb21wYXJlCisgICAgICAgIC8vIGNsaWVudCBjZXJ0
aWZpY2F0ZSBiYXNlZCBjcmVkZW50aWFscy4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIAorICAgIEFTU0VSVChhLnR5cGUoKSA9PSBDcmVkZW50aWFsVHlwZVBhc3N3b3JkICYmIGIu
dHlwZSgpID09IENyZWRlbnRpYWxUeXBlUGFzc3dvcmQpOworI2VuZGlmICAgIAorICAgIAorICAg
IGlmIChhLnVzZXIoKSAhPSBiLnVzZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
IChhLnBhc3N3b3JkKCkgIT0gYi5wYXNzd29yZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIAorICAgIHJldHVybiB0cnVlOworfQorCit9CisKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDE1IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAq
LwogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyZWRlbnRpYWxCYXNlLmgiCisKICNp
bmNsdWRlICJDcmVkZW50aWFsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gTmVlZCB0
byBlbmZvcmNlIGVtcHR5LCBub24tbnVsbCBzdHJpbmdzIGR1ZSB0byB0aGUgcGlja2luZXNzIG9m
IHRoZSBTdHJpbmcgPT0gU3RyaW5nIG9wZXJhdG9yCiAvLyBjb21iaW5lZCB3aXRoIHRoZSBzZW1h
bnRpY3Mgb2YgdGhlIFN0cmluZyhOU1N0cmluZyopIGNvbnN0cnVjdG9yCi1DcmVkZW50aWFsOjpD
cmVkZW50aWFsKCkKK0NyZWRlbnRpYWxCYXNlOjpDcmVkZW50aWFsQmFzZSgpCiAgICAgOiBtX3Vz
ZXIoIiIpCiAgICAgLCBtX3Bhc3N3b3JkKCIiKQogICAgICwgbV9wZXJzaXN0ZW5jZShDcmVkZW50
aWFsUGVyc2lzdGVuY2VOb25lKQpAQCAtNDEsNyArNDMsNyBAQCBDcmVkZW50aWFsOjpDcmVkZW50
aWFsKCkKICAgIAogLy8gTmVlZCB0byBlbmZvcmNlIGVtcHR5LCBub24tbnVsbCBzdHJpbmdzIGR1
ZSB0byB0aGUgcGlja2luZXNzIG9mIHRoZSBTdHJpbmcgPT0gU3RyaW5nIG9wZXJhdG9yCiAvLyBj
b21iaW5lZCB3aXRoIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIFN0cmluZyhOU1N0cmluZyopIGNvbnN0
cnVjdG9yCi1DcmVkZW50aWFsOjpDcmVkZW50aWFsKGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3Qg
U3RyaW5nJiBwYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQorQ3Jl
ZGVudGlhbEJhc2U6OkNyZWRlbnRpYWxCYXNlKGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3Ry
aW5nJiBwYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQogICAgIDog
bV91c2VyKHVzZXIubGVuZ3RoKCkgPyB1c2VyIDogIiIpCiAgICAgLCBtX3Bhc3N3b3JkKHBhc3N3
b3JkLmxlbmd0aCgpID8gcGFzc3dvcmQgOiAiIikKICAgICAsIG1fcGVyc2lzdGVuY2UocGVyc2lz
dGVuY2UpCkBAIC01MSw3ICs1Myw3IEBAIENyZWRlbnRpYWw6OkNyZWRlbnRpYWwoY29uc3QgU3Ry
aW5nJiB1c2UKIHsKIH0KICAgICAKLUNyZWRlbnRpYWw6OkNyZWRlbnRpYWwoY29uc3QgQ3JlZGVu
dGlhbCYgb3JpZ2luYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSkKK0NyZWRl
bnRpYWxCYXNlOjpDcmVkZW50aWFsQmFzZShjb25zdCBDcmVkZW50aWFsJiBvcmlnaW5hbCwgQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQogICAgIDogbV91c2VyKG9yaWdpbmFsLnVz
ZXIoKSkKICAgICAsIG1fcGFzc3dvcmQob3JpZ2luYWwucGFzc3dvcmQoKSkKICAgICAsIG1fcGVy
c2lzdGVuY2UocGVyc2lzdGVuY2UpCkBAIC02Myw3ICs2NSw3IEBAIENyZWRlbnRpYWw6OkNyZWRl
bnRpYWwoY29uc3QgQ3JlZGVudGlhbCYKIHsKIH0KIAotYm9vbCBDcmVkZW50aWFsOjppc0VtcHR5
KCkgY29uc3QKK2Jvb2wgQ3JlZGVudGlhbEJhc2U6OmlzRW1wdHkoKSBjb25zdAogewogI2lmIENF
UlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAogICAgIGlmIChtX3R5cGUgPT0gQ3JlZGVu
dGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSAmJiAobV9pZGVudGl0eSB8fCBtX2NlcnRpZmljYXRl
cykpCkBAIC03MywyOCArNzUsMjggQEAgYm9vbCBDcmVkZW50aWFsOjppc0VtcHR5KCkgY29uc3QK
ICAgICByZXR1cm4gbV91c2VyLmlzRW1wdHkoKSAmJiBtX3Bhc3N3b3JkLmlzRW1wdHkoKTsKIH0K
ICAgICAKLWNvbnN0IFN0cmluZyYgQ3JlZGVudGlhbDo6dXNlcigpIGNvbnN0Citjb25zdCBTdHJp
bmcmIENyZWRlbnRpYWxCYXNlOjp1c2VyKCkgY29uc3QKIHsgCiAgICAgcmV0dXJuIG1fdXNlcjsg
CiB9CiAKLWNvbnN0IFN0cmluZyYgQ3JlZGVudGlhbDo6cGFzc3dvcmQoKSBjb25zdCAKK2NvbnN0
IFN0cmluZyYgQ3JlZGVudGlhbEJhc2U6OnBhc3N3b3JkKCkgY29uc3QKIHsgCiAgICAgcmV0dXJu
IG1fcGFzc3dvcmQ7IAogfQogCi1ib29sIENyZWRlbnRpYWw6Omhhc1Bhc3N3b3JkKCkgY29uc3Qg
Citib29sIENyZWRlbnRpYWxCYXNlOjpoYXNQYXNzd29yZCgpIGNvbnN0CiB7IAogICAgIHJldHVy
biAhbV9wYXNzd29yZC5pc0VtcHR5KCk7IAogfQogCi1DcmVkZW50aWFsUGVyc2lzdGVuY2UgQ3Jl
ZGVudGlhbDo6cGVyc2lzdGVuY2UoKSBjb25zdCAKK0NyZWRlbnRpYWxQZXJzaXN0ZW5jZSBDcmVk
ZW50aWFsQmFzZTo6cGVyc2lzdGVuY2UoKSBjb25zdAogeyAKICAgICByZXR1cm4gbV9wZXJzaXN0
ZW5jZTsgCiB9CiAgICAgCiAjaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECi1D
cmVkZW50aWFsOjpDcmVkZW50aWFsKFNlY0lkZW50aXR5UmVmIGlkZW50aXR5LCBDRkFycmF5UmVm
IGNlcnRpZmljYXRlcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQorQ3JlZGVu
dGlhbEJhc2U6OkNyZWRlbnRpYWxCYXNlKFNlY0lkZW50aXR5UmVmIGlkZW50aXR5LCBDRkFycmF5
UmVmIGNlcnRpZmljYXRlcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQogICAg
IDogbV91c2VyKCIiKQogICAgICwgbV9wYXNzd29yZCgiIikKICAgICAsIG1fcGVyc2lzdGVuY2Uo
cGVyc2lzdGVuY2UpCkBAIC0xMDQsMTcgKzEwNiwxNyBAQCBDcmVkZW50aWFsOjpDcmVkZW50aWFs
KFNlY0lkZW50aXR5UmVmIGlkCiB7CiB9CiAgICAgCi1TZWNJZGVudGl0eVJlZiBDcmVkZW50aWFs
OjppZGVudGl0eSgpIGNvbnN0CitTZWNJZGVudGl0eVJlZiBDcmVkZW50aWFsQmFzZTo6aWRlbnRp
dHkoKSBjb25zdAogewogICAgIHJldHVybiBtX2lkZW50aXR5LmdldCgpOwogfQogICAgIAotQ0ZB
cnJheVJlZiBDcmVkZW50aWFsOjpjZXJ0aWZpY2F0ZXMoKSBjb25zdAorQ0ZBcnJheVJlZiBDcmVk
ZW50aWFsQmFzZTo6Y2VydGlmaWNhdGVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jZXJ0aWZp
Y2F0ZXMuZ2V0KCk7CiB9CiAgICAgCi1DcmVkZW50aWFsVHlwZSBDcmVkZW50aWFsOjp0eXBlKCkg
Y29uc3QKK0NyZWRlbnRpYWxUeXBlIENyZWRlbnRpYWxCYXNlOjp0eXBlKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV90eXBlOwogfQpAQCAtMTU5LDQgKzE2MSwzIEBAIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDcmVkZW50aWFsJiBhLCBjb24KIH0KIAogfQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCShyZXZpc2lvbiAxNzE2NjUp
CShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oOjE3MTY2
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworI2lmbmRlZiBDcmVkZW50aWFsX2gKKyNkZWZpbmUgQ3JlZGVu
dGlhbF9oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2RlZmluZSBDRVJU
SUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQgKFBMQVRGT1JNKENPQ09BKSkKKworI2lmIENF
UlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAorI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0Jh
c2UuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitlbnVtIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSB7CisgICAgQ3JlZGVudGlhbFBl
cnNpc3RlbmNlTm9uZSwKKyAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uLAorICAg
IENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudAorfTsKKworI2lmIENFUlRJRklDQVRFX0NS
RURFTlRJQUxTX1NVUFBPUlRFRAorZW51bSBDcmVkZW50aWFsVHlwZSB7CisgICAgQ3JlZGVudGlh
bFR5cGVQYXNzd29yZCwKKyAgICBDcmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlCit9Owor
I2VuZGlmCisKK2NsYXNzIENyZWRlbnRpYWwgeworCitwdWJsaWM6CisgICAgQ3JlZGVudGlhbCgp
OworICAgIENyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3
b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOworICAgIENyZWRlbnRpYWwoY29uc3QgQ3JlZGVu
dGlhbCYgb3JpZ2luYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CisjaWYgQ0VSVElGSUNBVEVf
Q1JFREVOVElBTFNfU1VQUE9SVEVECisgICAgQ3JlZGVudGlhbChTZWNJZGVudGl0eVJlZiBpZGVu
dGl0eSwgQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZXMsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7Cisj
ZW5kaWYKKyAgICAKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKKyAgICAKKyAgICBjb25zdCBT
dHJpbmcmIHVzZXIoKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKCkgY29uc3Q7
CisgICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0OworICAgIENyZWRlbnRpYWxQZXJzaXN0ZW5j
ZSBwZXJzaXN0ZW5jZSgpIGNvbnN0OworICAgIAorI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxT
X1NVUFBPUlRFRAorICAgIFNlY0lkZW50aXR5UmVmIGlkZW50aXR5KCkgY29uc3Q7CisgICAgQ0ZB
cnJheVJlZiBjZXJ0aWZpY2F0ZXMoKSBjb25zdDsKKyAgICBDcmVkZW50aWFsVHlwZSB0eXBlKCkg
Y29uc3Q7CisjZW5kaWYgICAgCisgICAgCitwcml2YXRlOgorICAgIFN0cmluZyBtX3VzZXI7Cisg
ICAgU3RyaW5nIG1fcGFzc3dvcmQ7CisgICAgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIG1fcGVyc2lz
dGVuY2U7CisjaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECisgICAgUmV0YWlu
UHRyPFNlY0lkZW50aXR5UmVmPiBtX2lkZW50aXR5OworICAgIFJldGFpblB0cjxDRkFycmF5UmVm
PiBtX2NlcnRpZmljYXRlczsKKyAgICBDcmVkZW50aWFsVHlwZSBtX3R5cGU7CisjZW5kaWYKK307
CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBDcmVkZW50aWFsJiBhLCBjb25zdCBDcmVkZW50aWFs
JiBiKTsKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ3JlZGVudGlhbCYgYSwgY29uc3Qg
Q3JlZGVudGlhbCYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CisgICAgCit9OworI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFz
ZS5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDggQEAKICAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KLSNpZm5kZWYgQ3JlZGVudGlhbF9oCi0jZGVm
aW5lIENyZWRlbnRpYWxfaAorI2lmbmRlZiBDcmVkZW50aWFsQmFzZV9oCisjZGVmaW5lIENyZWRl
bnRpYWxCYXNlX2gKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNiw2
ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ3JlZGVudGlhbDsKKwog
ZW51bSBDcmVkZW50aWFsUGVyc2lzdGVuY2UgewogICAgIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5v
bmUsCiAgICAgQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbiwKQEAgLTQ5LDE2ICs1MSw5
IEBAIGVudW0gQ3JlZGVudGlhbFR5cGUgewogfTsKICNlbmRpZgogCi1jbGFzcyBDcmVkZW50aWFs
IHsKK2NsYXNzIENyZWRlbnRpYWxCYXNlIHsKIAogcHVibGljOgotICAgIENyZWRlbnRpYWwoKTsK
LSAgICBDcmVkZW50aWFsKGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29y
ZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlKTsKLSAgICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRp
YWwmIG9yaWdpbmFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwotI2lmIENFUlRJRklDQVRFX0NS
RURFTlRJQUxTX1NVUFBPUlRFRAotICAgIENyZWRlbnRpYWwoU2VjSWRlbnRpdHlSZWYgaWRlbnRp
dHksIENGQXJyYXlSZWYgY2VydGlmaWNhdGVzLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwotI2Vu
ZGlmCi0gICAgCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgCiAgICAgY29uc3QgU3Ry
aW5nJiB1c2VyKCkgY29uc3Q7CkBAIC03Miw2ICs2NywxNCBAQCBwdWJsaWM6CiAgICAgQ3JlZGVu
dGlhbFR5cGUgdHlwZSgpIGNvbnN0OwogI2VuZGlmICAgIAogICAgIAorcHJvdGVjdGVkOgorICAg
IENyZWRlbnRpYWxCYXNlKCk7CisgICAgQ3JlZGVudGlhbEJhc2UoY29uc3QgU3RyaW5nJiB1c2Vy
LCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOworICAgIENy
ZWRlbnRpYWxCYXNlKGNvbnN0IENyZWRlbnRpYWwmIG9yaWdpbmFsLCBDcmVkZW50aWFsUGVyc2lz
dGVuY2UpOworI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAorICAgIENyZWRl
bnRpYWxCYXNlKFNlY0lkZW50aXR5UmVmLCBDRkFycmF5UmVmIGNlcnRpZmljYXRlcywgQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlKTsKKyNlbmRpZgorICAgIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV91
c2VyOwogICAgIFN0cmluZyBtX3Bhc3N3b3JkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235664</attachid>
            <date>2014-07-28 23:22:16 -0700</date>
            <delta_ts>2014-07-28 23:30:09 -0700</delta_ts>
            <desc>II. Move the Cocoa-specific parts of CredentialBase into a Cocoa-specific Credential class</desc>
            <filename>135327-2.diff</filename>
            <type>text/plain</type>
            <size>23906</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MTcyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE0LTA3LTI4ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZWQgdGhlIENvY29hLXNwZWNp
ZmljIHBhcnRzIG9mIENyZWRlbnRpYWxCYXNlIGludG8gYSBDb2NvYS1zcGVjaWZpYyBDcmVkZW50
aWFsIGNsYXNzLgorICAgICAgICBXb3JrIHRvd2FyZHMgZml4aW5nIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUzMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOiBVcGRhdGVkIGZvciBmdW5jdGlvbnMgbW92ZWQgaW4gdGhl
IGNsYXNzIGhpZXJhcmNoeS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkZWQgQ3JlZGVudGlhbENvY29hLntoLG1tfS4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oOiBGb3IgQ29jb2EsIGluY2x1ZGUgQ3JlZGVudGlhbENv
Y29hLmggaW5zdGVhZCBvZiB0aGUgZ2VuZXJpYworICAgICAgICBjbGFzcy4KKyAgICAgICAgKFdl
YkNvcmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwpOiBSZW1vdmVkICNpZiBDRVJUSUZJQ0FURV9D
UkVERU5USUFMU19TVVBQT1JURUQgY29kZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OkNy
ZWRlbnRpYWxCYXNlKTogQ2hhbmdlZCB0byB1c2UgZW1wdHlTdHJpbmcgaW5zdGVhZCBvZiAiIiwg
cmVtb3ZlZAorICAgICAgICAjaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVEIGNv
ZGUuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFzZTo6aXNFbXB0eSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OmNvbXBhcmUpOiBSZW5hbWVkIG9wZXJh
dG9yPT0gdG8gdGhpcywgcmVtb3ZlZAorICAgICAgICAjaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElB
TFNfU1VQUE9SVEVEIGNvZGUsIGJ1dCBjaGFuZ2VkIHRoZSBlbmQgdG8gY2FsbCBwbGF0Zm9ybUNv
bXBhcmUuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFzZTo6aWRlbnRpdHkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OmNlcnRpZmljYXRlcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFzZTo6dHlwZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oOiBSZW1vdmVkICNp
ZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQgbWVtYmVycy4KKyAgICAgICAgKFdl
YkNvcmU6OkNyZWRlbnRpYWxCYXNlOjpwbGF0Zm9ybUNvbXBhcmUpOiBBZGRlZCBhIGJhc2UgaW1w
bGVtZW50YXRpb24gdGhhdCByZXR1cm5zIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cj09KTogQ2hhbmdlZCB0byB1c2UgQ3JlZGVudGlhbEJhc2U6OmNvbXBhcmUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwpOiBNb3ZlZCB0aGUgY29uc3RydWN0b3IgdGhhdCB0
YWtlcyBhbiBpZGVudGl0eSBhbmQKKyAgICAgICAgY2VydGlmaWNhdGVzIGhlcmUuCisgICAgICAg
IChXZWJDb3JlOjpDcmVkZW50aWFsOjppc0VtcHR5KTogTW92ZWQgaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNyZWRlbnRpYWw6OmlkZW50aXR5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
cmVkZW50aWFsOjpjZXJ0aWZpY2F0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRl
bnRpYWw6OnR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OnBsYXRm
b3JtQ29tcGFyZSk6IE1vdmVkIHRoZSBjb2RlIHRoYXQgY29tcGFyZXMgY2xpZW50LWNlcnRpZmlj
YXRlCisgICAgICAgIGNyZWRlbnRpYWxzIGhlcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1hYyk6IFJl
bW92ZWQgI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRCBndWFyZHMgaW4gdGhp
cyBDb2NvYS1vbmx5CisgICAgICAgIGZpbGUuCisgICAgICAgIChXZWJDb3JlOjpjb3JlKTogRGl0
dG8uCisKIDIwMTQtMDctMjggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbnRyb2R1Y2VkIENyZWRlbnRpYWxCYXNlIGFuZCBtYWRlIENyZWRlbnRpYWwgZGVyaXZl
IGZyb20gaXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNzE3MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEs
NyBAQCBfX1pOM1dURjZTdHJpbmdDMUVQSzEwX19DRlN0cmluZwogX19aTjdXZWJDb3JlMTBDbGll
bnRSZWN0QzFFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNf
OUZsb2F0UmVjdEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXYKK19fWk43V2ViQ29yZTEw
Q3JlZGVudGlhbEMxRVAyME9wYXF1ZVNlY0lkZW50aXR5UmVmUEs5X19DRkFycmF5TlNfMjFDcmVk
ZW50aWFsUGVyc2lzdGVuY2VFCiBfX1pON1dlYkNvcmUxMEZsb2F0UG9pbnRDMUVSSzdDR1BvaW50
CiBfX1pON1dlYkNvcmUxMEZsb2F0UG9pbnRDMUVSS05TXzhJbnRQb2ludEUKIF9fWk43V2ViQ29y
ZTEwRm9udEdseXBoczE1cmVsZWFzZUZvbnREYXRhRXYKQEAgLTMzNCw3ICszMzUsNiBAQCBfX1pO
N1dlYkNvcmUxNENhY2hlZFJlc291cmNlOWFkZENsaWVudEVQCiBfX1pON1dlYkNvcmUxNENsaWVu
dFJlY3RMaXN0QzFFUktOM1dURjZWZWN0b3JJTlNfOUZsb2F0UXVhZEVMbTBFTlMxXzE1Q3Jhc2hP
bk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFdgogX19aTjdXZWJD
b3JlMTRDbGllbnRSZWN0TGlzdEQxRXYKLV9fWk43V2ViQ29yZTE0Q3JlZGVudGlhbEJhc2VDMkVQ
MjBPcGFxdWVTZWNJZGVudGl0eVJlZlBLOV9fQ0ZBcnJheU5TXzIxQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlRQogX19aTjdXZWJDb3JlMTRDcmVkZW50aWFsQmFzZUMyRVJLTjNXVEY2U3RyaW5nRVM0X05T
XzIxQ3JlZGVudGlhbFBlcnNpc3RlbmNlRQogX19aTjdXZWJDb3JlMTRDcmVkZW50aWFsQmFzZUMy
RXYKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMGNvbW1pdERhdGFFUEtjbQpAQCAtMTUz
NSw2ICsxNTM1LDEwIEBAIF9fWk43V2ViQ29yZTl0b0VsZW1lbnRFTjNKU0M3SlNWYWx1ZUUKIF9f
Wk43V2ViQ29yZTl1bmlvblJlY3RFUktOM1dURjZWZWN0b3JJTlNfOUZsb2F0UmVjdEVMbTBFTlMw
XzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pOSzNKU0M4QmluZGluZ3MxMFJvb3RPYmplY3QxMmds
b2JhbE9iamVjdEV2CiBfX1pOSzNXVEY2U3RyaW5nMTRjcmVhdGVDRlN0cmluZ0V2CitfX1pOSzdX
ZWJDb3JlMTBDcmVkZW50aWFsMTJjZXJ0aWZpY2F0ZXNFdgorX19aTks3V2ViQ29yZTEwQ3JlZGVu
dGlhbDR0eXBlRXYKK19fWk5LN1dlYkNvcmUxMENyZWRlbnRpYWw3aXNFbXB0eUV2CitfX1pOSzdX
ZWJDb3JlMTBDcmVkZW50aWFsOGlkZW50aXR5RXYKIF9fWk5LN1dlYkNvcmUxMEZsb2F0UG9pbnRj
djdDR1BvaW50RXYKIF9fWk5LN1dlYkNvcmUxMEZvbnRHbHlwaHMxN3JlYWxpemVGb250RGF0YUF0
RVJLTlNfMTVGb250RGVzY3JpcHRpb25FagogX19aTks3V2ViQ29yZTEwTGF5b3V0UmVjdDhjb250
YWluc0VSS1MwXwpAQCAtMTY1NCwxMSArMTY1OCw3IEBAIF9fWk5LN1dlYkNvcmUxM1Jlc291cmNl
RXJyb3I3bnNFcnJvckV2CiBfX1pOSzdXZWJDb3JlMTNSZXNvdXJjZUVycm9yY3ZQN05TRXJyb3JF
dgogX19aTks3V2ViQ29yZTE0Q3JlZGVudGlhbEJhc2UxMWhhc1Bhc3N3b3JkRXYKIF9fWk5LN1dl
YkNvcmUxNENyZWRlbnRpYWxCYXNlMTFwZXJzaXN0ZW5jZUV2Ci1fX1pOSzdXZWJDb3JlMTRDcmVk
ZW50aWFsQmFzZTEyY2VydGlmaWNhdGVzRXYKLV9fWk5LN1dlYkNvcmUxNENyZWRlbnRpYWxCYXNl
NHR5cGVFdgogX19aTks3V2ViQ29yZTE0Q3JlZGVudGlhbEJhc2U0dXNlckV2Ci1fX1pOSzdXZWJD
b3JlMTRDcmVkZW50aWFsQmFzZTdpc0VtcHR5RXYKLV9fWk5LN1dlYkNvcmUxNENyZWRlbnRpYWxC
YXNlOGlkZW50aXR5RXYKIF9fWk5LN1dlYkNvcmUxNENyZWRlbnRpYWxCYXNlOHBhc3N3b3JkRXYK
IF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTByZXF1ZXN0VVJMRXYKIF9fWk5LN1dlYkNv
cmUxNERvY3VtZW50TG9hZGVyMTFmcmFtZUxvYWRlckV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzE3MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTEzMTQsNiArMTMxNCw4IEBACiAJCTM3OTE5QzIzMEI3RDE4ODYwMEE1
Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTE5QzIxMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0
ZXJhdG9yLmNwcCAqLzsgfTsKIAkJMzc5MTlDMjQwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9u
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3OTE5QzIyMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMzc5MjkxN0ExOTg1RUYzOTAwRjRCNjYx
IC8qIENyZWRlbnRpYWxCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzkyOTE3ODE5ODVFRjM5MDBGNEI2NjEgLyogQ3JlZGVudGlhbEJhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzNzkyOTE3
RDE5ODc2NzhGMDBGNEI2NjEgLyogQ3JlZGVudGlhbENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5MjkxN0IxOTg3Njc4RjAwRjRCNjYxIC8q
IENyZWRlbnRpYWxDb2NvYS5tbSAqLzsgfTsKKwkJMzc5MjkxN0UxOTg3Njc4RjAwRjRCNjYxIC8q
IENyZWRlbnRpYWxDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc5MjkxN0MxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3OTkxOTk2
MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzk5MTk5NDEyMDBEREY0MDBFQTA0MUMgLyog
V09GRkZpbGVGb3JtYXQuY3BwICovOyB9OwogCQkzNzk5MTk5NzEyMDBEREY0MDBFQTA0MUMgLyog
V09GRkZpbGVGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3OTkxOTk1MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5oICovOyB9
OwogCQkzNzk5MTlCMjEyMDBERTUwMDBFQTA0MUMgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTkxOUIxMTIwMERFNTAwMEVB
MDQxQyAvKiBsaWJ6LmR5bGliICovOyB9OwpAQCAtODMzOSw2ICs4MzQxLDggQEAKIAkJMzc5MTlD
MjEwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25J
dGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25JdGVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzkyOTE3ODE5ODVFRjM5MDBG
NEI2NjEgLyogQ3JlZGVudGlhbEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3JlZGVudGlhbEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc5Mjkx
N0IxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IENyZWRlbnRpYWxDb2NvYS5tbTsgcGF0aCA9IGNvY29h
L0NyZWRlbnRpYWxDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc5Mjkx
N0MxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDcmVkZW50aWFsQ29jb2EuaDsgcGF0aCA9IGNvY29hL0NyZWRlbnRp
YWxDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzk5MTk5NDEyMDBEREY0
MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV09GRkZpbGVGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzNzk5MTk5NTEyMDBEREY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV09GRkZpbGVGb3JtYXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzc5OTE5QjExMjAwREU1MDAwRUEwNDFDIC8qIGxpYnouZHlsaWIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnouZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJ6
LmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwpAQCAtMTY3NjUsNiArMTY3Njks
OCBAQAogCQk3RTdERTFGRTE5NUNFRjJEMDAzNTM2M0IgLyogY29jb2EgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTM3OTI5MTdDMTk4NzY3OEYwMEY0QjY2
MSAvKiBDcmVkZW50aWFsQ29jb2EuaCAqLywKKwkJCQkzNzkyOTE3QjE5ODc2NzhGMDBGNEI2NjEg
LyogQ3JlZGVudGlhbENvY29hLm1tICovLAogCQkJCTM3MkFEQTM3MTk3RjQ3QjkwMEZDNTAxRSAv
KiBQcm90ZWN0aW9uU3BhY2VDb2NvYS5oICovLAogCQkJCTM3MkFEQTM5MTk3RjY4NzYwMEZDNTAx
RSAvKiBQcm90ZWN0aW9uU3BhY2VDb2NvYS5tbSAqLywKIAkJCQk3RTdERTFGQzE5NUNFRjI2MDAz
NTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi8sCkBAIC0yNTY3MSw2ICsyNTY3Nyw3
IEBACiAJCQkJQkNFQTQ4NjQwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxpbmVCcmVhay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQUJCNTQxOUYwQUNEREZFNDAwMjgyMEVCIC8qIFJlbmRlckxpc3RC
b3guaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3QTUyMEExOTFBNTIwMEE4RUY1RiAvKiBSZW5k
ZXJMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzc5MjkxN0UxOTg3Njc4RjAwRjRCNjYx
IC8qIENyZWRlbnRpYWxDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdBNTAwQTE5MUE1
MjAwQThFRjVGIC8qIFJlbmRlckxpc3RNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTYw
MjhGMEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MzkwNDZEODEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MQmxvY2suaCBpbiBIZWFk
ZXJzICovLApAQCAtMjg2NjAsNiArMjg2NjcsNyBAQAogCQkJCUIyRkEzREM0MEFCNzVBNkYwMDBF
NUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjJGQTNEQzYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNBYnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQzgwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMzc5MjkxN0QxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUIyRkEzRENBMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzREND
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVs
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzk2RDhEMEIzQUYyQjcwMDVFODBFQyAvKiBKU1NW
R1BhdGhTZWdDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaAkocmV2aXNpb24gMTcxNzIyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDEwIEBACiAjaWZuZGVmIENyZWRlbnRpYWxfaAogI2RlZmluZSBDcmVkZW50
aWFsX2gKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkNyZWRlbnRpYWxDb2NvYS5o
IgorI2Vsc2UKKwogI2luY2x1ZGUgIkNyZWRlbnRpYWxCYXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ2LDE1ICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIDogQ3JlZGVudGlhbEJh
c2Uob3JpZ2luYWwsIHBlcnNpc3RlbmNlKQogICAgIHsKICAgICB9Ci0KLSNpZiBDRVJUSUZJQ0FU
RV9DUkVERU5USUFMU19TVVBQT1JURUQKLSAgICBDcmVkZW50aWFsKFNlY0lkZW50aXR5UmVmIGlk
ZW50aXR5LCBDRkFycmF5UmVmIGNlcnRpZmljYXRlcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBl
cnNpc3RlbmNlKQotICAgICAgICA6IENyZWRlbnRpYWxCYXNlKGlkZW50aXR5LCBjZXJ0aWZpY2F0
ZXMsIHBlcnNpc3RlbmNlKQotICAgIHsKLSAgICB9Ci0jZW5kaWYKIH07CiAKIH0KIAorI2VuZGlm
CisKICNlbmRpZiAvLyBDcmVkZW50aWFsX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCShyZXZpc2lvbiAxNzE3MjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMjQgKzMzLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIE5l
ZWQgdG8gZW5mb3JjZSBlbXB0eSwgbm9uLW51bGwgc3RyaW5ncyBkdWUgdG8gdGhlIHBpY2tpbmVz
cyBvZiB0aGUgU3RyaW5nID09IFN0cmluZyBvcGVyYXRvcgogLy8gY29tYmluZWQgd2l0aCB0aGUg
c2VtYW50aWNzIG9mIHRoZSBTdHJpbmcoTlNTdHJpbmcqKSBjb25zdHJ1Y3RvcgogQ3JlZGVudGlh
bEJhc2U6OkNyZWRlbnRpYWxCYXNlKCkKLSAgICA6IG1fdXNlcigiIikKLSAgICAsIG1fcGFzc3dv
cmQoIiIpCisgICAgOiBtX3VzZXIoZW1wdHlTdHJpbmcoKSkKKyAgICAsIG1fcGFzc3dvcmQoZW1w
dHlTdHJpbmcoKSkKICAgICAsIG1fcGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9u
ZSkKLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKLSAgICAsIG1fdHlwZShD
cmVkZW50aWFsVHlwZVBhc3N3b3JkKQotI2VuZGlmICAgIAogewogfQogICAgCiAvLyBOZWVkIHRv
IGVuZm9yY2UgZW1wdHksIG5vbi1udWxsIHN0cmluZ3MgZHVlIHRvIHRoZSBwaWNraW5lc3Mgb2Yg
dGhlIFN0cmluZyA9PSBTdHJpbmcgb3BlcmF0b3IKIC8vIGNvbWJpbmVkIHdpdGggdGhlIHNlbWFu
dGljcyBvZiB0aGUgU3RyaW5nKE5TU3RyaW5nKikgY29uc3RydWN0b3IKIENyZWRlbnRpYWxCYXNl
OjpDcmVkZW50aWFsQmFzZShjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dv
cmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSkKLSAgICA6IG1fdXNlcih1c2Vy
Lmxlbmd0aCgpID8gdXNlciA6ICIiKQotICAgICwgbV9wYXNzd29yZChwYXNzd29yZC5sZW5ndGgo
KSA/IHBhc3N3b3JkIDogIiIpCisgICAgOiBtX3VzZXIodXNlci5sZW5ndGgoKSA/IHVzZXIgOiBl
bXB0eVN0cmluZygpKQorICAgICwgbV9wYXNzd29yZChwYXNzd29yZC5sZW5ndGgoKSA/IHBhc3N3
b3JkIDogZW1wdHlTdHJpbmcoKSkKICAgICAsIG1fcGVyc2lzdGVuY2UocGVyc2lzdGVuY2UpCi0j
aWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECi0gICAgLCBtX3R5cGUoQ3JlZGVu
dGlhbFR5cGVQYXNzd29yZCkKLSNlbmRpZgogewogfQogICAgIApAQCAtNTgsMjEgKzUyLDExIEBA
IENyZWRlbnRpYWxCYXNlOjpDcmVkZW50aWFsQmFzZShjb25zdCBDcmUKICAgICA6IG1fdXNlcihv
cmlnaW5hbC51c2VyKCkpCiAgICAgLCBtX3Bhc3N3b3JkKG9yaWdpbmFsLnBhc3N3b3JkKCkpCiAg
ICAgLCBtX3BlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKQotI2lmIENFUlRJRklDQVRFX0NSRURFTlRJ
QUxTX1NVUFBPUlRFRAotICAgICwgbV9pZGVudGl0eShvcmlnaW5hbC5pZGVudGl0eSgpKQotICAg
ICwgbV9jZXJ0aWZpY2F0ZXMob3JpZ2luYWwuY2VydGlmaWNhdGVzKCkpCi0gICAgLCBtX3R5cGUo
b3JpZ2luYWwudHlwZSgpKQotI2VuZGlmCiB7CiB9CiAKIGJvb2wgQ3JlZGVudGlhbEJhc2U6Omlz
RW1wdHkoKSBjb25zdAogewotI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAot
ICAgIGlmIChtX3R5cGUgPT0gQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSAmJiAobV9p
ZGVudGl0eSB8fCBtX2NlcnRpZmljYXRlcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRp
ZgotICAgIAogICAgIHJldHVybiBtX3VzZXIuaXNFbXB0eSgpICYmIG1fcGFzc3dvcmQuaXNFbXB0
eSgpOwogfQogICAgIApAQCAtOTUsNzAgKzc5LDE5IEBAIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBD
cmVkZW50aWFsQmFzZTo6cGUKIHsgCiAgICAgcmV0dXJuIG1fcGVyc2lzdGVuY2U7IAogfQotICAg
IAotI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAotQ3JlZGVudGlhbEJhc2U6
OkNyZWRlbnRpYWxCYXNlKFNlY0lkZW50aXR5UmVmIGlkZW50aXR5LCBDRkFycmF5UmVmIGNlcnRp
ZmljYXRlcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQotICAgIDogbV91c2Vy
KCIiKQotICAgICwgbV9wYXNzd29yZCgiIikKLSAgICAsIG1fcGVyc2lzdGVuY2UocGVyc2lzdGVu
Y2UpCi0gICAgLCBtX2lkZW50aXR5KGlkZW50aXR5KQotICAgICwgbV9jZXJ0aWZpY2F0ZXMoY2Vy
dGlmaWNhdGVzKQotICAgICwgbV90eXBlKENyZWRlbnRpYWxUeXBlQ2xpZW50Q2VydGlmaWNhdGUp
Ci17Ci19Ci0gICAgCi1TZWNJZGVudGl0eVJlZiBDcmVkZW50aWFsQmFzZTo6aWRlbnRpdHkoKSBj
b25zdAotewotICAgIHJldHVybiBtX2lkZW50aXR5LmdldCgpOwotfQotICAgIAotQ0ZBcnJheVJl
ZiBDcmVkZW50aWFsQmFzZTo6Y2VydGlmaWNhdGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9j
ZXJ0aWZpY2F0ZXMuZ2V0KCk7Ci19Ci0gICAgCi1DcmVkZW50aWFsVHlwZSBDcmVkZW50aWFsQmFz
ZTo6dHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdHlwZTsKLX0KLSNlbmRpZgogCi1ib29s
IG9wZXJhdG9yPT0oY29uc3QgQ3JlZGVudGlhbCYgYSwgY29uc3QgQ3JlZGVudGlhbCYgYikKK2Jv
b2wgQ3JlZGVudGlhbEJhc2U6OmNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYgYSwgY29uc3QgQ3Jl
ZGVudGlhbCYgYikKIHsKICAgICAvLyBDaGVjayBwZXJzaXN0ZW5jZSBmaXJzdCBzaW5jZSBhbGwg
Y3JlZGVudGlhbCB0eXBlcwogICAgIC8vIGhhdmUgdGhlIHBlcnNpc3RlbmNlIHByb3BlcnR5Lgog
ICAgIGlmIChhLnBlcnNpc3RlbmNlKCkgIT0gYi5wZXJzaXN0ZW5jZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCi0jaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECi0g
ICAgQ3JlZGVudGlhbFR5cGUgYVR5cGUgPSBhLnR5cGUoKTsKLSAgICBpZiAoYVR5cGUgIT0gYi50
eXBlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBDb21wYXJpbmcgaWRl
bnRpdHkgYW5kIGNlcnRpZmljYXRlIGNoYWluIHBvaW50ZXJzIGlzIHZhbGlkIG9ubHkKLSAgICAv
LyBmb3IgY2xpZW50IGNlcnRpZmljYXRlIHR5cGUgY3JlZGVudGlhbHMuCi0gICAgLy8KLSAgICAv
LyBGSVhNRTogSXMgcG9pbnRlciBjb21wYXJpc29uIG9mIHRoZSBpZGVudGl0eSBhbmQgY2VydGlm
aWNhdGVzIHByb3BlcnRpZXMgc3VmZmljaWVudD8KLSAgICBpZiAoYVR5cGUgPT0gQ3JlZGVudGlh
bFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSkgewotICAgICAgICBpZiAoYS5pZGVudGl0eSgpICE9IGIu
aWRlbnRpdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGEuY2Vy
dGlmaWNhdGVzKCkgIT0gYi5jZXJ0aWZpY2F0ZXMoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBjaGVjayBpZGVudGl0eSBh
bmQgY2VydGlmaWNhdGVzIHRvIGNvbXBhcmUKLSAgICAgICAgLy8gY2xpZW50IGNlcnRpZmljYXRl
IGJhc2VkIGNyZWRlbnRpYWxzLgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0g
ICAgQVNTRVJUKGEudHlwZSgpID09IENyZWRlbnRpYWxUeXBlUGFzc3dvcmQgJiYgYi50eXBlKCkg
PT0gQ3JlZGVudGlhbFR5cGVQYXNzd29yZCk7Ci0jZW5kaWYgICAgCi0gICAgCiAgICAgaWYgKGEu
dXNlcigpICE9IGIudXNlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGEucGFz
c3dvcmQoKSAhPSBiLnBhc3N3b3JkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIENyZWRlbnRpYWw6OnBsYXRmb3JtQ29tcGFy
ZShhLCBiKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
cmVkZW50aWFsQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQ3JlZGVudGlhbEJhc2UuaAkocmV2aXNpb24gMTcxNzIyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwxMyArMjgsNiBAQAogCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNkZWZp
bmUgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVEIChQTEFURk9STShDT0NPQSkpCi0K
LSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKLSNpbmNsdWRlIDxTZWN1cml0
eS9TZWNCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3JlZGVudGlhbDsKQEAgLTQ1LDEzICszOCw2IEBAIGVu
dW0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHsKICAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJt
YW5lbnQKIH07CiAKLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKLWVudW0g
Q3JlZGVudGlhbFR5cGUgewotICAgIENyZWRlbnRpYWxUeXBlUGFzc3dvcmQsCi0gICAgQ3JlZGVu
dGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZQotfTsKLSNlbmRpZgotCiBjbGFzcyBDcmVkZW50aWFs
QmFzZSB7CiAKIHB1YmxpYzoKQEAgLTYyLDMzICs0OCwyNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNQYXNzd29yZCgpIGNvbnN0OwogICAgIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5j
ZSgpIGNvbnN0OwogICAgIAotI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAot
ICAgIFNlY0lkZW50aXR5UmVmIGlkZW50aXR5KCkgY29uc3Q7Ci0gICAgQ0ZBcnJheVJlZiBjZXJ0
aWZpY2F0ZXMoKSBjb25zdDsKLSAgICBDcmVkZW50aWFsVHlwZSB0eXBlKCkgY29uc3Q7Ci0jZW5k
aWYgICAgCi0gICAgCisgICAgc3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBDcmVkZW50aWFsJiBh
LCBjb25zdCBDcmVkZW50aWFsJiBiKTsKKwogcHJvdGVjdGVkOgogICAgIENyZWRlbnRpYWxCYXNl
KCk7CiAgICAgQ3JlZGVudGlhbEJhc2UoY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcm
IHBhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwogICAgIENyZWRlbnRpYWxCYXNlKGNv
bnN0IENyZWRlbnRpYWwmIG9yaWdpbmFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwotI2lmIENF
UlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAotICAgIENyZWRlbnRpYWxCYXNlKFNlY0lk
ZW50aXR5UmVmLCBDRkFycmF5UmVmIGNlcnRpZmljYXRlcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNl
KTsKLSNlbmRpZgotICAgIAorCisgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0
IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50aWFsJikgeyByZXR1cm4gdHJ1ZTsgfQorCiBwcml2
YXRlOgogICAgIFN0cmluZyBtX3VzZXI7CiAgICAgU3RyaW5nIG1fcGFzc3dvcmQ7CiAgICAgQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlIG1fcGVyc2lzdGVuY2U7Ci0jaWYgQ0VSVElGSUNBVEVfQ1JFREVO
VElBTFNfU1VQUE9SVEVECi0gICAgUmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiBtX2lkZW50aXR5
OwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBtX2NlcnRpZmljYXRlczsKLSAgICBDcmVkZW50
aWFsVHlwZSBtX3R5cGU7Ci0jZW5kaWYKIH07CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBDcmVk
ZW50aWFsJiBhLCBjb25zdCBDcmVkZW50aWFsJiBiKTsKK2lubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ3JlZGVudGlhbCYgYSwgY29uc3QgQ3JlZGVudGlhbCYgYikgeyByZXR1cm4gQ3JlZGVu
dGlhbEJhc2U6OmNvbXBhcmUoYSwgYik7IH0KIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Q3JlZGVudGlhbCYgYSwgY29uc3QgQ3JlZGVudGlhbCYgYikgeyByZXR1cm4gIShhID09IGIpOyB9
CiAgICAgCiB9OworCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3Jl
ZGVudGlhbENvY29hX2gKKyNkZWZpbmUgQ3JlZGVudGlhbENvY29hX2gKKworI2luY2x1ZGUgIkNy
ZWRlbnRpYWxCYXNlLmgiCisjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQmFzZS5oPgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1hY3JvIG9uY2UgaXQg
aXMgbm90IHVzZWQgaW4gV2ViS2l0LgorI2RlZmluZSBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19T
VVBQT1JURUQgMQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gQ3JlZGVudGlhbFR5cGUg
eworICAgIENyZWRlbnRpYWxUeXBlUGFzc3dvcmQsCisgICAgQ3JlZGVudGlhbFR5cGVDbGllbnRD
ZXJ0aWZpY2F0ZQorfTsKKworY2xhc3MgQ3JlZGVudGlhbCA6IHB1YmxpYyBDcmVkZW50aWFsQmFz
ZSB7CitwdWJsaWM6CisgICAgQ3JlZGVudGlhbCgpCisgICAgICAgIDogQ3JlZGVudGlhbEJhc2Uo
KQorICAgICAgICAsIG1fdHlwZShDcmVkZW50aWFsVHlwZVBhc3N3b3JkKQorICAgIHsKKyAgICB9
CisKKyAgICBDcmVkZW50aWFsKGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNz
d29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQorICAgICAgICA6IENyZWRl
bnRpYWxCYXNlKHVzZXIsIHBhc3N3b3JkLCBwZXJzaXN0ZW5jZSkKKyAgICAgICAgLCBtX3R5cGUo
Q3JlZGVudGlhbFR5cGVQYXNzd29yZCkKKyAgICB7CisgICAgfQorCisgICAgQ3JlZGVudGlhbChj
b25zdCBDcmVkZW50aWFsJiBvcmlnaW5hbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3Rl
bmNlKQorICAgICAgICA6IENyZWRlbnRpYWxCYXNlKG9yaWdpbmFsLCBwZXJzaXN0ZW5jZSkKKyAg
ICAgICAgLCBtX3R5cGUob3JpZ2luYWwubV90eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBDcmVk
ZW50aWFsKFNlY0lkZW50aXR5UmVmIGlkZW50aXR5LCBDRkFycmF5UmVmIGNlcnRpZmljYXRlcywg
Q3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKTsKKworICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0OworCisgICAgU2VjSWRlbnRpdHlSZWYgaWRlbnRpdHkoKSBjb25zdDsKKyAgICBDRkFy
cmF5UmVmIGNlcnRpZmljYXRlcygpIGNvbnN0OworICAgIENyZWRlbnRpYWxUeXBlIHR5cGUoKSBj
b25zdDsKKworICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBDcmVkZW50aWFs
JiwgY29uc3QgQ3JlZGVudGlhbCYpOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxTZWNJZGVu
dGl0eVJlZj4gbV9pZGVudGl0eTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbV9jZXJ0aWZp
Y2F0ZXM7CisgICAgQ3JlZGVudGlhbFR5cGUgbV90eXBlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gQ3JlZGVudGlhbENvY29hX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29h
Lm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9DcmVkZW50aWFsQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ3JlZGVudGlhbENv
Y29hLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChT
ZWNJZGVudGl0eVJlZiBpZGVudGl0eSwgQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZXMsIENyZWRlbnRp
YWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSkKKyAgICA6IENyZWRlbnRpYWxCYXNlKGVtcHR5U3Ry
aW5nKCksIGVtcHR5U3RyaW5nKCksIHBlcnNpc3RlbmNlKQorICAgICwgbV9pZGVudGl0eShpZGVu
dGl0eSkKKyAgICAsIG1fY2VydGlmaWNhdGVzKGNlcnRpZmljYXRlcykKKyAgICAsIG1fdHlwZShD
cmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlKQoreworfQorCitib29sIENyZWRlbnRpYWw6
OmlzRW1wdHkoKSBjb25zdAoreworICAgIGlmIChtX3R5cGUgPT0gQ3JlZGVudGlhbFR5cGVDbGll
bnRDZXJ0aWZpY2F0ZSAmJiAobV9pZGVudGl0eSB8fCBtX2NlcnRpZmljYXRlcykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBDcmVkZW50aWFsQmFzZTo6aXNFbXB0eSgpOwor
fQorCitTZWNJZGVudGl0eVJlZiBDcmVkZW50aWFsOjppZGVudGl0eSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faWRlbnRpdHkuZ2V0KCk7Cit9CisgICAgCitDRkFycmF5UmVmIENyZWRlbnRpYWw6
OmNlcnRpZmljYXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2VydGlmaWNhdGVzLmdldCgp
OworfQorICAgIAorQ3JlZGVudGlhbFR5cGUgQ3JlZGVudGlhbDo6dHlwZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fdHlwZTsKK30KKworYm9vbCBDcmVkZW50aWFsOjpwbGF0Zm9ybUNvbXBhcmUo
Y29uc3QgQ3JlZGVudGlhbCYgYSwgY29uc3QgQ3JlZGVudGlhbCYgYikKK3sKKyAgICBpZiAoYS50
eXBlKCkgIT0gQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSB8fCBiLnR5cGUoKSAhPSBD
cmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBGSVhNRTogSXMgcG9pbnRlciBjb21wYXJpc29uIG9mIHRoZSBpZGVudGl0eSBhbmQg
Y2VydGlmaWNhdGVzIHByb3BlcnRpZXMgc3VmZmljaWVudD8KKyAgICBpZiAoYS5pZGVudGl0eSgp
ICE9IGIuaWRlbnRpdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhLmNlcnRp
ZmljYXRlcygpICE9IGIuY2VydGlmaWNhdGVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNh
dGlvbk1hYy5tbQkocmV2aXNpb24gMTcxNzE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0Miwx
NCArMjQyLDEyIEBAIE5TVVJMQ3JlZGVudGlhbCAqbWFjKGNvbnN0IENyZWRlbnRpYWwmIGMKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotI2lmIENFUlRJRklDQVRF
X0NSRURFTlRJQUxTX1NVUFBPUlRFRAogICAgIGlmIChjb3JlQ3JlZGVudGlhbC50eXBlKCkgPT0g
Q3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSkgewogICAgICAgICByZXR1cm4gW1tbTlNV
UkxDcmVkZW50aWFsIGFsbG9jXSBpbml0V2l0aElkZW50aXR5OmNvcmVDcmVkZW50aWFsLmlkZW50
aXR5KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRp
ZmljYXRlczooTlNBcnJheSAqKWNvcmVDcmVkZW50aWFsLmNlcnRpZmljYXRlcygpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdGVuY2U6cGVyc2lz
dGVuY2VdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0
b3JlbGVhc2VdOwogICAgIH0KLSNlbmRpZgogCiAgICAgcmV0dXJuIFtbW05TVVJMQ3JlZGVudGlh
bCBhbGxvY10gaW5pdFdpdGhVc2VyOmNvcmVDcmVkZW50aWFsLnVzZXIoKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOmNvcmVDcmVkZW50aWFsLnBhc3N3
b3JkKCkKQEAgLTI3OCwxMSArMjc2LDkgQEAgQ3JlZGVudGlhbCBjb3JlKE5TVVJMQ3JlZGVudGlh
bCAqbWFjQ3JlZAogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0j
aWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECiAgICAgU2VjSWRlbnRpdHlSZWYg
aWRlbnRpdHkgPSBbbWFjQ3JlZGVudGlhbCBpZGVudGl0eV07CiAgICAgaWYgKGlkZW50aXR5KQog
ICAgICAgICByZXR1cm4gQ3JlZGVudGlhbChpZGVudGl0eSwgKENGQXJyYXlSZWYpW21hY0NyZWRl
bnRpYWwgY2VydGlmaWNhdGVzXSwgcGVyc2lzdGVuY2UpOwotI2VuZGlmCiAgICAgCiAgICAgcmV0
dXJuIENyZWRlbnRpYWwoW21hY0NyZWRlbnRpYWwgdXNlcl0sIFttYWNDcmVkZW50aWFsIHBhc3N3
b3JkXSwgcGVyc2lzdGVuY2UpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235665</attachid>
            <date>2014-07-28 23:30:09 -0700</date>
            <delta_ts>2014-07-29 01:51:32 -0700</delta_ts>
            <desc>II. Move the Cocoa-specific parts of CredentialBase into a Cocoa-specific Credential class</desc>
            <filename>135327-2_r2.diff</filename>
            <type>text/plain</type>
            <size>24034</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MTcyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE0LTA3LTI4ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZWQgdGhlIENvY29hLXNwZWNp
ZmljIHBhcnRzIG9mIENyZWRlbnRpYWxCYXNlIGludG8gYSBDb2NvYS1zcGVjaWZpYyBDcmVkZW50
aWFsIGNsYXNzLgorICAgICAgICBXb3JrIHRvd2FyZHMgZml4aW5nIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUzMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOiBVcGRhdGVkIGZvciBmdW5jdGlvbnMgbW92ZWQgaW4gdGhl
IGNsYXNzIGhpZXJhcmNoeS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkZWQgQ3JlZGVudGlhbENvY29hLntoLG1tfS4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oOiBGb3IgQ29jb2EsIGluY2x1ZGUgQ3JlZGVudGlhbENv
Y29hLmggaW5zdGVhZCBvZiB0aGUgZ2VuZXJpYworICAgICAgICBjbGFzcy4KKyAgICAgICAgKFdl
YkNvcmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwpOiBSZW1vdmVkICNpZiBDRVJUSUZJQ0FURV9D
UkVERU5USUFMU19TVVBQT1JURUQgY29kZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OkNy
ZWRlbnRpYWxCYXNlKTogQ2hhbmdlZCB0byB1c2UgZW1wdHlTdHJpbmcgaW5zdGVhZCBvZiAiIiwg
cmVtb3ZlZAorICAgICAgICAjaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVEIGNv
ZGUuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFzZTo6aXNFbXB0eSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OmNvbXBhcmUpOiBSZW5hbWVkIG9wZXJh
dG9yPT0gdG8gdGhpcywgcmVtb3ZlZAorICAgICAgICAjaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElB
TFNfU1VQUE9SVEVEIGNvZGUsIGJ1dCBjaGFuZ2VkIHRoZSBlbmQgdG8gY2FsbCBwbGF0Zm9ybUNv
bXBhcmUuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFzZTo6aWRlbnRpdHkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OmNlcnRpZmljYXRlcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFzZTo6dHlwZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oOiBSZW1vdmVkICNp
ZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQgbWVtYmVycy4KKyAgICAgICAgKFdl
YkNvcmU6OkNyZWRlbnRpYWxCYXNlOjpwbGF0Zm9ybUNvbXBhcmUpOiBBZGRlZCBhIGJhc2UgaW1w
bGVtZW50YXRpb24gdGhhdCByZXR1cm5zIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cj09KTogQ2hhbmdlZCB0byB1c2UgQ3JlZGVudGlhbEJhc2U6OmNvbXBhcmUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwpOiBNb3ZlZCB0aGUgY29uc3RydWN0b3IgdGhhdCB0
YWtlcyBhbiBpZGVudGl0eSBhbmQKKyAgICAgICAgY2VydGlmaWNhdGVzIGhlcmUuCisgICAgICAg
IChXZWJDb3JlOjpDcmVkZW50aWFsOjppc0VtcHR5KTogTW92ZWQgaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNyZWRlbnRpYWw6OmlkZW50aXR5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
cmVkZW50aWFsOjpjZXJ0aWZpY2F0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRl
bnRpYWw6OnR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OnBsYXRm
b3JtQ29tcGFyZSk6IE1vdmVkIHRoZSBjb2RlIHRoYXQgY29tcGFyZXMgY2xpZW50LWNlcnRpZmlj
YXRlCisgICAgICAgIGNyZWRlbnRpYWxzIGhlcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1hYyk6IFJl
bW92ZWQgI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRCBndWFyZHMgaW4gdGhp
cyBDb2NvYS1vbmx5CisgICAgICAgIGZpbGUuCisgICAgICAgIChXZWJDb3JlOjpjb3JlKTogRGl0
dG8uCisKIDIwMTQtMDctMjggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbnRyb2R1Y2VkIENyZWRlbnRpYWxCYXNlIGFuZCBtYWRlIENyZWRlbnRpYWwgZGVyaXZl
IGZyb20gaXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNzE3MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEs
NyBAQCBfX1pOM1dURjZTdHJpbmdDMUVQSzEwX19DRlN0cmluZwogX19aTjdXZWJDb3JlMTBDbGll
bnRSZWN0QzFFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNf
OUZsb2F0UmVjdEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXYKK19fWk43V2ViQ29yZTEw
Q3JlZGVudGlhbEMxRVAyME9wYXF1ZVNlY0lkZW50aXR5UmVmUEs5X19DRkFycmF5TlNfMjFDcmVk
ZW50aWFsUGVyc2lzdGVuY2VFCiBfX1pON1dlYkNvcmUxMEZsb2F0UG9pbnRDMUVSSzdDR1BvaW50
CiBfX1pON1dlYkNvcmUxMEZsb2F0UG9pbnRDMUVSS05TXzhJbnRQb2ludEUKIF9fWk43V2ViQ29y
ZTEwRm9udEdseXBoczE1cmVsZWFzZUZvbnREYXRhRXYKQEAgLTMzNCw3ICszMzUsNiBAQCBfX1pO
N1dlYkNvcmUxNENhY2hlZFJlc291cmNlOWFkZENsaWVudEVQCiBfX1pON1dlYkNvcmUxNENsaWVu
dFJlY3RMaXN0QzFFUktOM1dURjZWZWN0b3JJTlNfOUZsb2F0UXVhZEVMbTBFTlMxXzE1Q3Jhc2hP
bk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFdgogX19aTjdXZWJD
b3JlMTRDbGllbnRSZWN0TGlzdEQxRXYKLV9fWk43V2ViQ29yZTE0Q3JlZGVudGlhbEJhc2VDMkVQ
MjBPcGFxdWVTZWNJZGVudGl0eVJlZlBLOV9fQ0ZBcnJheU5TXzIxQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlRQogX19aTjdXZWJDb3JlMTRDcmVkZW50aWFsQmFzZUMyRVJLTjNXVEY2U3RyaW5nRVM0X05T
XzIxQ3JlZGVudGlhbFBlcnNpc3RlbmNlRQogX19aTjdXZWJDb3JlMTRDcmVkZW50aWFsQmFzZUMy
RXYKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMGNvbW1pdERhdGFFUEtjbQpAQCAtMTUz
NSw2ICsxNTM1LDEwIEBAIF9fWk43V2ViQ29yZTl0b0VsZW1lbnRFTjNKU0M3SlNWYWx1ZUUKIF9f
Wk43V2ViQ29yZTl1bmlvblJlY3RFUktOM1dURjZWZWN0b3JJTlNfOUZsb2F0UmVjdEVMbTBFTlMw
XzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pOSzNKU0M4QmluZGluZ3MxMFJvb3RPYmplY3QxMmds
b2JhbE9iamVjdEV2CiBfX1pOSzNXVEY2U3RyaW5nMTRjcmVhdGVDRlN0cmluZ0V2CitfX1pOSzdX
ZWJDb3JlMTBDcmVkZW50aWFsMTJjZXJ0aWZpY2F0ZXNFdgorX19aTks3V2ViQ29yZTEwQ3JlZGVu
dGlhbDR0eXBlRXYKK19fWk5LN1dlYkNvcmUxMENyZWRlbnRpYWw3aXNFbXB0eUV2CitfX1pOSzdX
ZWJDb3JlMTBDcmVkZW50aWFsOGlkZW50aXR5RXYKIF9fWk5LN1dlYkNvcmUxMEZsb2F0UG9pbnRj
djdDR1BvaW50RXYKIF9fWk5LN1dlYkNvcmUxMEZvbnRHbHlwaHMxN3JlYWxpemVGb250RGF0YUF0
RVJLTlNfMTVGb250RGVzY3JpcHRpb25FagogX19aTks3V2ViQ29yZTEwTGF5b3V0UmVjdDhjb250
YWluc0VSS1MwXwpAQCAtMTY1NCwxMSArMTY1OCw3IEBAIF9fWk5LN1dlYkNvcmUxM1Jlc291cmNl
RXJyb3I3bnNFcnJvckV2CiBfX1pOSzdXZWJDb3JlMTNSZXNvdXJjZUVycm9yY3ZQN05TRXJyb3JF
dgogX19aTks3V2ViQ29yZTE0Q3JlZGVudGlhbEJhc2UxMWhhc1Bhc3N3b3JkRXYKIF9fWk5LN1dl
YkNvcmUxNENyZWRlbnRpYWxCYXNlMTFwZXJzaXN0ZW5jZUV2Ci1fX1pOSzdXZWJDb3JlMTRDcmVk
ZW50aWFsQmFzZTEyY2VydGlmaWNhdGVzRXYKLV9fWk5LN1dlYkNvcmUxNENyZWRlbnRpYWxCYXNl
NHR5cGVFdgogX19aTks3V2ViQ29yZTE0Q3JlZGVudGlhbEJhc2U0dXNlckV2Ci1fX1pOSzdXZWJD
b3JlMTRDcmVkZW50aWFsQmFzZTdpc0VtcHR5RXYKLV9fWk5LN1dlYkNvcmUxNENyZWRlbnRpYWxC
YXNlOGlkZW50aXR5RXYKIF9fWk5LN1dlYkNvcmUxNENyZWRlbnRpYWxCYXNlOHBhc3N3b3JkRXYK
IF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTByZXF1ZXN0VVJMRXYKIF9fWk5LN1dlYkNv
cmUxNERvY3VtZW50TG9hZGVyMTFmcmFtZUxvYWRlckV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzE3MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTEzMTQsNiArMTMxNCw4IEBACiAJCTM3OTE5QzIzMEI3RDE4ODYwMEE1
Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTE5QzIxMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0
ZXJhdG9yLmNwcCAqLzsgfTsKIAkJMzc5MTlDMjQwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9u
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3OTE5QzIyMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMzc5MjkxN0ExOTg1RUYzOTAwRjRCNjYx
IC8qIENyZWRlbnRpYWxCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzkyOTE3ODE5ODVFRjM5MDBGNEI2NjEgLyogQ3JlZGVudGlhbEJhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzNzkyOTE3
RDE5ODc2NzhGMDBGNEI2NjEgLyogQ3JlZGVudGlhbENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5MjkxN0IxOTg3Njc4RjAwRjRCNjYxIC8q
IENyZWRlbnRpYWxDb2NvYS5tbSAqLzsgfTsKKwkJMzc5MjkxN0UxOTg3Njc4RjAwRjRCNjYxIC8q
IENyZWRlbnRpYWxDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc5MjkxN0MxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3OTkxOTk2
MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzk5MTk5NDEyMDBEREY0MDBFQTA0MUMgLyog
V09GRkZpbGVGb3JtYXQuY3BwICovOyB9OwogCQkzNzk5MTk5NzEyMDBEREY0MDBFQTA0MUMgLyog
V09GRkZpbGVGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3OTkxOTk1MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5oICovOyB9
OwogCQkzNzk5MTlCMjEyMDBERTUwMDBFQTA0MUMgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTkxOUIxMTIwMERFNTAwMEVB
MDQxQyAvKiBsaWJ6LmR5bGliICovOyB9OwpAQCAtODMzOSw2ICs4MzQxLDggQEAKIAkJMzc5MTlD
MjEwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25J
dGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25JdGVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzkyOTE3ODE5ODVFRjM5MDBG
NEI2NjEgLyogQ3JlZGVudGlhbEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3JlZGVudGlhbEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc5Mjkx
N0IxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IENyZWRlbnRpYWxDb2NvYS5tbTsgcGF0aCA9IGNvY29h
L0NyZWRlbnRpYWxDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc5Mjkx
N0MxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDcmVkZW50aWFsQ29jb2EuaDsgcGF0aCA9IGNvY29hL0NyZWRlbnRp
YWxDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzk5MTk5NDEyMDBEREY0
MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV09GRkZpbGVGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzNzk5MTk5NTEyMDBEREY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV09GRkZpbGVGb3JtYXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzc5OTE5QjExMjAwREU1MDAwRUEwNDFDIC8qIGxpYnouZHlsaWIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnouZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJ6
LmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwpAQCAtMTY3NjUsNiArMTY3Njks
OCBAQAogCQk3RTdERTFGRTE5NUNFRjJEMDAzNTM2M0IgLyogY29jb2EgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTM3OTI5MTdDMTk4NzY3OEYwMEY0QjY2
MSAvKiBDcmVkZW50aWFsQ29jb2EuaCAqLywKKwkJCQkzNzkyOTE3QjE5ODc2NzhGMDBGNEI2NjEg
LyogQ3JlZGVudGlhbENvY29hLm1tICovLAogCQkJCTM3MkFEQTM3MTk3RjQ3QjkwMEZDNTAxRSAv
KiBQcm90ZWN0aW9uU3BhY2VDb2NvYS5oICovLAogCQkJCTM3MkFEQTM5MTk3RjY4NzYwMEZDNTAx
RSAvKiBQcm90ZWN0aW9uU3BhY2VDb2NvYS5tbSAqLywKIAkJCQk3RTdERTFGQzE5NUNFRjI2MDAz
NTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi8sCkBAIC0yNTY3MSw2ICsyNTY3Nyw3
IEBACiAJCQkJQkNFQTQ4NjQwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxpbmVCcmVhay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQUJCNTQxOUYwQUNEREZFNDAwMjgyMEVCIC8qIFJlbmRlckxpc3RC
b3guaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3QTUyMEExOTFBNTIwMEE4RUY1RiAvKiBSZW5k
ZXJMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzc5MjkxN0UxOTg3Njc4RjAwRjRCNjYx
IC8qIENyZWRlbnRpYWxDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdBNTAwQTE5MUE1
MjAwQThFRjVGIC8qIFJlbmRlckxpc3RNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTYw
MjhGMEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MzkwNDZEODEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MQmxvY2suaCBpbiBIZWFk
ZXJzICovLApAQCAtMjg2NjAsNiArMjg2NjcsNyBAQAogCQkJCUIyRkEzREM0MEFCNzVBNkYwMDBF
NUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjJGQTNEQzYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNBYnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQzgwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMzc5MjkxN0QxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUIyRkEzRENBMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzREND
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVs
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzk2RDhEMEIzQUYyQjcwMDVFODBFQyAvKiBKU1NW
R1BhdGhTZWdDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaAkocmV2aXNpb24gMTcxNzIyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDggKzI2LDE1IEBACiAjaWZuZGVmIENyZWRlbnRpYWxfaAogI2RlZmluZSBDcmVkZW50
aWFsX2gKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkNyZWRlbnRpYWxDb2NvYS5o
IgorI2Vsc2UKKwogI2luY2x1ZGUgIkNyZWRlbnRpYWxCYXNlLmgiCiAKKy8vIEZJWE1FOiBSZW1v
dmUgdGhpcyBtYWNybyBvbmNlIGl0IGlzIG5vdCB1c2VkIGluIFdlYktpdC4KKyNkZWZpbmUgQ0VS
VElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVEIDAKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDcmVkZW50aWFsIDogcHVibGljIENyZWRlbnRpYWxCYXNlIHsKQEAgLTQ2LDE1ICs1
MywxMCBAQCBwdWJsaWM6CiAgICAgICAgIDogQ3JlZGVudGlhbEJhc2Uob3JpZ2luYWwsIHBlcnNp
c3RlbmNlKQogICAgIHsKICAgICB9Ci0KLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQ
T1JURUQKLSAgICBDcmVkZW50aWFsKFNlY0lkZW50aXR5UmVmIGlkZW50aXR5LCBDRkFycmF5UmVm
IGNlcnRpZmljYXRlcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQotICAgICAg
ICA6IENyZWRlbnRpYWxCYXNlKGlkZW50aXR5LCBjZXJ0aWZpY2F0ZXMsIHBlcnNpc3RlbmNlKQot
ICAgIHsKLSAgICB9Ci0jZW5kaWYKIH07CiAKIH0KIAorI2VuZGlmCisKICNlbmRpZiAvLyBDcmVk
ZW50aWFsX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlh
bEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbEJhc2UuY3BwCShyZXZpc2lvbiAxNzE3MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
MjQgKzMzLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIE5lZWQgdG8gZW5mb3JjZSBlbXB0
eSwgbm9uLW51bGwgc3RyaW5ncyBkdWUgdG8gdGhlIHBpY2tpbmVzcyBvZiB0aGUgU3RyaW5nID09
IFN0cmluZyBvcGVyYXRvcgogLy8gY29tYmluZWQgd2l0aCB0aGUgc2VtYW50aWNzIG9mIHRoZSBT
dHJpbmcoTlNTdHJpbmcqKSBjb25zdHJ1Y3RvcgogQ3JlZGVudGlhbEJhc2U6OkNyZWRlbnRpYWxC
YXNlKCkKLSAgICA6IG1fdXNlcigiIikKLSAgICAsIG1fcGFzc3dvcmQoIiIpCisgICAgOiBtX3Vz
ZXIoZW1wdHlTdHJpbmcoKSkKKyAgICAsIG1fcGFzc3dvcmQoZW1wdHlTdHJpbmcoKSkKICAgICAs
IG1fcGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkKLSNpZiBDRVJUSUZJQ0FU
RV9DUkVERU5USUFMU19TVVBQT1JURUQKLSAgICAsIG1fdHlwZShDcmVkZW50aWFsVHlwZVBhc3N3
b3JkKQotI2VuZGlmICAgIAogewogfQogICAgCiAvLyBOZWVkIHRvIGVuZm9yY2UgZW1wdHksIG5v
bi1udWxsIHN0cmluZ3MgZHVlIHRvIHRoZSBwaWNraW5lc3Mgb2YgdGhlIFN0cmluZyA9PSBTdHJp
bmcgb3BlcmF0b3IKIC8vIGNvbWJpbmVkIHdpdGggdGhlIHNlbWFudGljcyBvZiB0aGUgU3RyaW5n
KE5TU3RyaW5nKikgY29uc3RydWN0b3IKIENyZWRlbnRpYWxCYXNlOjpDcmVkZW50aWFsQmFzZShj
b25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIENyZWRlbnRpYWxQZXJz
aXN0ZW5jZSBwZXJzaXN0ZW5jZSkKLSAgICA6IG1fdXNlcih1c2VyLmxlbmd0aCgpID8gdXNlciA6
ICIiKQotICAgICwgbV9wYXNzd29yZChwYXNzd29yZC5sZW5ndGgoKSA/IHBhc3N3b3JkIDogIiIp
CisgICAgOiBtX3VzZXIodXNlci5sZW5ndGgoKSA/IHVzZXIgOiBlbXB0eVN0cmluZygpKQorICAg
ICwgbV9wYXNzd29yZChwYXNzd29yZC5sZW5ndGgoKSA/IHBhc3N3b3JkIDogZW1wdHlTdHJpbmco
KSkKICAgICAsIG1fcGVyc2lzdGVuY2UocGVyc2lzdGVuY2UpCi0jaWYgQ0VSVElGSUNBVEVfQ1JF
REVOVElBTFNfU1VQUE9SVEVECi0gICAgLCBtX3R5cGUoQ3JlZGVudGlhbFR5cGVQYXNzd29yZCkK
LSNlbmRpZgogewogfQogICAgIApAQCAtNTgsMjEgKzUyLDExIEBAIENyZWRlbnRpYWxCYXNlOjpD
cmVkZW50aWFsQmFzZShjb25zdCBDcmUKICAgICA6IG1fdXNlcihvcmlnaW5hbC51c2VyKCkpCiAg
ICAgLCBtX3Bhc3N3b3JkKG9yaWdpbmFsLnBhc3N3b3JkKCkpCiAgICAgLCBtX3BlcnNpc3RlbmNl
KHBlcnNpc3RlbmNlKQotI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAotICAg
ICwgbV9pZGVudGl0eShvcmlnaW5hbC5pZGVudGl0eSgpKQotICAgICwgbV9jZXJ0aWZpY2F0ZXMo
b3JpZ2luYWwuY2VydGlmaWNhdGVzKCkpCi0gICAgLCBtX3R5cGUob3JpZ2luYWwudHlwZSgpKQot
I2VuZGlmCiB7CiB9CiAKIGJvb2wgQ3JlZGVudGlhbEJhc2U6OmlzRW1wdHkoKSBjb25zdAogewot
I2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAotICAgIGlmIChtX3R5cGUgPT0g
Q3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSAmJiAobV9pZGVudGl0eSB8fCBtX2NlcnRp
ZmljYXRlcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotICAgIAogICAgIHJldHVy
biBtX3VzZXIuaXNFbXB0eSgpICYmIG1fcGFzc3dvcmQuaXNFbXB0eSgpOwogfQogICAgIApAQCAt
OTUsNzAgKzc5LDE5IEBAIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBDcmVkZW50aWFsQmFzZTo6cGUK
IHsgCiAgICAgcmV0dXJuIG1fcGVyc2lzdGVuY2U7IAogfQotICAgIAotI2lmIENFUlRJRklDQVRF
X0NSRURFTlRJQUxTX1NVUFBPUlRFRAotQ3JlZGVudGlhbEJhc2U6OkNyZWRlbnRpYWxCYXNlKFNl
Y0lkZW50aXR5UmVmIGlkZW50aXR5LCBDRkFycmF5UmVmIGNlcnRpZmljYXRlcywgQ3JlZGVudGlh
bFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQotICAgIDogbV91c2VyKCIiKQotICAgICwgbV9wYXNz
d29yZCgiIikKLSAgICAsIG1fcGVyc2lzdGVuY2UocGVyc2lzdGVuY2UpCi0gICAgLCBtX2lkZW50
aXR5KGlkZW50aXR5KQotICAgICwgbV9jZXJ0aWZpY2F0ZXMoY2VydGlmaWNhdGVzKQotICAgICwg
bV90eXBlKENyZWRlbnRpYWxUeXBlQ2xpZW50Q2VydGlmaWNhdGUpCi17Ci19Ci0gICAgCi1TZWNJ
ZGVudGl0eVJlZiBDcmVkZW50aWFsQmFzZTo6aWRlbnRpdHkoKSBjb25zdAotewotICAgIHJldHVy
biBtX2lkZW50aXR5LmdldCgpOwotfQotICAgIAotQ0ZBcnJheVJlZiBDcmVkZW50aWFsQmFzZTo6
Y2VydGlmaWNhdGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jZXJ0aWZpY2F0ZXMuZ2V0KCk7
Ci19Ci0gICAgCi1DcmVkZW50aWFsVHlwZSBDcmVkZW50aWFsQmFzZTo6dHlwZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fdHlwZTsKLX0KLSNlbmRpZgogCi1ib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q3JlZGVudGlhbCYgYSwgY29uc3QgQ3JlZGVudGlhbCYgYikKK2Jvb2wgQ3JlZGVudGlhbEJhc2U6
OmNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYgYSwgY29uc3QgQ3JlZGVudGlhbCYgYikKIHsKICAg
ICAvLyBDaGVjayBwZXJzaXN0ZW5jZSBmaXJzdCBzaW5jZSBhbGwgY3JlZGVudGlhbCB0eXBlcwog
ICAgIC8vIGhhdmUgdGhlIHBlcnNpc3RlbmNlIHByb3BlcnR5LgogICAgIGlmIChhLnBlcnNpc3Rl
bmNlKCkgIT0gYi5wZXJzaXN0ZW5jZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0j
aWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECi0gICAgQ3JlZGVudGlhbFR5cGUg
YVR5cGUgPSBhLnR5cGUoKTsKLSAgICBpZiAoYVR5cGUgIT0gYi50eXBlKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBDb21wYXJpbmcgaWRlbnRpdHkgYW5kIGNlcnRpZmlj
YXRlIGNoYWluIHBvaW50ZXJzIGlzIHZhbGlkIG9ubHkKLSAgICAvLyBmb3IgY2xpZW50IGNlcnRp
ZmljYXRlIHR5cGUgY3JlZGVudGlhbHMuCi0gICAgLy8KLSAgICAvLyBGSVhNRTogSXMgcG9pbnRl
ciBjb21wYXJpc29uIG9mIHRoZSBpZGVudGl0eSBhbmQgY2VydGlmaWNhdGVzIHByb3BlcnRpZXMg
c3VmZmljaWVudD8KLSAgICBpZiAoYVR5cGUgPT0gQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZp
Y2F0ZSkgewotICAgICAgICBpZiAoYS5pZGVudGl0eSgpICE9IGIuaWRlbnRpdHkoKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGEuY2VydGlmaWNhdGVzKCkgIT0gYi5j
ZXJ0aWZpY2F0ZXMoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAg
ICAgIC8vIFdlIG9ubHkgbmVlZCB0byBjaGVjayBpZGVudGl0eSBhbmQgY2VydGlmaWNhdGVzIHRv
IGNvbXBhcmUKLSAgICAgICAgLy8gY2xpZW50IGNlcnRpZmljYXRlIGJhc2VkIGNyZWRlbnRpYWxz
LgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgQVNTRVJUKGEudHlwZSgp
ID09IENyZWRlbnRpYWxUeXBlUGFzc3dvcmQgJiYgYi50eXBlKCkgPT0gQ3JlZGVudGlhbFR5cGVQ
YXNzd29yZCk7Ci0jZW5kaWYgICAgCi0gICAgCiAgICAgaWYgKGEudXNlcigpICE9IGIudXNlcigp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGEucGFzc3dvcmQoKSAhPSBiLnBhc3N3
b3JkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIENyZWRlbnRpYWw6OnBsYXRmb3JtQ29tcGFyZShhLCBiKTsKIH0KIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJh
c2UuaAkocmV2aXNpb24gMTcxNzIyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9DcmVkZW50aWFsQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsNiBAQAogCiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNkZWZpbmUgQ0VSVElGSUNBVEVfQ1JF
REVOVElBTFNfU1VQUE9SVEVEIChQTEFURk9STShDT0NPQSkpCi0KLSNpZiBDRVJUSUZJQ0FURV9D
UkVERU5USUFMU19TVVBQT1JURUQKLSNpbmNsdWRlIDxTZWN1cml0eS9TZWNCYXNlLmg+Ci0jaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ3JlZGVudGlhbDsKQEAgLTQ1LDEzICszOCw2IEBAIGVudW0gQ3JlZGVudGlhbFBlcnNp
c3RlbmNlIHsKICAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnQKIH07CiAKLSNpZiBD
RVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKLWVudW0gQ3JlZGVudGlhbFR5cGUgewot
ICAgIENyZWRlbnRpYWxUeXBlUGFzc3dvcmQsCi0gICAgQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0
aWZpY2F0ZQotfTsKLSNlbmRpZgotCiBjbGFzcyBDcmVkZW50aWFsQmFzZSB7CiAKIHB1YmxpYzoK
QEAgLTYyLDMzICs0OCwyNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0
OwogICAgIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSgpIGNvbnN0OwogICAgIAot
I2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAotICAgIFNlY0lkZW50aXR5UmVm
IGlkZW50aXR5KCkgY29uc3Q7Ci0gICAgQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZXMoKSBjb25zdDsK
LSAgICBDcmVkZW50aWFsVHlwZSB0eXBlKCkgY29uc3Q7Ci0jZW5kaWYgICAgCi0gICAgCisgICAg
c3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlhbCYp
OworCiBwcm90ZWN0ZWQ6CiAgICAgQ3JlZGVudGlhbEJhc2UoKTsKICAgICBDcmVkZW50aWFsQmFz
ZShjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZSk7CiAgICAgQ3JlZGVudGlhbEJhc2UoY29uc3QgQ3JlZGVudGlhbCYgb3JpZ2lu
YWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7Ci0jaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNf
U1VQUE9SVEVECi0gICAgQ3JlZGVudGlhbEJhc2UoU2VjSWRlbnRpdHlSZWYsIENGQXJyYXlSZWYg
Y2VydGlmaWNhdGVzLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwotI2VuZGlmCi0gICAgCisKKyAg
ICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IENy
ZWRlbnRpYWwmKSB7IHJldHVybiB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdXNl
cjsKICAgICBTdHJpbmcgbV9wYXNzd29yZDsKICAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2UgbV9w
ZXJzaXN0ZW5jZTsKLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKLSAgICBS
ZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+IG1faWRlbnRpdHk7Ci0gICAgUmV0YWluUHRyPENGQXJy
YXlSZWY+IG1fY2VydGlmaWNhdGVzOwotICAgIENyZWRlbnRpYWxUeXBlIG1fdHlwZTsKLSNlbmRp
ZgogfTsKIAotYm9vbCBvcGVyYXRvcj09KGNvbnN0IENyZWRlbnRpYWwmIGEsIGNvbnN0IENyZWRl
bnRpYWwmIGIpOworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDcmVkZW50aWFsJiBhLCBj
b25zdCBDcmVkZW50aWFsJiBiKSB7IHJldHVybiBDcmVkZW50aWFsQmFzZTo6Y29tcGFyZShhLCBi
KTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDcmVkZW50aWFsJiBhLCBjb25zdCBD
cmVkZW50aWFsJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KICAgICAKIH07CisKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29j
b2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0NyZWRlbnRpYWxDb2NvYS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDcmVkZW50aWFsQ29jb2FfaAorI2RlZmlu
ZSBDcmVkZW50aWFsQ29jb2FfaAorCisjaW5jbHVkZSAiQ3JlZGVudGlhbEJhc2UuaCIKKyNpbmNs
dWRlIDxTZWN1cml0eS9TZWNCYXNlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgbWFjcm8gb25jZSBpdCBpcyBub3QgdXNlZCBpbiBXZWJLaXQu
CisjZGVmaW5lIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRCAxCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworZW51bSBDcmVkZW50aWFsVHlwZSB7CisgICAgQ3JlZGVudGlhbFR5cGVQ
YXNzd29yZCwKKyAgICBDcmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlCit9OworCitjbGFz
cyBDcmVkZW50aWFsIDogcHVibGljIENyZWRlbnRpYWxCYXNlIHsKK3B1YmxpYzoKKyAgICBDcmVk
ZW50aWFsKCkKKyAgICAgICAgOiBDcmVkZW50aWFsQmFzZSgpCisgICAgICAgICwgbV90eXBlKENy
ZWRlbnRpYWxUeXBlUGFzc3dvcmQpCisgICAgeworICAgIH0KKworICAgIENyZWRlbnRpYWwoY29u
c3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lz
dGVuY2UgcGVyc2lzdGVuY2UpCisgICAgICAgIDogQ3JlZGVudGlhbEJhc2UodXNlciwgcGFzc3dv
cmQsIHBlcnNpc3RlbmNlKQorICAgICAgICAsIG1fdHlwZShDcmVkZW50aWFsVHlwZVBhc3N3b3Jk
KQorICAgIHsKKyAgICB9CisKKyAgICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmIG9yaWdp
bmFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2UpCisgICAgICAgIDogQ3JlZGVu
dGlhbEJhc2Uob3JpZ2luYWwsIHBlcnNpc3RlbmNlKQorICAgICAgICAsIG1fdHlwZShvcmlnaW5h
bC5tX3R5cGUpCisgICAgeworICAgIH0KKworICAgIENyZWRlbnRpYWwoU2VjSWRlbnRpdHlSZWYs
IENGQXJyYXlSZWYgY2VydGlmaWNhdGVzLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOworCisgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3Q7CisKKyAgICBTZWNJZGVudGl0eVJlZiBpZGVudGl0eSgpIGNv
bnN0OworICAgIENGQXJyYXlSZWYgY2VydGlmaWNhdGVzKCkgY29uc3Q7CisgICAgQ3JlZGVudGlh
bFR5cGUgdHlwZSgpIGNvbnN0OworCisgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNv
bnN0IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50aWFsJik7CisKK3ByaXZhdGU6CisgICAgUmV0
YWluUHRyPFNlY0lkZW50aXR5UmVmPiBtX2lkZW50aXR5OworICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBtX2NlcnRpZmljYXRlczsKKyAgICBDcmVkZW50aWFsVHlwZSBtX3R5cGU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDcmVkZW50aWFsQ29jb2FfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
cmVkZW50aWFsQ29jb2EubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJDcmVkZW50aWFsQ29jb2EuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDcmVkZW50aWFs
OjpDcmVkZW50aWFsKFNlY0lkZW50aXR5UmVmIGlkZW50aXR5LCBDRkFycmF5UmVmIGNlcnRpZmlj
YXRlcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQorICAgIDogQ3JlZGVudGlh
bEJhc2UoZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgcGVyc2lzdGVuY2UpCisgICAgLCBt
X2lkZW50aXR5KGlkZW50aXR5KQorICAgICwgbV9jZXJ0aWZpY2F0ZXMoY2VydGlmaWNhdGVzKQor
ICAgICwgbV90eXBlKENyZWRlbnRpYWxUeXBlQ2xpZW50Q2VydGlmaWNhdGUpCit7Cit9CisKK2Jv
b2wgQ3JlZGVudGlhbDo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHlwZSA9PSBDcmVk
ZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlICYmIChtX2lkZW50aXR5IHx8IG1fY2VydGlmaWNh
dGVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIENyZWRlbnRpYWxCYXNl
Ojppc0VtcHR5KCk7Cit9CisKK1NlY0lkZW50aXR5UmVmIENyZWRlbnRpYWw6OmlkZW50aXR5KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pZGVudGl0eS5nZXQoKTsKK30KKyAgICAKK0NGQXJyYXlS
ZWYgQ3JlZGVudGlhbDo6Y2VydGlmaWNhdGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jZXJ0
aWZpY2F0ZXMuZ2V0KCk7Cit9CisgICAgCitDcmVkZW50aWFsVHlwZSBDcmVkZW50aWFsOjp0eXBl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlOworfQorCitib29sIENyZWRlbnRpYWw6OnBs
YXRmb3JtQ29tcGFyZShjb25zdCBDcmVkZW50aWFsJiBhLCBjb25zdCBDcmVkZW50aWFsJiBiKQor
eworICAgIGlmIChhLnR5cGUoKSAhPSBDcmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlIHx8
IGIudHlwZSgpICE9IENyZWRlbnRpYWxUeXBlQ2xpZW50Q2VydGlmaWNhdGUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBJcyBwb2ludGVyIGNvbXBhcmlzb24gb2YgdGhl
IGlkZW50aXR5IGFuZCBjZXJ0aWZpY2F0ZXMgcHJvcGVydGllcyBzdWZmaWNpZW50PworICAgIGlm
IChhLmlkZW50aXR5KCkgIT0gYi5pZGVudGl0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKGEuY2VydGlmaWNhdGVzKCkgIT0gYi5jZXJ0aWZpY2F0ZXMoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0
aW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCShyZXZpc2lvbiAxNzE3MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjQyLDE0ICsyNDIsMTIgQEAgTlNVUkxDcmVkZW50aWFsICptYWMoY29uc3QgQ3Jl
ZGVudGlhbCYgYwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0j
aWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECiAgICAgaWYgKGNvcmVDcmVkZW50
aWFsLnR5cGUoKSA9PSBDcmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlKSB7CiAgICAgICAg
IHJldHVybiBbW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoSWRlbnRpdHk6Y29yZUNy
ZWRlbnRpYWwuaWRlbnRpdHkoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2VydGlmaWNhdGVzOihOU0FycmF5ICopY29yZUNyZWRlbnRpYWwuY2VydGlmaWNh
dGVzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJz
aXN0ZW5jZTpwZXJzaXN0ZW5jZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdXRvcmVsZWFzZV07CiAgICAgfQotI2VuZGlmCiAKICAgICByZXR1cm4gW1tb
TlNVUkxDcmVkZW50aWFsIGFsbG9jXSBpbml0V2l0aFVzZXI6Y29yZUNyZWRlbnRpYWwudXNlcigp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6Y29yZUNy
ZWRlbnRpYWwucGFzc3dvcmQoKQpAQCAtMjc4LDExICsyNzYsOSBAQCBDcmVkZW50aWFsIGNvcmUo
TlNVUkxDcmVkZW50aWFsICptYWNDcmVkCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiAKLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKICAgICBT
ZWNJZGVudGl0eVJlZiBpZGVudGl0eSA9IFttYWNDcmVkZW50aWFsIGlkZW50aXR5XTsKICAgICBp
ZiAoaWRlbnRpdHkpCiAgICAgICAgIHJldHVybiBDcmVkZW50aWFsKGlkZW50aXR5LCAoQ0ZBcnJh
eVJlZilbbWFjQ3JlZGVudGlhbCBjZXJ0aWZpY2F0ZXNdLCBwZXJzaXN0ZW5jZSk7Ci0jZW5kaWYK
ICAgICAKICAgICByZXR1cm4gQ3JlZGVudGlhbChbbWFjQ3JlZGVudGlhbCB1c2VyXSwgW21hY0Ny
ZWRlbnRpYWwgcGFzc3dvcmRdLCBwZXJzaXN0ZW5jZSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235670</attachid>
            <date>2014-07-29 01:51:32 -0700</date>
            <delta_ts>2014-07-29 01:57:32 -0700</delta_ts>
            <desc>II. Move the Cocoa-specific parts of CredentialBase into a Cocoa-specific Credential class</desc>
            <filename>135327-2_r3.diff</filename>
            <type>text/plain</type>
            <size>24049</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MTcyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE0LTA3LTI5ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZWQgdGhlIENvY29hLXNwZWNp
ZmljIHBhcnRzIG9mIENyZWRlbnRpYWxCYXNlIGludG8gYSBDb2NvYS1zcGVjaWZpYyBDcmVkZW50
aWFsIGNsYXNzLgorICAgICAgICBXb3JrIHRvd2FyZHMgZml4aW5nIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUzMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOiBVcGRhdGVkIGZvciBmdW5jdGlvbnMgbW92ZWQgaW4gdGhl
IGNsYXNzIGhpZXJhcmNoeS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkZWQgQ3JlZGVudGlhbENvY29hLntoLG1tfS4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oOiBGb3IgQ29jb2EsIGluY2x1ZGUgQ3JlZGVudGlhbENv
Y29hLmggaW5zdGVhZCBvZiB0aGUgZ2VuZXJpYworICAgICAgICBjbGFzcy4KKyAgICAgICAgKFdl
YkNvcmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwpOiBSZW1vdmVkICNpZiBDRVJUSUZJQ0FURV9D
UkVERU5USUFMU19TVVBQT1JURUQgY29kZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OkNy
ZWRlbnRpYWxCYXNlKTogQ2hhbmdlZCB0byB1c2UgZW1wdHlTdHJpbmcgaW5zdGVhZCBvZiAiIiwg
cmVtb3ZlZAorICAgICAgICAjaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVEIGNv
ZGUuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFzZTo6aXNFbXB0eSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OmNvbXBhcmUpOiBSZW5hbWVkIG9wZXJh
dG9yPT0gdG8gdGhpcywgcmVtb3ZlZAorICAgICAgICAjaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElB
TFNfU1VQUE9SVEVEIGNvZGUsIGJ1dCBjaGFuZ2VkIHRoZSBlbmQgdG8gY2FsbCBwbGF0Zm9ybUNv
bXBhcmUuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFzZTo6aWRlbnRpdHkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OmNlcnRpZmljYXRlcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFzZTo6dHlwZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oOiBSZW1vdmVkICNp
ZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQgbWVtYmVycy4KKyAgICAgICAgKFdl
YkNvcmU6OkNyZWRlbnRpYWxCYXNlOjpwbGF0Zm9ybUNvbXBhcmUpOiBBZGRlZCBhIGJhc2UgaW1w
bGVtZW50YXRpb24gdGhhdCByZXR1cm5zIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cj09KTogQ2hhbmdlZCB0byB1c2UgQ3JlZGVudGlhbEJhc2U6OmNvbXBhcmUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwpOiBNb3ZlZCB0aGUgY29uc3RydWN0b3IgdGhhdCB0
YWtlcyBhbiBpZGVudGl0eSBhbmQKKyAgICAgICAgY2VydGlmaWNhdGVzIGhlcmUuCisgICAgICAg
IChXZWJDb3JlOjpDcmVkZW50aWFsOjppc0VtcHR5KTogTW92ZWQgaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNyZWRlbnRpYWw6OmlkZW50aXR5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
cmVkZW50aWFsOjpjZXJ0aWZpY2F0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRl
bnRpYWw6OnR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OnBsYXRm
b3JtQ29tcGFyZSk6IE1vdmVkIHRoZSBjb2RlIHRoYXQgY29tcGFyZXMgY2xpZW50LWNlcnRpZmlj
YXRlCisgICAgICAgIGNyZWRlbnRpYWxzIGhlcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1hYyk6IFJl
bW92ZWQgI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRCBndWFyZHMgaW4gdGhp
cyBDb2NvYS1vbmx5CisgICAgICAgIGZpbGUuCisgICAgICAgIChXZWJDb3JlOjpjb3JlKTogRGl0
dG8uCisKIDIwMTQtMDctMjggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbnRyb2R1Y2VkIENyZWRlbnRpYWxCYXNlIGFuZCBtYWRlIENyZWRlbnRpYWwgZGVyaXZl
IGZyb20gaXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNzE3MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEs
NyBAQCBfX1pOM1dURjZTdHJpbmdDMUVQSzEwX19DRlN0cmluZwogX19aTjdXZWJDb3JlMTBDbGll
bnRSZWN0QzFFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNf
OUZsb2F0UmVjdEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXYKK19fWk43V2ViQ29yZTEw
Q3JlZGVudGlhbEMxRVAyME9wYXF1ZVNlY0lkZW50aXR5UmVmUEs5X19DRkFycmF5TlNfMjFDcmVk
ZW50aWFsUGVyc2lzdGVuY2VFCiBfX1pON1dlYkNvcmUxMEZsb2F0UG9pbnRDMUVSSzdDR1BvaW50
CiBfX1pON1dlYkNvcmUxMEZsb2F0UG9pbnRDMUVSS05TXzhJbnRQb2ludEUKIF9fWk43V2ViQ29y
ZTEwRm9udEdseXBoczE1cmVsZWFzZUZvbnREYXRhRXYKQEAgLTMzNCw3ICszMzUsNiBAQCBfX1pO
N1dlYkNvcmUxNENhY2hlZFJlc291cmNlOWFkZENsaWVudEVQCiBfX1pON1dlYkNvcmUxNENsaWVu
dFJlY3RMaXN0QzFFUktOM1dURjZWZWN0b3JJTlNfOUZsb2F0UXVhZEVMbTBFTlMxXzE1Q3Jhc2hP
bk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFdgogX19aTjdXZWJD
b3JlMTRDbGllbnRSZWN0TGlzdEQxRXYKLV9fWk43V2ViQ29yZTE0Q3JlZGVudGlhbEJhc2VDMkVQ
MjBPcGFxdWVTZWNJZGVudGl0eVJlZlBLOV9fQ0ZBcnJheU5TXzIxQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlRQogX19aTjdXZWJDb3JlMTRDcmVkZW50aWFsQmFzZUMyRVJLTjNXVEY2U3RyaW5nRVM0X05T
XzIxQ3JlZGVudGlhbFBlcnNpc3RlbmNlRQogX19aTjdXZWJDb3JlMTRDcmVkZW50aWFsQmFzZUMy
RXYKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMGNvbW1pdERhdGFFUEtjbQpAQCAtMTUz
NSw2ICsxNTM1LDEwIEBAIF9fWk43V2ViQ29yZTl0b0VsZW1lbnRFTjNKU0M3SlNWYWx1ZUUKIF9f
Wk43V2ViQ29yZTl1bmlvblJlY3RFUktOM1dURjZWZWN0b3JJTlNfOUZsb2F0UmVjdEVMbTBFTlMw
XzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pOSzNKU0M4QmluZGluZ3MxMFJvb3RPYmplY3QxMmds
b2JhbE9iamVjdEV2CiBfX1pOSzNXVEY2U3RyaW5nMTRjcmVhdGVDRlN0cmluZ0V2CitfX1pOSzdX
ZWJDb3JlMTBDcmVkZW50aWFsMTJjZXJ0aWZpY2F0ZXNFdgorX19aTks3V2ViQ29yZTEwQ3JlZGVu
dGlhbDR0eXBlRXYKK19fWk5LN1dlYkNvcmUxMENyZWRlbnRpYWw3aXNFbXB0eUV2CitfX1pOSzdX
ZWJDb3JlMTBDcmVkZW50aWFsOGlkZW50aXR5RXYKIF9fWk5LN1dlYkNvcmUxMEZsb2F0UG9pbnRj
djdDR1BvaW50RXYKIF9fWk5LN1dlYkNvcmUxMEZvbnRHbHlwaHMxN3JlYWxpemVGb250RGF0YUF0
RVJLTlNfMTVGb250RGVzY3JpcHRpb25FagogX19aTks3V2ViQ29yZTEwTGF5b3V0UmVjdDhjb250
YWluc0VSS1MwXwpAQCAtMTY1NCwxMSArMTY1OCw3IEBAIF9fWk5LN1dlYkNvcmUxM1Jlc291cmNl
RXJyb3I3bnNFcnJvckV2CiBfX1pOSzdXZWJDb3JlMTNSZXNvdXJjZUVycm9yY3ZQN05TRXJyb3JF
dgogX19aTks3V2ViQ29yZTE0Q3JlZGVudGlhbEJhc2UxMWhhc1Bhc3N3b3JkRXYKIF9fWk5LN1dl
YkNvcmUxNENyZWRlbnRpYWxCYXNlMTFwZXJzaXN0ZW5jZUV2Ci1fX1pOSzdXZWJDb3JlMTRDcmVk
ZW50aWFsQmFzZTEyY2VydGlmaWNhdGVzRXYKLV9fWk5LN1dlYkNvcmUxNENyZWRlbnRpYWxCYXNl
NHR5cGVFdgogX19aTks3V2ViQ29yZTE0Q3JlZGVudGlhbEJhc2U0dXNlckV2Ci1fX1pOSzdXZWJD
b3JlMTRDcmVkZW50aWFsQmFzZTdpc0VtcHR5RXYKLV9fWk5LN1dlYkNvcmUxNENyZWRlbnRpYWxC
YXNlOGlkZW50aXR5RXYKIF9fWk5LN1dlYkNvcmUxNENyZWRlbnRpYWxCYXNlOHBhc3N3b3JkRXYK
IF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTByZXF1ZXN0VVJMRXYKIF9fWk5LN1dlYkNv
cmUxNERvY3VtZW50TG9hZGVyMTFmcmFtZUxvYWRlckV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzE3MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTEzMTQsNiArMTMxNCw4IEBACiAJCTM3OTE5QzIzMEI3RDE4ODYwMEE1
Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTE5QzIxMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0
ZXJhdG9yLmNwcCAqLzsgfTsKIAkJMzc5MTlDMjQwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9u
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3OTE5QzIyMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMzc5MjkxN0ExOTg1RUYzOTAwRjRCNjYx
IC8qIENyZWRlbnRpYWxCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzkyOTE3ODE5ODVFRjM5MDBGNEI2NjEgLyogQ3JlZGVudGlhbEJhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzNzkyOTE3
RDE5ODc2NzhGMDBGNEI2NjEgLyogQ3JlZGVudGlhbENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5MjkxN0IxOTg3Njc4RjAwRjRCNjYxIC8q
IENyZWRlbnRpYWxDb2NvYS5tbSAqLzsgfTsKKwkJMzc5MjkxN0UxOTg3Njc4RjAwRjRCNjYxIC8q
IENyZWRlbnRpYWxDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc5MjkxN0MxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3OTkxOTk2
MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzk5MTk5NDEyMDBEREY0MDBFQTA0MUMgLyog
V09GRkZpbGVGb3JtYXQuY3BwICovOyB9OwogCQkzNzk5MTk5NzEyMDBEREY0MDBFQTA0MUMgLyog
V09GRkZpbGVGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3OTkxOTk1MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5oICovOyB9
OwogCQkzNzk5MTlCMjEyMDBERTUwMDBFQTA0MUMgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTkxOUIxMTIwMERFNTAwMEVB
MDQxQyAvKiBsaWJ6LmR5bGliICovOyB9OwpAQCAtODMzOSw2ICs4MzQxLDggQEAKIAkJMzc5MTlD
MjEwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25J
dGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25JdGVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzkyOTE3ODE5ODVFRjM5MDBG
NEI2NjEgLyogQ3JlZGVudGlhbEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3JlZGVudGlhbEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc5Mjkx
N0IxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IENyZWRlbnRpYWxDb2NvYS5tbTsgcGF0aCA9IGNvY29h
L0NyZWRlbnRpYWxDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc5Mjkx
N0MxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDcmVkZW50aWFsQ29jb2EuaDsgcGF0aCA9IGNvY29hL0NyZWRlbnRp
YWxDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzk5MTk5NDEyMDBEREY0
MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV09GRkZpbGVGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzNzk5MTk5NTEyMDBEREY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV09GRkZpbGVGb3JtYXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzc5OTE5QjExMjAwREU1MDAwRUEwNDFDIC8qIGxpYnouZHlsaWIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnouZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJ6
LmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwpAQCAtMTY3NjUsNiArMTY3Njks
OCBAQAogCQk3RTdERTFGRTE5NUNFRjJEMDAzNTM2M0IgLyogY29jb2EgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTM3OTI5MTdDMTk4NzY3OEYwMEY0QjY2
MSAvKiBDcmVkZW50aWFsQ29jb2EuaCAqLywKKwkJCQkzNzkyOTE3QjE5ODc2NzhGMDBGNEI2NjEg
LyogQ3JlZGVudGlhbENvY29hLm1tICovLAogCQkJCTM3MkFEQTM3MTk3RjQ3QjkwMEZDNTAxRSAv
KiBQcm90ZWN0aW9uU3BhY2VDb2NvYS5oICovLAogCQkJCTM3MkFEQTM5MTk3RjY4NzYwMEZDNTAx
RSAvKiBQcm90ZWN0aW9uU3BhY2VDb2NvYS5tbSAqLywKIAkJCQk3RTdERTFGQzE5NUNFRjI2MDAz
NTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi8sCkBAIC0yNTY3MSw2ICsyNTY3Nyw3
IEBACiAJCQkJQkNFQTQ4NjQwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxpbmVCcmVhay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQUJCNTQxOUYwQUNEREZFNDAwMjgyMEVCIC8qIFJlbmRlckxpc3RC
b3guaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3QTUyMEExOTFBNTIwMEE4RUY1RiAvKiBSZW5k
ZXJMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzc5MjkxN0UxOTg3Njc4RjAwRjRCNjYx
IC8qIENyZWRlbnRpYWxDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdBNTAwQTE5MUE1
MjAwQThFRjVGIC8qIFJlbmRlckxpc3RNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTYw
MjhGMEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MzkwNDZEODEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MQmxvY2suaCBpbiBIZWFk
ZXJzICovLApAQCAtMjg2NjAsNiArMjg2NjcsNyBAQAogCQkJCUIyRkEzREM0MEFCNzVBNkYwMDBF
NUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjJGQTNEQzYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNBYnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQzgwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMzc5MjkxN0QxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUIyRkEzRENBMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzREND
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVs
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzk2RDhEMEIzQUYyQjcwMDVFODBFQyAvKiBKU1NW
R1BhdGhTZWdDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaAkocmV2aXNpb24gMTcxNzIyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDggKzI2LDE1IEBACiAjaWZuZGVmIENyZWRlbnRpYWxfaAogI2RlZmluZSBDcmVkZW50
aWFsX2gKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkNyZWRlbnRpYWxDb2NvYS5o
IgorI2Vsc2UKKwogI2luY2x1ZGUgIkNyZWRlbnRpYWxCYXNlLmgiCiAKKy8vIEZJWE1FOiBSZW1v
dmUgdGhpcyBtYWNybyBvbmNlIGl0IGlzIG5vdCB1c2VkIGluIFdlYktpdC4KKyNkZWZpbmUgQ0VS
VElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVEIDAKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDcmVkZW50aWFsIDogcHVibGljIENyZWRlbnRpYWxCYXNlIHsKQEAgLTQ2LDE1ICs1
MywxMCBAQCBwdWJsaWM6CiAgICAgICAgIDogQ3JlZGVudGlhbEJhc2Uob3JpZ2luYWwsIHBlcnNp
c3RlbmNlKQogICAgIHsKICAgICB9Ci0KLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQ
T1JURUQKLSAgICBDcmVkZW50aWFsKFNlY0lkZW50aXR5UmVmIGlkZW50aXR5LCBDRkFycmF5UmVm
IGNlcnRpZmljYXRlcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQotICAgICAg
ICA6IENyZWRlbnRpYWxCYXNlKGlkZW50aXR5LCBjZXJ0aWZpY2F0ZXMsIHBlcnNpc3RlbmNlKQot
ICAgIHsKLSAgICB9Ci0jZW5kaWYKIH07CiAKIH0KIAorI2VuZGlmCisKICNlbmRpZiAvLyBDcmVk
ZW50aWFsX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlh
bEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbEJhc2UuY3BwCShyZXZpc2lvbiAxNzE3MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
MjQgKzMzLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIE5lZWQgdG8gZW5mb3JjZSBlbXB0
eSwgbm9uLW51bGwgc3RyaW5ncyBkdWUgdG8gdGhlIHBpY2tpbmVzcyBvZiB0aGUgU3RyaW5nID09
IFN0cmluZyBvcGVyYXRvcgogLy8gY29tYmluZWQgd2l0aCB0aGUgc2VtYW50aWNzIG9mIHRoZSBT
dHJpbmcoTlNTdHJpbmcqKSBjb25zdHJ1Y3RvcgogQ3JlZGVudGlhbEJhc2U6OkNyZWRlbnRpYWxC
YXNlKCkKLSAgICA6IG1fdXNlcigiIikKLSAgICAsIG1fcGFzc3dvcmQoIiIpCisgICAgOiBtX3Vz
ZXIoZW1wdHlTdHJpbmcoKSkKKyAgICAsIG1fcGFzc3dvcmQoZW1wdHlTdHJpbmcoKSkKICAgICAs
IG1fcGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkKLSNpZiBDRVJUSUZJQ0FU
RV9DUkVERU5USUFMU19TVVBQT1JURUQKLSAgICAsIG1fdHlwZShDcmVkZW50aWFsVHlwZVBhc3N3
b3JkKQotI2VuZGlmICAgIAogewogfQogICAgCiAvLyBOZWVkIHRvIGVuZm9yY2UgZW1wdHksIG5v
bi1udWxsIHN0cmluZ3MgZHVlIHRvIHRoZSBwaWNraW5lc3Mgb2YgdGhlIFN0cmluZyA9PSBTdHJp
bmcgb3BlcmF0b3IKIC8vIGNvbWJpbmVkIHdpdGggdGhlIHNlbWFudGljcyBvZiB0aGUgU3RyaW5n
KE5TU3RyaW5nKikgY29uc3RydWN0b3IKIENyZWRlbnRpYWxCYXNlOjpDcmVkZW50aWFsQmFzZShj
b25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIENyZWRlbnRpYWxQZXJz
aXN0ZW5jZSBwZXJzaXN0ZW5jZSkKLSAgICA6IG1fdXNlcih1c2VyLmxlbmd0aCgpID8gdXNlciA6
ICIiKQotICAgICwgbV9wYXNzd29yZChwYXNzd29yZC5sZW5ndGgoKSA/IHBhc3N3b3JkIDogIiIp
CisgICAgOiBtX3VzZXIodXNlci5sZW5ndGgoKSA/IHVzZXIgOiBlbXB0eVN0cmluZygpKQorICAg
ICwgbV9wYXNzd29yZChwYXNzd29yZC5sZW5ndGgoKSA/IHBhc3N3b3JkIDogZW1wdHlTdHJpbmco
KSkKICAgICAsIG1fcGVyc2lzdGVuY2UocGVyc2lzdGVuY2UpCi0jaWYgQ0VSVElGSUNBVEVfQ1JF
REVOVElBTFNfU1VQUE9SVEVECi0gICAgLCBtX3R5cGUoQ3JlZGVudGlhbFR5cGVQYXNzd29yZCkK
LSNlbmRpZgogewogfQogICAgIApAQCAtNTgsMjEgKzUyLDExIEBAIENyZWRlbnRpYWxCYXNlOjpD
cmVkZW50aWFsQmFzZShjb25zdCBDcmUKICAgICA6IG1fdXNlcihvcmlnaW5hbC51c2VyKCkpCiAg
ICAgLCBtX3Bhc3N3b3JkKG9yaWdpbmFsLnBhc3N3b3JkKCkpCiAgICAgLCBtX3BlcnNpc3RlbmNl
KHBlcnNpc3RlbmNlKQotI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAotICAg
ICwgbV9pZGVudGl0eShvcmlnaW5hbC5pZGVudGl0eSgpKQotICAgICwgbV9jZXJ0aWZpY2F0ZXMo
b3JpZ2luYWwuY2VydGlmaWNhdGVzKCkpCi0gICAgLCBtX3R5cGUob3JpZ2luYWwudHlwZSgpKQot
I2VuZGlmCiB7CiB9CiAKIGJvb2wgQ3JlZGVudGlhbEJhc2U6OmlzRW1wdHkoKSBjb25zdAogewot
I2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAotICAgIGlmIChtX3R5cGUgPT0g
Q3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSAmJiAobV9pZGVudGl0eSB8fCBtX2NlcnRp
ZmljYXRlcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotICAgIAogICAgIHJldHVy
biBtX3VzZXIuaXNFbXB0eSgpICYmIG1fcGFzc3dvcmQuaXNFbXB0eSgpOwogfQogICAgIApAQCAt
OTUsNzAgKzc5LDE5IEBAIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBDcmVkZW50aWFsQmFzZTo6cGUK
IHsgCiAgICAgcmV0dXJuIG1fcGVyc2lzdGVuY2U7IAogfQotICAgIAotI2lmIENFUlRJRklDQVRF
X0NSRURFTlRJQUxTX1NVUFBPUlRFRAotQ3JlZGVudGlhbEJhc2U6OkNyZWRlbnRpYWxCYXNlKFNl
Y0lkZW50aXR5UmVmIGlkZW50aXR5LCBDRkFycmF5UmVmIGNlcnRpZmljYXRlcywgQ3JlZGVudGlh
bFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQotICAgIDogbV91c2VyKCIiKQotICAgICwgbV9wYXNz
d29yZCgiIikKLSAgICAsIG1fcGVyc2lzdGVuY2UocGVyc2lzdGVuY2UpCi0gICAgLCBtX2lkZW50
aXR5KGlkZW50aXR5KQotICAgICwgbV9jZXJ0aWZpY2F0ZXMoY2VydGlmaWNhdGVzKQotICAgICwg
bV90eXBlKENyZWRlbnRpYWxUeXBlQ2xpZW50Q2VydGlmaWNhdGUpCi17Ci19Ci0gICAgCi1TZWNJ
ZGVudGl0eVJlZiBDcmVkZW50aWFsQmFzZTo6aWRlbnRpdHkoKSBjb25zdAotewotICAgIHJldHVy
biBtX2lkZW50aXR5LmdldCgpOwotfQotICAgIAotQ0ZBcnJheVJlZiBDcmVkZW50aWFsQmFzZTo6
Y2VydGlmaWNhdGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jZXJ0aWZpY2F0ZXMuZ2V0KCk7
Ci19Ci0gICAgCi1DcmVkZW50aWFsVHlwZSBDcmVkZW50aWFsQmFzZTo6dHlwZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fdHlwZTsKLX0KLSNlbmRpZgogCi1ib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q3JlZGVudGlhbCYgYSwgY29uc3QgQ3JlZGVudGlhbCYgYikKK2Jvb2wgQ3JlZGVudGlhbEJhc2U6
OmNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYgYSwgY29uc3QgQ3JlZGVudGlhbCYgYikKIHsKICAg
ICAvLyBDaGVjayBwZXJzaXN0ZW5jZSBmaXJzdCBzaW5jZSBhbGwgY3JlZGVudGlhbCB0eXBlcwog
ICAgIC8vIGhhdmUgdGhlIHBlcnNpc3RlbmNlIHByb3BlcnR5LgogICAgIGlmIChhLnBlcnNpc3Rl
bmNlKCkgIT0gYi5wZXJzaXN0ZW5jZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0j
aWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECi0gICAgQ3JlZGVudGlhbFR5cGUg
YVR5cGUgPSBhLnR5cGUoKTsKLSAgICBpZiAoYVR5cGUgIT0gYi50eXBlKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBDb21wYXJpbmcgaWRlbnRpdHkgYW5kIGNlcnRpZmlj
YXRlIGNoYWluIHBvaW50ZXJzIGlzIHZhbGlkIG9ubHkKLSAgICAvLyBmb3IgY2xpZW50IGNlcnRp
ZmljYXRlIHR5cGUgY3JlZGVudGlhbHMuCi0gICAgLy8KLSAgICAvLyBGSVhNRTogSXMgcG9pbnRl
ciBjb21wYXJpc29uIG9mIHRoZSBpZGVudGl0eSBhbmQgY2VydGlmaWNhdGVzIHByb3BlcnRpZXMg
c3VmZmljaWVudD8KLSAgICBpZiAoYVR5cGUgPT0gQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZp
Y2F0ZSkgewotICAgICAgICBpZiAoYS5pZGVudGl0eSgpICE9IGIuaWRlbnRpdHkoKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGEuY2VydGlmaWNhdGVzKCkgIT0gYi5j
ZXJ0aWZpY2F0ZXMoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAg
ICAgIC8vIFdlIG9ubHkgbmVlZCB0byBjaGVjayBpZGVudGl0eSBhbmQgY2VydGlmaWNhdGVzIHRv
IGNvbXBhcmUKLSAgICAgICAgLy8gY2xpZW50IGNlcnRpZmljYXRlIGJhc2VkIGNyZWRlbnRpYWxz
LgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgQVNTRVJUKGEudHlwZSgp
ID09IENyZWRlbnRpYWxUeXBlUGFzc3dvcmQgJiYgYi50eXBlKCkgPT0gQ3JlZGVudGlhbFR5cGVQ
YXNzd29yZCk7Ci0jZW5kaWYgICAgCi0gICAgCiAgICAgaWYgKGEudXNlcigpICE9IGIudXNlcigp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGEucGFzc3dvcmQoKSAhPSBiLnBhc3N3
b3JkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIENyZWRlbnRpYWw6OnBsYXRmb3JtQ29tcGFyZShhLCBiKTsKIH0KIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJh
c2UuaAkocmV2aXNpb24gMTcxNzIyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9DcmVkZW50aWFsQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsNiBAQAogCiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNkZWZpbmUgQ0VSVElGSUNBVEVfQ1JF
REVOVElBTFNfU1VQUE9SVEVEIChQTEFURk9STShDT0NPQSkpCi0KLSNpZiBDRVJUSUZJQ0FURV9D
UkVERU5USUFMU19TVVBQT1JURUQKLSNpbmNsdWRlIDxTZWN1cml0eS9TZWNCYXNlLmg+Ci0jaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ3JlZGVudGlhbDsKQEAgLTQ1LDEzICszOCw2IEBAIGVudW0gQ3JlZGVudGlhbFBlcnNp
c3RlbmNlIHsKICAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnQKIH07CiAKLSNpZiBD
RVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKLWVudW0gQ3JlZGVudGlhbFR5cGUgewot
ICAgIENyZWRlbnRpYWxUeXBlUGFzc3dvcmQsCi0gICAgQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0
aWZpY2F0ZQotfTsKLSNlbmRpZgotCiBjbGFzcyBDcmVkZW50aWFsQmFzZSB7CiAKIHB1YmxpYzoK
QEAgLTYyLDMzICs0OCwyNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0
OwogICAgIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSgpIGNvbnN0OwogICAgIAot
I2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAotICAgIFNlY0lkZW50aXR5UmVm
IGlkZW50aXR5KCkgY29uc3Q7Ci0gICAgQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZXMoKSBjb25zdDsK
LSAgICBDcmVkZW50aWFsVHlwZSB0eXBlKCkgY29uc3Q7Ci0jZW5kaWYgICAgCi0gICAgCisgICAg
c3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlhbCYp
OworCiBwcm90ZWN0ZWQ6CiAgICAgQ3JlZGVudGlhbEJhc2UoKTsKICAgICBDcmVkZW50aWFsQmFz
ZShjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZSk7CiAgICAgQ3JlZGVudGlhbEJhc2UoY29uc3QgQ3JlZGVudGlhbCYgb3JpZ2lu
YWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7Ci0jaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNf
U1VQUE9SVEVECi0gICAgQ3JlZGVudGlhbEJhc2UoU2VjSWRlbnRpdHlSZWYsIENGQXJyYXlSZWYg
Y2VydGlmaWNhdGVzLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwotI2VuZGlmCi0gICAgCisKKyAg
ICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IENy
ZWRlbnRpYWwmKSB7IHJldHVybiB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdXNl
cjsKICAgICBTdHJpbmcgbV9wYXNzd29yZDsKICAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2UgbV9w
ZXJzaXN0ZW5jZTsKLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKLSAgICBS
ZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+IG1faWRlbnRpdHk7Ci0gICAgUmV0YWluUHRyPENGQXJy
YXlSZWY+IG1fY2VydGlmaWNhdGVzOwotICAgIENyZWRlbnRpYWxUeXBlIG1fdHlwZTsKLSNlbmRp
ZgogfTsKIAotYm9vbCBvcGVyYXRvcj09KGNvbnN0IENyZWRlbnRpYWwmIGEsIGNvbnN0IENyZWRl
bnRpYWwmIGIpOworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDcmVkZW50aWFsJiBhLCBj
b25zdCBDcmVkZW50aWFsJiBiKSB7IHJldHVybiBDcmVkZW50aWFsQmFzZTo6Y29tcGFyZShhLCBi
KTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDcmVkZW50aWFsJiBhLCBjb25zdCBD
cmVkZW50aWFsJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KICAgICAKIH07CisKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29j
b2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0NyZWRlbnRpYWxDb2NvYS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDcmVkZW50aWFsQ29jb2FfaAorI2RlZmlu
ZSBDcmVkZW50aWFsQ29jb2FfaAorCisjaW5jbHVkZSAiQ3JlZGVudGlhbEJhc2UuaCIKKyNpbmNs
dWRlIDxTZWN1cml0eS9TZWNCYXNlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgbWFjcm8gb25jZSBpdCBpcyBub3QgdXNlZCBpbiBXZWJLaXQu
CisjZGVmaW5lIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRCAxCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworZW51bSBDcmVkZW50aWFsVHlwZSB7CisgICAgQ3JlZGVudGlhbFR5cGVQ
YXNzd29yZCwKKyAgICBDcmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlCit9OworCitjbGFz
cyBDcmVkZW50aWFsIDogcHVibGljIENyZWRlbnRpYWxCYXNlIHsKK3B1YmxpYzoKKyAgICBDcmVk
ZW50aWFsKCkKKyAgICAgICAgOiBDcmVkZW50aWFsQmFzZSgpCisgICAgICAgICwgbV90eXBlKENy
ZWRlbnRpYWxUeXBlUGFzc3dvcmQpCisgICAgeworICAgIH0KKworICAgIENyZWRlbnRpYWwoY29u
c3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lz
dGVuY2UgcGVyc2lzdGVuY2UpCisgICAgICAgIDogQ3JlZGVudGlhbEJhc2UodXNlciwgcGFzc3dv
cmQsIHBlcnNpc3RlbmNlKQorICAgICAgICAsIG1fdHlwZShDcmVkZW50aWFsVHlwZVBhc3N3b3Jk
KQorICAgIHsKKyAgICB9CisKKyAgICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmIG9yaWdp
bmFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2UpCisgICAgICAgIDogQ3JlZGVu
dGlhbEJhc2Uob3JpZ2luYWwsIHBlcnNpc3RlbmNlKQorICAgICAgICAsIG1fdHlwZShvcmlnaW5h
bC5tX3R5cGUpCisgICAgeworICAgIH0KKworICAgIENyZWRlbnRpYWwoU2VjSWRlbnRpdHlSZWYs
IENGQXJyYXlSZWYgY2VydGlmaWNhdGVzLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOworCisgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3Q7CisKKyAgICBTZWNJZGVudGl0eVJlZiBpZGVudGl0eSgpIGNv
bnN0OworICAgIENGQXJyYXlSZWYgY2VydGlmaWNhdGVzKCkgY29uc3Q7CisgICAgQ3JlZGVudGlh
bFR5cGUgdHlwZSgpIGNvbnN0OworCisgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNv
bnN0IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50aWFsJik7CisKK3ByaXZhdGU6CisgICAgUmV0
YWluUHRyPFNlY0lkZW50aXR5UmVmPiBtX2lkZW50aXR5OworICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBtX2NlcnRpZmljYXRlczsKKyAgICBDcmVkZW50aWFsVHlwZSBtX3R5cGU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDcmVkZW50aWFsQ29jb2FfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
cmVkZW50aWFsQ29jb2EubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJDcmVkZW50aWFsQ29jb2EuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDcmVkZW50aWFs
OjpDcmVkZW50aWFsKFNlY0lkZW50aXR5UmVmIGlkZW50aXR5LCBDRkFycmF5UmVmIGNlcnRpZmlj
YXRlcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQorICAgIDogQ3JlZGVudGlh
bEJhc2UoZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgcGVyc2lzdGVuY2UpCisgICAgLCBt
X2lkZW50aXR5KGlkZW50aXR5KQorICAgICwgbV9jZXJ0aWZpY2F0ZXMoY2VydGlmaWNhdGVzKQor
ICAgICwgbV90eXBlKENyZWRlbnRpYWxUeXBlQ2xpZW50Q2VydGlmaWNhdGUpCit7Cit9CisKK2Jv
b2wgQ3JlZGVudGlhbDo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHlwZSA9PSBDcmVk
ZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlICYmIChtX2lkZW50aXR5IHx8IG1fY2VydGlmaWNh
dGVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIENyZWRlbnRpYWxCYXNl
Ojppc0VtcHR5KCk7Cit9CisKK1NlY0lkZW50aXR5UmVmIENyZWRlbnRpYWw6OmlkZW50aXR5KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pZGVudGl0eS5nZXQoKTsKK30KKyAgICAKK0NGQXJyYXlS
ZWYgQ3JlZGVudGlhbDo6Y2VydGlmaWNhdGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jZXJ0
aWZpY2F0ZXMuZ2V0KCk7Cit9CisgICAgCitDcmVkZW50aWFsVHlwZSBDcmVkZW50aWFsOjp0eXBl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlOworfQorCitib29sIENyZWRlbnRpYWw6OnBs
YXRmb3JtQ29tcGFyZShjb25zdCBDcmVkZW50aWFsJiBhLCBjb25zdCBDcmVkZW50aWFsJiBiKQor
eworICAgIGlmIChhLnR5cGUoKSAhPSBDcmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlIHx8
IGIudHlwZSgpICE9IENyZWRlbnRpYWxUeXBlQ2xpZW50Q2VydGlmaWNhdGUpCisgICAgICAgIHJl
dHVybiBhLnR5cGUoKSA9PSBiLnR5cGUoKTsKKworICAgIC8vIEZJWE1FOiBJcyBwb2ludGVyIGNv
bXBhcmlzb24gb2YgdGhlIGlkZW50aXR5IGFuZCBjZXJ0aWZpY2F0ZXMgcHJvcGVydGllcyBzdWZm
aWNpZW50PworICAgIGlmIChhLmlkZW50aXR5KCkgIT0gYi5pZGVudGl0eSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKGEuY2VydGlmaWNhdGVzKCkgIT0gYi5jZXJ0aWZpY2F0ZXMo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCShyZXZpc2lvbiAxNzE3MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQyLDE0ICsyNDIsMTIgQEAgTlNVUkxDcmVkZW50aWFs
ICptYWMoY29uc3QgQ3JlZGVudGlhbCYgYwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQogCi0jaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECiAgICAg
aWYgKGNvcmVDcmVkZW50aWFsLnR5cGUoKSA9PSBDcmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmlj
YXRlKSB7CiAgICAgICAgIHJldHVybiBbW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRo
SWRlbnRpdHk6Y29yZUNyZWRlbnRpYWwuaWRlbnRpdHkoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGVzOihOU0FycmF5ICopY29yZUNyZWRl
bnRpYWwuY2VydGlmaWNhdGVzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwZXJzaXN0ZW5jZTpwZXJzaXN0ZW5jZV0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvcmVsZWFzZV07CiAgICAgfQotI2VuZGlmCiAK
ICAgICByZXR1cm4gW1tbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBpbml0V2l0aFVzZXI6Y29yZUNy
ZWRlbnRpYWwudXNlcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFzc3dvcmQ6Y29yZUNyZWRlbnRpYWwucGFzc3dvcmQoKQpAQCAtMjc4LDExICsyNzYsOSBAQCBD
cmVkZW50aWFsIGNvcmUoTlNVUkxDcmVkZW50aWFsICptYWNDcmVkCiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19T
VVBQT1JURUQKICAgICBTZWNJZGVudGl0eVJlZiBpZGVudGl0eSA9IFttYWNDcmVkZW50aWFsIGlk
ZW50aXR5XTsKICAgICBpZiAoaWRlbnRpdHkpCiAgICAgICAgIHJldHVybiBDcmVkZW50aWFsKGlk
ZW50aXR5LCAoQ0ZBcnJheVJlZilbbWFjQ3JlZGVudGlhbCBjZXJ0aWZpY2F0ZXNdLCBwZXJzaXN0
ZW5jZSk7Ci0jZW5kaWYKICAgICAKICAgICByZXR1cm4gQ3JlZGVudGlhbChbbWFjQ3JlZGVudGlh
bCB1c2VyXSwgW21hY0NyZWRlbnRpYWwgcGFzc3dvcmRdLCBwZXJzaXN0ZW5jZSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235672</attachid>
            <date>2014-07-29 01:57:32 -0700</date>
            <delta_ts>2014-07-30 18:09:12 -0700</delta_ts>
            <desc>II. Move the Cocoa-specific parts of CredentialBase into a Cocoa-specific Credential class</desc>
            <filename>135327-2_r4.diff</filename>
            <type>text/plain</type>
            <size>25279</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE0LTA3LTI5ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZWQgdGhlIENvY29hLXNwZWNp
ZmljIHBhcnRzIG9mIENyZWRlbnRpYWxCYXNlIGludG8gYSBDb2NvYS1zcGVjaWZpYyBDcmVkZW50
aWFsIGNsYXNzLgorICAgICAgICBXb3JrIHRvd2FyZHMgZml4aW5nIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUzMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOiBVcGRhdGVkIGZvciBmdW5jdGlvbnMgbW92ZWQgaW4gdGhl
IGNsYXNzIGhpZXJhcmNoeS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkZWQgQ3JlZGVudGlhbENvY29hLntoLG1tfS4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oOiBGb3IgQ29jb2EsIGluY2x1ZGUgQ3JlZGVudGlhbENv
Y29hLmggaW5zdGVhZCBvZiB0aGUgZ2VuZXJpYworICAgICAgICBjbGFzcy4KKyAgICAgICAgKFdl
YkNvcmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwpOiBSZW1vdmVkICNpZiBDRVJUSUZJQ0FURV9D
UkVERU5USUFMU19TVVBQT1JURUQgY29kZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OkNy
ZWRlbnRpYWxCYXNlKTogQ2hhbmdlZCB0byB1c2UgZW1wdHlTdHJpbmcgaW5zdGVhZCBvZiAiIiwg
cmVtb3ZlZAorICAgICAgICAjaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVEIGNv
ZGUuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFzZTo6aXNFbXB0eSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OmNvbXBhcmUpOiBSZW5hbWVkIG9wZXJh
dG9yPT0gdG8gdGhpcywgcmVtb3ZlZAorICAgICAgICAjaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElB
TFNfU1VQUE9SVEVEIGNvZGUsIGJ1dCBjaGFuZ2VkIHRoZSBlbmQgdG8gY2FsbCBwbGF0Zm9ybUNv
bXBhcmUuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFzZTo6aWRlbnRpdHkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OmNlcnRpZmljYXRlcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFzZTo6dHlwZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oOiBSZW1vdmVkICNp
ZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQgbWVtYmVycy4KKyAgICAgICAgKFdl
YkNvcmU6OkNyZWRlbnRpYWxCYXNlOjpwbGF0Zm9ybUNvbXBhcmUpOiBBZGRlZCBhIGJhc2UgaW1w
bGVtZW50YXRpb24gdGhhdCByZXR1cm5zIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cj09KTogQ2hhbmdlZCB0byB1c2UgQ3JlZGVudGlhbEJhc2U6OmNvbXBhcmUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwpOiBNb3ZlZCB0aGUgY29uc3RydWN0b3IgdGhhdCB0
YWtlcyBhbiBpZGVudGl0eSBhbmQKKyAgICAgICAgY2VydGlmaWNhdGVzIGhlcmUuCisgICAgICAg
IChXZWJDb3JlOjpDcmVkZW50aWFsOjppc0VtcHR5KTogTW92ZWQgaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNyZWRlbnRpYWw6OmlkZW50aXR5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
cmVkZW50aWFsOjpjZXJ0aWZpY2F0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRl
bnRpYWw6OnR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OnBsYXRm
b3JtQ29tcGFyZSk6IE1vdmVkIHRoZSBjb2RlIHRoYXQgY29tcGFyZXMgY2xpZW50LWNlcnRpZmlj
YXRlCisgICAgICAgIGNyZWRlbnRpYWxzIGhlcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1hYyk6IFJl
bW92ZWQgI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRCBndWFyZHMgaW4gdGhp
cyBDb2NvYS1vbmx5CisgICAgICAgIGZpbGUuCisgICAgICAgIChXZWJDb3JlOjpjb3JlKTogRGl0
dG8uCisKIDIwMTQtMDctMjkgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtUZXhNYXBdIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRp
b24oKSBib3ggc2l6ZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIEZsb2F0U2l6ZQpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4JKHJldmlzaW9uIDE3MTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNTM0LDYgKzE1MzQsMTAgQEAgX19aTjdXZWJDb3Jl
OXRvRWxlbWVudEVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlOXVuaW9uUmVjdEVSS04zV1RG
NlZlY3RvcklOU185RmxvYXRSZWN0RUxtMEVOUzBfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk5L
M0pTQzhCaW5kaW5nczEwUm9vdE9iamVjdDEyZ2xvYmFsT2JqZWN0RXYKIF9fWk5LM1dURjZTdHJp
bmcxNGNyZWF0ZUNGU3RyaW5nRXYKK19fWk5LN1dlYkNvcmUxMENyZWRlbnRpYWwxMmNlcnRpZmlj
YXRlc0V2CitfX1pOSzdXZWJDb3JlMTBDcmVkZW50aWFsNHR5cGVFdgorX19aTks3V2ViQ29yZTEw
Q3JlZGVudGlhbDdpc0VtcHR5RXYKK19fWk5LN1dlYkNvcmUxMENyZWRlbnRpYWw4aWRlbnRpdHlF
dgogX19aTks3V2ViQ29yZTEwRmxvYXRQb2ludGN2N0NHUG9pbnRFdgogX19aTks3V2ViQ29yZTEw
Rm9udEdseXBoczE3cmVhbGl6ZUZvbnREYXRhQXRFUktOU18xNUZvbnREZXNjcmlwdGlvbkVqCiBf
X1pOSzdXZWJDb3JlMTBMYXlvdXRSZWN0OGNvbnRhaW5zRVJLUzBfCkBAIC0xNjUzLDExICsxNjU3
LDcgQEAgX19aTks3V2ViQ29yZTEzUmVzb3VyY2VFcnJvcjduc0Vycm9yRXYKIF9fWk5LN1dlYkNv
cmUxM1Jlc291cmNlRXJyb3JjdlA3TlNFcnJvckV2CiBfX1pOSzdXZWJDb3JlMTRDcmVkZW50aWFs
QmFzZTExaGFzUGFzc3dvcmRFdgogX19aTks3V2ViQ29yZTE0Q3JlZGVudGlhbEJhc2UxMXBlcnNp
c3RlbmNlRXYKLV9fWk5LN1dlYkNvcmUxNENyZWRlbnRpYWxCYXNlMTJjZXJ0aWZpY2F0ZXNFdgot
X19aTks3V2ViQ29yZTE0Q3JlZGVudGlhbEJhc2U0dHlwZUV2CiBfX1pOSzdXZWJDb3JlMTRDcmVk
ZW50aWFsQmFzZTR1c2VyRXYKLV9fWk5LN1dlYkNvcmUxNENyZWRlbnRpYWxCYXNlN2lzRW1wdHlF
dgotX19aTks3V2ViQ29yZTE0Q3JlZGVudGlhbEJhc2U4aWRlbnRpdHlFdgogX19aTks3V2ViQ29y
ZTE0Q3JlZGVudGlhbEJhc2U4cGFzc3dvcmRFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2Fk
ZXIxMHJlcXVlc3RVUkxFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMWZyYW1lTG9h
ZGVyRXYKQEAgLTIyMTksNiArMjIxOSw3IEBAIF9fWk43V2ViQ29yZTM2aW5pdGlhbGl6ZUxvZ2dp
bmdDaGFubmVsc0kKIC5vYmpjX2NsYXNzX25hbWVfV2ViRm9udENhY2hlCiAub2JqY19jbGFzc19u
YW1lX1dlYldpbmRvd0ZhZGVBbmltYXRpb24KIC5vYmpjX2NsYXNzX25hbWVfV2ViV2luZG93U2Nh
bGVBbmltYXRpb24KK19fWk43V2ViQ29yZTEwQ3JlZGVudGlhbEMxRVAyME9wYXF1ZVNlY0lkZW50
aXR5UmVmUEs5X19DRkFycmF5TlNfMjFDcmVkZW50aWFsUGVyc2lzdGVuY2VFCiBfX1pON1dlYkNv
cmUxMEZsb2F0UG9pbnRDMUVSSzhfTlNQb2ludAogX19aTjdXZWJDb3JlMTBoYW5kQ3Vyc29yRXYK
IF9fWk43V2ViQ29yZTExQ2FjaGVkSW1hZ2U1aW1hZ2VFdgpAQCAtMjIzNiw3ICsyMjM3LDYgQEAg
X19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXI4a2V5RXZlbnRFUDdOUwogX19aTjdXZWJDb3JlMTJF
dmVudEhhbmRsZXI5bW91c2VEb3duRVA3TlNFdmVudAogX19aTjdXZWJDb3JlMTNnZXRSYXdDb29r
aWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU18zVVJMRVM1X1JOM1dURjZWZWN0
b3JJTlNfNkNvb2tpZUVMbTBFTlM2XzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUx
M3RvRGV2aWNlU3BhY2VFUktOU185RmxvYXRSZWN0RVA4TlNXaW5kb3cKLV9fWk43V2ViQ29yZTE0
Q3JlZGVudGlhbEJhc2VDMkVQMjBPcGFxdWVTZWNJZGVudGl0eVJlZlBLOV9fQ0ZBcnJheU5TXzIx
Q3JlZGVudGlhbFBlcnNpc3RlbmNlRQogX19aTjdXZWJDb3JlMTRjb29raWVzRW5hYmxlZEVSS05T
XzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KIF9fWk43V2ViQ29yZTE1R3Jh
cGhpY3NDb250ZXh0MTVkcmF3TmF0aXZlSW1hZ2VFUDdDR0ltYWdlUktOU185RmxvYXRTaXplRU5T
XzEwQ29sb3JTcGFjZUVSS05TXzlGbG9hdFJlY3RFUzlfZk5TXzE3Q29tcG9zaXRlT3BlcmF0b3JF
TlNfOUJsZW5kTW9kZUVOU18xNkltYWdlT3JpZW50YXRpb25FCiBfX1pON1dlYkNvcmUxNUdyYXBo
aWNzQ29udGV4dEMxRVA5Q0dDb250ZXh0CkBAIC0yNTI1LDYgKzI1MjUsNyBAQCBfV2ViVGhyZWFk
VW5sb2NrR3VhcmRGb3JNYWlsCiBfV2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlm
aWNhdGlvbgogX1dlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9u
CiBfV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24KK19fWk43V2Vi
Q29yZTEwQ3JlZGVudGlhbEMxRVAxM19fU2VjSWRlbnRpdHlQSzlfX0NGQXJyYXlOU18yMUNyZWRl
bnRpYWxQZXJzaXN0ZW5jZUUKIF9fWk43V2ViQ29yZTEwUmVuZGVyVmlldzM1cmVzdW1lUGF1c2Vk
SW1hZ2VBbmltYXRpb25zSWZOZWVkZWRFdgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MTVzZXRT
Y3JvbGxPZmZzZXRFUktOU184SW50UG9pbnRFCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyMXNl
dEV4cG9zZWRDb250ZW50UmVjdEVSS05TXzlGbG9hdFJlY3RFCkBAIC0yNTYxLDcgKzI1NjIsNiBA
QCBfX1pON1dlYkNvcmUxM2VuZE9mRG9jdW1lbnRFUktOU18xNVZpc2liCiBfX1pON1dlYkNvcmUx
M2VuZE9mU2VudGVuY2VFUktOU18xNVZpc2libGVQb3NpdGlvbkUKIF9fWk43V2ViQ29yZTEzZ2V0
UmF3Q29va2llc0VSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV9STjNX
VEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRU5TNl8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdX
ZWJDb3JlMTNpc1N0YXJ0T2ZMaW5lRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FCi1fX1pON1dlYkNv
cmUxNENyZWRlbnRpYWxCYXNlQzFFUDEzX19TZWNJZGVudGl0eVBLOV9fQ0ZBcnJheU5TXzIxQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlRQogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE5c2V0UmVz
cG9uc2VNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRXcml0
ZXIzZW5kRXYKIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24xM3NldENhcmV0Q29sb3JFUktO
U181Q29sb3JFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzE3MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEzMTQsNiAr
MTMxNCw4IEBACiAJCTM3OTE5QzIzMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTE5
QzIxMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJMzc5
MTlDMjQwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTE5QzIyMEI3RDE4ODYwMEE1Njk5
OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsg
fTsgfTsKIAkJMzc5MjkxN0ExOTg1RUYzOTAwRjRCNjYxIC8qIENyZWRlbnRpYWxCYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkyOTE3ODE5ODVF
RjM5MDBGNEI2NjEgLyogQ3JlZGVudGlhbEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzNzkyOTE3RDE5ODc2NzhGMDBGNEI2NjEgLyogQ3Jl
ZGVudGlhbENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc5MjkxN0IxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5tbSAqLzsg
fTsKKwkJMzc5MjkxN0UxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5MjkxN0MxOTg3Njc4
RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3OTkxOTk2MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZG
RmlsZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzNzk5MTk5NDEyMDBEREY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuY3BwICovOyB9
OwogCQkzNzk5MTk5NzEyMDBEREY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTkxOTk1MTIwMERERjQw
MEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5oICovOyB9OwogCQkzNzk5MTlCMjEyMDBERTUwMDBF
QTA0MUMgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3OTkxOUIxMTIwMERFNTAwMEVBMDQxQyAvKiBsaWJ6LmR5bGliICovOyB9
OwpAQCAtODMzOSw2ICs4MzQxLDggQEAKIAkJMzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4IC8qIFBv
c2l0aW9uSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBvc2l0aW9uSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzkx
OUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25JdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzNzkyOTE3ODE5ODVFRjM5MDBGNEI2NjEgLyogQ3JlZGVudGlhbEJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVudGlhbEJhc2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc5MjkxN0IxOTg3Njc4RjAwRjRCNjYxIC8qIENy
ZWRlbnRpYWxDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IENyZWRlbnRpYWxDb2NvYS5tbTsgcGF0aCA9IGNvY29hL0NyZWRlbnRpYWxDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc5MjkxN0MxOTg3Njc4RjAwRjRCNjYxIC8qIENy
ZWRlbnRpYWxDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDcmVkZW50
aWFsQ29jb2EuaDsgcGF0aCA9IGNvY29hL0NyZWRlbnRpYWxDb2NvYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzNzk5MTk5NDEyMDBEREY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3Jt
YXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV09GRkZpbGVGb3Jt
YXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzk5MTk5NTEyMDBEREY0MDBF
QTA0MUMgLyogV09GRkZpbGVGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV09GRkZpbGVGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5OTE5
QjExMjAwREU1MDAwRUEwNDFDIC8qIGxpYnouZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9
IGxpYnouZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJ6LmR5bGliOyBzb3VyY2VUcmVlID0gIjxh
YnNvbHV0ZT4iOyB9OwpAQCAtMTY3NjUsNiArMTY3NjksOCBAQAogCQk3RTdERTFGRTE5NUNFRjJE
MDAzNTM2M0IgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTM3OTI5MTdDMTk4NzY3OEYwMEY0QjY2MSAvKiBDcmVkZW50aWFsQ29jb2EuaCAq
LywKKwkJCQkzNzkyOTE3QjE5ODc2NzhGMDBGNEI2NjEgLyogQ3JlZGVudGlhbENvY29hLm1tICov
LAogCQkJCTM3MkFEQTM3MTk3RjQ3QjkwMEZDNTAxRSAvKiBQcm90ZWN0aW9uU3BhY2VDb2NvYS5o
ICovLAogCQkJCTM3MkFEQTM5MTk3RjY4NzYwMEZDNTAxRSAvKiBQcm90ZWN0aW9uU3BhY2VDb2Nv
YS5tbSAqLywKIAkJCQk3RTdERTFGQzE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0
Q29jb2EubW0gKi8sCkBAIC0yNTY3MSw2ICsyNTY3Nyw3IEBACiAJCQkJQkNFQTQ4NjQwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlckxpbmVCcmVhay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUJCNTQx
OUYwQUNEREZFNDAwMjgyMEVCIC8qIFJlbmRlckxpc3RCb3guaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4RUE3QTUyMEExOTFBNTIwMEE4RUY1RiAvKiBSZW5kZXJMaXN0SXRlbS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMzc5MjkxN0UxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThFQTdBNTAwQTE5MUE1MjAwQThFRjVGIC8qIFJlbmRlckxpc3RN
YXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTYwMjhGMEU0Qjc2NTgwMDY1QjAzOCAvKiBS
ZW5kZXJNYXJxdWVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzkwNDZEODEyREEyNUU4MDBBRjgw
QTIgLyogUmVuZGVyTWF0aE1MQmxvY2suaCBpbiBIZWFkZXJzICovLApAQCAtMjg2NjAsNiArMjg2
NjcsNyBAQAogCQkJCUIyRkEzREM0MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWNTbW9vdGhSZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQzYwQUI3NUE2
RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjJGQTNEQzgwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNSZWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzc5MjkxN0QxOTg3Njc4RjAw
RjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRENB
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRENDMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyQzk2RDhEMEIzQUYyQjcwMDVFODBFQyAvKiBKU1NWR1BhdGhTZWdDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRp
YWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRl
bnRpYWwuaAkocmV2aXNpb24gMTcxNzM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9DcmVkZW50aWFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDE1IEBACiAjaWZu
ZGVmIENyZWRlbnRpYWxfaAogI2RlZmluZSBDcmVkZW50aWFsX2gKIAorI2lmIFBMQVRGT1JNKENP
Q09BKQorI2luY2x1ZGUgIkNyZWRlbnRpYWxDb2NvYS5oIgorI2Vsc2UKKwogI2luY2x1ZGUgIkNy
ZWRlbnRpYWxCYXNlLmgiCiAKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtYWNybyBvbmNlIGl0IGlz
IG5vdCB1c2VkIGluIFdlYktpdC4KKyNkZWZpbmUgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQ
UE9SVEVEIDAKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDcmVkZW50aWFsIDogcHVi
bGljIENyZWRlbnRpYWxCYXNlIHsKQEAgLTQ2LDE1ICs1MywxMCBAQCBwdWJsaWM6CiAgICAgICAg
IDogQ3JlZGVudGlhbEJhc2Uob3JpZ2luYWwsIHBlcnNpc3RlbmNlKQogICAgIHsKICAgICB9Ci0K
LSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKLSAgICBDcmVkZW50aWFsKFNl
Y0lkZW50aXR5UmVmIGlkZW50aXR5LCBDRkFycmF5UmVmIGNlcnRpZmljYXRlcywgQ3JlZGVudGlh
bFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQotICAgICAgICA6IENyZWRlbnRpYWxCYXNlKGlkZW50
aXR5LCBjZXJ0aWZpY2F0ZXMsIHBlcnNpc3RlbmNlKQotICAgIHsKLSAgICB9Ci0jZW5kaWYKIH07
CiAKIH0KIAorI2VuZGlmCisKICNlbmRpZiAvLyBDcmVkZW50aWFsX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCShyZXZp
c2lvbiAxNzE3MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRp
YWxCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjQgKzMzLDE4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIE5lZWQgdG8gZW5mb3JjZSBlbXB0eSwgbm9uLW51bGwgc3RyaW5ncyBkdWUg
dG8gdGhlIHBpY2tpbmVzcyBvZiB0aGUgU3RyaW5nID09IFN0cmluZyBvcGVyYXRvcgogLy8gY29t
YmluZWQgd2l0aCB0aGUgc2VtYW50aWNzIG9mIHRoZSBTdHJpbmcoTlNTdHJpbmcqKSBjb25zdHJ1
Y3RvcgogQ3JlZGVudGlhbEJhc2U6OkNyZWRlbnRpYWxCYXNlKCkKLSAgICA6IG1fdXNlcigiIikK
LSAgICAsIG1fcGFzc3dvcmQoIiIpCisgICAgOiBtX3VzZXIoZW1wdHlTdHJpbmcoKSkKKyAgICAs
IG1fcGFzc3dvcmQoZW1wdHlTdHJpbmcoKSkKICAgICAsIG1fcGVyc2lzdGVuY2UoQ3JlZGVudGlh
bFBlcnNpc3RlbmNlTm9uZSkKLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQK
LSAgICAsIG1fdHlwZShDcmVkZW50aWFsVHlwZVBhc3N3b3JkKQotI2VuZGlmICAgIAogewogfQog
ICAgCiAvLyBOZWVkIHRvIGVuZm9yY2UgZW1wdHksIG5vbi1udWxsIHN0cmluZ3MgZHVlIHRvIHRo
ZSBwaWNraW5lc3Mgb2YgdGhlIFN0cmluZyA9PSBTdHJpbmcgb3BlcmF0b3IKIC8vIGNvbWJpbmVk
IHdpdGggdGhlIHNlbWFudGljcyBvZiB0aGUgU3RyaW5nKE5TU3RyaW5nKikgY29uc3RydWN0b3IK
IENyZWRlbnRpYWxCYXNlOjpDcmVkZW50aWFsQmFzZShjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0
IFN0cmluZyYgcGFzc3dvcmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSkKLSAg
ICA6IG1fdXNlcih1c2VyLmxlbmd0aCgpID8gdXNlciA6ICIiKQotICAgICwgbV9wYXNzd29yZChw
YXNzd29yZC5sZW5ndGgoKSA/IHBhc3N3b3JkIDogIiIpCisgICAgOiBtX3VzZXIodXNlci5sZW5n
dGgoKSA/IHVzZXIgOiBlbXB0eVN0cmluZygpKQorICAgICwgbV9wYXNzd29yZChwYXNzd29yZC5s
ZW5ndGgoKSA/IHBhc3N3b3JkIDogZW1wdHlTdHJpbmcoKSkKICAgICAsIG1fcGVyc2lzdGVuY2Uo
cGVyc2lzdGVuY2UpCi0jaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECi0gICAg
LCBtX3R5cGUoQ3JlZGVudGlhbFR5cGVQYXNzd29yZCkKLSNlbmRpZgogewogfQogICAgIApAQCAt
NTgsMjEgKzUyLDExIEBAIENyZWRlbnRpYWxCYXNlOjpDcmVkZW50aWFsQmFzZShjb25zdCBDcmUK
ICAgICA6IG1fdXNlcihvcmlnaW5hbC51c2VyKCkpCiAgICAgLCBtX3Bhc3N3b3JkKG9yaWdpbmFs
LnBhc3N3b3JkKCkpCiAgICAgLCBtX3BlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKQotI2lmIENFUlRJ
RklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAotICAgICwgbV9pZGVudGl0eShvcmlnaW5hbC5p
ZGVudGl0eSgpKQotICAgICwgbV9jZXJ0aWZpY2F0ZXMob3JpZ2luYWwuY2VydGlmaWNhdGVzKCkp
Ci0gICAgLCBtX3R5cGUob3JpZ2luYWwudHlwZSgpKQotI2VuZGlmCiB7CiB9CiAKIGJvb2wgQ3Jl
ZGVudGlhbEJhc2U6OmlzRW1wdHkoKSBjb25zdAogewotI2lmIENFUlRJRklDQVRFX0NSRURFTlRJ
QUxTX1NVUFBPUlRFRAotICAgIGlmIChtX3R5cGUgPT0gQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0
aWZpY2F0ZSAmJiAobV9pZGVudGl0eSB8fCBtX2NlcnRpZmljYXRlcykpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSNlbmRpZgotICAgIAogICAgIHJldHVybiBtX3VzZXIuaXNFbXB0eSgpICYmIG1f
cGFzc3dvcmQuaXNFbXB0eSgpOwogfQogICAgIApAQCAtOTUsNzAgKzc5LDE5IEBAIENyZWRlbnRp
YWxQZXJzaXN0ZW5jZSBDcmVkZW50aWFsQmFzZTo6cGUKIHsgCiAgICAgcmV0dXJuIG1fcGVyc2lz
dGVuY2U7IAogfQotICAgIAotI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAot
Q3JlZGVudGlhbEJhc2U6OkNyZWRlbnRpYWxCYXNlKFNlY0lkZW50aXR5UmVmIGlkZW50aXR5LCBD
RkFycmF5UmVmIGNlcnRpZmljYXRlcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNl
KQotICAgIDogbV91c2VyKCIiKQotICAgICwgbV9wYXNzd29yZCgiIikKLSAgICAsIG1fcGVyc2lz
dGVuY2UocGVyc2lzdGVuY2UpCi0gICAgLCBtX2lkZW50aXR5KGlkZW50aXR5KQotICAgICwgbV9j
ZXJ0aWZpY2F0ZXMoY2VydGlmaWNhdGVzKQotICAgICwgbV90eXBlKENyZWRlbnRpYWxUeXBlQ2xp
ZW50Q2VydGlmaWNhdGUpCi17Ci19Ci0gICAgCi1TZWNJZGVudGl0eVJlZiBDcmVkZW50aWFsQmFz
ZTo6aWRlbnRpdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX2lkZW50aXR5LmdldCgpOwotfQot
ICAgIAotQ0ZBcnJheVJlZiBDcmVkZW50aWFsQmFzZTo6Y2VydGlmaWNhdGVzKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9jZXJ0aWZpY2F0ZXMuZ2V0KCk7Ci19Ci0gICAgCi1DcmVkZW50aWFsVHlw
ZSBDcmVkZW50aWFsQmFzZTo6dHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdHlwZTsKLX0K
LSNlbmRpZgogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQ3JlZGVudGlhbCYgYSwgY29uc3QgQ3Jl
ZGVudGlhbCYgYikKK2Jvb2wgQ3JlZGVudGlhbEJhc2U6OmNvbXBhcmUoY29uc3QgQ3JlZGVudGlh
bCYgYSwgY29uc3QgQ3JlZGVudGlhbCYgYikKIHsKICAgICAvLyBDaGVjayBwZXJzaXN0ZW5jZSBm
aXJzdCBzaW5jZSBhbGwgY3JlZGVudGlhbCB0eXBlcwogICAgIC8vIGhhdmUgdGhlIHBlcnNpc3Rl
bmNlIHByb3BlcnR5LgogICAgIGlmIChhLnBlcnNpc3RlbmNlKCkgIT0gYi5wZXJzaXN0ZW5jZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0jaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElB
TFNfU1VQUE9SVEVECi0gICAgQ3JlZGVudGlhbFR5cGUgYVR5cGUgPSBhLnR5cGUoKTsKLSAgICBp
ZiAoYVR5cGUgIT0gYi50eXBlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAv
LyBDb21wYXJpbmcgaWRlbnRpdHkgYW5kIGNlcnRpZmljYXRlIGNoYWluIHBvaW50ZXJzIGlzIHZh
bGlkIG9ubHkKLSAgICAvLyBmb3IgY2xpZW50IGNlcnRpZmljYXRlIHR5cGUgY3JlZGVudGlhbHMu
Ci0gICAgLy8KLSAgICAvLyBGSVhNRTogSXMgcG9pbnRlciBjb21wYXJpc29uIG9mIHRoZSBpZGVu
dGl0eSBhbmQgY2VydGlmaWNhdGVzIHByb3BlcnRpZXMgc3VmZmljaWVudD8KLSAgICBpZiAoYVR5
cGUgPT0gQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSkgewotICAgICAgICBpZiAoYS5p
ZGVudGl0eSgpICE9IGIuaWRlbnRpdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgaWYgKGEuY2VydGlmaWNhdGVzKCkgIT0gYi5jZXJ0aWZpY2F0ZXMoKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBj
aGVjayBpZGVudGl0eSBhbmQgY2VydGlmaWNhdGVzIHRvIGNvbXBhcmUKLSAgICAgICAgLy8gY2xp
ZW50IGNlcnRpZmljYXRlIGJhc2VkIGNyZWRlbnRpYWxzLgotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0gICAgCi0gICAgQVNTRVJUKGEudHlwZSgpID09IENyZWRlbnRpYWxUeXBlUGFzc3dv
cmQgJiYgYi50eXBlKCkgPT0gQ3JlZGVudGlhbFR5cGVQYXNzd29yZCk7Ci0jZW5kaWYgICAgCi0g
ICAgCiAgICAgaWYgKGEudXNlcigpICE9IGIudXNlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKGEucGFzc3dvcmQoKSAhPSBiLnBhc3N3b3JkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIENyZWRlbnRpYWw6
OnBsYXRmb3JtQ29tcGFyZShhLCBiKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuaAkocmV2aXNpb24gMTcxNzM5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsNiBAQAogCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLSNkZWZpbmUgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVEIChQTEFU
Rk9STShDT0NPQSkpCi0KLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKLSNp
bmNsdWRlIDxTZWN1cml0eS9TZWNCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgot
I2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3JlZGVudGlhbDsKQEAgLTQ1
LDEzICszOCw2IEBAIGVudW0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHsKICAgICBDcmVkZW50aWFs
UGVyc2lzdGVuY2VQZXJtYW5lbnQKIH07CiAKLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19T
VVBQT1JURUQKLWVudW0gQ3JlZGVudGlhbFR5cGUgewotICAgIENyZWRlbnRpYWxUeXBlUGFzc3dv
cmQsCi0gICAgQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZQotfTsKLSNlbmRpZgotCiBj
bGFzcyBDcmVkZW50aWFsQmFzZSB7CiAKIHB1YmxpYzoKQEAgLTYyLDMzICs0OCwyNCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0OwogICAgIENyZWRlbnRpYWxQZXJzaXN0
ZW5jZSBwZXJzaXN0ZW5jZSgpIGNvbnN0OwogICAgIAotI2lmIENFUlRJRklDQVRFX0NSRURFTlRJ
QUxTX1NVUFBPUlRFRAotICAgIFNlY0lkZW50aXR5UmVmIGlkZW50aXR5KCkgY29uc3Q7Ci0gICAg
Q0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZXMoKSBjb25zdDsKLSAgICBDcmVkZW50aWFsVHlwZSB0eXBl
KCkgY29uc3Q7Ci0jZW5kaWYgICAgCi0gICAgCisgICAgc3RhdGljIGJvb2wgY29tcGFyZShjb25z
dCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlhbCYpOworCiBwcm90ZWN0ZWQ6CiAgICAgQ3Jl
ZGVudGlhbEJhc2UoKTsKICAgICBDcmVkZW50aWFsQmFzZShjb25zdCBTdHJpbmcmIHVzZXIsIGNv
bnN0IFN0cmluZyYgcGFzc3dvcmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CiAgICAgQ3JlZGVu
dGlhbEJhc2UoY29uc3QgQ3JlZGVudGlhbCYgb3JpZ2luYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5j
ZSk7Ci0jaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECi0gICAgQ3JlZGVudGlh
bEJhc2UoU2VjSWRlbnRpdHlSZWYsIENGQXJyYXlSZWYgY2VydGlmaWNhdGVzLCBDcmVkZW50aWFs
UGVyc2lzdGVuY2UpOwotI2VuZGlmCi0gICAgCisKKyAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNv
bXBhcmUoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IENyZWRlbnRpYWwmKSB7IHJldHVybiB0cnVl
OyB9CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdXNlcjsKICAgICBTdHJpbmcgbV9wYXNzd29y
ZDsKICAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2UgbV9wZXJzaXN0ZW5jZTsKLSNpZiBDRVJUSUZJ
Q0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKLSAgICBSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+
IG1faWRlbnRpdHk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IG1fY2VydGlmaWNhdGVzOwot
ICAgIENyZWRlbnRpYWxUeXBlIG1fdHlwZTsKLSNlbmRpZgogfTsKIAotYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENyZWRlbnRpYWwmIGEsIGNvbnN0IENyZWRlbnRpYWwmIGIpOworaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDcmVkZW50aWFsJiBhLCBjb25zdCBDcmVkZW50aWFsJiBiKSB7IHJl
dHVybiBDcmVkZW50aWFsQmFzZTo6Y29tcGFyZShhLCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBDcmVkZW50aWFsJiBhLCBjb25zdCBDcmVkZW50aWFsJiBiKSB7IHJldHVybiAh
KGEgPT0gYik7IH0KICAgICAKIH07CisKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50
aWFsQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBDcmVkZW50aWFsQ29jb2FfaAorI2RlZmluZSBDcmVkZW50aWFsQ29jb2FfaAorCisj
aW5jbHVkZSAiQ3JlZGVudGlhbEJhc2UuaCIKKyNpbmNsdWRlIDxTZWN1cml0eS9TZWNCYXNlLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWFj
cm8gb25jZSBpdCBpcyBub3QgdXNlZCBpbiBXZWJLaXQuCisjZGVmaW5lIENFUlRJRklDQVRFX0NS
RURFTlRJQUxTX1NVUFBPUlRFRCAxCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBDcmVk
ZW50aWFsVHlwZSB7CisgICAgQ3JlZGVudGlhbFR5cGVQYXNzd29yZCwKKyAgICBDcmVkZW50aWFs
VHlwZUNsaWVudENlcnRpZmljYXRlCit9OworCitjbGFzcyBDcmVkZW50aWFsIDogcHVibGljIENy
ZWRlbnRpYWxCYXNlIHsKK3B1YmxpYzoKKyAgICBDcmVkZW50aWFsKCkKKyAgICAgICAgOiBDcmVk
ZW50aWFsQmFzZSgpCisgICAgICAgICwgbV90eXBlKENyZWRlbnRpYWxUeXBlUGFzc3dvcmQpCisg
ICAgeworICAgIH0KKworICAgIENyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBT
dHJpbmcmIHBhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2UpCisgICAg
ICAgIDogQ3JlZGVudGlhbEJhc2UodXNlciwgcGFzc3dvcmQsIHBlcnNpc3RlbmNlKQorICAgICAg
ICAsIG1fdHlwZShDcmVkZW50aWFsVHlwZVBhc3N3b3JkKQorICAgIHsKKyAgICB9CisKKyAgICBD
cmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmIG9yaWdpbmFsLCBDcmVkZW50aWFsUGVyc2lzdGVu
Y2UgcGVyc2lzdGVuY2UpCisgICAgICAgIDogQ3JlZGVudGlhbEJhc2Uob3JpZ2luYWwsIHBlcnNp
c3RlbmNlKQorICAgICAgICAsIG1fdHlwZShvcmlnaW5hbC5tX3R5cGUpCisgICAgeworICAgIH0K
KworICAgIENyZWRlbnRpYWwoU2VjSWRlbnRpdHlSZWYsIENGQXJyYXlSZWYgY2VydGlmaWNhdGVz
LCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CisK
KyAgICBTZWNJZGVudGl0eVJlZiBpZGVudGl0eSgpIGNvbnN0OworICAgIENGQXJyYXlSZWYgY2Vy
dGlmaWNhdGVzKCkgY29uc3Q7CisgICAgQ3JlZGVudGlhbFR5cGUgdHlwZSgpIGNvbnN0OworCisg
ICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBD
cmVkZW50aWFsJik7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiBt
X2lkZW50aXR5OworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBtX2NlcnRpZmljYXRlczsKKyAg
ICBDcmVkZW50aWFsVHlwZSBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBDcmVkZW50aWFsQ29jb2FfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0JKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRp
YWxDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJDcmVkZW50aWFsQ29jb2EuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitDcmVkZW50aWFsOjpDcmVkZW50aWFsKFNlY0lkZW50aXR5
UmVmIGlkZW50aXR5LCBDRkFycmF5UmVmIGNlcnRpZmljYXRlcywgQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlIHBlcnNpc3RlbmNlKQorICAgIDogQ3JlZGVudGlhbEJhc2UoZW1wdHlTdHJpbmcoKSwgZW1w
dHlTdHJpbmcoKSwgcGVyc2lzdGVuY2UpCisgICAgLCBtX2lkZW50aXR5KGlkZW50aXR5KQorICAg
ICwgbV9jZXJ0aWZpY2F0ZXMoY2VydGlmaWNhdGVzKQorICAgICwgbV90eXBlKENyZWRlbnRpYWxU
eXBlQ2xpZW50Q2VydGlmaWNhdGUpCit7Cit9CisKK2Jvb2wgQ3JlZGVudGlhbDo6aXNFbXB0eSgp
IGNvbnN0Cit7CisgICAgaWYgKG1fdHlwZSA9PSBDcmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmlj
YXRlICYmIChtX2lkZW50aXR5IHx8IG1fY2VydGlmaWNhdGVzKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIENyZWRlbnRpYWxCYXNlOjppc0VtcHR5KCk7Cit9CisKK1NlY0lk
ZW50aXR5UmVmIENyZWRlbnRpYWw6OmlkZW50aXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9p
ZGVudGl0eS5nZXQoKTsKK30KKyAgICAKK0NGQXJyYXlSZWYgQ3JlZGVudGlhbDo6Y2VydGlmaWNh
dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jZXJ0aWZpY2F0ZXMuZ2V0KCk7Cit9CisgICAg
CitDcmVkZW50aWFsVHlwZSBDcmVkZW50aWFsOjp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV90eXBlOworfQorCitib29sIENyZWRlbnRpYWw6OnBsYXRmb3JtQ29tcGFyZShjb25zdCBDcmVk
ZW50aWFsJiBhLCBjb25zdCBDcmVkZW50aWFsJiBiKQoreworICAgIGlmIChhLnR5cGUoKSAhPSBD
cmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlIHx8IGIudHlwZSgpICE9IENyZWRlbnRpYWxU
eXBlQ2xpZW50Q2VydGlmaWNhdGUpCisgICAgICAgIHJldHVybiBhLnR5cGUoKSA9PSBiLnR5cGUo
KTsKKworICAgIC8vIEZJWE1FOiBJcyBwb2ludGVyIGNvbXBhcmlzb24gb2YgdGhlIGlkZW50aXR5
IGFuZCBjZXJ0aWZpY2F0ZXMgcHJvcGVydGllcyBzdWZmaWNpZW50PworICAgIGlmIChhLmlkZW50
aXR5KCkgIT0gYi5pZGVudGl0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEu
Y2VydGlmaWNhdGVzKCkgIT0gYi5jZXJ0aWZpY2F0ZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhl
bnRpY2F0aW9uTWFjLm1tCShyZXZpc2lvbiAxNzE3MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjQyLDE0ICsyNDIsMTIgQEAgTlNVUkxDcmVkZW50aWFsICptYWMoY29uc3QgQ3JlZGVudGlhbCYg
YwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0jaWYgQ0VSVElG
SUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVECiAgICAgaWYgKGNvcmVDcmVkZW50aWFsLnR5cGUo
KSA9PSBDcmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlKSB7CiAgICAgICAgIHJldHVybiBb
W1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoSWRlbnRpdHk6Y29yZUNyZWRlbnRpYWwu
aWRlbnRpdHkoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2VydGlmaWNhdGVzOihOU0FycmF5ICopY29yZUNyZWRlbnRpYWwuY2VydGlmaWNhdGVzKCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzaXN0ZW5jZTpw
ZXJzaXN0ZW5jZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdXRvcmVsZWFzZV07CiAgICAgfQotI2VuZGlmCiAKICAgICByZXR1cm4gW1tbTlNVUkxDcmVk
ZW50aWFsIGFsbG9jXSBpbml0V2l0aFVzZXI6Y29yZUNyZWRlbnRpYWwudXNlcigpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6Y29yZUNyZWRlbnRpYWwu
cGFzc3dvcmQoKQpAQCAtMjc4LDExICsyNzYsOSBAQCBDcmVkZW50aWFsIGNvcmUoTlNVUkxDcmVk
ZW50aWFsICptYWNDcmVkCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAKLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKICAgICBTZWNJZGVudGl0
eVJlZiBpZGVudGl0eSA9IFttYWNDcmVkZW50aWFsIGlkZW50aXR5XTsKICAgICBpZiAoaWRlbnRp
dHkpCiAgICAgICAgIHJldHVybiBDcmVkZW50aWFsKGlkZW50aXR5LCAoQ0ZBcnJheVJlZilbbWFj
Q3JlZGVudGlhbCBjZXJ0aWZpY2F0ZXNdLCBwZXJzaXN0ZW5jZSk7Ci0jZW5kaWYKICAgICAKICAg
ICByZXR1cm4gQ3JlZGVudGlhbChbbWFjQ3JlZGVudGlhbCB1c2VyXSwgW21hY0NyZWRlbnRpYWwg
cGFzc3dvcmRdLCBwZXJzaXN0ZW5jZSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235706</attachid>
            <date>2014-07-29 15:56:08 -0700</date>
            <delta_ts>2014-07-29 16:32:14 -0700</delta_ts>
            <desc>WIP for EWS</desc>
            <filename>135327-3.diff</filename>
            <type>text/plain</type>
            <size>46736</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MTc2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDE0LTA3LTI5ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFkZSBDcmVkZW50aWFsIGhvbGQg
b250byBhbiBOU1VSTENyZWRlbnRpYWwgd2hlbiBuZWVkZWQuCisgICAgICAgIFdvcmsgdG93YXJk
cyBmaXhpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTMyNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5n
ZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IFVwZGF0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaDogUmVtb3ZlZCBkZWZp
bml0aW9uIG9mIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRCwKKyAgICAgICAgd2hp
Y2ggaXMgbm90IHVzZWQgYW55bW9yZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3Jl
ZGVudGlhbEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxCYXNlOjplbmNvZGlu
Z1JlcXVpcmVzUGxhdGZvcm1EYXRhKTogQWRkZWQgYSBiYXNlIGltcGxlbWVudGF0aW9uIHRoYXQK
KyAgICAgICAgcmV0dXJucyBmYWxzZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
QXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIENoYW5nZWQgdG8gdXNlIHRoZSBDcmVkZW50
aWFsIGNvbnN0cnVjdG9yIHRoYXQgdGFrZXMgYW4gQ0ZVUkxDcmVkZW50aWFsLCBhbmQgdGhlIG5l
dworICAgICAgICBjZkNyZWRlbnRpYWwgbWVtYmVyIGZ1bmN0aW9uLiBNYWRlIHRoZSBjcmVhdGVD
RiBhbmQgY29yZSBmdW5jdGlvbnMgV2luZG93cy1vbmx5IGFuZAorICAgICAgICB0aGVyZWZvcmUg
cmVtb3ZlZCB0aGUgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVEIGNvZGUgZnJvbSB0
aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oOgor
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVu
dFN0b3JhZ2UpOiBDaGFuZ2VkIHRvIGNvbnN0cnVjdCBhIENyZWRlbnRpYWwKKyAgICAgICAgZnJv
bSBhIENGVVJMQ3JlZGVudGlhbC4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdl
OjpzYXZlVG9QZXJzaXN0ZW50U3RvcmFnZSk6IENoYW5nZWQgdG8gdXNlIHRoZSBuZXcgY2ZDcmVk
ZW50aWFsCisgICAgICAgIG1lbWJlciBmdW5jdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogRGl0dG8gdG8g
Ym90aC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRp
YWwpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlh
bENvY29hLmg6CisgICAgICAgIFJlcGxhY2VkIHRoZSBtX2lkZW50aXR5LCBtX2NlcnRpZmljYXRl
cyBhbmQgbV90eXBlIG1lbWJlciB2YXJpYWJsZXMgd2l0aCBhbiBtX25zQ3JlZGVudGlhbAorICAg
ICAgICBvbmUgaG9sZGluZyBvbnRvIGFuIE5TVVJMQ3JlZGVudGlhbC4gRGVjbGFyZWQgY29uc3Ry
dWN0b3JzIGZyb20gYW5kIGdldHRlcnMgZm9yCisgICAgICAgIE5TVVJMQ3JlZGVudGlhbCBhbmQg
Q0ZVUkxDcmVkZW50aWFsUmVmLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6ZW5jb2Rp
bmdSZXF1aXJlc1BsYXRmb3JtRGF0YSk6IE92ZXJyaWRlIHRoYXQgY2hlY2tzIHRoZQorICAgICAg
ICBOU1VSTENyZWRlbnRpYWwgaWYgbmVjZXNzYXJ5LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjp0b05TVVJM
Q3JlZGVudGlhbFBlcnNpc3RlbmNlKTogTmV3IGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnRvQ3JlZGVudGlhbFBlcnNpc3RlbmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDcmVkZW50aWFsOjpDcmVkZW50aWFsKTogRGVmaW5lZCBjb25zdHJ1Y3RvcnMgdG8gY3JlYXRl
IG9yIHRha2UgYW4KKyAgICAgICAgTlNVUkxDcmVkZW50aWFsLgorICAgICAgICAoV2ViQ29yZTo6
Q3JlZGVudGlhbDo6Y2ZDcmVkZW50aWFsKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDcmVk
ZW50aWFsOjpuc0NyZWRlbnRpYWwpOiBBZGRlZC4gUmV0dXJucyBuaWwgZm9yIHRoZSBlbXB0eSBj
cmVkZW50aWFsLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6aXNFbXB0eSk6IENoYW5n
ZWQgdG8gY2hlY2sgbV9uc0NyZWRlbnRpYWwuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFs
OjpwbGF0Zm9ybUNvbXBhcmUpOiBDaGFuZ2VkIHRvIGNvbXBhcmUgbV9uc0NyZWRlbnRpYWwgaWYg
bmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6ZW5jb2RpbmdSZXF1aXJlc1Bs
YXRmb3JtRGF0YSk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgY3JlZGVudGlhbCBpcyBub3QKKyAgICAg
ICAgYSB1c2VyIGFuZCBhIHBhc3N3b3JkLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvQXV0aGVudGljYXRpb25NYWMuaDogUmVtb3ZlZCBtYWMgYW5kIGNvcmUgZnVuY3Rpb25zIGZv
ciBDcmVkZW50aWFsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0
aW9uTWFjLm1tOgorICAgICAgICAoLVtXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxs
ZW5nZVNlbmRlciB1c2VDcmVkZW50aWFsOmZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0pOgor
ICAgICAgICBDaGFuZ2VkIHRvIHVzZSBDcmVkZW50aWFsIGNvbnN0cnVjdG9yIHRoYXQgdGFrZXMg
YW4gTlNVUkxDcmVkZW50aWFsLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogRGl0dG8uIEFsc28gdXNlIHRoZQorICAg
ICAgICBuc0NyZWRlbnRpYWwgZ2V0dGVyLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFs
U3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKTogVXNlIG5ldyBDcmVkZW50aWFsIGNv
bnN0cnVjdG9yLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogRGl0dG8uIEFsc28gdXNlIHRoZQorICAgICAgICBuc0Ny
ZWRlbnRpYWwgZ2V0dGVyLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2Vp
dmVkQ3JlZGVudGlhbCk6IERpdHRvLgorCiAyMDE0LTA3LTI5ICBQcmF0aWsgU29sYW5raSAgPHBz
b2xhbmtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSRUdSRVNTSU9OKHIxNzE1MjYpOiBQ
REYgZG9jdW1lbnRzIGZhaWwgdG8gbG9hZCBpbiBXZWJLaXQxIHdpdGggZGlzayBpbWFnZSBjYWNo
aW5nIGVuYWJsZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNzE3NDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNzEsNiAr
NzEsOCBAQCBfX1pOM1dURjZTdHJpbmdDMUVQSzEwX19DRlN0cmluZwogX19aTjdXZWJDb3JlMTBD
bGllbnRSZWN0QzFFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJL
TlNfOUZsb2F0UmVjdEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXYKK19fWk43V2ViQ29y
ZTEwQ3JlZGVudGlhbDI4ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YUVQMTVOU1VSTENyZWRl
bnRpYWwKK19fWk43V2ViQ29yZTEwQ3JlZGVudGlhbEMxRVAxNU5TVVJMQ3JlZGVudGlhbAogX19a
TjdXZWJDb3JlMTBGbG9hdFBvaW50QzFFUks3Q0dQb2ludAogX19aTjdXZWJDb3JlMTBGbG9hdFBv
aW50QzFFUktOU184SW50UG9pbnRFCiBfX1pON1dlYkNvcmUxMEZvbnRHbHlwaHMxNXJlbGVhc2VG
b250RGF0YUV2CkBAIC0xMDcyLDcgKzEwNzQsNiBAQCBfX1pON1dlYkNvcmUzVVJMQzFFTlNfMThQ
YXJzZWRVUkxTdHJpbmdUCiBfX1pON1dlYkNvcmUzVVJMQzFFUDVOU1VSTAogX19aTjdXZWJDb3Jl
M1VSTEMxRVBLN19fQ0ZVUkwKIF9fWk43V2ViQ29yZTNVUkxDMUVSS1MwX1JLTjNXVEY2U3RyaW5n
RQotX19aTjdXZWJDb3JlM21hY0VSS05TXzEwQ3JlZGVudGlhbEUKIF9fWk43V2ViQ29yZTNtYWNF
UktOU18yM0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRQogX19aTjdXZWJDb3JlNDByZXN0cmljdE1p
bmltdW1TY2FsZUZhY3RvclRvVmlld3BvcnRTaXplRVJOU18xOFZpZXdwb3J0QXR0cmlidXRlc0VO
U183SW50U2l6ZUVmCiBfX1pON1dlYkNvcmU0MlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJl
Zm9yZUNvbXBvbmVudEVQNU5TVVJMMThDRlVSTENvbXBvbmVudFR5cGUKQEAgLTExNDksNyArMTE1
MCw2IEBAIF9fWk43V2ViQ29yZTRQYWdlRDFFdgogX19aTjdXZWJDb3JlNFBhdGgxNGFkZFJvdW5k
ZWRSZWN0RVJLTlNfOUZsb2F0UmVjdEVSS05TXzlGbG9hdFNpemVFTlMwXzE5Um91bmRlZFJlY3RT
dHJhdGVneUUKIF9fWk43V2ViQ29yZTRQYXRoQzFFdgogX19aTjdXZWJDb3JlNFBhdGhEMUV2Ci1f
X1pON1dlYkNvcmU0Y29yZUVQMTVOU1VSTENyZWRlbnRpYWwKIF9fWk43V2ViQ29yZTRjb3JlRVAy
OE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlF
eGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TMF83UHJvZmlsZUUKIF9fWk43V2Vi
Q29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEw
Q2xpZW50UmVjdEUKQEAgLTE1MzYsMTAgKzE1MzYsOCBAQCBfX1pON1dlYkNvcmU5dG9FbGVtZW50
RU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmU5dW5pb25SZWN0RVJLTjNXVEY2VmVjdG9ySU5T
XzlGbG9hdFJlY3RFTG0wRU5TMF8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTkszSlNDOEJpbmRp
bmdzMTBSb290T2JqZWN0MTJnbG9iYWxPYmplY3RFdgogX19aTkszV1RGNlN0cmluZzE0Y3JlYXRl
Q0ZTdHJpbmdFdgotX19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDEyY2VydGlmaWNhdGVzRXYKLV9f
Wk5LN1dlYkNvcmUxMENyZWRlbnRpYWw0dHlwZUV2CitfX1pOSzdXZWJDb3JlMTBDcmVkZW50aWFs
MTJuc0NyZWRlbnRpYWxFdgogX19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDdpc0VtcHR5RXYKLV9f
Wk5LN1dlYkNvcmUxMENyZWRlbnRpYWw4aWRlbnRpdHlFdgogX19aTks3V2ViQ29yZTEwRmxvYXRQ
b2ludGN2N0NHUG9pbnRFdgogX19aTks3V2ViQ29yZTEwRm9udEdseXBoczE3cmVhbGl6ZUZvbnRE
YXRhQXRFUktOU18xNUZvbnREZXNjcmlwdGlvbkVqCiBfX1pOSzdXZWJDb3JlMTBMYXlvdXRSZWN0
OGNvbnRhaW5zRVJLUzBfCkBAIC0yMjIxLDcgKzIyMTksNiBAQCBfX1pON1dlYkNvcmUzNmluaXRp
YWxpemVMb2dnaW5nQ2hhbm5lbHNJCiAub2JqY19jbGFzc19uYW1lX1dlYkZvbnRDYWNoZQogLm9i
amNfY2xhc3NfbmFtZV9XZWJXaW5kb3dGYWRlQW5pbWF0aW9uCiAub2JqY19jbGFzc19uYW1lX1dl
YldpbmRvd1NjYWxlQW5pbWF0aW9uCi1fX1pON1dlYkNvcmUxMENyZWRlbnRpYWxDMUVQMjBPcGFx
dWVTZWNJZGVudGl0eVJlZlBLOV9fQ0ZBcnJheU5TXzIxQ3JlZGVudGlhbFBlcnNpc3RlbmNlRQog
X19aTjdXZWJDb3JlMTBGbG9hdFBvaW50QzFFUks4X05TUG9pbnQKIF9fWk43V2ViQ29yZTEwaGFu
ZEN1cnNvckV2CiBfX1pON1dlYkNvcmUxMUNhY2hlZEltYWdlNWltYWdlRXYKQEAgLTI1MjcsNyAr
MjUyNCw2IEBAIF9XZWJUaHJlYWRVbmxvY2tHdWFyZEZvck1haWwKIF9XZWJVSUFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uCiBfV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZv
cmVncm91bmROb3RpZmljYXRpb24KIF9XZWJVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5v
dGlmaWNhdGlvbgotX19aTjdXZWJDb3JlMTBDcmVkZW50aWFsQzFFUDEzX19TZWNJZGVudGl0eVBL
OV9fQ0ZBcnJheU5TXzIxQ3JlZGVudGlhbFBlcnNpc3RlbmNlRQogX19aTjdXZWJDb3JlMTBSZW5k
ZXJWaWV3MzVyZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZEV2CiBfX1pON1dlYkNv
cmUxMFNjcm9sbFZpZXcxNXNldFNjcm9sbE9mZnNldEVSS05TXzhJbnRQb2ludEUKIF9fWk43V2Vi
Q29yZTEwU2Nyb2xsVmlldzIxc2V0RXhwb3NlZENvbnRlbnRSZWN0RVJLTlNfOUZsb2F0UmVjdEUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oCShy
ZXZpc2lvbiAxNzE3NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRl
bnRpYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsNiBAQAogCiAjaW5jbHVkZSAiQ3Jl
ZGVudGlhbEJhc2UuaCIKIAotLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1hY3JvIG9uY2UgaXQgaXMg
bm90IHVzZWQgaW4gV2ViS2l0LgotI2RlZmluZSBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQ
T1JURUQgMAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyZWRlbnRpYWwgOiBwdWJs
aWMgQ3JlZGVudGlhbEJhc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9DcmVkZW50aWFsQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuaAkocmV2aXNpb24gMTcxNzQ5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw3ICs0Nyw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKCkgY29u
c3Q7CiAgICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0OwogICAgIENyZWRlbnRpYWxQZXJzaXN0
ZW5jZSBwZXJzaXN0ZW5jZSgpIGNvbnN0OwotICAgIAorCisgICAgYm9vbCBlbmNvZGluZ1JlcXVp
cmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHN0YXRpYyBi
b29sIGNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IENyZWRlbnRpYWwmKTsKIAogcHJv
dGVjdGVkOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50
aWNhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCShyZXZpc2lvbiAxNzE3NDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NSwxMCArNTUsMTEgQEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhl
bnRpY2F0aW9uQwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCkKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShQcm90ZWN0aW9u
U3BhY2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlZGVudGlhbChDRlVSTEF1dGhD
aGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVuZ2UpKSwKICNlbHNlCiAgICAg
OiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQ
cm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVuZ2UpKSwKLSNlbmRpZgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50
aWFsKGNmQ2hhbGxlbmdlKSksCisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVDb3VudChjZkNoYWxsZW5n
ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENGVVJMUmVzcG9uc2VSZWYp
Q0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNlKGNmQ2hhbGxlbmdlKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRFcnJvcihj
ZkNoYWxsZW5nZSkpCkBAIC05MiwxMSArOTMsMTAgQEAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNy
ZWF0ZUNGKGNvbnN0IEF1dAogewogICAgIC8vIEZJWE1FOiBXaHkgbm90IGNhY2hlIENGVVJMQXV0
aENoYWxsZW5nZVJlZiBpbiBtX2NmQ2hhbGxlbmdlPyBGb3VuZGF0aW9uIGNvdW50ZXJwYXJ0IGRv
ZXMgdGhhdC4KIAotICAgIENGVVJMQ3JlZGVudGlhbFJlZiBjcmVkZW50aWFsID0gY3JlYXRlQ0Yo
Y29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSk7Ci0gICAgCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxs
ZW5nZUNyZWF0ZSgwLCBjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmNmU3BhY2UoKSwg
Y3JlZGVudGlhbCwKKyAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZVUkxBdXRo
Q2hhbGxlbmdlQ3JlYXRlKDAsIGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuY2ZTcGFj
ZSgpLCBjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLmNmQ3JlZGVudGlhbCgpLAog
I2Vsc2UKKyAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsID0gYWRv
cHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKSk7CiAgICAg
UmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBwcm90ZWN0aW9uU3BhY2UgPSBhZG9w
dENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpKTsKIAogICAgIENG
VVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQgPSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwg
cHJvdGVjdGlvblNwYWNlLmdldCgpLCBjcmVkZW50aWFsLApAQCAtMTA0LDEwICsxMDQsMTEgQEAg
Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1dAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291
bnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxl
bmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVzcG9uc2UoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLmVycm9yKCkpOwotICAgIENGUmVs
ZWFzZShjcmVkZW50aWFsKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisjaWYgUExBVEZPUk0o
V0lOKQorCiBDRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlhbCYgY29y
ZUNyZWRlbnRpYWwpCiB7CiAgICAgQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVu
Y2UgPSBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lOwpAQCAtMTI0LDE1ICsxMjUsOSBA
QCBDRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVuCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFM
U19TVVBQT1JURUQKLSAgICBpZiAoY29yZUNyZWRlbnRpYWwudHlwZSgpID09IENyZWRlbnRpYWxU
eXBlQ2xpZW50Q2VydGlmaWNhdGUpCi0gICAgICAgIHJldHVybiBDRlVSTENyZWRlbnRpYWxDcmVh
dGVXaXRoSWRlbnRpdHlBbmRDZXJ0aWZpY2F0ZUFycmF5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNv
cmVDcmVkZW50aWFsLmlkZW50aXR5KCksIGNvcmVDcmVkZW50aWFsLmNlcnRpZmljYXRlcygpLCBw
ZXJzaXN0ZW5jZSk7Ci0jZW5kaWYKLQogICAgIHJldHVybiBDRlVSTENyZWRlbnRpYWxDcmVhdGUo
MCwgY29yZUNyZWRlbnRpYWwudXNlcigpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVDcmVk
ZW50aWFsLnBhc3N3b3JkKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwgcGVyc2lzdGVuY2Up
OwogfQogCi0jaWYgUExBVEZPUk0oV0lOKQogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY3JlYXRl
Q0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCiB7CiAgICAgQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VTZXJ2ZXJUeXBlIHNlcnZlclR5cGUgPSBrQ0ZVUkxQcm90ZWN0aW9uU3BhY2VTZXJ2
ZXJIVFRQOwpAQCAtMTk5LDcgKzE5NCw2IEBAIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0
ZUNGKGNvbnN0IFAKIAogICAgIHJldHVybiBDRlVSTFByb3RlY3Rpb25TcGFjZUNyZWF0ZSgwLCBj
b3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVTcGFjZS5wb3J0KCks
IHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHNj
aGVtZSk7CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQogCiBDcmVkZW50aWFsIGNvcmUoQ0ZV
UkxDcmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCkKIHsKQEAgLTIyMCwxNyArMjE0LDEwIEBAIENy
ZWRlbnRpYWwgY29yZShDRlVSTENyZWRlbnRpYWxSZWYgY2ZDcmUKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogCi0jaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9S
VEVECi0gICAgU2VjSWRlbnRpdHlSZWYgaWRlbnRpdHkgPSBDRlVSTENyZWRlbnRpYWxHZXRDZXJ0
aWZpY2F0ZUlkZW50aXR5KGNmQ3JlZGVudGlhbCk7Ci0gICAgaWYgKGlkZW50aXR5KQotICAgICAg
ICByZXR1cm4gQ3JlZGVudGlhbChpZGVudGl0eSwgQ0ZVUkxDcmVkZW50aWFsR2V0Q2VydGlmaWNh
dGVBcnJheShjZkNyZWRlbnRpYWwpLCBwZXJzaXN0ZW5jZSk7Ci0jZW5kaWYKLQogICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gcGFzc3dvcmQgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbENvcHlQ
YXNzd29yZChjZkNyZWRlbnRpYWwpKTsKICAgICByZXR1cm4gQ3JlZGVudGlhbChDRlVSTENyZWRl
bnRpYWxHZXRVc2VybmFtZShjZkNyZWRlbnRpYWwpLCBwYXNzd29yZC5nZXQoKSwgcGVyc2lzdGVu
Y2UpOwogfQogCi0jaWYgUExBVEZPUk0oV0lOKQogUHJvdGVjdGlvblNwYWNlIGNvcmUoQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWYgY2ZTcGFjZSkKIHsKICAgICBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJU
eXBlIHNlcnZlclR5cGUgPSBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJIVFRQOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNG
LmgJKHJldmlzaW9uIDE3MTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQXV0aGVudGljYXRpb25DRi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNiArNDAsMTYgQEAg
Y2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIAogQ0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci1DRlVS
TENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlhbCYpOwogI2lmIFBMQVRGT1JN
KFdJTikKK0NGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJik7CiBD
RlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBj
b3JlKENGVVJMQXV0aENoYWxsZW5nZVJlZik7CiAjZW5kaWYKLUNyZWRlbnRpYWwgY29yZShDRlVS
TENyZWRlbnRpYWxSZWYpOwogI2lmIFBMQVRGT1JNKFdJTikKK0NyZWRlbnRpYWwgY29yZShDRlVS
TENyZWRlbnRpYWxSZWYpOwogUHJvdGVjdGlvblNwYWNlIGNvcmUoQ0ZVUkxQcm90ZWN0aW9uU3Bh
Y2VSZWYpOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAJKHJldmlz
aW9uIDE3MTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVu
dGlhbFN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDExICs0OSwxMiBAQCBD
cmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyCiB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbENGID0g
YWRvcHRDRih3a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UocHJvdGVjdGlv
blNwYWNlLmNmU3BhY2UoKSkpOworICAgIHJldHVybiBDcmVkZW50aWFsKGNyZWRlbnRpYWxDRi5n
ZXQoKSk7CiAjZWxzZQogICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJv
dGVjdGlvblNwYWNlQ0YgPSBhZG9wdENGKGNyZWF0ZUNGKHByb3RlY3Rpb25TcGFjZSkpOwogICAg
IFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWxDRiA9IGFkb3B0Q0Yod2tD
b3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKHByb3RlY3Rpb25TcGFjZUNGLmdl
dCgpKSk7Ci0jZW5kaWYKICAgICByZXR1cm4gY29yZShjcmVkZW50aWFsQ0YuZ2V0KCkpOworI2Vu
ZGlmCiB9CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC02MywxMiArNjQsOSBAQCB2b2lkIENyZWRl
bnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJzaXN0ZW50CiAKICAgICBpZiAoY3JlZGVudGlhbC5wZXJz
aXN0ZW5jZSgpID09IENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpIHsKICAgICAgICAgQ3JlZGVu
dGlhbCBzZXNzaW9uQ3JlZGVudGlhbChjcmVkZW50aWFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VG
b3JTZXNzaW9uKTsKLSAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gc2Vzc2lv
bkNyZWRlbnRpYWxDRiA9IGFkb3B0Q0YoY3JlYXRlQ0Yoc2Vzc2lvbkNyZWRlbnRpYWwpKTsKLSAg
ICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVj
dGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgc2Vzc2lvbkNyZWRlbnRpYWxDRi5nZXQoKSwgcHJv
dGVjdGlvblNwYWNlLmNmU3BhY2UoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUmV0YWluUHRy
PENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbENGID0gYWRvcHRDRihjcmVhdGVDRihjcmVk
ZW50aWFsKSk7Ci0gICAgICAgIENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VTZXREZWZhdWx0Q3JlZGVu
dGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlQ0YuZ2V0KCksIGNyZWRlbnRpYWxDRi5nZXQo
KSwgcHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSk7Ci0gICAgfQorICAgICAgICBDRlVSTENyZWRl
bnRpYWxTdG9yYWdlU2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3BhY2Uoc3RvcmFn
ZUNGLmdldCgpLCBzZXNzaW9uQ3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgcHJvdGVjdGlvblNw
YWNlLmNmU3BhY2UoKSk7CisgICAgfSBlbHNlCisgICAgICAgIENGVVJMQ3JlZGVudGlhbFN0b3Jh
Z2VTZXREZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlQ0YuZ2V0KCks
IGNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIHByb3RlY3Rpb25TcGFjZS5jZlNwYWNlKCkpOwog
fQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNpb24gMTcxNzQ5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAg
IGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEp
CiAgICAgICAgICAgICB1cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVy
bCgpOwotICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNvcmUoY3JlZGVudGlhbC5nZXQo
KSksIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CisgICAgICAgIENy
ZWRlbnRpYWxTdG9yYWdlOjpzZXQoQ3JlZGVudGlhbChjcmVkZW50aWFsLmdldCgpKSwgY2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKICAgICAgICAgCiAgICAgICAgIENG
VVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjcmVkZW50
aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgICAgICBk
LT5tX3VzZXIgPSBTdHJpbmcoKTsKQEAgLTM3Miw4ICszNzIsNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRo
ZSBjcmVkZW50aWFsIGJhY2ssIHBvc3NpYmx5IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRo
aXMgZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0
KGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1
cmVSZXNwb25zZSgpLnVybCgpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
UmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVh
dGVDRihjcmVkZW50aWFsKSk7Ci0gICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3Jl
ZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxl
bmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyAgICAgICAgICAgICAgICBDRlVSTENvbm5l
Y3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNy
ZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQxNiwxNyArNDE1
LDE1IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCgKICAgICAgICAg
Ly8gTWFuYWdlIHBlci1zZXNzaW9uIGNyZWRlbnRpYWxzIGludGVybmFsbHksIGJlY2F1c2Ugb25j
ZSBOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlclNlc3Npb24gaXMgdXNlZCwgdGhlcmUgaXMg
bm8gd2F5CiAgICAgICAgIC8vIHRvIGlnbm9yZSBpdCBmb3IgYSBwYXJ0aWN1bGFyIHJlcXVlc3Qg
KHNob3J0IG9mIHJlbW92aW5nIGl0IGFsdG9nZXRoZXIpLgogICAgICAgICBDcmVkZW50aWFsIHdl
YkNyZWRlbnRpYWwoY3JlZGVudGlhbC51c2VyKCksIGNyZWRlbnRpYWwucGFzc3dvcmQoKSwgQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRp
YWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbCkpOwot
ICAgICAgICAKKwogICAgICAgICBVUkwgdXJsVG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5n
ZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKICAgICAgICAgICAg
IHVybFRvU3RvcmUgPSBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7ICAgICAgCiAg
ICAgICAgIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQod2ViQ3JlZGVudGlhbCwgY2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKIAotICAgICAgICBDRlVSTENvbm5lY3Rpb25V
c2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBj
aGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOworICAgICAgICBDRlVSTENvbm5lY3Rp
b25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgd2ViQ3JlZGVudGlhbC5jZkNy
ZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICB9IGVs
c2UgewotICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwg
PSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKLSAgICAgICAgQ0ZVUkxDb25uZWN0aW9u
VXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwg
Y2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyAgICAgICAgQ0ZVUkxDb25uZWN0
aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVk
ZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgfQogCiAg
ICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCShyZXZpc2lvbiAx
NzE3NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRp
YWxDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw1MCArMzAsNDggQEAKICNpbmNsdWRlIDxT
ZWN1cml0eS9TZWNCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0vLyBGSVhN
RTogUmVtb3ZlIHRoaXMgbWFjcm8gb25jZSBpdCBpcyBub3QgdXNlZCBpbiBXZWJLaXQuCi0jZGVm
aW5lIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRCAxCisjaWYgVVNFKENGTkVUV09S
SykKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9DRlVSTENyZWRlbnRpYWwqIENGVVJMQ3JlZGVudGlh
bFJlZjsKKyNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CitPQkpDX0NMQVNTIE5TVVJMQ3Jl
ZGVudGlhbDsKIAotZW51bSBDcmVkZW50aWFsVHlwZSB7Ci0gICAgQ3JlZGVudGlhbFR5cGVQYXNz
d29yZCwKLSAgICBDcmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlCi19OworbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDcmVkZW50aWFsIDogcHVibGljIENyZWRlbnRpYWxCYXNlIHsK
IHB1YmxpYzoKICAgICBDcmVkZW50aWFsKCkKICAgICAgICAgOiBDcmVkZW50aWFsQmFzZSgpCi0g
ICAgICAgICwgbV90eXBlKENyZWRlbnRpYWxUeXBlUGFzc3dvcmQpCiAgICAgewogICAgIH0KIAog
ICAgIENyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3Jk
LCBDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2UpCiAgICAgICAgIDogQ3JlZGVudGlh
bEJhc2UodXNlciwgcGFzc3dvcmQsIHBlcnNpc3RlbmNlKQotICAgICAgICAsIG1fdHlwZShDcmVk
ZW50aWFsVHlwZVBhc3N3b3JkKQogICAgIHsKICAgICB9CiAKLSAgICBDcmVkZW50aWFsKGNvbnN0
IENyZWRlbnRpYWwmIG9yaWdpbmFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2Up
Ci0gICAgICAgIDogQ3JlZGVudGlhbEJhc2Uob3JpZ2luYWwsIHBlcnNpc3RlbmNlKQotICAgICAg
ICAsIG1fdHlwZShvcmlnaW5hbC5tX3R5cGUpCi0gICAgewotICAgIH0KKyAgICBDcmVkZW50aWFs
KGNvbnN0IENyZWRlbnRpYWwmLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwogCi0gICAgQ3JlZGVu
dGlhbChTZWNJZGVudGl0eVJlZiwgQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZXMsIENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZSk7CisjaWYgVVNFKENGTkVUV09SSykKKyAgICBleHBsaWNpdCBDcmVkZW50aWFs
KENGVVJMQ3JlZGVudGlhbFJlZik7CisjZW5kaWYKKyAgICBleHBsaWNpdCBDcmVkZW50aWFsKE5T
VVJMQ3JlZGVudGlhbCAqKTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgU2Vj
SWRlbnRpdHlSZWYgaWRlbnRpdHkoKSBjb25zdDsKLSAgICBDRkFycmF5UmVmIGNlcnRpZmljYXRl
cygpIGNvbnN0OwotICAgIENyZWRlbnRpYWxUeXBlIHR5cGUoKSBjb25zdDsKKyAgICBib29sIGVu
Y29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX25zQ3JlZGVudGlh
bCAmJiBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKG1fbnNDcmVkZW50aWFsLmdldCgpKTsg
fQorCisjaWYgVVNFKENGTkVUV09SSykKKyAgICBDRlVSTENyZWRlbnRpYWxSZWYgY2ZDcmVkZW50
aWFsKCkgY29uc3Q7CisjZW5kaWYKKyAgICBOU1VSTENyZWRlbnRpYWwgKm5zQ3JlZGVudGlhbCgp
IGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IENyZWRlbnRp
YWwmLCBjb25zdCBDcmVkZW50aWFsJik7CiAKIHByaXZhdGU6Ci0gICAgUmV0YWluUHRyPFNlY0lk
ZW50aXR5UmVmPiBtX2lkZW50aXR5OwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBtX2NlcnRp
ZmljYXRlczsKLSAgICBDcmVkZW50aWFsVHlwZSBtX3R5cGU7CisgICAgc3RhdGljIGJvb2wgZW5j
b2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YShOU1VSTENyZWRlbnRpYWwgKik7CisKKyAgICBtdXRh
YmxlIFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IG1fbnNDcmVkZW50aWFsOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0JKHJldmlzaW9uIDE3MTc0
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw1MSArMjYsMTE2IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIkNyZWRlbnRpYWxDb2NvYS5oIgogCisjaWYgVVNFKENGTkVUV09SSykK
K0BpbnRlcmZhY2UgTlNVUkxDcmVkZW50aWFsIChXZWJEZXRhaWxzKQorLSAoaWQpX2luaXRXaXRo
Q0ZVUkxDcmVkZW50aWFsOihDRlVSTENyZWRlbnRpYWxSZWYpY3JlZGVudGlhbDsKKy0gKENGVVJM
Q3JlZGVudGlhbFJlZikgX0NGVVJMQ3JlZGVudGlhbDsKK0BlbmQKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUNyZWRlbnRpYWw6OkNyZWRlbnRpYWwoU2VjSWRlbnRpdHlSZWYgaWRl
bnRpdHksIENGQXJyYXlSZWYgY2VydGlmaWNhdGVzLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVy
c2lzdGVuY2UpCi0gICAgOiBDcmVkZW50aWFsQmFzZShlbXB0eVN0cmluZygpLCBlbXB0eVN0cmlu
ZygpLCBwZXJzaXN0ZW5jZSkKLSAgICAsIG1faWRlbnRpdHkoaWRlbnRpdHkpCi0gICAgLCBtX2Nl
cnRpZmljYXRlcyhjZXJ0aWZpY2F0ZXMpCi0gICAgLCBtX3R5cGUoQ3JlZGVudGlhbFR5cGVDbGll
bnRDZXJ0aWZpY2F0ZSkKK3N0YXRpYyBOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZSB0b05TVVJM
Q3JlZGVudGlhbFBlcnNpc3RlbmNlKENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSkK
IHsKKyAgICBzd2l0Y2ggKHBlcnNpc3RlbmNlKSB7CisgICAgY2FzZSBDcmVkZW50aWFsUGVyc2lz
dGVuY2VOb25lOgorICAgICAgICByZXR1cm4gTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25l
OworICAgIGNhc2UgQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbjoKKyAgICAgICAgcmV0
dXJuIE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbjsKKyAgICBjYXNlIENyZWRl
bnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudDoKKyAgICAgICAgcmV0dXJuIE5TVVJMQ3JlZGVudGlh
bFBlcnNpc3RlbmNlUGVybWFuZW50OworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU7CiB9CiAKLWJvb2wg
Q3JlZGVudGlhbDo6aXNFbXB0eSgpIGNvbnN0CitzdGF0aWMgQ3JlZGVudGlhbFBlcnNpc3RlbmNl
IHRvQ3JlZGVudGlhbFBlcnNpc3RlbmNlKE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNp
c3RlbmNlKQogewotICAgIGlmIChtX3R5cGUgPT0gQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZp
Y2F0ZSAmJiAobV9pZGVudGl0eSB8fCBtX2NlcnRpZmljYXRlcykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBzd2l0Y2ggKHBlcnNpc3RlbmNlKSB7CisgICAgY2FzZSBOU1VSTENyZWRlbnRp
YWxQZXJzaXN0ZW5jZU5vbmU6CisgICAgICAgIHJldHVybiBDcmVkZW50aWFsUGVyc2lzdGVuY2VO
b25lOworICAgIGNhc2UgTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uOgorICAg
ICAgICByZXR1cm4gQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbjsKKyAgICBjYXNlIE5T
VVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlUGVybWFuZW50OgorICAgIGNhc2UgTlNVUkxDcmVkZW50
aWFsUGVyc2lzdGVuY2VTeW5jaHJvbml6YWJsZToKKyAgICAgICAgcmV0dXJuIENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZVBlcm1hbmVudDsKKyAgICB9CiAKLSAgICByZXR1cm4gQ3JlZGVudGlhbEJhc2U6
OmlzRW1wdHkoKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlTm9uZTsKK30KKworQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChjb25zdCBD
cmVkZW50aWFsJiBvcmlnaW5hbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQor
ICAgIDogQ3JlZGVudGlhbEJhc2Uob3JpZ2luYWwsIHBlcnNpc3RlbmNlKQoreworICAgIE5TVVJM
Q3JlZGVudGlhbCAqb3JpZ2luYWxOU1VSTENyZWRlbnRpYWwgPSBvcmlnaW5hbC5tX25zQ3JlZGVu
dGlhbC5nZXQoKTsKKyAgICBpZiAoIW9yaWdpbmFsTlNVUkxDcmVkZW50aWFsKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoTlNTdHJpbmcgKnVzZXIgPSBvcmlnaW5hbE5TVVJMQ3JlZGVudGlh
bC51c2VyKQorICAgICAgICBtX25zQ3JlZGVudGlhbCA9IGFkb3B0TlMoW1tOU1VSTENyZWRlbnRp
YWwgYWxsb2NdIGluaXRXaXRoVXNlcjp1c2VyIHBhc3N3b3JkOm9yaWdpbmFsTlNVUkxDcmVkZW50
aWFsLnBhc3N3b3JkIHBlcnNpc3RlbmNlOnRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVy
c2lzdGVuY2UpXSk7CisgICAgZWxzZSBpZiAoU2VjSWRlbnRpdHlSZWYgaWRlbnRpdHkgPSBvcmln
aW5hbE5TVVJMQ3JlZGVudGlhbC5pZGVudGl0eSkKKyAgICAgICAgbV9uc0NyZWRlbnRpYWwgPSBh
ZG9wdE5TKFtbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBpbml0V2l0aElkZW50aXR5OmlkZW50aXR5
IGNlcnRpZmljYXRlczpvcmlnaW5hbE5TVVJMQ3JlZGVudGlhbC5jZXJ0aWZpY2F0ZXMgcGVyc2lz
dGVuY2U6dG9OU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZShwZXJzaXN0ZW5jZSldKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIHNldCB0aGUgcGVyc2lzdGVu
Y2Ugb2Ygc2VydmVyIHRydXN0IGNyZWRlbnRpYWxzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgbV9uc0NyZWRlbnRpYWwgPSBvcmlnaW5hbE5TVVJMQ3JlZGVudGlhbDsK
KyAgICB9CiB9CiAKLVNlY0lkZW50aXR5UmVmIENyZWRlbnRpYWw6OmlkZW50aXR5KCkgY29uc3QK
KyNpZiBVU0UoQ0ZORVRXT1JLKQorQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChDRlVSTENyZWRlbnRp
YWxSZWYgY3JlZGVudGlhbCkKKyAgICA6IENyZWRlbnRpYWwoYWRvcHROUyhbW05TVVJMQ3JlZGVu
dGlhbCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxDcmVkZW50aWFsOmNyZWRlbnRpYWxdKS5nZXQoKSkK
IHsKLSAgICByZXR1cm4gbV9pZGVudGl0eS5nZXQoKTsKIH0KLSAgICAKLUNGQXJyYXlSZWYgQ3Jl
ZGVudGlhbDo6Y2VydGlmaWNhdGVzKCkgY29uc3QKKyNlbmRpZgorCitDcmVkZW50aWFsOjpDcmVk
ZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkKKyAgICA6IENyZWRlbnRpYWxCYXNl
KGNyZWRlbnRpYWwudXNlciwgY3JlZGVudGlhbC5wYXNzd29yZCwgdG9DcmVkZW50aWFsUGVyc2lz
dGVuY2UoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSkpCisgICAgLCBtX25zQ3JlZGVudGlhbChjcmVk
ZW50aWFsKQogewotICAgIHJldHVybiBtX2NlcnRpZmljYXRlcy5nZXQoKTsKIH0KLSAgICAKLUNy
ZWRlbnRpYWxUeXBlIENyZWRlbnRpYWw6OnR5cGUoKSBjb25zdAorCisjaWYgVVNFKENGTkVUV09S
SykKK0NGVVJMQ3JlZGVudGlhbFJlZiBDcmVkZW50aWFsOjpjZkNyZWRlbnRpYWwoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3R5cGU7CisgICAgcmV0dXJuIFtuc0NyZWRlbnRpYWwoKSBfQ0ZVUkxD
cmVkZW50aWFsXTsKIH0KKyNlbmRpZgogCi1ib29sIENyZWRlbnRpYWw6OnBsYXRmb3JtQ29tcGFy
ZShjb25zdCBDcmVkZW50aWFsJiBhLCBjb25zdCBDcmVkZW50aWFsJiBiKQorTlNVUkxDcmVkZW50
aWFsICpDcmVkZW50aWFsOjpuc0NyZWRlbnRpYWwoKSBjb25zdAogewotICAgIGlmIChhLnR5cGUo
KSAhPSBDcmVkZW50aWFsVHlwZUNsaWVudENlcnRpZmljYXRlIHx8IGIudHlwZSgpICE9IENyZWRl
bnRpYWxUeXBlQ2xpZW50Q2VydGlmaWNhdGUpCi0gICAgICAgIHJldHVybiBhLnR5cGUoKSA9PSBi
LnR5cGUoKTsKKyAgICBpZiAobV9uc0NyZWRlbnRpYWwpCisgICAgICAgIHJldHVybiBtX25zQ3Jl
ZGVudGlhbC5nZXQoKTsKIAotICAgIC8vIEZJWE1FOiBJcyBwb2ludGVyIGNvbXBhcmlzb24gb2Yg
dGhlIGlkZW50aXR5IGFuZCBjZXJ0aWZpY2F0ZXMgcHJvcGVydGllcyBzdWZmaWNpZW50PwotICAg
IGlmIChhLmlkZW50aXR5KCkgIT0gYi5pZGVudGl0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKGEuY2VydGlmaWNhdGVzKCkgIT0gYi5jZXJ0aWZpY2F0ZXMoKSkKKyAgICBpZiAo
Q3JlZGVudGlhbEJhc2U6OmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIG1f
bnNDcmVkZW50aWFsID0gYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gaW5pdFdpdGhV
c2VyOnVzZXIoKSBwYXNzd29yZDpwYXNzd29yZCgpIHBlcnNpc3RlbmNlOnRvTlNVUkxDcmVkZW50
aWFsUGVyc2lzdGVuY2UocGVyc2lzdGVuY2UoKSldKTsKKworICAgIHJldHVybiBtX25zQ3JlZGVu
dGlhbC5nZXQoKTsKK30KKworYm9vbCBDcmVkZW50aWFsOjppc0VtcHR5KCkgY29uc3QKK3sKKyAg
ICBpZiAobV9uc0NyZWRlbnRpYWwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBDcmVkZW50aWFsQmFzZTo6aXNFbXB0eSgpOworfQorCitib29s
IENyZWRlbnRpYWw6OnBsYXRmb3JtQ29tcGFyZShjb25zdCBDcmVkZW50aWFsJiBhLCBjb25zdCBD
cmVkZW50aWFsJiBiKQoreworICAgIGlmICghYS5tX25zQ3JlZGVudGlhbCAmJiAhYi5tX25zQ3Jl
ZGVudGlhbCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gW2EubnNDcmVkZW50
aWFsKCkgaXNFcXVhbDpiLm5zQ3JlZGVudGlhbCgpXTsKK30KKworYm9vbCBDcmVkZW50aWFsOjpl
bmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkK
K3sKKyAgICByZXR1cm4gIWNyZWRlbnRpYWwudXNlcjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGlj
YXRpb25NYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9BdXRoZW50aWNhdGlvbk1hYy5oCShyZXZpc2lvbiAxNzE3NDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxOCArMjgsMTQgQEAKICNpZmRlZiBfX09CSkNfXwogCiBAY2xhc3MgTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKLUBjbGFzcyBOU1VSTENyZWRlbnRpYWw7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci1jbGFzcyBD
cmVkZW50aWFsOwogCiBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWMoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLU5TVVJMQ3JlZGVudGlhbCAqbWFjKGNvbnN0IENyZWRl
bnRpYWwmKTsKIAogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICopOwotQ3JlZGVudGlhbCBjb3JlKE5TVVJMQ3JlZGVudGlhbCAqKTsKIAog
fQogI2VuZGlmIC8vIF9fT0JKQ19fCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQkocmV2aXNpb24gMTcx
NzQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRp
b25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbXBvcnQgIkF1dGhl
bnRpY2F0aW9uQ2xpZW50LmgiCiAjaW1wb3J0ICJDcmVkZW50aWFsLmgiCiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KLSNpbXBvcnQgPEZvdW5kYXRp
b24vTlNVUkxDcmVkZW50aWFsLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUHJvdGVjdGlv
blNwYWNlLmg+CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQpAQCAtNDMsMTEgKzQyLDYgQEAgKyhOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopX2F1dGhlbgogI2VuZGlmCiBAZW5kCiAKLUBpbnRl
cmZhY2UgTlNVUkxDcmVkZW50aWFsIChEZXRhaWxzKQotLSAoaWQpIF9pbml0V2l0aENGVVJMQ3Jl
ZGVudGlhbDooQ0ZVUkxDcmVkZW50aWFsUmVmKWNyZWRlbnRpYWw7Ci0tIChDRlVSTENyZWRlbnRp
YWxSZWYpIF9jZnVybGNyZWRlbnRpYWw7Ci1AZW5kCi0KICNlbmRpZgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTg4LDcgKzgyLDcgQEAgLSAodm9pZClkZXRhY2hDbGllbnQKIC0gKHZv
aWQpdXNlQ3JlZGVudGlhbDooTlNVUkxDcmVkZW50aWFsICopY3JlZGVudGlhbCBmb3JBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5n
ZQogewogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnJlY2VpdmVkQ3JlZGVu
dGlhbChjb3JlKGNoYWxsZW5nZSksIGNvcmUoY3JlZGVudGlhbCkpOworICAgICAgICBtX2NsaWVu
dC0+cmVjZWl2ZWRDcmVkZW50aWFsKGNvcmUoY2hhbGxlbmdlKSwgQ3JlZGVudGlhbChjcmVkZW50
aWFsKSk7CiB9CiAKIC0gKHZvaWQpY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdl
CkBAIC0xMjcsMTEgKzEyMSw2IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxB
dXRoZW4KICAgICByZXR1cm4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2NoYWxsZW5nZVNlbmRl
ciBjZkNoYWxsZW5nZV0sIFtjaGFsbGVuZ2VTZW5kZXIgY2xpZW50XSk7CiB9CiAKLUNyZWRlbnRp
YWwgY29yZShOU1VSTENyZWRlbnRpYWwgKm1hY0NyZWRlbnRpYWwpCi17Ci0gICAgcmV0dXJuIGNv
cmUoW21hY0NyZWRlbnRpYWwgX2NmdXJsY3JlZGVudGlhbF0pOwotfQotCiBOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlICptYWMoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVD
aGFsbGVuZ2UpCiB7CiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhDbGllbnQgPSBjb3Jl
Q2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7CkBAIC0xNDcsMTIgKzEzNiw2IEBAIE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm1hYyhjb25zdCAKICNlbmRpZgogfQogCi1OU1VS
TENyZWRlbnRpYWwgKm1hYyhjb25zdCBDcmVkZW50aWFsJiBjb3JlQ3JlZGVudGlhbCkKLXsKLSAg
ICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsID0gYWRvcHRDRihjcmVh
dGVDRihjb3JlQ3JlZGVudGlhbCkpOwotICAgIHJldHVybiBbW1tOU1VSTENyZWRlbnRpYWwgYWxs
b2NdIF9pbml0V2l0aENGVVJMQ3JlZGVudGlhbDpjcmVkZW50aWFsLmdldCgpXSBhdXRvcmVsZWFz
ZV07Ci19Ci0KICNlbHNlCiAKIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwKQEAgLTE3
MCw3ICsxNTMsNyBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DCiAK
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UpCiAgICAgOiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUJhc2UoUHJvdGVjdGlvblNwYWNlKFtjaGFsbGVuZ2UgcHJvdGVjdGlvblNwYWNlXSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZShbY2hhbGxlbmdlIHByb3Bv
c2VkQ3JlZGVudGlhbF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWRl
bnRpYWwoW2NoYWxsZW5nZSBwcm9wb3NlZENyZWRlbnRpYWxdKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbY2hhbGxlbmdlIHByZXZpb3VzRmFpbHVyZUNvdW50XSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hhbGxlbmdlIGZhaWx1cmVSZXNwb25zZV0s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoYWxsZW5nZSBlcnJvcl0pCkBA
IC0yMTYsNzMgKzE5OSwxOCBAQCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWMoY29u
c3QgCiAgICAgICAgIHJldHVybiBjb3JlQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoKTsKICAgICAgICAgCiAgICAgcmV0dXJuIFtbW05TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgYWxsb2NdIGluaXRXaXRoUHJvdGVjdGlvblNwYWNlOmNvcmVDaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlKCkubnNTcGFjZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvcG9zZWRDcmVkZW50aWFsOm1hYyhjb3JlQ2hhbGxlbmdl
LnByb3Bvc2VkQ3JlZGVudGlhbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3Bvc2VkQ3JlZGVudGlhbDpjb3JlQ2hhbGxlbmdlLnBy
b3Bvc2VkQ3JlZGVudGlhbCgpLm5zQ3JlZGVudGlhbCgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzRmFpbHVyZUNvdW50OmNvcmVD
aGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVSZXNwb25zZTpjb3JlQ2hh
bGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJv
cjpjb3JlQ2hhbGxlbmdlLmVycm9yKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kZXI6Y29yZUNoYWxsZW5nZS5z
ZW5kZXIoKV0gYXV0b3JlbGVhc2VdOwogfQogCi1OU1VSTENyZWRlbnRpYWwgKm1hYyhjb25zdCBD
cmVkZW50aWFsJiBjb3JlQ3JlZGVudGlhbCkKLXsKLSAgICBpZiAoY29yZUNyZWRlbnRpYWwuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgTlNVUkxDcmVkZW50aWFsUGVyc2lz
dGVuY2UgcGVyc2lzdGVuY2UgPSBOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU7Ci0gICAg
c3dpdGNoIChjb3JlQ3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpKSB7Ci0gICAgICAgIGNhc2UgQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlTm9uZToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb246Ci0gICAgICAgICAgICBwZXJzaXN0ZW5j
ZSA9IE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbjsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudDoKLSAgICAg
ICAgICAgIHBlcnNpc3RlbmNlID0gTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnQ7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIGlmIChjb3JlQ3JlZGVudGlhbC50eXBlKCkg
PT0gQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSkgewotICAgICAgICByZXR1cm4gW1tb
TlNVUkxDcmVkZW50aWFsIGFsbG9jXSBpbml0V2l0aElkZW50aXR5OmNvcmVDcmVkZW50aWFsLmlk
ZW50aXR5KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNl
cnRpZmljYXRlczooTlNBcnJheSAqKWNvcmVDcmVkZW50aWFsLmNlcnRpZmljYXRlcygpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdGVuY2U6cGVy
c2lzdGVuY2VdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXV0b3JlbGVhc2VdOwotICAgIH0KLQotICAgIHJldHVybiBbW1tOU1VSTENyZWRlbnRpYWwgYWxs
b2NdIGluaXRXaXRoVXNlcjpjb3JlQ3JlZGVudGlhbC51c2VyKCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDpjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdGVuY2U6cGVyc2lz
dGVuY2VdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b3JlbGVhc2Vd
OwotfQotCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKm1hY0NoYWxsZW5nZSkKIHsKICAgICByZXR1cm4gQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UobWFjQ2hhbGxlbmdlKTsKIH0KIAotQ3JlZGVudGlhbCBjb3JlKE5TVVJMQ3JlZGVudGlh
bCAqbWFjQ3JlZGVudGlhbCkKLXsKLSAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVu
Y2UgPSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lOwotICAgIHN3aXRjaCAoW21hY0NyZWRlbnRp
YWwgcGVyc2lzdGVuY2VdKSB7Ci0gICAgICAgIGNhc2UgTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVu
Y2VOb25lOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTlNVUkxDcmVkZW50aWFs
UGVyc2lzdGVuY2VGb3JTZXNzaW9uOgotICAgICAgICAgICAgcGVyc2lzdGVuY2UgPSBDcmVkZW50
aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnQ6Ci0gICAgICAgICAgICBwZXJz
aXN0ZW5jZSA9IENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudDsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgfQotCi0gICAgU2VjSWRlbnRpdHlSZWYgaWRlbnRpdHkgPSBbbWFjQ3JlZGVudGlhbCBp
ZGVudGl0eV07Ci0gICAgaWYgKGlkZW50aXR5KQotICAgICAgICByZXR1cm4gQ3JlZGVudGlhbChp
ZGVudGl0eSwgKENGQXJyYXlSZWYpW21hY0NyZWRlbnRpYWwgY2VydGlmaWNhdGVzXSwgcGVyc2lz
dGVuY2UpOwotICAgIAotICAgIHJldHVybiBDcmVkZW50aWFsKFttYWNDcmVkZW50aWFsIHVzZXJd
LCBbbWFjQ3JlZGVudGlhbCBwYXNzd29yZF0sIHBlcnNpc3RlbmNlKTsKLX0KLQogI2VuZGlmIC8v
IFVTRShDRk5FVFdPUkspCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxT
dG9yYWdlTWFjLm1tCShyZXZpc2lvbiAxNzE3NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBDcmVkZW50aWFsIENyZWRlbnRpYWxT
dG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBw
cm90ZWN0aW9uU3BhY2UpCiB7CiAgICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsID0gW1tO
U1VSTENyZWRlbnRpYWxTdG9yYWdlIHNoYXJlZENyZWRlbnRpYWxTdG9yYWdlXSBkZWZhdWx0Q3Jl
ZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2UubnNTcGFjZSgpXTsKLSAg
ICByZXR1cm4gY3JlZGVudGlhbCA/IGNvcmUoY3JlZGVudGlhbCkgOiBDcmVkZW50aWFsKCk7Cisg
ICAgcmV0dXJuIGNyZWRlbnRpYWwgPyBDcmVkZW50aWFsKGNyZWRlbnRpYWwpIDogQ3JlZGVudGlh
bCgpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlz
aW9uIDE3MTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RlbmNlOk5T
VVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbl07CiAgICAgICAgIGQtPm1fY3VycmVu
dE1hY0NoYWxsZW5nZSA9IGNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7
CiAgICAgICAgIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKLSAgICAgICAg
cmVjZWl2ZWRDcmVkZW50aWFsKGNoYWxsZW5nZSwgY29yZShjcmVkZW50aWFsKSk7CisgICAgICAg
IHJlY2VpdmVkQ3JlZGVudGlhbChjaGFsbGVuZ2UsIENyZWRlbnRpYWwoY3JlZGVudGlhbCkpOwog
ICAgICAgICBbY3JlZGVudGlhbCByZWxlYXNlXTsKICAgICAgICAgLy8gRklYTUU6IFBlciB0aGUg
c3BlY2lmaWNhdGlvbiwgdGhlIHVzZXIgc2hvdWxkbid0IGJlIGFza2VkIGZvciBjcmVkZW50aWFs
cyBpZiB0aGVyZSB3ZXJlIGluY29ycmVjdCBvbmVzIHByb3ZpZGVkIGV4cGxpY2l0bHkuCiAgICAg
ICAgIGQtPm1fdXNlciA9IFN0cmluZygpOwpAQCAtNTc0LDcgKzU3NCw3IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICAgICAgICAgICAgICAgICAgLy8gU3Rv
cmUgdGhlIGNyZWRlbnRpYWwgYmFjaywgcG9zc2libHkgYWRkaW5nIGl0IGFzIGEgZGVmYXVsdCBm
b3IgdGhpcyBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgICAgIENyZWRlbnRpYWxTdG9yYWdl
OjpzZXQoY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2Uu
ZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBbY2hhbGxlbmdlLnNlbmRlcigpIHVzZUNyZWRlbnRpYWw6bWFjKGNyZWRlbnRpYWwpIGZv
ckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1hYyhjaGFsbGVuZ2UpXTsKKyAgICAgICAgICAgICAg
ICBbY2hhbGxlbmdlLnNlbmRlcigpIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRp
YWwoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptYWMoY2hhbGxlbmdlKV07CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC02NTgsOSArNjU4
LDkgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKAogICAgICAgICBp
ZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQog
ICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwo
KTsKICAgICAgICAgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldCh3ZWJDcmVkZW50aWFsLCBQcm90ZWN0
aW9uU3BhY2UoW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBwcm90ZWN0aW9uU3BhY2VdKSwgdXJs
VG9TdG9yZSk7Ci0gICAgICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNlbmRlcl0gdXNl
Q3JlZGVudGlhbDptYWMod2ViQ3JlZGVudGlhbCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
ZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlXTsKKyAgICAgICAgW1tkLT5tX2N1cnJlbnRNYWNDaGFs
bGVuZ2Ugc2VuZGVyXSB1c2VDcmVkZW50aWFsOndlYkNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkg
Zm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6ZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlXTsKICAg
ICB9IGVsc2UKLSAgICAgICAgW1tkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2Ugc2VuZGVyXSB1c2VD
cmVkZW50aWFsOm1hYyhjcmVkZW50aWFsKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpkLT5t
X2N1cnJlbnRNYWNDaGFsbGVuZ2VdOworICAgICAgICBbW2QtPm1fY3VycmVudE1hY0NoYWxsZW5n
ZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTpkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2VdOwogCiAgICAgY2xl
YXJBdXRoZW50aWNhdGlvbigpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTcxNzY3KQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTQtMDctMjkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KKworICAgICAg
ICBVcGRhdGVkIGZvciBjaGFuZ2VzIHRvIHRoZSBXZWJDb3JlOjpDcmVkZW50aWFsIEFQSS4KKyAg
ICAgICAgV29yayB0b3dhcmRzIGZpeGluZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM1MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWQ6OnJlY2VpdmVkQ3JlZGVudGlhbCk6VXNlIG5ldyBDcmVkZW50aWFs
Ojpuc0NyZWRlbnRpYWwgZ2V0dGVyLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmVu
Y29kZSk6ICBJZiBlbmNvZGluZyB0aGUgY3JlZGVudGlhbCByZXF1aXJlcyBlbmNvZGluZyB0aGUK
KyAgICAgICAgcGxhdGZvcm0gZGF0YSwgZG8gdGhhdC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlKTogSWYgcGxhdGZvcm0gZGF0YSB3YXMgZW5jb2RlZCwg
ZGVjb2RlIGl0LgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKwor
ICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjplbmNvZGVQbGF0Zm9ybURhdGEpOiBB
cmNoaXZlIHRoZSBOU1VSTENyZWRlbnRpYWwuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
Q3JlZGVudGlhbD46OmRlY29kZVBsYXRmb3JtRGF0YSk6IFVuYXJjaGl2ZSBpdC4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1t
OgorICAgICAgICAoLVtXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgdXNlQ3Jl
ZGVudGlhbDpmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpdKTogVXNlCisgICAgICAgIENyZWRl
bnRpYWwgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBhbiBOU1VSTENyZWRlbnRpYWwuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0
OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlSW5GcmFtZSk6IERpdHRvLgorCisKIDIwMTQtMDctMjkgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVUlRCRiBmb3IgIUVOQUJMRShEQVRB
QkFTRV9QUk9DRVNTKSBwbGF0Zm9ybXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTcxNzQ5KQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwNiw1NiArNTA2LDI1IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQcm90ZWN0aW9uU3BhY2U+
OjpkZWMKIAogdm9pZCBBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjplbmNvZGUoQXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewotI2lmIENF
UlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAotICAgIGVuY29kZXIuZW5jb2RlRW51bShj
cmVkZW50aWFsLnR5cGUoKSk7Ci0KLSAgICBpZiAoY3JlZGVudGlhbC50eXBlKCkgPT0gQ3JlZGVu
dGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSkgewotICAgICAgICBJUEM6OmVuY29kZShlbmNvZGVy
LCBjcmVkZW50aWFsLmlkZW50aXR5KCkpOwotCi0gICAgICAgIGVuY29kZXIgPDwgISFjcmVkZW50
aWFsLmNlcnRpZmljYXRlcygpOwotICAgICAgICBpZiAoY3JlZGVudGlhbC5jZXJ0aWZpY2F0ZXMo
KSkKLSAgICAgICAgICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIGNyZWRlbnRpYWwuY2VydGlmaWNh
dGVzKCkpOwotCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRW51bShjcmVkZW50aWFsLnBlcnNpc3Rl
bmNlKCkpOworICAgIGlmIChjcmVkZW50aWFsLmVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEo
KSkgeworICAgICAgICBlbmNvZGVyIDw8IHRydWU7CisgICAgICAgIGVuY29kZVBsYXRmb3JtRGF0
YShlbmNvZGVyLCBjcmVkZW50aWFsKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZgot
ICAgIGVuY29kZXIgPDwgY3JlZGVudGlhbC51c2VyKCkgPDwgY3JlZGVudGlhbC5wYXNzd29yZCgp
OwogCisgICAgZW5jb2RlciA8PCBmYWxzZTsKKyAgICBlbmNvZGVyIDw8IGNyZWRlbnRpYWwudXNl
cigpIDw8IGNyZWRlbnRpYWwucGFzc3dvcmQoKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oY3Jl
ZGVudGlhbC5wZXJzaXN0ZW5jZSgpKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPENyZWRlbnRp
YWw+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBDcmVkZW50aWFsJiBjcmVkZW50
aWFsKQogewotI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAotICAgIENyZWRl
bnRpYWxUeXBlIHR5cGU7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bSh0eXBlKSkKKyAg
ICBib29sIGhhc1BsYXRmb3JtRGF0YTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1BsYXRm
b3JtRGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICh0eXBlID09IENyZWRl
bnRpYWxUeXBlQ2xpZW50Q2VydGlmaWNhdGUpIHsKLSAgICAgICAgUmV0YWluUHRyPFNlY0lkZW50
aXR5UmVmPiBpZGVudGl0eTsKLSAgICAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBpZGVu
dGl0eSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgYm9vbCBoYXNDZXJ0
aWZpY2F0ZXM7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ2VydGlmaWNhdGVzKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gY2VydGlmaWNhdGVzOwotICAgICAgICBpZiAoaGFzQ2VydGlmaWNhdGVzKSB7Ci0gICAgICAg
ICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGNlcnRpZmljYXRlcykpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgQ3JlZGVudGlhbFBlcnNp
c3RlbmNlIHBlcnNpc3RlbmNlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShwZXJz
aXN0ZW5jZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgY3JlZGVudGlh
bCA9IENyZWRlbnRpYWwoaWRlbnRpdHkuZ2V0KCksIGNlcnRpZmljYXRlcy5nZXQoKSwgcGVyc2lz
dGVuY2UpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAoaGFz
UGxhdGZvcm1EYXRhKQorICAgICAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIs
IGNyZWRlbnRpYWwpOwogCiAgICAgU3RyaW5nIHVzZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSh1c2VyKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgJKHJldmlzaW9uIDE3MTc0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDYgKzIzNSw4IEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3JlZGVudGlhbD4gewogICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CiAgICAg
c3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OkNyZWRlbnRpYWwm
KTsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZVBsYXRm
b3JtRGF0YShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CiB9OwogCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkN1cnNvcj4gewpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMu
bW0JKHJldmlzaW9uIDE3MTc0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMv
bWFjL0Rvd25sb2FkTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9p
ZCBEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2goKQogCiB2b2lkIERvd25sb2FkOjpyZWNlaXZl
ZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewotICAgIFthdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSB1c2VDcmVkZW50aWFsOm1hYyhjcmVkZW50aWFsKSBm
b3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOworICAgIFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5z
ZW5kZXIoKSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkgZm9yQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpXTsKIH0KIAogdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRSZXF1ZXN0VG9D
b250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiAxNzE3NDkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Db250ZW50RmlsdGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NyZWRlbnRpYWwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
cm90ZWN0aW9uU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAt
MzE1LDYgKzMxNiwzNSBAQCBib29sIEFyZ3VtZW50Q29kZXI8UHJvdGVjdGlvblNwYWNlPjo6ZGVj
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6
ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ3JlZGVu
dGlhbCYgY3JlZGVudGlhbCkKK3sKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gZGF0YSA9
IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE5T
S2V5ZWRBcmNoaXZlcj4gYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9j
XSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7CisgICAgW2FyY2hp
dmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgW2FyY2hpdmVyIGVuY29kZU9i
amVjdDpjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpIGZvcktleTpAImNyZWRlbnRpYWwiXTsKKyAg
ICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7Cit9CisKK2Jvb2wgQXJndW1l
bnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciYg
ZGVjb2RlciwgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBkYXRhOworICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFJldGFpblB0cjxOU0tleWVkVW5hcmNoaXZlcj4gdW5hcmNo
aXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdX
aXRoRGF0YTooTlNEYXRhICopZGF0YS5nZXQoKV0pOworICAgIFt1bmFyY2hpdmVyIHNldFJlcXVp
cmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgQHRyeSB7CisgICAgICAgIGlmIChSZXRhaW5QdHI8
TlNVUkxDcmVkZW50aWFsPiBuc0NyZWRlbnRpYWwgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RP
ZkNsYXNzOltOU1VSTENyZWRlbnRpYWwgY2xhc3NdIGZvcktleTpAImNyZWRlbnRpYWwiXSkKKyAg
ICAgICAgICAgIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKG5zQ3JlZGVudGlhbC5nZXQoKSk7Cisg
ICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gZGVjb2RlIE5TVVJMQ3JlZGVudGlhbDogJUAiLCBleGNlcHRpb24pOworICAg
IH0KKworICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogdm9pZCBBcmd1bWVudENvZGVyPEtleXByZXNzQ29tbWFuZD46OmVuY29kZShBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEtleXByZXNzQ29tbWFuZCYga2V5cHJlc3NDb21tYW5k
KQogewogICAgIGVuY29kZXIgPDwga2V5cHJlc3NDb21tYW5kLmNvbW1hbmROYW1lIDw8IGtleXBy
ZXNzQ29tbWFuZC50ZXh0OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UubW0JKHJldmlzaW9uIDE3MTc0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC04Nyw3ICs4Nyw3IEBAIC0gKHZvaWQpdXNlQ3JlZGVudGlhbDooTlNVUkxDcmVkZW50aWFsICoK
IHsKICAgICBjaGVja0NoYWxsZW5nZShjaGFsbGVuZ2UpOwogICAgIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkmIHdlYkNoYWxsZW5nZSA9ICgoV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICopY2hhbGxlbmdlKS5fd2ViX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7Ci0gICAg
d2ViQ2hhbGxlbmdlLmxpc3RlbmVyKCktPnVzZUNyZWRlbnRpYWwoV2ViQ3JlZGVudGlhbDo6Y3Jl
YXRlKGNvcmUoY3JlZGVudGlhbCkpLmdldCgpKTsKKyAgICB3ZWJDaGFsbGVuZ2UubGlzdGVuZXIo
KS0+dXNlQ3JlZGVudGlhbChXZWJDcmVkZW50aWFsOjpjcmVhdGUoQ3JlZGVudGlhbChjcmVkZW50
aWFsKSkuZ2V0KCkpOwogfQogCiAtICh2b2lkKXBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxs
ZW5nZQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCShyZXZpc2lvbiAxNzE3NDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3
IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIl9XS0Vycm9yUmVjb3Zl
cnlBdHRlbXB0aW5nLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCi0jaW1w
b3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uTWFjLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NyZWRl
bnRpYWwuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgVVNFKFFVSUNL
X0xPT0spCkBAIC03MjQsNyArNzI0LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNs
aWVudDo6ZGlkUgogICAgICAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5n
ZVVzZUNyZWRlbnRpYWw6IHsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFdlYkNyZWRlbnRp
YWw+IHdlYkNyZWRlbnRpYWw7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjcmVkZW50aWFsKQot
ICAgICAgICAgICAgICAgICAgICAgICAgd2ViQ3JlZGVudGlhbCA9IFdlYkNyZWRlbnRpYWw6OmNy
ZWF0ZShXZWJDb3JlOjpjb3JlKGNyZWRlbnRpYWwpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHdlYkNyZWRlbnRpYWwgPSBXZWJDcmVkZW50aWFsOjpjcmVhdGUoV2ViQ29yZTo6Q3JlZGVudGlh
bChjcmVkZW50aWFsKSk7CiAKICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5l
cigpLT51c2VDcmVkZW50aWFsKHdlYkNyZWRlbnRpYWwuZ2V0KCkpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MTc2NykKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDE0LTA3LTI5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAg
VXBkYXRlZCBmb3IgY2hhbmdlcyB0byB0aGUgV2ViQ29yZTo6Q3JlZGVudGlhbCBBUEkuCisgICAg
ICAgIFdvcmsgdG93YXJkcyBmaXhpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNTMyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogTWlzYy9XZWJEb3dubG9hZC5tbToKKyAgICAgICAgKC1bV2ViRG93bmxvYWRJbnRl
cm5hbCBkb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XSk6IFVzZSBu
ZXcgbnNDcmVkZW50aWFsCisgICAgICAgIGdldHRlci4KKyAgICAgICAgKiBQbHVnaW5zL1dlYkJh
c2VOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgIChXZWJLaXQ6OmdldEF1dGhlbnRpY2F0
aW9uSW5mbyk6IERpdHRvLgorCiAyMDE0LTA3LTI3ICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtp
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIHByZWZlcmVuY2Uga2V5cwpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCShyZXZpc2lvbiAxNzE3NDkpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjgsNyArMTI4LDcgQEAgLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25s
bwogI2lmICFQTEFURk9STShJT1MpCiAgICAgLy8gVHJ5IHByZXZpb3VzbHkgc3RvcmVkIGNyZWRl
bnRpYWwgZmlyc3QuCiAgICAgaWYgKCFbY2hhbGxlbmdlIHByZXZpb3VzRmFpbHVyZUNvdW50XSkg
ewotICAgICAgICBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwgPSBtYWMoQ3JlZGVudGlhbFN0
b3JhZ2U6OmdldChQcm90ZWN0aW9uU3BhY2UoW2NoYWxsZW5nZSBwcm90ZWN0aW9uU3BhY2VdKSkp
OworICAgICAgICBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFn
ZTo6Z2V0KFByb3RlY3Rpb25TcGFjZShbY2hhbGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pKS5uc0Ny
ZWRlbnRpYWwoKTsKICAgICAgICAgaWYgKGNyZWRlbnRpYWwpIHsKICAgICAgICAgICAgIFtbY2hh
bGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDpjcmVkZW50aWFsIGZvckF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOmNoYWxsZW5nZV07CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCShyZXZpc2lvbiAxNzE3NDkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJh
c2VOZXRzY2FwZVBsdWdpblZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTkyOCw3ICs5MjgsNyBA
QCAgICAgaWYgKCFwcm90b2NvbCkKICAgICAKICAgICBSZXRhaW5QdHI8TlNVUkxQcm90ZWN0aW9u
U3BhY2U+IHByb3RlY3Rpb25TcGFjZSA9IGFkb3B0TlMoW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBh
bGxvY10gaW5pdFdpdGhIb3N0Omhvc3QgcG9ydDpwb3J0IHByb3RvY29sOnByb3RvY29sIHJlYWxt
OnJlYWxtIGF1dGhlbnRpY2F0aW9uTWV0aG9kOmF1dGhlbnRpY2F0aW9uTWV0aG9kXSk7CiAgICAg
Ci0gICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsID0gbWFjKENyZWRlbnRpYWxTdG9yYWdl
OjpnZXQoUHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZS5nZXQoKSkpKTsKKyAgICBOU1VS
TENyZWRlbnRpYWwgKmNyZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KFByb3RlY3Rp
b25TcGFjZShwcm90ZWN0aW9uU3BhY2UuZ2V0KCkpKS5uc0NyZWRlbnRpYWwoKTsKICAgICBpZiAo
IWNyZWRlbnRpYWwpCiAgICAgICAgIGNyZWRlbnRpYWwgPSBbW05TVVJMQ3JlZGVudGlhbFN0b3Jh
Z2Ugc2hhcmVkQ3JlZGVudGlhbFN0b3JhZ2VdIGRlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlv
blNwYWNlOnByb3RlY3Rpb25TcGFjZS5nZXQoKV07CiAgICAgaWYgKCFjcmVkZW50aWFsKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235716</attachid>
            <date>2014-07-29 16:32:14 -0700</date>
            <delta_ts>2014-07-30 18:09:16 -0700</delta_ts>
            <desc>III. Make Credential hold onto an NSURLCredential when needed</desc>
            <filename>135327-3_r2.diff</filename>
            <type>text/plain</type>
            <size>48609</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MTc3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDE0LTA3LTI5ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFkZSBDcmVkZW50aWFsIGhvbGQg
b250byBhbiBOU1VSTENyZWRlbnRpYWwgd2hlbiBuZWVkZWQuCisgICAgICAgIFdvcmsgdG93YXJk
cyBmaXhpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTMyNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5n
ZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IFVwZGF0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaDogUmVtb3ZlZCBkZWZp
bml0aW9uIG9mIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRCwKKyAgICAgICAgd2hp
Y2ggaXMgbm90IHVzZWQgYW55bW9yZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3Jl
ZGVudGlhbEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxCYXNlOjplbmNvZGlu
Z1JlcXVpcmVzUGxhdGZvcm1EYXRhKTogQWRkZWQgYSBiYXNlIGltcGxlbWVudGF0aW9uIHRoYXQK
KyAgICAgICAgcmV0dXJucyBmYWxzZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
QXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIENoYW5nZWQgdG8gdXNlIHRoZSBDcmVkZW50
aWFsIGNvbnN0cnVjdG9yIHRoYXQgdGFrZXMgYW4gQ0ZVUkxDcmVkZW50aWFsLCBhbmQgdGhlIG5l
dworICAgICAgICBjZkNyZWRlbnRpYWwgbWVtYmVyIGZ1bmN0aW9uLiBNYWRlIHRoZSBjcmVhdGVD
RiBhbmQgY29yZSBmdW5jdGlvbnMgV2luZG93cy1vbmx5IGFuZAorICAgICAgICB0aGVyZWZvcmUg
cmVtb3ZlZCB0aGUgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVEIGNvZGUgZnJvbSB0
aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oOgor
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVu
dFN0b3JhZ2UpOiBDaGFuZ2VkIHRvIGNvbnN0cnVjdCBhIENyZWRlbnRpYWwKKyAgICAgICAgZnJv
bSBhIENGVVJMQ3JlZGVudGlhbC4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdl
OjpzYXZlVG9QZXJzaXN0ZW50U3RvcmFnZSk6IENoYW5nZWQgdG8gdXNlIHRoZSBuZXcgY2ZDcmVk
ZW50aWFsCisgICAgICAgIG1lbWJlciBmdW5jdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogRGl0dG8gdG8g
Ym90aC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRp
YWwpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlh
bENvY29hLmg6CisgICAgICAgIFJlcGxhY2VkIHRoZSBtX2lkZW50aXR5LCBtX2NlcnRpZmljYXRl
cyBhbmQgbV90eXBlIG1lbWJlciB2YXJpYWJsZXMgd2l0aCBhbiBtX25zQ3JlZGVudGlhbAorICAg
ICAgICBvbmUgaG9sZGluZyBvbnRvIGFuIE5TVVJMQ3JlZGVudGlhbC4gRGVjbGFyZWQgY29uc3Ry
dWN0b3JzIGZyb20gYW5kIGdldHRlcnMgZm9yCisgICAgICAgIE5TVVJMQ3JlZGVudGlhbCBhbmQg
Q0ZVUkxDcmVkZW50aWFsUmVmLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6ZW5jb2Rp
bmdSZXF1aXJlc1BsYXRmb3JtRGF0YSk6IE92ZXJyaWRlIHRoYXQgY2hlY2tzIHRoZQorICAgICAg
ICBOU1VSTENyZWRlbnRpYWwgaWYgbmVjZXNzYXJ5LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjp0b05TVVJM
Q3JlZGVudGlhbFBlcnNpc3RlbmNlKTogTmV3IGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnRvQ3JlZGVudGlhbFBlcnNpc3RlbmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDcmVkZW50aWFsOjpDcmVkZW50aWFsKTogRGVmaW5lZCBjb25zdHJ1Y3RvcnMgdG8gY3JlYXRl
IG9yIHRha2UgYW4KKyAgICAgICAgTlNVUkxDcmVkZW50aWFsLgorICAgICAgICAoV2ViQ29yZTo6
Q3JlZGVudGlhbDo6Y2ZDcmVkZW50aWFsKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDcmVk
ZW50aWFsOjpuc0NyZWRlbnRpYWwpOiBBZGRlZC4gUmV0dXJucyBuaWwgZm9yIHRoZSBlbXB0eSBj
cmVkZW50aWFsLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6aXNFbXB0eSk6IENoYW5n
ZWQgdG8gY2hlY2sgbV9uc0NyZWRlbnRpYWwuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFs
OjpwbGF0Zm9ybUNvbXBhcmUpOiBDaGFuZ2VkIHRvIGNvbXBhcmUgbV9uc0NyZWRlbnRpYWwgaWYg
bmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6ZW5jb2RpbmdSZXF1aXJlc1Bs
YXRmb3JtRGF0YSk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgY3JlZGVudGlhbCBpcyBub3QKKyAgICAg
ICAgYSB1c2VyIGFuZCBhIHBhc3N3b3JkLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvQXV0aGVudGljYXRpb25NYWMuaDogUmVtb3ZlZCBtYWMgYW5kIGNvcmUgZnVuY3Rpb25zIGZv
ciBDcmVkZW50aWFsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0
aW9uTWFjLm1tOgorICAgICAgICAoLVtXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxs
ZW5nZVNlbmRlciB1c2VDcmVkZW50aWFsOmZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0pOgor
ICAgICAgICBDaGFuZ2VkIHRvIHVzZSBDcmVkZW50aWFsIGNvbnN0cnVjdG9yIHRoYXQgdGFrZXMg
YW4gTlNVUkxDcmVkZW50aWFsLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogRGl0dG8uIEFsc28gdXNlIHRoZQorICAg
ICAgICBuc0NyZWRlbnRpYWwgZ2V0dGVyLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFs
U3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKTogVXNlIG5ldyBDcmVkZW50aWFsIGNv
bnN0cnVjdG9yLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogRGl0dG8uIEFsc28gdXNlIHRoZQorICAgICAgICBuc0Ny
ZWRlbnRpYWwgZ2V0dGVyLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2Vp
dmVkQ3JlZGVudGlhbCk6IERpdHRvLgorCiAyMDE0LTA3LTI5ICBQcmF0aWsgU29sYW5raSAgPHBz
b2xhbmtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSRUdSRVNTSU9OKHIxNzE1MjYpOiBQ
REYgZG9jdW1lbnRzIGZhaWwgdG8gbG9hZCBpbiBXZWJLaXQxIHdpdGggZGlzayBpbWFnZSBjYWNo
aW5nIGVuYWJsZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNzE3NzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNzEsNiAr
NzEsOCBAQCBfX1pOM1dURjZTdHJpbmdDMUVQSzEwX19DRlN0cmluZwogX19aTjdXZWJDb3JlMTBD
bGllbnRSZWN0QzFFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJL
TlNfOUZsb2F0UmVjdEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXYKK19fWk43V2ViQ29y
ZTEwQ3JlZGVudGlhbDI4ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YUVQMTVOU1VSTENyZWRl
bnRpYWwKK19fWk43V2ViQ29yZTEwQ3JlZGVudGlhbEMxRVAxNU5TVVJMQ3JlZGVudGlhbAogX19a
TjdXZWJDb3JlMTBGbG9hdFBvaW50QzFFUks3Q0dQb2ludAogX19aTjdXZWJDb3JlMTBGbG9hdFBv
aW50QzFFUktOU184SW50UG9pbnRFCiBfX1pON1dlYkNvcmUxMEZvbnRHbHlwaHMxNXJlbGVhc2VG
b250RGF0YUV2CkBAIC0xMDcyLDcgKzEwNzQsNiBAQCBfX1pON1dlYkNvcmUzVVJMQzFFTlNfMThQ
YXJzZWRVUkxTdHJpbmdUCiBfX1pON1dlYkNvcmUzVVJMQzFFUDVOU1VSTAogX19aTjdXZWJDb3Jl
M1VSTEMxRVBLN19fQ0ZVUkwKIF9fWk43V2ViQ29yZTNVUkxDMUVSS1MwX1JLTjNXVEY2U3RyaW5n
RQotX19aTjdXZWJDb3JlM21hY0VSS05TXzEwQ3JlZGVudGlhbEUKIF9fWk43V2ViQ29yZTNtYWNF
UktOU18yM0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRQogX19aTjdXZWJDb3JlNDByZXN0cmljdE1p
bmltdW1TY2FsZUZhY3RvclRvVmlld3BvcnRTaXplRVJOU18xOFZpZXdwb3J0QXR0cmlidXRlc0VO
U183SW50U2l6ZUVmCiBfX1pON1dlYkNvcmU0MlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJl
Zm9yZUNvbXBvbmVudEVQNU5TVVJMMThDRlVSTENvbXBvbmVudFR5cGUKQEAgLTExNDksNyArMTE1
MCw2IEBAIF9fWk43V2ViQ29yZTRQYWdlRDFFdgogX19aTjdXZWJDb3JlNFBhdGgxNGFkZFJvdW5k
ZWRSZWN0RVJLTlNfOUZsb2F0UmVjdEVSS05TXzlGbG9hdFNpemVFTlMwXzE5Um91bmRlZFJlY3RT
dHJhdGVneUUKIF9fWk43V2ViQ29yZTRQYXRoQzFFdgogX19aTjdXZWJDb3JlNFBhdGhEMUV2Ci1f
X1pON1dlYkNvcmU0Y29yZUVQMTVOU1VSTENyZWRlbnRpYWwKIF9fWk43V2ViQ29yZTRjb3JlRVAy
OE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlF
eGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TMF83UHJvZmlsZUUKIF9fWk43V2Vi
Q29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEw
Q2xpZW50UmVjdEUKQEAgLTE1MzYsMTAgKzE1MzYsOCBAQCBfX1pON1dlYkNvcmU5dG9FbGVtZW50
RU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmU5dW5pb25SZWN0RVJLTjNXVEY2VmVjdG9ySU5T
XzlGbG9hdFJlY3RFTG0wRU5TMF8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTkszSlNDOEJpbmRp
bmdzMTBSb290T2JqZWN0MTJnbG9iYWxPYmplY3RFdgogX19aTkszV1RGNlN0cmluZzE0Y3JlYXRl
Q0ZTdHJpbmdFdgotX19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDEyY2VydGlmaWNhdGVzRXYKLV9f
Wk5LN1dlYkNvcmUxMENyZWRlbnRpYWw0dHlwZUV2CitfX1pOSzdXZWJDb3JlMTBDcmVkZW50aWFs
MTJuc0NyZWRlbnRpYWxFdgogX19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDdpc0VtcHR5RXYKLV9f
Wk5LN1dlYkNvcmUxMENyZWRlbnRpYWw4aWRlbnRpdHlFdgogX19aTks3V2ViQ29yZTEwRmxvYXRQ
b2ludGN2N0NHUG9pbnRFdgogX19aTks3V2ViQ29yZTEwRm9udEdseXBoczE3cmVhbGl6ZUZvbnRE
YXRhQXRFUktOU18xNUZvbnREZXNjcmlwdGlvbkVqCiBfX1pOSzdXZWJDb3JlMTBMYXlvdXRSZWN0
OGNvbnRhaW5zRVJLUzBfCkBAIC0yMjIxLDcgKzIyMTksNiBAQCBfX1pON1dlYkNvcmUzNmluaXRp
YWxpemVMb2dnaW5nQ2hhbm5lbHNJCiAub2JqY19jbGFzc19uYW1lX1dlYkZvbnRDYWNoZQogLm9i
amNfY2xhc3NfbmFtZV9XZWJXaW5kb3dGYWRlQW5pbWF0aW9uCiAub2JqY19jbGFzc19uYW1lX1dl
YldpbmRvd1NjYWxlQW5pbWF0aW9uCi1fX1pON1dlYkNvcmUxMENyZWRlbnRpYWxDMUVQMjBPcGFx
dWVTZWNJZGVudGl0eVJlZlBLOV9fQ0ZBcnJheU5TXzIxQ3JlZGVudGlhbFBlcnNpc3RlbmNlRQog
X19aTjdXZWJDb3JlMTBGbG9hdFBvaW50QzFFUks4X05TUG9pbnQKIF9fWk43V2ViQ29yZTEwaGFu
ZEN1cnNvckV2CiBfX1pON1dlYkNvcmUxMUNhY2hlZEltYWdlNWltYWdlRXYKQEAgLTI1MjcsNyAr
MjUyNCw2IEBAIF9XZWJUaHJlYWRVbmxvY2tHdWFyZEZvck1haWwKIF9XZWJVSUFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uCiBfV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZv
cmVncm91bmROb3RpZmljYXRpb24KIF9XZWJVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5v
dGlmaWNhdGlvbgotX19aTjdXZWJDb3JlMTBDcmVkZW50aWFsQzFFUDEzX19TZWNJZGVudGl0eVBL
OV9fQ0ZBcnJheU5TXzIxQ3JlZGVudGlhbFBlcnNpc3RlbmNlRQogX19aTjdXZWJDb3JlMTBSZW5k
ZXJWaWV3MzVyZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZEV2CiBfX1pON1dlYkNv
cmUxMFNjcm9sbFZpZXcxNXNldFNjcm9sbE9mZnNldEVSS05TXzhJbnRQb2ludEUKIF9fWk43V2Vi
Q29yZTEwU2Nyb2xsVmlldzIxc2V0RXhwb3NlZENvbnRlbnRSZWN0RVJLTlNfOUZsb2F0UmVjdEUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oCShy
ZXZpc2lvbiAxNzE3NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRl
bnRpYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsNiBAQAogCiAjaW5jbHVkZSAiQ3Jl
ZGVudGlhbEJhc2UuaCIKIAotLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1hY3JvIG9uY2UgaXQgaXMg
bm90IHVzZWQgaW4gV2ViS2l0LgotI2RlZmluZSBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQ
T1JURUQgMAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyZWRlbnRpYWwgOiBwdWJs
aWMgQ3JlZGVudGlhbEJhc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9DcmVkZW50aWFsQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuaAkocmV2aXNpb24gMTcxNzc4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw3ICs0Nyw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKCkgY29u
c3Q7CiAgICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0OwogICAgIENyZWRlbnRpYWxQZXJzaXN0
ZW5jZSBwZXJzaXN0ZW5jZSgpIGNvbnN0OwotICAgIAorCisgICAgYm9vbCBlbmNvZGluZ1JlcXVp
cmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHN0YXRpYyBi
b29sIGNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IENyZWRlbnRpYWwmKTsKIAogcHJv
dGVjdGVkOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50
aWNhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCShyZXZpc2lvbiAxNzE3NzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NSwxMCArNTUsMTEgQEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhl
bnRpY2F0aW9uQwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCkKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShQcm90ZWN0aW9u
U3BhY2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlZGVudGlhbChDRlVSTEF1dGhD
aGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVuZ2UpKSwKICNlbHNlCiAgICAg
OiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQ
cm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVuZ2UpKSwKLSNlbmRpZgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50
aWFsKGNmQ2hhbGxlbmdlKSksCisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVDb3VudChjZkNoYWxsZW5n
ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENGVVJMUmVzcG9uc2VSZWYp
Q0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNlKGNmQ2hhbGxlbmdlKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRFcnJvcihj
ZkNoYWxsZW5nZSkpCkBAIC05MiwyMiArOTMsMjIgQEAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNy
ZWF0ZUNGKGNvbnN0IEF1dAogewogICAgIC8vIEZJWE1FOiBXaHkgbm90IGNhY2hlIENGVVJMQXV0
aENoYWxsZW5nZVJlZiBpbiBtX2NmQ2hhbGxlbmdlPyBGb3VuZGF0aW9uIGNvdW50ZXJwYXJ0IGRv
ZXMgdGhhdC4KIAotICAgIENGVVJMQ3JlZGVudGlhbFJlZiBjcmVkZW50aWFsID0gY3JlYXRlQ0Yo
Y29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSk7Ci0gICAgCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxs
ZW5nZUNyZWF0ZSgwLCBjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmNmU3BhY2UoKSwg
Y3JlZGVudGlhbCwKKyAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZVUkxBdXRo
Q2hhbGxlbmdlQ3JlYXRlKDAsIGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuY2ZTcGFj
ZSgpLCBjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLmNmQ3JlZGVudGlhbCgpLAog
I2Vsc2UKKyAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsID0gYWRv
cHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKSk7CiAgICAg
UmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBwcm90ZWN0aW9uU3BhY2UgPSBhZG9w
dENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpKTsKIAotICAgIENG
VVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQgPSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwg
cHJvdGVjdGlvblNwYWNlLmdldCgpLCBjcmVkZW50aWFsLAorICAgIENGVVJMQXV0aENoYWxsZW5n
ZVJlZiByZXN1bHQgPSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwgcHJvdGVjdGlvblNwYWNl
LmdldCgpLCBjcmVkZW50aWFsLmdldCgpLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UuZmFp
bHVyZVJlc3BvbnNlKCkuY2ZVUkxSZXNwb25zZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UuZXJyb3IoKSk7Ci0gICAgQ0ZSZWxlYXNlKGNy
ZWRlbnRpYWwpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKyNpZiBQTEFURk9STShXSU4pCisK
IENGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJiBjb3JlQ3JlZGVu
dGlhbCkKIHsKICAgICBDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSA9IGtD
RlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU7CkBAIC0xMjQsMTUgKzEyNSw5IEBAIENGVVJM
Q3JlZGVudGlhbFJlZiBjcmVhdGVDRihjb25zdCBDcmVkZW4KICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogICAgIAotI2lmIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBP
UlRFRAotICAgIGlmIChjb3JlQ3JlZGVudGlhbC50eXBlKCkgPT0gQ3JlZGVudGlhbFR5cGVDbGll
bnRDZXJ0aWZpY2F0ZSkKLSAgICAgICAgcmV0dXJuIENGVVJMQ3JlZGVudGlhbENyZWF0ZVdpdGhJ
ZGVudGl0eUFuZENlcnRpZmljYXRlQXJyYXkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29yZUNyZWRl
bnRpYWwuaWRlbnRpdHkoKSwgY29yZUNyZWRlbnRpYWwuY2VydGlmaWNhdGVzKCksIHBlcnNpc3Rl
bmNlKTsKLSNlbmRpZgotCiAgICAgcmV0dXJuIENGVVJMQ3JlZGVudGlhbENyZWF0ZSgwLCBjb3Jl
Q3JlZGVudGlhbC51c2VyKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29yZUNyZWRlbnRpYWwu
cGFzc3dvcmQoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBwZXJzaXN0ZW5jZSk7CiB9CiAK
LSNpZiBQTEFURk9STShXSU4pCiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25z
dCBQcm90ZWN0aW9uU3BhY2UmIGNvcmVTcGFjZSkKIHsKICAgICBDRlVSTFByb3RlY3Rpb25TcGFj
ZVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IGtDRlVSTFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA7
CkBAIC0xOTksNyArMTk0LDYgQEAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY3JlYXRlQ0YoY29u
c3QgUAogCiAgICAgcmV0dXJuIENGVVJMUHJvdGVjdGlvblNwYWNlQ3JlYXRlKDAsIGNvcmVTcGFj
ZS5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29yZVNwYWNlLnBvcnQoKSwgc2VydmVy
VHlwZSwgY29yZVNwYWNlLnJlYWxtKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgc2NoZW1lKTsK
IH0KLSNlbmRpZiAvLyBQTEFURk9STShXSU4pCiAKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRl
bnRpYWxSZWYgY2ZDcmVkZW50aWFsKQogewpAQCAtMjIwLDE3ICsyMTQsMTAgQEAgQ3JlZGVudGlh
bCBjb3JlKENGVVJMQ3JlZGVudGlhbFJlZiBjZkNyZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9CiAKLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKLSAg
ICBTZWNJZGVudGl0eVJlZiBpZGVudGl0eSA9IENGVVJMQ3JlZGVudGlhbEdldENlcnRpZmljYXRl
SWRlbnRpdHkoY2ZDcmVkZW50aWFsKTsKLSAgICBpZiAoaWRlbnRpdHkpCi0gICAgICAgIHJldHVy
biBDcmVkZW50aWFsKGlkZW50aXR5LCBDRlVSTENyZWRlbnRpYWxHZXRDZXJ0aWZpY2F0ZUFycmF5
KGNmQ3JlZGVudGlhbCksIHBlcnNpc3RlbmNlKTsKLSNlbmRpZgotCiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBwYXNzd29yZCA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsQ29weVBhc3N3b3Jk
KGNmQ3JlZGVudGlhbCkpOwogICAgIHJldHVybiBDcmVkZW50aWFsKENGVVJMQ3JlZGVudGlhbEdl
dFVzZXJuYW1lKGNmQ3JlZGVudGlhbCksIHBhc3N3b3JkLmdldCgpLCBwZXJzaXN0ZW5jZSk7CiB9
CiAKLSNpZiBQTEFURk9STShXSU4pCiBQcm90ZWN0aW9uU3BhY2UgY29yZShDRlVSTFByb3RlY3Rp
b25TcGFjZVJlZiBjZlNwYWNlKQogewogICAgIFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgc2Vy
dmVyVHlwZSA9IFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAkocmV2
aXNpb24gMTcxNzc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRo
ZW50aWNhdGlvbkNGLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE2ICs0MCwxNiBAQCBjbGFzcyBD
cmVkZW50aWFsOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogCiBDRlVSTEF1dGhDaGFsbGVuZ2VS
ZWYgY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLUNGVVJMQ3JlZGVu
dGlhbFJlZiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJik7CiAjaWYgUExBVEZPUk0oV0lOKQor
Q0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmKTsKIENGVVJMUHJv
dGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoQ0ZV
UkxBdXRoQ2hhbGxlbmdlUmVmKTsKICNlbmRpZgotQ3JlZGVudGlhbCBjb3JlKENGVVJMQ3JlZGVu
dGlhbFJlZik7CiAjaWYgUExBVEZPUk0oV0lOKQorQ3JlZGVudGlhbCBjb3JlKENGVVJMQ3JlZGVu
dGlhbFJlZik7CiBQcm90ZWN0aW9uU3BhY2UgY29yZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZik7
CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3Jl
ZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAkocmV2aXNpb24gMTcx
Nzc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3Rv
cmFnZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMTEgKzQ5LDEyIEBAIENyZWRlbnRp
YWwgQ3JlZGVudGlhbFN0b3JhZ2U6OmdldEZyb21QZXIKIHsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsQ0YgPSBhZG9wdENG
KHdrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZShwcm90ZWN0aW9uU3BhY2Uu
Y2ZTcGFjZSgpKSk7CisgICAgcmV0dXJuIENyZWRlbnRpYWwoY3JlZGVudGlhbENGLmdldCgpKTsK
ICNlbHNlCiAgICAgUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBwcm90ZWN0aW9u
U3BhY2VDRiA9IGFkb3B0Q0YoY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNlKSk7CiAgICAgUmV0YWlu
UHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbENGID0gYWRvcHRDRih3a0NvcHlDcmVk
ZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UocHJvdGVjdGlvblNwYWNlQ0YuZ2V0KCkpKTsK
LSNlbmRpZgogICAgIHJldHVybiBjb3JlKGNyZWRlbnRpYWxDRi5nZXQoKSk7CisjZW5kaWYKIH0K
IAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTYzLDEyICs2NCw5IEBAIHZvaWQgQ3JlZGVudGlhbFN0
b3JhZ2U6OnNhdmVUb1BlcnNpc3RlbnQKIAogICAgIGlmIChjcmVkZW50aWFsLnBlcnNpc3RlbmNl
KCkgPT0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkgewogICAgICAgICBDcmVkZW50aWFsIHNl
c3Npb25DcmVkZW50aWFsKGNyZWRlbnRpYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Np
b24pOwotICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBzZXNzaW9uQ3JlZGVu
dGlhbENGID0gYWRvcHRDRihjcmVhdGVDRihzZXNzaW9uQ3JlZGVudGlhbCkpOwotICAgICAgICBD
RlVSTENyZWRlbnRpYWxTdG9yYWdlU2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3Bh
Y2Uoc3RvcmFnZUNGLmdldCgpLCBzZXNzaW9uQ3JlZGVudGlhbENGLmdldCgpLCBwcm90ZWN0aW9u
U3BhY2UuY2ZTcGFjZSgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxD
cmVkZW50aWFsUmVmPiBjcmVkZW50aWFsQ0YgPSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwp
KTsKLSAgICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9y
UHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgY3JlZGVudGlhbENGLmdldCgpLCBwcm90
ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKLSAgICB9CisgICAgICAgIENGVVJMQ3JlZGVudGlhbFN0
b3JhZ2VTZXREZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlQ0YuZ2V0
KCksIHNlc3Npb25DcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZT
cGFjZSgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERl
ZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgY3JlZGVu
dGlhbC5jZkNyZWRlbnRpYWwoKSwgcHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSk7CiB9CiAjZW5k
aWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiAxNzE3NzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDIsMTQgKzM0MiwxOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpk
aWRSZWNlaXZlQXV0aGVudGljCiAjZW5kaWYKIAogICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgp
ICYmICFkLT5tX3Bhc3MuaXNOdWxsKCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVu
dGlhbFJlZj4gY3JlZGVudGlhbCA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bh
c3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNl
Tm9uZSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRp
YWwgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBk
LT5tX3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbChj
ZkNyZWRlbnRpYWwuZ2V0KCkpOworI2Vsc2UKKyAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFs
ID0gY29yZShjZkNyZWRlbnRpYWwuZ2V0KCkpOworI2VuZGlmCiAgICAgICAgIAogICAgICAgICBV
UkwgdXJsVG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5o
dHRwU3RhdHVzQ29kZSgpID09IDQwMSkKICAgICAgICAgICAgIHVybFRvU3RvcmUgPSBjaGFsbGVu
Z2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7Ci0gICAgICAgIENyZWRlbnRpYWxTdG9yYWdlOjpz
ZXQoY29yZShjcmVkZW50aWFsLmdldCgpKSwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1
cmxUb1N0b3JlKTsKKyAgICAgICAgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjcmVkZW50aWFsLCBj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOwogICAgICAgICAKLSAgICAg
ICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNy
ZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CisgICAg
ICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBj
ZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAg
ICAgICAgIGQtPm1fdXNlciA9IFN0cmluZygpOwogICAgICAgICBkLT5tX3Bhc3MgPSBTdHJpbmco
KTsKICAgICAgICAgLy8gRklYTUU6IFBlciB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlIHVzZXIgc2hv
dWxkbid0IGJlIGFza2VkIGZvciBjcmVkZW50aWFscyBpZiB0aGVyZSB3ZXJlIGluY29ycmVjdCBv
bmVzIHByb3ZpZGVkIGV4cGxpY2l0bHkuCkBAIC0zNzIsOCArMzc3LDEyIEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICAgICAgICAgICAgICAgICAgLy8gU3Rv
cmUgdGhlIGNyZWRlbnRpYWwgYmFjaywgcG9zc2libHkgYWRkaW5nIGl0IGFzIGEgZGVmYXVsdCBm
b3IgdGhpcyBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgICAgIENyZWRlbnRpYWxTdG9yYWdl
OjpzZXQoY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2Uu
ZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwogICAgICAgICAgICAgICAgIH0KKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQt
Pm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdl
LmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgUmV0YWlu
UHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihj
cmVkZW50aWFsKSk7CiAgICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlh
bChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNm
VVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDE2LDE3ICs0MjUsMjUgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKAogICAgICAgICAvLyBNYW5hZ2UgcGVyLXNl
c3Npb24gY3JlZGVudGlhbHMgaW50ZXJuYWxseSwgYmVjYXVzZSBvbmNlIE5TVVJMQ3JlZGVudGlh
bFBlcnNpc3RlbmNlUGVyU2Vzc2lvbiBpcyB1c2VkLCB0aGVyZSBpcyBubyB3YXkKICAgICAgICAg
Ly8gdG8gaWdub3JlIGl0IGZvciBhIHBhcnRpY3VsYXIgcmVxdWVzdCAoc2hvcnQgb2YgcmVtb3Zp
bmcgaXQgYWx0b2dldGhlcikuCiAgICAgICAgIENyZWRlbnRpYWwgd2ViQ3JlZGVudGlhbChjcmVk
ZW50aWFsLnVzZXIoKSwgY3JlZGVudGlhbC5wYXNzd29yZCgpLCBDcmVkZW50aWFsUGVyc2lzdGVu
Y2VOb25lKTsKLSAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50
aWFsID0gYWRvcHRDRihjcmVhdGVDRih3ZWJDcmVkZW50aWFsKSk7Ci0gICAgICAgIAorCiAgICAg
ICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25z
ZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQogICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGNo
YWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsgICAgICAKICAgICAgICAgQ3JlZGVudGlh
bFN0b3JhZ2U6OnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCks
IHVybFRvU3RvcmUpOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIENGVVJMQ29ubmVj
dGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCB3ZWJDcmVkZW50aWFsLmNm
Q3JlZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOworI2Vsc2UK
KyAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRv
cHRDRihjcmVhdGVDRih3ZWJDcmVkZW50aWFsKSk7CiAgICAgICAgIENGVVJMQ29ubmVjdGlvblVz
ZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNo
YWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CisjZW5kaWYKICAgICB9IGVsc2Ugewor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFs
KGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxl
bmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyNlbHNlCiAgICAgICAgIFJldGFpblB0cjxD
RlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVu
dGlhbCkpOwogICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVj
dGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxl
bmdlUmVmKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29j
b2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0NyZWRlbnRpYWxDb2NvYS5oCShyZXZpc2lvbiAxNzE3NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw1MCArMzAsNDggQEAKICNpbmNsdWRlIDxTZWN1cml0eS9TZWNCYXNlLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogCi0vLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWFjcm8gb25jZSBp
dCBpcyBub3QgdXNlZCBpbiBXZWJLaXQuCi0jZGVmaW5lIENFUlRJRklDQVRFX0NSRURFTlRJQUxT
X1NVUFBPUlRFRCAxCisjaWYgVVNFKENGTkVUV09SSykKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9D
RlVSTENyZWRlbnRpYWwqIENGVVJMQ3JlZGVudGlhbFJlZjsKKyNlbmRpZgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7CitPQkpDX0NMQVNTIE5TVVJMQ3JlZGVudGlhbDsKIAotZW51bSBDcmVkZW50aWFs
VHlwZSB7Ci0gICAgQ3JlZGVudGlhbFR5cGVQYXNzd29yZCwKLSAgICBDcmVkZW50aWFsVHlwZUNs
aWVudENlcnRpZmljYXRlCi19OworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDcmVkZW50
aWFsIDogcHVibGljIENyZWRlbnRpYWxCYXNlIHsKIHB1YmxpYzoKICAgICBDcmVkZW50aWFsKCkK
ICAgICAgICAgOiBDcmVkZW50aWFsQmFzZSgpCi0gICAgICAgICwgbV90eXBlKENyZWRlbnRpYWxU
eXBlUGFzc3dvcmQpCiAgICAgewogICAgIH0KIAogICAgIENyZWRlbnRpYWwoY29uc3QgU3RyaW5n
JiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVy
c2lzdGVuY2UpCiAgICAgICAgIDogQ3JlZGVudGlhbEJhc2UodXNlciwgcGFzc3dvcmQsIHBlcnNp
c3RlbmNlKQotICAgICAgICAsIG1fdHlwZShDcmVkZW50aWFsVHlwZVBhc3N3b3JkKQogICAgIHsK
ICAgICB9CiAKLSAgICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmIG9yaWdpbmFsLCBDcmVk
ZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2UpCi0gICAgICAgIDogQ3JlZGVudGlhbEJhc2Uo
b3JpZ2luYWwsIHBlcnNpc3RlbmNlKQotICAgICAgICAsIG1fdHlwZShvcmlnaW5hbC5tX3R5cGUp
Ci0gICAgewotICAgIH0KKyAgICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmLCBDcmVkZW50
aWFsUGVyc2lzdGVuY2UpOwogCi0gICAgQ3JlZGVudGlhbChTZWNJZGVudGl0eVJlZiwgQ0ZBcnJh
eVJlZiBjZXJ0aWZpY2F0ZXMsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CisjaWYgVVNFKENGTkVU
V09SSykKKyAgICBleHBsaWNpdCBDcmVkZW50aWFsKENGVVJMQ3JlZGVudGlhbFJlZik7CisjZW5k
aWYKKyAgICBleHBsaWNpdCBDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqKTsKIAogICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgU2VjSWRlbnRpdHlSZWYgaWRlbnRpdHkoKSBjb25z
dDsKLSAgICBDRkFycmF5UmVmIGNlcnRpZmljYXRlcygpIGNvbnN0OwotICAgIENyZWRlbnRpYWxU
eXBlIHR5cGUoKSBjb25zdDsKKyAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEo
KSBjb25zdCB7IHJldHVybiBtX25zQ3JlZGVudGlhbCAmJiBlbmNvZGluZ1JlcXVpcmVzUGxhdGZv
cm1EYXRhKG1fbnNDcmVkZW50aWFsLmdldCgpKTsgfQorCisjaWYgVVNFKENGTkVUV09SSykKKyAg
ICBDRlVSTENyZWRlbnRpYWxSZWYgY2ZDcmVkZW50aWFsKCkgY29uc3Q7CisjZW5kaWYKKyAgICBO
U1VSTENyZWRlbnRpYWwgKm5zQ3JlZGVudGlhbCgpIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wg
cGxhdGZvcm1Db21wYXJlKGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50aWFsJik7CiAK
IHByaXZhdGU6Ci0gICAgUmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiBtX2lkZW50aXR5OwotICAg
IFJldGFpblB0cjxDRkFycmF5UmVmPiBtX2NlcnRpZmljYXRlczsKLSAgICBDcmVkZW50aWFsVHlw
ZSBtX3R5cGU7CisgICAgc3RhdGljIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YShO
U1VSTENyZWRlbnRpYWwgKik7CisKKyAgICBtdXRhYmxlIFJldGFpblB0cjxOU1VSTENyZWRlbnRp
YWw+IG1fbnNDcmVkZW50aWFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVk
ZW50aWFsQ29jb2EubW0JKHJldmlzaW9uIDE3MTc3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw1MSArMjYsMTE4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNyZWRlbnRpYWxD
b2NvYS5oIgogCisjaWYgVVNFKENGTkVUV09SSykKK0BpbnRlcmZhY2UgTlNVUkxDcmVkZW50aWFs
IChXZWJEZXRhaWxzKQorLSAoaWQpX2luaXRXaXRoQ0ZVUkxDcmVkZW50aWFsOihDRlVSTENyZWRl
bnRpYWxSZWYpY3JlZGVudGlhbDsKKy0gKENGVVJMQ3JlZGVudGlhbFJlZikgX0NGVVJMQ3JlZGVu
dGlhbDsKK0BlbmQKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNyZWRlbnRpYWw6
OkNyZWRlbnRpYWwoU2VjSWRlbnRpdHlSZWYgaWRlbnRpdHksIENGQXJyYXlSZWYgY2VydGlmaWNh
dGVzLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2UpCi0gICAgOiBDcmVkZW50aWFs
QmFzZShlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBwZXJzaXN0ZW5jZSkKLSAgICAsIG1f
aWRlbnRpdHkoaWRlbnRpdHkpCi0gICAgLCBtX2NlcnRpZmljYXRlcyhjZXJ0aWZpY2F0ZXMpCi0g
ICAgLCBtX3R5cGUoQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSkKK3N0YXRpYyBOU1VS
TENyZWRlbnRpYWxQZXJzaXN0ZW5jZSB0b05TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlKENyZWRl
bnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSkKIHsKKyAgICBzd2l0Y2ggKHBlcnNpc3RlbmNl
KSB7CisgICAgY2FzZSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lOgorICAgICAgICByZXR1cm4g
TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lOworICAgIGNhc2UgQ3JlZGVudGlhbFBlcnNp
c3RlbmNlRm9yU2Vzc2lvbjoKKyAgICAgICAgcmV0dXJuIE5TVVJMQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlRm9yU2Vzc2lvbjsKKyAgICBjYXNlIENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudDoK
KyAgICAgICAgcmV0dXJuIE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlUGVybWFuZW50OworICAg
IH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBOU1VSTENyZWRlbnRp
YWxQZXJzaXN0ZW5jZU5vbmU7CiB9CiAKLWJvb2wgQ3JlZGVudGlhbDo6aXNFbXB0eSgpIGNvbnN0
CitzdGF0aWMgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHRvQ3JlZGVudGlhbFBlcnNpc3RlbmNlKE5T
VVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQogewotICAgIGlmIChtX3R5cGUg
PT0gQ3JlZGVudGlhbFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSAmJiAobV9pZGVudGl0eSB8fCBtX2Nl
cnRpZmljYXRlcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzd2l0Y2ggKHBlcnNpc3Rl
bmNlKSB7CisgICAgY2FzZSBOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU6CisgICAgICAg
IHJldHVybiBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lOworICAgIGNhc2UgTlNVUkxDcmVkZW50
aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uOgorICAgICAgICByZXR1cm4gQ3JlZGVudGlhbFBlcnNp
c3RlbmNlRm9yU2Vzc2lvbjsKKyAgICBjYXNlIE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlUGVy
bWFuZW50OgorI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDkwCisgICAgY2FzZSBOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZVN5bmNocm9u
aXphYmxlOgorI2VuZGlmCisgICAgICAgIHJldHVybiBDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJt
YW5lbnQ7CisgICAgfQogCi0gICAgcmV0dXJuIENyZWRlbnRpYWxCYXNlOjppc0VtcHR5KCk7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENyZWRlbnRpYWxQZXJzaXN0ZW5j
ZU5vbmU7Cit9CisKK0NyZWRlbnRpYWw6OkNyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYgb3Jp
Z2luYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSkKKyAgICA6IENyZWRlbnRp
YWxCYXNlKG9yaWdpbmFsLCBwZXJzaXN0ZW5jZSkKK3sKKyAgICBOU1VSTENyZWRlbnRpYWwgKm9y
aWdpbmFsTlNVUkxDcmVkZW50aWFsID0gb3JpZ2luYWwubV9uc0NyZWRlbnRpYWwuZ2V0KCk7Cisg
ICAgaWYgKCFvcmlnaW5hbE5TVVJMQ3JlZGVudGlhbCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKE5TU3RyaW5nICp1c2VyID0gb3JpZ2luYWxOU1VSTENyZWRlbnRpYWwudXNlcikKKyAgICAg
ICAgbV9uc0NyZWRlbnRpYWwgPSBhZG9wdE5TKFtbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBpbml0
V2l0aFVzZXI6dXNlciBwYXNzd29yZDpvcmlnaW5hbE5TVVJMQ3JlZGVudGlhbC5wYXNzd29yZCBw
ZXJzaXN0ZW5jZTp0b05TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKV0pOwor
ICAgIGVsc2UgaWYgKFNlY0lkZW50aXR5UmVmIGlkZW50aXR5ID0gb3JpZ2luYWxOU1VSTENyZWRl
bnRpYWwuaWRlbnRpdHkpCisgICAgICAgIG1fbnNDcmVkZW50aWFsID0gYWRvcHROUyhbW05TVVJM
Q3JlZGVudGlhbCBhbGxvY10gaW5pdFdpdGhJZGVudGl0eTppZGVudGl0eSBjZXJ0aWZpY2F0ZXM6
b3JpZ2luYWxOU1VSTENyZWRlbnRpYWwuY2VydGlmaWNhdGVzIHBlcnNpc3RlbmNlOnRvTlNVUkxD
cmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lzdGVuY2UpXSk7CisgICAgZWxzZSB7CisgICAgICAg
IC8vIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBzZXQgdGhlIHBlcnNpc3RlbmNlIG9mIHNlcnZlciB0
cnVzdCBjcmVkZW50aWFscy4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IG1fbnNDcmVkZW50aWFsID0gb3JpZ2luYWxOU1VSTENyZWRlbnRpYWw7CisgICAgfQogfQogCi1T
ZWNJZGVudGl0eVJlZiBDcmVkZW50aWFsOjppZGVudGl0eSgpIGNvbnN0CisjaWYgVVNFKENGTkVU
V09SSykKK0NyZWRlbnRpYWw6OkNyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWRlbnRp
YWwpCisgICAgOiBDcmVkZW50aWFsKGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIF9p
bml0V2l0aENGVVJMQ3JlZGVudGlhbDpjcmVkZW50aWFsXSkuZ2V0KCkpCiB7Ci0gICAgcmV0dXJu
IG1faWRlbnRpdHkuZ2V0KCk7CiB9Ci0gICAgCi1DRkFycmF5UmVmIENyZWRlbnRpYWw6OmNlcnRp
ZmljYXRlcygpIGNvbnN0CisjZW5kaWYKKworQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChOU1VSTENy
ZWRlbnRpYWwgKmNyZWRlbnRpYWwpCisgICAgOiBDcmVkZW50aWFsQmFzZShjcmVkZW50aWFsLnVz
ZXIsIGNyZWRlbnRpYWwucGFzc3dvcmQsIHRvQ3JlZGVudGlhbFBlcnNpc3RlbmNlKGNyZWRlbnRp
YWwucGVyc2lzdGVuY2UpKQorICAgICwgbV9uc0NyZWRlbnRpYWwoY3JlZGVudGlhbCkKIHsKLSAg
ICByZXR1cm4gbV9jZXJ0aWZpY2F0ZXMuZ2V0KCk7CiB9Ci0gICAgCi1DcmVkZW50aWFsVHlwZSBD
cmVkZW50aWFsOjp0eXBlKCkgY29uc3QKKworI2lmIFVTRShDRk5FVFdPUkspCitDRlVSTENyZWRl
bnRpYWxSZWYgQ3JlZGVudGlhbDo6Y2ZDcmVkZW50aWFsKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV90eXBlOworICAgIHJldHVybiBbbnNDcmVkZW50aWFsKCkgX0NGVVJMQ3JlZGVudGlhbF07CiB9
CisjZW5kaWYKIAotYm9vbCBDcmVkZW50aWFsOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQ3JlZGVu
dGlhbCYgYSwgY29uc3QgQ3JlZGVudGlhbCYgYikKK05TVVJMQ3JlZGVudGlhbCAqQ3JlZGVudGlh
bDo6bnNDcmVkZW50aWFsKCkgY29uc3QKIHsKLSAgICBpZiAoYS50eXBlKCkgIT0gQ3JlZGVudGlh
bFR5cGVDbGllbnRDZXJ0aWZpY2F0ZSB8fCBiLnR5cGUoKSAhPSBDcmVkZW50aWFsVHlwZUNsaWVu
dENlcnRpZmljYXRlKQotICAgICAgICByZXR1cm4gYS50eXBlKCkgPT0gYi50eXBlKCk7CisgICAg
aWYgKG1fbnNDcmVkZW50aWFsKQorICAgICAgICByZXR1cm4gbV9uc0NyZWRlbnRpYWwuZ2V0KCk7
CiAKLSAgICAvLyBGSVhNRTogSXMgcG9pbnRlciBjb21wYXJpc29uIG9mIHRoZSBpZGVudGl0eSBh
bmQgY2VydGlmaWNhdGVzIHByb3BlcnRpZXMgc3VmZmljaWVudD8KLSAgICBpZiAoYS5pZGVudGl0
eSgpICE9IGIuaWRlbnRpdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmNl
cnRpZmljYXRlcygpICE9IGIuY2VydGlmaWNhdGVzKCkpCisgICAgaWYgKENyZWRlbnRpYWxCYXNl
Ojppc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBtX25zQ3JlZGVudGlhbCA9
IGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoVXNlcjp1c2VyKCkgcGFz
c3dvcmQ6cGFzc3dvcmQoKSBwZXJzaXN0ZW5jZTp0b05TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNl
KHBlcnNpc3RlbmNlKCkpXSk7CisKKyAgICByZXR1cm4gbV9uc0NyZWRlbnRpYWwuZ2V0KCk7Cit9
CisKK2Jvb2wgQ3JlZGVudGlhbDo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgaWYgKG1fbnNDcmVk
ZW50aWFsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBy
ZXR1cm4gQ3JlZGVudGlhbEJhc2U6OmlzRW1wdHkoKTsKK30KKworYm9vbCBDcmVkZW50aWFsOjpw
bGF0Zm9ybUNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYgYSwgY29uc3QgQ3JlZGVudGlhbCYgYikK
K3sKKyAgICBpZiAoIWEubV9uc0NyZWRlbnRpYWwgJiYgIWIubV9uc0NyZWRlbnRpYWwpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIFthLm5zQ3JlZGVudGlhbCgpIGlzRXF1YWw6
Yi5uc0NyZWRlbnRpYWwoKV07Cit9CisKK2Jvb2wgQ3JlZGVudGlhbDo6ZW5jb2RpbmdSZXF1aXJl
c1BsYXRmb3JtRGF0YShOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpCit7CisgICAgcmV0dXJu
ICFjcmVkZW50aWFsLnVzZXI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGlj
YXRpb25NYWMuaAkocmV2aXNpb24gMTcxNzc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTgg
KzI4LDE0IEBACiAjaWZkZWYgX19PQkpDX18KIAogQGNsYXNzIE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U7Ci1AY2xhc3MgTlNVUkxDcmVkZW50aWFsOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotY2xhc3MgQ3JlZGVudGlhbDsKIAog
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFjKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJik7Ci1OU1VSTENyZWRlbnRpYWwgKm1hYyhjb25zdCBDcmVkZW50aWFsJik7CiAKIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
KTsKLUNyZWRlbnRpYWwgY29yZShOU1VSTENyZWRlbnRpYWwgKik7CiAKIH0KICNlbmRpZiAvLyBf
X09CSkNfXwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVu
dGljYXRpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHJldmlzaW9uIDE3MTc3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNsaWVu
dC5oIgogI2ltcG9ydCAiQ3JlZGVudGlhbC5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMQ3JlZGVu
dGlhbC5oPgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFByb3RlY3Rpb25TcGFjZS5oPgogCiAj
aWYgVVNFKENGTkVUV09SSykKQEAgLTQzLDExICs0Miw2IEBAICsoTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAqKV9hdXRoZW4KICNlbmRpZgogQGVuZAogCi1AaW50ZXJmYWNlIE5TVVJMQ3Jl
ZGVudGlhbCAoRGV0YWlscykKLS0gKGlkKSBfaW5pdFdpdGhDRlVSTENyZWRlbnRpYWw6KENGVVJM
Q3JlZGVudGlhbFJlZiljcmVkZW50aWFsOwotLSAoQ0ZVUkxDcmVkZW50aWFsUmVmKSBfY2Z1cmxj
cmVkZW50aWFsOwotQGVuZAotCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBA
IC04OCw3ICs4Miw3IEBAIC0gKHZvaWQpZGV0YWNoQ2xpZW50CiAtICh2b2lkKXVzZUNyZWRlbnRp
YWw6KE5TVVJMQ3JlZGVudGlhbCAqKWNyZWRlbnRpYWwgZm9yQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKIHsKICAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5yZWNlaXZlZENyZWRlbnRpYWwoY29yZShjaGFs
bGVuZ2UpLCBjb3JlKGNyZWRlbnRpYWwpKTsKKyAgICAgICAgbV9jbGllbnQtPnJlY2VpdmVkQ3Jl
ZGVudGlhbChjb3JlKGNoYWxsZW5nZSksIENyZWRlbnRpYWwoY3JlZGVudGlhbCkpOwogfQogCiAt
ICh2b2lkKWNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQpAQCAtMTI3LDExICsx
MjEsNiBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5TVVJMQXV0aGVuCiAgICAgcmV0
dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFtjaGFsbGVuZ2VTZW5kZXIgY2ZDaGFsbGVuZ2Vd
LCBbY2hhbGxlbmdlU2VuZGVyIGNsaWVudF0pOwogfQogCi1DcmVkZW50aWFsIGNvcmUoTlNVUkxD
cmVkZW50aWFsICptYWNDcmVkZW50aWFsKQotewotICAgIHJldHVybiBjb3JlKFttYWNDcmVkZW50
aWFsIF9jZnVybGNyZWRlbnRpYWxdKTsKLX0KLQogTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqbWFjKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlKQogewog
ICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoQ2xpZW50ID0gY29yZUNoYWxsZW5nZS5hdXRo
ZW50aWNhdGlvbkNsaWVudCgpOwpAQCAtMTQ3LDEyICsxMzYsNiBAQCBOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICptYWMoY29uc3QgCiAjZW5kaWYKIH0KIAotTlNVUkxDcmVkZW50aWFsICpt
YWMoY29uc3QgQ3JlZGVudGlhbCYgY29yZUNyZWRlbnRpYWwpCi17Ci0gICAgUmV0YWluUHRyPENG
VVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNyZWRl
bnRpYWwpKTsKLSAgICByZXR1cm4gW1tbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBfaW5pdFdpdGhD
RlVSTENyZWRlbnRpYWw6Y3JlZGVudGlhbC5nZXQoKV0gYXV0b3JlbGVhc2VdOwotfQotCiAjZWxz
ZQogCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29u
c3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsCkBAIC0xNzAsNyArMTUzLDcgQEAg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQwogCiBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqY2hhbGxlbmdlKQogICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKFBy
b3RlY3Rpb25TcGFjZShbY2hhbGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvcmUoW2NoYWxsZW5nZSBwcm9wb3NlZENyZWRlbnRpYWxd
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVkZW50aWFsKFtjaGFsbGVu
Z2UgcHJvcG9zZWRDcmVkZW50aWFsXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW2NoYWxsZW5nZSBwcmV2aW91c0ZhaWx1cmVDb3VudF0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW2NoYWxsZW5nZSBmYWlsdXJlUmVzcG9uc2VdLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtjaGFsbGVuZ2UgZXJyb3JdKQpAQCAtMjE2LDczICsxOTks
MTggQEAgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFjKGNvbnN0IAogICAgICAgICBy
ZXR1cm4gY29yZUNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiAgICAg
ICAgIAogICAgIHJldHVybiBbW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGFsbG9jXSBp
bml0V2l0aFByb3RlY3Rpb25TcGFjZTpjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLm5z
U3BhY2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByb3Bvc2VkQ3JlZGVudGlhbDptYWMoY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRl
bnRpYWwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9wb3NlZENyZWRlbnRpYWw6Y29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRp
YWwoKS5uc0NyZWRlbnRpYWwoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcmV2aW91c0ZhaWx1cmVDb3VudDpjb3JlQ2hhbGxlbmdlLnByZXZp
b3VzRmFpbHVyZUNvdW50KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmYWlsdXJlUmVzcG9uc2U6Y29yZUNoYWxsZW5nZS5mYWlsdXJl
UmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6Y29yZUNoYWxsZW5n
ZS5lcnJvcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VuZGVyOmNvcmVDaGFsbGVuZ2Uuc2VuZGVyKCldIGF1dG9y
ZWxlYXNlXTsKIH0KIAotTlNVUkxDcmVkZW50aWFsICptYWMoY29uc3QgQ3JlZGVudGlhbCYgY29y
ZUNyZWRlbnRpYWwpCi17Ci0gICAgaWYgKGNvcmVDcmVkZW50aWFsLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLQotICAgIE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3Rl
bmNlID0gTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lOwotICAgIHN3aXRjaCAoY29yZUNy
ZWRlbnRpYWwucGVyc2lzdGVuY2UoKSkgewotICAgICAgICBjYXNlIENyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmU6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDcmVkZW50aWFsUGVy
c2lzdGVuY2VGb3JTZXNzaW9uOgotICAgICAgICAgICAgcGVyc2lzdGVuY2UgPSBOU1VSTENyZWRl
bnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb247Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnQ6Ci0gICAgICAgICAgICBwZXJzaXN0
ZW5jZSA9IE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlUGVybWFuZW50OwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICB9Ci0KLSAgICBpZiAoY29yZUNyZWRlbnRpYWwudHlwZSgpID09IENyZWRlbnRpYWxU
eXBlQ2xpZW50Q2VydGlmaWNhdGUpIHsKLSAgICAgICAgcmV0dXJuIFtbW05TVVJMQ3JlZGVudGlh
bCBhbGxvY10gaW5pdFdpdGhJZGVudGl0eTpjb3JlQ3JlZGVudGlhbC5pZGVudGl0eSgpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZXM6KE5T
QXJyYXkgKiljb3JlQ3JlZGVudGlhbC5jZXJ0aWZpY2F0ZXMoKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RlbmNlOnBlcnNpc3RlbmNlXQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9yZWxlYXNlXTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gW1tbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBpbml0V2l0aFVz
ZXI6Y29yZUNyZWRlbnRpYWwudXNlcigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFzc3dvcmQ6Y29yZUNyZWRlbnRpYWwucGFzc3dvcmQoKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RlbmNlOnBlcnNpc3RlbmNlXQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9yZWxlYXNlXTsKLX0KLQogQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWND
aGFsbGVuZ2UpCiB7CiAgICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1hY0NoYWxs
ZW5nZSk7CiB9CiAKLUNyZWRlbnRpYWwgY29yZShOU1VSTENyZWRlbnRpYWwgKm1hY0NyZWRlbnRp
YWwpCi17Ci0gICAgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlID0gQ3JlZGVudGlh
bFBlcnNpc3RlbmNlTm9uZTsKLSAgICBzd2l0Y2ggKFttYWNDcmVkZW50aWFsIHBlcnNpc3RlbmNl
XSkgewotICAgICAgICBjYXNlIE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZToKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9y
U2Vzc2lvbjoKLSAgICAgICAgICAgIHBlcnNpc3RlbmNlID0gQ3JlZGVudGlhbFBlcnNpc3RlbmNl
Rm9yU2Vzc2lvbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5TVVJMQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlUGVybWFuZW50OgotICAgICAgICAgICAgcGVyc2lzdGVuY2UgPSBDcmVk
ZW50aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAg
IFNlY0lkZW50aXR5UmVmIGlkZW50aXR5ID0gW21hY0NyZWRlbnRpYWwgaWRlbnRpdHldOwotICAg
IGlmIChpZGVudGl0eSkKLSAgICAgICAgcmV0dXJuIENyZWRlbnRpYWwoaWRlbnRpdHksIChDRkFy
cmF5UmVmKVttYWNDcmVkZW50aWFsIGNlcnRpZmljYXRlc10sIHBlcnNpc3RlbmNlKTsKLSAgICAK
LSAgICByZXR1cm4gQ3JlZGVudGlhbChbbWFjQ3JlZGVudGlhbCB1c2VyXSwgW21hY0NyZWRlbnRp
YWwgcGFzc3dvcmRdLCBwZXJzaXN0ZW5jZSk7Ci19Ci0KICNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JL
KQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQko
cmV2aXNpb24gMTcxNzc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q3JlZGVudGlhbFN0b3JhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJv
bVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNl
KQogewogICAgIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCA9IFtbTlNVUkxDcmVkZW50aWFs
U3RvcmFnZSBzaGFyZWRDcmVkZW50aWFsU3RvcmFnZV0gZGVmYXVsdENyZWRlbnRpYWxGb3JQcm90
ZWN0aW9uU3BhY2U6cHJvdGVjdGlvblNwYWNlLm5zU3BhY2UoKV07Ci0gICAgcmV0dXJuIGNyZWRl
bnRpYWwgPyBjb3JlKGNyZWRlbnRpYWwpIDogQ3JlZGVudGlhbCgpOworICAgIHJldHVybiBjcmVk
ZW50aWFsID8gQ3JlZGVudGlhbChjcmVkZW50aWFsKSA6IENyZWRlbnRpYWwoKTsKIH0KIAogI2lm
IFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiAxNzE3NzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZUZvclNlc3Npb25dOwogICAgICAgICBkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2Ug
PSBjaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogICAgICAgICBkLT5t
X2N1cnJlbnRXZWJDaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7Ci0gICAgICAgIHJlY2VpdmVkQ3JlZGVu
dGlhbChjaGFsbGVuZ2UsIGNvcmUoY3JlZGVudGlhbCkpOworICAgICAgICByZWNlaXZlZENyZWRl
bnRpYWwoY2hhbGxlbmdlLCBDcmVkZW50aWFsKGNyZWRlbnRpYWwpKTsKICAgICAgICAgW2NyZWRl
bnRpYWwgcmVsZWFzZV07CiAgICAgICAgIC8vIEZJWE1FOiBQZXIgdGhlIHNwZWNpZmljYXRpb24s
IHRoZSB1c2VyIHNob3VsZG4ndCBiZSBhc2tlZCBmb3IgY3JlZGVudGlhbHMgaWYgdGhlcmUgd2Vy
ZSBpbmNvcnJlY3Qgb25lcyBwcm92aWRlZCBleHBsaWNpdGx5LgogICAgICAgICBkLT5tX3VzZXIg
PSBTdHJpbmcoKTsKQEAgLTU3NCw3ICs1NzQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRS
ZWNlaXZlQXV0aGVudGljCiAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjcmVkZW50
aWFsIGJhY2ssIHBvc3NpYmx5IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRoaXMgZGlyZWN0
b3J5LgogICAgICAgICAgICAgICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNyZWRlbnRp
YWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25z
ZSgpLnVybCgpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgW2NoYWxsZW5n
ZS5zZW5kZXIoKSB1c2VDcmVkZW50aWFsOm1hYyhjcmVkZW50aWFsKSBmb3JBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTptYWMoY2hhbGxlbmdlKV07CisgICAgICAgICAgICAgICAgW2NoYWxsZW5nZS5z
ZW5kZXIoKSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkgZm9yQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6bWFjKGNoYWxsZW5nZSldOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNjU4LDkgKzY1OCw5IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCgKICAgICAgICAgaWYgKGNoYWxsZW5nZS5m
YWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKICAgICAgICAgICAgIHVy
bFRvU3RvcmUgPSBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7CiAgICAgICAgIENy
ZWRlbnRpYWxTdG9yYWdlOjpzZXQod2ViQ3JlZGVudGlhbCwgUHJvdGVjdGlvblNwYWNlKFtkLT5t
X2N1cnJlbnRNYWNDaGFsbGVuZ2UgcHJvdGVjdGlvblNwYWNlXSksIHVybFRvU3RvcmUpOwotICAg
ICAgICBbW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6bWFj
KHdlYkNyZWRlbnRpYWwpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmQtPm1fY3VycmVudE1h
Y0NoYWxsZW5nZV07CisgICAgICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNlbmRlcl0g
dXNlQ3JlZGVudGlhbDp3ZWJDcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpIGZvckF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOmQtPm1fY3VycmVudE1hY0NoYWxsZW5nZV07CiAgICAgfSBlbHNlCi0gICAg
ICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDptYWMo
Y3JlZGVudGlhbCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6ZC0+bV9jdXJyZW50TWFjQ2hh
bGxlbmdlXTsKKyAgICAgICAgW1tkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2Ugc2VuZGVyXSB1c2VD
cmVkZW50aWFsOmNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkgZm9yQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6ZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlXTsKIAogICAgIGNsZWFyQXV0aGVudGljYXRp
b24oKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MTc3OCkKKysrIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE0LTA3LTI5
ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlZCBmb3Ig
Y2hhbmdlcyB0byB0aGUgV2ViQ29yZTo6Q3JlZGVudGlhbCBBUEkuCisgICAgICAgIFdvcmsgdG93
YXJkcyBmaXhpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTMy
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hh
cmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkOjpyZWNlaXZlZENyZWRlbnRpYWwpOlVzZSBuZXcgQ3JlZGVudGlhbDo6bnNDcmVkZW50aWFs
IGdldHRlci4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjplbmNvZGUpOiAgSWYgZW5j
b2RpbmcgdGhlIGNyZWRlbnRpYWwgcmVxdWlyZXMgZW5jb2RpbmcgdGhlCisgICAgICAgIHBsYXRm
b3JtIGRhdGEsIGRvIHRoYXQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q3JlZGVudGlh
bD46OmRlY29kZSk6IElmIHBsYXRmb3JtIGRhdGEgd2FzIGVuY29kZWQsIGRlY29kZSBpdC4KKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxDcmVkZW50aWFsPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKTogQXJjaGl2ZSB0aGUgTlNV
UkxDcmVkZW50aWFsLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+Ojpk
ZWNvZGVQbGF0Zm9ybURhdGEpOiBVbmFyY2hpdmUgaXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbToKKyAgICAgICAgKC1b
V0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIHVzZUNyZWRlbnRpYWw6Zm9yQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6XSk6IFVzZQorICAgICAgICBDcmVkZW50aWFsIGNvbnN0cnVj
dG9yIHRoYXQgdGFrZXMgYW4gTlNVUkxDcmVkZW50aWFsLgorCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0
YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJh
bWUpOiBEaXR0by4KKworCiAyMDE0LTA3LTI5ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgogCiAgICAgICAgIFdLUERGVmlldyBwYWludHMgcm90YXRlZCBwYWdlcyBzcXVp
c2hlZApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAJKHJldmlzaW9uIDE3MTc3OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDYsNTYgKzUwNiwyNSBA
QCBib29sIEFyZ3VtZW50Q29kZXI8UHJvdGVjdGlvblNwYWNlPjo6ZGVjCiAKIHZvaWQgQXJndW1l
bnRDb2RlcjxDcmVkZW50aWFsPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29u
c3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKLSNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFM
U19TVVBQT1JURUQKLSAgICBlbmNvZGVyLmVuY29kZUVudW0oY3JlZGVudGlhbC50eXBlKCkpOwot
Ci0gICAgaWYgKGNyZWRlbnRpYWwudHlwZSgpID09IENyZWRlbnRpYWxUeXBlQ2xpZW50Q2VydGlm
aWNhdGUpIHsKLSAgICAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgY3JlZGVudGlhbC5pZGVudGl0
eSgpKTsKLQotICAgICAgICBlbmNvZGVyIDw8ICEhY3JlZGVudGlhbC5jZXJ0aWZpY2F0ZXMoKTsK
LSAgICAgICAgaWYgKGNyZWRlbnRpYWwuY2VydGlmaWNhdGVzKCkpCi0gICAgICAgICAgICBJUEM6
OmVuY29kZShlbmNvZGVyLCBjcmVkZW50aWFsLmNlcnRpZmljYXRlcygpKTsKLQotICAgICAgICBl
bmNvZGVyLmVuY29kZUVudW0oY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpKTsKKyAgICBpZiAoY3Jl
ZGVudGlhbC5lbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkpIHsKKyAgICAgICAgZW5jb2Rl
ciA8PCB0cnVlOworICAgICAgICBlbmNvZGVQbGF0Zm9ybURhdGEoZW5jb2RlciwgY3JlZGVudGlh
bCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKLSAgICBlbmNvZGVyIDw8IGNyZWRl
bnRpYWwudXNlcigpIDw8IGNyZWRlbnRpYWwucGFzc3dvcmQoKTsKIAorICAgIGVuY29kZXIgPDwg
ZmFsc2U7CisgICAgZW5jb2RlciA8PCBjcmVkZW50aWFsLnVzZXIoKSA8PCBjcmVkZW50aWFsLnBh
c3N3b3JkKCk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNyZWRlbnRpYWwucGVyc2lzdGVuY2Uo
KSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKLSNpZiBDRVJUSUZJ
Q0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKLSAgICBDcmVkZW50aWFsVHlwZSB0eXBlOwotCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0odHlwZSkpCisgICAgYm9vbCBoYXNQbGF0Zm9ybURh
dGE7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNQbGF0Zm9ybURhdGEpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAodHlwZSA9PSBDcmVkZW50aWFsVHlwZUNsaWVudENlcnRp
ZmljYXRlKSB7Ci0gICAgICAgIFJldGFpblB0cjxTZWNJZGVudGl0eVJlZj4gaWRlbnRpdHk7Ci0g
ICAgICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgaWRlbnRpdHkpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGJvb2wgaGFzQ2VydGlmaWNhdGVzOwotICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGhhc0NlcnRpZmljYXRlcykpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNlcnRpZmljYXRlczsKLSAg
ICAgICAgaWYgKGhhc0NlcnRpZmljYXRlcykgewotICAgICAgICAgICAgaWYgKCFJUEM6OmRlY29k
ZShkZWNvZGVyLCBjZXJ0aWZpY2F0ZXMpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotCi0gICAgICAgIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZTsK
LSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocGVyc2lzdGVuY2UpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKGlkZW50
aXR5LmdldCgpLCBjZXJ0aWZpY2F0ZXMuZ2V0KCksIHBlcnNpc3RlbmNlKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotI2VuZGlmCisgICAgaWYgKGhhc1BsYXRmb3JtRGF0YSkKKyAgICAg
ICAgcmV0dXJuIGRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyLCBjcmVkZW50aWFsKTsKIAogICAg
IFN0cmluZyB1c2VyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXNlcikpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAx
NzE3NzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzNSw2ICsyMzUsOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNyZWRlbnRpYWw+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShB
cmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CisgICAgc3RhdGljIHZvaWQg
ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNyZWRl
bnRpYWwmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNv
ZGVyJiwgV2ViQ29yZTo6Q3JlZGVudGlhbCYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpDdXJzb3I+IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAxNzE3Nzgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgRG93bmxvYWQ6OnBsYXRmb3Jt
RGlkRmluaXNoKCkKIAogdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY29uc3QgQ3Jl
ZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKLSAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2Vu
ZGVyKCkgdXNlQ3JlZGVudGlhbDptYWMoY3JlZGVudGlhbCkgZm9yQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSgpXTsKKyAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgdXNlQ3JlZGVudGlh
bDpjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07CiB9
CiAKIHZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVu
dGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVB
cmd1bWVudENvZGVyc01hYy5tbQkocmV2aXNpb24gMTcxNzc4KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9y
dCA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29udGVudEZp
bHRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0tleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KQEAgLTMxNSw2ICszMTYsMzUgQEAgYm9v
bCBBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmRlYwogICAgIHJldHVybiB0cnVlOwog
fQogCit2b2lkIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmVuY29kZVBsYXRmb3JtRGF0YShB
cmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCit7
CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURhdGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
RGF0YSBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxOU0tleWVkQXJjaGl2ZXI+IGFyY2hp
dmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRo
TXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3Vy
ZUNvZGluZzpZRVNdOworICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6Y3JlZGVudGlhbC5uc0Ny
ZWRlbnRpYWwoKSBmb3JLZXk6QCJjcmVkZW50aWFsIl07CisgICAgW2FyY2hpdmVyIGZpbmlzaEVu
Y29kaW5nXTsKKyAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0
YVJlZj4oZGF0YS5nZXQoKSkpOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46
OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIENyZWRlbnRpYWwm
IGNyZWRlbnRpYWwpCit7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKKyAgICBpZiAo
IUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBSZXRhaW5QdHI8TlNLZXllZFVuYXJjaGl2ZXI+IHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNL
ZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAqKWRh
dGEuZ2V0KCldKTsKKyAgICBbdW5hcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNd
OworICAgIEB0cnkgeworICAgICAgICBpZiAoUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gbnND
cmVkZW50aWFsID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNVUkxDcmVkZW50
aWFsIGNsYXNzXSBmb3JLZXk6QCJjcmVkZW50aWFsIl0pCisgICAgICAgICAgICBjcmVkZW50aWFs
ID0gQ3JlZGVudGlhbChuc0NyZWRlbnRpYWwuZ2V0KCkpOworICAgIH0gQGNhdGNoIChOU0V4Y2Vw
dGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBO
U1VSTENyZWRlbnRpYWw6ICVAIiwgZXhjZXB0aW9uKTsKKyAgICB9CisKKyAgICBbdW5hcmNoaXZl
ciBmaW5pc2hEZWNvZGluZ107CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgQXJndW1lbnRD
b2RlcjxLZXlwcmVzc0NvbW1hbmQ+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBLZXlwcmVzc0NvbW1hbmQmIGtleXByZXNzQ29tbWFuZCkKIHsKICAgICBlbmNvZGVyIDw8
IGtleXByZXNzQ29tbWFuZC5jb21tYW5kTmFtZSA8PCBrZXlwcmVzc0NvbW1hbmQudGV4dDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1
bWVudENvZGVyc1NvdXAuY3BwCShyZXZpc2lvbiAxNzE3NzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTUyLDUgKzE1MiwxNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8UHJvdGVjdGlvblNwYWNlPjo6
ZGVjCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlh
bD46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXImLCBjb25zdCBDcmVkZW50aWFs
JikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVy
PENyZWRlbnRpYWw+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiwgQ3JlZGVu
dGlhbCYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1tCShy
ZXZpc2lvbiAxNzE3NzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtODcsNyAr
ODcsNyBAQCAtICh2b2lkKXVzZUNyZWRlbnRpYWw6KE5TVVJMQ3JlZGVudGlhbCAqCiB7CiAgICAg
Y2hlY2tDaGFsbGVuZ2UoY2hhbGxlbmdlKTsKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5JiB3ZWJDaGFsbGVuZ2UgPSAoKFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNo
YWxsZW5nZSkuX3dlYl9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OwotICAgIHdlYkNoYWxs
ZW5nZS5saXN0ZW5lcigpLT51c2VDcmVkZW50aWFsKFdlYkNyZWRlbnRpYWw6OmNyZWF0ZShjb3Jl
KGNyZWRlbnRpYWwpKS5nZXQoKSk7CisgICAgd2ViQ2hhbGxlbmdlLmxpc3RlbmVyKCktPnVzZUNy
ZWRlbnRpYWwoV2ViQ3JlZGVudGlhbDo6Y3JlYXRlKENyZWRlbnRpYWwoY3JlZGVudGlhbCkpLmdl
dCgpKTsKIH0KIAogLSAodm9pZClwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQkocmV2aXNpb24gMTcxNzc4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQAogI2lt
cG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJfV0tFcnJvclJlY292ZXJ5QXR0ZW1w
dGluZy5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2Vi
Q29yZS9BdXRoZW50aWNhdGlvbk1hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+
CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmIFVTRShRVUlDS19MT09LKQpA
QCAtNzI0LDcgKzcyNCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRp
ZFIKICAgICAgICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVk
ZW50aWFsOiB7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxXZWJDcmVkZW50aWFsPiB3ZWJD
cmVkZW50aWFsOwogICAgICAgICAgICAgICAgICAgICBpZiAoY3JlZGVudGlhbCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHdlYkNyZWRlbnRpYWwgPSBXZWJDcmVkZW50aWFsOjpjcmVhdGUoV2Vi
Q29yZTo6Y29yZShjcmVkZW50aWFsKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB3ZWJDcmVk
ZW50aWFsID0gV2ViQ3JlZGVudGlhbDo6Y3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoY3JlZGVu
dGlhbCkpOwogCiAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS0+dXNl
Q3JlZGVudGlhbCh3ZWJDcmVkZW50aWFsLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzE3NzgpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNC0w
Ny0yOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQg
Zm9yIGNoYW5nZXMgdG8gdGhlIFdlYkNvcmU6OkNyZWRlbnRpYWwgQVBJLgorICAgICAgICBXb3Jr
IHRvd2FyZHMgZml4aW5nIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzUzMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IE1pc2MvV2ViRG93bmxvYWQubW06CisgICAgICAgICgtW1dlYkRvd25sb2FkSW50ZXJuYWwgZG93
bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0pOiBVc2UgbmV3IG5zQ3Jl
ZGVudGlhbAorICAgICAgICBnZXR0ZXIuCisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoV2ViS2l0OjpnZXRBdXRoZW50aWNhdGlvbkluZm8p
OiBEaXR0by4KKwogMjAxNC0wNy0yNyAgUHJhdGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBwcmVmZXJlbmNlIGtleXMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQkocmV2aXNpb24gMTcxNzc4KQorKysgU291cmNl
L1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcg
KzEyOCw3IEBAIC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG8KICNpZiAh
UExBVEZPUk0oSU9TKQogICAgIC8vIFRyeSBwcmV2aW91c2x5IHN0b3JlZCBjcmVkZW50aWFsIGZp
cnN0LgogICAgIGlmICghW2NoYWxsZW5nZSBwcmV2aW91c0ZhaWx1cmVDb3VudF0pIHsKLSAgICAg
ICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsID0gbWFjKENyZWRlbnRpYWxTdG9yYWdlOjpn
ZXQoUHJvdGVjdGlvblNwYWNlKFtjaGFsbGVuZ2UgcHJvdGVjdGlvblNwYWNlXSkpKTsKKyAgICAg
ICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsID0gQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChQ
cm90ZWN0aW9uU3BhY2UoW2NoYWxsZW5nZSBwcm90ZWN0aW9uU3BhY2VdKSkubnNDcmVkZW50aWFs
KCk7CiAgICAgICAgIGlmIChjcmVkZW50aWFsKSB7CiAgICAgICAgICAgICBbW2NoYWxsZW5nZSBz
ZW5kZXJdIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbCBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTpjaGFsbGVuZ2VdOwogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQkocmV2
aXNpb24gMTcxNzc4KQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MjgsNyArOTI4LDcgQEAgICAgIGlm
ICghcHJvdG9jb2wpCiAgICAgCiAgICAgUmV0YWluUHRyPE5TVVJMUHJvdGVjdGlvblNwYWNlPiBw
cm90ZWN0aW9uU3BhY2UgPSBhZG9wdE5TKFtbTlNVUkxQcm90ZWN0aW9uU3BhY2UgYWxsb2NdIGlu
aXRXaXRoSG9zdDpob3N0IHBvcnQ6cG9ydCBwcm90b2NvbDpwcm90b2NvbCByZWFsbTpyZWFsbSBh
dXRoZW50aWNhdGlvbk1ldGhvZDphdXRoZW50aWNhdGlvbk1ldGhvZF0pOwogICAgIAotICAgIE5T
VVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCA9IG1hYyhDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KFBy
b3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UuZ2V0KCkpKSk7CisgICAgTlNVUkxDcmVkZW50
aWFsICpjcmVkZW50aWFsID0gQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChQcm90ZWN0aW9uU3BhY2Uo
cHJvdGVjdGlvblNwYWNlLmdldCgpKSkubnNDcmVkZW50aWFsKCk7CiAgICAgaWYgKCFjcmVkZW50
aWFsKQogICAgICAgICBjcmVkZW50aWFsID0gW1tOU1VSTENyZWRlbnRpYWxTdG9yYWdlIHNoYXJl
ZENyZWRlbnRpYWxTdG9yYWdlXSBkZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZTpw
cm90ZWN0aW9uU3BhY2UuZ2V0KCldOwogICAgIGlmICghY3JlZGVudGlhbCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235788</attachid>
            <date>2014-07-30 18:09:21 -0700</date>
            <delta_ts>2014-07-31 09:14:48 -0700</delta_ts>
            <desc>IV. Allow the delegate to respond to server trust challenges</desc>
            <filename>bug-135327-20140730180908.patch</filename>
            <type>text/plain</type>
            <size>5456</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MTgyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA3LTMwICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQ29yZSBwYXJ0IG9mOiBTZXJ2
ZXIgdHJ1c3QgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlcyBhcmVu4oCZdCBzZW50IHRvIHRoZSBu
YXZpZ2F0aW9uIGRlbGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzUzMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKTog
RG9u4oCZdCB0cnkgdG8gY2hhbmdlIHRoZSBwZXJzaXN0ZW5jZSBvZgorICAgICAgICBjcmVkZW50
aWFscyB1c2VkIGZvciBzZXJ2ZXIgdHJ1c3QsIGJlY2F1c2UgdGhlIHBsYXRmb3JtIGRvZXNu4oCZ
dCBzdXBwb3J0IHBlcnNpc3RlbmNlIHZhbHVlcworICAgICAgICBvdGhlciB0aGFuIFNlc3Npb24g
Zm9yIHNlcnZlciB0cnVzdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZENyZWRlbnRpYWwpOiBEaXR0by4KKwogMjAxNC0wNy0zMCAgQW5kcmVhcyBLbGluZyAgPGFrbGlu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgU3RhdGljIGhhc2ggdGFibGVzIG5vIGxvbmdlciBuZWVk
IHRvIGJlIGNvdXBsZWQgd2l0aCBhIFZNLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShyZXZp
c2lvbiAxNzE4MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsNyArNDIxLDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVy
c2lzdGVuY2VGb3JTZXNzaW9uKSB7CisgICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9
PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uICYmIGNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UoKS5hdXRoZW50aWNhdGlvblNjaGVtZSgpICE9IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRp
Y2F0aW9uU2NoZW1lU2VydmVyVHJ1c3RFdmFsdWF0aW9uUmVxdWVzdGVkKSB7CiAgICAgICAgIC8v
IE1hbmFnZSBwZXItc2Vzc2lvbiBjcmVkZW50aWFscyBpbnRlcm5hbGx5LCBiZWNhdXNlIG9uY2Ug
TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJTZXNzaW9uIGlzIHVzZWQsIHRoZXJlIGlzIG5v
IHdheQogICAgICAgICAvLyB0byBpZ25vcmUgaXQgZm9yIGEgcGFydGljdWxhciByZXF1ZXN0IChz
aG9ydCBvZiByZW1vdmluZyBpdCBhbHRvZ2V0aGVyKS4KICAgICAgICAgQ3JlZGVudGlhbCB3ZWJD
cmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIENyZWRl
bnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDE3
MTgyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFu
ZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VG
b3JTZXNzaW9uKSB7CisgICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBDcmVkZW50
aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uICYmIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5h
dXRoZW50aWNhdGlvblNjaGVtZSgpICE9IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2No
ZW1lU2VydmVyVHJ1c3RFdmFsdWF0aW9uUmVxdWVzdGVkKSB7CiAgICAgICAgIC8vIE1hbmFnZSBw
ZXItc2Vzc2lvbiBjcmVkZW50aWFscyBpbnRlcm5hbGx5LCBiZWNhdXNlIG9uY2UgTlNVUkxDcmVk
ZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uIGlzIHVzZWQsIHRoZXJlIGlzIG5vIHdheQogICAg
ICAgICAvLyB0byBpZ25vcmUgaXQgZm9yIGEgcGFydGljdWxhciByZXF1ZXN0IChzaG9ydCBvZiBy
ZW1vdmluZyBpdCBhbHRvZ2V0aGVyKS4KICAgICAgICAgQ3JlZGVudGlhbCB3ZWJDcmVkZW50aWFs
KGNyZWRlbnRpYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwpJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMTcxODI1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDctMzAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KKworICAgICAgICBXZWJLaXQgcGFydCBvZjogU2VydmVyIHRydXN0IGF1dGhlbnRp
Y2F0aW9uIGNoYWxsZW5nZXMgYXJlbuKAmXQgc2VudCB0byB0aGUgbmF2aWdhdGlvbiBkZWxlZ2F0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MzI3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZUluRnJhbWUpOgorICAgICAgICBSZXR1cm4gdHJ1ZSBmb3Igc2VydmVyIHRydXN0IHByb3Rl
Y3Rpb24gc3BhY2VzIGlmIHRoZSBkZWxlZ2F0ZSBpbXBsZW1lbnRzCisgICAgICAgIC13ZWJWaWV3
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjouCisg
ICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKTogUmVtb3ZlZAorICAgICAgICBhbiBhc3Nl
cnRpb24gdGhhdCBpcyBubyBsb25nZXIgdHJ1ZSBkdWUgdG8gdGhlIGFib3ZlLgorCiAyMDE0LTA3
LTMwICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBTdGF0aWMg
aGFzaCB0YWJsZXMgbm8gbG9uZ2VyIG5lZWQgdG8gYmUgY291cGxlZCB3aXRoIGEgVk0uCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0JKHJldmlzaW9uIDE3MTgyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRMCiBib29sIE5hdmlnYXRpb25TdGF0
ZTo6TG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5G
cmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktp
dDo6V2ViUHJvdGVjdGlvblNwYWNlKiBwcm90ZWN0aW9uU3BhY2UpCiB7CiAgICAgaWYgKG1fbmF2
aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIHJldHVy
biBwcm90ZWN0aW9uU3BhY2UtPmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgIT0gV2ViQ29yZTo6UHJv
dGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1
ZXN0ZWQ7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0
ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcwNyw3ICs3MDcs
NiBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRSCiB7CiAjaWYgIWRl
ZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgfHwgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiAgICAgaWYgKG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2
aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpIHsKLSAgICAgICAgQVNTRVJUKGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLT5wcm90ZWN0aW9uU3BhY2UoKS0+YXV0aGVudGljYXRpb25TY2hlbWUoKSAhPSBX
ZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVNlcnZlclRydXN0RXZh
bHVhdGlvblJlcXVlc3RlZCk7CiAgICAgICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9u
YXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CiAgICAgICAgIGlmICgh
bmF2aWdhdGlvbkRlbGVnYXRlKSB7CiAgICAgICAgICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS0+bGlzdGVuZXIoKS0+cGVyZm9ybURlZmF1bHRIYW5kbGluZygpOwo=
</data>
<flag name="review"
          id="260370"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>