<?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>147633</bug_id>
          
          <creation_ts>2015-08-04 10:59:19 -0700</creation_ts>
          <short_desc>Media Session: push paused state to the media session focus manager instead of polling</short_desc>
          <delta_ts>2015-08-06 09:48:21 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>145411</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Rajca">mrajca</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>conrad_shultz</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>mrajca</cc>
    
    <cc>ossy</cc>
    
    <cc>peavo</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1114648</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-08-04 10:59:19 -0700</bug_when>
    <thetext>Follow up from Bug 147588</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114990</commentid>
    <comment_count>1</comment_count>
      <attachid>258269</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-08-05 00:19:59 -0700</bug_when>
    <thetext>Created attachment 258269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115025</commentid>
    <comment_count>2</comment_count>
      <attachid>258277</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-08-05 09:24:36 -0700</bug_when>
    <thetext>Created attachment 258277
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115038</commentid>
    <comment_count>3</comment_count>
      <attachid>258277</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-08-05 10:17:47 -0700</bug_when>
    <thetext>Comment on attachment 258277
Patch

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

This looks good modulo my minor comments, but I am now a WK2 reviewer so someone else will have to give the official r+.

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:344
&gt; +#if ENABLE(MEDIA_SESSION)
&gt; +    document()-&gt;updateIsPlayingMedia(HTMLMediaElementUnknownID);
&gt; +#else
&gt; +    document()-&gt;updateIsPlayingMedia(0);
&gt; +#endif

Nit: if you don&apos;t guard HTMLMediaElementUnknownID with &quot;ENABLE(MEDIA_SESSION)&quot; you won&apos;t need the #if here.

Also, the name &quot;HTMLMediaElementUnknownID&quot; is not quite correct because it isn&apos;t an HTMLMediaElement at all. Maybe HTMLMediaElementInvalidID?

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:1085
&gt; +#if ENABLE(MEDIA_SESSION)
&gt; +            strongThis-&gt;document()-&gt;updateIsPlayingMedia(HTMLMediaElementUnknownID);
&gt; +#else
&gt; +            strongThis-&gt;document()-&gt;updateIsPlayingMedia(0);
&gt; +#endif

Ditto.

&gt; Source/WebCore/dom/Document.cpp:3505
&gt; +#if ENABLE(MEDIA_SESSION)
&gt; +    updateIsPlayingMedia(HTMLMediaElementUnknownID);
&gt; +#else
&gt; +    updateIsPlayingMedia(0);
&gt; +#endif

Ditto.

&gt; Source/WebCore/dom/Document.cpp:3516
&gt; +#if ENABLE(MEDIA_SESSION)
&gt; +    updateIsPlayingMedia(HTMLMediaElementUnknownID);
&gt; +#else
&gt; +    updateIsPlayingMedia(0);
&gt; +#endif

Ditto.

&gt; Source/WebCore/dom/Document.cpp:3529
&gt; +    if (HTMLMediaElement* sourceElement = HTMLMediaElement::elementWithID(sourceElementID)) {
&gt; +        if (sourceElement-&gt;isPlaying())
&gt; +            state |= MediaProducer::IsSourcePlaying;
&gt; +    }

Nit: you can prevent the failed lookup by checking for HTMLMediaElementUnknownID (or HTMLMediaElementInvalidID, or whatever you use).

&gt; Source/WebCore/page/MediaProducer.h:43
&gt; +#if ENABLE(MEDIA_SESSION)
&gt; +        IsSourcePlaying = 1 &lt;&lt; 6,
&gt; +#endif

I don&apos;t think you need to #if this flag.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:5947
&gt; +    if (focusManager-&gt;focusedMediaElementPage() == this &amp;&amp; focusManager-&gt;focusedMediaElementID() == sourceElementID)
&gt; +        focusManager-&gt;setFocusedMediaElementIsPlaying(state &amp; MediaProducer::IsSourcePlaying);

This seems like the wrong place for this logic. Why not pass the element ID into the focus manager so you can keep all of the focus logic there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115056</commentid>
    <comment_count>4</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-08-05 11:02:57 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 258277 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=258277&amp;action=review
&gt; 
&gt; This looks good modulo my minor comments, but I am now a WK2 reviewer so
&gt; someone else will have to give the official r+.
&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:344
&gt; &gt; +#if ENABLE(MEDIA_SESSION)
&gt; &gt; +    document()-&gt;updateIsPlayingMedia(HTMLMediaElementUnknownID);
&gt; &gt; +#else
&gt; &gt; +    document()-&gt;updateIsPlayingMedia(0);
&gt; &gt; +#endif
&gt; 
&gt; Nit: if you don&apos;t guard HTMLMediaElementUnknownID with
&gt; &quot;ENABLE(MEDIA_SESSION)&quot; you won&apos;t need the #if here.

Removed it to simplify subsequent code (1).

&gt; 
&gt; Also, the name &quot;HTMLMediaElementUnknownID&quot; is not quite correct because it
&gt; isn&apos;t an HTMLMediaElement at all. Maybe HTMLMediaElementInvalidID?

Renamed.

&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:1085
&gt; &gt; +#if ENABLE(MEDIA_SESSION)
&gt; &gt; +            strongThis-&gt;document()-&gt;updateIsPlayingMedia(HTMLMediaElementUnknownID);
&gt; &gt; +#else
&gt; &gt; +            strongThis-&gt;document()-&gt;updateIsPlayingMedia(0);
&gt; &gt; +#endif
&gt; 
&gt; Ditto.

Simplified this after fixing (1).

&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:3505
&gt; &gt; +#if ENABLE(MEDIA_SESSION)
&gt; &gt; +    updateIsPlayingMedia(HTMLMediaElementUnknownID);
&gt; &gt; +#else
&gt; &gt; +    updateIsPlayingMedia(0);
&gt; &gt; +#endif
&gt; 
&gt; Ditto.

Simplified this after fixing (1).

&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:3516
&gt; &gt; +#if ENABLE(MEDIA_SESSION)
&gt; &gt; +    updateIsPlayingMedia(HTMLMediaElementUnknownID);
&gt; &gt; +#else
&gt; &gt; +    updateIsPlayingMedia(0);
&gt; &gt; +#endif
&gt; 
&gt; Ditto.

Simplified this after fixing (1).

&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:3529
&gt; &gt; +    if (HTMLMediaElement* sourceElement = HTMLMediaElement::elementWithID(sourceElementID)) {
&gt; &gt; +        if (sourceElement-&gt;isPlaying())
&gt; &gt; +            state |= MediaProducer::IsSourcePlaying;
&gt; &gt; +    }
&gt; 
&gt; Nit: you can prevent the failed lookup by checking for
&gt; HTMLMediaElementUnknownID (or HTMLMediaElementInvalidID, or whatever you
&gt; use).

I prefer just checking if the pointer is null (even if it&apos;s logically equivalent to checking for an invalid ID). Feels safer.

&gt; 
&gt; &gt; Source/WebCore/page/MediaProducer.h:43
&gt; &gt; +#if ENABLE(MEDIA_SESSION)
&gt; &gt; +        IsSourcePlaying = 1 &lt;&lt; 6,
&gt; &gt; +#endif
&gt; 
&gt; I don&apos;t think you need to #if this flag.

Removed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:5947
&gt; &gt; +    if (focusManager-&gt;focusedMediaElementPage() == this &amp;&amp; focusManager-&gt;focusedMediaElementID() == sourceElementID)
&gt; &gt; +        focusManager-&gt;setFocusedMediaElementIsPlaying(state &amp; MediaProducer::IsSourcePlaying);
&gt; 
&gt; This seems like the wrong place for this logic. Why not pass the element ID
&gt; into the focus manager so you can keep all of the focus logic there.

Refactored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115083</commentid>
    <comment_count>5</comment_count>
      <attachid>258291</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-08-05 12:03:05 -0700</bug_when>
    <thetext>Created attachment 258291
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115175</commentid>
    <comment_count>6</comment_count>
      <attachid>258291</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-08-05 16:34:41 -0700</bug_when>
    <thetext>Comment on attachment 258291
Patch

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

&gt; Source/WebCore/dom/Document.h:1263
&gt; +    WEBCORE_EXPORT void updateIsPlayingMedia(uint64_t);

How does this work if more than one media element is playing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115177</commentid>
    <comment_count>7</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-08-05 16:42:26 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 258291 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=258291&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:1263
&gt; &gt; +    WEBCORE_EXPORT void updateIsPlayingMedia(uint64_t);
&gt; 
&gt; How does this work if more than one media element is playing?

Every time any media element changes its &apos;playing&apos; state, that information propagates to the UI process. The UI process keeps track of the currently focused media element belonging to a &quot;Content&quot; Media Session (there can only be one at a time). If the element IDs match, we can cache the &apos;playing&apos; state as the focused media element&apos;s playing state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115194</commentid>
    <comment_count>8</comment_count>
      <attachid>258291</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-08-05 17:07:45 -0700</bug_when>
    <thetext>Comment on attachment 258291
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/Document.h:1263
&gt;&gt;&gt; +    WEBCORE_EXPORT void updateIsPlayingMedia(uint64_t);
&gt;&gt; 
&gt;&gt; How does this work if more than one media element is playing?
&gt; 
&gt; Every time any media element changes its &apos;playing&apos; state, that information propagates to the UI process. The UI process keeps track of the currently focused media element belonging to a &quot;Content&quot; Media Session (there can only be one at a time). If the element IDs match, we can cache the &apos;playing&apos; state as the focused media element&apos;s playing state.

Please make a typedef for this uint64_t (MediaElementID or whatever), and convert the current code to use it. You can do this in a separate patch.

Give this a default argument, so you don&apos;t have to specify HTMLMediaElementInvalidID everywhere.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3177
&gt; +#if ENABLE(MEDIA_SESSION)
&gt; +        document().updateIsPlayingMedia(m_elementID);
&gt; +#else
&gt; +        document().updateIsPlayingMedia(0);
&gt; +#endif

This #ifdef is confusing. Why can&apos;t you always pass m_elementID?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4545
&gt; +#if ENABLE(MEDIA_SESSION)
&gt; +    document().updateIsPlayingMedia(m_elementID);
&gt; +#else
&gt; +    document().updateIsPlayingMedia(0);
&gt; +#endif

Ditto.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4810
&gt; +#if ENABLE(MEDIA_SESSION)
&gt; +    document().updateIsPlayingMedia(m_elementID);
&gt; +#else
&gt; +    document().updateIsPlayingMedia(0);
&gt; +#endif

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115204</commentid>
    <comment_count>9</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-08-05 17:57:39 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 258291 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=258291&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/dom/Document.h:1263
&gt; &gt;&gt;&gt; +    WEBCORE_EXPORT void updateIsPlayingMedia(uint64_t);
&gt; &gt;&gt; 
&gt; &gt;&gt; How does this work if more than one media element is playing?
&gt; &gt; 
&gt; &gt; Every time any media element changes its &apos;playing&apos; state, that information propagates to the UI process. The UI process keeps track of the currently focused media element belonging to a &quot;Content&quot; Media Session (there can only be one at a time). If the element IDs match, we can cache the &apos;playing&apos; state as the focused media element&apos;s playing state.
&gt; 
&gt; Please make a typedef for this uint64_t (MediaElementID or whatever), and
&gt; convert the current code to use it. You can do this in a separate patch.

Filed Bug 147709.

&gt; 
&gt; Give this a default argument, so you don&apos;t have to specify
&gt; HTMLMediaElementInvalidID everywhere.

Done.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:3177
&gt; &gt; +#if ENABLE(MEDIA_SESSION)
&gt; &gt; +        document().updateIsPlayingMedia(m_elementID);
&gt; &gt; +#else
&gt; &gt; +        document().updateIsPlayingMedia(0);
&gt; &gt; +#endif
&gt; 
&gt; This #ifdef is confusing. Why can&apos;t you always pass m_elementID?

Element IDs are only assigned under the Media Session feature flag. With the default argument added, though, the confusing 0 argument is now gone.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:4545
&gt; &gt; +#if ENABLE(MEDIA_SESSION)
&gt; &gt; +    document().updateIsPlayingMedia(m_elementID);
&gt; &gt; +#else
&gt; &gt; +    document().updateIsPlayingMedia(0);
&gt; &gt; +#endif
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:4810
&gt; &gt; +#if ENABLE(MEDIA_SESSION)
&gt; &gt; +    document().updateIsPlayingMedia(m_elementID);
&gt; &gt; +#else
&gt; &gt; +    document().updateIsPlayingMedia(0);
&gt; &gt; +#endif
&gt; 
&gt; Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115303</commentid>
    <comment_count>10</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-08-06 00:16:30 -0700</bug_when>
    <thetext>Committed r188030: &lt;http://trac.webkit.org/changeset/188030&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115328</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-08-06 04:42:34 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Committed r188030: &lt;http://trac.webkit.org/changeset/188030&gt;

It broke the WinCairo build:

WebCore.lib(DOMAllInOne.cpp.obj) : error LNK2001: unresolved external symbol &quot;unsigned __int64 const WebCore::HTMLMediaElementInvalidID&quot; (?HTMLMediaElementInvalidID@WebCore@@3_KB)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115352</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-08-06 09:37:17 -0700</bug_when>
    <thetext>HTMLMediaElementInvalidID is defined inside of ENABLE(VIDEO) in HTMLMediaElement.cpp and used in Document.h outside of ENABLE(VIDEO).
Fixed build in http://trac.webkit.org/changeset/188041</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115356</commentid>
    <comment_count>13</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-08-06 09:48:21 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; HTMLMediaElementInvalidID is defined inside of ENABLE(VIDEO) in
&gt; HTMLMediaElement.cpp and used in Document.h outside of ENABLE(VIDEO).
&gt; Fixed build in http://trac.webkit.org/changeset/188041

Thanks, I guess we have VIDEO enabled on all our build bots.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258269</attachid>
            <date>2015-08-05 00:19:59 -0700</date>
            <delta_ts>2015-08-05 00:27:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147633-20150805001951.patch</filename>
            <type>text/plain</type>
            <size>23904</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNiM2RmZmExN2EzNzYw
