<?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>109222</bug_id>
          
          <creation_ts>2013-02-07 13:14:38 -0800</creation_ts>
          <short_desc>[Qt][WK2] Move Color picker on top of the C API</short_desc>
          <delta_ts>2014-02-03 03:24:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>108471</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Pierre Rossi">pierre.rossi</reporter>
          <assigned_to name="Pierre Rossi">pierre.rossi</assigned_to>
          <cc>abecsi</cc>
    
    <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>827834</commentid>
    <comment_count>0</comment_count>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2013-02-07 13:14:38 -0800</bug_when>
    <thetext>[Qt][WK2] Move Color picker on top of the C API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827877</commentid>
    <comment_count>1</comment_count>
      <attachid>187171</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2013-02-07 13:56:27 -0800</bug_when>
    <thetext>Created attachment 187171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842814</commentid>
    <comment_count>2</comment_count>
      <attachid>187171</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-02-27 01:04:27 -0800</bug_when>
    <thetext>Comment on attachment 187171
Patch

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

&gt; Source/WebKit2/UIProcess/qt/QtWebPageUIClient.cpp:200
&gt; +void QtWebPageUIClient::showColorPicker(WKPageRef, WKStringRef initialColor, WKColorPickerResultListenerRef listener, const void *clientInfo)
&gt; +{
&gt; +    toQtWebPageUIClient(clientInfo)-&gt;showColorPicker(listener, QColor(toWTFString(initialColor)));
&gt; +}
&gt; +
&gt; +void QtWebPageUIClient::hideColorPicker(WKPageRef, const void *clientInfo)
&gt; +{
&gt; +    toQtWebPageUIClient(clientInfo)-&gt;hideColorPicker();
&gt; +}

Given the few lines of code I suggest to merge this with the non-static showColorPicker and then just wrote

d-&gt;m_colorPicker.reset(new QWebColorPicker(...));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842815</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-02-27 01:05:05 -0800</bug_when>
    <thetext>Patch looks good to me overall, modulo the small suggested change.

Pinging Benjamin for WK2 sign-off :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842837</commentid>
    <comment_count>4</comment_count>
      <attachid>187171</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-27 01:34:44 -0800</bug_when>
    <thetext>Comment on attachment 187171
Patch

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

I&apos;ll have to look at this again. Simon, can you review then ping me?

&gt; Source/WebKit2/Target.pri:829
&gt; +# FIXME: move this along once the QQuickWebView is a bit less tangled.

I think this could be a little more descriptive. It is not clear what you mean.

&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker.cpp:3
&gt; + * Copyright (C) 2012 Intel Corporation. All rights reserved.
&gt; + * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies)

Hum, hum, no love for Digia in 2013? ;)

&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker.cpp:33
&gt; +#include &lt;wtf/text/StringBuilder.h&gt;

Do you use it somewhere?

&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker.cpp:79
&gt; +QWebColorPicker::~QWebColorPicker()
&gt; +{
&gt; +}

I don&apos;t think you will need this :)

&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker.cpp:87
&gt; +    if (!component) {
&gt; +        delete contextObject;
&gt; +        return;
&gt; +    }

This looks so fragile :(

&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker.cpp:102
&gt; +    // Needs to be enqueue because it might trigger deletion.

I am not sure what is the &quot;it&quot; that can trigger deletion.
It could be useful to explain the cases where that would happen.

&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker.cpp:130
&gt; +    WKRetainPtr&lt;WKStringRef&gt; colorString(AdoptWK, WKStringCreateWithUTF8CString(coreColor.serialized().utf8().data()));

toApi(coreColor.serialized()) would be enough?

&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker.cpp:131
&gt; +    WKColorPickerResultListenerSetColor(m_listener, colorString.get());

I am such a huge fan of this API. Passing a color by string is brilliant :(

That&apos;s why we cannot have nice things I guess.
As far as I am concerned, you are free to break it or expend it for something better.

&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker_p.h:2
&gt; + * Copyright (C) 2012 Intel Corporation. All rights reserved.

... :)

&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker_p.h:40
&gt; +namespace WebCore {
&gt; +class Color;
&gt; +}

You need this in the header?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843164</commentid>
    <comment_count>5</comment_count>
      <attachid>187171</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2013-02-27 09:31:03 -0800</bug_when>
    <thetext>Comment on attachment 187171
Patch

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

Thanks benjaminp, gonna try and clean that up a little... :)

&gt;&gt; Source/WebKit2/Target.pri:829
&gt;&gt; +# FIXME: move this along once the QQuickWebView is a bit less tangled.
&gt; 
&gt; I think this could be a little more descriptive. It is not clear what you mean.

yeah, I figured that was too cryptic. Hence the link below ;)
But I&apos;ll rephrase it.

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker.cpp:3
&gt;&gt; + * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies)
&gt; 
&gt; Hum, hum, no love for Digia in 2013? ;)

Dude, this thing is way too complicated to memorize ! Actually this shows up as a rename from WebColorChooserProxyQt in git, but the review tool doesn&apos;t help much there...

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker.cpp:33
&gt;&gt; +#include &lt;wtf/text/StringBuilder.h&gt;
&gt; 
&gt; Do you use it somewhere?

Stray stuff after I was puzzled with how to deal with the string representation of a color, nice catch !

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker.cpp:79
&gt;&gt; +}
&gt; 
&gt; I don&apos;t think you will need this :)

Probably should clean that up indeed, did a dumb massive rename.

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker.cpp:87
&gt;&gt; +    }
&gt; 
&gt; This looks so fragile :(

Just moving stuff around. It seemed to work before...
Indeed, that pattern might not be the most pleasing to the eye...

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker.cpp:131
&gt;&gt; +    WKColorPickerResultListenerSetColor(m_listener, colorString.get());
&gt; 
&gt; I am such a huge fan of this API. Passing a color by string is brilliant :(
&gt; 
&gt; That&apos;s why we cannot have nice things I guess.
&gt; As far as I am concerned, you are free to break it or expend it for something better.

Will do ! (break I mean) I actually wanted to add the element rect in there anyway ;)

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker_p.h:2
&gt;&gt; + * Copyright (C) 2012 Intel Corporation. All rights reserved.
&gt; 
&gt; ... :)

Hey, this is originally a generous donation done by an Intel guy, I&apos;m not gonna take away the credit ! But indeed, maybe Digia could get a bit of love...

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qwebcolorpicker_p.h:40
&gt;&gt; +}
&gt; 
&gt; You need this in the header?

meh, probably not anymore... nice catch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844084</commentid>
    <comment_count>6</comment_count>
      <attachid>190730</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2013-02-28 08:02:39 -0800</bug_when>
    <thetext>Created attachment 190730
Patch

Since the use of Color(const String&amp;) is apparently only intended for use by the DOM, and not WebKit, let&apos;s revamp that API a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844091</commentid>
    <comment_count>7</comment_count>
      <attachid>190730</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-02-28 08:12:05 -0800</bug_when>
    <thetext>Comment on attachment 190730
Patch

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

LGTM overall. Two small nitpicks.

&gt; Source/WebKit2/Shared/API/c/WKBase.h:96
&gt; +typedef uint32_t WKARGB;

I suggest something a little more verbose (might be misread as &quot;ARGH!&quot; :)

How about WKColorARGB32? or WKARGB32Color?

&gt; Source/WebKit2/UIProcess/qt/QtPageClient.cpp:226
&gt; +    notImplemented();

I&apos;d leave out the notImplemented() because it is implemented after all.

Alternative the pure virtual method could become one with an empty default impl like this, since we want to promote the C API then and ultimately it can be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844141</commentid>
    <comment_count>8</comment_count>
      <attachid>190730</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2013-02-28 09:07:43 -0800</bug_when>
    <thetext>Comment on attachment 190730
Patch

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

&gt;&gt; Source/WebKit2/Shared/API/c/WKBase.h:96
&gt;&gt; +typedef uint32_t WKARGB;
&gt; 
&gt; I suggest something a little more verbose (might be misread as &quot;ARGH!&quot; :)
&gt; 
&gt; How about WKColorARGB32? or WKARGB32Color?

Haha, agreed, people would ruin their keyboard trying to pronounce this. I&apos;ll go with your first proposition ;)

&gt;&gt; Source/WebKit2/UIProcess/qt/QtPageClient.cpp:226
&gt;&gt; +    notImplemented();
&gt; 
&gt; I&apos;d leave out the notImplemented() because it is implemented after all.
&gt; 
&gt; Alternative the pure virtual method could become one with an empty default impl like this, since we want to promote the C API then and ultimately it can be removed.

true, that&apos;d clean things up once and for all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844153</commentid>
    <comment_count>9</comment_count>
      <attachid>190742</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2013-02-28 09:35:54 -0800</bug_when>
    <thetext>Created attachment 190742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844154</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 09:42:28 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935670</commentid>
    <comment_count>11</comment_count>
      <attachid>190742</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-02 21:21:05 -0700</bug_when>
    <thetext>Comment on attachment 190742
Patch

Qt has been removed, clearing review flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975670</commentid>
    <comment_count>12</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2014-02-03 03:24:53 -0800</bug_when>
    <thetext>=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187171</attachid>
            <date>2013-02-07 13:56:27 -0800</date>
            <delta_ts>2013-02-28 08:02:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109222-20130207225334.patch</filename>
            <type>text/plain</type>
            <size>28879</size>
            <attacher name="Pierre Rossi">pierre.rossi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWVlYTUxMjVkYzE0Yjlj
