<?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>82664</bug_id>
          
          <creation_ts>2012-03-29 14:57:06 -0700</creation_ts>
          <short_desc>Need DOMWindow mechanism to supplement UserScripts for page cache notifications</short_desc>
          <delta_ts>2012-04-24 13:15:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jesus</cc>
    
    <cc>menard</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>591598</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-03-29 14:57:06 -0700</bug_when>
    <thetext>Need DOMWindow mechanism to supplement UserScripts for page cache notifications.
---
Clients of the user script mechanism often also inject native hooks into the javascript context for those user scripts to interact with.

When a page is suspended for the page cache and then restored from the page cache, those injected hooks are cleared, leading to many types of bugs with the user scripts.

Such clients need to have notifications for when the global object (the DOMWindow) is suspended for the page cache, resumed from the page cache, and destroyed - whether or not in the page cache.

DOMWindowProperty gives us a fantastic hook for this, and we create a &quot;DOMWindowExtension&quot; for each user script we inject into a world to uniquely track the lifetime of each world in each DOMWindow.

The mechanism has room to be extended in the future to provide more functionality than the &quot;unique-identifier plus notifications&quot; included in this first pass.

WebCore implementation, WebKit2 API, and WebKit2 API Test forthcoming.

In radar as &lt;rdar://problem/10120155&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591690</commentid>
    <comment_count>1</comment_count>
      <attachid>134689</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-03-29 16:25:34 -0700</bug_when>
    <thetext>Created attachment 134689
Patch v1 - Add the API and an API test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591692</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-29 16:28:28 -0700</bug_when>
    <thetext>Attachment 134689 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleClient.h:49:  The parameter name &quot;extension&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/page/Frame.cpp:42:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Tools/TestWebKitAPI/InjectedBundleController.h:61:  The parameter name &quot;bundle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:61:  The parameter name &quot;extension&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:62:  The parameter name &quot;bundle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:62:  The parameter name &quot;extension&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:63:  The parameter name &quot;bundle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:63:  The parameter name &quot;extension&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:64:  The parameter name &quot;bundle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:64:  The parameter name &quot;extension&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:95:  One space before end of line comments  [whitespace/comments] [5]
Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:56:  The parameter name &quot;frame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:59:  The parameter name &quot;bundle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:59:  The parameter name &quot;extension&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 15 in 36 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>591709</commentid>
    <comment_count>3</comment_count>
      <attachid>134689</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-29 16:52:45 -0700</bug_when>
    <thetext>Comment on attachment 134689
Patch v1 - Add the API and an API test

Attachment 134689 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12243005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591711</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-03-29 16:56:56 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 134689 [details])
&gt; Attachment 134689 [details] did not pass win-ews (win):
&gt; Output: http://queues.webkit.org/results/12243005

I completely overlooked other WebCore builds since this is really to support a Mac WK2 feature.  My bad!  New patch is on its way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591727</commentid>
    <comment_count>5</comment_count>
      <attachid>134689</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-29 17:09:24 -0700</bug_when>
    <thetext>Comment on attachment 134689
Patch v1 - Add the API and an API test

Attachment 134689 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12207029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591734</commentid>
    <comment_count>6</comment_count>
      <attachid>134699</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-03-29 17:15:25 -0700</bug_when>
    <thetext>Created attachment 134699
Patch v2 - Now with more build fixes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591741</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-29 17:19:40 -0700</bug_when>
    <thetext>Attachment 134699 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleClient.h:49:  The parameter name &quot;extension&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:95:  One space before end of line comments  [whitespace/comments] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:61:  The parameter name &quot;bundle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:61:  The parameter name &quot;extension&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:62:  The parameter name &quot;bundle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:62:  The parameter name &quot;extension&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:63:  The parameter name &quot;bundle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:63:  The parameter name &quot;extension&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:64:  The parameter name &quot;bundle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/InjectedBundleController.h:64:  The parameter name &quot;extension&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/ChangeLog:50:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/ChangeLog:51:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/ChangeLog:52:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/ChangeLog:53:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/ChangeLog:54:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:56:  The parameter name &quot;frame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:59:  The parameter name &quot;bundle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:59:  The parameter name &quot;extension&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 19 in 41 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>591765</commentid>
    <comment_count>8</comment_count>
      <attachid>134699</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-29 17:44:02 -0700</bug_when>
    <thetext>Comment on attachment 134699
Patch v2 - Now with more build fixes!

Attachment 134699 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12239015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591775</commentid>
    <comment_count>9</comment_count>
      <attachid>134699</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-03-29 18:09:09 -0700</bug_when>
    <thetext>Comment on attachment 134699
Patch v2 - Now with more build fixes!

I am not sold on this API, specially the one extension per world. I am going to take some time to look it over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591777</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-03-29 18:11:39 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 134699 [details])
&gt; I am not sold on this API, specially the one extension per world. I am going to take some time to look it over.

Would love to talk with you about your concerns in person.  It went through a few iterations here before we settled on something that fulfilled the use cases, followed the user script model, and was efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591779</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-03-29 18:13:18 -0700</bug_when>
    <thetext>And - like a bonehead - forgot to add new files to the other WK2 builds.  Will do so in the morning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591785</commentid>
    <comment_count>12</comment_count>
      <attachid>134699</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-29 18:26:10 -0700</bug_when>
    <thetext>Comment on attachment 134699
Patch v2 - Now with more build fixes!

Attachment 134699 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12262011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591865</commentid>
    <comment_count>13</comment_count>
      <attachid>134699</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2012-03-29 21:35:03 -0700</bug_when>
    <thetext>Comment on attachment 134699
Patch v2 - Now with more build fixes!

Attachment 134699 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12253039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592220</commentid>
    <comment_count>14</comment_count>
      <attachid>134827</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-03-30 09:27:49 -0700</bug_when>
    <thetext>Created attachment 134827
Patch v3 - Now with even more project files!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593525</commentid>
    <comment_count>15</comment_count>
      <attachid>134827</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-04-02 09:27:27 -0700</bug_when>
    <thetext>Comment on attachment 134827
Patch v3 - Now with even more project files!

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

Holding off on reviewing it because Sam Weinig wants to talk further about the design.

&gt; Tools/MiniBrowser/mac/WebBundle/WebBundleMain.m:105
&gt; +        0  // didDestroyDOMWindowExtension

Shouldn&apos;t you be bumping the version of the client here as well?

&gt; Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic.cpp:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

I think you meant 2012 here.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

I think you meant 2012.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:78
&gt; +    ((DOMWindowExtensionBasic*)clientInfo)-&gt;frameLoadFinished(frame);

Can this be a reinterpret cast instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593534</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-04-02 09:35:29 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 134827 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134827&amp;action=review
&gt; 
&gt; Holding off on reviewing it because Sam Weinig wants to talk further about the design.
&gt; 
&gt; &gt; Tools/MiniBrowser/mac/WebBundle/WebBundleMain.m:105
&gt; &gt; +        0  // didDestroyDOMWindowExtension
&gt; 
&gt; Shouldn&apos;t you be bumping the version of the client here as well?

It&apos;s already using kWKBundleClientCurrentVersion.  That&apos;s why it had to be updated to keep its build working.

&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic.cpp:2
&gt; &gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.
&gt; 
&gt; I think you meant 2012 here.
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:2
&gt; &gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.
&gt; 
&gt; I think you meant 2012.

Yuppers.

&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:78
&gt; &gt; +    ((DOMWindowExtensionBasic*)clientInfo)-&gt;frameLoadFinished(frame);
&gt; 
&gt; Can this be a reinterpret cast instead?

There certainly doesn&apos;t seem to be an established style throughout TestWebKitAPI.  It sure can be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593535</commentid>
    <comment_count>17</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-04-02 09:37:43 -0700</bug_when>
    <thetext>cc&apos;ing Adam and Haraken, since they are frolicking in the same meadow (or nearby).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593576</commentid>
    <comment_count>18</comment_count>
      <attachid>134827</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-04-02 10:30:25 -0700</bug_when>
    <thetext>Comment on attachment 134827
Patch v3 - Now with even more project files!

Chatted with Sam and Jessie, going a direction slightly tweaked from this API.  New patch in the works</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598824</commentid>
    <comment_count>19</comment_count>
      <attachid>136358</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-04-09 18:06:47 -0700</bug_when>
    <thetext>Created attachment 136358
Patch v4 - Explicit creation of DOMWindowExtensions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598826</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 18:12:05 -0700</bug_when>
    <thetext>Attachment 136358 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageGroupClient.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:41:  The parameter name &quot;frame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:76:  The parameter name &quot;frame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:146:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 4 in 42 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>598876</commentid>
    <comment_count>21</comment_count>
      <attachid>136358</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-09 19:01:23 -0700</bug_when>
    <thetext>Comment on attachment 136358
Patch v4 - Explicit creation of DOMWindowExtensions

Attachment 136358 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12371552</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598966</commentid>
    <comment_count>22</comment_count>
      <attachid>136358</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-09 20:54:13 -0700</bug_when>
    <thetext>Comment on attachment 136358
Patch v4 - Explicit creation of DOMWindowExtensions

Attachment 136358 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12373508</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599022</commentid>
    <comment_count>23</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-04-09 22:42:35 -0700</bug_when>
    <thetext>Yep definitely need to add one more new file to to the other ports&apos; WK2.

Will do so in the A.M.

Reviewing the rest of the patch in the meantime is *not* wasted effort...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599325</commentid>
    <comment_count>24</comment_count>
      <attachid>136466</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-04-10 09:13:55 -0700</bug_when>
    <thetext>Created attachment 136466
Patch v5 - More project file additions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602807</commentid>
    <comment_count>25</comment_count>
      <attachid>136466</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-04-15 16:16:42 -0700</bug_when>
    <thetext>Comment on attachment 136466
Patch v5 - More project file additions

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

Looking better, still needs some work.

&gt; Source/WebCore/loader/FrameLoaderClient.h:336
&gt; +        virtual void dispatchCanCreateGlobalObject(DOMWrapperWorld*) { }

I don&apos;t really understand the naming here.  The client can&apos;t really create a global object can it?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageGroup.h:50
&gt; +    WKBundlePageGroupDidCreateGlobalObjectForFrameCallback                      didCreateGlobalObjectForFrame;
&gt; +    WKBundlePageGroupWillDisconnectDOMWindowExtensionFromGlobalObjectCallback   willDisconnectDOMWindowExtensionFromGlobalObject;
&gt; +    WKBundlePageGroupDidReconnectDOMWindowExtensionToGlobalObjectCallback       didReconnectDOMWindowExtensionToGlobalObject;
&gt; +    WKBundlePageGroupWillDestroyGlobalObjectForDOMWindowExtensionCallback       willDestroyGlobalObjectForDOMWindowExtension;
&gt; +};

I think these should go on the BundlePageLoadClient as discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602814</commentid>
    <comment_count>26</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-04-15 17:06:12 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 136466 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136466&amp;action=review
&gt; 
&gt; Looking better, still needs some work.
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoaderClient.h:336
&gt; &gt; +        virtual void dispatchCanCreateGlobalObject(DOMWrapperWorld*) { }
&gt; 
&gt; I don&apos;t really understand the naming here.  The client can&apos;t really create a global object can it?

Actually it can.  The global object is created on demand, and the client can create it by demanding it.

In this case the client is WebKit2 which translates it to &quot;didCreateGlobalObject&quot; after having created it.

Perhaps &quot;isReadyToAccessGlobalObject&quot;?  Some other variant?

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageGroup.h:50
&gt; &gt; +    WKBundlePageGroupDidCreateGlobalObjectForFrameCallback                      didCreateGlobalObjectForFrame;
&gt; &gt; +    WKBundlePageGroupWillDisconnectDOMWindowExtensionFromGlobalObjectCallback   willDisconnectDOMWindowExtensionFromGlobalObject;
&gt; &gt; +    WKBundlePageGroupDidReconnectDOMWindowExtensionToGlobalObjectCallback       didReconnectDOMWindowExtensionToGlobalObject;
&gt; &gt; +    WKBundlePageGroupWillDestroyGlobalObjectForDOMWindowExtensionCallback       willDestroyGlobalObjectForDOMWindowExtension;
&gt; &gt; +};
&gt; 
&gt; I think these should go on the BundlePageLoadClient as discussed.

Indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608791</commentid>
    <comment_count>27</comment_count>
      <attachid>138587</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-04-24 10:02:05 -0700</bug_when>
    <thetext>Created attachment 138587
Patch v6 - FrameLoaderClient method name changed, and WK2 client methods moved to BundlePageLoaderClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608865</commentid>
    <comment_count>28</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-04-24 11:14:24 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/115083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608962</commentid>
    <comment_count>29</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-04-24 12:56:54 -0700</bug_when>
    <thetext>Reopen, because it broke the Qt-WK2 build:

cc1plus: warnings being treated as errors
/home/webkitbuildbot/slaves/release32bit-qt5/buildslave/qt-linux-32-release-qt5/build/Source/WebKit2/WebProcess/qt/QtBuiltinBundlePage.cpp: In constructor ‘WebKit::QtBuiltinBundlePage::QtBuiltinBundlePage(WebKit::QtBuiltinBundle*, const OpaqueWKBundlePage*)’:
/home/webkitbuildbot/slaves/release32bit-qt5/buildslave/qt-linux-32-release-qt5/build/Source/WebKit2/WebProcess/qt/QtBuiltinBundlePage.cpp:73: error: missing initializer for member ‘WKBundlePageLoaderClient::didCreateGlobalObjectForFrame’
/home/webkitbuildbot/slaves/release32bit-qt5/buildslave/qt-linux-32-release-qt5/build/Source/WebKit2/WebProcess/qt/QtBuiltinBundlePage.cpp:73: error: missing initializer for member ‘WKBundlePageLoaderClient::willDisconnectDOMWindowExtensionFromGlobalObject’
/home/webkitbuildbot/slaves/release32bit-qt5/buildslave/qt-linux-32-release-qt5/build/Source/WebKit2/WebProcess/qt/QtBuiltinBundlePage.cpp:73: error: missing initializer for member ‘WKBundlePageLoaderClient::didReconnectDOMWindowExtensionToGlobalObject’
/home/webkitbuildbot/slaves/release32bit-qt5/buildslave/qt-linux-32-release-qt5/build/Source/WebKit2/WebProcess/qt/QtBuiltinBundlePage.cpp:73: error: missing initializer for member ‘WKBundlePageLoaderClient::willDestroyGlobalObjectForDOMWindowExtension’</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608966</commentid>
    <comment_count>30</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2012-04-24 12:59:55 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Landed in http://trac.webkit.org/changeset/115083

As warned by qt-wk2 ews, this broke the Qt bot and it was kept like that for a few rounds of patches, not even mentioning the style issues also warned by the style ews... I have landed a fix for the Qt build issue in http://trac.webkit.org/changeset/115095 but it seems there is still some layout failures for us after this. Can you please have a look at it, Brady?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608968</commentid>
    <comment_count>31</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-04-24 13:04:13 -0700</bug_when>
    <thetext>Thanks for the buildfix Jeez.

I think the svg fails are unrelated to this bug, http://trac.webkit.org/changeset/115085 is the culprit. Maybe we only need to update them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608970</commentid>
    <comment_count>32</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-04-24 13:05:44 -0700</bug_when>
    <thetext>Apologies for the breakage.  I - admittedly - didn&apos;t wait for ews to finish as the last version passed ews, yet I didn&apos;t take in to considersation that the one substantive change might break another build.

The style errors are bogus as they don&apos;t account for well established style within TestWebKitAPI.

I&apos;ll see what I can find about the qt layouttest failures...  they&apos;re almost certainly inconsequential based on the change...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608973</commentid>
    <comment_count>33</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-04-24 13:06:54 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Thanks for the buildfix Jeez.
&gt; 
&gt; I think the svg fails are unrelated to this bug, http://trac.webkit.org/changeset/115085 is the culprit. Maybe we only need to update them.

Yup, sure seems like it.

I had a fix ready to check in but Jeez beat me to it.

Sorry for the noise, guys.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608982</commentid>
    <comment_count>34</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-04-24 13:15:18 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; Apologies for the breakage.  I - admittedly - didn&apos;t wait for ews to finish as the last version passed ews, yet I didn&apos;t take in to considersation that the one substantive change might break another build.

Not a big problem, the build was fixed quickly. And it show us that Qt 
EWS bots are too slow in rush hours, so we should setup more bots.
 
&gt; The style errors are bogus as they don&apos;t account for well established style within TestWebKitAPI.
Is there a bug report to fix the style checker?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134689</attachid>
            <date>2012-03-29 16:25:34 -0700</date>
            <delta_ts>2012-03-29 17:15:25 -0700</delta_ts>
            <desc>Patch v1 - Add the API and an API test</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>82514</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMjRjOTVhLi45ZmNkYWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTItMDMtMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xMDEyMDE1NT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MjY2NAorICAgICAgICBOZWVkIERPTVdpbmRvdyBtZWNoYW5pc20g
dG8gc3VwcGxlbWVudCBVc2VyU2NyaXB0cyBmb3IgcGFnZSBjYWNoZSBub3RpZmljYXRpb25zCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBjcmVhdGVzIGEgbmV3IG9iamVjdCB0eXBlICJET01XaW5kb3dFeHRlbnNpb24iIHdoaWNoIGV4
dGVuZHMgRE9NV2luZG93UHJvcGVydHkuCisgICAgICAgIEEgRE9NV2luZG93RXh0ZW5zaW9uIGlz
IHRpZWQgdG8gYSBwYXJ0aWN1bGFyIERPTVdpbmRvdyBhbmQgcmVwcmVzZW50cyBleHRlbnNpYmls
aXR5IGluIHRoYXQKKyAgICAgICAgRE9NV2luZG93IHdpdGhpbiBhIHBhcnRpY3VsYXIgRE9NV3Jh
cHBlcldvcmxkLgorCisgICAgICAgIEl0IGlzIGEgdG9rZW4gb2JqZWN0IG1lYW50IGRlc2lnbmVk
IHRvIG5vdGlmeSBjbGllbnRzIG9mIHRoZSB2YXJpb3VzIGV2ZW50cyBpbiB0aGUgbGlmZXRpbWUK
KyAgICAgICAgb2YgYSBET01XaW5kb3cgcHJvcGVydHkgc3VjaCBhcyBjcmVhdGlvbiwgZGlzY29u
bmVjdGluZyBmb3IgdGhlIHBhZ2UgY2FjaGUsIHJlY29ubmVjdGluZworICAgICAgICB3aGVuIHJl
c3RvcmluZyBmcm9tIHRoZSBwYWdlIGNhY2hlLCBhbmQgRE9NV2luZG93IGRlc3RydWN0aW9uLgor
CisgICAgICAgIFdlYktpdEFQSVRlc3QgIkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljIiBhZGRlZC4K
KworICAgICAgICBBZGQgdGhlIERPTVdpbmRvd0V4dGVuc2lvbiBvYmplY3Qgd2hpY2ggbm90aWZp
ZXMgdGhlIEFQSSBsYXllciB3aGVuIHZhcmlvdXMgbGlmZXRpbWUgZXZlbnRzIG9jY3VyOgorICAg
ICAgICAqIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3dFeHRlbnNpb246OkRPTVdpbmRvd0V4dGVuc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246On5ET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjpkaXNjb25uZWN0RnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjpyZWNvbm5lY3RGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246OndpbGxEZXRhY2hQYWdlKToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdpbmRvd0V4dGVuc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0V4
dGVuc2lvbjo6d29ybGQpOgorCisgICAgICAgIFRoZSBET01XaW5kb3cgaXRzZWxmIG1hbmFnZXMg
dGhlIHdvcmxkLXRvLURPTVdpbmRvd0V4dGVuc2lvbiBtYXBwaW5nOgorICAgICAgICAqIHBhZ2Uv
RE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6d2lsbERldGFjaFBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpleHRlbnNpb25Gb3JXb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNldEV4dGVuc2lvbkZvcldvcmxkKToKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorCisgICAgICAgIEZvciBub3csIG9ubHkgaW5zdGFsbCBE
T01XaW5kb3dFeHRlbnNpb25zIGluIGEgd29ybGQgYmVmb3JlIHdlJ3JlIGFib3V0IHRvIGluamVj
dAorICAgICAgICB1c2VyIHNjcmlwdHMgaW4gdGhhdCB3b3JsZC4KKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbmplY3RVc2VyU2NyaXB0c0Zvcldv
cmxkKToKKworICAgICAgICBBZGQgYSBjbGllbnQgbGF5ZXIgdG8gbm90aWZ5IEFQSXMgYWJvdXQg
dGhlIGxpZmV0aW1lcyBvZiBhIERPTVdpbmRvd0V4dGVuc2lvbjoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
OjpleHRlbnNpb25JbnN0YWxsZWRPbkdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudDo6ZXh0ZW5zaW9uRGlzY29ubmVjdGVkRnJvbUdsb2JhbE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6ZXh0ZW5zaW9uUmVjb25uZWN0
ZWRUb0dsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6
ZGlkRGVzdHJveUdsb2JhbE9iamVjdEZvckV4dGVuc2lvbik6CisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTItMDMtMjkgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBJbWFnZXMgdGhhdCByZWxvYWQgdmlh
IG1lZGlhIHF1ZXJpZXMgZG9uJ3QgcGFpbnQgd2hlbiBkZXZpY2Ugc2NhbGUgZmFjdG9yIGNoYW5n
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBmMjAwOGMzLi4xZWY1NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTIwLDYgKzE1MjAsNyBAQAogCQk1MTc0
MUQxMTBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzQxRDBEMEIwNzI1OUEwMEVENDQyQyAvKiBI
aXN0b3J5SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxNzQxRDEyMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc0MUQwRTBCMDcyNTlB
MDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uY3BwICovOyB9OwogCQk1MTc0RTIwQTEwQTFGNDRGMDBG
OTVFNkYgLyogUG9wU3RhdGVFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3NEUyMDgxMEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQu
aCAqLzsgfTsKKwkJNTE3RkJBMUUxNTFBQjE3QzAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdG
QkExNzE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLzsgfTsKIAkJ
NTE4OUYwMUQxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg5RjAxQjEwQjM3QkQ5MDBG
M0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmNwcCAqLzsgfTsKIAkJNTE4OUYwMUUxMEIzN0JEOTAw
RjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE4OUYwMUMxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVF
dmVudC5oICovOyB9OwogCQk1MTg5RjBERTEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg5
RjBERDEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAgKi87IH07CkBAIC0xNTU4
LDYgKzE1NTksNyBAQAogCQk1MUUzRjlDNzBEQTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzRjlDNTBE
QTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAgKi87IH07CiAJCTUxRTNGOUQ2MERBMDVFMUQw
MDI1MDkxMSAvKiBKU1N0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFFM0Y5RDQwREEwNUUxRDAwMjUwOTExIC8qIEpTU3RvcmFnZS5jcHAg
Ki87IH07CiAJCTUxRUM5MjY1MENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNRTFN0YXRlbWVu
dEVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFFQzkyNUQwQ0U5MERENDAwRjkwMzA4IC8qIEpTQ3VzdG9tU1FMU3RhdGVtZW50
RXJyb3JDYWxsYmFjay5jcHAgKi87IH07CisJCTUxRkEyRDc4MTUyMTMyQjMwMEMxQkEwQiAvKiBE
T01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUZC
NTUwNDExM0UzRTkxMDA4MjExNzYgLyogSlNDbG9zZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZCNTUwMjExM0UzRTkxMDA4MjExNzYgLyog
SlNDbG9zZUV2ZW50LmggKi87IH07CiAJCTUxRkI1NTA1MTEzRTNFOTEwMDgyMTE3NiAvKiBKU0Ns
b3NlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFGQjU1MDMxMTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5jcHAgKi87IH07CiAJ
CTUyMUQ0NkY2MTFBRUM5ODEwMDUxNDYxMyAvKiBLaWxsUmluZ01hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyMUQ0NkY1MTFBRUM5ODEwMDUxNDYx
MyAvKiBLaWxsUmluZ01hYy5tbSAqLzsgfTsKQEAgLTg0NjgsNiArODQ3MCw4IEBACiAJCTUxNzQx
RDBFMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSGlzdG9yeUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTc0RTIwODEwQTFGNDRGMDBGOTVFNkYgLyogUG9wU3RhdGVFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3BTdGF0ZUV2ZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzRFMjBCMTBBMUY0OUEwMEY5NUU2RiAvKiBQb3BTdGF0
ZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQb3BTdGF0ZUV2ZW50LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RkJBMTcxNTFBQTcxQjAwQjU3OTU5IC8qIERP
TVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBET01XaW5kb3dFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MTdGQkExODE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTg5RjAxQjEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0
ZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9wU3Rh
dGVFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODlGMDFDMTBCMzdC
RDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNQb3BTdGF0ZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxODlGMEREMTBCNDZCMEUwMEYzQzczOSAvKiBQb3BTdGF0ZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvcFN0YXRlRXZlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTUyNTgsNiArMTUyNjIsOCBAQAogCQkJCTE0MDNCOTk2MDlF
QjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuY3BwICovLAogCQkJCTE0MDNCOTk1MDlFQjEzQUYw
MDc5N0M3RiAvKiBET01XaW5kb3cuaCAqLywKIAkJCQkxNDAzQjkwQzA5RUIxMjQ1MDA3OTdDN0Yg
LyogRE9NV2luZG93LmlkbCAqLywKKwkJCQk1MTdGQkExNzE1MUFBNzFCMDBCNTc5NTkgLyogRE9N
V2luZG93RXh0ZW5zaW9uLmNwcCAqLywKKwkJCQk1MTdGQkExODE1MUFBNzFCMDBCNTc5NTkgLyog
RE9NV2luZG93RXh0ZW5zaW9uLmggKi8sCiAJCQkJOTdEMkFEMDExNEI4MjNBNjAwOTNERjMyIC8q
IERPTVdpbmRvd1Byb3BlcnR5LmNwcCAqLywKIAkJCQk5N0QyQUQwMjE0QjgyM0E2MDA5M0RGMzIg
LyogRE9NV2luZG93UHJvcGVydHkuaCAqLywKIAkJCQlBNzE4NzYwRDBCMkExMjAxMDBBMTZFQ0Ug
LyogRHJhZ0FjdGlvbnMuaCAqLywKQEAgLTI0NjUyLDYgKzI0NjU4LDcgQEAKIAkJCQkxQUY4OUE0
MjE1MThGREVBMDBFNTQ3QjUgLyogVGlsZWRCYWNraW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
Qjc4QUQyRTE1MUJGNUU2MDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzFFNjIzRDExNTFGNzJBNjAwMzZFMkY0IC8qIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlv
bmFsSW50ZWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFGQTJENzgxNTIxMzJCMzAwQzFCQTBC
IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzY0MSw2ICsyNzY0
OCw3IEBACiAJCQkJQkNFOTNGNTMxNTE3RTBCMDAwOENDRjc0IC8qIFJlbmRlck11bHRpQ29sdW1u
Rmxvd1RocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzg1RjIzRjE1MTkxODczMDBCQzE3
QkUgLyogUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcxRTYy
M0QwMTUxRjcyQTYwMDM2RTJGNCAvKiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE3RkJBMUUxNTFBQjE3QzAwQjU3OTU5IC8qIERPTVdp
bmRvd0V4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZTliYjAyNy4uZjZiNDVlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTYzLDYgKzYzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogICAgIGNsYXNz
IENhY2hlZEZyYW1lOwogICAgIGNsYXNzIENvbG9yOworICAgIGNsYXNzIERPTVdpbmRvd0V4dGVu
c2lvbjsKICAgICBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiAgICAgY2xhc3MgRG9jdW1lbnRMb2Fk
ZXI7CiAgICAgY2xhc3MgRWxlbWVudDsKQEAgLTMzMSw2ICszMzIsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbE9wZW5T
b2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKikgeyB9CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIGV4dGVuc2lvbkluc3RhbGxlZE9uR2xvYmFsT2JqZWN0KERPTVdpbmRvd0V4dGVuc2lvbiop
IHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXh0ZW5zaW9uRGlzY29ubmVjdGVkRnJvbUdsb2Jh
bE9iamVjdChET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGV4
dGVuc2lvblJlY29ubmVjdGVkVG9HbG9iYWxPYmplY3QoRE9NV2luZG93RXh0ZW5zaW9uKikgeyB9
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95R2xvYmFsT2JqZWN0Rm9yRXh0ZW5zaW9u
KERPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA5ZDRjM2I0Li43NjRlYTRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRE9N
VGltZXIuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJET01VUkwuaCIK
KyNpbmNsdWRlICJET01XaW5kb3dFeHRlbnNpb24uaCIKICNpbmNsdWRlICJET01XaW5kb3dOb3Rp
ZmljYXRpb25zLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNh
bGxiYWNrLmgiCkBAIC00NzcsNiArNDc4LDggQEAgdm9pZCBET01XaW5kb3c6OndpbGxEZXRhY2hQ
YWdlKCkKICAgICBIYXNoU2V0PERPTVdpbmRvd1Byb3BlcnR5Kj46Oml0ZXJhdG9yIHN0b3AgPSBt
X3Byb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PERPTVdpbmRvd1Byb3BlcnR5Kj46
Oml0ZXJhdG9yIGl0ID0gbV9wcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ICE9IHN0b3A7ICsraXQpCiAg
ICAgICAgICgqaXQpLT53aWxsRGV0YWNoUGFnZSgpOworICAgIAorICAgIG1fd2luZG93RXh0ZW5z
aW9ucy5jbGVhcigpOwogfQogCiB2b2lkIERPTVdpbmRvdzo6cmVnaXN0ZXJQcm9wZXJ0eShET01X
aW5kb3dQcm9wZXJ0eSogcHJvcGVydHkpCkBAIC00ODksNiArNDkyLDIxIEBAIHZvaWQgRE9NV2lu
ZG93Ojp1bnJlZ2lzdGVyUHJvcGVydHkoRE9NV2luZG93UHJvcGVydHkqIHByb3BlcnR5KQogICAg
IG1fcHJvcGVydGllcy5yZW1vdmUocHJvcGVydHkpOwogfQogCitET01XaW5kb3dFeHRlbnNpb24q
IERPTVdpbmRvdzo6ZXh0ZW5zaW9uRm9yV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKK3sK
KyAgICByZXR1cm4gbV93aW5kb3dFeHRlbnNpb25zLmdldCh3b3JsZCkuZ2V0KCk7Cit9CisKK3Zv
aWQgRE9NV2luZG93OjpzZXRFeHRlbnNpb25Gb3JXb3JsZChET01XaW5kb3dFeHRlbnNpb24qIGV4
dGVuc2lvbiwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKK3sKKyAgICBBU1NFUlQod29ybGQpOwor
ICAgIAorICAgIGlmIChleHRlbnNpb24pCisgICAgICAgIG1fd2luZG93RXh0ZW5zaW9ucy5zZXQo
d29ybGQsIGV4dGVuc2lvbik7CisgICAgZWxzZQorICAgICAgICBtX3dpbmRvd0V4dGVuc2lvbnMu
cmVtb3ZlKHdvcmxkKTsKK30KKwogdm9pZCBET01XaW5kb3c6OmNsZWFyKCkKIHsKICAgICAvLyBU
aGUgbWFpbiBmcmFtZSB3aWxsIGFsd2F5cyB0cnkgdG8gY2xlYXIgaXRzIERPTVdpbmRvdyB3aGVu
IGEgbmV3IGxvYWQgaXMgY29tbWl0dGVkLCBldmVuIGlmIHRoYXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCmluZGV4IDcwMTRkOTYuLjNiYzQ1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAt
NDIsNyArNDIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRE9NQXBwbGljYXRp
b25DYWNoZTsKICAgICBjbGFzcyBET01TZWxlY3Rpb247CiAgICAgY2xhc3MgRE9NVVJMOworICAg
IGNsYXNzIERPTVdpbmRvd0V4dGVuc2lvbjsKICAgICBjbGFzcyBET01XaW5kb3dQcm9wZXJ0eTsK
KyAgICBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiAgICAgY2xhc3MgRGF0YWJhc2U7CiAgICAgY2xh
c3MgRGF0YWJhc2VDYWxsYmFjazsKICAgICBjbGFzcyBEb2N1bWVudDsKQEAgLTkzLDYgKzk1LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoRE9N
V2luZG93UHJvcGVydHkqKTsKICAgICAgICAgdm9pZCB1bnJlZ2lzdGVyUHJvcGVydHkoRE9NV2lu
ZG93UHJvcGVydHkqKTsKIAorICAgICAgICBET01XaW5kb3dFeHRlbnNpb24qIGV4dGVuc2lvbkZv
cldvcmxkKERPTVdyYXBwZXJXb3JsZCopOworICAgICAgICB2b2lkIHNldEV4dGVuc2lvbkZvcldv
cmxkKERPTVdpbmRvd0V4dGVuc2lvbiosIERPTVdyYXBwZXJXb3JsZCopOworCiAgICAgICAgIHZv
aWQgY2xlYXIoKTsKICAgICAgICAgdm9pZCBzdXNwZW5kRm9yUGFnZUNhY2hlKCk7CiAgICAgICAg
IHZvaWQgcmVzdW1lRnJvbVBhZ2VDYWNoZSgpOwpAQCAtNDE4LDYgKzQyMyw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICBIYXNoU2V0PERPTVdpbmRvd1Byb3BlcnR5Kj4gbV9wcm9w
ZXJ0aWVzOwogCisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxET01XcmFwcGVyV29ybGQqLCBSZWZQ
dHI8RE9NV2luZG93RXh0ZW5zaW9uPiA+IFdpbmRvd0V4dGVuc2lvbk1hcDsKKyAgICAgICAgV2lu
ZG93RXh0ZW5zaW9uTWFwIG1fd2luZG93RXh0ZW5zaW9uczsKKwogICAgICAgICBtdXRhYmxlIFJl
ZlB0cjxTY3JlZW4+IG1fc2NyZWVuOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxET01TZWxlY3Rp
b24+IG1fc2VsZWN0aW9uOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxIaXN0b3J5PiBtX2hpc3Rv
cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzkzYWZlNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcApAQCAtMCwwICsxLDk4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTVdpbmRvd0V4dGVuc2lvbi5oIgorCisjaW5jbHVkZSAi
RE9NV2luZG93LmgiCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0RPTVdpbmRvd0V4dGVuc2lvbjo6RE9NV2luZG93RXh0ZW5zaW9uKEZyYW1lKiBmcmFt
ZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1l
KQorICAgICwgbV93b3JsZCh3b3JsZCkKKyAgICAsIG1fd2FzRGV0YWNoZWQoZmFsc2UpCit7Cisg
ICAgQVNTRVJUKHRoaXMtPmZyYW1lKCkpOworICAgIEFTU0VSVChtX3dvcmxkKTsKKyAgICAKKyAg
ICBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRFeHRl
bnNpb25Gb3JXb3JsZCh0aGlzLCBtX3dvcmxkLmdldCgpKTsKK30KKworRE9NV2luZG93RXh0ZW5z
aW9uOjp+RE9NV2luZG93RXh0ZW5zaW9uKCkKK3sKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNp
b246OmRpc2Nvbm5lY3RGcmFtZSgpCit7CisgICAgLy8gRE9NV2luZG93UHJvcGVydGllcyBhcmUg
ZGlzY29ubmVjdGVkIGZyb20gZnJhbWVzIGFmdGVyIHRoZXkgd2VyZSB0b2xkIHRoZXknbGwKKyAg
ICAvLyBiZSBkZXRhY2hpbmcgZnJvbSB0aGUgcGFnZS4KKyAgICAvLyBXZSBvbmx5IHdhbnQgdG8g
c3RheSBwcmVwYXJlZCBmb3IgY2xpZW50IGNhbGxiYWNrcyBpZiB3ZSd2ZSBuZXZlciBiZWVuIGRl
dGFjaGVkLgorICAgIGlmICghbV93YXNEZXRhY2hlZCkgeworICAgICAgICBGcmFtZSogZnJhbWUg
PSB0aGlzLT5mcmFtZSgpOworICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5leHRl
bnNpb25EaXNjb25uZWN0ZWRGcm9tR2xvYmFsT2JqZWN0KHRoaXMpOworCisgICAgICAgIG1fZGlz
Y29ubmVjdGVkRnJhbWUgPSBmcmFtZTsKKyAgICB9CisKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6
ZGlzY29ubmVjdEZyYW1lKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uOjpyZWNvbm5l
Y3RGcmFtZShGcmFtZSogZnJhbWUpCit7CisgICAgLy8gRE9NV2luZG93UHJvcGVydGllcyBzaG91
bGQgbmV2ZXIgcmVjb25uZWN0IHRvIGEgZnJhbWUgYWZ0ZXIgdGhleSd2ZSBiZWVuIGRldGFjaGVk
IGZyb20gdGhlIHBhZ2UuCisgICAgQVNTRVJUKCFtX3dhc0RldGFjaGVkKTsKKyAgICBBU1NFUlQo
bV9kaXNjb25uZWN0ZWRGcmFtZSA9PSBmcmFtZSk7CisgICAgCisgICAgRE9NV2luZG93UHJvcGVy
dHk6OnJlY29ubmVjdEZyYW1lKGZyYW1lKTsKKyAgICBtX2Rpc2Nvbm5lY3RlZEZyYW1lID0gMDsK
KworICAgIHRoaXMtPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+ZXh0ZW5zaW9uUmVjb25u
ZWN0ZWRUb0dsb2JhbE9iamVjdCh0aGlzKTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb246
OndpbGxEZXRhY2hQYWdlKCkKK3sKKyAgICAvLyB3aWxsRGV0YWNoUGFnZSBtaWdodCBiZSBjYWxs
ZWQgbXVsdGlwbGUgdGltZXMgYnV0IHdlIG9ubHkgd2FudCB0byByZWFjdCBvbmNlLgorICAgIGlm
IChtX3dhc0RldGFjaGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBGcmFtZSogZnJhbWUgPSBt
X2Rpc2Nvbm5lY3RlZEZyYW1lLmdldCgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIGZyYW1l
ID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBBU1NFUlQoZnJhbWUpOworCisgICAgZnJhbWUtPmxvYWRl
cigpLT5jbGllbnQoKS0+ZGlkRGVzdHJveUdsb2JhbE9iamVjdEZvckV4dGVuc2lvbih0aGlzKTsK
KyAgICAKKyAgICBtX2Rpc2Nvbm5lY3RlZEZyYW1lID0gMDsKKyAgICBET01XaW5kb3dQcm9wZXJ0
eTo6d2lsbERldGFjaFBhZ2UoKTsKKyAgICAKKyAgICBtX3dhc0RldGFjaGVkID0gdHJ1ZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3dFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0
ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY2Y2YzZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmgK
QEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgRE9NV2luZG93RXh0ZW5zaW9uX2gKKyNkZWZpbmUgRE9NV2luZG93RXh0
ZW5zaW9uX2gKKworI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3BlcnR5LmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01FeHRlbnNpb247
CitjbGFzcyBET01XaW5kb3c7CitjbGFzcyBET01XcmFwcGVyV29ybGQ7CitjbGFzcyBGcmFtZTsK
KworY2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NV2luZG93
RXh0ZW5zaW9uPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxET01XaW5kb3dFeHRlbnNpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUsIERP
TVdyYXBwZXJXb3JsZCogd29ybGQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IERPTVdpbmRvd0V4dGVuc2lvbihmcmFtZSwgd29ybGQpKTsKKyAgICB9CisKKyAgICB+RE9NV2lu
ZG93RXh0ZW5zaW9uKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyYW1lKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlY29ubmVjdEZyYW1lKEZyYW1lKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hQYWdlKCkgT1ZFUlJJREU7CisKKyAgICBET01X
cmFwcGVyV29ybGQqIHdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQorCitw
cml2YXRlOgorICAgIERPTVdpbmRvd0V4dGVuc2lvbihGcmFtZSosIERPTVdyYXBwZXJXb3JsZCop
OworCisgICAgRE9NV2luZG93KiBtX2RvbVdpbmRvdzsKKyAgICBSZWZQdHI8RE9NV3JhcHBlcldv
cmxkPiBtX3dvcmxkOworICAgIFJlZlB0cjxGcmFtZT4gbV9kaXNjb25uZWN0ZWRGcmFtZTsKKyAg
ICBib29sIG1fd2FzRGV0YWNoZWQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBET01XaW5kb3dFeHRl
bnNpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBkNWMxNzZkLi5lM2E0MzQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcApAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgMjAw
MCBTaW1vbiBIYXVzbWFubiA8aGF1c21hbm5Aa2RlLm9yZz4KICAqICAgICAgICAgICAgICAgICAg
ICAgMjAwMCBTdGVmYW4gU2NoaW1hbnNraSA8MVN0ZWluQGdteC5kZT4KICAqICAgICAgICAgICAg
ICAgICAgICAgMjAwMSBHZW9yZ2UgU3RhaWtvcyA8c3RhaWtvc0BrZGUub3JnPgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQWxleGV5IFByb3NrdXJ5
YWtvdiA8YXBAbnlwb3AuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDA4IEVy
aWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAi
Q2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93
LmgiCisjaW5jbHVkZSAiRE9NV2luZG93RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKICNpbmNsdWRlICJFZGl0
aW5nVGV4dC5oIgpAQCAtNTg2LDggKzU4NywxNCBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2Ny
aXB0c0ZvcldvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFVzZXJTY3JpcHRWZQog
ICAgICAgICBpZiAoc2NyaXB0LT5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVP
bmx5ICYmIG93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
aWYgKHNjcmlwdC0+aW5qZWN0aW9uVGltZSgpID09IGluamVjdGlvblRpbWUgJiYgVXNlckNvbnRl
bnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoZG9jLT51cmwoKSwgc2NyaXB0LT53aGl0ZWxp
c3QoKSwgc2NyaXB0LT5ibGFja2xpc3QoKSkpCisgICAgICAgIGlmIChzY3JpcHQtPmluamVjdGlv
blRpbWUoKSA9PSBpbmplY3Rpb25UaW1lICYmIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hl
c1BhdHRlcm5zKGRvYy0+dXJsKCksIHNjcmlwdC0+d2hpdGVsaXN0KCksIHNjcmlwdC0+YmxhY2ts
aXN0KCkpKSB7CisgICAgICAgICAgICBpZiAoIWRvbVdpbmRvdygpLT5leHRlbnNpb25Gb3JXb3Js
ZCh3b3JsZCkpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8RE9NV2luZG93RXh0ZW5zaW9uPiBl
eHRlbnNpb24gPSBET01XaW5kb3dFeHRlbnNpb246OmNyZWF0ZSh0aGlzLCB3b3JsZCk7CisgICAg
ICAgICAgICAgICAgbG9hZGVyKCktPmNsaWVudCgpLT5leHRlbnNpb25JbnN0YWxsZWRPbkdsb2Jh
bE9iamVjdChleHRlbnNpb24uZ2V0KCkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBt
X3NjcmlwdC5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQtPnNvdXJjZSgp
LCBzY3JpcHQtPnVybCgpKSwgd29ybGQpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggZTVkNzg5YS4uYTJlY2IxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEy
LTAzLTI5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTAxMjAxNTU+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODI2NjQKKyAgICAgICAgTmVlZCBET01XaW5kb3cgbWVjaGFuaXNtIHRvIHN1cHBs
ZW1lbnQgVXNlclNjcmlwdHMgZm9yIHBhZ2UgY2FjaGUgbm90aWZpY2F0aW9ucworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJLaXQyIG9iamVj
dCB0eXBlICJXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiI6CisgICAgICAgICogU2hhcmVkL0FQ
SS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwOgorICAg
ICAgICAqIFNoYXJlZC9BUElDbGllbnRUcmFpdHMuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2Jq
ZWN0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVB
UElDYXN0Lmg6CisKKyAgICAgICAgSW1wbGVtZW50IGEgbWluaW1hbCBBUEkgZm9yIHRoYXQgdHlw
ZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbkdldFR5cGVJRCk6CisgICAgICAgIChXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdl
dEZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBXcmFwcGVyIGxheWVyIGJldHdlZW4gdGhl
IFdlYkNvcmUgb2JqZWN0IGFuZCB0aGUgV0sgQVBJIG9iamVjdDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmV4dGVuc2lvbldyYXBwZXJNYXApOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6Z2V0T3JDcmVhdGVXcmFw
cGVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246
OkluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246On5JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uOjpmcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OnR5cGUpOgorCisgICAgICAgIExpc3RlbiBm
b3IgY2FsbGJhY2tzIGZyb20gdGhlIFdlYkNvcmUgbGF5ZXIgdG8gcGlwZSB0aGVtIHRvIHRoZSBJ
bmplY3RlZEJ1bmRsZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmV4dGVuc2lvbkluc3RhbGxlZE9uR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmV4dGVuc2lvbkRpc2Nvbm5lY3RlZEZyb21HbG9iYWxPYmpl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZXh0ZW5zaW9uUmVj
b25uZWN0ZWRUb0dsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaWREZXN0cm95R2xvYmFsT2JqZWN0Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKKyAgICAg
ICAgVGFrZSB0aG9zZSBjYWxsYmFja3MgZnJvbSB0aGUgV2ViQ29yZSBsYXllciBhbmQgcGlwZSB0
aGVtIHRvIHRoZSBidW5kbGUgY2xpZW50IEFQSToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGU6OmRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZTo6ZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNvbm5lY3RET01XaW5kb3dF
eHRlbnNpb25Ub0ZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmRpZERl
c3Ryb3lET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVDbGllbnQ6OmRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lv
bkZyb21GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRS
ZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKwog
MjAxMi0wMy0yOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExMjU1My4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS0Jhc2UuaAppbmRleCBjODY1NmU0Li41NTcyM2IwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLQmFzZS5oCkBAIC0xMTYsNiArMTE2LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tCdW5kbGUqIFdLQnVuZGxlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QqIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0UmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKiBX
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS0J1bmRsZURPTUNTU1N0eWxlRGVjbGFyYXRpb24qIFdLQnVuZGxlQ1NTU3R5bGVEZWNsYXJh
dGlvblJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLQnVuZGxlRnJhbWUqIFdLQnVuZGxlRnJhbWVSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUhpdFRlc3RSZXN1bHQqIFdLQnVuZGxlSGl0VGVzdFJlc3Vs
dFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlSW5zcGVjdG9yKiBXS0J1
bmRsZUluc3BlY3RvclJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElD
bGllbnRUcmFpdHMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5j
cHAKaW5kZXggNGY1ZDhmYS4uMWEwZTVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNs
aWVudFRyYWl0cy5jcHAKQEAgLTI2LDEwICsyNiwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkFQSUNsaWVudFRyYWl0cy5oIgogCisjaW5jbHVkZSAiV0tCdW5kbGUuaCIKICNp
bmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NvbnN0IHNp
emVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVDbGllbnQ+OjppbnRlcmZhY2VTaXplc0J5VmVy
c2lvbltdID0geworICAgIG9mZnNldG9mKFdLQnVuZGxlQ2xpZW50LCBkaWRJbnN0YWxsRE9NV2lu
ZG93RXh0ZW5zaW9uKSwKKyAgICBzaXplb2YoV0tCdW5kbGVDbGllbnQpCit9OworCiBjb25zdCBz
aXplX3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudD46OmludGVyZmFj
ZVNpemVzQnlWZXJzaW9uW10gPSB7CiAgICAgb2Zmc2V0b2YoV0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LCBkaWRMYXlvdXRGb3JGcmFtZSksCiAgICAgc2l6ZW9mKFdLQnVuZGxlUGFnZUxvYWRlckNs
aWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaAppbmRleCAxNmY4NmEw
Li4wNDhkNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJh
aXRzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjaWZuZGVmIEFQSUNsaWVudFRyYWl0c19oCiAjZGVmaW5lIEFQSUNsaWVu
dFRyYWl0c19oCiAKKyNpbmNsdWRlICJXS0J1bmRsZS5oIgogI2luY2x1ZGUgIldLQnVuZGxlUGFn
ZS5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgogCkBAIC0zNiw2ICszNywxMCBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2xpZW50SW50ZXJmYWNlPiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzIHsKIH07CiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xpZW50SW50ZXJmYWNlPiBjb25zdCBzaXplX3QgQVBJQ2xpZW50
VHJhaXRzPENsaWVudEludGVyZmFjZT46OmludGVyZmFjZVNpemVzQnlWZXJzaW9uW10gPSB7IHNp
emVvZihDbGllbnRJbnRlcmZhY2UpIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRy
YWl0czxXS0J1bmRsZUNsaWVudD4geworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNl
U2l6ZXNCeVZlcnNpb25bMl07Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBUElDbGllbnRUcmFp
dHM8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50PiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBp
bnRlcmZhY2VTaXplc0J5VmVyc2lvblsyXTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgK
aW5kZXggZDZjYzAzMC4uNmVmMTAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAt
MTA2LDYgKzEwNiw3IEBAIHB1YmxpYzoKICAgICAgICAgVHlwZUJ1bmRsZSwKICAgICAgICAgVHlw
ZUJ1bmRsZUJhY2tGb3J3YXJkTGlzdCwKICAgICAgICAgVHlwZUJ1bmRsZUJhY2tGb3J3YXJkTGlz
dEl0ZW0sCisgICAgICAgIFR5cGVCdW5kbGVET01XaW5kb3dFeHRlbnNpb24sCiAgICAgICAgIFR5
cGVCdW5kbGVGcmFtZSwKICAgICAgICAgVHlwZUJ1bmRsZUhpdFRlc3RSZXN1bHQsCiAgICAgICAg
IFR5cGVCdW5kbGVJbnNwZWN0b3IsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTc5Yzk2MS4uNWYzM2JiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDM0LDYg
KzQzNCw5IEBACiAJCTUxRDEzMDU1MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VE
YXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RDEzMDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLzsgfTsK
IAkJNTFEMTMwNTYxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDUyMTM4MkVB
QzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmggKi87IH07CiAJCTUxRDEzMDU4MTM4
MkYxMDUwMDM1MUVERCAvKiBXZWJQcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1NzEzODJGMTA1MDAzNTFFREQgLyog
V2ViUHJvY2Vzc1Byb3h5TWFjLm1tICovOyB9OworCQk1MUVGQzFDRjE1MjRFNjI1MDBDOUE5Mzgg
LyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkEyRDU0MTUyMTExODYwMEMxQkEwQiAvKiBXS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTUxRkEyRDc0MTUyMTJERjEwMEMxQkEwQiAvKiBJbmplY3RlZEJ1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUZBMkQ1QzE1MjExQTUwMDBDMUJBMEIgLyogSW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb24uY3BwICovOyB9OworCQk1MUZBMkQ3NzE1MjEyRTI2MDBDMUJBMEIg
LyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQTJENzUxNTIxMkUxRTAwQzFCQTBCIC8qIFdLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLzsgfTsKIAkJNTI3MkIyOEExNDA2OTg1RDAwOTZB
NUQwIC8qIFN0YXRpc3RpY3NEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyNzJCMjg4MTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0
YS5jcHAgKi87IH07CiAJCTUyNzJCMjhCMTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3MkIy
ODkxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggKi87IH07CiAJCTVENTE4NDU1
MTNCQ0Y5Q0MwMEM3RkY0QSAvKiBBUElDbGllbnRUcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1MTg0NTMxM0JDRjlDQzAwQzdGRjRBIC8q
IEFQSUNsaWVudFRyYWl0cy5jcHAgKi87IH07CkBAIC0xNDU2LDYgKzE0NTksMTAgQEAKIAkJNTFE
MTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDUyMTM4MkVBQzAwMDM1MUVERCAvKiBT
ZWNJdGVtUmVzcG9uc2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNl
Y0l0ZW1SZXNwb25zZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMw
NTcxMzgyRjEwNTAwMzUxRUREIC8qIFdlYlByb2Nlc3NQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NQcm94eU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGQTJENTQxNTIxMTE4NjAwQzFCQTBCIC8qIFdLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxRkEyRDVBMTUyMTFBMUUwMEMxQkEwQiAvKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUZB
MkQ1QzE1MjExQTUwMDBDMUJBMEIgLyogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUZB
MkQ3NTE1MjEyRTFFMDBDMUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVET01XaW5kb3dFeHRl
bnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjcyQjI4ODE0MDY5ODVE
MDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RhdGlzdGljc0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MjcyQjI4OTE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlzdGljc0RhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUQ1MTg0NTMxM0JDRjlDQzAwQzdGRjRBIC8qIEFQSUNsaWVudFRy
YWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElDbGllbnRU
cmFpdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzIyMiw2ICszMjI5LDgg
QEAKIAkJCQk5MzVFRUI5MjEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtLmggKi8sCiAJCQkJQkNFRTdEQzQxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVj
dGVkQnVuZGxlQ2xpZW50LmNwcCAqLywKIAkJCQlCQ0VFN0RDMzEyOEI2NDVEMDA5ODI3REEgLyog
SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLywKKwkJCQk1MUZBMkQ1QzE1MjExQTUwMDBDMUJBMEIg
LyogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwICovLAorCQkJCTUxRkEyRDVB
MTUyMTFBMUUwMEMxQkEwQiAvKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oICov
LAogCQkJCUJDNDk4NjE3MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuY3BwICovLAogCQkJCUJDNDk4NjE2MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQuaCAqLywKIAkJCQlCQzgxNDdENDEyRjY2RDMxMDA3QjJDMzIgLyog
SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCAqLywKQEAgLTMyNzUsNiArMzI4NCw4
IEBACiAJCQkJOTM1RUVCOTYxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRM
aXN0LmggKi8sCiAJCQkJOTM1RUVCOTcxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAgKi8sCiAJCQkJOTM1RUVCOTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdL
QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oICovLAorCQkJCTUxRkEyRDc1MTUyMTJFMUUwMEMx
QkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8sCisJCQkJNTFGQTJENTQx
NTIxMTE4NjAwQzFCQTBCIC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggKi8sCiAJCQkJ
QkNEMjVGMTYxMUQ2QkRFMTAwMTY5QjBFIC8qIFdLQnVuZGxlRnJhbWUuY3BwICovLAogCQkJCUJD
RDI1RjE1MTFENkJERTEwMDE2OUIwRSAvKiBXS0J1bmRsZUZyYW1lLmggKi8sCiAJCQkJQkNGMDQ5
RTQxMUZFMjBGNjAwRjg2QTU4IC8qIFdLQnVuZGxlRnJhbWVQcml2YXRlLmggKi8sCkBAIC00MTc4
LDYgKzQxODksNyBAQAogCQkJCTM3NjA4ODIzMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0MDQxNTBDMzUwNjAwRTUyQ0U5IC8qIFdl
YlJlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzk0ODQwOTE1MEM0Qjk3MDBFNTJD
RTkgLyogV0tSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFFRkMxQ0YxNTI0RTYy
NTAwQzlBOTM4IC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTQ5MjEsNiArNDkzMyw4IEBACiAJCQkJMzc2MDg4MjIxNTA0MTRGNzAwRkM4MkM3IC8qIFdL
UmVuZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3OTQ4NDAzMTUwQzM1MDYwMEU1
MkNFOSAvKiBXZWJSZW5kZXJMYXllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzk0ODQwODE1
MEM0Qjk3MDBFNTJDRTkgLyogV0tSZW5kZXJMYXllci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MUZBMkQ3NDE1MjEyREYxMDBDMUJBMEIgLyogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFGQTJENzcxNTIxMkUyNjAwQzFCQTBCIC8qIFdL
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZS5oCmluZGV4IDllMjczYmEuLjhkMjliMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5
LDE3ICszOSwzMCBAQCB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVdpbGxEZXN0cm95UGFnZUNhbGxi
YWNrKShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZQogdHlwZWRlZiB2b2lkICgqV0tC
dW5kbGVEaWRJbml0aWFsaXplUGFnZUdyb3VwQ2FsbGJhY2spKFdLQnVuZGxlUmVmIGJ1bmRsZSwg
V0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
IHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlRGlkUmVjZWl2ZU1lc3NhZ2VDYWxsYmFjaykoV0tCdW5k
bGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBuYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwogCit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZURpZEluc3Rh
bGxET01XaW5kb3dFeHRlbnNpb25DYWxsYmFjaykoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVEaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
RnJvbUZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVET01XaW5kb3dF
eHRlbnNpb25SZWYgZXh0ZW5zaW9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLQnVuZGxlRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9GcmFtZUNhbGxi
YWNrKShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4
dGVuc2lvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRs
ZURpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb25DYWxsYmFjaykoV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24sIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOworCiBzdHJ1Y3QgV0tCdW5kbGVDbGllbnQgewogICAgIGludCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVy
c2lvbjsKICAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CisgICAgCisgICAgLy8gVmVyc2lvbiAw
CiAgICAgV0tCdW5kbGVEaWRDcmVhdGVQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRDcmVhdGVQYWdlOwogICAgIFdLQnVuZGxlV2lsbERlc3Ryb3lQ
YWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbERlc3Ry
b3lQYWdlOwogICAgIFdLQnVuZGxlRGlkSW5pdGlhbGl6ZVBhZ2VHcm91cENhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cDsKICAgICBXS0J1
bmRsZURpZFJlY2VpdmVNZXNzYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlOworICAgIAorICAgIC8vIFZlcnNpb24gMQorICAgIFdL
QnVuZGxlRGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbjsKKyAgICBXS0J1bmRsZURpZERp
c2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tRnJhbWVDYWxsYmFjayAgICAgICAgICAgIGRp
ZERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tRnJhbWU7CisgICAgV0tCdW5kbGVEaWRS
ZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICBk
aWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lOworICAgIFdLQnVuZGxlRGlkRGVz
dHJveURPTVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBkaWRE
ZXN0cm95RE9NV2luZG93RXh0ZW5zaW9uOwogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlQ2xp
ZW50IFdLQnVuZGxlQ2xpZW50OwogCi1lbnVtIHsga1dLQnVuZGxlQ2xpZW50Q3VycmVudFZlcnNp
b24gPSAwIH07CitlbnVtIHsga1dLQnVuZGxlQ2xpZW50Q3VycmVudFZlcnNpb24gPSAxIH07CiAK
IFdLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZUdldFR5cGVJRCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJ
Q2FzdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUFQSUNhc3QuaAppbmRleCBkYjMyNzE2Li5lNDBjODk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2Fz
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVBUElDYXN0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBJbmplY3RlZEJ1bmRsZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0
OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOworY2xhc3MgSW5qZWN0
ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb247CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQ7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb247CiBjbGFzcyBJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU7CkBAIC01OCw2ICs1OSw3IEBAIGNsYXNzIFdlYlBhZ2VHcm91
cFByb3h5OwogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJl
ZiwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0UmVmLCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlz
dCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25SZWYsIFdl
YkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24pCitXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb25SZWYsIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlRnJhbWVSZWYsIFdlYkZyYW1lKQogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZiwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSW5zcGVjdG9yUmVmLCBXZWJJbnNw
ZWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNjkzNmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgiCisKKyNpbmNsdWRl
ICJJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIgorI2luY2x1ZGUgIldLQnVuZGxl
QVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbkdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKEluamVj
dGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpBUElUeXBlKTsKK30KKworV0tCdW5kbGVGcmFt
ZVJlZiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldEZyYW1lKFdLQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGV4dGVu
c2lvbiktPmZyYW1lKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMDBi
ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw0MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25faAorI2RlZmluZSBXS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbl9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbkdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tCdW5kbGVGcmFt
ZVJlZiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldEZyYW1lKFdLQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CisKKyNlbmRpZiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbl9oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCmluZGV4IDQyZjg2NzQuLjA2MDBjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CkBAIC00NTYsNCArNDU2LDI0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZEluc3RhbGxET01X
aW5kb3dFeHRlbnNpb24oSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIGV4dGVuc2lv
bikKK3sKKyAgICBtX2NsaWVudC5kaWRJbnN0YWxsRE9NV2luZG93RXh0ZW5zaW9uKHRoaXMsIGV4
dGVuc2lvbik7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZERpc2Nvbm5lY3RET01XaW5k
b3dFeHRlbnNpb25Gcm9tRnJhbWUoSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIGV4
dGVuc2lvbikKK3sKKyAgICBtX2NsaWVudC5kaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
RnJvbUZyYW1lKHRoaXMsIGV4dGVuc2lvbik7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRp
ZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUoSW5qZWN0ZWRCdW5kbGVET01XaW5k
b3dFeHRlbnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBtX2NsaWVudC5kaWRSZWNvbm5lY3RET01X
aW5kb3dFeHRlbnNpb25Ub0ZyYW1lKHRoaXMsIGV4dGVuc2lvbik7Cit9CisKK3ZvaWQgSW5qZWN0
ZWRCdW5kbGU6OmRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24oSW5qZWN0ZWRCdW5kbGVET01X
aW5kb3dFeHRlbnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBtX2NsaWVudC5kaWREZXN0cm95RE9N
V2luZG93RXh0ZW5zaW9uKHRoaXMsIGV4dGVuc2lvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDNiYzY2MDIuLmI4ODM2OGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgKQEAgLTE1Miw2ICsxNTIsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqKTsKIAorICAgIHZvaWQgZGlkSW5zdGFsbERPTVdpbmRvd0V4
dGVuc2lvbihJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiopOworICAgIHZvaWQgZGlk
RGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZShJbmplY3RlZEJ1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbiopOworICAgIHZvaWQgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
VG9GcmFtZShJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiopOworICAgIHZvaWQgZGlk
RGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbihJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lv
biopOworCiAgICAgc3RhdGljIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQ29udGV4dFJlZiwgSlNW
YWx1ZVJlZiBleGNlcHRpb24pOwogCiAgICAgc3RhdGljIGJvb2wgaXNQcm9jZXNzaW5nVXNlckdl
c3R1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKaW5kZXggZjJlNGYyYi4u
MTIzN2EwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKQEAgLTYyLDQgKzYy
LDM2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVNZXNzYWdlKEluamVj
dGVkQnVuZGxlKiBidW5kbGUsIGNvbnN0IFN0cmluCiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZU1l
c3NhZ2UodG9BUEkoYnVuZGxlKSwgdG9BUEkobWVzc2FnZU5hbWUuaW1wbCgpKSwgdG9BUEkobWVz
c2FnZUJvZHkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRs
ZUNsaWVudDo6ZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbihJbmplY3RlZEJ1bmRsZSogYnVu
ZGxlLCBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAg
IGlmICghbV9jbGllbnQudmVyc2lvbiB8fCAhbV9jbGllbnQuZGlkSW5zdGFsbERPTVdpbmRvd0V4
dGVuc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQuZGlkSW5zdGFsbERPTVdp
bmRvd0V4dGVuc2lvbih0b0FQSShidW5kbGUpLCB0b0FQSShleHRlbnNpb24pLCBtX2NsaWVudC5j
bGllbnRJbmZvKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkRGlzY29ubmVj
dERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBJbmpl
Y3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAgIGlmICghbV9j
bGllbnQudmVyc2lvbiB8fCFtX2NsaWVudC5kaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
RnJvbUZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5kaWREaXNjb25uZWN0
RE9NV2luZG93RXh0ZW5zaW9uRnJvbUZyYW1lKHRvQVBJKGJ1bmRsZSksIHRvQVBJKGV4dGVuc2lv
biksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ2xpZW50
OjpkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lKEluamVjdGVkQnVuZGxlKiBi
dW5kbGUsIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBleHRlbnNpb24pCit7Cisg
ICAgaWYgKCFtX2NsaWVudC52ZXJzaW9uIHx8IW1fY2xpZW50LmRpZFJlY29ubmVjdERPTVdpbmRv
d0V4dGVuc2lvblRvRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LmRpZFJl
Y29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUodG9BUEkoYnVuZGxlKSwgdG9BUEkoZXh0
ZW5zaW9uKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVD
bGllbnQ6OmRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24oSW5qZWN0ZWRCdW5kbGUqIGJ1bmRs
ZSwgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBp
ZiAoIW1fY2xpZW50LnZlcnNpb24gfHwhbV9jbGllbnQuZGlkRGVzdHJveURPTVdpbmRvd0V4dGVu
c2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQuZGlkRGVzdHJveURPTVdpbmRv
d0V4dGVuc2lvbih0b0FQSShidW5kbGUpLCB0b0FQSShleHRlbnNpb24pLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
Q2xpZW50LmgKaW5kZXggMzJiZTI5MC4uMDZmYzM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVD
bGllbnQuaApAQCAtMzQsNiArMzQsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQVBJ
T2JqZWN0OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGU7CitjbGFzcyBJbmplY3RlZEJ1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbjsKK2NsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdl
YlBhZ2VHcm91cFByb3h5OwogCkBAIC00Myw2ICs0NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCB3
aWxsRGVzdHJveVBhZ2UoSW5qZWN0ZWRCdW5kbGUqLCBXZWJQYWdlKik7CiAgICAgdm9pZCBkaWRJ
bml0aWFsaXplUGFnZUdyb3VwKEluamVjdGVkQnVuZGxlKiwgV2ViUGFnZUdyb3VwUHJveHkqKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKEluamVjdGVkQnVuZGxlKiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSk7CisKKyAgICB2b2lkIGRpZElu
c3RhbGxET01XaW5kb3dFeHRlbnNpb24oSW5qZWN0ZWRCdW5kbGUqLCBJbmplY3RlZEJ1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbiogZXh0ZW5zaW9uKTsKKyAgICB2b2lkIGRpZERpc2Nvbm5lY3RET01X
aW5kb3dFeHRlbnNpb25Gcm9tRnJhbWUoSW5qZWN0ZWRCdW5kbGUqLCBJbmplY3RlZEJ1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbiopOworICAgIHZvaWQgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5z
aW9uVG9GcmFtZShJbmplY3RlZEJ1bmRsZSosIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uKik7CisgICAgdm9pZCBkaWREZXN0cm95RE9NV2luZG93RXh0ZW5zaW9uKEluamVjdGVkQnVu
ZGxlKiwgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2Q4NGQ1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAKQEAgLTAsMCArMSw3NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5o
IgorCisjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0RPTVdpbmRvd0V4dGVuc2lvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3R5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24q
LCBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24+ID4gRE9NV2luZG93RXh0
ZW5zaW9uV3JhcHBlck1hcDsKK3N0YXRpYyBET01XaW5kb3dFeHRlbnNpb25XcmFwcGVyTWFwJiBl
eHRlbnNpb25XcmFwcGVyTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERPTVdpbmRv
d0V4dGVuc2lvbldyYXBwZXJNYXAsIG1hcCwgKCkpOworICAgIHJldHVybiBtYXA7Cit9CisKK0lu
amVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbjo6Z2V0T3JDcmVhdGVXcmFwcGVyKFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiog
Y29yZUV4dGVuc2lvbikKK3sKKyAgICBpZiAoIWNvcmVFeHRlbnNpb24pCisgICAgICAgIHJldHVy
biAwOworICAgIAorICAgIGNvbnN0IFJlZlB0cjxJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbj4mIGV4aXN0aW5nV3JhcHBlciA9IGV4dGVuc2lvbldyYXBwZXJNYXAoKS5nZXQoY29yZUV4
dGVuc2lvbik7CisgICAgaWYgKGV4aXN0aW5nV3JhcHBlcikKKyAgICAgICAgcmV0dXJuIGV4aXN0
aW5nV3JhcHBlci5nZXQoKTsKKyAgICAKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVET01XaW5k
b3dFeHRlbnNpb24+IHdyYXBwZXIgPSBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVET01XaW5k
b3dFeHRlbnNpb24oY29yZUV4dGVuc2lvbikpOworICAgIEluamVjdGVkQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uKiByZXN1bHQgPSB3cmFwcGVyLmdldCgpOworICAgIGV4dGVuc2lvbldyYXBwZXJN
YXAoKS5zZXQoY29yZUV4dGVuc2lvbiwgd3JhcHBlci5yZWxlYXNlKCkpOworCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OkluamVjdGVk
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiogZXh0
ZW5zaW9uKQorICAgIDogbV9jb3JlRXh0ZW5zaW9uKGV4dGVuc2lvbikKK3sKKyAgICBBU1NFUlQo
bV9jb3JlRXh0ZW5zaW9uKTsKK30KKworSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246
On5JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbigpCit7CisgICAgZXh0ZW5zaW9uV3Jh
cHBlck1hcCgpLnJlbW92ZShtX2NvcmVFeHRlbnNpb24uZ2V0KCkpOworfQorCitXZWJGcmFtZSog
SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OmZyYW1lKCkgY29uc3QKK3sKKyAgICBX
ZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBtX2NvcmVFeHRlbnNpb24tPmZyYW1lKCk7CisgICAgcmV0
dXJuIGZyYW1lID8gc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPihmcmFtZS0+bG9h
ZGVyKCktPmNsaWVudCgpKS0+d2ViRnJhbWUoKSA6IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NmFjYzgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb25faAorI2RlZmluZSBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbl9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBET01XaW5kb3dFeHRlbnNpb247Cisg
ICAgY2xhc3MgRnJhbWU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJGcmFt
ZTsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24gOiBwdWJsaWMgQVBJ
T2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUJ1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbjsKKworICAgIHN0YXRpYyBJbmplY3RlZEJ1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbiogZ2V0T3JDcmVhdGVXcmFwcGVyKFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVu
c2lvbiopOworCisgICAgdmlydHVhbCB+SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24o
KSBPVkVSUklERTsKKyAgICAKKyAgICBXZWJGcmFtZSogZnJhbWUoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKwor
ICAgIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKFdlYkNvcmU6OkRPTVdpbmRvd0V4
dGVuc2lvbiopOworCisgICAgUmVmUHRyPFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbj4gbV9j
b3JlRXh0ZW5zaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBJ
bmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCmluZGV4IDgyMGY2MTguLjVhNjhlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlv
bk1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiSW5qZWN0
ZWRCdW5kbGUuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5o
IgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUg
IkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNl
cnRpZmljYXRlSW5mby5oIgpAQCAtMTM4OCw2ICsxMzkwLDI2IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJX
b3JsZCoKICNlbmRpZgogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpleHRlbnNpb25J
bnN0YWxsZWRPbkdsb2JhbE9iamVjdChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qIGV4dGVu
c2lvbikKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRJ
bnN0YWxsRE9NV2luZG93RXh0ZW5zaW9uKEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
OjpnZXRPckNyZWF0ZVdyYXBwZXIoZXh0ZW5zaW9uKSk7Cit9CisKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmV4dGVuc2lvbkRpc2Nvbm5lY3RlZEZyb21HbG9iYWxPYmplY3QoV2ViQ29yZTo6
RE9NV2luZG93RXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21G
cmFtZShJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6Z2V0T3JDcmVhdGVXcmFwcGVy
KGV4dGVuc2lvbikpOworfQorCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpleHRlbnNpb25S
ZWNvbm5lY3RlZFRvR2xvYmFsT2JqZWN0KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiogZXh0
ZW5zaW9uKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVkQnVuZGxlKCktPmRp
ZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUoSW5qZWN0ZWRCdW5kbGVET01XaW5k
b3dFeHRlbnNpb246OmdldE9yQ3JlYXRlV3JhcHBlcihleHRlbnNpb24pKTsKK30KKwordm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGVzdHJveUdsb2JhbE9iamVjdEZvckV4dGVuc2lvbihX
ZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWREZXN0cm95RE9NV2luZG93RXh0ZW5zaW9u
KEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpnZXRPckNyZWF0ZVdyYXBwZXIoZXh0
ZW5zaW9uKSk7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRvY3VtZW50RWxlbWVu
dEF2YWlsYWJsZSgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCAzYzdkNWJmLi5kZDRmY2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0xOTMsNiArMTkzLDExIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBl
cldvcmxkKikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZXh0ZW5zaW9uSW5zdGFsbGVk
T25HbG9iYWxPYmplY3QoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGV4dGVuc2lvbkRpc2Nvbm5lY3RlZEZyb21HbG9iYWxPYmplY3QoV2Vi
Q29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGV4
dGVuc2lvblJlY29ubmVjdGVkVG9HbG9iYWxPYmplY3QoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5z
aW9uKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lHbG9iYWxPYmplY3RG
b3JFeHRlbnNpb24oV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgT1ZFUlJJREU7CisKICAg
ICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24oKSBjb25zdCBPVkVSUklERTsg
Ly8gIk5hdmlnYXRpb24iIGhlcmUgbWVhbnMgYSB0cmFuc2l0aW9uIGZyb20gb25lIHBhZ2UgdG8g
YW5vdGhlciB0aGF0IGVuZHMgdXAgaW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0LgogICAgIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZmNjc3ZGEu
LjgzMWQ4Y2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMi0wMy0yOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMTIwMTU1PiBhbmQgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNjY0CisgICAgICAgIE5lZWQgRE9N
V2luZG93IG1lY2hhbmlzbSB0byBzdXBwbGVtZW50IFVzZXJTY3JpcHRzIGZvciBwYWdlIGNhY2hl
IG5vdGlmaWNhdGlvbnMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgdG8gbmV3IGNsaWVudCBpbnRlcmZhY2U6CisgICAgICAgICogTWluaUJy
b3dzZXIvbWFjL1dlYkJ1bmRsZS9XZWJCdW5kbGVNYWluLm06CisgICAgICAgIChXS0J1bmRsZUlu
aXRpYWxpemUpOiAKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxp
emUpOgorCisgICAgICAgIEFkZCBuZXcgY2xpZW50IGNhbGxiYWNrcyB0byB0aGUgc2hhcmVkIElu
amVjdGVkQnVuZGxlQ29udHJvbGxlciBhbmQgSW5qZWN0ZWRCdW5kbGVUZXN0OgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZEluc3RhbGxE
T01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5k
bGVDb250cm9sbGVyOjpkaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUZyYW1lKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkUmVj
b25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9GcmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24p
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmg6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZVRlc3QuaDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlVGVzdDo6ZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVu
c2lvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZVRlc3Q6OmRpZERp
c2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6SW5qZWN0ZWRCdW5kbGVUZXN0OjpkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25U
b0ZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlVGVzdDo6ZGlk
RGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgVUlQcm9jZXNz
IHNpZGUgb2YgdGhlIHRlc3QgdGhhdCBleGVyY2lzZXMgZXh0ZW5zaW9ucyBpbiBhbmQgb3V0IG9m
IHRoZSBwYWdlIGNhY2hlLAorICAgICAgICBsaXN0ZW5pbmcgZm9yIGEgcGFydGljdWxhciBzZXF1
ZW5jZSBvZiBtZXNzYWdlcyBmcm9tIHRoZSBidW5kbGU6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKworICAgICAgICBCdW5kbGUgc2lkZSBv
ZiB0aGUgdGVzdC4gTW9uaXRvcnMgZnJhbWUgbG9hZHMgYW5kIGV4dGVuc2lvbiBjYWxsYmFja3Ms
IG1lc3NhZ2luZworICAgICAgICBlYWNoIGV2ZW50IHVwIHRvIHRoZSBVSVByb2Nlc3M6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2lj
X0J1bmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OkRPTVdpbmRv
d0V4dGVuc2lvbkJhc2ljKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZEZpbmlzaExvYWRG
b3JGcmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNp
Yzo6Z2V0T3JFc3RhYmxpc2hGcmFtZUlEKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRPTVdp
bmRvd0V4dGVuc2lvbkJhc2ljOjpmcmFtZUxvYWRGaW5pc2hlZCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6ZGlkQ3JlYXRlUGFnZSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6c2VuZEJ1bmRs
ZUV4dGVuc2lvbk1lc3NhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0
ZW5zaW9uQmFzaWM6OmRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OmRpZERpc2Nvbm5lY3RET01XaW5k
b3dFeHRlbnNpb25Gcm9tRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93
RXh0ZW5zaW9uQmFzaWM6OmRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OmRpZERlc3Ry
b3lET01XaW5kb3dFeHRlbnNpb24pOgorCisgICAgICAgIE1ha2UgYSBtZXRob2Qgc3RhdGljIHRo
YXQgc2hvdWxkIGhhdmUgYmVlbiBzdGF0aWMgYWxsIGFsb25nOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAx
Mi0wMy0yOSAgRG9taW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAbGludXguaW50
ZWwuY29tPgogCiAgICAgICAgIFtHVEtdW0VGTF0gcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzIHNo
b3VsZCBiZSBydW4gdGhyb3VnaCBqaGJ1aWxkCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci9tYWMvV2ViQnVuZGxlL1dlYkJ1bmRsZU1haW4ubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9X
ZWJCdW5kbGUvV2ViQnVuZGxlTWFpbi5tCmluZGV4IDJkYTNlOTUuLjEwMWE4YTQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVuZGxlTWFpbi5tCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVuZGxlTWFpbi5tCkBAIC05OCw3
ICs5OCwxMSBAQCB2b2lkIFdLQnVuZGxlSW5pdGlhbGl6ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdL
VHlwZVJlZiBpbml0aWFsaXphdGlvblVzZXJEYXRhKQogICAgICAgICBkaWRDcmVhdGVQYWdlLAog
ICAgICAgICB3aWxsRGVzdHJveVBhZ2UsCiAgICAgICAgIDAsIC8vIGRpZEluaXRpYWxpemVQYWdl
R3JvdXAKLSAgICAgICAgZGlkUmVjaWV2ZU1lc3NhZ2UKKyAgICAgICAgZGlkUmVjaWV2ZU1lc3Nh
Z2UsCisgICAgICAgIDAsIC8vIGRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24KKyAgICAgICAg
MCwgLy8gZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZQorICAgICAgICAw
LCAvLyBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lCisgICAgICAgIDAgIC8v
IGRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24KICAgICB9OwogICAgIFdLQnVuZGxlU2V0Q2xp
ZW50KGJ1bmRsZSwgJmNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L0luamVjdGVkQnVuZGxlQ29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0luamVj
dGVkQnVuZGxlQ29udHJvbGxlci5jcHAKaW5kZXggMTMzNzVjNS4uYmM0MWFiZiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcApAQCAtNTUs
MTIgKzU1LDE2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjppbml0aWFsaXplKFdL
QnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFdLQnVuZGxlQ2xpZW50IGNsaWVudCA9IHsKLSAgICAgICAgMCwKKyAgICAgICAgMSwKICAg
ICAgICAgdGhpcywKICAgICAgICAgZGlkQ3JlYXRlUGFnZSwKICAgICAgICAgd2lsbERlc3Ryb3lQ
YWdlLAogICAgICAgICBkaWRJbml0aWFsaXplUGFnZUdyb3VwLAotICAgICAgICBkaWRSZWNlaXZl
TWVzc2FnZQorICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZSwKKyAgICAgICAgZGlkSW5zdGFsbERP
TVdpbmRvd0V4dGVuc2lvbiwKKyAgICAgICAgZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lv
bkZyb21GcmFtZSwKKyAgICAgICAgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9GcmFt
ZSwKKyAgICAgICAgZGlkRGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbgogICAgIH07CiAgICAgV0tC
dW5kbGVTZXRDbGllbnQobV9idW5kbGUsICZjbGllbnQpOwogCkBAIC0xMDMsNiArMTA3LDM0IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZShXS0J1bmRs
ZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmCiAgICAgc2VsZi0+bV9jdXJyZW50VGVzdC0+ZGlkUmVj
ZWl2ZU1lc3NhZ2UoYnVuZGxlLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwogfQogCit2b2lk
IEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbihX
S0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lv
biwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBJbmplY3RlZEJ1bmRsZUNvbnRyb2xs
ZXIqIHNlbGYgPSBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisgICAgYXNzZXJ0KHNlbGYtPm1fY3VycmVudFRlc3Qp
OworICAgIHNlbGYtPm1fY3VycmVudFRlc3QtPmRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24o
YnVuZGxlLCBleHRlbnNpb24pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6
ZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZShXS0J1bmRsZVJlZiBidW5k
bGUsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3sKKyAgICBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqIHNlbGYgPSBzdGF0
aWNfY2FzdDxJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSk7CisgICAgYXNzZXJ0KHNlbGYtPm1fY3VycmVudFRlc3QpOworICAgIHNlbGYtPm1f
Y3VycmVudFRlc3QtPmRpZERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tRnJhbWUoYnVu
ZGxlLCBleHRlbnNpb24pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlk
UmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9GcmFtZShXS0J1bmRsZVJlZiBidW5kbGUsIFdL
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3sKKyAgICBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqIHNlbGYgPSBzdGF0aWNfY2Fz
dDxJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSk7CisgICAgYXNzZXJ0KHNlbGYtPm1fY3VycmVudFRlc3QpOworICAgIHNlbGYtPm1fY3VycmVu
dFRlc3QtPmRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUoYnVuZGxlLCBleHRl
bnNpb24pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkRGVzdHJveURP
TVdpbmRvd0V4dGVuc2lvbihXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uUmVmIGV4dGVuc2lvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBJbmpl
Y3RlZEJ1bmRsZUNvbnRyb2xsZXIqIHNlbGYgPSBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZUNv
bnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisgICAgYXNzZXJ0KHNl
bGYtPm1fY3VycmVudFRlc3QpOworICAgIHNlbGYtPm1fY3VycmVudFRlc3QtPmRpZERlc3Ryb3lE
T01XaW5kb3dFeHRlbnNpb24oYnVuZGxlLCBleHRlbnNpb24pOworfQorCiB2b2lkIEluamVjdGVk
QnVuZGxlQ29udHJvbGxlcjo6ZHVtcFRlc3ROYW1lcygpCiB7CiAgICAgc3RkOjptYXA8c3RkOjpz
dHJpbmcsIENyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX2NyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9ucy5iZWdpbigpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmgKaW5kZXggNWVlNzE1
Ni4uZDI5M2ZhMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRs
ZUNvbnRyb2xsZXIuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlQ29u
dHJvbGxlci5oCkBAIC01OCw2ICs1OCwxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHdp
bGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRJbml0aWFsaXplUGFnZUdyb3VwKFdLQnVu
ZGxlUmVmLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAg
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVm
IG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOworICAgIHN0YXRpYyB2b2lkIGRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24oV0tCdW5k
bGVSZWYgYnVuZGxlLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24sIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZERpc2Nvbm5lY3RET01X
aW5kb3dFeHRlbnNpb25Gcm9tRnJhbWUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZURPTVdp
bmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAg
IHN0YXRpYyB2b2lkIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUoV0tCdW5k
bGVSZWYgYnVuZGxlLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24sIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZERlc3Ryb3lET01XaW5k
b3dFeHRlbnNpb24oV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lv
blJlZiBleHRlbnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiAgICAgc3RkOjptYXA8
c3RkOjpzdHJpbmcsIENyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uPiBtX2NyZWF0ZUlu
amVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uczsKICAgICBXS0J1bmRsZVJlZiBtX2J1bmRsZTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVUZXN0LmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlVGVzdC5oCmluZGV4IDUyODVjZGYuLjBmZjli
NGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVUZXN0LmgK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZVRlc3QuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiArNDAs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVS
ZWYsIFdLQnVuZGxlUGFnZVJlZikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEluaXRpYWxpemVQ
YWdlR3JvdXAoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRJ
bnN0YWxsRE9NV2luZG93RXh0ZW5zaW9uKFdLQnVuZGxlUmVmLCBXS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvblJlZikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZERpc2Nvbm5lY3RET01XaW5kb3dF
eHRlbnNpb25Gcm9tRnJhbWUoV0tCdW5kbGVSZWYsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
UmVmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
VG9GcmFtZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95RE9NV2luZG93RXh0ZW5zaW9uKFdLQnVuZGxlUmVm
LCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZikgeyB9CiAKICAgICBzdGQ6OnN0cmluZyBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDU0ZGY4NzguLmZkMTY3MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0zOCw2ICszOCw4IEBACiAJCTQ0MEExRDM5MTRBMDEwM0EwMDhBNjZGMiAvKiBLVVJMLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MEExRDM4MTRB
MDEwM0EwMDhBNjZGMiAvKiBLVVJMLmNwcCAqLzsgfTsKIAkJNEJGREZGQTcxMzE0Nzc2QzAwNjFG
MjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkZERkZBNjEzMTQ3NzZDMDA2MUYyNEIg
LyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNEJGREZGQTkx
MzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRkRGRkE4MTMxNDc3NzcwMDYx
RjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAgKi87IH07CisJCTUxMzkzRTIwMTUy
Mzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTM5M0UxRTE1MjM5NDRBMDA1RjM5
QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwICovOyB9OworCQk1MTM5M0UyMjE1MjM5
NTJEMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMzkzRTFEMTUyMzk0NEEw
MDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwICovOyB9OwogCQk1
MTQyQjI3MTE1MTdDODhCMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0MkIyNzAxNTE3Qzg4
QjAwQzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVSTC5tbSAqLzsgfTsKIAkJNTE0MkIyNzMx
NTE3QzhDODAwQzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVSTC5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDJCMjcyMTUxN0M4
OTEwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwuaHRtbCAqLzsgfTsKIAkJNTE3RTdE
RkMxNTExMEVBNjAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxN0U3REZCMTUxMTBFQTYwMEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW0gKi87IH07CkBAIC0yMjUsNiArMjI3LDggQEAKIAkJNDRBNjIyQzEx
NEEwRTJCNjAwNDg1MTVCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXVEZTdHJpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEJGREZGQTYxMzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2Rl
SGFuZGxlX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBI
aXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QkZERkZBODEzMTQ3Nzc3MDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5k
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGl0VGVzdFJlc3Vs
dE5vZGVIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTM5M0UxRDE1
MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbkJhc2lj
X0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMzkzRTFFMTUyMzk0
NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDJCMjcwMTUxN0M4OEIwMEMzMkIxOSAvKiBDb250
ZXh0TWVudUNhbkNvcHlVUkwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBDb250ZXh0TWVudUNhbkNvcHlVUkwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNDJCMjcyMTUxN0M4OTEwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IENvbnRleHRNZW51Q2FuQ29weVVSTC5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdFN0RGQjE1MTEwRUE2MDBEMEIwMDgg
LyogTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJl
c291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDc5
LDYgKzQ4Myw4IEBACiAJCQkJQkMyNDZEOTgxMzJGMUZFMTAwQjU2RDdDIC8qIENhbkhhbmRsZVJl
cXVlc3QuY3BwICovLAogCQkJCUJDMjQ2RDk3MTMyRjFGRTEwMEI1NkQ3QyAvKiBDYW5IYW5kbGVS
ZXF1ZXN0X0J1bmRsZS5jcHAgKi8sCiAJCQkJRjZGM0YyOTAxMzM0MkZFQjAwQTZCRjE5IC8qIENv
b2tpZU1hbmFnZXIuY3BwICovLAorCQkJCTUxMzkzRTFFMTUyMzk0NEEwMDVGMzlDNSAvKiBET01X
aW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgKi8sCisJCQkJNTEzOTNFMUQxNTIzOTQ0QTAwNUYzOUM1
IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgKi8sCiAJCQkJQkNCNjgwM0Yx
MjZGQkZFMTAwNjQyQTYxIC8qIERvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaC5jcHAg
Ki8sCiAJCQkJQkNCNjgwNDExMjZGQkZGMTAwNjQyQTYxIC8qIERvY3VtZW50U3RhcnRVc2VyU2Ny
aXB0QWxlcnRDcmFzaF9CdW5kbGUuY3BwICovLAogCQkJCUMwNDVGOTQ0MTM4NUMyRTkwMEMwRjND
RCAvKiBEb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwICovLApAQCAtODMxLDYgKzgz
Nyw3IEBACiAJCQkJNTE3RTdERkMxNTExMEVBNjAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVX
aXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRkJCQjRE
MTUxM0Q0RTkwMDgyMjczOCAvKiBXZWJWaWV3Q2FuUGFzdGVVUkwubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTQyQjI3MTE1MTdDODhCMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJNTEzOTNFMjAxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRv
d0V4dGVuc2lvbkJhc2ljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtODU5LDYgKzg2Niw3IEBACiAJ
CQkJOTNGN0U4NkYxNERDOEU1QzAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZyYW1lc19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMkQzMTkxNERDNjhC
OTAwRkZCMUREIC8qIFVzZXJNZXNzYWdlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
M0FGNEVDRTE1MDZGMDY0MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9ySW1hZ2VzX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTM5M0UyMjE1MjM5NTJE
MDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdp
bmRvd0V4dGVuc2lvbkJhc2ljLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYzlkMjVlYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAKQEAgLTAsMCArMSwxMzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0
LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCBmaW5pc2hl
ZDsKK3N0YXRpYyBpbnQgbGl2ZURPTUV4dGVuc2lvbkNvdW50OworCitzdGF0aWMgY29uc3QgY2hh
ciogZXhwZWN0ZWRNZXNzYWdlc1tdID0geworICAgICJkaWRJbnN0YWxsRE9NV2luZG93RXh0ZW5z
aW9uQm9keSAtIEV4dGVuc2lvbiAwIGluIGZyYW1lIDAiLAorICAgICJkaWRJbnN0YWxsRE9NV2lu
ZG93RXh0ZW5zaW9uQm9keSAtIEV4dGVuc2lvbiAxIGluIGZyYW1lIDEiLAorICAgICJGcmFtZSAx
IGZpbmlzaGVkIGxvYWRpbmciLAorICAgICJGcmFtZSAwIGZpbmlzaGVkIGxvYWRpbmciLAorICAg
ICJkaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUZyYW1lIC0gRXh0ZW5zaW9uIDEg
aW4gZnJhbWUgMSIsCisgICAgImRpZERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tRnJh
bWUgLSBFeHRlbnNpb24gMCBpbiBmcmFtZSAwIiwKKyAgICAiZGlkSW5zdGFsbERPTVdpbmRvd0V4
dGVuc2lvbkJvZHkgLSBFeHRlbnNpb24gMiBpbiBmcmFtZSAwIiwKKyAgICAiRnJhbWUgMCBmaW5p
c2hlZCBsb2FkaW5nIiwKKyAgICAiZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21G
cmFtZSAtIEV4dGVuc2lvbiAyIGluIGZyYW1lIDAiLAorICAgICJkaWRSZWNvbm5lY3RET01XaW5k
b3dFeHRlbnNpb25Ub0ZyYW1lIC0gRXh0ZW5zaW9uIDAgaW4gZnJhbWUgMCIsCisgICAgImRpZFJl
Y29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUgLSBFeHRlbnNpb24gMSBpbiBmcmFtZSAx
IiwKKyAgICAiRnJhbWUgMCBmaW5pc2hlZCBsb2FkaW5nIiwKKyAgICAiZGlkRGVzdHJveURPTVdp
bmRvd0V4dGVuc2lvbiIsCisgICAgImRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24iLAorICAg
ICJkaWREZXN0cm95RE9NV2luZG93RXh0ZW5zaW9uIgorfTsKKworc3RhdGljIFZlY3RvcjxXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gPiBtZXNzYWdlczsKKworc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNz
YWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKikKK3sKKyAgICBBU1NF
UlRfTk9UX05VTEwobWVzc2FnZUJvZHkpOworICAgIEVYUEVDVF9FUShXS1N0cmluZ0dldFR5cGVJ
RCgpLCBXS0dldFR5cGVJRChtZXNzYWdlQm9keSkpOworCisgICAgV0tTdHJpbmdSZWYgYm9keVN0
cmluZyA9IChXS1N0cmluZ1JlZiltZXNzYWdlQm9keTsKKyAgICBtZXNzYWdlcy5hcHBlbmQoYm9k
eVN0cmluZyk7CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVz
c2FnZU5hbWUsICJkaWRJbnN0YWxsRE9NV2luZG93RXh0ZW5zaW9uQm9keSIpKQorICAgICAgICBs
aXZlRE9NRXh0ZW5zaW9uQ291bnQrKzsKKyAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiZGlkRGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbiIpKSB7
CisgICAgICAgIGxpdmVET01FeHRlbnNpb25Db3VudC0tOworICAgICAgICBpZiAoIWxpdmVET01F
eHRlbnNpb25Db3VudCkKKyAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9IGVsc2Ug
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJkaWRGaW5pc2hM
b2FkRm9yTWFpbkZyYW1lIikpCisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKK30KKworVEVTVChX
ZWJLaXQyLCBET01XaW5kb3dFeHRlbnNpb25CYXNpYykKK3sKKyAgICBXS1JldGFpblB0cjxXS1Bh
Z2VHcm91cFJlZj4gcGFnZUdyb3VwKEFkb3B0V0ssIFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50
aWZpZXIoV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRPTVdpbmRvd0V4dGVuc2lvbkJh
c2ljUGFnZUdyb3VwIikpKTsgCisKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRl
eHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiRE9N
V2luZG93RXh0ZW5zaW9uQmFzaWMiLCBwYWdlR3JvdXAuZ2V0KCkpKTsKKworICAgIFdLQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50IGluamVjdGVkQnVuZGxlQ2xpZW50OworICAgIG1lbXNldCgm
aW5qZWN0ZWRCdW5kbGVDbGllbnQsIDAsIHNpemVvZihpbmplY3RlZEJ1bmRsZUNsaWVudCkpOwor
ICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LnZlcnNpb24gPSAwOworICAgIGluamVjdGVkQnVuZGxl
Q2xpZW50LmNsaWVudEluZm8gPSAwOworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGU7CisgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5n
ZXQoKSwgJmluamVjdGVkQnVuZGxlQ2xpZW50KTsKKyAgICAKKyAgICAvLyBUaGUgZGVmYXVsdCBj
YWNoZSBtb2RlbCBoYXMgYSBjYXBhY2l0eSBvZiAwLCBzbyBpdCBpcyBuZWNlc3NhcnkgdG8gc3dp
dGNoIHRvIGEgY2FjaGUKKyAgICAvLyBtb2RlbCB0aGF0IGFjdHVhbGx5IGFsbG93cyBmb3IgYSBw
YWdlIGNhY2hlLgorICAgIFdLQ29udGV4dFNldENhY2hlTW9kZWwoY29udGV4dC5nZXQoKSwga1dL
Q2FjaGVNb2RlbERvY3VtZW50QnJvd3Nlcik7CisKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmll
dyhjb250ZXh0LmdldCgpLCBwYWdlR3JvdXAuZ2V0KCkpOworCisgICAgLy8gTWFrZSBzdXJlIHRo
ZSBleHRlbnNpb25zIGZvciBlYWNoIGZyYW1lIGFyZSBpbnN0YWxsZWQuCisgICAgV0tSZXRhaW5Q
dHI8V0tVUkxSZWY+IHVybDEoQWRvcHRXSywgVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNp
bXBsZS1pZnJhbWUiLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgp
LCB1cmwxLmdldCgpKTsKKworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIGZpbmlzaGVk
ID0gZmFsc2U7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhvc2UgZmlyc3QgZXh0ZW5zaW9ucyBhcmUg
ZGlzY29ubmVjdGVkLCBhbmQgYSBuZXcgb25lIGlzIGluc3RhbGxlZC4KKyAgICBXS1JldGFpblB0
cjxXS1VSTFJlZj4gdXJsMihBZG9wdFdLLCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2lt
cGxlIiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgdXJsMi5n
ZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBmaW5pc2hlZCA9IGZhbHNl
OworCisgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhpcmQgb25lIGlzIGRpc2Nvbm5lY3RlZCwgYW5k
IHRoZSBmaXJzdCB0d28gYXJlIHJlY29ubmVjdGVkLgorICAgIFdLUGFnZUdvQmFjayh3ZWJWaWV3
LnBhZ2UoKSk7CisKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBmaW5pc2hlZCA9IGZh
bHNlOworICAgIAorICAgIC8vIE1ha2Ugc3VyZSB0aGUgMSBkaXNjb25uZWN0ZWQgZXh0ZW5zaW9u
IGluIHRoZSBwYWdlIGNhY2hlIGFuZCB0aGUgMiBhY3RpdmUgZXh0ZW5zaW9ucyBhcmUgYWxsIGRl
c3Ryb3llZC4KKyAgICBXS1BhZ2VDbG9zZSh3ZWJWaWV3LnBhZ2UoKSk7CisKKyAgICBVdGlsOjpy
dW4oJmZpbmlzaGVkKTsKKyAgICAKKyAgICBjb25zdCBzaXplX3QgZXhwZWN0ZWRTaXplID0gc2l6
ZW9mKGV4cGVjdGVkTWVzc2FnZXMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsKKyAgICBFWFBFQ1Rf
RVEobWVzc2FnZXMuc2l6ZSgpLCBleHBlY3RlZFNpemUpOworICAgIAorICAgIGlmIChtZXNzYWdl
cy5zaXplKCkgIT0gZXhwZWN0ZWRTaXplKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlcy5zaXplKCk7ICsraSkKKyAgICAgICAgRVhQRUNU
X0VRKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZXNbaV0uZ2V0KCksIGV4cGVj
dGVkTWVzc2FnZXNbaV0pLCB0cnVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRv
d0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4wODRlZWNkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5j
cHAKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbi5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVGcmFtZS5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S0J1bmRsZVBhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQcml2YXRlLmg+
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVNjcmlwdFdvcmxkLmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
YXNzZXJ0Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY2xhc3MgRE9NV2luZG93
RXh0ZW5zaW9uQmFzaWMgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1YmxpYzoKKyAg
ICBET01XaW5kb3dFeHRlbnNpb25CYXNpYyhjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcikK
KyAgICAgICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX2N1
cnJlbnRFeHRlbnNpb25JRCgwKQorICAgICAgICAsIG1fY3VycmVudEZyYW1lSUQoMCkKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoV0tCdW5kbGVSZWYsIFdLVHlw
ZVJlZiB1c2VyRGF0YSk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVS
ZWYsIFdLQnVuZGxlUGFnZVJlZik7CisgICAgdmlydHVhbCB2b2lkIGRpZEluc3RhbGxET01XaW5k
b3dFeHRlbnNpb24oV0tCdW5kbGVSZWYsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFt
ZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYpOworICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lKFdLQnVuZGxlUmVm
LCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZik7CisgICAgdmlydHVhbCB2b2lkIGRpZERl
c3Ryb3lET01XaW5kb3dFeHRlbnNpb24oV0tCdW5kbGVSZWYsIFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uUmVmKTsKKworICAgIHZvaWQgZnJhbWVMb2FkRmluaXNoZWQoV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZW5kQnVuZGxlRXh0ZW5zaW9uTWVzc2Fn
ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVu
c2lvbiwgY29uc3QgY2hhciogbWVzc2FnZSk7CisKKyAgICBpbnQgZ2V0T3JFc3RhYmxpc2hGcmFt
ZUlEKFdLQnVuZGxlRnJhbWVSZWYpOworCisgICAgV0tCdW5kbGVQYWdlR3JvdXBSZWYgbV9wYWdl
R3JvdXA7CisKKyAgICBXS0J1bmRsZVJlZiBtX2J1bmRsZTsKKyAgICAKKyAgICBpbnQgbV9jdXJy
ZW50RXh0ZW5zaW9uSUQ7CisgICAgSGFzaE1hcDxXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJl
ZiwgaW50PiBtX2V4dGVuc2lvbklETWFwOworCisgICAgaW50IG1fY3VycmVudEZyYW1lSUQ7Cisg
ICAgSGFzaE1hcDxXS0J1bmRsZUZyYW1lUmVmLCBpbnQ+IG1fZnJhbWVJRE1hcDsKK307CisKK3N0
YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPERPTVdpbmRvd0V4dGVuc2lvbkJhc2lj
PiByZWdpc3RyYXIoIkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljIik7CisKK3N0YXRpYyB2b2lkIGRp
ZEZpbmlzaExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgKChET01XaW5k
b3dFeHRlbnNpb25CYXNpYyopY2xpZW50SW5mbyktPmZyYW1lTG9hZEZpbmlzaGVkKGZyYW1lKTsK
K30KKworaW50IERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpnZXRPckVzdGFibGlzaEZyYW1lSUQo
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKK3sKKyAgICBpZiAobV9mcmFtZUlETWFwLmNvbnRhaW5z
KGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVJRE1hcC5nZXQoZnJhbWUpOworICAgIAor
ICAgIGludCBpZCA9IG1fY3VycmVudEZyYW1lSUQrKzsKKyAgICBtX2ZyYW1lSURNYXAuc2V0KGZy
YW1lLCBpZCk7CisgICAgcmV0dXJuIGlkOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJh
c2ljOjpmcmFtZUxvYWRGaW5pc2hlZChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQoreworICAgIGlu
dCBpZCA9IGdldE9yRXN0YWJsaXNoRnJhbWVJRChmcmFtZSk7CisKKyAgICBjaGFyIGJvZHlbMTAy
NF07CisgICAgc3ByaW50Zihib2R5LCAiRnJhbWUgJWkgZmluaXNoZWQgbG9hZGluZyIsIGlkKTsK
KyAgICAKKyAgICAvLyBPbmx5IGNvbnNpZGVyIGxvYWQgZmluaXNoZWQgZm9yIHRoZSBtYWluIGZy
YW1lCisgICAgY29uc3QgY2hhciogbmFtZSA9IFdLQnVuZGxlRnJhbWVHZXRQYXJlbnRGcmFtZShm
cmFtZSkgPyAiZGlkRmluaXNoTG9hZEZvckZyYW1lIiA6ICJkaWRGaW5pc2hMb2FkRm9yTWFpbkZy
YW1lIjsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobmFtZSkpOworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoYm9keSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3Nh
Z2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0
ZW5zaW9uQmFzaWM6OmluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgdXNl
ckRhdGEpCit7CisgICAgYXNzZXJ0KFdLR2V0VHlwZUlEKHVzZXJEYXRhKSA9PSBXS0J1bmRsZVBh
Z2VHcm91cEdldFR5cGVJRCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXAg
PSBzdGF0aWNfY2FzdDxXS0J1bmRsZVBhZ2VHcm91cFJlZj4odXNlckRhdGEpOworCisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNvdXJjZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiYWxlcnQoJ1VzZXIgc2NyaXB0IGFsZXJ0Jyk7IikpOworICAgIFdLQnVuZGxl
QWRkVXNlclNjcmlwdChidW5kbGUsIHBhZ2VHcm91cCwgV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0
ZVdvcmxkKCksIHNvdXJjZS5nZXQoKSwgMCwgMCwgMCwga1dLSW5qZWN0QXREb2N1bWVudFN0YXJ0
LCBrV0tJbmplY3RJbkFsbEZyYW1lcyk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uQmFz
aWM6OmRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSkKK3sKKyAgICBtX2J1bmRsZSA9IGJ1bmRsZTsKKworICAgIFdLQnVuZGxlUGFnZUxvYWRlckNs
aWVudCBwYWdlTG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmcGFnZUxvYWRlckNsaWVudCwgMCwg
c2l6ZW9mKHBhZ2VMb2FkZXJDbGllbnQpKTsKKyAgICAKKyAgICBwYWdlTG9hZGVyQ2xpZW50LnZl
cnNpb24gPSAxOworICAgIHBhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAg
cGFnZUxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9y
RnJhbWU7CisgICAgCisgICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAm
cGFnZUxvYWRlckNsaWVudCk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OnNl
bmRCdW5kbGVFeHRlbnNpb25NZXNzYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVET01X
aW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uLCBjb25zdCBjaGFyKiBtZXNzYWdlKQoreworICAg
IFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUgPSBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldEZy
YW1lKGV4dGVuc2lvbik7CisKKyAgICBzdGF0aWMgY2hhciBidWZmZXJbMTAyNF07CisgICAgaWYg
KG1fZXh0ZW5zaW9uSURNYXAuY29udGFpbnMoZXh0ZW5zaW9uKSkKKyAgICAgICAgc3ByaW50Zihi
dWZmZXIsICIlcyAtIEV4dGVuc2lvbiAlaSBpbiBmcmFtZSAlaSIsIG1lc3NhZ2UsIG1fZXh0ZW5z
aW9uSURNYXAuZ2V0KGV4dGVuc2lvbiksIGdldE9yRXN0YWJsaXNoRnJhbWVJRChmcmFtZSkpOwor
ICAgIGVsc2UKKyAgICAgICAgc3ByaW50ZihidWZmZXIsICIlcyIsIG1lc3NhZ2UpOworCisgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhtZXNzYWdlKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhi
dWZmZXIpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKGJ1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0
KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25CYXNp
Yzo6ZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbihXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbikKK3sgICAgCisgICAgaW50IGV4dGVu
c2lvbklEID0gbV9jdXJyZW50RXh0ZW5zaW9uSUQrKzsKKyAgICBtX2V4dGVuc2lvbklETWFwLnNl
dChleHRlbnNpb24sIGV4dGVuc2lvbklEKTsKKyAgICAgICAgCisgICAgc2VuZEJ1bmRsZUV4dGVu
c2lvbk1lc3NhZ2UoYnVuZGxlLCBleHRlbnNpb24sICJkaWRJbnN0YWxsRE9NV2luZG93RXh0ZW5z
aW9uQm9keSIpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpkaWREaXNjb25u
ZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUZyYW1lKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKQoreworICAgIHNlbmRCdW5kbGVFeHRl
bnNpb25NZXNzYWdlKGJ1bmRsZSwgZXh0ZW5zaW9uLCAiZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4
dGVuc2lvbkZyb21GcmFtZSIpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpk
aWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lKFdLQnVuZGxlUmVmIGJ1bmRsZSwg
V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKQoreworICAgIHNlbmRCdW5k
bGVFeHRlbnNpb25NZXNzYWdlKGJ1bmRsZSwgZXh0ZW5zaW9uLCAiZGlkUmVjb25uZWN0RE9NV2lu
ZG93RXh0ZW5zaW9uVG9GcmFtZSIpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2lj
OjpkaWREZXN0cm95RE9NV2luZG93RXh0ZW5zaW9uKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKQoreworICAgIC8vIEFzIG9wcG9zZWQg
dG8gdGhlIG9yZGVyIG9mIG90aGVyIGV4dGVuc2lvbiBvcGVyYXRpb25zLCBkZXN0cnVjdGlvbiBv
cmRlciBpcyBvZnRlbiByYW5kb20gaW4gdGhpcyB0ZXN0LgorICAgIC8vIERvbid0IGluY2x1ZGUg
ZXh0ZW5zaW9uIElEcyBmb3IgdGhlIGRlc3RydWN0aW9uIG1lc3NhZ2UuCisgICAgbV9leHRlbnNp
b25JRE1hcC5yZW1vdmUoZXh0ZW5zaW9uKTsKKworICAgIHNlbmRCdW5kbGVFeHRlbnNpb25NZXNz
YWdlKGJ1bmRsZSwgZXh0ZW5zaW9uLCAiZGlkRGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbiIpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAKaW5kZXgg
NDBjYTI2OS4uMDgzYTg4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL0luamVjdGVkQnVuZGxlQmFzaWMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljLmNwcApAQCAtMzQsNyArMzQsNyBAQCBz
dGF0aWMgYm9vbCBkb25lOwogc3RhdGljIGJvb2wgbG9hZERvbmU7CiBzdGF0aWMgYm9vbCBtZXNz
YWdlUmVjZWl2ZWQ7CiAKLXZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYg
bWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJp
bmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKIHsKICAgICBtZXNzYWdlUmVjZWl2ZWQgPSB0cnVlOwogICAgIGlmIChsb2FkRG9u
ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNTU2NGIzMi4uYjg2YjI5MSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKQEAgLTg4LDcgKzg4LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoV0tC
dW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2VyCiAgICAgICAgIGRp
ZENyZWF0ZVBhZ2UsCiAgICAgICAgIHdpbGxEZXN0cm95UGFnZSwKICAgICAgICAgZGlkSW5pdGlh
bGl6ZVBhZ2VHcm91cCwKLSAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UKKyAgICAgICAgZGlkUmVj
ZWl2ZU1lc3NhZ2UsCisgICAgICAgIDAsIC8vIGRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24K
KyAgICAgICAgMCwgLy8gZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZQor
ICAgICAgICAwLCAvLyBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lCisgICAg
ICAgIDAgIC8vIGRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24KICAgICB9OwogICAgIFdLQnVu
ZGxlU2V0Q2xpZW50KG1fYnVuZGxlLCAmY2xpZW50KTsKIAo=
</data>
<flag name="commit-queue"
          id="139018"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134699</attachid>
            <date>2012-03-29 17:15:25 -0700</date>
            <delta_ts>2012-03-30 09:27:49 -0700</delta_ts>
            <desc>Patch v2 - Now with more build fixes!</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>85757</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjYzMGYzZC4uM2ZlMTc3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwMjgsNiArMTAyOCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdl
L0RPTVNlbGVjdGlvbi5jcHAKICAgICBwYWdlL0RPTVRpbWVyLmNwcAogICAgIHBhZ2UvRE9NV2lu
ZG93LmNwcAorICAgIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcAogICAgIHBhZ2UvRE9NV2lu
ZG93UHJvcGVydHkuY3BwCiAgICAgcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKICAgICBwYWdlL0V2
ZW50SGFuZGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjRjOTVhLi5kNWUxODc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTggQEAKKzIwMTItMDMtMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDEyMDE1NT4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjY2NAorICAgICAgICBOZWVkIERPTVdp
bmRvdyBtZWNoYW5pc20gdG8gc3VwcGxlbWVudCBVc2VyU2NyaXB0cyBmb3IgcGFnZSBjYWNoZSBu
b3RpZmljYXRpb25zCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBjcmVhdGVzIGEgbmV3IG9iamVjdCB0eXBlICJET01XaW5kb3dFeHRl
bnNpb24iIHdoaWNoIGV4dGVuZHMgRE9NV2luZG93UHJvcGVydHkuCisgICAgICAgIEEgRE9NV2lu
ZG93RXh0ZW5zaW9uIGlzIHRpZWQgdG8gYSBwYXJ0aWN1bGFyIERPTVdpbmRvdyBhbmQgcmVwcmVz
ZW50cyBleHRlbnNpYmlsaXR5IGluIHRoYXQKKyAgICAgICAgRE9NV2luZG93IHdpdGhpbiBhIHBh
cnRpY3VsYXIgRE9NV3JhcHBlcldvcmxkLgorCisgICAgICAgIEl0IGlzIGEgdG9rZW4gb2JqZWN0
IG1lYW50IGRlc2lnbmVkIHRvIG5vdGlmeSBjbGllbnRzIG9mIHRoZSB2YXJpb3VzIGV2ZW50cyBp
biB0aGUgbGlmZXRpbWUKKyAgICAgICAgb2YgYSBET01XaW5kb3cgcHJvcGVydHkgc3VjaCBhcyBj
cmVhdGlvbiwgZGlzY29ubmVjdGluZyBmb3IgdGhlIHBhZ2UgY2FjaGUsIHJlY29ubmVjdGluZwor
ICAgICAgICB3aGVuIHJlc3RvcmluZyBmcm9tIHRoZSBwYWdlIGNhY2hlLCBhbmQgRE9NV2luZG93
IGRlc3RydWN0aW9uLgorCisgICAgICAgIFdlYktpdEFQSVRlc3QgIkRPTVdpbmRvd0V4dGVuc2lv
bkJhc2ljIiBhZGRlZC4KKworICAgICAgICBBZGQgdGhlIERPTVdpbmRvd0V4dGVuc2lvbiBvYmpl
Y3Qgd2hpY2ggbm90aWZpZXMgdGhlIEFQSSBsYXllciB3aGVuIHZhcmlvdXMgbGlmZXRpbWUgZXZl
bnRzIG9jY3VyOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246OkRPTVdpbmRvd0V4dGVuc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246On5ET01XaW5kb3dFeHRl
bnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjpkaXNjb25uZWN0
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjpyZWNvbm5lY3RG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246OndpbGxEZXRhY2hQ
YWdlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvd0V4dGVuc2lvbjo6d29ybGQpOgorCisgICAgICAgIFRoZSBET01XaW5kb3cg
aXRzZWxmIG1hbmFnZXMgdGhlIHdvcmxkLXRvLURPTVdpbmRvd0V4dGVuc2lvbiBtYXBwaW5nOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6d2lsbERldGFjaFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpleHRlbnNp
b25Gb3JXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNldEV4dGVuc2lvbkZv
cldvcmxkKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorCisgICAgICAgIEZvciBub3cs
IG9ubHkgaW5zdGFsbCBET01XaW5kb3dFeHRlbnNpb25zIGluIGEgd29ybGQgYmVmb3JlIHdlJ3Jl
IGFib3V0IHRvIGluamVjdAorICAgICAgICB1c2VyIHNjcmlwdHMgaW4gdGhhdCB3b3JsZC4KKyAg
ICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbmplY3RV
c2VyU2NyaXB0c0ZvcldvcmxkKToKKworICAgICAgICBBZGQgYSBjbGllbnQgbGF5ZXIgdG8gbm90
aWZ5IEFQSXMgYWJvdXQgdGhlIGxpZmV0aW1lcyBvZiBhIERPTVdpbmRvd0V4dGVuc2lvbjoKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50OjpleHRlbnNpb25JbnN0YWxsZWRPbkdsb2JhbE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6ZXh0ZW5zaW9uRGlzY29ubmVjdGVkRnJv
bUdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6ZXh0
ZW5zaW9uUmVjb25uZWN0ZWRUb0dsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudDo6ZGlkRGVzdHJveUdsb2JhbE9iamVjdEZvckV4dGVuc2lvbik6CisKKyAg
ICAgICAgUHJvamVjdCBmaWxlIG5vbnNlbnNlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dAorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW0KKyAgICAgICAgKiBUYXJnZXQucHJpCisgICAgICAgICogV2ViQ29y
ZS5neXBpCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKwogMjAxMi0w
My0yOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIElt
YWdlcyB0aGF0IHJlbG9hZCB2aWEgbWVkaWEgcXVlcmllcyBkb24ndCBwYWludCB3aGVuIGRldmlj
ZSBzY2FsZSBmYWN0b3IgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
ZmY4MTliMy4uOGUzYTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yODkz
LDYgKzI4OTMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NVGltZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvd0V4dGVuc2lvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5z
aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0FjdGlvbnMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAxZmRjNjljLi4wZjM1YTEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKQEAgLTEwMDAsNiArMTAwMCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBhZ2Uv
RE9NU2VsZWN0aW9uLmNwcCBcCiAgICAgcGFnZS9ET01UaW1lci5jcHAgXAogICAgIHBhZ2UvRE9N
V2luZG93LmNwcCBcCisgICAgcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwIFwKICAgICBwYWdl
L0RPTVdpbmRvd1Byb3BlcnR5LmNwcCBcCiAgICAgcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgXAog
ICAgIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcCBcCkBAIC0yMTA3LDYgKzIxMDgsNyBAQCBIRUFERVJT
ICs9IFwKICAgICBwYWdlL0RPTVNlbGVjdGlvbi5oIFwKICAgICBwYWdlL0RPTVRpbWVyLmggXAog
ICAgIHBhZ2UvRE9NV2luZG93LmggXAorICAgIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmggXAog
ICAgIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBcCiAgICAgcGFnZS9EcmFnU3RhdGUuaCBcCiAgICAg
cGFnZS9FdmVudEhhbmRsZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNzc2NGQxYi4uYmU1MjMy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjIwLDYgKzIyMCw3IEBACiAgICAgICAgICAgICAncGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9Db29yZGluYXRl
cy5oJywKICAgICAgICAgICAgICdwYWdlL0RPTVdpbmRvdy5oJywKKyAgICAgICAgICAgICdwYWdl
L0RPTVdpbmRvd0V4dGVuc2lvbi5oJywKICAgICAgICAgICAgICdwYWdlL0RyYWdBY3Rpb25zLmgn
LAogICAgICAgICAgICAgJ3BhZ2UvRHJhZ0NsaWVudC5oJywKICAgICAgICAgICAgICdwYWdlL0Ry
YWdDb250cm9sbGVyLmgnLApAQCAtMjkxMSw2ICsyOTEyLDggQEAKICAgICAgICAgICAgICdwYWdl
L0RPTVRpbWVyLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9ET01UaW1lci5oJywKICAgICAgICAg
ICAgICdwYWdlL0RPTVdpbmRvdy5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93RXh0
ZW5zaW9uLmNwcCcsCisgICAgICAgICAgICAncGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaCcsCiAg
ICAgICAgICAgICAncGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5jcHAnLAogICAgICAgICAgICAgJ3Bh
Z2UvRE9NV2luZG93UHJvcGVydHkuaCcsCiAgICAgICAgICAgICAncGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCA1ZTFkZGZhLi4wZjMyMTFmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMjYxMTAsNiArMjYxMTAsMTQgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxET01XaW5kb3dFeHRlbnNp
b24uY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwYWdlXERPTVdpbmRvd0V4dGVuc2lvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXERPTVdpbmRvd1Byb3BlcnR5LmNwcCIKIAkJCQk+
CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZjIwMDhjMy4uMWVmNTYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUyMCw2ICsxNTIwLDcg
QEAKIAkJNTE3NDFEMTEwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc0MUQwRDBCMDcyNTlBMDBF
RDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTc0MUQxMjBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NDFE
MEUwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmNwcCAqLzsgfTsKIAkJNTE3NEUyMEEx
MEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzRFMjA4MTBBMUY0NEYwMEY5NUU2RiAvKiBQb3BT
dGF0ZUV2ZW50LmggKi87IH07CisJCTUxN0ZCQTFFMTUxQUIxN0MwMEI1Nzk1OSAvKiBET01XaW5k
b3dFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE3RkJBMTcxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5jcHAg
Ki87IH07CiAJCTUxODlGMDFEMTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4OUYwMUIx
MEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5jcHAgKi87IH07CiAJCTUxODlGMDFF
MTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODlGMDFDMTBCMzdCRDkwMEYzQzczOSAvKiBK
U1BvcFN0YXRlRXZlbnQuaCAqLzsgfTsKIAkJNTE4OUYwREUxMEI0NkIwRTAwRjNDNzM5IC8qIFBv
cFN0YXRlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE4OUYwREQxMEI0NkIwRTAwRjNDNzM5IC8qIFBvcFN0YXRlRXZlbnQuY3BwICovOyB9
OwpAQCAtMTU1OCw2ICsxNTU5LDcgQEAKIAkJNTFFM0Y5QzcwREEwNTlEQzAwMjUwOTExIC8qIFN0
b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFFM0Y5QzUwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuY3BwICovOyB9OwogCQk1MUUzRjlE
NjBEQTA1RTFEMDAyNTA5MTEgLyogSlNTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTNGOUQ0MERBMDVFMUQwMDI1MDkxMSAvKiBKU1N0
b3JhZ2UuY3BwICovOyB9OwogCQk1MUVDOTI2NTBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21T
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUM5MjVEMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNR
TFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwICovOyB9OworCQk1MUZBMkQ3ODE1MjEzMkIzMDBD
MUJBMEIgLyogRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdGQkExODE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93
RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTFGQjU1MDQxMTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQjU1MDIxMTNFM0U5MTAw
ODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5oICovOyB9OwogCQk1MUZCNTUwNTExM0UzRTkxMDA4MjEx
NzYgLyogSlNDbG9zZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRkI1NTAzMTEzRTNFOTEwMDgyMTE3NiAvKiBKU0Nsb3NlRXZlbnQuY3Bw
ICovOyB9OwogCQk1MjFENDZGNjExQUVDOTgxMDA1MTQ2MTMgLyogS2lsbFJpbmdNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjFENDZGNTExQUVD
OTgxMDA1MTQ2MTMgLyogS2lsbFJpbmdNYWMubW0gKi87IH07CkBAIC04NDY4LDYgKzg0NzAsOCBA
QAogCQk1MTc0MUQwRTBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpc3RvcnlJdGVtLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3NEUyMDgxMEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRl
RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9wU3RhdGVFdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTc0RTIwQjEwQTFGNDlBMDBGOTVFNkYg
LyogUG9wU3RhdGVFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9wU3RhdGVFdmVu
dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0ZCQTE3MTUxQUE3MUIwMEI1
Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTE3RkJBMTgxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4OUYwMUIxMEIzN0JEOTAwRjNDNzM5IC8q
IEpTUG9wU3RhdGVFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1BvcFN0YXRlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg5
RjAxQzEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9wU3RhdGVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTg5RjBERDEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3BTdGF0ZUV2ZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjU4LDYgKzE1MjYyLDggQEAKIAkJCQkx
NDAzQjk5NjA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmNwcCAqLywKIAkJCQkxNDAzQjk5
NTA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmggKi8sCiAJCQkJMTQwM0I5MEMwOUVCMTI0
NTAwNzk3QzdGIC8qIERPTVdpbmRvdy5pZGwgKi8sCisJCQkJNTE3RkJBMTcxNTFBQTcxQjAwQjU3
OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8sCisJCQkJNTE3RkJBMTgxNTFBQTcxQjAw
QjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oICovLAogCQkJCTk3RDJBRDAxMTRCODIzQTYw
MDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5jcHAgKi8sCiAJCQkJOTdEMkFEMDIxNEI4MjNB
NjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmggKi8sCiAJCQkJQTcxODc2MEQwQjJBMTIw
MTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggKi8sCkBAIC0yNDY1Miw2ICsyNDY1OCw3IEBACiAJ
CQkJMUFGODlBNDIxNTE4RkRFQTAwRTU0N0I1IC8qIFRpbGVkQmFja2luZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkI3OEFEMkUxNTFCRjVFNjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTcxRTYyM0QxMTUxRjcyQTYwMDM2RTJGNCAvKiBTVkdBbmltYXRlZElu
dGVnZXJPcHRpb25hbEludGVnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRkEyRDc4MTUyMTMy
QjMwMEMxQkEwQiAvKiBET01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc2
NDEsNiArMjc2NDgsNyBAQAogCQkJCUJDRTkzRjUzMTUxN0UwQjAwMDhDQ0Y3NCAvKiBSZW5kZXJN
dWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4NUYyM0YxNTE5
MTg3MzAwQkMxN0JFIC8qIFJlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3MUU2MjNEMDE1MUY3MkE2MDAzNkUyRjQgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9u
YWxJbnRlZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxN0ZCQTFFMTUxQUIxN0MwMEI1Nzk1
OSAvKiBET01XaW5kb3dFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGU5YmIwMjcuLmY2YjQ1ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC02Myw2ICs2Myw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsK
ICAgICBjbGFzcyBDYWNoZWRGcmFtZTsKICAgICBjbGFzcyBDb2xvcjsKKyAgICBjbGFzcyBET01X
aW5kb3dFeHRlbnNpb247CiAgICAgY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogICAgIGNsYXNzIERv
Y3VtZW50TG9hZGVyOwogICAgIGNsYXNzIEVsZW1lbnQ7CkBAIC0zMzEsNiArMzMyLDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFdpbGxPcGVuU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSopIHsgfQorCisgICAgICAg
IHZpcnR1YWwgdm9pZCBleHRlbnNpb25JbnN0YWxsZWRPbkdsb2JhbE9iamVjdChET01XaW5kb3dF
eHRlbnNpb24qKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGV4dGVuc2lvbkRpc2Nvbm5lY3Rl
ZEZyb21HbG9iYWxPYmplY3QoRE9NV2luZG93RXh0ZW5zaW9uKikgeyB9CisgICAgICAgIHZpcnR1
YWwgdm9pZCBleHRlbnNpb25SZWNvbm5lY3RlZFRvR2xvYmFsT2JqZWN0KERPTVdpbmRvd0V4dGVu
c2lvbiopIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGVzdHJveUdsb2JhbE9iamVjdEZv
ckV4dGVuc2lvbihET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggOWQ0YzNiNC4uNzY0
ZWE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2lu
Y2x1ZGUgIkRPTVRpbWVyLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAi
RE9NVVJMLmgiCisjaW5jbHVkZSAiRE9NV2luZG93RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiRE9N
V2luZG93Tm90aWZpY2F0aW9ucy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2VDYWxsYmFjay5oIgpAQCAtNDc3LDYgKzQ3OCw4IEBAIHZvaWQgRE9NV2luZG93Ojp3
aWxsRGV0YWNoUGFnZSgpCiAgICAgSGFzaFNldDxET01XaW5kb3dQcm9wZXJ0eSo+OjppdGVyYXRv
ciBzdG9wID0gbV9wcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoSGFzaFNldDxET01XaW5kb3dQ
cm9wZXJ0eSo+OjppdGVyYXRvciBpdCA9IG1fcHJvcGVydGllcy5iZWdpbigpOyBpdCAhPSBzdG9w
OyArK2l0KQogICAgICAgICAoKml0KS0+d2lsbERldGFjaFBhZ2UoKTsKKyAgICAKKyAgICBtX3dp
bmRvd0V4dGVuc2lvbnMuY2xlYXIoKTsKIH0KIAogdm9pZCBET01XaW5kb3c6OnJlZ2lzdGVyUHJv
cGVydHkoRE9NV2luZG93UHJvcGVydHkqIHByb3BlcnR5KQpAQCAtNDg5LDYgKzQ5MiwyMSBAQCB2
b2lkIERPTVdpbmRvdzo6dW5yZWdpc3RlclByb3BlcnR5KERPTVdpbmRvd1Byb3BlcnR5KiBwcm9w
ZXJ0eSkKICAgICBtX3Byb3BlcnRpZXMucmVtb3ZlKHByb3BlcnR5KTsKIH0KIAorRE9NV2luZG93
RXh0ZW5zaW9uKiBET01XaW5kb3c6OmV4dGVuc2lvbkZvcldvcmxkKERPTVdyYXBwZXJXb3JsZCog
d29ybGQpCit7CisgICAgcmV0dXJuIG1fd2luZG93RXh0ZW5zaW9ucy5nZXQod29ybGQpLmdldCgp
OworfQorCit2b2lkIERPTVdpbmRvdzo6c2V0RXh0ZW5zaW9uRm9yV29ybGQoRE9NV2luZG93RXh0
ZW5zaW9uKiBleHRlbnNpb24sIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCit7CisgICAgQVNTRVJU
KHdvcmxkKTsKKyAgICAKKyAgICBpZiAoZXh0ZW5zaW9uKQorICAgICAgICBtX3dpbmRvd0V4dGVu
c2lvbnMuc2V0KHdvcmxkLCBleHRlbnNpb24pOworICAgIGVsc2UKKyAgICAgICAgbV93aW5kb3dF
eHRlbnNpb25zLnJlbW92ZSh3b3JsZCk7Cit9CisKIHZvaWQgRE9NV2luZG93OjpjbGVhcigpCiB7
CiAgICAgLy8gVGhlIG1haW4gZnJhbWUgd2lsbCBhbHdheXMgdHJ5IHRvIGNsZWFyIGl0cyBET01X
aW5kb3cgd2hlbiBhIG5ldyBsb2FkIGlzIGNvbW1pdHRlZCwgZXZlbiBpZiB0aGF0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaAppbmRleCA3MDE0ZDk2Li4zYmM0NWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgKQEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERP
TUFwcGxpY2F0aW9uQ2FjaGU7CiAgICAgY2xhc3MgRE9NU2VsZWN0aW9uOwogICAgIGNsYXNzIERP
TVVSTDsKKyAgICBjbGFzcyBET01XaW5kb3dFeHRlbnNpb247CiAgICAgY2xhc3MgRE9NV2luZG93
UHJvcGVydHk7CisgICAgY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogICAgIGNsYXNzIERhdGFiYXNl
OwogICAgIGNsYXNzIERhdGFiYXNlQ2FsbGJhY2s7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CkBAIC05
Myw2ICs5NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCByZWdpc3RlclBy
b3BlcnR5KERPTVdpbmRvd1Byb3BlcnR5Kik7CiAgICAgICAgIHZvaWQgdW5yZWdpc3RlclByb3Bl
cnR5KERPTVdpbmRvd1Byb3BlcnR5Kik7CiAKKyAgICAgICAgRE9NV2luZG93RXh0ZW5zaW9uKiBl
eHRlbnNpb25Gb3JXb3JsZChET01XcmFwcGVyV29ybGQqKTsKKyAgICAgICAgdm9pZCBzZXRFeHRl
bnNpb25Gb3JXb3JsZChET01XaW5kb3dFeHRlbnNpb24qLCBET01XcmFwcGVyV29ybGQqKTsKKwog
ICAgICAgICB2b2lkIGNsZWFyKCk7CiAgICAgICAgIHZvaWQgc3VzcGVuZEZvclBhZ2VDYWNoZSgp
OwogICAgICAgICB2b2lkIHJlc3VtZUZyb21QYWdlQ2FjaGUoKTsKQEAgLTQxOCw2ICs0MjMsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgSGFzaFNldDxET01XaW5kb3dQcm9wZXJ0
eSo+IG1fcHJvcGVydGllczsKIAorICAgICAgICB0eXBlZGVmIEhhc2hNYXA8RE9NV3JhcHBlcldv
cmxkKiwgUmVmUHRyPERPTVdpbmRvd0V4dGVuc2lvbj4gPiBXaW5kb3dFeHRlbnNpb25NYXA7Cisg
ICAgICAgIFdpbmRvd0V4dGVuc2lvbk1hcCBtX3dpbmRvd0V4dGVuc2lvbnM7CisKICAgICAgICAg
bXV0YWJsZSBSZWZQdHI8U2NyZWVuPiBtX3NjcmVlbjsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8
RE9NU2VsZWN0aW9uPiBtX3NlbGVjdGlvbjsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8SGlzdG9y
eT4gbV9oaXN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dF
eHRlbnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5M2FmZTUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAKQEAgLTAs
MCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01XaW5kb3dFeHRlbnNpb24uaCIKKwor
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitET01XaW5kb3dFeHRlbnNpb246OkRPTVdpbmRvd0V4dGVuc2lvbihG
cmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCisgICAgOiBET01XaW5kb3dQcm9w
ZXJ0eShmcmFtZSkKKyAgICAsIG1fd29ybGQod29ybGQpCisgICAgLCBtX3dhc0RldGFjaGVkKGZh
bHNlKQoreworICAgIEFTU0VSVCh0aGlzLT5mcmFtZSgpKTsKKyAgICBBU1NFUlQobV93b3JsZCk7
CisgICAgCisgICAgZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGZyYW1lLT5kb21XaW5kb3co
KS0+c2V0RXh0ZW5zaW9uRm9yV29ybGQodGhpcywgbV93b3JsZC5nZXQoKSk7Cit9CisKK0RPTVdp
bmRvd0V4dGVuc2lvbjo6fkRPTVdpbmRvd0V4dGVuc2lvbigpCit7Cit9CisKK3ZvaWQgRE9NV2lu
ZG93RXh0ZW5zaW9uOjpkaXNjb25uZWN0RnJhbWUoKQoreworICAgIC8vIERPTVdpbmRvd1Byb3Bl
cnRpZXMgYXJlIGRpc2Nvbm5lY3RlZCBmcm9tIGZyYW1lcyBhZnRlciB0aGV5IHdlcmUgdG9sZCB0
aGV5J2xsCisgICAgLy8gYmUgZGV0YWNoaW5nIGZyb20gdGhlIHBhZ2UuCisgICAgLy8gV2Ugb25s
eSB3YW50IHRvIHN0YXkgcHJlcGFyZWQgZm9yIGNsaWVudCBjYWxsYmFja3MgaWYgd2UndmUgbmV2
ZXIgYmVlbiBkZXRhY2hlZC4KKyAgICBpZiAoIW1fd2FzRGV0YWNoZWQpIHsKKyAgICAgICAgRnJh
bWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKS0+ZXh0ZW5zaW9uRGlzY29ubmVjdGVkRnJvbUdsb2JhbE9iamVjdCh0aGlzKTsKKworICAg
ICAgICBtX2Rpc2Nvbm5lY3RlZEZyYW1lID0gZnJhbWU7CisgICAgfQorCisgICAgRE9NV2luZG93
UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFtZSgpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lv
bjo6cmVjb25uZWN0RnJhbWUoRnJhbWUqIGZyYW1lKQoreworICAgIC8vIERPTVdpbmRvd1Byb3Bl
cnRpZXMgc2hvdWxkIG5ldmVyIHJlY29ubmVjdCB0byBhIGZyYW1lIGFmdGVyIHRoZXkndmUgYmVl
biBkZXRhY2hlZCBmcm9tIHRoZSBwYWdlLgorICAgIEFTU0VSVCghbV93YXNEZXRhY2hlZCk7Cisg
ICAgQVNTRVJUKG1fZGlzY29ubmVjdGVkRnJhbWUgPT0gZnJhbWUpOworICAgIAorICAgIERPTVdp
bmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZShmcmFtZSk7CisgICAgbV9kaXNjb25uZWN0ZWRG
cmFtZSA9IDA7CisKKyAgICB0aGlzLT5mcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCktPmV4dGVu
c2lvblJlY29ubmVjdGVkVG9HbG9iYWxPYmplY3QodGhpcyk7Cit9CisKK3ZvaWQgRE9NV2luZG93
RXh0ZW5zaW9uOjp3aWxsRGV0YWNoUGFnZSgpCit7CisgICAgLy8gd2lsbERldGFjaFBhZ2UgbWln
aHQgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gcmVhY3Qgb25j
ZS4KKyAgICBpZiAobV93YXNEZXRhY2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWUq
IGZyYW1lID0gbV9kaXNjb25uZWN0ZWRGcmFtZS5nZXQoKTsKKyAgICBpZiAoIWZyYW1lKQorICAg
ICAgICBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgQVNTRVJUKGZyYW1lKTsKKworICAgIGZy
YW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZERlc3Ryb3lHbG9iYWxPYmplY3RGb3JFeHRlbnNp
b24odGhpcyk7CisgICAgCisgICAgbV9kaXNjb25uZWN0ZWRGcmFtZSA9IDA7CisgICAgRE9NV2lu
ZG93UHJvcGVydHk6OndpbGxEZXRhY2hQYWdlKCk7CisgICAgCisgICAgbV93YXNEZXRhY2hlZCA9
IHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvd0V4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2
NmNmM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4
dGVuc2lvbi5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIERPTVdpbmRvd0V4dGVuc2lvbl9oCisjZGVmaW5lIERP
TVdpbmRvd0V4dGVuc2lvbl9oCisKKyNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9N
RXh0ZW5zaW9uOworY2xhc3MgRE9NV2luZG93OworY2xhc3MgRE9NV3JhcHBlcldvcmxkOworY2xh
c3MgRnJhbWU7CisKK2NsYXNzIERPTVdpbmRvd0V4dGVuc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PERPTVdpbmRvd0V4dGVuc2lvbj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NV2luZG93RXh0ZW5zaW9uPiBjcmVhdGUoRnJhbWUq
IGZyYW1lLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBET01XaW5kb3dFeHRlbnNpb24oZnJhbWUsIHdvcmxkKSk7CisgICAgfQorCisg
ICAgfkRPTVdpbmRvd0V4dGVuc2lvbigpOworCisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RG
cmFtZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWNvbm5lY3RGcmFtZShGcmFtZSop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGV0YWNoUGFnZSgpIE9WRVJSSURFOwor
CisgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCgpIGNvbnN0IHsgcmV0dXJuIG1fd29ybGQuZ2V0
KCk7IH0KKworcHJpdmF0ZToKKyAgICBET01XaW5kb3dFeHRlbnNpb24oRnJhbWUqLCBET01XcmFw
cGVyV29ybGQqKTsKKworICAgIERPTVdpbmRvdyogbV9kb21XaW5kb3c7CisgICAgUmVmUHRyPERP
TVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKKyAgICBSZWZQdHI8RnJhbWU+IG1fZGlzY29ubmVjdGVk
RnJhbWU7CisgICAgYm9vbCBtX3dhc0RldGFjaGVkOworfTsKKworfQorCisjZW5kaWYgLy8gRE9N
V2luZG93RXh0ZW5zaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggZDVjMTc2ZC4uNTJkYTY1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAg
ICAgICAgIDIwMDAgU2ltb24gSGF1c21hbm4gPGhhdXNtYW5uQGtkZS5vcmc+CiAgKiAgICAgICAg
ICAgICAgICAgICAgIDIwMDAgU3RlZmFuIFNjaGltYW5za2kgPDFTdGVpbkBnbXguZGU+CiAgKiAg
ICAgICAgICAgICAgICAgICAgIDIwMDEgR2VvcmdlIFN0YWlrb3MgPHN0YWlrb3NAa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA1IEFsZXhl
eSBQcm9za3VyeWFrb3YgPGFwQG55cG9wLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdodCAo
QykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgpAQCAtMzYsMTAgKzM2LDExIEBA
CiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJET01XaW5kb3dFeHRlbnNpb24uaCIKICNpbmNsdWRlICJEb2N1bWVu
dFR5cGUuaCIKICNpbmNsdWRlICJFZGl0aW5nVGV4dC5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVu
dC5oIgpAQCAtNTg2LDggKzU4NywxNCBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0c0Zv
cldvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFVzZXJTY3JpcHRWZQogICAgICAg
ICBpZiAoc2NyaXB0LT5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5ICYm
IG93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKHNj
cmlwdC0+aW5qZWN0aW9uVGltZSgpID09IGluamVjdGlvblRpbWUgJiYgVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoZG9jLT51cmwoKSwgc2NyaXB0LT53aGl0ZWxpc3QoKSwg
c2NyaXB0LT5ibGFja2xpc3QoKSkpCisgICAgICAgIGlmIChzY3JpcHQtPmluamVjdGlvblRpbWUo
KSA9PSBpbmplY3Rpb25UaW1lICYmIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRl
cm5zKGRvYy0+dXJsKCksIHNjcmlwdC0+d2hpdGVsaXN0KCksIHNjcmlwdC0+YmxhY2tsaXN0KCkp
KSB7CisgICAgICAgICAgICBpZiAoIWRvbVdpbmRvdygpLT5leHRlbnNpb25Gb3JXb3JsZCh3b3Js
ZCkpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8RE9NV2luZG93RXh0ZW5zaW9uPiBleHRlbnNp
b24gPSBET01XaW5kb3dFeHRlbnNpb246OmNyZWF0ZSh0aGlzLCB3b3JsZCk7CisgICAgICAgICAg
ICAgICAgbG9hZGVyKCktPmNsaWVudCgpLT5leHRlbnNpb25JbnN0YWxsZWRPbkdsb2JhbE9iamVj
dChleHRlbnNpb24uZ2V0KCkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBtX3Njcmlw
dC5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQtPnNvdXJjZSgpLCBzY3Jp
cHQtPnVybCgpKSwgd29ybGQpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
ZTVkNzg5YS4uYTJlY2IxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTAzLTI5
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTAxMjAxNTU+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODI2NjQKKyAgICAgICAgTmVlZCBET01XaW5kb3cgbWVjaGFuaXNtIHRvIHN1cHBsZW1lbnQg
VXNlclNjcmlwdHMgZm9yIHBhZ2UgY2FjaGUgbm90aWZpY2F0aW9ucworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJLaXQyIG9iamVjdCB0eXBl
ICJXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiI6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
QmFzZS5oOgorICAgICAgICAqIFNoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwOgorICAgICAgICAq
IFNoYXJlZC9BUElDbGllbnRUcmFpdHMuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0
Lmg6CisKKyAgICAgICAgSW1wbGVtZW50IGEgbWluaW1hbCBBUEkgZm9yIHRoYXQgdHlwZToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bkdldFR5cGVJRCk6CisgICAgICAgIChXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldEZyYW1l
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKworICAgICAgICBXcmFwcGVyIGxheWVyIGJldHdlZW4gdGhlIFdlYkNv
cmUgb2JqZWN0IGFuZCB0aGUgV0sgQVBJIG9iamVjdDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OmV4dGVuc2lvbldyYXBwZXJNYXApOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6Z2V0T3JDcmVhdGVXcmFwcGVyKToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OkluamVj
dGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVET01XaW5kb3dFeHRlbnNpb246On5JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpm
cmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVET01XaW5kb3dFeHRlbnNpb246OnR5cGUpOgorCisgICAgICAgIExpc3RlbiBmb3IgY2Fs
bGJhY2tzIGZyb20gdGhlIFdlYkNvcmUgbGF5ZXIgdG8gcGlwZSB0aGVtIHRvIHRoZSBJbmplY3Rl
ZEJ1bmRsZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmV4
dGVuc2lvbkluc3RhbGxlZE9uR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmV4dGVuc2lvbkRpc2Nvbm5lY3RlZEZyb21HbG9iYWxPYmplY3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZXh0ZW5zaW9uUmVjb25uZWN0
ZWRUb0dsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaWREZXN0cm95R2xvYmFsT2JqZWN0Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKKyAgICAgICAgVGFr
ZSB0aG9zZSBjYWxsYmFja3MgZnJvbSB0aGUgV2ViQ29yZSBsYXllciBhbmQgcGlwZSB0aGVtIHRv
IHRoZSBidW5kbGUgY2xpZW50IEFQSToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6
OmRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZTo6ZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNp
b25Ub0ZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmRpZERlc3Ryb3lE
T01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVD
bGllbnQ6OmRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21G
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVDbGllbnQ6OmRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKwogMjAxMi0w
My0yOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExMjU1My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS0Jhc2UuaAppbmRleCBjODY1NmU0Li41NTcyM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLQmFzZS5oCkBAIC0xMTYsNiArMTE2LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tCdW5kbGUqIFdLQnVuZGxlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tC
dW5kbGVCYWNrRm9yd2FyZExpc3QqIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0UmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKiBXS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1
bmRsZURPTUNTU1N0eWxlRGVjbGFyYXRpb24qIFdLQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvblJl
ZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
KiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLQnVuZGxlRnJhbWUqIFdLQnVuZGxlRnJhbWVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS0J1bmRsZUhpdFRlc3RSZXN1bHQqIFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZjsK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlSW5zcGVjdG9yKiBXS0J1bmRsZUlu
c3BlY3RvclJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRU
cmFpdHMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKaW5k
ZXggNGY1ZDhmYS4uMWEwZTVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SUNsaWVudFRyYWl0cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRy
YWl0cy5jcHAKQEAgLTI2LDEwICsyNiwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkFQSUNsaWVudFRyYWl0cy5oIgogCisjaW5jbHVkZSAiV0tCdW5kbGUuaCIKICNpbmNsdWRl
ICJXS0J1bmRsZVBhZ2UuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NvbnN0IHNpemVfdCBB
UElDbGllbnRUcmFpdHM8V0tCdW5kbGVDbGllbnQ+OjppbnRlcmZhY2VTaXplc0J5VmVyc2lvbltd
ID0geworICAgIG9mZnNldG9mKFdLQnVuZGxlQ2xpZW50LCBkaWRJbnN0YWxsRE9NV2luZG93RXh0
ZW5zaW9uKSwKKyAgICBzaXplb2YoV0tCdW5kbGVDbGllbnQpCit9OworCiBjb25zdCBzaXplX3Qg
QVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudD46OmludGVyZmFjZVNpemVz
QnlWZXJzaW9uW10gPSB7CiAgICAgb2Zmc2V0b2YoV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LCBk
aWRMYXlvdXRGb3JGcmFtZSksCiAgICAgc2l6ZW9mKFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaAppbmRleCAxNmY4NmEwLi4wNDhk
NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjaWZuZGVmIEFQSUNsaWVudFRyYWl0c19oCiAjZGVmaW5lIEFQSUNsaWVudFRyYWl0
c19oCiAKKyNpbmNsdWRlICJXS0J1bmRsZS5oIgogI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgog
I2luY2x1ZGUgIldLUGFnZS5oIgogCkBAIC0zNiw2ICszNywxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2xpZW50SW50ZXJmYWNlPiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzIHsKIH07CiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2xpZW50SW50ZXJmYWNlPiBjb25zdCBzaXplX3QgQVBJQ2xpZW50VHJhaXRz
PENsaWVudEludGVyZmFjZT46OmludGVyZmFjZVNpemVzQnlWZXJzaW9uW10gPSB7IHNpemVvZihD
bGllbnRJbnRlcmZhY2UpIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxX
S0J1bmRsZUNsaWVudD4geworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNC
eVZlcnNpb25bMl07Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBUElDbGllbnRUcmFpdHM8V0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50PiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbnRlcmZh
Y2VTaXplc0J5VmVyc2lvblsyXTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXgg
ZDZjYzAzMC4uNmVmMTAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTA2LDYg
KzEwNiw3IEBAIHB1YmxpYzoKICAgICAgICAgVHlwZUJ1bmRsZSwKICAgICAgICAgVHlwZUJ1bmRs
ZUJhY2tGb3J3YXJkTGlzdCwKICAgICAgICAgVHlwZUJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0s
CisgICAgICAgIFR5cGVCdW5kbGVET01XaW5kb3dFeHRlbnNpb24sCiAgICAgICAgIFR5cGVCdW5k
bGVGcmFtZSwKICAgICAgICAgVHlwZUJ1bmRsZUhpdFRlc3RSZXN1bHQsCiAgICAgICAgIFR5cGVC
dW5kbGVJbnNwZWN0b3IsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMTc5Yzk2MS4uNWYzM2JiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDM0LDYgKzQzNCw5
IEBACiAJCTUxRDEzMDU1MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDUx
MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLzsgfTsKIAkJNTFE
MTMwNTYxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDUyMTM4MkVBQzAwMDM1
MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmggKi87IH07CiAJCTUxRDEzMDU4MTM4MkYxMDUw
MDM1MUVERCAvKiBXZWJQcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1NzEzODJGMTA1MDAzNTFFREQgLyogV2ViUHJv
Y2Vzc1Byb3h5TWFjLm1tICovOyB9OworCQk1MUVGQzFDRjE1MjRFNjI1MDBDOUE5MzggLyogV0tC
dW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRkEyRDU0MTUyMTExODYwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTUxRkEyRDc0MTUyMTJERjEwMEMxQkEwQiAvKiBJbmplY3RlZEJ1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUZBMkQ1QzE1MjExQTUwMDBDMUJBMEIgLyogSW5qZWN0ZWRCdW5kbGVET01XaW5k
b3dFeHRlbnNpb24uY3BwICovOyB9OworCQk1MUZBMkQ3NzE1MjEyRTI2MDBDMUJBMEIgLyogV0tC
dW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFGQTJENzUxNTIxMkUxRTAwQzFCQTBCIC8qIFdLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uLmNwcCAqLzsgfTsKIAkJNTI3MkIyOEExNDA2OTg1RDAwOTZBNUQwIC8q
IFN0YXRpc3RpY3NEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyNzJCMjg4MTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAg
Ki87IH07CiAJCTUyNzJCMjhCMTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3MkIyODkxNDA2
OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggKi87IH07CiAJCTVENTE4NDU1MTNCQ0Y5
Q0MwMEM3RkY0QSAvKiBBUElDbGllbnRUcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1MTg0NTMxM0JDRjlDQzAwQzdGRjRBIC8qIEFQSUNs
aWVudFRyYWl0cy5jcHAgKi87IH07CkBAIC0xNDU2LDYgKzE0NTksMTAgQEAKIAkJNTFEMTMwNTEx
MzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDUyMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVt
UmVzcG9uc2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY0l0ZW1S
ZXNwb25zZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTcxMzgy
RjEwNTAwMzUxRUREIC8qIFdlYlByb2Nlc3NQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFGQTJENTQxNTIxMTE4NjAwQzFCQTBCIC8qIFdLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
RkEyRDVBMTUyMTFBMUUwMEMxQkEwQiAvKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUZBMkQ1QzE1
MjExQTUwMDBDMUJBMEIgLyogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVET01XaW5k
b3dFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUZBMkQ3NTE1
MjEyRTFFMDBDMUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjcyQjI4ODE0MDY5ODVEMDA5NkE1
RDAgLyogU3RhdGlzdGljc0RhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3RhdGlzdGljc0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MjcyQjI4OTE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlzdGljc0RhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUQ1MTg0NTMxM0JDRjlDQzAwQzdGRjRBIC8qIEFQSUNsaWVudFRyYWl0cy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElDbGllbnRUcmFpdHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzIyMiw2ICszMjI5LDggQEAKIAkJ
CQk5MzVFRUI5MjEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtLmggKi8sCiAJCQkJQkNFRTdEQzQxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVjdGVkQnVu
ZGxlQ2xpZW50LmNwcCAqLywKIAkJCQlCQ0VFN0RDMzEyOEI2NDVEMDA5ODI3REEgLyogSW5qZWN0
ZWRCdW5kbGVDbGllbnQuaCAqLywKKwkJCQk1MUZBMkQ1QzE1MjExQTUwMDBDMUJBMEIgLyogSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwICovLAorCQkJCTUxRkEyRDVBMTUyMTFB
MUUwMEMxQkEwQiAvKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oICovLAogCQkJ
CUJDNDk4NjE3MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQu
Y3BwICovLAogCQkJCUJDNDk4NjE2MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQuaCAqLywKIAkJCQlCQzgxNDdENDEyRjY2RDMxMDA3QjJDMzIgLyogSW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCAqLywKQEAgLTMyNzUsNiArMzI4NCw4IEBACiAJ
CQkJOTM1RUVCOTYxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0Lmgg
Ki8sCiAJCQkJOTM1RUVCOTcxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbS5jcHAgKi8sCiAJCQkJOTM1RUVCOTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxl
QmFja0ZvcndhcmRMaXN0SXRlbS5oICovLAorCQkJCTUxRkEyRDc1MTUyMTJFMUUwMEMxQkEwQiAv
KiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8sCisJCQkJNTFGQTJENTQxNTIxMTE4
NjAwQzFCQTBCIC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggKi8sCiAJCQkJQkNEMjVG
MTYxMUQ2QkRFMTAwMTY5QjBFIC8qIFdLQnVuZGxlRnJhbWUuY3BwICovLAogCQkJCUJDRDI1RjE1
MTFENkJERTEwMDE2OUIwRSAvKiBXS0J1bmRsZUZyYW1lLmggKi8sCiAJCQkJQkNGMDQ5RTQxMUZF
MjBGNjAwRjg2QTU4IC8qIFdLQnVuZGxlRnJhbWVQcml2YXRlLmggKi8sCkBAIC00MTc4LDYgKzQx
ODksNyBAQAogCQkJCTM3NjA4ODIzMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0MDQxNTBDMzUwNjAwRTUyQ0U5IC8qIFdlYlJlbmRl
ckxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzk0ODQwOTE1MEM0Qjk3MDBFNTJDRTkgLyog
V0tSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFFRkMxQ0YxNTI0RTYyNTAwQzlB
OTM4IC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQ5
MjEsNiArNDkzMyw4IEBACiAJCQkJMzc2MDg4MjIxNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVy
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3OTQ4NDAzMTUwQzM1MDYwMEU1MkNFOSAv
KiBXZWJSZW5kZXJMYXllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzk0ODQwODE1MEM0Qjk3
MDBFNTJDRTkgLyogV0tSZW5kZXJMYXllci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUZBMkQ3
NDE1MjEyREYxMDBDMUJBMEIgLyogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTFGQTJENzcxNTIxMkUyNjAwQzFCQTBCIC8qIFdLQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5oCmlu
ZGV4IDllMjczYmEuLjhkMjliMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDE3ICsz
OSwzMCBAQCB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVdpbGxEZXN0cm95UGFnZUNhbGxiYWNrKShX
S0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZQogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVE
aWRJbml0aWFsaXplUGFnZUdyb3VwQ2FsbGJhY2spKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5k
bGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVk
ZWYgdm9pZCAoKldLQnVuZGxlRGlkUmVjZWl2ZU1lc3NhZ2VDYWxsYmFjaykoV0tCdW5kbGVSZWYg
YnVuZGxlLCBXS1N0cmluZ1JlZiBuYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwogCit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZURpZEluc3RhbGxET01X
aW5kb3dFeHRlbnNpb25DYWxsYmFjaykoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZURPTVdp
bmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlw
ZWRlZiB2b2lkICgqV0tCdW5kbGVEaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUZy
YW1lQ2FsbGJhY2spKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNp
b25SZWYgZXh0ZW5zaW9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAo
KldLQnVuZGxlRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9GcmFtZUNhbGxiYWNrKShX
S0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lv
biwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZURpZERl
c3Ryb3lET01XaW5kb3dFeHRlbnNpb25DYWxsYmFjaykoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOworCiBzdHJ1Y3QgV0tCdW5kbGVDbGllbnQgewogICAgIGludCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsK
ICAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsaWVudEluZm87CisgICAgCisgICAgLy8gVmVyc2lvbiAwCiAgICAg
V0tCdW5kbGVEaWRDcmVhdGVQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWRDcmVhdGVQYWdlOwogICAgIFdLQnVuZGxlV2lsbERlc3Ryb3lQYWdlQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbERlc3Ryb3lQYWdl
OwogICAgIFdLQnVuZGxlRGlkSW5pdGlhbGl6ZVBhZ2VHcm91cENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cDsKICAgICBXS0J1bmRsZURp
ZFJlY2VpdmVNZXNzYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZFJlY2VpdmVNZXNzYWdlOworICAgIAorICAgIC8vIFZlcnNpb24gMQorICAgIFdLQnVuZGxl
RGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbjsKKyAgICBXS0J1bmRsZURpZERpc2Nvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Gcm9tRnJhbWVDYWxsYmFjayAgICAgICAgICAgIGRpZERpc2Nv
bm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tRnJhbWU7CisgICAgV0tCdW5kbGVEaWRSZWNvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICBkaWRSZWNv
bm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lOworICAgIFdLQnVuZGxlRGlkRGVzdHJveURP
TVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBkaWREZXN0cm95
RE9NV2luZG93RXh0ZW5zaW9uOwogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlQ2xpZW50IFdL
QnVuZGxlQ2xpZW50OwogCi1lbnVtIHsga1dLQnVuZGxlQ2xpZW50Q3VycmVudFZlcnNpb24gPSAw
IH07CitlbnVtIHsga1dLQnVuZGxlQ2xpZW50Q3VycmVudFZlcnNpb24gPSAxIH07CiAKIFdLX0VY
UE9SVCBXS1R5cGVJRCBXS0J1bmRsZUdldFR5cGVJRCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUFQSUNhc3QuaAppbmRleCBkYjMyNzE2Li5lNDBjODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVBUElDYXN0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBJ
bmplY3RlZEJ1bmRsZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0OwogY2xh
c3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOworY2xhc3MgSW5qZWN0ZWRCdW5k
bGVET01XaW5kb3dFeHRlbnNpb247CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7
CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb247CiBjbGFzcyBJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU7CkBAIC01OCw2ICs1OSw3IEBAIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5
OwogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJlZiwgSW5q
ZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0UmVmLCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdCkKIFdL
X0FERF9BUElfTUFQUElORyhXS0J1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25SZWYsIFdlYkNvcmU6
OkNTU1N0eWxlRGVjbGFyYXRpb24pCitXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVET01XaW5k
b3dFeHRlbnNpb25SZWYsIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKQogV0tfQURE
X0FQSV9NQVBQSU5HKFdLQnVuZGxlRnJhbWVSZWYsIFdlYkZyYW1lKQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZiwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0
KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0b3Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNjkzNmIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgiCisKKyNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2Fz
dC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0J1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbkdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpBUElUeXBlKTsKK30KKworV0tCdW5kbGVGcmFtZVJlZiBX
S0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldEZyYW1lKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uUmVmIGV4dGVuc2lvbikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGV4dGVuc2lvbikt
PmZyYW1lKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMDBiODQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw0MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb25faAorI2RlZmluZSBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bl9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMK
K2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbkdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJlZiBX
S0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldEZyYW1lKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uUmVmIGV4dGVuc2lvbik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNl
bmRpZiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbl9oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCmluZGV4IDQyZjg2NzQuLjA2MDBjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC00
NTYsNCArNDU2LDI0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZEluc3RhbGxET01XaW5kb3dF
eHRlbnNpb24oSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIGV4dGVuc2lvbikKK3sK
KyAgICBtX2NsaWVudC5kaWRJbnN0YWxsRE9NV2luZG93RXh0ZW5zaW9uKHRoaXMsIGV4dGVuc2lv
bik7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZERpc2Nvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Gcm9tRnJhbWUoSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIGV4dGVuc2lv
bikKK3sKKyAgICBtX2NsaWVudC5kaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUZy
YW1lKHRoaXMsIGV4dGVuc2lvbik7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY29u
bmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUoSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRl
bnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBtX2NsaWVudC5kaWRSZWNvbm5lY3RET01XaW5kb3dF
eHRlbnNpb25Ub0ZyYW1lKHRoaXMsIGV4dGVuc2lvbik7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5k
bGU6OmRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24oSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dF
eHRlbnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBtX2NsaWVudC5kaWREZXN0cm95RE9NV2luZG93
RXh0ZW5zaW9uKHRoaXMsIGV4dGVuc2lvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oCmluZGV4IDNiYzY2MDIuLmI4ODM2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmgKQEAgLTE1Miw2ICsxNTIsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpB
cmd1bWVudERlY29kZXIqKTsKIAorICAgIHZvaWQgZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lv
bihJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiopOworICAgIHZvaWQgZGlkRGlzY29u
bmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZShJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbiopOworICAgIHZvaWQgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9GcmFt
ZShJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiopOworICAgIHZvaWQgZGlkRGVzdHJv
eURPTVdpbmRvd0V4dGVuc2lvbihJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiopOwor
CiAgICAgc3RhdGljIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJl
ZiBleGNlcHRpb24pOwogCiAgICAgc3RhdGljIGJvb2wgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKaW5kZXggZjJlNGYyYi4uMTIzN2Ew
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKQEAgLTYyLDQgKzYyLDM2IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVNZXNzYWdlKEluamVjdGVkQnVu
ZGxlKiBidW5kbGUsIGNvbnN0IFN0cmluCiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2Uo
dG9BUEkoYnVuZGxlKSwgdG9BUEkobWVzc2FnZU5hbWUuaW1wbCgpKSwgdG9BUEkobWVzc2FnZUJv
ZHkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZUNsaWVu
dDo6ZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbihJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBJ
bmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAgIGlmICgh
bV9jbGllbnQudmVyc2lvbiB8fCAhbV9jbGllbnQuZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQuZGlkSW5zdGFsbERPTVdpbmRvd0V4
dGVuc2lvbih0b0FQSShidW5kbGUpLCB0b0FQSShleHRlbnNpb24pLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkRGlzY29ubmVjdERPTVdp
bmRvd0V4dGVuc2lvbkZyb21GcmFtZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBJbmplY3RlZEJ1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAgIGlmICghbV9jbGllbnQu
dmVyc2lvbiB8fCFtX2NsaWVudC5kaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUZy
YW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5kaWREaXNjb25uZWN0RE9NV2lu
ZG93RXh0ZW5zaW9uRnJvbUZyYW1lKHRvQVBJKGJ1bmRsZSksIHRvQVBJKGV4dGVuc2lvbiksIG1f
Y2xpZW50LmNsaWVudEluZm8pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRS
ZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lKEluamVjdGVkQnVuZGxlKiBidW5kbGUs
IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgaWYg
KCFtX2NsaWVudC52ZXJzaW9uIHx8IW1fY2xpZW50LmRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVu
c2lvblRvRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LmRpZFJlY29ubmVj
dERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUodG9BUEkoYnVuZGxlKSwgdG9BUEkoZXh0ZW5zaW9u
KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDbGllbnQ6
OmRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24oSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSwgSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBpZiAoIW1f
Y2xpZW50LnZlcnNpb24gfHwhbV9jbGllbnQuZGlkRGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQuZGlkRGVzdHJveURPTVdpbmRvd0V4dGVu
c2lvbih0b0FQSShidW5kbGUpLCB0b0FQSShleHRlbnNpb24pLCBtX2NsaWVudC5jbGllbnRJbmZv
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50
LmgKaW5kZXggMzJiZTI5MC4uMDZmYzM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQu
aApAQCAtMzQsNiArMzQsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQVBJT2JqZWN0
OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGU7CitjbGFzcyBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbjsKK2NsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlBhZ2VH
cm91cFByb3h5OwogCkBAIC00Myw2ICs0NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGVz
dHJveVBhZ2UoSW5qZWN0ZWRCdW5kbGUqLCBXZWJQYWdlKik7CiAgICAgdm9pZCBkaWRJbml0aWFs
aXplUGFnZUdyb3VwKEluamVjdGVkQnVuZGxlKiwgV2ViUGFnZUdyb3VwUHJveHkqKTsKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKEluamVjdGVkQnVuZGxlKiwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSk7CisKKyAgICB2b2lkIGRpZEluc3RhbGxE
T01XaW5kb3dFeHRlbnNpb24oSW5qZWN0ZWRCdW5kbGUqLCBJbmplY3RlZEJ1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbiogZXh0ZW5zaW9uKTsKKyAgICB2b2lkIGRpZERpc2Nvbm5lY3RET01XaW5kb3dF
eHRlbnNpb25Gcm9tRnJhbWUoSW5qZWN0ZWRCdW5kbGUqLCBJbmplY3RlZEJ1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbiopOworICAgIHZvaWQgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9G
cmFtZShJbmplY3RlZEJ1bmRsZSosIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKik7
CisgICAgdm9pZCBkaWREZXN0cm95RE9NV2luZG93RXh0ZW5zaW9uKEluamVjdGVkQnVuZGxlKiwg
SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2Q4NGQ1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIgorCisj
aW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RPTVdp
bmRvd0V4dGVuc2lvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3R5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qLCBSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24+ID4gRE9NV2luZG93RXh0ZW5zaW9u
V3JhcHBlck1hcDsKK3N0YXRpYyBET01XaW5kb3dFeHRlbnNpb25XcmFwcGVyTWFwJiBleHRlbnNp
b25XcmFwcGVyTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERPTVdpbmRvd0V4dGVu
c2lvbldyYXBwZXJNYXAsIG1hcCwgKCkpOworICAgIHJldHVybiBtYXA7Cit9CisKK0luamVjdGVk
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bjo6Z2V0T3JDcmVhdGVXcmFwcGVyKFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiogY29yZUV4
dGVuc2lvbikKK3sKKyAgICBpZiAoIWNvcmVFeHRlbnNpb24pCisgICAgICAgIHJldHVybiAwOwor
ICAgIAorICAgIGNvbnN0IFJlZlB0cjxJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbj4m
IGV4aXN0aW5nV3JhcHBlciA9IGV4dGVuc2lvbldyYXBwZXJNYXAoKS5nZXQoY29yZUV4dGVuc2lv
bik7CisgICAgaWYgKGV4aXN0aW5nV3JhcHBlcikKKyAgICAgICAgcmV0dXJuIGV4aXN0aW5nV3Jh
cHBlci5nZXQoKTsKKyAgICAKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRl
bnNpb24+IHdyYXBwZXIgPSBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRl
bnNpb24oY29yZUV4dGVuc2lvbikpOworICAgIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uKiByZXN1bHQgPSB3cmFwcGVyLmdldCgpOworICAgIGV4dGVuc2lvbldyYXBwZXJNYXAoKS5z
ZXQoY29yZUV4dGVuc2lvbiwgd3JhcHBlci5yZWxlYXNlKCkpOworCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OkluamVjdGVkQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uKFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiogZXh0ZW5zaW9u
KQorICAgIDogbV9jb3JlRXh0ZW5zaW9uKGV4dGVuc2lvbikKK3sKKyAgICBBU1NFUlQobV9jb3Jl
RXh0ZW5zaW9uKTsKK30KKworSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246On5Jbmpl
Y3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbigpCit7CisgICAgZXh0ZW5zaW9uV3JhcHBlck1h
cCgpLnJlbW92ZShtX2NvcmVFeHRlbnNpb24uZ2V0KCkpOworfQorCitXZWJGcmFtZSogSW5qZWN0
ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OmZyYW1lKCkgY29uc3QKK3sKKyAgICBXZWJDb3Jl
OjpGcmFtZSogZnJhbWUgPSBtX2NvcmVFeHRlbnNpb24tPmZyYW1lKCk7CisgICAgcmV0dXJuIGZy
YW1lID8gc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPihmcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpKS0+d2ViRnJhbWUoKSA6IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NmFjYzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVET01XaW5k
b3dFeHRlbnNpb25faAorI2RlZmluZSBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbl9o
CisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBET01XaW5kb3dFeHRlbnNpb247CisgICAgY2xh
c3MgRnJhbWU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJGcmFtZTsKKwor
Y2xhc3MgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24gOiBwdWJsaWMgQVBJT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUJ1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbjsKKworICAgIHN0YXRpYyBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbiogZ2V0T3JDcmVhdGVXcmFwcGVyKFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiop
OworCisgICAgdmlydHVhbCB+SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24oKSBPVkVS
UklERTsKKyAgICAKKyAgICBXZWJGcmFtZSogZnJhbWUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIElu
amVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lv
biopOworCisgICAgUmVmUHRyPFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbj4gbV9jb3JlRXh0
ZW5zaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBJbmplY3Rl
ZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDgyMGY2MTguLjVhNjhlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFn
ZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5k
bGUuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIgogI2lu
Y2x1ZGUgIkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNlcnRpZmlj
YXRlSW5mby5oIgpAQCAtMTM4OCw2ICsxMzkwLDI2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCoK
ICNlbmRpZgogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpleHRlbnNpb25JbnN0YWxs
ZWRPbkdsb2JhbE9iamVjdChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qIGV4dGVuc2lvbikK
K3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRJbnN0YWxs
RE9NV2luZG93RXh0ZW5zaW9uKEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpnZXRP
ckNyZWF0ZVdyYXBwZXIoZXh0ZW5zaW9uKSk7Cit9CisKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmV4dGVuc2lvbkRpc2Nvbm5lY3RlZEZyb21HbG9iYWxPYmplY3QoV2ViQ29yZTo6RE9NV2lu
ZG93RXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5q
ZWN0ZWRCdW5kbGUoKS0+ZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZShJ
bmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6Z2V0T3JDcmVhdGVXcmFwcGVyKGV4dGVu
c2lvbikpOworfQorCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpleHRlbnNpb25SZWNvbm5l
Y3RlZFRvR2xvYmFsT2JqZWN0KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiogZXh0ZW5zaW9u
KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVkQnVuZGxlKCktPmRpZFJlY29u
bmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUoSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRl
bnNpb246OmdldE9yQ3JlYXRlV3JhcHBlcihleHRlbnNpb24pKTsKK30KKwordm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlkRGVzdHJveUdsb2JhbE9iamVjdEZvckV4dGVuc2lvbihXZWJDb3Jl
OjpET01XaW5kb3dFeHRlbnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWREZXN0cm95RE9NV2luZG93RXh0ZW5zaW9uKEluamVj
dGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpnZXRPckNyZWF0ZVdyYXBwZXIoZXh0ZW5zaW9u
KSk7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRvY3VtZW50RWxlbWVudEF2YWls
YWJsZSgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCAzYzdkNWJmLi5kZDRmY2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC0xOTMsNiArMTkzLDExIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxk
KikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZXh0ZW5zaW9uSW5zdGFsbGVkT25HbG9i
YWxPYmplY3QoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGV4dGVuc2lvbkRpc2Nvbm5lY3RlZEZyb21HbG9iYWxPYmplY3QoV2ViQ29yZTo6
RE9NV2luZG93RXh0ZW5zaW9uKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGV4dGVuc2lv
blJlY29ubmVjdGVkVG9HbG9iYWxPYmplY3QoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lHbG9iYWxPYmplY3RGb3JFeHRl
bnNpb24oV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgT1ZFUlJJREU7CisKICAgICB2aXJ0
dWFsIHZvaWQgZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24oKSBjb25zdCBPVkVSUklERTsgLy8gIk5h
dmlnYXRpb24iIGhlcmUgbWVhbnMgYSB0cmFuc2l0aW9uIGZyb20gb25lIHBhZ2UgdG8gYW5vdGhl
ciB0aGF0IGVuZHMgdXAgaW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0LgogICAgIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZmNjc3ZGEuLjgzMWQ4
Y2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1NyBAQAorMjAxMi0wMy0yOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMTIwMTU1PiBhbmQgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNjY0CisgICAgICAgIE5lZWQgRE9NV2luZG93
IG1lY2hhbmlzbSB0byBzdXBwbGVtZW50IFVzZXJTY3JpcHRzIGZvciBwYWdlIGNhY2hlIG5vdGlm
aWNhdGlvbnMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgdG8gbmV3IGNsaWVudCBpbnRlcmZhY2U6CisgICAgICAgICogTWluaUJyb3dzZXIv
bWFjL1dlYkJ1bmRsZS9XZWJCdW5kbGVNYWluLm06CisgICAgICAgIChXS0J1bmRsZUluaXRpYWxp
emUpOiAKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUpOgor
CisgICAgICAgIEFkZCBuZXcgY2xpZW50IGNhbGxiYWNrcyB0byB0aGUgc2hhcmVkIEluamVjdGVk
QnVuZGxlQ29udHJvbGxlciBhbmQgSW5qZWN0ZWRCdW5kbGVUZXN0OgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZEluc3RhbGxET01XaW5k
b3dFeHRlbnNpb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVDb250
cm9sbGVyOjpkaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUZyYW1lKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkUmVjb25uZWN0
RE9NV2luZG93RXh0ZW5zaW9uVG9GcmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmpl
Y3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmg6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZVRlc3QuaDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OkluamVjdGVkQnVuZGxlVGVzdDo6ZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbik6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZVRlc3Q6OmRpZERpc2Nvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Gcm9tRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
SW5qZWN0ZWRCdW5kbGVUZXN0OjpkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1l
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlVGVzdDo6ZGlkRGVzdHJv
eURPTVdpbmRvd0V4dGVuc2lvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgVUlQcm9jZXNzIHNpZGUg
b2YgdGhlIHRlc3QgdGhhdCBleGVyY2lzZXMgZXh0ZW5zaW9ucyBpbiBhbmQgb3V0IG9mIHRoZSBw
YWdlIGNhY2hlLAorICAgICAgICBsaXN0ZW5pbmcgZm9yIGEgcGFydGljdWxhciBzZXF1ZW5jZSBv
ZiBtZXNzYWdlcyBmcm9tIHRoZSBidW5kbGU6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcDogQWRkZWQuCisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKworICAgICAgICBCdW5kbGUgc2lkZSBvZiB0aGUg
dGVzdC4gTW9uaXRvcnMgZnJhbWUgbG9hZHMgYW5kIGV4dGVuc2lvbiBjYWxsYmFja3MsIG1lc3Nh
Z2luZworICAgICAgICBlYWNoIGV2ZW50IHVwIHRvIHRoZSBVSVByb2Nlc3M6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRs
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OkRPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZEZpbmlzaExvYWRGb3JGcmFt
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6Z2V0
T3JFc3RhYmxpc2hGcmFtZUlEKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRPTVdpbmRvd0V4
dGVuc2lvbkJhc2ljOjpmcmFtZUxvYWRGaW5pc2hlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6ZGlkQ3JlYXRlUGFnZSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6c2VuZEJ1bmRsZUV4dGVu
c2lvbk1lc3NhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9u
QmFzaWM6OmRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OmRpZERpc2Nvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Gcm9tRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5z
aW9uQmFzaWM6OmRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OmRpZERlc3Ryb3lET01X
aW5kb3dFeHRlbnNpb24pOgorCisgICAgICAgIE1ha2UgYSBtZXRob2Qgc3RhdGljIHRoYXQgc2hv
dWxkIGhhdmUgYmVlbiBzdGF0aWMgYWxsIGFsb25nOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxMi0wMy0y
OSAgRG9taW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAbGludXguaW50ZWwuY29t
PgogCiAgICAgICAgIFtHVEtdW0VGTF0gcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzIHNob3VsZCBi
ZSBydW4gdGhyb3VnaCBqaGJ1aWxkCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMv
V2ViQnVuZGxlL1dlYkJ1bmRsZU1haW4ubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XZWJCdW5k
bGUvV2ViQnVuZGxlTWFpbi5tCmluZGV4IDJkYTNlOTUuLjEwMWE4YTQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVuZGxlTWFpbi5tCisrKyBiL1Rvb2xz
L01pbmlCcm93c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVuZGxlTWFpbi5tCkBAIC05OCw3ICs5OCwx
MSBAQCB2b2lkIFdLQnVuZGxlSW5pdGlhbGl6ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLVHlwZVJl
ZiBpbml0aWFsaXphdGlvblVzZXJEYXRhKQogICAgICAgICBkaWRDcmVhdGVQYWdlLAogICAgICAg
ICB3aWxsRGVzdHJveVBhZ2UsCiAgICAgICAgIDAsIC8vIGRpZEluaXRpYWxpemVQYWdlR3JvdXAK
LSAgICAgICAgZGlkUmVjaWV2ZU1lc3NhZ2UKKyAgICAgICAgZGlkUmVjaWV2ZU1lc3NhZ2UsCisg
ICAgICAgIDAsIC8vIGRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24KKyAgICAgICAgMCwgLy8g
ZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZQorICAgICAgICAwLCAvLyBk
aWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lCisgICAgICAgIDAgIC8vIGRpZERl
c3Ryb3lET01XaW5kb3dFeHRlbnNpb24KICAgICB9OwogICAgIFdLQnVuZGxlU2V0Q2xpZW50KGJ1
bmRsZSwgJmNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0luamVj
dGVkQnVuZGxlQ29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVu
ZGxlQ29udHJvbGxlci5jcHAKaW5kZXggMTMzNzVjNS4uYmM0MWFiZiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcApAQCAtNTUsMTIgKzU1
LDE2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjppbml0aWFsaXplKFdLQnVuZGxl
UmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdL
QnVuZGxlQ2xpZW50IGNsaWVudCA9IHsKLSAgICAgICAgMCwKKyAgICAgICAgMSwKICAgICAgICAg
dGhpcywKICAgICAgICAgZGlkQ3JlYXRlUGFnZSwKICAgICAgICAgd2lsbERlc3Ryb3lQYWdlLAog
ICAgICAgICBkaWRJbml0aWFsaXplUGFnZUdyb3VwLAotICAgICAgICBkaWRSZWNlaXZlTWVzc2Fn
ZQorICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZSwKKyAgICAgICAgZGlkSW5zdGFsbERPTVdpbmRv
d0V4dGVuc2lvbiwKKyAgICAgICAgZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21G
cmFtZSwKKyAgICAgICAgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9GcmFtZSwKKyAg
ICAgICAgZGlkRGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbgogICAgIH07CiAgICAgV0tCdW5kbGVT
ZXRDbGllbnQobV9idW5kbGUsICZjbGllbnQpOwogCkBAIC0xMDMsNiArMTA3LDM0IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZShXS0J1bmRsZVJlZiBi
dW5kbGUsIFdLU3RyaW5nUmVmCiAgICAgc2VsZi0+bV9jdXJyZW50VGVzdC0+ZGlkUmVjZWl2ZU1l
c3NhZ2UoYnVuZGxlLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwogfQogCit2b2lkIEluamVj
dGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbihXS0J1bmRs
ZVJlZiBidW5kbGUsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqIHNl
bGYgPSBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSk7CisgICAgYXNzZXJ0KHNlbGYtPm1fY3VycmVudFRlc3QpOworICAg
IHNlbGYtPm1fY3VycmVudFRlc3QtPmRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24oYnVuZGxl
LCBleHRlbnNpb24pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkRGlz
Y29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZShXS0J1bmRsZVJlZiBidW5kbGUsIFdL
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3sKKyAgICBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqIHNlbGYgPSBzdGF0aWNfY2Fz
dDxJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSk7CisgICAgYXNzZXJ0KHNlbGYtPm1fY3VycmVudFRlc3QpOworICAgIHNlbGYtPm1fY3VycmVu
dFRlc3QtPmRpZERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tRnJhbWUoYnVuZGxlLCBl
eHRlbnNpb24pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkUmVjb25u
ZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9GcmFtZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3sKKyAgICBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqIHNlbGYgPSBzdGF0aWNfY2FzdDxJbmpl
Y3RlZEJ1bmRsZUNvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Cisg
ICAgYXNzZXJ0KHNlbGYtPm1fY3VycmVudFRlc3QpOworICAgIHNlbGYtPm1fY3VycmVudFRlc3Qt
PmRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUoYnVuZGxlLCBleHRlbnNpb24p
OworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkRGVzdHJveURPTVdpbmRv
d0V4dGVuc2lvbihXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
UmVmIGV4dGVuc2lvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXIqIHNlbGYgPSBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZUNvbnRyb2xs
ZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisgICAgYXNzZXJ0KHNlbGYtPm1f
Y3VycmVudFRlc3QpOworICAgIHNlbGYtPm1fY3VycmVudFRlc3QtPmRpZERlc3Ryb3lET01XaW5k
b3dFeHRlbnNpb24oYnVuZGxlLCBleHRlbnNpb24pOworfQorCiB2b2lkIEluamVjdGVkQnVuZGxl
Q29udHJvbGxlcjo6ZHVtcFRlc3ROYW1lcygpCiB7CiAgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcs
IENyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
X2NyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9ucy5iZWdpbigpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmgKaW5kZXggNWVlNzE1Ni4uZDI5
M2ZhMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRy
b2xsZXIuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlQ29udHJvbGxl
ci5oCkBAIC01OCw2ICs1OCwxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0
cm95UGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRJbml0aWFsaXplUGFnZUdyb3VwKFdLQnVuZGxlUmVm
LCBXS0J1bmRsZVBhZ2VHcm91cFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwor
ICAgIHN0YXRpYyB2b2lkIGRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24oV0tCdW5kbGVSZWYg
YnVuZGxlLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24sIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZERpc2Nvbm5lY3RET01XaW5kb3dF
eHRlbnNpb25Gcm9tRnJhbWUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvblJlZiBleHRlbnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRp
YyB2b2lkIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUoV0tCdW5kbGVSZWYg
YnVuZGxlLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24sIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZERlc3Ryb3lET01XaW5kb3dFeHRl
bnNpb24oV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBl
eHRlbnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiAgICAgc3RkOjptYXA8c3RkOjpz
dHJpbmcsIENyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uPiBtX2NyZWF0ZUluamVjdGVk
QnVuZGxlVGVzdEZ1bmN0aW9uczsKICAgICBXS0J1bmRsZVJlZiBtX2J1bmRsZTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVUZXN0LmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlVGVzdC5oCmluZGV4IDUyODVjZGYuLjBmZjliNGIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVUZXN0LmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZVRlc3QuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiArNDAsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdL
QnVuZGxlUGFnZVJlZikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEluaXRpYWxpemVQYWdlR3Jv
dXAoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRJbnN0YWxs
RE9NV2luZG93RXh0ZW5zaW9uKFdLQnVuZGxlUmVmLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lv
blJlZikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNp
b25Gcm9tRnJhbWUoV0tCdW5kbGVSZWYsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9GcmFt
ZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaWREZXN0cm95RE9NV2luZG93RXh0ZW5zaW9uKFdLQnVuZGxlUmVmLCBXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZikgeyB9CiAKICAgICBzdGQ6OnN0cmluZyBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDU0ZGY4NzguLmZkMTY3MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zOCw2
ICszOCw4IEBACiAJCTQ0MEExRDM5MTRBMDEwM0EwMDhBNjZGMiAvKiBLVVJMLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MEExRDM4MTRBMDEwM0Ew
MDhBNjZGMiAvKiBLVVJMLmNwcCAqLzsgfTsKIAkJNEJGREZGQTcxMzE0Nzc2QzAwNjFGMjRCIC8q
IEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkZERkZBNjEzMTQ3NzZDMDA2MUYyNEIgLyogSGl0
VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNEJGREZGQTkxMzE0Nzc3
NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRkRGRkE4MTMxNDc3NzcwMDYxRjI0QiAv
KiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAgKi87IH07CisJCTUxMzkzRTIwMTUyMzk0NEEw
MDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTM5M0UxRTE1MjM5NDRBMDA1RjM5QzUgLyog
RE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwICovOyB9OworCQk1MTM5M0UyMjE1MjM5NTJEMDA1
RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMzkzRTFEMTUyMzk0NEEwMDVGMzlD
NSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwICovOyB9OwogCQk1MTQyQjI3
MTE1MTdDODhCMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0MkIyNzAxNTE3Qzg4QjAwQzMy
QjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVSTC5tbSAqLzsgfTsKIAkJNTE0MkIyNzMxNTE3QzhD
ODAwQzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVSTC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDJCMjcyMTUxN0M4OTEwMEMz
MkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwuaHRtbCAqLzsgfTsKIAkJNTE3RTdERkMxNTEx
MEVBNjAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0U3
REZCMTUxMTBFQTYwMEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2Fk
RGVsZWdhdGUubW0gKi87IH07CkBAIC0yMjUsNiArMjI3LDggQEAKIAkJNDRBNjIyQzExNEEwRTJC
NjAwNDg1MTVCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXVEZTdHJpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEJGREZGQTYxMzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxl
X0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXRUZXN0
UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QkZERkZBODEzMTQ3Nzc3MDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGl0VGVzdFJlc3VsdE5vZGVI
YW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTM5M0UxRDE1MjM5NDRB
MDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMzkzRTFFMTUyMzk0NEEwMDVG
MzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNDJCMjcwMTUxN0M4OEIwMEMzMkIxOSAvKiBDb250ZXh0TWVu
dUNhbkNvcHlVUkwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
b250ZXh0TWVudUNhbkNvcHlVUkwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
NDJCMjcyMTUxN0M4OTEwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IENvbnRleHRNZW51Q2FuQ29weVVSTC5odG1sOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdFN0RGQjE1MTEwRUE2MDBEMEIwMDggLyogTWVt
b3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNl
TG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDc5LDYgKzQ4
Myw4IEBACiAJCQkJQkMyNDZEOTgxMzJGMUZFMTAwQjU2RDdDIC8qIENhbkhhbmRsZVJlcXVlc3Qu
Y3BwICovLAogCQkJCUJDMjQ2RDk3MTMyRjFGRTEwMEI1NkQ3QyAvKiBDYW5IYW5kbGVSZXF1ZXN0
X0J1bmRsZS5jcHAgKi8sCiAJCQkJRjZGM0YyOTAxMzM0MkZFQjAwQTZCRjE5IC8qIENvb2tpZU1h
bmFnZXIuY3BwICovLAorCQkJCTUxMzkzRTFFMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dF
eHRlbnNpb25CYXNpYy5jcHAgKi8sCisJCQkJNTEzOTNFMUQxNTIzOTQ0QTAwNUYzOUM1IC8qIERP
TVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgKi8sCiAJCQkJQkNCNjgwM0YxMjZGQkZF
MTAwNjQyQTYxIC8qIERvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaC5jcHAgKi8sCiAJ
CQkJQkNCNjgwNDExMjZGQkZGMTAwNjQyQTYxIC8qIERvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxl
cnRDcmFzaF9CdW5kbGUuY3BwICovLAogCQkJCUMwNDVGOTQ0MTM4NUMyRTkwMEMwRjNDRCAvKiBE
b3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwICovLApAQCAtODMxLDYgKzgzNyw3IEBA
CiAJCQkJNTE3RTdERkMxNTExMEVBNjAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRkJCQjREMTUxM0Q0
RTkwMDgyMjczOCAvKiBXZWJWaWV3Q2FuUGFzdGVVUkwubW0gaW4gU291cmNlcyAqLywKIAkJCQk1
MTQyQjI3MTE1MTdDODhCMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJNTEzOTNFMjAxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtODU5LDYgKzg2Niw3IEBACiAJCQkJOTNG
N0U4NkYxNERDOEU1QzAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZy
YW1lc19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMkQzMTkxNERDNjhCOTAwRkZC
MUREIC8qIFVzZXJNZXNzYWdlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0FGNEVD
RTE1MDZGMDY0MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1h
Z2VzX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTM5M0UyMjE1MjM5NTJEMDA1RjM5
QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4
dGVuc2lvbkJhc2ljLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01X
aW5kb3dFeHRlbnNpb25CYXNpYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYzlkMjVlYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAKQEAgLTAsMCArMSwxMzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0LmgiCisj
aW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCBmaW5pc2hlZDsKK3N0
YXRpYyBpbnQgbGl2ZURPTUV4dGVuc2lvbkNvdW50OworCitzdGF0aWMgY29uc3QgY2hhciogZXhw
ZWN0ZWRNZXNzYWdlc1tdID0geworICAgICJkaWRJbnN0YWxsRE9NV2luZG93RXh0ZW5zaW9uQm9k
eSAtIEV4dGVuc2lvbiAwIGluIGZyYW1lIDAiLAorICAgICJkaWRJbnN0YWxsRE9NV2luZG93RXh0
ZW5zaW9uQm9keSAtIEV4dGVuc2lvbiAxIGluIGZyYW1lIDEiLAorICAgICJGcmFtZSAxIGZpbmlz
aGVkIGxvYWRpbmciLAorICAgICJGcmFtZSAwIGZpbmlzaGVkIGxvYWRpbmciLAorICAgICJkaWRE
aXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUZyYW1lIC0gRXh0ZW5zaW9uIDEgaW4gZnJh
bWUgMSIsCisgICAgImRpZERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tRnJhbWUgLSBF
eHRlbnNpb24gMCBpbiBmcmFtZSAwIiwKKyAgICAiZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lv
bkJvZHkgLSBFeHRlbnNpb24gMiBpbiBmcmFtZSAwIiwKKyAgICAiRnJhbWUgMCBmaW5pc2hlZCBs
b2FkaW5nIiwKKyAgICAiZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZSAt
IEV4dGVuc2lvbiAyIGluIGZyYW1lIDAiLAorICAgICJkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Ub0ZyYW1lIC0gRXh0ZW5zaW9uIDAgaW4gZnJhbWUgMCIsCisgICAgImRpZFJlY29ubmVj
dERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUgLSBFeHRlbnNpb24gMSBpbiBmcmFtZSAxIiwKKyAg
ICAiRnJhbWUgMCBmaW5pc2hlZCBsb2FkaW5nIiwKKyAgICAiZGlkRGVzdHJveURPTVdpbmRvd0V4
dGVuc2lvbiIsCisgICAgImRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24iLAorICAgICJkaWRE
ZXN0cm95RE9NV2luZG93RXh0ZW5zaW9uIgorfTsKKworc3RhdGljIFZlY3RvcjxXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gPiBtZXNzYWdlczsKKworc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFt
ZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKikKK3sKKyAgICBBU1NFUlRfTk9U
X05VTEwobWVzc2FnZUJvZHkpOworICAgIEVYUEVDVF9FUShXS1N0cmluZ0dldFR5cGVJRCgpLCBX
S0dldFR5cGVJRChtZXNzYWdlQm9keSkpOworCisgICAgV0tTdHJpbmdSZWYgYm9keVN0cmluZyA9
IChXS1N0cmluZ1JlZiltZXNzYWdlQm9keTsKKyAgICBtZXNzYWdlcy5hcHBlbmQoYm9keVN0cmlu
Zyk7CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJkaWRJbnN0YWxsRE9NV2luZG93RXh0ZW5zaW9uQm9keSIpKQorICAgICAgICBsaXZlRE9N
RXh0ZW5zaW9uQ291bnQrKzsKKyAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiZGlkRGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbiIpKSB7CisgICAg
ICAgIGxpdmVET01FeHRlbnNpb25Db3VudC0tOworICAgICAgICBpZiAoIWxpdmVET01FeHRlbnNp
b25Db3VudCkKKyAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJkaWRGaW5pc2hMb2FkRm9y
TWFpbkZyYW1lIikpCisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKK30KKworVEVTVChXZWJLaXQy
LCBET01XaW5kb3dFeHRlbnNpb25CYXNpYykKK3sKKyAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91
cFJlZj4gcGFnZUdyb3VwKEFkb3B0V0ssIFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIo
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljUGFn
ZUdyb3VwIikpKTsgCisKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRv
cHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiRE9NV2luZG93
RXh0ZW5zaW9uQmFzaWMiLCBwYWdlR3JvdXAuZ2V0KCkpKTsKKworICAgIFdLQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50IGluamVjdGVkQnVuZGxlQ2xpZW50OworICAgIG1lbXNldCgmaW5qZWN0
ZWRCdW5kbGVDbGllbnQsIDAsIHNpemVvZihpbmplY3RlZEJ1bmRsZUNsaWVudCkpOworICAgIGlu
amVjdGVkQnVuZGxlQ2xpZW50LnZlcnNpb24gPSAwOworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50
LmNsaWVudEluZm8gPSAwOworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGU7CisgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwg
JmluamVjdGVkQnVuZGxlQ2xpZW50KTsKKyAgICAKKyAgICAvLyBUaGUgZGVmYXVsdCBjYWNoZSBt
b2RlbCBoYXMgYSBjYXBhY2l0eSBvZiAwLCBzbyBpdCBpcyBuZWNlc3NhcnkgdG8gc3dpdGNoIHRv
IGEgY2FjaGUKKyAgICAvLyBtb2RlbCB0aGF0IGFjdHVhbGx5IGFsbG93cyBmb3IgYSBwYWdlIGNh
Y2hlLgorICAgIFdLQ29udGV4dFNldENhY2hlTW9kZWwoY29udGV4dC5nZXQoKSwga1dLQ2FjaGVN
b2RlbERvY3VtZW50QnJvd3Nlcik7CisKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250
ZXh0LmdldCgpLCBwYWdlR3JvdXAuZ2V0KCkpOworCisgICAgLy8gTWFrZSBzdXJlIHRoZSBleHRl
bnNpb25zIGZvciBlYWNoIGZyYW1lIGFyZSBpbnN0YWxsZWQuCisgICAgV0tSZXRhaW5QdHI8V0tV
UkxSZWY+IHVybDEoQWRvcHRXSywgVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZS1p
ZnJhbWUiLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCB1cmwx
LmdldCgpKTsKKworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIGZpbmlzaGVkID0gZmFs
c2U7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhvc2UgZmlyc3QgZXh0ZW5zaW9ucyBhcmUgZGlzY29u
bmVjdGVkLCBhbmQgYSBuZXcgb25lIGlzIGluc3RhbGxlZC4KKyAgICBXS1JldGFpblB0cjxXS1VS
TFJlZj4gdXJsMihBZG9wdFdLLCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwg
Imh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgdXJsMi5nZXQoKSk7
CisKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBmaW5pc2hlZCA9IGZhbHNlOworCisg
ICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhpcmQgb25lIGlzIGRpc2Nvbm5lY3RlZCwgYW5kIHRoZSBm
aXJzdCB0d28gYXJlIHJlY29ubmVjdGVkLgorICAgIFdLUGFnZUdvQmFjayh3ZWJWaWV3LnBhZ2Uo
KSk7CisKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBmaW5pc2hlZCA9IGZhbHNlOwor
ICAgIAorICAgIC8vIE1ha2Ugc3VyZSB0aGUgMSBkaXNjb25uZWN0ZWQgZXh0ZW5zaW9uIGluIHRo
ZSBwYWdlIGNhY2hlIGFuZCB0aGUgMiBhY3RpdmUgZXh0ZW5zaW9ucyBhcmUgYWxsIGRlc3Ryb3ll
ZC4KKyAgICBXS1BhZ2VDbG9zZSh3ZWJWaWV3LnBhZ2UoKSk7CisKKyAgICBVdGlsOjpydW4oJmZp
bmlzaGVkKTsKKyAgICAKKyAgICBjb25zdCBzaXplX3QgZXhwZWN0ZWRTaXplID0gc2l6ZW9mKGV4
cGVjdGVkTWVzc2FnZXMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsKKyAgICBFWFBFQ1RfRVEobWVz
c2FnZXMuc2l6ZSgpLCBleHBlY3RlZFNpemUpOworICAgIAorICAgIGlmIChtZXNzYWdlcy5zaXpl
KCkgIT0gZXhwZWN0ZWRTaXplKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtZXNzYWdlcy5zaXplKCk7ICsraSkKKyAgICAgICAgRVhQRUNUX0VRKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZXNbaV0uZ2V0KCksIGV4cGVjdGVkTWVz
c2FnZXNbaV0pLCB0cnVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljX0J1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
RE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4wODRlZWNkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAKQEAg
LTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbi5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVGcmFtZS5oPgorI2lu
Y2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRs
ZVBhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQcml2YXRlLmg+CisjaW5j
bHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVNjcmlwdFdvcmxkLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8YXNzZXJ0
Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY2xhc3MgRE9NV2luZG93RXh0ZW5z
aW9uQmFzaWMgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1YmxpYzoKKyAgICBET01X
aW5kb3dFeHRlbnNpb25CYXNpYyhjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcikKKyAgICAg
ICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX2N1cnJlbnRF
eHRlbnNpb25JRCgwKQorICAgICAgICAsIG1fY3VycmVudEZyYW1lSUQoMCkKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoV0tCdW5kbGVSZWYsIFdLVHlwZVJlZiB1
c2VyRGF0YSk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYsIFdL
QnVuZGxlUGFnZVJlZik7CisgICAgdmlydHVhbCB2b2lkIGRpZEluc3RhbGxET01XaW5kb3dFeHRl
bnNpb24oV0tCdW5kbGVSZWYsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZShXS0J1
bmRsZVJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lKFdLQnVuZGxlUmVmLCBXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZik7CisgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lE
T01XaW5kb3dFeHRlbnNpb24oV0tCdW5kbGVSZWYsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
UmVmKTsKKworICAgIHZvaWQgZnJhbWVMb2FkRmluaXNoZWQoV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZW5kQnVuZGxlRXh0ZW5zaW9uTWVzc2FnZShXS0J1
bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiwg
Y29uc3QgY2hhciogbWVzc2FnZSk7CisKKyAgICBpbnQgZ2V0T3JFc3RhYmxpc2hGcmFtZUlEKFdL
QnVuZGxlRnJhbWVSZWYpOworCisgICAgV0tCdW5kbGVQYWdlR3JvdXBSZWYgbV9wYWdlR3JvdXA7
CisKKyAgICBXS0J1bmRsZVJlZiBtX2J1bmRsZTsKKyAgICAKKyAgICBpbnQgbV9jdXJyZW50RXh0
ZW5zaW9uSUQ7CisgICAgSGFzaE1hcDxXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgaW50
PiBtX2V4dGVuc2lvbklETWFwOworCisgICAgaW50IG1fY3VycmVudEZyYW1lSUQ7CisgICAgSGFz
aE1hcDxXS0J1bmRsZUZyYW1lUmVmLCBpbnQ+IG1fZnJhbWVJRE1hcDsKK307CisKK3N0YXRpYyBJ
bmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljPiByZWdp
c3RyYXIoIkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljIik7CisKK3N0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdL
VHlwZVJlZiosIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgKChET01XaW5kb3dFeHRl
bnNpb25CYXNpYyopY2xpZW50SW5mbyktPmZyYW1lTG9hZEZpbmlzaGVkKGZyYW1lKTsKK30KKwor
aW50IERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpnZXRPckVzdGFibGlzaEZyYW1lSUQoV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSkKK3sKKyAgICBpZiAobV9mcmFtZUlETWFwLmNvbnRhaW5zKGZyYW1l
KSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVJRE1hcC5nZXQoZnJhbWUpOworICAgIAorICAgIGlu
dCBpZCA9IG1fY3VycmVudEZyYW1lSUQrKzsKKyAgICBtX2ZyYW1lSURNYXAuc2V0KGZyYW1lLCBp
ZCk7CisgICAgcmV0dXJuIGlkOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpm
cmFtZUxvYWRGaW5pc2hlZChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQoreworICAgIGludCBpZCA9
IGdldE9yRXN0YWJsaXNoRnJhbWVJRChmcmFtZSk7CisKKyAgICBjaGFyIGJvZHlbMTAyNF07Cisg
ICAgc3ByaW50Zihib2R5LCAiRnJhbWUgJWkgZmluaXNoZWQgbG9hZGluZyIsIGlkKTsKKyAgICAK
KyAgICAvLyBPbmx5IGNvbnNpZGVyIGxvYWQgZmluaXNoZWQgZm9yIHRoZSBtYWluIGZyYW1lCisg
ICAgY29uc3QgY2hhciogbmFtZSA9IFdLQnVuZGxlRnJhbWVHZXRQYXJlbnRGcmFtZShmcmFtZSkg
PyAiZGlkRmluaXNoTG9hZEZvckZyYW1lIiA6ICJkaWRGaW5pc2hMb2FkRm9yTWFpbkZyYW1lIjsK
KworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobmFtZSkpOworICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoYm9keSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1l
LmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9u
QmFzaWM6OmluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgdXNlckRhdGEp
Cit7CisgICAgYXNzZXJ0KFdLR2V0VHlwZUlEKHVzZXJEYXRhKSA9PSBXS0J1bmRsZVBhZ2VHcm91
cEdldFR5cGVJRCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXAgPSBzdGF0
aWNfY2FzdDxXS0J1bmRsZVBhZ2VHcm91cFJlZj4odXNlckRhdGEpOworCisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHNvdXJjZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiYWxlcnQoJ1VzZXIgc2NyaXB0IGFsZXJ0Jyk7IikpOworICAgIFdLQnVuZGxlQWRkVXNl
clNjcmlwdChidW5kbGUsIHBhZ2VHcm91cCwgV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxk
KCksIHNvdXJjZS5nZXQoKSwgMCwgMCwgMCwga1dLSW5qZWN0QXREb2N1bWVudFN0YXJ0LCBrV0tJ
bmplY3RJbkFsbEZyYW1lcyk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OmRp
ZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKK3sK
KyAgICBtX2J1bmRsZSA9IGJ1bmRsZTsKKworICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBw
YWdlTG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmcGFnZUxvYWRlckNsaWVudCwgMCwgc2l6ZW9m
KHBhZ2VMb2FkZXJDbGllbnQpKTsKKyAgICAKKyAgICBwYWdlTG9hZGVyQ2xpZW50LnZlcnNpb24g
PSAxOworICAgIHBhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgcGFnZUxv
YWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7
CisgICAgCisgICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmcGFnZUxv
YWRlckNsaWVudCk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OnNlbmRCdW5k
bGVFeHRlbnNpb25NZXNzYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVET01XaW5kb3dF
eHRlbnNpb25SZWYgZXh0ZW5zaW9uLCBjb25zdCBjaGFyKiBtZXNzYWdlKQoreworICAgIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUgPSBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldEZyYW1lKGV4
dGVuc2lvbik7CisKKyAgICBzdGF0aWMgY2hhciBidWZmZXJbMTAyNF07CisgICAgaWYgKG1fZXh0
ZW5zaW9uSURNYXAuY29udGFpbnMoZXh0ZW5zaW9uKSkKKyAgICAgICAgc3ByaW50ZihidWZmZXIs
ICIlcyAtIEV4dGVuc2lvbiAlaSBpbiBmcmFtZSAlaSIsIG1lc3NhZ2UsIG1fZXh0ZW5zaW9uSURN
YXAuZ2V0KGV4dGVuc2lvbiksIGdldE9yRXN0YWJsaXNoRnJhbWVJRChmcmFtZSkpOworICAgIGVs
c2UKKyAgICAgICAgc3ByaW50ZihidWZmZXIsICIlcyIsIG1lc3NhZ2UpOworCisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhtZXNzYWdlKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1l
c3NhZ2VCb2R5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWZmZXIp
KTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKGJ1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1l
c3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6ZGlk
SW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbihXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbikKK3sgICAgCisgICAgaW50IGV4dGVuc2lvbklE
ID0gbV9jdXJyZW50RXh0ZW5zaW9uSUQrKzsKKyAgICBtX2V4dGVuc2lvbklETWFwLnNldChleHRl
bnNpb24sIGV4dGVuc2lvbklEKTsKKyAgICAgICAgCisgICAgc2VuZEJ1bmRsZUV4dGVuc2lvbk1l
c3NhZ2UoYnVuZGxlLCBleHRlbnNpb24sICJkaWRJbnN0YWxsRE9NV2luZG93RXh0ZW5zaW9uQm9k
eSIpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpkaWREaXNjb25uZWN0RE9N
V2luZG93RXh0ZW5zaW9uRnJvbUZyYW1lKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVET01X
aW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKQoreworICAgIHNlbmRCdW5kbGVFeHRlbnNpb25N
ZXNzYWdlKGJ1bmRsZSwgZXh0ZW5zaW9uLCAiZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lv
bkZyb21GcmFtZSIpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpkaWRSZWNv
bm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKQoreworICAgIHNlbmRCdW5kbGVFeHRl
bnNpb25NZXNzYWdlKGJ1bmRsZSwgZXh0ZW5zaW9uLCAiZGlkUmVjb25uZWN0RE9NV2luZG93RXh0
ZW5zaW9uVG9GcmFtZSIpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpkaWRE
ZXN0cm95RE9NV2luZG93RXh0ZW5zaW9uKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVET01X
aW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKQoreworICAgIC8vIEFzIG9wcG9zZWQgdG8gdGhl
IG9yZGVyIG9mIG90aGVyIGV4dGVuc2lvbiBvcGVyYXRpb25zLCBkZXN0cnVjdGlvbiBvcmRlciBp
cyBvZnRlbiByYW5kb20gaW4gdGhpcyB0ZXN0LgorICAgIC8vIERvbid0IGluY2x1ZGUgZXh0ZW5z
aW9uIElEcyBmb3IgdGhlIGRlc3RydWN0aW9uIG1lc3NhZ2UuCisgICAgbV9leHRlbnNpb25JRE1h
cC5yZW1vdmUoZXh0ZW5zaW9uKTsKKworICAgIHNlbmRCdW5kbGVFeHRlbnNpb25NZXNzYWdlKGJ1
bmRsZSwgZXh0ZW5zaW9uLCAiZGlkRGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbiIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAKaW5kZXggNDBjYTI2
OS4uMDgzYTg4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L0luamVjdGVkQnVuZGxlQmFzaWMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljLmNwcApAQCAtMzQsNyArMzQsNyBAQCBzdGF0aWMg
Ym9vbCBkb25lOwogc3RhdGljIGJvb2wgbG9hZERvbmU7CiBzdGF0aWMgYm9vbCBtZXNzYWdlUmVj
ZWl2ZWQ7CiAKLXZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2Fn
ZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYg
bWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKIHsKICAgICBtZXNzYWdlUmVjZWl2ZWQgPSB0cnVlOwogICAgIGlmIChsb2FkRG9uZSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKaW5kZXggNTU2NGIzMi4uYjg2YjI5MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAg
LTg4LDcgKzg4LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoV0tCdW5kbGVS
ZWYgYnVuZGxlLCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2VyCiAgICAgICAgIGRpZENyZWF0
ZVBhZ2UsCiAgICAgICAgIHdpbGxEZXN0cm95UGFnZSwKICAgICAgICAgZGlkSW5pdGlhbGl6ZVBh
Z2VHcm91cCwKLSAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UKKyAgICAgICAgZGlkUmVjZWl2ZU1l
c3NhZ2UsCisgICAgICAgIDAsIC8vIGRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24KKyAgICAg
ICAgMCwgLy8gZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZQorICAgICAg
ICAwLCAvLyBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lCisgICAgICAgIDAg
IC8vIGRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24KICAgICB9OwogICAgIFdLQnVuZGxlU2V0
Q2xpZW50KG1fYnVuZGxlLCAmY2xpZW50KTsKIAo=
</data>
<flag name="commit-queue"
          id="139025"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134827</attachid>
            <date>2012-03-30 09:27:49 -0700</date>
            <delta_ts>2012-04-09 18:06:47 -0700</delta_ts>
            <desc>Patch v3 - Now with even more project files!</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>91130</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjYzMGYzZC4uM2ZlMTc3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwMjgsNiArMTAyOCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdl
L0RPTVNlbGVjdGlvbi5jcHAKICAgICBwYWdlL0RPTVRpbWVyLmNwcAogICAgIHBhZ2UvRE9NV2lu
ZG93LmNwcAorICAgIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcAogICAgIHBhZ2UvRE9NV2lu
ZG93UHJvcGVydHkuY3BwCiAgICAgcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKICAgICBwYWdlL0V2
ZW50SGFuZGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjRjOTVhLi40NGExNWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTggQEAKKzIwMTItMDMtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDEyMDE1NT4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjY2NAorICAgICAgICBOZWVkIERPTVdp
bmRvdyBtZWNoYW5pc20gdG8gc3VwcGxlbWVudCBVc2VyU2NyaXB0cyBmb3IgcGFnZSBjYWNoZSBu
b3RpZmljYXRpb25zCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBjcmVhdGVzIGEgbmV3IG9iamVjdCB0eXBlICJET01XaW5kb3dFeHRl
bnNpb24iIHdoaWNoIGV4dGVuZHMgRE9NV2luZG93UHJvcGVydHkuCisgICAgICAgIEEgRE9NV2lu
ZG93RXh0ZW5zaW9uIGlzIHRpZWQgdG8gYSBwYXJ0aWN1bGFyIERPTVdpbmRvdyBhbmQgcmVwcmVz
ZW50cyBleHRlbnNpYmlsaXR5IGluIHRoYXQKKyAgICAgICAgRE9NV2luZG93IHdpdGhpbiBhIHBh
cnRpY3VsYXIgRE9NV3JhcHBlcldvcmxkLgorCisgICAgICAgIEl0IGlzIGEgdG9rZW4gb2JqZWN0
IG1lYW50IGRlc2lnbmVkIHRvIG5vdGlmeSBjbGllbnRzIG9mIHRoZSB2YXJpb3VzIGV2ZW50cyBp
biB0aGUgbGlmZXRpbWUKKyAgICAgICAgb2YgYSBET01XaW5kb3cgcHJvcGVydHkgc3VjaCBhcyBj
cmVhdGlvbiwgZGlzY29ubmVjdGluZyBmb3IgdGhlIHBhZ2UgY2FjaGUsIHJlY29ubmVjdGluZwor
ICAgICAgICB3aGVuIHJlc3RvcmluZyBmcm9tIHRoZSBwYWdlIGNhY2hlLCBhbmQgRE9NV2luZG93
IGRlc3RydWN0aW9uLgorCisgICAgICAgIFdlYktpdEFQSVRlc3QgIkRPTVdpbmRvd0V4dGVuc2lv
bkJhc2ljIiBhZGRlZC4KKworICAgICAgICBBZGQgdGhlIERPTVdpbmRvd0V4dGVuc2lvbiBvYmpl
Y3Qgd2hpY2ggbm90aWZpZXMgdGhlIEFQSSBsYXllciB3aGVuIHZhcmlvdXMgbGlmZXRpbWUgZXZl
bnRzIG9jY3VyOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246OkRPTVdpbmRvd0V4dGVuc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246On5ET01XaW5kb3dFeHRl
bnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjpkaXNjb25uZWN0
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjpyZWNvbm5lY3RG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246OndpbGxEZXRhY2hQ
YWdlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvd0V4dGVuc2lvbjo6d29ybGQpOgorCisgICAgICAgIFRoZSBET01XaW5kb3cg
aXRzZWxmIG1hbmFnZXMgdGhlIHdvcmxkLXRvLURPTVdpbmRvd0V4dGVuc2lvbiBtYXBwaW5nOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6d2lsbERldGFjaFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpleHRlbnNp
b25Gb3JXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNldEV4dGVuc2lvbkZv
cldvcmxkKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorCisgICAgICAgIEZvciBub3cs
IG9ubHkgaW5zdGFsbCBET01XaW5kb3dFeHRlbnNpb25zIGluIGEgd29ybGQgYmVmb3JlIHdlJ3Jl
IGFib3V0IHRvIGluamVjdAorICAgICAgICB1c2VyIHNjcmlwdHMgaW4gdGhhdCB3b3JsZC4KKyAg
ICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbmplY3RV
c2VyU2NyaXB0c0ZvcldvcmxkKToKKworICAgICAgICBBZGQgYSBjbGllbnQgbGF5ZXIgdG8gbm90
aWZ5IEFQSXMgYWJvdXQgdGhlIGxpZmV0aW1lcyBvZiBhIERPTVdpbmRvd0V4dGVuc2lvbjoKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50OjpleHRlbnNpb25JbnN0YWxsZWRPbkdsb2JhbE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6ZXh0ZW5zaW9uRGlzY29ubmVjdGVkRnJv
bUdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6ZXh0
ZW5zaW9uUmVjb25uZWN0ZWRUb0dsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudDo6ZGlkRGVzdHJveUdsb2JhbE9iamVjdEZvckV4dGVuc2lvbik6CisKKyAg
ICAgICAgUHJvamVjdCBmaWxlIG5vbnNlbnNlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorCiAy
MDEyLTAzLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW1hZ2VzIHRoYXQgcmVsb2FkIHZpYSBtZWRpYSBxdWVyaWVzIGRvbid0IHBhaW50IHdoZW4g
ZGV2aWNlIHNjYWxlIGZhY3RvciBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCBmZjgxOWIzLi44ZTNhNjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTI4OTMsNiArMjg5Myw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cGFnZS9ET01UaW1lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93RXh0ZW5zaW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dF
eHRlbnNpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDFmZGM2OWMuLjBmMzVh
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQpAQCAtMTAwMCw2ICsxMDAwLDcgQEAgU09VUkNFUyArPSBcCiAgICAg
cGFnZS9ET01TZWxlY3Rpb24uY3BwIFwKICAgICBwYWdlL0RPTVRpbWVyLmNwcCBcCiAgICAgcGFn
ZS9ET01XaW5kb3cuY3BwIFwKKyAgICBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAgXAogICAg
IHBhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwIFwKICAgICBwYWdlL0RyYWdDb250cm9sbGVyLmNw
cCBcCiAgICAgcGFnZS9FdmVudEhhbmRsZXIuY3BwIFwKQEAgLTIxMDcsNiArMjEwOCw3IEBAIEhF
QURFUlMgKz0gXAogICAgIHBhZ2UvRE9NU2VsZWN0aW9uLmggXAogICAgIHBhZ2UvRE9NVGltZXIu
aCBcCiAgICAgcGFnZS9ET01XaW5kb3cuaCBcCisgICAgcGFnZS9ET01XaW5kb3dFeHRlbnNpb24u
aCBcCiAgICAgcGFnZS9EcmFnQ29udHJvbGxlci5oIFwKICAgICBwYWdlL0RyYWdTdGF0ZS5oIFwK
ICAgICBwYWdlL0V2ZW50SGFuZGxlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3NzY0ZDFiLi5i
ZTUyMzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMjAsNiArMjIwLDcgQEAKICAgICAgICAgICAg
ICdwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL0Nvb3Jk
aW5hdGVzLmgnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93LmgnLAorICAgICAgICAgICAg
J3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmgnLAogICAgICAgICAgICAgJ3BhZ2UvRHJhZ0FjdGlv
bnMuaCcsCiAgICAgICAgICAgICAncGFnZS9EcmFnQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaCcsCkBAIC0yOTExLDYgKzI5MTIsOCBAQAogICAgICAgICAgICAg
J3BhZ2UvRE9NVGltZXIuY3BwJywKICAgICAgICAgICAgICdwYWdlL0RPTVRpbWVyLmgnLAogICAg
ICAgICAgICAgJ3BhZ2UvRE9NV2luZG93LmNwcCcsCisgICAgICAgICAgICAncGFnZS9ET01XaW5k
b3dFeHRlbnNpb24uY3BwJywKKyAgICAgICAgICAgICdwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5o
JywKICAgICAgICAgICAgICdwYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmNwcCcsCiAgICAgICAgICAg
ICAncGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5oJywKICAgICAgICAgICAgICdwYWdlL0RyYWdDb250
cm9sbGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IDVlMWRkZmEuLjBmMzIxMWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNjExMCw2ICsyNjExMCwxNCBAQAogCQkJCT4KIAkJ
CTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXERPTVdpbmRvd0V4
dGVuc2lvbi5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBhZ2VcRE9NV2luZG93RXh0ZW5zaW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcRE9NV2luZG93UHJvcGVydHkuY3BwIgog
CQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBmMjAwOGMzLi4xZWY1NjE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTIwLDYgKzE1
MjAsNyBAQAogCQk1MTc0MUQxMTBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzQxRDBEMEIwNzI1
OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxNzQxRDEyMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5
SXRlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTc0MUQwRTBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uY3BwICovOyB9OwogCQk1MTc0
RTIwQTEwQTFGNDRGMDBGOTVFNkYgLyogUG9wU3RhdGVFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NEUyMDgxMEExRjQ0RjAwRjk1RTZGIC8q
IFBvcFN0YXRlRXZlbnQuaCAqLzsgfTsKKwkJNTE3RkJBMUUxNTFBQjE3QzAwQjU3OTU5IC8qIERP
TVdpbmRvd0V4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTdGQkExNzE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9u
LmNwcCAqLzsgfTsKIAkJNTE4OUYwMUQxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg5
RjAxQjEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmNwcCAqLzsgfTsKIAkJNTE4
OUYwMUUxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4OUYwMUMxMEIzN0JEOTAwRjNDNzM5
IC8qIEpTUG9wU3RhdGVFdmVudC5oICovOyB9OwogCQk1MTg5RjBERTEwQjQ2QjBFMDBGM0M3Mzkg
LyogUG9wU3RhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTg5RjBERDEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAg
Ki87IH07CkBAIC0xNTU4LDYgKzE1NTksNyBAQAogCQk1MUUzRjlDNzBEQTA1OURDMDAyNTA5MTEg
LyogU3RvcmFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUUzRjlDNTBEQTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAgKi87IH07CiAJCTUx
RTNGOUQ2MERBMDVFMUQwMDI1MDkxMSAvKiBKU1N0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFM0Y5RDQwREEwNUUxRDAwMjUwOTExIC8q
IEpTU3RvcmFnZS5jcHAgKi87IH07CiAJCTUxRUM5MjY1MENFOTBERDQwMEY5MDMwOCAvKiBKU0N1
c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFQzkyNUQwQ0U5MERENDAwRjkwMzA4IC8qIEpTQ3Vz
dG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgKi87IH07CisJCTUxRkEyRDc4MTUyMTMy
QjMwMEMxQkEwQiAvKiBET01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01X
aW5kb3dFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MUZCNTUwNDExM0UzRTkxMDA4MjExNzYgLyogSlNDbG9zZUV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZCNTUwMjExM0Uz
RTkxMDA4MjExNzYgLyogSlNDbG9zZUV2ZW50LmggKi87IH07CiAJCTUxRkI1NTA1MTEzRTNFOTEw
MDgyMTE3NiAvKiBKU0Nsb3NlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFGQjU1MDMxMTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xvc2VFdmVu
dC5jcHAgKi87IH07CiAJCTUyMUQ0NkY2MTFBRUM5ODEwMDUxNDYxMyAvKiBLaWxsUmluZ01hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyMUQ0NkY1
MTFBRUM5ODEwMDUxNDYxMyAvKiBLaWxsUmluZ01hYy5tbSAqLzsgfTsKQEAgLTg0NjgsNiArODQ3
MCw4IEBACiAJCTUxNzQxRDBFMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGlzdG9yeUl0ZW0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTc0RTIwODEwQTFGNDRGMDBGOTVFNkYgLyogUG9w
U3RhdGVFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3BTdGF0ZUV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzRFMjBCMTBBMUY0OUEwMEY5
NUU2RiAvKiBQb3BTdGF0ZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQb3BTdGF0
ZUV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RkJBMTcxNTFBQTcx
QjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MTdGQkExODE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5z
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg5RjAxQjEwQjM3QkQ5MDBGM0M3
MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUG9wU3RhdGVFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxODlGMDFDMTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQb3BTdGF0ZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxODlGMEREMTBCNDZCMEUwMEYzQzczOSAvKiBQb3BTdGF0ZUV2ZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvcFN0YXRlRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyNTgsNiArMTUyNjIsOCBAQAog
CQkJCTE0MDNCOTk2MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuY3BwICovLAogCQkJCTE0
MDNCOTk1MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuaCAqLywKIAkJCQkxNDAzQjkwQzA5
RUIxMjQ1MDA3OTdDN0YgLyogRE9NV2luZG93LmlkbCAqLywKKwkJCQk1MTdGQkExNzE1MUFBNzFC
MDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLywKKwkJCQk1MTdGQkExODE1MUFB
NzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmggKi8sCiAJCQkJOTdEMkFEMDExNEI4
MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmNwcCAqLywKIAkJCQk5N0QyQUQwMjE0
QjgyM0E2MDA5M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuaCAqLywKIAkJCQlBNzE4NzYwRDBC
MkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAqLywKQEAgLTI0NjUyLDYgKzI0NjU4LDcg
QEAKIAkJCQkxQUY4OUE0MjE1MThGREVBMDBFNTQ3QjUgLyogVGlsZWRCYWNraW5nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGQjc4QUQyRTE1MUJGNUU2MDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNzFFNjIzRDExNTFGNzJBNjAwMzZFMkY0IC8qIFNWR0FuaW1h
dGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFGQTJENzgx
NTIxMzJCMzAwQzFCQTBCIC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yNzY0MSw2ICsyNzY0OCw3IEBACiAJCQkJQkNFOTNGNTMxNTE3RTBCMDAwOENDRjc0IC8qIFJl
bmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzg1RjIz
RjE1MTkxODczMDBCQzE3QkUgLyogUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTcxRTYyM0QwMTUxRjcyQTYwMDM2RTJGNCAvKiBTVkdBbmltYXRlZEludGVnZXJP
cHRpb25hbEludGVnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE3RkJBMUUxNTFBQjE3QzAw
QjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZTliYjAyNy4uZjZiNDVlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTYzLDYgKzYz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOwogICAgIGNsYXNzIENhY2hlZEZyYW1lOwogICAgIGNsYXNzIENvbG9yOworICAgIGNsYXNz
IERPTVdpbmRvd0V4dGVuc2lvbjsKICAgICBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiAgICAgY2xh
c3MgRG9jdW1lbnRMb2FkZXI7CiAgICAgY2xhc3MgRWxlbWVudDsKQEAgLTMzMSw2ICszMzIsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoV2lsbE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKikgeyB9CisKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGV4dGVuc2lvbkluc3RhbGxlZE9uR2xvYmFsT2JqZWN0KERPTVdp
bmRvd0V4dGVuc2lvbiopIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXh0ZW5zaW9uRGlzY29u
bmVjdGVkRnJvbUdsb2JhbE9iamVjdChET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KKyAgICAgICAg
dmlydHVhbCB2b2lkIGV4dGVuc2lvblJlY29ubmVjdGVkVG9HbG9iYWxPYmplY3QoRE9NV2luZG93
RXh0ZW5zaW9uKikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95R2xvYmFsT2Jq
ZWN0Rm9yRXh0ZW5zaW9uKERPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA5ZDRjM2I0
Li43NjRlYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiRE9NVGltZXIuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNs
dWRlICJET01VUkwuaCIKKyNpbmNsdWRlICJET01XaW5kb3dFeHRlbnNpb24uaCIKICNpbmNsdWRl
ICJET01XaW5kb3dOb3RpZmljYXRpb25zLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNs
dWRlICJEYXRhYmFzZUNhbGxiYWNrLmgiCkBAIC00NzcsNiArNDc4LDggQEAgdm9pZCBET01XaW5k
b3c6OndpbGxEZXRhY2hQYWdlKCkKICAgICBIYXNoU2V0PERPTVdpbmRvd1Byb3BlcnR5Kj46Oml0
ZXJhdG9yIHN0b3AgPSBtX3Byb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PERPTVdp
bmRvd1Byb3BlcnR5Kj46Oml0ZXJhdG9yIGl0ID0gbV9wcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ICE9
IHN0b3A7ICsraXQpCiAgICAgICAgICgqaXQpLT53aWxsRGV0YWNoUGFnZSgpOworICAgIAorICAg
IG1fd2luZG93RXh0ZW5zaW9ucy5jbGVhcigpOwogfQogCiB2b2lkIERPTVdpbmRvdzo6cmVnaXN0
ZXJQcm9wZXJ0eShET01XaW5kb3dQcm9wZXJ0eSogcHJvcGVydHkpCkBAIC00ODksNiArNDkyLDIx
IEBAIHZvaWQgRE9NV2luZG93Ojp1bnJlZ2lzdGVyUHJvcGVydHkoRE9NV2luZG93UHJvcGVydHkq
IHByb3BlcnR5KQogICAgIG1fcHJvcGVydGllcy5yZW1vdmUocHJvcGVydHkpOwogfQogCitET01X
aW5kb3dFeHRlbnNpb24qIERPTVdpbmRvdzo6ZXh0ZW5zaW9uRm9yV29ybGQoRE9NV3JhcHBlcldv
cmxkKiB3b3JsZCkKK3sKKyAgICByZXR1cm4gbV93aW5kb3dFeHRlbnNpb25zLmdldCh3b3JsZCku
Z2V0KCk7Cit9CisKK3ZvaWQgRE9NV2luZG93OjpzZXRFeHRlbnNpb25Gb3JXb3JsZChET01XaW5k
b3dFeHRlbnNpb24qIGV4dGVuc2lvbiwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKK3sKKyAgICBB
U1NFUlQod29ybGQpOworICAgIAorICAgIGlmIChleHRlbnNpb24pCisgICAgICAgIG1fd2luZG93
RXh0ZW5zaW9ucy5zZXQod29ybGQsIGV4dGVuc2lvbik7CisgICAgZWxzZQorICAgICAgICBtX3dp
bmRvd0V4dGVuc2lvbnMucmVtb3ZlKHdvcmxkKTsKK30KKwogdm9pZCBET01XaW5kb3c6OmNsZWFy
KCkKIHsKICAgICAvLyBUaGUgbWFpbiBmcmFtZSB3aWxsIGFsd2F5cyB0cnkgdG8gY2xlYXIgaXRz
IERPTVdpbmRvdyB3aGVuIGEgbmV3IGxvYWQgaXMgY29tbWl0dGVkLCBldmVuIGlmIHRoYXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IDcwMTRkOTYuLjNiYzQ1YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaApAQCAtNDIsNyArNDIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgRE9NQXBwbGljYXRpb25DYWNoZTsKICAgICBjbGFzcyBET01TZWxlY3Rpb247CiAgICAgY2xh
c3MgRE9NVVJMOworICAgIGNsYXNzIERPTVdpbmRvd0V4dGVuc2lvbjsKICAgICBjbGFzcyBET01X
aW5kb3dQcm9wZXJ0eTsKKyAgICBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiAgICAgY2xhc3MgRGF0
YWJhc2U7CiAgICAgY2xhc3MgRGF0YWJhc2VDYWxsYmFjazsKICAgICBjbGFzcyBEb2N1bWVudDsK
QEAgLTkzLDYgKzk1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHJlZ2lz
dGVyUHJvcGVydHkoRE9NV2luZG93UHJvcGVydHkqKTsKICAgICAgICAgdm9pZCB1bnJlZ2lzdGVy
UHJvcGVydHkoRE9NV2luZG93UHJvcGVydHkqKTsKIAorICAgICAgICBET01XaW5kb3dFeHRlbnNp
b24qIGV4dGVuc2lvbkZvcldvcmxkKERPTVdyYXBwZXJXb3JsZCopOworICAgICAgICB2b2lkIHNl
dEV4dGVuc2lvbkZvcldvcmxkKERPTVdpbmRvd0V4dGVuc2lvbiosIERPTVdyYXBwZXJXb3JsZCop
OworCiAgICAgICAgIHZvaWQgY2xlYXIoKTsKICAgICAgICAgdm9pZCBzdXNwZW5kRm9yUGFnZUNh
Y2hlKCk7CiAgICAgICAgIHZvaWQgcmVzdW1lRnJvbVBhZ2VDYWNoZSgpOwpAQCAtNDE4LDYgKzQy
Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBIYXNoU2V0PERPTVdpbmRvd1By
b3BlcnR5Kj4gbV9wcm9wZXJ0aWVzOwogCisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxET01XcmFw
cGVyV29ybGQqLCBSZWZQdHI8RE9NV2luZG93RXh0ZW5zaW9uPiA+IFdpbmRvd0V4dGVuc2lvbk1h
cDsKKyAgICAgICAgV2luZG93RXh0ZW5zaW9uTWFwIG1fd2luZG93RXh0ZW5zaW9uczsKKwogICAg
ICAgICBtdXRhYmxlIFJlZlB0cjxTY3JlZW4+IG1fc2NyZWVuOwogICAgICAgICBtdXRhYmxlIFJl
ZlB0cjxET01TZWxlY3Rpb24+IG1fc2VsZWN0aW9uOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxI
aXN0b3J5PiBtX2hpc3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvd0V4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lv
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzkzYWZlNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcApA
QCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTVdpbmRvd0V4dGVuc2lvbi5o
IgorCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0RPTVdpbmRvd0V4dGVuc2lvbjo6RE9NV2luZG93RXh0ZW5z
aW9uKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKKyAgICA6IERPTVdpbmRv
d1Byb3BlcnR5KGZyYW1lKQorICAgICwgbV93b3JsZCh3b3JsZCkKKyAgICAsIG1fd2FzRGV0YWNo
ZWQoZmFsc2UpCit7CisgICAgQVNTRVJUKHRoaXMtPmZyYW1lKCkpOworICAgIEFTU0VSVChtX3dv
cmxkKTsKKyAgICAKKyAgICBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgZnJhbWUtPmRvbVdp
bmRvdygpLT5zZXRFeHRlbnNpb25Gb3JXb3JsZCh0aGlzLCBtX3dvcmxkLmdldCgpKTsKK30KKwor
RE9NV2luZG93RXh0ZW5zaW9uOjp+RE9NV2luZG93RXh0ZW5zaW9uKCkKK3sKK30KKwordm9pZCBE
T01XaW5kb3dFeHRlbnNpb246OmRpc2Nvbm5lY3RGcmFtZSgpCit7CisgICAgLy8gRE9NV2luZG93
UHJvcGVydGllcyBhcmUgZGlzY29ubmVjdGVkIGZyb20gZnJhbWVzIGFmdGVyIHRoZXkgd2VyZSB0
b2xkIHRoZXknbGwKKyAgICAvLyBiZSBkZXRhY2hpbmcgZnJvbSB0aGUgcGFnZS4KKyAgICAvLyBX
ZSBvbmx5IHdhbnQgdG8gc3RheSBwcmVwYXJlZCBmb3IgY2xpZW50IGNhbGxiYWNrcyBpZiB3ZSd2
ZSBuZXZlciBiZWVuIGRldGFjaGVkLgorICAgIGlmICghbV93YXNEZXRhY2hlZCkgeworICAgICAg
ICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgICAgICBmcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpLT5leHRlbnNpb25EaXNjb25uZWN0ZWRGcm9tR2xvYmFsT2JqZWN0KHRoaXMpOwor
CisgICAgICAgIG1fZGlzY29ubmVjdGVkRnJhbWUgPSBmcmFtZTsKKyAgICB9CisKKyAgICBET01X
aW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1lKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0
ZW5zaW9uOjpyZWNvbm5lY3RGcmFtZShGcmFtZSogZnJhbWUpCit7CisgICAgLy8gRE9NV2luZG93
UHJvcGVydGllcyBzaG91bGQgbmV2ZXIgcmVjb25uZWN0IHRvIGEgZnJhbWUgYWZ0ZXIgdGhleSd2
ZSBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHBhZ2UuCisgICAgQVNTRVJUKCFtX3dhc0RldGFjaGVk
KTsKKyAgICBBU1NFUlQobV9kaXNjb25uZWN0ZWRGcmFtZSA9PSBmcmFtZSk7CisgICAgCisgICAg
RE9NV2luZG93UHJvcGVydHk6OnJlY29ubmVjdEZyYW1lKGZyYW1lKTsKKyAgICBtX2Rpc2Nvbm5l
Y3RlZEZyYW1lID0gMDsKKworICAgIHRoaXMtPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+
ZXh0ZW5zaW9uUmVjb25uZWN0ZWRUb0dsb2JhbE9iamVjdCh0aGlzKTsKK30KKwordm9pZCBET01X
aW5kb3dFeHRlbnNpb246OndpbGxEZXRhY2hQYWdlKCkKK3sKKyAgICAvLyB3aWxsRGV0YWNoUGFn
ZSBtaWdodCBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYnV0IHdlIG9ubHkgd2FudCB0byByZWFj
dCBvbmNlLgorICAgIGlmIChtX3dhc0RldGFjaGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBG
cmFtZSogZnJhbWUgPSBtX2Rpc2Nvbm5lY3RlZEZyYW1lLmdldCgpOworICAgIGlmICghZnJhbWUp
CisgICAgICAgIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBBU1NFUlQoZnJhbWUpOworCisg
ICAgZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkRGVzdHJveUdsb2JhbE9iamVjdEZvckV4
dGVuc2lvbih0aGlzKTsKKyAgICAKKyAgICBtX2Rpc2Nvbm5lY3RlZEZyYW1lID0gMDsKKyAgICBE
T01XaW5kb3dQcm9wZXJ0eTo6d2lsbERldGFjaFBhZ2UoKTsKKyAgICAKKyAgICBtX3dhc0RldGFj
aGVkID0gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93RXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZTY2Y2YzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93RXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRE9NV2luZG93RXh0ZW5zaW9uX2gKKyNkZWZp
bmUgRE9NV2luZG93RXh0ZW5zaW9uX2gKKworI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3BlcnR5Lmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBET01FeHRlbnNpb247CitjbGFzcyBET01XaW5kb3c7CitjbGFzcyBET01XcmFwcGVyV29ybGQ7
CitjbGFzcyBGcmFtZTsKKworY2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8RE9NV2luZG93RXh0ZW5zaW9uPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01XaW5kb3dFeHRlbnNpb24+IGNyZWF0ZShG
cmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IERPTVdpbmRvd0V4dGVuc2lvbihmcmFtZSwgd29ybGQpKTsKKyAgICB9
CisKKyAgICB+RE9NV2luZG93RXh0ZW5zaW9uKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29u
bmVjdEZyYW1lKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlY29ubmVjdEZyYW1lKEZy
YW1lKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hQYWdlKCkgT1ZFUlJJ
REU7CisKKyAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3Js
ZC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIERPTVdpbmRvd0V4dGVuc2lvbihGcmFtZSosIERP
TVdyYXBwZXJXb3JsZCopOworCisgICAgRE9NV2luZG93KiBtX2RvbVdpbmRvdzsKKyAgICBSZWZQ
dHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOworICAgIFJlZlB0cjxGcmFtZT4gbV9kaXNjb25u
ZWN0ZWRGcmFtZTsKKyAgICBib29sIG1fd2FzRGV0YWNoZWQ7Cit9OworCit9CisKKyNlbmRpZiAv
LyBET01XaW5kb3dFeHRlbnNpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBkNWMxNzZkLi41
MmRhNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAg
ICAgICAgICAgICAgMjAwMCBTaW1vbiBIYXVzbWFubiA8aGF1c21hbm5Aa2RlLm9yZz4KICAqICAg
ICAgICAgICAgICAgICAgICAgMjAwMCBTdGVmYW4gU2NoaW1hbnNraSA8MVN0ZWluQGdteC5kZT4K
ICAqICAgICAgICAgICAgICAgICAgICAgMjAwMSBHZW9yZ2UgU3RhaWtvcyA8c3RhaWtvc0BrZGUu
b3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUg
QWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAbnlwb3AuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJp
Z2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CkBAIC0zNiwxMCArMzYs
MTEgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFt
ZXMuaCIKICNpbmNsdWRlICJDYWNoZWRDU1NTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVD
bGllbnQuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUxvYWRlci5oIgorI2luY2x1ZGUgIkRPTVdpbmRvd0V4dGVuc2lvbi5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50VHlwZS5oIgogI2luY2x1ZGUgIkVkaXRpbmdUZXh0LmgiCiAjaW5jbHVkZSAiRWRpdG9y
Q2xpZW50LmgiCkBAIC01ODYsOCArNTg3LDE0IEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3Jp
cHRzRm9yV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgVXNlclNjcmlwdFZlCiAg
ICAgICAgIGlmIChzY3JpcHQtPmluamVjdGVkRnJhbWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9u
bHkgJiYgb3duZXJFbGVtZW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBp
ZiAoc2NyaXB0LT5pbmplY3Rpb25UaW1lKCkgPT0gaW5qZWN0aW9uVGltZSAmJiBVc2VyQ29udGVu
dFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhkb2MtPnVybCgpLCBzY3JpcHQtPndoaXRlbGlz
dCgpLCBzY3JpcHQtPmJsYWNrbGlzdCgpKSkKKyAgICAgICAgaWYgKHNjcmlwdC0+aW5qZWN0aW9u
VGltZSgpID09IGluamVjdGlvblRpbWUgJiYgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVz
UGF0dGVybnMoZG9jLT51cmwoKSwgc2NyaXB0LT53aGl0ZWxpc3QoKSwgc2NyaXB0LT5ibGFja2xp
c3QoKSkpIHsKKyAgICAgICAgICAgIGlmICghZG9tV2luZG93KCktPmV4dGVuc2lvbkZvcldvcmxk
KHdvcmxkKSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxET01XaW5kb3dFeHRlbnNpb24+IGV4
dGVuc2lvbiA9IERPTVdpbmRvd0V4dGVuc2lvbjo6Y3JlYXRlKHRoaXMsIHdvcmxkKTsKKyAgICAg
ICAgICAgICAgICBsb2FkZXIoKS0+Y2xpZW50KCktPmV4dGVuc2lvbkluc3RhbGxlZE9uR2xvYmFs
T2JqZWN0KGV4dGVuc2lvbi5nZXQoKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIG1f
c2NyaXB0LmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC0+c291cmNlKCks
IHNjcmlwdC0+dXJsKCkpLCB3b3JsZCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VM
aXN0cy50eHQKaW5kZXggYjJmZGU5ZC4uOWYxYjM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAg
LTMzMSw2ICszMzEsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcAor
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRl
bnNpb24uY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTM0Niw2ICszNDcsNyBA
QCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAogICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnNwZWN0b3IuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggZTVkNzg5YS4uZWJhMjVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisy
MDEyLTAzLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTAxMjAxNTU+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODI2NjQKKyAgICAgICAgTmVlZCBET01XaW5kb3cgbWVjaGFuaXNtIHRvIHN1
cHBsZW1lbnQgVXNlclNjcmlwdHMgZm9yIHBhZ2UgY2FjaGUgbm90aWZpY2F0aW9ucworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJLaXQyIG9i
amVjdCB0eXBlICJXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiI6CisgICAgICAgICogU2hhcmVk
L0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwOgor
ICAgICAgICAqIFNoYXJlZC9BUElDbGllbnRUcmFpdHMuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJ
T2JqZWN0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVBUElDYXN0Lmg6CisKKyAgICAgICAgSW1wbGVtZW50IGEgbWluaW1hbCBBUEkgZm9yIHRoYXQg
dHlwZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXS0J1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbkdldFR5cGVJRCk6CisgICAgICAgIChXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bkdldEZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmg6IEFkZGVkLgorCisgICAgICAgIFdyYXBwZXIgbGF5
ZXIgYmV0d2VlbiB0aGUgV2ViQ29yZSBvYmplY3QgYW5kIHRoZSBXSyBBUEkgb2JqZWN0OgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dF
eHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6ZXh0ZW5zaW9uV3JhcHBlck1h
cCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpn
ZXRPckNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbjo6SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6fkluamVjdGVkQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb246OmZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6dHlwZSk6CisKKyAg
ICAgICAgTGlzdGVuIGZvciBjYWxsYmFja3MgZnJvbSB0aGUgV2ViQ29yZSBsYXllciB0byBwaXBl
IHRoZW0gdG8gdGhlIEluamVjdGVkQnVuZGxlOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZXh0ZW5zaW9uSW5zdGFsbGVkT25HbG9iYWxPYmplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZXh0ZW5zaW9uRGlzY29ubmVjdGVk
RnJvbUdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpleHRlbnNpb25SZWNvbm5lY3RlZFRvR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERlc3Ryb3lHbG9iYWxPYmplY3RGb3JFeHRlbnNpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaDoKKworICAgICAgICBUYWtlIHRob3NlIGNhbGxiYWNrcyBmcm9tIHRoZSBXZWJDb3JlIGxh
eWVyIGFuZCBwaXBlIHRoZW0gdG8gdGhlIGJ1bmRsZSBjbGllbnQgQVBJOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZTo6ZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpkaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5z
aW9uRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY29u
bmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZTo6ZGlkRGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWREaXNjb25uZWN0RE9N
V2luZG93RXh0ZW5zaW9uRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVDbGllbnQ6OmRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkRGVzdHJveURPTVdpbmRvd0V4dGVu
c2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUNsaWVudC5oOgorCisgICAgICAgIFByb2plY3QgZmlsZSBmdW46CisgICAgICAgICogV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogd2luL1dlYktpdDIudmNwcm9qOgorCiAyMDEyLTAzLTI5ICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTEyNTUzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCAzNjRkM2QxLi4yMmVhYzI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbQpAQCAtODAzLDYgKzgwMyw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBc
CisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNw
cCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUZyYW1lLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVGcmFtZVByaXZhdGUuaCBcCkBAIC04NDIsNiArODQ0LDggQEAgd2Via2l0
Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVu
dC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggYzg2NTZlNC4uNTU3MjNiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTE2LDYgKzExNiw3IEBAIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlKiBXS0J1bmRsZVJlZjsKIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlQmFja0ZvcndhcmRMaXN0KiBXS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbSogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmOwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVET01DU1NTdHlsZURlY2xhcmF0aW9uKiBXS0J1bmRs
ZUNTU1N0eWxlRGVjbGFyYXRpb25SZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWY7CiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUZyYW1lKiBXS0J1bmRsZUZyYW1lUmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVIaXRUZXN0UmVzdWx0KiBXS0J1
bmRsZUhpdFRlc3RSZXN1bHRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRs
ZUluc3BlY3RvciogV0tCdW5kbGVJbnNwZWN0b3JSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UElDbGllbnRUcmFpdHMuY3BwCmluZGV4IDRmNWQ4ZmEuLjFhMGU1ZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwCkBAIC0yNiwxMCArMjYsMTYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElDbGllbnRUcmFpdHMuaCIKIAorI2luY2x1ZGUg
IldLQnVuZGxlLmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdlLmgiCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitjb25zdCBzaXplX3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlQ2xpZW50Pjo6aW50
ZXJmYWNlU2l6ZXNCeVZlcnNpb25bXSA9IHsKKyAgICBvZmZzZXRvZihXS0J1bmRsZUNsaWVudCwg
ZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbiksCisgICAgc2l6ZW9mKFdLQnVuZGxlQ2xpZW50
KQorfTsKKwogY29uc3Qgc2l6ZV90IEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ+OjppbnRlcmZhY2VTaXplc0J5VmVyc2lvbltdID0gewogICAgIG9mZnNldG9mKFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudCwgZGlkTGF5b3V0Rm9yRnJhbWUpLAogICAgIHNpemVvZihXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJQ2xpZW50VHJhaXRzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRz
LmgKaW5kZXggMTZmODZhMC4uMDQ4ZDY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSUNsaWVudFRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGll
bnRUcmFpdHMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBBUElDbGllbnRUcmFpdHNfaAog
I2RlZmluZSBBUElDbGllbnRUcmFpdHNfaAogCisjaW5jbHVkZSAiV0tCdW5kbGUuaCIKICNpbmNs
dWRlICJXS0J1bmRsZVBhZ2UuaCIKICNpbmNsdWRlICJXS1BhZ2UuaCIKIApAQCAtMzYsNiArMzcs
MTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENsaWVudEludGVyZmFjZT4gc3RydWN0IEFQSUNsaWVu
dFRyYWl0cyB7CiB9OwogdGVtcGxhdGUgPHR5cGVuYW1lIENsaWVudEludGVyZmFjZT4gY29uc3Qg
c2l6ZV90IEFQSUNsaWVudFRyYWl0czxDbGllbnRJbnRlcmZhY2U+OjppbnRlcmZhY2VTaXplc0J5
VmVyc2lvbltdID0geyBzaXplb2YoQ2xpZW50SW50ZXJmYWNlKSB9OwogCit0ZW1wbGF0ZTw+IHN0
cnVjdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVDbGllbnQ+IHsKKyAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGludGVyZmFjZVNpemVzQnlWZXJzaW9uWzJdOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1
Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudD4gewogICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bMl07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSU9iamVjdC5oCmluZGV4IGQ2Y2MwMzAuLjZlZjEwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJT2JqZWN0LmgKQEAgLTEwNiw2ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVCdW5k
bGUsCiAgICAgICAgIFR5cGVCdW5kbGVCYWNrRm9yd2FyZExpc3QsCiAgICAgICAgIFR5cGVCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtLAorICAgICAgICBUeXBlQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uLAogICAgICAgICBUeXBlQnVuZGxlRnJhbWUsCiAgICAgICAgIFR5cGVCdW5kbGVIaXRUZXN0
UmVzdWx0LAogICAgICAgICBUeXBlQnVuZGxlSW5zcGVjdG9yLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggMTZm
YmFkNC4uNzg4YmI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0zMDUsNiArMzA1LDcgQEAgSEVBREVSUyAr
PSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQu
aCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbi5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggXApAQCAtNjM4LDYgKzYz
OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGUuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwKKyAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBcCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcCBcCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3Bw
IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9y
LmNwcCBcCkBAIC02NTMsNiArNjU1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgXAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVu
dC5jcHAgXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01X
aW5kb3dFeHRlbnNpb24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDE3OWM5NjEuLjVmMzNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzNCw2ICs0MzQsOSBAQAogCQk1MUQxMzA1NTEz
ODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1MTEzODJFQUMwMDAzNTFFREQg
LyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgKi87IH07CiAJCTUxRDEzMDU2MTM4MkVBQzAwMDM1
MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1MjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJl
c3BvbnNlRGF0YS5oICovOyB9OwogCQk1MUQxMzA1ODEzODJGMTA1MDAzNTFFREQgLyogV2ViUHJv
Y2Vzc1Byb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFEMTMwNTcxMzgyRjEwNTAwMzUxRUREIC8qIFdlYlByb2Nlc3NQcm94eU1hYy5tbSAq
LzsgfTsKKwkJNTFFRkMxQ0YxNTI0RTYyNTAwQzlBOTM4IC8qIFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUZBMkQ1NDE1MjExMTg2MDBDMUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUZBMkQ3
NDE1MjEyREYxMDBDMUJBMEIgLyogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQTJENUMx
NTIxMUE1MDAwQzFCQTBCIC8qIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAq
LzsgfTsKKwkJNTFGQTJENzcxNTIxMkUyNjAwQzFCQTBCIC8qIFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRkEyRDc1MTUyMTJFMUUwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5j
cHAgKi87IH07CiAJCTUyNzJCMjhBMTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjcyQjI4
ODE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuY3BwICovOyB9OwogCQk1MjcyQjI4
QjE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzJCMjg5MTQwNjk4NUQwMDk2QTVEMCAvKiBT
dGF0aXN0aWNzRGF0YS5oICovOyB9OwogCQk1RDUxODQ1NTEzQkNGOUNDMDBDN0ZGNEEgLyogQVBJ
Q2xpZW50VHJhaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVENTE4NDUzMTNCQ0Y5Q0MwMEM3RkY0QSAvKiBBUElDbGllbnRUcmFpdHMuY3BwICov
OyB9OwpAQCAtMTQ1Niw2ICsxNDU5LDEwIEBACiAJCTUxRDEzMDUxMTM4MkVBQzAwMDM1MUVERCAv
KiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUQxMzA1MjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWNJdGVtUmVzcG9uc2VEYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDU3MTM4MkYxMDUwMDM1MUVERCAvKiBX
ZWJQcm9jZXNzUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJQcm9jZXNzUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxRkEyRDU0MTUyMTExODYwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUZBMkQ1QTE1MjExQTFFMDBD
MUJBMEIgLyogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGQTJENUMxNTIxMUE1MDAwQzFCQTBCIC8q
IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGQTJENzUxNTIxMkUxRTAwQzFCQTBCIC8q
IFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTI3MkIyODgxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpc3RpY3NE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3MkIyODkxNDA2OTg1RDAw
OTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0YXRpc3RpY3NEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVENTE4
NDUzMTNCQ0Y5Q0MwMEM3RkY0QSAvKiBBUElDbGllbnRUcmFpdHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJQ2xpZW50VHJhaXRzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTMyMjIsNiArMzIyOSw4IEBACiAJCQkJOTM1RUVCOTIxMjc3NjE1
RDAwMzMyMkI4IC8qIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oICovLAogCQkJ
CUJDRUU3REM0MTI4QjY0NUQwMDk4MjdEQSAvKiBJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgKi8s
CiAJCQkJQkNFRTdEQzMxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVjdGVkQnVuZGxlQ2xpZW50Lmgg
Ki8sCisJCQkJNTFGQTJENUMxNTIxMUE1MDAwQzFCQTBCIC8qIEluamVjdGVkQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uLmNwcCAqLywKKwkJCQk1MUZBMkQ1QTE1MjExQTFFMDBDMUJBMEIgLyogSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCAqLywKIAkJCQlCQzQ5ODYxNzEyNEQxMEUy
MDBEODM0RTEgLyogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCAqLywKIAkJCQlCQzQ5
ODYxNjEyNEQxMEUyMDBEODM0RTEgLyogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmggKi8s
CiAJCQkJQkM4MTQ3RDQxMkY2NkQzMTAwN0IyQzMyIC8qIEluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbi5jcHAgKi8sCkBAIC0zMjc1LDYgKzMyODQsOCBAQAogCQkJCTkzNUVFQjk2MTI3NzYx
NkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oICovLAogCQkJCTkzNUVFQjk3
MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovLAog
CQkJCTkzNUVFQjk4MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW0uaCAqLywKKwkJCQk1MUZBMkQ3NTE1MjEyRTFFMDBDMUJBMEIgLyogV0tCdW5kbGVET01XaW5k
b3dFeHRlbnNpb24uY3BwICovLAorCQkJCTUxRkEyRDU0MTUyMTExODYwMEMxQkEwQiAvKiBXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oICovLAogCQkJCUJDRDI1RjE2MTFENkJERTEwMDE2OUIw
RSAvKiBXS0J1bmRsZUZyYW1lLmNwcCAqLywKIAkJCQlCQ0QyNUYxNTExRDZCREUxMDAxNjlCMEUg
LyogV0tCdW5kbGVGcmFtZS5oICovLAogCQkJCUJDRjA0OUU0MTFGRTIwRjYwMEY4NkE1OCAvKiBX
S0J1bmRsZUZyYW1lUHJpdmF0ZS5oICovLApAQCAtNDE3OCw2ICs0MTg5LDcgQEAKIAkJCQkzNzYw
ODgyMzE1MDQxNEY3MDBGQzgyQzcgLyogV0tSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTM3OTQ4NDA0MTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzc5NDg0MDkxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxRUZDMUNGMTUyNEU2MjUwMEM5QTkzOCAvKiBXS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00OTIxLDYgKzQ5MzMsOCBAQAog
CQkJCTM3NjA4ODIyMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzNzk0ODQwMzE1MEMzNTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc5NDg0MDgxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVu
ZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFGQTJENzQxNTIxMkRGMTAwQzFCQTBC
IC8qIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUxRkEyRDc3MTUyMTJFMjYwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaAppbmRleCA5ZTI3M2JhLi44ZDI5
YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSwxNyArMzksMzAgQEAgdHlwZWRlZiB2
b2lkICgqV0tCdW5kbGVXaWxsRGVzdHJveVBhZ2VDYWxsYmFjaykoV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS0J1bmRsZVBhZ2UKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlRGlkSW5pdGlhbGl6ZVBhZ2VH
cm91cENhbGxiYWNrKShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRs
ZURpZFJlY2VpdmVNZXNzYWdlQ2FsbGJhY2spKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdS
ZWYgbmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
IAordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVEaWRJbnN0YWxsRE9NV2luZG93RXh0ZW5zaW9uQ2Fs
bGJhY2spKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYg
ZXh0ZW5zaW9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVu
ZGxlRGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZUNhbGxiYWNrKShXS0J1
bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZURpZFJlY29u
bmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24sIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVEaWREZXN0cm95RE9NV2luZG93RXh0
ZW5zaW9uQ2FsbGJhY2spKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVET01XaW5kb3dFeHRl
bnNpb25SZWYgZXh0ZW5zaW9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKwogc3RydWN0IFdL
QnVuZGxlQ2xpZW50IHsKICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CiAgICAgY29uc3Qgdm9pZCAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGllbnRJbmZvOworICAgIAorICAgIC8vIFZlcnNpb24gMAogICAgIFdLQnVuZGxlRGlkQ3JlYXRl
UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ3Jl
YXRlUGFnZTsKICAgICBXS0J1bmRsZVdpbGxEZXN0cm95UGFnZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxEZXN0cm95UGFnZTsKICAgICBXS0J1bmRsZURp
ZEluaXRpYWxpemVQYWdlR3JvdXBDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZEluaXRpYWxpemVQYWdlR3JvdXA7CiAgICAgV0tCdW5kbGVEaWRSZWNlaXZlTWVzc2FnZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlTWVzc2Fn
ZTsKKyAgICAKKyAgICAvLyBWZXJzaW9uIDEKKyAgICBXS0J1bmRsZURpZEluc3RhbGxET01XaW5k
b3dFeHRlbnNpb25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgIGRpZEluc3RhbGxET01X
aW5kb3dFeHRlbnNpb247CisgICAgV0tCdW5kbGVEaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5z
aW9uRnJvbUZyYW1lQ2FsbGJhY2sgICAgICAgICAgICBkaWREaXNjb25uZWN0RE9NV2luZG93RXh0
ZW5zaW9uRnJvbUZyYW1lOworICAgIFdLQnVuZGxlRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5z
aW9uVG9GcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0
ZW5zaW9uVG9GcmFtZTsKKyAgICBXS0J1bmRsZURpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb25D
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgZGlkRGVzdHJveURPTVdpbmRvd0V4dGVuc2lv
bjsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZUNsaWVudCBXS0J1bmRsZUNsaWVudDsKIAot
ZW51bSB7IGtXS0J1bmRsZUNsaWVudEN1cnJlbnRWZXJzaW9uID0gMCB9OworZW51bSB7IGtXS0J1
bmRsZUNsaWVudEN1cnJlbnRWZXJzaW9uID0gMSB9OwogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tC
dW5kbGVHZXRUeXBlSUQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKaW5kZXgg
ZGIzMjcxNi4uZTQwYzg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCkBAIC00
NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgSW5qZWN0ZWRCdW5kbGU7CiBj
bGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIEluamVjdGVkQnVuZGxl
QmFja0ZvcndhcmRMaXN0SXRlbTsKK2NsYXNzIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OwogY2xhc3MgSW5qZWN0ZWRC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOwpA
QCAtNTgsNiArNTksNyBAQCBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKIFdLX0FERF9BUElfTUFQ
UElORyhXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYsIEluamVjdGVkQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbSkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUJhY2tGb3J3YXJkTGlz
dFJlZiwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QpCiBXS19BRERfQVBJX01BUFBJTkco
V0tCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uUmVmLCBXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0
aW9uKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBJ
bmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbikKIFdLX0FERF9BUElfTUFQUElORyhXS0J1
bmRsZUZyYW1lUmVmLCBXZWJGcmFtZSkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUhpdFRl
c3RSZXN1bHRSZWYsIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCkKIFdLX0FERF9BUElfTUFQ
UElORyhXS0J1bmRsZUluc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5hZDY5MzZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbi5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbi5oIgorCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVET01XaW5k
b3dFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25HZXRU
eXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbjo6QVBJVHlwZSk7Cit9CisKK1dLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVET01XaW5kb3dF
eHRlbnNpb25HZXRGcmFtZShXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24p
Cit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChleHRlbnNpb24pLT5mcmFtZSgpKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjAwYjg0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbi5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uX2gKKyNkZWZpbmUgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25faAorCisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25HZXRU
eXBlSUQoKTsKKworV0tfRVhQT1JUIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVET01XaW5kb3dF
eHRlbnNpb25HZXRGcmFtZShXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24p
OworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb25faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA0MmY4Njc0
Li4wNjAwYzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDU2LDQgKzQ1NiwyNCBAQCB2
b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiBjb25uZWN0aW9uLCBDb3JlSVBDOgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2
b2lkIEluamVjdGVkQnVuZGxlOjpkaWRJbnN0YWxsRE9NV2luZG93RXh0ZW5zaW9uKEluamVjdGVk
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgbV9jbGllbnQuZGlk
SW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbih0aGlzLCBleHRlbnNpb24pOworfQorCit2b2lkIElu
amVjdGVkQnVuZGxlOjpkaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUZyYW1lKElu
amVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgbV9jbGll
bnQuZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZSh0aGlzLCBleHRlbnNp
b24pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Ub0ZyYW1lKEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBleHRlbnNpb24p
Cit7CisgICAgbV9jbGllbnQuZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9GcmFtZSh0
aGlzLCBleHRlbnNpb24pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpkaWREZXN0cm95RE9N
V2luZG93RXh0ZW5zaW9uKEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBleHRlbnNp
b24pCit7CisgICAgbV9jbGllbnQuZGlkRGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbih0aGlzLCBl
eHRlbnNpb24pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApp
bmRleCAzYmM2NjAyLi5iODgzNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0xNTIsNiArMTUy
LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7
CiAKKyAgICB2b2lkIGRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24oSW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb24qKTsKKyAgICB2b2lkIGRpZERpc2Nvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Gcm9tRnJhbWUoSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qKTsKKyAgICB2
b2lkIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUoSW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb24qKTsKKyAgICB2b2lkIGRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNp
b24oSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qKTsKKwogICAgIHN0YXRpYyB2b2lk
IHJlcG9ydEV4Y2VwdGlvbihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgZXhjZXB0aW9uKTsKIAog
ICAgIHN0YXRpYyBib29sIGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IGYyZTRmMmIuLjEyMzdhMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVDbGllbnQuY3BwCkBAIC02Miw0ICs2MiwzNiBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2FnZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBjb25z
dCBTdHJpbgogICAgIG1fY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlKHRvQVBJKGJ1bmRsZSksIHRv
QVBJKG1lc3NhZ2VOYW1lLmltcGwoKSksIHRvQVBJKG1lc3NhZ2VCb2R5KSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZEluc3RhbGxET01X
aW5kb3dFeHRlbnNpb24oSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSwgSW5qZWN0ZWRCdW5kbGVET01X
aW5kb3dFeHRlbnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBpZiAoIW1fY2xpZW50LnZlcnNpb24g
fHwgIW1fY2xpZW50LmRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fY2xpZW50LmRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24odG9BUEkoYnVu
ZGxlKSwgdG9BUEkoZXh0ZW5zaW9uKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQg
SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9t
RnJhbWUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSwgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRl
bnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBpZiAoIW1fY2xpZW50LnZlcnNpb24gfHwhbV9jbGll
bnQuZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9jbGllbnQuZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21G
cmFtZSh0b0FQSShidW5kbGUpLCB0b0FQSShleHRlbnNpb24pLCBtX2NsaWVudC5jbGllbnRJbmZv
KTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjb25uZWN0RE9NV2luZG93
RXh0ZW5zaW9uVG9GcmFtZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBJbmplY3RlZEJ1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAgIGlmICghbV9jbGllbnQudmVyc2lv
biB8fCFtX2NsaWVudC5kaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5kaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNp
b25Ub0ZyYW1lKHRvQVBJKGJ1bmRsZSksIHRvQVBJKGV4dGVuc2lvbiksIG1fY2xpZW50LmNsaWVu
dEluZm8pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWREZXN0cm95RE9NV2lu
ZG93RXh0ZW5zaW9uKEluamVjdGVkQnVuZGxlKiBidW5kbGUsIEluamVjdGVkQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgaWYgKCFtX2NsaWVudC52ZXJzaW9uIHx8
IW1fY2xpZW50LmRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24pCisgICAgICAgIHJldHVybjsK
KworICAgIG1fY2xpZW50LmRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24odG9BUEkoYnVuZGxl
KSwgdG9BUEkoZXh0ZW5zaW9uKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IDMyYmUyOTAu
LjA2ZmMzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDgg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEFQSU9iamVjdDsKIGNsYXNzIEluamVjdGVk
QnVuZGxlOworY2xhc3MgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb247CitjbGFzcyBX
ZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKIApAQCAt
NDMsNiArNDUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbERlc3Ryb3lQYWdlKEluamVjdGVk
QnVuZGxlKiwgV2ViUGFnZSopOwogICAgIHZvaWQgZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChJbmpl
Y3RlZEJ1bmRsZSosIFdlYlBhZ2VHcm91cFByb3h5Kik7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJbmplY3RlZEJ1bmRsZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVj
dCogbWVzc2FnZUJvZHkpOworCisgICAgdm9pZCBkaWRJbnN0YWxsRE9NV2luZG93RXh0ZW5zaW9u
KEluamVjdGVkQnVuZGxlKiwgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIGV4dGVu
c2lvbik7CisgICAgdm9pZCBkaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUZyYW1l
KEluamVjdGVkQnVuZGxlKiwgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qKTsKKyAg
ICB2b2lkIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUoSW5qZWN0ZWRCdW5k
bGUqLCBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiopOworICAgIHZvaWQgZGlkRGVz
dHJveURPTVdpbmRvd0V4dGVuc2lvbihJbmplY3RlZEJ1bmRsZSosIEluamVjdGVkQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVET01XaW5kb3dFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNkODRkNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01X
aW5kb3dFeHRlbnNpb24uY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCIKKworI2luY2x1ZGUgIldlYkZyYW1l
TG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3dFeHRlbnNpb24uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0eXBlZGVmIEhh
c2hNYXA8V2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKiwgUmVmUHRyPEluamVjdGVkQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uPiA+IERPTVdpbmRvd0V4dGVuc2lvbldyYXBwZXJNYXA7CitzdGF0
aWMgRE9NV2luZG93RXh0ZW5zaW9uV3JhcHBlck1hcCYgZXh0ZW5zaW9uV3JhcHBlck1hcCgpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChET01XaW5kb3dFeHRlbnNpb25XcmFwcGVyTWFwLCBt
YXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCitJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbiogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OmdldE9yQ3JlYXRlV3Jh
cHBlcihXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qIGNvcmVFeHRlbnNpb24pCit7CisgICAg
aWYgKCFjb3JlRXh0ZW5zaW9uKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBjb25zdCBS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24+JiBleGlzdGluZ1dyYXBwZXIg
PSBleHRlbnNpb25XcmFwcGVyTWFwKCkuZ2V0KGNvcmVFeHRlbnNpb24pOworICAgIGlmIChleGlz
dGluZ1dyYXBwZXIpCisgICAgICAgIHJldHVybiBleGlzdGluZ1dyYXBwZXIuZ2V0KCk7CisgICAg
CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uPiB3cmFwcGVyID0g
YWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKGNvcmVFeHRlbnNp
b24pKTsKKyAgICBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogcmVzdWx0ID0gd3Jh
cHBlci5nZXQoKTsKKyAgICBleHRlbnNpb25XcmFwcGVyTWFwKCkuc2V0KGNvcmVFeHRlbnNpb24s
IHdyYXBwZXIucmVsZWFzZSgpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0luamVjdGVk
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bihXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qIGV4dGVuc2lvbikKKyAgICA6IG1fY29yZUV4
dGVuc2lvbihleHRlbnNpb24pCit7CisgICAgQVNTRVJUKG1fY29yZUV4dGVuc2lvbik7Cit9CisK
K0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjp+SW5qZWN0ZWRCdW5kbGVET01XaW5k
b3dFeHRlbnNpb24oKQoreworICAgIGV4dGVuc2lvbldyYXBwZXJNYXAoKS5yZW1vdmUobV9jb3Jl
RXh0ZW5zaW9uLmdldCgpKTsKK30KKworV2ViRnJhbWUqIEluamVjdGVkQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uOjpmcmFtZSgpIGNvbnN0Cit7CisgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0g
bV9jb3JlRXh0ZW5zaW9uLT5mcmFtZSgpOworICAgIHJldHVybiBmcmFtZSA/IHN0YXRpY19jYXN0
PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSktPndlYkZy
YW1lKCkgOiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5k
b3dFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xOTZhY2M4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bi5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uX2gKKyNk
ZWZpbmUgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb25faAorCisjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisgICAgY2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uOworICAgIGNsYXNzIEZyYW1lOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRnJhbWU7CisKK2NsYXNzIEluamVjdGVkQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVCdW5kbGVET01XaW5kb3dFeHRlbnNpb247
CisKKyAgICBzdGF0aWMgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIGdldE9yQ3Jl
YXRlV3JhcHBlcihXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKTsKKworICAgIHZpcnR1YWwg
fkluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKCkgT1ZFUlJJREU7CisgICAgCisgICAg
V2ViRnJhbWUqIGZyYW1lKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBJbmplY3RlZEJ1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbihXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKTsKKworICAgIFJlZlB0
cjxXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24+IG1fY29yZUV4dGVuc2lvbjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dF
eHRlbnNpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4MjBmNjE4
Li41YTY4ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMjgsNiAr
MjgsOCBAQAogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNz
YWdlQ29kZXJzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCIKQEAgLTEz
ODgsNiArMTM5MCwyNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENs
ZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqCiAjZW5kaWYKIH0KIAordm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZXh0ZW5zaW9uSW5zdGFsbGVkT25HbG9iYWxPYmplY3Qo
V2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lv
bihJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6Z2V0T3JDcmVhdGVXcmFwcGVyKGV4
dGVuc2lvbikpOworfQorCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpleHRlbnNpb25EaXNj
b25uZWN0ZWRGcm9tR2xvYmFsT2JqZWN0KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiogZXh0
ZW5zaW9uKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVkQnVuZGxlKCktPmRp
ZERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tRnJhbWUoSW5qZWN0ZWRCdW5kbGVET01X
aW5kb3dFeHRlbnNpb246OmdldE9yQ3JlYXRlV3JhcHBlcihleHRlbnNpb24pKTsKK30KKwordm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZXh0ZW5zaW9uUmVjb25uZWN0ZWRUb0dsb2JhbE9iamVj
dChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRSZWNvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Ub0ZyYW1lKEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpnZXRPckNyZWF0
ZVdyYXBwZXIoZXh0ZW5zaW9uKSk7Cit9CisKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
ZERlc3Ryb3lHbG9iYWxPYmplY3RGb3JFeHRlbnNpb24oV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5z
aW9uKiBleHRlbnNpb24pCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5qZWN0ZWRCdW5k
bGUoKS0+ZGlkRGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbihJbmplY3RlZEJ1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbjo6Z2V0T3JDcmVhdGVXcmFwcGVyKGV4dGVuc2lvbikpOworfQorCiB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojpkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggM2M3ZDVi
Zi4uZGQ0ZmNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTkzLDYgKzE5
MywxMSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5k
b3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopIE9WRVJSSURFOwogCisg
ICAgdmlydHVhbCB2b2lkIGV4dGVuc2lvbkluc3RhbGxlZE9uR2xvYmFsT2JqZWN0KFdlYkNvcmU6
OkRPTVdpbmRvd0V4dGVuc2lvbiopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBleHRlbnNp
b25EaXNjb25uZWN0ZWRGcm9tR2xvYmFsT2JqZWN0KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lv
biopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBleHRlbnNpb25SZWNvbm5lY3RlZFRvR2xv
YmFsT2JqZWN0KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaWREZXN0cm95R2xvYmFsT2JqZWN0Rm9yRXh0ZW5zaW9uKFdlYkNvcmU6OkRP
TVdpbmRvd0V4dGVuc2lvbiopIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50
RWxlbWVudEF2YWlsYWJsZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3Jt
Rmlyc3ROYXZpZ2F0aW9uKCkgY29uc3QgT1ZFUlJJREU7IC8vICJOYXZpZ2F0aW9uIiBoZXJlIG1l
YW5zIGEgdHJhbnNpdGlvbiBmcm9tIG9uZSBwYWdlIHRvIGFub3RoZXIgdGhhdCBlbmRzIHVwIGlu
IHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLnZjcHJvaiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagpp
bmRleCBmYjk1YTlkLi5jMmZlZjA5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0Mi52Y3Byb2oKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCkBAIC0y
MzU0LDYgKzIzNTQsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcSW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb24uY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxJbmplY3RlZEJ1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxl
CiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxJbmplY3Rl
ZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjQ4MCw2
ICsyNDg4LDE0IEBACiAJCQkJCQkJPgogCQkJCQkJPC9GaWxlPgogCQkJCQkJPEZpbGUKKwkJCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb24uY3BwIgorCQkJCQkJCT4KKwkJCQkJCTwvRmlsZT4KKwkJCQkJ
CTxGaWxlCisJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxl
XEFQSVxjXFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgiCisJCQkJCQkJPgorCQkJCQkJPC9G
aWxlPgorCQkJCQkJPEZpbGUKIAkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcSW5q
ZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVGcmFtZS5jcHAiCiAJCQkJCQkJPgogCQkJCQkJPC9G
aWxlPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDZmNjc3ZGEuLjdiMzZkZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMi0wMy0zMCAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMTIwMTU1PiBh
bmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNjY0CisgICAgICAg
IE5lZWQgRE9NV2luZG93IG1lY2hhbmlzbSB0byBzdXBwbGVtZW50IFVzZXJTY3JpcHRzIGZvciBw
YWdlIGNhY2hlIG5vdGlmaWNhdGlvbnMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgdG8gbmV3IGNsaWVudCBpbnRlcmZhY2U6CisgICAgICAg
ICogTWluaUJyb3dzZXIvbWFjL1dlYkJ1bmRsZS9XZWJCdW5kbGVNYWluLm06CisgICAgICAgIChX
S0J1bmRsZUluaXRpYWxpemUpOiAKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6
OmluaXRpYWxpemUpOgorCisgICAgICAgIEFkZCBuZXcgY2xpZW50IGNhbGxiYWNrcyB0byB0aGUg
c2hhcmVkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlciBhbmQgSW5qZWN0ZWRCdW5kbGVUZXN0Ogor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRp
ZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SW5q
ZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJv
bUZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxl
cjo6ZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9GcmFtZSk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZERlc3Ryb3lET01XaW5kb3dF
eHRlbnNpb24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9s
bGVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZVRlc3QuaDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlVGVzdDo6ZGlkSW5zdGFsbERPTVdp
bmRvd0V4dGVuc2lvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZVRl
c3Q6OmRpZERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tRnJhbWUpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVUZXN0OjpkaWRSZWNvbm5lY3RET01XaW5kb3dF
eHRlbnNpb25Ub0ZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxl
VGVzdDo6ZGlkRGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbik6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAg
VUlQcm9jZXNzIHNpZGUgb2YgdGhlIHRlc3QgdGhhdCBleGVyY2lzZXMgZXh0ZW5zaW9ucyBpbiBh
bmQgb3V0IG9mIHRoZSBwYWdlIGNhY2hlLAorICAgICAgICBsaXN0ZW5pbmcgZm9yIGEgcGFydGlj
dWxhciBzZXF1ZW5jZSBvZiBtZXNzYWdlcyBmcm9tIHRoZSBidW5kbGU6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcDogQWRk
ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKworICAgICAgICBCdW5k
bGUgc2lkZSBvZiB0aGUgdGVzdC4gTW9uaXRvcnMgZnJhbWUgbG9hZHMgYW5kIGV4dGVuc2lvbiBj
YWxsYmFja3MsIG1lc3NhZ2luZworICAgICAgICBlYWNoIGV2ZW50IHVwIHRvIHRoZSBVSVByb2Nl
c3M6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljX0J1bmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoRE9NV2luZG93RXh0ZW5zaW9u
QmFzaWMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6
OkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZEZp
bmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRl
bnNpb25CYXNpYzo6Z2V0T3JFc3RhYmxpc2hGcmFtZUlEKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpmcmFtZUxvYWRGaW5pc2hlZCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6ZGlkQ3JlYXRl
UGFnZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6
c2VuZEJ1bmRsZUV4dGVuc2lvbk1lc3NhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9N
V2luZG93RXh0ZW5zaW9uQmFzaWM6OmRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24pOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OmRpZERpc2Nvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Gcm9tRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OmRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRv
RnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6
OmRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24pOgorCisgICAgICAgIE1ha2UgYSBtZXRob2Qg
c3RhdGljIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBzdGF0aWMgYWxsIGFsb25nOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KToKKwogMjAxMi0wMy0yOSAgRG9taW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNA
bGludXguaW50ZWwuY29tPgogCiAgICAgICAgIFtHVEtdW0VGTF0gcnVuLWphdmFzY3JpcHRjb3Jl
LXRlc3RzIHNob3VsZCBiZSBydW4gdGhyb3VnaCBqaGJ1aWxkCmRpZmYgLS1naXQgYS9Ub29scy9N
aW5pQnJvd3Nlci9tYWMvV2ViQnVuZGxlL1dlYkJ1bmRsZU1haW4ubSBiL1Rvb2xzL01pbmlCcm93
c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVuZGxlTWFpbi5tCmluZGV4IDJkYTNlOTUuLjEwMWE4YTQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVuZGxlTWFp
bi5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVuZGxlTWFpbi5t
CkBAIC05OCw3ICs5OCwxMSBAQCB2b2lkIFdLQnVuZGxlSW5pdGlhbGl6ZShXS0J1bmRsZVJlZiBi
dW5kbGUsIFdLVHlwZVJlZiBpbml0aWFsaXphdGlvblVzZXJEYXRhKQogICAgICAgICBkaWRDcmVh
dGVQYWdlLAogICAgICAgICB3aWxsRGVzdHJveVBhZ2UsCiAgICAgICAgIDAsIC8vIGRpZEluaXRp
YWxpemVQYWdlR3JvdXAKLSAgICAgICAgZGlkUmVjaWV2ZU1lc3NhZ2UKKyAgICAgICAgZGlkUmVj
aWV2ZU1lc3NhZ2UsCisgICAgICAgIDAsIC8vIGRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNpb24K
KyAgICAgICAgMCwgLy8gZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZQor
ICAgICAgICAwLCAvLyBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lCisgICAg
ICAgIDAgIC8vIGRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24KICAgICB9OwogICAgIFdLQnVu
ZGxlU2V0Q2xpZW50KGJ1bmRsZSwgJmNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlQ29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0luamVjdGVkQnVuZGxlQ29udHJvbGxlci5jcHAKaW5kZXggMTMzNzVjNS4uYmM0MWFiZiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNw
cApAQCAtNTUsMTIgKzU1LDE2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjppbml0
aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFdLQnVuZGxlQ2xpZW50IGNsaWVudCA9IHsKLSAgICAgICAgMCwKKyAgICAg
ICAgMSwKICAgICAgICAgdGhpcywKICAgICAgICAgZGlkQ3JlYXRlUGFnZSwKICAgICAgICAgd2ls
bERlc3Ryb3lQYWdlLAogICAgICAgICBkaWRJbml0aWFsaXplUGFnZUdyb3VwLAotICAgICAgICBk
aWRSZWNlaXZlTWVzc2FnZQorICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZSwKKyAgICAgICAgZGlk
SW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbiwKKyAgICAgICAgZGlkRGlzY29ubmVjdERPTVdpbmRv
d0V4dGVuc2lvbkZyb21GcmFtZSwKKyAgICAgICAgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5z
aW9uVG9GcmFtZSwKKyAgICAgICAgZGlkRGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbgogICAgIH07
CiAgICAgV0tCdW5kbGVTZXRDbGllbnQobV9idW5kbGUsICZjbGllbnQpOwogCkBAIC0xMDMsNiAr
MTA3LDM0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmCiAgICAgc2VsZi0+bV9jdXJyZW50VGVz
dC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoYnVuZGxlLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwog
fQogCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkSW5zdGFsbERPTVdpbmRvd0V4
dGVuc2lvbihXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVm
IGV4dGVuc2lvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBJbmplY3RlZEJ1bmRs
ZUNvbnRyb2xsZXIqIHNlbGYgPSBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisgICAgYXNzZXJ0KHNlbGYtPm1fY3Vy
cmVudFRlc3QpOworICAgIHNlbGYtPm1fY3VycmVudFRlc3QtPmRpZEluc3RhbGxET01XaW5kb3dF
eHRlbnNpb24oYnVuZGxlLCBleHRlbnNpb24pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29u
dHJvbGxlcjo6ZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZShXS0J1bmRs
ZVJlZiBidW5kbGUsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqIHNl
bGYgPSBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSk7CisgICAgYXNzZXJ0KHNlbGYtPm1fY3VycmVudFRlc3QpOworICAg
IHNlbGYtPm1fY3VycmVudFRlc3QtPmRpZERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9t
RnJhbWUoYnVuZGxlLCBleHRlbnNpb24pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJv
bGxlcjo6ZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9GcmFtZShXS0J1bmRsZVJlZiBi
dW5kbGUsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3sKKyAgICBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqIHNlbGYgPSBz
dGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihj
bGllbnRJbmZvKSk7CisgICAgYXNzZXJ0KHNlbGYtPm1fY3VycmVudFRlc3QpOworICAgIHNlbGYt
Pm1fY3VycmVudFRlc3QtPmRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUoYnVu
ZGxlLCBleHRlbnNpb24pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlk
RGVzdHJveURPTVdpbmRvd0V4dGVuc2lvbihXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sK
KyAgICBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqIHNlbGYgPSBzdGF0aWNfY2FzdDxJbmplY3Rl
ZEJ1bmRsZUNvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisgICAg
YXNzZXJ0KHNlbGYtPm1fY3VycmVudFRlc3QpOworICAgIHNlbGYtPm1fY3VycmVudFRlc3QtPmRp
ZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24oYnVuZGxlLCBleHRlbnNpb24pOworfQorCiB2b2lk
IEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZHVtcFRlc3ROYW1lcygpCiB7CiAgICAgc3RkOjpt
YXA8c3RkOjpzdHJpbmcsIENyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uPjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX2NyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9ucy5iZWdpbigp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xs
ZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmgKaW5k
ZXggNWVlNzE1Ni4uZDI5M2ZhMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Jbmpl
Y3RlZEJ1bmRsZUNvbnRyb2xsZXIuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVk
QnVuZGxlQ29udHJvbGxlci5oCkBAIC01OCw2ICs1OCwxMCBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyB2b2lkIHdpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRJbml0aWFsaXplUGFnZUdy
b3VwKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYsIFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZEluc3RhbGxET01XaW5kb3dFeHRlbnNp
b24oV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRl
bnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZERpc2Nv
bm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tRnJhbWUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJh
bWUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRl
bnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZERlc3Ry
b3lET01XaW5kb3dFeHRlbnNpb24oV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZURPTVdpbmRv
d0V4dGVuc2lvblJlZiBleHRlbnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiAgICAg
c3RkOjptYXA8c3RkOjpzdHJpbmcsIENyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uPiBt
X2NyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uczsKICAgICBXS0J1bmRsZVJlZiBtX2J1
bmRsZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVUZXN0
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlVGVzdC5oCmluZGV4IDUyODVj
ZGYuLjBmZjliNGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5k
bGVUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZVRlc3QuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDAsNiArNDAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVBhZ2Uo
V0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZElu
aXRpYWxpemVQYWdlR3JvdXAoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5n
UmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRJbnN0YWxsRE9NV2luZG93RXh0ZW5zaW9uKFdLQnVuZGxlUmVmLCBXS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvblJlZikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZERpc2Nvbm5lY3RE
T01XaW5kb3dFeHRlbnNpb25Gcm9tRnJhbWUoV0tCdW5kbGVSZWYsIFdLQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uUmVmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjb25uZWN0RE9NV2luZG93
RXh0ZW5zaW9uVG9GcmFtZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25S
ZWYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95RE9NV2luZG93RXh0ZW5zaW9uKFdL
QnVuZGxlUmVmLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZikgeyB9CiAKICAgICBzdGQ6
OnN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDU0ZGY4NzguLmZkMTY3MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0zOCw2ICszOCw4IEBACiAJCTQ0MEExRDM5MTRBMDEwM0EwMDhBNjZGMiAvKiBL
VVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
MEExRDM4MTRBMDEwM0EwMDhBNjZGMiAvKiBLVVJMLmNwcCAqLzsgfTsKIAkJNEJGREZGQTcxMzE0
Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkZERkZBNjEzMTQ3NzZD
MDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJ
NEJGREZGQTkxMzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRkRGRkE4MTMx
NDc3NzcwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAgKi87IH07CisJCTUx
MzkzRTIwMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTM5M0UxRTE1MjM5
NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwICovOyB9OworCQk1MTM5
M0UyMjE1MjM5NTJEMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMzkzRTFE
MTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwICov
OyB9OwogCQk1MTQyQjI3MTE1MTdDODhCMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJM
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0MkIy
NzAxNTE3Qzg4QjAwQzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVSTC5tbSAqLzsgfTsKIAkJ
NTE0MkIyNzMxNTE3QzhDODAwQzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVSTC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDJC
MjcyMTUxN0M4OTEwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwuaHRtbCAqLzsgfTsK
IAkJNTE3RTdERkMxNTExMEVBNjAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxN0U3REZCMTUxMTBFQTYwMEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0
aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi87IH07CkBAIC0yMjUsNiArMjI3LDggQEAKIAkJ
NDRBNjIyQzExNEEwRTJCNjAwNDg1MTVCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXVEZTdHJpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJGREZGQTYxMzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RS
ZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QkZERkZBODEzMTQ3Nzc3MDA2MUYyNEIgLyogSGl0VGVzdFJlc3Vs
dE5vZGVIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGl0
VGVzdFJlc3VsdE5vZGVIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MTM5M0UxRDE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMzkz
RTFFMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDJCMjcwMTUxN0M4OEIwMEMzMkIx
OSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBDb250ZXh0TWVudUNhbkNvcHlVUkwubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNDJCMjcyMTUxN0M4OTEwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNv
cHlVUkwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IENvbnRleHRNZW51Q2FuQ29w
eVVSTC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdFN0RGQjE1MTEwRUE2
MDBEMEIwMDggLyogTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVQcnVu
ZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDc5LDYgKzQ4Myw4IEBACiAJCQkJQkMyNDZEOTgxMzJGMUZFMTAwQjU2RDdDIC8qIENh
bkhhbmRsZVJlcXVlc3QuY3BwICovLAogCQkJCUJDMjQ2RDk3MTMyRjFGRTEwMEI1NkQ3QyAvKiBD
YW5IYW5kbGVSZXF1ZXN0X0J1bmRsZS5jcHAgKi8sCiAJCQkJRjZGM0YyOTAxMzM0MkZFQjAwQTZC
RjE5IC8qIENvb2tpZU1hbmFnZXIuY3BwICovLAorCQkJCTUxMzkzRTFFMTUyMzk0NEEwMDVGMzlD
NSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgKi8sCisJCQkJNTEzOTNFMUQxNTIzOTQ0
QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgKi8sCiAJCQkJ
QkNCNjgwM0YxMjZGQkZFMTAwNjQyQTYxIC8qIERvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRD
cmFzaC5jcHAgKi8sCiAJCQkJQkNCNjgwNDExMjZGQkZGMTAwNjQyQTYxIC8qIERvY3VtZW50U3Rh
cnRVc2VyU2NyaXB0QWxlcnRDcmFzaF9CdW5kbGUuY3BwICovLAogCQkJCUMwNDVGOTQ0MTM4NUMy
RTkwMEMwRjNDRCAvKiBEb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwICovLApAQCAt
ODMxLDYgKzgzNyw3IEBACiAJCQkJNTE3RTdERkMxNTExMEVBNjAwRDBCMDA4IC8qIE1lbW9yeUNh
Y2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxRkJCQjREMTUxM0Q0RTkwMDgyMjczOCAvKiBXZWJWaWV3Q2FuUGFzdGVVUkwubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1MTQyQjI3MTE1MTdDODhCMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5D
b3B5VVJMLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTEzOTNFMjAxNTIzOTQ0QTAwNUYzOUM1IC8q
IERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtODU5LDYgKzg2
Niw3IEBACiAJCQkJOTNGN0U4NkYxNERDOEU1QzAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMkQz
MTkxNERDNjhCOTAwRkZCMUREIC8qIFVzZXJNZXNzYWdlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5M0FGNEVDRTE1MDZGMDY0MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTM5M0Uy
MjE1MjM5NTJEMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYzlkMjVlYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAKQEAgLTAs
MCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNs
dWRlICJUZXN0LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgYm9v
bCBmaW5pc2hlZDsKK3N0YXRpYyBpbnQgbGl2ZURPTUV4dGVuc2lvbkNvdW50OworCitzdGF0aWMg
Y29uc3QgY2hhciogZXhwZWN0ZWRNZXNzYWdlc1tdID0geworICAgICJkaWRJbnN0YWxsRE9NV2lu
ZG93RXh0ZW5zaW9uQm9keSAtIEV4dGVuc2lvbiAwIGluIGZyYW1lIDAiLAorICAgICJkaWRJbnN0
YWxsRE9NV2luZG93RXh0ZW5zaW9uQm9keSAtIEV4dGVuc2lvbiAxIGluIGZyYW1lIDEiLAorICAg
ICJGcmFtZSAxIGZpbmlzaGVkIGxvYWRpbmciLAorICAgICJGcmFtZSAwIGZpbmlzaGVkIGxvYWRp
bmciLAorICAgICJkaWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUZyYW1lIC0gRXh0
ZW5zaW9uIDEgaW4gZnJhbWUgMSIsCisgICAgImRpZERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNp
b25Gcm9tRnJhbWUgLSBFeHRlbnNpb24gMCBpbiBmcmFtZSAwIiwKKyAgICAiZGlkSW5zdGFsbERP
TVdpbmRvd0V4dGVuc2lvbkJvZHkgLSBFeHRlbnNpb24gMiBpbiBmcmFtZSAwIiwKKyAgICAiRnJh
bWUgMCBmaW5pc2hlZCBsb2FkaW5nIiwKKyAgICAiZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVu
c2lvbkZyb21GcmFtZSAtIEV4dGVuc2lvbiAyIGluIGZyYW1lIDAiLAorICAgICJkaWRSZWNvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lIC0gRXh0ZW5zaW9uIDAgaW4gZnJhbWUgMCIsCisg
ICAgImRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvRnJhbWUgLSBFeHRlbnNpb24gMSBp
biBmcmFtZSAxIiwKKyAgICAiRnJhbWUgMCBmaW5pc2hlZCBsb2FkaW5nIiwKKyAgICAiZGlkRGVz
dHJveURPTVdpbmRvd0V4dGVuc2lvbiIsCisgICAgImRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNp
b24iLAorICAgICJkaWREZXN0cm95RE9NV2luZG93RXh0ZW5zaW9uIgorfTsKKworc3RhdGljIFZl
Y3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gPiBtZXNzYWdlczsKKworc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmlu
Z1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKikKK3sK
KyAgICBBU1NFUlRfTk9UX05VTEwobWVzc2FnZUJvZHkpOworICAgIEVYUEVDVF9FUShXS1N0cmlu
Z0dldFR5cGVJRCgpLCBXS0dldFR5cGVJRChtZXNzYWdlQm9keSkpOworCisgICAgV0tTdHJpbmdS
ZWYgYm9keVN0cmluZyA9IChXS1N0cmluZ1JlZiltZXNzYWdlQm9keTsKKyAgICBtZXNzYWdlcy5h
cHBlbmQoYm9keVN0cmluZyk7CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobWVzc2FnZU5hbWUsICJkaWRJbnN0YWxsRE9NV2luZG93RXh0ZW5zaW9uQm9keSIpKQor
ICAgICAgICBsaXZlRE9NRXh0ZW5zaW9uQ291bnQrKzsKKyAgICBlbHNlIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiZGlkRGVzdHJveURPTVdpbmRvd0V4dGVu
c2lvbiIpKSB7CisgICAgICAgIGxpdmVET01FeHRlbnNpb25Db3VudC0tOworICAgICAgICBpZiAo
IWxpdmVET01FeHRlbnNpb25Db3VudCkKKyAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAg
ICB9IGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJk
aWRGaW5pc2hMb2FkRm9yTWFpbkZyYW1lIikpCisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKK30K
KworVEVTVChXZWJLaXQyLCBET01XaW5kb3dFeHRlbnNpb25CYXNpYykKK3sKKyAgICBXS1JldGFp
blB0cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdyb3VwKEFkb3B0V0ssIFdLUGFnZUdyb3VwQ3JlYXRl
V2l0aElkZW50aWZpZXIoV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRPTVdpbmRvd0V4
dGVuc2lvbkJhc2ljUGFnZUdyb3VwIikpKTsgCisKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRS
ZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxl
VGVzdCgiRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMiLCBwYWdlR3JvdXAuZ2V0KCkpKTsKKworICAg
IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IGluamVjdGVkQnVuZGxlQ2xpZW50OworICAg
IG1lbXNldCgmaW5qZWN0ZWRCdW5kbGVDbGllbnQsIDAsIHNpemVvZihpbmplY3RlZEJ1bmRsZUNs
aWVudCkpOworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LnZlcnNpb24gPSAwOworICAgIGluamVj
dGVkQnVuZGxlQ2xpZW50LmNsaWVudEluZm8gPSAwOworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50
LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGU7CisgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQo
Y29udGV4dC5nZXQoKSwgJmluamVjdGVkQnVuZGxlQ2xpZW50KTsKKyAgICAKKyAgICAvLyBUaGUg
ZGVmYXVsdCBjYWNoZSBtb2RlbCBoYXMgYSBjYXBhY2l0eSBvZiAwLCBzbyBpdCBpcyBuZWNlc3Nh
cnkgdG8gc3dpdGNoIHRvIGEgY2FjaGUKKyAgICAvLyBtb2RlbCB0aGF0IGFjdHVhbGx5IGFsbG93
cyBmb3IgYSBwYWdlIGNhY2hlLgorICAgIFdLQ29udGV4dFNldENhY2hlTW9kZWwoY29udGV4dC5n
ZXQoKSwga1dLQ2FjaGVNb2RlbERvY3VtZW50QnJvd3Nlcik7CisKKyAgICBQbGF0Zm9ybVdlYlZp
ZXcgd2ViVmlldyhjb250ZXh0LmdldCgpLCBwYWdlR3JvdXAuZ2V0KCkpOworCisgICAgLy8gTWFr
ZSBzdXJlIHRoZSBleHRlbnNpb25zIGZvciBlYWNoIGZyYW1lIGFyZSBpbnN0YWxsZWQuCisgICAg
V0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybDEoQWRvcHRXSywgVXRpbDo6Y3JlYXRlVVJMRm9yUmVz
b3VyY2UoInNpbXBsZS1pZnJhbWUiLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZp
ZXcucGFnZSgpLCB1cmwxLmdldCgpKTsKKworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworICAg
IGZpbmlzaGVkID0gZmFsc2U7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhvc2UgZmlyc3QgZXh0ZW5z
aW9ucyBhcmUgZGlzY29ubmVjdGVkLCBhbmQgYSBuZXcgb25lIGlzIGluc3RhbGxlZC4KKyAgICBX
S1JldGFpblB0cjxXS1VSTFJlZj4gdXJsMihBZG9wdFdLLCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNv
dXJjZSgic2ltcGxlIiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2Uo
KSwgdXJsMi5nZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBmaW5pc2hl
ZCA9IGZhbHNlOworCisgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhpcmQgb25lIGlzIGRpc2Nvbm5l
Y3RlZCwgYW5kIHRoZSBmaXJzdCB0d28gYXJlIHJlY29ubmVjdGVkLgorICAgIFdLUGFnZUdvQmFj
ayh3ZWJWaWV3LnBhZ2UoKSk7CisKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBmaW5p
c2hlZCA9IGZhbHNlOworICAgIAorICAgIC8vIE1ha2Ugc3VyZSB0aGUgMSBkaXNjb25uZWN0ZWQg
ZXh0ZW5zaW9uIGluIHRoZSBwYWdlIGNhY2hlIGFuZCB0aGUgMiBhY3RpdmUgZXh0ZW5zaW9ucyBh
cmUgYWxsIGRlc3Ryb3llZC4KKyAgICBXS1BhZ2VDbG9zZSh3ZWJWaWV3LnBhZ2UoKSk7CisKKyAg
ICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICAKKyAgICBjb25zdCBzaXplX3QgZXhwZWN0ZWRT
aXplID0gc2l6ZW9mKGV4cGVjdGVkTWVzc2FnZXMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsKKyAg
ICBFWFBFQ1RfRVEobWVzc2FnZXMuc2l6ZSgpLCBleHBlY3RlZFNpemUpOworICAgIAorICAgIGlm
IChtZXNzYWdlcy5zaXplKCkgIT0gZXhwZWN0ZWRTaXplKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlcy5zaXplKCk7ICsraSkKKyAgICAg
ICAgRVhQRUNUX0VRKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZXNbaV0uZ2V0
KCksIGV4cGVjdGVkTWVzc2FnZXNbaV0pLCB0cnVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODRlZWNkCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2lj
X0J1bmRsZS5jcHAKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5k
bGVGcmFtZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlLmg+CisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0J1bmRsZVBhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQ
cml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVNjcmlwdFdvcmxkLmg+CisjaW5j
bHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8YXNzZXJ0Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY2xhc3Mg
RE9NV2luZG93RXh0ZW5zaW9uQmFzaWMgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1
YmxpYzoKKyAgICBET01XaW5kb3dFeHRlbnNpb25CYXNpYyhjb25zdCBzdGQ6OnN0cmluZyYgaWRl
bnRpZmllcikKKyAgICAgICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKKyAgICAg
ICAgLCBtX2N1cnJlbnRFeHRlbnNpb25JRCgwKQorICAgICAgICAsIG1fY3VycmVudEZyYW1lSUQo
MCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoV0tCdW5kbGVS
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVBhZ2Uo
V0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZik7CisgICAgdmlydHVhbCB2b2lkIGRpZEluc3Rh
bGxET01XaW5kb3dFeHRlbnNpb24oV0tCdW5kbGVSZWYsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uUmVmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lv
bkZyb21GcmFtZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lKFdL
QnVuZGxlUmVmLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZik7CisgICAgdmlydHVhbCB2
b2lkIGRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24oV0tCdW5kbGVSZWYsIFdLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uUmVmKTsKKworICAgIHZvaWQgZnJhbWVMb2FkRmluaXNoZWQoV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZW5kQnVuZGxlRXh0ZW5z
aW9uTWVzc2FnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
UmVmIGV4dGVuc2lvbiwgY29uc3QgY2hhciogbWVzc2FnZSk7CisKKyAgICBpbnQgZ2V0T3JFc3Rh
Ymxpc2hGcmFtZUlEKFdLQnVuZGxlRnJhbWVSZWYpOworCisgICAgV0tCdW5kbGVQYWdlR3JvdXBS
ZWYgbV9wYWdlR3JvdXA7CisKKyAgICBXS0J1bmRsZVJlZiBtX2J1bmRsZTsKKyAgICAKKyAgICBp
bnQgbV9jdXJyZW50RXh0ZW5zaW9uSUQ7CisgICAgSGFzaE1hcDxXS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvblJlZiwgaW50PiBtX2V4dGVuc2lvbklETWFwOworCisgICAgaW50IG1fY3VycmVudEZy
YW1lSUQ7CisgICAgSGFzaE1hcDxXS0J1bmRsZUZyYW1lUmVmLCBpbnQ+IG1fZnJhbWVJRE1hcDsK
K307CisKK3N0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPERPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljPiByZWdpc3RyYXIoIkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljIik7CisKK3N0YXRp
YyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAg
KChET01XaW5kb3dFeHRlbnNpb25CYXNpYyopY2xpZW50SW5mbyktPmZyYW1lTG9hZEZpbmlzaGVk
KGZyYW1lKTsKK30KKworaW50IERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpnZXRPckVzdGFibGlz
aEZyYW1lSUQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKK3sKKyAgICBpZiAobV9mcmFtZUlETWFw
LmNvbnRhaW5zKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVJRE1hcC5nZXQoZnJhbWUp
OworICAgIAorICAgIGludCBpZCA9IG1fY3VycmVudEZyYW1lSUQrKzsKKyAgICBtX2ZyYW1lSURN
YXAuc2V0KGZyYW1lLCBpZCk7CisgICAgcmV0dXJuIGlkOworfQorCit2b2lkIERPTVdpbmRvd0V4
dGVuc2lvbkJhc2ljOjpmcmFtZUxvYWRGaW5pc2hlZChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQor
eworICAgIGludCBpZCA9IGdldE9yRXN0YWJsaXNoRnJhbWVJRChmcmFtZSk7CisKKyAgICBjaGFy
IGJvZHlbMTAyNF07CisgICAgc3ByaW50Zihib2R5LCAiRnJhbWUgJWkgZmluaXNoZWQgbG9hZGlu
ZyIsIGlkKTsKKyAgICAKKyAgICAvLyBPbmx5IGNvbnNpZGVyIGxvYWQgZmluaXNoZWQgZm9yIHRo
ZSBtYWluIGZyYW1lCisgICAgY29uc3QgY2hhciogbmFtZSA9IFdLQnVuZGxlRnJhbWVHZXRQYXJl
bnRGcmFtZShmcmFtZSkgPyAiZGlkRmluaXNoTG9hZEZvckZyYW1lIiA6ICJkaWRGaW5pc2hMb2Fk
Rm9yTWFpbkZyYW1lIjsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFt
ZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobmFtZSkpOworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoYm9keSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5k
bGUsIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7Cit9CisKK3ZvaWQgRE9N
V2luZG93RXh0ZW5zaW9uQmFzaWM6OmluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5
cGVSZWYgdXNlckRhdGEpCit7CisgICAgYXNzZXJ0KFdLR2V0VHlwZUlEKHVzZXJEYXRhKSA9PSBX
S0J1bmRsZVBhZ2VHcm91cEdldFR5cGVJRCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VHcm91cFJlZiBw
YWdlR3JvdXAgPSBzdGF0aWNfY2FzdDxXS0J1bmRsZVBhZ2VHcm91cFJlZj4odXNlckRhdGEpOwor
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNvdXJjZShBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiYWxlcnQoJ1VzZXIgc2NyaXB0IGFsZXJ0Jyk7IikpOworICAg
IFdLQnVuZGxlQWRkVXNlclNjcmlwdChidW5kbGUsIHBhZ2VHcm91cCwgV0tCdW5kbGVTY3JpcHRX
b3JsZENyZWF0ZVdvcmxkKCksIHNvdXJjZS5nZXQoKSwgMCwgMCwgMCwga1dLSW5qZWN0QXREb2N1
bWVudFN0YXJ0LCBrV0tJbmplY3RJbkFsbEZyYW1lcyk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0
ZW5zaW9uQmFzaWM6OmRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBh
Z2VSZWYgcGFnZSkKK3sKKyAgICBtX2J1bmRsZSA9IGJ1bmRsZTsKKworICAgIFdLQnVuZGxlUGFn
ZUxvYWRlckNsaWVudCBwYWdlTG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmcGFnZUxvYWRlckNs
aWVudCwgMCwgc2l6ZW9mKHBhZ2VMb2FkZXJDbGllbnQpKTsKKyAgICAKKyAgICBwYWdlTG9hZGVy
Q2xpZW50LnZlcnNpb24gPSAxOworICAgIHBhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyA9IHRo
aXM7CisgICAgcGFnZUxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5p
c2hMb2FkRm9yRnJhbWU7CisgICAgCisgICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVu
dChwYWdlLCAmcGFnZUxvYWRlckNsaWVudCk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9u
QmFzaWM6OnNlbmRCdW5kbGVFeHRlbnNpb25NZXNzYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tC
dW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uLCBjb25zdCBjaGFyKiBtZXNzYWdl
KQoreworICAgIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUgPSBXS0J1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbkdldEZyYW1lKGV4dGVuc2lvbik7CisKKyAgICBzdGF0aWMgY2hhciBidWZmZXJbMTAyNF07
CisgICAgaWYgKG1fZXh0ZW5zaW9uSURNYXAuY29udGFpbnMoZXh0ZW5zaW9uKSkKKyAgICAgICAg
c3ByaW50ZihidWZmZXIsICIlcyAtIEV4dGVuc2lvbiAlaSBpbiBmcmFtZSAlaSIsIG1lc3NhZ2Us
IG1fZXh0ZW5zaW9uSURNYXAuZ2V0KGV4dGVuc2lvbiksIGdldE9yRXN0YWJsaXNoRnJhbWVJRChm
cmFtZSkpOworICAgIGVsc2UKKyAgICAgICAgc3ByaW50ZihidWZmZXIsICIlcyIsIG1lc3NhZ2Up
OworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhtZXNzYWdlKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhidWZmZXIpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKGJ1bmRsZSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9pZCBET01XaW5kb3dFeHRl
bnNpb25CYXNpYzo6ZGlkSW5zdGFsbERPTVdpbmRvd0V4dGVuc2lvbihXS0J1bmRsZVJlZiBidW5k
bGUsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbikKK3sgICAgCisgICAg
aW50IGV4dGVuc2lvbklEID0gbV9jdXJyZW50RXh0ZW5zaW9uSUQrKzsKKyAgICBtX2V4dGVuc2lv
bklETWFwLnNldChleHRlbnNpb24sIGV4dGVuc2lvbklEKTsKKyAgICAgICAgCisgICAgc2VuZEJ1
bmRsZUV4dGVuc2lvbk1lc3NhZ2UoYnVuZGxlLCBleHRlbnNpb24sICJkaWRJbnN0YWxsRE9NV2lu
ZG93RXh0ZW5zaW9uQm9keSIpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpk
aWREaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUZyYW1lKFdLQnVuZGxlUmVmIGJ1bmRs
ZSwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKQoreworICAgIHNlbmRC
dW5kbGVFeHRlbnNpb25NZXNzYWdlKGJ1bmRsZSwgZXh0ZW5zaW9uLCAiZGlkRGlzY29ubmVjdERP
TVdpbmRvd0V4dGVuc2lvbkZyb21GcmFtZSIpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lv
bkJhc2ljOjpkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ZyYW1lKFdLQnVuZGxlUmVm
IGJ1bmRsZSwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKQoreworICAg
IHNlbmRCdW5kbGVFeHRlbnNpb25NZXNzYWdlKGJ1bmRsZSwgZXh0ZW5zaW9uLCAiZGlkUmVjb25u
ZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9GcmFtZSIpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljOjpkaWREZXN0cm95RE9NV2luZG93RXh0ZW5zaW9uKFdLQnVuZGxlUmVmIGJ1bmRs
ZSwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKQoreworICAgIC8vIEFz
IG9wcG9zZWQgdG8gdGhlIG9yZGVyIG9mIG90aGVyIGV4dGVuc2lvbiBvcGVyYXRpb25zLCBkZXN0
cnVjdGlvbiBvcmRlciBpcyBvZnRlbiByYW5kb20gaW4gdGhpcyB0ZXN0LgorICAgIC8vIERvbid0
IGluY2x1ZGUgZXh0ZW5zaW9uIElEcyBmb3IgdGhlIGRlc3RydWN0aW9uIG1lc3NhZ2UuCisgICAg
bV9leHRlbnNpb25JRE1hcC5yZW1vdmUoZXh0ZW5zaW9uKTsKKworICAgIHNlbmRCdW5kbGVFeHRl
bnNpb25NZXNzYWdlKGJ1bmRsZSwgZXh0ZW5zaW9uLCAiZGlkRGVzdHJveURPTVdpbmRvd0V4dGVu
c2lvbiIpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNpYy5j
cHAKaW5kZXggNDBjYTI2OS4uMDgzYTg4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlQmFzaWMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljLmNwcApAQCAtMzQsNyAr
MzQsNyBAQCBzdGF0aWMgYm9vbCBkb25lOwogc3RhdGljIGJvb2wgbG9hZERvbmU7CiBzdGF0aWMg
Ym9vbCBtZXNzYWdlUmVjZWl2ZWQ7CiAKLXZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBX
S1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4
dCwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKIHsKICAgICBtZXNzYWdlUmVjZWl2ZWQgPSB0cnVlOwogICAgIGlm
IChsb2FkRG9uZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNTU2NGIzMi4uYjg2YjI5MSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKQEAgLTg4LDcgKzg4LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmluaXRp
YWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2VyCiAg
ICAgICAgIGRpZENyZWF0ZVBhZ2UsCiAgICAgICAgIHdpbGxEZXN0cm95UGFnZSwKICAgICAgICAg
ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cCwKLSAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UKKyAgICAg
ICAgZGlkUmVjZWl2ZU1lc3NhZ2UsCisgICAgICAgIDAsIC8vIGRpZEluc3RhbGxET01XaW5kb3dF
eHRlbnNpb24KKyAgICAgICAgMCwgLy8gZGlkRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZy
b21GcmFtZQorICAgICAgICAwLCAvLyBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0Zy
YW1lCisgICAgICAgIDAgIC8vIGRpZERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb24KICAgICB9Owog
ICAgIFdLQnVuZGxlU2V0Q2xpZW50KG1fYnVuZGxlLCAmY2xpZW50KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136358</attachid>
            <date>2012-04-09 18:06:47 -0700</date>
            <delta_ts>2012-04-10 09:13:55 -0700</delta_ts>
            <desc>Patch v4 - Explicit creation of DOMWindowExtensions</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>100614</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYWEwNDE1Ni4uMTVmNWU3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwMjYsNiArMTAyNiw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdl
L0RPTVNlbGVjdGlvbi5jcHAKICAgICBwYWdlL0RPTVRpbWVyLmNwcAogICAgIHBhZ2UvRE9NV2lu
ZG93LmNwcAorICAgIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcAogICAgIHBhZ2UvRE9NV2lu
ZG93UHJvcGVydHkuY3BwCiAgICAgcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKICAgICBwYWdlL0V2
ZW50SGFuZGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NTc1ODk0Li40MjY2M2RlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNjMgQEAKKzIwMTItMDQtMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDEyMDE1NT4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjY2NAorICAgICAgICAgTmVlZCBET01X
aW5kb3cgbWVjaGFuaXNtIHRvIHN1cHBsZW1lbnQgVXNlclNjcmlwdHMgZm9yIHBhZ2UgY2FjaGUg
bm90aWZpY2F0aW9ucworCisgICAgICAgIFRoaXMgcGF0Y2ggY3JlYXRlcyBhIG5ldyBvYmplY3Qg
dHlwZSAiRE9NV2luZG93RXh0ZW5zaW9uIiB3aGljaCBleHRlbmRzIERPTVdpbmRvd1Byb3BlcnR5
LgorICAgICAgICBBIERPTVdpbmRvd0V4dGVuc2lvbiBpcyB0aWVkIHRvIGEgcGFydGljdWxhciBE
T01XaW5kb3cgYW5kIHJlcHJlc2VudHMgZXh0ZW5zaWJpbGl0eSBpbiB0aGF0CisgICAgICAgIERP
TVdpbmRvdyB3aXRoaW4gYSBwYXJ0aWN1bGFyIERPTVdyYXBwZXJXb3JsZC4KKworICAgICAgICBJ
dCBpcyBhIHRva2VuIG9iamVjdCBtZWFudCBkZXNpZ25lZCB0byBub3RpZnkgY2xpZW50cyBvZiB0
aGUgdmFyaW91cyBldmVudHMgaW4gdGhlIGxpZmV0aW1lCisgICAgICAgIG9mIGEgRE9NV2luZG93
IHByb3BlcnR5IHN1Y2ggYXMgY3JlYXRpb24sIGRpc2Nvbm5lY3RpbmcgZm9yIHRoZSBwYWdlIGNh
Y2hlLCByZWNvbm5lY3RpbmcKKyAgICAgICAgd2hlbiByZXN0b3JpbmcgZnJvbSB0aGUgcGFnZSBj
YWNoZSwgYW5kIERPTVdpbmRvdyBkZXN0cnVjdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgV2ViS2l0IEFQSSB0ZXN0IERPTVdpbmRvd0V4
dGVuc2lvbkJhc2ljIGFkZGVkLgorCisgICAgICAgIEFkZCBob29rcyBmb3IgNCBuZXcgY2xpZW50
IGNhbGxzIHJlZ2FyZGluZyBET01XaW5kb3dFeHRlbnNpb25zIGFuZCBnbG9iYWwgb2JqZWN0IGxp
ZmV0aW1lOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ2FuQ3JlYXRlR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxEaXNj
b25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Ub0dsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbik6
CisgICAgICAgIAorICAgICAgICBBdCB0aGUgc2FtZSB0aW1lICJEaWRDbGVhcldpbmRvd09iamVj
dCIgaXMgY2FsbGVkLCBhbHNvIG5vdGlmeSBjbGllbnRzIHRoYXQgbm93IGlzIGEgZ29vZCB0aW1l
CisgICAgICAgIHRvIGNyZWF0ZSB0aGUgZ2xvYmFsIG9iamVjdDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlY2VpdmVk
Rmlyc3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaENhbkNy
ZWF0ZUdsb2JhbE9iamVjdEluQWxsV29ybGRzKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuaDoKKworICAgICAgICAgRE9NV2luZG93UHJvcGVydGllcyBtaWdodCB3YW50IHRvIHVucmVn
aXN0ZXIgdGhlbXNlbHZlcyBkdXJpbmcgdGhlc2Ugbm90aWZpY2F0aW9ucywgc28gY29weQorICAg
ICAgICAgdGhlIHNldCB0byBhIFZlY3Rvci4gV2hpbGUgdGhpcyB0ZWNobmlxdWUgaXMgYXJndWFi
bHkgZnJhZ2lsZSwgaXRzIGNlcnRhaW5seSBsZXNzIGZyYWdpbGUgdGhhbgorICAgICAgICAgbXV0
YXRpbmcgYSBzZXQgd2hpbGUgaXRlcmF0aW5nIGl0OgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6d2lsbERldGFjaFBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNjb25uZWN0RE9NV2luZG93UHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnJlY29ubmVjdERPTVdpbmRvd1Byb3BlcnRp
ZXMpOgorCisgICAgICAgICBJbXBsZW1lbnQgdGhlIERPTVdpbmRvd0V4dGVuc2lvbiBvYmplY3Qu
IEl0IGFjdHMgbGlrZSBhIERPTVdpbmRvd1Byb3BlcnR5IHdpdGggdGhlIGFkZGVkIGNhcGFiaWxp
dHkKKyAgICAgICAgIG9mIHJlbWVtYmVyaW5nIHdoYXQgRnJhbWUgaXQgdXNlZCB0byBiZSBjb25u
ZWN0ZWQgdG8gc28gaXQgY2FuICphbHdheXMqIG5vdGlmeSBjbGllbnRzIG9uIHdpbGxEZXRhY2hQ
YWdlOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246OkRPTVdpbmRvd0V4dGVuc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246On5ET01XaW5kb3dFeHRlbnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjpkaXNjb25uZWN0RnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjpyZWNvbm5lY3RGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246OndpbGxEZXRhY2hQYWdlKToK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdpbmRvd0V4dGVuc2lvbjo6d29ybGQpOgorCisgICAgICAgICBQcm9qZWN0IGZpbGVzOgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEyLTA0
LTA5ICBTcmF2YW5LdW1hciBTYW5kZWxhICA8c3NhbmRlbGFAaW5ub21pbmRzLmNvbT4KIAogICAg
ICAgICBVbm5lY2Vzc2FyeSBzY3JvbGwgYmFyIGFmdGVyIGNoYW5naW5nIHRoZSBkaW1lbnNpb25z
IG9mIGEgRElWCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBjNzVkMGEyLi5lYzBh
NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI5MDEsNiArMjkwMSw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9u
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaCBcCiAJU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93UHJvcGVydHkuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0
aW9ucy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDNiODRkYTIuLmY1OGUxNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpA
QCAtMTAwMCw2ICsxMDAwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGFnZS9ET01TZWxlY3Rpb24u
Y3BwIFwKICAgICBwYWdlL0RPTVRpbWVyLmNwcCBcCiAgICAgcGFnZS9ET01XaW5kb3cuY3BwIFwK
KyAgICBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAgXAogICAgIHBhZ2UvRE9NV2luZG93UHJv
cGVydHkuY3BwIFwKICAgICBwYWdlL0RyYWdDb250cm9sbGVyLmNwcCBcCiAgICAgcGFnZS9FdmVu
dEhhbmRsZXIuY3BwIFwKQEAgLTIxMTAsNiArMjExMSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBh
Z2UvRE9NU2VsZWN0aW9uLmggXAogICAgIHBhZ2UvRE9NVGltZXIuaCBcCiAgICAgcGFnZS9ET01X
aW5kb3cuaCBcCisgICAgcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaCBcCiAgICAgcGFnZS9EcmFn
Q29udHJvbGxlci5oIFwKICAgICBwYWdlL0RyYWdTdGF0ZS5oIFwKICAgICBwYWdlL0V2ZW50SGFu
ZGxlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZDhjYjYxNC4uN2VlMTU1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTU0NCw2ICs1NDQsNyBAQCBfX1pON1dlYkNvcmUxN1JlZ3VsYXJF
eHByZXNzaW9uRDFFdgogX19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RP
TUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9FCiBfX1pON1dl
YkNvcmUxN29wZW5UZW1wb3JhcnlGaWxlRVJLTjNXVEY2U3RyaW5nRVJpCiBfX1pON1dlYkNvcmUx
N3VzZXJWaXNpYmxlU3RyaW5nRVA1TlNVUkwKK19fWk43V2ViQ29yZTE4RE9NV2luZG93RXh0ZW5z
aW9uQzFFUE5TXzVGcmFtZUVQTlNfMTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dlYkNvcmUxOEhU
TUxDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEUKIF9fWk43V2ViQ29yZTE4UGxh
dGZvcm1QYXN0ZWJvYXJkMTNidWZmZXJGb3JUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJD
b3JlMThQbGF0Zm9ybVBhc3RlYm9hcmQxM3N0cmluZ0ZvclR5cGVFUktOM1dURjZTdHJpbmdFCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggOWNjZTViOS4uM2Y5MGY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MjIxLDYgKzIyMSw3IEBACiAgICAgICAgICAgICAncGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
aCcsCiAgICAgICAgICAgICAncGFnZS9Db29yZGluYXRlcy5oJywKICAgICAgICAgICAgICdwYWdl
L0RPTVdpbmRvdy5oJywKKyAgICAgICAgICAgICdwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oJywK
ICAgICAgICAgICAgICdwYWdlL0RyYWdBY3Rpb25zLmgnLAogICAgICAgICAgICAgJ3BhZ2UvRHJh
Z0NsaWVudC5oJywKICAgICAgICAgICAgICdwYWdlL0RyYWdDb250cm9sbGVyLmgnLApAQCAtMjkz
OCw2ICsyOTM5LDggQEAKICAgICAgICAgICAgICdwYWdlL0RPTVRpbWVyLmNwcCcsCiAgICAgICAg
ICAgICAncGFnZS9ET01UaW1lci5oJywKICAgICAgICAgICAgICdwYWdlL0RPTVdpbmRvdy5jcHAn
LAorICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcCcsCisgICAgICAgICAg
ICAncGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaCcsCiAgICAgICAgICAgICAncGFnZS9ET01XaW5k
b3dQcm9wZXJ0eS5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93UHJvcGVydHkuaCcs
CiAgICAgICAgICAgICAncGFnZS9EcmFnQ29udHJvbGxlci5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlY2Q5ZGY1Li5hMjNhN2I4IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjYx
MTgsNiArMjYxMTgsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGFnZVxET01XaW5kb3dFeHRlbnNpb24uY3BwIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXERPTVdpbmRvd0V4dGVuc2lv
bi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
YWdlXERPTVdpbmRvd1Byb3BlcnR5LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmQ4NDI0
OS4uMTU0ZDFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTUyNCw2ICsxNTI0LDcgQEAKIAkJNTE3NDFEMTEwQjA3MjU5QTAw
RUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTc0MUQwRDBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTc0MUQx
MjBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NDFEMEUwQjA3MjU5QTAwRUQ0NDJDIC8qIEhp
c3RvcnlJdGVtLmNwcCAqLzsgfTsKIAkJNTE3NEUyMEExMEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0
YXRlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNzRFMjA4MTBBMUY0NEYwMEY5NUU2RiAvKiBQb3BTdGF0ZUV2ZW50LmggKi87IH07CisJCTUx
N0ZCQTFFMTUxQUIxN0MwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3RkJBMTcxNTFBQTcxQjAw
QjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi87IH07CiAJCTUxODlGMDFEMTBCMzdC
RDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4OUYwMUIxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9w
U3RhdGVFdmVudC5jcHAgKi87IH07CiAJCTUxODlGMDFFMTBCMzdCRDkwMEYzQzczOSAvKiBKU1Bv
cFN0YXRlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxODlGMDFDMTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuaCAqLzsgfTsK
IAkJNTE4OUYwREUxMEI0NkIwRTAwRjNDNzM5IC8qIFBvcFN0YXRlRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4OUYwREQxMEI0NkIwRTAw
RjNDNzM5IC8qIFBvcFN0YXRlRXZlbnQuY3BwICovOyB9OwpAQCAtMTU2Miw2ICsxNTYzLDcgQEAK
IAkJNTFFM0Y5QzcwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFM0Y5QzUwREEwNTlEQzAwMjUwOTEx
IC8qIFN0b3JhZ2UuY3BwICovOyB9OwogCQk1MUUzRjlENjBEQTA1RTFEMDAyNTA5MTEgLyogSlNT
dG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRTNGOUQ0MERBMDVFMUQwMDI1MDkxMSAvKiBKU1N0b3JhZ2UuY3BwICovOyB9OwogCQk1MUVD
OTI2NTBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUM5
MjVEMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2su
Y3BwICovOyB9OworCQk1MUZBMkQ3ODE1MjEzMkIzMDBDMUJBMEIgLyogRE9NV2luZG93RXh0ZW5z
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdG
QkExODE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFGQjU1MDQxMTNFM0U5MTAw
ODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGQjU1MDIxMTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5o
ICovOyB9OwogCQk1MUZCNTUwNTExM0UzRTkxMDA4MjExNzYgLyogSlNDbG9zZUV2ZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkI1NTAzMTEz
RTNFOTEwMDgyMTE3NiAvKiBKU0Nsb3NlRXZlbnQuY3BwICovOyB9OwogCQk1MjFENDZGNjExQUVD
OTgxMDA1MTQ2MTMgLyogS2lsbFJpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MjFENDZGNTExQUVDOTgxMDA1MTQ2MTMgLyogS2lsbFJpbmdN
YWMubW0gKi87IH07CkBAIC04NDkyLDYgKzg0OTQsOCBAQAogCQk1MTc0MUQwRTBCMDcyNTlBMDBF
RDQ0MkMgLyogSGlzdG9yeUl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhpc3RvcnlJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3
NEUyMDgxMEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUG9wU3RhdGVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTc0RTIwQjEwQTFGNDlBMDBGOTVFNkYgLyogUG9wU3RhdGVFdmVudC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9wU3RhdGVFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxN0ZCQTE3MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0
ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RkJBMTgxNTFBQTcx
QjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE4OUYwMUIxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BvcFN0YXRlRXZlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg5RjAxQzEwQjM3QkQ5MDBGM0M3MzkgLyog
SlNQb3BTdGF0ZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9w
U3RhdGVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg5RjBERDEwQjQ2
QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQb3BTdGF0ZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE1MzEzLDYgKzE1MzE3LDggQEAKIAkJCQkxNDAzQjk5NjA5RUIxM0FGMDA3OTdDN0Yg
LyogRE9NV2luZG93LmNwcCAqLywKIAkJCQkxNDAzQjk5NTA5RUIxM0FGMDA3OTdDN0YgLyogRE9N
V2luZG93LmggKi8sCiAJCQkJMTQwM0I5MEMwOUVCMTI0NTAwNzk3QzdGIC8qIERPTVdpbmRvdy5p
ZGwgKi8sCisJCQkJNTE3RkJBMTcxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lv
bi5jcHAgKi8sCisJCQkJNTE3RkJBMTgxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVu
c2lvbi5oICovLAogCQkJCTk3RDJBRDAxMTRCODIzQTYwMDkzREYzMiAvKiBET01XaW5kb3dQcm9w
ZXJ0eS5jcHAgKi8sCiAJCQkJOTdEMkFEMDIxNEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1By
b3BlcnR5LmggKi8sCiAJCQkJQTcxODc2MEQwQjJBMTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25z
LmggKi8sCkBAIC0yNDczMyw2ICsyNDczOSw3IEBACiAJCQkJQTA3RDMzNTgxNTJCNjMyRDAwMUI2
MzkzIC8qIFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NUExRUE3RDE1MkJDRjA4MDA0RDAwQjYgLyogU2ltcGxpZnlNYXJrdXBDb21tYW5kLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRURBMTJENzE1MkNBMUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUZBMkQ3ODE1MjEzMkIzMDBDMUJBMEIgLyog
RE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3NzMzLDYgKzI3NzQwLDcg
QEAKIAkJCQlBMDdEMzM1NTE1MkI2MzBFMDAxQjYzOTMgLyogSlNXZWJHTFNoYWRlclByZWNpc2lv
bkZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMDhDRjE1NDE1MkI3N0IzMDA5QzU3NzUg
LyogV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzVB
MUVBN0MxNTJCQ0YwNDAwNEQwMEI2IC8qIFNpbXBsaWZ5TWFya3VwQ29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MTdGQkExRTE1MUFCMTdDMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5z
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggM2NjOWI3OC4uZGNkZWVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCkBAIC01ODYsNiArNTg2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERh
dGEoKQogCiAgICAgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgZGlzcGF0Y2hEaWRDbGVh
cldpbmRvd09iamVjdHNJbkFsbFdvcmxkcygpOworICAgIGRpc3BhdGNoQ2FuQ3JlYXRlR2xvYmFs
T2JqZWN0SW5BbGxXb3JsZHMoKTsKIAogICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKSB7CiAgICAg
ICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gcHRpdGxlID0gbV9kb2N1bWVudExvYWRlci0+dGl0bGUo
KTsKQEAgLTMxNjUsNiArMzE2NiwxNCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENs
ZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkKQogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKG1fZnJhbWUs
IHdvcmxkKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hDYW5DcmVhdGVHbG9iYWxP
YmplY3RJbkFsbFdvcmxkcygpCit7CisgICAgVmVjdG9yPERPTVdyYXBwZXJXb3JsZCo+IHdvcmxk
czsKKyAgICBTY3JpcHRDb250cm9sbGVyOjpnZXRBbGxXb3JsZHMod29ybGRzKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHdvcmxkcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9jbGllbnQt
PmRpc3BhdGNoQ2FuQ3JlYXRlR2xvYmFsT2JqZWN0KHdvcmxkc1tpXSk7Cit9CisKIFNhbmRib3hG
bGFncyBGcmFtZUxvYWRlcjo6ZWZmZWN0aXZlU2FuZGJveEZsYWdzKCkgY29uc3QKIHsKICAgICBT
YW5kYm94RmxhZ3MgZmxhZ3MgPSBtX2ZvcmNlZFNhbmRib3hGbGFnczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKaW5kZXggNmZiZTQxYi4uNzhkZGNhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKQEAgLTM3Miw2ICszNzIsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBz
aG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJikgY29uc3Q7CiAKKyAgICB2
b2lkIGRpc3BhdGNoQ2FuQ3JlYXRlR2xvYmFsT2JqZWN0SW5BbGxXb3JsZHMoKTsKKwogICAgIEZy
YW1lKiBtX2ZyYW1lOwogICAgIEZyYW1lTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBlOWJiMDI3Li5iZTgwMTZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNjMsNiAr
NjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U7CiAgICAgY2xhc3MgQ2FjaGVkRnJhbWU7CiAgICAgY2xhc3MgQ29sb3I7CisgICAgY2xh
c3MgRE9NV2luZG93RXh0ZW5zaW9uOwogICAgIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKICAgICBj
bGFzcyBEb2N1bWVudExvYWRlcjsKICAgICBjbGFzcyBFbGVtZW50OwpAQCAtMzMxLDYgKzMzMiwx
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hXaWxsT3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqKSB7IH0KKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hDYW5DcmVhdGVHbG9iYWxPYmplY3QoRE9NV3Jh
cHBlcldvcmxkKikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxEaXNjb25u
ZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdChET01XaW5kb3dFeHRlbnNpb24q
KSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjb25uZWN0RE9NV2luZG93
RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QoRE9NV2luZG93RXh0ZW5zaW9uKikgeyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93
RXh0ZW5zaW9uKERPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAxYThhZDcxLi5lMTRi
Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5j
bHVkZSAiRE9NVGltZXIuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJE
T01VUkwuaCIKKyNpbmNsdWRlICJET01XaW5kb3dFeHRlbnNpb24uaCIKICNpbmNsdWRlICJET01X
aW5kb3dOb3RpZmljYXRpb25zLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJE
YXRhYmFzZUNhbGxiYWNrLmgiCkBAIC00NzQsOSArNDc1LDEwIEBAIHZvaWQgRE9NV2luZG93Ojp3
aWxsRGV0YWNoUGFnZSgpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdp
bmRvd0Rpc2NhcmRlZChtX2ZyYW1lLCB0aGlzKTsKIAotICAgIEhhc2hTZXQ8RE9NV2luZG93UHJv
cGVydHkqPjo6aXRlcmF0b3Igc3RvcCA9IG1fcHJvcGVydGllcy5lbmQoKTsKLSAgICBmb3IgKEhh
c2hTZXQ8RE9NV2luZG93UHJvcGVydHkqPjo6aXRlcmF0b3IgaXQgPSBtX3Byb3BlcnRpZXMuYmVn
aW4oKTsgaXQgIT0gc3RvcDsgKytpdCkKLSAgICAgICAgKCppdCktPndpbGxEZXRhY2hQYWdlKCk7
CisgICAgVmVjdG9yPERPTVdpbmRvd1Byb3BlcnR5Kj4gcHJvcGVydGllczsKKyAgICBjb3B5VG9W
ZWN0b3IobV9wcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHByb3BlcnRpZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHByb3BlcnRpZXNbaV0tPndpbGxE
ZXRhY2hQYWdlKCk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpyZWdpc3RlclByb3BlcnR5KERPTVdp
bmRvd1Byb3BlcnR5KiBwcm9wZXJ0eSkKQEAgLTUxNCwxNyArNTE2LDE5IEBAIHZvaWQgRE9NV2lu
ZG93OjpyZXN1bWVGcm9tUGFnZUNhY2hlKCkKIAogdm9pZCBET01XaW5kb3c6OmRpc2Nvbm5lY3RE
T01XaW5kb3dQcm9wZXJ0aWVzKCkKIHsKLSAgICBIYXNoU2V0PERPTVdpbmRvd1Byb3BlcnR5Kj46
Oml0ZXJhdG9yIHN0b3AgPSBtX3Byb3BlcnRpZXMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PERP
TVdpbmRvd1Byb3BlcnR5Kj46Oml0ZXJhdG9yIGl0ID0gbV9wcm9wZXJ0aWVzLmJlZ2luKCk7IGl0
ICE9IHN0b3A7ICsraXQpCi0gICAgICAgICgqaXQpLT5kaXNjb25uZWN0RnJhbWUoKTsKKyAgICBW
ZWN0b3I8RE9NV2luZG93UHJvcGVydHkqPiBwcm9wZXJ0aWVzOworICAgIGNvcHlUb1ZlY3Rvciht
X3Byb3BlcnRpZXMsIHByb3BlcnRpZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJv
cGVydGllcy5zaXplKCk7ICsraSkKKyAgICAgICAgcHJvcGVydGllc1tpXS0+ZGlzY29ubmVjdEZy
YW1lKCk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpyZWNvbm5lY3RET01XaW5kb3dQcm9wZXJ0aWVz
KCkKIHsKICAgICBBU1NFUlQobV9zdXNwZW5kZWRGb3JQYWdlQ2FjaGUpOwotICAgIEhhc2hTZXQ8
RE9NV2luZG93UHJvcGVydHkqPjo6aXRlcmF0b3Igc3RvcCA9IG1fcHJvcGVydGllcy5lbmQoKTsK
LSAgICBmb3IgKEhhc2hTZXQ8RE9NV2luZG93UHJvcGVydHkqPjo6aXRlcmF0b3IgaXQgPSBtX3By
b3BlcnRpZXMuYmVnaW4oKTsgaXQgIT0gc3RvcDsgKytpdCkKLSAgICAgICAgKCppdCktPnJlY29u
bmVjdEZyYW1lKG1fZnJhbWUpOworICAgIFZlY3RvcjxET01XaW5kb3dQcm9wZXJ0eSo+IHByb3Bl
cnRpZXM7CisgICAgY29weVRvVmVjdG9yKG1fcHJvcGVydGllcywgcHJvcGVydGllcyk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLnNpemUoKTsgKytpKQorICAgICAgICBw
cm9wZXJ0aWVzW2ldLT5yZWNvbm5lY3RGcmFtZShtX2ZyYW1lKTsKIH0KIAogdm9pZCBET01XaW5k
b3c6OmNsZWFyRE9NV2luZG93UHJvcGVydGllcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvd0V4dGVuc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ1
NjhhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0
ZW5zaW9uLmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01XaW5k
b3dFeHRlbnNpb24uaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRPTVdy
YXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitET01XaW5kb3dFeHRlbnNpb246OkRP
TVdpbmRvd0V4dGVuc2lvbihGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCisg
ICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKKyAgICAsIG1fd29ybGQod29ybGQpCisgICAg
LCBtX2Rpc2Nvbm5lY3RlZERPTVdpbmRvdygwKQorICAgICwgbV93YXNEZXRhY2hlZChmYWxzZSkK
K3sKKyAgICBBU1NFUlQodGhpcy0+ZnJhbWUoKSk7CisgICAgQVNTRVJUKG1fd29ybGQpOworfQor
CitET01XaW5kb3dFeHRlbnNpb246On5ET01XaW5kb3dFeHRlbnNpb24oKQoreworICAgIC8vIERP
TVdpbmRvd0V4dGVuc2lvbiBsaWZldGltZSBpc24ndCB0aWVkIGRpcmVjdGx5IHRvIHRoZSBET01X
aW5kb3cgaXRzZWxmIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IGl0IHVucmVnaXN0ZXIKKyAgICAv
LyBpdHNlbGYgZnJvbSBhbnkgRE9NV2luZG93IGl0IGlzIGFzc29jaWF0ZWQgd2l0aCB3aGVuIGRl
c3Ryb3llZC4KKyAgICAvLyBUaGlzIG1pZ2h0IGhhcHBlbiBpZiB0aGUgRE9NV2luZG93RXh0ZW5z
aW9uIGlzIGRlc3Ryb3llZCB3aGlsZSBpdHMgRE9NV2luZG93IGlzIGluIGEgQ2FjaGVkUGFnZS4K
KyAgICBpZiAobV9kaXNjb25uZWN0ZWRET01XaW5kb3cpCisgICAgICAgIG1fZGlzY29ubmVjdGVk
RE9NV2luZG93LT51bnJlZ2lzdGVyUHJvcGVydHkodGhpcyk7Cit9CisKK3ZvaWQgRE9NV2luZG93
RXh0ZW5zaW9uOjpkaXNjb25uZWN0RnJhbWUoKQoreworICAgIC8vIENhbGxpbmcgb3V0IHRvIHRo
ZSBjbGllbnQgbWlnaHQgcmVzdWx0IGluIHRoaXMgRE9NV2luZG93RXh0ZW5zaW9uIGJlaW5nIGRl
c3Ryb3llZAorICAgIC8vIHdoaWxlIHRoZXJlIGlzIHN0aWxsIHdvcmsgdG8gZG8uCisgICAgUmVm
UHRyPERPTVdpbmRvd0V4dGVuc2lvbj4gcHJvdGVjdG9yID0gdGhpczsKKyAgICAKKyAgICAvLyBE
T01XaW5kb3dQcm9wZXJ0aWVzIGFyZSBkaXNjb25uZWN0ZWQgZnJvbSBmcmFtZXMgYWZ0ZXIgdGhl
eSBhcmUgZGV0YWNoZWQuCisgICAgLy8gRE9NV2luZG93RXh0ZW5zaW9ucyBvbmx5IHdhbnQgdG8g
c3RheSBwcmVwYXJlZCBmb3IgY2xpZW50IGNhbGxiYWNrcyBpZiB0aGV5J3ZlIG5ldmVyIGJlZW4g
ZGV0YWNoZWQuCisgICAgaWYgKCFtX3dhc0RldGFjaGVkKSB7CisgICAgICAgIEZyYW1lKiBmcmFt
ZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRp
c3BhdGNoV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KHRo
aXMpOworCisgICAgICAgIG1fZGlzY29ubmVjdGVkRnJhbWUgPSBmcmFtZTsKKyAgICAgICAgbV9k
aXNjb25uZWN0ZWRET01XaW5kb3cgPSBmcmFtZS0+ZG9tV2luZG93KCk7CisgICAgfQorCisgICAg
RE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFtZSgpOworfQorCit2b2lkIERPTVdpbmRv
d0V4dGVuc2lvbjo6cmVjb25uZWN0RnJhbWUoRnJhbWUqIGZyYW1lKQoreworICAgIC8vIERPTVdp
bmRvd1Byb3BlcnRpZXMgc2hvdWxkIG5ldmVyIHJlY29ubmVjdCB0byBhIGZyYW1lIGFmdGVyIHRo
ZXkndmUgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSBwYWdlLgorICAgIEFTU0VSVCghbV93YXNEZXRh
Y2hlZCk7CisgICAgQVNTRVJUKG1fZGlzY29ubmVjdGVkRnJhbWUgPT0gZnJhbWUpOworICAgIAor
ICAgIERPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZShmcmFtZSk7CisgICAgbV9kaXNj
b25uZWN0ZWRGcmFtZSA9IDA7CisgICAgbV9kaXNjb25uZWN0ZWRET01XaW5kb3cgPSAwOworCisg
ICAgdGhpcy0+ZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZFJlY29ubmVj
dERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KHRoaXMpOworfQorCit2b2lkIERPTVdp
bmRvd0V4dGVuc2lvbjo6d2lsbERldGFjaFBhZ2UoKQoreworICAgIC8vIHdpbGxEZXRhY2hQYWdl
IG1pZ2h0IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBidXQgd2Ugb25seSB3YW50IHRvIHJlYWN0
IG9uY2UuCisgICAgaWYgKG1fd2FzRGV0YWNoZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICAvLyBDYWxsaW5nIG91dCB0byB0aGUgY2xpZW50IG1pZ2h0IHJlc3VsdCBpbiB0aGlzIERPTVdp
bmRvd0V4dGVuc2lvbiBiZWluZyBkZXN0cm95ZWQKKyAgICAvLyB3aGlsZSB0aGVyZSBpcyBzdGls
bCB3b3JrIHRvIGRvLgorICAgIFJlZlB0cjxET01XaW5kb3dFeHRlbnNpb24+IHByb3RlY3RvciA9
IHRoaXM7CisgICAgCisgICAgRnJhbWUqIGZyYW1lID0gbV9kaXNjb25uZWN0ZWRGcmFtZS5nZXQo
KTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAg
QVNTRVJUKGZyYW1lKTsKKworICAgIC8vIERPTVdpbmRvd0V4dGVuc2lvbiBsaWZldGltZSBpc24n
dCB0aWVkIGRpcmVjdGx5IHRvIHRoZSBET01XaW5kb3cgaXRzZWxmIHNvIGl0IGlzIGltcG9ydGFu
dCB0aGF0IGl0IHVucmVnaXN0ZXIKKyAgICAvLyBpdHNlbGYgZnJvbSBhbnkgRE9NV2luZG93IGl0
IGlzIGFzc29jaWF0ZWQgd2l0aCB3aGVuIGRldGFjaGVkLgorICAgIC8vIFRoaXMgbWlnaHQgYmUg
dGhlIGRpc2Nvbm5lY3RlZCBET01XaW5kb3cgaWYgdGhlIERPTVdpbmRvdyBpcyBpbiBhIENhY2hl
ZFBhZ2UgdGhhdCBpcyBwcnVuZWQuCisgICAgRE9NV2luZG93KiBhc3NvY2lhdGVkRE9NV2luZG93
ID0gbV9kaXNjb25uZWN0ZWRET01XaW5kb3cgPyBtX2Rpc2Nvbm5lY3RlZERPTVdpbmRvdyA6IGZy
YW1lLT5kb21XaW5kb3coKTsKKyAgICBhc3NvY2lhdGVkRE9NV2luZG93LT51bnJlZ2lzdGVyUHJv
cGVydHkodGhpcyk7CisgICAgbV9kaXNjb25uZWN0ZWRET01XaW5kb3cgPSAwOworICAgIAorICAg
IGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoV2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RGb3JET01XaW5kb3dFeHRlbnNpb24odGhpcyk7CisKKyAgICBtX2Rpc2Nvbm5lY3RlZEZyYW1l
ID0gMDsKKworICAgIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGV0YWNoUGFnZSgpOworICAgIAor
ICAgIG1fd2FzRGV0YWNoZWQgPSB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jMjBhNGY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBET01XaW5kb3dFeHRl
bnNpb25faAorI2RlZmluZSBET01XaW5kb3dFeHRlbnNpb25faAorCisjaW5jbHVkZSAiRE9NV2lu
ZG93UHJvcGVydHkuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIERPTVdpbmRvdzsKK2NsYXNzIERPTVdpbmRvd0V4dGVuc2lvbjsKK2Ns
YXNzIERPTVdyYXBwZXJXb3JsZDsKK2NsYXNzIEZyYW1lOworCitjbGFzcyBET01XaW5kb3dFeHRl
bnNpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxET01XaW5kb3dFeHRlbnNpb24+LCBwdWJsaWMgRE9N
V2luZG93UHJvcGVydHkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVdpbmRv
d0V4dGVuc2lvbj4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NV2luZG93RXh0ZW5zaW9uKGZy
YW1lLCB3b3JsZCkpOworICAgIH0KKworICAgIH5ET01XaW5kb3dFeHRlbnNpb24oKTsKKworICAg
IHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjb25uZWN0RnJhbWUoRnJhbWUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bERldGFjaFBhZ2UoKSBPVkVSUklERTsKKworICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQoKSBj
b25zdCB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgRE9NV2luZG93
RXh0ZW5zaW9uKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkKik7CisKKyAgICBSZWZQdHI8RE9NV3Jh
cHBlcldvcmxkPiBtX3dvcmxkOworICAgIFJlZlB0cjxGcmFtZT4gbV9kaXNjb25uZWN0ZWRGcmFt
ZTsKKyAgICBET01XaW5kb3cqIG1fZGlzY29ubmVjdGVkRE9NV2luZG93OworICAgIGJvb2wgbV93
YXNEZXRhY2hlZDsKK307CisKK30KKworI2VuZGlmIC8vIERPTVdpbmRvd0V4dGVuc2lvbl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0CmluZGV4IGQ0MzIwOGQuLmJjMGUwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CkBAIC0zMzEsNiArMzMxLDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVu
dC5jcHAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC0zNDYsNiAr
MzQ3LDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGUuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKyAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKICAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGIxYTY3Y2MuLmI4Zjg1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3
MiBAQAorMjAxMi0wNC0wOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMTIwMTU1PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgyNjY0CisgICAgICAgICBOZWVkIERPTVdpbmRvdyBtZWNoYW5p
c20gdG8gc3VwcGxlbWVudCBVc2VyU2NyaXB0cyBmb3IgcGFnZSBjYWNoZSBub3RpZmljYXRpb25z
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAg
ICAtIEFkZHMgYSBuZXcgQVBJIG9iamVjdCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbgorICAg
ICAgICAtIEV4cG9zZXMgY2FsbGJhY2tzIGFib3V0IHRoZSBsaWZldGltZSBvZiBET01XaW5kb3dF
eHRlbnNpb25zIHRocm91Z2ggYSBuZXcgQnVuZGxlUGFnZUdyb3VwIGNsaWVudAorCisgICAgICAg
IEFkZCBBUEkgdG8gc2V0IHRoZSBCdW5kbGVQYWdlR3JvdXAgY2xpZW50OgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuY3BwOgorICAg
ICAgICAoV0tCdW5kbGVQYWdlR3JvdXBTZXRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlR3JvdXBQcm94eTo6aW5pdGlhbGl6ZUNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VH
cm91cFByb3h5OjpjbGllbnQpOgorCisgICAgICAgIEltcGxlbWVudCB0aGF0IGNsaWVudDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUdyb3Vw
Q2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUdy
b3VwQ2xpZW50OjpkaWRDcmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50Ojp3aWxsRGlzY29ubmVjdERPTVdpbmRv
d0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VHcm91cENsaWVudDo6ZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9i
YWxPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVu
dDo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlR3JvdXBDbGll
bnQuaDogCisKKyAgICAgICAgQWRkIEFQSSBmb3IgdGhlIG5ldyBET01XaW5kb3dFeHRlbnNpb24g
b2JqZWN0OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uR2V0VHlwZUlEKToKKyAgICAgICAgKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uQ3JlYXRlKToKKyAgICAgICAgKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uR2V0RnJhbWUp
OgorICAgICAgICAoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25HZXRTY3JpcHRXb3JsZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbi5oOiBBZGRlZC4KKworICAgICAgICBBZGQgaW1wbGVtZW50YXRpb24gZm9yIHRo
YXQgQVBJIHdoaWNoIHdyYXBzIHRoZSBXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjphbGxFeHRlbnNpb25zKToKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpnZXQp
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6SW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6fkluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246
OmZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNp
b246OndvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAoSW5qZWN0ZWRCdW5k
bGVET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbjo6dHlwZSk6CisKKyAgICAgICAgQWRkIG5ldyBBUEkgY2FzdHM6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNoYXJlZC9BUElDbGll
bnRUcmFpdHMuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUElPYmplY3QuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oOgorCisgICAg
ICAgICBJbXBsZW1lbnQgdGhlIDQgbmV3IGNhbGxiYWNrcyBmcm9tIFdlYkNvcmUgd2hpY2ggbm90
aWZ5IHRoZSBCdW5kbGVQYWdlR3JvdXAgY2xpZW50OgorICAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ2FuQ3JlYXRlR2xvYmFsT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbERpc2Nvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5z
aW9uVG9HbG9iYWxPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorCisgICAgICAgIFByb2plY3QgZmlsZXM6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAg
ICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd2luL1dl
YktpdDIudmNwcm9qOgorCiAyMDEyLTA0LTA5ICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2Vu
dGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIFJlbW92ZSBhbGwgVVNFKFRJTEVE
X0JBQ0tJTkdfU1RPUkUpIGRlZmluZXMgZnJvbSBjb2RlIHRoYXQgY29udGFpbnMgVUlfU0lERV9D
T01QT1NJVElORwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCA1ODhlNmE2Li45NWU0NTRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbQpAQCAtODA1LDYgKzgwNSw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBc
CisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNw
cCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUZyYW1lLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVGcmFtZVByaXZhdGUuaCBcCkBAIC04NDQsNiArODQ2LDggQEAgd2Via2l0
Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVu
dC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggYzg2NTZlNC4uNTU3MjNiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTE2LDYgKzExNiw3IEBAIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlKiBXS0J1bmRsZVJlZjsKIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlQmFja0ZvcndhcmRMaXN0KiBXS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbSogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmOwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVET01DU1NTdHlsZURlY2xhcmF0aW9uKiBXS0J1bmRs
ZUNTU1N0eWxlRGVjbGFyYXRpb25SZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWY7CiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUZyYW1lKiBXS0J1bmRsZUZyYW1lUmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVIaXRUZXN0UmVzdWx0KiBXS0J1
bmRsZUhpdFRlc3RSZXN1bHRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRs
ZUluc3BlY3RvciogV0tCdW5kbGVJbnNwZWN0b3JSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UElDbGllbnRUcmFpdHMuY3BwCmluZGV4IDRmNWQ4ZmEuLmRmMzU5MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJQ2xpZW50VHJhaXRzLmgiCiAKKyNpbmNsdWRlICJX
S0J1bmRsZS5oIgogI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAppbmRleCBkNmNjMDMwLi42ZWYxMDNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xMDYsNiArMTA2LDcgQEAgcHVibGljOgogICAg
ICAgICBUeXBlQnVuZGxlLAogICAgICAgICBUeXBlQnVuZGxlQmFja0ZvcndhcmRMaXN0LAogICAg
ICAgICBUeXBlQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbSwKKyAgICAgICAgVHlwZUJ1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbiwKICAgICAgICAgVHlwZUJ1bmRsZUZyYW1lLAogICAgICAgICBUeXBl
QnVuZGxlSGl0VGVzdFJlc3VsdCwKICAgICAgICAgVHlwZUJ1bmRsZUluc3BlY3RvciwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQu
cHJpCmluZGV4IDBkYjk4NTkuLjc3NmNhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMzEzLDYgKzMxMyw3
IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlQ2xpZW50LmggXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBcCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIFwK
QEAgLTY1Miw2ICs2NTMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCisgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bi5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFt
ZS5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRU
ZXN0UmVzdWx0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUluc3BlY3Rvci5jcHAgXApAQCAtNjY3LDYgKzY2OSw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Qu
Y3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVDbGllbnQuY3BwIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVD
bGllbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA3YTU3NjEwLi40MjMxZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMzIsNiArMzMyLDggQEAK
IAkJNTEwRkJCOUIxMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEZCQjk5MTI4
OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmggKi87IH07CiAJCTUxMTBB
RTBDMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTEwQUUwQTEzM0MxNkNCMDA3MjcxN0Eg
LyogV0tJY29uRGF0YWJhc2UuY3BwICovOyB9OwogCQk1MTEwQUUwRDEzM0MxNkNCMDA3MjcxN0Eg
LyogV0tJY29uRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMTBBRTBCMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxMTBDMENC
MTUyQkIzQzMwMDhCODVGMiAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMEMwQkUxNTJBODQ0
OTAwOEI4NUYyIC8qIEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50LmggKi87IH07CisJCTUx
MTBDMENDMTUyQkIzQzgwMDhCODVGMiAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTEwQzBC
RDE1MkE4NDQ5MDA4Qjg1RjIgLyogSW5qZWN0ZWRCdW5kbGVQYWdlR3JvdXBDbGllbnQuY3BwICov
OyB9OwogCQk1MTFCMjRBNjEzMkUwOTU3MDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlUHJveHku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExQjI0
QTQxMzJFMDk1NzAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZVByb3h5LmNwcCAqLzsgfTsKIAkJ
NTExQjI0QTcxMzJFMDk1NzAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZVByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFCMjRBNTEzMkUwOTU3
MDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlUHJveHkuaCAqLzsgfTsKIAkJNTExQjI0QUExMzJF
MDk3MjAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFCMjRBODEzMkUwOTcyMDAwNjVBMEMgLyogV2Vi
SWNvbkRhdGFiYXNlLmNwcCAqLzsgfTsKQEAgLTQzNCw2ICs0MzYsOSBAQAogCQk1MUQxMzA1NTEz
ODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1MTEzODJFQUMwMDAzNTFFREQg
LyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgKi87IH07CiAJCTUxRDEzMDU2MTM4MkVBQzAwMDM1
MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1MjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJl
c3BvbnNlRGF0YS5oICovOyB9OwogCQk1MUQxMzA1ODEzODJGMTA1MDAzNTFFREQgLyogV2ViUHJv
Y2Vzc1Byb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFEMTMwNTcxMzgyRjEwNTAwMzUxRUREIC8qIFdlYlByb2Nlc3NQcm94eU1hYy5tbSAq
LzsgfTsKKwkJNTFFRkMxQ0YxNTI0RTYyNTAwQzlBOTM4IC8qIFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUZBMkQ1NDE1MjExMTg2MDBDMUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUZBMkQ3
NDE1MjEyREYxMDBDMUJBMEIgLyogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQTJENUMx
NTIxMUE1MDAwQzFCQTBCIC8qIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAq
LzsgfTsKKwkJNTFGQTJENzcxNTIxMkUyNjAwQzFCQTBCIC8qIFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRkEyRDc1MTUyMTJFMUUwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5j
cHAgKi87IH07CiAJCTUyNzJCMjhBMTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjcyQjI4
ODE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuY3BwICovOyB9OwogCQk1MjcyQjI4
QjE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzJCMjg5MTQwNjk4NUQwMDk2QTVEMCAvKiBT
dGF0aXN0aWNzRGF0YS5oICovOyB9OwogCQk1RDUxODQ1NTEzQkNGOUNDMDBDN0ZGNEEgLyogQVBJ
Q2xpZW50VHJhaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVENTE4NDUzMTNCQ0Y5Q0MwMEM3RkY0QSAvKiBBUElDbGllbnRUcmFpdHMuY3BwICov
OyB9OwpAQCAtMTM1MCw2ICsxMzU1LDggQEAKIAkJNTEwRkJCOTkxMjg4Qzk1RTAwQUZGREY0IC8q
IFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTEwQUUwQTEzM0MxNkNCMDA3MjcxN0EgLyogV0tJY29uRGF0YWJhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tJY29uRGF0YWJhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTEwQUUwQjEzM0MxNkNCMDA3MjcxN0EgLyogV0tJY29u
RGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tJY29uRGF0YWJh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTExMEMwQkQxNTJBODQ0OTAwOEI4
NUYyIC8qIEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTExMEMwQkUxNTJBODQ0OTAwOEI4NUYyIC8q
IEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxMTJDQTQ3MTM4NThENEIwMDMwODY3RCAvKiBTZWNLZXljaGFpbkl0
ZW1SZXF1ZXN0RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
ZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMTJDQTQ4MTM4NThENEIwMDMwODY3RCAvKiBTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWNLZXljaGFpbkl0ZW1SZXF1
ZXN0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTEyQ0E0OTEzODU4RDRC
MDAzMDg2N0QgLyogU2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDU4LDYgKzE0NjUsMTAgQEAKIAkJNTFE
MTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDUyMTM4MkVBQzAwMDM1MUVERCAvKiBT
ZWNJdGVtUmVzcG9uc2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNl
Y0l0ZW1SZXNwb25zZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMw
NTcxMzgyRjEwNTAwMzUxRUREIC8qIFdlYlByb2Nlc3NQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NQcm94eU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGQTJENTQxNTIxMTE4NjAwQzFCQTBCIC8qIFdLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxRkEyRDVBMTUyMTFBMUUwMEMxQkEwQiAvKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUZB
MkQ1QzE1MjExQTUwMDBDMUJBMEIgLyogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUZB
MkQ3NTE1MjEyRTFFMDBDMUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVET01XaW5kb3dFeHRl
bnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjcyQjI4ODE0MDY5ODVE
MDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RhdGlzdGljc0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MjcyQjI4OTE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlzdGljc0RhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUQ1MTg0NTMxM0JDRjlDQzAwQzdGRjRBIC8qIEFQSUNsaWVudFRy
YWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElDbGllbnRU
cmFpdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzIyOCw2ICszMjM5LDgg
QEAKIAkJCQk5MzVFRUI5MjEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtLmggKi8sCiAJCQkJQkNFRTdEQzQxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVj
dGVkQnVuZGxlQ2xpZW50LmNwcCAqLywKIAkJCQlCQ0VFN0RDMzEyOEI2NDVEMDA5ODI3REEgLyog
SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLywKKwkJCQk1MUZBMkQ1QzE1MjExQTUwMDBDMUJBMEIg
LyogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwICovLAorCQkJCTUxRkEyRDVB
MTUyMTFBMUUwMEMxQkEwQiAvKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oICov
LAogCQkJCUJDNDk4NjE3MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuY3BwICovLAogCQkJCUJDNDk4NjE2MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQuaCAqLywKIAkJCQlCQzgxNDdENDEyRjY2RDMxMDA3QjJDMzIgLyog
SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCAqLywKQEAgLTMyNDAsNiArMzI1Myw4
IEBACiAJCQkJQkMxNEUxMDgxMjBCOTA1RTAwODI2QzBDIC8qIEluamVjdGVkQnVuZGxlUGFnZUZv
cm1DbGllbnQuaCAqLywKIAkJCQlDRDVDNjY5RTEzNEI5RDM2MDA0RkUyQTggLyogSW5qZWN0ZWRC
dW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgKi8sCiAJCQkJQ0Q1QzY2OUYxMzRCOUQzNzAw
NEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCAqLywKKwkJCQk1
MTEwQzBCRDE1MkE4NDQ5MDA4Qjg1RjIgLyogSW5qZWN0ZWRCdW5kbGVQYWdlR3JvdXBDbGllbnQu
Y3BwICovLAorCQkJCTUxMTBDMEJFMTUyQTg0NDkwMDhCODVGMiAvKiBJbmplY3RlZEJ1bmRsZVBh
Z2VHcm91cENsaWVudC5oICovLAogCQkJCUJDQThDNkE2MTFFM0JBNUYwMDgxMkZCNyAvKiBJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCUJDQThDNkE3MTFFM0JBNUYw
MDgxMkZCNyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCAqLywKIAkJCQlCQzgx
NDdBODEyRjY0Q0RBMDA3QjJDMzIgLyogSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmNw
cCAqLywKQEAgLTMyODEsNiArMzI5Niw4IEBACiAJCQkJOTM1RUVCOTYxMjc3NjE2RDAwMzMyMkI4
IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggKi8sCiAJCQkJOTM1RUVCOTcxMjc3NjE2RDAw
MzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi8sCiAJCQkJOTM1RUVC
OTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oICovLAor
CQkJCTUxRkEyRDc1MTUyMTJFMUUwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bi5jcHAgKi8sCisJCQkJNTFGQTJENTQxNTIxMTE4NjAwQzFCQTBCIC8qIFdLQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uLmggKi8sCiAJCQkJQkNEMjVGMTYxMUQ2QkRFMTAwMTY5QjBFIC8qIFdLQnVu
ZGxlRnJhbWUuY3BwICovLAogCQkJCUJDRDI1RjE1MTFENkJERTEwMDE2OUIwRSAvKiBXS0J1bmRs
ZUZyYW1lLmggKi8sCiAJCQkJQkNGMDQ5RTQxMUZFMjBGNjAwRjg2QTU4IC8qIFdLQnVuZGxlRnJh
bWVQcml2YXRlLmggKi8sCkBAIC00MTg1LDYgKzQyMDIsOCBAQAogCQkJCTM3OTQ4NDA0MTUwQzM1
MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0
MDkxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNFREExMkUzMTUyQ0QxQjMwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxRUZDMUNGMTUyNEU2MjUwMEM5QTkzOCAvKiBXS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTExMEMwQ0IxNTJCQjNDMzAw
OEI4NUYyIC8qIEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTQ5MjksNiArNDk0OCw5IEBACiAJCQkJMzc5NDg0MDMxNTBDMzUwNjAwRTUyQ0U5IC8qIFdl
YlJlbmRlckxheWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3OTQ4NDA4MTUwQzRCOTcwMEU1
MkNFOSAvKiBXS1JlbmRlckxheWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFREExMkUyMTUy
Q0QxQUUwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTFGQTJENzQxNTIxMkRGMTAwQzFCQTBCIC8qIEluamVjdGVkQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRkEyRDc3MTUyMTJFMjYwMEMx
QkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MTEwQzBDQzE1MkJCM0M4MDA4Qjg1RjIgLyogSW5qZWN0ZWRCdW5kbGVQYWdlR3JvdXBDbGll
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAppbmRl
eCBkYjMyNzE2Li5lNDBjODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKQEAg
LTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZTsK
IGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgSW5qZWN0ZWRCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtOworY2xhc3MgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRl
bnNpb247CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBJbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb247CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU7
CkBAIC01OCw2ICs1OSw3IEBAIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5OwogV0tfQUREX0FQSV9N
QVBQSU5HKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJlZiwgSW5qZWN0ZWRCdW5kbGVCYWNr
Rm9yd2FyZExpc3RJdGVtKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlQmFja0ZvcndhcmRM
aXN0UmVmLCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdCkKIFdLX0FERF9BUElfTUFQUElO
RyhXS0J1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25SZWYsIFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFy
YXRpb24pCitXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYs
IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdL
QnVuZGxlRnJhbWVSZWYsIFdlYkZyYW1lKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSGl0
VGVzdFJlc3VsdFJlZiwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KQogV0tfQUREX0FQSV9N
QVBQSU5HKFdLQnVuZGxlSW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0b3IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNWJkNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uLmNwcApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgiCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbi5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdl
dFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uOjpBUElUeXBlKTsKK30KKworV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgV0tC
dW5kbGVET01XaW5kb3dFeHRlbnNpb25DcmVhdGUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tC
dW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZCkKK3sKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb24+IGV4dGVuc2lvbiA9IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uOjpjcmVhdGUodG9JbXBsKGZyYW1lKSwgdG9JbXBsKHdvcmxkKSk7CisgICAgcmV0dXJu
IHRvQVBJKGV4dGVuc2lvbi5yZWxlYXNlKCkubGVha1JlZigpKTsKK30KKworV0tCdW5kbGVGcmFt
ZVJlZiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldEZyYW1lKFdLQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGV4dGVu
c2lvbiktPmZyYW1lKCkpOworfQorCitXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIFdLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uR2V0U2NyaXB0V29ybGQoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25S
ZWYgZXh0ZW5zaW9uKQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZXh0ZW5zaW9uKS0+d29y
bGQoKSk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRl
bnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDlhNzQyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uX2gKKyNkZWZpbmUgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25f
aAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl
eHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVET01XaW5k
b3dFeHRlbnNpb25HZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uUmVmIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uQ3JlYXRlKFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWUsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgd29ybGQpOworCitXS19FWFBPUlQgV0tC
dW5kbGVGcmFtZVJlZiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldEZyYW1lKFdLQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbik7CitXS19FWFBPUlQgV0tCdW5kbGVTY3Jp
cHRXb3JsZFJlZiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldFNjcmlwdFdvcmxkKFdLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbik7CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbl9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuY3BwCmluZGV4IGUwNzZjYjkuLjM2
YTlmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuY3BwCkBAIC0zNyw2
ICszNywxMSBAQCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VHcm91cEdldFR5cGVJRCgpCiAgICAgcmV0
dXJuIHRvQVBJKFdlYlBhZ2VHcm91cFByb3h5OjpBUElUeXBlKTsKIH0KIAordm9pZCBXS0J1bmRs
ZVBhZ2VHcm91cFNldENsaWVudChXS0J1bmRsZVBhZ2VHcm91cFJlZiBidW5kbGVQYWdlR3JvdXAs
IFdLQnVuZGxlUGFnZUdyb3VwQ2xpZW50ICogd2tDbGllbnQpCit7CisgICAgdG9JbXBsKGJ1bmRs
ZVBhZ2VHcm91cCktPmluaXRpYWxpemVDbGllbnQod2tDbGllbnQpOworfQorCiBXS1N0cmluZ1Jl
ZiBXS0J1bmRsZVBhZ2VHcm91cENvcHlJZGVudGlmaWVyKFdLQnVuZGxlUGFnZUdyb3VwUmVmIGJ1
bmRsZVBhZ2VHcm91cCkKIHsKICAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGJ1bmRsZVBh
Z2VHcm91cCktPmlkZW50aWZpZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUdyb3VwLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUdyb3Vw
LmgKaW5kZXggZTBiZjY0NS4uOGYxYTg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VHcm91cC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
R3JvdXAuaApAQCAtMjYsMTQgKzI2LDM1IEBACiAjaWZuZGVmIFdLQnVuZGxlUGFnZUdyb3VwX2gK
ICNkZWZpbmUgV0tCdW5kbGVQYWdlR3JvdXBfaAogCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAKICNpZmRlZiBfX2Nw
bHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorLy8gV0tCdW5kbGVQYWdlR3JvdXBDbGll
bnQKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZUdyb3VwRGlkQ3JlYXRlR2xvYmFsT2JqZWN0
Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlR3JvdXBSZWYsIEpTT2JqZWN0UmVmIGdsb2Jh
bE9iamVjdCwgV0tCdW5kbGVGcmFtZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VHcm91cFdpbGxE
aXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdENhbGxiYWNrKShXS0J1
bmRsZVBhZ2VHcm91cFJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlR3JvdXBEaWRSZWNv
bm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdENhbGxiYWNrKShXS0J1bmRsZVBh
Z2VHcm91cFJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlR3JvdXBXaWxsRGVzdHJveUds
b2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrKShXS0J1bmRsZVBhZ2VHcm91
cFJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOworCitzdHJ1Y3QgV0tCdW5kbGVQYWdlR3JvdXBDbGllbnQgeworICAgIGludCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworICAg
IAorICAgIFdLQnVuZGxlUGFnZUdyb3VwRGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWVDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICBkaWRDcmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZTsK
KyAgICBXS0J1bmRsZVBhZ2VHcm91cFdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJv
bUdsb2JhbE9iamVjdENhbGxiYWNrICAgd2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25G
cm9tR2xvYmFsT2JqZWN0OworICAgIFdLQnVuZGxlUGFnZUdyb3VwRGlkUmVjb25uZWN0RE9NV2lu
ZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3RDYWxsYmFjayAgICAgICBkaWRSZWNvbm5lY3RET01X
aW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdDsKKyAgICBXS0J1bmRsZVBhZ2VHcm91cFdpbGxE
ZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uQ2FsbGJhY2sgICAgICAgd2ls
bERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb247Cit9OwordHlwZWRlZiBz
dHJ1Y3QgV0tCdW5kbGVQYWdlR3JvdXBDbGllbnQgV0tCdW5kbGVQYWdlR3JvdXBDbGllbnQ7CisK
K2VudW0geyBrV0tCdW5kbGVQYWdlR3JvdXBDbGllbnRDdXJyZW50VmVyc2lvbiA9IDAgfTsKKwog
V0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdyb3VwR2V0VHlwZUlEKCk7CiAKK1dLX0VY
UE9SVCB2b2lkIFdLQnVuZGxlUGFnZUdyb3VwU2V0Q2xpZW50KFdLQnVuZGxlUGFnZUdyb3VwUmVm
IGJ1bmRsZVBhZ2VHcm91cCwgV0tCdW5kbGVQYWdlR3JvdXBDbGllbnQgKiBjbGllbnQpOwogV0tf
RVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlUGFnZUdyb3VwQ29weUlkZW50aWZpZXIoV0tCdW5k
bGVQYWdlR3JvdXBSZWYgYnVuZGxlUGFnZUdyb3VwKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggMzJiZTI5MC4uOWMxYzYwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaApAQCAtMzQsNiArMzQsOCBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgQVBJT2JqZWN0OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGU7CitjbGFzcyBJ
bmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjsKK2NsYXNzIFdlYkZyYW1lOwogY2xhc3Mg
V2ViUGFnZTsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmQ0NDhlODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uLmNwcApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgiCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkLmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUxvYWRl
ckNsaWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRE9NV2luZG93RXh0ZW5zaW9uLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordHlwZWRlZiBIYXNo
TWFwPFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiosIEluamVjdGVkQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uKj4gRXh0ZW5zaW9uTWFwOworc3RhdGljIEV4dGVuc2lvbk1hcCYgYWxsRXh0ZW5z
aW9ucygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChFeHRlbnNpb25NYXAsIG1hcCwgKCkp
OworICAgIHJldHVybiBtYXA7Cit9CisKK1Bhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVET01XaW5k
b3dFeHRlbnNpb24+IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpjcmVhdGUoV2Vi
RnJhbWUqIGZyYW1lLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3JsZCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKGZyYW1l
LCB3b3JsZCkpOworfQorCitJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogSW5qZWN0
ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OmdldChET01XaW5kb3dFeHRlbnNpb24qIGV4dGVu
c2lvbikKK3sKKyAgICBBU1NFUlQoYWxsRXh0ZW5zaW9ucygpLmNvbnRhaW5zKGV4dGVuc2lvbikp
OworICAgIHJldHVybiBhbGxFeHRlbnNpb25zKCkuZ2V0KGV4dGVuc2lvbik7Cit9CisKK0luamVj
dGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbihXZWJGcmFtZSogZnJhbWUsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkKQor
ICAgIDogbV9jb3JlRXh0ZW5zaW9uKERPTVdpbmRvd0V4dGVuc2lvbjo6Y3JlYXRlKGZyYW1lLT5j
b3JlRnJhbWUoKSwgd29ybGQtPmNvcmVXb3JsZCgpKSkKK3sKKyAgICBhbGxFeHRlbnNpb25zKCku
YWRkKG1fY29yZUV4dGVuc2lvbi5nZXQoKSwgdGhpcyk7Cit9CisKK0luamVjdGVkQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uOjp+SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24oKQorewor
ICAgIEFTU0VSVChhbGxFeHRlbnNpb25zKCkuY29udGFpbnMobV9jb3JlRXh0ZW5zaW9uLmdldCgp
KSk7CisgICAgYWxsRXh0ZW5zaW9ucygpLnJlbW92ZShtX2NvcmVFeHRlbnNpb24uZ2V0KCkpOwor
fQorCitXZWJGcmFtZSogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OmZyYW1lKCkg
Y29uc3QKK3sKKyAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBtX2NvcmVFeHRlbnNpb24tPmZy
YW1lKCk7CisgICAgcmV0dXJuIGZyYW1lID8gc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGll
bnQqPihmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKS0+d2ViRnJhbWUoKSA6IDA7Cit9CisKK0lu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
Ojp3b3JsZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3dvcmxkKQorICAgICAgICBtX3dvcmxkID0g
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Z2V0T3JDcmVhdGUobV9jb3JlRXh0ZW5zaW9uLT53
b3JsZCgpKTsKKyAgICAgICAgCisgICAgcmV0dXJuIG1fd29ybGQuZ2V0KCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMDlmMGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb25faAorI2RlZmluZSBJbmplY3RlZEJ1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbl9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV2luZG93RXh0
ZW5zaW9uOworCit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkOworY2xhc3MgV2ViRnJhbWU7CisKK2NsYXNzIEluamVjdGVkQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVCdW5kbGVET01XaW5kb3dFeHRlbnNpb247CisKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbj4gY3Jl
YXRlKFdlYkZyYW1lKiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCopOworICAgIHN0YXRpYyBJ
bmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogZ2V0KFdlYkNvcmU6OkRPTVdpbmRvd0V4
dGVuc2lvbiopOworCisgICAgdmlydHVhbCB+SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24oKSBPVkVSUklERTsKKyAgICAKKyAgICBXZWJGcmFtZSogZnJhbWUoKSBjb25zdDsKKyAgICBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3JsZCgpIGNvbnN0OworCitwcml2YXRlOgorICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAgSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24oV2ViRnJhbWUqLCBJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkKik7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uPiBt
X2NvcmVFeHRlbnNpb247CisgICAgbXV0YWJsZSBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZD4gbV93b3JsZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42OGUxYTEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudC5jcHAKQEAg
LTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudC5oIgorCisjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50OjpkaWRDcmVhdGVHbG9i
YWxPYmplY3RGb3JGcmFtZShXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBKU09iamVjdFJl
ZiBnbG9iYWxPYmplY3QsIFdlYkZyYW1lKiBmcmFtZSwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxk
KiB3b3JsZCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZy
YW1lKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ+IGluamVjdGVkV29ybGQgPSBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRP
ckNyZWF0ZSh3b3JsZCk7CisgICAgbV9jbGllbnQuZGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJh
bWUodG9BUEkocGFnZUdyb3VwKSwgZ2xvYmFsT2JqZWN0LCB0b0FQSShmcmFtZSksIHRvQVBJKGlu
amVjdGVkV29ybGQuZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwordm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudDo6d2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNp
b25Gcm9tR2xvYmFsT2JqZWN0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIFdlYkNvcmU6
OkRPTVdpbmRvd0V4dGVuc2lvbiogY29yZUV4dGVuc2lvbikKK3sKKyAgICBpZiAoIW1fY2xpZW50
LndpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
PiBleHRlbnNpb24gPSBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6Z2V0KGNvcmVF
eHRlbnNpb24pOworICAgIEFTU0VSVChleHRlbnNpb24pOworICAgIG1fY2xpZW50LndpbGxEaXNj
b25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCh0b0FQSShwYWdlR3JvdXAp
LCB0b0FQSShleHRlbnNpb24uZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwordm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudDo6ZGlkUmVjb25uZWN0RE9NV2luZG93RXh0
ZW5zaW9uVG9HbG9iYWxPYmplY3QoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgV2ViQ29y
ZTo6RE9NV2luZG93RXh0ZW5zaW9uKiBjb3JlRXh0ZW5zaW9uKQoreworICAgIGlmICghbV9jbGll
bnQuZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QpCisgICAgICAg
IHJldHVybjsKKworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbj4g
ZXh0ZW5zaW9uID0gSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OmdldChjb3JlRXh0
ZW5zaW9uKTsKKyAgICBBU1NFUlQoZXh0ZW5zaW9uKTsKKyAgICBtX2NsaWVudC5kaWRSZWNvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCh0b0FQSShwYWdlR3JvdXApLCB0b0FQ
SShleHRlbnNpb24uZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwordm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudDo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01X
aW5kb3dFeHRlbnNpb24oV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgV2ViQ29yZTo6RE9N
V2luZG93RXh0ZW5zaW9uKiBjb3JlRXh0ZW5zaW9uKQoreworICAgIGlmICghbV9jbGllbnQud2ls
bERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbj4gZXh0ZW5z
aW9uID0gSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OmdldChjb3JlRXh0ZW5zaW9u
KTsKKyAgICBBU1NFUlQoZXh0ZW5zaW9uKTsKKyAgICBtX2NsaWVudC53aWxsRGVzdHJveUdsb2Jh
bE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbih0b0FQSShwYWdlR3JvdXApLCB0b0FQSShleHRl
bnNpb24uZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI3NzQyYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlR3JvdXBDbGllbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBJbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudF9oCisjZGVmaW5lIEluamVjdGVkQnVuZGxl
UGFnZUdyb3VwQ2xpZW50X2gKKworI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldL
QnVuZGxlUGFnZUdyb3VwLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIGNsYXNzIERPTVdpbmRvd0V4dGVuc2lvbjsKKyAgICBjbGFzcyBET01X
cmFwcGVyV29ybGQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJGcmFtZTsK
K2NsYXNzIFdlYlBhZ2VHcm91cFByb3h5OworCitjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VHcm91
cENsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tCdW5kbGVQYWdlR3JvdXBDbGllbnQsIGtXS0J1
bmRsZVBhZ2VHcm91cENsaWVudEN1cnJlbnRWZXJzaW9uPiB7CitwdWJsaWM6CisgICAgdm9pZCBk
aWRDcmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZShXZWJQYWdlR3JvdXBQcm94eSosIEpTT2JqZWN0
UmVmIGdsb2JhbE9iamVjdCwgV2ViRnJhbWUqLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKTsK
KyAgICB2b2lkIHdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVj
dChXZWJQYWdlR3JvdXBQcm94eSosIFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopOworICAg
IHZvaWQgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QoV2ViUGFn
ZUdyb3VwUHJveHkqLCBXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKTsKKyAgICB2b2lkIHdp
bGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKFdlYlBhZ2VHcm91cFBy
b3h5KiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKik7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOWEyYjJlMC4uNjQ3NTMzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmgiCkBAIC0xMzg2LDYgKzEzODgsNjIg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVj
dEluV29ybGQoRE9NV3JhcHBlcldvcmxkKgogI2VuZGlmCiB9CiAKKwordm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hDYW5DcmVhdGVHbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxk
KiB3b3JsZCkKK3sKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAg
IGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFdlYlBhZ2VHcm91cFBy
b3h5KiBncm91cCA9IHdlYlBhZ2UtPnBhZ2VHcm91cCgpOworICAgIGlmICghZ3JvdXApCisgICAg
ICAgIHJldHVybjsKKyAgICAKKyAgICBKU09iamVjdFJlZiBnbG9iYWxPYmplY3QgPSB0b1JlZiht
X2ZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCh3b3JsZCkpOworICAg
IAorICAgIGdyb3VwLT5jbGllbnQoKS5kaWRDcmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZShncm91
cCwgZ2xvYmFsT2JqZWN0LCBtX2ZyYW1lLCB3b3JsZCk7CisgICAgCit9CisKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25G
cm9tR2xvYmFsT2JqZWN0KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiogZXh0ZW5zaW9uKQor
eworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQ
YWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgV2ViUGFnZUdyb3VwUHJveHkqIGdyb3Vw
ID0gd2ViUGFnZS0+cGFnZUdyb3VwKCk7CisgICAgaWYgKCFncm91cCkKKyAgICAgICAgcmV0dXJu
OworICAgICAgICAKKyAgICBncm91cC0+Y2xpZW50KCkud2lsbERpc2Nvbm5lY3RET01XaW5kb3dF
eHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KGdyb3VwLCBleHRlbnNpb24pOworfQorCit2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lv
blRvR2xvYmFsT2JqZWN0KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiogZXh0ZW5zaW9uKQor
eworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQ
YWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgV2ViUGFnZUdyb3VwUHJveHkqIGdyb3Vw
ID0gd2ViUGFnZS0+cGFnZUdyb3VwKCk7CisgICAgaWYgKCFncm91cCkKKyAgICAgICAgcmV0dXJu
OworICAgICAgICAKKyAgICBncm91cC0+Y2xpZW50KCkuZGlkUmVjb25uZWN0RE9NV2luZG93RXh0
ZW5zaW9uVG9HbG9iYWxPYmplY3QoZ3JvdXAsIGV4dGVuc2lvbik7Cit9CisKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5k
b3dFeHRlbnNpb24oV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKiBleHRlbnNpb24pCit7Cisg
ICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXdlYlBhZ2Up
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBXZWJQYWdlR3JvdXBQcm94eSogZ3JvdXAgPSB3
ZWJQYWdlLT5wYWdlR3JvdXAoKTsKKyAgICBpZiAoIWdyb3VwKQorICAgICAgICByZXR1cm47Cisg
ICAgICAgIAorICAgIGdyb3VwLT5jbGllbnQoKS53aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRP
TVdpbmRvd0V4dGVuc2lvbihncm91cCwgZXh0ZW5zaW9uKTsKK30KKwogdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDNjN2Q1YmYuLjgwMjRl
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE5Miw2ICsxOTIsMTEgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopIE9WRVJSSURFOworICAgIAorICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaENhbkNyZWF0ZUdsb2JhbE9iamVjdChXZWJDb3JlOjpET01XcmFw
cGVyV29ybGQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsRGlzY29u
bmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoV2ViQ29yZTo6RE9NV2luZG93
RXh0ZW5zaW9uKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjb25u
ZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QoV2ViQ29yZTo6RE9NV2luZG93RXh0
ZW5zaW9uKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbERlc3Ryb3lH
bG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5z
aW9uKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRFbGVtZW50QXZhaWxh
YmxlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1GaXJzdE5hdmlnYXRp
b24oKSBjb25zdCBPVkVSUklERTsgLy8gIk5hdmlnYXRpb24iIGhlcmUgbWVhbnMgYSB0cmFuc2l0
aW9uIGZyb20gb25lIHBhZ2UgdG8gYW5vdGhlciB0aGF0IGVuZHMgdXAgaW4gdGhlIGJhY2svZm9y
d2FyZCBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2VHcm91cFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAKaW5kZXggM2JkMjBjOC4uOWM2MGY3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJv
eHkuY3BwCkBAIC00NSw0ICs0NSw5IEBAIFdlYlBhZ2VHcm91cFByb3h5Ojp+V2ViUGFnZUdyb3Vw
UHJveHkoKQogewogfQogCit2b2lkIFdlYlBhZ2VHcm91cFByb3h5Ojppbml0aWFsaXplQ2xpZW50
KFdLQnVuZGxlUGFnZUdyb3VwQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9wYWdlR3JvdXBDbGll
bnQuaW5pdGlhbGl6ZShjbGllbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5
LmgKaW5kZXggOTFlNmM1Yy4uZWZhNjhhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIFdlYlBhZ2VHcm91cFByb3h5X2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgor
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZUdyb3VwRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTQ0LDYg
KzQ1LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS52aXNpYmxlVG9JbmplY3RlZEJ1bmRsZTsgfQogICAgIGJvb2wg
aXNWaXNpYmxlVG9IaXN0b3J5Q2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnZpc2libGVU
b0hpc3RvcnlDbGllbnQ7IH0KIAorICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChXS0J1bmRsZVBh
Z2VHcm91cENsaWVudCopOworICAgIEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50JiBjbGll
bnQoKSB7IHJldHVybiBtX3BhZ2VHcm91cENsaWVudDsgfQorICAgIAogcHJpdmF0ZToKICAgICBX
ZWJQYWdlR3JvdXBQcm94eShjb25zdCBXZWJQYWdlR3JvdXBEYXRhJiBkYXRhKQogICAgICAgICA6
IG1fZGF0YShkYXRhKQpAQCAtNTMsNiArNTcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQogCiAgICAgV2ViUGFnZUdyb3VwRGF0
YSBtX2RhdGE7CisgICAgSW5qZWN0ZWRCdW5kbGVQYWdlR3JvdXBDbGllbnQgbV9wYWdlR3JvdXBD
bGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvaiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZj
cHJvagppbmRleCBmYjk1YTlkLi5jMmZlZjA5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi52Y3Byb2oKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9q
CkBAIC0yMzU0LDYgKzIzNTQsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcSW5qZWN0ZWRC
dW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxJbmpl
Y3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxJ
bmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAt
MjQ4MCw2ICsyNDg4LDE0IEBACiAJCQkJCQkJPgogCQkJCQkJPC9GaWxlPgogCQkJCQkJPEZpbGUK
KwkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNc
V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIgorCQkJCQkJCT4KKwkJCQkJCTwvRmlsZT4K
KwkJCQkJCTxGaWxlCisJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVk
QnVuZGxlXEFQSVxjXFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgiCisJCQkJCQkJPgorCQkJ
CQkJPC9GaWxlPgorCQkJCQkJPEZpbGUKIAkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nl
c3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVGcmFtZS5jcHAiCiAJCQkJCQkJPgogCQkJ
CQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDI5M2ZmOTIuLmMyMTk5NTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMi0wNC0wOSAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMTIw
MTU1PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNjY0Cisg
ICAgICAgICBOZWVkIERPTVdpbmRvdyBtZWNoYW5pc20gdG8gc3VwcGxlbWVudCBVc2VyU2NyaXB0
cyBmb3IgcGFnZSBjYWNoZSBub3RpZmljYXRpb25zCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgIEFkZCBhIG5ldyBidW5kbGUgdGVzdCB0aGF0IHN0cmVz
c2VzIHRoZSBiYXNpY3Mgb2YgdGhlIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uIEFQSS4KKwor
ICAgICAgICAgSXQgbWFrZXMgc3VyZSBuZXcgZXh0ZW5zaW9ucyBjYW4gYmUgYWRkZWQgYXQgdGhl
IHJpZ2h0IHRpbWVzLCBhbmQgdGhhdCBhbGwgb2YgdGhlIGV4cGVjdGVkCisgICAgICAgICBjYWxs
YmFja3MgYXJlIG1hZGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
RE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKTogUmVjb3JkIGFsbCBtZXNz
YWdlcyBzZW50IGZyb20gdGhlIGJ1bmRsZS4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OiBSdW4gYSBwYWdlIHRocm91Z2ggc29tZSBiYXNpYyBleGVyY2lzZXMsIHRoZW4gY29tcGFyZWQg
bWVzc2FnZXMgc2VudCBmcm9tIHRoZQorICAgICAgICAgICBidW5kbGUgdG8gYSBzZXQgb2Yga25v
d24gZXhwZWN0ZWQgbWVzc2FnZXMuCisKKyAgICAgICAgIExpc3RlbiB0byBhbGwgdGhlIEJ1bmRs
ZVBhZ2VHcm91cCBjbGllbnQgY2FsbGJhY2tzLCBjcmVhdGUgc29tZSBleHRlbnNpb25zLCBhbmQg
bW9uaXRvciB0aGVpciBsaWZldGltZXM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OkRPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRPTVdpbmRvd0V4dGVuc2lvbkJh
c2ljOjpmcmFtZUxvYWRGaW5pc2hlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5k
b3dFeHRlbnNpb25CYXNpYzo6c2VuZEV4dGVuc2lvblN0YXRlTWVzc2FnZSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6ZGlkQ3JlYXRlUGFn
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6dXBk
YXRlRXh0ZW5zaW9uU3RhdGVSZWNvcmQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2lu
ZG93RXh0ZW5zaW9uQmFzaWM6OnNlbmRCdW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpkaWRDcmVhdGVHbG9iYWxPYmplY3RGb3JG
cmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6
d2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpkaWRSZWNvbm5lY3RE
T01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01X
aW5kb3dFeHRlbnNpb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lQ2FsbGJhY2spOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkQ3JlYXRlR2xvYmFs
T2JqZWN0Rm9yRnJhbWVDYWxsYmFjayk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3aWxsRGlz
Y29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3RDYWxsYmFjayk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2Jh
bE9iamVjdENhbGxiYWNrKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndpbGxEZXN0cm95R2xv
YmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uQ2FsbGJhY2spOgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlQmFzaWMuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOiBN
YWtlIHRoaXMgbWV0aG9kIHN0YXRpYywgYXMgaXQgYWx3YXlzIHNob3VsZCBoYXZlIGJlZW4uCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAxMi0wNC0wOSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBCdWlsZCBmaXggZm9yIFdpbkNFIGFmdGVyIHIxMTM1NzAuCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGQxMTZjNzUuLjNhMTg3MjMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0zOCw2ICszOCw4IEBACiAJCTQ0MEExRDM5MTRBMDEwM0EwMDhBNjZGMiAvKiBL
VVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
MEExRDM4MTRBMDEwM0EwMDhBNjZGMiAvKiBLVVJMLmNwcCAqLzsgfTsKIAkJNEJGREZGQTcxMzE0
Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkZERkZBNjEzMTQ3NzZD
MDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJ
NEJGREZGQTkxMzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRkRGRkE4MTMx
NDc3NzcwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAgKi87IH07CisJCTUx
MzkzRTIwMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTM5M0UxRTE1MjM5
NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwICovOyB9OworCQk1MTM5
M0UyMjE1MjM5NTJEMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMzkzRTFE
MTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwICov
OyB9OwogCQk1MTQyQjI3MTE1MTdDODhCMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJM
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0MkIy
NzAxNTE3Qzg4QjAwQzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVSTC5tbSAqLzsgfTsKIAkJ
NTE0MkIyNzMxNTE3QzhDODAwQzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVSTC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDJC
MjcyMTUxN0M4OTEwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwuaHRtbCAqLzsgfTsK
IAkJNTE3RTdERkMxNTExMEVBNjAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxN0U3REZCMTUxMTBFQTYwMEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0
aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi87IH07CkBAIC0yMjgsNiArMjMwLDggQEAKIAkJ
NDRBNjIyQzExNEEwRTJCNjAwNDg1MTVCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXVEZTdHJpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJGREZGQTYxMzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RS
ZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QkZERkZBODEzMTQ3Nzc3MDA2MUYyNEIgLyogSGl0VGVzdFJlc3Vs
dE5vZGVIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGl0
VGVzdFJlc3VsdE5vZGVIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MTM5M0UxRDE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMzkz
RTFFMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDJCMjcwMTUxN0M4OEIwMEMzMkIx
OSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBDb250ZXh0TWVudUNhbkNvcHlVUkwubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNDJCMjcyMTUxN0M4OTEwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNv
cHlVUkwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IENvbnRleHRNZW51Q2FuQ29w
eVVSTC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdFN0RGQjE1MTEwRUE2
MDBEMEIwMDggLyogTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVQcnVu
ZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDg0LDYgKzQ4OCw4IEBACiAJCQkJQkMyNDZEOTgxMzJGMUZFMTAwQjU2RDdDIC8qIENh
bkhhbmRsZVJlcXVlc3QuY3BwICovLAogCQkJCUJDMjQ2RDk3MTMyRjFGRTEwMEI1NkQ3QyAvKiBD
YW5IYW5kbGVSZXF1ZXN0X0J1bmRsZS5jcHAgKi8sCiAJCQkJRjZGM0YyOTAxMzM0MkZFQjAwQTZC
RjE5IC8qIENvb2tpZU1hbmFnZXIuY3BwICovLAorCQkJCTUxMzkzRTFFMTUyMzk0NEEwMDVGMzlD
NSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgKi8sCisJCQkJNTEzOTNFMUQxNTIzOTQ0
QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgKi8sCiAJCQkJ
QkNCNjgwM0YxMjZGQkZFMTAwNjQyQTYxIC8qIERvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRD
cmFzaC5jcHAgKi8sCiAJCQkJQkNCNjgwNDExMjZGQkZGMTAwNjQyQTYxIC8qIERvY3VtZW50U3Rh
cnRVc2VyU2NyaXB0QWxlcnRDcmFzaF9CdW5kbGUuY3BwICovLAogCQkJCUMwNDVGOTQ0MTM4NUMy
RTkwMEMwRjNDRCAvKiBEb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwICovLApAQCAt
ODM5LDYgKzg0NSw3IEBACiAJCQkJNTFGQkJCNEQxNTEzRDRFOTAwODIyNzM4IC8qIFdlYlZpZXdD
YW5QYXN0ZVVSTC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNDJCMjcxMTUxN0M4OEIwMEMzMkIx
OSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNTQwRjc3
NjE1MkU0REEwMDBBNDBDOEMgLyogU2ltcGxpZnlNYXJrdXAubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk1MTM5M0UyMDE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC04NjcsNiArODc0LDcgQEAKIAkJCQk5M0Y3RTg2RjE0REM4RTVD
MDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzIyRDMxOTE0REM2OEI5MDBGRkIxREQgLyogVXNlck1l
c3NhZ2VfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQUY0RUNFMTUwNkYwNjQwMDdG
RDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNfQnVuZGxlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUxMzkzRTIyMTUyMzk1MkQwMDVGMzlDNSAvKiBET01XaW5k
b3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lv
bkJhc2ljLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGI2MmI4Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdp
bmRvd0V4dGVuc2lvbkJhc2ljLmNwcApAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJL
aXQyL1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIGZpbmlzaGVkOworc3RhdGljIGludCBsaXZl
RE9NRXh0ZW5zaW9uQ291bnQ7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBleHBlY3RlZE1lc3NhZ2Vz
W10gPSB7CisiRGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUgY2FsbGVkIiwKKyJEaWRDcmVh
dGVHbG9iYWxPYmplY3RGb3JGcmFtZSBjYWxsZWQiLAorIkRpZENyZWF0ZUdsb2JhbE9iamVjdEZv
ckZyYW1lIGNhbGxlZCIsCisiRGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUgY2FsbGVkIiwK
KyJTdWJmcmFtZSBmaW5pc2hlZCBsb2FkaW5nIiwKKyJFeHRlbnNpb24gc3RhdGVzOlxuRmlyc3Qg
cGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0IHBhZ2Us
IG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuRmlyc3QgcGFnZSwg
c3ViZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5GaXJzdCBwYWdlLCBzdWJmcmFt
ZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5TZWNvbmQgcGFnZSwgbWFpbiBmcmFt
ZSwgc3RhbmRhcmQgd29ybGQgLSBVbmNyZWF0ZWRcblNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBu
b24tc3RhbmRhcmQgd29ybGQgLSBVbmNyZWF0ZWQiLAorIk1haW4gZnJhbWUgZmluaXNoZWQgbG9h
ZGluZyIsCisiRXh0ZW5zaW9uIHN0YXRlczpcbkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5k
YXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5GaXJzdCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRh
cmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBzdGFuZGFyZCB3b3Js
ZCAtIENvbm5lY3RlZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAt
IENvbm5lY3RlZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gVW5j
cmVhdGVkXG5TZWNvbmQgcGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gVW5j
cmVhdGVkIiwKKyJXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmpl
Y3QgY2FsbGVkIiwKKyJXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxP
YmplY3QgY2FsbGVkIiwKKyJXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9i
YWxPYmplY3QgY2FsbGVkIiwKKyJXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21H
bG9iYWxPYmplY3QgY2FsbGVkIiwKKyJEaWRDcmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZSBjYWxs
ZWQiLAorIkRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lIGNhbGxlZCIsCisiTWFpbiBmcmFt
ZSBmaW5pc2hlZCBsb2FkaW5nIiwKKyJFeHRlbnNpb24gc3RhdGVzOlxuRmlyc3QgcGFnZSwgbWFp
biBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBEaXNjb25uZWN0ZWRcbkZpcnN0IHBhZ2UsIG1haW4g
ZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIERpc2Nvbm5lY3RlZFxuRmlyc3QgcGFnZSwgc3Vi
ZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gRGlzY29ubmVjdGVkXG5GaXJzdCBwYWdlLCBzdWJmcmFt
ZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gRGlzY29ubmVjdGVkXG5TZWNvbmQgcGFnZSwgbWFpbiBm
cmFtZSwgc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcblNlY29uZCBwYWdlLCBtYWluIGZyYW1l
LCBub24tc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWQiLAorIldpbGxEaXNjb25uZWN0RE9NV2lu
ZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCBjYWxsZWQiLAorIldpbGxEaXNjb25uZWN0RE9N
V2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCBjYWxsZWQiLAorIkRpZFJlY29ubmVjdERP
TVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0IGNhbGxlZCIsCisiRGlkUmVjb25uZWN0RE9N
V2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QgY2FsbGVkIiwKKyJEaWRSZWNvbm5lY3RET01X
aW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCBjYWxsZWQiLAorIkRpZFJlY29ubmVjdERPTVdp
bmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0IGNhbGxlZCIsCisiTWFpbiBmcmFtZSBmaW5pc2hl
ZCBsb2FkaW5nIiwKKyJFeHRlbnNpb24gc3RhdGVzOlxuRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwg
c3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIG5vbi1z
dGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIHN0YW5kYXJk
IHdvcmxkIC0gQ29ubmVjdGVkXG5GaXJzdCBwYWdlLCBzdWJmcmFtZSwgbm9uLXN0YW5kYXJkIHdv
cmxkIC0gQ29ubmVjdGVkXG5TZWNvbmQgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQg
LSBEaXNjb25uZWN0ZWRcblNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29y
bGQgLSBEaXNjb25uZWN0ZWQiLAorIldpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93
RXh0ZW5zaW9uIGNhbGxlZCIsCisiV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dF
eHRlbnNpb24gY2FsbGVkIiwKKyJXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4
dGVuc2lvbiBjYWxsZWQiLAorIldpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0
ZW5zaW9uIGNhbGxlZCIsCisiV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRl
bnNpb24gY2FsbGVkIiwKKyJXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVu
c2lvbiBjYWxsZWQiLAorIkV4dGVuc2lvbiBzdGF0ZXM6XG5GaXJzdCBwYWdlLCBtYWluIGZyYW1l
LCBzdGFuZGFyZCB3b3JsZCAtIERlc3Ryb3llZFxuRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgbm9u
LXN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5GaXJzdCBwYWdlLCBzdWJmcmFtZSwgc3RhbmRh
cmQgd29ybGQgLSBEZXN0cm95ZWRcbkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBub24tc3RhbmRhcmQg
d29ybGQgLSBEZXN0cm95ZWRcblNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3Js
ZCAtIERlc3Ryb3llZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3Js
ZCAtIERlc3Ryb3llZCIsCisiVGVzdENvbXBsZXRlIgorfTsKKworc3RhdGljIFZlY3RvcjxXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gPiBtZXNzYWdlczsKKworc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNz
YWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKikKK3sKKyAgICBBU1NF
UlRfTk9UX05VTEwobWVzc2FnZUJvZHkpOworICAgIEVYUEVDVF9FUShXS1N0cmluZ0dldFR5cGVJ
RCgpLCBXS0dldFR5cGVJRChtZXNzYWdlQm9keSkpOworCisgICAgV0tTdHJpbmdSZWYgYm9keVN0
cmluZyA9IChXS1N0cmluZ1JlZiltZXNzYWdlQm9keTsKKyAgICBtZXNzYWdlcy5hcHBlbmQoYm9k
eVN0cmluZyk7CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVz
c2FnZU5hbWUsICJEaWRDcmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZSIpKQorICAgICAgICBsaXZl
RE9NRXh0ZW5zaW9uQ291bnQrKzsKKyAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dF
eHRlbnNpb24iKSkgeworICAgICAgICBsaXZlRE9NRXh0ZW5zaW9uQ291bnQtLTsKKyAgICAgICAg
aWYgKCFsaXZlRE9NRXh0ZW5zaW9uQ291bnQpCisgICAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7
CisgICAgfSBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiRGlkRmluaXNoTG9hZEZvck1haW5GcmFtZSIpIHx8IFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobWVzc2FnZU5hbWUsICJUZXN0Q29tcGxldGUiKSkKKyAgICAgICAgZmluaXNoZWQgPSB0
cnVlOworICAgIAorfQorCitURVNUKFdlYktpdDIsIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljKQor
eworICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAoQWRvcHRXSywgV0tQ
YWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNQYWdlR3JvdXAiKSkpOyAKKworICAgIFdLUmV0YWlu
UHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0Rm9y
SW5qZWN0ZWRCdW5kbGVUZXN0KCJET01XaW5kb3dFeHRlbnNpb25CYXNpYyIsIHBhZ2VHcm91cC5n
ZXQoKSkpOworCisgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQgaW5qZWN0ZWRCdW5k
bGVDbGllbnQ7CisgICAgbWVtc2V0KCZpbmplY3RlZEJ1bmRsZUNsaWVudCwgMCwgc2l6ZW9mKGlu
amVjdGVkQnVuZGxlQ2xpZW50KSk7CisgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQudmVyc2lvbiA9
IDA7CisgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuY2xpZW50SW5mbyA9IDA7CisgICAgaW5qZWN0
ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRS
ZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAgICBXS0NvbnRleHRTZXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQpOworICAg
IAorICAgIC8vIFRoZSBkZWZhdWx0IGNhY2hlIG1vZGVsIGhhcyBhIGNhcGFjaXR5IG9mIDAsIHNv
IGl0IGlzIG5lY2Vzc2FyeSB0byBzd2l0Y2ggdG8gYSBjYWNoZQorICAgIC8vIG1vZGVsIHRoYXQg
YWN0dWFsbHkgYWxsb3dzIGZvciBhIHBhZ2UgY2FjaGUuCisgICAgV0tDb250ZXh0U2V0Q2FjaGVN
b2RlbChjb250ZXh0LmdldCgpLCBrV0tDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyKTsKKworICAg
IFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cC5nZXQoKSk7
CisgICAgCisgICAgLy8gTWFrZSBzdXJlIHRoZSBleHRlbnNpb25zIGZvciBlYWNoIGZyYW1lIGFy
ZSBpbnN0YWxsZWQgaW4gZWFjaCB3b3JsZC4KKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJs
MShBZG9wdFdLLCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlLWlmcmFtZSIsICJo
dG1sIikpOworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIHVybDEuZ2V0KCkpOwor
CisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7CisgICAgZmluaXNoZWQgPSBmYWxzZTsKKyAgICAK
KyAgICAvLyBNYWtlIHN1cmUgdGhvc2UgZmlyc3QgNCBleHRlbnNpb25zIGFyZSBkaXNjb25uZWN0
ZWQsIGFuZCAyIG5ldyBvbmVzIGFyZSBpbnN0YWxsZWQuCisgICAgV0tSZXRhaW5QdHI8V0tVUkxS
ZWY+IHVybDIoQWRvcHRXSywgVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJo
dG1sIikpOworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIHVybDIuZ2V0KCkpOwor
CisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7CisgICAgZmluaXNoZWQgPSBmYWxzZTsKKworICAg
IC8vIE1ha2Ugc3VyZSB0aG9zZSB0d28gYXJlIGRpc2Nvbm5lY3RlZCwgYW5kIHRoZSBmaXJzdCBm
b3VyIGFyZSByZWNvbm5lY3RlZC4KKyAgICBXS1BhZ2VHb0JhY2sod2ViVmlldy5wYWdlKCkpOwor
CisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7CisgICAgZmluaXNoZWQgPSBmYWxzZTsKKyAgICAK
KyAgICAvLyBNYWtlIHN1cmUgdGhlIDIgZGlzY29ubmVjdGVkIGV4dGVuc2lvbnMgaW4gdGhlIHBh
Z2UgY2FjaGUgYW5kIHRoZSA0IGFjdGl2ZSBleHRlbnNpb25zIGFyZSBhbGwgZGVzdHJveWVkLgor
ICAgIFdLUGFnZUNsb3NlKHdlYlZpZXcucGFnZSgpKTsKKworICAgIFV0aWw6OnJ1bigmZmluaXNo
ZWQpOworICAgICAgICAKKyAgICBjb25zdCBzaXplX3QgZXhwZWN0ZWRTaXplID0gc2l6ZW9mKGV4
cGVjdGVkTWVzc2FnZXMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsKKyAgICBFWFBFQ1RfRVEobWVz
c2FnZXMuc2l6ZSgpLCBleHBlY3RlZFNpemUpOworICAgIAorICAgIGlmIChtZXNzYWdlcy5zaXpl
KCkgIT0gZXhwZWN0ZWRTaXplKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtZXNzYWdlcy5zaXplKCk7ICsraSkKKyAgICAgICAgRVhQRUNUX0VRKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZXNbaV0uZ2V0KCksIGV4cGVjdGVkTWVz
c2FnZXNbaV0pLCB0cnVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljX0J1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
RE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4yOWZkZDZlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAKQEAg
LTAsMCArMSwyNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbi5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVGcmFtZS5oPgorI2lu
Y2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRs
ZVBhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQcml2YXRlLmg+CisjaW5j
bHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVNjcmlwdFdvcmxkLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK3N0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZUNhbGxiYWNrKFdLQnVuZGxlUGFn
ZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7CitzdGF0aWMgdm9pZCBkaWRDcmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZUNhbGxi
YWNrKFdLQnVuZGxlUGFnZUdyb3VwUmVmLCBKU09iamVjdFJlZiwgV0tCdW5kbGVGcmFtZVJlZiwg
V0tCdW5kbGVTY3JpcHRXb3JsZFJlZiwgY29uc3Qgdm9pZCopOworc3RhdGljIHZvaWQgd2lsbERp
c2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0Q2FsbGJhY2soV0tCdW5k
bGVQYWdlR3JvdXBSZWYsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBjb25zdCB2b2lk
Kik7CitzdGF0aWMgdm9pZCBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9i
amVjdENhbGxiYWNrKFdLQnVuZGxlUGFnZUdyb3VwUmVmLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVu
c2lvblJlZiwgY29uc3Qgdm9pZCopOworc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RGb3JET01XaW5kb3dFeHRlbnNpb25DYWxsYmFjayhXS0J1bmRsZVBhZ2VHcm91cFJlZiwgV0tC
dW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGNvbnN0IHZvaWQqKTsKKworCitlbnVtIEV4dGVu
c2lvblN0YXRlIHsKKyAgICBVbmNyZWF0ZWQgPSAwLCBDb25uZWN0ZWQsIERpc2Nvbm5lY3RlZCwg
RGVzdHJveWVkCit9OworCitjb25zdCBjaGFyKiBzdGF0ZU5hbWVzWzRdID0geworICAgICJVbmNy
ZWF0ZWQiLAorICAgICJDb25uZWN0ZWQiLAorICAgICJEaXNjb25uZWN0ZWQiLAorICAgICJEZXN0
cm95ZWQiCit9OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciogbmFtZTsKKyAg
ICBFeHRlbnNpb25TdGF0ZSBzdGF0ZTsKK30gRXh0ZW5zaW9uUmVjb3JkOworICAgIAorY2xhc3Mg
RE9NV2luZG93RXh0ZW5zaW9uQmFzaWMgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1
YmxpYzoKKyAgICBET01XaW5kb3dFeHRlbnNpb25CYXNpYyhjb25zdCBzdGQ6OnN0cmluZyYgaWRl
bnRpZmllcik7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoV0tCdW5kbGVSZWYs
IFdLVHlwZVJlZiB1c2VyRGF0YSk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tC
dW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZik7CisgICAgCisgICAgdm9pZCBkaWRDcmVhdGVHbG9i
YWxPYmplY3RGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVm
KTsKKyAgICB2b2lkIHdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9i
amVjdChXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZik7CisgICAgdm9pZCBkaWRSZWNvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChXS0J1bmRsZURPTVdpbmRvd0V4dGVu
c2lvblJlZik7CisgICAgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4
dGVuc2lvbihXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZik7CisKKyAgICB2b2lkIGZyYW1l
TG9hZEZpbmlzaGVkKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOworCitwcml2YXRlOgorICAgIHZv
aWQgdXBkYXRlRXh0ZW5zaW9uU3RhdGVSZWNvcmQoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25S
ZWYsIEV4dGVuc2lvblN0YXRlKTsKKyAgICB2b2lkIHNlbmRFeHRlbnNpb25TdGF0ZU1lc3NhZ2Uo
KTsKKyAgICB2b2lkIHNlbmRCdW5kbGVNZXNzYWdlKGNvbnN0IGNoYXIqKTsKKworICAgIFdLQnVu
ZGxlUGFnZUdyb3VwUmVmIG1fcGFnZUdyb3VwOworICAgIFdLQnVuZGxlUmVmIG1fYnVuZGxlOwor
ICAgIEV4dGVuc2lvblJlY29yZCBtX2V4dGVuc2lvblJlY29yZHNbNl07CisgICAgSGFzaE1hcDxX
S0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgaW50PiBtX2V4dGVuc2lvblRvUmVjb3JkTWFw
OworICAgIGJvb2wgbV9maW5pc2hlZE9uZU1haW5GcmFtZUxvYWQ7CisgICAgaW50IG1fbnVtYmVy
T2ZEZXN0cm95ZWRFeHRlbnNpb25zOworfTsKKworc3RhdGljIEluamVjdGVkQnVuZGxlVGVzdDo6
UmVnaXN0ZXI8RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM+IHJlZ2lzdHJhcigiRE9NV2luZG93RXh0
ZW5zaW9uQmFzaWMiKTsKKworRE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OkRPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQorICAgIDogSW5qZWN0ZWRC
dW5kbGVUZXN0KGlkZW50aWZpZXIpCisgICAgLCBtX2ZpbmlzaGVkT25lTWFpbkZyYW1lTG9hZChm
YWxzZSkKKyAgICAsIG1fbnVtYmVyT2ZEZXN0cm95ZWRFeHRlbnNpb25zKDApCit7CisgICAgbV9l
eHRlbnNpb25SZWNvcmRzWzBdLm5hbWUgPSAiRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRh
cmQgd29ybGQiOworICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1sxXS5uYW1lID0gIkZpcnN0IHBhZ2Us
IG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCI7CisgICAgbV9leHRlbnNpb25SZWNvcmRz
WzJdLm5hbWUgPSAiRmlyc3QgcGFnZSwgc3ViZnJhbWUsIHN0YW5kYXJkIHdvcmxkIjsKKyAgICBt
X2V4dGVuc2lvblJlY29yZHNbM10ubmFtZSA9ICJGaXJzdCBwYWdlLCBzdWJmcmFtZSwgbm9uLXN0
YW5kYXJkIHdvcmxkIjsKKyAgICBtX2V4dGVuc2lvblJlY29yZHNbNF0ubmFtZSA9ICJTZWNvbmQg
cGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQiOworICAgIG1fZXh0ZW5zaW9uUmVjb3Jk
c1s1XS5uYW1lID0gIlNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQi
OworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNjsgKytpKQorICAgICAgICBtX2V4
dGVuc2lvblJlY29yZHNbaV0uc3RhdGUgPSBVbmNyZWF0ZWQ7Cit9CisKK3ZvaWQgRE9NV2luZG93
RXh0ZW5zaW9uQmFzaWM6OmZyYW1lTG9hZEZpbmlzaGVkKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUp
Cit7CisgICAgYm9vbCBtYWluRnJhbWUgPSAhV0tCdW5kbGVGcmFtZUdldFBhcmVudEZyYW1lKGZy
YW1lKTsKKyAgICBpZiAobWFpbkZyYW1lKQorICAgICAgICBtX2ZpbmlzaGVkT25lTWFpbkZyYW1l
TG9hZCA9IHRydWU7CisKKyAgICBjaGFyIGJvZHlbMTYzODRdOworICAgIHNwcmludGYoYm9keSwg
IiVzIGZpbmlzaGVkIGxvYWRpbmciLCBtYWluRnJhbWUgPyAiTWFpbiBmcmFtZSIgOiAiU3ViZnJh
bWUiKTsKKyAgICAKKyAgICAvLyBPbmx5IGNvbnNpZGVyIGxvYWQgZmluaXNoZWQgZm9yIHRoZSBt
YWluIGZyYW1lCisgICAgY29uc3QgY2hhciogbmFtZSA9IG1haW5GcmFtZSA/ICJEaWRGaW5pc2hM
b2FkRm9yTWFpbkZyYW1lIiA6ICJEaWRGaW5pc2hMb2FkRm9yRnJhbWUiOworCisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhuYW1lKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3Nh
Z2VCb2R5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhib2R5KSk7Cisg
ICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3Nh
Z2VCb2R5LmdldCgpKTsKKyAgICAKKyAgICBzZW5kRXh0ZW5zaW9uU3RhdGVNZXNzYWdlKCk7Cit9
CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OnNlbmRFeHRlbnNpb25TdGF0ZU1lc3Nh
Z2UoKQoreworICAgIGNoYXIgYm9keVsxNjM4NF07CisgICAgc3ByaW50Zihib2R5LCAiRXh0ZW5z
aW9uIHN0YXRlczpcbiVzIC0gJXNcbiVzIC0gJXNcbiVzIC0gJXNcbiVzIC0gJXNcbiVzIC0gJXNc
biVzIC0gJXMiLAorICAgICAgICBtX2V4dGVuc2lvblJlY29yZHNbMF0ubmFtZSwgc3RhdGVOYW1l
c1ttX2V4dGVuc2lvblJlY29yZHNbMF0uc3RhdGVdLAorICAgICAgICBtX2V4dGVuc2lvblJlY29y
ZHNbMV0ubmFtZSwgc3RhdGVOYW1lc1ttX2V4dGVuc2lvblJlY29yZHNbMV0uc3RhdGVdLAorICAg
ICAgICBtX2V4dGVuc2lvblJlY29yZHNbMl0ubmFtZSwgc3RhdGVOYW1lc1ttX2V4dGVuc2lvblJl
Y29yZHNbMl0uc3RhdGVdLAorICAgICAgICBtX2V4dGVuc2lvblJlY29yZHNbM10ubmFtZSwgc3Rh
dGVOYW1lc1ttX2V4dGVuc2lvblJlY29yZHNbM10uc3RhdGVdLAorICAgICAgICBtX2V4dGVuc2lv
blJlY29yZHNbNF0ubmFtZSwgc3RhdGVOYW1lc1ttX2V4dGVuc2lvblJlY29yZHNbNF0uc3RhdGVd
LAorICAgICAgICBtX2V4dGVuc2lvblJlY29yZHNbNV0ubmFtZSwgc3RhdGVOYW1lc1ttX2V4dGVu
c2lvblJlY29yZHNbNV0uc3RhdGVdKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV4dGVu
c2lvblN0YXRlcyIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZUJvZHkg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJvZHkpKTsKKyAgICBXS0J1
bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHku
Z2V0KCkpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjppbml0aWFsaXplKFdL
QnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIHVzZXJEYXRhKQoreworICAgIC8vc2xlZXAoMTAp
OworICAgIGFzc2VydChXS0dldFR5cGVJRCh1c2VyRGF0YSkgPT0gV0tCdW5kbGVQYWdlR3JvdXBH
ZXRUeXBlSUQoKSk7CisgICAgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwID0gc3RhdGlj
X2Nhc3Q8V0tCdW5kbGVQYWdlR3JvdXBSZWY+KHVzZXJEYXRhKTsKKworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBzb3VyY2UoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoImFsZXJ0KCdVbmltcG9ydGFudCBhbGVydCcpOyIpKTsKKyAgICBXS0J1bmRsZUFkZFVzZXJT
Y3JpcHQoYnVuZGxlLCBwYWdlR3JvdXAsIFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCgp
LCBzb3VyY2UuZ2V0KCksIDAsIDAsIDAsIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydCwga1dLSW5q
ZWN0SW5BbGxGcmFtZXMpOworICAgIAorICAgIFdLQnVuZGxlUGFnZUdyb3VwQ2xpZW50IGNsaWVu
dDsKKyAgICBjbGllbnQudmVyc2lvbiA9IGtXS0J1bmRsZVBhZ2VHcm91cENsaWVudEN1cnJlbnRW
ZXJzaW9uOworICAgIGNsaWVudC5jbGllbnRJbmZvID0gdGhpczsKKyAgICBjbGllbnQuZGlkQ3Jl
YXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUgPSBkaWRDcmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZUNh
bGxiYWNrOworICAgIGNsaWVudC53aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21H
bG9iYWxPYmplY3QgPSB3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxP
YmplY3RDYWxsYmFjazsKKyAgICBjbGllbnQuZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
VG9HbG9iYWxPYmplY3QgPSBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9i
amVjdENhbGxiYWNrOworICAgIGNsaWVudC53aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdp
bmRvd0V4dGVuc2lvbiA9IHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5z
aW9uQ2FsbGJhY2s7CisgICAgCisgICAgV0tCdW5kbGVQYWdlR3JvdXBTZXRDbGllbnQocGFnZUdy
b3VwLCAmY2xpZW50KTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6ZGlkQ3Jl
YXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlKQoreyAgICAK
KyAgICBtX2J1bmRsZSA9IGJ1bmRsZTsKKworICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBw
YWdlTG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmcGFnZUxvYWRlckNsaWVudCwgMCwgc2l6ZW9m
KHBhZ2VMb2FkZXJDbGllbnQpKTsKKyAgICAKKyAgICBwYWdlTG9hZGVyQ2xpZW50LnZlcnNpb24g
PSAxOworICAgIHBhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgcGFnZUxv
YWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWVD
YWxsYmFjazsKKyAgICAKKyAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2Us
ICZwYWdlTG9hZGVyQ2xpZW50KTsKK30KKyAgICAKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uQmFz
aWM6OnVwZGF0ZUV4dGVuc2lvblN0YXRlUmVjb3JkKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
UmVmIGV4dGVuc2lvbiwgRXh0ZW5zaW9uU3RhdGUgc3RhdGUpCit7CisgICAgaW50IGluZGV4ID0g
bV9leHRlbnNpb25Ub1JlY29yZE1hcC5nZXQoZXh0ZW5zaW9uKTsKKyAgICBtX2V4dGVuc2lvblJl
Y29yZHNbaW5kZXhdLnN0YXRlID0gc3RhdGU7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9u
QmFzaWM6OnNlbmRCdW5kbGVNZXNzYWdlKGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTWVzc2FnZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcobWVzc2FnZSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5k
bGUsIHdrTWVzc2FnZS5nZXQoKSwgd2tNZXNzYWdlLmdldCgpKTsKK30KKwordm9pZCBET01XaW5k
b3dFeHRlbnNpb25CYXNpYzo6ZGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUoV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZCkKK3sKKyAgICBXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24gPSBXS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbkNyZWF0ZShmcmFtZSwgd29ybGQpOworCisgICAgaW50IGluZGV4OworICAgIGJvb2wg
c3RhbmRhcmQ7CisgICAgc3RhbmRhcmQgPSB3b3JsZCA9PSBXS0J1bmRsZVNjcmlwdFdvcmxkTm9y
bWFsV29ybGQoKTsKKworICAgIGlmIChXS0J1bmRsZUZyYW1lR2V0UGFyZW50RnJhbWUoZnJhbWUp
KQorICAgICAgICBpbmRleCA9IHN0YW5kYXJkID8gMiA6IDM7CisgICAgZWxzZQorICAgICAgICBp
bmRleCA9IG1fZmluaXNoZWRPbmVNYWluRnJhbWVMb2FkID8gKHN0YW5kYXJkID8gNCA6IDUpIDog
KHN0YW5kYXJkID8gMCA6IDEpOworCisgICAgbV9leHRlbnNpb25Ub1JlY29yZE1hcC5zZXQoZXh0
ZW5zaW9uLCBpbmRleCk7CisKKyAgICB1cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29yZChleHRlbnNp
b24sIENvbm5lY3RlZCk7CisgICAgc2VuZEJ1bmRsZU1lc3NhZ2UoIkRpZENyZWF0ZUdsb2JhbE9i
amVjdEZvckZyYW1lIGNhbGxlZCIpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2lj
Ojp3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKQoreworICAgIHVwZGF0ZUV4dGVuc2lv
blN0YXRlUmVjb3JkKGV4dGVuc2lvbiwgRGlzY29ubmVjdGVkKTsKKyAgICBzZW5kQnVuZGxlTWVz
c2FnZSgiV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0IGNh
bGxlZCIpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpkaWRSZWNvbm5lY3RE
T01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lv
blJlZiBleHRlbnNpb24pCit7CisgICAgdXBkYXRlRXh0ZW5zaW9uU3RhdGVSZWNvcmQoZXh0ZW5z
aW9uLCBDb25uZWN0ZWQpOworICAgIHNlbmRCdW5kbGVNZXNzYWdlKCJEaWRSZWNvbm5lY3RET01X
aW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCBjYWxsZWQiKTsKK30KKwordm9pZCBET01XaW5k
b3dFeHRlbnNpb25CYXNpYzo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRl
bnNpb24oV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKQoreworICAgIG1f
bnVtYmVyT2ZEZXN0cm95ZWRFeHRlbnNpb25zKys7CisKKyAgICB1cGRhdGVFeHRlbnNpb25TdGF0
ZVJlY29yZChleHRlbnNpb24sIERlc3Ryb3llZCk7CisgICAgc2VuZEJ1bmRsZU1lc3NhZ2UoIldp
bGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uIGNhbGxlZCIpOworICAg
IAorICAgIGlmIChtX251bWJlck9mRGVzdHJveWVkRXh0ZW5zaW9ucyA9PSA2KSB7CisgICAgICAg
IHNlbmRFeHRlbnNpb25TdGF0ZU1lc3NhZ2UoKTsKKyAgICAgICAgc2VuZEJ1bmRsZU1lc3NhZ2Uo
IlRlc3RDb21wbGV0ZSIpOworICAgIH0KKyAgICAKKyAgICBXS1JlbGVhc2UoZXh0ZW5zaW9uKTsK
K30KKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lQ2FsbGJhY2soV0tCdW5kbGVQ
YWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKQoreworICAgICgoRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMqKWNsaWVudEluZm8p
LT5mcmFtZUxvYWRGaW5pc2hlZChmcmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZENyZWF0ZUds
b2JhbE9iamVjdEZvckZyYW1lQ2FsbGJhY2soV0tCdW5kbGVQYWdlR3JvdXBSZWYsIEpTT2JqZWN0
UmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxk
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgICgoRE9NV2luZG93RXh0ZW5zaW9uQmFz
aWMqKWNsaWVudEluZm8pLT5kaWRDcmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZShmcmFtZSwgd29y
bGQpOworfQorCitzdGF0aWMgdm9pZCB3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZy
b21HbG9iYWxPYmplY3RDYWxsYmFjayhXS0J1bmRsZVBhZ2VHcm91cFJlZiwgV0tCdW5kbGVET01X
aW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorewor
ICAgICgoRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMqKWNsaWVudEluZm8pLT53aWxsRGlzY29ubmVj
dERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoZXh0ZW5zaW9uKTsKK30KKworc3Rh
dGljIHZvaWQgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3RDYWxs
YmFjayhXS0J1bmRsZVBhZ2VHcm91cFJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYg
ZXh0ZW5zaW9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgICgoRE9NV2luZG93RXh0
ZW5zaW9uQmFzaWMqKWNsaWVudEluZm8pLT5kaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25U
b0dsb2JhbE9iamVjdChleHRlbnNpb24pOworfQorCitzdGF0aWMgdm9pZCB3aWxsRGVzdHJveUds
b2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrKFdLQnVuZGxlUGFnZUdyb3Vw
UmVmLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24gLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgICgoRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMqKWNsaWVudElu
Zm8pLT53aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbihleHRlbnNp
b24pOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAK
aW5kZXggNDBjYTI2OS4uMDgzYTg4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlQmFzaWMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljLmNwcApAQCAtMzQsNyArMzQs
NyBAQCBzdGF0aWMgYm9vbCBkb25lOwogc3RhdGljIGJvb2wgbG9hZERvbmU7CiBzdGF0aWMgYm9v
bCBtZXNzYWdlUmVjZWl2ZWQ7CiAKLXZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5
cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwg
V0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKIHsKICAgICBtZXNzYWdlUmVjZWl2ZWQgPSB0cnVlOwogICAgIGlmIChs
b2FkRG9uZSkK
</data>
<flag name="commit-queue"
          id="141122"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136466</attachid>
            <date>2012-04-10 09:13:55 -0700</date>
            <delta_ts>2012-04-24 10:02:05 -0700</delta_ts>
            <desc>Patch v5 - More project file additions</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>102981</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYWEwNDE1Ni4uMTVmNWU3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwMjYsNiArMTAyNiw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdl
L0RPTVNlbGVjdGlvbi5jcHAKICAgICBwYWdlL0RPTVRpbWVyLmNwcAogICAgIHBhZ2UvRE9NV2lu
ZG93LmNwcAorICAgIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcAogICAgIHBhZ2UvRE9NV2lu
ZG93UHJvcGVydHkuY3BwCiAgICAgcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKICAgICBwYWdlL0V2
ZW50SGFuZGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNDdlZjYwLi5lZGM1NDMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNjMgQEAKKzIwMTItMDQtMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDEyMDE1NT4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjY2NAorICAgICAgICAgTmVlZCBET01X
aW5kb3cgbWVjaGFuaXNtIHRvIHN1cHBsZW1lbnQgVXNlclNjcmlwdHMgZm9yIHBhZ2UgY2FjaGUg
bm90aWZpY2F0aW9ucworCisgICAgICAgIFRoaXMgcGF0Y2ggY3JlYXRlcyBhIG5ldyBvYmplY3Qg
dHlwZSAiRE9NV2luZG93RXh0ZW5zaW9uIiB3aGljaCBleHRlbmRzIERPTVdpbmRvd1Byb3BlcnR5
LgorICAgICAgICBBIERPTVdpbmRvd0V4dGVuc2lvbiBpcyB0aWVkIHRvIGEgcGFydGljdWxhciBE
T01XaW5kb3cgYW5kIHJlcHJlc2VudHMgZXh0ZW5zaWJpbGl0eSBpbiB0aGF0CisgICAgICAgIERP
TVdpbmRvdyB3aXRoaW4gYSBwYXJ0aWN1bGFyIERPTVdyYXBwZXJXb3JsZC4KKworICAgICAgICBJ
dCBpcyBhIHRva2VuIG9iamVjdCBtZWFudCBkZXNpZ25lZCB0byBub3RpZnkgY2xpZW50cyBvZiB0
aGUgdmFyaW91cyBldmVudHMgaW4gdGhlIGxpZmV0aW1lCisgICAgICAgIG9mIGEgRE9NV2luZG93
IHByb3BlcnR5IHN1Y2ggYXMgY3JlYXRpb24sIGRpc2Nvbm5lY3RpbmcgZm9yIHRoZSBwYWdlIGNh
Y2hlLCByZWNvbm5lY3RpbmcKKyAgICAgICAgd2hlbiByZXN0b3JpbmcgZnJvbSB0aGUgcGFnZSBj
YWNoZSwgYW5kIERPTVdpbmRvdyBkZXN0cnVjdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgV2ViS2l0IEFQSSB0ZXN0IERPTVdpbmRvd0V4
dGVuc2lvbkJhc2ljIGFkZGVkLgorCisgICAgICAgIEFkZCBob29rcyBmb3IgNCBuZXcgY2xpZW50
IGNhbGxzIHJlZ2FyZGluZyBET01XaW5kb3dFeHRlbnNpb25zIGFuZCBnbG9iYWwgb2JqZWN0IGxp
ZmV0aW1lOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ2FuQ3JlYXRlR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxEaXNj
b25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Ub0dsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbik6
CisgICAgICAgIAorICAgICAgICBBdCB0aGUgc2FtZSB0aW1lICJEaWRDbGVhcldpbmRvd09iamVj
dCIgaXMgY2FsbGVkLCBhbHNvIG5vdGlmeSBjbGllbnRzIHRoYXQgbm93IGlzIGEgZ29vZCB0aW1l
CisgICAgICAgIHRvIGNyZWF0ZSB0aGUgZ2xvYmFsIG9iamVjdDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlY2VpdmVk
Rmlyc3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaENhbkNy
ZWF0ZUdsb2JhbE9iamVjdEluQWxsV29ybGRzKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuaDoKKworICAgICAgICAgRE9NV2luZG93UHJvcGVydGllcyBtaWdodCB3YW50IHRvIHVucmVn
aXN0ZXIgdGhlbXNlbHZlcyBkdXJpbmcgdGhlc2Ugbm90aWZpY2F0aW9ucywgc28gY29weQorICAg
ICAgICAgdGhlIHNldCB0byBhIFZlY3Rvci4gV2hpbGUgdGhpcyB0ZWNobmlxdWUgaXMgYXJndWFi
bHkgZnJhZ2lsZSwgaXRzIGNlcnRhaW5seSBsZXNzIGZyYWdpbGUgdGhhbgorICAgICAgICAgbXV0
YXRpbmcgYSBzZXQgd2hpbGUgaXRlcmF0aW5nIGl0OgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6d2lsbERldGFjaFBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNjb25uZWN0RE9NV2luZG93UHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnJlY29ubmVjdERPTVdpbmRvd1Byb3BlcnRp
ZXMpOgorCisgICAgICAgICBJbXBsZW1lbnQgdGhlIERPTVdpbmRvd0V4dGVuc2lvbiBvYmplY3Qu
IEl0IGFjdHMgbGlrZSBhIERPTVdpbmRvd1Byb3BlcnR5IHdpdGggdGhlIGFkZGVkIGNhcGFiaWxp
dHkKKyAgICAgICAgIG9mIHJlbWVtYmVyaW5nIHdoYXQgRnJhbWUgaXQgdXNlZCB0byBiZSBjb25u
ZWN0ZWQgdG8gc28gaXQgY2FuICphbHdheXMqIG5vdGlmeSBjbGllbnRzIG9uIHdpbGxEZXRhY2hQ
YWdlOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246OkRPTVdpbmRvd0V4dGVuc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246On5ET01XaW5kb3dFeHRlbnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjpkaXNjb25uZWN0RnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjpyZWNvbm5lY3RGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246OndpbGxEZXRhY2hQYWdlKToK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdpbmRvd0V4dGVuc2lvbjo6d29ybGQpOgorCisgICAgICAgICBQcm9qZWN0IGZpbGVzOgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEyLTA0
LTA5ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIENT
U1ZhbHVlUG9vbCBzaGFyZSB2YWx1ZXMgZ2xvYmFsbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCBjNzVkMGEyLi5lYzBhNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTI5MDEsNiArMjkwMSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvcGFnZS9ET01UaW1lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggXAorCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3dFeHRlbnNpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0
eS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDNiODRkYTIu
LmY1OGUxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTAwMCw2ICsxMDAwLDcgQEAgU09VUkNFUyArPSBc
CiAgICAgcGFnZS9ET01TZWxlY3Rpb24uY3BwIFwKICAgICBwYWdlL0RPTVRpbWVyLmNwcCBcCiAg
ICAgcGFnZS9ET01XaW5kb3cuY3BwIFwKKyAgICBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAg
XAogICAgIHBhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwIFwKICAgICBwYWdlL0RyYWdDb250cm9s
bGVyLmNwcCBcCiAgICAgcGFnZS9FdmVudEhhbmRsZXIuY3BwIFwKQEAgLTIxMTAsNiArMjExMSw3
IEBAIEhFQURFUlMgKz0gXAogICAgIHBhZ2UvRE9NU2VsZWN0aW9uLmggXAogICAgIHBhZ2UvRE9N
VGltZXIuaCBcCiAgICAgcGFnZS9ET01XaW5kb3cuaCBcCisgICAgcGFnZS9ET01XaW5kb3dFeHRl
bnNpb24uaCBcCiAgICAgcGFnZS9EcmFnQ29udHJvbGxlci5oIFwKICAgICBwYWdlL0RyYWdTdGF0
ZS5oIFwKICAgICBwYWdlL0V2ZW50SGFuZGxlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXgg
ZDhjYjYxNC4uN2VlMTU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTU0NCw2ICs1NDQsNyBA
QCBfX1pON1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNzaW9uRDFFdgogX19aTjdXZWJDb3JlMTdjYWNo
ZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBL
TlMyXzlDbGFzc0luZm9FCiBfX1pON1dlYkNvcmUxN29wZW5UZW1wb3JhcnlGaWxlRVJLTjNXVEY2
U3RyaW5nRVJpCiBfX1pON1dlYkNvcmUxN3VzZXJWaXNpYmxlU3RyaW5nRVA1TlNVUkwKK19fWk43
V2ViQ29yZTE4RE9NV2luZG93RXh0ZW5zaW9uQzFFUE5TXzVGcmFtZUVQTlNfMTVET01XcmFwcGVy
V29ybGRFCiBfX1pON1dlYkNvcmUxOEhUTUxDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1
bWVudEUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkMTNidWZmZXJGb3JUeXBlRVJL
TjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMThQbGF0Zm9ybVBhc3RlYm9hcmQxM3N0cmluZ0Zv
clR5cGVFUktOM1dURjZTdHJpbmdFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOWNjZTViOS4uM2Y5MGY3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjIxLDYgKzIyMSw3IEBACiAgICAgICAgICAgICAncGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9Db29yZGluYXRl
cy5oJywKICAgICAgICAgICAgICdwYWdlL0RPTVdpbmRvdy5oJywKKyAgICAgICAgICAgICdwYWdl
L0RPTVdpbmRvd0V4dGVuc2lvbi5oJywKICAgICAgICAgICAgICdwYWdlL0RyYWdBY3Rpb25zLmgn
LAogICAgICAgICAgICAgJ3BhZ2UvRHJhZ0NsaWVudC5oJywKICAgICAgICAgICAgICdwYWdlL0Ry
YWdDb250cm9sbGVyLmgnLApAQCAtMjkzOCw2ICsyOTM5LDggQEAKICAgICAgICAgICAgICdwYWdl
L0RPTVRpbWVyLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9ET01UaW1lci5oJywKICAgICAgICAg
ICAgICdwYWdlL0RPTVdpbmRvdy5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93RXh0
ZW5zaW9uLmNwcCcsCisgICAgICAgICAgICAncGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaCcsCiAg
ICAgICAgICAgICAncGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5jcHAnLAogICAgICAgICAgICAgJ3Bh
Z2UvRE9NV2luZG93UHJvcGVydHkuaCcsCiAgICAgICAgICAgICAncGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCBlY2Q5ZGY1Li5hMjNhN2I4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMjYxMTgsNiArMjYxMTgsMTQgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxET01XaW5kb3dFeHRlbnNp
b24uY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwYWdlXERPTVdpbmRvd0V4dGVuc2lvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXERPTVdpbmRvd1Byb3BlcnR5LmNwcCIKIAkJCQk+
CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNmQ4NDI0OS4uMTU0ZDFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUyNCw2ICsxNTI0LDcg
QEAKIAkJNTE3NDFEMTEwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc0MUQwRDBCMDcyNTlBMDBF
RDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTc0MUQxMjBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NDFE
MEUwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmNwcCAqLzsgfTsKIAkJNTE3NEUyMEEx
MEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzRFMjA4MTBBMUY0NEYwMEY5NUU2RiAvKiBQb3BT
dGF0ZUV2ZW50LmggKi87IH07CisJCTUxN0ZCQTFFMTUxQUIxN0MwMEI1Nzk1OSAvKiBET01XaW5k
b3dFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE3RkJBMTcxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5jcHAg
Ki87IH07CiAJCTUxODlGMDFEMTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4OUYwMUIx
MEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5jcHAgKi87IH07CiAJCTUxODlGMDFF
MTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODlGMDFDMTBCMzdCRDkwMEYzQzczOSAvKiBK
U1BvcFN0YXRlRXZlbnQuaCAqLzsgfTsKIAkJNTE4OUYwREUxMEI0NkIwRTAwRjNDNzM5IC8qIFBv
cFN0YXRlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE4OUYwREQxMEI0NkIwRTAwRjNDNzM5IC8qIFBvcFN0YXRlRXZlbnQuY3BwICovOyB9
OwpAQCAtMTU2Miw2ICsxNTYzLDcgQEAKIAkJNTFFM0Y5QzcwREEwNTlEQzAwMjUwOTExIC8qIFN0
b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFFM0Y5QzUwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuY3BwICovOyB9OwogCQk1MUUzRjlE
NjBEQTA1RTFEMDAyNTA5MTEgLyogSlNTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTNGOUQ0MERBMDVFMUQwMDI1MDkxMSAvKiBKU1N0
b3JhZ2UuY3BwICovOyB9OwogCQk1MUVDOTI2NTBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21T
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUM5MjVEMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNR
TFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwICovOyB9OworCQk1MUZBMkQ3ODE1MjEzMkIzMDBD
MUJBMEIgLyogRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdGQkExODE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93
RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTFGQjU1MDQxMTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQjU1MDIxMTNFM0U5MTAw
ODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5oICovOyB9OwogCQk1MUZCNTUwNTExM0UzRTkxMDA4MjEx
NzYgLyogSlNDbG9zZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRkI1NTAzMTEzRTNFOTEwMDgyMTE3NiAvKiBKU0Nsb3NlRXZlbnQuY3Bw
ICovOyB9OwogCQk1MjFENDZGNjExQUVDOTgxMDA1MTQ2MTMgLyogS2lsbFJpbmdNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjFENDZGNTExQUVD
OTgxMDA1MTQ2MTMgLyogS2lsbFJpbmdNYWMubW0gKi87IH07CkBAIC04NDkyLDYgKzg0OTQsOCBA
QAogCQk1MTc0MUQwRTBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpc3RvcnlJdGVtLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3NEUyMDgxMEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRl
RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9wU3RhdGVFdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTc0RTIwQjEwQTFGNDlBMDBGOTVFNkYg
LyogUG9wU3RhdGVFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9wU3RhdGVFdmVu
dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0ZCQTE3MTUxQUE3MUIwMEI1
Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTE3RkJBMTgxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4OUYwMUIxMEIzN0JEOTAwRjNDNzM5IC8q
IEpTUG9wU3RhdGVFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1BvcFN0YXRlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg5
RjAxQzEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9wU3RhdGVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTg5RjBERDEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3BTdGF0ZUV2ZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MzEzLDYgKzE1MzE3LDggQEAKIAkJCQkx
NDAzQjk5NjA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmNwcCAqLywKIAkJCQkxNDAzQjk5
NTA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmggKi8sCiAJCQkJMTQwM0I5MEMwOUVCMTI0
NTAwNzk3QzdGIC8qIERPTVdpbmRvdy5pZGwgKi8sCisJCQkJNTE3RkJBMTcxNTFBQTcxQjAwQjU3
OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8sCisJCQkJNTE3RkJBMTgxNTFBQTcxQjAw
QjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oICovLAogCQkJCTk3RDJBRDAxMTRCODIzQTYw
MDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5jcHAgKi8sCiAJCQkJOTdEMkFEMDIxNEI4MjNB
NjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmggKi8sCiAJCQkJQTcxODc2MEQwQjJBMTIw
MTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggKi8sCkBAIC0yNDczMyw2ICsyNDczOSw3IEBACiAJ
CQkJQTA3RDMzNTgxNTJCNjMyRDAwMUI2MzkzIC8qIFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUExRUE3RDE1MkJDRjA4MDA0RDAwQjYgLyogU2ltcGxp
ZnlNYXJrdXBDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRURBMTJENzE1MkNBMUNCMDBE
OUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUZB
MkQ3ODE1MjEzMkIzMDBDMUJBMEIgLyogRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTI3NzMzLDYgKzI3NzQwLDcgQEAKIAkJCQlBMDdEMzM1NTE1MkI2MzBFMDAxQjYzOTMg
LyogSlNXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
MDhDRjE1NDE1MkI3N0IzMDA5QzU3NzUgLyogV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzVBMUVBN0MxNTJCQ0YwNDAwNEQwMEI2IC8qIFNpbXBsaWZ5
TWFya3VwQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTdGQkExRTE1MUFCMTdDMDBC
NTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggM2NjOWI3OC4uZGNkZWVkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC01ODYsNiArNTg2LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogCiAgICAgZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KCk7CiAgICAgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdHNJbkFsbFdvcmxkcygpOworICAg
IGRpc3BhdGNoQ2FuQ3JlYXRlR2xvYmFsT2JqZWN0SW5BbGxXb3JsZHMoKTsKIAogICAgIGlmICht
X2RvY3VtZW50TG9hZGVyKSB7CiAgICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gcHRpdGxlID0g
bV9kb2N1bWVudExvYWRlci0+dGl0bGUoKTsKQEAgLTMxNjUsNiArMzE2NiwxNCBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVy
V29ybGQqIHdvcmxkKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5k
b3dPYmplY3RJbldvcmxkKG1fZnJhbWUsIHdvcmxkKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlcjo6
ZGlzcGF0Y2hDYW5DcmVhdGVHbG9iYWxPYmplY3RJbkFsbFdvcmxkcygpCit7CisgICAgVmVjdG9y
PERPTVdyYXBwZXJXb3JsZCo+IHdvcmxkczsKKyAgICBTY3JpcHRDb250cm9sbGVyOjpnZXRBbGxX
b3JsZHMod29ybGRzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmxkcy5zaXplKCk7
ICsraSkKKyAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoQ2FuQ3JlYXRlR2xvYmFsT2JqZWN0KHdv
cmxkc1tpXSk7Cit9CisKIFNhbmRib3hGbGFncyBGcmFtZUxvYWRlcjo6ZWZmZWN0aXZlU2FuZGJv
eEZsYWdzKCkgY29uc3QKIHsKICAgICBTYW5kYm94RmxhZ3MgZmxhZ3MgPSBtX2ZvcmNlZFNhbmRi
b3hGbGFnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggNmZiZTQxYi4uNzhk
ZGNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTM3Miw2ICszNzIsOCBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25z
dCBLVVJMJikgY29uc3Q7CiAKKyAgICB2b2lkIGRpc3BhdGNoQ2FuQ3JlYXRlR2xvYmFsT2JqZWN0
SW5BbGxXb3JsZHMoKTsKKwogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIEZyYW1lTG9hZGVyQ2xp
ZW50KiBtX2NsaWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCBlOWJiMDI3Li5iZTgwMTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaApAQCAtNjMsNiArNjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiAgICAgY2xhc3MgQ2FjaGVkRnJhbWU7CiAg
ICAgY2xhc3MgQ29sb3I7CisgICAgY2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uOwogICAgIGNsYXNz
IERPTVdyYXBwZXJXb3JsZDsKICAgICBjbGFzcyBEb2N1bWVudExvYWRlcjsKICAgICBjbGFzcyBF
bGVtZW50OwpAQCAtMzMxLDYgKzMzMiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsT3BlblNvY2tldFN0cmVhbShTb2Nr
ZXRTdHJlYW1IYW5kbGUqKSB7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hDYW5D
cmVhdGVHbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkKikgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9i
amVjdChET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QoRE9NV2luZG93
RXh0ZW5zaW9uKikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxEZXN0cm95
R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKERPTVdpbmRvd0V4dGVuc2lvbiopIHsg
fQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAppbmRleCAxYThhZDcxLi5lMTRiZjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRE9NVGltZXIuaCIKICNpbmNsdWRlICJET01U
b2tlbkxpc3QuaCIKICNpbmNsdWRlICJET01VUkwuaCIKKyNpbmNsdWRlICJET01XaW5kb3dFeHRl
bnNpb24uaCIKICNpbmNsdWRlICJET01XaW5kb3dOb3RpZmljYXRpb25zLmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNhbGxiYWNrLmgiCkBAIC00NzQsOSArNDc1
LDEwIEBAIHZvaWQgRE9NV2luZG93Ojp3aWxsRGV0YWNoUGFnZSgpCiB7CiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChtX2ZyYW1lLCB0aGlzKTsKIAot
ICAgIEhhc2hTZXQ8RE9NV2luZG93UHJvcGVydHkqPjo6aXRlcmF0b3Igc3RvcCA9IG1fcHJvcGVy
dGllcy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8RE9NV2luZG93UHJvcGVydHkqPjo6aXRlcmF0
b3IgaXQgPSBtX3Byb3BlcnRpZXMuYmVnaW4oKTsgaXQgIT0gc3RvcDsgKytpdCkKLSAgICAgICAg
KCppdCktPndpbGxEZXRhY2hQYWdlKCk7CisgICAgVmVjdG9yPERPTVdpbmRvd1Byb3BlcnR5Kj4g
cHJvcGVydGllczsKKyAgICBjb3B5VG9WZWN0b3IobV9wcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnRpZXMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIHByb3BlcnRpZXNbaV0tPndpbGxEZXRhY2hQYWdlKCk7CiB9CiAKIHZvaWQgRE9NV2luZG93
OjpyZWdpc3RlclByb3BlcnR5KERPTVdpbmRvd1Byb3BlcnR5KiBwcm9wZXJ0eSkKQEAgLTUxNCwx
NyArNTE2LDE5IEBAIHZvaWQgRE9NV2luZG93OjpyZXN1bWVGcm9tUGFnZUNhY2hlKCkKIAogdm9p
ZCBET01XaW5kb3c6OmRpc2Nvbm5lY3RET01XaW5kb3dQcm9wZXJ0aWVzKCkKIHsKLSAgICBIYXNo
U2V0PERPTVdpbmRvd1Byb3BlcnR5Kj46Oml0ZXJhdG9yIHN0b3AgPSBtX3Byb3BlcnRpZXMuZW5k
KCk7Ci0gICAgZm9yIChIYXNoU2V0PERPTVdpbmRvd1Byb3BlcnR5Kj46Oml0ZXJhdG9yIGl0ID0g
bV9wcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ICE9IHN0b3A7ICsraXQpCi0gICAgICAgICgqaXQpLT5k
aXNjb25uZWN0RnJhbWUoKTsKKyAgICBWZWN0b3I8RE9NV2luZG93UHJvcGVydHkqPiBwcm9wZXJ0
aWVzOworICAgIGNvcHlUb1ZlY3RvcihtX3Byb3BlcnRpZXMsIHByb3BlcnRpZXMpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydGllcy5zaXplKCk7ICsraSkKKyAgICAgICAgcHJv
cGVydGllc1tpXS0+ZGlzY29ubmVjdEZyYW1lKCk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpyZWNv
bm5lY3RET01XaW5kb3dQcm9wZXJ0aWVzKCkKIHsKICAgICBBU1NFUlQobV9zdXNwZW5kZWRGb3JQ
YWdlQ2FjaGUpOwotICAgIEhhc2hTZXQ8RE9NV2luZG93UHJvcGVydHkqPjo6aXRlcmF0b3Igc3Rv
cCA9IG1fcHJvcGVydGllcy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8RE9NV2luZG93UHJvcGVy
dHkqPjo6aXRlcmF0b3IgaXQgPSBtX3Byb3BlcnRpZXMuYmVnaW4oKTsgaXQgIT0gc3RvcDsgKytp
dCkKLSAgICAgICAgKCppdCktPnJlY29ubmVjdEZyYW1lKG1fZnJhbWUpOworICAgIFZlY3RvcjxE
T01XaW5kb3dQcm9wZXJ0eSo+IHByb3BlcnRpZXM7CisgICAgY29weVRvVmVjdG9yKG1fcHJvcGVy
dGllcywgcHJvcGVydGllcyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0aWVz
LnNpemUoKTsgKytpKQorICAgICAgICBwcm9wZXJ0aWVzW2ldLT5yZWNvbm5lY3RGcmFtZShtX2Zy
YW1lKTsKIH0KIAogdm9pZCBET01XaW5kb3c6OmNsZWFyRE9NV2luZG93UHJvcGVydGllcygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ1NjhhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJET01XaW5kb3dFeHRlbnNpb24uaCIKKworI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgorI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkZyYW1lLmgi
CisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitET01XaW5kb3dFeHRlbnNpb246OkRPTVdpbmRvd0V4dGVuc2lvbihGcmFtZSogZnJhbWUsIERP
TVdyYXBwZXJXb3JsZCogd29ybGQpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKKyAg
ICAsIG1fd29ybGQod29ybGQpCisgICAgLCBtX2Rpc2Nvbm5lY3RlZERPTVdpbmRvdygwKQorICAg
ICwgbV93YXNEZXRhY2hlZChmYWxzZSkKK3sKKyAgICBBU1NFUlQodGhpcy0+ZnJhbWUoKSk7Cisg
ICAgQVNTRVJUKG1fd29ybGQpOworfQorCitET01XaW5kb3dFeHRlbnNpb246On5ET01XaW5kb3dF
eHRlbnNpb24oKQoreworICAgIC8vIERPTVdpbmRvd0V4dGVuc2lvbiBsaWZldGltZSBpc24ndCB0
aWVkIGRpcmVjdGx5IHRvIHRoZSBET01XaW5kb3cgaXRzZWxmIHNvIGl0IGlzIGltcG9ydGFudCB0
aGF0IGl0IHVucmVnaXN0ZXIKKyAgICAvLyBpdHNlbGYgZnJvbSBhbnkgRE9NV2luZG93IGl0IGlz
IGFzc29jaWF0ZWQgd2l0aCB3aGVuIGRlc3Ryb3llZC4KKyAgICAvLyBUaGlzIG1pZ2h0IGhhcHBl
biBpZiB0aGUgRE9NV2luZG93RXh0ZW5zaW9uIGlzIGRlc3Ryb3llZCB3aGlsZSBpdHMgRE9NV2lu
ZG93IGlzIGluIGEgQ2FjaGVkUGFnZS4KKyAgICBpZiAobV9kaXNjb25uZWN0ZWRET01XaW5kb3cp
CisgICAgICAgIG1fZGlzY29ubmVjdGVkRE9NV2luZG93LT51bnJlZ2lzdGVyUHJvcGVydHkodGhp
cyk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uOjpkaXNjb25uZWN0RnJhbWUoKQorewor
ICAgIC8vIENhbGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgbWlnaHQgcmVzdWx0IGluIHRoaXMgRE9N
V2luZG93RXh0ZW5zaW9uIGJlaW5nIGRlc3Ryb3llZAorICAgIC8vIHdoaWxlIHRoZXJlIGlzIHN0
aWxsIHdvcmsgdG8gZG8uCisgICAgUmVmUHRyPERPTVdpbmRvd0V4dGVuc2lvbj4gcHJvdGVjdG9y
ID0gdGhpczsKKyAgICAKKyAgICAvLyBET01XaW5kb3dQcm9wZXJ0aWVzIGFyZSBkaXNjb25uZWN0
ZWQgZnJvbSBmcmFtZXMgYWZ0ZXIgdGhleSBhcmUgZGV0YWNoZWQuCisgICAgLy8gRE9NV2luZG93
RXh0ZW5zaW9ucyBvbmx5IHdhbnQgdG8gc3RheSBwcmVwYXJlZCBmb3IgY2xpZW50IGNhbGxiYWNr
cyBpZiB0aGV5J3ZlIG5ldmVyIGJlZW4gZGV0YWNoZWQuCisgICAgaWYgKCFtX3dhc0RldGFjaGVk
KSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgICAgIGZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Gcm9tR2xvYmFsT2JqZWN0KHRoaXMpOworCisgICAgICAgIG1fZGlzY29ubmVjdGVkRnJh
bWUgPSBmcmFtZTsKKyAgICAgICAgbV9kaXNjb25uZWN0ZWRET01XaW5kb3cgPSBmcmFtZS0+ZG9t
V2luZG93KCk7CisgICAgfQorCisgICAgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFt
ZSgpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbjo6cmVjb25uZWN0RnJhbWUoRnJhbWUq
IGZyYW1lKQoreworICAgIC8vIERPTVdpbmRvd1Byb3BlcnRpZXMgc2hvdWxkIG5ldmVyIHJlY29u
bmVjdCB0byBhIGZyYW1lIGFmdGVyIHRoZXkndmUgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSBwYWdl
LgorICAgIEFTU0VSVCghbV93YXNEZXRhY2hlZCk7CisgICAgQVNTRVJUKG1fZGlzY29ubmVjdGVk
RnJhbWUgPT0gZnJhbWUpOworICAgIAorICAgIERPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RG
cmFtZShmcmFtZSk7CisgICAgbV9kaXNjb25uZWN0ZWRGcmFtZSA9IDA7CisgICAgbV9kaXNjb25u
ZWN0ZWRET01XaW5kb3cgPSAwOworCisgICAgdGhpcy0+ZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVu
dCgpLT5kaXNwYXRjaERpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0
KHRoaXMpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbjo6d2lsbERldGFjaFBhZ2UoKQor
eworICAgIC8vIHdpbGxEZXRhY2hQYWdlIG1pZ2h0IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBi
dXQgd2Ugb25seSB3YW50IHRvIHJlYWN0IG9uY2UuCisgICAgaWYgKG1fd2FzRGV0YWNoZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICAvLyBDYWxsaW5nIG91dCB0byB0aGUgY2xpZW50IG1p
Z2h0IHJlc3VsdCBpbiB0aGlzIERPTVdpbmRvd0V4dGVuc2lvbiBiZWluZyBkZXN0cm95ZWQKKyAg
ICAvLyB3aGlsZSB0aGVyZSBpcyBzdGlsbCB3b3JrIHRvIGRvLgorICAgIFJlZlB0cjxET01XaW5k
b3dFeHRlbnNpb24+IHByb3RlY3RvciA9IHRoaXM7CisgICAgCisgICAgRnJhbWUqIGZyYW1lID0g
bV9kaXNjb25uZWN0ZWRGcmFtZS5nZXQoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBmcmFt
ZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgQVNTRVJUKGZyYW1lKTsKKworICAgIC8vIERPTVdpbmRv
d0V4dGVuc2lvbiBsaWZldGltZSBpc24ndCB0aWVkIGRpcmVjdGx5IHRvIHRoZSBET01XaW5kb3cg
aXRzZWxmIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IGl0IHVucmVnaXN0ZXIKKyAgICAvLyBpdHNl
bGYgZnJvbSBhbnkgRE9NV2luZG93IGl0IGlzIGFzc29jaWF0ZWQgd2l0aCB3aGVuIGRldGFjaGVk
LgorICAgIC8vIFRoaXMgbWlnaHQgYmUgdGhlIGRpc2Nvbm5lY3RlZCBET01XaW5kb3cgaWYgdGhl
IERPTVdpbmRvdyBpcyBpbiBhIENhY2hlZFBhZ2UgdGhhdCBpcyBwcnVuZWQuCisgICAgRE9NV2lu
ZG93KiBhc3NvY2lhdGVkRE9NV2luZG93ID0gbV9kaXNjb25uZWN0ZWRET01XaW5kb3cgPyBtX2Rp
c2Nvbm5lY3RlZERPTVdpbmRvdyA6IGZyYW1lLT5kb21XaW5kb3coKTsKKyAgICBhc3NvY2lhdGVk
RE9NV2luZG93LT51bnJlZ2lzdGVyUHJvcGVydHkodGhpcyk7CisgICAgbV9kaXNjb25uZWN0ZWRE
T01XaW5kb3cgPSAwOworICAgIAorICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3Bh
dGNoV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24odGhpcyk7CisK
KyAgICBtX2Rpc2Nvbm5lY3RlZEZyYW1lID0gMDsKKworICAgIERPTVdpbmRvd1Byb3BlcnR5Ojp3
aWxsRGV0YWNoUGFnZSgpOworICAgIAorICAgIG1fd2FzRGV0YWNoZWQgPSB0cnVlOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvd0V4dGVuc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjBhNGY3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaApAQCAt
MCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBET01XaW5kb3dFeHRlbnNpb25faAorI2RlZmluZSBET01XaW5kb3dFeHRlbnNp
b25faAorCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdpbmRvdzsKK2NsYXNz
IERPTVdpbmRvd0V4dGVuc2lvbjsKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKK2NsYXNzIEZyYW1l
OworCitjbGFzcyBET01XaW5kb3dFeHRlbnNpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxET01XaW5k
b3dFeHRlbnNpb24+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERPTVdpbmRvd0V4dGVuc2lvbj4gY3JlYXRlKEZyYW1lKiBmcmFtZSwg
RE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRE9NV2luZG93RXh0ZW5zaW9uKGZyYW1lLCB3b3JsZCkpOworICAgIH0KKworICAgIH5ET01X
aW5kb3dFeHRlbnNpb24oKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb25uZWN0RnJhbWUoRnJhbWUqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaFBhZ2UoKSBPVkVSUklERTsKKworICAgIERP
TVdyYXBwZXJXb3JsZCogd29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CisK
K3ByaXZhdGU6CisgICAgRE9NV2luZG93RXh0ZW5zaW9uKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxk
Kik7CisKKyAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOworICAgIFJlZlB0cjxG
cmFtZT4gbV9kaXNjb25uZWN0ZWRGcmFtZTsKKyAgICBET01XaW5kb3cqIG1fZGlzY29ubmVjdGVk
RE9NV2luZG93OworICAgIGJvb2wgbV93YXNEZXRhY2hlZDsKK307CisKK30KKworI2VuZGlmIC8v
IERPTVdpbmRvd0V4dGVuc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IGQ0MzIwOGQuLmQ1
YjY0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0zMzEsMTIgKzMzMSwxNCBAQCBTRVQoV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUJhY2tGb3J3YXJkTGlzdC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3Bw
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcAorICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlR3JvdXBDbGllbnQuY3BwCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2xp
Y3lDbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwCkBAIC0zNDYsNiArMzQ4LDcgQEAgU0VUKFdlYktp
dDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3
YXJkTGlzdC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGIz
YTUxZTEuLjQwYjY1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxMi0wNC0wOSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzEwMTIwMTU1PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgyNjY0CisgICAgICAgICBOZWVkIERPTVdpbmRvdyBtZWNoYW5pc20gdG8gc3VwcGxlbWVudCBV
c2VyU2NyaXB0cyBmb3IgcGFnZSBjYWNoZSBub3RpZmljYXRpb25zCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICAtIEFkZHMgYSBuZXcgQVBJ
IG9iamVjdCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbgorICAgICAgICAtIEV4cG9zZXMgY2Fs
bGJhY2tzIGFib3V0IHRoZSBsaWZldGltZSBvZiBET01XaW5kb3dFeHRlbnNpb25zIHRocm91Z2gg
YSBuZXcgQnVuZGxlUGFnZUdyb3VwIGNsaWVudAorCisgICAgICAgIEFkZCBBUEkgdG8gc2V0IHRo
ZSBCdW5kbGVQYWdlR3JvdXAgY2xpZW50OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdl
R3JvdXBTZXRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlR3JvdXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZUdyb3VwUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlR3JvdXBQcm94eTo6
aW5pdGlhbGl6ZUNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VH
cm91cFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91cFByb3h5OjpjbGllbnQp
OgorCisgICAgICAgIEltcGxlbWVudCB0aGF0IGNsaWVudDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50OjpkaWRDcmVh
dGVHbG9iYWxPYmplY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UGFnZUdyb3VwQ2xpZW50Ojp3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9i
YWxPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVu
dDo6ZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudDo6d2lsbERlc3Ryb3lHbG9i
YWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlR3JvdXBDbGllbnQuaDogCisKKyAgICAgICAg
QWRkIEFQSSBmb3IgdGhlIG5ldyBET01XaW5kb3dFeHRlbnNpb24gb2JqZWN0OgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uR2V0VHlw
ZUlEKToKKyAgICAgICAgKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uQ3JlYXRlKToKKyAgICAg
ICAgKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uR2V0RnJhbWUpOgorICAgICAgICAoV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb25HZXRTY3JpcHRXb3JsZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oOiBBZGRl
ZC4KKworICAgICAgICBBZGQgaW1wbGVtZW50YXRpb24gZm9yIHRoYXQgQVBJIHdoaWNoIHdyYXBz
IHRoZSBXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjphbGxFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpnZXQpOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6SW5qZWN0ZWRCdW5kbGVET01XaW5k
b3dFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbjo6fkluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OmZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OndvcmxkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6
dHlwZSk6CisKKyAgICAgICAgQWRkIG5ldyBBUEkgY2FzdHM6CisgICAgICAgICogU2hhcmVkL0FQ
SS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwOgorICAg
ICAgICAqIFNoYXJlZC9BUElPYmplY3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oOgorCisgICAgICAgICBJbXBsZW1lbnQgdGhl
IDQgbmV3IGNhbGxiYWNrcyBmcm9tIFdlYkNvcmUgd2hpY2ggbm90aWZ5IHRoZSBCdW5kbGVQYWdl
R3JvdXAgY2xpZW50OgorICAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoQ2FuQ3JlYXRlR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNp
b25Gcm9tR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsRGVz
dHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCisgICAgICAgIFBy
b2plY3QgZmlsZXM6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOgorCiAy
MDEyLTA0LTA5ICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAK
ICAgICAgICAgW1F0XVtXSzJdIFN5bmMgdGhlIGxheWVyJ3Mgc3RhdGUgYW5kIHRoZSBsYXllcidz
IGNoaWxkcmVuIHNlcGFyYXRlbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggNTg4ZTZhNi4uOTFk
ZGY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTgwNSw2ICs4MDUsOCBAQCB3ZWJraXQyX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0u
aCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZS5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVGcmFtZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVGcmFtZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWVQcml2YXRlLmggXApAQCAtODQ0LDYgKzg0Niw4
IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVDbGllbnQuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgXAorCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24uaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbi5jcHAgXApAQCAtODU2LDYgKzg2MCw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VG
b3JtQ2xpZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNs
aWVudC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudC5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggYzg2NTZlNC4uNTU3MjNi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTE2LDYgKzExNiw3IEBA
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlKiBXS0J1bmRsZVJlZjsKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlQmFja0ZvcndhcmRMaXN0KiBXS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlQmFj
a0ZvcndhcmRMaXN0SXRlbSogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVET01DU1NTdHlsZURlY2xhcmF0aW9uKiBXS0J1
bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25SZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWY7
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUZyYW1lKiBXS0J1bmRsZUZyYW1l
UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVIaXRUZXN0UmVzdWx0KiBX
S0J1bmRsZUhpdFRlc3RSZXN1bHRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1
bmRsZUluc3BlY3RvciogV0tCdW5kbGVJbnNwZWN0b3JSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUElDbGllbnRUcmFpdHMuY3BwCmluZGV4IDRmNWQ4ZmEuLmRmMzU5MGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJQ2xpZW50VHJhaXRzLmgiCiAKKyNpbmNsdWRl
ICJXS0J1bmRsZS5oIgogI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAppbmRleCBkNmNjMDMwLi42ZWYxMDNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xMDYsNiArMTA2LDcgQEAgcHVibGljOgog
ICAgICAgICBUeXBlQnVuZGxlLAogICAgICAgICBUeXBlQnVuZGxlQmFja0ZvcndhcmRMaXN0LAog
ICAgICAgICBUeXBlQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbSwKKyAgICAgICAgVHlwZUJ1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbiwKICAgICAgICAgVHlwZUJ1bmRsZUZyYW1lLAogICAgICAgICBU
eXBlQnVuZGxlSGl0VGVzdFJlc3VsdCwKICAgICAgICAgVHlwZUJ1bmRsZUluc3BlY3RvciwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJn
ZXQucHJpCmluZGV4IDBkYjk4NTkuLjQ2NWJhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMzEzLDExICsz
MTMsMTMgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVDbGllbnQuaCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIFwKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIFwKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9y
bUNsaWVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUZ1bGxTY3JlZW5DbGllbnQuaCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmggXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIFwKQEAgLTY1
Miw2ICs2NTQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCisgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAg
XAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAg
XAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVz
dWx0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
c3BlY3Rvci5jcHAgXApAQCAtNjY3LDEyICs2NzAsMTQgQEAgU09VUkNFUyArPSBcCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAg
XAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2Fy
ZExpc3RJdGVtLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUNsaWVudC5jcHAgXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBcCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcCBcCisgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudC5jcHAgXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQ
b2xpY3lDbGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhNTc2MTAuLjQyMzFkOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTMzMiw2ICszMzIsOCBAQAogCQk1MTBGQkI5QjEyODhDOTVFMDBBRkZERjQgLyogV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwRkJCOTkxMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRl
bURhdGEuaCAqLzsgfTsKIAkJNTExMEFFMEMxMzNDMTZDQjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFi
YXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MTBBRTBBMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5jcHAgKi87IH07CiAJCTUx
MTBBRTBEMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMEFFMEIxMzNDMTZDQjAwNzI3MTdB
IC8qIFdLSWNvbkRhdGFiYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNTExMEMwQ0IxNTJCQjNDMzAwOEI4NUYyIC8qIEluamVjdGVkQnVuZGxl
UGFnZUdyb3VwQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTEwQzBCRTE1MkE4NDQ5MDA4Qjg1RjIgLyogSW5qZWN0ZWRCdW5kbGVQYWdlR3Jv
dXBDbGllbnQuaCAqLzsgfTsKKwkJNTExMEMwQ0MxNTJCQjNDODAwOEI4NUYyIC8qIEluamVjdGVk
QnVuZGxlUGFnZUdyb3VwQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMTBDMEJEMTUyQTg0NDkwMDhCODVGMiAvKiBJbmplY3RlZEJ1bmRs
ZVBhZ2VHcm91cENsaWVudC5jcHAgKi87IH07CiAJCTUxMUIyNEE2MTMyRTA5NTcwMDA2NUEwQyAv
KiBXZWJJY29uRGF0YWJhc2VQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTFCMjRBNDEzMkUwOTU3MDAwNjVBMEMgLyogV2ViSWNvbkRhdGFi
YXNlUHJveHkuY3BwICovOyB9OwogCQk1MTFCMjRBNzEzMkUwOTU3MDAwNjVBMEMgLyogV2ViSWNv
bkRhdGFiYXNlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMUIyNEE1MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5o
ICovOyB9OwogCQk1MTFCMjRBQTEzMkUwOTcyMDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUIyNEE4
MTMyRTA5NzIwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2UuY3BwICovOyB9OwpAQCAtNDM0LDYg
KzQzNiw5IEBACiAJCTUxRDEzMDU1MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VE
YXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RDEzMDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLzsgfTsK
IAkJNTFEMTMwNTYxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDUyMTM4MkVB
QzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmggKi87IH07CiAJCTUxRDEzMDU4MTM4
MkYxMDUwMDM1MUVERCAvKiBXZWJQcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1NzEzODJGMTA1MDAzNTFFREQgLyog
V2ViUHJvY2Vzc1Byb3h5TWFjLm1tICovOyB9OworCQk1MUVGQzFDRjE1MjRFNjI1MDBDOUE5Mzgg
LyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkEyRDU0MTUyMTExODYwMEMxQkEwQiAvKiBXS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTUxRkEyRDc0MTUyMTJERjEwMEMxQkEwQiAvKiBJbmplY3RlZEJ1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUZBMkQ1QzE1MjExQTUwMDBDMUJBMEIgLyogSW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb24uY3BwICovOyB9OworCQk1MUZBMkQ3NzE1MjEyRTI2MDBDMUJBMEIg
LyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQTJENzUxNTIxMkUxRTAwQzFCQTBCIC8qIFdLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLzsgfTsKIAkJNTI3MkIyOEExNDA2OTg1RDAwOTZB
NUQwIC8qIFN0YXRpc3RpY3NEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyNzJCMjg4MTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0
YS5jcHAgKi87IH07CiAJCTUyNzJCMjhCMTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3MkIy
ODkxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggKi87IH07CiAJCTVENTE4NDU1
MTNCQ0Y5Q0MwMEM3RkY0QSAvKiBBUElDbGllbnRUcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1MTg0NTMxM0JDRjlDQzAwQzdGRjRBIC8q
IEFQSUNsaWVudFRyYWl0cy5jcHAgKi87IH07CkBAIC0xMzUwLDYgKzEzNTUsOCBAQAogCQk1MTBG
QkI5OTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTBBRTBBMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0lj
b25EYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0lj
b25EYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTBBRTBCMTMz
QzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS0ljb25EYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTEwQzBCRDE1MkE4NDQ5MDA4Qjg1RjIgLyogSW5qZWN0ZWRCdW5kbGVQYWdlR3JvdXBDbGll
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5k
bGVQYWdlR3JvdXBDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTEw
QzBCRTE1MkE4NDQ5MDA4Qjg1RjIgLyogSW5qZWN0ZWRCdW5kbGVQYWdlR3JvdXBDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVQYWdlR3JvdXBD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExMkNBNDcxMzg1OEQ0QjAw
MzA4NjdEIC8qIFNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExMkNBNDgxMzg1OEQ0QjAwMzA4NjdEIC8qIFNl
Y0tleWNoYWluSXRlbVJlcXVlc3REYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxMTJDQTQ5MTM4NThENEIwMDMwODY3RCAvKiBTZWNLZXljaGFpbkl0ZW1SZXNwb25z
ZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjS2V5Y2hh
aW5JdGVtUmVzcG9uc2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0
NTgsNiArMTQ2NSwxMCBAQAogCQk1MUQxMzA1MTEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJl
c3BvbnNlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWNJ
dGVtUmVzcG9uc2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMw
NTIxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjSXRlbVJlc3BvbnNlRGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUQxMzA1NzEzODJGMTA1MDAzNTFFREQgLyogV2ViUHJvY2Vzc1By
b3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJv
Y2Vzc1Byb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUZBMkQ1NDE1
MjExMTg2MDBDMUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGQTJENUExNTIxMUExRTAwQzFCQTBCIC8qIElu
amVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxRkEyRDVDMTUyMTFBNTAwMEMxQkEwQiAvKiBJbmplY3RlZEJ1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxRkEyRDc1MTUyMTJFMUUwMEMxQkEwQiAvKiBXS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUyNzJCMjg4MTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aXN0aWNzRGF0YS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzJCMjg5MTQwNjk4NUQwMDk2QTVEMCAvKiBT
dGF0aXN0aWNzRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aXN0
aWNzRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDUxODQ1MzEzQkNGOUND
MDBDN0ZGNEEgLyogQVBJQ2xpZW50VHJhaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFQSUNsaWVudFRyYWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0zMjI4LDYgKzMyMzksOCBAQAogCQkJCTkzNUVFQjkyMTI3NzYxNUQwMDMzMjJCOCAv
KiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLywKIAkJCQlCQ0VFN0RDNDEy
OEI2NDVEMDA5ODI3REEgLyogSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwICovLAogCQkJCUJDRUU3
REMzMTI4QjY0NUQwMDk4MjdEQSAvKiBJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovLAorCQkJCTUx
RkEyRDVDMTUyMTFBNTAwMEMxQkEwQiAvKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bi5jcHAgKi8sCisJCQkJNTFGQTJENUExNTIxMUExRTAwQzFCQTBCIC8qIEluamVjdGVkQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uLmggKi8sCiAJCQkJQkM0OTg2MTcxMjREMTBFMjAwRDgzNEUxIC8q
IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgKi8sCiAJCQkJQkM0OTg2MTYxMjREMTBF
MjAwRDgzNEUxIC8qIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oICovLAogCQkJCUJDODE0
N0Q0MTJGNjZEMzEwMDdCMkMzMiAvKiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3Bw
ICovLApAQCAtMzI0MCw2ICszMjUzLDggQEAKIAkJCQlCQzE0RTEwODEyMEI5MDVFMDA4MjZDMEMg
LyogSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5oICovLAogCQkJCUNENUM2NjlFMTM0QjlE
MzYwMDRGRTJBOCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcCAqLywK
IAkJCQlDRDVDNjY5RjEzNEI5RDM3MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNj
cmVlbkNsaWVudC5oICovLAorCQkJCTUxMTBDMEJEMTUyQTg0NDkwMDhCODVGMiAvKiBJbmplY3Rl
ZEJ1bmRsZVBhZ2VHcm91cENsaWVudC5jcHAgKi8sCisJCQkJNTExMEMwQkUxNTJBODQ0OTAwOEI4
NUYyIC8qIEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50LmggKi8sCiAJCQkJQkNBOEM2QTYx
MUUzQkE1RjAwODEyRkI3IC8qIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgKi8s
CiAJCQkJQkNBOEM2QTcxMUUzQkE1RjAwODEyRkI3IC8qIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oICovLAogCQkJCUJDODE0N0E4MTJGNjRDREEwMDdCMkMzMiAvKiBJbmplY3RlZEJ1
bmRsZVBhZ2VQb2xpY3lDbGllbnQuY3BwICovLApAQCAtMzI4MSw2ICszMjk2LDggQEAKIAkJCQk5
MzVFRUI5NjEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCAqLywK
IAkJCQk5MzVFRUI5NzEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtLmNwcCAqLywKIAkJCQk5MzVFRUI5ODEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5kbGVCYWNr
Rm9yd2FyZExpc3RJdGVtLmggKi8sCisJCQkJNTFGQTJENzUxNTIxMkUxRTAwQzFCQTBCIC8qIFdL
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLywKKwkJCQk1MUZBMkQ1NDE1MjExMTg2MDBD
MUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCAqLywKIAkJCQlCQ0QyNUYxNjEx
RDZCREUxMDAxNjlCMEUgLyogV0tCdW5kbGVGcmFtZS5jcHAgKi8sCiAJCQkJQkNEMjVGMTUxMUQ2
QkRFMTAwMTY5QjBFIC8qIFdLQnVuZGxlRnJhbWUuaCAqLywKIAkJCQlCQ0YwNDlFNDExRkUyMEY2
MDBGODZBNTggLyogV0tCdW5kbGVGcmFtZVByaXZhdGUuaCAqLywKQEAgLTQxODUsNiArNDIwMiw4
IEBACiAJCQkJMzc5NDg0MDQxNTBDMzUwNjAwRTUyQ0U5IC8qIFdlYlJlbmRlckxheWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzNzk0ODQwOTE1MEM0Qjk3MDBFNTJDRTkgLyogV0tSZW5kZXJMYXll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VEQTEyRTMxNTJDRDFCMzAwRDlFMDhEIC8qIFdlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFFRkMxQ0YxNTI0RTYy
NTAwQzlBOTM4IC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MTEwQzBDQjE1MkJCM0MzMDA4Qjg1RjIgLyogSW5qZWN0ZWRCdW5kbGVQYWdlR3JvdXBD
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDkyOSw2ICs0OTQ4LDkgQEAKIAkJCQkzNzk0ODQw
MzE1MEMzNTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzc5NDg0MDgxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0VEQTEyRTIxNTJDRDFBRTAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUZBMkQ3NDE1MjEyREYxMDBDMUJBMEIg
LyogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTFGQTJENzcxNTIxMkUyNjAwQzFCQTBCIC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMTBDMENDMTUyQkIzQzgwMDhCODVGMiAvKiBJbmpl
Y3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVB
UElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlQVBJQ2FzdC5oCmluZGV4IGRiMzI3MTYuLmU0MGM4OTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElD
YXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUFQSUNhc3QuaApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIEluamVjdGVkQnVuZGxlOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3Q7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW07CitjbGFzcyBJbmpl
Y3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjsKIGNsYXNzIEluamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjsKIGNsYXNzIElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZTsKQEAgLTU4LDYgKzU5LDcgQEAgY2xhc3MgV2ViUGFnZUdy
b3VwUHJveHk7CiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
UmVmLCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0pCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RSZWYsIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvblJlZiwg
V2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbikKK1dLX0FERF9BUElfTUFQUElORyhXS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24p
CiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVGcmFtZVJlZiwgV2ViRnJhbWUpCiBXS19BRERf
QVBJX01BUFBJTkcoV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmLCBJbmplY3RlZEJ1bmRsZUhpdFRl
c3RSZXN1bHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVJbnNwZWN0b3JSZWYsIFdlYklu
c3BlY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU1YmQ2MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCIKKworI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiV0tCdW5k
bGVBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OkFQSVR5cGUpOworfQorCitXS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvblJlZiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkNyZWF0ZShXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkKQoreworICAg
IFJlZlB0cjxJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbj4gZXh0ZW5zaW9uID0gSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OmNyZWF0ZSh0b0ltcGwoZnJhbWUpLCB0b0lt
cGwod29ybGQpKTsKKyAgICByZXR1cm4gdG9BUEkoZXh0ZW5zaW9uLnJlbGVhc2UoKS5sZWFrUmVm
KCkpOworfQorCitXS0J1bmRsZUZyYW1lUmVmIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uR2V0
RnJhbWUoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKQoreworICAgIHJl
dHVybiB0b0FQSSh0b0ltcGwoZXh0ZW5zaW9uKS0+ZnJhbWUoKSk7Cit9CisKK1dLQnVuZGxlU2Ny
aXB0V29ybGRSZWYgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25HZXRTY3JpcHRXb3JsZChXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24pCit7CisgICAgcmV0dXJuIHRvQVBJ
KHRvSW1wbChleHRlbnNpb24pLT53b3JsZCgpKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjQwOWE3NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25faAorI2RlZmluZSBXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbl9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgor
CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBX
S1R5cGVJRCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldFR5cGVJRCgpOworCitXS19FWFBP
UlQgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNp
b25DcmVhdGUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3
b3JsZCk7CisKK1dLX0VYUE9SVCBXS0J1bmRsZUZyYW1lUmVmIFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uR2V0RnJhbWUoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKTsK
K1dLX0VYUE9SVCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uR2V0U2NyaXB0V29ybGQoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9u
KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VHcm91
cC5jcHAKaW5kZXggZTA3NmNiOS4uMzZhOWZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VHcm91cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2VHcm91cC5jcHAKQEAgLTM3LDYgKzM3LDExIEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdy
b3VwR2V0VHlwZUlEKCkKICAgICByZXR1cm4gdG9BUEkoV2ViUGFnZUdyb3VwUHJveHk6OkFQSVR5
cGUpOwogfQogCit2b2lkIFdLQnVuZGxlUGFnZUdyb3VwU2V0Q2xpZW50KFdLQnVuZGxlUGFnZUdy
b3VwUmVmIGJ1bmRsZVBhZ2VHcm91cCwgV0tCdW5kbGVQYWdlR3JvdXBDbGllbnQgKiB3a0NsaWVu
dCkKK3sKKyAgICB0b0ltcGwoYnVuZGxlUGFnZUdyb3VwKS0+aW5pdGlhbGl6ZUNsaWVudCh3a0Ns
aWVudCk7Cit9CisKIFdLU3RyaW5nUmVmIFdLQnVuZGxlUGFnZUdyb3VwQ29weUlkZW50aWZpZXIo
V0tCdW5kbGVQYWdlR3JvdXBSZWYgYnVuZGxlUGFnZUdyb3VwKQogewogICAgIHJldHVybiB0b0Nv
cGllZEFQSSh0b0ltcGwoYnVuZGxlUGFnZUdyb3VwKS0+aWRlbnRpZmllcigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlR3JvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuaAppbmRleCBlMGJmNjQ1Li44ZjFhODZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VHcm91cC5oCkBAIC0yNiwxNCArMjYsMzUgQEAKICNpZm5k
ZWYgV0tCdW5kbGVQYWdlR3JvdXBfaAogI2RlZmluZSBXS0J1bmRsZVBhZ2VHcm91cF9oCiAKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9X
S0Jhc2UuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisv
LyBXS0J1bmRsZVBhZ2VHcm91cENsaWVudAordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlR3Jv
dXBEaWRDcmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VHcm91
cFJlZiwgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0LCBXS0J1bmRsZUZyYW1lUmVmLCBXS0J1bmRs
ZVNjcmlwdFdvcmxkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAo
KldLQnVuZGxlUGFnZUdyb3VwV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xv
YmFsT2JqZWN0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZUdyb3VwUmVmLCBXS0J1bmRsZURPTVdpbmRv
d0V4dGVuc2lvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpX
S0J1bmRsZVBhZ2VHcm91cERpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2Jq
ZWN0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZUdyb3VwUmVmLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVu
c2lvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRs
ZVBhZ2VHcm91cFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uQ2Fs
bGJhY2spKFdLQnVuZGxlUGFnZUdyb3VwUmVmLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJl
ZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3N0cnVjdCBXS0J1bmRsZVBhZ2VHcm91cENs
aWVudCB7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsaWVudEluZm87CisgICAgCisgICAgV0tCdW5kbGVQYWdlR3JvdXBEaWRDcmVhdGVH
bG9iYWxPYmplY3RGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgIGRpZENyZWF0
ZUdsb2JhbE9iamVjdEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZUdyb3VwV2lsbERpc2Nvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0Q2FsbGJhY2sgICB3aWxsRGlzY29u
bmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3Q7CisgICAgV0tCdW5kbGVQYWdl
R3JvdXBEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdENhbGxiYWNr
ICAgICAgIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0OworICAg
IFdLQnVuZGxlUGFnZUdyb3VwV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRl
bnNpb25DYWxsYmFjayAgICAgICB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4
dGVuc2lvbjsKK307Cit0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VHcm91cENsaWVudCBXS0J1
bmRsZVBhZ2VHcm91cENsaWVudDsKKworZW51bSB7IGtXS0J1bmRsZVBhZ2VHcm91cENsaWVudEN1
cnJlbnRWZXJzaW9uID0gMCB9OworCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVQYWdlR3Jv
dXBHZXRUeXBlSUQoKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlR3JvdXBTZXRDbGll
bnQoV0tCdW5kbGVQYWdlR3JvdXBSZWYgYnVuZGxlUGFnZUdyb3VwLCBXS0J1bmRsZVBhZ2VHcm91
cENsaWVudCAqIGNsaWVudCk7CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVQYWdlR3Jv
dXBDb3B5SWRlbnRpZmllcihXS0J1bmRsZVBhZ2VHcm91cFJlZiBidW5kbGVQYWdlR3JvdXApOwog
CiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAppbmRleCAz
MmJlMjkwLi45YzFjNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5oCkBAIC0zNCw2
ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBBUElPYmplY3Q7CiBjbGFzcyBJ
bmplY3RlZEJ1bmRsZTsKK2NsYXNzIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOwor
Y2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ0OGU4NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCIKKworI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgor
I2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9ET01X
aW5kb3dFeHRlbnNpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKiwg
SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qPiBFeHRlbnNpb25NYXA7CitzdGF0aWMg
RXh0ZW5zaW9uTWFwJiBhbGxFeHRlbnNpb25zKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEV4dGVuc2lvbk1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30KKworUGFzc1JlZlB0
cjxJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbj4gSW5qZWN0ZWRCdW5kbGVET01XaW5k
b3dFeHRlbnNpb246OmNyZWF0ZShXZWJGcmFtZSogZnJhbWUsIEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQqIHdvcmxkKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb24oZnJhbWUsIHdvcmxkKSk7Cit9CisKK0luamVjdGVkQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6Z2V0KERP
TVdpbmRvd0V4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAgIEFTU0VSVChhbGxFeHRlbnNpb25z
KCkuY29udGFpbnMoZXh0ZW5zaW9uKSk7CisgICAgcmV0dXJuIGFsbEV4dGVuc2lvbnMoKS5nZXQo
ZXh0ZW5zaW9uKTsKK30KKworSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OkluamVj
dGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKFdlYkZyYW1lKiBmcmFtZSwgSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCogd29ybGQpCisgICAgOiBtX2NvcmVFeHRlbnNpb24oRE9NV2luZG93RXh0
ZW5zaW9uOjpjcmVhdGUoZnJhbWUtPmNvcmVGcmFtZSgpLCB3b3JsZC0+Y29yZVdvcmxkKCkpKQor
eworICAgIGFsbEV4dGVuc2lvbnMoKS5hZGQobV9jb3JlRXh0ZW5zaW9uLmdldCgpLCB0aGlzKTsK
K30KKworSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246On5JbmplY3RlZEJ1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbigpCit7CisgICAgQVNTRVJUKGFsbEV4dGVuc2lvbnMoKS5jb250YWlu
cyhtX2NvcmVFeHRlbnNpb24uZ2V0KCkpKTsKKyAgICBhbGxFeHRlbnNpb25zKCkucmVtb3ZlKG1f
Y29yZUV4dGVuc2lvbi5nZXQoKSk7Cit9CisKK1dlYkZyYW1lKiBJbmplY3RlZEJ1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbjo6ZnJhbWUoKSBjb25zdAoreworICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFt
ZSA9IG1fY29yZUV4dGVuc2lvbi0+ZnJhbWUoKTsKKyAgICByZXR1cm4gZnJhbWUgPyBzdGF0aWNf
Y2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT53
ZWJGcmFtZSgpIDogMDsKK30KKworSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogSW5qZWN0ZWRC
dW5kbGVET01XaW5kb3dFeHRlbnNpb246OndvcmxkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fd29y
bGQpCisgICAgICAgIG1fd29ybGQgPSBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNy
ZWF0ZShtX2NvcmVFeHRlbnNpb24tPndvcmxkKCkpOworICAgICAgICAKKyAgICByZXR1cm4gbV93
b3JsZC5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOWIwOWYwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24uaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbl9oCisj
ZGVmaW5lIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uX2gKKworI2luY2x1ZGUgIkFQ
SU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBET01XaW5kb3dFeHRlbnNpb247CisKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ7CitjbGFzcyBXZWJGcmFtZTsKKwor
Y2xhc3MgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24gOiBwdWJsaWMgQVBJT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUJ1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbjsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uPiBjcmVhdGUoV2ViRnJhbWUqLCBJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkKik7CisgICAgc3RhdGljIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBn
ZXQoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKik7CisKKyAgICB2aXJ0dWFsIH5JbmplY3Rl
ZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbigpIE9WRVJSSURFOworICAgIAorICAgIFdlYkZyYW1l
KiBmcmFtZSgpIGNvbnN0OworICAgIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkKCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBBUElUeXBlOyB9CisKKyAgICBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbihXZWJG
cmFtZSosIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqKTsKKworICAgIFJlZlB0cjxXZWJDb3Jl
OjpET01XaW5kb3dFeHRlbnNpb24+IG1fY29yZUV4dGVuc2lvbjsKKyAgICBtdXRhYmxlIFJlZlB0
cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBtX3dvcmxkOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlR3JvdXBDbGllbnQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZTFhMTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUdyb3VwQ2xpZW50LmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50Lmgi
CisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIgorI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNh
c3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlR3Jv
dXBDbGllbnQ6OmRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lKFdlYlBhZ2VHcm91cFByb3h5
KiBwYWdlR3JvdXAsIEpTT2JqZWN0UmVmIGdsb2JhbE9iamVjdCwgV2ViRnJhbWUqIGZyYW1lLCBX
ZWJDb3JlOjpET01XcmFwcGVyV29ybGQqIHdvcmxkKQoreworICAgIGlmICghbV9jbGllbnQuZGlk
Q3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gaW5qZWN0ZWRXb3JsZCA9IEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQ6OmdldE9yQ3JlYXRlKHdvcmxkKTsKKyAgICBtX2NsaWVudC5kaWRD
cmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZSh0b0FQSShwYWdlR3JvdXApLCBnbG9iYWxPYmplY3Qs
IHRvQVBJKGZyYW1lKSwgdG9BUEkoaW5qZWN0ZWRXb3JsZC5nZXQoKSksIG1fY2xpZW50LmNsaWVu
dEluZm8pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50Ojp3aWxsRGlz
Y29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoV2ViUGFnZUdyb3VwUHJv
eHkqIHBhZ2VHcm91cCwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKiBjb3JlRXh0ZW5zaW9u
KQoreworICAgIGlmICghbV9jbGllbnQud2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25G
cm9tR2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVET01XaW5kb3dFeHRlbnNpb24+IGV4dGVuc2lvbiA9IEluamVjdGVkQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uOjpnZXQoY29yZUV4dGVuc2lvbik7CisgICAgQVNTRVJUKGV4dGVuc2lvbik7
CisgICAgbV9jbGllbnQud2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFs
T2JqZWN0KHRvQVBJKHBhZ2VHcm91cCksIHRvQVBJKGV4dGVuc2lvbi5nZXQoKSksIG1fY2xpZW50
LmNsaWVudEluZm8pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50Ojpk
aWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChXZWJQYWdlR3JvdXBQ
cm94eSogcGFnZUdyb3VwLCBXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qIGNvcmVFeHRlbnNp
b24pCit7CisgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25U
b0dsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEluamVjdGVkQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBJbmplY3RlZEJ1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbjo6Z2V0KGNvcmVFeHRlbnNpb24pOworICAgIEFTU0VSVChleHRlbnNpb24pOwor
ICAgIG1fY2xpZW50LmRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0
KHRvQVBJKHBhZ2VHcm91cCksIHRvQVBJKGV4dGVuc2lvbi5nZXQoKSksIG1fY2xpZW50LmNsaWVu
dEluZm8pOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50Ojp3aWxsRGVz
dHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbihXZWJQYWdlR3JvdXBQcm94eSog
cGFnZUdyb3VwLCBXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qIGNvcmVFeHRlbnNpb24pCit7
CisgICAgaWYgKCFtX2NsaWVudC53aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4
dGVuc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbjo6Z2V0KGNvcmVFeHRlbnNpb24pOworICAgIEFTU0VSVChleHRlbnNpb24pOworICAgIG1f
Y2xpZW50LndpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKHRvQVBJ
KHBhZ2VHcm91cCksIHRvQVBJKGV4dGVuc2lvbi5nZXQoKSksIG1fY2xpZW50LmNsaWVudEluZm8p
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlR3JvdXBDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlR3JvdXBDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w
N2Y4YTZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudC5oCkBAIC0wLDAgKzEsNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50X2gK
KyNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVQYWdlR3JvdXBDbGllbnRfaAorCisjaW5jbHVkZSAiQVBJ
Q2xpZW50LmgiCisjaW5jbHVkZSAiV0tCdW5kbGVQYWdlR3JvdXAuaCIKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdpbmRvd0V4dGVu
c2lvbjsKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKKworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViRnJhbWU7CitjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKKworY2xhc3MgSW5q
ZWN0ZWRCdW5kbGVQYWdlR3JvdXBDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFn
ZUdyb3VwQ2xpZW50LCBrV0tCdW5kbGVQYWdlR3JvdXBDbGllbnRDdXJyZW50VmVyc2lvbj4gewor
cHVibGljOgorICAgIHZvaWQgZGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUoV2ViUGFnZUdy
b3VwUHJveHkqLCBKU09iamVjdFJlZiBnbG9iYWxPYmplY3QsIFdlYkZyYW1lKiwgV2ViQ29yZTo6
RE9NV3JhcHBlcldvcmxkKik7CisgICAgdm9pZCB3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVu
c2lvbkZyb21HbG9iYWxPYmplY3QoV2ViUGFnZUdyb3VwUHJveHkqLCBXZWJDb3JlOjpET01XaW5k
b3dFeHRlbnNpb24qKTsKKyAgICB2b2lkIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRv
R2xvYmFsT2JqZWN0KFdlYlBhZ2VHcm91cFByb3h5KiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5z
aW9uKik7CisgICAgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVu
c2lvbihXZWJQYWdlR3JvdXBQcm94eSosIFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBJbmplY3RlZEJ1bmRsZVBh
Z2VHcm91cENsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDlh
MmIyZTAuLjY0NzUzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0y
OCw2ICsyOCw4IEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIgogI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIgpA
QCAtMTM4Niw2ICsxMzg4LDYyIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCoKICNlbmRpZgogfQog
CisKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ2FuQ3JlYXRlR2xvYmFsT2Jq
ZWN0KERPTVdyYXBwZXJXb3JsZCogd29ybGQpCit7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBXZWJQYWdlR3JvdXBQcm94eSogZ3JvdXAgPSB3ZWJQYWdlLT5wYWdlR3JvdXAoKTsKKyAg
ICBpZiAoIWdyb3VwKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgSlNPYmplY3RSZWYgZ2xv
YmFsT2JqZWN0ID0gdG9SZWYobV9mcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLT5nbG9iYWxP
YmplY3Qod29ybGQpKTsKKyAgICAKKyAgICBncm91cC0+Y2xpZW50KCkuZGlkQ3JlYXRlR2xvYmFs
T2JqZWN0Rm9yRnJhbWUoZ3JvdXAsIGdsb2JhbE9iamVjdCwgbV9mcmFtZSwgd29ybGQpOworICAg
IAorfQorCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxEaXNjb25uZWN0
RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdChXZWJDb3JlOjpET01XaW5kb3dFeHRl
bnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFn
ZSgpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFdlYlBh
Z2VHcm91cFByb3h5KiBncm91cCA9IHdlYlBhZ2UtPnBhZ2VHcm91cCgpOworICAgIGlmICghZ3Jv
dXApCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgZ3JvdXAtPmNsaWVudCgpLndpbGxE
aXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdChncm91cCwgZXh0ZW5z
aW9uKTsKK30KKwordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChXZWJDb3JlOjpET01XaW5kb3dFeHRl
bnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFn
ZSgpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFdlYlBh
Z2VHcm91cFByb3h5KiBncm91cCA9IHdlYlBhZ2UtPnBhZ2VHcm91cCgpOworICAgIGlmICghZ3Jv
dXApCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgZ3JvdXAtPmNsaWVudCgpLmRpZFJl
Y29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KGdyb3VwLCBleHRlbnNpb24p
OworfQorCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxEZXN0cm95R2xv
YmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lv
biogZXh0ZW5zaW9uKQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7
CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgV2ViUGFnZUdy
b3VwUHJveHkqIGdyb3VwID0gd2ViUGFnZS0+cGFnZUdyb3VwKCk7CisgICAgaWYgKCFncm91cCkK
KyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBncm91cC0+Y2xpZW50KCkud2lsbERlc3Ry
b3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oZ3JvdXAsIGV4dGVuc2lvbik7Cit9
CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCAzYzdkNWJmLi44MDI0ZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0xOTIsNiArMTkyLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgb3ZlcnJpZGVN
ZWRpYVR5cGUoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKSBPVkVS
UklERTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hDYW5DcmVhdGVHbG9iYWxPYmpl
Y3QoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0
KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KFdl
YkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKFdlYkNv
cmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRv
Y3VtZW50RWxlbWVudEF2YWlsYWJsZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRQ
ZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKCkgY29uc3QgT1ZFUlJJREU7IC8vICJOYXZpZ2F0aW9uIiBo
ZXJlIG1lYW5zIGEgdHJhbnNpdGlvbiBmcm9tIG9uZSBwYWdlIHRvIGFub3RoZXIgdGhhdCBlbmRz
IHVwIGluIHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCmluZGV4IDNiZDIwYzgu
LjljNjBmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlR3JvdXBQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcApAQCAtNDUsNCArNDUsOSBAQCBXZWJQYWdlR3JvdXBQ
cm94eTo6fldlYlBhZ2VHcm91cFByb3h5KCkKIHsKIH0KIAordm9pZCBXZWJQYWdlR3JvdXBQcm94
eTo6aW5pdGlhbGl6ZUNsaWVudChXS0J1bmRsZVBhZ2VHcm91cENsaWVudCogY2xpZW50KQorewor
ICAgIG1fcGFnZUdyb3VwQ2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZUdyb3VwUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlR3JvdXBQcm94eS5oCmluZGV4IDkxZTZjNWMuLmVmYTY4YTMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHku
aApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJQYWdlR3JvdXBQcm94eV9oCiAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVu
dC5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogCkBAIC00NCw2ICs0NSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzVmlzaWJsZVRv
SW5qZWN0ZWRCdW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEudmlzaWJsZVRvSW5qZWN0ZWRC
dW5kbGU7IH0KICAgICBib29sIGlzVmlzaWJsZVRvSGlzdG9yeUNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS52aXNpYmxlVG9IaXN0b3J5Q2xpZW50OyB9CiAKKyAgICB2b2lkIGluaXRpYWxp
emVDbGllbnQoV0tCdW5kbGVQYWdlR3JvdXBDbGllbnQqKTsKKyAgICBJbmplY3RlZEJ1bmRsZVBh
Z2VHcm91cENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9wYWdlR3JvdXBDbGllbnQ7IH0KKyAg
ICAKIHByaXZhdGU6CiAgICAgV2ViUGFnZUdyb3VwUHJveHkoY29uc3QgV2ViUGFnZUdyb3VwRGF0
YSYgZGF0YSkKICAgICAgICAgOiBtX2RhdGEoZGF0YSkKQEAgLTUzLDYgKzU3LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KIAog
ICAgIFdlYlBhZ2VHcm91cERhdGEgbV9kYXRhOworICAgIEluamVjdGVkQnVuZGxlUGFnZUdyb3Vw
Q2xpZW50IG1fcGFnZUdyb3VwQ2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2ogYi9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKaW5kZXggZmI5NWE5ZC4uOTM0YTk1NSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLnZjcHJvagpAQCAtMjM1NCw2ICsyMzU0LDE0IEBACiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVj
dGVkQnVuZGxlXEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCIKKwkJCQkJPgor
CQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3Nc
SW5qZWN0ZWRCdW5kbGVcSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nl
c3NcSW5qZWN0ZWRCdW5kbGVcSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCIKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KQEAgLTI0MDIsNiArMjQxMCwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxl
PgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1
bmRsZVxJbmplY3RlZEJ1bmRsZVBhZ2VHcm91cENsaWVudC5jcHAiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVk
QnVuZGxlXEluamVjdGVkQnVuZGxlUGFnZUdyb3VwQ2xpZW50LmgiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVk
QnVuZGxlXEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAiCiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CkBAIC0yNDgwLDYgKzI0OTYsMTQgQEAKIAkJCQkJCQk+CiAJCQkJCQk8L0ZpbGU+CiAJ
CQkJCQk8RmlsZQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1
bmRsZVxBUElcY1xXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAiCisJCQkJCQkJPgorCQkJ
CQkJPC9GaWxlPgorCQkJCQkJPEZpbGUKKwkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nl
c3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCIKKwkJ
CQkJCQk+CisJCQkJCQk8L0ZpbGU+CisJCQkJCQk8RmlsZQogCQkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZUZyYW1lLmNwcCIKIAkJ
CQkJCQk+CiAJCQkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNDljMDM3Mi4uNTE2ZTQxMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA0LTA5
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTAxMjAxNTU+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODI2NjQKKyAgICAgICAgIE5lZWQgRE9NV2luZG93IG1lY2hhbmlzbSB0byBzdXBwbGVtZW50
IFVzZXJTY3JpcHRzIGZvciBwYWdlIGNhY2hlIG5vdGlmaWNhdGlvbnMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAgQWRkIGEgbmV3IGJ1bmRsZSB0ZXN0
IHRoYXQgc3RyZXNzZXMgdGhlIGJhc2ljcyBvZiB0aGUgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24gQVBJLgorCisgICAgICAgICBJdCBtYWtlcyBzdXJlIG5ldyBleHRlbnNpb25zIGNhbiBiZSBh
ZGRlZCBhdCB0aGUgcmlnaHQgdGltZXMsIGFuZCB0aGF0IGFsbCBvZiB0aGUgZXhwZWN0ZWQKKyAg
ICAgICAgIGNhbGxiYWNrcyBhcmUgbWFkZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHA6IEFkZGVkLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOiBSZWNv
cmQgYWxsIG1lc3NhZ2VzIHNlbnQgZnJvbSB0aGUgYnVuZGxlLgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6IFJ1biBhIHBhZ2UgdGhyb3VnaCBzb21lIGJhc2ljIGV4ZXJjaXNlcywgdGhl
biBjb21wYXJlZCBtZXNzYWdlcyBzZW50IGZyb20gdGhlCisgICAgICAgICAgIGJ1bmRsZSB0byBh
IHNldCBvZiBrbm93biBleHBlY3RlZCBtZXNzYWdlcy4KKworICAgICAgICAgTGlzdGVuIHRvIGFs
bCB0aGUgQnVuZGxlUGFnZUdyb3VwIGNsaWVudCBjYWxsYmFja3MsIGNyZWF0ZSBzb21lIGV4dGVu
c2lvbnMsIGFuZCBtb25pdG9yIHRoZWlyIGxpZmV0aW1lczoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcDogQWRk
ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6RE9N
V2luZG93RXh0ZW5zaW9uQmFzaWMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93
RXh0ZW5zaW9uQmFzaWM6OmZyYW1lTG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpzZW5kRXh0ZW5zaW9uU3RhdGVNZXNzYWdlKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjppbml0aWFs
aXplKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpk
aWRDcmVhdGVQYWdlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRPTVdpbmRvd0V4dGVuc2lv
bkJhc2ljOjp1cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29yZCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6c2VuZEJ1bmRsZU1lc3NhZ2UpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OmRpZENyZWF0ZUdsb2Jh
bE9iamVjdEZvckZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljOjp3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmpl
Y3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OmRp
ZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjp3aWxsRGVzdHJveUdsb2JhbE9i
amVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRG
aW5pc2hMb2FkRm9yRnJhbWVDYWxsYmFjayk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRD
cmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZUNhbGxiYWNrKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OndpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdENhbGxi
YWNrKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVu
c2lvblRvR2xvYmFsT2JqZWN0Q2FsbGJhY2spOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2ls
bERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb25DYWxsYmFjayk6CisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNpYy5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZSk6IE1ha2UgdGhpcyBtZXRob2Qgc3RhdGljLCBhcyBpdCBhbHdheXMgc2hvdWxkIGhh
dmUgYmVlbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEyLTA0LTA5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIGFkZCBhIHdlYmtpdC1wYXRjaCBwcmludC1iYXNlbGlu
ZXMgY29tbWFuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMTE2Yzc1Li4zYTE4NzIzIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzgsNiArMzgsOCBAQAogCQk0NDBBMUQzOTE0QTAx
MDNBMDA4QTY2RjIgLyogS1VSTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NDBBMUQzODE0QTAxMDNBMDA4QTY2RjIgLyogS1VSTC5jcHAgKi87IH07
CiAJCTRCRkRGRkE3MTMxNDc3NkMwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9C
dW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEJGREZGQTYxMzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRs
ZS5jcHAgKi87IH07CiAJCTRCRkRGRkE5MTMxNDc3NzcwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0
Tm9kZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0QkZERkZBODEzMTQ3Nzc3MDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGUu
Y3BwICovOyB9OworCQk1MTM5M0UyMDE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5z
aW9uQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEzOTNFMUUxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNw
cCAqLzsgfTsKKwkJNTEzOTNFMjIxNTIzOTUyRDAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lv
bkJhc2ljX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTM5M0UxRDE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFz
aWNfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNTE0MkIyNzExNTE3Qzg4QjAwQzMyQjE5IC8qIENvbnRl
eHRNZW51Q2FuQ29weVVSTC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNDJCMjcwMTUxN0M4OEIwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlV
UkwubW0gKi87IH07CiAJCTUxNDJCMjczMTUxN0M4QzgwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNh
bkNvcHlVUkwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTQyQjI3MjE1MTdDODkxMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5
VVJMLmh0bWwgKi87IH07CiAJCTUxN0U3REZDMTUxMTBFQTYwMEQwQjAwOCAvKiBNZW1vcnlDYWNo
ZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFN0RGQjE1MTEwRUE2MDBEMEIwMDggLyogTWVt
b3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tICovOyB9OwpAQCAtMjI4
LDYgKzIzMCw4IEBACiAJCTQ0QTYyMkMxMTRBMEUyQjYwMDQ4NTE1QiAvKiBXVEZTdHJpbmdVdGls
aXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV1RGU3RyaW5nVXRpbGl0
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCRkRGRkE2MTMxNDc3NkMwMDYx
RjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJGREZGQTgxMzE0Nzc3NzAwNjFGMjRC
IC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTEzOTNFMUQxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MTM5M0UxRTE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9u
QmFzaWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93
RXh0ZW5zaW9uQmFzaWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQyQjI3
MDE1MTdDODhCMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQyQjI3MjE1MTdDODkxMDBDMzJCMTkgLyog
Q29udGV4dE1lbnVDYW5Db3B5VVJMLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBD
b250ZXh0TWVudUNhbkNvcHlVUkwuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE3RTdERkIxNTExMEVBNjAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ4NCw2ICs0ODgsOCBAQAogCQkJCUJDMjQ2RDk4MTMyRjFG
RTEwMEI1NkQ3QyAvKiBDYW5IYW5kbGVSZXF1ZXN0LmNwcCAqLywKIAkJCQlCQzI0NkQ5NzEzMkYx
RkUxMDBCNTZEN0MgLyogQ2FuSGFuZGxlUmVxdWVzdF9CdW5kbGUuY3BwICovLAogCQkJCUY2RjNG
MjkwMTMzNDJGRUIwMEE2QkYxOSAvKiBDb29raWVNYW5hZ2VyLmNwcCAqLywKKwkJCQk1MTM5M0Ux
RTE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwICovLAorCQkJ
CTUxMzkzRTFEMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5k
bGUuY3BwICovLAogCQkJCUJDQjY4MDNGMTI2RkJGRTEwMDY0MkE2MSAvKiBEb2N1bWVudFN0YXJ0
VXNlclNjcmlwdEFsZXJ0Q3Jhc2guY3BwICovLAogCQkJCUJDQjY4MDQxMTI2RkJGRjEwMDY0MkE2
MSAvKiBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hfQnVuZGxlLmNwcCAqLywKIAkJ
CQlDMDQ1Rjk0NDEzODVDMkU5MDBDMEYzQ0QgLyogRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNy
YXNoLmNwcCAqLywKQEAgLTgzOSw2ICs4NDUsNyBAQAogCQkJCTUxRkJCQjREMTUxM0Q0RTkwMDgy
MjczOCAvKiBXZWJWaWV3Q2FuUGFzdGVVUkwubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTQyQjI3
MTE1MTdDODhCMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzU0MEY3NzYxNTJFNERBMDAwQTQwQzhDIC8qIFNpbXBsaWZ5TWFya3VwLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTEzOTNFMjAxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4
dGVuc2lvbkJhc2ljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtODY3LDYgKzg3NCw3IEBACiAJCQkJ
OTNGN0U4NkYxNERDOEU1QzAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZyYW1lc19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMkQzMTkxNERDNjhCOTAw
RkZCMUREIC8qIFVzZXJNZXNzYWdlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0FG
NEVDRTE1MDZGMDY0MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
SW1hZ2VzX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTM5M0UyMjE1MjM5NTJEMDA1
RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRv
d0V4dGVuc2lvbkJhc2ljLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9E
T01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNDhiNjJiOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAKQEAgLTAsMCArMSwxNDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0Lmgi
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCBmaW5pc2hlZDsK
K3N0YXRpYyBpbnQgbGl2ZURPTUV4dGVuc2lvbkNvdW50OworCitzdGF0aWMgY29uc3QgY2hhciog
ZXhwZWN0ZWRNZXNzYWdlc1tdID0geworIkRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lIGNh
bGxlZCIsCisiRGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUgY2FsbGVkIiwKKyJEaWRDcmVh
dGVHbG9iYWxPYmplY3RGb3JGcmFtZSBjYWxsZWQiLAorIkRpZENyZWF0ZUdsb2JhbE9iamVjdEZv
ckZyYW1lIGNhbGxlZCIsCisiU3ViZnJhbWUgZmluaXNoZWQgbG9hZGluZyIsCisiRXh0ZW5zaW9u
IHN0YXRlczpcbkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gQ29ubmVj
dGVkXG5GaXJzdCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0
ZWRcbkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuRmly
c3QgcGFnZSwgc3ViZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuU2Vjb25k
IHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gVW5jcmVhdGVkXG5TZWNvbmQgcGFn
ZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gVW5jcmVhdGVkIiwKKyJNYWluIGZy
YW1lIGZpbmlzaGVkIGxvYWRpbmciLAorIkV4dGVuc2lvbiBzdGF0ZXM6XG5GaXJzdCBwYWdlLCBt
YWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuRmlyc3QgcGFnZSwgbWFpbiBm
cmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5GaXJzdCBwYWdlLCBzdWJmcmFt
ZSwgc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBub24t
c3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcblNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBzdGFu
ZGFyZCB3b3JsZCAtIFVuY3JlYXRlZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUsIG5vbi1zdGFu
ZGFyZCB3b3JsZCAtIFVuY3JlYXRlZCIsCisiV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNp
b25Gcm9tR2xvYmFsT2JqZWN0IGNhbGxlZCIsCisiV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Gcm9tR2xvYmFsT2JqZWN0IGNhbGxlZCIsCisiV2lsbERpc2Nvbm5lY3RET01XaW5kb3dF
eHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0IGNhbGxlZCIsCisiV2lsbERpc2Nvbm5lY3RET01XaW5k
b3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0IGNhbGxlZCIsCisiRGlkQ3JlYXRlR2xvYmFsT2Jq
ZWN0Rm9yRnJhbWUgY2FsbGVkIiwKKyJEaWRDcmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZSBjYWxs
ZWQiLAorIk1haW4gZnJhbWUgZmluaXNoZWQgbG9hZGluZyIsCisiRXh0ZW5zaW9uIHN0YXRlczpc
bkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gRGlzY29ubmVjdGVkXG5G
aXJzdCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBEaXNjb25uZWN0ZWRc
bkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIERpc2Nvbm5lY3RlZFxuRmly
c3QgcGFnZSwgc3ViZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIERpc2Nvbm5lY3RlZFxuU2Vj
b25kIHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5TZWNvbmQg
cGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkIiwKKyJXaWxs
RGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QgY2FsbGVkIiwKKyJX
aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QgY2FsbGVkIiwK
KyJEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCBjYWxsZWQiLAor
IkRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0IGNhbGxlZCIsCisi
RGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QgY2FsbGVkIiwKKyJE
aWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCBjYWxsZWQiLAorIk1h
aW4gZnJhbWUgZmluaXNoZWQgbG9hZGluZyIsCisiRXh0ZW5zaW9uIHN0YXRlczpcbkZpcnN0IHBh
Z2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5GaXJzdCBwYWdlLCBt
YWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0IHBhZ2UsIHN1
YmZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUs
IG5vbi1zdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUs
IHN0YW5kYXJkIHdvcmxkIC0gRGlzY29ubmVjdGVkXG5TZWNvbmQgcGFnZSwgbWFpbiBmcmFtZSwg
bm9uLXN0YW5kYXJkIHdvcmxkIC0gRGlzY29ubmVjdGVkIiwKKyJXaWxsRGVzdHJveUdsb2JhbE9i
amVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbiBjYWxsZWQiLAorIldpbGxEZXN0cm95R2xvYmFsT2Jq
ZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uIGNhbGxlZCIsCisiV2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RGb3JET01XaW5kb3dFeHRlbnNpb24gY2FsbGVkIiwKKyJXaWxsRGVzdHJveUdsb2JhbE9iamVj
dEZvckRPTVdpbmRvd0V4dGVuc2lvbiBjYWxsZWQiLAorIldpbGxEZXN0cm95R2xvYmFsT2JqZWN0
Rm9yRE9NV2luZG93RXh0ZW5zaW9uIGNhbGxlZCIsCisiV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RG
b3JET01XaW5kb3dFeHRlbnNpb24gY2FsbGVkIiwKKyJFeHRlbnNpb24gc3RhdGVzOlxuRmlyc3Qg
cGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBEZXN0cm95ZWRcbkZpcnN0IHBhZ2Us
IG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIERlc3Ryb3llZFxuRmlyc3QgcGFnZSwg
c3ViZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5GaXJzdCBwYWdlLCBzdWJmcmFt
ZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5TZWNvbmQgcGFnZSwgbWFpbiBmcmFt
ZSwgc3RhbmRhcmQgd29ybGQgLSBEZXN0cm95ZWRcblNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBu
b24tc3RhbmRhcmQgd29ybGQgLSBEZXN0cm95ZWQiLAorIlRlc3RDb21wbGV0ZSIKK307CisKK3N0
YXRpYyBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+ID4gbWVzc2FnZXM7CisKK3N0YXRp
YyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwg
V0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9p
ZCopCit7CisgICAgQVNTRVJUX05PVF9OVUxMKG1lc3NhZ2VCb2R5KTsKKyAgICBFWFBFQ1RfRVEo
V0tTdHJpbmdHZXRUeXBlSUQoKSwgV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpKTsKKworICAgIFdL
U3RyaW5nUmVmIGJvZHlTdHJpbmcgPSAoV0tTdHJpbmdSZWYpbWVzc2FnZUJvZHk7CisgICAgbWVz
c2FnZXMuYXBwZW5kKGJvZHlTdHJpbmcpOworICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUi
KSkKKyAgICAgICAgbGl2ZURPTUV4dGVuc2lvbkNvdW50Kys7CisgICAgZWxzZSBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIldpbGxEZXN0cm95R2xvYmFsT2Jq
ZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uIikpIHsKKyAgICAgICAgbGl2ZURPTUV4dGVuc2lvbkNv
dW50LS07CisgICAgICAgIGlmICghbGl2ZURPTUV4dGVuc2lvbkNvdW50KQorICAgICAgICAgICAg
ZmluaXNoZWQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIkRpZEZpbmlzaExvYWRGb3JNYWluRnJhbWUiKSB8fCBXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiVGVzdENvbXBsZXRlIikpCisgICAg
ICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICAKK30KKworVEVTVChXZWJLaXQyLCBET01XaW5kb3dF
eHRlbnNpb25CYXNpYykKK3sKKyAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdy
b3VwKEFkb3B0V0ssIFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljUGFnZUdyb3VwIikpKTsg
CisKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6
Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiRE9NV2luZG93RXh0ZW5zaW9uQmFz
aWMiLCBwYWdlR3JvdXAuZ2V0KCkpKTsKKworICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50IGluamVjdGVkQnVuZGxlQ2xpZW50OworICAgIG1lbXNldCgmaW5qZWN0ZWRCdW5kbGVDbGll
bnQsIDAsIHNpemVvZihpbmplY3RlZEJ1bmRsZUNsaWVudCkpOworICAgIGluamVjdGVkQnVuZGxl
Q2xpZW50LnZlcnNpb24gPSAwOworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmNsaWVudEluZm8g
PSAwOworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisgICAgV0tD
b250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgJmluamVjdGVkQnVu
ZGxlQ2xpZW50KTsKKyAgICAKKyAgICAvLyBUaGUgZGVmYXVsdCBjYWNoZSBtb2RlbCBoYXMgYSBj
YXBhY2l0eSBvZiAwLCBzbyBpdCBpcyBuZWNlc3NhcnkgdG8gc3dpdGNoIHRvIGEgY2FjaGUKKyAg
ICAvLyBtb2RlbCB0aGF0IGFjdHVhbGx5IGFsbG93cyBmb3IgYSBwYWdlIGNhY2hlLgorICAgIFdL
Q29udGV4dFNldENhY2hlTW9kZWwoY29udGV4dC5nZXQoKSwga1dLQ2FjaGVNb2RlbERvY3VtZW50
QnJvd3Nlcik7CisKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpLCBw
YWdlR3JvdXAuZ2V0KCkpOworICAgIAorICAgIC8vIE1ha2Ugc3VyZSB0aGUgZXh0ZW5zaW9ucyBm
b3IgZWFjaCBmcmFtZSBhcmUgaW5zdGFsbGVkIGluIGVhY2ggd29ybGQuCisgICAgV0tSZXRhaW5Q
dHI8V0tVUkxSZWY+IHVybDEoQWRvcHRXSywgVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNp
bXBsZS1pZnJhbWUiLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgp
LCB1cmwxLmdldCgpKTsKKworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIGZpbmlzaGVk
ID0gZmFsc2U7CisgICAgCisgICAgLy8gTWFrZSBzdXJlIHRob3NlIGZpcnN0IDQgZXh0ZW5zaW9u
cyBhcmUgZGlzY29ubmVjdGVkLCBhbmQgMiBuZXcgb25lcyBhcmUgaW5zdGFsbGVkLgorICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiB1cmwyKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291
cmNlKCJzaW1wbGUiLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgp
LCB1cmwyLmdldCgpKTsKKworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIGZpbmlzaGVk
ID0gZmFsc2U7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhvc2UgdHdvIGFyZSBkaXNjb25uZWN0ZWQs
IGFuZCB0aGUgZmlyc3QgZm91ciBhcmUgcmVjb25uZWN0ZWQuCisgICAgV0tQYWdlR29CYWNrKHdl
YlZpZXcucGFnZSgpKTsKKworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIGZpbmlzaGVk
ID0gZmFsc2U7CisgICAgCisgICAgLy8gTWFrZSBzdXJlIHRoZSAyIGRpc2Nvbm5lY3RlZCBleHRl
bnNpb25zIGluIHRoZSBwYWdlIGNhY2hlIGFuZCB0aGUgNCBhY3RpdmUgZXh0ZW5zaW9ucyBhcmUg
YWxsIGRlc3Ryb3llZC4KKyAgICBXS1BhZ2VDbG9zZSh3ZWJWaWV3LnBhZ2UoKSk7CisKKyAgICBV
dGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICAgICAgCisgICAgY29uc3Qgc2l6ZV90IGV4cGVjdGVk
U2l6ZSA9IHNpemVvZihleHBlY3RlZE1lc3NhZ2VzKSAvIHNpemVvZihjb25zdCBjaGFyKik7Cisg
ICAgRVhQRUNUX0VRKG1lc3NhZ2VzLnNpemUoKSwgZXhwZWN0ZWRTaXplKTsKKyAgICAKKyAgICBp
ZiAobWVzc2FnZXMuc2l6ZSgpICE9IGV4cGVjdGVkU2l6ZSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVzc2FnZXMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIEVYUEVDVF9FUShXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VzW2ldLmdl
dCgpLCBleHBlY3RlZE1lc3NhZ2VzW2ldKSwgdHJ1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y3ZjlhZAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNp
Y19CdW5kbGUuY3BwCkBAIC0wLDAgKzEsMjYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgorI2luY2x1ZGUgPFdlYktp
dDIvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVu
ZGxlRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZS5oPgorI2luY2x1ZGUg
PFdlYktpdDIvV0tCdW5kbGVQYWdlR3JvdXAuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxl
UHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVTY3JpcHRXb3JsZC5oPgorI2lu
Y2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWVDYWxs
YmFjayhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdLVHlwZVJlZiosIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOworc3RhdGljIHZvaWQgZGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9y
RnJhbWVDYWxsYmFjayhXS0J1bmRsZVBhZ2VHcm91cFJlZiwgSlNPYmplY3RSZWYsIFdLQnVuZGxl
RnJhbWVSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Oworc3RhdGljIHZvaWQgd2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFs
T2JqZWN0Q2FsbGJhY2soV0tCdW5kbGVQYWdlR3JvdXBSZWYsIFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3N0YXRpYyB2b2lkIGRpZFJlY29u
bmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0Q2FsbGJhY2soV0tCdW5kbGVQYWdl
R3JvdXBSZWYsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKK3N0YXRpYyB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93
RXh0ZW5zaW9uQ2FsbGJhY2soV0tCdW5kbGVQYWdlR3JvdXBSZWYsIFdLQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworCitlbnVtIEV4dGVuc2lv
blN0YXRlIHsKKyAgICBVbmNyZWF0ZWQgPSAwLCBDb25uZWN0ZWQsIERpc2Nvbm5lY3RlZCwgRGVz
dHJveWVkCit9OworCitjb25zdCBjaGFyKiBzdGF0ZU5hbWVzWzRdID0geworICAgICJVbmNyZWF0
ZWQiLAorICAgICJDb25uZWN0ZWQiLAorICAgICJEaXNjb25uZWN0ZWQiLAorICAgICJEZXN0cm95
ZWQiCit9OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICBF
eHRlbnNpb25TdGF0ZSBzdGF0ZTsKK30gRXh0ZW5zaW9uUmVjb3JkOworICAgIAorY2xhc3MgRE9N
V2luZG93RXh0ZW5zaW9uQmFzaWMgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1Ymxp
YzoKKyAgICBET01XaW5kb3dFeHRlbnNpb25CYXNpYyhjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRp
Zmllcik7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoV0tCdW5kbGVSZWYsIFdL
VHlwZVJlZiB1c2VyRGF0YSk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5k
bGVSZWYsIFdLQnVuZGxlUGFnZVJlZik7CisgICAgCisgICAgdm9pZCBkaWRDcmVhdGVHbG9iYWxP
YmplY3RGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmKTsK
KyAgICB2b2lkIHdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVj
dChXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZik7CisgICAgdm9pZCBkaWRSZWNvbm5lY3RE
T01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lv
blJlZik7CisgICAgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVu
c2lvbihXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZik7CisKKyAgICB2b2lkIGZyYW1lTG9h
ZEZpbmlzaGVkKFdLQnVuZGxlRnJhbWVSZWYpOworCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRl
RXh0ZW5zaW9uU3RhdGVSZWNvcmQoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIEV4dGVu
c2lvblN0YXRlKTsKKyAgICB2b2lkIHNlbmRFeHRlbnNpb25TdGF0ZU1lc3NhZ2UoKTsKKyAgICB2
b2lkIHNlbmRCdW5kbGVNZXNzYWdlKGNvbnN0IGNoYXIqKTsKKworICAgIFdLQnVuZGxlUGFnZUdy
b3VwUmVmIG1fcGFnZUdyb3VwOworICAgIFdLQnVuZGxlUmVmIG1fYnVuZGxlOworICAgIEV4dGVu
c2lvblJlY29yZCBtX2V4dGVuc2lvblJlY29yZHNbNl07CisgICAgSGFzaE1hcDxXS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvblJlZiwgaW50PiBtX2V4dGVuc2lvblRvUmVjb3JkTWFwOworICAgIGJv
b2wgbV9maW5pc2hlZE9uZU1haW5GcmFtZUxvYWQ7CisgICAgaW50IG1fbnVtYmVyT2ZEZXN0cm95
ZWRFeHRlbnNpb25zOworfTsKKworc3RhdGljIEluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8
RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM+IHJlZ2lzdHJhcigiRE9NV2luZG93RXh0ZW5zaW9uQmFz
aWMiKTsKKworRE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OkRPTVdpbmRvd0V4dGVuc2lvbkJhc2lj
KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQorICAgIDogSW5qZWN0ZWRCdW5kbGVUZXN0
KGlkZW50aWZpZXIpCisgICAgLCBtX2ZpbmlzaGVkT25lTWFpbkZyYW1lTG9hZChmYWxzZSkKKyAg
ICAsIG1fbnVtYmVyT2ZEZXN0cm95ZWRFeHRlbnNpb25zKDApCit7CisgICAgbV9leHRlbnNpb25S
ZWNvcmRzWzBdLm5hbWUgPSAiRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQi
OworICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1sxXS5uYW1lID0gIkZpcnN0IHBhZ2UsIG1haW4gZnJh
bWUsIG5vbi1zdGFuZGFyZCB3b3JsZCI7CisgICAgbV9leHRlbnNpb25SZWNvcmRzWzJdLm5hbWUg
PSAiRmlyc3QgcGFnZSwgc3ViZnJhbWUsIHN0YW5kYXJkIHdvcmxkIjsKKyAgICBtX2V4dGVuc2lv
blJlY29yZHNbM10ubmFtZSA9ICJGaXJzdCBwYWdlLCBzdWJmcmFtZSwgbm9uLXN0YW5kYXJkIHdv
cmxkIjsKKyAgICBtX2V4dGVuc2lvblJlY29yZHNbNF0ubmFtZSA9ICJTZWNvbmQgcGFnZSwgbWFp
biBmcmFtZSwgc3RhbmRhcmQgd29ybGQiOworICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1s1XS5uYW1l
ID0gIlNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQiOworICAgIAor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNjsgKytpKQorICAgICAgICBtX2V4dGVuc2lvblJl
Y29yZHNbaV0uc3RhdGUgPSBVbmNyZWF0ZWQ7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9u
QmFzaWM6OmZyYW1lTG9hZEZpbmlzaGVkKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCit7CisgICAg
Ym9vbCBtYWluRnJhbWUgPSAhV0tCdW5kbGVGcmFtZUdldFBhcmVudEZyYW1lKGZyYW1lKTsKKyAg
ICBpZiAobWFpbkZyYW1lKQorICAgICAgICBtX2ZpbmlzaGVkT25lTWFpbkZyYW1lTG9hZCA9IHRy
dWU7CisKKyAgICBjaGFyIGJvZHlbMTYzODRdOworICAgIHNwcmludGYoYm9keSwgIiVzIGZpbmlz
aGVkIGxvYWRpbmciLCBtYWluRnJhbWUgPyAiTWFpbiBmcmFtZSIgOiAiU3ViZnJhbWUiKTsKKyAg
ICAKKyAgICAvLyBPbmx5IGNvbnNpZGVyIGxvYWQgZmluaXNoZWQgZm9yIHRoZSBtYWluIGZyYW1l
CisgICAgY29uc3QgY2hhciogbmFtZSA9IG1haW5GcmFtZSA/ICJEaWRGaW5pc2hMb2FkRm9yTWFp
bkZyYW1lIiA6ICJEaWRGaW5pc2hMb2FkRm9yRnJhbWUiOworCisgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhuYW1lKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VCb2R5ID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhib2R5KSk7CisgICAgV0tCdW5k
bGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5Lmdl
dCgpKTsKKyAgICAKKyAgICBzZW5kRXh0ZW5zaW9uU3RhdGVNZXNzYWdlKCk7Cit9CisKK3ZvaWQg
RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OnNlbmRFeHRlbnNpb25TdGF0ZU1lc3NhZ2UoKQorewor
ICAgIGNoYXIgYm9keVsxNjM4NF07CisgICAgc3ByaW50Zihib2R5LCAiRXh0ZW5zaW9uIHN0YXRl
czpcbiVzIC0gJXNcbiVzIC0gJXNcbiVzIC0gJXNcbiVzIC0gJXNcbiVzIC0gJXNcbiVzIC0gJXMi
LAorICAgICAgICBtX2V4dGVuc2lvblJlY29yZHNbMF0ubmFtZSwgc3RhdGVOYW1lc1ttX2V4dGVu
c2lvblJlY29yZHNbMF0uc3RhdGVdLAorICAgICAgICBtX2V4dGVuc2lvblJlY29yZHNbMV0ubmFt
ZSwgc3RhdGVOYW1lc1ttX2V4dGVuc2lvblJlY29yZHNbMV0uc3RhdGVdLAorICAgICAgICBtX2V4
dGVuc2lvblJlY29yZHNbMl0ubmFtZSwgc3RhdGVOYW1lc1ttX2V4dGVuc2lvblJlY29yZHNbMl0u
c3RhdGVdLAorICAgICAgICBtX2V4dGVuc2lvblJlY29yZHNbM10ubmFtZSwgc3RhdGVOYW1lc1tt
X2V4dGVuc2lvblJlY29yZHNbM10uc3RhdGVdLAorICAgICAgICBtX2V4dGVuc2lvblJlY29yZHNb
NF0ubmFtZSwgc3RhdGVOYW1lc1ttX2V4dGVuc2lvblJlY29yZHNbNF0uc3RhdGVdLAorICAgICAg
ICBtX2V4dGVuc2lvblJlY29yZHNbNV0ubmFtZSwgc3RhdGVOYW1lc1ttX2V4dGVuc2lvblJlY29y
ZHNbNV0uc3RhdGVdKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFt
ZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV4dGVuc2lvblN0YXRl
cyIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJvZHkpKTsKKyAgICBXS0J1bmRsZVBvc3RN
ZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwor
fQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjppbml0aWFsaXplKFdLQnVuZGxlUmVm
IGJ1bmRsZSwgV0tUeXBlUmVmIHVzZXJEYXRhKQoreworICAgIGFzc2VydChXS0dldFR5cGVJRCh1
c2VyRGF0YSkgPT0gV0tCdW5kbGVQYWdlR3JvdXBHZXRUeXBlSUQoKSk7CisgICAgV0tCdW5kbGVQ
YWdlR3JvdXBSZWYgcGFnZUdyb3VwID0gc3RhdGljX2Nhc3Q8V0tCdW5kbGVQYWdlR3JvdXBSZWY+
KHVzZXJEYXRhKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzb3VyY2UoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImFsZXJ0KCdVbmltcG9ydGFudCBhbGVy
dCcpOyIpKTsKKyAgICBXS0J1bmRsZUFkZFVzZXJTY3JpcHQoYnVuZGxlLCBwYWdlR3JvdXAsIFdL
QnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCgpLCBzb3VyY2UuZ2V0KCksIDAsIDAsIDAsIGtX
S0luamVjdEF0RG9jdW1lbnRTdGFydCwga1dLSW5qZWN0SW5BbGxGcmFtZXMpOworICAgIAorICAg
IFdLQnVuZGxlUGFnZUdyb3VwQ2xpZW50IGNsaWVudDsKKyAgICBjbGllbnQudmVyc2lvbiA9IGtX
S0J1bmRsZVBhZ2VHcm91cENsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIGNsaWVudC5jbGllbnRJ
bmZvID0gdGhpczsKKyAgICBjbGllbnQuZGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUgPSBk
aWRDcmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZUNhbGxiYWNrOworICAgIGNsaWVudC53aWxsRGlz
Y29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QgPSB3aWxsRGlzY29ubmVj
dERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3RDYWxsYmFjazsKKyAgICBjbGllbnQu
ZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QgPSBkaWRSZWNvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdENhbGxiYWNrOworICAgIGNsaWVudC53
aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbiA9IHdpbGxEZXN0cm95
R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uQ2FsbGJhY2s7CisgICAgCisgICAgV0tC
dW5kbGVQYWdlR3JvdXBTZXRDbGllbnQocGFnZUdyb3VwLCAmY2xpZW50KTsKK30KKwordm9pZCBE
T01XaW5kb3dFeHRlbnNpb25CYXNpYzo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUs
IFdLQnVuZGxlUGFnZVJlZiBwYWdlKQoreyAgICAKKyAgICBtX2J1bmRsZSA9IGJ1bmRsZTsKKwor
ICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBwYWdlTG9hZGVyQ2xpZW50OworICAgIG1lbXNl
dCgmcGFnZUxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKHBhZ2VMb2FkZXJDbGllbnQpKTsKKyAgICAK
KyAgICBwYWdlTG9hZGVyQ2xpZW50LnZlcnNpb24gPSAxOworICAgIHBhZ2VMb2FkZXJDbGllbnQu
Y2xpZW50SW5mbyA9IHRoaXM7CisgICAgcGFnZUxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9y
RnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWVDYWxsYmFjazsKKyAgICAKKyAgICBXS0J1bmRs
ZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZwYWdlTG9hZGVyQ2xpZW50KTsKK30KKyAg
ICAKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OnVwZGF0ZUV4dGVuc2lvblN0YXRlUmVj
b3JkKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiwgRXh0ZW5zaW9uU3Rh
dGUgc3RhdGUpCit7CisgICAgaW50IGluZGV4ID0gbV9leHRlbnNpb25Ub1JlY29yZE1hcC5nZXQo
ZXh0ZW5zaW9uKTsKKyAgICBtX2V4dGVuc2lvblJlY29yZHNbaW5kZXhdLnN0YXRlID0gc3RhdGU7
Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OnNlbmRCdW5kbGVNZXNzYWdlKGNv
bnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTWVz
c2FnZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobWVzc2FnZSkpOwor
ICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIHdrTWVzc2FnZS5nZXQoKSwgd2tNZXNz
YWdlLmdldCgpKTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6ZGlkQ3JlYXRl
R2xvYmFsT2JqZWN0Rm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3Jp
cHRXb3JsZFJlZiB3b3JsZCkKK3sKKyAgICBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBl
eHRlbnNpb24gPSBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkNyZWF0ZShmcmFtZSwgd29ybGQp
OworCisgICAgaW50IGluZGV4OworICAgIGJvb2wgc3RhbmRhcmQ7CisgICAgc3RhbmRhcmQgPSB3
b3JsZCA9PSBXS0J1bmRsZVNjcmlwdFdvcmxkTm9ybWFsV29ybGQoKTsKKworICAgIGlmIChXS0J1
bmRsZUZyYW1lR2V0UGFyZW50RnJhbWUoZnJhbWUpKQorICAgICAgICBpbmRleCA9IHN0YW5kYXJk
ID8gMiA6IDM7CisgICAgZWxzZQorICAgICAgICBpbmRleCA9IG1fZmluaXNoZWRPbmVNYWluRnJh
bWVMb2FkID8gKHN0YW5kYXJkID8gNCA6IDUpIDogKHN0YW5kYXJkID8gMCA6IDEpOworCisgICAg
bV9leHRlbnNpb25Ub1JlY29yZE1hcC5zZXQoZXh0ZW5zaW9uLCBpbmRleCk7CisKKyAgICB1cGRh
dGVFeHRlbnNpb25TdGF0ZVJlY29yZChleHRlbnNpb24sIENvbm5lY3RlZCk7CisgICAgc2VuZEJ1
bmRsZU1lc3NhZ2UoIkRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lIGNhbGxlZCIpOworfQor
Cit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjp3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4
dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0
ZW5zaW9uKQoreworICAgIHVwZGF0ZUV4dGVuc2lvblN0YXRlUmVjb3JkKGV4dGVuc2lvbiwgRGlz
Y29ubmVjdGVkKTsKKyAgICBzZW5kQnVuZGxlTWVzc2FnZSgiV2lsbERpc2Nvbm5lY3RET01XaW5k
b3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0IGNhbGxlZCIpOworfQorCit2b2lkIERPTVdpbmRv
d0V4dGVuc2lvbkJhc2ljOjpkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9i
amVjdChXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24pCit7CisgICAgdXBk
YXRlRXh0ZW5zaW9uU3RhdGVSZWNvcmQoZXh0ZW5zaW9uLCBDb25uZWN0ZWQpOworICAgIHNlbmRC
dW5kbGVNZXNzYWdlKCJEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVj
dCBjYWxsZWQiKTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6d2lsbERlc3Ry
b3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oV0tCdW5kbGVET01XaW5kb3dFeHRl
bnNpb25SZWYgZXh0ZW5zaW9uKQoreworICAgIG1fbnVtYmVyT2ZEZXN0cm95ZWRFeHRlbnNpb25z
Kys7CisKKyAgICB1cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29yZChleHRlbnNpb24sIERlc3Ryb3ll
ZCk7CisgICAgc2VuZEJ1bmRsZU1lc3NhZ2UoIldpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9N
V2luZG93RXh0ZW5zaW9uIGNhbGxlZCIpOworICAgIAorICAgIGlmIChtX251bWJlck9mRGVzdHJv
eWVkRXh0ZW5zaW9ucyA9PSA2KSB7CisgICAgICAgIHNlbmRFeHRlbnNpb25TdGF0ZU1lc3NhZ2Uo
KTsKKyAgICAgICAgc2VuZEJ1bmRsZU1lc3NhZ2UoIlRlc3RDb21wbGV0ZSIpOworICAgIH0KKyAg
ICAKKyAgICBXS1JlbGVhc2UoZXh0ZW5zaW9uKTsKK30KKworc3RhdGljIHZvaWQgZGlkRmluaXNo
TG9hZEZvckZyYW1lQ2FsbGJhY2soV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgICgoRE9NV2lu
ZG93RXh0ZW5zaW9uQmFzaWMqKWNsaWVudEluZm8pLT5mcmFtZUxvYWRGaW5pc2hlZChmcmFtZSk7
Cit9CisKK3N0YXRpYyB2b2lkIGRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lQ2FsbGJhY2so
V0tCdW5kbGVQYWdlR3JvdXBSZWYsIEpTT2JqZWN0UmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
LCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
eworICAgICgoRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMqKWNsaWVudEluZm8pLT5kaWRDcmVhdGVH
bG9iYWxPYmplY3RGb3JGcmFtZShmcmFtZSwgd29ybGQpOworfQorCitzdGF0aWMgdm9pZCB3aWxs
RGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3RDYWxsYmFjayhXS0J1
bmRsZVBhZ2VHcm91cFJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9u
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgICgoRE9NV2luZG93RXh0ZW5zaW9uQmFz
aWMqKWNsaWVudEluZm8pLT53aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9i
YWxPYmplY3QoZXh0ZW5zaW9uKTsKK30KKworc3RhdGljIHZvaWQgZGlkUmVjb25uZWN0RE9NV2lu
ZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3RDYWxsYmFjayhXS0J1bmRsZVBhZ2VHcm91cFJlZiwg
V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQoreworICAgICgoRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMqKWNsaWVudEluZm8pLT5k
aWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChleHRlbnNpb24pOwor
fQorCitzdGF0aWMgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVu
c2lvbkNhbGxiYWNrKFdLQnVuZGxlUGFnZUdyb3VwUmVmLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVu
c2lvblJlZiBleHRlbnNpb24gLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgICgoRE9N
V2luZG93RXh0ZW5zaW9uQmFzaWMqKWNsaWVudEluZm8pLT53aWxsRGVzdHJveUdsb2JhbE9iamVj
dEZvckRPTVdpbmRvd0V4dGVuc2lvbihleHRlbnNpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvSW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAKaW5kZXggNDBjYTI2OS4uMDgzYTg4ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxl
QmFzaWMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3Rl
ZEJ1bmRsZUJhc2ljLmNwcApAQCAtMzQsNyArMzQsNyBAQCBzdGF0aWMgYm9vbCBkb25lOwogc3Rh
dGljIGJvb2wgbG9hZERvbmU7CiBzdGF0aWMgYm9vbCBtZXNzYWdlUmVjZWl2ZWQ7CiAKLXZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdL
VHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBtZXNz
YWdlUmVjZWl2ZWQgPSB0cnVlOwogICAgIGlmIChsb2FkRG9uZSkK
</data>
<flag name="review"
          id="141280"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138587</attachid>
            <date>2012-04-24 10:02:05 -0700</date>
            <delta_ts>2012-04-24 10:37:01 -0700</delta_ts>
            <desc>Patch v6 - FrameLoaderClient method name changed, and WK2 client methods moved to BundlePageLoaderClient</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>96361</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDU4NmQ4ZS4uNzE4ZTY2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwMzEsNiArMTAzMSw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdl
L0RPTVNlbGVjdGlvbi5jcHAKICAgICBwYWdlL0RPTVRpbWVyLmNwcAogICAgIHBhZ2UvRE9NV2lu
ZG93LmNwcAorICAgIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcAogICAgIHBhZ2UvRE9NV2lu
ZG93UHJvcGVydHkuY3BwCiAgICAgcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKICAgICBwYWdlL0V2
ZW50SGFuZGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNGFkOWVlLi4xZDkxM2UyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNjIgQEAKKzIwMTItMDQtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDEyMDE1NT4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjY2NAorICAgICAgICAgTmVlZCBET01X
aW5kb3cgbWVjaGFuaXNtIHRvIHN1cHBsZW1lbnQgVXNlclNjcmlwdHMgZm9yIHBhZ2UgY2FjaGUg
bm90aWZpY2F0aW9ucworCisgICAgICAgIFRoaXMgcGF0Y2ggY3JlYXRlcyBhIG5ldyBvYmplY3Qg
dHlwZSAiRE9NV2luZG93RXh0ZW5zaW9uIiB3aGljaCBleHRlbmRzIERPTVdpbmRvd1Byb3BlcnR5
LgorICAgICAgICBBIERPTVdpbmRvd0V4dGVuc2lvbiBpcyB0aWVkIHRvIGEgcGFydGljdWxhciBE
T01XaW5kb3cgYW5kIHJlcHJlc2VudHMgZXh0ZW5zaWJpbGl0eSBpbiB0aGF0CisgICAgICAgIERP
TVdpbmRvdyB3aXRoaW4gYSBwYXJ0aWN1bGFyIERPTVdyYXBwZXJXb3JsZC4KKworICAgICAgICBJ
dCBpcyBhIHRva2VuIG9iamVjdCBtZWFudCBkZXNpZ25lZCB0byBub3RpZnkgY2xpZW50cyBvZiB0
aGUgdmFyaW91cyBldmVudHMgaW4gdGhlIGxpZmV0aW1lCisgICAgICAgIG9mIGEgRE9NV2luZG93
IHByb3BlcnR5IHN1Y2ggYXMgY3JlYXRpb24sIGRpc2Nvbm5lY3RpbmcgZm9yIHRoZSBwYWdlIGNh
Y2hlLCByZWNvbm5lY3RpbmcKKyAgICAgICAgd2hlbiByZXN0b3JpbmcgZnJvbSB0aGUgcGFnZSBj
YWNoZSwgYW5kIERPTVdpbmRvdyBkZXN0cnVjdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgV2ViS2l0IEFQSSB0ZXN0IERPTVdpbmRvd0V4
dGVuc2lvbkJhc2ljIGFkZGVkLgorCisgICAgICAgIEFkZCBob29rcyBmb3IgNCBuZXcgY2xpZW50
IGNhbGxzIHJlZ2FyZGluZyBET01XaW5kb3dFeHRlbnNpb25zIGFuZCBnbG9iYWwgb2JqZWN0IGxp
ZmV0aW1lOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ2FuQ3JlYXRlR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxEaXNj
b25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Ub0dsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbik6
CisgICAgICAgIAorICAgICAgICBBdCB0aGUgc2FtZSB0aW1lICJEaWRDbGVhcldpbmRvd09iamVj
dCIgaXMgY2FsbGVkLCBhbHNvIG5vdGlmeSBjbGllbnRzIHRoYXQgdGhlIGdsb2JhbCBvYmplY3Qg
aXMgYXZhaWxhYmxlOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmRpc3BhdGNoR2xvYmFsT2JqZWN0QXZhaWxhYmxlSW5BbGxXb3Js
ZHMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorCisgICAgICAgICBET01XaW5k
b3dQcm9wZXJ0aWVzIG1pZ2h0IHdhbnQgdG8gdW5yZWdpc3RlciB0aGVtc2VsdmVzIGR1cmluZyB0
aGVzZSBub3RpZmljYXRpb25zLCBzbyBjb3B5CisgICAgICAgICB0aGUgc2V0IHRvIGEgVmVjdG9y
LiBXaGlsZSB0aGlzIHRlY2huaXF1ZSBpcyBhcmd1YWJseSBmcmFnaWxlLCBpdHMgY2VydGFpbmx5
IGxlc3MgZnJhZ2lsZSB0aGFuCisgICAgICAgICBtdXRhdGluZyBhIHNldCB3aGlsZSBpdGVyYXRp
bmcgaXQ6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93Ojp3aWxsRGV0YWNoUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
OmRpc2Nvbm5lY3RET01XaW5kb3dQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6cmVjb25uZWN0RE9NV2luZG93UHJvcGVydGllcyk6CisKKyAgICAgICAgIEltcGxlbWVu
dCB0aGUgRE9NV2luZG93RXh0ZW5zaW9uIG9iamVjdC4gSXQgYWN0cyBsaWtlIGEgRE9NV2luZG93
UHJvcGVydHkgd2l0aCB0aGUgYWRkZWQgY2FwYWJpbGl0eQorICAgICAgICAgb2YgcmVtZW1iZXJp
bmcgd2hhdCBGcmFtZSBpdCB1c2VkIHRvIGJlIGNvbm5lY3RlZCB0byBzbyBpdCBjYW4gKmFsd2F5
cyogbm90aWZ5IGNsaWVudHMgb24gd2lsbERldGFjaFBhZ2U6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3dFeHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0V4
dGVuc2lvbjo6RE9NV2luZG93RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
d0V4dGVuc2lvbjo6fkRPTVdpbmRvd0V4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3dFeHRlbnNpb246OmRpc2Nvbm5lY3RGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3dFeHRlbnNpb246OnJlY29ubmVjdEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvd0V4dGVuc2lvbjo6d2lsbERldGFjaFBhZ2UpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
RXh0ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9u
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjp3b3JsZCk6
CisKKyAgICAgICAgIFByb2plY3QgZmlsZXM6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTItMDQtMjMgIEVtaWwgQSBFa2x1bmQgIDxlYWVA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIENyYXNoIGluIFJlbmRlcklubGluZTo6Y2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQgZm9yIFByaW50UHJldmlldwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggNzA2ODM2YS4uN2ExY2ZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCkBAIC0yOTE5LDYgKzI5MTksOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93RXh0ZW5zaW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJv
cGVydHkuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmggXAog
CVNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAxOWFl
ZjA2Li44MTY0OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEwMDgsNiArMTAwOCw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcCBcCiAgICAgcGFnZS9ET01UaW1lci5jcHAg
XAogICAgIHBhZ2UvRE9NV2luZG93LmNwcCBcCisgICAgcGFnZS9ET01XaW5kb3dFeHRlbnNpb24u
Y3BwIFwKICAgICBwYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmNwcCBcCiAgICAgcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAgXAogICAgIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcCBcCkBAIC0yMTI4LDYgKzIx
MjksNyBAQCBIRUFERVJTICs9IFwKICAgICBwYWdlL0RPTVNlbGVjdGlvbi5oIFwKICAgICBwYWdl
L0RPTVRpbWVyLmggXAogICAgIHBhZ2UvRE9NV2luZG93LmggXAorICAgIHBhZ2UvRE9NV2luZG93
RXh0ZW5zaW9uLmggXAogICAgIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBcCiAgICAgcGFnZS9EcmFn
U3RhdGUuaCBcCiAgICAgcGFnZS9FdmVudEhhbmRsZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmlu
ZGV4IGM1YmEyMDguLjkyMTQwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC01NDUsNiArNTQ1
LDcgQEAgX19aTjdXZWJDb3JlMTdSZWd1bGFyRXhwcmVzc2lvbkQxRXYKIF9fWk43V2ViQ29yZTE3
Y2FjaGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVy
ZUVQS05TMl85Q2xhc3NJbmZvRQogX19aTjdXZWJDb3JlMTdvcGVuVGVtcG9yYXJ5RmlsZUVSS04z
V1RGNlN0cmluZ0VSaQogX19aTjdXZWJDb3JlMTd1c2VyVmlzaWJsZVN0cmluZ0VQNU5TVVJMCitf
X1pON1dlYkNvcmUxOERPTVdpbmRvd0V4dGVuc2lvbkMxRVBOU181RnJhbWVFUE5TXzE1RE9NV3Jh
cHBlcldvcmxkRQogX19aTjdXZWJDb3JlMThIVE1MQ29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184
RG9jdW1lbnRFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDEzYnVmZmVyRm9yVHlw
ZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkMTNzdHJp
bmdGb3JUeXBlRVJLTjNXVEY2U3RyaW5nRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGMzM2FjYWUuLjc5
ZjQ1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgICAgICAgICAg
J3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ3BhZ2UvQ29vcmRp
bmF0ZXMuaCcsCiAgICAgICAgICAgICAncGFnZS9ET01XaW5kb3cuaCcsCisgICAgICAgICAgICAn
cGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaCcsCiAgICAgICAgICAgICAncGFnZS9EcmFnQWN0aW9u
cy5oJywKICAgICAgICAgICAgICdwYWdlL0RyYWdDbGllbnQuaCcsCiAgICAgICAgICAgICAncGFn
ZS9EcmFnQ29udHJvbGxlci5oJywKQEAgLTI5NjQsNiArMjk2NSw4IEBACiAgICAgICAgICAgICAn
cGFnZS9ET01UaW1lci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NVGltZXIuaCcsCiAgICAg
ICAgICAgICAncGFnZS9ET01XaW5kb3cuY3BwJywKKyAgICAgICAgICAgICdwYWdlL0RPTVdpbmRv
d0V4dGVuc2lvbi5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmgn
LAogICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93UGFnZVBvcHVwLmNwcCcsCiAgICAgICAgICAg
ICAncGFnZS9ET01XaW5kb3dQYWdlUG9wdXAuaCcsCiAgICAgICAgICAgICAncGFnZS9ET01XaW5k
b3dQcm9wZXJ0eS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCA1MGFmMjNlLi5jZTI5NDM4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjYxMTgsNiArMjYxMTgsMTQgQEAKIAkJCQk+
CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxET01XaW5k
b3dFeHRlbnNpb24uY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwYWdlXERPTVdpbmRvd0V4dGVuc2lvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXERPTVdpbmRvd1Byb3BlcnR5LmNw
cCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjliNjM2OS4uMWI1ZTI0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUyNiw2
ICsxNTI2LDcgQEAKIAkJNTE3NDFEMTEwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc0MUQwRDBC
MDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTc0MUQxMjBCMDcyNTlBMDBFRDQ0MkMgLyogSGlz
dG9yeUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE3NDFEMEUwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmNwcCAqLzsgfTsKIAkJ
NTE3NEUyMEExMEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzRFMjA4MTBBMUY0NEYwMEY5NUU2
RiAvKiBQb3BTdGF0ZUV2ZW50LmggKi87IH07CisJCTUxN0ZCQTFFMTUxQUIxN0MwMEI1Nzk1OSAv
KiBET01XaW5kb3dFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3RkJBMTcxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVu
c2lvbi5jcHAgKi87IH07CiAJCTUxODlGMDFEMTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0YXRl
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE4OUYwMUIxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5jcHAgKi87IH07CiAJ
CTUxODlGMDFFMTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODlGMDFDMTBCMzdCRDkwMEYz
QzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuaCAqLzsgfTsKIAkJNTE4OUYwREUxMEI0NkIwRTAwRjND
NzM5IC8qIFBvcFN0YXRlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE4OUYwREQxMEI0NkIwRTAwRjNDNzM5IC8qIFBvcFN0YXRlRXZlbnQu
Y3BwICovOyB9OwpAQCAtMTU2NCw2ICsxNTY1LDcgQEAKIAkJNTFFM0Y5QzcwREEwNTlEQzAwMjUw
OTExIC8qIFN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFFM0Y5QzUwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuY3BwICovOyB9Owog
CQk1MUUzRjlENjBEQTA1RTFEMDAyNTA5MTEgLyogSlNTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTNGOUQ0MERBMDVFMUQwMDI1MDkx
MSAvKiBKU1N0b3JhZ2UuY3BwICovOyB9OwogCQk1MUVDOTI2NTBDRTkwREQ0MDBGOTAzMDggLyog
SlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUM5MjVEMENFOTBERDQwMEY5MDMwOCAvKiBK
U0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwICovOyB9OworCQk1MUZBMkQ3ODE1
MjEzMkIzMDBDMUJBMEIgLyogRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdGQkExODE1MUFBNzFCMDBCNTc5NTkgLyog
RE9NV2luZG93RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTFGQjU1MDQxMTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQjU1MDIx
MTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5oICovOyB9OwogCQk1MUZCNTUwNTExM0Uz
RTkxMDA4MjExNzYgLyogSlNDbG9zZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkI1NTAzMTEzRTNFOTEwMDgyMTE3NiAvKiBKU0Nsb3Nl
RXZlbnQuY3BwICovOyB9OwogCQk1MjFENDZGNjExQUVDOTgxMDA1MTQ2MTMgLyogS2lsbFJpbmdN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjFE
NDZGNTExQUVDOTgxMDA1MTQ2MTMgLyogS2lsbFJpbmdNYWMubW0gKi87IH07CkBAIC04NTE0LDYg
Kzg1MTYsOCBAQAogCQk1MTc0MUQwRTBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpc3RvcnlJdGVtLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3NEUyMDgxMEExRjQ0RjAwRjk1RTZGIC8q
IFBvcFN0YXRlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9wU3Rh
dGVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTc0RTIwQjEwQTFGNDlB
MDBGOTVFNkYgLyogUG9wU3RhdGVFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9w
U3RhdGVFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0ZCQTE3MTUx
QUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RkJBMTgxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4
dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaW5kb3dFeHRl
bnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4OUYwMUIxMEIzN0JEOTAw
RjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1BvcFN0YXRlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTg5RjAxQzEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9wU3RhdGVFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTg5RjBERDEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVF
dmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3BTdGF0ZUV2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MzU2LDYgKzE1MzYwLDgg
QEAKIAkJCQkxNDAzQjk5NjA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmNwcCAqLywKIAkJ
CQkxNDAzQjk5NTA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmggKi8sCiAJCQkJMTQwM0I5
MEMwOUVCMTI0NTAwNzk3QzdGIC8qIERPTVdpbmRvdy5pZGwgKi8sCisJCQkJNTE3RkJBMTcxNTFB
QTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8sCisJCQkJNTE3RkJBMTgx
NTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oICovLAogCQkJCTk3RDJBRDAx
MTRCODIzQTYwMDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5jcHAgKi8sCiAJCQkJOTdEMkFE
MDIxNEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmggKi8sCiAJCQkJQTcxODc2
MEQwQjJBMTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggKi8sCkBAIC0yNDgwNCw2ICsyNDgx
MCw3IEBACiAJCQkJQ0VDQURGQzkxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNFQ0FERkNFMTUzNzc5MUQwMEUzNzA2OCAvKiBUZXh0SW5z
ZXJ0aW9uQmFzZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk4MzFBRTRBMTU0MjI1Qzkw
MEZFMjY0NCAvKiBSZWZlcnJlclBvbGljeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFGQTJENzgx
NTIxMzJCMzAwQzFCQTBCIC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yNzgxNSw2ICsyNzgyMiw3IEBACiAJCQkJQ0VDQURGQzYxNTM3NzhGRjAwRTM3MDY4IC8qIERp
Y3RhdGlvbkFsdGVybmF0aXZlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0FERkM4MTUzNzc4
RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNF
Q0FERkNEMTUzNzc5MUQwMEUzNzA2OCAvKiBUZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTE3RkJBMUUxNTFBQjE3QzAwQjU3OTU5IC8qIERPTVdpbmRvd0V4
dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCmluZGV4IGIxZGMwMmMuLmRhNjcxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcApAQCAtNTcxLDYgKzU3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVkRmly
c3REYXRhKCkKIAogICAgIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIGRpc3BhdGNoRGlk
Q2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3JsZHMoKTsKKyAgICBkaXNwYXRjaEdsb2JhbE9iamVj
dEF2YWlsYWJsZUluQWxsV29ybGRzKCk7CiAKICAgICBpZiAobV9kb2N1bWVudExvYWRlcikgewog
ICAgICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHB0aXRsZSA9IG1fZG9jdW1lbnRMb2FkZXItPnRp
dGxlKCk7CkBAIC0zMTEwLDYgKzMxMTEsMTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hE
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChtX2Zy
YW1lLCB3b3JsZCk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoR2xvYmFsT2JqZWN0
QXZhaWxhYmxlSW5BbGxXb3JsZHMoKQoreworICAgIFZlY3RvcjxET01XcmFwcGVyV29ybGQqPiB3
b3JsZHM7CisgICAgU2NyaXB0Q29udHJvbGxlcjo6Z2V0QWxsV29ybGRzKHdvcmxkcyk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JsZHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fY2xp
ZW50LT5kaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZSh3b3JsZHNbaV0pOworfQorCiBTYW5k
Ym94RmxhZ3MgRnJhbWVMb2FkZXI6OmVmZmVjdGl2ZVNhbmRib3hGbGFncygpIGNvbnN0CiB7CiAg
ICAgU2FuZGJveEZsYWdzIGZsYWdzID0gbV9mb3JjZWRTYW5kYm94RmxhZ3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDY0OTQ1Y2YuLjRhMzRmMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oCkBAIC0zNjUsNiArMzY1LDggQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQoY29uc3QgS1VSTCYpIGNvbnN0OwogCisg
ICAgdm9pZCBkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZUluQWxsV29ybGRzKCk7CisKICAg
ICBGcmFtZSogbV9mcmFtZTsKICAgICBGcmFtZUxvYWRlckNsaWVudCogbV9jbGllbnQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZTliYjAyNy4uNTM4
YzQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTYz
LDYgKzYzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOwogICAgIGNsYXNzIENhY2hlZEZyYW1lOwogICAgIGNsYXNzIENvbG9yOworICAg
IGNsYXNzIERPTVdpbmRvd0V4dGVuc2lvbjsKICAgICBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiAg
ICAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiAgICAgY2xhc3MgRWxlbWVudDsKQEAgLTMzMSw2ICsz
MzIsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKikgeyB9
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoR2xvYmFsT2JqZWN0QXZhaWxhYmxlKERP
TVdyYXBwZXJXb3JsZCopIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsRGlz
Y29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoRE9NV2luZG93RXh0ZW5z
aW9uKikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY29ubmVjdERPTVdp
bmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KERPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdp
bmRvd0V4dGVuc2lvbihET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMzcxYWY2Yy4u
NTA2MDQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNDUsNiArNDUsNyBAQAog
I2luY2x1ZGUgIkRPTVRpbWVyLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVk
ZSAiRE9NVVJMLmgiCisjaW5jbHVkZSAiRE9NV2luZG93RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAi
RE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVk
ZSAiRGF0YWJhc2VDYWxsYmFjay5oIgpAQCAtNDc0LDkgKzQ3NSwxMCBAQCB2b2lkIERPTVdpbmRv
dzo6d2lsbERldGFjaFBhZ2UoKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJh
bWVXaW5kb3dEaXNjYXJkZWQobV9mcmFtZSwgdGhpcyk7CiAKLSAgICBIYXNoU2V0PERPTVdpbmRv
d1Byb3BlcnR5Kj46Oml0ZXJhdG9yIHN0b3AgPSBtX3Byb3BlcnRpZXMuZW5kKCk7Ci0gICAgZm9y
IChIYXNoU2V0PERPTVdpbmRvd1Byb3BlcnR5Kj46Oml0ZXJhdG9yIGl0ID0gbV9wcm9wZXJ0aWVz
LmJlZ2luKCk7IGl0ICE9IHN0b3A7ICsraXQpCi0gICAgICAgICgqaXQpLT53aWxsRGV0YWNoUGFn
ZSgpOworICAgIFZlY3RvcjxET01XaW5kb3dQcm9wZXJ0eSo+IHByb3BlcnRpZXM7CisgICAgY29w
eVRvVmVjdG9yKG1fcHJvcGVydGllcywgcHJvcGVydGllcyk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwcm9wZXJ0aWVzLnNpemUoKTsgKytpKQorICAgICAgICBwcm9wZXJ0aWVzW2ldLT53
aWxsRGV0YWNoUGFnZSgpOwogfQogCiB2b2lkIERPTVdpbmRvdzo6cmVnaXN0ZXJQcm9wZXJ0eShE
T01XaW5kb3dQcm9wZXJ0eSogcHJvcGVydHkpCkBAIC01MTQsMTcgKzUxNiwxOSBAQCB2b2lkIERP
TVdpbmRvdzo6cmVzdW1lRnJvbVBhZ2VDYWNoZSgpCiAKIHZvaWQgRE9NV2luZG93OjpkaXNjb25u
ZWN0RE9NV2luZG93UHJvcGVydGllcygpCiB7Ci0gICAgSGFzaFNldDxET01XaW5kb3dQcm9wZXJ0
eSo+OjppdGVyYXRvciBzdG9wID0gbV9wcm9wZXJ0aWVzLmVuZCgpOwotICAgIGZvciAoSGFzaFNl
dDxET01XaW5kb3dQcm9wZXJ0eSo+OjppdGVyYXRvciBpdCA9IG1fcHJvcGVydGllcy5iZWdpbigp
OyBpdCAhPSBzdG9wOyArK2l0KQotICAgICAgICAoKml0KS0+ZGlzY29ubmVjdEZyYW1lKCk7Cisg
ICAgVmVjdG9yPERPTVdpbmRvd1Byb3BlcnR5Kj4gcHJvcGVydGllczsKKyAgICBjb3B5VG9WZWN0
b3IobV9wcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHByb3BlcnRpZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHByb3BlcnRpZXNbaV0tPmRpc2Nvbm5l
Y3RGcmFtZSgpOwogfQogCiB2b2lkIERPTVdpbmRvdzo6cmVjb25uZWN0RE9NV2luZG93UHJvcGVy
dGllcygpCiB7CiAgICAgQVNTRVJUKG1fc3VzcGVuZGVkRm9yUGFnZUNhY2hlKTsKLSAgICBIYXNo
U2V0PERPTVdpbmRvd1Byb3BlcnR5Kj46Oml0ZXJhdG9yIHN0b3AgPSBtX3Byb3BlcnRpZXMuZW5k
KCk7Ci0gICAgZm9yIChIYXNoU2V0PERPTVdpbmRvd1Byb3BlcnR5Kj46Oml0ZXJhdG9yIGl0ID0g
bV9wcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ICE9IHN0b3A7ICsraXQpCi0gICAgICAgICgqaXQpLT5y
ZWNvbm5lY3RGcmFtZShtX2ZyYW1lKTsKKyAgICBWZWN0b3I8RE9NV2luZG93UHJvcGVydHkqPiBw
cm9wZXJ0aWVzOworICAgIGNvcHlUb1ZlY3RvcihtX3Byb3BlcnRpZXMsIHByb3BlcnRpZXMpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydGllcy5zaXplKCk7ICsraSkKKyAgICAg
ICAgcHJvcGVydGllc1tpXS0+cmVjb25uZWN0RnJhbWUobV9mcmFtZSk7CiB9CiAKIHZvaWQgRE9N
V2luZG93OjpjbGVhckRPTVdpbmRvd1Byb3BlcnRpZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3dFeHRlbnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmJkNTY4YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
d0V4dGVuc2lvbi5jcHAKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9N
V2luZG93RXh0ZW5zaW9uLmgiCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJE
T01XcmFwcGVyV29ybGQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRE9NV2luZG93RXh0ZW5zaW9u
OjpET01XaW5kb3dFeHRlbnNpb24oRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQqIHdvcmxk
KQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCisgICAgLCBtX3dvcmxkKHdvcmxkKQor
ICAgICwgbV9kaXNjb25uZWN0ZWRET01XaW5kb3coMCkKKyAgICAsIG1fd2FzRGV0YWNoZWQoZmFs
c2UpCit7CisgICAgQVNTRVJUKHRoaXMtPmZyYW1lKCkpOworICAgIEFTU0VSVChtX3dvcmxkKTsK
K30KKworRE9NV2luZG93RXh0ZW5zaW9uOjp+RE9NV2luZG93RXh0ZW5zaW9uKCkKK3sKKyAgICAv
LyBET01XaW5kb3dFeHRlbnNpb24gbGlmZXRpbWUgaXNuJ3QgdGllZCBkaXJlY3RseSB0byB0aGUg
RE9NV2luZG93IGl0c2VsZiBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCBpdCB1bnJlZ2lzdGVyCisg
ICAgLy8gaXRzZWxmIGZyb20gYW55IERPTVdpbmRvdyBpdCBpcyBhc3NvY2lhdGVkIHdpdGggd2hl
biBkZXN0cm95ZWQuCisgICAgLy8gVGhpcyBtaWdodCBoYXBwZW4gaWYgdGhlIERPTVdpbmRvd0V4
dGVuc2lvbiBpcyBkZXN0cm95ZWQgd2hpbGUgaXRzIERPTVdpbmRvdyBpcyBpbiBhIENhY2hlZFBh
Z2UuCisgICAgaWYgKG1fZGlzY29ubmVjdGVkRE9NV2luZG93KQorICAgICAgICBtX2Rpc2Nvbm5l
Y3RlZERPTVdpbmRvdy0+dW5yZWdpc3RlclByb3BlcnR5KHRoaXMpOworfQorCit2b2lkIERPTVdp
bmRvd0V4dGVuc2lvbjo6ZGlzY29ubmVjdEZyYW1lKCkKK3sKKyAgICAvLyBDYWxsaW5nIG91dCB0
byB0aGUgY2xpZW50IG1pZ2h0IHJlc3VsdCBpbiB0aGlzIERPTVdpbmRvd0V4dGVuc2lvbiBiZWlu
ZyBkZXN0cm95ZWQKKyAgICAvLyB3aGlsZSB0aGVyZSBpcyBzdGlsbCB3b3JrIHRvIGRvLgorICAg
IFJlZlB0cjxET01XaW5kb3dFeHRlbnNpb24+IHByb3RlY3RvciA9IHRoaXM7CisgICAgCisgICAg
Ly8gRE9NV2luZG93UHJvcGVydGllcyBhcmUgZGlzY29ubmVjdGVkIGZyb20gZnJhbWVzIGFmdGVy
IHRoZXkgYXJlIGRldGFjaGVkLgorICAgIC8vIERPTVdpbmRvd0V4dGVuc2lvbnMgb25seSB3YW50
IHRvIHN0YXkgcHJlcGFyZWQgZm9yIGNsaWVudCBjYWxsYmFja3MgaWYgdGhleSd2ZSBuZXZlciBi
ZWVuIGRldGFjaGVkLgorICAgIGlmICghbV93YXNEZXRhY2hlZCkgeworICAgICAgICBGcmFtZSog
ZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgp
LT5kaXNwYXRjaFdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVj
dCh0aGlzKTsKKworICAgICAgICBtX2Rpc2Nvbm5lY3RlZEZyYW1lID0gZnJhbWU7CisgICAgICAg
IG1fZGlzY29ubmVjdGVkRE9NV2luZG93ID0gZnJhbWUtPmRvbVdpbmRvdygpOworICAgIH0KKwor
ICAgIERPTVdpbmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0RnJhbWUoKTsKK30KKwordm9pZCBET01X
aW5kb3dFeHRlbnNpb246OnJlY29ubmVjdEZyYW1lKEZyYW1lKiBmcmFtZSkKK3sKKyAgICAvLyBE
T01XaW5kb3dQcm9wZXJ0aWVzIHNob3VsZCBuZXZlciByZWNvbm5lY3QgdG8gYSBmcmFtZSBhZnRl
ciB0aGV5J3ZlIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgcGFnZS4KKyAgICBBU1NFUlQoIW1fd2Fz
RGV0YWNoZWQpOworICAgIEFTU0VSVChtX2Rpc2Nvbm5lY3RlZEZyYW1lID09IGZyYW1lKTsKKyAg
ICAKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6cmVjb25uZWN0RnJhbWUoZnJhbWUpOworICAgIG1f
ZGlzY29ubmVjdGVkRnJhbWUgPSAwOworICAgIG1fZGlzY29ubmVjdGVkRE9NV2luZG93ID0gMDsK
KworICAgIHRoaXMtPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRSZWNv
bm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCh0aGlzKTsKK30KKwordm9pZCBE
T01XaW5kb3dFeHRlbnNpb246OndpbGxEZXRhY2hQYWdlKCkKK3sKKyAgICAvLyB3aWxsRGV0YWNo
UGFnZSBtaWdodCBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYnV0IHdlIG9ubHkgd2FudCB0byBy
ZWFjdCBvbmNlLgorICAgIGlmIChtX3dhc0RldGFjaGVkKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhlIGNsaWVudCBtaWdodCByZXN1bHQgaW4gdGhpcyBE
T01XaW5kb3dFeHRlbnNpb24gYmVpbmcgZGVzdHJveWVkCisgICAgLy8gd2hpbGUgdGhlcmUgaXMg
c3RpbGwgd29yayB0byBkby4KKyAgICBSZWZQdHI8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0
b3IgPSB0aGlzOworICAgIAorICAgIEZyYW1lKiBmcmFtZSA9IG1fZGlzY29ubmVjdGVkRnJhbWUu
Z2V0KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwor
ICAgIEFTU0VSVChmcmFtZSk7CisKKyAgICAvLyBET01XaW5kb3dFeHRlbnNpb24gbGlmZXRpbWUg
aXNuJ3QgdGllZCBkaXJlY3RseSB0byB0aGUgRE9NV2luZG93IGl0c2VsZiBzbyBpdCBpcyBpbXBv
cnRhbnQgdGhhdCBpdCB1bnJlZ2lzdGVyCisgICAgLy8gaXRzZWxmIGZyb20gYW55IERPTVdpbmRv
dyBpdCBpcyBhc3NvY2lhdGVkIHdpdGggd2hlbiBkZXRhY2hlZC4KKyAgICAvLyBUaGlzIG1pZ2h0
IGJlIHRoZSBkaXNjb25uZWN0ZWQgRE9NV2luZG93IGlmIHRoZSBET01XaW5kb3cgaXMgaW4gYSBD
YWNoZWRQYWdlIHRoYXQgaXMgcHJ1bmVkLgorICAgIERPTVdpbmRvdyogYXNzb2NpYXRlZERPTVdp
bmRvdyA9IG1fZGlzY29ubmVjdGVkRE9NV2luZG93ID8gbV9kaXNjb25uZWN0ZWRET01XaW5kb3cg
OiBmcmFtZS0+ZG9tV2luZG93KCk7CisgICAgYXNzb2NpYXRlZERPTVdpbmRvdy0+dW5yZWdpc3Rl
clByb3BlcnR5KHRoaXMpOworICAgIG1fZGlzY29ubmVjdGVkRE9NV2luZG93ID0gMDsKKyAgICAK
KyAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaFdpbGxEZXN0cm95R2xvYmFs
T2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKHRoaXMpOworCisgICAgbV9kaXNjb25uZWN0ZWRG
cmFtZSA9IDA7CisKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERldGFjaFBhZ2UoKTsKKyAg
ICAKKyAgICBtX3dhc0RldGFjaGVkID0gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYzIwYTRmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRE9NV2luZG93
RXh0ZW5zaW9uX2gKKyNkZWZpbmUgRE9NV2luZG93RXh0ZW5zaW9uX2gKKworI2luY2x1ZGUgIkRP
TVdpbmRvd1Byb3BlcnR5LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBET01XaW5kb3c7CitjbGFzcyBET01XaW5kb3dFeHRlbnNpb247
CitjbGFzcyBET01XcmFwcGVyV29ybGQ7CitjbGFzcyBGcmFtZTsKKworY2xhc3MgRE9NV2luZG93
RXh0ZW5zaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NV2luZG93RXh0ZW5zaW9uPiwgcHVibGlj
IERPTVdpbmRvd1Byb3BlcnR5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01X
aW5kb3dFeHRlbnNpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCogd29y
bGQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERPTVdpbmRvd0V4dGVuc2lv
bihmcmFtZSwgd29ybGQpKTsKKyAgICB9CisKKyAgICB+RE9NV2luZG93RXh0ZW5zaW9uKCk7CisK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyYW1lKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHJlY29ubmVjdEZyYW1lKEZyYW1lKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHdpbGxEZXRhY2hQYWdlKCkgT1ZFUlJJREU7CisKKyAgICBET01XcmFwcGVyV29ybGQqIHdvcmxk
KCkgY29uc3QgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIERPTVdp
bmRvd0V4dGVuc2lvbihGcmFtZSosIERPTVdyYXBwZXJXb3JsZCopOworCisgICAgUmVmUHRyPERP
TVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKKyAgICBSZWZQdHI8RnJhbWU+IG1fZGlzY29ubmVjdGVk
RnJhbWU7CisgICAgRE9NV2luZG93KiBtX2Rpc2Nvbm5lY3RlZERPTVdpbmRvdzsKKyAgICBib29s
IG1fd2FzRGV0YWNoZWQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBET01XaW5kb3dFeHRlbnNpb25f
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCBjM2U4YWE2Li45ZmU0MzJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dApAQCAtMzM4LDYgKzMzOCw3IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVD
bGllbnQuY3BwCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbi5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtMzUz
LDYgKzM1NCw3IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rv
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA0ODE5MzFlLi5mZjI5NTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNjUgQEAKKzIwMTItMDQtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDEyMDE1NT4gYW5kIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjY2NAorICAgICAgICAgTmVlZCBET01XaW5kb3cgbWVj
aGFuaXNtIHRvIHN1cHBsZW1lbnQgVXNlclNjcmlwdHMgZm9yIHBhZ2UgY2FjaGUgbm90aWZpY2F0
aW9ucworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgLSBBZGRzIGEgbmV3IEFQSSBvYmplY3QgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24K
KyAgICAgICAgLSBFeHBvc2VzIGNhbGxiYWNrcyBhYm91dCB0aGUgbGlmZXRpbWUgb2YgRE9NV2lu
ZG93RXh0ZW5zaW9ucyB0aHJvdWdoIEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQKKworICAgICAgICBB
ZGQgbmV3IEFQSSBjYXN0czoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAg
ICAgICogU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSU9i
amVjdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVBUElDYXN0Lmg6CisKKyAgICAgICAgQWRkIEFQSSBmb3IgdGhlIG5ldyBET01XaW5kb3dFeHRl
bnNpb24gb2JqZWN0OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uR2V0VHlwZUlEKToKKyAgICAgICAgKFdLQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uQ3JlYXRlKToKKyAgICAgICAgKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uR2V0
RnJhbWUpOgorICAgICAgICAoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25HZXRTY3JpcHRXb3Js
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbi5oOiBBZGRlZC4KKworICAgICAgICBBZGQgaW1wbGVtZW50YXRpb24g
Zm9yIHRoYXQgQVBJIHdoaWNoIHdyYXBzIHRoZSBXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjphbGxFeHRlbnNpb25z
KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
OjpnZXQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bjo6SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6fkluamVjdGVkQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRl
bnNpb246OmZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dF
eHRlbnNpb246OndvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAoSW5qZWN0
ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6dHlwZSk6CisKKyAgICAgICAgQWRkIG5ldyBCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50IG1ldGhvZHM6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkQ3JlYXRlR2xvYmFsT2JqZWN0
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OndpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkUmVjb25u
ZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9y
RE9NV2luZG93RXh0ZW5zaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50KToKKworICAgICAgICBJbXBsZW1lbnQgdGhlIDQgbmV3IGNhbGxi
YWNrcyBmcm9tIFdlYkNvcmUgd2hpY2ggbm90aWZ5IHRoZSBCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hH
bG9iYWxPYmplY3RBdmFpbGFibGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxP
YmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2Jq
ZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKKyAgICAgICAgUHJvamVjdCBGaWxlczoK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTItMDQtMjMgIEFs
bGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAg
W1F0XVtXSzJdIENvbnZlcnQgdG91Y2gtcG9pbnQgYXJlYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5k
ZXggMmRhZmNhZi4uZWVlODYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTgxNiw2ICs4MTYs
OCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdEl0ZW0uaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIFwKKwlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWVQcml2YXRlLmggXApA
QCAtODU1LDYgKzg1Nyw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW0uaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZUNsaWVudC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgXAor
CVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb24uaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5o
IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5o
CmluZGV4IGM4NjU2ZTQuLjU1NzIzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNl
LmgKQEAgLTExNiw2ICsxMTYsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRs
ZSogV0tCdW5kbGVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdCogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdLQnVuZGxlQmFja0Zvcndh
cmRMaXN0SXRlbVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbiogV0tCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uUmVmOwordHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIFdLQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5k
bGVGcmFtZSogV0tCdW5kbGVGcmFtZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
QnVuZGxlSGl0VGVzdFJlc3VsdCogV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmOwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVJbnNwZWN0b3IqIFdLQnVuZGxlSW5zcGVjdG9yUmVm
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcAppbmRleCA0ZjVkOGZh
Li5kZjM1OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJh
aXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSUNsaWVu
dFRyYWl0cy5oIgogCisjaW5jbHVkZSAiV0tCdW5kbGUuaCIKICNpbmNsdWRlICJXS0J1bmRsZVBh
Z2UuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5k
ZXggZDZjYzAzMC4uNmVmMTAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTA2
LDYgKzEwNiw3IEBAIHB1YmxpYzoKICAgICAgICAgVHlwZUJ1bmRsZSwKICAgICAgICAgVHlwZUJ1
bmRsZUJhY2tGb3J3YXJkTGlzdCwKICAgICAgICAgVHlwZUJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW0sCisgICAgICAgIFR5cGVCdW5kbGVET01XaW5kb3dFeHRlbnNpb24sCiAgICAgICAgIFR5cGVC
dW5kbGVGcmFtZSwKICAgICAgICAgVHlwZUJ1bmRsZUhpdFRlc3RSZXN1bHQsCiAgICAgICAgIFR5
cGVCdW5kbGVJbnNwZWN0b3IsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJp
IGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCBmZDUyMDI5Li5lYjRlZmE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkKQEAgLTMxNSw2ICszMTUsNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmggXAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBcCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5oIFwKKyAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Lmgg
XAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlQ29udGV4dE1lbnVDbGllbnQuaCBcCkBAIC02NTgsNiArNjU5LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3Qu
Y3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAgXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgXAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnNwZWN0b3IuY3BwIFwKQEAgLTY3Myw2ICs2
NzUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBcCisgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAg
XAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5h
dmlnYXRpb25BY3Rpb24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGI5YWYwZS4uM2FlMDBh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNDM0LDYgKzQzNCw5IEBACiAJCTUxRDEzMDU1MTM4MkVBQzAwMDM1MUVERCAvKiBT
ZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRDEzMDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VE
YXRhLmNwcCAqLzsgfTsKIAkJNTFEMTMwNTYxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNw
b25zZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRDEzMDUyMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmggKi87IH07
CiAJCTUxRDEzMDU4MTM4MkYxMDUwMDM1MUVERCAvKiBXZWJQcm9jZXNzUHJveHlNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1NzEzODJG
MTA1MDAzNTFFREQgLyogV2ViUHJvY2Vzc1Byb3h5TWFjLm1tICovOyB9OworCQk1MUVGQzFDRjE1
MjRFNjI1MDBDOUE5MzggLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkEyRDU0MTUyMTExODYwMEMx
QkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxRkEyRDc0MTUyMTJERjEwMEMxQkEwQiAv
KiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZBMkQ1QzE1MjExQTUwMDBDMUJBMEIgLyog
SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwICovOyB9OworCQk1MUZBMkQ3NzE1
MjEyRTI2MDBDMUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQTJENzUxNTIxMkUxRTAw
QzFCQTBCIC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLzsgfTsKIAkJNTI3MkIy
OEExNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzJCMjg4MTQwNjk4NUQwMDk2QTVEMCAv
KiBTdGF0aXN0aWNzRGF0YS5jcHAgKi87IH07CiAJCTUyNzJCMjhCMTQwNjk4NUQwMDk2QTVEMCAv
KiBTdGF0aXN0aWNzRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTI3MkIyODkxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggKi87
IH07CiAJCTVENTE4NDU1MTNCQ0Y5Q0MwMEM3RkY0QSAvKiBBUElDbGllbnRUcmFpdHMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1MTg0NTMxM0JD
RjlDQzAwQzdGRjRBIC8qIEFQSUNsaWVudFRyYWl0cy5jcHAgKi87IH07CkBAIC0xNDYwLDYgKzE0
NjMsMTAgQEAKIAkJNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlc3Bv
bnNlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDUyMTM4MkVB
QzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNlY0l0ZW1SZXNwb25zZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFEMTMwNTcxMzgyRjEwNTAwMzUxRUREIC8qIFdlYlByb2Nlc3NQcm94eU1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NQcm94
eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGQTJENTQxNTIxMTE4NjAw
QzFCQTBCIC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxRkEyRDVBMTUyMTFBMUUwMEMxQkEwQiAvKiBJbmplY3RlZEJ1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MUZBMkQ1QzE1MjExQTUwMDBDMUJBMEIgLyogSW5qZWN0ZWRCdW5kbGVET01X
aW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MUZBMkQ3NTE1MjEyRTFFMDBDMUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dF
eHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MjcyQjI4ODE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGlzdGljc0RhdGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MjcyQjI4OTE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGlj
c0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlzdGljc0RhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ1MTg0NTMxM0JDRjlDQzAwQzdGRjRB
IC8qIEFQSUNsaWVudFRyYWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBUElDbGllbnRUcmFpdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MzIzNCw2ICszMjQxLDggQEAKIAkJCQk5MzVFRUI5MjEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0
ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmggKi8sCiAJCQkJQkNFRTdEQzQxMjhCNjQ1RDAw
OTgyN0RBIC8qIEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCAqLywKIAkJCQlCQ0VFN0RDMzEyOEI2
NDVEMDA5ODI3REEgLyogSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLywKKwkJCQk1MUZBMkQ1QzE1
MjExQTUwMDBDMUJBMEIgLyogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwICov
LAorCQkJCTUxRkEyRDVBMTUyMTFBMUUwMEMxQkEwQiAvKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbi5oICovLAogCQkJCUJDNDk4NjE3MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3Rl
ZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwICovLAogCQkJCUJDNDk4NjE2MTI0RDEwRTIwMEQ4MzRF
MSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCAqLywKIAkJCQlCQzgxNDdENDEyRjY2
RDMxMDA3QjJDMzIgLyogSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCAqLywKQEAg
LTMyODcsNiArMzI5Niw4IEBACiAJCQkJOTM1RUVCOTYxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0LmggKi8sCiAJCQkJOTM1RUVCOTcxMjc3NjE2RDAwMzMyMkI4IC8q
IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi8sCiAJCQkJOTM1RUVCOTgxMjc3NjE2
RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oICovLAorCQkJCTUxRkEy
RDc1MTUyMTJFMUUwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8s
CisJCQkJNTFGQTJENTQxNTIxMTE4NjAwQzFCQTBCIC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uLmggKi8sCiAJCQkJQkNEMjVGMTYxMUQ2QkRFMTAwMTY5QjBFIC8qIFdLQnVuZGxlRnJhbWUu
Y3BwICovLAogCQkJCUJDRDI1RjE1MTFENkJERTEwMDE2OUIwRSAvKiBXS0J1bmRsZUZyYW1lLmgg
Ki8sCiAJCQkJQkNGMDQ5RTQxMUZFMjBGNjAwRjg2QTU4IC8qIFdLQnVuZGxlRnJhbWVQcml2YXRl
LmggKi8sCkBAIC00MTkyLDYgKzQyMDMsNyBAQAogCQkJCTM3OTQ4NDA5MTUwQzRCOTcwMEU1MkNF
OSAvKiBXS1JlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRURBMTJFMzE1MkNEMUIz
MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMTk1ODJEMzE1M0NCRkQ3MDBCNjA4NzUgLyogUERGS2l0SW1wb3J0cy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTFFRkMxQ0YxNTI0RTYyNTAwQzlBOTM4IC8qIFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQ5MzcsNiArNDk0OSw4IEBACiAJCQkJMzc5NDg0
MDgxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0VEQTEyRTIxNTJDRDFBRTAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTk1ODJENjE1M0NDMDU0MDBCNjA4NzUgLyogUERGS2l0
SW1wb3J0cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxRkEyRDc0MTUyMTJERjEwMEMxQkEwQiAv
KiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MUZBMkQ3NzE1MjEyRTI2MDBDMUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAppbmRleCBk
YjMyNzE2Li5lNDBjODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKQEAgLTQ0
LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZTsKIGNs
YXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3RJdGVtOworY2xhc3MgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNp
b247CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBJbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb247CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU7CkBA
IC01OCw2ICs1OSw3IEBAIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5OwogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJlZiwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0
UmVmLCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdCkKIFdLX0FERF9BUElfTUFQUElORyhX
S0J1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25SZWYsIFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRp
b24pCitXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIElu
amVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVu
ZGxlRnJhbWVSZWYsIFdlYkZyYW1lKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSGl0VGVz
dFJlc3VsdFJlZiwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLQnVuZGxlSW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0b3IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjZlNWJkNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uLmNwcApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uLmgiCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbi5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldFR5
cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uOjpBUElUeXBlKTsKK30KKworV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb25DcmVhdGUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5k
bGVTY3JpcHRXb3JsZFJlZiB3b3JsZCkKK3sKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVET01X
aW5kb3dFeHRlbnNpb24+IGV4dGVuc2lvbiA9IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uOjpjcmVhdGUodG9JbXBsKGZyYW1lKSwgdG9JbXBsKHdvcmxkKSk7CisgICAgcmV0dXJuIHRv
QVBJKGV4dGVuc2lvbi5yZWxlYXNlKCkubGVha1JlZigpKTsKK30KKworV0tCdW5kbGVGcmFtZVJl
ZiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldEZyYW1lKFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uUmVmIGV4dGVuc2lvbikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGV4dGVuc2lv
biktPmZyYW1lKCkpOworfQorCitXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIFdLQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uR2V0U2NyaXB0V29ybGQoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYg
ZXh0ZW5zaW9uKQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZXh0ZW5zaW9uKS0+d29ybGQo
KSk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDlhNzQyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uX2gKKyNkZWZpbmUgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25faAor
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRl
cm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVET01XaW5kb3dF
eHRlbnNpb25HZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uUmVmIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uQ3JlYXRlKFdLQnVuZGxlRnJhbWVSZWYg
ZnJhbWUsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgd29ybGQpOworCitXS19FWFBPUlQgV0tCdW5k
bGVGcmFtZVJlZiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldEZyYW1lKFdLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbik7CitXS19FWFBPUlQgV0tCdW5kbGVTY3JpcHRX
b3JsZFJlZiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldFNjcmlwdFdvcmxkKFdLQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
fQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbl9oICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAppbmRleCA1YTRkMGY2Li43NTJlODA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgV0tCdW5kbGVQYWdl
X2gKICNkZWZpbmUgV0tCdW5kbGVQYWdlX2gKIAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogI2luY2x1ZGUgPFdlYktp
dDIvV0tFdmVudC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tGaW5kT3B0aW9ucy5oPgpAQCAtMTAy
LDM2ICsxMDMsNDQgQEAgdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkQ2FuY2VsQ2xpZW50
UmVkaXJlY3RGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2UKIHR5cGVkZWYgdm9pZCAoKldL
QnVuZGxlUGFnZVdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZUNhbGxiYWNrKShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tVUkxSZWYgdXJsLCBk
b3VibGUgZGVsYXksIGRvdWJsZSBkYXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVk
ZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lQ2FsbGJh
Y2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZVNob3VsZEdvVG9C
YWNrRm9yd2FyZExpc3RJdGVtQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRDcmVhdGVH
bG9iYWxPYmplY3RGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgSlNPYmpl
Y3RSZWYgZ2xvYmFsT2JqZWN0LCBXS0J1bmRsZUZyYW1lUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxk
UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFn
ZVdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdENhbGxiYWNr
KShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkUmVj
b25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3RDYWxsYmFjaykoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVdpbGxEZXN0cm95R2xvYmFs
T2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CiAKIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgewotICAgIGludCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVy
c2lvbjsKLSAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CisgICAgaW50ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVy
c2lvbjsKKyAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwogCiAgICAgLy8gVmVyc2lvbiAw
LgotICAgIFdLQnVuZGxlUGFnZURpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVDYWxsYmFj
ayAgICAgICAgICAgICAgICAgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKLSAgICBX
S0J1bmRsZVBhZ2VEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZUNhbGxiYWNrICAgIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lOwotICAgIFdLQnVuZGxlUGFnZURpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJy
b3JGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJv
ckZvckZyYW1lOwotICAgIFdLQnVuZGxlUGFnZURpZENvbW1pdExvYWRGb3JGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1lOwotICAgIFdL
QnVuZGxlUGFnZURpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU7Ci0gICAgV0tCdW5kbGVQYWdl
RGlkRmluaXNoTG9hZEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgV0tCdW5kbGVQYWdlRGlkRmFpbExvYWRXaXRoRXJy
b3JGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICBkaWRGYWlsTG9hZFdpdGhFcnJv
ckZvckZyYW1lOwotICAgIFdLQnVuZGxlUGFnZURpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZy
YW1lOwotICAgIFdLQnVuZGxlUGFnZURpZFJlY2VpdmVUaXRsZUZvckZyYW1lQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWU7Ci0gICAgV0tCdW5k
bGVQYWdlRGlkRmlyc3RMYXlvdXRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaWRGaXJzdExheW91dEZvckZyYW1lOwotICAgIFdLQnVuZGxlUGFnZURpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgZGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWU7Ci0gICAgV0tCdW5kbGVQYWdlRGlkUmVtb3ZlRnJh
bWVGcm9tSGllcmFyY2h5Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBkaWRSZW1vdmVGcmFt
ZUZyb21IaWVyYXJjaHk7Ci0gICAgV0tCdW5kbGVQYWdlRGlkRGlzcGxheUluc2VjdXJlQ29udGVu
dEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50
Rm9yRnJhbWU7Ci0gICAgV0tCdW5kbGVQYWdlRGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZTsK
LSAgICBXS0J1bmRsZVBhZ2VEaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgIGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWU7Ci0gICAgV0tCdW5k
bGVQYWdlRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOwotICAgIFdLQnVuZGxlUGFnZVdp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgd2ls
bFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOwotICAgIFdLQnVuZGxlUGFnZURpZEhhbmRs
ZU9ubG9hZEV2ZW50c0ZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgZGlkSGFuZGxl
T25sb2FkRXZlbnRzRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZUNhbGxiYWNrICBkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRGYWls
UHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICBkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlk
Q29tbWl0TG9hZEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGlkQ29tbWl0TG9hZEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZpbmlzaExvYWRGb3JGcmFtZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaExvYWRGb3JGcmFt
ZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lOworICAg
IFdLQnVuZGxlUGFnZURpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZUNhbGxiYWNrICAg
ICAgICAgICAgICAgICAgIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTsKKyAgICBX
S0J1bmRsZVBhZ2VEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VE
aWRGaXJzdExheW91dEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaWRGaXJzdExheW91dEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgIGRpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZFJlbW92ZUZy
YW1lRnJvbUhpZXJhcmNoeUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlbW92
ZUZyYW1lRnJvbUhpZXJhcmNoeTsKKyAgICBXS0J1bmRsZVBhZ2VEaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICBkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50Rm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkUnVuSW5zZWN1cmVDb250ZW50
Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgZGlkUnVuSW5zZWN1cmVDb250
ZW50Rm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFt
ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JG
cmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1l
OworICAgIFdLQnVuZGxlUGFnZVdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTsK
KyAgICBXS0J1bmRsZVBhZ2VEaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZUNhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZTsKIAogICAg
IC8vIFZlcnNpb24gMS4KLSAgICBXS0J1bmRsZVBhZ2VEaWRMYXlvdXRGb3JGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExheW91dEZvckZyYW1lOwotICAgIFdL
QnVuZGxlUGFnZURpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dENhbGxiYWNrICAgICAg
ICAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OwotICAgIFdLQnVuZGxl
UGFnZURpZERldGVjdFhTU0ZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWU7Ci0gICAgV0tCdW5kbGVQYWdlU2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW1DYWxsYmFjayAgICAgICAgICAgICAgICAgICBzaG91bGRHb1RvQmFja0Zv
cndhcmRMaXN0SXRlbTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRMYXlvdXRGb3JGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRMYXlvdXRGb3JGcmFtZTsKKyAg
ICBXS0J1bmRsZVBhZ2VEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAg
V0tCdW5kbGVQYWdlRGlkRGV0ZWN0WFNTRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlU2hv
dWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW07CisgICAgV0tCdW5kbGVQYWdlRGlkQ3JlYXRl
R2xvYmFsT2JqZWN0Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgZGlkQ3Jl
YXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlV2lsbERpc2Nvbm5lY3RE
T01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0Q2FsbGJhY2sgICAgd2lsbERpc2Nvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0OworICAgIFdLQnVuZGxlUGFnZURp
ZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0Q2FsbGJhY2sgICAgICAg
IGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0OworICAgIFdLQnVu
ZGxlUGFnZVdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uQ2FsbGJh
Y2sgICAgICAgIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uOwog
fTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBXS0J1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ0OGU4
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCkBAIC0wLDAgKzEsODQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24u
aCIKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCIKKyNpbmNsdWRlICJX
ZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9ET01XaW5kb3dFeHRlbnNpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6RE9NV2luZG93
RXh0ZW5zaW9uKiwgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qPiBFeHRlbnNpb25N
YXA7CitzdGF0aWMgRXh0ZW5zaW9uTWFwJiBhbGxFeHRlbnNpb25zKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEV4dGVuc2lvbk1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30K
KworUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbj4gSW5qZWN0ZWRC
dW5kbGVET01XaW5kb3dFeHRlbnNpb246OmNyZWF0ZShXZWJGcmFtZSogZnJhbWUsIEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24oZnJhbWUsIHdvcmxkKSk7Cit9CisKK0luamVj
dGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbjo6Z2V0KERPTVdpbmRvd0V4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAgIEFTU0VSVChh
bGxFeHRlbnNpb25zKCkuY29udGFpbnMoZXh0ZW5zaW9uKSk7CisgICAgcmV0dXJuIGFsbEV4dGVu
c2lvbnMoKS5nZXQoZXh0ZW5zaW9uKTsKK30KKworSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRl
bnNpb246OkluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKFdlYkZyYW1lKiBmcmFtZSwg
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogd29ybGQpCisgICAgOiBtX2NvcmVFeHRlbnNpb24o
RE9NV2luZG93RXh0ZW5zaW9uOjpjcmVhdGUoZnJhbWUtPmNvcmVGcmFtZSgpLCB3b3JsZC0+Y29y
ZVdvcmxkKCkpKQoreworICAgIGFsbEV4dGVuc2lvbnMoKS5hZGQobV9jb3JlRXh0ZW5zaW9uLmdl
dCgpLCB0aGlzKTsKK30KKworSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246On5Jbmpl
Y3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbigpCit7CisgICAgQVNTRVJUKGFsbEV4dGVuc2lv
bnMoKS5jb250YWlucyhtX2NvcmVFeHRlbnNpb24uZ2V0KCkpKTsKKyAgICBhbGxFeHRlbnNpb25z
KCkucmVtb3ZlKG1fY29yZUV4dGVuc2lvbi5nZXQoKSk7Cit9CisKK1dlYkZyYW1lKiBJbmplY3Rl
ZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6ZnJhbWUoKSBjb25zdAoreworICAgIFdlYkNvcmU6
OkZyYW1lKiBmcmFtZSA9IG1fY29yZUV4dGVuc2lvbi0+ZnJhbWUoKTsKKyAgICByZXR1cm4gZnJh
bWUgPyBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KGZyYW1lLT5sb2FkZXIoKS0+
Y2xpZW50KCkpLT53ZWJGcmFtZSgpIDogMDsKK30KKworSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZCogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OndvcmxkKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fd29ybGQpCisgICAgICAgIG1fd29ybGQgPSBJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkOjpnZXRPckNyZWF0ZShtX2NvcmVFeHRlbnNpb24tPndvcmxkKCkpOworICAgICAgICAKKyAg
ICByZXR1cm4gbV93b3JsZC5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIwOWYwZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01X
aW5kb3dFeHRlbnNpb24uaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbl9oCisjZGVmaW5lIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uX2gKKwor
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBET01XaW5kb3dFeHRlbnNpb247CisKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ7CitjbGFzcyBX
ZWJGcmFtZTsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24gOiBwdWJs
aWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0g
VHlwZUJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
amVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uPiBjcmVhdGUoV2ViRnJhbWUqLCBJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkKik7CisgICAgc3RhdGljIEluamVjdGVkQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uKiBnZXQoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKik7CisKKyAgICB2aXJ0
dWFsIH5JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbigpIE9WRVJSSURFOworICAgIAor
ICAgIFdlYkZyYW1lKiBmcmFtZSgpIGNvbnN0OworICAgIEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQqIHdvcmxkKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbihXZWJGcmFtZSosIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqKTsKKworICAgIFJl
ZlB0cjxXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24+IG1fY29yZUV4dGVuc2lvbjsKKyAgICBt
dXRhYmxlIFJlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBtX3dvcmxkOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBJbmplY3RlZEJ1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHAKaW5kZXggMjA4NGI1OC4uYmVjY2ExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5o
IgogCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCIKICNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCkBAIC0yNDgsNCArMjQ5LDQzIEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JG
cmFtZShXZWJQYWdlKiBwYWdlCiAgICAgbV9jbGllbnQuZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9y
RnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9
CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRDcmVhdGVHbG9iYWxP
YmplY3RGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBKU09iamVjdFJlZiBnbG9iYWxPYmplY3QsIFdl
YkZyYW1lKiBmcmFtZSwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKK3sKKyAgICBp
ZiAoIW1fY2xpZW50LmRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IGluamVjdGVk
V29ybGQgPSBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNyZWF0ZSh3b3JsZCk7Cisg
ICAgbV9jbGllbnQuZGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUodG9BUEkocGFnZSksIGds
b2JhbE9iamVjdCwgdG9BUEkoZnJhbWUpLCB0b0FQSShpbmplY3RlZFdvcmxkLmdldCgpKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Ojp3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoV2Vi
UGFnZSogcGFnZSwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKiBjb3JlRXh0ZW5zaW9uKQor
eworICAgIGlmICghbV9jbGllbnQud2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9t
R2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVET01XaW5kb3dFeHRlbnNpb24+IGV4dGVuc2lvbiA9IEluamVjdGVkQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uOjpnZXQoY29yZUV4dGVuc2lvbik7CisgICAgQVNTRVJUKGV4dGVuc2lvbik7Cisg
ICAgbV9jbGllbnQud2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2Jq
ZWN0KHRvQVBJKHBhZ2UpLCB0b0FQSShleHRlbnNpb24uZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJlY29u
bmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KFdlYlBhZ2UqIHBhZ2UsIFdlYkNv
cmU6OkRPTVdpbmRvd0V4dGVuc2lvbiogY29yZUV4dGVuc2lvbikKK3sKKyAgICBpZiAoIW1fY2xp
ZW50LmRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24+
IGV4dGVuc2lvbiA9IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpnZXQoY29yZUV4
dGVuc2lvbik7CisgICAgQVNTRVJUKGV4dGVuc2lvbik7CisgICAgbV9jbGllbnQuZGlkUmVjb25u
ZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QodG9BUEkocGFnZSksIHRvQVBJKGV4
dGVuc2lvbi5nZXQoKSksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCit2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5k
b3dFeHRlbnNpb24oV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKiBj
b3JlRXh0ZW5zaW9uKQoreworICAgIGlmICghbV9jbGllbnQud2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RGb3JET01XaW5kb3dFeHRlbnNpb24pCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxJ
bmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbj4gZXh0ZW5zaW9uID0gSW5qZWN0ZWRCdW5k
bGVET01XaW5kb3dFeHRlbnNpb246OmdldChjb3JlRXh0ZW5zaW9uKTsKKyAgICBBU1NFUlQoZXh0
ZW5zaW9uKTsKKyAgICBtX2NsaWVudC53aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRv
d0V4dGVuc2lvbih0b0FQSShwYWdlKSwgdG9BUEkoZXh0ZW5zaW9uLmdldCgpKSwgbV9jbGllbnQu
Y2xpZW50SW5mbyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggMDRhMmFjMi4uZGRmNmNhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwog
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTcyLDYgKzcz
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUo
V2ViUGFnZSosIFdlYkZyYW1lKik7CiAgICAgdm9pZCB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJiB1cmwsIGRvdWJsZSBk
ZWxheSwgZG91YmxlIGRhdGUpOwogICAgIHZvaWQgZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJh
bWUoV2ViUGFnZSosIFdlYkZyYW1lKik7CisKKyAgICB2b2lkIGRpZENyZWF0ZUdsb2JhbE9iamVj
dEZvckZyYW1lKFdlYlBhZ2UqLCBKU09iamVjdFJlZiBnbG9iYWxPYmplY3QsIFdlYkZyYW1lKiwg
V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKik7CisgICAgdm9pZCB3aWxsRGlzY29ubmVjdERPTVdp
bmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoV2ViUGFnZSosIFdlYkNvcmU6OkRPTVdpbmRv
d0V4dGVuc2lvbiopOworICAgIHZvaWQgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9H
bG9iYWxPYmplY3QoV2ViUGFnZSosIFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopOworICAg
IHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oV2ViUGFn
ZSosIFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGRjOTYxNjMuLjVl
YWE5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0yOCw3ICsyOCw5
IEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbi5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbi5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIgpAQCAtMTM5OCw2ICsxNDAwLDQ2
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCoKICNlbmRpZgogfQogCisKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoR2xvYmFsT2JqZWN0QXZhaWxhYmxlKERPTVdyYXBwZXJXb3Js
ZCogd29ybGQpCit7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAg
ICBpZiAoIXdlYlBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU09iamVjdFJlZiBn
bG9iYWxPYmplY3QgPSB0b1JlZihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCktPmdsb2Jh
bE9iamVjdCh3b3JsZCkpOworICAgIAorICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVy
Q2xpZW50KCkuZGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUod2ViUGFnZSwgZ2xvYmFsT2Jq
ZWN0LCBtX2ZyYW1lLCB3b3JsZCk7CisgICAgCit9CisKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2Jq
ZWN0KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAgIFdlYlBh
Z2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAg
ICByZXR1cm47CisgICAgICAgIAorICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xp
ZW50KCkud2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KHdl
YlBhZ2UsIGV4dGVuc2lvbik7Cit9CisKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QoV2ViQ29yZTo6
RE9NV2luZG93RXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9
IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisgICAgICAgIHJldHVybjsKKyAg
ICAgICAgCisgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRSZWNv
bm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCh3ZWJQYWdlLCBleHRlbnNpb24p
OworfQorCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxEZXN0cm95R2xv
YmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lv
biogZXh0ZW5zaW9uKQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7
CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIHdlYlBh
Z2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkud2lsbERlc3Ryb3lHbG9iYWxPYmplY3RG
b3JET01XaW5kb3dFeHRlbnNpb24od2ViUGFnZSwgZXh0ZW5zaW9uKTsKK30KKwogdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGIyZTFmMTQu
LjQzOTY0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE5Miw2ICsxOTIs
MTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNv
bnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopIE9WRVJSSURFOworICAgIAor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShXZWJDb3JlOjpE
T01XcmFwcGVyV29ybGQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxs
RGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoV2ViQ29yZTo6RE9N
V2luZG93RXh0ZW5zaW9uKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QoV2ViQ29yZTo6RE9NV2lu
ZG93RXh0ZW5zaW9uKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbERl
c3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oV2ViQ29yZTo6RE9NV2luZG93
RXh0ZW5zaW9uKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRFbGVtZW50
QXZhaWxhYmxlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1GaXJzdE5h
dmlnYXRpb24oKSBjb25zdCBPVkVSUklERTsgLy8gIk5hdmlnYXRpb24iIGhlcmUgbWVhbnMgYSB0
cmFuc2l0aW9uIGZyb20gb25lIHBhZ2UgdG8gYW5vdGhlciB0aGF0IGVuZHMgdXAgaW4gdGhlIGJh
Y2svZm9yd2FyZCBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
dmNwcm9qIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCmluZGV4IGZiOTVhOWQu
LmMyZmVmMDkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKQEAgLTIzNTQsNiArMjM1NCwx
NCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbi5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEluamVjdGVkQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEluamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC0yNDgwLDYgKzI0ODgsMTQgQEAK
IAkJCQkJCQk+CiAJCQkJCQk8L0ZpbGU+CiAJCQkJCQk8RmlsZQorCQkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbi5jcHAiCisJCQkJCQkJPgorCQkJCQkJPC9GaWxlPgorCQkJCQkJPEZpbGUKKwkJCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb24uaCIKKwkJCQkJCQk+CisJCQkJCQk8L0ZpbGU+CisJCQkJCQk8
RmlsZQogCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxB
UElcY1xXS0J1bmRsZUZyYW1lLmNwcCIKIAkJCQkJCQk+CiAJCQkJCQk8L0ZpbGU+CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzlmZWY5OC4uMTM4
ZGIxYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ0IEBACisyMDEyLTA0LTI0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAxMjAxNTU+IGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI2NjQKKyAgICAgICAgIE5lZWQgRE9NV2lu
ZG93IG1lY2hhbmlzbSB0byBzdXBwbGVtZW50IFVzZXJTY3JpcHRzIGZvciBwYWdlIGNhY2hlIG5v
dGlmaWNhdGlvbnMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBuZXcgYnVuZGxlIHRlc3QgdGhhdCBzdHJlc3NlcyB0aGUgYmFzaWNzIG9mIHRo
ZSBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiBBUEkuCisKKyAgICAgICAgSXQgbWFrZXMgc3Vy
ZSBuZXcgZXh0ZW5zaW9ucyBjYW4gYmUgYWRkZWQgYXQgdGhlIHJpZ2h0IHRpbWVzLCBhbmQgdGhh
dCBhbGwgb2YgdGhlIGV4cGVjdGVkCisgICAgICAgIGNhbGxiYWNrcyBhcmUgbWFkZS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNp
Yy5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUpOiBSZWNvcmQgYWxsIG1lc3NhZ2VzIHNlbnQgZnJvbSB0aGUgYnVu
ZGxlLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IFJ1biBhIHBhZ2UgdGhyb3VnaCBz
b21lIGJhc2ljIGV4ZXJjaXNlcywgdGhlbiBjb21wYXJlZCBtZXNzYWdlcyBzZW50IGZyb20gdGhl
CisgICAgICAgICAgIGJ1bmRsZSB0byBhIHNldCBvZiBrbm93biBleHBlY3RlZCBtZXNzYWdlcy4K
KworICAgICAgICBMaXN0ZW4gdG8gYWxsIHRoZSBuZXcgY2xpZW50IGNhbGxiYWNrcywgY3JlYXRl
IHNvbWUgZXh0ZW5zaW9ucywgYW5kIG1vbml0b3IgdGhlaXIgbGlmZXRpbWVzOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5k
bGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRPTVdpbmRvd0V4dGVuc2lv
bkJhc2ljOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6ZnJhbWVMb2FkRmluaXNoZWQpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OnNlbmRFeHRlbnNpb25TdGF0
ZU1lc3NhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFz
aWM6OmluaXRpYWxpemUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5z
aW9uQmFzaWM6OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2lu
ZG93RXh0ZW5zaW9uQmFzaWM6OnVwZGF0ZUV4dGVuc2lvblN0YXRlUmVjb3JkKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpzZW5kQnVuZGxlTWVzc2Fn
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6ZGlk
Q3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9N
V2luZG93RXh0ZW5zaW9uQmFzaWM6OndpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJv
bUdsb2JhbE9iamVjdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNp
b25CYXNpYzo6ZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OndpbGxEZXN0
cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZUNhbGxiYWNrKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lQ2FsbGJhY2spOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6d2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFs
T2JqZWN0Q2FsbGJhY2spOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjb25uZWN0RE9N
V2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3RDYWxsYmFjayk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbkNhbGxi
YWNrKToKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1
bmRsZUJhc2ljLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKTogTWFrZSB0aGlzIG1ldGhvZCBzdGF0aWMsIGFzIGl0IGFsd2F5
cyBzaG91bGQgaGF2ZSBiZWVuLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTItMDQtMjMgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgdGVzdC13ZWJraXRweSBpcyBmYWls
aW5nCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI4MjU3OWYuLjc2MGJjMjQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zOCw2ICszOCw4IEBACiAJCTQ0MEExRDM5MTRBMDEwM0EwMDhB
NjZGMiAvKiBLVVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ0MEExRDM4MTRBMDEwM0EwMDhBNjZGMiAvKiBLVVJMLmNwcCAqLzsgfTsKIAkJNEJG
REZGQTcxMzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkZERkZB
NjEzMTQ3NzZDMDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAq
LzsgfTsKIAkJNEJGREZGQTkxMzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFu
ZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRC
RkRGRkE4MTMxNDc3NzcwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAgKi87
IH07CisJCTUxMzkzRTIwMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNp
Yy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTM5
M0UxRTE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwICovOyB9
OworCQk1MTM5M0UyMjE1MjM5NTJEMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNf
QnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMzkzRTFEMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5k
bGUuY3BwICovOyB9OwogCQk1MTQyQjI3MTE1MTdDODhCMDBDMzJCMTkgLyogQ29udGV4dE1lbnVD
YW5Db3B5VVJMLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0MkIyNzAxNTE3Qzg4QjAwQzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVSTC5tbSAq
LzsgfTsKIAkJNTE0MkIyNzMxNTE3QzhDODAwQzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVS
TC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNDJCMjcyMTUxN0M4OTEwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwuaHRt
bCAqLzsgfTsKIAkJNTE3RTdERkMxNTExMEVBNjAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVX
aXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0U3REZCMTUxMTBFQTYwMEQwQjAwOCAvKiBNZW1vcnlDYWNo
ZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi87IH07CkBAIC0yMzAsNiArMjMy
LDggQEAKIAkJNDRBNjIyQzExNEEwRTJCNjAwNDg1MTVCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXVEZTdHJpbmdVdGlsaXRpZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJGREZGQTYxMzE0Nzc2QzAwNjFGMjRCIC8q
IEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkZERkZBODEzMTQ3Nzc3MDA2MUYyNEIgLyogSGl0
VGVzdFJlc3VsdE5vZGVIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTM5M0UxRDE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFz
aWNfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdp
bmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxMzkzRTFFMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dFeHRlbnNp
b25CYXNpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDJCMjcwMTUxN0M4
OEIwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb250ZXh0TWVudUNhbkNvcHlVUkwubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDJCMjcyMTUxN0M4OTEwMEMzMkIxOSAvKiBDb250ZXh0
TWVudUNhbkNvcHlVUkwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IENvbnRleHRN
ZW51Q2FuQ29weVVSTC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdFN0RG
QjE1MTEwRUE2MDBEMEIwMDggLyogTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERl
bGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5
Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDg4LDYgKzQ5Miw4IEBACiAJCQkJQkMyNDZEOTgxMzJGMUZFMTAwQjU2
RDdDIC8qIENhbkhhbmRsZVJlcXVlc3QuY3BwICovLAogCQkJCUJDMjQ2RDk3MTMyRjFGRTEwMEI1
NkQ3QyAvKiBDYW5IYW5kbGVSZXF1ZXN0X0J1bmRsZS5jcHAgKi8sCiAJCQkJRjZGM0YyOTAxMzM0
MkZFQjAwQTZCRjE5IC8qIENvb2tpZU1hbmFnZXIuY3BwICovLAorCQkJCTUxMzkzRTFFMTUyMzk0
NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgKi8sCisJCQkJNTEzOTNF
MUQxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAg
Ki8sCiAJCQkJQkNCNjgwM0YxMjZGQkZFMTAwNjQyQTYxIC8qIERvY3VtZW50U3RhcnRVc2VyU2Ny
aXB0QWxlcnRDcmFzaC5jcHAgKi8sCiAJCQkJQkNCNjgwNDExMjZGQkZGMTAwNjQyQTYxIC8qIERv
Y3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaF9CdW5kbGUuY3BwICovLAogCQkJCUMwNDVG
OTQ0MTM4NUMyRTkwMEMwRjNDRCAvKiBEb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3Bw
ICovLApAQCAtODQ2LDYgKzg1Miw3IEBACiAJCQkJNTE0MkIyNzExNTE3Qzg4QjAwQzMyQjE5IC8q
IENvbnRleHRNZW51Q2FuQ29weVVSTC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM1NDBGNzc2MTUy
RTREQTAwMEE0MEM4QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
RkNGNzlBMTUzNEFDNkQwMDEwNDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTM5M0UyMDE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2lu
ZG93RXh0ZW5zaW9uQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC04NzUsNiArODgyLDcgQEAK
IAkJCQlCQzIyRDMxOTE0REM2OEI5MDBGRkIxREQgLyogVXNlck1lc3NhZ2VfQnVuZGxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzQUY0RUNFMTUwNkYwNjQwMDdGRDU3RSAvKiBOZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxRkNGN0ExMTUzNEIyQTAwMDEwNDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEzOTNFMjIxNTIzOTUyRDAwNUYz
OUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dF
eHRlbnNpb25CYXNpYy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9N
V2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjQ4YjYyYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwCkBAIC0wLDAgKzEsMTQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdC5oIgor
I2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgZmluaXNoZWQ7Citz
dGF0aWMgaW50IGxpdmVET01FeHRlbnNpb25Db3VudDsKKworc3RhdGljIGNvbnN0IGNoYXIqIGV4
cGVjdGVkTWVzc2FnZXNbXSA9IHsKKyJEaWRDcmVhdGVHbG9iYWxPYmplY3RGb3JGcmFtZSBjYWxs
ZWQiLAorIkRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lIGNhbGxlZCIsCisiRGlkQ3JlYXRl
R2xvYmFsT2JqZWN0Rm9yRnJhbWUgY2FsbGVkIiwKKyJEaWRDcmVhdGVHbG9iYWxPYmplY3RGb3JG
cmFtZSBjYWxsZWQiLAorIlN1YmZyYW1lIGZpbmlzaGVkIGxvYWRpbmciLAorIkV4dGVuc2lvbiBz
dGF0ZXM6XG5GaXJzdCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIENvbm5lY3Rl
ZFxuRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVk
XG5GaXJzdCBwYWdlLCBzdWJmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0
IHBhZ2UsIHN1YmZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcblNlY29uZCBw
YWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZFxuU2Vjb25kIHBhZ2Us
IG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZCIsCisiTWFpbiBmcmFt
ZSBmaW5pc2hlZCBsb2FkaW5nIiwKKyJFeHRlbnNpb24gc3RhdGVzOlxuRmlyc3QgcGFnZSwgbWFp
biBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0IHBhZ2UsIG1haW4gZnJh
bWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUs
IHN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5GaXJzdCBwYWdlLCBzdWJmcmFtZSwgbm9uLXN0
YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5TZWNvbmQgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRh
cmQgd29ybGQgLSBVbmNyZWF0ZWRcblNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRh
cmQgd29ybGQgLSBVbmNyZWF0ZWQiLAorIldpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
RnJvbUdsb2JhbE9iamVjdCBjYWxsZWQiLAorIldpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5z
aW9uRnJvbUdsb2JhbE9iamVjdCBjYWxsZWQiLAorIldpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0
ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCBjYWxsZWQiLAorIldpbGxEaXNjb25uZWN0RE9NV2luZG93
RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCBjYWxsZWQiLAorIkRpZENyZWF0ZUdsb2JhbE9iamVj
dEZvckZyYW1lIGNhbGxlZCIsCisiRGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUgY2FsbGVk
IiwKKyJNYWluIGZyYW1lIGZpbmlzaGVkIGxvYWRpbmciLAorIkV4dGVuc2lvbiBzdGF0ZXM6XG5G
aXJzdCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIERpc2Nvbm5lY3RlZFxuRmly
c3QgcGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gRGlzY29ubmVjdGVkXG5G
aXJzdCBwYWdlLCBzdWJmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBEaXNjb25uZWN0ZWRcbkZpcnN0
IHBhZ2UsIHN1YmZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBEaXNjb25uZWN0ZWRcblNlY29u
ZCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuU2Vjb25kIHBh
Z2UsIG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZCIsCisiV2lsbERp
c2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0IGNhbGxlZCIsCisiV2ls
bERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0IGNhbGxlZCIsCisi
RGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QgY2FsbGVkIiwKKyJE
aWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCBjYWxsZWQiLAorIkRp
ZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0IGNhbGxlZCIsCisiRGlk
UmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QgY2FsbGVkIiwKKyJNYWlu
IGZyYW1lIGZpbmlzaGVkIGxvYWRpbmciLAorIkV4dGVuc2lvbiBzdGF0ZXM6XG5GaXJzdCBwYWdl
LCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuRmlyc3QgcGFnZSwgbWFp
biBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5GaXJzdCBwYWdlLCBzdWJm
cmFtZSwgc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBu
b24tc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcblNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBz
dGFuZGFyZCB3b3JsZCAtIERpc2Nvbm5lY3RlZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUsIG5v
bi1zdGFuZGFyZCB3b3JsZCAtIERpc2Nvbm5lY3RlZCIsCisiV2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RGb3JET01XaW5kb3dFeHRlbnNpb24gY2FsbGVkIiwKKyJXaWxsRGVzdHJveUdsb2JhbE9iamVj
dEZvckRPTVdpbmRvd0V4dGVuc2lvbiBjYWxsZWQiLAorIldpbGxEZXN0cm95R2xvYmFsT2JqZWN0
Rm9yRE9NV2luZG93RXh0ZW5zaW9uIGNhbGxlZCIsCisiV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RG
b3JET01XaW5kb3dFeHRlbnNpb24gY2FsbGVkIiwKKyJXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZv
ckRPTVdpbmRvd0V4dGVuc2lvbiBjYWxsZWQiLAorIldpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9y
RE9NV2luZG93RXh0ZW5zaW9uIGNhbGxlZCIsCisiRXh0ZW5zaW9uIHN0YXRlczpcbkZpcnN0IHBh
Z2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5GaXJzdCBwYWdlLCBt
YWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBEZXN0cm95ZWRcbkZpcnN0IHBhZ2UsIHN1
YmZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIERlc3Ryb3llZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUs
IG5vbi1zdGFuZGFyZCB3b3JsZCAtIERlc3Ryb3llZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUs
IHN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5TZWNvbmQgcGFnZSwgbWFpbiBmcmFtZSwgbm9u
LXN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkIiwKKyJUZXN0Q29tcGxldGUiCit9OworCitzdGF0
aWMgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiA+IG1lc3NhZ2VzOworCitzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQq
KQoreworICAgIEFTU0VSVF9OT1RfTlVMTChtZXNzYWdlQm9keSk7CisgICAgRVhQRUNUX0VRKFdL
U3RyaW5nR2V0VHlwZUlEKCksIFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSk7CisKKyAgICBXS1N0
cmluZ1JlZiBib2R5U3RyaW5nID0gKFdLU3RyaW5nUmVmKW1lc3NhZ2VCb2R5OworICAgIG1lc3Nh
Z2VzLmFwcGVuZChib2R5U3RyaW5nKTsKKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lIikp
CisgICAgICAgIGxpdmVET01FeHRlbnNpb25Db3VudCsrOworICAgIGVsc2UgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJXaWxsRGVzdHJveUdsb2JhbE9iamVj
dEZvckRPTVdpbmRvd0V4dGVuc2lvbiIpKSB7CisgICAgICAgIGxpdmVET01FeHRlbnNpb25Db3Vu
dC0tOworICAgICAgICBpZiAoIWxpdmVET01FeHRlbnNpb25Db3VudCkKKyAgICAgICAgICAgIGZp
bmlzaGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJEaWRGaW5pc2hMb2FkRm9yTWFpbkZyYW1lIikgfHwgV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlRlc3RDb21wbGV0ZSIpKQorICAgICAg
ICBmaW5pc2hlZCA9IHRydWU7CisgICAgCit9CisKK1RFU1QoV2ViS2l0MiwgRE9NV2luZG93RXh0
ZW5zaW9uQmFzaWMpCit7CisgICAgV0tSZXRhaW5QdHI8V0tQYWdlR3JvdXBSZWY+IHBhZ2VHcm91
cChBZG9wdFdLLCBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJET01XaW5kb3dFeHRlbnNpb25CYXNpY1BhZ2VHcm91cCIpKSk7IAor
CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNy
ZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkRPTVdpbmRvd0V4dGVuc2lvbkJhc2lj
IiwgcGFnZUdyb3VwLmdldCgpKSk7CisKKyAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dCBpbmplY3RlZEJ1bmRsZUNsaWVudDsKKyAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50
LCAwLCBzaXplb2YoaW5qZWN0ZWRCdW5kbGVDbGllbnQpKTsKKyAgICBpbmplY3RlZEJ1bmRsZUNs
aWVudC52ZXJzaW9uID0gMDsKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC5jbGllbnRJbmZvID0g
MDsKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZSA9IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworICAgIFdLQ29u
dGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksICZpbmplY3RlZEJ1bmRs
ZUNsaWVudCk7CisgICAgCisgICAgLy8gVGhlIGRlZmF1bHQgY2FjaGUgbW9kZWwgaGFzIGEgY2Fw
YWNpdHkgb2YgMCwgc28gaXQgaXMgbmVjZXNzYXJ5IHRvIHN3aXRjaCB0byBhIGNhY2hlCisgICAg
Ly8gbW9kZWwgdGhhdCBhY3R1YWxseSBhbGxvd3MgZm9yIGEgcGFnZSBjYWNoZS4KKyAgICBXS0Nv
bnRleHRTZXRDYWNoZU1vZGVsKGNvbnRleHQuZ2V0KCksIGtXS0NhY2hlTW9kZWxEb2N1bWVudEJy
b3dzZXIpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSwgcGFn
ZUdyb3VwLmdldCgpKTsKKyAgICAKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGV4dGVuc2lvbnMgZm9y
IGVhY2ggZnJhbWUgYXJlIGluc3RhbGxlZCBpbiBlYWNoIHdvcmxkLgorICAgIFdLUmV0YWluUHRy
PFdLVVJMUmVmPiB1cmwxKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1w
bGUtaWZyYW1lIiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwg
dXJsMS5nZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBmaW5pc2hlZCA9
IGZhbHNlOworICAgIAorICAgIC8vIE1ha2Ugc3VyZSB0aG9zZSBmaXJzdCA0IGV4dGVuc2lvbnMg
YXJlIGRpc2Nvbm5lY3RlZCwgYW5kIDIgbmV3IG9uZXMgYXJlIGluc3RhbGxlZC4KKyAgICBXS1Jl
dGFpblB0cjxXS1VSTFJlZj4gdXJsMihBZG9wdFdLLCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJj
ZSgic2ltcGxlIiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwg
dXJsMi5nZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBmaW5pc2hlZCA9
IGZhbHNlOworCisgICAgLy8gTWFrZSBzdXJlIHRob3NlIHR3byBhcmUgZGlzY29ubmVjdGVkLCBh
bmQgdGhlIGZpcnN0IGZvdXIgYXJlIHJlY29ubmVjdGVkLgorICAgIFdLUGFnZUdvQmFjayh3ZWJW
aWV3LnBhZ2UoKSk7CisKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBmaW5pc2hlZCA9
IGZhbHNlOworICAgIAorICAgIC8vIE1ha2Ugc3VyZSB0aGUgMiBkaXNjb25uZWN0ZWQgZXh0ZW5z
aW9ucyBpbiB0aGUgcGFnZSBjYWNoZSBhbmQgdGhlIDQgYWN0aXZlIGV4dGVuc2lvbnMgYXJlIGFs
bCBkZXN0cm95ZWQuCisgICAgV0tQYWdlQ2xvc2Uod2ViVmlldy5wYWdlKCkpOworCisgICAgVXRp
bDo6cnVuKCZmaW5pc2hlZCk7CisgICAgICAgIAorICAgIGNvbnN0IHNpemVfdCBleHBlY3RlZFNp
emUgPSBzaXplb2YoZXhwZWN0ZWRNZXNzYWdlcykgLyBzaXplb2YoY29uc3QgY2hhciopOworICAg
IEVYUEVDVF9FUShtZXNzYWdlcy5zaXplKCksIGV4cGVjdGVkU2l6ZSk7CisgICAgCisgICAgaWYg
KG1lc3NhZ2VzLnNpemUoKSAhPSBleHBlY3RlZFNpemUpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1lc3NhZ2VzLnNpemUoKTsgKytpKQorICAgICAg
ICBFWFBFQ1RfRVEoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlc1tpXS5nZXQo
KSwgZXhwZWN0ZWRNZXNzYWdlc1tpXSksIHRydWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
RE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxOTM3ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNf
QnVuZGxlLmNwcApAQCAtMCwwICsxLDI1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQy
L1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRs
ZUZyYW1lLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2UuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQnVuZGxlUGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBy
aXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlU2NyaXB0V29ybGQuaD4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lQ2FsbGJh
Y2soV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBXS1R5cGVSZWYqLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKK3N0YXRpYyB2b2lkIGRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZy
YW1lQ2FsbGJhY2soV0tCdW5kbGVQYWdlUmVmLCBKU09iamVjdFJlZiwgV0tCdW5kbGVGcmFtZVJl
ZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CitzdGF0
aWMgdm9pZCB3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3RD
YWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3N0YXRpYyB2b2lkIGRpZFJlY29ubmVjdERPTVdpbmRv
d0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0Q2FsbGJhY2soV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CitzdGF0aWMg
dm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNr
KFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOworCisKK2VudW0gRXh0ZW5zaW9uU3RhdGUgeworICAgIFVuY3JlYXRl
ZCA9IDAsIENvbm5lY3RlZCwgRGlzY29ubmVjdGVkLCBEZXN0cm95ZWQKK307CisKK2NvbnN0IGNo
YXIqIHN0YXRlTmFtZXNbNF0gPSB7CisgICAgIlVuY3JlYXRlZCIsCisgICAgIkNvbm5lY3RlZCIs
CisgICAgIkRpc2Nvbm5lY3RlZCIsCisgICAgIkRlc3Ryb3llZCIKK307CisKK3R5cGVkZWYgc3Ry
dWN0IHsKKyAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIEV4dGVuc2lvblN0YXRlIHN0YXRlOwor
fSBFeHRlbnNpb25SZWNvcmQ7CisgICAgCitjbGFzcyBET01XaW5kb3dFeHRlbnNpb25CYXNpYyA6
IHB1YmxpYyBJbmplY3RlZEJ1bmRsZVRlc3QgeworcHVibGljOgorICAgIERPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICAKKyAgICB2aXJ0
dWFsIHZvaWQgaW5pdGlhbGl6ZShXS0J1bmRsZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVm
KTsKKyAgICAKKyAgICB2b2lkIGRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lKFdLQnVuZGxl
RnJhbWVSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYpOworICAgIHZvaWQgd2lsbERpc2Nvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uUmVmKTsKKyAgICB2b2lkIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xv
YmFsT2JqZWN0KFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmKTsKKyAgICB2b2lkIHdpbGxE
ZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKFdLQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uUmVmKTsKKworICAgIHZvaWQgZnJhbWVMb2FkRmluaXNoZWQoV0tCdW5kbGVGcmFt
ZVJlZik7CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29yZChX
S0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgRXh0ZW5zaW9uU3RhdGUpOworICAgIHZvaWQg
c2VuZEV4dGVuc2lvblN0YXRlTWVzc2FnZSgpOworICAgIHZvaWQgc2VuZEJ1bmRsZU1lc3NhZ2Uo
Y29uc3QgY2hhciopOworCisgICAgV0tCdW5kbGVQYWdlR3JvdXBSZWYgbV9wYWdlR3JvdXA7Cisg
ICAgV0tCdW5kbGVSZWYgbV9idW5kbGU7CisgICAgRXh0ZW5zaW9uUmVjb3JkIG1fZXh0ZW5zaW9u
UmVjb3Jkc1s2XTsKKyAgICBIYXNoTWFwPFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBp
bnQ+IG1fZXh0ZW5zaW9uVG9SZWNvcmRNYXA7CisgICAgYm9vbCBtX2ZpbmlzaGVkT25lTWFpbkZy
YW1lTG9hZDsKKyAgICBpbnQgbV9udW1iZXJPZkRlc3Ryb3llZEV4dGVuc2lvbnM7Cit9OworCitz
dGF0aWMgSW5qZWN0ZWRCdW5kbGVUZXN0OjpSZWdpc3RlcjxET01XaW5kb3dFeHRlbnNpb25CYXNp
Yz4gcmVnaXN0cmFyKCJET01XaW5kb3dFeHRlbnNpb25CYXNpYyIpOworCitET01XaW5kb3dFeHRl
bnNpb25CYXNpYzo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWMoY29uc3Qgc3RkOjpzdHJpbmcmIGlk
ZW50aWZpZXIpCisgICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKKyAgICAsIG1f
ZmluaXNoZWRPbmVNYWluRnJhbWVMb2FkKGZhbHNlKQorICAgICwgbV9udW1iZXJPZkRlc3Ryb3ll
ZEV4dGVuc2lvbnMoMCkKK3sKKyAgICBtX2V4dGVuc2lvblJlY29yZHNbMF0ubmFtZSA9ICJGaXJz
dCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCI7CisgICAgbV9leHRlbnNpb25SZWNv
cmRzWzFdLm5hbWUgPSAiRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxk
IjsKKyAgICBtX2V4dGVuc2lvblJlY29yZHNbMl0ubmFtZSA9ICJGaXJzdCBwYWdlLCBzdWJmcmFt
ZSwgc3RhbmRhcmQgd29ybGQiOworICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1szXS5uYW1lID0gIkZp
cnN0IHBhZ2UsIHN1YmZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQiOworICAgIG1fZXh0ZW5zaW9u
UmVjb3Jkc1s0XS5uYW1lID0gIlNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3Js
ZCI7CisgICAgbV9leHRlbnNpb25SZWNvcmRzWzVdLm5hbWUgPSAiU2Vjb25kIHBhZ2UsIG1haW4g
ZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCI7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCA2OyArK2kpCisgICAgICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1tpXS5zdGF0ZSA9IFVuY3Jl
YXRlZDsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6ZnJhbWVMb2FkRmluaXNo
ZWQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKK3sKKyAgICBib29sIG1haW5GcmFtZSA9ICFXS0J1
bmRsZUZyYW1lR2V0UGFyZW50RnJhbWUoZnJhbWUpOworICAgIGlmIChtYWluRnJhbWUpCisgICAg
ICAgIG1fZmluaXNoZWRPbmVNYWluRnJhbWVMb2FkID0gdHJ1ZTsKKworICAgIGNoYXIgYm9keVsx
NjM4NF07CisgICAgc3ByaW50Zihib2R5LCAiJXMgZmluaXNoZWQgbG9hZGluZyIsIG1haW5GcmFt
ZSA/ICJNYWluIGZyYW1lIiA6ICJTdWJmcmFtZSIpOworICAgIAorICAgIC8vIE9ubHkgY29uc2lk
ZXIgbG9hZCBmaW5pc2hlZCBmb3IgdGhlIG1haW4gZnJhbWUKKyAgICBjb25zdCBjaGFyKiBuYW1l
ID0gbWFpbkZyYW1lID8gIkRpZEZpbmlzaExvYWRGb3JNYWluRnJhbWUiIDogIkRpZEZpbmlzaExv
YWRGb3JGcmFtZSI7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG5hbWUpKTsKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKGJvZHkpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxl
LCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIAorICAgIHNlbmRF
eHRlbnNpb25TdGF0ZU1lc3NhZ2UoKTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25CYXNp
Yzo6c2VuZEV4dGVuc2lvblN0YXRlTWVzc2FnZSgpCit7CisgICAgY2hhciBib2R5WzE2Mzg0XTsK
KyAgICBzcHJpbnRmKGJvZHksICJFeHRlbnNpb24gc3RhdGVzOlxuJXMgLSAlc1xuJXMgLSAlc1xu
JXMgLSAlc1xuJXMgLSAlc1xuJXMgLSAlc1xuJXMgLSAlcyIsCisgICAgICAgIG1fZXh0ZW5zaW9u
UmVjb3Jkc1swXS5uYW1lLCBzdGF0ZU5hbWVzW21fZXh0ZW5zaW9uUmVjb3Jkc1swXS5zdGF0ZV0s
CisgICAgICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1sxXS5uYW1lLCBzdGF0ZU5hbWVzW21fZXh0ZW5z
aW9uUmVjb3Jkc1sxXS5zdGF0ZV0sCisgICAgICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1syXS5uYW1l
LCBzdGF0ZU5hbWVzW21fZXh0ZW5zaW9uUmVjb3Jkc1syXS5zdGF0ZV0sCisgICAgICAgIG1fZXh0
ZW5zaW9uUmVjb3Jkc1szXS5uYW1lLCBzdGF0ZU5hbWVzW21fZXh0ZW5zaW9uUmVjb3Jkc1szXS5z
dGF0ZV0sCisgICAgICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1s0XS5uYW1lLCBzdGF0ZU5hbWVzW21f
ZXh0ZW5zaW9uUmVjb3Jkc1s0XS5zdGF0ZV0sCisgICAgICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1s1
XS5uYW1lLCBzdGF0ZU5hbWVzW21fZXh0ZW5zaW9uUmVjb3Jkc1s1XS5zdGF0ZV0pOworCisgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXh0ZW5zaW9uU3RhdGVzIikpOworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoYm9keSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3Nh
Z2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0
ZW5zaW9uQmFzaWM6OmluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgdXNl
ckRhdGEpCit7CisgICAgYXNzZXJ0KFdLR2V0VHlwZUlEKHVzZXJEYXRhKSA9PSBXS0J1bmRsZVBh
Z2VHcm91cEdldFR5cGVJRCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXAg
PSBzdGF0aWNfY2FzdDxXS0J1bmRsZVBhZ2VHcm91cFJlZj4odXNlckRhdGEpOworCisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNvdXJjZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiYWxlcnQoJ1VuaW1wb3J0YW50IGFsZXJ0Jyk7IikpOworICAgIFdLQnVuZGxl
QWRkVXNlclNjcmlwdChidW5kbGUsIHBhZ2VHcm91cCwgV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0
ZVdvcmxkKCksIHNvdXJjZS5nZXQoKSwgMCwgMCwgMCwga1dLSW5qZWN0QXREb2N1bWVudFN0YXJ0
LCBrV0tJbmplY3RJbkFsbEZyYW1lcyk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uQmFz
aWM6OmRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSkKK3sgICAgCisgICAgbV9idW5kbGUgPSBidW5kbGU7CisKKyAgICBXS0J1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQgcGFnZUxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQoJnBhZ2VMb2FkZXJDbGllbnQs
IDAsIHNpemVvZihwYWdlTG9hZGVyQ2xpZW50KSk7CisgICAgCisgICAgcGFnZUxvYWRlckNsaWVu
dC52ZXJzaW9uID0gMTsKKyAgICBwYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8gPSB0aGlzOwor
ICAgIHBhZ2VMb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9h
ZEZvckZyYW1lQ2FsbGJhY2s7CisgICAgcGFnZUxvYWRlckNsaWVudC5kaWRDcmVhdGVHbG9iYWxP
YmplY3RGb3JGcmFtZSA9IGRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lQ2FsbGJhY2s7Cisg
ICAgcGFnZUxvYWRlckNsaWVudC53aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21H
bG9iYWxPYmplY3QgPSB3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxP
YmplY3RDYWxsYmFjazsKKyAgICBwYWdlTG9hZGVyQ2xpZW50LmRpZFJlY29ubmVjdERPTVdpbmRv
d0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0ID0gZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
VG9HbG9iYWxPYmplY3RDYWxsYmFjazsKKyAgICBwYWdlTG9hZGVyQ2xpZW50LndpbGxEZXN0cm95
R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uID0gd2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RGb3JET01XaW5kb3dFeHRlbnNpb25DYWxsYmFjazsKKyAgICAKKyAgICBXS0J1bmRsZVBhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZwYWdlTG9hZGVyQ2xpZW50KTsKK30KKyAgICAKK3Zv
aWQgRE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OnVwZGF0ZUV4dGVuc2lvblN0YXRlUmVjb3JkKFdL
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiwgRXh0ZW5zaW9uU3RhdGUgc3Rh
dGUpCit7CisgICAgaW50IGluZGV4ID0gbV9leHRlbnNpb25Ub1JlY29yZE1hcC5nZXQoZXh0ZW5z
aW9uKTsKKyAgICBtX2V4dGVuc2lvblJlY29yZHNbaW5kZXhdLnN0YXRlID0gc3RhdGU7Cit9CisK
K3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OnNlbmRCdW5kbGVNZXNzYWdlKGNvbnN0IGNo
YXIqIG1lc3NhZ2UpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTWVzc2FnZSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobWVzc2FnZSkpOworICAgIFdL
QnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIHdrTWVzc2FnZS5nZXQoKSwgd2tNZXNzYWdlLmdl
dCgpKTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6ZGlkQ3JlYXRlR2xvYmFs
T2JqZWN0Rm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRXb3Js
ZFJlZiB3b3JsZCkKK3sKKyAgICBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNp
b24gPSBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkNyZWF0ZShmcmFtZSwgd29ybGQpOworCisg
ICAgaW50IGluZGV4OworICAgIGJvb2wgc3RhbmRhcmQ7CisgICAgc3RhbmRhcmQgPSB3b3JsZCA9
PSBXS0J1bmRsZVNjcmlwdFdvcmxkTm9ybWFsV29ybGQoKTsKKworICAgIGlmIChXS0J1bmRsZUZy
YW1lR2V0UGFyZW50RnJhbWUoZnJhbWUpKQorICAgICAgICBpbmRleCA9IHN0YW5kYXJkID8gMiA6
IDM7CisgICAgZWxzZQorICAgICAgICBpbmRleCA9IG1fZmluaXNoZWRPbmVNYWluRnJhbWVMb2Fk
ID8gKHN0YW5kYXJkID8gNCA6IDUpIDogKHN0YW5kYXJkID8gMCA6IDEpOworCisgICAgbV9leHRl
bnNpb25Ub1JlY29yZE1hcC5zZXQoZXh0ZW5zaW9uLCBpbmRleCk7CisKKyAgICB1cGRhdGVFeHRl
bnNpb25TdGF0ZVJlY29yZChleHRlbnNpb24sIENvbm5lY3RlZCk7CisgICAgc2VuZEJ1bmRsZU1l
c3NhZ2UoIkRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lIGNhbGxlZCIpOworfQorCit2b2lk
IERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjp3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lv
bkZyb21HbG9iYWxPYmplY3QoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9u
KQoreworICAgIHVwZGF0ZUV4dGVuc2lvblN0YXRlUmVjb3JkKGV4dGVuc2lvbiwgRGlzY29ubmVj
dGVkKTsKKyAgICBzZW5kQnVuZGxlTWVzc2FnZSgiV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Gcm9tR2xvYmFsT2JqZWN0IGNhbGxlZCIpOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljOjpkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChX
S0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24pCit7CisgICAgdXBkYXRlRXh0
ZW5zaW9uU3RhdGVSZWNvcmQoZXh0ZW5zaW9uLCBDb25uZWN0ZWQpOworICAgIHNlbmRCdW5kbGVN
ZXNzYWdlKCJEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCBjYWxs
ZWQiKTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6d2lsbERlc3Ryb3lHbG9i
YWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25S
ZWYgZXh0ZW5zaW9uKQoreworICAgIG1fbnVtYmVyT2ZEZXN0cm95ZWRFeHRlbnNpb25zKys7CisK
KyAgICB1cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29yZChleHRlbnNpb24sIERlc3Ryb3llZCk7Cisg
ICAgc2VuZEJ1bmRsZU1lc3NhZ2UoIldpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93
RXh0ZW5zaW9uIGNhbGxlZCIpOworICAgIAorICAgIGlmIChtX251bWJlck9mRGVzdHJveWVkRXh0
ZW5zaW9ucyA9PSA2KSB7CisgICAgICAgIHNlbmRFeHRlbnNpb25TdGF0ZU1lc3NhZ2UoKTsKKyAg
ICAgICAgc2VuZEJ1bmRsZU1lc3NhZ2UoIlRlc3RDb21wbGV0ZSIpOworICAgIH0KKyAgICAKKyAg
ICBXS1JlbGVhc2UoZXh0ZW5zaW9uKTsKK30KKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZv
ckZyYW1lQ2FsbGJhY2soV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBX
S1R5cGVSZWYqLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgICgoRE9NV2luZG93RXh0
ZW5zaW9uQmFzaWMqKWNsaWVudEluZm8pLT5mcmFtZUxvYWRGaW5pc2hlZChmcmFtZSk7Cit9CisK
K3N0YXRpYyB2b2lkIGRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lQ2FsbGJhY2soV0tCdW5k
bGVQYWdlUmVmLCBKU09iamVjdFJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVT
Y3JpcHRXb3JsZFJlZiB3b3JsZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICAoKERP
TVdpbmRvd0V4dGVuc2lvbkJhc2ljKiljbGllbnRJbmZvKS0+ZGlkQ3JlYXRlR2xvYmFsT2JqZWN0
Rm9yRnJhbWUoZnJhbWUsIHdvcmxkKTsKK30KKworc3RhdGljIHZvaWQgd2lsbERpc2Nvbm5lY3RE
T01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0Q2FsbGJhY2soV0tCdW5kbGVQYWdlUmVm
LCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24sIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgKChET01XaW5kb3dFeHRlbnNpb25CYXNpYyopY2xpZW50SW5mbykt
PndpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdChleHRlbnNp
b24pOworfQorCitzdGF0aWMgdm9pZCBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ds
b2JhbE9iamVjdENhbGxiYWNrKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRl
bnNpb25SZWYgZXh0ZW5zaW9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgICgoRE9N
V2luZG93RXh0ZW5zaW9uQmFzaWMqKWNsaWVudEluZm8pLT5kaWRSZWNvbm5lY3RET01XaW5kb3dF
eHRlbnNpb25Ub0dsb2JhbE9iamVjdChleHRlbnNpb24pOworfQorCitzdGF0aWMgdm9pZCB3aWxs
RGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrKFdLQnVuZGxl
UGFnZVJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uICwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICAoKERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljKiljbGll
bnRJbmZvKS0+d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oZXh0
ZW5zaW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlQmFzaWMuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlQmFzaWMu
Y3BwCmluZGV4IDQwY2EyNjkuLjA4M2E4OGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAKQEAgLTM0LDcg
KzM0LDcgQEAgc3RhdGljIGJvb2wgZG9uZTsKIHN0YXRpYyBib29sIGxvYWREb25lOwogc3RhdGlj
IGJvb2wgbWVzc2FnZVJlY2VpdmVkOwogCi12b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwg
V0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgbWVzc2FnZVJlY2VpdmVkID0gdHJ1ZTsKICAgICBp
ZiAobG9hZERvbmUpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggMzJjMGM5ZC4uYjE2YmU3
YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtMjM2LDYgKzIzNiwxMCBAQCBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAg
ICAgICAgMCwgLy8gZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUKICAg
ICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWUsCiAgICAgICAgIDAsIC8vIHNob3VsZEdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtCisgICAgICAgIDAsIC8vIGRpZENyZWF0ZUdsb2JhbE9iamVjdEZvckZy
YW1lCisgICAgICAgIDAsIC8vIHdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUds
b2JhbE9iamVjdAorICAgICAgICAwLCAvLyBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25U
b0dsb2JhbE9iamVjdAorICAgICAgICAwLCAvLyB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRP
TVdpbmRvd0V4dGVuc2lvbgogICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNs
aWVudChtX3BhZ2UsICZsb2FkZXJDbGllbnQpOwogCg==
</data>
<flag name="review"
          id="143993"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>