NGEyNmE5ZDVkMzViMzQ4MmU1YjgwYTU3MS4uYTBjOTlkMzhlM2U2ZGFlYzcyZTE1MTIxMWY5MGI3
ZmExNDMxOGVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA4LTA0ICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYSBTZXNzaW9uOiBwdXNo
IHBhdXNlZCBzdGF0ZSB0byB0aGUgbWVkaWEgc2Vzc2lvbiBmb2N1cyBtYW5hZ2VyIGluc3RlYWQg
b2YgcG9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3NjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OnN0b3ApOiBTaW5jZSBhIG1lZGlhIGVsZW1lbnQgZGlkIG5vdCB0cmln
Z2VyIHRoaXMsIHBhc3MgaW4gJ3Vua25vd24gSUQnIGZvciB0aGUgc291cmNlCisgICAgICAgICBt
ZWRpYSBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojppc1BsYXlpbmdB
dWRpb0RpZENoYW5nZSk6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkQXVkaW9Qcm9kdWNlcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUF1ZGlvUHJvZHVjZXIpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdNZWRpYSk6IElmIGEgdmFsaWQg
c291cmNlIGVsZW1lbnQgSUQgaXMgcGFzc2VkIGluLCBzZXQgdGhlICdJc1NvdXJjZVBsYXlpbmcn
CisgICAgICAgICBmbGFnIGFjY29yZGluZ2x5LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjplbGVtZW50V2l0aElEKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnNldE11dGVkKTogUGFzcyBhbG9uZyB0aGUgZWxlbWVudCBJRC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWND
aGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQ
bGF5aW5nKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL01lZGlhUHJvZHVjZXIu
aDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBk
YXRlSXNQbGF5aW5nTWVkaWEpOiBQYXNzIGFsb25nIHRoZSBzb3VyY2UgZWxlbWVudCBJRC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzTWVkaWFFbGVtZW50UGF1c2VkKTogRGVsZXRlZC4gV2Ug
bm93IHB1c2ggbWVkaWEgcGxheWJhY2sgc3RhdGUgY2hhbmdlcyBpbnN0ZWFkIG9mIHBvbGxpbmcu
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisKIDIwMTUtMDgtMDQgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYW4gdW51c2VkIERhdGFiYXNl
IGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTc4MzQxMTcwYzQ4ODM0ZmY2ZmYzZTA3Y2QyZDgyZGNl
MzMxMGI3NC4uOWI0MjA4MTMzMTJhMGMwMWM5YmQ4MWRlNDk4NjFiOGUzMTgyOGQyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDE1LTA4LTA0ICBNYXR0IFJhamNhICA8bXJhamNhQGFw
cGxlLmNvbT4KIAorICAgICAgICBNZWRpYSBTZXNzaW9uOiBwdXNoIHBhdXNlZCBzdGF0ZSB0byB0
aGUgbWVkaWEgc2Vzc2lvbiBmb2N1cyBtYW5hZ2VyIGluc3RlYWQgb2YgcG9sbGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NjMzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyOjppc0ZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50UGF1c2VkKTog
UmVwb3J0IHdoZXRoZXIgdGhlIGZvY3VzZWQgbWVkaWEKKyAgICAgICAgIGVsZW1lbnQgaXMgY3Vy
cmVudGx5IHBsYXlpbmcuIFRoZSBjYWxsYmFjayBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IGFuZCB3
aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcGF0Y2ggaW4KKyAgICAgICAgIGZhdm9yIG9mIHJl
dHVybmluZyBhIHZhbHVlIGRpcmVjdGx5LgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXI6OnNldEZvY3VzZWRNZWRpYUVsZW1lbnRJc1BsYXlpbmcpOiBLZWVwIHRy
YWNrIG9mIHdoZXRoZXIgdGhlIGZvY3VzZWQgbWVkaWEKKyAgICAgICAgIGVsZW1lbnQgaXMgY3Vy
cmVudGx5IHBsYXlpbmcuCisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlcjo6Zm9jdXNlZE1lZGlhRWxlbWVudFBhZ2UpOiBBZGRlZCBnZXR0ZXIuCisgICAgICAgIChX
ZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6Zm9jdXNlZE1lZGlhRWxlbWVudElE
KTogQWRkZWQgZ2V0dGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZSk6IElmIHRo
ZSBmb2N1c2VkIG1lZGlhIGVsZW1lbnQgYmVnaW5zL2VuZHMgcGxheWluZywga2VlcCB0cmFjawor
ICAgICAgICAgb2YgaXRzIHBsYXlpbmcgc3RhdGUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aXNNZWRpYUVsZW1lbnRQYXVzZWQpOiBEZWxldGVkLiBXZSBub3cgcHVzaCBtZWRpYSBw
bGF5YmFjayBzdGF0ZSBjaGFuZ2VzIGluc3RlYWQgb2YKKyAgICAgICAgIHBvbGxpbmcuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBpc1BsYXlpbmdNZWRpYURpZENoYW5nZSBp
cyBub3cgcGFzc2VkIHRoZSBJRCBvZiB0aGUgbWVkaWEgZWxlbWVudCB0aGF0IHRyaWdnZXJlZAor
ICAgICAgICAgdGhlICdwbGF5aW5nJyBzdGF0ZSBjaGFuZ2UuIFRoaXMgY2FuIGJlIHVzZWQgaW4g
Y29uanVuY3Rpb24gd2l0aCB0aGUgSXNTb3VyY2VQbGF5aW5nIG1lZGlhIGZsYWcgdG8gaWRlbnRp
ZnkKKyAgICAgICAgIHdoZXRoZXIgdGhlIHNvdXJjZSBlbGVtZW50IGJlZ2luL2VuZGVkIHBsYXlp
bmcuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogRGl0dG8u
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjpzZXRQbHVnaW5Jc1BsYXlpbmdBdWRpbyk6IFNpbmNlIGEgbWVk
aWEgZWxlbWVudCBkaWQgbm90IHRyaWdnZXIgdGhpcywgcGFzcyBpbiAwIGZvciB0aGUKKyAgICAg
ICAgIHNvdXJjZSBtZWRpYSBlbGVtZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZSk6IGlzUGxheWluZ01lZGlhRGlkQ2hhbmdlIGlz
IG5vdyBwYXNzZWQgdGhlIElEIG9mIHRoZSBtZWRpYQorICAgICAgICAgZWxlbWVudCB0aGF0IHRy
aWdnZXJlZCB0aGUgJ3BsYXlpbmcnIHN0YXRlIGNoYW5nZS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omlz
TWVkaWFFbGVtZW50UGF1c2VkKTogRGVsZXRlZC4gV2Ugbm93IHB1c2ggbWVkaWEgcGxheWJhY2sg
c3RhdGUgY2hhbmdlcyBpbnN0ZWFkIG9mIHBvbGxpbmcuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW46IERpdHRvLgorCisyMDE1LTA4LTA0ICBNYXR0IFJhamNhICA8bXJh
amNhQGFwcGxlLmNvbT4KKwogICAgICAgICBNZWRpYSBTZXNzaW9uOiBhZGQgYSBmb2N1cyBtYW5h
Z2VyIHRoYXQgV2ViS2l0IGNsaWVudHMgY2FuIHVzZSB0byBhY2Nlc3MgdGhlIGZvY3VzZWQgbWVk
aWEgZWxlbWVudAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3NjI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAppbmRleCAyZmM2Mzg5YjVmZDM1Mjc2ZDAyZTFlY2VkN2IwZTllZmNiYjZlZWU2
Li42ZGE1MDY2Njg1NzBjOGE2OGMyYzRiMmMwZGVhZTI2MWQyYjcyNDAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0zMzcsNyAr
MzM3LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN0b3AoKQogICAgICAgICByZXR1cm47CiAgICAg
bV9pc1N0b3BTY2hlZHVsZWQgPSB0cnVlOwogCi0gICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5
aW5nTWVkaWEoKTsKKyAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYShIVE1MTWVk
aWFFbGVtZW50VW5rbm93bklEKTsKIAogICAgIG1fZXZlbnRRdWV1ZS0+Y2xvc2UoKTsKIApAQCAt
MTA3NCw3ICsxMDc0LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hh
bmdlKCkKICAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIGNh
bGxPbk1haW5UaHJlYWQoW3N0cm9uZ1RoaXNdIHsKICAgICAgICAgaWYgKHN0cm9uZ1RoaXMtPmRv
Y3VtZW50KCkpCi0gICAgICAgICAgICBzdHJvbmdUaGlzLT5kb2N1bWVudCgpLT51cGRhdGVJc1Bs
YXlpbmdNZWRpYSgpOworICAgICAgICAgICAgc3Ryb25nVGhpcy0+ZG9jdW1lbnQoKS0+dXBkYXRl
SXNQbGF5aW5nTWVkaWEoSFRNTE1lZGlhRWxlbWVudFVua25vd25JRCk7CiAgICAgfSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGUyNThlYjFkNzM2N2ZiMmY3YjlkMGE0Y2IyNWI3
YzNhYjZmNzU1ZWIuLjdhNTIyZTcyMTY1MGJjOTU3N2JmM2IxYzhkNmIyYWQwYmFhZTA3ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzQ5NywyOCArMzQ5NywzMyBAQCB2b2lkIERvY3Vt
ZW50Ojp1cGRhdGVWaWV3cG9ydFVuaXRzT25SZXNpemUoKQogdm9pZCBEb2N1bWVudDo6YWRkQXVk
aW9Qcm9kdWNlcihNZWRpYVByb2R1Y2VyKiBhdWRpb1Byb2R1Y2VyKQogewogICAgIG1fYXVkaW9Q
cm9kdWNlcnMuYWRkKGF1ZGlvUHJvZHVjZXIpOwotICAgIHVwZGF0ZUlzUGxheWluZ01lZGlhKCk7
CisgICAgdXBkYXRlSXNQbGF5aW5nTWVkaWEoSFRNTE1lZGlhRWxlbWVudFVua25vd25JRCk7CiB9
CiAKIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZUF1ZGlvUHJvZHVjZXIoTWVkaWFQcm9kdWNlciogYXVk
aW9Qcm9kdWNlcikKIHsKICAgICBtX2F1ZGlvUHJvZHVjZXJzLnJlbW92ZShhdWRpb1Byb2R1Y2Vy
KTsKLSAgICB1cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIHVwZGF0ZUlzUGxheWluZ01lZGlh
KEhUTUxNZWRpYUVsZW1lbnRVbmtub3duSUQpOwogfQogCi12b2lkIERvY3VtZW50Ojp1cGRhdGVJ
c1BsYXlpbmdNZWRpYSgpCit2b2lkIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdNZWRpYSh1aW50
NjRfdCBzb3VyY2VFbGVtZW50SUQpCiB7CiAgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZs
YWdzIHN0YXRlID0gTWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nOwogICAgIGZvciAoYXV0byBh
dWRpb1Byb2R1Y2VyIDogbV9hdWRpb1Byb2R1Y2VycykKICAgICAgICAgc3RhdGUgfD0gYXVkaW9Q
cm9kdWNlci0+bWVkaWFTdGF0ZSgpOwogCisgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIHNvdXJj
ZUVsZW1lbnQgPSBIVE1MTWVkaWFFbGVtZW50OjplbGVtZW50V2l0aElEKHNvdXJjZUVsZW1lbnRJ
RCkpIHsKKyAgICAgICAgaWYgKHNvdXJjZUVsZW1lbnQtPmlzUGxheWluZygpKQorICAgICAgICAg
ICAgc3RhdGUgfD0gTWVkaWFQcm9kdWNlcjo6SXNTb3VyY2VQbGF5aW5nOworICAgIH0KKwogICAg
IGlmIChzdGF0ZSA9PSBtX21lZGlhU3RhdGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbWVk
aWFTdGF0ZSA9IHN0YXRlOwogCiAgICAgaWYgKHBhZ2UoKSkKLSAgICAgICAgcGFnZSgpLT51cGRh
dGVJc1BsYXlpbmdNZWRpYSgpOworICAgICAgICBwYWdlKCktPnVwZGF0ZUlzUGxheWluZ01lZGlh
KHNvdXJjZUVsZW1lbnRJRCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnBhZ2VNdXRlZFN0YXRlRGlk
Q2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZTkzOGEzOTAyMGI1OTBiZWU2NjE5Zjhm
NGI1NmZhOWRiMTRjNzg4NS4uNTZkYzY2NWFiMmEwNWI5MzdlMzY5MzU2ODFjNjA0ZDljMGFmNzAx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyNjAsNyArMTI2MCw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEF1ZGlvUHJvZHVjZXIoTWVkaWFQcm9kdWNlciopOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQXVkaW9Qcm9kdWNlcihNZWRpYVByb2R1Y2Vy
Kik7CiAgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX21lZGlhU3RhdGU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0
ZUlzUGxheWluZ01lZGlhKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVJc1BsYXlp
bmdNZWRpYSh1aW50NjRfdCk7CiAgICAgdm9pZCBwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpOwog
ICAgIFdlYWtQdHI8RG9jdW1lbnQ+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtGYWN0
b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAppbmRleCA3MDgyMGVlMzNmMGRmYTkzZjdhM2FiYjBlZWJhYTBkZWQyYTM1OTA2Li5l
NTAzZjBkNTIwMTA4YjBhYjlhYTYwNTIwNTVjM2ZjMjU4ZDQ2YmUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTIwMiw2ICsyMDIsMTAgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIG1lZGlhU291cmNlQmxvYlByb3RvY29sID0gImJsb2IiOwogc3RhdGljIGNvbnN0
IGNoYXIqIG1lZGlhU3RyZWFtQmxvYlByb3RvY29sID0gImJsb2IiOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKK2NvbnN0IHVpbnQ2NF90IEhUTUxNZWRpYUVsZW1lbnRVbmtu
b3duSUQgPSAwOworI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHR5cGVk
ZWYgSGFzaE1hcDxEb2N1bWVudCosIEhhc2hTZXQ8SFRNTE1lZGlhRWxlbWVudCo+PiBEb2N1bWVu
dEVsZW1lbnRTZXRNYXA7CkBAIC0yOTksNiArMzAzLDkgQEAgc3RhdGljIElEVG9FbGVtZW50TWFw
JiBlbGVtZW50SURzVG9FbGVtZW50cygpCiAKIEhUTUxNZWRpYUVsZW1lbnQqIEhUTUxNZWRpYUVs
ZW1lbnQ6OmVsZW1lbnRXaXRoSUQodWludDY0X3QgaWQpCiB7CisgICAgaWYgKGlkID09IEhUTUxN
ZWRpYUVsZW1lbnRVbmtub3duSUQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAogICAg
IHJldHVybiBlbGVtZW50SURzVG9FbGVtZW50cygpLmdldChpZCk7CiB9CiAKQEAgLTMxNjQsNyAr
MzE3MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMo
KS52b2x1bWVjaGFuZ2VFdmVudCk7Ci0gICAgICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5n
TWVkaWEoKTsKKyAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYShtX2VsZW1l
bnRJRCk7CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgICAgICB1
cGRhdGVNZWRpYVN0YXRlKFVwZGF0ZU1lZGlhU3RhdGU6OkFzeW5jaHJvbm91c2x5KTsKQEAgLTQ1
MjgsNyArNDUzNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDaGFyYWN0
ZXJpc3RpY0NoYW5nZWQoTWVkaWFQbGF5ZXIqKQogICAgIGlmIChpc1BsYXlpbmcoKSAmJiAhbV9t
ZWRpYVNlc3Npb24tPnBsYXliYWNrUGVybWl0dGVkKCp0aGlzKSkKICAgICAgICAgcGF1c2VJbnRl
cm5hbCgpOwogCi0gICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIGRv
Y3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEobV9lbGVtZW50SUQpOwogCiAgICAgZW5kUHJv
Y2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KQEAgLTQ3ODgsNyArNDc5NSw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWluZyhib29sIHBsYXlpbmcpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fcGxheWluZyA9IHBsYXlpbmc7Ci0gICAgZG9jdW1lbnQoKS51cGRhdGVJ
c1BsYXlpbmdNZWRpYSgpOworICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEobV9l
bGVtZW50SUQpOwogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB1
cGRhdGVNZWRpYVN0YXRlKFVwZGF0ZU1lZGlhU3RhdGU6OkFzeW5jaHJvbm91c2x5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNjE3MzdjNGRiMDM1MTg1OTU5MWYz
NGMwY2VkN2E4NGViN2YyNjYyMC4uZTgyOGQzMmZlMGQyOTMyNzg5NWI4ZWIxMGNiMTE3NDM1ZWRk
ZTRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTk4LDYgKzk4
LDEwIEBAIHR5cGVkZWYgVmVjdG9yPEN1ZUludGVydmFsPiBDdWVMaXN0OwogY2xhc3MgTWVkaWFT
dHJlYW07CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQorZXh0ZXJuIGNvbnN0
IHVpbnQ2NF90IEhUTUxNZWRpYUVsZW1lbnRVbmtub3duSUQ7CisjZW5kaWYKKwogY2xhc3MgSFRN
TE1lZGlhRWxlbWVudAogICAgIDogcHVibGljIEhUTUxFbGVtZW50CiAgICAgLCBwcml2YXRlIE1l
ZGlhUGxheWVyQ2xpZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQsIHBy
aXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJs
aWMgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlICwgcHVibGljIFBsYXRmb3JtTWVkaWFTZXNzaW9u
Q2xpZW50LCBwcml2YXRlIE1lZGlhUHJvZHVjZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CmluZGV4IGY1YWRhMjZkNWMyN2I4OGRlNTNhNjlkMmZhMDEwZjJlODY1OGI0YjYuLmEwYTEzM2M2
MDM3YTUxZGJiYjMwZGEwZmVlMGU5NjA4ZWFhYjcwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaApAQCAtNDIwLDcgKzQyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3KikgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdNZWRpYURpZENo
YW5nZShNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBpc1BsYXlpbmdNZWRpYURpZENoYW5nZShNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Ms
IHVpbnQ2NF90KSB7IH0KIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogICAgIHZpcnR1YWwg
dm9pZCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENoYW5nZShib29s
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFQcm9kdWNlci5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVByb2R1Y2VyLmgKaW5kZXggYWQ0MzE5NDUxNTIyYjNl
MTZmZTNmYzQwYWYyOTZlOWUwZDU4ZjRjZi4uMzUzMzA2NWE2YmI1ZjFlZmE4MWJjNjE2NGYwYzA4
NzVmMWZlOWM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVByb2R1Y2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVByb2R1Y2VyLmgKQEAgLTM4LDYgKzM4
LDcgQEAgcHVibGljOgogICAgICAgICBSZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZyA9
IDEgPDwgMywKICAgICAgICAgRXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNhbmRpZGF0ZSA9IDEgPDwg
NCwKICAgICAgICAgRGlkUGxheVRvRW5kID0gMSA8PCA1LAorICAgICAgICBJc1NvdXJjZVBsYXlp
bmcgPSAxIDw8IDYsCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIE1lZGlhU3RhdGVGbGFn
czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOGVhOTY5ZDQ1OGQ5ODE0ZmFkYTliNmI2OTY2ZWEy
NDU0N2EwODFlNy4uOWQyZDI2NjJmZTgyODAwOGI1ODIzYzcwZGI5ZGNjYjUxOTM2ZjFjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMTgzLDcgKzExODMsNyBAQCB2b2lkIFBhZ2U6OmVuYWJsZUxl
Z2FjeVByaXZhdGVCcm93c2luZyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAgICAgc2V0
U2Vzc2lvbklEKHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPyBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0KIAotdm9p
ZCBQYWdlOjp1cGRhdGVJc1BsYXlpbmdNZWRpYSgpCit2b2lkIFBhZ2U6OnVwZGF0ZUlzUGxheWlu
Z01lZGlhKHVpbnQ2NF90IHNvdXJjZUVsZW1lbnRJRCkKIHsKICAgICBNZWRpYVByb2R1Y2VyOjpN
ZWRpYVN0YXRlRmxhZ3Mgc3RhdGUgPSBNZWRpYVByb2R1Y2VyOjpJc05vdFBsYXlpbmc7CiAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKQEAgLTExOTUsNyArMTE5NSw3IEBAIHZvaWQgUGFnZTo6
dXBkYXRlSXNQbGF5aW5nTWVkaWEoKQogCiAgICAgbV9tZWRpYVN0YXRlID0gc3RhdGU7CiAKLSAg
ICBjaHJvbWUoKS5jbGllbnQoKS5pc1BsYXlpbmdNZWRpYURpZENoYW5nZShzdGF0ZSk7CisgICAg
Y2hyb21lKCkuY2xpZW50KCkuaXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2Uoc3RhdGUsIHNvdXJjZUVs
ZW1lbnRJRCk7CiB9CiAKIHZvaWQgUGFnZTo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKQEAgLTEyMjQs
MTUgKzEyMjQsNiBAQCB2b2lkIFBhZ2U6OmhhbmRsZU1lZGlhRXZlbnQoTWVkaWFFdmVudFR5cGUg
ZXZlbnRUeXBlKQogICAgICAgICBicmVhazsKICAgICB9CiB9Ci0KLWJvb2wgUGFnZTo6aXNNZWRp
YUVsZW1lbnRQYXVzZWQodWludDY0X3QgZWxlbWVudElEKQotewotICAgIGlmIChIVE1MTWVkaWFF
bGVtZW50KiBlbGVtZW50ID0gSFRNTE1lZGlhRWxlbWVudDo6ZWxlbWVudFdpdGhJRChlbGVtZW50
SUQpKQotICAgICAgICByZXR1cm4gZWxlbWVudC0+cGF1c2VkKCk7Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KICNlbmRpZgogCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAxODhlYjRkMjdjMGQ0ODgwODE5MjQxYWQwOGUyZmY0
NGU1OTBlYjExLi4yMzJkNDZjN2ZiZTllZDg3YzdiMTk1YzFkNGM2ZjFiZTk5ZDc2NmM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaApAQCAtNDM2LDEzICs0MzYsMTIgQEAgcHVibGljOgogICAgIGJvb2wgdXNlc0Vw
aGVtZXJhbFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgp
OyB9CiAKICAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbWVkaWFTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWVkaWFTdGF0ZTsgfQotICAgIHZvaWQgdXBkYXRlSXNQbGF5aW5nTWVk
aWEoKTsKKyAgICB2b2lkIHVwZGF0ZUlzUGxheWluZ01lZGlhKHVpbnQ2NF90KTsKICAgICBib29s
IGlzTXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRNdXRlZChib29sKTsKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlwZSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc01lZGlhRWxlbWVudFBhdXNlZCh1aW50NjRfdCk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3Bw
CmluZGV4IGRlZWRjM2M0N2FlNjkxMWUxYTNmMTVhOGRlN2M5ZDYzNDBkMmRjNTIuLjVlMGRiODIz
ODEyZDkzMWY3YzFkMDEwOTVjNzM4MWViODczZjE1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCkBAIC02
MiwxMCArNjIsMjggQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmlzRm9jdXNl
ZENvbnRlbnRNZWRpYUVsZW1lbnRQYXVzZWQoc3RkOjpmdW5jdGkKICAgICBpZiAoIW1fZm9jdXNl
ZE1lZGlhRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFVuc2lnbmVkQ2Fs
bGJhY2s+IGNhbGxiYWNrID0gVW5zaWduZWRDYWxsYmFjazo6Y3JlYXRlKGNhbGxiYWNrRnVuY3Rp
b24pOwotICAgIFdlYlBhZ2VQcm94eSogcHJveHkgPSBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQtPmZp
cnN0OwotICAgIHVpbnQ2NF90IGVsZW1lbnRJRCA9IG1fZm9jdXNlZE1lZGlhRWxlbWVudC0+c2Vj
b25kOwotICAgIHByb3h5LT5pc01lZGlhRWxlbWVudFBhdXNlZChlbGVtZW50SUQsIGNhbGxiYWNr
KTsKKyAgICBjYWxsYmFja0Z1bmN0aW9uKCFtX2ZvY3VzZWRNZWRpYUVsZW1lbnRJc1BsYXlpbmcs
IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudElzUGxheWluZyhib29sIGlzUGxheWlu
ZykKK3sKKyAgICBtX2ZvY3VzZWRNZWRpYUVsZW1lbnRJc1BsYXlpbmcgPSBpc1BsYXlpbmc7Cit9
CisKK1dlYlBhZ2VQcm94eSogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpmb2N1c2VkTWVk
aWFFbGVtZW50UGFnZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZvY3VzZWRNZWRpYUVsZW1lbnQp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG1fZm9jdXNlZE1lZGlhRWxl
bWVudC0+Zmlyc3Q7Cit9CisKK3VpbnQ2NF90IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6
Zm9jdXNlZE1lZGlhRWxlbWVudElEKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZm9jdXNlZE1lZGlh
RWxlbWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV9mb2N1c2VkTWVkaWFF
bGVtZW50LT5zZWNvbmQ7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpz
ZXRGb2N1c2VkTWVkaWFFbGVtZW50KFdlYlBhZ2VQcm94eSYgcHJveHksIHVpbnQ2NF90IGVsZW1l
bnRJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIuaAppbmRleCA1YzIwMWIzZTJhNjI5YWU4ZTkyNTdhOGRkNTM4ZDYzMDJk
ZjAxMmVhLi5kMjJkNjhlZTJjZjcwYTFiZGRhMDI0NjE2MjY3ZjRkZTgyYjk2NjY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5oCkBAIC00NCwxMCArNDQsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CiAK
ICAgICB2b2lkIGlzRm9jdXNlZENvbnRlbnRNZWRpYUVsZW1lbnRQYXVzZWQoc3RkOjpmdW5jdGlv
bjx2b2lkKGJvb2wsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAgdm9pZCBzZXRGb2N1c2Vk
TWVkaWFFbGVtZW50SXNQbGF5aW5nKGJvb2wpOwogCiAgICAgdm9pZCBzZXRGb2N1c2VkTWVkaWFF
bGVtZW50KFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90KTsKICAgICB2b2lkIGNsZWFyRm9jdXNlZE1l
ZGlhRWxlbWVudCgpOwogCisgICAgV2ViUGFnZVByb3h5KiBmb2N1c2VkTWVkaWFFbGVtZW50UGFn
ZSgpIGNvbnN0OworICAgIHVpbnQ2NF90IGZvY3VzZWRNZWRpYUVsZW1lbnRJRCgpIGNvbnN0Owor
CiAgICAgdXNpbmcgQVBJOjpPYmplY3Q6OnJlZjsKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVy
ZWY7CiAKQEAgLTU5LDYgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZX
ZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZv
Y3VzZWRNZWRpYUVsZW1lbnQ+IG1fZm9jdXNlZE1lZGlhRWxlbWVudDsKKyAgICBib29sIG1fZm9j
dXNlZE1lZGlhRWxlbWVudElzUGxheWluZyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
YzgwZjdlMTg0MTM0MDdjOGU0MzlkOTM2YTBkZGYyZjQzM2QxY2JiMi4uZTJkNjQ3ZWYzMDNmZDll
OWYyMGUwMjM4OGUxMDQ0NGI0YTg1NjBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTM4ODIsMTkgKzM4ODIsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlwZSBldmVudFR5cGUpCiAgICAgCiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVNZWRpYUV2ZW50KGV2ZW50VHlw
ZSksIG1fcGFnZUlEKTsKIH0KLQotdm9pZCBXZWJQYWdlUHJveHk6OmlzTWVkaWFFbGVtZW50UGF1
c2VkKHVpbnQ2NF90IGVsZW1lbnRJRCwgUmVmUHRyPFVuc2lnbmVkQ2FsbGJhY2s+IGNhbGxiYWNr
KQotewotICAgIGlmICghaXNWYWxpZCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRl
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2NhbGxiYWNrcy5wdXQoY2FsbGJhY2spOwot
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJc01lZGlhRWxlbWVudFBh
dXNlZChlbGVtZW50SUQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Ci19CiAjZW5kaWYKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coYm9vbCBtYXlTdGFy
dE1lZGlhKQpAQCAtNTk1MCw4ICs1OTM3LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0
aW9uR2VzdHVyZVNuYXBzaG90V2FzUmVtb3ZlZCgpCiAgICAgbV9pc1Nob3dpbmdOYXZpZ2F0aW9u
R2VzdHVyZVNuYXBzaG90ID0gZmFsc2U7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojppc1BsYXlp
bmdNZWRpYURpZENoYW5nZShNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mgc3RhdGUpCit2
b2lkIFdlYlBhZ2VQcm94eTo6aXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoTWVkaWFQcm9kdWNlcjo6
TWVkaWFTdGF0ZUZsYWdzIHN0YXRlLCB1aW50NjRfdCBzb3VyY2VFbGVtZW50SUQpCiB7CisjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCisgICAgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKiBm
b2N1c01hbmFnZXIgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk1lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlcj4oKTsKKyAgICBBU1NFUlQoZm9jdXNNYW5hZ2VyKTsKKworICAg
IGlmIChmb2N1c01hbmFnZXItPmZvY3VzZWRNZWRpYUVsZW1lbnRQYWdlKCkgPT0gdGhpcyAmJiBm
b2N1c01hbmFnZXItPmZvY3VzZWRNZWRpYUVsZW1lbnRJRCgpID09IHNvdXJjZUVsZW1lbnRJRCkK
KyAgICAgICAgZm9jdXNNYW5hZ2VyLT5zZXRGb2N1c2VkTWVkaWFFbGVtZW50SXNQbGF5aW5nKHN0
YXRlICYgTWVkaWFQcm9kdWNlcjo6SXNTb3VyY2VQbGF5aW5nKTsKKyNlbmRpZgorCiAgICAgaWYg
KHN0YXRlID09IG1fbWVkaWFTdGF0ZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNTFjMWJkNmIzMGIzNDRiNmExNTU4NTUwNGUy
NDlhNGE0NTgzODgwZi4uYTlkMjljYzc2ZjY4ZjAyNTIzMjkzNjUyMmU1NzgzNjNlMDIyNjE1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtOTQzLDcgKzk0Myw2
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBib29sIGhhc01lZGlh
U2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNZWRp
YVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50czsgfQogICAgIHZvaWQgaGFuZGxlTWVkaWFF
dmVudChXZWJDb3JlOjpNZWRpYUV2ZW50VHlwZSk7Ci0gICAgdm9pZCBpc01lZGlhRWxlbWVudFBh
dXNlZCh1aW50NjRfdCwgUmVmUHRyPFVuc2lnbmVkQ2FsbGJhY2s+KTsKICNlbmRpZgogCiAgICAg
Ly8gV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudApAQCAtMTAyNSw3ICsxMDI0LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNTaG93aW5nTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNTaG93aW5nTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdDsgfQogCiAgICAgYm9v
bCBpc1BsYXlpbmdBdWRpbygpIGNvbnN0IHsgcmV0dXJuICEhKG1fbWVkaWFTdGF0ZSAmIFdlYkNv
cmU6Ok1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvKTsgfQotICAgIHZvaWQgaXNQbGF5aW5n
TWVkaWFEaWRDaGFuZ2UoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsK
KyAgICB2b2lkIGlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Ok1lZGlhU3RhdGVGbGFncywgdWludDY0X3QpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
CiAgICAgdm9pZCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENoYW5n
ZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IGVkMDdjOTNiNTEwMWMyNDUyMDYxZWUyNDM2YTllN2RjMGUxYzczNTIu
LjllODM5YjQxNjMzYTZiZjc1MGUyZTM5OTY2ZmRhNzZjNzY1ODVjMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDIyLDcg
KzQyMiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgQ29udGVudEZpbHRlckRp
ZEJsb2NrTG9hZEZvckZyYW1lKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1
bmJsb2NrSGFuZGxlciwgdWludDY0X3QgZnJhbWVJRCkKICNlbmRpZgogCi0gICAgSXNQbGF5aW5n
TWVkaWFEaWRDaGFuZ2UodW5zaWduZWQgc3RhdGUpCisgICAgSXNQbGF5aW5nTWVkaWFEaWRDaGFu
Z2UodW5zaWduZWQgc3RhdGUsIHVpbnQ2NF90IHNvdXJjZUVsZW1lbnRJRCkKIAogI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQogICAgIEhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1l
bnRzRGlkQ2hhbmdlKGJvb2wgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYmFmNTY3MWVjYTY2ZDUxZWRjNjcxODIyNDRk
MDA5YzUyYzdiNWQ1MC4uOGNiYjVhYjNkMDE0ZjNmZmEwZDAzOTU2MWI0YjgxZGNjYjczYjliMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cApAQCAtMTQ5Niw3ICsxNDk2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRQbHVnaW5Jc1BsYXlp
bmdBdWRpbyhib29sIHBsdWdpbklzUGxheWluZ0F1ZGlvKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX3BsdWdpbklzUGxheWluZ0F1ZGlvID0gcGx1Z2luSXNQbGF5aW5nQXVkaW87Ci0gICAgbV9w
bHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgbV9w
bHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKDApOwogfQogCiBi
b29sIFBsdWdpblZpZXc6OmlzTXV0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmlu
ZGV4IGVmN2ZhNTFiNzJjNzkwOGE0NGYwYjY0OTBhYTM3N2JiODk5OTE5ZDguLmQ1YTA1YWI5NWJl
YzBlNzUwNWZmYjJiNzU4OGM1MzY0ZmU4YmQ1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTEwNTcsOSArMTA1Nyw5IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzaG91bGRVc2VUaWxl
ZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3KiBmcmFtZVZpCiAgICAgcmV0dXJu
IG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2hvdWxkVXNlVGlsZWRCYWNraW5nRm9yRnJhbWVWaWV3
KGZyYW1lVmlldyk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojppc1BsYXlpbmdNZWRpYURp
ZENoYW5nZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mgc3RhdGUpCit2
b2lkIFdlYkNocm9tZUNsaWVudDo6aXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHN0YXRlLCB1aW50NjRfdCBzb3VyY2VFbGVtZW50
SUQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OklzUGxheWlu
Z01lZGlhRGlkQ2hhbmdlKHN0YXRlKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OklzUGxheWluZ01lZGlhRGlkQ2hhbmdlKHN0YXRlLCBzb3VyY2VFbGVtZW50SUQp
KTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5k
ZXggMjcwMjJkMmJhNGE4OTZiZjIyMzBlZDJlOWY5ZDMyNzI1OTM4YzJlMi4uZWMyNWQyM2UxM2Yz
NTYyMGZhZWExNjYxYzQyNTY2NTgxNmZkZTUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0y
OTEsNyArMjkxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VUaWxl
ZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgV2ViQ29yZTo6RnJhbWVWaWV3KikgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgaXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzLCB1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFBh
Z2VBY3Rpdml0eVN0YXRlKFdlYkNvcmU6OlBhZ2VBY3Rpdml0eVN0YXRlOjpGbGFncykgb3ZlcnJp
ZGU7CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBlNWRjODE5ZGU0MGM5NWM3YzZlM2QwOWI5
NWY2ZTU0MWQ2MzY0ZmZhLi42ZDIxNGZmNjRlYzc3MGIzMzRhZTgyMGMyYTBlZWVjNzU3MWZhODI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC00MDY4LDEyICs0MDY4LDYgQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVNZWRpYUV2ZW50KHVpbnQz
Ml90IGV2ZW50VHlwZSkKIHsKICAgICBtX3BhZ2UtPmhhbmRsZU1lZGlhRXZlbnQoc3RhdGljX2Nh
c3Q8TWVkaWFFdmVudFR5cGU+KGV2ZW50VHlwZSkpOwogfQotCi12b2lkIFdlYlBhZ2U6OmlzTWVk
aWFFbGVtZW50UGF1c2VkKHVpbnQ2NF90IGVsZW1lbnRJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkK
LXsKLSAgICBib29sIHBhdXNlZCA9IG1fcGFnZS0+aXNNZWRpYUVsZW1lbnRQYXVzZWQoZWxlbWVu
dElEKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2so
cGF1c2VkLCBjYWxsYmFja0lEKSk7Ci19CiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlOjpzZXRNYXlT
dGFydE1lZGlhV2hlbkluV2luZG93KGJvb2wgbWF5U3RhcnRNZWRpYSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDA2NGIxMjVmMzIwNDVhZDU3NzMw
ODgwNDJhNmJkYTUwZTAzNmUyOWEuLjVjNGM4YmUyYTdhYjA5MTdmZGM0ZGUzOTZkM2NiZjRiNTBk
OTc1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtNzUwLDcgKzc1MCw2IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQog
ICAgIHZvaWQgaGFuZGxlTWVkaWFFdmVudCh1aW50MzJfdCAvKiBXZWJDb3JlOjpNZWRpYUV2ZW50
VHlwZSAqLyk7Ci0gICAgdm9pZCBpc01lZGlhRWxlbWVudFBhdXNlZCh1aW50NjRfdCwgdWludDY0
X3QpOwogI2VuZGlmCiAKICAgICB2b2lkIHVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5p
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KaW5kZXggN2NiNzAxZDFhOTQ2ZGU3MGM1YjNjOTI3MGEzYzQzOTNkNzVm
ZjlhNC4uMDBhYjRmZDVhYzNhM2UzZjVjN2Q0NGM1OTk2YWUyMTUzZmFiZTRkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KQEAgLTMxNiw3ICszMTYsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVy
IHsKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogICAgIEhhbmRsZU1lZGlhRXZlbnQodWlu
dDMyX3QgZXZlbnRUeXBlKQotICAgIElzTWVkaWFFbGVtZW50UGF1c2VkKHVpbnQ2NF90IGVsZW1l
bnRJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IFRoaXMg
YSBkdW1teSBtZXNzYWdlLCB0byBhdm9pZCBicmVha2luZyB0aGUgYnVpbGQgZm9yIHBsYXRmb3Jt
cyB0aGF0IGRvbid0IHJlcXVpcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258277</attachid>
            <date>2015-08-05 09:24:36 -0700</date>
            <delta_ts>2015-08-05 12:03:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147633-20150805092428.patch</filename>
            <type>text/plain</type>
            <size>24572</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNiM2RmZmExN2EzNzYw