MzkyYzZhYjI2NmJlZTI5NWQ3NGIxNjViZC4uZTk5YTZmMTZiOWRhMTFmMTkyOGYwNTY3YWJkZDNk
ZTc5OTA3OTU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAyLTA3ICBQaWVy
cmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBN
b3ZlIENvbG9yIHBpY2tlciBvbiB0b3Agb2YgdGhlIEMgQVBJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkyMjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb2xvciBwaWNraW5nIGRlbGVnYXRpb24gY2Fu
IGFscmVhZHkgYmUgZG9uZSB0aHJvdWdoIHRoZSBDIEFQSS4KKyAgICAgICAgQWRqdXN0IHRoZSBz
ZW1hbnRpY3MgdG8gdXNlIHRoZSB0ZXJtIHBpY2tlciBpbnN0ZWFkIG9mIGNob29zZXIgYWxsCisg
ICAgICAgIG92ZXIgdGhlIHBsYWNlLCBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5LgorCisgICAgICAg
ICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcu
Y3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OlFRdWlja1dlYlZpZXdQcml2YXRl
KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OmNvbG9yUGlja2VyKToKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnNldENvbG9yUGlja2VyKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQ
cml2YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJjb2xvcnBpY2tlci5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JDaG9vc2Vy
UHJveHlRdC5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQ29sb3JQaWNrZXJDb250
ZXh0T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6Q29sb3JQaWNrZXJDb250ZXh0T2JqZWN0OjpD
b2xvclBpY2tlckNvbnRleHRPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpDb2xvclBpY2tlckNv
bnRleHRPYmplY3Q6OmN1cnJlbnRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OkNvbG9yUGlja2Vy
Q29udGV4dE9iamVjdDo6ZWxlbWVudFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpDb2xvclBpY2tl
ckNvbnRleHRPYmplY3Q6OmFjY2VwdCk6CisgICAgICAgIChXZWJLaXQ6OkNvbG9yUGlja2VyQ29u
dGV4dE9iamVjdDo6cmVqZWN0KToKKyAgICAgICAgKFdlYktpdDo6UVdlYkNvbG9yUGlja2VyOjpR
V2ViQ29sb3JQaWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpRV2ViQ29sb3JQaWNrZXI6On5RV2Vi
Q29sb3JQaWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpRV2ViQ29sb3JQaWNrZXI6OmNyZWF0ZUl0
ZW0pOgorICAgICAgICAoV2ViS2l0OjpRV2ViQ29sb3JQaWNrZXI6OmNyZWF0ZUNvbnRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpRV2ViQ29sb3JQaWNrZXI6Om5vdGlmeUNvbG9yU2VsZWN0ZWQpOgor
ICAgICAgICAoV2ViS2l0OjpRV2ViQ29sb3JQaWNrZXI6OmVuZFBpY2tlcik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9xdC9xd2ViY29sb3JwaWNrZXJfcC5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuaC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFFXZWJDb2xvclBpY2tlcik6
CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlF0UGFnZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0V2Vi
UGFnZVVJQ2xpZW50OjpRdFdlYlBhZ2VVSUNsaWVudCk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpRdFdlYlBhZ2VVSUNsaWVudDo6c2hvd0NvbG9yUGlja2VyKToKKyAgICAg
ICAgKFdlYktpdDo6UXRXZWJQYWdlVUlDbGllbnQ6OmhpZGVDb2xvclBpY2tlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50Lmg6CisKIDIwMTMtMDItMDcgIENhaW8g
TWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4K
IAogICAgICAgICBbQ29vcmRpbmF0ZWRHcmFwaGljc10gVXNlIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
IHRvIHRyYWNrIGZpeGVkIGxheWVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0
LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggYTIxYzY3M2JlODc2OTVmZDM4
ZjIyM2YzYjVmOGE4Y2RkNDdhNjM2YS4uOGU4NWZjMGYxMWEyZGYzZmY2ZjM0ZTJjN2FkYmMyZjc5
ZWZmZDUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC04MjYsMTEgKzgyNiwxMyBAQCBoYXZlPyhRVFFVSUNL
KSB7CiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAgXAog
ICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwCiAKKyMgRklYTUU6IG1v
dmUgdGhpcyBhbG9uZyBvbmNlIHRoZSBRUXVpY2tXZWJWaWV3IGlzIGEgYml0IGxlc3MgdGFuZ2xl
ZC4KKyMgc2VlIGh0dHA6Ly93a2IudWcvMTA5MjA0CiAgICAgZW5hYmxlPyhJTlBVVF9UWVBFX0NP
TE9SKSB7CiAgICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAgICAgVUlQcm9jZXNzL3F0L1dl
YkNvbG9yQ2hvb3NlclByb3h5UXQuaAorICAgICAgICAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2Vi
Y29sb3JwaWNrZXJfcC5oCiAgICAgICAgIFNPVVJDRVMgKz0gXAotICAgICAgICAgICAgVUlQcm9j
ZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuY3BwCisgICAgICAgICAgICBVSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJjb2xvcnBpY2tlci5jcHAKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IDNhODAxMGE4YmQ3
MmI2OGRhNTUzZGM1NzRmMjE1MmFkMjI5YjBiYzEuLjBhZjMwMjViMTAwMDEwMmQ0ZDIyNzJmNGJj
ZGNhMzJiMmVjM2ZiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIFFRdWlja1dlYlZpZXdQcml2
YXRlOjpRUXVpY2tXZWJWaWV3UHJpdmF0ZShRUXVpY2tXZWJWaWV3KiB2aWV3cG9ydCkKICAgICAs
IHByb3h5QXV0aGVudGljYXRpb25EaWFsb2coMCkKICAgICAsIGZpbGVQaWNrZXIoMCkKICAgICAs
IGRhdGFiYXNlUXVvdGFEaWFsb2coMCkKLSAgICAsIGNvbG9yQ2hvb3NlcigwKQorICAgICwgY29s
b3JQaWNrZXIoMCkKICAgICAsIG1fYmV0d2VlbkxvYWRDb21taXRBbmRGaXJzdEZyYW1lKGZhbHNl
KQogICAgICwgbV91c2VEZWZhdWx0Q29udGVudEl0ZW1TaXplKHRydWUpCiAgICAgLCBtX25hdmln
YXRvclF0T2JqZWN0RW5hYmxlZChmYWxzZSkKQEAgLTEyNDksMjAgKzEyNDksMjAgQEAgdm9pZCBR
UXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpzZXREYXRhYmFzZVF1b3RhRGlhbG9nKFFRbWxDb21w
b25lbnQqIGRhdGFiYXNlUXUKICAgICBlbWl0IGRhdGFiYXNlUXVvdGFEaWFsb2dDaGFuZ2VkKCk7
CiB9CiAKLVFRbWxDb21wb25lbnQqIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OmNvbG9yQ2hv
b3NlcigpIGNvbnN0CitRUW1sQ29tcG9uZW50KiBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpj
b2xvclBpY2tlcigpIGNvbnN0CiB7CiAgICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOwotICAg
IHJldHVybiBkLT5jb2xvckNob29zZXI7CisgICAgcmV0dXJuIGQtPmNvbG9yUGlja2VyOwogfQog
Ci12b2lkIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnNldENvbG9yQ2hvb3NlcihRUW1sQ29t
cG9uZW50KiBjb2xvckNob29zZXIpCit2b2lkIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnNl
dENvbG9yUGlja2VyKFFRbWxDb21wb25lbnQqIGNvbG9yUGlja2VyKQogewogICAgIFFfRChRUXVp
Y2tXZWJWaWV3KTsKLSAgICBpZiAoZC0+Y29sb3JDaG9vc2VyID09IGNvbG9yQ2hvb3NlcikKKyAg
ICBpZiAoZC0+Y29sb3JQaWNrZXIgPT0gY29sb3JQaWNrZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGQtPmNvbG9yQ2hvb3NlciA9IGNvbG9yQ2hvb3NlcjsKLSAgICBlbWl0IGNvbG9yQ2hvb3Nl
ckNoYW5nZWQoKTsKKyAgICBkLT5jb2xvclBpY2tlciA9IGNvbG9yUGlja2VyOworICAgIGVtaXQg
Y29sb3JQaWNrZXJDaGFuZ2VkKCk7CiB9CiAKIFFTdHJpbmcgUVF1aWNrV2ViVmlld0V4cGVyaW1l
bnRhbDo6dXNlckFnZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCmluZGV4IDQ1N2RlNjVlMjUyNDk3YjhkYzY1MjYxOGI2
MTRhZWVhZjMwOTkyOTIuLmQ0ODhkMTNkOTc4MTBiZmEzNTA3NDVjMzNjMjZjOWJjYzJmNDBmMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
d19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3
X3AuaApAQCAtMjY5LDcgKzI2OSw3IEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFRdWlja1dlYlZp
ZXdFeHBlcmltZW50YWwgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9QUk9QRVJUWShRUW1sQ29t
cG9uZW50KiBpdGVtU2VsZWN0b3IgUkVBRCBpdGVtU2VsZWN0b3IgV1JJVEUgc2V0SXRlbVNlbGVj
dG9yIE5PVElGWSBpdGVtU2VsZWN0b3JDaGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoUVFtbENvbXBv
bmVudCogZmlsZVBpY2tlciBSRUFEIGZpbGVQaWNrZXIgV1JJVEUgc2V0RmlsZVBpY2tlciBOT1RJ
RlkgZmlsZVBpY2tlckNoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRUW1sQ29tcG9uZW50KiBkYXRh
YmFzZVF1b3RhRGlhbG9nIFJFQUQgZGF0YWJhc2VRdW90YURpYWxvZyBXUklURSBzZXREYXRhYmFz
ZVF1b3RhRGlhbG9nIE5PVElGWSBkYXRhYmFzZVF1b3RhRGlhbG9nQ2hhbmdlZCkKLSAgICBRX1BS
T1BFUlRZKFFRbWxDb21wb25lbnQqIGNvbG9yQ2hvb3NlciBSRUFEIGNvbG9yQ2hvb3NlciBXUklU
RSBzZXRDb2xvckNob29zZXIgTk9USUZZIGNvbG9yQ2hvb3NlckNoYW5nZWQpCisgICAgUV9QUk9Q
RVJUWShRUW1sQ29tcG9uZW50KiBjb2xvclBpY2tlciBSRUFEIGNvbG9yUGlja2VyIFdSSVRFIHNl
dENvbG9yUGlja2VyIE5PVElGWSBjb2xvclBpY2tlckNoYW5nZWQpCiAKICAgICBRX1BST1BFUlRZ
KFFXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMgUkVBRCBwcmVmZXJlbmNlcyBDT05TVEFOVCBG
SU5BTCkKICAgICBRX1BST1BFUlRZKFFXZWJLaXRUZXN0KiB0ZXN0IFJFQUQgdGVzdCBDT05TVEFO
VCBGSU5BTCkKQEAgLTMxMyw4ICszMTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGaWxlUGlj
a2VyKFFRbWxDb21wb25lbnQqKTsKICAgICBRUW1sQ29tcG9uZW50KiBkYXRhYmFzZVF1b3RhRGlh
bG9nKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREYXRhYmFzZVF1b3RhRGlhbG9nKFFRbWxDb21wb25l
bnQqKTsKLSAgICBRUW1sQ29tcG9uZW50KiBjb2xvckNob29zZXIoKSBjb25zdDsKLSAgICB2b2lk
IHNldENvbG9yQ2hvb3NlcihRUW1sQ29tcG9uZW50Kik7CisgICAgUVFtbENvbXBvbmVudCogY29s
b3JQaWNrZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldENvbG9yUGlja2VyKFFRbWxDb21wb25lbnQq
KTsKICAgICBRU3RyaW5nIHVzZXJBZ2VudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0VXNlckFnZW50
KGNvbnN0IFFTdHJpbmcmIHVzZXJBZ2VudCk7CiAgICAgaW50IGRldmljZVdpZHRoKCkgY29uc3Q7
CkBAIC0zNzEsNyArMzcxLDcgQEAgUV9TSUdOQUxTOgogICAgIHZvaWQgaXRlbVNlbGVjdG9yQ2hh
bmdlZCgpOwogICAgIHZvaWQgZmlsZVBpY2tlckNoYW5nZWQoKTsKICAgICB2b2lkIGRhdGFiYXNl
UXVvdGFEaWFsb2dDaGFuZ2VkKCk7Ci0gICAgdm9pZCBjb2xvckNob29zZXJDaGFuZ2VkKCk7Cisg
ICAgdm9pZCBjb2xvclBpY2tlckNoYW5nZWQoKTsKICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdGVk
KFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSk7CiAgICAgdm9pZCBwZXJtaXNzaW9uUmVx
dWVzdGVkKFFXZWJQZXJtaXNzaW9uUmVxdWVzdCogcGVybWlzc2lvbik7CiAgICAgdm9pZCBtZXNz
YWdlUmVjZWl2ZWQoY29uc3QgUVZhcmlhbnRNYXAmIG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4IGI5MTY2
MTQwYWRkNzE0MTJmMTRhNTM5YzIyMGI5NmRhMTgyMTg5ODIuLmM5MGZiMjBhNTljYjQwMjcxOTk1
OTJkZjFjZmM5OGExMmVhYTM3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKQEAgLTE5Miw3ICsxOTIsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgUVFtbENvbXBvbmVudCogcHJveHlBdXRoZW50aWNhdGlvbkRpYWxvZzsKICAgICBR
UW1sQ29tcG9uZW50KiBmaWxlUGlja2VyOwogICAgIFFRbWxDb21wb25lbnQqIGRhdGFiYXNlUXVv
dGFEaWFsb2c7Ci0gICAgUVFtbENvbXBvbmVudCogY29sb3JDaG9vc2VyOworICAgIFFRbWxDb21w
b25lbnQqIGNvbG9yUGlja2VyOwogCiAgICAgUUxpc3Q8UVVybD4gdXNlclNjcmlwdHM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmNvbG9ycGlja2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmNvbG9ycGlja2VyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44NmZjMjY4MGFkYjc0ZjY1Nzg4MDliYjMwZTFmMzdlZWU3YzkyZDQ2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViY29s
b3JwaWNrZXIuY3BwCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJjb2xvcnBpY2tlcl9wLmgiCisKKyNp
bmNsdWRlICJXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJXS1JldGFp
blB0ci5oIgorI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVkZSAicXF1aWNrd2Vidmlld19w
LmgiCisjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wX3AuaCIKKyNpbmNsdWRlIDxRdEd1aS9RQ29s
b3I+CisjaW5jbHVkZSA8UXRRbWwvUVFtbENvbnRleHQ+CisjaW5jbHVkZSA8UXRRbWwvUVFtbEVu
Z2luZT4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29sb3JQaWNrZXJD
b250ZXh0T2JqZWN0IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisgICAgUV9QUk9Q
RVJUWShRQ29sb3IgY3VycmVudENvbG9yIFJFQUQgY3VycmVudENvbG9yIENPTlNUQU5UIEZJTkFM
KQorICAgIFFfUFJPUEVSVFkoUVJlY3RGIGVsZW1lbnRSZWN0IFJFQUQgZWxlbWVudFJlY3QgQ09O
U1RBTlQgRklOQUwpCisKK3B1YmxpYzoKKyAgICBDb2xvclBpY2tlckNvbnRleHRPYmplY3QoY29u
c3QgUUNvbG9yJiBjb2xvciwgY29uc3QgUVJlY3RGJiByZWN0KQorICAgICAgICA6IG1fY3VycmVu
dENvbG9yKGNvbG9yKQorICAgICAgICAsIG1fcmVjdChyZWN0KQorICAgIHsKKyAgICB9CisKKyAg
ICBRQ29sb3IgY3VycmVudENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q29sb3I7IH0K
KyAgICBRUmVjdEYgZWxlbWVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKworICAg
IFFfSU5WT0tBQkxFIHZvaWQgYWNjZXB0KGNvbnN0IFFDb2xvciYgY29sb3IpIHsgZW1pdCBhY2Nl
cHRlZChjb2xvcik7IH0KKyAgICBRX0lOVk9LQUJMRSB2b2lkIHJlamVjdCgpIHsgZW1pdCByZWpl
Y3RlZCgpOyB9CisKK1FfU0lHTkFMUzoKKyAgICB2b2lkIGFjY2VwdGVkKGNvbnN0IFFDb2xvciYp
OworICAgIHZvaWQgcmVqZWN0ZWQoKTsKKworcHJpdmF0ZToKKyAgICBRQ29sb3IgbV9jdXJyZW50
Q29sb3I7CisgICAgUVJlY3RGIG1fcmVjdDsKK307CisKK1FXZWJDb2xvclBpY2tlcjo6UVdlYkNv
bG9yUGlja2VyKFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgUVF1aWNr
V2ViVmlldyogd2ViVmlldywgY29uc3QgUUNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFFSZWN0
JiBlbGVtZW50UmVjdCkKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorICAgICwgbV9saXN0ZW5l
cihsaXN0ZW5lcikKK3sKKyAgICBRUmVjdEYgbWFwcGVkUmVjdDsKKyAgICBpZiAoIWVsZW1lbnRS
ZWN0LmlzTnVsbCgpKQorICAgICAgICBtYXBwZWRSZWN0ID0gbV93ZWJWaWV3LT5tYXBSZWN0RnJv
bVdlYkNvbnRlbnQoUVJlY3QoZWxlbWVudFJlY3QpKTsKKyAgICBDb2xvclBpY2tlckNvbnRleHRP
YmplY3QqIGNvbnRleHRPYmplY3QgPSBuZXcgQ29sb3JQaWNrZXJDb250ZXh0T2JqZWN0KGluaXRp
YWxDb2xvciwgbWFwcGVkUmVjdCk7CisgICAgY3JlYXRlSXRlbShjb250ZXh0T2JqZWN0KTsKK30K
KworUVdlYkNvbG9yUGlja2VyOjp+UVdlYkNvbG9yUGlja2VyKCkKK3sKK30KKwordm9pZCBRV2Vi
Q29sb3JQaWNrZXI6OmNyZWF0ZUl0ZW0oUU9iamVjdCogY29udGV4dE9iamVjdCkKK3sKKyAgICBR
UW1sQ29tcG9uZW50KiBjb21wb25lbnQgPSBtX3dlYlZpZXctPmV4cGVyaW1lbnRhbCgpLT5jb2xv
clBpY2tlcigpOworICAgIGlmICghY29tcG9uZW50KSB7CisgICAgICAgIGRlbGV0ZSBjb250ZXh0
T2JqZWN0OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY3JlYXRlQ29udGV4dChjb21w
b25lbnQsIGNvbnRleHRPYmplY3QpOworICAgIFFPYmplY3QqIG9iamVjdCA9IGNvbXBvbmVudC0+
YmVnaW5DcmVhdGUobV9jb250ZXh0LmRhdGEoKSk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAg
ICAgbV9jb250ZXh0LnJlc2V0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Nv
bG9yUGlja2VyLnJlc2V0KHFvYmplY3RfY2FzdDxRUXVpY2tJdGVtKj4ob2JqZWN0KSk7CisgICAg
aWYgKCFtX2NvbG9yUGlja2VyKSB7CisgICAgICAgIG1fY29udGV4dC5yZXNldCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gTmVlZHMgdG8gYmUgZW5xdWV1ZSBiZWNhdXNlIGl0
IG1pZ2h0IHRyaWdnZXIgZGVsZXRpb24uCisgICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdO
QUwoYWNjZXB0ZWQoUUNvbG9yKSksIFNMT1Qobm90aWZ5Q29sb3JTZWxlY3RlZChRQ29sb3IpKSwg
UXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFM
KHJlamVjdGVkKCkpLCBTTE9UKGVuZFBpY2tlcigpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwor
CisgICAgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmdldChtX3dlYlZpZXcpLT5hZGRBdHRhY2hlZFBy
b3BlcnR5VG8obV9jb2xvclBpY2tlci5kYXRhKCkpOworICAgIG1fY29sb3JQaWNrZXItPnNldFBh
cmVudEl0ZW0obV93ZWJWaWV3KTsKKworICAgIGNvbXBvbmVudC0+Y29tcGxldGVDcmVhdGUoKTsK
K30KKwordm9pZCBRV2ViQ29sb3JQaWNrZXI6OmNyZWF0ZUNvbnRleHQoUVFtbENvbXBvbmVudCog
Y29tcG9uZW50LCBRT2JqZWN0KiBjb250ZXh0T2JqZWN0KQoreworICAgIFFRbWxDb250ZXh0KiBi
YXNlQ29udGV4dCA9IGNvbXBvbmVudC0+Y3JlYXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFiYXNl
Q29udGV4dCkKKyAgICAgICAgYmFzZUNvbnRleHQgPSBRUW1sRW5naW5lOjpjb250ZXh0Rm9yT2Jq
ZWN0KG1fd2ViVmlldyk7CisgICAgbV9jb250ZXh0LnJlc2V0KG5ldyBRUW1sQ29udGV4dChiYXNl
Q29udGV4dCkpOworCisgICAgY29udGV4dE9iamVjdC0+c2V0UGFyZW50KG1fY29udGV4dC5kYXRh
KCkpOworICAgIG1fY29udGV4dC0+c2V0Q29udGV4dFByb3BlcnR5KFFMYXRpbjFTdHJpbmcoIm1v
ZGVsIiksIGNvbnRleHRPYmplY3QpOworICAgIG1fY29udGV4dC0+c2V0Q29udGV4dE9iamVjdChj
b250ZXh0T2JqZWN0KTsKK30KKwordm9pZCBRV2ViQ29sb3JQaWNrZXI6Om5vdGlmeUNvbG9yU2Vs
ZWN0ZWQoY29uc3QgUUNvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAoIW1fbGlzdGVuZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIENvbG9yIGNvcmVDb2xvcihjb2xvcik7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IGNvbG9yU3RyaW5nKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKGNvcmVDb2xvci5zZXJpYWxpemVkKCkudXRmOCgpLmRhdGEoKSkpOworICAgIFdL
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclNldENvbG9yKG1fbGlzdGVuZXIsIGNvbG9yU3RyaW5n
LmdldCgpKTsKKyAgICBlbmRQaWNrZXIoKTsKK30KKwordm9pZCBRV2ViQ29sb3JQaWNrZXI6OmVu
ZFBpY2tlcigpCit7CisgICAgbV9jb2xvclBpY2tlci5yZXNldCgpOworICAgIG1fY29udGV4dC5y
ZXNldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2luY2x1ZGUgInF3ZWJjb2xv
cnBpY2tlci5tb2MiCisjaW5jbHVkZSAibW9jX3F3ZWJjb2xvcnBpY2tlcl9wLmNwcCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmNvbG9ycGlja2VyX3Au
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmNvbG9ycGlja2VyX3AuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNzUxYTNhOTNmMWE0YmZkNmY0YTg3NTZmYmQyNWVmOWZkY2RlZjNmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViY29sb3Jw
aWNrZXJfcC5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIHF3ZWJjb2xv
cnBpY2tlcl9wX2gKKyNkZWZpbmUgcXdlYmNvbG9ycGlja2VyX3BfaAorCisjaW5jbHVkZSAiV0tC
YXNlLmgiCisjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CisjaW5jbHVkZSA8UXRDb3JlL1FSZWN0
PgorI2luY2x1ZGUgPFF0Q29yZS9RU2NvcGVkUG9pbnRlcj4KKyNpbmNsdWRlIDxRdEd1aS9RQ29s
b3I+CisKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVFtbENvbXBvbmVudDsKK2NsYXNzIFFR
bWxDb250ZXh0OworY2xhc3MgUVF1aWNrSXRlbTsKK1FUX0VORF9OQU1FU1BBQ0UKKworY2xhc3Mg
UVF1aWNrV2ViVmlldzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29sb3I7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBRV2ViQ29sb3JQaWNrZXIgOiBwdWJsaWMgUU9i
amVjdCB7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIFFXZWJDb2xvclBpY2tlcihXS0Nv
bG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYsIFFRdWlja1dlYlZpZXcqLCBjb25zdCBRQ29sb3Im
LCBjb25zdCBRUmVjdCYgPSBRUmVjdCgpKTsKKyAgICB+UVdlYkNvbG9yUGlja2VyKCk7CisKK3B1
YmxpYyBRX1NMT1RTOgorICAgIHZvaWQgZW5kUGlja2VyKCk7CisKK3ByaXZhdGUgUV9TTE9UUzoK
KyAgICB2b2lkIG5vdGlmeUNvbG9yU2VsZWN0ZWQoY29uc3QgUUNvbG9yJik7CisKK3ByaXZhdGU6
CisKKyAgICB2b2lkIGNyZWF0ZUl0ZW0oUU9iamVjdCopOworICAgIHZvaWQgY3JlYXRlQ29udGV4
dChRUW1sQ29tcG9uZW50KiwgUU9iamVjdCopOworCisgICAgUVNjb3BlZFBvaW50ZXI8UVFtbENv
bnRleHQ+IG1fY29udGV4dDsKKyAgICBRU2NvcGVkUG9pbnRlcjxRUXVpY2tJdGVtPiBtX2NvbG9y
UGlja2VyOworCisgICAgUVF1aWNrV2ViVmlldyogbV93ZWJWaWV3OworICAgIFdLQ29sb3JQaWNr
ZXJSZXN1bHRMaXN0ZW5lclJlZiBtX2xpc3RlbmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBxd2ViY29sb3JwaWNrZXJfcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwCmluZGV4IDg5YTQwYzkyMzFhMTgxYjcwMTljMWUy
ZmExMmI2YjY4YjExNmIyNjEuLmJjMDhjNGZmMDU5MjMxNzcwMDc2N2QxY2FlOTEyMWIwMTQ1ZTJk
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwCkBA
IC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmgiCiAjaW5j
bHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0j
aW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlRdC5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hv
b3NlclByb3h5LmgiCiAjZW5kaWYKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5UXQuaCIK
ICNpbmNsdWRlICJXZWJFZGl0Q29tbWFuZFByb3h5LmgiCkBAIC0yMjMsNyArMjIzLDggQEAgUGFz
c1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBRdFBhZ2VDbGllbnQ6OmNyZWF0ZUNvbnRleHRN
ZW51UHJveHkoV2ViUGFnZVByb3gKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIFBhc3NS
ZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IFF0UGFnZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9v
c2VyUHJveHkoV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHksIGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQogewot
ICAgIHJldHVybiBXZWJDb2xvckNob29zZXJQcm94eVF0OjpjcmVhdGUod2ViUGFnZVByb3h5LCBt
X3dlYlZpZXcsIGluaXRpYWxDb2xvciwgZWxlbWVudFJlY3QpOworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+KCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNs
aWVudC5jcHAKaW5kZXggMzllMWUzZDIxMDlmNTNkMGRmODRhOTZlNWE2NzVlMDEzNjUwY2UyNS4u
NjVkYmRkMzBhYTcxMTNkZDhlODJiOWU3ZTI1YTg5ODVhMjE1YjIzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwCkBAIC00OSw2ICs0
OSwxMCBAQCBRdFdlYlBhZ2VVSUNsaWVudDo6UXRXZWJQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIFFRdWlja1dlYlZpZXcqIHdlYlZpZXcpCiAgICAgdWlDbGllbnQuZXhjZWVkZWREYXRh
YmFzZVF1b3RhID0gZXhjZWVkZWREYXRhYmFzZVF1b3RhOwogICAgIHVpQ2xpZW50LmRlY2lkZVBv
bGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgPSBwb2xpY3lGb3JHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0OwogICAgIHVpQ2xpZW50LmRlY2lkZVBvbGljeUZvck5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0ID0gcG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3Q7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgdWlDbGllbnQuc2hvd0Nv
bG9yUGlja2VyID0gc2hvd0NvbG9yUGlja2VyOworICAgIHVpQ2xpZW50LmhpZGVDb2xvclBpY2tl
ciA9IGhpZGVDb2xvclBpY2tlcjsKKyNlbmRpZiAvLyBJTlBVVF9UWVBFX0NPTE9SCiAgICAgV0tQ
YWdlU2V0UGFnZVVJQ2xpZW50KHBhZ2VSZWYsICZ1aUNsaWVudCk7CiB9CiAKQEAgLTkyLDYgKzk2
LDE5IEBAIHZvaWQgUXRXZWJQYWdlVUlDbGllbnQ6OnBlcm1pc3Npb25SZXF1ZXN0KFFXZWJQZXJt
aXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKICAgICBlbWl0IG1fd2ViVmlldy0+ZXhwZXJpbWVudGFs
KCktPnBlcm1pc3Npb25SZXF1ZXN0ZWQocmVxdWVzdCk7CiB9CiAKKyNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKK3ZvaWQgUXRXZWJQYWdlVUlDbGllbnQ6OnNob3dDb2xvclBpY2tlcihXS0Nv
bG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IFFDb2xvciAmaW5pdGlh
bENvbG9yKQoreworICAgIG1fY29sb3JQaWNrZXIucmVzZXQobmV3IFFXZWJDb2xvclBpY2tlcihs
aXN0ZW5lciwgbV93ZWJWaWV3LCBpbml0aWFsQ29sb3IpKTsKK30KKwordm9pZCBRdFdlYlBhZ2VV
SUNsaWVudDo6aGlkZUNvbG9yUGlja2VyKCkKK3sKKyAgICBtX2NvbG9yUGlja2VyLT5lbmRQaWNr
ZXIoKTsKKyAgICBtX2NvbG9yUGlja2VyLnJlc2V0KCk7Cit9CisjZW5kaWYgLy8gSU5QVVRfVFlQ
RV9DT0xPUgorCiBzdGF0aWMgUXRXZWJQYWdlVUlDbGllbnQqIHRvUXRXZWJQYWdlVUlDbGllbnQo
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBBU1NFUlQoY2xpZW50SW5mbyk7CkBAIC0x
NzEsNSArMTg4LDE3IEBAIHZvaWQgUXRXZWJQYWdlVUlDbGllbnQ6OnBvbGljeUZvck5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiBwYWdlLCBXCiAgICAgdG9RdFdlYlBhZ2VV
SUNsaWVudChjbGllbnRJbmZvKS0+cGVybWlzc2lvblJlcXVlc3QocmVxKTsKIH0KIAorI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQordm9pZCBRdFdlYlBhZ2VVSUNsaWVudDo6c2hvd0NvbG9y
UGlja2VyKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgaW5pdGlhbENvbG9yLCBXS0NvbG9yUGlja2Vy
UmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7Cisg
ICAgdG9RdFdlYlBhZ2VVSUNsaWVudChjbGllbnRJbmZvKS0+c2hvd0NvbG9yUGlja2VyKGxpc3Rl
bmVyLCBRQ29sb3IodG9XVEZTdHJpbmcoaW5pdGlhbENvbG9yKSkpOworfQorCit2b2lkIFF0V2Vi
UGFnZVVJQ2xpZW50OjpoaWRlQ29sb3JQaWNrZXIoV0tQYWdlUmVmLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKQoreworICAgIHRvUXRXZWJQYWdlVUlDbGllbnQoY2xpZW50SW5mbyktPmhpZGVDb2xv
clBpY2tlcigpOworfQorI2VuZGlmIC8vIElOUFVUX1RZUEVfQ09MT1IKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJ
Q2xpZW50LmgKaW5kZXggZThhYWE4MjZiN2RkNjBhNjgxYmQ3NDhlZDMxNmJmMjZlMGRkOTA2OC4u
ZTVjNzczZTVlNDM5NTQ2ZDg2OTk1YzM2NGQ4N2FkMWE2NDE2NzBiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmgKQEAgLTIxLDYgKzIxLDkg
QEAKICNpZm5kZWYgUXRXZWJQYWdlVUlDbGllbnRfaAogI2RlZmluZSBRdFdlYlBhZ2VVSUNsaWVu
dF9oCiAKKyNpbmNsdWRlICJxd2ViY29sb3JwaWNrZXJfcC5oIgorCisjaW5jbHVkZSA8UXRDb3Jl
L1FTY29wZWRQb2ludGVyPgogI2luY2x1ZGUgPFF0Q29yZS9RU3RyaW5nPgogI2luY2x1ZGUgPFF0
Q29yZS9RVXJsPgogI2luY2x1ZGUgPFdLRnJhbWUuaD4KQEAgLTUwLDYgKzUzLDExIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBydW5PcGVuUGFuZWwoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwg
Y29uc3QgUVN0cmluZ0xpc3QmIHNlbGVjdGVkRmlsZU5hbWVzLCBGaWxlQ2hvb3NlclR5cGUpOwog
ICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgUVVybCYgbGlua1VSTCwgY29u
c3QgUVN0cmluZyYgbGlua1RpdGxlKTsKICAgICB2b2lkIHBlcm1pc3Npb25SZXF1ZXN0KFFXZWJQ
ZXJtaXNzaW9uUmVxdWVzdCopOworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIHZv
aWQgc2hvd0NvbG9yUGlja2VyKFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3Qg
UUNvbG9yJik7CisgICAgdm9pZCBoaWRlQ29sb3JQaWNrZXIoKTsKKyNlbmRpZiAvLyBJTlBVVF9U
WVBFX0NPTE9SCisKIAogICAgIC8vIFdLUGFnZVVJQ2xpZW50IGNhbGxiYWNrcy4KICAgICBzdGF0
aWMgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBhbGVydFRl
eHQsIFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpAQCAtNjAsOCArNjgsMTMg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGV4Y2VlZGVkRGF0YWJh
c2VRdW90YShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLU3Ry
aW5nUmVmIGRhdGFiYXNlTmFtZSwgV0tTdHJpbmdSZWYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgbG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2luVXNh
Z2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdW5zaWduZWQgbG9u
ZyBsb25nIGV4cGVjdGVkVXNhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogICAgIHN0YXRp
YyB2b2lkIHBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBwb2xpY3lGb3JOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdL
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYsIGNvbnN0IHZvaWQqKTsKKyNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBzdGF0aWMgdm9pZCBzaG93Q29sb3JQaWNrZXIoV0tQ
YWdlUmVmLCBXS1N0cmluZ1JlZiBpbml0aWFsQ29sb3IsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lclJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgaGlkZUNv
bG9yUGlja2VyKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisjZW5kaWYgLy8g
SU5QVVRfVFlQRV9DT0xPUgogCiAgICAgUVF1aWNrV2ViVmlldyogbV93ZWJWaWV3OworICAgIFFT
Y29wZWRQb2ludGVyPFFXZWJDb2xvclBpY2tlcj4gbV9jb2xvclBpY2tlcjsKICAgICBRVXJsIG1f
bGFzdEhvdmVyZWRVUkw7CiAgICAgUVN0cmluZyBtX2xhc3RIb3ZlcmVkVGl0bGU7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclByb3h5
UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclByb3h5
UXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Yjc0N2I3N2IxMTU0NjZkZWU0
OTAyMzUwOTljMmYwYzA2ZjBkN2EyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb2xvckNob29zZXJQ
cm94eVF0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3Nl
clByb3h5UXQuaCIKLQotI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgotI2luY2x1ZGUgInFx
dWlja3dlYnZpZXdfcF9wLmgiCi0jaW5jbHVkZSA8UXRRbWwvUVFtbENvbnRleHQ+Ci0jaW5jbHVk
ZSA8UXRRbWwvUVFtbEVuZ2luZT4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1jbGFzcyBDb2xvckNob29zZXJDb250ZXh0T2JqZWN0IDogcHVibGlj
IFFPYmplY3QgewotICAgIFFfT0JKRUNUCi0gICAgUV9QUk9QRVJUWShRQ29sb3IgY3VycmVudENv
bG9yIFJFQUQgY3VycmVudENvbG9yIENPTlNUQU5UIEZJTkFMKQotICAgIFFfUFJPUEVSVFkoUVJl
Y3RGIGVsZW1lbnRSZWN0IFJFQUQgZWxlbWVudFJlY3QgQ09OU1RBTlQgRklOQUwpCi0KLXB1Ymxp
YzoKLSAgICBDb2xvckNob29zZXJDb250ZXh0T2JqZWN0KGNvbnN0IFFDb2xvciYgY29sb3IsIGNv
bnN0IFFSZWN0RiYgcmVjdCkKLSAgICAgICAgOiBtX2N1cnJlbnRDb2xvcihjb2xvcikKLSAgICAg
ICAgLCBtX3JlY3QocmVjdCkKLSAgICB7Ci0gICAgfQotCi0gICAgUUNvbG9yIGN1cnJlbnRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudENvbG9yOyB9Ci0gICAgUVJlY3RGIGVsZW1lbnRS
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9Ci0KLSAgICBRX0lOVk9LQUJMRSB2b2lkIGFj
Y2VwdChjb25zdCBRQ29sb3ImIGNvbG9yKSB7IGVtaXQgYWNjZXB0ZWQoY29sb3IpOyB9Ci0gICAg
UV9JTlZPS0FCTEUgdm9pZCByZWplY3QoKSB7IGVtaXQgcmVqZWN0ZWQoKTsgfQotCi1RX1NJR05B
TFM6Ci0gICAgdm9pZCBhY2NlcHRlZChjb25zdCBRQ29sb3ImKTsKLSAgICB2b2lkIHJlamVjdGVk
KCk7Ci0KLXByaXZhdGU6Ci0gICAgUUNvbG9yIG1fY3VycmVudENvbG9yOwotICAgIFFSZWN0RiBt
X3JlY3Q7Ci19OwotCi1XZWJDb2xvckNob29zZXJQcm94eVF0OjpXZWJDb2xvckNob29zZXJQcm94
eVF0KFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVudCwgUVF1aWNrV2ViVmlldyog
d2ViVmlldywgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgSW50UmVjdCYgZWxlbWVu
dFJlY3QpCi0gICAgOiBXZWJDb2xvckNob29zZXJQcm94eShjbGllbnQpCi0gICAgLCBtX3dlYlZp
ZXcod2ViVmlldykKLXsKLSAgICBjb25zdCBRUmVjdEYgbWFwcGVkUmVjdD0gbV93ZWJWaWV3LT5t
YXBSZWN0RnJvbVdlYkNvbnRlbnQoUVJlY3QoZWxlbWVudFJlY3QpKTsKLSAgICBDb2xvckNob29z
ZXJDb250ZXh0T2JqZWN0KiBjb250ZXh0T2JqZWN0ID0gbmV3IENvbG9yQ2hvb3NlckNvbnRleHRP
YmplY3QoaW5pdGlhbENvbG9yLCBtYXBwZWRSZWN0KTsKLSAgICBjcmVhdGVJdGVtKGNvbnRleHRP
YmplY3QpOwotfQotCi1XZWJDb2xvckNob29zZXJQcm94eVF0Ojp+V2ViQ29sb3JDaG9vc2VyUHJv
eHlRdCgpCi17Ci19Ci0KLXZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlRdDo6Y3JlYXRlSXRlbShR
T2JqZWN0KiBjb250ZXh0T2JqZWN0KQotewotICAgIFFRbWxDb21wb25lbnQqIGNvbXBvbmVudCA9
IG1fd2ViVmlldy0+ZXhwZXJpbWVudGFsKCktPmNvbG9yQ2hvb3NlcigpOwotICAgIGlmICghY29t
cG9uZW50KSB7Ci0gICAgICAgIGRlbGV0ZSBjb250ZXh0T2JqZWN0OwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgY3JlYXRlQ29udGV4dChjb21wb25lbnQsIGNvbnRleHRPYmplY3QpOwot
ICAgIFFPYmplY3QqIG9iamVjdCA9IGNvbXBvbmVudC0+YmVnaW5DcmVhdGUobV9jb250ZXh0Lmdl
dCgpKTsKLSAgICBpZiAoIW9iamVjdCkgewotICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fY29sb3JDaG9vc2VyID0gYWRvcHRQdHIocW9i
amVjdF9jYXN0PFFRdWlja0l0ZW0qPihvYmplY3QpKTsKLSAgICBpZiAoIW1fY29sb3JDaG9vc2Vy
KSB7Ci0gICAgICAgIG1fY29udGV4dC5jbGVhcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgLy8gTmVlZHMgdG8gYmUgZW5xdWV1ZSBiZWNhdXNlIGl0IG1pZ2h0IHRyaWdnZXIgZGVs
ZXRpb24uCi0gICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwoYWNjZXB0ZWQoUUNvbG9y
KSksIFNMT1Qobm90aWZ5Q29sb3JTZWxlY3RlZChRQ29sb3IpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rp
b24pOwotICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKHJlamVjdGVkKCkpLCBTTE9U
KGVuZENob29zZXIoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKLQotICAgIFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+YWRkQXR0YWNoZWRQcm9wZXJ0eVRvKG1fY29sb3JD
aG9vc2VyLmdldCgpKTsKLSAgICBtX2NvbG9yQ2hvb3Nlci0+c2V0UGFyZW50SXRlbShtX3dlYlZp
ZXcpOwotCi0gICAgY29tcG9uZW50LT5jb21wbGV0ZUNyZWF0ZSgpOwotfQotCi12b2lkIFdlYkNv
bG9yQ2hvb3NlclByb3h5UXQ6OmNyZWF0ZUNvbnRleHQoUVFtbENvbXBvbmVudCogY29tcG9uZW50
LCBRT2JqZWN0KiBjb250ZXh0T2JqZWN0KQotewotICAgIFFRbWxDb250ZXh0KiBiYXNlQ29udGV4
dCA9IGNvbXBvbmVudC0+Y3JlYXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFiYXNlQ29udGV4dCkK
LSAgICAgICAgYmFzZUNvbnRleHQgPSBRUW1sRW5naW5lOjpjb250ZXh0Rm9yT2JqZWN0KG1fd2Vi
Vmlldyk7Ci0gICAgbV9jb250ZXh0ID0gYWRvcHRQdHIobmV3IFFRbWxDb250ZXh0KGJhc2VDb250
ZXh0KSk7Ci0KLSAgICBjb250ZXh0T2JqZWN0LT5zZXRQYXJlbnQobV9jb250ZXh0LmdldCgpKTsK
LSAgICBtX2NvbnRleHQtPnNldENvbnRleHRQcm9wZXJ0eShRTGF0aW4xU3RyaW5nKCJtb2RlbCIp
LCBjb250ZXh0T2JqZWN0KTsKLSAgICBtX2NvbnRleHQtPnNldENvbnRleHRPYmplY3QoY29udGV4
dE9iamVjdCk7Ci19Ci0KLXZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlRdDo6c2V0U2VsZWN0ZWRD
b2xvcihjb25zdCBDb2xvciYpCi17Ci0gICAgLy8gVGhpcyBpcyBzdXBwb3NlIHRvIGJlIHVzZWQg
dG8gcmVhY3QgdG8gRE9NIGNoYW5nZXMuIFdoZW4KLSAgICAvLyBhIHVzZXIgc2NyaXB0IGNoYW5n
ZXMgdGhlIGlucHV0IHZhbHVlLCB0aGUgbWV0aG9kIGdpdmVzIHRoZQotICAgIC8vIG9wdGlvbiB0
byB1cGRhdGUgdGhlIGNvbG9yIGNob29zZXIgVUkgaWYgd2Ugd2VyZSBzaG93aW5nIHRoZQotICAg
IC8vIGN1cnJlbnQgdmFsdWUuIFNpbmNlIHdlIGRvbid0LCBpdCBpcyBpcnJlbGV2YW50IHJpZ2h0
IG5vdy4KLSAgICAvLyBBbmQgeWVzLCB0aGUgbmFtZSBzb3VuZHMgbWlzbGVhZGluZyBidXQgY29t
ZXMgZnJvbSBXZWJDb3JlLgotfQotCi12b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5UXQ6Om5vdGlm
eUNvbG9yU2VsZWN0ZWQoY29uc3QgUUNvbG9yJiBjb2xvcikKLXsKLSAgICBpZiAoIW1fY2xpZW50
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBBbHBoYSBpcyBhbHdheXMgaWdub3JlZCBieSB0
aGUgY29sb3IgaW5wdXQKLSAgICBDb2xvciBjb3JlQ29sb3IgPSBtYWtlUkdCKGNvbG9yLnJlZCgp
LCBjb2xvci5ncmVlbigpLCBjb2xvci5ibHVlKCkpOwotICAgIG1fY2xpZW50LT5kaWRDaG9vc2VD
b2xvcihjb3JlQ29sb3IpOwotCi0gICAgZW5kQ2hvb3NlcigpOwotfQotCi12b2lkIFdlYkNvbG9y
Q2hvb3NlclByb3h5UXQ6OmVuZENob29zZXIoKQotewotICAgIG1fY29sb3JDaG9vc2VyLmNsZWFy
KCk7Ci0gICAgbV9jb250ZXh0LmNsZWFyKCk7Ci0KLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX2NsaWVudC0+ZGlkRW5kQ29sb3JDaG9vc2VyKCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlRdC5t
b2MiCi0jaW5jbHVkZSAibW9jX1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuY3BwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb2xvckNob29zZXJQcm94eVF0LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3YzM3ZmM4NDIxMTUzMDQ3NTUzNzU2Mzc0YTI2
ZDAxM2FhMjY0YTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuaAor
KysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFdlYkNv
bG9yQ2hvb3NlclByb3h5UXRfaAotI2RlZmluZSBXZWJDb2xvckNob29zZXJQcm94eVF0X2gKLQot
I2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eS5oIgot
I2luY2x1ZGUgPFF0Q29yZS9RT2JqZWN0PgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLQotUVRf
QkVHSU5fTkFNRVNQQUNFCi1jbGFzcyBRUW1sQ29tcG9uZW50OwotY2xhc3MgUVFtbENvbnRleHQ7
Ci1jbGFzcyBRUXVpY2tJdGVtOwotUVRfRU5EX05BTUVTUEFDRQotCi1jbGFzcyBRUXVpY2tXZWJW
aWV3OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb2xvcjsKLX0KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLWNsYXNzIFdlYkNvbG9yQ2hvb3NlclByb3h5UXQgOiBwdWJsaWMgUU9iamVj
dCwgcHVibGljIFdlYkNvbG9yQ2hvb3NlclByb3h5IHsKLSAgICBRX09CSkVDVAotCi1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IGNyZWF0ZShXZWJD
b2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQsIFFRdWlja1dlYlZpZXcqIHdlYlZpZXcs
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGVsZW1lbnRSZWN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJD
b2xvckNob29zZXJQcm94eVF0KGNsaWVudCwgd2ViVmlldywgaW5pdGlhbENvbG9yLCBlbGVtZW50
UmVjdCkpOwotICAgIH0KLSAgICB+V2ViQ29sb3JDaG9vc2VyUHJveHlRdCgpOwotCi0gICAgdmly
dHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKLQotcHVi
bGljIFFfU0xPVFM6Ci0gICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKTsKLQotcHJpdmF0ZSBR
X1NMT1RTOgotICAgIHZvaWQgbm90aWZ5Q29sb3JTZWxlY3RlZChjb25zdCBRQ29sb3ImKTsKLQot
cHJpdmF0ZToKLSAgICBXZWJDb2xvckNob29zZXJQcm94eVF0KFdlYkNvbG9yQ2hvb3NlclByb3h5
OjpDbGllbnQqLCBRUXVpY2tXZWJWaWV3KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jik7Ci0KLSAgICB2b2lkIGNyZWF0ZUl0ZW0oUU9iamVjdCopOwotICAg
IHZvaWQgY3JlYXRlQ29udGV4dChRUW1sQ29tcG9uZW50KiwgUU9iamVjdCopOwotCi0gICAgT3du
UHRyPFFRbWxDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgT3duUHRyPFFRdWlja0l0ZW0+IG1fY29s
b3JDaG9vc2VyOwotCi0gICAgUVF1aWNrV2ViVmlldyogbV93ZWJWaWV3OwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJDb2xvckNob29zZXJQcm94eVF0X2gKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0NDcyYmM3
ZjBlNDljNTU1ZDg1NGQ0N2JiM2EzYzg1MGJmNDJlNzIxLi41MGRjNmVmOTQzZmY1N2ZjOTljNGQ2
OGNjNGZiN2NjZTdhNDJiYTg1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDItMDcgIFBpZXJyZSBSb3NzaSAg
PHBpZXJyZS5yb3NzaUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIE1vdmUgQ29sb3Ig
cGlja2VyIG9uIHRvcCBvZiB0aGUgQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwOTIyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1s
OiBhZGp1c3QgdG8gdGhlIG5hbWluZyBjaGFuZ2UuCisKIDIwMTMtMDItMDcgIFZpdmVrIEdhbGF0
YWdlICA8dml2ZWsudmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW1F0XSBRdFRlc3RCcm93c2Vy
IHNob3VsZCBwcm92aWRlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBKYXZhc2NyaXB0CmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwgYi9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwKaW5kZXggYjRiNWJjMDkyNjhj
YmIzY2YzNDljMDhhMDZjN2MyYTk1ZGNjZWE2NS4uYWI0ZmIxMzM0Yjc5MGFjMTM1Y2E1NjJjZWRm
NTZlMmVkMDk3NWY3MCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dz
ZXJXaW5kb3cucW1sCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93
LnFtbApAQCAtNTU1LDcgKzU1NSw3IEBAIFJlY3RhbmdsZSB7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGV4cGVyaW1lbnRhbC5jb2xvckNob29z
ZXI6IENvbG9yQ2hvb3NlciB7IH0KKyAgICAgICAgZXhwZXJpbWVudGFsLmNvbG9yUGlja2VyOiBD
b2xvckNob29zZXIgeyB9CiAgICAgICAgIGV4cGVyaW1lbnRhbC5vbkVudGVyRnVsbFNjcmVlblJl
cXVlc3RlZCA6IHsKICAgICAgICAgICAgIG5hdmlnYXRpb25CYXIudmlzaWJsZSA9IGZhbHNlOwog
ICAgICAgICAgICAgV2luZG93LnNob3dGdWxsU2NyZWVuKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190730</attachid>
            <date>2013-02-28 08:02:39 -0800</date>
            <delta_ts>2013-02-28 09:35:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109222-20130228170140.patch</filename>
            <type>text/plain</type>
            <size>41501</size>
            <attacher name="Pierre Rossi">pierre.rossi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDUzOWQ3YTBhMzZlYmQ3
