<?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>132855</bug_id>
          
          <creation_ts>2014-05-13 00:03:31 -0700</creation_ts>
          <short_desc>[MediaStream] [EFL] getUserMedia throws DomException always</short_desc>
          <delta_ts>2014-06-24 06:44:51 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>123158</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Praveen Jadhav">praveen.j</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dev_sachin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1008879</commentid>
    <comment_count>0</comment_count>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2014-05-13 00:03:31 -0700</bug_when>
    <thetext>&lt;!DOCTYPE html&gt;
&lt;html&gt;
	&lt;head&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;script&gt;
		function getUserMedia(dictionary, callback) {
		  try {
			navigator.webkitGetUserMedia(dictionary, callback, error);
		      } catch (e) {
			alert(&apos;webkitGetUserMedia threw exception :&apos; + e);
		      }
		}

		function error() {
                      alert(&quot;webkitGetUserMedia threw error&quot;);
                }

		function sourceCallback(sources) {
                      alert(&apos;got sources&apos; + sources[0].sourceId);
                }

		function gotStream(stream) {
		  // Disable the audio track =&gt; should mute output.
		  var audioTracks = stream.getAudioTracks();

		  audioTracks[0].getSources(sourceCallback);
		}

		getUserMedia({audio:true}, gotStream);
		&lt;/script&gt;
	&lt;/body&gt;
&lt;/html&gt;


------------------------------------------------------

Above test content will always throw Domexception with &quot;NotSupportedError&quot; message. However, the same case works fine when it is run as a layout test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011188</commentid>
    <comment_count>1</comment_count>
      <attachid>231947</attachid>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2014-05-23 00:02:26 -0700</bug_when>
    <thetext>Created attachment 231947
Patch

Patch initializes call to provideUserMediaTo() for EFL port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011221</commentid>
    <comment_count>2</comment_count>
      <attachid>231956</attachid>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2014-05-23 04:33:53 -0700</bug_when>
    <thetext>Created attachment 231956
Patch

Patch updated to resolve GTK and Mac build errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011272</commentid>
    <comment_count>3</comment_count>
      <attachid>231956</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-05-23 10:08:41 -0700</bug_when>
    <thetext>Comment on attachment 231956
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/WKPage.cpp:1487
&gt; +                return true;

This indentation isn&apos;t needed.

&gt; Source/WebKit2/UIProcess/API/C/WKPageUIClient.h:195
&gt; +    WKPageDecidePolicyForUserMediaPermissionRequestCallback    decidePolicyForUserMediaPermissionRequest;

I don&apos;t know why the other field names in this struct are aligned, but the new one should probably be aligned too.

&gt; Source/WebKit2/UIProcess/API/C/WKPageUIClient.h:247
&gt; +    WKPageDecidePolicyForUserMediaPermissionRequestCallback    decidePolicyForUserMediaPermissionRequest;

Ditto.

&gt; Source/WebKit2/UIProcess/API/C/WKPageUIClient.h:366
&gt; +    WKPageDecidePolicyForUserMediaPermissionRequestCallback    decidePolicyForUserMediaPermissionRequest;

Ditto.

&gt; Source/WebKit2/UIProcess/MediaStream/UserMediaPermissionRequestManagerProxy.h:53
&gt; +    typedef HashMap&lt;uint64_t, RefPtr&lt;UserMediaPermissionRequest&gt; &gt; PendingRequestMap;

Nit: the space in &quot;&gt; &gt;&quot; is unnecessary.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebUserMediaClient.cpp:69
&gt; +    // TODO: Create audio and video stream sources here.

Why would you automatically create audio and video sources here when you don&apos;t know what the page wants yet?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebUserMediaClient.cpp:78
&gt; +        startUserMedia();

Is this necessary?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2810
&gt; +        return m_userMediaPermissionRequestManager.get();

Why the indentation?

&gt; Tools/ChangeLog:3
&gt; +        [MediaStream] [EFL] getUserMedia throws DomException always..

Nit: you have two periods here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011465</commentid>
    <comment_count>4</comment_count>
      <attachid>231956</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-05-23 19:54:06 -0700</bug_when>
    <thetext>Comment on attachment 231956
Patch

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

r- because of a lot of comments.

&gt; Source/WebKit2/PlatformEfl.cmake:124
&gt; +    UIProcess/MediaStream/UserMediaPermissionRequest.cpp

It would be nicer if you place this common files(which are used by GTK together) to CMakeLists.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011643</commentid>
    <comment_count>5</comment_count>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2014-05-25 22:46:41 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 231956 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=231956&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/WKPage.cpp:1487
&gt; &gt; +                return true;
&gt; 
&gt; This indentation isn&apos;t needed.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/WKPageUIClient.h:195
&gt; &gt; +    WKPageDecidePolicyForUserMediaPermissionRequestCallback    decidePolicyForUserMediaPermissionRequest;
&gt; 
&gt; I don&apos;t know why the other field names in this struct are aligned, but the new one should probably be aligned too.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/WKPageUIClient.h:247
&gt; &gt; +    WKPageDecidePolicyForUserMediaPermissionRequestCallback    decidePolicyForUserMediaPermissionRequest;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/WKPageUIClient.h:366
&gt; &gt; +    WKPageDecidePolicyForUserMediaPermissionRequestCallback    decidePolicyForUserMediaPermissionRequest;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/MediaStream/UserMediaPermissionRequestManagerProxy.h:53
&gt; &gt; +    typedef HashMap&lt;uint64_t, RefPtr&lt;UserMediaPermissionRequest&gt; &gt; PendingRequestMap;
&gt; 
&gt; Nit: the space in &quot;&gt; &gt;&quot; is unnecessary.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebUserMediaClient.cpp:69
&gt; &gt; +    // TODO: Create audio and video stream sources here.
&gt; 
&gt; Why would you automatically create audio and video sources here when you don&apos;t know what the page wants yet?
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebUserMediaClient.cpp:78
&gt; &gt; +        startUserMedia();
&gt; 
&gt; Is this necessary?

startUserMedia() will be called whenever webkitGetUserMedia/getUserMedia API call is triggered from web content. so, I assume this is the proper location to create MediaStreamSource instances. In any case, I will clean up now and leave to next implementation review about initialization location.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2810
&gt; &gt; +        return m_userMediaPermissionRequestManager.get();
&gt; 
&gt; Why the indentation?
&gt; 
&gt; &gt; Tools/ChangeLog:3
&gt; &gt; +        [MediaStream] [EFL] getUserMedia throws DomException always..
&gt; 
&gt; Nit: you have two periods here.

Thanks! I will update all the comments in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011644</commentid>
    <comment_count>6</comment_count>
      <attachid>232058</attachid>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2014-05-25 22:47:42 -0700</bug_when>
    <thetext>Created attachment 232058
Patch

All comments are updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011656</commentid>
    <comment_count>7</comment_count>
      <attachid>232058</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-05-25 23:45:29 -0700</bug_when>
    <thetext>Comment on attachment 232058
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_user_media.cpp:100
&gt; +    delete permissionRequest;

I&apos;m not sure if we can remove *permissionRequest* instance in this function. Could you explain why we should remove it inside _set() ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_user_media.h:38
&gt; + * Sets the permission to access local media

nit: Missing period at the end of line.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_user_media.h:46
&gt; + * Suspend the operation for user media permission

ditto

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebUserMediaClient.cpp:78
&gt; +    }

ASSERT_NOT_REACHED() ?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebUserMediaClient.h:51
&gt; +

Unnecessary line.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebUserMediaClient.h:52
&gt; +    WebUserMediaClient(WebPage*);

nit: Missing explicit keyword.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebUserMediaClient.h:53
&gt; +    ~WebUserMediaClient();

Would be nicer to add virtual keyword ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011694</commentid>
    <comment_count>8</comment_count>
      <attachid>232069</attachid>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2014-05-26 04:29:36 -0700</bug_when>
    <thetext>Created attachment 232069
Patch

Patch updated with previous comments. ewk_user_media.cpp is not undercompilation and removed from the patch. My mistake. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011966</commentid>
    <comment_count>9</comment_count>
      <attachid>232069</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-05-27 07:57:30 -0700</bug_when>
    <thetext>Comment on attachment 232069
Patch

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

&gt; Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h:42
&gt; +    static PassRefPtr&lt;UserMediaPermissionRequestManager&gt; create(WebPage*);

It doesn&apos;t look like &quot;WebPage&quot; can ever be NULL so this and the constructor should take a reference.

&gt; Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h:43
&gt; +    void requestPermission(UserMediaPermission*);

Can &quot;UserMediaPermission&quot; be NULL? If not, this should take a reference.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebUserMediaClient.cpp:60
&gt; +void WebUserMediaClient::requestPermission(WTF::PassRefPtr&lt;UserMediaRequest&gt; request)
&gt; +{
&gt; +    m_userMediaRequest = request;
&gt; +
&gt; +    m_page-&gt;userMediaPermissionRequestManager()-&gt;requestPermission(this);
&gt; +}

How can the request be stored in m_userMediaRequest? If this is called again before decidePermission() is called, won&apos;t decidePermission() make a callback on the wrong request?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebUserMediaClient.cpp:65
&gt; +void WebUserMediaClient::cancelRequest(UserMediaRequest*)
&gt; +{
&gt; +    return;
&gt; +}

How does this work? What happens when decidePermission is called subsequently?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012592</commentid>
    <comment_count>10</comment_count>
      <attachid>232290</attachid>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2014-05-30 03:55:03 -0700</bug_when>
    <thetext>Created attachment 232290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012595</commentid>
    <comment_count>11</comment_count>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2014-05-30 04:03:12 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 232069 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=232069&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h:42
&gt; &gt; +    static PassRefPtr&lt;UserMediaPermissionRequestManager&gt; create(WebPage*);
&gt; 
&gt; It doesn&apos;t look like &quot;WebPage&quot; can ever be NULL so this and the constructor should take a reference.

done.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h:43
&gt; &gt; +    void requestPermission(UserMediaPermission*);
&gt; 
&gt; Can &quot;UserMediaPermission&quot; be NULL? If not, this should take a reference.

Have removed UserMediaPermission completely to update your next comment. :)

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebUserMediaClient.cpp:60
&gt; &gt; +void WebUserMediaClient::requestPermission(WTF::PassRefPtr&lt;UserMediaRequest&gt; request)
&gt; &gt; +{
&gt; &gt; +    m_userMediaRequest = request;
&gt; &gt; +
&gt; &gt; +    m_page-&gt;userMediaPermissionRequestManager()-&gt;requestPermission(this);
&gt; &gt; +}
&gt; 
&gt; How can the request be stored in m_userMediaRequest? If this is called again before decidePermission() is called, won&apos;t decidePermission() make a callback on the wrong request?

True, have removed m_userMediaRequest and the parameter is registered in HashMap to that it callback is received properly.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebUserMediaClient.cpp:65
&gt; &gt; +void WebUserMediaClient::cancelRequest(UserMediaRequest*)
&gt; &gt; +{
&gt; &gt; +    return;
&gt; &gt; +}
&gt; 
&gt; How does this work? What happens when decidePermission is called subsequently?

I have included notImplemented() for now. Will continue to work on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015481</commentid>
    <comment_count>12</comment_count>
      <attachid>232290</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-06-13 11:26:02 -0700</bug_when>
    <thetext>Comment on attachment 232290
Patch

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

This looks fine to me modulo the fairly minor comments, but I am not a WK2 reviewer so someone else will have to do the r+.

&gt; Source/WebCore/platform/mediastream/gstreamer/AVCaptureDeviceManagerGStreamer.cpp:45
&gt; +    AVCaptureDeviceManagerGStreamer::setSharedAVCaptureDeviceManagerGStreamer(&amp;center);

Nit: this calls setSharedAVCaptureDeviceManagerGStreamer every time, which presumably isn&apos;t harmful but does waste cycles.

&gt; Source/WebKit2/UIProcess/MediaStream/UserMediaPermissionRequest.cpp:42
&gt; +    : m_manager(manager)
&gt; +    , m_userMediaID(userMediaID)

Nit: the destructor should set m_manager to NULL.

&gt; Source/WebKit2/UIProcess/MediaStream/UserMediaPermissionRequest.h:40
&gt; +    static PassRefPtr&lt;UserMediaPermissionRequest&gt; create(UserMediaPermissionRequestManagerProxy*, uint64_t userMediaID);

Nit: &quot;userMediaID&quot; isn&apos;t necessary.

&gt; Source/WebKit2/UIProcess/MediaStream/UserMediaPermissionRequest.h:48
&gt; +    UserMediaPermissionRequest(UserMediaPermissionRequestManagerProxy*, uint64_t userMediaID);

Ditto.

&gt; Source/WebKit2/UIProcess/MediaStream/UserMediaPermissionRequestManagerProxy.h:47
&gt; +    PassRefPtr&lt;UserMediaPermissionRequest&gt; createRequest(uint64_t userMediaID);

Nit: &quot;userMediaID&quot; isn&apos;t necessary.

&gt; Source/WebKit2/UIProcess/MediaStream/UserMediaPermissionRequestManagerProxy.h:50
&gt; +    void didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allow);

Ditto, plus &quot;allow&quot;.

&gt; Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:43
&gt; +    static uint64_t uniqueRequestID = 1;
&gt; +    return uniqueRequestID++;

First, both requestPermission and UserMediaPermissionRequestManagerProxy::createRequest will use this ID as the key in a HashMap. I believe a standard HashMap won&apos;t allow 0 to be use for a key value, so you should never return 0.

Second, it is possible for this to wrap around. While that will take a long time, and it is unlikely that an existing request will still be pending when it does wrap around, it is can happen. Do we care?

&gt; Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h:44
&gt; +    void didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed);

Nit: &quot;userMediaID&quot; and &quot;allowed&quot; are not necessary.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2824
&gt; +UserMediaPermissionRequestManager* WebPage::userMediaPermissionRequestManager()

Nit: this never returns NULL, and the call sites assume it can not, so it should return a UserMediaPermissionRequestManager reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017225</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-06-21 00:46:51 -0700</bug_when>
    <thetext>This very much looks like a duplicate of bug 123158.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017471</commentid>
    <comment_count>14</comment_count>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2014-06-22 20:18:52 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; This very much looks like a duplicate of bug 123158.

My mistake. I din&apos;t search for the previously raised bugs with proper keystring. bug 108461 and bug 123158 are raised for this issue. Marking this as duplicate of bug 123158 (currently active).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017472</commentid>
    <comment_count>15</comment_count>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2014-06-22 20:19:29 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 123158 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231947</attachid>
            <date>2014-05-23 00:02:26 -0700</date>
            <delta_ts>2014-05-23 04:33:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>provideUserMediaTo.txt</filename>
            <type>text/plain</type>
            <size>60094</size>
            <attacher name="Praveen Jadhav">praveen.j</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTI0OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDE0LTA1LTIyICBQcmF2ZWVu