NGEyNmE5ZDVkMzViMzQ4MmU1YjgwYTU3MS4uYTBjOTlkMzhlM2U2ZGFlYzcyZTE1MTIxMWY5MGI3
ZmExNDMxOGVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA4LTA0ICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYSBTZXNzaW9uOiBwdXNo
IHBhdXNlZCBzdGF0ZSB0byB0aGUgbWVkaWEgc2Vzc2lvbiBmb2N1cyBtYW5hZ2VyIGluc3RlYWQg
b2YgcG9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3NjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OnN0b3ApOiBTaW5jZSBhIG1lZGlhIGVsZW1lbnQgZGlkIG5vdCB0cmln
Z2VyIHRoaXMsIHBhc3MgaW4gJ3Vua25vd24gSUQnIGZvciB0aGUgc291cmNlCisgICAgICAgICBt
ZWRpYSBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojppc1BsYXlpbmdB
dWRpb0RpZENoYW5nZSk6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkQXVkaW9Qcm9kdWNlcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUF1ZGlvUHJvZHVjZXIpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdNZWRpYSk6IElmIGEgdmFsaWQg
c291cmNlIGVsZW1lbnQgSUQgaXMgcGFzc2VkIGluLCBzZXQgdGhlICdJc1NvdXJjZVBsYXlpbmcn
CisgICAgICAgICBmbGFnIGFjY29yZGluZ2x5LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjplbGVtZW50V2l0aElEKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnNldE11dGVkKTogUGFzcyBhbG9uZyB0aGUgZWxlbWVudCBJRC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWND
aGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQ
bGF5aW5nKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL01lZGlhUHJvZHVjZXIu
aDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBk
YXRlSXNQbGF5aW5nTWVkaWEpOiBQYXNzIGFsb25nIHRoZSBzb3VyY2UgZWxlbWVudCBJRC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzTWVkaWFFbGVtZW50UGF1c2VkKTogRGVsZXRlZC4gV2Ug
bm93IHB1c2ggbWVkaWEgcGxheWJhY2sgc3RhdGUgY2hhbmdlcyBpbnN0ZWFkIG9mIHBvbGxpbmcu
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisKIDIwMTUtMDgtMDQgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYW4gdW51c2VkIERhdGFiYXNl
IGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTc4MzQxMTcwYzQ4ODM0ZmY2ZmYzZTA3Y2QyZDgyZGNl
MzMxMGI3NC4uOWI0MjA4MTMzMTJhMGMwMWM5YmQ4MWRlNDk4NjFiOGUzMTgyOGQyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDE1LTA4LTA0ICBNYXR0IFJhamNhICA8bXJhamNhQGFw
cGxlLmNvbT4KIAorICAgICAgICBNZWRpYSBTZXNzaW9uOiBwdXNoIHBhdXNlZCBzdGF0ZSB0byB0
aGUgbWVkaWEgc2Vzc2lvbiBmb2N1cyBtYW5hZ2VyIGluc3RlYWQgb2YgcG9sbGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NjMzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyOjppc0ZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50UGF1c2VkKTog
UmVwb3J0IHdoZXRoZXIgdGhlIGZvY3VzZWQgbWVkaWEKKyAgICAgICAgIGVsZW1lbnQgaXMgY3Vy
cmVudGx5IHBsYXlpbmcuIFRoZSBjYWxsYmFjayBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IGFuZCB3
aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcGF0Y2ggaW4KKyAgICAgICAgIGZhdm9yIG9mIHJl
dHVybmluZyBhIHZhbHVlIGRpcmVjdGx5LgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXI6OnNldEZvY3VzZWRNZWRpYUVsZW1lbnRJc1BsYXlpbmcpOiBLZWVwIHRy
YWNrIG9mIHdoZXRoZXIgdGhlIGZvY3VzZWQgbWVkaWEKKyAgICAgICAgIGVsZW1lbnQgaXMgY3Vy
cmVudGx5IHBsYXlpbmcuCisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlcjo6Zm9jdXNlZE1lZGlhRWxlbWVudFBhZ2UpOiBBZGRlZCBnZXR0ZXIuCisgICAgICAgIChX
ZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6Zm9jdXNlZE1lZGlhRWxlbWVudElE
KTogQWRkZWQgZ2V0dGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZSk6IElmIHRo
ZSBmb2N1c2VkIG1lZGlhIGVsZW1lbnQgYmVnaW5zL2VuZHMgcGxheWluZywga2VlcCB0cmFjawor
ICAgICAgICAgb2YgaXRzIHBsYXlpbmcgc3RhdGUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aXNNZWRpYUVsZW1lbnRQYXVzZWQpOiBEZWxldGVkLiBXZSBub3cgcHVzaCBtZWRpYSBw
bGF5YmFjayBzdGF0ZSBjaGFuZ2VzIGluc3RlYWQgb2YKKyAgICAgICAgIHBvbGxpbmcuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBpc1BsYXlpbmdNZWRpYURpZENoYW5nZSBp
cyBub3cgcGFzc2VkIHRoZSBJRCBvZiB0aGUgbWVkaWEgZWxlbWVudCB0aGF0IHRyaWdnZXJlZAor
ICAgICAgICAgdGhlICdwbGF5aW5nJyBzdGF0ZSBjaGFuZ2UuIFRoaXMgY2FuIGJlIHVzZWQgaW4g
Y29uanVuY3Rpb24gd2l0aCB0aGUgSXNTb3VyY2VQbGF5aW5nIG1lZGlhIGZsYWcgdG8gaWRlbnRp
ZnkKKyAgICAgICAgIHdoZXRoZXIgdGhlIHNvdXJjZSBlbGVtZW50IGJlZ2luL2VuZGVkIHBsYXlp
bmcuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogRGl0dG8u
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjpzZXRQbHVnaW5Jc1BsYXlpbmdBdWRpbyk6IFNpbmNlIGEgbWVk
aWEgZWxlbWVudCBkaWQgbm90IHRyaWdnZXIgdGhpcywgcGFzcyBpbiAwIGZvciB0aGUKKyAgICAg
ICAgIHNvdXJjZSBtZWRpYSBlbGVtZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZSk6IGlzUGxheWluZ01lZGlhRGlkQ2hhbmdlIGlz
IG5vdyBwYXNzZWQgdGhlIElEIG9mIHRoZSBtZWRpYQorICAgICAgICAgZWxlbWVudCB0aGF0IHRy
aWdnZXJlZCB0aGUgJ3BsYXlpbmcnIHN0YXRlIGNoYW5nZS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omlz
TWVkaWFFbGVtZW50UGF1c2VkKTogRGVsZXRlZC4gV2Ugbm93IHB1c2ggbWVkaWEgcGxheWJhY2sg
c3RhdGUgY2hhbmdlcyBpbnN0ZWFkIG9mIHBvbGxpbmcuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW46IERpdHRvLgorCisyMDE1LTA4LTA0ICBNYXR0IFJhamNhICA8bXJh
amNhQGFwcGxlLmNvbT4KKwogICAgICAgICBNZWRpYSBTZXNzaW9uOiBhZGQgYSBmb2N1cyBtYW5h
Z2VyIHRoYXQgV2ViS2l0IGNsaWVudHMgY2FuIHVzZSB0byBhY2Nlc3MgdGhlIGZvY3VzZWQgbWVk
aWEgZWxlbWVudAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3NjI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAppbmRleCAyZmM2Mzg5YjVmZDM1Mjc2ZDAyZTFlY2VkN2IwZTllZmNiYjZlZWU2
Li45YTEzYjJhOGVmNWVmZTBhN2VjZGQ0Njc1N2ZhMGIxMjlhMmM3YzcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0zMzcsNyAr
MzM3LDExIEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdG9wKCkKICAgICAgICAgcmV0dXJuOwogICAg
IG1faXNTdG9wU2NoZWR1bGVkID0gdHJ1ZTsKIAotICAgIGRvY3VtZW50KCktPnVwZGF0ZUlzUGxh
eWluZ01lZGlhKCk7CisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisgICAgZG9jdW1lbnQoKS0+
dXBkYXRlSXNQbGF5aW5nTWVkaWEoSFRNTE1lZGlhRWxlbWVudFVua25vd25JRCk7CisjZWxzZQor
ICAgIGRvY3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKDApOworI2VuZGlmCiAKICAgICBt
X2V2ZW50UXVldWUtPmNsb3NlKCk7CiAKQEAgLTEwNzQsNyArMTA3OCwxMSBAQCB2b2lkIEF1ZGlv
Q29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQogICAgIFJlZlB0cjxBdWRpb0NvbnRl
eHQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nVGhpc10g
ewogICAgICAgICBpZiAoc3Ryb25nVGhpcy0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIHN0cm9u
Z1RoaXMtPmRvY3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisjaWYgRU5BQkxFKE1F
RElBX1NFU1NJT04pCisgICAgICAgICAgICBzdHJvbmdUaGlzLT5kb2N1bWVudCgpLT51cGRhdGVJ
c1BsYXlpbmdNZWRpYShIVE1MTWVkaWFFbGVtZW50VW5rbm93bklEKTsKKyNlbHNlCisgICAgICAg
ICAgICBzdHJvbmdUaGlzLT5kb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgwKTsKKyNl
bmRpZgogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlMjU4ZWIxZDcz
NjdmYjJmN2I5ZDBhNGNiMjViN2MzYWI2Zjc1NWViLi43ZTQxNDM4YTJiY2U4YWM4OGJkYWY0MTdi
ZTVkNTZlOGI0MzFkYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM0OTcsMjggKzM0
OTcsNDUgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVmlld3BvcnRVbml0c09uUmVzaXplKCkKIHZv
aWQgRG9jdW1lbnQ6OmFkZEF1ZGlvUHJvZHVjZXIoTWVkaWFQcm9kdWNlciogYXVkaW9Qcm9kdWNl
cikKIHsKICAgICBtX2F1ZGlvUHJvZHVjZXJzLmFkZChhdWRpb1Byb2R1Y2VyKTsKLSAgICB1cGRh
dGVJc1BsYXlpbmdNZWRpYSgpOworCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisgICAgdXBk
YXRlSXNQbGF5aW5nTWVkaWEoSFRNTE1lZGlhRWxlbWVudFVua25vd25JRCk7CisjZWxzZQorICAg
IHVwZGF0ZUlzUGxheWluZ01lZGlhKDApOworI2VuZGlmCiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJl
bW92ZUF1ZGlvUHJvZHVjZXIoTWVkaWFQcm9kdWNlciogYXVkaW9Qcm9kdWNlcikKIHsKICAgICBt
X2F1ZGlvUHJvZHVjZXJzLnJlbW92ZShhdWRpb1Byb2R1Y2VyKTsKLSAgICB1cGRhdGVJc1BsYXlp
bmdNZWRpYSgpOworCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisgICAgdXBkYXRlSXNQbGF5
aW5nTWVkaWEoSFRNTE1lZGlhRWxlbWVudFVua25vd25JRCk7CisjZWxzZQorICAgIHVwZGF0ZUlz
UGxheWluZ01lZGlhKDApOworI2VuZGlmCiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxh
eWluZ01lZGlhKCkKK3ZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ01lZGlhKHVpbnQ2NF90
IHNvdXJjZUVsZW1lbnRJRCkKIHsKICAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mg
c3RhdGUgPSBNZWRpYVByb2R1Y2VyOjpJc05vdFBsYXlpbmc7CiAgICAgZm9yIChhdXRvIGF1ZGlv
UHJvZHVjZXIgOiBtX2F1ZGlvUHJvZHVjZXJzKQogICAgICAgICBzdGF0ZSB8PSBhdWRpb1Byb2R1
Y2VyLT5tZWRpYVN0YXRlKCk7CiAKKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKKyAgICBpZiAo
SFRNTE1lZGlhRWxlbWVudCogc291cmNlRWxlbWVudCA9IEhUTUxNZWRpYUVsZW1lbnQ6OmVsZW1l
bnRXaXRoSUQoc291cmNlRWxlbWVudElEKSkgeworICAgICAgICBpZiAoc291cmNlRWxlbWVudC0+
aXNQbGF5aW5nKCkpCisgICAgICAgICAgICBzdGF0ZSB8PSBNZWRpYVByb2R1Y2VyOjpJc1NvdXJj
ZVBsYXlpbmc7CisgICAgfQorI2VuZGlmCisKICAgICBpZiAoc3RhdGUgPT0gbV9tZWRpYVN0YXRl
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX21lZGlhU3RhdGUgPSBzdGF0ZTsKIAogICAgIGlm
IChwYWdlKCkpCi0gICAgICAgIHBhZ2UoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICAg
ICAgcGFnZSgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYShzb3VyY2VFbGVtZW50SUQpOwogfQogCiB2
b2lkIERvY3VtZW50OjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IGU5MzhhMzkwMjBiNTkwYmVlNjYxOWY4ZjRiNTZmYTlkYjE0Yzc4ODUuLjU2ZGM2NjVh
YjJhMDViOTM3ZTM2OTM1NjgxYzYwNGQ5YzBhZjcwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC0xMjYwLDcgKzEyNjAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRB
dWRpb1Byb2R1Y2VyKE1lZGlhUHJvZHVjZXIqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZUF1ZGlvUHJvZHVjZXIoTWVkaWFQcm9kdWNlciopOwogICAgIE1lZGlhUHJvZHVjZXI6Ok1l
ZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0YXRlOyB9
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlSXNQbGF5aW5nTWVkaWEodWludDY0X3QpOwogICAgIHZv
aWQgcGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKTsKICAgICBXZWFrUHRyPERvY3VtZW50PiBjcmVh
dGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzA4MjBlZTMzZjBk
ZmE5M2Y3YTNhYmIwZWViYWEwZGVkMmEzNTkwNi4uNTk0MjQ4NGZkZTk1NjgwYjdkNzQ0MDg3Mjkx
MzM2NzcwYTVkOTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC0yMDIsNiArMjAyLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBtZWRpYVNvdXJjZUJsb2JQ
cm90b2NvbCA9ICJibG9iIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBtZWRpYVN0cmVhbUJsb2JQcm90
b2NvbCA9ICJibG9iIjsKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCitjb25z
dCB1aW50NjRfdCBIVE1MTWVkaWFFbGVtZW50VW5rbm93bklEID0gMDsKKyNlbmRpZgorCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiB0eXBlZGVmIEhhc2hNYXA8RG9jdW1lbnQqLCBIYXNo
U2V0PEhUTUxNZWRpYUVsZW1lbnQqPj4gRG9jdW1lbnRFbGVtZW50U2V0TWFwOwpAQCAtMjk5LDYg
KzMwMyw5IEBAIHN0YXRpYyBJRFRvRWxlbWVudE1hcCYgZWxlbWVudElEc1RvRWxlbWVudHMoKQog
CiBIVE1MTWVkaWFFbGVtZW50KiBIVE1MTWVkaWFFbGVtZW50OjplbGVtZW50V2l0aElEKHVpbnQ2
NF90IGlkKQogeworICAgIGlmIChpZCA9PSBIVE1MTWVkaWFFbGVtZW50VW5rbm93bklEKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKICAgICByZXR1cm4gZWxlbWVudElEc1RvRWxlbWVu
dHMoKS5nZXQoaWQpOwogfQogCkBAIC0zMTY0LDcgKzMxNzEsMTIgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZXRNdXRlZChib29sIG11dGVkKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnZvbHVtZWNoYW5nZUV2ZW50KTsKLSAg
ICAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworCisjaWYgRU5BQkxFKE1F
RElBX1NFU1NJT04pCisgICAgICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEobV9l
bGVtZW50SUQpOworI2Vsc2UKKyAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRp
YSgwKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAg
ICAgICAgdXBkYXRlTWVkaWFTdGF0ZShVcGRhdGVNZWRpYVN0YXRlOjpBc3luY2hyb25vdXNseSk7
CkBAIC00NTI4LDcgKzQ1NDAsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
ckNoYXJhY3RlcmlzdGljQ2hhbmdlZChNZWRpYVBsYXllciopCiAgICAgaWYgKGlzUGxheWluZygp
ICYmICFtX21lZGlhU2Vzc2lvbi0+cGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMpKQogICAgICAgICBw
YXVzZUludGVybmFsKCk7CiAKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7
CisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlp
bmdNZWRpYShtX2VsZW1lbnRJRCk7CisjZWxzZQorICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5
aW5nTWVkaWEoMCk7CisjZW5kaWYKIAogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxi
YWNrKCk7CiB9CkBAIC00Nzg4LDcgKzQ4MDQsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRQbGF5aW5nKGJvb2wgcGxheWluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wbGF5aW5n
ID0gcGxheWluZzsKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisKKyNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKKyAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01l
ZGlhKG1fZWxlbWVudElEKTsKKyNlbHNlCisgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdN
ZWRpYSgwKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
ICAgICB1cGRhdGVNZWRpYVN0YXRlKFVwZGF0ZU1lZGlhU3RhdGU6OkFzeW5jaHJvbm91c2x5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNjE3MzdjNGRiMDM1MTg1
OTU5MWYzNGMwY2VkN2E4NGViN2YyNjYyMC4uZTgyOGQzMmZlMGQyOTMyNzg5NWI4ZWIxMGNiMTE3
NDM1ZWRkZTRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTk4
LDYgKzk4LDEwIEBAIHR5cGVkZWYgVmVjdG9yPEN1ZUludGVydmFsPiBDdWVMaXN0OwogY2xhc3Mg
TWVkaWFTdHJlYW07CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQorZXh0ZXJu
IGNvbnN0IHVpbnQ2NF90IEhUTUxNZWRpYUVsZW1lbnRVbmtub3duSUQ7CisjZW5kaWYKKwogY2xh
c3MgSFRNTE1lZGlhRWxlbWVudAogICAgIDogcHVibGljIEhUTUxFbGVtZW50CiAgICAgLCBwcml2
YXRlIE1lZGlhUGxheWVyQ2xpZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGll
bnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
LCBwdWJsaWMgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlICwgcHVibGljIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uQ2xpZW50LCBwcml2YXRlIE1lZGlhUHJvZHVjZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCmluZGV4IGY1YWRhMjZkNWMyN2I4OGRlNTNhNjlkMmZhMDEwZjJlODY1OGI0YjYuLmEw
YTEzM2M2MDM3YTUxZGJiYjMwZGEwZmVlMGU5NjA4ZWFhYjcwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaApAQCAtNDIwLDcgKzQyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3Kikg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdNZWRp
YURpZENoYW5nZShNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBpc1BsYXlpbmdNZWRpYURpZENoYW5nZShNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRl
RmxhZ3MsIHVpbnQ2NF90KSB7IH0KIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogICAgIHZp
cnR1YWwgdm9pZCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENoYW5n
ZShib29sKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFQcm9kdWNl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVByb2R1Y2VyLmgKaW5kZXggYWQ0MzE5NDUx
NTIyYjNlMTZmZTNmYzQwYWYyOTZlOWUwZDU4ZjRjZi4uNWJkYmY1MDc1MzhjOWU4MDRhNDcwMDRl
ODA4OTcxNmJhYmY5NGQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVBy
b2R1Y2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVByb2R1Y2VyLmgKQEAgLTM4
LDYgKzM4LDkgQEAgcHVibGljOgogICAgICAgICBSZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRv
cmluZyA9IDEgPDwgMywKICAgICAgICAgRXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNhbmRpZGF0ZSA9
IDEgPDwgNCwKICAgICAgICAgRGlkUGxheVRvRW5kID0gMSA8PCA1LAorI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQorICAgICAgICBJc1NvdXJjZVBsYXlpbmcgPSAxIDw8IDYsCisjZW5kaWYKICAg
ICB9OwogICAgIHR5cGVkZWYgdW5zaWduZWQgTWVkaWFTdGF0ZUZsYWdzOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCA4ZWE5NjlkNDU4ZDk4MTRmYWRhOWI2YjY5NjZlYTI0NTQ3YTA4MWU3Li45ZDJk
MjY2MmZlODI4MDA4YjU4MjNjNzBkYjlkY2NiNTE5MzZmMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTExODMsNyArMTE4Myw3IEBAIHZvaWQgUGFnZTo6ZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dz
aW5nKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKICAgICBzZXRTZXNzaW9uSUQocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCA/IFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpIDog
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCi12b2lkIFBhZ2U6OnVwZGF0ZUlz
UGxheWluZ01lZGlhKCkKK3ZvaWQgUGFnZTo6dXBkYXRlSXNQbGF5aW5nTWVkaWEodWludDY0X3Qg
c291cmNlRWxlbWVudElEKQogewogICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBz
dGF0ZSA9IE1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZzsKICAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5l
eHQoKSkgewpAQCAtMTE5NSw3ICsxMTk1LDcgQEAgdm9pZCBQYWdlOjp1cGRhdGVJc1BsYXlpbmdN
ZWRpYSgpCiAKICAgICBtX21lZGlhU3RhdGUgPSBzdGF0ZTsKIAotICAgIGNocm9tZSgpLmNsaWVu
dCgpLmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKHN0YXRlKTsKKyAgICBjaHJvbWUoKS5jbGllbnQo
KS5pc1BsYXlpbmdNZWRpYURpZENoYW5nZShzdGF0ZSwgc291cmNlRWxlbWVudElEKTsKIH0KIAog
dm9pZCBQYWdlOjpzZXRNdXRlZChib29sIG11dGVkKQpAQCAtMTIyNCwxNSArMTIyNCw2IEBAIHZv
aWQgUGFnZTo6aGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlwZSBldmVudFR5cGUpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIH0KLQotYm9vbCBQYWdlOjppc01lZGlhRWxlbWVudFBhdXNlZCh1
aW50NjRfdCBlbGVtZW50SUQpCi17Ci0gICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQg
PSBIVE1MTWVkaWFFbGVtZW50OjplbGVtZW50V2l0aElEKGVsZW1lbnRJRCkpCi0gICAgICAgIHJl
dHVybiBlbGVtZW50LT5wYXVzZWQoKTsKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiB0cnVlOwotfQogI2VuZGlmCiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCmluZGV4IDE4OGViNGQyN2MwZDQ4ODA4MTkyNDFhZDA4ZTJmZjQ0ZTU5MGViMTEuLjIzMmQ0
NmM3ZmJlOWVkODdjN2IxOTVjMWQ0YzZmMWJlOTlkNzY2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC00
MzYsMTMgKzQzNiwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzRXBoZW1lcmFsU2Vzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCk7IH0KIAogICAgIE1lZGlh
UHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9t
ZWRpYVN0YXRlOyB9Ci0gICAgdm9pZCB1cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIHZvaWQg
dXBkYXRlSXNQbGF5aW5nTWVkaWEodWludDY0X3QpOwogICAgIGJvb2wgaXNNdXRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE11dGVkKGJv
b2wpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGlzTWVkaWFFbGVtZW50UGF1c2VkKHVpbnQ2NF90KTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKaW5kZXggZGVlZGMzYzQ3
YWU2OTExZTFhM2YxNWE4ZGU3YzlkNjM0MGQyZGM1Mi4uNWUwZGI4MjM4MTJkOTMxZjdjMWQwMTA5
NWM3MzgxZWI4NzNmMTVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKQEAgLTYyLDEwICs2MiwyOCBAQCB2
b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6aXNGb2N1c2VkQ29udGVudE1lZGlhRWxl
bWVudFBhdXNlZChzdGQ6OmZ1bmN0aQogICAgIGlmICghbV9mb2N1c2VkTWVkaWFFbGVtZW50KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8VW5zaWduZWRDYWxsYmFjaz4gY2FsbGJhY2sg
PSBVbnNpZ25lZENhbGxiYWNrOjpjcmVhdGUoY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAgV2ViUGFn
ZVByb3h5KiBwcm94eSA9IG1fZm9jdXNlZE1lZGlhRWxlbWVudC0+Zmlyc3Q7Ci0gICAgdWludDY0
X3QgZWxlbWVudElEID0gbV9mb2N1c2VkTWVkaWFFbGVtZW50LT5zZWNvbmQ7Ci0gICAgcHJveHkt
PmlzTWVkaWFFbGVtZW50UGF1c2VkKGVsZW1lbnRJRCwgY2FsbGJhY2spOworICAgIGNhbGxiYWNr
RnVuY3Rpb24oIW1fZm9jdXNlZE1lZGlhRWxlbWVudElzUGxheWluZywgQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6Tm9uZSk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpzZXRG
b2N1c2VkTWVkaWFFbGVtZW50SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQoreworICAgIG1fZm9j
dXNlZE1lZGlhRWxlbWVudElzUGxheWluZyA9IGlzUGxheWluZzsKK30KKworV2ViUGFnZVByb3h5
KiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmZvY3VzZWRNZWRpYUVsZW1lbnRQYWdlKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fZm9jdXNlZE1lZGlhRWxlbWVudCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXR1cm4gbV9mb2N1c2VkTWVkaWFFbGVtZW50LT5maXJzdDsKK30K
KwordWludDY0X3QgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpmb2N1c2VkTWVkaWFFbGVt
ZW50SUQoKSBjb25zdAoreworICAgIGlmICghbV9mb2N1c2VkTWVkaWFFbGVtZW50KQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQtPnNlY29uZDsK
IH0KIAogdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnNldEZvY3VzZWRNZWRpYUVs
ZW1lbnQoV2ViUGFnZVByb3h5JiBwcm94eSwgdWludDY0X3QgZWxlbWVudElEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5o
CmluZGV4IDVjMjAxYjNlMmE2MjlhZThlOTI1N2E4ZGQ1MzhkNjMwMmRmMDEyZWEuLmQyMmQ2OGVl
MmNmNzBhMWJkZGEwMjQ2MTYyNjdmNGRlODJiOTY2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgKQEAgLTQ0LDEw
ICs0NCwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyPiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsKIAogICAgIHZvaWQgaXNGb2N1
c2VkQ29udGVudE1lZGlhRWxlbWVudFBhdXNlZChzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIHNldEZvY3VzZWRNZWRpYUVsZW1lbnRJc1Bs
YXlpbmcoYm9vbCk7CiAKICAgICB2b2lkIHNldEZvY3VzZWRNZWRpYUVsZW1lbnQoV2ViUGFnZVBy
b3h5JiwgdWludDY0X3QpOwogICAgIHZvaWQgY2xlYXJGb2N1c2VkTWVkaWFFbGVtZW50KCk7CiAK
KyAgICBXZWJQYWdlUHJveHkqIGZvY3VzZWRNZWRpYUVsZW1lbnRQYWdlKCkgY29uc3Q7CisgICAg
dWludDY0X3QgZm9jdXNlZE1lZGlhRWxlbWVudElEKCkgY29uc3Q7CisKICAgICB1c2luZyBBUEk6
Ok9iamVjdDo6cmVmOwogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKIApAQCAtNTksNiAr
NjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVt
ZW50KCkgb3ZlcnJpZGU7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9jdXNlZE1lZGlhRWxlbWVu
dD4gbV9mb2N1c2VkTWVkaWFFbGVtZW50OworICAgIGJvb2wgbV9mb2N1c2VkTWVkaWFFbGVtZW50
SXNQbGF5aW5nIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjODBmN2UxODQxMzQwN2M4
ZTQzOWQ5MzZhMGRkZjJmNDMzZDFjYmIyLi5lMmQ2NDdlZjMwM2ZkOWU5ZjIwZTAyMzg4ZTEwNDQ0
YjRhODU2MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtMzg4MiwxOSArMzg4Miw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVNZWRpYUV2ZW50
KE1lZGlhRXZlbnRUeXBlIGV2ZW50VHlwZSkKICAgICAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkhhbmRsZU1lZGlhRXZlbnQoZXZlbnRUeXBlKSwgbV9wYWdlSUQpOwog
fQotCi12b2lkIFdlYlBhZ2VQcm94eTo6aXNNZWRpYUVsZW1lbnRQYXVzZWQodWludDY0X3QgZWxl
bWVudElELCBSZWZQdHI8VW5zaWduZWRDYWxsYmFjaz4gY2FsbGJhY2spCi17Ci0gICAgaWYgKCFp
c1ZhbGlkKCkpIHsKLSAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJh
Y2tJRCgpOwotICAgIG1fY2FsbGJhY2tzLnB1dChjYWxsYmFjayk7Ci0KLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OklzTWVkaWFFbGVtZW50UGF1c2VkKGVsZW1lbnRJRCwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKLX0KICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhib29sIG1heVN0YXJ0TWVkaWEpCkBAIC01OTUw
LDggKzU5MzcsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlU25hcHNo
b3RXYXNSZW1vdmVkKCkKICAgICBtX2lzU2hvd2luZ05hdmlnYXRpb25HZXN0dXJlU25hcHNob3Qg
PSBmYWxzZTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmlzUGxheWluZ01lZGlhRGlkQ2hhbmdl
KE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBzdGF0ZSkKK3ZvaWQgV2ViUGFnZVByb3h5
Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZShNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mg
c3RhdGUsIHVpbnQ2NF90IHNvdXJjZUVsZW1lbnRJRCkKIHsKKyNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKKyAgICBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIqIGZvY3VzTWFuYWdlciA9IHBy
b2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyPigpOworICAgIEFTU0VSVChmb2N1c01hbmFnZXIpOworCisgICAgaWYgKGZvY3VzTWFuYWdl
ci0+Zm9jdXNlZE1lZGlhRWxlbWVudFBhZ2UoKSA9PSB0aGlzICYmIGZvY3VzTWFuYWdlci0+Zm9j
dXNlZE1lZGlhRWxlbWVudElEKCkgPT0gc291cmNlRWxlbWVudElEKQorICAgICAgICBmb2N1c01h
bmFnZXItPnNldEZvY3VzZWRNZWRpYUVsZW1lbnRJc1BsYXlpbmcoc3RhdGUgJiBNZWRpYVByb2R1
Y2VyOjpJc1NvdXJjZVBsYXlpbmcpOworI2VuZGlmCisKICAgICBpZiAoc3RhdGUgPT0gbV9tZWRp
YVN0YXRlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA1MWMxYmQ2YjMwYjM0NGI2YTE1NTg1NTA0ZTI0OWE0YTQ1ODM4ODBmLi5h
OWQyOWNjNzZmNjhmMDI1MjMyOTM2NTIyZTU3ODM2M2UwMjI2MTUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05NDMsNyArOTQzLDYgQEAgcHVibGljOgogI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQogICAgIGJvb2wgaGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2
ZU1lZGlhRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2hhc01lZGlhU2Vzc2lvbldpdGhBY3Rp
dmVNZWRpYUVsZW1lbnRzOyB9CiAgICAgdm9pZCBoYW5kbGVNZWRpYUV2ZW50KFdlYkNvcmU6Ok1l
ZGlhRXZlbnRUeXBlKTsKLSAgICB2b2lkIGlzTWVkaWFFbGVtZW50UGF1c2VkKHVpbnQ2NF90LCBS
ZWZQdHI8VW5zaWduZWRDYWxsYmFjaz4pOwogI2VuZGlmCiAKICAgICAvLyBXZWJQb3B1cE1lbnVQ
cm94eTo6Q2xpZW50CkBAIC0xMDI1LDcgKzEwMjQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1No
b3dpbmdOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkgY29uc3QgeyByZXR1cm4gbV9pc1Nob3dp
bmdOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90OyB9CiAKICAgICBib29sIGlzUGxheWluZ0F1ZGlv
KCkgY29uc3QgeyByZXR1cm4gISEobV9tZWRpYVN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNl
cjo6SXNQbGF5aW5nQXVkaW8pOyB9Ci0gICAgdm9pZCBpc1BsYXlpbmdNZWRpYURpZENoYW5nZShX
ZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOworICAgIHZvaWQgaXNQbGF5
aW5nTWVkaWFEaWRDaGFuZ2UoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdz
LCB1aW50NjRfdCk7CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICB2b2lkIGhhc01l
ZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGJvb2wpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
ZWQwN2M5M2I1MTAxYzI0NTIwNjFlZTI0MzZhOWU3ZGMwZTFjNzM1Mi4uOWU4MzliNDE2MzNhNmJm
NzUwZTJlMzk5NjZmZGE3NmM3NjU4NWMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC00MjIsNyArNDIyLDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkRm9yRnJh
bWUoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCB1
aW50NjRfdCBmcmFtZUlEKQogI2VuZGlmCiAKLSAgICBJc1BsYXlpbmdNZWRpYURpZENoYW5nZSh1
bnNpZ25lZCBzdGF0ZSkKKyAgICBJc1BsYXlpbmdNZWRpYURpZENoYW5nZSh1bnNpZ25lZCBzdGF0
ZSwgdWludDY0X3Qgc291cmNlRWxlbWVudElEKQogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
CiAgICAgSGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHNEaWRDaGFuZ2UoYm9v
bCBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAppbmRleCBiYWY1NjcxZWNhNjZkNTFlZGM2NzE4MjI0NGQwMDljNTJjN2I1ZDUwLi44
Y2JiNWFiM2QwMTRmM2ZmYTBkMDM5NTYxYjRiODFkY2NiNzNiOWIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNDk2LDcgKzE0
OTYsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldFBsdWdpbklzUGxheWluZ0F1ZGlvKGJvb2wgcGx1
Z2luSXNQbGF5aW5nQXVkaW8pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGx1Z2luSXNQbGF5
aW5nQXVkaW8gPSBwbHVnaW5Jc1BsYXlpbmdBdWRpbzsKLSAgICBtX3BsdWdpbkVsZW1lbnQtPmRv
Y3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICBtX3BsdWdpbkVsZW1lbnQtPmRv
Y3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEoMCk7CiB9CiAKIGJvb2wgUGx1Z2luVmlldzo6
aXNNdXRlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggZWY3ZmE1MWI3MmM3
OTA4YTQ0ZjBiNjQ5MGFhMzc3YmI4OTk5MTlkOC4uZDVhMDVhYjk1YmVjMGU3NTA1ZmZiMmI3NTg4
YzUzNjRmZThiZDViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTA1Nyw5ICsxMDU3
LDkgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1l
Vmlldyhjb25zdCBGcmFtZVZpZXcqIGZyYW1lVmkKICAgICByZXR1cm4gbV9wYWdlLT5kcmF3aW5n
QXJlYSgpLT5zaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsKIH0K
IAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKFdlYkNvcmU6
Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBzdGF0ZSkKK3ZvaWQgV2ViQ2hyb21lQ2xp
ZW50Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRp
YVN0YXRlRmxhZ3Mgc3RhdGUsIHVpbnQ2NF90IHNvdXJjZUVsZW1lbnRJRCkKIHsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2Uo
c3RhdGUpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SXNQbGF5
aW5nTWVkaWFEaWRDaGFuZ2Uoc3RhdGUsIHNvdXJjZUVsZW1lbnRJRCkpOwogfQogCiAjaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCAyNzAyMmQyYmE0YTg5
NmJmMjIzMGVkMmU5ZjlkMzI3MjU5MzhjMmUyLi5lYzI1ZDIzZTEzZjM1NjIwZmFlYTE2NjFjNDI1
NjY1ODE2ZmRlNTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI5MSw3ICsyOTEsNyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1l
Vmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBpc1BsYXlpbmdNZWRpYURpZENoYW5nZShXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpNZWRpYVN0YXRlRmxhZ3MpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdN
ZWRpYURpZENoYW5nZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MsIHVp
bnQ2NF90KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZUFjdGl2aXR5U3RhdGUo
V2ViQ29yZTo6UGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzKSBvdmVycmlkZTsKIAogI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IGU1ZGM4MTlkZTQwYzk1YzdjNmUzZDA5Yjk1ZjZlNTQxZDYzNjRmZmEu
LjZkMjE0ZmY2NGVjNzcwYjMzNGFlODIwYzJhMGVlZWM3NTcxZmE4MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQwNjgsMTIgKzQwNjgs
NiBAQCB2b2lkIFdlYlBhZ2U6OmhhbmRsZU1lZGlhRXZlbnQodWludDMyX3QgZXZlbnRUeXBlKQog
ewogICAgIG1fcGFnZS0+aGFuZGxlTWVkaWFFdmVudChzdGF0aWNfY2FzdDxNZWRpYUV2ZW50VHlw
ZT4oZXZlbnRUeXBlKSk7CiB9Ci0KLXZvaWQgV2ViUGFnZTo6aXNNZWRpYUVsZW1lbnRQYXVzZWQo
dWludDY0X3QgZWxlbWVudElELCB1aW50NjRfdCBjYWxsYmFja0lEKQotewotICAgIGJvb2wgcGF1
c2VkID0gbV9wYWdlLT5pc01lZGlhRWxlbWVudFBhdXNlZChlbGVtZW50SUQpOwotICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhwYXVzZWQsIGNhbGxiYWNr
SUQpKTsKLX0KICNlbmRpZgogCiB2b2lkIFdlYlBhZ2U6OnNldE1heVN0YXJ0TWVkaWFXaGVuSW5X
aW5kb3coYm9vbCBtYXlTdGFydE1lZGlhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggMDY0YjEyNWYzMjA0NWFkNTc3MzA4ODA0MmE2YmRhNTBlMDM2
ZTI5YS4uNWM0YzhiZTJhN2FiMDkxN2ZkYzRkZTM5NmQzY2JmNGI1MGQ5NzUwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC03NTAsNyArNzUwLDYg
QEAgcHVibGljOgogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAgICAgdm9pZCBoYW5kbGVN
ZWRpYUV2ZW50KHVpbnQzMl90IC8qIFdlYkNvcmU6Ok1lZGlhRXZlbnRUeXBlICovKTsKLSAgICB2
b2lkIGlzTWVkaWFFbGVtZW50UGF1c2VkKHVpbnQ2NF90LCB1aW50NjRfdCk7CiAjZW5kaWYKIAog
ICAgIHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsT2Zmc2V0UGlubmluZygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpp
bmRleCA3Y2I3MDFkMWE5NDZkZTcwYzViM2M5MjcwYTNjNDM5M2Q3NWZmOWE0Li4wMGFiNGZkNWFj
M2EzZTNmNWM3ZDQ0YzU5OTZhZTIxNTNmYWJlNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzE2LDcgKzMx
Niw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAjaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCiAgICAgSGFuZGxlTWVkaWFFdmVudCh1aW50MzJfdCBldmVudFR5cGUp
Ci0gICAgSXNNZWRpYUVsZW1lbnRQYXVzZWQodWludDY0X3QgZWxlbWVudElELCB1aW50NjRfdCBj
YWxsYmFja0lEKQogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogVGhpcyBhIGR1bW15IG1lc3NhZ2Us
IHRvIGF2b2lkIGJyZWFraW5nIHRoZSBidWlsZCBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVx
dWlyZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258291</attachid>
            <date>2015-08-05 12:03:05 -0700</date>
            <delta_ts>2015-08-05 17:07:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147633-20150805120257.patch</filename>
            <type>text/plain</type>
            <size>23472</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3OTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM4MDVmYzg5NjdhYjc3