YWM2ZmEyNjJkNDQwZDVmOGVmNGY4MTgzOS4uYWQ3ZjJhNjM4YjAyMzQ0MTk4MjViMDQ4ZDFiZGQz
MGRlNTlkM2RiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEzLTAyLTI3ICBQaWVy
cmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBN
b3ZlIENvbG9yIHBpY2tlciBvbiB0b3Agb2YgdGhlIEMgQVBJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkyMjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb2xvciBwaWNraW5nIGRlbGVnYXRpb24gY2Fu
IGFscmVhZHkgYmUgZG9uZSB0aHJvdWdoIHRoZSBDIEFQSS4KKyAgICAgICAgU2luY2UgdXNpbmcg
YSBzdHJpbmcgdG8gcGFzcyA0IGJ5dGVzIGFsb25nIHNlZW1zIGxpa2UgdXNpbmcgYSBqYWNraGFt
bWVyCisgICAgICAgIHRvIGtpbGwgYSBmbHksIHdlIGNoYW5nZSB0aGUgQy1BUEkgc2xpZ2h0bHks
IGFuZCB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byBleHBvc2UKKyAgICAgICAgdGhlIGVsZW1lbnQg
cmVjdCwgd2hpY2ggY291bGQgYmUgdXNlZnVsIG9uIHdpZGVyIHRvdWNoc2NyZWVucy4KKyAgICAg
ICAgQWxzbyBhZGp1c3QgdGhlIHNlbWFudGljcyB0byB1c2UgdGhlIHRlcm0gcGlja2VyIGluc3Rl
YWQgb2YgY2hvb3NlciBhbGwKKyAgICAgICAgb3ZlciB0aGUgcGxhY2UsIHRvIG1ha2UgaXQgY2xl
YXJlciB0aGF0IHRoaXMgbm93IHJlbGllcyBvbiB0aGUgQyBBUEkKKworICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9XS0Jhc2UuaDogdHlwZWRlZiB1aW50MzJfdCBXS0FSR0IuCisgICAgICAgICogVGFy
Z2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb2xvclBpY2tlclJlc3VsdExp
c3RlbmVyLmNwcDoKKyAgICAgICAgKFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclNldENvbG9y
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb2xvcl9waWNrZXIuY3BwOgorICAgICAgICAoRXdrQ29sb3JQaWNr
ZXI6OnNldENvbG9yKTogdXBkYXRlIHRvIHVzZSB0aGUgbmV3IEFQSS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld1By
aXZhdGU6OlFRdWlja1dlYlZpZXdQcml2YXRlKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdFeHBl
cmltZW50YWw6OmNvbG9yUGlja2VyKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdFeHBlcmltZW50
YWw6OnNldENvbG9yUGlja2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnZpZXdfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3Au
aDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJjb2xvcnBpY2tlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvV2ViQ29sb3JDaG9vc2VyUHJveHlRdC5jcHAuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoQ29sb3JQaWNrZXJDb250ZXh0T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6
Q29sb3JQaWNrZXJDb250ZXh0T2JqZWN0OjpDb2xvclBpY2tlckNvbnRleHRPYmplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpDb2xvclBpY2tlckNvbnRleHRPYmplY3Q6OmN1cnJlbnRDb2xvcik6Cisg
ICAgICAgIChXZWJLaXQ6OkNvbG9yUGlja2VyQ29udGV4dE9iamVjdDo6ZWxlbWVudFJlY3QpOgor
ICAgICAgICAoV2ViS2l0OjpDb2xvclBpY2tlckNvbnRleHRPYmplY3Q6OmFjY2VwdCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvbG9yUGlja2VyQ29udGV4dE9iamVjdDo6cmVqZWN0KToKKyAgICAgICAg
KFdlYktpdDo6UVdlYkNvbG9yUGlja2VyOjpRV2ViQ29sb3JQaWNrZXIpOgorICAgICAgICAoV2Vi
S2l0OjpRV2ViQ29sb3JQaWNrZXI6OmNyZWF0ZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpRV2Vi
Q29sb3JQaWNrZXI6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpRV2ViQ29sb3JQ
aWNrZXI6Om5vdGlmeUNvbG9yU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpRV2ViQ29sb3JQ
aWNrZXI6OmVuZFBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2ViY29sb3Jw
aWNrZXJfcC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNv
bG9yQ2hvb3NlclByb3h5UXQuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChRV2ViQ29s
b3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyUHJveHk6OnNldENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lclByb3h5Lmg6CisgICAgICAgIChXZWJDb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dDb2xvckNob29zZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJVSUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVJQ2xpZW50Ojpz
aG93Q29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJVSUNsaWVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVUlDbGll
bnRFZmw6OnNob3dDb2xvclBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlVUlD
bGllbnRFZmwuaDoKKyAgICAgICAgKFBhZ2VVSUNsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9j
ZXNzL3F0L1F0UGFnZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0UGFnZUNsaWVudDo6
Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VVSUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZVVJQ2xpZW50OjpRdFdl
YlBhZ2VVSUNsaWVudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpRdFdl
YlBhZ2VVSUNsaWVudDo6c2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJQ
YWdlVUlDbGllbnQ6OmhpZGVDb2xvclBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZVVJQ2xpZW50Lmg6CisKIDIwMTMtMDItMjcgIE1pY2hhZWwgQnLDvG5pbmcgIDxtaWNo
YWVsLmJydW5pbmdAZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF1bV0syXSBSZXBsYWNlIHVzZSBv
ZiBXZWJQcmVmZXJlbmNlcyB3aXRoIHVzZSBvZiBXS1ByZWZlbmNlcyBDIEFQSQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLQmFzZS5oCmluZGV4IDhjMjQzZGJiNDE3ZjYxZmNhYWNjNWZiZjQ0ZDZl
ZTdjZWU3YWJhNTkuLjI2MWFjNWMwYzQwZTg3MWRjNGVhNTNiNGY5OTU3NWNhZDJhNmM2OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTkzLDYgKzkzLDggQEAgZW51bSBX
S1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIHsKIH07CiB0eXBlZGVmIGVudW0gV0tVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZSBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lOwogCit0eXBlZGVmIHVpbnQz
Ml90IFdLQVJHQjsKKwogLyogV2ViS2l0MiBtYWluIEFQSSB0eXBlcyAqLwogCiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyKiBXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBi
L1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggY2JjOWUzMGMwY2M2YTk1MjI0MmQ0YWQy
NzFmZDE0YWJjNTg2OGJlZC4uNDc1NzZiMDQ0MjQxZWJhOTZlM2QxNzg5MzM3MWYxNGNmODZjNmIy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpCkBAIC04MjcsMTEgKzgyNywxMyBAQCBoYXZlPyhRVFFVSUNLKSB7CiAg
ICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAgXAogICAgICAg
ICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwCiAKKyMgRklYTUU6IG1vdmUgdGhp
cyB0byBXZWJLaXQyUU1MLnByaSBvbmNlIHRoZSBRUXVpY2tXZWJWaWV3IGhhcyBtb3ZlZCB0aGVy
ZS4KKyMgc2VlIGh0dHA6Ly93a2IudWcvMTA5MjA0CiAgICAgZW5hYmxlPyhJTlBVVF9UWVBFX0NP
TE9SKSB7CiAgICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAgICAgVUlQcm9jZXNzL3F0L1dl
YkNvbG9yQ2hvb3NlclByb3h5UXQuaAorICAgICAgICAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2Vi
Y29sb3JwaWNrZXJfcC5oCiAgICAgICAgIFNPVVJDRVMgKz0gXAotICAgICAgICAgICAgVUlQcm9j
ZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuY3BwCisgICAgICAgICAgICBVSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJjb2xvcnBpY2tlci5jcHAKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lci5jcHAKaW5kZXggZGU1NTM5ZGUxODRmMGEzODZiNjkxNjMwMGYwMGJlNDcwNGQ5OWJkZC4u
YThhNmM4MjNhOWUxZjJiMjcyNzYxMTExNDMwZTBjNDRkMmI0ZDg3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29sb3JQaWNrZXJSZXN1
bHRMaXN0ZW5lci5jcHAKQEAgLTQwLDkgKzQwLDkgQEAgV0tUeXBlSUQgV0tDb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyR2V0VHlwZUlEKCkKICNlbmRpZgogfQogCi12b2lkIFdLQ29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lclNldENvbG9yKFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0
ZW5lclJlZiwgY29uc3QgV0tTdHJpbmdSZWYgY29sb3IpCit2b2lkIFdLQ29sb3JQaWNrZXJSZXN1
bHRMaXN0ZW5lclNldENvbG9yKFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5l
clJlZiwgV0tBUkdCIGNvbG9yKQogewogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAg
IHRvSW1wbChsaXN0ZW5lclJlZiktPnNldENvbG9yKHRvV1RGU3RyaW5nKGNvbG9yKSk7CisgICAg
dG9JbXBsKGxpc3RlbmVyUmVmKS0+c2V0Q29sb3IoY29sb3IpOwogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb2xvclBpY2tlclJlc3VsdExp
c3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyLmgKaW5kZXggYmZkNDczMmM5MTUyZGI4NjVlM2RmNzFmN2VjZGU5ZmY3Y2Ey
M2RhZS4uYWViZDg4YWMzZTVlOTY1MTM5ZmIxZGQ1OGJhNTZlNWVlZDNjMTk2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbG9yUGlja2Vy
UmVzdWx0TGlzdGVuZXIuaApAQCAtMzQsNyArMzQsNyBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQ
T1JUIFdLVHlwZUlEIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lckdldFR5cGVJRCgpOwogCi1X
S19FWFBPUlQgdm9pZCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJTZXRDb2xvcihXS0NvbG9y
UGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIGNvbnN0IFdLU3RyaW5nUmVmIGNv
bG9yKTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclNldENvbG9y
KFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZiwgV0tBUkdCIGNvbG9y
KTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmgKaW5kZXggYjEzM2UxODdmM2Q5MzBmOGExNjJkN2RjNmNkM2NiMjg4NWUyYTQyOS4u
ZjQ1ZTUxMDZkNGJmY2I0OGRhM2U4NjU2ODE2NzdlY2RhMzQxMWZjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaApAQCAtMjE2LDcgKzIxNiw3IEBAIHR5cGVkZWYgdm9p
ZCAoKldLUGFnZVByaW50RnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUsIGNvbnN0CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VTYXZlRGF0YVRvRmlsZUluRG93bmxv
YWRzRm9sZGVyQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRG
aWxlbmFtZSwgV0tTdHJpbmdSZWYgbWltZVR5cGUsIFdLVVJMUmVmIG9yaWdpbmF0aW5nVVJMLCBX
S0RhdGFSZWYgZGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIGJvb2wgKCpX
S1BhZ2VTaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURlY2lkZVBvbGlj
eUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFJlZiBwZXJtaXNzaW9uUmVxdWVzdCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBl
ZGVmIHZvaWQgKCpXS1BhZ2VTaG93Q29sb3JQaWNrZXJDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2Us
IFdLU3RyaW5nUmVmIGluaXRpYWxDb2xvciwgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVm
IGxpc3RlbmVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFn
ZVNob3dDb2xvclBpY2tlckNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tBUkdCIGluaXRpYWxD
b2xvciwgV0tSZWN0IGVsZW1lbnRSZWN0LCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYg
bGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdl
SGlkZUNvbG9yUGlja2VyQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xp
Y2tlZENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNv
biBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgV0tEaWN0aW9uYXJ5UmVmIHBsdWdpbkluZm9E
aWN0aW9uYXJ5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcAppbmRleCA4Yjkx
MjhlZmFjNjZlMWQ1ZDQ2NGRlMmJlM2NhODNjNzcwMjIyZGE1Li5kMjNiYWZjYjMyNmI3YWJmMDVj
MjAxODc1NjNjMmEyZWZjYjBiZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcApAQCAtMzksOCArMzksNyBAQCBFd2tD
b2xvclBpY2tlcjo6RXdrQ29sb3JQaWNrZXIoV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVm
IGNvbG9yUGlja2VyTGlzdGVuZQogCiB2b2lkIEV3a0NvbG9yUGlja2VyOjpzZXRDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGNvbG9yU3Ry
aW5nKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbG9yLnNlcmlhbGl6
ZWQoKS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyU2V0
Q29sb3IobV9jb2xvclBpY2tlckxpc3RlbmVyLmdldCgpLCBjb2xvclN0cmluZy5nZXQoKSk7Cisg
ICAgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyU2V0Q29sb3IobV9jb2xvclBpY2tlckxpc3Rl
bmVyLmdldCgpLCBjb2xvci5yZ2IoKSk7CiB9CiAKIGNvbnN0IENvbG9yJiBFd2tDb2xvclBpY2tl
cjo6Y29sb3IoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlldy5jcHAKaW5kZXggNjZjYjgzYzNhZjMxZmVjNmZiNDA0ZTFmYzMxOGY0NDlk
NjA0N2NiMS4uMDMzM2MyNTU0NTEyYTdhZDVmN2M0ZDMzZGU1Y2I0N2M4NmYxYjIyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBA
IC0yODIsNyArMjgyLDcgQEAgUVF1aWNrV2ViVmlld1ByaXZhdGU6OlFRdWlja1dlYlZpZXdQcml2
YXRlKFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0KQogICAgICwgcHJveHlBdXRoZW50aWNhdGlvbkRp
YWxvZygwKQogICAgICwgZmlsZVBpY2tlcigwKQogICAgICwgZGF0YWJhc2VRdW90YURpYWxvZygw
KQotICAgICwgY29sb3JDaG9vc2VyKDApCisgICAgLCBjb2xvclBpY2tlcigwKQogICAgICwgbV9i
ZXR3ZWVuTG9hZENvbW1pdEFuZEZpcnN0RnJhbWUoZmFsc2UpCiAgICAgLCBtX3VzZURlZmF1bHRD
b250ZW50SXRlbVNpemUodHJ1ZSkKICAgICAsIG1fbmF2aWdhdG9yUXRPYmplY3RFbmFibGVkKGZh
bHNlKQpAQCAtMTI2NywyMCArMTI2NywyMCBAQCB2b2lkIFFRdWlja1dlYlZpZXdFeHBlcmltZW50
YWw6OnNldERhdGFiYXNlUXVvdGFEaWFsb2coUVFtbENvbXBvbmVudCogZGF0YWJhc2VRdQogICAg
IGVtaXQgZGF0YWJhc2VRdW90YURpYWxvZ0NoYW5nZWQoKTsKIH0KIAotUVFtbENvbXBvbmVudCog
UVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6Y29sb3JDaG9vc2VyKCkgY29uc3QKK1FRbWxDb21w
b25lbnQqIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OmNvbG9yUGlja2VyKCkgY29uc3QKIHsK
ICAgICBRX0QoY29uc3QgUVF1aWNrV2ViVmlldyk7Ci0gICAgcmV0dXJuIGQtPmNvbG9yQ2hvb3Nl
cjsKKyAgICByZXR1cm4gZC0+Y29sb3JQaWNrZXI7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld0V4
cGVyaW1lbnRhbDo6c2V0Q29sb3JDaG9vc2VyKFFRbWxDb21wb25lbnQqIGNvbG9yQ2hvb3NlcikK
K3ZvaWQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2V0Q29sb3JQaWNrZXIoUVFtbENvbXBv
bmVudCogY29sb3JQaWNrZXIpCiB7CiAgICAgUV9EKFFRdWlja1dlYlZpZXcpOwotICAgIGlmIChk
LT5jb2xvckNob29zZXIgPT0gY29sb3JDaG9vc2VyKQorICAgIGlmIChkLT5jb2xvclBpY2tlciA9
PSBjb2xvclBpY2tlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgZC0+Y29sb3JDaG9vc2VyID0g
Y29sb3JDaG9vc2VyOwotICAgIGVtaXQgY29sb3JDaG9vc2VyQ2hhbmdlZCgpOworICAgIGQtPmNv
bG9yUGlja2VyID0gY29sb3JQaWNrZXI7CisgICAgZW1pdCBjb2xvclBpY2tlckNoYW5nZWQoKTsK
IH0KIAogUVN0cmluZyBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjp1c2VyQWdlbnQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2
aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19w
LmgKaW5kZXggZjFhZDk2NGVkYjVkYWI0ZjMyYzBjNTkzMTBjYmRhNzk4ZGQzNjRjNS4uNTE0OTM2
OGRkNTVmYjc1YjVhZmZlNzc5YjExOTU4NWE2NjQ1MDgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCkBAIC0yNzQsNyArMjc0LDcg
QEAgY2xhc3MgUVdFQktJVF9FWFBPUlQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCA6IHB1Ymxp
YyBRT2JqZWN0IHsKICAgICBRX1BST1BFUlRZKFFRbWxDb21wb25lbnQqIGl0ZW1TZWxlY3RvciBS
RUFEIGl0ZW1TZWxlY3RvciBXUklURSBzZXRJdGVtU2VsZWN0b3IgTk9USUZZIGl0ZW1TZWxlY3Rv
ckNoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRUW1sQ29tcG9uZW50KiBmaWxlUGlja2VyIFJFQUQg
ZmlsZVBpY2tlciBXUklURSBzZXRGaWxlUGlja2VyIE5PVElGWSBmaWxlUGlja2VyQ2hhbmdlZCkK
ICAgICBRX1BST1BFUlRZKFFRbWxDb21wb25lbnQqIGRhdGFiYXNlUXVvdGFEaWFsb2cgUkVBRCBk
YXRhYmFzZVF1b3RhRGlhbG9nIFdSSVRFIHNldERhdGFiYXNlUXVvdGFEaWFsb2cgTk9USUZZIGRh
dGFiYXNlUXVvdGFEaWFsb2dDaGFuZ2VkKQotICAgIFFfUFJPUEVSVFkoUVFtbENvbXBvbmVudCog
Y29sb3JDaG9vc2VyIFJFQUQgY29sb3JDaG9vc2VyIFdSSVRFIHNldENvbG9yQ2hvb3NlciBOT1RJ
RlkgY29sb3JDaG9vc2VyQ2hhbmdlZCkKKyAgICBRX1BST1BFUlRZKFFRbWxDb21wb25lbnQqIGNv
bG9yUGlja2VyIFJFQUQgY29sb3JQaWNrZXIgV1JJVEUgc2V0Q29sb3JQaWNrZXIgTk9USUZZIGNv
bG9yUGlja2VyQ2hhbmdlZCkKIAogICAgIFFfUFJPUEVSVFkoUVdlYlByZWZlcmVuY2VzKiBwcmVm
ZXJlbmNlcyBSRUFEIHByZWZlcmVuY2VzIENPTlNUQU5UIEZJTkFMKQogICAgIFFfUFJPUEVSVFko
UVdlYktpdFRlc3QqIHRlc3QgUkVBRCB0ZXN0IENPTlNUQU5UIEZJTkFMKQpAQCAtMzE4LDggKzMx
OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpbGVQaWNrZXIoUVFtbENvbXBvbmVudCopOwog
ICAgIFFRbWxDb21wb25lbnQqIGRhdGFiYXNlUXVvdGFEaWFsb2coKSBjb25zdDsKICAgICB2b2lk
IHNldERhdGFiYXNlUXVvdGFEaWFsb2coUVFtbENvbXBvbmVudCopOwotICAgIFFRbWxDb21wb25l
bnQqIGNvbG9yQ2hvb3NlcigpIGNvbnN0OwotICAgIHZvaWQgc2V0Q29sb3JDaG9vc2VyKFFRbWxD
b21wb25lbnQqKTsKKyAgICBRUW1sQ29tcG9uZW50KiBjb2xvclBpY2tlcigpIGNvbnN0OworICAg
IHZvaWQgc2V0Q29sb3JQaWNrZXIoUVFtbENvbXBvbmVudCopOwogICAgIFFTdHJpbmcgdXNlckFn
ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3QgUVN0cmluZyYgdXNlckFn
ZW50KTsKICAgICBpbnQgZGV2aWNlV2lkdGgoKSBjb25zdDsKQEAgLTM3Niw3ICszNzYsNyBAQCBR
X1NJR05BTFM6CiAgICAgdm9pZCBpdGVtU2VsZWN0b3JDaGFuZ2VkKCk7CiAgICAgdm9pZCBmaWxl
UGlja2VyQ2hhbmdlZCgpOwogICAgIHZvaWQgZGF0YWJhc2VRdW90YURpYWxvZ0NoYW5nZWQoKTsK
LSAgICB2b2lkIGNvbG9yQ2hvb3NlckNoYW5nZWQoKTsKKyAgICB2b2lkIGNvbG9yUGlja2VyQ2hh
bmdlZCgpOwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSogZG93
bmxvYWRJdGVtKTsKICAgICB2b2lkIHBlcm1pc3Npb25SZXF1ZXN0ZWQoUVdlYlBlcm1pc3Npb25S
ZXF1ZXN0KiBwZXJtaXNzaW9uKTsKICAgICB2b2lkIG1lc3NhZ2VSZWNlaXZlZChjb25zdCBRVmFy
aWFudE1hcCYgbWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKaW5kZXggOGFkNTNlMzI2YjM2OGViZmYxODY0ZGQyNGZh
ZjBkMTY3ODBiNjVhNS4uY2I2YTQyZGUwYWViYWY3ODQzODAwZjRhODllNDQyNTUwOTEyYThjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3
X3BfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
d19wX3AuaApAQCAtMTkzLDcgKzE5Myw3IEBAIHByb3RlY3RlZDoKICAgICBRUW1sQ29tcG9uZW50
KiBwcm94eUF1dGhlbnRpY2F0aW9uRGlhbG9nOwogICAgIFFRbWxDb21wb25lbnQqIGZpbGVQaWNr
ZXI7CiAgICAgUVFtbENvbXBvbmVudCogZGF0YWJhc2VRdW90YURpYWxvZzsKLSAgICBRUW1sQ29t
cG9uZW50KiBjb2xvckNob29zZXI7CisgICAgUVFtbENvbXBvbmVudCogY29sb3JQaWNrZXI7CiAK
ICAgICBRTGlzdDxRVXJsPiB1c2VyU2NyaXB0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViY29sb3JwaWNrZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2ViY29sb3JwaWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkMzQxZjYw
NjM0MjU2OWI4MDA0NjQ3MmMxZDhiYTk3OTI0ZGE5OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJjb2xvcnBpY2tlci5jcHAKQEAgLTAsMCAr
MSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgRGln
aWEgUGxjIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJxd2ViY29sb3JwaWNrZXJfcC5oIgorCisjaW5jbHVkZSAiV0tDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyLmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRl
ICJXS1N0cmluZy5oIgorI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgorI2luY2x1ZGUgInFx
dWlja3dlYnZpZXdfcF9wLmgiCisjaW5jbHVkZSA8UXRHdWkvUUNvbG9yPgorI2luY2x1ZGUgPFF0
UW1sL1FRbWxDb250ZXh0PgorI2luY2x1ZGUgPFF0UW1sL1FRbWxFbmdpbmU+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29sb3JQaWNr
ZXJDb250ZXh0T2JqZWN0IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisgICAgUV9Q
Uk9QRVJUWShRQ29sb3IgY3VycmVudENvbG9yIFJFQUQgY3VycmVudENvbG9yIENPTlNUQU5UIEZJ
TkFMKQorICAgIFFfUFJPUEVSVFkoUVJlY3RGIGVsZW1lbnRSZWN0IFJFQUQgZWxlbWVudFJlY3Qg
Q09OU1RBTlQgRklOQUwpCisKK3B1YmxpYzoKKyAgICBDb2xvclBpY2tlckNvbnRleHRPYmplY3Qo
Y29uc3QgUUNvbG9yJiBjb2xvciwgY29uc3QgUVJlY3RGJiByZWN0KQorICAgICAgICA6IG1fY3Vy
cmVudENvbG9yKGNvbG9yKQorICAgICAgICAsIG1fcmVjdChyZWN0KQorICAgIHsKKyAgICB9CisK
KyAgICBRQ29sb3IgY3VycmVudENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q29sb3I7
IH0KKyAgICBRUmVjdEYgZWxlbWVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKwor
ICAgIFFfSU5WT0tBQkxFIHZvaWQgYWNjZXB0KGNvbnN0IFFDb2xvciYgY29sb3IpIHsgZW1pdCBh
Y2NlcHRlZChjb2xvcik7IH0KKyAgICBRX0lOVk9LQUJMRSB2b2lkIHJlamVjdCgpIHsgZW1pdCBy
ZWplY3RlZCgpOyB9CisKK1FfU0lHTkFMUzoKKyAgICB2b2lkIGFjY2VwdGVkKGNvbnN0IFFDb2xv
ciYpOworICAgIHZvaWQgcmVqZWN0ZWQoKTsKKworcHJpdmF0ZToKKyAgICBRQ29sb3IgbV9jdXJy
ZW50Q29sb3I7CisgICAgUVJlY3RGIG1fcmVjdDsKK307CisKK1FXZWJDb2xvclBpY2tlcjo6UVdl
YkNvbG9yUGlja2VyKFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgUVF1
aWNrV2ViVmlldyogd2ViVmlldywgY29uc3QgUUNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFFS
ZWN0JiBlbGVtZW50UmVjdCkKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorICAgICwgbV9saXN0
ZW5lcihsaXN0ZW5lcikKKyAgICAsIG1fc2VsZWN0ZWRDb2xvcihpbml0aWFsQ29sb3IpCit7Cisg
ICAgUVJlY3RGIG1hcHBlZFJlY3Q7CisgICAgaWYgKCFlbGVtZW50UmVjdC5pc051bGwoKSkKKyAg
ICAgICAgbWFwcGVkUmVjdCA9IG1fd2ViVmlldy0+bWFwUmVjdEZyb21XZWJDb250ZW50KFFSZWN0
KGVsZW1lbnRSZWN0KSk7CisgICAgaWYgKCFtX3dlYlZpZXctPmV4cGVyaW1lbnRhbCgpLT5jb2xv
clBpY2tlcigpKQorICAgICAgICByZXR1cm47CisgICAgQ29sb3JQaWNrZXJDb250ZXh0T2JqZWN0
KiBjb250ZXh0T2JqZWN0ID0gbmV3IENvbG9yUGlja2VyQ29udGV4dE9iamVjdChpbml0aWFsQ29s
b3IsIG1hcHBlZFJlY3QpOworICAgIGNyZWF0ZUl0ZW0oY29udGV4dE9iamVjdCk7Cit9CisKK3Zv
aWQgUVdlYkNvbG9yUGlja2VyOjpjcmVhdGVJdGVtKFFPYmplY3QqIGNvbnRleHRPYmplY3QpCit7
CisgICAgUVFtbENvbXBvbmVudCogY29tcG9uZW50ID0gbV93ZWJWaWV3LT5leHBlcmltZW50YWwo
KS0+Y29sb3JQaWNrZXIoKTsKKyAgICBRX0FTU0VSVChjb21wb25lbnQpOworCisgICAgY3JlYXRl
Q29udGV4dChjb21wb25lbnQsIGNvbnRleHRPYmplY3QpOworICAgIFFPYmplY3QqIG9iamVjdCA9
IGNvbXBvbmVudC0+YmVnaW5DcmVhdGUobV9jb250ZXh0LmRhdGEoKSk7CisgICAgaWYgKCFvYmpl
Y3QpIHsKKyAgICAgICAgbV9jb250ZXh0LnJlc2V0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX2NvbG9yUGlja2VyLnJlc2V0KHFvYmplY3RfY2FzdDxRUXVpY2tJdGVtKj4ob2Jq
ZWN0KSk7CisgICAgaWYgKCFtX2NvbG9yUGlja2VyKSB7CisgICAgICAgIG1fY29udGV4dC5yZXNl
dCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVGhlc2UgbmVlZCB0byBiZSBl
bnF1ZXVlZCBiZWNhdXNlIHRoZXkgbWlnaHQgcmVzdWx0IGluIGltbWVkaWF0ZSBkZWxldGlvbiBh
bmQgbGVhZCB0byBoZWFwIGNvcnJ1cHRpb24KKyAgICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJ
R05BTChhY2NlcHRlZChRQ29sb3IpKSwgU0xPVChub3RpZnlDb2xvclNlbGVjdGVkKFFDb2xvcikp
LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdO
QUwocmVqZWN0ZWQoKSksIFNMT1QoZW5kUGlja2VyKCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7
CisKKyAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KG1fd2ViVmlldyktPmFkZEF0dGFjaGVk
UHJvcGVydHlUbyhtX2NvbG9yUGlja2VyLmRhdGEoKSk7CisgICAgbV9jb2xvclBpY2tlci0+c2V0
UGFyZW50SXRlbShtX3dlYlZpZXcpOworCisgICAgY29tcG9uZW50LT5jb21wbGV0ZUNyZWF0ZSgp
OworfQorCit2b2lkIFFXZWJDb2xvclBpY2tlcjo6Y3JlYXRlQ29udGV4dChRUW1sQ29tcG9uZW50
KiBjb21wb25lbnQsIFFPYmplY3QqIGNvbnRleHRPYmplY3QpCit7CisgICAgUVFtbENvbnRleHQq
IGJhc2VDb250ZXh0ID0gY29tcG9uZW50LT5jcmVhdGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWJh
c2VDb250ZXh0KQorICAgICAgICBiYXNlQ29udGV4dCA9IFFRbWxFbmdpbmU6OmNvbnRleHRGb3JP
YmplY3QobV93ZWJWaWV3KTsKKyAgICBtX2NvbnRleHQucmVzZXQobmV3IFFRbWxDb250ZXh0KGJh
c2VDb250ZXh0KSk7CisKKyAgICBjb250ZXh0T2JqZWN0LT5zZXRQYXJlbnQobV9jb250ZXh0LmRh
dGEoKSk7CisgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0UHJvcGVydHkoUUxhdGluMVN0cmluZygi
bW9kZWwiKSwgY29udGV4dE9iamVjdCk7CisgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0T2JqZWN0
KGNvbnRleHRPYmplY3QpOworfQorCit2b2lkIFFXZWJDb2xvclBpY2tlcjo6bm90aWZ5Q29sb3JT
ZWxlY3RlZChjb25zdCBRQ29sb3ImIGNvbG9yKQoreworICAgIGlmICghbV9saXN0ZW5lcikKKyAg
ICAgICAgcmV0dXJuOworICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIG1fc2VsZWN0
ZWRDb2xvciA9IGNvbG9yOworCisgICAgZW5kUGlja2VyKCk7Cit9CisKK3ZvaWQgUVdlYkNvbG9y
UGlja2VyOjplbmRQaWNrZXIoKQoreworICAgIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclNl
dENvbG9yKG1fbGlzdGVuZXIsIG1fc2VsZWN0ZWRDb2xvci5yZ2JhKCkpOworICAgIG1fY29sb3JQ
aWNrZXIucmVzZXQoKTsKKyAgICBtX2NvbnRleHQucmVzZXQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNpbmNsdWRlICJxd2ViY29sb3JwaWNrZXIubW9jIgorI2luY2x1ZGUgIm1v
Y19xd2ViY29sb3JwaWNrZXJfcC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJjb2xvcnBpY2tlcl9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3ZWJjb2xvcnBpY2tlcl9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU0OTdhOWEzZGE2ZmYz
OTliMTBlZDZiNjFmZDQxNzJjMTY4NjlmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmNvbG9ycGlja2VyX3AuaApAQCAtMCwwICsxLDY4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIHF3ZWJjb2xvcnBpY2tlcl9wX2gKKyNkZWZpbmUg
cXdlYmNvbG9ycGlja2VyX3BfaAorCisjaW5jbHVkZSAiV0tCYXNlLmgiCisjaW5jbHVkZSA8UXRD
b3JlL1FPYmplY3Q+CisjaW5jbHVkZSA8UXRDb3JlL1FSZWN0PgorI2luY2x1ZGUgPFF0Q29yZS9R
U2NvcGVkUG9pbnRlcj4KKyNpbmNsdWRlIDxRdEd1aS9RQ29sb3I+CisjaW5jbHVkZSA8UXRRbWwv
UVFtbENvbnRleHQ+CisjaW5jbHVkZSA8UXRRdWljay9RUXVpY2tJdGVtPgorCitRVF9CRUdJTl9O
QU1FU1BBQ0UKK2NsYXNzIFFRbWxDb21wb25lbnQ7CitRVF9FTkRfTkFNRVNQQUNFCisKK2NsYXNz
IFFRdWlja1dlYlZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBRV2ViQ29sb3JQ
aWNrZXIgOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIFFX
ZWJDb2xvclBpY2tlcihXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYsIFFRdWlja1dlYlZp
ZXcqLCBjb25zdCBRQ29sb3ImLCBjb25zdCBRUmVjdCYpOworCitwdWJsaWMgUV9TTE9UUzoKKyAg
ICB2b2lkIGVuZFBpY2tlcigpOworCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBub3RpZnlD
b2xvclNlbGVjdGVkKGNvbnN0IFFDb2xvciYpOworCitwcml2YXRlOgorCisgICAgdm9pZCBjcmVh
dGVJdGVtKFFPYmplY3QqKTsKKyAgICB2b2lkIGNyZWF0ZUNvbnRleHQoUVFtbENvbXBvbmVudCos
IFFPYmplY3QqKTsKKworICAgIFFTY29wZWRQb2ludGVyPFFRbWxDb250ZXh0PiBtX2NvbnRleHQ7
CisgICAgUVNjb3BlZFBvaW50ZXI8UVF1aWNrSXRlbT4gbV9jb2xvclBpY2tlcjsKKworICAgIFFR
dWlja1dlYlZpZXcqIG1fd2ViVmlldzsKKyAgICBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJS
ZWYgbV9saXN0ZW5lcjsKKyAgICBRQ29sb3IgbV9zZWxlY3RlZENvbG9yOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBxd2ViY29sb3JwaWNrZXJfcF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3Vs
dExpc3RlbmVyUHJveHkuY3BwCmluZGV4IDBlZTc5ZGQ3MWEzNmQyNTM5ZmZhZDQ0N2ZlOWE2MzBi
YTkyNjY2NjIuLjhiM2E1YzA3MTkwZWQyNjUwYzhmMzYxMTkyY2I4YWUzYmQzZTQyZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tl
clJlc3VsdExpc3RlbmVyUHJveHkuY3BwCkBAIC0zMCw2ICszMCw4IEBACiAKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk6OldlYkNvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXJQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCkBAIC00NiwxMiArNDgs
MTIgQEAgdm9pZCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk6OmludmFsaWRhdGUo
KQogICAgIG1fcGFnZSA9IDA7CiB9CiAKLXZvaWQgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
clByb3h5OjpzZXRDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yKQordm9pZCBXZWJDb2xvclBpY2tl
clJlc3VsdExpc3RlbmVyUHJveHk6OnNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAg
ICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5zZXRDb2xvckNo
b29zZXJDb2xvcihXZWJDb3JlOjpDb2xvcihjb2xvcikpOworICAgIG1fcGFnZS0+c2V0Q29sb3JD
aG9vc2VyQ29sb3IoY29sb3IpOwogICAgIG1fcGFnZS0+ZW5kQ29sb3JDaG9vc2VyKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3Vs
dExpc3RlbmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tl
clJlc3VsdExpc3RlbmVyUHJveHkuaAppbmRleCBkMjhlYjhhYTk1YzJkOGRiMDZkMjFiYjc0NjAx
ZGE5ZGNlZTFhNDdkLi41MGNjZTJjYTMwYTRjNTNkMmQ5NjQ4MGIxYzQ1YjI1Nzc5MWExNDgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRM
aXN0ZW5lclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oCkBAIC0yOSw5ICsyOSw5IEBACiAjaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJDb2xv
clBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwot
ICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYkNvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXJQcm94eShXZWJQYWdlUHJveHkqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMGJjOTI3ZjJlN2RmMzdkMmM1Y2NhMDE2ODE2
ZDM4NjY5OGYyNDgwMi4uYmU2Mzg1ODJjODJhM2NjN2E2ODRiMTZlYTY4MTBkZTY5Y2JjNTk4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI4NTgsNyAr
Mjg1OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Q29sb3JDaG9vc2VyKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IEluCiAgICAgbV9jb2xvclBpY2tlclJlc3Vs
dExpc3RlbmVyID0gV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5OjpjcmVhdGUodGhp
cyk7CiAgICAgbV9jb2xvckNob29zZXIgPSBXZWJDb2xvckNob29zZXJQcm94eTo6Y3JlYXRlKHRo
aXMpOwogCi0gICAgaWYgKG1fdWlDbGllbnQuc2hvd0NvbG9yUGlja2VyKHRoaXMsIGluaXRpYWxD
b2xvci5zZXJpYWxpemVkKCksIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5nZXQoKSkpCisg
ICAgaWYgKG1fdWlDbGllbnQuc2hvd0NvbG9yUGlja2VyKHRoaXMsIGluaXRpYWxDb2xvciwgZWxl
bWVudFJlY3QsIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5nZXQoKSkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fY29sb3JDaG9vc2VyID0gbV9wYWdlQ2xpZW50LT5jcmVhdGVDb2xvckNo
b29zZXJQcm94eSh0aGlzLCBpbml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCmluZGV4IGEzZGNjNGNlNDlhMzQ5ZmRkMTNmN2U2
YWUxNzQzMzliODQzOTA1YmQuLmM3YWZiNmFkYWY1NTM1M2Y2OTAyYmU5NjNkNDdkNzNkMTgwMmRm
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIldlYk51bWJlci5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVz
Lmg+CkBAIC00MjEsMTIgKzQyMiwxMiBAQCBib29sIFdlYlVJQ2xpZW50OjpzaG91bGRJbnRlcnJ1
cHRKYXZhU2NyaXB0KFdlYlBhZ2VQcm94eSogcGFnZSkKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQotYm9vbCBXZWJVSUNsaWVudDo6c2hvd0NvbG9yUGlja2VyKFdlYlBhZ2VQcm94
eSogcGFnZSwgY29uc3QgU3RyaW5nJiBpbml0aWFsQ29sb3IsIFdlYkNvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCitib29sIFdlYlVJQ2xpZW50OjpzaG93Q29sb3JQaWNr
ZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBJ
bnRSZWN0JiBlbGVtZW50UmVjdCAsIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eSog
bGlzdGVuZXIpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5zaG93Q29sb3JQaWNrZXIpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIG1fY2xpZW50LnNob3dDb2xvclBpY2tlcih0b0FQSShwYWdl
KSwgdG9BUEkoaW5pdGlhbENvbG9yLmltcGwoKSksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGllbnQu
Y2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuc2hvd0NvbG9yUGlja2VyKHRvQVBJKHBhZ2UpLCBp
bml0aWFsQ29sb3IucmdiKCksIHRvQVBJKGVsZW1lbnRSZWN0KSwgdG9BUEkobGlzdGVuZXIpLCBt
X2NsaWVudC5jbGllbnRJbmZvKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViVUlDbGllbnQuaAppbmRleCA0N2ExZmE2ODVjMmM1ODM0MjFkZTA4NWQxMWFl
NzIzMWFkY2YxZDIxLi4xMDk3NjZmNzMxNjAzMTc4YTg3MGYxN2RkMGJmNTc5MGU0NjE4YzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaApAQCAtMzUsMTAgKzM1LDExIEBA
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAg
IGNsYXNzIEZsb2F0UmVjdDsKLSAgICBjbGFzcyBJbnRTaXplOwotICAgIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKLSAgICBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CitjbGFzcyBDb2xvcjsKK2NsYXNz
IEZsb2F0UmVjdDsKK2NsYXNzIEludFNpemU7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitzdHJ1
Y3QgV2luZG93RmVhdHVyZXM7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE4LDcgKzEx
OSw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoV2ViUGFn
ZVByb3h5Kik7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICBib29sIHNob3dD
b2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBXZWJDb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyUHJveHkqKTsKKyAgICBib29sIHNob3dDb2xvclBpY2tlcihXZWJQYWdlUHJv
eHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJD
b2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkqKTsKICAgICBib29sIGhpZGVDb2xvclBpY2tl
cihXZWJQYWdlUHJveHkqKTsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcAppbmRleCA1NDg4ZWExMzY0NDVhNzA2YTZiOWU5
ZjBlMWM4ZWRlMGMyNDk1NmZhLi40NmI3ODc0MTgzNmEzMDQxMzA3NDBkMGMzYTIyMDNjNzM5Y2M2
YTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVu
dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRF
ZmwuY3BwCkBAIC0yMjcsMTAgKzIyNywxMCBAQCBXS1BhZ2VSZWYgUGFnZVVJQ2xpZW50RWZsOjpj
cmVhdGVOZXdQYWdlKFdLUGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIHdrUmVxdWVzdCwgVwogfQog
CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi12b2lkIFBhZ2VVSUNsaWVudEVmbDo6c2hv
d0NvbG9yUGlja2VyKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgaW5pdGlhbENvbG9yLCBXS0NvbG9y
UGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Cit2b2lkIFBhZ2VVSUNsaWVudEVmbDo6c2hvd0NvbG9yUGlja2VyKFdLUGFnZVJlZiwgV0tBUkdC
IGluaXRpYWxDb2xvciwgV0tSZWN0LCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlz
dGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgUGFnZVVJQ2xpZW50RWZsKiBw
YWdlVUlDbGllbnQgPSB0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKTsKLSAgICBXZWJDb3Jl
OjpDb2xvciBjb2xvciA9IFdlYkNvcmU6OkNvbG9yKFdlYktpdDo6dG9XVEZTdHJpbmcoaW5pdGlh
bENvbG9yKSk7CisgICAgV2ViQ29yZTo6Q29sb3IgY29sb3IgPSBXZWJDb3JlOjpDb2xvcihpbml0
aWFsQ29sb3IpOwogICAgIHBhZ2VVSUNsaWVudC0+bV92aWV3LT5yZXF1ZXN0Q29sb3JQaWNrZXIo
bGlzdGVuZXIsIGNvbG9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZVVJQ2xpZW50RWZsLmgKaW5kZXggZGY0N2I5NzE2N2I0ODAxYTU5YmIxY2MzN2MyZDJhMDE5
MTcxMzQzMS4uMGY2ZmZlYmZiNTUwZjFiN2M0MWFlZDAxODBlMzIxYzg2MjdjODRlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5oCkBAIC03MCw3
ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcnVuT3BlblBhbmVsKFdLUGFnZVJl
ZiwgV0tGcmFtZVJlZiwgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLCBXS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVO
ZXdQYWdlKFdLUGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmLCBXS0RpY3Rpb25hcnlSZWYsIFdLRXZl
bnRNb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiwgY29uc3Qgdm9pZCopOwogI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHN0YXRpYyB2b2lkIHNob3dDb2xvclBpY2tlcihXS1Bh
Z2VSZWYsIFdLU3RyaW5nUmVmIGluaXRpYWxDb2xvciwgV0tDb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyUmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgc2hvd0NvbG9yUGlja2VyKFdL
UGFnZVJlZiwgV0tBUkdCLCBXS1JlY3QsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiwg
Y29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGhpZGVDb2xvclBpY2tlcihXS1BhZ2VSZWYs
IGNvbnN0IHZvaWQqKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFBhZ2VDbGllbnQuY3BwCmluZGV4IDg5YTQwYzkyMzFhMTgxYjcwMTljMWUyZmExMmI2YjY4YjEx
NmIyNjEuLmJjMDhjNGZmMDU5MjMxNzcwMDc2N2QxY2FlOTEyMWIwMTQ1ZTJkMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSAiUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVh
YmxlQml0bWFwLmgiCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0jaW5jbHVkZSAiV2Vi
Q29sb3JDaG9vc2VyUHJveHlRdC5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5Lmgi
CiAjZW5kaWYKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5UXQuaCIKICNpbmNsdWRlICJX
ZWJFZGl0Q29tbWFuZFByb3h5LmgiCkBAIC0yMjMsNyArMjIzLDggQEAgUGFzc1JlZlB0cjxXZWJD
b250ZXh0TWVudVByb3h5PiBRdFBhZ2VDbGllbnQ6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2Vi
UGFnZVByb3gKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIFBhc3NSZWZQdHI8V2ViQ29s
b3JDaG9vc2VyUHJveHk+IFF0UGFnZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlUHJveHksIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29s
b3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQogewotICAgIHJldHVybiBX
ZWJDb2xvckNob29zZXJQcm94eVF0OjpjcmVhdGUod2ViUGFnZVByb3h5LCBtX3dlYlZpZXcsIGlu
aXRpYWxDb2xvciwgZWxlbWVudFJlY3QpOworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+KCk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5jcHAKaW5k
ZXggMzllMWUzZDIxMDlmNTNkMGRmODRhOTZlNWE2NzVlMDEzNjUwY2UyNS4uOTk5YWQ5Y2U1NmQ5
MjVkNTI5ZDk4ODBkOTgzM2FiOGQzYjg5MTdkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxMyBEaWdpYSBQbGMgYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00OSw2ICs1MCwxMCBAQCBRdFdl
YlBhZ2VVSUNsaWVudDo6UXRXZWJQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFFRdWlj
a1dlYlZpZXcqIHdlYlZpZXcpCiAgICAgdWlDbGllbnQuZXhjZWVkZWREYXRhYmFzZVF1b3RhID0g
ZXhjZWVkZWREYXRhYmFzZVF1b3RhOwogICAgIHVpQ2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QgPSBwb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0OwogICAgIHVpQ2xpZW50LmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0ID0gcG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgdWlDbGllbnQuc2hvd0NvbG9yUGlja2VyID0g
c2hvd0NvbG9yUGlja2VyOworICAgIHVpQ2xpZW50LmhpZGVDb2xvclBpY2tlciA9IGhpZGVDb2xv
clBpY2tlcjsKKyNlbmRpZiAvLyBJTlBVVF9UWVBFX0NPTE9SCiAgICAgV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KHBhZ2VSZWYsICZ1aUNsaWVudCk7CiB9CiAKQEAgLTE3MSw1ICsxNzYsMjAgQEAgdm9p
ZCBRdFdlYlBhZ2VVSUNsaWVudDo6cG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QoV0tQYWdlUmVmIHBhZ2UsIFcKICAgICB0b1F0V2ViUGFnZVVJQ2xpZW50KGNsaWVudEluZm8p
LT5wZXJtaXNzaW9uUmVxdWVzdChyZXEpOwogfQogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCit2b2lkIFF0V2ViUGFnZVVJQ2xpZW50OjpzaG93Q29sb3JQaWNrZXIoV0tQYWdlUmVmLCBX
S0FSR0IgaW5pdGlhbENvbG9yLCBXS1JlY3QgZWxlbWVudFJlY3QsIFdLQ29sb3JQaWNrZXJSZXN1
bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBR
dFdlYlBhZ2VVSUNsaWVudCogdWlDbGllbnQgPSB0b1F0V2ViUGFnZVVJQ2xpZW50KGNsaWVudElu
Zm8pOworICAgIHVpQ2xpZW50LT5tX2NvbG9yUGlja2VyID0gYWRvcHRQdHIobmV3IFFXZWJDb2xv
clBpY2tlcihsaXN0ZW5lciwgdWlDbGllbnQtPm1fd2ViVmlldywgUUNvbG9yKGluaXRpYWxDb2xv
ciksIHRvSW50UmVjdChlbGVtZW50UmVjdCkpKTsKK30KKwordm9pZCBRdFdlYlBhZ2VVSUNsaWVu
dDo6aGlkZUNvbG9yUGlja2VyKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sK
KyAgICBRdFdlYlBhZ2VVSUNsaWVudCogdWlDbGllbnQgPSB0b1F0V2ViUGFnZVVJQ2xpZW50KGNs
aWVudEluZm8pOworICAgIHVpQ2xpZW50LT5tX2NvbG9yUGlja2VyLT5lbmRQaWNrZXIoKTsKKyAg
ICB1aUNsaWVudC0+bV9jb2xvclBpY2tlci5jbGVhcigpOworfQorI2VuZGlmIC8vIElOUFVUX1RZ
UEVfQ09MT1IKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmgKaW5kZXggZThhYWE4MjZiN2RkNjBhNjgx
YmQ3NDhlZDMxNmJmMjZlMGRkOTA2OC4uMmQ0Nzg3MDdhYjgzMWQyY2VkNzQ3ZDQ2ZmU1MzQ3OGI5
MzAxNzJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJ
Q2xpZW50LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChD
KSAyMDEzIERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTIxLDEyICsyMiwxNSBAQAogI2lmbmRlZiBRdFdlYlBhZ2VVSUNsaWVudF9o
CiAjZGVmaW5lIFF0V2ViUGFnZVVJQ2xpZW50X2gKIAorI2luY2x1ZGUgInF3ZWJjb2xvcnBpY2tl
cl9wLmgiCisKICNpbmNsdWRlIDxRdENvcmUvUVN0cmluZz4KICNpbmNsdWRlIDxRdENvcmUvUVVy
bD4KICNpbmNsdWRlIDxXS0ZyYW1lLmg+CiAjaW5jbHVkZSA8V0tHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V0tQYWdlLmg+CiAjaW5jbHVkZSA8V0tTZWN1cml0eU9y
aWdpbi5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogY2xhc3MgUVF1aWNrV2ViVmlldzsK
IGNsYXNzIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDsKQEAgLTUxLDYgKzU1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmIGxpbmtVUkwsIGNv
bnN0IFFTdHJpbmcmIGxpbmtUaXRsZSk7CiAgICAgdm9pZCBwZXJtaXNzaW9uUmVxdWVzdChRV2Vi
UGVybWlzc2lvblJlcXVlc3QqKTsKIAorCiAgICAgLy8gV0tQYWdlVUlDbGllbnQgY2FsbGJhY2tz
LgogICAgIHN0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXS1BhZ2VSZWYsIFdLU3RyaW5n
UmVmIGFsZXJ0VGV4dCwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAg
c3RhdGljIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBt
ZXNzYWdlLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAgLTYwLDggKzY1
LDEzIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBleGNlZWRlZERh
dGFiYXNlUXVvdGEoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBX
S1N0cmluZ1JlZiBkYXRhYmFzZU5hbWUsIFdLU3RyaW5nUmVmIGRpc3BsYXlOYW1lLCB1bnNpZ25l
ZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdp
blVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVk
IGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKICAgICBz
dGF0aWMgdm9pZCBwb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJl
ZiwgV0tGcmFtZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgcG9saWN5Rm9yTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVm
LCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7CisjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgc3RhdGljIHZvaWQgc2hvd0NvbG9yUGlja2Vy
KFdLUGFnZVJlZiwgV0tBUkdCIGluaXRpYWxDb2xvciwgV0tSZWN0IGVsZW1lbnRSZWN0LCBXS0Nv
bG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAg
IHN0YXRpYyB2b2lkIGhpZGVDb2xvclBpY2tlcihXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOworI2VuZGlmIC8vIElOUFVUX1RZUEVfQ09MT1IKIAogICAgIFFRdWlja1dlYlZpZXcq
IG1fd2ViVmlldzsKKyAgICBPd25QdHI8UVdlYkNvbG9yUGlja2VyPiBtX2NvbG9yUGlja2VyOwog
ICAgIFFVcmwgbV9sYXN0SG92ZXJlZFVSTDsKICAgICBRU3RyaW5nIG1fbGFzdEhvdmVyZWRUaXRs
ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JD
aG9vc2VyUHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JD
aG9vc2VyUHJveHlRdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiNzQ3Yjc3
YjExNTQ2NmRlZTQ5MDIzNTA5OWMyZjBjMDZmMGQ3YTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNv
bG9yQ2hvb3NlclByb3h5UXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2Vi
Q29sb3JDaG9vc2VyUHJveHlRdC5oIgotCi0jaW5jbHVkZSAicXF1aWNrd2Vidmlld19wLmgiCi0j
aW5jbHVkZSAicXF1aWNrd2Vidmlld19wX3AuaCIKLSNpbmNsdWRlIDxRdFFtbC9RUW1sQ29udGV4
dD4KLSNpbmNsdWRlIDxRdFFtbC9RUW1sRW5naW5lPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIENvbG9yQ2hvb3NlckNvbnRleHRPYmpl
Y3QgOiBwdWJsaWMgUU9iamVjdCB7Ci0gICAgUV9PQkpFQ1QKLSAgICBRX1BST1BFUlRZKFFDb2xv
ciBjdXJyZW50Q29sb3IgUkVBRCBjdXJyZW50Q29sb3IgQ09OU1RBTlQgRklOQUwpCi0gICAgUV9Q
Uk9QRVJUWShRUmVjdEYgZWxlbWVudFJlY3QgUkVBRCBlbGVtZW50UmVjdCBDT05TVEFOVCBGSU5B
TCkKLQotcHVibGljOgotICAgIENvbG9yQ2hvb3NlckNvbnRleHRPYmplY3QoY29uc3QgUUNvbG9y
JiBjb2xvciwgY29uc3QgUVJlY3RGJiByZWN0KQotICAgICAgICA6IG1fY3VycmVudENvbG9yKGNv
bG9yKQotICAgICAgICAsIG1fcmVjdChyZWN0KQotICAgIHsKLSAgICB9Ci0KLSAgICBRQ29sb3Ig
Y3VycmVudENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q29sb3I7IH0KLSAgICBRUmVj
dEYgZWxlbWVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KLQotICAgIFFfSU5WT0tB
QkxFIHZvaWQgYWNjZXB0KGNvbnN0IFFDb2xvciYgY29sb3IpIHsgZW1pdCBhY2NlcHRlZChjb2xv
cik7IH0KLSAgICBRX0lOVk9LQUJMRSB2b2lkIHJlamVjdCgpIHsgZW1pdCByZWplY3RlZCgpOyB9
Ci0KLVFfU0lHTkFMUzoKLSAgICB2b2lkIGFjY2VwdGVkKGNvbnN0IFFDb2xvciYpOwotICAgIHZv
aWQgcmVqZWN0ZWQoKTsKLQotcHJpdmF0ZToKLSAgICBRQ29sb3IgbV9jdXJyZW50Q29sb3I7Ci0g
ICAgUVJlY3RGIG1fcmVjdDsKLX07Ci0KLVdlYkNvbG9yQ2hvb3NlclByb3h5UXQ6OldlYkNvbG9y
Q2hvb3NlclByb3h5UXQoV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVudCogY2xpZW50LCBRUXVp
Y2tXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBJbnRS
ZWN0JiBlbGVtZW50UmVjdCkKLSAgICA6IFdlYkNvbG9yQ2hvb3NlclByb3h5KGNsaWVudCkKLSAg
ICAsIG1fd2ViVmlldyh3ZWJWaWV3KQotewotICAgIGNvbnN0IFFSZWN0RiBtYXBwZWRSZWN0PSBt
X3dlYlZpZXctPm1hcFJlY3RGcm9tV2ViQ29udGVudChRUmVjdChlbGVtZW50UmVjdCkpOwotICAg
IENvbG9yQ2hvb3NlckNvbnRleHRPYmplY3QqIGNvbnRleHRPYmplY3QgPSBuZXcgQ29sb3JDaG9v
c2VyQ29udGV4dE9iamVjdChpbml0aWFsQ29sb3IsIG1hcHBlZFJlY3QpOwotICAgIGNyZWF0ZUl0
ZW0oY29udGV4dE9iamVjdCk7Ci19Ci0KLVdlYkNvbG9yQ2hvb3NlclByb3h5UXQ6On5XZWJDb2xv
ckNob29zZXJQcm94eVF0KCkKLXsKLX0KLQotdm9pZCBXZWJDb2xvckNob29zZXJQcm94eVF0Ojpj
cmVhdGVJdGVtKFFPYmplY3QqIGNvbnRleHRPYmplY3QpCi17Ci0gICAgUVFtbENvbXBvbmVudCog
Y29tcG9uZW50ID0gbV93ZWJWaWV3LT5leHBlcmltZW50YWwoKS0+Y29sb3JDaG9vc2VyKCk7Ci0g
ICAgaWYgKCFjb21wb25lbnQpIHsKLSAgICAgICAgZGVsZXRlIGNvbnRleHRPYmplY3Q7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjcmVhdGVDb250ZXh0KGNvbXBvbmVudCwgY29udGV4
dE9iamVjdCk7Ci0gICAgUU9iamVjdCogb2JqZWN0ID0gY29tcG9uZW50LT5iZWdpbkNyZWF0ZSht
X2NvbnRleHQuZ2V0KCkpOwotICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAgIG1fY29udGV4dC5j
bGVhcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9jb2xvckNob29zZXIgPSBh
ZG9wdFB0cihxb2JqZWN0X2Nhc3Q8UVF1aWNrSXRlbSo+KG9iamVjdCkpOwotICAgIGlmICghbV9j
b2xvckNob29zZXIpIHsKLSAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICAvLyBOZWVkcyB0byBiZSBlbnF1ZXVlIGJlY2F1c2UgaXQgbWlnaHQg
dHJpZ2dlciBkZWxldGlvbi4KLSAgICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJR05BTChhY2Nl
cHRlZChRQ29sb3IpKSwgU0xPVChub3RpZnlDb2xvclNlbGVjdGVkKFFDb2xvcikpLCBRdDo6UXVl
dWVkQ29ubmVjdGlvbik7Ci0gICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwocmVqZWN0
ZWQoKSksIFNMT1QoZW5kQ2hvb3NlcigpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwotCi0gICAg
UVF1aWNrV2ViVmlld1ByaXZhdGU6OmdldChtX3dlYlZpZXcpLT5hZGRBdHRhY2hlZFByb3BlcnR5
VG8obV9jb2xvckNob29zZXIuZ2V0KCkpOwotICAgIG1fY29sb3JDaG9vc2VyLT5zZXRQYXJlbnRJ
dGVtKG1fd2ViVmlldyk7Ci0KLSAgICBjb21wb25lbnQtPmNvbXBsZXRlQ3JlYXRlKCk7Ci19Ci0K
LXZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlRdDo6Y3JlYXRlQ29udGV4dChRUW1sQ29tcG9uZW50
KiBjb21wb25lbnQsIFFPYmplY3QqIGNvbnRleHRPYmplY3QpCi17Ci0gICAgUVFtbENvbnRleHQq
IGJhc2VDb250ZXh0ID0gY29tcG9uZW50LT5jcmVhdGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWJh
c2VDb250ZXh0KQotICAgICAgICBiYXNlQ29udGV4dCA9IFFRbWxFbmdpbmU6OmNvbnRleHRGb3JP
YmplY3QobV93ZWJWaWV3KTsKLSAgICBtX2NvbnRleHQgPSBhZG9wdFB0cihuZXcgUVFtbENvbnRl
eHQoYmFzZUNvbnRleHQpKTsKLQotICAgIGNvbnRleHRPYmplY3QtPnNldFBhcmVudChtX2NvbnRl
eHQuZ2V0KCkpOwotICAgIG1fY29udGV4dC0+c2V0Q29udGV4dFByb3BlcnR5KFFMYXRpbjFTdHJp
bmcoIm1vZGVsIiksIGNvbnRleHRPYmplY3QpOwotICAgIG1fY29udGV4dC0+c2V0Q29udGV4dE9i
amVjdChjb250ZXh0T2JqZWN0KTsKLX0KLQotdm9pZCBXZWJDb2xvckNob29zZXJQcm94eVF0Ojpz
ZXRTZWxlY3RlZENvbG9yKGNvbnN0IENvbG9yJikKLXsKLSAgICAvLyBUaGlzIGlzIHN1cHBvc2Ug
dG8gYmUgdXNlZCB0byByZWFjdCB0byBET00gY2hhbmdlcy4gV2hlbgotICAgIC8vIGEgdXNlciBz
Y3JpcHQgY2hhbmdlcyB0aGUgaW5wdXQgdmFsdWUsIHRoZSBtZXRob2QgZ2l2ZXMgdGhlCi0gICAg
Ly8gb3B0aW9uIHRvIHVwZGF0ZSB0aGUgY29sb3IgY2hvb3NlciBVSSBpZiB3ZSB3ZXJlIHNob3dp
bmcgdGhlCi0gICAgLy8gY3VycmVudCB2YWx1ZS4gU2luY2Ugd2UgZG9uJ3QsIGl0IGlzIGlycmVs
ZXZhbnQgcmlnaHQgbm93LgotICAgIC8vIEFuZCB5ZXMsIHRoZSBuYW1lIHNvdW5kcyBtaXNsZWFk
aW5nIGJ1dCBjb21lcyBmcm9tIFdlYkNvcmUuCi19Ci0KLXZvaWQgV2ViQ29sb3JDaG9vc2VyUHJv
eHlRdDo6bm90aWZ5Q29sb3JTZWxlY3RlZChjb25zdCBRQ29sb3ImIGNvbG9yKQotewotICAgIGlm
ICghbV9jbGllbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEFscGhhIGlzIGFsd2F5cyBp
Z25vcmVkIGJ5IHRoZSBjb2xvciBpbnB1dAotICAgIENvbG9yIGNvcmVDb2xvciA9IG1ha2VSR0Io
Y29sb3IucmVkKCksIGNvbG9yLmdyZWVuKCksIGNvbG9yLmJsdWUoKSk7Ci0gICAgbV9jbGllbnQt
PmRpZENob29zZUNvbG9yKGNvcmVDb2xvcik7Ci0KLSAgICBlbmRDaG9vc2VyKCk7Ci19Ci0KLXZv
aWQgV2ViQ29sb3JDaG9vc2VyUHJveHlRdDo6ZW5kQ2hvb3NlcigpCi17Ci0gICAgbV9jb2xvckNo
b29zZXIuY2xlYXIoKTsKLSAgICBtX2NvbnRleHQuY2xlYXIoKTsKLQotICAgIGlmICghbV9jbGll
bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LT5kaWRFbmRDb2xvckNob29zZXIo
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNpbmNsdWRlICJXZWJDb2xvckNob29z
ZXJQcm94eVF0Lm1vYyIKLSNpbmNsdWRlICJtb2NfV2ViQ29sb3JDaG9vc2VyUHJveHlRdC5jcHAi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JDaG9vc2Vy
UHJveHlRdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclBy
b3h5UXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdjMzdmYzg0MjExNTMwNDc1
NTM3NTYzNzRhMjZkMDEzYWEyNjRhNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JDaG9vc2Vy
UHJveHlRdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNp
Zm5kZWYgV2ViQ29sb3JDaG9vc2VyUHJveHlRdF9oCi0jZGVmaW5lIFdlYkNvbG9yQ2hvb3NlclBy
b3h5UXRfaAotCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3Nl
clByb3h5LmgiCi0jaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+Ci0jaW5jbHVkZSA8d3RmL093blB0
ci5oPgotCi1RVF9CRUdJTl9OQU1FU1BBQ0UKLWNsYXNzIFFRbWxDb21wb25lbnQ7Ci1jbGFzcyBR
UW1sQ29udGV4dDsKLWNsYXNzIFFRdWlja0l0ZW07Ci1RVF9FTkRfTkFNRVNQQUNFCi0KLWNsYXNz
IFFRdWlja1dlYlZpZXc7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbG9yOwotfQot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViQ29sb3JDaG9vc2VyUHJveHlRdCA6IHB1
YmxpYyBRT2JqZWN0LCBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyUHJveHkgewotICAgIFFfT0JKRUNU
Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4g
Y3JlYXRlKFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVudCwgUVF1aWNrV2ViVmll
dyogd2ViVmlldywgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYkNvbG9yQ2hvb3NlclByb3h5UXQoY2xpZW50LCB3ZWJWaWV3LCBpbml0aWFsQ29s
b3IsIGVsZW1lbnRSZWN0KSk7Ci0gICAgfQotICAgIH5XZWJDb2xvckNob29zZXJQcm94eVF0KCk7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xv
ciYpOwotCi1wdWJsaWMgUV9TTE9UUzoKLSAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3NlcigpOwot
Ci1wcml2YXRlIFFfU0xPVFM6Ci0gICAgdm9pZCBub3RpZnlDb2xvclNlbGVjdGVkKGNvbnN0IFFD
b2xvciYpOwotCi1wcml2YXRlOgotICAgIFdlYkNvbG9yQ2hvb3NlclByb3h5UXQoV2ViQ29sb3JD
aG9vc2VyUHJveHk6OkNsaWVudCosIFFRdWlja1dlYlZpZXcqLCBjb25zdCBXZWJDb3JlOjpDb2xv
ciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLQotICAgIHZvaWQgY3JlYXRlSXRlbShRT2Jq
ZWN0Kik7Ci0gICAgdm9pZCBjcmVhdGVDb250ZXh0KFFRbWxDb21wb25lbnQqLCBRT2JqZWN0Kik7
Ci0KLSAgICBPd25QdHI8UVFtbENvbnRleHQ+IG1fY29udGV4dDsKLSAgICBPd25QdHI8UVF1aWNr
SXRlbT4gbV9jb2xvckNob29zZXI7Ci0KLSAgICBRUXVpY2tXZWJWaWV3KiBtX3dlYlZpZXc7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkNvbG9yQ2hvb3NlclBy
b3h5UXRfaApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDc2YThjZmQ1ZmQ1ZjM0OTg0ZWUzNjM5YWU2OGQ1MDZlMDBhMzE5M2YuLjE3NjJhYjUwMjhi
NTEyZWZjODVmZDU2Yjc5NzA4MjJkYmE5MWY3OTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMi0yNyAgUGll
cnJlIFJvc3NpICA8cGllcnJlLnJvc3NpQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0g
TW92ZSBDb2xvciBwaWNrZXIgb24gdG9wIG9mIHRoZSBDIEFQSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MjIyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3Nl
cldpbmRvdy5xbWw6IGFkanVzdCB0byB0aGUgbmFtaW5nIGNoYW5nZS4KKwogMjAxMy0wMi0yNyAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBmaXggYWZ0
ZXIgcjE0NDE1NS4gVGhlIHJlcG9ydCBwYWdlIGlzIGxvY2F0ZWQgYXQgL2FwaS9yZXBvcnQsIG5v
dCAvYXBpL3Rlc3QvcmVwb3J0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1s
L0Jyb3dzZXJXaW5kb3cucW1sIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5k
b3cucW1sCmluZGV4IGI0YjViYzA5MjY4Y2JiM2NmMzQ5YzA4YTA2YzdjMmE5NWRjY2VhNjUuLmFi
NGZiMTMzNGI3OTBhYzEzNWNhNTYyY2VkZjU2ZTJlZDA5NzVmNzAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbAorKysgYi9Ub29scy9NaW5pQnJv
d3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwKQEAgLTU1NSw3ICs1NTUsNyBAQCBSZWN0YW5n
bGUgewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICBleHBlcmltZW50YWwuY29sb3JDaG9vc2VyOiBDb2xvckNob29zZXIgeyB9CisgICAgICAgIGV4
cGVyaW1lbnRhbC5jb2xvclBpY2tlcjogQ29sb3JDaG9vc2VyIHsgfQogICAgICAgICBleHBlcmlt
ZW50YWwub25FbnRlckZ1bGxTY3JlZW5SZXF1ZXN0ZWQgOiB7CiAgICAgICAgICAgICBuYXZpZ2F0
aW9uQmFyLnZpc2libGUgPSBmYWxzZTsKICAgICAgICAgICAgIFdpbmRvdy5zaG93RnVsbFNjcmVl
bigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190742</attachid>
            <date>2013-02-28 09:35:54 -0800</date>
            <delta_ts>2013-10-02 21:21:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109222-20130228183454.patch</filename>
            <type>text/plain</type>
            <size>51506</size>
            <attacher name="Pierre Rossi">pierre.rossi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2RmY2RiNjZjZGFhMDAz