IFIgSmFkaGF2ICA8cHJhdmVlbi5qQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gW0VGTF0gZ2V0VXNlck1lZGlhIHRocm93cyBEb21FeGNlcHRpb24gYWx3YXlzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyODU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcHJvdmlkZVVzZXJNZWRp
YVRvKCkgaXMgbm90IGNhbGxlZCB0byBpbml0aWFsaXplIFVzZXJNZWRpYUNvbnRyb2xsZXIKKyAg
ICAgICAgaW4gY2FzZSBvZiBFRkwgcG9ydC4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGNhbGwgdG8g
cHJvdmlkZVVzZXJNZWRpYXRvKCkKKyAgICAgICAgZnJvbSBXZWJQYWdlIHdoaWxlIGluaXRpYWxp
emluZyBvdGhlciBmZWF0dXJlcyBhcyB3ZWxsLgorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIGlu
Y2x1ZGVzIHRoZSBjb2RlIGNoYW5nZXMgcmVxdWlyZWQgdG8gcXVlcnkgdXNlciB0bworICAgICAg
ICBwcm92aWRlIHBlcm1pc3Npb24gZm9yIG1lZGlhIGRldmljZSBhY2Nlc3MuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6Cisg
ICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
VUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElD
YXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChX
S1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VV
SUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0R2V0VHlwZUlEKToKKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxv
dyk6CisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VzZXJfbWVkaWEuY3BwOiBBZGRlZC4K
KyAgICAgICAgKF9Fd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3Q6Ol9Fd2tfVXNlcl9N
ZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QpOgorICAgICAgICAoZXdrVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RDcmVhdGUpOgorICAgICAgICAoZXdrVXNlck1lZGlhRGVsZXRlUGVybWlzc2lvblJl
cXVlc3RMaXN0KToKKyAgICAgICAgKGV3a1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVjaWRl
ZCk6CisgICAgICAgIChld2tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFN1c3BlbmRlZCk6Cisg
ICAgICAgIChld2tfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX3JlcXVlc3Rfc3VzcGVuZCk6CisgICAg
ICAgIChld2tfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX3JlcXVlc3Rfc2V0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdXNlcl9tZWRpYS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXNlcl9tZWRpYV9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9NZWRpYVN0cmVhbTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6YWxsb3cp
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6ZGVueSk6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OjppbnZhbGlkYXRlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdHMpOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5OjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbTogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVSZXF1ZXN0SUQpOgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVVz
ZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0
cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjpXZWJVc2VyTWVkaWFDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6On5XZWJVc2VyTWVkaWFD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OnBhZ2VEZXN0cm95
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OnJlcXVlc3RQZXJtaXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjpjYW5jZWxSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjpzdGFydFVzZXJNZWRpYSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6ZGVjaWRlUGVybWlzc2lvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
aDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNC0wNS0yMiAgQmVuamFtaW4gUG91bGFp
biAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtXSzJdIEFkZCBzdXBwb3J0
IGZvciBtaW5pbWFsLXVpIHZpZXdwb3J0cwpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJ
KHJldmlzaW9uIDE2OTI0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjEsNiArMTIxLDkgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VS
Q0VTCiAKICAgICBVSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAK
IAorICAgIFVJUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5j
cHAKKyAgICBVSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCisKICAgICBVSVByb2Nlc3MvTmV0d29yay9zb3VwL05ldHdvcmtQcm9j
ZXNzUHJveHlTb3VwLmNwcAogCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZv
U3RvcmVVbml4LmNwcApAQCAtMTczLDEwICsxNzYsMTQgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRs
ZUVmbC5jcHAKIAorICAgIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmNwcAorCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3Vu
aXgvUGx1Z2luUHJveHlVbml4LmNwcAogCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKIAorICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViVXNlck1lZGlhQ2xpZW50LmNwcAorCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9lZmwvV2ViQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHAKQEAgLTIzMyw5ICsyNDAsMTEgQEAgbGlzdChB
UFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvY3BwL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzIgor
ICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTWVkaWFTdHJlYW0iCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwIgogICAgICIke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
c291cCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbSIKICAgICAi
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlBy
b2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9lZmwiCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCShyZXZpc2lvbiAxNjkyNDgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzMSw2ICsxMzEsOSBAQCBwdWJsaWM6CiAgICAgICAgIFByZWZlcmVuY2VzLAogICAgICAgICBT
ZXNzaW9uLAogICAgICAgICBUZXh0Q2hlY2tlciwKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
ICAgICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCwKKyNlbmRpZgogICAgICAgICBWaWJy
YXRpb24sCiAgICAgICAgIFZpZXdwb3J0QXR0cmlidXRlcywKIApJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0Jhc2UuaAkocmV2aXNpb24gMTY5MjQ4KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAg
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcmVmZXJlbmNlcwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tQcm90ZWN0aW9uU3BhY2UqIFdLUHJvdGVjdGlvblNwYWNlUmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tUZXh0Q2hlY2tlciogV0tUZXh0Q2hlY2tlclJlZjsK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU2Vzc2lvbiogV0tTZXNzaW9uUmVmOwordHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLVmlicmF0aW9uKiBXS1ZpYnJhdGlvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLVmlld3BvcnRBdHRyaWJ1dGVzKiBXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZjsKIApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE2OTI0
OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzAsNiArMjcwLDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcAogICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKICAgICAs
IG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCiAgICAgLCBtX25v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgICwgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRo
aXMpCisjZW5kaWYKICAgICAsIG1fdmlld1N0YXRlKFZpZXdTdGF0ZTo6Tm9GbGFncykKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgLCBtX2FjdGl2aXR5VG9rZW4obnVsbHB0cikKQEAgLTQxNjQsNiAr
NDE2NywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSgpCiAKICAgICBtX25vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5pbnZhbGlkYXRlUmVxdWVzdHMoKTsKIAor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuaW52YWxpZGF0ZVJlcXVlc3RzKCk7CisjZW5kaWYKKwogICAgIG1fdG9vbFRpcCA9
IFN0cmluZygpOwogCiAgICAgbV9tYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyID0gZmFs
c2U7CkBAIC00NDM2LDYgKzQ0NDMsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dOb3RpZmlj
YXRpb24oY29ucwogICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5PigpLT5zaG93KHRoaXMsIHRpdGxlLCBib2R5LCBpY29uVVJMLCB0
YWcsIGxhbmcsIGRpciwgb3JpZ2luU3RyaW5nLCBub3RpZmljYXRpb25JRCk7CiB9CiAKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQ
ZXJtaXNzaW9uKHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sKKyAgICBSZWZQdHI8VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3Q+IHJlcXVlc3QgPSBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcmVhdGVSZXF1ZXN0KHJlcXVlc3RJRCk7CisKKyAgICBpZiAoIW1fdWlDbGllbnQtPmRl
Y2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KHRoaXMsIHJlcXVlc3QuZ2V0
KCkpKQorICAgICAgICByZXF1ZXN0LT5kZW55KCk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdl
UHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkKIHsKICAg
ICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eT4oKS0+Y2FuY2VsKHRoaXMsIG5vdGlmaWNhdGlvbklEKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE2OTI0OCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiAr
ODUsMTAgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJUb3VjaEV2ZW50LmgiCiAjZW5kaWYKIAorI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUg
IldLUGFnZUVmbC5oIgogI2luY2x1ZGUgIldlYlVJUG9wdXBNZW51Q2xpZW50LmgiCkBAIC0xMjE4
LDYgKzEyMjIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25z
dCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgZGlkRGVzdHJv
eU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CiAKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb24odWludDY0X3Qg
dXNlck1lZGlhSUQpOworI2VuZGlmCisKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAg
ICB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAg
ICAgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKQEAgLTE1MjksNiArMTUzNywx
MCBAQCBwcml2YXRlOgogICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKICAgICBOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI7CisjZW5kaWYKKwogICAgIFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgbV92aWV3
U3RhdGU7CiAKICNpZiBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE2OTI0OCkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTI0NSw2ICsyNDUsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICAgICBDbGVhck5vdGlmaWNhdGlvbnMoVmVjdG9yPHVpbnQ2NF90PiBub3RpZmljYXRpb25JRHMp
CiAgICAgRGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkKIAor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgIyBVc2VyTWVkaWEgbWVzc2FnZXMKKyAgICBS
ZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbih1aW50NjRfdCByZXF1ZXN0SUQpCisjZW5kaWYKKwog
ICAgICMgU3BlbGxpbmcgYW5kIGdyYW1tYXIgbWVzc2FnZXMKICNpZiBVU0UoVU5JRklFRF9URVhU
X0NIRUNLSU5HKSAgCiAgICAgQ2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nIHRleHQsIHVpbnQ2
NF90IGNoZWNraW5nVHlwZXMpIC0+IChWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0
PiByZXN1bHRzKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaAkocmV2aXNpb24gMTY5MjQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElVSUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktp
dDo6V2ViU2VjdXJpdHlPcmlnaW4qLCBXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGlj
eUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
V2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiosIFdlYktpdDo6Tm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QqKSB7IHJldHVybiBmYWxzZTsgfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KyAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0KikgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiAgICAgLy8gUHJpbnRpbmcuCiAgICAg
dmlydHVhbCBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6
OldlYkZyYW1lUHJveHkqKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBmbG9hdCBmb290ZXJI
ZWlnaHQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqKSB7IHJl
dHVybiAwOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2Fz
dC5oCShyZXZpc2lvbiAxNjkyNDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDExIEBAIGNsYXNzIEF1dGhl
bnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjsKIGNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdDsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitjbGFzcyBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdDsKKyNlbmRpZgorCiBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlclByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbTsKQEAgLTE0NCw2ICsxNDksMTEgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdL
UHJvdGVjdGlvblNwYWNlUmVmLAogV0tfQUREX0FQSV9NQVBQSU5HKFdLUmVuZGVyTGF5ZXJSZWYs
IFdlYlJlbmRlckxheWVyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUmVuZGVyT2JqZWN0UmVmLCBX
ZWJSZW5kZXJPYmplY3QpCiBXS19BRERfQVBJX01BUFBJTkcoV0tUZXh0Q2hlY2tlclJlZiwgV2Vi
VGV4dENoZWNrZXIpCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorV0tfQUREX0FQSV9NQVBQ
SU5HKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0KQorI2VuZGlmCisKIFdLX0FERF9BUElfTUFQUElORyhXS1ZpYnJhdGlvblJlZiwgV2Vi
VmlicmF0aW9uUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tWaWV3cG9ydEF0dHJpYnV0ZXNS
ZWYsIFdlYlZpZXdwb3J0QXR0cmlidXRlcykKIFdLX0FERF9BUElfTUFQUElORyhXS0luc3BlY3Rv
clJlZiwgV2ViSW5zcGVjdG9yUHJveHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMTY5MjQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NzcsNiArMTQ3Nywx
NyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAg
ICAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0KFdlYlBhZ2VQcm94eSogcGFnZSwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHBlcm1p
c3Npb25SZXF1ZXN0KSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5
Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QodG9BUEkocGFnZSksIHRvQVBJKHBlcm1pc3Np
b25SZXF1ZXN0KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgLy8gUHJpbnRpbmcuCiAg
ICAgICAgIHZpcnR1YWwgZmxvYXQgaGVhZGVySGVpZ2h0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2Vi
RnJhbWVQcm94eSogZnJhbWUpIG92ZXJyaWRlCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCShyZXZpc2lvbiAxNjky
NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VQcmlu
dEZyYW1lQ2FsbGJhY2spCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VTYXZlRGF0YVRvRmlsZUluRG93
bmxvYWRzRm9sZGVyQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBzdWdnZXN0
ZWRGaWxlbmFtZSwgV0tTdHJpbmdSZWYgbWltZVR5cGUsIFdLVVJMUmVmIG9yaWdpbmF0aW5nVVJM
LCBXS0RhdGFSZWYgZGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIGJvb2wg
KCpXS1BhZ2VTaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURlY2lkZVBv
bGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFJlZiBwZXJtaXNzaW9uUmVxdWVzdCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0
eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFJlZiBwZXJtaXNzaW9uUmVxdWVzdCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVm
IHZvaWQgKCpXS1BhZ2VTaG93Q29sb3JQaWNrZXJDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdL
U3RyaW5nUmVmIGluaXRpYWxDb2xvciwgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxp
c3RlbmVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZUhp
ZGVDb2xvclBpY2tlckNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNr
ZWRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24g
cGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIFdLRGljdGlvbmFyeVJlZiBwbHVnaW5JbmZvRGlj
dGlvbmFyeSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CkBAIC0xOTEsNiArMTkyLDcgQEAgdHlw
ZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMSB7CiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQ
YWdlOwogICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Q2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ7CiAgICAgV0tQYWdl
RGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAg
ICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBX
S1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAg
IGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OwogICAgIFdLUGFnZVVu
YXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjEgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjE7
CiB9IFdLUGFnZVVJQ2xpZW50VjE7CiAKQEAgLTI0Miw2ICsyNDQsNyBAQCB0eXBlZGVmIHN0cnVj
dCBXS1BhZ2VVSUNsaWVudFYyIHsKICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CiAgICAg
V0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKICAgICBXS1BhZ2VEZWNpZGVQb2xp
Y3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgIGRlY2lk
ZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURlY2lk
ZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgZGVjaWRlUG9s
aWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q7CiAgICAgV0tQYWdlVW5hdmFpbGFibGVQ
bHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB1bmF2YWls
YWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKIAogICAgIC8v
IFZlcnNpb24gMi4KQEAgLTI5OCw2ICszMDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNs
aWVudFYzIHsKICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CiAgICAgV0tQYWdlTW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
b3VzZURpZE1vdmVPdmVyRWxlbWVudDsKICAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgZGVjaWRlUG9saWN5Rm9yVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3Q7CiAgICAgV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5CdXR0b25D
bGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB1bmF2YWlsYWJsZVBsdWdpbkJ1
dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKIAogICAgIC8vIFZlcnNpb24gMi4K
QEAgLTM1OSw2ICszNjMsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudCB7CiAgICAg
V0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwogICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQ7CiAgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RDYWxsYmFjayAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdENhbGxiYWNrICAgIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0OwogICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNr
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjE7CiAKICAgICAvLyBWZXJzaW9uIDIuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBF
bGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIgorI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJ
RCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0R2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4g
dG9BUEkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q6OkFQSVR5cGUpOworfQorCit2b2lkIFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UmVmIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KQoreworICAgIHJldHVybiB0b0ltcGwo
dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpLT5hbGxvdygpOworfQorCit2b2lkIFdLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3REZW55KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYg
dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpCit7CisgICAgcmV0dXJuIHRvSW1wbCh1c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdCktPmRlbnkoKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0X2gKKyNkZWZpbmUgV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYg
X19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBX
S1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0R2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCB2b2lk
IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UmVmIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KTsKK1dLX0VYUE9SVCB2b2lkIFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZW55KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOworCisjaWZkZWYgX19jcGx1c3BsdXMK
K30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdF9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXNlcl9tZWRpYS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VzZXJf
bWVkaWEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3VzZXJfbWVkaWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfdXNlcl9tZWRpYS5o
IgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNp
bmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgIldLVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuaCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCisKK3N0cnVjdCBfRXdrX1Vz
ZXJfTWVkaWFfUGVybWlzc2lvbl9SZXF1ZXN0IHsKKyAgICBXS1JldGFpblB0cjxXS1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UmVmPiByZXF1ZXN0UmVmOworICAgIEV2YXNfT2JqZWN0KiBld2tW
aWV3OworICAgIGJvb2wgaXNEZWNpZGVkOworICAgIGJvb2wgaXNTdXNwZW5kZWQ7CisKKyAgICBf
RXdrX1VzZXJfTWVkaWFfUGVybWlzc2lvbl9SZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBX
S1JldGFpblB0cjxXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmPiB1c2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFJlZikKKyAgICAgICAgOiByZXF1ZXN0UmVmKHVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UmVmKQorICAgICAgICAsIGV3a1ZpZXcoZXdrVmlldykKKyAgICAgICAgLCBpc0Rl
Y2lkZWQoZmFsc2UpCisgICAgICAgICwgaXNTdXNwZW5kZWQoZmFsc2UpCisgICAgeyB9Cit9Owor
CitFd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QqIGV3a1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0Q3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXS1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UmVmIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKQoreworICAgIHJldHVy
biBuZXcgRXdrX1VzZXJfTWVkaWFfUGVybWlzc2lvbl9SZXF1ZXN0KGV3a1ZpZXcsIHVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKK30KKwordm9pZCBld2tVc2VyTWVkaWFEZWxldGVQZXJt
aXNzaW9uUmVxdWVzdExpc3QoRWluYV9MaXN0KiByZXF1ZXN0TGlzdCkKK3sKKyAgICB2b2lkKiBk
YXRhID0gMDsKKyAgICBFSU5BX0xJU1RfRlJFRShyZXF1ZXN0TGlzdCwgZGF0YSkKKyAgICAgICAg
ZGVsZXRlIChzdGF0aWNfY2FzdDxFd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QqPihk
YXRhKSk7Cit9CisKK2Jvb2wgZXdrVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZWNpZGVkKEV3
a19Vc2VyX01lZGlhX1Blcm1pc3Npb25fUmVxdWVzdCogcGVybWlzc2lvblJlcXVlc3QpCit7Cisg
ICAgcmV0dXJuIHBlcm1pc3Npb25SZXF1ZXN0LT5pc0RlY2lkZWQ7Cit9CisKK2Jvb2wgZXdrVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RTdXNwZW5kZWQoRXdrX1VzZXJfTWVkaWFfUGVybWlzc2lv
bl9SZXF1ZXN0KiBwZXJtaXNzaW9uUmVxdWVzdCkKK3sKKyAgICByZXR1cm4gcGVybWlzc2lvblJl
cXVlc3QtPmlzU3VzcGVuZGVkOworfQorI2VuZGlmCisKK0VpbmFfQm9vbCBld2tfdXNlcl9tZWRp
YV9wZXJtaXNzaW9uX3JlcXVlc3Rfc3VzcGVuZChFd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1Jl
cXVlc3QqIHBlcm1pc3Npb25SZXF1ZXN0KQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBlcm1pc3Npb25SZXF1ZXN0LCBmYWxz
ZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBlcm1pc3Npb25SZXF1ZXN0
LT5yZXF1ZXN0UmVmLCBmYWxzZSk7CisKKyAgICBwZXJtaXNzaW9uUmVxdWVzdC0+aXNTdXNwZW5k
ZWQgPSB0cnVlOworCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShw
ZXJtaXNzaW9uUmVxdWVzdCk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQg
ZXdrX3VzZXJfbWVkaWFfcGVybWlzc2lvbl9yZXF1ZXN0X3NldChFd2tfVXNlcl9NZWRpYV9QZXJt
aXNzaW9uX1JlcXVlc3QqIHBlcm1pc3Npb25SZXF1ZXN0LCBFaW5hX0Jvb2wgYWxsb3dlZCkKK3sK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHBlcm1pc3Npb25SZXF1ZXN0KTsKKworICAgIHBlcm1pc3Npb25SZXF1ZXN0LT5pc0RlY2lkZWQg
PSB0cnVlOworCisgICAgaWYgKGFsbG93ZWQpCisgICAgICAgIFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RBbGxvdyhwZXJtaXNzaW9uUmVxdWVzdC0+cmVxdWVzdFJlZi5nZXQoKSk7CisgICAg
ZWxzZQorICAgICAgICBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShwZXJtaXNzaW9u
UmVxdWVzdC0+cmVxdWVzdFJlZi5nZXQoKSk7CisKKyAgICBld2tWaWV3RGVsZXRlVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QocGVybWlzc2lvblJlcXVlc3QtPmV3a1ZpZXcsIHBlcm1pc3Npb25S
ZXF1ZXN0KTsKKyAgICBkZWxldGUgcGVybWlzc2lvblJlcXVlc3Q7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShwZXJtaXNzaW9uUmVxdWVzdCk7CisgICAgVU5VU0VEX1BBUkFNKGFsbG93ZWQpOwor
I2VuZGlmCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXNl
cl9tZWRpYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a191c2VyX21lZGlhLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdXNlcl9tZWRpYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfdXNlcl9tZWRpYV9oCisjZGVmaW5lIGV3a191c2Vy
X21lZGlhX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRl
cm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1VzZXJfTWVkaWFfUGVybWlz
c2lvbl9SZXF1ZXN0IEV3a19Vc2VyX01lZGlhX1Blcm1pc3Npb25fUmVxdWVzdDsKKworLyoqCisg
KiBTZXRzIHRoZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyBsb2NhbCBtZWRpYQorICoKKyAqIEBwYXJh
bSByZXF1ZXN0IEV3a19WaWV3X1VzZXJfTWVkaWFfUGVybWlzc2lvbl9SZXF1ZXN0IG9iamVjdCBm
b3IgdXNlck1lZGlhIHBlcm1pc3Npb24KKyAqIEBwYXJhbSBhbGxvd2VkIGRlY2lkZWQgcGVybWlz
c2lvbiB2YWx1ZSBmcm9tIHVzZXIKKyAqLworRUFQSSB2b2lkIGV3a191c2VyX21lZGlhX3Blcm1p
c3Npb25fcmVxdWVzdF9zZXQoRXdrX1VzZXJfTWVkaWFfUGVybWlzc2lvbl9SZXF1ZXN0ICpyZXF1
ZXN0LCBFaW5hX0Jvb2wgYWxsb3dlZCk7CisKKy8qKgorICogU3VzcGVuZCB0aGUgb3BlcmF0aW9u
IGZvciB1c2VyIG1lZGlhIHBlcm1pc3Npb24KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCB1c2VyIG1l
ZGlhIHBlcm1pc3Npb24gcmVxdWVzdCBvYmplY3QKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVpbmFf
Qm9vbCBld2tfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX3JlcXVlc3Rfc3VzcGVuZChFd2tfVXNlcl9N
ZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QgKnJlcXVlc3QpOworCisjaWZkZWYgX19jcGx1c3BsdXMK
K30KKyNlbmRpZgorI2VuZGlmIC8vIGV3a191c2VyX21lZGlhX2gKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191c2VyX21lZGlhX3ByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXNlcl9tZWRpYV9wcml2
YXRlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdXNlcl9tZWRpYV9wcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIGV3a191c2VyX21lZGlhX3ByaXZhdGVfaAorI2RlZmluZSBld2tf
dXNlcl9tZWRpYV9wcml2YXRlX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVk
ZSA8RXZhcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKK3R5cGVkZWYgc3RydWN0
IF9Fd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QgRXdrX1VzZXJfTWVkaWFfUGVybWlz
c2lvbl9SZXF1ZXN0OworCitFd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QqIGV3a1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKK3ZvaWQgZXdrVXNlck1lZGlhRGVsZXRlUGVy
bWlzc2lvblJlcXVlc3RMaXN0KEVpbmFfTGlzdCogcmVxdWVzdHMpOworYm9vbCBld2tVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdERlY2lkZWQoRXdrX1VzZXJfTWVkaWFfUGVybWlzc2lvbl9SZXF1
ZXN0Kik7Citib29sIGV3a1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0U3VzcGVuZGVkKEV3a19V
c2VyX01lZGlhX1Blcm1pc3Npb25fUmVxdWVzdCopOworCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2VuZGlmIC8vIGV3a191c2VyX21lZGlhX3ByaXZhdGVfaApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJl
YW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRy
PFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6
Y3JlYXRlKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgKm1h
bmFnZXIsIHVpbnQ2NF90IHVzZXJNZWRpYUlEKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QobWFuYWdlciwgdXNlck1lZGlhSUQpKTsKK30KKwor
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KiBtYW5hZ2VyLCB1aW50NjRfdCB1
c2VyTWVkaWFJRCkKKyAgICA6IG1fbWFuYWdlcihtYW5hZ2VyKQorICAgICwgbV91c2VyTWVkaWFJ
RCh1c2VyTWVkaWFJRCkKK3sKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6
YWxsb3coKQoreworICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X21hbmFnZXItPmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24obV91c2VyTWVk
aWFJRCwgdHJ1ZSk7CisgICAgbV9tYW5hZ2VyID0gMDsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdDo6ZGVueSgpCit7CisgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fbWFuYWdlci0+ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNp
c2lvbihtX3VzZXJNZWRpYUlELCBmYWxzZSk7CisgICAgbV9tYW5hZ2VyID0gMDsKK30KKwordm9p
ZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6aW52YWxpZGF0ZSgpCit7CisgICAgbV9tYW5h
Z2VyID0gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RfaAorI2RlZmluZSBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OworCitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3Q+IGNyZWF0ZShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSos
IHVpbnQ2NF90IHVzZXJNZWRpYUlEKTsKKworICAgIHZvaWQgYWxsb3coKTsKKyAgICB2b2lkIGRl
bnkoKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCitwcml2YXRlOgorICAgIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
KiwgdWludDY0X3QgdXNlck1lZGlhSUQpOworCisgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkqIG1fbWFuYWdlcjsKKyAgICB1aW50NjRfdCBtX3VzZXJNZWRpYUlEOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2VuZGlmIC8vIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHlfaApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1
bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlKQorICAgIDog
bV9wYWdlKHBhZ2UpCit7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmludmFsaWRhdGVSZXF1ZXN0cygpCit7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0
IDogbV9wZW5kaW5nUmVxdWVzdHMudmFsdWVzKCkpCisgICAgICAgIHJlcXVlc3QtPmludmFsaWRh
dGUoKTsKKworICAgIG1fcGVuZGluZ1JlcXVlc3RzLmNsZWFyKCk7Cit9CisKK1Bhc3NSZWZQdHI8
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q+IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlEKQoreworICAgIFJl
ZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0OjpjcmVhdGUodGhpcywgdXNlck1lZGlhSUQpOworICAgIG1fcGVuZGluZ1Jl
cXVlc3RzLmFkZCh1c2VyTWVkaWFJRCwgcmVxdWVzdC5nZXQoKSk7CisgICAgcmV0dXJuIHJlcXVl
c3QucmVsZWFzZSgpOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5OjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVz
ZXJNZWRpYUlELCBib29sIGFsbG93KQoreworICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiBy
ZXF1ZXN0ID0gbV9wZW5kaW5nUmVxdWVzdHMudGFrZSh1c2VyTWVkaWFJRCk7CisgICAgaWYgKCFy
ZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odXNl
ck1lZGlhSUQsIGFsbG93KSwgbV9wYWdlLnBhZ2VJRCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHlfaAorI2RlZmluZSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eV9o
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk7CitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmKTsKKworICAg
IHZvaWQgaW52YWxpZGF0ZVJlcXVlc3RzKCk7CisKKyAgICAvLyBDcmVhdGUgcmVxdWVzdCB0byBi
ZSBwcmVzZW50ZWQgdG8gdXNlci4KKyAgICBQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0PiBjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlEKTsKKworICAgIC8vIENh
bGxlZCBieSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCB3aGVuIGRlY2lzaW9uIGlzIG1hZGUg
YnkgdXNlci4KKyAgICB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24o
dWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3cpOworCitwcml2YXRlOgorICAgIHR5cGVk
ZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiA+
IFBlbmRpbmdSZXF1ZXN0TWFwOworICAgIFBlbmRpbmdSZXF1ZXN0TWFwIG1fcGVuZGluZ1JlcXVl
c3RzOworICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1
ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVSZXF1
ZXN0SUQoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVSZXF1ZXN0SUQgPSAxOworICAg
IHJldHVybiB1bmlxdWVSZXF1ZXN0SUQrKzsKK30KKworUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI+IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6
Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIocGFnZSkpOworfQorCitVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQ
YWdlKiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZXF1ZXN0UGVybWlzc2lvbihVc2VyTWVkaWFQZXJtaXNz
aW9uKiBwZXJtaXNzaW9uKQoreworICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IGdlbmVyYXRlUmVx
dWVzdElEKCk7CisgICAgbV9pZFRvUGVybWlzc2lvbk1hcC5zZXQocmVxdWVzdElELCBwZXJtaXNz
aW9uKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFVz
ZXJNZWRpYVBlcm1pc3Npb24ocmVxdWVzdElEKSk7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9u
KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBhbGxvd2VkKQoreworICAgIFVzZXJNZWRpYVBlcm1p
c3Npb24qIHBlcm1pc3Npb24gPSBtX2lkVG9QZXJtaXNzaW9uTWFwLnRha2UocmVxdWVzdElEKTsK
KyAgICBwZXJtaXNzaW9uLT5kZWNpZGVQZXJtaXNzaW9uKGFsbG93ZWQpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01l
ZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyX2gKKyNk
ZWZpbmUgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyX2gKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvbjsKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNz
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4geworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4gY3JlYXRlKFdlYlBh
Z2UqKTsKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFVzZXJNZWRpYVBlcm1pc3Npb24qKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qg
dXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCk7CisKK3ByaXZhdGU6CisgICAgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UqKTsKKyAgICBXZWJQYWdlKiBtX3BhZ2U7Cisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgVXNlck1lZGlhUGVybWlzc2lvbio+IG1faWRUb1Blcm1pc3Np
b25NYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViVXNlck1lZGlhQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRp
YUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50LmgiCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIK
KyNpbmNsdWRlICJVVUlELmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJV
c2VyTWVkaWFDbGllbnQ6OldlYlVzZXJNZWRpYUNsaWVudChXZWJQYWdlKiBwYWdlKQorICAgIDog
bV9wYWdlKHBhZ2UpCit7Cit9CisKK1dlYlVzZXJNZWRpYUNsaWVudDo6fldlYlVzZXJNZWRpYUNs
aWVudCgpCit7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpwYWdlRGVzdHJveWVkKCkK
K3sKKyAgICBkZWxldGUgdGhpczsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OnJlcXVl
c3RQZXJtaXNzaW9uKFdURjo6UGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0KQor
eworICAgIG1fdXNlck1lZGlhUmVxdWVzdCA9IHJlcXVlc3Q7CisKKyAgICBtX3BhZ2UtPnVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLT5yZXF1ZXN0UGVybWlzc2lvbih0aGlzKTsK
K30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNlbFJlcXVlc3QoVXNlck1lZGlhUmVx
dWVzdCopCit7CisgICAgcmV0dXJuOworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6c3Rh
cnRVc2VyTWVkaWEoKQoreworICAgIC8vIFRPRE86IENyZWF0ZSBhdWRpbyBhbmQgdmlkZW8gc3Ry
ZWFtIHNvdXJjZXMgaGVyZS4KK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmRlY2lkZVBl
cm1pc3Npb24oYm9vbCBhbGxvd2VkKQoreworICAgIFBlcm1pc3Npb24gcGVybWlzc2lvbiA9IGFs
bG93ZWQgPyBQZXJtaXNzaW9uQWxsb3dlZCA6IFBlcm1pc3Npb25EZW5pZWQ7CisKKyAgICBzd2l0
Y2ggKHBlcm1pc3Npb24pIHsKKyAgICBjYXNlIFBlcm1pc3Npb25BbGxvd2VkOgorICAgICAgICBz
dGFydFVzZXJNZWRpYSgpOworICAgICAgICBtX3VzZXJNZWRpYVJlcXVlc3QuZ2V0KCktPnVzZXJN
ZWRpYUFjY2Vzc0dyYW50ZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgUGVybWlzc2lv
bkRlbmllZDoKKyAgICAgICAgbV91c2VyTWVkaWFSZXF1ZXN0LmdldCgpLT51c2VyTWVkaWFBY2Nl
c3NEZW5pZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVz
ZXJNZWRpYUNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVXNlck1lZGlhQ2xpZW50X2gKKyNk
ZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50X2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVu
dC5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb24geworcHVibGlj
OgorICAgIGVudW0gUGVybWlzc2lvbiB7CisgICAgICAgIFBlcm1pc3Npb25EZW5pZWQsIC8vIFVz
ZXIgaGFzIGV4cGxpY2l0bHkgZGVuaWVkIHBlcm1pc3Npb24KKyAgICAgICAgUGVybWlzc2lvbkFs
bG93ZWQgLy8gVXNlciBoYXMgYWxsb3dlZCBtZWRpYSBzdHJlYW0KKyAgICB9OworCisgICAgdmly
dHVhbCB2b2lkIGRlY2lkZVBlcm1pc3Npb24oYm9vbCkgPSAwOworfTsKKworY2xhc3MgV2ViVXNl
ck1lZGlhQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudCwgcHVibGljIFVz
ZXJNZWRpYVBlcm1pc3Npb24geworcHVibGljOgorCisgICAgV2ViVXNlck1lZGlhQ2xpZW50KFdl
YlBhZ2UqKTsKKyAgICB+V2ViVXNlck1lZGlhQ2xpZW50KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
cGFnZURlc3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4pOworICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWxSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKTsKKworICAgIHZpcnR1
YWwgdm9pZCBkZWNpZGVQZXJtaXNzaW9uKGJvb2wpOworCitwcml2YXRlOgorICAgIFdURjo6UmVm
UHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+IG1fdXNlck1lZGlhUmVxdWVzdDsKKworICAg
IHZvaWQgc3RhcnRVc2VyTWVkaWEoKTsKKworICAgIFdlYlBhZ2UqIG1fcGFnZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2VuZGlmIC8vIFdlYlVzZXJNZWRpYUNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNjkyNDgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2OCw2ICsxNjgsMTEgQEAKICNpbmNsdWRlICJXZWJWaWJyYXRpb25DbGllbnQuaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIK
KyNlbmRpZgorCiAjaWYgRU5BQkxFKFBST1hJTUlUWV9FVkVOVFMpCiAjaW5jbHVkZSAiV2ViRGV2
aWNlUHJveGltaXR5Q2xpZW50LmgiCiAjZW5kaWYKQEAgLTM3NCw2ICszNzksOSBAQCBXZWJQYWdl
OjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QKICNpZiBFTkFCTEUoVklCUkFUSU9OKQog
ICAgIFdlYkNvcmU6OnByb3ZpZGVWaWJyYXRpb25UbyhtX3BhZ2UuZ2V0KCksIG5ldyBXZWJWaWJy
YXRpb25DbGllbnQodGhpcykpOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAg
ICBXZWJDb3JlOjpwcm92aWRlVXNlck1lZGlhVG8obV9wYWdlLmdldCgpLCBuZXcgV2ViVXNlck1l
ZGlhQ2xpZW50KHRoaXMpKTsKKyNlbmRpZgogI2lmIEVOQUJMRShQUk9YSU1JVFlfRVZFTlRTKQog
ICAgIFdlYkNvcmU6OnByb3ZpZGVEZXZpY2VQcm94aW1pdHlUbyhtX3BhZ2UuZ2V0KCksIG5ldyBX
ZWJEZXZpY2VQcm94aW1pdHlDbGllbnQodGhpcykpOwogI2VuZGlmCkBAIC0yNzkyLDYgKzI4MDAs
MTcgQEAgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKiBXZQogICAgIHJldHVy
biBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5nZXQoKTsKIH0KIAorI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCitVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIq
IFdlYlBhZ2U6OnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpCit7CisgICAgaWYg
KG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKQorICAgICAgICByZXR1cm4gbV91
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZ2V0KCk7CisKKyAgICBtX3VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjo6Y3JlYXRlKHRoaXMpOworICAgICAgICByZXR1cm4gbV91c2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuZ2V0KCk7Cit9CisjZW5kaWYKKwogI2lmICFQTEFURk9STShHVEspICYm
ICFQTEFURk9STShDT0NPQSkKIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZl
bnQoS2V5Ym9hcmRFdmVudCogZXZ0KQogewpAQCAtMzExNCw2ICszMTMzLDEzIEBAIHZvaWQgV2Vi
UGFnZTo6ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm0KICAgICBub3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIoKS0+ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNp
c2lvbihub3RpZmljYXRpb25JRCwgYWxsb3dlZCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9u
KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQpCit7CisgICAgdXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKCktPmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVj
aXNpb24odXNlck1lZGlhSUQsIGFsbG93ZWQpOworfQorI2VuZGlmCisKICNpZiAhUExBVEZPUk0o
SU9TKQogdm9pZCBXZWJQYWdlOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJl
Zm9yZVNlbGVjdGlvbikKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTY5MjQ4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCwxMSBA
QCBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFdlYlRvdWNoRXZlbnQ7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitjbGFzcyBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI7CitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQ7CisjZW5kaWYK
KwogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKIGNsYXNzIFRlbGVwaG9u
ZU51bWJlck92ZXJsYXlDb250cm9sbGVyOwogI2VuZGlmCkBAIC00NDIsNiArNDQ3LDEwIEBAIHB1
YmxpYzoKICAgICBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciYgZ2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKSB7IHJldHVybiBtX2dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKiB1c2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIoKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBzY3JlZW5TaXplKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRT
aXplIGF2YWlsYWJsZVNjcmVlblNpemUoKSBjb25zdDsKQEAgLTk5MCw2ICs5OTksMTAgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lv
bih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgYm9vbCBhbGxvd2VkKTsKIAorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lz
aW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQpOworI2VuZGlmCisKICAgICB2
b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsK
ICAgICB2b2lkIGNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCk7CiAjaWYg
VVNFKEFQUEtJVCkKQEAgLTExNTAsNiArMTE2MywxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4gbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
cjsKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPiBtX25v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIAorI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisgICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4gbV91
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CisjZW5kaWYKKwogICAgIFJlZlB0cjxX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOwogCiAjaWYg
RU5BQkxFKEdFT0xPQ0FUSU9OKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE2OTI0OCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjEsNiArMjYxLDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewogICAgICMgTm90aWZpY2F0aW9uCiAgICAgRGlkUmVjZWl2ZU5vdGlmaWNh
dGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgYm9vbCBhbGxv
d2VkKQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBEaWRSZWNlaXZlVXNlck1lZGlh
UGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQpCisj
ZW5kaWYKKwogICAgIFNldFdpbmRvd1Jlc2l6ZXJTaXplKFdlYkNvcmU6OkludFNpemUgaW50ZXJz
ZWN0c1ZpZXcpCiAKICAgICAjIFByaW50aW5nLgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5MjQ4KQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQtMDUtMjIgIFByYXZl
ZW4gUiBKYWRoYXYgIDxwcmF2ZWVuLmpAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW01lZGlhU3Ry
ZWFtXSBbRUZMXSBnZXRVc2VyTWVkaWEgdGhyb3dzIERvbUV4Y2VwdGlvbiBhbHdheXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI4NTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKTogVXNlck1lZGlhIGlzCisgICAgICAgIGFkZGVkIHRv
IHBlcm1pc3Npb24gcmVxdWVzdCBpbiBVSUNsaWVudC4KKwogMjAxNC0wNS0yMiAgQmVuamFtaW4g
UG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgWXVzdWtlIFN1enVr
aSB0byB0aGUgbGlzdCBvZiBjb250cmlidXRvcnMgKGZvciByZWFsKQpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE2OTI0OCkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NjIsNiArNDYyLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhP
cAogICAgICAgICBjcmVhdGVPdGhlclBhZ2UsCiAgICAgICAgIDAsIC8vIG1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50CiAgICAgICAgIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LCAvLyBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdAor
ICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAog
ICAgICAgICAwLCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMQogICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKICAgICAgICAgMCwgLy8g
aGlkZUNvbG9yUGlja2VyCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231956</attachid>
            <date>2014-05-23 04:33:53 -0700</date>
            <delta_ts>2014-05-25 22:47:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>provideUserMediaTo.txt</filename>
            <type>text/plain</type>
            <size>62829</size>
            <attacher name="Praveen Jadhav">praveen.j</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTI1NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBACisyMDE0LTA1LTIzICBQcmF2ZWVu