M2E5YjMwZTBiOTIwMmIxYzdlMzJlMGNmMi4uOGRlNDY0MjFlMWYxYjk3N2EzNDYyNzM2ZGJiZmY2
ZWE3ZjBlZWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA4LTA0ICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYSBTZXNzaW9uOiBwdXNo
IHBhdXNlZCBzdGF0ZSB0byB0aGUgbWVkaWEgc2Vzc2lvbiBmb2N1cyBtYW5hZ2VyIGluc3RlYWQg
b2YgcG9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3NjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OnN0b3ApOiBTaW5jZSBhIG1lZGlhIGVsZW1lbnQgZGlkIG5vdCB0cmln
Z2VyIHRoaXMsIHBhc3MgaW4gJ3Vua25vd24gSUQnIGZvciB0aGUgc291cmNlCisgICAgICAgICBt
ZWRpYSBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojppc1BsYXlpbmdB
dWRpb0RpZENoYW5nZSk6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkQXVkaW9Qcm9kdWNlcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUF1ZGlvUHJvZHVjZXIpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdNZWRpYSk6IElmIGEgdmFsaWQg
c291cmNlIGVsZW1lbnQgSUQgaXMgcGFzc2VkIGluLCBzZXQgdGhlICdJc1NvdXJjZVBsYXlpbmcn
CisgICAgICAgICBmbGFnIGFjY29yZGluZ2x5LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjplbGVtZW50V2l0aElEKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnNldE11dGVkKTogUGFzcyBhbG9uZyB0aGUgZWxlbWVudCBJRC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWND
aGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQ
bGF5aW5nKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL01lZGlhUHJvZHVjZXIu
aDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBk
YXRlSXNQbGF5aW5nTWVkaWEpOiBQYXNzIGFsb25nIHRoZSBzb3VyY2UgZWxlbWVudCBJRC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzTWVkaWFFbGVtZW50UGF1c2VkKTogRGVsZXRlZC4gV2Ug
bm93IHB1c2ggbWVkaWEgcGxheWJhY2sgc3RhdGUgY2hhbmdlcyBpbnN0ZWFkIG9mIHBvbGxpbmcu
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisKIDIwMTUtMDgtMDUgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4IGFmdGVyIDE4Nzk2MQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDBkYmFiMDZlNzM4YzAxNzU2NzE1MGE2ZTEyNzFhM2Q1YjRmYTk2NjguLjA1
NTI4ZTQ0MGMyZDM3ZDg5ZGMzMDRhZjIxMzhiZDE2YjJkNTI5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNS0wOC0wNCAgTWF0dCBSYWpjYSAgPG1yYWpjYUBhcHBsZS5jb20+CisK
KyAgICAgICAgTWVkaWEgU2Vzc2lvbjogcHVzaCBwYXVzZWQgc3RhdGUgdG8gdGhlIG1lZGlhIHNl
c3Npb24gZm9jdXMgbWFuYWdlciBpbnN0ZWFkIG9mIHBvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzYzMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlcjo6aXNGb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudFBhdXNlZCk6IFJlcG9ydCB3aGV0
aGVyIHRoZSBmb2N1c2VkIG1lZGlhCisgICAgICAgICBlbGVtZW50IGlzIGN1cnJlbnRseSBwbGF5
aW5nLiBUaGUgY2FsbGJhY2sgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBhbmQgd2lsbCBiZSByZW1v
dmVkIGluIGEgZnV0dXJlIHBhdGNoIGluCisgICAgICAgICBmYXZvciBvZiByZXR1cm5pbmcgYSB2
YWx1ZSBkaXJlY3RseS4KKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyOjptZWRpYUVsZW1lbnRJc1BsYXlpbmdEaWRDaGFuZ2UpOiBLZWVwIHRyYWNrIG9mIHdoZXRo
ZXIgdGhlIGZvY3VzZWQgbWVkaWEKKyAgICAgICAgIGVsZW1lbnQgaXMgY3VycmVudGx5IHBsYXlp
bmcuCisgICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKTogSWYgdGhlIGZvY3VzZWQgbWVk
aWEgZWxlbWVudCBiZWdpbnMvZW5kcyBwbGF5aW5nLCBrZWVwIHRyYWNrCisgICAgICAgICBvZiBp
dHMgcGxheWluZyBzdGF0ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc01lZGlh
RWxlbWVudFBhdXNlZCk6IERlbGV0ZWQuIFdlIG5vdyBwdXNoIG1lZGlhIHBsYXliYWNrIHN0YXRl
IGNoYW5nZXMgaW5zdGVhZCBvZgorICAgICAgICAgcG9sbGluZy4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6IGlzUGxheWluZ01lZGlhRGlkQ2hhbmdlIGlzIG5vdyBwYXNzZWQg
dGhlIElEIG9mIHRoZSBtZWRpYSBlbGVtZW50IHRoYXQgdHJpZ2dlcmVkCisgICAgICAgICB0aGUg
J3BsYXlpbmcnIHN0YXRlIGNoYW5nZS4gVGhpcyBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3
aXRoIHRoZSBJc1NvdXJjZVBsYXlpbmcgbWVkaWEgZmxhZyB0byBpZGVudGlmeQorICAgICAgICAg
d2hldGhlciB0aGUgc291cmNlIGVsZW1lbnQgYmVnaW4vZW5kZWQgcGxheWluZy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OnNldFBsdWdpbklzUGxheWluZ0F1ZGlvKTogU2luY2UgYSBtZWRpYSBlbGVtZW50IGRp
ZCBub3QgdHJpZ2dlciB0aGlzLCBwYXNzIGluIDAgZm9yIHRoZQorICAgICAgICAgc291cmNlIG1l
ZGlhIGVsZW1lbnQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmlzUGxheWlu
Z01lZGlhRGlkQ2hhbmdlKTogaXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UgaXMgbm93IHBhc3NlZCB0
aGUgSUQgb2YgdGhlIG1lZGlhCisgICAgICAgICBlbGVtZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSAn
cGxheWluZycgc3RhdGUgY2hhbmdlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNNZWRpYUVsZW1lbnRQ
YXVzZWQpOiBEZWxldGVkLiBXZSBub3cgcHVzaCBtZWRpYSBwbGF5YmFjayBzdGF0ZSBjaGFuZ2Vz
IGluc3RlYWQgb2YgcG9sbGluZy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjogRGl0dG8uCisKIDIwMTUtMDgtMDUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxODUxMTEpOiBDbGlja2luZyBwaG9uZSBudW1i
ZXJzIGRvZXNuJ3QgcHJvbXB0IHRvIGNhbGwgc29tZXRpbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMmZjNjM4OWI1ZmQzNTI3
NmQwMmUxZWNlZDdiMGU5ZWZjYmI2ZWVlNi4uNDc2YzgzMjkwNGFkZDI2MDY3NzNiZDdkNWMxYjNh
YjY0NTBjNjhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcApAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdG9w
KCkKICAgICAgICAgcmV0dXJuOwogICAgIG1faXNTdG9wU2NoZWR1bGVkID0gdHJ1ZTsKIAotICAg
IGRvY3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgZG9jdW1lbnQoKS0+dXBk
YXRlSXNQbGF5aW5nTWVkaWEoSFRNTE1lZGlhRWxlbWVudEludmFsaWRJRCk7CiAKICAgICBtX2V2
ZW50UXVldWUtPmNsb3NlKCk7CiAKQEAgLTEwNzQsNyArMTA3NCw3IEBAIHZvaWQgQXVkaW9Db250
ZXh0Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpCiAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4g
c3Ryb25nVGhpcyh0aGlzKTsKICAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdUaGlzXSB7CiAg
ICAgICAgIGlmIChzdHJvbmdUaGlzLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgc3Ryb25nVGhp
cy0+ZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICAgICAgICAgIHN0cm9u
Z1RoaXMtPmRvY3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKEhUTUxNZWRpYUVsZW1lbnRJ
bnZhbGlkSUQpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlMjU4
ZWIxZDczNjdmYjJmN2I5ZDBhNGNiMjViN2MzYWI2Zjc1NWViLi5kMGNhYWUwMDE0NjZjNTYzMGE5
MTM1ZWUzMTdlNTIwM2Y1ZDA4OWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM0OTcs
MjggKzM0OTcsMzUgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVmlld3BvcnRVbml0c09uUmVzaXpl
KCkKIHZvaWQgRG9jdW1lbnQ6OmFkZEF1ZGlvUHJvZHVjZXIoTWVkaWFQcm9kdWNlciogYXVkaW9Q
cm9kdWNlcikKIHsKICAgICBtX2F1ZGlvUHJvZHVjZXJzLmFkZChhdWRpb1Byb2R1Y2VyKTsKLSAg
ICB1cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIHVwZGF0ZUlzUGxheWluZ01lZGlhKEhUTUxN
ZWRpYUVsZW1lbnRJbnZhbGlkSUQpOwogfQogCiB2b2lkIERvY3VtZW50OjpyZW1vdmVBdWRpb1By
b2R1Y2VyKE1lZGlhUHJvZHVjZXIqIGF1ZGlvUHJvZHVjZXIpCiB7CiAgICAgbV9hdWRpb1Byb2R1
Y2Vycy5yZW1vdmUoYXVkaW9Qcm9kdWNlcik7Ci0gICAgdXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsK
KyAgICB1cGRhdGVJc1BsYXlpbmdNZWRpYShIVE1MTWVkaWFFbGVtZW50SW52YWxpZElEKTsKIH0K
IAotdm9pZCBEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nTWVkaWEoKQordm9pZCBEb2N1bWVudDo6
dXBkYXRlSXNQbGF5aW5nTWVkaWEodWludDY0X3Qgc291cmNlRWxlbWVudElEKQogewogICAgIE1l
ZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBzdGF0ZSA9IE1lZGlhUHJvZHVjZXI6OklzTm90
UGxheWluZzsKICAgICBmb3IgKGF1dG8gYXVkaW9Qcm9kdWNlciA6IG1fYXVkaW9Qcm9kdWNlcnMp
CiAgICAgICAgIHN0YXRlIHw9IGF1ZGlvUHJvZHVjZXItPm1lZGlhU3RhdGUoKTsKIAorI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OKQorICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBzb3VyY2VFbGVt
ZW50ID0gSFRNTE1lZGlhRWxlbWVudDo6ZWxlbWVudFdpdGhJRChzb3VyY2VFbGVtZW50SUQpKSB7
CisgICAgICAgIGlmIChzb3VyY2VFbGVtZW50LT5pc1BsYXlpbmcoKSkKKyAgICAgICAgICAgIHN0
YXRlIHw9IE1lZGlhUHJvZHVjZXI6OklzU291cmNlRWxlbWVudFBsYXlpbmc7CisgICAgfQorI2Vu
ZGlmCisKICAgICBpZiAoc3RhdGUgPT0gbV9tZWRpYVN0YXRlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX21lZGlhU3RhdGUgPSBzdGF0ZTsKIAogICAgIGlmIChwYWdlKCkpCi0gICAgICAgIHBh
Z2UoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICAgICAgcGFnZSgpLT51cGRhdGVJc1Bs
YXlpbmdNZWRpYShzb3VyY2VFbGVtZW50SUQpOwogfQogCiB2b2lkIERvY3VtZW50OjpwYWdlTXV0
ZWRTdGF0ZURpZENoYW5nZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGU5MzhhMzkwMjBiNTkw
YmVlNjYxOWY4ZjRiNTZmYTlkYjE0Yzc4ODUuLjU2ZGM2NjVhYjJhMDViOTM3ZTM2OTM1NjgxYzYw
NGQ5YzBhZjcwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMjYwLDcgKzEyNjAsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBdWRpb1Byb2R1Y2VyKE1lZGlhUHJv
ZHVjZXIqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUF1ZGlvUHJvZHVjZXIoTWVk
aWFQcm9kdWNlciopOwogICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0YXRlOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlSXNQbGF5aW5nTWVkaWEodWludDY0X3QpOwogICAgIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRD
aGFuZ2UoKTsKICAgICBXZWFrUHRyPERvY3VtZW50PiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4g
bV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzA4MjBlZTMzZjBkZmE5M2Y3YTNhYmIwZWViYWEwZGVk
MmEzNTkwNi4uOGViZGM4NGQxODI4ZWM4MzVmM2EwYjM0ZmQxOTZmY2I5NmUzNzg4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yMDIsNiArMjAyLDggQEAg
c3RhdGljIGNvbnN0IGNoYXIqIG1lZGlhU291cmNlQmxvYlByb3RvY29sID0gImJsb2IiOwogc3Rh
dGljIGNvbnN0IGNoYXIqIG1lZGlhU3RyZWFtQmxvYlByb3RvY29sID0gImJsb2IiOwogI2VuZGlm
CiAKK2NvbnN0IHVpbnQ2NF90IEhUTUxNZWRpYUVsZW1lbnRJbnZhbGlkSUQgPSAwOworCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiB0eXBlZGVmIEhhc2hNYXA8RG9jdW1lbnQqLCBIYXNo
U2V0PEhUTUxNZWRpYUVsZW1lbnQqPj4gRG9jdW1lbnRFbGVtZW50U2V0TWFwOwpAQCAtMjk5LDYg
KzMwMSw5IEBAIHN0YXRpYyBJRFRvRWxlbWVudE1hcCYgZWxlbWVudElEc1RvRWxlbWVudHMoKQog
CiBIVE1MTWVkaWFFbGVtZW50KiBIVE1MTWVkaWFFbGVtZW50OjplbGVtZW50V2l0aElEKHVpbnQ2
NF90IGlkKQogeworICAgIGlmIChpZCA9PSBIVE1MTWVkaWFFbGVtZW50SW52YWxpZElEKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKICAgICByZXR1cm4gZWxlbWVudElEc1RvRWxlbWVu
dHMoKS5nZXQoaWQpOwogfQogCkBAIC0zMTY0LDcgKzMxNjksMTIgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZXRNdXRlZChib29sIG11dGVkKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnZvbHVtZWNoYW5nZUV2ZW50KTsKLSAg
ICAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworCisjaWYgRU5BQkxFKE1F
RElBX1NFU1NJT04pCisgICAgICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEobV9l
bGVtZW50SUQpOworI2Vsc2UKKyAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRp
YSgwKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAg
ICAgICAgdXBkYXRlTWVkaWFTdGF0ZShVcGRhdGVNZWRpYVN0YXRlOjpBc3luY2hyb25vdXNseSk7
CkBAIC00NTI4LDcgKzQ1MzgsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
ckNoYXJhY3RlcmlzdGljQ2hhbmdlZChNZWRpYVBsYXllciopCiAgICAgaWYgKGlzUGxheWluZygp
ICYmICFtX21lZGlhU2Vzc2lvbi0+cGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMpKQogICAgICAgICBw
YXVzZUludGVybmFsKCk7CiAKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7
CisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlp
bmdNZWRpYShtX2VsZW1lbnRJRCk7CisjZWxzZQorICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5
aW5nTWVkaWEoMCk7CisjZW5kaWYKIAogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxi
YWNrKCk7CiB9CkBAIC00Nzg4LDcgKzQ4MDIsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRQbGF5aW5nKGJvb2wgcGxheWluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wbGF5aW5n
ID0gcGxheWluZzsKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisKKyNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKKyAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01l
ZGlhKG1fZWxlbWVudElEKTsKKyNlbHNlCisgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdN
ZWRpYSgwKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
ICAgICB1cGRhdGVNZWRpYVN0YXRlKFVwZGF0ZU1lZGlhU3RhdGU6OkFzeW5jaHJvbm91c2x5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNjE3MzdjNGRiMDM1MTg1
OTU5MWYzNGMwY2VkN2E4NGViN2YyNjYyMC4uODM4MzIzMzY0NTljYWRkNmU2YWQyODFiNzI0MDQ4
MWFlNWFkMTYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTk4
LDYgKzk4LDggQEAgdHlwZWRlZiBWZWN0b3I8Q3VlSW50ZXJ2YWw+IEN1ZUxpc3Q7CiBjbGFzcyBN
ZWRpYVN0cmVhbTsKICNlbmRpZgogCitleHRlcm4gY29uc3QgdWludDY0X3QgSFRNTE1lZGlhRWxl
bWVudEludmFsaWRJRDsKKwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudAogICAgIDogcHVibGljIEhU
TUxFbGVtZW50CiAgICAgLCBwcml2YXRlIE1lZGlhUGxheWVyQ2xpZW50LCBwdWJsaWMgTWVkaWFQ
bGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlICwg
cHVibGljIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50LCBwcml2YXRlIE1lZGlhUHJvZHVjZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGY1YWRhMjZkNWMyN2I4OGRlNTNhNjlk
MmZhMDEwZjJlODY1OGI0YjYuLmEwYTEzM2M2MDM3YTUxZGJiYjMwZGEwZmVlMGU5NjA4ZWFhYjcw
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNDIwLDcgKzQyMCw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZp
ZXcoY29uc3QgRnJhbWVWaWV3KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBpc1BsYXlpbmdNZWRpYURpZENoYW5nZShNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRl
RmxhZ3MpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdNZWRpYURpZENoYW5nZShNZWRp
YVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MsIHVpbnQ2NF90KSB7IH0KIAogI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQogICAgIHZpcnR1YWwgdm9pZCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZl
TWVkaWFFbGVtZW50c0RpZENoYW5nZShib29sKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTWVkaWFQcm9kdWNlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVByb2R1
Y2VyLmgKaW5kZXggYWQ0MzE5NDUxNTIyYjNlMTZmZTNmYzQwYWYyOTZlOWUwZDU4ZjRjZi4uOWIx
Zjg0MzQ0ZjE2ODQ3NzEzMGQ4ODI0OWQzNzc2MmJhODg4OWFhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9NZWRpYVByb2R1Y2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9N
ZWRpYVByb2R1Y2VyLmgKQEAgLTM4LDYgKzM4LDcgQEAgcHVibGljOgogICAgICAgICBSZXF1aXJl
c1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZyA9IDEgPDwgMywKICAgICAgICAgRXh0ZXJuYWxEZXZp
Y2VBdXRvUGxheUNhbmRpZGF0ZSA9IDEgPDwgNCwKICAgICAgICAgRGlkUGxheVRvRW5kID0gMSA8
PCA1LAorICAgICAgICBJc1NvdXJjZUVsZW1lbnRQbGF5aW5nID0gMSA8PCA2LAogICAgIH07CiAg
ICAgdHlwZWRlZiB1bnNpZ25lZCBNZWRpYVN0YXRlRmxhZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IDhlYTk2OWQ0NThkOTgxNGZhZGE5YjZiNjk2NmVhMjQ1NDdhMDgxZTcuLjlkMmQyNjYyZmU4
MjgwMDhiNTgyM2M3MGRiOWRjY2I1MTkzNmYxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTE4
Myw3ICsxMTgzLDcgQEAgdm9pZCBQYWdlOjplbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmcoYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgIHNldFNlc3Npb25JRChwcml2YXRlQnJvd3Np
bmdFbmFibGVkID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKLXZvaWQgUGFnZTo6dXBkYXRlSXNQbGF5aW5n
TWVkaWEoKQordm9pZCBQYWdlOjp1cGRhdGVJc1BsYXlpbmdNZWRpYSh1aW50NjRfdCBzb3VyY2VF
bGVtZW50SUQpCiB7CiAgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHN0YXRlID0g
TWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7
CkBAIC0xMTk1LDcgKzExOTUsNyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZUlzUGxheWluZ01lZGlhKCkK
IAogICAgIG1fbWVkaWFTdGF0ZSA9IHN0YXRlOwogCi0gICAgY2hyb21lKCkuY2xpZW50KCkuaXNQ
bGF5aW5nTWVkaWFEaWRDaGFuZ2Uoc3RhdGUpOworICAgIGNocm9tZSgpLmNsaWVudCgpLmlzUGxh
eWluZ01lZGlhRGlkQ2hhbmdlKHN0YXRlLCBzb3VyY2VFbGVtZW50SUQpOwogfQogCiB2b2lkIFBh
Z2U6OnNldE11dGVkKGJvb2wgbXV0ZWQpCkBAIC0xMjI0LDE1ICsxMjI0LDYgQEAgdm9pZCBQYWdl
OjpoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBlIGV2ZW50VHlwZSkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogfQotCi1ib29sIFBhZ2U6OmlzTWVkaWFFbGVtZW50UGF1c2VkKHVpbnQ2NF90
IGVsZW1lbnRJRCkKLXsKLSAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9IEhUTUxN
ZWRpYUVsZW1lbnQ6OmVsZW1lbnRXaXRoSUQoZWxlbWVudElEKSkKLSAgICAgICAgcmV0dXJuIGVs
ZW1lbnQtPnBhdXNlZCgpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19CiAjZW5kaWYKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggMTg4ZWI0ZDI3YzBkNDg4MDgxOTI0MWFkMDhlMmZmNDRlNTkwZWIxMS4uMjMyZDQ2YzdmYmU5
ZWQ4N2M3YjE5NWMxZDRjNmYxYmU5OWQ3NjZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTQzNiwxMyAr
NDM2LDEyIEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKTsgfQogCiAgICAgTWVkaWFQcm9kdWNl
cjo6TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX21lZGlhU3Rh
dGU7IH0KLSAgICB2b2lkIHVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgdm9pZCB1cGRhdGVJ
c1BsYXlpbmdNZWRpYSh1aW50NjRfdCk7CiAgICAgYm9vbCBpc011dGVkKCkgY29uc3QgeyByZXR1
cm4gbV9tdXRlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TXV0ZWQoYm9vbCk7CiAK
ICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRs
ZU1lZGlhRXZlbnQoTWVkaWFFdmVudFR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNN
ZWRpYUVsZW1lbnRQYXVzZWQodWludDY0X3QpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAppbmRleCBkZWVkYzNjNDdhZTY5MTFl
MWEzZjE1YThkZTdjOWQ2MzQwZDJkYzUyLi44NjhhOTRmZTI4OGE4NjBhMzYzNDEyOGE3MzQwOWRh
ZTk2MzVhYjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcApAQCAtNjIsMTAgKzYyLDE1IEBAIHZvaWQgV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjppc0ZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50UGF1
c2VkKHN0ZDo6ZnVuY3RpCiAgICAgaWYgKCFtX2ZvY3VzZWRNZWRpYUVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlZlB0cjxVbnNpZ25lZENhbGxiYWNrPiBjYWxsYmFjayA9IFVuc2ln
bmVkQ2FsbGJhY2s6OmNyZWF0ZShjYWxsYmFja0Z1bmN0aW9uKTsKLSAgICBXZWJQYWdlUHJveHkq
IHByb3h5ID0gbV9mb2N1c2VkTWVkaWFFbGVtZW50LT5maXJzdDsKLSAgICB1aW50NjRfdCBlbGVt
ZW50SUQgPSBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQtPnNlY29uZDsKLSAgICBwcm94eS0+aXNNZWRp
YUVsZW1lbnRQYXVzZWQoZWxlbWVudElELCBjYWxsYmFjayk7CisgICAgY2FsbGJhY2tGdW5jdGlv
bighbV9mb2N1c2VkTWVkaWFFbGVtZW50SXNQbGF5aW5nLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpO
b25lKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6Om1lZGlhRWxlbWVu
dElzUGxheWluZ0RpZENoYW5nZShXZWJQYWdlUHJveHkqIHByb3h5LCB1aW50NjRfdCBlbGVtZW50
SUQsIGJvb2wgaXNQbGF5aW5nKQoreworICAgIGlmIChtX2ZvY3VzZWRNZWRpYUVsZW1lbnQpIHsK
KyAgICAgICAgaWYgKHByb3h5ID09IG1fZm9jdXNlZE1lZGlhRWxlbWVudC0+Zmlyc3QgJiYgZWxl
bWVudElEID09IG1fZm9jdXNlZE1lZGlhRWxlbWVudC0+c2Vjb25kKQorICAgICAgICAgICAgbV9m
b2N1c2VkTWVkaWFFbGVtZW50SXNQbGF5aW5nID0gaXNQbGF5aW5nOworICAgIH0KIH0KIAogdm9p
ZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnNldEZvY3VzZWRNZWRpYUVsZW1lbnQoV2Vi
UGFnZVByb3h5JiBwcm94eSwgdWludDY0X3QgZWxlbWVudElEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oCmluZGV4IDVj
MjAxYjNlMmE2MjlhZThlOTI1N2E4ZGQ1MzhkNjMwMmRmMDEyZWEuLjM0MzgzNDliMjNlMDM3N2Zj
YzJjYjZmZWQ1ZjNhNTFlODRiNmUxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
cj4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CiAKICAgICB2b2lkIGlzRm9jdXNlZENvbnRlbnRN
ZWRpYUVsZW1lbnRQYXVzZWQoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPik7CisgICAgdm9pZCBtZWRpYUVsZW1lbnRJc1BsYXlpbmdEaWRDaGFuZ2UoV2ViUGFn
ZVByb3h5KiwgdWludDY0X3QsIGJvb2wpOwogCiAgICAgdm9pZCBzZXRGb2N1c2VkTWVkaWFFbGVt
ZW50KFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90KTsKICAgICB2b2lkIGNsZWFyRm9jdXNlZE1lZGlh
RWxlbWVudCgpOwpAQCAtNTksNiArNjAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
ZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Rm9jdXNlZE1lZGlhRWxlbWVudD4gbV9mb2N1c2VkTWVkaWFFbGVtZW50OworICAgIGJvb2wg
bV9mb2N1c2VkTWVkaWFFbGVtZW50SXNQbGF5aW5nIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBjODBmN2UxODQxMzQwN2M4ZTQzOWQ5MzZhMGRkZjJmNDMzZDFjYmIyLi45ZjI2MmFiMjI3
ZGE4ZDc3YzkyMTJmN2U5NmU1YTk3ZTRjZjU0ODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzg4MiwxOSArMzg4Miw2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBlIGV2ZW50VHlwZSkKICAgICAKICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZU1lZGlhRXZlbnQoZXZl
bnRUeXBlKSwgbV9wYWdlSUQpOwogfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6aXNNZWRpYUVsZW1l
bnRQYXVzZWQodWludDY0X3QgZWxlbWVudElELCBSZWZQdHI8VW5zaWduZWRDYWxsYmFjaz4gY2Fs
bGJhY2spCi17Ci0gICAgaWYgKCFpc1ZhbGlkKCkpIHsKLSAgICAgICAgY2FsbGJhY2stPmludmFs
aWRhdGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fY2FsbGJhY2tzLnB1dChjYWxsYmFj
ayk7Ci0KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OklzTWVkaWFFbGVt
ZW50UGF1c2VkKGVsZW1lbnRJRCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKLX0KICNlbmRpZgog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhib29sIG1h
eVN0YXJ0TWVkaWEpCkBAIC01OTUwLDggKzU5MzcsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5h
dmlnYXRpb25HZXN0dXJlU25hcHNob3RXYXNSZW1vdmVkKCkKICAgICBtX2lzU2hvd2luZ05hdmln
YXRpb25HZXN0dXJlU25hcHNob3QgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omlz
UGxheWluZ01lZGlhRGlkQ2hhbmdlKE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBzdGF0
ZSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZShNZWRpYVByb2R1
Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mgc3RhdGUsIHVpbnQ2NF90IHNvdXJjZUVsZW1lbnRJRCkKIHsK
KyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKKyAgICBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXIqIGZvY3VzTWFuYWdlciA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPigpOworICAgIEFTU0VSVChmb2N1c01hbmFnZXIpOwor
ICAgIGZvY3VzTWFuYWdlci0+bWVkaWFFbGVtZW50SXNQbGF5aW5nRGlkQ2hhbmdlKHRoaXMsIHNv
dXJjZUVsZW1lbnRJRCwgc3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpJc1NvdXJjZUVsZW1lbnRQbGF5
aW5nKTsKKyNlbmRpZgorCiAgICAgaWYgKHN0YXRlID09IG1fbWVkaWFTdGF0ZSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNTFj
MWJkNmIzMGIzNDRiNmExNTU4NTUwNGUyNDlhNGE0NTgzODgwZi4uYTlkMjljYzc2ZjY4ZjAyNTIz
MjkzNjUyMmU1NzgzNjNlMDIyNjE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtOTQzLDcgKzk0Myw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKICAgICBib29sIGhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50czsg
fQogICAgIHZvaWQgaGFuZGxlTWVkaWFFdmVudChXZWJDb3JlOjpNZWRpYUV2ZW50VHlwZSk7Ci0g
ICAgdm9pZCBpc01lZGlhRWxlbWVudFBhdXNlZCh1aW50NjRfdCwgUmVmUHRyPFVuc2lnbmVkQ2Fs
bGJhY2s+KTsKICNlbmRpZgogCiAgICAgLy8gV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudApAQCAt
MTAyNSw3ICsxMDI0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTaG93aW5nTmF2aWdhdGlvbkdl
c3R1cmVTbmFwc2hvdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTaG93aW5nTmF2aWdhdGlvbkdlc3R1
cmVTbmFwc2hvdDsgfQogCiAgICAgYm9vbCBpc1BsYXlpbmdBdWRpbygpIGNvbnN0IHsgcmV0dXJu
ICEhKG1fbWVkaWFTdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlv
KTsgfQotICAgIHZvaWQgaXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKKyAgICB2b2lkIGlzUGxheWluZ01lZGlhRGlkQ2hhbmdl
KFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncywgdWludDY0X3QpOwogCiAj
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAgICAgdm9pZCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0
aXZlTWVkaWFFbGVtZW50c0RpZENoYW5nZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGVkMDdjOTNiNTEwMWMyNDUy
MDYxZWUyNDM2YTllN2RjMGUxYzczNTIuLjllODM5YjQxNjMzYTZiZjc1MGUyZTM5OTY2ZmRhNzZj
NzY1ODVjMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgpAQCAtNDIyLDcgKzQyMiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94
eSB7CiAgICAgQ29udGVudEZpbHRlckRpZEJsb2NrTG9hZEZvckZyYW1lKFdlYkNvcmU6OkNvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgdWludDY0X3QgZnJhbWVJRCkK
ICNlbmRpZgogCi0gICAgSXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UodW5zaWduZWQgc3RhdGUpCisg
ICAgSXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UodW5zaWduZWQgc3RhdGUsIHVpbnQ2NF90IHNvdXJj
ZUVsZW1lbnRJRCkKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogICAgIEhhc01lZGlhU2Vz
c2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGJvb2wgc3RhdGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYmFm
NTY3MWVjYTY2ZDUxZWRjNjcxODIyNDRkMDA5YzUyYzdiNWQ1MC4uOGNiYjVhYjNkMDE0ZjNmZmEw
ZDAzOTU2MWI0YjgxZGNjYjczYjliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTQ5Niw3ICsxNDk2LDcgQEAgdm9pZCBQbHVn
aW5WaWV3OjpzZXRQbHVnaW5Jc1BsYXlpbmdBdWRpbyhib29sIHBsdWdpbklzUGxheWluZ0F1ZGlv
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3BsdWdpbklzUGxheWluZ0F1ZGlvID0gcGx1Z2lu
SXNQbGF5aW5nQXVkaW87Ci0gICAgbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUlz
UGxheWluZ01lZGlhKCk7CisgICAgbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUlz
UGxheWluZ01lZGlhKDApOwogfQogCiBib29sIFBsdWdpblZpZXc6OmlzTXV0ZWQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGVmN2ZhNTFiNzJjNzkwOGE0NGYwYjY0OTBhYTM3
N2JiODk5OTE5ZDguLmQ1YTA1YWI5NWJlYzBlNzUwNWZmYjJiNzU4OGM1MzY0ZmU4YmQ1YjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEwNTcsOSArMTA1Nyw5IEBAIGJvb2wgV2ViQ2hy
b21lQ2xpZW50OjpzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVW
aWV3KiBmcmFtZVZpCiAgICAgcmV0dXJuIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2hvdWxkVXNl
VGlsZWRCYWNraW5nRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7CiB9CiAKLXZvaWQgV2ViQ2hyb21l
Q2xpZW50Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpN
ZWRpYVN0YXRlRmxhZ3Mgc3RhdGUpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6aXNQbGF5aW5nTWVk
aWFEaWRDaGFuZ2UoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHN0YXRl
LCB1aW50NjRfdCBzb3VyY2VFbGVtZW50SUQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OklzUGxheWluZ01lZGlhRGlkQ2hhbmdlKHN0YXRlKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OklzUGxheWluZ01lZGlhRGlkQ2hhbmdl
KHN0YXRlLCBzb3VyY2VFbGVtZW50SUQpKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9O
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMjcwMjJkMmJhNGE4OTZiZjIyMzBlZDJlOWY5ZDMy
NzI1OTM4YzJlMi4uZWMyNWQyM2UxM2YzNTYyMGZhZWExNjYxYzQyNTY2NTgxNmZkZTUyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yOTEsNyArMjkxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgV2ViQ29y
ZTo6RnJhbWVWaWV3KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5
aW5nTWVkaWFEaWRDaGFuZ2UoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdz
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzLCB1aW50NjRfdCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VBY3Rpdml0eVN0YXRlKFdlYkNvcmU6OlBhZ2VBY3Rp
dml0eVN0YXRlOjpGbGFncykgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBl
NWRjODE5ZGU0MGM5NWM3YzZlM2QwOWI5NWY2ZTU0MWQ2MzY0ZmZhLi42ZDIxNGZmNjRlYzc3MGIz
MzRhZTgyMGMyYTBlZWVjNzU3MWZhODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MDY4LDEyICs0MDY4LDYgQEAgdm9pZCBXZWJQYWdl
OjpoYW5kbGVNZWRpYUV2ZW50KHVpbnQzMl90IGV2ZW50VHlwZSkKIHsKICAgICBtX3BhZ2UtPmhh
bmRsZU1lZGlhRXZlbnQoc3RhdGljX2Nhc3Q8TWVkaWFFdmVudFR5cGU+KGV2ZW50VHlwZSkpOwog
fQotCi12b2lkIFdlYlBhZ2U6OmlzTWVkaWFFbGVtZW50UGF1c2VkKHVpbnQ2NF90IGVsZW1lbnRJ
RCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLXsKLSAgICBib29sIHBhdXNlZCA9IG1fcGFnZS0+aXNN
ZWRpYUVsZW1lbnRQYXVzZWQoZWxlbWVudElEKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlVuc2lnbmVkQ2FsbGJhY2socGF1c2VkLCBjYWxsYmFja0lEKSk7Ci19CiAjZW5kaWYK
IAogdm9pZCBXZWJQYWdlOjpzZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KGJvb2wgbWF5U3Rh
cnRNZWRpYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IDA2NGIxMjVmMzIwNDVhZDU3NzMwODgwNDJhNmJkYTUwZTAzNmUyOWEuLjVjNGM4YmUyYTdh
YjA5MTdmZGM0ZGUzOTZkM2NiZjRiNTBkOTc1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNzUwLDcgKzc1MCw2IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQogICAgIHZvaWQgaGFuZGxlTWVkaWFFdmVudCh1aW50MzJf
dCAvKiBXZWJDb3JlOjpNZWRpYUV2ZW50VHlwZSAqLyk7Ci0gICAgdm9pZCBpc01lZGlhRWxlbWVu
dFBhdXNlZCh1aW50NjRfdCwgdWludDY0X3QpOwogI2VuZGlmCiAKICAgICB2b2lkIHVwZGF0ZU1h
aW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggN2NiNzAxZDFhOTQ2
ZGU3MGM1YjNjOTI3MGEzYzQzOTNkNzVmZjlhNC4uMDBhYjRmZDVhYzNhM2UzZjVjN2Q0NGM1OTk2
YWUyMTUzZmFiZTRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTMxNiw3ICszMTYsNiBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQog
ICAgIEhhbmRsZU1lZGlhRXZlbnQodWludDMyX3QgZXZlbnRUeXBlKQotICAgIElzTWVkaWFFbGVt
ZW50UGF1c2VkKHVpbnQ2NF90IGVsZW1lbnRJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICNlbmRp
ZgogCiAgICAgLy8gRklYTUU6IFRoaXMgYSBkdW1teSBtZXNzYWdlLCB0byBhdm9pZCBicmVha2lu
ZyB0aGUgYnVpbGQgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUK
</data>
<flag name="review"
          id="283467"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>