<?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>126818</bug_id>
          
          <creation_ts>2014-01-11 11:06:17 -0800</creation_ts>
          <short_desc>Add AVKit fullscreen video interface - WebKit1.</short_desc>
          <delta_ts>2014-01-20 14:37:08 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Jones">jeremyj-wk</reporter>
          <assigned_to name="Jeremy Jones">jeremyj-wk</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>966810</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-01-11 11:06:17 -0800</bug_when>
    <thetext>Add AVKit fullscreen video interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966818</commentid>
    <comment_count>1</comment_count>
      <attachid>220941</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-01-11 11:39:43 -0800</bug_when>
    <thetext>Created attachment 220941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966823</commentid>
    <comment_count>2</comment_count>
      <attachid>220941</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-11 11:49:13 -0800</bug_when>
    <thetext>Comment on attachment 220941
Patch

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

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.h:42
&gt; +@property (assign) WebView *webView;

WebCore is not allowed to know about WebView&apos;s existence. If you need the host view, you should use some abstraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966893</commentid>
    <comment_count>3</comment_count>
      <attachid>220941</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-01-11 21:01:18 -0800</bug_when>
    <thetext>Comment on attachment 220941
Patch

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

r=me, with some nits. Go ahead and upload a new patch with a cq? flag and someone will cq+ it.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4916
&gt; +    if (document().settings() &amp;&amp; document().settings()-&gt;mediaPlaybackFullscreenAVKit()) {
&gt; +        if (m_platformLayerBorrowed)

I think the if (m_platformLayerBorrowed) check here is sufficient.

&gt;&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.h:42
&gt;&gt; +@property (assign) WebView *webView;
&gt; 
&gt; WebCore is not allowed to know about WebView&apos;s existence. If you need the host view, you should use some abstraction.

It looks like this is dead code.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:131
&gt; +        _mediaElement.get()-&gt;exitFullscreen();

RefPtr has an operator-&gt;, so no need to call .get() here.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:140
&gt; +        _mediaElement.get()-&gt;play();

Ditto.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:148
&gt; +        _mediaElement.get()-&gt;pause();

Ditto.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:156
&gt; +        _mediaElement.get()-&gt;togglePlayState();

Ditto.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:171
&gt; +            _mediaElement.get()-&gt;play();
&gt; +        else
&gt; +            _mediaElement.get()-&gt;pause();

Double ditto.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:183
&gt; +        ExceptionCode exceptionCode {};

ExceptionCode is an integer, so it can be initialized with `= 0`;

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:184
&gt; +        _mediaElement.get()-&gt;setCurrentTime(time, exceptionCode);

Ditto.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:190
&gt; +    NSTimeInterval anchorTimeStamp = ([self rate] == 0.f) ? NAN : [classAVValueTiming currentTimeStamp];

No need for the `.f`.  In fact, that conditional should be `![self rate]`.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:192
&gt; +      anchorTimeStamp:anchorTimeStamp rate:0];

Weird indenting here.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:251
&gt; +    self.playerLayer = (CALayer&lt;AVPlayerLayer&gt; *)_mediaElement.get()-&gt;borrowPlatformLayer();

Again, no need for .get().  This should have something like:

ASSERT([self.playerLayer isKindOfClass:classAVPlayerLayer]);

To ensure that we catch if anyone starts returning an unexpected layer type here.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:254
&gt; +    [self updateTimingWithCurrentTime:_mediaElement.get()-&gt;currentTime()];

No need for .get().

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:257
&gt; +        HTMLVideoElement *ve = toHTMLVideoElement(_mediaElement.get());

Please use a more descriptive variable name here, like &quot;videoElement&quot;.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:286
&gt; +        [self updateTimingWithCurrentTime:_mediaElement.get()-&gt;currentTime()];

No need for .get().

&gt; Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm:979
&gt; +#if PLATFORM(IOS)
&gt; +    if (Settings::mediaPlaybackFullscreenAVKit())
&gt; +        return isHTMLVideoElement(node);
&gt; +    else
&gt; +        return false;
&gt; +#else

Just to clean things up a little, this could be:

#if PLATFORM(IOS)
    if (!Settings::mediaPlaybackFullscreenAVKit())
        return false;
#endif
    return isHTMLVideoElement(node);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966896</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-11 21:07:38 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 220941 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220941&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.h:42
&gt; &gt; +@property (assign) WebView *webView;
&gt; 
&gt; WebCore is not allowed to know about WebView&apos;s existence. If you need the host view, you should use some abstraction.

Please don&apos;t land with this layering violation in place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966940</commentid>
    <comment_count>5</comment_count>
      <attachid>220941</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-12 05:00:12 -0800</bug_when>
    <thetext>Comment on attachment 220941
Patch

Attachment 220941 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/6052748294356992</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966980</commentid>
    <comment_count>6</comment_count>
      <attachid>220941</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-01-12 10:48:10 -0800</bug_when>
    <thetext>Comment on attachment 220941
Patch

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

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:247
&gt; +    self.loadedTimeRanges = @[ @0, @(duration) ];

We don&apos;t always have the entire file loaded. minTimeSeekable() and maxTimeSeekable() are probably what you want. This is probably fine for the initial patch, but please file a bug to fix it and include a &quot;FIXME:&quot; here that references the bug.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:275
&gt; +        self.maxTime = duration;

Is maxTime the maximum time loaded or the maximum time seekable? In either case, this isn&apos;t correct. Please file a bug and reference it here if you aren&apos;t going to fix it in this patch.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:280
&gt; +        self.loadedTimeRanges = @[
&gt; +            @0,
&gt; +            @(duration)
&gt; +        ];

Ditto the comment about loadedTimeRanges above.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:305
&gt; +    if ((self = [super init])) {

if (!(self = [super init]))
        return nil;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967528</commentid>
    <comment_count>7</comment_count>
      <attachid>221086</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-01-13 16:27:47 -0800</bug_when>
    <thetext>Created attachment 221086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967534</commentid>
    <comment_count>8</comment_count>
      <attachid>221087</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-01-13 16:32:06 -0800</bug_when>
    <thetext>Created attachment 221087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967614</commentid>
    <comment_count>9</comment_count>
      <attachid>221087</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2014-01-13 19:13:14 -0800</bug_when>
    <thetext>Comment on attachment 221087
Patch

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

&gt; Source/WebCore/page/Settings.cpp:101
&gt; +bool Settings::gMediaPlaybackFullscreenAVKit = false;

This name could be improved. &quot;gMediaPlayerFullscreenAVKitEnabled&quot;? or just &quot;gAVKitEnabled&quot;? Also, this should propagate across all the settings-related names in this patch.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.h:13
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS&apos;&apos; AND ANY

This is the wrong license to use. (What&apos;s Apple Computer, Inc?)

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:25
&gt; +

Ditto.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:162
&gt; +    return ([self rate] != 0.);

Remove parentheses, please.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:183
&gt; +        ExceptionCode exceptionCode {};

ExceptionCode ec = 0;

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:184
&gt; +        _mediaElement.get()-&gt;setCurrentTime(time, exceptionCode);

setCurrentTime() takes one parameter here...

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:265
&gt; +    Event *event = core(evnt);

Event* event.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:280
&gt; +        ];

Small enough to combine into one line without losing legibility.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:283
&gt; +            || event-&gt;type() == eventNames().ratechangeEvent)

I believe we indent 4 spaces, and not align the conditionals.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:305
&gt; +    if ((self = [super init])) {

Would be better to do an early return to get rid of a scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967634</commentid>
    <comment_count>10</comment_count>
      <attachid>221087</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-01-13 20:23:36 -0800</bug_when>
    <thetext>Comment on attachment 221087
Patch

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

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:131
&gt; +        _mediaElement.get()-&gt;exitFullscreen();

A Jer noted in the earlier review, RefPtr has an operator-&gt; so no need to call .get() here.

Here and throughout much of the rest of the patch.

&gt;&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:162
&gt;&gt; +    return ([self rate] != 0.);
&gt; 
&gt; Remove parentheses, please.

No need to compare against 0: &quot;return [self rate];&quot;

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:190
&gt; +    NSTimeInterval anchorTimeStamp = ([self rate] == 0.f) ? NAN : [classAVValueTiming currentTimeStamp];

No need for the &quot;.f&quot;: 

NSTimeInterval anchorTimeStamp = ![self rate] ? NAN : [classAVValueTiming currentTimeStamp];

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:247
&gt; +    self.loadedTimeRanges = @[ @0, @(duration) ];

This is wrong. Please file a bug about fixing it in a followup patch and include the bug number here in a &quot;FIXME:&quot; comment.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:251
&gt; +    self.playerLayer = (CALayer&lt;AVPlayerLayer&gt; *)_mediaElement.get()-&gt;borrowPlatformLayer();

As Jer noted before: &quot;ASSERT([self.playerLayer isKindOfClass:classAVPlayerLayer])&quot;

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:257
&gt; +        HTMLVideoElement *ve = toHTMLVideoElement(_mediaElement.get());

Letters are cheap, don&apos;t abbreviate: &quot;HTMLVideoElement *videoElement&quot;

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:279
&gt; +        self.loadedTimeRanges = @[
&gt; +            @0,
&gt; +            @(duration)

Ditto the comment above about adding a &quot;FIXME:&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968420</commentid>
    <comment_count>11</comment_count>
      <attachid>221290</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-01-15 11:52:11 -0800</bug_when>
    <thetext>Created attachment 221290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968425</commentid>
    <comment_count>12</comment_count>
      <attachid>221290</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-01-15 12:12:18 -0800</bug_when>
    <thetext>Comment on attachment 221290
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4883
&gt; +        if (document().settings() &amp;&amp; document().settings()-&gt;avKitEnabled()) {

This could be replaced with `document().page()-&gt;chrome().client().supportsFullscreenForNode(this)`, but this can be done in a follow-up patch.

In fact, you could remove the entire #if !PLATFORM(IOS) check, since the default chromeClient will answer true for HTMLMediaElements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968426</commentid>
    <comment_count>13</comment_count>
      <attachid>221290</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-01-15 12:26:27 -0800</bug_when>
    <thetext>Comment on attachment 221290
Patch

Attachment 221290 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/4701501385605120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968431</commentid>
    <comment_count>14</comment_count>
      <attachid>221290</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-01-15 12:45:13 -0800</bug_when>
    <thetext>Comment on attachment 221290
Patch

Attachment 221290 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/4890110579441664</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968527</commentid>
    <comment_count>15</comment_count>
      <attachid>221319</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-01-15 16:56:13 -0800</bug_when>
    <thetext>Created attachment 221319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968535</commentid>
    <comment_count>16</comment_count>
      <attachid>221319</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-15 17:09:44 -0800</bug_when>
    <thetext>Comment on attachment 221319
Patch

Attachment 221319 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/4749109487468544</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968536</commentid>
    <comment_count>17</comment_count>
      <attachid>221319</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-15 17:14:17 -0800</bug_when>
    <thetext>Comment on attachment 221319
Patch

Attachment 221319 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/5122859152179200</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968542</commentid>
    <comment_count>18</comment_count>
      <attachid>221319</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-01-15 17:23:43 -0800</bug_when>
    <thetext>Comment on attachment 221319
Patch

Attachment 221319 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/5671146624122880</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968548</commentid>
    <comment_count>19</comment_count>
      <attachid>221319</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-01-15 17:45:03 -0800</bug_when>
    <thetext>Comment on attachment 221319
Patch

Attachment 221319 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/5073698956509184</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968554</commentid>
    <comment_count>20</comment_count>
      <attachid>221319</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2014-01-15 18:19:57 -0800</bug_when>
    <thetext>Comment on attachment 221319
Patch

Attachment 221319 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/5837646936932352</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969027</commentid>
    <comment_count>21</comment_count>
      <attachid>221437</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-01-16 20:46:38 -0800</bug_when>
    <thetext>Created attachment 221437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969184</commentid>
    <comment_count>22</comment_count>
      <attachid>221437</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-01-17 11:42:38 -0800</bug_when>
    <thetext>Comment on attachment 221437
Patch

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

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:250
&gt; +    if (_mediaElement == mediaElement)
&gt; +        return;

You need to stash &quot;mediaElement&quot; in a local RefPtr since you use it twice, dereferencing a PassRefPtr nulls the internal ptr (see http://www.webkit.org/coding/RefPtr.html).

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:258
&gt; +        _mediaElement-&gt;removeEventListener(eventNames().durationchangeEvent, _listener.get(), false);
&gt; +        _mediaElement-&gt;removeEventListener(eventNames().pauseEvent, _listener.get(), false);
&gt; +        _mediaElement-&gt;removeEventListener(eventNames().playEvent, _listener.get(), false);
&gt; +        _mediaElement-&gt;removeEventListener(eventNames().ratechangeEvent, _listener.get(), false);
&gt; +        _mediaElement-&gt;removeEventListener(eventNames().timeupdateEvent, _listener.get(), false);

Do you need _listener.get(), it isn&apos;t necessary in the addEventListener() calls below?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969190</commentid>
    <comment_count>23</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-01-17 11:58:11 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 221437 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221437&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:250
&gt; &gt; +    if (_mediaElement == mediaElement)
&gt; &gt; +        return;
&gt; 
&gt; You need to stash &quot;mediaElement&quot; in a local RefPtr since you use it twice, dereferencing a PassRefPtr nulls the internal ptr (see http://www.webkit.org/coding/RefPtr.html).

Good catch. I&apos;ll fix this.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:258
&gt; &gt; +        _mediaElement-&gt;removeEventListener(eventNames().durationchangeEvent, _listener.get(), false);
&gt; &gt; +        _mediaElement-&gt;removeEventListener(eventNames().pauseEvent, _listener.get(), false);
&gt; &gt; +        _mediaElement-&gt;removeEventListener(eventNames().playEvent, _listener.get(), false);
&gt; &gt; +        _mediaElement-&gt;removeEventListener(eventNames().ratechangeEvent, _listener.get(), false);
&gt; &gt; +        _mediaElement-&gt;removeEventListener(eventNames().timeupdateEvent, _listener.get(), false);
&gt; 
&gt; Do you need _listener.get(), it isn&apos;t necessary in the addEventListener() calls below?

addEventListener takes a PassRefPtr, removeEventListener takes a naked pointer. Maybe so removes can happen during destruction?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969244</commentid>
    <comment_count>24</comment_count>
      <attachid>221437</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-01-17 13:30:02 -0800</bug_when>
    <thetext>Comment on attachment 221437
Patch

r=me.  Looks like you&apos;ve got all the bots passing, so whenever you&apos;re ready, just mark it as cq? and I&apos;ll cq+ it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969246</commentid>
    <comment_count>25</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-01-17 13:31:10 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 221437 [details])
&gt; r=me.  Looks like you&apos;ve got all the bots passing, so whenever you&apos;re ready, just mark it as cq? and I&apos;ll cq+ it.

Or you can put up another patch to address Eric&apos;s comments, but add the &quot;Reviewed by Jer Noble.&quot; string to the ChangeLog, and pass the &apos;-no-obselete&apos; flag to webkit-patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969300</commentid>
    <comment_count>26</comment_count>
      <attachid>221504</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-01-17 16:02:41 -0800</bug_when>
    <thetext>Created attachment 221504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970019</commentid>
    <comment_count>27</comment_count>
      <attachid>221504</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-20 14:37:04 -0800</bug_when>
    <thetext>Comment on attachment 221504
Patch

Clearing flags on attachment: 221504

Committed r162379: &lt;http://trac.webkit.org/changeset/162379&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970020</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-20 14:37:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220941</attachid>
            <date>2014-01-11 11:39:43 -0800</date>
            <delta_ts>2014-01-13 16:27:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126818-20140111113943.patch</filename>
            <type>text/plain</type>
            <size>37582</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxNzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMwYjMzM2VkYjFiNTk3
Y2ExNTkwZTkyZDZhOGI5NDk5NDFmM2EzYy4uNzNlMjQ0ZDFjNzk4NjZhZjIyYTA1MjAyMzYzNDNl
NmNlYTYzMjNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE0LTAxLTExICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVZLaXQgZnVsbHNj
cmVlbiB2aWRlbyBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjY4MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIG9ic2VydmFibGUgY2hhbmdlIGluIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgQWRkIGFi
aWxpdHkgZm9yIGZ1bGxzY3JlZW4gdG8gYm9ycm93IHRoZSBBVlBsYXllckxheWVyLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjptZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0
KToKKyAgICAgICAgQWRkIGEgZGlzYWJsZWQgc2V0dGluZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9y
dHNGdWxsc2NyZWVuKToKKyAgICAgICAgRW5hYmxlZCBmdWxsc2NyZWVuIGZvciBpT1MuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGluaXRd
KToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvcndhcmRpbmdUYXJnZXRGb3JTZWxlY3RvcjpdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNob3VsZERpc21pc3NGb3JEb25lXSk6
CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBwbGF5Ol0pOgorICAgICAgICAoLVtX
ZWJBVlBsYXllckNvbnRyb2xsZXIgcGF1c2U6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29u
dHJvbGxlciB0b2dnbGVQbGF5YmFjazpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9s
bGVyIGlzUGxheWluZ10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxh
eWluZzpdKToKKyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFs
dWVzQWZmZWN0aW5nUGxheWluZ10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIg
c2Vla1RvVGltZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHVwZGF0ZVRp
bWluZ1dpdGhDdXJyZW50VGltZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVy
IGVmZmVjdGl2ZVJhdGVdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNldE1l
ZGlhRWxlbWVudDpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGhhbmRsZUV2
ZW50Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToK
KyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAg
ICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0TWVkaWFFbGVtZW50Ol0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIG1lZGlhRWxlbWVudF0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjpd
KToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBleGl0RnVsbHNjcmVl
bl0pOgorICAgICAgICBBZGQgV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvciBIVE1MTWVkaWFFbGVt
ZW10IHRvIGludGVyZmFjZSB3aXRoIEFWUGxheWVyVmlld0NvbnRyb2xsZXIuCisKIDIwMTQtMDEt
MTAgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQdXNoIEluc3BlY3RvckFnZW50IGRvd24gaW50byBKU0MsIGdpdmUgSlNDIGFu
IEluc3BlY3RvckNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkZjNlNDk0NDAxYTI5OWMx
MGM0OWM4YTU1MGM1OTFmMTU5NTVjNzVmLi40N2RhYWFlMTUxNzY2OTA4ZTdiNGY5Yzg1ZDZlMmJi
MDAyZTM0OTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTQtMDEtMTEg
IEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBVktpdCBm
dWxsc2NyZWVuIHZpZGVvIGludGVyZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjgxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKToKKyAgICAgICAgRW5hYmxl
ICpGdWxsc2NyZWVuRm9yTm9kZSBmb3IgSFRNTE1lZGlhRWxlbWVudCBmb3IgaU9TCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxp
emVdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgbWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5B
VktpdF0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBzZXRNZWRpYVBsYXliYWNrRnVsbHNj
cmVlbkFWS2l0Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVm
ZXJlbmNlc0NoYW5nZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2VudGVyRnVsbHNjcmVlbkZv
ck5vZGU6V2ViQ29yZTo6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoK
KyAgICAgICAgQWRkIGEgZGlzYWJsZWQgcHJlZiBtZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0
LgorICAgICAgICBVc2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0IG9uIGlPUwor
CiAyMDE0LTAxLTEwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ2xlYW4gdXAgYXJjaGl0ZWN0dXJlcyBpbiB4Y2NvbmZpZyBmaWxlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCA2NTJkODEwYTMzNjFlODllNmE3OWFiYTdmNTJkODU3ZWJkYjZiZWE0Li4xZGNh
NzZmZGZkOTJlNTI5OGRjMmE2ZTQ5OWVlNjU1ZjE0NzYwZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtMjk1Myw3ICsyOTUzLDcgQEAgX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0
ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBUaW1lUmFuZ2VzRQogX19aTks3V2ViQ29y
ZTEwVGltZVJhbmdlczduZWFyZXN0RWQKICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAh
UExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShWSURFTykKIF9fWk5LN1dlYkNvcmUxNkhUTUxNZWRp
YUVsZW1lbnQ1ZW5kZWRFdgogX19aTks3V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDZwYXVzZWRF
dgogLm9iamNfY2xhc3NfbmFtZV9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzAx
YzRhYzE3ZmJjNGUwODMwM2VhYmY1ZGFlYjZkMzZkZTdhNzAwMC4uZjU0NGYxMTU5NjI3MmUxZjM1
NzgxM2UxNmZjYjcyMTUwYzdlZDA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3Miw2ICsxMjcyLDggQEAKIAkJM0YyQjMz
RUQxNjVBRjE1NjAwRTM5ODdDIC8qIERPTVdlYktpdENTU1ZpZXdwb3J0UnVsZUludGVybmFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjJCMzNFODE2
NUFGMTU1MDBFMzk4N0MgLyogRE9NV2ViS2l0Q1NTVmlld3BvcnRSdWxlSW50ZXJuYWwuaCAqLzsg
fTsKIAkJM0YyQjMzRUUxNjVBRjE1NjAwRTM5ODdDIC8qIEpTV2ViS2l0Q1NTVmlld3BvcnRSdWxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGMkIz
M0U5MTY1QUYxNTUwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgKi87IH07
CiAJCTNGMkIzM0VGMTY1QUYxNTYwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0YyQjMzRUEx
NjVBRjE1NTAwRTM5ODdDIC8qIEpTV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmggKi87IH07CisJCTNG
NDJCMzFEMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZL
aXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGNDJC
MzFCMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
aCAqLzsgfTsKKwkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDNGNDJCMzFDMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW0gKi87IH07CiAJCTNGRkZGOUE4MTU5RDlBNTUwMDIwQkJENSAvKiBX
ZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gM0ZGRkY5QTYxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdw
b3J0UnVsZS5jcHAgKi87IH07CiAJCTNGRkZGOUE5MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRD
U1NWaWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDNGRkZGOUE3MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUu
aCAqLzsgfTsKIAkJM0ZGRkY5QUQxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5bGVSZXNv
bHZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
RkZGRjlBQjE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcCAqLzsg
fTsKQEAgLTgxMjAsNiArODEyMiw4IEBACiAJCTNGMkIzM0U4MTY1QUYxNTUwMEUzOTg3QyAvKiBE
T01XZWJLaXRDU1NWaWV3cG9ydFJ1bGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzRjJCMzNFOTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRD
U1NWaWV3cG9ydFJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzRjJCMzNFQTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0Y0MkIzMUIxODgxMTkxQjAwMjc4QUFD
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaDsgcGF0
aCA9IGlvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJM0Y0MkIzMUMxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbTsgcGF0aCA9IGlv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTNGRkZGOUE2MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9y
dFJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NT
Vmlld3BvcnRSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0ZGRkY5QTcx
NTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJM0ZGRkY5QUIxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5
bGVSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3
cG9ydFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgw
MDIsNiArMTgwMDYsOCBAQAogCQkJCUZFMEQ4NEVBMTA0ODQzNkUwMDFBMTc5RSAvKiBXZWJFdmVu
dC5tbSAqLywKIAkJCQlBNTAyQzVERDEzMDQ5QjM1MDBGQzdENTMgLyogV2ViU2FmZUdDQWN0aXZp
dHlDYWxsYmFja0lPUy5oICovLAogCQkJCUMyQzRDQjFEMTYxQTEzMTIwMEQyMTREQSAvKiBXZWJT
YWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmggKi8sCisJCQkJM0Y0MkIzMUIxODgxMTkxQjAwMjc4
QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovLAorCQkJCTNGNDJC
MzFDMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0gKi8sCiAJCQkJRTQ1MzkwM0MwRUFGRDYzNzAwMzY5NUM4IC8qIFdpZGdldElPUy5tbSAqLywK
IAkJCSk7CiAJCQluYW1lID0gaW9zOwpAQCAtMjQ5NDEsNiArMjQ5NDcsNyBAQAogCQkJCUE5QzZF
NEY0MEQ3NDVFNDgwMDY0NDJFOSAvKiBQbHVnaW5EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NzIwNUFCQzEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBREExNDExMEUxQUU1RDkwMDAyM0VFNSAvKiBQbHVnaW5NYWluVGhyZWFkU2NoZWR1
bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzRjQyQjMxRDE4ODExOTFCMDAyNzhBQUMgLyogV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUUy
MTgzQTE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291cmNlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFBODc5OTAxMUNCRTg0NjAwM0M2NjRGIC8qIFBsdWdpblN0cmF0ZWd5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwQUZEQUMzRDEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2luVmlld0Jhc2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtMjg5MDQsNiArMjg5MTEsNyBAQAogCQkJCUIyMjI3QTkwMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMjIyN0E5MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUI1NDNCODU3MTdFQjc1OEYwMDNCRTkzQSAvKiBTVkdQcm9wZXJ0eUlu
Zm8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4QUFDIC8qIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIy
MjI3QTk2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyMjI3QTk5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBOUQwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1JlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYWFiODhjNDgxZjFlZjY1OWY0MmYxN2NmZDY2
MGQ0YjcwNzU1NWE4Yy4uMTdiNGNkMTQ3OGRkZDg5ZjYwMTIwNzA2ODVhOTFlOWYwM2MwNjFmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00ODUxLDcgKzQ4
NTEsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4oKQogICAgICAg
ICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJGdWxsc2NyZWVuRm9y
Tm9kZSh0aGlzKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0YmVn
aW5mdWxsc2NyZWVuRXZlbnQpOwogI2Vsc2UKLSAgICAgICAgaWYgKG1fcGxheWVyKQorICAgICAg
ICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpICYmIGRvY3VtZW50KCkuc2V0dGluZ3MoKS0+bWVk
aWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdCgpKSB7CisgICAgICAgICAgICBkb2N1bWVudCgpLnBh
Z2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAg
ICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGJlZ2luZnVsbHNjcmVl
bkV2ZW50KTsKKyAgICAgICAgfSBlbHNlIGlmIChtX3BsYXllcikKICAgICAgICAgICAgIG1fcGxh
eWVyLT5lbnRlckZ1bGxzY3JlZW4oKTsKICNlbmRpZgogICAgIH0KQEAgLTQ4NzksNyArNDg4Miwx
MCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKCkKICAgICAgICAgZG9j
dW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRGdWxsc2NyZWVuRm9yTm9kZSh0
aGlzKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0ZW5kZnVsbHNj
cmVlbkV2ZW50KTsKICNlbHNlCi0gICAgICAgIGlmIChtX3BsYXllcikKKyAgICAgICAgaWYgKGRv
Y3VtZW50KCkuc2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLnNldHRpbmdzKCktPm1lZGlhUGxheWJh
Y2tGdWxsc2NyZWVuQVZLaXQoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNo
cm9tZSgpLmNsaWVudCgpLmV4aXRGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAgICAgICAgICAg
IHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCk7Cisg
ICAgICAgIH0gZWxzZSBpZiAobV9wbGF5ZXIpCiAgICAgICAgICAgICBtX3BsYXllci0+ZXhpdEZ1
bGxzY3JlZW4oKTsKICNlbmRpZgogICAgIH0KQEAgLTQ5MDUsOCArNDkxMSwzMyBAQCBQbGF0Zm9y
bU1lZGlhIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTWVkaWEoKSBjb25zdAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRmb3JtTGF5ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVy
LT5wbGF0Zm9ybUxheWVyKCkgOiAwOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoZG9jdW1l
bnQoKS5zZXR0aW5ncygpICYmIGRvY3VtZW50KCkuc2V0dGluZ3MoKS0+bWVkaWFQbGF5YmFja0Z1
bGxzY3JlZW5BVktpdCgpKSB7CisgICAgICAgIGlmIChtX3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBt
X3BsYXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOwogfQorCisjaWYg
UExBVEZPUk0oSU9TKQorUGxhdGZvcm1MYXllciogSFRNTE1lZGlhRWxlbWVudDo6Ym9ycm93UGxh
dGZvcm1MYXllcigpCit7CisgICAgQVNTRVJUKCFtX3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCk7Cisg
ICAgbV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgPSB0cnVlOworICAgIGlmIChyZW5kZXJlcigpKQor
ICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHJldHVybiBtX3Bs
YXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworfQorCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnJldHVyblBsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllcikKK3sKKyAgICBBU1NFUlQobV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgJiYgcGxhdGZv
cm1MYXllciA9PSAobV9wbGF5ZXIgPyBtX3BsYXllci0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0
cikpOworICAgIG1fcGxhdGZvcm1MYXllckJvcnJvd2VkID0gZmFsc2U7CisgICAgaWYgKHJlbmRl
cmVyKCkpCisgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisjZW5k
aWYKICNlbmRpZgogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omhhc0Nsb3NlZENhcHRpb25zKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNDE4NWJhNWE5
ZmE5MWZkNzA1YzM3MzEyM2UyNDdmNjU2NmZjZjBjZC4uNjZkNGZjNmMwODY0MTkzZDAyNTkwZmI1
NzVmMmQwNmQ4YjMxMDIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
QEAgLTEzMiw2ICsxMzIsMTAgQEAgcHVibGljOgogICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1N
ZWRpYSgpIGNvbnN0OwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CisjaWYgUExBVEZPUk0oSU9TKQorICAg
IFBsYXRmb3JtTGF5ZXIqIGJvcnJvd1BsYXRmb3JtTGF5ZXIoKTsKKyAgICB2b2lkIHJldHVyblBs
YXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciopOworI2VuZGlmCiAjZW5kaWYKIAogICAgIGVudW0g
RGVsYXllZEFjdGlvblR5cGUgewpAQCAtODAyLDYgKzgwNiw3IEBAIHByaXZhdGU6CiAKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgYm9vbCBtX3JlcXVlc3RpbmdQbGF5IDogMTsKKyAgICBib29sIG1f
cGxhdGZvcm1MYXllckJvcnJvd2VkIDogMTsKICNlbmRpZgogCiAgICAgYm9vbCBtX3Jlc3VtZVBs
YXliYWNrQWZ0ZXJJbnRlcnJ1cHRpb24gOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRl
eCBlNzU2NjU1NWU1ZDZmNmYwNTFhYjE0MWVlMWVhNmQzNzIyNjkyOGM2Li45ZTBmNTEzY2JlYjll
YjhiZmQ5NTFiZWYyZGVmNDQ0NjBhMTVhMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApA
QCAtOTgsNiArOTgsNyBAQCBib29sIFNldHRpbmdzOjpnTG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVy
U2l6ZUVuYWJsZWQgPSBmYWxzZTsKIAogI2lmIFBMQVRGT1JNKElPUykKIGJvb2wgU2V0dGluZ3M6
OmdOZXR3b3JrRGF0YVVzYWdlVHJhY2tpbmdFbmFibGVkID0gZmFsc2U7Citib29sIFNldHRpbmdz
OjpnTWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdCA9IGZhbHNlOwogI2VuZGlmCiAKIC8vIE5P
VEVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggOTYyMDVmZDdlNGFmYjk5OWI2YTBhZjE5NGNi
ZjNhOGQ3NzliNjAzOS4uZmE1NTUxMGFjOWI4MWM0Y2E0MzFhYTBkYTVlNDNkNTE4M2JhMjgxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMzA0LDYgKzMwNCw5IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyB2b2lkIHNldE5ldHdvcmtJbnRlcmZhY2VOYW1lKGNvbnN0IFN0cmluZyYpOwogICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcmIG5ldHdvcmtJbnRlcmZhY2VOYW1lKCk7CisKKyAgICBzdGF0
aWMgdm9pZCBzZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KGJvb2wgZmxhZykgeyBnTWVk
aWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdCA9IGZsYWc7IH0KKyAgICBzdGF0aWMgYm9vbCBtZWRp
YVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KCkgeyByZXR1cm4gZ01lZGlhUGxheWJhY2tGdWxsc2Ny
ZWVuQVZLaXQ7IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNDAxLDYgKzQwNCw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIGJvb2wgZ1Nob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRl
U2V0dGVyczsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wgZ05ldHdvcmtEYXRh
VXNhZ2VUcmFja2luZ0VuYWJsZWQ7CisgICAgc3RhdGljIGJvb2wgZ01lZGlhUGxheWJhY2tGdWxs
c2NyZWVuQVZLaXQ7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBkb3VibGUgZ0hpZGRlblBhZ2VET01U
aW1lckFsaWdubWVudEludGVydmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA2MjBmNDMxMDlhMWE5YjU3ZDkzOTE5
YzE0ZjI5ZjZkNTY5ODgzZWU0Li42NTFiMTg3NTFiZjlkNDAzYTI4OWQ3YzE5Y2Y3ZGQ3MDFmMjBl
NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMu
aCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CkBAIC00NzQsNiArNDc1LDEwIEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzdXBwb3J0c0Z1bGxzY3JlZW4o
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICAvLyBGSVhNRTogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlciBhc3N1bWVzIGEgUVRLaXQvUXVpY2tUaW1lIG1lZGlhIGVuZ2lu
ZQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoU2V0dGluZ3M6Om1lZGlhUGxheWJhY2tGdWxs
c2NyZWVuQVZLaXQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iY2I0ODY4ZGQ4N2YyMmNjNjFlOGVjOWY1NzFiNjFhNjEwZTFiMmY1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0X2gKKyNkZWZpbmUgV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0X2gKKworI2lmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8d3RmL1JlZlB0
ci5oPgorCitAY2xhc3MgV2ViVmlldzsKK0BjbGFzcyBVSVNjcmVlbjsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK30KKworQGludGVyZmFjZSBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyIDogTlNPYmplY3QKKworQHByb3BlcnR5IChhc3NpZ24pIFdl
YlZpZXcgKndlYlZpZXc7CisKKy0gKHZvaWQpc2V0TWVkaWFFbGVtZW50OihXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQ7CistIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
KiltZWRpYUVsZW1lbnQ7CisKKy0gKHZvaWQpZW50ZXJGdWxsc2NyZWVuOihVSVNjcmVlbiAqKXNj
cmVlbjsKKy0gKHZvaWQpZXhpdEZ1bGxzY3JlZW47CitAZW5kCisKKyNlbmRpZgorI2VuZGlmIC8v
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJBVktpdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjliZDM1YTE5MGE0NGE5M2EyZTQ5N2EzZjIwM2Y5ZDA5
ZDM2NDAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMCwwICsxLDM4OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQg
IldlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oIgorCisjaW1wb3J0ICJET01FdmVu
dEludGVybmFsLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxBVktpdC9BVktpdC5o
PgorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CisjaW1wb3J0IDxBVktpdC9B
VlBsYXllckNvbnRyb2xsZXJfU3RhcnNreS5oPgorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3
Q29udHJvbGxlcl9Qcml2YXRlLmg+CisjaW1wb3J0IDxBVktpdC9BVlZhbHVlVGltaW5nLmg+Cisj
aW1wb3J0IDxDb3JlTWVkaWEvQ01UaW1lLmg+CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9ET01FdmVudExpc3RlbmVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50TGlzdGVuZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RXZlbnROYW1lcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MRWxlbWVudC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL09iakNFdmVudExp
c3RlbmVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyRWxlbWVudC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKK1NPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQ
bGF5ZXJDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllclZpZXdDb250
cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVlVGltaW5nKQorCitTT0ZUX0xJ
TktfRlJBTUVXT1JLKFVJS2l0KQorU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSVNjcmVlbikKK1NP
RlRfTElOS19DTEFTUyhVSUtpdCwgVUlXaW5kb3cpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJ
VmlldykKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlWaWV3Q29udHJvbGxlcikKK1NPRlRfTElO
S19DTEFTUyhVSUtpdCwgVUlDb2xvcikKKworU09GVF9MSU5LX0ZSQU1FV09SSyhDb3JlTWVkaWEp
CitTT0ZUX0xJTksoQ29yZU1lZGlhLCBDTVRpbWVNYWtlV2l0aFNlY29uZHMsIENNVGltZSwgKEZs
b2F0NjQgc2Vjb25kcywgaW50MzJfdCBwcmVmZXJyZWRUaW1lU2NhbGUpLCAoc2Vjb25kcywgcHJl
ZmVycmVkVGltZVNjYWxlKSkKK1NPRlRfTElOSyhDb3JlTWVkaWEsIENNVGltZUdldFNlY29uZHMs
IEZsb2F0NjQsIChDTVRpbWUgdGltZSksICh0aW1lKSkKKworQGludGVyZmFjZSBXZWJBVlBsYXll
ckNvbnRyb2xsZXIgOiBOU09iamVjdCA8RE9NRXZlbnRMaXN0ZW5lcj4KKworQHByb3BlcnR5KHJl
dGFpbikgQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyUHJveHk7CitAcHJvcGVy
dHkocmV0YWluKSBDQUxheWVyPEFWUGxheWVyTGF5ZXI+ICpwbGF5ZXJMYXllcjsKKworQHByb3Bl
cnR5IEJPT0wgY2FuUGxheTsKK0Bwcm9wZXJ0eShnZXR0ZXI9aXNQbGF5aW5nKSBCT09MIHBsYXlp
bmc7CitAcHJvcGVydHkgQk9PTCBjYW5QYXVzZTsKK0Bwcm9wZXJ0eSBCT09MIGNhblRvZ2dsZVBs
YXliYWNrOworQHByb3BlcnR5IGRvdWJsZSByYXRlOworQHByb3BlcnR5IEJPT0wgY2FuU2VlazsK
K0Bwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb247CitAcHJvcGVydHkgTlNT
aXplIGNvbnRlbnREaW1lbnNpb25zOworQHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZEF1ZGlvOwor
QHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZFZpZGVvOworQHByb3BlcnR5IE5TVGltZUludGVydmFs
IG1pblRpbWU7CitAcHJvcGVydHkgTlNUaW1lSW50ZXJ2YWwgbWF4VGltZTsKK0Bwcm9wZXJ0eSBO
U1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb25XaXRoaW5FbmRUaW1lczsKK0Bwcm9wZXJ0eShy
ZXRhaW4pIE5TQXJyYXkgKmxvYWRlZFRpbWVSYW5nZXM7CitAcHJvcGVydHkgQVZQbGF5ZXJDb250
cm9sbGVyU3RhdHVzIHN0YXR1czsKK0Bwcm9wZXJ0eShyZXRhaW4pIEFWVmFsdWVUaW1pbmcgKnRp
bWluZzsKKy0gKHZvaWQpaGFuZGxlRXZlbnQ6KERPTUV2ZW50ICopZXZ0OworCitAZW5kCisKKwor
QGltcGxlbWVudGF0aW9uIFdlYkFWUGxheWVyQ29udHJvbGxlcgoreworICAgIFJlZlB0cjxIVE1M
TWVkaWFFbGVtZW50PiBfbWVkaWFFbGVtZW50OworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBf
bGlzdGVuZXI7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBzZWxmOworICAgIAorICAgIGluaXRBVlBs
YXllckNvbnRyb2xsZXIoKTsKKyAgICBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IFtbY2xh
c3NBVlBsYXllckNvbnRyb2xsZXIgYWxsb2NdIGluaXRdOworICAgIHJldHVybiBzZWxmOworfQor
CistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IG5p
bDsKKyAgICBzZWxmLnBsYXllckxheWVyID0gbmlsOworICAgIHNlbGYubG9hZGVkVGltZVJhbmdl
cyA9IG5pbDsKKyAgICBzZWxmLnRpbWluZyA9IG5pbDsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9
CisKKy0gKGlkKWZvcndhcmRpbmdUYXJnZXRGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHNlbGVjdG9yKTsKKyAgICByZXR1cm4gc2VsZi5wbGF5ZXJDb250cm9s
bGVyUHJveHk7Cit9CisKKy0gKEJPT0wpc2hvdWxkRGlzbWlzc0ZvckRvbmUKK3sKKyAgICBXZWJU
aHJlYWRSdW4oXnsKKyAgICAgICAgX21lZGlhRWxlbWVudC5nZXQoKS0+ZXhpdEZ1bGxzY3JlZW4o
KTsKKyAgICB9KTsKKyAgICByZXR1cm4gTk87Cit9CisKKy0gKHZvaWQpcGxheTooaWQpc2VuZGVy
Cit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgV2ViVGhyZWFkUnVuKF57CisgICAg
ICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPnBsYXkoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClw
YXVzZTooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgV2ViVGhy
ZWFkUnVuKF57CisgICAgICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPnBhdXNlKCk7CisgICAgfSk7
Cit9CisKKy0gKHZvaWQpdG9nZ2xlUGxheWJhY2s6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9Q
QVJBTShzZW5kZXIpOworICAgIFdlYlRocmVhZFJ1biheeworICAgICAgICBfbWVkaWFFbGVtZW50
LmdldCgpLT50b2dnbGVQbGF5U3RhdGUoKTsKKyAgICB9KTsKK30KKworLSAoQk9PTClpc1BsYXlp
bmcKK3sKKyAgICByZXR1cm4gKFtzZWxmIHJhdGVdICE9IDAuKTsKK30KKworLSAodm9pZClzZXRQ
bGF5aW5nOihCT09MKXBsYXlpbmcKK3sKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgaWYg
KHBsYXlpbmcpCisgICAgICAgICAgICBfbWVkaWFFbGVtZW50LmdldCgpLT5wbGF5KCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPnBhdXNlKCk7CisgICAg
fSk7Cit9CisKKysgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdQbGF5aW5nCit7
CisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAicmF0ZSJdOworfQorCistICh2b2lk
KXNlZWtUb1RpbWU6KE5TVGltZUludGVydmFsKXRpbWUKK3sKKyAgICBXZWJUaHJlYWRSdW4oXnsK
KyAgICAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlIHt9OworICAgICAgICBfbWVkaWFF
bGVtZW50LmdldCgpLT5zZXRDdXJyZW50VGltZSh0aW1lLCBleGNlcHRpb25Db2RlKTsKKyAgICB9
KTsKK30KKworLSAodm9pZCl1cGRhdGVUaW1pbmdXaXRoQ3VycmVudFRpbWU6KE5TVGltZUludGVy
dmFsKWN1cnJlbnRUaW1lCit7CisgICAgTlNUaW1lSW50ZXJ2YWwgYW5jaG9yVGltZVN0YW1wID0g
KFtzZWxmIHJhdGVdID09IDAuZikgPyBOQU4gOiBbY2xhc3NBVlZhbHVlVGltaW5nIGN1cnJlbnRU
aW1lU3RhbXBdOworICAgIEFWVmFsdWVUaW1pbmcgKnRpbWluZyA9IFtjbGFzc0FWVmFsdWVUaW1p
bmcgdmFsdWVUaW1pbmdXaXRoQW5jaG9yVmFsdWU6Y3VycmVudFRpbWUKKyAgICAgIGFuY2hvclRp
bWVTdGFtcDphbmNob3JUaW1lU3RhbXAgcmF0ZTowXTsKKyAgICBbc2VsZiBzZXRUaW1pbmc6dGlt
aW5nXTsKK30KKworLSAoZG91YmxlKWVmZmVjdGl2ZVJhdGUKK3sKKyAgICByZXR1cm4gX21lZGlh
RWxlbWVudC5nZXQoKS0+aXNQbGF5aW5nKCkgPyBfbWVkaWFFbGVtZW50LmdldCgpLT5wbGF5YmFj
a1JhdGUoKSA6IDAuOworfQorCistICh2b2lkKXNldE1lZGlhRWxlbWVudDooUGFzc1JlZlB0cjxI
VE1MTWVkaWFFbGVtZW50PiltZWRpYUVsZW1lbnQKK3sKKyAgICBpZiAoX21lZGlhRWxlbWVudCA9
PSBtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoX21lZGlhRWxl
bWVudCAmJiBfbGlzdGVuZXIpCisgICAgeworICAgICAgICBfbWVkaWFFbGVtZW50LmdldCgpLT5y
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50LCBfbGlz
dGVuZXIuZ2V0KCksIGZhbHNlKTsKKyAgICAgICAgX21lZGlhRWxlbWVudC5nZXQoKS0+cmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucGF1c2VFdmVudCwgX2xpc3RlbmVyLmdldCgpLCBm
YWxzZSk7CisgICAgICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLnBsYXlFdmVudCwgX2xpc3RlbmVyLmdldCgpLCBmYWxzZSk7CisgICAgICAg
IF9tZWRpYUVsZW1lbnQuZ2V0KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJh
dGVjaGFuZ2VFdmVudCwgX2xpc3RlbmVyLmdldCgpLCBmYWxzZSk7CisgICAgICAgIF9tZWRpYUVs
ZW1lbnQuZ2V0KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVF
dmVudCwgX2xpc3RlbmVyLmdldCgpLCBmYWxzZSk7CisgICAgfQorICAgIAorICAgIGlmIChfbWVk
aWFFbGVtZW50KQorICAgIHsKKyAgICAgICAgW3NlbGYucGxheWVyTGF5ZXIgcmVtb3ZlRnJvbVN1
cGVybGF5ZXJdOworICAgICAgICBfbWVkaWFFbGVtZW50LT5yZXR1cm5QbGF0Zm9ybUxheWVyKHNl
bGYucGxheWVyTGF5ZXIpOworICAgICAgICBzZWxmLnBsYXllckxheWVyID0gbmlsOworICAgIH0K
KyAgICAKKyAgICBfbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50OworICAgIF9saXN0ZW5lciA9
IG51bGxwdHI7CisgICAgCisgICAgaWYgKCFfbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBfbGlzdGVuZXIgPSBPYmpDRXZlbnRMaXN0ZW5lcjo6d3JhcChzZWxmKTsKKworICAg
IF9tZWRpYUVsZW1lbnQuZ2V0KCktPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmR1cmF0
aW9uY2hhbmdlRXZlbnQsIF9saXN0ZW5lciwgZmFsc2UpOworICAgIF9tZWRpYUVsZW1lbnQuZ2V0
KCktPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIF9saXN0ZW5lciwg
ZmFsc2UpOworICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLnBsYXlFdmVudCwgX2xpc3RlbmVyLCBmYWxzZSk7CisgICAgX21lZGlhRWxlbWVudC5n
ZXQoKS0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50LCBfbGlz
dGVuZXIsIGZhbHNlKTsKKyAgICBfbWVkaWFFbGVtZW50LmdldCgpLT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQsIF9saXN0ZW5lciwgZmFsc2UpOworCisgICAg
ZG91YmxlIGR1cmF0aW9uID0gX21lZGlhRWxlbWVudC5nZXQoKS0+ZHVyYXRpb24oKTsKKworICAg
IHNlbGYuY2FuUGxheSA9IFlFUzsKKyAgICBzZWxmLmNhblBhdXNlID0gWUVTOworICAgIHNlbGYu
Y2FuVG9nZ2xlUGxheWJhY2sgPSBZRVM7CisgICAgc2VsZi5jb250ZW50RHVyYXRpb24gPSBkdXJh
dGlvbjsKKyAgICBzZWxmLmhhc0VuYWJsZWRBdWRpbyA9IFlFUzsKKyAgICBzZWxmLmNhblNlZWsg
PSBZRVM7CisgICAgc2VsZi5taW5UaW1lID0gMDsKKyAgICBzZWxmLm1heFRpbWUgPSBkdXJhdGlv
bjsKKyAgICBzZWxmLmNvbnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVzID0gZHVyYXRpb247Cisg
ICAgc2VsZi5sb2FkZWRUaW1lUmFuZ2VzID0gQFsgQDAsIEAoZHVyYXRpb24pIF07CisgICAgc2Vs
Zi5yYXRlID0gW3NlbGYgZWZmZWN0aXZlUmF0ZV07CisgICAgc2VsZi5zdGF0dXMgPSBBVlBsYXll
ckNvbnRyb2xsZXJTdGF0dXNSZWFkeVRvUGxheTsKKworICAgIHNlbGYucGxheWVyTGF5ZXIgPSAo
Q0FMYXllcjxBVlBsYXllckxheWVyPiAqKV9tZWRpYUVsZW1lbnQuZ2V0KCktPmJvcnJvd1BsYXRm
b3JtTGF5ZXIoKTsKKyAgICBbc2VsZi5wbGF5ZXJMYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07
CisKKyAgICBbc2VsZiB1cGRhdGVUaW1pbmdXaXRoQ3VycmVudFRpbWU6X21lZGlhRWxlbWVudC5n
ZXQoKS0+Y3VycmVudFRpbWUoKV07CisKKyAgICBpZiAoaXNIVE1MVmlkZW9FbGVtZW50KF9tZWRp
YUVsZW1lbnQuZ2V0KCkpKSB7CisgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgKnZlID0gdG9IVE1M
VmlkZW9FbGVtZW50KF9tZWRpYUVsZW1lbnQuZ2V0KCkpOworICAgICAgICBzZWxmLmhhc0VuYWJs
ZWRWaWRlbyA9IFlFUzsKKyAgICAgICAgc2VsZi5jb250ZW50RGltZW5zaW9ucyA9IENHU2l6ZU1h
a2UodmUtPnZpZGVvV2lkdGgoKSwgdmUtPnZpZGVvSGVpZ2h0KCkpOworICAgIH0KK30KKworLSAo
dm9pZCloYW5kbGVFdmVudDooRE9NRXZlbnQgKilldm50Cit7CisgICAgRXZlbnQgKmV2ZW50ID0g
Y29yZShldm50KTsKKyAgICAKKyAgICBpZiAoIV9tZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIExPRyhNZWRpYSwgImhhbmRsZUV2ZW50ICVzIiwgZXZlbnQtPnR5cGUoKS5jaGFy
YWN0ZXJzOCgpKTsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5kdXJh
dGlvbmNoYW5nZUV2ZW50KSB7CisgICAgICAgIGRvdWJsZSBkdXJhdGlvbiA9IF9tZWRpYUVsZW1l
bnQuZ2V0KCktPmR1cmF0aW9uKCk7CisgICAgICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gZHVy
YXRpb247CisgICAgICAgIHNlbGYubWF4VGltZSA9IGR1cmF0aW9uOworICAgICAgICBzZWxmLmNv
bnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVzID0gZHVyYXRpb247CisgICAgICAgIHNlbGYubG9h
ZGVkVGltZVJhbmdlcyA9IEBbCisgICAgICAgICAgICBAMCwKKyAgICAgICAgICAgIEAoZHVyYXRp
b24pCisgICAgICAgIF07CisgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5wYXVzZUV2ZW50CisgICAgICAgICAgICB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5wbGF5RXZlbnQKKyAgICAgICAgICAgIHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLnJhdGVjaGFuZ2VFdmVudCkKKyAgICAgICAgc2VsZi5yYXRlID0gW3NlbGYgZWZmZWN0aXZl
UmF0ZV07CisgICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudGltZXVw
ZGF0ZUV2ZW50KQorICAgICAgICBbc2VsZiB1cGRhdGVUaW1pbmdXaXRoQ3VycmVudFRpbWU6X21l
ZGlhRWxlbWVudC5nZXQoKS0+Y3VycmVudFRpbWUoKV07Cit9CisKK0BlbmQKKworQGludGVyZmFj
ZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyICgpIDxVSVZpZXdDb250cm9sbGVyVHJhbnNp
dGlvbmluZ0RlbGVnYXRlPgorQHByb3BlcnR5KHJldGFpbikgVUlXaW5kb3cgKndpbmRvdzsKK0Bw
cm9wZXJ0eShyZXRhaW4pIFVJVmlld0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyOworQHByb3Bl
cnR5KHJldGFpbikgQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAqcGxheWVyVmlld0NvbnRyb2xsZXI7
CitAcHJvcGVydHkocmV0YWluKSBXZWJBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xs
ZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Cit7CisgICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IF9tZWRpYUVsZW1lbnQ7Cit9CisKKy0g
KGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkgewor
ICAgICAgICBpbml0VUlTY3JlZW4oKTsKKyAgICAgICAgaW5pdFVJVmlldygpOworICAgICAgICBp
bml0VUlDb2xvcigpOworICAgICAgICBpbml0VUlXaW5kb3coKTsKKyAgICAgICAgaW5pdEFWUGxh
eWVyQ29udHJvbGxlcigpOworICAgICAgICBpbml0QVZQbGF5ZXJWaWV3Q29udHJvbGxlcigpOwor
ICAgICAgICBpbml0QVZWYWx1ZVRpbWluZygpOworICAgICAgICBpbml0VUlWaWV3Q29udHJvbGxl
cigpOworICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7Cisg
ICAgc2VsZi53aW5kb3cgPSBuaWw7CisgICAgc2VsZi52aWV3Q29udHJvbGxlciA9IG5pbDsKKyAg
ICBzZWxmLnBsYXllclZpZXdDb250cm9sbGVyID0gbmlsOworICAgIHNlbGYucGxheWVyQ29udHJv
bGxlciA9IG5pbDsKKyAgICBfbWVkaWFFbGVtZW50ID0gbnVsbHB0cjsKKyAgICBbc3VwZXIgZGVh
bGxvY107Cit9CisKKy0gKHZvaWQpc2V0TWVkaWFFbGVtZW50OihIVE1MTWVkaWFFbGVtZW50Kilt
ZWRpYUVsZW1lbnQKK3sKKyAgICBfbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50OworfQorCist
IChIVE1MTWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQKK3sKKyAgICByZXR1cm4gX21lZGlhRWxl
bWVudC5nZXQoKTsKK30KKworLSAodm9pZCllbnRlckZ1bGxzY3JlZW46KFVJU2NyZWVuICopc2Ny
ZWVuCit7CisgICAgaWYgKCFzY3JlZW4pCisgICAgICAgIHNjcmVlbiA9IFtjbGFzc1VJU2NyZWVu
IG1haW5TY3JlZW5dOworCisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyID0gW1tbV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgc2VsZi5wbGF5ZXJD
b250cm9sbGVyLm1lZGlhRWxlbWVudCA9IF9tZWRpYUVsZW1lbnQ7CisKKyAgICBpZiAoX21lZGlh
RWxlbWVudC0+cmVuZGVyZXIoKSkKKyAgICAgICAgX21lZGlhRWxlbWVudC0+cmVuZGVyZXIoKS0+
dXBkYXRlRnJvbUVsZW1lbnQoKTsKKworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIF57CisgICAgICAgIHNlbGYucGxheWVyVmlld0NvbnRyb2xsZXIgPSBbW1tj
bGFzc0FWUGxheWVyVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAg
ICAgICAgc2VsZi5wbGF5ZXJWaWV3Q29udHJvbGxlci5wbGF5ZXJDb250cm9sbGVyID0gKEFWUGxh
eWVyQ29udHJvbGxlciAqKXNlbGYucGxheWVyQ29udHJvbGxlcjsKKyAgICAgICAgCisgICAgICAg
IHNlbGYudmlld0NvbnRyb2xsZXIgPSBbW1tjbGFzc1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGlu
aXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgCisgICAgICAgIHNlbGYud2luZG93ID0gW1tbY2xh
c3NVSVdpbmRvdyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbc2NyZWVuIGJvdW5kc11dIGF1dG9yZWxl
YXNlXTsKKyAgICAgICAgc2VsZi53aW5kb3cuYmFja2dyb3VuZENvbG9yID0gW2NsYXNzVUlDb2xv
ciBjbGVhckNvbG9yXTsKKyAgICAgICAgc2VsZi53aW5kb3cucm9vdFZpZXdDb250cm9sbGVyID0g
KFVJVmlld0NvbnRyb2xsZXIgKilzZWxmLnZpZXdDb250cm9sbGVyOworICAgICAgICBbc2VsZi53
aW5kb3cgbWFrZUtleUFuZFZpc2libGVdOworICAgICAgICAKKyAgICAgICAgW3NlbGYudmlld0Nv
bnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9sbGVyOnNlbGYucGxheWVyVmlld0NvbnRyb2xsZXIg
YW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKKyAgICB9KTsKK30KKworLSAodm9pZClleGl0
RnVsbHNjcmVlbgoreworICAgIHNlbGYucGxheWVyQ29udHJvbGxlci5tZWRpYUVsZW1lbnQgPSBu
dWxscHRyOworCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XnsKKyAgICAgICAgW3NlbGYudmlld0NvbnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5p
bWF0ZWQ6WUVTIGNvbXBsZXRpb246XnsKKyAgICAgICAgICAgIHNlbGYud2luZG93LmhpZGRlbiA9
IFlFUzsKKyAgICAgICAgICAgIHNlbGYud2luZG93LnJvb3RWaWV3Q29udHJvbGxlciA9IG5pbDsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgc2VsZi5wbGF5ZXJWaWV3Q29udHJvbGxlciA9IG5p
bDsKKyAgICAgICAgICAgIHNlbGYudmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgICAgICAgICBz
ZWxmLndpbmRvdyA9IG5pbDsKKyAgICAgICAgICAgIFdlYlRocmVhZFJ1biheeworICAgICAgICAg
ICAgICAgIGlmIChfbWVkaWFFbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAgICAg
ICBfbWVkaWFFbGVtZW50LT5yZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOworICAgICAg
ICAgICAgICAgIF9tZWRpYUVsZW1lbnQgPSBudWxscHRyOworICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgfV07CisgICAgfSk7Cit9CisKK0BlbmQKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmlu
ZGV4IGI4MzkyODZiNjg2MDBkYjg5YTlhYjY4MWUzNTYwNDlkMmJiZDgwMmIuLjJlYzgyNjE5MTM5
YjY0NDhhYjllZWIzYjdlOTgzODAwNjEyODM3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xODUsNyArMTg1LDcgQEAg
cHVibGljOgogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0o
SU9TKQorI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2Ny
ZWVuRm9yTm9kZShjb25zdCBXZWJDb3JlOjpOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSopIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSopIE9WRVJS
SURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCmluZGV4IGJlZTg3NmExZWM3MDgxZTY1ZWFjYzcxOGVjNzcwMWRlMTQzYWE3M2Eu
LmUzNTIwOWVlMzQ5MWM0M2FlMWZjMjNmZTI2YzI4NDBkNmFhZDkwMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTk2
NywxMSArOTY3LDE4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzY2hlZHVsZUNvbXBvc2l0aW5n
TGF5ZXJGbHVzaCgpCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0o
SU9TKQorI2lmIEVOQUJMRShWSURFTykKIAogYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnN1cHBvcnRz
RnVsbHNjcmVlbkZvck5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgaWYgKFNldHRpbmdzOjptZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KCkpCisgICAg
ICAgIHJldHVybiBpc0hUTUxWaWRlb0VsZW1lbnQobm9kZSk7CisgICAgZWxzZQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisjZWxzZQogICAgIHJldHVybiBpc0hUTUxWaWRlb0VsZW1lbnQobm9kZSk7
CisjZW5kaWYKIH0KIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmVudGVyRnVsbHNjcmVlbkZvck5v
ZGUoTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCmluZGV4IGM0ZGYyMjdjZjI0ZTk1ZWJhOGRhMjc1ODk3NWUw
ZDY4YmJkOTZkMDUuLjA2YjJmMTg3YWFiMGE4MTg1ZDJlODgwOTU0Y2VlNTEyZGQ0NmRmNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1By
aXZhdGUuaApAQCAtMTMzLDYgKzEzMyw3IEBACiAjaWYgVEFSR0VUX09TX0lQSE9ORQogI2RlZmlu
ZSBXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheVByZWZlcmVuY2VLZXkgQCJXZWJLaXRN
ZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheSIKICNkZWZpbmUgV2ViS2l0QXVkaW9TZXNzaW9uQ2F0
ZWdvcnlPdmVycmlkZSBAIldlYktpdEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGUiCisjZGVm
aW5lIFdlYktpdE1lZGlhUGxheWJhY2tGdWxsc2NyZWVuQVZLaXQgQCJXZWJLaXRNZWRpYVBsYXli
YWNrRnVsbHNjcmVlbkFWS2l0IgogI2VuZGlmCiAjZGVmaW5lIFdlYktpdFJlZ2lvbkJhc2VkQ29s
dW1uc0VuYWJsZWRLZXkgQCJXZWJLaXRSZWdpb25CYXNlZENvbHVtbnNFbmFibGVkIgogI2RlZmlu
ZSBXZWJLaXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbktleSBAIldlYktpdFNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXMubW0KaW5kZXggMzU0ODBjYTJkNWEyODc3OGJiNjlmZDkzOWFiZmQ2N2VkMWNlNTU2
NC4uMDA5NTlkNTE0NzkyZDJiNjdiYzI3MGEwZGM4Yjg2YWQzNTNiN2NmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCkBAIC01MTcsNiArNTE3LDcgQEAg
cHVibGljOgogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdE1l
ZGlhUGxheWJhY2tBbGxvd3NJbmxpbmVQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdE1lZGlhUGxheWJhY2tBbGxvd3NBaXJQbGF5UHJl
ZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpBdWRp
b1Nlc3Npb246Ok5vbmVdLCAgV2ViS2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZSwKKyAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRNZWRpYVBsYXliYWNr
RnVsbHNjcmVlbkFWS2l0LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aExvbmdMb25nOldl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCldLCBXZWJLaXRBcHBsaWNh
dGlvbkNhY2hlVG90YWxRdW90YSwKIAogICAgICAgICAvLyBQZXItT3JpZ2luIFF1b3RhIG9uIGlP
UyBpcyAyNU1CLiBXaGVuIHRoZSBxdW90YSBpcyByZWFjaGVkIGZvciBhIHBhcnRpY3VsYXIgb3Jp
Z2luCkBAIC0yMTc4LDYgKzIxNzksMTYgQEAgc3RhdGljIE5TU3RyaW5nICpjbGFzc0lCQ3JlYXRv
cklEID0gbmlsOwogICAgIFtzZWxmIF9zZXRVbnNpZ25lZEludFZhbHVlOm92ZXJyaWRlIGZvcktl
eTpXZWJLaXRBdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRlXTsKIH0KIAorLSAoQk9PTCltZWRp
YVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0Cit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVG
b3JLZXk6V2ViS2l0TWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdF07Cit9CisKKy0gKHZvaWQp
c2V0TWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdDooYm9vbClmbGFnCit7CisgICAgW3NlbGYg
X3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFW
S2l0XTsKK30KKwogLSAoQk9PTCluZXR3b3JrRGF0YVVzYWdlVHJhY2tpbmdFbmFibGVkCiB7CiAg
ICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0TmV0d29ya0RhdGFVc2FnZVRy
YWNraW5nRW5hYmxlZFByZWZlcmVuY2VLZXldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggNThmMzJmNzliMDBjYWVkZTgzNzY0
Yjc4OTk0N2YwZTJiNzc3OGI3OC4uMzFmNDU2NzA4MGY2MzlkMmE2MjE0YTQyMTcwNmIzMWE5Y2Yx
NTVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
UHJpdmF0ZS5oCkBAIC0yNTksNiArMjU5LDkgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQcmVmZXJl
bmNlc0NhY2hlTW9kZWxDaGFuZ2VkSW50ZXJuYWxOb3RpZmljYXRpb247CiAtICh1bnNpZ25lZClh
dWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRlOwogLSAodm9pZClzZXRBdWRpb1Nlc3Npb25DYXRl
Z29yeU92ZXJyaWRlOih1bnNpZ25lZClvdmVycmlkZTsKIAorLSAoQk9PTCltZWRpYVBsYXliYWNr
RnVsbHNjcmVlbkFWS2l0OworLSAodm9pZClzZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0
Oihib29sKWZsYWc7CisKIC8vIFdBUk5JTkc6IHRoaXMgYWZmZWN0IG5ldHdvcmsgcGVyZm9ybWFu
Y2UuIFRoaXMgbXVzdCBub3QgYmUgZW5hYmxlZCBmb3IgcHJvZHVjdGlvbiB1c2UuCiAvLyBFbmFi
bGluZyB0aGlzIG1ha2VzIFdlYkNvcmUgcmVwb3J0cyB0aGUgbmV0d29yayBkYXRhIHVzYWdlLgog
Ly8gVGhpcyBpcyBhIGdsb2JhbCBzZXR0aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IDA0ODg5MDAxNzFjOTIwNmE4NGVjZjUyMmY1M2VkMTU3ZDQ0ZjQ3OTEuLmYwMmVm
OWM2OGFmYjEwMTM0NjVhOWM0MDNhYzI1OWY2ZTcyZDI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KQEAgLTE3OCw3ICsxNzgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlVmlldy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dpZGdldC5oPgogI2ltcG9ydCA8
V2ViS2l0L0RPTS5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUV4dGVuc2lvbnMuaD4KQEAgLTIzNywx
MyArMjM2LDE2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
RXZlbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFW
S2l0Lmg+CiAjaW1wb3J0IDxkaXNwYXRjaC9wcml2YXRlLmgKICNpbXBvcnQgPHd0Zi9GYXN0TWFs
bG9jLmg+CisjZWxzZQorI2ltcG9ydCA8V2ViQ29yZS9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLmg+CisjZW5kaWYKIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPFdl
YkNvcmUvR3JhcGhpY3NMYXllci5oPgogI2VuZGlmCi0jZW5kaWYKIAogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKICNpbXBvcnQgPFdlYktpdC9XZWJEYXNoYm9hcmRSZWdpb24uaD4KQEAg
LTI0MjcsNiArMjQyOSw3IEBAIHN0YXRpYyBib29sIG5lZWRzU2VsZlJldGFpbldoaWxlTG9hZGlu
Z1F1aXJrKCkKICAgICBzZXR0aW5ncy5zZXRBdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRlKFtw
cmVmZXJlbmNlcyBhdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRlXSk7CiAgICAgc2V0dGluZ3Mu
c2V0TmV0d29ya0RhdGFVc2FnZVRyYWNraW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgbmV0d29ya0Rh
dGFVc2FnZVRyYWNraW5nRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLnNldE5ldHdvcmtJbnRlcmZh
Y2VOYW1lKFtwcmVmZXJlbmNlcyBuZXR3b3JrSW50ZXJmYWNlTmFtZV0pOworICAgIHNldHRpbmdz
LnNldE1lZGlhUGxheWJhY2tGdWxsc2NyZWVuQVZLaXQoW3ByZWZlcmVuY2VzIG1lZGlhUGxheWJh
Y2tGdWxsc2NyZWVuQVZLaXRdKTsKICNlbmRpZgogICAgIHNldHRpbmdzLnNldE1lZGlhUGxheWJh
Y2tSZXF1aXJlc1VzZXJHZXN0dXJlKFtwcmVmZXJlbmNlcyBtZWRpYVBsYXliYWNrUmVxdWlyZXNV
c2VyR2VzdHVyZV0pOwogICAgIHNldHRpbmdzLnNldE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUo
W3ByZWZlcmVuY2VzIG1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmVdKTsKQEAgLTg1MjEsNyArODUy
NCw3IEBAIGJvb2wgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKIAogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoVklERU8pICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFZJREVP
KQogLSAodm9pZClfZW50ZXJGdWxsc2NyZWVuRm9yTm9kZTooV2ViQ29yZTo6Tm9kZSopbm9kZQog
ewogICAgIEFTU0VSVChpc0hUTUxWaWRlb0VsZW1lbnQobm9kZSkpOwpAQCAtODU0NCw3ICs4NTQ3
LDExIEBAIGJvb2wgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKICAgICBpZiAo
IV9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlcikgewogICAgICAgICBfcHJpdmF0ZS0+ZnVs
bHNjcmVlbkNvbnRyb2xsZXIgPSBbW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYWxsb2Nd
IGluaXRdOwogICAgICAgICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIHNldE1lZGlh
RWxlbWVudDp2aWRlb0VsZW1lbnRdOwotICAgICAgICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250
cm9sbGVyIGVudGVyRnVsbHNjcmVlbjpbW3NlbGYgd2luZG93XSBzY3JlZW5dXTsgICAgICAgIAor
I2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxl
ciBlbnRlckZ1bGxzY3JlZW46bmlsXTsKKyNlbHNlCisgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNj
cmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOltbc2VsZiB3aW5kb3ddIHNjcmVlbl1dOwor
I2VuZGlmCiAgICAgfQogICAgIGVsc2UKICAgICAgICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29u
dHJvbGxlciBzZXRNZWRpYUVsZW1lbnQ6dmlkZW9FbGVtZW50XTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDVmZGY1ZGYwZmJmYzRmNjczYmQ1NGI2
NjY4ODZlOWIzNjYxYjU0NjIuLjQxZDJkMTc3ZDEzZTUxODlkMDU5ZjVhMTNhMjA2MzQ4ZGVmOTQ3
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAt
MjM2LDcgKzIzNiw3IEBAIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogCiAtICh2b2lk
KV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuY2VzICopcHJlZmVyZW5jZXM7CiAKLSNp
ZiBFTkFCTEUoVklERU8pICYmICFQTEFURk9STShJT1MpICYmIGRlZmluZWQoX19jcGx1c3BsdXMp
CisjaWYgRU5BQkxFKFZJREVPKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQogLSAodm9pZClfZW50
ZXJGdWxsc2NyZWVuRm9yTm9kZTooV2ViQ29yZTo6Tm9kZSopbm9kZTsKIC0gKHZvaWQpX2V4aXRG
dWxsc2NyZWVuOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221086</attachid>
            <date>2014-01-13 16:27:47 -0800</date>
            <delta_ts>2014-01-13 16:32:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126818-20140113162747.patch</filename>
            <type>text/plain</type>
            <size>37313</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxNzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMwYjMzM2VkYjFiNTk3
Y2ExNTkwZTkyZDZhOGI5NDk5NDFmM2EzYy4uNzNlMjQ0ZDFjNzk4NjZhZjIyYTA1MjAyMzYzNDNl
NmNlYTYzMjNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE0LTAxLTExICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVZLaXQgZnVsbHNj
cmVlbiB2aWRlbyBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjY4MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIG9ic2VydmFibGUgY2hhbmdlIGluIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgQWRkIGFi
aWxpdHkgZm9yIGZ1bGxzY3JlZW4gdG8gYm9ycm93IHRoZSBBVlBsYXllckxheWVyLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjptZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0
KToKKyAgICAgICAgQWRkIGEgZGlzYWJsZWQgc2V0dGluZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9y
dHNGdWxsc2NyZWVuKToKKyAgICAgICAgRW5hYmxlZCBmdWxsc2NyZWVuIGZvciBpT1MuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGluaXRd
KToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvcndhcmRpbmdUYXJnZXRGb3JTZWxlY3RvcjpdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNob3VsZERpc21pc3NGb3JEb25lXSk6
CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBwbGF5Ol0pOgorICAgICAgICAoLVtX
ZWJBVlBsYXllckNvbnRyb2xsZXIgcGF1c2U6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29u
dHJvbGxlciB0b2dnbGVQbGF5YmFjazpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9s
bGVyIGlzUGxheWluZ10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxh
eWluZzpdKToKKyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFs
dWVzQWZmZWN0aW5nUGxheWluZ10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIg
c2Vla1RvVGltZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHVwZGF0ZVRp
bWluZ1dpdGhDdXJyZW50VGltZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVy
IGVmZmVjdGl2ZVJhdGVdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNldE1l
ZGlhRWxlbWVudDpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGhhbmRsZUV2
ZW50Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToK
KyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAg
ICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0TWVkaWFFbGVtZW50Ol0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIG1lZGlhRWxlbWVudF0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjpd
KToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBleGl0RnVsbHNjcmVl
bl0pOgorICAgICAgICBBZGQgV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvciBIVE1MTWVkaWFFbGVt
ZW10IHRvIGludGVyZmFjZSB3aXRoIEFWUGxheWVyVmlld0NvbnRyb2xsZXIuCisKIDIwMTQtMDEt
MTAgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQdXNoIEluc3BlY3RvckFnZW50IGRvd24gaW50byBKU0MsIGdpdmUgSlNDIGFu
IEluc3BlY3RvckNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkZjNlNDk0NDAxYTI5OWMx
MGM0OWM4YTU1MGM1OTFmMTU5NTVjNzVmLi40N2RhYWFlMTUxNzY2OTA4ZTdiNGY5Yzg1ZDZlMmJi
MDAyZTM0OTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTQtMDEtMTEg
IEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBVktpdCBm
dWxsc2NyZWVuIHZpZGVvIGludGVyZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjgxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKToKKyAgICAgICAgRW5hYmxl
ICpGdWxsc2NyZWVuRm9yTm9kZSBmb3IgSFRNTE1lZGlhRWxlbWVudCBmb3IgaU9TCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxp
emVdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgbWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5B
VktpdF0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBzZXRNZWRpYVBsYXliYWNrRnVsbHNj
cmVlbkFWS2l0Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVm
ZXJlbmNlc0NoYW5nZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2VudGVyRnVsbHNjcmVlbkZv
ck5vZGU6V2ViQ29yZTo6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoK
KyAgICAgICAgQWRkIGEgZGlzYWJsZWQgcHJlZiBtZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0
LgorICAgICAgICBVc2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0IG9uIGlPUwor
CiAyMDE0LTAxLTEwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ2xlYW4gdXAgYXJjaGl0ZWN0dXJlcyBpbiB4Y2NvbmZpZyBmaWxlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCA2NTJkODEwYTMzNjFlODllNmE3OWFiYTdmNTJkODU3ZWJkYjZiZWE0Li4xZGNh
NzZmZGZkOTJlNTI5OGRjMmE2ZTQ5OWVlNjU1ZjE0NzYwZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtMjk1Myw3ICsyOTUzLDcgQEAgX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0
ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBUaW1lUmFuZ2VzRQogX19aTks3V2ViQ29y
ZTEwVGltZVJhbmdlczduZWFyZXN0RWQKICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAh
UExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShWSURFTykKIF9fWk5LN1dlYkNvcmUxNkhUTUxNZWRp
YUVsZW1lbnQ1ZW5kZWRFdgogX19aTks3V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDZwYXVzZWRF
dgogLm9iamNfY2xhc3NfbmFtZV9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzAx
YzRhYzE3ZmJjNGUwODMwM2VhYmY1ZGFlYjZkMzZkZTdhNzAwMC4uZjU0NGYxMTU5NjI3MmUxZjM1
NzgxM2UxNmZjYjcyMTUwYzdlZDA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3Miw2ICsxMjcyLDggQEAKIAkJM0YyQjMz
RUQxNjVBRjE1NjAwRTM5ODdDIC8qIERPTVdlYktpdENTU1ZpZXdwb3J0UnVsZUludGVybmFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjJCMzNFODE2
NUFGMTU1MDBFMzk4N0MgLyogRE9NV2ViS2l0Q1NTVmlld3BvcnRSdWxlSW50ZXJuYWwuaCAqLzsg
fTsKIAkJM0YyQjMzRUUxNjVBRjE1NjAwRTM5ODdDIC8qIEpTV2ViS2l0Q1NTVmlld3BvcnRSdWxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGMkIz
M0U5MTY1QUYxNTUwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgKi87IH07
CiAJCTNGMkIzM0VGMTY1QUYxNTYwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0YyQjMzRUEx
NjVBRjE1NTAwRTM5ODdDIC8qIEpTV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmggKi87IH07CisJCTNG
NDJCMzFEMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZL
aXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGNDJC
MzFCMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
aCAqLzsgfTsKKwkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDNGNDJCMzFDMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW0gKi87IH07CiAJCTNGRkZGOUE4MTU5RDlBNTUwMDIwQkJENSAvKiBX
ZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gM0ZGRkY5QTYxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdw
b3J0UnVsZS5jcHAgKi87IH07CiAJCTNGRkZGOUE5MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRD
U1NWaWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDNGRkZGOUE3MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUu
aCAqLzsgfTsKIAkJM0ZGRkY5QUQxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5bGVSZXNv
bHZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
RkZGRjlBQjE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcCAqLzsg
fTsKQEAgLTgxMjAsNiArODEyMiw4IEBACiAJCTNGMkIzM0U4MTY1QUYxNTUwMEUzOTg3QyAvKiBE
T01XZWJLaXRDU1NWaWV3cG9ydFJ1bGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzRjJCMzNFOTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRD
U1NWaWV3cG9ydFJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzRjJCMzNFQTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0Y0MkIzMUIxODgxMTkxQjAwMjc4QUFD
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaDsgcGF0
aCA9IGlvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJM0Y0MkIzMUMxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbTsgcGF0aCA9IGlv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTNGRkZGOUE2MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9y
dFJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NT
Vmlld3BvcnRSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0ZGRkY5QTcx
NTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJM0ZGRkY5QUIxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5
bGVSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3
cG9ydFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgw
MDIsNiArMTgwMDYsOCBAQAogCQkJCUZFMEQ4NEVBMTA0ODQzNkUwMDFBMTc5RSAvKiBXZWJFdmVu
dC5tbSAqLywKIAkJCQlBNTAyQzVERDEzMDQ5QjM1MDBGQzdENTMgLyogV2ViU2FmZUdDQWN0aXZp
dHlDYWxsYmFja0lPUy5oICovLAogCQkJCUMyQzRDQjFEMTYxQTEzMTIwMEQyMTREQSAvKiBXZWJT
YWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmggKi8sCisJCQkJM0Y0MkIzMUIxODgxMTkxQjAwMjc4
QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovLAorCQkJCTNGNDJC
MzFDMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0gKi8sCiAJCQkJRTQ1MzkwM0MwRUFGRDYzNzAwMzY5NUM4IC8qIFdpZGdldElPUy5tbSAqLywK
IAkJCSk7CiAJCQluYW1lID0gaW9zOwpAQCAtMjQ5NDEsNiArMjQ5NDcsNyBAQAogCQkJCUE5QzZF
NEY0MEQ3NDVFNDgwMDY0NDJFOSAvKiBQbHVnaW5EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NzIwNUFCQzEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBREExNDExMEUxQUU1RDkwMDAyM0VFNSAvKiBQbHVnaW5NYWluVGhyZWFkU2NoZWR1
bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzRjQyQjMxRDE4ODExOTFCMDAyNzhBQUMgLyogV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUUy
MTgzQTE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291cmNlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFBODc5OTAxMUNCRTg0NjAwM0M2NjRGIC8qIFBsdWdpblN0cmF0ZWd5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwQUZEQUMzRDEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2luVmlld0Jhc2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtMjg5MDQsNiArMjg5MTEsNyBAQAogCQkJCUIyMjI3QTkwMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMjIyN0E5MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUI1NDNCODU3MTdFQjc1OEYwMDNCRTkzQSAvKiBTVkdQcm9wZXJ0eUlu
Zm8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4QUFDIC8qIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIy
MjI3QTk2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyMjI3QTk5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBOUQwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1JlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYWFiODhjNDgxZjFlZjY1OWY0MmYxN2NmZDY2
MGQ0YjcwNzU1NWE4Yy4uMTdiNGNkMTQ3OGRkZDg5ZjYwMTIwNzA2ODVhOTFlOWYwM2MwNjFmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00ODUxLDcgKzQ4
NTEsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4oKQogICAgICAg
ICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJGdWxsc2NyZWVuRm9y
Tm9kZSh0aGlzKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0YmVn
aW5mdWxsc2NyZWVuRXZlbnQpOwogI2Vsc2UKLSAgICAgICAgaWYgKG1fcGxheWVyKQorICAgICAg
ICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpICYmIGRvY3VtZW50KCkuc2V0dGluZ3MoKS0+bWVk
aWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdCgpKSB7CisgICAgICAgICAgICBkb2N1bWVudCgpLnBh
Z2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAg
ICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGJlZ2luZnVsbHNjcmVl
bkV2ZW50KTsKKyAgICAgICAgfSBlbHNlIGlmIChtX3BsYXllcikKICAgICAgICAgICAgIG1fcGxh
eWVyLT5lbnRlckZ1bGxzY3JlZW4oKTsKICNlbmRpZgogICAgIH0KQEAgLTQ4NzksNyArNDg4Miwx
MCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKCkKICAgICAgICAgZG9j
dW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRGdWxsc2NyZWVuRm9yTm9kZSh0
aGlzKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0ZW5kZnVsbHNj
cmVlbkV2ZW50KTsKICNlbHNlCi0gICAgICAgIGlmIChtX3BsYXllcikKKyAgICAgICAgaWYgKGRv
Y3VtZW50KCkuc2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLnNldHRpbmdzKCktPm1lZGlhUGxheWJh
Y2tGdWxsc2NyZWVuQVZLaXQoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNo
cm9tZSgpLmNsaWVudCgpLmV4aXRGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAgICAgICAgICAg
IHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCk7Cisg
ICAgICAgIH0gZWxzZSBpZiAobV9wbGF5ZXIpCiAgICAgICAgICAgICBtX3BsYXllci0+ZXhpdEZ1
bGxzY3JlZW4oKTsKICNlbmRpZgogICAgIH0KQEAgLTQ5MDUsOCArNDkxMSwzMyBAQCBQbGF0Zm9y
bU1lZGlhIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTWVkaWEoKSBjb25zdAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRmb3JtTGF5ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVy
LT5wbGF0Zm9ybUxheWVyKCkgOiAwOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoZG9jdW1l
bnQoKS5zZXR0aW5ncygpICYmIGRvY3VtZW50KCkuc2V0dGluZ3MoKS0+bWVkaWFQbGF5YmFja0Z1
bGxzY3JlZW5BVktpdCgpKSB7CisgICAgICAgIGlmIChtX3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBt
X3BsYXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOwogfQorCisjaWYg
UExBVEZPUk0oSU9TKQorUGxhdGZvcm1MYXllciogSFRNTE1lZGlhRWxlbWVudDo6Ym9ycm93UGxh
dGZvcm1MYXllcigpCit7CisgICAgQVNTRVJUKCFtX3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCk7Cisg
ICAgbV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgPSB0cnVlOworICAgIGlmIChyZW5kZXJlcigpKQor
ICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHJldHVybiBtX3Bs
YXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworfQorCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnJldHVyblBsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllcikKK3sKKyAgICBBU1NFUlQobV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgJiYgcGxhdGZv
cm1MYXllciA9PSAobV9wbGF5ZXIgPyBtX3BsYXllci0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0
cikpOworICAgIG1fcGxhdGZvcm1MYXllckJvcnJvd2VkID0gZmFsc2U7CisgICAgaWYgKHJlbmRl
cmVyKCkpCisgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisjZW5k
aWYKICNlbmRpZgogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omhhc0Nsb3NlZENhcHRpb25zKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNDE4NWJhNWE5
ZmE5MWZkNzA1YzM3MzEyM2UyNDdmNjU2NmZjZjBjZC4uNjZkNGZjNmMwODY0MTkzZDAyNTkwZmI1
NzVmMmQwNmQ4YjMxMDIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
QEAgLTEzMiw2ICsxMzIsMTAgQEAgcHVibGljOgogICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1N
ZWRpYSgpIGNvbnN0OwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CisjaWYgUExBVEZPUk0oSU9TKQorICAg
IFBsYXRmb3JtTGF5ZXIqIGJvcnJvd1BsYXRmb3JtTGF5ZXIoKTsKKyAgICB2b2lkIHJldHVyblBs
YXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciopOworI2VuZGlmCiAjZW5kaWYKIAogICAgIGVudW0g
RGVsYXllZEFjdGlvblR5cGUgewpAQCAtODAyLDYgKzgwNiw3IEBAIHByaXZhdGU6CiAKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgYm9vbCBtX3JlcXVlc3RpbmdQbGF5IDogMTsKKyAgICBib29sIG1f
cGxhdGZvcm1MYXllckJvcnJvd2VkIDogMTsKICNlbmRpZgogCiAgICAgYm9vbCBtX3Jlc3VtZVBs
YXliYWNrQWZ0ZXJJbnRlcnJ1cHRpb24gOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRl
eCBlNzU2NjU1NWU1ZDZmNmYwNTFhYjE0MWVlMWVhNmQzNzIyNjkyOGM2Li45ZTBmNTEzY2JlYjll
YjhiZmQ5NTFiZWYyZGVmNDQ0NjBhMTVhMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApA
QCAtOTgsNiArOTgsNyBAQCBib29sIFNldHRpbmdzOjpnTG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVy
U2l6ZUVuYWJsZWQgPSBmYWxzZTsKIAogI2lmIFBMQVRGT1JNKElPUykKIGJvb2wgU2V0dGluZ3M6
OmdOZXR3b3JrRGF0YVVzYWdlVHJhY2tpbmdFbmFibGVkID0gZmFsc2U7Citib29sIFNldHRpbmdz
OjpnTWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdCA9IGZhbHNlOwogI2VuZGlmCiAKIC8vIE5P
VEVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggOTYyMDVmZDdlNGFmYjk5OWI2YTBhZjE5NGNi
ZjNhOGQ3NzliNjAzOS4uZmE1NTUxMGFjOWI4MWM0Y2E0MzFhYTBkYTVlNDNkNTE4M2JhMjgxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMzA0LDYgKzMwNCw5IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyB2b2lkIHNldE5ldHdvcmtJbnRlcmZhY2VOYW1lKGNvbnN0IFN0cmluZyYpOwogICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcmIG5ldHdvcmtJbnRlcmZhY2VOYW1lKCk7CisKKyAgICBzdGF0
aWMgdm9pZCBzZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KGJvb2wgZmxhZykgeyBnTWVk
aWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdCA9IGZsYWc7IH0KKyAgICBzdGF0aWMgYm9vbCBtZWRp
YVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KCkgeyByZXR1cm4gZ01lZGlhUGxheWJhY2tGdWxsc2Ny
ZWVuQVZLaXQ7IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNDAxLDYgKzQwNCw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIGJvb2wgZ1Nob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRl
U2V0dGVyczsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wgZ05ldHdvcmtEYXRh
VXNhZ2VUcmFja2luZ0VuYWJsZWQ7CisgICAgc3RhdGljIGJvb2wgZ01lZGlhUGxheWJhY2tGdWxs
c2NyZWVuQVZLaXQ7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBkb3VibGUgZ0hpZGRlblBhZ2VET01U
aW1lckFsaWdubWVudEludGVydmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA2MjBmNDMxMDlhMWE5YjU3ZDkzOTE5
YzE0ZjI5ZjZkNTY5ODgzZWU0Li42NTFiMTg3NTFiZjlkNDAzYTI4OWQ3YzE5Y2Y3ZGQ3MDFmMjBl
NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMu
aCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CkBAIC00NzQsNiArNDc1LDEwIEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzdXBwb3J0c0Z1bGxzY3JlZW4o
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICAvLyBGSVhNRTogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlciBhc3N1bWVzIGEgUVRLaXQvUXVpY2tUaW1lIG1lZGlhIGVuZ2lu
ZQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoU2V0dGluZ3M6Om1lZGlhUGxheWJhY2tGdWxs
c2NyZWVuQVZLaXQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jM2E5OTI1NTIyNTkwMjZmY2Q1MTIwMDU1OTgxOTk2NGM0OTYzMWYyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0X2gKKyNkZWZpbmUgV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0X2gKKworI2lmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8d3RmL1JlZlB0
ci5oPgorCitAY2xhc3MgVUlTY3JlZW47CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhU
TUxNZWRpYUVsZW1lbnQ7Cit9CisKK0BpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlciA6IE5TT2JqZWN0CisKKy0gKHZvaWQpc2V0TWVkaWFFbGVtZW50OihXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQ7CistIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
KiltZWRpYUVsZW1lbnQ7CisKKy0gKHZvaWQpZW50ZXJGdWxsc2NyZWVuOihVSVNjcmVlbiAqKXNj
cmVlbjsKKy0gKHZvaWQpZXhpdEZ1bGxzY3JlZW47CitAZW5kCisKKyNlbmRpZgorI2VuZGlmIC8v
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJBVktpdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjYwYmI5M2YxZDcxNzQ5MmZjYWFkYjE1ZmU5ZGYzY2I1
NWI5MjU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMCwwICsxLDM4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQg
IldlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oIgorCisjaW1wb3J0ICJET01FdmVu
dEludGVybmFsLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxBVktpdC9BVktpdC5o
PgorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CisjaW1wb3J0IDxBVktpdC9B
VlBsYXllckNvbnRyb2xsZXJfU3RhcnNreS5oPgorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3
Q29udHJvbGxlcl9Qcml2YXRlLmg+CisjaW1wb3J0IDxBVktpdC9BVlZhbHVlVGltaW5nLmg+Cisj
aW1wb3J0IDxDb3JlTWVkaWEvQ01UaW1lLmg+CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9ET01FdmVudExpc3RlbmVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50TGlzdGVuZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RXZlbnROYW1lcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MRWxlbWVudC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL09iakNFdmVudExp
c3RlbmVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyRWxlbWVudC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKK1NPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQ
bGF5ZXJDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllclZpZXdDb250
cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVlVGltaW5nKQorCitTT0ZUX0xJ
TktfRlJBTUVXT1JLKFVJS2l0KQorU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSVNjcmVlbikKK1NP
RlRfTElOS19DTEFTUyhVSUtpdCwgVUlXaW5kb3cpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJ
VmlldykKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlWaWV3Q29udHJvbGxlcikKK1NPRlRfTElO
S19DTEFTUyhVSUtpdCwgVUlDb2xvcikKKworU09GVF9MSU5LX0ZSQU1FV09SSyhDb3JlTWVkaWEp
CitTT0ZUX0xJTksoQ29yZU1lZGlhLCBDTVRpbWVNYWtlV2l0aFNlY29uZHMsIENNVGltZSwgKEZs
b2F0NjQgc2Vjb25kcywgaW50MzJfdCBwcmVmZXJyZWRUaW1lU2NhbGUpLCAoc2Vjb25kcywgcHJl
ZmVycmVkVGltZVNjYWxlKSkKK1NPRlRfTElOSyhDb3JlTWVkaWEsIENNVGltZUdldFNlY29uZHMs
IEZsb2F0NjQsIChDTVRpbWUgdGltZSksICh0aW1lKSkKKworQGludGVyZmFjZSBXZWJBVlBsYXll
ckNvbnRyb2xsZXIgOiBOU09iamVjdCA8RE9NRXZlbnRMaXN0ZW5lcj4KKworQHByb3BlcnR5KHJl
dGFpbikgQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyUHJveHk7CitAcHJvcGVy
dHkocmV0YWluKSBDQUxheWVyPEFWUGxheWVyTGF5ZXI+ICpwbGF5ZXJMYXllcjsKKworQHByb3Bl
cnR5IEJPT0wgY2FuUGxheTsKK0Bwcm9wZXJ0eShnZXR0ZXI9aXNQbGF5aW5nKSBCT09MIHBsYXlp
bmc7CitAcHJvcGVydHkgQk9PTCBjYW5QYXVzZTsKK0Bwcm9wZXJ0eSBCT09MIGNhblRvZ2dsZVBs
YXliYWNrOworQHByb3BlcnR5IGRvdWJsZSByYXRlOworQHByb3BlcnR5IEJPT0wgY2FuU2VlazsK
K0Bwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb247CitAcHJvcGVydHkgTlNT
aXplIGNvbnRlbnREaW1lbnNpb25zOworQHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZEF1ZGlvOwor
QHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZFZpZGVvOworQHByb3BlcnR5IE5TVGltZUludGVydmFs
IG1pblRpbWU7CitAcHJvcGVydHkgTlNUaW1lSW50ZXJ2YWwgbWF4VGltZTsKK0Bwcm9wZXJ0eSBO
U1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb25XaXRoaW5FbmRUaW1lczsKK0Bwcm9wZXJ0eShy
ZXRhaW4pIE5TQXJyYXkgKmxvYWRlZFRpbWVSYW5nZXM7CitAcHJvcGVydHkgQVZQbGF5ZXJDb250
cm9sbGVyU3RhdHVzIHN0YXR1czsKK0Bwcm9wZXJ0eShyZXRhaW4pIEFWVmFsdWVUaW1pbmcgKnRp
bWluZzsKKy0gKHZvaWQpaGFuZGxlRXZlbnQ6KERPTUV2ZW50ICopZXZ0OworCitAZW5kCisKKwor
QGltcGxlbWVudGF0aW9uIFdlYkFWUGxheWVyQ29udHJvbGxlcgoreworICAgIFJlZlB0cjxIVE1M
TWVkaWFFbGVtZW50PiBfbWVkaWFFbGVtZW50OworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBf
bGlzdGVuZXI7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBzZWxmOworICAgIAorICAgIGluaXRBVlBs
YXllckNvbnRyb2xsZXIoKTsKKyAgICBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IFtbY2xh
c3NBVlBsYXllckNvbnRyb2xsZXIgYWxsb2NdIGluaXRdOworICAgIHJldHVybiBzZWxmOworfQor
CistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IG5p
bDsKKyAgICBzZWxmLnBsYXllckxheWVyID0gbmlsOworICAgIHNlbGYubG9hZGVkVGltZVJhbmdl
cyA9IG5pbDsKKyAgICBzZWxmLnRpbWluZyA9IG5pbDsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9
CisKKy0gKGlkKWZvcndhcmRpbmdUYXJnZXRGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHNlbGVjdG9yKTsKKyAgICByZXR1cm4gc2VsZi5wbGF5ZXJDb250cm9s
bGVyUHJveHk7Cit9CisKKy0gKEJPT0wpc2hvdWxkRGlzbWlzc0ZvckRvbmUKK3sKKyAgICBXZWJU
aHJlYWRSdW4oXnsKKyAgICAgICAgX21lZGlhRWxlbWVudC5nZXQoKS0+ZXhpdEZ1bGxzY3JlZW4o
KTsKKyAgICB9KTsKKyAgICByZXR1cm4gTk87Cit9CisKKy0gKHZvaWQpcGxheTooaWQpc2VuZGVy
Cit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgV2ViVGhyZWFkUnVuKF57CisgICAg
ICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPnBsYXkoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClw
YXVzZTooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgV2ViVGhy
ZWFkUnVuKF57CisgICAgICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPnBhdXNlKCk7CisgICAgfSk7
Cit9CisKKy0gKHZvaWQpdG9nZ2xlUGxheWJhY2s6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9Q
QVJBTShzZW5kZXIpOworICAgIFdlYlRocmVhZFJ1biheeworICAgICAgICBfbWVkaWFFbGVtZW50
LmdldCgpLT50b2dnbGVQbGF5U3RhdGUoKTsKKyAgICB9KTsKK30KKworLSAoQk9PTClpc1BsYXlp
bmcKK3sKKyAgICByZXR1cm4gKFtzZWxmIHJhdGVdICE9IDAuKTsKK30KKworLSAodm9pZClzZXRQ
bGF5aW5nOihCT09MKXBsYXlpbmcKK3sKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgaWYg
KHBsYXlpbmcpCisgICAgICAgICAgICBfbWVkaWFFbGVtZW50LmdldCgpLT5wbGF5KCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPnBhdXNlKCk7CisgICAg
fSk7Cit9CisKKysgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdQbGF5aW5nCit7
CisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAicmF0ZSJdOworfQorCistICh2b2lk
KXNlZWtUb1RpbWU6KE5TVGltZUludGVydmFsKXRpbWUKK3sKKyAgICBXZWJUaHJlYWRSdW4oXnsK
KyAgICAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlIHt9OworICAgICAgICBfbWVkaWFF
bGVtZW50LmdldCgpLT5zZXRDdXJyZW50VGltZSh0aW1lLCBleGNlcHRpb25Db2RlKTsKKyAgICB9
KTsKK30KKworLSAodm9pZCl1cGRhdGVUaW1pbmdXaXRoQ3VycmVudFRpbWU6KE5TVGltZUludGVy
dmFsKWN1cnJlbnRUaW1lCit7CisgICAgTlNUaW1lSW50ZXJ2YWwgYW5jaG9yVGltZVN0YW1wID0g
KFtzZWxmIHJhdGVdID09IDAuZikgPyBOQU4gOiBbY2xhc3NBVlZhbHVlVGltaW5nIGN1cnJlbnRU
aW1lU3RhbXBdOworICAgIEFWVmFsdWVUaW1pbmcgKnRpbWluZyA9IFtjbGFzc0FWVmFsdWVUaW1p
bmcgdmFsdWVUaW1pbmdXaXRoQW5jaG9yVmFsdWU6Y3VycmVudFRpbWUKKyAgICAgIGFuY2hvclRp
bWVTdGFtcDphbmNob3JUaW1lU3RhbXAgcmF0ZTowXTsKKyAgICBbc2VsZiBzZXRUaW1pbmc6dGlt
aW5nXTsKK30KKworLSAoZG91YmxlKWVmZmVjdGl2ZVJhdGUKK3sKKyAgICByZXR1cm4gX21lZGlh
RWxlbWVudC5nZXQoKS0+aXNQbGF5aW5nKCkgPyBfbWVkaWFFbGVtZW50LmdldCgpLT5wbGF5YmFj
a1JhdGUoKSA6IDAuOworfQorCistICh2b2lkKXNldE1lZGlhRWxlbWVudDooUGFzc1JlZlB0cjxI
VE1MTWVkaWFFbGVtZW50PiltZWRpYUVsZW1lbnQKK3sKKyAgICBpZiAoX21lZGlhRWxlbWVudCA9
PSBtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoX21lZGlhRWxl
bWVudCAmJiBfbGlzdGVuZXIpCisgICAgeworICAgICAgICBfbWVkaWFFbGVtZW50LmdldCgpLT5y
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50LCBfbGlz
dGVuZXIuZ2V0KCksIGZhbHNlKTsKKyAgICAgICAgX21lZGlhRWxlbWVudC5nZXQoKS0+cmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucGF1c2VFdmVudCwgX2xpc3RlbmVyLmdldCgpLCBm
YWxzZSk7CisgICAgICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLnBsYXlFdmVudCwgX2xpc3RlbmVyLmdldCgpLCBmYWxzZSk7CisgICAgICAg
IF9tZWRpYUVsZW1lbnQuZ2V0KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJh
dGVjaGFuZ2VFdmVudCwgX2xpc3RlbmVyLmdldCgpLCBmYWxzZSk7CisgICAgICAgIF9tZWRpYUVs
ZW1lbnQuZ2V0KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVF
dmVudCwgX2xpc3RlbmVyLmdldCgpLCBmYWxzZSk7CisgICAgfQorICAgIAorICAgIGlmIChfbWVk
aWFFbGVtZW50KQorICAgIHsKKyAgICAgICAgW3NlbGYucGxheWVyTGF5ZXIgcmVtb3ZlRnJvbVN1
cGVybGF5ZXJdOworICAgICAgICBfbWVkaWFFbGVtZW50LT5yZXR1cm5QbGF0Zm9ybUxheWVyKHNl
bGYucGxheWVyTGF5ZXIpOworICAgICAgICBzZWxmLnBsYXllckxheWVyID0gbmlsOworICAgIH0K
KyAgICAKKyAgICBfbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50OworICAgIF9saXN0ZW5lciA9
IG51bGxwdHI7CisgICAgCisgICAgaWYgKCFfbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBfbGlzdGVuZXIgPSBPYmpDRXZlbnRMaXN0ZW5lcjo6d3JhcChzZWxmKTsKKworICAg
IF9tZWRpYUVsZW1lbnQuZ2V0KCktPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmR1cmF0
aW9uY2hhbmdlRXZlbnQsIF9saXN0ZW5lciwgZmFsc2UpOworICAgIF9tZWRpYUVsZW1lbnQuZ2V0
KCktPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIF9saXN0ZW5lciwg
ZmFsc2UpOworICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLnBsYXlFdmVudCwgX2xpc3RlbmVyLCBmYWxzZSk7CisgICAgX21lZGlhRWxlbWVudC5n
ZXQoKS0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50LCBfbGlz
dGVuZXIsIGZhbHNlKTsKKyAgICBfbWVkaWFFbGVtZW50LmdldCgpLT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQsIF9saXN0ZW5lciwgZmFsc2UpOworCisgICAg
ZG91YmxlIGR1cmF0aW9uID0gX21lZGlhRWxlbWVudC5nZXQoKS0+ZHVyYXRpb24oKTsKKworICAg
IHNlbGYuY2FuUGxheSA9IFlFUzsKKyAgICBzZWxmLmNhblBhdXNlID0gWUVTOworICAgIHNlbGYu
Y2FuVG9nZ2xlUGxheWJhY2sgPSBZRVM7CisgICAgc2VsZi5jb250ZW50RHVyYXRpb24gPSBkdXJh
dGlvbjsKKyAgICBzZWxmLmhhc0VuYWJsZWRBdWRpbyA9IFlFUzsKKyAgICBzZWxmLmNhblNlZWsg
PSBZRVM7CisgICAgc2VsZi5taW5UaW1lID0gMDsKKyAgICBzZWxmLm1heFRpbWUgPSBkdXJhdGlv
bjsKKyAgICBzZWxmLmNvbnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVzID0gZHVyYXRpb247Cisg
ICAgc2VsZi5sb2FkZWRUaW1lUmFuZ2VzID0gQFsgQDAsIEAoZHVyYXRpb24pIF07CisgICAgc2Vs
Zi5yYXRlID0gW3NlbGYgZWZmZWN0aXZlUmF0ZV07CisgICAgc2VsZi5zdGF0dXMgPSBBVlBsYXll
ckNvbnRyb2xsZXJTdGF0dXNSZWFkeVRvUGxheTsKKworICAgIHNlbGYucGxheWVyTGF5ZXIgPSAo
Q0FMYXllcjxBVlBsYXllckxheWVyPiAqKV9tZWRpYUVsZW1lbnQuZ2V0KCktPmJvcnJvd1BsYXRm
b3JtTGF5ZXIoKTsKKyAgICBbc2VsZi5wbGF5ZXJMYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07
CisKKyAgICBbc2VsZiB1cGRhdGVUaW1pbmdXaXRoQ3VycmVudFRpbWU6X21lZGlhRWxlbWVudC5n
ZXQoKS0+Y3VycmVudFRpbWUoKV07CisKKyAgICBpZiAoaXNIVE1MVmlkZW9FbGVtZW50KF9tZWRp
YUVsZW1lbnQuZ2V0KCkpKSB7CisgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgKnZlID0gdG9IVE1M
VmlkZW9FbGVtZW50KF9tZWRpYUVsZW1lbnQuZ2V0KCkpOworICAgICAgICBzZWxmLmhhc0VuYWJs
ZWRWaWRlbyA9IFlFUzsKKyAgICAgICAgc2VsZi5jb250ZW50RGltZW5zaW9ucyA9IENHU2l6ZU1h
a2UodmUtPnZpZGVvV2lkdGgoKSwgdmUtPnZpZGVvSGVpZ2h0KCkpOworICAgIH0KK30KKworLSAo
dm9pZCloYW5kbGVFdmVudDooRE9NRXZlbnQgKilldm50Cit7CisgICAgRXZlbnQgKmV2ZW50ID0g
Y29yZShldm50KTsKKyAgICAKKyAgICBpZiAoIV9tZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIExPRyhNZWRpYSwgImhhbmRsZUV2ZW50ICVzIiwgZXZlbnQtPnR5cGUoKS5jaGFy
YWN0ZXJzOCgpKTsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5kdXJh
dGlvbmNoYW5nZUV2ZW50KSB7CisgICAgICAgIGRvdWJsZSBkdXJhdGlvbiA9IF9tZWRpYUVsZW1l
bnQuZ2V0KCktPmR1cmF0aW9uKCk7CisgICAgICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gZHVy
YXRpb247CisgICAgICAgIHNlbGYubWF4VGltZSA9IGR1cmF0aW9uOworICAgICAgICBzZWxmLmNv
bnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVzID0gZHVyYXRpb247CisgICAgICAgIHNlbGYubG9h
ZGVkVGltZVJhbmdlcyA9IEBbCisgICAgICAgICAgICBAMCwKKyAgICAgICAgICAgIEAoZHVyYXRp
b24pCisgICAgICAgIF07CisgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5wYXVzZUV2ZW50CisgICAgICAgICAgICB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5wbGF5RXZlbnQKKyAgICAgICAgICAgIHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLnJhdGVjaGFuZ2VFdmVudCkKKyAgICAgICAgc2VsZi5yYXRlID0gW3NlbGYgZWZmZWN0aXZl
UmF0ZV07CisgICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudGltZXVw
ZGF0ZUV2ZW50KQorICAgICAgICBbc2VsZiB1cGRhdGVUaW1pbmdXaXRoQ3VycmVudFRpbWU6X21l
ZGlhRWxlbWVudC5nZXQoKS0+Y3VycmVudFRpbWUoKV07Cit9CisKK0BlbmQKKworQGludGVyZmFj
ZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyICgpIDxVSVZpZXdDb250cm9sbGVyVHJhbnNp
dGlvbmluZ0RlbGVnYXRlPgorQHByb3BlcnR5KHJldGFpbikgVUlXaW5kb3cgKndpbmRvdzsKK0Bw
cm9wZXJ0eShyZXRhaW4pIFVJVmlld0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyOworQHByb3Bl
cnR5KHJldGFpbikgQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAqcGxheWVyVmlld0NvbnRyb2xsZXI7
CitAcHJvcGVydHkocmV0YWluKSBXZWJBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xs
ZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Cit7CisgICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IF9tZWRpYUVsZW1lbnQ7Cit9CisKKy0g
KGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkgewor
ICAgICAgICBpbml0VUlTY3JlZW4oKTsKKyAgICAgICAgaW5pdFVJVmlldygpOworICAgICAgICBp
bml0VUlDb2xvcigpOworICAgICAgICBpbml0VUlXaW5kb3coKTsKKyAgICAgICAgaW5pdEFWUGxh
eWVyQ29udHJvbGxlcigpOworICAgICAgICBpbml0QVZQbGF5ZXJWaWV3Q29udHJvbGxlcigpOwor
ICAgICAgICBpbml0QVZWYWx1ZVRpbWluZygpOworICAgICAgICBpbml0VUlWaWV3Q29udHJvbGxl
cigpOworICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7Cisg
ICAgc2VsZi53aW5kb3cgPSBuaWw7CisgICAgc2VsZi52aWV3Q29udHJvbGxlciA9IG5pbDsKKyAg
ICBzZWxmLnBsYXllclZpZXdDb250cm9sbGVyID0gbmlsOworICAgIHNlbGYucGxheWVyQ29udHJv
bGxlciA9IG5pbDsKKyAgICBfbWVkaWFFbGVtZW50ID0gbnVsbHB0cjsKKyAgICBbc3VwZXIgZGVh
bGxvY107Cit9CisKKy0gKHZvaWQpc2V0TWVkaWFFbGVtZW50OihIVE1MTWVkaWFFbGVtZW50Kilt
ZWRpYUVsZW1lbnQKK3sKKyAgICBfbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50OworfQorCist
IChIVE1MTWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQKK3sKKyAgICByZXR1cm4gX21lZGlhRWxl
bWVudC5nZXQoKTsKK30KKworLSAodm9pZCllbnRlckZ1bGxzY3JlZW46KFVJU2NyZWVuICopc2Ny
ZWVuCit7CisgICAgaWYgKCFzY3JlZW4pCisgICAgICAgIHNjcmVlbiA9IFtjbGFzc1VJU2NyZWVu
IG1haW5TY3JlZW5dOworCisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyID0gW1tbV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgc2VsZi5wbGF5ZXJD
b250cm9sbGVyLm1lZGlhRWxlbWVudCA9IF9tZWRpYUVsZW1lbnQ7CisKKyAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBzZWxmLnBsYXllclZp
ZXdDb250cm9sbGVyID0gW1tbY2xhc3NBVlBsYXllclZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHNlbGYucGxheWVyVmlld0NvbnRyb2xsZXIucGxheWVy
Q29udHJvbGxlciA9IChBVlBsYXllckNvbnRyb2xsZXIgKilzZWxmLnBsYXllckNvbnRyb2xsZXI7
CisgICAgICAgIAorICAgICAgICBzZWxmLnZpZXdDb250cm9sbGVyID0gW1tbY2xhc3NVSVZpZXdD
b250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIAorICAgICAgICBz
ZWxmLndpbmRvdyA9IFtbW2NsYXNzVUlXaW5kb3cgYWxsb2NdIGluaXRXaXRoRnJhbWU6W3NjcmVl
biBib3VuZHNdXSBhdXRvcmVsZWFzZV07CisgICAgICAgIHNlbGYud2luZG93LmJhY2tncm91bmRD
b2xvciA9IFtjbGFzc1VJQ29sb3IgY2xlYXJDb2xvcl07CisgICAgICAgIHNlbGYud2luZG93LnJv
b3RWaWV3Q29udHJvbGxlciA9IChVSVZpZXdDb250cm9sbGVyICopc2VsZi52aWV3Q29udHJvbGxl
cjsKKyAgICAgICAgW3NlbGYud2luZG93IG1ha2VLZXlBbmRWaXNpYmxlXTsKKyAgICAgICAgCisg
ICAgICAgIFtzZWxmLnZpZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjpzZWxmLnBs
YXllclZpZXdDb250cm9sbGVyIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07CisgICAgfSk7
Cit9CisKKy0gKHZvaWQpZXhpdEZ1bGxzY3JlZW4KK3sKKyAgICBzZWxmLnBsYXllckNvbnRyb2xs
ZXIubWVkaWFFbGVtZW50ID0gbnVsbHB0cjsKKworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIFtzZWxmLnZpZXdDb250cm9sbGVyIGRpc21p
c3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOllFUyBjb21wbGV0aW9uOl57CisgICAgICAgICAgICBz
ZWxmLndpbmRvdy5oaWRkZW4gPSBZRVM7CisgICAgICAgICAgICBzZWxmLndpbmRvdy5yb290Vmll
d0NvbnRyb2xsZXIgPSBuaWw7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNlbGYucGxheWVy
Vmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgICAgICAgICBzZWxmLnZpZXdDb250cm9sbGVyID0g
bmlsOworICAgICAgICAgICAgc2VsZi53aW5kb3cgPSBuaWw7CisgICAgICAgICAgICBXZWJUaHJl
YWRSdW4oXnsKKyAgICAgICAgICAgICAgICBfbWVkaWFFbGVtZW50ID0gbnVsbHB0cjsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgCisgICAgICAgIH1dOworICAgIH0pOworfQorCitAZW5k
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAppbmRleCBiODM5Mjg2YjY4NjAwZGI4OWE5YWI2ODFlMzU2MDQ5ZDJiYmQ4
MDJiLi4yZWM4MjYxOTEzOWI2NDQ4YWI5ZWViM2I3ZTk4MzgwMDYxMjgzNzliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAt
MTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShWSURF
TykgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgV2ViQ29yZTo6Tm9kZSopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNv
cmU6Ok5vZGUqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCBiZWU4NzZhMWVjNzA4MWU2NWVhY2M3MThl
Yzc3MDFkZTE0M2FhNzNhLi5lMzUyMDllZTM0OTFjNDNhZTFmYzIzZmUyNmMyODQwZDZhYWQ5MDM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCkBAIC05NjcsMTEgKzk2NywxOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2No
ZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKQogCiAjZW5kaWYKIAotI2lmIEVOQUJMRShWSURF
TykgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoVklERU8pCiAKIGJvb2wgV2ViQ2hyb21l
Q2xpZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChTZXR0aW5nczo6bWVkaWFQbGF5YmFja0Z1bGxzY3Jl
ZW5BVktpdCgpKQorICAgICAgICByZXR1cm4gaXNIVE1MVmlkZW9FbGVtZW50KG5vZGUpOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKICAgICByZXR1cm4gaXNIVE1MVmlk
ZW9FbGVtZW50KG5vZGUpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbnRl
ckZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAppbmRleCBjNGRmMjI3Y2YyNGU5
NWViYThkYTI3NTg5NzVlMGQ2OGJiZDk2ZDA1Li4wNmIyZjE4N2FhYjBhODE4NWQyZTg4MDk1NGNl
ZTUxMmRkNDZkZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmgKQEAgLTEzMyw2ICsxMzMsNyBAQAogI2lmIFRBUkdFVF9P
U19JUEhPTkUKICNkZWZpbmUgV2ViS2l0TWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXlQcmVmZXJl
bmNlS2V5IEAiV2ViS2l0TWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXkiCiAjZGVmaW5lIFdlYktp
dEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGUgQCJXZWJLaXRBdWRpb1Nlc3Npb25DYXRlZ29y
eU92ZXJyaWRlIgorI2RlZmluZSBXZWJLaXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0IEAi
V2ViS2l0TWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdCIKICNlbmRpZgogI2RlZmluZSBXZWJL
aXRSZWdpb25CYXNlZENvbHVtbnNFbmFibGVkS2V5IEAiV2ViS2l0UmVnaW9uQmFzZWRDb2x1bW5z
RW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb25LZXkg
QCJXZWJLaXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IDM1NDgwY2EyZDVhMjg3NzhiYjY5ZmQ5
MzlhYmZkNjdlZDFjZTU1NjQuLjAwOTU5ZDUxNDc5MmQyYjY3YmMyNzBhMGRjOGI4NmFkMzUzYjdj
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAt
NTE3LDYgKzUxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29s
Ok5PXSwgICBXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lUHJlZmVyZW5jZUtleSwKICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRNZWRpYVBsYXliYWNr
QWxsb3dzQWlyUGxheVByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
VW5zaWduZWRJbnQ6QXVkaW9TZXNzaW9uOjpOb25lXSwgIFdlYktpdEF1ZGlvU2Vzc2lvbkNhdGVn
b3J5T3ZlcnJpZGUsCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2Vi
S2l0TWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdCwKICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhMb25nTG9uZzpXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgp
XSwgV2ViS2l0QXBwbGljYXRpb25DYWNoZVRvdGFsUXVvdGEsCiAKICAgICAgICAgLy8gUGVyLU9y
aWdpbiBRdW90YSBvbiBpT1MgaXMgMjVNQi4gV2hlbiB0aGUgcXVvdGEgaXMgcmVhY2hlZCBmb3Ig
YSBwYXJ0aWN1bGFyIG9yaWdpbgpAQCAtMjE3OCw2ICsyMTc5LDE2IEBAIHN0YXRpYyBOU1N0cmlu
ZyAqY2xhc3NJQkNyZWF0b3JJRCA9IG5pbDsKICAgICBbc2VsZiBfc2V0VW5zaWduZWRJbnRWYWx1
ZTpvdmVycmlkZSBmb3JLZXk6V2ViS2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZV07CiB9
CiAKKy0gKEJPT0wpbWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdAoreworICAgIHJldHVybiBb
c2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdE1lZGlhUGxheWJhY2tGdWxsc2NyZWVuQVZLaXRd
OworfQorCistICh2b2lkKXNldE1lZGlhUGxheWJhY2tGdWxsc2NyZWVuQVZLaXQ6KGJvb2wpZmxh
ZworeworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZmxhZyBmb3JLZXk6V2ViS2l0TWVkaWFQbGF5
YmFja0Z1bGxzY3JlZW5BVktpdF07Cit9CisKIC0gKEJPT0wpbmV0d29ya0RhdGFVc2FnZVRyYWNr
aW5nRW5hYmxlZAogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdE5l
dHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDU4ZjMy
Zjc5YjAwY2FlZGU4Mzc2NGI3ODk5NDdmMGUyYjc3NzhiNzguLjMxZjQ1NjcwODBmNjM5ZDJhNjIx
NGE0MjE3MDZiMzFhOWNmMTU1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMjU5LDYgKzI1OSw5IEBAIGV4dGVybiBOU1N0
cmluZyAqV2ViUHJlZmVyZW5jZXNDYWNoZU1vZGVsQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9u
OwogLSAodW5zaWduZWQpYXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZTsKIC0gKHZvaWQpc2V0
QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZToodW5zaWduZWQpb3ZlcnJpZGU7CiAKKy0gKEJP
T0wpbWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdDsKKy0gKHZvaWQpc2V0TWVkaWFQbGF5YmFj
a0Z1bGxzY3JlZW5BVktpdDooYm9vbClmbGFnOworCiAvLyBXQVJOSU5HOiB0aGlzIGFmZmVjdCBu
ZXR3b3JrIHBlcmZvcm1hbmNlLiBUaGlzIG11c3Qgbm90IGJlIGVuYWJsZWQgZm9yIHByb2R1Y3Rp
b24gdXNlLgogLy8gRW5hYmxpbmcgdGhpcyBtYWtlcyBXZWJDb3JlIHJlcG9ydHMgdGhlIG5ldHdv
cmsgZGF0YSB1c2FnZS4KIC8vIFRoaXMgaXMgYSBnbG9iYWwgc2V0dGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAwNDg4OTAwMTcxYzkyMDZhODRlY2Y1MjJmNTNlZDE1
N2Q0NGY0NzkxLi5mMDJlZjljNjhhZmIxMDEzNDY1YTljNDAzYWMyNTlmNmU3MmQyOWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xNzgsNyArMTc4LDYgQEAKICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNF
eHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVZpZXcuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XaWRn
ZXQuaD4KICNpbXBvcnQgPFdlYktpdC9ET00uaD4KICNpbXBvcnQgPFdlYktpdC9ET01FeHRlbnNp
b25zLmg+CkBAIC0yMzcsMTMgKzIzNiwxNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhy
ZWFkTWVzc2FnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5oPgogI2ltcG9ydCA8ZGlzcGF0Y2gvcHJpdmF0ZS5oCiAjaW1w
b3J0IDx3dGYvRmFzdE1hbGxvYy5oPgorI2Vsc2UKKyNpbXBvcnQgPFdlYkNvcmUvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5oPgorI2VuZGlmCiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBQTEFURk9STShJ
T1MpCiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNlbmRpZgotI2VuZGlmCiAK
ICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAjaW1wb3J0IDxXZWJLaXQvV2ViRGFzaGJv
YXJkUmVnaW9uLmg+CkBAIC0yNDI3LDYgKzI0MjksNyBAQCBzdGF0aWMgYm9vbCBuZWVkc1NlbGZS
ZXRhaW5XaGlsZUxvYWRpbmdRdWlyaygpCiAgICAgc2V0dGluZ3Muc2V0QXVkaW9TZXNzaW9uQ2F0
ZWdvcnlPdmVycmlkZShbcHJlZmVyZW5jZXMgYXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZV0p
OwogICAgIHNldHRpbmdzLnNldE5ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWQoW3ByZWZl
cmVuY2VzIG5ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWRdKTsKICAgICBzZXR0aW5ncy5z
ZXROZXR3b3JrSW50ZXJmYWNlTmFtZShbcHJlZmVyZW5jZXMgbmV0d29ya0ludGVyZmFjZU5hbWVd
KTsKKyAgICBzZXR0aW5ncy5zZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KFtwcmVmZXJl
bmNlcyBtZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0XSk7CiAjZW5kaWYKICAgICBzZXR0aW5n
cy5zZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShbcHJlZmVyZW5jZXMgbWVkaWFQ
bGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmVdKTsKICAgICBzZXR0aW5ncy5zZXRNZWRpYVBsYXli
YWNrQWxsb3dzSW5saW5lKFtwcmVmZXJlbmNlcyBtZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lXSk7
CkBAIC04NTIxLDcgKzg1MjQsNyBAQCBib29sIExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExh
eWVycygpCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKQor
I2lmIEVOQUJMRShWSURFTykKIC0gKHZvaWQpX2VudGVyRnVsbHNjcmVlbkZvck5vZGU6KFdlYkNv
cmU6Ok5vZGUqKW5vZGUKIHsKICAgICBBU1NFUlQoaXNIVE1MVmlkZW9FbGVtZW50KG5vZGUpKTsK
QEAgLTg1NDQsNyArODU0NywxMSBAQCBib29sIExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExh
eWVycygpCiAgICAgaWYgKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIpIHsKICAgICAg
ICAgX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyID0gW1tXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyIGFsbG9jXSBpbml0XTsKICAgICAgICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29u
dHJvbGxlciBzZXRNZWRpYUVsZW1lbnQ6dmlkZW9FbGVtZW50XTsKLSAgICAgICAgW19wcml2YXRl
LT5mdWxsc2NyZWVuQ29udHJvbGxlciBlbnRlckZ1bGxzY3JlZW46W1tzZWxmIHdpbmRvd10gc2Ny
ZWVuXV07ICAgICAgICAKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIFtfcHJpdmF0ZS0+ZnVs
bHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOm5pbF07CisjZWxzZQorICAgICAgICBb
X3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjpbW3NlbGYgd2lu
ZG93XSBzY3JlZW5dXTsKKyNlbmRpZgogICAgIH0KICAgICBlbHNlCiAgICAgICAgIFtfcHJpdmF0
ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0TWVkaWFFbGVtZW50OnZpZGVvRWxlbWVudF07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCA1ZmRmNWRm
MGZiZmM0ZjY3M2JkNTRiNjY2ODg2ZTliMzY2MWI1NDYyLi40MWQyZDE3N2QxM2U1MTg5ZDA1OWY1
YTEzYTIwNjM0OGRlZjk0N2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0ludGVybmFsLmgKQEAgLTIzNiw3ICsyMzYsNyBAQCBPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0
aXZlczsKIAogLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVmZXJlbmNlcyAqKXBy
ZWZlcmVuY2VzOwogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBkZWZp
bmVkKF9fY3BsdXNwbHVzKQorI2lmIEVOQUJMRShWSURFTykgJiYgZGVmaW5lZChfX2NwbHVzcGx1
cykKIC0gKHZvaWQpX2VudGVyRnVsbHNjcmVlbkZvck5vZGU6KFdlYkNvcmU6Ok5vZGUqKW5vZGU7
CiAtICh2b2lkKV9leGl0RnVsbHNjcmVlbjsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221087</attachid>
            <date>2014-01-13 16:32:06 -0800</date>
            <delta_ts>2014-01-15 11:52:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126818-20140113163206.patch</filename>
            <type>text/plain</type>
            <size>37313</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxNzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMwYjMzM2VkYjFiNTk3
Y2ExNTkwZTkyZDZhOGI5NDk5NDFmM2EzYy4uNzNlMjQ0ZDFjNzk4NjZhZjIyYTA1MjAyMzYzNDNl
NmNlYTYzMjNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE0LTAxLTExICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVZLaXQgZnVsbHNj
cmVlbiB2aWRlbyBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjY4MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIG9ic2VydmFibGUgY2hhbmdlIGluIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgQWRkIGFi
aWxpdHkgZm9yIGZ1bGxzY3JlZW4gdG8gYm9ycm93IHRoZSBBVlBsYXllckxheWVyLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjptZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0
KToKKyAgICAgICAgQWRkIGEgZGlzYWJsZWQgc2V0dGluZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9y
dHNGdWxsc2NyZWVuKToKKyAgICAgICAgRW5hYmxlZCBmdWxsc2NyZWVuIGZvciBpT1MuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGluaXRd
KToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvcndhcmRpbmdUYXJnZXRGb3JTZWxlY3RvcjpdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNob3VsZERpc21pc3NGb3JEb25lXSk6
CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBwbGF5Ol0pOgorICAgICAgICAoLVtX
ZWJBVlBsYXllckNvbnRyb2xsZXIgcGF1c2U6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29u
dHJvbGxlciB0b2dnbGVQbGF5YmFjazpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9s
bGVyIGlzUGxheWluZ10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxh
eWluZzpdKToKKyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFs
dWVzQWZmZWN0aW5nUGxheWluZ10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIg
c2Vla1RvVGltZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHVwZGF0ZVRp
bWluZ1dpdGhDdXJyZW50VGltZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVy
IGVmZmVjdGl2ZVJhdGVdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNldE1l
ZGlhRWxlbWVudDpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGhhbmRsZUV2
ZW50Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToK
KyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAg
ICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0TWVkaWFFbGVtZW50Ol0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIG1lZGlhRWxlbWVudF0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjpd
KToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBleGl0RnVsbHNjcmVl
bl0pOgorICAgICAgICBBZGQgV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvciBIVE1MTWVkaWFFbGVt
ZW10IHRvIGludGVyZmFjZSB3aXRoIEFWUGxheWVyVmlld0NvbnRyb2xsZXIuCisKIDIwMTQtMDEt
MTAgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQdXNoIEluc3BlY3RvckFnZW50IGRvd24gaW50byBKU0MsIGdpdmUgSlNDIGFu
IEluc3BlY3RvckNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkZjNlNDk0NDAxYTI5OWMx
MGM0OWM4YTU1MGM1OTFmMTU5NTVjNzVmLi40N2RhYWFlMTUxNzY2OTA4ZTdiNGY5Yzg1ZDZlMmJi
MDAyZTM0OTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTQtMDEtMTEg
IEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBVktpdCBm
dWxsc2NyZWVuIHZpZGVvIGludGVyZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjgxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKToKKyAgICAgICAgRW5hYmxl
ICpGdWxsc2NyZWVuRm9yTm9kZSBmb3IgSFRNTE1lZGlhRWxlbWVudCBmb3IgaU9TCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxp
emVdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgbWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5B
VktpdF0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBzZXRNZWRpYVBsYXliYWNrRnVsbHNj
cmVlbkFWS2l0Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVm
ZXJlbmNlc0NoYW5nZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2VudGVyRnVsbHNjcmVlbkZv
ck5vZGU6V2ViQ29yZTo6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoK
KyAgICAgICAgQWRkIGEgZGlzYWJsZWQgcHJlZiBtZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0
LgorICAgICAgICBVc2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0IG9uIGlPUwor
CiAyMDE0LTAxLTEwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ2xlYW4gdXAgYXJjaGl0ZWN0dXJlcyBpbiB4Y2NvbmZpZyBmaWxlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCA2NTJkODEwYTMzNjFlODllNmE3OWFiYTdmNTJkODU3ZWJkYjZiZWE0Li4xZGNh
NzZmZGZkOTJlNTI5OGRjMmE2ZTQ5OWVlNjU1ZjE0NzYwZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtMjk1Myw3ICsyOTUzLDcgQEAgX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0
ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBUaW1lUmFuZ2VzRQogX19aTks3V2ViQ29y
ZTEwVGltZVJhbmdlczduZWFyZXN0RWQKICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAh
UExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShWSURFTykKIF9fWk5LN1dlYkNvcmUxNkhUTUxNZWRp
YUVsZW1lbnQ1ZW5kZWRFdgogX19aTks3V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDZwYXVzZWRF
dgogLm9iamNfY2xhc3NfbmFtZV9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzAx
YzRhYzE3ZmJjNGUwODMwM2VhYmY1ZGFlYjZkMzZkZTdhNzAwMC4uZjU0NGYxMTU5NjI3MmUxZjM1
NzgxM2UxNmZjYjcyMTUwYzdlZDA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3Miw2ICsxMjcyLDggQEAKIAkJM0YyQjMz
RUQxNjVBRjE1NjAwRTM5ODdDIC8qIERPTVdlYktpdENTU1ZpZXdwb3J0UnVsZUludGVybmFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjJCMzNFODE2
NUFGMTU1MDBFMzk4N0MgLyogRE9NV2ViS2l0Q1NTVmlld3BvcnRSdWxlSW50ZXJuYWwuaCAqLzsg
fTsKIAkJM0YyQjMzRUUxNjVBRjE1NjAwRTM5ODdDIC8qIEpTV2ViS2l0Q1NTVmlld3BvcnRSdWxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGMkIz
M0U5MTY1QUYxNTUwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgKi87IH07
CiAJCTNGMkIzM0VGMTY1QUYxNTYwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0YyQjMzRUEx
NjVBRjE1NTAwRTM5ODdDIC8qIEpTV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmggKi87IH07CisJCTNG
NDJCMzFEMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZL
aXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGNDJC
MzFCMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
aCAqLzsgfTsKKwkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDNGNDJCMzFDMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW0gKi87IH07CiAJCTNGRkZGOUE4MTU5RDlBNTUwMDIwQkJENSAvKiBX
ZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gM0ZGRkY5QTYxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdw
b3J0UnVsZS5jcHAgKi87IH07CiAJCTNGRkZGOUE5MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRD
U1NWaWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDNGRkZGOUE3MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUu
aCAqLzsgfTsKIAkJM0ZGRkY5QUQxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5bGVSZXNv
bHZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
RkZGRjlBQjE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcCAqLzsg
fTsKQEAgLTgxMjAsNiArODEyMiw4IEBACiAJCTNGMkIzM0U4MTY1QUYxNTUwMEUzOTg3QyAvKiBE
T01XZWJLaXRDU1NWaWV3cG9ydFJ1bGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzRjJCMzNFOTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRD
U1NWaWV3cG9ydFJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzRjJCMzNFQTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0Y0MkIzMUIxODgxMTkxQjAwMjc4QUFD
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaDsgcGF0
aCA9IGlvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJM0Y0MkIzMUMxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbTsgcGF0aCA9IGlv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTNGRkZGOUE2MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9y
dFJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NT
Vmlld3BvcnRSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0ZGRkY5QTcx
NTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJM0ZGRkY5QUIxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5
bGVSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3
cG9ydFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgw
MDIsNiArMTgwMDYsOCBAQAogCQkJCUZFMEQ4NEVBMTA0ODQzNkUwMDFBMTc5RSAvKiBXZWJFdmVu
dC5tbSAqLywKIAkJCQlBNTAyQzVERDEzMDQ5QjM1MDBGQzdENTMgLyogV2ViU2FmZUdDQWN0aXZp
dHlDYWxsYmFja0lPUy5oICovLAogCQkJCUMyQzRDQjFEMTYxQTEzMTIwMEQyMTREQSAvKiBXZWJT
YWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmggKi8sCisJCQkJM0Y0MkIzMUIxODgxMTkxQjAwMjc4
QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovLAorCQkJCTNGNDJC
MzFDMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0gKi8sCiAJCQkJRTQ1MzkwM0MwRUFGRDYzNzAwMzY5NUM4IC8qIFdpZGdldElPUy5tbSAqLywK
IAkJCSk7CiAJCQluYW1lID0gaW9zOwpAQCAtMjQ5NDEsNiArMjQ5NDcsNyBAQAogCQkJCUE5QzZF
NEY0MEQ3NDVFNDgwMDY0NDJFOSAvKiBQbHVnaW5EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NzIwNUFCQzEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBREExNDExMEUxQUU1RDkwMDAyM0VFNSAvKiBQbHVnaW5NYWluVGhyZWFkU2NoZWR1
bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzRjQyQjMxRDE4ODExOTFCMDAyNzhBQUMgLyogV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUUy
MTgzQTE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291cmNlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFBODc5OTAxMUNCRTg0NjAwM0M2NjRGIC8qIFBsdWdpblN0cmF0ZWd5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwQUZEQUMzRDEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2luVmlld0Jhc2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtMjg5MDQsNiArMjg5MTEsNyBAQAogCQkJCUIyMjI3QTkwMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMjIyN0E5MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUI1NDNCODU3MTdFQjc1OEYwMDNCRTkzQSAvKiBTVkdQcm9wZXJ0eUlu
Zm8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4QUFDIC8qIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIy
MjI3QTk2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyMjI3QTk5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBOUQwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1JlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYWFiODhjNDgxZjFlZjY1OWY0MmYxN2NmZDY2
MGQ0YjcwNzU1NWE4Yy4uMTdiNGNkMTQ3OGRkZDg5ZjYwMTIwNzA2ODVhOTFlOWYwM2MwNjFmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00ODUxLDcgKzQ4
NTEsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4oKQogICAgICAg
ICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJGdWxsc2NyZWVuRm9y
Tm9kZSh0aGlzKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0YmVn
aW5mdWxsc2NyZWVuRXZlbnQpOwogI2Vsc2UKLSAgICAgICAgaWYgKG1fcGxheWVyKQorICAgICAg
ICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpICYmIGRvY3VtZW50KCkuc2V0dGluZ3MoKS0+bWVk
aWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdCgpKSB7CisgICAgICAgICAgICBkb2N1bWVudCgpLnBh
Z2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAg
ICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGJlZ2luZnVsbHNjcmVl
bkV2ZW50KTsKKyAgICAgICAgfSBlbHNlIGlmIChtX3BsYXllcikKICAgICAgICAgICAgIG1fcGxh
eWVyLT5lbnRlckZ1bGxzY3JlZW4oKTsKICNlbmRpZgogICAgIH0KQEAgLTQ4NzksNyArNDg4Miwx
MCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKCkKICAgICAgICAgZG9j
dW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRGdWxsc2NyZWVuRm9yTm9kZSh0
aGlzKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0ZW5kZnVsbHNj
cmVlbkV2ZW50KTsKICNlbHNlCi0gICAgICAgIGlmIChtX3BsYXllcikKKyAgICAgICAgaWYgKGRv
Y3VtZW50KCkuc2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLnNldHRpbmdzKCktPm1lZGlhUGxheWJh
Y2tGdWxsc2NyZWVuQVZLaXQoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNo
cm9tZSgpLmNsaWVudCgpLmV4aXRGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAgICAgICAgICAg
IHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCk7Cisg
ICAgICAgIH0gZWxzZSBpZiAobV9wbGF5ZXIpCiAgICAgICAgICAgICBtX3BsYXllci0+ZXhpdEZ1
bGxzY3JlZW4oKTsKICNlbmRpZgogICAgIH0KQEAgLTQ5MDUsOCArNDkxMSwzMyBAQCBQbGF0Zm9y
bU1lZGlhIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTWVkaWEoKSBjb25zdAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRmb3JtTGF5ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVy
LT5wbGF0Zm9ybUxheWVyKCkgOiAwOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoZG9jdW1l
bnQoKS5zZXR0aW5ncygpICYmIGRvY3VtZW50KCkuc2V0dGluZ3MoKS0+bWVkaWFQbGF5YmFja0Z1
bGxzY3JlZW5BVktpdCgpKSB7CisgICAgICAgIGlmIChtX3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBt
X3BsYXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOwogfQorCisjaWYg
UExBVEZPUk0oSU9TKQorUGxhdGZvcm1MYXllciogSFRNTE1lZGlhRWxlbWVudDo6Ym9ycm93UGxh
dGZvcm1MYXllcigpCit7CisgICAgQVNTRVJUKCFtX3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCk7Cisg
ICAgbV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgPSB0cnVlOworICAgIGlmIChyZW5kZXJlcigpKQor
ICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHJldHVybiBtX3Bs
YXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworfQorCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnJldHVyblBsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllcikKK3sKKyAgICBBU1NFUlQobV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgJiYgcGxhdGZv
cm1MYXllciA9PSAobV9wbGF5ZXIgPyBtX3BsYXllci0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0
cikpOworICAgIG1fcGxhdGZvcm1MYXllckJvcnJvd2VkID0gZmFsc2U7CisgICAgaWYgKHJlbmRl
cmVyKCkpCisgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisjZW5k
aWYKICNlbmRpZgogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omhhc0Nsb3NlZENhcHRpb25zKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNDE4NWJhNWE5
ZmE5MWZkNzA1YzM3MzEyM2UyNDdmNjU2NmZjZjBjZC4uNjZkNGZjNmMwODY0MTkzZDAyNTkwZmI1
NzVmMmQwNmQ4YjMxMDIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
QEAgLTEzMiw2ICsxMzIsMTAgQEAgcHVibGljOgogICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1N
ZWRpYSgpIGNvbnN0OwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CisjaWYgUExBVEZPUk0oSU9TKQorICAg
IFBsYXRmb3JtTGF5ZXIqIGJvcnJvd1BsYXRmb3JtTGF5ZXIoKTsKKyAgICB2b2lkIHJldHVyblBs
YXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciopOworI2VuZGlmCiAjZW5kaWYKIAogICAgIGVudW0g
RGVsYXllZEFjdGlvblR5cGUgewpAQCAtODAyLDYgKzgwNiw3IEBAIHByaXZhdGU6CiAKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgYm9vbCBtX3JlcXVlc3RpbmdQbGF5IDogMTsKKyAgICBib29sIG1f
cGxhdGZvcm1MYXllckJvcnJvd2VkIDogMTsKICNlbmRpZgogCiAgICAgYm9vbCBtX3Jlc3VtZVBs
YXliYWNrQWZ0ZXJJbnRlcnJ1cHRpb24gOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRl
eCBlNzU2NjU1NWU1ZDZmNmYwNTFhYjE0MWVlMWVhNmQzNzIyNjkyOGM2Li45ZTBmNTEzY2JlYjll
YjhiZmQ5NTFiZWYyZGVmNDQ0NjBhMTVhMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApA
QCAtOTgsNiArOTgsNyBAQCBib29sIFNldHRpbmdzOjpnTG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVy
U2l6ZUVuYWJsZWQgPSBmYWxzZTsKIAogI2lmIFBMQVRGT1JNKElPUykKIGJvb2wgU2V0dGluZ3M6
OmdOZXR3b3JrRGF0YVVzYWdlVHJhY2tpbmdFbmFibGVkID0gZmFsc2U7Citib29sIFNldHRpbmdz
OjpnTWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdCA9IGZhbHNlOwogI2VuZGlmCiAKIC8vIE5P
VEVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggOTYyMDVmZDdlNGFmYjk5OWI2YTBhZjE5NGNi
ZjNhOGQ3NzliNjAzOS4uZmE1NTUxMGFjOWI4MWM0Y2E0MzFhYTBkYTVlNDNkNTE4M2JhMjgxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMzA0LDYgKzMwNCw5IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyB2b2lkIHNldE5ldHdvcmtJbnRlcmZhY2VOYW1lKGNvbnN0IFN0cmluZyYpOwogICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcmIG5ldHdvcmtJbnRlcmZhY2VOYW1lKCk7CisKKyAgICBzdGF0
aWMgdm9pZCBzZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KGJvb2wgZmxhZykgeyBnTWVk
aWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdCA9IGZsYWc7IH0KKyAgICBzdGF0aWMgYm9vbCBtZWRp
YVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KCkgeyByZXR1cm4gZ01lZGlhUGxheWJhY2tGdWxsc2Ny
ZWVuQVZLaXQ7IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNDAxLDYgKzQwNCw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIGJvb2wgZ1Nob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRl
U2V0dGVyczsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wgZ05ldHdvcmtEYXRh
VXNhZ2VUcmFja2luZ0VuYWJsZWQ7CisgICAgc3RhdGljIGJvb2wgZ01lZGlhUGxheWJhY2tGdWxs
c2NyZWVuQVZLaXQ7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBkb3VibGUgZ0hpZGRlblBhZ2VET01U
aW1lckFsaWdubWVudEludGVydmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA2MjBmNDMxMDlhMWE5YjU3ZDkzOTE5
YzE0ZjI5ZjZkNTY5ODgzZWU0Li42NTFiMTg3NTFiZjlkNDAzYTI4OWQ3YzE5Y2Y3ZGQ3MDFmMjBl
NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMu
aCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CkBAIC00NzQsNiArNDc1LDEwIEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzdXBwb3J0c0Z1bGxzY3JlZW4o
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICAvLyBGSVhNRTogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlciBhc3N1bWVzIGEgUVRLaXQvUXVpY2tUaW1lIG1lZGlhIGVuZ2lu
ZQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoU2V0dGluZ3M6Om1lZGlhUGxheWJhY2tGdWxs
c2NyZWVuQVZLaXQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jM2E5OTI1NTIyNTkwMjZmY2Q1MTIwMDU1OTgxOTk2NGM0OTYzMWYyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0X2gKKyNkZWZpbmUgV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0X2gKKworI2lmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8d3RmL1JlZlB0
ci5oPgorCitAY2xhc3MgVUlTY3JlZW47CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhU
TUxNZWRpYUVsZW1lbnQ7Cit9CisKK0BpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlciA6IE5TT2JqZWN0CisKKy0gKHZvaWQpc2V0TWVkaWFFbGVtZW50OihXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQ7CistIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
KiltZWRpYUVsZW1lbnQ7CisKKy0gKHZvaWQpZW50ZXJGdWxsc2NyZWVuOihVSVNjcmVlbiAqKXNj
cmVlbjsKKy0gKHZvaWQpZXhpdEZ1bGxzY3JlZW47CitAZW5kCisKKyNlbmRpZgorI2VuZGlmIC8v
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJBVktpdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjYwYmI5M2YxZDcxNzQ5MmZjYWFkYjE1ZmU5ZGYzY2I1
NWI5MjU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMCwwICsxLDM4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQg
IldlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oIgorCisjaW1wb3J0ICJET01FdmVu
dEludGVybmFsLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxBVktpdC9BVktpdC5o
PgorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CisjaW1wb3J0IDxBVktpdC9B
VlBsYXllckNvbnRyb2xsZXJfU3RhcnNreS5oPgorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3
Q29udHJvbGxlcl9Qcml2YXRlLmg+CisjaW1wb3J0IDxBVktpdC9BVlZhbHVlVGltaW5nLmg+Cisj
aW1wb3J0IDxDb3JlTWVkaWEvQ01UaW1lLmg+CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9ET01FdmVudExpc3RlbmVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50TGlzdGVuZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RXZlbnROYW1lcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MRWxlbWVudC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL09iakNFdmVudExp
c3RlbmVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyRWxlbWVudC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKK1NPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQ
bGF5ZXJDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllclZpZXdDb250
cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVlVGltaW5nKQorCitTT0ZUX0xJ
TktfRlJBTUVXT1JLKFVJS2l0KQorU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSVNjcmVlbikKK1NP
RlRfTElOS19DTEFTUyhVSUtpdCwgVUlXaW5kb3cpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJ
VmlldykKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlWaWV3Q29udHJvbGxlcikKK1NPRlRfTElO
S19DTEFTUyhVSUtpdCwgVUlDb2xvcikKKworU09GVF9MSU5LX0ZSQU1FV09SSyhDb3JlTWVkaWEp
CitTT0ZUX0xJTksoQ29yZU1lZGlhLCBDTVRpbWVNYWtlV2l0aFNlY29uZHMsIENNVGltZSwgKEZs
b2F0NjQgc2Vjb25kcywgaW50MzJfdCBwcmVmZXJyZWRUaW1lU2NhbGUpLCAoc2Vjb25kcywgcHJl
ZmVycmVkVGltZVNjYWxlKSkKK1NPRlRfTElOSyhDb3JlTWVkaWEsIENNVGltZUdldFNlY29uZHMs
IEZsb2F0NjQsIChDTVRpbWUgdGltZSksICh0aW1lKSkKKworQGludGVyZmFjZSBXZWJBVlBsYXll
ckNvbnRyb2xsZXIgOiBOU09iamVjdCA8RE9NRXZlbnRMaXN0ZW5lcj4KKworQHByb3BlcnR5KHJl
dGFpbikgQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyUHJveHk7CitAcHJvcGVy
dHkocmV0YWluKSBDQUxheWVyPEFWUGxheWVyTGF5ZXI+ICpwbGF5ZXJMYXllcjsKKworQHByb3Bl
cnR5IEJPT0wgY2FuUGxheTsKK0Bwcm9wZXJ0eShnZXR0ZXI9aXNQbGF5aW5nKSBCT09MIHBsYXlp
bmc7CitAcHJvcGVydHkgQk9PTCBjYW5QYXVzZTsKK0Bwcm9wZXJ0eSBCT09MIGNhblRvZ2dsZVBs
YXliYWNrOworQHByb3BlcnR5IGRvdWJsZSByYXRlOworQHByb3BlcnR5IEJPT0wgY2FuU2VlazsK
K0Bwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb247CitAcHJvcGVydHkgTlNT
aXplIGNvbnRlbnREaW1lbnNpb25zOworQHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZEF1ZGlvOwor
QHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZFZpZGVvOworQHByb3BlcnR5IE5TVGltZUludGVydmFs
IG1pblRpbWU7CitAcHJvcGVydHkgTlNUaW1lSW50ZXJ2YWwgbWF4VGltZTsKK0Bwcm9wZXJ0eSBO
U1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb25XaXRoaW5FbmRUaW1lczsKK0Bwcm9wZXJ0eShy
ZXRhaW4pIE5TQXJyYXkgKmxvYWRlZFRpbWVSYW5nZXM7CitAcHJvcGVydHkgQVZQbGF5ZXJDb250
cm9sbGVyU3RhdHVzIHN0YXR1czsKK0Bwcm9wZXJ0eShyZXRhaW4pIEFWVmFsdWVUaW1pbmcgKnRp
bWluZzsKKy0gKHZvaWQpaGFuZGxlRXZlbnQ6KERPTUV2ZW50ICopZXZ0OworCitAZW5kCisKKwor
QGltcGxlbWVudGF0aW9uIFdlYkFWUGxheWVyQ29udHJvbGxlcgoreworICAgIFJlZlB0cjxIVE1M
TWVkaWFFbGVtZW50PiBfbWVkaWFFbGVtZW50OworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBf
bGlzdGVuZXI7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBzZWxmOworICAgIAorICAgIGluaXRBVlBs
YXllckNvbnRyb2xsZXIoKTsKKyAgICBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IFtbY2xh
c3NBVlBsYXllckNvbnRyb2xsZXIgYWxsb2NdIGluaXRdOworICAgIHJldHVybiBzZWxmOworfQor
CistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IG5p
bDsKKyAgICBzZWxmLnBsYXllckxheWVyID0gbmlsOworICAgIHNlbGYubG9hZGVkVGltZVJhbmdl
cyA9IG5pbDsKKyAgICBzZWxmLnRpbWluZyA9IG5pbDsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9
CisKKy0gKGlkKWZvcndhcmRpbmdUYXJnZXRGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHNlbGVjdG9yKTsKKyAgICByZXR1cm4gc2VsZi5wbGF5ZXJDb250cm9s
bGVyUHJveHk7Cit9CisKKy0gKEJPT0wpc2hvdWxkRGlzbWlzc0ZvckRvbmUKK3sKKyAgICBXZWJU
aHJlYWRSdW4oXnsKKyAgICAgICAgX21lZGlhRWxlbWVudC5nZXQoKS0+ZXhpdEZ1bGxzY3JlZW4o
KTsKKyAgICB9KTsKKyAgICByZXR1cm4gTk87Cit9CisKKy0gKHZvaWQpcGxheTooaWQpc2VuZGVy
Cit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgV2ViVGhyZWFkUnVuKF57CisgICAg
ICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPnBsYXkoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClw
YXVzZTooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgV2ViVGhy
ZWFkUnVuKF57CisgICAgICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPnBhdXNlKCk7CisgICAgfSk7
Cit9CisKKy0gKHZvaWQpdG9nZ2xlUGxheWJhY2s6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9Q
QVJBTShzZW5kZXIpOworICAgIFdlYlRocmVhZFJ1biheeworICAgICAgICBfbWVkaWFFbGVtZW50
LmdldCgpLT50b2dnbGVQbGF5U3RhdGUoKTsKKyAgICB9KTsKK30KKworLSAoQk9PTClpc1BsYXlp
bmcKK3sKKyAgICByZXR1cm4gKFtzZWxmIHJhdGVdICE9IDAuKTsKK30KKworLSAodm9pZClzZXRQ
bGF5aW5nOihCT09MKXBsYXlpbmcKK3sKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgaWYg
KHBsYXlpbmcpCisgICAgICAgICAgICBfbWVkaWFFbGVtZW50LmdldCgpLT5wbGF5KCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPnBhdXNlKCk7CisgICAg
fSk7Cit9CisKKysgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdQbGF5aW5nCit7
CisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAicmF0ZSJdOworfQorCistICh2b2lk
KXNlZWtUb1RpbWU6KE5TVGltZUludGVydmFsKXRpbWUKK3sKKyAgICBXZWJUaHJlYWRSdW4oXnsK
KyAgICAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlIHt9OworICAgICAgICBfbWVkaWFF
bGVtZW50LmdldCgpLT5zZXRDdXJyZW50VGltZSh0aW1lLCBleGNlcHRpb25Db2RlKTsKKyAgICB9
KTsKK30KKworLSAodm9pZCl1cGRhdGVUaW1pbmdXaXRoQ3VycmVudFRpbWU6KE5TVGltZUludGVy
dmFsKWN1cnJlbnRUaW1lCit7CisgICAgTlNUaW1lSW50ZXJ2YWwgYW5jaG9yVGltZVN0YW1wID0g
KFtzZWxmIHJhdGVdID09IDAuZikgPyBOQU4gOiBbY2xhc3NBVlZhbHVlVGltaW5nIGN1cnJlbnRU
aW1lU3RhbXBdOworICAgIEFWVmFsdWVUaW1pbmcgKnRpbWluZyA9IFtjbGFzc0FWVmFsdWVUaW1p
bmcgdmFsdWVUaW1pbmdXaXRoQW5jaG9yVmFsdWU6Y3VycmVudFRpbWUKKyAgICAgIGFuY2hvclRp
bWVTdGFtcDphbmNob3JUaW1lU3RhbXAgcmF0ZTowXTsKKyAgICBbc2VsZiBzZXRUaW1pbmc6dGlt
aW5nXTsKK30KKworLSAoZG91YmxlKWVmZmVjdGl2ZVJhdGUKK3sKKyAgICByZXR1cm4gX21lZGlh
RWxlbWVudC5nZXQoKS0+aXNQbGF5aW5nKCkgPyBfbWVkaWFFbGVtZW50LmdldCgpLT5wbGF5YmFj
a1JhdGUoKSA6IDAuOworfQorCistICh2b2lkKXNldE1lZGlhRWxlbWVudDooUGFzc1JlZlB0cjxI
VE1MTWVkaWFFbGVtZW50PiltZWRpYUVsZW1lbnQKK3sKKyAgICBpZiAoX21lZGlhRWxlbWVudCA9
PSBtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoX21lZGlhRWxl
bWVudCAmJiBfbGlzdGVuZXIpCisgICAgeworICAgICAgICBfbWVkaWFFbGVtZW50LmdldCgpLT5y
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50LCBfbGlz
dGVuZXIuZ2V0KCksIGZhbHNlKTsKKyAgICAgICAgX21lZGlhRWxlbWVudC5nZXQoKS0+cmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucGF1c2VFdmVudCwgX2xpc3RlbmVyLmdldCgpLCBm
YWxzZSk7CisgICAgICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLnBsYXlFdmVudCwgX2xpc3RlbmVyLmdldCgpLCBmYWxzZSk7CisgICAgICAg
IF9tZWRpYUVsZW1lbnQuZ2V0KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJh
dGVjaGFuZ2VFdmVudCwgX2xpc3RlbmVyLmdldCgpLCBmYWxzZSk7CisgICAgICAgIF9tZWRpYUVs
ZW1lbnQuZ2V0KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVF
dmVudCwgX2xpc3RlbmVyLmdldCgpLCBmYWxzZSk7CisgICAgfQorICAgIAorICAgIGlmIChfbWVk
aWFFbGVtZW50KQorICAgIHsKKyAgICAgICAgW3NlbGYucGxheWVyTGF5ZXIgcmVtb3ZlRnJvbVN1
cGVybGF5ZXJdOworICAgICAgICBfbWVkaWFFbGVtZW50LT5yZXR1cm5QbGF0Zm9ybUxheWVyKHNl
bGYucGxheWVyTGF5ZXIpOworICAgICAgICBzZWxmLnBsYXllckxheWVyID0gbmlsOworICAgIH0K
KyAgICAKKyAgICBfbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50OworICAgIF9saXN0ZW5lciA9
IG51bGxwdHI7CisgICAgCisgICAgaWYgKCFfbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBfbGlzdGVuZXIgPSBPYmpDRXZlbnRMaXN0ZW5lcjo6d3JhcChzZWxmKTsKKworICAg
IF9tZWRpYUVsZW1lbnQuZ2V0KCktPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmR1cmF0
aW9uY2hhbmdlRXZlbnQsIF9saXN0ZW5lciwgZmFsc2UpOworICAgIF9tZWRpYUVsZW1lbnQuZ2V0
KCktPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIF9saXN0ZW5lciwg
ZmFsc2UpOworICAgIF9tZWRpYUVsZW1lbnQuZ2V0KCktPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLnBsYXlFdmVudCwgX2xpc3RlbmVyLCBmYWxzZSk7CisgICAgX21lZGlhRWxlbWVudC5n
ZXQoKS0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50LCBfbGlz
dGVuZXIsIGZhbHNlKTsKKyAgICBfbWVkaWFFbGVtZW50LmdldCgpLT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQsIF9saXN0ZW5lciwgZmFsc2UpOworCisgICAg
ZG91YmxlIGR1cmF0aW9uID0gX21lZGlhRWxlbWVudC5nZXQoKS0+ZHVyYXRpb24oKTsKKworICAg
IHNlbGYuY2FuUGxheSA9IFlFUzsKKyAgICBzZWxmLmNhblBhdXNlID0gWUVTOworICAgIHNlbGYu
Y2FuVG9nZ2xlUGxheWJhY2sgPSBZRVM7CisgICAgc2VsZi5jb250ZW50RHVyYXRpb24gPSBkdXJh
dGlvbjsKKyAgICBzZWxmLmhhc0VuYWJsZWRBdWRpbyA9IFlFUzsKKyAgICBzZWxmLmNhblNlZWsg
PSBZRVM7CisgICAgc2VsZi5taW5UaW1lID0gMDsKKyAgICBzZWxmLm1heFRpbWUgPSBkdXJhdGlv
bjsKKyAgICBzZWxmLmNvbnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVzID0gZHVyYXRpb247Cisg
ICAgc2VsZi5sb2FkZWRUaW1lUmFuZ2VzID0gQFsgQDAsIEAoZHVyYXRpb24pIF07CisgICAgc2Vs
Zi5yYXRlID0gW3NlbGYgZWZmZWN0aXZlUmF0ZV07CisgICAgc2VsZi5zdGF0dXMgPSBBVlBsYXll
ckNvbnRyb2xsZXJTdGF0dXNSZWFkeVRvUGxheTsKKworICAgIHNlbGYucGxheWVyTGF5ZXIgPSAo
Q0FMYXllcjxBVlBsYXllckxheWVyPiAqKV9tZWRpYUVsZW1lbnQuZ2V0KCktPmJvcnJvd1BsYXRm
b3JtTGF5ZXIoKTsKKyAgICBbc2VsZi5wbGF5ZXJMYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07
CisKKyAgICBbc2VsZiB1cGRhdGVUaW1pbmdXaXRoQ3VycmVudFRpbWU6X21lZGlhRWxlbWVudC5n
ZXQoKS0+Y3VycmVudFRpbWUoKV07CisKKyAgICBpZiAoaXNIVE1MVmlkZW9FbGVtZW50KF9tZWRp
YUVsZW1lbnQuZ2V0KCkpKSB7CisgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgKnZlID0gdG9IVE1M
VmlkZW9FbGVtZW50KF9tZWRpYUVsZW1lbnQuZ2V0KCkpOworICAgICAgICBzZWxmLmhhc0VuYWJs
ZWRWaWRlbyA9IFlFUzsKKyAgICAgICAgc2VsZi5jb250ZW50RGltZW5zaW9ucyA9IENHU2l6ZU1h
a2UodmUtPnZpZGVvV2lkdGgoKSwgdmUtPnZpZGVvSGVpZ2h0KCkpOworICAgIH0KK30KKworLSAo
dm9pZCloYW5kbGVFdmVudDooRE9NRXZlbnQgKilldm50Cit7CisgICAgRXZlbnQgKmV2ZW50ID0g
Y29yZShldm50KTsKKyAgICAKKyAgICBpZiAoIV9tZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIExPRyhNZWRpYSwgImhhbmRsZUV2ZW50ICVzIiwgZXZlbnQtPnR5cGUoKS5jaGFy
YWN0ZXJzOCgpKTsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5kdXJh
dGlvbmNoYW5nZUV2ZW50KSB7CisgICAgICAgIGRvdWJsZSBkdXJhdGlvbiA9IF9tZWRpYUVsZW1l
bnQuZ2V0KCktPmR1cmF0aW9uKCk7CisgICAgICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gZHVy
YXRpb247CisgICAgICAgIHNlbGYubWF4VGltZSA9IGR1cmF0aW9uOworICAgICAgICBzZWxmLmNv
bnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVzID0gZHVyYXRpb247CisgICAgICAgIHNlbGYubG9h
ZGVkVGltZVJhbmdlcyA9IEBbCisgICAgICAgICAgICBAMCwKKyAgICAgICAgICAgIEAoZHVyYXRp
b24pCisgICAgICAgIF07CisgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5wYXVzZUV2ZW50CisgICAgICAgICAgICB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5wbGF5RXZlbnQKKyAgICAgICAgICAgIHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLnJhdGVjaGFuZ2VFdmVudCkKKyAgICAgICAgc2VsZi5yYXRlID0gW3NlbGYgZWZmZWN0aXZl
UmF0ZV07CisgICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudGltZXVw
ZGF0ZUV2ZW50KQorICAgICAgICBbc2VsZiB1cGRhdGVUaW1pbmdXaXRoQ3VycmVudFRpbWU6X21l
ZGlhRWxlbWVudC5nZXQoKS0+Y3VycmVudFRpbWUoKV07Cit9CisKK0BlbmQKKworQGludGVyZmFj
ZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyICgpIDxVSVZpZXdDb250cm9sbGVyVHJhbnNp
dGlvbmluZ0RlbGVnYXRlPgorQHByb3BlcnR5KHJldGFpbikgVUlXaW5kb3cgKndpbmRvdzsKK0Bw
cm9wZXJ0eShyZXRhaW4pIFVJVmlld0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyOworQHByb3Bl
cnR5KHJldGFpbikgQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAqcGxheWVyVmlld0NvbnRyb2xsZXI7
CitAcHJvcGVydHkocmV0YWluKSBXZWJBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xs
ZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Cit7CisgICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IF9tZWRpYUVsZW1lbnQ7Cit9CisKKy0g
KGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkgewor
ICAgICAgICBpbml0VUlTY3JlZW4oKTsKKyAgICAgICAgaW5pdFVJVmlldygpOworICAgICAgICBp
bml0VUlDb2xvcigpOworICAgICAgICBpbml0VUlXaW5kb3coKTsKKyAgICAgICAgaW5pdEFWUGxh
eWVyQ29udHJvbGxlcigpOworICAgICAgICBpbml0QVZQbGF5ZXJWaWV3Q29udHJvbGxlcigpOwor
ICAgICAgICBpbml0QVZWYWx1ZVRpbWluZygpOworICAgICAgICBpbml0VUlWaWV3Q29udHJvbGxl
cigpOworICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7Cisg
ICAgc2VsZi53aW5kb3cgPSBuaWw7CisgICAgc2VsZi52aWV3Q29udHJvbGxlciA9IG5pbDsKKyAg
ICBzZWxmLnBsYXllclZpZXdDb250cm9sbGVyID0gbmlsOworICAgIHNlbGYucGxheWVyQ29udHJv
bGxlciA9IG5pbDsKKyAgICBfbWVkaWFFbGVtZW50ID0gbnVsbHB0cjsKKyAgICBbc3VwZXIgZGVh
bGxvY107Cit9CisKKy0gKHZvaWQpc2V0TWVkaWFFbGVtZW50OihIVE1MTWVkaWFFbGVtZW50Kilt
ZWRpYUVsZW1lbnQKK3sKKyAgICBfbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50OworfQorCist
IChIVE1MTWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQKK3sKKyAgICByZXR1cm4gX21lZGlhRWxl
bWVudC5nZXQoKTsKK30KKworLSAodm9pZCllbnRlckZ1bGxzY3JlZW46KFVJU2NyZWVuICopc2Ny
ZWVuCit7CisgICAgaWYgKCFzY3JlZW4pCisgICAgICAgIHNjcmVlbiA9IFtjbGFzc1VJU2NyZWVu
IG1haW5TY3JlZW5dOworCisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyID0gW1tbV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgc2VsZi5wbGF5ZXJD
b250cm9sbGVyLm1lZGlhRWxlbWVudCA9IF9tZWRpYUVsZW1lbnQ7CisKKyAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBzZWxmLnBsYXllclZp
ZXdDb250cm9sbGVyID0gW1tbY2xhc3NBVlBsYXllclZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHNlbGYucGxheWVyVmlld0NvbnRyb2xsZXIucGxheWVy
Q29udHJvbGxlciA9IChBVlBsYXllckNvbnRyb2xsZXIgKilzZWxmLnBsYXllckNvbnRyb2xsZXI7
CisgICAgICAgIAorICAgICAgICBzZWxmLnZpZXdDb250cm9sbGVyID0gW1tbY2xhc3NVSVZpZXdD
b250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIAorICAgICAgICBz
ZWxmLndpbmRvdyA9IFtbW2NsYXNzVUlXaW5kb3cgYWxsb2NdIGluaXRXaXRoRnJhbWU6W3NjcmVl
biBib3VuZHNdXSBhdXRvcmVsZWFzZV07CisgICAgICAgIHNlbGYud2luZG93LmJhY2tncm91bmRD
b2xvciA9IFtjbGFzc1VJQ29sb3IgY2xlYXJDb2xvcl07CisgICAgICAgIHNlbGYud2luZG93LnJv
b3RWaWV3Q29udHJvbGxlciA9IChVSVZpZXdDb250cm9sbGVyICopc2VsZi52aWV3Q29udHJvbGxl
cjsKKyAgICAgICAgW3NlbGYud2luZG93IG1ha2VLZXlBbmRWaXNpYmxlXTsKKyAgICAgICAgCisg
ICAgICAgIFtzZWxmLnZpZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjpzZWxmLnBs
YXllclZpZXdDb250cm9sbGVyIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07CisgICAgfSk7
Cit9CisKKy0gKHZvaWQpZXhpdEZ1bGxzY3JlZW4KK3sKKyAgICBzZWxmLnBsYXllckNvbnRyb2xs
ZXIubWVkaWFFbGVtZW50ID0gbnVsbHB0cjsKKworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIFtzZWxmLnZpZXdDb250cm9sbGVyIGRpc21p
c3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOllFUyBjb21wbGV0aW9uOl57CisgICAgICAgICAgICBz
ZWxmLndpbmRvdy5oaWRkZW4gPSBZRVM7CisgICAgICAgICAgICBzZWxmLndpbmRvdy5yb290Vmll
d0NvbnRyb2xsZXIgPSBuaWw7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNlbGYucGxheWVy
Vmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgICAgICAgICBzZWxmLnZpZXdDb250cm9sbGVyID0g
bmlsOworICAgICAgICAgICAgc2VsZi53aW5kb3cgPSBuaWw7CisgICAgICAgICAgICBXZWJUaHJl
YWRSdW4oXnsKKyAgICAgICAgICAgICAgICBfbWVkaWFFbGVtZW50ID0gbnVsbHB0cjsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgCisgICAgICAgIH1dOworICAgIH0pOworfQorCitAZW5k
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAppbmRleCBiODM5Mjg2YjY4NjAwZGI4OWE5YWI2ODFlMzU2MDQ5ZDJiYmQ4
MDJiLi4yZWM4MjYxOTEzOWI2NDQ4YWI5ZWViM2I3ZTk4MzgwMDYxMjgzNzliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAt
MTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShWSURF
TykgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgV2ViQ29yZTo6Tm9kZSopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNv
cmU6Ok5vZGUqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCBiZWU4NzZhMWVjNzA4MWU2NWVhY2M3MThl
Yzc3MDFkZTE0M2FhNzNhLi5lMzUyMDllZTM0OTFjNDNhZTFmYzIzZmUyNmMyODQwZDZhYWQ5MDM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCkBAIC05NjcsMTEgKzk2NywxOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2No
ZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKQogCiAjZW5kaWYKIAotI2lmIEVOQUJMRShWSURF
TykgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoVklERU8pCiAKIGJvb2wgV2ViQ2hyb21l
Q2xpZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChTZXR0aW5nczo6bWVkaWFQbGF5YmFja0Z1bGxzY3Jl
ZW5BVktpdCgpKQorICAgICAgICByZXR1cm4gaXNIVE1MVmlkZW9FbGVtZW50KG5vZGUpOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKICAgICByZXR1cm4gaXNIVE1MVmlk
ZW9FbGVtZW50KG5vZGUpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbnRl
ckZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAppbmRleCBjNGRmMjI3Y2YyNGU5
NWViYThkYTI3NTg5NzVlMGQ2OGJiZDk2ZDA1Li4wNmIyZjE4N2FhYjBhODE4NWQyZTg4MDk1NGNl
ZTUxMmRkNDZkZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmgKQEAgLTEzMyw2ICsxMzMsNyBAQAogI2lmIFRBUkdFVF9P
U19JUEhPTkUKICNkZWZpbmUgV2ViS2l0TWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXlQcmVmZXJl
bmNlS2V5IEAiV2ViS2l0TWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXkiCiAjZGVmaW5lIFdlYktp
dEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGUgQCJXZWJLaXRBdWRpb1Nlc3Npb25DYXRlZ29y
eU92ZXJyaWRlIgorI2RlZmluZSBXZWJLaXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0IEAi
V2ViS2l0TWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdCIKICNlbmRpZgogI2RlZmluZSBXZWJL
aXRSZWdpb25CYXNlZENvbHVtbnNFbmFibGVkS2V5IEAiV2ViS2l0UmVnaW9uQmFzZWRDb2x1bW5z
RW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb25LZXkg
QCJXZWJLaXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IDM1NDgwY2EyZDVhMjg3NzhiYjY5ZmQ5
MzlhYmZkNjdlZDFjZTU1NjQuLjAwOTU5ZDUxNDc5MmQyYjY3YmMyNzBhMGRjOGI4NmFkMzUzYjdj
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAt
NTE3LDYgKzUxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29s
Ok5PXSwgICBXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lUHJlZmVyZW5jZUtleSwKICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRNZWRpYVBsYXliYWNr
QWxsb3dzQWlyUGxheVByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
VW5zaWduZWRJbnQ6QXVkaW9TZXNzaW9uOjpOb25lXSwgIFdlYktpdEF1ZGlvU2Vzc2lvbkNhdGVn
b3J5T3ZlcnJpZGUsCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2Vi
S2l0TWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdCwKICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhMb25nTG9uZzpXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgp
XSwgV2ViS2l0QXBwbGljYXRpb25DYWNoZVRvdGFsUXVvdGEsCiAKICAgICAgICAgLy8gUGVyLU9y
aWdpbiBRdW90YSBvbiBpT1MgaXMgMjVNQi4gV2hlbiB0aGUgcXVvdGEgaXMgcmVhY2hlZCBmb3Ig
YSBwYXJ0aWN1bGFyIG9yaWdpbgpAQCAtMjE3OCw2ICsyMTc5LDE2IEBAIHN0YXRpYyBOU1N0cmlu
ZyAqY2xhc3NJQkNyZWF0b3JJRCA9IG5pbDsKICAgICBbc2VsZiBfc2V0VW5zaWduZWRJbnRWYWx1
ZTpvdmVycmlkZSBmb3JLZXk6V2ViS2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZV07CiB9
CiAKKy0gKEJPT0wpbWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdAoreworICAgIHJldHVybiBb
c2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdE1lZGlhUGxheWJhY2tGdWxsc2NyZWVuQVZLaXRd
OworfQorCistICh2b2lkKXNldE1lZGlhUGxheWJhY2tGdWxsc2NyZWVuQVZLaXQ6KGJvb2wpZmxh
ZworeworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZmxhZyBmb3JLZXk6V2ViS2l0TWVkaWFQbGF5
YmFja0Z1bGxzY3JlZW5BVktpdF07Cit9CisKIC0gKEJPT0wpbmV0d29ya0RhdGFVc2FnZVRyYWNr
aW5nRW5hYmxlZAogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdE5l
dHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDU4ZjMy
Zjc5YjAwY2FlZGU4Mzc2NGI3ODk5NDdmMGUyYjc3NzhiNzguLjMxZjQ1NjcwODBmNjM5ZDJhNjIx
NGE0MjE3MDZiMzFhOWNmMTU1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMjU5LDYgKzI1OSw5IEBAIGV4dGVybiBOU1N0
cmluZyAqV2ViUHJlZmVyZW5jZXNDYWNoZU1vZGVsQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9u
OwogLSAodW5zaWduZWQpYXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZTsKIC0gKHZvaWQpc2V0
QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZToodW5zaWduZWQpb3ZlcnJpZGU7CiAKKy0gKEJP
T0wpbWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdDsKKy0gKHZvaWQpc2V0TWVkaWFQbGF5YmFj
a0Z1bGxzY3JlZW5BVktpdDooYm9vbClmbGFnOworCiAvLyBXQVJOSU5HOiB0aGlzIGFmZmVjdCBu
ZXR3b3JrIHBlcmZvcm1hbmNlLiBUaGlzIG11c3Qgbm90IGJlIGVuYWJsZWQgZm9yIHByb2R1Y3Rp
b24gdXNlLgogLy8gRW5hYmxpbmcgdGhpcyBtYWtlcyBXZWJDb3JlIHJlcG9ydHMgdGhlIG5ldHdv
cmsgZGF0YSB1c2FnZS4KIC8vIFRoaXMgaXMgYSBnbG9iYWwgc2V0dGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAwNDg4OTAwMTcxYzkyMDZhODRlY2Y1MjJmNTNlZDE1
N2Q0NGY0NzkxLi5mMDJlZjljNjhhZmIxMDEzNDY1YTljNDAzYWMyNTlmNmU3MmQyOWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xNzgsNyArMTc4LDYgQEAKICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNF
eHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVZpZXcuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XaWRn
ZXQuaD4KICNpbXBvcnQgPFdlYktpdC9ET00uaD4KICNpbXBvcnQgPFdlYktpdC9ET01FeHRlbnNp
b25zLmg+CkBAIC0yMzcsMTMgKzIzNiwxNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhy
ZWFkTWVzc2FnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5oPgogI2ltcG9ydCA8ZGlzcGF0Y2gvcHJpdmF0ZS5oCiAjaW1w
b3J0IDx3dGYvRmFzdE1hbGxvYy5oPgorI2Vsc2UKKyNpbXBvcnQgPFdlYkNvcmUvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5oPgorI2VuZGlmCiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBQTEFURk9STShJ
T1MpCiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNlbmRpZgotI2VuZGlmCiAK
ICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAjaW1wb3J0IDxXZWJLaXQvV2ViRGFzaGJv
YXJkUmVnaW9uLmg+CkBAIC0yNDI3LDYgKzI0MjksNyBAQCBzdGF0aWMgYm9vbCBuZWVkc1NlbGZS
ZXRhaW5XaGlsZUxvYWRpbmdRdWlyaygpCiAgICAgc2V0dGluZ3Muc2V0QXVkaW9TZXNzaW9uQ2F0
ZWdvcnlPdmVycmlkZShbcHJlZmVyZW5jZXMgYXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZV0p
OwogICAgIHNldHRpbmdzLnNldE5ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWQoW3ByZWZl
cmVuY2VzIG5ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWRdKTsKICAgICBzZXR0aW5ncy5z
ZXROZXR3b3JrSW50ZXJmYWNlTmFtZShbcHJlZmVyZW5jZXMgbmV0d29ya0ludGVyZmFjZU5hbWVd
KTsKKyAgICBzZXR0aW5ncy5zZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KFtwcmVmZXJl
bmNlcyBtZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0XSk7CiAjZW5kaWYKICAgICBzZXR0aW5n
cy5zZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShbcHJlZmVyZW5jZXMgbWVkaWFQ
bGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmVdKTsKICAgICBzZXR0aW5ncy5zZXRNZWRpYVBsYXli
YWNrQWxsb3dzSW5saW5lKFtwcmVmZXJlbmNlcyBtZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lXSk7
CkBAIC04NTIxLDcgKzg1MjQsNyBAQCBib29sIExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExh
eWVycygpCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKQor
I2lmIEVOQUJMRShWSURFTykKIC0gKHZvaWQpX2VudGVyRnVsbHNjcmVlbkZvck5vZGU6KFdlYkNv
cmU6Ok5vZGUqKW5vZGUKIHsKICAgICBBU1NFUlQoaXNIVE1MVmlkZW9FbGVtZW50KG5vZGUpKTsK
QEAgLTg1NDQsNyArODU0NywxMSBAQCBib29sIExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExh
eWVycygpCiAgICAgaWYgKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIpIHsKICAgICAg
ICAgX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyID0gW1tXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyIGFsbG9jXSBpbml0XTsKICAgICAgICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29u
dHJvbGxlciBzZXRNZWRpYUVsZW1lbnQ6dmlkZW9FbGVtZW50XTsKLSAgICAgICAgW19wcml2YXRl
LT5mdWxsc2NyZWVuQ29udHJvbGxlciBlbnRlckZ1bGxzY3JlZW46W1tzZWxmIHdpbmRvd10gc2Ny
ZWVuXV07ICAgICAgICAKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIFtfcHJpdmF0ZS0+ZnVs
bHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOm5pbF07CisjZWxzZQorICAgICAgICBb
X3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjpbW3NlbGYgd2lu
ZG93XSBzY3JlZW5dXTsKKyNlbmRpZgogICAgIH0KICAgICBlbHNlCiAgICAgICAgIFtfcHJpdmF0
ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0TWVkaWFFbGVtZW50OnZpZGVvRWxlbWVudF07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCA1ZmRmNWRm
MGZiZmM0ZjY3M2JkNTRiNjY2ODg2ZTliMzY2MWI1NDYyLi40MWQyZDE3N2QxM2U1MTg5ZDA1OWY1
YTEzYTIwNjM0OGRlZjk0N2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0ludGVybmFsLmgKQEAgLTIzNiw3ICsyMzYsNyBAQCBPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0
aXZlczsKIAogLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVmZXJlbmNlcyAqKXBy
ZWZlcmVuY2VzOwogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBkZWZp
bmVkKF9fY3BsdXNwbHVzKQorI2lmIEVOQUJMRShWSURFTykgJiYgZGVmaW5lZChfX2NwbHVzcGx1
cykKIC0gKHZvaWQpX2VudGVyRnVsbHNjcmVlbkZvck5vZGU6KFdlYkNvcmU6Ok5vZGUqKW5vZGU7
CiAtICh2b2lkKV9leGl0RnVsbHNjcmVlbjsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221290</attachid>
            <date>2014-01-15 11:52:11 -0800</date>
            <delta_ts>2014-01-15 16:56:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126818-20140115115212.patch</filename>
            <type>text/plain</type>
            <size>36637</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQzYTg3NDViNmY4YjA5
NDY3MWJkYjE2Njk5MmNlYzU5NTAxNzliZC4uNTU0ZjVhYWRiYTY3ZGUwYTBkZDFjZWMwNGNkYzU4
YzZjNDFiNDQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE0LTAxLTExICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVZLaXQgZnVsbHNj
cmVlbiB2aWRlbyBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjY4MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIG9ic2VydmFibGUgY2hhbmdlIGluIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgQWRkIGFi
aWxpdHkgZm9yIGZ1bGxzY3JlZW4gdG8gYm9ycm93IHRoZSBBVlBsYXllckxheWVyLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjptZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0
KToKKyAgICAgICAgQWRkIGEgZGlzYWJsZWQgc2V0dGluZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9y
dHNGdWxsc2NyZWVuKToKKyAgICAgICAgRW5hYmxlZCBmdWxsc2NyZWVuIGZvciBpT1MuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGluaXRd
KToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvcndhcmRpbmdUYXJnZXRGb3JTZWxlY3RvcjpdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNob3VsZERpc21pc3NGb3JEb25lXSk6
CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBwbGF5Ol0pOgorICAgICAgICAoLVtX
ZWJBVlBsYXllckNvbnRyb2xsZXIgcGF1c2U6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29u
dHJvbGxlciB0b2dnbGVQbGF5YmFjazpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9s
bGVyIGlzUGxheWluZ10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxh
eWluZzpdKToKKyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFs
dWVzQWZmZWN0aW5nUGxheWluZ10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIg
c2Vla1RvVGltZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHVwZGF0ZVRp
bWluZ1dpdGhDdXJyZW50VGltZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVy
IGVmZmVjdGl2ZVJhdGVdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNldE1l
ZGlhRWxlbWVudDpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGhhbmRsZUV2
ZW50Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToK
KyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAg
ICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0TWVkaWFFbGVtZW50Ol0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIG1lZGlhRWxlbWVudF0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjpd
KToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBleGl0RnVsbHNjcmVl
bl0pOgorICAgICAgICBBZGQgV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvciBIVE1MTWVkaWFFbGVt
ZW10IHRvIGludGVyZmFjZSB3aXRoIEFWUGxheWVyVmlld0NvbnRyb2xsZXIuCisKIDIwMTQtMDEt
MTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQXZv
aWQgUExBVEZPUk0oKSBtYWNyb3MgaW4gZXhwb3J0ZWQgaGVhZGVycy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpp
bmRleCA4ZjY0ZTFlNGIyMGI1MTlkZmY0NDIwZTc5NmM2NzQ1NWY3M2RmMzEyLi41MmQ2NTYyMGJk
ZmYwODM4ZDQ2N2NhN2YwNGJlNWE1NGI4YTE5NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjggQEAKKzIwMTQtMDEtMTEgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBBVktpdCBmdWxsc2NyZWVuIHZpZGVvIGludGVyZmFjZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjgxOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JO
b2RlKToKKyAgICAgICAgRW5hYmxlICpGdWxsc2NyZWVuRm9yTm9kZSBmb3IgSFRNTE1lZGlhRWxl
bWVudCBmb3IgaU9TCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0
ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dl
YlByZWZlcmVuY2VzIGluaXRpYWxpemVdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgbWVk
aWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdF0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBz
ZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
UHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisgICAgICAgICgtW1dlYlZp
ZXcgX2VudGVyRnVsbHNjcmVlbkZvck5vZGU6V2ViQ29yZTo6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgQWRkIGEgZGlzYWJsZWQgcHJlZiBtZWRpYVBs
YXliYWNrRnVsbHNjcmVlbkFWS2l0LgorICAgICAgICBVc2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0IG9uIGlPUworCiAyMDE0LTAxLTE0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgICNkZWZpbmUgRU5BQkxFX0RBU0hCT0FSRF9TVVBQ
T1JUIGZvciBpT1MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGQxZGNlZWNhZDA3ZTFkMDVkNjFm
ZTdhNTZkNTcwOTRlMjJiOWRjY2MuLjMyN2NkNTAzZTRjZDFkYThiOWEwMGRjMTk0MWVmOTYxZDY1
ZmYzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0zMDQwLDcgKzMwNDAsNyBAQCBfX1pON1dl
YkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18x
MFRpbWVSYW5nZXNFCiBfX1pOSzdXZWJDb3JlMTBUaW1lUmFuZ2VzN25lYXJlc3RFZAogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoVklERU8pICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFZJREVP
KQogX19aTks3V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDVlbmRlZEV2CiBfX1pOSzdXZWJDb3Jl
MTZIVE1MTWVkaWFFbGVtZW50NnBhdXNlZEV2CiAub2JqY19jbGFzc19uYW1lX1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1ZGM5MTkzMzBkMDYyODRkNjYxMDA0ODM2YjA3MmU1YTA0
ZmQwNzQ0Li42MmEwMGQwM2YzZTdjNTgyMjYyM2FhZTllMzQ5MjgwZDU4MjhhMDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
Mjk4LDYgKzEyOTgsOCBAQAogCQkzRjJCMzNFRDE2NUFGMTU2MDBFMzk4N0MgLyogRE9NV2ViS2l0
Q1NTVmlld3BvcnRSdWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDNGMkIzM0U4MTY1QUYxNTUwMEUzOTg3QyAvKiBET01XZWJLaXRDU1NW
aWV3cG9ydFJ1bGVJbnRlcm5hbC5oICovOyB9OwogCQkzRjJCMzNFRTE2NUFGMTU2MDBFMzk4N0Mg
LyogSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gM0YyQjMzRTkxNjVBRjE1NTAwRTM5ODdDIC8qIEpTV2ViS2l0
Q1NTVmlld3BvcnRSdWxlLmNwcCAqLzsgfTsKIAkJM0YyQjMzRUYxNjVBRjE1NjAwRTM5ODdDIC8q
IEpTV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzRjJCMzNFQTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NW
aWV3cG9ydFJ1bGUuaCAqLzsgfTsKKwkJM0Y0MkIzMUQxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y0MkIzMUIxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovOyB9OworCQkzRjQyQjMxRTE4ODExOTFCMDAy
NzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y0MkIzMUMxODgxMTkxQjAwMjc4
QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSAqLzsgfTsKIAkJM0ZG
RkY5QTgxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRkZGRjlBNjE1OUQ5QTU1
MDAyMEJCRDUgLyogV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcCAqLzsgfTsKIAkJM0ZGRkY5QTkx
NTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0ZGRkY5QTcxNTlEOUE1NTAwMjBCQkQ1
IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovOyB9OwogCQkzRkZGRjlBRDE1OUQ5QjA2MDAy
MEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGRkZGOUFCMTU5RDlCMDYwMDIwQkJENSAvKiBWaWV3
cG9ydFN0eWxlUmVzb2x2ZXIuY3BwICovOyB9OwpAQCAtODE4Niw2ICs4MTg4LDggQEAKIAkJM0Yy
QjMzRTgxNjVBRjE1NTAwRTM5ODdDIC8qIERPTVdlYktpdENTU1ZpZXdwb3J0UnVsZUludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdENTU1ZpZXdwb3J0
UnVsZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGMkIzM0U5MTY1
QUYxNTUwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGMkIzM0VBMTY1QUYxNTUwMEUzOTg3QyAvKiBK
U1dlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzRjQyQjMxQjE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5oOyBwYXRoID0gaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzRjQyQjMxQzE4ODEx
OTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0Lm1tOyBwYXRoID0gaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJB
VktpdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0ZGRkY5QTYxNTlEOUE1NTAw
MjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzRkZGRjlBNzE1OUQ5QTU1MDAyMEJCRDUgLyogV2ViS2l0Q1NTVmll
d3BvcnRSdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU1Zp
ZXdwb3J0UnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRkZGRjlBQjE1OUQ5
QjA2MDAyMEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODA4Nyw2ICsxODA5MSw4IEBACiAJCQkJRkUwRDg0RUEx
MDQ4NDM2RTAwMUExNzlFIC8qIFdlYkV2ZW50Lm1tICovLAogCQkJCUE1MDJDNUREMTMwNDlCMzUw
MEZDN0Q1MyAvKiBXZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrSU9TLmggKi8sCiAJCQkJQzJDNENC
MUQxNjFBMTMxMjAwRDIxNERBIC8qIFdlYlNhZmVJbmNyZW1lbnRhbFN3ZWVwZXJJT1MuaCAqLywK
KwkJCQkzRjQyQjMxQjE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckFWS2l0LmggKi8sCisJCQkJM0Y0MkIzMUMxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSAqLywKIAkJCQlFNDUzOTAzQzBFQUZENjM3MDAz
Njk1QzggLyogV2lkZ2V0SU9TLm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBpb3M7CkBAIC0yNTA1
OSw2ICsyNTA2NSw3IEBACiAJCQkJQTlDNkU0RjQwRDc0NUU0ODAwNjQ0MkU5IC8qIFBsdWdpbkRh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjA1QUJDMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVn
aW5Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEQTE0MTEwRTFBRTVEOTAwMDIzRUU1
IC8qIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTNGNDJC
MzFEMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTcxRTIxODNBMTczNTlGQjgwMDZFNkU0RCAvKiBQbHVnSW5z
UmVzb3VyY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE4Nzk5MDExQ0JFODQ2MDAzQzY2NEYg
LyogUGx1Z2luU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTBBRkRBQzNEMTBGNTQ0OEMw
MEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTA0Nyw2ICsy
OTA1NCw3IEBACiAJCQkJQjIyMjdBOTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlnb25FbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTkzMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdQb2x5bGluZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjU0M0I4NTcxN0VCNzU4
RjAwM0JFOTNBIC8qIFNWR1Byb3BlcnR5SW5mby5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzRjQy
QjMxRTE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBOTYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBOTkwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjIyN0E5RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUmVjdEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAz
ZTFmNmVjZWVhNTAyMTgzZjVkZjZhMDNiODliZGQ4MzRlYzc5OGQyLi5lMTczNzZiYzUyZjg5NTdj
NjVlYzY3MzBmMWEwMWE5NDllYTc3ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKQEAgLTQ4NDksNyArNDg0OSwxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmVudGVyRnVsbHNjcmVlbigpCiAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5j
bGllbnQoKS5lbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKHRoaXMpOwogICAgICAgICBzY2hlZHVsZUV2
ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRiZWdpbmZ1bGxzY3JlZW5FdmVudCk7CiAjZWxzZQotICAg
ICAgICBpZiAobV9wbGF5ZXIpCisgICAgICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkgJiYg
ZG9jdW1lbnQoKS5zZXR0aW5ncygpLT5hdktpdEVuYWJsZWQoKSkgeworICAgICAgICAgICAgZG9j
dW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyRnVsbHNjcmVlbkZvck5vZGUo
dGhpcyk7CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRiZWdp
bmZ1bGxzY3JlZW5FdmVudCk7CisgICAgICAgIH0gZWxzZSBpZiAobV9wbGF5ZXIpCiAgICAgICAg
ICAgICBtX3BsYXllci0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAjZW5kaWYKICAgICB9CkBAIC00ODc3
LDcgKzQ4ODAsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiAg
ICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5leGl0RnVsbHNjcmVl
bkZvck5vZGUodGhpcyk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtp
dGVuZGZ1bGxzY3JlZW5FdmVudCk7CiAjZWxzZQotICAgICAgICBpZiAobV9wbGF5ZXIpCisgICAg
ICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS5zZXR0aW5ncygpLT5h
dktpdEVuYWJsZWQoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgp
LmNsaWVudCgpLmV4aXRGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAgICAgICAgICAgIHNjaGVk
dWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCk7CisgICAgICAg
IH0gZWxzZSBpZiAobV9wbGF5ZXIpCiAgICAgICAgICAgICBtX3BsYXllci0+ZXhpdEZ1bGxzY3Jl
ZW4oKTsKICNlbmRpZgogICAgIH0KQEAgLTQ5MDMsOCArNDkwOSwzMSBAQCBQbGF0Zm9ybU1lZGlh
IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTWVkaWEoKSBjb25zdAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKIFBsYXRmb3JtTGF5ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5wbGF0
Zm9ybUxheWVyKCkgOiAwOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAobV9wbGF0Zm9ybUxh
eWVyQm9ycm93ZWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCisgICAgcmV0dXJu
IG1fcGxheWVyID8gbV9wbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CiB9CisKKyNp
ZiBQTEFURk9STShJT1MpCitQbGF0Zm9ybUxheWVyKiBIVE1MTWVkaWFFbGVtZW50Ojpib3Jyb3dQ
bGF0Zm9ybUxheWVyKCkKK3sKKyAgICBBU1NFUlQoIW1fcGxhdGZvcm1MYXllckJvcnJvd2VkKTsK
KyAgICBtX3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCA9IHRydWU7CisgICAgaWYgKHJlbmRlcmVyKCkp
CisgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgcmV0dXJuIG1f
cGxheWVyID8gbV9wbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7Cit9CisKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cmV0dXJuUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKQoreworICAgIEFTU0VSVChtX3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCAmJiBwbGF0
Zm9ybUxheWVyID09IChtX3BsYXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxs
cHRyKSk7CisgICAgbV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgPSBmYWxzZTsKKyAgICBpZiAocmVu
ZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKK30KKyNl
bmRpZgogI2VuZGlmCiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aGFzQ2xvc2VkQ2FwdGlvbnMo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAyZDBjNWRi
ZDZiMzVmYmY5NmM2NDdjOTk3NWEzYTQwMjg3Njg0MjdkLi41Yzg2YWM2N2E0ZjUyNWE4ODFhZDE0
MWNjZjZlMmQ3MzFlNmU4Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aApAQCAtMTMyLDYgKzEzMiwxMCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9y
bU1lZGlhKCkgY29uc3Q7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgUGxhdGZvcm1MYXllciogYm9ycm93UGxhdGZvcm1MYXllcigpOworICAgIHZvaWQgcmV0dXJu
UGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKik7CisjZW5kaWYKICNlbmRpZgogCiAgICAgZW51
bSBEZWxheWVkQWN0aW9uVHlwZSB7CkBAIC03NzUsNiArNzc5LDcgQEAgcHJpdmF0ZToKIAogI2lm
IFBMQVRGT1JNKElPUykKICAgICBib29sIG1fcmVxdWVzdGluZ1BsYXkgOiAxOworICAgIGJvb2wg
bV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgOiAxOwogI2VuZGlmCiAKICAgICBib29sIG1fcmVzdW1l
UGxheWJhY2tBZnRlckludGVycnVwdGlvbiA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmlu
ZGV4IGU3NTY2NTU1ZTVkNmY2ZjA1MWFiMTQxZWUxZWE2ZDM3MjI2OTI4YzYuLmI1NjExNDRhZDU0
ZjllMDBlYjc0ZjE1YjA3YzVhM2IzOWZkYjcxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
CkBAIC05OCw2ICs5OCw3IEBAIGJvb2wgU2V0dGluZ3M6OmdMb3dQb3dlclZpZGVvQXVkaW9CdWZm
ZXJTaXplRW5hYmxlZCA9IGZhbHNlOwogCiAjaWYgUExBVEZPUk0oSU9TKQogYm9vbCBTZXR0aW5n
czo6Z05ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWQgPSBmYWxzZTsKK2Jvb2wgU2V0dGlu
Z3M6OmdBVktpdEVuYWJsZWQgPSBmYWxzZTsKICNlbmRpZgogCiAvLyBOT1RFcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oCmluZGV4IDk2MjA1ZmQ3ZTRhZmI5OTliNmEwYWYxOTRjYmYzYThkNzc5YjYwMzku
LjdkYTkxZDJkMWMzNTIwMTQ4NmU3NDMxNDk4YzRjODRhYWQ0MWMzOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgKQEAgLTMwNCw2ICszMDQsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBz
ZXROZXR3b3JrSW50ZXJmYWNlTmFtZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgY29uc3Qg
U3RyaW5nJiBuZXR3b3JrSW50ZXJmYWNlTmFtZSgpOworCisgICAgc3RhdGljIHZvaWQgc2V0QVZL
aXRFbmFibGVkKGJvb2wgZmxhZykgeyBnQVZLaXRFbmFibGVkID0gZmxhZzsgfQorICAgIHN0YXRp
YyBib29sIGF2S2l0RW5hYmxlZCgpIHsgcmV0dXJuIGdBVktpdEVuYWJsZWQ7IH0KICNlbmRpZgog
CiBwcml2YXRlOgpAQCAtNDAxLDYgKzQwNCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wg
Z1Nob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVyczsKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgc3RhdGljIGJvb2wgZ05ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWQ7
CisgICAgc3RhdGljIGJvb2wgZ0FWS2l0RW5hYmxlZDsKICNlbmRpZgogCiAgICAgc3RhdGljIGRv
dWJsZSBnSGlkZGVuUGFnZURPTVRpbWVyQWxpZ25tZW50SW50ZXJ2YWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmluZGV4IDYy
MGY0MzEwOWExYTliNTdkOTM5MTljMTRmMjlmNmQ1Njk4ODNlZTQuLmM0MDdkMGU1ZjNiYzU0Zjkz
ODNjNmQ5NWJlZWIwMTg1NDBjMWYxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5
ZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCiAj
aW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4K
QEAgLTQ3NCw2ICs0NzUsMTAgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246
OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAg
IC8vIEZJWE1FOiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGFzc3VtZXMgYSBRVEtpdC9R
dWlja1RpbWUgbWVkaWEgZW5naW5lCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChTZXR0aW5n
czo6YXZLaXRFbmFibGVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODQyYWNhOWY2ZWVhZTc3Mjc5ZDUwNzU3MDY1YjJkNWE3NGRhZGYzNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQVZLaXRfaAorI2RlZmluZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXRfaAor
CisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CisKK0BjbGFzcyBV
SVNjcmVlbjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsK
K30KKworQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIDogTlNPYmplY3QK
KworLSAodm9pZClzZXRNZWRpYUVsZW1lbnQ6KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqKW1l
ZGlhRWxlbWVudDsKKy0gKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqKW1lZGlhRWxlbWVudDsK
KworLSAodm9pZCllbnRlckZ1bGxzY3JlZW46KFVJU2NyZWVuICopc2NyZWVuOworLSAodm9pZCll
eGl0RnVsbHNjcmVlbjsKK0BlbmQKKworI2VuZGlmCisjZW5kaWYgLy8gV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI2MDZhM2M3YTE5YTVmZjAxMzJhMzk2YmNjOTJjMTk5MmJiMGVmYmYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0Lm1tCkBAIC0wLDAgKzEsMzk0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFU
Rk9STShJT1MpCisKKyNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5o
IgorCisjaW1wb3J0ICJET01FdmVudEludGVybmFsLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisj
aW1wb3J0IDxBVktpdC9BVktpdC5oPgorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVy
Lmg+CisjaW1wb3J0IDxBVktpdC9BVlBsYXllckNvbnRyb2xsZXJfU3RhcnNreS5oPgorI2ltcG9y
dCA8QVZLaXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CisjaW1wb3J0IDxBVktp
dC9BVlZhbHVlVGltaW5nLmg+CisjaW1wb3J0IDxDb3JlTWVkaWEvQ01UaW1lLmg+CisjaW1wb3J0
IDxVSUtpdC9VSUtpdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01FdmVudExpc3RlbmVyLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0V2ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50TGlzdGVuZXIu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRXZlbnROYW1lcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1M
RWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL09iakNFdmVudExpc3RlbmVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5r
aW5nLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KKyNpbXBvcnQgPFdl
YkNvcmUvUmVuZGVyRWxlbWVudC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworU09GVF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRpb24p
CitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckxheWVyKQorCitTT0ZUX0xJ
TktfRlJBTUVXT1JLKEFWS2l0KQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllckNvbnRy
b2xsZXIpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWUGxheWVyVmlld0NvbnRyb2xsZXIpCitT
T0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVmFsdWVUaW1pbmcpCisKK1NPRlRfTElOS19GUkFNRVdP
UksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJU2NyZWVuKQorU09GVF9MSU5LX0NM
QVNTKFVJS2l0LCBVSVdpbmRvdykKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlWaWV3KQorU09G
VF9MSU5LX0NMQVNTKFVJS2l0LCBVSVZpZXdDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTKFVJ
S2l0LCBVSUNvbG9yKQorCitTT0ZUX0xJTktfRlJBTUVXT1JLKENvcmVNZWRpYSkKK1NPRlRfTElO
SyhDb3JlTWVkaWEsIENNVGltZU1ha2VXaXRoU2Vjb25kcywgQ01UaW1lLCAoRmxvYXQ2NCBzZWNv
bmRzLCBpbnQzMl90IHByZWZlcnJlZFRpbWVTY2FsZSksIChzZWNvbmRzLCBwcmVmZXJyZWRUaW1l
U2NhbGUpKQorU09GVF9MSU5LKENvcmVNZWRpYSwgQ01UaW1lR2V0U2Vjb25kcywgRmxvYXQ2NCwg
KENNVGltZSB0aW1lKSwgKHRpbWUpKQorCitAaW50ZXJmYWNlIFdlYkFWUGxheWVyQ29udHJvbGxl
ciA6IE5TT2JqZWN0IDxET01FdmVudExpc3RlbmVyLCBBVlBsYXllclZpZXdDb250cm9sbGVyRGVs
ZWdhdGU+CisKK0Bwcm9wZXJ0eShyZXRhaW4pIEFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29u
dHJvbGxlclByb3h5OworQHByb3BlcnR5KHJldGFpbikgQ0FMYXllcjxBVlBsYXllckxheWVyPiAq
cGxheWVyTGF5ZXI7CisKK0Bwcm9wZXJ0eSBCT09MIGNhblBsYXk7CitAcHJvcGVydHkoZ2V0dGVy
PWlzUGxheWluZykgQk9PTCBwbGF5aW5nOworQHByb3BlcnR5IEJPT0wgY2FuUGF1c2U7CitAcHJv
cGVydHkgQk9PTCBjYW5Ub2dnbGVQbGF5YmFjazsKK0Bwcm9wZXJ0eSBkb3VibGUgcmF0ZTsKK0Bw
cm9wZXJ0eSBCT09MIGNhblNlZWs7CitAcHJvcGVydHkgTlNUaW1lSW50ZXJ2YWwgY29udGVudER1
cmF0aW9uOworQHByb3BlcnR5IE5TU2l6ZSBjb250ZW50RGltZW5zaW9uczsKK0Bwcm9wZXJ0eSBC
T09MIGhhc0VuYWJsZWRBdWRpbzsKK0Bwcm9wZXJ0eSBCT09MIGhhc0VuYWJsZWRWaWRlbzsKK0Bw
cm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBtaW5UaW1lOworQHByb3BlcnR5IE5TVGltZUludGVydmFs
IG1heFRpbWU7CitAcHJvcGVydHkgTlNUaW1lSW50ZXJ2YWwgY29udGVudER1cmF0aW9uV2l0aGlu
RW5kVGltZXM7CitAcHJvcGVydHkocmV0YWluKSBOU0FycmF5ICpsb2FkZWRUaW1lUmFuZ2VzOwor
QHByb3BlcnR5IEFWUGxheWVyQ29udHJvbGxlclN0YXR1cyBzdGF0dXM7CitAcHJvcGVydHkocmV0
YWluKSBBVlZhbHVlVGltaW5nICp0aW1pbmc7CisKKy0gKHZvaWQpaGFuZGxlRXZlbnQ6KERPTUV2
ZW50ICopZXZ0OworCistIChCT09MKXBsYXllclZpZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdD
b250cm9sbGVyICopcGxheWVyVmlld0NvbnRyb2xsZXIgc2hvdWxkRGlzbWlzc1dpdGhSZWFzb246
KEFWUGxheWVyVmlld0NvbnRyb2xsZXJEaXNtaXNzYWxSZWFzb24pcmVhc29uOworCitAZW5kCisK
KworQGltcGxlbWVudGF0aW9uIFdlYkFWUGxheWVyQ29udHJvbGxlcgoreworICAgIFJlZlB0cjxI
VE1MTWVkaWFFbGVtZW50PiBfbWVkaWFFbGVtZW50OworICAgIFJlZlB0cjxFdmVudExpc3RlbmVy
PiBfbGlzdGVuZXI7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBzZWxmOworICAgIAorICAgIGluaXRB
VlBsYXllckNvbnRyb2xsZXIoKTsKKyAgICBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IFtb
Y2xhc3NBVlBsYXllckNvbnRyb2xsZXIgYWxsb2NdIGluaXRdOworICAgIHJldHVybiBzZWxmOwor
fQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9
IG5pbDsKKyAgICBzZWxmLnBsYXllckxheWVyID0gbmlsOworICAgIHNlbGYubG9hZGVkVGltZVJh
bmdlcyA9IG5pbDsKKyAgICBzZWxmLnRpbWluZyA9IG5pbDsKKyAgICBbc3VwZXIgZGVhbGxvY107
Cit9CisKKy0gKGlkKWZvcndhcmRpbmdUYXJnZXRGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yCit7
CisgICAgVU5VU0VEX1BBUkFNKHNlbGVjdG9yKTsKKyAgICByZXR1cm4gc2VsZi5wbGF5ZXJDb250
cm9sbGVyUHJveHk7Cit9CisKKy0gKEJPT0wpcGxheWVyVmlld0NvbnRyb2xsZXI6KEFWUGxheWVy
Vmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29udHJvbGxlciBzaG91bGREaXNtaXNzV2l0aFJl
YXNvbjooQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRpc21pc3NhbFJlYXNvbilyZWFzb24KK3sKKyAg
ICBVTlVTRURfUEFSQU0ocGxheWVyVmlld0NvbnRyb2xsZXIpOworICAgIFVOVVNFRF9QQVJBTShy
ZWFzb24pOworCisgICAgV2ViVGhyZWFkUnVuKF57CisgICAgICAgIF9tZWRpYUVsZW1lbnQtPnBh
dXNlKCk7CisgICAgICAgIF9tZWRpYUVsZW1lbnQtPmV4aXRGdWxsc2NyZWVuKCk7CisgICAgfSk7
CisgICAgcmV0dXJuIE5POworfQorCistICh2b2lkKXBsYXk6KGlkKXNlbmRlcgoreworICAgIFVO
VVNFRF9QQVJBTShzZW5kZXIpOworICAgIFdlYlRocmVhZFJ1biheeworICAgICAgICBfbWVkaWFF
bGVtZW50LT5wbGF5KCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpcGF1c2U6KGlkKXNlbmRlcgor
eworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIFdlYlRocmVhZFJ1biheeworICAgICAg
ICBfbWVkaWFFbGVtZW50LT5wYXVzZSgpOworICAgIH0pOworfQorCistICh2b2lkKXRvZ2dsZVBs
YXliYWNrOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBXZWJU
aHJlYWRSdW4oXnsKKyAgICAgICAgX21lZGlhRWxlbWVudC0+dG9nZ2xlUGxheVN0YXRlKCk7Cisg
ICAgfSk7Cit9CisKKy0gKEJPT0wpaXNQbGF5aW5nCit7CisgICAgcmV0dXJuIFtzZWxmIHJhdGVd
ICE9IDA7Cit9CisKKy0gKHZvaWQpc2V0UGxheWluZzooQk9PTClwbGF5aW5nCit7CisgICAgV2Vi
VGhyZWFkUnVuKF57CisgICAgICAgIGlmIChwbGF5aW5nKQorICAgICAgICAgICAgX21lZGlhRWxl
bWVudC0+cGxheSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBfbWVkaWFFbGVtZW50LT5w
YXVzZSgpOworICAgIH0pOworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nUGxheWluZworeworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpAInJhdGUiXTsK
K30KKworLSAodm9pZClzZWVrVG9UaW1lOihOU1RpbWVJbnRlcnZhbCl0aW1lCit7CisgICAgV2Vi
VGhyZWFkUnVuKF57CisgICAgICAgIF9tZWRpYUVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKHRpbWUp
OworICAgIH0pOworfQorCistICh2b2lkKXVwZGF0ZVRpbWluZ1dpdGhDdXJyZW50VGltZTooTlNU
aW1lSW50ZXJ2YWwpY3VycmVudFRpbWUKK3sKKyAgICBOU1RpbWVJbnRlcnZhbCBhbmNob3JUaW1l
U3RhbXAgPSAoIVtzZWxmIHJhdGVdKSA/IE5BTiA6IFtjbGFzc0FWVmFsdWVUaW1pbmcgY3VycmVu
dFRpbWVTdGFtcF07CisgICAgQVZWYWx1ZVRpbWluZyAqdGltaW5nID0gW2NsYXNzQVZWYWx1ZVRp
bWluZyB2YWx1ZVRpbWluZ1dpdGhBbmNob3JWYWx1ZTpjdXJyZW50VGltZQorICAgICAgYW5jaG9y
VGltZVN0YW1wOmFuY2hvclRpbWVTdGFtcCByYXRlOjBdOworICAgIFtzZWxmIHNldFRpbWluZzp0
aW1pbmddOworfQorCistIChkb3VibGUpZWZmZWN0aXZlUmF0ZQoreworICAgIHJldHVybiBfbWVk
aWFFbGVtZW50LT5pc1BsYXlpbmcoKSA/IF9tZWRpYUVsZW1lbnQtPnBsYXliYWNrUmF0ZSgpIDog
MC47Cit9CisKKy0gKHZvaWQpdXBkYXRlRHVyYXRpb24KK3sKKyAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzAxNyB1c2UgY29ycmVjdCB2YWx1
ZXMgaW5zdGVhZCBvZiBkdXJhdGlvbiBmb3IgYWxsIHRoZXNlCisgICAgTlNUaW1lSW50ZXJ2YWwg
ZHVyYXRpb24gPSBfbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpOworICAgIHNlbGYuY29udGVudER1
cmF0aW9uID0gZHVyYXRpb247CisgICAgc2VsZi5tYXhUaW1lID0gZHVyYXRpb247CisgICAgc2Vs
Zi5jb250ZW50RHVyYXRpb25XaXRoaW5FbmRUaW1lcyA9IGR1cmF0aW9uOworICAgIHNlbGYubG9h
ZGVkVGltZVJhbmdlcyA9IEBbQDAsIEAoZHVyYXRpb24pXTsKK30KKworLSAodm9pZClzZXRNZWRp
YUVsZW1lbnQ6KFBhc3NSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4pbWVkaWFFbGVtZW50Cit7Cisg
ICAgaWYgKF9tZWRpYUVsZW1lbnQgPT0gbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgaWYgKF9tZWRpYUVsZW1lbnQgJiYgX2xpc3RlbmVyKQorICAgIHsKKyAgICAgICAg
X21lZGlhRWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZHVyYXRpb25j
aGFuZ2VFdmVudCwgX2xpc3RlbmVyLmdldCgpLCBmYWxzZSk7CisgICAgICAgIF9tZWRpYUVsZW1l
bnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIF9saXN0ZW5l
ci5nZXQoKSwgZmFsc2UpOworICAgICAgICBfbWVkaWFFbGVtZW50LT5yZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQsIF9saXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAg
ICAgICBfbWVkaWFFbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yYXRl
Y2hhbmdlRXZlbnQsIF9saXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAgICAgICBfbWVkaWFFbGVt
ZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQsIF9s
aXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICBpZiAoX21lZGlhRWxlbWVu
dCkKKyAgICB7CisgICAgICAgIFtzZWxmLnBsYXllckxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVy
XTsKKyAgICAgICAgX21lZGlhRWxlbWVudC0+cmV0dXJuUGxhdGZvcm1MYXllcihzZWxmLnBsYXll
ckxheWVyKTsKKyAgICAgICAgc2VsZi5wbGF5ZXJMYXllciA9IG5pbDsKKyAgICB9CisgICAgCisg
ICAgX21lZGlhRWxlbWVudCA9IG1lZGlhRWxlbWVudDsKKyAgICBfbGlzdGVuZXIgPSBudWxscHRy
OworICAgIAorICAgIGlmICghX21lZGlhRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
X2xpc3RlbmVyID0gT2JqQ0V2ZW50TGlzdGVuZXI6OndyYXAoc2VsZik7CisKKyAgICBfbWVkaWFF
bGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50
LCBfbGlzdGVuZXIsIGZhbHNlKTsKKyAgICBfbWVkaWFFbGVtZW50LT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50LCBfbGlzdGVuZXIsIGZhbHNlKTsKKyAgICBfbWVkaWFF
bGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQsIF9saXN0ZW5l
ciwgZmFsc2UpOworICAgIF9tZWRpYUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLnJhdGVjaGFuZ2VFdmVudCwgX2xpc3RlbmVyLCBmYWxzZSk7CisgICAgX21lZGlhRWxlbWVu
dC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50LCBfbGlzdGVu
ZXIsIGZhbHNlKTsKKworICAgIFtzZWxmIHVwZGF0ZUR1cmF0aW9uXTsKKyAgICBzZWxmLmNhblBs
YXkgPSBZRVM7CisgICAgc2VsZi5jYW5QYXVzZSA9IFlFUzsKKyAgICBzZWxmLmNhblRvZ2dsZVBs
YXliYWNrID0gWUVTOworICAgIHNlbGYuaGFzRW5hYmxlZEF1ZGlvID0gWUVTOworICAgIHNlbGYu
Y2FuU2VlayA9IFlFUzsKKyAgICBzZWxmLm1pblRpbWUgPSAwOworICAgIHNlbGYucmF0ZSA9IFtz
ZWxmIGVmZmVjdGl2ZVJhdGVdOworICAgIHNlbGYuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVy
U3RhdHVzUmVhZHlUb1BsYXk7CisKKyAgICBzZWxmLnBsYXllckxheWVyID0gKENBTGF5ZXI8QVZQ
bGF5ZXJMYXllcj4gKilfbWVkaWFFbGVtZW50LT5ib3Jyb3dQbGF0Zm9ybUxheWVyKCk7CisgICAg
QVNTRVJUKFtzZWxmLnBsYXllckxheWVyIGlzS2luZE9mQ2xhc3M6Y2xhc3NBVlBsYXllckxheWVy
XSk7CisgICAgW3NlbGYucGxheWVyTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworCisgICAg
W3NlbGYgdXBkYXRlVGltaW5nV2l0aEN1cnJlbnRUaW1lOl9tZWRpYUVsZW1lbnQtPmN1cnJlbnRU
aW1lKCldOworCisgICAgaWYgKGlzSFRNTFZpZGVvRWxlbWVudChfbWVkaWFFbGVtZW50LmdldCgp
KSkgeworICAgICAgICBIVE1MVmlkZW9FbGVtZW50ICp2aWRlb0VsZW1lbnQgPSB0b0hUTUxWaWRl
b0VsZW1lbnQoX21lZGlhRWxlbWVudC5nZXQoKSk7CisgICAgICAgIHNlbGYuaGFzRW5hYmxlZFZp
ZGVvID0gWUVTOworICAgICAgICBzZWxmLmNvbnRlbnREaW1lbnNpb25zID0gQ0dTaXplTWFrZSh2
aWRlb0VsZW1lbnQtPnZpZGVvV2lkdGgoKSwgdmlkZW9FbGVtZW50LT52aWRlb0hlaWdodCgpKTsK
KyAgICB9Cit9CisKKy0gKHZvaWQpaGFuZGxlRXZlbnQ6KERPTUV2ZW50ICopZXZudAoreworICAg
IEV2ZW50KiBldmVudCA9IGNvcmUoZXZudCk7CisgICAgCisgICAgaWYgKCFfbWVkaWFFbGVtZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVkaWEsICJoYW5kbGVFdmVudCAlcyIsIGV2
ZW50LT50eXBlKCkuY2hhcmFjdGVyczgoKSk7CisKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkuZHVyYXRpb25jaGFuZ2VFdmVudCkKKyAgICAgICAgW3NlbGYgdXBkYXRlRHVy
YXRpb25dOworICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnBhdXNl
RXZlbnQKKyAgICAgICAgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkucGxheUV2ZW50
CisgICAgICAgIHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVu
dCkKKyAgICAgICAgc2VsZi5yYXRlID0gW3NlbGYgZWZmZWN0aXZlUmF0ZV07CisgICAgZWxzZSBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50KQorICAgICAg
ICBbc2VsZiB1cGRhdGVUaW1pbmdXaXRoQ3VycmVudFRpbWU6X21lZGlhRWxlbWVudC0+Y3VycmVu
dFRpbWUoKV07Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyICgpIDxVSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbmluZ0RlbGVnYXRlPgorQHByb3Bl
cnR5KHJldGFpbikgVUlXaW5kb3cgKndpbmRvdzsKK0Bwcm9wZXJ0eShyZXRhaW4pIFVJVmlld0Nv
bnRyb2xsZXIgKnZpZXdDb250cm9sbGVyOworQHByb3BlcnR5KHJldGFpbikgQVZQbGF5ZXJWaWV3
Q29udHJvbGxlciAqcGxheWVyVmlld0NvbnRyb2xsZXI7CitAcHJvcGVydHkocmV0YWluKSBXZWJB
VlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXI7CitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyCit7CisgICAgUmVmUHRyPEhUTUxNZWRp
YUVsZW1lbnQ+IF9tZWRpYUVsZW1lbnQ7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7Cisg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBpbml0VUlTY3JlZW4oKTsKKyAgICBpbml0VUlWaWV3KCk7CisgICAgaW5pdFVJQ29sb3IoKTsK
KyAgICBpbml0VUlXaW5kb3coKTsKKyAgICBpbml0QVZQbGF5ZXJDb250cm9sbGVyKCk7CisgICAg
aW5pdEFWUGxheWVyVmlld0NvbnRyb2xsZXIoKTsKKyAgICBpbml0QVZWYWx1ZVRpbWluZygpOwor
ICAgIGluaXRVSVZpZXdDb250cm9sbGVyKCk7CisgICAgaW5pdEFWUGxheWVyTGF5ZXIoKTsKKyAg
ICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgc2VsZi53aW5kb3cg
PSBuaWw7CisgICAgc2VsZi52aWV3Q29udHJvbGxlciA9IG5pbDsKKyAgICBzZWxmLnBsYXllclZp
ZXdDb250cm9sbGVyID0gbmlsOworICAgIHNlbGYucGxheWVyQ29udHJvbGxlciA9IG5pbDsKKyAg
ICBfbWVkaWFFbGVtZW50ID0gbnVsbHB0cjsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0g
KHZvaWQpc2V0TWVkaWFFbGVtZW50OihIVE1MTWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQKK3sK
KyAgICBfbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50OworfQorCistIChIVE1MTWVkaWFFbGVt
ZW50KiltZWRpYUVsZW1lbnQKK3sKKyAgICByZXR1cm4gX21lZGlhRWxlbWVudC5nZXQoKTsKK30K
KworLSAodm9pZCllbnRlckZ1bGxzY3JlZW46KFVJU2NyZWVuICopc2NyZWVuCit7CisgICAgaWYg
KCFzY3JlZW4pCisgICAgICAgIHNjcmVlbiA9IFtjbGFzc1VJU2NyZWVuIG1haW5TY3JlZW5dOwor
CisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyID0gW1tbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyLm1lZGlh
RWxlbWVudCA9IF9tZWRpYUVsZW1lbnQ7CisKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBzZWxmLnBsYXllclZpZXdDb250cm9sbGVyID0g
W1tbY2xhc3NBVlBsYXllclZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
CisgICAgICAgIHNlbGYucGxheWVyVmlld0NvbnRyb2xsZXIucGxheWVyQ29udHJvbGxlciA9IChB
VlBsYXllckNvbnRyb2xsZXIgKilzZWxmLnBsYXllckNvbnRyb2xsZXI7CisgICAgICAgIHNlbGYu
cGxheWVyVmlld0NvbnRyb2xsZXIuZGVsZWdhdGUgPSBzZWxmLnBsYXllckNvbnRyb2xsZXI7Cisg
ICAgICAgCisgICAgICAgIHNlbGYudmlld0NvbnRyb2xsZXIgPSBbW1tjbGFzc1VJVmlld0NvbnRy
b2xsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgCisgICAgICAgIHNlbGYu
d2luZG93ID0gW1tbY2xhc3NVSVdpbmRvdyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbc2NyZWVuIGJv
dW5kc11dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgc2VsZi53aW5kb3cuYmFja2dyb3VuZENvbG9y
ID0gW2NsYXNzVUlDb2xvciBjbGVhckNvbG9yXTsKKyAgICAgICAgc2VsZi53aW5kb3cucm9vdFZp
ZXdDb250cm9sbGVyID0gKFVJVmlld0NvbnRyb2xsZXIgKilzZWxmLnZpZXdDb250cm9sbGVyOwor
ICAgICAgICBbc2VsZi53aW5kb3cgbWFrZUtleUFuZFZpc2libGVdOworICAgICAgICAKKyAgICAg
ICAgW3NlbGYudmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9sbGVyOnNlbGYucGxheWVy
Vmlld0NvbnRyb2xsZXIgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKKyAgICB9KTsKK30K
KworLSAodm9pZClleGl0RnVsbHNjcmVlbgoreworICAgIHNlbGYucGxheWVyQ29udHJvbGxlci5t
ZWRpYUVsZW1lbnQgPSBudWxscHRyOworCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgW3NlbGYudmlld0NvbnRyb2xsZXIgZGlzbWlzc1Zp
ZXdDb250cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246XnsKKyAgICAgICAgICAgIHNlbGYu
d2luZG93LmhpZGRlbiA9IFlFUzsKKyAgICAgICAgICAgIHNlbGYud2luZG93LnJvb3RWaWV3Q29u
dHJvbGxlciA9IG5pbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc2VsZi5wbGF5ZXJWaWV3
Q29udHJvbGxlciA9IG5pbDsKKyAgICAgICAgICAgIHNlbGYudmlld0NvbnRyb2xsZXIgPSBuaWw7
CisgICAgICAgICAgICBzZWxmLndpbmRvdyA9IG5pbDsKKyAgICAgICAgICAgIFdlYlRocmVhZFJ1
biheeworICAgICAgICAgICAgICAgIF9tZWRpYUVsZW1lbnQgPSBudWxscHRyOworICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgfV07CisgICAgfSk7Cit9CisKK0BlbmQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCmluZGV4IGI4MzkyODZiNjg2MDBkYjg5YTlhYjY4MWUzNTYwNDlkMmJiZDgwMmIu
LjJlYzgyNjE5MTM5YjY0NDhhYjllZWIzYjdlOTgzODAwNjEyODM3OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xODUs
NyArMTg1LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJREVPKSAm
JiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBXZWJDb3JlOjpOb2RlKikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSopIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6
Tm9kZSopIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGJlZTg3NmExZWM3MDgxZTY1ZWFjYzcxOGVjNzcw
MWRlMTQzYWE3M2EuLjJjOWViZjY4MmY3MWE5YzBkZDNiMDdmN2NlNzgwYmQxODRiOTQ2ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQubW0KQEAgLTk2NywxMCArOTY3LDE0IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzY2hlZHVs
ZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJREVPKSAm
JiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShWSURFTykKIAogYm9vbCBXZWJDaHJvbWVDbGll
bnQ6OnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgaWYgKCFTZXR0aW5nczo6YXZLaXRFbmFibGVkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgIHJldHVybiBpc0hUTUxWaWRlb0VsZW1lbnQobm9k
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZUtleXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VLZXlzUHJpdmF0ZS5oCmluZGV4IGM0ZGYyMjdjZjI0ZTk1ZWJhOGRhMjc1ODk3NWUwZDY4YmJk
OTZkMDUuLjg4YTQ0ZmRkZTJmYTE2MzQzZDMwOWY4ZTUwMDY5Y2FkZWE0NjA5NDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUu
aApAQCAtMTMzLDYgKzEzMyw3IEBACiAjaWYgVEFSR0VUX09TX0lQSE9ORQogI2RlZmluZSBXZWJL
aXRNZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheVByZWZlcmVuY2VLZXkgQCJXZWJLaXRNZWRpYVBs
YXliYWNrQWxsb3dzQWlyUGxheSIKICNkZWZpbmUgV2ViS2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlP
dmVycmlkZSBAIldlYktpdEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGUiCisjZGVmaW5lIFdl
YktpdEFWS2l0RW5hYmxlZCBAIldlYktpdEFWS2l0RW5hYmxlZCIKICNlbmRpZgogI2RlZmluZSBX
ZWJLaXRSZWdpb25CYXNlZENvbHVtbnNFbmFibGVkS2V5IEAiV2ViS2l0UmVnaW9uQmFzZWRDb2x1
bW5zRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb25L
ZXkgQCJXZWJLaXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGJmOGJkNjdhM2RhMjkxZDI2Yjcw
YTM3MmYyNjk2YmFjZjJkYTQwNjYuLmUyZmM3Y2IwZDg1NTVjOTU1ZmM1OTkwNWJjZjM0NDI0MTY5
OGNhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpA
QCAtNTE5LDYgKzUxOSw3IEBAIHB1YmxpYzoKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhC
b29sOk5PXSwgICBXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lUHJlZmVyZW5jZUtleSwK
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRNZWRpYVBsYXli
YWNrQWxsb3dzQWlyUGxheVByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoVW5zaWduZWRJbnQ6QXVkaW9TZXNzaW9uOjpOb25lXSwgIFdlYktpdEF1ZGlvU2Vzc2lvbkNh
dGVnb3J5T3ZlcnJpZGUsCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAg
V2ViS2l0QVZLaXRFbmFibGVkLAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aExvbmdMb25n
OldlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCldLCBXZWJLaXRBcHBs
aWNhdGlvbkNhY2hlVG90YWxRdW90YSwKIAogICAgICAgICAvLyBQZXItT3JpZ2luIFF1b3RhIG9u
IGlPUyBpcyAyNU1CLiBXaGVuIHRoZSBxdW90YSBpcyByZWFjaGVkIGZvciBhIHBhcnRpY3VsYXIg
b3JpZ2luCkBAIC0yMTgwLDYgKzIxODEsMTYgQEAgc3RhdGljIE5TU3RyaW5nICpjbGFzc0lCQ3Jl
YXRvcklEID0gbmlsOwogICAgIFtzZWxmIF9zZXRVbnNpZ25lZEludFZhbHVlOm92ZXJyaWRlIGZv
cktleTpXZWJLaXRBdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRlXTsKIH0KIAorLSAoQk9PTClh
dktpdEVuYWJsZWQKK3sKKyAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRB
VktpdEVuYWJsZWRdOworfQorCistICh2b2lkKXNldEFWS2l0RW5hYmxlZDooYm9vbClmbGFnCit7
CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRBVktpdEVuYWJsZWRd
OworfQorCiAtIChCT09MKW5ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWQKIHsKICAgICBy
ZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXROZXR3b3JrRGF0YVVzYWdlVHJhY2tp
bmdFbmFibGVkUHJlZmVyZW5jZUtleV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRleCA1OGYzMmY3OWIwMGNhZWRlODM3NjRiNzg5
OTQ3ZjBlMmI3Nzc4Yjc4Li5jMTI5MTlmNzQzNjcwZDExZGEzOWQxNzU0NTRmM2Y1NWY5ZDI2MzM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2
YXRlLmgKQEAgLTI1OSw2ICsyNTksOSBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlByZWZlcmVuY2Vz
Q2FjaGVNb2RlbENoYW5nZWRJbnRlcm5hbE5vdGlmaWNhdGlvbjsKIC0gKHVuc2lnbmVkKWF1ZGlv
U2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGU7CiAtICh2b2lkKXNldEF1ZGlvU2Vzc2lvbkNhdGVnb3J5
T3ZlcnJpZGU6KHVuc2lnbmVkKW92ZXJyaWRlOwogCistIChCT09MKWF2S2l0RW5hYmxlZDsKKy0g
KHZvaWQpc2V0QVZLaXRFbmFibGVkOihib29sKWZsYWc7CisKIC8vIFdBUk5JTkc6IHRoaXMgYWZm
ZWN0IG5ldHdvcmsgcGVyZm9ybWFuY2UuIFRoaXMgbXVzdCBub3QgYmUgZW5hYmxlZCBmb3IgcHJv
ZHVjdGlvbiB1c2UuCiAvLyBFbmFibGluZyB0aGlzIG1ha2VzIFdlYkNvcmUgcmVwb3J0cyB0aGUg
bmV0d29yayBkYXRhIHVzYWdlLgogLy8gVGhpcyBpcyBhIGdsb2JhbCBzZXR0aW5nLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGZlNTMyMmNhOGVlZjE0M2FkYmI0NDQ2MWIw
NjZkNTBjYzcyZGNiZTkuLmM3MTQ1MDM5ZTMxYTZkN2ZmNTExNGUwMzIyYjI2YjI0YmIxOWIzN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTI0MSw3ICsyNDEsMTEgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJFdmVudC5oPgogI2ltcG9ydCA8ZGlzcGF0Y2gvcHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaD4KKyNpbXBvcnQgPGRpc3BhdGNo
L3ByaXZhdGUuaAogI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNlbHNlCisjaW1wb3J0IDxX
ZWJDb3JlL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaD4KIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgpAQCAt
MjQzNCw2ICsyNDM4LDcgQEAgc3RhdGljIGJvb2wgbmVlZHNTZWxmUmV0YWluV2hpbGVMb2FkaW5n
UXVpcmsoKQogICAgIHNldHRpbmdzLnNldEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGUoW3By
ZWZlcmVuY2VzIGF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGVdKTsKICAgICBzZXR0aW5ncy5z
ZXROZXR3b3JrRGF0YVVzYWdlVHJhY2tpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBuZXR3b3JrRGF0
YVVzYWdlVHJhY2tpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0TmV0d29ya0ludGVyZmFj
ZU5hbWUoW3ByZWZlcmVuY2VzIG5ldHdvcmtJbnRlcmZhY2VOYW1lXSk7CisgICAgc2V0dGluZ3Mu
c2V0QVZLaXRFbmFibGVkKFtwcmVmZXJlbmNlcyBhdktpdEVuYWJsZWRdKTsKICNlbmRpZgogICAg
IHNldHRpbmdzLnNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKFtwcmVmZXJlbmNl
cyBtZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZV0pOwogICAgIHNldHRpbmdzLnNldE1l
ZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUoW3ByZWZlcmVuY2VzIG1lZGlhUGxheWJhY2tBbGxvd3NJ
bmxpbmVdKTsKQEAgLTg1MjksNyArODUzNCw3IEBAIGJvb2wgTGF5ZXJGbHVzaENvbnRyb2xsZXI6
OmZsdXNoTGF5ZXJzKCkKIAogI2VuZGlmCiAKLSNpZiBFTkFCTEUoVklERU8pICYmICFQTEFURk9S
TShJT1MpCisjaWYgRU5BQkxFKFZJREVPKQogLSAodm9pZClfZW50ZXJGdWxsc2NyZWVuRm9yTm9k
ZTooV2ViQ29yZTo6Tm9kZSopbm9kZQogewogICAgIEFTU0VSVChpc0hUTUxWaWRlb0VsZW1lbnQo
bm9kZSkpOwpAQCAtODU1Miw3ICs4NTU3LDExIEBAIGJvb2wgTGF5ZXJGbHVzaENvbnRyb2xsZXI6
OmZsdXNoTGF5ZXJzKCkKICAgICBpZiAoIV9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlcikg
ewogICAgICAgICBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgPSBbW1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdOwogICAgICAgICBbX3ByaXZhdGUtPmZ1bGxz
Y3JlZW5Db250cm9sbGVyIHNldE1lZGlhRWxlbWVudDp2aWRlb0VsZW1lbnRdOwotICAgICAgICBb
X3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjpbW3NlbGYgd2lu
ZG93XSBzY3JlZW5dXTsgICAgICAgIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgW19wcml2
YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciBlbnRlckZ1bGxzY3JlZW46bmlsXTsKKyNlbHNlCisg
ICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOltb
c2VsZiB3aW5kb3ddIHNjcmVlbl1dOworI2VuZGlmCiAgICAgfQogICAgIGVsc2UKICAgICAgICAg
W19wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciBzZXRNZWRpYUVsZW1lbnQ6dmlkZW9FbGVt
ZW50XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVy
bmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4
IDVmZGY1ZGYwZmJmYzRmNjczYmQ1NGI2NjY4ODZlOWIzNjYxYjU0NjIuLjQxZDJkMTc3ZDEzZTUx
ODlkMDU5ZjVhMTNhMjA2MzQ4ZGVmOTQ3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMjM2LDcgKzIzNiw3IEBAIE9CSkNfQ0xBU1MgTlNUZXh0
QWx0ZXJuYXRpdmVzOwogCiAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVu
Y2VzICopcHJlZmVyZW5jZXM7CiAKLSNpZiBFTkFCTEUoVklERU8pICYmICFQTEFURk9STShJT1Mp
ICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBkZWZpbmVkKF9f
Y3BsdXNwbHVzKQogLSAodm9pZClfZW50ZXJGdWxsc2NyZWVuRm9yTm9kZTooV2ViQ29yZTo6Tm9k
ZSopbm9kZTsKIC0gKHZvaWQpX2V4aXRGdWxsc2NyZWVuOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221319</attachid>
            <date>2014-01-15 16:56:13 -0800</date>
            <delta_ts>2014-01-16 20:46:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126818-20140115165612.patch</filename>
            <type>text/plain</type>
            <size>38248</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGMzYWYwZThiYjVhMjNl
MGUzNjMyZjhjODk4Y2ZhODg4NGM0YjA2Yy4uODRlNGYwMjdmNjM1Y2ZhNDQwMTgxNTE4NDIyNTg0
ZjEyMWUwYzczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE0LTAxLTExICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVZLaXQgZnVsbHNj
cmVlbiB2aWRlbyBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjY4MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIG9ic2VydmFibGUgY2hhbmdlIGluIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgQWRkIGFi
aWxpdHkgZm9yIGZ1bGxzY3JlZW4gdG8gYm9ycm93IHRoZSBBVlBsYXllckxheWVyLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjptZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0
KToKKyAgICAgICAgQWRkIGEgZGlzYWJsZWQgc2V0dGluZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9y
dHNGdWxsc2NyZWVuKToKKyAgICAgICAgRW5hYmxlZCBmdWxsc2NyZWVuIGZvciBpT1MuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGluaXRd
KToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvcndhcmRpbmdUYXJnZXRGb3JTZWxlY3RvcjpdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNob3VsZERpc21pc3NGb3JEb25lXSk6
CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBwbGF5Ol0pOgorICAgICAgICAoLVtX
ZWJBVlBsYXllckNvbnRyb2xsZXIgcGF1c2U6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29u
dHJvbGxlciB0b2dnbGVQbGF5YmFjazpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9s
bGVyIGlzUGxheWluZ10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxh
eWluZzpdKToKKyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFs
dWVzQWZmZWN0aW5nUGxheWluZ10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIg
c2Vla1RvVGltZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHVwZGF0ZVRp
bWluZ1dpdGhDdXJyZW50VGltZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVy
IGVmZmVjdGl2ZVJhdGVdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNldE1l
ZGlhRWxlbWVudDpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGhhbmRsZUV2
ZW50Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToK
KyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAg
ICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0TWVkaWFFbGVtZW50Ol0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIG1lZGlhRWxlbWVudF0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjpd
KToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBleGl0RnVsbHNjcmVl
bl0pOgorICAgICAgICBBZGQgV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvciBIVE1MTWVkaWFFbGVt
ZW10IHRvIGludGVyZmFjZSB3aXRoIEFWUGxheWVyVmlld0NvbnRyb2xsZXIuCisKIDIwMTQtMDEt
MTUgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
dW5uZWNlc3NhcnkgY2FsbCB0byB3ZWJHTENvbnRleHRDcmVhdGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggMTY1MWYyODVhNDliOGM3ZGI0M2U5YTk5NmY3N2RiNTNhNTdhOTI2Ni4uYzE3OWU5NGY5NWI2
OTYxZGY2YzE5MDA3OTA1NzU2OGU5OTNjYzFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDE0LTAxLTExICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgQVZLaXQgZnVsbHNjcmVlbiB2aWRlbyBpbnRlcmZhY2UuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY4MTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9k
ZSk6CisgICAgICAgIEVuYWJsZSAqRnVsbHNjcmVlbkZvck5vZGUgZm9yIEhUTUxNZWRpYUVsZW1l
bnQgZm9yIGlPUworCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUu
aDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQ
cmVmZXJlbmNlcyBpbml0aWFsaXplXSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIG1lZGlh
UGxheWJhY2tGdWxsc2NyZWVuQVZLaXRdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgc2V0
TWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOgorICAgICAgICAoLVtXZWJWaWV3
IF9lbnRlckZ1bGxzY3JlZW5Gb3JOb2RlOldlYkNvcmU6Ol0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlld0ludGVybmFsLmg6CisgICAgICAgIEFkZCBhIGRpc2FibGVkIHByZWYgbWVkaWFQbGF5
YmFja0Z1bGxzY3JlZW5BVktpdC4KKyAgICAgICAgVXNlIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdCBvbiBpT1MKKwogMjAxNC0wMS0xNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3JlIGlPUyBidWlsZCBmaXhpbmcuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IDNmOWZmYjhjNmY3ZGZjNmNjYTdlZjhmOGE1MzViYzMzYWQzZDc5MWYuLjk4
ZTBiOGIwMTUzMWYwZTlmMmJjNjVmYjVmNmJkNWNkOTMyMmU4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0xMTgyLDYgKzExODIsNyBAQCBfX1pON1dlYkNvcmU4R3JhZGllbnQxMmFkZENvbG9y
U3RvcEVmUktOU181Q29sb3JFCiBfX1pON1dlYkNvcmU4R3JhZGllbnRDMUVSS05TXzEwRmxvYXRQ
b2ludEVTM18KIF9fWk43V2ViQ29yZThHcmFkaWVudEQxRXYKIF9fWk43V2ViQ29yZThQb3NpdGlv
bkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFaU5TMF8xMEFuY2hvclR5cGVFCitfX1pO
N1dlYkNvcmU4U2V0dGluZ3MxM2dBVktpdEVuYWJsZWRFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3Mx
M2dRVEtpdEVuYWJsZWRFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNHNldEphdmFFbmFibGVkRWIK
IF9fWk43V2ViQ29yZThTZXR0aW5nczE1c2V0UVRLaXRFbmFibGVkRWIKQEAgLTMwNDcsNyArMzA0
OCw3IEBAIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9i
YWxPYmplY3RFUE5TXzEwVGltZVJhbmdlc0UKIF9fWk5LN1dlYkNvcmUxMFRpbWVSYW5nZXM3bmVh
cmVzdEVkCiAjZW5kaWYKIAotI2lmIEVOQUJMRShWSURFTykgJiYgIVBMQVRGT1JNKElPUykKKyNp
ZiBFTkFCTEUoVklERU8pCiBfX1pOSzdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50NWVuZGVkRXYK
IF9fWk5LN1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQ2cGF1c2VkRXYKIC5vYmpjX2NsYXNzX25h
bWVfV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY0YTExNDU4M2UxNDk2MGIxNTkz
YzgzZWYxZjE1NjhmNDE2NjZhZjEuLmYyMzE5MjUzYjVjY2U4OWQ2ODI4ODI0ODRhZmY2YzRmN2M2
ZmU5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEyOTYsNiArMTI5Niw4IEBACiAJCTNGMkIzM0VEMTY1QUYxNTYwMEUzOTg3
QyAvKiBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0YyQjMzRTgxNjVBRjE1NTAwRTM5ODdDIC8q
IERPTVdlYktpdENTU1ZpZXdwb3J0UnVsZUludGVybmFsLmggKi87IH07CiAJCTNGMkIzM0VFMTY1
QUYxNTYwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjJCMzNFOTE2NUFGMTU1MDBFMzk4
N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwICovOyB9OwogCQkzRjJCMzNFRjE2NUFG
MTU2MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGMkIzM0VBMTY1QUYxNTUwMEUzOTg3QyAv
KiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovOyB9OworCQkzRjQyQjMxRDE4ODExOTFCMDAy
NzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjQyQjMxQjE4ODExOTFCMDAyNzhB
QUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4
QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGNDJCMzFDMTg4MTE5MUIwMDI3OEFB
QyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gKi87IH07CiAJCTNGRkZG
OUE4MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0ZGRkY5QTYxNTlEOUE1NTAw
MjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgKi87IH07CiAJCTNGRkZGOUE5MTU5
RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGRkZGOUE3MTU5RDlBNTUwMDIwQkJENSAv
KiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCAqLzsgfTsKIAkJM0ZGRkY5QUQxNTlEOUIwNjAwMjBC
QkQ1IC8qIFZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRkZGRjlBQjE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3Bv
cnRTdHlsZVJlc29sdmVyLmNwcCAqLzsgfTsKQEAgLTgxODQsNiArODE4Niw4IEBACiAJCTNGMkIz
M0U4MTY1QUYxNTUwMEUzOTg3QyAvKiBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGVJbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XZWJLaXRDU1NWaWV3cG9ydFJ1
bGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRjJCMzNFOTE2NUFG
MTU1MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRjJCMzNFQTE2NUFGMTU1MDBFMzk4N0MgLyogSlNX
ZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
M0Y0MkIzMUIxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJB
VktpdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQVZLaXQuaDsgcGF0aCA9IGlvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQVZLaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0Y0MkIzMUMxODgxMTkx
QjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5tbTsgcGF0aCA9IGlvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZL
aXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGRkZGOUE2MTU5RDlBNTUwMDIw
QkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJM0ZGRkY5QTcxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdw
b3J0UnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NWaWV3
cG9ydFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0ZGRkY5QUIxNTlEOUIw
NjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTgwODksNiArMTgwOTMsOCBAQAogCQkJCUZFMEQ4NEVBMTA0
ODQzNkUwMDFBMTc5RSAvKiBXZWJFdmVudC5tbSAqLywKIAkJCQlBNTAyQzVERDEzMDQ5QjM1MDBG
QzdENTMgLyogV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oICovLAogCQkJCUMyQzRDQjFE
MTYxQTEzMTIwMEQyMTREQSAvKiBXZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmggKi8sCisJ
CQkJM0Y0MkIzMUIxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJBVktpdC5oICovLAorCQkJCTNGNDJCMzFDMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gKi8sCiAJCQkJRTQ1MzkwM0MwRUFGRDYzNzAwMzY5
NUM4IC8qIFdpZGdldElPUy5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gaW9zOwpAQCAtMjUwNjEs
NiArMjUwNjcsNyBAQAogCQkJCUE5QzZFNEY0MEQ3NDVFNDgwMDY0NDJFOSAvKiBQbHVnaW5EYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzIwNUFCQzEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2lu
RG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBREExNDExMEUxQUU1RDkwMDAyM0VFNSAv
KiBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzRjQyQjMx
RDE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MUUyMTgzQTE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jl
c291cmNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBODc5OTAxMUNCRTg0NjAwM0M2NjRGIC8q
IFBsdWdpblN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQUZEQUMzRDEwRjU0NDhDMDBF
MUYzRDIgLyogUGx1Z2luVmlld0Jhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjkwNDgsNiArMjkw
NTUsNyBAQAogCQkJCUIyMjI3QTkwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E5MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
UG9seWxpbmVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1NDNCODU3MTdFQjc1OEYw
MDNCRTkzQSAvKiBTVkdQcm9wZXJ0eUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJM0Y0MkIz
MUUxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTk2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTk5MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjIyMjdBOUQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JlY3RFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggM2Ux
ZjZlY2VlYTUwMjE4M2Y1ZGY2YTAzYjg5YmRkODM0ZWM3OThkMi4uMGEwY2QyMzhmODY2NzU4OTBh
ZThmNDUyNWMzZDI2NGIxMmQ1ZGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC00ODQ1LDEzICs0ODQ1LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBt
ZWRpYUNvbnRyb2xzKCktPmVudGVyZWRGdWxsc2NyZWVuKCk7CiAgICAgaWYgKGRvY3VtZW50KCku
cGFnZSgpKSB7Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCkt
PmNocm9tZSgpLmNsaWVudCgpLmVudGVyRnVsbHNjcmVlbkZvck5vZGUodGhpcyk7Ci0gICAgICAg
IHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGJlZ2luZnVsbHNjcmVlbkV2ZW50KTsK
LSNlbHNlCi0gICAgICAgIGlmIChtX3BsYXllcikKKyAgICAgICAgaWYgKGRvY3VtZW50KCkucGFn
ZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5zdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKHRoaXMpKSB7
CisgICAgICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJG
dWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLndlYmtpdGJlZ2luZnVsbHNjcmVlbkV2ZW50KTsKKyAgICAgICAgfSBlbHNlIGlmICht
X3BsYXllcikKICAgICAgICAgICAgIG1fcGxheWVyLT5lbnRlckZ1bGxzY3JlZW4oKTsKLSNlbmRp
ZgogICAgIH0KIH0KIApAQCAtNDg3MywxMyArNDg3MSwxMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmV4aXRGdWxsc2NyZWVuKCkKICAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkpIHsKICAgICAg
ICAgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JW
aWRlb1BsYXliYWNrKCkpCiAgICAgICAgICAgICBwYXVzZUludGVybmFsKCk7Ci0jaWYgIVBMQVRG
T1JNKElPUykKLSAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmV4
aXRGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKLSAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5h
bWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KTsKLSNlbHNlCi0gICAgICAgIGlmIChtX3Bs
YXllcikKKworICAgICAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgp
LnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUodGhpcykpIHsKKyAgICAgICAgICAgIGRvY3VtZW50
KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5leGl0RnVsbHNjcmVlbkZvck5vZGUodGhpcyk7
CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2Ny
ZWVuRXZlbnQpOworICAgICAgICB9IGVsc2UgaWYgKG1fcGxheWVyKQogICAgICAgICAgICAgbV9w
bGF5ZXItPmV4aXRGdWxsc2NyZWVuKCk7Ci0jZW5kaWYKICAgICB9CiB9CiAKQEAgLTQ5MDMsOCAr
NDkwMCwzMSBAQCBQbGF0Zm9ybU1lZGlhIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTWVkaWEo
KSBjb25zdAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRmb3JtTGF5ZXIq
IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIHJldHVybiBt
X3BsYXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBpZiAobV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworI2VuZGlmCisgICAgcmV0dXJuIG1fcGxheWVyID8gbV9wbGF5ZXItPnBsYXRmb3JtTGF5
ZXIoKSA6IG51bGxwdHI7CiB9CisKKyNpZiBQTEFURk9STShJT1MpCitQbGF0Zm9ybUxheWVyKiBI
VE1MTWVkaWFFbGVtZW50Ojpib3Jyb3dQbGF0Zm9ybUxheWVyKCkKK3sKKyAgICBBU1NFUlQoIW1f
cGxhdGZvcm1MYXllckJvcnJvd2VkKTsKKyAgICBtX3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCA9IHRy
dWU7CisgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21F
bGVtZW50KCk7CisgICAgcmV0dXJuIG1fcGxheWVyID8gbV9wbGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KSA6IG51bGxwdHI7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmV0dXJuUGxhdGZvcm1M
YXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKQoreworICAgIEFTU0VSVChtX3BsYXRm
b3JtTGF5ZXJCb3Jyb3dlZCAmJiBwbGF0Zm9ybUxheWVyID09IChtX3BsYXllciA/IG1fcGxheWVy
LT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyKSk7CisgICAgbV9wbGF0Zm9ybUxheWVyQm9ycm93
ZWQgPSBmYWxzZTsKKyAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXIoKS0+dXBk
YXRlRnJvbUVsZW1lbnQoKTsKK30KKyNlbmRpZgogI2VuZGlmCiAKIGJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6aGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAppbmRleCAyZDBjNWRiZDZiMzVmYmY5NmM2NDdjOTk3NWEzYTQwMjg3Njg0Mjdk
Li41Yzg2YWM2N2E0ZjUyNWE4ODFhZDE0MWNjZjZlMmQ3MzFlNmU4Njk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTMyLDYgKzEzMiwxMCBAQCBwdWJsaWM6CiAg
ICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Q7CiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dDsKKyNpZiBQTEFURk9STShJT1MpCisgICAgUGxhdGZvcm1MYXllciogYm9ycm93UGxhdGZvcm1M
YXllcigpOworICAgIHZvaWQgcmV0dXJuUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKik7Cisj
ZW5kaWYKICNlbmRpZgogCiAgICAgZW51bSBEZWxheWVkQWN0aW9uVHlwZSB7CkBAIC03NzUsNiAr
Nzc5LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1fcmVxdWVz
dGluZ1BsYXkgOiAxOworICAgIGJvb2wgbV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgOiAxOwogI2Vu
ZGlmCiAKICAgICBib29sIG1fcmVzdW1lUGxheWJhY2tBZnRlckludGVycnVwdGlvbiA6IDE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IGU3NTY2NTU1ZTVkNmY2ZjA1MWFiMTQxZWUxZWE2
ZDM3MjI2OTI4YzYuLmI1NjExNDRhZDU0ZjllMDBlYjc0ZjE1YjA3YzVhM2IzOWZkYjcxY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC05OCw2ICs5OCw3IEBAIGJvb2wgU2V0dGluZ3M6
OmdMb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxlZCA9IGZhbHNlOwogCiAjaWYgUExB
VEZPUk0oSU9TKQogYm9vbCBTZXR0aW5nczo6Z05ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJs
ZWQgPSBmYWxzZTsKK2Jvb2wgU2V0dGluZ3M6OmdBVktpdEVuYWJsZWQgPSBmYWxzZTsKICNlbmRp
ZgogCiAvLyBOT1RFcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IDk2MjA1ZmQ3ZTRhZmI5OTli
NmEwYWYxOTRjYmYzYThkNzc5YjYwMzkuLjdkYTkxZDJkMWMzNTIwMTQ4NmU3NDMxNDk4YzRjODRh
YWQ0MWMzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTMwNCw2ICszMDQsOSBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgdm9pZCBzZXROZXR3b3JrSW50ZXJmYWNlTmFtZShjb25zdCBTdHJp
bmcmKTsKICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBuZXR3b3JrSW50ZXJmYWNlTmFtZSgpOwor
CisgICAgc3RhdGljIHZvaWQgc2V0QVZLaXRFbmFibGVkKGJvb2wgZmxhZykgeyBnQVZLaXRFbmFi
bGVkID0gZmxhZzsgfQorICAgIHN0YXRpYyBib29sIGF2S2l0RW5hYmxlZCgpIHsgcmV0dXJuIGdB
VktpdEVuYWJsZWQ7IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNDAxLDYgKzQwNCw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ1Nob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmli
dXRlU2V0dGVyczsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wgZ05ldHdvcmtE
YXRhVXNhZ2VUcmFja2luZ0VuYWJsZWQ7CisgICAgc3RhdGljIGJvb2wgZ0FWS2l0RW5hYmxlZDsK
ICNlbmRpZgogCiAgICAgc3RhdGljIGRvdWJsZSBnSGlkZGVuUGFnZURPTVRpbWVyQWxpZ25tZW50
SW50ZXJ2YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uY3BwCmluZGV4IDYyMGY0MzEwOWExYTliNTdkOTM5MTljMTRmMjlmNmQ1Njk4
ODNlZTQuLmM0MDdkMGU1ZjNiYzU0ZjkzODNjNmQ5NWJlZWIwMTg1NDBjMWYxYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIlNvZnRMaW5raW5nLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUg
PENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KQEAgLTQ3NCw2ICs0NzUsMTAgQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiAgICAg
cmV0dXJuIHRydWU7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyIGFzc3VtZXMgYSBRVEtpdC9RdWlja1RpbWUgbWVkaWEgZW5naW5lCisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIGlmIChTZXR0aW5nczo6YXZLaXRFbmFibGVkKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQyYWNhOWY2ZWVhZTc3Mjc5ZDUwNzU3MDY1
YjJkNWE3NGRhZGYzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaApAQCAtMCwwICsxLDQ5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXRfaAorI2RlZmluZSBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXRfaAorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0IDx3
dGYvUmVmUHRyLmg+CisKK0BjbGFzcyBVSVNjcmVlbjsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK30KKworQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyIDogTlNPYmplY3QKKworLSAodm9pZClzZXRNZWRpYUVsZW1lbnQ6KFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQqKW1lZGlhRWxlbWVudDsKKy0gKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQqKW1lZGlhRWxlbWVudDsKKworLSAodm9pZCllbnRlckZ1bGxzY3JlZW46KFVJU2Ny
ZWVuICopc2NyZWVuOworLSAodm9pZClleGl0RnVsbHNjcmVlbjsKK0BlbmQKKworI2VuZGlmCisj
ZW5kaWYgLy8gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkYmFlYTllNjE0ZDc1ODEwZTU3OTM3YzU3
MDZkYTYzZTliY2I1NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC0wLDAgKzEsNDIz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIldlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oIgorCisjaW1wb3J0ICJET01FdmVudEludGVybmFsLmgi
CisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxDb3JlTWVkaWEvQ01UaW1lLmg+CisjaW1w
b3J0IDxVSUtpdC9VSUtpdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01FdmVudExpc3RlbmVyLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50TGlzdGVu
ZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRXZlbnROYW1lcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9I
VE1MRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL09iakNFdmVudExpc3RlbmVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRM
aW5raW5nLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KKyNpbXBvcnQg
PFdlYkNvcmUvUmVuZGVyRWxlbWVudC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworU09GVF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRp
b24pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckxheWVyKQorCitTT0ZU
X0xJTktfRlJBTUVXT1JLKEFWS2l0KQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllckNv
bnRyb2xsZXIpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWUGxheWVyVmlld0NvbnRyb2xsZXIp
CitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVmFsdWVUaW1pbmcpCisKK1NPRlRfTElOS19GUkFN
RVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJU2NyZWVuKQorU09GVF9MSU5L
X0NMQVNTKFVJS2l0LCBVSVdpbmRvdykKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlWaWV3KQor
U09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSVZpZXdDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNT
KFVJS2l0LCBVSUNvbG9yKQorCitTT0ZUX0xJTktfRlJBTUVXT1JLKENvcmVNZWRpYSkKK1NPRlRf
TElOSyhDb3JlTWVkaWEsIENNVGltZU1ha2VXaXRoU2Vjb25kcywgQ01UaW1lLCAoRmxvYXQ2NCBz
ZWNvbmRzLCBpbnQzMl90IHByZWZlcnJlZFRpbWVTY2FsZSksIChzZWNvbmRzLCBwcmVmZXJyZWRU
aW1lU2NhbGUpKQorU09GVF9MSU5LKENvcmVNZWRpYSwgQ01UaW1lR2V0U2Vjb25kcywgRmxvYXQ2
NCwgKENNVGltZSB0aW1lKSwgKHRpbWUpKQorCitAaW50ZXJmYWNlIEFWVmFsdWVUaW1pbmcgOiBO
U09iamVjdCA8TlNDb2RpbmcsIE5TQ29weWluZywgTlNNdXRhYmxlQ29weWluZz4KKysgKGlkKXZh
bHVlVGltaW5nV2l0aEFuY2hvclZhbHVlOihkb3VibGUpYW5jaG9yVmFsdWUgYW5jaG9yVGltZVN0
YW1wOihOU1RpbWVJbnRlcnZhbCkgdGltZVN0YW1wIHJhdGU6KGRvdWJsZSlyYXRlOworKyAoTlNU
aW1lSW50ZXJ2YWwpY3VycmVudFRpbWVTdGFtcDsKK0BlbmQKKworQHByb3RvY29sIEFWUGxheWVy
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQorQGVuZAorCitAcHJvdG9jb2wgQVZQbGF5ZXJMYXllcgor
QGVuZAorCitAaW50ZXJmYWNlIEFWUGxheWVyQ29udHJvbGxlciA6IFVJUmVzcG9uZGVyCitAZW5k
CisKK0BpbnRlcmZhY2UgQVZQbGF5ZXJWaWV3Q29udHJvbGxlciA6IFVJVmlld0NvbnRyb2xsZXIK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRl
bGVnYXRlPiBkZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIEFWUGxheWVy
Q29udHJvbGxlciAqcGxheWVyQ29udHJvbGxlcjsKK0BlbmQKKwordHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRpc21pc3NhbFJlYXNvbikgeworICAgIEFW
UGxheWVyVmlld0NvbnRyb2xsZXJEaXNtaXNzYWxSZWFzb25Eb25lQnV0dG9uVGFwcGVkLAorICAg
IEFWUGxheWVyVmlld0NvbnRyb2xsZXJEaXNtaXNzYWxSZWFzb25SZW1vdGVDb250cm9sU3RvcEV2
ZW50UmVjZWl2ZWQsCisgICAgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRpc21pc3NhbFJlYXNvbkVy
cm9yCit9IE5TX0VOVU1fQVZBSUxBQkxFX0lPUyg4XzApOworCit0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXMpIHsKKyAgICBBVlBsYXllckNvbnRyb2xs
ZXJTdGF0dXNVbmtub3duLAorICAgIEFWUGxheWVyQ29udHJvbGxlclN0YXR1c0xvYWRpbmcsCisg
ICAgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzUmVhZHlUb1BsYXksCisgICAgQVZQbGF5ZXJDb250
cm9sbGVyU3RhdHVzRmFpbGVkCit9IE5TX0VOVU1fQVZBSUxBQkxFKDEwXzEwLCA4XzApOworCitA
aW50ZXJmYWNlIFdlYkFWUGxheWVyQ29udHJvbGxlciA6IE5TT2JqZWN0IDxET01FdmVudExpc3Rl
bmVyLCBBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGU+CisKK0Bwcm9wZXJ0eShyZXRhaW4p
IEFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlclByb3h5OworQHByb3BlcnR5KHJl
dGFpbikgQ0FMYXllcjxBVlBsYXllckxheWVyPiAqcGxheWVyTGF5ZXI7CisKK0Bwcm9wZXJ0eSBC
T09MIGNhblBsYXk7CitAcHJvcGVydHkoZ2V0dGVyPWlzUGxheWluZykgQk9PTCBwbGF5aW5nOwor
QHByb3BlcnR5IEJPT0wgY2FuUGF1c2U7CitAcHJvcGVydHkgQk9PTCBjYW5Ub2dnbGVQbGF5YmFj
azsKK0Bwcm9wZXJ0eSBkb3VibGUgcmF0ZTsKK0Bwcm9wZXJ0eSBCT09MIGNhblNlZWs7CitAcHJv
cGVydHkgTlNUaW1lSW50ZXJ2YWwgY29udGVudER1cmF0aW9uOworQHByb3BlcnR5IE5TU2l6ZSBj
b250ZW50RGltZW5zaW9uczsKK0Bwcm9wZXJ0eSBCT09MIGhhc0VuYWJsZWRBdWRpbzsKK0Bwcm9w
ZXJ0eSBCT09MIGhhc0VuYWJsZWRWaWRlbzsKK0Bwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBtaW5U
aW1lOworQHByb3BlcnR5IE5TVGltZUludGVydmFsIG1heFRpbWU7CitAcHJvcGVydHkgTlNUaW1l
SW50ZXJ2YWwgY29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXM7CitAcHJvcGVydHkocmV0YWlu
KSBOU0FycmF5ICpsb2FkZWRUaW1lUmFuZ2VzOworQHByb3BlcnR5IEFWUGxheWVyQ29udHJvbGxl
clN0YXR1cyBzdGF0dXM7CitAcHJvcGVydHkocmV0YWluKSBBVlZhbHVlVGltaW5nICp0aW1pbmc7
CisKKy0gKHZvaWQpaGFuZGxlRXZlbnQ6KERPTUV2ZW50ICopZXZ0OworCistIChCT09MKXBsYXll
clZpZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdDb250cm9sbGVyICopcGxheWVyVmlld0NvbnRy
b2xsZXIgc2hvdWxkRGlzbWlzc1dpdGhSZWFzb246KEFWUGxheWVyVmlld0NvbnRyb2xsZXJEaXNt
aXNzYWxSZWFzb24pcmVhc29uOworCitAZW5kCisKKworQGltcGxlbWVudGF0aW9uIFdlYkFWUGxh
eWVyQ29udHJvbGxlcgoreworICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBfbWVkaWFFbGVt
ZW50OworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBfbGlzdGVuZXI7Cit9CisKKy0gKGluc3Rh
bmNldHlwZSlpbml0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAg
IHJldHVybiBzZWxmOworICAgIAorICAgIGluaXRBVlBsYXllckNvbnRyb2xsZXIoKTsKKyAgICBz
ZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IFtbY2xhc3NBVlBsYXllckNvbnRyb2xsZXIgYWxs
b2NdIGluaXRdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAg
ICBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IG5pbDsKKyAgICBzZWxmLnBsYXllckxheWVy
ID0gbmlsOworICAgIHNlbGYubG9hZGVkVGltZVJhbmdlcyA9IG5pbDsKKyAgICBzZWxmLnRpbWlu
ZyA9IG5pbDsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKGlkKWZvcndhcmRpbmdUYXJn
ZXRGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbGVjdG9y
KTsKKyAgICByZXR1cm4gc2VsZi5wbGF5ZXJDb250cm9sbGVyUHJveHk7Cit9CisKKy0gKEJPT0wp
cGxheWVyVmlld0NvbnRyb2xsZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3
Q29udHJvbGxlciBzaG91bGREaXNtaXNzV2l0aFJlYXNvbjooQVZQbGF5ZXJWaWV3Q29udHJvbGxl
ckRpc21pc3NhbFJlYXNvbilyZWFzb24KK3sKKyAgICBVTlVTRURfUEFSQU0ocGxheWVyVmlld0Nv
bnRyb2xsZXIpOworICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOworCisgICAgV2ViVGhyZWFkUnVu
KF57CisgICAgICAgIF9tZWRpYUVsZW1lbnQtPnBhdXNlKCk7CisgICAgICAgIF9tZWRpYUVsZW1l
bnQtPmV4aXRGdWxsc2NyZWVuKCk7CisgICAgfSk7CisgICAgcmV0dXJuIE5POworfQorCistICh2
b2lkKXBsYXk6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIFdl
YlRocmVhZFJ1biheeworICAgICAgICBfbWVkaWFFbGVtZW50LT5wbGF5KCk7CisgICAgfSk7Cit9
CisKKy0gKHZvaWQpcGF1c2U6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIp
OworICAgIFdlYlRocmVhZFJ1biheeworICAgICAgICBfbWVkaWFFbGVtZW50LT5wYXVzZSgpOwor
ICAgIH0pOworfQorCistICh2b2lkKXRvZ2dsZVBsYXliYWNrOihpZClzZW5kZXIKK3sKKyAgICBV
TlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgX21lZGlh
RWxlbWVudC0+dG9nZ2xlUGxheVN0YXRlKCk7CisgICAgfSk7Cit9CisKKy0gKEJPT0wpaXNQbGF5
aW5nCit7CisgICAgcmV0dXJuIFtzZWxmIHJhdGVdICE9IDA7Cit9CisKKy0gKHZvaWQpc2V0UGxh
eWluZzooQk9PTClwbGF5aW5nCit7CisgICAgV2ViVGhyZWFkUnVuKF57CisgICAgICAgIGlmIChw
bGF5aW5nKQorICAgICAgICAgICAgX21lZGlhRWxlbWVudC0+cGxheSgpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBfbWVkaWFFbGVtZW50LT5wYXVzZSgpOworICAgIH0pOworfQorCisrIChO
U1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZworeworICAgIHJldHVybiBb
TlNTZXQgc2V0V2l0aE9iamVjdDpAInJhdGUiXTsKK30KKworLSAodm9pZClzZWVrVG9UaW1lOihO
U1RpbWVJbnRlcnZhbCl0aW1lCit7CisgICAgV2ViVGhyZWFkUnVuKF57CisgICAgICAgIF9tZWRp
YUVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKHRpbWUpOworICAgIH0pOworfQorCistICh2b2lkKXVw
ZGF0ZVRpbWluZ1dpdGhDdXJyZW50VGltZTooTlNUaW1lSW50ZXJ2YWwpY3VycmVudFRpbWUKK3sK
KyAgICBOU1RpbWVJbnRlcnZhbCBhbmNob3JUaW1lU3RhbXAgPSAoIVtzZWxmIHJhdGVdKSA/IE5B
TiA6IFtjbGFzc0FWVmFsdWVUaW1pbmcgY3VycmVudFRpbWVTdGFtcF07CisgICAgQVZWYWx1ZVRp
bWluZyAqdGltaW5nID0gW2NsYXNzQVZWYWx1ZVRpbWluZyB2YWx1ZVRpbWluZ1dpdGhBbmNob3JW
YWx1ZTpjdXJyZW50VGltZQorICAgICAgYW5jaG9yVGltZVN0YW1wOmFuY2hvclRpbWVTdGFtcCBy
YXRlOjBdOworICAgIFtzZWxmIHNldFRpbWluZzp0aW1pbmddOworfQorCistIChkb3VibGUpZWZm
ZWN0aXZlUmF0ZQoreworICAgIHJldHVybiBfbWVkaWFFbGVtZW50LT5pc1BsYXlpbmcoKSA/IF9t
ZWRpYUVsZW1lbnQtPnBsYXliYWNrUmF0ZSgpIDogMC47Cit9CisKKy0gKHZvaWQpdXBkYXRlRHVy
YXRpb24KK3sKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzAxNyB1c2UgY29ycmVjdCB2YWx1ZXMgaW5zdGVhZCBvZiBkdXJhdGlvbiBmb3Ig
YWxsIHRoZXNlCisgICAgTlNUaW1lSW50ZXJ2YWwgZHVyYXRpb24gPSBfbWVkaWFFbGVtZW50LT5k
dXJhdGlvbigpOworICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gZHVyYXRpb247CisgICAgc2Vs
Zi5tYXhUaW1lID0gZHVyYXRpb247CisgICAgc2VsZi5jb250ZW50RHVyYXRpb25XaXRoaW5FbmRU
aW1lcyA9IGR1cmF0aW9uOworICAgIHNlbGYubG9hZGVkVGltZVJhbmdlcyA9IEBbQDAsIEAoZHVy
YXRpb24pXTsKK30KKworLSAodm9pZClzZXRNZWRpYUVsZW1lbnQ6KFBhc3NSZWZQdHI8SFRNTE1l
ZGlhRWxlbWVudD4pbWVkaWFFbGVtZW50Cit7CisgICAgaWYgKF9tZWRpYUVsZW1lbnQgPT0gbWVk
aWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKF9tZWRpYUVsZW1lbnQg
JiYgX2xpc3RlbmVyKQorICAgIHsKKyAgICAgICAgX21lZGlhRWxlbWVudC0+cmVtb3ZlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuZHVyYXRpb25jaGFuZ2VFdmVudCwgX2xpc3RlbmVyLmdldCgp
LCBmYWxzZSk7CisgICAgICAgIF9tZWRpYUVsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLnBhdXNlRXZlbnQsIF9saXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAgICAgICBf
bWVkaWFFbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQs
IF9saXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAgICAgICBfbWVkaWFFbGVtZW50LT5yZW1vdmVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQsIF9saXN0ZW5lci5nZXQo
KSwgZmFsc2UpOworICAgICAgICBfbWVkaWFFbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQsIF9saXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAg
IH0KKyAgICAKKyAgICBpZiAoX21lZGlhRWxlbWVudCkKKyAgICB7CisgICAgICAgIFtzZWxmLnBs
YXllckxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICAgICAgX21lZGlhRWxlbWVudC0+
cmV0dXJuUGxhdGZvcm1MYXllcihzZWxmLnBsYXllckxheWVyKTsKKyAgICAgICAgc2VsZi5wbGF5
ZXJMYXllciA9IG5pbDsKKyAgICB9CisgICAgCisgICAgX21lZGlhRWxlbWVudCA9IG1lZGlhRWxl
bWVudDsKKyAgICBfbGlzdGVuZXIgPSBudWxscHRyOworICAgIAorICAgIGlmICghX21lZGlhRWxl
bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2xpc3RlbmVyID0gT2JqQ0V2ZW50TGlzdGVu
ZXI6OndyYXAoc2VsZik7CisKKyAgICBfbWVkaWFFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50LCBfbGlzdGVuZXIsIGZhbHNlKTsKKyAgICBf
bWVkaWFFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50LCBf
bGlzdGVuZXIsIGZhbHNlKTsKKyAgICBfbWVkaWFFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5wbGF5RXZlbnQsIF9saXN0ZW5lciwgZmFsc2UpOworICAgIF9tZWRpYUVsZW1l
bnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCwgX2xpc3Rl
bmVyLCBmYWxzZSk7CisgICAgX21lZGlhRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkudGltZXVwZGF0ZUV2ZW50LCBfbGlzdGVuZXIsIGZhbHNlKTsKKworICAgIFtzZWxmIHVw
ZGF0ZUR1cmF0aW9uXTsKKyAgICBzZWxmLmNhblBsYXkgPSBZRVM7CisgICAgc2VsZi5jYW5QYXVz
ZSA9IFlFUzsKKyAgICBzZWxmLmNhblRvZ2dsZVBsYXliYWNrID0gWUVTOworICAgIHNlbGYuaGFz
RW5hYmxlZEF1ZGlvID0gWUVTOworICAgIHNlbGYuY2FuU2VlayA9IFlFUzsKKyAgICBzZWxmLm1p
blRpbWUgPSAwOworICAgIHNlbGYucmF0ZSA9IFtzZWxmIGVmZmVjdGl2ZVJhdGVdOworICAgIHNl
bGYuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzUmVhZHlUb1BsYXk7CisKKyAgICBz
ZWxmLnBsYXllckxheWVyID0gKENBTGF5ZXI8QVZQbGF5ZXJMYXllcj4gKilfbWVkaWFFbGVtZW50
LT5ib3Jyb3dQbGF0Zm9ybUxheWVyKCk7CisgICAgQVNTRVJUKFtzZWxmLnBsYXllckxheWVyIGlz
S2luZE9mQ2xhc3M6Y2xhc3NBVlBsYXllckxheWVyXSk7CisgICAgW3NlbGYucGxheWVyTGF5ZXIg
cmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworCisgICAgW3NlbGYgdXBkYXRlVGltaW5nV2l0aEN1cnJl
bnRUaW1lOl9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCldOworCisgICAgaWYgKGlzSFRNTFZp
ZGVvRWxlbWVudChfbWVkaWFFbGVtZW50LmdldCgpKSkgeworICAgICAgICBIVE1MVmlkZW9FbGVt
ZW50ICp2aWRlb0VsZW1lbnQgPSB0b0hUTUxWaWRlb0VsZW1lbnQoX21lZGlhRWxlbWVudC5nZXQo
KSk7CisgICAgICAgIHNlbGYuaGFzRW5hYmxlZFZpZGVvID0gWUVTOworICAgICAgICBzZWxmLmNv
bnRlbnREaW1lbnNpb25zID0gQ0dTaXplTWFrZSh2aWRlb0VsZW1lbnQtPnZpZGVvV2lkdGgoKSwg
dmlkZW9FbGVtZW50LT52aWRlb0hlaWdodCgpKTsKKyAgICB9Cit9CisKKy0gKHZvaWQpaGFuZGxl
RXZlbnQ6KERPTUV2ZW50ICopZXZudAoreworICAgIEV2ZW50KiBldmVudCA9IGNvcmUoZXZudCk7
CisgICAgCisgICAgaWYgKCFfbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBM
T0coTWVkaWEsICJoYW5kbGVFdmVudCAlcyIsIGV2ZW50LT50eXBlKCkuY2hhcmFjdGVyczgoKSk7
CisKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZHVyYXRpb25jaGFuZ2VF
dmVudCkKKyAgICAgICAgW3NlbGYgdXBkYXRlRHVyYXRpb25dOworICAgIGVsc2UgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnBhdXNlRXZlbnQKKyAgICAgICAgfHwgZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkucGxheUV2ZW50CisgICAgICAgIHx8IGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCkKKyAgICAgICAgc2VsZi5yYXRlID0gW3Nl
bGYgZWZmZWN0aXZlUmF0ZV07CisgICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkudGltZXVwZGF0ZUV2ZW50KQorICAgICAgICBbc2VsZiB1cGRhdGVUaW1pbmdXaXRoQ3Vy
cmVudFRpbWU6X21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKV07Cit9CisKK0BlbmQKKworQGlu
dGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyICgpIDxVSVZpZXdDb250cm9sbGVy
VHJhbnNpdGlvbmluZ0RlbGVnYXRlPgorQHByb3BlcnR5KHJldGFpbikgVUlXaW5kb3cgKndpbmRv
dzsKK0Bwcm9wZXJ0eShyZXRhaW4pIFVJVmlld0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyOwor
QHByb3BlcnR5KHJldGFpbikgQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAqcGxheWVyVmlld0NvbnRy
b2xsZXI7CitAcHJvcGVydHkocmV0YWluKSBXZWJBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNv
bnRyb2xsZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyCit7CisgICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IF9tZWRpYUVsZW1lbnQ7Cit9
CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBpbml0VUlTY3JlZW4oKTsKKyAgICBpbml0
VUlWaWV3KCk7CisgICAgaW5pdFVJQ29sb3IoKTsKKyAgICBpbml0VUlXaW5kb3coKTsKKyAgICBp
bml0QVZQbGF5ZXJDb250cm9sbGVyKCk7CisgICAgaW5pdEFWUGxheWVyVmlld0NvbnRyb2xsZXIo
KTsKKyAgICBpbml0QVZWYWx1ZVRpbWluZygpOworICAgIGluaXRVSVZpZXdDb250cm9sbGVyKCk7
CisgICAgaW5pdEFWUGxheWVyTGF5ZXIoKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9p
ZClkZWFsbG9jCit7CisgICAgc2VsZi53aW5kb3cgPSBuaWw7CisgICAgc2VsZi52aWV3Q29udHJv
bGxlciA9IG5pbDsKKyAgICBzZWxmLnBsYXllclZpZXdDb250cm9sbGVyID0gbmlsOworICAgIHNl
bGYucGxheWVyQ29udHJvbGxlciA9IG5pbDsKKyAgICBfbWVkaWFFbGVtZW50ID0gbnVsbHB0cjsK
KyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpc2V0TWVkaWFFbGVtZW50OihIVE1M
TWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQKK3sKKyAgICBfbWVkaWFFbGVtZW50ID0gbWVkaWFF
bGVtZW50OworfQorCistIChIVE1MTWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQKK3sKKyAgICBy
ZXR1cm4gX21lZGlhRWxlbWVudC5nZXQoKTsKK30KKworLSAodm9pZCllbnRlckZ1bGxzY3JlZW46
KFVJU2NyZWVuICopc2NyZWVuCit7CisgICAgaWYgKCFzY3JlZW4pCisgICAgICAgIHNjcmVlbiA9
IFtjbGFzc1VJU2NyZWVuIG1haW5TY3JlZW5dOworCisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVy
ID0gW1tbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cisg
ICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyLm1lZGlhRWxlbWVudCA9IF9tZWRpYUVsZW1lbnQ7CisK
KyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAg
ICBzZWxmLnBsYXllclZpZXdDb250cm9sbGVyID0gW1tbY2xhc3NBVlBsYXllclZpZXdDb250cm9s
bGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHNlbGYucGxheWVyVmlld0Nv
bnRyb2xsZXIucGxheWVyQ29udHJvbGxlciA9IChBVlBsYXllckNvbnRyb2xsZXIgKilzZWxmLnBs
YXllckNvbnRyb2xsZXI7CisgICAgICAgIAorICAgICAgICBpZiAoW3NlbGYucGxheWVyVmlld0Nv
bnRyb2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXREZWxlZ2F0ZTopXSkKKyAg
ICAgICAgICAgIHNlbGYucGxheWVyVmlld0NvbnRyb2xsZXIuZGVsZWdhdGUgPSBzZWxmLnBsYXll
ckNvbnRyb2xsZXI7CisgICAgICAgCisgICAgICAgIHNlbGYudmlld0NvbnRyb2xsZXIgPSBbW1tj
bGFzc1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAg
CisgICAgICAgIHNlbGYud2luZG93ID0gW1tbY2xhc3NVSVdpbmRvdyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpbc2NyZWVuIGJvdW5kc11dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgc2VsZi53aW5kb3cu
YmFja2dyb3VuZENvbG9yID0gW2NsYXNzVUlDb2xvciBjbGVhckNvbG9yXTsKKyAgICAgICAgc2Vs
Zi53aW5kb3cucm9vdFZpZXdDb250cm9sbGVyID0gKFVJVmlld0NvbnRyb2xsZXIgKilzZWxmLnZp
ZXdDb250cm9sbGVyOworICAgICAgICBbc2VsZi53aW5kb3cgbWFrZUtleUFuZFZpc2libGVdOwor
ICAgICAgICAKKyAgICAgICAgW3NlbGYudmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9s
bGVyOnNlbGYucGxheWVyVmlld0NvbnRyb2xsZXIgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmls
XTsKKyAgICB9KTsKK30KKworLSAodm9pZClleGl0RnVsbHNjcmVlbgoreworICAgIHNlbGYucGxh
eWVyQ29udHJvbGxlci5tZWRpYUVsZW1lbnQgPSBudWxscHRyOworCisgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgW3NlbGYudmlld0NvbnRy
b2xsZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246XnsKKyAg
ICAgICAgICAgIHNlbGYud2luZG93LmhpZGRlbiA9IFlFUzsKKyAgICAgICAgICAgIHNlbGYud2lu
ZG93LnJvb3RWaWV3Q29udHJvbGxlciA9IG5pbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
c2VsZi5wbGF5ZXJWaWV3Q29udHJvbGxlciA9IG5pbDsKKyAgICAgICAgICAgIHNlbGYudmlld0Nv
bnRyb2xsZXIgPSBuaWw7CisgICAgICAgICAgICBzZWxmLndpbmRvdyA9IG5pbDsKKyAgICAgICAg
ICAgIFdlYlRocmVhZFJ1biheeworICAgICAgICAgICAgICAgIF9tZWRpYUVsZW1lbnQgPSBudWxs
cHRyOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgfV07CisgICAgfSk7
Cit9CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGI4MzkyODZiNjg2MDBkYjg5YTlhYjY4MWUz
NTYwNDlkMmJiZDgwMmIuLjJlYzgyNjE5MTM5YjY0NDhhYjllZWIzYjdlOTgzODAwNjEyODM3OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCi0jaWYg
RU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShWSURFTykKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBXZWJDb3JlOjpOb2Rl
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoV2Vi
Q29yZTo6Tm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZv
ck5vZGUoV2ViQ29yZTo6Tm9kZSopIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGJlZTg3NmExZWM3MDgx
ZTY1ZWFjYzcxOGVjNzcwMWRlMTQzYWE3M2EuLjJjOWViZjY4MmY3MWE5YzBkZDNiMDdmN2NlNzgw
YmQxODRiOTQ2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTk2NywxMCArOTY3LDE0IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpCiAKICNlbmRpZgogCi0jaWYg
RU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShWSURFTykKIAogYm9v
bCBXZWJDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgTm9kZSog
bm9kZSkKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKCFTZXR0aW5nczo6YXZLaXRFbmFi
bGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgIHJldHVybiBpc0hUTUxW
aWRlb0VsZW1lbnQobm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCmluZGV4IGM0ZGYyMjdjZjI0ZTk1ZWJhOGRh
Mjc1ODk3NWUwZDY4YmJkOTZkMDUuLjg4YTQ0ZmRkZTJmYTE2MzQzZDMwOWY4ZTUwMDY5Y2FkZWE0
NjA5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZUtleXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlS2V5c1ByaXZhdGUuaApAQCAtMTMzLDYgKzEzMyw3IEBACiAjaWYgVEFSR0VUX09TX0lQSE9O
RQogI2RlZmluZSBXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheVByZWZlcmVuY2VLZXkg
QCJXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheSIKICNkZWZpbmUgV2ViS2l0QXVkaW9T
ZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZSBAIldlYktpdEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJp
ZGUiCisjZGVmaW5lIFdlYktpdEFWS2l0RW5hYmxlZCBAIldlYktpdEFWS2l0RW5hYmxlZCIKICNl
bmRpZgogI2RlZmluZSBXZWJLaXRSZWdpb25CYXNlZENvbHVtbnNFbmFibGVkS2V5IEAiV2ViS2l0
UmVnaW9uQmFzZWRDb2x1bW5zRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0U2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb25LZXkgQCJXZWJLaXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGM2MDFi
ZmUxOWFlMjllNjI2MWM2OTgzNTY2NTYyNzBiZmQ2YWRiOWIuLmViNDA3OGExYjY4ZWU3ZjMxMGY0
ZGQxNzlkNWQzNDgzMWMxNjUyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlcy5tbQpAQCAtNTI3LDYgKzUyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5l
UHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBX
ZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheVByZWZlcmVuY2VLZXksCiAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6QXVkaW9TZXNzaW9uOjpOb25lXSwgIFdlYktp
dEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGUsCisgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoQm9vbDpOT10sICAgV2ViS2l0QVZLaXRFbmFibGVkLAogICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aExvbmdMb25nOldlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3Rh
KCldLCBXZWJLaXRBcHBsaWNhdGlvbkNhY2hlVG90YWxRdW90YSwKIAogICAgICAgICAvLyBQZXIt
T3JpZ2luIFF1b3RhIG9uIGlPUyBpcyAyNU1CLiBXaGVuIHRoZSBxdW90YSBpcyByZWFjaGVkIGZv
ciBhIHBhcnRpY3VsYXIgb3JpZ2luCkBAIC0yMjE0LDYgKzIyMTUsMTYgQEAgc3RhdGljIE5TU3Ry
aW5nICpjbGFzc0lCQ3JlYXRvcklEID0gbmlsOwogICAgIFtzZWxmIF9zZXRVbnNpZ25lZEludFZh
bHVlOm92ZXJyaWRlIGZvcktleTpXZWJLaXRBdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRlXTsK
IH0KIAorLSAoQk9PTClhdktpdEVuYWJsZWQKK3sKKyAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1
ZUZvcktleTpXZWJLaXRBVktpdEVuYWJsZWRdOworfQorCistICh2b2lkKXNldEFWS2l0RW5hYmxl
ZDooYm9vbClmbGFnCit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJL
aXRBVktpdEVuYWJsZWRdOworfQorCiAtIChCT09MKW5ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0Vu
YWJsZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXROZXR3b3Jr
RGF0YVVzYWdlVHJhY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleV07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRleCA1OGYzMmY3OWIw
MGNhZWRlODM3NjRiNzg5OTQ3ZjBlMmI3Nzc4Yjc4Li5jMTI5MTlmNzQzNjcwZDExZGEzOWQxNzU0
NTRmM2Y1NWY5ZDI2MzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTI1OSw2ICsyNTksOSBAQCBleHRlcm4gTlNTdHJpbmcg
KldlYlByZWZlcmVuY2VzQ2FjaGVNb2RlbENoYW5nZWRJbnRlcm5hbE5vdGlmaWNhdGlvbjsKIC0g
KHVuc2lnbmVkKWF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGU7CiAtICh2b2lkKXNldEF1ZGlv
U2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGU6KHVuc2lnbmVkKW92ZXJyaWRlOwogCistIChCT09MKWF2
S2l0RW5hYmxlZDsKKy0gKHZvaWQpc2V0QVZLaXRFbmFibGVkOihib29sKWZsYWc7CisKIC8vIFdB
Uk5JTkc6IHRoaXMgYWZmZWN0IG5ldHdvcmsgcGVyZm9ybWFuY2UuIFRoaXMgbXVzdCBub3QgYmUg
ZW5hYmxlZCBmb3IgcHJvZHVjdGlvbiB1c2UuCiAvLyBFbmFibGluZyB0aGlzIG1ha2VzIFdlYkNv
cmUgcmVwb3J0cyB0aGUgbmV0d29yayBkYXRhIHVzYWdlLgogLy8gVGhpcyBpcyBhIGdsb2JhbCBz
ZXR0aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGYwYTg1NjYwNWQ3
NzEwODdiY2E4OGViZWU2MzAxODM0NDhiZmYxOWUuLjQwYzQxOWY1ODc2MGRhYTRlY2U2NDNlNmRk
OTEzMzIxOWEwYjgzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTI0
MSw2ICsyNDEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkTWVzc2FnZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkV2ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJB
VktpdC5oPgogI2ltcG9ydCA8ZGlzcGF0Y2gvcHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0Zhc3RN
YWxsb2MuaD4KIApAQCAtMjQyNyw2ICsyNDI4LDcgQEAgc3RhdGljIGJvb2wgbmVlZHNTZWxmUmV0
YWluV2hpbGVMb2FkaW5nUXVpcmsoKQogICAgIHNldHRpbmdzLnNldEF1ZGlvU2Vzc2lvbkNhdGVn
b3J5T3ZlcnJpZGUoW3ByZWZlcmVuY2VzIGF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGVdKTsK
ICAgICBzZXR0aW5ncy5zZXROZXR3b3JrRGF0YVVzYWdlVHJhY2tpbmdFbmFibGVkKFtwcmVmZXJl
bmNlcyBuZXR3b3JrRGF0YVVzYWdlVHJhY2tpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0
TmV0d29ya0ludGVyZmFjZU5hbWUoW3ByZWZlcmVuY2VzIG5ldHdvcmtJbnRlcmZhY2VOYW1lXSk7
CisgICAgc2V0dGluZ3Muc2V0QVZLaXRFbmFibGVkKFtwcmVmZXJlbmNlcyBhdktpdEVuYWJsZWRd
KTsKICNlbmRpZgogICAgIHNldHRpbmdzLnNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0
dXJlKFtwcmVmZXJlbmNlcyBtZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZV0pOwogICAg
IHNldHRpbmdzLnNldE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUoW3ByZWZlcmVuY2VzIG1lZGlh
UGxheWJhY2tBbGxvd3NJbmxpbmVdKTsKQEAgLTg1MjIsNyArODUyNCw3IEBAIGJvb2wgTGF5ZXJG
bHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKIAogI2VuZGlmCiAKLSNpZiBFTkFCTEUoVklE
RU8pICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFZJREVPKQogLSAodm9pZClfZW50ZXJG
dWxsc2NyZWVuRm9yTm9kZTooV2ViQ29yZTo6Tm9kZSopbm9kZQogewogICAgIEFTU0VSVChpc0hU
TUxWaWRlb0VsZW1lbnQobm9kZSkpOwpAQCAtODU0NSw3ICs4NTQ3LDExIEBAIGJvb2wgTGF5ZXJG
bHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKICAgICBpZiAoIV9wcml2YXRlLT5mdWxsc2Ny
ZWVuQ29udHJvbGxlcikgewogICAgICAgICBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIg
PSBbW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdOwogICAgICAgICBb
X3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIHNldE1lZGlhRWxlbWVudDp2aWRlb0VsZW1l
bnRdOwotICAgICAgICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNj
cmVlbjpbW3NlbGYgd2luZG93XSBzY3JlZW5dXTsgICAgICAgIAorI2lmIFBMQVRGT1JNKElPUykK
KyAgICAgICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciBlbnRlckZ1bGxzY3JlZW46
bmlsXTsKKyNlbHNlCisgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50
ZXJGdWxsc2NyZWVuOltbc2VsZiB3aW5kb3ddIHNjcmVlbl1dOworI2VuZGlmCiAgICAgfQogICAg
IGVsc2UKICAgICAgICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciBzZXRNZWRpYUVs
ZW1lbnQ6dmlkZW9FbGVtZW50XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oCmluZGV4IDVmZGY1ZGYwZmJmYzRmNjczYmQ1NGI2NjY4ODZlOWIzNjYxYjU0NjIu
LjQxZDJkMTc3ZDEzZTUxODlkMDU5ZjVhMTNhMjA2MzQ4ZGVmOTQ3ZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMjM2LDcgKzIzNiw3IEBAIE9C
SkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogCiAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5n
ZWQ6KFdlYlByZWZlcmVuY2VzICopcHJlZmVyZW5jZXM7CiAKLSNpZiBFTkFCTEUoVklERU8pICYm
ICFQTEFURk9STShJT1MpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCisjaWYgRU5BQkxFKFZJREVP
KSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQogLSAodm9pZClfZW50ZXJGdWxsc2NyZWVuRm9yTm9k
ZTooV2ViQ29yZTo6Tm9kZSopbm9kZTsKIC0gKHZvaWQpX2V4aXRGdWxsc2NyZWVuOwogI2VuZGlm
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221437</attachid>
            <date>2014-01-16 20:46:38 -0800</date>
            <delta_ts>2014-01-17 16:02:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126818-20140116204636.patch</filename>
            <type>text/plain</type>
            <size>38438</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGUxZjNmYTMxN2EyNmE5
NWQ1YzA1MDk3YzRjYTliOGFiZjlmMDA2NS4uYWM4NDVmNmEwMWNlOTAzNjkzNTYxOTBmZWVhZjQ1
YjlhM2I4NGRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE0LTAxLTExICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVZLaXQgZnVsbHNj
cmVlbiB2aWRlbyBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjY4MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIG9ic2VydmFibGUgY2hhbmdlIGluIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgQWRkIGFi
aWxpdHkgZm9yIGZ1bGxzY3JlZW4gdG8gYm9ycm93IHRoZSBBVlBsYXllckxheWVyLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjptZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0
KToKKyAgICAgICAgQWRkIGEgZGlzYWJsZWQgc2V0dGluZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9y
dHNGdWxsc2NyZWVuKToKKyAgICAgICAgRW5hYmxlZCBmdWxsc2NyZWVuIGZvciBpT1MuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGluaXRd
KToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvcndhcmRpbmdUYXJnZXRGb3JTZWxlY3RvcjpdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNob3VsZERpc21pc3NGb3JEb25lXSk6
CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBwbGF5Ol0pOgorICAgICAgICAoLVtX
ZWJBVlBsYXllckNvbnRyb2xsZXIgcGF1c2U6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29u
dHJvbGxlciB0b2dnbGVQbGF5YmFjazpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9s
bGVyIGlzUGxheWluZ10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxh
eWluZzpdKToKKyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFs
dWVzQWZmZWN0aW5nUGxheWluZ10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIg
c2Vla1RvVGltZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHVwZGF0ZVRp
bWluZ1dpdGhDdXJyZW50VGltZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVy
IGVmZmVjdGl2ZVJhdGVdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNldE1l
ZGlhRWxlbWVudDpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGhhbmRsZUV2
ZW50Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToK
KyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAg
ICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0TWVkaWFFbGVtZW50Ol0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIG1lZGlhRWxlbWVudF0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjpd
KToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBleGl0RnVsbHNjcmVl
bl0pOgorICAgICAgICBBZGQgV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvciBIVE1MTWVkaWFFbGVt
ZW10IHRvIGludGVyZmFjZSB3aXRoIEFWUGxheWVyVmlld0NvbnRyb2xsZXIuCisKIDIwMTQtMDEt
MTYgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TihyMTYyMTQ1KTogbWVkaWEvdmlkZW8tY29udHJvbHMtdmlzaWJsZS1hdWRpby1vbmx5Lmh0bWwg
ZmFpbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxNWM5ZTI4ZTI0YTQ5ZGRiMjNjNzRkYWM2ZWQ0OWIz
NmU1Y2QxYWMxLi5iZjQ3NTg0NDhiMzllMzU3YTlmNjViYzkxYTNhZmMwNzFlZWY5NTBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTQtMDEtMTEgIEplcmVteSBKb25lcyAg
PGplcmVteWpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBVktpdCBmdWxsc2NyZWVuIHZpZGVv
IGludGVyZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNjgxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojpz
dXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKToKKyAgICAgICAgRW5hYmxlICpGdWxsc2NyZWVuRm9y
Tm9kZSBmb3IgSFRNTE1lZGlhRWxlbWVudCBmb3IgaU9TCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5j
ZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKToKKyAgICAgICAg
KC1bV2ViUHJlZmVyZW5jZXMgbWVkaWFQbGF5YmFja0Z1bGxzY3JlZW5BVktpdF0pOgorICAgICAg
ICAoLVtXZWJQcmVmZXJlbmNlcyBzZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0Ol0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6
XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2VudGVyRnVsbHNjcmVlbkZvck5vZGU6V2ViQ29yZTo6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgQWRkIGEg
ZGlzYWJsZWQgcHJlZiBtZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0LgorICAgICAgICBVc2Ug
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0IG9uIGlPUworCiAyMDE0LTAxLTE2ICBE
YW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBNb2JpbGVT
YWZhcmkgYnVpbGQgZml4LiBEZWNsYXJlIGlPUy1zcGVjaWZpYyBtZXRob2QgbWFpbkZyYW1lSWNv
blVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBjMzhmOTE4MDAzZGEyZmQ0MWVlZDMwOWNjOTg2
NDJlZTBjNWFkZjRkLi45NzY2ZTQ4YjdmZTYzNmI5MjUwODVhMjQ5ZGQyOWJmMzUzMDI3YjRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjQ2Miw2ICsyNDYyLDcgQEAgX19aTjdXZWJDb3JlOERv
Y3VtZW50MTlkaXNwYXRjaFdpbmRvd0V2ZW50RU4zV1RGMTBQYXNzUmVmUHRySU5TXzVFdmVudEVF
RU5TMl9JTlMKIF9fWk43V2ViQ29yZThJbnRQb2ludEMxRVJLN0NHUG9pbnQKIF9fWk43V2ViQ29y
ZThQb3NpdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFTlMwXzE5TGVnYWN5RWRp
dGluZ09mZnNldEUKIF9fWk43V2ViQ29yZThTVkdOYW1lczRpbml0RXYKK19fWk43V2ViQ29yZThT
ZXR0aW5nczEzZ0FWS2l0RW5hYmxlZEUKIF9fWk43V2ViQ29yZThTZXR0aW5nczEzc2V0U3RhbmRh
bG9uZUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyM3NldE5ldHdvcmtJbnRlcmZhY2VOYW1lRVJL
TjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMzFzZXRBdWRpb1Nlc3Npb25DYXRl
Z29yeU92ZXJyaWRlRWoKQEAgLTMwNTEsNyArMzA1Miw3IEBAIF9fWk43V2ViQ29yZTR0b0pTRVBO
M0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwVGltZVJhbmdlc0UK
IF9fWk5LN1dlYkNvcmUxMFRpbWVSYW5nZXM3bmVhcmVzdEVkCiAjZW5kaWYKIAotI2lmIEVOQUJM
RShWSURFTykgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoVklERU8pCiBfX1pOSzdXZWJD
b3JlMTZIVE1MTWVkaWFFbGVtZW50NWVuZGVkRXYKIF9fWk5LN1dlYkNvcmUxNkhUTUxNZWRpYUVs
ZW1lbnQ2cGF1c2VkRXYKIC5vYmpjX2NsYXNzX25hbWVfV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDI0ZTE5Y2M1N2NmMWE4ZGM0MjM0NWViNWVkNWNjODRlMTU2ZWI5NzAuLjk1YjAz
NTI2M2JkOThmNDAzNTJjYjU2MjQxNzBlY2M1NGE0NmUwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyOTksNiArMTI5OSw4
IEBACiAJCTNGMkIzM0VEMTY1QUYxNTYwMEUzOTg3QyAvKiBET01XZWJLaXRDU1NWaWV3cG9ydFJ1
bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gM0YyQjMzRTgxNjVBRjE1NTAwRTM5ODdDIC8qIERPTVdlYktpdENTU1ZpZXdwb3J0UnVsZUlu
dGVybmFsLmggKi87IH07CiAJCTNGMkIzM0VFMTY1QUYxNTYwMEUzOTg3QyAvKiBKU1dlYktpdENT
U1ZpZXdwb3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzRjJCMzNFOTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9ydFJ1
bGUuY3BwICovOyB9OwogCQkzRjJCMzNFRjE2NUFGMTU2MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NW
aWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDNGMkIzM0VBMTY1QUYxNTUwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5o
ICovOyB9OworCQkzRjQyQjMxRDE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzRjQyQjMxQjE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDNGNDJCMzFDMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0gKi87IH07CiAJCTNGRkZGOUE4MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJL
aXRDU1NWaWV3cG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gM0ZGRkY5QTYxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0
UnVsZS5jcHAgKi87IH07CiAJCTNGRkZGOUE5MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NW
aWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDNGRkZGOUE3MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCAq
LzsgfTsKIAkJM0ZGRkY5QUQxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5bGVSZXNvbHZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRkZG
RjlBQjE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcCAqLzsgfTsK
QEAgLTgxODksNiArODE5MSw4IEBACiAJCTNGMkIzM0U4MTY1QUYxNTUwMEUzOTg3QyAvKiBET01X
ZWJLaXRDU1NWaWV3cG9ydFJ1bGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzRjJCMzNFOTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NW
aWV3cG9ydFJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNX
ZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
RjJCMzNFQTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0Y0MkIzMUIxODgxMTkxQjAwMjc4QUFDIC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaDsgcGF0aCA9
IGlvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJM0Y0MkIzMUMxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbTsgcGF0aCA9IGlvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTNGRkZGOUE2MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTVmll
d3BvcnRSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0ZGRkY5QTcxNTlE
OUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJM0ZGRkY5QUIxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5bGVS
ZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3cG9y
dFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgwOTYs
NiArMTgxMDAsOCBAQAogCQkJCUZFMEQ4NEVBMTA0ODQzNkUwMDFBMTc5RSAvKiBXZWJFdmVudC5t
bSAqLywKIAkJCQlBNTAyQzVERDEzMDQ5QjM1MDBGQzdENTMgLyogV2ViU2FmZUdDQWN0aXZpdHlD
YWxsYmFja0lPUy5oICovLAogCQkJCUMyQzRDQjFEMTYxQTEzMTIwMEQyMTREQSAvKiBXZWJTYWZl
SW5jcmVtZW50YWxTd2VlcGVySU9TLmggKi8sCisJCQkJM0Y0MkIzMUIxODgxMTkxQjAwMjc4QUFD
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovLAorCQkJCTNGNDJCMzFD
MTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0g
Ki8sCiAJCQkJRTQ1MzkwM0MwRUFGRDYzNzAwMzY5NUM4IC8qIFdpZGdldElPUy5tbSAqLywKIAkJ
CSk7CiAJCQluYW1lID0gaW9zOwpAQCAtMjUwNjcsNiArMjUwNzMsNyBAQAogCQkJCUE5QzZFNEY0
MEQ3NDVFNDgwMDY0NDJFOSAvKiBQbHVnaW5EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzIw
NUFCQzEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBREExNDExMEUxQUU1RDkwMDAyM0VFNSAvKiBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkzRjQyQjMxRDE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUUyMTgz
QTE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291cmNlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFBODc5OTAxMUNCRTg0NjAwM0M2NjRGIC8qIFBsdWdpblN0cmF0ZWd5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwQUZEQUMzRDEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2luVmlld0Jhc2UuaCBp
biBIZWFkZXJzICovLApAQCAtMjkwNTUsNiArMjkwNjIsNyBAQAogCQkJCUIyMjI3QTkwMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MjIyN0E5MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUI1NDNCODU3MTdFQjc1OEYwMDNCRTkzQSAvKiBTVkdQcm9wZXJ0eUluZm8u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3
QTk2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3QTk5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBOUQwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1JlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMjU3ZGFhMThjNTg3ODIwZGMxZGViNmZkMGJmMjAx
OGJiZjcwMWYxMy4uYTg5MGIzOTJkMDM5NzYwODk0NmZhZjI1N2Y1MjE1MWE4YTMyNGFkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00ODQ1LDExICs0ODQ1
LDEyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBpZiAo
aGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBtZWRpYUNvbnRyb2xzKCktPmVudGVyZWRGdWxs
c2NyZWVuKCk7CiAgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpKSB7Ci0jaWYgIVBMQVRGT1JNKElP
UykKLSAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyRnVs
bHNjcmVlbkZvck5vZGUodGhpcyk7Ci0gICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LndlYmtpdGJlZ2luZnVsbHNjcmVlbkV2ZW50KTsKLSNlbHNlCi0gICAgICAgIGlmIChtX3BsYXll
cikKKyAgICAgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5zdXBw
b3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKHRoaXMpKSB7CisgICAgICAgICAgICBkb2N1bWVudCgpLnBh
Z2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAg
ICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGJlZ2luZnVsbHNjcmVl
bkV2ZW50KTsKKyAgICAgICAgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgZWxzZSBpZiAo
bV9wbGF5ZXIpCiAgICAgICAgICAgICBtX3BsYXllci0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAjZW5k
aWYKICAgICB9CkBAIC00ODczLDExICs0ODc0LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
ZXhpdEZ1bGxzY3JlZW4oKQogICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKSkgewogICAgICAgICBp
ZiAoZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVv
UGxheWJhY2soKSkKICAgICAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKLSNpZiAhUExBVEZPUk0o
SU9TKQotICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZXhpdEZ1
bGxzY3JlZW5Gb3JOb2RlKHRoaXMpOwotICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMo
KS53ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQpOwotI2Vsc2UKLSAgICAgICAgaWYgKG1fcGxheWVy
KQorCisgICAgICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuc3Vw
cG9ydHNGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKSkgeworICAgICAgICAgICAgZG9jdW1lbnQoKS5w
YWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAg
ICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5F
dmVudCk7CisgICAgICAgIH0KKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGVsc2UgaWYgKG1f
cGxheWVyKQogICAgICAgICAgICAgbV9wbGF5ZXItPmV4aXRGdWxsc2NyZWVuKCk7CiAjZW5kaWYK
ICAgICB9CkBAIC00OTAzLDggKzQ5MDYsMzEgQEAgUGxhdGZvcm1NZWRpYSBIVE1MTWVkaWFFbGVt
ZW50OjpwbGF0Zm9ybU1lZGlhKCkgY29uc3QKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiBQbGF0Zm9ybUxheWVyKiBIVE1MTWVkaWFFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+cGxhdGZvcm1MYXllcigpIDog
MDsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKG1fcGxhdGZvcm1MYXllckJvcnJvd2VkKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorICAgIHJldHVybiBtX3BsYXllciA/IG1f
cGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOwogfQorCisjaWYgUExBVEZPUk0oSU9T
KQorUGxhdGZvcm1MYXllciogSFRNTE1lZGlhRWxlbWVudDo6Ym9ycm93UGxhdGZvcm1MYXllcigp
Cit7CisgICAgQVNTRVJUKCFtX3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCk7CisgICAgbV9wbGF0Zm9y
bUxheWVyQm9ycm93ZWQgPSB0cnVlOworICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICByZW5k
ZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxh
eWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnJldHVyblBsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcikKK3sK
KyAgICBBU1NFUlQobV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgJiYgcGxhdGZvcm1MYXllciA9PSAo
bV9wbGF5ZXIgPyBtX3BsYXllci0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cikpOworICAgIG1f
cGxhdGZvcm1MYXllckJvcnJvd2VkID0gZmFsc2U7CisgICAgaWYgKHJlbmRlcmVyKCkpCisgICAg
ICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisjZW5kaWYKICNlbmRpZgog
CiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMTc5YTEzNTM4ODk2Y2QyNDVjMjg0
ODhkNWMwNDE2OGE2NjYzNTYzOS4uMDE0ZTc4MjViNDRkYWQwYzE2ZGQ2YzM2NzI4MjhiMGIyMjRk
NjY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTEzMiw2ICsx
MzIsMTAgQEAgcHVibGljOgogICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0
OwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBQbGF0Zm9ybUxheWVyKiBw
bGF0Zm9ybUxheWVyKCkgY29uc3Q7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFBsYXRmb3JtTGF5
ZXIqIGJvcnJvd1BsYXRmb3JtTGF5ZXIoKTsKKyAgICB2b2lkIHJldHVyblBsYXRmb3JtTGF5ZXIo
UGxhdGZvcm1MYXllciopOworI2VuZGlmCiAjZW5kaWYKIAogICAgIGVudW0gRGVsYXllZEFjdGlv
blR5cGUgewpAQCAtNzc1LDYgKzc3OSw3IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShJT1Mp
CiAgICAgYm9vbCBtX3JlcXVlc3RpbmdQbGF5IDogMTsKKyAgICBib29sIG1fcGxhdGZvcm1MYXll
ckJvcnJvd2VkIDogMTsKICNlbmRpZgogCiAgICAgYm9vbCBtX3Jlc3VtZVBsYXliYWNrQWZ0ZXJJ
bnRlcnJ1cHRpb24gOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBlNzU2NjU1NWU1
ZDZmNmYwNTFhYjE0MWVlMWVhNmQzNzIyNjkyOGM2Li5iNTYxMTQ0YWQ1NGY5ZTAwZWI3NGYxNWIw
N2M1YTNiMzlmZGI3MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtOTgsNiArOTgs
NyBAQCBib29sIFNldHRpbmdzOjpnTG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQg
PSBmYWxzZTsKIAogI2lmIFBMQVRGT1JNKElPUykKIGJvb2wgU2V0dGluZ3M6OmdOZXR3b3JrRGF0
YVVzYWdlVHJhY2tpbmdFbmFibGVkID0gZmFsc2U7Citib29sIFNldHRpbmdzOjpnQVZLaXRFbmFi
bGVkID0gZmFsc2U7CiAjZW5kaWYKIAogLy8gTk9URXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRl
eCA5NjIwNWZkN2U0YWZiOTk5YjZhMGFmMTk0Y2JmM2E4ZDc3OWI2MDM5Li43ZGE5MWQyZDFjMzUy
MDE0ODZlNzQzMTQ5OGM0Yzg0YWFkNDFjMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0z
MDQsNiArMzA0LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgc2V0TmV0d29ya0ludGVy
ZmFjZU5hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgbmV0d29y
a0ludGVyZmFjZU5hbWUoKTsKKworICAgIHN0YXRpYyB2b2lkIHNldEFWS2l0RW5hYmxlZChib29s
IGZsYWcpIHsgZ0FWS2l0RW5hYmxlZCA9IGZsYWc7IH0KKyAgICBzdGF0aWMgYm9vbCBhdktpdEVu
YWJsZWQoKSB7IHJldHVybiBnQVZLaXRFbmFibGVkOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAg
LTQwMSw2ICs0MDQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdTaG91bGRSZXNwZWN0
UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnM7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHN0
YXRpYyBib29sIGdOZXR3b3JrRGF0YVVzYWdlVHJhY2tpbmdFbmFibGVkOworICAgIHN0YXRpYyBi
b29sIGdBVktpdEVuYWJsZWQ7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBkb3VibGUgZ0hpZGRlblBh
Z2VET01UaW1lckFsaWdubWVudEludGVydmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA2MjBmNDMxMDlhMWE5YjU3
ZDkzOTE5YzE0ZjI5ZjZkNTY5ODgzZWU0Li5jNDA3ZDBlNWYzYmM1NGY5MzgzYzZkOTViZWViMDE4
NTQwYzFmMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2luY2x1ZGUgIlRpbWVS
YW5nZXMuaCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CkBAIC00NzQsNiArNDc1
LDEwIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzdXBwb3J0c0Z1bGxz
Y3JlZW4oKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICAvLyBGSVhNRTogV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBhc3N1bWVzIGEgUVRLaXQvUXVpY2tUaW1lIG1lZGlh
IGVuZ2luZQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoU2V0dGluZ3M6OmF2S2l0RW5hYmxl
ZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MmFjYTlm
NmVlYWU3NzI3OWQ1MDc1NzA2NWIyZDVhNzRkYWRmMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0
LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0X2gKKyNk
ZWZpbmUgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0X2gKKworI2lmIFBMQVRGT1JN
KElPUykKKworI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgorCitAY2xhc3MgVUlTY3JlZW47CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Cit9CisKK0BpbnRlcmZh
Y2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciA6IE5TT2JqZWN0CisKKy0gKHZvaWQpc2V0
TWVkaWFFbGVtZW50OihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQ7Cist
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQ7CisKKy0gKHZvaWQpZW50
ZXJGdWxsc2NyZWVuOihVSVNjcmVlbiAqKXNjcmVlbjsKKy0gKHZvaWQpZXhpdEZ1bGxzY3JlZW47
CitAZW5kCisKKyNlbmRpZgorI2VuZGlmIC8vIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJB
VktpdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGJhZWE5
ZTYxNGQ3NTgxMGU1NzkzN2M1NzA2ZGE2M2U5YmNiNTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktp
dC5tbQpAQCAtMCwwICsxLDQyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisj
aW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaCIKKworI2ltcG9ydCAi
RE9NRXZlbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8Q29yZU1l
ZGlhL0NNVGltZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RE9NRXZlbnRMaXN0ZW5lci5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVudC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9FdmVudExpc3RlbmVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTFZp
ZGVvRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9PYmpDRXZlbnRMaXN0ZW5lci5oPgorI2lt
cG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhy
ZWFkUnVuLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckVsZW1lbnQuaD4KKyNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1NPRlRfTElOS19G
UkFNRVdPUksoQVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQ
bGF5ZXJMYXllcikKKworU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKK1NPRlRfTElOS19DTEFT
UyhBVktpdCwgQVZQbGF5ZXJDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBs
YXllclZpZXdDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVlVGltaW5n
KQorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQorU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBV
SVNjcmVlbikKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlXaW5kb3cpCitTT0ZUX0xJTktfQ0xB
U1MoVUlLaXQsIFVJVmlldykKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlWaWV3Q29udHJvbGxl
cikKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlDb2xvcikKKworU09GVF9MSU5LX0ZSQU1FV09S
SyhDb3JlTWVkaWEpCitTT0ZUX0xJTksoQ29yZU1lZGlhLCBDTVRpbWVNYWtlV2l0aFNlY29uZHMs
IENNVGltZSwgKEZsb2F0NjQgc2Vjb25kcywgaW50MzJfdCBwcmVmZXJyZWRUaW1lU2NhbGUpLCAo
c2Vjb25kcywgcHJlZmVycmVkVGltZVNjYWxlKSkKK1NPRlRfTElOSyhDb3JlTWVkaWEsIENNVGlt
ZUdldFNlY29uZHMsIEZsb2F0NjQsIChDTVRpbWUgdGltZSksICh0aW1lKSkKKworQGludGVyZmFj
ZSBBVlZhbHVlVGltaW5nIDogTlNPYmplY3QgPE5TQ29kaW5nLCBOU0NvcHlpbmcsIE5TTXV0YWJs
ZUNvcHlpbmc+CisrIChpZCl2YWx1ZVRpbWluZ1dpdGhBbmNob3JWYWx1ZTooZG91YmxlKWFuY2hv
clZhbHVlIGFuY2hvclRpbWVTdGFtcDooTlNUaW1lSW50ZXJ2YWwpIHRpbWVTdGFtcCByYXRlOihk
b3VibGUpcmF0ZTsKKysgKE5TVGltZUludGVydmFsKWN1cnJlbnRUaW1lU3RhbXA7CitAZW5kCisK
K0Bwcm90b2NvbCBBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUKK0BlbmQKKworQHByb3Rv
Y29sIEFWUGxheWVyTGF5ZXIKK0BlbmQKKworQGludGVyZmFjZSBBVlBsYXllckNvbnRyb2xsZXIg
OiBVSVJlc3BvbmRlcgorQGVuZAorCitAaW50ZXJmYWNlIEFWUGxheWVyVmlld0NvbnRyb2xsZXIg
OiBVSVZpZXdDb250cm9sbGVyCitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPEFWUGxh
eWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gZGVsZWdhdGU7CitAcHJvcGVydHkgKG5vbmF0b21p
Yywgc3Ryb25nKSBBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXI7CitAZW5kCisK
K3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFWUGxheWVyVmlld0NvbnRyb2xsZXJEaXNtaXNz
YWxSZWFzb24pIHsKKyAgICBBVlBsYXllclZpZXdDb250cm9sbGVyRGlzbWlzc2FsUmVhc29uRG9u
ZUJ1dHRvblRhcHBlZCwKKyAgICBBVlBsYXllclZpZXdDb250cm9sbGVyRGlzbWlzc2FsUmVhc29u
UmVtb3RlQ29udHJvbFN0b3BFdmVudFJlY2VpdmVkLAorICAgIEFWUGxheWVyVmlld0NvbnRyb2xs
ZXJEaXNtaXNzYWxSZWFzb25FcnJvcgorfSBOU19FTlVNX0FWQUlMQUJMRV9JT1MoOF8wKTsKKwor
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzKSB7Cisg
ICAgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzVW5rbm93biwKKyAgICBBVlBsYXllckNvbnRyb2xs
ZXJTdGF0dXNMb2FkaW5nLAorICAgIEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1JlYWR5VG9QbGF5
LAorICAgIEFWUGxheWVyQ29udHJvbGxlclN0YXR1c0ZhaWxlZAorfSBOU19FTlVNX0FWQUlMQUJM
RSgxMF8xMCwgOF8wKTsKKworQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIgOiBOU09i
amVjdCA8RE9NRXZlbnRMaXN0ZW5lciwgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPgor
CitAcHJvcGVydHkocmV0YWluKSBBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXJQ
cm94eTsKK0Bwcm9wZXJ0eShyZXRhaW4pIENBTGF5ZXI8QVZQbGF5ZXJMYXllcj4gKnBsYXllckxh
eWVyOworCitAcHJvcGVydHkgQk9PTCBjYW5QbGF5OworQHByb3BlcnR5KGdldHRlcj1pc1BsYXlp
bmcpIEJPT0wgcGxheWluZzsKK0Bwcm9wZXJ0eSBCT09MIGNhblBhdXNlOworQHByb3BlcnR5IEJP
T0wgY2FuVG9nZ2xlUGxheWJhY2s7CitAcHJvcGVydHkgZG91YmxlIHJhdGU7CitAcHJvcGVydHkg
Qk9PTCBjYW5TZWVrOworQHByb3BlcnR5IE5TVGltZUludGVydmFsIGNvbnRlbnREdXJhdGlvbjsK
K0Bwcm9wZXJ0eSBOU1NpemUgY29udGVudERpbWVuc2lvbnM7CitAcHJvcGVydHkgQk9PTCBoYXNF
bmFibGVkQXVkaW87CitAcHJvcGVydHkgQk9PTCBoYXNFbmFibGVkVmlkZW87CitAcHJvcGVydHkg
TlNUaW1lSW50ZXJ2YWwgbWluVGltZTsKK0Bwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBtYXhUaW1l
OworQHByb3BlcnR5IE5TVGltZUludGVydmFsIGNvbnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVz
OworQHByb3BlcnR5KHJldGFpbikgTlNBcnJheSAqbG9hZGVkVGltZVJhbmdlczsKK0Bwcm9wZXJ0
eSBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXMgc3RhdHVzOworQHByb3BlcnR5KHJldGFpbikgQVZW
YWx1ZVRpbWluZyAqdGltaW5nOworCistICh2b2lkKWhhbmRsZUV2ZW50OihET01FdmVudCAqKWV2
dDsKKworLSAoQk9PTClwbGF5ZXJWaWV3Q29udHJvbGxlcjooQVZQbGF5ZXJWaWV3Q29udHJvbGxl
ciAqKXBsYXllclZpZXdDb250cm9sbGVyIHNob3VsZERpc21pc3NXaXRoUmVhc29uOihBVlBsYXll
clZpZXdDb250cm9sbGVyRGlzbWlzc2FsUmVhc29uKXJlYXNvbjsKKworQGVuZAorCisKK0BpbXBs
ZW1lbnRhdGlvbiBXZWJBVlBsYXllckNvbnRyb2xsZXIKK3sKKyAgICBSZWZQdHI8SFRNTE1lZGlh
RWxlbWVudD4gX21lZGlhRWxlbWVudDsKKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gX2xpc3Rl
bmVyOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gc2VsZjsKKyAgICAKKyAgICBpbml0QVZQbGF5ZXJD
b250cm9sbGVyKCk7CisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyUHJveHkgPSBbW2NsYXNzQVZQ
bGF5ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAo
dm9pZClkZWFsbG9jCit7CisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyUHJveHkgPSBuaWw7Cisg
ICAgc2VsZi5wbGF5ZXJMYXllciA9IG5pbDsKKyAgICBzZWxmLmxvYWRlZFRpbWVSYW5nZXMgPSBu
aWw7CisgICAgc2VsZi50aW1pbmcgPSBuaWw7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCist
IChpZClmb3J3YXJkaW5nVGFyZ2V0Rm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvcgoreworICAgIFVO
VVNFRF9QQVJBTShzZWxlY3Rvcik7CisgICAgcmV0dXJuIHNlbGYucGxheWVyQ29udHJvbGxlclBy
b3h5OworfQorCistIChCT09MKXBsYXllclZpZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdDb250
cm9sbGVyICopcGxheWVyVmlld0NvbnRyb2xsZXIgc2hvdWxkRGlzbWlzc1dpdGhSZWFzb246KEFW
UGxheWVyVmlld0NvbnRyb2xsZXJEaXNtaXNzYWxSZWFzb24pcmVhc29uCit7CisgICAgVU5VU0VE
X1BBUkFNKHBsYXllclZpZXdDb250cm9sbGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsK
KworICAgIFdlYlRocmVhZFJ1biheeworICAgICAgICBfbWVkaWFFbGVtZW50LT5wYXVzZSgpOwor
ICAgICAgICBfbWVkaWFFbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOworICAgIH0pOworICAgIHJl
dHVybiBOTzsKK30KKworLSAodm9pZClwbGF5OihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFS
QU0oc2VuZGVyKTsKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgX21lZGlhRWxlbWVudC0+
cGxheSgpOworICAgIH0pOworfQorCistICh2b2lkKXBhdXNlOihpZClzZW5kZXIKK3sKKyAgICBV
TlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgX21lZGlh
RWxlbWVudC0+cGF1c2UoKTsKKyAgICB9KTsKK30KKworLSAodm9pZCl0b2dnbGVQbGF5YmFjazoo
aWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgV2ViVGhyZWFkUnVu
KF57CisgICAgICAgIF9tZWRpYUVsZW1lbnQtPnRvZ2dsZVBsYXlTdGF0ZSgpOworICAgIH0pOwor
fQorCistIChCT09MKWlzUGxheWluZworeworICAgIHJldHVybiBbc2VsZiByYXRlXSAhPSAwOwor
fQorCistICh2b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWluZworeworICAgIFdlYlRocmVhZFJ1
biheeworICAgICAgICBpZiAocGxheWluZykKKyAgICAgICAgICAgIF9tZWRpYUVsZW1lbnQtPnBs
YXkoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgX21lZGlhRWxlbWVudC0+cGF1c2UoKTsK
KyAgICB9KTsKK30KKworKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1BsYXlp
bmcKK3sKKyAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJyYXRlIl07Cit9CisKKy0g
KHZvaWQpc2Vla1RvVGltZTooTlNUaW1lSW50ZXJ2YWwpdGltZQoreworICAgIFdlYlRocmVhZFJ1
biheeworICAgICAgICBfbWVkaWFFbGVtZW50LT5zZXRDdXJyZW50VGltZSh0aW1lKTsKKyAgICB9
KTsKK30KKworLSAodm9pZCl1cGRhdGVUaW1pbmdXaXRoQ3VycmVudFRpbWU6KE5TVGltZUludGVy
dmFsKWN1cnJlbnRUaW1lCit7CisgICAgTlNUaW1lSW50ZXJ2YWwgYW5jaG9yVGltZVN0YW1wID0g
KCFbc2VsZiByYXRlXSkgPyBOQU4gOiBbY2xhc3NBVlZhbHVlVGltaW5nIGN1cnJlbnRUaW1lU3Rh
bXBdOworICAgIEFWVmFsdWVUaW1pbmcgKnRpbWluZyA9IFtjbGFzc0FWVmFsdWVUaW1pbmcgdmFs
dWVUaW1pbmdXaXRoQW5jaG9yVmFsdWU6Y3VycmVudFRpbWUKKyAgICAgIGFuY2hvclRpbWVTdGFt
cDphbmNob3JUaW1lU3RhbXAgcmF0ZTowXTsKKyAgICBbc2VsZiBzZXRUaW1pbmc6dGltaW5nXTsK
K30KKworLSAoZG91YmxlKWVmZmVjdGl2ZVJhdGUKK3sKKyAgICByZXR1cm4gX21lZGlhRWxlbWVu
dC0+aXNQbGF5aW5nKCkgPyBfbWVkaWFFbGVtZW50LT5wbGF5YmFja1JhdGUoKSA6IDAuOworfQor
CistICh2b2lkKXVwZGF0ZUR1cmF0aW9uCit7CisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcwMTcgdXNlIGNvcnJlY3QgdmFsdWVzIGluc3Rl
YWQgb2YgZHVyYXRpb24gZm9yIGFsbCB0aGVzZQorICAgIE5TVGltZUludGVydmFsIGR1cmF0aW9u
ID0gX21lZGlhRWxlbWVudC0+ZHVyYXRpb24oKTsKKyAgICBzZWxmLmNvbnRlbnREdXJhdGlvbiA9
IGR1cmF0aW9uOworICAgIHNlbGYubWF4VGltZSA9IGR1cmF0aW9uOworICAgIHNlbGYuY29udGVu
dER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSBkdXJhdGlvbjsKKyAgICBzZWxmLmxvYWRlZFRpbWVS
YW5nZXMgPSBAW0AwLCBAKGR1cmF0aW9uKV07Cit9CisKKy0gKHZvaWQpc2V0TWVkaWFFbGVtZW50
OihQYXNzUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+KW1lZGlhRWxlbWVudAoreworICAgIGlmIChf
bWVkaWFFbGVtZW50ID09IG1lZGlhRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IGlmIChfbWVkaWFFbGVtZW50ICYmIF9saXN0ZW5lcikKKyAgICB7CisgICAgICAgIF9tZWRpYUVs
ZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmR1cmF0aW9uY2hhbmdlRXZl
bnQsIF9saXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAgICAgICBfbWVkaWFFbGVtZW50LT5yZW1v
dmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50LCBfbGlzdGVuZXIuZ2V0KCks
IGZhbHNlKTsKKyAgICAgICAgX21lZGlhRWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkucGxheUV2ZW50LCBfbGlzdGVuZXIuZ2V0KCksIGZhbHNlKTsKKyAgICAgICAgX21l
ZGlhRWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2
ZW50LCBfbGlzdGVuZXIuZ2V0KCksIGZhbHNlKTsKKyAgICAgICAgX21lZGlhRWxlbWVudC0+cmVt
b3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50LCBfbGlzdGVuZXIu
Z2V0KCksIGZhbHNlKTsKKyAgICB9CisgICAgCisgICAgaWYgKF9tZWRpYUVsZW1lbnQpCisgICAg
eworICAgICAgICBbc2VsZi5wbGF5ZXJMYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAg
ICAgIF9tZWRpYUVsZW1lbnQtPnJldHVyblBsYXRmb3JtTGF5ZXIoc2VsZi5wbGF5ZXJMYXllcik7
CisgICAgICAgIHNlbGYucGxheWVyTGF5ZXIgPSBuaWw7CisgICAgfQorICAgIAorICAgIF9tZWRp
YUVsZW1lbnQgPSBtZWRpYUVsZW1lbnQ7CisgICAgX2xpc3RlbmVyID0gbnVsbHB0cjsKKyAgICAK
KyAgICBpZiAoIV9tZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIF9saXN0ZW5l
ciA9IE9iakNFdmVudExpc3RlbmVyOjp3cmFwKHNlbGYpOworCisgICAgX21lZGlhRWxlbWVudC0+
YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZHVyYXRpb25jaGFuZ2VFdmVudCwgX2xpc3Rl
bmVyLCBmYWxzZSk7CisgICAgX21lZGlhRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkucGF1c2VFdmVudCwgX2xpc3RlbmVyLCBmYWxzZSk7CisgICAgX21lZGlhRWxlbWVudC0+
YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucGxheUV2ZW50LCBfbGlzdGVuZXIsIGZhbHNl
KTsKKyAgICBfbWVkaWFFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yYXRl
Y2hhbmdlRXZlbnQsIF9saXN0ZW5lciwgZmFsc2UpOworICAgIF9tZWRpYUVsZW1lbnQtPmFkZEV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwgX2xpc3RlbmVyLCBmYWxz
ZSk7CisKKyAgICBbc2VsZiB1cGRhdGVEdXJhdGlvbl07CisgICAgc2VsZi5jYW5QbGF5ID0gWUVT
OworICAgIHNlbGYuY2FuUGF1c2UgPSBZRVM7CisgICAgc2VsZi5jYW5Ub2dnbGVQbGF5YmFjayA9
IFlFUzsKKyAgICBzZWxmLmhhc0VuYWJsZWRBdWRpbyA9IFlFUzsKKyAgICBzZWxmLmNhblNlZWsg
PSBZRVM7CisgICAgc2VsZi5taW5UaW1lID0gMDsKKyAgICBzZWxmLnJhdGUgPSBbc2VsZiBlZmZl
Y3RpdmVSYXRlXTsKKyAgICBzZWxmLnN0YXR1cyA9IEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1Jl
YWR5VG9QbGF5OworCisgICAgc2VsZi5wbGF5ZXJMYXllciA9IChDQUxheWVyPEFWUGxheWVyTGF5
ZXI+ICopX21lZGlhRWxlbWVudC0+Ym9ycm93UGxhdGZvcm1MYXllcigpOworICAgIEFTU0VSVChb
c2VsZi5wbGF5ZXJMYXllciBpc0tpbmRPZkNsYXNzOmNsYXNzQVZQbGF5ZXJMYXllcl0pOworICAg
IFtzZWxmLnBsYXllckxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKworICAgIFtzZWxmIHVw
ZGF0ZVRpbWluZ1dpdGhDdXJyZW50VGltZTpfbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpXTsK
KworICAgIGlmIChpc0hUTUxWaWRlb0VsZW1lbnQoX21lZGlhRWxlbWVudC5nZXQoKSkpIHsKKyAg
ICAgICAgSFRNTFZpZGVvRWxlbWVudCAqdmlkZW9FbGVtZW50ID0gdG9IVE1MVmlkZW9FbGVtZW50
KF9tZWRpYUVsZW1lbnQuZ2V0KCkpOworICAgICAgICBzZWxmLmhhc0VuYWJsZWRWaWRlbyA9IFlF
UzsKKyAgICAgICAgc2VsZi5jb250ZW50RGltZW5zaW9ucyA9IENHU2l6ZU1ha2UodmlkZW9FbGVt
ZW50LT52aWRlb1dpZHRoKCksIHZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7CisgICAgfQor
fQorCistICh2b2lkKWhhbmRsZUV2ZW50OihET01FdmVudCAqKWV2bnQKK3sKKyAgICBFdmVudCog
ZXZlbnQgPSBjb3JlKGV2bnQpOworICAgIAorICAgIGlmICghX21lZGlhRWxlbWVudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgTE9HKE1lZGlhLCAiaGFuZGxlRXZlbnQgJXMiLCBldmVudC0+dHlw
ZSgpLmNoYXJhY3RlcnM4KCkpOworCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmR1cmF0aW9uY2hhbmdlRXZlbnQpCisgICAgICAgIFtzZWxmIHVwZGF0ZUR1cmF0aW9uXTsK
KyAgICBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50Cisg
ICAgICAgIHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnBsYXlFdmVudAorICAgICAg
ICB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpCisgICAg
ICAgIHNlbGYucmF0ZSA9IFtzZWxmIGVmZmVjdGl2ZVJhdGVdOworICAgIGVsc2UgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCkKKyAgICAgICAgW3NlbGYg
dXBkYXRlVGltaW5nV2l0aEN1cnJlbnRUaW1lOl9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCld
OworfQorCitAZW5kCisKK0BpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciAo
KSA8VUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25pbmdEZWxlZ2F0ZT4KK0Bwcm9wZXJ0eShyZXRh
aW4pIFVJV2luZG93ICp3aW5kb3c7CitAcHJvcGVydHkocmV0YWluKSBVSVZpZXdDb250cm9sbGVy
ICp2aWV3Q29udHJvbGxlcjsKK0Bwcm9wZXJ0eShyZXRhaW4pIEFWUGxheWVyVmlld0NvbnRyb2xs
ZXIgKnBsYXllclZpZXdDb250cm9sbGVyOworQHByb3BlcnR5KHJldGFpbikgV2ViQVZQbGF5ZXJD
b250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlcgoreworICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50
PiBfbWVkaWFFbGVtZW50OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgaW5pdFVJ
U2NyZWVuKCk7CisgICAgaW5pdFVJVmlldygpOworICAgIGluaXRVSUNvbG9yKCk7CisgICAgaW5p
dFVJV2luZG93KCk7CisgICAgaW5pdEFWUGxheWVyQ29udHJvbGxlcigpOworICAgIGluaXRBVlBs
YXllclZpZXdDb250cm9sbGVyKCk7CisgICAgaW5pdEFWVmFsdWVUaW1pbmcoKTsKKyAgICBpbml0
VUlWaWV3Q29udHJvbGxlcigpOworICAgIGluaXRBVlBsYXllckxheWVyKCk7CisgICAgcmV0dXJu
IHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIHNlbGYud2luZG93ID0gbmlsOwor
ICAgIHNlbGYudmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgc2VsZi5wbGF5ZXJWaWV3Q29udHJv
bGxlciA9IG5pbDsKKyAgICBzZWxmLnBsYXllckNvbnRyb2xsZXIgPSBuaWw7CisgICAgX21lZGlh
RWxlbWVudCA9IG51bGxwdHI7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKXNl
dE1lZGlhRWxlbWVudDooSFRNTE1lZGlhRWxlbWVudCopbWVkaWFFbGVtZW50Cit7CisgICAgX21l
ZGlhRWxlbWVudCA9IG1lZGlhRWxlbWVudDsKK30KKworLSAoSFRNTE1lZGlhRWxlbWVudCopbWVk
aWFFbGVtZW50Cit7CisgICAgcmV0dXJuIF9tZWRpYUVsZW1lbnQuZ2V0KCk7Cit9CisKKy0gKHZv
aWQpZW50ZXJGdWxsc2NyZWVuOihVSVNjcmVlbiAqKXNjcmVlbgoreworICAgIGlmICghc2NyZWVu
KQorICAgICAgICBzY3JlZW4gPSBbY2xhc3NVSVNjcmVlbiBtYWluU2NyZWVuXTsKKworICAgIHNl
bGYucGxheWVyQ29udHJvbGxlciA9IFtbW1dlYkFWUGxheWVyQ29udHJvbGxlciBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOworICAgIHNlbGYucGxheWVyQ29udHJvbGxlci5tZWRpYUVsZW1lbnQg
PSBfbWVkaWFFbGVtZW50OworCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgXnsKKyAgICAgICAgc2VsZi5wbGF5ZXJWaWV3Q29udHJvbGxlciA9IFtbW2NsYXNz
QVZQbGF5ZXJWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAg
ICBzZWxmLnBsYXllclZpZXdDb250cm9sbGVyLnBsYXllckNvbnRyb2xsZXIgPSAoQVZQbGF5ZXJD
b250cm9sbGVyICopc2VsZi5wbGF5ZXJDb250cm9sbGVyOworICAgICAgICAKKyAgICAgICAgaWYg
KFtzZWxmLnBsYXllclZpZXdDb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
c2V0RGVsZWdhdGU6KV0pCisgICAgICAgICAgICBzZWxmLnBsYXllclZpZXdDb250cm9sbGVyLmRl
bGVnYXRlID0gc2VsZi5wbGF5ZXJDb250cm9sbGVyOworICAgICAgIAorICAgICAgICBzZWxmLnZp
ZXdDb250cm9sbGVyID0gW1tbY2xhc3NVSVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRv
cmVsZWFzZV07CisgICAgICAgIAorICAgICAgICBzZWxmLndpbmRvdyA9IFtbW2NsYXNzVUlXaW5k
b3cgYWxsb2NdIGluaXRXaXRoRnJhbWU6W3NjcmVlbiBib3VuZHNdXSBhdXRvcmVsZWFzZV07Cisg
ICAgICAgIHNlbGYud2luZG93LmJhY2tncm91bmRDb2xvciA9IFtjbGFzc1VJQ29sb3IgY2xlYXJD
b2xvcl07CisgICAgICAgIHNlbGYud2luZG93LnJvb3RWaWV3Q29udHJvbGxlciA9IChVSVZpZXdD
b250cm9sbGVyICopc2VsZi52aWV3Q29udHJvbGxlcjsKKyAgICAgICAgW3NlbGYud2luZG93IG1h
a2VLZXlBbmRWaXNpYmxlXTsKKyAgICAgICAgCisgICAgICAgIFtzZWxmLnZpZXdDb250cm9sbGVy
IHByZXNlbnRWaWV3Q29udHJvbGxlcjpzZWxmLnBsYXllclZpZXdDb250cm9sbGVyIGFuaW1hdGVk
OllFUyBjb21wbGV0aW9uOm5pbF07CisgICAgfSk7Cit9CisKKy0gKHZvaWQpZXhpdEZ1bGxzY3Jl
ZW4KK3sKKyAgICBzZWxmLnBsYXllckNvbnRyb2xsZXIubWVkaWFFbGVtZW50ID0gbnVsbHB0cjsK
KworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAg
ICAgIFtzZWxmLnZpZXdDb250cm9sbGVyIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOllF
UyBjb21wbGV0aW9uOl57CisgICAgICAgICAgICBzZWxmLndpbmRvdy5oaWRkZW4gPSBZRVM7Cisg
ICAgICAgICAgICBzZWxmLndpbmRvdy5yb290Vmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIHNlbGYucGxheWVyVmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAg
ICAgICAgICBzZWxmLnZpZXdDb250cm9sbGVyID0gbmlsOworICAgICAgICAgICAgc2VsZi53aW5k
b3cgPSBuaWw7CisgICAgICAgICAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgICAgICAgICBf
bWVkaWFFbGVtZW50ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgCisg
ICAgICAgIH1dOworICAgIH0pOworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA0NTFhNDRj
YTcyMGNmNzZhYTMzYTc5M2JkMTI2NjcwMjE3YTJmZmQ4Li5kNTA0ODkwZDdhNzhiZmRiODY4Y2Vm
OTNkYWI2YmI5Nzk2M2JhZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAg
ICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShWSURFTykgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBF
TkFCTEUoVklERU8pCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUo
Y29uc3QgV2ViQ29yZTo6Tm9kZSopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1
bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpp
bmRleCBiZWU4NzZhMWVjNzA4MWU2NWVhY2M3MThlYzc3MDFkZTE0M2FhNzNhLi4yYzllYmY2ODJm
NzFhOWMwZGQzYjA3ZjdjZTc4MGJkMTg0Yjk0NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC05NjcsMTAgKzk2Nywx
NCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2go
KQogCiAjZW5kaWYKIAotI2lmIEVOQUJMRShWSURFTykgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBF
TkFCTEUoVklERU8pCiAKIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW5G
b3JOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICgh
U2V0dGluZ3M6OmF2S2l0RW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
ICAgICByZXR1cm4gaXNIVE1MVmlkZW9FbGVtZW50KG5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAppbmRleCBj
NGRmMjI3Y2YyNGU5NWViYThkYTI3NTg5NzVlMGQ2OGJiZDk2ZDA1Li44OGE0NGZkZGUyZmExNjM0
M2QzMDlmOGU1MDA2OWNhZGVhNDYwOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKQEAgLTEzMyw2ICsxMzMsNyBAQAog
I2lmIFRBUkdFVF9PU19JUEhPTkUKICNkZWZpbmUgV2ViS2l0TWVkaWFQbGF5YmFja0FsbG93c0Fp
clBsYXlQcmVmZXJlbmNlS2V5IEAiV2ViS2l0TWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXkiCiAj
ZGVmaW5lIFdlYktpdEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGUgQCJXZWJLaXRBdWRpb1Nl
c3Npb25DYXRlZ29yeU92ZXJyaWRlIgorI2RlZmluZSBXZWJLaXRBVktpdEVuYWJsZWQgQCJXZWJL
aXRBVktpdEVuYWJsZWQiCiAjZW5kaWYKICNkZWZpbmUgV2ViS2l0UmVnaW9uQmFzZWRDb2x1bW5z
RW5hYmxlZEtleSBAIldlYktpdFJlZ2lvbkJhc2VkQ29sdW1uc0VuYWJsZWQiCiAjZGVmaW5lIFdl
YktpdFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uS2V5IEAiV2ViS2l0U2hvdWxkUmVzcGVj
dEltYWdlT3JpZW50YXRpb24iCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlcy5tbQppbmRleCA3ZTM2ZjBhYWJhNmEzNWNhY2FmYTFjODQ4M2E5M2RmOGEwZjNiNDc3Li5l
OGViNWQzOGIwZmM4NDI5MzJiYjdjZmI2Y2M4YmU2N2ZiYTk5YTQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTUzMSw2ICs1MzEsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0TWVkaWFQ
bGF5YmFja0FsbG93c0lubGluZVByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0TWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXlQcmVmZXJl
bmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OkF1ZGlvU2Vz
c2lvbjo6Tm9uZV0sICBXZWJLaXRBdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRlLAorICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdEFWS2l0RW5hYmxlZCwKICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhMb25nTG9uZzpXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6bm9RdW90YSgpXSwgV2ViS2l0QXBwbGljYXRpb25DYWNoZVRvdGFsUXVvdGEs
CiAKICAgICAgICAgLy8gUGVyLU9yaWdpbiBRdW90YSBvbiBpT1MgaXMgMjVNQi4gV2hlbiB0aGUg
cXVvdGEgaXMgcmVhY2hlZCBmb3IgYSBwYXJ0aWN1bGFyIG9yaWdpbgpAQCAtMjIxOCw2ICsyMjE5
LDE2IEBAIHN0YXRpYyBOU1N0cmluZyAqY2xhc3NJQkNyZWF0b3JJRCA9IG5pbDsKICAgICBbc2Vs
ZiBfc2V0VW5zaWduZWRJbnRWYWx1ZTpvdmVycmlkZSBmb3JLZXk6V2ViS2l0QXVkaW9TZXNzaW9u
Q2F0ZWdvcnlPdmVycmlkZV07CiB9CiAKKy0gKEJPT0wpYXZLaXRFbmFibGVkCit7CisgICAgcmV0
dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0QVZLaXRFbmFibGVkXTsKK30KKworLSAo
dm9pZClzZXRBVktpdEVuYWJsZWQ6KGJvb2wpZmxhZworeworICAgIFtzZWxmIF9zZXRCb29sVmFs
dWU6ZmxhZyBmb3JLZXk6V2ViS2l0QVZLaXRFbmFibGVkXTsKK30KKwogLSAoQk9PTCluZXR3b3Jr
RGF0YVVzYWdlVHJhY2tpbmdFbmFibGVkCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVG
b3JLZXk6V2ViS2l0TmV0d29ya0RhdGFVc2FnZVRyYWNraW5nRW5hYmxlZFByZWZlcmVuY2VLZXld
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRl
LmgKaW5kZXggNThmMzJmNzliMDBjYWVkZTgzNzY0Yjc4OTk0N2YwZTJiNzc3OGI3OC4uYzEyOTE5
Zjc0MzY3MGQxMWRhMzlkMTc1NDU0ZjNmNTVmOWQyNjMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0yNTksNiArMjU5LDkg
QEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQcmVmZXJlbmNlc0NhY2hlTW9kZWxDaGFuZ2VkSW50ZXJu
YWxOb3RpZmljYXRpb247CiAtICh1bnNpZ25lZClhdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRl
OwogLSAodm9pZClzZXRBdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRlOih1bnNpZ25lZClvdmVy
cmlkZTsKIAorLSAoQk9PTClhdktpdEVuYWJsZWQ7CistICh2b2lkKXNldEFWS2l0RW5hYmxlZDoo
Ym9vbClmbGFnOworCiAvLyBXQVJOSU5HOiB0aGlzIGFmZmVjdCBuZXR3b3JrIHBlcmZvcm1hbmNl
LiBUaGlzIG11c3Qgbm90IGJlIGVuYWJsZWQgZm9yIHByb2R1Y3Rpb24gdXNlLgogLy8gRW5hYmxp
bmcgdGhpcyBtYWtlcyBXZWJDb3JlIHJlcG9ydHMgdGhlIG5ldHdvcmsgZGF0YSB1c2FnZS4KIC8v
IFRoaXMgaXMgYSBnbG9iYWwgc2V0dGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQppbmRleCBhODVkMDUwZDM0MDBlZWY5ZmZiMTZkMDBiOTUzYjQ5NGFhZDBiYjNmLi5kNGZkYTZj
YzMxNTFjNDVkMTcxYjJkOGFiNzQwYThkZDRiOGYwOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCkBAIC0yNDEsNiArMjQxLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZVRocmVhZE1lc3NhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJFdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaD4KICNpbXBvcnQgPGRpc3BhdGNoL3ByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKQEAgLTIzNTMsNiArMjM1NCw3IEBAIHN0YXRp
YyBib29sIG5lZWRzU2VsZlJldGFpbldoaWxlTG9hZGluZ1F1aXJrKCkKICAgICBzZXR0aW5ncy5z
ZXRBdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRlKFtwcmVmZXJlbmNlcyBhdWRpb1Nlc3Npb25D
YXRlZ29yeU92ZXJyaWRlXSk7CiAgICAgc2V0dGluZ3Muc2V0TmV0d29ya0RhdGFVc2FnZVRyYWNr
aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgbmV0d29ya0RhdGFVc2FnZVRyYWNraW5nRW5hYmxlZF0p
OwogICAgIHNldHRpbmdzLnNldE5ldHdvcmtJbnRlcmZhY2VOYW1lKFtwcmVmZXJlbmNlcyBuZXR3
b3JrSW50ZXJmYWNlTmFtZV0pOworICAgIHNldHRpbmdzLnNldEFWS2l0RW5hYmxlZChbcHJlZmVy
ZW5jZXMgYXZLaXRFbmFibGVkXSk7CiAjZW5kaWYKICAgICBzZXR0aW5ncy5zZXRNZWRpYVBsYXli
YWNrUmVxdWlyZXNVc2VyR2VzdHVyZShbcHJlZmVyZW5jZXMgbWVkaWFQbGF5YmFja1JlcXVpcmVz
VXNlckdlc3R1cmVdKTsKICAgICBzZXR0aW5ncy5zZXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5l
KFtwcmVmZXJlbmNlcyBtZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lXSk7CkBAIC04NDQzLDcgKzg0
NDUsNyBAQCBib29sIExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExheWVycygpCiAKICNlbmRp
ZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShWSURF
TykKIC0gKHZvaWQpX2VudGVyRnVsbHNjcmVlbkZvck5vZGU6KFdlYkNvcmU6Ok5vZGUqKW5vZGUK
IHsKICAgICBBU1NFUlQoaXNIVE1MVmlkZW9FbGVtZW50KG5vZGUpKTsKQEAgLTg0NjYsNyArODQ2
OCwxMSBAQCBib29sIExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExheWVycygpCiAgICAgaWYg
KCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIpIHsKICAgICAgICAgX3ByaXZhdGUtPmZ1
bGxzY3JlZW5Db250cm9sbGVyID0gW1tXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGFsbG9j
XSBpbml0XTsKICAgICAgICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciBzZXRNZWRp
YUVsZW1lbnQ6dmlkZW9FbGVtZW50XTsKLSAgICAgICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29u
dHJvbGxlciBlbnRlckZ1bGxzY3JlZW46W1tzZWxmIHdpbmRvd10gc2NyZWVuXV07ICAgICAgICAK
KyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xs
ZXIgZW50ZXJGdWxsc2NyZWVuOm5pbF07CisjZWxzZQorICAgICAgICBbX3ByaXZhdGUtPmZ1bGxz
Y3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjpbW3NlbGYgd2luZG93XSBzY3JlZW5dXTsK
KyNlbmRpZgogICAgIH0KICAgICBlbHNlCiAgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNv
bnRyb2xsZXIgc2V0TWVkaWFFbGVtZW50OnZpZGVvRWxlbWVudF07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCA1ZmRmNWRmMGZiZmM0ZjY3M2JkNTRi
NjY2ODg2ZTliMzY2MWI1NDYyLi40MWQyZDE3N2QxM2U1MTg5ZDA1OWY1YTEzYTIwNjM0OGRlZjk0
N2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAg
LTIzNiw3ICsyMzYsNyBAQCBPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKIAogLSAodm9p
ZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzOwogCi0j
aWYgRU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVz
KQorI2lmIEVOQUJMRShWSURFTykgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKIC0gKHZvaWQpX2Vu
dGVyRnVsbHNjcmVlbkZvck5vZGU6KFdlYkNvcmU6Ok5vZGUqKW5vZGU7CiAtICh2b2lkKV9leGl0
RnVsbHNjcmVlbjsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221504</attachid>
            <date>2014-01-17 16:02:41 -0800</date>
            <delta_ts>2014-01-20 14:37:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126818-20140117160240.patch</filename>
            <type>text/plain</type>
            <size>38448</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWEyMDAwNDBmZjkxMDY4
MzhhODFhNzQwMGFhY2U5Njk5MzE4MjAzMy4uZjJkZjljNjJhY2E2Yjg2ZTkxMjViMWRkOTViMzYw
M2VjMWNjYjdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE0LTAxLTExICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVZLaXQgZnVsbHNj
cmVlbiB2aWRlbyBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjY4MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIG9ic2VydmFibGUgY2hhbmdlIGluIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgQWRkIGFi
aWxpdHkgZm9yIGZ1bGxzY3JlZW4gdG8gYm9ycm93IHRoZSBBVlBsYXllckxheWVyLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRNZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjptZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0
KToKKyAgICAgICAgQWRkIGEgZGlzYWJsZWQgc2V0dGluZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9y
dHNGdWxsc2NyZWVuKToKKyAgICAgICAgRW5hYmxlZCBmdWxsc2NyZWVuIGZvciBpT1MuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGluaXRd
KToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvcndhcmRpbmdUYXJnZXRGb3JTZWxlY3RvcjpdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNob3VsZERpc21pc3NGb3JEb25lXSk6
CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBwbGF5Ol0pOgorICAgICAgICAoLVtX
ZWJBVlBsYXllckNvbnRyb2xsZXIgcGF1c2U6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29u
dHJvbGxlciB0b2dnbGVQbGF5YmFjazpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9s
bGVyIGlzUGxheWluZ10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxh
eWluZzpdKToKKyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFs
dWVzQWZmZWN0aW5nUGxheWluZ10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIg
c2Vla1RvVGltZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHVwZGF0ZVRp
bWluZ1dpdGhDdXJyZW50VGltZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVy
IGVmZmVjdGl2ZVJhdGVdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNldE1l
ZGlhRWxlbWVudDpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGhhbmRsZUV2
ZW50Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToK
KyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAg
ICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0TWVkaWFFbGVtZW50Ol0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIG1lZGlhRWxlbWVudF0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjpd
KToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBleGl0RnVsbHNjcmVl
bl0pOgorICAgICAgICBBZGQgV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvciBIVE1MTWVkaWFFbGVt
ZW10IHRvIGludGVyZmFjZSB3aXRoIEFWUGxheWVyVmlld0NvbnRyb2xsZXIuCisKIDIwMTQtMDEt
MTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U10gSFRNTE1lZGlhU2Vzc2lvbiBzaG91bGQgc2V0IEF1ZGlvU2Vzc2lvbiBjYXRlZ29yeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IGIyOTk0ZWFiZDAxOThmZDI0ODM2ODYyMWRiMTEyYjc5ZmI5NWU4YmIu
LjAyMThlMzFmNzY5M2JhNzRlODM2YTIxOTg0Njg1NmZmM2QwNzQ2M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNC0wMS0xMSAgSmVyZW15IEpvbmVzICA8amVyZW15akBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIEFWS2l0IGZ1bGxzY3JlZW4gdmlkZW8gaW50ZXJmYWNl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2ODE4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVs
bHNjcmVlbkZvck5vZGUpOgorICAgICAgICBFbmFibGUgKkZ1bGxzY3JlZW5Gb3JOb2RlIGZvciBI
VE1MTWVkaWFFbGVtZW50IGZvciBpT1MKKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5j
ZUtleXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAg
ICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoLVtXZWJQcmVm
ZXJlbmNlcyBtZWRpYVBsYXliYWNrRnVsbHNjcmVlbkFWS2l0XSk6CisgICAgICAgICgtW1dlYlBy
ZWZlcmVuY2VzIHNldE1lZGlhUGxheWJhY2tGdWxsc2NyZWVuQVZLaXQ6XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBfZW50ZXJGdWxsc2NyZWVuRm9yTm9kZTpXZWJDb3JlOjpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICBBZGQgYSBkaXNhYmxlZCBw
cmVmIG1lZGlhUGxheWJhY2tGdWxsc2NyZWVuQVZLaXQuCisgICAgICAgIFVzZSBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQVZLaXQgb24gaU9TCisKIDIwMTQtMDEtMTcgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgTW9yZSBpT1MgYnVpbGQgZml4Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgppbmRleCBjMzhmOTE4MDAzZGEyZmQ0MWVlZDMwOWNjOTg2NDJlZTBj
NWFkZjRkLi45NzY2ZTQ4YjdmZTYzNmI5MjUwODVhMjQ5ZGQyOWJmMzUzMDI3YjRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgpAQCAtMjQ2Miw2ICsyNDYyLDcgQEAgX19aTjdXZWJDb3JlOERvY3VtZW50
MTlkaXNwYXRjaFdpbmRvd0V2ZW50RU4zV1RGMTBQYXNzUmVmUHRySU5TXzVFdmVudEVFRU5TMl9J
TlMKIF9fWk43V2ViQ29yZThJbnRQb2ludEMxRVJLN0NHUG9pbnQKIF9fWk43V2ViQ29yZThQb3Np
dGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFTlMwXzE5TGVnYWN5RWRpdGluZ09m
ZnNldEUKIF9fWk43V2ViQ29yZThTVkdOYW1lczRpbml0RXYKK19fWk43V2ViQ29yZThTZXR0aW5n
czEzZ0FWS2l0RW5hYmxlZEUKIF9fWk43V2ViQ29yZThTZXR0aW5nczEzc2V0U3RhbmRhbG9uZUVi
CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyM3NldE5ldHdvcmtJbnRlcmZhY2VOYW1lRVJLTjNXVEY2
U3RyaW5nRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMzFzZXRBdWRpb1Nlc3Npb25DYXRlZ29yeU92
ZXJyaWRlRWoKQEAgLTMwNTEsNyArMzA1Miw3IEBAIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlF
eGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwVGltZVJhbmdlc0UKIF9fWk5L
N1dlYkNvcmUxMFRpbWVSYW5nZXM3bmVhcmVzdEVkCiAjZW5kaWYKIAotI2lmIEVOQUJMRShWSURF
TykgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoVklERU8pCiBfX1pOSzdXZWJDb3JlMTZI
VE1MTWVkaWFFbGVtZW50NWVuZGVkRXYKIF9fWk5LN1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQ2
cGF1c2VkRXYKIC5vYmpjX2NsYXNzX25hbWVfV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDI0ZTE5Y2M1N2NmMWE4ZGM0MjM0NWViNWVkNWNjODRlMTU2ZWI5NzAuLjk1YjAzNTI2M2Jk
OThmNDAzNTJjYjU2MjQxNzBlY2M1NGE0NmUwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyOTksNiArMTI5OSw4IEBACiAJ
CTNGMkIzM0VEMTY1QUYxNTYwMEUzOTg3QyAvKiBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGVJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Yy
QjMzRTgxNjVBRjE1NTAwRTM5ODdDIC8qIERPTVdlYktpdENTU1ZpZXdwb3J0UnVsZUludGVybmFs
LmggKi87IH07CiAJCTNGMkIzM0VFMTY1QUYxNTYwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdw
b3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzRjJCMzNFOTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3Bw
ICovOyB9OwogCQkzRjJCMzNFRjE2NUFGMTU2MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9y
dFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNG
MkIzM0VBMTY1QUYxNTUwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovOyB9
OworCQkzRjQyQjMxRDE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckFWS2l0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzRjQyQjMxQjE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJBVktpdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDNGNDJCMzFDMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQubW0gKi87IH07CiAJCTNGRkZGOUE4MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NW
aWV3cG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gM0ZGRkY5QTYxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5j
cHAgKi87IH07CiAJCTNGRkZGOUE5MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9y
dFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNG
RkZGOUE3MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCAqLzsgfTsK
IAkJM0ZGRkY5QUQxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRkZGRjlBQjE1
OUQ5QjA2MDAyMEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcCAqLzsgfTsKQEAgLTgx
ODksNiArODE5MSw4IEBACiAJCTNGMkIzM0U4MTY1QUYxNTUwMEUzOTg3QyAvKiBET01XZWJLaXRD
U1NWaWV3cG9ydFJ1bGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzRjJCMzNFOTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9y
dFJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRD
U1NWaWV3cG9ydFJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRjJCMzNF
QTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0Y0MkIzMUIxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaDsgcGF0aCA9IGlvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJM0Y0MkIzMUMxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbTsgcGF0aCA9IGlvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTNGRkZGOUE2MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTVmlld3BvcnRS
dWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0ZGRkY5QTcxNTlEOUE1NTAw
MjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJM0ZGRkY5QUIxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5bGVSZXNvbHZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3cG9ydFN0eWxl
UmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgwOTYsNiArMTgx
MDAsOCBAQAogCQkJCUZFMEQ4NEVBMTA0ODQzNkUwMDFBMTc5RSAvKiBXZWJFdmVudC5tbSAqLywK
IAkJCQlBNTAyQzVERDEzMDQ5QjM1MDBGQzdENTMgLyogV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFj
a0lPUy5oICovLAogCQkJCUMyQzRDQjFEMTYxQTEzMTIwMEQyMTREQSAvKiBXZWJTYWZlSW5jcmVt
ZW50YWxTd2VlcGVySU9TLmggKi8sCisJCQkJM0Y0MkIzMUIxODgxMTkxQjAwMjc4QUFDIC8qIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovLAorCQkJCTNGNDJCMzFDMTg4MTE5
MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gKi8sCiAJ
CQkJRTQ1MzkwM0MwRUFGRDYzNzAwMzY5NUM4IC8qIFdpZGdldElPUy5tbSAqLywKIAkJCSk7CiAJ
CQluYW1lID0gaW9zOwpAQCAtMjUwNjcsNiArMjUwNzMsNyBAQAogCQkJCUE5QzZFNEY0MEQ3NDVF
NDgwMDY0NDJFOSAvKiBQbHVnaW5EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzIwNUFCQzEy
MzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
REExNDExMEUxQUU1RDkwMDAyM0VFNSAvKiBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzRjQyQjMxRDE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckFWS2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUUyMTgzQTE3MzU5
RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291cmNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFB
ODc5OTAxMUNCRTg0NjAwM0M2NjRGIC8qIFBsdWdpblN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwQUZEQUMzRDEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2luVmlld0Jhc2UuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjkwNTUsNiArMjkwNjIsNyBAQAogCQkJCUIyMjI3QTkwMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E5
MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUI1NDNCODU3MTdFQjc1OEYwMDNCRTkzQSAvKiBTVkdQcm9wZXJ0eUluZm8uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTk2MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3QTk5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBOUQwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1JlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKaW5kZXggMjU3ZGFhMThjNTg3ODIwZGMxZGViNmZkMGJmMjAxOGJiZjcw
MWYxMy4uYTg5MGIzOTJkMDM5NzYwODk0NmZhZjI1N2Y1MjE1MWE4YTMyNGFkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00ODQ1LDExICs0ODQ1LDEyIEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBpZiAoaGFzTWVk
aWFDb250cm9scygpKQogICAgICAgICBtZWRpYUNvbnRyb2xzKCktPmVudGVyZWRGdWxsc2NyZWVu
KCk7CiAgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpKSB7Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAg
ICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyRnVsbHNjcmVl
bkZvck5vZGUodGhpcyk7Ci0gICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtp
dGJlZ2luZnVsbHNjcmVlbkV2ZW50KTsKLSNlbHNlCi0gICAgICAgIGlmIChtX3BsYXllcikKKyAg
ICAgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5zdXBwb3J0c0Z1
bGxzY3JlZW5Gb3JOb2RlKHRoaXMpKSB7CisgICAgICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+
Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGJlZ2luZnVsbHNjcmVlbkV2ZW50
KTsKKyAgICAgICAgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgZWxzZSBpZiAobV9wbGF5
ZXIpCiAgICAgICAgICAgICBtX3BsYXllci0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAjZW5kaWYKICAg
ICB9CkBAIC00ODczLDExICs0ODc0LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1
bGxzY3JlZW4oKQogICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKSkgewogICAgICAgICBpZiAoZG9j
dW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJh
Y2soKSkKICAgICAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKLSNpZiAhUExBVEZPUk0oSU9TKQot
ICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZXhpdEZ1bGxzY3Jl
ZW5Gb3JOb2RlKHRoaXMpOwotICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJr
aXRlbmRmdWxsc2NyZWVuRXZlbnQpOwotI2Vsc2UKLSAgICAgICAgaWYgKG1fcGxheWVyKQorCisg
ICAgICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuc3VwcG9ydHNG
dWxsc2NyZWVuRm9yTm9kZSh0aGlzKSkgeworICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCkt
PmNocm9tZSgpLmNsaWVudCgpLmV4aXRGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCk7
CisgICAgICAgIH0KKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGVsc2UgaWYgKG1fcGxheWVy
KQogICAgICAgICAgICAgbV9wbGF5ZXItPmV4aXRGdWxsc2NyZWVuKCk7CiAjZW5kaWYKICAgICB9
CkBAIC00OTAzLDggKzQ5MDYsMzEgQEAgUGxhdGZvcm1NZWRpYSBIVE1MTWVkaWFFbGVtZW50Ojpw
bGF0Zm9ybU1lZGlhKCkgY29uc3QKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBQ
bGF0Zm9ybUxheWVyKiBIVE1MTWVkaWFFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+cGxhdGZvcm1MYXllcigpIDogMDsKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgaWYgKG1fcGxhdGZvcm1MYXllckJvcnJvd2VkKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVy
LT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOwogfQorCisjaWYgUExBVEZPUk0oSU9TKQorUGxh
dGZvcm1MYXllciogSFRNTE1lZGlhRWxlbWVudDo6Ym9ycm93UGxhdGZvcm1MYXllcigpCit7Cisg
ICAgQVNTRVJUKCFtX3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCk7CisgICAgbV9wbGF0Zm9ybUxheWVy
Qm9ycm93ZWQgPSB0cnVlOworICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlcigp
LT51cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5w
bGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJl
dHVyblBsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcikKK3sKKyAgICBB
U1NFUlQobV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgJiYgcGxhdGZvcm1MYXllciA9PSAobV9wbGF5
ZXIgPyBtX3BsYXllci0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cikpOworICAgIG1fcGxhdGZv
cm1MYXllckJvcnJvd2VkID0gZmFsc2U7CisgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgIHJl
bmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisjZW5kaWYKICNlbmRpZgogCiBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMTc5YTEzNTM4ODk2Y2QyNDVjMjg0ODhkNWMw
NDE2OGE2NjYzNTYzOS4uMDE0ZTc4MjViNDRkYWQwYzE2ZGQ2YzM2NzI4MjhiMGIyMjRkNjY1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTEzMiw2ICsxMzIsMTAg
QEAgcHVibGljOgogICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0OwogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3Q7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFBsYXRmb3JtTGF5ZXIqIGJv
cnJvd1BsYXRmb3JtTGF5ZXIoKTsKKyAgICB2b2lkIHJldHVyblBsYXRmb3JtTGF5ZXIoUGxhdGZv
cm1MYXllciopOworI2VuZGlmCiAjZW5kaWYKIAogICAgIGVudW0gRGVsYXllZEFjdGlvblR5cGUg
ewpAQCAtNzc1LDYgKzc3OSw3IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAg
Ym9vbCBtX3JlcXVlc3RpbmdQbGF5IDogMTsKKyAgICBib29sIG1fcGxhdGZvcm1MYXllckJvcnJv
d2VkIDogMTsKICNlbmRpZgogCiAgICAgYm9vbCBtX3Jlc3VtZVBsYXliYWNrQWZ0ZXJJbnRlcnJ1
cHRpb24gOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBlNzU2NjU1NWU1ZDZmNmYw
NTFhYjE0MWVlMWVhNmQzNzIyNjkyOGM2Li5iNTYxMTQ0YWQ1NGY5ZTAwZWI3NGYxNWIwN2M1YTNi
MzlmZGI3MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtOTgsNiArOTgsNyBAQCBi
b29sIFNldHRpbmdzOjpnTG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQgPSBmYWxz
ZTsKIAogI2lmIFBMQVRGT1JNKElPUykKIGJvb2wgU2V0dGluZ3M6OmdOZXR3b3JrRGF0YVVzYWdl
VHJhY2tpbmdFbmFibGVkID0gZmFsc2U7Citib29sIFNldHRpbmdzOjpnQVZLaXRFbmFibGVkID0g
ZmFsc2U7CiAjZW5kaWYKIAogLy8gTk9URXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCA5NjIw
NWZkN2U0YWZiOTk5YjZhMGFmMTk0Y2JmM2E4ZDc3OWI2MDM5Li43ZGE5MWQyZDFjMzUyMDE0ODZl
NzQzMTQ5OGM0Yzg0YWFkNDFjMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0zMDQsNiAr
MzA0LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgc2V0TmV0d29ya0ludGVyZmFjZU5h
bWUoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgbmV0d29ya0ludGVy
ZmFjZU5hbWUoKTsKKworICAgIHN0YXRpYyB2b2lkIHNldEFWS2l0RW5hYmxlZChib29sIGZsYWcp
IHsgZ0FWS2l0RW5hYmxlZCA9IGZsYWc7IH0KKyAgICBzdGF0aWMgYm9vbCBhdktpdEVuYWJsZWQo
KSB7IHJldHVybiBnQVZLaXRFbmFibGVkOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTQwMSw2
ICs0MDQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdTaG91bGRSZXNwZWN0UHJpb3Jp
dHlJbkNTU0F0dHJpYnV0ZVNldHRlcnM7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHN0YXRpYyBi
b29sIGdOZXR3b3JrRGF0YVVzYWdlVHJhY2tpbmdFbmFibGVkOworICAgIHN0YXRpYyBib29sIGdB
VktpdEVuYWJsZWQ7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBkb3VibGUgZ0hpZGRlblBhZ2VET01U
aW1lckFsaWdubWVudEludGVydmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA2MjBmNDMxMDlhMWE5YjU3ZDkzOTE5
YzE0ZjI5ZjZkNTY5ODgzZWU0Li5jNDA3ZDBlNWYzYmM1NGY5MzgzYzZkOTViZWViMDE4NTQwYzFm
MWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMu
aCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CkBAIC00NzQsNiArNDc1LDEwIEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzdXBwb3J0c0Z1bGxzY3JlZW4o
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICAvLyBGSVhNRTogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlciBhc3N1bWVzIGEgUVRLaXQvUXVpY2tUaW1lIG1lZGlhIGVuZ2lu
ZQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoU2V0dGluZ3M6OmF2S2l0RW5hYmxlZCgpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MmFjYTlmNmVlYWU3
NzI3OWQ1MDc1NzA2NWIyZDVhNzRkYWRmMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0LmgKQEAg
LTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0X2gKKyNkZWZpbmUg
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0X2gKKworI2lmIFBMQVRGT1JNKElPUykK
KworI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgorCitAY2xhc3MgVUlTY3JlZW47CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Cit9CisKK0BpbnRlcmZhY2UgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciA6IE5TT2JqZWN0CisKKy0gKHZvaWQpc2V0TWVkaWFF
bGVtZW50OihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQ7CistIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQ7CisKKy0gKHZvaWQpZW50ZXJGdWxs
c2NyZWVuOihVSVNjcmVlbiAqKXNjcmVlbjsKKy0gKHZvaWQpZXhpdEZ1bGxzY3JlZW47CitAZW5k
CisKKyNlbmRpZgorI2VuZGlmIC8vIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzQ3NTU5NTQzYzM0
MWNkZjg3YzYzZWE0NmI3YzVjMmY3NGE4MWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpA
QCAtMCwwICsxLDQyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0
ICJXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaCIKKworI2ltcG9ydCAiRE9NRXZl
bnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8Q29yZU1lZGlhL0NN
VGltZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRXZl
bnRMaXN0ZW5lci5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVudC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9FdmVudExpc3RlbmVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTFZpZGVvRWxl
bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9PYmpDRXZlbnRMaXN0ZW5lci5oPgorI2ltcG9ydCA8
V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVu
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckVsZW1lbnQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1NPRlRfTElOS19GUkFNRVdP
UksoQVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJM
YXllcikKKworU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKK1NPRlRfTElOS19DTEFTUyhBVktp
dCwgQVZQbGF5ZXJDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllclZp
ZXdDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVlVGltaW5nKQorCitT
T0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQorU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSVNjcmVl
bikKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlXaW5kb3cpCitTT0ZUX0xJTktfQ0xBU1MoVUlL
aXQsIFVJVmlldykKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlWaWV3Q29udHJvbGxlcikKK1NP
RlRfTElOS19DTEFTUyhVSUtpdCwgVUlDb2xvcikKKworU09GVF9MSU5LX0ZSQU1FV09SSyhDb3Jl
TWVkaWEpCitTT0ZUX0xJTksoQ29yZU1lZGlhLCBDTVRpbWVNYWtlV2l0aFNlY29uZHMsIENNVGlt
ZSwgKEZsb2F0NjQgc2Vjb25kcywgaW50MzJfdCBwcmVmZXJyZWRUaW1lU2NhbGUpLCAoc2Vjb25k
cywgcHJlZmVycmVkVGltZVNjYWxlKSkKK1NPRlRfTElOSyhDb3JlTWVkaWEsIENNVGltZUdldFNl
Y29uZHMsIEZsb2F0NjQsIChDTVRpbWUgdGltZSksICh0aW1lKSkKKworQGludGVyZmFjZSBBVlZh
bHVlVGltaW5nIDogTlNPYmplY3QgPE5TQ29kaW5nLCBOU0NvcHlpbmcsIE5TTXV0YWJsZUNvcHlp
bmc+CisrIChpZCl2YWx1ZVRpbWluZ1dpdGhBbmNob3JWYWx1ZTooZG91YmxlKWFuY2hvclZhbHVl
IGFuY2hvclRpbWVTdGFtcDooTlNUaW1lSW50ZXJ2YWwpIHRpbWVTdGFtcCByYXRlOihkb3VibGUp
cmF0ZTsKKysgKE5TVGltZUludGVydmFsKWN1cnJlbnRUaW1lU3RhbXA7CitAZW5kCisKK0Bwcm90
b2NvbCBBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUKK0BlbmQKKworQHByb3RvY29sIEFW
UGxheWVyTGF5ZXIKK0BlbmQKKworQGludGVyZmFjZSBBVlBsYXllckNvbnRyb2xsZXIgOiBVSVJl
c3BvbmRlcgorQGVuZAorCitAaW50ZXJmYWNlIEFWUGxheWVyVmlld0NvbnRyb2xsZXIgOiBVSVZp
ZXdDb250cm9sbGVyCitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPEFWUGxheWVyVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZT4gZGVsZWdhdGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ry
b25nKSBBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXI7CitAZW5kCisKK3R5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIEFWUGxheWVyVmlld0NvbnRyb2xsZXJEaXNtaXNzYWxSZWFz
b24pIHsKKyAgICBBVlBsYXllclZpZXdDb250cm9sbGVyRGlzbWlzc2FsUmVhc29uRG9uZUJ1dHRv
blRhcHBlZCwKKyAgICBBVlBsYXllclZpZXdDb250cm9sbGVyRGlzbWlzc2FsUmVhc29uUmVtb3Rl
Q29udHJvbFN0b3BFdmVudFJlY2VpdmVkLAorICAgIEFWUGxheWVyVmlld0NvbnRyb2xsZXJEaXNt
aXNzYWxSZWFzb25FcnJvcgorfSBOU19FTlVNX0FWQUlMQUJMRV9JT1MoOF8wKTsKKwordHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzKSB7CisgICAgQVZQ
bGF5ZXJDb250cm9sbGVyU3RhdHVzVW5rbm93biwKKyAgICBBVlBsYXllckNvbnRyb2xsZXJTdGF0
dXNMb2FkaW5nLAorICAgIEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1JlYWR5VG9QbGF5LAorICAg
IEFWUGxheWVyQ29udHJvbGxlclN0YXR1c0ZhaWxlZAorfSBOU19FTlVNX0FWQUlMQUJMRSgxMF8x
MCwgOF8wKTsKKworQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIgOiBOU09iamVjdCA8
RE9NRXZlbnRMaXN0ZW5lciwgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPgorCitAcHJv
cGVydHkocmV0YWluKSBBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXJQcm94eTsK
K0Bwcm9wZXJ0eShyZXRhaW4pIENBTGF5ZXI8QVZQbGF5ZXJMYXllcj4gKnBsYXllckxheWVyOwor
CitAcHJvcGVydHkgQk9PTCBjYW5QbGF5OworQHByb3BlcnR5KGdldHRlcj1pc1BsYXlpbmcpIEJP
T0wgcGxheWluZzsKK0Bwcm9wZXJ0eSBCT09MIGNhblBhdXNlOworQHByb3BlcnR5IEJPT0wgY2Fu
VG9nZ2xlUGxheWJhY2s7CitAcHJvcGVydHkgZG91YmxlIHJhdGU7CitAcHJvcGVydHkgQk9PTCBj
YW5TZWVrOworQHByb3BlcnR5IE5TVGltZUludGVydmFsIGNvbnRlbnREdXJhdGlvbjsKK0Bwcm9w
ZXJ0eSBOU1NpemUgY29udGVudERpbWVuc2lvbnM7CitAcHJvcGVydHkgQk9PTCBoYXNFbmFibGVk
QXVkaW87CitAcHJvcGVydHkgQk9PTCBoYXNFbmFibGVkVmlkZW87CitAcHJvcGVydHkgTlNUaW1l
SW50ZXJ2YWwgbWluVGltZTsKK0Bwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBtYXhUaW1lOworQHBy
b3BlcnR5IE5TVGltZUludGVydmFsIGNvbnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVzOworQHBy
b3BlcnR5KHJldGFpbikgTlNBcnJheSAqbG9hZGVkVGltZVJhbmdlczsKK0Bwcm9wZXJ0eSBBVlBs
YXllckNvbnRyb2xsZXJTdGF0dXMgc3RhdHVzOworQHByb3BlcnR5KHJldGFpbikgQVZWYWx1ZVRp
bWluZyAqdGltaW5nOworCistICh2b2lkKWhhbmRsZUV2ZW50OihET01FdmVudCAqKWV2dDsKKwor
LSAoQk9PTClwbGF5ZXJWaWV3Q29udHJvbGxlcjooQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAqKXBs
YXllclZpZXdDb250cm9sbGVyIHNob3VsZERpc21pc3NXaXRoUmVhc29uOihBVlBsYXllclZpZXdD
b250cm9sbGVyRGlzbWlzc2FsUmVhc29uKXJlYXNvbjsKKworQGVuZAorCisKK0BpbXBsZW1lbnRh
dGlvbiBXZWJBVlBsYXllckNvbnRyb2xsZXIKK3sKKyAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVu
dD4gX21lZGlhRWxlbWVudDsKKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gX2xpc3RlbmVyOwor
fQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQorICAgICAgICByZXR1cm4gc2VsZjsKKyAgICAKKyAgICBpbml0QVZQbGF5ZXJDb250cm9s
bGVyKCk7CisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyUHJveHkgPSBbW2NsYXNzQVZQbGF5ZXJD
b250cm9sbGVyIGFsbG9jXSBpbml0XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClk
ZWFsbG9jCit7CisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyUHJveHkgPSBuaWw7CisgICAgc2Vs
Zi5wbGF5ZXJMYXllciA9IG5pbDsKKyAgICBzZWxmLmxvYWRlZFRpbWVSYW5nZXMgPSBuaWw7Cisg
ICAgc2VsZi50aW1pbmcgPSBuaWw7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChpZClm
b3J3YXJkaW5nVGFyZ2V0Rm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvcgoreworICAgIFVOVVNFRF9Q
QVJBTShzZWxlY3Rvcik7CisgICAgcmV0dXJuIHNlbGYucGxheWVyQ29udHJvbGxlclByb3h5Owor
fQorCistIChCT09MKXBsYXllclZpZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdDb250cm9sbGVy
ICopcGxheWVyVmlld0NvbnRyb2xsZXIgc2hvdWxkRGlzbWlzc1dpdGhSZWFzb246KEFWUGxheWVy
Vmlld0NvbnRyb2xsZXJEaXNtaXNzYWxSZWFzb24pcmVhc29uCit7CisgICAgVU5VU0VEX1BBUkFN
KHBsYXllclZpZXdDb250cm9sbGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKworICAg
IFdlYlRocmVhZFJ1biheeworICAgICAgICBfbWVkaWFFbGVtZW50LT5wYXVzZSgpOworICAgICAg
ICBfbWVkaWFFbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOworICAgIH0pOworICAgIHJldHVybiBO
TzsKK30KKworLSAodm9pZClwbGF5OihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2Vu
ZGVyKTsKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgX21lZGlhRWxlbWVudC0+cGxheSgp
OworICAgIH0pOworfQorCistICh2b2lkKXBhdXNlOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURf
UEFSQU0oc2VuZGVyKTsKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgX21lZGlhRWxlbWVu
dC0+cGF1c2UoKTsKKyAgICB9KTsKK30KKworLSAodm9pZCl0b2dnbGVQbGF5YmFjazooaWQpc2Vu
ZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgV2ViVGhyZWFkUnVuKF57Cisg
ICAgICAgIF9tZWRpYUVsZW1lbnQtPnRvZ2dsZVBsYXlTdGF0ZSgpOworICAgIH0pOworfQorCist
IChCT09MKWlzUGxheWluZworeworICAgIHJldHVybiBbc2VsZiByYXRlXSAhPSAwOworfQorCist
ICh2b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWluZworeworICAgIFdlYlRocmVhZFJ1biheewor
ICAgICAgICBpZiAocGxheWluZykKKyAgICAgICAgICAgIF9tZWRpYUVsZW1lbnQtPnBsYXkoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgX21lZGlhRWxlbWVudC0+cGF1c2UoKTsKKyAgICB9
KTsKK30KKworKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1BsYXlpbmcKK3sK
KyAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJyYXRlIl07Cit9CisKKy0gKHZvaWQp
c2Vla1RvVGltZTooTlNUaW1lSW50ZXJ2YWwpdGltZQoreworICAgIFdlYlRocmVhZFJ1biheewor
ICAgICAgICBfbWVkaWFFbGVtZW50LT5zZXRDdXJyZW50VGltZSh0aW1lKTsKKyAgICB9KTsKK30K
KworLSAodm9pZCl1cGRhdGVUaW1pbmdXaXRoQ3VycmVudFRpbWU6KE5TVGltZUludGVydmFsKWN1
cnJlbnRUaW1lCit7CisgICAgTlNUaW1lSW50ZXJ2YWwgYW5jaG9yVGltZVN0YW1wID0gKCFbc2Vs
ZiByYXRlXSkgPyBOQU4gOiBbY2xhc3NBVlZhbHVlVGltaW5nIGN1cnJlbnRUaW1lU3RhbXBdOwor
ICAgIEFWVmFsdWVUaW1pbmcgKnRpbWluZyA9IFtjbGFzc0FWVmFsdWVUaW1pbmcgdmFsdWVUaW1p
bmdXaXRoQW5jaG9yVmFsdWU6Y3VycmVudFRpbWUKKyAgICAgIGFuY2hvclRpbWVTdGFtcDphbmNo
b3JUaW1lU3RhbXAgcmF0ZTowXTsKKyAgICBbc2VsZiBzZXRUaW1pbmc6dGltaW5nXTsKK30KKwor
LSAoZG91YmxlKWVmZmVjdGl2ZVJhdGUKK3sKKyAgICByZXR1cm4gX21lZGlhRWxlbWVudC0+aXNQ
bGF5aW5nKCkgPyBfbWVkaWFFbGVtZW50LT5wbGF5YmFja1JhdGUoKSA6IDAuOworfQorCistICh2
b2lkKXVwZGF0ZUR1cmF0aW9uCit7CisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcwMTcgdXNlIGNvcnJlY3QgdmFsdWVzIGluc3RlYWQgb2Yg
ZHVyYXRpb24gZm9yIGFsbCB0aGVzZQorICAgIE5TVGltZUludGVydmFsIGR1cmF0aW9uID0gX21l
ZGlhRWxlbWVudC0+ZHVyYXRpb24oKTsKKyAgICBzZWxmLmNvbnRlbnREdXJhdGlvbiA9IGR1cmF0
aW9uOworICAgIHNlbGYubWF4VGltZSA9IGR1cmF0aW9uOworICAgIHNlbGYuY29udGVudER1cmF0
aW9uV2l0aGluRW5kVGltZXMgPSBkdXJhdGlvbjsKKyAgICBzZWxmLmxvYWRlZFRpbWVSYW5nZXMg
PSBAW0AwLCBAKGR1cmF0aW9uKV07Cit9CisKKy0gKHZvaWQpc2V0TWVkaWFFbGVtZW50OihQYXNz
UmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+KXBhc3NlZE1lZGlhRWxlbWVudAoreworICAgIFJlZlB0
cjxIVE1MTWVkaWFFbGVtZW50PiBtZWRpYUVsZW1lbnQgPSBwYXNzZWRNZWRpYUVsZW1lbnQ7CisK
KyAgICBpZiAoX21lZGlhRWxlbWVudCA9PSBtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBpZiAoX21lZGlhRWxlbWVudCAmJiBfbGlzdGVuZXIpCisgICAgeworICAgICAg
ICBfbWVkaWFFbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kdXJhdGlv
bmNoYW5nZUV2ZW50LCBfbGlzdGVuZXIuZ2V0KCksIGZhbHNlKTsKKyAgICAgICAgX21lZGlhRWxl
bWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucGF1c2VFdmVudCwgX2xpc3Rl
bmVyLmdldCgpLCBmYWxzZSk7CisgICAgICAgIF9tZWRpYUVsZW1lbnQtPnJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLnBsYXlFdmVudCwgX2xpc3RlbmVyLmdldCgpLCBmYWxzZSk7Cisg
ICAgICAgIF9tZWRpYUVsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJh
dGVjaGFuZ2VFdmVudCwgX2xpc3RlbmVyLmdldCgpLCBmYWxzZSk7CisgICAgICAgIF9tZWRpYUVs
ZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwg
X2xpc3RlbmVyLmdldCgpLCBmYWxzZSk7CisgICAgfQorICAgIAorICAgIGlmIChfbWVkaWFFbGVt
ZW50KQorICAgIHsKKyAgICAgICAgW3NlbGYucGxheWVyTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5
ZXJdOworICAgICAgICBfbWVkaWFFbGVtZW50LT5yZXR1cm5QbGF0Zm9ybUxheWVyKHNlbGYucGxh
eWVyTGF5ZXIpOworICAgICAgICBzZWxmLnBsYXllckxheWVyID0gbmlsOworICAgIH0KKyAgICAK
KyAgICBfbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50OworICAgIF9saXN0ZW5lciA9IG51bGxw
dHI7CisgICAgCisgICAgaWYgKCFfbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBfbGlzdGVuZXIgPSBPYmpDRXZlbnRMaXN0ZW5lcjo6d3JhcChzZWxmKTsKKworICAgIF9tZWRp
YUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmR1cmF0aW9uY2hhbmdlRXZl
bnQsIF9saXN0ZW5lciwgZmFsc2UpOworICAgIF9tZWRpYUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIF9saXN0ZW5lciwgZmFsc2UpOworICAgIF9tZWRp
YUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnBsYXlFdmVudCwgX2xpc3Rl
bmVyLCBmYWxzZSk7CisgICAgX21lZGlhRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkucmF0ZWNoYW5nZUV2ZW50LCBfbGlzdGVuZXIsIGZhbHNlKTsKKyAgICBfbWVkaWFFbGVt
ZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQsIF9saXN0
ZW5lciwgZmFsc2UpOworCisgICAgW3NlbGYgdXBkYXRlRHVyYXRpb25dOworICAgIHNlbGYuY2Fu
UGxheSA9IFlFUzsKKyAgICBzZWxmLmNhblBhdXNlID0gWUVTOworICAgIHNlbGYuY2FuVG9nZ2xl
UGxheWJhY2sgPSBZRVM7CisgICAgc2VsZi5oYXNFbmFibGVkQXVkaW8gPSBZRVM7CisgICAgc2Vs
Zi5jYW5TZWVrID0gWUVTOworICAgIHNlbGYubWluVGltZSA9IDA7CisgICAgc2VsZi5yYXRlID0g
W3NlbGYgZWZmZWN0aXZlUmF0ZV07CisgICAgc2VsZi5zdGF0dXMgPSBBVlBsYXllckNvbnRyb2xs
ZXJTdGF0dXNSZWFkeVRvUGxheTsKKworICAgIHNlbGYucGxheWVyTGF5ZXIgPSAoQ0FMYXllcjxB
VlBsYXllckxheWVyPiAqKV9tZWRpYUVsZW1lbnQtPmJvcnJvd1BsYXRmb3JtTGF5ZXIoKTsKKyAg
ICBBU1NFUlQoW3NlbGYucGxheWVyTGF5ZXIgaXNLaW5kT2ZDbGFzczpjbGFzc0FWUGxheWVyTGF5
ZXJdKTsKKyAgICBbc2VsZi5wbGF5ZXJMYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisKKyAg
ICBbc2VsZiB1cGRhdGVUaW1pbmdXaXRoQ3VycmVudFRpbWU6X21lZGlhRWxlbWVudC0+Y3VycmVu
dFRpbWUoKV07CisKKyAgICBpZiAoaXNIVE1MVmlkZW9FbGVtZW50KF9tZWRpYUVsZW1lbnQuZ2V0
KCkpKSB7CisgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgKnZpZGVvRWxlbWVudCA9IHRvSFRNTFZp
ZGVvRWxlbWVudChfbWVkaWFFbGVtZW50LmdldCgpKTsKKyAgICAgICAgc2VsZi5oYXNFbmFibGVk
VmlkZW8gPSBZRVM7CisgICAgICAgIHNlbGYuY29udGVudERpbWVuc2lvbnMgPSBDR1NpemVNYWtl
KHZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCB2aWRlb0VsZW1lbnQtPnZpZGVvSGVpZ2h0KCkp
OworICAgIH0KK30KKworLSAodm9pZCloYW5kbGVFdmVudDooRE9NRXZlbnQgKilldm50Cit7Cisg
ICAgRXZlbnQqIGV2ZW50ID0gY29yZShldm50KTsKKyAgICAKKyAgICBpZiAoIV9tZWRpYUVsZW1l
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhNZWRpYSwgImhhbmRsZUV2ZW50ICVzIiwg
ZXZlbnQtPnR5cGUoKS5jaGFyYWN0ZXJzOCgpKTsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50KQorICAgICAgICBbc2VsZiB1cGRhdGVE
dXJhdGlvbl07CisgICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkucGF1
c2VFdmVudAorICAgICAgICB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5wbGF5RXZl
bnQKKyAgICAgICAgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2
ZW50KQorICAgICAgICBzZWxmLnJhdGUgPSBbc2VsZiBlZmZlY3RpdmVSYXRlXTsKKyAgICBlbHNl
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQpCisgICAg
ICAgIFtzZWxmIHVwZGF0ZVRpbWluZ1dpdGhDdXJyZW50VGltZTpfbWVkaWFFbGVtZW50LT5jdXJy
ZW50VGltZSgpXTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIgKCkgPFVJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uaW5nRGVsZWdhdGU+CitAcHJv
cGVydHkocmV0YWluKSBVSVdpbmRvdyAqd2luZG93OworQHByb3BlcnR5KHJldGFpbikgVUlWaWV3
Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXI7CitAcHJvcGVydHkocmV0YWluKSBBVlBsYXllclZp
ZXdDb250cm9sbGVyICpwbGF5ZXJWaWV3Q29udHJvbGxlcjsKK0Bwcm9wZXJ0eShyZXRhaW4pIFdl
YkFWUGxheWVyQ29udHJvbGxlciAqcGxheWVyQ29udHJvbGxlcjsKK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIKK3sKKyAgICBSZWZQdHI8SFRNTE1l
ZGlhRWxlbWVudD4gX21lZGlhRWxlbWVudDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sK
KyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIGluaXRVSVNjcmVlbigpOworICAgIGluaXRVSVZpZXcoKTsKKyAgICBpbml0VUlDb2xvcigp
OworICAgIGluaXRVSVdpbmRvdygpOworICAgIGluaXRBVlBsYXllckNvbnRyb2xsZXIoKTsKKyAg
ICBpbml0QVZQbGF5ZXJWaWV3Q29udHJvbGxlcigpOworICAgIGluaXRBVlZhbHVlVGltaW5nKCk7
CisgICAgaW5pdFVJVmlld0NvbnRyb2xsZXIoKTsKKyAgICBpbml0QVZQbGF5ZXJMYXllcigpOwor
ICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBzZWxmLndpbmRv
dyA9IG5pbDsKKyAgICBzZWxmLnZpZXdDb250cm9sbGVyID0gbmlsOworICAgIHNlbGYucGxheWVy
Vmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyID0gbmlsOwor
ICAgIF9tZWRpYUVsZW1lbnQgPSBudWxscHRyOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKwor
LSAodm9pZClzZXRNZWRpYUVsZW1lbnQ6KEhUTUxNZWRpYUVsZW1lbnQqKW1lZGlhRWxlbWVudAor
eworICAgIF9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1lbnQ7Cit9CisKKy0gKEhUTUxNZWRpYUVs
ZW1lbnQqKW1lZGlhRWxlbWVudAoreworICAgIHJldHVybiBfbWVkaWFFbGVtZW50LmdldCgpOwor
fQorCistICh2b2lkKWVudGVyRnVsbHNjcmVlbjooVUlTY3JlZW4gKilzY3JlZW4KK3sKKyAgICBp
ZiAoIXNjcmVlbikKKyAgICAgICAgc2NyZWVuID0gW2NsYXNzVUlTY3JlZW4gbWFpblNjcmVlbl07
CisKKyAgICBzZWxmLnBsYXllckNvbnRyb2xsZXIgPSBbW1tXZWJBVlBsYXllckNvbnRyb2xsZXIg
YWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBzZWxmLnBsYXllckNvbnRyb2xsZXIubWVk
aWFFbGVtZW50ID0gX21lZGlhRWxlbWVudDsKKworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIHNlbGYucGxheWVyVmlld0NvbnRyb2xsZXIg
PSBbW1tjbGFzc0FWUGxheWVyVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKKyAgICAgICAgc2VsZi5wbGF5ZXJWaWV3Q29udHJvbGxlci5wbGF5ZXJDb250cm9sbGVyID0g
KEFWUGxheWVyQ29udHJvbGxlciAqKXNlbGYucGxheWVyQ29udHJvbGxlcjsKKyAgICAgICAgCisg
ICAgICAgIGlmIChbc2VsZi5wbGF5ZXJWaWV3Q29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHNldERlbGVnYXRlOildKQorICAgICAgICAgICAgc2VsZi5wbGF5ZXJWaWV3Q29u
dHJvbGxlci5kZWxlZ2F0ZSA9IHNlbGYucGxheWVyQ29udHJvbGxlcjsKKyAgICAgICAKKyAgICAg
ICAgc2VsZi52aWV3Q29udHJvbGxlciA9IFtbW2NsYXNzVUlWaWV3Q29udHJvbGxlciBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICAKKyAgICAgICAgc2VsZi53aW5kb3cgPSBbW1tj
bGFzc1VJV2luZG93IGFsbG9jXSBpbml0V2l0aEZyYW1lOltzY3JlZW4gYm91bmRzXV0gYXV0b3Jl
bGVhc2VdOworICAgICAgICBzZWxmLndpbmRvdy5iYWNrZ3JvdW5kQ29sb3IgPSBbY2xhc3NVSUNv
bG9yIGNsZWFyQ29sb3JdOworICAgICAgICBzZWxmLndpbmRvdy5yb290Vmlld0NvbnRyb2xsZXIg
PSAoVUlWaWV3Q29udHJvbGxlciAqKXNlbGYudmlld0NvbnRyb2xsZXI7CisgICAgICAgIFtzZWxm
LndpbmRvdyBtYWtlS2V5QW5kVmlzaWJsZV07CisgICAgICAgIAorICAgICAgICBbc2VsZi52aWV3
Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xsZXI6c2VsZi5wbGF5ZXJWaWV3Q29udHJvbGxl
ciBhbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOworICAgIH0pOworfQorCistICh2b2lkKWV4
aXRGdWxsc2NyZWVuCit7CisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyLm1lZGlhRWxlbWVudCA9
IG51bGxwdHI7CisKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeeworICAgICAgICBbc2VsZi52aWV3Q29udHJvbGxlciBkaXNtaXNzVmlld0NvbnRyb2xsZXJB
bmltYXRlZDpZRVMgY29tcGxldGlvbjpeeworICAgICAgICAgICAgc2VsZi53aW5kb3cuaGlkZGVu
ID0gWUVTOworICAgICAgICAgICAgc2VsZi53aW5kb3cucm9vdFZpZXdDb250cm9sbGVyID0gbmls
OworICAgICAgICAgICAgCisgICAgICAgICAgICBzZWxmLnBsYXllclZpZXdDb250cm9sbGVyID0g
bmlsOworICAgICAgICAgICAgc2VsZi52aWV3Q29udHJvbGxlciA9IG5pbDsKKyAgICAgICAgICAg
IHNlbGYud2luZG93ID0gbmlsOworICAgICAgICAgICAgV2ViVGhyZWFkUnVuKF57CisgICAgICAg
ICAgICAgICAgX21lZGlhRWxlbWVudCA9IG51bGxwdHI7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIAorICAgICAgICB9XTsKKyAgICB9KTsKK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5k
ZXggNDUxYTQ0Y2E3MjBjZjc2YWEzM2E3OTNiZDEyNjY3MDIxN2EyZmZkOC4uZDUwNDg5MGQ3YTc4
YmZkYjg2OGNlZjkzZGFiNmJiOTc5NjNiYWViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE4NSw3ICsxODUsNyBAQCBw
dWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoVklERU8pICYmICFQTEFURk9STShJ
T1MpCisjaWYgRU5BQkxFKFZJREVPKQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3Jl
ZW5Gb3JOb2RlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShXZWJDb3JlOjpOb2RlKikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuRm9yTm9kZShXZWJDb3JlOjpOb2RlKikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0KaW5kZXggYmVlODc2YTFlYzcwODFlNjVlYWNjNzE4ZWM3NzAxZGUxNDNhYTczYS4u
MmM5ZWJmNjgyZjcxYTljMGRkM2IwN2Y3Y2U3ODBiZDE4NGI5NDZlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtOTY3
LDEwICs5NjcsMTQgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNjaGVkdWxlQ29tcG9zaXRpbmdM
YXllckZsdXNoKCkKIAogI2VuZGlmCiAKLSNpZiBFTkFCTEUoVklERU8pICYmICFQTEFURk9STShJ
T1MpCisjaWYgRU5BQkxFKFZJREVPKQogCiBib29sIFdlYkNocm9tZUNsaWVudDo6c3VwcG9ydHNG
dWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2RlKiBub2RlKQogeworI2lmIFBMQVRGT1JNKElPUykK
KyAgICBpZiAoIVNldHRpbmdzOjphdktpdEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCiAgICAgcmV0dXJuIGlzSFRNTFZpZGVvRWxlbWVudChub2RlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRl
LmgKaW5kZXggYzRkZjIyN2NmMjRlOTVlYmE4ZGEyNzU4OTc1ZTBkNjhiYmQ5NmQwNS4uODhhNDRm
ZGRlMmZhMTYzNDNkMzA5ZjhlNTAwNjljYWRlYTQ2MDk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC0xMzMsNiAr
MTMzLDcgQEAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAjZGVmaW5lIFdlYktpdE1lZGlhUGxheWJh
Y2tBbGxvd3NBaXJQbGF5UHJlZmVyZW5jZUtleSBAIldlYktpdE1lZGlhUGxheWJhY2tBbGxvd3NB
aXJQbGF5IgogI2RlZmluZSBXZWJLaXRBdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRlIEAiV2Vi
S2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZSIKKyNkZWZpbmUgV2ViS2l0QVZLaXRFbmFi
bGVkIEAiV2ViS2l0QVZLaXRFbmFibGVkIgogI2VuZGlmCiAjZGVmaW5lIFdlYktpdFJlZ2lvbkJh
c2VkQ29sdW1uc0VuYWJsZWRLZXkgQCJXZWJLaXRSZWdpb25CYXNlZENvbHVtbnNFbmFibGVkIgog
I2RlZmluZSBXZWJLaXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbktleSBAIldlYktpdFNo
b3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXMubW0KaW5kZXggZjFlNDk2MmY2MTcyMGQwZDNiOTNlOGVhMmViMTBlZTZi
NzA2MGEwYy4uNTZkZmRjMjg1Njc2M2NmNmI4MzJlNjVmMTc0ODIyYzVmOTk0YTM0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCkBAIC01MzEsNiArNTMx
LDcgQEAgcHVibGljOgogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdl
YktpdE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmVQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdE1lZGlhUGxheWJhY2tBbGxvd3NBaXJQ
bGF5UHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZElu
dDpBdWRpb1Nlc3Npb246Ok5vbmVdLCAgV2ViS2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlk
ZSwKKyAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRBVktpdEVu
YWJsZWQsCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoTG9uZ0xvbmc6V2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKV0sIFdlYktpdEFwcGxpY2F0aW9uQ2FjaGVU
b3RhbFF1b3RhLAogCiAgICAgICAgIC8vIFBlci1PcmlnaW4gUXVvdGEgb24gaU9TIGlzIDI1TUIu
IFdoZW4gdGhlIHF1b3RhIGlzIHJlYWNoZWQgZm9yIGEgcGFydGljdWxhciBvcmlnaW4KQEAgLTIy
MTgsNiArMjIxOSwxNiBAQCBzdGF0aWMgTlNTdHJpbmcgKmNsYXNzSUJDcmVhdG9ySUQgPSBuaWw7
CiAgICAgW3NlbGYgX3NldFVuc2lnbmVkSW50VmFsdWU6b3ZlcnJpZGUgZm9yS2V5OldlYktpdEF1
ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGVdOwogfQogCistIChCT09MKWF2S2l0RW5hYmxlZAor
eworICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdEFWS2l0RW5hYmxlZF07
Cit9CisKKy0gKHZvaWQpc2V0QVZLaXRFbmFibGVkOihib29sKWZsYWcKK3sKKyAgICBbc2VsZiBf
c2V0Qm9vbFZhbHVlOmZsYWcgZm9yS2V5OldlYktpdEFWS2l0RW5hYmxlZF07Cit9CisKIC0gKEJP
T0wpbmV0d29ya0RhdGFVc2FnZVRyYWNraW5nRW5hYmxlZAogewogICAgIHJldHVybiBbc2VsZiBf
Ym9vbFZhbHVlRm9yS2V5OldlYktpdE5ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWRQcmVm
ZXJlbmNlS2V5XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5oCmluZGV4IDU4ZjMyZjc5YjAwY2FlZGU4Mzc2NGI3ODk5NDdmMGUyYjc3Nzhi
NzguLmMxMjkxOWY3NDM2NzBkMTFkYTM5ZDE3NTQ1NGYzZjU1ZjlkMjYzMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMjU5
LDYgKzI1OSw5IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUHJlZmVyZW5jZXNDYWNoZU1vZGVsQ2hh
bmdlZEludGVybmFsTm90aWZpY2F0aW9uOwogLSAodW5zaWduZWQpYXVkaW9TZXNzaW9uQ2F0ZWdv
cnlPdmVycmlkZTsKIC0gKHZvaWQpc2V0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZToodW5z
aWduZWQpb3ZlcnJpZGU7CiAKKy0gKEJPT0wpYXZLaXRFbmFibGVkOworLSAodm9pZClzZXRBVktp
dEVuYWJsZWQ6KGJvb2wpZmxhZzsKKwogLy8gV0FSTklORzogdGhpcyBhZmZlY3QgbmV0d29yayBw
ZXJmb3JtYW5jZS4gVGhpcyBtdXN0IG5vdCBiZSBlbmFibGVkIGZvciBwcm9kdWN0aW9uIHVzZS4K
IC8vIEVuYWJsaW5nIHRoaXMgbWFrZXMgV2ViQ29yZSByZXBvcnRzIHRoZSBuZXR3b3JrIGRhdGEg
dXNhZ2UuCiAvLyBUaGlzIGlzIGEgZ2xvYmFsIHNldHRpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KaW5kZXggYTg1ZDA1MGQzNDAwZWVmOWZmYjE2ZDAwYjk1M2I0OTRhYWQwYmIz
Zi4uZDRmZGE2Y2MzMTUxYzQ1ZDE3MWIyZDhhYjc0MGE4ZGQ0YjhmMDhmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjQxLDYgKzI0MSw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJl
YWRSdW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lmg+CiAjaW1wb3J0IDxkaXNwYXRjaC9w
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogCkBAIC0yMzUzLDYgKzIzNTQs
NyBAQCBzdGF0aWMgYm9vbCBuZWVkc1NlbGZSZXRhaW5XaGlsZUxvYWRpbmdRdWlyaygpCiAgICAg
c2V0dGluZ3Muc2V0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZShbcHJlZmVyZW5jZXMgYXVk
aW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZV0pOwogICAgIHNldHRpbmdzLnNldE5ldHdvcmtEYXRh
VXNhZ2VUcmFja2luZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIG5ldHdvcmtEYXRhVXNhZ2VUcmFja2lu
Z0VuYWJsZWRdKTsKICAgICBzZXR0aW5ncy5zZXROZXR3b3JrSW50ZXJmYWNlTmFtZShbcHJlZmVy
ZW5jZXMgbmV0d29ya0ludGVyZmFjZU5hbWVdKTsKKyAgICBzZXR0aW5ncy5zZXRBVktpdEVuYWJs
ZWQoW3ByZWZlcmVuY2VzIGF2S2l0RW5hYmxlZF0pOwogI2VuZGlmCiAgICAgc2V0dGluZ3Muc2V0
TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoW3ByZWZlcmVuY2VzIG1lZGlhUGxheWJh
Y2tSZXF1aXJlc1VzZXJHZXN0dXJlXSk7CiAgICAgc2V0dGluZ3Muc2V0TWVkaWFQbGF5YmFja0Fs
bG93c0lubGluZShbcHJlZmVyZW5jZXMgbWVkaWFQbGF5YmFja0FsbG93c0lubGluZV0pOwpAQCAt
ODQ0Myw3ICs4NDQ1LDcgQEAgYm9vbCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMo
KQogCiAjZW5kaWYKIAotI2lmIEVOQUJMRShWSURFTykgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBF
TkFCTEUoVklERU8pCiAtICh2b2lkKV9lbnRlckZ1bGxzY3JlZW5Gb3JOb2RlOihXZWJDb3JlOjpO
b2RlKilub2RlCiB7CiAgICAgQVNTRVJUKGlzSFRNTFZpZGVvRWxlbWVudChub2RlKSk7CkBAIC04
NDY2LDcgKzg0NjgsMTEgQEAgYm9vbCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMo
KQogICAgIGlmICghX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyKSB7CiAgICAgICAgIF9w
cml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciA9IFtbV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlciBhbGxvY10gaW5pdF07CiAgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xs
ZXIgc2V0TWVkaWFFbGVtZW50OnZpZGVvRWxlbWVudF07Ci0gICAgICAgIFtfcHJpdmF0ZS0+ZnVs
bHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOltbc2VsZiB3aW5kb3ddIHNjcmVlbl1d
OyAgICAgICAgCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICBbX3ByaXZhdGUtPmZ1bGxzY3Jl
ZW5Db250cm9sbGVyIGVudGVyRnVsbHNjcmVlbjpuaWxdOworI2Vsc2UKKyAgICAgICAgW19wcml2
YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciBlbnRlckZ1bGxzY3JlZW46W1tzZWxmIHdpbmRvd10g
c2NyZWVuXV07CisjZW5kaWYKICAgICB9CiAgICAgZWxzZQogICAgICAgICBbX3ByaXZhdGUtPmZ1
bGxzY3JlZW5Db250cm9sbGVyIHNldE1lZGlhRWxlbWVudDp2aWRlb0VsZW1lbnRdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggNWZkZjVkZjBmYmZj
NGY2NzNiZDU0YjY2Njg4NmU5YjM2NjFiNTQ2Mi4uNDFkMmQxNzdkMTNlNTE4OWQwNTlmNWExM2Ey
MDYzNDhkZWY5NDdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRl
cm5hbC5oCkBAIC0yMzYsNyArMjM2LDcgQEAgT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7
CiAKIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW5jZXMgKilwcmVmZXJl
bmNlczsKIAotI2lmIEVOQUJMRShWSURFTykgJiYgIVBMQVRGT1JNKElPUykgJiYgZGVmaW5lZChf
X2NwbHVzcGx1cykKKyNpZiBFTkFCTEUoVklERU8pICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCiAt
ICh2b2lkKV9lbnRlckZ1bGxzY3JlZW5Gb3JOb2RlOihXZWJDb3JlOjpOb2RlKilub2RlOwogLSAo
dm9pZClfZXhpdEZ1bGxzY3JlZW47CiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>