IFIgSmFkaGF2ICA8cHJhdmVlbi5qQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gW0VGTF0gZ2V0VXNlck1lZGlhIHRocm93cyBEb21FeGNlcHRpb24gYWx3YXlzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyODU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcHJvdmlkZVVzZXJNZWRp
YVRvKCkgaXMgbm90IGNhbGxlZCB0byBpbml0aWFsaXplIFVzZXJNZWRpYUNvbnRyb2xsZXIKKyAg
ICAgICAgaW4gY2FzZSBvZiBFRkwgcG9ydC4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGNhbGwgdG8g
cHJvdmlkZVVzZXJNZWRpYXRvKCkKKyAgICAgICAgZnJvbSBXZWJQYWdlIHdoaWxlIGluaXRpYWxp
emluZyBvdGhlciBmZWF0dXJlcyBhcyB3ZWxsLgorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIGlu
Y2x1ZGVzIHRoZSBjb2RlIGNoYW5nZXMgcmVxdWlyZWQgdG8gcXVlcnkgdXNlciB0bworICAgICAg
ICBwcm92aWRlIHBlcm1pc3Npb24gZm9yIG1lZGlhIGRldmljZSBhY2Nlc3MuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6
VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRkZWQuCisgICAg
ICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0R2V0VHlwZUlEKToKKyAgICAgICAgKFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyk6CisgICAgICAgIChXS1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3VzZXJfbWVkaWEuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfVXNlcl9NZWRpYV9Q
ZXJtaXNzaW9uX1JlcXVlc3Q6Ol9Fd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QpOgor
ICAgICAgICAoZXdrVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDcmVhdGUpOgorICAgICAgICAo
ZXdrVXNlck1lZGlhRGVsZXRlUGVybWlzc2lvblJlcXVlc3RMaXN0KToKKyAgICAgICAgKGV3a1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVjaWRlZCk6CisgICAgICAgIChld2tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFN1c3BlbmRlZCk6CisgICAgICAgIChld2tfdXNlcl9tZWRpYV9wZXJt
aXNzaW9uX3JlcXVlc3Rfc3VzcGVuZCk6CisgICAgICAgIChld2tfdXNlcl9tZWRpYV9wZXJtaXNz
aW9uX3JlcXVlc3Rfc2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXNlcl9t
ZWRpYS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXNlcl9tZWRp
YV9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9NZWRpYVN0cmVhbTogQWRk
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6YWxsb3cpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdDo6ZGVueSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTWVkaWFT
dHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpp
bnZhbGlkYXRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlVXNlck1lZGlh
UGVybWlzc2lvbkRlY2lzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVy
bWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9NZWRpYVN0cmVhbTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6Z2VuZXJhdGVSZXF1ZXN0SUQpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VXNlck1lZGlhQ2xpZW50OjpXZWJVc2VyTWVkaWFDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyTWVkaWFDbGllbnQ6On5XZWJVc2VyTWVkaWFDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyTWVkaWFDbGllbnQ6OnBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyTWVkaWFDbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlck1lZGlhQ2xpZW50OjpjYW5jZWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VXNlck1lZGlhQ2xpZW50OjpzdGFydFVzZXJNZWRpYSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJNZWRpYUNsaWVudDo6ZGVjaWRlUGVybWlzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpX
ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVVzZXJN
ZWRpYVBlcm1pc3Npb25EZWNpc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bjoKKwogMjAxNC0wNS0yMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW1VOSVhdIFJlb3JnYW5pemUgYW5kIGNsZWFudXAgbWFpbiBmdW5jdGlv
bnMgb2YgR1RLIGFuZCBFRkwgcG9ydHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCShy
ZXZpc2lvbiAxNjkyNDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtMTIxLDYgKzEyMSw5IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCiAK
KyAgICBVSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3Bw
CisgICAgVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5LmNwcAorCiAgICAgVUlQcm9jZXNzL05ldHdvcmsvc291cC9OZXR3b3JrUHJvY2Vz
c1Byb3h5U291cC5jcHAKIAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0
b3JlVW5peC5jcHAKQEAgLTE3MywxMCArMTc2LDE0IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVF
ZmwuY3BwCiAKKyAgICBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5jcHAKKwogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4
L1BsdWdpblByb3h5VW5peC5jcHAKIAogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94
MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCiAKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAKKwogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
ZWZsL1dlYkNvbnRleHRNZW51Q2xpZW50RWZsLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZWZsL1dlYkVkaXRvckNsaWVudEVmbC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwCkBAIC0yMzMsOSArMjQwLDExIEBAIGxpc3QoQVBQ
RU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvQVBJL2NwcC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZs
IgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcyIKKyAg
ICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL01lZGlhU3RyZWFtIgogICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cCIKICAgICAiJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL3Nv
dXAiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0iCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
ZWZsIgpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UJKHJldmlzaW9uIDE2OTI0OCkKKysr
IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAs
NiArMjQwLDkgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3Mv
TGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKIAorICAgIFVJUHJvY2Vzcy9NZWRp
YVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKKyAgICBVSVByb2Nlc3MvTWVk
aWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisKICAg
ICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eVNvdXAuY3BwCiAgICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAgICAg
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC0yNzksMTAgKzI4MiwxNCBAQCBsaXN0KEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKIAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ3RrL0luamVj
dGVkQnVuZGxlR3RrLmNwcAogCisgICAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCisKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3BwCiAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAogCisgICAgV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCisKICAgICBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2d0ay9XZWJDb250ZXh0TWVudUNsaWVudEd0ay5jcHAKICAgICBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAogICAgIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKQEAgLTQwOCwxMSArNDE1
LDEzIEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQ
cm9jZXNzL0FQSS9jcHAvZ3RrIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0
ayIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL01lZGlhU3RyZWFtIgogICAgICIke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cCIKICAgICAi
JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL1BsdWdpbnMvZ3RrIgogICAgICIke1dFQktJVDJfRElS
fS9VSVByb2Nlc3MvZ3RrIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrIgorICAg
ICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL01lZGlhU3RyZWFtIgogICAgICIke1dFQktJVDJf
RElSfS9XZWJQcm9jZXNzL2d0ayIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9zb3Vw
IgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ayIKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDE2OTI0OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEz
MSw5IEBAIHB1YmxpYzoKICAgICAgICAgUHJlZmVyZW5jZXMsCiAgICAgICAgIFNlc3Npb24sCiAg
ICAgICAgIFRleHRDaGVja2VyLAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LAorI2VuZGlmCiAgICAgICAgIFZpYnJhdGlvbiwKICAg
ICAgICAgVmlld3BvcnRBdHRyaWJ1dGVzLAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLQmFzZS5oCShyZXZpc2lvbiAxNjkyNDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS1ByZWZlcmVuY2VzCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS1Byb3RlY3Rpb25TcGFjZSogV0tQcm90ZWN0aW9uU3BhY2VSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1RleHRDaGVja2VyKiBXS1RleHRDaGVja2VyUmVmOwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tTZXNzaW9uKiBXS1Nlc3Npb25SZWY7Cit0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiBXS1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWJyYXRp
b24qIFdLVmlicmF0aW9uUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWV3cG9y
dEF0dHJpYnV0ZXMqIFdLVmlld3BvcnRBdHRyaWJ1dGVzUmVmOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTY5MjQ4KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3MCw2ICsyNzAsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBw
CiAgICAgLCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudCgpKQogICAgICwgbV9nZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKICAgICAsIG1fbm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisgICAgLCBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKKyNlbmRp
ZgogICAgICwgbV92aWV3U3RhdGUoVmlld1N0YXRlOjpOb0ZsYWdzKQogI2lmIFBMQVRGT1JNKElP
UykKICAgICAsIG1fYWN0aXZpdHlUb2tlbihudWxscHRyKQpAQCAtNDE2NCw2ICs0MTY3LDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKCkKIAogICAgIG1fbm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmludmFsaWRhdGVSZXF1ZXN0cygpOwogCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5p
bnZhbGlkYXRlUmVxdWVzdHMoKTsKKyNlbmRpZgorCiAgICAgbV90b29sVGlwID0gU3RyaW5nKCk7
CiAKICAgICBtX21haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgPSBmYWxzZTsKQEAgLTQ0
MzYsNiArNDQ0MywxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd05vdGlmaWNhdGlvbihjb25z
CiAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk+KCktPnNob3codGhpcywgdGl0bGUsIGJvZHksIGljb25VUkwsIHRhZywgbGFuZywg
ZGlyLCBvcmlnaW5TdHJpbmcsIG5vdGlmaWNhdGlvbklEKTsKIH0KIAorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb24o
dWludDY0X3QgcmVxdWVzdElEKQoreworICAgIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdD4gcmVxdWVzdCA9IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNyZWF0
ZVJlcXVlc3QocmVxdWVzdElEKTsKKworICAgIGlmICghbV91aUNsaWVudC0+ZGVjaWRlUG9saWN5
Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QodGhpcywgcmVxdWVzdC5nZXQoKSkpCisgICAg
ICAgIHJlcXVlc3QtPmRlbnkoKTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2Fu
Y2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fcHJvY2Vz
cy0+Y29udGV4dCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5j
YW5jZWwodGhpcywgbm90aWZpY2F0aW9uSUQpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTY5MjQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSwxMCBAQAog
I2luY2x1ZGUgIk5hdGl2ZVdlYlRvdWNoRXZlbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAiV0tQYWdlRWZs
LmgiCiAjaW5jbHVkZSAiV2ViVUlQb3B1cE1lbnVDbGllbnQuaCIKQEAgLTEyMTgsNiArMTIyMiwx
MCBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0
aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJ
RCk7CisjZW5kaWYKKwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZvaWQgcGFn
ZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHBh
Z2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOwpAQCAtMTUyOSw2ICsxNTM3LDEwIEBAIHByaXZh
dGU6CiAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSBtX2dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogICAgIE5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5IG1fbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOwogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eSBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsK
KyNlbmRpZgorCiAgICAgV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBtX3ZpZXdTdGF0ZTsKIAog
I2lmIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTY5MjQ4KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMjQ1LDYgKzI0NSwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIENsZWFy
Tm90aWZpY2F0aW9ucyhWZWN0b3I8dWludDY0X3Q+IG5vdGlmaWNhdGlvbklEcykKICAgICBEaWRE
ZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKyAgICAjIFVzZXJNZWRpYSBtZXNzYWdlcworICAgIFJlcXVlc3RVc2Vy
TWVkaWFQZXJtaXNzaW9uKHVpbnQ2NF90IHJlcXVlc3RJRCkKKyNlbmRpZgorCiAgICAgIyBTcGVs
bGluZyBhbmQgZ3JhbW1hciBtZXNzYWdlcwogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcp
ICAKICAgICBDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcgdGV4dCwgdWludDY0X3QgY2hlY2tp
bmdUeXBlcykgLT4gKFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHMp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCShyZXZp
c2lvbiAxNjkyNDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksMTAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktp
dDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgV2ViS2l0OjpXZWJTZWN1
cml0eU9yaWdpbiosIFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5Kikg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6Oldl
YlNlY3VyaXR5T3JpZ2luKiwgV2ViS2l0OjpOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCop
IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZpcnR1
YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6
OldlYlBhZ2VQcm94eSosIFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqKSB7IHJl
dHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICAvLyBQcmludGluZy4KICAgICB2aXJ0dWFsIGZs
b2F0IGhlYWRlckhlaWdodChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSopIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGZsb2F0IGZvb3RlckhlaWdodChXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSopIHsgcmV0dXJuIDA7IH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlz
aW9uIDE2OTI0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTEgQEAgY2xhc3MgQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyOwogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eTsKIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0OworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0OworI2VuZGlmCisKIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJv
eHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtOwpAQCAtMTQ0LDYgKzE0OSwxMSBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tQcm90ZWN0aW9u
U3BhY2VSZWYsCiBXS19BRERfQVBJX01BUFBJTkcoV0tSZW5kZXJMYXllclJlZiwgV2ViUmVuZGVy
TGF5ZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tSZW5kZXJPYmplY3RSZWYsIFdlYlJlbmRlck9i
amVjdCkKIFdLX0FERF9BUElfTUFQUElORyhXS1RleHRDaGVja2VyUmVmLCBXZWJUZXh0Q2hlY2tl
cikKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitXS19BRERfQVBJX01BUFBJTkcoV0tVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpCisj
ZW5kaWYKKwogV0tfQUREX0FQSV9NQVBQSU5HKFdLVmlicmF0aW9uUmVmLCBXZWJWaWJyYXRpb25Q
cm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiwgV2ViVmll
d3BvcnRBdHRyaWJ1dGVzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLSW5zcGVjdG9yUmVmLCBXZWJJ
bnNwZWN0b3JQcm94eSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCShyZXZpc2lvbiAxNjkyNDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3Nyw2ICsxNDc3LDE3IEBAIHZvaWQg
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWcKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICAgICB2aXJ0
dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViUGFn
ZVByb3h5KiBwYWdlLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogcGVybWlzc2lvblJlcXVl
c3QpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRl
UG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdCh0b0FQSShwYWdlKSwgdG9BUEkocGVybWlzc2lvblJlcXVlc3Qp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICAvLyBQcmludGluZy4KICAgICAgICAgdmly
dHVhbCBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5
KiBmcmFtZSkgb3ZlcnJpZGUKICAgICAgICAgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgJKHJldmlzaW9uIDE2OTI0OCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC04Miw2ICs4Miw3IEBAIHR5cGVkZWYgdm9pZCAoKldLUGFnZVByaW50RnJhbWVDYWxs
YmFjaykKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXJDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBXS1N0cmluZ1JlZiBtaW1lVHlwZSwgV0tVUkxSZWYgb3JpZ2luYXRpbmdVUkwsIFdLRGF0YVJl
ZiBkYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLUGFnZVNo
b3VsZEludGVycnVwdEphdmFTY3JpcHRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU2Vj
dXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVm
IHBlcm1pc3Npb25SZXF1ZXN0LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9p
ZCAoKldLUGFnZURlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJh
Y2spKFdLUGFnZVJlZiBwYWdlLCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHBlcm1p
c3Npb25SZXF1ZXN0LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldL
UGFnZVNob3dDb2xvclBpY2tlckNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYg
aW5pdGlhbENvbG9yLCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlSGlkZUNvbG9yUGlj
a2VyQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5
cGVkZWYgdm9pZCAoKldLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNr
KShXS1BhZ2VSZWYgcGFnZSwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiBwbHVnaW5VbmF2
YWlsYWJpbGl0eVJlYXNvbiwgV0tEaWN0aW9uYXJ5UmVmIHBsdWdpbkluZm9EaWN0aW9uYXJ5LCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAgLTE5MSw2ICsxOTIsNyBAQCB0eXBlZGVmIHN0cnVj
dCBXS1BhZ2VVSUNsaWVudFYxIHsKICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CiAgICAg
V0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKICAgICBXS1BhZ2VEZWNpZGVQb2xp
Y3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgIGRlY2lk
ZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURlY2lk
ZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgZGVjaWRlUG9s
aWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q7CiAgICAgV0tQYWdlVW5hdmFpbGFibGVQ
bHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB1bmF2YWls
YWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKIH0gV0tQYWdl
VUlDbGllbnRWMTsKIApAQCAtMjQyLDYgKzI0NCw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJ
Q2xpZW50VjIgewogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKICAgICBXS1BhZ2VNb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50OwogICAgIFdLUGFnZURlY2lkZVBvbGljeUZvck5vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgZGVjaWRlUG9saWN5Rm9y
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9y
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICBkZWNpZGVQb2xpY3lGb3JVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKICAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRv
bkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxlUGx1Z2lu
QnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOwogCiAgICAgLy8gVmVyc2lvbiAy
LgpAQCAtMjk4LDYgKzMwMSw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjMgewog
ICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKICAgICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVy
RWxlbWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50OwogICAgIFdLUGFnZURlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdDsKICAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tl
ZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOwogCiAgICAgLy8gVmVyc2lvbiAyLgpAQCAtMzU5LDYg
KzM2Myw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50IHsKICAgICBXS1BhZ2VDcmVh
dGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZU5ld1BhZ2U7CiAgICAgV0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDsK
ICAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdENh
bGxiYWNrICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0OworICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
Q2FsbGJhY2sgICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q7CiAg
ICAgV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMSB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMTsKIAogICAgIC8vIFZlcnNpb24gMi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6QVBJVHlwZSk7Cit9CisKK3ZvaWQgV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QpCit7CisgICAgcmV0dXJuIHRvSW1wbCh1c2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdCktPmFsbG93KCk7Cit9CisKK3ZvaWQgV0tVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdERlbnkoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdCkKK3sKKyAgICByZXR1cm4gdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0KS0+ZGVueSgpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RfaAorI2RlZmluZSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RHZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIHZvaWQgV0tVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYg
dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOworV0tfRVhQT1JUIHZvaWQgV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdERlbnkoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CisKKyNlbmRpZiAvLyBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0X2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191c2VyX21lZGlhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXNlcl9tZWRpYS5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXNl
cl9tZWRpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a191c2VyX21lZGlhLmgiCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldL
UmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIgor
I2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKworc3RydWN0IF9Fd2tfVXNlcl9NZWRpYV9Q
ZXJtaXNzaW9uX1JlcXVlc3QgeworICAgIFdLUmV0YWluUHRyPFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RSZWY+IHJlcXVlc3RSZWY7CisgICAgRXZhc19PYmplY3QqIGV3a1ZpZXc7CisgICAg
Ym9vbCBpc0RlY2lkZWQ7CisgICAgYm9vbCBpc1N1c3BlbmRlZDsKKworICAgIF9Fd2tfVXNlcl9N
ZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdLUmV0YWluUHRy
PFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWY+IHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UmVmKQorICAgICAgICA6IHJlcXVlc3RSZWYodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RS
ZWYpCisgICAgICAgICwgZXdrVmlldyhld2tWaWV3KQorICAgICAgICAsIGlzRGVjaWRlZChmYWxz
ZSkKKyAgICAgICAgLCBpc1N1c3BlbmRlZChmYWxzZSkKKyAgICB7IH0KK307CisKK0V3a19Vc2Vy
X01lZGlhX1Blcm1pc3Npb25fUmVxdWVzdCogZXdrVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RD
cmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RS
ZWYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpCit7CisgICAgcmV0dXJuIG5ldyBFd2tf
VXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QoZXdrVmlldywgdXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RSZWYpOworfQorCit2b2lkIGV3a1VzZXJNZWRpYURlbGV0ZVBlcm1pc3Npb25SZXF1
ZXN0TGlzdChFaW5hX0xpc3QqIHJlcXVlc3RMaXN0KQoreworICAgIHZvaWQqIGRhdGEgPSAwOwor
ICAgIEVJTkFfTElTVF9GUkVFKHJlcXVlc3RMaXN0LCBkYXRhKQorICAgICAgICBkZWxldGUgKHN0
YXRpY19jYXN0PEV3a19Vc2VyX01lZGlhX1Blcm1pc3Npb25fUmVxdWVzdCo+KGRhdGEpKTsKK30K
KworYm9vbCBld2tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlY2lkZWQoRXdrX1VzZXJfTWVk
aWFfUGVybWlzc2lvbl9SZXF1ZXN0KiBwZXJtaXNzaW9uUmVxdWVzdCkKK3sKKyAgICByZXR1cm4g
cGVybWlzc2lvblJlcXVlc3QtPmlzRGVjaWRlZDsKK30KKworYm9vbCBld2tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFN1c3BlbmRlZChFd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3Qq
IHBlcm1pc3Npb25SZXF1ZXN0KQoreworICAgIHJldHVybiBwZXJtaXNzaW9uUmVxdWVzdC0+aXNT
dXNwZW5kZWQ7Cit9CisjZW5kaWYKKworRWluYV9Cb29sIGV3a191c2VyX21lZGlhX3Blcm1pc3Np
b25fcmVxdWVzdF9zdXNwZW5kKEV3a19Vc2VyX01lZGlhX1Blcm1pc3Npb25fUmVxdWVzdCogcGVy
bWlzc2lvblJlcXVlc3QpCit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocGVybWlzc2lvblJlcXVlc3QsIGZhbHNlKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocGVybWlzc2lvblJlcXVlc3QtPnJlcXVlc3RS
ZWYsIGZhbHNlKTsKKworICAgIHBlcm1pc3Npb25SZXF1ZXN0LT5pc1N1c3BlbmRlZCA9IHRydWU7
CisKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBlcm1pc3Npb25S
ZXF1ZXN0KTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBld2tfdXNlcl9t
ZWRpYV9wZXJtaXNzaW9uX3JlcXVlc3Rfc2V0KEV3a19Vc2VyX01lZGlhX1Blcm1pc3Npb25fUmVx
dWVzdCogcGVybWlzc2lvblJlcXVlc3QsIEVpbmFfQm9vbCBhbGxvd2VkKQoreworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocGVybWlzc2lv
blJlcXVlc3QpOworCisgICAgcGVybWlzc2lvblJlcXVlc3QtPmlzRGVjaWRlZCA9IHRydWU7CisK
KyAgICBpZiAoYWxsb3dlZCkKKyAgICAgICAgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFs
bG93KHBlcm1pc3Npb25SZXF1ZXN0LT5yZXF1ZXN0UmVmLmdldCgpKTsKKyAgICBlbHNlCisgICAg
ICAgIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZW55KHBlcm1pc3Npb25SZXF1ZXN0LT5y
ZXF1ZXN0UmVmLmdldCgpKTsKKworICAgIGV3a1ZpZXdEZWxldGVVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdChwZXJtaXNzaW9uUmVxdWVzdC0+ZXdrVmlldywgcGVybWlzc2lvblJlcXVlc3QpOwor
ICAgIGRlbGV0ZSBwZXJtaXNzaW9uUmVxdWVzdDsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBl
cm1pc3Npb25SZXF1ZXN0KTsKKyAgICBVTlVTRURfUEFSQU0oYWxsb3dlZCk7CisjZW5kaWYKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191c2VyX21lZGlhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VzZXJf
bWVkaWEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a191c2VyX21lZGlhLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIGV3a191c2VyX21lZGlhX2gKKyNkZWZpbmUgZXdrX3VzZXJfbWVkaWFfaAor
CisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVl
c3QgRXdrX1VzZXJfTWVkaWFfUGVybWlzc2lvbl9SZXF1ZXN0OworCisvKioKKyAqIFNldHMgdGhl
IHBlcm1pc3Npb24gdG8gYWNjZXNzIGxvY2FsIG1lZGlhCisgKgorICogQHBhcmFtIHJlcXVlc3Qg
RXdrX1ZpZXdfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3Qgb2JqZWN0IGZvciB1c2VyTWVk
aWEgcGVybWlzc2lvbgorICogQHBhcmFtIGFsbG93ZWQgZGVjaWRlZCBwZXJtaXNzaW9uIHZhbHVl
IGZyb20gdXNlcgorICovCitFQVBJIHZvaWQgZXdrX3VzZXJfbWVkaWFfcGVybWlzc2lvbl9yZXF1
ZXN0X3NldChFd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QgKnJlcXVlc3QsIEVpbmFf
Qm9vbCBhbGxvd2VkKTsKKworLyoqCisgKiBTdXNwZW5kIHRoZSBvcGVyYXRpb24gZm9yIHVzZXIg
bWVkaWEgcGVybWlzc2lvbgorICoKKyAqIEBwYXJhbSByZXF1ZXN0IHVzZXIgbWVkaWEgcGVybWlz
c2lvbiByZXF1ZXN0IG9iamVjdAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a191
c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9zdXNwZW5kKEV3a19Vc2VyX01lZGlhX1Blcm1p
c3Npb25fUmVxdWVzdCAqcmVxdWVzdCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CisjZW5kaWYgLy8gZXdrX3VzZXJfbWVkaWFfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3VzZXJfbWVkaWFfcHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191c2VyX21lZGlhX3ByaXZhdGUuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191c2VyX21l
ZGlhX3ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgZXdrX3VzZXJfbWVkaWFfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a191c2VyX21lZGlh
X3ByaXZhdGVfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlIDxFdmFzLmg+
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Vc2Vy
X01lZGlhX1Blcm1pc3Npb25fUmVxdWVzdCBFd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVl
c3Q7CisKK0V3a19Vc2VyX01lZGlhX1Blcm1pc3Npb25fUmVxdWVzdCogZXdrVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RDcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RSZWYpOwordm9pZCBld2tVc2VyTWVkaWFEZWxldGVQZXJtaXNzaW9uUmVx
dWVzdExpc3QoRWluYV9MaXN0KiByZXF1ZXN0cyk7Citib29sIGV3a1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0RGVjaWRlZChFd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QqKTsKK2Jv
b2wgZXdrVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RTdXNwZW5kZWQoRXdrX1VzZXJfTWVkaWFf
UGVybWlzc2lvbl9SZXF1ZXN0Kik7CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjZW5kaWYgLy8gZXdrX3VzZXJfbWVkaWFfcHJpdmF0ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3Q+IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoV2Vi
S2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSAqbWFuYWdlciwgdWlu
dDY0X3QgdXNlck1lZGlhSUQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdChtYW5hZ2VyLCB1c2VyTWVkaWFJRCkpOworfQorCitVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkqIG1hbmFnZXIsIHVpbnQ2NF90IHVzZXJNZWRpYUlE
KQorICAgIDogbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgLCBtX3VzZXJNZWRpYUlEKHVzZXJNZWRp
YUlEKQoreworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OjphbGxvdygpCit7
CisgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWFuYWdlci0+
ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbihtX3VzZXJNZWRpYUlELCB0cnVl
KTsKKyAgICBtX21hbmFnZXIgPSAwOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0OjpkZW55KCkKK3sKKyAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9tYW5hZ2VyLT5kaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKG1fdXNl
ck1lZGlhSUQsIGZhbHNlKTsKKyAgICBtX21hbmFnZXIgPSAwOworfQorCit2b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX21hbmFnZXIgPSAwOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdF9oCisjZGVmaW5lIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0X2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRl
ICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk7
CisKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0IDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdD4g
Y3JlYXRlKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KiwgdWludDY0X3Qg
dXNlck1lZGlhSUQpOworCisgICAgdm9pZCBhbGxvdygpOworICAgIHZvaWQgZGVueSgpOworCisg
ICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKK3ByaXZhdGU6CisgICAgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkqLCB1aW50NjRf
dCB1c2VyTWVkaWFJRCk7CisKKyAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eSogbV9tYW5hZ2VyOworICAgIHVpbnQ2NF90IG1fdXNlck1lZGlhSUQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjZW5kaWYgLy8gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eV9oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJv
bmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCIK
KyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFn
ZSkKK3sKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
aW52YWxpZGF0ZVJlcXVlc3RzKCkKK3sKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3BlbmRp
bmdSZXF1ZXN0cy52YWx1ZXMoKSkKKyAgICAgICAgcmVxdWVzdC0+aW52YWxpZGF0ZSgpOworCisg
ICAgbV9wZW5kaW5nUmVxdWVzdHMuY2xlYXIoKTsKK30KKworUGFzc1JlZlB0cjxVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdD4gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OmNyZWF0ZVJlcXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQpCit7CisgICAgUmVmUHRyPFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3Q6OmNyZWF0ZSh0aGlzLCB1c2VyTWVkaWFJRCk7CisgICAgbV9wZW5kaW5nUmVxdWVzdHMuYWRk
KHVzZXJNZWRpYUlELCByZXF1ZXN0LmdldCgpKTsKKyAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNl
KCk7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRp
ZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNlck1lZGlhSUQs
IGJvb2wgYWxsb3cpCit7CisgICAgaWYgKCFtX3BhZ2UuaXNWYWxpZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q+IHJlcXVlc3QgPSBt
X3BlbmRpbmdSZXF1ZXN0cy50YWtlKHVzZXJNZWRpYUlEKTsKKyAgICBpZiAoIXJlcXVlc3QpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1c2VyTWVkaWFJRCwg
YWxsb3cpLCBtX3BhZ2UucGFnZUlEKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eV9oCisj
ZGVmaW5lIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5X2gKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eTsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkgeworcHVibGljOgorICAgIGV4cGxpY2l0IFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYpOworCisgICAgdm9pZCBpbnZh
bGlkYXRlUmVxdWVzdHMoKTsKKworICAgIC8vIENyZWF0ZSByZXF1ZXN0IHRvIGJlIHByZXNlbnRl
ZCB0byB1c2VyLgorICAgIFBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q+IGNy
ZWF0ZVJlcXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQpOworCisgICAgLy8gQ2FsbGVkIGJ5IFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0IHdoZW4gZGVjaXNpb24gaXMgbWFkZSBieSB1c2VyLgor
ICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1
c2VyTWVkaWFJRCwgYm9vbCBhbGxvdyk7CisKK3ByaXZhdGU6CisgICAgdHlwZWRlZiBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q+ID4gUGVuZGluZ1Jl
cXVlc3RNYXA7CisgICAgUGVuZGluZ1JlcXVlc3RNYXAgbV9wZW5kaW5nUmVxdWVzdHM7CisgICAg
V2ViUGFnZVByb3h5JiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCShyZXZpc2lvbiAxNjky
NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NDMsNiArNDQzLDcgQEAgV2ViUGFnZVByb3h5KiBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcgogICAgICAgICAwLCAvLyBjcmVhdGVQYWdlCiAgICAgICAg
IDAsIC8vIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50CiAgICAgICAgIDAsIC8vIGRlY2lkZVBvbGlj
eUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisgICAgICAgIDAsIC8vIGRlY2lkZVBv
bGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiAgICAgICAgIDAsIC8vIHVuYXZhaWxh
YmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCiAgICAgICAgIDAs
IC8vIHNob3dDb2xvclBpY2tlcgogICAgICAgICAwLCAvLyBoaWRlQ29sb3JQaWNrZXIKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUGFn
ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViVXNl
ck1lZGlhQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdWludDY0X3Qg
Z2VuZXJhdGVSZXF1ZXN0SUQoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVSZXF1ZXN0
SUQgPSAxOworICAgIHJldHVybiB1bmlxdWVSZXF1ZXN0SUQrKzsKK30KKworUGFzc1JlZlB0cjxV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIocGFnZSkpOworfQorCitVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcihXZWJQYWdlKiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK3ZvaWQg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZXF1ZXN0UGVybWlzc2lvbihVc2Vy
TWVkaWFQZXJtaXNzaW9uKiBwZXJtaXNzaW9uKQoreworICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9
IGdlbmVyYXRlUmVxdWVzdElEKCk7CisgICAgbV9pZFRvUGVybWlzc2lvbk1hcC5zZXQocmVxdWVz
dElELCBwZXJtaXNzaW9uKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb24ocmVxdWVzdElEKSk7Cit9CisKK3ZvaWQgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlz
c2lvbkRlY2lzaW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBhbGxvd2VkKQoreworICAgIFVz
ZXJNZWRpYVBlcm1pc3Npb24qIHBlcm1pc3Npb24gPSBtX2lkVG9QZXJtaXNzaW9uTWFwLnRha2Uo
cmVxdWVzdElEKTsKKyAgICBwZXJtaXNzaW9uLT5kZWNpZGVQZXJtaXNzaW9uKGFsbG93ZWQpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyX2gKKyNkZWZpbmUgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyX2gKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvbjsKK2NsYXNzIFdlYlBh
Z2U7CisKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4geworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4g
Y3JlYXRlKFdlYlBhZ2UqKTsKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFVzZXJNZWRpYVBl
cm1pc3Npb24qKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNp
b24odWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCk7CisKK3ByaXZhdGU6CisgICAg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UqKTsKKyAgICBXZWJQYWdl
KiBtX3BhZ2U7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgVXNlck1lZGlhUGVybWlzc2lvbio+IG1f
aWRUb1Blcm1pc3Npb25NYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xp
ZW50LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJVVUlELmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJVc2VyTWVkaWFDbGllbnQ6OldlYlVzZXJNZWRpYUNsaWVudChXZWJQYWdlKiBw
YWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1dlYlVzZXJNZWRpYUNsaWVudDo6fldl
YlVzZXJNZWRpYUNsaWVudCgpCit7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpwYWdl
RGVzdHJveWVkKCkKK3sKKyAgICBkZWxldGUgdGhpczsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFD
bGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKFdURjo6UGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0
PiByZXF1ZXN0KQoreworICAgIG1fdXNlck1lZGlhUmVxdWVzdCA9IHJlcXVlc3Q7CisKKyAgICBt
X3BhZ2UtPnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLT5yZXF1ZXN0UGVybWlz
c2lvbih0aGlzKTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNlbFJlcXVlc3Qo
VXNlck1lZGlhUmVxdWVzdCopCit7CisgICAgcmV0dXJuOworfQorCit2b2lkIFdlYlVzZXJNZWRp
YUNsaWVudDo6c3RhcnRVc2VyTWVkaWEoKQoreworICAgIC8vIFRPRE86IENyZWF0ZSBhdWRpbyBh
bmQgdmlkZW8gc3RyZWFtIHNvdXJjZXMgaGVyZS4KK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGll
bnQ6OmRlY2lkZVBlcm1pc3Npb24oYm9vbCBhbGxvd2VkKQoreworICAgIFBlcm1pc3Npb24gcGVy
bWlzc2lvbiA9IGFsbG93ZWQgPyBQZXJtaXNzaW9uQWxsb3dlZCA6IFBlcm1pc3Npb25EZW5pZWQ7
CisKKyAgICBzd2l0Y2ggKHBlcm1pc3Npb24pIHsKKyAgICBjYXNlIFBlcm1pc3Npb25BbGxvd2Vk
OgorICAgICAgICBzdGFydFVzZXJNZWRpYSgpOworICAgICAgICBtX3VzZXJNZWRpYVJlcXVlc3Qu
Z2V0KCktPnVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgUGVybWlzc2lvbkRlbmllZDoKKyAgICAgICAgbV91c2VyTWVkaWFSZXF1ZXN0LmdldCgpLT51
c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1
bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVXNlck1lZGlh
Q2xpZW50X2gKKyNkZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50X2gKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIlVz
ZXJNZWRpYUNsaWVudC5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Np
b24geworcHVibGljOgorICAgIGVudW0gUGVybWlzc2lvbiB7CisgICAgICAgIFBlcm1pc3Npb25E
ZW5pZWQsIC8vIFVzZXIgaGFzIGV4cGxpY2l0bHkgZGVuaWVkIHBlcm1pc3Npb24KKyAgICAgICAg
UGVybWlzc2lvbkFsbG93ZWQgLy8gVXNlciBoYXMgYWxsb3dlZCBtZWRpYSBzdHJlYW0KKyAgICB9
OworCisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBlcm1pc3Npb24oYm9vbCkgPSAwOworfTsKKwor
Y2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVu
dCwgcHVibGljIFVzZXJNZWRpYVBlcm1pc3Npb24geworcHVibGljOgorCisgICAgV2ViVXNlck1l
ZGlhQ2xpZW50KFdlYlBhZ2UqKTsKKyAgICB+V2ViVXNlck1lZGlhQ2xpZW50KCk7CisKKyAgICB2
aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVy
bWlzc2lvbihXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4pOworICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKTsK
KworICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQZXJtaXNzaW9uKGJvb2wpOworCitwcml2YXRlOgor
ICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+IG1fdXNlck1lZGlhUmVx
dWVzdDsKKworICAgIHZvaWQgc3RhcnRVc2VyTWVkaWEoKTsKKworICAgIFdlYlBhZ2UqIG1fcGFn
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2VuZGlmIC8vIFdlYlVzZXJNZWRpYUNsaWVudF9oCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNjky
NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2OCw2ICsxNjgsMTEgQEAKICNpbmNsdWRlICJXZWJWaWJyYXRpb25D
bGllbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVk
aWFDbGllbnQuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBST1hJTUlUWV9FVkVOVFMpCiAjaW5j
bHVkZSAiV2ViRGV2aWNlUHJveGltaXR5Q2xpZW50LmgiCiAjZW5kaWYKQEAgLTM3NCw2ICszNzks
OSBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QKICNpZiBFTkFCTEUo
VklCUkFUSU9OKQogICAgIFdlYkNvcmU6OnByb3ZpZGVWaWJyYXRpb25UbyhtX3BhZ2UuZ2V0KCks
IG5ldyBXZWJWaWJyYXRpb25DbGllbnQodGhpcykpOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICBXZWJDb3JlOjpwcm92aWRlVXNlck1lZGlhVG8obV9wYWdlLmdldCgpLCBu
ZXcgV2ViVXNlck1lZGlhQ2xpZW50KHRoaXMpKTsKKyNlbmRpZgogI2lmIEVOQUJMRShQUk9YSU1J
VFlfRVZFTlRTKQogICAgIFdlYkNvcmU6OnByb3ZpZGVEZXZpY2VQcm94aW1pdHlUbyhtX3BhZ2Uu
Z2V0KCksIG5ldyBXZWJEZXZpY2VQcm94aW1pdHlDbGllbnQodGhpcykpOwogI2VuZGlmCkBAIC0y
NzkyLDYgKzI4MDAsMTcgQEAgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKiBX
ZQogICAgIHJldHVybiBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5nZXQo
KTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIqIFdlYlBhZ2U6OnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigp
Cit7CisgICAgaWYgKG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKQorICAgICAg
ICByZXR1cm4gbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZ2V0KCk7CisKKyAg
ICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA9IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcjo6Y3JlYXRlKHRoaXMpOworICAgICAgICByZXR1cm4gbV91c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZ2V0KCk7Cit9CisjZW5kaWYKKwogI2lmICFQTEFU
Rk9STShHVEspICYmICFQTEFURk9STShDT0NPQSkKIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGlu
Z0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZ0KQogewpAQCAtMzExNCw2ICszMTMzLDEz
IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm0KICAgICBub3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS0+ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBl
cm1pc3Npb25EZWNpc2lvbihub3RpZmljYXRpb25JRCwgYWxsb3dlZCk7CiB9CiAKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlz
c2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQpCit7CisgICAg
dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCktPmRpZFJlY2VpdmVVc2VyTWVkaWFQ
ZXJtaXNzaW9uRGVjaXNpb24odXNlck1lZGlhSUQsIGFsbG93ZWQpOworfQorI2VuZGlmCisKICNp
ZiAhUExBVEZPUk0oSU9TKQogdm9pZCBXZWJQYWdlOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmco
Ym9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTY5MjQ4KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTgw
LDYgKzE4MCwxMSBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFdl
YlRvdWNoRXZlbnQ7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitjbGFzcyBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CitjbGFzcyBXZWJVc2VyTWVkaWFDbGll
bnQ7CisjZW5kaWYKKwogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKIGNs
YXNzIFRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyOwogI2VuZGlmCkBAIC00NDIsNiAr
NDQ3LDEwIEBAIHB1YmxpYzoKICAgICBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ciYgZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKSB7IHJldHVybiBtX2dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKiB1c2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzY3JlZW5TaXplKCkgY29uc3Q7CiAgICAgV2Vi
Q29yZTo6RmxvYXRTaXplIGF2YWlsYWJsZVNjcmVlblNpemUoKSBjb25zdDsKQEAgLTk5MCw2ICs5
OTksMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1p
c3Npb25EZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgYm9vbCBhbGxvd2VkKTsKIAor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVy
bWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQpOworI2Vu
ZGlmCisKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3Jl
U2VsZWN0aW9uKTsKICAgICB2b2lkIGNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYg
d29yZCk7CiAjaWYgVVNFKEFQUEtJVCkKQEAgLTExNTAsNiArMTE2MywxMCBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4gbV9hY3RpdmVPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lcjsKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyPiBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIAorI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcj4gbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CisjZW5kaWYKKwog
ICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fdXNlckNvbnRlbnRDb250cm9s
bGVyOwogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9u
IDE2OTI0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNiArMjYxLDEwIEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgICMgTm90aWZpY2F0aW9uCiAgICAgRGlkUmVj
ZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25J
RCwgYm9vbCBhbGxvd2VkKQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBEaWRSZWNl
aXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29s
IGFsbG93ZWQpCisjZW5kaWYKKwogICAgIFNldFdpbmRvd1Jlc2l6ZXJTaXplKFdlYkNvcmU6Oklu
dFNpemUgaW50ZXJzZWN0c1ZpZXcpCiAKICAgICAjIFByaW50aW5nLgpJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5MjU2KQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQt
MDUtMjMgIFByYXZlZW4gUiBKYWRoYXYgIDxwcmF2ZWVuLmpAc2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW01lZGlhU3RyZWFtXSBbRUZMXSBnZXRVc2VyTWVkaWEgdGhyb3dzIERvbUV4Y2VwdGlvbiBh
bHdheXMuLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTMyODU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6IFVzZXJNZWRpYSBpcworICAg
ICAgICBhZGRlZCB0byBwZXJtaXNzaW9uIHJlcXVlc3QgaW4gVUlDbGllbnQuCisKIDIwMTQtMDUt
MjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIEdPYmplY3QgRE9NIGJpbmRpbmdzIEFQSSBicmVhayB0ZXN0IHNob3VsZCBmYWlsIGlu
IHRoZSBib3RzIHdoZW4gdGhlIGNvbW1hbmQgZmFpbHMgdG8gcnVuCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTY5MjQ4KQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ2Miw2ICs0NjIsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9w
CiAgICAgICAgIGNyZWF0ZU90aGVyUGFnZSwKICAgICAgICAgMCwgLy8gbW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QsIC8vIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Cisg
ICAgICAgIDAsIC8vIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiAg
ICAgICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYxCiAgICAgICAgIDAsIC8vIHNob3dDb2xvclBpY2tlcgogICAgICAgICAwLCAvLyBo
aWRlQ29sb3JQaWNrZXIK
</data>
<flag name="review"
          id="256422"
          type_id="1"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232058</attachid>
            <date>2014-05-25 22:47:42 -0700</date>
            <delta_ts>2014-05-26 04:29:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>provideUserMediaTo.txt</filename>
            <type>text/plain</type>
            <size>61392</size>
            <attacher name="Praveen Jadhav">praveen.j</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTMyNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE0LTA1LTI1ICBQcmF2ZWVu
