<?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>130736</bug_id>
          
          <creation_ts>2014-03-25 13:10:14 -0700</creation_ts>
          <short_desc>Support form controls that may need incremental redraw</short_desc>
          <delta_ts>2014-05-17 01:44:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</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="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>bdakin</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>994298</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-25 13:10:14 -0700</bug_when>
    <thetext>Some system controls do not render completely in a single draw operation. Add support in RenderTheme such that a control can trigger a redraw of itself in the near future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994300</commentid>
    <comment_count>1</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-25 13:10:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/16175197&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994318</commentid>
    <comment_count>2</comment_count>
      <attachid>227792</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-25 13:51:12 -0700</bug_when>
    <thetext>Created attachment 227792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994342</commentid>
    <comment_count>3</comment_count>
      <attachid>227792</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-25 14:38:54 -0700</bug_when>
    <thetext>Comment on attachment 227792
Patch

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

&gt; Source/WebCore/platform/Theme.h:39
&gt; +typedef unsigned ThemeClient;

Seems odd for a &quot;client&quot; to be an ID and not something implementing a virtual interface.

&gt; Source/WebCore/platform/mac/ThemeMac.h:68
&gt; +    HashMap&lt;ThemeClient, ControlStates&gt; m_clientStates;
&gt; +    HashMap&lt;ThemeClient, NSButtonCell*&gt; m_clientButtons;

Would be better to have just one hash pointing to a class/struct that has both the states and cells.

&gt; Source/WebCore/platform/mac/ThemeMac.mm:104
&gt; +- (void)addSubview:(NSView*)subview {

Brace on new line.

&gt; Source/WebCore/platform/mac/ThemeMac.mm:105
&gt; +    // By doing nothing in this method we explicitly forbid controls from adding subviews.

Not sure this is adding.

&gt; Source/WebCore/platform/mac/ThemeMac.mm:294
&gt; +static NSButtonCell *newCheckbox()

I&apos;d call this createCheckboxCell()

&gt; Source/WebCore/platform/mac/ThemeMac.mm:300
&gt; +    NSButtonCell *checkboxCell = [[NSButtonCell alloc] init];
&gt; +    [checkboxCell setButtonType:NSSwitchButton];
&gt; +    [checkboxCell setTitle:nil];
&gt; +    [checkboxCell setAllowsMixedState:YES];
&gt; +    [checkboxCell setFocusRingType:NSFocusRingTypeExterior];

BEGIN_BLOCK_OBJC_EXCEPTIONS around this.

&gt; Source/WebCore/platform/mac/ThemeMac.mm:365
&gt; +        context-&gt;translate(inflatedRect.x(), inflatedRect.y());
&gt; +        context-&gt;scale(FloatSize(1, -1));
&gt; +        context-&gt;translate(0, -inflatedRect.height());

Do you need to save and restore the context state?

&gt; Source/WebCore/rendering/RenderObject.cpp:127
&gt; +    theme().clearThemeForRenderer(this);

Ew! Should avoid this if at all possible, at least have it on RenderElement. And we should know if a renderer used the theme at all, right?

&gt; Source/WebCore/rendering/RenderTheme.cpp:1328
&gt; +    if (!m_themeClients.contains(o))
&gt; +        m_themeClients.add(o, ++s_nextThemeClient);
&gt; +    
&gt; +    return m_themeClients.get(o);

I think there&apos;s a way to do this with fewer hash lookups.

&gt; Source/WebCore/rendering/RenderTheme.h:374
&gt; +    void timerFired(Timer&lt;RenderTheme&gt;&amp;);

Should be rendererRepaintTimerFired()

&gt; Source/WebCore/rendering/RenderTheme.h:416
&gt; +    Vector&lt;const RenderObject*&gt; m_repaintList;

This should be m_renderersRequiringRepaint or something.

&gt; Source/WebCore/rendering/RenderTheme.h:417
&gt; +    OwnPtr&lt;Timer&lt;RenderTheme&gt;&gt; m_timer;

We don&apos;t usually heap-allocate Timers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994440</commentid>
    <comment_count>4</comment_count>
      <attachid>227792</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2014-03-25 16:44:43 -0700</bug_when>
    <thetext>Comment on attachment 227792
Patch

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

Here is co-review feedback from me and Sam. Might have slightly more coming in a few minutes.

&gt;&gt; Source/WebCore/platform/Theme.h:39
&gt;&gt; +typedef unsigned ThemeClient;
&gt; 
&gt; Seems odd for a &quot;client&quot; to be an ID and not something implementing a virtual interface.

Sam agrees.

&gt; Source/WebCore/platform/mac/ThemeMac.mm:39
&gt; +#import &lt;AppKit/NSButtonCell_Private.h&gt;

This won&apos;t work for open source contributors. You should instead check if this header exists, and only then include it. Then always forward declare what you need from NSButtonCell.

&gt;&gt; Source/WebCore/platform/mac/ThemeMac.mm:105
&gt;&gt; +    // By doing nothing in this method we explicitly forbid controls from adding subviews.
&gt; 
&gt; Not sure this is adding.

Sam likes the comment. He thinks otherwise it will be confusing why we have a random stub.

&gt; Source/WebCore/rendering/RenderTheme.cpp:70
&gt; +static ThemeClient s_nextThemeClient = 0;

Sam wants to know why we are using an int instead of a pointer to the RenderObject.

&gt; Source/WebCore/rendering/RenderTheme.cpp:305
&gt; +        if (m_theme-&gt;paint(themeClientForRenderer(o), part, controlStatesForRenderer(o), const_cast&lt;GraphicsContext*&gt;(paintInfo.context), r, o-&gt;style().effectiveZoom(), &amp;o-&gt;view().frameView())) {

Sam doesn&apos;t care for this API contract. He doesn&apos;t like that you are finding out that this control is animating based on the return value from the paint() function. That is explained in you header comment, but it is not inherently obvious that that is what the return value would mean. Makes for bad code clarity.

&gt; Source/WebCore/rendering/RenderTheme.h:415
&gt; +    HashMap&lt;const RenderObject*, ThemeClient&gt; m_themeClients;

It&apos;s not clear why we need this indirection. Can we just use the RenderObject as a void* as the client id?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994445</commentid>
    <comment_count>5</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-25 17:04:29 -0700</bug_when>
    <thetext>(In reply to comment #4)

&gt; &gt;&gt; Source/WebCore/platform/Theme.h:39
&gt; &gt;&gt; +typedef unsigned ThemeClient;
&gt; &gt; 
&gt; &gt; Seems odd for a &quot;client&quot; to be an ID and not something implementing a virtual interface.
&gt; 
&gt; Sam agrees.

I&apos;ll just use void*. That&apos;s what I wanted at first, but thought people would complain about ugliness.

&gt; 
&gt; &gt; Source/WebCore/platform/mac/ThemeMac.mm:39
&gt; &gt; +#import &lt;AppKit/NSButtonCell_Private.h&gt;
&gt; 
&gt; This won&apos;t work for open source contributors. You should instead check if this header exists, and only then include it. Then always forward declare what you need from NSButtonCell.

I had planned to declare a private category for these and not include anything.

&gt; &gt; Source/WebCore/rendering/RenderTheme.cpp:70
&gt; &gt; +static ThemeClient s_nextThemeClient = 0;
&gt; 
&gt; Sam wants to know why we are using an int instead of a pointer to the RenderObject.

I prefer this.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderTheme.cpp:305
&gt; &gt; +        if (m_theme-&gt;paint(themeClientForRenderer(o), part, controlStatesForRenderer(o), const_cast&lt;GraphicsContext*&gt;(paintInfo.context), r, o-&gt;style().effectiveZoom(), &amp;o-&gt;view().frameView())) {
&gt; 
&gt; Sam doesn&apos;t care for this API contract. He doesn&apos;t like that you are finding out that this control is animating based on the return value from the paint() function. That is explained in you header comment, but it is not inherently obvious that that is what the return value would mean. Makes for bad code clarity.

The alternative would be to query the theme after the paint, to see if it should schedule another paint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994446</commentid>
    <comment_count>6</comment_count>
      <attachid>227792</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-25 17:11:18 -0700</bug_when>
    <thetext>Comment on attachment 227792
Patch

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

I should have replied via review tool :(

&gt;&gt;&gt; Source/WebCore/platform/Theme.h:39
&gt;&gt;&gt; +typedef unsigned ThemeClient;
&gt;&gt; 
&gt;&gt; Seems odd for a &quot;client&quot; to be an ID and not something implementing a virtual interface.
&gt; 
&gt; Sam agrees.

We don&apos;t need this if we change to using RO*

&gt;&gt; Source/WebCore/platform/mac/ThemeMac.mm:39
&gt;&gt; +#import &lt;AppKit/NSButtonCell_Private.h&gt;
&gt; 
&gt; This won&apos;t work for open source contributors. You should instead check if this header exists, and only then include it. Then always forward declare what you need from NSButtonCell.

I was going to declare a private category for this, and avoid including the file at all.

&gt;&gt; Source/WebCore/platform/mac/ThemeMac.mm:300
&gt;&gt; +    [checkboxCell setFocusRingType:NSFocusRingTypeExterior];
&gt; 
&gt; BEGIN_BLOCK_OBJC_EXCEPTIONS around this.

It&apos;s already called from within something that has done this.

&gt;&gt; Source/WebCore/platform/mac/ThemeMac.mm:365
&gt;&gt; +        context-&gt;translate(0, -inflatedRect.height());
&gt; 
&gt; Do you need to save and restore the context state?

There is a StateSaver just out of view above.

&gt;&gt; Source/WebCore/rendering/RenderTheme.cpp:70
&gt;&gt; +static ThemeClient s_nextThemeClient = 0;
&gt; 
&gt; Sam wants to know why we are using an int instead of a pointer to the RenderObject.

I thought people would complain if I did something ugly like that, but it is what I wanted... so I&apos;ll change!

&gt;&gt; Source/WebCore/rendering/RenderTheme.cpp:305
&gt;&gt; +        if (m_theme-&gt;paint(themeClientForRenderer(o), part, controlStatesForRenderer(o), const_cast&lt;GraphicsContext*&gt;(paintInfo.context), r, o-&gt;style().effectiveZoom(), &amp;o-&gt;view().frameView())) {
&gt; 
&gt; Sam doesn&apos;t care for this API contract. He doesn&apos;t like that you are finding out that this control is animating based on the return value from the paint() function. That is explained in you header comment, but it is not inherently obvious that that is what the return value would mean. Makes for bad code clarity.

OK. I think the other alternative would be to query Theme after painting to ask if it needs to schedule another paint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995026</commentid>
    <comment_count>7</comment_count>
      <attachid>227969</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-27 13:09:31 -0700</bug_when>
    <thetext>Created attachment 227969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995109</commentid>
    <comment_count>8</comment_count>
      <attachid>227996</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-27 15:42:22 -0700</bug_when>
    <thetext>Created attachment 227996
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995192</commentid>
    <comment_count>9</comment_count>
      <attachid>228014</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-27 17:59:22 -0700</bug_when>
    <thetext>Created attachment 228014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995193</commentid>
    <comment_count>10</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-27 18:00:01 -0700</bug_when>
    <thetext>I won&apos;t be surprised if this isn&apos;t happy on non-Mac ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995200</commentid>
    <comment_count>11</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-27 18:09:44 -0700</bug_when>
    <thetext>Bummer. Needs rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995203</commentid>
    <comment_count>12</comment_count>
      <attachid>228016</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-27 18:15:36 -0700</bug_when>
    <thetext>Created attachment 228016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995293</commentid>
    <comment_count>13</comment_count>
      <attachid>228038</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-28 04:13:49 -0700</bug_when>
    <thetext>Created attachment 228038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995397</commentid>
    <comment_count>14</comment_count>
      <attachid>228070</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-28 11:03:05 -0700</bug_when>
    <thetext>Created attachment 228070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995404</commentid>
    <comment_count>15</comment_count>
      <attachid>228071</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-28 11:21:54 -0700</bug_when>
    <thetext>Created attachment 228071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995419</commentid>
    <comment_count>16</comment_count>
      <attachid>228074</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-28 12:16:26 -0700</bug_when>
    <thetext>Created attachment 228074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995429</commentid>
    <comment_count>17</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-28 12:59:20 -0700</bug_when>
    <thetext>Committed r166422: &lt;http://trac.webkit.org/changeset/166422&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009953</commentid>
    <comment_count>18</comment_count>
      <attachid>228074</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-05-17 00:24:50 -0700</bug_when>
    <thetext>Comment on attachment 228074
Patch

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

&gt; Source/WebCore/rendering/RenderBox.h:729
&gt; +
&gt; +    Timer&lt;RenderBox&gt; m_repaintTimer;

It is not ok to bloat every RenderBox with a timer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009958</commentid>
    <comment_count>19</comment_count>
      <attachid>228074</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-05-17 01:43:50 -0700</bug_when>
    <thetext>Comment on attachment 228074
Patch

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

&gt; Source/WebCore/rendering/RenderBox.cpp:1243
&gt; +    if (controlStates &amp;&amp; controlStates-&gt;needsRepaint())
&gt; +        m_repaintTimer.startOneShot(0);

Triggering paints from paint is not nice. Considering we have managed without such concept so far I suspect there are ways to implement this without introducing it now.

How do we know this does not create an infinite paint loop?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227792</attachid>
            <date>2014-03-25 13:51:12 -0700</date>
            <delta_ts>2014-03-27 13:09:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130736-20140326075047.patch</filename>
            <type>text/plain</type>
            <size>18007</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRlNTdiNzExY2RiODYw
YjQwY2ZkZjJmMjcxNmJjYzFlNGViYTE2Yi4uOWNhMTY1ODNkNmFkMzdjMGRjM2ViY2I0YmFiM2Q3
MGMxNmY2YjRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE0LTAzLTI1ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGZvcm0gY29udHJv
bHMgdGhhdCBtYXkgbmVlZCBpbmNyZW1lbnRhbCByZWRyYXcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDczNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogcGxhdGZvcm0vVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpwYWludCk6
CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVGhlbWVNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06
CisgICAgICAgICgtW1dlYkNvcmVUaGVtZVZpZXcgYWRkU3VidmlldzpdKToKKyAgICAgICAgKFdl
YkNvcmU6OnVwZGF0ZVN0YXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja2JveFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29uZmlndXJlQ2hlY2tib3gpOgorICAgICAgICAoV2ViQ29yZTo6
bmV3Q2hlY2tib3gpOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQ2hlY2tib3gpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWVNYWM6OnBhaW50Q2hlY2tib3gpOgorICAgICAgICAoV2ViQ29yZTo6
VGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRo
ZW1lTWFjOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6cmVtb3ZlQ2xpZW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6flJlbmRlck9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0aW1lckZpcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZTo6dGhlbWVDbGllbnRGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZTo6Y2xlYXJUaGVtZUZvclJlbmRlcmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuaDoKKwogMjAxNC0wMy0yNCAgTWFydGluIEhvZG92YW4gIDxtaG9k
b3ZhbkBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgRU5BQkxFKENTU19HUklEX0xBWU9VVCkg
Z3VhcmQgZm9yIENTU0dyaWRMaW5lTmFtZXNWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKaW5k
ZXggNTA1MDQ2YzRkZTg3ZWM2YWRlYjNiODE4ZWFlY2QwOTdiYmFmMGMzZS4uMDEzZTE4YjkxMGQ1
Y2QyNWQ2MjYwOWY2NzA3MWQ5OTk5NTY4YTkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCkBA
IC0zNSw3ICszNSw5IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotCisgICAgCit0eXBlZGVmIHVuc2lnbmVkIFRoZW1lQ2xpZW50OworICAgIAogY2xh
c3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgU2Nyb2xsVmlldzsKIApAQCAtOTYsOSArOTgsMTIg
QEAgcHVibGljOgogICAgIC8vIFdoZXRoZXIgb3Igbm90IHdoaXRlc3BhY2U6IHByZSBzaG91bGQg
YmUgZm9yY2VkIG9uIGFsd2F5cy4KICAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFJlcXVpcmVzUHJl
V2hpdGVTcGFjZShDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIC8v
IE1ldGhvZCBmb3IgcGFpbnRpbmcgYSBjb250cm9sLiBUaGUgcmVjdCBpcyBpbiB6b29tZWQgY29v
cmRpbmF0ZXMuCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3Rh
dGVzLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxv
YXQgLyp6b29tRmFjdG9yKi8sIFNjcm9sbFZpZXcqKSBjb25zdCB7IH0KLQorICAgIC8vIE1ldGhv
ZCBmb3IgcGFpbnRpbmcgYSBjb250cm9sLiBUaGUgcmVjdCBpcyBpbiB6b29tZWQgY29vcmRpbmF0
ZXMuIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29udHJvbCBuZWVkcyB0byBiZSBwYWludGVkIGFnYWlu
IChlLmcuIGlzIGFuaW1hdGluZykuCisgICAgdmlydHVhbCBib29sIHBhaW50KFRoZW1lQ2xpZW50
LCBDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYgLyp6b29tZWRSZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovLCBTY3JvbGxWaWV3Kikg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICAKKyAgICAvLyBUaGUgdGhlbWUgY2FuIG5vdyBmb3JnZXQg
YWJvdXQgYW55IHN0YXRlIGl0IG1heSBiZSByZW1lbWJlcmluZyBmb3IgdGhlIGNsaWVudC4KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFRoZW1lQ2xpZW50KSB7IH0KKyAgICAKICAgICAv
LyBTb21lIGNvbnRyb2xzIG1heSBzcGlsbCBvdXQgb2YgdGhlaXIgY29udGFpbmVycyAoZS5nLiwg
dGhlIGNoZWNrIG9uIGFuIE9TIFggY2hlY2tib3gpLiAgV2hlbiB0aGVzZSBjb250cm9scyByZXBh
aW50LAogICAgIC8vIHRoZSB0aGVtZSBuZWVkcyB0byBjb21tdW5pY2F0ZSB0aGlzIGluZmxhdGVk
IHJlY3QgdG8gdGhlIGVuZ2luZSBzbyB0aGF0IGl0IGNhbiBpbnZhbGlkYXRlIHRoZSB3aG9sZSBj
b250cm9sLgogICAgIC8vIFRoZSByZWN0IHBhc3NlZCBpbiBpcyBpbiB6b29tZWQgY29vcmRpbmF0
ZXMsIHNvIHRoZSBpbmZsYXRpb24gc2hvdWxkIHRha2UgdGhhdCBpbnRvIGFjY291bnQgYW5kIG1h
a2Ugc3VyZSB0aGUgaW5mbGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVGhlbWVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5o
CmluZGV4IDhiN2U5ODIyZGZiNTQxZDkzMDQyM2E0ZjU3YzcxZmFlYzA5NThlMzAuLjI3NTAxOWJh
ZTE1ZmVmNzllYjg3MDA2ZGEwYjRjMzAzM2IzYTdkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5oCkBAIC01MSwxMiArNTEsMjEgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQgcGFydCkgY29u
c3QgeyByZXR1cm4gcGFydCA9PSBQdXNoQnV0dG9uUGFydDsgfQogCi0gICAgdmlydHVhbCB2b2lk
IHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyopIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBwYWludChUaGVtZUNsaWVudCwgQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMs
IEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yLCBTY3Jv
bGxWaWV3Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRS
ZWN0KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzLCBJbnRSZWN0JiwgZmxvYXQgem9vbUZhY3Rv
cikgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogT25jZSBSZW5kZXJUaGVtZU1hYyBpcyBjb252ZXJ0
ZWQgb3ZlciB0byB1c2UgVGhlbWUgdGhlbiB0aGlzIGNhbiBiZSBpbnRlcm5hbCB0byBUaGVtZU1h
Yy4KICAgICBzdGF0aWMgTlNWaWV3KiBlbnN1cmVkVmlldyhTY3JvbGxWaWV3KiwgQ29udHJvbFN0
YXRlcyk7CiAgICAgc3RhdGljIHZvaWQgc2V0Rm9jdXNSaW5nQ2xpcFJlY3QoY29uc3QgRmxvYXRS
ZWN0Jik7CisgICAgCitwcml2YXRlOgorICAgIGJvb2wgcGFpbnRDaGVja2JveChUaGVtZUNsaWVu
dCwgQ29udHJvbFN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGZsb2F0
LCBTY3JvbGxWaWV3Kik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChUaGVtZUNsaWVu
dCkgb3ZlcnJpZGU7CisgICAgCisgICAgTlNCdXR0b25DZWxsKiBjaGVja2JveEZvckNsaWVudChU
aGVtZUNsaWVudCk7CisgICAgCisgICAgSGFzaE1hcDxUaGVtZUNsaWVudCwgQ29udHJvbFN0YXRl
cz4gbV9jbGllbnRTdGF0ZXM7CisgICAgSGFzaE1hcDxUaGVtZUNsaWVudCwgTlNCdXR0b25DZWxs
Kj4gbV9jbGllbnRCdXR0b25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDg0NTI1Y2NkZjdiYzQzNWI4MDg2
MTIxN2EwYTFlMGJmMGFjYzYzY2EuLmUyYTg4ZmE2OWI3YzA0ZjAxYjVkZTRkY2IxNGQ1YTcxOWY4
ZDY4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTM1LDYg
KzM1LDEwIEBACiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEw
MAorI2ltcG9ydCA8QXBwS2l0L05TQnV0dG9uQ2VsbF9Qcml2YXRlLmg+CisjZW5kaWYKKwogc3Rh
dGljIE5TUmVjdCBmb2N1c1JpbmdDbGlwUmVjdDsKIHN0YXRpYyBCT09MIHRoZW1lV2luZG93SGFz
S2V5QXBwZWFyYW5jZTsKIApAQCAtOTcsNiArMTAxLDEwIEBAIHN0YXRpYyBCT09MIHRoZW1lV2lu
ZG93SGFzS2V5QXBwZWFyYW5jZTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAorLSAodm9pZClhZGRT
dWJ2aWV3OihOU1ZpZXcqKXN1YnZpZXcgeworICAgIC8vIEJ5IGRvaW5nIG5vdGhpbmcgaW4gdGhp
cyBtZXRob2Qgd2UgZXhwbGljaXRseSBmb3JiaWQgY29udHJvbHMgZnJvbSBhZGRpbmcgc3Vidmll
d3MuCisgICAgVU5VU0VEX1BBUkFNKHN1YnZpZXcpOworfQogQGVuZAogCiBAaW1wbGVtZW50YXRp
b24gTlNGb250IChXZWJDb3JlVGhlbWUpCkBAIC0xNzYsNyArMTg0LDcgQEAgc3RhdGljIHZvaWQg
c2V0Q29udHJvbFNpemUoTlNDZWxsKiBjZWxsLCBjb25zdCBJbnRTaXplKiBzaXplcywgY29uc3Qg
SW50U2l6ZSYgbWkKICAgICAgICAgW2NlbGwgc2V0Q29udHJvbFNpemU6KE5TQ29udHJvbFNpemUp
c2l6ZV07CiB9CiAKLXN0YXRpYyB2b2lkIHVwZGF0ZVN0YXRlcyhOU0NlbGwqIGNlbGwsIENvbnRy
b2xTdGF0ZXMgc3RhdGVzKQorc3RhdGljIHZvaWQgdXBkYXRlU3RhdGVzKE5TQ2VsbCogY2VsbCwg
Q29udHJvbFN0YXRlcyBzdGF0ZXMsIGJvb2wgdXNlQW5pbWF0aW9uID0gZmFsc2UpCiB7CiAgICAg
Ly8gSG92ZXIgc3RhdGUgaXMgbm90IHN1cHBvcnRlZCBieSBBcXVhLgogICAgIApAQCAtMTk3LDkg
KzIwNSwxNiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVTdGF0ZXMoTlNDZWxsKiBjZWxsLCBDb250cm9s
U3RhdGVzIHN0YXRlcykKICAgICBib29sIGluZGV0ZXJtaW5hdGUgPSAoc3RhdGVzICYgSW5kZXRl
cm1pbmF0ZVN0YXRlKTsKICAgICBib29sIGNoZWNrZWQgPSBzdGF0ZXMgJiBDaGVja2VkU3RhdGU7
CiAgICAgYm9vbCBvbGRDaGVja2VkID0gW2NlbGwgc3RhdGVdID09IE5TT25TdGF0ZTsKLSAgICBp
ZiAob2xkSW5kZXRlcm1pbmF0ZSAhPSBpbmRldGVybWluYXRlIHx8IGNoZWNrZWQgIT0gb2xkQ2hl
Y2tlZCkKLSAgICAgICAgW2NlbGwgc2V0U3RhdGU6aW5kZXRlcm1pbmF0ZSA/IE5TTWl4ZWRTdGF0
ZSA6IChjaGVja2VkID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZSldOwotICAgICAgICAKKyAgICBp
ZiAob2xkSW5kZXRlcm1pbmF0ZSAhPSBpbmRldGVybWluYXRlIHx8IGNoZWNrZWQgIT0gb2xkQ2hl
Y2tlZCkgeworICAgICAgICBOU0NlbGxTdGF0ZVZhbHVlIG5ld1N0YXRlID0gaW5kZXRlcm1pbmF0
ZSA/IE5TTWl4ZWRTdGF0ZSA6IChjaGVja2VkID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZSk7Cisj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMAorICAgICAgICBbKE5T
QnV0dG9uQ2VsbCopY2VsbCBfc2V0U3RhdGU6bmV3U3RhdGUgYW5pbWF0ZWQ6dXNlQW5pbWF0aW9u
XTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTSh1c2VBbmltYXRpb24pOworICAgICAgICBb
Y2VsbCBzZXRTdGF0ZTpuZXdTdGF0ZV07CisjZW5kaWYKKyAgICB9CisKICAgICAvLyBXaW5kb3cg
aW5hY3RpdmUgc3RhdGUgZG9lcyBub3QgbmVlZCB0byBiZSBjaGVja2VkIGV4cGxpY2l0bHksIHNp
bmNlIHdlIHBhaW50IHBhcmVudGVkIHRvIAogICAgIC8vIGEgdmlldyBpbiBhIHdpbmRvdyB3aG9z
ZSBrZXkgc3RhdGUgY2FuIGJlIGRldGVjdGVkLgogfQpAQCAtMjY2LDM0ICsyODEsNjEgQEAgc3Rh
dGljIExlbmd0aFNpemUgY2hlY2tib3hTaXplKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IExlbmd0
aFNpemUmIHpvb21lZFNpemUsIGYKICAgICAvLyBVc2UgdGhlIGZvbnQgc2l6ZSB0byBkZXRlcm1p
bmUgdGhlIGludHJpbnNpYyB3aWR0aCBvZiB0aGUgY29udHJvbC4KICAgICByZXR1cm4gc2l6ZUZy
b21Gb250KGZvbnQsIHpvb21lZFNpemUsIHpvb21GYWN0b3IsIGNoZWNrYm94U2l6ZXMoKSk7CiB9
Ci0KLXN0YXRpYyBOU0J1dHRvbkNlbGwgKmNoZWNrYm94KENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBj
b25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yKQotewotICAgIHN0YXRp
YyBOU0J1dHRvbkNlbGwgKmNoZWNrYm94Q2VsbDsKLSAgICBpZiAoIWNoZWNrYm94Q2VsbCkgewot
ICAgICAgICBjaGVja2JveENlbGwgPSBbW05TQnV0dG9uQ2VsbCBhbGxvY10gaW5pdF07Ci0gICAg
ICAgIFtjaGVja2JveENlbGwgc2V0QnV0dG9uVHlwZTpOU1N3aXRjaEJ1dHRvbl07Ci0gICAgICAg
IFtjaGVja2JveENlbGwgc2V0VGl0bGU6bmlsXTsKLSAgICAgICAgW2NoZWNrYm94Q2VsbCBzZXRB
bGxvd3NNaXhlZFN0YXRlOllFU107Ci0gICAgICAgIFtjaGVja2JveENlbGwgc2V0Rm9jdXNSaW5n
VHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07Ci0gICAgfQogICAgIAorc3RhdGljIHZvaWQg
Y29uZmlndXJlQ2hlY2tib3goTlNDZWxsKiBjZWxsLCBDb250cm9sU3RhdGVzIHN0YXRlcywgY29u
c3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgYm9vbCBpc1N0YXRlQ2hh
bmdlKQorewogICAgIC8vIFNldCB0aGUgY29udHJvbCBzaXplIGJhc2VkIG9mZiB0aGUgcmVjdGFu
Z2xlIHdlJ3JlIHBhaW50aW5nIGludG8uCi0gICAgc2V0Q29udHJvbFNpemUoY2hlY2tib3hDZWxs
LCBjaGVja2JveFNpemVzKCksIHpvb21lZFJlY3Quc2l6ZSgpLCB6b29tRmFjdG9yKTsKLQorICAg
IHNldENvbnRyb2xTaXplKGNlbGwsIGNoZWNrYm94U2l6ZXMoKSwgem9vbWVkUmVjdC5zaXplKCks
IHpvb21GYWN0b3IpOworICAgIAogICAgIC8vIFVwZGF0ZSB0aGUgdmFyaW91cyBzdGF0ZXMgd2Ug
cmVzcG9uZCB0by4KLSAgICB1cGRhdGVTdGF0ZXMoY2hlY2tib3hDZWxsLCBzdGF0ZXMpOworICAg
IHVwZGF0ZVN0YXRlcyhjZWxsLCBzdGF0ZXMsIGlzU3RhdGVDaGFuZ2UpOworfQogICAgIAorc3Rh
dGljIE5TQnV0dG9uQ2VsbCAqbmV3Q2hlY2tib3goKQoreworICAgIE5TQnV0dG9uQ2VsbCAqY2hl
Y2tib3hDZWxsID0gW1tOU0J1dHRvbkNlbGwgYWxsb2NdIGluaXRdOworICAgIFtjaGVja2JveENl
bGwgc2V0QnV0dG9uVHlwZTpOU1N3aXRjaEJ1dHRvbl07CisgICAgW2NoZWNrYm94Q2VsbCBzZXRU
aXRsZTpuaWxdOworICAgIFtjaGVja2JveENlbGwgc2V0QWxsb3dzTWl4ZWRTdGF0ZTpZRVNdOwor
ICAgIFtjaGVja2JveENlbGwgc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlv
cl07CiAgICAgcmV0dXJuIGNoZWNrYm94Q2VsbDsKIH0KLQorICAgIAorc3RhdGljIE5TQnV0dG9u
Q2VsbCAqc2hhcmVkQ2hlY2tib3goQ29udHJvbFN0YXRlcyBzdGF0ZXMsIGNvbnN0IEludFJlY3Qm
IHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IpCit7CisgICAgc3RhdGljIE5TQnV0dG9uQ2Vs
bCAqY2hlY2tib3hDZWxsOworICAgIGlmICghY2hlY2tib3hDZWxsKQorICAgICAgICBjaGVja2Jv
eENlbGwgPSBuZXdDaGVja2JveCgpOworICAgIAorICAgIGNvbmZpZ3VyZUNoZWNrYm94KGNoZWNr
Ym94Q2VsbCwgc3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yLCBmYWxzZSk7CisgICAgcmV0
dXJuIGNoZWNrYm94Q2VsbDsKK30KKyAgICAKIC8vIEZJWE1FOiBTaGFyZSBtb3JlIGNvZGUgd2l0
aCByYWRpbyBidXR0b25zLgotc3RhdGljIHZvaWQgcGFpbnRDaGVja2JveChDb250cm9sU3RhdGVz
IHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRS
ZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KQorYm9vbCBUaGVt
ZU1hYzo6cGFpbnRDaGVja2JveChUaGVtZUNsaWVudCBjbGllbnQsIENvbnRyb2xTdGF0ZXMgc3Rh
dGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3Qs
IGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcpCiB7CisgICAgYm9vbCBk
cmF3U3RhdGljYWxseSA9IHRydWU7CisKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
KyAgICAKKyAgICBOU0J1dHRvbkNlbGwgKmNoZWNrYm94Q2VsbDsKKworICAgIGJvb2wgaXNTdGF0
ZUNoYW5nZSA9IGZhbHNlOworICAgIGlmIChtX2NsaWVudFN0YXRlcy5jb250YWlucyhjbGllbnQp
KSB7CisgICAgICAgIENvbnRyb2xTdGF0ZXMgZXhpc3RpbmdTdGF0ZXMgPSBtX2NsaWVudFN0YXRl
cy5nZXQoY2xpZW50KTsKKyAgICAgICAgaXNTdGF0ZUNoYW5nZSA9IGV4aXN0aW5nU3RhdGVzICE9
IHN0YXRlczsKKyAgICB9CisgICAgCisgICAgaWYgKG1fY2xpZW50QnV0dG9ucy5jb250YWlucyhj
bGllbnQpKSB7CisgICAgICAgIGNoZWNrYm94Q2VsbCA9IG1fY2xpZW50QnV0dG9ucy5nZXQoY2xp
ZW50KTsKKyAgICAgICAgaWYgKGlzU3RhdGVDaGFuZ2UpCisgICAgICAgICAgICBjb25maWd1cmVD
aGVja2JveChjaGVja2JveENlbGwsIHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3RvciwgaXNT
dGF0ZUNoYW5nZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY2hlY2tib3hDZWxsID0gbmV3Q2hl
Y2tib3goKTsKKyAgICAgICAgbV9jbGllbnRCdXR0b25zLmFkZChjbGllbnQsIGNoZWNrYm94Q2Vs
bCk7CisgICAgICAgIGNvbmZpZ3VyZUNoZWNrYm94KGNoZWNrYm94Q2VsbCwgc3RhdGVzLCB6b29t
ZWRSZWN0LCB6b29tRmFjdG9yLCBpc1N0YXRlQ2hhbmdlKTsKKyAgICB9CiAKLSAgICAvLyBEZXRl
cm1pbmUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUgY29udHJvbCBhbmQgcHJl
cGFyZSB0aGUgY2VsbCBmb3IgcGFpbnRpbmcuCi0gICAgTlNCdXR0b25DZWxsICpjaGVja2JveENl
bGwgPSBjaGVja2JveChzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOwogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CiAKICAgICBOU0NvbnRy
b2xTaXplIGNvbnRyb2xTaXplID0gW2NoZWNrYm94Q2VsbCBjb250cm9sU2l6ZV07CkBAIC0zMTIs
MTIgKzM1NCwyOSBAQCBzdGF0aWMgdm9pZCBwYWludENoZWNrYm94KENvbnRyb2xTdGF0ZXMgc3Rh
dGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAKICAgICBMb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwogICAgIE5TVmlldyAqdmlldyA9
IFRoZW1lTWFjOjplbnN1cmVkVmlldyhzY3JvbGxWaWV3LCBzdGF0ZXMpOwotICAgIFtjaGVja2Jv
eENlbGwgZHJhd1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6dmlld107Cisj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMAorICAgIGRyYXdTdGF0
aWNhbGx5ID0gIVtjaGVja2JveENlbGwgX3N0YXRlQW5pbWF0aW9uUnVubmluZ107CisjZW5kaWYK
KyAgICBpZiAoZHJhd1N0YXRpY2FsbHkpCisgICAgICAgIFtjaGVja2JveENlbGwgZHJhd1dpdGhG
cmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6dmlld107CisgICAgZWxzZSB7CisgICAg
ICAgIGNvbnRleHQtPnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgp
KTsKKyAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgICAgIGNv
bnRleHQtPnRyYW5zbGF0ZSgwLCAtaW5mbGF0ZWRSZWN0LmhlaWdodCgpKTsKKyNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwCisgICAgICAgIFtjaGVja2JveENlbGwg
X3JlbmRlckN1cnJlbnRBbmltYXRpb25GcmFtZUluQ29udGV4dDpjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKSBhdExvY2F0aW9uOk5TTWFrZVBvaW50KDAsIDApXTsKKyNlbmRpZgorICAgIH0KICAg
ICBpZiAoc3RhdGVzICYgRm9jdXNTdGF0ZSkKICAgICAgICAgW2NoZWNrYm94Q2VsbCBfd2ViX2Ry
YXdGb2N1c1JpbmdXaXRoRnJhbWU6TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5WaWV3OnZpZXddOwog
ICAgIFtjaGVja2JveENlbGwgc2V0Q29udHJvbFZpZXc6bmlsXTsKICAgICAKKyAgICBtX2NsaWVu
dFN0YXRlcy5zZXQoY2xpZW50LCBzdGF0ZXMpOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMDAKKyAgICBkcmF3U3RhdGljYWxseSA9ICFbY2hlY2tib3hDZWxsIF9z
dGF0ZUFuaW1hdGlvblJ1bm5pbmddOworI2VuZGlmCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUworICAgIHJldHVybiAhZHJhd1N0YXRpY2FsbHk7CiB9CiAKIC8vIFJhZGlvIEJ1dHRvbnMK
QEAgLTY5Niw3ICs3NTUsNyBAQCB2b2lkIFRoZW1lTWFjOjppbmZsYXRlQ29udHJvbFBhaW50UmVj
dChDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywgSQogICAgICAgICBjYXNl
IENoZWNrYm94UGFydDogewogICAgICAgICAgICAgLy8gV2UgaW5mbGF0ZSB0aGUgcmVjdCBhcyBu
ZWVkZWQgdG8gYWNjb3VudCBmb3IgcGFkZGluZyBpbmNsdWRlZCBpbiB0aGUgY2VsbCB0byBhY2Nv
bW1vZGF0ZSB0aGUgY2hlY2tib3gKICAgICAgICAgICAgIC8vIHNoYWRvdyIgYW5kIHRoZSBjaGVj
ay4gIFdlIGRvbid0IGNvbnNpZGVyIHRoaXMgcGFydCBvZiB0aGUgYm91bmRzIG9mIHRoZSBjb250
cm9sIGluIFdlYktpdC4KLSAgICAgICAgICAgIE5TQ2VsbCAqY2VsbCA9IGNoZWNrYm94KHN0YXRl
cywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBOU0NlbGwgKmNlbGwgPSBz
aGFyZWRDaGVja2JveChzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOwogICAgICAgICAg
ICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFtjZWxsIGNvbnRyb2xTaXplXTsKICAgICAg
ICAgICAgIEludFNpemUgem9vbWVkU2l6ZSA9IGNoZWNrYm94U2l6ZXMoKVtjb250cm9sU2l6ZV07
CiAgICAgICAgICAgICB6b29tZWRTaXplLnNldEhlaWdodCh6b29tZWRTaXplLmhlaWdodCgpICog
em9vbUZhY3Rvcik7CkBAIC03NDUsMTIgKzgwNCwxMSBAQCB2b2lkIFRoZW1lTWFjOjppbmZsYXRl
Q29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywg
SQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAotdm9pZCBUaGVtZU1hYzo6cGFp
bnQoQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3Rvciwg
U2Nyb2xsVmlldyogc2Nyb2xsVmlldykgY29uc3QKK2Jvb2wgVGhlbWVNYWM6OnBhaW50KFRoZW1l
Q2xpZW50IGNsaWVudCwgQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQg
em9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldykKIHsKICAgICBzd2l0Y2ggKHBhcnQp
IHsKICAgICAgICAgY2FzZSBDaGVja2JveFBhcnQ6Ci0gICAgICAgICAgICBwYWludENoZWNrYm94
KHN0YXRlcywgY29udGV4dCwgem9vbWVkUmVjdCwgem9vbUZhY3Rvciwgc2Nyb2xsVmlldyk7Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBwYWludENoZWNrYm94KGNsaWVu
dCwgc3RhdGVzLCBjb250ZXh0LCB6b29tZWRSZWN0LCB6b29tRmFjdG9yLCBzY3JvbGxWaWV3KTsK
ICAgICAgICAgY2FzZSBSYWRpb1BhcnQ6CiAgICAgICAgICAgICBwYWludFJhZGlvKHN0YXRlcywg
Y29udGV4dCwgem9vbWVkUmVjdCwgem9vbUZhY3Rvciwgc2Nyb2xsVmlldyk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTc2Niw2ICs4MjQsMTQgQEAgdm9pZCBUaGVtZU1hYzo6cGFpbnQoQ29udHJv
bFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY28KICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7CiB9Ci0KKyAgICAKK3ZvaWQgVGhlbWVNYWM6OnJlbW92ZUNsaWVudChUaGVtZUNsaWVudCBj
bGllbnQpCit7CisgICAgbV9jbGllbnRTdGF0ZXMucmVtb3ZlKGNsaWVudCk7CisgICAgbV9jbGll
bnRCdXR0b25zLnJlbW92ZShjbGllbnQpOworfQorICAgIAorICAgIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAwMGI5YmE5NzYxYzI1NzYyYjE4NWU1
ZTk2MDYzMjYzYjVhZDA0NTk1Li44NjM0YWQ4ZmUwYTVkMTY0MWQwNTZmNGU3ODJiODgyZTc2MTRk
MzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTIz
LDYgKzEyMyw5IEBAIFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0KE5vZGUmIG5vZGUpCiAKIFJl
bmRlck9iamVjdDo6flJlbmRlck9iamVjdCgpCiB7CisjaWYgVVNFKE5FV19USEVNRSkKKyAgICB0
aGVtZSgpLmNsZWFyVGhlbWVGb3JSZW5kZXJlcih0aGlzKTsKKyNlbmRpZgogI2lmbmRlZiBOREVC
VUcKICAgICBBU1NFUlQoIW1faGFzQVhPYmplY3QpOwogICAgIHJlbmRlck9iamVjdENvdW50ZXIu
ZGVjcmVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRl
eCA1OGVmMzdhZWM1N2RiMDc3MWVkNWRhNTJlMjllY2NlODQyZTk3ODIzLi4yMTA3OWU4YWNhYWYx
MTY1YWRiNDk4NWQ4ZTBmZWExOTE5MDhlYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHAKQEAgLTY2LDcgKzY2LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQorICAgIAorc3RhdGljIFRoZW1lQ2xpZW50IHNf
bmV4dFRoZW1lQ2xpZW50ID0gMDsKKyAgICAKIHN0YXRpYyBDb2xvciYgY3VzdG9tRm9jdXNSaW5n
Q29sb3IoKQogewogICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgY29s
b3IsICgpKTsKQEAgLTI2Miw2ICsyNjQsMjAgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5
bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAg
IH0KIH0KIAordm9pZCBSZW5kZXJUaGVtZTo6dGltZXJGaXJlZChUaW1lcjxSZW5kZXJUaGVtZT4m
KQoreworICAgIC8vIEZJWE1FOiBTaG91bGQgY2hlY2sgaWYgdGhlIGRvY3VtZW50IGhhcyBiZWVu
IHB1dCBpbnRvIHRoZSBwYWdlIGNhY2hlLgorCisgICAgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVj
dCo+IHJlcGFpbnRzID0gbV9yZXBhaW50TGlzdDsKKyAgICBtX3JlcGFpbnRMaXN0LmNsZWFyKCk7
CisKKyAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0IDogcmVwYWludHMp
IHsKKyAgICAgICAgLy8gT25seSByZXBhaW50IGlmIHdlIHN0aWxsIGNvbnNpZGVyIHRoaXMgYW4g
YWN0aXZlIG9iamVjdC4KKyAgICAgICAgaWYgKG1fdGhlbWVDbGllbnRzLmNvbnRhaW5zKHJlbmRl
ck9iamVjdCkpCisgICAgICAgICAgICByZW5kZXJPYmplY3QtPnJlcGFpbnQoKTsKKyAgICB9Cit9
CisKIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgLy8gSWYgcGFpbnRpbmcg
aXMgZGlzYWJsZWQsIGJ1dCB3ZSBhcmVuJ3QgdXBkYXRpbmcgY29udHJvbCB0aW50cywgdGhlbiBq
dXN0IGJhaWwuCkBAIC0yODYsNyArMzAyLDEzIEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlCiAg
ICAgY2FzZSBEZWZhdWx0QnV0dG9uUGFydDoKICAgICBjYXNlIEJ1dHRvblBhcnQ6CiAgICAgY2Fz
ZSBJbm5lclNwaW5CdXR0b25QYXJ0OgotICAgICAgICBtX3RoZW1lLT5wYWludChwYXJ0LCBjb250
cm9sU3RhdGVzRm9yUmVuZGVyZXIobyksIGNvbnN0X2Nhc3Q8R3JhcGhpY3NDb250ZXh0Kj4ocGFp
bnRJbmZvLmNvbnRleHQpLCByLCBvLT5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwgJm8tPnZpZXco
KS5mcmFtZVZpZXcoKSk7CisgICAgICAgIGlmIChtX3RoZW1lLT5wYWludCh0aGVtZUNsaWVudEZv
clJlbmRlcmVyKG8pLCBwYXJ0LCBjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobyksIGNvbnN0X2Nh
c3Q8R3JhcGhpY3NDb250ZXh0Kj4ocGFpbnRJbmZvLmNvbnRleHQpLCByLCBvLT5zdHlsZSgpLmVm
ZmVjdGl2ZVpvb20oKSwgJm8tPnZpZXcoKS5mcmFtZVZpZXcoKSkpIHsKKyAgICAgICAgICAgIGlm
ICghbV90aW1lcikKKyAgICAgICAgICAgICAgICBtX3RpbWVyID0gYWRvcHRQdHIobmV3IFRpbWVy
PFJlbmRlclRoZW1lPih0aGlzLCAmUmVuZGVyVGhlbWU6OnRpbWVyRmlyZWQpKTsKKworICAgICAg
ICAgICAgbV9yZXBhaW50TGlzdC5hcHBlbmQobyk7CisgICAgICAgICAgICBtX3RpbWVyLT5zdGFy
dE9uZVNob3QoMCk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMTI5Niw1ICsxMzE4LDIzIEBAIFN0cmluZyBSZW5kZXJU
aGVtZTo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgRmlsZUxpc3QqIGZpbGVMaXN0LCBjb25z
dCBGb250JiBmCiAKICAgICByZXR1cm4gU3RyaW5nVHJ1bmNhdG9yOjpjZW50ZXJUcnVuY2F0ZShz
dHJpbmcsIHdpZHRoLCBmb250LCBTdHJpbmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3Mp
OwogfQotCisgICAgCisjaWYgVVNFKE5FV19USEVNRSkKK1RoZW1lQ2xpZW50IFJlbmRlclRoZW1l
Ojp0aGVtZUNsaWVudEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbykKK3sKKyAgICBp
ZiAoIW1fdGhlbWVDbGllbnRzLmNvbnRhaW5zKG8pKQorICAgICAgICBtX3RoZW1lQ2xpZW50cy5h
ZGQobywgKytzX25leHRUaGVtZUNsaWVudCk7CisgICAgCisgICAgcmV0dXJuIG1fdGhlbWVDbGll
bnRzLmdldChvKTsKK30KKyAgICAKK3ZvaWQgUmVuZGVyVGhlbWU6OmNsZWFyVGhlbWVGb3JSZW5k
ZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8pCit7CisgICAgaWYgKG1fdGhlbWVDbGllbnRzLmNv
bnRhaW5zKG8pKSB7CisgICAgICAgIG1fdGhlbWUtPnJlbW92ZUNsaWVudChtX3RoZW1lQ2xpZW50
cy5nZXQobykpOworICAgICAgICBtX3RoZW1lQ2xpZW50cy5yZW1vdmUobyk7CisgICAgfQorfQor
I2VuZGlmCisgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5oCmluZGV4IDY4NTQ2MzQ2NzM4OTgxYzNhM2FhMmRjNGZiZjk5N2E1MTcw
NmZkYjguLjAyMDk0OWI4YzhjZThmNmE0YzhmMTgzNTY3ZDY5YWNhODY3MmIyMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTM2Nyw3ICszNjgsMTIgQEAgcHJvdGVjdGVkOgogI2lmIEVOQUJMRShJ
TUFHRV9DT05UUk9MUykKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRJbWFnZUNvbnRyb2xzQnV0dG9u
KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVy
biB0cnVlOyB9CiAjZW5kaWYKLQorICAgIAorI2lmIFVTRShORVdfVEhFTUUpCisgICAgVGhlbWVD
bGllbnQgdGhlbWVDbGllbnRGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsKKyAgICB2
b2lkIHRpbWVyRmlyZWQoVGltZXI8UmVuZGVyVGhlbWU+Jik7CisjZW5kaWYKKyAgICAKIHB1Ymxp
YzoKICAgICAvLyBNZXRob2RzIGZvciBzdGF0ZSBxdWVyeWluZwogICAgIENvbnRyb2xTdGF0ZXMg
Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3Q7CkBA
IC0zODIsNyArMzg4LDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzU3BpblVwQnV0dG9uUGFydEhv
dmVyZWQoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgYm9vbCBpc1JlYWRPbmx5Q29u
dHJvbChjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICBib29sIGlzRGVmYXVsdChjb25z
dCBSZW5kZXJPYmplY3QqKSBjb25zdDsKLQorICAgIAorI2lmIFVTRShORVdfVEhFTUUpCisgICAg
dm9pZCBjbGVhclRoZW1lRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7CisjZW5kaWYK
KyAgICAKIHByaXZhdGU6CiAgICAgbXV0YWJsZSBDb2xvciBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcjsKICAgICBtdXRhYmxlIENvbG9yIG1faW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3I7CkBAIC00MDIsNiArNDEyLDkgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShORVdfVEhF
TUUpCiAgICAgVGhlbWUqIG1fdGhlbWU7IC8vIFRoZSBwbGF0Zm9ybS1zcGVjaWZpYyB0aGVtZS4K
KyAgICBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVjdCosIFRoZW1lQ2xpZW50PiBtX3RoZW1lQ2xp
ZW50czsKKyAgICBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4gbV9yZXBhaW50TGlzdDsKKyAg
ICBPd25QdHI8VGltZXI8UmVuZGVyVGhlbWU+PiBtX3RpbWVyOwogI2VuZGlmCiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227969</attachid>
            <date>2014-03-27 13:09:31 -0700</date>
            <delta_ts>2014-03-27 15:42:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130736-20140328070845.patch</filename>
            <type>text/plain</type>
            <size>46121</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRlNTdiNzExY2RiODYw
YjQwY2ZkZjJmMjcxNmJjYzFlNGViYTE2Yi4uMDI3Nzg5MTA4OGZkNDQyNjgwZWI3YzA1YjUyYjhi
YzAxZTMxNTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE0LTAzLTI3ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGZvcm0gY29udHJv
bHMgdGhhdCBtYXkgbmVlZCBpbmNyZW1lbnRhbCByZWRyYXcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDczNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBST1RPVFlQRSBQQVRDSCEhCisKKyAgICAgICAg
QXMgeW91IGNhbiBzZWUgdGhpcyBpcyBhIGZhaXIgYml0IGxhcmdlciB0aGFuIHRoZQorICAgICAg
ICBsYXN0IHBhdGNoLiBEb3duc2lkZXM6CisgICAgICAgIAorICAgICAgICAtIHBlciBSZW5kZXJC
b3ggdGltZXIgZm9yIHJlcGFpbnRzIHJhdGhlciB0aGFuIGhhdmluZworICAgICAgICAgIGEgc2lu
Z2xlIHRpbWVyIGluIFJlbmRlclRoZW1lCisgICAgICAgIC0gd2UncmUgc3RpbGwga2VlcGluZyBh
IGNvbnRyb2wgaW5zdGFuY2UgcGVyIHJlbmRlcmVyCisKKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6c2V0SG92ZXJlZCk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVD
aGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzYWJsZWRTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVhZE9ubHlB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0Q2hlY2tlZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRJbmRldGVybWluYXRlKToKKyAgICAgICAg
KiBodG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRp
b25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vVGhlbWUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpzZWxlY3Rpb25Db2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpUaGVtZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmluZmxhdGVDb250
cm9sUGFpbnRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZVR5cGVzLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tOgorICAgICAgICAoLVtXZWJDb3JlVGhlbWVWaWV3IGFkZFN1YnZpZXc6XSk6CisgICAg
ICAgIChXZWJDb3JlOjp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydENv
bnRyb2xTdGF0ZXNUb1RoZW1lRHJhd1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrYm94
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb25maWd1cmVDaGVja2JveCk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVDaGVja2JveENlbGwpOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQ2hl
Y2tib3hDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50Q2hlY2tib3gpOgorICAgICAgICAo
V2ViQ29yZTo6cmFkaW8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRSYWRpbyk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRVcEJ1dHRvbkNlbGwpOgorICAgICAgICAoV2ViQ29yZTo6YnV0dG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50
U3RlcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZW5zdXJlZFZpZXcpOgorICAg
ICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja2Jv
eCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OlJlbmRlckJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6On5SZW5kZXJCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludEJv
eERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bGF5b3V0T3ZlcmZs
b3dSZWN0Rm9yUHJvcGFnYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb250cm9sU3RhdGVzUmVuZGVyZXJNYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxl
bWVudDo6aGFzQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OmNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50OjpyZW1vdmVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6YWRkQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdFJlcGFpbnRSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpzdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OnVwZGF0ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6ZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y29udHJvbFN0YXRlc0ZvclJlbmRl
cmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZU1hYzo6ZG9jdW1lbnRWaWV3Rm9yKToKKwogMjAxNC0wMy0yNCAgTWFydGluIEhvZG92
YW4gIDxtaG9kb3ZhbkBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgRU5BQkxFKENTU19HUklE
X0xBWU9VVCkgZ3VhcmQgZm9yIENTU0dyaWRMaW5lTmFtZXNWYWx1ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRiYmIzYWZiNDBj
ODk1MmU3Y2NmMmM0YmNjMjhlZTY2ZTFkNjkwMDQuLjdkNmNjYWMzN2ExNmQxOTY4NDkyOTM2MWM1
OGYxNTkxNWM5OWQwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTgwMzIsNiArODAzMiw3IEBACiAJCTMxMDc4Q0M0MTg4MEE2
QTYwMDgwOTlEQyAvKiBPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmlkbDsgcGF0aCA9IGNhbnZhcy9P
RVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzEwNzhDQzUxODgwQUFBQTAwODA5OURDIC8qIEpTT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVh
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09FU1RleHR1cmVI
YWxmRmxvYXRMaW5lYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA3OEND
NjE4ODBBQUFBMDA4MDk5REMgLyogSlNPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTFDMDhCQzE4RTM1RDY4MDBCNjU2MTUg
LyogQ29udHJvbFN0YXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250
cm9sU3RhdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMjg4RTZFMEUzMDA1
RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyODhFNkYwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENT
U0tleWZyYW1lUnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRD
U1NLZXlmcmFtZVJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyODhFNzAw
RTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDg3NCw2ICsyMDg3NSw3IEBACiAJCUJDRjFB
NUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMzExQzA4QkMxOEUzNUQ2ODAwQjY1NjE1IC8qIENvbnRy
b2xTdGF0ZXMuaCAqLywKIAkJCQk0OUU5MTJBNDBFRkFDOEU2MDA5RDBDQUYgLyogYW5pbWF0aW9u
ICovLAogCQkJCUZEMzE2MDQwMTJCMDI2QTMwMEMxQTM1OSAvKiBhdWRpbyAqLywKIAkJCQkxQUU0
MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
MzUwNzQ2MTZhMWQ2NzQ0MDIwMDQ1M2Y1N2ExYWU3Y2VlM2ExNTJiOC4uZDE3NDlkMGQ2ZDNlMjM5
MzhkOTA3YmFlYWRlYzFmYTVkN2VlYjJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNDg3
LDcgKzQ4Nyw3IEBAIHZvaWQgRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZmxhZywgYm9vbCBwYXVz
ZSkKICAgICBpZiAocmVhY3RzVG9QcmVzcykKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygp
OwogCi0gICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYmIHJlbmRl
cmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFByZXNzZWRTdGF0ZSkpCisg
ICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYmIHJlbmRlcmVyKCkt
PnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIENvbnRyb2xTdGF0ZXM6OlByZXNzZWRT
dGF0ZSkpCiAgICAgICAgIHJlYWN0c1RvUHJlc3MgPSB0cnVlOwogCiAgICAgLy8gVGhlIHJlc3Qg
b2YgdGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIGEgZmVhdHVyZSB0aGF0IG9ubHkgd29ya3MgaWYg
dGhlCkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBFbGVtZW50OjpzZXRIb3ZlcmVkKGJvb2wgZmxh
ZykKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkt
PnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0
YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBIb3ZlclN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+
dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6SG92ZXJTdGF0
ZSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoYm9vbCBhbGlnblRvVG9wKSAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggNjEwMWY2NGJk
NjhmY2UyMjgwMGI0Njc1MzFjMjkzYjJiMWM0MTIwOC4uNDlhODc4M2NjOTNjODZkYzg4NTEyNTEx
Y2ZmMTY3YjI0YTZmNTE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAKQEAgLTE3NDUsNyArMTc0NSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OmZvY3VzZWRP
ckFjdGl2ZVN0YXRlQ2hhbmdlZCgpCiAgICAgICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNh
bGMoKTsKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5k
ZXJlcigpKQogICAgICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5zdHlsZSgpLmhh
c0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJlci0+dGhlbWUoKS5zdGF0ZUNo
YW5nZWQocmVuZGVyZXIsIEZvY3VzU3RhdGUpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyLT50
aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlciwgQ29udHJvbFN0YXRlczo6Rm9jdXNTdGF0ZSk7
CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcAppbmRleCAzYjI1Y2IwZDNjOGRkZTVhMTJjMzU2OGJkZGY2NGZmNjFkNmRm
MWNkLi4wZTA1N2UxYjUxMGJjYTFiOTJhOGY1YjRlMWU0MWVjMmQ2ZTc4MDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTE1NCw3ICsx
NTQsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc2FibGVkU3RhdGVDaGFuZ2Vk
KCkKICAgICBzZXROZWVkc1dpbGxWYWxpZGF0ZUNoZWNrKCk7CiAgICAgZGlkQWZmZWN0U2VsZWN0
b3IoQWZmZWN0ZWRTZWxlY3RvckRpc2FibGVkIHwgQWZmZWN0ZWRTZWxlY3RvckVuYWJsZWQpOwog
ICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgp
KQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBF
bmFibGVkU3RhdGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChy
ZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpFbmFibGVkU3RhdGUpOwogfQogCiB2b2lkIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRPbmx5QXR0cmlidXRlQ2hhbmdlZCgpCkBAIC0xNjIsNyAr
MTYyLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZWFkT25seUF0dHJpYnV0ZUNo
YW5nZWQoKQogICAgIHNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKTsKICAgICBzZXROZWVkc1N0
eWxlUmVjYWxjKCk7CiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5o
YXNBcHBlYXJhbmNlKCkpCi0gICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2Vk
KHJlbmRlcmVyKCksIFJlYWRPbmx5U3RhdGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgp
LnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpSZWFkT25seVN0YXRlKTsK
IH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5n
ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNThhOTQw
Y2Q2MTBlOTAyNTgxOTMwMmZlYjI4N2UzZDI0ZTBkYjdhOC4uODA0MDY5Y2U0Mzc0ZmI2OWQwMzEx
NWQ1NWRlNzI2ODhmMDNkNTVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCkBAIC04NTksNyArODU5LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVj
a2VkKGJvb2wgbm93Q2hlY2tlZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEIKICAgICBp
ZiAoQ2hlY2tlZFJhZGlvQnV0dG9ucyogYnV0dG9ucyA9IGNoZWNrZWRSYWRpb0J1dHRvbnMoKSkK
ICAgICAgICAgICAgIGJ1dHRvbnMtPnVwZGF0ZUNoZWNrZWRTdGF0ZSh0aGlzKTsKICAgICBpZiAo
cmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAg
ICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0
YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIo
KSwgQ29udHJvbFN0YXRlczo6Q2hlY2tlZFN0YXRlKTsKICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hl
Y2soKTsKIAogICAgIC8vIElkZWFsbHkgd2UnZCBkbyB0aGlzIGZyb20gdGhlIHJlbmRlciB0cmVl
IChtYXRjaGluZwpAQCAtODkzLDcgKzg5Myw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0
SW5kZXRlcm1pbmF0ZShib29sIG5ld1ZhbHVlKQogICAgIGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVj
dGVkU2VsZWN0b3JJbmRldGVybWluYXRlKTsKIAogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRl
cmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVt
ZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDaGVja2VkU3RhdGUpOworICAgICAgICByZW5k
ZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpD
aGVja2VkU3RhdGUpOwogfQogCiBpbnQgSFRNTElucHV0RWxlbWVudDo6c2l6ZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IDllMzZmYTljZjRk
NjYxYWFmMGJjM2JkZGYzN2U5ZTUxMjRkZDNhODEuLjQ5ZjQ4YmYzODFlOWI0NTA0OTQ0ZmJhMDU0
MDVhOTlkNDc5MzE2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICAgICAg
aWYgKG9sZERpc2FibGVkICE9IG1fZGlzYWJsZWQpIHsKICAgICAgICAgICAgIGRpZEFmZmVjdFNl
bGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JEaXNhYmxlZCB8IEFmZmVjdGVkU2VsZWN0b3JFbmFibGVk
KTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFz
QXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVD
aGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJsZWRTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVy
ZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6RW5h
YmxlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBzZWxlY3RlZEF0
dHIpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBtYXRjaCB3aGF0IHRoZSBIVE1M
IHNwZWNpZmljYXRpb24gc2F5cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCmluZGV4IDUwNTA0NmM0
ZGU4N2VjNmFkZWIzYjgxOGVhZWNkMDk3YmJhZjBjM2UuLmZiMDFhN2ExYzVlNDgxNmE2ZTA0NTAz
YTYyNzUxMzAyNmQyNGE4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ro
ZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaApAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBUaGVtZV9oCiAKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNv
bnRyb2xTdGF0ZXMuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgog
I2luY2x1ZGUgIkxlbmd0aEJveC5oIgpAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGNvbnRyb2xEcmF3c0ZvY3VzT3V0bGluZShDb250cm9sUGFydCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gTWV0aG9kcyBmb3Igb2J0YWluaW5nIHBsYXRmb3JtLXNw
ZWNpZmljIGNvbG9ycy4KLSAgICB2aXJ0dWFsIENvbG9yIHNlbGVjdGlvbkNvbG9yKENvbnRyb2xQ
YXJ0LCBDb250cm9sU3RhdGUsIFNlbGVjdGlvblBhcnQpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7
IH0KKyAgICB2aXJ0dWFsIENvbG9yIHNlbGVjdGlvbkNvbG9yKENvbnRyb2xQYXJ0LCBjb25zdCBD
b250cm9sU3RhdGVzKiwgU2VsZWN0aW9uUGFydCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQog
ICAgIHZpcnR1YWwgQ29sb3IgdGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1
cm4gQ29sb3IoKTsgfQogICAgIAogICAgIC8vIENTUyBzeXN0ZW0gY29sb3JzIGFuZCBmb250cwpA
QCAtOTcsMTMgKzk4LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFJlcXVp
cmVzUHJlV2hpdGVTcGFjZShDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAog
ICAgIC8vIE1ldGhvZCBmb3IgcGFpbnRpbmcgYSBjb250cm9sLiBUaGUgcmVjdCBpcyBpbiB6b29t
ZWQgY29vcmRpbmF0ZXMuCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250
cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiAvKnpvb21lZFJlY3Qq
LywgZmxvYXQgLyp6b29tRmFjdG9yKi8sIFNjcm9sbFZpZXcqKSBjb25zdCB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMqLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBJbnRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8s
IFNjcm9sbFZpZXcqKSB7IH0KIAogICAgIC8vIFNvbWUgY29udHJvbHMgbWF5IHNwaWxsIG91dCBv
ZiB0aGVpciBjb250YWluZXJzIChlLmcuLCB0aGUgY2hlY2sgb24gYW4gT1MgWCBjaGVja2JveCku
ICBXaGVuIHRoZXNlIGNvbnRyb2xzIHJlcGFpbnQsCiAgICAgLy8gdGhlIHRoZW1lIG5lZWRzIHRv
IGNvbW11bmljYXRlIHRoaXMgaW5mbGF0ZWQgcmVjdCB0byB0aGUgZW5naW5lIHNvIHRoYXQgaXQg
Y2FuIGludmFsaWRhdGUgdGhlIHdob2xlIGNvbnRyb2wuCiAgICAgLy8gVGhlIHJlY3QgcGFzc2Vk
IGluIGlzIGluIHpvb21lZCBjb29yZGluYXRlcywgc28gdGhlIGluZmxhdGlvbiBzaG91bGQgdGFr
ZSB0aGF0IGludG8gYWNjb3VudCBhbmQgbWFrZSBzdXJlIHRoZSBpbmZsYXRpb24KICAgICAvLyBh
bW91bnQgaXMgYWxzbyBzY2FsZWQgYnkgdGhlIHpvb21GYWN0b3IuCi0gICAgdmlydHVhbCB2b2lk
IGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzLCBJbnRS
ZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgfQorICAg
IHZpcnR1YWwgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCwgY29uc3Qg
Q29udHJvbFN0YXRlcyosIEludFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21GYWN0
b3IqLykgY29uc3QgeyB9CiAgICAgCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uY2Us
IGZyb20gUmVuZGVyVGhlbWU6OmFkanVzdERlZmF1bHRTdHlsZVNoZWV0KCksIHRvIGxldCBlYWNo
IHBsYXRmb3JtIGFkanVzdAogICAgIC8vIHRoZSBkZWZhdWx0IENTUyBydWxlcyBpbiBodG1sLmNz
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAppbmRleCBkOGFiMThmZmFjOWI1MDRm
ZjdmOWFmOGEwMDQ5MzlhMDAxMTU2Y2IxLi45NzNlNzc0NjBiZWM2NTJjYWNhMGRlZDNmNTZmOGJm
OTRhNTY3YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oCkBAIC0yOCwyMiAr
MjgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gQ29udHJvbFN0YXRlIHsKLSAg
ICBIb3ZlclN0YXRlID0gMSwKLSAgICBQcmVzc2VkU3RhdGUgPSAxIDw8IDEsCi0gICAgRm9jdXNT
dGF0ZSA9IDEgPDwgMiwKLSAgICBFbmFibGVkU3RhdGUgPSAxIDw8IDMsCi0gICAgQ2hlY2tlZFN0
YXRlID0gMSA8PCA0LAotICAgIFJlYWRPbmx5U3RhdGUgPSAxIDw8IDUsCi0gICAgRGVmYXVsdFN0
YXRlID0gMSA8PCA2LAotICAgIFdpbmRvd0luYWN0aXZlU3RhdGUgPSAxIDw8IDcsCi0gICAgSW5k
ZXRlcm1pbmF0ZVN0YXRlID0gMSA8PCA4LAotICAgIFNwaW5VcFN0YXRlID0gMSA8PCA5LCAvLyBT
dWItc3RhdGUgZm9yIEhvdmVyU3RhdGUgYW5kIFByZXNzZWRTdGF0ZS4KLSAgICBBbGxTdGF0ZXMg
PSAweGZmZmZmZmZmCi19OwotCi10eXBlZGVmIHVuc2lnbmVkIENvbnRyb2xTdGF0ZXM7Ci0KIC8v
IE11c3QgZm9sbG93IENTU1ZhbHVlS2V5d29yZHMuaW4gb3JkZXIKIGVudW0gQ29udHJvbFBhcnQg
ewogICAgIE5vQ29udHJvbFBhcnQsIENoZWNrYm94UGFydCwgUmFkaW9QYXJ0LCBQdXNoQnV0dG9u
UGFydCwgU3F1YXJlQnV0dG9uUGFydCwgQnV0dG9uUGFydCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLmgKaW5kZXggOGI3ZTk4MjJkZmI1NDFkOTMwNDIzYTRmNTdjNzFmYWVjMDk1
OGUzMC4uZDczOTUyMzYwYjQwNDZiNmY3MWUzNzRiYWIyNGVjNzNkZWFmYjVmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKQEAgLTUxLDExICs1MSwxMSBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFjZShDb250cm9s
UGFydCBwYXJ0KSBjb25zdCB7IHJldHVybiBwYXJ0ID09IFB1c2hCdXR0b25QYXJ0OyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMsIEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEludFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3Kikg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQ
YXJ0LCBDb250cm9sU3RhdGVzLCBJbnRSZWN0JiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzKiwgR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcq
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29u
dHJvbFBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqLCBJbnRSZWN0JiwgZmxvYXQgem9vbUZhY3Rv
cikgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogT25jZSBSZW5kZXJUaGVtZU1hYyBpcyBjb252ZXJ0
ZWQgb3ZlciB0byB1c2UgVGhlbWUgdGhlbiB0aGlzIGNhbiBiZSBpbnRlcm5hbCB0byBUaGVtZU1h
Yy4KLSAgICBzdGF0aWMgTlNWaWV3KiBlbnN1cmVkVmlldyhTY3JvbGxWaWV3KiwgQ29udHJvbFN0
YXRlcyk7CisgICAgc3RhdGljIE5TVmlldyogZW5zdXJlZFZpZXcoU2Nyb2xsVmlldyosIGNvbnN0
IENvbnRyb2xTdGF0ZXMqKTsKICAgICBzdGF0aWMgdm9pZCBzZXRGb2N1c1JpbmdDbGlwUmVjdChj
b25zdCBGbG9hdFJlY3QmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5tbQppbmRleCA4NDUyNWNjZGY3YmM0MzViODA4NjEyMTdhMGExZTBiZjBhY2M2M2NhLi43NWMw
Njg2YmMwNzVlNWRjYzQ3MWMxZjVjZDg4YTQyZjA4MmUxZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC0zNSw2ICszNSwxNSBAQAogI2ltcG9ydCA8Q2FyYm9u
L0NhcmJvbi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAorI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAKK0BpbnRlcmZhY2UgTlNCdXR0b25DZWxs
KERldGFpbHMpCistICh2b2lkKV9zZXRTdGF0ZTooTlNJbnRlZ2VyKXZhbHVlIGFuaW1hdGVkOihC
T09MKWFuaW1hdGVkOworLSAodm9pZClfc2V0SGlnaGxpZ2h0ZWQ6KEJPT0wpZmxhZyBhbmltYXRl
ZDooQk9PTClhbmltYXRlZDsKKy0gKHZvaWQpX3JlbmRlckN1cnJlbnRBbmltYXRpb25GcmFtZUlu
Q29udGV4dDooQ0dDb250ZXh0UmVmKWN0eHQgYXRMb2NhdGlvbjooTlNQb2ludCl3aGVyZTsKKy0g
KEJPT0wpX3N0YXRlQW5pbWF0aW9uUnVubmluZzsKK0BlbmQKKyNlbmRpZgorCiBzdGF0aWMgTlNS
ZWN0IGZvY3VzUmluZ0NsaXBSZWN0Owogc3RhdGljIEJPT0wgdGhlbWVXaW5kb3dIYXNLZXlBcHBl
YXJhbmNlOwogCkBAIC05Nyw2ICsxMDYsMTIgQEAgc3RhdGljIEJPT0wgdGhlbWVXaW5kb3dIYXNL
ZXlBcHBlYXJhbmNlOwogICAgIHJldHVybiBzZWxmOwogfQogCistICh2b2lkKWFkZFN1YnZpZXc6
KE5TVmlldyopc3VidmlldworeworICAgIC8vIEJ5IGRvaW5nIG5vdGhpbmcgaW4gdGhpcyBtZXRo
b2Qgd2UgZm9yYmlkIGNvbnRyb2xzIGZyb20gYWRkaW5nIHN1YnZpZXdzLgorICAgIC8vIFRoaXMg
dGVsbHMgQXBwS2l0IHRvIG5vdCB1c2UgTGF5ZXItYmFja2VkIGFuaW1hdGlvbiBmb3IgY29udHJv
bCByZW5kZXJpbmcuCisgICAgVU5VU0VEX1BBUkFNKHN1YnZpZXcpOworfQogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gTlNGb250IChXZWJDb3JlVGhlbWUpCkBAIC0xNzYsNDUgKzE5MSw1NiBAQCBz
dGF0aWMgdm9pZCBzZXRDb250cm9sU2l6ZShOU0NlbGwqIGNlbGwsIGNvbnN0IEludFNpemUqIHNp
emVzLCBjb25zdCBJbnRTaXplJiBtaQogICAgICAgICBbY2VsbCBzZXRDb250cm9sU2l6ZTooTlND
b250cm9sU2l6ZSlzaXplXTsKIH0KIAotc3RhdGljIHZvaWQgdXBkYXRlU3RhdGVzKE5TQ2VsbCog
Y2VsbCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMpCitzdGF0aWMgdm9pZCB1cGRhdGVTdGF0ZXMoTlND
ZWxsKiBjZWxsLCBjb25zdCBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzLCBib29sIHVzZUFu
aW1hdGlvbiA9IGZhbHNlKQogeworICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZXMgPSBj
b250cm9sU3RhdGVzLT5zdGF0ZXMoKTsKKwogICAgIC8vIEhvdmVyIHN0YXRlIGlzIG5vdCBzdXBw
b3J0ZWQgYnkgQXF1YS4KICAgICAKICAgICAvLyBQcmVzc2VkIHN0YXRlCiAgICAgYm9vbCBvbGRQ
cmVzc2VkID0gW2NlbGwgaXNIaWdobGlnaHRlZF07Ci0gICAgYm9vbCBwcmVzc2VkID0gc3RhdGVz
ICYgUHJlc3NlZFN0YXRlOworICAgIGJvb2wgcHJlc3NlZCA9IHN0YXRlcyAmIENvbnRyb2xTdGF0
ZXM6OlByZXNzZWRTdGF0ZTsKICAgICBpZiAocHJlc3NlZCAhPSBvbGRQcmVzc2VkKQogICAgICAg
ICBbY2VsbCBzZXRIaWdobGlnaHRlZDpwcmVzc2VkXTsKICAgICAKICAgICAvLyBFbmFibGVkIHN0
YXRlCiAgICAgYm9vbCBvbGRFbmFibGVkID0gW2NlbGwgaXNFbmFibGVkXTsKLSAgICBib29sIGVu
YWJsZWQgPSBzdGF0ZXMgJiBFbmFibGVkU3RhdGU7CisgICAgYm9vbCBlbmFibGVkID0gc3RhdGVz
ICYgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlOwogICAgIGlmIChlbmFibGVkICE9IG9sZEVu
YWJsZWQpCiAgICAgICAgIFtjZWxsIHNldEVuYWJsZWQ6ZW5hYmxlZF07CiAKICAgICAvLyBDaGVj
a2VkIGFuZCBJbmRldGVybWluYXRlCiAgICAgYm9vbCBvbGRJbmRldGVybWluYXRlID0gW2NlbGwg
c3RhdGVdID09IE5TTWl4ZWRTdGF0ZTsKLSAgICBib29sIGluZGV0ZXJtaW5hdGUgPSAoc3RhdGVz
ICYgSW5kZXRlcm1pbmF0ZVN0YXRlKTsKLSAgICBib29sIGNoZWNrZWQgPSBzdGF0ZXMgJiBDaGVj
a2VkU3RhdGU7CisgICAgYm9vbCBpbmRldGVybWluYXRlID0gKHN0YXRlcyAmIENvbnRyb2xTdGF0
ZXM6OkluZGV0ZXJtaW5hdGVTdGF0ZSk7CisgICAgYm9vbCBjaGVja2VkID0gc3RhdGVzICYgQ29u
dHJvbFN0YXRlczo6Q2hlY2tlZFN0YXRlOwogICAgIGJvb2wgb2xkQ2hlY2tlZCA9IFtjZWxsIHN0
YXRlXSA9PSBOU09uU3RhdGU7Ci0gICAgaWYgKG9sZEluZGV0ZXJtaW5hdGUgIT0gaW5kZXRlcm1p
bmF0ZSB8fCBjaGVja2VkICE9IG9sZENoZWNrZWQpCi0gICAgICAgIFtjZWxsIHNldFN0YXRlOmlu
ZGV0ZXJtaW5hdGUgPyBOU01peGVkU3RhdGUgOiAoY2hlY2tlZCA/IE5TT25TdGF0ZSA6IE5TT2Zm
U3RhdGUpXTsKLSAgICAgICAgCisgICAgaWYgKG9sZEluZGV0ZXJtaW5hdGUgIT0gaW5kZXRlcm1p
bmF0ZSB8fCBjaGVja2VkICE9IG9sZENoZWNrZWQpIHsKKyAgICAgICAgTlNDZWxsU3RhdGVWYWx1
ZSBuZXdTdGF0ZSA9IGluZGV0ZXJtaW5hdGUgPyBOU01peGVkU3RhdGUgOiAoY2hlY2tlZCA/IE5T
T25TdGF0ZSA6IE5TT2ZmU3RhdGUpOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMDAKKyAgICAgICAgWyhOU0J1dHRvbkNlbGwqKWNlbGwgX3NldFN0YXRlOm5ld1N0
YXRlIGFuaW1hdGVkOnVzZUFuaW1hdGlvbl07CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0o
dXNlQW5pbWF0aW9uKTsKKyAgICAgICAgW2NlbGwgc2V0U3RhdGU6bmV3U3RhdGVdOworI2VuZGlm
CisgICAgfQorCiAgICAgLy8gV2luZG93IGluYWN0aXZlIHN0YXRlIGRvZXMgbm90IG5lZWQgdG8g
YmUgY2hlY2tlZCBleHBsaWNpdGx5LCBzaW5jZSB3ZSBwYWludCBwYXJlbnRlZCB0byAKICAgICAv
LyBhIHZpZXcgaW4gYSB3aW5kb3cgd2hvc2Uga2V5IHN0YXRlIGNhbiBiZSBkZXRlY3RlZC4KIH0K
IAotc3RhdGljIFRoZW1lRHJhd1N0YXRlIGNvbnZlcnRDb250cm9sU3RhdGVzVG9UaGVtZURyYXdT
dGF0ZShUaGVtZUJ1dHRvbktpbmQga2luZCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMpCitzdGF0aWMg
VGhlbWVEcmF3U3RhdGUgY29udmVydENvbnRyb2xTdGF0ZXNUb1RoZW1lRHJhd1N0YXRlKFRoZW1l
QnV0dG9uS2luZCBraW5kLCBjb25zdCBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzKQogewot
ICAgIGlmIChzdGF0ZXMgJiBSZWFkT25seVN0YXRlKQorICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRl
cyBzdGF0ZXMgPSBjb250cm9sU3RhdGVzLT5zdGF0ZXMoKTsKKworICAgIGlmIChzdGF0ZXMgJiBD
b250cm9sU3RhdGVzOjpSZWFkT25seVN0YXRlKQogICAgICAgICByZXR1cm4ga1RoZW1lU3RhdGVV
bmF2YWlsYWJsZUluYWN0aXZlOwotICAgIGlmICghKHN0YXRlcyAmIEVuYWJsZWRTdGF0ZSkpCisg
ICAgaWYgKCEoc3RhdGVzICYgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlKSkKICAgICAgICAg
cmV0dXJuIGtUaGVtZVN0YXRlVW5hdmFpbGFibGVJbmFjdGl2ZTsKIAogICAgIC8vIERvIG5vdCBw
cm9jZXNzIFByZXNzZWRTdGF0ZSBpZiAhRW5hYmxlZFN0YXRlIG9yIFJlYWRPbmx5U3RhdGUuCi0g
ICAgaWYgKHN0YXRlcyAmIFByZXNzZWRTdGF0ZSkgeworICAgIGlmIChzdGF0ZXMgJiBDb250cm9s
U3RhdGVzOjpQcmVzc2VkU3RhdGUpIHsKICAgICAgICAgaWYgKGtpbmQgPT0ga1RoZW1lSW5jRGVj
QnV0dG9uIHx8IGtpbmQgPT0ga1RoZW1lSW5jRGVjQnV0dG9uU21hbGwgfHwga2luZCA9PSBrVGhl
bWVJbmNEZWNCdXR0b25NaW5pKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRlcyAmIFNwaW5VcFN0
YXRlID8ga1RoZW1lU3RhdGVQcmVzc2VkVXAgOiBrVGhlbWVTdGF0ZVByZXNzZWREb3duOworICAg
ICAgICAgICAgcmV0dXJuIHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OlNwaW5VcFN0YXRlID8ga1Ro
ZW1lU3RhdGVQcmVzc2VkVXAgOiBrVGhlbWVTdGF0ZVByZXNzZWREb3duOwogICAgICAgICByZXR1
cm4ga1RoZW1lU3RhdGVQcmVzc2VkOwogICAgIH0KICAgICByZXR1cm4ga1RoZW1lU3RhdGVBY3Rp
dmU7CkBAIC0yNjYsMzQgKzI5Miw1NCBAQCBzdGF0aWMgTGVuZ3RoU2l6ZSBjaGVja2JveFNpemUo
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZgogICAgIC8v
IFVzZSB0aGUgZm9udCBzaXplIHRvIGRldGVybWluZSB0aGUgaW50cmluc2ljIHdpZHRoIG9mIHRo
ZSBjb250cm9sLgogICAgIHJldHVybiBzaXplRnJvbUZvbnQoZm9udCwgem9vbWVkU2l6ZSwgem9v
bUZhY3RvciwgY2hlY2tib3hTaXplcygpKTsKIH0KLQotc3RhdGljIE5TQnV0dG9uQ2VsbCAqY2hl
Y2tib3goQ29udHJvbFN0YXRlcyBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZs
b2F0IHpvb21GYWN0b3IpCi17Ci0gICAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqY2hlY2tib3hDZWxs
OwotICAgIGlmICghY2hlY2tib3hDZWxsKSB7Ci0gICAgICAgIGNoZWNrYm94Q2VsbCA9IFtbTlNC
dXR0b25DZWxsIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW2NoZWNrYm94Q2VsbCBzZXRCdXR0b25U
eXBlOk5TU3dpdGNoQnV0dG9uXTsKLSAgICAgICAgW2NoZWNrYm94Q2VsbCBzZXRUaXRsZTpuaWxd
OwotICAgICAgICBbY2hlY2tib3hDZWxsIHNldEFsbG93c01peGVkU3RhdGU6WUVTXTsKLSAgICAg
ICAgW2NoZWNrYm94Q2VsbCBzZXRGb2N1c1JpbmdUeXBlOk5TRm9jdXNSaW5nVHlwZUV4dGVyaW9y
XTsKLSAgICB9CiAgICAgCitzdGF0aWMgdm9pZCBjb25maWd1cmVDaGVja2JveChOU0NlbGwqIGNl
bGwsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVj
dCwgZmxvYXQgem9vbUZhY3RvciwgYm9vbCBpc1N0YXRlQ2hhbmdlKQorewogICAgIC8vIFNldCB0
aGUgY29udHJvbCBzaXplIGJhc2VkIG9mZiB0aGUgcmVjdGFuZ2xlIHdlJ3JlIHBhaW50aW5nIGlu
dG8uCi0gICAgc2V0Q29udHJvbFNpemUoY2hlY2tib3hDZWxsLCBjaGVja2JveFNpemVzKCksIHpv
b21lZFJlY3Quc2l6ZSgpLCB6b29tRmFjdG9yKTsKKyAgICBzZXRDb250cm9sU2l6ZShjZWxsLCBj
aGVja2JveFNpemVzKCksIHpvb21lZFJlY3Quc2l6ZSgpLCB6b29tRmFjdG9yKTsKIAogICAgIC8v
IFVwZGF0ZSB0aGUgdmFyaW91cyBzdGF0ZXMgd2UgcmVzcG9uZCB0by4KLSAgICB1cGRhdGVTdGF0
ZXMoY2hlY2tib3hDZWxsLCBzdGF0ZXMpOworICAgIHVwZGF0ZVN0YXRlcyhjZWxsLCBzdGF0ZXMs
IGlzU3RhdGVDaGFuZ2UpOworfQogICAgIAorc3RhdGljIE5TQnV0dG9uQ2VsbCAqY3JlYXRlQ2hl
Y2tib3hDZWxsKCkKK3sKKyAgICBOU0J1dHRvbkNlbGwgKmNoZWNrYm94Q2VsbCA9IFtbTlNCdXR0
b25DZWxsIGFsbG9jXSBpbml0XTsKKyAgICBbY2hlY2tib3hDZWxsIHNldEJ1dHRvblR5cGU6TlNT
d2l0Y2hCdXR0b25dOworICAgIFtjaGVja2JveENlbGwgc2V0VGl0bGU6bmlsXTsKKyAgICBbY2hl
Y2tib3hDZWxsIHNldEFsbG93c01peGVkU3RhdGU6WUVTXTsKKyAgICBbY2hlY2tib3hDZWxsIHNl
dEZvY3VzUmluZ1R5cGU6TlNGb2N1c1JpbmdUeXBlRXh0ZXJpb3JdOwogICAgIHJldHVybiBjaGVj
a2JveENlbGw7CiB9CiAKK3N0YXRpYyBOU0J1dHRvbkNlbGwgKnNoYXJlZENoZWNrYm94Q2VsbChj
b25zdCBDb250cm9sU3RhdGVzKiBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZs
b2F0IHpvb21GYWN0b3IpCit7CisgICAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqY2hlY2tib3hDZWxs
OworICAgIGlmICghY2hlY2tib3hDZWxsKQorICAgICAgICBjaGVja2JveENlbGwgPSBjcmVhdGVD
aGVja2JveENlbGwoKTsKKworICAgIGNvbmZpZ3VyZUNoZWNrYm94KGNoZWNrYm94Q2VsbCwgc3Rh
dGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yLCBmYWxzZSk7CisgICAgcmV0dXJuIGNoZWNrYm94
Q2VsbDsKK30KKyAgICAKIC8vIEZJWE1FOiBTaGFyZSBtb3JlIGNvZGUgd2l0aCByYWRpbyBidXR0
b25zLgotc3RhdGljIHZvaWQgcGFpbnRDaGVja2JveChDb250cm9sU3RhdGVzIHN0YXRlcywgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6
b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KQorc3RhdGljIHZvaWQgcGFpbnRDaGVj
a2JveChDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZp
ZXcqIHNjcm9sbFZpZXcpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKLSAg
ICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUgY29udHJv
bCBhbmQgcHJlcGFyZSB0aGUgY2VsbCBmb3IgcGFpbnRpbmcuCi0gICAgTlNCdXR0b25DZWxsICpj
aGVja2JveENlbGwgPSBjaGVja2JveChzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOwor
ICAgIE5TQnV0dG9uQ2VsbCAqY2hlY2tib3hDZWxsID0gc3RhdGljX2Nhc3Q8TlNCdXR0b25DZWxs
Kj4oY29udHJvbFN0YXRlcy0+cGxhdGZvcm1Db250cm9sKCkpOworCisgICAgaWYgKGNvbnRyb2xT
dGF0ZXMtPmlzRGlydHkoKSkgeworICAgICAgICBpZiAoIWNoZWNrYm94Q2VsbCkKKyAgICAgICAg
ICAgIGNoZWNrYm94Q2VsbCA9IGNyZWF0ZUNoZWNrYm94Q2VsbCgpOworICAgICAgICBjb25maWd1
cmVDaGVja2JveChjaGVja2JveENlbGwsIGNvbnRyb2xTdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21G
YWN0b3IsIHRydWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghY2hlY2tib3hDZWxsKQor
ICAgICAgICAgICAgY2hlY2tib3hDZWxsID0gc2hhcmVkQ2hlY2tib3hDZWxsKGNvbnRyb2xTdGF0
ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOworICAgICAgICBjb25maWd1cmVDaGVja2JveChj
aGVja2JveENlbGwsIGNvbnRyb2xTdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IsIGZhbHNl
KTsKKyAgICB9CisgICAgY29udHJvbFN0YXRlcy0+c2V0RGlydHkoZmFsc2UpOworCiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKIAogICAgIE5TQ29u
dHJvbFNpemUgY29udHJvbFNpemUgPSBbY2hlY2tib3hDZWxsIGNvbnRyb2xTaXplXTsKQEAgLTMx
MSwxMiArMzU3LDM0IEBAIHN0YXRpYyB2b2lkIHBhaW50Q2hlY2tib3goQ29udHJvbFN0YXRlcyBz
dGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICB9CiAKICAgICBMb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwotICAgIE5TVmll
dyAqdmlldyA9IFRoZW1lTWFjOjplbnN1cmVkVmlldyhzY3JvbGxWaWV3LCBzdGF0ZXMpOwotICAg
IFtjaGVja2JveENlbGwgZHJhd1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6
dmlld107Ci0gICAgaWYgKHN0YXRlcyAmIEZvY3VzU3RhdGUpCisgICAgTlNWaWV3ICp2aWV3ID0g
VGhlbWVNYWM6OmVuc3VyZWRWaWV3KHNjcm9sbFZpZXcsIGNvbnRyb2xTdGF0ZXMpOworICAgIGJv
b2wgZHJhd1N0YXRpY2FsbHkgPSB0cnVlOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMDAKKyAgICBkcmF3U3RhdGljYWxseSA9ICFbY2hlY2tib3hDZWxsIF9zdGF0
ZUFuaW1hdGlvblJ1bm5pbmddOworI2VuZGlmCisgICAgaWYgKGRyYXdTdGF0aWNhbGx5KQorICAg
ICAgICBbY2hlY2tib3hDZWxsIGRyYXdXaXRoRnJhbWU6TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5W
aWV3OnZpZXddOworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBpc24ndCBxdWl0
ZSBjb3JyZWN0IGF0IHRoZSBtb21lbnQgZHVlIHRvIHRoZSB3YXkgdGhlIHRpY2sgbWFyayBleHRl
bmRzIG91dCBvZiB0aGUgY29udHJvbC4KKyAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGluZmxh
dGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkpOworICAgICAgICBjb250ZXh0LT5zY2FsZShG
bG9hdFNpemUoMSwgLTEpKTsKKyAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKDAsIC1pbmZsYXRl
ZFJlY3QuaGVpZ2h0KCkpOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMDAKKyAgICAgICAgW2NoZWNrYm94Q2VsbCBfcmVuZGVyQ3VycmVudEFuaW1hdGlvbkZyYW1l
SW5Db250ZXh0OmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIGF0TG9jYXRpb246TlNNYWtlUG9p
bnQoMCwgMCldOworI2VuZGlmCisgICAgfQorICAgIGlmIChjb250cm9sU3RhdGVzLT5zdGF0ZXMo
KSAmIENvbnRyb2xTdGF0ZXM6OkZvY3VzU3RhdGUpCiAgICAgICAgIFtjaGVja2JveENlbGwgX3dl
Yl9kcmF3Rm9jdXNSaW5nV2l0aEZyYW1lOk5TUmVjdChpbmZsYXRlZFJlY3QpIGluVmlldzp2aWV3
XTsKICAgICBbY2hlY2tib3hDZWxsIHNldENvbnRyb2xWaWV3Om5pbF07CiAgICAgCisgICAgYm9v
bCBuZWVkc1JlcGFpbnQgPSBmYWxzZTsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTAwCisgICAgbmVlZHNSZXBhaW50ID0gW2NoZWNrYm94Q2VsbCBfc3RhdGVBbmlt
YXRpb25SdW5uaW5nXTsKKyNlbmRpZgorICAgIGNvbnRyb2xTdGF0ZXMtPnNldE5lZWRzUmVwYWlu
dChuZWVkc1JlcGFpbnQpOworICAgIGlmIChuZWVkc1JlcGFpbnQpCisgICAgICAgIGNvbnRyb2xT
dGF0ZXMtPnNldFBsYXRmb3JtQ29udHJvbChjaGVja2JveENlbGwpOworCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0zNDksNyArNDE3LDcgQEAgc3RhdGljIExlbmd0aFNp
emUgcmFkaW9TaXplKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IExlbmd0aFNpemUmIHpvb21lZFNp
emUsIGZsb2EKICAgICByZXR1cm4gc2l6ZUZyb21Gb250KGZvbnQsIHpvb21lZFNpemUsIHpvb21G
YWN0b3IsIHJhZGlvU2l6ZXMoKSk7CiB9CiAKLXN0YXRpYyBOU0J1dHRvbkNlbGwgKnJhZGlvKENv
bnRyb2xTdGF0ZXMgc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29t
RmFjdG9yKQorc3RhdGljIE5TQnV0dG9uQ2VsbCAqcmFkaW8oY29uc3QgQ29udHJvbFN0YXRlcyog
c3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yKQogewog
ICAgIHN0YXRpYyBOU0J1dHRvbkNlbGwgKnJhZGlvQ2VsbDsKICAgICBpZiAoIXJhZGlvQ2VsbCkg
ewpAQCAtMzY4LDEwICs0MzYsMTAgQEAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqcmFkaW8oQ29udHJv
bFN0YXRlcyBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2EKICAgICByZXR1
cm4gcmFkaW9DZWxsOwogfQogCi1zdGF0aWMgdm9pZCBwYWludFJhZGlvKENvbnRyb2xTdGF0ZXMg
c3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJl
Y3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcpCitzdGF0aWMgdm9p
ZCBwYWludFJhZGlvKENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3Rvciwg
U2Nyb2xsVmlldyogc2Nyb2xsVmlldykKIHsKICAgICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIGFu
ZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUgY29udHJvbCBhbmQgcHJlcGFyZSB0aGUgY2VsbCBmb3Ig
cGFpbnRpbmcuCi0gICAgTlNCdXR0b25DZWxsICpyYWRpb0NlbGwgPSByYWRpbyhzdGF0ZXMsIHpv
b21lZFJlY3QsIHpvb21GYWN0b3IpOworICAgIE5TQnV0dG9uQ2VsbCAqcmFkaW9DZWxsID0gcmFk
aW8oY29udHJvbFN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKIAogICAgIE5TQ29udHJvbFNp
emUgY29udHJvbFNpemUgPSBbcmFkaW9DZWxsIGNvbnRyb2xTaXplXTsKQEAgLTM5MCw5ICs0NTgs
OSBAQCBzdGF0aWMgdm9pZCBwYWludFJhZGlvKENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludAogCiAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLSAgICBOU1ZpZXcgKnZpZXcgPSBUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoc2Nyb2xsVmll
dywgc3RhdGVzKTsKKyAgICBOU1ZpZXcgKnZpZXcgPSBUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoc2Ny
b2xsVmlldywgY29udHJvbFN0YXRlcyk7CiAgICAgW3JhZGlvQ2VsbCBkcmF3V2l0aEZyYW1lOk5T
UmVjdChpbmZsYXRlZFJlY3QpIGluVmlldzp2aWV3XTsKLSAgICBpZiAoc3RhdGVzICYgRm9jdXNT
dGF0ZSkKKyAgICBpZiAoY29udHJvbFN0YXRlcy0+c3RhdGVzKCkgJiBDb250cm9sU3RhdGVzOjpG
b2N1c1N0YXRlKQogICAgICAgICBbcmFkaW9DZWxsIF93ZWJfZHJhd0ZvY3VzUmluZ1dpdGhGcmFt
ZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6dmlld107CiAgICAgW3JhZGlvQ2VsbCBzZXRD
b250cm9sVmlldzpuaWxdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTQzMCw3
ICs0OTgsNyBAQCBzdGF0aWMgTlNCdXR0b25DZWxsICpsZWFrQnV0dG9uQ2VsbChCdXR0b25DZWxs
VHlwZSB0eXBlKQogICAgIHJldHVybiBjZWxsOwogfQogCi1zdGF0aWMgdm9pZCBzZXRVcEJ1dHRv
bkNlbGwoTlNCdXR0b25DZWxsICpjZWxsLCBDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVz
IHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikKK3N0
YXRpYyB2b2lkIHNldFVwQnV0dG9uQ2VsbChOU0J1dHRvbkNlbGwgKmNlbGwsIENvbnRyb2xQYXJ0
IHBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVk
UmVjdCwgZmxvYXQgem9vbUZhY3RvcikKIHsKICAgICAvLyBTZXQgdGhlIGNvbnRyb2wgc2l6ZSBi
YXNlZCBvZmYgdGhlIHJlY3RhbmdsZSB3ZSdyZSBwYWludGluZyBpbnRvLgogICAgIGNvbnN0IElu
dFNpemUqIHNpemVzID0gYnV0dG9uU2l6ZXMoKTsKQEAgLTQ0NywyNiArNTE1LDI4IEBAIHN0YXRp
YyB2b2lkIHNldFVwQnV0dG9uQ2VsbChOU0J1dHRvbkNlbGwgKmNlbGwsIENvbnRyb2xQYXJ0IHBh
cnQsIENvbnRyb2xTdGF0ZXMKICAgICB1cGRhdGVTdGF0ZXMoY2VsbCwgc3RhdGVzKTsKIH0KIAot
c3RhdGljIE5TQnV0dG9uQ2VsbCAqYnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0
ZXMgc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yKQor
c3RhdGljIE5TQnV0dG9uQ2VsbCAqYnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRy
b2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0
IHpvb21GYWN0b3IpCiB7CisgICAgQ29udHJvbFN0YXRlczo6U3RhdGVzIHN0YXRlcyA9IGNvbnRy
b2xTdGF0ZXMtPnN0YXRlcygpOwogICAgIE5TQnV0dG9uQ2VsbCAqY2VsbDsKLSAgICBpZiAoc3Rh
dGVzICYgRGVmYXVsdFN0YXRlKSB7CisgICAgaWYgKHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OkRl
ZmF1bHRTdGF0ZSkgewogICAgICAgICBzdGF0aWMgTlNCdXR0b25DZWxsICpkZWZhdWx0Q2VsbCA9
IGxlYWtCdXR0b25DZWxsKERlZmF1bHRCdXR0b25DZWxsKTsKICAgICAgICAgY2VsbCA9IGRlZmF1
bHRDZWxsOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN0YXRpYyBOU0J1dHRvbkNlbGwgKm5vcm1h
bENlbGwgPSBsZWFrQnV0dG9uQ2VsbChOb3JtYWxCdXR0b25DZWxsKTsKICAgICAgICAgY2VsbCA9
IG5vcm1hbENlbGw7CiAgICAgfQotICAgIHNldFVwQnV0dG9uQ2VsbChjZWxsLCBwYXJ0LCBzdGF0
ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOyAgICAKKyAgICBzZXRVcEJ1dHRvbkNlbGwoY2Vs
bCwgcGFydCwgY29udHJvbFN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CiAgICAgcmV0
dXJuIGNlbGw7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQs
IENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZp
ZXcpCitzdGF0aWMgdm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3Rh
dGVzKiBjb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcp
CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgLy8gRGV0ZXJt
aW5lIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG5lZWRlZCBmb3IgdGhlIGNvbnRyb2wgYW5kIHByZXBh
cmUgdGhlIGNlbGwgZm9yIHBhaW50aW5nLgotICAgIE5TQnV0dG9uQ2VsbCAqYnV0dG9uQ2VsbCA9
IGJ1dHRvbihwYXJ0LCBzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOworICAgIENvbnRy
b2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZXMgPSBjb250cm9sU3RhdGVzLT5zdGF0ZXMoKTsKKyAgICBO
U0J1dHRvbkNlbGwgKmJ1dHRvbkNlbGwgPSBidXR0b24ocGFydCwgY29udHJvbFN0YXRlcywgem9v
bWVkUmVjdCwgem9vbUZhY3Rvcik7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpjb250ZXh0KTsKIAogICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBbYnV0
dG9uQ2VsbCBjb250cm9sU2l6ZV07CkBAIC00OTQsMTggKzU2NCwxOCBAQCBzdGF0aWMgdm9pZCBw
YWludEJ1dHRvbihDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhp
Y3NDb250ZXh0KgogICAgIH0gCiAKICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9j
YWxDb250ZXh0KGNvbnRleHQpOwotICAgIE5TVmlldyAqdmlldyA9IFRoZW1lTWFjOjplbnN1cmVk
VmlldyhzY3JvbGxWaWV3LCBzdGF0ZXMpOworICAgIE5TVmlldyAqdmlldyA9IFRoZW1lTWFjOjpl
bnN1cmVkVmlldyhzY3JvbGxWaWV3LCBjb250cm9sU3RhdGVzKTsKICAgICBOU1dpbmRvdyAqd2lu
ZG93ID0gW3ZpZXcgd2luZG93XTsKICAgICBOU0J1dHRvbkNlbGwgKnByZXZpb3VzRGVmYXVsdEJ1
dHRvbkNlbGwgPSBbd2luZG93IGRlZmF1bHRCdXR0b25DZWxsXTsKIAotICAgIGlmIChzdGF0ZXMg
JiBEZWZhdWx0U3RhdGUpIHsKKyAgICBpZiAoc3RhdGVzICYgQ29udHJvbFN0YXRlczo6RGVmYXVs
dFN0YXRlKSB7CiAgICAgICAgIFt3aW5kb3cgc2V0RGVmYXVsdEJ1dHRvbkNlbGw6YnV0dG9uQ2Vs
bF07CiAgICAgICAgIHdrQWR2YW5jZURlZmF1bHRCdXR0b25QdWxzZUFuaW1hdGlvbihidXR0b25D
ZWxsKTsKICAgICB9IGVsc2UgaWYgKFtwcmV2aW91c0RlZmF1bHRCdXR0b25DZWxsIGlzRXF1YWw6
YnV0dG9uQ2VsbF0pCiAgICAgICAgIFt3aW5kb3cgc2V0RGVmYXVsdEJ1dHRvbkNlbGw6bmlsXTsK
IAogICAgIFtidXR0b25DZWxsIGRyYXdXaXRoRnJhbWU6TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5W
aWV3OnZpZXddOwotICAgIGlmIChzdGF0ZXMgJiBGb2N1c1N0YXRlKQorICAgIGlmIChzdGF0ZXMg
JiBDb250cm9sU3RhdGVzOjpGb2N1c1N0YXRlKQogICAgICAgICBbYnV0dG9uQ2VsbCBfd2ViX2Ry
YXdGb2N1c1JpbmdXaXRoRnJhbWU6TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5WaWV3OnZpZXddOwog
ICAgIFtidXR0b25DZWxsIHNldENvbnRyb2xWaWV3Om5pbF07CiAKQEAgLTUzNSw3ICs2MDUsNyBA
QCBzdGF0aWMgTlNDb250cm9sU2l6ZSBzdGVwcGVyQ29udHJvbFNpemVGb3JGb250KGNvbnN0IEZv
bnQmIGZvbnQpCiAgICAgcmV0dXJuIE5TTWluaUNvbnRyb2xTaXplOwogfQogCi1zdGF0aWMgdm9p
ZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xs
VmlldyopCitzdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0YXRlcyogc3RhdGVzLCBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0
IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqKQogewogICAgIC8vIFdlIGRvbid0IHVzZSBOU1N0ZXBw
ZXJDZWxsIGJlY2F1c2UgdGhlcmUgYXJlIG5vIHdheXMgdG8gZHJhdyBhbgogICAgIC8vIE5TU3Rl
cHBlckNlbGwgd2l0aCB0aGUgdXAgYnV0dG9uIGhpZ2hsaWdodGVkLgpAQCAtNTc3LDcgKzY0Nyw3
IEBAIHN0YXRpYyB2b2lkIHBhaW50U3RlcHBlcihDb250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJCiAKIC8vIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB3
ZSBhbHdheXMgcmV0dXJuIGEgdmFsaWQgTlNWaWV3LCBldmVuIGlmIFNjcm9sbFZpZXcgZG9lc24n
dCBoYXZlIGFuIGFzc29jaWF0ZWQgZG9jdW1lbnQgTlNWaWV3LgogLy8gSWYgdGhlIFNjcm9sbFZp
ZXcgZG9lc24ndCBoYXZlIGFuIE5TVmlldywgd2Ugd2lsbCByZXR1cm4gYSBmYWtlIE5TVmlldyBz
ZXQgdXAgaW4gdGhlIHdheSBBcHBLaXQgZXhwZWN0cy4KLU5TVmlldyAqVGhlbWVNYWM6OmVuc3Vy
ZWRWaWV3KFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIENvbnRyb2xTdGF0ZXMgc3RhdGVzKQorTlNW
aWV3ICpUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoU2Nyb2xsVmlldyogc2Nyb2xsVmlldywgY29uc3Qg
Q29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcykKIHsKICAgICBpZiAoTlNWaWV3ICpkb2N1bWVu
dFZpZXcgPSBzY3JvbGxWaWV3LT5kb2N1bWVudFZpZXcoKSkKICAgICAgICAgcmV0dXJuIGRvY3Vt
ZW50VmlldzsKQEAgLTU4Niw3ICs2NTYsNyBAQCBOU1ZpZXcgKlRoZW1lTWFjOjplbnN1cmVkVmll
dyhTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBDb250cm9sU3RhdGVzIHN0YXRlcykKICAgICBzdGF0
aWMgV2ViQ29yZVRoZW1lVmlldyAqdGhlbWVWaWV3ID0gW1tXZWJDb3JlVGhlbWVWaWV3IGFsbG9j
XSBpbml0XTsKICAgICBbdGhlbWVWaWV3IHNldEZyYW1lU2l6ZTpOU1NpemVGcm9tQ0dTaXplKHNj
cm9sbFZpZXctPnRvdGFsQ29udGVudHNTaXplKCkpXTsKIAotICAgIHRoZW1lV2luZG93SGFzS2V5
QXBwZWFyYW5jZSA9ICEoc3RhdGVzICYgV2luZG93SW5hY3RpdmVTdGF0ZSk7CisgICAgdGhlbWVX
aW5kb3dIYXNLZXlBcHBlYXJhbmNlID0gIShjb250cm9sU3RhdGVzLT5zdGF0ZXMoKSAmIENvbnRy
b2xTdGF0ZXM6OldpbmRvd0luYWN0aXZlU3RhdGUpOwogCiAgICAgcmV0dXJuIHRoZW1lVmlldzsK
IH0KQEAgLTY4OSwxNCArNzU5LDE0IEBAIExlbmd0aEJveCBUaGVtZU1hYzo6Y29udHJvbFBhZGRp
bmcoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgTGVuCiAgICAgfQog
fQogCi12b2lkIFRoZW1lTWFjOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCBw
YXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9v
bUZhY3RvcikgY29uc3QKK3ZvaWQgVGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KENv
bnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgSW50UmVjdCYgem9v
bWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKIHsKICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKICAgICBzd2l0Y2ggKHBhcnQpIHsKICAgICAgICAgY2FzZSBDaGVja2JveFBh
cnQ6IHsKICAgICAgICAgICAgIC8vIFdlIGluZmxhdGUgdGhlIHJlY3QgYXMgbmVlZGVkIHRvIGFj
Y291bnQgZm9yIHBhZGRpbmcgaW5jbHVkZWQgaW4gdGhlIGNlbGwgdG8gYWNjb21tb2RhdGUgdGhl
IGNoZWNrYm94CiAgICAgICAgICAgICAvLyBzaGFkb3ciIGFuZCB0aGUgY2hlY2suICBXZSBkb24n
dCBjb25zaWRlciB0aGlzIHBhcnQgb2YgdGhlIGJvdW5kcyBvZiB0aGUgY29udHJvbCBpbiBXZWJL
aXQuCi0gICAgICAgICAgICBOU0NlbGwgKmNlbGwgPSBjaGVja2JveChzdGF0ZXMsIHpvb21lZFJl
Y3QsIHpvb21GYWN0b3IpOworICAgICAgICAgICAgTlNDZWxsICpjZWxsID0gc2hhcmVkQ2hlY2ti
b3hDZWxsKHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CiAgICAgICAgICAgICBOU0Nv
bnRyb2xTaXplIGNvbnRyb2xTaXplID0gW2NlbGwgY29udHJvbFNpemVdOwogICAgICAgICAgICAg
SW50U2l6ZSB6b29tZWRTaXplID0gY2hlY2tib3hTaXplcygpW2NvbnRyb2xTaXplXTsKICAgICAg
ICAgICAgIHpvb21lZFNpemUuc2V0SGVpZ2h0KHpvb21lZFNpemUuaGVpZ2h0KCkgKiB6b29tRmFj
dG9yKTsKQEAgLTc0NSw3ICs4MTUsNyBAQCB2b2lkIFRoZW1lTWFjOjppbmZsYXRlQ29udHJvbFBh
aW50UmVjdChDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywgSQogICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAotdm9pZCBUaGVtZU1hYzo6cGFpbnQoQ29udHJv
bFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmll
dyogc2Nyb2xsVmlldykgY29uc3QKK3ZvaWQgVGhlbWVNYWM6OnBhaW50KENvbnRyb2xQYXJ0IHBh
cnQsIENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3Jv
bGxWaWV3KQogewogICAgIHN3aXRjaCAocGFydCkgewogICAgICAgICBjYXNlIENoZWNrYm94UGFy
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNWI3YmNhNWI2NDMy
MzZlMDM1YWU1NDI4MTNhOGViOTg1ZThlOTFkZC4uNzAxMTY2MDAyNmNjNzc4NmQ0OTJjZTU2NTFl
NWNlN2Q3Yjc0Mjg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAg
LTEwMiw2ICsxMDIsNyBAQCBSZW5kZXJCb3g6OlJlbmRlckJveChFbGVtZW50JiBlbGVtZW50LCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZQogICAgICwgbV9taW5QcmVm
ZXJyZWRMb2dpY2FsV2lkdGgoLTEpCiAgICAgLCBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgt
MSkKICAgICAsIG1faW5saW5lQm94V3JhcHBlcigwKQorICAgICwgbV9yZXBhaW50VGltZXIodGhp
cywgJlJlbmRlckJveDo6cmVwYWludFRpbWVyRmlyZWQpCiB7CiAgICAgc2V0SXNCb3goKTsKIH0K
QEAgLTExMSwxMiArMTEyLDE2IEBAIFJlbmRlckJveDo6UmVuZGVyQm94KERvY3VtZW50JiBkb2N1
bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhCiAgICAgLCBtX21p
blByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKICAgICAsIG1fbWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoKC0xKQogICAgICwgbV9pbmxpbmVCb3hXcmFwcGVyKDApCisgICAgLCBtX3JlcGFpbnRUaW1l
cih0aGlzLCAmUmVuZGVyQm94OjpyZXBhaW50VGltZXJGaXJlZCkKIHsKICAgICBzZXRJc0JveCgp
OwogfQogCiBSZW5kZXJCb3g6On5SZW5kZXJCb3goKQogeworICAgIG1fcmVwYWludFRpbWVyLnN0
b3AoKTsKKyAgICBpZiAoaGFzQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKHRoaXMpKQorICAgICAg
ICByZW1vdmVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIodGhpcyk7CiB9CiAKIFJlbmRlclJlZ2lv
biogUmVuZGVyQm94OjpjbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25zKFJlbmRlclJlZ2lvbiogcmVn
aW9uKSBjb25zdApAQCAtMTIyMSw3ICsxMjI2LDIyIEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJv
eERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
CiAgICAgLy8gSWYgd2UgaGF2ZSBhIG5hdGl2ZSB0aGVtZSBhcHBlYXJhbmNlLCBwYWludCB0aGF0
IGJlZm9yZSBwYWludGluZyBvdXIgYmFja2dyb3VuZC4KICAgICAvLyBUaGUgdGhlbWUgd2lsbCB0
ZWxsIHVzIHdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBhbHNvIHBhaW50IHRoZSBDU1MgYmFja2dy
b3VuZC4KICAgICBJbnRSZWN0IHNuYXBwZWRQYWludFJlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChw
YWludFJlY3QpKTsKLSAgICBib29sIHRoZW1lUGFpbnRlZCA9IHN0eWxlKCkuaGFzQXBwZWFyYW5j
ZSgpICYmICF0aGVtZSgpLnBhaW50KHRoaXMsIHBhaW50SW5mbywgc25hcHBlZFBhaW50UmVjdCk7
CisKKyAgICBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzID0gbnVsbHB0cjsKKyAgICBpZiAo
c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpIHsKKyAgICAgICAgaWYgKGhhc0NvbnRyb2xTdGF0ZXNG
b3JSZW5kZXJlcih0aGlzKSkKKyAgICAgICAgICAgIGNvbnRyb2xTdGF0ZXMgPSBjb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIodGhpcyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29udHJv
bFN0YXRlcyA9IG5ldyBDb250cm9sU3RhdGVzKCk7CisgICAgICAgICAgICBhZGRDb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIodGhpcywgY29udHJvbFN0YXRlcyk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBib29sIHRoZW1lUGFpbnRlZCA9IHN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYmICF0aGVt
ZSgpLnBhaW50KHRoaXMsIGNvbnRyb2xTdGF0ZXMsIHBhaW50SW5mbywgc25hcHBlZFBhaW50UmVj
dCk7CisKKyAgICBpZiAoY29udHJvbFN0YXRlcyAmJiBjb250cm9sU3RhdGVzLT5uZWVkc1JlcGFp
bnQoKSkKKyAgICAgICAgbV9yZXBhaW50VGltZXIuc3RhcnRPbmVTaG90KDApOworCiAgICAgaWYg
KCF0aGVtZVBhaW50ZWQpIHsKICAgICAgICAgaWYgKGJsZWVkQXZvaWRhbmNlID09IEJhY2tncm91
bmRCbGVlZEJhY2tncm91bmRPdmVyQm9yZGVyKQogICAgICAgICAgICAgcGFpbnRCb3JkZXIocGFp
bnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIGJsZWVkQXZvaWRhbmNlKTsKQEAgLTQ3MjksNCAr
NDc0OSwxMCBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRhaW5lckJsb2NrLT5vZmZzZXRGcm9tTG9n
aWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBsb2dpY2FsVG9wKCk7CiB9CiAKK3ZvaWQgUmVuZGVyQm94
OjpyZXBhaW50VGltZXJGaXJlZChUaW1lcjxSZW5kZXJCb3g+JikKK3sKKyAgICBpZiAoIWRvY3Vt
ZW50KCkuaW5QYWdlQ2FjaGUoKSkKKyAgICAgICAgdGhpcy0+cmVwYWludCgpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXgg
OGNhMzM1YjE5OWVjNDFhYzExOTdiMjg5Nzg3YjcxOGYwMDc0OWNjOS4uZDM1ZTc4NWJlZjUwOGI5
YzNjNjdkMWZjMThhNjAwNGZlNGRkMGVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guaApAQCAtNzE1LDggKzcxNSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFJlbmRlck92
ZXJmbG93PiBtX292ZXJmbG93OwogCiBwcml2YXRlOgorICAgIHZvaWQgcmVwYWludFRpbWVyRmly
ZWQoVGltZXI8UmVuZGVyQm94PiYpOworCiAgICAgLy8gVXNlZCB0byBzdG9yZSBzdGF0ZSBiZXR3
ZWVuIHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVEaWRDaGFuZ2UKICAgICBzdGF0aWMgYm9vbCBz
X2hhZE92ZXJmbG93Q2xpcDsKKworICAgIFRpbWVyPFJlbmRlckJveD4gbV9yZXBhaW50VGltZXI7
CiB9OwogCiBSRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyQm94LCBpc0JveCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IDMyYzdkMGI1ZGM4
N2NlYTdmYTljMmJiMjExYjFmNjNjZWRlNGZkNDMuLjYzZmYxNDlkZmQ2YjA3NWUyZTQ5M2M2YjQw
NjZkZDA4ZjMyZGEyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5j
bHVkZSAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNvbnRlbnREYXRhLmgiCisj
aW5jbHVkZSAiQ29udHJvbFN0YXRlcy5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNs
dWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNjYsNyArNjcsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIFJlbmRlckVsZW1lbnQ6OnNfYWZmZWN0c1Bh
cmVudEJsb2NrID0gZmFsc2U7CiBib29sIFJlbmRlckVsZW1lbnQ6OnNfbm9Mb25nZXJBZmZlY3Rz
UGFyZW50QmxvY2sgPSBmYWxzZTsKLQorICAgIAorc3RhdGljIEhhc2hNYXA8Y29uc3QgUmVuZGVy
T2JqZWN0KiwgQ29udHJvbFN0YXRlcyo+JiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVjdCosIENv
bnRyb2xTdGF0ZXMqPj4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CisgICAgCiBSZW5kZXJFbGVt
ZW50OjpSZW5kZXJFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyT2JqZWN0KGVsZW1l
bnQpCiAgICAgLCBtX2Jhc2VUeXBlRmxhZ3MoYmFzZVR5cGVGbGFncykKQEAgLTEzNTAsNCArMTM1
NywyOCBAQCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIFJlbmRlckVsZW1lbnQ6OnJlbmRlck5hbWVk
Rmxvd1RocmVhZFdyYXBwZXIoKQogICAgIHJldHVybiByZW5kZXJlciAmJiByZW5kZXJlci0+aXNS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSA/IHRvUmVuZGVyTmFtZWRGbG93VGhyZWFkKHJlbmRlcmVy
KSA6IG51bGxwdHI7CiB9CiAKK2Jvb2wgUmVuZGVyRWxlbWVudDo6aGFzQ29udHJvbFN0YXRlc0Zv
clJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbykKK3sKKyAgICByZXR1cm4gY29udHJvbFN0
YXRlc1JlbmRlcmVyTWFwKCkuY29udGFpbnMobyk7Cit9CisKK0NvbnRyb2xTdGF0ZXMqIFJlbmRl
ckVsZW1lbnQ6OmNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8p
Cit7CisgICAgcmV0dXJuIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLmdldChvKTsKK30KKwor
dm9pZCBSZW5kZXJFbGVtZW50OjpyZW1vdmVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyT2JqZWN0KiBvKQoreworICAgIENvbnRyb2xTdGF0ZXMqIHN0YXRlcyA9IGNvbnRyb2xT
dGF0ZXNSZW5kZXJlck1hcCgpLmdldChvKTsKKyAgICBpZiAoc3RhdGVzKSB7CisgICAgICAgIGNv
bnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLnJlbW92ZShvKTsKKyAgICAgICAgZGVsZXRlIHN0YXRl
czsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyRWxlbWVudDo6YWRkQ29udHJvbFN0YXRlc0ZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbywgQ29udHJvbFN0YXRlcyogc3RhdGVzKQorewor
ICAgIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLmFkZChvLCBzdGF0ZXMpOworfQorCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCAwMjIzMDYwNmRiNGI3
OTViMjI1MWRjMjVjYTI1OWUyM2EzOWNlMWY5Li43MzYxYzUyNzdlNWI1OWFhOThiZTRlNGFjMGU0
Y2M2NjUyYjMwNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgK
QEAgLTI3LDYgKzI3LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250cm9s
U3RhdGVzOworCiBjbGFzcyBSZW5kZXJFbGVtZW50IDogcHVibGljIFJlbmRlck9iamVjdCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyRWxlbWVudCgpOwpAQCAtMTgxLDcgKzE4MywxMiBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHNldFJlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5l
Qm94ZXMoYm9vbCBiKSB7IG1fcmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hlcyA9IGI7
IH0KICAgICBib29sIHJlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXMoKSBjb25zdCB7
IHJldHVybiBtX3JlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXM7IH0KLQorICAgIAor
ICAgIHN0YXRpYyBib29sIGhhc0NvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJP
YmplY3QqKTsKKyAgICBzdGF0aWMgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlc0ZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlck9iamVjdCopOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZUNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCBh
ZGRDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgQ29udHJvbFN0
YXRlcyopOworICAgIAogcHJpdmF0ZToKICAgICB2b2lkIG5vZGUoKSBjb25zdCA9IGRlbGV0ZTsK
ICAgICB2b2lkIG5vblBzZXVkb05vZGUoKSBjb25zdCA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDU4ZWYzN2FlYzU3ZGIwNzcxZWQ1ZGE1MmUy
OWVjY2U4NDJlOTc4MjMuLmQwMjdlMDM0NDk0OGUxZmRlYzY3ZDNiZTg2MDU4ODYxODc1MWNhM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMjMsNiArMjMs
NyBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdv
cmRzLmgiCisjaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCkBAIC0yNjIs
NyArMjYzLDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgIH0KIH0KIAotYm9vbCBSZW5k
ZXJUaGVtZTo6cGFpbnQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWU6OnBhaW50KFJlbmRlck9iamVj
dCogbywgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcywgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgLy8gSWYgcGFpbnRpbmcgaXMgZGlzYWJs
ZWQsIGJ1dCB3ZSBhcmVuJ3QgdXBkYXRpbmcgY29udHJvbCB0aW50cywgdGhlbiBqdXN0IGJhaWwu
CiAgICAgLy8gSWYgd2UgYXJlIHVwZGF0aW5nIGNvbnRyb2wgdGludHMsIGp1c3Qgc2NoZWR1bGUg
YSByZXBhaW50IGlmIHRoZSB0aGVtZSBzdXBwb3J0cyB0aW50aW5nCkBAIC0yODYsNyArMjg3LDgg
QEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmUKICAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0Ogog
ICAgIGNhc2UgQnV0dG9uUGFydDoKICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6Ci0gICAg
ICAgIG1fdGhlbWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvKSwgY29u
c3RfY2FzdDxHcmFwaGljc0NvbnRleHQqPihwYWludEluZm8uY29udGV4dCksIHIsIG8tPnN0eWxl
KCkuZWZmZWN0aXZlWm9vbSgpLCAmby0+dmlldygpLmZyYW1lVmlldygpKTsKKyAgICAgICAgdXBk
YXRlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG8sIGNvbnRyb2xTdGF0ZXMpOworICAgICAgICBt
X3RoZW1lLT5wYWludChwYXJ0LCBjb250cm9sU3RhdGVzLCBjb25zdF9jYXN0PEdyYXBoaWNzQ29u
dGV4dCo+KHBhaW50SW5mby5jb250ZXh0KSwgciwgby0+c3R5bGUoKS5lZmZlY3RpdmVab29tKCks
ICZvLT52aWV3KCkuZnJhbWVWaWV3KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC03MTMsNyArNzE1LDggQEAgYm9vbCBSZW5kZXJUaGVt
ZTo6aXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgQm9yZGVy
RGF0YSYgYm8KIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFJlcGFpbnRSZWN0KGNvbnN0IFJlbmRl
ck9iamVjdCogbywgSW50UmVjdCYgcikKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQotICAgIG1fdGhl
bWUtPmluZmxhdGVDb250cm9sUGFpbnRSZWN0KG8tPnN0eWxlKCkuYXBwZWFyYW5jZSgpLCBjb250
cm9sU3RhdGVzRm9yUmVuZGVyZXIobyksIHIsIG8tPnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsK
KyAgICBDb250cm9sU3RhdGVzIHN0YXRlcyhleHRyYWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVy
KG8pKTsKKyAgICBtX3RoZW1lLT5pbmZsYXRlQ29udHJvbFBhaW50UmVjdChvLT5zdHlsZSgpLmFw
cGVhcmFuY2UoKSwgJnN0YXRlcywgciwgby0+c3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0obyk7CiAgICAgVU5VU0VEX1BBUkFNKHIpOwpAQCAtNzI1LDE0
ICs3MjgsMTQgQEAgYm9vbCBSZW5kZXJUaGVtZTo6c3VwcG9ydHNGb2N1c1JpbmcoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogICAgIHJldHVybiAoc3R5bGUtPmhhc0FwcGVhcmFuY2Uo
KSAmJiBzdHlsZS0+YXBwZWFyYW5jZSgpICE9IFRleHRGaWVsZFBhcnQgJiYgc3R5bGUtPmFwcGVh
cmFuY2UoKSAhPSBUZXh0QXJlYVBhcnQgJiYgc3R5bGUtPmFwcGVhcmFuY2UoKSAhPSBNZW51bGlz
dEJ1dHRvblBhcnQgJiYgc3R5bGUtPmFwcGVhcmFuY2UoKSAhPSBMaXN0Ym94UGFydCk7CiB9CiAK
LWJvb2wgUmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdlZChSZW5kZXJPYmplY3QqIG8sIENvbnRyb2xT
dGF0ZSBzdGF0ZSkgY29uc3QKK2Jvb2wgUmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdlZChSZW5kZXJP
YmplY3QqIG8sIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZSkgY29uc3QKIHsKICAgICAvLyBE
ZWZhdWx0IGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhlIGNvbnRyb2xzIGRvbid0IHJlc3BvbmQg
dG8gY2hhbmdlcyBpbiA6aG92ZXIgc3RhdGUKLSAgICBpZiAoc3RhdGUgPT0gSG92ZXJTdGF0ZSAm
JiAhc3VwcG9ydHNIb3Zlcigmby0+c3R5bGUoKSkpCisgICAgaWYgKHN0YXRlID09IENvbnRyb2xT
dGF0ZXM6OkhvdmVyU3RhdGUgJiYgIXN1cHBvcnRzSG92ZXIoJm8tPnN0eWxlKCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBBc3N1bWUgcHJlc3NlZCBzdGF0ZSBpcyBvbmx5IHJl
c3BvbmRlZCB0byBpZiB0aGUgY29udHJvbCBpcyBlbmFibGVkLgotICAgIGlmIChzdGF0ZSA9PSBQ
cmVzc2VkU3RhdGUgJiYgIWlzRW5hYmxlZChvKSkKKyAgICBpZiAoc3RhdGUgPT0gQ29udHJvbFN0
YXRlczo6UHJlc3NlZFN0YXRlICYmICFpc0VuYWJsZWQobykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIFJlcGFpbnQgdGhlIGNvbnRyb2wuCkBAIC03NDAsMzQgKzc0Myw0MCBAQCBi
b29sIFJlbmRlclRoZW1lOjpzdGF0ZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiBvLCBDb250cm9sU3Rh
dGUgc3RhdGUpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNvbnRyb2xTdGF0ZXMgUmVu
ZGVyVGhlbWU6OmNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8p
IGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lOjp1cGRhdGVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIo
Y29uc3QgUmVuZGVyT2JqZWN0KiBvLCBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzKSBjb25z
dAogewotICAgIENvbnRyb2xTdGF0ZXMgcmVzdWx0ID0gMDsKKyAgICBDb250cm9sU3RhdGVzIG5l
d1N0YXRlcyA9IGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobyk7CisgICAgY29udHJv
bFN0YXRlcy0+c2V0U3RhdGVzKG5ld1N0YXRlcy5zdGF0ZXMoKSk7Cit9CisKK0NvbnRyb2xTdGF0
ZXM6OlN0YXRlcyBSZW5kZXJUaGVtZTo6ZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihj
b25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0Cit7CisgICAgQ29udHJvbFN0YXRlczo6U3RhdGVz
IHN0YXRlcyA9IDA7CiAgICAgaWYgKGlzSG92ZXJlZChvKSkgewotICAgICAgICByZXN1bHQgfD0g
SG92ZXJTdGF0ZTsKKyAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OkhvdmVyU3RhdGU7
CiAgICAgICAgIGlmIChpc1NwaW5VcEJ1dHRvblBhcnRIb3ZlcmVkKG8pKQotICAgICAgICAgICAg
cmVzdWx0IHw9IFNwaW5VcFN0YXRlOworICAgICAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0
ZXM6OlNwaW5VcFN0YXRlOwogICAgIH0KICAgICBpZiAoaXNQcmVzc2VkKG8pKSB7Ci0gICAgICAg
IHJlc3VsdCB8PSBQcmVzc2VkU3RhdGU7CisgICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVz
OjpQcmVzc2VkU3RhdGU7CiAgICAgICAgIGlmIChpc1NwaW5VcEJ1dHRvblBhcnRQcmVzc2VkKG8p
KQotICAgICAgICAgICAgcmVzdWx0IHw9IFNwaW5VcFN0YXRlOworICAgICAgICAgICAgc3RhdGVz
IHw9IENvbnRyb2xTdGF0ZXM6OlNwaW5VcFN0YXRlOwogICAgIH0KICAgICBpZiAoaXNGb2N1c2Vk
KG8pICYmIG8tPnN0eWxlKCkub3V0bGluZVN0eWxlSXNBdXRvKCkpCi0gICAgICAgIHJlc3VsdCB8
PSBGb2N1c1N0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6Rm9jdXNTdGF0
ZTsKICAgICBpZiAoaXNFbmFibGVkKG8pKQotICAgICAgICByZXN1bHQgfD0gRW5hYmxlZFN0YXRl
OworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlOwogICAgIGlm
IChpc0NoZWNrZWQobykpCi0gICAgICAgIHJlc3VsdCB8PSBDaGVja2VkU3RhdGU7CisgICAgICAg
IHN0YXRlcyB8PSBDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGU7CiAgICAgaWYgKGlzUmVhZE9u
bHlDb250cm9sKG8pKQotICAgICAgICByZXN1bHQgfD0gUmVhZE9ubHlTdGF0ZTsKKyAgICAgICAg
c3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OlJlYWRPbmx5U3RhdGU7CiAgICAgaWYgKGlzRGVmYXVs
dChvKSkKLSAgICAgICAgcmVzdWx0IHw9IERlZmF1bHRTdGF0ZTsKKyAgICAgICAgc3RhdGVzIHw9
IENvbnRyb2xTdGF0ZXM6OkRlZmF1bHRTdGF0ZTsKICAgICBpZiAoIWlzQWN0aXZlKG8pKQotICAg
ICAgICByZXN1bHQgfD0gV2luZG93SW5hY3RpdmVTdGF0ZTsKKyAgICAgICAgc3RhdGVzIHw9IENv
bnRyb2xTdGF0ZXM6OldpbmRvd0luYWN0aXZlU3RhdGU7CiAgICAgaWYgKGlzSW5kZXRlcm1pbmF0
ZShvKSkKLSAgICAgICAgcmVzdWx0IHw9IEluZGV0ZXJtaW5hdGVTdGF0ZTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6SW5kZXRlcm1pbmF0ZVN0
YXRlOworICAgIHJldHVybiBzdGF0ZXM7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWU6OmlzQWN0aXZl
KGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmgKaW5kZXggNjg1NDYzNDY3Mzg5ODFjM2EzYWEyZGM0ZmJmOTk3YTUxNzA2ZmRiOC4u
NjcwNDI2ZWI3ZDkwZjNiNGUwZGEzZTdkMGE1MzQyZGM5ZjgxYzMyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ1NTU3R5bGVTaGVldDsKK2NsYXNzIENvbnRyb2xTdGF0ZXM7CiBjbGFz
cyBFbGVtZW50OwogY2xhc3MgRmlsZUxpc3Q7CiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwpAQCAt
NzgsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHRvIHBh
aW50IHRoZSB3aWRnZXQgYXMgYSBiYWNrZ3JvdW5kIG9mIHRoZSBSZW5kZXJPYmplY3QuICBBIHdp
ZGdldCdzIGZvcmVncm91bmQsIGUuZy4sIHRoZQogICAgIC8vIHRleHQgb2YgYSBidXR0b24sIGlz
IGFsd2F5cyByZW5kZXJlZCBieSB0aGUgZW5naW5lIGl0c2VsZi4gIFRoZSBib29sZWFuIHJldHVy
biB2YWx1ZSBpbmRpY2F0ZXMKICAgICAvLyB3aGV0aGVyIHRoZSBDU1MgYm9yZGVyL2JhY2tncm91
bmQgc2hvdWxkIGFsc28gYmUgcGFpbnRlZC4KLSAgICBib29sIHBhaW50KFJlbmRlck9iamVjdCos
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIHBhaW50KFJlbmRl
ck9iamVjdCosIENvbnRyb2xTdGF0ZXMqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7CiAgICAgYm9vbCBwYWludEJvcmRlck9ubHkoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIGJvb2wgcGFpbnREZWNvcmF0aW9ucyhSZW5kZXJP
YmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKQEAgLTEyNiw3ICsx
MjcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIg
YSByZWxldmFudCBzdGF0ZSBjaGFuZ2VzIG9uIGEgcGFydGljdWxhciB0aGVtZWQgb2JqZWN0LCBl
LmcuLCB0aGUgbW91c2UgYmVjb21lcyBwcmVzc2VkCiAgICAgLy8gb3IgYSBjb250cm9sIGJlY29t
ZXMgZGlzYWJsZWQuCi0gICAgdmlydHVhbCBib29sIHN0YXRlQ2hhbmdlZChSZW5kZXJPYmplY3Qq
LCBDb250cm9sU3RhdGUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdGF0ZUNoYW5nZWQoUmVu
ZGVyT2JqZWN0KiwgQ29udHJvbFN0YXRlczo6U3RhdGVzKSBjb25zdDsKIAogICAgIC8vIFRoaXMg
bWV0aG9kIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgdGhlbWUgY2hhbmdlcyBvbiB0aGUgc3lzdGVt
IGluIG9yZGVyIHRvIGZsdXNoIGNhY2hlZCByZXNvdXJjZXMgZnJvbSB0aGUKICAgICAvLyBvbGQg
dGhlbWUuCkBAIC0zNjksOCArMzcwLDggQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKIHB1YmxpYzoK
LSAgICAvLyBNZXRob2RzIGZvciBzdGF0ZSBxdWVyeWluZwotICAgIENvbnRyb2xTdGF0ZXMgY29u
dHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3Q7CisgICAg
dm9pZCB1cGRhdGVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kiwg
Q29udHJvbFN0YXRlcyopIGNvbnN0OworICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBleHRyYWN0
Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogICAg
IGJvb2wgaXNBY3RpdmUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgYm9vbCBpc0No
ZWNrZWQoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgYm9vbCBpc0luZGV0ZXJtaW5h
dGUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KaW5kZXggMDU2ZTlkNDc2ZjQ4NDQ0NGE1ZmUxZDIwYjEwNTdkODRm
N2IwNjliOS4uYWQ1M2I0Y2EzZDdlNzIxMDNiMjI5MzJmNDM0OWI5ZjQ3OGQzNzBlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjEyLDcgKzIxMiw4
IEBAIFJlbmRlclRoZW1lTWFjOjp+UmVuZGVyVGhlbWVNYWMoKQogCiBOU1ZpZXcqIFJlbmRlclRo
ZW1lTWFjOjpkb2N1bWVudFZpZXdGb3IoUmVuZGVyT2JqZWN0KiBvKSBjb25zdAogewotICAgIHJl
dHVybiBUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoJm8tPnZpZXcoKS5mcmFtZVZpZXcoKSwgY29udHJv
bFN0YXRlc0ZvclJlbmRlcmVyKG8pKTsKKyAgICBDb250cm9sU3RhdGVzIHN0YXRlcyhleHRyYWN0
Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG8pKTsKKyAgICByZXR1cm4gVGhlbWVNYWM6OmVuc3Vy
ZWRWaWV3KCZvLT52aWV3KCkuZnJhbWVWaWV3KCksICZzdGF0ZXMpOwogfQogCiAjaWYgRU5BQkxF
KFZJREVPKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227996</attachid>
            <date>2014-03-27 15:42:22 -0700</date>
            <delta_ts>2014-03-27 17:59:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130736-20140328094136.patch</filename>
            <type>text/plain</type>
            <size>49550</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRlNTdiNzExY2RiODYw
YjQwY2ZkZjJmMjcxNmJjYzFlNGViYTE2Yi4uMDI3Nzg5MTA4OGZkNDQyNjgwZWI3YzA1YjUyYjhi
YzAxZTMxNTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE0LTAzLTI3ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGZvcm0gY29udHJv
bHMgdGhhdCBtYXkgbmVlZCBpbmNyZW1lbnRhbCByZWRyYXcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDczNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBST1RPVFlQRSBQQVRDSCEhCisKKyAgICAgICAg
QXMgeW91IGNhbiBzZWUgdGhpcyBpcyBhIGZhaXIgYml0IGxhcmdlciB0aGFuIHRoZQorICAgICAg
ICBsYXN0IHBhdGNoLiBEb3duc2lkZXM6CisgICAgICAgIAorICAgICAgICAtIHBlciBSZW5kZXJC
b3ggdGltZXIgZm9yIHJlcGFpbnRzIHJhdGhlciB0aGFuIGhhdmluZworICAgICAgICAgIGEgc2lu
Z2xlIHRpbWVyIGluIFJlbmRlclRoZW1lCisgICAgICAgIC0gd2UncmUgc3RpbGwga2VlcGluZyBh
IGNvbnRyb2wgaW5zdGFuY2UgcGVyIHJlbmRlcmVyCisKKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6c2V0SG92ZXJlZCk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVD
aGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzYWJsZWRTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVhZE9ubHlB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0Q2hlY2tlZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRJbmRldGVybWluYXRlKToKKyAgICAgICAg
KiBodG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRp
b25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vVGhlbWUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpzZWxlY3Rpb25Db2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpUaGVtZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmluZmxhdGVDb250
cm9sUGFpbnRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZVR5cGVzLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tOgorICAgICAgICAoLVtXZWJDb3JlVGhlbWVWaWV3IGFkZFN1YnZpZXc6XSk6CisgICAg
ICAgIChXZWJDb3JlOjp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydENv
bnRyb2xTdGF0ZXNUb1RoZW1lRHJhd1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrYm94
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb25maWd1cmVDaGVja2JveCk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVDaGVja2JveENlbGwpOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQ2hl
Y2tib3hDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50Q2hlY2tib3gpOgorICAgICAgICAo
V2ViQ29yZTo6cmFkaW8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRSYWRpbyk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRVcEJ1dHRvbkNlbGwpOgorICAgICAgICAoV2ViQ29yZTo6YnV0dG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50
U3RlcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZW5zdXJlZFZpZXcpOgorICAg
ICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja2Jv
eCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OlJlbmRlckJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6On5SZW5kZXJCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludEJv
eERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bGF5b3V0T3ZlcmZs
b3dSZWN0Rm9yUHJvcGFnYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb250cm9sU3RhdGVzUmVuZGVyZXJNYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxl
bWVudDo6aGFzQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OmNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50OjpyZW1vdmVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6YWRkQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdFJlcGFpbnRSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpzdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OnVwZGF0ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6ZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y29udHJvbFN0YXRlc0ZvclJlbmRl
cmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZU1hYzo6ZG9jdW1lbnRWaWV3Rm9yKToKKwogMjAxNC0wMy0yNCAgTWFydGluIEhvZG92
YW4gIDxtaG9kb3ZhbkBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgRU5BQkxFKENTU19HUklE
X0xBWU9VVCkgZ3VhcmQgZm9yIENTU0dyaWRMaW5lTmFtZXNWYWx1ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRiYmIzYWZiNDBj
ODk1MmU3Y2NmMmM0YmNjMjhlZTY2ZTFkNjkwMDQuLjdkNmNjYWMzN2ExNmQxOTY4NDkyOTM2MWM1
OGYxNTkxNWM5OWQwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTgwMzIsNiArODAzMiw3IEBACiAJCTMxMDc4Q0M0MTg4MEE2
QTYwMDgwOTlEQyAvKiBPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmlkbDsgcGF0aCA9IGNhbnZhcy9P
RVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzEwNzhDQzUxODgwQUFBQTAwODA5OURDIC8qIEpTT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVh
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09FU1RleHR1cmVI
YWxmRmxvYXRMaW5lYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA3OEND
NjE4ODBBQUFBMDA4MDk5REMgLyogSlNPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTFDMDhCQzE4RTM1RDY4MDBCNjU2MTUg
LyogQ29udHJvbFN0YXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250
cm9sU3RhdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMjg4RTZFMEUzMDA1
RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyODhFNkYwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENT
U0tleWZyYW1lUnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRD
U1NLZXlmcmFtZVJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyODhFNzAw
RTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDg3NCw2ICsyMDg3NSw3IEBACiAJCUJDRjFB
NUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMzExQzA4QkMxOEUzNUQ2ODAwQjY1NjE1IC8qIENvbnRy
b2xTdGF0ZXMuaCAqLywKIAkJCQk0OUU5MTJBNDBFRkFDOEU2MDA5RDBDQUYgLyogYW5pbWF0aW9u
ICovLAogCQkJCUZEMzE2MDQwMTJCMDI2QTMwMEMxQTM1OSAvKiBhdWRpbyAqLywKIAkJCQkxQUU0
MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
MzUwNzQ2MTZhMWQ2NzQ0MDIwMDQ1M2Y1N2ExYWU3Y2VlM2ExNTJiOC4uZDE3NDlkMGQ2ZDNlMjM5
MzhkOTA3YmFlYWRlYzFmYTVkN2VlYjJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNDg3
LDcgKzQ4Nyw3IEBAIHZvaWQgRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZmxhZywgYm9vbCBwYXVz
ZSkKICAgICBpZiAocmVhY3RzVG9QcmVzcykKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygp
OwogCi0gICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYmIHJlbmRl
cmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFByZXNzZWRTdGF0ZSkpCisg
ICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYmIHJlbmRlcmVyKCkt
PnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIENvbnRyb2xTdGF0ZXM6OlByZXNzZWRT
dGF0ZSkpCiAgICAgICAgIHJlYWN0c1RvUHJlc3MgPSB0cnVlOwogCiAgICAgLy8gVGhlIHJlc3Qg
b2YgdGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIGEgZmVhdHVyZSB0aGF0IG9ubHkgd29ya3MgaWYg
dGhlCkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBFbGVtZW50OjpzZXRIb3ZlcmVkKGJvb2wgZmxh
ZykKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkt
PnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0
YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBIb3ZlclN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+
dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6SG92ZXJTdGF0
ZSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoYm9vbCBhbGlnblRvVG9wKSAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggNjEwMWY2NGJk
NjhmY2UyMjgwMGI0Njc1MzFjMjkzYjJiMWM0MTIwOC4uNDlhODc4M2NjOTNjODZkYzg4NTEyNTEx
Y2ZmMTY3YjI0YTZmNTE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAKQEAgLTE3NDUsNyArMTc0NSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OmZvY3VzZWRP
ckFjdGl2ZVN0YXRlQ2hhbmdlZCgpCiAgICAgICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNh
bGMoKTsKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5k
ZXJlcigpKQogICAgICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5zdHlsZSgpLmhh
c0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJlci0+dGhlbWUoKS5zdGF0ZUNo
YW5nZWQocmVuZGVyZXIsIEZvY3VzU3RhdGUpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyLT50
aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlciwgQ29udHJvbFN0YXRlczo6Rm9jdXNTdGF0ZSk7
CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcAppbmRleCAzYjI1Y2IwZDNjOGRkZTVhMTJjMzU2OGJkZGY2NGZmNjFkNmRm
MWNkLi4wZTA1N2UxYjUxMGJjYTFiOTJhOGY1YjRlMWU0MWVjMmQ2ZTc4MDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTE1NCw3ICsx
NTQsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc2FibGVkU3RhdGVDaGFuZ2Vk
KCkKICAgICBzZXROZWVkc1dpbGxWYWxpZGF0ZUNoZWNrKCk7CiAgICAgZGlkQWZmZWN0U2VsZWN0
b3IoQWZmZWN0ZWRTZWxlY3RvckRpc2FibGVkIHwgQWZmZWN0ZWRTZWxlY3RvckVuYWJsZWQpOwog
ICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgp
KQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBF
bmFibGVkU3RhdGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChy
ZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpFbmFibGVkU3RhdGUpOwogfQogCiB2b2lkIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRPbmx5QXR0cmlidXRlQ2hhbmdlZCgpCkBAIC0xNjIsNyAr
MTYyLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZWFkT25seUF0dHJpYnV0ZUNo
YW5nZWQoKQogICAgIHNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKTsKICAgICBzZXROZWVkc1N0
eWxlUmVjYWxjKCk7CiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5o
YXNBcHBlYXJhbmNlKCkpCi0gICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2Vk
KHJlbmRlcmVyKCksIFJlYWRPbmx5U3RhdGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgp
LnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpSZWFkT25seVN0YXRlKTsK
IH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5n
ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNThhOTQw
Y2Q2MTBlOTAyNTgxOTMwMmZlYjI4N2UzZDI0ZTBkYjdhOC4uODA0MDY5Y2U0Mzc0ZmI2OWQwMzEx
NWQ1NWRlNzI2ODhmMDNkNTVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCkBAIC04NTksNyArODU5LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVj
a2VkKGJvb2wgbm93Q2hlY2tlZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEIKICAgICBp
ZiAoQ2hlY2tlZFJhZGlvQnV0dG9ucyogYnV0dG9ucyA9IGNoZWNrZWRSYWRpb0J1dHRvbnMoKSkK
ICAgICAgICAgICAgIGJ1dHRvbnMtPnVwZGF0ZUNoZWNrZWRTdGF0ZSh0aGlzKTsKICAgICBpZiAo
cmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAg
ICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0
YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIo
KSwgQ29udHJvbFN0YXRlczo6Q2hlY2tlZFN0YXRlKTsKICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hl
Y2soKTsKIAogICAgIC8vIElkZWFsbHkgd2UnZCBkbyB0aGlzIGZyb20gdGhlIHJlbmRlciB0cmVl
IChtYXRjaGluZwpAQCAtODkzLDcgKzg5Myw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0
SW5kZXRlcm1pbmF0ZShib29sIG5ld1ZhbHVlKQogICAgIGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVj
dGVkU2VsZWN0b3JJbmRldGVybWluYXRlKTsKIAogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRl
cmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVt
ZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDaGVja2VkU3RhdGUpOworICAgICAgICByZW5k
ZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpD
aGVja2VkU3RhdGUpOwogfQogCiBpbnQgSFRNTElucHV0RWxlbWVudDo6c2l6ZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IDllMzZmYTljZjRk
NjYxYWFmMGJjM2JkZGYzN2U5ZTUxMjRkZDNhODEuLjQ5ZjQ4YmYzODFlOWI0NTA0OTQ0ZmJhMDU0
MDVhOTlkNDc5MzE2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICAgICAg
aWYgKG9sZERpc2FibGVkICE9IG1fZGlzYWJsZWQpIHsKICAgICAgICAgICAgIGRpZEFmZmVjdFNl
bGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JEaXNhYmxlZCB8IEFmZmVjdGVkU2VsZWN0b3JFbmFibGVk
KTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFz
QXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVD
aGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJsZWRTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVy
ZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6RW5h
YmxlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBzZWxlY3RlZEF0
dHIpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBtYXRjaCB3aGF0IHRoZSBIVE1M
IHNwZWNpZmljYXRpb24gc2F5cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRyb2xTdGF0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRyb2xTdGF0ZXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41MzgxN2MxZTU3NWFkNTIwYjY3M2FkMTIyYWQyZmRhZmJkNzFkYTA0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udHJvbFN0YXRlcy5o
CkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBDb250cm9sU3RhdGVzX2gKKyNkZWZpbmUgQ29udHJvbFN0YXRlc19o
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3R5cGVkZWYgdm9pZCogUGxhdGZvcm1Db250
cm9sSW5zdGFuY2U7CisgICAgCitjbGFzcyBDb250cm9sU3RhdGVzIHsKK3B1YmxpYzoKKyAgICBl
bnVtIHsKKyAgICAgICAgSG92ZXJTdGF0ZSA9IDEsCisgICAgICAgIFByZXNzZWRTdGF0ZSA9IDEg
PDwgMSwKKyAgICAgICAgRm9jdXNTdGF0ZSA9IDEgPDwgMiwKKyAgICAgICAgRW5hYmxlZFN0YXRl
ID0gMSA8PCAzLAorICAgICAgICBDaGVja2VkU3RhdGUgPSAxIDw8IDQsCisgICAgICAgIFJlYWRP
bmx5U3RhdGUgPSAxIDw8IDUsCisgICAgICAgIERlZmF1bHRTdGF0ZSA9IDEgPDwgNiwKKyAgICAg
ICAgV2luZG93SW5hY3RpdmVTdGF0ZSA9IDEgPDwgNywKKyAgICAgICAgSW5kZXRlcm1pbmF0ZVN0
YXRlID0gMSA8PCA4LAorICAgICAgICBTcGluVXBTdGF0ZSA9IDEgPDwgOSwgLy8gU3ViLXN0YXRl
IGZvciBIb3ZlclN0YXRlIGFuZCBQcmVzc2VkU3RhdGUuCisgICAgICAgIEFsbFN0YXRlcyA9IDB4
ZmZmZmZmZmYKKyAgICB9OworICAgIAorICAgIHR5cGVkZWYgdW5zaWduZWQgU3RhdGVzOworICAg
IAorICAgIENvbnRyb2xTdGF0ZXMoU3RhdGVzIHN0YXRlcykKKyAgICAgICAgOiBtX3N0YXRlcyhz
dGF0ZXMpCisgICAgICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKKyAgICAgICAgLCBtX25lZWRz
UmVwYWludChmYWxzZSkKKyAgICAgICAgLCBtX2lzRGlydHkoZmFsc2UpCisgICAgICAgICwgbV9j
b250cm9sSW5zdGFuY2UobnVsbHB0cikKKyAgICB7CisgICAgfQorICAgIAorICAgIENvbnRyb2xT
dGF0ZXMoKQorICAgICAgICA6IENvbnRyb2xTdGF0ZXMoMCkKKyAgICB7CisgICAgfQorICAgIAor
ICAgIH5Db250cm9sU3RhdGVzKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIFN0YXRlcyBzdGF0
ZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlczsgfQorICAgIHZvaWQgc2V0U3RhdGVzKFN0YXRl
cyBuZXdTdGF0ZXMpCisgICAgeworICAgICAgICBpZiAobmV3U3RhdGVzID09IG1fc3RhdGVzKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3N0YXRlcyA9IG5ld1N0YXRlczsKKyAgICAg
ICAgbV9pc0RpcnR5ID0gbV9pbml0aWFsaXplZDsKKyAgICAgICAgbV9pbml0aWFsaXplZCA9IHRy
dWU7CisgICAgfQorICAgIAorICAgIGJvb2wgbmVlZHNSZXBhaW50KCkgY29uc3QgeyByZXR1cm4g
bV9uZWVkc1JlcGFpbnQ7IH0KKyAgICB2b2lkIHNldE5lZWRzUmVwYWludChib29sIHIpIHsgbV9u
ZWVkc1JlcGFpbnQgPSByOyB9CisgICAgCisgICAgYm9vbCBpc0RpcnR5KCkgY29uc3QgeyByZXR1
cm4gbV9pc0RpcnR5OyB9CisgICAgdm9pZCBzZXREaXJ0eShib29sIGQpIHsgbV9pc0RpcnR5ID0g
ZDsgfQorICAgIAorICAgIFBsYXRmb3JtQ29udHJvbEluc3RhbmNlIHBsYXRmb3JtQ29udHJvbCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbEluc3RhbmNlOyB9CisgICAgdm9pZCBzZXRQbGF0Zm9y
bUNvbnRyb2woUGxhdGZvcm1Db250cm9sSW5zdGFuY2UgaW5zdGFuY2UpIHsgbV9jb250cm9sSW5z
dGFuY2UgPSBpbnN0YW5jZTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBTdGF0ZXMgbV9zdGF0ZXM7
CisgICAgYm9vbCBtX2luaXRpYWxpemVkOworICAgIGJvb2wgbV9uZWVkc1JlcGFpbnQ7CisgICAg
Ym9vbCBtX2lzRGlydHk7CisgICAgUGxhdGZvcm1Db250cm9sSW5zdGFuY2UgbV9jb250cm9sSW5z
dGFuY2U7Cit9OworICAgIAorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCmluZGV4
IDUwNTA0NmM0ZGU4N2VjNmFkZWIzYjgxOGVhZWNkMDk3YmJhZjBjM2UuLmZiMDFhN2ExYzVlNDgx
NmE2ZTA0NTAzYTYyNzUxMzAyNmQyNGE4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaApAQCAt
MjcsNiArMjcsNyBAQAogI2RlZmluZSBUaGVtZV9oCiAKICNpbmNsdWRlICJDb2xvci5oIgorI2lu
Y2x1ZGUgIkNvbnRyb2xTdGF0ZXMuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgIkxlbmd0aEJveC5oIgpAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGNvbnRyb2xEcmF3c0ZvY3VzT3V0bGluZShDb250cm9sUGFydCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gTWV0aG9kcyBmb3Igb2J0YWluaW5nIHBs
YXRmb3JtLXNwZWNpZmljIGNvbG9ycy4KLSAgICB2aXJ0dWFsIENvbG9yIHNlbGVjdGlvbkNvbG9y
KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGUsIFNlbGVjdGlvblBhcnQpIGNvbnN0IHsgcmV0dXJu
IENvbG9yKCk7IH0KKyAgICB2aXJ0dWFsIENvbG9yIHNlbGVjdGlvbkNvbG9yKENvbnRyb2xQYXJ0
LCBjb25zdCBDb250cm9sU3RhdGVzKiwgU2VsZWN0aW9uUGFydCkgY29uc3QgeyByZXR1cm4gQ29s
b3IoKTsgfQogICAgIHZpcnR1YWwgQ29sb3IgdGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgY29u
c3QgeyByZXR1cm4gQ29sb3IoKTsgfQogICAgIAogICAgIC8vIENTUyBzeXN0ZW0gY29sb3JzIGFu
ZCBmb250cwpAQCAtOTcsMTMgKzk4LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY29u
dHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFjZShDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIC8vIE1ldGhvZCBmb3IgcGFpbnRpbmcgYSBjb250cm9sLiBUaGUgcmVjdCBp
cyBpbiB6b29tZWQgY29vcmRpbmF0ZXMuCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQ
YXJ0LCBDb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiAvKnpv
b21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8sIFNjcm9sbFZpZXcqKSBjb25zdCB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMqLCBHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29t
RmFjdG9yKi8sIFNjcm9sbFZpZXcqKSB7IH0KIAogICAgIC8vIFNvbWUgY29udHJvbHMgbWF5IHNw
aWxsIG91dCBvZiB0aGVpciBjb250YWluZXJzIChlLmcuLCB0aGUgY2hlY2sgb24gYW4gT1MgWCBj
aGVja2JveCkuICBXaGVuIHRoZXNlIGNvbnRyb2xzIHJlcGFpbnQsCiAgICAgLy8gdGhlIHRoZW1l
IG5lZWRzIHRvIGNvbW11bmljYXRlIHRoaXMgaW5mbGF0ZWQgcmVjdCB0byB0aGUgZW5naW5lIHNv
IHRoYXQgaXQgY2FuIGludmFsaWRhdGUgdGhlIHdob2xlIGNvbnRyb2wuCiAgICAgLy8gVGhlIHJl
Y3QgcGFzc2VkIGluIGlzIGluIHpvb21lZCBjb29yZGluYXRlcywgc28gdGhlIGluZmxhdGlvbiBz
aG91bGQgdGFrZSB0aGF0IGludG8gYWNjb3VudCBhbmQgbWFrZSBzdXJlIHRoZSBpbmZsYXRpb24K
ICAgICAvLyBhbW91bnQgaXMgYWxzbyBzY2FsZWQgYnkgdGhlIHpvb21GYWN0b3IuCi0gICAgdmly
dHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBDb250cm9sU3Rh
dGVzLCBJbnRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFy
dCwgY29uc3QgQ29udHJvbFN0YXRlcyosIEludFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9hdCAv
Knpvb21GYWN0b3IqLykgY29uc3QgeyB9CiAgICAgCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2Fs
bGVkIG9uY2UsIGZyb20gUmVuZGVyVGhlbWU6OmFkanVzdERlZmF1bHRTdHlsZVNoZWV0KCksIHRv
IGxldCBlYWNoIHBsYXRmb3JtIGFkanVzdAogICAgIC8vIHRoZSBkZWZhdWx0IENTUyBydWxlcyBp
biBodG1sLmNzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlw
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAppbmRleCBkOGFiMThm
ZmFjOWI1MDRmZjdmOWFmOGEwMDQ5MzlhMDAxMTU2Y2IxLi45NzNlNzc0NjBiZWM2NTJjYWNhMGRl
ZDNmNTZmOGJmOTRhNTY3YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aGVtZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oCkBA
IC0yOCwyMiArMjgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gQ29udHJvbFN0
YXRlIHsKLSAgICBIb3ZlclN0YXRlID0gMSwKLSAgICBQcmVzc2VkU3RhdGUgPSAxIDw8IDEsCi0g
ICAgRm9jdXNTdGF0ZSA9IDEgPDwgMiwKLSAgICBFbmFibGVkU3RhdGUgPSAxIDw8IDMsCi0gICAg
Q2hlY2tlZFN0YXRlID0gMSA8PCA0LAotICAgIFJlYWRPbmx5U3RhdGUgPSAxIDw8IDUsCi0gICAg
RGVmYXVsdFN0YXRlID0gMSA8PCA2LAotICAgIFdpbmRvd0luYWN0aXZlU3RhdGUgPSAxIDw8IDcs
Ci0gICAgSW5kZXRlcm1pbmF0ZVN0YXRlID0gMSA8PCA4LAotICAgIFNwaW5VcFN0YXRlID0gMSA8
PCA5LCAvLyBTdWItc3RhdGUgZm9yIEhvdmVyU3RhdGUgYW5kIFByZXNzZWRTdGF0ZS4KLSAgICBB
bGxTdGF0ZXMgPSAweGZmZmZmZmZmCi19OwotCi10eXBlZGVmIHVuc2lnbmVkIENvbnRyb2xTdGF0
ZXM7Ci0KIC8vIE11c3QgZm9sbG93IENTU1ZhbHVlS2V5d29yZHMuaW4gb3JkZXIKIGVudW0gQ29u
dHJvbFBhcnQgewogICAgIE5vQ29udHJvbFBhcnQsIENoZWNrYm94UGFydCwgUmFkaW9QYXJ0LCBQ
dXNoQnV0dG9uUGFydCwgU3F1YXJlQnV0dG9uUGFydCwgQnV0dG9uUGFydCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKaW5kZXggOGI3ZTk4MjJkZmI1NDFkOTMwNDIzYTRmNTdj
NzFmYWVjMDk1OGUzMC4uZDczOTUyMzYwYjQwNDZiNmY3MWUzNzRiYWIyNGVjNzNkZWFmYjVmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKQEAgLTUxLDExICs1MSwxMSBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFj
ZShDb250cm9sUGFydCBwYXJ0KSBjb25zdCB7IHJldHVybiBwYXJ0ID09IFB1c2hCdXR0b25QYXJ0
OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMs
IEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yLCBTY3Jv
bGxWaWV3KikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0
KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzLCBJbnRSZWN0JiwgZmxvYXQgem9vbUZhY3Rvcikg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVz
KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IsIFNj
cm9sbFZpZXcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWlu
dFJlY3QoQ29udHJvbFBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqLCBJbnRSZWN0JiwgZmxvYXQg
em9vbUZhY3RvcikgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogT25jZSBSZW5kZXJUaGVtZU1hYyBp
cyBjb252ZXJ0ZWQgb3ZlciB0byB1c2UgVGhlbWUgdGhlbiB0aGlzIGNhbiBiZSBpbnRlcm5hbCB0
byBUaGVtZU1hYy4KLSAgICBzdGF0aWMgTlNWaWV3KiBlbnN1cmVkVmlldyhTY3JvbGxWaWV3Kiwg
Q29udHJvbFN0YXRlcyk7CisgICAgc3RhdGljIE5TVmlldyogZW5zdXJlZFZpZXcoU2Nyb2xsVmll
dyosIGNvbnN0IENvbnRyb2xTdGF0ZXMqKTsKICAgICBzdGF0aWMgdm9pZCBzZXRGb2N1c1JpbmdD
bGlwUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9UaGVtZU1hYy5tbQppbmRleCA4NDUyNWNjZGY3YmM0MzViODA4NjEyMTdhMGExZTBiZjBhY2M2
M2NhLi43NWMwNjg2YmMwNzVlNWRjYzQ3MWMxZjVjZDg4YTQyZjA4MmUxZmVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC0zNSw2ICszNSwxNSBAQAogI2ltcG9y
dCA8Q2FyYm9uL0NhcmJvbi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAorI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAKK0BpbnRlcmZhY2UgTlNC
dXR0b25DZWxsKERldGFpbHMpCistICh2b2lkKV9zZXRTdGF0ZTooTlNJbnRlZ2VyKXZhbHVlIGFu
aW1hdGVkOihCT09MKWFuaW1hdGVkOworLSAodm9pZClfc2V0SGlnaGxpZ2h0ZWQ6KEJPT0wpZmxh
ZyBhbmltYXRlZDooQk9PTClhbmltYXRlZDsKKy0gKHZvaWQpX3JlbmRlckN1cnJlbnRBbmltYXRp
b25GcmFtZUluQ29udGV4dDooQ0dDb250ZXh0UmVmKWN0eHQgYXRMb2NhdGlvbjooTlNQb2ludCl3
aGVyZTsKKy0gKEJPT0wpX3N0YXRlQW5pbWF0aW9uUnVubmluZzsKK0BlbmQKKyNlbmRpZgorCiBz
dGF0aWMgTlNSZWN0IGZvY3VzUmluZ0NsaXBSZWN0Owogc3RhdGljIEJPT0wgdGhlbWVXaW5kb3dI
YXNLZXlBcHBlYXJhbmNlOwogCkBAIC05Nyw2ICsxMDYsMTIgQEAgc3RhdGljIEJPT0wgdGhlbWVX
aW5kb3dIYXNLZXlBcHBlYXJhbmNlOwogICAgIHJldHVybiBzZWxmOwogfQogCistICh2b2lkKWFk
ZFN1YnZpZXc6KE5TVmlldyopc3VidmlldworeworICAgIC8vIEJ5IGRvaW5nIG5vdGhpbmcgaW4g
dGhpcyBtZXRob2Qgd2UgZm9yYmlkIGNvbnRyb2xzIGZyb20gYWRkaW5nIHN1YnZpZXdzLgorICAg
IC8vIFRoaXMgdGVsbHMgQXBwS2l0IHRvIG5vdCB1c2UgTGF5ZXItYmFja2VkIGFuaW1hdGlvbiBm
b3IgY29udHJvbCByZW5kZXJpbmcuCisgICAgVU5VU0VEX1BBUkFNKHN1YnZpZXcpOworfQogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gTlNGb250IChXZWJDb3JlVGhlbWUpCkBAIC0xNzYsNDUgKzE5
MSw1NiBAQCBzdGF0aWMgdm9pZCBzZXRDb250cm9sU2l6ZShOU0NlbGwqIGNlbGwsIGNvbnN0IElu
dFNpemUqIHNpemVzLCBjb25zdCBJbnRTaXplJiBtaQogICAgICAgICBbY2VsbCBzZXRDb250cm9s
U2l6ZTooTlNDb250cm9sU2l6ZSlzaXplXTsKIH0KIAotc3RhdGljIHZvaWQgdXBkYXRlU3RhdGVz
KE5TQ2VsbCogY2VsbCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMpCitzdGF0aWMgdm9pZCB1cGRhdGVT
dGF0ZXMoTlNDZWxsKiBjZWxsLCBjb25zdCBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzLCBi
b29sIHVzZUFuaW1hdGlvbiA9IGZhbHNlKQogeworICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBz
dGF0ZXMgPSBjb250cm9sU3RhdGVzLT5zdGF0ZXMoKTsKKwogICAgIC8vIEhvdmVyIHN0YXRlIGlz
IG5vdCBzdXBwb3J0ZWQgYnkgQXF1YS4KICAgICAKICAgICAvLyBQcmVzc2VkIHN0YXRlCiAgICAg
Ym9vbCBvbGRQcmVzc2VkID0gW2NlbGwgaXNIaWdobGlnaHRlZF07Ci0gICAgYm9vbCBwcmVzc2Vk
ID0gc3RhdGVzICYgUHJlc3NlZFN0YXRlOworICAgIGJvb2wgcHJlc3NlZCA9IHN0YXRlcyAmIENv
bnRyb2xTdGF0ZXM6OlByZXNzZWRTdGF0ZTsKICAgICBpZiAocHJlc3NlZCAhPSBvbGRQcmVzc2Vk
KQogICAgICAgICBbY2VsbCBzZXRIaWdobGlnaHRlZDpwcmVzc2VkXTsKICAgICAKICAgICAvLyBF
bmFibGVkIHN0YXRlCiAgICAgYm9vbCBvbGRFbmFibGVkID0gW2NlbGwgaXNFbmFibGVkXTsKLSAg
ICBib29sIGVuYWJsZWQgPSBzdGF0ZXMgJiBFbmFibGVkU3RhdGU7CisgICAgYm9vbCBlbmFibGVk
ID0gc3RhdGVzICYgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlOwogICAgIGlmIChlbmFibGVk
ICE9IG9sZEVuYWJsZWQpCiAgICAgICAgIFtjZWxsIHNldEVuYWJsZWQ6ZW5hYmxlZF07CiAKICAg
ICAvLyBDaGVja2VkIGFuZCBJbmRldGVybWluYXRlCiAgICAgYm9vbCBvbGRJbmRldGVybWluYXRl
ID0gW2NlbGwgc3RhdGVdID09IE5TTWl4ZWRTdGF0ZTsKLSAgICBib29sIGluZGV0ZXJtaW5hdGUg
PSAoc3RhdGVzICYgSW5kZXRlcm1pbmF0ZVN0YXRlKTsKLSAgICBib29sIGNoZWNrZWQgPSBzdGF0
ZXMgJiBDaGVja2VkU3RhdGU7CisgICAgYm9vbCBpbmRldGVybWluYXRlID0gKHN0YXRlcyAmIENv
bnRyb2xTdGF0ZXM6OkluZGV0ZXJtaW5hdGVTdGF0ZSk7CisgICAgYm9vbCBjaGVja2VkID0gc3Rh
dGVzICYgQ29udHJvbFN0YXRlczo6Q2hlY2tlZFN0YXRlOwogICAgIGJvb2wgb2xkQ2hlY2tlZCA9
IFtjZWxsIHN0YXRlXSA9PSBOU09uU3RhdGU7Ci0gICAgaWYgKG9sZEluZGV0ZXJtaW5hdGUgIT0g
aW5kZXRlcm1pbmF0ZSB8fCBjaGVja2VkICE9IG9sZENoZWNrZWQpCi0gICAgICAgIFtjZWxsIHNl
dFN0YXRlOmluZGV0ZXJtaW5hdGUgPyBOU01peGVkU3RhdGUgOiAoY2hlY2tlZCA/IE5TT25TdGF0
ZSA6IE5TT2ZmU3RhdGUpXTsKLSAgICAgICAgCisgICAgaWYgKG9sZEluZGV0ZXJtaW5hdGUgIT0g
aW5kZXRlcm1pbmF0ZSB8fCBjaGVja2VkICE9IG9sZENoZWNrZWQpIHsKKyAgICAgICAgTlNDZWxs
U3RhdGVWYWx1ZSBuZXdTdGF0ZSA9IGluZGV0ZXJtaW5hdGUgPyBOU01peGVkU3RhdGUgOiAoY2hl
Y2tlZCA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGUpOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMDAKKyAgICAgICAgWyhOU0J1dHRvbkNlbGwqKWNlbGwgX3NldFN0
YXRlOm5ld1N0YXRlIGFuaW1hdGVkOnVzZUFuaW1hdGlvbl07CisjZWxzZQorICAgICAgICBVTlVT
RURfUEFSQU0odXNlQW5pbWF0aW9uKTsKKyAgICAgICAgW2NlbGwgc2V0U3RhdGU6bmV3U3RhdGVd
OworI2VuZGlmCisgICAgfQorCiAgICAgLy8gV2luZG93IGluYWN0aXZlIHN0YXRlIGRvZXMgbm90
IG5lZWQgdG8gYmUgY2hlY2tlZCBleHBsaWNpdGx5LCBzaW5jZSB3ZSBwYWludCBwYXJlbnRlZCB0
byAKICAgICAvLyBhIHZpZXcgaW4gYSB3aW5kb3cgd2hvc2Uga2V5IHN0YXRlIGNhbiBiZSBkZXRl
Y3RlZC4KIH0KIAotc3RhdGljIFRoZW1lRHJhd1N0YXRlIGNvbnZlcnRDb250cm9sU3RhdGVzVG9U
aGVtZURyYXdTdGF0ZShUaGVtZUJ1dHRvbktpbmQga2luZCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMp
CitzdGF0aWMgVGhlbWVEcmF3U3RhdGUgY29udmVydENvbnRyb2xTdGF0ZXNUb1RoZW1lRHJhd1N0
YXRlKFRoZW1lQnV0dG9uS2luZCBraW5kLCBjb25zdCBDb250cm9sU3RhdGVzKiBjb250cm9sU3Rh
dGVzKQogewotICAgIGlmIChzdGF0ZXMgJiBSZWFkT25seVN0YXRlKQorICAgIENvbnRyb2xTdGF0
ZXM6OlN0YXRlcyBzdGF0ZXMgPSBjb250cm9sU3RhdGVzLT5zdGF0ZXMoKTsKKworICAgIGlmIChz
dGF0ZXMgJiBDb250cm9sU3RhdGVzOjpSZWFkT25seVN0YXRlKQogICAgICAgICByZXR1cm4ga1Ro
ZW1lU3RhdGVVbmF2YWlsYWJsZUluYWN0aXZlOwotICAgIGlmICghKHN0YXRlcyAmIEVuYWJsZWRT
dGF0ZSkpCisgICAgaWYgKCEoc3RhdGVzICYgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlKSkK
ICAgICAgICAgcmV0dXJuIGtUaGVtZVN0YXRlVW5hdmFpbGFibGVJbmFjdGl2ZTsKIAogICAgIC8v
IERvIG5vdCBwcm9jZXNzIFByZXNzZWRTdGF0ZSBpZiAhRW5hYmxlZFN0YXRlIG9yIFJlYWRPbmx5
U3RhdGUuCi0gICAgaWYgKHN0YXRlcyAmIFByZXNzZWRTdGF0ZSkgeworICAgIGlmIChzdGF0ZXMg
JiBDb250cm9sU3RhdGVzOjpQcmVzc2VkU3RhdGUpIHsKICAgICAgICAgaWYgKGtpbmQgPT0ga1Ro
ZW1lSW5jRGVjQnV0dG9uIHx8IGtpbmQgPT0ga1RoZW1lSW5jRGVjQnV0dG9uU21hbGwgfHwga2lu
ZCA9PSBrVGhlbWVJbmNEZWNCdXR0b25NaW5pKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRlcyAm
IFNwaW5VcFN0YXRlID8ga1RoZW1lU3RhdGVQcmVzc2VkVXAgOiBrVGhlbWVTdGF0ZVByZXNzZWRE
b3duOworICAgICAgICAgICAgcmV0dXJuIHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OlNwaW5VcFN0
YXRlID8ga1RoZW1lU3RhdGVQcmVzc2VkVXAgOiBrVGhlbWVTdGF0ZVByZXNzZWREb3duOwogICAg
ICAgICByZXR1cm4ga1RoZW1lU3RhdGVQcmVzc2VkOwogICAgIH0KICAgICByZXR1cm4ga1RoZW1l
U3RhdGVBY3RpdmU7CkBAIC0yNjYsMzQgKzI5Miw1NCBAQCBzdGF0aWMgTGVuZ3RoU2l6ZSBjaGVj
a2JveFNpemUoY29uc3QgRm9udCYgZm9udCwgY29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwg
ZgogICAgIC8vIFVzZSB0aGUgZm9udCBzaXplIHRvIGRldGVybWluZSB0aGUgaW50cmluc2ljIHdp
ZHRoIG9mIHRoZSBjb250cm9sLgogICAgIHJldHVybiBzaXplRnJvbUZvbnQoZm9udCwgem9vbWVk
U2l6ZSwgem9vbUZhY3RvciwgY2hlY2tib3hTaXplcygpKTsKIH0KLQotc3RhdGljIE5TQnV0dG9u
Q2VsbCAqY2hlY2tib3goQ29udHJvbFN0YXRlcyBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21l
ZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IpCi17Ci0gICAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqY2hl
Y2tib3hDZWxsOwotICAgIGlmICghY2hlY2tib3hDZWxsKSB7Ci0gICAgICAgIGNoZWNrYm94Q2Vs
bCA9IFtbTlNCdXR0b25DZWxsIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW2NoZWNrYm94Q2VsbCBz
ZXRCdXR0b25UeXBlOk5TU3dpdGNoQnV0dG9uXTsKLSAgICAgICAgW2NoZWNrYm94Q2VsbCBzZXRU
aXRsZTpuaWxdOwotICAgICAgICBbY2hlY2tib3hDZWxsIHNldEFsbG93c01peGVkU3RhdGU6WUVT
XTsKLSAgICAgICAgW2NoZWNrYm94Q2VsbCBzZXRGb2N1c1JpbmdUeXBlOk5TRm9jdXNSaW5nVHlw
ZUV4dGVyaW9yXTsKLSAgICB9CiAgICAgCitzdGF0aWMgdm9pZCBjb25maWd1cmVDaGVja2JveChO
U0NlbGwqIGNlbGwsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgY29uc3QgSW50UmVjdCYg
em9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgYm9vbCBpc1N0YXRlQ2hhbmdlKQorewogICAg
IC8vIFNldCB0aGUgY29udHJvbCBzaXplIGJhc2VkIG9mZiB0aGUgcmVjdGFuZ2xlIHdlJ3JlIHBh
aW50aW5nIGludG8uCi0gICAgc2V0Q29udHJvbFNpemUoY2hlY2tib3hDZWxsLCBjaGVja2JveFNp
emVzKCksIHpvb21lZFJlY3Quc2l6ZSgpLCB6b29tRmFjdG9yKTsKKyAgICBzZXRDb250cm9sU2l6
ZShjZWxsLCBjaGVja2JveFNpemVzKCksIHpvb21lZFJlY3Quc2l6ZSgpLCB6b29tRmFjdG9yKTsK
IAogICAgIC8vIFVwZGF0ZSB0aGUgdmFyaW91cyBzdGF0ZXMgd2UgcmVzcG9uZCB0by4KLSAgICB1
cGRhdGVTdGF0ZXMoY2hlY2tib3hDZWxsLCBzdGF0ZXMpOworICAgIHVwZGF0ZVN0YXRlcyhjZWxs
LCBzdGF0ZXMsIGlzU3RhdGVDaGFuZ2UpOworfQogICAgIAorc3RhdGljIE5TQnV0dG9uQ2VsbCAq
Y3JlYXRlQ2hlY2tib3hDZWxsKCkKK3sKKyAgICBOU0J1dHRvbkNlbGwgKmNoZWNrYm94Q2VsbCA9
IFtbTlNCdXR0b25DZWxsIGFsbG9jXSBpbml0XTsKKyAgICBbY2hlY2tib3hDZWxsIHNldEJ1dHRv
blR5cGU6TlNTd2l0Y2hCdXR0b25dOworICAgIFtjaGVja2JveENlbGwgc2V0VGl0bGU6bmlsXTsK
KyAgICBbY2hlY2tib3hDZWxsIHNldEFsbG93c01peGVkU3RhdGU6WUVTXTsKKyAgICBbY2hlY2ti
b3hDZWxsIHNldEZvY3VzUmluZ1R5cGU6TlNGb2N1c1JpbmdUeXBlRXh0ZXJpb3JdOwogICAgIHJl
dHVybiBjaGVja2JveENlbGw7CiB9CiAKK3N0YXRpYyBOU0J1dHRvbkNlbGwgKnNoYXJlZENoZWNr
Ym94Q2VsbChjb25zdCBDb250cm9sU3RhdGVzKiBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21l
ZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IpCit7CisgICAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqY2hl
Y2tib3hDZWxsOworICAgIGlmICghY2hlY2tib3hDZWxsKQorICAgICAgICBjaGVja2JveENlbGwg
PSBjcmVhdGVDaGVja2JveENlbGwoKTsKKworICAgIGNvbmZpZ3VyZUNoZWNrYm94KGNoZWNrYm94
Q2VsbCwgc3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yLCBmYWxzZSk7CisgICAgcmV0dXJu
IGNoZWNrYm94Q2VsbDsKK30KKyAgICAKIC8vIEZJWE1FOiBTaGFyZSBtb3JlIGNvZGUgd2l0aCBy
YWRpbyBidXR0b25zLgotc3RhdGljIHZvaWQgcGFpbnRDaGVja2JveChDb250cm9sU3RhdGVzIHN0
YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0
LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KQorc3RhdGljIHZvaWQg
cGFpbnRDaGVja2JveChDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3Is
IFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiAKLSAgICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgbmVlZGVkIGZvciB0
aGUgY29udHJvbCBhbmQgcHJlcGFyZSB0aGUgY2VsbCBmb3IgcGFpbnRpbmcuCi0gICAgTlNCdXR0
b25DZWxsICpjaGVja2JveENlbGwgPSBjaGVja2JveChzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21G
YWN0b3IpOworICAgIE5TQnV0dG9uQ2VsbCAqY2hlY2tib3hDZWxsID0gc3RhdGljX2Nhc3Q8TlNC
dXR0b25DZWxsKj4oY29udHJvbFN0YXRlcy0+cGxhdGZvcm1Db250cm9sKCkpOworCisgICAgaWYg
KGNvbnRyb2xTdGF0ZXMtPmlzRGlydHkoKSkgeworICAgICAgICBpZiAoIWNoZWNrYm94Q2VsbCkK
KyAgICAgICAgICAgIGNoZWNrYm94Q2VsbCA9IGNyZWF0ZUNoZWNrYm94Q2VsbCgpOworICAgICAg
ICBjb25maWd1cmVDaGVja2JveChjaGVja2JveENlbGwsIGNvbnRyb2xTdGF0ZXMsIHpvb21lZFJl
Y3QsIHpvb21GYWN0b3IsIHRydWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghY2hlY2ti
b3hDZWxsKQorICAgICAgICAgICAgY2hlY2tib3hDZWxsID0gc2hhcmVkQ2hlY2tib3hDZWxsKGNv
bnRyb2xTdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOworICAgICAgICBjb25maWd1cmVD
aGVja2JveChjaGVja2JveENlbGwsIGNvbnRyb2xTdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0
b3IsIGZhbHNlKTsKKyAgICB9CisgICAgY29udHJvbFN0YXRlcy0+c2V0RGlydHkoZmFsc2UpOwor
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKIAog
ICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBbY2hlY2tib3hDZWxsIGNvbnRyb2xTaXpl
XTsKQEAgLTMxMSwxMiArMzU3LDM0IEBAIHN0YXRpYyB2b2lkIHBhaW50Q2hlY2tib3goQ29udHJv
bFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICB9CiAK
ICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwot
ICAgIE5TVmlldyAqdmlldyA9IFRoZW1lTWFjOjplbnN1cmVkVmlldyhzY3JvbGxWaWV3LCBzdGF0
ZXMpOwotICAgIFtjaGVja2JveENlbGwgZHJhd1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0
KSBpblZpZXc6dmlld107Ci0gICAgaWYgKHN0YXRlcyAmIEZvY3VzU3RhdGUpCisgICAgTlNWaWV3
ICp2aWV3ID0gVGhlbWVNYWM6OmVuc3VyZWRWaWV3KHNjcm9sbFZpZXcsIGNvbnRyb2xTdGF0ZXMp
OworICAgIGJvb2wgZHJhd1N0YXRpY2FsbHkgPSB0cnVlOworI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAKKyAgICBkcmF3U3RhdGljYWxseSA9ICFbY2hlY2tib3hD
ZWxsIF9zdGF0ZUFuaW1hdGlvblJ1bm5pbmddOworI2VuZGlmCisgICAgaWYgKGRyYXdTdGF0aWNh
bGx5KQorICAgICAgICBbY2hlY2tib3hDZWxsIGRyYXdXaXRoRnJhbWU6TlNSZWN0KGluZmxhdGVk
UmVjdCkgaW5WaWV3OnZpZXddOworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBp
c24ndCBxdWl0ZSBjb3JyZWN0IGF0IHRoZSBtb21lbnQgZHVlIHRvIHRoZSB3YXkgdGhlIHRpY2sg
bWFyayBleHRlbmRzIG91dCBvZiB0aGUgY29udHJvbC4KKyAgICAgICAgY29udGV4dC0+dHJhbnNs
YXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkpOworICAgICAgICBjb250ZXh0
LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKDAs
IC1pbmZsYXRlZFJlY3QuaGVpZ2h0KCkpOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMDAKKyAgICAgICAgW2NoZWNrYm94Q2VsbCBfcmVuZGVyQ3VycmVudEFuaW1h
dGlvbkZyYW1lSW5Db250ZXh0OmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIGF0TG9jYXRpb246
TlNNYWtlUG9pbnQoMCwgMCldOworI2VuZGlmCisgICAgfQorICAgIGlmIChjb250cm9sU3RhdGVz
LT5zdGF0ZXMoKSAmIENvbnRyb2xTdGF0ZXM6OkZvY3VzU3RhdGUpCiAgICAgICAgIFtjaGVja2Jv
eENlbGwgX3dlYl9kcmF3Rm9jdXNSaW5nV2l0aEZyYW1lOk5TUmVjdChpbmZsYXRlZFJlY3QpIGlu
Vmlldzp2aWV3XTsKICAgICBbY2hlY2tib3hDZWxsIHNldENvbnRyb2xWaWV3Om5pbF07CiAgICAg
CisgICAgYm9vbCBuZWVkc1JlcGFpbnQgPSBmYWxzZTsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTAwCisgICAgbmVlZHNSZXBhaW50ID0gW2NoZWNrYm94Q2VsbCBf
c3RhdGVBbmltYXRpb25SdW5uaW5nXTsKKyNlbmRpZgorICAgIGNvbnRyb2xTdGF0ZXMtPnNldE5l
ZWRzUmVwYWludChuZWVkc1JlcGFpbnQpOworICAgIGlmIChuZWVkc1JlcGFpbnQpCisgICAgICAg
IGNvbnRyb2xTdGF0ZXMtPnNldFBsYXRmb3JtQ29udHJvbChjaGVja2JveENlbGwpOworCiAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0zNDksNyArNDE3LDcgQEAgc3RhdGlj
IExlbmd0aFNpemUgcmFkaW9TaXplKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IExlbmd0aFNpemUm
IHpvb21lZFNpemUsIGZsb2EKICAgICByZXR1cm4gc2l6ZUZyb21Gb250KGZvbnQsIHpvb21lZFNp
emUsIHpvb21GYWN0b3IsIHJhZGlvU2l6ZXMoKSk7CiB9CiAKLXN0YXRpYyBOU0J1dHRvbkNlbGwg
KnJhZGlvKENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBm
bG9hdCB6b29tRmFjdG9yKQorc3RhdGljIE5TQnV0dG9uQ2VsbCAqcmFkaW8oY29uc3QgQ29udHJv
bFN0YXRlcyogc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFj
dG9yKQogewogICAgIHN0YXRpYyBOU0J1dHRvbkNlbGwgKnJhZGlvQ2VsbDsKICAgICBpZiAoIXJh
ZGlvQ2VsbCkgewpAQCAtMzY4LDEwICs0MzYsMTAgQEAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqcmFk
aW8oQ29udHJvbFN0YXRlcyBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2EK
ICAgICByZXR1cm4gcmFkaW9DZWxsOwogfQogCi1zdGF0aWMgdm9pZCBwYWludFJhZGlvKENvbnRy
b2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcpCitz
dGF0aWMgdm9pZCBwYWludFJhZGlvKENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9v
bUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldykKIHsKICAgICAvLyBEZXRlcm1pbmUgdGhl
IHdpZHRoIGFuZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUgY29udHJvbCBhbmQgcHJlcGFyZSB0aGUg
Y2VsbCBmb3IgcGFpbnRpbmcuCi0gICAgTlNCdXR0b25DZWxsICpyYWRpb0NlbGwgPSByYWRpbyhz
dGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOworICAgIE5TQnV0dG9uQ2VsbCAqcmFkaW9D
ZWxsID0gcmFkaW8oY29udHJvbFN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKIAogICAgIE5T
Q29udHJvbFNpemUgY29udHJvbFNpemUgPSBbcmFkaW9DZWxsIGNvbnRyb2xTaXplXTsKQEAgLTM5
MCw5ICs0NTgsOSBAQCBzdGF0aWMgdm9pZCBwYWludFJhZGlvKENvbnRyb2xTdGF0ZXMgc3RhdGVz
LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludAogCiAgICAgTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICBOU1ZpZXcgKnZpZXcgPSBUaGVtZU1hYzo6ZW5zdXJlZFZpZXco
c2Nyb2xsVmlldywgc3RhdGVzKTsKKyAgICBOU1ZpZXcgKnZpZXcgPSBUaGVtZU1hYzo6ZW5zdXJl
ZFZpZXcoc2Nyb2xsVmlldywgY29udHJvbFN0YXRlcyk7CiAgICAgW3JhZGlvQ2VsbCBkcmF3V2l0
aEZyYW1lOk5TUmVjdChpbmZsYXRlZFJlY3QpIGluVmlldzp2aWV3XTsKLSAgICBpZiAoc3RhdGVz
ICYgRm9jdXNTdGF0ZSkKKyAgICBpZiAoY29udHJvbFN0YXRlcy0+c3RhdGVzKCkgJiBDb250cm9s
U3RhdGVzOjpGb2N1c1N0YXRlKQogICAgICAgICBbcmFkaW9DZWxsIF93ZWJfZHJhd0ZvY3VzUmlu
Z1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6dmlld107CiAgICAgW3JhZGlv
Q2VsbCBzZXRDb250cm9sVmlldzpuaWxdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
QEAgLTQzMCw3ICs0OTgsNyBAQCBzdGF0aWMgTlNCdXR0b25DZWxsICpsZWFrQnV0dG9uQ2VsbChC
dXR0b25DZWxsVHlwZSB0eXBlKQogICAgIHJldHVybiBjZWxsOwogfQogCi1zdGF0aWMgdm9pZCBz
ZXRVcEJ1dHRvbkNlbGwoTlNCdXR0b25DZWxsICpjZWxsLCBDb250cm9sUGFydCBwYXJ0LCBDb250
cm9sU3RhdGVzIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZh
Y3RvcikKK3N0YXRpYyB2b2lkIHNldFVwQnV0dG9uQ2VsbChOU0J1dHRvbkNlbGwgKmNlbGwsIENv
bnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgY29uc3QgSW50UmVj
dCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikKIHsKICAgICAvLyBTZXQgdGhlIGNvbnRy
b2wgc2l6ZSBiYXNlZCBvZmYgdGhlIHJlY3RhbmdsZSB3ZSdyZSBwYWludGluZyBpbnRvLgogICAg
IGNvbnN0IEludFNpemUqIHNpemVzID0gYnV0dG9uU2l6ZXMoKTsKQEAgLTQ0NywyNiArNTE1LDI4
IEBAIHN0YXRpYyB2b2lkIHNldFVwQnV0dG9uQ2VsbChOU0J1dHRvbkNlbGwgKmNlbGwsIENvbnRy
b2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMKICAgICB1cGRhdGVTdGF0ZXMoY2VsbCwgc3RhdGVz
KTsKIH0KIAotc3RhdGljIE5TQnV0dG9uQ2VsbCAqYnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENv
bnRyb2xTdGF0ZXMgc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29t
RmFjdG9yKQorc3RhdGljIE5TQnV0dG9uQ2VsbCAqYnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIGNv
bnN0IENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJl
Y3QsIGZsb2F0IHpvb21GYWN0b3IpCiB7CisgICAgQ29udHJvbFN0YXRlczo6U3RhdGVzIHN0YXRl
cyA9IGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygpOwogICAgIE5TQnV0dG9uQ2VsbCAqY2VsbDsKLSAg
ICBpZiAoc3RhdGVzICYgRGVmYXVsdFN0YXRlKSB7CisgICAgaWYgKHN0YXRlcyAmIENvbnRyb2xT
dGF0ZXM6OkRlZmF1bHRTdGF0ZSkgewogICAgICAgICBzdGF0aWMgTlNCdXR0b25DZWxsICpkZWZh
dWx0Q2VsbCA9IGxlYWtCdXR0b25DZWxsKERlZmF1bHRCdXR0b25DZWxsKTsKICAgICAgICAgY2Vs
bCA9IGRlZmF1bHRDZWxsOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN0YXRpYyBOU0J1dHRvbkNl
bGwgKm5vcm1hbENlbGwgPSBsZWFrQnV0dG9uQ2VsbChOb3JtYWxCdXR0b25DZWxsKTsKICAgICAg
ICAgY2VsbCA9IG5vcm1hbENlbGw7CiAgICAgfQotICAgIHNldFVwQnV0dG9uQ2VsbChjZWxsLCBw
YXJ0LCBzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOyAgICAKKyAgICBzZXRVcEJ1dHRv
bkNlbGwoY2VsbCwgcGFydCwgY29udHJvbFN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7
CiAgICAgcmV0dXJuIGNlbGw7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQ
YXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcq
IHNjcm9sbFZpZXcpCitzdGF0aWMgdm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFydCBwYXJ0LCBD
b250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNj
cm9sbFZpZXcpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAg
Ly8gRGV0ZXJtaW5lIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG5lZWRlZCBmb3IgdGhlIGNvbnRyb2wg
YW5kIHByZXBhcmUgdGhlIGNlbGwgZm9yIHBhaW50aW5nLgotICAgIE5TQnV0dG9uQ2VsbCAqYnV0
dG9uQ2VsbCA9IGJ1dHRvbihwYXJ0LCBzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOwor
ICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZXMgPSBjb250cm9sU3RhdGVzLT5zdGF0ZXMo
KTsKKyAgICBOU0J1dHRvbkNlbGwgKmJ1dHRvbkNlbGwgPSBidXR0b24ocGFydCwgY29udHJvbFN0
YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKIAogICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNp
emUgPSBbYnV0dG9uQ2VsbCBjb250cm9sU2l6ZV07CkBAIC00OTQsMTggKzU2NCwxOCBAQCBzdGF0
aWMgdm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRl
cywgR3JhcGhpY3NDb250ZXh0KgogICAgIH0gCiAKICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0Nv
bnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwotICAgIE5TVmlldyAqdmlldyA9IFRoZW1lTWFj
OjplbnN1cmVkVmlldyhzY3JvbGxWaWV3LCBzdGF0ZXMpOworICAgIE5TVmlldyAqdmlldyA9IFRo
ZW1lTWFjOjplbnN1cmVkVmlldyhzY3JvbGxWaWV3LCBjb250cm9sU3RhdGVzKTsKICAgICBOU1dp
bmRvdyAqd2luZG93ID0gW3ZpZXcgd2luZG93XTsKICAgICBOU0J1dHRvbkNlbGwgKnByZXZpb3Vz
RGVmYXVsdEJ1dHRvbkNlbGwgPSBbd2luZG93IGRlZmF1bHRCdXR0b25DZWxsXTsKIAotICAgIGlm
IChzdGF0ZXMgJiBEZWZhdWx0U3RhdGUpIHsKKyAgICBpZiAoc3RhdGVzICYgQ29udHJvbFN0YXRl
czo6RGVmYXVsdFN0YXRlKSB7CiAgICAgICAgIFt3aW5kb3cgc2V0RGVmYXVsdEJ1dHRvbkNlbGw6
YnV0dG9uQ2VsbF07CiAgICAgICAgIHdrQWR2YW5jZURlZmF1bHRCdXR0b25QdWxzZUFuaW1hdGlv
bihidXR0b25DZWxsKTsKICAgICB9IGVsc2UgaWYgKFtwcmV2aW91c0RlZmF1bHRCdXR0b25DZWxs
IGlzRXF1YWw6YnV0dG9uQ2VsbF0pCiAgICAgICAgIFt3aW5kb3cgc2V0RGVmYXVsdEJ1dHRvbkNl
bGw6bmlsXTsKIAogICAgIFtidXR0b25DZWxsIGRyYXdXaXRoRnJhbWU6TlNSZWN0KGluZmxhdGVk
UmVjdCkgaW5WaWV3OnZpZXddOwotICAgIGlmIChzdGF0ZXMgJiBGb2N1c1N0YXRlKQorICAgIGlm
IChzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpGb2N1c1N0YXRlKQogICAgICAgICBbYnV0dG9uQ2Vs
bCBfd2ViX2RyYXdGb2N1c1JpbmdXaXRoRnJhbWU6TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5WaWV3
OnZpZXddOwogICAgIFtidXR0b25DZWxsIHNldENvbnRyb2xWaWV3Om5pbF07CiAKQEAgLTUzNSw3
ICs2MDUsNyBAQCBzdGF0aWMgTlNDb250cm9sU2l6ZSBzdGVwcGVyQ29udHJvbFNpemVGb3JGb250
KGNvbnN0IEZvbnQmIGZvbnQpCiAgICAgcmV0dXJuIE5TTWluaUNvbnRyb2xTaXplOwogfQogCi1z
dGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3Rv
ciwgU2Nyb2xsVmlldyopCitzdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0YXRlcyog
c3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJl
Y3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqKQogewogICAgIC8vIFdlIGRvbid0IHVz
ZSBOU1N0ZXBwZXJDZWxsIGJlY2F1c2UgdGhlcmUgYXJlIG5vIHdheXMgdG8gZHJhdyBhbgogICAg
IC8vIE5TU3RlcHBlckNlbGwgd2l0aCB0aGUgdXAgYnV0dG9uIGhpZ2hsaWdodGVkLgpAQCAtNTc3
LDcgKzY0Nyw3IEBAIHN0YXRpYyB2b2lkIHBhaW50U3RlcHBlcihDb250cm9sU3RhdGVzIHN0YXRl
cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJCiAKIC8vIFRoaXMgd2lsbCBlbnN1
cmUgdGhhdCB3ZSBhbHdheXMgcmV0dXJuIGEgdmFsaWQgTlNWaWV3LCBldmVuIGlmIFNjcm9sbFZp
ZXcgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZG9jdW1lbnQgTlNWaWV3LgogLy8gSWYgdGhl
IFNjcm9sbFZpZXcgZG9lc24ndCBoYXZlIGFuIE5TVmlldywgd2Ugd2lsbCByZXR1cm4gYSBmYWtl
IE5TVmlldyBzZXQgdXAgaW4gdGhlIHdheSBBcHBLaXQgZXhwZWN0cy4KLU5TVmlldyAqVGhlbWVN
YWM6OmVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIENvbnRyb2xTdGF0ZXMgc3Rh
dGVzKQorTlNWaWV3ICpUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoU2Nyb2xsVmlldyogc2Nyb2xsVmll
dywgY29uc3QgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcykKIHsKICAgICBpZiAoTlNWaWV3
ICpkb2N1bWVudFZpZXcgPSBzY3JvbGxWaWV3LT5kb2N1bWVudFZpZXcoKSkKICAgICAgICAgcmV0
dXJuIGRvY3VtZW50VmlldzsKQEAgLTU4Niw3ICs2NTYsNyBAQCBOU1ZpZXcgKlRoZW1lTWFjOjpl
bnN1cmVkVmlldyhTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBDb250cm9sU3RhdGVzIHN0YXRlcykK
ICAgICBzdGF0aWMgV2ViQ29yZVRoZW1lVmlldyAqdGhlbWVWaWV3ID0gW1tXZWJDb3JlVGhlbWVW
aWV3IGFsbG9jXSBpbml0XTsKICAgICBbdGhlbWVWaWV3IHNldEZyYW1lU2l6ZTpOU1NpemVGcm9t
Q0dTaXplKHNjcm9sbFZpZXctPnRvdGFsQ29udGVudHNTaXplKCkpXTsKIAotICAgIHRoZW1lV2lu
ZG93SGFzS2V5QXBwZWFyYW5jZSA9ICEoc3RhdGVzICYgV2luZG93SW5hY3RpdmVTdGF0ZSk7Cisg
ICAgdGhlbWVXaW5kb3dIYXNLZXlBcHBlYXJhbmNlID0gIShjb250cm9sU3RhdGVzLT5zdGF0ZXMo
KSAmIENvbnRyb2xTdGF0ZXM6OldpbmRvd0luYWN0aXZlU3RhdGUpOwogCiAgICAgcmV0dXJuIHRo
ZW1lVmlldzsKIH0KQEAgLTY4OSwxNCArNzU5LDE0IEBAIExlbmd0aEJveCBUaGVtZU1hYzo6Y29u
dHJvbFBhZGRpbmcoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgTGVu
CiAgICAgfQogfQogCi12b2lkIFRoZW1lTWFjOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250
cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywgSW50UmVjdCYgem9vbWVkUmVjdCwg
ZmxvYXQgem9vbUZhY3RvcikgY29uc3QKK3ZvaWQgVGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFp
bnRSZWN0KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgSW50
UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKIHsKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBzd2l0Y2ggKHBhcnQpIHsKICAgICAgICAgY2FzZSBD
aGVja2JveFBhcnQ6IHsKICAgICAgICAgICAgIC8vIFdlIGluZmxhdGUgdGhlIHJlY3QgYXMgbmVl
ZGVkIHRvIGFjY291bnQgZm9yIHBhZGRpbmcgaW5jbHVkZWQgaW4gdGhlIGNlbGwgdG8gYWNjb21t
b2RhdGUgdGhlIGNoZWNrYm94CiAgICAgICAgICAgICAvLyBzaGFkb3ciIGFuZCB0aGUgY2hlY2su
ICBXZSBkb24ndCBjb25zaWRlciB0aGlzIHBhcnQgb2YgdGhlIGJvdW5kcyBvZiB0aGUgY29udHJv
bCBpbiBXZWJLaXQuCi0gICAgICAgICAgICBOU0NlbGwgKmNlbGwgPSBjaGVja2JveChzdGF0ZXMs
IHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOworICAgICAgICAgICAgTlNDZWxsICpjZWxsID0gc2hh
cmVkQ2hlY2tib3hDZWxsKHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CiAgICAgICAg
ICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplID0gW2NlbGwgY29udHJvbFNpemVdOwogICAg
ICAgICAgICAgSW50U2l6ZSB6b29tZWRTaXplID0gY2hlY2tib3hTaXplcygpW2NvbnRyb2xTaXpl
XTsKICAgICAgICAgICAgIHpvb21lZFNpemUuc2V0SGVpZ2h0KHpvb21lZFNpemUuaGVpZ2h0KCkg
KiB6b29tRmFjdG9yKTsKQEAgLTc0NSw3ICs4MTUsNyBAQCB2b2lkIFRoZW1lTWFjOjppbmZsYXRl
Q29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywg
SQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAotdm9pZCBUaGVtZU1hYzo6cGFp
bnQoQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3Rvciwg
U2Nyb2xsVmlldyogc2Nyb2xsVmlldykgY29uc3QKK3ZvaWQgVGhlbWVNYWM6OnBhaW50KENvbnRy
b2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxW
aWV3KiBzY3JvbGxWaWV3KQogewogICAgIHN3aXRjaCAocGFydCkgewogICAgICAgICBjYXNlIENo
ZWNrYm94UGFydDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNWI3
YmNhNWI2NDMyMzZlMDM1YWU1NDI4MTNhOGViOTg1ZThlOTFkZC4uNzAxMTY2MDAyNmNjNzc4NmQ0
OTJjZTU2NTFlNWNlN2Q3Yjc0Mjg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKQEAgLTEwMiw2ICsxMDIsNyBAQCBSZW5kZXJCb3g6OlJlbmRlckJveChFbGVtZW50JiBl
bGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZQogICAgICwg
bV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoLTEpCiAgICAgLCBtX21heFByZWZlcnJlZExvZ2lj
YWxXaWR0aCgtMSkKICAgICAsIG1faW5saW5lQm94V3JhcHBlcigwKQorICAgICwgbV9yZXBhaW50
VGltZXIodGhpcywgJlJlbmRlckJveDo6cmVwYWludFRpbWVyRmlyZWQpCiB7CiAgICAgc2V0SXNC
b3goKTsKIH0KQEAgLTExMSwxMiArMTEyLDE2IEBAIFJlbmRlckJveDo6UmVuZGVyQm94KERvY3Vt
ZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhCiAg
ICAgLCBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKICAgICAsIG1fbWF4UHJlZmVycmVk
TG9naWNhbFdpZHRoKC0xKQogICAgICwgbV9pbmxpbmVCb3hXcmFwcGVyKDApCisgICAgLCBtX3Jl
cGFpbnRUaW1lcih0aGlzLCAmUmVuZGVyQm94OjpyZXBhaW50VGltZXJGaXJlZCkKIHsKICAgICBz
ZXRJc0JveCgpOwogfQogCiBSZW5kZXJCb3g6On5SZW5kZXJCb3goKQogeworICAgIG1fcmVwYWlu
dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAoaGFzQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKHRoaXMp
KQorICAgICAgICByZW1vdmVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIodGhpcyk7CiB9CiAKIFJl
bmRlclJlZ2lvbiogUmVuZGVyQm94OjpjbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25zKFJlbmRlclJl
Z2lvbiogcmVnaW9uKSBjb25zdApAQCAtMTIyMSw3ICsxMjI2LDIyIEBAIHZvaWQgUmVuZGVyQm94
OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpCiAgICAgLy8gSWYgd2UgaGF2ZSBhIG5hdGl2ZSB0aGVtZSBhcHBlYXJhbmNlLCBw
YWludCB0aGF0IGJlZm9yZSBwYWludGluZyBvdXIgYmFja2dyb3VuZC4KICAgICAvLyBUaGUgdGhl
bWUgd2lsbCB0ZWxsIHVzIHdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBhbHNvIHBhaW50IHRoZSBD
U1MgYmFja2dyb3VuZC4KICAgICBJbnRSZWN0IHNuYXBwZWRQYWludFJlY3QocGl4ZWxTbmFwcGVk
SW50UmVjdChwYWludFJlY3QpKTsKLSAgICBib29sIHRoZW1lUGFpbnRlZCA9IHN0eWxlKCkuaGFz
QXBwZWFyYW5jZSgpICYmICF0aGVtZSgpLnBhaW50KHRoaXMsIHBhaW50SW5mbywgc25hcHBlZFBh
aW50UmVjdCk7CisKKyAgICBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzID0gbnVsbHB0cjsK
KyAgICBpZiAoc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpIHsKKyAgICAgICAgaWYgKGhhc0NvbnRy
b2xTdGF0ZXNGb3JSZW5kZXJlcih0aGlzKSkKKyAgICAgICAgICAgIGNvbnRyb2xTdGF0ZXMgPSBj
b250cm9sU3RhdGVzRm9yUmVuZGVyZXIodGhpcyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgY29udHJvbFN0YXRlcyA9IG5ldyBDb250cm9sU3RhdGVzKCk7CisgICAgICAgICAgICBhZGRD
b250cm9sU3RhdGVzRm9yUmVuZGVyZXIodGhpcywgY29udHJvbFN0YXRlcyk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBib29sIHRoZW1lUGFpbnRlZCA9IHN0eWxlKCkuaGFzQXBwZWFyYW5jZSgp
ICYmICF0aGVtZSgpLnBhaW50KHRoaXMsIGNvbnRyb2xTdGF0ZXMsIHBhaW50SW5mbywgc25hcHBl
ZFBhaW50UmVjdCk7CisKKyAgICBpZiAoY29udHJvbFN0YXRlcyAmJiBjb250cm9sU3RhdGVzLT5u
ZWVkc1JlcGFpbnQoKSkKKyAgICAgICAgbV9yZXBhaW50VGltZXIuc3RhcnRPbmVTaG90KDApOwor
CiAgICAgaWYgKCF0aGVtZVBhaW50ZWQpIHsKICAgICAgICAgaWYgKGJsZWVkQXZvaWRhbmNlID09
IEJhY2tncm91bmRCbGVlZEJhY2tncm91bmRPdmVyQm9yZGVyKQogICAgICAgICAgICAgcGFpbnRC
b3JkZXIocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIGJsZWVkQXZvaWRhbmNlKTsKQEAg
LTQ3MjksNCArNDc0OSwxMCBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6b2Zmc2V0RnJvbUxvZ2lj
YWxUb3BPZkZpcnN0UGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRhaW5lckJsb2NrLT5vZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBsb2dpY2FsVG9wKCk7CiB9CiAKK3ZvaWQg
UmVuZGVyQm94OjpyZXBhaW50VGltZXJGaXJlZChUaW1lcjxSZW5kZXJCb3g+JikKK3sKKyAgICBp
ZiAoIWRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSkKKyAgICAgICAgdGhpcy0+cmVwYWludCgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKaW5kZXggOGNhMzM1YjE5OWVjNDFhYzExOTdiMjg5Nzg3YjcxOGYwMDc0OWNjOS4uZDM1ZTc4
NWJlZjUwOGI5YzNjNjdkMWZjMThhNjAwNGZlNGRkMGVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaApAQCAtNzE1LDggKzcxNSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRy
PFJlbmRlck92ZXJmbG93PiBtX292ZXJmbG93OwogCiBwcml2YXRlOgorICAgIHZvaWQgcmVwYWlu
dFRpbWVyRmlyZWQoVGltZXI8UmVuZGVyQm94PiYpOworCiAgICAgLy8gVXNlZCB0byBzdG9yZSBz
dGF0ZSBiZXR3ZWVuIHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVEaWRDaGFuZ2UKICAgICBzdGF0
aWMgYm9vbCBzX2hhZE92ZXJmbG93Q2xpcDsKKworICAgIFRpbWVyPFJlbmRlckJveD4gbV9yZXBh
aW50VGltZXI7CiB9OwogCiBSRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyQm94LCBpc0Jv
eCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IDMy
YzdkMGI1ZGM4N2NlYTdmYTljMmJiMjExYjFmNjNjZWRlNGZkNDMuLjYzZmYxNDlkZmQ2YjA3NWUy
ZTQ5M2M2YjQwNjZkZDA4ZjMyZGEyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNvbnRlbnRE
YXRhLmgiCisjaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3Qu
aCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNjYs
NyArNjcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIFJlbmRlckVsZW1lbnQ6OnNf
YWZmZWN0c1BhcmVudEJsb2NrID0gZmFsc2U7CiBib29sIFJlbmRlckVsZW1lbnQ6OnNfbm9Mb25n
ZXJBZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsKLQorICAgIAorc3RhdGljIEhhc2hNYXA8Y29u
c3QgUmVuZGVyT2JqZWN0KiwgQ29udHJvbFN0YXRlcyo+JiBjb250cm9sU3RhdGVzUmVuZGVyZXJN
YXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPGNvbnN0IFJlbmRlck9i
amVjdCosIENvbnRyb2xTdGF0ZXMqPj4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CisgICAgCiBS
ZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyT2Jq
ZWN0KGVsZW1lbnQpCiAgICAgLCBtX2Jhc2VUeXBlRmxhZ3MoYmFzZVR5cGVGbGFncykKQEAgLTEz
NTAsNCArMTM1NywyOCBAQCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIFJlbmRlckVsZW1lbnQ6OnJl
bmRlck5hbWVkRmxvd1RocmVhZFdyYXBwZXIoKQogICAgIHJldHVybiByZW5kZXJlciAmJiByZW5k
ZXJlci0+aXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSA/IHRvUmVuZGVyTmFtZWRGbG93VGhyZWFk
KHJlbmRlcmVyKSA6IG51bGxwdHI7CiB9CiAKK2Jvb2wgUmVuZGVyRWxlbWVudDo6aGFzQ29udHJv
bFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbykKK3sKKyAgICByZXR1cm4g
Y29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkuY29udGFpbnMobyk7Cit9CisKK0NvbnRyb2xTdGF0
ZXMqIFJlbmRlckVsZW1lbnQ6OmNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJP
YmplY3QqIG8pCit7CisgICAgcmV0dXJuIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLmdldChv
KTsKK30KKwordm9pZCBSZW5kZXJFbGVtZW50OjpyZW1vdmVDb250cm9sU3RhdGVzRm9yUmVuZGVy
ZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvKQoreworICAgIENvbnRyb2xTdGF0ZXMqIHN0YXRlcyA9
IGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLmdldChvKTsKKyAgICBpZiAoc3RhdGVzKSB7Cisg
ICAgICAgIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLnJlbW92ZShvKTsKKyAgICAgICAgZGVs
ZXRlIHN0YXRlczsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyRWxlbWVudDo6YWRkQ29udHJvbFN0
YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbywgQ29udHJvbFN0YXRlcyogc3Rh
dGVzKQoreworICAgIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLmFkZChvLCBzdGF0ZXMpOwor
fQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCAwMjIz
MDYwNmRiNGI3OTViMjI1MWRjMjVjYTI1OWUyM2EzOWNlMWY5Li43MzYxYzUyNzdlNWI1OWFhOThi
ZTRlNGFjMGU0Y2M2NjUyYjMwNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBDb250cm9sU3RhdGVzOworCiBjbGFzcyBSZW5kZXJFbGVtZW50IDogcHVibGljIFJlbmRlck9i
amVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyRWxlbWVudCgpOwpAQCAtMTgxLDcg
KzE4MywxMiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHNldFJlbmRlcklubGluZUFsd2F5c0Ny
ZWF0ZXNMaW5lQm94ZXMoYm9vbCBiKSB7IG1fcmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVC
b3hlcyA9IGI7IH0KICAgICBib29sIHJlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXMo
KSBjb25zdCB7IHJldHVybiBtX3JlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXM7IH0K
LQorICAgIAorICAgIHN0YXRpYyBib29sIGhhc0NvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25z
dCBSZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0aWMgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRl
c0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopOworICAgIHN0YXRpYyB2b2lkIHJlbW92
ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0
aWMgdm9pZCBhZGRDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kiwg
Q29udHJvbFN0YXRlcyopOworICAgIAogcHJpdmF0ZToKICAgICB2b2lkIG5vZGUoKSBjb25zdCA9
IGRlbGV0ZTsKICAgICB2b2lkIG5vblBzZXVkb05vZGUoKSBjb25zdCA9IGRlbGV0ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDU4ZWYzN2FlYzU3ZGIwNzcx
ZWQ1ZGE1MmUyOWVjY2U4NDJlOTc4MjMuLmQwMjdlMDM0NDk0OGUxZmRlYzY3ZDNiZTg2MDU4ODYx
ODc1MWNhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAt
MjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAKICNpbmNsdWRlICJDU1NW
YWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
CkBAIC0yNjIsNyArMjYzLDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgIH0KIH0KIAot
Ym9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWU6OnBhaW50KFJl
bmRlck9iamVjdCogbywgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcywgY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgLy8gSWYgcGFpbnRpbmcg
aXMgZGlzYWJsZWQsIGJ1dCB3ZSBhcmVuJ3QgdXBkYXRpbmcgY29udHJvbCB0aW50cywgdGhlbiBq
dXN0IGJhaWwuCiAgICAgLy8gSWYgd2UgYXJlIHVwZGF0aW5nIGNvbnRyb2wgdGludHMsIGp1c3Qg
c2NoZWR1bGUgYSByZXBhaW50IGlmIHRoZSB0aGVtZSBzdXBwb3J0cyB0aW50aW5nCkBAIC0yODYs
NyArMjg3LDggQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmUKICAgICBjYXNlIERlZmF1bHRCdXR0
b25QYXJ0OgogICAgIGNhc2UgQnV0dG9uUGFydDoKICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBh
cnQ6Ci0gICAgICAgIG1fdGhlbWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJl
cihvKSwgY29uc3RfY2FzdDxHcmFwaGljc0NvbnRleHQqPihwYWludEluZm8uY29udGV4dCksIHIs
IG8tPnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmby0+dmlldygpLmZyYW1lVmlldygpKTsKKyAg
ICAgICAgdXBkYXRlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG8sIGNvbnRyb2xTdGF0ZXMpOwor
ICAgICAgICBtX3RoZW1lLT5wYWludChwYXJ0LCBjb250cm9sU3RhdGVzLCBjb25zdF9jYXN0PEdy
YXBoaWNzQ29udGV4dCo+KHBhaW50SW5mby5jb250ZXh0KSwgciwgby0+c3R5bGUoKS5lZmZlY3Rp
dmVab29tKCksICZvLT52aWV3KCkuZnJhbWVWaWV3KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC03MTMsNyArNzE1LDggQEAgYm9vbCBS
ZW5kZXJUaGVtZTo6aXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29u
c3QgQm9yZGVyRGF0YSYgYm8KIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFJlcGFpbnRSZWN0KGNv
bnN0IFJlbmRlck9iamVjdCogbywgSW50UmVjdCYgcikKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQot
ICAgIG1fdGhlbWUtPmluZmxhdGVDb250cm9sUGFpbnRSZWN0KG8tPnN0eWxlKCkuYXBwZWFyYW5j
ZSgpLCBjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobyksIHIsIG8tPnN0eWxlKCkuZWZmZWN0aXZl
Wm9vbSgpKTsKKyAgICBDb250cm9sU3RhdGVzIHN0YXRlcyhleHRyYWN0Q29udHJvbFN0YXRlc0Zv
clJlbmRlcmVyKG8pKTsKKyAgICBtX3RoZW1lLT5pbmZsYXRlQ29udHJvbFBhaW50UmVjdChvLT5z
dHlsZSgpLmFwcGVhcmFuY2UoKSwgJnN0YXRlcywgciwgby0+c3R5bGUoKS5lZmZlY3RpdmVab29t
KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obyk7CiAgICAgVU5VU0VEX1BBUkFNKHIpOwpA
QCAtNzI1LDE0ICs3MjgsMTQgQEAgYm9vbCBSZW5kZXJUaGVtZTo6c3VwcG9ydHNGb2N1c1Jpbmco
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogICAgIHJldHVybiAoc3R5bGUtPmhhc0Fw
cGVhcmFuY2UoKSAmJiBzdHlsZS0+YXBwZWFyYW5jZSgpICE9IFRleHRGaWVsZFBhcnQgJiYgc3R5
bGUtPmFwcGVhcmFuY2UoKSAhPSBUZXh0QXJlYVBhcnQgJiYgc3R5bGUtPmFwcGVhcmFuY2UoKSAh
PSBNZW51bGlzdEJ1dHRvblBhcnQgJiYgc3R5bGUtPmFwcGVhcmFuY2UoKSAhPSBMaXN0Ym94UGFy
dCk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdlZChSZW5kZXJPYmplY3QqIG8s
IENvbnRyb2xTdGF0ZSBzdGF0ZSkgY29uc3QKK2Jvb2wgUmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdl
ZChSZW5kZXJPYmplY3QqIG8sIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZSkgY29uc3QKIHsK
ICAgICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhlIGNvbnRyb2xzIGRvbid0
IHJlc3BvbmQgdG8gY2hhbmdlcyBpbiA6aG92ZXIgc3RhdGUKLSAgICBpZiAoc3RhdGUgPT0gSG92
ZXJTdGF0ZSAmJiAhc3VwcG9ydHNIb3Zlcigmby0+c3R5bGUoKSkpCisgICAgaWYgKHN0YXRlID09
IENvbnRyb2xTdGF0ZXM6OkhvdmVyU3RhdGUgJiYgIXN1cHBvcnRzSG92ZXIoJm8tPnN0eWxlKCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBBc3N1bWUgcHJlc3NlZCBzdGF0ZSBp
cyBvbmx5IHJlc3BvbmRlZCB0byBpZiB0aGUgY29udHJvbCBpcyBlbmFibGVkLgotICAgIGlmIChz
dGF0ZSA9PSBQcmVzc2VkU3RhdGUgJiYgIWlzRW5hYmxlZChvKSkKKyAgICBpZiAoc3RhdGUgPT0g
Q29udHJvbFN0YXRlczo6UHJlc3NlZFN0YXRlICYmICFpc0VuYWJsZWQobykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIFJlcGFpbnQgdGhlIGNvbnRyb2wuCkBAIC03NDAsMzQgKzc0
Myw0MCBAQCBib29sIFJlbmRlclRoZW1lOjpzdGF0ZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiBvLCBD
b250cm9sU3RhdGUgc3RhdGUpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNvbnRyb2xT
dGF0ZXMgUmVuZGVyVGhlbWU6OmNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJP
YmplY3QqIG8pIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lOjp1cGRhdGVDb250cm9sU3RhdGVzRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvLCBDb250cm9sU3RhdGVzKiBjb250cm9sU3Rh
dGVzKSBjb25zdAogewotICAgIENvbnRyb2xTdGF0ZXMgcmVzdWx0ID0gMDsKKyAgICBDb250cm9s
U3RhdGVzIG5ld1N0YXRlcyA9IGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobyk7Cisg
ICAgY29udHJvbFN0YXRlcy0+c2V0U3RhdGVzKG5ld1N0YXRlcy5zdGF0ZXMoKSk7Cit9CisKK0Nv
bnRyb2xTdGF0ZXM6OlN0YXRlcyBSZW5kZXJUaGVtZTo6ZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0Cit7CisgICAgQ29udHJvbFN0YXRl
czo6U3RhdGVzIHN0YXRlcyA9IDA7CiAgICAgaWYgKGlzSG92ZXJlZChvKSkgewotICAgICAgICBy
ZXN1bHQgfD0gSG92ZXJTdGF0ZTsKKyAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6Okhv
dmVyU3RhdGU7CiAgICAgICAgIGlmIChpc1NwaW5VcEJ1dHRvblBhcnRIb3ZlcmVkKG8pKQotICAg
ICAgICAgICAgcmVzdWx0IHw9IFNwaW5VcFN0YXRlOworICAgICAgICAgICAgc3RhdGVzIHw9IENv
bnRyb2xTdGF0ZXM6OlNwaW5VcFN0YXRlOwogICAgIH0KICAgICBpZiAoaXNQcmVzc2VkKG8pKSB7
Ci0gICAgICAgIHJlc3VsdCB8PSBQcmVzc2VkU3RhdGU7CisgICAgICAgIHN0YXRlcyB8PSBDb250
cm9sU3RhdGVzOjpQcmVzc2VkU3RhdGU7CiAgICAgICAgIGlmIChpc1NwaW5VcEJ1dHRvblBhcnRQ
cmVzc2VkKG8pKQotICAgICAgICAgICAgcmVzdWx0IHw9IFNwaW5VcFN0YXRlOworICAgICAgICAg
ICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OlNwaW5VcFN0YXRlOwogICAgIH0KICAgICBpZiAo
aXNGb2N1c2VkKG8pICYmIG8tPnN0eWxlKCkub3V0bGluZVN0eWxlSXNBdXRvKCkpCi0gICAgICAg
IHJlc3VsdCB8PSBGb2N1c1N0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6
Rm9jdXNTdGF0ZTsKICAgICBpZiAoaXNFbmFibGVkKG8pKQotICAgICAgICByZXN1bHQgfD0gRW5h
YmxlZFN0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRl
OwogICAgIGlmIChpc0NoZWNrZWQobykpCi0gICAgICAgIHJlc3VsdCB8PSBDaGVja2VkU3RhdGU7
CisgICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGU7CiAgICAgaWYg
KGlzUmVhZE9ubHlDb250cm9sKG8pKQotICAgICAgICByZXN1bHQgfD0gUmVhZE9ubHlTdGF0ZTsK
KyAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OlJlYWRPbmx5U3RhdGU7CiAgICAgaWYg
KGlzRGVmYXVsdChvKSkKLSAgICAgICAgcmVzdWx0IHw9IERlZmF1bHRTdGF0ZTsKKyAgICAgICAg
c3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OkRlZmF1bHRTdGF0ZTsKICAgICBpZiAoIWlzQWN0aXZl
KG8pKQotICAgICAgICByZXN1bHQgfD0gV2luZG93SW5hY3RpdmVTdGF0ZTsKKyAgICAgICAgc3Rh
dGVzIHw9IENvbnRyb2xTdGF0ZXM6OldpbmRvd0luYWN0aXZlU3RhdGU7CiAgICAgaWYgKGlzSW5k
ZXRlcm1pbmF0ZShvKSkKLSAgICAgICAgcmVzdWx0IHw9IEluZGV0ZXJtaW5hdGVTdGF0ZTsKLSAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6SW5kZXRl
cm1pbmF0ZVN0YXRlOworICAgIHJldHVybiBzdGF0ZXM7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWU6
OmlzQWN0aXZlKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmgKaW5kZXggNjg1NDYzNDY3Mzg5ODFjM2EzYWEyZGM0ZmJmOTk3YTUx
NzA2ZmRiOC4uNjcwNDI2ZWI3ZDkwZjNiNGUwZGEzZTdkMGE1MzQyZGM5ZjgxYzMyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTU3R5bGVTaGVldDsKK2NsYXNzIENvbnRyb2xTdGF0
ZXM7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmlsZUxpc3Q7CiBjbGFzcyBIVE1MSW5wdXRFbGVt
ZW50OwpAQCAtNzgsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2Fs
bGVkIHRvIHBhaW50IHRoZSB3aWRnZXQgYXMgYSBiYWNrZ3JvdW5kIG9mIHRoZSBSZW5kZXJPYmpl
Y3QuICBBIHdpZGdldCdzIGZvcmVncm91bmQsIGUuZy4sIHRoZQogICAgIC8vIHRleHQgb2YgYSBi
dXR0b24sIGlzIGFsd2F5cyByZW5kZXJlZCBieSB0aGUgZW5naW5lIGl0c2VsZi4gIFRoZSBib29s
ZWFuIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMKICAgICAvLyB3aGV0aGVyIHRoZSBDU1MgYm9yZGVy
L2JhY2tncm91bmQgc2hvdWxkIGFsc28gYmUgcGFpbnRlZC4KLSAgICBib29sIHBhaW50KFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIHBh
aW50KFJlbmRlck9iamVjdCosIENvbnRyb2xTdGF0ZXMqLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7CiAgICAgYm9vbCBwYWludEJvcmRlck9ubHkoUmVuZGVyT2JqZWN0KiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIGJvb2wgcGFpbnREZWNvcmF0aW9u
cyhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKQEAg
LTEyNiw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQg
d2hlbmV2ZXIgYSByZWxldmFudCBzdGF0ZSBjaGFuZ2VzIG9uIGEgcGFydGljdWxhciB0aGVtZWQg
b2JqZWN0LCBlLmcuLCB0aGUgbW91c2UgYmVjb21lcyBwcmVzc2VkCiAgICAgLy8gb3IgYSBjb250
cm9sIGJlY29tZXMgZGlzYWJsZWQuCi0gICAgdmlydHVhbCBib29sIHN0YXRlQ2hhbmdlZChSZW5k
ZXJPYmplY3QqLCBDb250cm9sU3RhdGUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdGF0ZUNo
YW5nZWQoUmVuZGVyT2JqZWN0KiwgQ29udHJvbFN0YXRlczo6U3RhdGVzKSBjb25zdDsKIAogICAg
IC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgdGhlbWUgY2hhbmdlcyBvbiB0
aGUgc3lzdGVtIGluIG9yZGVyIHRvIGZsdXNoIGNhY2hlZCByZXNvdXJjZXMgZnJvbSB0aGUKICAg
ICAvLyBvbGQgdGhlbWUuCkBAIC0zNjksOCArMzcwLDggQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAK
IHB1YmxpYzoKLSAgICAvLyBNZXRob2RzIGZvciBzdGF0ZSBxdWVyeWluZwotICAgIENvbnRyb2xT
dGF0ZXMgY29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29u
c3Q7CisgICAgdm9pZCB1cGRhdGVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVy
T2JqZWN0KiwgQ29udHJvbFN0YXRlcyopIGNvbnN0OworICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRl
cyBleHRyYWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopIGNv
bnN0OwogICAgIGJvb2wgaXNBY3RpdmUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAg
Ym9vbCBpc0NoZWNrZWQoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgYm9vbCBpc0lu
ZGV0ZXJtaW5hdGUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggMDU2ZTlkNDc2ZjQ4NDQ0NGE1ZmUxZDIw
YjEwNTdkODRmN2IwNjliOS4uYWQ1M2I0Y2EzZDdlNzIxMDNiMjI5MzJmNDM0OWI5ZjQ3OGQzNzBl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjEy
LDcgKzIxMiw4IEBAIFJlbmRlclRoZW1lTWFjOjp+UmVuZGVyVGhlbWVNYWMoKQogCiBOU1ZpZXcq
IFJlbmRlclRoZW1lTWFjOjpkb2N1bWVudFZpZXdGb3IoUmVuZGVyT2JqZWN0KiBvKSBjb25zdAog
ewotICAgIHJldHVybiBUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoJm8tPnZpZXcoKS5mcmFtZVZpZXco
KSwgY29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG8pKTsKKyAgICBDb250cm9sU3RhdGVzIHN0YXRl
cyhleHRyYWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG8pKTsKKyAgICByZXR1cm4gVGhlbWVN
YWM6OmVuc3VyZWRWaWV3KCZvLT52aWV3KCkuZnJhbWVWaWV3KCksICZzdGF0ZXMpOwogfQogCiAj
aWYgRU5BQkxFKFZJREVPKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228014</attachid>
            <date>2014-03-27 17:59:22 -0700</date>
            <delta_ts>2014-03-27 18:15:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130736-20140328115836.patch</filename>
            <type>text/plain</type>
            <size>56125</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRlNTdiNzExY2RiODYw
YjQwY2ZkZjJmMjcxNmJjYzFlNGViYTE2Yi4uZjA4NTIyYTkyY2IwNjAzNGUwNTc5OTQ4MDg4ZTg1
MzAwOTc4NDMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxNC0wMy0yNyAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBmb3JtIGNvbnRy
b2xzIHRoYXQgbWF5IG5lZWQgaW5jcmVtZW50YWwgcmVkcmF3CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3MzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgc29tZSBmb3JtIGNvbnRyb2xz
IHRoYXQgY2hhbmdlIGFwcGVhcmFuY2UKKyAgICAgICAgb3ZlciB0aW1lLiBFeHBhbmQgdGhlIENv
bnRyb2xTdGF0ZXMgc28gdGhhdCBpdCBjYW4KKyAgICAgICAgaG9sZCBhIGxpdHRsZSBtb3JlIGlu
Zm9ybWF0aW9uLCBpbmNsdWRpbmcgYSByZWZlcmVuY2UKKyAgICAgICAgdG8gdGhlIG5hdGl2ZSBm
b3JtIGNvbnRyb2wuIFRoaXMgd2F5IHRoZSBUaGVtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBj
YW4gcmVwYWludCB0aGUgZXhpc3RpbmcgbmF0aXZlIGNvbnRyb2wgaWYgbmVjZXNzYXJ5LiBBdAor
ICAgICAgICBsZWFzdCBUaGVtZU1hYyB3YXMgcmV1c2luZyBhIHNpbmdsZSBjb250cm9sIGZvciBw
YWludGluZworICAgICAgICBhbGwgaW5zdGFuY2VzIGJlZm9yZSB0aGlzIGNoYW5nZS4KKworICAg
ICAgICBTaW5jZSBDb250cm9sU3RhdGVzIGlzIG5vdyBhIGNsYXNzLCBwYXNzIGl0IGFyb3VuZCBi
eQorICAgICAgICByZWZlcmVuY2UuCisKKyAgICAgICAgVGhlIG90aGVyIG1ham9yIGNoYW5nZSBp
cyBrZWVwaW5nIGEgdGltZXIgdG8gdHJpZ2dlciBhCisgICAgICAgIHJlcGFpbnQgaW4gUmVuZGVy
Qm94LCB3aGljaCBoYXBwZW5zIGlmIFRoZW1lL1JlbmRlclRoZW1lCisgICAgICAgIHVwZGF0ZSB0
aGUgQ29udHJvbFN0YXRlIHRvIHJlcXVlc3Qgb25lLgorCisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbTogQWRkIENvbnRyb2xTdGF0ZXMuaC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVyczogRGl0dG8uCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QWN0aXZlKTogU3RhdGVzIG5vdyB3aXRoaW4gQ29udHJv
bFN0YXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEhvdmVyZWQpOiBEaXR0by4K
KyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lU2VsZWN0aW9uOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOiBEaXR0by4KKyAg
ICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRPbmx5QXR0cmli
dXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVja2VkKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRJbmRldGVybWluYXRlKTog
RGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9Db250cm9sU3RhdGVzLmg6IE5ldyBmaWxlLiBDb3BpZWQgdGhlIG9sZCBD
b250cm9sU3RhdGVzIGVudW0sCisgICAgICAgIGFuZCBhZGRlZCBhY2Nlc3NvcnMgdG8gaG9sZCB3
aGV0aGVyIG9yIG5vdCB0aGUgc3RhdGUgaXMgZGlydHksIGFuZAorICAgICAgICBhIHJlZmVyZW5j
ZSB0byBhIHBsYXRmb3JtIGNvbnRyb2wgaWYgbmVjZXNzYXJ5LgorICAgICAgICAqIHBsYXRmb3Jt
L1RoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6c2VsZWN0aW9uQ29sb3IpOiBQYXNz
IENvbnRyb2xTdGF0ZXMgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpwYWludCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0
KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vVGhlbWVUeXBlcy5oOiBSZW1vdmUgQ29udHJv
bFN0YXRlcyBlbnVtLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YXBwbHlFZGplU3RhdGVGcm9tRm9y
bSk6IFBhc3MgQ29udHJvbFN0YXRlcyBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVFZmw6OnBhaW50VGhlbWVQYXJ0KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZWZs
L1JlbmRlclRoZW1lRWZsLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1h
Yy5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAg
ICgtW1dlYkNvcmVUaGVtZVZpZXcgYWRkU3VidmlldzpdKTogTmV3IG1ldGhvZCB0byBtYWtlIHN1
cmUgd2UgZG9uJ3QgYWRkIENBTGF5ZXIgYmFja2VkCisgICAgICAgIHZpZXdzIHRvIHRoZSBOU1Zp
ZXcgd2UncmUgdXNpbmcgZm9yIHJlbmRlcmluZy4KKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVN0
YXRlcyk6IFVzZSB0aGUgcHJpdmF0ZSBhbmltYXRlZCBzZXR0ZXJzIGlmIG5lY2Vzc2FyeS4KKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRDb250cm9sU3RhdGVzVG9UaGVtZURyYXdTdGF0ZSk6IE5h
bWVzcGFjaW5nLgorICAgICAgICAoV2ViQ29yZTo6Y29uZmlndXJlQ2hlY2tib3gpOiBQYXNzIENv
bnRyb2xTdGF0ZXMgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNoZWNrYm94Q2Vs
bCk6IE5ldyBoZWxwZXIgc2luY2Ugd2UncmUgY3JlYXRpbmcgbm9uLXN0YXRpYyBjZWxscy4KKyAg
ICAgICAgKFdlYkNvcmU6OnNoYXJlZENoZWNrYm94Q2VsbCk6IFRoZSBvbGQgc3RhdGljIHByb3Zp
ZGVyLCByZW5hbWVkLgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRDaGVja2JveCk6IENoZWNrIGlm
IHRoaXMgcGFpbnQgd2FzIHRyaWdnZXJlZCBieSBhIHN0YXRlIGNoYW5nZQorICAgICAgICBvciBh
biBhbmltYXRpb24uIFVwZGF0ZSB0aGUgQ29udHJvbFN0YXRlcyBpZiB3ZSBuZWVkIHRvIGJlIHJl
cGFpbnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJhZGlvKTogUGFyYW1ldGVyIGlzIG5vdyBDb250
cm9sU3RhdGVzKi4KKyAgICAgICAgKFdlYkNvcmU6OnBhaW50UmFkaW8pOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OnNldFVwQnV0dG9uQ2VsbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
YnV0dG9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpwYWludEJ1dHRvbik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6cGFpbnRTdGVwcGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpUaGVtZU1hYzo6ZW5zdXJlZFZpZXcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
TWFjOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
VGhlbWVNYWM6OnBhaW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjaGVja2JveCk6IERl
bGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OlJlbmRlckJveCk6IEluaXRpYWxpemUgdGltZXIuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6On5SZW5kZXJCb3gpOiBTdG9wIGFueSBwZW5kaW5nIHRpbWVycyBh
bmQgZGVsZXRlIHRoZSBDb250cm9sU3RhdGUgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKTogQ3JlYXRlIGEgQ29udHJvbFN0YXRl
cyBpZiBuZWVkZWQuIFBhaW50LCBhbmQgc3RhcnQgdGhlIHJlcGFpbnQKKyAgICAgICAgdGltZXIg
aWYgdGhlIENvbnRyb2xTdGF0ZXMgc2F5IHdlIHNob3VsZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6cmVwYWludFRpbWVyRmlyZWQpOiBDYWxsIHJlcGFpbnQgd2hlbiB0aGUgdGltZXIg
ZmlyZXMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOiBBZGQgYSB0aW1lciBmb3Ig
cmVwYWludGluZy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb250cm9sU3RhdGVzUmVuZGVyZXJNYXApOiBBIHN0YXRpYyBIYXNoTWFw
IHRoYXQgYXNzb2NpYXRlcyByZW5kZXJlcnMgd2l0aCBDb250cm9sU3RhdGVzLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6aGFzQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpyZW1vdmVDb250cm9sU3RhdGVzRm9y
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6YWRkQ29udHJvbFN0
YXRlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6cGFpbnQpOiBVc2UgYSBwb2ludGVyIHRvIENvbnRyb2xTdGF0ZXMuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0UmVwYWludFJlY3QpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpzdGF0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp1cGRhdGVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIp
OiBOZXcgbWV0aG9kIHRoYXQganVzdCB1cGRhdGVzIHRoZSBzdGF0ZXMgcGFydCBvZiBDb250cm9s
U3RhdGVzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmV4dHJhY3RDb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIpOiBOZXcgbWV0aG9kIHRoYXQgY2FsY3VsYXRlcyB0aGUgc3RhdGUuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZU1hYzo6ZG9jdW1lbnRWaWV3Rm9yKTogVXNlIGEgQ29udHJvbFN0YXRlcyBwb2ludGVyLgorCiAy
MDE0LTAzLTI0ICBNYXJ0aW4gSG9kb3ZhbiAgPG1ob2RvdmFuQGluZi51LXN6ZWdlZC5odT4KIAog
ICAgICAgICBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKSBndWFyZCBmb3IgQ1NTR3JpZExpbmVOYW1l
c1ZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA0MjAzNGY5NjhmOTFhOTZh
NGUxM2MwZTVlYzY0YTNlMWY0ZTJiOGRmLi5jNjczNWI2MzE2MjQzZDI3Y2JiZjc4MWU2Y2M2M2Zi
Zjc4OTM0MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTYwMDEsNiArNjAw
MSw3IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
bG9yQ2hvb3NlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlw
ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ29udGV4dE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0
TWVudS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4
IGI5NmVlM2M1OGNiMDc5NWU4ZjQwOTYyODdlNGIwZWEyNTgxNjE0ZTEuLjIxZjk2NGZmYTBhOTc2
NmFhMzlmNGQ0YTczYmY2NTAyNzM2ZmQwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTkwMjAsNiArMTkwMjAsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udGVudFR5cGUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENvbnRleHRNZW51LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDb250ZXh0TWVudUl0ZW0uaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENvbnRyb2xTdGF0ZXMuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENvb2tpZXNTdHJhdGVneS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ3Jvc3NUaHJlYWRDb3BpZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEN1cnNvci5oIiAvPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
CmluZGV4IDRhNTZjNjgwZTViMjgyZGYwMDMxMDY2NDhhZGMxNzUwNGUzMzk3MDIuLmU3NzU3NTZl
ZDEwMWM1NWM0ODA5ZTU1ZGNhNTQwZmZkMDM1MWZmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTc5NjYs
NiArNzk2Niw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDb250ZXh0
TWVudUl0ZW0uaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDb250cm9sU3RhdGVz
LmgiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29va2llc1N0cmF0ZWd5LmgiPgog
ICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRi
YmIzYWZiNDBjODk1MmU3Y2NmMmM0YmNjMjhlZTY2ZTFkNjkwMDQuLjdkNmNjYWMzN2ExNmQxOTY4
NDkyOTM2MWM1OGYxNTkxNWM5OWQwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwMzIsNiArODAzMiw3IEBACiAJCTMxMDc4
Q0M0MTg4MEE2QTYwMDgwOTlEQyAvKiBPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmlkbDsgcGF0aCA9
IGNhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzEwNzhDQzUxODgwQUFBQTAwODA5OURDIC8qIEpTT0VTVGV4dHVyZUhhbGZG
bG9hdExpbmVhci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09F
U1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTA3OENDNjE4ODBBQUFBMDA4MDk5REMgLyogSlNPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT0VTVGV4dHVyZUhhbGZGbG9h
dExpbmVhci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTFDMDhCQzE4RTM1RDY4
MDBCNjU2MTUgLyogQ29udHJvbFN0YXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb250cm9sU3RhdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMjg4
RTZFMEUzMDA1RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyODhFNkYwRTMwMDVENjAwMzYxOUFFIC8q
IFdlYktpdENTU0tleWZyYW1lUnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzEyODhFNzAwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTS2V5ZnJhbWVzUnVs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDg3NCw2ICsyMDg3NSw3IEBA
CiAJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMzExQzA4QkMxOEUzNUQ2ODAwQjY1NjE1
IC8qIENvbnRyb2xTdGF0ZXMuaCAqLywKIAkJCQk0OUU5MTJBNDBFRkFDOEU2MDA5RDBDQUYgLyog
YW5pbWF0aW9uICovLAogCQkJCUZEMzE2MDQwMTJCMDI2QTMwMEMxQTM1OSAvKiBhdWRpbyAqLywK
IAkJCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggMzUwNzQ2MTZhMWQ2NzQ0MDIwMDQ1M2Y1N2ExYWU3Y2VlM2ExNTJiOC4uZDE3NDlk
MGQ2ZDNlMjM5MzhkOTA3YmFlYWRlYzFmYTVkN2VlYjJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cApAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZmxhZywg
Ym9vbCBwYXVzZSkKICAgICBpZiAocmVhY3RzVG9QcmVzcykKICAgICAgICAgc2V0TmVlZHNTdHls
ZVJlY2FsYygpOwogCi0gICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgp
ICYmIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFByZXNzZWRT
dGF0ZSkpCisgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYmIHJl
bmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIENvbnRyb2xTdGF0ZXM6
OlByZXNzZWRTdGF0ZSkpCiAgICAgICAgIHJlYWN0c1RvUHJlc3MgPSB0cnVlOwogCiAgICAgLy8g
VGhlIHJlc3Qgb2YgdGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIGEgZmVhdHVyZSB0aGF0IG9ubHkg
d29ya3MgaWYgdGhlCkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBFbGVtZW50OjpzZXRIb3ZlcmVk
KGJvb2wgZmxhZykKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogCiAgICAgaWYgKHJl
bmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBIb3ZlclN0YXRlKTsKKyAgICAgICAgcmVu
ZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6
SG92ZXJTdGF0ZSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoYm9vbCBhbGln
blRvVG9wKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXgg
NjEwMWY2NGJkNjhmY2UyMjgwMGI0Njc1MzFjMjkzYjJiMWM0MTIwOC4uNDlhODc4M2NjOTNjODZk
Yzg4NTEyNTExY2ZmMTY3YjI0YTZmNTE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAKQEAgLTE3NDUsNyArMTc0NSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246
OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hhbmdlZCgpCiAgICAgICAgIGVsZW1lbnQtPnNldE5lZWRz
U3R5bGVSZWNhbGMoKTsKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBlbGVt
ZW50LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5z
dHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJlci0+dGhlbWUo
KS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIsIEZvY3VzU3RhdGUpOworICAgICAgICAgICAgICAgIHJl
bmRlcmVyLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlciwgQ29udHJvbFN0YXRlczo6Rm9j
dXNTdGF0ZSk7CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAzYjI1Y2IwZDNjOGRkZTVhMTJjMzU2OGJkZGY2
NGZmNjFkNmRmMWNkLi4wZTA1N2UxYjUxMGJjYTFiOTJhOGY1YjRlMWU0MWVjMmQ2ZTc4MDkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAg
LTE1NCw3ICsxNTQsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc2FibGVkU3Rh
dGVDaGFuZ2VkKCkKICAgICBzZXROZWVkc1dpbGxWYWxpZGF0ZUNoZWNrKCk7CiAgICAgZGlkQWZm
ZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3RvckRpc2FibGVkIHwgQWZmZWN0ZWRTZWxlY3RvckVu
YWJsZWQpOwogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBw
ZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5k
ZXJlcigpLCBFbmFibGVkU3RhdGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRl
Q2hhbmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpFbmFibGVkU3RhdGUpOwogfQogCiB2
b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRPbmx5QXR0cmlidXRlQ2hhbmdlZCgpCkBA
IC0xNjIsNyArMTYyLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZWFkT25seUF0
dHJpYnV0ZUNoYW5nZWQoKQogICAgIHNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKTsKICAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+
c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3Rh
dGVDaGFuZ2VkKHJlbmRlcmVyKCksIFJlYWRPbmx5U3RhdGUpOworICAgICAgICByZW5kZXJlcigp
LT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpSZWFkT25s
eVN0YXRlKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZEF0dHJp
YnV0ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5k
ZXggNThhOTQwY2Q2MTBlOTAyNTgxOTMwMmZlYjI4N2UzZDI0ZTBkYjdhOC4uODA0MDY5Y2U0Mzc0
ZmI2OWQwMzExNWQ1NWRlNzI2ODhmMDNkNTVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCkBAIC04NTksNyArODU5LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50
OjpzZXRDaGVja2VkKGJvb2wgbm93Q2hlY2tlZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVu
dEIKICAgICBpZiAoQ2hlY2tlZFJhZGlvQnV0dG9ucyogYnV0dG9ucyA9IGNoZWNrZWRSYWRpb0J1
dHRvbnMoKSkKICAgICAgICAgICAgIGJ1dHRvbnMtPnVwZGF0ZUNoZWNrZWRTdGF0ZSh0aGlzKTsK
ICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLmhhc0FwcGVhcmFuY2Uo
KSkKLSAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwg
Q2hlY2tlZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQo
cmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6Q2hlY2tlZFN0YXRlKTsKICAgICBzZXROZWVkc1Zh
bGlkaXR5Q2hlY2soKTsKIAogICAgIC8vIElkZWFsbHkgd2UnZCBkbyB0aGlzIGZyb20gdGhlIHJl
bmRlciB0cmVlIChtYXRjaGluZwpAQCAtODkzLDcgKzg5Myw3IEBAIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6c2V0SW5kZXRlcm1pbmF0ZShib29sIG5ld1ZhbHVlKQogICAgIGRpZEFmZmVjdFNlbGVj
dG9yKEFmZmVjdGVkU2VsZWN0b3JJbmRldGVybWluYXRlKTsKIAogICAgIGlmIChyZW5kZXJlcigp
ICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJl
cigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDaGVja2VkU3RhdGUpOworICAg
ICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDb250cm9s
U3RhdGVzOjpDaGVja2VkU3RhdGUpOwogfQogCiBpbnQgSFRNTElucHV0RWxlbWVudDo6c2l6ZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IDll
MzZmYTljZjRkNjYxYWFmMGJjM2JkZGYzN2U5ZTUxMjRkZDNhODEuLjQ5ZjQ4YmYzODFlOWI0NTA0
OTQ0ZmJhMDU0MDVhOTlkNDc5MzE2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QK
ICAgICAgICAgaWYgKG9sZERpc2FibGVkICE9IG1fZGlzYWJsZWQpIHsKICAgICAgICAgICAgIGRp
ZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JEaXNhYmxlZCB8IEFmZmVjdGVkU2VsZWN0
b3JFbmFibGVkKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0
eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1l
KCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJsZWRTdGF0ZSk7CisgICAgICAgICAgICAg
ICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ29udHJvbFN0
YXRlczo6RW5hYmxlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBz
ZWxlY3RlZEF0dHIpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBtYXRjaCB3aGF0
IHRoZSBIVE1MIHNwZWNpZmljYXRpb24gc2F5cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRy
b2xTdGF0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjQ3ZjU5YTI0MDQzMWUxZjczMmYwODJiN2Q3ZDdjNmFh
MWIxYjA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udHJv
bFN0YXRlcy5oCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb250cm9sU3RhdGVzX2gKKyNkZWZpbmUgQ29udHJv
bFN0YXRlc19oCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworI2lmbmRlZiBfX09CSkNfXwordHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlk
OworI2VuZGlmCisKK3R5cGVkZWYgaWQgUGxhdGZvcm1Db250cm9sSW5zdGFuY2U7CisKK2NsYXNz
IENvbnRyb2xTdGF0ZXMgeworcHVibGljOgorICAgIGVudW0geworICAgICAgICBIb3ZlclN0YXRl
ID0gMSwKKyAgICAgICAgUHJlc3NlZFN0YXRlID0gMSA8PCAxLAorICAgICAgICBGb2N1c1N0YXRl
ID0gMSA8PCAyLAorICAgICAgICBFbmFibGVkU3RhdGUgPSAxIDw8IDMsCisgICAgICAgIENoZWNr
ZWRTdGF0ZSA9IDEgPDwgNCwKKyAgICAgICAgUmVhZE9ubHlTdGF0ZSA9IDEgPDwgNSwKKyAgICAg
ICAgRGVmYXVsdFN0YXRlID0gMSA8PCA2LAorICAgICAgICBXaW5kb3dJbmFjdGl2ZVN0YXRlID0g
MSA8PCA3LAorICAgICAgICBJbmRldGVybWluYXRlU3RhdGUgPSAxIDw8IDgsCisgICAgICAgIFNw
aW5VcFN0YXRlID0gMSA8PCA5LCAvLyBTdWItc3RhdGUgZm9yIEhvdmVyU3RhdGUgYW5kIFByZXNz
ZWRTdGF0ZS4KKyAgICAgICAgQWxsU3RhdGVzID0gMHhmZmZmZmZmZgorICAgIH07CisKKyAgICB0
eXBlZGVmIHVuc2lnbmVkIFN0YXRlczsKKworICAgIENvbnRyb2xTdGF0ZXMoU3RhdGVzIHN0YXRl
cykKKyAgICAgICAgOiBtX3N0YXRlcyhzdGF0ZXMpCisgICAgICAgICwgbV9pbml0aWFsaXplZChm
YWxzZSkKKyAgICAgICAgLCBtX25lZWRzUmVwYWludChmYWxzZSkKKyAgICAgICAgLCBtX2lzRGly
dHkoZmFsc2UpCisgICAgICAgICwgbV9jb250cm9sSW5zdGFuY2UobnVsbHB0cikKKyAgICB7Cisg
ICAgfQorCisgICAgQ29udHJvbFN0YXRlcygpCisgICAgICAgIDogQ29udHJvbFN0YXRlcygwKQor
ICAgIHsKKyAgICB9CisKKyAgICB+Q29udHJvbFN0YXRlcygpCisgICAgeworICAgIH0KKworICAg
IFN0YXRlcyBzdGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlczsgfQorICAgIHZvaWQgc2V0
U3RhdGVzKFN0YXRlcyBuZXdTdGF0ZXMpCisgICAgeworICAgICAgICBpZiAobmV3U3RhdGVzID09
IG1fc3RhdGVzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3N0YXRlcyA9IG5ld1N0
YXRlczsKKyAgICAgICAgbV9pc0RpcnR5ID0gbV9pbml0aWFsaXplZDsKKyAgICAgICAgbV9pbml0
aWFsaXplZCA9IHRydWU7CisgICAgfQorCisgICAgYm9vbCBuZWVkc1JlcGFpbnQoKSBjb25zdCB7
IHJldHVybiBtX25lZWRzUmVwYWludDsgfQorICAgIHZvaWQgc2V0TmVlZHNSZXBhaW50KGJvb2wg
cikgeyBtX25lZWRzUmVwYWludCA9IHI7IH0KKworICAgIGJvb2wgaXNEaXJ0eSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNEaXJ0eTsgfQorICAgIHZvaWQgc2V0RGlydHkoYm9vbCBkKSB7IG1faXNEaXJ0
eSA9IGQ7IH0KKworICAgIFBsYXRmb3JtQ29udHJvbEluc3RhbmNlIHBsYXRmb3JtQ29udHJvbCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbEluc3RhbmNlLmdldCgpOyB9CisgICAgdm9pZCBzZXRQ
bGF0Zm9ybUNvbnRyb2woUGxhdGZvcm1Db250cm9sSW5zdGFuY2UgaW5zdGFuY2UpIHsgbV9jb250
cm9sSW5zdGFuY2UgPSBpbnN0YW5jZTsgfQorCitwcml2YXRlOgorICAgIFN0YXRlcyBtX3N0YXRl
czsKKyAgICBib29sIG1faW5pdGlhbGl6ZWQ7CisgICAgYm9vbCBtX25lZWRzUmVwYWludDsKKyAg
ICBib29sIG1faXNEaXJ0eTsKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1Db250cm9sSW5zdGFuY2U+
IG1fY29udHJvbEluc3RhbmNlOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVt
ZS5oCmluZGV4IDUwNTA0NmM0ZGU4N2VjNmFkZWIzYjgxOGVhZWNkMDk3YmJhZjBjM2UuLmZiMDFh
N2ExYzVlNDgxNmE2ZTA0NTAzYTYyNzUxMzAyNmQyNGE4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhl
bWUuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBUaGVtZV9oCiAKICNpbmNsdWRlICJDb2xv
ci5oIgorI2luY2x1ZGUgIkNvbnRyb2xTdGF0ZXMuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxlbmd0aEJveC5oIgpAQCAtNjUsNyArNjYsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvbnRyb2xEcmF3c0ZvY3VzT3V0bGluZShDb250
cm9sUGFydCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gTWV0aG9kcyBmb3Igb2J0
YWluaW5nIHBsYXRmb3JtLXNwZWNpZmljIGNvbG9ycy4KLSAgICB2aXJ0dWFsIENvbG9yIHNlbGVj
dGlvbkNvbG9yKENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGUsIFNlbGVjdGlvblBhcnQpIGNvbnN0
IHsgcmV0dXJuIENvbG9yKCk7IH0KKyAgICB2aXJ0dWFsIENvbG9yIHNlbGVjdGlvbkNvbG9yKENv
bnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzKiwgU2VsZWN0aW9uUGFydCkgY29uc3QgeyBy
ZXR1cm4gQ29sb3IoKTsgfQogICAgIHZpcnR1YWwgQ29sb3IgdGV4dFNlYXJjaEhpZ2hsaWdodENv
bG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQogICAgIAogICAgIC8vIENTUyBzeXN0ZW0g
Y29sb3JzIGFuZCBmb250cwpAQCAtOTcsMTMgKzk4LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgY29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFjZShDb250cm9sUGFydCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIE1ldGhvZCBmb3IgcGFpbnRpbmcgYSBjb250cm9sLiBU
aGUgcmVjdCBpcyBpbiB6b29tZWQgY29vcmRpbmF0ZXMuCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8sIFNjcm9sbFZpZXcqKSBj
b25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0
ZXMqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxv
YXQgLyp6b29tRmFjdG9yKi8sIFNjcm9sbFZpZXcqKSB7IH0KIAogICAgIC8vIFNvbWUgY29udHJv
bHMgbWF5IHNwaWxsIG91dCBvZiB0aGVpciBjb250YWluZXJzIChlLmcuLCB0aGUgY2hlY2sgb24g
YW4gT1MgWCBjaGVja2JveCkuICBXaGVuIHRoZXNlIGNvbnRyb2xzIHJlcGFpbnQsCiAgICAgLy8g
dGhlIHRoZW1lIG5lZWRzIHRvIGNvbW11bmljYXRlIHRoaXMgaW5mbGF0ZWQgcmVjdCB0byB0aGUg
ZW5naW5lIHNvIHRoYXQgaXQgY2FuIGludmFsaWRhdGUgdGhlIHdob2xlIGNvbnRyb2wuCiAgICAg
Ly8gVGhlIHJlY3QgcGFzc2VkIGluIGlzIGluIHpvb21lZCBjb29yZGluYXRlcywgc28gdGhlIGlu
ZmxhdGlvbiBzaG91bGQgdGFrZSB0aGF0IGludG8gYWNjb3VudCBhbmQgbWFrZSBzdXJlIHRoZSBp
bmZsYXRpb24KICAgICAvLyBhbW91bnQgaXMgYWxzbyBzY2FsZWQgYnkgdGhlIHpvb21GYWN0b3Iu
Ci0gICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBD
b250cm9sU3RhdGVzLCBJbnRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFjdG9y
Ki8pIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChD
b250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyosIEludFJlY3QmIC8qem9vbWVkUmVjdCov
LCBmbG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyB9CiAgICAgCiAgICAgLy8gVGhpcyBtZXRo
b2QgaXMgY2FsbGVkIG9uY2UsIGZyb20gUmVuZGVyVGhlbWU6OmFkanVzdERlZmF1bHRTdHlsZVNo
ZWV0KCksIHRvIGxldCBlYWNoIHBsYXRmb3JtIGFkanVzdAogICAgIC8vIHRoZSBkZWZhdWx0IENT
UyBydWxlcyBpbiBodG1sLmNzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RoZW1lVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAppbmRl
eCBkOGFiMThmZmFjOWI1MDRmZjdmOWFmOGEwMDQ5MzlhMDAxMTU2Y2IxLi45NzNlNzc0NjBiZWM2
NTJjYWNhMGRlZDNmNTZmOGJmOTRhNTY3YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaGVtZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWVU
eXBlcy5oCkBAIC0yOCwyMiArMjgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0g
Q29udHJvbFN0YXRlIHsKLSAgICBIb3ZlclN0YXRlID0gMSwKLSAgICBQcmVzc2VkU3RhdGUgPSAx
IDw8IDEsCi0gICAgRm9jdXNTdGF0ZSA9IDEgPDwgMiwKLSAgICBFbmFibGVkU3RhdGUgPSAxIDw8
IDMsCi0gICAgQ2hlY2tlZFN0YXRlID0gMSA8PCA0LAotICAgIFJlYWRPbmx5U3RhdGUgPSAxIDw8
IDUsCi0gICAgRGVmYXVsdFN0YXRlID0gMSA8PCA2LAotICAgIFdpbmRvd0luYWN0aXZlU3RhdGUg
PSAxIDw8IDcsCi0gICAgSW5kZXRlcm1pbmF0ZVN0YXRlID0gMSA8PCA4LAotICAgIFNwaW5VcFN0
YXRlID0gMSA8PCA5LCAvLyBTdWItc3RhdGUgZm9yIEhvdmVyU3RhdGUgYW5kIFByZXNzZWRTdGF0
ZS4KLSAgICBBbGxTdGF0ZXMgPSAweGZmZmZmZmZmCi19OwotCi10eXBlZGVmIHVuc2lnbmVkIENv
bnRyb2xTdGF0ZXM7Ci0KIC8vIE11c3QgZm9sbG93IENTU1ZhbHVlS2V5d29yZHMuaW4gb3JkZXIK
IGVudW0gQ29udHJvbFBhcnQgewogICAgIE5vQ29udHJvbFBhcnQsIENoZWNrYm94UGFydCwgUmFk
aW9QYXJ0LCBQdXNoQnV0dG9uUGFydCwgU3F1YXJlQnV0dG9uUGFydCwgQnV0dG9uUGFydCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCmluZGV4IGY4
NjQ3ODU5MTc1MjM3NGNiZGRjMDU0ZjM2OGMwMTQ4MjYzN2QzZWIuLmY5ZDIxYzk5NmY4ZjNmMzA1
NDYwNjM2NjUxMWEwOTk4ZjkwNjRiNDkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1JlbmRlclRoZW1lRWZsLmNwcApAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgUmVuZGVyVGhl
bWVFZmw6OmNsZWFyVGhlbWVQYXJ0Q2FjaGUoKQogCiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6
OmFwcGx5RWRqZVN0YXRlRnJvbUZvcm0oRXZhc19PYmplY3QqIG9iamVjdCwgQ29udHJvbFN0YXRl
cyBzdGF0ZXMsIGJvb2wgaGF2ZUJhY2tncm91bmQpCit2b2lkIFJlbmRlclRoZW1lRWZsOjphcHBs
eUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0KiBvYmplY3QsIGNvbnN0IENvbnRyb2xTdGF0
ZXMqIHN0YXRlcywgYm9vbCBoYXZlQmFja2dyb3VuZCkKIHsKICAgICBjb25zdCBjaGFyICpzaWdu
YWxzW10gPSB7IC8vIGtlZXAgaW4gc3luYyB3aXRoIFdlYkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBl
cy5oCiAgICAgICAgICJob3ZlcmVkIiwKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFJlbmRlclRo
ZW1lRWZsOjphcHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0KiBvYmplY3QsIENvbnRy
b2xTdGF0ZXMgcwogICAgIGVkamVfb2JqZWN0X3NpZ25hbF9lbWl0KG9iamVjdCwgInJlc2V0Iiwg
IiIpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHNpZ25h
bHMpOyArK2kpIHsKLSAgICAgICAgaWYgKHN0YXRlcyAmICgxIDw8IGkpKQorICAgICAgICBpZiAo
c3RhdGVzLT5zdGF0ZXMoKSAmICgxIDw8IGkpKQogICAgICAgICAgICAgZWRqZV9vYmplY3Rfc2ln
bmFsX2VtaXQob2JqZWN0LCBzaWduYWxzW2ldLCAiIik7CiAgICAgfQogCkBAIC0zODMsNyArMzgz
LDggQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBhcnQoUmVuZGVyT2JqZWN0KiBv
YmplY3QsIEZvcm1UeXBlIHR5cGUsIGNvbnN0IFAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgYm9vbCBoYXZlQmFja2dyb3VuZENvbG9yID0gaXNDb250cm9sU3R5bGVkKCZvYmplY3QtPnN0
eWxlKCksIG9iamVjdC0+c3R5bGUoKS5ib3JkZXIoKSwgKm9iamVjdC0+c3R5bGUoKS5iYWNrZ3Jv
dW5kTGF5ZXJzKCksIENvbG9yOjp3aGl0ZSk7Ci0gICAgYXBwbHlFZGplU3RhdGVGcm9tRm9ybShl
bnRyeS0+ZWRqZSgpLCBjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIob2JqZWN0KSwgaGF2ZUJhY2tn
cm91bmRDb2xvcik7CisgICAgQ29udHJvbFN0YXRlcyBzdGF0ZXMoZXh0cmFjdENvbnRyb2xTdGF0
ZXNGb3JSZW5kZXJlcihvYmplY3QpKTsKKyAgICBhcHBseUVkamVTdGF0ZUZyb21Gb3JtKGVudHJ5
LT5lZGplKCksICZzdGF0ZXMsIGhhdmVCYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgYXBwbHlFZGpl
UlRMU3RhdGUoZW50cnktPmVkamUoKSwgb2JqZWN0LCB0eXBlLCByZWN0KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaAppbmRleCBlNmRhMDRlZDIxNzM5
ZDU1MGFiZmUxZmYyYzZmMWJlZTgxOTI0ZDAyLi4wMGYwYmI3YzU2Y2FjM2VkNDBjZjMyOWYxYWEw
ZTI4ZDMzNzgyZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVu
ZGVyVGhlbWVFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhl
bWVFZmwuaApAQCAtMjI5LDcgKzIyOSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGFwcGx5UGFy
dERlc2NyaXB0aW9uc0Zyb20oY29uc3QgU3RyaW5nJiB0aGVtZVBhdGgpOwogCi0gICAgdm9pZCBh
cHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0KiwgQ29udHJvbFN0YXRlcywgYm9vbCk7
CisgICAgdm9pZCBhcHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0KiwgY29uc3QgQ29u
dHJvbFN0YXRlcyosIGJvb2wpOwogICAgIHZvaWQgYXBwbHlFZGplUlRMU3RhdGUoRXZhc19PYmpl
Y3QqLCBSZW5kZXJPYmplY3QqLCBGb3JtVHlwZSwgY29uc3QgSW50UmVjdCYpOwogICAgIGJvb2wg
cGFpbnRUaGVtZVBhcnQoUmVuZGVyT2JqZWN0KiwgRm9ybVR5cGUsIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaApp
bmRleCA4YjdlOTgyMmRmYjU0MWQ5MzA0MjNhNGY1N2M3MWZhZWMwOTU4ZTMwLi5kNzM5NTIzNjBi
NDA0NmI2ZjcxZTM3NGJhYjI0ZWM3M2RlYWZiNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVGhlbWVNYWMuaApAQCAtNTEsMTEgKzUxLDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Ym9vbCBjb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKENvbnRyb2xQYXJ0IHBhcnQpIGNvbnN0
IHsgcmV0dXJuIHBhcnQgPT0gUHVzaEJ1dHRvblBhcnQ7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBw
YWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqKSBjb25zdDsKLSAgICB2aXJ0
dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0
ZXMsIEludFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMqLCBHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCwgY29uc3Qg
Q29udHJvbFN0YXRlcyosIEludFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdDsKIAogICAg
IC8vIEZJWE1FOiBPbmNlIFJlbmRlclRoZW1lTWFjIGlzIGNvbnZlcnRlZCBvdmVyIHRvIHVzZSBU
aGVtZSB0aGVuIHRoaXMgY2FuIGJlIGludGVybmFsIHRvIFRoZW1lTWFjLgotICAgIHN0YXRpYyBO
U1ZpZXcqIGVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqLCBDb250cm9sU3RhdGVzKTsKKyAgICBzdGF0
aWMgTlNWaWV3KiBlbnN1cmVkVmlldyhTY3JvbGxWaWV3KiwgY29uc3QgQ29udHJvbFN0YXRlcyop
OwogICAgIHN0YXRpYyB2b2lkIHNldEZvY3VzUmluZ0NsaXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYp
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDg0NTI1
Y2NkZjdiYzQzNWI4MDg2MTIxN2EwYTFlMGJmMGFjYzYzY2EuLjc1YzA2ODZiYzA3NWU1ZGNjNDcx
YzFmNWNkODhhNDJmMDgyZTFmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW0KQEAgLTM1LDYgKzM1LDE1IEBACiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEwMAorQGludGVyZmFjZSBOU0J1dHRvbkNlbGwoRGV0YWlscykKKy0gKHZv
aWQpX3NldFN0YXRlOihOU0ludGVnZXIpdmFsdWUgYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQ7Cist
ICh2b2lkKV9zZXRIaWdobGlnaHRlZDooQk9PTClmbGFnIGFuaW1hdGVkOihCT09MKWFuaW1hdGVk
OworLSAodm9pZClfcmVuZGVyQ3VycmVudEFuaW1hdGlvbkZyYW1lSW5Db250ZXh0OihDR0NvbnRl
eHRSZWYpY3R4dCBhdExvY2F0aW9uOihOU1BvaW50KXdoZXJlOworLSAoQk9PTClfc3RhdGVBbmlt
YXRpb25SdW5uaW5nOworQGVuZAorI2VuZGlmCisKIHN0YXRpYyBOU1JlY3QgZm9jdXNSaW5nQ2xp
cFJlY3Q7CiBzdGF0aWMgQk9PTCB0aGVtZVdpbmRvd0hhc0tleUFwcGVhcmFuY2U7CiAKQEAgLTk3
LDYgKzEwNiwxMiBAQCBzdGF0aWMgQk9PTCB0aGVtZVdpbmRvd0hhc0tleUFwcGVhcmFuY2U7CiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKKy0gKHZvaWQpYWRkU3VidmlldzooTlNWaWV3KilzdWJ2aWV3
Cit7CisgICAgLy8gQnkgZG9pbmcgbm90aGluZyBpbiB0aGlzIG1ldGhvZCB3ZSBmb3JiaWQgY29u
dHJvbHMgZnJvbSBhZGRpbmcgc3Vidmlld3MuCisgICAgLy8gVGhpcyB0ZWxscyBBcHBLaXQgdG8g
bm90IHVzZSBMYXllci1iYWNrZWQgYW5pbWF0aW9uIGZvciBjb250cm9sIHJlbmRlcmluZy4KKyAg
ICBVTlVTRURfUEFSQU0oc3Vidmlldyk7Cit9CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBOU0Zv
bnQgKFdlYkNvcmVUaGVtZSkKQEAgLTE3Niw0NSArMTkxLDU2IEBAIHN0YXRpYyB2b2lkIHNldENv
bnRyb2xTaXplKE5TQ2VsbCogY2VsbCwgY29uc3QgSW50U2l6ZSogc2l6ZXMsIGNvbnN0IEludFNp
emUmIG1pCiAgICAgICAgIFtjZWxsIHNldENvbnRyb2xTaXplOihOU0NvbnRyb2xTaXplKXNpemVd
OwogfQogCi1zdGF0aWMgdm9pZCB1cGRhdGVTdGF0ZXMoTlNDZWxsKiBjZWxsLCBDb250cm9sU3Rh
dGVzIHN0YXRlcykKK3N0YXRpYyB2b2lkIHVwZGF0ZVN0YXRlcyhOU0NlbGwqIGNlbGwsIGNvbnN0
IENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIGJvb2wgdXNlQW5pbWF0aW9uID0gZmFsc2Up
CiB7CisgICAgQ29udHJvbFN0YXRlczo6U3RhdGVzIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMtPnN0
YXRlcygpOworCiAgICAgLy8gSG92ZXIgc3RhdGUgaXMgbm90IHN1cHBvcnRlZCBieSBBcXVhLgog
ICAgIAogICAgIC8vIFByZXNzZWQgc3RhdGUKICAgICBib29sIG9sZFByZXNzZWQgPSBbY2VsbCBp
c0hpZ2hsaWdodGVkXTsKLSAgICBib29sIHByZXNzZWQgPSBzdGF0ZXMgJiBQcmVzc2VkU3RhdGU7
CisgICAgYm9vbCBwcmVzc2VkID0gc3RhdGVzICYgQ29udHJvbFN0YXRlczo6UHJlc3NlZFN0YXRl
OwogICAgIGlmIChwcmVzc2VkICE9IG9sZFByZXNzZWQpCiAgICAgICAgIFtjZWxsIHNldEhpZ2hs
aWdodGVkOnByZXNzZWRdOwogICAgIAogICAgIC8vIEVuYWJsZWQgc3RhdGUKICAgICBib29sIG9s
ZEVuYWJsZWQgPSBbY2VsbCBpc0VuYWJsZWRdOwotICAgIGJvb2wgZW5hYmxlZCA9IHN0YXRlcyAm
IEVuYWJsZWRTdGF0ZTsKKyAgICBib29sIGVuYWJsZWQgPSBzdGF0ZXMgJiBDb250cm9sU3RhdGVz
OjpFbmFibGVkU3RhdGU7CiAgICAgaWYgKGVuYWJsZWQgIT0gb2xkRW5hYmxlZCkKICAgICAgICAg
W2NlbGwgc2V0RW5hYmxlZDplbmFibGVkXTsKIAogICAgIC8vIENoZWNrZWQgYW5kIEluZGV0ZXJt
aW5hdGUKICAgICBib29sIG9sZEluZGV0ZXJtaW5hdGUgPSBbY2VsbCBzdGF0ZV0gPT0gTlNNaXhl
ZFN0YXRlOwotICAgIGJvb2wgaW5kZXRlcm1pbmF0ZSA9IChzdGF0ZXMgJiBJbmRldGVybWluYXRl
U3RhdGUpOwotICAgIGJvb2wgY2hlY2tlZCA9IHN0YXRlcyAmIENoZWNrZWRTdGF0ZTsKKyAgICBi
b29sIGluZGV0ZXJtaW5hdGUgPSAoc3RhdGVzICYgQ29udHJvbFN0YXRlczo6SW5kZXRlcm1pbmF0
ZVN0YXRlKTsKKyAgICBib29sIGNoZWNrZWQgPSBzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpDaGVj
a2VkU3RhdGU7CiAgICAgYm9vbCBvbGRDaGVja2VkID0gW2NlbGwgc3RhdGVdID09IE5TT25TdGF0
ZTsKLSAgICBpZiAob2xkSW5kZXRlcm1pbmF0ZSAhPSBpbmRldGVybWluYXRlIHx8IGNoZWNrZWQg
IT0gb2xkQ2hlY2tlZCkKLSAgICAgICAgW2NlbGwgc2V0U3RhdGU6aW5kZXRlcm1pbmF0ZSA/IE5T
TWl4ZWRTdGF0ZSA6IChjaGVja2VkID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZSldOwotICAgICAg
ICAKKyAgICBpZiAob2xkSW5kZXRlcm1pbmF0ZSAhPSBpbmRldGVybWluYXRlIHx8IGNoZWNrZWQg
IT0gb2xkQ2hlY2tlZCkgeworICAgICAgICBOU0NlbGxTdGF0ZVZhbHVlIG5ld1N0YXRlID0gaW5k
ZXRlcm1pbmF0ZSA/IE5TTWl4ZWRTdGF0ZSA6IChjaGVja2VkID8gTlNPblN0YXRlIDogTlNPZmZT
dGF0ZSk7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMAorICAg
ICAgICBbKE5TQnV0dG9uQ2VsbCopY2VsbCBfc2V0U3RhdGU6bmV3U3RhdGUgYW5pbWF0ZWQ6dXNl
QW5pbWF0aW9uXTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTSh1c2VBbmltYXRpb24pOwor
ICAgICAgICBbY2VsbCBzZXRTdGF0ZTpuZXdTdGF0ZV07CisjZW5kaWYKKyAgICB9CisKICAgICAv
LyBXaW5kb3cgaW5hY3RpdmUgc3RhdGUgZG9lcyBub3QgbmVlZCB0byBiZSBjaGVja2VkIGV4cGxp
Y2l0bHksIHNpbmNlIHdlIHBhaW50IHBhcmVudGVkIHRvIAogICAgIC8vIGEgdmlldyBpbiBhIHdp
bmRvdyB3aG9zZSBrZXkgc3RhdGUgY2FuIGJlIGRldGVjdGVkLgogfQogCi1zdGF0aWMgVGhlbWVE
cmF3U3RhdGUgY29udmVydENvbnRyb2xTdGF0ZXNUb1RoZW1lRHJhd1N0YXRlKFRoZW1lQnV0dG9u
S2luZCBraW5kLCBDb250cm9sU3RhdGVzIHN0YXRlcykKK3N0YXRpYyBUaGVtZURyYXdTdGF0ZSBj
b252ZXJ0Q29udHJvbFN0YXRlc1RvVGhlbWVEcmF3U3RhdGUoVGhlbWVCdXR0b25LaW5kIGtpbmQs
IGNvbnN0IENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMpCiB7Ci0gICAgaWYgKHN0YXRlcyAm
IFJlYWRPbmx5U3RhdGUpCisgICAgQ29udHJvbFN0YXRlczo6U3RhdGVzIHN0YXRlcyA9IGNvbnRy
b2xTdGF0ZXMtPnN0YXRlcygpOworCisgICAgaWYgKHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OlJl
YWRPbmx5U3RhdGUpCiAgICAgICAgIHJldHVybiBrVGhlbWVTdGF0ZVVuYXZhaWxhYmxlSW5hY3Rp
dmU7Ci0gICAgaWYgKCEoc3RhdGVzICYgRW5hYmxlZFN0YXRlKSkKKyAgICBpZiAoIShzdGF0ZXMg
JiBDb250cm9sU3RhdGVzOjpFbmFibGVkU3RhdGUpKQogICAgICAgICByZXR1cm4ga1RoZW1lU3Rh
dGVVbmF2YWlsYWJsZUluYWN0aXZlOwogCiAgICAgLy8gRG8gbm90IHByb2Nlc3MgUHJlc3NlZFN0
YXRlIGlmICFFbmFibGVkU3RhdGUgb3IgUmVhZE9ubHlTdGF0ZS4KLSAgICBpZiAoc3RhdGVzICYg
UHJlc3NlZFN0YXRlKSB7CisgICAgaWYgKHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OlByZXNzZWRT
dGF0ZSkgewogICAgICAgICBpZiAoa2luZCA9PSBrVGhlbWVJbmNEZWNCdXR0b24gfHwga2luZCA9
PSBrVGhlbWVJbmNEZWNCdXR0b25TbWFsbCB8fCBraW5kID09IGtUaGVtZUluY0RlY0J1dHRvbk1p
bmkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGVzICYgU3BpblVwU3RhdGUgPyBrVGhlbWVTdGF0
ZVByZXNzZWRVcCA6IGtUaGVtZVN0YXRlUHJlc3NlZERvd247CisgICAgICAgICAgICByZXR1cm4g
c3RhdGVzICYgQ29udHJvbFN0YXRlczo6U3BpblVwU3RhdGUgPyBrVGhlbWVTdGF0ZVByZXNzZWRV
cCA6IGtUaGVtZVN0YXRlUHJlc3NlZERvd247CiAgICAgICAgIHJldHVybiBrVGhlbWVTdGF0ZVBy
ZXNzZWQ7CiAgICAgfQogICAgIHJldHVybiBrVGhlbWVTdGF0ZUFjdGl2ZTsKQEAgLTI2NiwzNCAr
MjkyLDU0IEBAIHN0YXRpYyBMZW5ndGhTaXplIGNoZWNrYm94U2l6ZShjb25zdCBGb250JiBmb250
LCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmCiAgICAgLy8gVXNlIHRoZSBmb250IHNp
emUgdG8gZGV0ZXJtaW5lIHRoZSBpbnRyaW5zaWMgd2lkdGggb2YgdGhlIGNvbnRyb2wuCiAgICAg
cmV0dXJuIHNpemVGcm9tRm9udChmb250LCB6b29tZWRTaXplLCB6b29tRmFjdG9yLCBjaGVja2Jv
eFNpemVzKCkpOwogfQotCi1zdGF0aWMgTlNCdXR0b25DZWxsICpjaGVja2JveChDb250cm9sU3Rh
dGVzIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikK
LXsKLSAgICBzdGF0aWMgTlNCdXR0b25DZWxsICpjaGVja2JveENlbGw7Ci0gICAgaWYgKCFjaGVj
a2JveENlbGwpIHsKLSAgICAgICAgY2hlY2tib3hDZWxsID0gW1tOU0J1dHRvbkNlbGwgYWxsb2Nd
IGluaXRdOwotICAgICAgICBbY2hlY2tib3hDZWxsIHNldEJ1dHRvblR5cGU6TlNTd2l0Y2hCdXR0
b25dOwotICAgICAgICBbY2hlY2tib3hDZWxsIHNldFRpdGxlOm5pbF07Ci0gICAgICAgIFtjaGVj
a2JveENlbGwgc2V0QWxsb3dzTWl4ZWRTdGF0ZTpZRVNdOwotICAgICAgICBbY2hlY2tib3hDZWxs
IHNldEZvY3VzUmluZ1R5cGU6TlNGb2N1c1JpbmdUeXBlRXh0ZXJpb3JdOwotICAgIH0KICAgICAK
K3N0YXRpYyB2b2lkIGNvbmZpZ3VyZUNoZWNrYm94KE5TQ2VsbCogY2VsbCwgY29uc3QgQ29udHJv
bFN0YXRlcyogc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFj
dG9yLCBib29sIGlzU3RhdGVDaGFuZ2UpCit7CiAgICAgLy8gU2V0IHRoZSBjb250cm9sIHNpemUg
YmFzZWQgb2ZmIHRoZSByZWN0YW5nbGUgd2UncmUgcGFpbnRpbmcgaW50by4KLSAgICBzZXRDb250
cm9sU2l6ZShjaGVja2JveENlbGwsIGNoZWNrYm94U2l6ZXMoKSwgem9vbWVkUmVjdC5zaXplKCks
IHpvb21GYWN0b3IpOworICAgIHNldENvbnRyb2xTaXplKGNlbGwsIGNoZWNrYm94U2l6ZXMoKSwg
em9vbWVkUmVjdC5zaXplKCksIHpvb21GYWN0b3IpOwogCiAgICAgLy8gVXBkYXRlIHRoZSB2YXJp
b3VzIHN0YXRlcyB3ZSByZXNwb25kIHRvLgotICAgIHVwZGF0ZVN0YXRlcyhjaGVja2JveENlbGws
IHN0YXRlcyk7CisgICAgdXBkYXRlU3RhdGVzKGNlbGwsIHN0YXRlcywgaXNTdGF0ZUNoYW5nZSk7
Cit9CiAgICAgCitzdGF0aWMgTlNCdXR0b25DZWxsICpjcmVhdGVDaGVja2JveENlbGwoKQorewor
ICAgIE5TQnV0dG9uQ2VsbCAqY2hlY2tib3hDZWxsID0gW1tOU0J1dHRvbkNlbGwgYWxsb2NdIGlu
aXRdOworICAgIFtjaGVja2JveENlbGwgc2V0QnV0dG9uVHlwZTpOU1N3aXRjaEJ1dHRvbl07Cisg
ICAgW2NoZWNrYm94Q2VsbCBzZXRUaXRsZTpuaWxdOworICAgIFtjaGVja2JveENlbGwgc2V0QWxs
b3dzTWl4ZWRTdGF0ZTpZRVNdOworICAgIFtjaGVja2JveENlbGwgc2V0Rm9jdXNSaW5nVHlwZTpO
U0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07CiAgICAgcmV0dXJuIGNoZWNrYm94Q2VsbDsKIH0KIAor
c3RhdGljIE5TQnV0dG9uQ2VsbCAqc2hhcmVkQ2hlY2tib3hDZWxsKGNvbnN0IENvbnRyb2xTdGF0
ZXMqIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikK
K3sKKyAgICBzdGF0aWMgTlNCdXR0b25DZWxsICpjaGVja2JveENlbGw7CisgICAgaWYgKCFjaGVj
a2JveENlbGwpCisgICAgICAgIGNoZWNrYm94Q2VsbCA9IGNyZWF0ZUNoZWNrYm94Q2VsbCgpOwor
CisgICAgY29uZmlndXJlQ2hlY2tib3goY2hlY2tib3hDZWxsLCBzdGF0ZXMsIHpvb21lZFJlY3Qs
IHpvb21GYWN0b3IsIGZhbHNlKTsKKyAgICByZXR1cm4gY2hlY2tib3hDZWxsOworfQorICAgIAog
Ly8gRklYTUU6IFNoYXJlIG1vcmUgY29kZSB3aXRoIHJhZGlvIGJ1dHRvbnMuCi1zdGF0aWMgdm9p
ZCBwYWludENoZWNrYm94KENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9s
bFZpZXcqIHNjcm9sbFZpZXcpCitzdGF0aWMgdm9pZCBwYWludENoZWNrYm94KENvbnRyb2xTdGF0
ZXMqIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldykK
IHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAotICAgIC8vIERldGVybWluZSB0
aGUgd2lkdGggYW5kIGhlaWdodCBuZWVkZWQgZm9yIHRoZSBjb250cm9sIGFuZCBwcmVwYXJlIHRo
ZSBjZWxsIGZvciBwYWludGluZy4KLSAgICBOU0J1dHRvbkNlbGwgKmNoZWNrYm94Q2VsbCA9IGNo
ZWNrYm94KHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CisgICAgTlNCdXR0b25DZWxs
ICpjaGVja2JveENlbGwgPSBzdGF0aWNfY2FzdDxOU0J1dHRvbkNlbGwqPihjb250cm9sU3RhdGVz
LT5wbGF0Zm9ybUNvbnRyb2woKSk7CisKKyAgICBpZiAoY29udHJvbFN0YXRlcy0+aXNEaXJ0eSgp
KSB7CisgICAgICAgIGlmICghY2hlY2tib3hDZWxsKQorICAgICAgICAgICAgY2hlY2tib3hDZWxs
ID0gY3JlYXRlQ2hlY2tib3hDZWxsKCk7CisgICAgICAgIGNvbmZpZ3VyZUNoZWNrYm94KGNoZWNr
Ym94Q2VsbCwgY29udHJvbFN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3RvciwgdHJ1ZSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFjaGVja2JveENlbGwpCisgICAgICAgICAgICBjaGVj
a2JveENlbGwgPSBzaGFyZWRDaGVja2JveENlbGwoY29udHJvbFN0YXRlcywgem9vbWVkUmVjdCwg
em9vbUZhY3Rvcik7CisgICAgICAgIGNvbmZpZ3VyZUNoZWNrYm94KGNoZWNrYm94Q2VsbCwgY29u
dHJvbFN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3RvciwgZmFsc2UpOworICAgIH0KKyAgICBj
b250cm9sU3RhdGVzLT5zZXREaXJ0eShmYWxzZSk7CisKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogCiAgICAgTlNDb250cm9sU2l6ZSBjb250cm9s
U2l6ZSA9IFtjaGVja2JveENlbGwgY29udHJvbFNpemVdOwpAQCAtMzExLDEyICszNTcsMzQgQEAg
c3RhdGljIHZvaWQgcGFpbnRDaGVja2JveChDb250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIH0KIAogICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7Ci0gICAgTlNWaWV3ICp2aWV3ID0gVGhlbWVN
YWM6OmVuc3VyZWRWaWV3KHNjcm9sbFZpZXcsIHN0YXRlcyk7Ci0gICAgW2NoZWNrYm94Q2VsbCBk
cmF3V2l0aEZyYW1lOk5TUmVjdChpbmZsYXRlZFJlY3QpIGluVmlldzp2aWV3XTsKLSAgICBpZiAo
c3RhdGVzICYgRm9jdXNTdGF0ZSkKKyAgICBOU1ZpZXcgKnZpZXcgPSBUaGVtZU1hYzo6ZW5zdXJl
ZFZpZXcoc2Nyb2xsVmlldywgY29udHJvbFN0YXRlcyk7CisgICAgYm9vbCBkcmF3U3RhdGljYWxs
eSA9IHRydWU7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMAor
ICAgIGRyYXdTdGF0aWNhbGx5ID0gIVtjaGVja2JveENlbGwgX3N0YXRlQW5pbWF0aW9uUnVubmlu
Z107CisjZW5kaWYKKyAgICBpZiAoZHJhd1N0YXRpY2FsbHkpCisgICAgICAgIFtjaGVja2JveENl
bGwgZHJhd1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6dmlld107CisgICAg
ZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IHF1aXRlIGNvcnJlY3QgYXQgdGhl
IG1vbWVudCBkdWUgdG8gdGhlIHdheSB0aGUgdGljayBtYXJrIGV4dGVuZHMgb3V0IG9mIHRoZSBj
b250cm9sLgorICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5m
bGF0ZWRSZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkp
OworICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwgLWluZmxhdGVkUmVjdC5oZWlnaHQoKSk7
CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMAorICAgICAgICBb
Y2hlY2tib3hDZWxsIF9yZW5kZXJDdXJyZW50QW5pbWF0aW9uRnJhbWVJbkNvbnRleHQ6Y29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCkgYXRMb2NhdGlvbjpOU01ha2VQb2ludCgwLCAwKV07CisjZW5k
aWYKKyAgICB9CisgICAgaWYgKGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygpICYgQ29udHJvbFN0YXRl
czo6Rm9jdXNTdGF0ZSkKICAgICAgICAgW2NoZWNrYm94Q2VsbCBfd2ViX2RyYXdGb2N1c1JpbmdX
aXRoRnJhbWU6TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5WaWV3OnZpZXddOwogICAgIFtjaGVja2Jv
eENlbGwgc2V0Q29udHJvbFZpZXc6bmlsXTsKICAgICAKKyAgICBib29sIG5lZWRzUmVwYWludCA9
IGZhbHNlOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAKKyAg
ICBuZWVkc1JlcGFpbnQgPSBbY2hlY2tib3hDZWxsIF9zdGF0ZUFuaW1hdGlvblJ1bm5pbmddOwor
I2VuZGlmCisgICAgY29udHJvbFN0YXRlcy0+c2V0TmVlZHNSZXBhaW50KG5lZWRzUmVwYWludCk7
CisgICAgaWYgKG5lZWRzUmVwYWludCkKKyAgICAgICAgY29udHJvbFN0YXRlcy0+c2V0UGxhdGZv
cm1Db250cm9sKGNoZWNrYm94Q2VsbCk7CisKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CiB9CiAKQEAgLTM0OSw3ICs0MTcsNyBAQCBzdGF0aWMgTGVuZ3RoU2l6ZSByYWRpb1NpemUoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxvYQogICAgIHJl
dHVybiBzaXplRnJvbUZvbnQoZm9udCwgem9vbWVkU2l6ZSwgem9vbUZhY3RvciwgcmFkaW9TaXpl
cygpKTsKIH0KIAotc3RhdGljIE5TQnV0dG9uQ2VsbCAqcmFkaW8oQ29udHJvbFN0YXRlcyBzdGF0
ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IpCitzdGF0aWMg
TlNCdXR0b25DZWxsICpyYWRpbyhjb25zdCBDb250cm9sU3RhdGVzKiBzdGF0ZXMsIGNvbnN0IElu
dFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IpCiB7CiAgICAgc3RhdGljIE5TQnV0
dG9uQ2VsbCAqcmFkaW9DZWxsOwogICAgIGlmICghcmFkaW9DZWxsKSB7CkBAIC0zNjgsMTAgKzQz
NiwxMCBAQCBzdGF0aWMgTlNCdXR0b25DZWxsICpyYWRpbyhDb250cm9sU3RhdGVzIHN0YXRlcywg
Y29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYQogICAgIHJldHVybiByYWRpb0NlbGw7CiB9
CiAKLXN0YXRpYyB2b2lkIHBhaW50UmFkaW8oQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZh
Y3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldykKK3N0YXRpYyB2b2lkIHBhaW50UmFkaW8oQ29u
dHJvbFN0YXRlcyogY29udHJvbFN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3Jv
bGxWaWV3KQogewogICAgIC8vIERldGVybWluZSB0aGUgd2lkdGggYW5kIGhlaWdodCBuZWVkZWQg
Zm9yIHRoZSBjb250cm9sIGFuZCBwcmVwYXJlIHRoZSBjZWxsIGZvciBwYWludGluZy4KLSAgICBO
U0J1dHRvbkNlbGwgKnJhZGlvQ2VsbCA9IHJhZGlvKHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZh
Y3Rvcik7CisgICAgTlNCdXR0b25DZWxsICpyYWRpb0NlbGwgPSByYWRpbyhjb250cm9sU3RhdGVz
LCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogCiAgICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9
IFtyYWRpb0NlbGwgY29udHJvbFNpemVdOwpAQCAtMzkwLDkgKzQ1OCw5IEBAIHN0YXRpYyB2b2lk
IHBhaW50UmFkaW8oQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50CiAKICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250
ZXh0KGNvbnRleHQpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIE5TVmll
dyAqdmlldyA9IFRoZW1lTWFjOjplbnN1cmVkVmlldyhzY3JvbGxWaWV3LCBzdGF0ZXMpOworICAg
IE5TVmlldyAqdmlldyA9IFRoZW1lTWFjOjplbnN1cmVkVmlldyhzY3JvbGxWaWV3LCBjb250cm9s
U3RhdGVzKTsKICAgICBbcmFkaW9DZWxsIGRyYXdXaXRoRnJhbWU6TlNSZWN0KGluZmxhdGVkUmVj
dCkgaW5WaWV3OnZpZXddOwotICAgIGlmIChzdGF0ZXMgJiBGb2N1c1N0YXRlKQorICAgIGlmIChj
b250cm9sU3RhdGVzLT5zdGF0ZXMoKSAmIENvbnRyb2xTdGF0ZXM6OkZvY3VzU3RhdGUpCiAgICAg
ICAgIFtyYWRpb0NlbGwgX3dlYl9kcmF3Rm9jdXNSaW5nV2l0aEZyYW1lOk5TUmVjdChpbmZsYXRl
ZFJlY3QpIGluVmlldzp2aWV3XTsKICAgICBbcmFkaW9DZWxsIHNldENvbnRyb2xWaWV3Om5pbF07
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpAQCAtNDMwLDcgKzQ5OCw3IEBAIHN0YXRp
YyBOU0J1dHRvbkNlbGwgKmxlYWtCdXR0b25DZWxsKEJ1dHRvbkNlbGxUeXBlIHR5cGUpCiAgICAg
cmV0dXJuIGNlbGw7CiB9CiAKLXN0YXRpYyB2b2lkIHNldFVwQnV0dG9uQ2VsbChOU0J1dHRvbkNl
bGwgKmNlbGwsIENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBjb25zdCBJ
bnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yKQorc3RhdGljIHZvaWQgc2V0VXBC
dXR0b25DZWxsKE5TQnV0dG9uQ2VsbCAqY2VsbCwgQ29udHJvbFBhcnQgcGFydCwgY29uc3QgQ29u
dHJvbFN0YXRlcyogc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29t
RmFjdG9yKQogewogICAgIC8vIFNldCB0aGUgY29udHJvbCBzaXplIGJhc2VkIG9mZiB0aGUgcmVj
dGFuZ2xlIHdlJ3JlIHBhaW50aW5nIGludG8uCiAgICAgY29uc3QgSW50U2l6ZSogc2l6ZXMgPSBi
dXR0b25TaXplcygpOwpAQCAtNDQ3LDI2ICs1MTUsMjggQEAgc3RhdGljIHZvaWQgc2V0VXBCdXR0
b25DZWxsKE5TQnV0dG9uQ2VsbCAqY2VsbCwgQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRl
cwogICAgIHVwZGF0ZVN0YXRlcyhjZWxsLCBzdGF0ZXMpOwogfQogCi1zdGF0aWMgTlNCdXR0b25D
ZWxsICpidXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIGNvbnN0
IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IpCitzdGF0aWMgTlNCdXR0b25D
ZWxsICpidXR0b24oQ29udHJvbFBhcnQgcGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyogY29udHJv
bFN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikKIHsK
KyAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMgc3RhdGVzID0gY29udHJvbFN0YXRlcy0+c3RhdGVz
KCk7CiAgICAgTlNCdXR0b25DZWxsICpjZWxsOwotICAgIGlmIChzdGF0ZXMgJiBEZWZhdWx0U3Rh
dGUpIHsKKyAgICBpZiAoc3RhdGVzICYgQ29udHJvbFN0YXRlczo6RGVmYXVsdFN0YXRlKSB7CiAg
ICAgICAgIHN0YXRpYyBOU0J1dHRvbkNlbGwgKmRlZmF1bHRDZWxsID0gbGVha0J1dHRvbkNlbGwo
RGVmYXVsdEJ1dHRvbkNlbGwpOwogICAgICAgICBjZWxsID0gZGVmYXVsdENlbGw7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqbm9ybWFsQ2VsbCA9IGxlYWtCdXR0
b25DZWxsKE5vcm1hbEJ1dHRvbkNlbGwpOwogICAgICAgICBjZWxsID0gbm9ybWFsQ2VsbDsKICAg
ICB9Ci0gICAgc2V0VXBCdXR0b25DZWxsKGNlbGwsIHBhcnQsIHN0YXRlcywgem9vbWVkUmVjdCwg
em9vbUZhY3Rvcik7ICAgIAorICAgIHNldFVwQnV0dG9uQ2VsbChjZWxsLCBwYXJ0LCBjb250cm9s
U3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsKICAgICByZXR1cm4gY2VsbDsKIH0KIAot
c3RhdGljIHZvaWQgcGFpbnRCdXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyBz
dGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVj
dCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldykKK3N0YXRpYyB2b2lk
IHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0
ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwg
ZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldykKIHsKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIGFu
ZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUgY29udHJvbCBhbmQgcHJlcGFyZSB0aGUgY2VsbCBmb3Ig
cGFpbnRpbmcuCi0gICAgTlNCdXR0b25DZWxsICpidXR0b25DZWxsID0gYnV0dG9uKHBhcnQsIHN0
YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CisgICAgQ29udHJvbFN0YXRlczo6U3RhdGVz
IHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygpOworICAgIE5TQnV0dG9uQ2VsbCAqYnV0
dG9uQ2VsbCA9IGJ1dHRvbihwYXJ0LCBjb250cm9sU3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFj
dG9yKTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQp
OwogCiAgICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFtidXR0b25DZWxsIGNvbnRyb2xT
aXplXTsKQEAgLTQ5NCwxOCArNTY0LDE4IEBAIHN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKENvbnRy
b2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqCiAgICAg
fSAKIAogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoY29udGV4
dCk7Ci0gICAgTlNWaWV3ICp2aWV3ID0gVGhlbWVNYWM6OmVuc3VyZWRWaWV3KHNjcm9sbFZpZXcs
IHN0YXRlcyk7CisgICAgTlNWaWV3ICp2aWV3ID0gVGhlbWVNYWM6OmVuc3VyZWRWaWV3KHNjcm9s
bFZpZXcsIGNvbnRyb2xTdGF0ZXMpOwogICAgIE5TV2luZG93ICp3aW5kb3cgPSBbdmlldyB3aW5k
b3ddOwogICAgIE5TQnV0dG9uQ2VsbCAqcHJldmlvdXNEZWZhdWx0QnV0dG9uQ2VsbCA9IFt3aW5k
b3cgZGVmYXVsdEJ1dHRvbkNlbGxdOwogCi0gICAgaWYgKHN0YXRlcyAmIERlZmF1bHRTdGF0ZSkg
eworICAgIGlmIChzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpEZWZhdWx0U3RhdGUpIHsKICAgICAg
ICAgW3dpbmRvdyBzZXREZWZhdWx0QnV0dG9uQ2VsbDpidXR0b25DZWxsXTsKICAgICAgICAgd2tB
ZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9uKGJ1dHRvbkNlbGwpOwogICAgIH0gZWxz
ZSBpZiAoW3ByZXZpb3VzRGVmYXVsdEJ1dHRvbkNlbGwgaXNFcXVhbDpidXR0b25DZWxsXSkKICAg
ICAgICAgW3dpbmRvdyBzZXREZWZhdWx0QnV0dG9uQ2VsbDpuaWxdOwogCiAgICAgW2J1dHRvbkNl
bGwgZHJhd1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6dmlld107Ci0gICAg
aWYgKHN0YXRlcyAmIEZvY3VzU3RhdGUpCisgICAgaWYgKHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6
OkZvY3VzU3RhdGUpCiAgICAgICAgIFtidXR0b25DZWxsIF93ZWJfZHJhd0ZvY3VzUmluZ1dpdGhG
cmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6dmlld107CiAgICAgW2J1dHRvbkNlbGwg
c2V0Q29udHJvbFZpZXc6bmlsXTsKIApAQCAtNTM1LDcgKzYwNSw3IEBAIHN0YXRpYyBOU0NvbnRy
b2xTaXplIHN0ZXBwZXJDb250cm9sU2l6ZUZvckZvbnQoY29uc3QgRm9udCYgZm9udCkKICAgICBy
ZXR1cm4gTlNNaW5pQ29udHJvbFNpemU7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50U3RlcHBlcihD
b250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KikKK3N0YXRpYyB2
b2lkIHBhaW50U3RlcHBlcihDb250cm9sU3RhdGVzKiBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Ny
b2xsVmlldyopCiB7CiAgICAgLy8gV2UgZG9uJ3QgdXNlIE5TU3RlcHBlckNlbGwgYmVjYXVzZSB0
aGVyZSBhcmUgbm8gd2F5cyB0byBkcmF3IGFuCiAgICAgLy8gTlNTdGVwcGVyQ2VsbCB3aXRoIHRo
ZSB1cCBidXR0b24gaGlnaGxpZ2h0ZWQuCkBAIC01NzcsNyArNjQ3LDcgQEAgc3RhdGljIHZvaWQg
cGFpbnRTdGVwcGVyKENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEkKIAogLy8gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHdlIGFsd2F5cyByZXR1cm4g
YSB2YWxpZCBOU1ZpZXcsIGV2ZW4gaWYgU2Nyb2xsVmlldyBkb2Vzbid0IGhhdmUgYW4gYXNzb2Np
YXRlZCBkb2N1bWVudCBOU1ZpZXcuCiAvLyBJZiB0aGUgU2Nyb2xsVmlldyBkb2Vzbid0IGhhdmUg
YW4gTlNWaWV3LCB3ZSB3aWxsIHJldHVybiBhIGZha2UgTlNWaWV3IHNldCB1cCBpbiB0aGUgd2F5
IEFwcEtpdCBleHBlY3RzLgotTlNWaWV3ICpUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoU2Nyb2xsVmll
dyogc2Nyb2xsVmlldywgQ29udHJvbFN0YXRlcyBzdGF0ZXMpCitOU1ZpZXcgKlRoZW1lTWFjOjpl
bnN1cmVkVmlldyhTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBjb25zdCBDb250cm9sU3RhdGVzKiBj
b250cm9sU3RhdGVzKQogewogICAgIGlmIChOU1ZpZXcgKmRvY3VtZW50VmlldyA9IHNjcm9sbFZp
ZXctPmRvY3VtZW50VmlldygpKQogICAgICAgICByZXR1cm4gZG9jdW1lbnRWaWV3OwpAQCAtNTg2
LDcgKzY1Niw3IEBAIE5TVmlldyAqVGhlbWVNYWM6OmVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqIHNj
cm9sbFZpZXcsIENvbnRyb2xTdGF0ZXMgc3RhdGVzKQogICAgIHN0YXRpYyBXZWJDb3JlVGhlbWVW
aWV3ICp0aGVtZVZpZXcgPSBbW1dlYkNvcmVUaGVtZVZpZXcgYWxsb2NdIGluaXRdOwogICAgIFt0
aGVtZVZpZXcgc2V0RnJhbWVTaXplOk5TU2l6ZUZyb21DR1NpemUoc2Nyb2xsVmlldy0+dG90YWxD
b250ZW50c1NpemUoKSldOwogCi0gICAgdGhlbWVXaW5kb3dIYXNLZXlBcHBlYXJhbmNlID0gIShz
dGF0ZXMgJiBXaW5kb3dJbmFjdGl2ZVN0YXRlKTsKKyAgICB0aGVtZVdpbmRvd0hhc0tleUFwcGVh
cmFuY2UgPSAhKGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygpICYgQ29udHJvbFN0YXRlczo6V2luZG93
SW5hY3RpdmVTdGF0ZSk7CiAKICAgICByZXR1cm4gdGhlbWVWaWV3OwogfQpAQCAtNjg5LDE0ICs3
NTksMTQgQEAgTGVuZ3RoQm94IFRoZW1lTWFjOjpjb250cm9sUGFkZGluZyhDb250cm9sUGFydCBw
YXJ0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBMZW4KICAgICB9CiB9CiAKLXZvaWQgVGhlbWVN
YWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0
ZXMgc3RhdGVzLCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdAor
dm9pZCBUaGVtZU1hYzo6aW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQgcGFydCwg
Y29uc3QgQ29udHJvbFN0YXRlcyogc3RhdGVzLCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6
b29tRmFjdG9yKSBjb25zdAogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAg
IHN3aXRjaCAocGFydCkgewogICAgICAgICBjYXNlIENoZWNrYm94UGFydDogewogICAgICAgICAg
ICAgLy8gV2UgaW5mbGF0ZSB0aGUgcmVjdCBhcyBuZWVkZWQgdG8gYWNjb3VudCBmb3IgcGFkZGlu
ZyBpbmNsdWRlZCBpbiB0aGUgY2VsbCB0byBhY2NvbW1vZGF0ZSB0aGUgY2hlY2tib3gKICAgICAg
ICAgICAgIC8vIHNoYWRvdyIgYW5kIHRoZSBjaGVjay4gIFdlIGRvbid0IGNvbnNpZGVyIHRoaXMg
cGFydCBvZiB0aGUgYm91bmRzIG9mIHRoZSBjb250cm9sIGluIFdlYktpdC4KLSAgICAgICAgICAg
IE5TQ2VsbCAqY2VsbCA9IGNoZWNrYm94KHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7
CisgICAgICAgICAgICBOU0NlbGwgKmNlbGwgPSBzaGFyZWRDaGVja2JveENlbGwoc3RhdGVzLCB6
b29tZWRSZWN0LCB6b29tRmFjdG9yKTsKICAgICAgICAgICAgIE5TQ29udHJvbFNpemUgY29udHJv
bFNpemUgPSBbY2VsbCBjb250cm9sU2l6ZV07CiAgICAgICAgICAgICBJbnRTaXplIHpvb21lZFNp
emUgPSBjaGVja2JveFNpemVzKClbY29udHJvbFNpemVdOwogICAgICAgICAgICAgem9vbWVkU2l6
ZS5zZXRIZWlnaHQoem9vbWVkU2l6ZS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpOwpAQCAtNzQ1LDcg
KzgxNSw3IEBAIHZvaWQgVGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQ
YXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBJCiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwogfQogCi12b2lkIFRoZW1lTWFjOjpwYWludChDb250cm9sUGFydCBwYXJ0LCBDb250
cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KSBj
b25zdAordm9pZCBUaGVtZU1hYzo6cGFpbnQoQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRl
cyogc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21l
ZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcpCiB7CiAgICAg
c3dpdGNoIChwYXJ0KSB7CiAgICAgICAgIGNhc2UgQ2hlY2tib3hQYXJ0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA1YjdiY2E1YjY0MzIzNmUwMzVhZTU0MjgxM2E4
ZWI5ODVlOGU5MWRkLi43MDExNjYwMDI2Y2M3Nzg2ZDQ5MmNlNTY1MWU1Y2U3ZDdiNzQyODRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTAyLDYgKzEwMiw3IEBA
IFJlbmRlckJveDo6UmVuZGVyQm94KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlCiAgICAgLCBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0
aCgtMSkKICAgICAsIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKC0xKQogICAgICwgbV9pbmxp
bmVCb3hXcmFwcGVyKDApCisgICAgLCBtX3JlcGFpbnRUaW1lcih0aGlzLCAmUmVuZGVyQm94Ojpy
ZXBhaW50VGltZXJGaXJlZCkKIHsKICAgICBzZXRJc0JveCgpOwogfQpAQCAtMTExLDEyICsxMTIs
MTYgQEAgUmVuZGVyQm94OjpSZW5kZXJCb3goRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmEKICAgICAsIG1fbWluUHJlZmVycmVkTG9naWNh
bFdpZHRoKC0xKQogICAgICwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoLTEpCiAgICAgLCBt
X2lubGluZUJveFdyYXBwZXIoMCkKKyAgICAsIG1fcmVwYWludFRpbWVyKHRoaXMsICZSZW5kZXJC
b3g6OnJlcGFpbnRUaW1lckZpcmVkKQogewogICAgIHNldElzQm94KCk7CiB9CiAKIFJlbmRlckJv
eDo6flJlbmRlckJveCgpCiB7CisgICAgbV9yZXBhaW50VGltZXIuc3RvcCgpOworICAgIGlmICho
YXNDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIodGhpcykpCisgICAgICAgIHJlbW92ZUNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcih0aGlzKTsKIH0KIAogUmVuZGVyUmVnaW9uKiBSZW5kZXJCb3g6OmNs
YW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMoUmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0CkBAIC0x
MjIxLDcgKzEyMjYsMjIgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWkKICAgICAvLyBJZiB3ZSBo
YXZlIGEgbmF0aXZlIHRoZW1lIGFwcGVhcmFuY2UsIHBhaW50IHRoYXQgYmVmb3JlIHBhaW50aW5n
IG91ciBiYWNrZ3JvdW5kLgogICAgIC8vIFRoZSB0aGVtZSB3aWxsIHRlbGwgdXMgd2hldGhlciBv
ciBub3Qgd2Ugc2hvdWxkIGFsc28gcGFpbnQgdGhlIENTUyBiYWNrZ3JvdW5kLgogICAgIEludFJl
Y3Qgc25hcHBlZFBhaW50UmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCkpOwotICAg
IGJvb2wgdGhlbWVQYWludGVkID0gc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkgJiYgIXRoZW1lKCku
cGFpbnQodGhpcywgcGFpbnRJbmZvLCBzbmFwcGVkUGFpbnRSZWN0KTsKKworICAgIENvbnRyb2xT
dGF0ZXMqIGNvbnRyb2xTdGF0ZXMgPSBudWxscHRyOworICAgIGlmIChzdHlsZSgpLmhhc0FwcGVh
cmFuY2UoKSkgeworICAgICAgICBpZiAoaGFzQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKHRoaXMp
KQorICAgICAgICAgICAgY29udHJvbFN0YXRlcyA9IGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcih0
aGlzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb250cm9sU3RhdGVzID0gbmV3IENv
bnRyb2xTdGF0ZXMoKTsKKyAgICAgICAgICAgIGFkZENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcih0
aGlzLCBjb250cm9sU3RhdGVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgdGhlbWVQ
YWludGVkID0gc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkgJiYgIXRoZW1lKCkucGFpbnQodGhpcywg
Y29udHJvbFN0YXRlcywgcGFpbnRJbmZvLCBzbmFwcGVkUGFpbnRSZWN0KTsKKworICAgIGlmIChj
b250cm9sU3RhdGVzICYmIGNvbnRyb2xTdGF0ZXMtPm5lZWRzUmVwYWludCgpKQorICAgICAgICBt
X3JlcGFpbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CisKICAgICBpZiAoIXRoZW1lUGFpbnRlZCkg
ewogICAgICAgICBpZiAoYmxlZWRBdm9pZGFuY2UgPT0gQmFja2dyb3VuZEJsZWVkQmFja2dyb3Vu
ZE92ZXJCb3JkZXIpCiAgICAgICAgICAgICBwYWludEJvcmRlcihwYWludEluZm8sIHBhaW50UmVj
dCwgc3R5bGUoKSwgYmxlZWRBdm9pZGFuY2UpOwpAQCAtNDcyOSw0ICs0NzQ5LDEwIEBAIExheW91
dFVuaXQgUmVuZGVyQm94OjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgY29uc3QK
ICAgICByZXR1cm4gY29udGFpbmVyQmxvY2stPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBh
Z2UoKSArIGxvZ2ljYWxUb3AoKTsKIH0KIAordm9pZCBSZW5kZXJCb3g6OnJlcGFpbnRUaW1lckZp
cmVkKFRpbWVyPFJlbmRlckJveD4mKQoreworICAgIGlmICghZG9jdW1lbnQoKS5pblBhZ2VDYWNo
ZSgpKQorICAgICAgICB0aGlzLT5yZXBhaW50KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCA4Y2EzMzViMTk5ZWM0MWFj
MTE5N2IyODk3ODdiNzE4ZjAwNzQ5Y2M5Li5kMzVlNzg1YmVmNTA4YjljM2M2N2QxZmMxOGE2MDA0
ZmU0ZGQwZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC03MTUsOCAr
NzE1LDEyIEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8UmVuZGVyT3ZlcmZsb3c+IG1fb3ZlcmZs
b3c7CiAKIHByaXZhdGU6CisgICAgdm9pZCByZXBhaW50VGltZXJGaXJlZChUaW1lcjxSZW5kZXJC
b3g+Jik7CisKICAgICAvLyBVc2VkIHRvIHN0b3JlIHN0YXRlIGJldHdlZW4gc3R5bGVXaWxsQ2hh
bmdlIGFuZCBzdHlsZURpZENoYW5nZQogICAgIHN0YXRpYyBib29sIHNfaGFkT3ZlcmZsb3dDbGlw
OworCisgICAgVGltZXI8UmVuZGVyQm94PiBtX3JlcGFpbnRUaW1lcjsKIH07CiAKIFJFTkRFUl9P
QkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJCb3gsIGlzQm94KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMzJjN2QwYjVkYzg3Y2VhN2ZhOWMyYmIyMTFi
MWY2M2NlZGU0ZmQ0My4uNjNmZjE0OWRmZDZiMDc1ZTJlNDkzYzZiNDA2NmRkMDhmMzJkYTI1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBbmltYXRpb25D
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKKyNpbmNsdWRlICJDb250cm9s
U3RhdGVzLmgiCiAjaW5jbHVkZSAiQ3Vyc29yTGlzdC5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxl
ci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC02Niw3ICs2NywxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGJvb2wgUmVuZGVyRWxlbWVudDo6c19hZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxz
ZTsKIGJvb2wgUmVuZGVyRWxlbWVudDo6c19ub0xvbmdlckFmZmVjdHNQYXJlbnRCbG9jayA9IGZh
bHNlOwotCisgICAgCitzdGF0aWMgSGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBDb250cm9s
U3RhdGVzKj4mIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgQ29udHJvbFN0YXRlcyo+PiBt
YXA7CisgICAgcmV0dXJuIG1hcDsKK30KKyAgICAKIFJlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1l
bnQoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVk
IGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJPYmplY3QoZWxlbWVudCkKICAgICAsIG1fYmFz
ZVR5cGVGbGFncyhiYXNlVHlwZUZsYWdzKQpAQCAtMTM1MCw0ICsxMzU3LDI4IEBAIFJlbmRlck5h
bWVkRmxvd1RocmVhZCogUmVuZGVyRWxlbWVudDo6cmVuZGVyTmFtZWRGbG93VGhyZWFkV3JhcHBl
cigpCiAgICAgcmV0dXJuIHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1JlbmRlck5hbWVkRmxvd1Ro
cmVhZCgpID8gdG9SZW5kZXJOYW1lZEZsb3dUaHJlYWQocmVuZGVyZXIpIDogbnVsbHB0cjsKIH0K
IAorYm9vbCBSZW5kZXJFbGVtZW50OjpoYXNDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyT2JqZWN0KiBvKQoreworICAgIHJldHVybiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAo
KS5jb250YWlucyhvKTsKK30KKworQ29udHJvbFN0YXRlcyogUmVuZGVyRWxlbWVudDo6Y29udHJv
bFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbykKK3sKKyAgICByZXR1cm4g
Y29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkuZ2V0KG8pOworfQorCit2b2lkIFJlbmRlckVsZW1l
bnQ6OnJlbW92ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8p
Cit7CisgICAgQ29udHJvbFN0YXRlcyogc3RhdGVzID0gY29udHJvbFN0YXRlc1JlbmRlcmVyTWFw
KCkuZ2V0KG8pOworICAgIGlmIChzdGF0ZXMpIHsKKyAgICAgICAgY29udHJvbFN0YXRlc1JlbmRl
cmVyTWFwKCkucmVtb3ZlKG8pOworICAgICAgICBkZWxldGUgc3RhdGVzOworICAgIH0KK30KKwor
dm9pZCBSZW5kZXJFbGVtZW50OjphZGRDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvLCBDb250cm9sU3RhdGVzKiBzdGF0ZXMpCit7CisgICAgY29udHJvbFN0YXRl
c1JlbmRlcmVyTWFwKCkuYWRkKG8sIHN0YXRlcyk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDAyMjMwNjA2ZGI0Yjc5NWIyMjUxZGMyNWNhMjU5
ZTIzYTM5Y2UxZjkuLmU2NGI3MWU1MTcyMDQ2OTZjOGNkMzU0ZWUyOGQ3OTg0MzUxNjAyYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMjcsNiArMjcsOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRyb2xTdGF0ZXM7CisKIGNsYXNz
IFJlbmRlckVsZW1lbnQgOiBwdWJsaWMgUmVuZGVyT2JqZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5SZW5kZXJFbGVtZW50KCk7CkBAIC0xODIsNiArMTg0LDExIEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIHNldFJlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXMoYm9vbCBiKSB7IG1f
cmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hlcyA9IGI7IH0KICAgICBib29sIHJlbmRl
cklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXMoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcklu
bGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXM7IH0KIAorICAgIHN0YXRpYyBib29sIGhhc0NvbnRy
b2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0aWMgQ29u
dHJvbFN0YXRlcyogY29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCop
OworICAgIHN0YXRpYyB2b2lkIHJlbW92ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBS
ZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRDb250cm9sU3RhdGVzRm9yUmVuZGVy
ZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgQ29udHJvbFN0YXRlcyopOworCiBwcml2YXRlOgogICAg
IHZvaWQgbm9kZSgpIGNvbnN0ID0gZGVsZXRlOwogICAgIHZvaWQgbm9uUHNldWRvTm9kZSgpIGNv
bnN0ID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5k
ZXggNThlZjM3YWVjNTdkYjA3NzFlZDVkYTUyZTI5ZWNjZTg0MmU5NzgyMy4uZDAyN2UwMzQ0OTQ4
ZTFmZGVjNjdkM2JlODYwNTg4NjE4NzUxY2EzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUu
aCIKIAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJDb250cm9sU3Rh
dGVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKQEAgLTI2Miw3ICsyNjMsNyBAQCB2b2lkIFJlbmRlclRoZW1l
OjphZGp1c3RTdHlsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSYg
c3R5bGUsCiAgICAgfQogfQogCi1ib29sIFJlbmRlclRoZW1lOjpwYWludChSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBS
ZW5kZXJUaGVtZTo6cGFpbnQoUmVuZGVyT2JqZWN0KiBvLCBDb250cm9sU3RhdGVzKiBjb250cm9s
U3RhdGVzLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsK
ICAgICAvLyBJZiBwYWludGluZyBpcyBkaXNhYmxlZCwgYnV0IHdlIGFyZW4ndCB1cGRhdGluZyBj
b250cm9sIHRpbnRzLCB0aGVuIGp1c3QgYmFpbC4KICAgICAvLyBJZiB3ZSBhcmUgdXBkYXRpbmcg
Y29udHJvbCB0aW50cywganVzdCBzY2hlZHVsZSBhIHJlcGFpbnQgaWYgdGhlIHRoZW1lIHN1cHBv
cnRzIHRpbnRpbmcKQEAgLTI4Niw3ICsyODcsOCBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludChS
ZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZQog
ICAgIGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6CiAgICAgY2FzZSBCdXR0b25QYXJ0OgogICAgIGNh
c2UgSW5uZXJTcGluQnV0dG9uUGFydDoKLSAgICAgICAgbV90aGVtZS0+cGFpbnQocGFydCwgY29u
dHJvbFN0YXRlc0ZvclJlbmRlcmVyKG8pLCBjb25zdF9jYXN0PEdyYXBoaWNzQ29udGV4dCo+KHBh
aW50SW5mby5jb250ZXh0KSwgciwgby0+c3R5bGUoKS5lZmZlY3RpdmVab29tKCksICZvLT52aWV3
KCkuZnJhbWVWaWV3KCkpOworICAgICAgICB1cGRhdGVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIo
bywgY29udHJvbFN0YXRlcyk7CisgICAgICAgIG1fdGhlbWUtPnBhaW50KHBhcnQsIGNvbnRyb2xT
dGF0ZXMsIGNvbnN0X2Nhc3Q8R3JhcGhpY3NDb250ZXh0Kj4ocGFpbnRJbmZvLmNvbnRleHQpLCBy
LCBvLT5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwgJm8tPnZpZXcoKS5mcmFtZVZpZXcoKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTcx
Myw3ICs3MTUsOCBAQCBib29sIFJlbmRlclRoZW1lOjppc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBCb3JkZXJEYXRhJiBibwogdm9pZCBSZW5kZXJUaGVtZTo6
YWRqdXN0UmVwYWludFJlY3QoY29uc3QgUmVuZGVyT2JqZWN0KiBvLCBJbnRSZWN0JiByKQogewog
I2lmIFVTRShORVdfVEhFTUUpCi0gICAgbV90aGVtZS0+aW5mbGF0ZUNvbnRyb2xQYWludFJlY3Qo
by0+c3R5bGUoKS5hcHBlYXJhbmNlKCksIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvKSwgciwg
by0+c3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOworICAgIENvbnRyb2xTdGF0ZXMgc3RhdGVzKGV4
dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobykpOworICAgIG1fdGhlbWUtPmluZmxhdGVD
b250cm9sUGFpbnRSZWN0KG8tPnN0eWxlKCkuYXBwZWFyYW5jZSgpLCAmc3RhdGVzLCByLCBvLT5z
dHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvKTsKICAg
ICBVTlVTRURfUEFSQU0ocik7CkBAIC03MjUsMTQgKzcyOCwxNCBAQCBib29sIFJlbmRlclRoZW1l
OjpzdXBwb3J0c0ZvY3VzUmluZyhjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiAgICAg
cmV0dXJuIChzdHlsZS0+aGFzQXBwZWFyYW5jZSgpICYmIHN0eWxlLT5hcHBlYXJhbmNlKCkgIT0g
VGV4dEZpZWxkUGFydCAmJiBzdHlsZS0+YXBwZWFyYW5jZSgpICE9IFRleHRBcmVhUGFydCAmJiBz
dHlsZS0+YXBwZWFyYW5jZSgpICE9IE1lbnVsaXN0QnV0dG9uUGFydCAmJiBzdHlsZS0+YXBwZWFy
YW5jZSgpICE9IExpc3Rib3hQYXJ0KTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZTo6c3RhdGVDaGFu
Z2VkKFJlbmRlck9iamVjdCogbywgQ29udHJvbFN0YXRlIHN0YXRlKSBjb25zdAorYm9vbCBSZW5k
ZXJUaGVtZTo6c3RhdGVDaGFuZ2VkKFJlbmRlck9iamVjdCogbywgQ29udHJvbFN0YXRlczo6U3Rh
dGVzIHN0YXRlKSBjb25zdAogewogICAgIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gYXNzdW1l
cyB0aGUgY29udHJvbHMgZG9uJ3QgcmVzcG9uZCB0byBjaGFuZ2VzIGluIDpob3ZlciBzdGF0ZQot
ICAgIGlmIChzdGF0ZSA9PSBIb3ZlclN0YXRlICYmICFzdXBwb3J0c0hvdmVyKCZvLT5zdHlsZSgp
KSkKKyAgICBpZiAoc3RhdGUgPT0gQ29udHJvbFN0YXRlczo6SG92ZXJTdGF0ZSAmJiAhc3VwcG9y
dHNIb3Zlcigmby0+c3R5bGUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEFz
c3VtZSBwcmVzc2VkIHN0YXRlIGlzIG9ubHkgcmVzcG9uZGVkIHRvIGlmIHRoZSBjb250cm9sIGlz
IGVuYWJsZWQuCi0gICAgaWYgKHN0YXRlID09IFByZXNzZWRTdGF0ZSAmJiAhaXNFbmFibGVkKG8p
KQorICAgIGlmIChzdGF0ZSA9PSBDb250cm9sU3RhdGVzOjpQcmVzc2VkU3RhdGUgJiYgIWlzRW5h
YmxlZChvKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gUmVwYWludCB0aGUgY29u
dHJvbC4KQEAgLTc0MCwzNCArNzQzLDQwIEBAIGJvb2wgUmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdl
ZChSZW5kZXJPYmplY3QqIG8sIENvbnRyb2xTdGF0ZSBzdGF0ZSkgY29uc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotQ29udHJvbFN0YXRlcyBSZW5kZXJUaGVtZTo6Y29udHJvbFN0YXRlc0ZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWU6OnVw
ZGF0ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8sIENvbnRy
b2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMpIGNvbnN0CiB7Ci0gICAgQ29udHJvbFN0YXRlcyByZXN1
bHQgPSAwOworICAgIENvbnRyb2xTdGF0ZXMgbmV3U3RhdGVzID0gZXh0cmFjdENvbnRyb2xTdGF0
ZXNGb3JSZW5kZXJlcihvKTsKKyAgICBjb250cm9sU3RhdGVzLT5zZXRTdGF0ZXMobmV3U3RhdGVz
LnN0YXRlcygpKTsKK30KKworQ29udHJvbFN0YXRlczo6U3RhdGVzIFJlbmRlclRoZW1lOjpleHRy
YWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3QK
K3sKKyAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMgc3RhdGVzID0gMDsKICAgICBpZiAoaXNIb3Zl
cmVkKG8pKSB7Ci0gICAgICAgIHJlc3VsdCB8PSBIb3ZlclN0YXRlOworICAgICAgICBzdGF0ZXMg
fD0gQ29udHJvbFN0YXRlczo6SG92ZXJTdGF0ZTsKICAgICAgICAgaWYgKGlzU3BpblVwQnV0dG9u
UGFydEhvdmVyZWQobykpCi0gICAgICAgICAgICByZXN1bHQgfD0gU3BpblVwU3RhdGU7CisgICAg
ICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6U3BpblVwU3RhdGU7CiAgICAgfQogICAg
IGlmIChpc1ByZXNzZWQobykpIHsKLSAgICAgICAgcmVzdWx0IHw9IFByZXNzZWRTdGF0ZTsKKyAg
ICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OlByZXNzZWRTdGF0ZTsKICAgICAgICAgaWYg
KGlzU3BpblVwQnV0dG9uUGFydFByZXNzZWQobykpCi0gICAgICAgICAgICByZXN1bHQgfD0gU3Bp
blVwU3RhdGU7CisgICAgICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6U3BpblVwU3Rh
dGU7CiAgICAgfQogICAgIGlmIChpc0ZvY3VzZWQobykgJiYgby0+c3R5bGUoKS5vdXRsaW5lU3R5
bGVJc0F1dG8oKSkKLSAgICAgICAgcmVzdWx0IHw9IEZvY3VzU3RhdGU7CisgICAgICAgIHN0YXRl
cyB8PSBDb250cm9sU3RhdGVzOjpGb2N1c1N0YXRlOwogICAgIGlmIChpc0VuYWJsZWQobykpCi0g
ICAgICAgIHJlc3VsdCB8PSBFbmFibGVkU3RhdGU7CisgICAgICAgIHN0YXRlcyB8PSBDb250cm9s
U3RhdGVzOjpFbmFibGVkU3RhdGU7CiAgICAgaWYgKGlzQ2hlY2tlZChvKSkKLSAgICAgICAgcmVz
dWx0IHw9IENoZWNrZWRTdGF0ZTsKKyAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OkNo
ZWNrZWRTdGF0ZTsKICAgICBpZiAoaXNSZWFkT25seUNvbnRyb2wobykpCi0gICAgICAgIHJlc3Vs
dCB8PSBSZWFkT25seVN0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6UmVh
ZE9ubHlTdGF0ZTsKICAgICBpZiAoaXNEZWZhdWx0KG8pKQotICAgICAgICByZXN1bHQgfD0gRGVm
YXVsdFN0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6RGVmYXVsdFN0YXRl
OwogICAgIGlmICghaXNBY3RpdmUobykpCi0gICAgICAgIHJlc3VsdCB8PSBXaW5kb3dJbmFjdGl2
ZVN0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6V2luZG93SW5hY3RpdmVT
dGF0ZTsKICAgICBpZiAoaXNJbmRldGVybWluYXRlKG8pKQotICAgICAgICByZXN1bHQgfD0gSW5k
ZXRlcm1pbmF0ZVN0YXRlOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHN0YXRlcyB8PSBD
b250cm9sU3RhdGVzOjpJbmRldGVybWluYXRlU3RhdGU7CisgICAgcmV0dXJuIHN0YXRlczsKIH0K
IAogYm9vbCBSZW5kZXJUaGVtZTo6aXNBY3RpdmUoY29uc3QgUmVuZGVyT2JqZWN0KiBvKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCA2ODU0NjM0NjczODk4
MWMzYTNhYTJkYzRmYmY5OTdhNTE3MDZmZGI4Li42NzA0MjZlYjdkOTBmM2I0ZTBkYTNlN2QwYTUz
NDJkYzlmODFjMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAt
MzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NTdHlsZVNoZWV0
OworY2xhc3MgQ29udHJvbFN0YXRlczsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGaWxlTGlzdDsK
IGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICAv
LyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgdG8gcGFpbnQgdGhlIHdpZGdldCBhcyBhIGJhY2tncm91
bmQgb2YgdGhlIFJlbmRlck9iamVjdC4gIEEgd2lkZ2V0J3MgZm9yZWdyb3VuZCwgZS5nLiwgdGhl
CiAgICAgLy8gdGV4dCBvZiBhIGJ1dHRvbiwgaXMgYWx3YXlzIHJlbmRlcmVkIGJ5IHRoZSBlbmdp
bmUgaXRzZWxmLiAgVGhlIGJvb2xlYW4gcmV0dXJuIHZhbHVlIGluZGljYXRlcwogICAgIC8vIHdo
ZXRoZXIgdGhlIENTUyBib3JkZXIvYmFja2dyb3VuZCBzaG91bGQgYWxzbyBiZSBwYWludGVkLgot
ICAgIGJvb2wgcGFpbnQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOworICAgIGJvb2wgcGFpbnQoUmVuZGVyT2JqZWN0KiwgQ29udHJvbFN0YXRlcyosIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICBib29sIHBhaW50Qm9yZGVyT25s
eShSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAg
Ym9vbCBwYWludERlY29yYXRpb25zKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKIApAQCAtMTI2LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRo
aXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuZXZlciBhIHJlbGV2YW50IHN0YXRlIGNoYW5nZXMgb24g
YSBwYXJ0aWN1bGFyIHRoZW1lZCBvYmplY3QsIGUuZy4sIHRoZSBtb3VzZSBiZWNvbWVzIHByZXNz
ZWQKICAgICAvLyBvciBhIGNvbnRyb2wgYmVjb21lcyBkaXNhYmxlZC4KLSAgICB2aXJ0dWFsIGJv
b2wgc3RhdGVDaGFuZ2VkKFJlbmRlck9iamVjdCosIENvbnRyb2xTdGF0ZSkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIHN0YXRlQ2hhbmdlZChSZW5kZXJPYmplY3QqLCBDb250cm9sU3RhdGVzOjpT
dGF0ZXMpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIHRo
ZSB0aGVtZSBjaGFuZ2VzIG9uIHRoZSBzeXN0ZW0gaW4gb3JkZXIgdG8gZmx1c2ggY2FjaGVkIHJl
c291cmNlcyBmcm9tIHRoZQogICAgIC8vIG9sZCB0aGVtZS4KQEAgLTM2OSw4ICszNzAsOCBAQCBw
cm90ZWN0ZWQ6CiAjZW5kaWYKIAogcHVibGljOgotICAgIC8vIE1ldGhvZHMgZm9yIHN0YXRlIHF1
ZXJ5aW5nCi0gICAgQ29udHJvbFN0YXRlcyBjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyT2JqZWN0KiBvKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUNvbnRyb2xTdGF0ZXNGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqLCBDb250cm9sU3RhdGVzKikgY29uc3Q7CisgICAg
Q29udHJvbFN0YXRlczo6U3RhdGVzIGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29u
c3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgYm9vbCBpc0FjdGl2ZShjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdDsKICAgICBib29sIGlzQ2hlY2tlZChjb25zdCBSZW5kZXJPYmplY3QqKSBj
b25zdDsKICAgICBib29sIGlzSW5kZXRlcm1pbmF0ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCAwNTZl
OWQ0NzZmNDg0NDQ0YTVmZTFkMjBiMTA1N2Q4NGY3YjA2OWI5Li5hZDUzYjRjYTNkN2U3MjEwM2Iy
MjkzMmY0MzQ5YjlmNDc4ZDM3MGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tCkBAIC0yMTIsNyArMjEyLDggQEAgUmVuZGVyVGhlbWVNYWM6On5SZW5kZXJU
aGVtZU1hYygpCiAKIE5TVmlldyogUmVuZGVyVGhlbWVNYWM6OmRvY3VtZW50Vmlld0ZvcihSZW5k
ZXJPYmplY3QqIG8pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFRoZW1lTWFjOjplbnN1cmVkVmlldygm
by0+dmlldygpLmZyYW1lVmlldygpLCBjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobykpOworICAg
IENvbnRyb2xTdGF0ZXMgc3RhdGVzKGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobykp
OworICAgIHJldHVybiBUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoJm8tPnZpZXcoKS5mcmFtZVZpZXco
KSwgJnN0YXRlcyk7CiB9CiAKICNpZiBFTkFCTEUoVklERU8pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228016</attachid>
            <date>2014-03-27 18:15:36 -0700</date>
            <delta_ts>2014-03-28 04:13:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130736-20140328121450.patch</filename>
            <type>text/plain</type>
            <size>55797</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE2N2E0Mzc0OGRiYThl
MmY5ODdkMzMwOWI2OGIzNWQyZmEzZTU0ZS4uM2I0MzFiMzNmMmU2ZDJmOTYzZWM2Mjg4M2FjYmNl
MTI0ZDcxYmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDE0LTAzLTI3ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGZvcm0gY29udHJv
bHMgdGhhdCBtYXkgbmVlZCBpbmNyZW1lbnRhbCByZWRyYXcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDczNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGFyZSBzb21lIGZvcm0gY29udHJvbHMg
dGhhdCBjaGFuZ2UgYXBwZWFyYW5jZQorICAgICAgICBvdmVyIHRpbWUuIEV4cGFuZCB0aGUgQ29u
dHJvbFN0YXRlcyBzbyB0aGF0IGl0IGNhbgorICAgICAgICBob2xkIGEgbGl0dGxlIG1vcmUgaW5m
b3JtYXRpb24sIGluY2x1ZGluZyBhIHJlZmVyZW5jZQorICAgICAgICB0byB0aGUgbmF0aXZlIGZv
cm0gY29udHJvbC4gVGhpcyB3YXkgdGhlIFRoZW1lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGNh
biByZXBhaW50IHRoZSBleGlzdGluZyBuYXRpdmUgY29udHJvbCBpZiBuZWNlc3NhcnkuIEF0Cisg
ICAgICAgIGxlYXN0IFRoZW1lTWFjIHdhcyByZXVzaW5nIGEgc2luZ2xlIGNvbnRyb2wgZm9yIHBh
aW50aW5nCisgICAgICAgIGFsbCBpbnN0YW5jZXMgYmVmb3JlIHRoaXMgY2hhbmdlLgorCisgICAg
ICAgIFNpbmNlIENvbnRyb2xTdGF0ZXMgaXMgbm93IGEgY2xhc3MsIHBhc3MgaXQgYXJvdW5kIGJ5
CisgICAgICAgIHJlZmVyZW5jZS4KKworICAgICAgICBUaGUgb3RoZXIgbWFqb3IgY2hhbmdlIGlz
IGtlZXBpbmcgYSB0aW1lciB0byB0cmlnZ2VyIGEKKyAgICAgICAgcmVwYWludCBpbiBSZW5kZXJC
b3gsIHdoaWNoIGhhcHBlbnMgaWYgVGhlbWUvUmVuZGVyVGhlbWUKKyAgICAgICAgdXBkYXRlIHRo
ZSBDb250cm9sU3RhdGUgdG8gcmVxdWVzdCBvbmUuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBDb250cm9sU3RhdGVzLmguCisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOiBEaXR0by4KKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBY3RpdmUpOiBTdGF0ZXMg
bm93IHdpdGhpbiBDb250cm9sU3RhdGVzLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0
SG92ZXJlZCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hh
bmdlZCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNhYmxlZFN0YXRl
Q2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6cmVhZE9ubHlBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNl
dENoZWNrZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNl
dEluZGV0ZXJtaW5hdGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaDogTmV3IGZpbGUu
IENvcGllZCB0aGUgb2xkIENvbnRyb2xTdGF0ZXMgZW51bSwKKyAgICAgICAgYW5kIGFkZGVkIGFj
Y2Vzc29ycyB0byBob2xkIHdoZXRoZXIgb3Igbm90IHRoZSBzdGF0ZSBpcyBkaXJ0eSwgYW5kCisg
ICAgICAgIGEgcmVmZXJlbmNlIHRvIGEgcGxhdGZvcm0gY29udHJvbCBpZiBuZWNlc3NhcnkuCisg
ICAgICAgICogcGxhdGZvcm0vVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpzZWxl
Y3Rpb25Db2xvcik6IFBhc3MgQ29udHJvbFN0YXRlcyBwb2ludGVyLgorICAgICAgICAoV2ViQ29y
ZTo6VGhlbWU6OnBhaW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6aW5mbGF0
ZUNvbnRyb2xQYWludFJlY3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZVR5cGVz
Lmg6IFJlbW92ZSBDb250cm9sU3RhdGVzIGVudW0uCisgICAgICAgICogcGxhdGZvcm0vZWZsL1Jl
bmRlclRoZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphcHBs
eUVkamVTdGF0ZUZyb21Gb3JtKTogUGFzcyBDb250cm9sU3RhdGVzIHBvaW50ZXIuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBhcnQpOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaDogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbToKKyAgICAgICAgKC1bV2ViQ29yZVRoZW1lVmlldyBhZGRTdWJ2aWV3Ol0pOiBOZXcg
bWV0aG9kIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBhZGQgQ0FMYXllciBiYWNrZWQKKyAgICAgICAg
dmlld3MgdG8gdGhlIE5TVmlldyB3ZSdyZSB1c2luZyBmb3IgcmVuZGVyaW5nLgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlU3RhdGVzKTogVXNlIHRoZSBwcml2YXRlIGFuaW1hdGVkIHNldHRlcnMg
aWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydENvbnRyb2xTdGF0ZXNUb1Ro
ZW1lRHJhd1N0YXRlKTogTmFtZXNwYWNpbmcuCisgICAgICAgIChXZWJDb3JlOjpjb25maWd1cmVD
aGVja2JveCk6IFBhc3MgQ29udHJvbFN0YXRlcyBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ2hlY2tib3hDZWxsKTogTmV3IGhlbHBlciBzaW5jZSB3ZSdyZSBjcmVhdGluZyBub24t
c3RhdGljIGNlbGxzLgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQ2hlY2tib3hDZWxsKTogVGhl
IG9sZCBzdGF0aWMgcHJvdmlkZXIsIHJlbmFtZWQuCisgICAgICAgIChXZWJDb3JlOjpwYWludENo
ZWNrYm94KTogQ2hlY2sgaWYgdGhpcyBwYWludCB3YXMgdHJpZ2dlcmVkIGJ5IGEgc3RhdGUgY2hh
bmdlCisgICAgICAgIG9yIGFuIGFuaW1hdGlvbi4gVXBkYXRlIHRoZSBDb250cm9sU3RhdGVzIGlm
IHdlIG5lZWQgdG8gYmUgcmVwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6cmFkaW8pOiBQYXJh
bWV0ZXIgaXMgbm93IENvbnRyb2xTdGF0ZXMqLgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRSYWRp
byk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2V0VXBCdXR0b25DZWxsKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpidXR0b24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBhaW50
QnV0dG9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjplbnN1cmVkVmlldyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6cGFpbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrYm94KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6UmVuZGVyQm94KTogSW5pdGlhbGl6ZSB0
aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6flJlbmRlckJveCk6IFN0b3AgYW55
IHBlbmRpbmcgdGltZXJzIGFuZCBkZWxldGUgdGhlIENvbnRyb2xTdGF0ZSBpZiBuZWNlc3Nhcnku
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOiBDcmVh
dGUgYSBDb250cm9sU3RhdGVzIGlmIG5lZWRlZC4gUGFpbnQsIGFuZCBzdGFydCB0aGUgcmVwYWlu
dAorICAgICAgICB0aW1lciBpZiB0aGUgQ29udHJvbFN0YXRlcyBzYXkgd2Ugc2hvdWxkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpyZXBhaW50VGltZXJGaXJlZCk6IENhbGwgcmVwYWlu
dCB3aGVuIHRoZSB0aW1lciBmaXJlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6
IEFkZCBhIHRpbWVyIGZvciByZXBhaW50aW5nLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCk6
IEEgc3RhdGljIEhhc2hNYXAgdGhhdCBhc3NvY2lhdGVzIHJlbmRlcmVycyB3aXRoIENvbnRyb2xT
dGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpoYXNDb250cm9sU3RhdGVz
Rm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Y29udHJvbFN0
YXRlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnJlbW92
ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50OjphZGRDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludCk6IFVzZSBhIHBvaW50ZXIgdG8gQ29u
dHJvbFN0YXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RSZXBhaW50
UmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdl
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnVwZGF0ZUNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcik6IE5ldyBtZXRob2QgdGhhdCBqdXN0IHVwZGF0ZXMgdGhlIHN0YXRl
cyBwYXJ0IG9mIENvbnRyb2xTdGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6
ZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6IE5ldyBtZXRob2QgdGhhdCBjYWxjdWxh
dGVzIHRoZSBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpjb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjpkb2N1bWVudFZpZXdGb3IpOiBVc2UgYSBDb250cm9sU3Rh
dGVzIHBvaW50ZXIuCisKIDIwMTQtMDMtMjcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCB1bm5lZWRlZCAibXV0YWJsZSIga2V5d29y
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggZjIxMmY3ODExMTA2ZTZiZjI5Nzc2ZTZlZTQzNTFhODhiYmZmM2E5Yy4uODc1YWU5NDk1NDc1
NzQyMjAwZGMyZTJjN2NjNGJmMDg4NGM3Mzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xOTA4NCw2ICsxOTA4NCw3IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDb250ZW50VHlwZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udGV4dE1lbnUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENvbnRleHRNZW51SXRlbS5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udHJvbFN0YXRlcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29va2llc1N0cmF0ZWd5LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDcm9zc1RocmVhZENvcGllci5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ3Vyc29yLmgiIC8+CkBAIC0yMTEz
MCw0ICsyMTEzMSw0IEBACiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+
CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXEJ1aWxkQ3VzdG9taXphdGlv
bnNcbWFzbS50YXJnZXRzIiAvPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA0NGY2NTBi
OWEyOWM2OWM3ZDdmN2MzZThiOTc3MTA2YmYwMGE2OWM4Li4wZWQzZTA4MDQwZjY2YWYyMWVhNGYx
Yjc5YTAxYjFiNjU1ZjZiMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03OTY5LDYgKzc5NjksOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udGV4dE1lbnVJdGVtLmgiPgog
ICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udHJvbFN0YXRlcy5oIj4KKyAgICAgIDxG
aWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENvb2tpZXNTdHJhdGVneS5oIj4KICAgICAgIDxGaWx0ZXI+
cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTE1MTQ3LDQgKzE1MTUwLDQg
QEAKICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cd2luPC9GaWx0ZXI+CiAgICAgPC9NQVNNPgogICA8
L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1By
b2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNTAzMjBiMmM5ZTgzNzQxZTY2M2U3NTIwZDhlMjZhN2MwYWQyNjdlMC4uNGI1
YjhhMGFiYWVkOWVlNzIxYTE2OTdkNDdiNGZhNTMwZDRiYTg1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODAzNCw2ICs4MDM0
LDcgQEAKIAkJMzEwNzhDQzQxODgwQTZBNjAwODA5OURDIC8qIE9FU1RleHR1cmVIYWxmRmxvYXRM
aW5lYXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE9FU1RleHR1cmVIYWxmRmxvYXRMaW5l
YXIuaWRsOyBwYXRoID0gY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA3OENDNTE4ODBBQUFBMDA4MDk5REMgLyogSlNP
RVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxMDc4Q0M2MTg4MEFBQUEwMDgwOTlEQyAvKiBKU09FU1RleHR1cmVI
YWxmRmxvYXRMaW5lYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPRVNU
ZXh0dXJlSGFsZkZsb2F0TGluZWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
MUMwOEJDMThFMzVENjgwMEI2NTYxNSAvKiBDb250cm9sU3RhdGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRyb2xTdGF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzEyODhFNkUwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lUnVs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NLZXlm
cmFtZVJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTI4OEU2RjBFMzAw
NUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU0tleWZyYW1lUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMTI4OEU3MDBFMzAwNUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJh
bWVzUnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODc4
LDYgKzIwODc5LDcgQEAKIAkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkzMTFDMDhCQzE4
RTM1RDY4MDBCNjU2MTUgLyogQ29udHJvbFN0YXRlcy5oICovLAogCQkJCTQ5RTkxMkE0MEVGQUM4
RTYwMDlEMENBRiAvKiBhbmltYXRpb24gKi8sCiAJCQkJRkQzMTYwNDAxMkIwMjZBMzAwQzFBMzU5
IC8qIGF1ZGlvICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCBhZTI2NTkyNDlhOGQ3NTIxOTM0MDc4Y2FlZTc3YTAwY2I1
NDZiYTcwLi44ODkwMGRmZmE1MDg2NzJlYzU3M2U3M2FhOGVjZjM5N2Y2YmZkMWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC00ODcsNyArNDg3LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRBY3Rp
dmUoYm9vbCBmbGFnLCBib29sIHBhdXNlKQogICAgIGlmIChyZWFjdHNUb1ByZXNzKQogICAgICAg
ICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKLSAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5o
YXNBcHBlYXJhbmNlKCkgJiYgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVy
ZXIoKSwgUHJlc3NlZFN0YXRlKSkKKyAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBl
YXJhbmNlKCkgJiYgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwg
Q29udHJvbFN0YXRlczo6UHJlc3NlZFN0YXRlKSkKICAgICAgICAgcmVhY3RzVG9QcmVzcyA9IHRy
dWU7CiAKICAgICAvLyBUaGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgYSBmZWF0
dXJlIHRoYXQgb25seSB3b3JrcyBpZiB0aGUKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIEVsZW1l
bnQ6OnNldEhvdmVyZWQoYm9vbCBmbGFnKQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7
CiAKICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAg
IHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUp
OworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBD
b250cm9sU3RhdGVzOjpIb3ZlclN0YXRlKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRv
Vmlldyhib29sIGFsaWduVG9Ub3ApIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcAppbmRleCA2MTAxZjY0YmQ2OGZjZTIyODAwYjQ2NzUzMWMyOTNiMmIxYzQxMjA4Li40
OWE4NzgzY2M5M2M4NmRjODg1MTI1MTFjZmYxNjdiMjRhNmY1MTRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTc0NSw3ICsxNzQ1LDcgQEAgdm9pZCBG
cmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKCkKICAgICAgICAgZWxl
bWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBpZiAocmVuZGVyZXIg
JiYgcmVuZGVyZXItPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJl
bmRlcmVyLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlciwgRm9jdXNTdGF0ZSk7CisgICAg
ICAgICAgICAgICAgcmVuZGVyZXItPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyLCBDb250
cm9sU3RhdGVzOjpGb2N1c1N0YXRlKTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDNiMjVjYjBkM2M4ZGRl
NWExMmMzNTY4YmRkZjY0ZmY2MWQ2ZGYxY2QuLjBlMDU3ZTFiNTEwYmNhMWI5MmE4ZjViNGUxZTQx
ZWMyZDZlNzgwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQogICAgIHNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2so
KTsKICAgICBkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNlbGVjdG9yRGlzYWJsZWQgfCBBZmZl
Y3RlZFNlbGVjdG9yRW5hYmxlZCk7CiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+
c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3Rh
dGVDaGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJsZWRTdGF0ZSk7CisgICAgICAgIHJlbmRlcmVyKCkt
PnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIENvbnRyb2xTdGF0ZXM6OkVuYWJsZWRT
dGF0ZSk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVhZE9ubHlBdHRyaWJ1
dGVDaGFuZ2VkKCkKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OnJlYWRPbmx5QXR0cmlidXRlQ2hhbmdlZCgpCiAgICAgc2V0TmVlZHNXaWxsVmFsaWRhdGVD
aGVjaygpOwogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICBpZiAocmVuZGVyZXIoKSAm
JiByZW5kZXJlcigpLT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgcmVuZGVyZXIo
KS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CisgICAg
ICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIENvbnRyb2xT
dGF0ZXM6OlJlYWRPbmx5U3RhdGUpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAppbmRleCA1OGE5NDBjZDYxMGU5MDI1ODE5MzAyZmViMjg3ZTNkMjRlMGRiN2E4
Li44MDQwNjljZTQzNzRmYjY5ZDAzMTE1ZDU1ZGU3MjY4OGYwM2Q1NWFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTg1OSw3ICs4NTksNyBAQCB2b2lkIEhU
TUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQoYm9vbCBub3dDaGVja2VkLCBUZXh0RmllbGRFdmVu
dEJlaGF2aW9yIGV2ZW50QgogICAgIGlmIChDaGVja2VkUmFkaW9CdXR0b25zKiBidXR0b25zID0g
Y2hlY2tlZFJhZGlvQnV0dG9ucygpKQogICAgICAgICAgICAgYnV0dG9ucy0+dXBkYXRlQ2hlY2tl
ZFN0YXRlKHRoaXMpOwogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCku
aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdl
ZChyZW5kZXJlcigpLCBDaGVja2VkU3RhdGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgp
LnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGUpOwog
ICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwogCiAgICAgLy8gSWRlYWxseSB3ZSdkIGRvIHRo
aXMgZnJvbSB0aGUgcmVuZGVyIHRyZWUgKG1hdGNoaW5nCkBAIC04OTMsNyArODkzLDcgQEAgdm9p
ZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRJbmRldGVybWluYXRlKGJvb2wgbmV3VmFsdWUpCiAgICAg
ZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3RvckluZGV0ZXJtaW5hdGUpOwogCiAgICAg
aWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0g
ICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIENoZWNr
ZWRTdGF0ZSk7CisgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRl
cmVyKCksIENvbnRyb2xTdGF0ZXM6OkNoZWNrZWRTdGF0ZSk7CiB9CiAKIGludCBIVE1MSW5wdXRF
bGVtZW50OjpzaXplKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5jcHAKaW5kZXggOWUzNmZhOWNmNGQ2NjFhYWYwYmMzYmRkZjM3ZTllNTEyNGRkM2E4MS4uNDlm
NDhiZjM4MWU5YjQ1MDQ5NDRmYmEwNTQwNWE5OWQ0NzkzMTY5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIEhUTUxP
cHRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdAogICAgICAgICBpZiAob2xkRGlzYWJsZWQgIT0gbV9kaXNhYmxlZCkgewog
ICAgICAgICAgICAgZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3RvckRpc2FibGVkIHwg
QWZmZWN0ZWRTZWxlY3RvckVuYWJsZWQpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYg
cmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgcmVu
ZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgRW5hYmxlZFN0YXRlKTsK
KyAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJl
cigpLCBDb250cm9sU3RhdGVzOjpFbmFibGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfSBlbHNl
IGlmIChuYW1lID09IHNlbGVjdGVkQXR0cikgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2Vz
bid0IG1hdGNoIHdoYXQgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBzYXlzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udHJvbFN0YXRlcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ29udHJvbFN0YXRlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiNDdmNTlhMjQwNDMxZTFmNzMy
ZjA4MmI3ZDdkN2M2YWExYjFiMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Db250cm9sU3RhdGVzLmgKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvbnRyb2xTdGF0ZXNfaAor
I2RlZmluZSBDb250cm9sU3RhdGVzX2gKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWZuZGVmIF9fT0JKQ19fCit0eXBlZGVmIHN0cnVjdCBv
YmpjX29iamVjdCAqaWQ7CisjZW5kaWYKKwordHlwZWRlZiBpZCBQbGF0Zm9ybUNvbnRyb2xJbnN0
YW5jZTsKKworY2xhc3MgQ29udHJvbFN0YXRlcyB7CitwdWJsaWM6CisgICAgZW51bSB7CisgICAg
ICAgIEhvdmVyU3RhdGUgPSAxLAorICAgICAgICBQcmVzc2VkU3RhdGUgPSAxIDw8IDEsCisgICAg
ICAgIEZvY3VzU3RhdGUgPSAxIDw8IDIsCisgICAgICAgIEVuYWJsZWRTdGF0ZSA9IDEgPDwgMywK
KyAgICAgICAgQ2hlY2tlZFN0YXRlID0gMSA8PCA0LAorICAgICAgICBSZWFkT25seVN0YXRlID0g
MSA8PCA1LAorICAgICAgICBEZWZhdWx0U3RhdGUgPSAxIDw8IDYsCisgICAgICAgIFdpbmRvd0lu
YWN0aXZlU3RhdGUgPSAxIDw8IDcsCisgICAgICAgIEluZGV0ZXJtaW5hdGVTdGF0ZSA9IDEgPDwg
OCwKKyAgICAgICAgU3BpblVwU3RhdGUgPSAxIDw8IDksIC8vIFN1Yi1zdGF0ZSBmb3IgSG92ZXJT
dGF0ZSBhbmQgUHJlc3NlZFN0YXRlLgorICAgICAgICBBbGxTdGF0ZXMgPSAweGZmZmZmZmZmCisg
ICAgfTsKKworICAgIHR5cGVkZWYgdW5zaWduZWQgU3RhdGVzOworCisgICAgQ29udHJvbFN0YXRl
cyhTdGF0ZXMgc3RhdGVzKQorICAgICAgICA6IG1fc3RhdGVzKHN0YXRlcykKKyAgICAgICAgLCBt
X2luaXRpYWxpemVkKGZhbHNlKQorICAgICAgICAsIG1fbmVlZHNSZXBhaW50KGZhbHNlKQorICAg
ICAgICAsIG1faXNEaXJ0eShmYWxzZSkKKyAgICAgICAgLCBtX2NvbnRyb2xJbnN0YW5jZShudWxs
cHRyKQorICAgIHsKKyAgICB9CisKKyAgICBDb250cm9sU3RhdGVzKCkKKyAgICAgICAgOiBDb250
cm9sU3RhdGVzKDApCisgICAgeworICAgIH0KKworICAgIH5Db250cm9sU3RhdGVzKCkKKyAgICB7
CisgICAgfQorCisgICAgU3RhdGVzIHN0YXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVzOyB9
CisgICAgdm9pZCBzZXRTdGF0ZXMoU3RhdGVzIG5ld1N0YXRlcykKKyAgICB7CisgICAgICAgIGlm
IChuZXdTdGF0ZXMgPT0gbV9zdGF0ZXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
c3RhdGVzID0gbmV3U3RhdGVzOworICAgICAgICBtX2lzRGlydHkgPSBtX2luaXRpYWxpemVkOwor
ICAgICAgICBtX2luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIG5lZWRzUmVw
YWludCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNSZXBhaW50OyB9CisgICAgdm9pZCBzZXROZWVk
c1JlcGFpbnQoYm9vbCByKSB7IG1fbmVlZHNSZXBhaW50ID0gcjsgfQorCisgICAgYm9vbCBpc0Rp
cnR5KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcnR5OyB9CisgICAgdm9pZCBzZXREaXJ0eShib29s
IGQpIHsgbV9pc0RpcnR5ID0gZDsgfQorCisgICAgUGxhdGZvcm1Db250cm9sSW5zdGFuY2UgcGxh
dGZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gbV9jb250cm9sSW5zdGFuY2UuZ2V0KCk7IH0K
KyAgICB2b2lkIHNldFBsYXRmb3JtQ29udHJvbChQbGF0Zm9ybUNvbnRyb2xJbnN0YW5jZSBpbnN0
YW5jZSkgeyBtX2NvbnRyb2xJbnN0YW5jZSA9IGluc3RhbmNlOyB9CisKK3ByaXZhdGU6CisgICAg
U3RhdGVzIG1fc3RhdGVzOworICAgIGJvb2wgbV9pbml0aWFsaXplZDsKKyAgICBib29sIG1fbmVl
ZHNSZXBhaW50OworICAgIGJvb2wgbV9pc0RpcnR5OworICAgIFJldGFpblB0cjxQbGF0Zm9ybUNv
bnRyb2xJbnN0YW5jZT4gbV9jb250cm9sSW5zdGFuY2U7Cit9OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RoZW1lLmgKaW5kZXggNTA1MDQ2YzRkZTg3ZWM2YWRlYjNiODE4ZWFlY2QwOTdi
YmFmMGMzZS4uZmIwMWE3YTFjNWU0ODE2YTZlMDQ1MDNhNjI3NTEzMDI2ZDI0YThjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFRoZW1lX2gKIAog
I2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5oIgogI2luY2x1ZGUg
IkZvbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGVuZ3RoQm94LmgiCkBA
IC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY29udHJvbERyYXdzRm9j
dXNPdXRsaW5lKENvbnRyb2xQYXJ0KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAvLyBN
ZXRob2RzIGZvciBvYnRhaW5pbmcgcGxhdGZvcm0tc3BlY2lmaWMgY29sb3JzLgotICAgIHZpcnR1
YWwgQ29sb3Igc2VsZWN0aW9uQ29sb3IoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZSwgU2VsZWN0
aW9uUGFydCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQorICAgIHZpcnR1YWwgQ29sb3Igc2Vs
ZWN0aW9uQ29sb3IoQ29udHJvbFBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqLCBTZWxlY3Rpb25Q
YXJ0KSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9CiAgICAgdmlydHVhbCBDb2xvciB0ZXh0U2Vh
cmNoSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9CiAgICAgCiAgICAg
Ly8gQ1NTIHN5c3RlbSBjb2xvcnMgYW5kIGZvbnRzCkBAIC05NywxMyArOTgsMTMgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBjb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKENvbnRyb2xQ
YXJ0KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gTWV0aG9kIGZvciBwYWludGlu
ZyBhIGNvbnRyb2wuIFRoZSByZWN0IGlzIGluIHpvb21lZCBjb29yZGluYXRlcy4KLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEludFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21GYWN0b3IqLywg
U2Nyb2xsVmlldyopIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFy
dCwgQ29udHJvbFN0YXRlcyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIC8qem9v
bWVkUmVjdCovLCBmbG9hdCAvKnpvb21GYWN0b3IqLywgU2Nyb2xsVmlldyopIHsgfQogCiAgICAg
Ly8gU29tZSBjb250cm9scyBtYXkgc3BpbGwgb3V0IG9mIHRoZWlyIGNvbnRhaW5lcnMgKGUuZy4s
IHRoZSBjaGVjayBvbiBhbiBPUyBYIGNoZWNrYm94KS4gIFdoZW4gdGhlc2UgY29udHJvbHMgcmVw
YWludCwKICAgICAvLyB0aGUgdGhlbWUgbmVlZHMgdG8gY29tbXVuaWNhdGUgdGhpcyBpbmZsYXRl
ZCByZWN0IHRvIHRoZSBlbmdpbmUgc28gdGhhdCBpdCBjYW4gaW52YWxpZGF0ZSB0aGUgd2hvbGUg
Y29udHJvbC4KICAgICAvLyBUaGUgcmVjdCBwYXNzZWQgaW4gaXMgaW4gem9vbWVkIGNvb3JkaW5h
dGVzLCBzbyB0aGUgaW5mbGF0aW9uIHNob3VsZCB0YWtlIHRoYXQgaW50byBhY2NvdW50IGFuZCBt
YWtlIHN1cmUgdGhlIGluZmxhdGlvbgogICAgIC8vIGFtb3VudCBpcyBhbHNvIHNjYWxlZCBieSB0
aGUgem9vbUZhY3Rvci4KLSAgICB2aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWludFJlY3Qo
Q29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMsIEludFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9h
dCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyB9CisgICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250
cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzKiwgSW50UmVjdCYg
Lyp6b29tZWRSZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovKSBjb25zdCB7IH0KICAgICAKICAg
ICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb25jZSwgZnJvbSBSZW5kZXJUaGVtZTo6YWRqdXN0
RGVmYXVsdFN0eWxlU2hlZXQoKSwgdG8gbGV0IGVhY2ggcGxhdGZvcm0gYWRqdXN0CiAgICAgLy8g
dGhlIGRlZmF1bHQgQ1NTIHJ1bGVzIGluIGh0bWwuY3NzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhl
bWVUeXBlcy5oCmluZGV4IGQ4YWIxOGZmYWM5YjUwNGZmN2Y5YWY4YTAwNDkzOWEwMDExNTZjYjEu
Ljk3M2U3NzQ2MGJlYzY1MmNhY2EwZGVkM2Y1NmY4YmY5NGE1NjdjNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaGVtZVR5cGVzLmgKQEAgLTI4LDIyICsyOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotZW51bSBDb250cm9sU3RhdGUgewotICAgIEhvdmVyU3RhdGUgPSAxLAotICAgIFBy
ZXNzZWRTdGF0ZSA9IDEgPDwgMSwKLSAgICBGb2N1c1N0YXRlID0gMSA8PCAyLAotICAgIEVuYWJs
ZWRTdGF0ZSA9IDEgPDwgMywKLSAgICBDaGVja2VkU3RhdGUgPSAxIDw8IDQsCi0gICAgUmVhZE9u
bHlTdGF0ZSA9IDEgPDwgNSwKLSAgICBEZWZhdWx0U3RhdGUgPSAxIDw8IDYsCi0gICAgV2luZG93
SW5hY3RpdmVTdGF0ZSA9IDEgPDwgNywKLSAgICBJbmRldGVybWluYXRlU3RhdGUgPSAxIDw8IDgs
Ci0gICAgU3BpblVwU3RhdGUgPSAxIDw8IDksIC8vIFN1Yi1zdGF0ZSBmb3IgSG92ZXJTdGF0ZSBh
bmQgUHJlc3NlZFN0YXRlLgotICAgIEFsbFN0YXRlcyA9IDB4ZmZmZmZmZmYKLX07Ci0KLXR5cGVk
ZWYgdW5zaWduZWQgQ29udHJvbFN0YXRlczsKLQogLy8gTXVzdCBmb2xsb3cgQ1NTVmFsdWVLZXl3
b3Jkcy5pbiBvcmRlcgogZW51bSBDb250cm9sUGFydCB7CiAgICAgTm9Db250cm9sUGFydCwgQ2hl
Y2tib3hQYXJ0LCBSYWRpb1BhcnQsIFB1c2hCdXR0b25QYXJ0LCBTcXVhcmVCdXR0b25QYXJ0LCBC
dXR0b25QYXJ0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRl
clRoZW1lRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVm
bC5jcHAKaW5kZXggZjg2NDc4NTkxNzUyMzc0Y2JkZGMwNTRmMzY4YzAxNDgyNjM3ZDNlYi4uZjlk
MjFjOTk2ZjhmM2YzMDU0NjA2MzY2NTExYTA5OThmOTA2NGI0OSAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCkBAIC0yOTYsNyArMjk2LDcgQEAg
dm9pZCBSZW5kZXJUaGVtZUVmbDo6Y2xlYXJUaGVtZVBhcnRDYWNoZSgpCiAKIH0KIAotdm9pZCBS
ZW5kZXJUaGVtZUVmbDo6YXBwbHlFZGplU3RhdGVGcm9tRm9ybShFdmFzX09iamVjdCogb2JqZWN0
LCBDb250cm9sU3RhdGVzIHN0YXRlcywgYm9vbCBoYXZlQmFja2dyb3VuZCkKK3ZvaWQgUmVuZGVy
VGhlbWVFZmw6OmFwcGx5RWRqZVN0YXRlRnJvbUZvcm0oRXZhc19PYmplY3QqIG9iamVjdCwgY29u
c3QgQ29udHJvbFN0YXRlcyogc3RhdGVzLCBib29sIGhhdmVCYWNrZ3JvdW5kKQogewogICAgIGNv
bnN0IGNoYXIgKnNpZ25hbHNbXSA9IHsgLy8ga2VlcCBpbiBzeW5jIHdpdGggV2ViQ29yZS9wbGF0
Zm9ybS9UaGVtZVR5cGVzLmgKICAgICAgICAgImhvdmVyZWQiLApAQCAtMzE0LDcgKzMxNCw3IEBA
IHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5RWRqZVN0YXRlRnJvbUZvcm0oRXZhc19PYmplY3Qq
IG9iamVjdCwgQ29udHJvbFN0YXRlcyBzCiAgICAgZWRqZV9vYmplY3Rfc2lnbmFsX2VtaXQob2Jq
ZWN0LCAicmVzZXQiLCAiIik7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJB
WV9MRU5HVEgoc2lnbmFscyk7ICsraSkgewotICAgICAgICBpZiAoc3RhdGVzICYgKDEgPDwgaSkp
CisgICAgICAgIGlmIChzdGF0ZXMtPnN0YXRlcygpICYgKDEgPDwgaSkpCiAgICAgICAgICAgICBl
ZGplX29iamVjdF9zaWduYWxfZW1pdChvYmplY3QsIHNpZ25hbHNbaV0sICIiKTsKICAgICB9CiAK
QEAgLTM4Myw3ICszODMsOCBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFRoZW1lUGFydChS
ZW5kZXJPYmplY3QqIG9iamVjdCwgRm9ybVR5cGUgdHlwZSwgY29uc3QgUAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBib29sIGhhdmVCYWNrZ3JvdW5kQ29sb3IgPSBpc0NvbnRyb2xTdHls
ZWQoJm9iamVjdC0+c3R5bGUoKSwgb2JqZWN0LT5zdHlsZSgpLmJvcmRlcigpLCAqb2JqZWN0LT5z
dHlsZSgpLmJhY2tncm91bmRMYXllcnMoKSwgQ29sb3I6OndoaXRlKTsKLSAgICBhcHBseUVkamVT
dGF0ZUZyb21Gb3JtKGVudHJ5LT5lZGplKCksIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvYmpl
Y3QpLCBoYXZlQmFja2dyb3VuZENvbG9yKTsKKyAgICBDb250cm9sU3RhdGVzIHN0YXRlcyhleHRy
YWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG9iamVjdCkpOworICAgIGFwcGx5RWRqZVN0YXRl
RnJvbUZvcm0oZW50cnktPmVkamUoKSwgJnN0YXRlcywgaGF2ZUJhY2tncm91bmRDb2xvcik7CiAK
ICAgICBhcHBseUVkamVSVExTdGF0ZShlbnRyeS0+ZWRqZSgpLCBvYmplY3QsIHR5cGUsIHJlY3Qp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVF
ZmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oCmluZGV4
IGU2ZGEwNGVkMjE3MzlkNTUwYWJmZTFmZjJjNmYxYmVlODE5MjRkMDIuLjAwZjBiYjdjNTZjYWMz
ZWQ0MGNmMzI5ZjFhYTBlMjhkMzM3ODJlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9SZW5kZXJUaGVtZUVmbC5oCkBAIC0yMjksNyArMjI5LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgYXBwbHlQYXJ0RGVzY3JpcHRpb25zRnJvbShjb25zdCBTdHJpbmcmIHRoZW1lUGF0aCk7
CiAKLSAgICB2b2lkIGFwcGx5RWRqZVN0YXRlRnJvbUZvcm0oRXZhc19PYmplY3QqLCBDb250cm9s
U3RhdGVzLCBib29sKTsKKyAgICB2b2lkIGFwcGx5RWRqZVN0YXRlRnJvbUZvcm0oRXZhc19PYmpl
Y3QqLCBjb25zdCBDb250cm9sU3RhdGVzKiwgYm9vbCk7CiAgICAgdm9pZCBhcHBseUVkamVSVExT
dGF0ZShFdmFzX09iamVjdCosIFJlbmRlck9iamVjdCosIEZvcm1UeXBlLCBjb25zdCBJbnRSZWN0
Jik7CiAgICAgYm9vbCBwYWludFRoZW1lUGFydChSZW5kZXJPYmplY3QqLCBGb3JtVHlwZSwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9UaGVtZU1hYy5oCmluZGV4IDhiN2U5ODIyZGZiNTQxZDkzMDQyM2E0ZjU3YzcxZmFlYzA5NThl
MzAuLmQ3Mzk1MjM2MGI0MDQ2YjZmNzFlMzc0YmFiMjRlYzczZGVhZmI1ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oCkBAIC01MSwxMSArNTEsMTEgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIGNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBh
cnQgcGFydCkgY29uc3QgeyByZXR1cm4gcGFydCA9PSBQdXNoQnV0dG9uUGFydDsgfQogCi0gICAg
dmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzLCBHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0JiwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyopIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFy
dCwgQ29udHJvbFN0YXRlcywgSW50UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyosIEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEludFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3Kikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRy
b2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzKiwgSW50UmVjdCYsIGZsb2F0IHpvb21GYWN0b3Ip
IGNvbnN0OwogCiAgICAgLy8gRklYTUU6IE9uY2UgUmVuZGVyVGhlbWVNYWMgaXMgY29udmVydGVk
IG92ZXIgdG8gdXNlIFRoZW1lIHRoZW4gdGhpcyBjYW4gYmUgaW50ZXJuYWwgdG8gVGhlbWVNYWMu
Ci0gICAgc3RhdGljIE5TVmlldyogZW5zdXJlZFZpZXcoU2Nyb2xsVmlldyosIENvbnRyb2xTdGF0
ZXMpOworICAgIHN0YXRpYyBOU1ZpZXcqIGVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqLCBjb25zdCBD
b250cm9sU3RhdGVzKik7CiAgICAgc3RhdGljIHZvaWQgc2V0Rm9jdXNSaW5nQ2xpcFJlY3QoY29u
c3QgRmxvYXRSZWN0Jik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMu
bW0KaW5kZXggODQ1MjVjY2RmN2JjNDM1YjgwODYxMjE3YTBhMWUwYmYwYWNjNjNjYS4uNzVjMDY4
NmJjMDc1ZTVkY2M0NzFjMWY1Y2Q4OGE0MmYwODJlMWZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtMzUsNiArMzUsMTUgQEAKICNpbXBvcnQgPENhcmJvbi9D
YXJib24uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKKyNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwCitAaW50ZXJmYWNlIE5TQnV0dG9uQ2VsbChE
ZXRhaWxzKQorLSAodm9pZClfc2V0U3RhdGU6KE5TSW50ZWdlcil2YWx1ZSBhbmltYXRlZDooQk9P
TClhbmltYXRlZDsKKy0gKHZvaWQpX3NldEhpZ2hsaWdodGVkOihCT09MKWZsYWcgYW5pbWF0ZWQ6
KEJPT0wpYW5pbWF0ZWQ7CistICh2b2lkKV9yZW5kZXJDdXJyZW50QW5pbWF0aW9uRnJhbWVJbkNv
bnRleHQ6KENHQ29udGV4dFJlZiljdHh0IGF0TG9jYXRpb246KE5TUG9pbnQpd2hlcmU7CistIChC
T09MKV9zdGF0ZUFuaW1hdGlvblJ1bm5pbmc7CitAZW5kCisjZW5kaWYKKwogc3RhdGljIE5TUmVj
dCBmb2N1c1JpbmdDbGlwUmVjdDsKIHN0YXRpYyBCT09MIHRoZW1lV2luZG93SGFzS2V5QXBwZWFy
YW5jZTsKIApAQCAtOTcsNiArMTA2LDEyIEBAIHN0YXRpYyBCT09MIHRoZW1lV2luZG93SGFzS2V5
QXBwZWFyYW5jZTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAorLSAodm9pZClhZGRTdWJ2aWV3OihO
U1ZpZXcqKXN1YnZpZXcKK3sKKyAgICAvLyBCeSBkb2luZyBub3RoaW5nIGluIHRoaXMgbWV0aG9k
IHdlIGZvcmJpZCBjb250cm9scyBmcm9tIGFkZGluZyBzdWJ2aWV3cy4KKyAgICAvLyBUaGlzIHRl
bGxzIEFwcEtpdCB0byBub3QgdXNlIExheWVyLWJhY2tlZCBhbmltYXRpb24gZm9yIGNvbnRyb2wg
cmVuZGVyaW5nLgorICAgIFVOVVNFRF9QQVJBTShzdWJ2aWV3KTsKK30KIEBlbmQKIAogQGltcGxl
bWVudGF0aW9uIE5TRm9udCAoV2ViQ29yZVRoZW1lKQpAQCAtMTc2LDQ1ICsxOTEsNTYgQEAgc3Rh
dGljIHZvaWQgc2V0Q29udHJvbFNpemUoTlNDZWxsKiBjZWxsLCBjb25zdCBJbnRTaXplKiBzaXpl
cywgY29uc3QgSW50U2l6ZSYgbWkKICAgICAgICAgW2NlbGwgc2V0Q29udHJvbFNpemU6KE5TQ29u
dHJvbFNpemUpc2l6ZV07CiB9CiAKLXN0YXRpYyB2b2lkIHVwZGF0ZVN0YXRlcyhOU0NlbGwqIGNl
bGwsIENvbnRyb2xTdGF0ZXMgc3RhdGVzKQorc3RhdGljIHZvaWQgdXBkYXRlU3RhdGVzKE5TQ2Vs
bCogY2VsbCwgY29uc3QgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcywgYm9vbCB1c2VBbmlt
YXRpb24gPSBmYWxzZSkKIHsKKyAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMgc3RhdGVzID0gY29u
dHJvbFN0YXRlcy0+c3RhdGVzKCk7CisKICAgICAvLyBIb3ZlciBzdGF0ZSBpcyBub3Qgc3VwcG9y
dGVkIGJ5IEFxdWEuCiAgICAgCiAgICAgLy8gUHJlc3NlZCBzdGF0ZQogICAgIGJvb2wgb2xkUHJl
c3NlZCA9IFtjZWxsIGlzSGlnaGxpZ2h0ZWRdOwotICAgIGJvb2wgcHJlc3NlZCA9IHN0YXRlcyAm
IFByZXNzZWRTdGF0ZTsKKyAgICBib29sIHByZXNzZWQgPSBzdGF0ZXMgJiBDb250cm9sU3RhdGVz
OjpQcmVzc2VkU3RhdGU7CiAgICAgaWYgKHByZXNzZWQgIT0gb2xkUHJlc3NlZCkKICAgICAgICAg
W2NlbGwgc2V0SGlnaGxpZ2h0ZWQ6cHJlc3NlZF07CiAgICAgCiAgICAgLy8gRW5hYmxlZCBzdGF0
ZQogICAgIGJvb2wgb2xkRW5hYmxlZCA9IFtjZWxsIGlzRW5hYmxlZF07Ci0gICAgYm9vbCBlbmFi
bGVkID0gc3RhdGVzICYgRW5hYmxlZFN0YXRlOworICAgIGJvb2wgZW5hYmxlZCA9IHN0YXRlcyAm
IENvbnRyb2xTdGF0ZXM6OkVuYWJsZWRTdGF0ZTsKICAgICBpZiAoZW5hYmxlZCAhPSBvbGRFbmFi
bGVkKQogICAgICAgICBbY2VsbCBzZXRFbmFibGVkOmVuYWJsZWRdOwogCiAgICAgLy8gQ2hlY2tl
ZCBhbmQgSW5kZXRlcm1pbmF0ZQogICAgIGJvb2wgb2xkSW5kZXRlcm1pbmF0ZSA9IFtjZWxsIHN0
YXRlXSA9PSBOU01peGVkU3RhdGU7Ci0gICAgYm9vbCBpbmRldGVybWluYXRlID0gKHN0YXRlcyAm
IEluZGV0ZXJtaW5hdGVTdGF0ZSk7Ci0gICAgYm9vbCBjaGVja2VkID0gc3RhdGVzICYgQ2hlY2tl
ZFN0YXRlOworICAgIGJvb2wgaW5kZXRlcm1pbmF0ZSA9IChzdGF0ZXMgJiBDb250cm9sU3RhdGVz
OjpJbmRldGVybWluYXRlU3RhdGUpOworICAgIGJvb2wgY2hlY2tlZCA9IHN0YXRlcyAmIENvbnRy
b2xTdGF0ZXM6OkNoZWNrZWRTdGF0ZTsKICAgICBib29sIG9sZENoZWNrZWQgPSBbY2VsbCBzdGF0
ZV0gPT0gTlNPblN0YXRlOwotICAgIGlmIChvbGRJbmRldGVybWluYXRlICE9IGluZGV0ZXJtaW5h
dGUgfHwgY2hlY2tlZCAhPSBvbGRDaGVja2VkKQotICAgICAgICBbY2VsbCBzZXRTdGF0ZTppbmRl
dGVybWluYXRlID8gTlNNaXhlZFN0YXRlIDogKGNoZWNrZWQgPyBOU09uU3RhdGUgOiBOU09mZlN0
YXRlKV07Ci0gICAgICAgIAorICAgIGlmIChvbGRJbmRldGVybWluYXRlICE9IGluZGV0ZXJtaW5h
dGUgfHwgY2hlY2tlZCAhPSBvbGRDaGVja2VkKSB7CisgICAgICAgIE5TQ2VsbFN0YXRlVmFsdWUg
bmV3U3RhdGUgPSBpbmRldGVybWluYXRlID8gTlNNaXhlZFN0YXRlIDogKGNoZWNrZWQgPyBOU09u
U3RhdGUgOiBOU09mZlN0YXRlKTsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTAwCisgICAgICAgIFsoTlNCdXR0b25DZWxsKiljZWxsIF9zZXRTdGF0ZTpuZXdTdGF0
ZSBhbmltYXRlZDp1c2VBbmltYXRpb25dOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHVz
ZUFuaW1hdGlvbik7CisgICAgICAgIFtjZWxsIHNldFN0YXRlOm5ld1N0YXRlXTsKKyNlbmRpZgor
ICAgIH0KKwogICAgIC8vIFdpbmRvdyBpbmFjdGl2ZSBzdGF0ZSBkb2VzIG5vdCBuZWVkIHRvIGJl
IGNoZWNrZWQgZXhwbGljaXRseSwgc2luY2Ugd2UgcGFpbnQgcGFyZW50ZWQgdG8gCiAgICAgLy8g
YSB2aWV3IGluIGEgd2luZG93IHdob3NlIGtleSBzdGF0ZSBjYW4gYmUgZGV0ZWN0ZWQuCiB9CiAK
LXN0YXRpYyBUaGVtZURyYXdTdGF0ZSBjb252ZXJ0Q29udHJvbFN0YXRlc1RvVGhlbWVEcmF3U3Rh
dGUoVGhlbWVCdXR0b25LaW5kIGtpbmQsIENvbnRyb2xTdGF0ZXMgc3RhdGVzKQorc3RhdGljIFRo
ZW1lRHJhd1N0YXRlIGNvbnZlcnRDb250cm9sU3RhdGVzVG9UaGVtZURyYXdTdGF0ZShUaGVtZUJ1
dHRvbktpbmQga2luZCwgY29uc3QgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcykKIHsKLSAg
ICBpZiAoc3RhdGVzICYgUmVhZE9ubHlTdGF0ZSkKKyAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMg
c3RhdGVzID0gY29udHJvbFN0YXRlcy0+c3RhdGVzKCk7CisKKyAgICBpZiAoc3RhdGVzICYgQ29u
dHJvbFN0YXRlczo6UmVhZE9ubHlTdGF0ZSkKICAgICAgICAgcmV0dXJuIGtUaGVtZVN0YXRlVW5h
dmFpbGFibGVJbmFjdGl2ZTsKLSAgICBpZiAoIShzdGF0ZXMgJiBFbmFibGVkU3RhdGUpKQorICAg
IGlmICghKHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OkVuYWJsZWRTdGF0ZSkpCiAgICAgICAgIHJl
dHVybiBrVGhlbWVTdGF0ZVVuYXZhaWxhYmxlSW5hY3RpdmU7CiAKICAgICAvLyBEbyBub3QgcHJv
Y2VzcyBQcmVzc2VkU3RhdGUgaWYgIUVuYWJsZWRTdGF0ZSBvciBSZWFkT25seVN0YXRlLgotICAg
IGlmIChzdGF0ZXMgJiBQcmVzc2VkU3RhdGUpIHsKKyAgICBpZiAoc3RhdGVzICYgQ29udHJvbFN0
YXRlczo6UHJlc3NlZFN0YXRlKSB7CiAgICAgICAgIGlmIChraW5kID09IGtUaGVtZUluY0RlY0J1
dHRvbiB8fCBraW5kID09IGtUaGVtZUluY0RlY0J1dHRvblNtYWxsIHx8IGtpbmQgPT0ga1RoZW1l
SW5jRGVjQnV0dG9uTWluaSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZXMgJiBTcGluVXBTdGF0
ZSA/IGtUaGVtZVN0YXRlUHJlc3NlZFVwIDoga1RoZW1lU3RhdGVQcmVzc2VkRG93bjsKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpTcGluVXBTdGF0ZSA/IGtUaGVt
ZVN0YXRlUHJlc3NlZFVwIDoga1RoZW1lU3RhdGVQcmVzc2VkRG93bjsKICAgICAgICAgcmV0dXJu
IGtUaGVtZVN0YXRlUHJlc3NlZDsKICAgICB9CiAgICAgcmV0dXJuIGtUaGVtZVN0YXRlQWN0aXZl
OwpAQCAtMjY2LDM0ICsyOTIsNTQgQEAgc3RhdGljIExlbmd0aFNpemUgY2hlY2tib3hTaXplKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IExlbmd0aFNpemUmIHpvb21lZFNpemUsIGYKICAgICAvLyBV
c2UgdGhlIGZvbnQgc2l6ZSB0byBkZXRlcm1pbmUgdGhlIGludHJpbnNpYyB3aWR0aCBvZiB0aGUg
Y29udHJvbC4KICAgICByZXR1cm4gc2l6ZUZyb21Gb250KGZvbnQsIHpvb21lZFNpemUsIHpvb21G
YWN0b3IsIGNoZWNrYm94U2l6ZXMoKSk7CiB9Ci0KLXN0YXRpYyBOU0J1dHRvbkNlbGwgKmNoZWNr
Ym94KENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9h
dCB6b29tRmFjdG9yKQotewotICAgIHN0YXRpYyBOU0J1dHRvbkNlbGwgKmNoZWNrYm94Q2VsbDsK
LSAgICBpZiAoIWNoZWNrYm94Q2VsbCkgewotICAgICAgICBjaGVja2JveENlbGwgPSBbW05TQnV0
dG9uQ2VsbCBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtjaGVja2JveENlbGwgc2V0QnV0dG9uVHlw
ZTpOU1N3aXRjaEJ1dHRvbl07Ci0gICAgICAgIFtjaGVja2JveENlbGwgc2V0VGl0bGU6bmlsXTsK
LSAgICAgICAgW2NoZWNrYm94Q2VsbCBzZXRBbGxvd3NNaXhlZFN0YXRlOllFU107Ci0gICAgICAg
IFtjaGVja2JveENlbGwgc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07
Ci0gICAgfQogICAgIAorc3RhdGljIHZvaWQgY29uZmlndXJlQ2hlY2tib3goTlNDZWxsKiBjZWxs
LCBjb25zdCBDb250cm9sU3RhdGVzKiBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3Qs
IGZsb2F0IHpvb21GYWN0b3IsIGJvb2wgaXNTdGF0ZUNoYW5nZSkKK3sKICAgICAvLyBTZXQgdGhl
IGNvbnRyb2wgc2l6ZSBiYXNlZCBvZmYgdGhlIHJlY3RhbmdsZSB3ZSdyZSBwYWludGluZyBpbnRv
LgotICAgIHNldENvbnRyb2xTaXplKGNoZWNrYm94Q2VsbCwgY2hlY2tib3hTaXplcygpLCB6b29t
ZWRSZWN0LnNpemUoKSwgem9vbUZhY3Rvcik7CisgICAgc2V0Q29udHJvbFNpemUoY2VsbCwgY2hl
Y2tib3hTaXplcygpLCB6b29tZWRSZWN0LnNpemUoKSwgem9vbUZhY3Rvcik7CiAKICAgICAvLyBV
cGRhdGUgdGhlIHZhcmlvdXMgc3RhdGVzIHdlIHJlc3BvbmQgdG8uCi0gICAgdXBkYXRlU3RhdGVz
KGNoZWNrYm94Q2VsbCwgc3RhdGVzKTsKKyAgICB1cGRhdGVTdGF0ZXMoY2VsbCwgc3RhdGVzLCBp
c1N0YXRlQ2hhbmdlKTsKK30KICAgICAKK3N0YXRpYyBOU0J1dHRvbkNlbGwgKmNyZWF0ZUNoZWNr
Ym94Q2VsbCgpCit7CisgICAgTlNCdXR0b25DZWxsICpjaGVja2JveENlbGwgPSBbW05TQnV0dG9u
Q2VsbCBhbGxvY10gaW5pdF07CisgICAgW2NoZWNrYm94Q2VsbCBzZXRCdXR0b25UeXBlOk5TU3dp
dGNoQnV0dG9uXTsKKyAgICBbY2hlY2tib3hDZWxsIHNldFRpdGxlOm5pbF07CisgICAgW2NoZWNr
Ym94Q2VsbCBzZXRBbGxvd3NNaXhlZFN0YXRlOllFU107CisgICAgW2NoZWNrYm94Q2VsbCBzZXRG
b2N1c1JpbmdUeXBlOk5TRm9jdXNSaW5nVHlwZUV4dGVyaW9yXTsKICAgICByZXR1cm4gY2hlY2ti
b3hDZWxsOwogfQogCitzdGF0aWMgTlNCdXR0b25DZWxsICpzaGFyZWRDaGVja2JveENlbGwoY29u
c3QgQ29udHJvbFN0YXRlcyogc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9h
dCB6b29tRmFjdG9yKQoreworICAgIHN0YXRpYyBOU0J1dHRvbkNlbGwgKmNoZWNrYm94Q2VsbDsK
KyAgICBpZiAoIWNoZWNrYm94Q2VsbCkKKyAgICAgICAgY2hlY2tib3hDZWxsID0gY3JlYXRlQ2hl
Y2tib3hDZWxsKCk7CisKKyAgICBjb25maWd1cmVDaGVja2JveChjaGVja2JveENlbGwsIHN0YXRl
cywgem9vbWVkUmVjdCwgem9vbUZhY3RvciwgZmFsc2UpOworICAgIHJldHVybiBjaGVja2JveENl
bGw7Cit9CisgICAgCiAvLyBGSVhNRTogU2hhcmUgbW9yZSBjb2RlIHdpdGggcmFkaW8gYnV0dG9u
cy4KLXN0YXRpYyB2b2lkIHBhaW50Q2hlY2tib3goQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9v
bUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldykKK3N0YXRpYyB2b2lkIHBhaW50Q2hlY2ti
b3goQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3
KiBzY3JvbGxWaWV3KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCi0gICAg
Ly8gRGV0ZXJtaW5lIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG5lZWRlZCBmb3IgdGhlIGNvbnRyb2wg
YW5kIHByZXBhcmUgdGhlIGNlbGwgZm9yIHBhaW50aW5nLgotICAgIE5TQnV0dG9uQ2VsbCAqY2hl
Y2tib3hDZWxsID0gY2hlY2tib3goc3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsKKyAg
ICBOU0J1dHRvbkNlbGwgKmNoZWNrYm94Q2VsbCA9IHN0YXRpY19jYXN0PE5TQnV0dG9uQ2VsbCo+
KGNvbnRyb2xTdGF0ZXMtPnBsYXRmb3JtQ29udHJvbCgpKTsKKworICAgIGlmIChjb250cm9sU3Rh
dGVzLT5pc0RpcnR5KCkpIHsKKyAgICAgICAgaWYgKCFjaGVja2JveENlbGwpCisgICAgICAgICAg
ICBjaGVja2JveENlbGwgPSBjcmVhdGVDaGVja2JveENlbGwoKTsKKyAgICAgICAgY29uZmlndXJl
Q2hlY2tib3goY2hlY2tib3hDZWxsLCBjb250cm9sU3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFj
dG9yLCB0cnVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWNoZWNrYm94Q2VsbCkKKyAg
ICAgICAgICAgIGNoZWNrYm94Q2VsbCA9IHNoYXJlZENoZWNrYm94Q2VsbChjb250cm9sU3RhdGVz
LCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsKKyAgICAgICAgY29uZmlndXJlQ2hlY2tib3goY2hl
Y2tib3hDZWxsLCBjb250cm9sU3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yLCBmYWxzZSk7
CisgICAgfQorICAgIGNvbnRyb2xTdGF0ZXMtPnNldERpcnR5KGZhbHNlKTsKKwogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CiAKICAgICBOU0NvbnRy
b2xTaXplIGNvbnRyb2xTaXplID0gW2NoZWNrYm94Q2VsbCBjb250cm9sU2l6ZV07CkBAIC0zMTEs
MTIgKzM1NywzNCBAQCBzdGF0aWMgdm9pZCBwYWludENoZWNrYm94KENvbnRyb2xTdGF0ZXMgc3Rh
dGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgfQogCiAgICAgTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsKLSAgICBOU1ZpZXcg
KnZpZXcgPSBUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoc2Nyb2xsVmlldywgc3RhdGVzKTsKLSAgICBb
Y2hlY2tib3hDZWxsIGRyYXdXaXRoRnJhbWU6TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5WaWV3OnZp
ZXddOwotICAgIGlmIChzdGF0ZXMgJiBGb2N1c1N0YXRlKQorICAgIE5TVmlldyAqdmlldyA9IFRo
ZW1lTWFjOjplbnN1cmVkVmlldyhzY3JvbGxWaWV3LCBjb250cm9sU3RhdGVzKTsKKyAgICBib29s
IGRyYXdTdGF0aWNhbGx5ID0gdHJ1ZTsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTAwCisgICAgZHJhd1N0YXRpY2FsbHkgPSAhW2NoZWNrYm94Q2VsbCBfc3RhdGVB
bmltYXRpb25SdW5uaW5nXTsKKyNlbmRpZgorICAgIGlmIChkcmF3U3RhdGljYWxseSkKKyAgICAg
ICAgW2NoZWNrYm94Q2VsbCBkcmF3V2l0aEZyYW1lOk5TUmVjdChpbmZsYXRlZFJlY3QpIGluVmll
dzp2aWV3XTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXNuJ3QgcXVpdGUg
Y29ycmVjdCBhdCB0aGUgbW9tZW50IGR1ZSB0byB0aGUgd2F5IHRoZSB0aWNrIG1hcmsgZXh0ZW5k
cyBvdXQgb2YgdGhlIGNvbnRyb2wuCisgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShpbmZsYXRl
ZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKDEsIC0xKSk7CisgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgwLCAtaW5mbGF0ZWRS
ZWN0LmhlaWdodCgpKTsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTAwCisgICAgICAgIFtjaGVja2JveENlbGwgX3JlbmRlckN1cnJlbnRBbmltYXRpb25GcmFtZUlu
Q29udGV4dDpjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSBhdExvY2F0aW9uOk5TTWFrZVBvaW50
KDAsIDApXTsKKyNlbmRpZgorICAgIH0KKyAgICBpZiAoY29udHJvbFN0YXRlcy0+c3RhdGVzKCkg
JiBDb250cm9sU3RhdGVzOjpGb2N1c1N0YXRlKQogICAgICAgICBbY2hlY2tib3hDZWxsIF93ZWJf
ZHJhd0ZvY3VzUmluZ1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6dmlld107
CiAgICAgW2NoZWNrYm94Q2VsbCBzZXRDb250cm9sVmlldzpuaWxdOwogICAgIAorICAgIGJvb2wg
bmVlZHNSZXBhaW50ID0gZmFsc2U7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEwMAorICAgIG5lZWRzUmVwYWludCA9IFtjaGVja2JveENlbGwgX3N0YXRlQW5pbWF0
aW9uUnVubmluZ107CisjZW5kaWYKKyAgICBjb250cm9sU3RhdGVzLT5zZXROZWVkc1JlcGFpbnQo
bmVlZHNSZXBhaW50KTsKKyAgICBpZiAobmVlZHNSZXBhaW50KQorICAgICAgICBjb250cm9sU3Rh
dGVzLT5zZXRQbGF0Zm9ybUNvbnRyb2woY2hlY2tib3hDZWxsKTsKKwogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMzQ5LDcgKzQxNyw3IEBAIHN0YXRpYyBMZW5ndGhTaXpl
IHJhZGlvU2l6ZShjb25zdCBGb250JiBmb250LCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXpl
LCBmbG9hCiAgICAgcmV0dXJuIHNpemVGcm9tRm9udChmb250LCB6b29tZWRTaXplLCB6b29tRmFj
dG9yLCByYWRpb1NpemVzKCkpOwogfQogCi1zdGF0aWMgTlNCdXR0b25DZWxsICpyYWRpbyhDb250
cm9sU3RhdGVzIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZh
Y3RvcikKK3N0YXRpYyBOU0J1dHRvbkNlbGwgKnJhZGlvKGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0
YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikKIHsKICAg
ICBzdGF0aWMgTlNCdXR0b25DZWxsICpyYWRpb0NlbGw7CiAgICAgaWYgKCFyYWRpb0NlbGwpIHsK
QEAgLTM2OCwxMCArNDM2LDEwIEBAIHN0YXRpYyBOU0J1dHRvbkNlbGwgKnJhZGlvKENvbnRyb2xT
dGF0ZXMgc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hCiAgICAgcmV0dXJu
IHJhZGlvQ2VsbDsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRSYWRpbyhDb250cm9sU3RhdGVzIHN0
YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0
LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KQorc3RhdGljIHZvaWQg
cGFpbnRSYWRpbyhDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNj
cm9sbFZpZXcqIHNjcm9sbFZpZXcpCiB7CiAgICAgLy8gRGV0ZXJtaW5lIHRoZSB3aWR0aCBhbmQg
aGVpZ2h0IG5lZWRlZCBmb3IgdGhlIGNvbnRyb2wgYW5kIHByZXBhcmUgdGhlIGNlbGwgZm9yIHBh
aW50aW5nLgotICAgIE5TQnV0dG9uQ2VsbCAqcmFkaW9DZWxsID0gcmFkaW8oc3RhdGVzLCB6b29t
ZWRSZWN0LCB6b29tRmFjdG9yKTsKKyAgICBOU0J1dHRvbkNlbGwgKnJhZGlvQ2VsbCA9IHJhZGlv
KGNvbnRyb2xTdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOwogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CiAKICAgICBOU0NvbnRyb2xTaXpl
IGNvbnRyb2xTaXplID0gW3JhZGlvQ2VsbCBjb250cm9sU2l6ZV07CkBAIC0zOTAsOSArNDU4LDkg
QEAgc3RhdGljIHZvaWQgcGFpbnRSYWRpbyhDb250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnQKIAogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29u
dGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0gICAgTlNWaWV3ICp2aWV3ID0gVGhlbWVNYWM6OmVuc3VyZWRWaWV3KHNjcm9sbFZpZXcs
IHN0YXRlcyk7CisgICAgTlNWaWV3ICp2aWV3ID0gVGhlbWVNYWM6OmVuc3VyZWRWaWV3KHNjcm9s
bFZpZXcsIGNvbnRyb2xTdGF0ZXMpOwogICAgIFtyYWRpb0NlbGwgZHJhd1dpdGhGcmFtZTpOU1Jl
Y3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6dmlld107Ci0gICAgaWYgKHN0YXRlcyAmIEZvY3VzU3Rh
dGUpCisgICAgaWYgKGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygpICYgQ29udHJvbFN0YXRlczo6Rm9j
dXNTdGF0ZSkKICAgICAgICAgW3JhZGlvQ2VsbCBfd2ViX2RyYXdGb2N1c1JpbmdXaXRoRnJhbWU6
TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5WaWV3OnZpZXddOwogICAgIFtyYWRpb0NlbGwgc2V0Q29u
dHJvbFZpZXc6bmlsXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCkBAIC00MzAsNyAr
NDk4LDcgQEAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqbGVha0J1dHRvbkNlbGwoQnV0dG9uQ2VsbFR5
cGUgdHlwZSkKICAgICByZXR1cm4gY2VsbDsKIH0KIAotc3RhdGljIHZvaWQgc2V0VXBCdXR0b25D
ZWxsKE5TQnV0dG9uQ2VsbCAqY2VsbCwgQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyBz
dGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IpCitzdGF0
aWMgdm9pZCBzZXRVcEJ1dHRvbkNlbGwoTlNCdXR0b25DZWxsICpjZWxsLCBDb250cm9sUGFydCBw
YXJ0LCBjb25zdCBDb250cm9sU3RhdGVzKiBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJl
Y3QsIGZsb2F0IHpvb21GYWN0b3IpCiB7CiAgICAgLy8gU2V0IHRoZSBjb250cm9sIHNpemUgYmFz
ZWQgb2ZmIHRoZSByZWN0YW5nbGUgd2UncmUgcGFpbnRpbmcgaW50by4KICAgICBjb25zdCBJbnRT
aXplKiBzaXplcyA9IGJ1dHRvblNpemVzKCk7CkBAIC00NDcsMjYgKzUxNSwyOCBAQCBzdGF0aWMg
dm9pZCBzZXRVcEJ1dHRvbkNlbGwoTlNCdXR0b25DZWxsICpjZWxsLCBDb250cm9sUGFydCBwYXJ0
LCBDb250cm9sU3RhdGVzCiAgICAgdXBkYXRlU3RhdGVzKGNlbGwsIHN0YXRlcyk7CiB9CiAKLXN0
YXRpYyBOU0J1dHRvbkNlbGwgKmJ1dHRvbihDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVz
IHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikKK3N0
YXRpYyBOU0J1dHRvbkNlbGwgKmJ1dHRvbihDb250cm9sUGFydCBwYXJ0LCBjb25zdCBDb250cm9s
U3RhdGVzKiBjb250cm9sU3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6
b29tRmFjdG9yKQogeworICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZXMgPSBjb250cm9s
U3RhdGVzLT5zdGF0ZXMoKTsKICAgICBOU0J1dHRvbkNlbGwgKmNlbGw7Ci0gICAgaWYgKHN0YXRl
cyAmIERlZmF1bHRTdGF0ZSkgeworICAgIGlmIChzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpEZWZh
dWx0U3RhdGUpIHsKICAgICAgICAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqZGVmYXVsdENlbGwgPSBs
ZWFrQnV0dG9uQ2VsbChEZWZhdWx0QnV0dG9uQ2VsbCk7CiAgICAgICAgIGNlbGwgPSBkZWZhdWx0
Q2VsbDsKICAgICB9IGVsc2UgewogICAgICAgICBzdGF0aWMgTlNCdXR0b25DZWxsICpub3JtYWxD
ZWxsID0gbGVha0J1dHRvbkNlbGwoTm9ybWFsQnV0dG9uQ2VsbCk7CiAgICAgICAgIGNlbGwgPSBu
b3JtYWxDZWxsOwogICAgIH0KLSAgICBzZXRVcEJ1dHRvbkNlbGwoY2VsbCwgcGFydCwgc3RhdGVz
LCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsgICAgCisgICAgc2V0VXBCdXR0b25DZWxsKGNlbGws
IHBhcnQsIGNvbnRyb2xTdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOwogICAgIHJldHVy
biBjZWxsOwogfQogCi1zdGF0aWMgdm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFydCBwYXJ0LCBD
b250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3
KQorc3RhdGljIHZvaWQgcGFpbnRCdXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRl
cyogY29udHJvbFN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIC8vIERldGVybWlu
ZSB0aGUgd2lkdGggYW5kIGhlaWdodCBuZWVkZWQgZm9yIHRoZSBjb250cm9sIGFuZCBwcmVwYXJl
IHRoZSBjZWxsIGZvciBwYWludGluZy4KLSAgICBOU0J1dHRvbkNlbGwgKmJ1dHRvbkNlbGwgPSBi
dXR0b24ocGFydCwgc3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsKKyAgICBDb250cm9s
U3RhdGVzOjpTdGF0ZXMgc3RhdGVzID0gY29udHJvbFN0YXRlcy0+c3RhdGVzKCk7CisgICAgTlNC
dXR0b25DZWxsICpidXR0b25DZWxsID0gYnV0dG9uKHBhcnQsIGNvbnRyb2xTdGF0ZXMsIHpvb21l
ZFJlY3QsIHpvb21GYWN0b3IpOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqY29udGV4dCk7CiAKICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplID0gW2J1dHRv
bkNlbGwgY29udHJvbFNpemVdOwpAQCAtNDk0LDE4ICs1NjQsMTggQEAgc3RhdGljIHZvaWQgcGFp
bnRCdXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNz
Q29udGV4dCoKICAgICB9IAogCiAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2Fs
Q29udGV4dChjb250ZXh0KTsKLSAgICBOU1ZpZXcgKnZpZXcgPSBUaGVtZU1hYzo6ZW5zdXJlZFZp
ZXcoc2Nyb2xsVmlldywgc3RhdGVzKTsKKyAgICBOU1ZpZXcgKnZpZXcgPSBUaGVtZU1hYzo6ZW5z
dXJlZFZpZXcoc2Nyb2xsVmlldywgY29udHJvbFN0YXRlcyk7CiAgICAgTlNXaW5kb3cgKndpbmRv
dyA9IFt2aWV3IHdpbmRvd107CiAgICAgTlNCdXR0b25DZWxsICpwcmV2aW91c0RlZmF1bHRCdXR0
b25DZWxsID0gW3dpbmRvdyBkZWZhdWx0QnV0dG9uQ2VsbF07CiAKLSAgICBpZiAoc3RhdGVzICYg
RGVmYXVsdFN0YXRlKSB7CisgICAgaWYgKHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OkRlZmF1bHRT
dGF0ZSkgewogICAgICAgICBbd2luZG93IHNldERlZmF1bHRCdXR0b25DZWxsOmJ1dHRvbkNlbGxd
OwogICAgICAgICB3a0FkdmFuY2VEZWZhdWx0QnV0dG9uUHVsc2VBbmltYXRpb24oYnV0dG9uQ2Vs
bCk7CiAgICAgfSBlbHNlIGlmIChbcHJldmlvdXNEZWZhdWx0QnV0dG9uQ2VsbCBpc0VxdWFsOmJ1
dHRvbkNlbGxdKQogICAgICAgICBbd2luZG93IHNldERlZmF1bHRCdXR0b25DZWxsOm5pbF07CiAK
ICAgICBbYnV0dG9uQ2VsbCBkcmF3V2l0aEZyYW1lOk5TUmVjdChpbmZsYXRlZFJlY3QpIGluVmll
dzp2aWV3XTsKLSAgICBpZiAoc3RhdGVzICYgRm9jdXNTdGF0ZSkKKyAgICBpZiAoc3RhdGVzICYg
Q29udHJvbFN0YXRlczo6Rm9jdXNTdGF0ZSkKICAgICAgICAgW2J1dHRvbkNlbGwgX3dlYl9kcmF3
Rm9jdXNSaW5nV2l0aEZyYW1lOk5TUmVjdChpbmZsYXRlZFJlY3QpIGluVmlldzp2aWV3XTsKICAg
ICBbYnV0dG9uQ2VsbCBzZXRDb250cm9sVmlldzpuaWxdOwogCkBAIC01MzUsNyArNjA1LDcgQEAg
c3RhdGljIE5TQ29udHJvbFNpemUgc3RlcHBlckNvbnRyb2xTaXplRm9yRm9udChjb25zdCBGb250
JiBmb250KQogICAgIHJldHVybiBOU01pbmlDb250cm9sU2l6ZTsKIH0KIAotc3RhdGljIHZvaWQg
cGFpbnRTdGVwcGVyKENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZp
ZXcqKQorc3RhdGljIHZvaWQgcGFpbnRTdGVwcGVyKENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6
b29tRmFjdG9yLCBTY3JvbGxWaWV3KikKIHsKICAgICAvLyBXZSBkb24ndCB1c2UgTlNTdGVwcGVy
Q2VsbCBiZWNhdXNlIHRoZXJlIGFyZSBubyB3YXlzIHRvIGRyYXcgYW4KICAgICAvLyBOU1N0ZXBw
ZXJDZWxsIHdpdGggdGhlIHVwIGJ1dHRvbiBoaWdobGlnaHRlZC4KQEAgLTU3Nyw3ICs2NDcsNyBA
QCBzdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSQogCiAvLyBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgd2Ug
YWx3YXlzIHJldHVybiBhIHZhbGlkIE5TVmlldywgZXZlbiBpZiBTY3JvbGxWaWV3IGRvZXNuJ3Qg
aGF2ZSBhbiBhc3NvY2lhdGVkIGRvY3VtZW50IE5TVmlldy4KIC8vIElmIHRoZSBTY3JvbGxWaWV3
IGRvZXNuJ3QgaGF2ZSBhbiBOU1ZpZXcsIHdlIHdpbGwgcmV0dXJuIGEgZmFrZSBOU1ZpZXcgc2V0
IHVwIGluIHRoZSB3YXkgQXBwS2l0IGV4cGVjdHMuCi1OU1ZpZXcgKlRoZW1lTWFjOjplbnN1cmVk
VmlldyhTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBDb250cm9sU3RhdGVzIHN0YXRlcykKK05TVmll
dyAqVGhlbWVNYWM6OmVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIGNvbnN0IENv
bnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMpCiB7CiAgICAgaWYgKE5TVmlldyAqZG9jdW1lbnRW
aWV3ID0gc2Nyb2xsVmlldy0+ZG9jdW1lbnRWaWV3KCkpCiAgICAgICAgIHJldHVybiBkb2N1bWVu
dFZpZXc7CkBAIC01ODYsNyArNjU2LDcgQEAgTlNWaWV3ICpUaGVtZU1hYzo6ZW5zdXJlZFZpZXco
U2Nyb2xsVmlldyogc2Nyb2xsVmlldywgQ29udHJvbFN0YXRlcyBzdGF0ZXMpCiAgICAgc3RhdGlj
IFdlYkNvcmVUaGVtZVZpZXcgKnRoZW1lVmlldyA9IFtbV2ViQ29yZVRoZW1lVmlldyBhbGxvY10g
aW5pdF07CiAgICAgW3RoZW1lVmlldyBzZXRGcmFtZVNpemU6TlNTaXplRnJvbUNHU2l6ZShzY3Jv
bGxWaWV3LT50b3RhbENvbnRlbnRzU2l6ZSgpKV07CiAKLSAgICB0aGVtZVdpbmRvd0hhc0tleUFw
cGVhcmFuY2UgPSAhKHN0YXRlcyAmIFdpbmRvd0luYWN0aXZlU3RhdGUpOworICAgIHRoZW1lV2lu
ZG93SGFzS2V5QXBwZWFyYW5jZSA9ICEoY29udHJvbFN0YXRlcy0+c3RhdGVzKCkgJiBDb250cm9s
U3RhdGVzOjpXaW5kb3dJbmFjdGl2ZVN0YXRlKTsKIAogICAgIHJldHVybiB0aGVtZVZpZXc7CiB9
CkBAIC02ODksMTQgKzc1OSwxNCBAQCBMZW5ndGhCb3ggVGhlbWVNYWM6OmNvbnRyb2xQYWRkaW5n
KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IExlbgogICAgIH0KIH0K
IAotdm9pZCBUaGVtZU1hYzo6aW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQgcGFy
dCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21G
YWN0b3IpIGNvbnN0Cit2b2lkIFRoZW1lTWFjOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250
cm9sUGFydCBwYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzKiBzdGF0ZXMsIEludFJlY3QmIHpvb21l
ZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAgICAgc3dpdGNoIChwYXJ0KSB7CiAgICAgICAgIGNhc2UgQ2hlY2tib3hQYXJ0
OiB7CiAgICAgICAgICAgICAvLyBXZSBpbmZsYXRlIHRoZSByZWN0IGFzIG5lZWRlZCB0byBhY2Nv
dW50IGZvciBwYWRkaW5nIGluY2x1ZGVkIGluIHRoZSBjZWxsIHRvIGFjY29tbW9kYXRlIHRoZSBj
aGVja2JveAogICAgICAgICAgICAgLy8gc2hhZG93IiBhbmQgdGhlIGNoZWNrLiAgV2UgZG9uJ3Qg
Y29uc2lkZXIgdGhpcyBwYXJ0IG9mIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRyb2wgaW4gV2ViS2l0
LgotICAgICAgICAgICAgTlNDZWxsICpjZWxsID0gY2hlY2tib3goc3RhdGVzLCB6b29tZWRSZWN0
LCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIE5TQ2VsbCAqY2VsbCA9IHNoYXJlZENoZWNrYm94
Q2VsbChzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOwogICAgICAgICAgICAgTlNDb250
cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFtjZWxsIGNvbnRyb2xTaXplXTsKICAgICAgICAgICAgIElu
dFNpemUgem9vbWVkU2l6ZSA9IGNoZWNrYm94U2l6ZXMoKVtjb250cm9sU2l6ZV07CiAgICAgICAg
ICAgICB6b29tZWRTaXplLnNldEhlaWdodCh6b29tZWRTaXplLmhlaWdodCgpICogem9vbUZhY3Rv
cik7CkBAIC03NDUsNyArODE1LDcgQEAgdm9pZCBUaGVtZU1hYzo6aW5mbGF0ZUNvbnRyb2xQYWlu
dFJlY3QoQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEkKICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQgVGhlbWVNYWM6OnBhaW50KENvbnRyb2xQ
YXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcq
IHNjcm9sbFZpZXcpIGNvbnN0Cit2b2lkIFRoZW1lTWFjOjpwYWludChDb250cm9sUGFydCBwYXJ0
LCBDb250cm9sU3RhdGVzKiBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xs
VmlldykKIHsKICAgICBzd2l0Y2ggKHBhcnQpIHsKICAgICAgICAgY2FzZSBDaGVja2JveFBhcnQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDViN2JjYTViNjQzMjM2
ZTAzNWFlNTQyODEzYThlYjk4NWU4ZTkxZGQuLjcwMTE2NjAwMjZjYzc3ODZkNDkyY2U1NjUxZTVj
ZTdkN2I3NDI4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0x
MDIsNiArMTAyLDcgQEAgUmVuZGVyQm94OjpSZW5kZXJCb3goRWxlbWVudCYgZWxlbWVudCwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2UKICAgICAsIG1fbWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoKC0xKQogICAgICwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoLTEp
CiAgICAgLCBtX2lubGluZUJveFdyYXBwZXIoMCkKKyAgICAsIG1fcmVwYWludFRpbWVyKHRoaXMs
ICZSZW5kZXJCb3g6OnJlcGFpbnRUaW1lckZpcmVkKQogewogICAgIHNldElzQm94KCk7CiB9CkBA
IC0xMTEsMTIgKzExMiwxNiBAQCBSZW5kZXJCb3g6OlJlbmRlckJveChEb2N1bWVudCYgZG9jdW1l
bnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYQogICAgICwgbV9taW5Q
cmVmZXJyZWRMb2dpY2FsV2lkdGgoLTEpCiAgICAgLCBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0
aCgtMSkKICAgICAsIG1faW5saW5lQm94V3JhcHBlcigwKQorICAgICwgbV9yZXBhaW50VGltZXIo
dGhpcywgJlJlbmRlckJveDo6cmVwYWludFRpbWVyRmlyZWQpCiB7CiAgICAgc2V0SXNCb3goKTsK
IH0KIAogUmVuZGVyQm94Ojp+UmVuZGVyQm94KCkKIHsKKyAgICBtX3JlcGFpbnRUaW1lci5zdG9w
KCk7CisgICAgaWYgKGhhc0NvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcih0aGlzKSkKKyAgICAgICAg
cmVtb3ZlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKHRoaXMpOwogfQogCiBSZW5kZXJSZWdpb24q
IFJlbmRlckJveDo6Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhSZW5kZXJSZWdpb24qIHJlZ2lv
bikgY29uc3QKQEAgLTEyMjEsNyArMTIyNiwyMiBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hE
ZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaQog
ICAgIC8vIElmIHdlIGhhdmUgYSBuYXRpdmUgdGhlbWUgYXBwZWFyYW5jZSwgcGFpbnQgdGhhdCBi
ZWZvcmUgcGFpbnRpbmcgb3VyIGJhY2tncm91bmQuCiAgICAgLy8gVGhlIHRoZW1lIHdpbGwgdGVs
bCB1cyB3aGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQgYWxzbyBwYWludCB0aGUgQ1NTIGJhY2tncm91
bmQuCiAgICAgSW50UmVjdCBzbmFwcGVkUGFpbnRSZWN0KHBpeGVsU25hcHBlZEludFJlY3QocGFp
bnRSZWN0KSk7Ci0gICAgYm9vbCB0aGVtZVBhaW50ZWQgPSBzdHlsZSgpLmhhc0FwcGVhcmFuY2Uo
KSAmJiAhdGhlbWUoKS5wYWludCh0aGlzLCBwYWludEluZm8sIHNuYXBwZWRQYWludFJlY3QpOwor
CisgICAgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcyA9IG51bGxwdHI7CisgICAgaWYgKHN0
eWxlKCkuaGFzQXBwZWFyYW5jZSgpKSB7CisgICAgICAgIGlmIChoYXNDb250cm9sU3RhdGVzRm9y
UmVuZGVyZXIodGhpcykpCisgICAgICAgICAgICBjb250cm9sU3RhdGVzID0gY29udHJvbFN0YXRl
c0ZvclJlbmRlcmVyKHRoaXMpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbnRyb2xT
dGF0ZXMgPSBuZXcgQ29udHJvbFN0YXRlcygpOworICAgICAgICAgICAgYWRkQ29udHJvbFN0YXRl
c0ZvclJlbmRlcmVyKHRoaXMsIGNvbnRyb2xTdGF0ZXMpOworICAgICAgICB9CisgICAgfQorCisg
ICAgYm9vbCB0aGVtZVBhaW50ZWQgPSBzdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSAmJiAhdGhlbWUo
KS5wYWludCh0aGlzLCBjb250cm9sU3RhdGVzLCBwYWludEluZm8sIHNuYXBwZWRQYWludFJlY3Qp
OworCisgICAgaWYgKGNvbnRyb2xTdGF0ZXMgJiYgY29udHJvbFN0YXRlcy0+bmVlZHNSZXBhaW50
KCkpCisgICAgICAgIG1fcmVwYWludFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKwogICAgIGlmICgh
dGhlbWVQYWludGVkKSB7CiAgICAgICAgIGlmIChibGVlZEF2b2lkYW5jZSA9PSBCYWNrZ3JvdW5k
QmxlZWRCYWNrZ3JvdW5kT3ZlckJvcmRlcikKICAgICAgICAgICAgIHBhaW50Qm9yZGVyKHBhaW50
SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgpLCBibGVlZEF2b2lkYW5jZSk7CkBAIC00NzI5LDQgKzQ3
NDksMTAgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6Om9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJz
dFBhZ2UoKSBjb25zdAogICAgIHJldHVybiBjb250YWluZXJCbG9jay0+b2Zmc2V0RnJvbUxvZ2lj
YWxUb3BPZkZpcnN0UGFnZSgpICsgbG9naWNhbFRvcCgpOwogfQogCit2b2lkIFJlbmRlckJveDo6
cmVwYWludFRpbWVyRmlyZWQoVGltZXI8UmVuZGVyQm94PiYpCit7CisgICAgaWYgKCFkb2N1bWVu
dCgpLmluUGFnZUNhY2hlKCkpCisgICAgICAgIHRoaXMtPnJlcGFpbnQoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGY5
MjBjNWMwMzFmMjE3Njk2OTk2MzVjMzUwZjhhNjg3ZDQ4MTk1MjEuLjBhZjI1NmRkNTAwNTE5MDYw
YjdkMzBlNWE2NzJlMTA2ZWVlOTkzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKQEAgLTcyMSw4ICs3MjEsMTIgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxSZW5kZXJPdmVy
Zmxvdz4gbV9vdmVyZmxvdzsKIAogcHJpdmF0ZToKKyAgICB2b2lkIHJlcGFpbnRUaW1lckZpcmVk
KFRpbWVyPFJlbmRlckJveD4mKTsKKwogICAgIC8vIFVzZWQgdG8gc3RvcmUgc3RhdGUgYmV0d2Vl
biBzdHlsZVdpbGxDaGFuZ2UgYW5kIHN0eWxlRGlkQ2hhbmdlCiAgICAgc3RhdGljIGJvb2wgc19o
YWRPdmVyZmxvd0NsaXA7CisKKyAgICBUaW1lcjxSZW5kZXJCb3g+IG1fcmVwYWludFRpbWVyOwog
fTsKIAogUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlckJveCwgaXNCb3goKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAzZmNhNWE3NWVjNjBi
ODJlNGI3ODIyMzdlYTlkMGZiNWE3ZDkzNTk0Li5kYzJhY2IxZjhlODlmNTRmZjNjYTRkYjE5ZWIw
ZTgwYTJhMjBjZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1
ZGUgIkFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDb250ZW50RGF0YS5oIgorI2lu
Y2x1ZGUgIkNvbnRyb2xTdGF0ZXMuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCiAjaW5jbHVk
ZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTY2LDcgKzY3LDEzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBSZW5kZXJFbGVtZW50OjpzX2FmZmVjdHNQYXJl
bnRCbG9jayA9IGZhbHNlOwogYm9vbCBSZW5kZXJFbGVtZW50OjpzX25vTG9uZ2VyQWZmZWN0c1Bh
cmVudEJsb2NrID0gZmFsc2U7Ci0KKyAgICAKK3N0YXRpYyBIYXNoTWFwPGNvbnN0IFJlbmRlck9i
amVjdCosIENvbnRyb2xTdGF0ZXMqPiYgY29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBDb250
cm9sU3RhdGVzKj4+IG1hcDsKKyAgICByZXR1cm4gbWFwOworfQorICAgIAogUmVuZGVyRWxlbWVu
dDo6UmVuZGVyRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlck9iamVjdChlbGVtZW50
KQogICAgICwgbV9iYXNlVHlwZUZsYWdzKGJhc2VUeXBlRmxhZ3MpCkBAIC0xMzM4LDQgKzEzNDUs
MjggQEAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBSZW5kZXJFbGVtZW50OjpyZW5kZXJOYW1lZEZs
b3dUaHJlYWRXcmFwcGVyKCkKICAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzUmVu
ZGVyTmFtZWRGbG93VGhyZWFkKCkgPyB0b1JlbmRlck5hbWVkRmxvd1RocmVhZChyZW5kZXJlcikg
OiBudWxscHRyOwogfQogCitib29sIFJlbmRlckVsZW1lbnQ6Omhhc0NvbnRyb2xTdGF0ZXNGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8pCit7CisgICAgcmV0dXJuIGNvbnRyb2xTdGF0
ZXNSZW5kZXJlck1hcCgpLmNvbnRhaW5zKG8pOworfQorCitDb250cm9sU3RhdGVzKiBSZW5kZXJF
bGVtZW50Ojpjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvKQor
eworICAgIHJldHVybiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKS5nZXQobyk7Cit9CisKK3Zv
aWQgUmVuZGVyRWxlbWVudDo6cmVtb3ZlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJl
bmRlck9iamVjdCogbykKK3sKKyAgICBDb250cm9sU3RhdGVzKiBzdGF0ZXMgPSBjb250cm9sU3Rh
dGVzUmVuZGVyZXJNYXAoKS5nZXQobyk7CisgICAgaWYgKHN0YXRlcykgeworICAgICAgICBjb250
cm9sU3RhdGVzUmVuZGVyZXJNYXAoKS5yZW1vdmUobyk7CisgICAgICAgIGRlbGV0ZSBzdGF0ZXM7
CisgICAgfQorfQorCit2b2lkIFJlbmRlckVsZW1lbnQ6OmFkZENvbnRyb2xTdGF0ZXNGb3JSZW5k
ZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8sIENvbnRyb2xTdGF0ZXMqIHN0YXRlcykKK3sKKyAg
ICBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKS5hZGQobywgc3RhdGVzKTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggMDIyMzA2MDZkYjRiNzk1
YjIyNTFkYzI1Y2EyNTllMjNhMzljZTFmOS4uZTY0YjcxZTUxNzIwNDY5NmM4Y2QzNTRlZTI4ZDc5
ODQzNTE2MDJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBA
IC0yNyw2ICsyNyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udHJvbFN0
YXRlczsKKwogY2xhc3MgUmVuZGVyRWxlbWVudCA6IHB1YmxpYyBSZW5kZXJPYmplY3QgewogcHVi
bGljOgogICAgIHZpcnR1YWwgflJlbmRlckVsZW1lbnQoKTsKQEAgLTE4Miw2ICsxODQsMTEgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgc2V0UmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hl
cyhib29sIGIpIHsgbV9yZW5kZXJJbmxpbmVBbHdheXNDcmVhdGVzTGluZUJveGVzID0gYjsgfQog
ICAgIGJvb2wgcmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hlcygpIGNvbnN0IHsgcmV0
dXJuIG1fcmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hlczsgfQogCisgICAgc3RhdGlj
IGJvb2wgaGFzQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopOwor
ICAgIHN0YXRpYyBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyT2JqZWN0Kik7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlQ29udHJvbFN0YXRlc0ZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopOworICAgIHN0YXRpYyB2b2lkIGFkZENvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqLCBDb250cm9sU3RhdGVzKik7CisK
IHByaXZhdGU6CiAgICAgdm9pZCBub2RlKCkgY29uc3QgPSBkZWxldGU7CiAgICAgdm9pZCBub25Q
c2V1ZG9Ob2RlKCkgY29uc3QgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmNwcAppbmRleCA1OGVmMzdhZWM1N2RiMDc3MWVkNWRhNTJlMjllY2NlODQyZTk3ODIz
Li5kMDI3ZTAzNDQ5NDhlMWZkZWM2N2QzYmU4NjA1ODg2MTg3NTFjYTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJUaGVtZS5oIgogCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgorI2luY2x1
ZGUgIkNvbnRyb2xTdGF0ZXMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZp
bGVMaXN0LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgpAQCAtMjYyLDcgKzI2Myw3IEBAIHZv
aWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIs
IFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICB9CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWU6OnBhaW50
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHIpCitib29sIFJlbmRlclRoZW1lOjpwYWludChSZW5kZXJPYmplY3QqIG8sIENvbnRyb2xT
dGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByKQogewogICAgIC8vIElmIHBhaW50aW5nIGlzIGRpc2FibGVkLCBidXQgd2UgYXJl
bid0IHVwZGF0aW5nIGNvbnRyb2wgdGludHMsIHRoZW4ganVzdCBiYWlsLgogICAgIC8vIElmIHdl
IGFyZSB1cGRhdGluZyBjb250cm9sIHRpbnRzLCBqdXN0IHNjaGVkdWxlIGEgcmVwYWludCBpZiB0
aGUgdGhlbWUgc3VwcG9ydHMgdGludGluZwpAQCAtMjg2LDcgKzI4Nyw4IEBAIGJvb2wgUmVuZGVy
VGhlbWU6OnBhaW50KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEludFJlCiAgICAgY2FzZSBEZWZhdWx0QnV0dG9uUGFydDoKICAgICBjYXNlIEJ1dHRv
blBhcnQ6CiAgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OgotICAgICAgICBtX3RoZW1lLT5w
YWludChwYXJ0LCBjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobyksIGNvbnN0X2Nhc3Q8R3JhcGhp
Y3NDb250ZXh0Kj4ocGFpbnRJbmZvLmNvbnRleHQpLCByLCBvLT5zdHlsZSgpLmVmZmVjdGl2ZVpv
b20oKSwgJm8tPnZpZXcoKS5mcmFtZVZpZXcoKSk7CisgICAgICAgIHVwZGF0ZUNvbnRyb2xTdGF0
ZXNGb3JSZW5kZXJlcihvLCBjb250cm9sU3RhdGVzKTsKKyAgICAgICAgbV90aGVtZS0+cGFpbnQo
cGFydCwgY29udHJvbFN0YXRlcywgY29uc3RfY2FzdDxHcmFwaGljc0NvbnRleHQqPihwYWludElu
Zm8uY29udGV4dCksIHIsIG8tPnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmby0+dmlldygpLmZy
YW1lVmlldygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwpAQCAtNzEzLDcgKzcxNSw4IEBAIGJvb2wgUmVuZGVyVGhlbWU6OmlzQ29udHJvbFN0
eWxlZChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEJvcmRlckRhdGEmIGJvCiB2b2lk
IFJlbmRlclRoZW1lOjphZGp1c3RSZXBhaW50UmVjdChjb25zdCBSZW5kZXJPYmplY3QqIG8sIElu
dFJlY3QmIHIpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkKLSAgICBtX3RoZW1lLT5pbmZsYXRlQ29u
dHJvbFBhaW50UmVjdChvLT5zdHlsZSgpLmFwcGVhcmFuY2UoKSwgY29udHJvbFN0YXRlc0ZvclJl
bmRlcmVyKG8pLCByLCBvLT5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CisgICAgQ29udHJvbFN0
YXRlcyBzdGF0ZXMoZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvKSk7CisgICAgbV90
aGVtZS0+aW5mbGF0ZUNvbnRyb2xQYWludFJlY3Qoby0+c3R5bGUoKS5hcHBlYXJhbmNlKCksICZz
dGF0ZXMsIHIsIG8tPnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKG8pOwogICAgIFVOVVNFRF9QQVJBTShyKTsKQEAgLTcyNSwxNCArNzI4LDE0IEBAIGJv
b2wgUmVuZGVyVGhlbWU6OnN1cHBvcnRzRm9jdXNSaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZSkgY29uc3QKICAgICByZXR1cm4gKHN0eWxlLT5oYXNBcHBlYXJhbmNlKCkgJiYgc3R5bGUtPmFw
cGVhcmFuY2UoKSAhPSBUZXh0RmllbGRQYXJ0ICYmIHN0eWxlLT5hcHBlYXJhbmNlKCkgIT0gVGV4
dEFyZWFQYXJ0ICYmIHN0eWxlLT5hcHBlYXJhbmNlKCkgIT0gTWVudWxpc3RCdXR0b25QYXJ0ICYm
IHN0eWxlLT5hcHBlYXJhbmNlKCkgIT0gTGlzdGJveFBhcnQpOwogfQogCi1ib29sIFJlbmRlclRo
ZW1lOjpzdGF0ZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiBvLCBDb250cm9sU3RhdGUgc3RhdGUpIGNv
bnN0Citib29sIFJlbmRlclRoZW1lOjpzdGF0ZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiBvLCBDb250
cm9sU3RhdGVzOjpTdGF0ZXMgc3RhdGUpIGNvbnN0CiB7CiAgICAgLy8gRGVmYXVsdCBpbXBsZW1l
bnRhdGlvbiBhc3N1bWVzIHRoZSBjb250cm9scyBkb24ndCByZXNwb25kIHRvIGNoYW5nZXMgaW4g
OmhvdmVyIHN0YXRlCi0gICAgaWYgKHN0YXRlID09IEhvdmVyU3RhdGUgJiYgIXN1cHBvcnRzSG92
ZXIoJm8tPnN0eWxlKCkpKQorICAgIGlmIChzdGF0ZSA9PSBDb250cm9sU3RhdGVzOjpIb3ZlclN0
YXRlICYmICFzdXBwb3J0c0hvdmVyKCZvLT5zdHlsZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgLy8gQXNzdW1lIHByZXNzZWQgc3RhdGUgaXMgb25seSByZXNwb25kZWQgdG8gaWYg
dGhlIGNvbnRyb2wgaXMgZW5hYmxlZC4KLSAgICBpZiAoc3RhdGUgPT0gUHJlc3NlZFN0YXRlICYm
ICFpc0VuYWJsZWQobykpCisgICAgaWYgKHN0YXRlID09IENvbnRyb2xTdGF0ZXM6OlByZXNzZWRT
dGF0ZSAmJiAhaXNFbmFibGVkKG8pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBS
ZXBhaW50IHRoZSBjb250cm9sLgpAQCAtNzQwLDM0ICs3NDMsNDAgQEAgYm9vbCBSZW5kZXJUaGVt
ZTo6c3RhdGVDaGFuZ2VkKFJlbmRlck9iamVjdCogbywgQ29udHJvbFN0YXRlIHN0YXRlKSBjb25z
dAogICAgIHJldHVybiB0cnVlOwogfQogCi1Db250cm9sU3RhdGVzIFJlbmRlclRoZW1lOjpjb250
cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvKSBjb25zdAordm9pZCBS
ZW5kZXJUaGVtZTo6dXBkYXRlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCogbywgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcykgY29uc3QKIHsKLSAgICBDb250
cm9sU3RhdGVzIHJlc3VsdCA9IDA7CisgICAgQ29udHJvbFN0YXRlcyBuZXdTdGF0ZXMgPSBleHRy
YWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG8pOworICAgIGNvbnRyb2xTdGF0ZXMtPnNldFN0
YXRlcyhuZXdTdGF0ZXMuc3RhdGVzKCkpOworfQorCitDb250cm9sU3RhdGVzOjpTdGF0ZXMgUmVu
ZGVyVGhlbWU6OmV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBvKSBjb25zdAoreworICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZXMgPSAwOwog
ICAgIGlmIChpc0hvdmVyZWQobykpIHsKLSAgICAgICAgcmVzdWx0IHw9IEhvdmVyU3RhdGU7Cisg
ICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVzOjpIb3ZlclN0YXRlOwogICAgICAgICBpZiAo
aXNTcGluVXBCdXR0b25QYXJ0SG92ZXJlZChvKSkKLSAgICAgICAgICAgIHJlc3VsdCB8PSBTcGlu
VXBTdGF0ZTsKKyAgICAgICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVzOjpTcGluVXBTdGF0
ZTsKICAgICB9CiAgICAgaWYgKGlzUHJlc3NlZChvKSkgewotICAgICAgICByZXN1bHQgfD0gUHJl
c3NlZFN0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6UHJlc3NlZFN0YXRl
OwogICAgICAgICBpZiAoaXNTcGluVXBCdXR0b25QYXJ0UHJlc3NlZChvKSkKLSAgICAgICAgICAg
IHJlc3VsdCB8PSBTcGluVXBTdGF0ZTsKKyAgICAgICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3Rh
dGVzOjpTcGluVXBTdGF0ZTsKICAgICB9CiAgICAgaWYgKGlzRm9jdXNlZChvKSAmJiBvLT5zdHls
ZSgpLm91dGxpbmVTdHlsZUlzQXV0bygpKQotICAgICAgICByZXN1bHQgfD0gRm9jdXNTdGF0ZTsK
KyAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OkZvY3VzU3RhdGU7CiAgICAgaWYgKGlz
RW5hYmxlZChvKSkKLSAgICAgICAgcmVzdWx0IHw9IEVuYWJsZWRTdGF0ZTsKKyAgICAgICAgc3Rh
dGVzIHw9IENvbnRyb2xTdGF0ZXM6OkVuYWJsZWRTdGF0ZTsKICAgICBpZiAoaXNDaGVja2VkKG8p
KQotICAgICAgICByZXN1bHQgfD0gQ2hlY2tlZFN0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29u
dHJvbFN0YXRlczo6Q2hlY2tlZFN0YXRlOwogICAgIGlmIChpc1JlYWRPbmx5Q29udHJvbChvKSkK
LSAgICAgICAgcmVzdWx0IHw9IFJlYWRPbmx5U3RhdGU7CisgICAgICAgIHN0YXRlcyB8PSBDb250
cm9sU3RhdGVzOjpSZWFkT25seVN0YXRlOwogICAgIGlmIChpc0RlZmF1bHQobykpCi0gICAgICAg
IHJlc3VsdCB8PSBEZWZhdWx0U3RhdGU7CisgICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVz
OjpEZWZhdWx0U3RhdGU7CiAgICAgaWYgKCFpc0FjdGl2ZShvKSkKLSAgICAgICAgcmVzdWx0IHw9
IFdpbmRvd0luYWN0aXZlU3RhdGU7CisgICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVzOjpX
aW5kb3dJbmFjdGl2ZVN0YXRlOwogICAgIGlmIChpc0luZGV0ZXJtaW5hdGUobykpCi0gICAgICAg
IHJlc3VsdCB8PSBJbmRldGVybWluYXRlU3RhdGU7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OkluZGV0ZXJtaW5hdGVTdGF0ZTsKKyAgICByZXR1
cm4gc3RhdGVzOwogfQogCiBib29sIFJlbmRlclRoZW1lOjppc0FjdGl2ZShjb25zdCBSZW5kZXJP
YmplY3QqIG8pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4
IDY4NTQ2MzQ2NzM4OTgxYzNhM2FhMmRjNGZiZjk5N2E1MTcwNmZkYjguLjY3MDQyNmViN2Q5MGYz
YjRlMGRhM2U3ZDBhNTM0MmRjOWY4MWMzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5oCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENTU1N0eWxlU2hlZXQ7CitjbGFzcyBDb250cm9sU3RhdGVzOwogY2xhc3MgRWxlbWVudDsKIGNs
YXNzIEZpbGVMaXN0OwogY2xhc3MgSFRNTElucHV0RWxlbWVudDsKQEAgLTc4LDcgKzc5LDcgQEAg
cHVibGljOgogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB0byBwYWludCB0aGUgd2lkZ2V0
IGFzIGEgYmFja2dyb3VuZCBvZiB0aGUgUmVuZGVyT2JqZWN0LiAgQSB3aWRnZXQncyBmb3JlZ3Jv
dW5kLCBlLmcuLCB0aGUKICAgICAvLyB0ZXh0IG9mIGEgYnV0dG9uLCBpcyBhbHdheXMgcmVuZGVy
ZWQgYnkgdGhlIGVuZ2luZSBpdHNlbGYuICBUaGUgYm9vbGVhbiByZXR1cm4gdmFsdWUgaW5kaWNh
dGVzCiAgICAgLy8gd2hldGhlciB0aGUgQ1NTIGJvcmRlci9iYWNrZ3JvdW5kIHNob3VsZCBhbHNv
IGJlIHBhaW50ZWQuCi0gICAgYm9vbCBwYWludChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgYm9vbCBwYWludChSZW5kZXJPYmplY3QqLCBDb250
cm9sU3RhdGVzKiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIGJvb2wg
cGFpbnRCb3JkZXJPbmx5KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKICAgICBib29sIHBhaW50RGVjb3JhdGlvbnMoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCkBAIC0xMjYsNyArMTI3LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIGEgcmVsZXZhbnQgc3Rh
dGUgY2hhbmdlcyBvbiBhIHBhcnRpY3VsYXIgdGhlbWVkIG9iamVjdCwgZS5nLiwgdGhlIG1vdXNl
IGJlY29tZXMgcHJlc3NlZAogICAgIC8vIG9yIGEgY29udHJvbCBiZWNvbWVzIGRpc2FibGVkLgot
ICAgIHZpcnR1YWwgYm9vbCBzdGF0ZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiwgQ29udHJvbFN0YXRl
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc3RhdGVDaGFuZ2VkKFJlbmRlck9iamVjdCosIENv
bnRyb2xTdGF0ZXM6OlN0YXRlcykgY29uc3Q7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxs
ZWQgd2hlbmV2ZXIgdGhlIHRoZW1lIGNoYW5nZXMgb24gdGhlIHN5c3RlbSBpbiBvcmRlciB0byBm
bHVzaCBjYWNoZWQgcmVzb3VyY2VzIGZyb20gdGhlCiAgICAgLy8gb2xkIHRoZW1lLgpAQCAtMzY5
LDggKzM3MCw4IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiBwdWJsaWM6Ci0gICAgLy8gTWV0aG9k
cyBmb3Igc3RhdGUgcXVlcnlpbmcKLSAgICBDb250cm9sU3RhdGVzIGNvbnRyb2xTdGF0ZXNGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0OworICAgIHZvaWQgdXBkYXRlQ29u
dHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCosIENvbnRyb2xTdGF0ZXMq
KSBjb25zdDsKKyAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMgZXh0cmFjdENvbnRyb2xTdGF0ZXNG
b3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICBib29sIGlzQWN0aXZl
KGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIGJvb2wgaXNDaGVja2VkKGNvbnN0IFJl
bmRlck9iamVjdCopIGNvbnN0OwogICAgIGJvb2wgaXNJbmRldGVybWluYXRlKGNvbnN0IFJlbmRl
ck9iamVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCmluZGV4IDA1NmU5ZDQ3NmY0ODQ0NDRhNWZlMWQyMGIxMDU3ZDg0ZjdiMDY5YjkuLmFkNTNi
NGNhM2Q3ZTcyMTAzYjIyOTMyZjQzNDliOWY0NzhkMzcwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTIxMiw3ICsyMTIsOCBAQCBSZW5kZXJUaGVt
ZU1hYzo6flJlbmRlclRoZW1lTWFjKCkKIAogTlNWaWV3KiBSZW5kZXJUaGVtZU1hYzo6ZG9jdW1l
bnRWaWV3Rm9yKFJlbmRlck9iamVjdCogbykgY29uc3QKIHsKLSAgICByZXR1cm4gVGhlbWVNYWM6
OmVuc3VyZWRWaWV3KCZvLT52aWV3KCkuZnJhbWVWaWV3KCksIGNvbnRyb2xTdGF0ZXNGb3JSZW5k
ZXJlcihvKSk7CisgICAgQ29udHJvbFN0YXRlcyBzdGF0ZXMoZXh0cmFjdENvbnRyb2xTdGF0ZXNG
b3JSZW5kZXJlcihvKSk7CisgICAgcmV0dXJuIFRoZW1lTWFjOjplbnN1cmVkVmlldygmby0+dmll
dygpLmZyYW1lVmlldygpLCAmc3RhdGVzKTsKIH0KIAogI2lmIEVOQUJMRShWSURFTykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228038</attachid>
            <date>2014-03-28 04:13:49 -0700</date>
            <delta_ts>2014-03-28 11:02:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130736-20140328221258.patch</filename>
            <type>text/plain</type>
            <size>55976</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE2N2E0Mzc0OGRiYThl
MmY5ODdkMzMwOWI2OGIzNWQyZmEzZTU0ZS4uM2I0MzFiMzNmMmU2ZDJmOTYzZWM2Mjg4M2FjYmNl
MTI0ZDcxYmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDE0LTAzLTI3ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGZvcm0gY29udHJv
bHMgdGhhdCBtYXkgbmVlZCBpbmNyZW1lbnRhbCByZWRyYXcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDczNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGFyZSBzb21lIGZvcm0gY29udHJvbHMg
dGhhdCBjaGFuZ2UgYXBwZWFyYW5jZQorICAgICAgICBvdmVyIHRpbWUuIEV4cGFuZCB0aGUgQ29u
dHJvbFN0YXRlcyBzbyB0aGF0IGl0IGNhbgorICAgICAgICBob2xkIGEgbGl0dGxlIG1vcmUgaW5m
b3JtYXRpb24sIGluY2x1ZGluZyBhIHJlZmVyZW5jZQorICAgICAgICB0byB0aGUgbmF0aXZlIGZv
cm0gY29udHJvbC4gVGhpcyB3YXkgdGhlIFRoZW1lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGNh
biByZXBhaW50IHRoZSBleGlzdGluZyBuYXRpdmUgY29udHJvbCBpZiBuZWNlc3NhcnkuIEF0Cisg
ICAgICAgIGxlYXN0IFRoZW1lTWFjIHdhcyByZXVzaW5nIGEgc2luZ2xlIGNvbnRyb2wgZm9yIHBh
aW50aW5nCisgICAgICAgIGFsbCBpbnN0YW5jZXMgYmVmb3JlIHRoaXMgY2hhbmdlLgorCisgICAg
ICAgIFNpbmNlIENvbnRyb2xTdGF0ZXMgaXMgbm93IGEgY2xhc3MsIHBhc3MgaXQgYXJvdW5kIGJ5
CisgICAgICAgIHJlZmVyZW5jZS4KKworICAgICAgICBUaGUgb3RoZXIgbWFqb3IgY2hhbmdlIGlz
IGtlZXBpbmcgYSB0aW1lciB0byB0cmlnZ2VyIGEKKyAgICAgICAgcmVwYWludCBpbiBSZW5kZXJC
b3gsIHdoaWNoIGhhcHBlbnMgaWYgVGhlbWUvUmVuZGVyVGhlbWUKKyAgICAgICAgdXBkYXRlIHRo
ZSBDb250cm9sU3RhdGUgdG8gcmVxdWVzdCBvbmUuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBDb250cm9sU3RhdGVzLmguCisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOiBEaXR0by4KKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBY3RpdmUpOiBTdGF0ZXMg
bm93IHdpdGhpbiBDb250cm9sU3RhdGVzLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0
SG92ZXJlZCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hh
bmdlZCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNhYmxlZFN0YXRl
Q2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6cmVhZE9ubHlBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNl
dENoZWNrZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNl
dEluZGV0ZXJtaW5hdGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaDogTmV3IGZpbGUu
IENvcGllZCB0aGUgb2xkIENvbnRyb2xTdGF0ZXMgZW51bSwKKyAgICAgICAgYW5kIGFkZGVkIGFj
Y2Vzc29ycyB0byBob2xkIHdoZXRoZXIgb3Igbm90IHRoZSBzdGF0ZSBpcyBkaXJ0eSwgYW5kCisg
ICAgICAgIGEgcmVmZXJlbmNlIHRvIGEgcGxhdGZvcm0gY29udHJvbCBpZiBuZWNlc3NhcnkuCisg
ICAgICAgICogcGxhdGZvcm0vVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpzZWxl
Y3Rpb25Db2xvcik6IFBhc3MgQ29udHJvbFN0YXRlcyBwb2ludGVyLgorICAgICAgICAoV2ViQ29y
ZTo6VGhlbWU6OnBhaW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6aW5mbGF0
ZUNvbnRyb2xQYWludFJlY3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZVR5cGVz
Lmg6IFJlbW92ZSBDb250cm9sU3RhdGVzIGVudW0uCisgICAgICAgICogcGxhdGZvcm0vZWZsL1Jl
bmRlclRoZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphcHBs
eUVkamVTdGF0ZUZyb21Gb3JtKTogUGFzcyBDb250cm9sU3RhdGVzIHBvaW50ZXIuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBhcnQpOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaDogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbToKKyAgICAgICAgKC1bV2ViQ29yZVRoZW1lVmlldyBhZGRTdWJ2aWV3Ol0pOiBOZXcg
bWV0aG9kIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBhZGQgQ0FMYXllciBiYWNrZWQKKyAgICAgICAg
dmlld3MgdG8gdGhlIE5TVmlldyB3ZSdyZSB1c2luZyBmb3IgcmVuZGVyaW5nLgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlU3RhdGVzKTogVXNlIHRoZSBwcml2YXRlIGFuaW1hdGVkIHNldHRlcnMg
aWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydENvbnRyb2xTdGF0ZXNUb1Ro
ZW1lRHJhd1N0YXRlKTogTmFtZXNwYWNpbmcuCisgICAgICAgIChXZWJDb3JlOjpjb25maWd1cmVD
aGVja2JveCk6IFBhc3MgQ29udHJvbFN0YXRlcyBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ2hlY2tib3hDZWxsKTogTmV3IGhlbHBlciBzaW5jZSB3ZSdyZSBjcmVhdGluZyBub24t
c3RhdGljIGNlbGxzLgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQ2hlY2tib3hDZWxsKTogVGhl
IG9sZCBzdGF0aWMgcHJvdmlkZXIsIHJlbmFtZWQuCisgICAgICAgIChXZWJDb3JlOjpwYWludENo
ZWNrYm94KTogQ2hlY2sgaWYgdGhpcyBwYWludCB3YXMgdHJpZ2dlcmVkIGJ5IGEgc3RhdGUgY2hh
bmdlCisgICAgICAgIG9yIGFuIGFuaW1hdGlvbi4gVXBkYXRlIHRoZSBDb250cm9sU3RhdGVzIGlm
IHdlIG5lZWQgdG8gYmUgcmVwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6cmFkaW8pOiBQYXJh
bWV0ZXIgaXMgbm93IENvbnRyb2xTdGF0ZXMqLgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRSYWRp
byk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2V0VXBCdXR0b25DZWxsKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpidXR0b24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBhaW50
QnV0dG9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjplbnN1cmVkVmlldyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6cGFpbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrYm94KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6UmVuZGVyQm94KTogSW5pdGlhbGl6ZSB0
aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6flJlbmRlckJveCk6IFN0b3AgYW55
IHBlbmRpbmcgdGltZXJzIGFuZCBkZWxldGUgdGhlIENvbnRyb2xTdGF0ZSBpZiBuZWNlc3Nhcnku
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOiBDcmVh
dGUgYSBDb250cm9sU3RhdGVzIGlmIG5lZWRlZC4gUGFpbnQsIGFuZCBzdGFydCB0aGUgcmVwYWlu
dAorICAgICAgICB0aW1lciBpZiB0aGUgQ29udHJvbFN0YXRlcyBzYXkgd2Ugc2hvdWxkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpyZXBhaW50VGltZXJGaXJlZCk6IENhbGwgcmVwYWlu
dCB3aGVuIHRoZSB0aW1lciBmaXJlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6
IEFkZCBhIHRpbWVyIGZvciByZXBhaW50aW5nLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCk6
IEEgc3RhdGljIEhhc2hNYXAgdGhhdCBhc3NvY2lhdGVzIHJlbmRlcmVycyB3aXRoIENvbnRyb2xT
dGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpoYXNDb250cm9sU3RhdGVz
Rm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Y29udHJvbFN0
YXRlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnJlbW92
ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50OjphZGRDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludCk6IFVzZSBhIHBvaW50ZXIgdG8gQ29u
dHJvbFN0YXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RSZXBhaW50
UmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdl
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnVwZGF0ZUNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcik6IE5ldyBtZXRob2QgdGhhdCBqdXN0IHVwZGF0ZXMgdGhlIHN0YXRl
cyBwYXJ0IG9mIENvbnRyb2xTdGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6
ZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6IE5ldyBtZXRob2QgdGhhdCBjYWxjdWxh
dGVzIHRoZSBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpjb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjpkb2N1bWVudFZpZXdGb3IpOiBVc2UgYSBDb250cm9sU3Rh
dGVzIHBvaW50ZXIuCisKIDIwMTQtMDMtMjcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCB1bm5lZWRlZCAibXV0YWJsZSIga2V5d29y
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggZjIxMmY3ODExMTA2ZTZiZjI5Nzc2ZTZlZTQzNTFhODhiYmZmM2E5Yy4uODc1YWU5NDk1NDc1
NzQyMjAwZGMyZTJjN2NjNGJmMDg4NGM3Mzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xOTA4NCw2ICsxOTA4NCw3IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDb250ZW50VHlwZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udGV4dE1lbnUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENvbnRleHRNZW51SXRlbS5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udHJvbFN0YXRlcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29va2llc1N0cmF0ZWd5LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDcm9zc1RocmVhZENvcGllci5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ3Vyc29yLmgiIC8+CkBAIC0yMTEz
MCw0ICsyMTEzMSw0IEBACiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+
CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXEJ1aWxkQ3VzdG9taXphdGlv
bnNcbWFzbS50YXJnZXRzIiAvPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA0NGY2NTBi
OWEyOWM2OWM3ZDdmN2MzZThiOTc3MTA2YmYwMGE2OWM4Li4wZWQzZTA4MDQwZjY2YWYyMWVhNGYx
Yjc5YTAxYjFiNjU1ZjZiMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03OTY5LDYgKzc5NjksOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udGV4dE1lbnVJdGVtLmgiPgog
ICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udHJvbFN0YXRlcy5oIj4KKyAgICAgIDxG
aWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENvb2tpZXNTdHJhdGVneS5oIj4KICAgICAgIDxGaWx0ZXI+
cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTE1MTQ3LDQgKzE1MTUwLDQg
QEAKICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cd2luPC9GaWx0ZXI+CiAgICAgPC9NQVNNPgogICA8
L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1By
b2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNTAzMjBiMmM5ZTgzNzQxZTY2M2U3NTIwZDhlMjZhN2MwYWQyNjdlMC4uNGI1
YjhhMGFiYWVkOWVlNzIxYTE2OTdkNDdiNGZhNTMwZDRiYTg1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODAzNCw2ICs4MDM0
LDcgQEAKIAkJMzEwNzhDQzQxODgwQTZBNjAwODA5OURDIC8qIE9FU1RleHR1cmVIYWxmRmxvYXRM
aW5lYXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE9FU1RleHR1cmVIYWxmRmxvYXRMaW5l
YXIuaWRsOyBwYXRoID0gY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA3OENDNTE4ODBBQUFBMDA4MDk5REMgLyogSlNP
RVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxMDc4Q0M2MTg4MEFBQUEwMDgwOTlEQyAvKiBKU09FU1RleHR1cmVI
YWxmRmxvYXRMaW5lYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPRVNU
ZXh0dXJlSGFsZkZsb2F0TGluZWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
MUMwOEJDMThFMzVENjgwMEI2NTYxNSAvKiBDb250cm9sU3RhdGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRyb2xTdGF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzEyODhFNkUwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lUnVs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NLZXlm
cmFtZVJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTI4OEU2RjBFMzAw
NUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU0tleWZyYW1lUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMTI4OEU3MDBFMzAwNUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJh
bWVzUnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODc4
LDYgKzIwODc5LDcgQEAKIAkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkzMTFDMDhCQzE4
RTM1RDY4MDBCNjU2MTUgLyogQ29udHJvbFN0YXRlcy5oICovLAogCQkJCTQ5RTkxMkE0MEVGQUM4
RTYwMDlEMENBRiAvKiBhbmltYXRpb24gKi8sCiAJCQkJRkQzMTYwNDAxMkIwMjZBMzAwQzFBMzU5
IC8qIGF1ZGlvICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCBhZTI2NTkyNDlhOGQ3NTIxOTM0MDc4Y2FlZTc3YTAwY2I1
NDZiYTcwLi44ODkwMGRmZmE1MDg2NzJlYzU3M2U3M2FhOGVjZjM5N2Y2YmZkMWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC00ODcsNyArNDg3LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRBY3Rp
dmUoYm9vbCBmbGFnLCBib29sIHBhdXNlKQogICAgIGlmIChyZWFjdHNUb1ByZXNzKQogICAgICAg
ICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKLSAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5o
YXNBcHBlYXJhbmNlKCkgJiYgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVy
ZXIoKSwgUHJlc3NlZFN0YXRlKSkKKyAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBl
YXJhbmNlKCkgJiYgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwg
Q29udHJvbFN0YXRlczo6UHJlc3NlZFN0YXRlKSkKICAgICAgICAgcmVhY3RzVG9QcmVzcyA9IHRy
dWU7CiAKICAgICAvLyBUaGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgYSBmZWF0
dXJlIHRoYXQgb25seSB3b3JrcyBpZiB0aGUKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIEVsZW1l
bnQ6OnNldEhvdmVyZWQoYm9vbCBmbGFnKQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7
CiAKICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAg
IHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUp
OworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBD
b250cm9sU3RhdGVzOjpIb3ZlclN0YXRlKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRv
Vmlldyhib29sIGFsaWduVG9Ub3ApIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcAppbmRleCA2MTAxZjY0YmQ2OGZjZTIyODAwYjQ2NzUzMWMyOTNiMmIxYzQxMjA4Li40
OWE4NzgzY2M5M2M4NmRjODg1MTI1MTFjZmYxNjdiMjRhNmY1MTRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTc0NSw3ICsxNzQ1LDcgQEAgdm9pZCBG
cmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKCkKICAgICAgICAgZWxl
bWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBpZiAocmVuZGVyZXIg
JiYgcmVuZGVyZXItPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJl
bmRlcmVyLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlciwgRm9jdXNTdGF0ZSk7CisgICAg
ICAgICAgICAgICAgcmVuZGVyZXItPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyLCBDb250
cm9sU3RhdGVzOjpGb2N1c1N0YXRlKTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDNiMjVjYjBkM2M4ZGRl
NWExMmMzNTY4YmRkZjY0ZmY2MWQ2ZGYxY2QuLjlhMTIxYzgyYWY2MzAwMDY4ODY5YjYyMzJmNjI3
ZGY4MzkwMDY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNvbnRyb2xTdGF0
ZXMuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTE1NCw3ICsxNTUsNyBAQCB2b2lkIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKICAgICBzZXROZWVkc1dpbGxWYWxp
ZGF0ZUNoZWNrKCk7CiAgICAgZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3RvckRpc2Fi
bGVkIHwgQWZmZWN0ZWRTZWxlY3RvckVuYWJsZWQpOwogICAgIGlmIChyZW5kZXJlcigpICYmIHJl
bmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOworICAgICAgICBy
ZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVz
OjpFbmFibGVkU3RhdGUpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRP
bmx5QXR0cmlidXRlQ2hhbmdlZCgpCkBAIC0xNjIsNyArMTYzLDcgQEAgdm9pZCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpyZWFkT25seUF0dHJpYnV0ZUNoYW5nZWQoKQogICAgIHNldE5lZWRzV2ls
bFZhbGlkYXRlQ2hlY2soKTsKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgaWYgKHJl
bmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAg
IHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFJlYWRPbmx5U3Rh
dGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigp
LCBDb250cm9sU3RhdGVzOjpSZWFkT25seVN0YXRlKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNThhOTQwY2Q2MTBlOTAyNTgxOTMwMmZlYjI4N2Uz
ZDI0ZTBkYjdhOC4uODA0MDY5Y2U0Mzc0ZmI2OWQwMzExNWQ1NWRlNzI2ODhmMDNkNTVhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC04NTksNyArODU5LDcg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVja2VkKGJvb2wgbm93Q2hlY2tlZCwgVGV4
dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEIKICAgICBpZiAoQ2hlY2tlZFJhZGlvQnV0dG9ucyog
YnV0dG9ucyA9IGNoZWNrZWRSYWRpb0J1dHRvbnMoKSkKICAgICAgICAgICAgIGJ1dHRvbnMtPnVw
ZGF0ZUNoZWNrZWRTdGF0ZSh0aGlzKTsKICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigp
LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5z
dGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIo
KS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6Q2hlY2tl
ZFN0YXRlKTsKICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKIAogICAgIC8vIElkZWFsbHkg
d2UnZCBkbyB0aGlzIGZyb20gdGhlIHJlbmRlciB0cmVlIChtYXRjaGluZwpAQCAtODkzLDcgKzg5
Myw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0ZShib29sIG5ld1Zh
bHVlKQogICAgIGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JJbmRldGVybWluYXRl
KTsKIAogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFy
YW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJl
cigpLCBDaGVja2VkU3RhdGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hh
bmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGUpOwogfQogCiBpbnQg
SFRNTElucHV0RWxlbWVudDo6c2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuY3BwCmluZGV4IDllMzZmYTljZjRkNjYxYWFmMGJjM2JkZGYzN2U5ZTUxMjRk
ZDNhODEuLjQ5ZjQ4YmYzODFlOWI0NTA0OTQ0ZmJhMDU0MDVhOTlkNDc5MzE2OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
dm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICAgICAgaWYgKG9sZERpc2FibGVkICE9IG1fZGlz
YWJsZWQpIHsKICAgICAgICAgICAgIGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JE
aXNhYmxlZCB8IEFmZmVjdGVkU2VsZWN0b3JFbmFibGVkKTsKICAgICAgICAgICAgIGlmIChyZW5k
ZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAg
ICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJs
ZWRTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5n
ZWQocmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAobmFtZSA9PSBzZWxlY3RlZEF0dHIpIHsKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgZG9lc24ndCBtYXRjaCB3aGF0IHRoZSBIVE1MIHNwZWNpZmljYXRpb24gc2F5cy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjQ3ZjU5YTI0
MDQzMWUxZjczMmYwODJiN2Q3ZDdjNmFhMWIxYjA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udHJvbFN0YXRlcy5oCkBAIC0wLDAgKzEsMTA0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb250cm9s
U3RhdGVzX2gKKyNkZWZpbmUgQ29udHJvbFN0YXRlc19oCisKKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmbmRlZiBfX09CSkNfXwordHlwZWRl
ZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOworI2VuZGlmCisKK3R5cGVkZWYgaWQgUGxhdGZvcm1D
b250cm9sSW5zdGFuY2U7CisKK2NsYXNzIENvbnRyb2xTdGF0ZXMgeworcHVibGljOgorICAgIGVu
dW0geworICAgICAgICBIb3ZlclN0YXRlID0gMSwKKyAgICAgICAgUHJlc3NlZFN0YXRlID0gMSA8
PCAxLAorICAgICAgICBGb2N1c1N0YXRlID0gMSA8PCAyLAorICAgICAgICBFbmFibGVkU3RhdGUg
PSAxIDw8IDMsCisgICAgICAgIENoZWNrZWRTdGF0ZSA9IDEgPDwgNCwKKyAgICAgICAgUmVhZE9u
bHlTdGF0ZSA9IDEgPDwgNSwKKyAgICAgICAgRGVmYXVsdFN0YXRlID0gMSA8PCA2LAorICAgICAg
ICBXaW5kb3dJbmFjdGl2ZVN0YXRlID0gMSA8PCA3LAorICAgICAgICBJbmRldGVybWluYXRlU3Rh
dGUgPSAxIDw8IDgsCisgICAgICAgIFNwaW5VcFN0YXRlID0gMSA8PCA5LCAvLyBTdWItc3RhdGUg
Zm9yIEhvdmVyU3RhdGUgYW5kIFByZXNzZWRTdGF0ZS4KKyAgICAgICAgQWxsU3RhdGVzID0gMHhm
ZmZmZmZmZgorICAgIH07CisKKyAgICB0eXBlZGVmIHVuc2lnbmVkIFN0YXRlczsKKworICAgIENv
bnRyb2xTdGF0ZXMoU3RhdGVzIHN0YXRlcykKKyAgICAgICAgOiBtX3N0YXRlcyhzdGF0ZXMpCisg
ICAgICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKKyAgICAgICAgLCBtX25lZWRzUmVwYWludChm
YWxzZSkKKyAgICAgICAgLCBtX2lzRGlydHkoZmFsc2UpCisgICAgICAgICwgbV9jb250cm9sSW5z
dGFuY2UobnVsbHB0cikKKyAgICB7CisgICAgfQorCisgICAgQ29udHJvbFN0YXRlcygpCisgICAg
ICAgIDogQ29udHJvbFN0YXRlcygwKQorICAgIHsKKyAgICB9CisKKyAgICB+Q29udHJvbFN0YXRl
cygpCisgICAgeworICAgIH0KKworICAgIFN0YXRlcyBzdGF0ZXMoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlczsgfQorICAgIHZvaWQgc2V0U3RhdGVzKFN0YXRlcyBuZXdTdGF0ZXMpCisgICAgewor
ICAgICAgICBpZiAobmV3U3RhdGVzID09IG1fc3RhdGVzKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX3N0YXRlcyA9IG5ld1N0YXRlczsKKyAgICAgICAgbV9pc0RpcnR5ID0gbV9pbml0
aWFsaXplZDsKKyAgICAgICAgbV9pbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisgICAgYm9v
bCBuZWVkc1JlcGFpbnQoKSBjb25zdCB7IHJldHVybiBtX25lZWRzUmVwYWludDsgfQorICAgIHZv
aWQgc2V0TmVlZHNSZXBhaW50KGJvb2wgcikgeyBtX25lZWRzUmVwYWludCA9IHI7IH0KKworICAg
IGJvb2wgaXNEaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJ0eTsgfQorICAgIHZvaWQgc2V0
RGlydHkoYm9vbCBkKSB7IG1faXNEaXJ0eSA9IGQ7IH0KKworICAgIFBsYXRmb3JtQ29udHJvbElu
c3RhbmNlIHBsYXRmb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbEluc3RhbmNl
LmdldCgpOyB9CisgICAgdm9pZCBzZXRQbGF0Zm9ybUNvbnRyb2woUGxhdGZvcm1Db250cm9sSW5z
dGFuY2UgaW5zdGFuY2UpIHsgbV9jb250cm9sSW5zdGFuY2UgPSBpbnN0YW5jZTsgfQorCitwcml2
YXRlOgorICAgIFN0YXRlcyBtX3N0YXRlczsKKyAgICBib29sIG1faW5pdGlhbGl6ZWQ7CisgICAg
Ym9vbCBtX25lZWRzUmVwYWludDsKKyAgICBib29sIG1faXNEaXJ0eTsKKyAgICBSZXRhaW5QdHI8
UGxhdGZvcm1Db250cm9sSW5zdGFuY2U+IG1fY29udHJvbEluc3RhbmNlOworfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCmluZGV4IDUwNTA0NmM0ZGU4N2VjNmFkZWIzYjgx
OGVhZWNkMDk3YmJhZjBjM2UuLmZiMDFhN2ExYzVlNDgxNmE2ZTA0NTAzYTYyNzUxMzAyNmQyNGE4
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBU
aGVtZV9oCiAKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvbnRyb2xTdGF0ZXMuaCIK
ICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxlbmd0
aEJveC5oIgpAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvbnRy
b2xEcmF3c0ZvY3VzT3V0bGluZShDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgLy8gTWV0aG9kcyBmb3Igb2J0YWluaW5nIHBsYXRmb3JtLXNwZWNpZmljIGNvbG9ycy4K
LSAgICB2aXJ0dWFsIENvbG9yIHNlbGVjdGlvbkNvbG9yKENvbnRyb2xQYXJ0LCBDb250cm9sU3Rh
dGUsIFNlbGVjdGlvblBhcnQpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KKyAgICB2aXJ0dWFs
IENvbG9yIHNlbGVjdGlvbkNvbG9yKENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzKiwg
U2VsZWN0aW9uUGFydCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQogICAgIHZpcnR1YWwgQ29s
b3IgdGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQog
ICAgIAogICAgIC8vIENTUyBzeXN0ZW0gY29sb3JzIGFuZCBmb250cwpAQCAtOTcsMTMgKzk4LDEz
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFj
ZShDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIE1ldGhvZCBm
b3IgcGFpbnRpbmcgYSBjb250cm9sLiBUaGUgcmVjdCBpcyBpbiB6b29tZWQgY29vcmRpbmF0ZXMu
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzLCBHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29t
RmFjdG9yKi8sIFNjcm9sbFZpZXcqKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
Q29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8sIFNjcm9sbFZpZXcqKSB7
IH0KIAogICAgIC8vIFNvbWUgY29udHJvbHMgbWF5IHNwaWxsIG91dCBvZiB0aGVpciBjb250YWlu
ZXJzIChlLmcuLCB0aGUgY2hlY2sgb24gYW4gT1MgWCBjaGVja2JveCkuICBXaGVuIHRoZXNlIGNv
bnRyb2xzIHJlcGFpbnQsCiAgICAgLy8gdGhlIHRoZW1lIG5lZWRzIHRvIGNvbW11bmljYXRlIHRo
aXMgaW5mbGF0ZWQgcmVjdCB0byB0aGUgZW5naW5lIHNvIHRoYXQgaXQgY2FuIGludmFsaWRhdGUg
dGhlIHdob2xlIGNvbnRyb2wuCiAgICAgLy8gVGhlIHJlY3QgcGFzc2VkIGluIGlzIGluIHpvb21l
ZCBjb29yZGluYXRlcywgc28gdGhlIGluZmxhdGlvbiBzaG91bGQgdGFrZSB0aGF0IGludG8gYWNj
b3VudCBhbmQgbWFrZSBzdXJlIHRoZSBpbmZsYXRpb24KICAgICAvLyBhbW91bnQgaXMgYWxzbyBz
Y2FsZWQgYnkgdGhlIHpvb21GYWN0b3IuCi0gICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9s
UGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzLCBJbnRSZWN0JiAvKnpvb21lZFJl
Y3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBp
bmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyos
IEludFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyB9
CiAgICAgCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uY2UsIGZyb20gUmVuZGVyVGhl
bWU6OmFkanVzdERlZmF1bHRTdHlsZVNoZWV0KCksIHRvIGxldCBlYWNoIHBsYXRmb3JtIGFkanVz
dAogICAgIC8vIHRoZSBkZWZhdWx0IENTUyBydWxlcyBpbiBodG1sLmNzcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RoZW1lVHlwZXMuaAppbmRleCBkOGFiMThmZmFjOWI1MDRmZjdmOWFmOGEwMDQ5Mzlh
MDAxMTU2Y2IxLi45NzNlNzc0NjBiZWM2NTJjYWNhMGRlZDNmNTZmOGJmOTRhNTY3YzU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oCkBAIC0yOCwyMiArMjgsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gQ29udHJvbFN0YXRlIHsKLSAgICBIb3ZlclN0YXRlID0g
MSwKLSAgICBQcmVzc2VkU3RhdGUgPSAxIDw8IDEsCi0gICAgRm9jdXNTdGF0ZSA9IDEgPDwgMiwK
LSAgICBFbmFibGVkU3RhdGUgPSAxIDw8IDMsCi0gICAgQ2hlY2tlZFN0YXRlID0gMSA8PCA0LAot
ICAgIFJlYWRPbmx5U3RhdGUgPSAxIDw8IDUsCi0gICAgRGVmYXVsdFN0YXRlID0gMSA8PCA2LAot
ICAgIFdpbmRvd0luYWN0aXZlU3RhdGUgPSAxIDw8IDcsCi0gICAgSW5kZXRlcm1pbmF0ZVN0YXRl
ID0gMSA8PCA4LAotICAgIFNwaW5VcFN0YXRlID0gMSA8PCA5LCAvLyBTdWItc3RhdGUgZm9yIEhv
dmVyU3RhdGUgYW5kIFByZXNzZWRTdGF0ZS4KLSAgICBBbGxTdGF0ZXMgPSAweGZmZmZmZmZmCi19
OwotCi10eXBlZGVmIHVuc2lnbmVkIENvbnRyb2xTdGF0ZXM7Ci0KIC8vIE11c3QgZm9sbG93IENT
U1ZhbHVlS2V5d29yZHMuaW4gb3JkZXIKIGVudW0gQ29udHJvbFBhcnQgewogICAgIE5vQ29udHJv
bFBhcnQsIENoZWNrYm94UGFydCwgUmFkaW9QYXJ0LCBQdXNoQnV0dG9uUGFydCwgU3F1YXJlQnV0
dG9uUGFydCwgQnV0dG9uUGFydCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVu
ZGVyVGhlbWVFZmwuY3BwCmluZGV4IGY4NjQ3ODU5MTc1MjM3NGNiZGRjMDU0ZjM2OGMwMTQ4MjYz
N2QzZWIuLmY5ZDIxYzk5NmY4ZjNmMzA1NDYwNjM2NjUxMWEwOTk4ZjkwNjRiNDkgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcApAQCAtMjk2LDcg
KzI5Niw3IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmNsZWFyVGhlbWVQYXJ0Q2FjaGUoKQogCiB9
CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5RWRqZVN0YXRlRnJvbUZvcm0oRXZhc19PYmpl
Y3QqIG9iamVjdCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIGJvb2wgaGF2ZUJhY2tncm91bmQpCit2
b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0KiBv
YmplY3QsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgYm9vbCBoYXZlQmFja2dyb3VuZCkK
IHsKICAgICBjb25zdCBjaGFyICpzaWduYWxzW10gPSB7IC8vIGtlZXAgaW4gc3luYyB3aXRoIFdl
YkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oCiAgICAgICAgICJob3ZlcmVkIiwKQEAgLTMxNCw3
ICszMTQsNyBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2
YXNfT2JqZWN0KiBvYmplY3QsIENvbnRyb2xTdGF0ZXMgcwogICAgIGVkamVfb2JqZWN0X3NpZ25h
bF9lbWl0KG9iamVjdCwgInJlc2V0IiwgIiIpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBXVEZfQVJSQVlfTEVOR1RIKHNpZ25hbHMpOyArK2kpIHsKLSAgICAgICAgaWYgKHN0YXRlcyAm
ICgxIDw8IGkpKQorICAgICAgICBpZiAoc3RhdGVzLT5zdGF0ZXMoKSAmICgxIDw8IGkpKQogICAg
ICAgICAgICAgZWRqZV9vYmplY3Rfc2lnbmFsX2VtaXQob2JqZWN0LCBzaWduYWxzW2ldLCAiIik7
CiAgICAgfQogCkBAIC0zODMsNyArMzgzLDggQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRU
aGVtZVBhcnQoUmVuZGVyT2JqZWN0KiBvYmplY3QsIEZvcm1UeXBlIHR5cGUsIGNvbnN0IFAKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBoYXZlQmFja2dyb3VuZENvbG9yID0gaXND
b250cm9sU3R5bGVkKCZvYmplY3QtPnN0eWxlKCksIG9iamVjdC0+c3R5bGUoKS5ib3JkZXIoKSwg
Km9iamVjdC0+c3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIENvbG9yOjp3aGl0ZSk7Ci0gICAg
YXBwbHlFZGplU3RhdGVGcm9tRm9ybShlbnRyeS0+ZWRqZSgpLCBjb250cm9sU3RhdGVzRm9yUmVu
ZGVyZXIob2JqZWN0KSwgaGF2ZUJhY2tncm91bmRDb2xvcik7CisgICAgQ29udHJvbFN0YXRlcyBz
dGF0ZXMoZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvYmplY3QpKTsKKyAgICBhcHBs
eUVkamVTdGF0ZUZyb21Gb3JtKGVudHJ5LT5lZGplKCksICZzdGF0ZXMsIGhhdmVCYWNrZ3JvdW5k
Q29sb3IpOwogCiAgICAgYXBwbHlFZGplUlRMU3RhdGUoZW50cnktPmVkamUoKSwgb2JqZWN0LCB0
eXBlLCByZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Jl
bmRlclRoZW1lRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVF
ZmwuaAppbmRleCBlNmRhMDRlZDIxNzM5ZDU1MGFiZmUxZmYyYzZmMWJlZTgxOTI0ZDAyLi4wMGYw
YmI3YzU2Y2FjM2VkNDBjZjMyOWYxYWEwZTI4ZDMzNzgyZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaApAQCAtMjI5LDcgKzIyOSw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGFwcGx5UGFydERlc2NyaXB0aW9uc0Zyb20oY29uc3QgU3RyaW5nJiB0
aGVtZVBhdGgpOwogCi0gICAgdm9pZCBhcHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0
KiwgQ29udHJvbFN0YXRlcywgYm9vbCk7CisgICAgdm9pZCBhcHBseUVkamVTdGF0ZUZyb21Gb3Jt
KEV2YXNfT2JqZWN0KiwgY29uc3QgQ29udHJvbFN0YXRlcyosIGJvb2wpOwogICAgIHZvaWQgYXBw
bHlFZGplUlRMU3RhdGUoRXZhc19PYmplY3QqLCBSZW5kZXJPYmplY3QqLCBGb3JtVHlwZSwgY29u
c3QgSW50UmVjdCYpOwogICAgIGJvb2wgcGFpbnRUaGVtZVBhcnQoUmVuZGVyT2JqZWN0KiwgRm9y
bVR5cGUsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVGhlbWVNYWMuaAppbmRleCA4YjdlOTgyMmRmYjU0MWQ5MzA0MjNhNGY1N2M3
MWZhZWMwOTU4ZTMwLi5kNzM5NTIzNjBiNDA0NmI2ZjcxZTM3NGJhYjI0ZWM3M2RlYWZiNWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaApAQCAtNTEsMTEgKzUxLDExIEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBjb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNl
KENvbnRyb2xQYXJ0IHBhcnQpIGNvbnN0IHsgcmV0dXJuIHBhcnQgPT0gUHVzaEJ1dHRvblBhcnQ7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcywg
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9s
bFZpZXcqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWludFJlY3Qo
Q29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMsIEludFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMq
LCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgZmxvYXQgem9vbUZhY3RvciwgU2Ny
b2xsVmlldyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50
UmVjdChDb250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyosIEludFJlY3QmLCBmbG9hdCB6
b29tRmFjdG9yKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBPbmNlIFJlbmRlclRoZW1lTWFjIGlz
IGNvbnZlcnRlZCBvdmVyIHRvIHVzZSBUaGVtZSB0aGVuIHRoaXMgY2FuIGJlIGludGVybmFsIHRv
IFRoZW1lTWFjLgotICAgIHN0YXRpYyBOU1ZpZXcqIGVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqLCBD
b250cm9sU3RhdGVzKTsKKyAgICBzdGF0aWMgTlNWaWV3KiBlbnN1cmVkVmlldyhTY3JvbGxWaWV3
KiwgY29uc3QgQ29udHJvbFN0YXRlcyopOwogICAgIHN0YXRpYyB2b2lkIHNldEZvY3VzUmluZ0Ns
aXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RoZW1lTWFjLm1tCmluZGV4IDg0NTI1Y2NkZjdiYzQzNWI4MDg2MTIxN2EwYTFlMGJmMGFjYzYz
Y2EuLjc1YzA2ODZiYzA3NWU1ZGNjNDcxYzFmNWNkODhhNDJmMDgyZTFmZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTM1LDYgKzM1LDE1IEBACiAjaW1wb3J0
IDxDYXJib24vQ2FyYm9uLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCisjaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMAorQGludGVyZmFjZSBOU0J1
dHRvbkNlbGwoRGV0YWlscykKKy0gKHZvaWQpX3NldFN0YXRlOihOU0ludGVnZXIpdmFsdWUgYW5p
bWF0ZWQ6KEJPT0wpYW5pbWF0ZWQ7CistICh2b2lkKV9zZXRIaWdobGlnaHRlZDooQk9PTClmbGFn
IGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOworLSAodm9pZClfcmVuZGVyQ3VycmVudEFuaW1hdGlv
bkZyYW1lSW5Db250ZXh0OihDR0NvbnRleHRSZWYpY3R4dCBhdExvY2F0aW9uOihOU1BvaW50KXdo
ZXJlOworLSAoQk9PTClfc3RhdGVBbmltYXRpb25SdW5uaW5nOworQGVuZAorI2VuZGlmCisKIHN0
YXRpYyBOU1JlY3QgZm9jdXNSaW5nQ2xpcFJlY3Q7CiBzdGF0aWMgQk9PTCB0aGVtZVdpbmRvd0hh
c0tleUFwcGVhcmFuY2U7CiAKQEAgLTk3LDYgKzEwNiwxMiBAQCBzdGF0aWMgQk9PTCB0aGVtZVdp
bmRvd0hhc0tleUFwcGVhcmFuY2U7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKKy0gKHZvaWQpYWRk
U3VidmlldzooTlNWaWV3KilzdWJ2aWV3Cit7CisgICAgLy8gQnkgZG9pbmcgbm90aGluZyBpbiB0
aGlzIG1ldGhvZCB3ZSBmb3JiaWQgY29udHJvbHMgZnJvbSBhZGRpbmcgc3Vidmlld3MuCisgICAg
Ly8gVGhpcyB0ZWxscyBBcHBLaXQgdG8gbm90IHVzZSBMYXllci1iYWNrZWQgYW5pbWF0aW9uIGZv
ciBjb250cm9sIHJlbmRlcmluZy4KKyAgICBVTlVTRURfUEFSQU0oc3Vidmlldyk7Cit9CiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBOU0ZvbnQgKFdlYkNvcmVUaGVtZSkKQEAgLTE3Niw0NSArMTkx
LDU2IEBAIHN0YXRpYyB2b2lkIHNldENvbnRyb2xTaXplKE5TQ2VsbCogY2VsbCwgY29uc3QgSW50
U2l6ZSogc2l6ZXMsIGNvbnN0IEludFNpemUmIG1pCiAgICAgICAgIFtjZWxsIHNldENvbnRyb2xT
aXplOihOU0NvbnRyb2xTaXplKXNpemVdOwogfQogCi1zdGF0aWMgdm9pZCB1cGRhdGVTdGF0ZXMo
TlNDZWxsKiBjZWxsLCBDb250cm9sU3RhdGVzIHN0YXRlcykKK3N0YXRpYyB2b2lkIHVwZGF0ZVN0
YXRlcyhOU0NlbGwqIGNlbGwsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIGJv
b2wgdXNlQW5pbWF0aW9uID0gZmFsc2UpCiB7CisgICAgQ29udHJvbFN0YXRlczo6U3RhdGVzIHN0
YXRlcyA9IGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygpOworCiAgICAgLy8gSG92ZXIgc3RhdGUgaXMg
bm90IHN1cHBvcnRlZCBieSBBcXVhLgogICAgIAogICAgIC8vIFByZXNzZWQgc3RhdGUKICAgICBi
b29sIG9sZFByZXNzZWQgPSBbY2VsbCBpc0hpZ2hsaWdodGVkXTsKLSAgICBib29sIHByZXNzZWQg
PSBzdGF0ZXMgJiBQcmVzc2VkU3RhdGU7CisgICAgYm9vbCBwcmVzc2VkID0gc3RhdGVzICYgQ29u
dHJvbFN0YXRlczo6UHJlc3NlZFN0YXRlOwogICAgIGlmIChwcmVzc2VkICE9IG9sZFByZXNzZWQp
CiAgICAgICAgIFtjZWxsIHNldEhpZ2hsaWdodGVkOnByZXNzZWRdOwogICAgIAogICAgIC8vIEVu
YWJsZWQgc3RhdGUKICAgICBib29sIG9sZEVuYWJsZWQgPSBbY2VsbCBpc0VuYWJsZWRdOwotICAg
IGJvb2wgZW5hYmxlZCA9IHN0YXRlcyAmIEVuYWJsZWRTdGF0ZTsKKyAgICBib29sIGVuYWJsZWQg
PSBzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpFbmFibGVkU3RhdGU7CiAgICAgaWYgKGVuYWJsZWQg
IT0gb2xkRW5hYmxlZCkKICAgICAgICAgW2NlbGwgc2V0RW5hYmxlZDplbmFibGVkXTsKIAogICAg
IC8vIENoZWNrZWQgYW5kIEluZGV0ZXJtaW5hdGUKICAgICBib29sIG9sZEluZGV0ZXJtaW5hdGUg
PSBbY2VsbCBzdGF0ZV0gPT0gTlNNaXhlZFN0YXRlOwotICAgIGJvb2wgaW5kZXRlcm1pbmF0ZSA9
IChzdGF0ZXMgJiBJbmRldGVybWluYXRlU3RhdGUpOwotICAgIGJvb2wgY2hlY2tlZCA9IHN0YXRl
cyAmIENoZWNrZWRTdGF0ZTsKKyAgICBib29sIGluZGV0ZXJtaW5hdGUgPSAoc3RhdGVzICYgQ29u
dHJvbFN0YXRlczo6SW5kZXRlcm1pbmF0ZVN0YXRlKTsKKyAgICBib29sIGNoZWNrZWQgPSBzdGF0
ZXMgJiBDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGU7CiAgICAgYm9vbCBvbGRDaGVja2VkID0g
W2NlbGwgc3RhdGVdID09IE5TT25TdGF0ZTsKLSAgICBpZiAob2xkSW5kZXRlcm1pbmF0ZSAhPSBp
bmRldGVybWluYXRlIHx8IGNoZWNrZWQgIT0gb2xkQ2hlY2tlZCkKLSAgICAgICAgW2NlbGwgc2V0
U3RhdGU6aW5kZXRlcm1pbmF0ZSA/IE5TTWl4ZWRTdGF0ZSA6IChjaGVja2VkID8gTlNPblN0YXRl
IDogTlNPZmZTdGF0ZSldOwotICAgICAgICAKKyAgICBpZiAob2xkSW5kZXRlcm1pbmF0ZSAhPSBp
bmRldGVybWluYXRlIHx8IGNoZWNrZWQgIT0gb2xkQ2hlY2tlZCkgeworICAgICAgICBOU0NlbGxT
dGF0ZVZhbHVlIG5ld1N0YXRlID0gaW5kZXRlcm1pbmF0ZSA/IE5TTWl4ZWRTdGF0ZSA6IChjaGVj
a2VkID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZSk7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEwMAorICAgICAgICBbKE5TQnV0dG9uQ2VsbCopY2VsbCBfc2V0U3Rh
dGU6bmV3U3RhdGUgYW5pbWF0ZWQ6dXNlQW5pbWF0aW9uXTsKKyNlbHNlCisgICAgICAgIFVOVVNF
RF9QQVJBTSh1c2VBbmltYXRpb24pOworICAgICAgICBbY2VsbCBzZXRTdGF0ZTpuZXdTdGF0ZV07
CisjZW5kaWYKKyAgICB9CisKICAgICAvLyBXaW5kb3cgaW5hY3RpdmUgc3RhdGUgZG9lcyBub3Qg
bmVlZCB0byBiZSBjaGVja2VkIGV4cGxpY2l0bHksIHNpbmNlIHdlIHBhaW50IHBhcmVudGVkIHRv
IAogICAgIC8vIGEgdmlldyBpbiBhIHdpbmRvdyB3aG9zZSBrZXkgc3RhdGUgY2FuIGJlIGRldGVj
dGVkLgogfQogCi1zdGF0aWMgVGhlbWVEcmF3U3RhdGUgY29udmVydENvbnRyb2xTdGF0ZXNUb1Ro
ZW1lRHJhd1N0YXRlKFRoZW1lQnV0dG9uS2luZCBraW5kLCBDb250cm9sU3RhdGVzIHN0YXRlcykK
K3N0YXRpYyBUaGVtZURyYXdTdGF0ZSBjb252ZXJ0Q29udHJvbFN0YXRlc1RvVGhlbWVEcmF3U3Rh
dGUoVGhlbWVCdXR0b25LaW5kIGtpbmQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0
ZXMpCiB7Ci0gICAgaWYgKHN0YXRlcyAmIFJlYWRPbmx5U3RhdGUpCisgICAgQ29udHJvbFN0YXRl
czo6U3RhdGVzIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygpOworCisgICAgaWYgKHN0
YXRlcyAmIENvbnRyb2xTdGF0ZXM6OlJlYWRPbmx5U3RhdGUpCiAgICAgICAgIHJldHVybiBrVGhl
bWVTdGF0ZVVuYXZhaWxhYmxlSW5hY3RpdmU7Ci0gICAgaWYgKCEoc3RhdGVzICYgRW5hYmxlZFN0
YXRlKSkKKyAgICBpZiAoIShzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpFbmFibGVkU3RhdGUpKQog
ICAgICAgICByZXR1cm4ga1RoZW1lU3RhdGVVbmF2YWlsYWJsZUluYWN0aXZlOwogCiAgICAgLy8g
RG8gbm90IHByb2Nlc3MgUHJlc3NlZFN0YXRlIGlmICFFbmFibGVkU3RhdGUgb3IgUmVhZE9ubHlT
dGF0ZS4KLSAgICBpZiAoc3RhdGVzICYgUHJlc3NlZFN0YXRlKSB7CisgICAgaWYgKHN0YXRlcyAm
IENvbnRyb2xTdGF0ZXM6OlByZXNzZWRTdGF0ZSkgewogICAgICAgICBpZiAoa2luZCA9PSBrVGhl
bWVJbmNEZWNCdXR0b24gfHwga2luZCA9PSBrVGhlbWVJbmNEZWNCdXR0b25TbWFsbCB8fCBraW5k
ID09IGtUaGVtZUluY0RlY0J1dHRvbk1pbmkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGVzICYg
U3BpblVwU3RhdGUgPyBrVGhlbWVTdGF0ZVByZXNzZWRVcCA6IGtUaGVtZVN0YXRlUHJlc3NlZERv
d247CisgICAgICAgICAgICByZXR1cm4gc3RhdGVzICYgQ29udHJvbFN0YXRlczo6U3BpblVwU3Rh
dGUgPyBrVGhlbWVTdGF0ZVByZXNzZWRVcCA6IGtUaGVtZVN0YXRlUHJlc3NlZERvd247CiAgICAg
ICAgIHJldHVybiBrVGhlbWVTdGF0ZVByZXNzZWQ7CiAgICAgfQogICAgIHJldHVybiBrVGhlbWVT
dGF0ZUFjdGl2ZTsKQEAgLTI2NiwzNCArMjkyLDU0IEBAIHN0YXRpYyBMZW5ndGhTaXplIGNoZWNr
Ym94U2l6ZShjb25zdCBGb250JiBmb250LCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBm
CiAgICAgLy8gVXNlIHRoZSBmb250IHNpemUgdG8gZGV0ZXJtaW5lIHRoZSBpbnRyaW5zaWMgd2lk
dGggb2YgdGhlIGNvbnRyb2wuCiAgICAgcmV0dXJuIHNpemVGcm9tRm9udChmb250LCB6b29tZWRT
aXplLCB6b29tRmFjdG9yLCBjaGVja2JveFNpemVzKCkpOwogfQotCi1zdGF0aWMgTlNCdXR0b25D
ZWxsICpjaGVja2JveChDb250cm9sU3RhdGVzIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVk
UmVjdCwgZmxvYXQgem9vbUZhY3RvcikKLXsKLSAgICBzdGF0aWMgTlNCdXR0b25DZWxsICpjaGVj
a2JveENlbGw7Ci0gICAgaWYgKCFjaGVja2JveENlbGwpIHsKLSAgICAgICAgY2hlY2tib3hDZWxs
ID0gW1tOU0J1dHRvbkNlbGwgYWxsb2NdIGluaXRdOwotICAgICAgICBbY2hlY2tib3hDZWxsIHNl
dEJ1dHRvblR5cGU6TlNTd2l0Y2hCdXR0b25dOwotICAgICAgICBbY2hlY2tib3hDZWxsIHNldFRp
dGxlOm5pbF07Ci0gICAgICAgIFtjaGVja2JveENlbGwgc2V0QWxsb3dzTWl4ZWRTdGF0ZTpZRVNd
OwotICAgICAgICBbY2hlY2tib3hDZWxsIHNldEZvY3VzUmluZ1R5cGU6TlNGb2N1c1JpbmdUeXBl
RXh0ZXJpb3JdOwotICAgIH0KICAgICAKK3N0YXRpYyB2b2lkIGNvbmZpZ3VyZUNoZWNrYm94KE5T
Q2VsbCogY2VsbCwgY29uc3QgQ29udHJvbFN0YXRlcyogc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6
b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBib29sIGlzU3RhdGVDaGFuZ2UpCit7CiAgICAg
Ly8gU2V0IHRoZSBjb250cm9sIHNpemUgYmFzZWQgb2ZmIHRoZSByZWN0YW5nbGUgd2UncmUgcGFp
bnRpbmcgaW50by4KLSAgICBzZXRDb250cm9sU2l6ZShjaGVja2JveENlbGwsIGNoZWNrYm94U2l6
ZXMoKSwgem9vbWVkUmVjdC5zaXplKCksIHpvb21GYWN0b3IpOworICAgIHNldENvbnRyb2xTaXpl
KGNlbGwsIGNoZWNrYm94U2l6ZXMoKSwgem9vbWVkUmVjdC5zaXplKCksIHpvb21GYWN0b3IpOwog
CiAgICAgLy8gVXBkYXRlIHRoZSB2YXJpb3VzIHN0YXRlcyB3ZSByZXNwb25kIHRvLgotICAgIHVw
ZGF0ZVN0YXRlcyhjaGVja2JveENlbGwsIHN0YXRlcyk7CisgICAgdXBkYXRlU3RhdGVzKGNlbGws
IHN0YXRlcywgaXNTdGF0ZUNoYW5nZSk7Cit9CiAgICAgCitzdGF0aWMgTlNCdXR0b25DZWxsICpj
cmVhdGVDaGVja2JveENlbGwoKQoreworICAgIE5TQnV0dG9uQ2VsbCAqY2hlY2tib3hDZWxsID0g
W1tOU0J1dHRvbkNlbGwgYWxsb2NdIGluaXRdOworICAgIFtjaGVja2JveENlbGwgc2V0QnV0dG9u
VHlwZTpOU1N3aXRjaEJ1dHRvbl07CisgICAgW2NoZWNrYm94Q2VsbCBzZXRUaXRsZTpuaWxdOwor
ICAgIFtjaGVja2JveENlbGwgc2V0QWxsb3dzTWl4ZWRTdGF0ZTpZRVNdOworICAgIFtjaGVja2Jv
eENlbGwgc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07CiAgICAgcmV0
dXJuIGNoZWNrYm94Q2VsbDsKIH0KIAorc3RhdGljIE5TQnV0dG9uQ2VsbCAqc2hhcmVkQ2hlY2ti
b3hDZWxsKGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVk
UmVjdCwgZmxvYXQgem9vbUZhY3RvcikKK3sKKyAgICBzdGF0aWMgTlNCdXR0b25DZWxsICpjaGVj
a2JveENlbGw7CisgICAgaWYgKCFjaGVja2JveENlbGwpCisgICAgICAgIGNoZWNrYm94Q2VsbCA9
IGNyZWF0ZUNoZWNrYm94Q2VsbCgpOworCisgICAgY29uZmlndXJlQ2hlY2tib3goY2hlY2tib3hD
ZWxsLCBzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IsIGZhbHNlKTsKKyAgICByZXR1cm4g
Y2hlY2tib3hDZWxsOworfQorICAgIAogLy8gRklYTUU6IFNoYXJlIG1vcmUgY29kZSB3aXRoIHJh
ZGlvIGJ1dHRvbnMuCi1zdGF0aWMgdm9pZCBwYWludENoZWNrYm94KENvbnRyb2xTdGF0ZXMgc3Rh
dGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3Qs
IGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcpCitzdGF0aWMgdm9pZCBw
YWludENoZWNrYm94KENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3Rvciwg
U2Nyb2xsVmlldyogc2Nyb2xsVmlldykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKIAotICAgIC8vIERldGVybWluZSB0aGUgd2lkdGggYW5kIGhlaWdodCBuZWVkZWQgZm9yIHRo
ZSBjb250cm9sIGFuZCBwcmVwYXJlIHRoZSBjZWxsIGZvciBwYWludGluZy4KLSAgICBOU0J1dHRv
bkNlbGwgKmNoZWNrYm94Q2VsbCA9IGNoZWNrYm94KHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZh
Y3Rvcik7CisgICAgTlNCdXR0b25DZWxsICpjaGVja2JveENlbGwgPSBzdGF0aWNfY2FzdDxOU0J1
dHRvbkNlbGwqPihjb250cm9sU3RhdGVzLT5wbGF0Zm9ybUNvbnRyb2woKSk7CisKKyAgICBpZiAo
Y29udHJvbFN0YXRlcy0+aXNEaXJ0eSgpKSB7CisgICAgICAgIGlmICghY2hlY2tib3hDZWxsKQor
ICAgICAgICAgICAgY2hlY2tib3hDZWxsID0gY3JlYXRlQ2hlY2tib3hDZWxsKCk7CisgICAgICAg
IGNvbmZpZ3VyZUNoZWNrYm94KGNoZWNrYm94Q2VsbCwgY29udHJvbFN0YXRlcywgem9vbWVkUmVj
dCwgem9vbUZhY3RvciwgdHJ1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFjaGVja2Jv
eENlbGwpCisgICAgICAgICAgICBjaGVja2JveENlbGwgPSBzaGFyZWRDaGVja2JveENlbGwoY29u
dHJvbFN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CisgICAgICAgIGNvbmZpZ3VyZUNo
ZWNrYm94KGNoZWNrYm94Q2VsbCwgY29udHJvbFN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rv
ciwgZmFsc2UpOworICAgIH0KKyAgICBjb250cm9sU3RhdGVzLT5zZXREaXJ0eShmYWxzZSk7CisK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogCiAg
ICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFtjaGVja2JveENlbGwgY29udHJvbFNpemVd
OwpAQCAtMzExLDEyICszNTcsMzQgQEAgc3RhdGljIHZvaWQgcGFpbnRDaGVja2JveChDb250cm9s
U3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIH0KIAog
ICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7Ci0g
ICAgTlNWaWV3ICp2aWV3ID0gVGhlbWVNYWM6OmVuc3VyZWRWaWV3KHNjcm9sbFZpZXcsIHN0YXRl
cyk7Ci0gICAgW2NoZWNrYm94Q2VsbCBkcmF3V2l0aEZyYW1lOk5TUmVjdChpbmZsYXRlZFJlY3Qp
IGluVmlldzp2aWV3XTsKLSAgICBpZiAoc3RhdGVzICYgRm9jdXNTdGF0ZSkKKyAgICBOU1ZpZXcg
KnZpZXcgPSBUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoc2Nyb2xsVmlldywgY29udHJvbFN0YXRlcyk7
CisgICAgYm9vbCBkcmF3U3RhdGljYWxseSA9IHRydWU7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEwMAorICAgIGRyYXdTdGF0aWNhbGx5ID0gIVtjaGVja2JveENl
bGwgX3N0YXRlQW5pbWF0aW9uUnVubmluZ107CisjZW5kaWYKKyAgICBpZiAoZHJhd1N0YXRpY2Fs
bHkpCisgICAgICAgIFtjaGVja2JveENlbGwgZHJhd1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRS
ZWN0KSBpblZpZXc6dmlld107CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlz
bid0IHF1aXRlIGNvcnJlY3QgYXQgdGhlIG1vbWVudCBkdWUgdG8gdGhlIHdheSB0aGUgdGljayBt
YXJrIGV4dGVuZHMgb3V0IG9mIHRoZSBjb250cm9sLgorICAgICAgICBjb250ZXh0LT50cmFuc2xh
dGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwg
LWluZmxhdGVkUmVjdC5oZWlnaHQoKSk7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEwMAorICAgICAgICBbY2hlY2tib3hDZWxsIF9yZW5kZXJDdXJyZW50QW5pbWF0
aW9uRnJhbWVJbkNvbnRleHQ6Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgYXRMb2NhdGlvbjpO
U01ha2VQb2ludCgwLCAwKV07CisjZW5kaWYKKyAgICB9CisgICAgaWYgKGNvbnRyb2xTdGF0ZXMt
PnN0YXRlcygpICYgQ29udHJvbFN0YXRlczo6Rm9jdXNTdGF0ZSkKICAgICAgICAgW2NoZWNrYm94
Q2VsbCBfd2ViX2RyYXdGb2N1c1JpbmdXaXRoRnJhbWU6TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5W
aWV3OnZpZXddOwogICAgIFtjaGVja2JveENlbGwgc2V0Q29udHJvbFZpZXc6bmlsXTsKICAgICAK
KyAgICBib29sIG5lZWRzUmVwYWludCA9IGZhbHNlOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMDAKKyAgICBuZWVkc1JlcGFpbnQgPSBbY2hlY2tib3hDZWxsIF9z
dGF0ZUFuaW1hdGlvblJ1bm5pbmddOworI2VuZGlmCisgICAgY29udHJvbFN0YXRlcy0+c2V0TmVl
ZHNSZXBhaW50KG5lZWRzUmVwYWludCk7CisgICAgaWYgKG5lZWRzUmVwYWludCkKKyAgICAgICAg
Y29udHJvbFN0YXRlcy0+c2V0UGxhdGZvcm1Db250cm9sKGNoZWNrYm94Q2VsbCk7CisKICAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKQEAgLTM0OSw3ICs0MTcsNyBAQCBzdGF0aWMg
TGVuZ3RoU2l6ZSByYWRpb1NpemUoY29uc3QgRm9udCYgZm9udCwgY29uc3QgTGVuZ3RoU2l6ZSYg
em9vbWVkU2l6ZSwgZmxvYQogICAgIHJldHVybiBzaXplRnJvbUZvbnQoZm9udCwgem9vbWVkU2l6
ZSwgem9vbUZhY3RvciwgcmFkaW9TaXplcygpKTsKIH0KIAotc3RhdGljIE5TQnV0dG9uQ2VsbCAq
cmFkaW8oQ29udHJvbFN0YXRlcyBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZs
b2F0IHpvb21GYWN0b3IpCitzdGF0aWMgTlNCdXR0b25DZWxsICpyYWRpbyhjb25zdCBDb250cm9s
U3RhdGVzKiBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0
b3IpCiB7CiAgICAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqcmFkaW9DZWxsOwogICAgIGlmICghcmFk
aW9DZWxsKSB7CkBAIC0zNjgsMTAgKzQzNiwxMCBAQCBzdGF0aWMgTlNCdXR0b25DZWxsICpyYWRp
byhDb250cm9sU3RhdGVzIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYQog
ICAgIHJldHVybiByYWRpb0NlbGw7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50UmFkaW8oQ29udHJv
bFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYg
em9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldykKK3N0
YXRpYyB2b2lkIHBhaW50UmFkaW8oQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcywgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29t
RmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KQogewogICAgIC8vIERldGVybWluZSB0aGUg
d2lkdGggYW5kIGhlaWdodCBuZWVkZWQgZm9yIHRoZSBjb250cm9sIGFuZCBwcmVwYXJlIHRoZSBj
ZWxsIGZvciBwYWludGluZy4KLSAgICBOU0J1dHRvbkNlbGwgKnJhZGlvQ2VsbCA9IHJhZGlvKHN0
YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CisgICAgTlNCdXR0b25DZWxsICpyYWRpb0Nl
bGwgPSByYWRpbyhjb250cm9sU3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsKICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogCiAgICAgTlND
b250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFtyYWRpb0NlbGwgY29udHJvbFNpemVdOwpAQCAtMzkw
LDkgKzQ1OCw5IEBAIHN0YXRpYyB2b2lkIHBhaW50UmFkaW8oQ29udHJvbFN0YXRlcyBzdGF0ZXMs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50CiAKICAgICBMb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIE5TVmlldyAqdmlldyA9IFRoZW1lTWFjOjplbnN1cmVkVmlldyhz
Y3JvbGxWaWV3LCBzdGF0ZXMpOworICAgIE5TVmlldyAqdmlldyA9IFRoZW1lTWFjOjplbnN1cmVk
VmlldyhzY3JvbGxWaWV3LCBjb250cm9sU3RhdGVzKTsKICAgICBbcmFkaW9DZWxsIGRyYXdXaXRo
RnJhbWU6TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5WaWV3OnZpZXddOwotICAgIGlmIChzdGF0ZXMg
JiBGb2N1c1N0YXRlKQorICAgIGlmIChjb250cm9sU3RhdGVzLT5zdGF0ZXMoKSAmIENvbnRyb2xT
dGF0ZXM6OkZvY3VzU3RhdGUpCiAgICAgICAgIFtyYWRpb0NlbGwgX3dlYl9kcmF3Rm9jdXNSaW5n
V2l0aEZyYW1lOk5TUmVjdChpbmZsYXRlZFJlY3QpIGluVmlldzp2aWV3XTsKICAgICBbcmFkaW9D
ZWxsIHNldENvbnRyb2xWaWV3Om5pbF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpA
QCAtNDMwLDcgKzQ5OCw3IEBAIHN0YXRpYyBOU0J1dHRvbkNlbGwgKmxlYWtCdXR0b25DZWxsKEJ1
dHRvbkNlbGxUeXBlIHR5cGUpCiAgICAgcmV0dXJuIGNlbGw7CiB9CiAKLXN0YXRpYyB2b2lkIHNl
dFVwQnV0dG9uQ2VsbChOU0J1dHRvbkNlbGwgKmNlbGwsIENvbnRyb2xQYXJ0IHBhcnQsIENvbnRy
b2xTdGF0ZXMgc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFj
dG9yKQorc3RhdGljIHZvaWQgc2V0VXBCdXR0b25DZWxsKE5TQnV0dG9uQ2VsbCAqY2VsbCwgQ29u
dHJvbFBhcnQgcGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyogc3RhdGVzLCBjb25zdCBJbnRSZWN0
JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yKQogewogICAgIC8vIFNldCB0aGUgY29udHJv
bCBzaXplIGJhc2VkIG9mZiB0aGUgcmVjdGFuZ2xlIHdlJ3JlIHBhaW50aW5nIGludG8uCiAgICAg
Y29uc3QgSW50U2l6ZSogc2l6ZXMgPSBidXR0b25TaXplcygpOwpAQCAtNDQ3LDI2ICs1MTUsMjgg
QEAgc3RhdGljIHZvaWQgc2V0VXBCdXR0b25DZWxsKE5TQnV0dG9uQ2VsbCAqY2VsbCwgQ29udHJv
bFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcwogICAgIHVwZGF0ZVN0YXRlcyhjZWxsLCBzdGF0ZXMp
OwogfQogCi1zdGF0aWMgTlNCdXR0b25DZWxsICpidXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29u
dHJvbFN0YXRlcyBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21G
YWN0b3IpCitzdGF0aWMgTlNCdXR0b25DZWxsICpidXR0b24oQ29udHJvbFBhcnQgcGFydCwgY29u
c3QgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVj
dCwgZmxvYXQgem9vbUZhY3RvcikKIHsKKyAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMgc3RhdGVz
ID0gY29udHJvbFN0YXRlcy0+c3RhdGVzKCk7CiAgICAgTlNCdXR0b25DZWxsICpjZWxsOwotICAg
IGlmIChzdGF0ZXMgJiBEZWZhdWx0U3RhdGUpIHsKKyAgICBpZiAoc3RhdGVzICYgQ29udHJvbFN0
YXRlczo6RGVmYXVsdFN0YXRlKSB7CiAgICAgICAgIHN0YXRpYyBOU0J1dHRvbkNlbGwgKmRlZmF1
bHRDZWxsID0gbGVha0J1dHRvbkNlbGwoRGVmYXVsdEJ1dHRvbkNlbGwpOwogICAgICAgICBjZWxs
ID0gZGVmYXVsdENlbGw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3RhdGljIE5TQnV0dG9uQ2Vs
bCAqbm9ybWFsQ2VsbCA9IGxlYWtCdXR0b25DZWxsKE5vcm1hbEJ1dHRvbkNlbGwpOwogICAgICAg
ICBjZWxsID0gbm9ybWFsQ2VsbDsKICAgICB9Ci0gICAgc2V0VXBCdXR0b25DZWxsKGNlbGwsIHBh
cnQsIHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7ICAgIAorICAgIHNldFVwQnV0dG9u
Q2VsbChjZWxsLCBwYXJ0LCBjb250cm9sU3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsK
ICAgICByZXR1cm4gY2VsbDsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRCdXR0b24oQ29udHJvbFBh
cnQgcGFydCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyog
c2Nyb2xsVmlldykKK3N0YXRpYyB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENv
bnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Ny
b2xsVmlldykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICAv
LyBEZXRlcm1pbmUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUgY29udHJvbCBh
bmQgcHJlcGFyZSB0aGUgY2VsbCBmb3IgcGFpbnRpbmcuCi0gICAgTlNCdXR0b25DZWxsICpidXR0
b25DZWxsID0gYnV0dG9uKHBhcnQsIHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7Cisg
ICAgQ29udHJvbFN0YXRlczo6U3RhdGVzIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygp
OworICAgIE5TQnV0dG9uQ2VsbCAqYnV0dG9uQ2VsbCA9IGJ1dHRvbihwYXJ0LCBjb250cm9sU3Rh
dGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogCiAgICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6
ZSA9IFtidXR0b25DZWxsIGNvbnRyb2xTaXplXTsKQEAgLTQ5NCwxOCArNTY0LDE4IEBAIHN0YXRp
YyB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVz
LCBHcmFwaGljc0NvbnRleHQqCiAgICAgfSAKIAogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29u
dGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7Ci0gICAgTlNWaWV3ICp2aWV3ID0gVGhlbWVNYWM6
OmVuc3VyZWRWaWV3KHNjcm9sbFZpZXcsIHN0YXRlcyk7CisgICAgTlNWaWV3ICp2aWV3ID0gVGhl
bWVNYWM6OmVuc3VyZWRWaWV3KHNjcm9sbFZpZXcsIGNvbnRyb2xTdGF0ZXMpOwogICAgIE5TV2lu
ZG93ICp3aW5kb3cgPSBbdmlldyB3aW5kb3ddOwogICAgIE5TQnV0dG9uQ2VsbCAqcHJldmlvdXNE
ZWZhdWx0QnV0dG9uQ2VsbCA9IFt3aW5kb3cgZGVmYXVsdEJ1dHRvbkNlbGxdOwogCi0gICAgaWYg
KHN0YXRlcyAmIERlZmF1bHRTdGF0ZSkgeworICAgIGlmIChzdGF0ZXMgJiBDb250cm9sU3RhdGVz
OjpEZWZhdWx0U3RhdGUpIHsKICAgICAgICAgW3dpbmRvdyBzZXREZWZhdWx0QnV0dG9uQ2VsbDpi
dXR0b25DZWxsXTsKICAgICAgICAgd2tBZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9u
KGJ1dHRvbkNlbGwpOwogICAgIH0gZWxzZSBpZiAoW3ByZXZpb3VzRGVmYXVsdEJ1dHRvbkNlbGwg
aXNFcXVhbDpidXR0b25DZWxsXSkKICAgICAgICAgW3dpbmRvdyBzZXREZWZhdWx0QnV0dG9uQ2Vs
bDpuaWxdOwogCiAgICAgW2J1dHRvbkNlbGwgZHJhd1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRS
ZWN0KSBpblZpZXc6dmlld107Ci0gICAgaWYgKHN0YXRlcyAmIEZvY3VzU3RhdGUpCisgICAgaWYg
KHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OkZvY3VzU3RhdGUpCiAgICAgICAgIFtidXR0b25DZWxs
IF93ZWJfZHJhd0ZvY3VzUmluZ1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6
dmlld107CiAgICAgW2J1dHRvbkNlbGwgc2V0Q29udHJvbFZpZXc6bmlsXTsKIApAQCAtNTM1LDcg
KzYwNSw3IEBAIHN0YXRpYyBOU0NvbnRyb2xTaXplIHN0ZXBwZXJDb250cm9sU2l6ZUZvckZvbnQo
Y29uc3QgRm9udCYgZm9udCkKICAgICByZXR1cm4gTlNNaW5pQ29udHJvbFNpemU7CiB9CiAKLXN0
YXRpYyB2b2lkIHBhaW50U3RlcHBlcihDb250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9y
LCBTY3JvbGxWaWV3KikKK3N0YXRpYyB2b2lkIHBhaW50U3RlcHBlcihDb250cm9sU3RhdGVzKiBz
dGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVj
dCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyopCiB7CiAgICAgLy8gV2UgZG9uJ3QgdXNl
IE5TU3RlcHBlckNlbGwgYmVjYXVzZSB0aGVyZSBhcmUgbm8gd2F5cyB0byBkcmF3IGFuCiAgICAg
Ly8gTlNTdGVwcGVyQ2VsbCB3aXRoIHRoZSB1cCBidXR0b24gaGlnaGxpZ2h0ZWQuCkBAIC01Nzcs
NyArNjQ3LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRTdGVwcGVyKENvbnRyb2xTdGF0ZXMgc3RhdGVz
LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEkKIAogLy8gVGhpcyB3aWxsIGVuc3Vy
ZSB0aGF0IHdlIGFsd2F5cyByZXR1cm4gYSB2YWxpZCBOU1ZpZXcsIGV2ZW4gaWYgU2Nyb2xsVmll
dyBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkb2N1bWVudCBOU1ZpZXcuCiAvLyBJZiB0aGUg
U2Nyb2xsVmlldyBkb2Vzbid0IGhhdmUgYW4gTlNWaWV3LCB3ZSB3aWxsIHJldHVybiBhIGZha2Ug
TlNWaWV3IHNldCB1cCBpbiB0aGUgd2F5IEFwcEtpdCBleHBlY3RzLgotTlNWaWV3ICpUaGVtZU1h
Yzo6ZW5zdXJlZFZpZXcoU2Nyb2xsVmlldyogc2Nyb2xsVmlldywgQ29udHJvbFN0YXRlcyBzdGF0
ZXMpCitOU1ZpZXcgKlRoZW1lTWFjOjplbnN1cmVkVmlldyhTY3JvbGxWaWV3KiBzY3JvbGxWaWV3
LCBjb25zdCBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzKQogewogICAgIGlmIChOU1ZpZXcg
KmRvY3VtZW50VmlldyA9IHNjcm9sbFZpZXctPmRvY3VtZW50VmlldygpKQogICAgICAgICByZXR1
cm4gZG9jdW1lbnRWaWV3OwpAQCAtNTg2LDcgKzY1Niw3IEBAIE5TVmlldyAqVGhlbWVNYWM6OmVu
c3VyZWRWaWV3KFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIENvbnRyb2xTdGF0ZXMgc3RhdGVzKQog
ICAgIHN0YXRpYyBXZWJDb3JlVGhlbWVWaWV3ICp0aGVtZVZpZXcgPSBbW1dlYkNvcmVUaGVtZVZp
ZXcgYWxsb2NdIGluaXRdOwogICAgIFt0aGVtZVZpZXcgc2V0RnJhbWVTaXplOk5TU2l6ZUZyb21D
R1NpemUoc2Nyb2xsVmlldy0+dG90YWxDb250ZW50c1NpemUoKSldOwogCi0gICAgdGhlbWVXaW5k
b3dIYXNLZXlBcHBlYXJhbmNlID0gIShzdGF0ZXMgJiBXaW5kb3dJbmFjdGl2ZVN0YXRlKTsKKyAg
ICB0aGVtZVdpbmRvd0hhc0tleUFwcGVhcmFuY2UgPSAhKGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygp
ICYgQ29udHJvbFN0YXRlczo6V2luZG93SW5hY3RpdmVTdGF0ZSk7CiAKICAgICByZXR1cm4gdGhl
bWVWaWV3OwogfQpAQCAtNjg5LDE0ICs3NTksMTQgQEAgTGVuZ3RoQm94IFRoZW1lTWFjOjpjb250
cm9sUGFkZGluZyhDb250cm9sUGFydCBwYXJ0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBMZW4K
ICAgICB9CiB9CiAKLXZvaWQgVGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRy
b2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBJbnRSZWN0JiB6b29tZWRSZWN0LCBm
bG9hdCB6b29tRmFjdG9yKSBjb25zdAordm9pZCBUaGVtZU1hYzo6aW5mbGF0ZUNvbnRyb2xQYWlu
dFJlY3QoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyogc3RhdGVzLCBJbnRS
ZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdAogewogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwogICAgIHN3aXRjaCAocGFydCkgewogICAgICAgICBjYXNlIENo
ZWNrYm94UGFydDogewogICAgICAgICAgICAgLy8gV2UgaW5mbGF0ZSB0aGUgcmVjdCBhcyBuZWVk
ZWQgdG8gYWNjb3VudCBmb3IgcGFkZGluZyBpbmNsdWRlZCBpbiB0aGUgY2VsbCB0byBhY2NvbW1v
ZGF0ZSB0aGUgY2hlY2tib3gKICAgICAgICAgICAgIC8vIHNoYWRvdyIgYW5kIHRoZSBjaGVjay4g
IFdlIGRvbid0IGNvbnNpZGVyIHRoaXMgcGFydCBvZiB0aGUgYm91bmRzIG9mIHRoZSBjb250cm9s
IGluIFdlYktpdC4KLSAgICAgICAgICAgIE5TQ2VsbCAqY2VsbCA9IGNoZWNrYm94KHN0YXRlcywg
em9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBOU0NlbGwgKmNlbGwgPSBzaGFy
ZWRDaGVja2JveENlbGwoc3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsKICAgICAgICAg
ICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBbY2VsbCBjb250cm9sU2l6ZV07CiAgICAg
ICAgICAgICBJbnRTaXplIHpvb21lZFNpemUgPSBjaGVja2JveFNpemVzKClbY29udHJvbFNpemVd
OwogICAgICAgICAgICAgem9vbWVkU2l6ZS5zZXRIZWlnaHQoem9vbWVkU2l6ZS5oZWlnaHQoKSAq
IHpvb21GYWN0b3IpOwpAQCAtNzQ1LDcgKzgxNSw3IEBAIHZvaWQgVGhlbWVNYWM6OmluZmxhdGVD
b250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBJ
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCi12b2lkIFRoZW1lTWFjOjpwYWlu
dChDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBT
Y3JvbGxWaWV3KiBzY3JvbGxWaWV3KSBjb25zdAordm9pZCBUaGVtZU1hYzo6cGFpbnQoQ29udHJv
bFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyogc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZp
ZXcqIHNjcm9sbFZpZXcpCiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7CiAgICAgICAgIGNhc2UgQ2hl
Y2tib3hQYXJ0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA1Yjdi
Y2E1YjY0MzIzNmUwMzVhZTU0MjgxM2E4ZWI5ODVlOGU5MWRkLi43MDExNjYwMDI2Y2M3Nzg2ZDQ5
MmNlNTY1MWU1Y2U3ZDdiNzQyODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcApAQCAtMTAyLDYgKzEwMiw3IEBAIFJlbmRlckJveDo6UmVuZGVyQm94KEVsZW1lbnQmIGVs
ZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlCiAgICAgLCBt
X21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKICAgICAsIG1fbWF4UHJlZmVycmVkTG9naWNh
bFdpZHRoKC0xKQogICAgICwgbV9pbmxpbmVCb3hXcmFwcGVyKDApCisgICAgLCBtX3JlcGFpbnRU
aW1lcih0aGlzLCAmUmVuZGVyQm94OjpyZXBhaW50VGltZXJGaXJlZCkKIHsKICAgICBzZXRJc0Jv
eCgpOwogfQpAQCAtMTExLDEyICsxMTIsMTYgQEAgUmVuZGVyQm94OjpSZW5kZXJCb3goRG9jdW1l
bnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmEKICAg
ICAsIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKC0xKQogICAgICwgbV9tYXhQcmVmZXJyZWRM
b2dpY2FsV2lkdGgoLTEpCiAgICAgLCBtX2lubGluZUJveFdyYXBwZXIoMCkKKyAgICAsIG1fcmVw
YWludFRpbWVyKHRoaXMsICZSZW5kZXJCb3g6OnJlcGFpbnRUaW1lckZpcmVkKQogewogICAgIHNl
dElzQm94KCk7CiB9CiAKIFJlbmRlckJveDo6flJlbmRlckJveCgpCiB7CisgICAgbV9yZXBhaW50
VGltZXIuc3RvcCgpOworICAgIGlmIChoYXNDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIodGhpcykp
CisgICAgICAgIHJlbW92ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcih0aGlzKTsKIH0KIAogUmVu
ZGVyUmVnaW9uKiBSZW5kZXJCb3g6OmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMoUmVuZGVyUmVn
aW9uKiByZWdpb24pIGNvbnN0CkBAIC0xMjIxLDcgKzEyMjYsMjIgQEAgdm9pZCBSZW5kZXJCb3g6
OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWkKICAgICAvLyBJZiB3ZSBoYXZlIGEgbmF0aXZlIHRoZW1lIGFwcGVhcmFuY2UsIHBh
aW50IHRoYXQgYmVmb3JlIHBhaW50aW5nIG91ciBiYWNrZ3JvdW5kLgogICAgIC8vIFRoZSB0aGVt
ZSB3aWxsIHRlbGwgdXMgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIGFsc28gcGFpbnQgdGhlIENT
UyBiYWNrZ3JvdW5kLgogICAgIEludFJlY3Qgc25hcHBlZFBhaW50UmVjdChwaXhlbFNuYXBwZWRJ
bnRSZWN0KHBhaW50UmVjdCkpOwotICAgIGJvb2wgdGhlbWVQYWludGVkID0gc3R5bGUoKS5oYXNB
cHBlYXJhbmNlKCkgJiYgIXRoZW1lKCkucGFpbnQodGhpcywgcGFpbnRJbmZvLCBzbmFwcGVkUGFp
bnRSZWN0KTsKKworICAgIENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMgPSBudWxscHRyOwor
ICAgIGlmIChzdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkgeworICAgICAgICBpZiAoaGFzQ29udHJv
bFN0YXRlc0ZvclJlbmRlcmVyKHRoaXMpKQorICAgICAgICAgICAgY29udHJvbFN0YXRlcyA9IGNv
bnRyb2xTdGF0ZXNGb3JSZW5kZXJlcih0aGlzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBjb250cm9sU3RhdGVzID0gbmV3IENvbnRyb2xTdGF0ZXMoKTsKKyAgICAgICAgICAgIGFkZENv
bnRyb2xTdGF0ZXNGb3JSZW5kZXJlcih0aGlzLCBjb250cm9sU3RhdGVzKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGJvb2wgdGhlbWVQYWludGVkID0gc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkg
JiYgIXRoZW1lKCkucGFpbnQodGhpcywgY29udHJvbFN0YXRlcywgcGFpbnRJbmZvLCBzbmFwcGVk
UGFpbnRSZWN0KTsKKworICAgIGlmIChjb250cm9sU3RhdGVzICYmIGNvbnRyb2xTdGF0ZXMtPm5l
ZWRzUmVwYWludCgpKQorICAgICAgICBtX3JlcGFpbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CisK
ICAgICBpZiAoIXRoZW1lUGFpbnRlZCkgewogICAgICAgICBpZiAoYmxlZWRBdm9pZGFuY2UgPT0g
QmFja2dyb3VuZEJsZWVkQmFja2dyb3VuZE92ZXJCb3JkZXIpCiAgICAgICAgICAgICBwYWludEJv
cmRlcihwYWludEluZm8sIHBhaW50UmVjdCwgc3R5bGUoKSwgYmxlZWRBdm9pZGFuY2UpOwpAQCAt
NDcyOSw0ICs0NzQ5LDEwIEBAIExheW91dFVuaXQgUmVuZGVyQm94OjpvZmZzZXRGcm9tTG9naWNh
bFRvcE9mRmlyc3RQYWdlKCkgY29uc3QKICAgICByZXR1cm4gY29udGFpbmVyQmxvY2stPm9mZnNl
dEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSArIGxvZ2ljYWxUb3AoKTsKIH0KIAordm9pZCBS
ZW5kZXJCb3g6OnJlcGFpbnRUaW1lckZpcmVkKFRpbWVyPFJlbmRlckJveD4mKQoreworICAgIGlm
ICghZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKQorICAgICAgICB0aGlzLT5yZXBhaW50KCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAppbmRleCBmOTIwYzVjMDMxZjIxNzY5Njk5NjM1YzM1MGY4YTY4N2Q0ODE5NTIxLi4wYWYyNTZk
ZDUwMDUxOTA2MGI3ZDMwZTVhNjcyZTEwNmVlZTk5M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCkBAIC03MjEsOCArNzIxLDEyIEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8
UmVuZGVyT3ZlcmZsb3c+IG1fb3ZlcmZsb3c7CiAKIHByaXZhdGU6CisgICAgdm9pZCByZXBhaW50
VGltZXJGaXJlZChUaW1lcjxSZW5kZXJCb3g+Jik7CisKICAgICAvLyBVc2VkIHRvIHN0b3JlIHN0
YXRlIGJldHdlZW4gc3R5bGVXaWxsQ2hhbmdlIGFuZCBzdHlsZURpZENoYW5nZQogICAgIHN0YXRp
YyBib29sIHNfaGFkT3ZlcmZsb3dDbGlwOworCisgICAgVGltZXI8UmVuZGVyQm94PiBtX3JlcGFp
bnRUaW1lcjsKIH07CiAKIFJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJCb3gsIGlzQm94
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggM2Zj
YTVhNzVlYzYwYjgyZTRiNzgyMjM3ZWE5ZDBmYjVhN2Q5MzU5NC4uZGMyYWNiMWY4ZTg5ZjU0ZmYz
Y2E0ZGIxOWViMGU4MGEyYTIwY2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUu
aCIKICNpbmNsdWRlICJBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ29udGVudERh
dGEuaCIKKyNpbmNsdWRlICJDb250cm9sU3RhdGVzLmgiCiAjaW5jbHVkZSAiQ3Vyc29yTGlzdC5o
IgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC02Niw3
ICs2NywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgUmVuZGVyRWxlbWVudDo6c19h
ZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsKIGJvb2wgUmVuZGVyRWxlbWVudDo6c19ub0xvbmdl
ckFmZmVjdHNQYXJlbnRCbG9jayA9IGZhbHNlOwotCisgICAgCitzdGF0aWMgSGFzaE1hcDxjb25z
dCBSZW5kZXJPYmplY3QqLCBDb250cm9sU3RhdGVzKj4mIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1h
cCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8Y29uc3QgUmVuZGVyT2Jq
ZWN0KiwgQ29udHJvbFN0YXRlcyo+PiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KKyAgICAKIFJl
bmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJPYmpl
Y3QoZWxlbWVudCkKICAgICAsIG1fYmFzZVR5cGVGbGFncyhiYXNlVHlwZUZsYWdzKQpAQCAtMTMz
OCw0ICsxMzQ1LDI4IEBAIFJlbmRlck5hbWVkRmxvd1RocmVhZCogUmVuZGVyRWxlbWVudDo6cmVu
ZGVyTmFtZWRGbG93VGhyZWFkV3JhcHBlcigpCiAgICAgcmV0dXJuIHJlbmRlcmVyICYmIHJlbmRl
cmVyLT5pc1JlbmRlck5hbWVkRmxvd1RocmVhZCgpID8gdG9SZW5kZXJOYW1lZEZsb3dUaHJlYWQo
cmVuZGVyZXIpIDogbnVsbHB0cjsKIH0KIAorYm9vbCBSZW5kZXJFbGVtZW50OjpoYXNDb250cm9s
U3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvKQoreworICAgIHJldHVybiBj
b250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKS5jb250YWlucyhvKTsKK30KKworQ29udHJvbFN0YXRl
cyogUmVuZGVyRWxlbWVudDo6Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCogbykKK3sKKyAgICByZXR1cm4gY29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkuZ2V0KG8p
OworfQorCit2b2lkIFJlbmRlckVsZW1lbnQ6OnJlbW92ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJl
cihjb25zdCBSZW5kZXJPYmplY3QqIG8pCit7CisgICAgQ29udHJvbFN0YXRlcyogc3RhdGVzID0g
Y29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkuZ2V0KG8pOworICAgIGlmIChzdGF0ZXMpIHsKKyAg
ICAgICAgY29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkucmVtb3ZlKG8pOworICAgICAgICBkZWxl
dGUgc3RhdGVzOworICAgIH0KK30KKwordm9pZCBSZW5kZXJFbGVtZW50OjphZGRDb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvLCBDb250cm9sU3RhdGVzKiBzdGF0
ZXMpCit7CisgICAgY29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkuYWRkKG8sIHN0YXRlcyk7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDAyMjMw
NjA2ZGI0Yjc5NWIyMjUxZGMyNWNhMjU5ZTIzYTM5Y2UxZjkuLmU2NGI3MWU1MTcyMDQ2OTZjOGNk
MzU0ZWUyOGQ3OTg0MzUxNjAyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaApAQCAtMjcsNiArMjcsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IENvbnRyb2xTdGF0ZXM7CisKIGNsYXNzIFJlbmRlckVsZW1lbnQgOiBwdWJsaWMgUmVuZGVyT2Jq
ZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW5kZXJFbGVtZW50KCk7CkBAIC0xODIsNiAr
MTg0LDExIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldFJlbmRlcklubGluZUFsd2F5c0NyZWF0
ZXNMaW5lQm94ZXMoYm9vbCBiKSB7IG1fcmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hl
cyA9IGI7IH0KICAgICBib29sIHJlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXMoKSBj
b25zdCB7IHJldHVybiBtX3JlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXM7IH0KIAor
ICAgIHN0YXRpYyBib29sIGhhc0NvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJP
YmplY3QqKTsKKyAgICBzdGF0aWMgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlc0ZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlck9iamVjdCopOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZUNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCBh
ZGRDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgQ29udHJvbFN0
YXRlcyopOworCiBwcml2YXRlOgogICAgIHZvaWQgbm9kZSgpIGNvbnN0ID0gZGVsZXRlOwogICAg
IHZvaWQgbm9uUHNldWRvTm9kZSgpIGNvbnN0ID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggNThlZjM3YWVjNTdkYjA3NzFlZDVkYTUyZTI5ZWNj
ZTg0MmU5NzgyMy4uZDAyN2UwMzQ0OTQ4ZTFmZGVjNjdkM2JlODYwNTg4NjE4NzUxY2EzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0yMyw2ICsyMyw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKIAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMu
aCIKKyNpbmNsdWRlICJDb250cm9sU3RhdGVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKQEAgLTI2Miw3ICsy
NjMsNyBAQCB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZShTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLCBSZW5kZXJTdHlsZSYgc3R5bGUsCiAgICAgfQogfQogCi1ib29sIFJlbmRlclRo
ZW1lOjpwYWludChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoUmVuZGVyT2JqZWN0KiBv
LCBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICAvLyBJZiBwYWludGluZyBpcyBkaXNhYmxlZCwg
YnV0IHdlIGFyZW4ndCB1cGRhdGluZyBjb250cm9sIHRpbnRzLCB0aGVuIGp1c3QgYmFpbC4KICAg
ICAvLyBJZiB3ZSBhcmUgdXBkYXRpbmcgY29udHJvbCB0aW50cywganVzdCBzY2hlZHVsZSBhIHJl
cGFpbnQgaWYgdGhlIHRoZW1lIHN1cHBvcnRzIHRpbnRpbmcKQEAgLTI4Niw3ICsyODcsOCBAQCBi
b29sIFJlbmRlclRoZW1lOjpwYWludChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBJbnRSZQogICAgIGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6CiAgICAg
Y2FzZSBCdXR0b25QYXJ0OgogICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKLSAgICAgICAg
bV90aGVtZS0+cGFpbnQocGFydCwgY29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG8pLCBjb25zdF9j
YXN0PEdyYXBoaWNzQ29udGV4dCo+KHBhaW50SW5mby5jb250ZXh0KSwgciwgby0+c3R5bGUoKS5l
ZmZlY3RpdmVab29tKCksICZvLT52aWV3KCkuZnJhbWVWaWV3KCkpOworICAgICAgICB1cGRhdGVD
b250cm9sU3RhdGVzRm9yUmVuZGVyZXIobywgY29udHJvbFN0YXRlcyk7CisgICAgICAgIG1fdGhl
bWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIGNvbnN0X2Nhc3Q8R3JhcGhpY3NDb250ZXh0
Kj4ocGFpbnRJbmZvLmNvbnRleHQpLCByLCBvLT5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwgJm8t
PnZpZXcoKS5mcmFtZVZpZXcoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0
OgogICAgICAgICBicmVhazsKQEAgLTcxMyw3ICs3MTUsOCBAQCBib29sIFJlbmRlclRoZW1lOjpp
c0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBCb3JkZXJEYXRh
JiBibwogdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0UmVwYWludFJlY3QoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBvLCBJbnRSZWN0JiByKQogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgbV90aGVtZS0+
aW5mbGF0ZUNvbnRyb2xQYWludFJlY3Qoby0+c3R5bGUoKS5hcHBlYXJhbmNlKCksIGNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcihvKSwgciwgby0+c3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOworICAg
IENvbnRyb2xTdGF0ZXMgc3RhdGVzKGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobykp
OworICAgIG1fdGhlbWUtPmluZmxhdGVDb250cm9sUGFpbnRSZWN0KG8tPnN0eWxlKCkuYXBwZWFy
YW5jZSgpLCAmc3RhdGVzLCByLCBvLT5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShvKTsKICAgICBVTlVTRURfUEFSQU0ocik7CkBAIC03MjUsMTQgKzcy
OCwxNCBAQCBib29sIFJlbmRlclRoZW1lOjpzdXBwb3J0c0ZvY3VzUmluZyhjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUpIGNvbnN0CiAgICAgcmV0dXJuIChzdHlsZS0+aGFzQXBwZWFyYW5jZSgpICYm
IHN0eWxlLT5hcHBlYXJhbmNlKCkgIT0gVGV4dEZpZWxkUGFydCAmJiBzdHlsZS0+YXBwZWFyYW5j
ZSgpICE9IFRleHRBcmVhUGFydCAmJiBzdHlsZS0+YXBwZWFyYW5jZSgpICE9IE1lbnVsaXN0QnV0
dG9uUGFydCAmJiBzdHlsZS0+YXBwZWFyYW5jZSgpICE9IExpc3Rib3hQYXJ0KTsKIH0KIAotYm9v
bCBSZW5kZXJUaGVtZTo6c3RhdGVDaGFuZ2VkKFJlbmRlck9iamVjdCogbywgQ29udHJvbFN0YXRl
IHN0YXRlKSBjb25zdAorYm9vbCBSZW5kZXJUaGVtZTo6c3RhdGVDaGFuZ2VkKFJlbmRlck9iamVj
dCogbywgQ29udHJvbFN0YXRlczo6U3RhdGVzIHN0YXRlKSBjb25zdAogewogICAgIC8vIERlZmF1
bHQgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGUgY29udHJvbHMgZG9uJ3QgcmVzcG9uZCB0byBj
aGFuZ2VzIGluIDpob3ZlciBzdGF0ZQotICAgIGlmIChzdGF0ZSA9PSBIb3ZlclN0YXRlICYmICFz
dXBwb3J0c0hvdmVyKCZvLT5zdHlsZSgpKSkKKyAgICBpZiAoc3RhdGUgPT0gQ29udHJvbFN0YXRl
czo6SG92ZXJTdGF0ZSAmJiAhc3VwcG9ydHNIb3Zlcigmby0+c3R5bGUoKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIEFzc3VtZSBwcmVzc2VkIHN0YXRlIGlzIG9ubHkgcmVzcG9u
ZGVkIHRvIGlmIHRoZSBjb250cm9sIGlzIGVuYWJsZWQuCi0gICAgaWYgKHN0YXRlID09IFByZXNz
ZWRTdGF0ZSAmJiAhaXNFbmFibGVkKG8pKQorICAgIGlmIChzdGF0ZSA9PSBDb250cm9sU3RhdGVz
OjpQcmVzc2VkU3RhdGUgJiYgIWlzRW5hYmxlZChvKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gUmVwYWludCB0aGUgY29udHJvbC4KQEAgLTc0MCwzNCArNzQzLDQwIEBAIGJvb2wg
UmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdlZChSZW5kZXJPYmplY3QqIG8sIENvbnRyb2xTdGF0ZSBz
dGF0ZSkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ29udHJvbFN0YXRlcyBSZW5kZXJU
aGVtZTo6Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29u
c3QKK3ZvaWQgUmVuZGVyVGhlbWU6OnVwZGF0ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25z
dCBSZW5kZXJPYmplY3QqIG8sIENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMpIGNvbnN0CiB7
Ci0gICAgQ29udHJvbFN0YXRlcyByZXN1bHQgPSAwOworICAgIENvbnRyb2xTdGF0ZXMgbmV3U3Rh
dGVzID0gZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvKTsKKyAgICBjb250cm9sU3Rh
dGVzLT5zZXRTdGF0ZXMobmV3U3RhdGVzLnN0YXRlcygpKTsKK30KKworQ29udHJvbFN0YXRlczo6
U3RhdGVzIFJlbmRlclRoZW1lOjpleHRyYWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCogbykgY29uc3QKK3sKKyAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMgc3Rh
dGVzID0gMDsKICAgICBpZiAoaXNIb3ZlcmVkKG8pKSB7Ci0gICAgICAgIHJlc3VsdCB8PSBIb3Zl
clN0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6SG92ZXJTdGF0ZTsKICAg
ICAgICAgaWYgKGlzU3BpblVwQnV0dG9uUGFydEhvdmVyZWQobykpCi0gICAgICAgICAgICByZXN1
bHQgfD0gU3BpblVwU3RhdGU7CisgICAgICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6
U3BpblVwU3RhdGU7CiAgICAgfQogICAgIGlmIChpc1ByZXNzZWQobykpIHsKLSAgICAgICAgcmVz
dWx0IHw9IFByZXNzZWRTdGF0ZTsKKyAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OlBy
ZXNzZWRTdGF0ZTsKICAgICAgICAgaWYgKGlzU3BpblVwQnV0dG9uUGFydFByZXNzZWQobykpCi0g
ICAgICAgICAgICByZXN1bHQgfD0gU3BpblVwU3RhdGU7CisgICAgICAgICAgICBzdGF0ZXMgfD0g
Q29udHJvbFN0YXRlczo6U3BpblVwU3RhdGU7CiAgICAgfQogICAgIGlmIChpc0ZvY3VzZWQobykg
JiYgby0+c3R5bGUoKS5vdXRsaW5lU3R5bGVJc0F1dG8oKSkKLSAgICAgICAgcmVzdWx0IHw9IEZv
Y3VzU3RhdGU7CisgICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVzOjpGb2N1c1N0YXRlOwog
ICAgIGlmIChpc0VuYWJsZWQobykpCi0gICAgICAgIHJlc3VsdCB8PSBFbmFibGVkU3RhdGU7Cisg
ICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVzOjpFbmFibGVkU3RhdGU7CiAgICAgaWYgKGlz
Q2hlY2tlZChvKSkKLSAgICAgICAgcmVzdWx0IHw9IENoZWNrZWRTdGF0ZTsKKyAgICAgICAgc3Rh
dGVzIHw9IENvbnRyb2xTdGF0ZXM6OkNoZWNrZWRTdGF0ZTsKICAgICBpZiAoaXNSZWFkT25seUNv
bnRyb2wobykpCi0gICAgICAgIHJlc3VsdCB8PSBSZWFkT25seVN0YXRlOworICAgICAgICBzdGF0
ZXMgfD0gQ29udHJvbFN0YXRlczo6UmVhZE9ubHlTdGF0ZTsKICAgICBpZiAoaXNEZWZhdWx0KG8p
KQotICAgICAgICByZXN1bHQgfD0gRGVmYXVsdFN0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29u
dHJvbFN0YXRlczo6RGVmYXVsdFN0YXRlOwogICAgIGlmICghaXNBY3RpdmUobykpCi0gICAgICAg
IHJlc3VsdCB8PSBXaW5kb3dJbmFjdGl2ZVN0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29udHJv
bFN0YXRlczo6V2luZG93SW5hY3RpdmVTdGF0ZTsKICAgICBpZiAoaXNJbmRldGVybWluYXRlKG8p
KQotICAgICAgICByZXN1bHQgfD0gSW5kZXRlcm1pbmF0ZVN0YXRlOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVzOjpJbmRldGVybWluYXRlU3RhdGU7
CisgICAgcmV0dXJuIHN0YXRlczsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZTo6aXNBY3RpdmUoY29u
c3QgUmVuZGVyT2JqZWN0KiBvKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWUuaAppbmRleCA2ODU0NjM0NjczODk4MWMzYTNhYTJkYzRmYmY5OTdhNTE3MDZmZGI4Li45YmQ4
MGU5OGMxYTNiNDE0MDhjODdlMzA2YWU1MGVhZDJkZWNiMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBSZW5kZXJUaGVt
ZV9oCiAjZGVmaW5lIFJlbmRlclRoZW1lX2gKIAorI2luY2x1ZGUgIkNvbnRyb2xTdGF0ZXMuaCIK
ICNpZiBVU0UoTkVXX1RIRU1FKQogI2luY2x1ZGUgIlRoZW1lLmgiCiAjZWxzZQpAQCAtNzgsNyAr
NzksNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHRvIHBhaW50IHRo
ZSB3aWRnZXQgYXMgYSBiYWNrZ3JvdW5kIG9mIHRoZSBSZW5kZXJPYmplY3QuICBBIHdpZGdldCdz
IGZvcmVncm91bmQsIGUuZy4sIHRoZQogICAgIC8vIHRleHQgb2YgYSBidXR0b24sIGlzIGFsd2F5
cyByZW5kZXJlZCBieSB0aGUgZW5naW5lIGl0c2VsZi4gIFRoZSBib29sZWFuIHJldHVybiB2YWx1
ZSBpbmRpY2F0ZXMKICAgICAvLyB3aGV0aGVyIHRoZSBDU1MgYm9yZGVyL2JhY2tncm91bmQgc2hv
dWxkIGFsc28gYmUgcGFpbnRlZC4KLSAgICBib29sIHBhaW50KFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIHBhaW50KFJlbmRlck9iamVj
dCosIENvbnRyb2xTdGF0ZXMqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAg
ICAgYm9vbCBwYWludEJvcmRlck9ubHkoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOwogICAgIGJvb2wgcGFpbnREZWNvcmF0aW9ucyhSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKQEAgLTEyNiw3ICsxMjcsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIgYSByZWxl
dmFudCBzdGF0ZSBjaGFuZ2VzIG9uIGEgcGFydGljdWxhciB0aGVtZWQgb2JqZWN0LCBlLmcuLCB0
aGUgbW91c2UgYmVjb21lcyBwcmVzc2VkCiAgICAgLy8gb3IgYSBjb250cm9sIGJlY29tZXMgZGlz
YWJsZWQuCi0gICAgdmlydHVhbCBib29sIHN0YXRlQ2hhbmdlZChSZW5kZXJPYmplY3QqLCBDb250
cm9sU3RhdGUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdGF0ZUNoYW5nZWQoUmVuZGVyT2Jq
ZWN0KiwgQ29udHJvbFN0YXRlczo6U3RhdGVzKSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWV0aG9k
IGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgdGhlbWUgY2hhbmdlcyBvbiB0aGUgc3lzdGVtIGluIG9y
ZGVyIHRvIGZsdXNoIGNhY2hlZCByZXNvdXJjZXMgZnJvbSB0aGUKICAgICAvLyBvbGQgdGhlbWUu
CkBAIC0zNjksOCArMzcwLDggQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKIHB1YmxpYzoKLSAgICAv
LyBNZXRob2RzIGZvciBzdGF0ZSBxdWVyeWluZwotICAgIENvbnRyb2xTdGF0ZXMgY29udHJvbFN0
YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3Q7CisgICAgdm9pZCB1
cGRhdGVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgQ29udHJv
bFN0YXRlcyopIGNvbnN0OworICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBleHRyYWN0Q29udHJv
bFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIGJvb2wg
aXNBY3RpdmUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgYm9vbCBpc0NoZWNrZWQo
Y29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUoY29u
c3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0KaW5kZXggMDU2ZTlkNDc2ZjQ4NDQ0NGE1ZmUxZDIwYjEwNTdkODRmN2IwNjli
OS4uYWQ1M2I0Y2EzZDdlNzIxMDNiMjI5MzJmNDM0OWI5ZjQ3OGQzNzBlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjEyLDcgKzIxMiw4IEBAIFJl
bmRlclRoZW1lTWFjOjp+UmVuZGVyVGhlbWVNYWMoKQogCiBOU1ZpZXcqIFJlbmRlclRoZW1lTWFj
Ojpkb2N1bWVudFZpZXdGb3IoUmVuZGVyT2JqZWN0KiBvKSBjb25zdAogewotICAgIHJldHVybiBU
aGVtZU1hYzo6ZW5zdXJlZFZpZXcoJm8tPnZpZXcoKS5mcmFtZVZpZXcoKSwgY29udHJvbFN0YXRl
c0ZvclJlbmRlcmVyKG8pKTsKKyAgICBDb250cm9sU3RhdGVzIHN0YXRlcyhleHRyYWN0Q29udHJv
bFN0YXRlc0ZvclJlbmRlcmVyKG8pKTsKKyAgICByZXR1cm4gVGhlbWVNYWM6OmVuc3VyZWRWaWV3
KCZvLT52aWV3KCkuZnJhbWVWaWV3KCksICZzdGF0ZXMpOwogfQogCiAjaWYgRU5BQkxFKFZJREVP
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228070</attachid>
            <date>2014-03-28 11:03:05 -0700</date>
            <delta_ts>2014-03-28 11:21:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130736-20140329050211.patch</filename>
            <type>text/plain</type>
            <size>56052</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE2N2E0Mzc0OGRiYThl
MmY5ODdkMzMwOWI2OGIzNWQyZmEzZTU0ZS4uM2I0MzFiMzNmMmU2ZDJmOTYzZWM2Mjg4M2FjYmNl
MTI0ZDcxYmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDE0LTAzLTI3ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGZvcm0gY29udHJv
bHMgdGhhdCBtYXkgbmVlZCBpbmNyZW1lbnRhbCByZWRyYXcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDczNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGFyZSBzb21lIGZvcm0gY29udHJvbHMg
dGhhdCBjaGFuZ2UgYXBwZWFyYW5jZQorICAgICAgICBvdmVyIHRpbWUuIEV4cGFuZCB0aGUgQ29u
dHJvbFN0YXRlcyBzbyB0aGF0IGl0IGNhbgorICAgICAgICBob2xkIGEgbGl0dGxlIG1vcmUgaW5m
b3JtYXRpb24sIGluY2x1ZGluZyBhIHJlZmVyZW5jZQorICAgICAgICB0byB0aGUgbmF0aXZlIGZv
cm0gY29udHJvbC4gVGhpcyB3YXkgdGhlIFRoZW1lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGNh
biByZXBhaW50IHRoZSBleGlzdGluZyBuYXRpdmUgY29udHJvbCBpZiBuZWNlc3NhcnkuIEF0Cisg
ICAgICAgIGxlYXN0IFRoZW1lTWFjIHdhcyByZXVzaW5nIGEgc2luZ2xlIGNvbnRyb2wgZm9yIHBh
aW50aW5nCisgICAgICAgIGFsbCBpbnN0YW5jZXMgYmVmb3JlIHRoaXMgY2hhbmdlLgorCisgICAg
ICAgIFNpbmNlIENvbnRyb2xTdGF0ZXMgaXMgbm93IGEgY2xhc3MsIHBhc3MgaXQgYXJvdW5kIGJ5
CisgICAgICAgIHJlZmVyZW5jZS4KKworICAgICAgICBUaGUgb3RoZXIgbWFqb3IgY2hhbmdlIGlz
IGtlZXBpbmcgYSB0aW1lciB0byB0cmlnZ2VyIGEKKyAgICAgICAgcmVwYWludCBpbiBSZW5kZXJC
b3gsIHdoaWNoIGhhcHBlbnMgaWYgVGhlbWUvUmVuZGVyVGhlbWUKKyAgICAgICAgdXBkYXRlIHRo
ZSBDb250cm9sU3RhdGUgdG8gcmVxdWVzdCBvbmUuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBDb250cm9sU3RhdGVzLmguCisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOiBEaXR0by4KKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBY3RpdmUpOiBTdGF0ZXMg
bm93IHdpdGhpbiBDb250cm9sU3RhdGVzLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0
SG92ZXJlZCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hh
bmdlZCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNhYmxlZFN0YXRl
Q2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6cmVhZE9ubHlBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNl
dENoZWNrZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNl
dEluZGV0ZXJtaW5hdGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaDogTmV3IGZpbGUu
IENvcGllZCB0aGUgb2xkIENvbnRyb2xTdGF0ZXMgZW51bSwKKyAgICAgICAgYW5kIGFkZGVkIGFj
Y2Vzc29ycyB0byBob2xkIHdoZXRoZXIgb3Igbm90IHRoZSBzdGF0ZSBpcyBkaXJ0eSwgYW5kCisg
ICAgICAgIGEgcmVmZXJlbmNlIHRvIGEgcGxhdGZvcm0gY29udHJvbCBpZiBuZWNlc3NhcnkuCisg
ICAgICAgICogcGxhdGZvcm0vVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpzZWxl
Y3Rpb25Db2xvcik6IFBhc3MgQ29udHJvbFN0YXRlcyBwb2ludGVyLgorICAgICAgICAoV2ViQ29y
ZTo6VGhlbWU6OnBhaW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6aW5mbGF0
ZUNvbnRyb2xQYWludFJlY3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZVR5cGVz
Lmg6IFJlbW92ZSBDb250cm9sU3RhdGVzIGVudW0uCisgICAgICAgICogcGxhdGZvcm0vZWZsL1Jl
bmRlclRoZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphcHBs
eUVkamVTdGF0ZUZyb21Gb3JtKTogUGFzcyBDb250cm9sU3RhdGVzIHBvaW50ZXIuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBhcnQpOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaDogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbToKKyAgICAgICAgKC1bV2ViQ29yZVRoZW1lVmlldyBhZGRTdWJ2aWV3Ol0pOiBOZXcg
bWV0aG9kIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBhZGQgQ0FMYXllciBiYWNrZWQKKyAgICAgICAg
dmlld3MgdG8gdGhlIE5TVmlldyB3ZSdyZSB1c2luZyBmb3IgcmVuZGVyaW5nLgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlU3RhdGVzKTogVXNlIHRoZSBwcml2YXRlIGFuaW1hdGVkIHNldHRlcnMg
aWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydENvbnRyb2xTdGF0ZXNUb1Ro
ZW1lRHJhd1N0YXRlKTogTmFtZXNwYWNpbmcuCisgICAgICAgIChXZWJDb3JlOjpjb25maWd1cmVD
aGVja2JveCk6IFBhc3MgQ29udHJvbFN0YXRlcyBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ2hlY2tib3hDZWxsKTogTmV3IGhlbHBlciBzaW5jZSB3ZSdyZSBjcmVhdGluZyBub24t
c3RhdGljIGNlbGxzLgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQ2hlY2tib3hDZWxsKTogVGhl
IG9sZCBzdGF0aWMgcHJvdmlkZXIsIHJlbmFtZWQuCisgICAgICAgIChXZWJDb3JlOjpwYWludENo
ZWNrYm94KTogQ2hlY2sgaWYgdGhpcyBwYWludCB3YXMgdHJpZ2dlcmVkIGJ5IGEgc3RhdGUgY2hh
bmdlCisgICAgICAgIG9yIGFuIGFuaW1hdGlvbi4gVXBkYXRlIHRoZSBDb250cm9sU3RhdGVzIGlm
IHdlIG5lZWQgdG8gYmUgcmVwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6cmFkaW8pOiBQYXJh
bWV0ZXIgaXMgbm93IENvbnRyb2xTdGF0ZXMqLgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRSYWRp
byk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2V0VXBCdXR0b25DZWxsKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpidXR0b24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBhaW50
QnV0dG9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjplbnN1cmVkVmlldyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6cGFpbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrYm94KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6UmVuZGVyQm94KTogSW5pdGlhbGl6ZSB0
aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6flJlbmRlckJveCk6IFN0b3AgYW55
IHBlbmRpbmcgdGltZXJzIGFuZCBkZWxldGUgdGhlIENvbnRyb2xTdGF0ZSBpZiBuZWNlc3Nhcnku
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOiBDcmVh
dGUgYSBDb250cm9sU3RhdGVzIGlmIG5lZWRlZC4gUGFpbnQsIGFuZCBzdGFydCB0aGUgcmVwYWlu
dAorICAgICAgICB0aW1lciBpZiB0aGUgQ29udHJvbFN0YXRlcyBzYXkgd2Ugc2hvdWxkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpyZXBhaW50VGltZXJGaXJlZCk6IENhbGwgcmVwYWlu
dCB3aGVuIHRoZSB0aW1lciBmaXJlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6
IEFkZCBhIHRpbWVyIGZvciByZXBhaW50aW5nLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCk6
IEEgc3RhdGljIEhhc2hNYXAgdGhhdCBhc3NvY2lhdGVzIHJlbmRlcmVycyB3aXRoIENvbnRyb2xT
dGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpoYXNDb250cm9sU3RhdGVz
Rm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Y29udHJvbFN0
YXRlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnJlbW92
ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50OjphZGRDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludCk6IFVzZSBhIHBvaW50ZXIgdG8gQ29u
dHJvbFN0YXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RSZXBhaW50
UmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdl
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnVwZGF0ZUNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcik6IE5ldyBtZXRob2QgdGhhdCBqdXN0IHVwZGF0ZXMgdGhlIHN0YXRl
cyBwYXJ0IG9mIENvbnRyb2xTdGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6
ZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6IE5ldyBtZXRob2QgdGhhdCBjYWxjdWxh
dGVzIHRoZSBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpjb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjpkb2N1bWVudFZpZXdGb3IpOiBVc2UgYSBDb250cm9sU3Rh
dGVzIHBvaW50ZXIuCisKIDIwMTQtMDMtMjcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCB1bm5lZWRlZCAibXV0YWJsZSIga2V5d29y
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggZjIxMmY3ODExMTA2ZTZiZjI5Nzc2ZTZlZTQzNTFhODhiYmZmM2E5Yy4uODc1YWU5NDk1NDc1
NzQyMjAwZGMyZTJjN2NjNGJmMDg4NGM3Mzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xOTA4NCw2ICsxOTA4NCw3IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDb250ZW50VHlwZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udGV4dE1lbnUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENvbnRleHRNZW51SXRlbS5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udHJvbFN0YXRlcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29va2llc1N0cmF0ZWd5LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDcm9zc1RocmVhZENvcGllci5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ3Vyc29yLmgiIC8+CkBAIC0yMTEz
MCw0ICsyMTEzMSw0IEBACiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+
CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXEJ1aWxkQ3VzdG9taXphdGlv
bnNcbWFzbS50YXJnZXRzIiAvPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA0NGY2NTBi
OWEyOWM2OWM3ZDdmN2MzZThiOTc3MTA2YmYwMGE2OWM4Li4wZWQzZTA4MDQwZjY2YWYyMWVhNGYx
Yjc5YTAxYjFiNjU1ZjZiMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03OTY5LDYgKzc5NjksOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udGV4dE1lbnVJdGVtLmgiPgog
ICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udHJvbFN0YXRlcy5oIj4KKyAgICAgIDxG
aWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENvb2tpZXNTdHJhdGVneS5oIj4KICAgICAgIDxGaWx0ZXI+
cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTE1MTQ3LDQgKzE1MTUwLDQg
QEAKICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cd2luPC9GaWx0ZXI+CiAgICAgPC9NQVNNPgogICA8
L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1By
b2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNTAzMjBiMmM5ZTgzNzQxZTY2M2U3NTIwZDhlMjZhN2MwYWQyNjdlMC4uNGI1
YjhhMGFiYWVkOWVlNzIxYTE2OTdkNDdiNGZhNTMwZDRiYTg1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODAzNCw2ICs4MDM0
LDcgQEAKIAkJMzEwNzhDQzQxODgwQTZBNjAwODA5OURDIC8qIE9FU1RleHR1cmVIYWxmRmxvYXRM
aW5lYXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE9FU1RleHR1cmVIYWxmRmxvYXRMaW5l
YXIuaWRsOyBwYXRoID0gY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA3OENDNTE4ODBBQUFBMDA4MDk5REMgLyogSlNP
RVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxMDc4Q0M2MTg4MEFBQUEwMDgwOTlEQyAvKiBKU09FU1RleHR1cmVI
YWxmRmxvYXRMaW5lYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPRVNU
ZXh0dXJlSGFsZkZsb2F0TGluZWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
MUMwOEJDMThFMzVENjgwMEI2NTYxNSAvKiBDb250cm9sU3RhdGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRyb2xTdGF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzEyODhFNkUwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lUnVs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NLZXlm
cmFtZVJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTI4OEU2RjBFMzAw
NUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU0tleWZyYW1lUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMTI4OEU3MDBFMzAwNUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJh
bWVzUnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODc4
LDYgKzIwODc5LDcgQEAKIAkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkzMTFDMDhCQzE4
RTM1RDY4MDBCNjU2MTUgLyogQ29udHJvbFN0YXRlcy5oICovLAogCQkJCTQ5RTkxMkE0MEVGQUM4
RTYwMDlEMENBRiAvKiBhbmltYXRpb24gKi8sCiAJCQkJRkQzMTYwNDAxMkIwMjZBMzAwQzFBMzU5
IC8qIGF1ZGlvICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCBhZTI2NTkyNDlhOGQ3NTIxOTM0MDc4Y2FlZTc3YTAwY2I1
NDZiYTcwLi44ODkwMGRmZmE1MDg2NzJlYzU3M2U3M2FhOGVjZjM5N2Y2YmZkMWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC00ODcsNyArNDg3LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRBY3Rp
dmUoYm9vbCBmbGFnLCBib29sIHBhdXNlKQogICAgIGlmIChyZWFjdHNUb1ByZXNzKQogICAgICAg
ICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKLSAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5o
YXNBcHBlYXJhbmNlKCkgJiYgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVy
ZXIoKSwgUHJlc3NlZFN0YXRlKSkKKyAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBl
YXJhbmNlKCkgJiYgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwg
Q29udHJvbFN0YXRlczo6UHJlc3NlZFN0YXRlKSkKICAgICAgICAgcmVhY3RzVG9QcmVzcyA9IHRy
dWU7CiAKICAgICAvLyBUaGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgYSBmZWF0
dXJlIHRoYXQgb25seSB3b3JrcyBpZiB0aGUKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIEVsZW1l
bnQ6OnNldEhvdmVyZWQoYm9vbCBmbGFnKQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7
CiAKICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAg
IHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUp
OworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBD
b250cm9sU3RhdGVzOjpIb3ZlclN0YXRlKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRv
Vmlldyhib29sIGFsaWduVG9Ub3ApIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcAppbmRleCA2MTAxZjY0YmQ2OGZjZTIyODAwYjQ2NzUzMWMyOTNiMmIxYzQxMjA4Li40
OWE4NzgzY2M5M2M4NmRjODg1MTI1MTFjZmYxNjdiMjRhNmY1MTRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTc0NSw3ICsxNzQ1LDcgQEAgdm9pZCBG
cmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKCkKICAgICAgICAgZWxl
bWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBpZiAocmVuZGVyZXIg
JiYgcmVuZGVyZXItPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJl
bmRlcmVyLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlciwgRm9jdXNTdGF0ZSk7CisgICAg
ICAgICAgICAgICAgcmVuZGVyZXItPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyLCBDb250
cm9sU3RhdGVzOjpGb2N1c1N0YXRlKTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDNiMjVjYjBkM2M4ZGRl
NWExMmMzNTY4YmRkZjY0ZmY2MWQ2ZGYxY2QuLjlhMTIxYzgyYWY2MzAwMDY4ODY5YjYyMzJmNjI3
ZGY4MzkwMDY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNvbnRyb2xTdGF0
ZXMuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTE1NCw3ICsxNTUsNyBAQCB2b2lkIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKICAgICBzZXROZWVkc1dpbGxWYWxp
ZGF0ZUNoZWNrKCk7CiAgICAgZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3RvckRpc2Fi
bGVkIHwgQWZmZWN0ZWRTZWxlY3RvckVuYWJsZWQpOwogICAgIGlmIChyZW5kZXJlcigpICYmIHJl
bmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOworICAgICAgICBy
ZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVz
OjpFbmFibGVkU3RhdGUpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRP
bmx5QXR0cmlidXRlQ2hhbmdlZCgpCkBAIC0xNjIsNyArMTYzLDcgQEAgdm9pZCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpyZWFkT25seUF0dHJpYnV0ZUNoYW5nZWQoKQogICAgIHNldE5lZWRzV2ls
bFZhbGlkYXRlQ2hlY2soKTsKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgaWYgKHJl
bmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAg
IHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFJlYWRPbmx5U3Rh
dGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigp
LCBDb250cm9sU3RhdGVzOjpSZWFkT25seVN0YXRlKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNThhOTQwY2Q2MTBlOTAyNTgxOTMwMmZlYjI4N2Uz
ZDI0ZTBkYjdhOC4uODA0MDY5Y2U0Mzc0ZmI2OWQwMzExNWQ1NWRlNzI2ODhmMDNkNTVhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC04NTksNyArODU5LDcg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVja2VkKGJvb2wgbm93Q2hlY2tlZCwgVGV4
dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEIKICAgICBpZiAoQ2hlY2tlZFJhZGlvQnV0dG9ucyog
YnV0dG9ucyA9IGNoZWNrZWRSYWRpb0J1dHRvbnMoKSkKICAgICAgICAgICAgIGJ1dHRvbnMtPnVw
ZGF0ZUNoZWNrZWRTdGF0ZSh0aGlzKTsKICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigp
LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5z
dGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIo
KS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6Q2hlY2tl
ZFN0YXRlKTsKICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKIAogICAgIC8vIElkZWFsbHkg
d2UnZCBkbyB0aGlzIGZyb20gdGhlIHJlbmRlciB0cmVlIChtYXRjaGluZwpAQCAtODkzLDcgKzg5
Myw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0ZShib29sIG5ld1Zh
bHVlKQogICAgIGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JJbmRldGVybWluYXRl
KTsKIAogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFy
YW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJl
cigpLCBDaGVja2VkU3RhdGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hh
bmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGUpOwogfQogCiBpbnQg
SFRNTElucHV0RWxlbWVudDo6c2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuY3BwCmluZGV4IDllMzZmYTljZjRkNjYxYWFmMGJjM2JkZGYzN2U5ZTUxMjRk
ZDNhODEuLjQ5ZjQ4YmYzODFlOWI0NTA0OTQ0ZmJhMDU0MDVhOTlkNDc5MzE2OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
dm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICAgICAgaWYgKG9sZERpc2FibGVkICE9IG1fZGlz
YWJsZWQpIHsKICAgICAgICAgICAgIGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JE
aXNhYmxlZCB8IEFmZmVjdGVkU2VsZWN0b3JFbmFibGVkKTsKICAgICAgICAgICAgIGlmIChyZW5k
ZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAg
ICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJs
ZWRTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5n
ZWQocmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAobmFtZSA9PSBzZWxlY3RlZEF0dHIpIHsKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgZG9lc24ndCBtYXRjaCB3aGF0IHRoZSBIVE1MIHNwZWNpZmljYXRpb24gc2F5cy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OWM4MDRkMTgx
MzUxY2RjZWMyODExZmYzMmQxNzYyMDk4MTRjNjNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udHJvbFN0YXRlcy5oCkBAIC0wLDAgKzEsMTA4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb250cm9s
U3RhdGVzX2gKKyNkZWZpbmUgQ29udHJvbFN0YXRlc19oCisKKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2lm
bmRlZiBfX09CSkNfXwordHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOworI2VuZGlmCit0
eXBlZGVmIGlkIFBsYXRmb3JtQ29udHJvbEluc3RhbmNlOworI2Vsc2UKK3R5cGVkZWYgdm9pZCog
UGxhdGZvcm1Db250cm9sSW5zdGFuY2U7CisjZW5kaWYKKworCitjbGFzcyBDb250cm9sU3RhdGVz
IHsKK3B1YmxpYzoKKyAgICBlbnVtIHsKKyAgICAgICAgSG92ZXJTdGF0ZSA9IDEsCisgICAgICAg
IFByZXNzZWRTdGF0ZSA9IDEgPDwgMSwKKyAgICAgICAgRm9jdXNTdGF0ZSA9IDEgPDwgMiwKKyAg
ICAgICAgRW5hYmxlZFN0YXRlID0gMSA8PCAzLAorICAgICAgICBDaGVja2VkU3RhdGUgPSAxIDw8
IDQsCisgICAgICAgIFJlYWRPbmx5U3RhdGUgPSAxIDw8IDUsCisgICAgICAgIERlZmF1bHRTdGF0
ZSA9IDEgPDwgNiwKKyAgICAgICAgV2luZG93SW5hY3RpdmVTdGF0ZSA9IDEgPDwgNywKKyAgICAg
ICAgSW5kZXRlcm1pbmF0ZVN0YXRlID0gMSA8PCA4LAorICAgICAgICBTcGluVXBTdGF0ZSA9IDEg
PDwgOSwgLy8gU3ViLXN0YXRlIGZvciBIb3ZlclN0YXRlIGFuZCBQcmVzc2VkU3RhdGUuCisgICAg
ICAgIEFsbFN0YXRlcyA9IDB4ZmZmZmZmZmYKKyAgICB9OworCisgICAgdHlwZWRlZiB1bnNpZ25l
ZCBTdGF0ZXM7CisKKyAgICBDb250cm9sU3RhdGVzKFN0YXRlcyBzdGF0ZXMpCisgICAgICAgIDog
bV9zdGF0ZXMoc3RhdGVzKQorICAgICAgICAsIG1faW5pdGlhbGl6ZWQoZmFsc2UpCisgICAgICAg
ICwgbV9uZWVkc1JlcGFpbnQoZmFsc2UpCisgICAgICAgICwgbV9pc0RpcnR5KGZhbHNlKQorICAg
ICAgICAsIG1fY29udHJvbEluc3RhbmNlKG51bGxwdHIpCisgICAgeworICAgIH0KKworICAgIENv
bnRyb2xTdGF0ZXMoKQorICAgICAgICA6IENvbnRyb2xTdGF0ZXMoMCkKKyAgICB7CisgICAgfQor
CisgICAgfkNvbnRyb2xTdGF0ZXMoKQorICAgIHsKKyAgICB9CisKKyAgICBTdGF0ZXMgc3RhdGVz
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZXM7IH0KKyAgICB2b2lkIHNldFN0YXRlcyhTdGF0ZXMg
bmV3U3RhdGVzKQorICAgIHsKKyAgICAgICAgaWYgKG5ld1N0YXRlcyA9PSBtX3N0YXRlcykKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zdGF0ZXMgPSBuZXdTdGF0ZXM7CisgICAgICAg
IG1faXNEaXJ0eSA9IG1faW5pdGlhbGl6ZWQ7CisgICAgICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVl
OworICAgIH0KKworICAgIGJvb2wgbmVlZHNSZXBhaW50KCkgY29uc3QgeyByZXR1cm4gbV9uZWVk
c1JlcGFpbnQ7IH0KKyAgICB2b2lkIHNldE5lZWRzUmVwYWludChib29sIHIpIHsgbV9uZWVkc1Jl
cGFpbnQgPSByOyB9CisKKyAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiBtX2lzRGly
dHk7IH0KKyAgICB2b2lkIHNldERpcnR5KGJvb2wgZCkgeyBtX2lzRGlydHkgPSBkOyB9CisKKyAg
ICBQbGF0Zm9ybUNvbnRyb2xJbnN0YW5jZSBwbGF0Zm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVy
biBtX2NvbnRyb2xJbnN0YW5jZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0UGxhdGZvcm1Db250cm9s
KFBsYXRmb3JtQ29udHJvbEluc3RhbmNlIGluc3RhbmNlKSB7IG1fY29udHJvbEluc3RhbmNlID0g
aW5zdGFuY2U7IH0KKworcHJpdmF0ZToKKyAgICBTdGF0ZXMgbV9zdGF0ZXM7CisgICAgYm9vbCBt
X2luaXRpYWxpemVkOworICAgIGJvb2wgbV9uZWVkc1JlcGFpbnQ7CisgICAgYm9vbCBtX2lzRGly
dHk7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtQ29udHJvbEluc3RhbmNlPiBtX2NvbnRyb2xJbnN0
YW5jZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaAppbmRleCA1MDUw
NDZjNGRlODdlYzZhZGViM2I4MThlYWVjZDA5N2JiYWYwYzNlLi5mYjAxYTdhMWM1ZTQ4MTZhNmUw
NDUwM2E2Mjc1MTMwMjZkMjRhOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKQEAgLTI3LDYg
KzI3LDcgQEAKICNkZWZpbmUgVGhlbWVfaAogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRl
ICJDb250cm9sU3RhdGVzLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkludFJlY3Qu
aCIKICNpbmNsdWRlICJMZW5ndGhCb3guaCIKQEAgLTY1LDcgKzY2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBjb250cm9sRHJhd3NGb2N1c091dGxpbmUoQ29udHJvbFBhcnQpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIC8vIE1ldGhvZHMgZm9yIG9idGFpbmluZyBwbGF0Zm9y
bS1zcGVjaWZpYyBjb2xvcnMuCi0gICAgdmlydHVhbCBDb2xvciBzZWxlY3Rpb25Db2xvcihDb250
cm9sUGFydCwgQ29udHJvbFN0YXRlLCBTZWxlY3Rpb25QYXJ0KSBjb25zdCB7IHJldHVybiBDb2xv
cigpOyB9CisgICAgdmlydHVhbCBDb2xvciBzZWxlY3Rpb25Db2xvcihDb250cm9sUGFydCwgY29u
c3QgQ29udHJvbFN0YXRlcyosIFNlbGVjdGlvblBhcnQpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7
IH0KICAgICB2aXJ0dWFsIENvbG9yIHRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIENvbG9yKCk7IH0KICAgICAKICAgICAvLyBDU1Mgc3lzdGVtIGNvbG9ycyBhbmQgZm9u
dHMKQEAgLTk3LDEzICs5OCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvbnRyb2xS
ZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICAvLyBNZXRob2QgZm9yIHBhaW50aW5nIGEgY29udHJvbC4gVGhlIHJlY3QgaXMgaW4g
em9vbWVkIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwg
Q29udHJvbFN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgLyp6b29tZWRS
ZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovLCBTY3JvbGxWaWV3KikgY29uc3QgeyB9CisgICAg
dmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzKiwgR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYgLyp6b29tZWRSZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3Rv
ciovLCBTY3JvbGxWaWV3KikgeyB9CiAKICAgICAvLyBTb21lIGNvbnRyb2xzIG1heSBzcGlsbCBv
dXQgb2YgdGhlaXIgY29udGFpbmVycyAoZS5nLiwgdGhlIGNoZWNrIG9uIGFuIE9TIFggY2hlY2ti
b3gpLiAgV2hlbiB0aGVzZSBjb250cm9scyByZXBhaW50LAogICAgIC8vIHRoZSB0aGVtZSBuZWVk
cyB0byBjb21tdW5pY2F0ZSB0aGlzIGluZmxhdGVkIHJlY3QgdG8gdGhlIGVuZ2luZSBzbyB0aGF0
IGl0IGNhbiBpbnZhbGlkYXRlIHRoZSB3aG9sZSBjb250cm9sLgogICAgIC8vIFRoZSByZWN0IHBh
c3NlZCBpbiBpcyBpbiB6b29tZWQgY29vcmRpbmF0ZXMsIHNvIHRoZSBpbmZsYXRpb24gc2hvdWxk
IHRha2UgdGhhdCBpbnRvIGFjY291bnQgYW5kIG1ha2Ugc3VyZSB0aGUgaW5mbGF0aW9uCiAgICAg
Ly8gYW1vdW50IGlzIGFsc28gc2NhbGVkIGJ5IHRoZSB6b29tRmFjdG9yLgotICAgIHZpcnR1YWwg
dm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcywg
SW50UmVjdCYgLyp6b29tZWRSZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovKSBjb25zdCB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQsIGNv
bnN0IENvbnRyb2xTdGF0ZXMqLCBJbnRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29t
RmFjdG9yKi8pIGNvbnN0IHsgfQogICAgIAogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBv
bmNlLCBmcm9tIFJlbmRlclRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldCgpLCB0byBsZXQg
ZWFjaCBwbGF0Zm9ybSBhZGp1c3QKICAgICAvLyB0aGUgZGVmYXVsdCBDU1MgcnVsZXMgaW4gaHRt
bC5jc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKaW5kZXggZDhhYjE4ZmZhYzli
NTA0ZmY3ZjlhZjhhMDA0OTM5YTAwMTE1NmNiMS4uOTczZTc3NDYwYmVjNjUyY2FjYTBkZWQzZjU2
ZjhiZjk0YTU2N2M1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWVU
eXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaApAQCAtMjgs
MjIgKzI4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIENvbnRyb2xTdGF0ZSB7
Ci0gICAgSG92ZXJTdGF0ZSA9IDEsCi0gICAgUHJlc3NlZFN0YXRlID0gMSA8PCAxLAotICAgIEZv
Y3VzU3RhdGUgPSAxIDw8IDIsCi0gICAgRW5hYmxlZFN0YXRlID0gMSA8PCAzLAotICAgIENoZWNr
ZWRTdGF0ZSA9IDEgPDwgNCwKLSAgICBSZWFkT25seVN0YXRlID0gMSA8PCA1LAotICAgIERlZmF1
bHRTdGF0ZSA9IDEgPDwgNiwKLSAgICBXaW5kb3dJbmFjdGl2ZVN0YXRlID0gMSA8PCA3LAotICAg
IEluZGV0ZXJtaW5hdGVTdGF0ZSA9IDEgPDwgOCwKLSAgICBTcGluVXBTdGF0ZSA9IDEgPDwgOSwg
Ly8gU3ViLXN0YXRlIGZvciBIb3ZlclN0YXRlIGFuZCBQcmVzc2VkU3RhdGUuCi0gICAgQWxsU3Rh
dGVzID0gMHhmZmZmZmZmZgotfTsKLQotdHlwZWRlZiB1bnNpZ25lZCBDb250cm9sU3RhdGVzOwot
CiAvLyBNdXN0IGZvbGxvdyBDU1NWYWx1ZUtleXdvcmRzLmluIG9yZGVyCiBlbnVtIENvbnRyb2xQ
YXJ0IHsKICAgICBOb0NvbnRyb2xQYXJ0LCBDaGVja2JveFBhcnQsIFJhZGlvUGFydCwgUHVzaEJ1
dHRvblBhcnQsIFNxdWFyZUJ1dHRvblBhcnQsIEJ1dHRvblBhcnQsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAppbmRleCBmODY0Nzg1OTE3NTIzNzRj
YmRkYzA1NGYzNjhjMDE0ODI2MzdkM2ViLi5mOWQyMWM5OTZmOGYzZjMwNTQ2MDYzNjY1MTFhMDk5
OGY5MDY0YjQ5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVy
VGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVt
ZUVmbC5jcHAKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjpjbGVhclRo
ZW1lUGFydENhY2hlKCkKIAogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseUVkamVTdGF0
ZUZyb21Gb3JtKEV2YXNfT2JqZWN0KiBvYmplY3QsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBib29s
IGhhdmVCYWNrZ3JvdW5kKQordm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlFZGplU3RhdGVGcm9t
Rm9ybShFdmFzX09iamVjdCogb2JqZWN0LCBjb25zdCBDb250cm9sU3RhdGVzKiBzdGF0ZXMsIGJv
b2wgaGF2ZUJhY2tncm91bmQpCiB7CiAgICAgY29uc3QgY2hhciAqc2lnbmFsc1tdID0geyAvLyBr
ZWVwIGluIHN5bmMgd2l0aCBXZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAogICAgICAgICAi
aG92ZXJlZCIsCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlF
ZGplU3RhdGVGcm9tRm9ybShFdmFzX09iamVjdCogb2JqZWN0LCBDb250cm9sU3RhdGVzIHMKICAg
ICBlZGplX29iamVjdF9zaWduYWxfZW1pdChvYmplY3QsICJyZXNldCIsICIiKTsKIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChzaWduYWxzKTsgKytpKSB7Ci0g
ICAgICAgIGlmIChzdGF0ZXMgJiAoMSA8PCBpKSkKKyAgICAgICAgaWYgKHN0YXRlcy0+c3RhdGVz
KCkgJiAoMSA8PCBpKSkKICAgICAgICAgICAgIGVkamVfb2JqZWN0X3NpZ25hbF9lbWl0KG9iamVj
dCwgc2lnbmFsc1tpXSwgIiIpOwogICAgIH0KIApAQCAtMzgzLDcgKzM4Myw4IEBAIGJvb2wgUmVu
ZGVyVGhlbWVFZmw6OnBhaW50VGhlbWVQYXJ0KFJlbmRlck9iamVjdCogb2JqZWN0LCBGb3JtVHlw
ZSB0eXBlLCBjb25zdCBQCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgaGF2ZUJh
Y2tncm91bmRDb2xvciA9IGlzQ29udHJvbFN0eWxlZCgmb2JqZWN0LT5zdHlsZSgpLCBvYmplY3Qt
PnN0eWxlKCkuYm9yZGVyKCksICpvYmplY3QtPnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBD
b2xvcjo6d2hpdGUpOwotICAgIGFwcGx5RWRqZVN0YXRlRnJvbUZvcm0oZW50cnktPmVkamUoKSwg
Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG9iamVjdCksIGhhdmVCYWNrZ3JvdW5kQ29sb3IpOwor
ICAgIENvbnRyb2xTdGF0ZXMgc3RhdGVzKGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIo
b2JqZWN0KSk7CisgICAgYXBwbHlFZGplU3RhdGVGcm9tRm9ybShlbnRyeS0+ZWRqZSgpLCAmc3Rh
dGVzLCBoYXZlQmFja2dyb3VuZENvbG9yKTsKIAogICAgIGFwcGx5RWRqZVJUTFN0YXRlKGVudHJ5
LT5lZGplKCksIG9iamVjdCwgdHlwZSwgcmVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1JlbmRlclRoZW1lRWZsLmgKaW5kZXggZTZkYTA0ZWQyMTczOWQ1NTBhYmZlMWZmMmM2
ZjFiZWU4MTkyNGQwMi4uMDBmMGJiN2M1NmNhYzNlZDQwY2YzMjlmMWFhMGUyOGQzMzc4MmVhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmgKQEAgLTIy
OSw3ICsyMjksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhcHBseVBhcnREZXNjcmlwdGlvbnNG
cm9tKGNvbnN0IFN0cmluZyYgdGhlbWVQYXRoKTsKIAotICAgIHZvaWQgYXBwbHlFZGplU3RhdGVG
cm9tRm9ybShFdmFzX09iamVjdCosIENvbnRyb2xTdGF0ZXMsIGJvb2wpOworICAgIHZvaWQgYXBw
bHlFZGplU3RhdGVGcm9tRm9ybShFdmFzX09iamVjdCosIGNvbnN0IENvbnRyb2xTdGF0ZXMqLCBi
b29sKTsKICAgICB2b2lkIGFwcGx5RWRqZVJUTFN0YXRlKEV2YXNfT2JqZWN0KiwgUmVuZGVyT2Jq
ZWN0KiwgRm9ybVR5cGUsIGNvbnN0IEludFJlY3QmKTsKICAgICBib29sIHBhaW50VGhlbWVQYXJ0
KFJlbmRlck9iamVjdCosIEZvcm1UeXBlLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKaW5kZXggOGI3ZTk4MjJk
ZmI1NDFkOTMwNDIzYTRmNTdjNzFmYWVjMDk1OGUzMC4uZDczOTUyMzYwYjQwNDZiNmY3MWUzNzRi
YWIyNGVjNzNkZWFmYjVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgK
QEAgLTUxLDExICs1MSwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFJl
cXVpcmVzUHJlV2hpdGVTcGFjZShDb250cm9sUGFydCBwYXJ0KSBjb25zdCB7IHJldHVybiBwYXJ0
ID09IFB1c2hCdXR0b25QYXJ0OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBh
cnQsIENvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBmbG9h
dCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGluZmxh
dGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzLCBJbnRSZWN0Jiwg
ZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQ
YXJ0LCBDb250cm9sU3RhdGVzKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGZs
b2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
aW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMq
LCBJbnRSZWN0JiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogT25j
ZSBSZW5kZXJUaGVtZU1hYyBpcyBjb252ZXJ0ZWQgb3ZlciB0byB1c2UgVGhlbWUgdGhlbiB0aGlz
IGNhbiBiZSBpbnRlcm5hbCB0byBUaGVtZU1hYy4KLSAgICBzdGF0aWMgTlNWaWV3KiBlbnN1cmVk
VmlldyhTY3JvbGxWaWV3KiwgQ29udHJvbFN0YXRlcyk7CisgICAgc3RhdGljIE5TVmlldyogZW5z
dXJlZFZpZXcoU2Nyb2xsVmlldyosIGNvbnN0IENvbnRyb2xTdGF0ZXMqKTsKICAgICBzdGF0aWMg
dm9pZCBzZXRGb2N1c1JpbmdDbGlwUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCA4NDUyNWNjZGY3YmM0MzViODA4
NjEyMTdhMGExZTBiZjBhY2M2M2NhLi43NWMwNjg2YmMwNzVlNWRjYzQ3MWMxZjVjZDg4YTQyZjA4
MmUxZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC0zNSw2
ICszNSwxNSBAQAogI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIAorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MDAKK0BpbnRlcmZhY2UgTlNCdXR0b25DZWxsKERldGFpbHMpCistICh2b2lkKV9zZXRTdGF0ZToo
TlNJbnRlZ2VyKXZhbHVlIGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOworLSAodm9pZClfc2V0SGln
aGxpZ2h0ZWQ6KEJPT0wpZmxhZyBhbmltYXRlZDooQk9PTClhbmltYXRlZDsKKy0gKHZvaWQpX3Jl
bmRlckN1cnJlbnRBbmltYXRpb25GcmFtZUluQ29udGV4dDooQ0dDb250ZXh0UmVmKWN0eHQgYXRM
b2NhdGlvbjooTlNQb2ludCl3aGVyZTsKKy0gKEJPT0wpX3N0YXRlQW5pbWF0aW9uUnVubmluZzsK
K0BlbmQKKyNlbmRpZgorCiBzdGF0aWMgTlNSZWN0IGZvY3VzUmluZ0NsaXBSZWN0Owogc3RhdGlj
IEJPT0wgdGhlbWVXaW5kb3dIYXNLZXlBcHBlYXJhbmNlOwogCkBAIC05Nyw2ICsxMDYsMTIgQEAg
c3RhdGljIEJPT0wgdGhlbWVXaW5kb3dIYXNLZXlBcHBlYXJhbmNlOwogICAgIHJldHVybiBzZWxm
OwogfQogCistICh2b2lkKWFkZFN1YnZpZXc6KE5TVmlldyopc3VidmlldworeworICAgIC8vIEJ5
IGRvaW5nIG5vdGhpbmcgaW4gdGhpcyBtZXRob2Qgd2UgZm9yYmlkIGNvbnRyb2xzIGZyb20gYWRk
aW5nIHN1YnZpZXdzLgorICAgIC8vIFRoaXMgdGVsbHMgQXBwS2l0IHRvIG5vdCB1c2UgTGF5ZXIt
YmFja2VkIGFuaW1hdGlvbiBmb3IgY29udHJvbCByZW5kZXJpbmcuCisgICAgVU5VU0VEX1BBUkFN
KHN1YnZpZXcpOworfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gTlNGb250IChXZWJDb3JlVGhl
bWUpCkBAIC0xNzYsNDUgKzE5MSw1NiBAQCBzdGF0aWMgdm9pZCBzZXRDb250cm9sU2l6ZShOU0Nl
bGwqIGNlbGwsIGNvbnN0IEludFNpemUqIHNpemVzLCBjb25zdCBJbnRTaXplJiBtaQogICAgICAg
ICBbY2VsbCBzZXRDb250cm9sU2l6ZTooTlNDb250cm9sU2l6ZSlzaXplXTsKIH0KIAotc3RhdGlj
IHZvaWQgdXBkYXRlU3RhdGVzKE5TQ2VsbCogY2VsbCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMpCitz
dGF0aWMgdm9pZCB1cGRhdGVTdGF0ZXMoTlNDZWxsKiBjZWxsLCBjb25zdCBDb250cm9sU3RhdGVz
KiBjb250cm9sU3RhdGVzLCBib29sIHVzZUFuaW1hdGlvbiA9IGZhbHNlKQogeworICAgIENvbnRy
b2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZXMgPSBjb250cm9sU3RhdGVzLT5zdGF0ZXMoKTsKKwogICAg
IC8vIEhvdmVyIHN0YXRlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQXF1YS4KICAgICAKICAgICAvLyBQ
cmVzc2VkIHN0YXRlCiAgICAgYm9vbCBvbGRQcmVzc2VkID0gW2NlbGwgaXNIaWdobGlnaHRlZF07
Ci0gICAgYm9vbCBwcmVzc2VkID0gc3RhdGVzICYgUHJlc3NlZFN0YXRlOworICAgIGJvb2wgcHJl
c3NlZCA9IHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OlByZXNzZWRTdGF0ZTsKICAgICBpZiAocHJl
c3NlZCAhPSBvbGRQcmVzc2VkKQogICAgICAgICBbY2VsbCBzZXRIaWdobGlnaHRlZDpwcmVzc2Vk
XTsKICAgICAKICAgICAvLyBFbmFibGVkIHN0YXRlCiAgICAgYm9vbCBvbGRFbmFibGVkID0gW2Nl
bGwgaXNFbmFibGVkXTsKLSAgICBib29sIGVuYWJsZWQgPSBzdGF0ZXMgJiBFbmFibGVkU3RhdGU7
CisgICAgYm9vbCBlbmFibGVkID0gc3RhdGVzICYgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRl
OwogICAgIGlmIChlbmFibGVkICE9IG9sZEVuYWJsZWQpCiAgICAgICAgIFtjZWxsIHNldEVuYWJs
ZWQ6ZW5hYmxlZF07CiAKICAgICAvLyBDaGVja2VkIGFuZCBJbmRldGVybWluYXRlCiAgICAgYm9v
bCBvbGRJbmRldGVybWluYXRlID0gW2NlbGwgc3RhdGVdID09IE5TTWl4ZWRTdGF0ZTsKLSAgICBi
b29sIGluZGV0ZXJtaW5hdGUgPSAoc3RhdGVzICYgSW5kZXRlcm1pbmF0ZVN0YXRlKTsKLSAgICBi
b29sIGNoZWNrZWQgPSBzdGF0ZXMgJiBDaGVja2VkU3RhdGU7CisgICAgYm9vbCBpbmRldGVybWlu
YXRlID0gKHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OkluZGV0ZXJtaW5hdGVTdGF0ZSk7CisgICAg
Ym9vbCBjaGVja2VkID0gc3RhdGVzICYgQ29udHJvbFN0YXRlczo6Q2hlY2tlZFN0YXRlOwogICAg
IGJvb2wgb2xkQ2hlY2tlZCA9IFtjZWxsIHN0YXRlXSA9PSBOU09uU3RhdGU7Ci0gICAgaWYgKG9s
ZEluZGV0ZXJtaW5hdGUgIT0gaW5kZXRlcm1pbmF0ZSB8fCBjaGVja2VkICE9IG9sZENoZWNrZWQp
Ci0gICAgICAgIFtjZWxsIHNldFN0YXRlOmluZGV0ZXJtaW5hdGUgPyBOU01peGVkU3RhdGUgOiAo
Y2hlY2tlZCA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGUpXTsKLSAgICAgICAgCisgICAgaWYgKG9s
ZEluZGV0ZXJtaW5hdGUgIT0gaW5kZXRlcm1pbmF0ZSB8fCBjaGVja2VkICE9IG9sZENoZWNrZWQp
IHsKKyAgICAgICAgTlNDZWxsU3RhdGVWYWx1ZSBuZXdTdGF0ZSA9IGluZGV0ZXJtaW5hdGUgPyBO
U01peGVkU3RhdGUgOiAoY2hlY2tlZCA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGUpOworI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAKKyAgICAgICAgWyhOU0J1dHRv
bkNlbGwqKWNlbGwgX3NldFN0YXRlOm5ld1N0YXRlIGFuaW1hdGVkOnVzZUFuaW1hdGlvbl07Cisj
ZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0odXNlQW5pbWF0aW9uKTsKKyAgICAgICAgW2NlbGwg
c2V0U3RhdGU6bmV3U3RhdGVdOworI2VuZGlmCisgICAgfQorCiAgICAgLy8gV2luZG93IGluYWN0
aXZlIHN0YXRlIGRvZXMgbm90IG5lZWQgdG8gYmUgY2hlY2tlZCBleHBsaWNpdGx5LCBzaW5jZSB3
ZSBwYWludCBwYXJlbnRlZCB0byAKICAgICAvLyBhIHZpZXcgaW4gYSB3aW5kb3cgd2hvc2Uga2V5
IHN0YXRlIGNhbiBiZSBkZXRlY3RlZC4KIH0KIAotc3RhdGljIFRoZW1lRHJhd1N0YXRlIGNvbnZl
cnRDb250cm9sU3RhdGVzVG9UaGVtZURyYXdTdGF0ZShUaGVtZUJ1dHRvbktpbmQga2luZCwgQ29u
dHJvbFN0YXRlcyBzdGF0ZXMpCitzdGF0aWMgVGhlbWVEcmF3U3RhdGUgY29udmVydENvbnRyb2xT
dGF0ZXNUb1RoZW1lRHJhd1N0YXRlKFRoZW1lQnV0dG9uS2luZCBraW5kLCBjb25zdCBDb250cm9s
U3RhdGVzKiBjb250cm9sU3RhdGVzKQogewotICAgIGlmIChzdGF0ZXMgJiBSZWFkT25seVN0YXRl
KQorICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZXMgPSBjb250cm9sU3RhdGVzLT5zdGF0
ZXMoKTsKKworICAgIGlmIChzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpSZWFkT25seVN0YXRlKQog
ICAgICAgICByZXR1cm4ga1RoZW1lU3RhdGVVbmF2YWlsYWJsZUluYWN0aXZlOwotICAgIGlmICgh
KHN0YXRlcyAmIEVuYWJsZWRTdGF0ZSkpCisgICAgaWYgKCEoc3RhdGVzICYgQ29udHJvbFN0YXRl
czo6RW5hYmxlZFN0YXRlKSkKICAgICAgICAgcmV0dXJuIGtUaGVtZVN0YXRlVW5hdmFpbGFibGVJ
bmFjdGl2ZTsKIAogICAgIC8vIERvIG5vdCBwcm9jZXNzIFByZXNzZWRTdGF0ZSBpZiAhRW5hYmxl
ZFN0YXRlIG9yIFJlYWRPbmx5U3RhdGUuCi0gICAgaWYgKHN0YXRlcyAmIFByZXNzZWRTdGF0ZSkg
eworICAgIGlmIChzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpQcmVzc2VkU3RhdGUpIHsKICAgICAg
ICAgaWYgKGtpbmQgPT0ga1RoZW1lSW5jRGVjQnV0dG9uIHx8IGtpbmQgPT0ga1RoZW1lSW5jRGVj
QnV0dG9uU21hbGwgfHwga2luZCA9PSBrVGhlbWVJbmNEZWNCdXR0b25NaW5pKQotICAgICAgICAg
ICAgcmV0dXJuIHN0YXRlcyAmIFNwaW5VcFN0YXRlID8ga1RoZW1lU3RhdGVQcmVzc2VkVXAgOiBr
VGhlbWVTdGF0ZVByZXNzZWREb3duOworICAgICAgICAgICAgcmV0dXJuIHN0YXRlcyAmIENvbnRy
b2xTdGF0ZXM6OlNwaW5VcFN0YXRlID8ga1RoZW1lU3RhdGVQcmVzc2VkVXAgOiBrVGhlbWVTdGF0
ZVByZXNzZWREb3duOwogICAgICAgICByZXR1cm4ga1RoZW1lU3RhdGVQcmVzc2VkOwogICAgIH0K
ICAgICByZXR1cm4ga1RoZW1lU3RhdGVBY3RpdmU7CkBAIC0yNjYsMzQgKzI5Miw1NCBAQCBzdGF0
aWMgTGVuZ3RoU2l6ZSBjaGVja2JveFNpemUoY29uc3QgRm9udCYgZm9udCwgY29uc3QgTGVuZ3Ro
U2l6ZSYgem9vbWVkU2l6ZSwgZgogICAgIC8vIFVzZSB0aGUgZm9udCBzaXplIHRvIGRldGVybWlu
ZSB0aGUgaW50cmluc2ljIHdpZHRoIG9mIHRoZSBjb250cm9sLgogICAgIHJldHVybiBzaXplRnJv
bUZvbnQoZm9udCwgem9vbWVkU2l6ZSwgem9vbUZhY3RvciwgY2hlY2tib3hTaXplcygpKTsKIH0K
LQotc3RhdGljIE5TQnV0dG9uQ2VsbCAqY2hlY2tib3goQ29udHJvbFN0YXRlcyBzdGF0ZXMsIGNv
bnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IpCi17Ci0gICAgc3RhdGlj
IE5TQnV0dG9uQ2VsbCAqY2hlY2tib3hDZWxsOwotICAgIGlmICghY2hlY2tib3hDZWxsKSB7Ci0g
ICAgICAgIGNoZWNrYm94Q2VsbCA9IFtbTlNCdXR0b25DZWxsIGFsbG9jXSBpbml0XTsKLSAgICAg
ICAgW2NoZWNrYm94Q2VsbCBzZXRCdXR0b25UeXBlOk5TU3dpdGNoQnV0dG9uXTsKLSAgICAgICAg
W2NoZWNrYm94Q2VsbCBzZXRUaXRsZTpuaWxdOwotICAgICAgICBbY2hlY2tib3hDZWxsIHNldEFs
bG93c01peGVkU3RhdGU6WUVTXTsKLSAgICAgICAgW2NoZWNrYm94Q2VsbCBzZXRGb2N1c1JpbmdU
eXBlOk5TRm9jdXNSaW5nVHlwZUV4dGVyaW9yXTsKLSAgICB9CiAgICAgCitzdGF0aWMgdm9pZCBj
b25maWd1cmVDaGVja2JveChOU0NlbGwqIGNlbGwsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0YXRl
cywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgYm9vbCBpc1N0
YXRlQ2hhbmdlKQorewogICAgIC8vIFNldCB0aGUgY29udHJvbCBzaXplIGJhc2VkIG9mZiB0aGUg
cmVjdGFuZ2xlIHdlJ3JlIHBhaW50aW5nIGludG8uCi0gICAgc2V0Q29udHJvbFNpemUoY2hlY2ti
b3hDZWxsLCBjaGVja2JveFNpemVzKCksIHpvb21lZFJlY3Quc2l6ZSgpLCB6b29tRmFjdG9yKTsK
KyAgICBzZXRDb250cm9sU2l6ZShjZWxsLCBjaGVja2JveFNpemVzKCksIHpvb21lZFJlY3Quc2l6
ZSgpLCB6b29tRmFjdG9yKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgdmFyaW91cyBzdGF0ZXMgd2Ug
cmVzcG9uZCB0by4KLSAgICB1cGRhdGVTdGF0ZXMoY2hlY2tib3hDZWxsLCBzdGF0ZXMpOworICAg
IHVwZGF0ZVN0YXRlcyhjZWxsLCBzdGF0ZXMsIGlzU3RhdGVDaGFuZ2UpOworfQogICAgIAorc3Rh
dGljIE5TQnV0dG9uQ2VsbCAqY3JlYXRlQ2hlY2tib3hDZWxsKCkKK3sKKyAgICBOU0J1dHRvbkNl
bGwgKmNoZWNrYm94Q2VsbCA9IFtbTlNCdXR0b25DZWxsIGFsbG9jXSBpbml0XTsKKyAgICBbY2hl
Y2tib3hDZWxsIHNldEJ1dHRvblR5cGU6TlNTd2l0Y2hCdXR0b25dOworICAgIFtjaGVja2JveENl
bGwgc2V0VGl0bGU6bmlsXTsKKyAgICBbY2hlY2tib3hDZWxsIHNldEFsbG93c01peGVkU3RhdGU6
WUVTXTsKKyAgICBbY2hlY2tib3hDZWxsIHNldEZvY3VzUmluZ1R5cGU6TlNGb2N1c1JpbmdUeXBl
RXh0ZXJpb3JdOwogICAgIHJldHVybiBjaGVja2JveENlbGw7CiB9CiAKK3N0YXRpYyBOU0J1dHRv
bkNlbGwgKnNoYXJlZENoZWNrYm94Q2VsbChjb25zdCBDb250cm9sU3RhdGVzKiBzdGF0ZXMsIGNv
bnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IpCit7CisgICAgc3RhdGlj
IE5TQnV0dG9uQ2VsbCAqY2hlY2tib3hDZWxsOworICAgIGlmICghY2hlY2tib3hDZWxsKQorICAg
ICAgICBjaGVja2JveENlbGwgPSBjcmVhdGVDaGVja2JveENlbGwoKTsKKworICAgIGNvbmZpZ3Vy
ZUNoZWNrYm94KGNoZWNrYm94Q2VsbCwgc3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yLCBm
YWxzZSk7CisgICAgcmV0dXJuIGNoZWNrYm94Q2VsbDsKK30KKyAgICAKIC8vIEZJWE1FOiBTaGFy
ZSBtb3JlIGNvZGUgd2l0aCByYWRpbyBidXR0b25zLgotc3RhdGljIHZvaWQgcGFpbnRDaGVja2Jv
eChDb250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxW
aWV3KQorc3RhdGljIHZvaWQgcGFpbnRDaGVja2JveChDb250cm9sU3RhdGVzKiBjb250cm9sU3Rh
dGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3Qs
IGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcpCiB7CiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKLSAgICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIGFuZCBo
ZWlnaHQgbmVlZGVkIGZvciB0aGUgY29udHJvbCBhbmQgcHJlcGFyZSB0aGUgY2VsbCBmb3IgcGFp
bnRpbmcuCi0gICAgTlNCdXR0b25DZWxsICpjaGVja2JveENlbGwgPSBjaGVja2JveChzdGF0ZXMs
IHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOworICAgIE5TQnV0dG9uQ2VsbCAqY2hlY2tib3hDZWxs
ID0gc3RhdGljX2Nhc3Q8TlNCdXR0b25DZWxsKj4oY29udHJvbFN0YXRlcy0+cGxhdGZvcm1Db250
cm9sKCkpOworCisgICAgaWYgKGNvbnRyb2xTdGF0ZXMtPmlzRGlydHkoKSkgeworICAgICAgICBp
ZiAoIWNoZWNrYm94Q2VsbCkKKyAgICAgICAgICAgIGNoZWNrYm94Q2VsbCA9IGNyZWF0ZUNoZWNr
Ym94Q2VsbCgpOworICAgICAgICBjb25maWd1cmVDaGVja2JveChjaGVja2JveENlbGwsIGNvbnRy
b2xTdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IsIHRydWUpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmICghY2hlY2tib3hDZWxsKQorICAgICAgICAgICAgY2hlY2tib3hDZWxsID0gc2hh
cmVkQ2hlY2tib3hDZWxsKGNvbnRyb2xTdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOwor
ICAgICAgICBjb25maWd1cmVDaGVja2JveChjaGVja2JveENlbGwsIGNvbnRyb2xTdGF0ZXMsIHpv
b21lZFJlY3QsIHpvb21GYWN0b3IsIGZhbHNlKTsKKyAgICB9CisgICAgY29udHJvbFN0YXRlcy0+
c2V0RGlydHkoZmFsc2UpOworCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpjb250ZXh0KTsKIAogICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBbY2hlY2ti
b3hDZWxsIGNvbnRyb2xTaXplXTsKQEAgLTMxMSwxMiArMzU3LDM0IEBAIHN0YXRpYyB2b2lkIHBh
aW50Q2hlY2tib3goQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QKICAgICB9CiAKICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxD
b250ZXh0KGNvbnRleHQpOwotICAgIE5TVmlldyAqdmlldyA9IFRoZW1lTWFjOjplbnN1cmVkVmll
dyhzY3JvbGxWaWV3LCBzdGF0ZXMpOwotICAgIFtjaGVja2JveENlbGwgZHJhd1dpdGhGcmFtZTpO
U1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6dmlld107Ci0gICAgaWYgKHN0YXRlcyAmIEZvY3Vz
U3RhdGUpCisgICAgTlNWaWV3ICp2aWV3ID0gVGhlbWVNYWM6OmVuc3VyZWRWaWV3KHNjcm9sbFZp
ZXcsIGNvbnRyb2xTdGF0ZXMpOworICAgIGJvb2wgZHJhd1N0YXRpY2FsbHkgPSB0cnVlOworI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAKKyAgICBkcmF3U3RhdGlj
YWxseSA9ICFbY2hlY2tib3hDZWxsIF9zdGF0ZUFuaW1hdGlvblJ1bm5pbmddOworI2VuZGlmCisg
ICAgaWYgKGRyYXdTdGF0aWNhbGx5KQorICAgICAgICBbY2hlY2tib3hDZWxsIGRyYXdXaXRoRnJh
bWU6TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5WaWV3OnZpZXddOworICAgIGVsc2UgeworICAgICAg
ICAvLyBGSVhNRTogVGhpcyBpc24ndCBxdWl0ZSBjb3JyZWN0IGF0IHRoZSBtb21lbnQgZHVlIHRv
IHRoZSB3YXkgdGhlIHRpY2sgbWFyayBleHRlbmRzIG91dCBvZiB0aGUgY29udHJvbC4KKyAgICAg
ICAgY29udGV4dC0+dHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkp
OworICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICAgICAgY29u
dGV4dC0+dHJhbnNsYXRlKDAsIC1pbmZsYXRlZFJlY3QuaGVpZ2h0KCkpOworI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAKKyAgICAgICAgW2NoZWNrYm94Q2VsbCBf
cmVuZGVyQ3VycmVudEFuaW1hdGlvbkZyYW1lSW5Db250ZXh0OmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpIGF0TG9jYXRpb246TlNNYWtlUG9pbnQoMCwgMCldOworI2VuZGlmCisgICAgfQorICAg
IGlmIChjb250cm9sU3RhdGVzLT5zdGF0ZXMoKSAmIENvbnRyb2xTdGF0ZXM6OkZvY3VzU3RhdGUp
CiAgICAgICAgIFtjaGVja2JveENlbGwgX3dlYl9kcmF3Rm9jdXNSaW5nV2l0aEZyYW1lOk5TUmVj
dChpbmZsYXRlZFJlY3QpIGluVmlldzp2aWV3XTsKICAgICBbY2hlY2tib3hDZWxsIHNldENvbnRy
b2xWaWV3Om5pbF07CiAgICAgCisgICAgYm9vbCBuZWVkc1JlcGFpbnQgPSBmYWxzZTsKKyNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwCisgICAgbmVlZHNSZXBhaW50
ID0gW2NoZWNrYm94Q2VsbCBfc3RhdGVBbmltYXRpb25SdW5uaW5nXTsKKyNlbmRpZgorICAgIGNv
bnRyb2xTdGF0ZXMtPnNldE5lZWRzUmVwYWludChuZWVkc1JlcGFpbnQpOworICAgIGlmIChuZWVk
c1JlcGFpbnQpCisgICAgICAgIGNvbnRyb2xTdGF0ZXMtPnNldFBsYXRmb3JtQ29udHJvbChjaGVj
a2JveENlbGwpOworCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0zNDks
NyArNDE3LDcgQEAgc3RhdGljIExlbmd0aFNpemUgcmFkaW9TaXplKGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IExlbmd0aFNpemUmIHpvb21lZFNpemUsIGZsb2EKICAgICByZXR1cm4gc2l6ZUZyb21G
b250KGZvbnQsIHpvb21lZFNpemUsIHpvb21GYWN0b3IsIHJhZGlvU2l6ZXMoKSk7CiB9CiAKLXN0
YXRpYyBOU0J1dHRvbkNlbGwgKnJhZGlvKENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBjb25zdCBJbnRS
ZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yKQorc3RhdGljIE5TQnV0dG9uQ2VsbCAq
cmFkaW8oY29uc3QgQ29udHJvbFN0YXRlcyogc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRS
ZWN0LCBmbG9hdCB6b29tRmFjdG9yKQogewogICAgIHN0YXRpYyBOU0J1dHRvbkNlbGwgKnJhZGlv
Q2VsbDsKICAgICBpZiAoIXJhZGlvQ2VsbCkgewpAQCAtMzY4LDEwICs0MzYsMTAgQEAgc3RhdGlj
IE5TQnV0dG9uQ2VsbCAqcmFkaW8oQ29udHJvbFN0YXRlcyBzdGF0ZXMsIGNvbnN0IEludFJlY3Qm
IHpvb21lZFJlY3QsIGZsb2EKICAgICByZXR1cm4gcmFkaW9DZWxsOwogfQogCi1zdGF0aWMgdm9p
ZCBwYWludFJhZGlvKENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZp
ZXcqIHNjcm9sbFZpZXcpCitzdGF0aWMgdm9pZCBwYWludFJhZGlvKENvbnRyb2xTdGF0ZXMqIGNv
bnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9v
bWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldykKIHsKICAg
ICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUgY29udHJv
bCBhbmQgcHJlcGFyZSB0aGUgY2VsbCBmb3IgcGFpbnRpbmcuCi0gICAgTlNCdXR0b25DZWxsICpy
YWRpb0NlbGwgPSByYWRpbyhzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOworICAgIE5T
QnV0dG9uQ2VsbCAqcmFkaW9DZWxsID0gcmFkaW8oY29udHJvbFN0YXRlcywgem9vbWVkUmVjdCwg
em9vbUZhY3Rvcik7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpj
b250ZXh0KTsKIAogICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBbcmFkaW9DZWxsIGNv
bnRyb2xTaXplXTsKQEAgLTM5MCw5ICs0NTgsOSBAQCBzdGF0aWMgdm9pZCBwYWludFJhZGlvKENv
bnRyb2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludAog
CiAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsK
ICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1ZpZXcgKnZpZXcgPSBUaGVt
ZU1hYzo6ZW5zdXJlZFZpZXcoc2Nyb2xsVmlldywgc3RhdGVzKTsKKyAgICBOU1ZpZXcgKnZpZXcg
PSBUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoc2Nyb2xsVmlldywgY29udHJvbFN0YXRlcyk7CiAgICAg
W3JhZGlvQ2VsbCBkcmF3V2l0aEZyYW1lOk5TUmVjdChpbmZsYXRlZFJlY3QpIGluVmlldzp2aWV3
XTsKLSAgICBpZiAoc3RhdGVzICYgRm9jdXNTdGF0ZSkKKyAgICBpZiAoY29udHJvbFN0YXRlcy0+
c3RhdGVzKCkgJiBDb250cm9sU3RhdGVzOjpGb2N1c1N0YXRlKQogICAgICAgICBbcmFkaW9DZWxs
IF93ZWJfZHJhd0ZvY3VzUmluZ1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6
dmlld107CiAgICAgW3JhZGlvQ2VsbCBzZXRDb250cm9sVmlldzpuaWxdOwogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKQEAgLTQzMCw3ICs0OTgsNyBAQCBzdGF0aWMgTlNCdXR0b25DZWxs
ICpsZWFrQnV0dG9uQ2VsbChCdXR0b25DZWxsVHlwZSB0eXBlKQogICAgIHJldHVybiBjZWxsOwog
fQogCi1zdGF0aWMgdm9pZCBzZXRVcEJ1dHRvbkNlbGwoTlNCdXR0b25DZWxsICpjZWxsLCBDb250
cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVk
UmVjdCwgZmxvYXQgem9vbUZhY3RvcikKK3N0YXRpYyB2b2lkIHNldFVwQnV0dG9uQ2VsbChOU0J1
dHRvbkNlbGwgKmNlbGwsIENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0
YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikKIHsKICAg
ICAvLyBTZXQgdGhlIGNvbnRyb2wgc2l6ZSBiYXNlZCBvZmYgdGhlIHJlY3RhbmdsZSB3ZSdyZSBw
YWludGluZyBpbnRvLgogICAgIGNvbnN0IEludFNpemUqIHNpemVzID0gYnV0dG9uU2l6ZXMoKTsK
QEAgLTQ0NywyNiArNTE1LDI4IEBAIHN0YXRpYyB2b2lkIHNldFVwQnV0dG9uQ2VsbChOU0J1dHRv
bkNlbGwgKmNlbGwsIENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMKICAgICB1cGRhdGVT
dGF0ZXMoY2VsbCwgc3RhdGVzKTsKIH0KIAotc3RhdGljIE5TQnV0dG9uQ2VsbCAqYnV0dG9uKENv
bnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29t
ZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yKQorc3RhdGljIE5TQnV0dG9uQ2VsbCAqYnV0dG9uKENv
bnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIGNvbnN0
IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IpCiB7CisgICAgQ29udHJvbFN0
YXRlczo6U3RhdGVzIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygpOwogICAgIE5TQnV0
dG9uQ2VsbCAqY2VsbDsKLSAgICBpZiAoc3RhdGVzICYgRGVmYXVsdFN0YXRlKSB7CisgICAgaWYg
KHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OkRlZmF1bHRTdGF0ZSkgewogICAgICAgICBzdGF0aWMg
TlNCdXR0b25DZWxsICpkZWZhdWx0Q2VsbCA9IGxlYWtCdXR0b25DZWxsKERlZmF1bHRCdXR0b25D
ZWxsKTsKICAgICAgICAgY2VsbCA9IGRlZmF1bHRDZWxsOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IHN0YXRpYyBOU0J1dHRvbkNlbGwgKm5vcm1hbENlbGwgPSBsZWFrQnV0dG9uQ2VsbChOb3JtYWxC
dXR0b25DZWxsKTsKICAgICAgICAgY2VsbCA9IG5vcm1hbENlbGw7CiAgICAgfQotICAgIHNldFVw
QnV0dG9uQ2VsbChjZWxsLCBwYXJ0LCBzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOyAg
ICAKKyAgICBzZXRVcEJ1dHRvbkNlbGwoY2VsbCwgcGFydCwgY29udHJvbFN0YXRlcywgem9vbWVk
UmVjdCwgem9vbUZhY3Rvcik7CiAgICAgcmV0dXJuIGNlbGw7CiB9CiAKLXN0YXRpYyB2b2lkIHBh
aW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21G
YWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcpCitzdGF0aWMgdm9pZCBwYWludEJ1dHRvbihD
b250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzLCBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0
b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCiAgICAgCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG5lZWRl
ZCBmb3IgdGhlIGNvbnRyb2wgYW5kIHByZXBhcmUgdGhlIGNlbGwgZm9yIHBhaW50aW5nLgotICAg
IE5TQnV0dG9uQ2VsbCAqYnV0dG9uQ2VsbCA9IGJ1dHRvbihwYXJ0LCBzdGF0ZXMsIHpvb21lZFJl
Y3QsIHpvb21GYWN0b3IpOworICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZXMgPSBjb250
cm9sU3RhdGVzLT5zdGF0ZXMoKTsKKyAgICBOU0J1dHRvbkNlbGwgKmJ1dHRvbkNlbGwgPSBidXR0
b24ocGFydCwgY29udHJvbFN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKIAogICAgIE5TQ29u
dHJvbFNpemUgY29udHJvbFNpemUgPSBbYnV0dG9uQ2VsbCBjb250cm9sU2l6ZV07CkBAIC00OTQs
MTggKzU2NCwxOCBAQCBzdGF0aWMgdm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFydCBwYXJ0LCBD
b250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KgogICAgIH0gCiAKICAgICBMb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwotICAgIE5TVmll
dyAqdmlldyA9IFRoZW1lTWFjOjplbnN1cmVkVmlldyhzY3JvbGxWaWV3LCBzdGF0ZXMpOworICAg
IE5TVmlldyAqdmlldyA9IFRoZW1lTWFjOjplbnN1cmVkVmlldyhzY3JvbGxWaWV3LCBjb250cm9s
U3RhdGVzKTsKICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3ZpZXcgd2luZG93XTsKICAgICBOU0J1
dHRvbkNlbGwgKnByZXZpb3VzRGVmYXVsdEJ1dHRvbkNlbGwgPSBbd2luZG93IGRlZmF1bHRCdXR0
b25DZWxsXTsKIAotICAgIGlmIChzdGF0ZXMgJiBEZWZhdWx0U3RhdGUpIHsKKyAgICBpZiAoc3Rh
dGVzICYgQ29udHJvbFN0YXRlczo6RGVmYXVsdFN0YXRlKSB7CiAgICAgICAgIFt3aW5kb3cgc2V0
RGVmYXVsdEJ1dHRvbkNlbGw6YnV0dG9uQ2VsbF07CiAgICAgICAgIHdrQWR2YW5jZURlZmF1bHRC
dXR0b25QdWxzZUFuaW1hdGlvbihidXR0b25DZWxsKTsKICAgICB9IGVsc2UgaWYgKFtwcmV2aW91
c0RlZmF1bHRCdXR0b25DZWxsIGlzRXF1YWw6YnV0dG9uQ2VsbF0pCiAgICAgICAgIFt3aW5kb3cg
c2V0RGVmYXVsdEJ1dHRvbkNlbGw6bmlsXTsKIAogICAgIFtidXR0b25DZWxsIGRyYXdXaXRoRnJh
bWU6TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5WaWV3OnZpZXddOwotICAgIGlmIChzdGF0ZXMgJiBG
b2N1c1N0YXRlKQorICAgIGlmIChzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpGb2N1c1N0YXRlKQog
ICAgICAgICBbYnV0dG9uQ2VsbCBfd2ViX2RyYXdGb2N1c1JpbmdXaXRoRnJhbWU6TlNSZWN0KGlu
ZmxhdGVkUmVjdCkgaW5WaWV3OnZpZXddOwogICAgIFtidXR0b25DZWxsIHNldENvbnRyb2xWaWV3
Om5pbF07CiAKQEAgLTUzNSw3ICs2MDUsNyBAQCBzdGF0aWMgTlNDb250cm9sU2l6ZSBzdGVwcGVy
Q29udHJvbFNpemVGb3JGb250KGNvbnN0IEZvbnQmIGZvbnQpCiAgICAgcmV0dXJuIE5TTWluaUNv
bnRyb2xTaXplOwogfQogCi1zdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0YXRlcyBz
dGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVj
dCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyopCitzdGF0aWMgdm9pZCBwYWludFN0ZXBw
ZXIoQ29udHJvbFN0YXRlcyogc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqKQogewog
ICAgIC8vIFdlIGRvbid0IHVzZSBOU1N0ZXBwZXJDZWxsIGJlY2F1c2UgdGhlcmUgYXJlIG5vIHdh
eXMgdG8gZHJhdyBhbgogICAgIC8vIE5TU3RlcHBlckNlbGwgd2l0aCB0aGUgdXAgYnV0dG9uIGhp
Z2hsaWdodGVkLgpAQCAtNTc3LDcgKzY0Nyw3IEBAIHN0YXRpYyB2b2lkIHBhaW50U3RlcHBlcihD
b250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJCiAK
IC8vIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB3ZSBhbHdheXMgcmV0dXJuIGEgdmFsaWQgTlNWaWV3
LCBldmVuIGlmIFNjcm9sbFZpZXcgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZG9jdW1lbnQg
TlNWaWV3LgogLy8gSWYgdGhlIFNjcm9sbFZpZXcgZG9lc24ndCBoYXZlIGFuIE5TVmlldywgd2Ug
d2lsbCByZXR1cm4gYSBmYWtlIE5TVmlldyBzZXQgdXAgaW4gdGhlIHdheSBBcHBLaXQgZXhwZWN0
cy4KLU5TVmlldyAqVGhlbWVNYWM6OmVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcs
IENvbnRyb2xTdGF0ZXMgc3RhdGVzKQorTlNWaWV3ICpUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoU2Ny
b2xsVmlldyogc2Nyb2xsVmlldywgY29uc3QgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcykK
IHsKICAgICBpZiAoTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBzY3JvbGxWaWV3LT5kb2N1bWVudFZp
ZXcoKSkKICAgICAgICAgcmV0dXJuIGRvY3VtZW50VmlldzsKQEAgLTU4Niw3ICs2NTYsNyBAQCBO
U1ZpZXcgKlRoZW1lTWFjOjplbnN1cmVkVmlldyhTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBDb250
cm9sU3RhdGVzIHN0YXRlcykKICAgICBzdGF0aWMgV2ViQ29yZVRoZW1lVmlldyAqdGhlbWVWaWV3
ID0gW1tXZWJDb3JlVGhlbWVWaWV3IGFsbG9jXSBpbml0XTsKICAgICBbdGhlbWVWaWV3IHNldEZy
YW1lU2l6ZTpOU1NpemVGcm9tQ0dTaXplKHNjcm9sbFZpZXctPnRvdGFsQ29udGVudHNTaXplKCkp
XTsKIAotICAgIHRoZW1lV2luZG93SGFzS2V5QXBwZWFyYW5jZSA9ICEoc3RhdGVzICYgV2luZG93
SW5hY3RpdmVTdGF0ZSk7CisgICAgdGhlbWVXaW5kb3dIYXNLZXlBcHBlYXJhbmNlID0gIShjb250
cm9sU3RhdGVzLT5zdGF0ZXMoKSAmIENvbnRyb2xTdGF0ZXM6OldpbmRvd0luYWN0aXZlU3RhdGUp
OwogCiAgICAgcmV0dXJuIHRoZW1lVmlldzsKIH0KQEAgLTY4OSwxNCArNzU5LDE0IEBAIExlbmd0
aEJveCBUaGVtZU1hYzo6Y29udHJvbFBhZGRpbmcoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9u
dCYgZm9udCwgY29uc3QgTGVuCiAgICAgfQogfQogCi12b2lkIFRoZW1lTWFjOjppbmZsYXRlQ29u
dHJvbFBhaW50UmVjdChDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywgSW50
UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKK3ZvaWQgVGhlbWVNYWM6
OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xT
dGF0ZXMqIHN0YXRlcywgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikgY29u
c3QKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBzd2l0Y2ggKHBhcnQp
IHsKICAgICAgICAgY2FzZSBDaGVja2JveFBhcnQ6IHsKICAgICAgICAgICAgIC8vIFdlIGluZmxh
dGUgdGhlIHJlY3QgYXMgbmVlZGVkIHRvIGFjY291bnQgZm9yIHBhZGRpbmcgaW5jbHVkZWQgaW4g
dGhlIGNlbGwgdG8gYWNjb21tb2RhdGUgdGhlIGNoZWNrYm94CiAgICAgICAgICAgICAvLyBzaGFk
b3ciIGFuZCB0aGUgY2hlY2suICBXZSBkb24ndCBjb25zaWRlciB0aGlzIHBhcnQgb2YgdGhlIGJv
dW5kcyBvZiB0aGUgY29udHJvbCBpbiBXZWJLaXQuCi0gICAgICAgICAgICBOU0NlbGwgKmNlbGwg
PSBjaGVja2JveChzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOworICAgICAgICAgICAg
TlNDZWxsICpjZWxsID0gc2hhcmVkQ2hlY2tib3hDZWxsKHN0YXRlcywgem9vbWVkUmVjdCwgem9v
bUZhY3Rvcik7CiAgICAgICAgICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplID0gW2NlbGwg
Y29udHJvbFNpemVdOwogICAgICAgICAgICAgSW50U2l6ZSB6b29tZWRTaXplID0gY2hlY2tib3hT
aXplcygpW2NvbnRyb2xTaXplXTsKICAgICAgICAgICAgIHpvb21lZFNpemUuc2V0SGVpZ2h0KHpv
b21lZFNpemUuaGVpZ2h0KCkgKiB6b29tRmFjdG9yKTsKQEAgLTc0NSw3ICs4MTUsNyBAQCB2b2lk
IFRoZW1lTWFjOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCBwYXJ0LCBDb250
cm9sU3RhdGVzIHN0YXRlcywgSQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAot
dm9pZCBUaGVtZU1hYzo6cGFpbnQoQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyBzdGF0
ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwg
ZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldykgY29uc3QKK3ZvaWQgVGhl
bWVNYWM6OnBhaW50KENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6
b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KQogewogICAgIHN3aXRjaCAocGFydCkg
ewogICAgICAgICBjYXNlIENoZWNrYm94UGFydDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKaW5kZXggNWI3YmNhNWI2NDMyMzZlMDM1YWU1NDI4MTNhOGViOTg1ZThlOTFkZC4u
NzAxMTY2MDAyNmNjNzc4NmQ0OTJjZTU2NTFlNWNlN2Q3Yjc0Mjg0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTEwMiw2ICsxMDIsNyBAQCBSZW5kZXJCb3g6OlJl
bmRlckJveChFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5z
aWduZWQgYmFzZQogICAgICwgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoLTEpCiAgICAgLCBt
X21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKICAgICAsIG1faW5saW5lQm94V3JhcHBlcigw
KQorICAgICwgbV9yZXBhaW50VGltZXIodGhpcywgJlJlbmRlckJveDo6cmVwYWludFRpbWVyRmly
ZWQpCiB7CiAgICAgc2V0SXNCb3goKTsKIH0KQEAgLTExMSwxMiArMTEyLDE2IEBAIFJlbmRlckJv
eDo6UmVuZGVyQm94KERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUsIHVuc2lnbmVkIGJhCiAgICAgLCBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKICAg
ICAsIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKC0xKQogICAgICwgbV9pbmxpbmVCb3hXcmFw
cGVyKDApCisgICAgLCBtX3JlcGFpbnRUaW1lcih0aGlzLCAmUmVuZGVyQm94OjpyZXBhaW50VGlt
ZXJGaXJlZCkKIHsKICAgICBzZXRJc0JveCgpOwogfQogCiBSZW5kZXJCb3g6On5SZW5kZXJCb3go
KQogeworICAgIG1fcmVwYWludFRpbWVyLnN0b3AoKTsKKyAgICBpZiAoaGFzQ29udHJvbFN0YXRl
c0ZvclJlbmRlcmVyKHRoaXMpKQorICAgICAgICByZW1vdmVDb250cm9sU3RhdGVzRm9yUmVuZGVy
ZXIodGhpcyk7CiB9CiAKIFJlbmRlclJlZ2lvbiogUmVuZGVyQm94OjpjbGFtcFRvU3RhcnRBbmRF
bmRSZWdpb25zKFJlbmRlclJlZ2lvbiogcmVnaW9uKSBjb25zdApAQCAtMTIyMSw3ICsxMjI2LDIy
IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpCiAgICAgLy8gSWYgd2UgaGF2ZSBhIG5hdGl2ZSB0
aGVtZSBhcHBlYXJhbmNlLCBwYWludCB0aGF0IGJlZm9yZSBwYWludGluZyBvdXIgYmFja2dyb3Vu
ZC4KICAgICAvLyBUaGUgdGhlbWUgd2lsbCB0ZWxsIHVzIHdoZXRoZXIgb3Igbm90IHdlIHNob3Vs
ZCBhbHNvIHBhaW50IHRoZSBDU1MgYmFja2dyb3VuZC4KICAgICBJbnRSZWN0IHNuYXBwZWRQYWlu
dFJlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChwYWludFJlY3QpKTsKLSAgICBib29sIHRoZW1lUGFp
bnRlZCA9IHN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYmICF0aGVtZSgpLnBhaW50KHRoaXMsIHBh
aW50SW5mbywgc25hcHBlZFBhaW50UmVjdCk7CisKKyAgICBDb250cm9sU3RhdGVzKiBjb250cm9s
U3RhdGVzID0gbnVsbHB0cjsKKyAgICBpZiAoc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpIHsKKyAg
ICAgICAgaWYgKGhhc0NvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcih0aGlzKSkKKyAgICAgICAgICAg
IGNvbnRyb2xTdGF0ZXMgPSBjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIodGhpcyk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgY29udHJvbFN0YXRlcyA9IG5ldyBDb250cm9sU3RhdGVzKCk7
CisgICAgICAgICAgICBhZGRDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIodGhpcywgY29udHJvbFN0
YXRlcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIHRoZW1lUGFpbnRlZCA9IHN0eWxl
KCkuaGFzQXBwZWFyYW5jZSgpICYmICF0aGVtZSgpLnBhaW50KHRoaXMsIGNvbnRyb2xTdGF0ZXMs
IHBhaW50SW5mbywgc25hcHBlZFBhaW50UmVjdCk7CisKKyAgICBpZiAoY29udHJvbFN0YXRlcyAm
JiBjb250cm9sU3RhdGVzLT5uZWVkc1JlcGFpbnQoKSkKKyAgICAgICAgbV9yZXBhaW50VGltZXIu
c3RhcnRPbmVTaG90KDApOworCiAgICAgaWYgKCF0aGVtZVBhaW50ZWQpIHsKICAgICAgICAgaWYg
KGJsZWVkQXZvaWRhbmNlID09IEJhY2tncm91bmRCbGVlZEJhY2tncm91bmRPdmVyQm9yZGVyKQog
ICAgICAgICAgICAgcGFpbnRCb3JkZXIocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIGJs
ZWVkQXZvaWRhbmNlKTsKQEAgLTQ3MjksNCArNDc0OSwxMCBAQCBMYXlvdXRVbml0IFJlbmRlckJv
eDo6b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNv
bnRhaW5lckJsb2NrLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBsb2dpY2Fs
VG9wKCk7CiB9CiAKK3ZvaWQgUmVuZGVyQm94OjpyZXBhaW50VGltZXJGaXJlZChUaW1lcjxSZW5k
ZXJCb3g+JikKK3sKKyAgICBpZiAoIWRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSkKKyAgICAgICAg
dGhpcy0+cmVwYWludCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggZjkyMGM1YzAzMWYyMTc2OTY5OTYzNWMzNTBmOGE2
ODdkNDgxOTUyMS4uMGFmMjU2ZGQ1MDA1MTkwNjBiN2QzMGU1YTY3MmUxMDZlZWU5OTNhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNzIxLDggKzcyMSwxMiBAQCBwcm90
ZWN0ZWQ6CiAgICAgUmVmUHRyPFJlbmRlck92ZXJmbG93PiBtX292ZXJmbG93OwogCiBwcml2YXRl
OgorICAgIHZvaWQgcmVwYWludFRpbWVyRmlyZWQoVGltZXI8UmVuZGVyQm94PiYpOworCiAgICAg
Ly8gVXNlZCB0byBzdG9yZSBzdGF0ZSBiZXR3ZWVuIHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVE
aWRDaGFuZ2UKICAgICBzdGF0aWMgYm9vbCBzX2hhZE92ZXJmbG93Q2xpcDsKKworICAgIFRpbWVy
PFJlbmRlckJveD4gbV9yZXBhaW50VGltZXI7CiB9OwogCiBSRU5ERVJfT0JKRUNUX1RZUEVfQ0FT
VFMoUmVuZGVyQm94LCBpc0JveCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCmluZGV4IDNmY2E1YTc1ZWM2MGI4MmU0Yjc4MjIzN2VhOWQwZmI1YTdkOTM1OTQu
LmRjMmFjYjFmOGU4OWY1NGZmM2NhNGRiMTllYjBlODBhMmEyMGNmMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkNvbnRlbnREYXRhLmgiCisjaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5oIgogI2lu
Y2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgpAQCAtNjYsNyArNjcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29s
IFJlbmRlckVsZW1lbnQ6OnNfYWZmZWN0c1BhcmVudEJsb2NrID0gZmFsc2U7CiBib29sIFJlbmRl
ckVsZW1lbnQ6OnNfbm9Mb25nZXJBZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsKLQorICAgIAor
c3RhdGljIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgQ29udHJvbFN0YXRlcyo+JiBjb250
cm9sU3RhdGVzUmVuZGVyZXJNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
TWFwPGNvbnN0IFJlbmRlck9iamVjdCosIENvbnRyb2xTdGF0ZXMqPj4gbWFwOworICAgIHJldHVy
biBtYXA7Cit9CisgICAgCiBSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdz
KQogICAgIDogUmVuZGVyT2JqZWN0KGVsZW1lbnQpCiAgICAgLCBtX2Jhc2VUeXBlRmxhZ3MoYmFz
ZVR5cGVGbGFncykKQEAgLTEzMzgsNCArMTM0NSwyOCBAQCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQq
IFJlbmRlckVsZW1lbnQ6OnJlbmRlck5hbWVkRmxvd1RocmVhZFdyYXBwZXIoKQogICAgIHJldHVy
biByZW5kZXJlciAmJiByZW5kZXJlci0+aXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSA/IHRvUmVu
ZGVyTmFtZWRGbG93VGhyZWFkKHJlbmRlcmVyKSA6IG51bGxwdHI7CiB9CiAKK2Jvb2wgUmVuZGVy
RWxlbWVudDo6aGFzQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCog
bykKK3sKKyAgICByZXR1cm4gY29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkuY29udGFpbnMobyk7
Cit9CisKK0NvbnRyb2xTdGF0ZXMqIFJlbmRlckVsZW1lbnQ6OmNvbnRyb2xTdGF0ZXNGb3JSZW5k
ZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8pCit7CisgICAgcmV0dXJuIGNvbnRyb2xTdGF0ZXNS
ZW5kZXJlck1hcCgpLmdldChvKTsKK30KKwordm9pZCBSZW5kZXJFbGVtZW50OjpyZW1vdmVDb250
cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvKQoreworICAgIENvbnRy
b2xTdGF0ZXMqIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLmdldChvKTsKKyAg
ICBpZiAoc3RhdGVzKSB7CisgICAgICAgIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLnJlbW92
ZShvKTsKKyAgICAgICAgZGVsZXRlIHN0YXRlczsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyRWxl
bWVudDo6YWRkQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbywg
Q29udHJvbFN0YXRlcyogc3RhdGVzKQoreworICAgIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgp
LmFkZChvLCBzdGF0ZXMpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaAppbmRleCAwMjIzMDYwNmRiNGI3OTViMjI1MWRjMjVjYTI1OWUyM2EzOWNlMWY5Li5l
NjRiNzFlNTE3MjA0Njk2YzhjZDM1NGVlMjhkNzk4NDM1MTYwMmFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBDb250cm9sU3RhdGVzOworCiBjbGFzcyBSZW5kZXJFbGVtZW50
IDogcHVibGljIFJlbmRlck9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyRWxl
bWVudCgpOwpAQCAtMTgyLDYgKzE4NCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRSZW5k
ZXJJbmxpbmVBbHdheXNDcmVhdGVzTGluZUJveGVzKGJvb2wgYikgeyBtX3JlbmRlcklubGluZUFs
d2F5c0NyZWF0ZXNMaW5lQm94ZXMgPSBiOyB9CiAgICAgYm9vbCByZW5kZXJJbmxpbmVBbHdheXND
cmVhdGVzTGluZUJveGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJJbmxpbmVBbHdheXNDcmVh
dGVzTGluZUJveGVzOyB9CiAKKyAgICBzdGF0aWMgYm9vbCBoYXNDb250cm9sU3RhdGVzRm9yUmVu
ZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7CisgICAgc3RhdGljIENvbnRyb2xTdGF0ZXMqIGNv
bnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0aWMg
dm9pZCByZW1vdmVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7
CisgICAgc3RhdGljIHZvaWQgYWRkQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRl
ck9iamVjdCosIENvbnRyb2xTdGF0ZXMqKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIG5vZGUoKSBj
b25zdCA9IGRlbGV0ZTsKICAgICB2b2lkIG5vblBzZXVkb05vZGUoKSBjb25zdCA9IGRlbGV0ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDU4ZWYzN2FlYzU3
ZGIwNzcxZWQ1ZGE1MmUyOWVjY2U4NDJlOTc4MjMuLmQwMjdlMDM0NDk0OGUxZmRlYzY3ZDNiZTg2
MDU4ODYxODc1MWNhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNw
cApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAKICNpbmNsdWRl
ICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKICNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCkBAIC0yNjIsNyArMjYzLDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUo
U3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgIH0K
IH0KIAotYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWU6OnBh
aW50KFJlbmRlck9iamVjdCogbywgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcywgY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgLy8gSWYgcGFp
bnRpbmcgaXMgZGlzYWJsZWQsIGJ1dCB3ZSBhcmVuJ3QgdXBkYXRpbmcgY29udHJvbCB0aW50cywg
dGhlbiBqdXN0IGJhaWwuCiAgICAgLy8gSWYgd2UgYXJlIHVwZGF0aW5nIGNvbnRyb2wgdGludHMs
IGp1c3Qgc2NoZWR1bGUgYSByZXBhaW50IGlmIHRoZSB0aGVtZSBzdXBwb3J0cyB0aW50aW5nCkBA
IC0yODYsNyArMjg3LDggQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmUKICAgICBjYXNlIERlZmF1
bHRCdXR0b25QYXJ0OgogICAgIGNhc2UgQnV0dG9uUGFydDoKICAgICBjYXNlIElubmVyU3BpbkJ1
dHRvblBhcnQ6Ci0gICAgICAgIG1fdGhlbWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXNGb3JS
ZW5kZXJlcihvKSwgY29uc3RfY2FzdDxHcmFwaGljc0NvbnRleHQqPihwYWludEluZm8uY29udGV4
dCksIHIsIG8tPnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmby0+dmlldygpLmZyYW1lVmlldygp
KTsKKyAgICAgICAgdXBkYXRlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG8sIGNvbnRyb2xTdGF0
ZXMpOworICAgICAgICBtX3RoZW1lLT5wYWludChwYXJ0LCBjb250cm9sU3RhdGVzLCBjb25zdF9j
YXN0PEdyYXBoaWNzQ29udGV4dCo+KHBhaW50SW5mby5jb250ZXh0KSwgciwgby0+c3R5bGUoKS5l
ZmZlY3RpdmVab29tKCksICZvLT52aWV3KCkuZnJhbWVWaWV3KCkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC03MTMsNyArNzE1LDggQEAg
Ym9vbCBSZW5kZXJUaGVtZTo6aXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZSwgY29uc3QgQm9yZGVyRGF0YSYgYm8KIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFJlcGFpbnRS
ZWN0KGNvbnN0IFJlbmRlck9iamVjdCogbywgSW50UmVjdCYgcikKIHsKICNpZiBVU0UoTkVXX1RI
RU1FKQotICAgIG1fdGhlbWUtPmluZmxhdGVDb250cm9sUGFpbnRSZWN0KG8tPnN0eWxlKCkuYXBw
ZWFyYW5jZSgpLCBjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobyksIHIsIG8tPnN0eWxlKCkuZWZm
ZWN0aXZlWm9vbSgpKTsKKyAgICBDb250cm9sU3RhdGVzIHN0YXRlcyhleHRyYWN0Q29udHJvbFN0
YXRlc0ZvclJlbmRlcmVyKG8pKTsKKyAgICBtX3RoZW1lLT5pbmZsYXRlQ29udHJvbFBhaW50UmVj
dChvLT5zdHlsZSgpLmFwcGVhcmFuY2UoKSwgJnN0YXRlcywgciwgby0+c3R5bGUoKS5lZmZlY3Rp
dmVab29tKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obyk7CiAgICAgVU5VU0VEX1BBUkFN
KHIpOwpAQCAtNzI1LDE0ICs3MjgsMTQgQEAgYm9vbCBSZW5kZXJUaGVtZTo6c3VwcG9ydHNGb2N1
c1JpbmcoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogICAgIHJldHVybiAoc3R5bGUt
Pmhhc0FwcGVhcmFuY2UoKSAmJiBzdHlsZS0+YXBwZWFyYW5jZSgpICE9IFRleHRGaWVsZFBhcnQg
JiYgc3R5bGUtPmFwcGVhcmFuY2UoKSAhPSBUZXh0QXJlYVBhcnQgJiYgc3R5bGUtPmFwcGVhcmFu
Y2UoKSAhPSBNZW51bGlzdEJ1dHRvblBhcnQgJiYgc3R5bGUtPmFwcGVhcmFuY2UoKSAhPSBMaXN0
Ym94UGFydCk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdlZChSZW5kZXJPYmpl
Y3QqIG8sIENvbnRyb2xTdGF0ZSBzdGF0ZSkgY29uc3QKK2Jvb2wgUmVuZGVyVGhlbWU6OnN0YXRl
Q2hhbmdlZChSZW5kZXJPYmplY3QqIG8sIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZSkgY29u
c3QKIHsKICAgICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhlIGNvbnRyb2xz
IGRvbid0IHJlc3BvbmQgdG8gY2hhbmdlcyBpbiA6aG92ZXIgc3RhdGUKLSAgICBpZiAoc3RhdGUg
PT0gSG92ZXJTdGF0ZSAmJiAhc3VwcG9ydHNIb3Zlcigmby0+c3R5bGUoKSkpCisgICAgaWYgKHN0
YXRlID09IENvbnRyb2xTdGF0ZXM6OkhvdmVyU3RhdGUgJiYgIXN1cHBvcnRzSG92ZXIoJm8tPnN0
eWxlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBBc3N1bWUgcHJlc3NlZCBz
dGF0ZSBpcyBvbmx5IHJlc3BvbmRlZCB0byBpZiB0aGUgY29udHJvbCBpcyBlbmFibGVkLgotICAg
IGlmIChzdGF0ZSA9PSBQcmVzc2VkU3RhdGUgJiYgIWlzRW5hYmxlZChvKSkKKyAgICBpZiAoc3Rh
dGUgPT0gQ29udHJvbFN0YXRlczo6UHJlc3NlZFN0YXRlICYmICFpc0VuYWJsZWQobykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFJlcGFpbnQgdGhlIGNvbnRyb2wuCkBAIC03NDAs
MzQgKzc0Myw0MCBAQCBib29sIFJlbmRlclRoZW1lOjpzdGF0ZUNoYW5nZWQoUmVuZGVyT2JqZWN0
KiBvLCBDb250cm9sU3RhdGUgc3RhdGUpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNv
bnRyb2xTdGF0ZXMgUmVuZGVyVGhlbWU6OmNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBS
ZW5kZXJPYmplY3QqIG8pIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lOjp1cGRhdGVDb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvLCBDb250cm9sU3RhdGVzKiBjb250
cm9sU3RhdGVzKSBjb25zdAogewotICAgIENvbnRyb2xTdGF0ZXMgcmVzdWx0ID0gMDsKKyAgICBD
b250cm9sU3RhdGVzIG5ld1N0YXRlcyA9IGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIo
byk7CisgICAgY29udHJvbFN0YXRlcy0+c2V0U3RhdGVzKG5ld1N0YXRlcy5zdGF0ZXMoKSk7Cit9
CisKK0NvbnRyb2xTdGF0ZXM6OlN0YXRlcyBSZW5kZXJUaGVtZTo6ZXh0cmFjdENvbnRyb2xTdGF0
ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0Cit7CisgICAgQ29udHJv
bFN0YXRlczo6U3RhdGVzIHN0YXRlcyA9IDA7CiAgICAgaWYgKGlzSG92ZXJlZChvKSkgewotICAg
ICAgICByZXN1bHQgfD0gSG92ZXJTdGF0ZTsKKyAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0
ZXM6OkhvdmVyU3RhdGU7CiAgICAgICAgIGlmIChpc1NwaW5VcEJ1dHRvblBhcnRIb3ZlcmVkKG8p
KQotICAgICAgICAgICAgcmVzdWx0IHw9IFNwaW5VcFN0YXRlOworICAgICAgICAgICAgc3RhdGVz
IHw9IENvbnRyb2xTdGF0ZXM6OlNwaW5VcFN0YXRlOwogICAgIH0KICAgICBpZiAoaXNQcmVzc2Vk
KG8pKSB7Ci0gICAgICAgIHJlc3VsdCB8PSBQcmVzc2VkU3RhdGU7CisgICAgICAgIHN0YXRlcyB8
PSBDb250cm9sU3RhdGVzOjpQcmVzc2VkU3RhdGU7CiAgICAgICAgIGlmIChpc1NwaW5VcEJ1dHRv
blBhcnRQcmVzc2VkKG8pKQotICAgICAgICAgICAgcmVzdWx0IHw9IFNwaW5VcFN0YXRlOworICAg
ICAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OlNwaW5VcFN0YXRlOwogICAgIH0KICAg
ICBpZiAoaXNGb2N1c2VkKG8pICYmIG8tPnN0eWxlKCkub3V0bGluZVN0eWxlSXNBdXRvKCkpCi0g
ICAgICAgIHJlc3VsdCB8PSBGb2N1c1N0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0
YXRlczo6Rm9jdXNTdGF0ZTsKICAgICBpZiAoaXNFbmFibGVkKG8pKQotICAgICAgICByZXN1bHQg
fD0gRW5hYmxlZFN0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6RW5hYmxl
ZFN0YXRlOwogICAgIGlmIChpc0NoZWNrZWQobykpCi0gICAgICAgIHJlc3VsdCB8PSBDaGVja2Vk
U3RhdGU7CisgICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGU7CiAg
ICAgaWYgKGlzUmVhZE9ubHlDb250cm9sKG8pKQotICAgICAgICByZXN1bHQgfD0gUmVhZE9ubHlT
dGF0ZTsKKyAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OlJlYWRPbmx5U3RhdGU7CiAg
ICAgaWYgKGlzRGVmYXVsdChvKSkKLSAgICAgICAgcmVzdWx0IHw9IERlZmF1bHRTdGF0ZTsKKyAg
ICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OkRlZmF1bHRTdGF0ZTsKICAgICBpZiAoIWlz
QWN0aXZlKG8pKQotICAgICAgICByZXN1bHQgfD0gV2luZG93SW5hY3RpdmVTdGF0ZTsKKyAgICAg
ICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OldpbmRvd0luYWN0aXZlU3RhdGU7CiAgICAgaWYg
KGlzSW5kZXRlcm1pbmF0ZShvKSkKLSAgICAgICAgcmVzdWx0IHw9IEluZGV0ZXJtaW5hdGVTdGF0
ZTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6
SW5kZXRlcm1pbmF0ZVN0YXRlOworICAgIHJldHVybiBzdGF0ZXM7CiB9CiAKIGJvb2wgUmVuZGVy
VGhlbWU6OmlzQWN0aXZlKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKaW5kZXggNjg1NDYzNDY3Mzg5ODFjM2EzYWEyZGM0ZmJm
OTk3YTUxNzA2ZmRiOC4uOWJkODBlOThjMWEzYjQxNDA4Yzg3ZTMwNmFlNTBlYWQyZGVjYjM5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKQEAgLTIzLDYgKzIzLDcgQEAK
ICNpZm5kZWYgUmVuZGVyVGhlbWVfaAogI2RlZmluZSBSZW5kZXJUaGVtZV9oCiAKKyNpbmNsdWRl
ICJDb250cm9sU3RhdGVzLmgiCiAjaWYgVVNFKE5FV19USEVNRSkKICNpbmNsdWRlICJUaGVtZS5o
IgogI2Vsc2UKQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgbWV0aG9kIGlz
IGNhbGxlZCB0byBwYWludCB0aGUgd2lkZ2V0IGFzIGEgYmFja2dyb3VuZCBvZiB0aGUgUmVuZGVy
T2JqZWN0LiAgQSB3aWRnZXQncyBmb3JlZ3JvdW5kLCBlLmcuLCB0aGUKICAgICAvLyB0ZXh0IG9m
IGEgYnV0dG9uLCBpcyBhbHdheXMgcmVuZGVyZWQgYnkgdGhlIGVuZ2luZSBpdHNlbGYuICBUaGUg
Ym9vbGVhbiByZXR1cm4gdmFsdWUgaW5kaWNhdGVzCiAgICAgLy8gd2hldGhlciB0aGUgQ1NTIGJv
cmRlci9iYWNrZ3JvdW5kIHNob3VsZCBhbHNvIGJlIHBhaW50ZWQuCi0gICAgYm9vbCBwYWludChS
ZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgYm9v
bCBwYWludChSZW5kZXJPYmplY3QqLCBDb250cm9sU3RhdGVzKiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOwogICAgIGJvb2wgcGFpbnRCb3JkZXJPbmx5KFJlbmRlck9iamVjdCos
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICBib29sIHBhaW50RGVjb3Jh
dGlvbnMoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwog
CkBAIC0xMjYsNyArMTI3LDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2Fs
bGVkIHdoZW5ldmVyIGEgcmVsZXZhbnQgc3RhdGUgY2hhbmdlcyBvbiBhIHBhcnRpY3VsYXIgdGhl
bWVkIG9iamVjdCwgZS5nLiwgdGhlIG1vdXNlIGJlY29tZXMgcHJlc3NlZAogICAgIC8vIG9yIGEg
Y29udHJvbCBiZWNvbWVzIGRpc2FibGVkLgotICAgIHZpcnR1YWwgYm9vbCBzdGF0ZUNoYW5nZWQo
UmVuZGVyT2JqZWN0KiwgQ29udHJvbFN0YXRlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc3Rh
dGVDaGFuZ2VkKFJlbmRlck9iamVjdCosIENvbnRyb2xTdGF0ZXM6OlN0YXRlcykgY29uc3Q7CiAK
ICAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIHRoZW1lIGNoYW5nZXMg
b24gdGhlIHN5c3RlbSBpbiBvcmRlciB0byBmbHVzaCBjYWNoZWQgcmVzb3VyY2VzIGZyb20gdGhl
CiAgICAgLy8gb2xkIHRoZW1lLgpAQCAtMzY5LDggKzM3MCw4IEBAIHByb3RlY3RlZDoKICNlbmRp
ZgogCiBwdWJsaWM6Ci0gICAgLy8gTWV0aG9kcyBmb3Igc3RhdGUgcXVlcnlpbmcKLSAgICBDb250
cm9sU3RhdGVzIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8p
IGNvbnN0OworICAgIHZvaWQgdXBkYXRlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJl
bmRlck9iamVjdCosIENvbnRyb2xTdGF0ZXMqKSBjb25zdDsKKyAgICBDb250cm9sU3RhdGVzOjpT
dGF0ZXMgZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3Qq
KSBjb25zdDsKICAgICBib29sIGlzQWN0aXZlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0Owog
ICAgIGJvb2wgaXNDaGVja2VkKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIGJvb2wg
aXNJbmRldGVybWluYXRlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDA1NmU5ZDQ3NmY0ODQ0NDRhNWZl
MWQyMGIxMDU3ZDg0ZjdiMDY5YjkuLmFkNTNiNGNhM2Q3ZTcyMTAzYjIyOTMyZjQzNDliOWY0Nzhk
MzcwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAg
LTIxMiw3ICsyMTIsOCBAQCBSZW5kZXJUaGVtZU1hYzo6flJlbmRlclRoZW1lTWFjKCkKIAogTlNW
aWV3KiBSZW5kZXJUaGVtZU1hYzo6ZG9jdW1lbnRWaWV3Rm9yKFJlbmRlck9iamVjdCogbykgY29u
c3QKIHsKLSAgICByZXR1cm4gVGhlbWVNYWM6OmVuc3VyZWRWaWV3KCZvLT52aWV3KCkuZnJhbWVW
aWV3KCksIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvKSk7CisgICAgQ29udHJvbFN0YXRlcyBz
dGF0ZXMoZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvKSk7CisgICAgcmV0dXJuIFRo
ZW1lTWFjOjplbnN1cmVkVmlldygmby0+dmlldygpLmZyYW1lVmlldygpLCAmc3RhdGVzKTsKIH0K
IAogI2lmIEVOQUJMRShWSURFTykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228071</attachid>
            <date>2014-03-28 11:21:54 -0700</date>
            <delta_ts>2014-03-28 12:16:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130736-20140329052101.patch</filename>
            <type>text/plain</type>
            <size>56088</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE2N2E0Mzc0OGRiYThl
MmY5ODdkMzMwOWI2OGIzNWQyZmEzZTU0ZS4uM2I0MzFiMzNmMmU2ZDJmOTYzZWM2Mjg4M2FjYmNl
MTI0ZDcxYmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDE0LTAzLTI3ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGZvcm0gY29udHJv
bHMgdGhhdCBtYXkgbmVlZCBpbmNyZW1lbnRhbCByZWRyYXcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDczNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGFyZSBzb21lIGZvcm0gY29udHJvbHMg
dGhhdCBjaGFuZ2UgYXBwZWFyYW5jZQorICAgICAgICBvdmVyIHRpbWUuIEV4cGFuZCB0aGUgQ29u
dHJvbFN0YXRlcyBzbyB0aGF0IGl0IGNhbgorICAgICAgICBob2xkIGEgbGl0dGxlIG1vcmUgaW5m
b3JtYXRpb24sIGluY2x1ZGluZyBhIHJlZmVyZW5jZQorICAgICAgICB0byB0aGUgbmF0aXZlIGZv
cm0gY29udHJvbC4gVGhpcyB3YXkgdGhlIFRoZW1lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGNh
biByZXBhaW50IHRoZSBleGlzdGluZyBuYXRpdmUgY29udHJvbCBpZiBuZWNlc3NhcnkuIEF0Cisg
ICAgICAgIGxlYXN0IFRoZW1lTWFjIHdhcyByZXVzaW5nIGEgc2luZ2xlIGNvbnRyb2wgZm9yIHBh
aW50aW5nCisgICAgICAgIGFsbCBpbnN0YW5jZXMgYmVmb3JlIHRoaXMgY2hhbmdlLgorCisgICAg
ICAgIFNpbmNlIENvbnRyb2xTdGF0ZXMgaXMgbm93IGEgY2xhc3MsIHBhc3MgaXQgYXJvdW5kIGJ5
CisgICAgICAgIHJlZmVyZW5jZS4KKworICAgICAgICBUaGUgb3RoZXIgbWFqb3IgY2hhbmdlIGlz
IGtlZXBpbmcgYSB0aW1lciB0byB0cmlnZ2VyIGEKKyAgICAgICAgcmVwYWludCBpbiBSZW5kZXJC
b3gsIHdoaWNoIGhhcHBlbnMgaWYgVGhlbWUvUmVuZGVyVGhlbWUKKyAgICAgICAgdXBkYXRlIHRo
ZSBDb250cm9sU3RhdGUgdG8gcmVxdWVzdCBvbmUuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBDb250cm9sU3RhdGVzLmguCisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOiBEaXR0by4KKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBY3RpdmUpOiBTdGF0ZXMg
bm93IHdpdGhpbiBDb250cm9sU3RhdGVzLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0
SG92ZXJlZCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hh
bmdlZCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNhYmxlZFN0YXRl
Q2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6cmVhZE9ubHlBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNl
dENoZWNrZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNl
dEluZGV0ZXJtaW5hdGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaDogTmV3IGZpbGUu
IENvcGllZCB0aGUgb2xkIENvbnRyb2xTdGF0ZXMgZW51bSwKKyAgICAgICAgYW5kIGFkZGVkIGFj
Y2Vzc29ycyB0byBob2xkIHdoZXRoZXIgb3Igbm90IHRoZSBzdGF0ZSBpcyBkaXJ0eSwgYW5kCisg
ICAgICAgIGEgcmVmZXJlbmNlIHRvIGEgcGxhdGZvcm0gY29udHJvbCBpZiBuZWNlc3NhcnkuCisg
ICAgICAgICogcGxhdGZvcm0vVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpzZWxl
Y3Rpb25Db2xvcik6IFBhc3MgQ29udHJvbFN0YXRlcyBwb2ludGVyLgorICAgICAgICAoV2ViQ29y
ZTo6VGhlbWU6OnBhaW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6aW5mbGF0
ZUNvbnRyb2xQYWludFJlY3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZVR5cGVz
Lmg6IFJlbW92ZSBDb250cm9sU3RhdGVzIGVudW0uCisgICAgICAgICogcGxhdGZvcm0vZWZsL1Jl
bmRlclRoZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphcHBs
eUVkamVTdGF0ZUZyb21Gb3JtKTogUGFzcyBDb250cm9sU3RhdGVzIHBvaW50ZXIuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBhcnQpOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaDogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbToKKyAgICAgICAgKC1bV2ViQ29yZVRoZW1lVmlldyBhZGRTdWJ2aWV3Ol0pOiBOZXcg
bWV0aG9kIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBhZGQgQ0FMYXllciBiYWNrZWQKKyAgICAgICAg
dmlld3MgdG8gdGhlIE5TVmlldyB3ZSdyZSB1c2luZyBmb3IgcmVuZGVyaW5nLgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlU3RhdGVzKTogVXNlIHRoZSBwcml2YXRlIGFuaW1hdGVkIHNldHRlcnMg
aWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydENvbnRyb2xTdGF0ZXNUb1Ro
ZW1lRHJhd1N0YXRlKTogTmFtZXNwYWNpbmcuCisgICAgICAgIChXZWJDb3JlOjpjb25maWd1cmVD
aGVja2JveCk6IFBhc3MgQ29udHJvbFN0YXRlcyBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ2hlY2tib3hDZWxsKTogTmV3IGhlbHBlciBzaW5jZSB3ZSdyZSBjcmVhdGluZyBub24t
c3RhdGljIGNlbGxzLgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQ2hlY2tib3hDZWxsKTogVGhl
IG9sZCBzdGF0aWMgcHJvdmlkZXIsIHJlbmFtZWQuCisgICAgICAgIChXZWJDb3JlOjpwYWludENo
ZWNrYm94KTogQ2hlY2sgaWYgdGhpcyBwYWludCB3YXMgdHJpZ2dlcmVkIGJ5IGEgc3RhdGUgY2hh
bmdlCisgICAgICAgIG9yIGFuIGFuaW1hdGlvbi4gVXBkYXRlIHRoZSBDb250cm9sU3RhdGVzIGlm
IHdlIG5lZWQgdG8gYmUgcmVwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6cmFkaW8pOiBQYXJh
bWV0ZXIgaXMgbm93IENvbnRyb2xTdGF0ZXMqLgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRSYWRp
byk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2V0VXBCdXR0b25DZWxsKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpidXR0b24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBhaW50
QnV0dG9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjplbnN1cmVkVmlldyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6cGFpbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrYm94KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6UmVuZGVyQm94KTogSW5pdGlhbGl6ZSB0
aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6flJlbmRlckJveCk6IFN0b3AgYW55
IHBlbmRpbmcgdGltZXJzIGFuZCBkZWxldGUgdGhlIENvbnRyb2xTdGF0ZSBpZiBuZWNlc3Nhcnku
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOiBDcmVh
dGUgYSBDb250cm9sU3RhdGVzIGlmIG5lZWRlZC4gUGFpbnQsIGFuZCBzdGFydCB0aGUgcmVwYWlu
dAorICAgICAgICB0aW1lciBpZiB0aGUgQ29udHJvbFN0YXRlcyBzYXkgd2Ugc2hvdWxkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpyZXBhaW50VGltZXJGaXJlZCk6IENhbGwgcmVwYWlu
dCB3aGVuIHRoZSB0aW1lciBmaXJlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6
IEFkZCBhIHRpbWVyIGZvciByZXBhaW50aW5nLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCk6
IEEgc3RhdGljIEhhc2hNYXAgdGhhdCBhc3NvY2lhdGVzIHJlbmRlcmVycyB3aXRoIENvbnRyb2xT
dGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpoYXNDb250cm9sU3RhdGVz
Rm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Y29udHJvbFN0
YXRlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnJlbW92
ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50OjphZGRDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludCk6IFVzZSBhIHBvaW50ZXIgdG8gQ29u
dHJvbFN0YXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RSZXBhaW50
UmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdl
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnVwZGF0ZUNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcik6IE5ldyBtZXRob2QgdGhhdCBqdXN0IHVwZGF0ZXMgdGhlIHN0YXRl
cyBwYXJ0IG9mIENvbnRyb2xTdGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6
ZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6IE5ldyBtZXRob2QgdGhhdCBjYWxjdWxh
dGVzIHRoZSBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpjb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjpkb2N1bWVudFZpZXdGb3IpOiBVc2UgYSBDb250cm9sU3Rh
dGVzIHBvaW50ZXIuCisKIDIwMTQtMDMtMjcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCB1bm5lZWRlZCAibXV0YWJsZSIga2V5d29y
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggZjIxMmY3ODExMTA2ZTZiZjI5Nzc2ZTZlZTQzNTFhODhiYmZmM2E5Yy4uODc1YWU5NDk1NDc1
NzQyMjAwZGMyZTJjN2NjNGJmMDg4NGM3Mzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xOTA4NCw2ICsxOTA4NCw3IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDb250ZW50VHlwZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udGV4dE1lbnUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENvbnRleHRNZW51SXRlbS5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udHJvbFN0YXRlcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29va2llc1N0cmF0ZWd5LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDcm9zc1RocmVhZENvcGllci5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ3Vyc29yLmgiIC8+CkBAIC0yMTEz
MCw0ICsyMTEzMSw0IEBACiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+
CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXEJ1aWxkQ3VzdG9taXphdGlv
bnNcbWFzbS50YXJnZXRzIiAvPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA0NGY2NTBi
OWEyOWM2OWM3ZDdmN2MzZThiOTc3MTA2YmYwMGE2OWM4Li4wZWQzZTA4MDQwZjY2YWYyMWVhNGYx
Yjc5YTAxYjFiNjU1ZjZiMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03OTY5LDYgKzc5NjksOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udGV4dE1lbnVJdGVtLmgiPgog
ICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udHJvbFN0YXRlcy5oIj4KKyAgICAgIDxG
aWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENvb2tpZXNTdHJhdGVneS5oIj4KICAgICAgIDxGaWx0ZXI+
cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTE1MTQ3LDQgKzE1MTUwLDQg
QEAKICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cd2luPC9GaWx0ZXI+CiAgICAgPC9NQVNNPgogICA8
L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1By
b2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNTAzMjBiMmM5ZTgzNzQxZTY2M2U3NTIwZDhlMjZhN2MwYWQyNjdlMC4uNGI1
YjhhMGFiYWVkOWVlNzIxYTE2OTdkNDdiNGZhNTMwZDRiYTg1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODAzNCw2ICs4MDM0
LDcgQEAKIAkJMzEwNzhDQzQxODgwQTZBNjAwODA5OURDIC8qIE9FU1RleHR1cmVIYWxmRmxvYXRM
aW5lYXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE9FU1RleHR1cmVIYWxmRmxvYXRMaW5l
YXIuaWRsOyBwYXRoID0gY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA3OENDNTE4ODBBQUFBMDA4MDk5REMgLyogSlNP
RVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxMDc4Q0M2MTg4MEFBQUEwMDgwOTlEQyAvKiBKU09FU1RleHR1cmVI
YWxmRmxvYXRMaW5lYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPRVNU
ZXh0dXJlSGFsZkZsb2F0TGluZWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
MUMwOEJDMThFMzVENjgwMEI2NTYxNSAvKiBDb250cm9sU3RhdGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRyb2xTdGF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzEyODhFNkUwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lUnVs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NLZXlm
cmFtZVJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTI4OEU2RjBFMzAw
NUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU0tleWZyYW1lUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMTI4OEU3MDBFMzAwNUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJh
bWVzUnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODc4
LDYgKzIwODc5LDcgQEAKIAkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkzMTFDMDhCQzE4
RTM1RDY4MDBCNjU2MTUgLyogQ29udHJvbFN0YXRlcy5oICovLAogCQkJCTQ5RTkxMkE0MEVGQUM4
RTYwMDlEMENBRiAvKiBhbmltYXRpb24gKi8sCiAJCQkJRkQzMTYwNDAxMkIwMjZBMzAwQzFBMzU5
IC8qIGF1ZGlvICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCBhZTI2NTkyNDlhOGQ3NTIxOTM0MDc4Y2FlZTc3YTAwY2I1
NDZiYTcwLi44ODkwMGRmZmE1MDg2NzJlYzU3M2U3M2FhOGVjZjM5N2Y2YmZkMWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC00ODcsNyArNDg3LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRBY3Rp
dmUoYm9vbCBmbGFnLCBib29sIHBhdXNlKQogICAgIGlmIChyZWFjdHNUb1ByZXNzKQogICAgICAg
ICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKLSAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5o
YXNBcHBlYXJhbmNlKCkgJiYgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVy
ZXIoKSwgUHJlc3NlZFN0YXRlKSkKKyAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBl
YXJhbmNlKCkgJiYgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwg
Q29udHJvbFN0YXRlczo6UHJlc3NlZFN0YXRlKSkKICAgICAgICAgcmVhY3RzVG9QcmVzcyA9IHRy
dWU7CiAKICAgICAvLyBUaGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgYSBmZWF0
dXJlIHRoYXQgb25seSB3b3JrcyBpZiB0aGUKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIEVsZW1l
bnQ6OnNldEhvdmVyZWQoYm9vbCBmbGFnKQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7
CiAKICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAg
IHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUp
OworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBD
b250cm9sU3RhdGVzOjpIb3ZlclN0YXRlKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRv
Vmlldyhib29sIGFsaWduVG9Ub3ApIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcAppbmRleCA2MTAxZjY0YmQ2OGZjZTIyODAwYjQ2NzUzMWMyOTNiMmIxYzQxMjA4Li40
OWE4NzgzY2M5M2M4NmRjODg1MTI1MTFjZmYxNjdiMjRhNmY1MTRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTc0NSw3ICsxNzQ1LDcgQEAgdm9pZCBG
cmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKCkKICAgICAgICAgZWxl
bWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBpZiAocmVuZGVyZXIg
JiYgcmVuZGVyZXItPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJl
bmRlcmVyLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlciwgRm9jdXNTdGF0ZSk7CisgICAg
ICAgICAgICAgICAgcmVuZGVyZXItPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyLCBDb250
cm9sU3RhdGVzOjpGb2N1c1N0YXRlKTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDNiMjVjYjBkM2M4ZGRl
NWExMmMzNTY4YmRkZjY0ZmY2MWQ2ZGYxY2QuLjlhMTIxYzgyYWY2MzAwMDY4ODY5YjYyMzJmNjI3
ZGY4MzkwMDY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNvbnRyb2xTdGF0
ZXMuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTE1NCw3ICsxNTUsNyBAQCB2b2lkIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKICAgICBzZXROZWVkc1dpbGxWYWxp
ZGF0ZUNoZWNrKCk7CiAgICAgZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3RvckRpc2Fi
bGVkIHwgQWZmZWN0ZWRTZWxlY3RvckVuYWJsZWQpOwogICAgIGlmIChyZW5kZXJlcigpICYmIHJl
bmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOworICAgICAgICBy
ZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVz
OjpFbmFibGVkU3RhdGUpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRP
bmx5QXR0cmlidXRlQ2hhbmdlZCgpCkBAIC0xNjIsNyArMTYzLDcgQEAgdm9pZCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpyZWFkT25seUF0dHJpYnV0ZUNoYW5nZWQoKQogICAgIHNldE5lZWRzV2ls
bFZhbGlkYXRlQ2hlY2soKTsKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgaWYgKHJl
bmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAg
IHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFJlYWRPbmx5U3Rh
dGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigp
LCBDb250cm9sU3RhdGVzOjpSZWFkT25seVN0YXRlKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNThhOTQwY2Q2MTBlOTAyNTgxOTMwMmZlYjI4N2Uz
ZDI0ZTBkYjdhOC4uODA0MDY5Y2U0Mzc0ZmI2OWQwMzExNWQ1NWRlNzI2ODhmMDNkNTVhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC04NTksNyArODU5LDcg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVja2VkKGJvb2wgbm93Q2hlY2tlZCwgVGV4
dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEIKICAgICBpZiAoQ2hlY2tlZFJhZGlvQnV0dG9ucyog
YnV0dG9ucyA9IGNoZWNrZWRSYWRpb0J1dHRvbnMoKSkKICAgICAgICAgICAgIGJ1dHRvbnMtPnVw
ZGF0ZUNoZWNrZWRTdGF0ZSh0aGlzKTsKICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigp
LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5z
dGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIo
KS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6Q2hlY2tl
ZFN0YXRlKTsKICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKIAogICAgIC8vIElkZWFsbHkg
d2UnZCBkbyB0aGlzIGZyb20gdGhlIHJlbmRlciB0cmVlIChtYXRjaGluZwpAQCAtODkzLDcgKzg5
Myw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0ZShib29sIG5ld1Zh
bHVlKQogICAgIGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JJbmRldGVybWluYXRl
KTsKIAogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFy
YW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJl
cigpLCBDaGVja2VkU3RhdGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hh
bmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGUpOwogfQogCiBpbnQg
SFRNTElucHV0RWxlbWVudDo6c2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuY3BwCmluZGV4IDllMzZmYTljZjRkNjYxYWFmMGJjM2JkZGYzN2U5ZTUxMjRk
ZDNhODEuLjQ5ZjQ4YmYzODFlOWI0NTA0OTQ0ZmJhMDU0MDVhOTlkNDc5MzE2OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
dm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICAgICAgaWYgKG9sZERpc2FibGVkICE9IG1fZGlz
YWJsZWQpIHsKICAgICAgICAgICAgIGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JE
aXNhYmxlZCB8IEFmZmVjdGVkU2VsZWN0b3JFbmFibGVkKTsKICAgICAgICAgICAgIGlmIChyZW5k
ZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAg
ICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJs
ZWRTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5n
ZWQocmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAobmFtZSA9PSBzZWxlY3RlZEF0dHIpIHsKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgZG9lc24ndCBtYXRjaCB3aGF0IHRoZSBIVE1MIHNwZWNpZmljYXRpb24gc2F5cy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjllZTAzOGVh
NjAzMmZiMmZkN2E5MGViYjlhNmQ2ODdkM2JiNjg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udHJvbFN0YXRlcy5oCkBAIC0wLDAgKzEsMTEwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb250cm9s
U3RhdGVzX2gKKyNkZWZpbmUgQ29udHJvbFN0YXRlc19oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmbmRlZiBfX09CSkNfXwordHlwZWRlZiBzdHJ1Y3Qg
b2JqY19vYmplY3QgKmlkOworI2VuZGlmCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlw
ZWRlZiBpZCBQbGF0Zm9ybUNvbnRyb2xJbnN0YW5jZTsKKyNlbmRpZgorCitjbGFzcyBDb250cm9s
U3RhdGVzIHsKK3B1YmxpYzoKKyAgICBlbnVtIHsKKyAgICAgICAgSG92ZXJTdGF0ZSA9IDEsCisg
ICAgICAgIFByZXNzZWRTdGF0ZSA9IDEgPDwgMSwKKyAgICAgICAgRm9jdXNTdGF0ZSA9IDEgPDwg
MiwKKyAgICAgICAgRW5hYmxlZFN0YXRlID0gMSA8PCAzLAorICAgICAgICBDaGVja2VkU3RhdGUg
PSAxIDw8IDQsCisgICAgICAgIFJlYWRPbmx5U3RhdGUgPSAxIDw8IDUsCisgICAgICAgIERlZmF1
bHRTdGF0ZSA9IDEgPDwgNiwKKyAgICAgICAgV2luZG93SW5hY3RpdmVTdGF0ZSA9IDEgPDwgNywK
KyAgICAgICAgSW5kZXRlcm1pbmF0ZVN0YXRlID0gMSA8PCA4LAorICAgICAgICBTcGluVXBTdGF0
ZSA9IDEgPDwgOSwgLy8gU3ViLXN0YXRlIGZvciBIb3ZlclN0YXRlIGFuZCBQcmVzc2VkU3RhdGUu
CisgICAgICAgIEFsbFN0YXRlcyA9IDB4ZmZmZmZmZmYKKyAgICB9OworCisgICAgdHlwZWRlZiB1
bnNpZ25lZCBTdGF0ZXM7CisKKyAgICBDb250cm9sU3RhdGVzKFN0YXRlcyBzdGF0ZXMpCisgICAg
ICAgIDogbV9zdGF0ZXMoc3RhdGVzKQorICAgICAgICAsIG1faW5pdGlhbGl6ZWQoZmFsc2UpCisg
ICAgICAgICwgbV9uZWVkc1JlcGFpbnQoZmFsc2UpCisgICAgICAgICwgbV9pc0RpcnR5KGZhbHNl
KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICAsIG1fY29udHJvbEluc3RhbmNlKG51bGxw
dHIpCisjZW5kaWYKKyAgICB7CisgICAgfQorCisgICAgQ29udHJvbFN0YXRlcygpCisgICAgICAg
IDogQ29udHJvbFN0YXRlcygwKQorICAgIHsKKyAgICB9CisKKyAgICB+Q29udHJvbFN0YXRlcygp
CisgICAgeworICAgIH0KKworICAgIFN0YXRlcyBzdGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlczsgfQorICAgIHZvaWQgc2V0U3RhdGVzKFN0YXRlcyBuZXdTdGF0ZXMpCisgICAgeworICAg
ICAgICBpZiAobmV3U3RhdGVzID09IG1fc3RhdGVzKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX3N0YXRlcyA9IG5ld1N0YXRlczsKKyAgICAgICAgbV9pc0RpcnR5ID0gbV9pbml0aWFs
aXplZDsKKyAgICAgICAgbV9pbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisgICAgYm9vbCBu
ZWVkc1JlcGFpbnQoKSBjb25zdCB7IHJldHVybiBtX25lZWRzUmVwYWludDsgfQorICAgIHZvaWQg
c2V0TmVlZHNSZXBhaW50KGJvb2wgcikgeyBtX25lZWRzUmVwYWludCA9IHI7IH0KKworICAgIGJv
b2wgaXNEaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJ0eTsgfQorICAgIHZvaWQgc2V0RGly
dHkoYm9vbCBkKSB7IG1faXNEaXJ0eSA9IGQ7IH0KKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IFBsYXRmb3JtQ29udHJvbEluc3RhbmNlIHBsYXRmb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udHJvbEluc3RhbmNlLmdldCgpOyB9CisgICAgdm9pZCBzZXRQbGF0Zm9ybUNvbnRyb2wo
UGxhdGZvcm1Db250cm9sSW5zdGFuY2UgaW5zdGFuY2UpIHsgbV9jb250cm9sSW5zdGFuY2UgPSBp
bnN0YW5jZTsgfQorI2VuZGlmCisKK3ByaXZhdGU6CisgICAgU3RhdGVzIG1fc3RhdGVzOworICAg
IGJvb2wgbV9pbml0aWFsaXplZDsKKyAgICBib29sIG1fbmVlZHNSZXBhaW50OworICAgIGJvb2wg
bV9pc0RpcnR5OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxQbGF0Zm9ybUNv
bnRyb2xJbnN0YW5jZT4gbV9jb250cm9sSW5zdGFuY2U7CisjZW5kaWYKK307CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaAppbmRleCA1MDUwNDZjNGRlODdlYzZhZGViM2I4MThl
YWVjZDA5N2JiYWYwYzNlLi5mYjAxYTdhMWM1ZTQ4MTZhNmUwNDUwM2E2Mjc1MTMwMjZkMjRhOGM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgVGhl
bWVfaAogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJDb250cm9sU3RhdGVzLmgiCiAj
aW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMZW5ndGhC
b3guaCIKQEAgLTY1LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjb250cm9s
RHJhd3NGb2N1c091dGxpbmUoQ29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIC8vIE1ldGhvZHMgZm9yIG9idGFpbmluZyBwbGF0Zm9ybS1zcGVjaWZpYyBjb2xvcnMuCi0g
ICAgdmlydHVhbCBDb2xvciBzZWxlY3Rpb25Db2xvcihDb250cm9sUGFydCwgQ29udHJvbFN0YXRl
LCBTZWxlY3Rpb25QYXJ0KSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9CisgICAgdmlydHVhbCBD
b2xvciBzZWxlY3Rpb25Db2xvcihDb250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyosIFNl
bGVjdGlvblBhcnQpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KICAgICB2aXJ0dWFsIENvbG9y
IHRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KICAg
ICAKICAgICAvLyBDU1Mgc3lzdGVtIGNvbG9ycyBhbmQgZm9udHMKQEAgLTk3LDEzICs5OCwxMyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2Uo
Q29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBNZXRob2QgZm9y
IHBhaW50aW5nIGEgY29udHJvbC4gVGhlIHJlY3QgaXMgaW4gem9vbWVkIGNvb3JkaW5hdGVzLgot
ICAgIHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcywgR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgLyp6b29tZWRSZWN0Ki8sIGZsb2F0IC8qem9vbUZh
Y3RvciovLCBTY3JvbGxWaWV3KikgY29uc3QgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50KENv
bnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVj
dCYgLyp6b29tZWRSZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovLCBTY3JvbGxWaWV3KikgeyB9
CiAKICAgICAvLyBTb21lIGNvbnRyb2xzIG1heSBzcGlsbCBvdXQgb2YgdGhlaXIgY29udGFpbmVy
cyAoZS5nLiwgdGhlIGNoZWNrIG9uIGFuIE9TIFggY2hlY2tib3gpLiAgV2hlbiB0aGVzZSBjb250
cm9scyByZXBhaW50LAogICAgIC8vIHRoZSB0aGVtZSBuZWVkcyB0byBjb21tdW5pY2F0ZSB0aGlz
IGluZmxhdGVkIHJlY3QgdG8gdGhlIGVuZ2luZSBzbyB0aGF0IGl0IGNhbiBpbnZhbGlkYXRlIHRo
ZSB3aG9sZSBjb250cm9sLgogICAgIC8vIFRoZSByZWN0IHBhc3NlZCBpbiBpcyBpbiB6b29tZWQg
Y29vcmRpbmF0ZXMsIHNvIHRoZSBpbmZsYXRpb24gc2hvdWxkIHRha2UgdGhhdCBpbnRvIGFjY291
bnQgYW5kIG1ha2Ugc3VyZSB0aGUgaW5mbGF0aW9uCiAgICAgLy8gYW1vdW50IGlzIGFsc28gc2Nh
bGVkIGJ5IHRoZSB6b29tRmFjdG9yLgotICAgIHZpcnR1YWwgdm9pZCBpbmZsYXRlQ29udHJvbFBh
aW50UmVjdChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcywgSW50UmVjdCYgLyp6b29tZWRSZWN0
Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW5m
bGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqLCBJ
bnRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgfQog
ICAgIAogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNlLCBmcm9tIFJlbmRlclRoZW1l
OjphZGp1c3REZWZhdWx0U3R5bGVTaGVldCgpLCB0byBsZXQgZWFjaCBwbGF0Zm9ybSBhZGp1c3QK
ICAgICAvLyB0aGUgZGVmYXVsdCBDU1MgcnVsZXMgaW4gaHRtbC5jc3MuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9UaGVtZVR5cGVzLmgKaW5kZXggZDhhYjE4ZmZhYzliNTA0ZmY3ZjlhZjhhMDA0OTM5YTAw
MTE1NmNiMS4uOTczZTc3NDYwYmVjNjUyY2FjYTBkZWQzZjU2ZjhiZjk0YTU2N2M1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaApAQCAtMjgsMjIgKzI4LDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1lbnVtIENvbnRyb2xTdGF0ZSB7Ci0gICAgSG92ZXJTdGF0ZSA9IDEs
Ci0gICAgUHJlc3NlZFN0YXRlID0gMSA8PCAxLAotICAgIEZvY3VzU3RhdGUgPSAxIDw8IDIsCi0g
ICAgRW5hYmxlZFN0YXRlID0gMSA8PCAzLAotICAgIENoZWNrZWRTdGF0ZSA9IDEgPDwgNCwKLSAg
ICBSZWFkT25seVN0YXRlID0gMSA8PCA1LAotICAgIERlZmF1bHRTdGF0ZSA9IDEgPDwgNiwKLSAg
ICBXaW5kb3dJbmFjdGl2ZVN0YXRlID0gMSA8PCA3LAotICAgIEluZGV0ZXJtaW5hdGVTdGF0ZSA9
IDEgPDwgOCwKLSAgICBTcGluVXBTdGF0ZSA9IDEgPDwgOSwgLy8gU3ViLXN0YXRlIGZvciBIb3Zl
clN0YXRlIGFuZCBQcmVzc2VkU3RhdGUuCi0gICAgQWxsU3RhdGVzID0gMHhmZmZmZmZmZgotfTsK
LQotdHlwZWRlZiB1bnNpZ25lZCBDb250cm9sU3RhdGVzOwotCiAvLyBNdXN0IGZvbGxvdyBDU1NW
YWx1ZUtleXdvcmRzLmluIG9yZGVyCiBlbnVtIENvbnRyb2xQYXJ0IHsKICAgICBOb0NvbnRyb2xQ
YXJ0LCBDaGVja2JveFBhcnQsIFJhZGlvUGFydCwgUHVzaEJ1dHRvblBhcnQsIFNxdWFyZUJ1dHRv
blBhcnQsIEJ1dHRvblBhcnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvUmVuZGVyVGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRl
clRoZW1lRWZsLmNwcAppbmRleCBmODY0Nzg1OTE3NTIzNzRjYmRkYzA1NGYzNjhjMDE0ODI2Mzdk
M2ViLi5mOWQyMWM5OTZmOGYzZjMwNTQ2MDYzNjY1MTFhMDk5OGY5MDY0YjQ5IDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTI5Niw3ICsy
OTYsNyBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjpjbGVhclRoZW1lUGFydENhY2hlKCkKIAogfQog
Ci12b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0
KiBvYmplY3QsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBib29sIGhhdmVCYWNrZ3JvdW5kKQordm9p
ZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlFZGplU3RhdGVGcm9tRm9ybShFdmFzX09iamVjdCogb2Jq
ZWN0LCBjb25zdCBDb250cm9sU3RhdGVzKiBzdGF0ZXMsIGJvb2wgaGF2ZUJhY2tncm91bmQpCiB7
CiAgICAgY29uc3QgY2hhciAqc2lnbmFsc1tdID0geyAvLyBrZWVwIGluIHN5bmMgd2l0aCBXZWJD
b3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAogICAgICAgICAiaG92ZXJlZCIsCkBAIC0zMTQsNyAr
MzE0LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlFZGplU3RhdGVGcm9tRm9ybShFdmFz
X09iamVjdCogb2JqZWN0LCBDb250cm9sU3RhdGVzIHMKICAgICBlZGplX29iamVjdF9zaWduYWxf
ZW1pdChvYmplY3QsICJyZXNldCIsICIiKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
V1RGX0FSUkFZX0xFTkdUSChzaWduYWxzKTsgKytpKSB7Ci0gICAgICAgIGlmIChzdGF0ZXMgJiAo
MSA8PCBpKSkKKyAgICAgICAgaWYgKHN0YXRlcy0+c3RhdGVzKCkgJiAoMSA8PCBpKSkKICAgICAg
ICAgICAgIGVkamVfb2JqZWN0X3NpZ25hbF9lbWl0KG9iamVjdCwgc2lnbmFsc1tpXSwgIiIpOwog
ICAgIH0KIApAQCAtMzgzLDcgKzM4Myw4IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50VGhl
bWVQYXJ0KFJlbmRlck9iamVjdCogb2JqZWN0LCBGb3JtVHlwZSB0eXBlLCBjb25zdCBQCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgaGF2ZUJhY2tncm91bmRDb2xvciA9IGlzQ29u
dHJvbFN0eWxlZCgmb2JqZWN0LT5zdHlsZSgpLCBvYmplY3QtPnN0eWxlKCkuYm9yZGVyKCksICpv
YmplY3QtPnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBDb2xvcjo6d2hpdGUpOwotICAgIGFw
cGx5RWRqZVN0YXRlRnJvbUZvcm0oZW50cnktPmVkamUoKSwgY29udHJvbFN0YXRlc0ZvclJlbmRl
cmVyKG9iamVjdCksIGhhdmVCYWNrZ3JvdW5kQ29sb3IpOworICAgIENvbnRyb2xTdGF0ZXMgc3Rh
dGVzKGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIob2JqZWN0KSk7CisgICAgYXBwbHlF
ZGplU3RhdGVGcm9tRm9ybShlbnRyeS0+ZWRqZSgpLCAmc3RhdGVzLCBoYXZlQmFja2dyb3VuZENv
bG9yKTsKIAogICAgIGFwcGx5RWRqZVJUTFN0YXRlKGVudHJ5LT5lZGplKCksIG9iamVjdCwgdHlw
ZSwgcmVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5k
ZXJUaGVtZUVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZs
LmgKaW5kZXggZTZkYTA0ZWQyMTczOWQ1NTBhYmZlMWZmMmM2ZjFiZWU4MTkyNGQwMi4uMDBmMGJi
N2M1NmNhYzNlZDQwY2YzMjlmMWFhMGUyOGQzMzc4MmVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmgKQEAgLTIyOSw3ICsyMjksNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBhcHBseVBhcnREZXNjcmlwdGlvbnNGcm9tKGNvbnN0IFN0cmluZyYgdGhl
bWVQYXRoKTsKIAotICAgIHZvaWQgYXBwbHlFZGplU3RhdGVGcm9tRm9ybShFdmFzX09iamVjdCos
IENvbnRyb2xTdGF0ZXMsIGJvb2wpOworICAgIHZvaWQgYXBwbHlFZGplU3RhdGVGcm9tRm9ybShF
dmFzX09iamVjdCosIGNvbnN0IENvbnRyb2xTdGF0ZXMqLCBib29sKTsKICAgICB2b2lkIGFwcGx5
RWRqZVJUTFN0YXRlKEV2YXNfT2JqZWN0KiwgUmVuZGVyT2JqZWN0KiwgRm9ybVR5cGUsIGNvbnN0
IEludFJlY3QmKTsKICAgICBib29sIHBhaW50VGhlbWVQYXJ0KFJlbmRlck9iamVjdCosIEZvcm1U
eXBlLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLmgKaW5kZXggOGI3ZTk4MjJkZmI1NDFkOTMwNDIzYTRmNTdjNzFm
YWVjMDk1OGUzMC4uZDczOTUyMzYwYjQwNDZiNmY3MWUzNzRiYWIyNGVjNzNkZWFmYjVmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKQEAgLTUxLDExICs1MSwxMSBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFjZShD
b250cm9sUGFydCBwYXJ0KSBjb25zdCB7IHJldHVybiBwYXJ0ID09IFB1c2hCdXR0b25QYXJ0OyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMsIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxW
aWV3KikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENv
bnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzLCBJbnRSZWN0JiwgZmxvYXQgem9vbUZhY3RvcikgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzKiwg
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9s
bFZpZXcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWludFJl
Y3QoQ29udHJvbFBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqLCBJbnRSZWN0JiwgZmxvYXQgem9v
bUZhY3RvcikgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogT25jZSBSZW5kZXJUaGVtZU1hYyBpcyBj
b252ZXJ0ZWQgb3ZlciB0byB1c2UgVGhlbWUgdGhlbiB0aGlzIGNhbiBiZSBpbnRlcm5hbCB0byBU
aGVtZU1hYy4KLSAgICBzdGF0aWMgTlNWaWV3KiBlbnN1cmVkVmlldyhTY3JvbGxWaWV3KiwgQ29u
dHJvbFN0YXRlcyk7CisgICAgc3RhdGljIE5TVmlldyogZW5zdXJlZFZpZXcoU2Nyb2xsVmlldyos
IGNvbnN0IENvbnRyb2xTdGF0ZXMqKTsKICAgICBzdGF0aWMgdm9pZCBzZXRGb2N1c1JpbmdDbGlw
UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9U
aGVtZU1hYy5tbQppbmRleCA4NDUyNWNjZGY3YmM0MzViODA4NjEyMTdhMGExZTBiZjBhY2M2M2Nh
Li43NWMwNjg2YmMwNzVlNWRjYzQ3MWMxZjVjZDg4YTQyZjA4MmUxZmVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC0zNSw2ICszNSwxNSBAQAogI2ltcG9ydCA8
Q2FyYm9uL0NhcmJvbi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAorI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAKK0BpbnRlcmZhY2UgTlNCdXR0
b25DZWxsKERldGFpbHMpCistICh2b2lkKV9zZXRTdGF0ZTooTlNJbnRlZ2VyKXZhbHVlIGFuaW1h
dGVkOihCT09MKWFuaW1hdGVkOworLSAodm9pZClfc2V0SGlnaGxpZ2h0ZWQ6KEJPT0wpZmxhZyBh
bmltYXRlZDooQk9PTClhbmltYXRlZDsKKy0gKHZvaWQpX3JlbmRlckN1cnJlbnRBbmltYXRpb25G
cmFtZUluQ29udGV4dDooQ0dDb250ZXh0UmVmKWN0eHQgYXRMb2NhdGlvbjooTlNQb2ludCl3aGVy
ZTsKKy0gKEJPT0wpX3N0YXRlQW5pbWF0aW9uUnVubmluZzsKK0BlbmQKKyNlbmRpZgorCiBzdGF0
aWMgTlNSZWN0IGZvY3VzUmluZ0NsaXBSZWN0Owogc3RhdGljIEJPT0wgdGhlbWVXaW5kb3dIYXNL
ZXlBcHBlYXJhbmNlOwogCkBAIC05Nyw2ICsxMDYsMTIgQEAgc3RhdGljIEJPT0wgdGhlbWVXaW5k
b3dIYXNLZXlBcHBlYXJhbmNlOwogICAgIHJldHVybiBzZWxmOwogfQogCistICh2b2lkKWFkZFN1
YnZpZXc6KE5TVmlldyopc3VidmlldworeworICAgIC8vIEJ5IGRvaW5nIG5vdGhpbmcgaW4gdGhp
cyBtZXRob2Qgd2UgZm9yYmlkIGNvbnRyb2xzIGZyb20gYWRkaW5nIHN1YnZpZXdzLgorICAgIC8v
IFRoaXMgdGVsbHMgQXBwS2l0IHRvIG5vdCB1c2UgTGF5ZXItYmFja2VkIGFuaW1hdGlvbiBmb3Ig
Y29udHJvbCByZW5kZXJpbmcuCisgICAgVU5VU0VEX1BBUkFNKHN1YnZpZXcpOworfQogQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gTlNGb250IChXZWJDb3JlVGhlbWUpCkBAIC0xNzYsNDUgKzE5MSw1
NiBAQCBzdGF0aWMgdm9pZCBzZXRDb250cm9sU2l6ZShOU0NlbGwqIGNlbGwsIGNvbnN0IEludFNp
emUqIHNpemVzLCBjb25zdCBJbnRTaXplJiBtaQogICAgICAgICBbY2VsbCBzZXRDb250cm9sU2l6
ZTooTlNDb250cm9sU2l6ZSlzaXplXTsKIH0KIAotc3RhdGljIHZvaWQgdXBkYXRlU3RhdGVzKE5T
Q2VsbCogY2VsbCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMpCitzdGF0aWMgdm9pZCB1cGRhdGVTdGF0
ZXMoTlNDZWxsKiBjZWxsLCBjb25zdCBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzLCBib29s
IHVzZUFuaW1hdGlvbiA9IGZhbHNlKQogeworICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0
ZXMgPSBjb250cm9sU3RhdGVzLT5zdGF0ZXMoKTsKKwogICAgIC8vIEhvdmVyIHN0YXRlIGlzIG5v
dCBzdXBwb3J0ZWQgYnkgQXF1YS4KICAgICAKICAgICAvLyBQcmVzc2VkIHN0YXRlCiAgICAgYm9v
bCBvbGRQcmVzc2VkID0gW2NlbGwgaXNIaWdobGlnaHRlZF07Ci0gICAgYm9vbCBwcmVzc2VkID0g
c3RhdGVzICYgUHJlc3NlZFN0YXRlOworICAgIGJvb2wgcHJlc3NlZCA9IHN0YXRlcyAmIENvbnRy
b2xTdGF0ZXM6OlByZXNzZWRTdGF0ZTsKICAgICBpZiAocHJlc3NlZCAhPSBvbGRQcmVzc2VkKQog
ICAgICAgICBbY2VsbCBzZXRIaWdobGlnaHRlZDpwcmVzc2VkXTsKICAgICAKICAgICAvLyBFbmFi
bGVkIHN0YXRlCiAgICAgYm9vbCBvbGRFbmFibGVkID0gW2NlbGwgaXNFbmFibGVkXTsKLSAgICBi
b29sIGVuYWJsZWQgPSBzdGF0ZXMgJiBFbmFibGVkU3RhdGU7CisgICAgYm9vbCBlbmFibGVkID0g
c3RhdGVzICYgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlOwogICAgIGlmIChlbmFibGVkICE9
IG9sZEVuYWJsZWQpCiAgICAgICAgIFtjZWxsIHNldEVuYWJsZWQ6ZW5hYmxlZF07CiAKICAgICAv
LyBDaGVja2VkIGFuZCBJbmRldGVybWluYXRlCiAgICAgYm9vbCBvbGRJbmRldGVybWluYXRlID0g
W2NlbGwgc3RhdGVdID09IE5TTWl4ZWRTdGF0ZTsKLSAgICBib29sIGluZGV0ZXJtaW5hdGUgPSAo
c3RhdGVzICYgSW5kZXRlcm1pbmF0ZVN0YXRlKTsKLSAgICBib29sIGNoZWNrZWQgPSBzdGF0ZXMg
JiBDaGVja2VkU3RhdGU7CisgICAgYm9vbCBpbmRldGVybWluYXRlID0gKHN0YXRlcyAmIENvbnRy
b2xTdGF0ZXM6OkluZGV0ZXJtaW5hdGVTdGF0ZSk7CisgICAgYm9vbCBjaGVja2VkID0gc3RhdGVz
ICYgQ29udHJvbFN0YXRlczo6Q2hlY2tlZFN0YXRlOwogICAgIGJvb2wgb2xkQ2hlY2tlZCA9IFtj
ZWxsIHN0YXRlXSA9PSBOU09uU3RhdGU7Ci0gICAgaWYgKG9sZEluZGV0ZXJtaW5hdGUgIT0gaW5k
ZXRlcm1pbmF0ZSB8fCBjaGVja2VkICE9IG9sZENoZWNrZWQpCi0gICAgICAgIFtjZWxsIHNldFN0
YXRlOmluZGV0ZXJtaW5hdGUgPyBOU01peGVkU3RhdGUgOiAoY2hlY2tlZCA/IE5TT25TdGF0ZSA6
IE5TT2ZmU3RhdGUpXTsKLSAgICAgICAgCisgICAgaWYgKG9sZEluZGV0ZXJtaW5hdGUgIT0gaW5k
ZXRlcm1pbmF0ZSB8fCBjaGVja2VkICE9IG9sZENoZWNrZWQpIHsKKyAgICAgICAgTlNDZWxsU3Rh
dGVWYWx1ZSBuZXdTdGF0ZSA9IGluZGV0ZXJtaW5hdGUgPyBOU01peGVkU3RhdGUgOiAoY2hlY2tl
ZCA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGUpOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMDAKKyAgICAgICAgWyhOU0J1dHRvbkNlbGwqKWNlbGwgX3NldFN0YXRl
Om5ld1N0YXRlIGFuaW1hdGVkOnVzZUFuaW1hdGlvbl07CisjZWxzZQorICAgICAgICBVTlVTRURf
UEFSQU0odXNlQW5pbWF0aW9uKTsKKyAgICAgICAgW2NlbGwgc2V0U3RhdGU6bmV3U3RhdGVdOwor
I2VuZGlmCisgICAgfQorCiAgICAgLy8gV2luZG93IGluYWN0aXZlIHN0YXRlIGRvZXMgbm90IG5l
ZWQgdG8gYmUgY2hlY2tlZCBleHBsaWNpdGx5LCBzaW5jZSB3ZSBwYWludCBwYXJlbnRlZCB0byAK
ICAgICAvLyBhIHZpZXcgaW4gYSB3aW5kb3cgd2hvc2Uga2V5IHN0YXRlIGNhbiBiZSBkZXRlY3Rl
ZC4KIH0KIAotc3RhdGljIFRoZW1lRHJhd1N0YXRlIGNvbnZlcnRDb250cm9sU3RhdGVzVG9UaGVt
ZURyYXdTdGF0ZShUaGVtZUJ1dHRvbktpbmQga2luZCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMpCitz
dGF0aWMgVGhlbWVEcmF3U3RhdGUgY29udmVydENvbnRyb2xTdGF0ZXNUb1RoZW1lRHJhd1N0YXRl
KFRoZW1lQnV0dG9uS2luZCBraW5kLCBjb25zdCBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVz
KQogewotICAgIGlmIChzdGF0ZXMgJiBSZWFkT25seVN0YXRlKQorICAgIENvbnRyb2xTdGF0ZXM6
OlN0YXRlcyBzdGF0ZXMgPSBjb250cm9sU3RhdGVzLT5zdGF0ZXMoKTsKKworICAgIGlmIChzdGF0
ZXMgJiBDb250cm9sU3RhdGVzOjpSZWFkT25seVN0YXRlKQogICAgICAgICByZXR1cm4ga1RoZW1l
U3RhdGVVbmF2YWlsYWJsZUluYWN0aXZlOwotICAgIGlmICghKHN0YXRlcyAmIEVuYWJsZWRTdGF0
ZSkpCisgICAgaWYgKCEoc3RhdGVzICYgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlKSkKICAg
ICAgICAgcmV0dXJuIGtUaGVtZVN0YXRlVW5hdmFpbGFibGVJbmFjdGl2ZTsKIAogICAgIC8vIERv
IG5vdCBwcm9jZXNzIFByZXNzZWRTdGF0ZSBpZiAhRW5hYmxlZFN0YXRlIG9yIFJlYWRPbmx5U3Rh
dGUuCi0gICAgaWYgKHN0YXRlcyAmIFByZXNzZWRTdGF0ZSkgeworICAgIGlmIChzdGF0ZXMgJiBD
b250cm9sU3RhdGVzOjpQcmVzc2VkU3RhdGUpIHsKICAgICAgICAgaWYgKGtpbmQgPT0ga1RoZW1l
SW5jRGVjQnV0dG9uIHx8IGtpbmQgPT0ga1RoZW1lSW5jRGVjQnV0dG9uU21hbGwgfHwga2luZCA9
PSBrVGhlbWVJbmNEZWNCdXR0b25NaW5pKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRlcyAmIFNw
aW5VcFN0YXRlID8ga1RoZW1lU3RhdGVQcmVzc2VkVXAgOiBrVGhlbWVTdGF0ZVByZXNzZWREb3du
OworICAgICAgICAgICAgcmV0dXJuIHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OlNwaW5VcFN0YXRl
ID8ga1RoZW1lU3RhdGVQcmVzc2VkVXAgOiBrVGhlbWVTdGF0ZVByZXNzZWREb3duOwogICAgICAg
ICByZXR1cm4ga1RoZW1lU3RhdGVQcmVzc2VkOwogICAgIH0KICAgICByZXR1cm4ga1RoZW1lU3Rh
dGVBY3RpdmU7CkBAIC0yNjYsMzQgKzI5Miw1NCBAQCBzdGF0aWMgTGVuZ3RoU2l6ZSBjaGVja2Jv
eFNpemUoY29uc3QgRm9udCYgZm9udCwgY29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZgog
ICAgIC8vIFVzZSB0aGUgZm9udCBzaXplIHRvIGRldGVybWluZSB0aGUgaW50cmluc2ljIHdpZHRo
IG9mIHRoZSBjb250cm9sLgogICAgIHJldHVybiBzaXplRnJvbUZvbnQoZm9udCwgem9vbWVkU2l6
ZSwgem9vbUZhY3RvciwgY2hlY2tib3hTaXplcygpKTsKIH0KLQotc3RhdGljIE5TQnV0dG9uQ2Vs
bCAqY2hlY2tib3goQ29udHJvbFN0YXRlcyBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJl
Y3QsIGZsb2F0IHpvb21GYWN0b3IpCi17Ci0gICAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqY2hlY2ti
b3hDZWxsOwotICAgIGlmICghY2hlY2tib3hDZWxsKSB7Ci0gICAgICAgIGNoZWNrYm94Q2VsbCA9
IFtbTlNCdXR0b25DZWxsIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW2NoZWNrYm94Q2VsbCBzZXRC
dXR0b25UeXBlOk5TU3dpdGNoQnV0dG9uXTsKLSAgICAgICAgW2NoZWNrYm94Q2VsbCBzZXRUaXRs
ZTpuaWxdOwotICAgICAgICBbY2hlY2tib3hDZWxsIHNldEFsbG93c01peGVkU3RhdGU6WUVTXTsK
LSAgICAgICAgW2NoZWNrYm94Q2VsbCBzZXRGb2N1c1JpbmdUeXBlOk5TRm9jdXNSaW5nVHlwZUV4
dGVyaW9yXTsKLSAgICB9CiAgICAgCitzdGF0aWMgdm9pZCBjb25maWd1cmVDaGVja2JveChOU0Nl
bGwqIGNlbGwsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9v
bWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgYm9vbCBpc1N0YXRlQ2hhbmdlKQorewogICAgIC8v
IFNldCB0aGUgY29udHJvbCBzaXplIGJhc2VkIG9mZiB0aGUgcmVjdGFuZ2xlIHdlJ3JlIHBhaW50
aW5nIGludG8uCi0gICAgc2V0Q29udHJvbFNpemUoY2hlY2tib3hDZWxsLCBjaGVja2JveFNpemVz
KCksIHpvb21lZFJlY3Quc2l6ZSgpLCB6b29tRmFjdG9yKTsKKyAgICBzZXRDb250cm9sU2l6ZShj
ZWxsLCBjaGVja2JveFNpemVzKCksIHpvb21lZFJlY3Quc2l6ZSgpLCB6b29tRmFjdG9yKTsKIAog
ICAgIC8vIFVwZGF0ZSB0aGUgdmFyaW91cyBzdGF0ZXMgd2UgcmVzcG9uZCB0by4KLSAgICB1cGRh
dGVTdGF0ZXMoY2hlY2tib3hDZWxsLCBzdGF0ZXMpOworICAgIHVwZGF0ZVN0YXRlcyhjZWxsLCBz
dGF0ZXMsIGlzU3RhdGVDaGFuZ2UpOworfQogICAgIAorc3RhdGljIE5TQnV0dG9uQ2VsbCAqY3Jl
YXRlQ2hlY2tib3hDZWxsKCkKK3sKKyAgICBOU0J1dHRvbkNlbGwgKmNoZWNrYm94Q2VsbCA9IFtb
TlNCdXR0b25DZWxsIGFsbG9jXSBpbml0XTsKKyAgICBbY2hlY2tib3hDZWxsIHNldEJ1dHRvblR5
cGU6TlNTd2l0Y2hCdXR0b25dOworICAgIFtjaGVja2JveENlbGwgc2V0VGl0bGU6bmlsXTsKKyAg
ICBbY2hlY2tib3hDZWxsIHNldEFsbG93c01peGVkU3RhdGU6WUVTXTsKKyAgICBbY2hlY2tib3hD
ZWxsIHNldEZvY3VzUmluZ1R5cGU6TlNGb2N1c1JpbmdUeXBlRXh0ZXJpb3JdOwogICAgIHJldHVy
biBjaGVja2JveENlbGw7CiB9CiAKK3N0YXRpYyBOU0J1dHRvbkNlbGwgKnNoYXJlZENoZWNrYm94
Q2VsbChjb25zdCBDb250cm9sU3RhdGVzKiBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJl
Y3QsIGZsb2F0IHpvb21GYWN0b3IpCit7CisgICAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqY2hlY2ti
b3hDZWxsOworICAgIGlmICghY2hlY2tib3hDZWxsKQorICAgICAgICBjaGVja2JveENlbGwgPSBj
cmVhdGVDaGVja2JveENlbGwoKTsKKworICAgIGNvbmZpZ3VyZUNoZWNrYm94KGNoZWNrYm94Q2Vs
bCwgc3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yLCBmYWxzZSk7CisgICAgcmV0dXJuIGNo
ZWNrYm94Q2VsbDsKK30KKyAgICAKIC8vIEZJWE1FOiBTaGFyZSBtb3JlIGNvZGUgd2l0aCByYWRp
byBidXR0b25zLgotc3RhdGljIHZvaWQgcGFpbnRDaGVja2JveChDb250cm9sU3RhdGVzIHN0YXRl
cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBm
bG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KQorc3RhdGljIHZvaWQgcGFp
bnRDaGVja2JveChDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNj
cm9sbFZpZXcqIHNjcm9sbFZpZXcpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
CiAKLSAgICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUg
Y29udHJvbCBhbmQgcHJlcGFyZSB0aGUgY2VsbCBmb3IgcGFpbnRpbmcuCi0gICAgTlNCdXR0b25D
ZWxsICpjaGVja2JveENlbGwgPSBjaGVja2JveChzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0
b3IpOworICAgIE5TQnV0dG9uQ2VsbCAqY2hlY2tib3hDZWxsID0gc3RhdGljX2Nhc3Q8TlNCdXR0
b25DZWxsKj4oY29udHJvbFN0YXRlcy0+cGxhdGZvcm1Db250cm9sKCkpOworCisgICAgaWYgKGNv
bnRyb2xTdGF0ZXMtPmlzRGlydHkoKSkgeworICAgICAgICBpZiAoIWNoZWNrYm94Q2VsbCkKKyAg
ICAgICAgICAgIGNoZWNrYm94Q2VsbCA9IGNyZWF0ZUNoZWNrYm94Q2VsbCgpOworICAgICAgICBj
b25maWd1cmVDaGVja2JveChjaGVja2JveENlbGwsIGNvbnRyb2xTdGF0ZXMsIHpvb21lZFJlY3Qs
IHpvb21GYWN0b3IsIHRydWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghY2hlY2tib3hD
ZWxsKQorICAgICAgICAgICAgY2hlY2tib3hDZWxsID0gc2hhcmVkQ2hlY2tib3hDZWxsKGNvbnRy
b2xTdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOworICAgICAgICBjb25maWd1cmVDaGVj
a2JveChjaGVja2JveENlbGwsIGNvbnRyb2xTdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3Is
IGZhbHNlKTsKKyAgICB9CisgICAgY29udHJvbFN0YXRlcy0+c2V0RGlydHkoZmFsc2UpOworCiAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKIAogICAg
IE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBbY2hlY2tib3hDZWxsIGNvbnRyb2xTaXplXTsK
QEAgLTMxMSwxMiArMzU3LDM0IEBAIHN0YXRpYyB2b2lkIHBhaW50Q2hlY2tib3goQ29udHJvbFN0
YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICB9CiAKICAg
ICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwotICAg
IE5TVmlldyAqdmlldyA9IFRoZW1lTWFjOjplbnN1cmVkVmlldyhzY3JvbGxWaWV3LCBzdGF0ZXMp
OwotICAgIFtjaGVja2JveENlbGwgZHJhd1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBp
blZpZXc6dmlld107Ci0gICAgaWYgKHN0YXRlcyAmIEZvY3VzU3RhdGUpCisgICAgTlNWaWV3ICp2
aWV3ID0gVGhlbWVNYWM6OmVuc3VyZWRWaWV3KHNjcm9sbFZpZXcsIGNvbnRyb2xTdGF0ZXMpOwor
ICAgIGJvb2wgZHJhd1N0YXRpY2FsbHkgPSB0cnVlOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMDAKKyAgICBkcmF3U3RhdGljYWxseSA9ICFbY2hlY2tib3hDZWxs
IF9zdGF0ZUFuaW1hdGlvblJ1bm5pbmddOworI2VuZGlmCisgICAgaWYgKGRyYXdTdGF0aWNhbGx5
KQorICAgICAgICBbY2hlY2tib3hDZWxsIGRyYXdXaXRoRnJhbWU6TlNSZWN0KGluZmxhdGVkUmVj
dCkgaW5WaWV3OnZpZXddOworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBpc24n
dCBxdWl0ZSBjb3JyZWN0IGF0IHRoZSBtb21lbnQgZHVlIHRvIHRoZSB3YXkgdGhlIHRpY2sgbWFy
ayBleHRlbmRzIG91dCBvZiB0aGUgY29udHJvbC4KKyAgICAgICAgY29udGV4dC0+dHJhbnNsYXRl
KGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkpOworICAgICAgICBjb250ZXh0LT5z
Y2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKDAsIC1p
bmZsYXRlZFJlY3QuaGVpZ2h0KCkpOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMDAKKyAgICAgICAgW2NoZWNrYm94Q2VsbCBfcmVuZGVyQ3VycmVudEFuaW1hdGlv
bkZyYW1lSW5Db250ZXh0OmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIGF0TG9jYXRpb246TlNN
YWtlUG9pbnQoMCwgMCldOworI2VuZGlmCisgICAgfQorICAgIGlmIChjb250cm9sU3RhdGVzLT5z
dGF0ZXMoKSAmIENvbnRyb2xTdGF0ZXM6OkZvY3VzU3RhdGUpCiAgICAgICAgIFtjaGVja2JveENl
bGwgX3dlYl9kcmF3Rm9jdXNSaW5nV2l0aEZyYW1lOk5TUmVjdChpbmZsYXRlZFJlY3QpIGluVmll
dzp2aWV3XTsKICAgICBbY2hlY2tib3hDZWxsIHNldENvbnRyb2xWaWV3Om5pbF07CiAgICAgCisg
ICAgYm9vbCBuZWVkc1JlcGFpbnQgPSBmYWxzZTsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTAwCisgICAgbmVlZHNSZXBhaW50ID0gW2NoZWNrYm94Q2VsbCBfc3Rh
dGVBbmltYXRpb25SdW5uaW5nXTsKKyNlbmRpZgorICAgIGNvbnRyb2xTdGF0ZXMtPnNldE5lZWRz
UmVwYWludChuZWVkc1JlcGFpbnQpOworICAgIGlmIChuZWVkc1JlcGFpbnQpCisgICAgICAgIGNv
bnRyb2xTdGF0ZXMtPnNldFBsYXRmb3JtQ29udHJvbChjaGVja2JveENlbGwpOworCiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0zNDksNyArNDE3LDcgQEAgc3RhdGljIExl
bmd0aFNpemUgcmFkaW9TaXplKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IExlbmd0aFNpemUmIHpv
b21lZFNpemUsIGZsb2EKICAgICByZXR1cm4gc2l6ZUZyb21Gb250KGZvbnQsIHpvb21lZFNpemUs
IHpvb21GYWN0b3IsIHJhZGlvU2l6ZXMoKSk7CiB9CiAKLXN0YXRpYyBOU0J1dHRvbkNlbGwgKnJh
ZGlvKENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9h
dCB6b29tRmFjdG9yKQorc3RhdGljIE5TQnV0dG9uQ2VsbCAqcmFkaW8oY29uc3QgQ29udHJvbFN0
YXRlcyogc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9y
KQogewogICAgIHN0YXRpYyBOU0J1dHRvbkNlbGwgKnJhZGlvQ2VsbDsKICAgICBpZiAoIXJhZGlv
Q2VsbCkgewpAQCAtMzY4LDEwICs0MzYsMTAgQEAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqcmFkaW8o
Q29udHJvbFN0YXRlcyBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2EKICAg
ICByZXR1cm4gcmFkaW9DZWxsOwogfQogCi1zdGF0aWMgdm9pZCBwYWludFJhZGlvKENvbnRyb2xT
dGF0ZXMgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpv
b21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcpCitzdGF0
aWMgdm9pZCBwYWludFJhZGlvKENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZh
Y3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldykKIHsKICAgICAvLyBEZXRlcm1pbmUgdGhlIHdp
ZHRoIGFuZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUgY29udHJvbCBhbmQgcHJlcGFyZSB0aGUgY2Vs
bCBmb3IgcGFpbnRpbmcuCi0gICAgTlNCdXR0b25DZWxsICpyYWRpb0NlbGwgPSByYWRpbyhzdGF0
ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOworICAgIE5TQnV0dG9uQ2VsbCAqcmFkaW9DZWxs
ID0gcmFkaW8oY29udHJvbFN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKIAogICAgIE5TQ29u
dHJvbFNpemUgY29udHJvbFNpemUgPSBbcmFkaW9DZWxsIGNvbnRyb2xTaXplXTsKQEAgLTM5MCw5
ICs0NTgsOSBAQCBzdGF0aWMgdm9pZCBwYWludFJhZGlvKENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludAogCiAgICAgTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsKICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLSAgICBOU1ZpZXcgKnZpZXcgPSBUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoc2Ny
b2xsVmlldywgc3RhdGVzKTsKKyAgICBOU1ZpZXcgKnZpZXcgPSBUaGVtZU1hYzo6ZW5zdXJlZFZp
ZXcoc2Nyb2xsVmlldywgY29udHJvbFN0YXRlcyk7CiAgICAgW3JhZGlvQ2VsbCBkcmF3V2l0aEZy
YW1lOk5TUmVjdChpbmZsYXRlZFJlY3QpIGluVmlldzp2aWV3XTsKLSAgICBpZiAoc3RhdGVzICYg
Rm9jdXNTdGF0ZSkKKyAgICBpZiAoY29udHJvbFN0YXRlcy0+c3RhdGVzKCkgJiBDb250cm9sU3Rh
dGVzOjpGb2N1c1N0YXRlKQogICAgICAgICBbcmFkaW9DZWxsIF93ZWJfZHJhd0ZvY3VzUmluZ1dp
dGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6dmlld107CiAgICAgW3JhZGlvQ2Vs
bCBzZXRDb250cm9sVmlldzpuaWxdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAg
LTQzMCw3ICs0OTgsNyBAQCBzdGF0aWMgTlNCdXR0b25DZWxsICpsZWFrQnV0dG9uQ2VsbChCdXR0
b25DZWxsVHlwZSB0eXBlKQogICAgIHJldHVybiBjZWxsOwogfQogCi1zdGF0aWMgdm9pZCBzZXRV
cEJ1dHRvbkNlbGwoTlNCdXR0b25DZWxsICpjZWxsLCBDb250cm9sUGFydCBwYXJ0LCBDb250cm9s
U3RhdGVzIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3Rv
cikKK3N0YXRpYyB2b2lkIHNldFVwQnV0dG9uQ2VsbChOU0J1dHRvbkNlbGwgKmNlbGwsIENvbnRy
b2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgY29uc3QgSW50UmVjdCYg
em9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikKIHsKICAgICAvLyBTZXQgdGhlIGNvbnRyb2wg
c2l6ZSBiYXNlZCBvZmYgdGhlIHJlY3RhbmdsZSB3ZSdyZSBwYWludGluZyBpbnRvLgogICAgIGNv
bnN0IEludFNpemUqIHNpemVzID0gYnV0dG9uU2l6ZXMoKTsKQEAgLTQ0NywyNiArNTE1LDI4IEBA
IHN0YXRpYyB2b2lkIHNldFVwQnV0dG9uQ2VsbChOU0J1dHRvbkNlbGwgKmNlbGwsIENvbnRyb2xQ
YXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMKICAgICB1cGRhdGVTdGF0ZXMoY2VsbCwgc3RhdGVzKTsK
IH0KIAotc3RhdGljIE5TQnV0dG9uQ2VsbCAqYnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRy
b2xTdGF0ZXMgc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFj
dG9yKQorc3RhdGljIE5TQnV0dG9uQ2VsbCAqYnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0
IENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3Qs
IGZsb2F0IHpvb21GYWN0b3IpCiB7CisgICAgQ29udHJvbFN0YXRlczo6U3RhdGVzIHN0YXRlcyA9
IGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygpOwogICAgIE5TQnV0dG9uQ2VsbCAqY2VsbDsKLSAgICBp
ZiAoc3RhdGVzICYgRGVmYXVsdFN0YXRlKSB7CisgICAgaWYgKHN0YXRlcyAmIENvbnRyb2xTdGF0
ZXM6OkRlZmF1bHRTdGF0ZSkgewogICAgICAgICBzdGF0aWMgTlNCdXR0b25DZWxsICpkZWZhdWx0
Q2VsbCA9IGxlYWtCdXR0b25DZWxsKERlZmF1bHRCdXR0b25DZWxsKTsKICAgICAgICAgY2VsbCA9
IGRlZmF1bHRDZWxsOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN0YXRpYyBOU0J1dHRvbkNlbGwg
Km5vcm1hbENlbGwgPSBsZWFrQnV0dG9uQ2VsbChOb3JtYWxCdXR0b25DZWxsKTsKICAgICAgICAg
Y2VsbCA9IG5vcm1hbENlbGw7CiAgICAgfQotICAgIHNldFVwQnV0dG9uQ2VsbChjZWxsLCBwYXJ0
LCBzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOyAgICAKKyAgICBzZXRVcEJ1dHRvbkNl
bGwoY2VsbCwgcGFydCwgY29udHJvbFN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CiAg
ICAgcmV0dXJuIGNlbGw7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0
IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNj
cm9sbFZpZXcpCitzdGF0aWMgdm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFydCBwYXJ0LCBDb250
cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9s
bFZpZXcpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgLy8g
RGV0ZXJtaW5lIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG5lZWRlZCBmb3IgdGhlIGNvbnRyb2wgYW5k
IHByZXBhcmUgdGhlIGNlbGwgZm9yIHBhaW50aW5nLgotICAgIE5TQnV0dG9uQ2VsbCAqYnV0dG9u
Q2VsbCA9IGJ1dHRvbihwYXJ0LCBzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOworICAg
IENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZXMgPSBjb250cm9sU3RhdGVzLT5zdGF0ZXMoKTsK
KyAgICBOU0J1dHRvbkNlbGwgKmJ1dHRvbkNlbGwgPSBidXR0b24ocGFydCwgY29udHJvbFN0YXRl
cywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKIAogICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUg
PSBbYnV0dG9uQ2VsbCBjb250cm9sU2l6ZV07CkBAIC00OTQsMTggKzU2NCwxOCBAQCBzdGF0aWMg
dm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywg
R3JhcGhpY3NDb250ZXh0KgogICAgIH0gCiAKICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwotICAgIE5TVmlldyAqdmlldyA9IFRoZW1lTWFjOjpl
bnN1cmVkVmlldyhzY3JvbGxWaWV3LCBzdGF0ZXMpOworICAgIE5TVmlldyAqdmlldyA9IFRoZW1l
TWFjOjplbnN1cmVkVmlldyhzY3JvbGxWaWV3LCBjb250cm9sU3RhdGVzKTsKICAgICBOU1dpbmRv
dyAqd2luZG93ID0gW3ZpZXcgd2luZG93XTsKICAgICBOU0J1dHRvbkNlbGwgKnByZXZpb3VzRGVm
YXVsdEJ1dHRvbkNlbGwgPSBbd2luZG93IGRlZmF1bHRCdXR0b25DZWxsXTsKIAotICAgIGlmIChz
dGF0ZXMgJiBEZWZhdWx0U3RhdGUpIHsKKyAgICBpZiAoc3RhdGVzICYgQ29udHJvbFN0YXRlczo6
RGVmYXVsdFN0YXRlKSB7CiAgICAgICAgIFt3aW5kb3cgc2V0RGVmYXVsdEJ1dHRvbkNlbGw6YnV0
dG9uQ2VsbF07CiAgICAgICAgIHdrQWR2YW5jZURlZmF1bHRCdXR0b25QdWxzZUFuaW1hdGlvbihi
dXR0b25DZWxsKTsKICAgICB9IGVsc2UgaWYgKFtwcmV2aW91c0RlZmF1bHRCdXR0b25DZWxsIGlz
RXF1YWw6YnV0dG9uQ2VsbF0pCiAgICAgICAgIFt3aW5kb3cgc2V0RGVmYXVsdEJ1dHRvbkNlbGw6
bmlsXTsKIAogICAgIFtidXR0b25DZWxsIGRyYXdXaXRoRnJhbWU6TlNSZWN0KGluZmxhdGVkUmVj
dCkgaW5WaWV3OnZpZXddOwotICAgIGlmIChzdGF0ZXMgJiBGb2N1c1N0YXRlKQorICAgIGlmIChz
dGF0ZXMgJiBDb250cm9sU3RhdGVzOjpGb2N1c1N0YXRlKQogICAgICAgICBbYnV0dG9uQ2VsbCBf
d2ViX2RyYXdGb2N1c1JpbmdXaXRoRnJhbWU6TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5WaWV3OnZp
ZXddOwogICAgIFtidXR0b25DZWxsIHNldENvbnRyb2xWaWV3Om5pbF07CiAKQEAgLTUzNSw3ICs2
MDUsNyBAQCBzdGF0aWMgTlNDb250cm9sU2l6ZSBzdGVwcGVyQ29udHJvbFNpemVGb3JGb250KGNv
bnN0IEZvbnQmIGZvbnQpCiAgICAgcmV0dXJuIE5TTWluaUNvbnRyb2xTaXplOwogfQogCi1zdGF0
aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3Rvciwg
U2Nyb2xsVmlldyopCitzdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0YXRlcyogc3Rh
dGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3Qs
IGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqKQogewogICAgIC8vIFdlIGRvbid0IHVzZSBO
U1N0ZXBwZXJDZWxsIGJlY2F1c2UgdGhlcmUgYXJlIG5vIHdheXMgdG8gZHJhdyBhbgogICAgIC8v
IE5TU3RlcHBlckNlbGwgd2l0aCB0aGUgdXAgYnV0dG9uIGhpZ2hsaWdodGVkLgpAQCAtNTc3LDcg
KzY0Nyw3IEBAIHN0YXRpYyB2b2lkIHBhaW50U3RlcHBlcihDb250cm9sU3RhdGVzIHN0YXRlcywg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJCiAKIC8vIFRoaXMgd2lsbCBlbnN1cmUg
dGhhdCB3ZSBhbHdheXMgcmV0dXJuIGEgdmFsaWQgTlNWaWV3LCBldmVuIGlmIFNjcm9sbFZpZXcg
ZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZG9jdW1lbnQgTlNWaWV3LgogLy8gSWYgdGhlIFNj
cm9sbFZpZXcgZG9lc24ndCBoYXZlIGFuIE5TVmlldywgd2Ugd2lsbCByZXR1cm4gYSBmYWtlIE5T
VmlldyBzZXQgdXAgaW4gdGhlIHdheSBBcHBLaXQgZXhwZWN0cy4KLU5TVmlldyAqVGhlbWVNYWM6
OmVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIENvbnRyb2xTdGF0ZXMgc3RhdGVz
KQorTlNWaWV3ICpUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoU2Nyb2xsVmlldyogc2Nyb2xsVmlldywg
Y29uc3QgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcykKIHsKICAgICBpZiAoTlNWaWV3ICpk
b2N1bWVudFZpZXcgPSBzY3JvbGxWaWV3LT5kb2N1bWVudFZpZXcoKSkKICAgICAgICAgcmV0dXJu
IGRvY3VtZW50VmlldzsKQEAgLTU4Niw3ICs2NTYsNyBAQCBOU1ZpZXcgKlRoZW1lTWFjOjplbnN1
cmVkVmlldyhTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBDb250cm9sU3RhdGVzIHN0YXRlcykKICAg
ICBzdGF0aWMgV2ViQ29yZVRoZW1lVmlldyAqdGhlbWVWaWV3ID0gW1tXZWJDb3JlVGhlbWVWaWV3
IGFsbG9jXSBpbml0XTsKICAgICBbdGhlbWVWaWV3IHNldEZyYW1lU2l6ZTpOU1NpemVGcm9tQ0dT
aXplKHNjcm9sbFZpZXctPnRvdGFsQ29udGVudHNTaXplKCkpXTsKIAotICAgIHRoZW1lV2luZG93
SGFzS2V5QXBwZWFyYW5jZSA9ICEoc3RhdGVzICYgV2luZG93SW5hY3RpdmVTdGF0ZSk7CisgICAg
dGhlbWVXaW5kb3dIYXNLZXlBcHBlYXJhbmNlID0gIShjb250cm9sU3RhdGVzLT5zdGF0ZXMoKSAm
IENvbnRyb2xTdGF0ZXM6OldpbmRvd0luYWN0aXZlU3RhdGUpOwogCiAgICAgcmV0dXJuIHRoZW1l
VmlldzsKIH0KQEAgLTY4OSwxNCArNzU5LDE0IEBAIExlbmd0aEJveCBUaGVtZU1hYzo6Y29udHJv
bFBhZGRpbmcoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgTGVuCiAg
ICAgfQogfQogCi12b2lkIFRoZW1lTWFjOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9s
UGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxv
YXQgem9vbUZhY3RvcikgY29uc3QKK3ZvaWQgVGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRS
ZWN0KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgSW50UmVj
dCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKICAgICBzd2l0Y2ggKHBhcnQpIHsKICAgICAgICAgY2FzZSBDaGVj
a2JveFBhcnQ6IHsKICAgICAgICAgICAgIC8vIFdlIGluZmxhdGUgdGhlIHJlY3QgYXMgbmVlZGVk
IHRvIGFjY291bnQgZm9yIHBhZGRpbmcgaW5jbHVkZWQgaW4gdGhlIGNlbGwgdG8gYWNjb21tb2Rh
dGUgdGhlIGNoZWNrYm94CiAgICAgICAgICAgICAvLyBzaGFkb3ciIGFuZCB0aGUgY2hlY2suICBX
ZSBkb24ndCBjb25zaWRlciB0aGlzIHBhcnQgb2YgdGhlIGJvdW5kcyBvZiB0aGUgY29udHJvbCBp
biBXZWJLaXQuCi0gICAgICAgICAgICBOU0NlbGwgKmNlbGwgPSBjaGVja2JveChzdGF0ZXMsIHpv
b21lZFJlY3QsIHpvb21GYWN0b3IpOworICAgICAgICAgICAgTlNDZWxsICpjZWxsID0gc2hhcmVk
Q2hlY2tib3hDZWxsKHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CiAgICAgICAgICAg
ICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplID0gW2NlbGwgY29udHJvbFNpemVdOwogICAgICAg
ICAgICAgSW50U2l6ZSB6b29tZWRTaXplID0gY2hlY2tib3hTaXplcygpW2NvbnRyb2xTaXplXTsK
ICAgICAgICAgICAgIHpvb21lZFNpemUuc2V0SGVpZ2h0KHpvb21lZFNpemUuaGVpZ2h0KCkgKiB6
b29tRmFjdG9yKTsKQEAgLTc0NSw3ICs4MTUsNyBAQCB2b2lkIFRoZW1lTWFjOjppbmZsYXRlQ29u
dHJvbFBhaW50UmVjdChDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywgSQog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAotdm9pZCBUaGVtZU1hYzo6cGFpbnQo
Q29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Ny
b2xsVmlldyogc2Nyb2xsVmlldykgY29uc3QKK3ZvaWQgVGhlbWVNYWM6OnBhaW50KENvbnRyb2xQ
YXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3
KiBzY3JvbGxWaWV3KQogewogICAgIHN3aXRjaCAocGFydCkgewogICAgICAgICBjYXNlIENoZWNr
Ym94UGFydDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNWI3YmNh
NWI2NDMyMzZlMDM1YWU1NDI4MTNhOGViOTg1ZThlOTFkZC4uNzAxMTY2MDAyNmNjNzc4NmQ0OTJj
ZTU2NTFlNWNlN2Q3Yjc0Mjg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKQEAgLTEwMiw2ICsxMDIsNyBAQCBSZW5kZXJCb3g6OlJlbmRlckJveChFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZQogICAgICwgbV9t
aW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoLTEpCiAgICAgLCBtX21heFByZWZlcnJlZExvZ2ljYWxX
aWR0aCgtMSkKICAgICAsIG1faW5saW5lQm94V3JhcHBlcigwKQorICAgICwgbV9yZXBhaW50VGlt
ZXIodGhpcywgJlJlbmRlckJveDo6cmVwYWludFRpbWVyRmlyZWQpCiB7CiAgICAgc2V0SXNCb3go
KTsKIH0KQEAgLTExMSwxMiArMTEyLDE2IEBAIFJlbmRlckJveDo6UmVuZGVyQm94KERvY3VtZW50
JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhCiAgICAg
LCBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKICAgICAsIG1fbWF4UHJlZmVycmVkTG9n
aWNhbFdpZHRoKC0xKQogICAgICwgbV9pbmxpbmVCb3hXcmFwcGVyKDApCisgICAgLCBtX3JlcGFp
bnRUaW1lcih0aGlzLCAmUmVuZGVyQm94OjpyZXBhaW50VGltZXJGaXJlZCkKIHsKICAgICBzZXRJ
c0JveCgpOwogfQogCiBSZW5kZXJCb3g6On5SZW5kZXJCb3goKQogeworICAgIG1fcmVwYWludFRp
bWVyLnN0b3AoKTsKKyAgICBpZiAoaGFzQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKHRoaXMpKQor
ICAgICAgICByZW1vdmVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIodGhpcyk7CiB9CiAKIFJlbmRl
clJlZ2lvbiogUmVuZGVyQm94OjpjbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25zKFJlbmRlclJlZ2lv
biogcmVnaW9uKSBjb25zdApAQCAtMTIyMSw3ICsxMjI2LDIyIEBAIHZvaWQgUmVuZGVyQm94Ojpw
YWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpCiAgICAgLy8gSWYgd2UgaGF2ZSBhIG5hdGl2ZSB0aGVtZSBhcHBlYXJhbmNlLCBwYWlu
dCB0aGF0IGJlZm9yZSBwYWludGluZyBvdXIgYmFja2dyb3VuZC4KICAgICAvLyBUaGUgdGhlbWUg
d2lsbCB0ZWxsIHVzIHdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBhbHNvIHBhaW50IHRoZSBDU1Mg
YmFja2dyb3VuZC4KICAgICBJbnRSZWN0IHNuYXBwZWRQYWludFJlY3QocGl4ZWxTbmFwcGVkSW50
UmVjdChwYWludFJlY3QpKTsKLSAgICBib29sIHRoZW1lUGFpbnRlZCA9IHN0eWxlKCkuaGFzQXBw
ZWFyYW5jZSgpICYmICF0aGVtZSgpLnBhaW50KHRoaXMsIHBhaW50SW5mbywgc25hcHBlZFBhaW50
UmVjdCk7CisKKyAgICBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzID0gbnVsbHB0cjsKKyAg
ICBpZiAoc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpIHsKKyAgICAgICAgaWYgKGhhc0NvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcih0aGlzKSkKKyAgICAgICAgICAgIGNvbnRyb2xTdGF0ZXMgPSBjb250
cm9sU3RhdGVzRm9yUmVuZGVyZXIodGhpcyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
Y29udHJvbFN0YXRlcyA9IG5ldyBDb250cm9sU3RhdGVzKCk7CisgICAgICAgICAgICBhZGRDb250
cm9sU3RhdGVzRm9yUmVuZGVyZXIodGhpcywgY29udHJvbFN0YXRlcyk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBib29sIHRoZW1lUGFpbnRlZCA9IHN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYm
ICF0aGVtZSgpLnBhaW50KHRoaXMsIGNvbnRyb2xTdGF0ZXMsIHBhaW50SW5mbywgc25hcHBlZFBh
aW50UmVjdCk7CisKKyAgICBpZiAoY29udHJvbFN0YXRlcyAmJiBjb250cm9sU3RhdGVzLT5uZWVk
c1JlcGFpbnQoKSkKKyAgICAgICAgbV9yZXBhaW50VGltZXIuc3RhcnRPbmVTaG90KDApOworCiAg
ICAgaWYgKCF0aGVtZVBhaW50ZWQpIHsKICAgICAgICAgaWYgKGJsZWVkQXZvaWRhbmNlID09IEJh
Y2tncm91bmRCbGVlZEJhY2tncm91bmRPdmVyQm9yZGVyKQogICAgICAgICAgICAgcGFpbnRCb3Jk
ZXIocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIGJsZWVkQXZvaWRhbmNlKTsKQEAgLTQ3
MjksNCArNDc0OSwxMCBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6b2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRhaW5lckJsb2NrLT5vZmZzZXRG
cm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBsb2dpY2FsVG9wKCk7CiB9CiAKK3ZvaWQgUmVu
ZGVyQm94OjpyZXBhaW50VGltZXJGaXJlZChUaW1lcjxSZW5kZXJCb3g+JikKK3sKKyAgICBpZiAo
IWRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSkKKyAgICAgICAgdGhpcy0+cmVwYWludCgpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgK
aW5kZXggZjkyMGM1YzAzMWYyMTc2OTY5OTYzNWMzNTBmOGE2ODdkNDgxOTUyMS4uMGFmMjU2ZGQ1
MDA1MTkwNjBiN2QzMGU1YTY3MmUxMDZlZWU5OTNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaApAQCAtNzIxLDggKzcyMSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFJl
bmRlck92ZXJmbG93PiBtX292ZXJmbG93OwogCiBwcml2YXRlOgorICAgIHZvaWQgcmVwYWludFRp
bWVyRmlyZWQoVGltZXI8UmVuZGVyQm94PiYpOworCiAgICAgLy8gVXNlZCB0byBzdG9yZSBzdGF0
ZSBiZXR3ZWVuIHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVEaWRDaGFuZ2UKICAgICBzdGF0aWMg
Ym9vbCBzX2hhZE92ZXJmbG93Q2xpcDsKKworICAgIFRpbWVyPFJlbmRlckJveD4gbV9yZXBhaW50
VGltZXI7CiB9OwogCiBSRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyQm94LCBpc0JveCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IDNmY2E1
YTc1ZWM2MGI4MmU0Yjc4MjIzN2VhOWQwZmI1YTdkOTM1OTQuLmRjMmFjYjFmOGU4OWY1NGZmM2Nh
NGRiMTllYjBlODBhMmEyMGNmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgi
CiAjaW5jbHVkZSAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNvbnRlbnREYXRh
LmgiCisjaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIK
ICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNjYsNyAr
NjcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIFJlbmRlckVsZW1lbnQ6OnNfYWZm
ZWN0c1BhcmVudEJsb2NrID0gZmFsc2U7CiBib29sIFJlbmRlckVsZW1lbnQ6OnNfbm9Mb25nZXJB
ZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsKLQorICAgIAorc3RhdGljIEhhc2hNYXA8Y29uc3Qg
UmVuZGVyT2JqZWN0KiwgQ29udHJvbFN0YXRlcyo+JiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVj
dCosIENvbnRyb2xTdGF0ZXMqPj4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CisgICAgCiBSZW5k
ZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyT2JqZWN0
KGVsZW1lbnQpCiAgICAgLCBtX2Jhc2VUeXBlRmxhZ3MoYmFzZVR5cGVGbGFncykKQEAgLTEzMzgs
NCArMTM0NSwyOCBAQCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIFJlbmRlckVsZW1lbnQ6OnJlbmRl
ck5hbWVkRmxvd1RocmVhZFdyYXBwZXIoKQogICAgIHJldHVybiByZW5kZXJlciAmJiByZW5kZXJl
ci0+aXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSA/IHRvUmVuZGVyTmFtZWRGbG93VGhyZWFkKHJl
bmRlcmVyKSA6IG51bGxwdHI7CiB9CiAKK2Jvb2wgUmVuZGVyRWxlbWVudDo6aGFzQ29udHJvbFN0
YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbykKK3sKKyAgICByZXR1cm4gY29u
dHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkuY29udGFpbnMobyk7Cit9CisKK0NvbnRyb2xTdGF0ZXMq
IFJlbmRlckVsZW1lbnQ6OmNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqIG8pCit7CisgICAgcmV0dXJuIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLmdldChvKTsK
K30KKwordm9pZCBSZW5kZXJFbGVtZW50OjpyZW1vdmVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIo
Y29uc3QgUmVuZGVyT2JqZWN0KiBvKQoreworICAgIENvbnRyb2xTdGF0ZXMqIHN0YXRlcyA9IGNv
bnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLmdldChvKTsKKyAgICBpZiAoc3RhdGVzKSB7CisgICAg
ICAgIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLnJlbW92ZShvKTsKKyAgICAgICAgZGVsZXRl
IHN0YXRlczsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyRWxlbWVudDo6YWRkQ29udHJvbFN0YXRl
c0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbywgQ29udHJvbFN0YXRlcyogc3RhdGVz
KQoreworICAgIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLmFkZChvLCBzdGF0ZXMpOworfQor
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCAwMjIzMDYw
NmRiNGI3OTViMjI1MWRjMjVjYTI1OWUyM2EzOWNlMWY5Li5lNjRiNzFlNTE3MjA0Njk2YzhjZDM1
NGVlMjhkNzk4NDM1MTYwMmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBD
b250cm9sU3RhdGVzOworCiBjbGFzcyBSZW5kZXJFbGVtZW50IDogcHVibGljIFJlbmRlck9iamVj
dCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyRWxlbWVudCgpOwpAQCAtMTgyLDYgKzE4
NCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRSZW5kZXJJbmxpbmVBbHdheXNDcmVhdGVz
TGluZUJveGVzKGJvb2wgYikgeyBtX3JlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXMg
PSBiOyB9CiAgICAgYm9vbCByZW5kZXJJbmxpbmVBbHdheXNDcmVhdGVzTGluZUJveGVzKCkgY29u
c3QgeyByZXR1cm4gbV9yZW5kZXJJbmxpbmVBbHdheXNDcmVhdGVzTGluZUJveGVzOyB9CiAKKyAg
ICBzdGF0aWMgYm9vbCBoYXNDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2Jq
ZWN0Kik7CisgICAgc3RhdGljIENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJl
cihjb25zdCBSZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVDb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7CisgICAgc3RhdGljIHZvaWQgYWRk
Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCosIENvbnRyb2xTdGF0
ZXMqKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIG5vZGUoKSBjb25zdCA9IGRlbGV0ZTsKICAgICB2
b2lkIG5vblBzZXVkb05vZGUoKSBjb25zdCA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDU4ZWYzN2FlYzU3ZGIwNzcxZWQ1ZGE1MmUyOWVjY2U4
NDJlOTc4MjMuLmQwMjdlMDM0NDk0OGUxZmRlYzY3ZDNiZTg2MDU4ODYxODc1MWNhM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMjMsNiArMjMsNyBAQAog
I2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgi
CisjaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRmlsZUxpc3QuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCkBAIC0yNjIsNyArMjYz
LDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgIH0KIH0KIAotYm9vbCBSZW5kZXJUaGVt
ZTo6cGFpbnQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWU6OnBhaW50KFJlbmRlck9iamVjdCogbywg
Q29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgLy8gSWYgcGFpbnRpbmcgaXMgZGlzYWJsZWQsIGJ1
dCB3ZSBhcmVuJ3QgdXBkYXRpbmcgY29udHJvbCB0aW50cywgdGhlbiBqdXN0IGJhaWwuCiAgICAg
Ly8gSWYgd2UgYXJlIHVwZGF0aW5nIGNvbnRyb2wgdGludHMsIGp1c3Qgc2NoZWR1bGUgYSByZXBh
aW50IGlmIHRoZSB0aGVtZSBzdXBwb3J0cyB0aW50aW5nCkBAIC0yODYsNyArMjg3LDggQEAgYm9v
bCBSZW5kZXJUaGVtZTo6cGFpbnQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UmUKICAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgogICAgIGNh
c2UgQnV0dG9uUGFydDoKICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6Ci0gICAgICAgIG1f
dGhlbWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvKSwgY29uc3RfY2Fz
dDxHcmFwaGljc0NvbnRleHQqPihwYWludEluZm8uY29udGV4dCksIHIsIG8tPnN0eWxlKCkuZWZm
ZWN0aXZlWm9vbSgpLCAmby0+dmlldygpLmZyYW1lVmlldygpKTsKKyAgICAgICAgdXBkYXRlQ29u
dHJvbFN0YXRlc0ZvclJlbmRlcmVyKG8sIGNvbnRyb2xTdGF0ZXMpOworICAgICAgICBtX3RoZW1l
LT5wYWludChwYXJ0LCBjb250cm9sU3RhdGVzLCBjb25zdF9jYXN0PEdyYXBoaWNzQ29udGV4dCo+
KHBhaW50SW5mby5jb250ZXh0KSwgciwgby0+c3R5bGUoKS5lZmZlY3RpdmVab29tKCksICZvLT52
aWV3KCkuZnJhbWVWaWV3KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgYnJlYWs7CkBAIC03MTMsNyArNzE1LDggQEAgYm9vbCBSZW5kZXJUaGVtZTo6aXND
b250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgQm9yZGVyRGF0YSYg
Ym8KIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFJlcGFpbnRSZWN0KGNvbnN0IFJlbmRlck9iamVj
dCogbywgSW50UmVjdCYgcikKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQotICAgIG1fdGhlbWUtPmlu
ZmxhdGVDb250cm9sUGFpbnRSZWN0KG8tPnN0eWxlKCkuYXBwZWFyYW5jZSgpLCBjb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIobyksIHIsIG8tPnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICBD
b250cm9sU3RhdGVzIHN0YXRlcyhleHRyYWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG8pKTsK
KyAgICBtX3RoZW1lLT5pbmZsYXRlQ29udHJvbFBhaW50UmVjdChvLT5zdHlsZSgpLmFwcGVhcmFu
Y2UoKSwgJnN0YXRlcywgciwgby0+c3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0obyk7CiAgICAgVU5VU0VEX1BBUkFNKHIpOwpAQCAtNzI1LDE0ICs3Mjgs
MTQgQEAgYm9vbCBSZW5kZXJUaGVtZTo6c3VwcG9ydHNGb2N1c1JpbmcoY29uc3QgUmVuZGVyU3R5
bGUqIHN0eWxlKSBjb25zdAogICAgIHJldHVybiAoc3R5bGUtPmhhc0FwcGVhcmFuY2UoKSAmJiBz
dHlsZS0+YXBwZWFyYW5jZSgpICE9IFRleHRGaWVsZFBhcnQgJiYgc3R5bGUtPmFwcGVhcmFuY2Uo
KSAhPSBUZXh0QXJlYVBhcnQgJiYgc3R5bGUtPmFwcGVhcmFuY2UoKSAhPSBNZW51bGlzdEJ1dHRv
blBhcnQgJiYgc3R5bGUtPmFwcGVhcmFuY2UoKSAhPSBMaXN0Ym94UGFydCk7CiB9CiAKLWJvb2wg
UmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdlZChSZW5kZXJPYmplY3QqIG8sIENvbnRyb2xTdGF0ZSBz
dGF0ZSkgY29uc3QKK2Jvb2wgUmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdlZChSZW5kZXJPYmplY3Qq
IG8sIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZSkgY29uc3QKIHsKICAgICAvLyBEZWZhdWx0
IGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhlIGNvbnRyb2xzIGRvbid0IHJlc3BvbmQgdG8gY2hh
bmdlcyBpbiA6aG92ZXIgc3RhdGUKLSAgICBpZiAoc3RhdGUgPT0gSG92ZXJTdGF0ZSAmJiAhc3Vw
cG9ydHNIb3Zlcigmby0+c3R5bGUoKSkpCisgICAgaWYgKHN0YXRlID09IENvbnRyb2xTdGF0ZXM6
OkhvdmVyU3RhdGUgJiYgIXN1cHBvcnRzSG92ZXIoJm8tPnN0eWxlKCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBBc3N1bWUgcHJlc3NlZCBzdGF0ZSBpcyBvbmx5IHJlc3BvbmRl
ZCB0byBpZiB0aGUgY29udHJvbCBpcyBlbmFibGVkLgotICAgIGlmIChzdGF0ZSA9PSBQcmVzc2Vk
U3RhdGUgJiYgIWlzRW5hYmxlZChvKSkKKyAgICBpZiAoc3RhdGUgPT0gQ29udHJvbFN0YXRlczo6
UHJlc3NlZFN0YXRlICYmICFpc0VuYWJsZWQobykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIFJlcGFpbnQgdGhlIGNvbnRyb2wuCkBAIC03NDAsMzQgKzc0Myw0MCBAQCBib29sIFJl
bmRlclRoZW1lOjpzdGF0ZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiBvLCBDb250cm9sU3RhdGUgc3Rh
dGUpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNvbnRyb2xTdGF0ZXMgUmVuZGVyVGhl
bWU6OmNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0
Cit2b2lkIFJlbmRlclRoZW1lOjp1cGRhdGVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyT2JqZWN0KiBvLCBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzKSBjb25zdAogewot
ICAgIENvbnRyb2xTdGF0ZXMgcmVzdWx0ID0gMDsKKyAgICBDb250cm9sU3RhdGVzIG5ld1N0YXRl
cyA9IGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobyk7CisgICAgY29udHJvbFN0YXRl
cy0+c2V0U3RhdGVzKG5ld1N0YXRlcy5zdGF0ZXMoKSk7Cit9CisKK0NvbnRyb2xTdGF0ZXM6OlN0
YXRlcyBSZW5kZXJUaGVtZTo6ZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBS
ZW5kZXJPYmplY3QqIG8pIGNvbnN0Cit7CisgICAgQ29udHJvbFN0YXRlczo6U3RhdGVzIHN0YXRl
cyA9IDA7CiAgICAgaWYgKGlzSG92ZXJlZChvKSkgewotICAgICAgICByZXN1bHQgfD0gSG92ZXJT
dGF0ZTsKKyAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OkhvdmVyU3RhdGU7CiAgICAg
ICAgIGlmIChpc1NwaW5VcEJ1dHRvblBhcnRIb3ZlcmVkKG8pKQotICAgICAgICAgICAgcmVzdWx0
IHw9IFNwaW5VcFN0YXRlOworICAgICAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OlNw
aW5VcFN0YXRlOwogICAgIH0KICAgICBpZiAoaXNQcmVzc2VkKG8pKSB7Ci0gICAgICAgIHJlc3Vs
dCB8PSBQcmVzc2VkU3RhdGU7CisgICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVzOjpQcmVz
c2VkU3RhdGU7CiAgICAgICAgIGlmIChpc1NwaW5VcEJ1dHRvblBhcnRQcmVzc2VkKG8pKQotICAg
ICAgICAgICAgcmVzdWx0IHw9IFNwaW5VcFN0YXRlOworICAgICAgICAgICAgc3RhdGVzIHw9IENv
bnRyb2xTdGF0ZXM6OlNwaW5VcFN0YXRlOwogICAgIH0KICAgICBpZiAoaXNGb2N1c2VkKG8pICYm
IG8tPnN0eWxlKCkub3V0bGluZVN0eWxlSXNBdXRvKCkpCi0gICAgICAgIHJlc3VsdCB8PSBGb2N1
c1N0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6Rm9jdXNTdGF0ZTsKICAg
ICBpZiAoaXNFbmFibGVkKG8pKQotICAgICAgICByZXN1bHQgfD0gRW5hYmxlZFN0YXRlOworICAg
ICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlOwogICAgIGlmIChpc0No
ZWNrZWQobykpCi0gICAgICAgIHJlc3VsdCB8PSBDaGVja2VkU3RhdGU7CisgICAgICAgIHN0YXRl
cyB8PSBDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGU7CiAgICAgaWYgKGlzUmVhZE9ubHlDb250
cm9sKG8pKQotICAgICAgICByZXN1bHQgfD0gUmVhZE9ubHlTdGF0ZTsKKyAgICAgICAgc3RhdGVz
IHw9IENvbnRyb2xTdGF0ZXM6OlJlYWRPbmx5U3RhdGU7CiAgICAgaWYgKGlzRGVmYXVsdChvKSkK
LSAgICAgICAgcmVzdWx0IHw9IERlZmF1bHRTdGF0ZTsKKyAgICAgICAgc3RhdGVzIHw9IENvbnRy
b2xTdGF0ZXM6OkRlZmF1bHRTdGF0ZTsKICAgICBpZiAoIWlzQWN0aXZlKG8pKQotICAgICAgICBy
ZXN1bHQgfD0gV2luZG93SW5hY3RpdmVTdGF0ZTsKKyAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xT
dGF0ZXM6OldpbmRvd0luYWN0aXZlU3RhdGU7CiAgICAgaWYgKGlzSW5kZXRlcm1pbmF0ZShvKSkK
LSAgICAgICAgcmVzdWx0IHw9IEluZGV0ZXJtaW5hdGVTdGF0ZTsKLSAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6SW5kZXRlcm1pbmF0ZVN0YXRlOwor
ICAgIHJldHVybiBzdGF0ZXM7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWU6OmlzQWN0aXZlKGNvbnN0
IFJlbmRlck9iamVjdCogbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmgKaW5kZXggNjg1NDYzNDY3Mzg5ODFjM2EzYWEyZGM0ZmJmOTk3YTUxNzA2ZmRiOC4uOWJkODBl
OThjMWEzYjQxNDA4Yzg3ZTMwNmFlNTBlYWQyZGVjYjM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgUmVuZGVyVGhlbWVf
aAogI2RlZmluZSBSZW5kZXJUaGVtZV9oCiAKKyNpbmNsdWRlICJDb250cm9sU3RhdGVzLmgiCiAj
aWYgVVNFKE5FV19USEVNRSkKICNpbmNsdWRlICJUaGVtZS5oIgogI2Vsc2UKQEAgLTc4LDcgKzc5
LDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB0byBwYWludCB0aGUg
d2lkZ2V0IGFzIGEgYmFja2dyb3VuZCBvZiB0aGUgUmVuZGVyT2JqZWN0LiAgQSB3aWRnZXQncyBm
b3JlZ3JvdW5kLCBlLmcuLCB0aGUKICAgICAvLyB0ZXh0IG9mIGEgYnV0dG9uLCBpcyBhbHdheXMg
cmVuZGVyZWQgYnkgdGhlIGVuZ2luZSBpdHNlbGYuICBUaGUgYm9vbGVhbiByZXR1cm4gdmFsdWUg
aW5kaWNhdGVzCiAgICAgLy8gd2hldGhlciB0aGUgQ1NTIGJvcmRlci9iYWNrZ3JvdW5kIHNob3Vs
ZCBhbHNvIGJlIHBhaW50ZWQuCi0gICAgYm9vbCBwYWludChSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgYm9vbCBwYWludChSZW5kZXJPYmplY3Qq
LCBDb250cm9sU3RhdGVzKiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAg
IGJvb2wgcGFpbnRCb3JkZXJPbmx5KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKICAgICBib29sIHBhaW50RGVjb3JhdGlvbnMoUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCkBAIC0xMjYsNyArMTI3LDcgQEAg
cHVibGljOgogCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIGEgcmVsZXZh
bnQgc3RhdGUgY2hhbmdlcyBvbiBhIHBhcnRpY3VsYXIgdGhlbWVkIG9iamVjdCwgZS5nLiwgdGhl
IG1vdXNlIGJlY29tZXMgcHJlc3NlZAogICAgIC8vIG9yIGEgY29udHJvbCBiZWNvbWVzIGRpc2Fi
bGVkLgotICAgIHZpcnR1YWwgYm9vbCBzdGF0ZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiwgQ29udHJv
bFN0YXRlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc3RhdGVDaGFuZ2VkKFJlbmRlck9iamVj
dCosIENvbnRyb2xTdGF0ZXM6OlN0YXRlcykgY29uc3Q7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBp
cyBjYWxsZWQgd2hlbmV2ZXIgdGhlIHRoZW1lIGNoYW5nZXMgb24gdGhlIHN5c3RlbSBpbiBvcmRl
ciB0byBmbHVzaCBjYWNoZWQgcmVzb3VyY2VzIGZyb20gdGhlCiAgICAgLy8gb2xkIHRoZW1lLgpA
QCAtMzY5LDggKzM3MCw4IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiBwdWJsaWM6Ci0gICAgLy8g
TWV0aG9kcyBmb3Igc3RhdGUgcXVlcnlpbmcKLSAgICBDb250cm9sU3RhdGVzIGNvbnRyb2xTdGF0
ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0OworICAgIHZvaWQgdXBk
YXRlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCosIENvbnRyb2xT
dGF0ZXMqKSBjb25zdDsKKyAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMgZXh0cmFjdENvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICBib29sIGlz
QWN0aXZlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIGJvb2wgaXNDaGVja2VkKGNv
bnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIGJvb2wgaXNJbmRldGVybWluYXRlKGNvbnN0
IFJlbmRlck9iamVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCmluZGV4IDA1NmU5ZDQ3NmY0ODQ0NDRhNWZlMWQyMGIxMDU3ZDg0ZjdiMDY5Yjku
LmFkNTNiNGNhM2Q3ZTcyMTAzYjIyOTMyZjQzNDliOWY0NzhkMzcwZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTIxMiw3ICsyMTIsOCBAQCBSZW5k
ZXJUaGVtZU1hYzo6flJlbmRlclRoZW1lTWFjKCkKIAogTlNWaWV3KiBSZW5kZXJUaGVtZU1hYzo6
ZG9jdW1lbnRWaWV3Rm9yKFJlbmRlck9iamVjdCogbykgY29uc3QKIHsKLSAgICByZXR1cm4gVGhl
bWVNYWM6OmVuc3VyZWRWaWV3KCZvLT52aWV3KCkuZnJhbWVWaWV3KCksIGNvbnRyb2xTdGF0ZXNG
b3JSZW5kZXJlcihvKSk7CisgICAgQ29udHJvbFN0YXRlcyBzdGF0ZXMoZXh0cmFjdENvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcihvKSk7CisgICAgcmV0dXJuIFRoZW1lTWFjOjplbnN1cmVkVmlldygm
by0+dmlldygpLmZyYW1lVmlldygpLCAmc3RhdGVzKTsKIH0KIAogI2lmIEVOQUJMRShWSURFTykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228074</attachid>
            <date>2014-03-28 12:16:26 -0700</date>
            <delta_ts>2014-05-17 01:43:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130736-20140329061532.patch</filename>
            <type>text/plain</type>
            <size>56090</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE2N2E0Mzc0OGRiYThl
MmY5ODdkMzMwOWI2OGIzNWQyZmEzZTU0ZS4uM2I0MzFiMzNmMmU2ZDJmOTYzZWM2Mjg4M2FjYmNl
MTI0ZDcxYmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDE0LTAzLTI3ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGZvcm0gY29udHJv
bHMgdGhhdCBtYXkgbmVlZCBpbmNyZW1lbnRhbCByZWRyYXcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDczNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGFyZSBzb21lIGZvcm0gY29udHJvbHMg
dGhhdCBjaGFuZ2UgYXBwZWFyYW5jZQorICAgICAgICBvdmVyIHRpbWUuIEV4cGFuZCB0aGUgQ29u
dHJvbFN0YXRlcyBzbyB0aGF0IGl0IGNhbgorICAgICAgICBob2xkIGEgbGl0dGxlIG1vcmUgaW5m
b3JtYXRpb24sIGluY2x1ZGluZyBhIHJlZmVyZW5jZQorICAgICAgICB0byB0aGUgbmF0aXZlIGZv
cm0gY29udHJvbC4gVGhpcyB3YXkgdGhlIFRoZW1lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGNh
biByZXBhaW50IHRoZSBleGlzdGluZyBuYXRpdmUgY29udHJvbCBpZiBuZWNlc3NhcnkuIEF0Cisg
ICAgICAgIGxlYXN0IFRoZW1lTWFjIHdhcyByZXVzaW5nIGEgc2luZ2xlIGNvbnRyb2wgZm9yIHBh
aW50aW5nCisgICAgICAgIGFsbCBpbnN0YW5jZXMgYmVmb3JlIHRoaXMgY2hhbmdlLgorCisgICAg
ICAgIFNpbmNlIENvbnRyb2xTdGF0ZXMgaXMgbm93IGEgY2xhc3MsIHBhc3MgaXQgYXJvdW5kIGJ5
CisgICAgICAgIHJlZmVyZW5jZS4KKworICAgICAgICBUaGUgb3RoZXIgbWFqb3IgY2hhbmdlIGlz
IGtlZXBpbmcgYSB0aW1lciB0byB0cmlnZ2VyIGEKKyAgICAgICAgcmVwYWludCBpbiBSZW5kZXJC
b3gsIHdoaWNoIGhhcHBlbnMgaWYgVGhlbWUvUmVuZGVyVGhlbWUKKyAgICAgICAgdXBkYXRlIHRo
ZSBDb250cm9sU3RhdGUgdG8gcmVxdWVzdCBvbmUuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBDb250cm9sU3RhdGVzLmguCisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOiBEaXR0by4KKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBY3RpdmUpOiBTdGF0ZXMg
bm93IHdpdGhpbiBDb250cm9sU3RhdGVzLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0
SG92ZXJlZCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hh
bmdlZCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNhYmxlZFN0YXRl
Q2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6cmVhZE9ubHlBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNl
dENoZWNrZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNl
dEluZGV0ZXJtaW5hdGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaDogTmV3IGZpbGUu
IENvcGllZCB0aGUgb2xkIENvbnRyb2xTdGF0ZXMgZW51bSwKKyAgICAgICAgYW5kIGFkZGVkIGFj
Y2Vzc29ycyB0byBob2xkIHdoZXRoZXIgb3Igbm90IHRoZSBzdGF0ZSBpcyBkaXJ0eSwgYW5kCisg
ICAgICAgIGEgcmVmZXJlbmNlIHRvIGEgcGxhdGZvcm0gY29udHJvbCBpZiBuZWNlc3NhcnkuCisg
ICAgICAgICogcGxhdGZvcm0vVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpzZWxl
Y3Rpb25Db2xvcik6IFBhc3MgQ29udHJvbFN0YXRlcyBwb2ludGVyLgorICAgICAgICAoV2ViQ29y
ZTo6VGhlbWU6OnBhaW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6aW5mbGF0
ZUNvbnRyb2xQYWludFJlY3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZVR5cGVz
Lmg6IFJlbW92ZSBDb250cm9sU3RhdGVzIGVudW0uCisgICAgICAgICogcGxhdGZvcm0vZWZsL1Jl
bmRlclRoZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphcHBs
eUVkamVTdGF0ZUZyb21Gb3JtKTogUGFzcyBDb250cm9sU3RhdGVzIHBvaW50ZXIuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBhcnQpOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaDogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbToKKyAgICAgICAgKC1bV2ViQ29yZVRoZW1lVmlldyBhZGRTdWJ2aWV3Ol0pOiBOZXcg
bWV0aG9kIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBhZGQgQ0FMYXllciBiYWNrZWQKKyAgICAgICAg
dmlld3MgdG8gdGhlIE5TVmlldyB3ZSdyZSB1c2luZyBmb3IgcmVuZGVyaW5nLgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlU3RhdGVzKTogVXNlIHRoZSBwcml2YXRlIGFuaW1hdGVkIHNldHRlcnMg
aWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydENvbnRyb2xTdGF0ZXNUb1Ro
ZW1lRHJhd1N0YXRlKTogTmFtZXNwYWNpbmcuCisgICAgICAgIChXZWJDb3JlOjpjb25maWd1cmVD
aGVja2JveCk6IFBhc3MgQ29udHJvbFN0YXRlcyBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ2hlY2tib3hDZWxsKTogTmV3IGhlbHBlciBzaW5jZSB3ZSdyZSBjcmVhdGluZyBub24t
c3RhdGljIGNlbGxzLgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQ2hlY2tib3hDZWxsKTogVGhl
IG9sZCBzdGF0aWMgcHJvdmlkZXIsIHJlbmFtZWQuCisgICAgICAgIChXZWJDb3JlOjpwYWludENo
ZWNrYm94KTogQ2hlY2sgaWYgdGhpcyBwYWludCB3YXMgdHJpZ2dlcmVkIGJ5IGEgc3RhdGUgY2hh
bmdlCisgICAgICAgIG9yIGFuIGFuaW1hdGlvbi4gVXBkYXRlIHRoZSBDb250cm9sU3RhdGVzIGlm
IHdlIG5lZWQgdG8gYmUgcmVwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6cmFkaW8pOiBQYXJh
bWV0ZXIgaXMgbm93IENvbnRyb2xTdGF0ZXMqLgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRSYWRp
byk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2V0VXBCdXR0b25DZWxsKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpidXR0b24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBhaW50
QnV0dG9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjplbnN1cmVkVmlldyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6cGFpbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrYm94KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6UmVuZGVyQm94KTogSW5pdGlhbGl6ZSB0
aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6flJlbmRlckJveCk6IFN0b3AgYW55
IHBlbmRpbmcgdGltZXJzIGFuZCBkZWxldGUgdGhlIENvbnRyb2xTdGF0ZSBpZiBuZWNlc3Nhcnku
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOiBDcmVh
dGUgYSBDb250cm9sU3RhdGVzIGlmIG5lZWRlZC4gUGFpbnQsIGFuZCBzdGFydCB0aGUgcmVwYWlu
dAorICAgICAgICB0aW1lciBpZiB0aGUgQ29udHJvbFN0YXRlcyBzYXkgd2Ugc2hvdWxkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpyZXBhaW50VGltZXJGaXJlZCk6IENhbGwgcmVwYWlu
dCB3aGVuIHRoZSB0aW1lciBmaXJlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6
IEFkZCBhIHRpbWVyIGZvciByZXBhaW50aW5nLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCk6
IEEgc3RhdGljIEhhc2hNYXAgdGhhdCBhc3NvY2lhdGVzIHJlbmRlcmVycyB3aXRoIENvbnRyb2xT
dGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpoYXNDb250cm9sU3RhdGVz
Rm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Y29udHJvbFN0
YXRlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnJlbW92
ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50OjphZGRDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludCk6IFVzZSBhIHBvaW50ZXIgdG8gQ29u
dHJvbFN0YXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RSZXBhaW50
UmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdl
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnVwZGF0ZUNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcik6IE5ldyBtZXRob2QgdGhhdCBqdXN0IHVwZGF0ZXMgdGhlIHN0YXRl
cyBwYXJ0IG9mIENvbnRyb2xTdGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6
ZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6IE5ldyBtZXRob2QgdGhhdCBjYWxjdWxh
dGVzIHRoZSBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpjb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjpkb2N1bWVudFZpZXdGb3IpOiBVc2UgYSBDb250cm9sU3Rh
dGVzIHBvaW50ZXIuCisKIDIwMTQtMDMtMjcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCB1bm5lZWRlZCAibXV0YWJsZSIga2V5d29y
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggZjIxMmY3ODExMTA2ZTZiZjI5Nzc2ZTZlZTQzNTFhODhiYmZmM2E5Yy4uODc1YWU5NDk1NDc1
NzQyMjAwZGMyZTJjN2NjNGJmMDg4NGM3Mzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xOTA4NCw2ICsxOTA4NCw3IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDb250ZW50VHlwZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udGV4dE1lbnUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENvbnRleHRNZW51SXRlbS5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udHJvbFN0YXRlcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29va2llc1N0cmF0ZWd5LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDcm9zc1RocmVhZENvcGllci5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ3Vyc29yLmgiIC8+CkBAIC0yMTEz
MCw0ICsyMTEzMSw0IEBACiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+
CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXEJ1aWxkQ3VzdG9taXphdGlv
bnNcbWFzbS50YXJnZXRzIiAvPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA0NGY2NTBi
OWEyOWM2OWM3ZDdmN2MzZThiOTc3MTA2YmYwMGE2OWM4Li4wZWQzZTA4MDQwZjY2YWYyMWVhNGYx
Yjc5YTAxYjFiNjU1ZjZiMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03OTY5LDYgKzc5NjksOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udGV4dE1lbnVJdGVtLmgiPgog
ICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQ29udHJvbFN0YXRlcy5oIj4KKyAgICAgIDxG
aWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENvb2tpZXNTdHJhdGVneS5oIj4KICAgICAgIDxGaWx0ZXI+
cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTE1MTQ3LDQgKzE1MTUwLDQg
QEAKICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cd2luPC9GaWx0ZXI+CiAgICAgPC9NQVNNPgogICA8
L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1By
b2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNTAzMjBiMmM5ZTgzNzQxZTY2M2U3NTIwZDhlMjZhN2MwYWQyNjdlMC4uNGI1
YjhhMGFiYWVkOWVlNzIxYTE2OTdkNDdiNGZhNTMwZDRiYTg1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODAzNCw2ICs4MDM0
LDcgQEAKIAkJMzEwNzhDQzQxODgwQTZBNjAwODA5OURDIC8qIE9FU1RleHR1cmVIYWxmRmxvYXRM
aW5lYXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE9FU1RleHR1cmVIYWxmRmxvYXRMaW5l
YXIuaWRsOyBwYXRoID0gY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA3OENDNTE4ODBBQUFBMDA4MDk5REMgLyogSlNP
RVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxMDc4Q0M2MTg4MEFBQUEwMDgwOTlEQyAvKiBKU09FU1RleHR1cmVI
YWxmRmxvYXRMaW5lYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPRVNU
ZXh0dXJlSGFsZkZsb2F0TGluZWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
MUMwOEJDMThFMzVENjgwMEI2NTYxNSAvKiBDb250cm9sU3RhdGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRyb2xTdGF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzEyODhFNkUwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lUnVs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NLZXlm
cmFtZVJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTI4OEU2RjBFMzAw
NUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU0tleWZyYW1lUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMTI4OEU3MDBFMzAwNUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJh
bWVzUnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODc4
LDYgKzIwODc5LDcgQEAKIAkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkzMTFDMDhCQzE4
RTM1RDY4MDBCNjU2MTUgLyogQ29udHJvbFN0YXRlcy5oICovLAogCQkJCTQ5RTkxMkE0MEVGQUM4
RTYwMDlEMENBRiAvKiBhbmltYXRpb24gKi8sCiAJCQkJRkQzMTYwNDAxMkIwMjZBMzAwQzFBMzU5
IC8qIGF1ZGlvICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCBhZTI2NTkyNDlhOGQ3NTIxOTM0MDc4Y2FlZTc3YTAwY2I1
NDZiYTcwLi44ODkwMGRmZmE1MDg2NzJlYzU3M2U3M2FhOGVjZjM5N2Y2YmZkMWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC00ODcsNyArNDg3LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRBY3Rp
dmUoYm9vbCBmbGFnLCBib29sIHBhdXNlKQogICAgIGlmIChyZWFjdHNUb1ByZXNzKQogICAgICAg
ICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKLSAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5o
YXNBcHBlYXJhbmNlKCkgJiYgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVy
ZXIoKSwgUHJlc3NlZFN0YXRlKSkKKyAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBl
YXJhbmNlKCkgJiYgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwg
Q29udHJvbFN0YXRlczo6UHJlc3NlZFN0YXRlKSkKICAgICAgICAgcmVhY3RzVG9QcmVzcyA9IHRy
dWU7CiAKICAgICAvLyBUaGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgYSBmZWF0
dXJlIHRoYXQgb25seSB3b3JrcyBpZiB0aGUKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIEVsZW1l
bnQ6OnNldEhvdmVyZWQoYm9vbCBmbGFnKQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7
CiAKICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAg
IHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUp
OworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBD
b250cm9sU3RhdGVzOjpIb3ZlclN0YXRlKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRv
Vmlldyhib29sIGFsaWduVG9Ub3ApIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcAppbmRleCA2MTAxZjY0YmQ2OGZjZTIyODAwYjQ2NzUzMWMyOTNiMmIxYzQxMjA4Li40
OWE4NzgzY2M5M2M4NmRjODg1MTI1MTFjZmYxNjdiMjRhNmY1MTRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTc0NSw3ICsxNzQ1LDcgQEAgdm9pZCBG
cmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKCkKICAgICAgICAgZWxl
bWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBpZiAocmVuZGVyZXIg
JiYgcmVuZGVyZXItPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJl
bmRlcmVyLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlciwgRm9jdXNTdGF0ZSk7CisgICAg
ICAgICAgICAgICAgcmVuZGVyZXItPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyLCBDb250
cm9sU3RhdGVzOjpGb2N1c1N0YXRlKTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDNiMjVjYjBkM2M4ZGRl
NWExMmMzNTY4YmRkZjY0ZmY2MWQ2ZGYxY2QuLjlhMTIxYzgyYWY2MzAwMDY4ODY5YjYyMzJmNjI3
ZGY4MzkwMDY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNvbnRyb2xTdGF0
ZXMuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTE1NCw3ICsxNTUsNyBAQCB2b2lkIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKICAgICBzZXROZWVkc1dpbGxWYWxp
ZGF0ZUNoZWNrKCk7CiAgICAgZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3RvckRpc2Fi
bGVkIHwgQWZmZWN0ZWRTZWxlY3RvckVuYWJsZWQpOwogICAgIGlmIChyZW5kZXJlcigpICYmIHJl
bmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOworICAgICAgICBy
ZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVz
OjpFbmFibGVkU3RhdGUpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRP
bmx5QXR0cmlidXRlQ2hhbmdlZCgpCkBAIC0xNjIsNyArMTYzLDcgQEAgdm9pZCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpyZWFkT25seUF0dHJpYnV0ZUNoYW5nZWQoKQogICAgIHNldE5lZWRzV2ls
bFZhbGlkYXRlQ2hlY2soKTsKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgaWYgKHJl
bmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAg
IHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFJlYWRPbmx5U3Rh
dGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigp
LCBDb250cm9sU3RhdGVzOjpSZWFkT25seVN0YXRlKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNThhOTQwY2Q2MTBlOTAyNTgxOTMwMmZlYjI4N2Uz
ZDI0ZTBkYjdhOC4uODA0MDY5Y2U0Mzc0ZmI2OWQwMzExNWQ1NWRlNzI2ODhmMDNkNTVhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC04NTksNyArODU5LDcg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVja2VkKGJvb2wgbm93Q2hlY2tlZCwgVGV4
dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEIKICAgICBpZiAoQ2hlY2tlZFJhZGlvQnV0dG9ucyog
YnV0dG9ucyA9IGNoZWNrZWRSYWRpb0J1dHRvbnMoKSkKICAgICAgICAgICAgIGJ1dHRvbnMtPnVw
ZGF0ZUNoZWNrZWRTdGF0ZSh0aGlzKTsKICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigp
LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5z
dGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIo
KS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6Q2hlY2tl
ZFN0YXRlKTsKICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKIAogICAgIC8vIElkZWFsbHkg
d2UnZCBkbyB0aGlzIGZyb20gdGhlIHJlbmRlciB0cmVlIChtYXRjaGluZwpAQCAtODkzLDcgKzg5
Myw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0ZShib29sIG5ld1Zh
bHVlKQogICAgIGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JJbmRldGVybWluYXRl
KTsKIAogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFy
YW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJl
cigpLCBDaGVja2VkU3RhdGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hh
bmdlZChyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGUpOwogfQogCiBpbnQg
SFRNTElucHV0RWxlbWVudDo6c2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuY3BwCmluZGV4IDllMzZmYTljZjRkNjYxYWFmMGJjM2JkZGYzN2U5ZTUxMjRk
ZDNhODEuLjQ5ZjQ4YmYzODFlOWI0NTA0OTQ0ZmJhMDU0MDVhOTlkNDc5MzE2OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
dm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICAgICAgaWYgKG9sZERpc2FibGVkICE9IG1fZGlz
YWJsZWQpIHsKICAgICAgICAgICAgIGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JE
aXNhYmxlZCB8IEFmZmVjdGVkU2VsZWN0b3JFbmFibGVkKTsKICAgICAgICAgICAgIGlmIChyZW5k
ZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAg
ICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJs
ZWRTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5n
ZWQocmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAobmFtZSA9PSBzZWxlY3RlZEF0dHIpIHsKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgZG9lc24ndCBtYXRjaCB3aGF0IHRoZSBIVE1MIHNwZWNpZmljYXRpb24gc2F5cy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmMwNmExMGJi
MTkwMTM1OTgwOGRiNTQxMjhmMDVkYTI5ZmNmZDZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udHJvbFN0YXRlcy5oCkBAIC0wLDAgKzEsMTExIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb250cm9s
U3RhdGVzX2gKKyNkZWZpbmUgQ29udHJvbFN0YXRlc19oCisKKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2lm
bmRlZiBfX09CSkNfXwordHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOworI2VuZGlmCit0
eXBlZGVmIGlkIFBsYXRmb3JtQ29udHJvbEluc3RhbmNlOworI2VuZGlmCisKK2NsYXNzIENvbnRy
b2xTdGF0ZXMgeworcHVibGljOgorICAgIGVudW0geworICAgICAgICBIb3ZlclN0YXRlID0gMSwK
KyAgICAgICAgUHJlc3NlZFN0YXRlID0gMSA8PCAxLAorICAgICAgICBGb2N1c1N0YXRlID0gMSA8
PCAyLAorICAgICAgICBFbmFibGVkU3RhdGUgPSAxIDw8IDMsCisgICAgICAgIENoZWNrZWRTdGF0
ZSA9IDEgPDwgNCwKKyAgICAgICAgUmVhZE9ubHlTdGF0ZSA9IDEgPDwgNSwKKyAgICAgICAgRGVm
YXVsdFN0YXRlID0gMSA8PCA2LAorICAgICAgICBXaW5kb3dJbmFjdGl2ZVN0YXRlID0gMSA8PCA3
LAorICAgICAgICBJbmRldGVybWluYXRlU3RhdGUgPSAxIDw8IDgsCisgICAgICAgIFNwaW5VcFN0
YXRlID0gMSA8PCA5LCAvLyBTdWItc3RhdGUgZm9yIEhvdmVyU3RhdGUgYW5kIFByZXNzZWRTdGF0
ZS4KKyAgICAgICAgQWxsU3RhdGVzID0gMHhmZmZmZmZmZgorICAgIH07CisKKyAgICB0eXBlZGVm
IHVuc2lnbmVkIFN0YXRlczsKKworICAgIENvbnRyb2xTdGF0ZXMoU3RhdGVzIHN0YXRlcykKKyAg
ICAgICAgOiBtX3N0YXRlcyhzdGF0ZXMpCisgICAgICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkK
KyAgICAgICAgLCBtX25lZWRzUmVwYWludChmYWxzZSkKKyAgICAgICAgLCBtX2lzRGlydHkoZmFs
c2UpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICwgbV9jb250cm9sSW5zdGFuY2UobnVs
bHB0cikKKyNlbmRpZgorICAgIHsKKyAgICB9CisKKyAgICBDb250cm9sU3RhdGVzKCkKKyAgICAg
ICAgOiBDb250cm9sU3RhdGVzKDApCisgICAgeworICAgIH0KKworICAgIH5Db250cm9sU3RhdGVz
KCkKKyAgICB7CisgICAgfQorCisgICAgU3RhdGVzIHN0YXRlcygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGVzOyB9CisgICAgdm9pZCBzZXRTdGF0ZXMoU3RhdGVzIG5ld1N0YXRlcykKKyAgICB7Cisg
ICAgICAgIGlmIChuZXdTdGF0ZXMgPT0gbV9zdGF0ZXMpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fc3RhdGVzID0gbmV3U3RhdGVzOworICAgICAgICBtX2lzRGlydHkgPSBtX2luaXRp
YWxpemVkOworICAgICAgICBtX2luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBib29s
IG5lZWRzUmVwYWludCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNSZXBhaW50OyB9CisgICAgdm9p
ZCBzZXROZWVkc1JlcGFpbnQoYm9vbCByKSB7IG1fbmVlZHNSZXBhaW50ID0gcjsgfQorCisgICAg
Ym9vbCBpc0RpcnR5KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcnR5OyB9CisgICAgdm9pZCBzZXRE
aXJ0eShib29sIGQpIHsgbV9pc0RpcnR5ID0gZDsgfQorCisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgUGxhdGZvcm1Db250cm9sSW5zdGFuY2UgcGxhdGZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1
cm4gbV9jb250cm9sSW5zdGFuY2UuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFBsYXRmb3JtQ29udHJv
bChQbGF0Zm9ybUNvbnRyb2xJbnN0YW5jZSBpbnN0YW5jZSkgeyBtX2NvbnRyb2xJbnN0YW5jZSA9
IGluc3RhbmNlOyB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBTdGF0ZXMgbV9zdGF0ZXM7Cisg
ICAgYm9vbCBtX2luaXRpYWxpemVkOworICAgIGJvb2wgbV9uZWVkc1JlcGFpbnQ7CisgICAgYm9v
bCBtX2lzRGlydHk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPFBsYXRmb3Jt
Q29udHJvbEluc3RhbmNlPiBtX2NvbnRyb2xJbnN0YW5jZTsKKyNlbmRpZgorfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCmluZGV4IDUwNTA0NmM0ZGU4N2VjNmFkZWIzYjgx
OGVhZWNkMDk3YmJhZjBjM2UuLmZiMDFhN2ExYzVlNDgxNmE2ZTA0NTAzYTYyNzUxMzAyNmQyNGE4
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBU
aGVtZV9oCiAKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvbnRyb2xTdGF0ZXMuaCIK
ICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxlbmd0
aEJveC5oIgpAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvbnRy
b2xEcmF3c0ZvY3VzT3V0bGluZShDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgLy8gTWV0aG9kcyBmb3Igb2J0YWluaW5nIHBsYXRmb3JtLXNwZWNpZmljIGNvbG9ycy4K
LSAgICB2aXJ0dWFsIENvbG9yIHNlbGVjdGlvbkNvbG9yKENvbnRyb2xQYXJ0LCBDb250cm9sU3Rh
dGUsIFNlbGVjdGlvblBhcnQpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KKyAgICB2aXJ0dWFs
IENvbG9yIHNlbGVjdGlvbkNvbG9yKENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzKiwg
U2VsZWN0aW9uUGFydCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQogICAgIHZpcnR1YWwgQ29s
b3IgdGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQog
ICAgIAogICAgIC8vIENTUyBzeXN0ZW0gY29sb3JzIGFuZCBmb250cwpAQCAtOTcsMTMgKzk4LDEz
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFj
ZShDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIE1ldGhvZCBm
b3IgcGFpbnRpbmcgYSBjb250cm9sLiBUaGUgcmVjdCBpcyBpbiB6b29tZWQgY29vcmRpbmF0ZXMu
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzLCBHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29t
RmFjdG9yKi8sIFNjcm9sbFZpZXcqKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
Q29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8sIFNjcm9sbFZpZXcqKSB7
IH0KIAogICAgIC8vIFNvbWUgY29udHJvbHMgbWF5IHNwaWxsIG91dCBvZiB0aGVpciBjb250YWlu
ZXJzIChlLmcuLCB0aGUgY2hlY2sgb24gYW4gT1MgWCBjaGVja2JveCkuICBXaGVuIHRoZXNlIGNv
bnRyb2xzIHJlcGFpbnQsCiAgICAgLy8gdGhlIHRoZW1lIG5lZWRzIHRvIGNvbW11bmljYXRlIHRo
aXMgaW5mbGF0ZWQgcmVjdCB0byB0aGUgZW5naW5lIHNvIHRoYXQgaXQgY2FuIGludmFsaWRhdGUg
dGhlIHdob2xlIGNvbnRyb2wuCiAgICAgLy8gVGhlIHJlY3QgcGFzc2VkIGluIGlzIGluIHpvb21l
ZCBjb29yZGluYXRlcywgc28gdGhlIGluZmxhdGlvbiBzaG91bGQgdGFrZSB0aGF0IGludG8gYWNj
b3VudCBhbmQgbWFrZSBzdXJlIHRoZSBpbmZsYXRpb24KICAgICAvLyBhbW91bnQgaXMgYWxzbyBz
Y2FsZWQgYnkgdGhlIHpvb21GYWN0b3IuCi0gICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9s
UGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzLCBJbnRSZWN0JiAvKnpvb21lZFJl
Y3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBp
bmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyos
IEludFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyB9
CiAgICAgCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uY2UsIGZyb20gUmVuZGVyVGhl
bWU6OmFkanVzdERlZmF1bHRTdHlsZVNoZWV0KCksIHRvIGxldCBlYWNoIHBsYXRmb3JtIGFkanVz
dAogICAgIC8vIHRoZSBkZWZhdWx0IENTUyBydWxlcyBpbiBodG1sLmNzcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RoZW1lVHlwZXMuaAppbmRleCBkOGFiMThmZmFjOWI1MDRmZjdmOWFmOGEwMDQ5Mzlh
MDAxMTU2Y2IxLi45NzNlNzc0NjBiZWM2NTJjYWNhMGRlZDNmNTZmOGJmOTRhNTY3YzU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oCkBAIC0yOCwyMiArMjgsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gQ29udHJvbFN0YXRlIHsKLSAgICBIb3ZlclN0YXRlID0g
MSwKLSAgICBQcmVzc2VkU3RhdGUgPSAxIDw8IDEsCi0gICAgRm9jdXNTdGF0ZSA9IDEgPDwgMiwK
LSAgICBFbmFibGVkU3RhdGUgPSAxIDw8IDMsCi0gICAgQ2hlY2tlZFN0YXRlID0gMSA8PCA0LAot
ICAgIFJlYWRPbmx5U3RhdGUgPSAxIDw8IDUsCi0gICAgRGVmYXVsdFN0YXRlID0gMSA8PCA2LAot
ICAgIFdpbmRvd0luYWN0aXZlU3RhdGUgPSAxIDw8IDcsCi0gICAgSW5kZXRlcm1pbmF0ZVN0YXRl
ID0gMSA8PCA4LAotICAgIFNwaW5VcFN0YXRlID0gMSA8PCA5LCAvLyBTdWItc3RhdGUgZm9yIEhv
dmVyU3RhdGUgYW5kIFByZXNzZWRTdGF0ZS4KLSAgICBBbGxTdGF0ZXMgPSAweGZmZmZmZmZmCi19
OwotCi10eXBlZGVmIHVuc2lnbmVkIENvbnRyb2xTdGF0ZXM7Ci0KIC8vIE11c3QgZm9sbG93IENT
U1ZhbHVlS2V5d29yZHMuaW4gb3JkZXIKIGVudW0gQ29udHJvbFBhcnQgewogICAgIE5vQ29udHJv
bFBhcnQsIENoZWNrYm94UGFydCwgUmFkaW9QYXJ0LCBQdXNoQnV0dG9uUGFydCwgU3F1YXJlQnV0
dG9uUGFydCwgQnV0dG9uUGFydCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVu
ZGVyVGhlbWVFZmwuY3BwCmluZGV4IGY4NjQ3ODU5MTc1MjM3NGNiZGRjMDU0ZjM2OGMwMTQ4MjYz
N2QzZWIuLmY5ZDIxYzk5NmY4ZjNmMzA1NDYwNjM2NjUxMWEwOTk4ZjkwNjRiNDkgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcApAQCAtMjk2LDcg
KzI5Niw3IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmNsZWFyVGhlbWVQYXJ0Q2FjaGUoKQogCiB9
CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5RWRqZVN0YXRlRnJvbUZvcm0oRXZhc19PYmpl
Y3QqIG9iamVjdCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIGJvb2wgaGF2ZUJhY2tncm91bmQpCit2
b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0KiBv
YmplY3QsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgYm9vbCBoYXZlQmFja2dyb3VuZCkK
IHsKICAgICBjb25zdCBjaGFyICpzaWduYWxzW10gPSB7IC8vIGtlZXAgaW4gc3luYyB3aXRoIFdl
YkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oCiAgICAgICAgICJob3ZlcmVkIiwKQEAgLTMxNCw3
ICszMTQsNyBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2
YXNfT2JqZWN0KiBvYmplY3QsIENvbnRyb2xTdGF0ZXMgcwogICAgIGVkamVfb2JqZWN0X3NpZ25h
bF9lbWl0KG9iamVjdCwgInJlc2V0IiwgIiIpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBXVEZfQVJSQVlfTEVOR1RIKHNpZ25hbHMpOyArK2kpIHsKLSAgICAgICAgaWYgKHN0YXRlcyAm
ICgxIDw8IGkpKQorICAgICAgICBpZiAoc3RhdGVzLT5zdGF0ZXMoKSAmICgxIDw8IGkpKQogICAg
ICAgICAgICAgZWRqZV9vYmplY3Rfc2lnbmFsX2VtaXQob2JqZWN0LCBzaWduYWxzW2ldLCAiIik7
CiAgICAgfQogCkBAIC0zODMsNyArMzgzLDggQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRU
aGVtZVBhcnQoUmVuZGVyT2JqZWN0KiBvYmplY3QsIEZvcm1UeXBlIHR5cGUsIGNvbnN0IFAKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBoYXZlQmFja2dyb3VuZENvbG9yID0gaXND
b250cm9sU3R5bGVkKCZvYmplY3QtPnN0eWxlKCksIG9iamVjdC0+c3R5bGUoKS5ib3JkZXIoKSwg
Km9iamVjdC0+c3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIENvbG9yOjp3aGl0ZSk7Ci0gICAg
YXBwbHlFZGplU3RhdGVGcm9tRm9ybShlbnRyeS0+ZWRqZSgpLCBjb250cm9sU3RhdGVzRm9yUmVu
ZGVyZXIob2JqZWN0KSwgaGF2ZUJhY2tncm91bmRDb2xvcik7CisgICAgQ29udHJvbFN0YXRlcyBz
dGF0ZXMoZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvYmplY3QpKTsKKyAgICBhcHBs
eUVkamVTdGF0ZUZyb21Gb3JtKGVudHJ5LT5lZGplKCksICZzdGF0ZXMsIGhhdmVCYWNrZ3JvdW5k
Q29sb3IpOwogCiAgICAgYXBwbHlFZGplUlRMU3RhdGUoZW50cnktPmVkamUoKSwgb2JqZWN0LCB0
eXBlLCByZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Jl
bmRlclRoZW1lRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVF
ZmwuaAppbmRleCBlNmRhMDRlZDIxNzM5ZDU1MGFiZmUxZmYyYzZmMWJlZTgxOTI0ZDAyLi4wMGYw
YmI3YzU2Y2FjM2VkNDBjZjMyOWYxYWEwZTI4ZDMzNzgyZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaApAQCAtMjI5LDcgKzIyOSw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGFwcGx5UGFydERlc2NyaXB0aW9uc0Zyb20oY29uc3QgU3RyaW5nJiB0
aGVtZVBhdGgpOwogCi0gICAgdm9pZCBhcHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0
KiwgQ29udHJvbFN0YXRlcywgYm9vbCk7CisgICAgdm9pZCBhcHBseUVkamVTdGF0ZUZyb21Gb3Jt
KEV2YXNfT2JqZWN0KiwgY29uc3QgQ29udHJvbFN0YXRlcyosIGJvb2wpOwogICAgIHZvaWQgYXBw
bHlFZGplUlRMU3RhdGUoRXZhc19PYmplY3QqLCBSZW5kZXJPYmplY3QqLCBGb3JtVHlwZSwgY29u
c3QgSW50UmVjdCYpOwogICAgIGJvb2wgcGFpbnRUaGVtZVBhcnQoUmVuZGVyT2JqZWN0KiwgRm9y
bVR5cGUsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVGhlbWVNYWMuaAppbmRleCA4YjdlOTgyMmRmYjU0MWQ5MzA0MjNhNGY1N2M3
MWZhZWMwOTU4ZTMwLi5kNzM5NTIzNjBiNDA0NmI2ZjcxZTM3NGJhYjI0ZWM3M2RlYWZiNWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaApAQCAtNTEsMTEgKzUxLDExIEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBjb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNl
KENvbnRyb2xQYXJ0IHBhcnQpIGNvbnN0IHsgcmV0dXJuIHBhcnQgPT0gUHVzaEJ1dHRvblBhcnQ7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcywg
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9s
bFZpZXcqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWludFJlY3Qo
Q29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMsIEludFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMq
LCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgZmxvYXQgem9vbUZhY3RvciwgU2Ny
b2xsVmlldyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50
UmVjdChDb250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyosIEludFJlY3QmLCBmbG9hdCB6
b29tRmFjdG9yKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBPbmNlIFJlbmRlclRoZW1lTWFjIGlz
IGNvbnZlcnRlZCBvdmVyIHRvIHVzZSBUaGVtZSB0aGVuIHRoaXMgY2FuIGJlIGludGVybmFsIHRv
IFRoZW1lTWFjLgotICAgIHN0YXRpYyBOU1ZpZXcqIGVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqLCBD
b250cm9sU3RhdGVzKTsKKyAgICBzdGF0aWMgTlNWaWV3KiBlbnN1cmVkVmlldyhTY3JvbGxWaWV3
KiwgY29uc3QgQ29udHJvbFN0YXRlcyopOwogICAgIHN0YXRpYyB2b2lkIHNldEZvY3VzUmluZ0Ns
aXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RoZW1lTWFjLm1tCmluZGV4IDg0NTI1Y2NkZjdiYzQzNWI4MDg2MTIxN2EwYTFlMGJmMGFjYzYz
Y2EuLjc1YzA2ODZiYzA3NWU1ZGNjNDcxYzFmNWNkODhhNDJmMDgyZTFmZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTM1LDYgKzM1LDE1IEBACiAjaW1wb3J0
IDxDYXJib24vQ2FyYm9uLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCisjaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMAorQGludGVyZmFjZSBOU0J1
dHRvbkNlbGwoRGV0YWlscykKKy0gKHZvaWQpX3NldFN0YXRlOihOU0ludGVnZXIpdmFsdWUgYW5p
bWF0ZWQ6KEJPT0wpYW5pbWF0ZWQ7CistICh2b2lkKV9zZXRIaWdobGlnaHRlZDooQk9PTClmbGFn
IGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOworLSAodm9pZClfcmVuZGVyQ3VycmVudEFuaW1hdGlv
bkZyYW1lSW5Db250ZXh0OihDR0NvbnRleHRSZWYpY3R4dCBhdExvY2F0aW9uOihOU1BvaW50KXdo
ZXJlOworLSAoQk9PTClfc3RhdGVBbmltYXRpb25SdW5uaW5nOworQGVuZAorI2VuZGlmCisKIHN0
YXRpYyBOU1JlY3QgZm9jdXNSaW5nQ2xpcFJlY3Q7CiBzdGF0aWMgQk9PTCB0aGVtZVdpbmRvd0hh
c0tleUFwcGVhcmFuY2U7CiAKQEAgLTk3LDYgKzEwNiwxMiBAQCBzdGF0aWMgQk9PTCB0aGVtZVdp
bmRvd0hhc0tleUFwcGVhcmFuY2U7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKKy0gKHZvaWQpYWRk
U3VidmlldzooTlNWaWV3KilzdWJ2aWV3Cit7CisgICAgLy8gQnkgZG9pbmcgbm90aGluZyBpbiB0
aGlzIG1ldGhvZCB3ZSBmb3JiaWQgY29udHJvbHMgZnJvbSBhZGRpbmcgc3Vidmlld3MuCisgICAg
Ly8gVGhpcyB0ZWxscyBBcHBLaXQgdG8gbm90IHVzZSBMYXllci1iYWNrZWQgYW5pbWF0aW9uIGZv
ciBjb250cm9sIHJlbmRlcmluZy4KKyAgICBVTlVTRURfUEFSQU0oc3Vidmlldyk7Cit9CiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBOU0ZvbnQgKFdlYkNvcmVUaGVtZSkKQEAgLTE3Niw0NSArMTkx
LDU2IEBAIHN0YXRpYyB2b2lkIHNldENvbnRyb2xTaXplKE5TQ2VsbCogY2VsbCwgY29uc3QgSW50
U2l6ZSogc2l6ZXMsIGNvbnN0IEludFNpemUmIG1pCiAgICAgICAgIFtjZWxsIHNldENvbnRyb2xT
aXplOihOU0NvbnRyb2xTaXplKXNpemVdOwogfQogCi1zdGF0aWMgdm9pZCB1cGRhdGVTdGF0ZXMo
TlNDZWxsKiBjZWxsLCBDb250cm9sU3RhdGVzIHN0YXRlcykKK3N0YXRpYyB2b2lkIHVwZGF0ZVN0
YXRlcyhOU0NlbGwqIGNlbGwsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIGJv
b2wgdXNlQW5pbWF0aW9uID0gZmFsc2UpCiB7CisgICAgQ29udHJvbFN0YXRlczo6U3RhdGVzIHN0
YXRlcyA9IGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygpOworCiAgICAgLy8gSG92ZXIgc3RhdGUgaXMg
bm90IHN1cHBvcnRlZCBieSBBcXVhLgogICAgIAogICAgIC8vIFByZXNzZWQgc3RhdGUKICAgICBi
b29sIG9sZFByZXNzZWQgPSBbY2VsbCBpc0hpZ2hsaWdodGVkXTsKLSAgICBib29sIHByZXNzZWQg
PSBzdGF0ZXMgJiBQcmVzc2VkU3RhdGU7CisgICAgYm9vbCBwcmVzc2VkID0gc3RhdGVzICYgQ29u
dHJvbFN0YXRlczo6UHJlc3NlZFN0YXRlOwogICAgIGlmIChwcmVzc2VkICE9IG9sZFByZXNzZWQp
CiAgICAgICAgIFtjZWxsIHNldEhpZ2hsaWdodGVkOnByZXNzZWRdOwogICAgIAogICAgIC8vIEVu
YWJsZWQgc3RhdGUKICAgICBib29sIG9sZEVuYWJsZWQgPSBbY2VsbCBpc0VuYWJsZWRdOwotICAg
IGJvb2wgZW5hYmxlZCA9IHN0YXRlcyAmIEVuYWJsZWRTdGF0ZTsKKyAgICBib29sIGVuYWJsZWQg
PSBzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpFbmFibGVkU3RhdGU7CiAgICAgaWYgKGVuYWJsZWQg
IT0gb2xkRW5hYmxlZCkKICAgICAgICAgW2NlbGwgc2V0RW5hYmxlZDplbmFibGVkXTsKIAogICAg
IC8vIENoZWNrZWQgYW5kIEluZGV0ZXJtaW5hdGUKICAgICBib29sIG9sZEluZGV0ZXJtaW5hdGUg
PSBbY2VsbCBzdGF0ZV0gPT0gTlNNaXhlZFN0YXRlOwotICAgIGJvb2wgaW5kZXRlcm1pbmF0ZSA9
IChzdGF0ZXMgJiBJbmRldGVybWluYXRlU3RhdGUpOwotICAgIGJvb2wgY2hlY2tlZCA9IHN0YXRl
cyAmIENoZWNrZWRTdGF0ZTsKKyAgICBib29sIGluZGV0ZXJtaW5hdGUgPSAoc3RhdGVzICYgQ29u
dHJvbFN0YXRlczo6SW5kZXRlcm1pbmF0ZVN0YXRlKTsKKyAgICBib29sIGNoZWNrZWQgPSBzdGF0
ZXMgJiBDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGU7CiAgICAgYm9vbCBvbGRDaGVja2VkID0g
W2NlbGwgc3RhdGVdID09IE5TT25TdGF0ZTsKLSAgICBpZiAob2xkSW5kZXRlcm1pbmF0ZSAhPSBp
bmRldGVybWluYXRlIHx8IGNoZWNrZWQgIT0gb2xkQ2hlY2tlZCkKLSAgICAgICAgW2NlbGwgc2V0
U3RhdGU6aW5kZXRlcm1pbmF0ZSA/IE5TTWl4ZWRTdGF0ZSA6IChjaGVja2VkID8gTlNPblN0YXRl
IDogTlNPZmZTdGF0ZSldOwotICAgICAgICAKKyAgICBpZiAob2xkSW5kZXRlcm1pbmF0ZSAhPSBp
bmRldGVybWluYXRlIHx8IGNoZWNrZWQgIT0gb2xkQ2hlY2tlZCkgeworICAgICAgICBOU0NlbGxT
dGF0ZVZhbHVlIG5ld1N0YXRlID0gaW5kZXRlcm1pbmF0ZSA/IE5TTWl4ZWRTdGF0ZSA6IChjaGVj
a2VkID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZSk7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEwMAorICAgICAgICBbKE5TQnV0dG9uQ2VsbCopY2VsbCBfc2V0U3Rh
dGU6bmV3U3RhdGUgYW5pbWF0ZWQ6dXNlQW5pbWF0aW9uXTsKKyNlbHNlCisgICAgICAgIFVOVVNF
RF9QQVJBTSh1c2VBbmltYXRpb24pOworICAgICAgICBbY2VsbCBzZXRTdGF0ZTpuZXdTdGF0ZV07
CisjZW5kaWYKKyAgICB9CisKICAgICAvLyBXaW5kb3cgaW5hY3RpdmUgc3RhdGUgZG9lcyBub3Qg
bmVlZCB0byBiZSBjaGVja2VkIGV4cGxpY2l0bHksIHNpbmNlIHdlIHBhaW50IHBhcmVudGVkIHRv
IAogICAgIC8vIGEgdmlldyBpbiBhIHdpbmRvdyB3aG9zZSBrZXkgc3RhdGUgY2FuIGJlIGRldGVj
dGVkLgogfQogCi1zdGF0aWMgVGhlbWVEcmF3U3RhdGUgY29udmVydENvbnRyb2xTdGF0ZXNUb1Ro
ZW1lRHJhd1N0YXRlKFRoZW1lQnV0dG9uS2luZCBraW5kLCBDb250cm9sU3RhdGVzIHN0YXRlcykK
K3N0YXRpYyBUaGVtZURyYXdTdGF0ZSBjb252ZXJ0Q29udHJvbFN0YXRlc1RvVGhlbWVEcmF3U3Rh
dGUoVGhlbWVCdXR0b25LaW5kIGtpbmQsIGNvbnN0IENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0
ZXMpCiB7Ci0gICAgaWYgKHN0YXRlcyAmIFJlYWRPbmx5U3RhdGUpCisgICAgQ29udHJvbFN0YXRl
czo6U3RhdGVzIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygpOworCisgICAgaWYgKHN0
YXRlcyAmIENvbnRyb2xTdGF0ZXM6OlJlYWRPbmx5U3RhdGUpCiAgICAgICAgIHJldHVybiBrVGhl
bWVTdGF0ZVVuYXZhaWxhYmxlSW5hY3RpdmU7Ci0gICAgaWYgKCEoc3RhdGVzICYgRW5hYmxlZFN0
YXRlKSkKKyAgICBpZiAoIShzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpFbmFibGVkU3RhdGUpKQog
ICAgICAgICByZXR1cm4ga1RoZW1lU3RhdGVVbmF2YWlsYWJsZUluYWN0aXZlOwogCiAgICAgLy8g
RG8gbm90IHByb2Nlc3MgUHJlc3NlZFN0YXRlIGlmICFFbmFibGVkU3RhdGUgb3IgUmVhZE9ubHlT
dGF0ZS4KLSAgICBpZiAoc3RhdGVzICYgUHJlc3NlZFN0YXRlKSB7CisgICAgaWYgKHN0YXRlcyAm
IENvbnRyb2xTdGF0ZXM6OlByZXNzZWRTdGF0ZSkgewogICAgICAgICBpZiAoa2luZCA9PSBrVGhl
bWVJbmNEZWNCdXR0b24gfHwga2luZCA9PSBrVGhlbWVJbmNEZWNCdXR0b25TbWFsbCB8fCBraW5k
ID09IGtUaGVtZUluY0RlY0J1dHRvbk1pbmkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGVzICYg
U3BpblVwU3RhdGUgPyBrVGhlbWVTdGF0ZVByZXNzZWRVcCA6IGtUaGVtZVN0YXRlUHJlc3NlZERv
d247CisgICAgICAgICAgICByZXR1cm4gc3RhdGVzICYgQ29udHJvbFN0YXRlczo6U3BpblVwU3Rh
dGUgPyBrVGhlbWVTdGF0ZVByZXNzZWRVcCA6IGtUaGVtZVN0YXRlUHJlc3NlZERvd247CiAgICAg
ICAgIHJldHVybiBrVGhlbWVTdGF0ZVByZXNzZWQ7CiAgICAgfQogICAgIHJldHVybiBrVGhlbWVT
dGF0ZUFjdGl2ZTsKQEAgLTI2NiwzNCArMjkyLDU0IEBAIHN0YXRpYyBMZW5ndGhTaXplIGNoZWNr
Ym94U2l6ZShjb25zdCBGb250JiBmb250LCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBm
CiAgICAgLy8gVXNlIHRoZSBmb250IHNpemUgdG8gZGV0ZXJtaW5lIHRoZSBpbnRyaW5zaWMgd2lk
dGggb2YgdGhlIGNvbnRyb2wuCiAgICAgcmV0dXJuIHNpemVGcm9tRm9udChmb250LCB6b29tZWRT
aXplLCB6b29tRmFjdG9yLCBjaGVja2JveFNpemVzKCkpOwogfQotCi1zdGF0aWMgTlNCdXR0b25D
ZWxsICpjaGVja2JveChDb250cm9sU3RhdGVzIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVk
UmVjdCwgZmxvYXQgem9vbUZhY3RvcikKLXsKLSAgICBzdGF0aWMgTlNCdXR0b25DZWxsICpjaGVj
a2JveENlbGw7Ci0gICAgaWYgKCFjaGVja2JveENlbGwpIHsKLSAgICAgICAgY2hlY2tib3hDZWxs
ID0gW1tOU0J1dHRvbkNlbGwgYWxsb2NdIGluaXRdOwotICAgICAgICBbY2hlY2tib3hDZWxsIHNl
dEJ1dHRvblR5cGU6TlNTd2l0Y2hCdXR0b25dOwotICAgICAgICBbY2hlY2tib3hDZWxsIHNldFRp
dGxlOm5pbF07Ci0gICAgICAgIFtjaGVja2JveENlbGwgc2V0QWxsb3dzTWl4ZWRTdGF0ZTpZRVNd
OwotICAgICAgICBbY2hlY2tib3hDZWxsIHNldEZvY3VzUmluZ1R5cGU6TlNGb2N1c1JpbmdUeXBl
RXh0ZXJpb3JdOwotICAgIH0KICAgICAKK3N0YXRpYyB2b2lkIGNvbmZpZ3VyZUNoZWNrYm94KE5T
Q2VsbCogY2VsbCwgY29uc3QgQ29udHJvbFN0YXRlcyogc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6
b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBib29sIGlzU3RhdGVDaGFuZ2UpCit7CiAgICAg
Ly8gU2V0IHRoZSBjb250cm9sIHNpemUgYmFzZWQgb2ZmIHRoZSByZWN0YW5nbGUgd2UncmUgcGFp
bnRpbmcgaW50by4KLSAgICBzZXRDb250cm9sU2l6ZShjaGVja2JveENlbGwsIGNoZWNrYm94U2l6
ZXMoKSwgem9vbWVkUmVjdC5zaXplKCksIHpvb21GYWN0b3IpOworICAgIHNldENvbnRyb2xTaXpl
KGNlbGwsIGNoZWNrYm94U2l6ZXMoKSwgem9vbWVkUmVjdC5zaXplKCksIHpvb21GYWN0b3IpOwog
CiAgICAgLy8gVXBkYXRlIHRoZSB2YXJpb3VzIHN0YXRlcyB3ZSByZXNwb25kIHRvLgotICAgIHVw
ZGF0ZVN0YXRlcyhjaGVja2JveENlbGwsIHN0YXRlcyk7CisgICAgdXBkYXRlU3RhdGVzKGNlbGws
IHN0YXRlcywgaXNTdGF0ZUNoYW5nZSk7Cit9CiAgICAgCitzdGF0aWMgTlNCdXR0b25DZWxsICpj
cmVhdGVDaGVja2JveENlbGwoKQoreworICAgIE5TQnV0dG9uQ2VsbCAqY2hlY2tib3hDZWxsID0g
W1tOU0J1dHRvbkNlbGwgYWxsb2NdIGluaXRdOworICAgIFtjaGVja2JveENlbGwgc2V0QnV0dG9u
VHlwZTpOU1N3aXRjaEJ1dHRvbl07CisgICAgW2NoZWNrYm94Q2VsbCBzZXRUaXRsZTpuaWxdOwor
ICAgIFtjaGVja2JveENlbGwgc2V0QWxsb3dzTWl4ZWRTdGF0ZTpZRVNdOworICAgIFtjaGVja2Jv
eENlbGwgc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07CiAgICAgcmV0
dXJuIGNoZWNrYm94Q2VsbDsKIH0KIAorc3RhdGljIE5TQnV0dG9uQ2VsbCAqc2hhcmVkQ2hlY2ti
b3hDZWxsKGNvbnN0IENvbnRyb2xTdGF0ZXMqIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVk
UmVjdCwgZmxvYXQgem9vbUZhY3RvcikKK3sKKyAgICBzdGF0aWMgTlNCdXR0b25DZWxsICpjaGVj
a2JveENlbGw7CisgICAgaWYgKCFjaGVja2JveENlbGwpCisgICAgICAgIGNoZWNrYm94Q2VsbCA9
IGNyZWF0ZUNoZWNrYm94Q2VsbCgpOworCisgICAgY29uZmlndXJlQ2hlY2tib3goY2hlY2tib3hD
ZWxsLCBzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IsIGZhbHNlKTsKKyAgICByZXR1cm4g
Y2hlY2tib3hDZWxsOworfQorICAgIAogLy8gRklYTUU6IFNoYXJlIG1vcmUgY29kZSB3aXRoIHJh
ZGlvIGJ1dHRvbnMuCi1zdGF0aWMgdm9pZCBwYWludENoZWNrYm94KENvbnRyb2xTdGF0ZXMgc3Rh
dGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3Qs
IGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcpCitzdGF0aWMgdm9pZCBw
YWludENoZWNrYm94KENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3Rvciwg
U2Nyb2xsVmlldyogc2Nyb2xsVmlldykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKIAotICAgIC8vIERldGVybWluZSB0aGUgd2lkdGggYW5kIGhlaWdodCBuZWVkZWQgZm9yIHRo
ZSBjb250cm9sIGFuZCBwcmVwYXJlIHRoZSBjZWxsIGZvciBwYWludGluZy4KLSAgICBOU0J1dHRv
bkNlbGwgKmNoZWNrYm94Q2VsbCA9IGNoZWNrYm94KHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZh
Y3Rvcik7CisgICAgTlNCdXR0b25DZWxsICpjaGVja2JveENlbGwgPSBzdGF0aWNfY2FzdDxOU0J1
dHRvbkNlbGwqPihjb250cm9sU3RhdGVzLT5wbGF0Zm9ybUNvbnRyb2woKSk7CisKKyAgICBpZiAo
Y29udHJvbFN0YXRlcy0+aXNEaXJ0eSgpKSB7CisgICAgICAgIGlmICghY2hlY2tib3hDZWxsKQor
ICAgICAgICAgICAgY2hlY2tib3hDZWxsID0gY3JlYXRlQ2hlY2tib3hDZWxsKCk7CisgICAgICAg
IGNvbmZpZ3VyZUNoZWNrYm94KGNoZWNrYm94Q2VsbCwgY29udHJvbFN0YXRlcywgem9vbWVkUmVj
dCwgem9vbUZhY3RvciwgdHJ1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFjaGVja2Jv
eENlbGwpCisgICAgICAgICAgICBjaGVja2JveENlbGwgPSBzaGFyZWRDaGVja2JveENlbGwoY29u
dHJvbFN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CisgICAgICAgIGNvbmZpZ3VyZUNo
ZWNrYm94KGNoZWNrYm94Q2VsbCwgY29udHJvbFN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rv
ciwgZmFsc2UpOworICAgIH0KKyAgICBjb250cm9sU3RhdGVzLT5zZXREaXJ0eShmYWxzZSk7CisK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogCiAg
ICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFtjaGVja2JveENlbGwgY29udHJvbFNpemVd
OwpAQCAtMzExLDEyICszNTcsMzQgQEAgc3RhdGljIHZvaWQgcGFpbnRDaGVja2JveChDb250cm9s
U3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIH0KIAog
ICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7Ci0g
ICAgTlNWaWV3ICp2aWV3ID0gVGhlbWVNYWM6OmVuc3VyZWRWaWV3KHNjcm9sbFZpZXcsIHN0YXRl
cyk7Ci0gICAgW2NoZWNrYm94Q2VsbCBkcmF3V2l0aEZyYW1lOk5TUmVjdChpbmZsYXRlZFJlY3Qp
IGluVmlldzp2aWV3XTsKLSAgICBpZiAoc3RhdGVzICYgRm9jdXNTdGF0ZSkKKyAgICBOU1ZpZXcg
KnZpZXcgPSBUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoc2Nyb2xsVmlldywgY29udHJvbFN0YXRlcyk7
CisgICAgYm9vbCBkcmF3U3RhdGljYWxseSA9IHRydWU7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEwMAorICAgIGRyYXdTdGF0aWNhbGx5ID0gIVtjaGVja2JveENl
bGwgX3N0YXRlQW5pbWF0aW9uUnVubmluZ107CisjZW5kaWYKKyAgICBpZiAoZHJhd1N0YXRpY2Fs
bHkpCisgICAgICAgIFtjaGVja2JveENlbGwgZHJhd1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRS
ZWN0KSBpblZpZXc6dmlld107CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlz
bid0IHF1aXRlIGNvcnJlY3QgYXQgdGhlIG1vbWVudCBkdWUgdG8gdGhlIHdheSB0aGUgdGljayBt
YXJrIGV4dGVuZHMgb3V0IG9mIHRoZSBjb250cm9sLgorICAgICAgICBjb250ZXh0LT50cmFuc2xh
dGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwg
LWluZmxhdGVkUmVjdC5oZWlnaHQoKSk7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEwMAorICAgICAgICBbY2hlY2tib3hDZWxsIF9yZW5kZXJDdXJyZW50QW5pbWF0
aW9uRnJhbWVJbkNvbnRleHQ6Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgYXRMb2NhdGlvbjpO
U01ha2VQb2ludCgwLCAwKV07CisjZW5kaWYKKyAgICB9CisgICAgaWYgKGNvbnRyb2xTdGF0ZXMt
PnN0YXRlcygpICYgQ29udHJvbFN0YXRlczo6Rm9jdXNTdGF0ZSkKICAgICAgICAgW2NoZWNrYm94
Q2VsbCBfd2ViX2RyYXdGb2N1c1JpbmdXaXRoRnJhbWU6TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5W
aWV3OnZpZXddOwogICAgIFtjaGVja2JveENlbGwgc2V0Q29udHJvbFZpZXc6bmlsXTsKICAgICAK
KyAgICBib29sIG5lZWRzUmVwYWludCA9IGZhbHNlOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMDAKKyAgICBuZWVkc1JlcGFpbnQgPSBbY2hlY2tib3hDZWxsIF9z
dGF0ZUFuaW1hdGlvblJ1bm5pbmddOworI2VuZGlmCisgICAgY29udHJvbFN0YXRlcy0+c2V0TmVl
ZHNSZXBhaW50KG5lZWRzUmVwYWludCk7CisgICAgaWYgKG5lZWRzUmVwYWludCkKKyAgICAgICAg
Y29udHJvbFN0YXRlcy0+c2V0UGxhdGZvcm1Db250cm9sKGNoZWNrYm94Q2VsbCk7CisKICAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKQEAgLTM0OSw3ICs0MTcsNyBAQCBzdGF0aWMg
TGVuZ3RoU2l6ZSByYWRpb1NpemUoY29uc3QgRm9udCYgZm9udCwgY29uc3QgTGVuZ3RoU2l6ZSYg
em9vbWVkU2l6ZSwgZmxvYQogICAgIHJldHVybiBzaXplRnJvbUZvbnQoZm9udCwgem9vbWVkU2l6
ZSwgem9vbUZhY3RvciwgcmFkaW9TaXplcygpKTsKIH0KIAotc3RhdGljIE5TQnV0dG9uQ2VsbCAq
cmFkaW8oQ29udHJvbFN0YXRlcyBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZs
b2F0IHpvb21GYWN0b3IpCitzdGF0aWMgTlNCdXR0b25DZWxsICpyYWRpbyhjb25zdCBDb250cm9s
U3RhdGVzKiBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0
b3IpCiB7CiAgICAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqcmFkaW9DZWxsOwogICAgIGlmICghcmFk
aW9DZWxsKSB7CkBAIC0zNjgsMTAgKzQzNiwxMCBAQCBzdGF0aWMgTlNCdXR0b25DZWxsICpyYWRp
byhDb250cm9sU3RhdGVzIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYQog
ICAgIHJldHVybiByYWRpb0NlbGw7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50UmFkaW8oQ29udHJv
bFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYg
em9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldykKK3N0
YXRpYyB2b2lkIHBhaW50UmFkaW8oQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcywgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29t
RmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KQogewogICAgIC8vIERldGVybWluZSB0aGUg
d2lkdGggYW5kIGhlaWdodCBuZWVkZWQgZm9yIHRoZSBjb250cm9sIGFuZCBwcmVwYXJlIHRoZSBj
ZWxsIGZvciBwYWludGluZy4KLSAgICBOU0J1dHRvbkNlbGwgKnJhZGlvQ2VsbCA9IHJhZGlvKHN0
YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CisgICAgTlNCdXR0b25DZWxsICpyYWRpb0Nl
bGwgPSByYWRpbyhjb250cm9sU3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsKICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogCiAgICAgTlND
b250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFtyYWRpb0NlbGwgY29udHJvbFNpemVdOwpAQCAtMzkw
LDkgKzQ1OCw5IEBAIHN0YXRpYyB2b2lkIHBhaW50UmFkaW8oQ29udHJvbFN0YXRlcyBzdGF0ZXMs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50CiAKICAgICBMb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIE5TVmlldyAqdmlldyA9IFRoZW1lTWFjOjplbnN1cmVkVmlldyhz
Y3JvbGxWaWV3LCBzdGF0ZXMpOworICAgIE5TVmlldyAqdmlldyA9IFRoZW1lTWFjOjplbnN1cmVk
VmlldyhzY3JvbGxWaWV3LCBjb250cm9sU3RhdGVzKTsKICAgICBbcmFkaW9DZWxsIGRyYXdXaXRo
RnJhbWU6TlNSZWN0KGluZmxhdGVkUmVjdCkgaW5WaWV3OnZpZXddOwotICAgIGlmIChzdGF0ZXMg
JiBGb2N1c1N0YXRlKQorICAgIGlmIChjb250cm9sU3RhdGVzLT5zdGF0ZXMoKSAmIENvbnRyb2xT
dGF0ZXM6OkZvY3VzU3RhdGUpCiAgICAgICAgIFtyYWRpb0NlbGwgX3dlYl9kcmF3Rm9jdXNSaW5n
V2l0aEZyYW1lOk5TUmVjdChpbmZsYXRlZFJlY3QpIGluVmlldzp2aWV3XTsKICAgICBbcmFkaW9D
ZWxsIHNldENvbnRyb2xWaWV3Om5pbF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpA
QCAtNDMwLDcgKzQ5OCw3IEBAIHN0YXRpYyBOU0J1dHRvbkNlbGwgKmxlYWtCdXR0b25DZWxsKEJ1
dHRvbkNlbGxUeXBlIHR5cGUpCiAgICAgcmV0dXJuIGNlbGw7CiB9CiAKLXN0YXRpYyB2b2lkIHNl
dFVwQnV0dG9uQ2VsbChOU0J1dHRvbkNlbGwgKmNlbGwsIENvbnRyb2xQYXJ0IHBhcnQsIENvbnRy
b2xTdGF0ZXMgc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFj
dG9yKQorc3RhdGljIHZvaWQgc2V0VXBCdXR0b25DZWxsKE5TQnV0dG9uQ2VsbCAqY2VsbCwgQ29u
dHJvbFBhcnQgcGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyogc3RhdGVzLCBjb25zdCBJbnRSZWN0
JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yKQogewogICAgIC8vIFNldCB0aGUgY29udHJv
bCBzaXplIGJhc2VkIG9mZiB0aGUgcmVjdGFuZ2xlIHdlJ3JlIHBhaW50aW5nIGludG8uCiAgICAg
Y29uc3QgSW50U2l6ZSogc2l6ZXMgPSBidXR0b25TaXplcygpOwpAQCAtNDQ3LDI2ICs1MTUsMjgg
QEAgc3RhdGljIHZvaWQgc2V0VXBCdXR0b25DZWxsKE5TQnV0dG9uQ2VsbCAqY2VsbCwgQ29udHJv
bFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcwogICAgIHVwZGF0ZVN0YXRlcyhjZWxsLCBzdGF0ZXMp
OwogfQogCi1zdGF0aWMgTlNCdXR0b25DZWxsICpidXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29u
dHJvbFN0YXRlcyBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21G
YWN0b3IpCitzdGF0aWMgTlNCdXR0b25DZWxsICpidXR0b24oQ29udHJvbFBhcnQgcGFydCwgY29u
c3QgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVj
dCwgZmxvYXQgem9vbUZhY3RvcikKIHsKKyAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMgc3RhdGVz
ID0gY29udHJvbFN0YXRlcy0+c3RhdGVzKCk7CiAgICAgTlNCdXR0b25DZWxsICpjZWxsOwotICAg
IGlmIChzdGF0ZXMgJiBEZWZhdWx0U3RhdGUpIHsKKyAgICBpZiAoc3RhdGVzICYgQ29udHJvbFN0
YXRlczo6RGVmYXVsdFN0YXRlKSB7CiAgICAgICAgIHN0YXRpYyBOU0J1dHRvbkNlbGwgKmRlZmF1
bHRDZWxsID0gbGVha0J1dHRvbkNlbGwoRGVmYXVsdEJ1dHRvbkNlbGwpOwogICAgICAgICBjZWxs
ID0gZGVmYXVsdENlbGw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3RhdGljIE5TQnV0dG9uQ2Vs
bCAqbm9ybWFsQ2VsbCA9IGxlYWtCdXR0b25DZWxsKE5vcm1hbEJ1dHRvbkNlbGwpOwogICAgICAg
ICBjZWxsID0gbm9ybWFsQ2VsbDsKICAgICB9Ci0gICAgc2V0VXBCdXR0b25DZWxsKGNlbGwsIHBh
cnQsIHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7ICAgIAorICAgIHNldFVwQnV0dG9u
Q2VsbChjZWxsLCBwYXJ0LCBjb250cm9sU3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsK
ICAgICByZXR1cm4gY2VsbDsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRCdXR0b24oQ29udHJvbFBh
cnQgcGFydCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyog
c2Nyb2xsVmlldykKK3N0YXRpYyB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENv
bnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Ny
b2xsVmlldykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICAv
LyBEZXRlcm1pbmUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUgY29udHJvbCBh
bmQgcHJlcGFyZSB0aGUgY2VsbCBmb3IgcGFpbnRpbmcuCi0gICAgTlNCdXR0b25DZWxsICpidXR0
b25DZWxsID0gYnV0dG9uKHBhcnQsIHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7Cisg
ICAgQ29udHJvbFN0YXRlczo6U3RhdGVzIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygp
OworICAgIE5TQnV0dG9uQ2VsbCAqYnV0dG9uQ2VsbCA9IGJ1dHRvbihwYXJ0LCBjb250cm9sU3Rh
dGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogCiAgICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6
ZSA9IFtidXR0b25DZWxsIGNvbnRyb2xTaXplXTsKQEAgLTQ5NCwxOCArNTY0LDE4IEBAIHN0YXRp
YyB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVz
LCBHcmFwaGljc0NvbnRleHQqCiAgICAgfSAKIAogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29u
dGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7Ci0gICAgTlNWaWV3ICp2aWV3ID0gVGhlbWVNYWM6
OmVuc3VyZWRWaWV3KHNjcm9sbFZpZXcsIHN0YXRlcyk7CisgICAgTlNWaWV3ICp2aWV3ID0gVGhl
bWVNYWM6OmVuc3VyZWRWaWV3KHNjcm9sbFZpZXcsIGNvbnRyb2xTdGF0ZXMpOwogICAgIE5TV2lu
ZG93ICp3aW5kb3cgPSBbdmlldyB3aW5kb3ddOwogICAgIE5TQnV0dG9uQ2VsbCAqcHJldmlvdXNE
ZWZhdWx0QnV0dG9uQ2VsbCA9IFt3aW5kb3cgZGVmYXVsdEJ1dHRvbkNlbGxdOwogCi0gICAgaWYg
KHN0YXRlcyAmIERlZmF1bHRTdGF0ZSkgeworICAgIGlmIChzdGF0ZXMgJiBDb250cm9sU3RhdGVz
OjpEZWZhdWx0U3RhdGUpIHsKICAgICAgICAgW3dpbmRvdyBzZXREZWZhdWx0QnV0dG9uQ2VsbDpi
dXR0b25DZWxsXTsKICAgICAgICAgd2tBZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9u
KGJ1dHRvbkNlbGwpOwogICAgIH0gZWxzZSBpZiAoW3ByZXZpb3VzRGVmYXVsdEJ1dHRvbkNlbGwg
aXNFcXVhbDpidXR0b25DZWxsXSkKICAgICAgICAgW3dpbmRvdyBzZXREZWZhdWx0QnV0dG9uQ2Vs
bDpuaWxdOwogCiAgICAgW2J1dHRvbkNlbGwgZHJhd1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRS
ZWN0KSBpblZpZXc6dmlld107Ci0gICAgaWYgKHN0YXRlcyAmIEZvY3VzU3RhdGUpCisgICAgaWYg
KHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OkZvY3VzU3RhdGUpCiAgICAgICAgIFtidXR0b25DZWxs
IF93ZWJfZHJhd0ZvY3VzUmluZ1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZpZXc6
dmlld107CiAgICAgW2J1dHRvbkNlbGwgc2V0Q29udHJvbFZpZXc6bmlsXTsKIApAQCAtNTM1LDcg
KzYwNSw3IEBAIHN0YXRpYyBOU0NvbnRyb2xTaXplIHN0ZXBwZXJDb250cm9sU2l6ZUZvckZvbnQo
Y29uc3QgRm9udCYgZm9udCkKICAgICByZXR1cm4gTlNNaW5pQ29udHJvbFNpemU7CiB9CiAKLXN0
YXRpYyB2b2lkIHBhaW50U3RlcHBlcihDb250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9y
LCBTY3JvbGxWaWV3KikKK3N0YXRpYyB2b2lkIHBhaW50U3RlcHBlcihDb250cm9sU3RhdGVzKiBz
dGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVj
dCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyopCiB7CiAgICAgLy8gV2UgZG9uJ3QgdXNl
IE5TU3RlcHBlckNlbGwgYmVjYXVzZSB0aGVyZSBhcmUgbm8gd2F5cyB0byBkcmF3IGFuCiAgICAg
Ly8gTlNTdGVwcGVyQ2VsbCB3aXRoIHRoZSB1cCBidXR0b24gaGlnaGxpZ2h0ZWQuCkBAIC01Nzcs
NyArNjQ3LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRTdGVwcGVyKENvbnRyb2xTdGF0ZXMgc3RhdGVz
LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEkKIAogLy8gVGhpcyB3aWxsIGVuc3Vy
ZSB0aGF0IHdlIGFsd2F5cyByZXR1cm4gYSB2YWxpZCBOU1ZpZXcsIGV2ZW4gaWYgU2Nyb2xsVmll
dyBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkb2N1bWVudCBOU1ZpZXcuCiAvLyBJZiB0aGUg
U2Nyb2xsVmlldyBkb2Vzbid0IGhhdmUgYW4gTlNWaWV3LCB3ZSB3aWxsIHJldHVybiBhIGZha2Ug
TlNWaWV3IHNldCB1cCBpbiB0aGUgd2F5IEFwcEtpdCBleHBlY3RzLgotTlNWaWV3ICpUaGVtZU1h
Yzo6ZW5zdXJlZFZpZXcoU2Nyb2xsVmlldyogc2Nyb2xsVmlldywgQ29udHJvbFN0YXRlcyBzdGF0
ZXMpCitOU1ZpZXcgKlRoZW1lTWFjOjplbnN1cmVkVmlldyhTY3JvbGxWaWV3KiBzY3JvbGxWaWV3
LCBjb25zdCBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzKQogewogICAgIGlmIChOU1ZpZXcg
KmRvY3VtZW50VmlldyA9IHNjcm9sbFZpZXctPmRvY3VtZW50VmlldygpKQogICAgICAgICByZXR1
cm4gZG9jdW1lbnRWaWV3OwpAQCAtNTg2LDcgKzY1Niw3IEBAIE5TVmlldyAqVGhlbWVNYWM6OmVu
c3VyZWRWaWV3KFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIENvbnRyb2xTdGF0ZXMgc3RhdGVzKQog
ICAgIHN0YXRpYyBXZWJDb3JlVGhlbWVWaWV3ICp0aGVtZVZpZXcgPSBbW1dlYkNvcmVUaGVtZVZp
ZXcgYWxsb2NdIGluaXRdOwogICAgIFt0aGVtZVZpZXcgc2V0RnJhbWVTaXplOk5TU2l6ZUZyb21D
R1NpemUoc2Nyb2xsVmlldy0+dG90YWxDb250ZW50c1NpemUoKSldOwogCi0gICAgdGhlbWVXaW5k
b3dIYXNLZXlBcHBlYXJhbmNlID0gIShzdGF0ZXMgJiBXaW5kb3dJbmFjdGl2ZVN0YXRlKTsKKyAg
ICB0aGVtZVdpbmRvd0hhc0tleUFwcGVhcmFuY2UgPSAhKGNvbnRyb2xTdGF0ZXMtPnN0YXRlcygp
ICYgQ29udHJvbFN0YXRlczo6V2luZG93SW5hY3RpdmVTdGF0ZSk7CiAKICAgICByZXR1cm4gdGhl
bWVWaWV3OwogfQpAQCAtNjg5LDE0ICs3NTksMTQgQEAgTGVuZ3RoQm94IFRoZW1lTWFjOjpjb250
cm9sUGFkZGluZyhDb250cm9sUGFydCBwYXJ0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBMZW4K
ICAgICB9CiB9CiAKLXZvaWQgVGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRy
b2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBJbnRSZWN0JiB6b29tZWRSZWN0LCBm
bG9hdCB6b29tRmFjdG9yKSBjb25zdAordm9pZCBUaGVtZU1hYzo6aW5mbGF0ZUNvbnRyb2xQYWlu
dFJlY3QoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyogc3RhdGVzLCBJbnRS
ZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdAogewogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwogICAgIHN3aXRjaCAocGFydCkgewogICAgICAgICBjYXNlIENo
ZWNrYm94UGFydDogewogICAgICAgICAgICAgLy8gV2UgaW5mbGF0ZSB0aGUgcmVjdCBhcyBuZWVk
ZWQgdG8gYWNjb3VudCBmb3IgcGFkZGluZyBpbmNsdWRlZCBpbiB0aGUgY2VsbCB0byBhY2NvbW1v
ZGF0ZSB0aGUgY2hlY2tib3gKICAgICAgICAgICAgIC8vIHNoYWRvdyIgYW5kIHRoZSBjaGVjay4g
IFdlIGRvbid0IGNvbnNpZGVyIHRoaXMgcGFydCBvZiB0aGUgYm91bmRzIG9mIHRoZSBjb250cm9s
IGluIFdlYktpdC4KLSAgICAgICAgICAgIE5TQ2VsbCAqY2VsbCA9IGNoZWNrYm94KHN0YXRlcywg
em9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBOU0NlbGwgKmNlbGwgPSBzaGFy
ZWRDaGVja2JveENlbGwoc3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsKICAgICAgICAg
ICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBbY2VsbCBjb250cm9sU2l6ZV07CiAgICAg
ICAgICAgICBJbnRTaXplIHpvb21lZFNpemUgPSBjaGVja2JveFNpemVzKClbY29udHJvbFNpemVd
OwogICAgICAgICAgICAgem9vbWVkU2l6ZS5zZXRIZWlnaHQoem9vbWVkU2l6ZS5oZWlnaHQoKSAq
IHpvb21GYWN0b3IpOwpAQCAtNzQ1LDcgKzgxNSw3IEBAIHZvaWQgVGhlbWVNYWM6OmluZmxhdGVD
b250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBJ
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCi12b2lkIFRoZW1lTWFjOjpwYWlu
dChDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBT
Y3JvbGxWaWV3KiBzY3JvbGxWaWV3KSBjb25zdAordm9pZCBUaGVtZU1hYzo6cGFpbnQoQ29udHJv
bFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyogc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZp
ZXcqIHNjcm9sbFZpZXcpCiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7CiAgICAgICAgIGNhc2UgQ2hl
Y2tib3hQYXJ0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA1Yjdi
Y2E1YjY0MzIzNmUwMzVhZTU0MjgxM2E4ZWI5ODVlOGU5MWRkLi43MDExNjYwMDI2Y2M3Nzg2ZDQ5
MmNlNTY1MWU1Y2U3ZDdiNzQyODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcApAQCAtMTAyLDYgKzEwMiw3IEBAIFJlbmRlckJveDo6UmVuZGVyQm94KEVsZW1lbnQmIGVs
ZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlCiAgICAgLCBt
X21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKICAgICAsIG1fbWF4UHJlZmVycmVkTG9naWNh
bFdpZHRoKC0xKQogICAgICwgbV9pbmxpbmVCb3hXcmFwcGVyKDApCisgICAgLCBtX3JlcGFpbnRU
aW1lcih0aGlzLCAmUmVuZGVyQm94OjpyZXBhaW50VGltZXJGaXJlZCkKIHsKICAgICBzZXRJc0Jv
eCgpOwogfQpAQCAtMTExLDEyICsxMTIsMTYgQEAgUmVuZGVyQm94OjpSZW5kZXJCb3goRG9jdW1l
bnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmEKICAg
ICAsIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKC0xKQogICAgICwgbV9tYXhQcmVmZXJyZWRM
b2dpY2FsV2lkdGgoLTEpCiAgICAgLCBtX2lubGluZUJveFdyYXBwZXIoMCkKKyAgICAsIG1fcmVw
YWludFRpbWVyKHRoaXMsICZSZW5kZXJCb3g6OnJlcGFpbnRUaW1lckZpcmVkKQogewogICAgIHNl
dElzQm94KCk7CiB9CiAKIFJlbmRlckJveDo6flJlbmRlckJveCgpCiB7CisgICAgbV9yZXBhaW50
VGltZXIuc3RvcCgpOworICAgIGlmIChoYXNDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIodGhpcykp
CisgICAgICAgIHJlbW92ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcih0aGlzKTsKIH0KIAogUmVu
ZGVyUmVnaW9uKiBSZW5kZXJCb3g6OmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMoUmVuZGVyUmVn
aW9uKiByZWdpb24pIGNvbnN0CkBAIC0xMjIxLDcgKzEyMjYsMjIgQEAgdm9pZCBSZW5kZXJCb3g6
OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWkKICAgICAvLyBJZiB3ZSBoYXZlIGEgbmF0aXZlIHRoZW1lIGFwcGVhcmFuY2UsIHBh
aW50IHRoYXQgYmVmb3JlIHBhaW50aW5nIG91ciBiYWNrZ3JvdW5kLgogICAgIC8vIFRoZSB0aGVt
ZSB3aWxsIHRlbGwgdXMgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIGFsc28gcGFpbnQgdGhlIENT
UyBiYWNrZ3JvdW5kLgogICAgIEludFJlY3Qgc25hcHBlZFBhaW50UmVjdChwaXhlbFNuYXBwZWRJ
bnRSZWN0KHBhaW50UmVjdCkpOwotICAgIGJvb2wgdGhlbWVQYWludGVkID0gc3R5bGUoKS5oYXNB
cHBlYXJhbmNlKCkgJiYgIXRoZW1lKCkucGFpbnQodGhpcywgcGFpbnRJbmZvLCBzbmFwcGVkUGFp
bnRSZWN0KTsKKworICAgIENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMgPSBudWxscHRyOwor
ICAgIGlmIChzdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkgeworICAgICAgICBpZiAoaGFzQ29udHJv
bFN0YXRlc0ZvclJlbmRlcmVyKHRoaXMpKQorICAgICAgICAgICAgY29udHJvbFN0YXRlcyA9IGNv
bnRyb2xTdGF0ZXNGb3JSZW5kZXJlcih0aGlzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBjb250cm9sU3RhdGVzID0gbmV3IENvbnRyb2xTdGF0ZXMoKTsKKyAgICAgICAgICAgIGFkZENv
bnRyb2xTdGF0ZXNGb3JSZW5kZXJlcih0aGlzLCBjb250cm9sU3RhdGVzKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGJvb2wgdGhlbWVQYWludGVkID0gc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkg
JiYgIXRoZW1lKCkucGFpbnQodGhpcywgY29udHJvbFN0YXRlcywgcGFpbnRJbmZvLCBzbmFwcGVk
UGFpbnRSZWN0KTsKKworICAgIGlmIChjb250cm9sU3RhdGVzICYmIGNvbnRyb2xTdGF0ZXMtPm5l
ZWRzUmVwYWludCgpKQorICAgICAgICBtX3JlcGFpbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CisK
ICAgICBpZiAoIXRoZW1lUGFpbnRlZCkgewogICAgICAgICBpZiAoYmxlZWRBdm9pZGFuY2UgPT0g
QmFja2dyb3VuZEJsZWVkQmFja2dyb3VuZE92ZXJCb3JkZXIpCiAgICAgICAgICAgICBwYWludEJv
cmRlcihwYWludEluZm8sIHBhaW50UmVjdCwgc3R5bGUoKSwgYmxlZWRBdm9pZGFuY2UpOwpAQCAt
NDcyOSw0ICs0NzQ5LDEwIEBAIExheW91dFVuaXQgUmVuZGVyQm94OjpvZmZzZXRGcm9tTG9naWNh
bFRvcE9mRmlyc3RQYWdlKCkgY29uc3QKICAgICByZXR1cm4gY29udGFpbmVyQmxvY2stPm9mZnNl
dEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSArIGxvZ2ljYWxUb3AoKTsKIH0KIAordm9pZCBS
ZW5kZXJCb3g6OnJlcGFpbnRUaW1lckZpcmVkKFRpbWVyPFJlbmRlckJveD4mKQoreworICAgIGlm
ICghZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKQorICAgICAgICB0aGlzLT5yZXBhaW50KCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAppbmRleCBmOTIwYzVjMDMxZjIxNzY5Njk5NjM1YzM1MGY4YTY4N2Q0ODE5NTIxLi4wYWYyNTZk
ZDUwMDUxOTA2MGI3ZDMwZTVhNjcyZTEwNmVlZTk5M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCkBAIC03MjEsOCArNzIxLDEyIEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8
UmVuZGVyT3ZlcmZsb3c+IG1fb3ZlcmZsb3c7CiAKIHByaXZhdGU6CisgICAgdm9pZCByZXBhaW50
VGltZXJGaXJlZChUaW1lcjxSZW5kZXJCb3g+Jik7CisKICAgICAvLyBVc2VkIHRvIHN0b3JlIHN0
YXRlIGJldHdlZW4gc3R5bGVXaWxsQ2hhbmdlIGFuZCBzdHlsZURpZENoYW5nZQogICAgIHN0YXRp
YyBib29sIHNfaGFkT3ZlcmZsb3dDbGlwOworCisgICAgVGltZXI8UmVuZGVyQm94PiBtX3JlcGFp
bnRUaW1lcjsKIH07CiAKIFJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJCb3gsIGlzQm94
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggM2Zj
YTVhNzVlYzYwYjgyZTRiNzgyMjM3ZWE5ZDBmYjVhN2Q5MzU5NC4uZGMyYWNiMWY4ZTg5ZjU0ZmYz
Y2E0ZGIxOWViMGU4MGEyYTIwY2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUu
aCIKICNpbmNsdWRlICJBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ29udGVudERh
dGEuaCIKKyNpbmNsdWRlICJDb250cm9sU3RhdGVzLmgiCiAjaW5jbHVkZSAiQ3Vyc29yTGlzdC5o
IgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC02Niw3
ICs2NywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgUmVuZGVyRWxlbWVudDo6c19h
ZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsKIGJvb2wgUmVuZGVyRWxlbWVudDo6c19ub0xvbmdl
ckFmZmVjdHNQYXJlbnRCbG9jayA9IGZhbHNlOwotCisgICAgCitzdGF0aWMgSGFzaE1hcDxjb25z
dCBSZW5kZXJPYmplY3QqLCBDb250cm9sU3RhdGVzKj4mIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1h
cCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8Y29uc3QgUmVuZGVyT2Jq
ZWN0KiwgQ29udHJvbFN0YXRlcyo+PiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KKyAgICAKIFJl
bmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJPYmpl
Y3QoZWxlbWVudCkKICAgICAsIG1fYmFzZVR5cGVGbGFncyhiYXNlVHlwZUZsYWdzKQpAQCAtMTMz
OCw0ICsxMzQ1LDI4IEBAIFJlbmRlck5hbWVkRmxvd1RocmVhZCogUmVuZGVyRWxlbWVudDo6cmVu
ZGVyTmFtZWRGbG93VGhyZWFkV3JhcHBlcigpCiAgICAgcmV0dXJuIHJlbmRlcmVyICYmIHJlbmRl
cmVyLT5pc1JlbmRlck5hbWVkRmxvd1RocmVhZCgpID8gdG9SZW5kZXJOYW1lZEZsb3dUaHJlYWQo
cmVuZGVyZXIpIDogbnVsbHB0cjsKIH0KIAorYm9vbCBSZW5kZXJFbGVtZW50OjpoYXNDb250cm9s
U3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvKQoreworICAgIHJldHVybiBj
b250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKS5jb250YWlucyhvKTsKK30KKworQ29udHJvbFN0YXRl
cyogUmVuZGVyRWxlbWVudDo6Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCogbykKK3sKKyAgICByZXR1cm4gY29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkuZ2V0KG8p
OworfQorCit2b2lkIFJlbmRlckVsZW1lbnQ6OnJlbW92ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJl
cihjb25zdCBSZW5kZXJPYmplY3QqIG8pCit7CisgICAgQ29udHJvbFN0YXRlcyogc3RhdGVzID0g
Y29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkuZ2V0KG8pOworICAgIGlmIChzdGF0ZXMpIHsKKyAg
ICAgICAgY29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkucmVtb3ZlKG8pOworICAgICAgICBkZWxl
dGUgc3RhdGVzOworICAgIH0KK30KKwordm9pZCBSZW5kZXJFbGVtZW50OjphZGRDb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvLCBDb250cm9sU3RhdGVzKiBzdGF0
ZXMpCit7CisgICAgY29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkuYWRkKG8sIHN0YXRlcyk7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDAyMjMw
NjA2ZGI0Yjc5NWIyMjUxZGMyNWNhMjU5ZTIzYTM5Y2UxZjkuLmU2NGI3MWU1MTcyMDQ2OTZjOGNk
MzU0ZWUyOGQ3OTg0MzUxNjAyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaApAQCAtMjcsNiArMjcsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IENvbnRyb2xTdGF0ZXM7CisKIGNsYXNzIFJlbmRlckVsZW1lbnQgOiBwdWJsaWMgUmVuZGVyT2Jq
ZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW5kZXJFbGVtZW50KCk7CkBAIC0xODIsNiAr
MTg0LDExIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldFJlbmRlcklubGluZUFsd2F5c0NyZWF0
ZXNMaW5lQm94ZXMoYm9vbCBiKSB7IG1fcmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hl
cyA9IGI7IH0KICAgICBib29sIHJlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXMoKSBj
b25zdCB7IHJldHVybiBtX3JlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXM7IH0KIAor
ICAgIHN0YXRpYyBib29sIGhhc0NvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJP
YmplY3QqKTsKKyAgICBzdGF0aWMgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlc0ZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlck9iamVjdCopOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZUNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCBh
ZGRDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgQ29udHJvbFN0
YXRlcyopOworCiBwcml2YXRlOgogICAgIHZvaWQgbm9kZSgpIGNvbnN0ID0gZGVsZXRlOwogICAg
IHZvaWQgbm9uUHNldWRvTm9kZSgpIGNvbnN0ID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggNThlZjM3YWVjNTdkYjA3NzFlZDVkYTUyZTI5ZWNj
ZTg0MmU5NzgyMy4uZDAyN2UwMzQ0OTQ4ZTFmZGVjNjdkM2JlODYwNTg4NjE4NzUxY2EzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0yMyw2ICsyMyw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKIAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMu
aCIKKyNpbmNsdWRlICJDb250cm9sU3RhdGVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKQEAgLTI2Miw3ICsy
NjMsNyBAQCB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZShTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLCBSZW5kZXJTdHlsZSYgc3R5bGUsCiAgICAgfQogfQogCi1ib29sIFJlbmRlclRo
ZW1lOjpwYWludChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoUmVuZGVyT2JqZWN0KiBv
LCBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICAvLyBJZiBwYWludGluZyBpcyBkaXNhYmxlZCwg
YnV0IHdlIGFyZW4ndCB1cGRhdGluZyBjb250cm9sIHRpbnRzLCB0aGVuIGp1c3QgYmFpbC4KICAg
ICAvLyBJZiB3ZSBhcmUgdXBkYXRpbmcgY29udHJvbCB0aW50cywganVzdCBzY2hlZHVsZSBhIHJl
cGFpbnQgaWYgdGhlIHRoZW1lIHN1cHBvcnRzIHRpbnRpbmcKQEAgLTI4Niw3ICsyODcsOCBAQCBi
b29sIFJlbmRlclRoZW1lOjpwYWludChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBJbnRSZQogICAgIGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6CiAgICAg
Y2FzZSBCdXR0b25QYXJ0OgogICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKLSAgICAgICAg
bV90aGVtZS0+cGFpbnQocGFydCwgY29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG8pLCBjb25zdF9j
YXN0PEdyYXBoaWNzQ29udGV4dCo+KHBhaW50SW5mby5jb250ZXh0KSwgciwgby0+c3R5bGUoKS5l
ZmZlY3RpdmVab29tKCksICZvLT52aWV3KCkuZnJhbWVWaWV3KCkpOworICAgICAgICB1cGRhdGVD
b250cm9sU3RhdGVzRm9yUmVuZGVyZXIobywgY29udHJvbFN0YXRlcyk7CisgICAgICAgIG1fdGhl
bWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIGNvbnN0X2Nhc3Q8R3JhcGhpY3NDb250ZXh0
Kj4ocGFpbnRJbmZvLmNvbnRleHQpLCByLCBvLT5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwgJm8t
PnZpZXcoKS5mcmFtZVZpZXcoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0
OgogICAgICAgICBicmVhazsKQEAgLTcxMyw3ICs3MTUsOCBAQCBib29sIFJlbmRlclRoZW1lOjpp
c0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBCb3JkZXJEYXRh
JiBibwogdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0UmVwYWludFJlY3QoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBvLCBJbnRSZWN0JiByKQogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgbV90aGVtZS0+
aW5mbGF0ZUNvbnRyb2xQYWludFJlY3Qoby0+c3R5bGUoKS5hcHBlYXJhbmNlKCksIGNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcihvKSwgciwgby0+c3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOworICAg
IENvbnRyb2xTdGF0ZXMgc3RhdGVzKGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobykp
OworICAgIG1fdGhlbWUtPmluZmxhdGVDb250cm9sUGFpbnRSZWN0KG8tPnN0eWxlKCkuYXBwZWFy
YW5jZSgpLCAmc3RhdGVzLCByLCBvLT5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShvKTsKICAgICBVTlVTRURfUEFSQU0ocik7CkBAIC03MjUsMTQgKzcy
OCwxNCBAQCBib29sIFJlbmRlclRoZW1lOjpzdXBwb3J0c0ZvY3VzUmluZyhjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUpIGNvbnN0CiAgICAgcmV0dXJuIChzdHlsZS0+aGFzQXBwZWFyYW5jZSgpICYm
IHN0eWxlLT5hcHBlYXJhbmNlKCkgIT0gVGV4dEZpZWxkUGFydCAmJiBzdHlsZS0+YXBwZWFyYW5j
ZSgpICE9IFRleHRBcmVhUGFydCAmJiBzdHlsZS0+YXBwZWFyYW5jZSgpICE9IE1lbnVsaXN0QnV0
dG9uUGFydCAmJiBzdHlsZS0+YXBwZWFyYW5jZSgpICE9IExpc3Rib3hQYXJ0KTsKIH0KIAotYm9v
bCBSZW5kZXJUaGVtZTo6c3RhdGVDaGFuZ2VkKFJlbmRlck9iamVjdCogbywgQ29udHJvbFN0YXRl
IHN0YXRlKSBjb25zdAorYm9vbCBSZW5kZXJUaGVtZTo6c3RhdGVDaGFuZ2VkKFJlbmRlck9iamVj
dCogbywgQ29udHJvbFN0YXRlczo6U3RhdGVzIHN0YXRlKSBjb25zdAogewogICAgIC8vIERlZmF1
bHQgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGUgY29udHJvbHMgZG9uJ3QgcmVzcG9uZCB0byBj
aGFuZ2VzIGluIDpob3ZlciBzdGF0ZQotICAgIGlmIChzdGF0ZSA9PSBIb3ZlclN0YXRlICYmICFz
dXBwb3J0c0hvdmVyKCZvLT5zdHlsZSgpKSkKKyAgICBpZiAoc3RhdGUgPT0gQ29udHJvbFN0YXRl
czo6SG92ZXJTdGF0ZSAmJiAhc3VwcG9ydHNIb3Zlcigmby0+c3R5bGUoKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIEFzc3VtZSBwcmVzc2VkIHN0YXRlIGlzIG9ubHkgcmVzcG9u
ZGVkIHRvIGlmIHRoZSBjb250cm9sIGlzIGVuYWJsZWQuCi0gICAgaWYgKHN0YXRlID09IFByZXNz
ZWRTdGF0ZSAmJiAhaXNFbmFibGVkKG8pKQorICAgIGlmIChzdGF0ZSA9PSBDb250cm9sU3RhdGVz
OjpQcmVzc2VkU3RhdGUgJiYgIWlzRW5hYmxlZChvKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gUmVwYWludCB0aGUgY29udHJvbC4KQEAgLTc0MCwzNCArNzQzLDQwIEBAIGJvb2wg
UmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdlZChSZW5kZXJPYmplY3QqIG8sIENvbnRyb2xTdGF0ZSBz
dGF0ZSkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ29udHJvbFN0YXRlcyBSZW5kZXJU
aGVtZTo6Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29u
c3QKK3ZvaWQgUmVuZGVyVGhlbWU6OnVwZGF0ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25z
dCBSZW5kZXJPYmplY3QqIG8sIENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXMpIGNvbnN0CiB7
Ci0gICAgQ29udHJvbFN0YXRlcyByZXN1bHQgPSAwOworICAgIENvbnRyb2xTdGF0ZXMgbmV3U3Rh
dGVzID0gZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvKTsKKyAgICBjb250cm9sU3Rh
dGVzLT5zZXRTdGF0ZXMobmV3U3RhdGVzLnN0YXRlcygpKTsKK30KKworQ29udHJvbFN0YXRlczo6
U3RhdGVzIFJlbmRlclRoZW1lOjpleHRyYWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCogbykgY29uc3QKK3sKKyAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMgc3Rh
dGVzID0gMDsKICAgICBpZiAoaXNIb3ZlcmVkKG8pKSB7Ci0gICAgICAgIHJlc3VsdCB8PSBIb3Zl
clN0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6SG92ZXJTdGF0ZTsKICAg
ICAgICAgaWYgKGlzU3BpblVwQnV0dG9uUGFydEhvdmVyZWQobykpCi0gICAgICAgICAgICByZXN1
bHQgfD0gU3BpblVwU3RhdGU7CisgICAgICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6
U3BpblVwU3RhdGU7CiAgICAgfQogICAgIGlmIChpc1ByZXNzZWQobykpIHsKLSAgICAgICAgcmVz
dWx0IHw9IFByZXNzZWRTdGF0ZTsKKyAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OlBy
ZXNzZWRTdGF0ZTsKICAgICAgICAgaWYgKGlzU3BpblVwQnV0dG9uUGFydFByZXNzZWQobykpCi0g
ICAgICAgICAgICByZXN1bHQgfD0gU3BpblVwU3RhdGU7CisgICAgICAgICAgICBzdGF0ZXMgfD0g
Q29udHJvbFN0YXRlczo6U3BpblVwU3RhdGU7CiAgICAgfQogICAgIGlmIChpc0ZvY3VzZWQobykg
JiYgby0+c3R5bGUoKS5vdXRsaW5lU3R5bGVJc0F1dG8oKSkKLSAgICAgICAgcmVzdWx0IHw9IEZv
Y3VzU3RhdGU7CisgICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVzOjpGb2N1c1N0YXRlOwog
ICAgIGlmIChpc0VuYWJsZWQobykpCi0gICAgICAgIHJlc3VsdCB8PSBFbmFibGVkU3RhdGU7Cisg
ICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVzOjpFbmFibGVkU3RhdGU7CiAgICAgaWYgKGlz
Q2hlY2tlZChvKSkKLSAgICAgICAgcmVzdWx0IHw9IENoZWNrZWRTdGF0ZTsKKyAgICAgICAgc3Rh
dGVzIHw9IENvbnRyb2xTdGF0ZXM6OkNoZWNrZWRTdGF0ZTsKICAgICBpZiAoaXNSZWFkT25seUNv
bnRyb2wobykpCi0gICAgICAgIHJlc3VsdCB8PSBSZWFkT25seVN0YXRlOworICAgICAgICBzdGF0
ZXMgfD0gQ29udHJvbFN0YXRlczo6UmVhZE9ubHlTdGF0ZTsKICAgICBpZiAoaXNEZWZhdWx0KG8p
KQotICAgICAgICByZXN1bHQgfD0gRGVmYXVsdFN0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29u
dHJvbFN0YXRlczo6RGVmYXVsdFN0YXRlOwogICAgIGlmICghaXNBY3RpdmUobykpCi0gICAgICAg
IHJlc3VsdCB8PSBXaW5kb3dJbmFjdGl2ZVN0YXRlOworICAgICAgICBzdGF0ZXMgfD0gQ29udHJv
bFN0YXRlczo6V2luZG93SW5hY3RpdmVTdGF0ZTsKICAgICBpZiAoaXNJbmRldGVybWluYXRlKG8p
KQotICAgICAgICByZXN1bHQgfD0gSW5kZXRlcm1pbmF0ZVN0YXRlOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVzOjpJbmRldGVybWluYXRlU3RhdGU7
CisgICAgcmV0dXJuIHN0YXRlczsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZTo6aXNBY3RpdmUoY29u
c3QgUmVuZGVyT2JqZWN0KiBvKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWUuaAppbmRleCA2ODU0NjM0NjczODk4MWMzYTNhYTJkYzRmYmY5OTdhNTE3MDZmZGI4Li45YmQ4
MGU5OGMxYTNiNDE0MDhjODdlMzA2YWU1MGVhZDJkZWNiMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBSZW5kZXJUaGVt
ZV9oCiAjZGVmaW5lIFJlbmRlclRoZW1lX2gKIAorI2luY2x1ZGUgIkNvbnRyb2xTdGF0ZXMuaCIK
ICNpZiBVU0UoTkVXX1RIRU1FKQogI2luY2x1ZGUgIlRoZW1lLmgiCiAjZWxzZQpAQCAtNzgsNyAr
NzksNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHRvIHBhaW50IHRo
ZSB3aWRnZXQgYXMgYSBiYWNrZ3JvdW5kIG9mIHRoZSBSZW5kZXJPYmplY3QuICBBIHdpZGdldCdz
IGZvcmVncm91bmQsIGUuZy4sIHRoZQogICAgIC8vIHRleHQgb2YgYSBidXR0b24sIGlzIGFsd2F5
cyByZW5kZXJlZCBieSB0aGUgZW5naW5lIGl0c2VsZi4gIFRoZSBib29sZWFuIHJldHVybiB2YWx1
ZSBpbmRpY2F0ZXMKICAgICAvLyB3aGV0aGVyIHRoZSBDU1MgYm9yZGVyL2JhY2tncm91bmQgc2hv
dWxkIGFsc28gYmUgcGFpbnRlZC4KLSAgICBib29sIHBhaW50KFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIHBhaW50KFJlbmRlck9iamVj
dCosIENvbnRyb2xTdGF0ZXMqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAg
ICAgYm9vbCBwYWludEJvcmRlck9ubHkoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOwogICAgIGJvb2wgcGFpbnREZWNvcmF0aW9ucyhSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKQEAgLTEyNiw3ICsxMjcsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIgYSByZWxl
dmFudCBzdGF0ZSBjaGFuZ2VzIG9uIGEgcGFydGljdWxhciB0aGVtZWQgb2JqZWN0LCBlLmcuLCB0
aGUgbW91c2UgYmVjb21lcyBwcmVzc2VkCiAgICAgLy8gb3IgYSBjb250cm9sIGJlY29tZXMgZGlz
YWJsZWQuCi0gICAgdmlydHVhbCBib29sIHN0YXRlQ2hhbmdlZChSZW5kZXJPYmplY3QqLCBDb250
cm9sU3RhdGUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdGF0ZUNoYW5nZWQoUmVuZGVyT2Jq
ZWN0KiwgQ29udHJvbFN0YXRlczo6U3RhdGVzKSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWV0aG9k
IGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgdGhlbWUgY2hhbmdlcyBvbiB0aGUgc3lzdGVtIGluIG9y
ZGVyIHRvIGZsdXNoIGNhY2hlZCByZXNvdXJjZXMgZnJvbSB0aGUKICAgICAvLyBvbGQgdGhlbWUu
CkBAIC0zNjksOCArMzcwLDggQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKIHB1YmxpYzoKLSAgICAv
LyBNZXRob2RzIGZvciBzdGF0ZSBxdWVyeWluZwotICAgIENvbnRyb2xTdGF0ZXMgY29udHJvbFN0
YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3Q7CisgICAgdm9pZCB1
cGRhdGVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgQ29udHJv
bFN0YXRlcyopIGNvbnN0OworICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBleHRyYWN0Q29udHJv
bFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIGJvb2wg
aXNBY3RpdmUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgYm9vbCBpc0NoZWNrZWQo
Y29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUoY29u
c3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0KaW5kZXggMDU2ZTlkNDc2ZjQ4NDQ0NGE1ZmUxZDIwYjEwNTdkODRmN2IwNjli
OS4uYWQ1M2I0Y2EzZDdlNzIxMDNiMjI5MzJmNDM0OWI5ZjQ3OGQzNzBlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjEyLDcgKzIxMiw4IEBAIFJl
bmRlclRoZW1lTWFjOjp+UmVuZGVyVGhlbWVNYWMoKQogCiBOU1ZpZXcqIFJlbmRlclRoZW1lTWFj
Ojpkb2N1bWVudFZpZXdGb3IoUmVuZGVyT2JqZWN0KiBvKSBjb25zdAogewotICAgIHJldHVybiBU
aGVtZU1hYzo6ZW5zdXJlZFZpZXcoJm8tPnZpZXcoKS5mcmFtZVZpZXcoKSwgY29udHJvbFN0YXRl
c0ZvclJlbmRlcmVyKG8pKTsKKyAgICBDb250cm9sU3RhdGVzIHN0YXRlcyhleHRyYWN0Q29udHJv
bFN0YXRlc0ZvclJlbmRlcmVyKG8pKTsKKyAgICByZXR1cm4gVGhlbWVNYWM6OmVuc3VyZWRWaWV3
KCZvLT52aWV3KCkuZnJhbWVWaWV3KCksICZzdGF0ZXMpOwogfQogCiAjaWYgRU5BQkxFKFZJREVP
KQo=
</data>
<flag name="review"
          id="252339"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>