NjY3OWZiYmJkZTIwODc5MDEyNzYxMDQ3My4uY2I5ZjViODY2NzQxNWEyMzEwYzI1ODVlMDcxZTU4
YTdhNTM5ZmFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEzLTAyLTI3ICBQaWVy
cmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBN
b3ZlIENvbG9yIHBpY2tlciBvbiB0b3Agb2YgdGhlIEMgQVBJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkyMjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb2xvciBwaWNraW5nIGRlbGVnYXRpb24gY2Fu
IGFscmVhZHkgYmUgZG9uZSB0aHJvdWdoIHRoZSBDIEFQSS4KKyAgICAgICAgU2luY2UgdXNpbmcg
YSBzdHJpbmcgdG8gcGFzcyA0IGJ5dGVzIGFsb25nIHNlZW1zIGxpa2UgdXNpbmcgYSBqYWNraGFt
bWVyCisgICAgICAgIHRvIGtpbGwgYSBmbHksIHdlIGNoYW5nZSB0aGUgQy1BUEkgc2xpZ2h0bHks
IGFuZCB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byBleHBvc2UKKyAgICAgICAgdGhlIGVsZW1lbnQg
cmVjdCwgd2hpY2ggY291bGQgYmUgdXNlZnVsIG9uIHdpZGVyIHRvdWNoc2NyZWVucy4KKyAgICAg
ICAgQWxzbyBhZGp1c3QgdGhlIHNlbWFudGljcyB0byB1c2UgdGhlIHRlcm0gcGlja2VyIGluc3Rl
YWQgb2YgY2hvb3NlciBhbGwKKyAgICAgICAgb3ZlciB0aGUgcGxhY2UsIHRvIG1ha2UgaXQgY2xl
YXJlciB0aGF0IHRoaXMgbm93IHJlbGllcyBvbiB0aGUgQyBBUEkKKworICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9XS0Jhc2UuaDogdHlwZWRlZiB1aW50MzJfdCBXS0NvbG9yQVJHQjMyLgorICAgICAg
ICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJT
ZXRDb2xvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29sb3JQaWNrZXJSZXN1bHRM
aXN0ZW5lci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6IEFiYW5kb24gdW51c2VkIGNy
ZWF0ZUNvbG9yQ2hvb3NlclByb3h5IEFQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5oOiBEaXR0by4KKyAgICAgICAgKFBhZ2VDbGllbnRJbXBsKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcDoKKyAgICAgICAgKEV3
a0NvbG9yUGlja2VyOjpzZXRDb2xvcik6IHVwZGF0ZSB0byB1c2UgdGhlIG5ldyBBUEkuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaDogQWJhbmRvbiB1bnVzZWQg
Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkgQVBJLgorICAgICAgICAoUGFnZUNsaWVudEltcGwpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOiBEaXR0by4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1
aWNrV2ViVmlld1ByaXZhdGU6OlFRdWlja1dlYlZpZXdQcml2YXRlKToKKyAgICAgICAgKFFRdWlj
a1dlYlZpZXdFeHBlcmltZW50YWw6OmNvbG9yUGlja2VyKToKKyAgICAgICAgKFFRdWlja1dlYlZp
ZXdFeHBlcmltZW50YWw6OnNldENvbG9yUGlja2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnZpZXdfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlld19wX3AuaDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJjb2xvcnBpY2tlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JDaG9vc2VyUHJveHlRdC5jcHAuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoQ29sb3JQaWNrZXJDb250ZXh0T2JqZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6Q29sb3JQaWNrZXJDb250ZXh0T2JqZWN0OjpDb2xvclBpY2tlckNvbnRleHRP
YmplY3QpOgorICAgICAgICAoV2ViS2l0OjpDb2xvclBpY2tlckNvbnRleHRPYmplY3Q6OmN1cnJl
bnRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OkNvbG9yUGlja2VyQ29udGV4dE9iamVjdDo6ZWxl
bWVudFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpDb2xvclBpY2tlckNvbnRleHRPYmplY3Q6OmFj
Y2VwdCk6CisgICAgICAgIChXZWJLaXQ6OkNvbG9yUGlja2VyQ29udGV4dE9iamVjdDo6cmVqZWN0
KToKKyAgICAgICAgKFdlYktpdDo6UVdlYkNvbG9yUGlja2VyOjpRV2ViQ29sb3JQaWNrZXIpOgor
ICAgICAgICAoV2ViS2l0OjpRV2ViQ29sb3JQaWNrZXI6OmNyZWF0ZUl0ZW0pOgorICAgICAgICAo
V2ViS2l0OjpRV2ViQ29sb3JQaWNrZXI6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0
OjpRV2ViQ29sb3JQaWNrZXI6Om5vdGlmeUNvbG9yU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpRV2ViQ29sb3JQaWNrZXI6OmVuZFBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC9xd2ViY29sb3JwaWNrZXJfcC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChRV2ViQ29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcmF3L3Fy
YXd3ZWJ2aWV3LmNwcDogQWJhbmRvbiB1bnVzZWQgY3JlYXRlQ29sb3JDaG9vc2VyUHJveHkgQVBJ
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3BfcC5oOiBEaXR0
by4KKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9v
c2VyUHJveHkpOiBHaXZlIGNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5IGEgZGVmYXVsdCBpbXBsZW1l
bnRhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
clByb3h5OjpzZXRDb2xvcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXJQcm94eS5oOgorICAgICAgICAoV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
clByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93Q29sb3JDaG9vc2VyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6c2hv
d0NvbG9yUGlja2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVUlDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViVUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50
RWZsOjpzaG93Q29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xp
ZW50RWZsLmg6CisgICAgICAgIChQYWdlVUlDbGllbnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvV2ViVmlldy5jcHA6IEFiYW5kb24gdW51c2VkIGNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5
IEFQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuaDogRGl0dG8uCisgICAgICAg
ICogVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5jcHA6IERpdHRvLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9xdC9RdFBhZ2VDbGllbnQuaDogRGl0dG8uCisgICAgICAgIChRdFBhZ2VDbGllbnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpRdFBhZ2VDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpRdFdlYlBh
Z2VVSUNsaWVudDo6UXRXZWJQYWdlVUlDbGllbnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6UXRXZWJQYWdlVUlDbGllbnQ6OnNob3dDb2xvclBpY2tlcik6CisgICAgICAg
IChXZWJLaXQ6OlF0V2ViUGFnZVVJQ2xpZW50OjpoaWRlQ29sb3JQaWNrZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5oOgorCiAyMDEzLTAyLTI3ICBDc2FiYSBP
c3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dLMl0gT25lIG1vcmUg
dW5yZXZpZXdlZCBidWlsZGZpeCBmb3IgRUZMLCBHVEsgYW5kIFF0IGFmdGVyIHIxNDQyMTguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggOGMyNDNkYmI0MTdmNjFmY2FhY2M1
ZmJmNDRkNmVlN2NlZTdhYmE1OS4uZTNhOGE0MDZkYzA2NzkwNDU5Y2UxOTY2ODAzNjI0YTgwYmM3
YjY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtOTMsNiArOTMsOCBA
QCBlbnVtIFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUgewogfTsKIHR5cGVkZWYgZW51bSBXS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lIFdLVXNlclNjcmlwdEluamVjdGlvblRpbWU7CiAKK3R5cGVk
ZWYgdWludDMyX3QgV0tDb2xvckFSR0IzMjsKKwogLyogV2ViS2l0MiBtYWluIEFQSSB0eXBlcyAq
LwogCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
KiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggOTQ0OTBlY2Fi
ZTA2Y2FiMzE5NmYwMDk4NzA3ZmM2MjkyMjBiODc4ZC4uMjA0MzBlZjY1MTMwNmNmNjcxNTUwYTI4
YzE3ZGJmMjE3ZjRhYWMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC04MjksMTEgKzgyOSwxMyBAQCBoYXZl
PyhRVFFVSUNLKSB7CiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYkljb25EYXRhYmFzZUNsaWVu
dC5jcHAgXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwCiAKKyMg
RklYTUU6IG1vdmUgdGhpcyB0byBXZWJLaXQyUU1MLnByaSBvbmNlIHRoZSBRUXVpY2tXZWJWaWV3
IGhhcyBtb3ZlZCB0aGVyZS4KKyMgc2VlIGh0dHA6Ly93a2IudWcvMTA5MjA0CiAgICAgZW5hYmxl
PyhJTlBVVF9UWVBFX0NPTE9SKSB7CiAgICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAgICAg
VUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuaAorICAgICAgICAgICAgVUlQcm9j
ZXNzL0FQSS9xdC9xd2ViY29sb3JwaWNrZXJfcC5oCiAgICAgICAgIFNPVVJDRVMgKz0gXAotICAg
ICAgICAgICAgVUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuY3BwCisgICAgICAg
ICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJjb2xvcnBpY2tlci5jcHAKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29sb3JQ
aWNrZXJSZXN1bHRMaXN0ZW5lci5jcHAKaW5kZXggZGU1NTM5ZGUxODRmMGEzODZiNjkxNjMwMGYw
MGJlNDcwNGQ5OWJkZC4uZmZhYzU4NWE0OTBkNzYzNjFhYzQwZmJhN2ZiOTUwNDZiNGNmZjMxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jcHAKQEAgLTQwLDkgKzQwLDkgQEAgV0tUeXBlSUQg
V0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyR2V0VHlwZUlEKCkKICNlbmRpZgogfQogCi12b2lk
IFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclNldENvbG9yKFdLQ29sb3JQaWNrZXJSZXN1bHRM
aXN0ZW5lclJlZiBsaXN0ZW5lclJlZiwgY29uc3QgV0tTdHJpbmdSZWYgY29sb3IpCit2b2lkIFdL
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclNldENvbG9yKFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lclJlZiBsaXN0ZW5lclJlZiwgV0tDb2xvckFSR0IzMiBjb2xvcikKIHsKICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKLSAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT5zZXRDb2xvcih0b1dU
RlN0cmluZyhjb2xvcikpOworICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPnNldENvbG9yKGNvbG9y
KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5oCmluZGV4IGJmZDQ3MzJjOTE1MmRi
ODY1ZTNkZjcxZjdlY2RlOWZmN2NhMjNkYWUuLjBlM2RjYmU3MzZhYmI2ZjdhNzE2ZGUyYmVlOGRj
YTBmMzBmYmJmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmgKQEAgLTM0LDcgKzM0LDcgQEAg
ZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0NvbG9yUGlja2VyUmVzdWx0TGlz
dGVuZXJHZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIHZvaWQgV0tDb2xvclBpY2tlclJlc3VsdExp
c3RlbmVyU2V0Q29sb3IoV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVm
LCBjb25zdCBXS1N0cmluZ1JlZiBjb2xvcik7CitXS19FWFBPUlQgdm9pZCBXS0NvbG9yUGlja2Vy
UmVzdWx0TGlzdGVuZXJTZXRDb2xvcihXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlz
dGVuZXJSZWYsIFdLQ29sb3JBUkdCMzIgY29sb3IpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAppbmRleCBiMTMzZTE4N2YzZDkz
MGY4YTE2MmQ3ZGM2Y2QzY2IyODg1ZTJhNDI5Li4xZjAwMTg5OTg2NmQ0MGZmOGM2ZjlmNjMxYjU3
YTlhOWJmOTUwY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCkBA
IC0yMTYsNyArMjE2LDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdlUHJpbnRGcmFtZUNhbGxiYWNr
KShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3QKIHR5cGVkZWYgdm9pZCAo
KldLUGFnZVNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXJDYWxsYmFjaykoV0tQYWdlUmVm
IHBhZ2UsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBXS1N0cmluZ1JlZiBtaW1lVHlw
ZSwgV0tVUkxSZWYgb3JpZ2luYXRpbmdVUkwsIFdLRGF0YVJlZiBkYXRhLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLUGFnZVNob3VsZEludGVycnVwdEphdmFTY3Jp
cHRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlw
ZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2lu
LCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIHBlcm1pc3Npb25SZXF1ZXN0LCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLUGFnZVNob3dDb2xvclBp
Y2tlckNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgaW5pdGlhbENvbG9yLCBX
S0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlU2hvd0NvbG9yUGlja2VyQ2FsbGJhY2spKFdL
UGFnZVJlZiBwYWdlLCBXS0NvbG9yQVJHQjMyIGluaXRpYWxDb2xvciwgV0tSZWN0IGVsZW1lbnRS
ZWN0LCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlSGlkZUNvbG9yUGlja2VyQ2FsbGJh
Y2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9p
ZCAoKldLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrKShXS1BhZ2VS
ZWYgcGFnZSwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiBwbHVnaW5VbmF2YWlsYWJpbGl0
eVJlYXNvbiwgV0tEaWN0aW9uYXJ5UmVmIHBsdWdpbkluZm9EaWN0aW9uYXJ5LCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbG9yX3BpY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcAppbmRleCA4YjkxMjhlZmFjNjZlMWQ1ZDQ2NGRlMmJl
M2NhODNjNzcwMjIyZGE1Li5kMjNiYWZjYjMyNmI3YWJmMDVjMjAxODc1NjNjMmEyZWZjYjBiZjM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3Jf
cGlja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29s
b3JfcGlja2VyLmNwcApAQCAtMzksOCArMzksNyBAQCBFd2tDb2xvclBpY2tlcjo6RXdrQ29sb3JQ
aWNrZXIoV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGNvbG9yUGlja2VyTGlzdGVuZQog
CiB2b2lkIEV3a0NvbG9yUGlja2VyOjpzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0g
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGNvbG9yU3RyaW5nKEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbG9yLnNlcmlhbGl6ZWQoKS51dGY4KCkuZGF0YSgpKSk7
Ci0gICAgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyU2V0Q29sb3IobV9jb2xvclBpY2tlckxp
c3RlbmVyLmdldCgpLCBjb2xvclN0cmluZy5nZXQoKSk7CisgICAgV0tDb2xvclBpY2tlclJlc3Vs
dExpc3RlbmVyU2V0Q29sb3IobV9jb2xvclBpY2tlckxpc3RlbmVyLmdldCgpLCBjb2xvci5yZ2Io
KSk7CiB9CiAKIGNvbnN0IENvbG9yJiBFd2tDb2xvclBpY2tlcjo6Y29sb3IoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
CmluZGV4IGJmNjE2MjQwYTAxZmJmMzg5ODAxNzEyNzhhOGI2NjdhY2M4YTZlODEuLmMwMmRhNmVk
ZTA4OGJmOGViNzJmZTQzYjFlYTZkNzE2NTU0ZWU3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTIzMCwxNCArMjMw
LDYgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHIKICAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQ
cm94eUd0azo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSk7CiB9CiAKLSNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKLVBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJD
b3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6
c2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQs
IGJvb2wgYW5pbWF0ZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggMzE3OGU1ZDJm
MmE2NGQzOTljZDcyYzM4ZGI4MjMyMDU2NzFhMzZlNS4uYTYzZGI4YmEzNmQxYzllMmFmYjM0ZGQ2
NzQzZGNmMThlNjVkZjY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC04Miw5ICs4Miw2IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYs
IGJvb2wgd2FzRXZlbnRIYW5kbGVkKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBN
ZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSopOwotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gY3JlYXRlQ29sb3JDaG9vc2VyUHJv
eHkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGludGlhbENvbG9yLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0jZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgc2V0RmluZElu
ZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQsIGJvb2wgYW5p
bWF0ZSk7CiAgICAgdmlydHVhbCB2b2lkIGZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHVwZGF0ZVJlY3RzKTsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
JiwgY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggNjRh
ZWY4YzkyYmQwYmUyMGFlZjljZWYyN2I5NzVkODE0OWRlNjEzZS4uYzY5ZTJjZjYwYTI4MmY5NjYy
ZWI3NjliZmVjMjYzZTkwNmM4YjA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC05OCwxMCArOTgsNiBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51
UHJveHkoV2ViUGFnZVByb3h5Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRN
ZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kik7CiAKLSNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JD
aG9vc2VyUHJveHk+IGNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsK
LSNlbmRpZgotCiAgICAgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGlj
YXRvcj4sIGJvb2wgZmFkZU91dCwgYm9vbCBhbmltYXRlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBl
bnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
bW0KaW5kZXggMmE2MjdhMDZiZDc1MzM4MjU5NmIzMGZkZTVmZDJkYjRhMDljZWJiZS4uOWFmYjc5
MThhMDcwNDQxOTdmY2IwMGY0ZWEyNmQ1NzQ0Y2VhMjI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTM3NSwxNCArMzc1
LDYgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHIKICAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQ
cm94eU1hYzo6Y3JlYXRlKG1fd2tWaWV3LCBwYWdlKTsKIH0KIAotI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVudElt
cGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiwgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0
RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+IGZpbmRJbmRpY2F0b3IsIGJv
b2wgZmFkZU91dCwgYm9vbCBhbmltYXRlKQogewogICAgIFttX3drVmlldyBfc2V0RmluZEluZGlj
YXRvcjpmaW5kSW5kaWNhdG9yIGZhZGVPdXQ6ZmFkZU91dCBhbmltYXRlOmFuaW1hdGVdOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKaW5k
ZXggNjZjYjgzYzNhZjMxZmVjNmZiNDA0ZTFmYzMxOGY0NDlkNjA0N2NiMS4uMDMzM2MyNTU0NTEy
YTdhZDVmN2M0ZDMzZGU1Y2I0N2M4NmYxYjIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC0yODIsNyArMjgyLDcgQEAgUVF1
aWNrV2ViVmlld1ByaXZhdGU6OlFRdWlja1dlYlZpZXdQcml2YXRlKFFRdWlja1dlYlZpZXcqIHZp
ZXdwb3J0KQogICAgICwgcHJveHlBdXRoZW50aWNhdGlvbkRpYWxvZygwKQogICAgICwgZmlsZVBp
Y2tlcigwKQogICAgICwgZGF0YWJhc2VRdW90YURpYWxvZygwKQotICAgICwgY29sb3JDaG9vc2Vy
KDApCisgICAgLCBjb2xvclBpY2tlcigwKQogICAgICwgbV9iZXR3ZWVuTG9hZENvbW1pdEFuZEZp
cnN0RnJhbWUoZmFsc2UpCiAgICAgLCBtX3VzZURlZmF1bHRDb250ZW50SXRlbVNpemUodHJ1ZSkK
ICAgICAsIG1fbmF2aWdhdG9yUXRPYmplY3RFbmFibGVkKGZhbHNlKQpAQCAtMTI2NywyMCArMTI2
NywyMCBAQCB2b2lkIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnNldERhdGFiYXNlUXVvdGFE
aWFsb2coUVFtbENvbXBvbmVudCogZGF0YWJhc2VRdQogICAgIGVtaXQgZGF0YWJhc2VRdW90YURp
YWxvZ0NoYW5nZWQoKTsKIH0KIAotUVFtbENvbXBvbmVudCogUVF1aWNrV2ViVmlld0V4cGVyaW1l
bnRhbDo6Y29sb3JDaG9vc2VyKCkgY29uc3QKK1FRbWxDb21wb25lbnQqIFFRdWlja1dlYlZpZXdF
eHBlcmltZW50YWw6OmNvbG9yUGlja2VyKCkgY29uc3QKIHsKICAgICBRX0QoY29uc3QgUVF1aWNr
V2ViVmlldyk7Ci0gICAgcmV0dXJuIGQtPmNvbG9yQ2hvb3NlcjsKKyAgICByZXR1cm4gZC0+Y29s
b3JQaWNrZXI7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2V0Q29sb3JD
aG9vc2VyKFFRbWxDb21wb25lbnQqIGNvbG9yQ2hvb3NlcikKK3ZvaWQgUVF1aWNrV2ViVmlld0V4
cGVyaW1lbnRhbDo6c2V0Q29sb3JQaWNrZXIoUVFtbENvbXBvbmVudCogY29sb3JQaWNrZXIpCiB7
CiAgICAgUV9EKFFRdWlja1dlYlZpZXcpOwotICAgIGlmIChkLT5jb2xvckNob29zZXIgPT0gY29s
b3JDaG9vc2VyKQorICAgIGlmIChkLT5jb2xvclBpY2tlciA9PSBjb2xvclBpY2tlcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgZC0+Y29sb3JDaG9vc2VyID0gY29sb3JDaG9vc2VyOwotICAgIGVt
aXQgY29sb3JDaG9vc2VyQ2hhbmdlZCgpOworICAgIGQtPmNvbG9yUGlja2VyID0gY29sb3JQaWNr
ZXI7CisgICAgZW1pdCBjb2xvclBpY2tlckNoYW5nZWQoKTsKIH0KIAogUVN0cmluZyBRUXVpY2tX
ZWJWaWV3RXhwZXJpbWVudGFsOjp1c2VyQWdlbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKaW5kZXggZjFhZDk2NGVkYjVk
YWI0ZjMyYzBjNTkzMTBjYmRhNzk4ZGQzNjRjNS4uNTE0OTM2OGRkNTVmYjc1YjVhZmZlNzc5YjEx
OTU4NWE2NjQ1MDgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXdfcC5oCkBAIC0yNzQsNyArMjc0LDcgQEAgY2xhc3MgUVdFQktJVF9FWFBP
UlQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCA6IHB1YmxpYyBRT2JqZWN0IHsKICAgICBRX1BS
T1BFUlRZKFFRbWxDb21wb25lbnQqIGl0ZW1TZWxlY3RvciBSRUFEIGl0ZW1TZWxlY3RvciBXUklU
RSBzZXRJdGVtU2VsZWN0b3IgTk9USUZZIGl0ZW1TZWxlY3RvckNoYW5nZWQpCiAgICAgUV9QUk9Q
RVJUWShRUW1sQ29tcG9uZW50KiBmaWxlUGlja2VyIFJFQUQgZmlsZVBpY2tlciBXUklURSBzZXRG
aWxlUGlja2VyIE5PVElGWSBmaWxlUGlja2VyQ2hhbmdlZCkKICAgICBRX1BST1BFUlRZKFFRbWxD
b21wb25lbnQqIGRhdGFiYXNlUXVvdGFEaWFsb2cgUkVBRCBkYXRhYmFzZVF1b3RhRGlhbG9nIFdS
SVRFIHNldERhdGFiYXNlUXVvdGFEaWFsb2cgTk9USUZZIGRhdGFiYXNlUXVvdGFEaWFsb2dDaGFu
Z2VkKQotICAgIFFfUFJPUEVSVFkoUVFtbENvbXBvbmVudCogY29sb3JDaG9vc2VyIFJFQUQgY29s
b3JDaG9vc2VyIFdSSVRFIHNldENvbG9yQ2hvb3NlciBOT1RJRlkgY29sb3JDaG9vc2VyQ2hhbmdl
ZCkKKyAgICBRX1BST1BFUlRZKFFRbWxDb21wb25lbnQqIGNvbG9yUGlja2VyIFJFQUQgY29sb3JQ
aWNrZXIgV1JJVEUgc2V0Q29sb3JQaWNrZXIgTk9USUZZIGNvbG9yUGlja2VyQ2hhbmdlZCkKIAog
ICAgIFFfUFJPUEVSVFkoUVdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcyBSRUFEIHByZWZlcmVu
Y2VzIENPTlNUQU5UIEZJTkFMKQogICAgIFFfUFJPUEVSVFkoUVdlYktpdFRlc3QqIHRlc3QgUkVB
RCB0ZXN0IENPTlNUQU5UIEZJTkFMKQpAQCAtMzE4LDggKzMxOCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEZpbGVQaWNrZXIoUVFtbENvbXBvbmVudCopOwogICAgIFFRbWxDb21wb25lbnQqIGRh
dGFiYXNlUXVvdGFEaWFsb2coKSBjb25zdDsKICAgICB2b2lkIHNldERhdGFiYXNlUXVvdGFEaWFs
b2coUVFtbENvbXBvbmVudCopOwotICAgIFFRbWxDb21wb25lbnQqIGNvbG9yQ2hvb3NlcigpIGNv
bnN0OwotICAgIHZvaWQgc2V0Q29sb3JDaG9vc2VyKFFRbWxDb21wb25lbnQqKTsKKyAgICBRUW1s
Q29tcG9uZW50KiBjb2xvclBpY2tlcigpIGNvbnN0OworICAgIHZvaWQgc2V0Q29sb3JQaWNrZXIo
UVFtbENvbXBvbmVudCopOwogICAgIFFTdHJpbmcgdXNlckFnZW50KCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRVc2VyQWdlbnQoY29uc3QgUVN0cmluZyYgdXNlckFnZW50KTsKICAgICBpbnQgZGV2aWNl
V2lkdGgoKSBjb25zdDsKQEAgLTM3Niw3ICszNzYsNyBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBp
dGVtU2VsZWN0b3JDaGFuZ2VkKCk7CiAgICAgdm9pZCBmaWxlUGlja2VyQ2hhbmdlZCgpOwogICAg
IHZvaWQgZGF0YWJhc2VRdW90YURpYWxvZ0NoYW5nZWQoKTsKLSAgICB2b2lkIGNvbG9yQ2hvb3Nl
ckNoYW5nZWQoKTsKKyAgICB2b2lkIGNvbG9yUGlja2VyQ2hhbmdlZCgpOwogICAgIHZvaWQgZG93
bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtKTsKICAgICB2b2lk
IHBlcm1pc3Npb25SZXF1ZXN0ZWQoUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiBwZXJtaXNzaW9uKTsK
ICAgICB2b2lkIG1lc3NhZ2VSZWNlaXZlZChjb25zdCBRVmFyaWFudE1hcCYgbWVzc2FnZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9w
LmgKaW5kZXggOGFkNTNlMzI2YjM2OGViZmYxODY0ZGQyNGZhZjBkMTY3ODBiNjVhNS4uY2I2YTQy
ZGUwYWViYWY3ODQzODAwZjRhODllNDQyNTUwOTEyYThjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaApAQCAtMTkzLDcgKzE5
Myw3IEBAIHByb3RlY3RlZDoKICAgICBRUW1sQ29tcG9uZW50KiBwcm94eUF1dGhlbnRpY2F0aW9u
RGlhbG9nOwogICAgIFFRbWxDb21wb25lbnQqIGZpbGVQaWNrZXI7CiAgICAgUVFtbENvbXBvbmVu
dCogZGF0YWJhc2VRdW90YURpYWxvZzsKLSAgICBRUW1sQ29tcG9uZW50KiBjb2xvckNob29zZXI7
CisgICAgUVFtbENvbXBvbmVudCogY29sb3JQaWNrZXI7CiAKICAgICBRTGlzdDxRVXJsPiB1c2Vy
U2NyaXB0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViY29sb3JwaWNrZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vi
Y29sb3JwaWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkMzQxZjYwNjM0MjU2OWI4MDA0NjQ3MmMxZDhi
YTk3OTI0ZGE5OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJjb2xvcnBpY2tlci5jcHAKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgRGlnaWEgUGxjIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJxd2ViY29s
b3JwaWNrZXJfcC5oIgorCisjaW5jbHVkZSAiV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmgi
CisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1
ZGUgInFxdWlja3dlYnZpZXdfcC5oIgorI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcF9wLmgiCisj
aW5jbHVkZSA8UXRHdWkvUUNvbG9yPgorI2luY2x1ZGUgPFF0UW1sL1FRbWxDb250ZXh0PgorI2lu
Y2x1ZGUgPFF0UW1sL1FRbWxFbmdpbmU+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29sb3JQaWNrZXJDb250ZXh0T2JqZWN0IDogcHVi
bGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShRQ29sb3IgY3VycmVu
dENvbG9yIFJFQUQgY3VycmVudENvbG9yIENPTlNUQU5UIEZJTkFMKQorICAgIFFfUFJPUEVSVFko
UVJlY3RGIGVsZW1lbnRSZWN0IFJFQUQgZWxlbWVudFJlY3QgQ09OU1RBTlQgRklOQUwpCisKK3B1
YmxpYzoKKyAgICBDb2xvclBpY2tlckNvbnRleHRPYmplY3QoY29uc3QgUUNvbG9yJiBjb2xvciwg
Y29uc3QgUVJlY3RGJiByZWN0KQorICAgICAgICA6IG1fY3VycmVudENvbG9yKGNvbG9yKQorICAg
ICAgICAsIG1fcmVjdChyZWN0KQorICAgIHsKKyAgICB9CisKKyAgICBRQ29sb3IgY3VycmVudENv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q29sb3I7IH0KKyAgICBRUmVjdEYgZWxlbWVu
dFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKworICAgIFFfSU5WT0tBQkxFIHZvaWQg
YWNjZXB0KGNvbnN0IFFDb2xvciYgY29sb3IpIHsgZW1pdCBhY2NlcHRlZChjb2xvcik7IH0KKyAg
ICBRX0lOVk9LQUJMRSB2b2lkIHJlamVjdCgpIHsgZW1pdCByZWplY3RlZCgpOyB9CisKK1FfU0lH
TkFMUzoKKyAgICB2b2lkIGFjY2VwdGVkKGNvbnN0IFFDb2xvciYpOworICAgIHZvaWQgcmVqZWN0
ZWQoKTsKKworcHJpdmF0ZToKKyAgICBRQ29sb3IgbV9jdXJyZW50Q29sb3I7CisgICAgUVJlY3RG
IG1fcmVjdDsKK307CisKK1FXZWJDb2xvclBpY2tlcjo6UVdlYkNvbG9yUGlja2VyKFdLQ29sb3JQ
aWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgUVF1aWNrV2ViVmlldyogd2ViVmlldywg
Y29uc3QgUUNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFFSZWN0JiBlbGVtZW50UmVjdCkKKyAg
ICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorICAgICwgbV9saXN0ZW5lcihsaXN0ZW5lcikKKyAgICAs
IG1fc2VsZWN0ZWRDb2xvcihpbml0aWFsQ29sb3IpCit7CisgICAgUVJlY3RGIG1hcHBlZFJlY3Q7
CisgICAgaWYgKCFlbGVtZW50UmVjdC5pc051bGwoKSkKKyAgICAgICAgbWFwcGVkUmVjdCA9IG1f
d2ViVmlldy0+bWFwUmVjdEZyb21XZWJDb250ZW50KFFSZWN0KGVsZW1lbnRSZWN0KSk7CisgICAg
aWYgKCFtX3dlYlZpZXctPmV4cGVyaW1lbnRhbCgpLT5jb2xvclBpY2tlcigpKQorICAgICAgICBy
ZXR1cm47CisgICAgQ29sb3JQaWNrZXJDb250ZXh0T2JqZWN0KiBjb250ZXh0T2JqZWN0ID0gbmV3
IENvbG9yUGlja2VyQ29udGV4dE9iamVjdChpbml0aWFsQ29sb3IsIG1hcHBlZFJlY3QpOworICAg
IGNyZWF0ZUl0ZW0oY29udGV4dE9iamVjdCk7Cit9CisKK3ZvaWQgUVdlYkNvbG9yUGlja2VyOjpj
cmVhdGVJdGVtKFFPYmplY3QqIGNvbnRleHRPYmplY3QpCit7CisgICAgUVFtbENvbXBvbmVudCog
Y29tcG9uZW50ID0gbV93ZWJWaWV3LT5leHBlcmltZW50YWwoKS0+Y29sb3JQaWNrZXIoKTsKKyAg
ICBRX0FTU0VSVChjb21wb25lbnQpOworCisgICAgY3JlYXRlQ29udGV4dChjb21wb25lbnQsIGNv
bnRleHRPYmplY3QpOworICAgIFFPYmplY3QqIG9iamVjdCA9IGNvbXBvbmVudC0+YmVnaW5DcmVh
dGUobV9jb250ZXh0LmRhdGEoKSk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgbV9jb250
ZXh0LnJlc2V0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbG9yUGlja2Vy
LnJlc2V0KHFvYmplY3RfY2FzdDxRUXVpY2tJdGVtKj4ob2JqZWN0KSk7CisgICAgaWYgKCFtX2Nv
bG9yUGlja2VyKSB7CisgICAgICAgIG1fY29udGV4dC5yZXNldCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gVGhlc2UgbmVlZCB0byBiZSBlbnF1ZXVlZCBiZWNhdXNlIHRoZXkg
bWlnaHQgcmVzdWx0IGluIGltbWVkaWF0ZSBkZWxldGlvbiBhbmQgbGVhZCB0byBoZWFwIGNvcnJ1
cHRpb24KKyAgICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJR05BTChhY2NlcHRlZChRQ29sb3Ip
KSwgU0xPVChub3RpZnlDb2xvclNlbGVjdGVkKFFDb2xvcikpLCBRdDo6UXVldWVkQ29ubmVjdGlv
bik7CisgICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwocmVqZWN0ZWQoKSksIFNMT1Qo
ZW5kUGlja2VyKCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisKKyAgICBRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6Z2V0KG1fd2ViVmlldyktPmFkZEF0dGFjaGVkUHJvcGVydHlUbyhtX2NvbG9yUGlj
a2VyLmRhdGEoKSk7CisgICAgbV9jb2xvclBpY2tlci0+c2V0UGFyZW50SXRlbShtX3dlYlZpZXcp
OworCisgICAgY29tcG9uZW50LT5jb21wbGV0ZUNyZWF0ZSgpOworfQorCit2b2lkIFFXZWJDb2xv
clBpY2tlcjo6Y3JlYXRlQ29udGV4dChRUW1sQ29tcG9uZW50KiBjb21wb25lbnQsIFFPYmplY3Qq
IGNvbnRleHRPYmplY3QpCit7CisgICAgUVFtbENvbnRleHQqIGJhc2VDb250ZXh0ID0gY29tcG9u
ZW50LT5jcmVhdGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWJhc2VDb250ZXh0KQorICAgICAgICBi
YXNlQ29udGV4dCA9IFFRbWxFbmdpbmU6OmNvbnRleHRGb3JPYmplY3QobV93ZWJWaWV3KTsKKyAg
ICBtX2NvbnRleHQucmVzZXQobmV3IFFRbWxDb250ZXh0KGJhc2VDb250ZXh0KSk7CisKKyAgICBj
b250ZXh0T2JqZWN0LT5zZXRQYXJlbnQobV9jb250ZXh0LmRhdGEoKSk7CisgICAgbV9jb250ZXh0
LT5zZXRDb250ZXh0UHJvcGVydHkoUUxhdGluMVN0cmluZygibW9kZWwiKSwgY29udGV4dE9iamVj
dCk7CisgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0T2JqZWN0KGNvbnRleHRPYmplY3QpOworfQor
Cit2b2lkIFFXZWJDb2xvclBpY2tlcjo6bm90aWZ5Q29sb3JTZWxlY3RlZChjb25zdCBRQ29sb3Im
IGNvbG9yKQoreworICAgIGlmICghbV9saXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOworICAgIGlm
IChjb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIG1fc2VsZWN0ZWRDb2xvciA9IGNvbG9yOworCisg
ICAgZW5kUGlja2VyKCk7Cit9CisKK3ZvaWQgUVdlYkNvbG9yUGlja2VyOjplbmRQaWNrZXIoKQor
eworICAgIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclNldENvbG9yKG1fbGlzdGVuZXIsIG1f
c2VsZWN0ZWRDb2xvci5yZ2JhKCkpOworICAgIG1fY29sb3JQaWNrZXIucmVzZXQoKTsKKyAgICBt
X2NvbnRleHQucmVzZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNpbmNsdWRl
ICJxd2ViY29sb3JwaWNrZXIubW9jIgorI2luY2x1ZGUgIm1vY19xd2ViY29sb3JwaWNrZXJfcC5j
cHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJjb2xv
cnBpY2tlcl9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJjb2xvcnBp
Y2tlcl9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU0OTdhOWEzZGE2ZmYzOTliMTBlZDZiNjFmZDQxNzJjMTY4
NjlmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXdlYmNvbG9ycGlja2VyX3AuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzIERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisj
aWZuZGVmIHF3ZWJjb2xvcnBpY2tlcl9wX2gKKyNkZWZpbmUgcXdlYmNvbG9ycGlja2VyX3BfaAor
CisjaW5jbHVkZSAiV0tCYXNlLmgiCisjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CisjaW5jbHVk
ZSA8UXRDb3JlL1FSZWN0PgorI2luY2x1ZGUgPFF0Q29yZS9RU2NvcGVkUG9pbnRlcj4KKyNpbmNs
dWRlIDxRdEd1aS9RQ29sb3I+CisjaW5jbHVkZSA8UXRRbWwvUVFtbENvbnRleHQ+CisjaW5jbHVk
ZSA8UXRRdWljay9RUXVpY2tJdGVtPgorCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFRbWxD
b21wb25lbnQ7CitRVF9FTkRfTkFNRVNQQUNFCisKK2NsYXNzIFFRdWlja1dlYlZpZXc7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBRV2ViQ29sb3JQaWNrZXIgOiBwdWJsaWMgUU9iamVj
dCB7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIFFXZWJDb2xvclBpY2tlcihXS0NvbG9y
UGlja2VyUmVzdWx0TGlzdGVuZXJSZWYsIFFRdWlja1dlYlZpZXcqLCBjb25zdCBRQ29sb3ImLCBj
b25zdCBRUmVjdCYpOworCitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lkIGVuZFBpY2tlcigpOwor
Citwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBub3RpZnlDb2xvclNlbGVjdGVkKGNvbnN0IFFD
b2xvciYpOworCitwcml2YXRlOgorCisgICAgdm9pZCBjcmVhdGVJdGVtKFFPYmplY3QqKTsKKyAg
ICB2b2lkIGNyZWF0ZUNvbnRleHQoUVFtbENvbXBvbmVudCosIFFPYmplY3QqKTsKKworICAgIFFT
Y29wZWRQb2ludGVyPFFRbWxDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgUVNjb3BlZFBvaW50ZXI8
UVF1aWNrSXRlbT4gbV9jb2xvclBpY2tlcjsKKworICAgIFFRdWlja1dlYlZpZXcqIG1fd2ViVmll
dzsKKyAgICBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbV9saXN0ZW5lcjsKKyAgICBR
Q29sb3IgbV9zZWxlY3RlZENvbG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBxd2ViY29sb3JwaWNrZXJfcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAKaW5kZXggNGFhMzUzMzc3ZjE0MjdjNTE2
ZTk1ZTliYjdiYWJiNjY4NDVhOTJkNy4uNzVlZTZhZWNkYzYwZmMzODU3OGUxNzgxMTBjYzg1MTJk
MDRiODA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcv
cXJhd3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3
L3FyYXd3ZWJ2aWV3LmNwcApAQCAtMTk0LDE0ICsxOTQsNiBAQCBQYXNzUmVmUHRyPFdlYktpdDo6
V2ViQ29udGV4dE1lbnVQcm94eT4gUVJhd1dlYlZpZXdQcml2YXRlOjpjcmVhdGVDb250ZXh0TWVu
dVBybwogICAgIHJldHVybiBQYXNzUmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eT4o
KTsKIH0KIAotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJLaXQ6
OldlYkNvbG9yQ2hvb3NlclByb3h5PiBRUmF3V2ViVmlld1ByaXZhdGU6OmNyZWF0ZUNvbG9yQ2hv
b3NlclByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGlu
dGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiBQYXNzUmVmUHRyPFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHk+
KCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OnBhZ2VEaWRSZXF1ZXN0
U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3MpCiB7CiAgICAgbV9jbGllbnQtPnZp
ZXdSZXF1ZXN0ZWRTY3JvbGwocG9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmgKaW5kZXggMDI5OTU2ZTc3ZjI2MDBlMjIx
MTZkY2Q3MDE2NjY2OTYwNzg4YTkwMy4uNDQ2YWQ3NzE4YjNmZjZmNzAwNWYxZmQ2MDEyNTYyNGRk
YWM2YTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcv
cXJhd3dlYnZpZXdfcF9wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9y
YXcvcXJhd3dlYnZpZXdfcF9wLmgKQEAgLTkwLDEwICs5MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51
UHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94eSk7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQ
cm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5KTsKIAotI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbG9y
Q2hvb3NlclByb3h5PiBjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94
eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpOwotI2VuZGlmCi0KICAgICBRUmF3V2ViVmlld1ByaXZhdGUoV2ViS2l0OjpXZWJDb250
ZXh0KiwgV2ViS2l0OjpXZWJQYWdlR3JvdXAqLCBRUmF3V2ViVmlld0NsaWVudCopOwogICAgIH5R
UmF3V2ViVmlld1ByaXZhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
aW5kZXggZDA4Y2M5MWY2NDRkOWE5ZjhiYjg3M2ViNGZlODMxYjk5ODNmOGM2Mi4uOGZkZTc4YzFk
NTVhYmIyMmY2MGVjNDc2YzYyZTUxYTg0NzY5YzRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC0xODMsNyArMTgzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBh
Z2VQcm94eSopID0gMDsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gY3JlYXRlQ29sb3JDaG9vc2VyUHJv
eHkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29s
b3JDaG9vc2VyUHJveHk+IGNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSB7IHJldHVybiAwOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNh
dG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCwgYm9vbCBhbmltYXRl
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNr
ZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwCmluZGV4IDBlZTc5ZGQ3MWEzNmQyNTM5
ZmZhZDQ0N2ZlOWE2MzBiYTkyNjY2NjIuLjhiM2E1YzA3MTkwZWQyNjUwYzhmMzYxMTkyY2I4YWUz
YmQzZTQyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwCkBAIC0zMCw2ICszMCw4IEBA
CiAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJv
eHk6OldlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eShXZWJQYWdlUHJveHkqIHBhZ2Up
CkBAIC00NiwxMiArNDgsMTIgQEAgdm9pZCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJv
eHk6OmludmFsaWRhdGUoKQogICAgIG1fcGFnZSA9IDA7CiB9CiAKLXZvaWQgV2ViQ29sb3JQaWNr
ZXJSZXN1bHRMaXN0ZW5lclByb3h5OjpzZXRDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yKQordm9p
ZCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk6OnNldENvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
YWdlLT5zZXRDb2xvckNob29zZXJDb2xvcihXZWJDb3JlOjpDb2xvcihjb2xvcikpOworICAgIG1f
cGFnZS0+c2V0Q29sb3JDaG9vc2VyQ29sb3IoY29sb3IpOwogICAgIG1fcGFnZS0+ZW5kQ29sb3JD
aG9vc2VyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaAppbmRleCBkMjhlYjhhYTk1YzJk
OGRiMDZkMjFiYjc0NjAxZGE5ZGNlZTFhNDdkLi41MGNjZTJjYTMwYTRjNTNkMmQ5NjQ4MGIxYzQ1
YjI1Nzc5MWExNDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oCkBAIC0yOSw5ICsyOSw5IEBA
CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkoKTsKIAogICAgIHZvaWQg
aW52YWxpZGF0ZSgpOwotICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgU3RyaW5nJik7CisgICAgdm9p
ZCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eShXZWJQYWdlUHJveHkqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjgwMWQ1NWE4YTcz
MTljNjc5YzJiMjVlMGNkNzA4MzExYzU4OWI1NS4uM2E1MzZhMDlhNzE5MWVjYThjNjlhODNjNjNh
MzU1MWQ0MjIxZTc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTI4NjIsNyArMjg2Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Q29sb3JDaG9v
c2VyKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IEluCiAgICAgbV9j
b2xvclBpY2tlclJlc3VsdExpc3RlbmVyID0gV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclBy
b3h5OjpjcmVhdGUodGhpcyk7CiAgICAgbV9jb2xvckNob29zZXIgPSBXZWJDb2xvckNob29zZXJQ
cm94eTo6Y3JlYXRlKHRoaXMpOwogCi0gICAgaWYgKG1fdWlDbGllbnQuc2hvd0NvbG9yUGlja2Vy
KHRoaXMsIGluaXRpYWxDb2xvci5zZXJpYWxpemVkKCksIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lci5nZXQoKSkpCisgICAgaWYgKG1fdWlDbGllbnQuc2hvd0NvbG9yUGlja2VyKHRoaXMsIGlu
aXRpYWxDb2xvciwgZWxlbWVudFJlY3QsIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5nZXQo
KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29sb3JDaG9vc2VyID0gbV9wYWdlQ2xpZW50
LT5jcmVhdGVDb2xvckNob29zZXJQcm94eSh0aGlzLCBpbml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCmluZGV4IGEzZGNjNGNl
NDlhMzQ5ZmRkMTNmN2U2YWUxNzQzMzliODQzOTA1YmQuLmM3YWZiNmFkYWY1NTM1M2Y2OTAyYmU5
NjNkNDdkNzNkMTgwMmRmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIldlYk51bWJlci5oIgogI2luY2x1ZGUg
IldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9h
dFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1dpbmRvd0ZlYXR1cmVzLmg+CkBAIC00MjEsMTIgKzQyMiwxMiBAQCBib29sIFdlYlVJQ2xpZW50
OjpzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KFdlYlBhZ2VQcm94eSogcGFnZSkKIH0KIAogI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotYm9vbCBXZWJVSUNsaWVudDo6c2hvd0NvbG9yUGlj
a2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBpbml0aWFsQ29sb3IsIFdlYkNv
bG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCitib29sIFdlYlVJQ2xpZW50
OjpzaG93Q29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBDb2xvciYgaW5pdGlh
bENvbG9yLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCAsIFdlYkNvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5zaG93Q29sb3JQ
aWNrZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fY2xpZW50LnNob3dDb2xvclBp
Y2tlcih0b0FQSShwYWdlKSwgdG9BUEkoaW5pdGlhbENvbG9yLmltcGwoKSksIHRvQVBJKGxpc3Rl
bmVyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuc2hvd0NvbG9yUGlja2Vy
KHRvQVBJKHBhZ2UpLCBpbml0aWFsQ29sb3IucmdiKCksIHRvQVBJKGVsZW1lbnRSZWN0KSwgdG9B
UEkobGlzdGVuZXIpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaAppbmRleCA0N2ExZmE2ODVjMmM1
ODM0MjFkZTA4NWQxMWFlNzIzMWFkY2YxZDIxLi4xMDk3NjZmNzMxNjAzMTc4YTg3MGYxN2RkMGJm
NTc5MGU0NjE4YzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaApAQCAt
MzUsMTAgKzM1LDExIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotICAgIGNsYXNzIEZsb2F0UmVjdDsKLSAgICBjbGFzcyBJbnRTaXplOwotICAg
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLSAgICBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CitjbGFz
cyBDb2xvcjsKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIEludFNpemU7CitjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CitzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtMTE4LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEludGVycnVwdEph
dmFTY3JpcHQoV2ViUGFnZVByb3h5Kik7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
LSAgICBib29sIHNob3dDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBX
ZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkqKTsKKyAgICBib29sIHNob3dDb2xvclBp
Y2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkqKTsKICAgICBib29s
IGhpZGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqKTsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcAppbmRleCA1NDg4ZWEx
MzY0NDVhNzA2YTZiOWU5ZjBlMWM4ZWRlMGMyNDk1NmZhLi43MTNkYzU5YzVjNTI2MWVlMTY4ZTRl
MjE3ODU0ZjI4NDU1NzVkNDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9QYWdlVUlDbGllbnRFZmwuY3BwCkBAIC0yMjcsMTAgKzIyNywxMCBAQCBXS1BhZ2VSZWYgUGFn
ZVVJQ2xpZW50RWZsOjpjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIHdr
UmVxdWVzdCwgVwogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi12b2lkIFBhZ2VV
SUNsaWVudEVmbDo6c2hvd0NvbG9yUGlja2VyKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgaW5pdGlh
bENvbG9yLCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit2b2lkIFBhZ2VVSUNsaWVudEVmbDo6c2hvd0NvbG9yUGlja2VyKFdL
UGFnZVJlZiwgV0tDb2xvckFSR0IzMiBpbml0aWFsQ29sb3IsIFdLUmVjdCwgV0tDb2xvclBpY2tl
clJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewog
ICAgIFBhZ2VVSUNsaWVudEVmbCogcGFnZVVJQ2xpZW50ID0gdG9QYWdlVUlDbGllbnRFZmwoY2xp
ZW50SW5mbyk7Ci0gICAgV2ViQ29yZTo6Q29sb3IgY29sb3IgPSBXZWJDb3JlOjpDb2xvcihXZWJL
aXQ6OnRvV1RGU3RyaW5nKGluaXRpYWxDb2xvcikpOworICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9y
ID0gV2ViQ29yZTo6Q29sb3IoaW5pdGlhbENvbG9yKTsKICAgICBwYWdlVUlDbGllbnQtPm1fdmll
dy0+cmVxdWVzdENvbG9yUGlja2VyKGxpc3RlbmVyLCBjb2xvcik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5oCmluZGV4IGRmNDdiOTcxNjdi
NDgwMWE1OWJiMWNjMzdjMmQyYTAxOTE3MTM0MzEuLjY2ODRkNGYwZmUyMjdjNjJkMjI2MGQ2MDcz
OTAzYjJhODU0YjdmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZVVJQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdl
VUlDbGllbnRFZmwuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IHJ1bk9wZW5QYW5lbChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLT3BlblBhbmVsUGFyYW1ldGVy
c1JlZiwgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0
YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiwg
V0tEaWN0aW9uYXJ5UmVmLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24sIGNv
bnN0IHZvaWQqKTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICBzdGF0aWMgdm9p
ZCBzaG93Q29sb3JQaWNrZXIoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBpbml0aWFsQ29sb3IsIFdL
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyB2
b2lkIHNob3dDb2xvclBpY2tlcihXS1BhZ2VSZWYsIFdLQ29sb3JBUkdCMzIsIFdLUmVjdCwgV0tD
b2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZv
aWQgaGlkZUNvbG9yUGlja2VyKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCopOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCmluZGV4IDJhM2FhOWM4MjM2ZTVm
ZTFhMTFhMzMzNDI2ODY1Yzc5YTUyMjVlZWUuLjI1ZmQ4ZjI1NDEwOGUyYmM3NDI3MzBjOTI3Mjlk
MThkZTg4NzczOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApA
QCAtNDAyLDE0ICs0MDIsNiBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFdlYlZp
ZXc6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYQogICAgIHJldHVybiBX
ZWJDb250ZXh0TWVudVByb3h5RWZsOjpjcmVhdGUobV9ld2tWaWV3LCBwYWdlKTsKIH0KIAotI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94
eT4gV2ViVmlldzo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiwgY29uc3Qg
V2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViVmlldzo6c2V0
RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29sLCBib29sKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5o
CmluZGV4IDQyYzhkMTNkMGYxZDUwZDQ5MzE2NzFlOTBlNGRkNzkzNTVlMmVlZGUuLjY0N2EyNWM2
M2FlMjc5Zjg0MzFmYTFhNWY0MzZmM2Y2NTRhYWM2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlldy5oCkBAIC0xNTEsOSArMTUxLDYgQEAgcHJpdmF0ZToKIAogICAgIFBhc3NS
ZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94
eSopIE9WRVJSSURFOwogICAgIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRl
Q29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBPVkVSUklERTsKLSNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKLSAgICBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBjcmVh
dGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYg
aW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7Ci0jZW5kaWYK
IAogICAgIHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBi
b29sLCBib29sKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0UGFnZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQ
YWdlQ2xpZW50LmNwcAppbmRleCA4OWE0MGM5MjMxYTE4MWI3MDE5YzFlMmZhMTJiNmI2OGIxMTZi
MjYxLi5mZDRhMTZkY2RiMTQxYzViZTI4ZjI0YzQyZTRhYjc5Zjg3MDdiMWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcApAQCAtMjYsOSArMjYsNiBA
QAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VFdmVu
dEhhbmRsZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKLSNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKLSNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eVF0LmgiCi0jZW5k
aWYKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5UXQuaCIKICNpbmNsdWRlICJXZWJFZGl0
Q29tbWFuZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlRdC5oIgpAQCAtMjIw
LDEzICsyMTcsNiBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFF0UGFnZUNsaWVu
dDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveAogICAgIHJldHVybiBXZWJDb250
ZXh0TWVudVByb3h5UXQ6OmNyZWF0ZSh3ZWJQYWdlUHJveHkpOwogfQogCi0jaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBRdFBhZ2VD
bGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBlbGVtZW50UmVjdCkKLXsKLSAgICByZXR1cm4gV2ViQ29sb3JDaG9vc2VyUHJveHlRdDo6
Y3JlYXRlKHdlYlBhZ2VQcm94eSwgbV93ZWJWaWV3LCBpbml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0
KTsKLX0KLSNlbmRpZgotCiB2b2lkIFF0UGFnZUNsaWVudDo6Zmxhc2hCYWNraW5nU3RvcmVVcGRh
dGVzKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaAppbmRleCBiYzNlM2YxMmMz
MGVjZjA3Zjc5ODVjZmJmN2IwNDIyYTdhMWY1NTIxLi4zNGU0Y2E4OTAwZmMyOGYzZTRmNTQxYTU3
MzRmNWMzYTA0YjgzZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRQYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNs
aWVudC5oCkBAIC04OSw5ICs4OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZG9uZVdp
dGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhh
bmRsZWQpIHsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3Jl
YXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5
Kik7Ci0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvbG9yQ2hvb3NlclByb3h5PiBjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJv
eHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jik7Ci0jZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBh
c3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCwgYm9vbCBhbmltYXRlKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShib29sIHVzZUN1c3Rv
bVJlcHJlc2VudGF0aW9uKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ0Rh
dGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNwcAppbmRleCAzOWUxZTNkMjEwOWY1
M2QwZGY4NGE5NmU1YTY3NWUwMTM2NTBjZTI1Li4xYWJkMTJjOWY0ZTJkYzk4MmU5MTgxMmRhMmMy
YzRkODUyOTU4ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlVUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VVSUNsaWVudC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29w
eXJpZ2h0IChDKSAyMDEzIERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ5LDYgKzUwLDEwIEBAIFF0V2ViUGFnZVVJQ2xpZW50OjpR
dFdlYlBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgUVF1aWNrV2ViVmlldyogd2ViVmll
dykKICAgICB1aUNsaWVudC5leGNlZWRlZERhdGFiYXNlUXVvdGEgPSBleGNlZWRlZERhdGFiYXNl
UXVvdGE7CiAgICAgdWlDbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdCA9IHBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CiAgICAgdWlD
bGllbnQuZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgPSBwb2xp
Y3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKKyNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKKyAgICB1aUNsaWVudC5zaG93Q29sb3JQaWNrZXIgPSBzaG93Q29sb3JQaWNrZXI7
CisgICAgdWlDbGllbnQuaGlkZUNvbG9yUGlja2VyID0gaGlkZUNvbG9yUGlja2VyOworI2VuZGlm
IC8vIElOUFVUX1RZUEVfQ09MT1IKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQocGFnZVJlZiwg
JnVpQ2xpZW50KTsKIH0KIApAQCAtMTcxLDUgKzE3NiwyMCBAQCB2b2lkIFF0V2ViUGFnZVVJQ2xp
ZW50Ojpwb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYgcGFn
ZSwgVwogICAgIHRvUXRXZWJQYWdlVUlDbGllbnQoY2xpZW50SW5mbyktPnBlcm1pc3Npb25SZXF1
ZXN0KHJlcSk7CiB9CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3ZvaWQgUXRXZWJQ
YWdlVUlDbGllbnQ6OnNob3dDb2xvclBpY2tlcihXS1BhZ2VSZWYsIFdLQ29sb3JBUkdCMzIgaW5p
dGlhbENvbG9yLCBXS1JlY3QgZWxlbWVudFJlY3QsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
clJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBRdFdlYlBhZ2VV
SUNsaWVudCogdWlDbGllbnQgPSB0b1F0V2ViUGFnZVVJQ2xpZW50KGNsaWVudEluZm8pOworICAg
IHVpQ2xpZW50LT5tX2NvbG9yUGlja2VyID0gYWRvcHRQdHIobmV3IFFXZWJDb2xvclBpY2tlcihs
aXN0ZW5lciwgdWlDbGllbnQtPm1fd2ViVmlldywgUUNvbG9yKGluaXRpYWxDb2xvciksIHRvSW50
UmVjdChlbGVtZW50UmVjdCkpKTsKK30KKwordm9pZCBRdFdlYlBhZ2VVSUNsaWVudDo6aGlkZUNv
bG9yUGlja2VyKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBRdFdl
YlBhZ2VVSUNsaWVudCogdWlDbGllbnQgPSB0b1F0V2ViUGFnZVVJQ2xpZW50KGNsaWVudEluZm8p
OworICAgIHVpQ2xpZW50LT5tX2NvbG9yUGlja2VyLT5lbmRQaWNrZXIoKTsKKyAgICB1aUNsaWVu
dC0+bV9jb2xvclBpY2tlci5jbGVhcigpOworfQorI2VuZGlmIC8vIElOUFVUX1RZUEVfQ09MT1IK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVVJQ2xpZW50LmgKaW5kZXggZThhYWE4MjZiN2RkNjBhNjgxYmQ3NDhlZDMx
NmJmMjZlMGRkOTA2OC4uZTY1YzY2MzUyYWE2ZmNjYmE3NThmMWY2NDE2ODk1OWViNzg3OWUxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmgK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEzIERp
Z2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTIxLDEyICsyMiwxNSBAQAogI2lmbmRlZiBRdFdlYlBhZ2VVSUNsaWVudF9oCiAjZGVmaW5l
IFF0V2ViUGFnZVVJQ2xpZW50X2gKIAorI2luY2x1ZGUgInF3ZWJjb2xvcnBpY2tlcl9wLmgiCisK
ICNpbmNsdWRlIDxRdENvcmUvUVN0cmluZz4KICNpbmNsdWRlIDxRdENvcmUvUVVybD4KICNpbmNs
dWRlIDxXS0ZyYW1lLmg+CiAjaW5jbHVkZSA8V0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8V0tQYWdlLmg+CiAjaW5jbHVkZSA8V0tTZWN1cml0eU9yaWdpbi5oPgor
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogY2xhc3MgUVF1aWNrV2ViVmlldzsKIGNsYXNzIFFX
ZWJQZXJtaXNzaW9uUmVxdWVzdDsKQEAgLTUxLDYgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmIGxpbmtVUkwsIGNvbnN0IFFTdHJp
bmcmIGxpbmtUaXRsZSk7CiAgICAgdm9pZCBwZXJtaXNzaW9uUmVxdWVzdChRV2ViUGVybWlzc2lv
blJlcXVlc3QqKTsKIAorCiAgICAgLy8gV0tQYWdlVUlDbGllbnQgY2FsbGJhY2tzLgogICAgIHN0
YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIGFsZXJ0
VGV4dCwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIGJv
b2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBX
S0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAgLTYwLDggKzY1LDEzIEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBleGNlZWRlZERhdGFiYXNlUXVv
dGEoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1N0cmluZ1Jl
ZiBkYXRhYmFzZU5hbWUsIFdLU3RyaW5nUmVmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxv
bmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdlLCB1
bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBleHBlY3RlZFVzYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9p
ZCBwb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgcG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS05vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7CisjaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCisgICAgc3RhdGljIHZvaWQgc2hvd0NvbG9yUGlja2VyKFdLUGFnZVJl
ZiwgV0tDb2xvckFSR0IzMiBpbml0aWFsQ29sb3IsIFdLUmVjdCBlbGVtZW50UmVjdCwgV0tDb2xv
clBpY2tlclJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBz
dGF0aWMgdm9pZCBoaWRlQ29sb3JQaWNrZXIoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKKyNlbmRpZiAvLyBJTlBVVF9UWVBFX0NPTE9SCiAKICAgICBRUXVpY2tXZWJWaWV3KiBt
X3dlYlZpZXc7CisgICAgT3duUHRyPFFXZWJDb2xvclBpY2tlcj4gbV9jb2xvclBpY2tlcjsKICAg
ICBRVXJsIG1fbGFzdEhvdmVyZWRVUkw7CiAgICAgUVN0cmluZyBtX2xhc3RIb3ZlcmVkVGl0bGU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hv
b3NlclByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hv
b3NlclByb3h5UXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Yjc0N2I3N2Ix
MTU0NjZkZWU0OTAyMzUwOTljMmYwYzA2ZjBkN2EyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb2xv
ckNob29zZXJQcm94eVF0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkNv
bG9yQ2hvb3NlclByb3h5UXQuaCIKLQotI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgotI2lu
Y2x1ZGUgInFxdWlja3dlYnZpZXdfcF9wLmgiCi0jaW5jbHVkZSA8UXRRbWwvUVFtbENvbnRleHQ+
Ci0jaW5jbHVkZSA8UXRRbWwvUVFtbEVuZ2luZT4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBDb2xvckNob29zZXJDb250ZXh0T2JqZWN0
IDogcHVibGljIFFPYmplY3QgewotICAgIFFfT0JKRUNUCi0gICAgUV9QUk9QRVJUWShRQ29sb3Ig
Y3VycmVudENvbG9yIFJFQUQgY3VycmVudENvbG9yIENPTlNUQU5UIEZJTkFMKQotICAgIFFfUFJP
UEVSVFkoUVJlY3RGIGVsZW1lbnRSZWN0IFJFQUQgZWxlbWVudFJlY3QgQ09OU1RBTlQgRklOQUwp
Ci0KLXB1YmxpYzoKLSAgICBDb2xvckNob29zZXJDb250ZXh0T2JqZWN0KGNvbnN0IFFDb2xvciYg
Y29sb3IsIGNvbnN0IFFSZWN0RiYgcmVjdCkKLSAgICAgICAgOiBtX2N1cnJlbnRDb2xvcihjb2xv
cikKLSAgICAgICAgLCBtX3JlY3QocmVjdCkKLSAgICB7Ci0gICAgfQotCi0gICAgUUNvbG9yIGN1
cnJlbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudENvbG9yOyB9Ci0gICAgUVJlY3RG
IGVsZW1lbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9Ci0KLSAgICBRX0lOVk9LQUJM
RSB2b2lkIGFjY2VwdChjb25zdCBRQ29sb3ImIGNvbG9yKSB7IGVtaXQgYWNjZXB0ZWQoY29sb3Ip
OyB9Ci0gICAgUV9JTlZPS0FCTEUgdm9pZCByZWplY3QoKSB7IGVtaXQgcmVqZWN0ZWQoKTsgfQot
Ci1RX1NJR05BTFM6Ci0gICAgdm9pZCBhY2NlcHRlZChjb25zdCBRQ29sb3ImKTsKLSAgICB2b2lk
IHJlamVjdGVkKCk7Ci0KLXByaXZhdGU6Ci0gICAgUUNvbG9yIG1fY3VycmVudENvbG9yOwotICAg
IFFSZWN0RiBtX3JlY3Q7Ci19OwotCi1XZWJDb2xvckNob29zZXJQcm94eVF0OjpXZWJDb2xvckNo
b29zZXJQcm94eVF0KFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVudCwgUVF1aWNr
V2ViVmlldyogd2ViVmlldywgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgSW50UmVj
dCYgZWxlbWVudFJlY3QpCi0gICAgOiBXZWJDb2xvckNob29zZXJQcm94eShjbGllbnQpCi0gICAg
LCBtX3dlYlZpZXcod2ViVmlldykKLXsKLSAgICBjb25zdCBRUmVjdEYgbWFwcGVkUmVjdD0gbV93
ZWJWaWV3LT5tYXBSZWN0RnJvbVdlYkNvbnRlbnQoUVJlY3QoZWxlbWVudFJlY3QpKTsKLSAgICBD
b2xvckNob29zZXJDb250ZXh0T2JqZWN0KiBjb250ZXh0T2JqZWN0ID0gbmV3IENvbG9yQ2hvb3Nl
ckNvbnRleHRPYmplY3QoaW5pdGlhbENvbG9yLCBtYXBwZWRSZWN0KTsKLSAgICBjcmVhdGVJdGVt
KGNvbnRleHRPYmplY3QpOwotfQotCi1XZWJDb2xvckNob29zZXJQcm94eVF0Ojp+V2ViQ29sb3JD
aG9vc2VyUHJveHlRdCgpCi17Ci19Ci0KLXZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlRdDo6Y3Jl
YXRlSXRlbShRT2JqZWN0KiBjb250ZXh0T2JqZWN0KQotewotICAgIFFRbWxDb21wb25lbnQqIGNv
bXBvbmVudCA9IG1fd2ViVmlldy0+ZXhwZXJpbWVudGFsKCktPmNvbG9yQ2hvb3NlcigpOwotICAg
IGlmICghY29tcG9uZW50KSB7Ci0gICAgICAgIGRlbGV0ZSBjb250ZXh0T2JqZWN0OwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgY3JlYXRlQ29udGV4dChjb21wb25lbnQsIGNvbnRleHRP
YmplY3QpOwotICAgIFFPYmplY3QqIG9iamVjdCA9IGNvbXBvbmVudC0+YmVnaW5DcmVhdGUobV9j
b250ZXh0LmdldCgpKTsKLSAgICBpZiAoIW9iamVjdCkgewotICAgICAgICBtX2NvbnRleHQuY2xl
YXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fY29sb3JDaG9vc2VyID0gYWRv
cHRQdHIocW9iamVjdF9jYXN0PFFRdWlja0l0ZW0qPihvYmplY3QpKTsKLSAgICBpZiAoIW1fY29s
b3JDaG9vc2VyKSB7Ci0gICAgICAgIG1fY29udGV4dC5jbGVhcigpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgLy8gTmVlZHMgdG8gYmUgZW5xdWV1ZSBiZWNhdXNlIGl0IG1pZ2h0IHRy
aWdnZXIgZGVsZXRpb24uCi0gICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwoYWNjZXB0
ZWQoUUNvbG9yKSksIFNMT1Qobm90aWZ5Q29sb3JTZWxlY3RlZChRQ29sb3IpKSwgUXQ6OlF1ZXVl
ZENvbm5lY3Rpb24pOwotICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKHJlamVjdGVk
KCkpLCBTTE9UKGVuZENob29zZXIoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKLQotICAgIFFR
dWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+YWRkQXR0YWNoZWRQcm9wZXJ0eVRv
KG1fY29sb3JDaG9vc2VyLmdldCgpKTsKLSAgICBtX2NvbG9yQ2hvb3Nlci0+c2V0UGFyZW50SXRl
bShtX3dlYlZpZXcpOwotCi0gICAgY29tcG9uZW50LT5jb21wbGV0ZUNyZWF0ZSgpOwotfQotCi12
b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5UXQ6OmNyZWF0ZUNvbnRleHQoUVFtbENvbXBvbmVudCog
Y29tcG9uZW50LCBRT2JqZWN0KiBjb250ZXh0T2JqZWN0KQotewotICAgIFFRbWxDb250ZXh0KiBi
YXNlQ29udGV4dCA9IGNvbXBvbmVudC0+Y3JlYXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFiYXNl
Q29udGV4dCkKLSAgICAgICAgYmFzZUNvbnRleHQgPSBRUW1sRW5naW5lOjpjb250ZXh0Rm9yT2Jq
ZWN0KG1fd2ViVmlldyk7Ci0gICAgbV9jb250ZXh0ID0gYWRvcHRQdHIobmV3IFFRbWxDb250ZXh0
KGJhc2VDb250ZXh0KSk7Ci0KLSAgICBjb250ZXh0T2JqZWN0LT5zZXRQYXJlbnQobV9jb250ZXh0
LmdldCgpKTsKLSAgICBtX2NvbnRleHQtPnNldENvbnRleHRQcm9wZXJ0eShRTGF0aW4xU3RyaW5n
KCJtb2RlbCIpLCBjb250ZXh0T2JqZWN0KTsKLSAgICBtX2NvbnRleHQtPnNldENvbnRleHRPYmpl
Y3QoY29udGV4dE9iamVjdCk7Ci19Ci0KLXZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlRdDo6c2V0
U2VsZWN0ZWRDb2xvcihjb25zdCBDb2xvciYpCi17Ci0gICAgLy8gVGhpcyBpcyBzdXBwb3NlIHRv
IGJlIHVzZWQgdG8gcmVhY3QgdG8gRE9NIGNoYW5nZXMuIFdoZW4KLSAgICAvLyBhIHVzZXIgc2Ny
aXB0IGNoYW5nZXMgdGhlIGlucHV0IHZhbHVlLCB0aGUgbWV0aG9kIGdpdmVzIHRoZQotICAgIC8v
IG9wdGlvbiB0byB1cGRhdGUgdGhlIGNvbG9yIGNob29zZXIgVUkgaWYgd2Ugd2VyZSBzaG93aW5n
IHRoZQotICAgIC8vIGN1cnJlbnQgdmFsdWUuIFNpbmNlIHdlIGRvbid0LCBpdCBpcyBpcnJlbGV2
YW50IHJpZ2h0IG5vdy4KLSAgICAvLyBBbmQgeWVzLCB0aGUgbmFtZSBzb3VuZHMgbWlzbGVhZGlu
ZyBidXQgY29tZXMgZnJvbSBXZWJDb3JlLgotfQotCi12b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5
UXQ6Om5vdGlmeUNvbG9yU2VsZWN0ZWQoY29uc3QgUUNvbG9yJiBjb2xvcikKLXsKLSAgICBpZiAo
IW1fY2xpZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBBbHBoYSBpcyBhbHdheXMgaWdu
b3JlZCBieSB0aGUgY29sb3IgaW5wdXQKLSAgICBDb2xvciBjb3JlQ29sb3IgPSBtYWtlUkdCKGNv
bG9yLnJlZCgpLCBjb2xvci5ncmVlbigpLCBjb2xvci5ibHVlKCkpOwotICAgIG1fY2xpZW50LT5k
aWRDaG9vc2VDb2xvcihjb3JlQ29sb3IpOwotCi0gICAgZW5kQ2hvb3NlcigpOwotfQotCi12b2lk
IFdlYkNvbG9yQ2hvb3NlclByb3h5UXQ6OmVuZENob29zZXIoKQotewotICAgIG1fY29sb3JDaG9v
c2VyLmNsZWFyKCk7Ci0gICAgbV9jb250ZXh0LmNsZWFyKCk7Ci0KLSAgICBpZiAoIW1fY2xpZW50
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NsaWVudC0+ZGlkRW5kQ29sb3JDaG9vc2VyKCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2Vy
UHJveHlRdC5tb2MiCi0jaW5jbHVkZSAibW9jX1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuY3BwIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclBy
b3h5UXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb2xvckNob29zZXJQcm94
eVF0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3YzM3ZmM4NDIxMTUzMDQ3NTUz
NzU2Mzc0YTI2ZDAxM2FhMjY0YTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclBy
b3h5UXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZu
ZGVmIFdlYkNvbG9yQ2hvb3NlclByb3h5UXRfaAotI2RlZmluZSBXZWJDb2xvckNob29zZXJQcm94
eVF0X2gKLQotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQ
cm94eS5oIgotI2luY2x1ZGUgPFF0Q29yZS9RT2JqZWN0PgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KLQotUVRfQkVHSU5fTkFNRVNQQUNFCi1jbGFzcyBRUW1sQ29tcG9uZW50OwotY2xhc3MgUVFt
bENvbnRleHQ7Ci1jbGFzcyBRUXVpY2tJdGVtOwotUVRfRU5EX05BTUVTUEFDRQotCi1jbGFzcyBR
UXVpY2tXZWJWaWV3OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb2xvcjsKLX0KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkNvbG9yQ2hvb3NlclByb3h5UXQgOiBwdWJs
aWMgUU9iamVjdCwgcHVibGljIFdlYkNvbG9yQ2hvb3NlclByb3h5IHsKLSAgICBRX09CSkVDVAot
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IGNy
ZWF0ZShXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQsIFFRdWlja1dlYlZpZXcq
IHdlYlZpZXcsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJDb2xvckNob29zZXJQcm94eVF0KGNsaWVudCwgd2ViVmlldywgaW5pdGlhbENvbG9y
LCBlbGVtZW50UmVjdCkpOwotICAgIH0KLSAgICB+V2ViQ29sb3JDaG9vc2VyUHJveHlRdCgpOwot
Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
KTsKLQotcHVibGljIFFfU0xPVFM6Ci0gICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKTsKLQot
cHJpdmF0ZSBRX1NMT1RTOgotICAgIHZvaWQgbm90aWZ5Q29sb3JTZWxlY3RlZChjb25zdCBRQ29s
b3ImKTsKLQotcHJpdmF0ZToKLSAgICBXZWJDb2xvckNob29zZXJQcm94eVF0KFdlYkNvbG9yQ2hv
b3NlclByb3h5OjpDbGllbnQqLCBRUXVpY2tXZWJWaWV3KiwgY29uc3QgV2ViQ29yZTo6Q29sb3Im
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0KLSAgICB2b2lkIGNyZWF0ZUl0ZW0oUU9iamVj
dCopOwotICAgIHZvaWQgY3JlYXRlQ29udGV4dChRUW1sQ29tcG9uZW50KiwgUU9iamVjdCopOwot
Ci0gICAgT3duUHRyPFFRbWxDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgT3duUHRyPFFRdWlja0l0
ZW0+IG1fY29sb3JDaG9vc2VyOwotCi0gICAgUVF1aWNrV2ViVmlldyogbV93ZWJWaWV3OwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJDb2xvckNob29zZXJQcm94
eVF0X2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA0MzA5Y2E2ODdlNWQyMThlM2YyYzMyNzQ5YzBiYTgyNmI3YWM1NzJlLi5kOTM5MDBhMWY2MWY0
ZWJjZmUwOWY3NDEwOWU2NGUxNmYwMDA3OTU2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDItMjcgIFBpZXJy
ZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIE1v
dmUgQ29sb3IgcGlja2VyIG9uIHRvcCBvZiB0aGUgQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTIyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJX
aW5kb3cucW1sOiBhZGp1c3QgdG8gdGhlIG5hbWluZyBjaGFuZ2UuCisKIDIwMTMtMDItMjggIEFu
ZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBFbmFi
bGUgdGhpbiBhcmNoaXZlcyBiZWZvcmUgcGFyc2luZyB0aGUgcHJvamVjdCBmaWxlcwpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sIGIvVG9vbHMv
TWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sCmluZGV4IGI0YjViYzA5MjY4Y2Ji
M2NmMzQ5YzA4YTA2YzdjMmE5NWRjY2VhNjUuLmFiNGZiMTMzNGI3OTBhYzEzNWNhNTYyY2VkZjU2
ZTJlZDA5NzVmNzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2Vy
V2luZG93LnFtbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5x
bWwKQEAgLTU1NSw3ICs1NTUsNyBAQCBSZWN0YW5nbGUgewogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBleHBlcmltZW50YWwuY29sb3JDaG9vc2Vy
OiBDb2xvckNob29zZXIgeyB9CisgICAgICAgIGV4cGVyaW1lbnRhbC5jb2xvclBpY2tlcjogQ29s
b3JDaG9vc2VyIHsgfQogICAgICAgICBleHBlcmltZW50YWwub25FbnRlckZ1bGxTY3JlZW5SZXF1
ZXN0ZWQgOiB7CiAgICAgICAgICAgICBuYXZpZ2F0aW9uQmFyLnZpc2libGUgPSBmYWxzZTsKICAg
ICAgICAgICAgIFdpbmRvdy5zaG93RnVsbFNjcmVlbigpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>