IFIgSmFkaGF2ICA8cHJhdmVlbi5qQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gW0VGTF0gZ2V0VXNlck1lZGlhIHRocm93cyBEb21FeGNlcHRpb24gYWx3YXlzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyODU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcHJvdmlkZVVzZXJNZWRp
YVRvKCkgaXMgbm90IGNhbGxlZCB0byBpbml0aWFsaXplIFVzZXJNZWRpYUNvbnRyb2xsZXIKKyAg
ICAgICAgaW4gY2FzZSBvZiBFRkwgcG9ydC4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGNhbGwgdG8g
cHJvdmlkZVVzZXJNZWRpYVRvKCkKKyAgICAgICAgZnJvbSBXZWJQYWdlIHdoaWxlIGluaXRpYWxp
emluZyBvdGhlciBmZWF0dXJlcyBhcyB3ZWxsLgorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIGlu
Y2x1ZGVzIHRoZSBjb2RlIGNoYW5nZXMgcmVxdWlyZWQgdG8gcXVlcnkgdXNlciB0bworICAgICAg
ICBwcm92aWRlIHBlcm1pc3Npb24gZm9yIG1lZGlhIGRldmljZSBhY2Nlc3MuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAg
ICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1Bh
Z2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
R2V0VHlwZUlEKToKKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyk6
CisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VzZXJfbWVkaWEuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKF9Fd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3Q6Ol9Fd2tfVXNlcl9NZWRp
YV9QZXJtaXNzaW9uX1JlcXVlc3QpOgorICAgICAgICAoZXdrVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RDcmVhdGUpOgorICAgICAgICAoZXdrVXNlck1lZGlhRGVsZXRlUGVybWlzc2lvblJlcXVl
c3RMaXN0KToKKyAgICAgICAgKGV3a1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVjaWRlZCk6
CisgICAgICAgIChld2tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFN1c3BlbmRlZCk6CisgICAg
ICAgIChld2tfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX3JlcXVlc3Rfc3VzcGVuZCk6CisgICAgICAg
IChld2tfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX3JlcXVlc3Rfc2V0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXNlcl9tZWRpYS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdXNlcl9tZWRpYV9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9NZWRpYVN0cmVhbTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL01lZGlhU3Ry
ZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6YWxsb3cpOgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6ZGVueSk6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OjppbnZhbGlkYXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdHMpOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5OjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9y
UGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbTogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVSZXF1ZXN0SUQpOgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVVz
ZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0
cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjpXZWJVc2VyTWVkaWFDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6On5XZWJVc2VyTWVkaWFD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OnBhZ2VEZXN0cm95
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OnJlcXVlc3RQZXJtaXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjpjYW5jZWxSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjpkZWNpZGVQZXJtaXNzaW9u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVu
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE0LTA1LTI1ICBCZW5qYW1pbiBQb3Vs
YWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbaU9TXVtXSzJdIEZpeCBzb21l
IHN0YXRlIHJlc2V0IG9uIGNyYXNoIG9uIHRoZSBXS1dlYlZpZXcKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAxNjkzMjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJ
UkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9Eb3dubG9hZHMiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9MYXVuY2hlciIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L01lZGlhU3RyZWFtIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTmV0d29yayIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzIgogICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucyIKQEAgLTQ5LDYgKzUwLDcg
QEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTSIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJv
Y2Vzcy9MYXVuY2hpbmciCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvTWVkaWFDYWNo
ZSIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbSIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9OZXR3b3JrIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvT3Jp
Z2luRGF0YSIKQEAgLTQwNCw2ICs0MDYsOSBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBV
SVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAogCisgICAgVUlQcm9jZXNzL01l
ZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAorICAgIFVJUHJvY2Vzcy9N
ZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKwog
ICAgIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCiAKICAgICBVSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKQEAg
LTQ4Miw2ICs0ODcsOCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL01l
ZGlhQ2FjaGUvV2ViTWVkaWFDYWNoZU1hbmFnZXIuY3BwCiAKKyAgICBXZWJQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKKwogICAgIFdlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiAgICAgV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKICAgICBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MzMsNiArNTQwLDcgQEAgc2V0KFdlYktp
dDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNw
cAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50
LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNw
cAorICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmNwcAog
ICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlicmF0aW9uQ2xpZW50LmNwcAogCiAg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcApJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElPYmplY3QuaAkocmV2aXNpb24gMTY5MzI3KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDkgQEAgcHVibGlj
OgogICAgICAgICBQcmVmZXJlbmNlcywKICAgICAgICAgU2Vzc2lvbiwKICAgICAgICAgVGV4dENo
ZWNrZXIsCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QsCisjZW5kaWYKICAgICAgICAgVmlicmF0aW9uLAogICAgICAgICBWaWV3cG9y
dEF0dHJpYnV0ZXMsCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJl
dmlzaW9uIDE2OTMyNykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLUHJlZmVyZW5jZXMKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUHJvdGVjdGlv
blNwYWNlKiBXS1Byb3RlY3Rpb25TcGFjZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLVGV4dENoZWNrZXIqIFdLVGV4dENoZWNrZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBP
cGFxdWVXS1Nlc3Npb24qIFdLU2Vzc2lvblJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpYnJhdGlvbiogV0tWaWJyYXRp
b25SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpZXdwb3J0QXR0cmlidXRlcyog
V0tWaWV3cG9ydEF0dHJpYnV0ZXNSZWY7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxNjkzMjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDYgKzI3MCw5
IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1fdXNl
ckFnZW50KHN0YW5kYXJkVXNlckFnZW50KCkpCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKCp0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoKnRoaXMpCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAsIG1fdXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQorI2VuZGlmCiAgICAgLCBtX3Zp
ZXdTdGF0ZShWaWV3U3RhdGU6Ok5vRmxhZ3MpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICwgbV9h
Y3Rpdml0eVRva2VuKG51bGxwdHIpCkBAIC00MTc5LDYgKzQxODIsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnJlc2V0U3RhdGUoKQogCiAgICAgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmludmFsaWRhdGVSZXF1
ZXN0cygpOworI2VuZGlmCisKICAgICBtX3Rvb2xUaXAgPSBTdHJpbmcoKTsKIAogICAgIG1fbWFp
bkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciA9IGZhbHNlOwpAQCAtNDQ1MSw2ICs0NDU4LDE2
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Tm90aWZpY2F0aW9uKGNvbnMKICAgICBtX3Byb2Nl
c3MtPmNvbnRleHQoKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+
c2hvdyh0aGlzLCB0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0
cmluZywgbm90aWZpY2F0aW9uSUQpOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbih1aW50NjRfdCByZXF1
ZXN0SUQpCit7CisgICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0
ID0gbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3JlYXRlUmVxdWVzdChyZXF1
ZXN0SUQpOworCisgICAgaWYgKCFtX3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdCh0aGlzLCByZXF1ZXN0LmdldCgpKSkKKyAgICAgICAgcmVxdWVzdC0+
ZGVueSgpOworfQorI2VuZGlmCisKIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxOb3RpZmljYXRp
b24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCku
c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNhbmNlbCh0aGlzLCBu
b3RpZmljYXRpb25JRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiAxNjkzMjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDEwIEBACiAjaW5jbHVkZSAiTmF0
aXZlV2ViVG91Y2hFdmVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
I2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCisjZW5k
aWYKKwogI2lmIFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlICJXS1BhZ2VFZmwuaCIKICNpbmNsdWRl
ICJXZWJVSVBvcHVwTWVudUNsaWVudC5oIgpAQCAtMTIyNCw2ICsxMjI4LDEwIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90
aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qg
bm90aWZpY2F0aW9uSUQpOwogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIHJl
cXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlEKTsKKyNlbmRpZgor
CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdm9pZCBwYWdlRGlkUmVxdWVzdFNj
cm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgcGFnZVRyYW5zaXRpb25W
aWV3cG9ydFJlYWR5KCk7CkBAIC0xNTM1LDYgKzE1NDMsMTAgQEAgcHJpdmF0ZToKICAgICBHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5IG1fZ2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI7CiAgICAgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CiAKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOworI2VuZGlmCisKICAg
ICBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIG1fdmlld1N0YXRlOwogCiAjaWYgUExBVEZPUk0o
SU9TKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNjkzMjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNiArMjUx
LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgQ2xlYXJOb3RpZmljYXRpb25z
KFZlY3Rvcjx1aW50NjRfdD4gbm90aWZpY2F0aW9uSURzKQogICAgIERpZERlc3Ryb3lOb3RpZmlj
YXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorICAgICMgVXNlck1lZGlhIG1lc3NhZ2VzCisgICAgUmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Np
b24odWludDY0X3QgcmVxdWVzdElEKQorI2VuZGlmCisKICAgICAjIFNwZWxsaW5nIGFuZCBncmFt
bWFyIG1lc3NhZ2VzCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykgIAogICAgIENoZWNr
VGV4dE9mUGFyYWdyYXBoKFN0cmluZyB0ZXh0LCB1aW50NjRfdCBjaGVja2luZ1R5cGVzKSAtPiAo
VmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0cykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgJKHJldmlzaW9uIDE2OTMyNykK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE5LDYgKzExOSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRlY2lk
ZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJv
eHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OldlYlNlY3VyaXR5T3JpZ2luKiwg
V2ViS2l0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkqKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViU2VjdXJpdHlPcmln
aW4qLCBXZWJLaXQ6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KikgeyByZXR1cm4gZmFs
c2U7IH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdmlydHVhbCBib29sIGRlY2lk
ZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5
KiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCopIHsgcmV0dXJuIGZhbHNlOyB9
CisjZW5kaWYKKwogICAgIC8vIFByaW50aW5nLgogICAgIHZpcnR1YWwgZmxvYXQgaGVhZGVySGVp
Z2h0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KikgeyByZXR1
cm4gMDsgfQogICAgIHZpcnR1YWwgZmxvYXQgZm9vdGVySGVpZ2h0KFdlYktpdDo6V2ViUGFnZVBy
b3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KikgeyByZXR1cm4gMDsgfQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gMTY5MzI3KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw2ICs2MiwxMSBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVu
ZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByb3h5OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q7Cisj
ZW5kaWYKKwogY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eTsKIGNsYXNzIFdl
YkJhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CkBAIC0xNDQs
NiArMTQ5LDExIEBAIFdLX0FERF9BUElfTUFQUElORyhXS1Byb3RlY3Rpb25TcGFjZVJlZiwKIFdL
X0FERF9BUElfTUFQUElORyhXS1JlbmRlckxheWVyUmVmLCBXZWJSZW5kZXJMYXllcikKIFdLX0FE
RF9BUElfTUFQUElORyhXS1JlbmRlck9iamVjdFJlZiwgV2ViUmVuZGVyT2JqZWN0KQogV0tfQURE
X0FQSV9NQVBQSU5HKFdLVGV4dENoZWNrZXJSZWYsIFdlYlRleHRDaGVja2VyKQorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKK1dLX0FERF9BUElfTUFQUElORyhXS1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UmVmLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCkKKyNlbmRpZgorCiBXS19B
RERfQVBJX01BUFBJTkcoV0tWaWJyYXRpb25SZWYsIFdlYlZpYnJhdGlvblByb3h5KQogV0tfQURE
X0FQSV9NQVBQSU5HKFdLVmlld3BvcnRBdHRyaWJ1dGVzUmVmLCBXZWJWaWV3cG9ydEF0dHJpYnV0
ZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tJbnNwZWN0b3JSZWYsIFdlYkluc3BlY3RvclByb3h5
KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlz
aW9uIDE2OTMyNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDc3LDYgKzE0NzcsMTggQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
VUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIHZpcnR1YWwgYm9vbCBkZWNp
ZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkqIHBhZ2Us
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiBwZXJtaXNzaW9uUmVxdWVzdCkgb3ZlcnJpZGUK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0KHRvQVBJKHBhZ2UpLCB0b0FQSShwZXJtaXNzaW9uUmVxdWVzdCksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisj
ZW5kaWYKKwogICAgICAgICAvLyBQcmludGluZy4KICAgICAgICAgdmlydHVhbCBmbG9hdCBoZWFk
ZXJIZWlnaHQoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSkgb3ZlcnJp
ZGUKICAgICAgICAgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZVVJQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZVVJQ2xpZW50LmgJKHJldmlzaW9uIDE2OTMyNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4
Miw3IEBAIHR5cGVkZWYgdm9pZCAoKldLUGFnZVByaW50RnJhbWVDYWxsYmFjaykKIHR5cGVkZWYg
dm9pZCAoKldLUGFnZVNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXJDYWxsYmFjaykoV0tQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBXS1N0cmluZ1JlZiBt
aW1lVHlwZSwgV0tVUkxSZWYgb3JpZ2luYXRpbmdVUkwsIFdLRGF0YVJlZiBkYXRhLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLUGFnZVNob3VsZEludGVycnVwdEph
dmFTY3JpcHRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYg
b3JpZ2luLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIHBlcm1pc3Npb25SZXF1
ZXN0LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZURlY2lk
ZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHBlcm1pc3Npb25SZXF1ZXN0LCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVNob3dDb2xvclBp
Y2tlckNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgaW5pdGlhbENvbG9yLCBX
S0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlSGlkZUNvbG9yUGlja2VyQ2FsbGJhY2spKFdL
UGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldL
UGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrKShXS1BhZ2VSZWYgcGFn
ZSwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNv
biwgV0tEaWN0aW9uYXJ5UmVmIHBsdWdpbkluZm9EaWN0aW9uYXJ5LCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKQEAgLTE5MSw2ICsxOTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVu
dFYxIHsKICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CiAgICAgV0tQYWdlTW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudDsKICAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9y
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q7CiAgICAgV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5C
dXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB1bmF2YWlsYWJsZVBs
dWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKIH0gV0tQYWdlVUlDbGll
bnRWMTsKIApAQCAtMjQyLDYgKzI0NCw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50
VjIgewogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKICAgICBXS1BhZ2VNb3VzZURpZE1v
dmVPdmVyRWxlbWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50OwogICAgIFdLUGFnZURlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKICAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1
dHRvbkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxlUGx1
Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOwogCiAgICAgLy8gVmVyc2lv
biAyLgpAQCAtMjk4LDYgKzMwMSw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjMg
ewogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKICAgICBXS1BhZ2VNb3VzZURpZE1vdmVP
dmVyRWxlbWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlRGlk
TW92ZU92ZXJFbGVtZW50OwogICAgIFdLUGFnZURlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKICAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRv
bkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxlUGx1Z2lu
QnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOwogCiAgICAgLy8gVmVyc2lvbiAy
LgpAQCAtMzU5LDYgKzM2Myw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50IHsKICAg
ICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CiAgICAgV0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VzZURpZE1vdmVP
dmVyRWxlbWVudDsKICAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3Q7CiAgICAgV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlj
a2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRv
bkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKIAogICAgIC8vIFZlcnNpb24gMi4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIgorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CisKK1dLVHlwZUlEIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXRUeXBlSUQoKQorewor
ICAgIHJldHVybiB0b0FQSShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6QVBJVHlwZSk7Cit9
CisKK3ZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpCit7CisgICAgcmV0
dXJuIHRvSW1wbCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCktPmFsbG93KCk7Cit9CisKK3Zv
aWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlbnkoV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCkKK3sKKyAgICByZXR1cm4gdG9J
bXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KS0+ZGVueSgpOworfQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RfaAorI2RlZmluZSBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JU
IFdLVHlwZUlEIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXRUeXBlSUQoKTsKKworV0tf
RVhQT1JUIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOworV0tfRVhQ
T1JUIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlbnkoV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCk7CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191c2Vy
X21lZGlhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdXNlcl9tZWRpYS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXNlcl9tZWRpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a191
c2VyX21lZGlhLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKworc3Ry
dWN0IF9Fd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QgeworICAgIFdLUmV0YWluUHRy
PFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWY+IHJlcXVlc3RSZWY7CisgICAgRXZhc19P
YmplY3QqIGV3a1ZpZXc7CisgICAgYm9vbCBpc0RlY2lkZWQ7CisgICAgYm9vbCBpc1N1c3BlbmRl
ZDsKKworICAgIF9Fd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIFdLUmV0YWluUHRyPFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWY+IHVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKQorICAgICAgICA6IHJlcXVlc3RSZWYodXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpCisgICAgICAgICwgZXdrVmlldyhld2tWaWV3KQorICAg
ICAgICAsIGlzRGVjaWRlZChmYWxzZSkKKyAgICAgICAgLCBpc1N1c3BlbmRlZChmYWxzZSkKKyAg
ICB7IH0KK307CisKK0V3a19Vc2VyX01lZGlhX1Blcm1pc3Npb25fUmVxdWVzdCogZXdrVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RDcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpCit7
CisgICAgcmV0dXJuIG5ldyBFd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QoZXdrVmll
dywgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpOworfQorCit2b2lkIGV3a1VzZXJNZWRp
YURlbGV0ZVBlcm1pc3Npb25SZXF1ZXN0TGlzdChFaW5hX0xpc3QqIHJlcXVlc3RMaXN0KQorewor
ICAgIHZvaWQqIGRhdGEgPSAwOworICAgIEVJTkFfTElTVF9GUkVFKHJlcXVlc3RMaXN0LCBkYXRh
KQorICAgICAgICBkZWxldGUgKHN0YXRpY19jYXN0PEV3a19Vc2VyX01lZGlhX1Blcm1pc3Npb25f
UmVxdWVzdCo+KGRhdGEpKTsKK30KKworYm9vbCBld2tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dERlY2lkZWQoRXdrX1VzZXJfTWVkaWFfUGVybWlzc2lvbl9SZXF1ZXN0KiBwZXJtaXNzaW9uUmVx
dWVzdCkKK3sKKyAgICByZXR1cm4gcGVybWlzc2lvblJlcXVlc3QtPmlzRGVjaWRlZDsKK30KKwor
Ym9vbCBld2tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFN1c3BlbmRlZChFd2tfVXNlcl9NZWRp
YV9QZXJtaXNzaW9uX1JlcXVlc3QqIHBlcm1pc3Npb25SZXF1ZXN0KQoreworICAgIHJldHVybiBw
ZXJtaXNzaW9uUmVxdWVzdC0+aXNTdXNwZW5kZWQ7Cit9CisjZW5kaWYKKworRWluYV9Cb29sIGV3
a191c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9zdXNwZW5kKEV3a19Vc2VyX01lZGlhX1Bl
cm1pc3Npb25fUmVxdWVzdCogcGVybWlzc2lvblJlcXVlc3QpCit7CisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocGVybWlzc2lvblJl
cXVlc3QsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocGVybWlz
c2lvblJlcXVlc3QtPnJlcXVlc3RSZWYsIGZhbHNlKTsKKworICAgIHBlcm1pc3Npb25SZXF1ZXN0
LT5pc1N1c3BlbmRlZCA9IHRydWU7CisKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKHBlcm1pc3Npb25SZXF1ZXN0KTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
K30KKwordm9pZCBld2tfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX3JlcXVlc3Rfc2V0KEV3a19Vc2Vy
X01lZGlhX1Blcm1pc3Npb25fUmVxdWVzdCogcGVybWlzc2lvblJlcXVlc3QsIEVpbmFfQm9vbCBh
bGxvd2VkKQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4ocGVybWlzc2lvblJlcXVlc3QpOworCisgICAgcGVybWlzc2lvblJlcXVlc3Qt
PmlzRGVjaWRlZCA9IHRydWU7CisKKyAgICBpZiAoYWxsb3dlZCkKKyAgICAgICAgV0tVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KHBlcm1pc3Npb25SZXF1ZXN0LT5yZXF1ZXN0UmVmLmdl
dCgpKTsKKyAgICBlbHNlCisgICAgICAgIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZW55
KHBlcm1pc3Npb25SZXF1ZXN0LT5yZXF1ZXN0UmVmLmdldCgpKTsKKworICAgIGV3a1ZpZXdEZWxl
dGVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChwZXJtaXNzaW9uUmVxdWVzdC0+ZXdrVmlldywg
cGVybWlzc2lvblJlcXVlc3QpOworICAgIGRlbGV0ZSBwZXJtaXNzaW9uUmVxdWVzdDsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHBlcm1pc3Npb25SZXF1ZXN0KTsKKyAgICBVTlVTRURfUEFSQU0o
YWxsb3dlZCk7CisjZW5kaWYKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a191c2VyX21lZGlhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3VzZXJfbWVkaWEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191c2VyX21lZGlhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9u
aWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a191c2VyX21lZGlhX2gKKyNkZWZp
bmUgZXdrX3VzZXJfbWVkaWFfaAorCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVXNlcl9N
ZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3QgRXdrX1VzZXJfTWVkaWFfUGVybWlzc2lvbl9SZXF1ZXN0
OworCisvKioKKyAqIFNldHMgdGhlIHBlcm1pc3Npb24gdG8gYWNjZXNzIGxvY2FsIG1lZGlhCisg
KgorICogQHBhcmFtIHJlcXVlc3QgRXdrX1ZpZXdfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1JlcXVl
c3Qgb2JqZWN0IGZvciB1c2VyTWVkaWEgcGVybWlzc2lvbgorICogQHBhcmFtIGFsbG93ZWQgZGVj
aWRlZCBwZXJtaXNzaW9uIHZhbHVlIGZyb20gdXNlcgorICovCitFQVBJIHZvaWQgZXdrX3VzZXJf
bWVkaWFfcGVybWlzc2lvbl9yZXF1ZXN0X3NldChFd2tfVXNlcl9NZWRpYV9QZXJtaXNzaW9uX1Jl
cXVlc3QgKnJlcXVlc3QsIEVpbmFfQm9vbCBhbGxvd2VkKTsKKworLyoqCisgKiBTdXNwZW5kIHRo
ZSBvcGVyYXRpb24gZm9yIHVzZXIgbWVkaWEgcGVybWlzc2lvbgorICoKKyAqIEBwYXJhbSByZXF1
ZXN0IHVzZXIgbWVkaWEgcGVybWlzc2lvbiByZXF1ZXN0IG9iamVjdAorICoKKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a191c2VyX21lZGlhX3Blcm1pc3Npb25fcmVxdWVzdF9zdXNwZW5k
KEV3a19Vc2VyX01lZGlhX1Blcm1pc3Npb25fUmVxdWVzdCAqcmVxdWVzdCk7CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3VzZXJfbWVkaWFfaApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VzZXJfbWVkaWFfcHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191c2Vy
X21lZGlhX3ByaXZhdGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a191c2VyX21lZGlhX3ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX3VzZXJfbWVkaWFfcHJpdmF0ZV9oCisj
ZGVmaW5lIGV3a191c2VyX21lZGlhX3ByaXZhdGVfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKwordHlw
ZWRlZiBzdHJ1Y3QgX0V3a19Vc2VyX01lZGlhX1Blcm1pc3Npb25fUmVxdWVzdCBFd2tfVXNlcl9N
ZWRpYV9QZXJtaXNzaW9uX1JlcXVlc3Q7CisKK0V3a19Vc2VyX01lZGlhX1Blcm1pc3Npb25fUmVx
dWVzdCogZXdrVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDcmVhdGUoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpOwordm9pZCBld2tVc2VyTWVk
aWFEZWxldGVQZXJtaXNzaW9uUmVxdWVzdExpc3QoRWluYV9MaXN0KiByZXF1ZXN0cyk7Citib29s
IGV3a1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVjaWRlZChFd2tfVXNlcl9NZWRpYV9QZXJt
aXNzaW9uX1JlcXVlc3QqKTsKK2Jvb2wgZXdrVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RTdXNw
ZW5kZWQoRXdrX1VzZXJfTWVkaWFfUGVybWlzc2lvbl9SZXF1ZXN0Kik7CisKKyNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gZXdrX3VzZXJfbWVkaWFfcHJpdmF0ZV9o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1Bhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q+IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0OjpjcmVhdGUoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eSAqbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChtYW5hZ2VyLCB1c2VyTWVkaWFJ
RCkpOworfQorCitVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkqIG1hbmFnZXIs
IHVpbnQ2NF90IHVzZXJNZWRpYUlEKQorICAgIDogbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgLCBt
X3VzZXJNZWRpYUlEKHVzZXJNZWRpYUlEKQoreworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0OjphbGxvdygpCit7CisgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fbWFuYWdlci0+ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lv
bihtX3VzZXJNZWRpYUlELCB0cnVlKTsKKyAgICBtX21hbmFnZXIgPSAwOworfQorCit2b2lkIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OjpkZW55KCkKK3sKKyAgICBpZiAoIW1fbWFuYWdlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9tYW5hZ2VyLT5kaWRSZWNlaXZlVXNlck1lZGlhUGVy
bWlzc2lvbkRlY2lzaW9uKG1fdXNlck1lZGlhSUQsIGZhbHNlKTsKKyAgICBtX21hbmFnZXIgPSAw
OworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OjppbnZhbGlkYXRlKCkKK3sK
KyAgICBtX21hbmFnZXIgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9NZWRpYVN0
cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdF9o
CisjZGVmaW5lIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0X2gKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk7CisKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5KiwgdWludDY0X3QgdXNlck1lZGlhSUQpOworCisgICAgdm9pZCBhbGxvdygpOwor
ICAgIHZvaWQgZGVueSgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKK3ByaXZhdGU6Cisg
ICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkqLCB1aW50NjRfdCB1c2VyTWVkaWFJRCk7CisKKyAgICBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOworICAgIHVpbnQ2NF90IG1fdXNl
ck1lZGlhSUQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBh
Z2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVlc3RzKCkKK3sKKyAgICBmb3IgKGF1
dG8mIHJlcXVlc3QgOiBtX3BlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkKKyAgICAgICAgcmVxdWVz
dC0+aW52YWxpZGF0ZSgpOworCisgICAgbV9wZW5kaW5nUmVxdWVzdHMuY2xlYXIoKTsKK30KKwor
UGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdD4gVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQp
Cit7CisgICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSh0aGlzLCB1c2VyTWVkaWFJRCk7CisgICAg
bV9wZW5kaW5nUmVxdWVzdHMuYWRkKHVzZXJNZWRpYUlELCByZXF1ZXN0LmdldCgpKTsKKyAgICBy
ZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24o
dWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3cpCit7CisgICAgaWYgKCFtX3BhZ2UuaXNW
YWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3Q+IHJlcXVlc3QgPSBtX3BlbmRpbmdSZXF1ZXN0cy50YWtlKHVzZXJNZWRpYUlEKTsK
KyAgICBpZiAoIXJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25E
ZWNpc2lvbih1c2VyTWVkaWFJRCwgYWxsb3cpLCBtX3BhZ2UucGFnZUlEKCkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9NZWRpYVN0cmVhbS9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJv
bmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eV9oCisjZGVmaW5lIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5X2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3Mg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgeworcHVibGljOgorICAgIGV4
cGxpY2l0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFdlYlBhZ2VQcm94
eSYpOworCisgICAgdm9pZCBpbnZhbGlkYXRlUmVxdWVzdHMoKTsKKworICAgIC8vIENyZWF0ZSBy
ZXF1ZXN0IHRvIGJlIHByZXNlbnRlZCB0byB1c2VyLgorICAgIFBhc3NSZWZQdHI8VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0ZVJlcXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQpOwor
CisgICAgLy8gQ2FsbGVkIGJ5IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0IHdoZW4gZGVjaXNp
b24gaXMgbWFkZSBieSB1c2VyLgorICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Np
b25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvdyk7CisKK3ByaXZhdGU6
CisgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3Q+PiBQZW5kaW5nUmVxdWVzdE1hcDsKKyAgICBQZW5kaW5nUmVxdWVzdE1hcCBtX3Bl
bmRpbmdSZXF1ZXN0czsKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNl
bmRpZiAvLyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eV9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlN
YWMubW0JKHJldmlzaW9uIDE2OTMyNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0Myw2ICs0NDMsNyBA
QCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9yCiAgICAgICAgIDAsIC8v
IGNyZWF0ZVBhZ2UKICAgICAgICAgMCwgLy8gbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQKICAgICAg
ICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QKKyAg
ICAgICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKICAg
ICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjEKICAgICAgICAgMCwgLy8gc2hvd0NvbG9yUGlja2VyCiAgICAgICAgIDAsIC8vIGhp
ZGVDb2xvclBpY2tlcgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNh
bXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVJlcXVlc3RJRCgpCit7CisgICAgc3RhdGljIHVp
bnQ2NF90IHVuaXF1ZVJlcXVlc3RJRCA9IDE7CisgICAgcmV0dXJuIHVuaXF1ZVJlcXVlc3RJRCsr
OworfQorCitQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4gVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cihwYWdlKSk7Cit9CisKK1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2Uo
cGFnZSkKK3sKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnJl
cXVlc3RQZXJtaXNzaW9uKFVzZXJNZWRpYVBlcm1pc3Npb24qIHBlcm1pc3Npb24pCit7CisgICAg
dWludDY0X3QgcmVxdWVzdElEID0gZ2VuZXJhdGVSZXF1ZXN0SUQoKTsKKyAgICBtX2lkVG9QZXJt
aXNzaW9uTWFwLnNldChyZXF1ZXN0SUQsIHBlcm1pc3Npb24pOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbihyZXF1ZXN0
SUQpKTsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmRpZFJl
Y2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgcmVxdWVzdElELCBib29s
IGFsbG93ZWQpCit7CisgICAgVXNlck1lZGlhUGVybWlzc2lvbiogcGVybWlzc2lvbiA9IG1faWRU
b1Blcm1pc3Npb25NYXAudGFrZShyZXF1ZXN0SUQpOworICAgIHBlcm1pc3Npb24tPmRlY2lkZVBl
cm1pc3Npb24oYWxsb3dlZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01l
ZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJfaAorI2RlZmluZSBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBVc2VyTWVkaWFQZXJt
aXNzaW9uOworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyPiBjcmVhdGUoV2ViUGFnZSopOworICAgIHZvaWQgcmVxdWVzdFBl
cm1pc3Npb24oVXNlck1lZGlhUGVybWlzc2lvbiopOworICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJN
ZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2Vk
KTsKKworcHJpdmF0ZToKKyAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2Vi
UGFnZSopOworICAgIFdlYlBhZ2UqIG1fcGFnZTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBVc2Vy
TWVkaWFQZXJtaXNzaW9uKj4gbV9pZFRvUGVybWlzc2lvbk1hcDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRp
ZiAvLyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJfaApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
VXNlck1lZGlhQ2xpZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKyNpbmNs
dWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJQ
YWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlVzZXJNZWRpYUNsaWVudDo6V2ViVXNlck1l
ZGlhQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKworV2Vi
VXNlck1lZGlhQ2xpZW50Ojp+V2ViVXNlck1lZGlhQ2xpZW50KCkKK3sKK30KKwordm9pZCBXZWJV
c2VyTWVkaWFDbGllbnQ6OnBhZ2VEZXN0cm95ZWQoKQoreworICAgIGRlbGV0ZSB0aGlzOworfQor
Cit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oV1RGOjpQYXNzUmVm
UHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3QpCit7CisgICAgbV91c2VyTWVkaWFSZXF1ZXN0
ID0gcmVxdWVzdDsKKworICAgIG1fcGFnZS0+dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyKCktPnJlcXVlc3RQZXJtaXNzaW9uKHRoaXMpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNs
aWVudDo6Y2FuY2VsUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0KikKK3sKKyAgICByZXR1cm47Cit9
CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpkZWNpZGVQZXJtaXNzaW9uKGJvb2wgYWxsb3dl
ZCkKK3sKKyAgICBQZXJtaXNzaW9uIHBlcm1pc3Npb24gPSBhbGxvd2VkID8gUGVybWlzc2lvbkFs
bG93ZWQgOiBQZXJtaXNzaW9uRGVuaWVkOworCisgICAgc3dpdGNoIChwZXJtaXNzaW9uKSB7Cisg
ICAgY2FzZSBQZXJtaXNzaW9uQWxsb3dlZDoKKyAgICAgICAgbV91c2VyTWVkaWFSZXF1ZXN0Lmdl
dCgpLT51c2VyTWVkaWFBY2Nlc3NHcmFudGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IFBlcm1pc3Npb25EZW5pZWQ6CisgICAgICAgIG1fdXNlck1lZGlhUmVxdWVzdC5nZXQoKS0+dXNl
ck1lZGlhQWNjZXNzRGVuaWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlVzZXJNZWRpYUNs
aWVudF9oCisjZGVmaW5lIFdlYlVzZXJNZWRpYUNsaWVudF9oCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJVc2Vy
TWVkaWFDbGllbnQuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9u
IHsKK3B1YmxpYzoKKyAgICBlbnVtIFBlcm1pc3Npb24geworICAgICAgICBQZXJtaXNzaW9uRGVu
aWVkLCAvLyBVc2VyIGhhcyBleHBsaWNpdGx5IGRlbmllZCBwZXJtaXNzaW9uCisgICAgICAgIFBl
cm1pc3Npb25BbGxvd2VkIC8vIFVzZXIgaGFzIGFsbG93ZWQgbWVkaWEgc3RyZWFtCisgICAgfTsK
KworICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQZXJtaXNzaW9uKGJvb2wpID0gMDsKK307CisKK2Ns
YXNzIFdlYlVzZXJNZWRpYUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQs
IHB1YmxpYyBVc2VyTWVkaWFQZXJtaXNzaW9uIHsKK3B1YmxpYzoKKworICAgIFdlYlVzZXJNZWRp
YUNsaWVudChXZWJQYWdlKik7CisgICAgfldlYlVzZXJNZWRpYUNsaWVudCgpOworCisgICAgdmly
dHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1p
c3Npb24oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+KTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Kik7CisK
KyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUGVybWlzc2lvbihib29sKTsKKworcHJpdmF0ZToKKyAg
ICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiBtX3VzZXJNZWRpYVJlcXVl
c3Q7CisKKyAgICBXZWJQYWdlKiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBXZWJVc2VyTWVk
aWFDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkocmV2aXNpb24gMTY5MzI3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDExIEBA
CiAjaW5jbHVkZSAiV2ViVmlicmF0aW9uQ2xpZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50LmgiCisjZW5kaWYKKwogI2lmIEVOQUJM
RShQUk9YSU1JVFlfRVZFTlRTKQogI2luY2x1ZGUgIldlYkRldmljZVByb3hpbWl0eUNsaWVudC5o
IgogI2VuZGlmCkBAIC0zNzUsNiArMzgwLDkgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0CiAjaWYgRU5BQkxFKFZJQlJBVElPTikKICAgICBXZWJDb3JlOjpwcm92aWRl
VmlicmF0aW9uVG8obV9wYWdlLmdldCgpLCBuZXcgV2ViVmlicmF0aW9uQ2xpZW50KHRoaXMpKTsK
ICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgV2ViQ29yZTo6cHJvdmlkZVVz
ZXJNZWRpYVRvKG1fcGFnZS5nZXQoKSwgbmV3IFdlYlVzZXJNZWRpYUNsaWVudCh0aGlzKSk7Cisj
ZW5kaWYKICNpZiBFTkFCTEUoUFJPWElNSVRZX0VWRU5UUykKICAgICBXZWJDb3JlOjpwcm92aWRl
RGV2aWNlUHJveGltaXR5VG8obV9wYWdlLmdldCgpLCBuZXcgV2ViRGV2aWNlUHJveGltaXR5Q2xp
ZW50KHRoaXMpKTsKICNlbmRpZgpAQCAtMjgwOCw2ICsyODE2LDE4IEBAIE5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlciogV2UKICAgICByZXR1cm4gbV9ub3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuZ2V0KCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKiBXZWJQYWdlOjp1c2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKQoreworICAgIGlmIChtX3VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcikKKyAgICAgICAgcmV0dXJuIG1fdXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmdldCgpOworCisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIgPSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNyZWF0ZSh0aGlzKTsK
KworICAgIHJldHVybiBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5nZXQoKTsK
K30KKyNlbmRpZgorCiAjaWYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKENPQ09BKQogYm9v
bCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldnQp
CiB7CkBAIC0zMTMwLDYgKzMxNTAsMTMgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlTm90aWZp
Y2F0aW9uUGVybQogICAgIG5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLT5k
aWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKG5vdGlmaWNhdGlvbklELCBh
bGxvd2VkKTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCit2b2lkIFdlYlBhZ2U6OmRp
ZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNlck1lZGlhSUQs
IGJvb2wgYWxsb3dlZCkKK3sKKyAgICB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIo
KS0+ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1c2VyTWVkaWFJRCwgYWxs
b3dlZCk7Cit9CisjZW5kaWYKKwogI2lmICFQTEFURk9STShJT1MpCiB2b2lkIFdlYlBhZ2U6OmFk
dmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogewpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lv
biAxNjkzMjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNiArMTgwLDExIEBAIGNsYXNzIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOwogY2xhc3MgV2ViVG91Y2hFdmVudDsKICNlbmRpZgogCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsK
K2NsYXNzIFdlYlVzZXJNZWRpYUNsaWVudDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRFTEVQSE9O
RV9OVU1CRVJfREVURUNUSU9OKQogY2xhc3MgVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xs
ZXI7CiAjZW5kaWYKQEAgLTQ0OCw2ICs0NTMsMTAgQEAgcHVibGljOgogICAgIEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyJiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcigpIHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIqIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpOwor
I2VuZGlmCisKICNpZiBQTEFURk9STShJT1MpCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNjcmVl
blNpemUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6
ZSgpIGNvbnN0OwpAQCAtOTk2LDYgKzEwMDUsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlk
UmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRp
b25JRCwgYm9vbCBhbGxvd2VkKTsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdm9p
ZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRp
YUlELCBib29sIGFsbG93ZWQpOworI2VuZGlmCisKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNz
cGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKICAgICB2b2lkIGNoYW5nZVNwZWxs
aW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCk7CiAjaWYgVVNFKEFQUEtJVCkKQEAgLTExNTYs
NiArMTE2OSwxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lcj4gbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKICAgICBSZWZQdHI8Tm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPiBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRyPFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4gbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXI7CisjZW5kaWYKKwogICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOwogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE2OTMyNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEs
NiArMjYxLDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgICMg
Tm90aWZpY2F0aW9uCiAgICAgRGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lv
bih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgYm9vbCBhbGxvd2VkKQogCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyAgICBEaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVp
bnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQpCisjZW5kaWYKKwogICAgIFNldFdpbmRv
d1Jlc2l6ZXJTaXplKFdlYkNvcmU6OkludFNpemUgaW50ZXJzZWN0c1ZpZXcpCiAKICAgICAjIFBy
aW50aW5nLgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTY5MzI3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMDUtMjUgIFByYXZlZW4gUiBKYWRoYXYgIDxwcmF2ZWVu
LmpAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW01lZGlhU3RyZWFtXSBbRUZMXSBnZXRVc2VyTWVk
aWEgdGhyb3dzIERvbUV4Y2VwdGlvbiBhbHdheXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI4NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6IFVz
ZXJNZWRpYSBpcworICAgICAgICBhZGRlZCB0byBwZXJtaXNzaW9uIHJlcXVlc3QgaW4gVUlDbGll
bnQuCisKIDIwMTQtMDUtMjMgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTihyMTY5MjY1KTogc2g6IGxpbmUgMDogY2Q6IC4uLy52bQpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE2
OTMyNykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpj
cmVhdGVPdGhlclBhZwogICAgICAgICBjcmVhdGVPdGhlclBhZ2UsCiAgICAgICAgIDAsIC8vIG1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50CiAgICAgICAgIDAsIC8vIGRlY2lkZVBvbGljeUZvck5vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisgICAgICAgIDAsIC8vIGRlY2lkZVBvbGljeUZvclVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiAgICAgICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1Z2lu
QnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCiAgICAgICAgIDAsIC8vIHNob3dD
b2xvclBpY2tlcgogICAgICAgICAwLCAvLyBoaWRlQ29sb3JQaWNrZXIKQEAgLTQ2Miw2ICs0NjMs
NyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wCiAgICAgICAgIGNy
ZWF0ZU90aGVyUGFnZSwKICAgICAgICAgMCwgLy8gbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQKICAg
ICAgICAgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsIC8vIGRl
Y2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisgICAgICAgIDAsIC8v
IGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiAgICAgICAgIDAsIC8v
IHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCiAg
ICAgICAgIDAsIC8vIHNob3dDb2xvclBpY2tlcgogICAgICAgICAwLCAvLyBoaWRlQ29sb3JQaWNr
ZXIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232069</attachid>
            <date>2014-05-26 04:29:36 -0700</date>
            <delta_ts>2014-05-30 03:55:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>provideUserMediaTo.txt</filename>
            <type>text/plain</type>
            <size>51874</size>
            <attacher name="Praveen Jadhav">praveen.j</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTMzOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDE0LTA1LTI2ICBQcmF2ZWVu
