<?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>187684</bug_id>
          
          <creation_ts>2018-07-14 20:58:37 -0700</creation_ts>
          <short_desc>IOSurfaces should update the display mask when the window is moved to another screen.</short_desc>
          <delta_ts>2020-12-11 13:57:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>justin_fan</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1442273</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-14 20:58:37 -0700</bug_when>
    <thetext>The system API function CGIOSurfaceContextSetDisplayMask should be used to update the display mask.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442277</commentid>
    <comment_count>1</comment_count>
      <attachid>345052</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-14 21:35:57 -0700</bug_when>
    <thetext>Created attachment 345052
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442296</commentid>
    <comment_count>2</comment_count>
      <attachid>345061</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-15 10:23:10 -0700</bug_when>
    <thetext>Created attachment 345061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442297</commentid>
    <comment_count>3</comment_count>
      <attachid>345062</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-15 11:27:27 -0700</bug_when>
    <thetext>Created attachment 345062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442298</commentid>
    <comment_count>4</comment_count>
      <attachid>345063</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-15 12:18:04 -0700</bug_when>
    <thetext>Created attachment 345063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442303</commentid>
    <comment_count>5</comment_count>
      <attachid>345066</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-15 14:46:21 -0700</bug_when>
    <thetext>Created attachment 345066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442304</commentid>
    <comment_count>6</comment_count>
      <attachid>345067</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-15 14:53:14 -0700</bug_when>
    <thetext>Created attachment 345067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442305</commentid>
    <comment_count>7</comment_count>
      <attachid>345068</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-15 14:59:22 -0700</bug_when>
    <thetext>Created attachment 345068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442308</commentid>
    <comment_count>8</comment_count>
      <attachid>345069</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-15 15:23:12 -0700</bug_when>
    <thetext>Created attachment 345069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442321</commentid>
    <comment_count>9</comment_count>
      <attachid>345077</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-15 20:30:57 -0700</bug_when>
    <thetext>Created attachment 345077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442388</commentid>
    <comment_count>10</comment_count>
      <attachid>345077</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-07-16 08:47:18 -0700</bug_when>
    <thetext>Comment on attachment 345077
Patch

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

&gt; Source/WebCore/page/WindowObserver.h:31
&gt; +class WindowObserver {

I think this needs a different name. &quot;Window&quot; has multiple meanings in WebCore already (DOMWindow, the JS &quot;window&quot; object etc). Maybe this should be HostWindowObserver or something.

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.h:120
&gt; +#if ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)
&gt; +    , public WindowObserver
&gt; +#endif

Don&apos;t do this. Just always inherit.

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.h:1329
&gt; +    void windowScreenDidChange(uint32_t) override;

Can the uint32_t be a PlatformDisplayID?

&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm:415
&gt; +    // find virtual screen

Comment should be full sentence. This one doesn&apos;t add anything useful.

&gt; Source/WebCore/platform/graphics/cocoa/IOSurface.h:47
&gt; +#if ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)
&gt; +    : public WindowObserver
&gt; +#endif

Yuck.

&gt; Source/WebCore/platform/graphics/cocoa/IOSurface.h:180
&gt; +#if PLATFORM(MAC) &amp;&amp; ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)
&gt; +    WeakPtr&lt;HostWindow&gt; m_hostWindow;
&gt; +#endif

I really don&apos;t think we want ever IOSurface to have a weak ptr to hostWIndow. This layering feels all wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442438</commentid>
    <comment_count>11</comment_count>
      <attachid>345077</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-07-16 11:21:42 -0700</bug_when>
    <thetext>Comment on attachment 345077
Patch

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

&gt;&gt; Source/WebCore/page/WindowObserver.h:31
&gt;&gt; +class WindowObserver {
&gt; 
&gt; I think this needs a different name. &quot;Window&quot; has multiple meanings in WebCore already (DOMWindow, the JS &quot;window&quot; object etc). Maybe this should be HostWindowObserver or something.

Agreed.

&gt; Source/WebCore/page/WindowObserver.h:34
&gt; +    virtual void windowScreenDidChange(uint32_t) { };

Shouldn&apos;t this be just screenDidChange? It&apos;s probably also worth naming the parameter.

&gt; Source/WebCore/platform/HostWindow.h:82
&gt; +    virtual void registerWindowObserver(WindowObserver&amp;) = 0;
&gt; +    virtual void unregisterWindowObserver(WindowObserver&amp;) = 0;

registerObserver() ?

&gt; Source/WebCore/platform/graphics/ImageBuffer.h:69
&gt; -    WEBCORE_EXPORT static std::unique_ptr&lt;ImageBuffer&gt; create(const FloatSize&amp;, RenderingMode, float resolutionScale = 1, ColorSpace = ColorSpaceSRGB, const HostWindow* = nullptr);
&gt; +    WEBCORE_EXPORT static std::unique_ptr&lt;ImageBuffer&gt; create(const FloatSize&amp;, RenderingMode, float resolutionScale = 1, ColorSpace = ColorSpaceSRGB, HostWindow* = nullptr);

Why is this necessary?

&gt; Source/WebCore/platform/graphics/cocoa/IOSurface.mm:475
&gt; +#if PLATFORM(MAC) &amp;&amp; ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)
&gt; +void IOSurface::windowScreenDidChange(unsigned displayID)
&gt; +{
&gt; +    ASSERT(m_cgContext);
&gt; +    if (!m_cgContext)
&gt; +        return;
&gt; +    CGIOSurfaceContextSetDisplayMask(m_cgContext.get(), displayMaskForDisplay(displayID));
&gt; +}
&gt; +#endif

It seems it would be better to have a single observer and have it talk to all the IOSurface objects, rather than an observer for each IOSurface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442471</commentid>
    <comment_count>12</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-16 12:38:09 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #11)
&gt; Comment on attachment 345077 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=345077&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/page/WindowObserver.h:31
&gt; &gt;&gt; +class WindowObserver {
&gt; &gt; 
&gt; &gt; I think this needs a different name. &quot;Window&quot; has multiple meanings in WebCore already (DOMWindow, the JS &quot;window&quot; object etc). Maybe this should be HostWindowObserver or something.
&gt; 
&gt; Agreed.
&gt; 
&gt; &gt; Source/WebCore/page/WindowObserver.h:34
&gt; &gt; +    virtual void windowScreenDidChange(uint32_t) { };
&gt; 
&gt; Shouldn&apos;t this be just screenDidChange? It&apos;s probably also worth naming the
&gt; parameter.
&gt; 
&gt; &gt; Source/WebCore/platform/HostWindow.h:82
&gt; &gt; +    virtual void registerWindowObserver(WindowObserver&amp;) = 0;
&gt; &gt; +    virtual void unregisterWindowObserver(WindowObserver&amp;) = 0;
&gt; 
&gt; registerObserver() ?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ImageBuffer.h:69
&gt; &gt; -    WEBCORE_EXPORT static std::unique_ptr&lt;ImageBuffer&gt; create(const FloatSize&amp;, RenderingMode, float resolutionScale = 1, ColorSpace = ColorSpaceSRGB, const HostWindow* = nullptr);
&gt; &gt; +    WEBCORE_EXPORT static std::unique_ptr&lt;ImageBuffer&gt; create(const FloatSize&amp;, RenderingMode, float resolutionScale = 1, ColorSpace = ColorSpaceSRGB, HostWindow* = nullptr);
&gt; 
&gt; Why is this necessary?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cocoa/IOSurface.mm:475
&gt; &gt; +#if PLATFORM(MAC) &amp;&amp; ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)
&gt; &gt; +void IOSurface::windowScreenDidChange(unsigned displayID)
&gt; &gt; +{
&gt; &gt; +    ASSERT(m_cgContext);
&gt; &gt; +    if (!m_cgContext)
&gt; &gt; +        return;
&gt; &gt; +    CGIOSurfaceContextSetDisplayMask(m_cgContext.get(), displayMaskForDisplay(displayID));
&gt; &gt; +}
&gt; &gt; +#endif
&gt; 
&gt; It seems it would be better to have a single observer and have it talk to
&gt; all the IOSurface objects, rather than an observer for each IOSurface.

Thanks for reviewing, all! I will update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442693</commentid>
    <comment_count>13</comment_count>
      <attachid>345160</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-17 09:53:56 -0700</bug_when>
    <thetext>Created attachment 345160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442783</commentid>
    <comment_count>14</comment_count>
      <attachid>345160</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-07-17 14:06:40 -0700</bug_when>
    <thetext>Comment on attachment 345160
Patch

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

&gt; Source/WebCore/page/HostWindowObserver.h:30
&gt; +class PopupOpeningObserver {

Why is this file called HostWindowObserver and the class called PopupOpeningObserver?
Why does the patch think there are two versions of this file?

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.h:117
&gt; +class GraphicsContext3D : public RefCounted&lt;GraphicsContext3D&gt;, public HostWindowObserver {

See note below about layering.

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.h:1325
&gt; +    void screenDidChange(uint32_t) override;

Please make a type for the parameter, e.g. PlatformDisplayType or PlatformScreenType.

&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm:420
&gt; +    auto pixelFormat = adoptNS([[NSOpenGLPixelFormat alloc] initWithCGLPixelFormatObj:pixelFormatObj]);
&gt; +    
&gt; +    // Set virtual screen based on matching display mask.
&gt; +    GLint numberOfVirtualScreen = [pixelFormat numberOfVirtualScreens];
&gt; +    for (GLint virtualScreen = 0; virtualScreen &lt; numberOfVirtualScreen; virtualScreen++) {
&gt; +        GLint mask = 0;
&gt; +        [pixelFormat getValues:&amp;mask forAttribute:NSOpenGLPFAScreenMask forVirtualScreen:virtualScreen];
&gt; +        if (mask &amp; displayMaskOpenGL) {

Is there a CGL equivalent for getting the virtual screens and screen mask? We already have the pixelFormatObj - why create another one?

&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm:505
&gt; +    m_hostWindow = makeWeakPtr(hostWindow);
&gt; +    if (m_hostWindow)
&gt; +        m_hostWindow-&gt;registerObserver(*this);

HostWindowObserver is in /page/ and this class is in /platform/. We shouldn&apos;t layer things this way, having platform reference page. You&apos;ll need something in the middle to use as a protocol.

I also don&apos;t think it&apos;s right that this class have a weakPtr. It should never need to check whether an observer exists.

Also, we have a GraphicsContext3D manager class/object that it supposed to keep track of the contexts. Maybe the logic could be there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443089</commentid>
    <comment_count>15</comment_count>
      <attachid>345265</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-18 11:36:57 -0700</bug_when>
    <thetext>Created attachment 345265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443095</commentid>
    <comment_count>16</comment_count>
      <attachid>345265</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-07-18 11:42:09 -0700</bug_when>
    <thetext>Comment on attachment 345265
Patch

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

&gt; Source/WebCore/platform/graphics/cocoa/IOSurfaceManager.cpp:62
&gt; +    m_hostWindowMap.set(&amp;surface, hostWindow);

Do things ever get removed from here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443097</commentid>
    <comment_count>17</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-18 11:44:45 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #16)
&gt; Comment on attachment 345265 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=345265&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cocoa/IOSurfaceManager.cpp:62
&gt; &gt; +    m_hostWindowMap.set(&amp;surface, hostWindow);
&gt; 
&gt; Do things ever get removed from here?

Good point! I&apos;ll remove from the map when the surface is removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443101</commentid>
    <comment_count>18</comment_count>
      <attachid>345266</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-18 11:46:54 -0700</bug_when>
    <thetext>Created attachment 345266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443106</commentid>
    <comment_count>19</comment_count>
      <attachid>345266</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-07-18 12:01:58 -0700</bug_when>
    <thetext>Comment on attachment 345266
Patch

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

&gt; Source/WebCore/platform/graphics/cocoa/IOSurfaceManager.cpp:39
&gt; +        if (m_hostWindowMap.contains(surface) &amp;&amp; m_hostWindowMap.get(surface) == hostWindow)

Double hash lookup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443111</commentid>
    <comment_count>20</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-07-18 12:11:32 -0700</bug_when>
    <thetext>This doesn&apos;t feel like the right way to fix this problem. What if an IOSurface is being presented on both displays at the same time? What happens if the display mask changes in the middle of rendering? Maybe we should only set the display mask when getting the CGContextRef for an IOSurface?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443127</commentid>
    <comment_count>21</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-18 13:10:36 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #20)
&gt; This doesn&apos;t feel like the right way to fix this problem. What if an
&gt; IOSurface is being presented on both displays at the same time? What happens
&gt; if the display mask changes in the middle of rendering? Maybe we should only
&gt; set the display mask when getting the CGContextRef for an IOSurface?

These are good points. We are currently setting the display mask when getting the CGContextRef. The intention of this patch was to switch the GPU used by an IO surface, when the window is moved to another screen. Perhaps this is not needed, and we can stay on the same GPU?


Thanks for reviewing, all!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443129</commentid>
    <comment_count>22</comment_count>
      <attachid>345275</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-18 13:17:01 -0700</bug_when>
    <thetext>Created attachment 345275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443130</commentid>
    <comment_count>23</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-07-18 13:19:14 -0700</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #22)
&gt; Created attachment 345275 [details]
&gt; Patch

This patch should fix the double hash lookup. We should discuss if this patch is really needed. Perhaps we can stay on the same GPU, even if we move the window to a new screen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714080</commentid>
    <comment_count>24</comment_count>
      <attachid>345275</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-11 13:51:40 -0800</bug_when>
    <thetext>Comment on attachment 345275
Patch

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

&gt; Source/WebCore/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=187684

Radar?

&gt; Source/WebCore/ChangeLog:10
&gt; +        Create a new IOSurfaceManager which will keep a list of all IO surfaces. When the screen of a host window has changed,
&gt; +        update all IO surfaces with the new display mask. The IO surface manager keeps a mapping between IO surface context
&gt; +        and host window in order to know which IO surfaces should be updated.

What about GPU Process?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345052</attachid>
            <date>2018-07-14 21:35:57 -0700</date>
            <delta_ts>2018-07-15 10:23:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187684-20180714213556.patch</filename>
            <type>text/plain</type>
            <size>20613</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzgzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE4LTA3LTE0ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJT1N1cmZhY2VzIHNob3Vs
ZCB1cGRhdGUgdGhlIGRpc3BsYXkgbWFzayB3aGVuIHRoZSB3aW5kb3cgaWYgbW92ZWQgdG8gYW5v
dGhlciBzY3JlZW4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODc2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OnJlbGVhc2VDYXB0dXJlKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oOgorICAgICAgICAqIHBh
Z2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6YWRkV2luZG93T2JzZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpyZW1vdmVXaW5kb3dPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om5vdGlmeVBvcHVwT3BlbmluZ09ic2VydmVycyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyUG9wdXBPcGVuaW5nT2JzZXJ2
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp1bnJlZ2lzdGVyUG9wdXBP
cGVuaW5nT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAg
ICAgICogcGxhdGZvcm0vSG9zdFdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6fklPU3VyZmFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmRpc3BsYXlNYXNrRGlkQ2hhbmdlKToKKwogMjAxOC0w
Ny0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBT
aHJpbmsgQ2FjaGVkUmVzb3VyY2UgYW5kIHN1YmNsYXNzZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzMzgz
MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTAyOCw3ICsxMDI4LDcgQEAKIAkJMzdDNzM4RjQxRURCREU4RDAw
M0YyQjBCIC8qIERhdGVUaW1lQ2hvb3NlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDNzM4RjIxRURCREU4NzAwM0YyQjBCIC8qIERhdGVU
aW1lQ2hvb3NlckNsaWVudC5oICovOyB9OwogCQkzN0Q0NTZGRDFBOUE1MEQ4MDAzMzMwQTEgLyog
TG9jYWxpemFibGVTdHJpbmdzLnBtIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzN0Q0NTZGQjFBOUE1MEI2MDAzMzMwQTEgLyogTG9jYWxpemFibGVT
dHJpbmdzLnBtICovOyB9OwogCQkzN0UzNTI0RDEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0UzNTI0
QzEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzdGNTY3Q0UxNjUzNThGNDAwRERFOTJCIC8qIFBv
cHVwT3BlbmluZ09ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2JzZXJ2
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkz
N0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogV2luZG93T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NzJCMDk1MTY1MzU4NTYwMDBBNDlD
QSAvKiBXaW5kb3dPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTM3RjgxOEZEMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVz
cG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
RjgxOEZCMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0ZENDI5ODExODM2ODQ2
MDA5M0MwMjkgLyogVHJlZURlcHRoTGltaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3RkQ0Mjk3MTE4MzY4NDYwMDkzQzAyOSAvKiBUcmVlRGVwdGhM
aW1pdC5oICovOyB9OwogCQkzODdBRTk1QjFFOEU5MkVGMDAwMERFOTYgLyogSlNXZWJHUFVTaXpl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzODdBRTk1
OTFFOEU5MkVGMDAwMERFOTYgLyogSlNXZWJHUFVTaXplLmggKi87IH07CkBAIC03MDg4LDcgKzcw
ODgsNyBAQAogCQkzNzJDMDBEODEyOTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluZE9wdGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzc1Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEh5cGhlbmF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0
UnVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRSdW4uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0Eg
LyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Mzc3MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFdpbmRvd09ic2VydmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRvd09ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVl
c3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmxhcFRlc3RS
ZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3N0EzQThGMTVF
RkNFOUEwMDU5RjVDNyAvKiBOYXRpdmVJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE5hdGl2ZUltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzNzkxOUMyMTBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9zaXRpb25JdGVyYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTQwNyw3ICsxOTQwNyw2IEBACiAJ
CQkJMzFENTkxQjExNjY5N0E2QzAwRTZCRjAyIC8qIFBsdWdJbkNsaWVudC5oICovLAogCQkJCTVD
RkM0MzRFMTkyNDA2QTkwMEEwRDNCNSAvKiBQb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwICovLAog
CQkJCTVDRkM0MzRGMTkyNDA2QTkwMEEwRDNCNSAvKiBQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCAq
LywKLQkJCQkzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIu
aCAqLywKIAkJCQlCNzc2RDQzQzExMDQ1Mjc1MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCAq
LywKIAkJCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmggKi8sCiAJ
CQkJNDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5jcHAgKi8sCkBA
IC0xOTQ4OSw2ICsxOTQ4OCw3IEBACiAJCQkJQkM4MjQzRTcwRDBDRkQ3NTAwNDYwQzhGIC8qIFdp
bmRvd0ZlYXR1cmVzLmggKi8sCiAJCQkJN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRv
d0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgKi8sCiAJCQkJN0U5OUFGNTQwQjEzODQ2NDY4RkIw
MUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oICovLAorCQkJCTM3NzJCMDk1MTY1
MzU4NTYwMDBBNDlDQSAvKiBXaW5kb3dPYnNlcnZlci5oICovLAogCQkJCTkzNzEwODBEMURCNzU0
NTUwMDYwNzQ0RSAvKiBXaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbCAqLywKIAkJCQlFMTI3
MUExMzBFRUVDODA0MDBGNjEyMTMgLyogV29ya2VyTmF2aWdhdG9yLmNwcCAqLywKIAkJCQlFMTI3
MUEwQTBFRUVDNzdBMDBGNjEyMTMgLyogV29ya2VyTmF2aWdhdG9yLmggKi8sCkBAIC0yOTcyMSw3
ICsyOTcyMSw2IEBACiAJCQkJMDY2OEUxOEIwQUREOTYyNDAwNDEyOEUwIC8qIFBvcHVwTWVudS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUJDMTI4NzcwQjMzQUE2RDAwQzY5M0Q1IC8qIFBvcHVwTWVu
dUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQkUxMkIwRTk4MDkyRjAwODM1NTg4IC8q
IFBvcHVwTWVudVN0eWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzN0Y1NjdDRTE2NTM1OEY0MDBE
REU5MkIgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5
OURFMDgyNDVFNTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0
NkFGMkMxNEY0RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3NDZBRjJFMTRGNERERTYwMDNFN0E3MCAvKiBQb3NpdGlvbkVycm9yLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMwOTUxLDYgKzMwOTUwLDcgQEAKIAkJCQkwRjE1RUQ1QzFCN0VDN0M1MDBF
RERGRUIgLyogV2lsbENoYW5nZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODI0M0U5MEQw
Q0ZENzUwMDQ2MEM4RiAvKiBXaW5kb3dGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U5
OUFGNTMwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMzdGNTY3Q0UxNjUzNThGNDAwRERFOTJCIC8qIFdpbmRvd09ic2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjM1MjFBRDIwODEwOTJBMDBDMjg5MjIgLyogV2lu
ZG93UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTFCRjAwMTE1RkY2RkIwMDZGNTJDQSAv
KiBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTAxQkFBQTkxMzk1
MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIzMzgzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgU3BpbkJ1dHRvbkVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmQKICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50
SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudCh0aGlzKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9jYXB0dXJpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBpZiAo
UGFnZSogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
cGFnZS0+Y2hyb21lKCkucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcigqdGhpcyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5yZWdpc3RlcldpbmRvd09ic2VydmVy
KCp0aGlzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBV
cERvd25TdGF0ZSBvbGRVcERvd25TdGF0ZSA9IG1fdXBEb3duU3RhdGU7CkBAIC0yMDgsNyArMjA4
LDcgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6cmVsZWFzZUNhcHR1cmUoKQogICAgICAgICAg
ICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudChu
dWxscHRyKTsKICAgICAgICAgICAgIG1fY2FwdHVyaW5nID0gZmFsc2U7CiAgICAgICAgICAgICBp
ZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICAgICAgICAgIHBhZ2Ut
PmNocm9tZSgpLnVucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcigqdGhpcyk7CisgICAgICAg
ICAgICAgICAgcGFnZS0+Y2hyb21lKCkudW5yZWdpc3RlcldpbmRvd09ic2VydmVyKCp0aGlzKTsK
ICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Nw
aW5CdXR0b25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
MTIgKzI3LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgor
I2luY2x1ZGUgIldpbmRvd09ic2VydmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgU3BpbkJ1dHRvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQsIHB1Ymxp
YyBQb3B1cE9wZW5pbmdPYnNlcnZlciB7CitjbGFzcyBTcGluQnV0dG9uRWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBIVE1MRGl2RWxlbWVudCwgcHVibGljIFdpbmRvd09ic2VydmVyIHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKFNwaW5CdXR0b25FbGVtZW50KTsKIHB1YmxpYzoKICAgICBlbnVt
IFVwRG93blN0YXRlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDIzMzgz
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsMTIgKzQyLDEyIEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cExvYWREZWZlcnJlci5oIgotI2lu
Y2x1ZGUgIlBvcHVwT3BlbmluZ09ic2VydmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgor
I2luY2x1ZGUgIldpbmRvd09ic2VydmVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0u
aD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CkBAIC01MTAsNiArNTEwLDggQEAgdm9pZCBDaHJvbWU6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQ
bGF0ZgogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBmcmFtZS0+
ZG9jdW1lbnQoKS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7CiAgICAgfQorICAg
IAorICAgIG5vdGlmeVdpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpOwogfQogCiAvLyAt
LS0tLS0tLQpAQCAtNTcxLDIyICs1NzMsMjkgQEAgdm9pZCBDaHJvbWU6OmRpZFJlY2VpdmVEb2NU
eXBlKEZyYW1lJiBmcgogI2VuZGlmCiB9CiAKLXZvaWQgQ2hyb21lOjpyZWdpc3RlclBvcHVwT3Bl
bmluZ09ic2VydmVyKFBvcHVwT3BlbmluZ09ic2VydmVyJiBvYnNlcnZlcikKK3ZvaWQgQ2hyb21l
OjpyZWdpc3RlcldpbmRvd09ic2VydmVyKFdpbmRvd09ic2VydmVyJiBvYnNlcnZlcikKIHsKLSAg
ICBtX3BvcHVwT3BlbmluZ09ic2VydmVycy5hcHBlbmQoJm9ic2VydmVyKTsKKyAgICBtX3dpbmRv
d09ic2VydmVycy5hcHBlbmQoJm9ic2VydmVyKTsKIH0KIAotdm9pZCBDaHJvbWU6OnVucmVnaXN0
ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcihQb3B1cE9wZW5pbmdPYnNlcnZlciYgb2JzZXJ2ZXIpCit2
b2lkIENocm9tZTo6dW5yZWdpc3RlcldpbmRvd09ic2VydmVyKFdpbmRvd09ic2VydmVyJiBvYnNl
cnZlcikKIHsKLSAgICBib29sIHJlbW92ZWQgPSBtX3BvcHVwT3BlbmluZ09ic2VydmVycy5yZW1v
dmVGaXJzdCgmb2JzZXJ2ZXIpOworICAgIGJvb2wgcmVtb3ZlZCA9IG1fd2luZG93T2JzZXJ2ZXJz
LnJlbW92ZUZpcnN0KCZvYnNlcnZlcik7CiAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1v
dmVkKTsKIH0KIAogdm9pZCBDaHJvbWU6Om5vdGlmeVBvcHVwT3BlbmluZ09ic2VydmVycygpIGNv
bnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPFBvcHVwT3BlbmluZ09ic2VydmVyKj4gb2JzZXJ2ZXJz
KG1fcG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKTsKKyAgICBjb25zdCBWZWN0b3I8V2luZG93T2JzZXJ2
ZXIqPiBvYnNlcnZlcnMobV93aW5kb3dPYnNlcnZlcnMpOwogICAgIGZvciAoYXV0byYgb2JzZXJ2
ZXIgOiBvYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVyLT53aWxsT3BlblBvcHVwKCk7CiB9CiAK
K3ZvaWQgQ2hyb21lOjpub3RpZnlXaW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKSBjb25zdAoreworICAgIGNvbnN0IFZlY3RvcjxXaW5kb3dPYnNlcnZlcio+
IG9ic2VydmVycyhtX3dpbmRvd09ic2VydmVycyk7CisgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6
IG9ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXItPndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNw
bGF5SUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmgJKHJldmlzaW9uIDIzMzgzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE4MiwxNiArMTgyLDE3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlk
UmVjZWl2ZURvY1R5cGUoRnJhbWUmKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJQb3B1cE9wZW5pbmdP
YnNlcnZlcihQb3B1cE9wZW5pbmdPYnNlcnZlciYpOwotICAgIHZvaWQgdW5yZWdpc3RlclBvcHVw
T3BlbmluZ09ic2VydmVyKFBvcHVwT3BlbmluZ09ic2VydmVyJik7CisgICAgdm9pZCByZWdpc3Rl
cldpbmRvd09ic2VydmVyKFdpbmRvd09ic2VydmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1bnJl
Z2lzdGVyV2luZG93T2JzZXJ2ZXIoV2luZG93T2JzZXJ2ZXImKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKICAgICB2b2lkIG5vdGlmeVBvcHVwT3BlbmluZ09ic2VydmVycygpIGNvbnN0OworICAgIHZv
aWQgbm90aWZ5V2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKSBjb25zdDsK
IAogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBDaHJvbWVDbGllbnQmIG1fY2xpZW50OwogICAgIFBs
YXRmb3JtRGlzcGxheUlEIG1fZGlzcGxheUlEIHsgMCB9OwotICAgIFZlY3RvcjxQb3B1cE9wZW5p
bmdPYnNlcnZlcio+IG1fcG9wdXBPcGVuaW5nT2JzZXJ2ZXJzOworICAgIFZlY3RvcjxXaW5kb3dP
YnNlcnZlcio+IG1fd2luZG93T2JzZXJ2ZXJzOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29s
IG1faXNEaXNwYXRjaFZpZXdwb3J0RGF0YURpZENoYW5nZVN1cHByZXNzZWQgeyBmYWxzZSB9Owog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCShyZXZpc2lvbiAy
MzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDExICsyOCwxNCBAQAogCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNv
cjsKLQotY2xhc3MgSG9zdFdpbmRvdyB7CitjbGFzcyBXaW5kb3dPYnNlcnZlcjsKKyAgICAKK2Ns
YXNzIEhvc3RXaW5kb3cgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SG9zdFdpbmRvdz4gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEhvc3RXaW5kb3cpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBIb3N0V2luZG93KCkgPSBkZWZhdWx0OwpAQCAtNzQsNiArNzcsOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgRmxvYXRTaXplIG92ZXJyaWRlU2NyZWVuU2l6ZSgpIGNvbnN0ID0gMDsKKyAg
ICAKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJXaW5kb3dPYnNlcnZlcihXaW5kb3dPYnNlcnZl
ciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlcldpbmRvd09ic2VydmVyKFdpbmRv
d09ic2VydmVyJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkocmV2
aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhDbGFtcGVkTGVuZ3RoID0gNDA5NjsKIHN0YXRp
YyBjb25zdCBmbG9hdCBNYXhDbGFtcGVkQXJlYSA9IE1heENsYW1wZWRMZW5ndGggKiBNYXhDbGFt
cGVkTGVuZ3RoOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBIb3N0
V2luZG93KiBob3N0V2luZG93KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihuZXcgSW1hZ2VCdWZmZXIoc2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLCBob3N0V2luZG93LCBz
dWNjZXNzKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgJKHJldmlzaW9uIDIzMzgzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAg
Y2xhc3MgSW1hZ2VCdWZmZXIgewogICAgIGZyaWVuZCBjbGFzcyBJT1N1cmZhY2U7CiBwdWJsaWM6
CiAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJl
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZVNSR0IsIGNvbnN0IEhvc3RXaW5kb3cq
ID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNlU1JHQiwgSG9zdFdp
bmRvdyogPSBudWxscHRyKTsKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCosIGZsb2F0IHJlc29sdXRp
b25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNlU1JHQik7CiAjZW5kaWYKQEAgLTE2
NSw5ICsxNjUsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciB3aWxsIHBs
YWNlIGl0cyBzdWNjZXNzIGludG8gdGhlIGdpdmVuIG91dC12YXJpYWJsZQogICAgIC8vIHNvIHRo
YXQgY3JlYXRlKCkga25vd3Mgd2hlbiBpdCBzaG91bGQgcmV0dXJuIGZhaWx1cmUuCi0gICAgV0VC
Q09SRV9FWFBPUlQgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiwgYm9v
bCYgc3VjY2Vzcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBI
b3N0V2luZG93KiwgYm9vbCYgc3VjY2Vzcyk7CiAjaWYgVVNFKENHKQotICAgIEltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ0dDb2xvclNwYWNlUmVm
LCBSZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiwgYm9vbCYgc3VjY2Vzcyk7CisgICAg
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0Nv
bG9yU3BhY2VSZWYsIFJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKTsK
ICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dDsKICNlbGlmIFVTRShESVJFQ1QyRCkKICAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCosIGJvb2wmIHN1Y2Nlc3MpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHJldmlz
aW9uIDIzMzgzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcgogICAgIHJldHVybiBidWZmZXI7CiB9CiAK
LUltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCYgc3VjY2Vz
cykKK0ltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCYgc3VjY2VzcykK
ICAgICA6IG1fbG9naWNhbFNpemUoc2l6ZSkKICAgICAsIG1fcmVzb2x1dGlvblNjYWxlKHJlc29s
dXRpb25TY2FsZSkKIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplCiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CiAKLUltYWdlQnVmZmVy
OjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBpbWFnZUNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCYgc3VjY2VzcykKK0ltYWdlQnVm
ZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSBpbWFnZUNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCYgc3VjY2VzcykKICAgICA6IEltYWdl
QnVmZmVyKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGltYWdlQ29s
b3JTcGFjZSksIHJlbmRlcmluZ01vZGUsIGhvc3RXaW5kb3csIHN1Y2Nlc3MpCiB7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZh
Y2UuaAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlIDxvYmpjL29iamMuaD4KICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiV2luZG93T2JzZXJ2ZXIuaCIKIAogbmFtZXNwYWNl
IFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtNDAsNyArNDEsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBIb3N0V2luZG93OwogICAgIAotY2xhc3MgSU9TdXJmYWNlIGZp
bmFsIHsKK2NsYXNzIElPU3VyZmFjZSBmaW5hbAorI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRP
V1NFUlZFUl9CTE9DS0lORykKKyAgICA6IHB1YmxpYyBXaW5kb3dPYnNlcnZlcgorI2VuZGlmCit7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBG
b3JtYXQgewpAQCAtOTMsNiArOTgsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21JbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+KTsKICNlbmRpZgogCisgICAgV0VCQ09SRV9FWFBPUlQgfklPU3VyZmFjZSgpOwor
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbW92ZVRvUG9vbChzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiYmKTsKIAogICAgIHN0YXRpYyBJbnRTaXplIG1heGltdW1TaXplKCk7CkBA
IC0xMDksNyArMTE2LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgSU9TdXJmYWNlUmVmIHN1cmZh
Y2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7IH0KICAgICBXRUJDT1JFX0VYUE9S
VCBHcmFwaGljc0NvbnRleHQmIGVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIFdFQkNPUkVf
RVhQT1JUIENHQ29udGV4dFJlZiBlbnN1cmVQbGF0Zm9ybUNvbnRleHQoY29uc3QgSG9zdFdpbmRv
dyogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDR0NvbnRleHRSZWYgZW5zdXJlUGxh
dGZvcm1Db250ZXh0KEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CiAKICAgICBlbnVtIGNsYXNzIFN1
cmZhY2VTdGF0ZSB7CiAgICAgICAgIFZhbGlkLApAQCAtMTUzLDYgKzE2MCwxMCBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJvbVBvb2wo
SW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQpOwog
ICAgIEludFNpemUgY29udGV4dFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRTaXplOyB9
CiAgICAgdm9pZCBzZXRDb250ZXh0U2l6ZShJbnRTaXplKTsKKyAgICAKKyNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICB2b2lk
IHdpbmRvd1NjcmVlbkRpZENoYW5nZSh1aW50MzJfdCkgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAg
IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IG1fY29sb3JTcGFjZTsKICAgICBJbnRTaXplIG1f
c2l6ZTsKQEAgLTE2Myw2ICsxNzQsMTAgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0dDb250
ZXh0UmVmPiBtX2NnQ29udGV4dDsKIAogICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IG1fc3Vy
ZmFjZTsKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VS
VkVSX0JMT0NLSU5HKQorICAgIFdlYWtQdHI8SG9zdFdpbmRvdz4gbV9ob3N0V2luZG93OworI2Vu
ZGlmCiB9OwogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RG
OjpUZXh0U3RyZWFtJiwgY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCShy
ZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsyMjgsMTQgQEAgSU9TdXJm
YWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhYwogICAgIG1fdG90YWxCeXRlcyA9IElP
U3VyZmFjZUdldEFsbG9jU2l6ZShzdXJmYWNlKTsKIH0KIAorSU9TdXJmYWNlOjp+SU9TdXJmYWNl
KCkKK3sKKyNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisgICAg
aWYgKG1faG9zdFdpbmRvdykKKyAgICAgICAgbV9ob3N0V2luZG93LT51bnJlZ2lzdGVyV2luZG93
T2JzZXJ2ZXIoKnRoaXMpOworI2VuZGlmCit9CisKIEludFNpemUgSU9TdXJmYWNlOjptYXhpbXVt
U2l6ZSgpCiB7CiAgICAgSW50U2l6ZSBtYXhTaXplKGNsYW1wVG9JbnRlZ2VyKElPU3VyZmFjZUdl
dFByb3BlcnR5TWF4aW11bShrSU9TdXJmYWNlV2lkdGgpKSwgY2xhbXBUb0ludGVnZXIoSU9TdXJm
YWNlR2V0UHJvcGVydHlNYXhpbXVtKGtJT1N1cmZhY2VIZWlnaHQpKSk7CkBAIC0yNzIsNyArMjgw
LDcgQEAgdm9pZCBJT1N1cmZhY2U6OnNldENvbnRleHRTaXplKEludFNpemUgYwogICAgIG1fY29u
dGV4dFNpemUgPSBjb250ZXh0U2l6ZTsKIH0KIAotQ0dDb250ZXh0UmVmIElPU3VyZmFjZTo6ZW5z
dXJlUGxhdGZvcm1Db250ZXh0KGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitDR0NvbnRl
eHRSZWYgSU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvbnRleHQoSG9zdFdpbmRvdyogaG9zdFdp
bmRvdykKIHsKICAgICBpZiAobV9jZ0NvbnRleHQpCiAgICAgICAgIHJldHVybiBtX2NnQ29udGV4
dC5nZXQoKTsKQEAgLTMwNiw2ICszMTQsOSBAQCBDR0NvbnRleHRSZWYgSU9TdXJmYWNlOjplbnN1
cmVQbGF0Zm9ybUNvCiAgICAgICAgICAgICBkaXNwbGF5TWFzayA9IGRpc3BsYXlNYXNrRm9yRGlz
cGxheShob3N0V2luZG93LT5kaXNwbGF5SUQoKSk7CiAgICAgICAgIENHSU9TdXJmYWNlQ29udGV4
dFNldERpc3BsYXlNYXNrKG1fY2dDb250ZXh0LmdldCgpLCBkaXNwbGF5TWFzayk7CiAgICAgfQor
ICAgIG1faG9zdFdpbmRvdyA9IG1ha2VXZWFrUHRyKGhvc3RXaW5kb3cpOworICAgIGlmIChtX2hv
c3RXaW5kb3cpCisgICAgICAgIG1faG9zdFdpbmRvdy0+cmVnaXN0ZXJXaW5kb3dPYnNlcnZlcigq
dGhpcyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKICNlbmRpZgpAQCAt
NDUzLDYgKzQ2NCwxNiBAQCB2b2lkIElPU3VyZmFjZTo6bWlncmF0ZUNvbG9yU3BhY2VUb1Byb3Bl
CiAgICAgSU9TdXJmYWNlU2V0VmFsdWUobV9zdXJmYWNlLmdldCgpLCBrSU9TdXJmYWNlQ29sb3JT
cGFjZSwgY29sb3JTcGFjZVByb3BlcnRpZXMuZ2V0KCkpOwogfQogCisjaWYgUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCit2b2lkIElPU3Vy
ZmFjZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKHVuc2lnbmVkIGRpc3BsYXlJRCkKK3sKKyAgICBB
U1NFUlQobV9jZ0NvbnRleHQpOworICAgIGlmICghbV9jZ0NvbnRleHQpCisgICAgICAgIHJldHVy
bjsKKyAgICBDR0lPU3VyZmFjZUNvbnRleHRTZXREaXNwbGF5TWFzayhtX2NnQ29udGV4dC5nZXQo
KSwgZGlzcGxheU1hc2tGb3JEaXNwbGF5KGRpc3BsYXlJRCkpOworfQorI2VuZGlmCisKIHN0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJT1N1cmZhY2U6OkZvcm1h
dCBmb3JtYXQpCiB7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345061</attachid>
            <date>2018-07-15 10:23:10 -0700</date>
            <delta_ts>2018-07-15 11:27:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187684-20180715102309.patch</filename>
            <type>text/plain</type>
            <size>25605</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzg0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE4LTA3LTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJT1N1cmZhY2VzIHNob3Vs
ZCB1cGRhdGUgdGhlIGRpc3BsYXkgbWFzayB3aGVuIHRoZSB3aW5kb3cgaWYgbW92ZWQgdG8gYW5v
dGhlciBzY3JlZW4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODc2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OnJlbGVhc2VDYXB0dXJlKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oOgorICAgICAgICAqIHBh
Z2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6d2luZG93U2NyZWVuRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cmVnaXN0ZXJXaW5kb3dPYnNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnVucmVnaXN0ZXJXaW5kb3dPYnNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om5vdGlmeVBvcHVwT3BlbmluZ09ic2VydmVycyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om5vdGlmeVdpbmRvd1NjcmVlbkRpZENo
YW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyUG9wdXBPcGVu
aW5nT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp1bnJlZ2lz
dGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvQ2hyb21l
Lmg6CisgICAgICAgICogcGFnZS9Qb3B1cE9wZW5pbmdPYnNlcnZlci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBhZ2UvV2luZG93T2JzZXJ2ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGFnZS9Qb3B1cE9wZW5pbmdPYnNlcnZlci5oLgorICAgICAgICAoV2ViQ29yZTo6V2luZG93T2Jz
ZXJ2ZXI6OndpbGxPcGVuUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93T2JzZXJ2ZXI6
OndpbmRvd1NjcmVlbkRpZENoYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vSG9zdFdpbmRvdy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OklPU3VyZmFjZTo6fklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6
OmVuc3VyZVBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6Ondp
bmRvd1NjcmVlbkRpZENoYW5nZSk6CisKIDIwMTgtMDctMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2hyaW5rIFN0eWxlRmlsbERhdGEsIFN0eWxl
U3Ryb2tlRGF0YSBhbmQgU3R5bGVNaXNjRGF0YQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjMzODMzKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDI4LDcgKzEwMjgsNyBAQAogCQkzN0M3MzhGNDFFREJERThEMDAzRjJCMEIg
LyogRGF0ZVRpbWVDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzN0M3MzhGMjFFREJERTg3MDAzRjJCMEIgLyogRGF0ZVRpbWVDaG9v
c2VyQ2xpZW50LmggKi87IH07CiAJCTM3RDQ1NkZEMUE5QTUwRDgwMDMzMzBBMSAvKiBMb2NhbGl6
YWJsZVN0cmluZ3MucG0gaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDM3RDQ1NkZCMUE5QTUwQjYwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3Mu
cG0gKi87IH07CiAJCTM3RTM1MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RTM1MjRDMTI0NTBD
NjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQkzN0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogUG9wdXBPcGVu
aW5nT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTM3RjU2N0NF
MTY1MzU4RjQwMERERTkyQiAvKiBXaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc3MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFdp
bmRvd09ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMzdGODE4RkQwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGODE4RkIw
RDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3RkQ0Mjk4MTE4MzY4NDYwMDkzQzAy
OSAvKiBUcmVlRGVwdGhMaW1pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzdGRDQyOTcxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0Lmgg
Ki87IH07CiAJCTM4N0FFOTVCMUU4RTkyRUYwMDAwREU5NiAvKiBKU1dlYkdQVVNpemUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4N0FFOTU5MUU4RTky
RUYwMDAwREU5NiAvKiBKU1dlYkdQVVNpemUuaCAqLzsgfTsKQEAgLTcwODgsNyArNzA4OCw3IEBA
CiAJCTM3MkMwMEQ4MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSHlwaGVuYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzc2RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFJ1bi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1
cE9wZW5pbmdPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3B1
cE9wZW5pbmdPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzcyQjA5
NTE2NTM1ODU2MDAwQTQ5Q0EgLyogV2luZG93T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2luZG93T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVybGFwVGVzdFJlcXVlc3RD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3QTNBOEYxNUVGQ0U5QTAw
NTlGNUM3IC8qIE5hdGl2ZUltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTmF0aXZlSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTM3OTE5QzIxMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NDA3LDcgKzE5NDA3LDYgQEAKIAkJCQkzMUQ1
OTFCMTE2Njk3QTZDMDBFNkJGMDIgLyogUGx1Z0luQ2xpZW50LmggKi8sCiAJCQkJNUNGQzQzNEUx
OTI0MDZBOTAwQTBEM0I1IC8qIFBvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJNUNG
QzQzNEYxOTI0MDZBOTAwQTBEM0I1IC8qIFBvaW50ZXJMb2NrQ29udHJvbGxlci5oICovLAotCQkJ
CTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovLAog
CQkJCUI3NzZENDNDMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3BwICovLAogCQkJ
CUI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLywKIAkJCQk0NkI5
NTE4RDIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLywKQEAgLTE5NDg5
LDYgKzE5NDg4LDcgQEAKIAkJCQlCQzgyNDNFNzBEMENGRDc1MDA0NjBDOEYgLyogV2luZG93RmVh
dHVyZXMuaCAqLywKIAkJCQk3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNB
bGxvd2VkSW5kaWNhdG9yLmNwcCAqLywKIAkJCQk3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyog
V2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggKi8sCisJCQkJMzc3MkIwOTUxNjUzNTg1NjAw
MEE0OUNBIC8qIFdpbmRvd09ic2VydmVyLmggKi8sCiAJCQkJOTM3MTA4MEQxREI3NTQ1NTAwNjA3
NDRFIC8qIFdpbmRvd09yV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAogCQkJCUUxMjcxQTEzMEVF
RUM4MDQwMEY2MTIxMyAvKiBXb3JrZXJOYXZpZ2F0b3IuY3BwICovLAogCQkJCUUxMjcxQTBBMEVF
RUM3N0EwMEY2MTIxMyAvKiBXb3JrZXJOYXZpZ2F0b3IuaCAqLywKQEAgLTI5NzIxLDcgKzI5NzIx
LDYgQEAKIAkJCQkwNjY4RTE4QjBBREQ5NjI0MDA0MTI4RTAgLyogUG9wdXBNZW51LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBQkMxMjg3NzBCMzNBQTZEMDBDNjkzRDUgLyogUG9wdXBNZW51Q2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzNCRTEyQjBFOTgwOTJGMDA4MzU1ODggLyogUG9wdXBN
ZW51U3R5bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTM3RjU2N0NFMTY1MzU4RjQwMERERTkyQiAv
KiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5REUwODI0
NUU1OTAwMUU5QUJDIC8qIFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyQzE0
RjREREU2MDAzRTdBNzAgLyogUG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTc0NkFGMkUxNEY0RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICov
LApAQCAtMzA5NTEsNiArMzA5NTAsNyBAQAogCQkJCTBGMTVFRDVDMUI3RUM3QzUwMEVEREZFQiAv
KiBXaWxsQ2hhbmdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjQzRTkwRDBDRkQ3NTAw
NDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTk5QUY1MzBC
MTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzN0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogV2luZG93T2JzZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFMUJGMDAxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRv
d3NLZXlib2FyZENvZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDFCQUFBOTEzOTUwRTJDMDBG
N0FDRUIgLyogV2luZFJ1bGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAkocmV2aXNpb24gMjMzODMz
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZAogICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KHRoaXMpOwogICAgICAgICAgICAgICAg
ICAgICBtX2NhcHR1cmluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChQYWdlKiBw
YWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5j
aHJvbWUoKS5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFVwRG93blN0
YXRlIG9sZFVwRG93blN0YXRlID0gbV91cERvd25TdGF0ZTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2
b2lkIFNwaW5CdXR0b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVyZSgpCiAgICAgICAgICAgICBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KG51bGxwdHIp
OwogICAgICAgICAgICAgbV9jYXB0dXJpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChQYWdl
KiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21l
KCkudW5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgICAg
ICBwYWdlLT5jaHJvbWUoKS51bnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOwogICAgICAg
ICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRv
bkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGlu
QnV0dG9uRWxlbWVudC5oCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcs
MTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKLSNpbmNs
dWRlICJQb3B1cE9wZW5pbmdPYnNlcnZlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVk
ZSAiV2luZG93T2JzZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTcGlu
QnV0dG9uRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCwgcHVibGljIFBvcHVw
T3BlbmluZ09ic2VydmVyIHsKK2NsYXNzIFNwaW5CdXR0b25FbGVtZW50IGZpbmFsIDogcHVibGlj
IEhUTUxEaXZFbGVtZW50LCBwdWJsaWMgV2luZG93T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoU3BpbkJ1dHRvbkVsZW1lbnQpOwogcHVibGljOgogICAgIGVudW0gVXBEb3du
U3RhdGUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjMzODMzKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiAr
NDIsMTIgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCi0jaW5jbHVkZSAi
UG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVk
ZSAiV2luZG93T2JzZXJ2ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTUx
MCw2ICs1MTAsOCBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmCiAg
ICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVu
dCgpLT53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKTsKICAgICB9CisgICAgCisgICAg
bm90aWZ5V2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7CiB9CiAKIC8vIC0tLS0tLS0t
CkBAIC01NzEsMjIgKzU3MywyOSBAQCB2b2lkIENocm9tZTo6ZGlkUmVjZWl2ZURvY1R5cGUoRnJh
bWUmIGZyCiAjZW5kaWYKIH0KIAotdm9pZCBDaHJvbWU6OnJlZ2lzdGVyUG9wdXBPcGVuaW5nT2Jz
ZXJ2ZXIoUG9wdXBPcGVuaW5nT2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBDaHJvbWU6OnJlZ2lz
dGVyV2luZG93T2JzZXJ2ZXIoV2luZG93T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIG1fcG9w
dXBPcGVuaW5nT2JzZXJ2ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOworICAgIG1fd2luZG93T2JzZXJ2
ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOwogfQogCi12b2lkIENocm9tZTo6dW5yZWdpc3RlclBvcHVw
T3BlbmluZ09ic2VydmVyKFBvcHVwT3BlbmluZ09ic2VydmVyJiBvYnNlcnZlcikKK3ZvaWQgQ2hy
b21lOjp1bnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoV2luZG93T2JzZXJ2ZXImIG9ic2VydmVyKQog
ewotICAgIGJvb2wgcmVtb3ZlZCA9IG1fcG9wdXBPcGVuaW5nT2JzZXJ2ZXJzLnJlbW92ZUZpcnN0
KCZvYnNlcnZlcik7CisgICAgYm9vbCByZW1vdmVkID0gbV93aW5kb3dPYnNlcnZlcnMucmVtb3Zl
Rmlyc3QoJm9ic2VydmVyKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwog
fQogCiB2b2lkIENocm9tZTo6bm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCkgY29uc3QKIHsK
LSAgICBjb25zdCBWZWN0b3I8UG9wdXBPcGVuaW5nT2JzZXJ2ZXIqPiBvYnNlcnZlcnMobV9wb3B1
cE9wZW5pbmdPYnNlcnZlcnMpOworICAgIGNvbnN0IFZlY3RvcjxXaW5kb3dPYnNlcnZlcio+IG9i
c2VydmVycyhtX3dpbmRvd09ic2VydmVycyk7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG9i
c2VydmVycykKICAgICAgICAgb2JzZXJ2ZXItPndpbGxPcGVuUG9wdXAoKTsKIH0KIAordm9pZCBD
aHJvbWU6Om5vdGlmeVdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQpIGNvbnN0Cit7CisgICAgY29uc3QgVmVjdG9yPFdpbmRvd09ic2VydmVyKj4gb2JzZXJ2
ZXJzKG1fd2luZG93T2JzZXJ2ZXJzKTsKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogb2JzZXJ2
ZXJzKQorICAgICAgICBvYnNlcnZlci0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2
aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTgyLDE2ICsxODIsMTcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZl
RG9jVHlwZShGcmFtZSYpOwogCi0gICAgdm9pZCByZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVy
KFBvcHVwT3BlbmluZ09ic2VydmVyJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyUG9wdXBPcGVuaW5n
T2JzZXJ2ZXIoUG9wdXBPcGVuaW5nT2JzZXJ2ZXImKTsKKyAgICB2b2lkIHJlZ2lzdGVyV2luZG93
T2JzZXJ2ZXIoV2luZG93T2JzZXJ2ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIHVucmVnaXN0ZXJX
aW5kb3dPYnNlcnZlcihXaW5kb3dPYnNlcnZlciYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IHZvaWQgbm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCkgY29uc3Q7CisgICAgdm9pZCBub3Rp
ZnlXaW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0OwogCiAgICAg
UGFnZSYgbV9wYWdlOwogICAgIENocm9tZUNsaWVudCYgbV9jbGllbnQ7CiAgICAgUGxhdGZvcm1E
aXNwbGF5SUQgbV9kaXNwbGF5SUQgeyAwIH07Ci0gICAgVmVjdG9yPFBvcHVwT3BlbmluZ09ic2Vy
dmVyKj4gbV9wb3B1cE9wZW5pbmdPYnNlcnZlcnM7CisgICAgVmVjdG9yPFdpbmRvd09ic2VydmVy
Kj4gbV93aW5kb3dPYnNlcnZlcnM7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9pc0Rp
c3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZCB7IGZhbHNlIH07CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvcHVwT3BlbmluZ09ic2VydmVyLmgJKHJldmlz
aW9uIDIzMzgzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIu
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
Ci0gKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCi0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQb3B1cE9wZW5pbmdPYnNl
cnZlciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuUG9wdXAoKSA9IDA7Ci0K
LXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5Qb3B1cE9wZW5pbmdPYnNlcnZlcigpID0gZGVmYXVs
dDsKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1dpbmRvd09ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9XaW5kb3dPYnNlcnZlci5oCShyZXZpc2lvbiAyMzM4MzMpCShmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaDoyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1dpbmRvd09ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFBvcHVwT3BlbmluZ09ic2VydmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bE9wZW5Qb3B1cCgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflBvcHVwT3Blbmlu
Z09ic2VydmVyKCkgPSBkZWZhdWx0OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93T2JzZXJ2ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd09ic2VydmVyLmgJKHJldmlzaW9uIDIzMzgzMykK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93T2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNiwxMyArMjcsMTQgQEAKICNw
cmFnbWEgb25jZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFBvcHVwT3BlbmluZ09i
c2VydmVyIHsKKyAgICAKK2NsYXNzIFdpbmRvd09ic2VydmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbE9wZW5Qb3B1cCgpID0gMDsKLQorICAgIHZpcnR1YWwgdm9pZCB3aWxsT3Bl
blBvcHVwKCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UodWlu
dDMyX3QpIHsgfTsKKyAgICAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5Qb3B1cE9wZW5pbmdP
YnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5XaW5kb3dPYnNlcnZlcigpID0gZGVm
YXVsdDsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSG9zdFdpbmRvdy5oCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwxNCBA
QAogCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKLQotY2xhc3MgSG9zdFdpbmRvdyB7
CitjbGFzcyBXaW5kb3dPYnNlcnZlcjsKKyAgICAKK2NsYXNzIEhvc3RXaW5kb3cgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8SG9zdFdpbmRvdz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhv
c3RXaW5kb3cpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBIb3N0V2lu
ZG93KCkgPSBkZWZhdWx0OwpAQCAtNzQsNiArNzcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBG
bG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBh
dmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRTaXplIG92
ZXJyaWRlU2NyZWVuU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJXaW5kb3dPYnNlcnZlcihXaW5kb3dPYnNlcnZlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3RlcldpbmRvd09ic2VydmVyKFdpbmRvd09ic2VydmVyJikgPSAwOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdCBmbG9h
dCBNYXhDbGFtcGVkTGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhDbGFtcGVk
QXJlYSA9IE1heENsYW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwogCi1zdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsK
ICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IGJ1ZmZlcihuZXcgSW1hZ2VCdWZmZXIoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCByZW5kZXJpbmdNb2RlLCBob3N0V2luZG93LCBzdWNjZXNzKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDIz
MzgzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXIgewogICAg
IGZyaWVuZCBjbGFzcyBJT1N1cmZhY2U7CiBwdWJsaWM6CiAgICAgLy8gV2lsbCByZXR1cm4gYSBu
dWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJlLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0g
Q29sb3JTcGFjZVNSR0IsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENv
bG9yU3BhY2UgPSBDb2xvclNwYWNlU1JHQiwgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKICNpZiBV
U0UoRElSRUNUMkQpCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCosIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2Ug
PSBDb2xvclNwYWNlU1JHQik7CiAjZW5kaWYKQEAgLTE2NSw5ICsxNjUsOSBAQCBwcml2YXRlOgog
CiAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciB3aWxsIHBsYWNlIGl0cyBzdWNjZXNzIGludG8gdGhl
IGdpdmVuIG91dC12YXJpYWJsZQogICAgIC8vIHNvIHRoYXQgY3JlYXRlKCkga25vd3Mgd2hlbiBp
dCBzaG91bGQgcmV0dXJuIGZhaWx1cmUuCi0gICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZW5k
ZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiwgYm9vbCYgc3VjY2Vzcyk7CisgICAgV0VCQ09S
RV9FWFBPUlQgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBIb3N0V2luZG93KiwgYm9vbCYgc3VjY2Vz
cyk7CiAjaWYgVVNFKENHKQotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ0dDb2xvclNwYWNlUmVmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBI
b3N0V2luZG93KiwgYm9vbCYgc3VjY2Vzcyk7CisgICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0NvbG9yU3BhY2VSZWYsIFJlbmRlcmluZ01v
ZGUsIEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiB0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdDsKICNlbGlmIFVTRShESVJFQ1QyRCkK
ICAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCosIGJvb2wm
IHN1Y2Nlc3MpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHJldmlzaW9uIDIzMzgzMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFn
ZUJ1ZmZlcgogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLUltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ0dDb2xvclNw
YWNlUmVmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCYgc3VjY2VzcykKK0ltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ0dDb2xv
clNwYWNlUmVmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgSG9zdFdp
bmRvdyogaG9zdFdpbmRvdywgYm9vbCYgc3VjY2VzcykKICAgICA6IG1fbG9naWNhbFNpemUoc2l6
ZSkKICAgICAsIG1fcmVzb2x1dGlvblNjYWxlKHJlc29sdXRpb25TY2FsZSkKIHsKQEAgLTE5NSw3
ICsxOTUsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplCiAgICAg
c3VjY2VzcyA9IHRydWU7CiB9CiAKLUltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBpbWFnZUNvbG9y
U3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRvdyogaG9z
dFdpbmRvdywgYm9vbCYgc3VjY2VzcykKK0ltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBpbWFnZUNv
bG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdywgYm9vbCYgc3VjY2VzcykKICAgICA6IEltYWdlQnVmZmVyKHNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGltYWdlQ29sb3JTcGFjZSksIHJlbmRlcmluZ01vZGUs
IGhvc3RXaW5kb3csIHN1Y2Nlc3MpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjMzODMzKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxvYmpjL29iamMuaD4KICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVk
ZSAiV2luZG93T2JzZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJp
Z2h0OwpAQCAtNDAsNyArNDEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIb3N0
V2luZG93OwogICAgIAotY2xhc3MgSU9TdXJmYWNlIGZpbmFsIHsKK2NsYXNzIElPU3VyZmFjZSBm
aW5hbAorI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICA6
IHB1YmxpYyBXaW5kb3dPYnNlcnZlcgorI2VuZGlmCit7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBGb3JtYXQgewpAQCAtOTMsNiArOTgsOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZy
b21JbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+KTsKICNlbmRpZgogCisg
ICAgV0VCQ09SRV9FWFBPUlQgfklPU3VyZmFjZSgpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgbW92ZVRvUG9vbChzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmKTsKIAogICAg
IHN0YXRpYyBJbnRTaXplIG1heGltdW1TaXplKCk7CkBAIC0xMDksNyArMTE2LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3N1
cmZhY2UuZ2V0KCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQmIGVuc3Vy
ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIENHQ29udGV4dFJlZiBlbnN1
cmVQbGF0Zm9ybUNvbnRleHQoY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBDR0NvbnRleHRSZWYgZW5zdXJlUGxhdGZvcm1Db250ZXh0KEhvc3RXaW5kb3cq
ID0gbnVsbHB0cik7CiAKICAgICBlbnVtIGNsYXNzIFN1cmZhY2VTdGF0ZSB7CiAgICAgICAgIFZh
bGlkLApAQCAtMTUzLDYgKzE2MCwxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0
U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQpOwogICAgIEludFNpemUgY29udGV4dFNpemUo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRTaXplOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0U2l6
ZShJbnRTaXplKTsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNT
X1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZSh1
aW50MzJfdCkgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VS
ZWY+IG1fY29sb3JTcGFjZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKQEAgLTE2Myw2ICsxNzQsMTAg
QEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBtX2NnQ29udGV4dDsKIAog
ICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IG1fc3VyZmFjZTsKKworI2lmIFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIFdlYWtQ
dHI8SG9zdFdpbmRvdz4gbV9ob3N0V2luZG93OworI2VuZGlmCiB9OwogCiBXRUJDT1JFX0VYUE9S
VCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgV2Vi
Q29yZTo6SU9TdXJmYWNlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTIyOCw2ICsyMjgsMTQgQEAgSU9TdXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNl
UmVmIHN1cmZhYwogICAgIG1fdG90YWxCeXRlcyA9IElPU3VyZmFjZUdldEFsbG9jU2l6ZShzdXJm
YWNlKTsKIH0KIAorSU9TdXJmYWNlOjp+SU9TdXJmYWNlKCkKK3sKKyNpZiBFTkFCTEUoV0VCUFJP
Q0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisgICAgaWYgKG1faG9zdFdpbmRvdykKKyAgICAg
ICAgbV9ob3N0V2luZG93LT51bnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOworI2VuZGlm
Cit9CisKIEludFNpemUgSU9TdXJmYWNlOjptYXhpbXVtU2l6ZSgpCiB7CiAgICAgSW50U2l6ZSBt
YXhTaXplKGNsYW1wVG9JbnRlZ2VyKElPU3VyZmFjZUdldFByb3BlcnR5TWF4aW11bShrSU9TdXJm
YWNlV2lkdGgpKSwgY2xhbXBUb0ludGVnZXIoSU9TdXJmYWNlR2V0UHJvcGVydHlNYXhpbXVtKGtJ
T1N1cmZhY2VIZWlnaHQpKSk7CkBAIC0yNzIsNyArMjgwLDcgQEAgdm9pZCBJT1N1cmZhY2U6OnNl
dENvbnRleHRTaXplKEludFNpemUgYwogICAgIG1fY29udGV4dFNpemUgPSBjb250ZXh0U2l6ZTsK
IH0KIAotQ0dDb250ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1Db250ZXh0KGNvbnN0
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitDR0NvbnRleHRSZWYgSU9TdXJmYWNlOjplbnN1cmVQ
bGF0Zm9ybUNvbnRleHQoSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBpZiAobV9jZ0Nv
bnRleHQpCiAgICAgICAgIHJldHVybiBtX2NnQ29udGV4dC5nZXQoKTsKQEAgLTMwNiw2ICszMTQs
OSBAQCBDR0NvbnRleHRSZWYgSU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvCiAgICAgICAgICAg
ICBkaXNwbGF5TWFzayA9IGRpc3BsYXlNYXNrRm9yRGlzcGxheShob3N0V2luZG93LT5kaXNwbGF5
SUQoKSk7CiAgICAgICAgIENHSU9TdXJmYWNlQ29udGV4dFNldERpc3BsYXlNYXNrKG1fY2dDb250
ZXh0LmdldCgpLCBkaXNwbGF5TWFzayk7CiAgICAgfQorICAgIG1faG9zdFdpbmRvdyA9IG1ha2VX
ZWFrUHRyKGhvc3RXaW5kb3cpOworICAgIGlmIChtX2hvc3RXaW5kb3cpCisgICAgICAgIG1faG9z
dFdpbmRvdy0+cmVnaXN0ZXJXaW5kb3dPYnNlcnZlcigqdGhpcyk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShob3N0V2luZG93KTsKICNlbmRpZgpAQCAtNDUzLDYgKzQ2NCwxNiBAQCB2b2lkIElP
U3VyZmFjZTo6bWlncmF0ZUNvbG9yU3BhY2VUb1Byb3BlCiAgICAgSU9TdXJmYWNlU2V0VmFsdWUo
bV9zdXJmYWNlLmdldCgpLCBrSU9TdXJmYWNlQ29sb3JTcGFjZSwgY29sb3JTcGFjZVByb3BlcnRp
ZXMuZ2V0KCkpOwogfQogCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19X
SU5ET1dTRVJWRVJfQkxPQ0tJTkcpCit2b2lkIElPU3VyZmFjZTo6d2luZG93U2NyZWVuRGlkQ2hh
bmdlKHVuc2lnbmVkIGRpc3BsYXlJRCkKK3sKKyAgICBBU1NFUlQobV9jZ0NvbnRleHQpOworICAg
IGlmICghbV9jZ0NvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBDR0lPU3VyZmFjZUNvbnRl
eHRTZXREaXNwbGF5TWFzayhtX2NnQ29udGV4dC5nZXQoKSwgZGlzcGxheU1hc2tGb3JEaXNwbGF5
KGRpc3BsYXlJRCkpOworfQorI2VuZGlmCisKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQpCiB7CiAgICAgc3dpdGNo
IChmb3JtYXQpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345062</attachid>
            <date>2018-07-15 11:27:27 -0700</date>
            <delta_ts>2018-07-15 12:18:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187684-20180715112726.patch</filename>
            <type>text/plain</type>
            <size>26494</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzg0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTA3LTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJT1N1cmZhY2VzIHNob3Vs
ZCB1cGRhdGUgdGhlIGRpc3BsYXkgbWFzayB3aGVuIHRoZSB3aW5kb3cgaWYgbW92ZWQgdG8gYW5v
dGhlciBzY3JlZW4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODc2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OnJlbGVhc2VDYXB0dXJlKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oOgorICAgICAgICAqIHBh
Z2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6d2luZG93U2NyZWVuRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cmVnaXN0ZXJXaW5kb3dPYnNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnVucmVnaXN0ZXJXaW5kb3dPYnNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om5vdGlmeVBvcHVwT3BlbmluZ09ic2VydmVycyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om5vdGlmeVdpbmRvd1NjcmVlbkRpZENo
YW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyUG9wdXBPcGVu
aW5nT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp1bnJlZ2lz
dGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvQ2hyb21l
Lmg6CisgICAgICAgICogcGFnZS9Qb3B1cE9wZW5pbmdPYnNlcnZlci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBhZ2UvV2luZG93T2JzZXJ2ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGFnZS9Qb3B1cE9wZW5pbmdPYnNlcnZlci5oLgorICAgICAgICAoV2ViQ29yZTo6V2luZG93T2Jz
ZXJ2ZXI6OndpbGxPcGVuUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93T2JzZXJ2ZXI6
OndpbmRvd1NjcmVlbkRpZENoYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vSG9zdFdpbmRvdy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZh
Y2U6On5JT1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjplbnN1cmVQbGF0
Zm9ybUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjp3aW5kb3dTY3JlZW5E
aWRDaGFuZ2UpOgorCiAyMDE4LTA3LTE0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFNocmluayBTdHlsZUZpbGxEYXRhLCBTdHlsZVN0cm9rZURhdGEg
YW5kIFN0eWxlTWlzY0RhdGEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzMzgzMykKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTAyOCw3ICsxMDI4LDcgQEAKIAkJMzdDNzM4RjQxRURCREU4RDAwM0YyQjBCIC8qIERhdGVUaW1l
Q2hvb3NlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzdDNzM4RjIxRURCREU4NzAwM0YyQjBCIC8qIERhdGVUaW1lQ2hvb3NlckNsaWVudC5o
ICovOyB9OwogCQkzN0Q0NTZGRDFBOUE1MEQ4MDAzMzMwQTEgLyogTG9jYWxpemFibGVTdHJpbmdz
LnBtIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
N0Q0NTZGQjFBOUE1MEI2MDAzMzMwQTEgLyogTG9jYWxpemFibGVTdHJpbmdzLnBtICovOyB9Owog
CQkzN0UzNTI0RDEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0UzNTI0QzEyNDUwQzY2MDBCQUY1RDkg
LyogSW5wdXRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJMzdGNTY3Q0UxNjUzNThGNDAwRERFOTJCIC8qIFBvcHVwT3BlbmluZ09ic2VydmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzcyQjA5
NTE2NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzN0Y1NjdDRTE2NTM1OEY0MDBE
REU5MkIgLyogV2luZG93T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBXaW5kb3dPYnNlcnZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3
RjgxOEZEMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RjgxOEZCMEQ2NTc2MDYwMDVF
MUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0ZENDI5ODExODM2ODQ2MDA5M0MwMjkgLyogVHJlZURl
cHRoTGltaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3RkQ0Mjk3MTE4MzY4NDYwMDkzQzAyOSAvKiBUcmVlRGVwdGhMaW1pdC5oICovOyB9OwogCQkz
ODdBRTk1QjFFOEU5MkVGMDAwMERFOTYgLyogSlNXZWJHUFVTaXplLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzODdBRTk1OTFFOEU5MkVGMDAwMERFOTYg
LyogSlNXZWJHUFVTaXplLmggKi87IH07CkBAIC03MDg4LDcgKzcwODgsNyBAQAogCQkzNzJDMDBE
ODEyOTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRmluZE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Mzc1Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEh5cGhlbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRSdW4uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2Jz
ZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9wdXBPcGVuaW5nT2Jz
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc3MkIwOTUxNjUzNTg1NjAw
MEE0OUNBIC8qIFdpbmRvd09ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdpbmRvd09ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzRB
QkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBO
YXRpdmVJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5h
dGl2ZUltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzkxOUMyMTBC
N0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUG9zaXRpb25JdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xOTQwNyw3ICsxOTQwNyw2IEBACiAJCQkJMzFENTkxQjExNjY5N0E2
QzAwRTZCRjAyIC8qIFBsdWdJbkNsaWVudC5oICovLAogCQkJCTVDRkM0MzRFMTkyNDA2QTkwMEEw
RDNCNSAvKiBQb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwICovLAogCQkJCTVDRkM0MzRGMTkyNDA2
QTkwMEEwRDNCNSAvKiBQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCAqLywKLQkJCQkzNzcyQjA5NTE2
NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCAqLywKIAkJCQlCNzc2RDQz
QzExMDQ1Mjc1MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCAqLywKIAkJCQlCNzc2RDQzQTEx
MDQ1MjVEMDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmggKi8sCiAJCQkJNDZCOTUxOEQyMDdENjMy
QTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5jcHAgKi8sCkBAIC0xOTQ4OSw2ICsxOTQ4OCw3
IEBACiAJCQkJQkM4MjQzRTcwRDBDRkQ3NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmggKi8s
CiAJCQkJN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGlj
YXRvci5jcHAgKi8sCiAJCQkJN0U5OUFGNTQwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3Vz
QWxsb3dlZEluZGljYXRvci5oICovLAorCQkJCTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBX
aW5kb3dPYnNlcnZlci5oICovLAogCQkJCTkzNzEwODBEMURCNzU0NTUwMDYwNzQ0RSAvKiBXaW5k
b3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbCAqLywKIAkJCQlFMTI3MUExMzBFRUVDODA0MDBGNjEy
MTMgLyogV29ya2VyTmF2aWdhdG9yLmNwcCAqLywKIAkJCQlFMTI3MUEwQTBFRUVDNzdBMDBGNjEy
MTMgLyogV29ya2VyTmF2aWdhdG9yLmggKi8sCkBAIC0yOTcyMSw3ICsyOTcyMSw2IEBACiAJCQkJ
MDY2OEUxOEIwQUREOTYyNDAwNDEyOEUwIC8qIFBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQUJDMTI4NzcwQjMzQUE2RDAwQzY5M0Q1IC8qIFBvcHVwTWVudUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMzQkUxMkIwRTk4MDkyRjAwODM1NTg4IC8qIFBvcHVwTWVudVN0eWxlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkzN0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogUG9wdXBPcGVu
aW5nT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OURFMDgyNDVFNTkwMDFFOUFC
QyAvKiBQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMkMxNEY0RERFNjAwM0U3
QTcwIC8qIFBvc2l0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjJFMTRG
NERERTYwMDNFN0E3MCAvKiBQb3NpdGlvbkVycm9yLmggaW4gSGVhZGVycyAqLywKQEAgLTMwOTUx
LDYgKzMwOTUwLDcgQEAKIAkJCQkwRjE1RUQ1QzFCN0VDN0M1MDBFRERGRUIgLyogV2lsbENoYW5n
ZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODI0M0U5MEQwQ0ZENzUwMDQ2MEM4RiAvKiBX
aW5kb3dGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U5OUFGNTMwQjEzODQ2NDY4RkIw
MUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MzdGNTY3Q0UxNjUzNThGNDAwRERFOTJCIC8qIFdpbmRvd09ic2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NjM1MjFBRDIwODEwOTJBMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxRTFCRjAwMTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9hcmRD
b2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTAxQkFBQTkxMzk1MEUyQzAwRjdBQ0VCIC8qIFdp
bmRSdWxlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NwaW5CdXR0b25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMzgzMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmQKICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNldENhcHR1
cmluZ01vdXNlRXZlbnRzRWxlbWVudCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgbV9jYXB0
dXJpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3Vt
ZW50KCkucGFnZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkucmVn
aXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcigqdGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwYWdlLT5jaHJvbWUoKS5yZWdpc3RlcldpbmRvd09ic2VydmVyKCp0aGlzKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBVcERvd25TdGF0ZSBvbGRVcERv
d25TdGF0ZSA9IG1fdXBEb3duU3RhdGU7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBTcGluQnV0
dG9uRWxlbWVudDo6cmVsZWFzZUNhcHR1cmUoKQogICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudChudWxscHRyKTsKICAgICAgICAg
ICAgIG1fY2FwdHVyaW5nID0gZmFsc2U7CiAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGRv
Y3VtZW50KCkucGFnZSgpKQotICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLnVucmVnaXN0
ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcigqdGhpcyk7CisgICAgICAgICAgICAgICAgcGFnZS0+Y2hy
b21lKCkudW5yZWdpc3RlcldpbmRvd09ic2VydmVyKCp0aGlzKTsKICAgICAgICAgfQogICAgIH0K
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1l
bnQuaAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3Bp
bkJ1dHRvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDEyIEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCi0jaW5jbHVkZSAiUG9wdXBP
cGVuaW5nT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIldpbmRvd09i
c2VydmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU3BpbkJ1dHRvbkVsZW1l
bnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQsIHB1YmxpYyBQb3B1cE9wZW5pbmdPYnNl
cnZlciB7CitjbGFzcyBTcGluQnV0dG9uRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxl
bWVudCwgcHVibGljIFdpbmRvd09ic2VydmVyIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KFNwaW5CdXR0b25FbGVtZW50KTsKIHB1YmxpYzoKICAgICBlbnVtIFVwRG93blN0YXRlIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDIzMzgzMykKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTIgKzQyLDEyIEBACiAj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cExvYWREZWZlcnJlci5oIgotI2luY2x1ZGUgIlBvcHVwT3Blbmlu
Z09ic2VydmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1l
c3BhY2UuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgorI2luY2x1ZGUgIldpbmRvd09i
c2VydmVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0uaD4KICNpbmNsdWRlIDx3dGYv
U2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01MTAsNiArNTEwLDgg
QEAgdm9pZCBDaHJvbWU6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0ZgogICAgICAgICBpZiAo
ZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+d2luZG93
U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7CiAgICAgfQorICAgIAorICAgIG5vdGlmeVdpbmRv
d1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpOwogfQogCiAvLyAtLS0tLS0tLQpAQCAtNTcxLDIy
ICs1NzMsMjkgQEAgdm9pZCBDaHJvbWU6OmRpZFJlY2VpdmVEb2NUeXBlKEZyYW1lJiBmcgogI2Vu
ZGlmCiB9CiAKLXZvaWQgQ2hyb21lOjpyZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKFBvcHVw
T3BlbmluZ09ic2VydmVyJiBvYnNlcnZlcikKK3ZvaWQgQ2hyb21lOjpyZWdpc3RlcldpbmRvd09i
c2VydmVyKFdpbmRvd09ic2VydmVyJiBvYnNlcnZlcikKIHsKLSAgICBtX3BvcHVwT3BlbmluZ09i
c2VydmVycy5hcHBlbmQoJm9ic2VydmVyKTsKKyAgICBtX3dpbmRvd09ic2VydmVycy5hcHBlbmQo
Jm9ic2VydmVyKTsKIH0KIAotdm9pZCBDaHJvbWU6OnVucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNl
cnZlcihQb3B1cE9wZW5pbmdPYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lkIENocm9tZTo6dW5yZWdp
c3RlcldpbmRvd09ic2VydmVyKFdpbmRvd09ic2VydmVyJiBvYnNlcnZlcikKIHsKLSAgICBib29s
IHJlbW92ZWQgPSBtX3BvcHVwT3BlbmluZ09ic2VydmVycy5yZW1vdmVGaXJzdCgmb2JzZXJ2ZXIp
OworICAgIGJvb2wgcmVtb3ZlZCA9IG1fd2luZG93T2JzZXJ2ZXJzLnJlbW92ZUZpcnN0KCZvYnNl
cnZlcik7CiAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVkKTsKIH0KIAogdm9pZCBD
aHJvbWU6Om5vdGlmeVBvcHVwT3BlbmluZ09ic2VydmVycygpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
VmVjdG9yPFBvcHVwT3BlbmluZ09ic2VydmVyKj4gb2JzZXJ2ZXJzKG1fcG9wdXBPcGVuaW5nT2Jz
ZXJ2ZXJzKTsKKyAgICBjb25zdCBWZWN0b3I8V2luZG93T2JzZXJ2ZXIqPiBvYnNlcnZlcnMobV93
aW5kb3dPYnNlcnZlcnMpOwogICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBvYnNlcnZlcnMpCiAg
ICAgICAgIG9ic2VydmVyLT53aWxsT3BlblBvcHVwKCk7CiB9CiAKK3ZvaWQgQ2hyb21lOjpub3Rp
ZnlXaW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKSBjb25z
dAoreworICAgIGNvbnN0IFZlY3RvcjxXaW5kb3dPYnNlcnZlcio+IG9ic2VydmVycyhtX3dpbmRv
d09ic2VydmVycyk7CisgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG9ic2VydmVycykKKyAgICAg
ICAgb2JzZXJ2ZXItPndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlzaW9uIDIzMzgz
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4
MiwxNiArMTgyLDE3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZURvY1R5cGUoRnJh
bWUmKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcihQb3B1cE9wZW5p
bmdPYnNlcnZlciYpOwotICAgIHZvaWQgdW5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKFBv
cHVwT3BlbmluZ09ic2VydmVyJik7CisgICAgdm9pZCByZWdpc3RlcldpbmRvd09ic2VydmVyKFdp
bmRvd09ic2VydmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1bnJlZ2lzdGVyV2luZG93T2JzZXJ2
ZXIoV2luZG93T2JzZXJ2ZXImKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIG5vdGlm
eVBvcHVwT3BlbmluZ09ic2VydmVycygpIGNvbnN0OworICAgIHZvaWQgbm90aWZ5V2luZG93U2Ny
ZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKSBjb25zdDsKIAogICAgIFBhZ2UmIG1fcGFn
ZTsKICAgICBDaHJvbWVDbGllbnQmIG1fY2xpZW50OwogICAgIFBsYXRmb3JtRGlzcGxheUlEIG1f
ZGlzcGxheUlEIHsgMCB9OwotICAgIFZlY3RvcjxQb3B1cE9wZW5pbmdPYnNlcnZlcio+IG1fcG9w
dXBPcGVuaW5nT2JzZXJ2ZXJzOworICAgIFZlY3RvcjxXaW5kb3dPYnNlcnZlcio+IG1fd2luZG93
T2JzZXJ2ZXJzOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1faXNEaXNwYXRjaFZpZXdw
b3J0RGF0YURpZENoYW5nZVN1cHByZXNzZWQgeyBmYWxzZSB9OwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BvcHVwT3BlbmluZ09ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9Qb3B1cE9wZW5pbmdPYnNlcnZlci5oCShyZXZpc2lvbiAyMzM4MzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvcHVwT3BlbmluZ09ic2VydmVyLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUKLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgot
ICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotICogTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQot
ICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUG9wdXBPcGVuaW5nT2JzZXJ2ZXIgewotcHVi
bGljOgotICAgIHZpcnR1YWwgdm9pZCB3aWxsT3BlblBvcHVwKCkgPSAwOwotCi1wcm90ZWN0ZWQ6
Ci0gICAgdmlydHVhbCB+UG9wdXBPcGVuaW5nT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7Ci19OwotICAg
IAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9XaW5k
b3dPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93T2Jz
ZXJ2ZXIuaAkocmV2aXNpb24gMjMzODMzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvcHVw
T3BlbmluZ09ic2VydmVyLmg6MjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dP
YnNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisg
KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQb3B1cE9w
ZW5pbmdPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuUG9wdXAo
KSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5Qb3B1cE9wZW5pbmdPYnNlcnZlcigp
ID0gZGVmYXVsdDsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1dpbmRvd09ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9XaW5kb3dPYnNlcnZlci5oCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1dpbmRvd09ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1
IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjYsMTMgKzI3LDE0IEBACiAjcHJhZ21hIG9uY2UK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQb3B1cE9wZW5pbmdPYnNlcnZlciB7Cisg
ICAgCitjbGFzcyBXaW5kb3dPYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdp
bGxPcGVuUG9wdXAoKSA9IDA7Ci0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5Qb3B1cCgpIHsg
fTsKKyAgICB2aXJ0dWFsIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQzMl90KSB7IH07
CisgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+UG9wdXBPcGVuaW5nT2JzZXJ2ZXIoKSA9
IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+V2luZG93T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CiB9Owog
ICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vSG9zdFdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hv
c3RXaW5kb3cuaAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
SG9zdFdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsMTQgQEAKIAogI2luY2x1
ZGUgIldpZGdldC5oIgogCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDdXJzb3I7Ci0KLWNsYXNzIEhvc3RXaW5kb3cgeworY2xhc3MgV2lu
ZG93T2JzZXJ2ZXI7CisgICAgCitjbGFzcyBIb3N0V2luZG93IDogcHVibGljIENhbk1ha2VXZWFr
UHRyPEhvc3RXaW5kb3c+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIb3N0V2luZG93KTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSG9zdFdpbmRvdygpID0gZGVm
YXVsdDsKQEAgLTc0LDYgKzc3LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRTaXplIHNj
cmVlblNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFNpemUgYXZhaWxhYmxlU2Ny
ZWVuU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBvdmVycmlkZVNjcmVl
blNpemUoKSBjb25zdCA9IDA7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyV2luZG93
T2JzZXJ2ZXIoV2luZG93T2JzZXJ2ZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0
ZXJXaW5kb3dPYnNlcnZlcihXaW5kb3dPYnNlcnZlciYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHAJKHJldmlzaW9uIDIzMzgzMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3QgZmxvYXQgTWF4Q2xhbXBl
ZExlbmd0aCA9IDQwOTY7CiBzdGF0aWMgY29uc3QgZmxvYXQgTWF4Q2xhbXBlZEFyZWEgPSBNYXhD
bGFtcGVkTGVuZ3RoICogTWF4Q2xhbXBlZExlbmd0aDsKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgYm9vbCBz
dWNjZXNzID0gZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIo
bmV3IEltYWdlQnVmZmVyKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVy
aW5nTW9kZSwgaG9zdFdpbmRvdywgc3VjY2VzcykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAyMzM4MzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIEltYWdlQnVmZmVyIHsKICAgICBmcmllbmQgY2xh
c3MgSU9TdXJmYWNlOwogcHVibGljOgogICAgIC8vIFdpbGwgcmV0dXJuIGEgbnVsbCBwb2ludGVy
IG9uIGFsbG9jYXRpb24gZmFpbHVyZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5n
TW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2VT
UkdCLCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0g
Q29sb3JTcGFjZVNSR0IsIEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CiAjaWYgVVNFKERJUkVDVDJE
KQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JTcGFj
ZVNSR0IpOwogI2VuZGlmCkBAIC0xNjUsOSArMTY1LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRo
aXMgY29uc3RydWN0b3Igd2lsbCBwbGFjZSBpdHMgc3VjY2VzcyBpbnRvIHRoZSBnaXZlbiBvdXQt
dmFyaWFibGUKICAgICAvLyBzbyB0aGF0IGNyZWF0ZSgpIGtub3dzIHdoZW4gaXQgc2hvdWxkIHJl
dHVybiBmYWlsdXJlLgotICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwg
Y29uc3QgSG9zdFdpbmRvdyosIGJvb2wmIHN1Y2Nlc3MpOworICAgIFdFQkNPUkVfRVhQT1JUIElt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSwgUmVuZGVyaW5nTW9kZSwgSG9zdFdpbmRvdyosIGJvb2wmIHN1Y2Nlc3MpOwogI2lmIFVT
RShDRykKLSAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENHQ29sb3JTcGFjZVJlZiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRvdyos
IGJvb2wmIHN1Y2Nlc3MpOworICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ0dDb2xvclNwYWNlUmVmLCBSZW5kZXJpbmdNb2RlLCBIb3N0V2lu
ZG93KiwgYm9vbCYgc3VjY2Vzcyk7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gdG9DRkRhdGEo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFBy
ZXNlcnZlUmVzb2x1dGlvbikgY29uc3Q7CiAjZWxpZiBVU0UoRElSRUNUMkQpCiAgICAgSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
LCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqLCBib29sJiBzdWNjZXNzKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjM5LDcgKzIzOSw3IEBAIFZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZl
cjo6dG9CR1JBRGF0YSgKICAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1JbWFnZUJ1ZmZlcjo6
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRv
dyosIGJvb2wmIHN1Y2Nlc3MpCitJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgSG9zdFdpbmRvdyosIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2Rh
dGEoSW50U2l6ZShzaXplKSwgcmVuZGVyaW5nTW9kZSkKICAgICAsIG1fbG9naWNhbFNpemUoc2l6
ZSkKICAgICAsIG1fcmVzb2x1dGlvblNjYWxlKHJlc29sdXRpb25TY2FsZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXIKICAgICByZXR1cm4gYnVm
ZmVyOwogfQogCi1JbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJv
b2wmIHN1Y2Nlc3MpCitJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJvb2wm
IHN1Y2Nlc3MpCiAgICAgOiBtX2xvZ2ljYWxTaXplKHNpemUpCiAgICAgLCBtX3Jlc29sdXRpb25T
Y2FsZShyZXNvbHV0aW9uU2NhbGUpCiB7CkBAIC0xOTUsNyArMTk1LDcgQEAgSW1hZ2VCdWZmZXI6
OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZQogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQogCi1J
bWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJvb2wmIHN1Y2Nlc3Mp
CitJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJvb2wmIHN1Y2Nlc3MpCiAg
ICAgOiBJbWFnZUJ1ZmZlcihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNhY2hlZENHQ29sb3JTcGFj
ZShpbWFnZUNvbG9yU3BhY2UpLCByZW5kZXJpbmdNb2RlLCBob3N0V2luZG93LCBzdWNjZXNzKQog
ewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJm
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvSU9TdXJmYWNlLmgJKHJldmlzaW9uIDIzMzgzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSA8b2JqYy9vYmpjLmg+CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIldpbmRvd09ic2VydmVyLmgiCiAK
IG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTQwLDcgKzQxLDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSG9zdFdpbmRvdzsKICAgICAKLWNsYXNzIElP
U3VyZmFjZSBmaW5hbCB7CitjbGFzcyBJT1N1cmZhY2UgZmluYWwKKyNpZiBFTkFCTEUoV0VCUFJP
Q0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisgICAgOiBwdWJsaWMgV2luZG93T2JzZXJ2ZXIK
KyNlbmRpZgorewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVu
dW0gY2xhc3MgRm9ybWF0IHsKQEAgLTkzLDYgKzk4LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tSW1hZ2VCdWZmZXIoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPik7CiAjZW5kaWYKIAorICAgIFdFQkNPUkVfRVhQT1JUIH5JT1N1
cmZhY2UoKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIG1vdmVUb1Bvb2woc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJik7CiAKICAgICBzdGF0aWMgSW50U2l6ZSBtYXhpbXVt
U2l6ZSgpOwpAQCAtMTA5LDcgKzExNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIElPU3VyZmFj
ZVJlZiBzdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgpOyB9CiAgICAgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBlbnN1cmVHcmFwaGljc0NvbnRleHQoKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBDR0NvbnRleHRSZWYgZW5zdXJlUGxhdGZvcm1Db250ZXh0KGNvbnN0
IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgQ0dDb250ZXh0UmVm
IGVuc3VyZVBsYXRmb3JtQ29udGV4dChIb3N0V2luZG93KiA9IG51bGxwdHIpOwogCiAgICAgZW51
bSBjbGFzcyBTdXJmYWNlU3RhdGUgewogICAgICAgICBWYWxpZCwKQEAgLTE1Myw2ICsxNjAsMTAg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gc3VyZmFj
ZUZyb21Qb29sKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiwg
Rm9ybWF0KTsKICAgICBJbnRTaXplIGNvbnRleHRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0U2l6ZTsgfQogICAgIHZvaWQgc2V0Q29udGV4dFNpemUoSW50U2l6ZSk7CisgICAgCisjaWYg
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcp
CisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UodWludDMyX3QpIG92ZXJyaWRlOworI2Vu
ZGlmCiAKICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBtX2NvbG9yU3BhY2U7CiAgICAg
SW50U2l6ZSBtX3NpemU7CkBAIC0xNjMsNiArMTc0LDEwIEBAIHByaXZhdGU6CiAgICAgUmV0YWlu
UHRyPENHQ29udGV4dFJlZj4gbV9jZ0NvbnRleHQ7CiAKICAgICBSZXRhaW5QdHI8SU9TdXJmYWNl
UmVmPiBtX3N1cmZhY2U7CisKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNT
X1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICBXZWFrUHRyPEhvc3RXaW5kb3c+IG1faG9zdFdp
bmRvdzsKKyNlbmRpZgogfTsKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNiArMjI4LDE0
IEBAIElPU3VyZmFjZTo6SU9TdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWMKICAgICBtX3RvdGFs
Qnl0ZXMgPSBJT1N1cmZhY2VHZXRBbGxvY1NpemUoc3VyZmFjZSk7CiB9CiAKK0lPU3VyZmFjZTo6
fklPU3VyZmFjZSgpCit7CisjaWYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NL
SU5HKQorICAgIGlmIChtX2hvc3RXaW5kb3cpCisgICAgICAgIG1faG9zdFdpbmRvdy0+dW5yZWdp
c3RlcldpbmRvd09ic2VydmVyKCp0aGlzKTsKKyNlbmRpZgorfQorCiBJbnRTaXplIElPU3VyZmFj
ZTo6bWF4aW11bVNpemUoKQogewogICAgIEludFNpemUgbWF4U2l6ZShjbGFtcFRvSW50ZWdlcihJ
T1N1cmZhY2VHZXRQcm9wZXJ0eU1heGltdW0oa0lPU3VyZmFjZVdpZHRoKSksIGNsYW1wVG9JbnRl
Z2VyKElPU3VyZmFjZUdldFByb3BlcnR5TWF4aW11bShrSU9TdXJmYWNlSGVpZ2h0KSkpOwpAQCAt
MjcyLDcgKzI4MCw3IEBAIHZvaWQgSU9TdXJmYWNlOjpzZXRDb250ZXh0U2l6ZShJbnRTaXplIGMK
ICAgICBtX2NvbnRleHRTaXplID0gY29udGV4dFNpemU7CiB9CiAKLUNHQ29udGV4dFJlZiBJT1N1
cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dChjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93
KQorQ0dDb250ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1Db250ZXh0KEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgaWYgKG1fY2dDb250ZXh0KQogICAgICAgICByZXR1cm4g
bV9jZ0NvbnRleHQuZ2V0KCk7CkBAIC0zMDYsNiArMzE0LDkgQEAgQ0dDb250ZXh0UmVmIElPU3Vy
ZmFjZTo6ZW5zdXJlUGxhdGZvcm1DbwogICAgICAgICAgICAgZGlzcGxheU1hc2sgPSBkaXNwbGF5
TWFza0ZvckRpc3BsYXkoaG9zdFdpbmRvdy0+ZGlzcGxheUlEKCkpOwogICAgICAgICBDR0lPU3Vy
ZmFjZUNvbnRleHRTZXREaXNwbGF5TWFzayhtX2NnQ29udGV4dC5nZXQoKSwgZGlzcGxheU1hc2sp
OwogICAgIH0KKyAgICBtX2hvc3RXaW5kb3cgPSBtYWtlV2Vha1B0cihob3N0V2luZG93KTsKKyAg
ICBpZiAobV9ob3N0V2luZG93KQorICAgICAgICBtX2hvc3RXaW5kb3ctPnJlZ2lzdGVyV2luZG93
T2JzZXJ2ZXIoKnRoaXMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaG9zdFdpbmRvdyk7CiAj
ZW5kaWYKQEAgLTQ1Myw2ICs0NjQsMTYgQEAgdm9pZCBJT1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNw
YWNlVG9Qcm9wZQogICAgIElPU3VyZmFjZVNldFZhbHVlKG1fc3VyZmFjZS5nZXQoKSwga0lPU3Vy
ZmFjZUNvbG9yU3BhY2UsIGNvbG9yU3BhY2VQcm9wZXJ0aWVzLmdldCgpKTsKIH0KIAorI2lmIFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQor
dm9pZCBJT1N1cmZhY2U6OndpbmRvd1NjcmVlbkRpZENoYW5nZSh1bnNpZ25lZCBkaXNwbGF5SUQp
Cit7CisgICAgQVNTRVJUKG1fY2dDb250ZXh0KTsKKyAgICBpZiAoIW1fY2dDb250ZXh0KQorICAg
ICAgICByZXR1cm47CisgICAgQ0dJT1N1cmZhY2VDb250ZXh0U2V0RGlzcGxheU1hc2sobV9jZ0Nv
bnRleHQuZ2V0KCksIGRpc3BsYXlNYXNrRm9yRGlzcGxheShkaXNwbGF5SUQpKTsKK30KKyNlbmRp
ZgorCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSU9TdXJm
YWNlOjpGb3JtYXQgZm9ybWF0KQogewogICAgIHN3aXRjaCAoZm9ybWF0KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345063</attachid>
            <date>2018-07-15 12:18:04 -0700</date>
            <delta_ts>2018-07-15 14:46:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187684-20180715121803.patch</filename>
            <type>text/plain</type>
            <size>32150</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzg0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE4LTA3LTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJTyBzdXJmYWNlcyBhbmQg
M0QgZ3JhcGhpY3MgY29udGV4dHMgc2hvdWxkIHVwZGF0ZSB0aGUgZGlzcGxheSBtYXNrIHdoZW4g
dGhlIHdpbmRvdyBpZiBtb3ZlZCB0byBhbm90aGVyIHNjcmVlbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzY4NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9TcGluQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9u
RWxlbWVudDo6cmVsZWFzZUNhcHR1cmUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NwaW5CdXR0
b25FbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lOjpyZWdpc3RlcldpbmRvd09ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
dW5yZWdpc3RlcldpbmRvd09ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6bm90
aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZTo6bm90aWZ5V2luZG93U2NyZWVuRGlkQ2hhbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZTo6cmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWU6OnVucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcik6IERlbGV0
ZWQuCisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL1BvcHVwT3Blbmlu
Z09ic2VydmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9XaW5kb3dPYnNlcnZlci5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvcHVwT3BlbmluZ09ic2VydmVyLmguCisg
ICAgICAgIChXZWJDb3JlOjpXaW5kb3dPYnNlcnZlcjo6d2lsbE9wZW5Qb3B1cCk6CisgICAgICAg
IChXZWJDb3JlOjpXaW5kb3dPYnNlcnZlcjo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFn
ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0M0RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlkZW50aWZ5QW5kU2V0Q3VycmVudEdQ
VSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0
M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRl
eHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6d2luZG93U2NyZWVu
RGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6On5JT1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
SU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9T
dXJmYWNlOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorCiAyMDE4LTA3LTE0ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNocmluayBTdHlsZUZpbGxE
YXRhLCBTdHlsZVN0cm9rZURhdGEgYW5kIFN0eWxlTWlzY0RhdGEKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIz
MzgzMykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTAyOCw3ICsxMDI4LDcgQEAKIAkJMzdDNzM4RjQxRURCREU4
RDAwM0YyQjBCIC8qIERhdGVUaW1lQ2hvb3NlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDNzM4RjIxRURCREU4NzAwM0YyQjBCIC8qIERh
dGVUaW1lQ2hvb3NlckNsaWVudC5oICovOyB9OwogCQkzN0Q0NTZGRDFBOUE1MEQ4MDAzMzMwQTEg
LyogTG9jYWxpemFibGVTdHJpbmdzLnBtIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzN0Q0NTZGQjFBOUE1MEI2MDAzMzMwQTEgLyogTG9jYWxpemFi
bGVTdHJpbmdzLnBtICovOyB9OwogCQkzN0UzNTI0RDEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRU
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0Uz
NTI0QzEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzdGNTY3Q0UxNjUzNThGNDAwRERFOTJCIC8q
IFBvcHVwT3BlbmluZ09ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2Jz
ZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkzN0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogV2luZG93T2JzZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NzJCMDk1MTY1MzU4NTYwMDBB
NDlDQSAvKiBXaW5kb3dPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTM3RjgxOEZEMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJM
UmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3RjgxOEZCMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0ZENDI5ODExODM2
ODQ2MDA5M0MwMjkgLyogVHJlZURlcHRoTGltaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RkQ0Mjk3MTE4MzY4NDYwMDkzQzAyOSAvKiBUcmVlRGVw
dGhMaW1pdC5oICovOyB9OwogCQkzODdBRTk1QjFFOEU5MkVGMDAwMERFOTYgLyogSlNXZWJHUFVT
aXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzODdB
RTk1OTFFOEU5MkVGMDAwMERFOTYgLyogSlNXZWJHUFVTaXplLmggKi87IH07CkBAIC03MDg4LDcg
KzcwODgsNyBAQAogCQkzNzJDMDBEODEyOTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluZE9wdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc1Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEh5cGhlbmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVGQyAvKiBU
ZXh0UnVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRSdW4u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5
Q0EgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzc3MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFdpbmRvd09ic2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRvd09ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJl
cXVlc3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmxhcFRl
c3RSZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3N0EzQThG
MTVFRkNFOUEwMDU5RjVDNyAvKiBOYXRpdmVJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE5hdGl2ZUltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzNzkxOUMyMTBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9zaXRpb25JdGVyYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTQwNyw3ICsxOTQwNyw2IEBA
CiAJCQkJMzFENTkxQjExNjY5N0E2QzAwRTZCRjAyIC8qIFBsdWdJbkNsaWVudC5oICovLAogCQkJ
CTVDRkM0MzRFMTkyNDA2QTkwMEEwRDNCNSAvKiBQb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwICov
LAogCQkJCTVDRkM0MzRGMTkyNDA2QTkwMEEwRDNCNSAvKiBQb2ludGVyTG9ja0NvbnRyb2xsZXIu
aCAqLywKLQkJCQkzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2JzZXJ2
ZXIuaCAqLywKIAkJCQlCNzc2RDQzQzExMDQ1Mjc1MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmNw
cCAqLywKIAkJCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmggKi8s
CiAJCQkJNDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5jcHAgKi8s
CkBAIC0xOTQ4OSw2ICsxOTQ4OCw3IEBACiAJCQkJQkM4MjQzRTcwRDBDRkQ3NTAwNDYwQzhGIC8q
IFdpbmRvd0ZlYXR1cmVzLmggKi8sCiAJCQkJN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdp
bmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgKi8sCiAJCQkJN0U5OUFGNTQwQjEzODQ2NDY4
RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oICovLAorCQkJCTM3NzJCMDk1
MTY1MzU4NTYwMDBBNDlDQSAvKiBXaW5kb3dPYnNlcnZlci5oICovLAogCQkJCTkzNzEwODBEMURC
NzU0NTUwMDYwNzQ0RSAvKiBXaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbCAqLywKIAkJCQlF
MTI3MUExMzBFRUVDODA0MDBGNjEyMTMgLyogV29ya2VyTmF2aWdhdG9yLmNwcCAqLywKIAkJCQlF
MTI3MUEwQTBFRUVDNzdBMDBGNjEyMTMgLyogV29ya2VyTmF2aWdhdG9yLmggKi8sCkBAIC0yOTcy
MSw3ICsyOTcyMSw2IEBACiAJCQkJMDY2OEUxOEIwQUREOTYyNDAwNDEyOEUwIC8qIFBvcHVwTWVu
dS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUJDMTI4NzcwQjMzQUE2RDAwQzY5M0Q1IC8qIFBvcHVw
TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQkUxMkIwRTk4MDkyRjAwODM1NTg4
IC8qIFBvcHVwTWVudVN0eWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzN0Y1NjdDRTE2NTM1OEY0
MDBEREU5MkIgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
RjE5OURFMDgyNDVFNTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTc0NkFGMkMxNEY0RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3NDZBRjJFMTRGNERERTYwMDNFN0E3MCAvKiBQb3NpdGlvbkVycm9yLmggaW4g
SGVhZGVycyAqLywKQEAgLTMwOTUxLDYgKzMwOTUwLDcgQEAKIAkJCQkwRjE1RUQ1QzFCN0VDN0M1
MDBFRERGRUIgLyogV2lsbENoYW5nZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODI0M0U5
MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5kb3dGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0U5OUFGNTMwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMzdGNTY3Q0UxNjUzNThGNDAwRERFOTJCIC8qIFdpbmRvd09i
c2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjM1MjFBRDIwODEwOTJBMDBDMjg5MjIgLyog
V2luZG93UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTFCRjAwMTE1RkY2RkIwMDZGNTJD
QSAvKiBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTAxQkFBQTkx
Mzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAJKHJldmlz
aW9uIDIzMzgzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgU3BpbkJ1dHRv
bkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmQKICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2
ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudCh0aGlzKTsKICAgICAg
ICAgICAgICAgICAgICAgbV9jYXB0dXJpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcGFnZS0+Y2hyb21lKCkucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcigqdGhpcyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5yZWdpc3RlcldpbmRvd09ic2Vy
dmVyKCp0aGlzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBVcERvd25TdGF0ZSBvbGRVcERvd25TdGF0ZSA9IG1fdXBEb3duU3RhdGU7CkBAIC0yMDgsNyAr
MjA4LDcgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6cmVsZWFzZUNhcHR1cmUoKQogICAgICAg
ICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVu
dChudWxscHRyKTsKICAgICAgICAgICAgIG1fY2FwdHVyaW5nID0gZmFsc2U7CiAgICAgICAgICAg
ICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICAgICAgICAgIHBh
Z2UtPmNocm9tZSgpLnVucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcigqdGhpcyk7CisgICAg
ICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkudW5yZWdpc3RlcldpbmRvd09ic2VydmVyKCp0aGlz
KTsKICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NwaW5CdXR0b25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMTIgKzI3LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50
LmgiCi0jaW5jbHVkZSAiUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJUaW1lci5o
IgorI2luY2x1ZGUgIldpbmRvd09ic2VydmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU3BpbkJ1dHRvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQsIHB1
YmxpYyBQb3B1cE9wZW5pbmdPYnNlcnZlciB7CitjbGFzcyBTcGluQnV0dG9uRWxlbWVudCBmaW5h
bCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCwgcHVibGljIFdpbmRvd09ic2VydmVyIHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKFNwaW5CdXR0b25FbGVtZW50KTsKIHB1YmxpYzoKICAgICBl
bnVtIFVwRG93blN0YXRlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDIz
MzgzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsMTIgKzQyLDEyIEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cExvYWREZWZlcnJlci5oIgot
I2luY2x1ZGUgIlBvcHVwT3BlbmluZ09ic2VydmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5o
IgorI2luY2x1ZGUgIldpbmRvd09ic2VydmVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
Vk0uaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC01MTAsNiArNTEwLDggQEAgdm9pZCBDaHJvbWU6OndpbmRvd1NjcmVlbkRpZENoYW5n
ZShQbGF0ZgogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBmcmFt
ZS0+ZG9jdW1lbnQoKS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7CiAgICAgfQor
ICAgIAorICAgIG5vdGlmeVdpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpOwogfQogCiAv
LyAtLS0tLS0tLQpAQCAtNTcxLDIyICs1NzMsMjkgQEAgdm9pZCBDaHJvbWU6OmRpZFJlY2VpdmVE
b2NUeXBlKEZyYW1lJiBmcgogI2VuZGlmCiB9CiAKLXZvaWQgQ2hyb21lOjpyZWdpc3RlclBvcHVw
T3BlbmluZ09ic2VydmVyKFBvcHVwT3BlbmluZ09ic2VydmVyJiBvYnNlcnZlcikKK3ZvaWQgQ2hy
b21lOjpyZWdpc3RlcldpbmRvd09ic2VydmVyKFdpbmRvd09ic2VydmVyJiBvYnNlcnZlcikKIHsK
LSAgICBtX3BvcHVwT3BlbmluZ09ic2VydmVycy5hcHBlbmQoJm9ic2VydmVyKTsKKyAgICBtX3dp
bmRvd09ic2VydmVycy5hcHBlbmQoJm9ic2VydmVyKTsKIH0KIAotdm9pZCBDaHJvbWU6OnVucmVn
aXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcihQb3B1cE9wZW5pbmdPYnNlcnZlciYgb2JzZXJ2ZXIp
Cit2b2lkIENocm9tZTo6dW5yZWdpc3RlcldpbmRvd09ic2VydmVyKFdpbmRvd09ic2VydmVyJiBv
YnNlcnZlcikKIHsKLSAgICBib29sIHJlbW92ZWQgPSBtX3BvcHVwT3BlbmluZ09ic2VydmVycy5y
ZW1vdmVGaXJzdCgmb2JzZXJ2ZXIpOworICAgIGJvb2wgcmVtb3ZlZCA9IG1fd2luZG93T2JzZXJ2
ZXJzLnJlbW92ZUZpcnN0KCZvYnNlcnZlcik7CiAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCBy
ZW1vdmVkKTsKIH0KIAogdm9pZCBDaHJvbWU6Om5vdGlmeVBvcHVwT3BlbmluZ09ic2VydmVycygp
IGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPFBvcHVwT3BlbmluZ09ic2VydmVyKj4gb2JzZXJ2
ZXJzKG1fcG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKTsKKyAgICBjb25zdCBWZWN0b3I8V2luZG93T2Jz
ZXJ2ZXIqPiBvYnNlcnZlcnMobV93aW5kb3dPYnNlcnZlcnMpOwogICAgIGZvciAoYXV0byYgb2Jz
ZXJ2ZXIgOiBvYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVyLT53aWxsT3BlblBvcHVwKCk7CiB9
CiAKK3ZvaWQgQ2hyb21lOjpub3RpZnlXaW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNw
bGF5SUQgZGlzcGxheUlEKSBjb25zdAoreworICAgIGNvbnN0IFZlY3RvcjxXaW5kb3dPYnNlcnZl
cio+IG9ic2VydmVycyhtX3dpbmRvd09ic2VydmVycyk7CisgICAgZm9yIChhdXRvJiBvYnNlcnZl
ciA6IG9ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXItPndpbmRvd1NjcmVlbkRpZENoYW5nZShk
aXNwbGF5SUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmgJKHJldmlzaW9uIDIzMzgzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE4MiwxNiArMTgyLDE3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZGlkUmVjZWl2ZURvY1R5cGUoRnJhbWUmKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJQb3B1cE9wZW5p
bmdPYnNlcnZlcihQb3B1cE9wZW5pbmdPYnNlcnZlciYpOwotICAgIHZvaWQgdW5yZWdpc3RlclBv
cHVwT3BlbmluZ09ic2VydmVyKFBvcHVwT3BlbmluZ09ic2VydmVyJik7CisgICAgdm9pZCByZWdp
c3RlcldpbmRvd09ic2VydmVyKFdpbmRvd09ic2VydmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1
bnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoV2luZG93T2JzZXJ2ZXImKSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKICAgICB2b2lkIG5vdGlmeVBvcHVwT3BlbmluZ09ic2VydmVycygpIGNvbnN0OworICAg
IHZvaWQgbm90aWZ5V2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKSBjb25z
dDsKIAogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBDaHJvbWVDbGllbnQmIG1fY2xpZW50OwogICAg
IFBsYXRmb3JtRGlzcGxheUlEIG1fZGlzcGxheUlEIHsgMCB9OwotICAgIFZlY3RvcjxQb3B1cE9w
ZW5pbmdPYnNlcnZlcio+IG1fcG9wdXBPcGVuaW5nT2JzZXJ2ZXJzOworICAgIFZlY3RvcjxXaW5k
b3dPYnNlcnZlcio+IG1fd2luZG93T2JzZXJ2ZXJzOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBi
b29sIG1faXNEaXNwYXRjaFZpZXdwb3J0RGF0YURpZENoYW5nZVN1cHByZXNzZWQgeyBmYWxzZSB9
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvcHVwT3BlbmluZ09ic2VydmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Qb3B1cE9wZW5pbmdPYnNlcnZl
ci5oCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvcHVwT3Blbmlu
Z09ic2VydmVyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0g
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAot
ICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUG9wdXBP
cGVuaW5nT2JzZXJ2ZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCB3aWxsT3BlblBvcHVw
KCkgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+UG9wdXBPcGVuaW5nT2JzZXJ2ZXIo
KSA9IGRlZmF1bHQ7Ci19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2luZG93T2JzZXJ2ZXIuaAkocmV2aXNpb24gMjMzODMzKQkoZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BvcHVwT3BlbmluZ09ic2VydmVyLmg6MjMzODMzKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9XaW5kb3dPYnNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICog
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
CisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBQb3B1cE9wZW5pbmdPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB2b2lkIHdpbGxPcGVuUG9wdXAoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5Q
b3B1cE9wZW5pbmdPYnNlcnZlcigpID0gZGVmYXVsdDsKK307CisgICAgCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd09ic2VydmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPYnNlcnZlci5oCShyZXZpc2lv
biAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd09ic2VydmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjYsMTMgKzI3
LDE0IEBACiAjcHJhZ21hIG9uY2UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQb3B1
cE9wZW5pbmdPYnNlcnZlciB7CisgICAgCitjbGFzcyBXaW5kb3dPYnNlcnZlciB7CiBwdWJsaWM6
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuUG9wdXAoKSA9IDA7Ci0KKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbE9wZW5Qb3B1cCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgd2luZG93U2NyZWVuRGlk
Q2hhbmdlKHVpbnQzMl90KSB7IH07CisgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+UG9w
dXBPcGVuaW5nT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+V2luZG93T2JzZXJ2
ZXIoKSA9IGRlZmF1bHQ7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkocmV2aXNpb24gMjMzODMzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
MSArMjgsMTQgQEAKIAogI2luY2x1ZGUgIldpZGdldC5oIgogCisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJzb3I7Ci0KLWNsYXNzIEhv
c3RXaW5kb3cgeworY2xhc3MgV2luZG93T2JzZXJ2ZXI7CisgICAgCitjbGFzcyBIb3N0V2luZG93
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPEhvc3RXaW5kb3c+IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShIb3N0V2luZG93KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgSG9zdFdpbmRvdygpID0gZGVmYXVsdDsKQEAgLTc0LDYgKzc3LDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgRmxvYXRTaXplIHNjcmVlblNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBG
bG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZs
b2F0U2l6ZSBvdmVycmlkZVNjcmVlblNpemUoKSBjb25zdCA9IDA7CisgICAgCisgICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoV2luZG93T2JzZXJ2ZXImKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVucmVnaXN0ZXJXaW5kb3dPYnNlcnZlcihXaW5kb3dPYnNlcnZlciYpID0g
MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24g
MjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkltYWdl
LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNp
bmNsdWRlICJXaW5kb3dPYnNlcnZlci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMzgsNiAr
MzksNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBVU0UoQ0EpCkBA
IC0xMTIsNyArMTE0LDExIEBAIHN0cnVjdCBBY3RpdmVJbmZvIHsKIAogY2xhc3MgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQzRCA6IHB1YmxpYyBSZWZD
b3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPiB7CitjbGFzcyBHcmFwaGljc0NvbnRleHQzRCA6IHB1
YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPgorI2lmIEVOQUJMRShXRUJQUk9DRVNT
X1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICAsIHB1YmxpYyBXaW5kb3dPYnNlcnZlcgorI2Vu
ZGlmCit7CiBwdWJsaWM6CiAgICAgZW51bSB7CiAgICAgICAgIC8vIFdlYkdMIDEgY29uc3RhbnRz
CkBAIC0xMzE5LDYgKzEzMjUsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGFsbG93T2ZmbGluZVJl
bmRlcmVycygpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShX
RUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICB2b2lkIHdpbmRvd1NjcmVlbkRp
ZENoYW5nZSh1aW50MzJfdCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIGludCBtX2N1cnJlbnRX
aWR0aCB7IDAgfTsKICAgICBpbnQgbV9jdXJyZW50SGVpZ2h0IHsgMCB9OwogCkBAIC0xNDk2LDYg
KzE1MDYsMTAgQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAgUGxhdGZvcm0zRE9iamVj
dCBtX3ZhbyB7IDAgfTsKICNlbmRpZgorICAgIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIFdlYWtQdHI8SG9zdFdpbmRv
dz4gbV9ob3N0V2luZG93OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
Y3BwCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1wZWRMZW5ndGggPSA0MDk2
Owogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1wZWRBcmVhID0gTWF4Q2xhbXBlZExlbmd0aCAq
IE1heENsYW1wZWRMZW5ndGg7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNv
bnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKG5ldyBJbWFnZUJ1ZmZl
cihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIGhvc3RX
aW5kb3csIHN1Y2Nlc3MpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyAr
NjYsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlciB7CiAgICAgZnJpZW5kIGNsYXNzIElPU3VyZmFjZTsK
IHB1YmxpYzoKICAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9u
IGZhaWx1cmUuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNlU1JHQiwgY29uc3QgSG9z
dFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2VTUkdC
LCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2VTUkdCKTsKICNlbmRp
ZgpAQCAtMTY1LDkgKzE2NSw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9y
IHdpbGwgcGxhY2UgaXRzIHN1Y2Nlc3MgaW50byB0aGUgZ2l2ZW4gb3V0LXZhcmlhYmxlCiAgICAg
Ly8gc28gdGhhdCBjcmVhdGUoKSBrbm93cyB3aGVuIGl0IHNob3VsZCByZXR1cm4gZmFpbHVyZS4K
LSAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5k
b3cqLCBib29sJiBzdWNjZXNzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmlu
Z01vZGUsIEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKTsKICNpZiBVU0UoQ0cpCi0gICAgSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0NvbG9y
U3BhY2VSZWYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNz
KTsKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENHQ29sb3JTcGFjZVJlZiwgUmVuZGVyaW5nTW9kZSwgSG9zdFdpbmRvdyosIGJvb2wmIHN1
Y2Nlc3MpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRp
b24pIGNvbnN0OwogI2VsaWYgVVNFKERJUkVDVDJEKQogICAgIEltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9k
ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiwgYm9vbCYgc3VjY2Vzcyk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzOSw3ICsyMzksNyBAQCBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXI6OnRvQkdSQURhdGEo
CiAgICAgcmV0dXJuIGltYWdlRGF0YTsKIH0KIAotSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cqLCBib29sJiBzdWNj
ZXNzKQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKQogICAgIDogbV9kYXRhKEludFNpemUoc2l6
ZSksIHJlbmRlcmluZ01vZGUpCiAgICAgLCBtX2xvZ2ljYWxTaXplKHNpemUpCiAgICAgLCBtX3Jl
c29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAkocmV2aXNpb24g
MjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotSW1h
Z2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sJiBzdWNjZXNzKQor
SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sJiBzdWNjZXNzKQogICAg
IDogbV9sb2dpY2FsU2l6ZShzaXplKQogICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlv
blNjYWxlKQogewpAQCAtMTk1LDcgKzE5NSw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KIAotSW1hZ2VCdWZmZXI6Oklt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBj
b25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sJiBzdWNjZXNzKQorSW1hZ2VCdWZmZXI6
OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sJiBzdWNjZXNzKQogICAgIDogSW1hZ2VCdWZm
ZXIoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjYWNoZWRDR0NvbG9yU3BhY2UoaW1hZ2VDb2xvclNw
YWNlKSwgcmVuZGVyaW5nTW9kZSwgaG9zdFdpbmRvdywgc3VjY2VzcykKIHsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDAxLDI3ICs0MDEsMjUgQEAgUmVmPEdyYXBoaWNzQ29udGV4
dDNEPiBHcmFwaGljc0NvbnRleHQzRAogfQogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
V0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCi1zdGF0aWMgdm9pZCBpZGVudGlmeUFu
ZFNldEN1cnJlbnRHUFUoQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRPYmosIGludCBudW1Q
aXhlbEZvcm1hdHMsIENHT3BlbkdMRGlzcGxheU1hc2sgZGlzcGxheU1hc2tPcGVuR0wsIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0M0QgY29udGV4dE9iaikKK3N0YXRpYyB2b2lkIGlkZW50aWZ5QW5k
U2V0Q3VycmVudEdQVShDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgQ0dPcGVuR0xE
aXNwbGF5TWFzayBkaXNwbGF5TWFza09wZW5HTCwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBj
b250ZXh0T2JqKQogewogICAgIC8vIFdoZW4gdGhlIFdlYlByb2Nlc3MgZG9lcyBub3QgaGF2ZSBh
Y2Nlc3MgdG8gdGhlIFdpbmRvd1NlcnZlciwgdGhlcmUgaXMgbm8gd2F5IGZvciBPcGVuR0wgdG8g
dGVsbCB3aGljaCBHUFUgaXMgY29ubmVjdGVkIHRvIGEgZGlzcGxheS4KICAgICAvLyBDR0xTZXRW
aXJ0dWFsU2NyZWVuIGNhbiBiZSB1c2VkIHRvIHRlbGwgT3BlbkdMIHdoaWNoIEdQVSBpdCBzaG91
bGQgYmUgdXNpbmcuCiAgICAgLy8gU2VlIGNvZGUgZXhhbXBsZSBhdCBodHRwczovL2RldmVsb3Bl
ci5hcHBsZS5jb20vbGlicmFyeS9jb250ZW50L3RlY2hub3Rlcy90bjIyMjkvX2luZGV4Lmh0bWwj
Ly9hcHBsZV9yZWYvZG9jL3VpZC9EVFM0MDAwODkyNC1DSDEtU1VCU0VDVElPTjcKICAgICAKLSAg
ICBpZiAoIWRpc3BsYXlNYXNrT3BlbkdMIHx8ICFjb250ZXh0T2JqKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBmb3IgKGludCB2aXJ0dWFsU2NyZWVuID0gMDsgdmlydHVhbFNjcmVlbiA8IG51bVBp
eGVsRm9ybWF0czsgKyt2aXJ0dWFsU2NyZWVuKSB7Ci0gICAgICAgIEdMaW50IGRpc3BsYXlNYXNr
ID0gMDsKLSAgICAgICAgQ0dMRXJyb3IgZXJyb3IgPSBDR0xEZXNjcmliZVBpeGVsRm9ybWF0KHBp
eGVsRm9ybWF0T2JqLCB2aXJ0dWFsU2NyZWVuLCBrQ0dMUEZBRGlzcGxheU1hc2ssICZkaXNwbGF5
TWFzayk7Ci0gICAgICAgIEFTU0VSVChlcnJvciA9PSBrQ0dMTm9FcnJvcik7Ci0gICAgICAgIGlm
IChlcnJvciAhPSBrQ0dMTm9FcnJvcikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBp
ZiAoZGlzcGxheU1hc2sgJiBkaXNwbGF5TWFza09wZW5HTCkgewotICAgICAgICAgICAgZXJyb3Ig
PSBDR0xTZXRWaXJ0dWFsU2NyZWVuKGNvbnRleHRPYmosIHZpcnR1YWxTY3JlZW4pOwotICAgICAg
ICAgICAgQVNTRVJUKGVycm9yID09IGtDR0xOb0Vycm9yKTsKKyAgICBOU09wZW5HTFBpeGVsRm9y
bWF0ICpwaXhlbEZvcm1hdCA9IFtbTlNPcGVuR0xQaXhlbEZvcm1hdCBhbGxvY10gaW5pdFdpdGhD
R0xQaXhlbEZvcm1hdE9iajpwaXhlbEZvcm1hdE9ial07CisgICAgCisgICAgLy8gZmluZCB2aXJ0
dWFsIHNjcmVlbgorICAgIEdMaW50IG51bWJlck9mVmlydHVhbFNjcmVlbiA9IFtwaXhlbEZvcm1h
dCBudW1iZXJPZlZpcnR1YWxTY3JlZW5zXTsKKyAgICBmb3IgKEdMaW50IHZpcnR1YWxTY3JlZW4g
PSAwOyB2aXJ0dWFsU2NyZWVuIDwgbnVtYmVyT2ZWaXJ0dWFsU2NyZWVuOyB2aXJ0dWFsU2NyZWVu
KyspIHsKKyAgICAgICAgR0xpbnQgbWFzayA9IDA7CisgICAgICAgIFtwaXhlbEZvcm1hdCBnZXRW
YWx1ZXM6Jm1hc2sgZm9yQXR0cmlidXRlOk5TT3BlbkdMUEZBU2NyZWVuTWFzayBmb3JWaXJ0dWFs
U2NyZWVuOnZpcnR1YWxTY3JlZW5dOworICAgICAgICBpZiAobWFzayAmIGRpc3BsYXlNYXNrT3Bl
bkdMKSB7CisgICAgICAgICAgICBDR0xTZXRWaXJ0dWFsU2NyZWVuKGNvbnRleHRPYmosIHZpcnR1
YWxTY3JlZW4pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgW3Bp
eGVsRm9ybWF0IHJlbGVhc2VdOwogfQogI2VuZGlmCiAKQEAgLTQ5Nyw4ICs0OTUsMTEgQEAgR3Jh
cGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYQogICAgIGlmIChhdXRvIGRpc3Bs
YXlNYXNrID0gcHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCkpIHsKICAgICAgICAgaWYgKGhvc3RX
aW5kb3cgJiYgaG9zdFdpbmRvdy0+ZGlzcGxheUlEKCkpCiAgICAgICAgICAgICBkaXNwbGF5TWFz
ayA9IGRpc3BsYXlNYXNrRm9yRGlzcGxheShob3N0V2luZG93LT5kaXNwbGF5SUQoKSk7Ci0gICAg
ICAgIGlkZW50aWZ5QW5kU2V0Q3VycmVudEdQVShwaXhlbEZvcm1hdE9iaiwgbnVtUGl4ZWxGb3Jt
YXRzLCBkaXNwbGF5TWFzaywgbV9jb250ZXh0T2JqKTsKKyAgICAgICAgaWRlbnRpZnlBbmRTZXRD
dXJyZW50R1BVKHBpeGVsRm9ybWF0T2JqLCBkaXNwbGF5TWFzaywgbV9jb250ZXh0T2JqKTsKICAg
ICB9CisgICAgbV9ob3N0V2luZG93ID0gbWFrZVdlYWtQdHIoaG9zdFdpbmRvdyk7CisgICAgaWYg
KG1faG9zdFdpbmRvdykKKyAgICAgICAgbV9ob3N0V2luZG93LT5yZWdpc3RlcldpbmRvd09ic2Vy
dmVyKCp0aGlzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGhvc3RXaW5kb3cpOwogI2VuZGlm
CkBAIC02MzIsNiArNjMzLDExIEBAIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0
M0QoKQogICAgICAgICBbbV93ZWJHTExheWVyIHNldENvbnRleHQ6bnVsbHB0cl07CiAgICAgfQog
CisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPRVNTX1dJTkRPV1NFUlZFUl9CTE9D
S0lORykKKyAgICBpZiAobV9ob3N0V2luZG93KQorICAgICAgICBtX2hvc3RXaW5kb3ctPnVucmVn
aXN0ZXJXaW5kb3dPYnNlcnZlcigqdGhpcyk7CisjZW5kaWYKKyAgICAKICAgICBMT0coV2ViR0ws
ICJEZXN0cm95ZWQgYSBHcmFwaGljc0NvbnRleHQzRCAoJXApLiIsIHRoaXMpOwogfQogCkBAIC04
MTcsNiArODIzLDE4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmFsbG93T2ZmbGluZVJlbmQK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQ
Uk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Ondp
bmRvd1NjcmVlbkRpZENoYW5nZSh1aW50MzJfdCBkaXNwbGF5SUQpCit7CisgICAgQVNTRVJUKG1f
Y29udGV4dE9iaik7CisgICAgaWYgKCFtX2NvbnRleHRPYmopCisgICAgICAgIHJldHVybjsKKyAg
ICBhdXRvIGRpc3BsYXlNYXNrID0gZGlzcGxheU1hc2tGb3JEaXNwbGF5KGRpc3BsYXlJRCk7Cisg
ICAgYXV0byBwaXhlbEZvcm1hdE9iaiA9IENHTEdldFBpeGVsRm9ybWF0KG1fY29udGV4dE9iaik7
CisgICAgaWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKHBpeGVsRm9ybWF0T2JqLCBkaXNwbGF5TWFz
aywgbV9jb250ZXh0T2JqKTsKK30KKyNlbmRpZgorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1JB
UEhJQ1NfQ09OVEVYVF8zRCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0lPU3VyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPG9iamMvb2JqYy5oPgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJXaW5kb3dP
YnNlcnZlci5oIgogCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC00
MCw3ICs0MSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhvc3RXaW5kb3c7CiAg
ICAgCi1jbGFzcyBJT1N1cmZhY2UgZmluYWwgeworY2xhc3MgSU9TdXJmYWNlIGZpbmFsCisjaWYg
RU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIDogcHVibGljIFdp
bmRvd09ic2VydmVyCisjZW5kaWYKK3sKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBlbnVtIGNsYXNzIEZvcm1hdCB7CkBAIC05Myw2ICs5OCw4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbUltYWdlQnVm
ZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4pOwogI2VuZGlmCiAKKyAgICBXRUJDT1JF
X0VYUE9SVCB+SU9TdXJmYWNlKCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBt
b3ZlVG9Qb29sKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYpOwogCiAgICAgc3RhdGljIElu
dFNpemUgbWF4aW11bVNpemUoKTsKQEAgLTEwOSw3ICsxMTYsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
ICAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS5nZXQo
KTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dCYgZW5zdXJlR3JhcGhpY3ND
b250ZXh0KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ0dDb250ZXh0UmVmIGVuc3VyZVBsYXRmb3Jt
Q29udGV4dChjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JU
IENHQ29udGV4dFJlZiBlbnN1cmVQbGF0Zm9ybUNvbnRleHQoSG9zdFdpbmRvdyogPSBudWxscHRy
KTsKIAogICAgIGVudW0gY2xhc3MgU3VyZmFjZVN0YXRlIHsKICAgICAgICAgVmFsaWQsCkBAIC0x
NTMsNiArMTYwLDEwIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IHN1cmZhY2VGcm9tUG9vbChJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0Nv
bG9yU3BhY2VSZWYsIEZvcm1hdCk7CiAgICAgSW50U2l6ZSBjb250ZXh0U2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dFNpemU7IH0KICAgICB2b2lkIHNldENvbnRleHRTaXplKEludFNpemUp
OworICAgIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VS
VkVSX0JMT0NLSU5HKQorICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQzMl90KSBv
dmVycmlkZTsKKyNlbmRpZgogCiAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gbV9jb2xv
clNwYWNlOwogICAgIEludFNpemUgbV9zaXplOwpAQCAtMTYzLDYgKzE3NCwxMCBAQCBwcml2YXRl
OgogICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IG1fY2dDb250ZXh0OwogCiAgICAgUmV0YWlu
UHRyPElPU3VyZmFjZVJlZj4gbV9zdXJmYWNlOworCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisgICAgV2Vha1B0cjxIb3N0V2lu
ZG93PiBtX2hvc3RXaW5kb3c7CisjZW5kaWYKIH07CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBXZWJDb3JlOjpJT1N1
cmZhY2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UubW0JKHJldmlzaW9uIDIzMzgzMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjI4LDYgKzIyOCwxNCBAQCBJT1N1cmZhY2U6OklPU3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFj
CiAgICAgbV90b3RhbEJ5dGVzID0gSU9TdXJmYWNlR2V0QWxsb2NTaXplKHN1cmZhY2UpOwogfQog
CitJT1N1cmZhY2U6On5JT1N1cmZhY2UoKQoreworI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRP
V1NFUlZFUl9CTE9DS0lORykKKyAgICBpZiAobV9ob3N0V2luZG93KQorICAgICAgICBtX2hvc3RX
aW5kb3ctPnVucmVnaXN0ZXJXaW5kb3dPYnNlcnZlcigqdGhpcyk7CisjZW5kaWYKK30KKwogSW50
U2l6ZSBJT1N1cmZhY2U6Om1heGltdW1TaXplKCkKIHsKICAgICBJbnRTaXplIG1heFNpemUoY2xh
bXBUb0ludGVnZXIoSU9TdXJmYWNlR2V0UHJvcGVydHlNYXhpbXVtKGtJT1N1cmZhY2VXaWR0aCkp
LCBjbGFtcFRvSW50ZWdlcihJT1N1cmZhY2VHZXRQcm9wZXJ0eU1heGltdW0oa0lPU3VyZmFjZUhl
aWdodCkpKTsKQEAgLTI3Miw3ICsyODAsNyBAQCB2b2lkIElPU3VyZmFjZTo6c2V0Q29udGV4dFNp
emUoSW50U2l6ZSBjCiAgICAgbV9jb250ZXh0U2l6ZSA9IGNvbnRleHRTaXplOwogfQogCi1DR0Nv
bnRleHRSZWYgSU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvbnRleHQoY29uc3QgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdykKK0NHQ29udGV4dFJlZiBJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29u
dGV4dChIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIGlmIChtX2NnQ29udGV4dCkKICAg
ICAgICAgcmV0dXJuIG1fY2dDb250ZXh0LmdldCgpOwpAQCAtMzA2LDYgKzMxNCw5IEBAIENHQ29u
dGV4dFJlZiBJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ28KICAgICAgICAgICAgIGRpc3BsYXlN
YXNrID0gZGlzcGxheU1hc2tGb3JEaXNwbGF5KGhvc3RXaW5kb3ctPmRpc3BsYXlJRCgpKTsKICAg
ICAgICAgQ0dJT1N1cmZhY2VDb250ZXh0U2V0RGlzcGxheU1hc2sobV9jZ0NvbnRleHQuZ2V0KCks
IGRpc3BsYXlNYXNrKTsKICAgICB9CisgICAgbV9ob3N0V2luZG93ID0gbWFrZVdlYWtQdHIoaG9z
dFdpbmRvdyk7CisgICAgaWYgKG1faG9zdFdpbmRvdykKKyAgICAgICAgbV9ob3N0V2luZG93LT5y
ZWdpc3RlcldpbmRvd09ic2VydmVyKCp0aGlzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGhv
c3RXaW5kb3cpOwogI2VuZGlmCkBAIC00NTMsNiArNDY0LDE2IEBAIHZvaWQgSU9TdXJmYWNlOjpt
aWdyYXRlQ29sb3JTcGFjZVRvUHJvcGUKICAgICBJT1N1cmZhY2VTZXRWYWx1ZShtX3N1cmZhY2Uu
Z2V0KCksIGtJT1N1cmZhY2VDb2xvclNwYWNlLCBjb2xvclNwYWNlUHJvcGVydGllcy5nZXQoKSk7
CiB9CiAKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZF
Ul9CTE9DS0lORykKK3ZvaWQgSU9TdXJmYWNlOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UodW5zaWdu
ZWQgZGlzcGxheUlEKQoreworICAgIEFTU0VSVChtX2NnQ29udGV4dCk7CisgICAgaWYgKCFtX2Nn
Q29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgIENHSU9TdXJmYWNlQ29udGV4dFNldERpc3Bs
YXlNYXNrKG1fY2dDb250ZXh0LmdldCgpLCBkaXNwbGF5TWFza0ZvckRpc3BsYXkoZGlzcGxheUlE
KSk7Cit9CisjZW5kaWYKKwogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIElPU3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKIHsKICAgICBzd2l0Y2ggKGZvcm1hdCkg
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345066</attachid>
            <date>2018-07-15 14:46:21 -0700</date>
            <delta_ts>2018-07-15 14:53:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187684-20180715144620.patch</filename>
            <type>text/plain</type>
            <size>32332</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzg0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE4LTA3LTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJTyBzdXJmYWNlcyBhbmQg
M0QgZ3JhcGhpY3MgY29udGV4dHMgc2hvdWxkIHVwZGF0ZSB0aGUgZGlzcGxheSBtYXNrIHdoZW4g
dGhlIHdpbmRvdyBpZiBtb3ZlZCB0byBhbm90aGVyIHNjcmVlbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzY4NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIG5ldyBXaW5kb3dPYnNlcnZl
ciByZXBsYWNpbmcgdGhlIHByZXZpb3VzIFBvcHVwT3BlbmluZ09ic2VydmVyLiBMZXQgSU9TdXJm
YWNlIGFuZCBHcmFwaGljc0NvbnRleHQzRCBvYnNlcnZlIHdoZW4KKyAgICAgICAgdGhlIHdpbmRv
dyBzY3JlZW4gaXMgY2hhbmdpbmcsIGFuZCBoYXZlIHRoZW0gdXBkYXRlIHRoZWlyIGRpc3BsYXkg
bWFza3MgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHJlcXVpcmVz
IGEgZHVhbCBtb25pdG9yIHNldHVwLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVy
ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAg
KiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OndpbmRvd1NjcmVl
bkRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyV2luZG93T2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp1bnJlZ2lzdGVyV2luZG93T2JzZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZl
cnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpub3RpZnlXaW5kb3dTY3JlZW5E
aWRDaGFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpyZWdpc3RlclBvcHVw
T3BlbmluZ09ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6dW5y
ZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0No
cm9tZS5oOgorICAgICAgICAqIHBhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwYWdlL1dpbmRvd09ic2VydmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OldpbmRv
d09ic2VydmVyOjp3aWxsT3BlblBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd09ic2Vy
dmVyOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5k
b3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6aWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFj
ZTo6fklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRm
b3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OndpbmRvd1NjcmVlbkRp
ZENoYW5nZSk6CisKIDIwMTgtMDctMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgU2hyaW5rIFN0eWxlRmlsbERhdGEsIFN0eWxlU3Ryb2tlRGF0YSBh
bmQgU3R5bGVNaXNjRGF0YQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDI4LDcgKzEwMjgsNyBAQAogCQkzN0M3MzhGNDFFREJERThEMDAzRjJCMEIgLyogRGF0ZVRpbWVD
aG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0M3MzhGMjFFREJERTg3MDAzRjJCMEIgLyogRGF0ZVRpbWVDaG9vc2VyQ2xpZW50Lmgg
Ki87IH07CiAJCTM3RDQ1NkZEMUE5QTUwRDgwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3Mu
cG0gaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
RDQ1NkZCMUE5QTUwQjYwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3MucG0gKi87IH07CiAJ
CTM3RTM1MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RTM1MjRDMTI0NTBDNjYwMEJBRjVEOSAv
KiBJbnB1dFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQkzN0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NzJCMDk1
MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTM3RjU2N0NFMTY1MzU4RjQwMERE
RTkyQiAvKiBXaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc3MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFdpbmRvd09ic2VydmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdG
ODE4RkQwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGODE4RkIwRDY1NzYwNjAwNUUx
RjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTM3RkQ0Mjk4MTE4MzY4NDYwMDkzQzAyOSAvKiBUcmVlRGVw
dGhMaW1pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzdGRDQyOTcxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggKi87IH07CiAJCTM4
N0FFOTVCMUU4RTkyRUYwMDAwREU5NiAvKiBKU1dlYkdQVVNpemUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4N0FFOTU5MUU4RTkyRUYwMDAwREU5NiAv
KiBKU1dlYkdQVVNpemUuaCAqLzsgfTsKQEAgLTcwODgsNyArNzA4OCw3IEBACiAJCTM3MkMwMEQ4
MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
NzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSHlwaGVuYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzc2RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFJ1bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNl
cnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3B1cE9wZW5pbmdPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzcyQjA5NTE2NTM1ODU2MDAw
QTQ5Q0EgLyogV2luZG93T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2luZG93T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3NEFC
QTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIE5h
dGl2ZUltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF0
aXZlSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTE5QzIxMEI3
RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5NDA3LDcgKzE5NDA3LDYgQEAKIAkJCQkzMUQ1OTFCMTE2Njk3QTZD
MDBFNkJGMDIgLyogUGx1Z0luQ2xpZW50LmggKi8sCiAJCQkJNUNGQzQzNEUxOTI0MDZBOTAwQTBE
M0I1IC8qIFBvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJNUNGQzQzNEYxOTI0MDZB
OTAwQTBEM0I1IC8qIFBvaW50ZXJMb2NrQ29udHJvbGxlci5oICovLAotCQkJCTM3NzJCMDk1MTY1
MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovLAogCQkJCUI3NzZENDND
MTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3BwICovLAogCQkJCUI3NzZENDNBMTEw
NDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLywKIAkJCQk0NkI5NTE4RDIwN0Q2MzJB
MDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLywKQEAgLTE5NDg5LDYgKzE5NDg4LDcg
QEAKIAkJCQlCQzgyNDNFNzBEMENGRDc1MDA0NjBDOEYgLyogV2luZG93RmVhdHVyZXMuaCAqLywK
IAkJCQk3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNh
dG9yLmNwcCAqLywKIAkJCQk3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNB
bGxvd2VkSW5kaWNhdG9yLmggKi8sCisJCQkJMzc3MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFdp
bmRvd09ic2VydmVyLmggKi8sCiAJCQkJOTM3MTA4MEQxREI3NTQ1NTAwNjA3NDRFIC8qIFdpbmRv
d09yV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAogCQkJCUUxMjcxQTEzMEVFRUM4MDQwMEY2MTIx
MyAvKiBXb3JrZXJOYXZpZ2F0b3IuY3BwICovLAogCQkJCUUxMjcxQTBBMEVFRUM3N0EwMEY2MTIx
MyAvKiBXb3JrZXJOYXZpZ2F0b3IuaCAqLywKQEAgLTI5NzIxLDcgKzI5NzIxLDYgQEAKIAkJCQkw
NjY4RTE4QjBBREQ5NjI0MDA0MTI4RTAgLyogUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBQkMxMjg3NzBCMzNBQTZEMDBDNjkzRDUgLyogUG9wdXBNZW51Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzNCRTEyQjBFOTgwOTJGMDA4MzU1ODggLyogUG9wdXBNZW51U3R5bGUuaCBp
biBIZWFkZXJzICovLAotCQkJCTM3RjU2N0NFMTY1MzU4RjQwMERERTkyQiAvKiBQb3B1cE9wZW5p
bmdPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5REUwODI0NUU1OTAwMUU5QUJD
IC8qIFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyQzE0RjREREU2MDAzRTdB
NzAgLyogUG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMkUxNEY0
RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzA5NTEs
NiArMzA5NTAsNyBAQAogCQkJCTBGMTVFRDVDMUI3RUM3QzUwMEVEREZFQiAvKiBXaWxsQ2hhbmdl
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjQzRTkwRDBDRkQ3NTAwNDYwQzhGIC8qIFdp
bmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTk5QUY1MzBCMTM4NDY0NjhGQjAx
QTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
N0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogV2luZG93T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFFMUJGMDAxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENv
ZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDFCQUFBOTEzOTUwRTJDMDBGN0FDRUIgLyogV2lu
ZFJ1bGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U3BpbkJ1dHRvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZAogICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVy
aW5nTW91c2VFdmVudHNFbGVtZW50KHRoaXMpOwogICAgICAgICAgICAgICAgICAgICBtX2NhcHR1
cmluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1l
bnQoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5yZWdp
c3RlclBvcHVwT3BlbmluZ09ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHBhZ2UtPmNocm9tZSgpLnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFVwRG93blN0YXRlIG9sZFVwRG93
blN0YXRlID0gbV91cERvd25TdGF0ZTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNwaW5CdXR0
b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVyZSgpCiAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KG51bGxwdHIpOwogICAgICAgICAg
ICAgbV9jYXB0dXJpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9j
dW1lbnQoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkudW5yZWdpc3Rl
clBvcHVwT3BlbmluZ09ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgICAgICBwYWdlLT5jaHJv
bWUoKS51bnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICB9CiAgICAgfQog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVu
dC5oCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGlu
QnV0dG9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTIgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJQb3B1cE9w
ZW5pbmdPYnNlcnZlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiV2luZG93T2Jz
ZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTcGluQnV0dG9uRWxlbWVu
dCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCwgcHVibGljIFBvcHVwT3BlbmluZ09ic2Vy
dmVyIHsKK2NsYXNzIFNwaW5CdXR0b25FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVt
ZW50LCBwdWJsaWMgV2luZG93T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
U3BpbkJ1dHRvbkVsZW1lbnQpOwogcHVibGljOgogICAgIGVudW0gVXBEb3duU3RhdGUgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMTIgQEAKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCi0jaW5jbHVkZSAiUG9wdXBPcGVuaW5n
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVz
cGFjZS5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAiV2luZG93T2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5oPgogI2luY2x1ZGUgPHd0Zi9T
ZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTUxMCw2ICs1MTAsOCBA
QCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmCiAgICAgICAgIGlmIChm
cmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT53aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKTsKICAgICB9CisgICAgCisgICAgbm90aWZ5V2luZG93
U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7CiB9CiAKIC8vIC0tLS0tLS0tCkBAIC01NzEsMjIg
KzU3MywyOSBAQCB2b2lkIENocm9tZTo6ZGlkUmVjZWl2ZURvY1R5cGUoRnJhbWUmIGZyCiAjZW5k
aWYKIH0KIAotdm9pZCBDaHJvbWU6OnJlZ2lzdGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIoUG9wdXBP
cGVuaW5nT2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBDaHJvbWU6OnJlZ2lzdGVyV2luZG93T2Jz
ZXJ2ZXIoV2luZG93T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIG1fcG9wdXBPcGVuaW5nT2Jz
ZXJ2ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOworICAgIG1fd2luZG93T2JzZXJ2ZXJzLmFwcGVuZCgm
b2JzZXJ2ZXIpOwogfQogCi12b2lkIENocm9tZTo6dW5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2Vy
dmVyKFBvcHVwT3BlbmluZ09ic2VydmVyJiBvYnNlcnZlcikKK3ZvaWQgQ2hyb21lOjp1bnJlZ2lz
dGVyV2luZG93T2JzZXJ2ZXIoV2luZG93T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIGJvb2wg
cmVtb3ZlZCA9IG1fcG9wdXBPcGVuaW5nT2JzZXJ2ZXJzLnJlbW92ZUZpcnN0KCZvYnNlcnZlcik7
CisgICAgYm9vbCByZW1vdmVkID0gbV93aW5kb3dPYnNlcnZlcnMucmVtb3ZlRmlyc3QoJm9ic2Vy
dmVyKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwogfQogCiB2b2lkIENo
cm9tZTo6bm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCkgY29uc3QKIHsKLSAgICBjb25zdCBW
ZWN0b3I8UG9wdXBPcGVuaW5nT2JzZXJ2ZXIqPiBvYnNlcnZlcnMobV9wb3B1cE9wZW5pbmdPYnNl
cnZlcnMpOworICAgIGNvbnN0IFZlY3RvcjxXaW5kb3dPYnNlcnZlcio+IG9ic2VydmVycyhtX3dp
bmRvd09ic2VydmVycyk7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG9ic2VydmVycykKICAg
ICAgICAgb2JzZXJ2ZXItPndpbGxPcGVuUG9wdXAoKTsKIH0KIAordm9pZCBDaHJvbWU6Om5vdGlm
eVdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpIGNvbnN0
Cit7CisgICAgY29uc3QgVmVjdG9yPFdpbmRvd09ic2VydmVyKj4gb2JzZXJ2ZXJzKG1fd2luZG93
T2JzZXJ2ZXJzKTsKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAgICAg
ICBvYnNlcnZlci0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2aXNpb24gMjMzODMz
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgy
LDE2ICsxODIsMTcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlRG9jVHlwZShGcmFt
ZSYpOwogCi0gICAgdm9pZCByZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKFBvcHVwT3Blbmlu
Z09ic2VydmVyJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIoUG9w
dXBPcGVuaW5nT2JzZXJ2ZXImKTsKKyAgICB2b2lkIHJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoV2lu
ZG93T2JzZXJ2ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIHVucmVnaXN0ZXJXaW5kb3dPYnNlcnZl
cihXaW5kb3dPYnNlcnZlciYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5
UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCkgY29uc3Q7CisgICAgdm9pZCBub3RpZnlXaW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0OwogCiAgICAgUGFnZSYgbV9wYWdl
OwogICAgIENocm9tZUNsaWVudCYgbV9jbGllbnQ7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9k
aXNwbGF5SUQgeyAwIH07Ci0gICAgVmVjdG9yPFBvcHVwT3BlbmluZ09ic2VydmVyKj4gbV9wb3B1
cE9wZW5pbmdPYnNlcnZlcnM7CisgICAgVmVjdG9yPFdpbmRvd09ic2VydmVyKj4gbV93aW5kb3dP
YnNlcnZlcnM7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9pc0Rpc3BhdGNoVmlld3Bv
cnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZCB7IGZhbHNlIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BvcHVwT3BlbmluZ09ic2VydmVyLmgJKHJldmlzaW9uIDIzMzgzMykK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0g
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0g
KiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQb3B1cE9wZW5pbmdPYnNlcnZlciB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuUG9wdXAoKSA9IDA7Ci0KLXByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIH5Qb3B1cE9wZW5pbmdPYnNlcnZlcigpID0gZGVmYXVsdDsKLX07Ci0gICAg
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRv
d09ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPYnNl
cnZlci5oCShyZXZpc2lvbiAyMzM4MzMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9wdXBP
cGVuaW5nT2JzZXJ2ZXIuaDoyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd09i
c2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICog
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAq
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBvcHVwT3Bl
bmluZ09ic2VydmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5Qb3B1cCgp
ID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflBvcHVwT3BlbmluZ09ic2VydmVyKCkg
PSBkZWZhdWx0OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2luZG93T2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1dpbmRvd09ic2VydmVyLmgJKHJldmlzaW9uIDIzMzgzMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2luZG93T2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUg
QEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNiwxMyArMjcsMTQgQEAKICNwcmFnbWEgb25jZQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFBvcHVwT3BlbmluZ09ic2VydmVyIHsKKyAg
ICAKK2NsYXNzIFdpbmRvd09ic2VydmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bE9wZW5Qb3B1cCgpID0gMDsKLQorICAgIHZpcnR1YWwgdm9pZCB3aWxsT3BlblBvcHVwKCkgeyB9
OworICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UodWludDMyX3QpIHsgfTsK
KyAgICAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5Qb3B1cE9wZW5pbmdPYnNlcnZlcigpID0g
ZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5XaW5kb3dPYnNlcnZlcigpID0gZGVmYXVsdDsKIH07CiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9z
dFdpbmRvdy5oCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9I
b3N0V2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwxNCBAQAogCiAjaW5jbHVk
ZSAiV2lkZ2V0LmgiCiAKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKLQotY2xhc3MgSG9zdFdpbmRvdyB7CitjbGFzcyBXaW5k
b3dPYnNlcnZlcjsKKyAgICAKK2NsYXNzIEhvc3RXaW5kb3cgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8SG9zdFdpbmRvdz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhvc3RXaW5kb3cpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBIb3N0V2luZG93KCkgPSBkZWZh
dWx0OwpAQCAtNzQsNiArNzcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGbG9hdFNpemUgc2Ny
ZWVuU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBhdmFpbGFibGVTY3Jl
ZW5TaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRTaXplIG92ZXJyaWRlU2NyZWVu
U2l6ZSgpIGNvbnN0ID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJXaW5kb3dP
YnNlcnZlcihXaW5kb3dPYnNlcnZlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
cldpbmRvd09ic2VydmVyKFdpbmRvd09ic2VydmVyJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRSZWN0
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIldpbmRvd09ic2VydmVy
LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1VuaXF1ZUFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVTRShDQSkKQEAgLTExMiw3ICsxMTQsMTEgQEAgc3Ry
dWN0IEFjdGl2ZUluZm8gewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU7CiAKLWNs
YXNzIEdyYXBoaWNzQ29udGV4dDNEIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NDb250ZXh0
M0Q+IHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhp
Y3NDb250ZXh0M0Q+CisjaWYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5H
KQorICAgICwgcHVibGljIFdpbmRvd09ic2VydmVyCisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBl
bnVtIHsKICAgICAgICAgLy8gV2ViR0wgMSBjb25zdGFudHMKQEAgLTEzMTksNiArMTMyNSwxMCBA
QCBwcml2YXRlOgogICAgIGJvb2wgYWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3Q7CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVS
X0JMT0NLSU5HKQorICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQzMl90KSBvdmVy
cmlkZTsKKyNlbmRpZgorCiAgICAgaW50IG1fY3VycmVudFdpZHRoIHsgMCB9OwogICAgIGludCBt
X2N1cnJlbnRIZWlnaHQgeyAwIH07CiAKQEAgLTE0OTYsNiArMTUwNiwxMCBAQCBwcml2YXRlOgog
I2lmIFVTRShDQUlSTykKICAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdmFvIHsgMCB9OwogI2VuZGlm
CisgICAgCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJW
RVJfQkxPQ0tJTkcpCisgICAgV2Vha1B0cjxIb3N0V2luZG93PiBtX2hvc3RXaW5kb3c7CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHJldmlzaW9uIDIzMzgzMykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMg
Y29uc3QgZmxvYXQgTWF4Q2xhbXBlZExlbmd0aCA9IDQwOTY7CiBzdGF0aWMgY29uc3QgZmxvYXQg
TWF4Q2xhbXBlZEFyZWEgPSBNYXhDbGFtcGVkTGVuZ3RoICogTWF4Q2xhbXBlZExlbmd0aDsKIAot
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3cpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBidWZmZXIobmV3IEltYWdlQnVmZmVyKHNpemUsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgaG9zdFdpbmRvdywgc3VjY2VzcykpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCShy
ZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIEltYWdlQnVm
ZmVyIHsKICAgICBmcmllbmQgY2xhc3MgSU9TdXJmYWNlOwogcHVibGljOgogICAgIC8vIFdpbGwg
cmV0dXJuIGEgbnVsbCBwb2ludGVyIG9uIGFsbG9jYXRpb24gZmFpbHVyZS4KLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29s
b3JTcGFjZSA9IENvbG9yU3BhY2VTUkdCLCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZVNSR0IsIEhvc3RXaW5kb3cqID0gbnVsbHB0
cik7CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdN
b2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBD
b2xvclNwYWNlID0gQ29sb3JTcGFjZVNSR0IpOwogI2VuZGlmCkBAIC0xNjUsOSArMTY1LDkgQEAg
cHJpdmF0ZToKIAogICAgIC8vIFRoaXMgY29uc3RydWN0b3Igd2lsbCBwbGFjZSBpdHMgc3VjY2Vz
cyBpbnRvIHRoZSBnaXZlbiBvdXQtdmFyaWFibGUKICAgICAvLyBzbyB0aGF0IGNyZWF0ZSgpIGtu
b3dzIHdoZW4gaXQgc2hvdWxkIHJldHVybiBmYWlsdXJlLgotICAgIFdFQkNPUkVfRVhQT1JUIElt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRvdyosIGJvb2wmIHN1Y2Nlc3MpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgSG9zdFdpbmRvdyosIGJv
b2wmIHN1Y2Nlc3MpOwogI2lmIFVTRShDRykKLSAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcGFjZVJlZiwgUmVuZGVyaW5nTW9k
ZSwgY29uc3QgSG9zdFdpbmRvdyosIGJvb2wmIHN1Y2Nlc3MpOworICAgIEltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ0dDb2xvclNwYWNlUmVmLCBS
ZW5kZXJpbmdNb2RlLCBIb3N0V2luZG93KiwgYm9vbCYgc3VjY2Vzcyk7CiAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gdG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25h
bDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Q7CiAjZWxpZiBVU0Uo
RElSRUNUMkQpCiAgICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqLCBib29sJiBzdWNjZXNzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCShyZXZpc2lv
biAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDcgKzIzOSw3IEBAIFZlY3Rv
cjx1aW50OF90PiBJbWFnZUJ1ZmZlcjo6dG9CR1JBRGF0YSgKICAgICByZXR1cm4gaW1hZ2VEYXRh
OwogfQogCi1JbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgY29uc3QgSG9zdFdpbmRvdyosIGJvb2wmIHN1Y2Nlc3MpCitJbWFnZUJ1ZmZlcjo6SW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENv
bG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgSG9zdFdpbmRvdyosIGJvb2wm
IHN1Y2Nlc3MpCiAgICAgOiBtX2RhdGEoSW50U2l6ZShzaXplKSwgcmVuZGVyaW5nTW9kZSkKICAg
ICAsIG1fbG9naWNhbFNpemUoc2l6ZSkKICAgICAsIG1fcmVzb2x1dGlvblNjYWxlKHJlc29sdXRp
b25TY2FsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA2LDcgKzEwNiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VC
dWZmZXIKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1JbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcGFj
ZVJlZiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3csIGJvb2wmIHN1Y2Nlc3MpCitJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JT
cGFjZVJlZiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3csIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2xvZ2ljYWxTaXplKHNpemUp
CiAgICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCiB7CkBAIC0xOTUsNyAr
MTk1LDcgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZQogICAgIHN1
Y2Nlc3MgPSB0cnVlOwogfQogCi1JbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgaW1hZ2VDb2xvclNw
YWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3csIGJvb2wmIHN1Y2Nlc3MpCitJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgaW1hZ2VDb2xv
clNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqIGhvc3RXaW5k
b3csIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBJbWFnZUJ1ZmZlcihzaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNhY2hlZENHQ29sb3JTcGFjZShpbWFnZUNvbG9yU3BhY2UpLCByZW5kZXJpbmdNb2RlLCBo
b3N0V2luZG93LCBzdWNjZXNzKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENv
Y29hLm1tCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
MDEsNyArNDAxLDcgQEAgUmVmPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRAog
fQogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJf
QkxPQ0tJTkcpCi1zdGF0aWMgdm9pZCBpZGVudGlmeUFuZFNldEN1cnJlbnRHUFUoQ0dMUGl4ZWxG
b3JtYXRPYmogcGl4ZWxGb3JtYXRPYmosIGludCBudW1QaXhlbEZvcm1hdHMsIENHT3BlbkdMRGlz
cGxheU1hc2sgZGlzcGxheU1hc2tPcGVuR0wsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgY29u
dGV4dE9iaikKK3N0YXRpYyB2b2lkIGlkZW50aWZ5QW5kU2V0Q3VycmVudEdQVShDR0xQaXhlbEZv
cm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgQ0dPcGVuR0xEaXNwbGF5TWFzayBkaXNwbGF5TWFza09w
ZW5HTCwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBjb250ZXh0T2JqKQogewogICAgIC8vIFdo
ZW4gdGhlIFdlYlByb2Nlc3MgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIFdpbmRvd1NlcnZl
ciwgdGhlcmUgaXMgbm8gd2F5IGZvciBPcGVuR0wgdG8gdGVsbCB3aGljaCBHUFUgaXMgY29ubmVj
dGVkIHRvIGEgZGlzcGxheS4KICAgICAvLyBDR0xTZXRWaXJ0dWFsU2NyZWVuIGNhbiBiZSB1c2Vk
IHRvIHRlbGwgT3BlbkdMIHdoaWNoIEdQVSBpdCBzaG91bGQgYmUgdXNpbmcuCkBAIC00MDksMTkg
KzQwOSwyMCBAQCBzdGF0aWMgdm9pZCBpZGVudGlmeUFuZFNldEN1cnJlbnRHUFUoQ0dMCiAgICAg
CiAgICAgaWYgKCFkaXNwbGF5TWFza09wZW5HTCB8fCAhY29udGV4dE9iaikKICAgICAgICAgcmV0
dXJuOwotCi0gICAgZm9yIChpbnQgdmlydHVhbFNjcmVlbiA9IDA7IHZpcnR1YWxTY3JlZW4gPCBu
dW1QaXhlbEZvcm1hdHM7ICsrdmlydHVhbFNjcmVlbikgewotICAgICAgICBHTGludCBkaXNwbGF5
TWFzayA9IDA7Ci0gICAgICAgIENHTEVycm9yIGVycm9yID0gQ0dMRGVzY3JpYmVQaXhlbEZvcm1h
dChwaXhlbEZvcm1hdE9iaiwgdmlydHVhbFNjcmVlbiwga0NHTFBGQURpc3BsYXlNYXNrLCAmZGlz
cGxheU1hc2spOwotICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5vRXJyb3IpOwotICAgICAg
ICBpZiAoZXJyb3IgIT0ga0NHTE5vRXJyb3IpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgaWYgKGRpc3BsYXlNYXNrICYgZGlzcGxheU1hc2tPcGVuR0wpIHsKLSAgICAgICAgICAgIGVy
cm9yID0gQ0dMU2V0VmlydHVhbFNjcmVlbihjb250ZXh0T2JqLCB2aXJ0dWFsU2NyZWVuKTsKLSAg
ICAgICAgICAgIEFTU0VSVChlcnJvciA9PSBrQ0dMTm9FcnJvcik7CisgICAgCisgICAgTlNPcGVu
R0xQaXhlbEZvcm1hdCAqcGl4ZWxGb3JtYXQgPSBbW05TT3BlbkdMUGl4ZWxGb3JtYXQgYWxsb2Nd
IGluaXRXaXRoQ0dMUGl4ZWxGb3JtYXRPYmo6cGl4ZWxGb3JtYXRPYmpdOworICAgIAorICAgIC8v
IGZpbmQgdmlydHVhbCBzY3JlZW4KKyAgICBHTGludCBudW1iZXJPZlZpcnR1YWxTY3JlZW4gPSBb
cGl4ZWxGb3JtYXQgbnVtYmVyT2ZWaXJ0dWFsU2NyZWVuc107CisgICAgZm9yIChHTGludCB2aXJ0
dWFsU2NyZWVuID0gMDsgdmlydHVhbFNjcmVlbiA8IG51bWJlck9mVmlydHVhbFNjcmVlbjsgdmly
dHVhbFNjcmVlbisrKSB7CisgICAgICAgIEdMaW50IG1hc2sgPSAwOworICAgICAgICBbcGl4ZWxG
b3JtYXQgZ2V0VmFsdWVzOiZtYXNrIGZvckF0dHJpYnV0ZTpOU09wZW5HTFBGQVNjcmVlbk1hc2sg
Zm9yVmlydHVhbFNjcmVlbjp2aXJ0dWFsU2NyZWVuXTsKKyAgICAgICAgaWYgKG1hc2sgJiBkaXNw
bGF5TWFza09wZW5HTCkgeworICAgICAgICAgICAgQ0dMU2V0VmlydHVhbFNjcmVlbihjb250ZXh0
T2JqLCB2aXJ0dWFsU2NyZWVuKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
fQorICAgIFtwaXhlbEZvcm1hdCByZWxlYXNlXTsKIH0KICNlbmRpZgogCkBAIC00OTcsOCArNDk4
LDExIEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmEKICAgICBpZiAo
YXV0byBkaXNwbGF5TWFzayA9IHByaW1hcnlPcGVuR0xEaXNwbGF5TWFzaygpKSB7CiAgICAgICAg
IGlmIChob3N0V2luZG93ICYmIGhvc3RXaW5kb3ctPmRpc3BsYXlJRCgpKQogICAgICAgICAgICAg
ZGlzcGxheU1hc2sgPSBkaXNwbGF5TWFza0ZvckRpc3BsYXkoaG9zdFdpbmRvdy0+ZGlzcGxheUlE
KCkpOwotICAgICAgICBpZGVudGlmeUFuZFNldEN1cnJlbnRHUFUocGl4ZWxGb3JtYXRPYmosIG51
bVBpeGVsRm9ybWF0cywgZGlzcGxheU1hc2ssIG1fY29udGV4dE9iaik7CisgICAgICAgIGlkZW50
aWZ5QW5kU2V0Q3VycmVudEdQVShwaXhlbEZvcm1hdE9iaiwgZGlzcGxheU1hc2ssIG1fY29udGV4
dE9iaik7CiAgICAgfQorICAgIG1faG9zdFdpbmRvdyA9IG1ha2VXZWFrUHRyKGhvc3RXaW5kb3cp
OworICAgIGlmIChtX2hvc3RXaW5kb3cpCisgICAgICAgIG1faG9zdFdpbmRvdy0+cmVnaXN0ZXJX
aW5kb3dPYnNlcnZlcigqdGhpcyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93
KTsKICNlbmRpZgpAQCAtNjMyLDYgKzYzNiwxMSBAQCBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBo
aWNzQ29udGV4dDNEKCkKICAgICAgICAgW21fd2ViR0xMYXllciBzZXRDb250ZXh0Om51bGxwdHJd
OwogICAgIH0KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9X
U0VSVkVSX0JMT0NLSU5HKQorICAgIGlmIChtX2hvc3RXaW5kb3cpCisgICAgICAgIG1faG9zdFdp
bmRvdy0+dW5yZWdpc3RlcldpbmRvd09ic2VydmVyKCp0aGlzKTsKKyNlbmRpZgorICAgIAogICAg
IExPRyhXZWJHTCwgIkRlc3Ryb3llZCBhIEdyYXBoaWNzQ29udGV4dDNEICglcCkuIiwgdGhpcyk7
CiB9CiAKQEAgLTgxNyw2ICs4MjYsMTggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6YWxsb3dP
ZmZsaW5lUmVuZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQzMl90IGRpc3BsYXlJRCkKK3sKKyAg
ICBBU1NFUlQobV9jb250ZXh0T2JqKTsKKyAgICBpZiAoIW1fY29udGV4dE9iaikKKyAgICAgICAg
cmV0dXJuOworICAgIGF1dG8gZGlzcGxheU1hc2sgPSBkaXNwbGF5TWFza0ZvckRpc3BsYXkoZGlz
cGxheUlEKTsKKyAgICBhdXRvIHBpeGVsRm9ybWF0T2JqID0gQ0dMR2V0UGl4ZWxGb3JtYXQobV9j
b250ZXh0T2JqKTsKKyAgICBpZGVudGlmeUFuZFNldEN1cnJlbnRHUFUocGl4ZWxGb3JtYXRPYmos
IGRpc3BsYXlNYXNrLCBtX2NvbnRleHRPYmopOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHJldmlzaW9uIDIzMzgzMykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8b2JqYy9vYmpjLmg+CiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1
ZGUgIldpbmRvd09ic2VydmVyLmgiCiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRS
aWdodDsKQEAgLTQwLDcgKzQxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSG9z
dFdpbmRvdzsKICAgICAKLWNsYXNzIElPU3VyZmFjZSBmaW5hbCB7CitjbGFzcyBJT1N1cmZhY2Ug
ZmluYWwKKyNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisgICAg
OiBwdWJsaWMgV2luZG93T2JzZXJ2ZXIKKyNlbmRpZgorewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgRm9ybWF0IHsKQEAgLTkzLDYgKzk4LDgg
QEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVG
cm9tSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7CiAjZW5kaWYKIAor
ICAgIFdFQkNPUkVfRVhQT1JUIH5JT1N1cmZhY2UoKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIG1vdmVUb1Bvb2woc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJik7CiAKICAg
ICBzdGF0aWMgSW50U2l6ZSBtYXhpbXVtU2l6ZSgpOwpAQCAtMTA5LDcgKzExNiw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogICAgIElPU3VyZmFjZVJlZiBzdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9z
dXJmYWNlLmdldCgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBlbnN1
cmVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBDR0NvbnRleHRSZWYgZW5z
dXJlUGxhdGZvcm1Db250ZXh0KGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VC
Q09SRV9FWFBPUlQgQ0dDb250ZXh0UmVmIGVuc3VyZVBsYXRmb3JtQ29udGV4dChIb3N0V2luZG93
KiA9IG51bGxwdHIpOwogCiAgICAgZW51bSBjbGFzcyBTdXJmYWNlU3RhdGUgewogICAgICAgICBW
YWxpZCwKQEAgLTE1Myw2ICsxNjAsMTAgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gc3VyZmFjZUZyb21Qb29sKEludFNpemUsIEludFNpemUgY29udGV4
dFNpemUsIENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0KTsKICAgICBJbnRTaXplIGNvbnRleHRTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0U2l6ZTsgfQogICAgIHZvaWQgc2V0Q29udGV4dFNp
emUoSW50U2l6ZSk7CisgICAgCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VT
U19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2Uo
dWludDMyX3QpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNl
UmVmPiBtX2NvbG9yU3BhY2U7CiAgICAgSW50U2l6ZSBtX3NpemU7CkBAIC0xNjMsNiArMTc0LDEw
IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gbV9jZ0NvbnRleHQ7CiAK
ICAgICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7CisKKyNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICBXZWFr
UHRyPEhvc3RXaW5kb3c+IG1faG9zdFdpbmRvdzsKKyNlbmRpZgogfTsKIAogV0VCQ09SRV9FWFBP
UlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFdl
YkNvcmU6OklPU3VyZmFjZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQkocmV2aXNpb24gMjMzODMzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjgsNiArMjI4LDE0IEBAIElPU3VyZmFjZTo6SU9TdXJmYWNlKElPU3VyZmFj
ZVJlZiBzdXJmYWMKICAgICBtX3RvdGFsQnl0ZXMgPSBJT1N1cmZhY2VHZXRBbGxvY1NpemUoc3Vy
ZmFjZSk7CiB9CiAKK0lPU3VyZmFjZTo6fklPU3VyZmFjZSgpCit7CisjaWYgRU5BQkxFKFdFQlBS
T0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIGlmIChtX2hvc3RXaW5kb3cpCisgICAg
ICAgIG1faG9zdFdpbmRvdy0+dW5yZWdpc3RlcldpbmRvd09ic2VydmVyKCp0aGlzKTsKKyNlbmRp
ZgorfQorCiBJbnRTaXplIElPU3VyZmFjZTo6bWF4aW11bVNpemUoKQogewogICAgIEludFNpemUg
bWF4U2l6ZShjbGFtcFRvSW50ZWdlcihJT1N1cmZhY2VHZXRQcm9wZXJ0eU1heGltdW0oa0lPU3Vy
ZmFjZVdpZHRoKSksIGNsYW1wVG9JbnRlZ2VyKElPU3VyZmFjZUdldFByb3BlcnR5TWF4aW11bShr
SU9TdXJmYWNlSGVpZ2h0KSkpOwpAQCAtMjcyLDcgKzI4MCw3IEBAIHZvaWQgSU9TdXJmYWNlOjpz
ZXRDb250ZXh0U2l6ZShJbnRTaXplIGMKICAgICBtX2NvbnRleHRTaXplID0gY29udGV4dFNpemU7
CiB9CiAKLUNHQ29udGV4dFJlZiBJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dChjb25z
dCBIb3N0V2luZG93KiBob3N0V2luZG93KQorQ0dDb250ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJl
UGxhdGZvcm1Db250ZXh0KEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgaWYgKG1fY2dD
b250ZXh0KQogICAgICAgICByZXR1cm4gbV9jZ0NvbnRleHQuZ2V0KCk7CkBAIC0zMDYsNiArMzE0
LDkgQEAgQ0dDb250ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1DbwogICAgICAgICAg
ICAgZGlzcGxheU1hc2sgPSBkaXNwbGF5TWFza0ZvckRpc3BsYXkoaG9zdFdpbmRvdy0+ZGlzcGxh
eUlEKCkpOwogICAgICAgICBDR0lPU3VyZmFjZUNvbnRleHRTZXREaXNwbGF5TWFzayhtX2NnQ29u
dGV4dC5nZXQoKSwgZGlzcGxheU1hc2spOwogICAgIH0KKyAgICBtX2hvc3RXaW5kb3cgPSBtYWtl
V2Vha1B0cihob3N0V2luZG93KTsKKyAgICBpZiAobV9ob3N0V2luZG93KQorICAgICAgICBtX2hv
c3RXaW5kb3ctPnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oaG9zdFdpbmRvdyk7CiAjZW5kaWYKQEAgLTQ1Myw2ICs0NjQsMTYgQEAgdm9pZCBJ
T1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZQogICAgIElPU3VyZmFjZVNldFZhbHVl
KG1fc3VyZmFjZS5nZXQoKSwga0lPU3VyZmFjZUNvbG9yU3BhY2UsIGNvbG9yU3BhY2VQcm9wZXJ0
aWVzLmdldCgpKTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1Nf
V0lORE9XU0VSVkVSX0JMT0NLSU5HKQordm9pZCBJT1N1cmZhY2U6OndpbmRvd1NjcmVlbkRpZENo
YW5nZSh1bnNpZ25lZCBkaXNwbGF5SUQpCit7CisgICAgQVNTRVJUKG1fY2dDb250ZXh0KTsKKyAg
ICBpZiAoIW1fY2dDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQ0dJT1N1cmZhY2VDb250
ZXh0U2V0RGlzcGxheU1hc2sobV9jZ0NvbnRleHQuZ2V0KCksIGRpc3BsYXlNYXNrRm9yRGlzcGxh
eShkaXNwbGF5SUQpKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQogewogICAgIHN3aXRj
aCAoZm9ybWF0KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345067</attachid>
            <date>2018-07-15 14:53:14 -0700</date>
            <delta_ts>2018-07-15 14:59:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187684-20180715145313.patch</filename>
            <type>text/plain</type>
            <size>32317</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzg0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE4LTA3LTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJTyBzdXJmYWNlcyBhbmQg
M0QgZ3JhcGhpY3MgY29udGV4dHMgc2hvdWxkIHVwZGF0ZSB0aGUgZGlzcGxheSBtYXNrIHdoZW4g
dGhlIHdpbmRvdyBpZiBtb3ZlZCB0byBhbm90aGVyIHNjcmVlbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzY4NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIG5ldyBXaW5kb3dPYnNlcnZl
ciByZXBsYWNpbmcgdGhlIHByZXZpb3VzIFBvcHVwT3BlbmluZ09ic2VydmVyLiBMZXQgSU9TdXJm
YWNlIGFuZCBHcmFwaGljc0NvbnRleHQzRCBvYnNlcnZlIHdoZW4KKyAgICAgICAgdGhlIHdpbmRv
dyBzY3JlZW4gaXMgY2hhbmdpbmcsIGFuZCBoYXZlIHRoZW0gdXBkYXRlIHRoZWlyIGRpc3BsYXkg
bWFza3MgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHJlcXVpcmVz
IGEgZHVhbCBtb25pdG9yIHNldHVwLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVy
ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAg
KiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OndpbmRvd1NjcmVl
bkRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyV2luZG93T2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp1bnJlZ2lzdGVyV2luZG93T2JzZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZl
cnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpub3RpZnlXaW5kb3dTY3JlZW5E
aWRDaGFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpyZWdpc3RlclBvcHVw
T3BlbmluZ09ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6dW5y
ZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0No
cm9tZS5oOgorICAgICAgICAqIHBhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwYWdlL1dpbmRvd09ic2VydmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OldpbmRv
d09ic2VydmVyOjp3aWxsT3BlblBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd09ic2Vy
dmVyOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5k
b3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6aWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFj
ZTo6fklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRm
b3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OndpbmRvd1NjcmVlbkRp
ZENoYW5nZSk6CisKIDIwMTgtMDctMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgU2hyaW5rIFN0eWxlRmlsbERhdGEsIFN0eWxlU3Ryb2tlRGF0YSBh
bmQgU3R5bGVNaXNjRGF0YQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDI4LDcgKzEwMjgsNyBAQAogCQkzN0M3MzhGNDFFREJERThEMDAzRjJCMEIgLyogRGF0ZVRpbWVD
aG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0M3MzhGMjFFREJERTg3MDAzRjJCMEIgLyogRGF0ZVRpbWVDaG9vc2VyQ2xpZW50Lmgg
Ki87IH07CiAJCTM3RDQ1NkZEMUE5QTUwRDgwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3Mu
cG0gaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
RDQ1NkZCMUE5QTUwQjYwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3MucG0gKi87IH07CiAJ
CTM3RTM1MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RTM1MjRDMTI0NTBDNjYwMEJBRjVEOSAv
KiBJbnB1dFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQkzN0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NzJCMDk1
MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTM3RjU2N0NFMTY1MzU4RjQwMERE
RTkyQiAvKiBXaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc3MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFdpbmRvd09ic2VydmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdG
ODE4RkQwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGODE4RkIwRDY1NzYwNjAwNUUx
RjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTM3RkQ0Mjk4MTE4MzY4NDYwMDkzQzAyOSAvKiBUcmVlRGVw
dGhMaW1pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzdGRDQyOTcxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggKi87IH07CiAJCTM4
N0FFOTVCMUU4RTkyRUYwMDAwREU5NiAvKiBKU1dlYkdQVVNpemUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4N0FFOTU5MUU4RTkyRUYwMDAwREU5NiAv
KiBKU1dlYkdQVVNpemUuaCAqLzsgfTsKQEAgLTcwODgsNyArNzA4OCw3IEBACiAJCTM3MkMwMEQ4
MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
NzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSHlwaGVuYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzc2RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFJ1bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNl
cnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3B1cE9wZW5pbmdPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzcyQjA5NTE2NTM1ODU2MDAw
QTQ5Q0EgLyogV2luZG93T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2luZG93T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3NEFC
QTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIE5h
dGl2ZUltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF0
aXZlSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTE5QzIxMEI3
RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5NDA3LDcgKzE5NDA3LDYgQEAKIAkJCQkzMUQ1OTFCMTE2Njk3QTZD
MDBFNkJGMDIgLyogUGx1Z0luQ2xpZW50LmggKi8sCiAJCQkJNUNGQzQzNEUxOTI0MDZBOTAwQTBE
M0I1IC8qIFBvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJNUNGQzQzNEYxOTI0MDZB
OTAwQTBEM0I1IC8qIFBvaW50ZXJMb2NrQ29udHJvbGxlci5oICovLAotCQkJCTM3NzJCMDk1MTY1
MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovLAogCQkJCUI3NzZENDND
MTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3BwICovLAogCQkJCUI3NzZENDNBMTEw
NDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLywKIAkJCQk0NkI5NTE4RDIwN0Q2MzJB
MDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLywKQEAgLTE5NDg5LDYgKzE5NDg4LDcg
QEAKIAkJCQlCQzgyNDNFNzBEMENGRDc1MDA0NjBDOEYgLyogV2luZG93RmVhdHVyZXMuaCAqLywK
IAkJCQk3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNh
dG9yLmNwcCAqLywKIAkJCQk3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNB
bGxvd2VkSW5kaWNhdG9yLmggKi8sCisJCQkJMzc3MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFdp
bmRvd09ic2VydmVyLmggKi8sCiAJCQkJOTM3MTA4MEQxREI3NTQ1NTAwNjA3NDRFIC8qIFdpbmRv
d09yV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAogCQkJCUUxMjcxQTEzMEVFRUM4MDQwMEY2MTIx
MyAvKiBXb3JrZXJOYXZpZ2F0b3IuY3BwICovLAogCQkJCUUxMjcxQTBBMEVFRUM3N0EwMEY2MTIx
MyAvKiBXb3JrZXJOYXZpZ2F0b3IuaCAqLywKQEAgLTI5NzIxLDcgKzI5NzIxLDYgQEAKIAkJCQkw
NjY4RTE4QjBBREQ5NjI0MDA0MTI4RTAgLyogUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBQkMxMjg3NzBCMzNBQTZEMDBDNjkzRDUgLyogUG9wdXBNZW51Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzNCRTEyQjBFOTgwOTJGMDA4MzU1ODggLyogUG9wdXBNZW51U3R5bGUuaCBp
biBIZWFkZXJzICovLAotCQkJCTM3RjU2N0NFMTY1MzU4RjQwMERERTkyQiAvKiBQb3B1cE9wZW5p
bmdPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5REUwODI0NUU1OTAwMUU5QUJD
IC8qIFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyQzE0RjREREU2MDAzRTdB
NzAgLyogUG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMkUxNEY0
RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzA5NTEs
NiArMzA5NTAsNyBAQAogCQkJCTBGMTVFRDVDMUI3RUM3QzUwMEVEREZFQiAvKiBXaWxsQ2hhbmdl
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjQzRTkwRDBDRkQ3NTAwNDYwQzhGIC8qIFdp
bmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTk5QUY1MzBCMTM4NDY0NjhGQjAx
QTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
N0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogV2luZG93T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFFMUJGMDAxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENv
ZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDFCQUFBOTEzOTUwRTJDMDBGN0FDRUIgLyogV2lu
ZFJ1bGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U3BpbkJ1dHRvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZAogICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVy
aW5nTW91c2VFdmVudHNFbGVtZW50KHRoaXMpOwogICAgICAgICAgICAgICAgICAgICBtX2NhcHR1
cmluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1l
bnQoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5yZWdp
c3RlclBvcHVwT3BlbmluZ09ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHBhZ2UtPmNocm9tZSgpLnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFVwRG93blN0YXRlIG9sZFVwRG93
blN0YXRlID0gbV91cERvd25TdGF0ZTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNwaW5CdXR0
b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVyZSgpCiAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KG51bGxwdHIpOwogICAgICAgICAg
ICAgbV9jYXB0dXJpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9j
dW1lbnQoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkudW5yZWdpc3Rl
clBvcHVwT3BlbmluZ09ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgICAgICBwYWdlLT5jaHJv
bWUoKS51bnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICB9CiAgICAgfQog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVu
dC5oCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGlu
QnV0dG9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTIgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJQb3B1cE9w
ZW5pbmdPYnNlcnZlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiV2luZG93T2Jz
ZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTcGluQnV0dG9uRWxlbWVu
dCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCwgcHVibGljIFBvcHVwT3BlbmluZ09ic2Vy
dmVyIHsKK2NsYXNzIFNwaW5CdXR0b25FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVt
ZW50LCBwdWJsaWMgV2luZG93T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
U3BpbkJ1dHRvbkVsZW1lbnQpOwogcHVibGljOgogICAgIGVudW0gVXBEb3duU3RhdGUgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMTIgQEAKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCi0jaW5jbHVkZSAiUG9wdXBPcGVuaW5n
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVz
cGFjZS5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAiV2luZG93T2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5oPgogI2luY2x1ZGUgPHd0Zi9T
ZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTUxMCw2ICs1MTAsOCBA
QCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmCiAgICAgICAgIGlmIChm
cmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT53aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKTsKICAgICB9CisgICAgCisgICAgbm90aWZ5V2luZG93
U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7CiB9CiAKIC8vIC0tLS0tLS0tCkBAIC01NzEsMjIg
KzU3MywyOSBAQCB2b2lkIENocm9tZTo6ZGlkUmVjZWl2ZURvY1R5cGUoRnJhbWUmIGZyCiAjZW5k
aWYKIH0KIAotdm9pZCBDaHJvbWU6OnJlZ2lzdGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIoUG9wdXBP
cGVuaW5nT2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBDaHJvbWU6OnJlZ2lzdGVyV2luZG93T2Jz
ZXJ2ZXIoV2luZG93T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIG1fcG9wdXBPcGVuaW5nT2Jz
ZXJ2ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOworICAgIG1fd2luZG93T2JzZXJ2ZXJzLmFwcGVuZCgm
b2JzZXJ2ZXIpOwogfQogCi12b2lkIENocm9tZTo6dW5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2Vy
dmVyKFBvcHVwT3BlbmluZ09ic2VydmVyJiBvYnNlcnZlcikKK3ZvaWQgQ2hyb21lOjp1bnJlZ2lz
dGVyV2luZG93T2JzZXJ2ZXIoV2luZG93T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIGJvb2wg
cmVtb3ZlZCA9IG1fcG9wdXBPcGVuaW5nT2JzZXJ2ZXJzLnJlbW92ZUZpcnN0KCZvYnNlcnZlcik7
CisgICAgYm9vbCByZW1vdmVkID0gbV93aW5kb3dPYnNlcnZlcnMucmVtb3ZlRmlyc3QoJm9ic2Vy
dmVyKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwogfQogCiB2b2lkIENo
cm9tZTo6bm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCkgY29uc3QKIHsKLSAgICBjb25zdCBW
ZWN0b3I8UG9wdXBPcGVuaW5nT2JzZXJ2ZXIqPiBvYnNlcnZlcnMobV9wb3B1cE9wZW5pbmdPYnNl
cnZlcnMpOworICAgIGNvbnN0IFZlY3RvcjxXaW5kb3dPYnNlcnZlcio+IG9ic2VydmVycyhtX3dp
bmRvd09ic2VydmVycyk7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG9ic2VydmVycykKICAg
ICAgICAgb2JzZXJ2ZXItPndpbGxPcGVuUG9wdXAoKTsKIH0KIAordm9pZCBDaHJvbWU6Om5vdGlm
eVdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpIGNvbnN0
Cit7CisgICAgY29uc3QgVmVjdG9yPFdpbmRvd09ic2VydmVyKj4gb2JzZXJ2ZXJzKG1fd2luZG93
T2JzZXJ2ZXJzKTsKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAgICAg
ICBvYnNlcnZlci0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2aXNpb24gMjMzODMz
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgy
LDE2ICsxODIsMTcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlRG9jVHlwZShGcmFt
ZSYpOwogCi0gICAgdm9pZCByZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKFBvcHVwT3Blbmlu
Z09ic2VydmVyJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIoUG9w
dXBPcGVuaW5nT2JzZXJ2ZXImKTsKKyAgICB2b2lkIHJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoV2lu
ZG93T2JzZXJ2ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIHVucmVnaXN0ZXJXaW5kb3dPYnNlcnZl
cihXaW5kb3dPYnNlcnZlciYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5
UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCkgY29uc3Q7CisgICAgdm9pZCBub3RpZnlXaW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0OwogCiAgICAgUGFnZSYgbV9wYWdl
OwogICAgIENocm9tZUNsaWVudCYgbV9jbGllbnQ7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9k
aXNwbGF5SUQgeyAwIH07Ci0gICAgVmVjdG9yPFBvcHVwT3BlbmluZ09ic2VydmVyKj4gbV9wb3B1
cE9wZW5pbmdPYnNlcnZlcnM7CisgICAgVmVjdG9yPFdpbmRvd09ic2VydmVyKj4gbV93aW5kb3dP
YnNlcnZlcnM7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9pc0Rpc3BhdGNoVmlld3Bv
cnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZCB7IGZhbHNlIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BvcHVwT3BlbmluZ09ic2VydmVyLmgJKHJldmlzaW9uIDIzMzgzMykK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0g
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0g
KiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQb3B1cE9wZW5pbmdPYnNlcnZlciB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuUG9wdXAoKSA9IDA7Ci0KLXByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIH5Qb3B1cE9wZW5pbmdPYnNlcnZlcigpID0gZGVmYXVsdDsKLX07Ci0gICAg
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRv
d09ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPYnNl
cnZlci5oCShyZXZpc2lvbiAyMzM4MzMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9wdXBP
cGVuaW5nT2JzZXJ2ZXIuaDoyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd09i
c2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICog
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAq
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBvcHVwT3Bl
bmluZ09ic2VydmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5Qb3B1cCgp
ID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflBvcHVwT3BlbmluZ09ic2VydmVyKCkg
PSBkZWZhdWx0OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2luZG93T2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1dpbmRvd09ic2VydmVyLmgJKHJldmlzaW9uIDIzMzgzMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2luZG93T2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUg
QEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNywxMiArMjgsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBQb3B1cE9wZW5pbmdPYnNlcnZlciB7CitjbGFzcyBXaW5kb3dPYnNl
cnZlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuUG9wdXAoKSA9IDA7Ci0K
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5Qb3B1cCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQzMl90KSB7IH07CisgICAgCiBwcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCB+UG9wdXBPcGVuaW5nT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVh
bCB+V2luZG93T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkocmV2aXNpb24g
MjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxMSArMjgsMTQgQEAKIAogI2luY2x1ZGUgIldpZGdldC5oIgogCisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJz
b3I7Ci0KLWNsYXNzIEhvc3RXaW5kb3cgeworY2xhc3MgV2luZG93T2JzZXJ2ZXI7CisgICAgCitj
bGFzcyBIb3N0V2luZG93IDogcHVibGljIENhbk1ha2VXZWFrUHRyPEhvc3RXaW5kb3c+IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShIb3N0V2luZG93KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgSG9zdFdpbmRvdygpID0gZGVmYXVsdDsKQEAgLTc0LDYgKzc3LDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRTaXplIHNjcmVlblNpemUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBvdmVycmlkZVNjcmVlblNpemUoKSBjb25zdCA9IDA7Cisg
ICAgCisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoV2luZG93T2JzZXJ2
ZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJXaW5kb3dPYnNlcnZlcihXaW5k
b3dPYnNlcnZlciYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJXaW5kb3dPYnNlcnZlci5oIgogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBVU0UoQ0EpCkBAIC0xMTIsNyArMTE0LDExIEBAIHN0cnVjdCBBY3RpdmVJbmZvIHsKIAog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQz
RCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPiB7CitjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPgorI2lmIEVO
QUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICAsIHB1YmxpYyBXaW5k
b3dPYnNlcnZlcgorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgZW51bSB7CiAgICAgICAgIC8vIFdl
YkdMIDEgY29uc3RhbnRzCkBAIC0xMzE5LDYgKzEzMjUsMTAgQEAgcHJpdmF0ZToKICAgICBib29s
IGFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICB2b2lk
IHdpbmRvd1NjcmVlbkRpZENoYW5nZSh1aW50MzJfdCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAg
IGludCBtX2N1cnJlbnRXaWR0aCB7IDAgfTsKICAgICBpbnQgbV9jdXJyZW50SGVpZ2h0IHsgMCB9
OwogCkBAIC0xNDk2LDYgKzE1MDYsMTAgQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAg
UGxhdGZvcm0zRE9iamVjdCBtX3ZhbyB7IDAgfTsKICNlbmRpZgorICAgIAorI2lmIFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIFdl
YWtQdHI8SG9zdFdpbmRvdz4gbV9ob3N0V2luZG93OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1w
ZWRMZW5ndGggPSA0MDk2Owogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1wZWRBcmVhID0gTWF4
Q2xhbXBlZExlbmd0aCAqIE1heENsYW1wZWRMZW5ndGg7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIGJvb2wg
c3VjY2VzcyA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
KG5ldyBJbWFnZUJ1ZmZlcihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRl
cmluZ01vZGUsIGhvc3RXaW5kb3csIHN1Y2Nlc3MpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjMzODMzKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlciB7CiAgICAgZnJpZW5kIGNs
YXNzIElPU3VyZmFjZTsKIHB1YmxpYzoKICAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRl
ciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNl
U1JHQiwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9
IENvbG9yU3BhY2VTUkdCLCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogI2lmIFVTRShESVJFQ1Qy
RCkKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0KiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3Bh
Y2VTUkdCKTsKICNlbmRpZgpAQCAtMTY1LDkgKzE2NSw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBU
aGlzIGNvbnN0cnVjdG9yIHdpbGwgcGxhY2UgaXRzIHN1Y2Nlc3MgaW50byB0aGUgZ2l2ZW4gb3V0
LXZhcmlhYmxlCiAgICAgLy8gc28gdGhhdCBjcmVhdGUoKSBrbm93cyB3aGVuIGl0IHNob3VsZCBy
ZXR1cm4gZmFpbHVyZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUs
IGNvbnN0IEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UsIFJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKTsKICNpZiBV
U0UoQ0cpCi0gICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDR0NvbG9yU3BhY2VSZWYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cq
LCBib29sJiBzdWNjZXNzKTsKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcGFjZVJlZiwgUmVuZGVyaW5nTW9kZSwgSG9zdFdp
bmRvdyosIGJvb2wmIHN1Y2Nlc3MpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRvQ0ZEYXRh
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQ
cmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0OwogI2VsaWYgVVNFKERJUkVDVDJEKQogICAgIEltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiwgYm9vbCYgc3VjY2Vzcyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzOSw3ICsyMzksNyBAQCBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZm
ZXI6OnRvQkdSQURhdGEoCiAgICAgcmV0dXJuIGltYWdlRGF0YTsKIH0KIAotSW1hZ2VCdWZmZXI6
OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5k
b3cqLCBib29sJiBzdWNjZXNzKQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKQogICAgIDogbV9k
YXRhKEludFNpemUoc2l6ZSksIHJlbmRlcmluZ01vZGUpCiAgICAgLCBtX2xvZ2ljYWxTaXplKHNp
emUpCiAgICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyCiAgICAgcmV0dXJuIGJ1
ZmZlcjsKIH0KIAotSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBi
b29sJiBzdWNjZXNzKQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29s
JiBzdWNjZXNzKQogICAgIDogbV9sb2dpY2FsU2l6ZShzaXplKQogICAgICwgbV9yZXNvbHV0aW9u
U2NhbGUocmVzb2x1dGlvblNjYWxlKQogewpAQCAtMTk1LDcgKzE5NSw3IEBAIEltYWdlQnVmZmVy
OjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KIAot
SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sJiBzdWNjZXNz
KQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sJiBzdWNjZXNzKQog
ICAgIDogSW1hZ2VCdWZmZXIoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjYWNoZWRDR0NvbG9yU3Bh
Y2UoaW1hZ2VDb2xvclNwYWNlKSwgcmVuZGVyaW5nTW9kZSwgaG9zdFdpbmRvdywgc3VjY2VzcykK
IHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQkocmV2aXNpb24gMjMz
ODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0M0RDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAxLDcgKzQwMSw3IEBAIFJlZjxH
cmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0QKIH0KIAogI2lmIFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQotc3RhdGljIHZv
aWQgaWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKENHTFBpeGVsRm9ybWF0T2JqIHBpeGVsRm9ybWF0
T2JqLCBpbnQgbnVtUGl4ZWxGb3JtYXRzLCBDR09wZW5HTERpc3BsYXlNYXNrIGRpc3BsYXlNYXNr
T3BlbkdMLCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIGNvbnRleHRPYmopCitzdGF0aWMgdm9p
ZCBpZGVudGlmeUFuZFNldEN1cnJlbnRHUFUoQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRP
YmosIENHT3BlbkdMRGlzcGxheU1hc2sgZGlzcGxheU1hc2tPcGVuR0wsIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0M0QgY29udGV4dE9iaikKIHsKICAgICAvLyBXaGVuIHRoZSBXZWJQcm9jZXNzIGRv
ZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBXaW5kb3dTZXJ2ZXIsIHRoZXJlIGlzIG5vIHdheSBm
b3IgT3BlbkdMIHRvIHRlbGwgd2hpY2ggR1BVIGlzIGNvbm5lY3RlZCB0byBhIGRpc3BsYXkuCiAg
ICAgLy8gQ0dMU2V0VmlydHVhbFNjcmVlbiBjYW4gYmUgdXNlZCB0byB0ZWxsIE9wZW5HTCB3aGlj
aCBHUFUgaXQgc2hvdWxkIGJlIHVzaW5nLgpAQCAtNDEwLDE4ICs0MTAsMjAgQEAgc3RhdGljIHZv
aWQgaWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKENHTAogICAgIGlmICghZGlzcGxheU1hc2tPcGVu
R0wgfHwgIWNvbnRleHRPYmopCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoaW50IHZpcnR1
YWxTY3JlZW4gPSAwOyB2aXJ0dWFsU2NyZWVuIDwgbnVtUGl4ZWxGb3JtYXRzOyArK3ZpcnR1YWxT
Y3JlZW4pIHsKLSAgICAgICAgR0xpbnQgZGlzcGxheU1hc2sgPSAwOwotICAgICAgICBDR0xFcnJv
ciBlcnJvciA9IENHTERlc2NyaWJlUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXRPYmosIHZpcnR1YWxT
Y3JlZW4sIGtDR0xQRkFEaXNwbGF5TWFzaywgJmRpc3BsYXlNYXNrKTsKLSAgICAgICAgQVNTRVJU
KGVycm9yID09IGtDR0xOb0Vycm9yKTsKLSAgICAgICAgaWYgKGVycm9yICE9IGtDR0xOb0Vycm9y
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChkaXNwbGF5TWFzayAmIGRpc3Bs
YXlNYXNrT3BlbkdMKSB7Ci0gICAgICAgICAgICBlcnJvciA9IENHTFNldFZpcnR1YWxTY3JlZW4o
Y29udGV4dE9iaiwgdmlydHVhbFNjcmVlbik7CisgICAgTlNPcGVuR0xQaXhlbEZvcm1hdCAqcGl4
ZWxGb3JtYXQgPSBbW05TT3BlbkdMUGl4ZWxGb3JtYXQgYWxsb2NdIGluaXRXaXRoQ0dMUGl4ZWxG
b3JtYXRPYmo6cGl4ZWxGb3JtYXRPYmpdOworICAgIAorICAgIC8vIGZpbmQgdmlydHVhbCBzY3Jl
ZW4KKyAgICBHTGludCBudW1iZXJPZlZpcnR1YWxTY3JlZW4gPSBbcGl4ZWxGb3JtYXQgbnVtYmVy
T2ZWaXJ0dWFsU2NyZWVuc107CisgICAgZm9yIChHTGludCB2aXJ0dWFsU2NyZWVuID0gMDsgdmly
dHVhbFNjcmVlbiA8IG51bWJlck9mVmlydHVhbFNjcmVlbjsgdmlydHVhbFNjcmVlbisrKSB7Cisg
ICAgICAgIEdMaW50IG1hc2sgPSAwOworICAgICAgICBbcGl4ZWxGb3JtYXQgZ2V0VmFsdWVzOiZt
YXNrIGZvckF0dHJpYnV0ZTpOU09wZW5HTFBGQVNjcmVlbk1hc2sgZm9yVmlydHVhbFNjcmVlbjp2
aXJ0dWFsU2NyZWVuXTsKKyAgICAgICAgaWYgKG1hc2sgJiBkaXNwbGF5TWFza09wZW5HTCkgewor
ICAgICAgICAgICAgQ0dMRXJyb3IgZXJyb3IgPSBDR0xTZXRWaXJ0dWFsU2NyZWVuKGNvbnRleHRP
YmosIHZpcnR1YWxTY3JlZW4pOwogICAgICAgICAgICAgQVNTRVJUKGVycm9yID09IGtDR0xOb0Vy
cm9yKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorICAgIFtwaXhlbEZv
cm1hdCByZWxlYXNlXTsKIH0KICNlbmRpZgogCkBAIC00OTcsOCArNDk5LDExIEBAIEdyYXBoaWNz
Q29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmEKICAgICBpZiAoYXV0byBkaXNwbGF5TWFz
ayA9IHByaW1hcnlPcGVuR0xEaXNwbGF5TWFzaygpKSB7CiAgICAgICAgIGlmIChob3N0V2luZG93
ICYmIGhvc3RXaW5kb3ctPmRpc3BsYXlJRCgpKQogICAgICAgICAgICAgZGlzcGxheU1hc2sgPSBk
aXNwbGF5TWFza0ZvckRpc3BsYXkoaG9zdFdpbmRvdy0+ZGlzcGxheUlEKCkpOwotICAgICAgICBp
ZGVudGlmeUFuZFNldEN1cnJlbnRHUFUocGl4ZWxGb3JtYXRPYmosIG51bVBpeGVsRm9ybWF0cywg
ZGlzcGxheU1hc2ssIG1fY29udGV4dE9iaik7CisgICAgICAgIGlkZW50aWZ5QW5kU2V0Q3VycmVu
dEdQVShwaXhlbEZvcm1hdE9iaiwgZGlzcGxheU1hc2ssIG1fY29udGV4dE9iaik7CiAgICAgfQor
ICAgIG1faG9zdFdpbmRvdyA9IG1ha2VXZWFrUHRyKGhvc3RXaW5kb3cpOworICAgIGlmIChtX2hv
c3RXaW5kb3cpCisgICAgICAgIG1faG9zdFdpbmRvdy0+cmVnaXN0ZXJXaW5kb3dPYnNlcnZlcigq
dGhpcyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKICNlbmRpZgpAQCAt
NjMyLDYgKzYzNywxMSBAQCBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKCkK
ICAgICAgICAgW21fd2ViR0xMYXllciBzZXRDb250ZXh0Om51bGxwdHJdOwogICAgIH0KIAorI2lm
IFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5H
KQorICAgIGlmIChtX2hvc3RXaW5kb3cpCisgICAgICAgIG1faG9zdFdpbmRvdy0+dW5yZWdpc3Rl
cldpbmRvd09ic2VydmVyKCp0aGlzKTsKKyNlbmRpZgorICAgIAogICAgIExPRyhXZWJHTCwgIkRl
c3Ryb3llZCBhIEdyYXBoaWNzQ29udGV4dDNEICglcCkuIiwgdGhpcyk7CiB9CiAKQEAgLTgxNyw2
ICs4MjcsMTggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6YWxsb3dPZmZsaW5lUmVuZAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NF
U1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6d2luZG93
U2NyZWVuRGlkQ2hhbmdlKHVpbnQzMl90IGRpc3BsYXlJRCkKK3sKKyAgICBBU1NFUlQobV9jb250
ZXh0T2JqKTsKKyAgICBpZiAoIW1fY29udGV4dE9iaikKKyAgICAgICAgcmV0dXJuOworICAgIGF1
dG8gZGlzcGxheU1hc2sgPSBkaXNwbGF5TWFza0ZvckRpc3BsYXkoZGlzcGxheUlEKTsKKyAgICBh
dXRvIHBpeGVsRm9ybWF0T2JqID0gQ0dMR2V0UGl4ZWxGb3JtYXQobV9jb250ZXh0T2JqKTsKKyAg
ICBpZGVudGlmeUFuZFNldEN1cnJlbnRHUFUocGl4ZWxGb3JtYXRPYmosIGRpc3BsYXlNYXNrLCBt
X2NvbnRleHRPYmopOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUkFQSElD
U19DT05URVhUXzNEKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvSU9TdXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHJldmlzaW9uIDIzMzgzMykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8b2JqYy9vYmpjLmg+CiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIldpbmRvd09ic2Vy
dmVyLmgiCiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTQwLDcg
KzQxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSG9zdFdpbmRvdzsKICAgICAK
LWNsYXNzIElPU3VyZmFjZSBmaW5hbCB7CitjbGFzcyBJT1N1cmZhY2UgZmluYWwKKyNpZiBFTkFC
TEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisgICAgOiBwdWJsaWMgV2luZG93
T2JzZXJ2ZXIKKyNlbmRpZgorewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGVudW0gY2xhc3MgRm9ybWF0IHsKQEAgLTkzLDYgKzk4LDggQEAgcHVibGljOgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tSW1hZ2VCdWZmZXIo
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7CiAjZW5kaWYKIAorICAgIFdFQkNPUkVfRVhQ
T1JUIH5JT1N1cmZhY2UoKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIG1vdmVU
b1Bvb2woc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJik7CiAKICAgICBzdGF0aWMgSW50U2l6
ZSBtYXhpbXVtU2l6ZSgpOwpAQCAtMTA5LDcgKzExNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IElPU3VyZmFjZVJlZiBzdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgpOyB9
CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBlbnN1cmVHcmFwaGljc0NvbnRl
eHQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBDR0NvbnRleHRSZWYgZW5zdXJlUGxhdGZvcm1Db250
ZXh0KGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgQ0dD
b250ZXh0UmVmIGVuc3VyZVBsYXRmb3JtQ29udGV4dChIb3N0V2luZG93KiA9IG51bGxwdHIpOwog
CiAgICAgZW51bSBjbGFzcyBTdXJmYWNlU3RhdGUgewogICAgICAgICBWYWxpZCwKQEAgLTE1Myw2
ICsxNjAsMTAgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4gc3VyZmFjZUZyb21Qb29sKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JT
cGFjZVJlZiwgRm9ybWF0KTsKICAgICBJbnRTaXplIGNvbnRleHRTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0U2l6ZTsgfQogICAgIHZvaWQgc2V0Q29udGV4dFNpemUoSW50U2l6ZSk7Cisg
ICAgCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJf
QkxPQ0tJTkcpCisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UodWludDMyX3QpIG92ZXJy
aWRlOworI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBtX2NvbG9yU3Bh
Y2U7CiAgICAgSW50U2l6ZSBtX3NpemU7CkBAIC0xNjMsNiArMTc0LDEwIEBAIHByaXZhdGU6CiAg
ICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gbV9jZ0NvbnRleHQ7CiAKICAgICBSZXRhaW5QdHI8
SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7CisKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShX
RUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICBXZWFrUHRyPEhvc3RXaW5kb3c+
IG1faG9zdFdpbmRvdzsKKyNlbmRpZgogfTsKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFdlYkNvcmU6OklPU3VyZmFj
ZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJm
YWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZS5tbQkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgs
NiArMjI4LDE0IEBAIElPU3VyZmFjZTo6SU9TdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWMKICAg
ICBtX3RvdGFsQnl0ZXMgPSBJT1N1cmZhY2VHZXRBbGxvY1NpemUoc3VyZmFjZSk7CiB9CiAKK0lP
U3VyZmFjZTo6fklPU3VyZmFjZSgpCit7CisjaWYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VS
VkVSX0JMT0NLSU5HKQorICAgIGlmIChtX2hvc3RXaW5kb3cpCisgICAgICAgIG1faG9zdFdpbmRv
dy0+dW5yZWdpc3RlcldpbmRvd09ic2VydmVyKCp0aGlzKTsKKyNlbmRpZgorfQorCiBJbnRTaXpl
IElPU3VyZmFjZTo6bWF4aW11bVNpemUoKQogewogICAgIEludFNpemUgbWF4U2l6ZShjbGFtcFRv
SW50ZWdlcihJT1N1cmZhY2VHZXRQcm9wZXJ0eU1heGltdW0oa0lPU3VyZmFjZVdpZHRoKSksIGNs
YW1wVG9JbnRlZ2VyKElPU3VyZmFjZUdldFByb3BlcnR5TWF4aW11bShrSU9TdXJmYWNlSGVpZ2h0
KSkpOwpAQCAtMjcyLDcgKzI4MCw3IEBAIHZvaWQgSU9TdXJmYWNlOjpzZXRDb250ZXh0U2l6ZShJ
bnRTaXplIGMKICAgICBtX2NvbnRleHRTaXplID0gY29udGV4dFNpemU7CiB9CiAKLUNHQ29udGV4
dFJlZiBJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dChjb25zdCBIb3N0V2luZG93KiBo
b3N0V2luZG93KQorQ0dDb250ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1Db250ZXh0
KEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgaWYgKG1fY2dDb250ZXh0KQogICAgICAg
ICByZXR1cm4gbV9jZ0NvbnRleHQuZ2V0KCk7CkBAIC0zMDYsNiArMzE0LDkgQEAgQ0dDb250ZXh0
UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1DbwogICAgICAgICAgICAgZGlzcGxheU1hc2sg
PSBkaXNwbGF5TWFza0ZvckRpc3BsYXkoaG9zdFdpbmRvdy0+ZGlzcGxheUlEKCkpOwogICAgICAg
ICBDR0lPU3VyZmFjZUNvbnRleHRTZXREaXNwbGF5TWFzayhtX2NnQ29udGV4dC5nZXQoKSwgZGlz
cGxheU1hc2spOwogICAgIH0KKyAgICBtX2hvc3RXaW5kb3cgPSBtYWtlV2Vha1B0cihob3N0V2lu
ZG93KTsKKyAgICBpZiAobV9ob3N0V2luZG93KQorICAgICAgICBtX2hvc3RXaW5kb3ctPnJlZ2lz
dGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaG9zdFdp
bmRvdyk7CiAjZW5kaWYKQEAgLTQ1Myw2ICs0NjQsMTYgQEAgdm9pZCBJT1N1cmZhY2U6Om1pZ3Jh
dGVDb2xvclNwYWNlVG9Qcm9wZQogICAgIElPU3VyZmFjZVNldFZhbHVlKG1fc3VyZmFjZS5nZXQo
KSwga0lPU3VyZmFjZUNvbG9yU3BhY2UsIGNvbG9yU3BhY2VQcm9wZXJ0aWVzLmdldCgpKTsKIH0K
IAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JM
T0NLSU5HKQordm9pZCBJT1N1cmZhY2U6OndpbmRvd1NjcmVlbkRpZENoYW5nZSh1bnNpZ25lZCBk
aXNwbGF5SUQpCit7CisgICAgQVNTRVJUKG1fY2dDb250ZXh0KTsKKyAgICBpZiAoIW1fY2dDb250
ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQ0dJT1N1cmZhY2VDb250ZXh0U2V0RGlzcGxheU1h
c2sobV9jZ0NvbnRleHQuZ2V0KCksIGRpc3BsYXlNYXNrRm9yRGlzcGxheShkaXNwbGF5SUQpKTsK
K30KKyNlbmRpZgorCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQogewogICAgIHN3aXRjaCAoZm9ybWF0KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345068</attachid>
            <date>2018-07-15 14:59:22 -0700</date>
            <delta_ts>2018-07-15 15:23:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187684-20180715145921.patch</filename>
            <type>text/plain</type>
            <size>32262</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzg0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE4LTA3LTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJTyBzdXJmYWNlcyBhbmQg
M0QgZ3JhcGhpY3MgY29udGV4dHMgc2hvdWxkIHVwZGF0ZSB0aGUgZGlzcGxheSBtYXNrIHdoZW4g
dGhlIHdpbmRvdyBpZiBtb3ZlZCB0byBhbm90aGVyIHNjcmVlbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzY4NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIG5ldyBXaW5kb3dPYnNlcnZl
ciByZXBsYWNpbmcgdGhlIHByZXZpb3VzIFBvcHVwT3BlbmluZ09ic2VydmVyLiBMZXQgSU9TdXJm
YWNlIGFuZCBHcmFwaGljc0NvbnRleHQzRCBvYnNlcnZlIHdoZW4KKyAgICAgICAgdGhlIHdpbmRv
dyBzY3JlZW4gaXMgY2hhbmdpbmcsIGFuZCBoYXZlIHRoZW0gdXBkYXRlIHRoZWlyIGRpc3BsYXkg
bWFza3MgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHJlcXVpcmVz
IGEgZHVhbCBtb25pdG9yIHNldHVwLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVy
ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAg
KiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OndpbmRvd1NjcmVl
bkRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyV2luZG93T2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp1bnJlZ2lzdGVyV2luZG93T2JzZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZl
cnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpub3RpZnlXaW5kb3dTY3JlZW5E
aWRDaGFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpyZWdpc3RlclBvcHVw
T3BlbmluZ09ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6dW5y
ZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0No
cm9tZS5oOgorICAgICAgICAqIHBhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwYWdlL1dpbmRvd09ic2VydmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OldpbmRv
d09ic2VydmVyOjp3aWxsT3BlblBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd09ic2Vy
dmVyOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5k
b3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6aWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFj
ZTo6fklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRm
b3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OndpbmRvd1NjcmVlbkRp
ZENoYW5nZSk6CisKIDIwMTgtMDctMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgU2hyaW5rIFN0eWxlRmlsbERhdGEsIFN0eWxlU3Ryb2tlRGF0YSBh
bmQgU3R5bGVNaXNjRGF0YQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDI4LDcgKzEwMjgsNyBAQAogCQkzN0M3MzhGNDFFREJERThEMDAzRjJCMEIgLyogRGF0ZVRpbWVD
aG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0M3MzhGMjFFREJERTg3MDAzRjJCMEIgLyogRGF0ZVRpbWVDaG9vc2VyQ2xpZW50Lmgg
Ki87IH07CiAJCTM3RDQ1NkZEMUE5QTUwRDgwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3Mu
cG0gaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
RDQ1NkZCMUE5QTUwQjYwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3MucG0gKi87IH07CiAJ
CTM3RTM1MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RTM1MjRDMTI0NTBDNjYwMEJBRjVEOSAv
KiBJbnB1dFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQkzN0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NzJCMDk1
MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTM3RjU2N0NFMTY1MzU4RjQwMERE
RTkyQiAvKiBXaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc3MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFdpbmRvd09ic2VydmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdG
ODE4RkQwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGODE4RkIwRDY1NzYwNjAwNUUx
RjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTM3RkQ0Mjk4MTE4MzY4NDYwMDkzQzAyOSAvKiBUcmVlRGVw
dGhMaW1pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzdGRDQyOTcxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggKi87IH07CiAJCTM4
N0FFOTVCMUU4RTkyRUYwMDAwREU5NiAvKiBKU1dlYkdQVVNpemUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4N0FFOTU5MUU4RTkyRUYwMDAwREU5NiAv
KiBKU1dlYkdQVVNpemUuaCAqLzsgfTsKQEAgLTcwODgsNyArNzA4OCw3IEBACiAJCTM3MkMwMEQ4
MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
NzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSHlwaGVuYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzc2RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFJ1bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNl
cnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3B1cE9wZW5pbmdPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzcyQjA5NTE2NTM1ODU2MDAw
QTQ5Q0EgLyogV2luZG93T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2luZG93T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3NEFC
QTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIE5h
dGl2ZUltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF0
aXZlSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTE5QzIxMEI3
RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5NDA3LDcgKzE5NDA3LDYgQEAKIAkJCQkzMUQ1OTFCMTE2Njk3QTZD
MDBFNkJGMDIgLyogUGx1Z0luQ2xpZW50LmggKi8sCiAJCQkJNUNGQzQzNEUxOTI0MDZBOTAwQTBE
M0I1IC8qIFBvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJNUNGQzQzNEYxOTI0MDZB
OTAwQTBEM0I1IC8qIFBvaW50ZXJMb2NrQ29udHJvbGxlci5oICovLAotCQkJCTM3NzJCMDk1MTY1
MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovLAogCQkJCUI3NzZENDND
MTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3BwICovLAogCQkJCUI3NzZENDNBMTEw
NDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLywKIAkJCQk0NkI5NTE4RDIwN0Q2MzJB
MDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLywKQEAgLTE5NDg5LDYgKzE5NDg4LDcg
QEAKIAkJCQlCQzgyNDNFNzBEMENGRDc1MDA0NjBDOEYgLyogV2luZG93RmVhdHVyZXMuaCAqLywK
IAkJCQk3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNh
dG9yLmNwcCAqLywKIAkJCQk3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNB
bGxvd2VkSW5kaWNhdG9yLmggKi8sCisJCQkJMzc3MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFdp
bmRvd09ic2VydmVyLmggKi8sCiAJCQkJOTM3MTA4MEQxREI3NTQ1NTAwNjA3NDRFIC8qIFdpbmRv
d09yV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAogCQkJCUUxMjcxQTEzMEVFRUM4MDQwMEY2MTIx
MyAvKiBXb3JrZXJOYXZpZ2F0b3IuY3BwICovLAogCQkJCUUxMjcxQTBBMEVFRUM3N0EwMEY2MTIx
MyAvKiBXb3JrZXJOYXZpZ2F0b3IuaCAqLywKQEAgLTI5NzIxLDcgKzI5NzIxLDYgQEAKIAkJCQkw
NjY4RTE4QjBBREQ5NjI0MDA0MTI4RTAgLyogUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBQkMxMjg3NzBCMzNBQTZEMDBDNjkzRDUgLyogUG9wdXBNZW51Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzNCRTEyQjBFOTgwOTJGMDA4MzU1ODggLyogUG9wdXBNZW51U3R5bGUuaCBp
biBIZWFkZXJzICovLAotCQkJCTM3RjU2N0NFMTY1MzU4RjQwMERERTkyQiAvKiBQb3B1cE9wZW5p
bmdPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5REUwODI0NUU1OTAwMUU5QUJD
IC8qIFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyQzE0RjREREU2MDAzRTdB
NzAgLyogUG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMkUxNEY0
RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzA5NTEs
NiArMzA5NTAsNyBAQAogCQkJCTBGMTVFRDVDMUI3RUM3QzUwMEVEREZFQiAvKiBXaWxsQ2hhbmdl
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjQzRTkwRDBDRkQ3NTAwNDYwQzhGIC8qIFdp
bmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTk5QUY1MzBCMTM4NDY0NjhGQjAx
QTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
N0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogV2luZG93T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFFMUJGMDAxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENv
ZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDFCQUFBOTEzOTUwRTJDMDBGN0FDRUIgLyogV2lu
ZFJ1bGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U3BpbkJ1dHRvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZAogICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVy
aW5nTW91c2VFdmVudHNFbGVtZW50KHRoaXMpOwogICAgICAgICAgICAgICAgICAgICBtX2NhcHR1
cmluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1l
bnQoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5yZWdp
c3RlclBvcHVwT3BlbmluZ09ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHBhZ2UtPmNocm9tZSgpLnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFVwRG93blN0YXRlIG9sZFVwRG93
blN0YXRlID0gbV91cERvd25TdGF0ZTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNwaW5CdXR0
b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVyZSgpCiAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KG51bGxwdHIpOwogICAgICAgICAg
ICAgbV9jYXB0dXJpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9j
dW1lbnQoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkudW5yZWdpc3Rl
clBvcHVwT3BlbmluZ09ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgICAgICBwYWdlLT5jaHJv
bWUoKS51bnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICB9CiAgICAgfQog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVu
dC5oCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGlu
QnV0dG9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTIgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJQb3B1cE9w
ZW5pbmdPYnNlcnZlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiV2luZG93T2Jz
ZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTcGluQnV0dG9uRWxlbWVu
dCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCwgcHVibGljIFBvcHVwT3BlbmluZ09ic2Vy
dmVyIHsKK2NsYXNzIFNwaW5CdXR0b25FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVt
ZW50LCBwdWJsaWMgV2luZG93T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
U3BpbkJ1dHRvbkVsZW1lbnQpOwogcHVibGljOgogICAgIGVudW0gVXBEb3duU3RhdGUgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMTIgQEAKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCi0jaW5jbHVkZSAiUG9wdXBPcGVuaW5n
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVz
cGFjZS5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAiV2luZG93T2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5oPgogI2luY2x1ZGUgPHd0Zi9T
ZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTUxMCw2ICs1MTAsOCBA
QCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmCiAgICAgICAgIGlmIChm
cmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT53aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKTsKICAgICB9CisgICAgCisgICAgbm90aWZ5V2luZG93
U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7CiB9CiAKIC8vIC0tLS0tLS0tCkBAIC01NzEsMjIg
KzU3MywyOSBAQCB2b2lkIENocm9tZTo6ZGlkUmVjZWl2ZURvY1R5cGUoRnJhbWUmIGZyCiAjZW5k
aWYKIH0KIAotdm9pZCBDaHJvbWU6OnJlZ2lzdGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIoUG9wdXBP
cGVuaW5nT2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBDaHJvbWU6OnJlZ2lzdGVyV2luZG93T2Jz
ZXJ2ZXIoV2luZG93T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIG1fcG9wdXBPcGVuaW5nT2Jz
ZXJ2ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOworICAgIG1fd2luZG93T2JzZXJ2ZXJzLmFwcGVuZCgm
b2JzZXJ2ZXIpOwogfQogCi12b2lkIENocm9tZTo6dW5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2Vy
dmVyKFBvcHVwT3BlbmluZ09ic2VydmVyJiBvYnNlcnZlcikKK3ZvaWQgQ2hyb21lOjp1bnJlZ2lz
dGVyV2luZG93T2JzZXJ2ZXIoV2luZG93T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIGJvb2wg
cmVtb3ZlZCA9IG1fcG9wdXBPcGVuaW5nT2JzZXJ2ZXJzLnJlbW92ZUZpcnN0KCZvYnNlcnZlcik7
CisgICAgYm9vbCByZW1vdmVkID0gbV93aW5kb3dPYnNlcnZlcnMucmVtb3ZlRmlyc3QoJm9ic2Vy
dmVyKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwogfQogCiB2b2lkIENo
cm9tZTo6bm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCkgY29uc3QKIHsKLSAgICBjb25zdCBW
ZWN0b3I8UG9wdXBPcGVuaW5nT2JzZXJ2ZXIqPiBvYnNlcnZlcnMobV9wb3B1cE9wZW5pbmdPYnNl
cnZlcnMpOworICAgIGNvbnN0IFZlY3RvcjxXaW5kb3dPYnNlcnZlcio+IG9ic2VydmVycyhtX3dp
bmRvd09ic2VydmVycyk7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG9ic2VydmVycykKICAg
ICAgICAgb2JzZXJ2ZXItPndpbGxPcGVuUG9wdXAoKTsKIH0KIAordm9pZCBDaHJvbWU6Om5vdGlm
eVdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpIGNvbnN0
Cit7CisgICAgY29uc3QgVmVjdG9yPFdpbmRvd09ic2VydmVyKj4gb2JzZXJ2ZXJzKG1fd2luZG93
T2JzZXJ2ZXJzKTsKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAgICAg
ICBvYnNlcnZlci0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2aXNpb24gMjMzODMz
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgy
LDE2ICsxODIsMTcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlRG9jVHlwZShGcmFt
ZSYpOwogCi0gICAgdm9pZCByZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKFBvcHVwT3Blbmlu
Z09ic2VydmVyJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIoUG9w
dXBPcGVuaW5nT2JzZXJ2ZXImKTsKKyAgICB2b2lkIHJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoV2lu
ZG93T2JzZXJ2ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIHVucmVnaXN0ZXJXaW5kb3dPYnNlcnZl
cihXaW5kb3dPYnNlcnZlciYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5
UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCkgY29uc3Q7CisgICAgdm9pZCBub3RpZnlXaW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0OwogCiAgICAgUGFnZSYgbV9wYWdl
OwogICAgIENocm9tZUNsaWVudCYgbV9jbGllbnQ7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9k
aXNwbGF5SUQgeyAwIH07Ci0gICAgVmVjdG9yPFBvcHVwT3BlbmluZ09ic2VydmVyKj4gbV9wb3B1
cE9wZW5pbmdPYnNlcnZlcnM7CisgICAgVmVjdG9yPFdpbmRvd09ic2VydmVyKj4gbV93aW5kb3dP
YnNlcnZlcnM7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9pc0Rpc3BhdGNoVmlld3Bv
cnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZCB7IGZhbHNlIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BvcHVwT3BlbmluZ09ic2VydmVyLmgJKHJldmlzaW9uIDIzMzgzMykK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0g
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0g
KiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQb3B1cE9wZW5pbmdPYnNlcnZlciB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuUG9wdXAoKSA9IDA7Ci0KLXByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIH5Qb3B1cE9wZW5pbmdPYnNlcnZlcigpID0gZGVmYXVsdDsKLX07Ci0gICAg
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRv
d09ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPYnNl
cnZlci5oCShyZXZpc2lvbiAyMzM4MzMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9wdXBP
cGVuaW5nT2JzZXJ2ZXIuaDoyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd09i
c2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICog
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAq
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBvcHVwT3Bl
bmluZ09ic2VydmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5Qb3B1cCgp
ID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflBvcHVwT3BlbmluZ09ic2VydmVyKCkg
PSBkZWZhdWx0OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2luZG93T2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1dpbmRvd09ic2VydmVyLmgJKHJldmlzaW9uIDIzMzgzMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2luZG93T2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUg
QEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNywxMiArMjgsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBQb3B1cE9wZW5pbmdPYnNlcnZlciB7CitjbGFzcyBXaW5kb3dPYnNl
cnZlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuUG9wdXAoKSA9IDA7Ci0K
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5Qb3B1cCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQzMl90KSB7IH07CisgICAgCiBwcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCB+UG9wdXBPcGVuaW5nT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVh
bCB+V2luZG93T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkocmV2aXNpb24g
MjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxMSArMjgsMTQgQEAKIAogI2luY2x1ZGUgIldpZGdldC5oIgogCisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJz
b3I7Ci0KLWNsYXNzIEhvc3RXaW5kb3cgeworY2xhc3MgV2luZG93T2JzZXJ2ZXI7CisgICAgCitj
bGFzcyBIb3N0V2luZG93IDogcHVibGljIENhbk1ha2VXZWFrUHRyPEhvc3RXaW5kb3c+IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShIb3N0V2luZG93KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgSG9zdFdpbmRvdygpID0gZGVmYXVsdDsKQEAgLTc0LDYgKzc3LDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRTaXplIHNjcmVlblNpemUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBvdmVycmlkZVNjcmVlblNpemUoKSBjb25zdCA9IDA7Cisg
ICAgCisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoV2luZG93T2JzZXJ2
ZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJXaW5kb3dPYnNlcnZlcihXaW5k
b3dPYnNlcnZlciYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJXaW5kb3dPYnNlcnZlci5oIgogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBVU0UoQ0EpCkBAIC0xMTIsNyArMTE0LDExIEBAIHN0cnVjdCBBY3RpdmVJbmZvIHsKIAog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQz
RCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPiB7CitjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPgorI2lmIEVO
QUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICAsIHB1YmxpYyBXaW5k
b3dPYnNlcnZlcgorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgZW51bSB7CiAgICAgICAgIC8vIFdl
YkdMIDEgY29uc3RhbnRzCkBAIC0xMzE5LDYgKzEzMjUsMTAgQEAgcHJpdmF0ZToKICAgICBib29s
IGFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICB2b2lk
IHdpbmRvd1NjcmVlbkRpZENoYW5nZSh1aW50MzJfdCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAg
IGludCBtX2N1cnJlbnRXaWR0aCB7IDAgfTsKICAgICBpbnQgbV9jdXJyZW50SGVpZ2h0IHsgMCB9
OwogCkBAIC0xNDk2LDYgKzE1MDYsMTAgQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAg
UGxhdGZvcm0zRE9iamVjdCBtX3ZhbyB7IDAgfTsKICNlbmRpZgorICAgIAorI2lmIFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIFdl
YWtQdHI8SG9zdFdpbmRvdz4gbV9ob3N0V2luZG93OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1w
ZWRMZW5ndGggPSA0MDk2Owogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1wZWRBcmVhID0gTWF4
Q2xhbXBlZExlbmd0aCAqIE1heENsYW1wZWRMZW5ndGg7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIGJvb2wg
c3VjY2VzcyA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
KG5ldyBJbWFnZUJ1ZmZlcihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRl
cmluZ01vZGUsIGhvc3RXaW5kb3csIHN1Y2Nlc3MpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjMzODMzKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlciB7CiAgICAgZnJpZW5kIGNs
YXNzIElPU3VyZmFjZTsKIHB1YmxpYzoKICAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRl
ciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNl
U1JHQiwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9
IENvbG9yU3BhY2VTUkdCLCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogI2lmIFVTRShESVJFQ1Qy
RCkKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0KiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3Bh
Y2VTUkdCKTsKICNlbmRpZgpAQCAtMTY1LDkgKzE2NSw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBU
aGlzIGNvbnN0cnVjdG9yIHdpbGwgcGxhY2UgaXRzIHN1Y2Nlc3MgaW50byB0aGUgZ2l2ZW4gb3V0
LXZhcmlhYmxlCiAgICAgLy8gc28gdGhhdCBjcmVhdGUoKSBrbm93cyB3aGVuIGl0IHNob3VsZCBy
ZXR1cm4gZmFpbHVyZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUs
IGNvbnN0IEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UsIFJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKTsKICNpZiBV
U0UoQ0cpCi0gICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDR0NvbG9yU3BhY2VSZWYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cq
LCBib29sJiBzdWNjZXNzKTsKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcGFjZVJlZiwgUmVuZGVyaW5nTW9kZSwgSG9zdFdp
bmRvdyosIGJvb2wmIHN1Y2Nlc3MpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRvQ0ZEYXRh
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQ
cmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0OwogI2VsaWYgVVNFKERJUkVDVDJEKQogICAgIEltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiwgYm9vbCYgc3VjY2Vzcyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzOSw3ICsyMzksNyBAQCBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZm
ZXI6OnRvQkdSQURhdGEoCiAgICAgcmV0dXJuIGltYWdlRGF0YTsKIH0KIAotSW1hZ2VCdWZmZXI6
OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5k
b3cqLCBib29sJiBzdWNjZXNzKQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKQogICAgIDogbV9k
YXRhKEludFNpemUoc2l6ZSksIHJlbmRlcmluZ01vZGUpCiAgICAgLCBtX2xvZ2ljYWxTaXplKHNp
emUpCiAgICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyCiAgICAgcmV0dXJuIGJ1
ZmZlcjsKIH0KIAotSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBi
b29sJiBzdWNjZXNzKQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29s
JiBzdWNjZXNzKQogICAgIDogbV9sb2dpY2FsU2l6ZShzaXplKQogICAgICwgbV9yZXNvbHV0aW9u
U2NhbGUocmVzb2x1dGlvblNjYWxlKQogewpAQCAtMTk1LDcgKzE5NSw3IEBAIEltYWdlQnVmZmVy
OjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KIAot
SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sJiBzdWNjZXNz
KQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sJiBzdWNjZXNzKQog
ICAgIDogSW1hZ2VCdWZmZXIoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjYWNoZWRDR0NvbG9yU3Bh
Y2UoaW1hZ2VDb2xvclNwYWNlKSwgcmVuZGVyaW5nTW9kZSwgaG9zdFdpbmRvdywgc3VjY2VzcykK
IHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQkocmV2aXNpb24gMjMz
ODMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0M0RDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAxLDcgKzQwMSw3IEBAIFJlZjxH
cmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0QKIH0KIAogI2lmIFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQotc3RhdGljIHZv
aWQgaWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKENHTFBpeGVsRm9ybWF0T2JqIHBpeGVsRm9ybWF0
T2JqLCBpbnQgbnVtUGl4ZWxGb3JtYXRzLCBDR09wZW5HTERpc3BsYXlNYXNrIGRpc3BsYXlNYXNr
T3BlbkdMLCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIGNvbnRleHRPYmopCitzdGF0aWMgdm9p
ZCBpZGVudGlmeUFuZFNldEN1cnJlbnRHUFUoQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRP
YmosIENHT3BlbkdMRGlzcGxheU1hc2sgZGlzcGxheU1hc2tPcGVuR0wsIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0M0QgY29udGV4dE9iaikKIHsKICAgICAvLyBXaGVuIHRoZSBXZWJQcm9jZXNzIGRv
ZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBXaW5kb3dTZXJ2ZXIsIHRoZXJlIGlzIG5vIHdheSBm
b3IgT3BlbkdMIHRvIHRlbGwgd2hpY2ggR1BVIGlzIGNvbm5lY3RlZCB0byBhIGRpc3BsYXkuCiAg
ICAgLy8gQ0dMU2V0VmlydHVhbFNjcmVlbiBjYW4gYmUgdXNlZCB0byB0ZWxsIE9wZW5HTCB3aGlj
aCBHUFUgaXQgc2hvdWxkIGJlIHVzaW5nLgpAQCAtNDEwLDE0ICs0MTAsMTUgQEAgc3RhdGljIHZv
aWQgaWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKENHTAogICAgIGlmICghZGlzcGxheU1hc2tPcGVu
R0wgfHwgIWNvbnRleHRPYmopCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoaW50IHZpcnR1
YWxTY3JlZW4gPSAwOyB2aXJ0dWFsU2NyZWVuIDwgbnVtUGl4ZWxGb3JtYXRzOyArK3ZpcnR1YWxT
Y3JlZW4pIHsKLSAgICAgICAgR0xpbnQgZGlzcGxheU1hc2sgPSAwOwotICAgICAgICBDR0xFcnJv
ciBlcnJvciA9IENHTERlc2NyaWJlUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXRPYmosIHZpcnR1YWxT
Y3JlZW4sIGtDR0xQRkFEaXNwbGF5TWFzaywgJmRpc3BsYXlNYXNrKTsKLSAgICAgICAgQVNTRVJU
KGVycm9yID09IGtDR0xOb0Vycm9yKTsKLSAgICAgICAgaWYgKGVycm9yICE9IGtDR0xOb0Vycm9y
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChkaXNwbGF5TWFzayAmIGRpc3Bs
YXlNYXNrT3BlbkdMKSB7Ci0gICAgICAgICAgICBlcnJvciA9IENHTFNldFZpcnR1YWxTY3JlZW4o
Y29udGV4dE9iaiwgdmlydHVhbFNjcmVlbik7CisgICAgYXV0byBwaXhlbEZvcm1hdCA9IGFkb3B0
TlMoW1tOU09wZW5HTFBpeGVsRm9ybWF0IGFsbG9jXSBpbml0V2l0aENHTFBpeGVsRm9ybWF0T2Jq
OnBpeGVsRm9ybWF0T2JqXSk7CisgICAgCisgICAgLy8gZmluZCB2aXJ0dWFsIHNjcmVlbgorICAg
IEdMaW50IG51bWJlck9mVmlydHVhbFNjcmVlbiA9IFtwaXhlbEZvcm1hdCBudW1iZXJPZlZpcnR1
YWxTY3JlZW5zXTsKKyAgICBmb3IgKEdMaW50IHZpcnR1YWxTY3JlZW4gPSAwOyB2aXJ0dWFsU2Ny
ZWVuIDwgbnVtYmVyT2ZWaXJ0dWFsU2NyZWVuOyB2aXJ0dWFsU2NyZWVuKyspIHsKKyAgICAgICAg
R0xpbnQgbWFzayA9IDA7CisgICAgICAgIFtwaXhlbEZvcm1hdCBnZXRWYWx1ZXM6Jm1hc2sgZm9y
QXR0cmlidXRlOk5TT3BlbkdMUEZBU2NyZWVuTWFzayBmb3JWaXJ0dWFsU2NyZWVuOnZpcnR1YWxT
Y3JlZW5dOworICAgICAgICBpZiAobWFzayAmIGRpc3BsYXlNYXNrT3BlbkdMKSB7CisgICAgICAg
ICAgICBDR0xFcnJvciBlcnJvciA9IENHTFNldFZpcnR1YWxTY3JlZW4oY29udGV4dE9iaiwgdmly
dHVhbFNjcmVlbik7CiAgICAgICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5vRXJyb3IpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQ5Nyw4ICs0OTgsMTEgQEAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYQogICAgIGlmIChhdXRvIGRpc3BsYXlN
YXNrID0gcHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCkpIHsKICAgICAgICAgaWYgKGhvc3RXaW5k
b3cgJiYgaG9zdFdpbmRvdy0+ZGlzcGxheUlEKCkpCiAgICAgICAgICAgICBkaXNwbGF5TWFzayA9
IGRpc3BsYXlNYXNrRm9yRGlzcGxheShob3N0V2luZG93LT5kaXNwbGF5SUQoKSk7Ci0gICAgICAg
IGlkZW50aWZ5QW5kU2V0Q3VycmVudEdQVShwaXhlbEZvcm1hdE9iaiwgbnVtUGl4ZWxGb3JtYXRz
LCBkaXNwbGF5TWFzaywgbV9jb250ZXh0T2JqKTsKKyAgICAgICAgaWRlbnRpZnlBbmRTZXRDdXJy
ZW50R1BVKHBpeGVsRm9ybWF0T2JqLCBkaXNwbGF5TWFzaywgbV9jb250ZXh0T2JqKTsKICAgICB9
CisgICAgbV9ob3N0V2luZG93ID0gbWFrZVdlYWtQdHIoaG9zdFdpbmRvdyk7CisgICAgaWYgKG1f
aG9zdFdpbmRvdykKKyAgICAgICAgbV9ob3N0V2luZG93LT5yZWdpc3RlcldpbmRvd09ic2VydmVy
KCp0aGlzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGhvc3RXaW5kb3cpOwogI2VuZGlmCkBA
IC02MzIsNiArNjM2LDExIEBAIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0Qo
KQogICAgICAgICBbbV93ZWJHTExheWVyIHNldENvbnRleHQ6bnVsbHB0cl07CiAgICAgfQogCisj
aWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJ
TkcpCisgICAgaWYgKG1faG9zdFdpbmRvdykKKyAgICAgICAgbV9ob3N0V2luZG93LT51bnJlZ2lz
dGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOworI2VuZGlmCisgICAgCiAgICAgTE9HKFdlYkdMLCAi
RGVzdHJveWVkIGEgR3JhcGhpY3NDb250ZXh0M0QgKCVwKS4iLCB0aGlzKTsKIH0KIApAQCAtODE3
LDYgKzgyNiwxOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjphbGxvd09mZmxpbmVSZW5kCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJP
Q0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp3aW5k
b3dTY3JlZW5EaWRDaGFuZ2UodWludDMyX3QgZGlzcGxheUlEKQoreworICAgIEFTU0VSVChtX2Nv
bnRleHRPYmopOworICAgIGlmICghbV9jb250ZXh0T2JqKQorICAgICAgICByZXR1cm47CisgICAg
YXV0byBkaXNwbGF5TWFzayA9IGRpc3BsYXlNYXNrRm9yRGlzcGxheShkaXNwbGF5SUQpOworICAg
IGF1dG8gcGl4ZWxGb3JtYXRPYmogPSBDR0xHZXRQaXhlbEZvcm1hdChtX2NvbnRleHRPYmopOwor
ICAgIGlkZW50aWZ5QW5kU2V0Q3VycmVudEdQVShwaXhlbEZvcm1hdE9iaiwgZGlzcGxheU1hc2ss
IG1fY29udGV4dE9iaik7Cit9CisjZW5kaWYKKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBI
SUNTX0NPTlRFWFRfM0QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9JT1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjMzODMzKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxvYmpjL29iamMuaD4KICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiV2luZG93T2Jz
ZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtNDAs
NyArNDEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIb3N0V2luZG93OwogICAg
IAotY2xhc3MgSU9TdXJmYWNlIGZpbmFsIHsKK2NsYXNzIElPU3VyZmFjZSBmaW5hbAorI2lmIEVO
QUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICA6IHB1YmxpYyBXaW5k
b3dPYnNlcnZlcgorI2VuZGlmCit7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZW51bSBjbGFzcyBGb3JtYXQgewpAQCAtOTMsNiArOTgsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21JbWFnZUJ1ZmZl
cihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+KTsKICNlbmRpZgogCisgICAgV0VCQ09SRV9F
WFBPUlQgfklPU3VyZmFjZSgpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbW92
ZVRvUG9vbChzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmKTsKIAogICAgIHN0YXRpYyBJbnRT
aXplIG1heGltdW1TaXplKCk7CkBAIC0xMDksNyArMTE2LDcgQEAgcHVibGljOgogI2VuZGlmCiAg
ICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQmIGVuc3VyZUdyYXBoaWNzQ29u
dGV4dCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIENHQ29udGV4dFJlZiBlbnN1cmVQbGF0Zm9ybUNv
bnRleHQoY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBD
R0NvbnRleHRSZWYgZW5zdXJlUGxhdGZvcm1Db250ZXh0KEhvc3RXaW5kb3cqID0gbnVsbHB0cik7
CiAKICAgICBlbnVtIGNsYXNzIFN1cmZhY2VTdGF0ZSB7CiAgICAgICAgIFZhbGlkLApAQCAtMTUz
LDYgKzE2MCwxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiBzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xv
clNwYWNlUmVmLCBGb3JtYXQpOwogICAgIEludFNpemUgY29udGV4dFNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRleHRTaXplOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0U2l6ZShJbnRTaXplKTsK
KyAgICAKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZF
Ul9CTE9DS0lORykKKyAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZSh1aW50MzJfdCkgb3Zl
cnJpZGU7CisjZW5kaWYKIAogICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IG1fY29sb3JT
cGFjZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKQEAgLTE2Myw2ICsxNzQsMTAgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBtX2NnQ29udGV4dDsKIAogICAgIFJldGFpblB0
cjxJT1N1cmZhY2VSZWY+IG1fc3VyZmFjZTsKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIFdlYWtQdHI8SG9zdFdpbmRv
dz4gbV9ob3N0V2luZG93OworI2VuZGlmCiB9OwogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgV2ViQ29yZTo6SU9TdXJm
YWNlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSU9TdXJmYWNlLm1tCShyZXZpc2lvbiAyMzM4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTIy
OCw2ICsyMjgsMTQgQEAgSU9TdXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhYwog
ICAgIG1fdG90YWxCeXRlcyA9IElPU3VyZmFjZUdldEFsbG9jU2l6ZShzdXJmYWNlKTsKIH0KIAor
SU9TdXJmYWNlOjp+SU9TdXJmYWNlKCkKK3sKKyNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dT
RVJWRVJfQkxPQ0tJTkcpCisgICAgaWYgKG1faG9zdFdpbmRvdykKKyAgICAgICAgbV9ob3N0V2lu
ZG93LT51bnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOworI2VuZGlmCit9CisKIEludFNp
emUgSU9TdXJmYWNlOjptYXhpbXVtU2l6ZSgpCiB7CiAgICAgSW50U2l6ZSBtYXhTaXplKGNsYW1w
VG9JbnRlZ2VyKElPU3VyZmFjZUdldFByb3BlcnR5TWF4aW11bShrSU9TdXJmYWNlV2lkdGgpKSwg
Y2xhbXBUb0ludGVnZXIoSU9TdXJmYWNlR2V0UHJvcGVydHlNYXhpbXVtKGtJT1N1cmZhY2VIZWln
aHQpKSk7CkBAIC0yNzIsNyArMjgwLDcgQEAgdm9pZCBJT1N1cmZhY2U6OnNldENvbnRleHRTaXpl
KEludFNpemUgYwogICAgIG1fY29udGV4dFNpemUgPSBjb250ZXh0U2l6ZTsKIH0KIAotQ0dDb250
ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1Db250ZXh0KGNvbnN0IEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3cpCitDR0NvbnRleHRSZWYgSU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvbnRl
eHQoSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBpZiAobV9jZ0NvbnRleHQpCiAgICAg
ICAgIHJldHVybiBtX2NnQ29udGV4dC5nZXQoKTsKQEAgLTMwNiw2ICszMTQsOSBAQCBDR0NvbnRl
eHRSZWYgSU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvCiAgICAgICAgICAgICBkaXNwbGF5TWFz
ayA9IGRpc3BsYXlNYXNrRm9yRGlzcGxheShob3N0V2luZG93LT5kaXNwbGF5SUQoKSk7CiAgICAg
ICAgIENHSU9TdXJmYWNlQ29udGV4dFNldERpc3BsYXlNYXNrKG1fY2dDb250ZXh0LmdldCgpLCBk
aXNwbGF5TWFzayk7CiAgICAgfQorICAgIG1faG9zdFdpbmRvdyA9IG1ha2VXZWFrUHRyKGhvc3RX
aW5kb3cpOworICAgIGlmIChtX2hvc3RXaW5kb3cpCisgICAgICAgIG1faG9zdFdpbmRvdy0+cmVn
aXN0ZXJXaW5kb3dPYnNlcnZlcigqdGhpcyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShob3N0
V2luZG93KTsKICNlbmRpZgpAQCAtNDUzLDYgKzQ2NCwxNiBAQCB2b2lkIElPU3VyZmFjZTo6bWln
cmF0ZUNvbG9yU3BhY2VUb1Byb3BlCiAgICAgSU9TdXJmYWNlU2V0VmFsdWUobV9zdXJmYWNlLmdl
dCgpLCBrSU9TdXJmYWNlQ29sb3JTcGFjZSwgY29sb3JTcGFjZVByb3BlcnRpZXMuZ2V0KCkpOwog
fQogCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJf
QkxPQ0tJTkcpCit2b2lkIElPU3VyZmFjZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKHVuc2lnbmVk
IGRpc3BsYXlJRCkKK3sKKyAgICBBU1NFUlQobV9jZ0NvbnRleHQpOworICAgIGlmICghbV9jZ0Nv
bnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBDR0lPU3VyZmFjZUNvbnRleHRTZXREaXNwbGF5
TWFzayhtX2NnQ29udGV4dC5nZXQoKSwgZGlzcGxheU1hc2tGb3JEaXNwbGF5KGRpc3BsYXlJRCkp
OworfQorI2VuZGlmCisKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQpCiB7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345069</attachid>
            <date>2018-07-15 15:23:12 -0700</date>
            <delta_ts>2018-07-15 20:30:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187684-20180715152311.patch</filename>
            <type>text/plain</type>
            <size>32262</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzg0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE4LTA3LTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJTyBzdXJmYWNlcyBhbmQg
M0QgZ3JhcGhpY3MgY29udGV4dHMgc2hvdWxkIHVwZGF0ZSB0aGUgZGlzcGxheSBtYXNrIHdoZW4g
dGhlIHdpbmRvdyBpcyBtb3ZlZCB0byBhbm90aGVyIHNjcmVlbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzY4NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIG5ldyBXaW5kb3dPYnNlcnZl
ciByZXBsYWNpbmcgdGhlIHByZXZpb3VzIFBvcHVwT3BlbmluZ09ic2VydmVyLiBMZXQgSU9TdXJm
YWNlIGFuZCBHcmFwaGljc0NvbnRleHQzRCBvYnNlcnZlIHdoZW4KKyAgICAgICAgdGhlIHdpbmRv
dyBzY3JlZW4gaXMgY2hhbmdpbmcsIGFuZCBoYXZlIHRoZW0gdXBkYXRlIHRoZWlyIGRpc3BsYXkg
bWFza3MgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHJlcXVpcmVz
IGEgZHVhbCBtb25pdG9yIHNldHVwLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVy
ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAg
KiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OndpbmRvd1NjcmVl
bkRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyV2luZG93T2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp1bnJlZ2lzdGVyV2luZG93T2JzZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZl
cnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpub3RpZnlXaW5kb3dTY3JlZW5E
aWRDaGFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpyZWdpc3RlclBvcHVw
T3BlbmluZ09ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6dW5y
ZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0No
cm9tZS5oOgorICAgICAgICAqIHBhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwYWdlL1dpbmRvd09ic2VydmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OldpbmRv
d09ic2VydmVyOjp3aWxsT3BlblBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd09ic2Vy
dmVyOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5k
b3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6aWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFj
ZTo6fklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRm
b3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OndpbmRvd1NjcmVlbkRp
ZENoYW5nZSk6CisKIDIwMTgtMDctMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgU2hyaW5rIFN0eWxlRmlsbERhdGEsIFN0eWxlU3Ryb2tlRGF0YSBh
bmQgU3R5bGVNaXNjRGF0YQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjMzODQwKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDI4LDcgKzEwMjgsNyBAQAogCQkzN0M3MzhGNDFFREJERThEMDAzRjJCMEIgLyogRGF0ZVRpbWVD
aG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0M3MzhGMjFFREJERTg3MDAzRjJCMEIgLyogRGF0ZVRpbWVDaG9vc2VyQ2xpZW50Lmgg
Ki87IH07CiAJCTM3RDQ1NkZEMUE5QTUwRDgwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3Mu
cG0gaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
RDQ1NkZCMUE5QTUwQjYwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3MucG0gKi87IH07CiAJ
CTM3RTM1MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RTM1MjRDMTI0NTBDNjYwMEJBRjVEOSAv
KiBJbnB1dFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQkzN0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NzJCMDk1
MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTM3RjU2N0NFMTY1MzU4RjQwMERE
RTkyQiAvKiBXaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc3MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFdpbmRvd09ic2VydmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdG
ODE4RkQwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGODE4RkIwRDY1NzYwNjAwNUUx
RjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTM3RkQ0Mjk4MTE4MzY4NDYwMDkzQzAyOSAvKiBUcmVlRGVw
dGhMaW1pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzdGRDQyOTcxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggKi87IH07CiAJCTM4
N0FFOTVCMUU4RTkyRUYwMDAwREU5NiAvKiBKU1dlYkdQVVNpemUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4N0FFOTU5MUU4RTkyRUYwMDAwREU5NiAv
KiBKU1dlYkdQVVNpemUuaCAqLzsgfTsKQEAgLTcwODgsNyArNzA4OCw3IEBACiAJCTM3MkMwMEQ4
MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
NzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSHlwaGVuYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzc2RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFJ1bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNl
cnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3B1cE9wZW5pbmdPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzcyQjA5NTE2NTM1ODU2MDAw
QTQ5Q0EgLyogV2luZG93T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2luZG93T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3NEFC
QTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIE5h
dGl2ZUltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF0
aXZlSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTE5QzIxMEI3
RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5NDA3LDcgKzE5NDA3LDYgQEAKIAkJCQkzMUQ1OTFCMTE2Njk3QTZD
MDBFNkJGMDIgLyogUGx1Z0luQ2xpZW50LmggKi8sCiAJCQkJNUNGQzQzNEUxOTI0MDZBOTAwQTBE
M0I1IC8qIFBvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJNUNGQzQzNEYxOTI0MDZB
OTAwQTBEM0I1IC8qIFBvaW50ZXJMb2NrQ29udHJvbGxlci5oICovLAotCQkJCTM3NzJCMDk1MTY1
MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovLAogCQkJCUI3NzZENDND
MTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3BwICovLAogCQkJCUI3NzZENDNBMTEw
NDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLywKIAkJCQk0NkI5NTE4RDIwN0Q2MzJB
MDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLywKQEAgLTE5NDg5LDYgKzE5NDg4LDcg
QEAKIAkJCQlCQzgyNDNFNzBEMENGRDc1MDA0NjBDOEYgLyogV2luZG93RmVhdHVyZXMuaCAqLywK
IAkJCQk3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNh
dG9yLmNwcCAqLywKIAkJCQk3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNB
bGxvd2VkSW5kaWNhdG9yLmggKi8sCisJCQkJMzc3MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFdp
bmRvd09ic2VydmVyLmggKi8sCiAJCQkJOTM3MTA4MEQxREI3NTQ1NTAwNjA3NDRFIC8qIFdpbmRv
d09yV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAogCQkJCUUxMjcxQTEzMEVFRUM4MDQwMEY2MTIx
MyAvKiBXb3JrZXJOYXZpZ2F0b3IuY3BwICovLAogCQkJCUUxMjcxQTBBMEVFRUM3N0EwMEY2MTIx
MyAvKiBXb3JrZXJOYXZpZ2F0b3IuaCAqLywKQEAgLTI5NzIxLDcgKzI5NzIxLDYgQEAKIAkJCQkw
NjY4RTE4QjBBREQ5NjI0MDA0MTI4RTAgLyogUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBQkMxMjg3NzBCMzNBQTZEMDBDNjkzRDUgLyogUG9wdXBNZW51Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzNCRTEyQjBFOTgwOTJGMDA4MzU1ODggLyogUG9wdXBNZW51U3R5bGUuaCBp
biBIZWFkZXJzICovLAotCQkJCTM3RjU2N0NFMTY1MzU4RjQwMERERTkyQiAvKiBQb3B1cE9wZW5p
bmdPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5REUwODI0NUU1OTAwMUU5QUJD
IC8qIFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyQzE0RjREREU2MDAzRTdB
NzAgLyogUG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMkUxNEY0
RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzA5NTEs
NiArMzA5NTAsNyBAQAogCQkJCTBGMTVFRDVDMUI3RUM3QzUwMEVEREZFQiAvKiBXaWxsQ2hhbmdl
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjQzRTkwRDBDRkQ3NTAwNDYwQzhGIC8qIFdp
bmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTk5QUY1MzBCMTM4NDY0NjhGQjAx
QTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
N0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogV2luZG93T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFFMUJGMDAxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENv
ZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDFCQUFBOTEzOTUwRTJDMDBGN0FDRUIgLyogV2lu
ZFJ1bGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U3BpbkJ1dHRvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAkocmV2aXNpb24gMjMzODQwKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZAogICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVy
aW5nTW91c2VFdmVudHNFbGVtZW50KHRoaXMpOwogICAgICAgICAgICAgICAgICAgICBtX2NhcHR1
cmluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1l
bnQoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5yZWdp
c3RlclBvcHVwT3BlbmluZ09ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHBhZ2UtPmNocm9tZSgpLnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFVwRG93blN0YXRlIG9sZFVwRG93
blN0YXRlID0gbV91cERvd25TdGF0ZTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNwaW5CdXR0
b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVyZSgpCiAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KG51bGxwdHIpOwogICAgICAgICAg
ICAgbV9jYXB0dXJpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9j
dW1lbnQoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkudW5yZWdpc3Rl
clBvcHVwT3BlbmluZ09ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgICAgICBwYWdlLT5jaHJv
bWUoKS51bnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICB9CiAgICAgfQog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVu
dC5oCShyZXZpc2lvbiAyMzM4NDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGlu
QnV0dG9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTIgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJQb3B1cE9w
ZW5pbmdPYnNlcnZlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiV2luZG93T2Jz
ZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTcGluQnV0dG9uRWxlbWVu
dCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCwgcHVibGljIFBvcHVwT3BlbmluZ09ic2Vy
dmVyIHsKK2NsYXNzIFNwaW5CdXR0b25FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVt
ZW50LCBwdWJsaWMgV2luZG93T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
U3BpbkJ1dHRvbkVsZW1lbnQpOwogcHVibGljOgogICAgIGVudW0gVXBEb3duU3RhdGUgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjMzODQwKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMTIgQEAKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCi0jaW5jbHVkZSAiUG9wdXBPcGVuaW5n
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVz
cGFjZS5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAiV2luZG93T2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5oPgogI2luY2x1ZGUgPHd0Zi9T
ZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTUxMCw2ICs1MTAsOCBA
QCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmCiAgICAgICAgIGlmIChm
cmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT53aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKTsKICAgICB9CisgICAgCisgICAgbm90aWZ5V2luZG93
U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7CiB9CiAKIC8vIC0tLS0tLS0tCkBAIC01NzEsMjIg
KzU3MywyOSBAQCB2b2lkIENocm9tZTo6ZGlkUmVjZWl2ZURvY1R5cGUoRnJhbWUmIGZyCiAjZW5k
aWYKIH0KIAotdm9pZCBDaHJvbWU6OnJlZ2lzdGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIoUG9wdXBP
cGVuaW5nT2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBDaHJvbWU6OnJlZ2lzdGVyV2luZG93T2Jz
ZXJ2ZXIoV2luZG93T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIG1fcG9wdXBPcGVuaW5nT2Jz
ZXJ2ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOworICAgIG1fd2luZG93T2JzZXJ2ZXJzLmFwcGVuZCgm
b2JzZXJ2ZXIpOwogfQogCi12b2lkIENocm9tZTo6dW5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2Vy
dmVyKFBvcHVwT3BlbmluZ09ic2VydmVyJiBvYnNlcnZlcikKK3ZvaWQgQ2hyb21lOjp1bnJlZ2lz
dGVyV2luZG93T2JzZXJ2ZXIoV2luZG93T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIGJvb2wg
cmVtb3ZlZCA9IG1fcG9wdXBPcGVuaW5nT2JzZXJ2ZXJzLnJlbW92ZUZpcnN0KCZvYnNlcnZlcik7
CisgICAgYm9vbCByZW1vdmVkID0gbV93aW5kb3dPYnNlcnZlcnMucmVtb3ZlRmlyc3QoJm9ic2Vy
dmVyKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwogfQogCiB2b2lkIENo
cm9tZTo6bm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCkgY29uc3QKIHsKLSAgICBjb25zdCBW
ZWN0b3I8UG9wdXBPcGVuaW5nT2JzZXJ2ZXIqPiBvYnNlcnZlcnMobV9wb3B1cE9wZW5pbmdPYnNl
cnZlcnMpOworICAgIGNvbnN0IFZlY3RvcjxXaW5kb3dPYnNlcnZlcio+IG9ic2VydmVycyhtX3dp
bmRvd09ic2VydmVycyk7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG9ic2VydmVycykKICAg
ICAgICAgb2JzZXJ2ZXItPndpbGxPcGVuUG9wdXAoKTsKIH0KIAordm9pZCBDaHJvbWU6Om5vdGlm
eVdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpIGNvbnN0
Cit7CisgICAgY29uc3QgVmVjdG9yPFdpbmRvd09ic2VydmVyKj4gb2JzZXJ2ZXJzKG1fd2luZG93
T2JzZXJ2ZXJzKTsKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAgICAg
ICBvYnNlcnZlci0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2aXNpb24gMjMzODQw
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgy
LDE2ICsxODIsMTcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlRG9jVHlwZShGcmFt
ZSYpOwogCi0gICAgdm9pZCByZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKFBvcHVwT3Blbmlu
Z09ic2VydmVyJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIoUG9w
dXBPcGVuaW5nT2JzZXJ2ZXImKTsKKyAgICB2b2lkIHJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoV2lu
ZG93T2JzZXJ2ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIHVucmVnaXN0ZXJXaW5kb3dPYnNlcnZl
cihXaW5kb3dPYnNlcnZlciYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5
UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCkgY29uc3Q7CisgICAgdm9pZCBub3RpZnlXaW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0OwogCiAgICAgUGFnZSYgbV9wYWdl
OwogICAgIENocm9tZUNsaWVudCYgbV9jbGllbnQ7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9k
aXNwbGF5SUQgeyAwIH07Ci0gICAgVmVjdG9yPFBvcHVwT3BlbmluZ09ic2VydmVyKj4gbV9wb3B1
cE9wZW5pbmdPYnNlcnZlcnM7CisgICAgVmVjdG9yPFdpbmRvd09ic2VydmVyKj4gbV93aW5kb3dP
YnNlcnZlcnM7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9pc0Rpc3BhdGNoVmlld3Bv
cnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZCB7IGZhbHNlIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BvcHVwT3BlbmluZ09ic2VydmVyLmgJKHJldmlzaW9uIDIzMzg0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0g
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0g
KiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQb3B1cE9wZW5pbmdPYnNlcnZlciB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuUG9wdXAoKSA9IDA7Ci0KLXByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIH5Qb3B1cE9wZW5pbmdPYnNlcnZlcigpID0gZGVmYXVsdDsKLX07Ci0gICAg
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRv
d09ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPYnNl
cnZlci5oCShyZXZpc2lvbiAyMzM4NDApCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9wdXBP
cGVuaW5nT2JzZXJ2ZXIuaDoyMzM4NDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd09i
c2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICog
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAq
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBvcHVwT3Bl
bmluZ09ic2VydmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5Qb3B1cCgp
ID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflBvcHVwT3BlbmluZ09ic2VydmVyKCkg
PSBkZWZhdWx0OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2luZG93T2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1dpbmRvd09ic2VydmVyLmgJKHJldmlzaW9uIDIzMzg0MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2luZG93T2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUg
QEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNywxMiArMjgsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBQb3B1cE9wZW5pbmdPYnNlcnZlciB7CitjbGFzcyBXaW5kb3dPYnNl
cnZlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuUG9wdXAoKSA9IDA7Ci0K
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5Qb3B1cCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQzMl90KSB7IH07CisgICAgCiBwcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCB+UG9wdXBPcGVuaW5nT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVh
bCB+V2luZG93T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkocmV2aXNpb24g
MjMzODQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxMSArMjgsMTQgQEAKIAogI2luY2x1ZGUgIldpZGdldC5oIgogCisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJz
b3I7Ci0KLWNsYXNzIEhvc3RXaW5kb3cgeworY2xhc3MgV2luZG93T2JzZXJ2ZXI7CisgICAgCitj
bGFzcyBIb3N0V2luZG93IDogcHVibGljIENhbk1ha2VXZWFrUHRyPEhvc3RXaW5kb3c+IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShIb3N0V2luZG93KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgSG9zdFdpbmRvdygpID0gZGVmYXVsdDsKQEAgLTc0LDYgKzc3LDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRTaXplIHNjcmVlblNpemUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBvdmVycmlkZVNjcmVlblNpemUoKSBjb25zdCA9IDA7Cisg
ICAgCisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoV2luZG93T2JzZXJ2
ZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJXaW5kb3dPYnNlcnZlcihXaW5k
b3dPYnNlcnZlciYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAkocmV2aXNpb24gMjMzODQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJXaW5kb3dPYnNlcnZlci5oIgogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBVU0UoQ0EpCkBAIC0xMTIsNyArMTE0LDExIEBAIHN0cnVjdCBBY3RpdmVJbmZvIHsKIAog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQz
RCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPiB7CitjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPgorI2lmIEVO
QUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICAsIHB1YmxpYyBXaW5k
b3dPYnNlcnZlcgorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgZW51bSB7CiAgICAgICAgIC8vIFdl
YkdMIDEgY29uc3RhbnRzCkBAIC0xMzE5LDYgKzEzMjUsMTAgQEAgcHJpdmF0ZToKICAgICBib29s
IGFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICB2b2lk
IHdpbmRvd1NjcmVlbkRpZENoYW5nZSh1aW50MzJfdCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAg
IGludCBtX2N1cnJlbnRXaWR0aCB7IDAgfTsKICAgICBpbnQgbV9jdXJyZW50SGVpZ2h0IHsgMCB9
OwogCkBAIC0xNDk2LDYgKzE1MDYsMTAgQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAg
UGxhdGZvcm0zRE9iamVjdCBtX3ZhbyB7IDAgfTsKICNlbmRpZgorICAgIAorI2lmIFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIFdl
YWtQdHI8SG9zdFdpbmRvdz4gbV9ob3N0V2luZG93OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwCShyZXZpc2lvbiAyMzM4NDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1w
ZWRMZW5ndGggPSA0MDk2Owogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1wZWRBcmVhID0gTWF4
Q2xhbXBlZExlbmd0aCAqIE1heENsYW1wZWRMZW5ndGg7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIGJvb2wg
c3VjY2VzcyA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
KG5ldyBJbWFnZUJ1ZmZlcihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRl
cmluZ01vZGUsIGhvc3RXaW5kb3csIHN1Y2Nlc3MpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjMzODQwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlciB7CiAgICAgZnJpZW5kIGNs
YXNzIElPU3VyZmFjZTsKIHB1YmxpYzoKICAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRl
ciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNl
U1JHQiwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9
IENvbG9yU3BhY2VTUkdCLCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogI2lmIFVTRShESVJFQ1Qy
RCkKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0KiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3Bh
Y2VTUkdCKTsKICNlbmRpZgpAQCAtMTY1LDkgKzE2NSw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBU
aGlzIGNvbnN0cnVjdG9yIHdpbGwgcGxhY2UgaXRzIHN1Y2Nlc3MgaW50byB0aGUgZ2l2ZW4gb3V0
LXZhcmlhYmxlCiAgICAgLy8gc28gdGhhdCBjcmVhdGUoKSBrbm93cyB3aGVuIGl0IHNob3VsZCBy
ZXR1cm4gZmFpbHVyZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUs
IGNvbnN0IEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UsIFJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKTsKICNpZiBV
U0UoQ0cpCi0gICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDR0NvbG9yU3BhY2VSZWYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cq
LCBib29sJiBzdWNjZXNzKTsKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcGFjZVJlZiwgUmVuZGVyaW5nTW9kZSwgSG9zdFdp
bmRvdyosIGJvb2wmIHN1Y2Nlc3MpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRvQ0ZEYXRh
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQ
cmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0OwogI2VsaWYgVVNFKERJUkVDVDJEKQogICAgIEltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiwgYm9vbCYgc3VjY2Vzcyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkocmV2aXNpb24gMjMzODQwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzOSw3ICsyMzksNyBAQCBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZm
ZXI6OnRvQkdSQURhdGEoCiAgICAgcmV0dXJuIGltYWdlRGF0YTsKIH0KIAotSW1hZ2VCdWZmZXI6
OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5k
b3cqLCBib29sJiBzdWNjZXNzKQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKQogICAgIDogbV9k
YXRhKEludFNpemUoc2l6ZSksIHJlbmRlcmluZ01vZGUpCiAgICAgLCBtX2xvZ2ljYWxTaXplKHNp
emUpCiAgICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcAkocmV2aXNpb24gMjMzODQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyCiAgICAgcmV0dXJuIGJ1
ZmZlcjsKIH0KIAotSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBi
b29sJiBzdWNjZXNzKQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29s
JiBzdWNjZXNzKQogICAgIDogbV9sb2dpY2FsU2l6ZShzaXplKQogICAgICwgbV9yZXNvbHV0aW9u
U2NhbGUocmVzb2x1dGlvblNjYWxlKQogewpAQCAtMTk1LDcgKzE5NSw3IEBAIEltYWdlQnVmZmVy
OjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KIAot
SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sJiBzdWNjZXNz
KQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sJiBzdWNjZXNzKQog
ICAgIDogSW1hZ2VCdWZmZXIoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjYWNoZWRDR0NvbG9yU3Bh
Y2UoaW1hZ2VDb2xvclNwYWNlKSwgcmVuZGVyaW5nTW9kZSwgaG9zdFdpbmRvdywgc3VjY2VzcykK
IHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQkocmV2aXNpb24gMjMz
ODQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0M0RDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAxLDcgKzQwMSw3IEBAIFJlZjxH
cmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0QKIH0KIAogI2lmIFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQotc3RhdGljIHZv
aWQgaWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKENHTFBpeGVsRm9ybWF0T2JqIHBpeGVsRm9ybWF0
T2JqLCBpbnQgbnVtUGl4ZWxGb3JtYXRzLCBDR09wZW5HTERpc3BsYXlNYXNrIGRpc3BsYXlNYXNr
T3BlbkdMLCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIGNvbnRleHRPYmopCitzdGF0aWMgdm9p
ZCBpZGVudGlmeUFuZFNldEN1cnJlbnRHUFUoQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRP
YmosIENHT3BlbkdMRGlzcGxheU1hc2sgZGlzcGxheU1hc2tPcGVuR0wsIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0M0QgY29udGV4dE9iaikKIHsKICAgICAvLyBXaGVuIHRoZSBXZWJQcm9jZXNzIGRv
ZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBXaW5kb3dTZXJ2ZXIsIHRoZXJlIGlzIG5vIHdheSBm
b3IgT3BlbkdMIHRvIHRlbGwgd2hpY2ggR1BVIGlzIGNvbm5lY3RlZCB0byBhIGRpc3BsYXkuCiAg
ICAgLy8gQ0dMU2V0VmlydHVhbFNjcmVlbiBjYW4gYmUgdXNlZCB0byB0ZWxsIE9wZW5HTCB3aGlj
aCBHUFUgaXQgc2hvdWxkIGJlIHVzaW5nLgpAQCAtNDEwLDE0ICs0MTAsMTUgQEAgc3RhdGljIHZv
aWQgaWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKENHTAogICAgIGlmICghZGlzcGxheU1hc2tPcGVu
R0wgfHwgIWNvbnRleHRPYmopCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoaW50IHZpcnR1
YWxTY3JlZW4gPSAwOyB2aXJ0dWFsU2NyZWVuIDwgbnVtUGl4ZWxGb3JtYXRzOyArK3ZpcnR1YWxT
Y3JlZW4pIHsKLSAgICAgICAgR0xpbnQgZGlzcGxheU1hc2sgPSAwOwotICAgICAgICBDR0xFcnJv
ciBlcnJvciA9IENHTERlc2NyaWJlUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXRPYmosIHZpcnR1YWxT
Y3JlZW4sIGtDR0xQRkFEaXNwbGF5TWFzaywgJmRpc3BsYXlNYXNrKTsKLSAgICAgICAgQVNTRVJU
KGVycm9yID09IGtDR0xOb0Vycm9yKTsKLSAgICAgICAgaWYgKGVycm9yICE9IGtDR0xOb0Vycm9y
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChkaXNwbGF5TWFzayAmIGRpc3Bs
YXlNYXNrT3BlbkdMKSB7Ci0gICAgICAgICAgICBlcnJvciA9IENHTFNldFZpcnR1YWxTY3JlZW4o
Y29udGV4dE9iaiwgdmlydHVhbFNjcmVlbik7CisgICAgYXV0byBwaXhlbEZvcm1hdCA9IGFkb3B0
TlMoW1tOU09wZW5HTFBpeGVsRm9ybWF0IGFsbG9jXSBpbml0V2l0aENHTFBpeGVsRm9ybWF0T2Jq
OnBpeGVsRm9ybWF0T2JqXSk7CisgICAgCisgICAgLy8gZmluZCB2aXJ0dWFsIHNjcmVlbgorICAg
IEdMaW50IG51bWJlck9mVmlydHVhbFNjcmVlbiA9IFtwaXhlbEZvcm1hdCBudW1iZXJPZlZpcnR1
YWxTY3JlZW5zXTsKKyAgICBmb3IgKEdMaW50IHZpcnR1YWxTY3JlZW4gPSAwOyB2aXJ0dWFsU2Ny
ZWVuIDwgbnVtYmVyT2ZWaXJ0dWFsU2NyZWVuOyB2aXJ0dWFsU2NyZWVuKyspIHsKKyAgICAgICAg
R0xpbnQgbWFzayA9IDA7CisgICAgICAgIFtwaXhlbEZvcm1hdCBnZXRWYWx1ZXM6Jm1hc2sgZm9y
QXR0cmlidXRlOk5TT3BlbkdMUEZBU2NyZWVuTWFzayBmb3JWaXJ0dWFsU2NyZWVuOnZpcnR1YWxT
Y3JlZW5dOworICAgICAgICBpZiAobWFzayAmIGRpc3BsYXlNYXNrT3BlbkdMKSB7CisgICAgICAg
ICAgICBDR0xFcnJvciBlcnJvciA9IENHTFNldFZpcnR1YWxTY3JlZW4oY29udGV4dE9iaiwgdmly
dHVhbFNjcmVlbik7CiAgICAgICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5vRXJyb3IpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQ5Nyw4ICs0OTgsMTEgQEAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYQogICAgIGlmIChhdXRvIGRpc3BsYXlN
YXNrID0gcHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCkpIHsKICAgICAgICAgaWYgKGhvc3RXaW5k
b3cgJiYgaG9zdFdpbmRvdy0+ZGlzcGxheUlEKCkpCiAgICAgICAgICAgICBkaXNwbGF5TWFzayA9
IGRpc3BsYXlNYXNrRm9yRGlzcGxheShob3N0V2luZG93LT5kaXNwbGF5SUQoKSk7Ci0gICAgICAg
IGlkZW50aWZ5QW5kU2V0Q3VycmVudEdQVShwaXhlbEZvcm1hdE9iaiwgbnVtUGl4ZWxGb3JtYXRz
LCBkaXNwbGF5TWFzaywgbV9jb250ZXh0T2JqKTsKKyAgICAgICAgaWRlbnRpZnlBbmRTZXRDdXJy
ZW50R1BVKHBpeGVsRm9ybWF0T2JqLCBkaXNwbGF5TWFzaywgbV9jb250ZXh0T2JqKTsKICAgICB9
CisgICAgbV9ob3N0V2luZG93ID0gbWFrZVdlYWtQdHIoaG9zdFdpbmRvdyk7CisgICAgaWYgKG1f
aG9zdFdpbmRvdykKKyAgICAgICAgbV9ob3N0V2luZG93LT5yZWdpc3RlcldpbmRvd09ic2VydmVy
KCp0aGlzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGhvc3RXaW5kb3cpOwogI2VuZGlmCkBA
IC02MzIsNiArNjM2LDExIEBAIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0Qo
KQogICAgICAgICBbbV93ZWJHTExheWVyIHNldENvbnRleHQ6bnVsbHB0cl07CiAgICAgfQogCisj
aWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJ
TkcpCisgICAgaWYgKG1faG9zdFdpbmRvdykKKyAgICAgICAgbV9ob3N0V2luZG93LT51bnJlZ2lz
dGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOworI2VuZGlmCisgICAgCiAgICAgTE9HKFdlYkdMLCAi
RGVzdHJveWVkIGEgR3JhcGhpY3NDb250ZXh0M0QgKCVwKS4iLCB0aGlzKTsKIH0KIApAQCAtODE3
LDYgKzgyNiwxOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjphbGxvd09mZmxpbmVSZW5kCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJP
Q0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp3aW5k
b3dTY3JlZW5EaWRDaGFuZ2UodWludDMyX3QgZGlzcGxheUlEKQoreworICAgIEFTU0VSVChtX2Nv
bnRleHRPYmopOworICAgIGlmICghbV9jb250ZXh0T2JqKQorICAgICAgICByZXR1cm47CisgICAg
YXV0byBkaXNwbGF5TWFzayA9IGRpc3BsYXlNYXNrRm9yRGlzcGxheShkaXNwbGF5SUQpOworICAg
IGF1dG8gcGl4ZWxGb3JtYXRPYmogPSBDR0xHZXRQaXhlbEZvcm1hdChtX2NvbnRleHRPYmopOwor
ICAgIGlkZW50aWZ5QW5kU2V0Q3VycmVudEdQVShwaXhlbEZvcm1hdE9iaiwgZGlzcGxheU1hc2ss
IG1fY29udGV4dE9iaik7Cit9CisjZW5kaWYKKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBI
SUNTX0NPTlRFWFRfM0QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9JT1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjMzODQwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxvYmpjL29iamMuaD4KICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiV2luZG93T2Jz
ZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtNDAs
NyArNDEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIb3N0V2luZG93OwogICAg
IAotY2xhc3MgSU9TdXJmYWNlIGZpbmFsIHsKK2NsYXNzIElPU3VyZmFjZSBmaW5hbAorI2lmIEVO
QUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICA6IHB1YmxpYyBXaW5k
b3dPYnNlcnZlcgorI2VuZGlmCit7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZW51bSBjbGFzcyBGb3JtYXQgewpAQCAtOTMsNiArOTgsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21JbWFnZUJ1ZmZl
cihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+KTsKICNlbmRpZgogCisgICAgV0VCQ09SRV9F
WFBPUlQgfklPU3VyZmFjZSgpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbW92
ZVRvUG9vbChzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmKTsKIAogICAgIHN0YXRpYyBJbnRT
aXplIG1heGltdW1TaXplKCk7CkBAIC0xMDksNyArMTE2LDcgQEAgcHVibGljOgogI2VuZGlmCiAg
ICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQmIGVuc3VyZUdyYXBoaWNzQ29u
dGV4dCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIENHQ29udGV4dFJlZiBlbnN1cmVQbGF0Zm9ybUNv
bnRleHQoY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBD
R0NvbnRleHRSZWYgZW5zdXJlUGxhdGZvcm1Db250ZXh0KEhvc3RXaW5kb3cqID0gbnVsbHB0cik7
CiAKICAgICBlbnVtIGNsYXNzIFN1cmZhY2VTdGF0ZSB7CiAgICAgICAgIFZhbGlkLApAQCAtMTUz
LDYgKzE2MCwxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiBzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xv
clNwYWNlUmVmLCBGb3JtYXQpOwogICAgIEludFNpemUgY29udGV4dFNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRleHRTaXplOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0U2l6ZShJbnRTaXplKTsK
KyAgICAKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZF
Ul9CTE9DS0lORykKKyAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZSh1aW50MzJfdCkgb3Zl
cnJpZGU7CisjZW5kaWYKIAogICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IG1fY29sb3JT
cGFjZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKQEAgLTE2Myw2ICsxNzQsMTAgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBtX2NnQ29udGV4dDsKIAogICAgIFJldGFpblB0
cjxJT1N1cmZhY2VSZWY+IG1fc3VyZmFjZTsKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIFdlYWtQdHI8SG9zdFdpbmRv
dz4gbV9ob3N0V2luZG93OworI2VuZGlmCiB9OwogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgV2ViQ29yZTo6SU9TdXJm
YWNlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSU9TdXJmYWNlLm1tCShyZXZpc2lvbiAyMzM4NDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTIy
OCw2ICsyMjgsMTQgQEAgSU9TdXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhYwog
ICAgIG1fdG90YWxCeXRlcyA9IElPU3VyZmFjZUdldEFsbG9jU2l6ZShzdXJmYWNlKTsKIH0KIAor
SU9TdXJmYWNlOjp+SU9TdXJmYWNlKCkKK3sKKyNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dT
RVJWRVJfQkxPQ0tJTkcpCisgICAgaWYgKG1faG9zdFdpbmRvdykKKyAgICAgICAgbV9ob3N0V2lu
ZG93LT51bnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOworI2VuZGlmCit9CisKIEludFNp
emUgSU9TdXJmYWNlOjptYXhpbXVtU2l6ZSgpCiB7CiAgICAgSW50U2l6ZSBtYXhTaXplKGNsYW1w
VG9JbnRlZ2VyKElPU3VyZmFjZUdldFByb3BlcnR5TWF4aW11bShrSU9TdXJmYWNlV2lkdGgpKSwg
Y2xhbXBUb0ludGVnZXIoSU9TdXJmYWNlR2V0UHJvcGVydHlNYXhpbXVtKGtJT1N1cmZhY2VIZWln
aHQpKSk7CkBAIC0yNzIsNyArMjgwLDcgQEAgdm9pZCBJT1N1cmZhY2U6OnNldENvbnRleHRTaXpl
KEludFNpemUgYwogICAgIG1fY29udGV4dFNpemUgPSBjb250ZXh0U2l6ZTsKIH0KIAotQ0dDb250
ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1Db250ZXh0KGNvbnN0IEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3cpCitDR0NvbnRleHRSZWYgSU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvbnRl
eHQoSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBpZiAobV9jZ0NvbnRleHQpCiAgICAg
ICAgIHJldHVybiBtX2NnQ29udGV4dC5nZXQoKTsKQEAgLTMwNiw2ICszMTQsOSBAQCBDR0NvbnRl
eHRSZWYgSU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvCiAgICAgICAgICAgICBkaXNwbGF5TWFz
ayA9IGRpc3BsYXlNYXNrRm9yRGlzcGxheShob3N0V2luZG93LT5kaXNwbGF5SUQoKSk7CiAgICAg
ICAgIENHSU9TdXJmYWNlQ29udGV4dFNldERpc3BsYXlNYXNrKG1fY2dDb250ZXh0LmdldCgpLCBk
aXNwbGF5TWFzayk7CiAgICAgfQorICAgIG1faG9zdFdpbmRvdyA9IG1ha2VXZWFrUHRyKGhvc3RX
aW5kb3cpOworICAgIGlmIChtX2hvc3RXaW5kb3cpCisgICAgICAgIG1faG9zdFdpbmRvdy0+cmVn
aXN0ZXJXaW5kb3dPYnNlcnZlcigqdGhpcyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShob3N0
V2luZG93KTsKICNlbmRpZgpAQCAtNDUzLDYgKzQ2NCwxNiBAQCB2b2lkIElPU3VyZmFjZTo6bWln
cmF0ZUNvbG9yU3BhY2VUb1Byb3BlCiAgICAgSU9TdXJmYWNlU2V0VmFsdWUobV9zdXJmYWNlLmdl
dCgpLCBrSU9TdXJmYWNlQ29sb3JTcGFjZSwgY29sb3JTcGFjZVByb3BlcnRpZXMuZ2V0KCkpOwog
fQogCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJf
QkxPQ0tJTkcpCit2b2lkIElPU3VyZmFjZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKHVuc2lnbmVk
IGRpc3BsYXlJRCkKK3sKKyAgICBBU1NFUlQobV9jZ0NvbnRleHQpOworICAgIGlmICghbV9jZ0Nv
bnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBDR0lPU3VyZmFjZUNvbnRleHRTZXREaXNwbGF5
TWFzayhtX2NnQ29udGV4dC5nZXQoKSwgZGlzcGxheU1hc2tGb3JEaXNwbGF5KGRpc3BsYXlJRCkp
OworfQorI2VuZGlmCisKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQpCiB7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345077</attachid>
            <date>2018-07-15 20:30:57 -0700</date>
            <delta_ts>2018-07-17 09:53:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187684-20180715203056.patch</filename>
            <type>text/plain</type>
            <size>32326</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzg0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE4LTA3LTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJTyBzdXJmYWNlcyBhbmQg
M0QgZ3JhcGhpY3MgY29udGV4dHMgc2hvdWxkIHVwZGF0ZSB0aGUgZGlzcGxheSBtYXNrIHdoZW4g
dGhlIHdpbmRvdyBpcyBtb3ZlZCB0byBhbm90aGVyIHNjcmVlbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzY4NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIG5ldyBXaW5kb3dPYnNlcnZl
ciByZXBsYWNpbmcgdGhlIHByZXZpb3VzIFBvcHVwT3BlbmluZ09ic2VydmVyLiBMZXQgSU9TdXJm
YWNlIGFuZCBHcmFwaGljc0NvbnRleHQzRCBvYnNlcnZlIHdoZW4KKyAgICAgICAgdGhlIHdpbmRv
dyBzY3JlZW4gaXMgY2hhbmdpbmcsIGFuZCBoYXZlIHRoZW0gdXBkYXRlIHRoZWlyIGRpc3BsYXkg
bWFza3MgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHJlcXVpcmVz
IGEgZHVhbCBtb25pdG9yIHNldHVwLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVy
ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAg
KiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OndpbmRvd1NjcmVl
bkRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyV2luZG93T2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp1bnJlZ2lzdGVyV2luZG93T2JzZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZl
cnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpub3RpZnlXaW5kb3dTY3JlZW5E
aWRDaGFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpyZWdpc3RlclBvcHVw
T3BlbmluZ09ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6dW5y
ZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0No
cm9tZS5oOgorICAgICAgICAqIHBhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwYWdlL1dpbmRvd09ic2VydmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OldpbmRv
d09ic2VydmVyOjp3aWxsT3BlblBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd09ic2Vy
dmVyOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5k
b3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6aWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFj
ZTo6fklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRm
b3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OndpbmRvd1NjcmVlbkRp
ZENoYW5nZSk6CisKIDIwMTgtMDctMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgU2hyaW5rIFN0eWxlRmlsbERhdGEsIFN0eWxlU3Ryb2tlRGF0YSBh
bmQgU3R5bGVNaXNjRGF0YQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjMzODQwKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDI4LDcgKzEwMjgsNyBAQAogCQkzN0M3MzhGNDFFREJERThEMDAzRjJCMEIgLyogRGF0ZVRpbWVD
aG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0M3MzhGMjFFREJERTg3MDAzRjJCMEIgLyogRGF0ZVRpbWVDaG9vc2VyQ2xpZW50Lmgg
Ki87IH07CiAJCTM3RDQ1NkZEMUE5QTUwRDgwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3Mu
cG0gaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
RDQ1NkZCMUE5QTUwQjYwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3MucG0gKi87IH07CiAJ
CTM3RTM1MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RTM1MjRDMTI0NTBDNjYwMEJBRjVEOSAv
KiBJbnB1dFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQkzN0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NzJCMDk1
MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTM3RjU2N0NFMTY1MzU4RjQwMERE
RTkyQiAvKiBXaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc3MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFdpbmRvd09ic2VydmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdG
ODE4RkQwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGODE4RkIwRDY1NzYwNjAwNUUx
RjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTM3RkQ0Mjk4MTE4MzY4NDYwMDkzQzAyOSAvKiBUcmVlRGVw
dGhMaW1pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzdGRDQyOTcxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggKi87IH07CiAJCTM4
N0FFOTVCMUU4RTkyRUYwMDAwREU5NiAvKiBKU1dlYkdQVVNpemUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4N0FFOTU5MUU4RTkyRUYwMDAwREU5NiAv
KiBKU1dlYkdQVVNpemUuaCAqLzsgfTsKQEAgLTcwODgsNyArNzA4OCw3IEBACiAJCTM3MkMwMEQ4
MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
NzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSHlwaGVuYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzc2RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFJ1bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNl
cnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3B1cE9wZW5pbmdPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzcyQjA5NTE2NTM1ODU2MDAw
QTQ5Q0EgLyogV2luZG93T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2luZG93T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3NEFC
QTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIE5h
dGl2ZUltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF0
aXZlSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTE5QzIxMEI3
RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5NDA3LDcgKzE5NDA3LDYgQEAKIAkJCQkzMUQ1OTFCMTE2Njk3QTZD
MDBFNkJGMDIgLyogUGx1Z0luQ2xpZW50LmggKi8sCiAJCQkJNUNGQzQzNEUxOTI0MDZBOTAwQTBE
M0I1IC8qIFBvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJNUNGQzQzNEYxOTI0MDZB
OTAwQTBEM0I1IC8qIFBvaW50ZXJMb2NrQ29udHJvbGxlci5oICovLAotCQkJCTM3NzJCMDk1MTY1
MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovLAogCQkJCUI3NzZENDND
MTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3BwICovLAogCQkJCUI3NzZENDNBMTEw
NDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLywKIAkJCQk0NkI5NTE4RDIwN0Q2MzJB
MDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLywKQEAgLTE5NDg5LDYgKzE5NDg4LDcg
QEAKIAkJCQlCQzgyNDNFNzBEMENGRDc1MDA0NjBDOEYgLyogV2luZG93RmVhdHVyZXMuaCAqLywK
IAkJCQk3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNh
dG9yLmNwcCAqLywKIAkJCQk3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNB
bGxvd2VkSW5kaWNhdG9yLmggKi8sCisJCQkJMzc3MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFdp
bmRvd09ic2VydmVyLmggKi8sCiAJCQkJOTM3MTA4MEQxREI3NTQ1NTAwNjA3NDRFIC8qIFdpbmRv
d09yV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAogCQkJCUUxMjcxQTEzMEVFRUM4MDQwMEY2MTIx
MyAvKiBXb3JrZXJOYXZpZ2F0b3IuY3BwICovLAogCQkJCUUxMjcxQTBBMEVFRUM3N0EwMEY2MTIx
MyAvKiBXb3JrZXJOYXZpZ2F0b3IuaCAqLywKQEAgLTI5NzIxLDcgKzI5NzIxLDYgQEAKIAkJCQkw
NjY4RTE4QjBBREQ5NjI0MDA0MTI4RTAgLyogUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBQkMxMjg3NzBCMzNBQTZEMDBDNjkzRDUgLyogUG9wdXBNZW51Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzNCRTEyQjBFOTgwOTJGMDA4MzU1ODggLyogUG9wdXBNZW51U3R5bGUuaCBp
biBIZWFkZXJzICovLAotCQkJCTM3RjU2N0NFMTY1MzU4RjQwMERERTkyQiAvKiBQb3B1cE9wZW5p
bmdPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5REUwODI0NUU1OTAwMUU5QUJD
IC8qIFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyQzE0RjREREU2MDAzRTdB
NzAgLyogUG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMkUxNEY0
RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzA5NTEs
NiArMzA5NTAsNyBAQAogCQkJCTBGMTVFRDVDMUI3RUM3QzUwMEVEREZFQiAvKiBXaWxsQ2hhbmdl
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjQzRTkwRDBDRkQ3NTAwNDYwQzhGIC8qIFdp
bmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTk5QUY1MzBCMTM4NDY0NjhGQjAx
QTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
N0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogV2luZG93T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFFMUJGMDAxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENv
ZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDFCQUFBOTEzOTUwRTJDMDBGN0FDRUIgLyogV2lu
ZFJ1bGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U3BpbkJ1dHRvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAkocmV2aXNpb24gMjMzODQwKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZAogICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVy
aW5nTW91c2VFdmVudHNFbGVtZW50KHRoaXMpOwogICAgICAgICAgICAgICAgICAgICBtX2NhcHR1
cmluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1l
bnQoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5yZWdp
c3RlclBvcHVwT3BlbmluZ09ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHBhZ2UtPmNocm9tZSgpLnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFVwRG93blN0YXRlIG9sZFVwRG93
blN0YXRlID0gbV91cERvd25TdGF0ZTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNwaW5CdXR0
b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVyZSgpCiAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KG51bGxwdHIpOwogICAgICAgICAg
ICAgbV9jYXB0dXJpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9j
dW1lbnQoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkudW5yZWdpc3Rl
clBvcHVwT3BlbmluZ09ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgICAgICBwYWdlLT5jaHJv
bWUoKS51bnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICB9CiAgICAgfQog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVu
dC5oCShyZXZpc2lvbiAyMzM4NDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGlu
QnV0dG9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTIgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJQb3B1cE9w
ZW5pbmdPYnNlcnZlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiV2luZG93T2Jz
ZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTcGluQnV0dG9uRWxlbWVu
dCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCwgcHVibGljIFBvcHVwT3BlbmluZ09ic2Vy
dmVyIHsKK2NsYXNzIFNwaW5CdXR0b25FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVt
ZW50LCBwdWJsaWMgV2luZG93T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
U3BpbkJ1dHRvbkVsZW1lbnQpOwogcHVibGljOgogICAgIGVudW0gVXBEb3duU3RhdGUgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjMzODQwKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMTIgQEAKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCi0jaW5jbHVkZSAiUG9wdXBPcGVuaW5n
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVz
cGFjZS5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAiV2luZG93T2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5oPgogI2luY2x1ZGUgPHd0Zi9T
ZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTUxMCw2ICs1MTAsOCBA
QCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmCiAgICAgICAgIGlmIChm
cmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT53aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKTsKICAgICB9CisgICAgCisgICAgbm90aWZ5V2luZG93
U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7CiB9CiAKIC8vIC0tLS0tLS0tCkBAIC01NzEsMjIg
KzU3MywyOSBAQCB2b2lkIENocm9tZTo6ZGlkUmVjZWl2ZURvY1R5cGUoRnJhbWUmIGZyCiAjZW5k
aWYKIH0KIAotdm9pZCBDaHJvbWU6OnJlZ2lzdGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIoUG9wdXBP
cGVuaW5nT2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBDaHJvbWU6OnJlZ2lzdGVyV2luZG93T2Jz
ZXJ2ZXIoV2luZG93T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIG1fcG9wdXBPcGVuaW5nT2Jz
ZXJ2ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOworICAgIG1fd2luZG93T2JzZXJ2ZXJzLmFwcGVuZCgm
b2JzZXJ2ZXIpOwogfQogCi12b2lkIENocm9tZTo6dW5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2Vy
dmVyKFBvcHVwT3BlbmluZ09ic2VydmVyJiBvYnNlcnZlcikKK3ZvaWQgQ2hyb21lOjp1bnJlZ2lz
dGVyV2luZG93T2JzZXJ2ZXIoV2luZG93T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIGJvb2wg
cmVtb3ZlZCA9IG1fcG9wdXBPcGVuaW5nT2JzZXJ2ZXJzLnJlbW92ZUZpcnN0KCZvYnNlcnZlcik7
CisgICAgYm9vbCByZW1vdmVkID0gbV93aW5kb3dPYnNlcnZlcnMucmVtb3ZlRmlyc3QoJm9ic2Vy
dmVyKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwogfQogCiB2b2lkIENo
cm9tZTo6bm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCkgY29uc3QKIHsKLSAgICBjb25zdCBW
ZWN0b3I8UG9wdXBPcGVuaW5nT2JzZXJ2ZXIqPiBvYnNlcnZlcnMobV9wb3B1cE9wZW5pbmdPYnNl
cnZlcnMpOworICAgIGNvbnN0IFZlY3RvcjxXaW5kb3dPYnNlcnZlcio+IG9ic2VydmVycyhtX3dp
bmRvd09ic2VydmVycyk7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG9ic2VydmVycykKICAg
ICAgICAgb2JzZXJ2ZXItPndpbGxPcGVuUG9wdXAoKTsKIH0KIAordm9pZCBDaHJvbWU6Om5vdGlm
eVdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpIGNvbnN0
Cit7CisgICAgY29uc3QgVmVjdG9yPFdpbmRvd09ic2VydmVyKj4gb2JzZXJ2ZXJzKG1fd2luZG93
T2JzZXJ2ZXJzKTsKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAgICAg
ICBvYnNlcnZlci0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2aXNpb24gMjMzODQw
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgy
LDE2ICsxODIsMTcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlRG9jVHlwZShGcmFt
ZSYpOwogCi0gICAgdm9pZCByZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKFBvcHVwT3Blbmlu
Z09ic2VydmVyJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIoUG9w
dXBPcGVuaW5nT2JzZXJ2ZXImKTsKKyAgICB2b2lkIHJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoV2lu
ZG93T2JzZXJ2ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIHVucmVnaXN0ZXJXaW5kb3dPYnNlcnZl
cihXaW5kb3dPYnNlcnZlciYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5
UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCkgY29uc3Q7CisgICAgdm9pZCBub3RpZnlXaW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0OwogCiAgICAgUGFnZSYgbV9wYWdl
OwogICAgIENocm9tZUNsaWVudCYgbV9jbGllbnQ7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9k
aXNwbGF5SUQgeyAwIH07Ci0gICAgVmVjdG9yPFBvcHVwT3BlbmluZ09ic2VydmVyKj4gbV9wb3B1
cE9wZW5pbmdPYnNlcnZlcnM7CisgICAgVmVjdG9yPFdpbmRvd09ic2VydmVyKj4gbV93aW5kb3dP
YnNlcnZlcnM7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9pc0Rpc3BhdGNoVmlld3Bv
cnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZCB7IGZhbHNlIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BvcHVwT3BlbmluZ09ic2VydmVyLmgJKHJldmlzaW9uIDIzMzg0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0g
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0g
KiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQb3B1cE9wZW5pbmdPYnNlcnZlciB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuUG9wdXAoKSA9IDA7Ci0KLXByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIH5Qb3B1cE9wZW5pbmdPYnNlcnZlcigpID0gZGVmYXVsdDsKLX07Ci0gICAg
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRv
d09ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPYnNl
cnZlci5oCShyZXZpc2lvbiAyMzM4NDApCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9wdXBP
cGVuaW5nT2JzZXJ2ZXIuaDoyMzM4NDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd09i
c2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICog
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAq
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBvcHVwT3Bl
bmluZ09ic2VydmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5Qb3B1cCgp
ID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflBvcHVwT3BlbmluZ09ic2VydmVyKCkg
PSBkZWZhdWx0OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2luZG93T2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1dpbmRvd09ic2VydmVyLmgJKHJldmlzaW9uIDIzMzg0MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2luZG93T2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUg
QEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNywxMiArMjgsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBQb3B1cE9wZW5pbmdPYnNlcnZlciB7CitjbGFzcyBXaW5kb3dPYnNl
cnZlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuUG9wdXAoKSA9IDA7Ci0K
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5Qb3B1cCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQzMl90KSB7IH07CisgICAgCiBwcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCB+UG9wdXBPcGVuaW5nT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVh
bCB+V2luZG93T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkocmV2aXNpb24g
MjMzODQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxMSArMjgsMTQgQEAKIAogI2luY2x1ZGUgIldpZGdldC5oIgogCisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJz
b3I7Ci0KLWNsYXNzIEhvc3RXaW5kb3cgeworY2xhc3MgV2luZG93T2JzZXJ2ZXI7CisgICAgCitj
bGFzcyBIb3N0V2luZG93IDogcHVibGljIENhbk1ha2VXZWFrUHRyPEhvc3RXaW5kb3c+IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShIb3N0V2luZG93KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgSG9zdFdpbmRvdygpID0gZGVmYXVsdDsKQEAgLTc0LDYgKzc3LDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRTaXplIHNjcmVlblNpemUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBvdmVycmlkZVNjcmVlblNpemUoKSBjb25zdCA9IDA7Cisg
ICAgCisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoV2luZG93T2JzZXJ2
ZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJXaW5kb3dPYnNlcnZlcihXaW5k
b3dPYnNlcnZlciYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAkocmV2aXNpb24gMjMzODQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJXaW5kb3dPYnNlcnZlci5oIgogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBVU0UoQ0EpCkBAIC0xMTIsNyArMTE0LDExIEBAIHN0cnVjdCBBY3RpdmVJbmZvIHsKIAog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQz
RCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPiB7CitjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPgorI2lmIEVO
QUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICAsIHB1YmxpYyBXaW5k
b3dPYnNlcnZlcgorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgZW51bSB7CiAgICAgICAgIC8vIFdl
YkdMIDEgY29uc3RhbnRzCkBAIC0xMzE5LDYgKzEzMjUsMTAgQEAgcHJpdmF0ZToKICAgICBib29s
IGFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICB2b2lk
IHdpbmRvd1NjcmVlbkRpZENoYW5nZSh1aW50MzJfdCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAg
IGludCBtX2N1cnJlbnRXaWR0aCB7IDAgfTsKICAgICBpbnQgbV9jdXJyZW50SGVpZ2h0IHsgMCB9
OwogCkBAIC0xNDk2LDYgKzE1MDYsMTAgQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAg
UGxhdGZvcm0zRE9iamVjdCBtX3ZhbyB7IDAgfTsKICNlbmRpZgorICAgIAorI2lmIFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIFdl
YWtQdHI8SG9zdFdpbmRvdz4gbV9ob3N0V2luZG93OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwCShyZXZpc2lvbiAyMzM4NDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1w
ZWRMZW5ndGggPSA0MDk2Owogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1wZWRBcmVhID0gTWF4
Q2xhbXBlZExlbmd0aCAqIE1heENsYW1wZWRMZW5ndGg7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIGJvb2wg
c3VjY2VzcyA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
KG5ldyBJbWFnZUJ1ZmZlcihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRl
cmluZ01vZGUsIGhvc3RXaW5kb3csIHN1Y2Nlc3MpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjMzODQwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlciB7CiAgICAgZnJpZW5kIGNs
YXNzIElPU3VyZmFjZTsKIHB1YmxpYzoKICAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRl
ciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNl
U1JHQiwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9
IENvbG9yU3BhY2VTUkdCLCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogI2lmIFVTRShESVJFQ1Qy
RCkKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0KiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3Bh
Y2VTUkdCKTsKICNlbmRpZgpAQCAtMTY1LDkgKzE2NSw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBU
aGlzIGNvbnN0cnVjdG9yIHdpbGwgcGxhY2UgaXRzIHN1Y2Nlc3MgaW50byB0aGUgZ2l2ZW4gb3V0
LXZhcmlhYmxlCiAgICAgLy8gc28gdGhhdCBjcmVhdGUoKSBrbm93cyB3aGVuIGl0IHNob3VsZCBy
ZXR1cm4gZmFpbHVyZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUs
IGNvbnN0IEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UsIFJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKTsKICNpZiBV
U0UoQ0cpCi0gICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDR0NvbG9yU3BhY2VSZWYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cq
LCBib29sJiBzdWNjZXNzKTsKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcGFjZVJlZiwgUmVuZGVyaW5nTW9kZSwgSG9zdFdp
bmRvdyosIGJvb2wmIHN1Y2Nlc3MpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRvQ0ZEYXRh
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQ
cmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0OwogI2VsaWYgVVNFKERJUkVDVDJEKQogICAgIEltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiwgYm9vbCYgc3VjY2Vzcyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkocmV2aXNpb24gMjMzODQwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzOSw3ICsyMzksNyBAQCBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZm
ZXI6OnRvQkdSQURhdGEoCiAgICAgcmV0dXJuIGltYWdlRGF0YTsKIH0KIAotSW1hZ2VCdWZmZXI6
OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5k
b3cqLCBib29sJiBzdWNjZXNzKQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKQogICAgIDogbV9k
YXRhKEludFNpemUoc2l6ZSksIHJlbmRlcmluZ01vZGUpCiAgICAgLCBtX2xvZ2ljYWxTaXplKHNp
emUpCiAgICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcAkocmV2aXNpb24gMjMzODQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyCiAgICAgcmV0dXJuIGJ1
ZmZlcjsKIH0KIAotSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBi
b29sJiBzdWNjZXNzKQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29s
JiBzdWNjZXNzKQogICAgIDogbV9sb2dpY2FsU2l6ZShzaXplKQogICAgICwgbV9yZXNvbHV0aW9u
U2NhbGUocmVzb2x1dGlvblNjYWxlKQogewpAQCAtMTk1LDcgKzE5NSw3IEBAIEltYWdlQnVmZmVy
OjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KIAot
SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sJiBzdWNjZXNz
KQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sJiBzdWNjZXNzKQog
ICAgIDogSW1hZ2VCdWZmZXIoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjYWNoZWRDR0NvbG9yU3Bh
Y2UoaW1hZ2VDb2xvclNwYWNlKSwgcmVuZGVyaW5nTW9kZSwgaG9zdFdpbmRvdywgc3VjY2VzcykK
IHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQkocmV2aXNpb24gMjMz
ODQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0M0RDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAxLDcgKzQwMSw3IEBAIFJlZjxH
cmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0QKIH0KIAogI2lmIFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQotc3RhdGljIHZv
aWQgaWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKENHTFBpeGVsRm9ybWF0T2JqIHBpeGVsRm9ybWF0
T2JqLCBpbnQgbnVtUGl4ZWxGb3JtYXRzLCBDR09wZW5HTERpc3BsYXlNYXNrIGRpc3BsYXlNYXNr
T3BlbkdMLCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIGNvbnRleHRPYmopCitzdGF0aWMgdm9p
ZCBpZGVudGlmeUFuZFNldEN1cnJlbnRHUFUoQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRP
YmosIENHT3BlbkdMRGlzcGxheU1hc2sgZGlzcGxheU1hc2tPcGVuR0wsIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0M0QgY29udGV4dE9iaikKIHsKICAgICAvLyBXaGVuIHRoZSBXZWJQcm9jZXNzIGRv
ZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBXaW5kb3dTZXJ2ZXIsIHRoZXJlIGlzIG5vIHdheSBm
b3IgT3BlbkdMIHRvIHRlbGwgd2hpY2ggR1BVIGlzIGNvbm5lY3RlZCB0byBhIGRpc3BsYXkuCiAg
ICAgLy8gQ0dMU2V0VmlydHVhbFNjcmVlbiBjYW4gYmUgdXNlZCB0byB0ZWxsIE9wZW5HTCB3aGlj
aCBHUFUgaXQgc2hvdWxkIGJlIHVzaW5nLgpAQCAtNDEwLDE1ICs0MTAsMTYgQEAgc3RhdGljIHZv
aWQgaWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKENHTAogICAgIGlmICghZGlzcGxheU1hc2tPcGVu
R0wgfHwgIWNvbnRleHRPYmopCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoaW50IHZpcnR1
YWxTY3JlZW4gPSAwOyB2aXJ0dWFsU2NyZWVuIDwgbnVtUGl4ZWxGb3JtYXRzOyArK3ZpcnR1YWxT
Y3JlZW4pIHsKLSAgICAgICAgR0xpbnQgZGlzcGxheU1hc2sgPSAwOwotICAgICAgICBDR0xFcnJv
ciBlcnJvciA9IENHTERlc2NyaWJlUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXRPYmosIHZpcnR1YWxT
Y3JlZW4sIGtDR0xQRkFEaXNwbGF5TWFzaywgJmRpc3BsYXlNYXNrKTsKLSAgICAgICAgQVNTRVJU
KGVycm9yID09IGtDR0xOb0Vycm9yKTsKLSAgICAgICAgaWYgKGVycm9yICE9IGtDR0xOb0Vycm9y
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChkaXNwbGF5TWFzayAmIGRpc3Bs
YXlNYXNrT3BlbkdMKSB7Ci0gICAgICAgICAgICBlcnJvciA9IENHTFNldFZpcnR1YWxTY3JlZW4o
Y29udGV4dE9iaiwgdmlydHVhbFNjcmVlbik7Ci0gICAgICAgICAgICBBU1NFUlQoZXJyb3IgPT0g
a0NHTE5vRXJyb3IpOworICAgIGF1dG8gcGl4ZWxGb3JtYXQgPSBhZG9wdE5TKFtbTlNPcGVuR0xQ
aXhlbEZvcm1hdCBhbGxvY10gaW5pdFdpdGhDR0xQaXhlbEZvcm1hdE9iajpwaXhlbEZvcm1hdE9i
al0pOworICAgIAorICAgIC8vIGZpbmQgdmlydHVhbCBzY3JlZW4KKyAgICBHTGludCBudW1iZXJP
ZlZpcnR1YWxTY3JlZW4gPSBbcGl4ZWxGb3JtYXQgbnVtYmVyT2ZWaXJ0dWFsU2NyZWVuc107Cisg
ICAgZm9yIChHTGludCB2aXJ0dWFsU2NyZWVuID0gMDsgdmlydHVhbFNjcmVlbiA8IG51bWJlck9m
VmlydHVhbFNjcmVlbjsgdmlydHVhbFNjcmVlbisrKSB7CisgICAgICAgIEdMaW50IG1hc2sgPSAw
OworICAgICAgICBbcGl4ZWxGb3JtYXQgZ2V0VmFsdWVzOiZtYXNrIGZvckF0dHJpYnV0ZTpOU09w
ZW5HTFBGQVNjcmVlbk1hc2sgZm9yVmlydHVhbFNjcmVlbjp2aXJ0dWFsU2NyZWVuXTsKKyAgICAg
ICAgaWYgKG1hc2sgJiBkaXNwbGF5TWFza09wZW5HTCkgeworICAgICAgICAgICAgQ0dMRXJyb3Ig
ZXJyb3IgPSBDR0xTZXRWaXJ0dWFsU2NyZWVuKGNvbnRleHRPYmosIHZpcnR1YWxTY3JlZW4pOwor
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChlcnJvciwgZXJyb3IgPT0ga0NHTE5vRXJyb3IpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC00OTcsOCArNDk4LDExIEBA
IEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmEKICAgICBpZiAoYXV0byBk
aXNwbGF5TWFzayA9IHByaW1hcnlPcGVuR0xEaXNwbGF5TWFzaygpKSB7CiAgICAgICAgIGlmICho
b3N0V2luZG93ICYmIGhvc3RXaW5kb3ctPmRpc3BsYXlJRCgpKQogICAgICAgICAgICAgZGlzcGxh
eU1hc2sgPSBkaXNwbGF5TWFza0ZvckRpc3BsYXkoaG9zdFdpbmRvdy0+ZGlzcGxheUlEKCkpOwot
ICAgICAgICBpZGVudGlmeUFuZFNldEN1cnJlbnRHUFUocGl4ZWxGb3JtYXRPYmosIG51bVBpeGVs
Rm9ybWF0cywgZGlzcGxheU1hc2ssIG1fY29udGV4dE9iaik7CisgICAgICAgIGlkZW50aWZ5QW5k
U2V0Q3VycmVudEdQVShwaXhlbEZvcm1hdE9iaiwgZGlzcGxheU1hc2ssIG1fY29udGV4dE9iaik7
CiAgICAgfQorICAgIG1faG9zdFdpbmRvdyA9IG1ha2VXZWFrUHRyKGhvc3RXaW5kb3cpOworICAg
IGlmIChtX2hvc3RXaW5kb3cpCisgICAgICAgIG1faG9zdFdpbmRvdy0+cmVnaXN0ZXJXaW5kb3dP
YnNlcnZlcigqdGhpcyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKICNl
bmRpZgpAQCAtNjMyLDYgKzYzNiwxMSBAQCBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29u
dGV4dDNEKCkKICAgICAgICAgW21fd2ViR0xMYXllciBzZXRDb250ZXh0Om51bGxwdHJdOwogICAg
IH0KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVS
X0JMT0NLSU5HKQorICAgIGlmIChtX2hvc3RXaW5kb3cpCisgICAgICAgIG1faG9zdFdpbmRvdy0+
dW5yZWdpc3RlcldpbmRvd09ic2VydmVyKCp0aGlzKTsKKyNlbmRpZgorICAgIAogICAgIExPRyhX
ZWJHTCwgIkRlc3Ryb3llZCBhIEdyYXBoaWNzQ29udGV4dDNEICglcCkuIiwgdGhpcyk7CiB9CiAK
QEAgLTgxNyw2ICs4MjYsMTggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6YWxsb3dPZmZsaW5l
UmVuZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQzMl90IGRpc3BsYXlJRCkKK3sKKyAgICBBU1NF
UlQobV9jb250ZXh0T2JqKTsKKyAgICBpZiAoIW1fY29udGV4dE9iaikKKyAgICAgICAgcmV0dXJu
OworICAgIGF1dG8gZGlzcGxheU1hc2sgPSBkaXNwbGF5TWFza0ZvckRpc3BsYXkoZGlzcGxheUlE
KTsKKyAgICBhdXRvIHBpeGVsRm9ybWF0T2JqID0gQ0dMR2V0UGl4ZWxGb3JtYXQobV9jb250ZXh0
T2JqKTsKKyAgICBpZGVudGlmeUFuZFNldEN1cnJlbnRHUFUocGl4ZWxGb3JtYXRPYmosIGRpc3Bs
YXlNYXNrLCBtX2NvbnRleHRPYmopOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShHUkFQSElDU19DT05URVhUXzNEKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHJldmlzaW9uIDIzMzg0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8b2JqYy9vYmpjLmg+CiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIldp
bmRvd09ic2VydmVyLmgiCiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsK
QEAgLTQwLDcgKzQxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSG9zdFdpbmRv
dzsKICAgICAKLWNsYXNzIElPU3VyZmFjZSBmaW5hbCB7CitjbGFzcyBJT1N1cmZhY2UgZmluYWwK
KyNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisgICAgOiBwdWJs
aWMgV2luZG93T2JzZXJ2ZXIKKyNlbmRpZgorewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGVudW0gY2xhc3MgRm9ybWF0IHsKQEAgLTkzLDYgKzk4LDggQEAgcHVi
bGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tSW1h
Z2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7CiAjZW5kaWYKIAorICAgIFdF
QkNPUkVfRVhQT1JUIH5JT1N1cmZhY2UoKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIG1vdmVUb1Bvb2woc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJik7CiAKICAgICBzdGF0
aWMgSW50U2l6ZSBtYXhpbXVtU2l6ZSgpOwpAQCAtMTA5LDcgKzExNiw3IEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIElPU3VyZmFjZVJlZiBzdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNl
LmdldCgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBlbnN1cmVHcmFw
aGljc0NvbnRleHQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBDR0NvbnRleHRSZWYgZW5zdXJlUGxh
dGZvcm1Db250ZXh0KGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9F
WFBPUlQgQ0dDb250ZXh0UmVmIGVuc3VyZVBsYXRmb3JtQ29udGV4dChIb3N0V2luZG93KiA9IG51
bGxwdHIpOwogCiAgICAgZW51bSBjbGFzcyBTdXJmYWNlU3RhdGUgewogICAgICAgICBWYWxpZCwK
QEAgLTE1Myw2ICsxNjAsMTAgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4gc3VyZmFjZUZyb21Qb29sKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUs
IENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0KTsKICAgICBJbnRTaXplIGNvbnRleHRTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZXh0U2l6ZTsgfQogICAgIHZvaWQgc2V0Q29udGV4dFNpemUoSW50
U2l6ZSk7CisgICAgCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5E
T1dTRVJWRVJfQkxPQ0tJTkcpCisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UodWludDMy
X3QpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBt
X2NvbG9yU3BhY2U7CiAgICAgSW50U2l6ZSBtX3NpemU7CkBAIC0xNjMsNiArMTc0LDEwIEBAIHBy
aXZhdGU6CiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gbV9jZ0NvbnRleHQ7CiAKICAgICBS
ZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7CisKKyNpZiBQTEFURk9STShNQUMpICYm
IEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICBXZWFrUHRyPEhv
c3RXaW5kb3c+IG1faG9zdFdpbmRvdzsKKyNlbmRpZgogfTsKIAogV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFdlYkNvcmU6
OklPU3VyZmFjZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvSU9TdXJmYWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQkocmV2aXNpb24gMjMzODQwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjgsNiArMjI4LDE0IEBAIElPU3VyZmFjZTo6SU9TdXJmYWNlKElPU3VyZmFjZVJlZiBz
dXJmYWMKICAgICBtX3RvdGFsQnl0ZXMgPSBJT1N1cmZhY2VHZXRBbGxvY1NpemUoc3VyZmFjZSk7
CiB9CiAKK0lPU3VyZmFjZTo6fklPU3VyZmFjZSgpCit7CisjaWYgRU5BQkxFKFdFQlBST0NFU1Nf
V0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIGlmIChtX2hvc3RXaW5kb3cpCisgICAgICAgIG1f
aG9zdFdpbmRvdy0+dW5yZWdpc3RlcldpbmRvd09ic2VydmVyKCp0aGlzKTsKKyNlbmRpZgorfQor
CiBJbnRTaXplIElPU3VyZmFjZTo6bWF4aW11bVNpemUoKQogewogICAgIEludFNpemUgbWF4U2l6
ZShjbGFtcFRvSW50ZWdlcihJT1N1cmZhY2VHZXRQcm9wZXJ0eU1heGltdW0oa0lPU3VyZmFjZVdp
ZHRoKSksIGNsYW1wVG9JbnRlZ2VyKElPU3VyZmFjZUdldFByb3BlcnR5TWF4aW11bShrSU9TdXJm
YWNlSGVpZ2h0KSkpOwpAQCAtMjcyLDcgKzI4MCw3IEBAIHZvaWQgSU9TdXJmYWNlOjpzZXRDb250
ZXh0U2l6ZShJbnRTaXplIGMKICAgICBtX2NvbnRleHRTaXplID0gY29udGV4dFNpemU7CiB9CiAK
LUNHQ29udGV4dFJlZiBJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dChjb25zdCBIb3N0
V2luZG93KiBob3N0V2luZG93KQorQ0dDb250ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZv
cm1Db250ZXh0KEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgaWYgKG1fY2dDb250ZXh0
KQogICAgICAgICByZXR1cm4gbV9jZ0NvbnRleHQuZ2V0KCk7CkBAIC0zMDYsNiArMzE0LDkgQEAg
Q0dDb250ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1DbwogICAgICAgICAgICAgZGlz
cGxheU1hc2sgPSBkaXNwbGF5TWFza0ZvckRpc3BsYXkoaG9zdFdpbmRvdy0+ZGlzcGxheUlEKCkp
OwogICAgICAgICBDR0lPU3VyZmFjZUNvbnRleHRTZXREaXNwbGF5TWFzayhtX2NnQ29udGV4dC5n
ZXQoKSwgZGlzcGxheU1hc2spOwogICAgIH0KKyAgICBtX2hvc3RXaW5kb3cgPSBtYWtlV2Vha1B0
cihob3N0V2luZG93KTsKKyAgICBpZiAobV9ob3N0V2luZG93KQorICAgICAgICBtX2hvc3RXaW5k
b3ctPnJlZ2lzdGVyV2luZG93T2JzZXJ2ZXIoKnRoaXMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oaG9zdFdpbmRvdyk7CiAjZW5kaWYKQEAgLTQ1Myw2ICs0NjQsMTYgQEAgdm9pZCBJT1N1cmZh
Y2U6Om1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZQogICAgIElPU3VyZmFjZVNldFZhbHVlKG1fc3Vy
ZmFjZS5nZXQoKSwga0lPU3VyZmFjZUNvbG9yU3BhY2UsIGNvbG9yU3BhY2VQcm9wZXJ0aWVzLmdl
dCgpKTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9X
U0VSVkVSX0JMT0NLSU5HKQordm9pZCBJT1N1cmZhY2U6OndpbmRvd1NjcmVlbkRpZENoYW5nZSh1
bnNpZ25lZCBkaXNwbGF5SUQpCit7CisgICAgQVNTRVJUKG1fY2dDb250ZXh0KTsKKyAgICBpZiAo
IW1fY2dDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQ0dJT1N1cmZhY2VDb250ZXh0U2V0
RGlzcGxheU1hc2sobV9jZ0NvbnRleHQuZ2V0KCksIGRpc3BsYXlNYXNrRm9yRGlzcGxheShkaXNw
bGF5SUQpKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQogewogICAgIHN3aXRjaCAoZm9y
bWF0KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345160</attachid>
            <date>2018-07-17 09:53:56 -0700</date>
            <delta_ts>2018-07-18 11:36:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187684-20180717095355.patch</filename>
            <type>text/plain</type>
            <size>22807</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE4LTA3LTE3ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICAzRCBncmFwaGljcyBjb250
ZXh0cyBzaG91bGQgdXBkYXRlIHRoZSBkaXNwbGF5IG1hc2sgd2hlbiB0aGUgd2luZG93IGlzIG1v
dmVkIHRvIGFub3RoZXIgc2NyZWVuLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg3Njg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ3JlYXRlIGEgbmV3IEhvc3RXaW5kb3dPYnNlcnZlciByZXBsYWNpbmcg
dGhlIHByZXZpb3VzIFBvcHVwT3BlbmluZ09ic2VydmVyLiBMZXQgR3JhcGhpY3NDb250ZXh0M0Qg
b2JzZXJ2ZQorICAgICAgICB3aGVuIHRoZSB3aW5kb3cgc2NyZWVuIGlzIGNoYW5naW5nLCBhbmQg
dXBkYXRlIHRoZSBkaXNwbGF5IG1hc2sgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBUaGlzIHJlcXVpcmVzIGEgZHVhbCBtb25pdG9yIHNldHVwLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Nw
aW5CdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVt
ZW50OjpyZWxlYXNlQ2FwdHVyZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWU6OndpbmRvd1NjcmVlbkRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6
OnJlZ2lzdGVyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp1bnJlZ2lzdGVy
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpub3RpZnlQb3B1cE9wZW5pbmdP
YnNlcnZlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpub3RpZnlXaW5kb3dT
Y3JlZW5EaWRDaGFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpyZWdpc3Rl
clBvcHVwT3BlbmluZ09ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZTo6dW5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
YWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2UvSG9zdFdpbmRvd09ic2VydmVyLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaC4KKyAgICAg
ICAgKFdlYkNvcmU6Okhvc3RXaW5kb3dPYnNlcnZlcjo6d2lsbE9wZW5Qb3B1cCk6CisgICAgICAg
IChXZWJDb3JlOjpIb3N0V2luZG93T2JzZXJ2ZXI6OnNjcmVlbkRpZENoYW5nZSk6CisgICAgICAg
ICogcGFnZS9Qb3B1cE9wZW5pbmdPYnNlcnZlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRm
b3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dDNEQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjppZGVudGlmeUFuZFNldEN1cnJlbnRH
UFUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4
dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250
ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNjcmVlbkRpZENo
YW5nZSk6CisKIDIwMTgtMDctMTcgIEphdmllciBGZXJuYW5kZXogIDxqZmVybmFuZGV6QGlnYWxp
YS5jb20+CiAKICAgICAgICAgRGVsZXRlIGNvbnRlbnQgb2YgYSBzaW5nbGUgY2VsbCB0YWJsZSBz
aG91bGQgbm90IGRlbGV0ZSB0aGUgd2hvbGUgdGFibGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzMzg3OSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTAyOCw3ICsxMDI4LDcgQEAKIAkJMzdDNzM4RjQxRURCREU4RDAwM0Yy
QjBCIC8qIERhdGVUaW1lQ2hvb3NlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDNzM4RjIxRURCREU4NzAwM0YyQjBCIC8qIERhdGVUaW1l
Q2hvb3NlckNsaWVudC5oICovOyB9OwogCQkzN0Q0NTZGRDFBOUE1MEQ4MDAzMzMwQTEgLyogTG9j
YWxpemFibGVTdHJpbmdzLnBtIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzN0Q0NTZGQjFBOUE1MEI2MDAzMzMwQTEgLyogTG9jYWxpemFibGVTdHJp
bmdzLnBtICovOyB9OwogCQkzN0UzNTI0RDEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0UzNTI0QzEy
NDUwQzY2MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzdGNTY3Q0UxNjUzNThGNDAwRERFOTJCIC8qIFBvcHVw
T3BlbmluZ09ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzN0Y1
NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogSG9zdFdpbmRvd09ic2VydmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5
Q0EgLyogSG9zdFdpbmRvd09ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdGODE4RkQwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVV
UkxSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzdGODE4RkIwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3RkQ0Mjk4MTE4
MzY4NDYwMDkzQzAyOSAvKiBUcmVlRGVwdGhMaW1pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGRDQyOTcxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVE
ZXB0aExpbWl0LmggKi87IH07CiAJCTM4N0FFOTVCMUU4RTkyRUYwMDAwREU5NiAvKiBKU1dlYkdQ
VVNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4
N0FFOTU5MUU4RTkyRUYwMDAwREU5NiAvKiBKU1dlYkdQVVNpemUuaCAqLzsgfTsKQEAgLTcwODks
NyArNzA4OSw3IEBACiAJCTM3MkMwMEQ4MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5kT3B0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVu
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSHlwaGVuYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc2RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8q
IFRleHRSdW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFJ1
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3NzJCMDk1MTY1MzU4NTYwMDBB
NDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQb3B1cE9wZW5pbmdPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyogSG9zdFdpbmRvd09ic2VydmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhvc3RXaW5kb3dPYnNlcnZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzc0QUJBMzBGQTIxRUI0MDBBRDdERTkgLyogT3Zl
cmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogTmF0aXZlSW1hZ2VDRy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVJbWFnZUNHLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9u
SXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvc2l0
aW9uSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkzMjMsNiAr
MTkzMjMsNyBAQAogCQkJCUJDOTREMTUwMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmNwcCAq
LywKIAkJCQlCQzk0RDE1MTBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5oICovLAogCQkJCUJD
OTREMTUyMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmlkbCAqLywKKwkJCQkzNzcyQjA5NTE2
NTM1ODU2MDAwQTQ5Q0EgLyogSG9zdFdpbmRvd09ic2VydmVyLmggKi8sCiAJCQkJMEY0NzEwRDUx
REI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVyLmNwcCAqLywKIAkJCQkwRjQ3
MTBENjFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaCAqLywKIAkJCQkw
RjQ3MTBENzFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaWRsICovLApA
QCAtMTk0MTAsNyArMTk0MTEsNiBAQAogCQkJCTMxRDU5MUIxMTY2OTdBNkMwMEU2QkYwMiAvKiBQ
bHVnSW5DbGllbnQuaCAqLywKIAkJCQk1Q0ZDNDM0RTE5MjQwNkE5MDBBMEQzQjUgLyogUG9pbnRl
ckxvY2tDb250cm9sbGVyLmNwcCAqLywKIAkJCQk1Q0ZDNDM0RjE5MjQwNkE5MDBBMEQzQjUgLyog
UG9pbnRlckxvY2tDb250cm9sbGVyLmggKi8sCi0JCQkJMzc3MkIwOTUxNjUzNTg1NjAwMEE0OUNB
IC8qIFBvcHVwT3BlbmluZ09ic2VydmVyLmggKi8sCiAJCQkJQjc3NkQ0M0MxMTA0NTI3NTAwQkVC
MEVDIC8qIFByaW50Q29udGV4dC5jcHAgKi8sCiAJCQkJQjc3NkQ0M0ExMTA0NTI1RDAwQkVCMEVD
IC8qIFByaW50Q29udGV4dC5oICovLAogCQkJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3RDJERCAvKiBS
ZW1vdGVET01XaW5kb3cuY3BwICovLApAQCAtMjgwODQsNiArMjgwODQsNyBAQAogCQkJCTkzMDkw
ODkxMEFGN0VERTQwMDgxREYwMSAvKiBIaXRUZXN0UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTMwN0YxRDgwQUYyRDU5MDAwREJBMzFBIC8qIEhpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDM0JDMjlDMEU5MUFCMEYwMDgzNTU4OCAvKiBIb3N0V2luZG93LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkzN0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyogSG9zdFdpbmRvd09ic2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA5OTEyQjAyNkY3MDBDMUEzNTkgLyogSFJU
RkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA5QjEyQjAyNkY3MDBDMUEzNTkg
LyogSFJURkRhdGFiYXNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA5RDEyQjAy
NkY3MDBDMUEzNTkgLyogSFJURkVsZXZhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTcyNiw3
ICsyOTcyNyw2IEBACiAJCQkJMDY2OEUxOEIwQUREOTYyNDAwNDEyOEUwIC8qIFBvcHVwTWVudS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUJDMTI4NzcwQjMzQUE2RDAwQzY5M0Q1IC8qIFBvcHVwTWVu
dUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQkUxMkIwRTk4MDkyRjAwODM1NTg4IC8q
IFBvcHVwTWVudVN0eWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzN0Y1NjdDRTE2NTM1OEY0MDBE
REU5MkIgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5
OURFMDgyNDVFNTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0
NkFGMkMxNEY0RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3NDZBRjJFMTRGNERERTYwMDNFN0E3MCAvKiBQb3NpdGlvbkVycm9yLmggaW4gSGVh
ZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0
dG9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMzg3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEy
Miw3IEBAIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmQKICAgICAgICAg
ICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRz
RWxlbWVudCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgbV9jYXB0dXJpbmcgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkucmVnaXN0ZXJQb3B1cE9wZW5p
bmdPYnNlcnZlcigqdGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUo
KS5yZWdpc3Rlck9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBVcERvd25TdGF0ZSBvbGRVcERvd25TdGF0ZSA9IG1fdXBEb3duU3Rh
dGU7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6cmVsZWFzZUNh
cHR1cmUoKQogICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01v
dXNlRXZlbnRzRWxlbWVudChudWxscHRyKTsKICAgICAgICAgICAgIG1fY2FwdHVyaW5nID0gZmFs
c2U7CiAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQotICAg
ICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLnVucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZl
cigqdGhpcyk7CisgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkudW5yZWdpc3Rlck9ic2Vy
dmVyKCp0aGlzKTsKICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAkocmV2aXNpb24gMjMzODc5KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsMTIgKzI3LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkhUTUxE
aXZFbGVtZW50LmgiCi0jaW5jbHVkZSAiUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCIKKyNpbmNsdWRl
ICJIb3N0V2luZG93T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNwaW5CdXR0b25FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxE
aXZFbGVtZW50LCBwdWJsaWMgUG9wdXBPcGVuaW5nT2JzZXJ2ZXIgeworY2xhc3MgU3BpbkJ1dHRv
bkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQsIHB1YmxpYyBIb3N0V2luZG93
T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoU3BpbkJ1dHRvbkVsZW1lbnQp
OwogcHVibGljOgogICAgIGVudW0gVXBEb3duU3RhdGUgewpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcAkocmV2aXNpb24gMjMzODc5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMSArMzgsMTEgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3Vs
dC5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3dPYnNlcnZlci5oIgogI2luY2x1ZGUgIkljb24uaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCi0jaW5jbHVkZSAiUG9wdXBPcGVu
aW5nT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC01MTAsNiArNTEwLDggQEAg
dm9pZCBDaHJvbWU6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0ZgogICAgICAgICBpZiAoZnJh
bWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+d2luZG93U2Ny
ZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7CiAgICAgfQorICAgIAorICAgIG5vdGlmeVdpbmRvd1Nj
cmVlbkRpZENoYW5nZShkaXNwbGF5SUQpOwogfQogCiAvLyAtLS0tLS0tLQpAQCAtNTcxLDIyICs1
NzMsMzMgQEAgdm9pZCBDaHJvbWU6OmRpZFJlY2VpdmVEb2NUeXBlKEZyYW1lJiBmcgogI2VuZGlm
CiB9CiAKLXZvaWQgQ2hyb21lOjpyZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKFBvcHVwT3Bl
bmluZ09ic2VydmVyJiBvYnNlcnZlcikKK3ZvaWQgQ2hyb21lOjpyZWdpc3Rlck9ic2VydmVyKEhv
c3RXaW5kb3dPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7Ci0gICAgbV9wb3B1cE9wZW5pbmdPYnNlcnZl
cnMuYXBwZW5kKCZvYnNlcnZlcik7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIG1fd2luZG93T2JzZXJ2ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOwogfQogCi12b2lkIENo
cm9tZTo6dW5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKFBvcHVwT3BlbmluZ09ic2VydmVy
JiBvYnNlcnZlcikKK3ZvaWQgQ2hyb21lOjp1bnJlZ2lzdGVyT2JzZXJ2ZXIoSG9zdFdpbmRvd09i
c2VydmVyJiBvYnNlcnZlcikKIHsKLSAgICBib29sIHJlbW92ZWQgPSBtX3BvcHVwT3BlbmluZ09i
c2VydmVycy5yZW1vdmVGaXJzdCgmb2JzZXJ2ZXIpOworICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBib29sIHJlbW92ZWQgPSBtX3dpbmRvd09ic2VydmVycy5yZW1vdmVG
aXJzdCgmb2JzZXJ2ZXIpOwogICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7CiB9
CiAKIHZvaWQgQ2hyb21lOjpub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZlcnMoKSBjb25zdAogewot
ICAgIGNvbnN0IFZlY3RvcjxQb3B1cE9wZW5pbmdPYnNlcnZlcio+IG9ic2VydmVycyhtX3BvcHVw
T3BlbmluZ09ic2VydmVycyk7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGNvbnN0IFZlY3RvcjxIb3N0V2luZG93T2JzZXJ2ZXIqPiBvYnNlcnZlcnMobV93aW5kb3dP
YnNlcnZlcnMpOwogICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBvYnNlcnZlcnMpCiAgICAgICAg
IG9ic2VydmVyLT53aWxsT3BlblBvcHVwKCk7CiB9CiAKK3ZvaWQgQ2hyb21lOjpub3RpZnlXaW5k
b3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKSBjb25zdAorewor
ICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBjb25zdCBWZWN0b3I8SG9z
dFdpbmRvd09ic2VydmVyKj4gb2JzZXJ2ZXJzKG1fd2luZG93T2JzZXJ2ZXJzKTsKKyAgICBmb3Ig
KGF1dG8mIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlci0+c2NyZWVuRGlk
Q2hhbmdlKGRpc3BsYXlJRCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaAkocmV2aXNpb24gMjMzODc5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDE2ICsxODIsMTcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBkaWRSZWNlaXZlRG9jVHlwZShGcmFtZSYpOwogCi0gICAgdm9pZCByZWdpc3RlclBv
cHVwT3BlbmluZ09ic2VydmVyKFBvcHVwT3BlbmluZ09ic2VydmVyJik7Ci0gICAgdm9pZCB1bnJl
Z2lzdGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIoUG9wdXBPcGVuaW5nT2JzZXJ2ZXImKTsKKyAgICB2
b2lkIHJlZ2lzdGVyT2JzZXJ2ZXIoSG9zdFdpbmRvd09ic2VydmVyJikgb3ZlcnJpZGU7CisgICAg
dm9pZCB1bnJlZ2lzdGVyT2JzZXJ2ZXIoSG9zdFdpbmRvd09ic2VydmVyJikgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZlcnMoKSBjb25zdDsK
KyAgICB2b2lkIG5vdGlmeVdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCkg
Y29uc3Q7CiAKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgQ2hyb21lQ2xpZW50JiBtX2NsaWVudDsK
ICAgICBQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRCB7IDAgfTsKLSAgICBWZWN0b3I8UG9w
dXBPcGVuaW5nT2JzZXJ2ZXIqPiBtX3BvcHVwT3BlbmluZ09ic2VydmVyczsKKyAgICBWZWN0b3I8
SG9zdFdpbmRvd09ic2VydmVyKj4gbV93aW5kb3dPYnNlcnZlcnM7CiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIGJvb2wgbV9pc0Rpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZCB7
IGZhbHNlIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvSG9zdFdpbmRvd09i
c2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Ib3N0V2luZG93T2Jz
ZXJ2ZXIuaAkocmV2aXNpb24gMjMzODc5KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvcHVw
T3BlbmluZ09ic2VydmVyLmg6MjMzODc5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Ib3N0V2lu
ZG93T2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUG9w
dXBPcGVuaW5nT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCB3aWxsT3BlblBv
cHVwKCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+UG9wdXBPcGVuaW5nT2JzZXJ2
ZXIoKSA9IGRlZmF1bHQ7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9Ib3N0V2luZG93T2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0hvc3RXaW5kb3dPYnNlcnZlci5oCShyZXZpc2lvbiAyMzM4Nzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0hvc3RXaW5kb3dPYnNlcnZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI1LDE0ICsyNiwxNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUG9wdXBPcGVuaW5nT2JzZXJ2ZXIgeworY2xhc3MgSG9z
dFdpbmRvd09ic2VydmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5Qb3B1
cCgpID0gMDsKLQorICAgIHZpcnR1YWwgdm9pZCB3aWxsT3BlblBvcHVwKCkgeyB9OworICAgIHZp
cnR1YWwgdm9pZCBzY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpIHsgfTsKKyAgICAK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5Qb3B1cE9wZW5pbmdPYnNlcnZlcigpID0gZGVmYXVs
dDsKKyAgICB2aXJ0dWFsIH5Ib3N0V2luZG93T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CiB9OwogICAg
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Qb3B1
cE9wZW5pbmdPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9w
dXBPcGVuaW5nT2JzZXJ2ZXIuaAkocmV2aXNpb24gMjMzODc5KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9Qb3B1cE9wZW5pbmdPYnNlcnZlci5oCShub25leGlzdGVudCkKQEAgLTEsMzggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0gKiBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
Ci0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QKLSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSAqIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAq
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIFBvcHVwT3BlbmluZ09ic2VydmVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZv
aWQgd2lsbE9wZW5Qb3B1cCgpID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgflBvcHVw
T3BlbmluZ09ic2VydmVyKCkgPSBkZWZhdWx0OwotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHJldmlzaW9uIDIz
Mzg3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsMTEgKzI4LDE0IEBACiAKICNpbmNsdWRlICJXaWRnZXQuaCIKIAorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3Vyc29y
OwotCi1jbGFzcyBIb3N0V2luZG93IHsKK2NsYXNzIEhvc3RXaW5kb3dPYnNlcnZlcjsKKyAgICAK
K2NsYXNzIEhvc3RXaW5kb3cgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SG9zdFdpbmRvdz4gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhvc3RXaW5kb3cpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBIb3N0V2luZG93KCkgPSBkZWZhdWx0OwpAQCAtNzQsNiArNzcs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgRmxvYXRTaXplIG92ZXJyaWRlU2NyZWVuU2l6ZSgpIGNvbnN0ID0gMDsK
KyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJPYnNlcnZlcihIb3N0V2luZG93T2JzZXJ2
ZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJPYnNlcnZlcihIb3N0V2luZG93
T2JzZXJ2ZXImKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmgJKHJldmlzaW9uIDIzMzg3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJBTkdMRVdlYktpdEJyaWRnZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgorI2luY2x1ZGUgIkhv
c3RXaW5kb3dPYnNlcnZlci5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKQEAgLTM4LDYgKzM5LDcgQEAKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNs
dWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgVVNFKENBKQpAQCAtMTEyLDcgKzExNCw3
IEBAIHN0cnVjdCBBY3RpdmVJbmZvIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQzRCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNz
Q29udGV4dDNEPiB7CitjbGFzcyBHcmFwaGljc0NvbnRleHQzRCA6IHB1YmxpYyBSZWZDb3VudGVk
PEdyYXBoaWNzQ29udGV4dDNEPiwgcHVibGljIEhvc3RXaW5kb3dPYnNlcnZlciB7CiBwdWJsaWM6
CiAgICAgZW51bSB7CiAgICAgICAgIC8vIFdlYkdMIDEgY29uc3RhbnRzCkBAIC0xMzE5LDYgKzEz
MjEsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0
OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRP
V1NFUlZFUl9CTE9DS0lORykKKyAgICB2b2lkIHNjcmVlbkRpZENoYW5nZSh1aW50MzJfdCkgb3Zl
cnJpZGU7CisjZW5kaWYKKwogICAgIGludCBtX2N1cnJlbnRXaWR0aCB7IDAgfTsKICAgICBpbnQg
bV9jdXJyZW50SGVpZ2h0IHsgMCB9OwogCkBAIC0xNDk2LDYgKzE1MDIsMTAgQEAgcHJpdmF0ZToK
ICNpZiBVU0UoQ0FJUk8pCiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX3ZhbyB7IDAgfTsKICNlbmRp
ZgorICAgIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VS
VkVSX0JMT0NLSU5HKQorICAgIFdlYWtQdHI8SG9zdFdpbmRvdz4gbV9ob3N0V2luZG93OworI2Vu
ZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dDNEQ29jb2EubW0JKHJldmlzaW9uIDIzMzg3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQwMSw3ICs0MDEsNyBAQCBSZWY8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29u
dGV4dDNECiB9CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRP
V1NFUlZFUl9CTE9DS0lORykKLXN0YXRpYyB2b2lkIGlkZW50aWZ5QW5kU2V0Q3VycmVudEdQVShD
R0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgaW50IG51bVBpeGVsRm9ybWF0cywgQ0dP
cGVuR0xEaXNwbGF5TWFzayBkaXNwbGF5TWFza09wZW5HTCwgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQzRCBjb250ZXh0T2JqKQorc3RhdGljIHZvaWQgaWRlbnRpZnlBbmRTZXRDdXJyZW50R1BVKENH
TFBpeGVsRm9ybWF0T2JqIHBpeGVsRm9ybWF0T2JqLCBDR09wZW5HTERpc3BsYXlNYXNrIGRpc3Bs
YXlNYXNrT3BlbkdMLCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIGNvbnRleHRPYmopCiB7CiAg
ICAgLy8gV2hlbiB0aGUgV2ViUHJvY2VzcyBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgV2lu
ZG93U2VydmVyLCB0aGVyZSBpcyBubyB3YXkgZm9yIE9wZW5HTCB0byB0ZWxsIHdoaWNoIEdQVSBp
cyBjb25uZWN0ZWQgdG8gYSBkaXNwbGF5LgogICAgIC8vIENHTFNldFZpcnR1YWxTY3JlZW4gY2Fu
IGJlIHVzZWQgdG8gdGVsbCBPcGVuR0wgd2hpY2ggR1BVIGl0IHNob3VsZCBiZSB1c2luZy4KQEAg
LTQxMCwxNSArNDEwLDE2IEBAIHN0YXRpYyB2b2lkIGlkZW50aWZ5QW5kU2V0Q3VycmVudEdQVShD
R0wKICAgICBpZiAoIWRpc3BsYXlNYXNrT3BlbkdMIHx8ICFjb250ZXh0T2JqKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBmb3IgKGludCB2aXJ0dWFsU2NyZWVuID0gMDsgdmlydHVhbFNjcmVlbiA8
IG51bVBpeGVsRm9ybWF0czsgKyt2aXJ0dWFsU2NyZWVuKSB7Ci0gICAgICAgIEdMaW50IGRpc3Bs
YXlNYXNrID0gMDsKLSAgICAgICAgQ0dMRXJyb3IgZXJyb3IgPSBDR0xEZXNjcmliZVBpeGVsRm9y
bWF0KHBpeGVsRm9ybWF0T2JqLCB2aXJ0dWFsU2NyZWVuLCBrQ0dMUEZBRGlzcGxheU1hc2ssICZk
aXNwbGF5TWFzayk7Ci0gICAgICAgIEFTU0VSVChlcnJvciA9PSBrQ0dMTm9FcnJvcik7Ci0gICAg
ICAgIGlmIChlcnJvciAhPSBrQ0dMTm9FcnJvcikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBpZiAoZGlzcGxheU1hc2sgJiBkaXNwbGF5TWFza09wZW5HTCkgewotICAgICAgICAgICAg
ZXJyb3IgPSBDR0xTZXRWaXJ0dWFsU2NyZWVuKGNvbnRleHRPYmosIHZpcnR1YWxTY3JlZW4pOwot
ICAgICAgICAgICAgQVNTRVJUKGVycm9yID09IGtDR0xOb0Vycm9yKTsKKyAgICBhdXRvIHBpeGVs
Rm9ybWF0ID0gYWRvcHROUyhbW05TT3BlbkdMUGl4ZWxGb3JtYXQgYWxsb2NdIGluaXRXaXRoQ0dM
UGl4ZWxGb3JtYXRPYmo6cGl4ZWxGb3JtYXRPYmpdKTsKKyAgICAKKyAgICAvLyBTZXQgdmlydHVh
bCBzY3JlZW4gYmFzZWQgb24gbWF0Y2hpbmcgZGlzcGxheSBtYXNrLgorICAgIEdMaW50IG51bWJl
ck9mVmlydHVhbFNjcmVlbiA9IFtwaXhlbEZvcm1hdCBudW1iZXJPZlZpcnR1YWxTY3JlZW5zXTsK
KyAgICBmb3IgKEdMaW50IHZpcnR1YWxTY3JlZW4gPSAwOyB2aXJ0dWFsU2NyZWVuIDwgbnVtYmVy
T2ZWaXJ0dWFsU2NyZWVuOyB2aXJ0dWFsU2NyZWVuKyspIHsKKyAgICAgICAgR0xpbnQgbWFzayA9
IDA7CisgICAgICAgIFtwaXhlbEZvcm1hdCBnZXRWYWx1ZXM6Jm1hc2sgZm9yQXR0cmlidXRlOk5T
T3BlbkdMUEZBU2NyZWVuTWFzayBmb3JWaXJ0dWFsU2NyZWVuOnZpcnR1YWxTY3JlZW5dOworICAg
ICAgICBpZiAobWFzayAmIGRpc3BsYXlNYXNrT3BlbkdMKSB7CisgICAgICAgICAgICBDR0xFcnJv
ciBlcnJvciA9IENHTFNldFZpcnR1YWxTY3JlZW4oY29udGV4dE9iaiwgdmlydHVhbFNjcmVlbik7
CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCBlcnJvciA9PSBrQ0dMTm9FcnJvcik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTQ5Nyw4ICs0OTgsMTEg
QEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYQogICAgIGlmIChhdXRv
IGRpc3BsYXlNYXNrID0gcHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCkpIHsKICAgICAgICAgaWYg
KGhvc3RXaW5kb3cgJiYgaG9zdFdpbmRvdy0+ZGlzcGxheUlEKCkpCiAgICAgICAgICAgICBkaXNw
bGF5TWFzayA9IGRpc3BsYXlNYXNrRm9yRGlzcGxheShob3N0V2luZG93LT5kaXNwbGF5SUQoKSk7
Ci0gICAgICAgIGlkZW50aWZ5QW5kU2V0Q3VycmVudEdQVShwaXhlbEZvcm1hdE9iaiwgbnVtUGl4
ZWxGb3JtYXRzLCBkaXNwbGF5TWFzaywgbV9jb250ZXh0T2JqKTsKKyAgICAgICAgaWRlbnRpZnlB
bmRTZXRDdXJyZW50R1BVKHBpeGVsRm9ybWF0T2JqLCBkaXNwbGF5TWFzaywgbV9jb250ZXh0T2Jq
KTsKICAgICB9CisgICAgbV9ob3N0V2luZG93ID0gbWFrZVdlYWtQdHIoaG9zdFdpbmRvdyk7Cisg
ICAgaWYgKG1faG9zdFdpbmRvdykKKyAgICAgICAgbV9ob3N0V2luZG93LT5yZWdpc3Rlck9ic2Vy
dmVyKCp0aGlzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGhvc3RXaW5kb3cpOwogI2VuZGlm
CkBAIC02MzIsNiArNjM2LDExIEBAIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0
M0QoKQogICAgICAgICBbbV93ZWJHTExheWVyIHNldENvbnRleHQ6bnVsbHB0cl07CiAgICAgfQog
CisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxP
Q0tJTkcpCisgICAgaWYgKG1faG9zdFdpbmRvdykKKyAgICAgICAgbV9ob3N0V2luZG93LT51bnJl
Z2lzdGVyT2JzZXJ2ZXIoKnRoaXMpOworI2VuZGlmCisgICAgCiAgICAgTE9HKFdlYkdMLCAiRGVz
dHJveWVkIGEgR3JhcGhpY3NDb250ZXh0M0QgKCVwKS4iLCB0aGlzKTsKIH0KIApAQCAtODE3LDYg
KzgyNiwxOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjphbGxvd09mZmxpbmVSZW5kCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VT
U19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzY3JlZW5E
aWRDaGFuZ2UodWludDMyX3QgZGlzcGxheUlEKQoreworICAgIEFTU0VSVChtX2NvbnRleHRPYmop
OworICAgIGlmICghbV9jb250ZXh0T2JqKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkaXNw
bGF5TWFzayA9IGRpc3BsYXlNYXNrRm9yRGlzcGxheShkaXNwbGF5SUQpOworICAgIGF1dG8gcGl4
ZWxGb3JtYXRPYmogPSBDR0xHZXRQaXhlbEZvcm1hdChtX2NvbnRleHRPYmopOworICAgIGlkZW50
aWZ5QW5kU2V0Q3VycmVudEdQVShwaXhlbEZvcm1hdE9iaiwgZGlzcGxheU1hc2ssIG1fY29udGV4
dE9iaik7Cit9CisjZW5kaWYKKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNTX0NPTlRF
WFRfM0QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345265</attachid>
            <date>2018-07-18 11:36:57 -0700</date>
            <delta_ts>2018-07-18 11:46:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187684-20180718113656.patch</filename>
            <type>text/plain</type>
            <size>15586</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzkxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA3LTE4ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJTyBzdXJmYWNlcyBzaG91
bGQgdXBkYXRlIHRoZSBkaXNwbGF5IG1hc2sgd2hlbiB0aGUgd2luZG93IGlzIG1vdmVkIHRvIGFu
b3RoZXIgc2NyZWVuLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg3Njg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ3JlYXRlIGEgbmV3IElPU3VyZmFjZU1hbmFnZXIgd2hpY2ggd2lsbCBrZWVwIGEgbGlz
dCBvZiBhbGwgSU8gc3VyZmFjZXMuIFdoZW4gdGhlIHNjcmVlbiBvZiBhIGhvc3Qgd2luZG93IGhh
cyBjaGFuZ2VkLAorICAgICAgICB1cGRhdGUgYWxsIElPIHN1cmZhY2VzIHdpdGggdGhlIG5ldyBk
aXNwbGF5IG1hc2suIFRoZSBJTyBzdXJmYWNlIG1hbmFnZXIga2VlcHMgYSBtYXBwaW5nIGJldHdl
ZW4gSU8gc3VyZmFjZSBjb250ZXh0CisgICAgICAgIGFuZCBob3N0IHdpbmRvdyBpbiBvcmRlciB0
byBrbm93IHdoaWNoIElPIHN1cmZhY2VzIHNob3VsZCBiZSB1cGRhdGVkLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cy4gVGhpcyByZXF1aXJlcyBhIGR1YWwgbW9uaXRvciBzZXR1cC4KKworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OndpbmRvd1NjcmVlbkRpZENoYW5n
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6SU9TdXJmYWNlOjpJT1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNl
Ojp+SU9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6ZW5zdXJlUGxhdGZv
cm1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6c2V0RGlzcGxheU1hc2sp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZU1hbmFnZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZU1hbmFnZXI6OnVwZGF0ZURpc3Bs
YXlNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZU1hbmFnZXI6OmFkZFN1cmZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlTWFuYWdlcjo6cmVtb3ZlU3VyZmFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2VNYW5hZ2VyOjpzZXRIb3N0V2luZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OklPU3VyZmFjZU1hbmFnZXI6Om1hbmFnZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZU1hbmFnZXIuaDogQWRkZWQuCisKIDIwMTgtMDct
MTggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgV29yZEJyZWFrOjpCcmVhayB0byBXb3JkQnJlYWs6OkJyZWFrV29yZApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjMzOTE0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zODc1LDYgKzM4NzUsOCBAQAogCQlDMEMwNTRD
RDExMThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8qIElETFBh
cnNlci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDMEYyQTQ0MTEzODY5QUFCMDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBGMkE0M0YxMzg2OUEyODAwNjZD
NTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDMTA1REE2NDBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5n
RGV0ZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMxMDVEQTYzMEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oICovOyB9
OworCQlDMTEzRUJEODIwRkZBNTBCMDBENDdCQ0EgLyogSU9TdXJmYWNlTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzExM0VCRDYyMEZGQTUw
MjAwRDQ3QkNBIC8qIElPU3VyZmFjZU1hbmFnZXIuaCAqLzsgfTsKKwkJQzExM0VCREEyMEZGQTZB
MzAwRDQ3QkNBIC8qIElPU3VyZmFjZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzExM0VCRDkyMEZGQTZBMzAwRDQ3QkNBIC8qIElPU3Vy
ZmFjZU1hbmFnZXIuY3BwICovOyB9OwogCQlDMUUxRDIzNjIwM0RGMTU0MDA1ODQ2NjUgLyogU2Ny
ZWVuUHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzFFMUQyMzUyMDNERjE1NDAwNTg0NjY1IC8qIFNjcmVlblByb3BlcnRpZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjAxNUMwQTFC
RTZGRUIyMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjAxNUMwOTFCRTZGRTJDMDA4MjIzODkgLyog
Rm9udFZhcmlhbnRCdWlsZGVyLmggKi87IH07CiAJCUMyMURGMkVBMUQ5RTRFOTkwMEY1QjI0QyAv
KiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyMURGMkU4MUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0
aW9uVmFsdWUuaCAqLzsgfTsKQEAgLTEzMDM4LDYgKzEzMDQwLDggQEAKIAkJQzBGMkE0M0YxMzg2
OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBwcmVwcm9j
ZXNzb3IucG07IHBhdGggPSBzY3JpcHRzL3ByZXByb2Nlc3Nvci5wbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzEwNURBNjEwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0Rl
dGVjdG9ySUNVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRF
bmNvZGluZ0RldGVjdG9ySUNVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzEw
NURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRFbmNvZGluZ0RldGVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxMTNFQkQ2MjBGRkE1MDIwMEQ0N0JDQSAvKiBJT1N1cmZh
Y2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElPU3VyZmFjZU1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzExM0VCRDkyMEZGQTZBMzAwRDQ3QkNBIC8qIElPU3VyZmFj
ZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSU9TdXJmYWNlTWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRTFEMjM1MjAzREYxNTQwMDU4NDY2NSAvKiBT
Y3JlZW5Qcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmVlblByb3BlcnRpZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIwMTVDMDkxQkU2RkUyQzAwODIyMzg5IC8qIEZv
bnRWYXJpYW50QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxREYyRTcxRDlFNEU5OTAwRjVCMjRDIC8q
IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDU1NGb250VmFyaWF0aW9uVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjM4NjEsNiArMjM4NjUsOCBAQAogCQkJCUIyNzdCNDAzMEIyMkYzN0MwMDA0QkVD
NiAvKiBHcmFwaGljc0NvbnRleHRDb2NvYS5tbSAqLywKIAkJCQkyRDBCNEFBOTE4REExQ0NEMDA0
MzRERTEgLyogSU9TdXJmYWNlLmggKi8sCiAJCQkJMkQwQjRBQUExOERBMUNDRDAwNDM0REUxIC8q
IElPU3VyZmFjZS5tbSAqLywKKwkJCQlDMTEzRUJEOTIwRkZBNkEzMDBENDdCQ0EgLyogSU9TdXJm
YWNlTWFuYWdlci5jcHAgKi8sCisJCQkJQzExM0VCRDYyMEZGQTUwMjAwRDQ3QkNBIC8qIElPU3Vy
ZmFjZU1hbmFnZXIuaCAqLywKIAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJm
YWNlUG9vbENvY29hLm1tICovLAogCQkJCTUyNjcyNEYyMUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmggKi8sCiAJCQkJNTI2NzI0RjExQ0IyRkRGNjAwNzU5
NzREIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0gKi8sCkBAIC0yODM4NCw2ICsy
ODM5MCw3IEBACiAJCQkJQjI3NTM1NzYwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVIYXNoLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxMTMxMENGMTIwQkE0QTFCMDA2NUE4RDAgLyogSW52YWxpZGF0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDBCNEFBQjE4REExQ0NEMDA0MzRERTEgLyogSU9T
dXJmYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMTEzRUJEODIwRkZBNTBCMDBENDdCQ0EgLyog
SU9TdXJmYWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMyMUU1N0QxODNFRDFGRjAw
MUMyODlEIC8qIElPU3VyZmFjZVBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMjQ3RTM4MUZF
QTVGODYwMDhDMDhDRSAvKiBJdGVyYXRpb25Db21wb3NpdGVPcGVyYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMzBEOTg0MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMTQ2MSw2ICszMTQ2OCw3IEBACiAJCQkJMDczNjdERTAxNzJD
QTY4MjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkUxNkM1OTQxN0NGRTE3MjAwODUyQzA0IC8qIEluYmFuZFdlYlZU
VFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJC
RTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTEzRUJEQTIw
RkZBNkEzMDBENDdCQ0EgLyogSU9TdXJmYWNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MzhFQzkzRTFGOTlCRjVBMDA0RDIyQTggLyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzVDNDc3MDA5QUM0RDczMDBBNkFBQjQgLyogS2V5
RXZlbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEzQjEg
LyogTGVnYWN5Q0RNLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cAkocmV2aXNpb24gMjMzOTE0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCwxMCBAQAogI2luY2x1ZGUgIkRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlci5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiSU9T
dXJmYWNlTWFuYWdlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTUxMCw2ICs1MTQsMTAgQEAgdm9pZCBDaHJvbWU6Ondp
bmRvd1NjcmVlbkRpZENoYW5nZShQbGF0ZgogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkp
CiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRp
c3BsYXlJRCk7CiAgICAgfQorICAgIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBS
T0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIElPU3VyZmFjZU1hbmFnZXI6Om1hbmFn
ZXIoKS51cGRhdGVEaXNwbGF5TWFzayhkaXNwbGF5SUQsIHRoaXMpOworI2VuZGlmCiB9CiAKIC8v
IC0tLS0tLS0tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9J
T1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjMzOTE0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDkgKzM5LDEwIEBAIGNsYXNzIFRleHRTdHJlYW07CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEhvc3RXaW5kb3c7Ci0gICAgCisKIGNsYXNzIElPU3VyZmFjZSBmaW5hbCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgZnJpZW5kIGNsYXNzIElPU3VyZmFjZU1hbmFnZXI7
CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBGb3JtYXQgewogICAgICAgICBSR0JBLApAQCAtOTMs
NiArOTQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
IGNyZWF0ZUZyb21JbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+KTsKICNl
bmRpZgogCisgICAgV0VCQ09SRV9FWFBPUlQgfklPU3VyZmFjZSgpOworICAgIAogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIG1vdmVUb1Bvb2woc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4mJik7CiAKICAgICBzdGF0aWMgSW50U2l6ZSBtYXhpbXVtU2l6ZSgpOwpAQCAtMTU0LDYgKzE1
Nyw4IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBjb250ZXh0U2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dFNpemU7IH0KICAgICB2b2lkIHNldENvbnRleHRTaXplKEludFNpemUpOwogCisg
ICAgdm9pZCBzZXREaXNwbGF5TWFzayh1aW50MzJfdCk7CisgICAgCiAgICAgUmV0YWluUHRyPENH
Q29sb3JTcGFjZVJlZj4gbV9jb2xvclNwYWNlOwogICAgIEludFNpemUgbV9zaXplOwogICAgIElu
dFNpemUgbV9jb250ZXh0U2l6ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0lPU3VyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHJldmlzaW9uIDIzMzkxNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQzRC5o
IgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbXBvcnQgIklPU3VyZmFjZU1hbmFn
ZXIuaCIKICNpbXBvcnQgIklPU3VyZmFjZVBvb2wuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgi
CiAjaW1wb3J0ICJJbWFnZUJ1ZmZlckRhdGFDRy5oIgpAQCAtMjE4LDYgKzIxOSw4IEBAIElPU3Vy
ZmFjZTo6SU9TdXJmYWNlKEludFNpemUgc2l6ZSwgSW50U2kKICAgICAgICAgbV90b3RhbEJ5dGVz
ID0gSU9TdXJmYWNlR2V0QWxsb2NTaXplKG1fc3VyZmFjZS5nZXQoKSk7CiAgICAgZWxzZQogICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihMYXllcnMsICJTdXJmYWNlIGNyZWF0aW9uIGZhaWxlZCBm
b3Igc2l6ZTogKCVkICVkKSBhbmQgZm9ybWF0OiAoJWQpIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpLCBmb3JtYXQpOworICAgIAorICAgIElPU3VyZmFjZU1hbmFnZXI6Om1hbmFnZXIoKS5h
ZGRTdXJmYWNlKCp0aGlzKTsKIH0KIAogSU9TdXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVm
IHN1cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQpAQCAtMjI2LDYgKzIyOSwxMiBA
QCBJT1N1cmZhY2U6OklPU3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjCiB7CiAgICAgbV9zaXpl
ID0gSW50U2l6ZShJT1N1cmZhY2VHZXRXaWR0aChzdXJmYWNlKSwgSU9TdXJmYWNlR2V0SGVpZ2h0
KHN1cmZhY2UpKTsKICAgICBtX3RvdGFsQnl0ZXMgPSBJT1N1cmZhY2VHZXRBbGxvY1NpemUoc3Vy
ZmFjZSk7CisgICAgSU9TdXJmYWNlTWFuYWdlcjo6bWFuYWdlcigpLmFkZFN1cmZhY2UoKnRoaXMp
OworfQorCitJT1N1cmZhY2U6On5JT1N1cmZhY2UoKQoreworICAgIElPU3VyZmFjZU1hbmFnZXI6
Om1hbmFnZXIoKS5yZW1vdmVTdXJmYWNlKCp0aGlzKTsKIH0KIAogSW50U2l6ZSBJT1N1cmZhY2U6
Om1heGltdW1TaXplKCkKQEAgLTMwNCw4ICszMTMsOSBAQCBDR0NvbnRleHRSZWYgSU9TdXJmYWNl
OjplbnN1cmVQbGF0Zm9ybUNvCiAgICAgaWYgKGF1dG8gZGlzcGxheU1hc2sgPSBwcmltYXJ5T3Bl
bkdMRGlzcGxheU1hc2soKSkgewogICAgICAgICBpZiAoaG9zdFdpbmRvdyAmJiBob3N0V2luZG93
LT5kaXNwbGF5SUQoKSkKICAgICAgICAgICAgIGRpc3BsYXlNYXNrID0gZGlzcGxheU1hc2tGb3JE
aXNwbGF5KGhvc3RXaW5kb3ctPmRpc3BsYXlJRCgpKTsKLSAgICAgICAgQ0dJT1N1cmZhY2VDb250
ZXh0U2V0RGlzcGxheU1hc2sobV9jZ0NvbnRleHQuZ2V0KCksIGRpc3BsYXlNYXNrKTsKKyAgICAg
ICAgc2V0RGlzcGxheU1hc2soZGlzcGxheU1hc2spOwogICAgIH0KKyAgICBJT1N1cmZhY2VNYW5h
Z2VyOjptYW5hZ2VyKCkuc2V0SG9zdFdpbmRvdygqdGhpcywgaG9zdFdpbmRvdyk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKICNlbmRpZgpAQCAtNDUzLDYgKzQ2MywxNCBA
QCB2b2lkIElPU3VyZmFjZTo6bWlncmF0ZUNvbG9yU3BhY2VUb1Byb3BlCiAgICAgSU9TdXJmYWNl
U2V0VmFsdWUobV9zdXJmYWNlLmdldCgpLCBrSU9TdXJmYWNlQ29sb3JTcGFjZSwgY29sb3JTcGFj
ZVByb3BlcnRpZXMuZ2V0KCkpOwogfQogCit2b2lkIElPU3VyZmFjZTo6c2V0RGlzcGxheU1hc2so
dWludDMyX3QgZGlzcGxheU1hc2spCit7CisgICAgQVNTRVJUKG1fY2dDb250ZXh0KTsKKyAgICBp
ZiAoIW1fY2dDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQ0dJT1N1cmZhY2VDb250ZXh0
U2V0RGlzcGxheU1hc2sobV9jZ0NvbnRleHQuZ2V0KCksIGRpc3BsYXlNYXNrKTsKK30KKwogc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIElPU3VyZmFjZTo6Rm9y
bWF0IGZvcm1hdCkKIHsKICAgICBzd2l0Y2ggKGZvcm1hdCkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlTWFuYWdlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlTWFu
YWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJT1N1cmZhY2VNYW5hZ2VyLmgiCisKKyNpbmNsdWRl
ICJJT1N1cmZhY2UuaCIKKworI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIElPU3VyZmFjZU1hbmFnZXI6OnVwZGF0ZURpc3BsYXlNYXNrKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykK
K3sKKyAgICBhdXRvIGRpc3BsYXlNYXNrID0gZGlzcGxheU1hc2tGb3JEaXNwbGF5KGRpc3BsYXlJ
RCk7CisgICAgZm9yIChhdXRvIHN1cmZhY2UgOiBtX3N1cmZhY2VzKSB7CisgICAgICAgIGlmICht
X2hvc3RXaW5kb3dNYXAuY29udGFpbnMoc3VyZmFjZSkgJiYgbV9ob3N0V2luZG93TWFwLmdldChz
dXJmYWNlKSA9PSBob3N0V2luZG93KQorICAgICAgICAgICAgc3VyZmFjZS0+c2V0RGlzcGxheU1h
c2soZGlzcGxheU1hc2spOworICAgIH0KK30KKwordm9pZCBJT1N1cmZhY2VNYW5hZ2VyOjphZGRT
dXJmYWNlKElPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBBU1NFUlQoIW1fc3VyZmFjZXMuY29u
dGFpbnMoJnN1cmZhY2UpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fc3Vy
ZmFjZXMuYXBwZW5kKCZzdXJmYWNlKTsKK30KKwordm9pZCBJT1N1cmZhY2VNYW5hZ2VyOjpyZW1v
dmVTdXJmYWNlKElPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBBU1NFUlQobV9zdXJmYWNlcy5j
b250YWlucygmc3VyZmFjZSkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9z
dXJmYWNlcy5yZW1vdmVGaXJzdCgmc3VyZmFjZSk7Cit9CisKK3ZvaWQgSU9TdXJmYWNlTWFuYWdl
cjo6c2V0SG9zdFdpbmRvdyhJT1N1cmZhY2UmIHN1cmZhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3cpCit7CisgICAgQVNTRVJUKCFtX2hvc3RXaW5kb3dNYXAuY29udGFpbnMoJnN1cmZh
Y2UpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1faG9zdFdpbmRvd01hcC5z
ZXQoJnN1cmZhY2UsIGhvc3RXaW5kb3cpOworfQorCitJT1N1cmZhY2VNYW5hZ2VyJiBJT1N1cmZh
Y2VNYW5hZ2VyOjptYW5hZ2VyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SU9TdXJm
YWNlTWFuYWdlcj4gc19tYW5hZ2VyOworICAgIHJldHVybiBzX21hbmFnZXI7Cit9CisKK30KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZU1hbmFn
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2VNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCisKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIAorY2xhc3MgSU9TdXJmYWNlOworY2xhc3MgSG9zdFdpbmRvdzsKKwor
Y2xhc3MgSU9TdXJmYWNlTWFuYWdlciB7CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPElPU3Vy
ZmFjZU1hbmFnZXI+OworICAgIGZyaWVuZCBjbGFzcyBJT1N1cmZhY2U7CisKK3B1YmxpYzoKKyAg
ICB2b2lkIHVwZGF0ZURpc3BsYXlNYXNrKFBsYXRmb3JtRGlzcGxheUlELCBjb25zdCBIb3N0V2lu
ZG93Kik7CisKKyAgICBzdGF0aWMgSU9TdXJmYWNlTWFuYWdlciYgbWFuYWdlcigpOworICAgIAor
cHJpdmF0ZToKKyAgICBJT1N1cmZhY2VNYW5hZ2VyKCkgPSBkZWZhdWx0OworICAgICAgICAKKyAg
ICB2b2lkIGFkZFN1cmZhY2UoSU9TdXJmYWNlJik7CisgICAgdm9pZCByZW1vdmVTdXJmYWNlKElP
U3VyZmFjZSYpOworICAgIHZvaWQgc2V0SG9zdFdpbmRvdyhJT1N1cmZhY2UmLCBjb25zdCBIb3N0
V2luZG93Kik7CisKKyAgICBWZWN0b3I8SU9TdXJmYWNlKj4gbV9zdXJmYWNlczsKKyAgICBIYXNo
TWFwPElPU3VyZmFjZSosIGNvbnN0IEhvc3RXaW5kb3cqPiBtX2hvc3RXaW5kb3dNYXA7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345266</attachid>
            <date>2018-07-18 11:46:54 -0700</date>
            <delta_ts>2018-07-18 13:17:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187684-20180718114653.patch</filename>
            <type>text/plain</type>
            <size>15625</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzkxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA3LTE4ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJTyBzdXJmYWNlcyBzaG91
bGQgdXBkYXRlIHRoZSBkaXNwbGF5IG1hc2sgd2hlbiB0aGUgd2luZG93IGlzIG1vdmVkIHRvIGFu
b3RoZXIgc2NyZWVuLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg3Njg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ3JlYXRlIGEgbmV3IElPU3VyZmFjZU1hbmFnZXIgd2hpY2ggd2lsbCBrZWVwIGEgbGlz
dCBvZiBhbGwgSU8gc3VyZmFjZXMuIFdoZW4gdGhlIHNjcmVlbiBvZiBhIGhvc3Qgd2luZG93IGhh
cyBjaGFuZ2VkLAorICAgICAgICB1cGRhdGUgYWxsIElPIHN1cmZhY2VzIHdpdGggdGhlIG5ldyBk
aXNwbGF5IG1hc2suIFRoZSBJTyBzdXJmYWNlIG1hbmFnZXIga2VlcHMgYSBtYXBwaW5nIGJldHdl
ZW4gSU8gc3VyZmFjZSBjb250ZXh0CisgICAgICAgIGFuZCBob3N0IHdpbmRvdyBpbiBvcmRlciB0
byBrbm93IHdoaWNoIElPIHN1cmZhY2VzIHNob3VsZCBiZSB1cGRhdGVkLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cy4gVGhpcyByZXF1aXJlcyBhIGR1YWwgbW9uaXRvciBzZXR1cC4KKworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OndpbmRvd1NjcmVlbkRpZENoYW5n
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6SU9TdXJmYWNlOjpJT1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNl
Ojp+SU9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6ZW5zdXJlUGxhdGZv
cm1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6c2V0RGlzcGxheU1hc2sp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZU1hbmFnZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZU1hbmFnZXI6OnVwZGF0ZURpc3Bs
YXlNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZU1hbmFnZXI6OmFkZFN1cmZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlTWFuYWdlcjo6cmVtb3ZlU3VyZmFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2VNYW5hZ2VyOjpzZXRIb3N0V2luZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OklPU3VyZmFjZU1hbmFnZXI6Om1hbmFnZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZU1hbmFnZXIuaDogQWRkZWQuCisKIDIwMTgtMDct
MTggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgV29yZEJyZWFrOjpCcmVhayB0byBXb3JkQnJlYWs6OkJyZWFrV29yZApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjMzOTE0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zODc1LDYgKzM4NzUsOCBAQAogCQlDMEMwNTRD
RDExMThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8qIElETFBh
cnNlci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDMEYyQTQ0MTEzODY5QUFCMDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBGMkE0M0YxMzg2OUEyODAwNjZD
NTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDMTA1REE2NDBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5n
RGV0ZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMxMDVEQTYzMEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oICovOyB9
OworCQlDMTEzRUJEODIwRkZBNTBCMDBENDdCQ0EgLyogSU9TdXJmYWNlTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzExM0VCRDYyMEZGQTUw
MjAwRDQ3QkNBIC8qIElPU3VyZmFjZU1hbmFnZXIuaCAqLzsgfTsKKwkJQzExM0VCREEyMEZGQTZB
MzAwRDQ3QkNBIC8qIElPU3VyZmFjZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzExM0VCRDkyMEZGQTZBMzAwRDQ3QkNBIC8qIElPU3Vy
ZmFjZU1hbmFnZXIuY3BwICovOyB9OwogCQlDMUUxRDIzNjIwM0RGMTU0MDA1ODQ2NjUgLyogU2Ny
ZWVuUHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzFFMUQyMzUyMDNERjE1NDAwNTg0NjY1IC8qIFNjcmVlblByb3BlcnRpZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjAxNUMwQTFC
RTZGRUIyMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjAxNUMwOTFCRTZGRTJDMDA4MjIzODkgLyog
Rm9udFZhcmlhbnRCdWlsZGVyLmggKi87IH07CiAJCUMyMURGMkVBMUQ5RTRFOTkwMEY1QjI0QyAv
KiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyMURGMkU4MUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0
aW9uVmFsdWUuaCAqLzsgfTsKQEAgLTEzMDM4LDYgKzEzMDQwLDggQEAKIAkJQzBGMkE0M0YxMzg2
OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBwcmVwcm9j
ZXNzb3IucG07IHBhdGggPSBzY3JpcHRzL3ByZXByb2Nlc3Nvci5wbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzEwNURBNjEwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0Rl
dGVjdG9ySUNVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRF
bmNvZGluZ0RldGVjdG9ySUNVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzEw
NURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRFbmNvZGluZ0RldGVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxMTNFQkQ2MjBGRkE1MDIwMEQ0N0JDQSAvKiBJT1N1cmZh
Y2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElPU3VyZmFjZU1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzExM0VCRDkyMEZGQTZBMzAwRDQ3QkNBIC8qIElPU3VyZmFj
ZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSU9TdXJmYWNlTWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRTFEMjM1MjAzREYxNTQwMDU4NDY2NSAvKiBT
Y3JlZW5Qcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmVlblByb3BlcnRpZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIwMTVDMDkxQkU2RkUyQzAwODIyMzg5IC8qIEZv
bnRWYXJpYW50QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxREYyRTcxRDlFNEU5OTAwRjVCMjRDIC8q
IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDU1NGb250VmFyaWF0aW9uVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjM4NjEsNiArMjM4NjUsOCBAQAogCQkJCUIyNzdCNDAzMEIyMkYzN0MwMDA0QkVD
NiAvKiBHcmFwaGljc0NvbnRleHRDb2NvYS5tbSAqLywKIAkJCQkyRDBCNEFBOTE4REExQ0NEMDA0
MzRERTEgLyogSU9TdXJmYWNlLmggKi8sCiAJCQkJMkQwQjRBQUExOERBMUNDRDAwNDM0REUxIC8q
IElPU3VyZmFjZS5tbSAqLywKKwkJCQlDMTEzRUJEOTIwRkZBNkEzMDBENDdCQ0EgLyogSU9TdXJm
YWNlTWFuYWdlci5jcHAgKi8sCisJCQkJQzExM0VCRDYyMEZGQTUwMjAwRDQ3QkNBIC8qIElPU3Vy
ZmFjZU1hbmFnZXIuaCAqLywKIAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJm
YWNlUG9vbENvY29hLm1tICovLAogCQkJCTUyNjcyNEYyMUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmggKi8sCiAJCQkJNTI2NzI0RjExQ0IyRkRGNjAwNzU5
NzREIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0gKi8sCkBAIC0yODM4NCw2ICsy
ODM5MCw3IEBACiAJCQkJQjI3NTM1NzYwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVIYXNoLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxMTMxMENGMTIwQkE0QTFCMDA2NUE4RDAgLyogSW52YWxpZGF0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDBCNEFBQjE4REExQ0NEMDA0MzRERTEgLyogSU9T
dXJmYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMTEzRUJEODIwRkZBNTBCMDBENDdCQ0EgLyog
SU9TdXJmYWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMyMUU1N0QxODNFRDFGRjAw
MUMyODlEIC8qIElPU3VyZmFjZVBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMjQ3RTM4MUZF
QTVGODYwMDhDMDhDRSAvKiBJdGVyYXRpb25Db21wb3NpdGVPcGVyYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMzBEOTg0MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMTQ2MSw2ICszMTQ2OCw3IEBACiAJCQkJMDczNjdERTAxNzJD
QTY4MjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkUxNkM1OTQxN0NGRTE3MjAwODUyQzA0IC8qIEluYmFuZFdlYlZU
VFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJC
RTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTEzRUJEQTIw
RkZBNkEzMDBENDdCQ0EgLyogSU9TdXJmYWNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MzhFQzkzRTFGOTlCRjVBMDA0RDIyQTggLyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzVDNDc3MDA5QUM0RDczMDBBNkFBQjQgLyogS2V5
RXZlbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEzQjEg
LyogTGVnYWN5Q0RNLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cAkocmV2aXNpb24gMjMzOTE0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCwxMCBAQAogI2luY2x1ZGUgIkRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlci5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiSU9T
dXJmYWNlTWFuYWdlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTUxMCw2ICs1MTQsMTAgQEAgdm9pZCBDaHJvbWU6Ondp
bmRvd1NjcmVlbkRpZENoYW5nZShQbGF0ZgogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkp
CiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRp
c3BsYXlJRCk7CiAgICAgfQorICAgIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBS
T0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIElPU3VyZmFjZU1hbmFnZXI6Om1hbmFn
ZXIoKS51cGRhdGVEaXNwbGF5TWFzayhkaXNwbGF5SUQsIHRoaXMpOworI2VuZGlmCiB9CiAKIC8v
IC0tLS0tLS0tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9J
T1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjMzOTE0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDkgKzM5LDEwIEBAIGNsYXNzIFRleHRTdHJlYW07CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEhvc3RXaW5kb3c7Ci0gICAgCisKIGNsYXNzIElPU3VyZmFjZSBmaW5hbCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgZnJpZW5kIGNsYXNzIElPU3VyZmFjZU1hbmFnZXI7
CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBGb3JtYXQgewogICAgICAgICBSR0JBLApAQCAtOTMs
NiArOTQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
IGNyZWF0ZUZyb21JbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+KTsKICNl
bmRpZgogCisgICAgV0VCQ09SRV9FWFBPUlQgfklPU3VyZmFjZSgpOworICAgIAogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIG1vdmVUb1Bvb2woc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4mJik7CiAKICAgICBzdGF0aWMgSW50U2l6ZSBtYXhpbXVtU2l6ZSgpOwpAQCAtMTU0LDYgKzE1
Nyw4IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBjb250ZXh0U2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dFNpemU7IH0KICAgICB2b2lkIHNldENvbnRleHRTaXplKEludFNpemUpOwogCisg
ICAgdm9pZCBzZXREaXNwbGF5TWFzayh1aW50MzJfdCk7CisgICAgCiAgICAgUmV0YWluUHRyPENH
Q29sb3JTcGFjZVJlZj4gbV9jb2xvclNwYWNlOwogICAgIEludFNpemUgbV9zaXplOwogICAgIElu
dFNpemUgbV9jb250ZXh0U2l6ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0lPU3VyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHJldmlzaW9uIDIzMzkxNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQzRC5o
IgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbXBvcnQgIklPU3VyZmFjZU1hbmFn
ZXIuaCIKICNpbXBvcnQgIklPU3VyZmFjZVBvb2wuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgi
CiAjaW1wb3J0ICJJbWFnZUJ1ZmZlckRhdGFDRy5oIgpAQCAtMjE4LDYgKzIxOSw4IEBAIElPU3Vy
ZmFjZTo6SU9TdXJmYWNlKEludFNpemUgc2l6ZSwgSW50U2kKICAgICAgICAgbV90b3RhbEJ5dGVz
ID0gSU9TdXJmYWNlR2V0QWxsb2NTaXplKG1fc3VyZmFjZS5nZXQoKSk7CiAgICAgZWxzZQogICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihMYXllcnMsICJTdXJmYWNlIGNyZWF0aW9uIGZhaWxlZCBm
b3Igc2l6ZTogKCVkICVkKSBhbmQgZm9ybWF0OiAoJWQpIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpLCBmb3JtYXQpOworICAgIAorICAgIElPU3VyZmFjZU1hbmFnZXI6Om1hbmFnZXIoKS5h
ZGRTdXJmYWNlKCp0aGlzKTsKIH0KIAogSU9TdXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVm
IHN1cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQpAQCAtMjI2LDYgKzIyOSwxMiBA
QCBJT1N1cmZhY2U6OklPU3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjCiB7CiAgICAgbV9zaXpl
ID0gSW50U2l6ZShJT1N1cmZhY2VHZXRXaWR0aChzdXJmYWNlKSwgSU9TdXJmYWNlR2V0SGVpZ2h0
KHN1cmZhY2UpKTsKICAgICBtX3RvdGFsQnl0ZXMgPSBJT1N1cmZhY2VHZXRBbGxvY1NpemUoc3Vy
ZmFjZSk7CisgICAgSU9TdXJmYWNlTWFuYWdlcjo6bWFuYWdlcigpLmFkZFN1cmZhY2UoKnRoaXMp
OworfQorCitJT1N1cmZhY2U6On5JT1N1cmZhY2UoKQoreworICAgIElPU3VyZmFjZU1hbmFnZXI6
Om1hbmFnZXIoKS5yZW1vdmVTdXJmYWNlKCp0aGlzKTsKIH0KIAogSW50U2l6ZSBJT1N1cmZhY2U6
Om1heGltdW1TaXplKCkKQEAgLTMwNCw4ICszMTMsOSBAQCBDR0NvbnRleHRSZWYgSU9TdXJmYWNl
OjplbnN1cmVQbGF0Zm9ybUNvCiAgICAgaWYgKGF1dG8gZGlzcGxheU1hc2sgPSBwcmltYXJ5T3Bl
bkdMRGlzcGxheU1hc2soKSkgewogICAgICAgICBpZiAoaG9zdFdpbmRvdyAmJiBob3N0V2luZG93
LT5kaXNwbGF5SUQoKSkKICAgICAgICAgICAgIGRpc3BsYXlNYXNrID0gZGlzcGxheU1hc2tGb3JE
aXNwbGF5KGhvc3RXaW5kb3ctPmRpc3BsYXlJRCgpKTsKLSAgICAgICAgQ0dJT1N1cmZhY2VDb250
ZXh0U2V0RGlzcGxheU1hc2sobV9jZ0NvbnRleHQuZ2V0KCksIGRpc3BsYXlNYXNrKTsKKyAgICAg
ICAgc2V0RGlzcGxheU1hc2soZGlzcGxheU1hc2spOwogICAgIH0KKyAgICBJT1N1cmZhY2VNYW5h
Z2VyOjptYW5hZ2VyKCkuc2V0SG9zdFdpbmRvdygqdGhpcywgaG9zdFdpbmRvdyk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKICNlbmRpZgpAQCAtNDUzLDYgKzQ2MywxNCBA
QCB2b2lkIElPU3VyZmFjZTo6bWlncmF0ZUNvbG9yU3BhY2VUb1Byb3BlCiAgICAgSU9TdXJmYWNl
U2V0VmFsdWUobV9zdXJmYWNlLmdldCgpLCBrSU9TdXJmYWNlQ29sb3JTcGFjZSwgY29sb3JTcGFj
ZVByb3BlcnRpZXMuZ2V0KCkpOwogfQogCit2b2lkIElPU3VyZmFjZTo6c2V0RGlzcGxheU1hc2so
dWludDMyX3QgZGlzcGxheU1hc2spCit7CisgICAgQVNTRVJUKG1fY2dDb250ZXh0KTsKKyAgICBp
ZiAoIW1fY2dDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQ0dJT1N1cmZhY2VDb250ZXh0
U2V0RGlzcGxheU1hc2sobV9jZ0NvbnRleHQuZ2V0KCksIGRpc3BsYXlNYXNrKTsKK30KKwogc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIElPU3VyZmFjZTo6Rm9y
bWF0IGZvcm1hdCkKIHsKICAgICBzd2l0Y2ggKGZvcm1hdCkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlTWFuYWdlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlTWFu
YWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJT1N1cmZhY2VNYW5hZ2VyLmgiCisKKyNpbmNsdWRl
ICJJT1N1cmZhY2UuaCIKKworI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIElPU3VyZmFjZU1hbmFnZXI6OnVwZGF0ZURpc3BsYXlNYXNrKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykK
K3sKKyAgICBhdXRvIGRpc3BsYXlNYXNrID0gZGlzcGxheU1hc2tGb3JEaXNwbGF5KGRpc3BsYXlJ
RCk7CisgICAgZm9yIChhdXRvIHN1cmZhY2UgOiBtX3N1cmZhY2VzKSB7CisgICAgICAgIGlmICht
X2hvc3RXaW5kb3dNYXAuY29udGFpbnMoc3VyZmFjZSkgJiYgbV9ob3N0V2luZG93TWFwLmdldChz
dXJmYWNlKSA9PSBob3N0V2luZG93KQorICAgICAgICAgICAgc3VyZmFjZS0+c2V0RGlzcGxheU1h
c2soZGlzcGxheU1hc2spOworICAgIH0KK30KKwordm9pZCBJT1N1cmZhY2VNYW5hZ2VyOjphZGRT
dXJmYWNlKElPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBBU1NFUlQoIW1fc3VyZmFjZXMuY29u
dGFpbnMoJnN1cmZhY2UpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fc3Vy
ZmFjZXMuYXBwZW5kKCZzdXJmYWNlKTsKK30KKwordm9pZCBJT1N1cmZhY2VNYW5hZ2VyOjpyZW1v
dmVTdXJmYWNlKElPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBBU1NFUlQobV9zdXJmYWNlcy5j
b250YWlucygmc3VyZmFjZSkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9z
dXJmYWNlcy5yZW1vdmVGaXJzdCgmc3VyZmFjZSk7CisgICAgbV9ob3N0V2luZG93TWFwLnJlbW92
ZSgmc3VyZmFjZSk7Cit9CisKK3ZvaWQgSU9TdXJmYWNlTWFuYWdlcjo6c2V0SG9zdFdpbmRvdyhJ
T1N1cmZhY2UmIHN1cmZhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAg
QVNTRVJUKCFtX2hvc3RXaW5kb3dNYXAuY29udGFpbnMoJnN1cmZhY2UpKTsKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIG1faG9zdFdpbmRvd01hcC5zZXQoJnN1cmZhY2UsIGhvc3RX
aW5kb3cpOworfQorCitJT1N1cmZhY2VNYW5hZ2VyJiBJT1N1cmZhY2VNYW5hZ2VyOjptYW5hZ2Vy
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SU9TdXJmYWNlTWFuYWdlcj4gc19tYW5h
Z2VyOworICAgIHJldHVybiBzX21hbmFnZXI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZU1hbmFnZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2VNYW5hZ2Vy
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvSU9TdXJmYWNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAor
Y2xhc3MgSU9TdXJmYWNlOworY2xhc3MgSG9zdFdpbmRvdzsKKworY2xhc3MgSU9TdXJmYWNlTWFu
YWdlciB7CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPElPU3VyZmFjZU1hbmFnZXI+OworICAg
IGZyaWVuZCBjbGFzcyBJT1N1cmZhY2U7CisKK3B1YmxpYzoKKyAgICB2b2lkIHVwZGF0ZURpc3Bs
YXlNYXNrKFBsYXRmb3JtRGlzcGxheUlELCBjb25zdCBIb3N0V2luZG93Kik7CisKKyAgICBzdGF0
aWMgSU9TdXJmYWNlTWFuYWdlciYgbWFuYWdlcigpOworICAgIAorcHJpdmF0ZToKKyAgICBJT1N1
cmZhY2VNYW5hZ2VyKCkgPSBkZWZhdWx0OworICAgICAgICAKKyAgICB2b2lkIGFkZFN1cmZhY2Uo
SU9TdXJmYWNlJik7CisgICAgdm9pZCByZW1vdmVTdXJmYWNlKElPU3VyZmFjZSYpOworICAgIHZv
aWQgc2V0SG9zdFdpbmRvdyhJT1N1cmZhY2UmLCBjb25zdCBIb3N0V2luZG93Kik7CisKKyAgICBW
ZWN0b3I8SU9TdXJmYWNlKj4gbV9zdXJmYWNlczsKKyAgICBIYXNoTWFwPElPU3VyZmFjZSosIGNv
bnN0IEhvc3RXaW5kb3cqPiBtX2hvc3RXaW5kb3dNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345275</attachid>
            <date>2018-07-18 13:17:01 -0700</date>
            <delta_ts>2020-12-11 13:57:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187684-20180718131701.patch</filename>
            <type>text/plain</type>
            <size>15668</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzkxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA3LTE4ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJTyBzdXJmYWNlcyBzaG91
bGQgdXBkYXRlIHRoZSBkaXNwbGF5IG1hc2sgd2hlbiB0aGUgd2luZG93IGlzIG1vdmVkIHRvIGFu
b3RoZXIgc2NyZWVuLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg3Njg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ3JlYXRlIGEgbmV3IElPU3VyZmFjZU1hbmFnZXIgd2hpY2ggd2lsbCBrZWVwIGEgbGlz
dCBvZiBhbGwgSU8gc3VyZmFjZXMuIFdoZW4gdGhlIHNjcmVlbiBvZiBhIGhvc3Qgd2luZG93IGhh
cyBjaGFuZ2VkLAorICAgICAgICB1cGRhdGUgYWxsIElPIHN1cmZhY2VzIHdpdGggdGhlIG5ldyBk
aXNwbGF5IG1hc2suIFRoZSBJTyBzdXJmYWNlIG1hbmFnZXIga2VlcHMgYSBtYXBwaW5nIGJldHdl
ZW4gSU8gc3VyZmFjZSBjb250ZXh0CisgICAgICAgIGFuZCBob3N0IHdpbmRvdyBpbiBvcmRlciB0
byBrbm93IHdoaWNoIElPIHN1cmZhY2VzIHNob3VsZCBiZSB1cGRhdGVkLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cy4gVGhpcyByZXF1aXJlcyBhIGR1YWwgbW9uaXRvciBzZXR1cC4KKworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OndpbmRvd1NjcmVlbkRpZENoYW5n
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6SU9TdXJmYWNlOjpJT1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNl
Ojp+SU9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6ZW5zdXJlUGxhdGZv
cm1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6c2V0RGlzcGxheU1hc2sp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZU1hbmFnZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZU1hbmFnZXI6OnVwZGF0ZURpc3Bs
YXlNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZU1hbmFnZXI6OmFkZFN1cmZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlTWFuYWdlcjo6cmVtb3ZlU3VyZmFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2VNYW5hZ2VyOjpzZXRIb3N0V2luZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OklPU3VyZmFjZU1hbmFnZXI6Om1hbmFnZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZU1hbmFnZXIuaDogQWRkZWQuCisKIDIwMTgtMDct
MTggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgV29yZEJyZWFrOjpCcmVhayB0byBXb3JkQnJlYWs6OkJyZWFrV29yZApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjMzOTE0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zODc1LDYgKzM4NzUsOCBAQAogCQlDMEMwNTRD
RDExMThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8qIElETFBh
cnNlci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDMEYyQTQ0MTEzODY5QUFCMDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBGMkE0M0YxMzg2OUEyODAwNjZD
NTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDMTA1REE2NDBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5n
RGV0ZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMxMDVEQTYzMEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oICovOyB9
OworCQlDMTEzRUJEODIwRkZBNTBCMDBENDdCQ0EgLyogSU9TdXJmYWNlTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzExM0VCRDYyMEZGQTUw
MjAwRDQ3QkNBIC8qIElPU3VyZmFjZU1hbmFnZXIuaCAqLzsgfTsKKwkJQzExM0VCREEyMEZGQTZB
MzAwRDQ3QkNBIC8qIElPU3VyZmFjZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzExM0VCRDkyMEZGQTZBMzAwRDQ3QkNBIC8qIElPU3Vy
ZmFjZU1hbmFnZXIuY3BwICovOyB9OwogCQlDMUUxRDIzNjIwM0RGMTU0MDA1ODQ2NjUgLyogU2Ny
ZWVuUHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzFFMUQyMzUyMDNERjE1NDAwNTg0NjY1IC8qIFNjcmVlblByb3BlcnRpZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjAxNUMwQTFC
RTZGRUIyMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjAxNUMwOTFCRTZGRTJDMDA4MjIzODkgLyog
Rm9udFZhcmlhbnRCdWlsZGVyLmggKi87IH07CiAJCUMyMURGMkVBMUQ5RTRFOTkwMEY1QjI0QyAv
KiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyMURGMkU4MUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0
aW9uVmFsdWUuaCAqLzsgfTsKQEAgLTEzMDM4LDYgKzEzMDQwLDggQEAKIAkJQzBGMkE0M0YxMzg2
OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBwcmVwcm9j
ZXNzb3IucG07IHBhdGggPSBzY3JpcHRzL3ByZXByb2Nlc3Nvci5wbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzEwNURBNjEwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0Rl
dGVjdG9ySUNVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRF
bmNvZGluZ0RldGVjdG9ySUNVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzEw
NURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRFbmNvZGluZ0RldGVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxMTNFQkQ2MjBGRkE1MDIwMEQ0N0JDQSAvKiBJT1N1cmZh
Y2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElPU3VyZmFjZU1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzExM0VCRDkyMEZGQTZBMzAwRDQ3QkNBIC8qIElPU3VyZmFj
ZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSU9TdXJmYWNlTWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRTFEMjM1MjAzREYxNTQwMDU4NDY2NSAvKiBT
Y3JlZW5Qcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmVlblByb3BlcnRpZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIwMTVDMDkxQkU2RkUyQzAwODIyMzg5IC8qIEZv
bnRWYXJpYW50QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxREYyRTcxRDlFNEU5OTAwRjVCMjRDIC8q
IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDU1NGb250VmFyaWF0aW9uVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjM4NjEsNiArMjM4NjUsOCBAQAogCQkJCUIyNzdCNDAzMEIyMkYzN0MwMDA0QkVD
NiAvKiBHcmFwaGljc0NvbnRleHRDb2NvYS5tbSAqLywKIAkJCQkyRDBCNEFBOTE4REExQ0NEMDA0
MzRERTEgLyogSU9TdXJmYWNlLmggKi8sCiAJCQkJMkQwQjRBQUExOERBMUNDRDAwNDM0REUxIC8q
IElPU3VyZmFjZS5tbSAqLywKKwkJCQlDMTEzRUJEOTIwRkZBNkEzMDBENDdCQ0EgLyogSU9TdXJm
YWNlTWFuYWdlci5jcHAgKi8sCisJCQkJQzExM0VCRDYyMEZGQTUwMjAwRDQ3QkNBIC8qIElPU3Vy
ZmFjZU1hbmFnZXIuaCAqLywKIAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJm
YWNlUG9vbENvY29hLm1tICovLAogCQkJCTUyNjcyNEYyMUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmggKi8sCiAJCQkJNTI2NzI0RjExQ0IyRkRGNjAwNzU5
NzREIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0gKi8sCkBAIC0yODM4NCw2ICsy
ODM5MCw3IEBACiAJCQkJQjI3NTM1NzYwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVIYXNoLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxMTMxMENGMTIwQkE0QTFCMDA2NUE4RDAgLyogSW52YWxpZGF0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDBCNEFBQjE4REExQ0NEMDA0MzRERTEgLyogSU9T
dXJmYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMTEzRUJEODIwRkZBNTBCMDBENDdCQ0EgLyog
SU9TdXJmYWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMyMUU1N0QxODNFRDFGRjAw
MUMyODlEIC8qIElPU3VyZmFjZVBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMjQ3RTM4MUZF
QTVGODYwMDhDMDhDRSAvKiBJdGVyYXRpb25Db21wb3NpdGVPcGVyYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMzBEOTg0MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMTQ2MSw2ICszMTQ2OCw3IEBACiAJCQkJMDczNjdERTAxNzJD
QTY4MjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkUxNkM1OTQxN0NGRTE3MjAwODUyQzA0IC8qIEluYmFuZFdlYlZU
VFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJC
RTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTEzRUJEQTIw
RkZBNkEzMDBENDdCQ0EgLyogSU9TdXJmYWNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MzhFQzkzRTFGOTlCRjVBMDA0RDIyQTggLyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzVDNDc3MDA5QUM0RDczMDBBNkFBQjQgLyogS2V5
RXZlbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEzQjEg
LyogTGVnYWN5Q0RNLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cAkocmV2aXNpb24gMjMzOTE0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCwxMCBAQAogI2luY2x1ZGUgIkRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlci5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiSU9T
dXJmYWNlTWFuYWdlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTUxMCw2ICs1MTQsMTAgQEAgdm9pZCBDaHJvbWU6Ondp
bmRvd1NjcmVlbkRpZENoYW5nZShQbGF0ZgogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkp
CiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRp
c3BsYXlJRCk7CiAgICAgfQorICAgIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBS
T0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIElPU3VyZmFjZU1hbmFnZXI6Om1hbmFn
ZXIoKS51cGRhdGVEaXNwbGF5TWFzayhkaXNwbGF5SUQsIHRoaXMpOworI2VuZGlmCiB9CiAKIC8v
IC0tLS0tLS0tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9J
T1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjMzOTE0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDkgKzM5LDEwIEBAIGNsYXNzIFRleHRTdHJlYW07CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEhvc3RXaW5kb3c7Ci0gICAgCisKIGNsYXNzIElPU3VyZmFjZSBmaW5hbCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgZnJpZW5kIGNsYXNzIElPU3VyZmFjZU1hbmFnZXI7
CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBGb3JtYXQgewogICAgICAgICBSR0JBLApAQCAtOTMs
NiArOTQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
IGNyZWF0ZUZyb21JbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+KTsKICNl
bmRpZgogCisgICAgV0VCQ09SRV9FWFBPUlQgfklPU3VyZmFjZSgpOworICAgIAogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIG1vdmVUb1Bvb2woc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4mJik7CiAKICAgICBzdGF0aWMgSW50U2l6ZSBtYXhpbXVtU2l6ZSgpOwpAQCAtMTU0LDYgKzE1
Nyw4IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBjb250ZXh0U2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dFNpemU7IH0KICAgICB2b2lkIHNldENvbnRleHRTaXplKEludFNpemUpOwogCisg
ICAgdm9pZCBzZXREaXNwbGF5TWFzayh1aW50MzJfdCk7CisgICAgCiAgICAgUmV0YWluUHRyPENH
Q29sb3JTcGFjZVJlZj4gbV9jb2xvclNwYWNlOwogICAgIEludFNpemUgbV9zaXplOwogICAgIElu
dFNpemUgbV9jb250ZXh0U2l6ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0lPU3VyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHJldmlzaW9uIDIzMzkxNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQzRC5o
IgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbXBvcnQgIklPU3VyZmFjZU1hbmFn
ZXIuaCIKICNpbXBvcnQgIklPU3VyZmFjZVBvb2wuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgi
CiAjaW1wb3J0ICJJbWFnZUJ1ZmZlckRhdGFDRy5oIgpAQCAtMjE4LDYgKzIxOSw4IEBAIElPU3Vy
ZmFjZTo6SU9TdXJmYWNlKEludFNpemUgc2l6ZSwgSW50U2kKICAgICAgICAgbV90b3RhbEJ5dGVz
ID0gSU9TdXJmYWNlR2V0QWxsb2NTaXplKG1fc3VyZmFjZS5nZXQoKSk7CiAgICAgZWxzZQogICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihMYXllcnMsICJTdXJmYWNlIGNyZWF0aW9uIGZhaWxlZCBm
b3Igc2l6ZTogKCVkICVkKSBhbmQgZm9ybWF0OiAoJWQpIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpLCBmb3JtYXQpOworICAgIAorICAgIElPU3VyZmFjZU1hbmFnZXI6Om1hbmFnZXIoKS5h
ZGRTdXJmYWNlKCp0aGlzKTsKIH0KIAogSU9TdXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVm
IHN1cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQpAQCAtMjI2LDYgKzIyOSwxMiBA
QCBJT1N1cmZhY2U6OklPU3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjCiB7CiAgICAgbV9zaXpl
ID0gSW50U2l6ZShJT1N1cmZhY2VHZXRXaWR0aChzdXJmYWNlKSwgSU9TdXJmYWNlR2V0SGVpZ2h0
KHN1cmZhY2UpKTsKICAgICBtX3RvdGFsQnl0ZXMgPSBJT1N1cmZhY2VHZXRBbGxvY1NpemUoc3Vy
ZmFjZSk7CisgICAgSU9TdXJmYWNlTWFuYWdlcjo6bWFuYWdlcigpLmFkZFN1cmZhY2UoKnRoaXMp
OworfQorCitJT1N1cmZhY2U6On5JT1N1cmZhY2UoKQoreworICAgIElPU3VyZmFjZU1hbmFnZXI6
Om1hbmFnZXIoKS5yZW1vdmVTdXJmYWNlKCp0aGlzKTsKIH0KIAogSW50U2l6ZSBJT1N1cmZhY2U6
Om1heGltdW1TaXplKCkKQEAgLTMwNCw4ICszMTMsOSBAQCBDR0NvbnRleHRSZWYgSU9TdXJmYWNl
OjplbnN1cmVQbGF0Zm9ybUNvCiAgICAgaWYgKGF1dG8gZGlzcGxheU1hc2sgPSBwcmltYXJ5T3Bl
bkdMRGlzcGxheU1hc2soKSkgewogICAgICAgICBpZiAoaG9zdFdpbmRvdyAmJiBob3N0V2luZG93
LT5kaXNwbGF5SUQoKSkKICAgICAgICAgICAgIGRpc3BsYXlNYXNrID0gZGlzcGxheU1hc2tGb3JE
aXNwbGF5KGhvc3RXaW5kb3ctPmRpc3BsYXlJRCgpKTsKLSAgICAgICAgQ0dJT1N1cmZhY2VDb250
ZXh0U2V0RGlzcGxheU1hc2sobV9jZ0NvbnRleHQuZ2V0KCksIGRpc3BsYXlNYXNrKTsKKyAgICAg
ICAgc2V0RGlzcGxheU1hc2soZGlzcGxheU1hc2spOwogICAgIH0KKyAgICBJT1N1cmZhY2VNYW5h
Z2VyOjptYW5hZ2VyKCkuc2V0SG9zdFdpbmRvdygqdGhpcywgaG9zdFdpbmRvdyk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKICNlbmRpZgpAQCAtNDUzLDYgKzQ2MywxNCBA
QCB2b2lkIElPU3VyZmFjZTo6bWlncmF0ZUNvbG9yU3BhY2VUb1Byb3BlCiAgICAgSU9TdXJmYWNl
U2V0VmFsdWUobV9zdXJmYWNlLmdldCgpLCBrSU9TdXJmYWNlQ29sb3JTcGFjZSwgY29sb3JTcGFj
ZVByb3BlcnRpZXMuZ2V0KCkpOwogfQogCit2b2lkIElPU3VyZmFjZTo6c2V0RGlzcGxheU1hc2so
dWludDMyX3QgZGlzcGxheU1hc2spCit7CisgICAgQVNTRVJUKG1fY2dDb250ZXh0KTsKKyAgICBp
ZiAoIW1fY2dDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQ0dJT1N1cmZhY2VDb250ZXh0
U2V0RGlzcGxheU1hc2sobV9jZ0NvbnRleHQuZ2V0KCksIGRpc3BsYXlNYXNrKTsKK30KKwogc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIElPU3VyZmFjZTo6Rm9y
bWF0IGZvcm1hdCkKIHsKICAgICBzd2l0Y2ggKGZvcm1hdCkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlTWFuYWdlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlTWFu
YWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJT1N1cmZhY2VNYW5hZ2VyLmgiCisKKyNpbmNsdWRl
ICJJT1N1cmZhY2UuaCIKKworI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIElPU3VyZmFjZU1hbmFnZXI6OnVwZGF0ZURpc3BsYXlNYXNrKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykK
K3sKKyAgICBhdXRvIGRpc3BsYXlNYXNrID0gZGlzcGxheU1hc2tGb3JEaXNwbGF5KGRpc3BsYXlJ
RCk7CisgICAgZm9yIChhdXRvIHN1cmZhY2UgOiBtX3N1cmZhY2VzKSB7CisgICAgICAgIGF1dG8g
aXRlcmF0b3IgPSBtX2hvc3RXaW5kb3dNYXAuZmluZChzdXJmYWNlKTsKKyAgICAgICAgaWYgKGl0
ZXJhdG9yICE9IG1faG9zdFdpbmRvd01hcC5lbmQoKSAmJiBpdGVyYXRvci0+dmFsdWUgPT0gaG9z
dFdpbmRvdykKKyAgICAgICAgICAgIHN1cmZhY2UtPnNldERpc3BsYXlNYXNrKGRpc3BsYXlNYXNr
KTsKKyAgICB9Cit9CisKK3ZvaWQgSU9TdXJmYWNlTWFuYWdlcjo6YWRkU3VyZmFjZShJT1N1cmZh
Y2UmIHN1cmZhY2UpCit7CisgICAgQVNTRVJUKCFtX3N1cmZhY2VzLmNvbnRhaW5zKCZzdXJmYWNl
KSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3N1cmZhY2VzLmFwcGVuZCgm
c3VyZmFjZSk7Cit9CisKK3ZvaWQgSU9TdXJmYWNlTWFuYWdlcjo6cmVtb3ZlU3VyZmFjZShJT1N1
cmZhY2UmIHN1cmZhY2UpCit7CisgICAgQVNTRVJUKG1fc3VyZmFjZXMuY29udGFpbnMoJnN1cmZh
Y2UpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fc3VyZmFjZXMucmVtb3Zl
Rmlyc3QoJnN1cmZhY2UpOworICAgIG1faG9zdFdpbmRvd01hcC5yZW1vdmUoJnN1cmZhY2UpOwor
fQorCit2b2lkIElPU3VyZmFjZU1hbmFnZXI6OnNldEhvc3RXaW5kb3coSU9TdXJmYWNlJiBzdXJm
YWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQoreworICAgIEFTU0VSVCghbV9ob3N0
V2luZG93TWFwLmNvbnRhaW5zKCZzdXJmYWNlKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBtX2hvc3RXaW5kb3dNYXAuc2V0KCZzdXJmYWNlLCBob3N0V2luZG93KTsKK30KKwor
SU9TdXJmYWNlTWFuYWdlciYgSU9TdXJmYWNlTWFuYWdlcjo6bWFuYWdlcigpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPElPU3VyZmFjZU1hbmFnZXI+IHNfbWFuYWdlcjsKKyAgICByZXR1
cm4gc19tYW5hZ2VyOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9JT1N1cmZhY2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlTWFuYWdlci5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZU1h
bmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQ
bGF0Zm9ybVNjcmVlbi5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIElPU3VyZmFj
ZTsKK2NsYXNzIEhvc3RXaW5kb3c7CisKK2NsYXNzIElPU3VyZmFjZU1hbmFnZXIgeworICAgIGZy
aWVuZCBOZXZlckRlc3Ryb3llZDxJT1N1cmZhY2VNYW5hZ2VyPjsKKyAgICBmcmllbmQgY2xhc3Mg
SU9TdXJmYWNlOworCitwdWJsaWM6CisgICAgdm9pZCB1cGRhdGVEaXNwbGF5TWFzayhQbGF0Zm9y
bURpc3BsYXlJRCwgY29uc3QgSG9zdFdpbmRvdyopOworCisgICAgc3RhdGljIElPU3VyZmFjZU1h
bmFnZXImIG1hbmFnZXIoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgSU9TdXJmYWNlTWFuYWdlcigp
ID0gZGVmYXVsdDsKKyAgICAgICAgCisgICAgdm9pZCBhZGRTdXJmYWNlKElPU3VyZmFjZSYpOwor
ICAgIHZvaWQgcmVtb3ZlU3VyZmFjZShJT1N1cmZhY2UmKTsKKyAgICB2b2lkIHNldEhvc3RXaW5k
b3coSU9TdXJmYWNlJiwgY29uc3QgSG9zdFdpbmRvdyopOworCisgICAgVmVjdG9yPElPU3VyZmFj
ZSo+IG1fc3VyZmFjZXM7CisgICAgSGFzaE1hcDxJT1N1cmZhY2UqLCBjb25zdCBIb3N0V2luZG93
Kj4gbV9ob3N0V2luZG93TWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>