IFIgSmFkaGF2ICA8cHJhdmVlbi5qQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gW0VGTF0gZ2V0VXNlck1lZGlhIHRocm93cyBEb21FeGNlcHRpb24gYWx3YXlzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyODU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcHJvdmlkZVVzZXJNZWRp
YVRvKCkgaXMgbm90IGNhbGxlZCB0byBpbml0aWFsaXplIFVzZXJNZWRpYUNvbnRyb2xsZXIKKyAg
ICAgICAgaW4gY2FzZSBvZiBFRkwgcG9ydC4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGNhbGwgdG8g
cHJvdmlkZVVzZXJNZWRpYVRvKCkKKyAgICAgICAgZnJvbSBXZWJQYWdlIHdoaWxlIGluaXRpYWxp
emluZyBvdGhlciBmZWF0dXJlcyBhcyB3ZWxsLgorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIGlu
Y2x1ZGVzIHRoZSBjb2RlIGNoYW5nZXMgcmVxdWlyZWQgdG8gcXVlcnkgdXNlciB0bworICAgICAg
ICBwcm92aWRlIHBlcm1pc3Npb24gZm9yIG1lZGlhIGRldmljZSBhY2Nlc3MuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAg
ICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1Bh
Z2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
R2V0VHlwZUlEKToKKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyk6
CisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL01lZGlhU3RyZWFtOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
OjphbGxvdyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Ojpk
ZW55KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q6OmludmFs
aWRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVSZXF1ZXN0cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpj
cmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVh
dGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZVJlcXVl
c3RJRCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnJlcXVlc3RQZXJtaXNzaW9u
KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpk
aWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVu
dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OldlYlVz
ZXJNZWRpYUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6fldl
YlVzZXJNZWRpYUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6
cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6cmVx
dWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OmNh
bmNlbFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OmRlY2lk
ZVBlcm1pc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNl
ck1lZGlhQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNp
b24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTQtMDUtMjYgIFph
biBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYlBhZ2U6OnNl
dENvbXBvc2l0aW9uKCksIFdlYlBhZ2VQcm94eTo6ZGlkRmluZFN0cmluZ01hdGNoZXMoKSBzaG91
bGQgdGFrZSBWZWN0b3IgcGFyYW1ldGVycyBieSBjb25zdCByZWZlcmVuY2UKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjkzMjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQCBzZXQoV2ViS2l0Ml9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9Eb3dubG9hZHMi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIiCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9MYXVuY2hlciIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQ
cm9jZXNzL01lZGlhU3RyZWFtIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTmV0d29y
ayIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
IgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucyIKQEAgLTQ5LDYg
KzUwLDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJf
RElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTSIKICAgICAiJHtXRUJLSVQyX0RJUn0v
V2ViUHJvY2Vzcy9MYXVuY2hpbmciCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvTWVk
aWFDYWNoZSIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbSIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9OZXR3b3JrIgogICAgICIke1dFQktJVDJfRElS
fS9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvT3JpZ2luRGF0YSIKQEAgLTQwNCw2ICs0MDYsOSBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAK
ICAgICBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAogCisgICAgVUlQcm9j
ZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAorICAgIFVJUHJv
Y2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKKwogICAgIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCiAKICAg
ICBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5j
cHAKQEAgLTQ4Miw2ICs0ODcsOCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9j
ZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFDYWNoZU1hbmFnZXIuY3BwCiAKKyAgICBXZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKKwogICAg
IFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiAgICAgV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKICAgICBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MzMsNiArNTQwLDcgQEAgc2V0
KFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBN
ZW51LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBN
ZW51LmNwcAorICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50
LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlicmF0aW9uQ2xpZW50LmNw
cAogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAkocmV2aXNpb24gMTY5MzI5KQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDkgQEAg
cHVibGljOgogICAgICAgICBQcmVmZXJlbmNlcywKICAgICAgICAgU2Vzc2lvbiwKICAgICAgICAg
VGV4dENoZWNrZXIsCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QsCisjZW5kaWYKICAgICAgICAgVmlicmF0aW9uLAogICAgICAgICBW
aWV3cG9ydEF0dHJpYnV0ZXMsCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNl
LmgJKHJldmlzaW9uIDE2OTMyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jh
c2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLUHJlZmVyZW5jZXMKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUHJv
dGVjdGlvblNwYWNlKiBXS1Byb3RlY3Rpb25TcGFjZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLVGV4dENoZWNrZXIqIFdLVGV4dENoZWNrZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS1Nlc3Npb24qIFdLU2Vzc2lvblJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpYnJhdGlvbiogV0tW
aWJyYXRpb25SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpZXdwb3J0QXR0cmli
dXRlcyogV0tWaWV3cG9ydEF0dHJpYnV0ZXNSZWY7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxNjkzMjkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDYg
KzI3MCw5IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAs
IG1fdXNlckFnZW50KHN0YW5kYXJkVXNlckFnZW50KCkpCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAs
IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQorI2VuZGlmCiAgICAg
LCBtX3ZpZXdTdGF0ZShWaWV3U3RhdGU6Ok5vRmxhZ3MpCiAjaWYgUExBVEZPUk0oSU9TKQogICAg
ICwgbV9hY3Rpdml0eVRva2VuKG51bGxwdHIpCkBAIC00MTc5LDYgKzQxODIsMTAgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoKQogCiAgICAgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiAKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmludmFsaWRh
dGVSZXF1ZXN0cygpOworI2VuZGlmCisKICAgICBtX3Rvb2xUaXAgPSBTdHJpbmcoKTsKIAogICAg
IG1fbWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciA9IGZhbHNlOwpAQCAtNDQ1MSw2ICs0
NDU4LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Tm90aWZpY2F0aW9uKGNvbnMKICAgICBt
X3Byb2Nlc3MtPmNvbnRleHQoKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eT4oKS0+c2hvdyh0aGlzLCB0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9y
aWdpblN0cmluZywgbm90aWZpY2F0aW9uSUQpOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbih1aW50NjRf
dCByZXF1ZXN0SUQpCit7CisgICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiBy
ZXF1ZXN0ID0gbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3JlYXRlUmVxdWVz
dChyZXF1ZXN0SUQpOworCisgICAgaWYgKCFtX3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdCh0aGlzLCByZXF1ZXN0LmdldCgpKSkKKyAgICAgICAgcmVx
dWVzdC0+ZGVueSgpOworfQorI2VuZGlmCisKIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxOb3Rp
ZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgbV9wcm9jZXNzLT5jb250
ZXh0KCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNhbmNlbCh0
aGlzLCBub3RpZmljYXRpb25JRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCShyZXZpc2lvbiAxNjkzMjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDEwIEBACiAjaW5jbHVk
ZSAiTmF0aXZlV2ViVG91Y2hFdmVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmgi
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlICJXS1BhZ2VFZmwuaCIKICNp
bmNsdWRlICJXZWJVSVBvcHVwTWVudUNsaWVudC5oIgpAQCAtMTIyNCw2ICsxMjI4LDEwIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgbm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24odWlu
dDY0X3Qgbm90aWZpY2F0aW9uSUQpOwogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2
b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlEKTsKKyNl
bmRpZgorCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdm9pZCBwYWdlRGlkUmVx
dWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgcGFnZVRyYW5z
aXRpb25WaWV3cG9ydFJlYWR5KCk7CkBAIC0xNTM1LDYgKzE1NDMsMTAgQEAgcHJpdmF0ZToKICAg
ICBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5IG1fZ2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CiAgICAgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CiAK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOworI2VuZGlm
CisKICAgICBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIG1fdmlld1N0YXRlOwogCiAjaWYgUExB
VEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNjkzMjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEs
NiArMjUxLDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgQ2xlYXJOb3RpZmlj
YXRpb25zKFZlY3Rvcjx1aW50NjRfdD4gbm90aWZpY2F0aW9uSURzKQogICAgIERpZERlc3Ryb3lO
b3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiAKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorICAgICMgVXNlck1lZGlhIG1lc3NhZ2VzCisgICAgUmVxdWVzdFVzZXJNZWRpYVBl
cm1pc3Npb24odWludDY0X3QgcmVxdWVzdElEKQorI2VuZGlmCisKICAgICAjIFNwZWxsaW5nIGFu
ZCBncmFtbWFyIG1lc3NhZ2VzCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykgIAogICAg
IENoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZyB0ZXh0LCB1aW50NjRfdCBjaGVja2luZ1R5cGVz
KSAtPiAoVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0cykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgJKHJldmlzaW9uIDE2
OTMyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQ
YWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OldlYlNlY3VyaXR5T3Jp
Z2luKiwgV2ViS2l0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkqKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViU2VjdXJp
dHlPcmlnaW4qLCBXZWJLaXQ6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KikgeyByZXR1
cm4gZmFsc2U7IH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdmlydHVhbCBib29s
IGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFn
ZVByb3h5KiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCopIHsgcmV0dXJuIGZh
bHNlOyB9CisjZW5kaWYKKwogICAgIC8vIFByaW50aW5nLgogICAgIHZpcnR1YWwgZmxvYXQgaGVh
ZGVySGVpZ2h0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Kikg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgZmxvYXQgZm9vdGVySGVpZ2h0KFdlYktpdDo6V2Vi
UGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KikgeyByZXR1cm4gMDsgfQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gMTY5
MzI5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Miw2ICs2MiwxMSBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3Q7CisjZW5kaWYKKwogY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eTsKIGNs
YXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CkBA
IC0xNDQsNiArMTQ5LDExIEBAIFdLX0FERF9BUElfTUFQUElORyhXS1Byb3RlY3Rpb25TcGFjZVJl
ZiwKIFdLX0FERF9BUElfTUFQUElORyhXS1JlbmRlckxheWVyUmVmLCBXZWJSZW5kZXJMYXllcikK
IFdLX0FERF9BUElfTUFQUElORyhXS1JlbmRlck9iamVjdFJlZiwgV2ViUmVuZGVyT2JqZWN0KQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLVGV4dENoZWNrZXJSZWYsIFdlYlRleHRDaGVja2VyKQorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK1dLX0FERF9BUElfTUFQUElORyhXS1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UmVmLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCkKKyNlbmRpZgor
CiBXS19BRERfQVBJX01BUFBJTkcoV0tWaWJyYXRpb25SZWYsIFdlYlZpYnJhdGlvblByb3h5KQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLVmlld3BvcnRBdHRyaWJ1dGVzUmVmLCBXZWJWaWV3cG9ydEF0
dHJpYnV0ZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tJbnNwZWN0b3JSZWYsIFdlYkluc3BlY3Rv
clByb3h5KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJ
KHJldmlzaW9uIDE2OTMyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDc3LDYgKzE0NzcsMTggQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIHZpcnR1YWwgYm9v
bCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkq
IHBhZ2UsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiBwZXJtaXNzaW9uUmVxdWVzdCkgb3Zl
cnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lG
b3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0KHRvQVBJKHBhZ2UpLCB0b0FQSShwZXJtaXNzaW9uUmVxdWVzdCksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisjZW5kaWYKKwogICAgICAgICAvLyBQcmludGluZy4KICAgICAgICAgdmlydHVhbCBmbG9h
dCBoZWFkZXJIZWlnaHQoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSkg
b3ZlcnJpZGUKICAgICAgICAgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZVVJQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgJKHJldmlzaW9uIDE2OTMyOSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04
Miw2ICs4Miw3IEBAIHR5cGVkZWYgdm9pZCAoKldLUGFnZVByaW50RnJhbWVDYWxsYmFjaykKIHR5
cGVkZWYgdm9pZCAoKldLUGFnZVNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXJDYWxsYmFj
aykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBXS1N0cmlu
Z1JlZiBtaW1lVHlwZSwgV0tVUkxSZWYgb3JpZ2luYXRpbmdVUkwsIFdLRGF0YVJlZiBkYXRhLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLUGFnZVNob3VsZEludGVy
cnVwdEphdmFTY3JpcHRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmln
aW5SZWYgb3JpZ2luLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIHBlcm1pc3Np
b25SZXF1ZXN0LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFn
ZURlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2spKFdLUGFn
ZVJlZiBwYWdlLCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHBlcm1pc3Npb25SZXF1
ZXN0LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVNob3dD
b2xvclBpY2tlckNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgaW5pdGlhbENv
bG9yLCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlSGlkZUNvbG9yUGlja2VyQ2FsbGJh
Y2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9p
ZCAoKldLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrKShXS1BhZ2VS
ZWYgcGFnZSwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiBwbHVnaW5VbmF2YWlsYWJpbGl0
eVJlYXNvbiwgV0tEaWN0aW9uYXJ5UmVmIHBsdWdpbkluZm9EaWN0aW9uYXJ5LCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKQEAgLTE5MSw2ICsxOTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VV
SUNsaWVudFYxIHsKICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CiAgICAgV0tQYWdlTW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKICAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgIGRlY2lkZVBvbGljeUZv
ck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURlY2lkZVBvbGljeUZv
clVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgICAgZGVjaWRlUG9s
aWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q7CiAgICAgV0tQYWdlVW5hdmFpbGFibGVQ
bHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB1bmF2YWls
YWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKIH0gV0tQYWdl
VUlDbGllbnRWMTsKIApAQCAtMjQyLDYgKzI0NCw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJ
Q2xpZW50VjIgewogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKICAgICBXS1BhZ2VNb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50OwogICAgIFdLUGFnZURlY2lkZVBvbGljeUZvck5vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgZGVjaWRlUG9saWN5Rm9y
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9y
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICAgICBkZWNpZGVQb2xp
Y3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKICAgICBXS1BhZ2VVbmF2YWlsYWJsZVBs
dWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxh
YmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOwogCiAgICAgLy8g
VmVyc2lvbiAyLgpAQCAtMjk4LDYgKzMwMSw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xp
ZW50VjMgewogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKICAgICBXS1BhZ2VNb3VzZURp
ZE1vdmVPdmVyRWxlbWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50OwogICAgIFdLUGFnZURlY2lkZVBvbGljeUZvck5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICAgICBkZWNpZGVQb2xpY3lG
b3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKICAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdp
bkJ1dHRvbkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxl
UGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOwogCiAgICAgLy8gVmVy
c2lvbiAyLgpAQCAtMzU5LDYgKzM2Myw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50
IHsKICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CiAgICAgV0tQYWdlTW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VzZURp
ZE1vdmVPdmVyRWxlbWVudDsKICAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3Q7CiAgICAgV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5CdXR0
b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB1bmF2YWlsYWJsZVBsdWdp
bkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKIAogICAgIC8vIFZlcnNpb24g
Mi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK1dLVHlwZUlEIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXRUeXBlSUQo
KQoreworICAgIHJldHVybiB0b0FQSShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6QVBJVHlw
ZSk7Cit9CisKK3ZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpCit7Cisg
ICAgcmV0dXJuIHRvSW1wbCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCktPmFsbG93KCk7Cit9
CisKK3ZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlbnkoV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCkKK3sKKyAgICByZXR1
cm4gdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KS0+ZGVueSgpOworfQorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RfaAorI2RlZmlu
ZSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tC
YXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tf
RVhQT1JUIFdLVHlwZUlEIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXRUeXBlSUQoKTsK
KworV0tfRVhQT1JUIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOwor
V0tfRVhQT1JUIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlbnkoV0tVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCk7CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBXS1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9NZWRpYVN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9NZWRpYVN0cmVhbS9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdD4gVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5ICptYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KG1hbmFn
ZXIsIHVzZXJNZWRpYUlEKSk7Cit9CisKK1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OjpVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdChVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eSogbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQpCisgICAgOiBtX21hbmFnZXIobWFu
YWdlcikKKyAgICAsIG1fdXNlck1lZGlhSUQodXNlck1lZGlhSUQpCit7Cit9CisKK3ZvaWQgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3Q6OmFsbG93KCkKK3sKKyAgICBpZiAoIW1fbWFuYWdlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9tYW5hZ2VyLT5kaWRSZWNlaXZlVXNlck1lZGlhUGVy
bWlzc2lvbkRlY2lzaW9uKG1fdXNlck1lZGlhSUQsIHRydWUpOworICAgIG1fbWFuYWdlciA9IDA7
Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q6OmRlbnkoKQoreworICAgIGlm
ICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21hbmFnZXItPmRpZFJlY2Vp
dmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24obV91c2VyTWVkaWFJRCwgZmFsc2UpOworICAg
IG1fbWFuYWdlciA9IDA7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q6Omlu
dmFsaWRhdGUoKQoreworICAgIG1fbWFuYWdlciA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0X2gKKyNkZWZpbmUgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RfaAorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTsKKworY2xhc3MgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUoVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkqLCB1aW50NjRfdCB1c2VyTWVkaWFJRCk7CisKKyAgICB2
b2lkIGFsbG93KCk7CisgICAgdm9pZCBkZW55KCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKTsK
KworcHJpdmF0ZToKKyAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSosIHVpbnQ2NF90IHVzZXJNZWRpYUlEKTsKKworICAg
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KiBtX21hbmFnZXI7CisgICAg
dWludDY0X3QgbV91c2VyTWVkaWFJRDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9N
ZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlBhZ2VNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFdl
YlBhZ2VQcm94eSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCit2b2lkIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdHMoKQor
eworICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IG1fcGVuZGluZ1JlcXVlc3RzLnZhbHVlcygpKQor
ICAgICAgICByZXF1ZXN0LT5pbnZhbGlkYXRlKCk7CisKKyAgICBtX3BlbmRpbmdSZXF1ZXN0cy5j
bGVhcigpOworfQorCitQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCh1aW50NjRf
dCB1c2VyTWVkaWFJRCkKK3sKKyAgICBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q+
IHJlcXVlc3QgPSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKHRoaXMsIHVzZXJN
ZWRpYUlEKTsKKyAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQodXNlck1lZGlhSUQsIHJlcXVlc3Qu
Z2V0KCkpOworICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKK30KKwordm9pZCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1p
c3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvdykKK3sKKyAgICBp
ZiAoIW1fcGFnZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdCA9IG1fcGVuZGluZ1JlcXVlc3RzLnRha2Uo
dXNlck1lZGlhSUQpOworICAgIGlmICghcmVxdWVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlVXNlck1l
ZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVzZXJNZWRpYUlELCBhbGxvdyksIG1fcGFnZS5wYWdlSUQo
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5X2gKKyNkZWZpbmUgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHlfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OworY2xhc3MgV2ViUGFnZVBy
b3h5OworCitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkoV2ViUGFnZVByb3h5Jik7CisKKyAgICB2b2lkIGludmFsaWRhdGVSZXF1ZXN0cygpOworCisg
ICAgLy8gQ3JlYXRlIHJlcXVlc3QgdG8gYmUgcHJlc2VudGVkIHRvIHVzZXIuCisgICAgUGFzc1Jl
ZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlUmVxdWVzdCh1aW50NjRfdCB1
c2VyTWVkaWFJRCk7CisKKyAgICAvLyBDYWxsZWQgYnkgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3Qgd2hlbiBkZWNpc2lvbiBpcyBtYWRlIGJ5IHVzZXIuCisgICAgdm9pZCBkaWRSZWNlaXZlVXNl
ck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93
KTsKKworcHJpdmF0ZToKKyAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdD4+IFBlbmRpbmdSZXF1ZXN0TWFwOworICAgIFBlbmRpbmdS
ZXF1ZXN0TWFwIG1fcGVuZGluZ1JlcXVlc3RzOworICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2VuZGlmIC8vIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJv
eHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJ
bnNwZWN0b3JQcm94eU1hYy5tbQkocmV2aXNpb24gMTY5MzI5KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NDQzLDYgKzQ0Myw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3IK
ICAgICAgICAgMCwgLy8gY3JlYXRlUGFnZQogICAgICAgICAwLCAvLyBtb3VzZURpZE1vdmVPdmVy
RWxlbWVudAogICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdAorICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdAogICAgICAgICAwLCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMQogICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKICAg
ICAgICAgMCwgLy8gaGlkZUNvbG9yUGlja2VyCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudC5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUmVxdWVzdElEKCkKK3sK
KyAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlUmVxdWVzdElEID0gMTsKKyAgICByZXR1cm4gdW5p
cXVlUmVxdWVzdElEKys7Cit9CisKK1Bhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyPiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNyZWF0ZShXZWJQ
YWdlKiBwYWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKHBhZ2UpKTsKK30KKworVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFnZSogcGFnZSkK
KyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjo6cmVxdWVzdFBlcm1pc3Npb24oVXNlck1lZGlhUGVybWlzc2lvbiogcGVybWlz
c2lvbikKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBnZW5lcmF0ZVJlcXVlc3RJRCgpOwor
ICAgIG1faWRUb1Blcm1pc3Npb25NYXAuc2V0KHJlcXVlc3RJRCwgcGVybWlzc2lvbik7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RVc2VyTWVkaWFQZXJt
aXNzaW9uKHJlcXVlc3RJRCkpOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcjo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBy
ZXF1ZXN0SUQsIGJvb2wgYWxsb3dlZCkKK3sKKyAgICBVc2VyTWVkaWFQZXJtaXNzaW9uKiBwZXJt
aXNzaW9uID0gbV9pZFRvUGVybWlzc2lvbk1hcC50YWtlKHJlcXVlc3RJRCk7CisgICAgcGVybWlz
c2lvbi0+ZGVjaWRlUGVybWlzc2lvbihhbGxvd2VkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcl9oCisjZGVmaW5lIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFVzZXJNZWRpYVBlcm1pc3Npb247CitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+IGNyZWF0ZShXZWJQYWdlKik7CisgICAg
dm9pZCByZXF1ZXN0UGVybWlzc2lvbihVc2VyTWVkaWFQZXJtaXNzaW9uKik7CisgICAgdm9pZCBk
aWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlE
LCBib29sIGFsbG93ZWQpOworCitwcml2YXRlOgorICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcihXZWJQYWdlKik7CisgICAgV2ViUGFnZSogbV9wYWdlOworICAgIEhhc2hNYXA8
dWludDY0X3QsIFVzZXJNZWRpYVBlcm1pc3Npb24qPiBtX2lkVG9QZXJtaXNzaW9uTWFwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2VuZGlmIC8vIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcl9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRp
YUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudC5oIgorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAi
VVVJRC5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgor
I2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViVXNlck1lZGlhQ2xp
ZW50OjpXZWJVc2VyTWVkaWFDbGllbnQoV2ViUGFnZSogcGFnZSkKKyAgICA6IG1fcGFnZShwYWdl
KQoreworfQorCitXZWJVc2VyTWVkaWFDbGllbnQ6On5XZWJVc2VyTWVkaWFDbGllbnQoKQorewor
fQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6cGFnZURlc3Ryb3llZCgpCit7CisgICAgZGVs
ZXRlIHRoaXM7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lv
bihXVEY6OlBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCkKK3sKKyAgICBtX3Vz
ZXJNZWRpYVJlcXVlc3QgPSByZXF1ZXN0OworCisgICAgbV9wYWdlLT51c2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIoKS0+cmVxdWVzdFBlcm1pc3Npb24odGhpcyk7Cit9CisKK3ZvaWQg
V2ViVXNlck1lZGlhQ2xpZW50OjpjYW5jZWxSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QqKQorewor
ICAgIHJldHVybjsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmRlY2lkZVBlcm1pc3Np
b24oYm9vbCBhbGxvd2VkKQoreworICAgIFBlcm1pc3Npb24gcGVybWlzc2lvbiA9IGFsbG93ZWQg
PyBQZXJtaXNzaW9uQWxsb3dlZCA6IFBlcm1pc3Npb25EZW5pZWQ7CisKKyAgICBzd2l0Y2ggKHBl
cm1pc3Npb24pIHsKKyAgICBjYXNlIFBlcm1pc3Npb25BbGxvd2VkOgorICAgICAgICBtX3VzZXJN
ZWRpYVJlcXVlc3QuZ2V0KCktPnVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgUGVybWlzc2lvbkRlbmllZDoKKyAgICAgICAgbV91c2VyTWVkaWFSZXF1
ZXN0LmdldCgpLT51c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1l
ZGlhQ2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJVc2VyTWVkaWFDbGllbnRfaAorI2RlZmlu
ZSBXZWJVc2VyTWVkaWFDbGllbnRfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50Lmgi
CisjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViUGFnZTsKKworY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvbiB7CitwdWJsaWM6Cisg
ICAgZW51bSBQZXJtaXNzaW9uIHsKKyAgICAgICAgUGVybWlzc2lvbkRlbmllZCwgLy8gVXNlciBo
YXMgZXhwbGljaXRseSBkZW5pZWQgcGVybWlzc2lvbgorICAgICAgICBQZXJtaXNzaW9uQWxsb3dl
ZCAvLyBVc2VyIGhhcyBhbGxvd2VkIG1lZGlhIHN0cmVhbQorICAgIH07CisKKyAgICB2aXJ0dWFs
IHZvaWQgZGVjaWRlUGVybWlzc2lvbihib29sKSA9IDA7Cit9OworCitjbGFzcyBXZWJVc2VyTWVk
aWFDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50LCBwdWJsaWMgVXNlck1l
ZGlhUGVybWlzc2lvbiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViVXNlck1lZGlhQ2xpZW50
KFdlYlBhZ2UqKTsKKyAgICB2aXJ0dWFsIH5XZWJVc2VyTWVkaWFDbGllbnQoKTsKKworICAgIHZp
cnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJt
aXNzaW9uKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Pik7CisgICAg
dmlydHVhbCB2b2lkIGNhbmNlbFJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCopOwor
CisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBlcm1pc3Npb24oYm9vbCk7CisKK3ByaXZhdGU6Cisg
ICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4gbV91c2VyTWVkaWFSZXF1
ZXN0OworCisgICAgV2ViUGFnZSogbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gV2ViVXNlck1l
ZGlhQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHJldmlzaW9uIDE2OTMyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCwxMSBA
QAogI2luY2x1ZGUgIldlYlZpYnJhdGlvbkNsaWVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudC5oIgorI2VuZGlmCisKICNpZiBFTkFC
TEUoUFJPWElNSVRZX0VWRU5UUykKICNpbmNsdWRlICJXZWJEZXZpY2VQcm94aW1pdHlDbGllbnQu
aCIKICNlbmRpZgpAQCAtMzc1LDYgKzM4MCw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3Qg
cGFnZUlELCBjb25zdAogI2lmIEVOQUJMRShWSUJSQVRJT04pCiAgICAgV2ViQ29yZTo6cHJvdmlk
ZVZpYnJhdGlvblRvKG1fcGFnZS5nZXQoKSwgbmV3IFdlYlZpYnJhdGlvbkNsaWVudCh0aGlzKSk7
CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFdlYkNvcmU6OnByb3ZpZGVV
c2VyTWVkaWFUbyhtX3BhZ2UuZ2V0KCksIG5ldyBXZWJVc2VyTWVkaWFDbGllbnQodGhpcykpOwor
I2VuZGlmCiAjaWYgRU5BQkxFKFBST1hJTUlUWV9FVkVOVFMpCiAgICAgV2ViQ29yZTo6cHJvdmlk
ZURldmljZVByb3hpbWl0eVRvKG1fcGFnZS5nZXQoKSwgbmV3IFdlYkRldmljZVByb3hpbWl0eUNs
aWVudCh0aGlzKSk7CiAjZW5kaWYKQEAgLTI4MDgsNiArMjgxNiwxOCBAQCBOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIFdlCiAgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmdldCgpOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKK1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciogV2ViUGFnZTo6dXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkKK3sKKyAgICBpZiAobV91c2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIpCisgICAgICAgIHJldHVybiBtX3VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5nZXQoKTsKKworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyID0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjcmVhdGUodGhpcyk7
CisKKyAgICByZXR1cm4gbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZ2V0KCk7
Cit9CisjZW5kaWYKKwogI2lmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShDT0NPQSkKIGJv
b2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZ0
KQogewpAQCAtMzEzMCw2ICszMTUwLDEzIEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU5vdGlm
aWNhdGlvblBlcm0KICAgICBub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS0+
ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbihub3RpZmljYXRpb25JRCwg
YWxsb3dlZCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQordm9pZCBXZWJQYWdlOjpk
aWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlE
LCBib29sIGFsbG93ZWQpCit7CisgICAgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KCktPmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odXNlck1lZGlhSUQsIGFs
bG93ZWQpOworfQorI2VuZGlmCisKICNpZiAhUExBVEZPUk0oSU9TKQogdm9pZCBXZWJQYWdlOjph
ZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNp
b24gMTY5MzI5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCwxMSBAQCBjbGFzcyBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFdlYlRvdWNoRXZlbnQ7CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7
CitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQ7CisjZW5kaWYKKwogI2lmIEVOQUJMRShURUxFUEhP
TkVfTlVNQkVSX0RFVEVDVElPTikKIGNsYXNzIFRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9s
bGVyOwogI2VuZGlmCkBAIC00NDgsNiArNDUzLDEwIEBAIHB1YmxpYzoKICAgICBHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciYgZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIoKSB7IHJldHVybiBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOyB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyKiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKTsK
KyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzY3Jl
ZW5TaXplKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIGF2YWlsYWJsZVNjcmVlblNp
emUoKSBjb25zdDsKQEAgLTk5Niw2ICsxMDA1LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRp
ZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qgbm90aWZpY2F0
aW9uSUQsIGJvb2wgYWxsb3dlZCk7CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZv
aWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVk
aWFJRCwgYm9vbCBhbGxvd2VkKTsKKyNlbmRpZgorCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlz
c3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CiAgICAgdm9pZCBjaGFuZ2VTcGVs
bGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpOwogI2lmIFVTRShBUFBLSVQpCkBAIC0xMTU2
LDYgKzExNjksMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXI+IG1fYWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI7CiAgICAgUmVmUHRyPE5vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4gbV9ub3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI7CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFJlZlB0cjxV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+IG1fdXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOworI2VuZGlmCisKICAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKIAogI2lmIEVOQUJMRShHRU9MT0NBVElPTikK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNjkzMjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjYx
LDYgKzI2MSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICAj
IE5vdGlmaWNhdGlvbgogICAgIERpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNp
b24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQsIGJvb2wgYWxsb3dlZCkKIAorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgRGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1
aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2VkKQorI2VuZGlmCisKICAgICBTZXRXaW5k
b3dSZXNpemVyU2l6ZShXZWJDb3JlOjpJbnRTaXplIGludGVyc2VjdHNWaWV3KQogCiAgICAgIyBQ
cmludGluZy4KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE2OTMzOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDE0LTA1LTI2ICBQcmF2ZWVuIFIgSmFkaGF2ICA8cHJhdmVl
bi5qQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gW0VGTF0gZ2V0VXNlck1l
ZGlhIHRocm93cyBEb21FeGNlcHRpb24gYWx3YXlzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyODU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZSk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMpOiBV
c2VyTWVkaWEgaXMKKyAgICAgICAgYWRkZWQgdG8gcGVybWlzc2lvbiByZXF1ZXN0IGluIFVJQ2xp
ZW50LgorCiAyMDE0LTA1LTIzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04ocjE2OTI2NSk6IHNoOiBsaW5lIDA6IGNkOiAuLi8udm0KSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAx
NjkzMjkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU2LDYgKzI1Niw3IEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6
Y3JlYXRlT3RoZXJQYWcKICAgICAgICAgY3JlYXRlT3RoZXJQYWdlLAogICAgICAgICAwLCAvLyBt
b3VzZURpZE1vdmVPdmVyRWxlbWVudAogICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdAorICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAogICAgICAgICAwLCAvLyB1bmF2YWlsYWJsZVBsdWdp
bkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMQogICAgICAgICAwLCAvLyBzaG93
Q29sb3JQaWNrZXIKICAgICAgICAgMCwgLy8gaGlkZUNvbG9yUGlja2VyCkBAIC00NjIsNiArNDYz
LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcAogICAgICAgICBj
cmVhdGVPdGhlclBhZ2UsCiAgICAgICAgIDAsIC8vIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50CiAg
ICAgICAgIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LCAvLyBk
ZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdAorICAgICAgICAwLCAv
LyBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAogICAgICAgICAwLCAv
LyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMQog
ICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKICAgICAgICAgMCwgLy8gaGlkZUNvbG9yUGlj
a2VyCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232290</attachid>
            <date>2014-05-30 03:55:03 -0700</date>
            <delta_ts>2014-06-24 06:44:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>provideUserMediaTo.txt</filename>
            <type>text/plain</type>
            <size>59426</size>
            <attacher name="Praveen Jadhav">praveen.j</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE0LTA1LTMwICBQcmF2ZWVu
IFIgSmFkaGF2ICA8cHJhdmVlbi5qQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gW0VGTF0gZ2V0VXNlck1lZGlhIHRocm93cyBEb21FeGNlcHRpb24gYWx3YXlzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyODU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcHJvdmlkZVVzZXJNZWRp
YVRvKCkgaXMgbm90IGNhbGxlZCB0byBpbml0aWFsaXplIFVzZXJNZWRpYUNvbnRyb2xsZXIKKyAg
ICAgICAgaW4gY2FzZSBvZiBFRkwgcG9ydC4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGNhbGwgdG8g
cHJvdmlkZVVzZXJNZWRpYVRvKCkKKyAgICAgICAgZnJvbSBXZWJQYWdlIHdoaWxlIGluaXRpYWxp
emluZyBvdGhlciBmZWF0dXJlcyBhcyB3ZWxsLgorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIGlu
Y2x1ZGVzIHRoZSBjb2RlIGNoYW5nZXMgcmVxdWlyZWQgdG8gcXVlcnkgdXNlciB0bworICAgICAg
ICBwcm92aWRlIHBlcm1pc3Npb24gZm9yIG1lZGlhIGRldmljZSBhY2Nlc3MuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvQVZDYXB0dXJlRGV2aWNlTWFuYWdlckdTdHJlYW1lci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6YXZDYXB0dXJlRGV2aWNlTWFuYWdlckdTdHJlYW1lck92ZXJyaWRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXI6OnBsYXRmb3Jt
Q2VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFt
ZXI6OnNldFNoYXJlZEFWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlckdTdHJlYW1lcjo6c2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXI6OnZhbGlkYXRlQ29u
c3RyYWludHNGb3JNZWRpYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNl
TWFuYWdlckdTdHJlYW1lcjo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlckdTdHJlYW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyR1N0cmVhbWVyOjp+QVZDYXB0dXJl
RGV2aWNlTWFuYWdlckdTdHJlYW1lcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0FWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXIuaDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVy
Ojp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6IFN0dWIgaW1wbGVtZW50YXRpb24KKyAgICAg
ICAgZm9yIGF1ZGlvIGFuZCB2aWRlbyBjb25zdHJhaW50cyB2YWxpZGF0aW9uLgorCiAyMDE0LTA1
LTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUHJlcGFyZSBjc3Mgaml0IGZvciBhcm02NCBhbmQgb3RoZXIgYXJjaGl0ZWN0dXJlcy4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAxNjk0ODIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTY1LDYgKzE2NSw3
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vbGludXgvR2Ft
ZXBhZERldmljZUxpbnV4LmNwcAogCisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0FWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNwcAogCiAgICAgcGxh
dGZvcm0vbmV0d29yay9lZmwvTmV0d29ya1N0YXRlTm90aWZpZXJFZmwuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlckdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0FWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXIu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0FWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBF
bGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXIuaCIKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0YXRpYyBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyR1N0cmVhbWVyKiYgYXZD
YXB0dXJlRGV2aWNlTWFuYWdlckdTdHJlYW1lck92ZXJyaWRlKCkKK3sKKyAgICBzdGF0aWMgQVZD
YXB0dXJlRGV2aWNlTWFuYWdlckdTdHJlYW1lciogb3ZlcnJpZGU7CisgICAgcmV0dXJuIG92ZXJy
aWRlOworfQorCitBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyR1N0cmVhbWVyJiBBVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyR1N0cmVhbWVyOjpwbGF0Zm9ybUNlbnRlcigpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQVZDYXB0dXJl
RGV2aWNlTWFuYWdlckdTdHJlYW1lciwgY2VudGVyLCAoKSk7CisgICAgQVZDYXB0dXJlRGV2aWNl
TWFuYWdlckdTdHJlYW1lcjo6c2V0U2hhcmVkQVZDYXB0dXJlRGV2aWNlTWFuYWdlckdTdHJlYW1l
cigmY2VudGVyKTsKKyAgICByZXR1cm4gY2VudGVyOworfQorCit2b2lkIEFWQ2FwdHVyZURldmlj
ZU1hbmFnZXJHU3RyZWFtZXI6OnNldFNoYXJlZEFWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFt
ZXIoQVZDYXB0dXJlRGV2aWNlTWFuYWdlckdTdHJlYW1lciogY2VudGVyKQoreworICAgIGF2Q2Fw
dHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXJPdmVycmlkZSgpID0gY2VudGVyOworfQorCitBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyR1N0cmVhbWVyJiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyR1N0cmVh
bWVyOjpzaGFyZWQoKQoreworICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXIqIG92
ZXJyaWRlID0gYXZDYXB0dXJlRGV2aWNlTWFuYWdlckdTdHJlYW1lck92ZXJyaWRlKCk7CisgICAg
aWYgKG92ZXJyaWRlKQorICAgICAgICByZXR1cm4gKm92ZXJyaWRlOworCisgICAgcmV0dXJuIEFW
Q2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXI6OnBsYXRmb3JtQ2VudGVyKCk7Cit9CisKK2Jv
b2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlckdTdHJlYW1lcjo6dmFsaWRhdGVDb25zdHJhaW50c0Zv
ck1lZGlhVHlwZShNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyosIFN0
cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K0FWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXI6OkFWQ2FwdHVyZURldmljZU1hbmFnZXJH
U3RyZWFtZXIoKQoreworfQorCitBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyR1N0cmVhbWVyOjp+QVZD
YXB0dXJlRGV2aWNlTWFuYWdlckdTdHJlYW1lcigpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9BVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyR1N0cmVhbWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0FWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXIuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyR1N0cmVhbWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFWQ2FwdHVyZURldmljZU1hbmFnZXJHU3Ry
ZWFtZXJfaAorI2RlZmluZSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyR1N0cmVhbWVyX2gKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgor
I2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEFWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXIgeworcHVibGljOgorICAgIHN0YXRp
YyBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyR1N0cmVhbWVyJiBzaGFyZWQoKTsKKworICAgIHN0YXRp
YyB2b2lkIHNldFNoYXJlZEFWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXIoQVZDYXB0dXJl
RGV2aWNlTWFuYWdlckdTdHJlYW1lciopOworCisgICAgYm9vbCB2YWxpZGF0ZUNvbnN0cmFpbnRz
Rm9yTWVkaWFUeXBlKE1lZGlhU3RyZWFtU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKiwg
U3RyaW5nJik7CisKK3Byb3RlY3RlZDoKKyAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyR1N0cmVh
bWVyKCk7CisgICAgfkFWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXIoKTsKKworICAgIHN0
YXRpYyBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyR1N0cmVhbWVyJiBwbGF0Zm9ybUNlbnRlcigpOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2VuZGlmIC8vIEFWQ2FwdHVyZURldmljZU1hbmFnZXJHU3RyZWFtZXJfaAorCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFT
dHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5j
cHAJKHJldmlzaW9uIDE2OTQ4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyR1N0cmVh
bWVyLmgiCiAKKyNpbmNsdWRlICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyR1N0cmVhbWVyLmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgi
CkBAIC01OSw5ICs2MCwzMSBAQCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6fk1lZGlhU3Ry
ZWFtCiB7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OnZhbGlkYXRlUmVx
dWVzdENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBh
c3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4p
Cit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJh
aW50cyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50
LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBjbGllbnQgPSBw
cnBRdWVyeUNsaWVudDsKKworICAgIEFTU0VSVChjbGllbnQpOworCisgICAgaWYgKGF1ZGlvQ29u
c3RyYWludHMpIHsKKyAgICAgICAgU3RyaW5nIGludmFsaWRDb25zdHJhaW50OworICAgICAgICBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyR1N0cmVhbWVyOjpzaGFyZWQoKS52YWxpZGF0ZUNvbnN0cmFp
bnRzRm9yTWVkaWFUeXBlKE1lZGlhU3RyZWFtU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50
cy5nZXQoKSwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAgICBpZiAoIWludmFsaWRDb25zdHJh
aW50LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFsaWQo
aW52YWxpZENvbnN0cmFpbnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKKyAgICAgICAgU3RyaW5nIGludmFsaWRD
b25zdHJhaW50OworICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyR1N0cmVhbWVyOjpzaGFy
ZWQoKS52YWxpZGF0ZUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKE1lZGlhU3RyZWFtU291cmNlOjpW
aWRlbywgdmlkZW9Db25zdHJhaW50cy5nZXQoKSwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAg
ICBpZiAoIWludmFsaWRDb25zdHJhaW50LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgY2xpZW50
LT5jb25zdHJhaW50c0ludmFsaWQoaW52YWxpZENvbnN0cmFpbnQpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgY2xpZW50LT5jb25zdHJhaW50c1ZhbGlkYXRl
ZCgpOwogfQogICAgIAogdm9pZCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6Y3JlYXRlTWVk
aWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE2OTQ4MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE0LTA1LTMwICBQcmF2ZWVuIFIgSmFk
aGF2ICA8cHJhdmVlbi5qQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gW0VG
TF0gZ2V0VXNlck1lZGlhIHRocm93cyBEb21FeGNlcHRpb24gYWx3YXlzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyODU1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcHJvdmlkZVVzZXJNZWRpYVRvKCkg
aXMgbm90IGNhbGxlZCB0byBpbml0aWFsaXplIFVzZXJNZWRpYUNvbnRyb2xsZXIKKyAgICAgICAg
aW4gY2FzZSBvZiBFRkwgcG9ydC4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGNhbGwgdG8gcHJvdmlk
ZVVzZXJNZWRpYVRvKCkKKyAgICAgICAgZnJvbSBXZWJQYWdlIHdoaWxlIGluaXRpYWxpemluZyBv
dGhlciBmZWF0dXJlcyBhcyB3ZWxsLgorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIGluY2x1ZGVz
IHRoZSBjb2RlIGNoYW5nZXMgcmVxdWlyZWQgdG8gcXVlcnkgdXNlciB0bworICAgICAgICBwcm92
aWRlIHBlcm1pc3Npb24gZm9yIG1lZGlhIGRldmljZSBhY2Nlc3MuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICog
U2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQu
aDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQ
YWdlVUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9NZWRpYVN0cmVhbTogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdDo6YWxsb3cpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dDo6ZGVueSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Ojpp
bnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdHMp
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eTo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRF
ZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVUlDbGllbnRFZmw6OlBhZ2VVSUNsaWVudEVm
bCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VVSUNsaWVudEVmbDo6ZGVjaWRlUG9saWN5Rm9yVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVVJ
Q2xpZW50RWZsLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRl
SW5zcGVjdG9yUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbTogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVSZXF1ZXN0
SUQpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZXF1ZXN0UGVybWlzc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlk
UmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjpXZWJVc2Vy
TWVkaWFDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6On5XZWJV
c2VyTWVkaWFDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OnBh
Z2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OnJlcXVl
c3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjpjYW5j
ZWxSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJN
ZWRpYUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE0LTA1LTI5ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgLVtXS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBzZXRDYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczpdIHNob3VsZCBk
byBhIGRlZXAgY29weQpJbmRleDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE2OTQ4MikK
KysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBAIHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQy
X0RJUn0vVUlQcm9jZXNzL0Rvd25sb2FkcyIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L0luc3BlY3RvclNlcnZlciIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0xhdW5jaGVy
IgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTWVkaWFTdHJlYW0iCiAgICAgIiR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9OZXR3b3JrIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zIgpAQCAtNDksNiArNTAsNyBAQCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJ
UkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0xhdW5jaGluZyIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9NZWRpYUNhY2hlIgorICAgICIke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL01lZGlhU3RyZWFtIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL05l
dHdvcmsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucyIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9PcmlnaW5EYXRhIgpAQCAtNDA1LDYgKzQwNyw5
IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNz
TGF1bmNoZXIuY3BwCiAKKyAgICBVSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QuY3BwCisgICAgVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorCiAgICAgVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKIAogICAgIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcApAQCAtNDgzLDYgKzQ4OCw4IEBAIHNldChXZWJL
aXQyX1NPVVJDRVMKIAogICAgIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUNhY2hlTWFu
YWdlci5jcHAKIAorICAgIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmNwcAorCiAgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKICAgICBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcAogICAgIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTUzNCw2ICs1NDEsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJWaWJyYXRpb25DbGllbnQuY3BwCiAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRGVj
b2RlckFkYXB0ZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCShyZXZpc2lv
biAxNjk0ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMSw2ICsxMzEsOSBAQCBwdWJsaWM6CiAgICAgICAgIFByZWZlcmVuY2VzLAog
ICAgICAgICBTZXNzaW9uLAogICAgICAgICBUZXh0Q2hlY2tlciwKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorICAgICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCwKKyNlbmRpZgogICAg
ICAgICBWaWJyYXRpb24sCiAgICAgICAgIFZpZXdwb3J0QXR0cmlidXRlcywKIApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkocmV2aXNpb24gMTY5NDgyKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiAr
MTI2LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcmVmZXJlbmNlcwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcm90ZWN0aW9uU3BhY2UqIFdLUHJvdGVjdGlvblNwYWNl
UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tUZXh0Q2hlY2tlciogV0tUZXh0Q2hl
Y2tlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU2Vzc2lvbiogV0tTZXNzaW9u
UmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdCogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLVmlicmF0aW9uKiBXS1ZpYnJhdGlvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLVmlld3BvcnRBdHRyaWJ1dGVzKiBXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZjsK
IApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDE2OTQ4MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsNiArMjc0LDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYgcAogICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQo
KSkKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCiAg
ICAgLCBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgICwgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIoKnRoaXMpCisjZW5kaWYKICAgICAsIG1fdmlld1N0YXRlKFZpZXdTdGF0ZTo6Tm9GbGFn
cykKICAgICAsIG1fYmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlKCp0
aGlzKSkKICAgICAsIG1fbG9hZFN0YXRlQXRQcm9jZXNzRXhpdChGcmFtZUxvYWRTdGF0ZTo6U3Rh
dGU6OkZpbmlzaGVkKQpAQCAtNDE4NSw2ICs0MTg4LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXNldFN0YXRlKCkKIAogICAgIG1fbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmludmFsaWRhdGVSZXF1ZXN0cygpOwogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBt
X3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5pbnZhbGlkYXRlUmVxdWVzdHMoKTsK
KyNlbmRpZgorCiAgICAgbV90b29sVGlwID0gU3RyaW5nKCk7CiAKICAgICBtX21haW5GcmFtZUhh
c0hvcml6b250YWxTY3JvbGxiYXIgPSBmYWxzZTsKQEAgLTQ0NTYsNiArNDQ2MywxOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdE5vdGlmaWNhdGlvblBlCiAgICAgICAgIHJlcXVlc3QtPmRl
bnkoKTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb24odWludDY0X3QgcmVxdWVzdElEKQoreworICAgIFJl
ZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdCA9IG1fdXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNyZWF0ZVJlcXVlc3QocmVxdWVzdElEKTsKKworICAgIGlm
ICghbV91aUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qo
dGhpcywgcmVxdWVzdC5nZXQoKSkpCisgICAgICAgIHJlcXVlc3QtPmRlbnkoKTsKKyAgICBlbHNl
CisgICAgICAgIHJlcXVlc3QtPmFsbG93KCk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlUHJv
eHk6OnNob3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBi
b2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJp
bmcmIGxhbmcsIGNvbnN0IFN0cmluZyYgZGlyLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywg
dWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuc3Vw
cGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPnNob3codGhpcywgdGl0bGUs
IGJvZHksIGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIG5vdGlmaWNhdGlv
bklEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlz
aW9uIDE2OTQ4MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsMTAgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJUb3Vj
aEV2ZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAi
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKKyNlbmRpZgorCiAjaWYg
UExBVEZPUk0oRUZMKQogI2luY2x1ZGUgIldLUGFnZUVmbC5oIgogI2luY2x1ZGUgIldlYlVJUG9w
dXBNZW51Q2xpZW50LmgiCkBAIC0xMjI0LDYgKzEyMjgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25J
RHMpOwogICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRp
b25JRCk7CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZvaWQgcmVxdWVzdFVzZXJN
ZWRpYVBlcm1pc3Npb24odWludDY0X3QgdXNlck1lZGlhSUQpOworI2VuZGlmCisKICNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVh
ZHkoKTsKQEAgLTE1MzUsNiArMTU0MywxMCBAQCBwcml2YXRlOgogICAgIEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcjsKICAgICBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSBt
X25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIAorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgbV91
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CisjZW5kaWYKKwogICAgIFdlYkNvcmU6
OlZpZXdTdGF0ZTo6RmxhZ3MgbV92aWV3U3RhdGU7CiAKICNpZiBQTEFURk9STShJT1MpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDE2OTQ4MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI1MSw2ICsyNTEsMTEgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBDbGVhck5vdGlmaWNhdGlvbnMoVmVjdG9yPHVp
bnQ2NF90PiBub3RpZmljYXRpb25JRHMpCiAgICAgRGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50
NjRfdCBub3RpZmljYXRpb25JRCkKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgIyBV
c2VyTWVkaWEgbWVzc2FnZXMKKyAgICBSZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbih1aW50NjRf
dCByZXF1ZXN0SUQpCisjZW5kaWYKKwogICAgICMgU3BlbGxpbmcgYW5kIGdyYW1tYXIgbWVzc2Fn
ZXMKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKSAgCiAgICAgQ2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoU3RyaW5nIHRleHQsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMpIC0+IChWZWN0b3I8V2Vi
Q29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzKQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAkocmV2aXNpb24gMTY5NDgyKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTksNiArMTE5LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9y
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktp
dDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW4qLCBXZWJLaXQ6Okdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiosIFdlYktp
dDo6Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqKSB7IHJldHVybiBmYWxzZTsgfQogCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9y
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6
OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KikgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgor
CiAgICAgLy8gUHJpbnRpbmcuCiAgICAgdmlydHVhbCBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViS2l0
OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqKSB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCBmbG9hdCBmb290ZXJIZWlnaHQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkqKSB7IHJldHVybiAwOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAxNjk0ODIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYy
LDYgKzYyLDExIEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjsKIGNsYXNz
IERvd25sb2FkUHJveHk7CiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk7
CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKKyNlbmRpZgorCiBj
bGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5OwogY2xhc3MgV2ViQmFja0Zvcndh
cmRMaXN0OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKQEAgLTE0NCw2ICsxNDksMTEg
QEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJvdGVjdGlvblNwYWNlUmVmLAogV0tfQUREX0FQSV9N
QVBQSU5HKFdLUmVuZGVyTGF5ZXJSZWYsIFdlYlJlbmRlckxheWVyKQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLUmVuZGVyT2JqZWN0UmVmLCBXZWJSZW5kZXJPYmplY3QpCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tUZXh0Q2hlY2tlclJlZiwgV2ViVGV4dENoZWNrZXIpCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RS
ZWYsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KQorI2VuZGlmCisKIFdLX0FERF9BUElfTUFQ
UElORyhXS1ZpYnJhdGlvblJlZiwgV2ViVmlicmF0aW9uUHJveHkpCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tWaWV3cG9ydEF0dHJpYnV0ZXNSZWYsIFdlYlZpZXdwb3J0QXR0cmlidXRlcykKIFdLX0FE
RF9BUElfTUFQUElORyhXS0luc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yUHJveHkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMTY5NDgy
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NzcsNiArMTQ3NywxNiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChX
S1BhZ2VSZWYgcGFnCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZv
clVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSogcGFnZSwgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QqIHBlcm1pc3Npb25SZXF1ZXN0KSBvdmVycmlkZQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAg
ICAgcmV0dXJuIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0KHRvQVBJKHBhZ2UpLCB0b0FQSShwZXJtaXNzaW9uUmVxdWVzdCksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIC8vIFByaW50aW5nLgog
ICAgICAgICB2aXJ0dWFsIGZsb2F0IGhlYWRlckhlaWdodChXZWJQYWdlUHJveHkqIHBhZ2UsIFdl
YkZyYW1lUHJveHkqIGZyYW1lKSBvdmVycmlkZQogICAgICAgICB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAkocmV2aXNpb24gMTY5
NDgyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdlUHJp
bnRGcmFtZUNhbGxiYWNrKQogdHlwZWRlZiB2b2lkICgqV0tQYWdlU2F2ZURhdGFUb0ZpbGVJbkRv
d25sb2Fkc0ZvbGRlckNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgc3VnZ2Vz
dGVkRmlsZW5hbWUsIFdLU3RyaW5nUmVmIG1pbWVUeXBlLCBXS1VSTFJlZiBvcmlnaW5hdGluZ1VS
TCwgV0tEYXRhUmVmIGRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiBib29s
ICgqV0tQYWdlU2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFn
ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQ
b2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrKShXS1BhZ2VSZWYg
cGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RSZWYgcGVybWlzc2lvblJlcXVlc3QsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwor
dHlwZWRlZiBib29sICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RSZWYgcGVybWlzc2lvblJlcXVlc3QsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRl
ZiB2b2lkICgqV0tQYWdlU2hvd0NvbG9yUGlja2VyQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBX
S1N0cmluZ1JlZiBpbml0aWFsQ29sb3IsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBs
aXN0ZW5lciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VI
aWRlQ29sb3JQaWNrZXJDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlj
a2VkQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29u
IHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBXS0RpY3Rpb25hcnlSZWYgcGx1Z2luSW5mb0Rp
Y3Rpb25hcnksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpAQCAtMTkxLDYgKzE5Miw3IEBAIHR5
cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjEgewogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3
UGFnZTsKICAgICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVyRWxlbWVudENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50OwogICAgIFdLUGFn
ZURlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAg
ICAgICAgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAg
V0tQYWdlRGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAg
ICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKICAg
ICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVk
Rm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYxOwogfSBXS1BhZ2VVSUNsaWVudFYxOwogCkBAIC0yNDIsNiArMjQ0LDcgQEAgdHlw
ZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMiB7CiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQ
YWdlOwogICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Q2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ7CiAgICAgV0tQYWdl
RGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAg
ICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBX
S1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAg
ICAgICAgICAgIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OwogICAg
IFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjEgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjE7CiAKICAgICAvLyBWZXJzaW9uIDIuCkBAIC0yOTgsNiArMzAxLDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMyB7CiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdl
OwogICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Q2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ7CiAgICAgV0tQYWdlRGVj
aWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAg
ICBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBXS1Bh
Z2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAg
ICAgICAgIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OwogICAgIFdL
UGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjEgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjE7CiAKICAgICAvLyBWZXJzaW9uIDIuCkBAIC0zNTksNiArMzYzLDcgQEAgdHlwZWRlZiBz
dHJ1Y3QgV0tQYWdlVUlDbGllbnQgewogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKICAg
ICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVyRWxlbWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50OwogICAgIFdLUGFnZURlY2lkZVBv
bGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgZGVj
aWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlRGVj
aWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICAg
ICBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKICAgICBXS1BhZ2VV
bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0
aFYxIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYx
OwogCiAgICAgLy8gVmVyc2lvbiAyLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL01l
ZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0PiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKFdlYktpdDo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgKm1hbmFnZXIsIHVpbnQ2NF90IHVzZXJNZWRp
YUlEKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QobWFuYWdlciwgdXNlck1lZGlhSUQpKTsKK30KKworVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3Q6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5KiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCkKKyAgICA6IG1fbWFu
YWdlcihtYW5hZ2VyKQorICAgICwgbV91c2VyTWVkaWFJRCh1c2VyTWVkaWFJRCkKK3sKK30KKwor
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6YWxsb3coKQoreworICAgIGlmICghbV9t
YW5hZ2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21hbmFnZXItPmRpZFJlY2VpdmVVc2Vy
TWVkaWFQZXJtaXNzaW9uRGVjaXNpb24obV91c2VyTWVkaWFJRCwgdHJ1ZSk7CisgICAgbV9tYW5h
Z2VyID0gMDsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDo6ZGVueSgpCit7
CisgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWFuYWdlci0+
ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbihtX3VzZXJNZWRpYUlELCBmYWxz
ZSk7CisgICAgbV9tYW5hZ2VyID0gMDsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdDo6aW52YWxpZGF0ZSgpCit7CisgICAgbV9tYW5hZ2VyID0gMDsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RfaAorI2RlZmluZSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OworCitjbGFzcyBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0ZShVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSosIHVpbnQ2NF90IHVzZXJNZWRpYUlEKTsK
KworICAgIHZvaWQgYWxsb3coKTsKKyAgICB2b2lkIGRlbnkoKTsKKworICAgIHZvaWQgaW52YWxp
ZGF0ZSgpOworCitwcml2YXRlOgorICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KiwgdWludDY0X3QgdXNlck1lZGlhSUQp
OworCisgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkqIG1fbWFuYWdl
cjsKKyAgICB1aW50NjRfdCBtX3VzZXJNZWRpYUlEOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2Vi
UGFnZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkoV2ViUGFnZVByb3h5JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK3Zv
aWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVSZXF1
ZXN0cygpCit7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9wZW5kaW5nUmVxdWVzdHMudmFs
dWVzKCkpCisgICAgICAgIHJlcXVlc3QtPmludmFsaWRhdGUoKTsKKworICAgIG1fcGVuZGluZ1Jl
cXVlc3RzLmNsZWFyKCk7Cit9CisKK1Bhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3Q+IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0
KHVpbnQ2NF90IHVzZXJNZWRpYUlEKQoreworICAgIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdD4gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUodGhp
cywgdXNlck1lZGlhSUQpOworICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFkZCh1c2VyTWVkaWFJRCwg
cmVxdWVzdC5nZXQoKSk7CisgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOworfQorCit2b2lk
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlVXNlck1l
ZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93KQor
eworICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVm
UHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gbV9wZW5kaW5nUmVxdWVz
dHMudGFrZSh1c2VyTWVkaWFJRCk7CisgICAgaWYgKCFyZXF1ZXN0KQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2Vp
dmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odXNlck1lZGlhSUQsIGFsbG93KSwgbV9wYWdl
LnBhZ2VJRCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL01lZGlhU3Ry
ZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHlfaAorI2RlZmluZSBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CitjbGFzcyBX
ZWJQYWdlUHJveHk7CisKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eShXZWJQYWdlUHJveHkmKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZVJlcXVlc3Rz
KCk7CisKKyAgICAvLyBDcmVhdGUgcmVxdWVzdCB0byBiZSBwcmVzZW50ZWQgdG8gdXNlci4KKyAg
ICBQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGVSZXF1ZXN0KHVp
bnQ2NF90IHVzZXJNZWRpYUlEKTsKKworICAgIC8vIENhbGxlZCBieSBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdCB3aGVuIGRlY2lzaW9uIGlzIG1hZGUgYnkgdXNlci4KKyAgICB2b2lkIGRpZFJl
Y2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNlck1lZGlhSUQsIGJv
b2wgYWxsb3cpOworCitwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Pj4gUGVuZGluZ1JlcXVlc3RNYXA7CisgICAg
UGVuZGluZ1JlcXVlc3RNYXAgbV9wZW5kaW5nUmVxdWVzdHM7CisgICAgV2ViUGFnZVByb3h5JiBt
X3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlD
bGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZVVJQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTY5NDgyKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2
ICs3OSw5IEBAIFBhZ2VVSUNsaWVudEVmbDo6UGFnZVVJQ2xpZW50RWZsKEV3a1ZpZXcKICNlbmRp
ZgogICAgIHVpQ2xpZW50LnJ1bk9wZW5QYW5lbCA9IHJ1bk9wZW5QYW5lbDsKICAgICB1aUNsaWVu
dC5jcmVhdGVOZXdQYWdlID0gY3JlYXRlTmV3UGFnZTsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorICAgIHVpQ2xpZW50LmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
ID0gZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q7CisjZW5kaWYKIAog
ICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChwYWdlUmVmLCAmdWlDbGllbnQuYmFzZSk7CiAKQEAg
LTIyMiw2ICsyMjUsMTMgQEAgV0tQYWdlUmVmIFBhZ2VVSUNsaWVudEVmbDo6Y3JlYXRlTmV3UGFn
ZQogICAgIHJldHVybiB0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3LT5jcmVh
dGVOZXdQYWdlKHJlcXVlc3QsIHdrV2luZG93RmVhdHVyZXMpOwogfQogCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKK2Jvb2wgUGFnZVVJQ2xpZW50RWZsOjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHRvUGFnZVVJQ2xp
ZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXctPnJlcXVlc3RKU0NvbmZpcm1Qb3B1cChXS0VpbmFT
aGFyZWRTdHJpbmcoIkFsbG93IGxvY2FsIG1lZGlhIGRldmljZSBhY2Nlc3M/IikpOworfQorI2Vu
ZGlmCisKIHZvaWQgUGFnZVVJQ2xpZW50RWZsOjpzaG93UG9wdXBNZW51KFdLUGFnZVJlZiwgV0tQ
b3B1cE1lbnVMaXN0ZW5lclJlZiBtZW51TGlzdGVuZXJSZWYsIFdLUmVjdCByZWN0LCBXS1BvcHVw
SXRlbVRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3Rvciwg
V0tBcnJheVJlZiBpdGVtc1JlZiwgaW50MzJfdCBzZWxlY3RlZEluZGV4LCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQogewogICAgIHJldHVybiB0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+
bV92aWV3LT5yZXF1ZXN0UG9wdXBNZW51KG1lbnVMaXN0ZW5lclJlZiwgcmVjdCwgdGV4dERpcmVj
dGlvbiwgcGFnZVNjYWxlRmFjdG9yLCBpdGVtc1JlZiwgc2VsZWN0ZWRJbmRleCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmgJKHJldmlz
aW9uIDE2OTQ4MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50
RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDkgQEAgcHJpdmF0ZToKICNlbmRpZgog
ICAgIHN0YXRpYyB2b2lkIHJ1bk9wZW5QYW5lbChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLT3Bl
blBhbmVsUGFyYW1ldGVyc1JlZiwgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3Qg
dm9pZCopOwogICAgIHN0YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYsIFdL
VVJMUmVxdWVzdFJlZiwgV0tEaWN0aW9uYXJ5UmVmLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50
TW91c2VCdXR0b24sIGNvbnN0IHZvaWQqKTsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAg
IHN0YXRpYyBib29sIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdL
UGFnZVJlZiwgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiwgY29uc3Qgdm9pZCopOwor
I2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCBzaG93UG9wdXBNZW51KFdLUGFnZVJlZiwgV0tQb3B1
cE1lbnVMaXN0ZW5lclJlZiwgV0tSZWN0LCBXS1BvcHVwSXRlbVRleHREaXJlY3Rpb24sIGRvdWJs
ZSBwYWdlU2NhbGVGYWN0b3IsIFdLQXJyYXlSZWYgaXRlbXNSZWYsIGludDMyX3Qgc2VsZWN0ZWRJ
bmRleCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgaGlkZVBvcHVw
TWVudShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCShy
ZXZpc2lvbiAxNjk0ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3Bl
Y3RvclByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NDMsNiArNDQzLDcgQEAgV2ViUGFn
ZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcgogICAgICAgICAwLCAvLyBjcmVhdGVQ
YWdlCiAgICAgICAgIDAsIC8vIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50CiAgICAgICAgIDAsIC8v
IGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisgICAgICAgIDAs
IC8vIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiAgICAgICAgIDAs
IC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYx
CiAgICAgICAgIDAsIC8vIHNob3dDb2xvclBpY2tlcgogICAgICAgICAwLCAvLyBoaWRlQ29sb3JQ
aWNrZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUmVxdWVzdElE
KCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlUmVxdWVzdElEID0gMTsKKyAgICByZXR1
cm4gdW5pcXVlUmVxdWVzdElEKys7Cit9CisKK1Bhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyPiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNyZWF0
ZShQYXNzUmVmUHRyPFdlYlBhZ2U+IHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIocGFnZSkpOworfQorCitVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cihQYXNzUmVmUHRyPFdlYlBhZ2U+IHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKwor
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnJlcXVlc3RQZXJtaXNzaW9u
KFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0KQorewor
ICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IGdlbmVyYXRlUmVxdWVzdElEKCk7CisgICAgbV9pZFRv
UGVybWlzc2lvbk1hcC5zZXQocmVxdWVzdElELCByZXF1ZXN0LmdldCgpKTsKKyAgICBtX3BhZ2Uu
Z2V0KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFVzZXJNZWRpYVBlcm1p
c3Npb24ocmVxdWVzdElEKSk7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCBhbGxvd2VkKQoreworICAgIFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Qq
IHJlcXVlc3QgPSBtX2lkVG9QZXJtaXNzaW9uTWFwLnRha2UocmVxdWVzdElEKTsKKworICAgIGlm
IChhbGxvd2VkKQorICAgICAgICByZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NHcmFudGVkKCk7Cisg
ICAgZWxzZQorICAgICAgICByZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cl9oCisjZGVmaW5lIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcl9oCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
OworCitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgOiBwdWJsaWMgUmVm
Q291bnRlZDxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+IGNy
ZWF0ZShQYXNzUmVmUHRyPFdlYlBhZ2U+KTsKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Pik7CisgICAgdm9pZCBkaWRS
ZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBi
b29sIGFsbG93ZWQpOworCitwcml2YXRlOgorICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcihQYXNzUmVmUHRyPFdlYlBhZ2U+KTsKKyAgICBSZWZQdHI8V2ViUGFnZT4gbV9wYWdl
OworICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqPiBtX2lk
VG9QZXJtaXNzaW9uTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJVc2VyTWVkaWFDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVu
dC5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFt
U291cmNlLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJVVUlELmgi
CisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJVc2VyTWVkaWFDbGllbnQ6Oldl
YlVzZXJNZWRpYUNsaWVudChXZWJQYWdlKiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9
CisKK1dlYlVzZXJNZWRpYUNsaWVudDo6fldlYlVzZXJNZWRpYUNsaWVudCgpCit7Cit9CisKK3Zv
aWQgV2ViVXNlck1lZGlhQ2xpZW50OjpwYWdlRGVzdHJveWVkKCkKK3sKKyAgICBkZWxldGUgdGhp
czsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKFdURjo6
UGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0KQoreworICAgIG1fcGFnZS0+dXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCktPnJlcXVlc3RQZXJtaXNzaW9uKHJlcXVl
c3QpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6Y2FuY2VsUmVxdWVzdChVc2VyTWVk
aWFSZXF1ZXN0KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybjsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVk
aWFDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNh
bXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVXNlck1l
ZGlhQ2xpZW50X2gKKyNkZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50X2gKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUg
IlVzZXJNZWRpYUNsaWVudC5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYlVzZXJNZWRpYUNs
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQgeworcHVibGljOgorICAgIGV4
cGxpY2l0IFdlYlVzZXJNZWRpYUNsaWVudChXZWJQYWdlKik7CisgICAgdmlydHVhbCB+V2ViVXNl
ck1lZGlhQ2xpZW50KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOworICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
VXNlck1lZGlhUmVxdWVzdD4pOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0KFdlYkNv
cmU6OlVzZXJNZWRpYVJlcXVlc3QqKTsKKworcHJpdmF0ZToKKyAgICBXZWJQYWdlKiBtX3BhZ2U7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRfaApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTY5NDgy
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDExIEBACiAjaW5jbHVkZSAiV2ViVmlicmF0aW9uQ2xp
ZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlh
Q2xpZW50LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShQUk9YSU1JVFlfRVZFTlRTKQogI2luY2x1
ZGUgIldlYkRldmljZVByb3hpbWl0eUNsaWVudC5oIgogI2VuZGlmCkBAIC0zNzcsNiArMzgyLDkg
QEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0CiAjaWYgRU5BQkxFKFZJ
QlJBVElPTikKICAgICBXZWJDb3JlOjpwcm92aWRlVmlicmF0aW9uVG8obV9wYWdlLmdldCgpLCBu
ZXcgV2ViVmlicmF0aW9uQ2xpZW50KHRoaXMpKTsKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisgICAgV2ViQ29yZTo6cHJvdmlkZVVzZXJNZWRpYVRvKG1fcGFnZS5nZXQoKSwgbmV3
IFdlYlVzZXJNZWRpYUNsaWVudCh0aGlzKSk7CisjZW5kaWYKICNpZiBFTkFCTEUoUFJPWElNSVRZ
X0VWRU5UUykKICAgICBXZWJDb3JlOjpwcm92aWRlRGV2aWNlUHJveGltaXR5VG8obV9wYWdlLmdl
dCgpLCBuZXcgV2ViRGV2aWNlUHJveGltaXR5Q2xpZW50KHRoaXMpKTsKICNlbmRpZgpAQCAtMjgx
Miw2ICsyODIwLDE4IEBAIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciogV2UK
ICAgICByZXR1cm4gbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZ2V0KCk7
CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyKiBXZWJQYWdlOjp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKQor
eworICAgIGlmIChtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcikKKyAgICAgICAg
cmV0dXJuIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmdldCgpOworCisgICAg
bV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgPSBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OmNyZWF0ZSh0aGlzKTsKKworICAgIHJldHVybiBtX3VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5nZXQoKTsKK30KKyNlbmRpZgorCiAjaWYgIVBMQVRGT1JN
KEdUSykgJiYgIVBMQVRGT1JNKENPQ09BKQogYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5
Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldnQpCiB7CkBAIC0zMTM0LDYgKzMxNTQsMTMgQEAg
dm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybQogICAgIG5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLT5kaWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybWlz
c2lvbkRlY2lzaW9uKG5vdGlmaWNhdGlvbklELCBhbGxvd2VkKTsKIH0KIAorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9u
RGVjaXNpb24odWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCkKK3sKKyAgICB1c2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS0+ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1p
c3Npb25EZWNpc2lvbih1c2VyTWVkaWFJRCwgYWxsb3dlZCk7Cit9CisjZW5kaWYKKwogI2lmICFQ
TEFURk9STShJT1MpCiB2b2lkIFdlYlBhZ2U6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29s
IHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxNjk0ODIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNiAr
MTgwLDExIEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogY2xhc3MgV2ViVG91
Y2hFdmVudDsKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK2NsYXNzIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKK2NsYXNzIFdlYlVzZXJNZWRpYUNsaWVudDsK
KyNlbmRpZgorCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQogY2xhc3Mg
VGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXI7CiAjZW5kaWYKQEAgLTQ0OCw2ICs0NTMs
MTAgQEAgcHVibGljOgogICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyJiBn
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fZ2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIHVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpOworI2VuZGlmCisKICNpZiBQTEFURk9STShJT1Mp
CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNjcmVlblNpemUoKSBjb25zdDsKICAgICBXZWJDb3Jl
OjpGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0OwpAQCAtOTk3LDYgKzEwMDYs
MTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Np
b25EZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgYm9vbCBhbGxvd2VkKTsKIAorI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlz
c2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQpOworI2VuZGlm
CisKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2Vs
ZWN0aW9uKTsKICAgICB2b2lkIGNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29y
ZCk7CiAjaWYgVVNFKEFQUEtJVCkKQEAgLTExNTcsNiArMTE3MCwxMCBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4gbV9hY3RpdmVPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lcjsKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyPiBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIAorI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcj4gbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CisjZW5kaWYKKwogICAg
IFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVy
OwogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE2
OTQ4MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNiArMjYxLDEwIEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgICMgTm90aWZpY2F0aW9uCiAgICAgRGlkUmVjZWl2
ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwg
Ym9vbCBhbGxvd2VkKQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBEaWRSZWNlaXZl
VXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFs
bG93ZWQpCisjZW5kaWYKKwogICAgIFNldFdpbmRvd1Jlc2l6ZXJTaXplKFdlYkNvcmU6OkludFNp
emUgaW50ZXJzZWN0c1ZpZXcpCiAKICAgICAjIFByaW50aW5nLgpJbmRleDogVG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NDgyKQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQtMDUt
MzAgIFByYXZlZW4gUiBKYWRoYXYgIDxwcmF2ZWVuLmpAc2Ftc3VuZy5jb20+CisKKyAgICAgICAg
W01lZGlhU3RyZWFtXSBbRUZMXSBnZXRVc2VyTWVkaWEgdGhyb3dzIERvbUV4Y2VwdGlvbiBhbHdh
eXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI4
NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6CisKIDIwMTQtMDUtMjkgIENhcmxvcyBBbGJlcnRv
IExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIGEg
V2ViS2l0MiBQZXJmb3JtYW5jZSBib3QuCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTY5NDgyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsNyBA
QCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnCiAgICAgICAgIGNyZWF0
ZU90aGVyUGFnZSwKICAgICAgICAgMCwgLy8gbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQKICAgICAg
ICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QKKyAg
ICAgICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKICAg
ICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjEKICAgICAgICAgMCwgLy8gc2hvd0NvbG9yUGlja2VyCiAgICAgICAgIDAsIC8vIGhp
ZGVDb2xvclBpY2tlcgpAQCAtNDYyLDYgKzQ2Myw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZVdlYlZpZXdXaXRoT3AKICAgICAgICAgY3JlYXRlT3RoZXJQYWdlLAogICAgICAgICAwLCAv
LyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdCwgLy8gZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QKKyAgICAgICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QKICAgICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlj
a2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEKICAgICAgICAgMCwgLy8gc2hvd0NvbG9yUGlja2Vy
CiAgICAgICAgIDAsIC8vIGhpZGVDb2xvclBpY2tlcgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>