<?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>182962</bug_id>
          
          <creation_ts>2018-02-20 04:14:57 -0800</creation_ts>
          <short_desc>[WebVR][OpenVR] Retrieve eye parameters and field of view</short_desc>
          <delta_ts>2018-02-20 07:53:22 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>achristensen</cc>
    
    <cc>dino</cc>
    
    <cc>keith_miller</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1400716</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-02-20 04:14:57 -0800</bug_when>
    <thetext>[WebVR][OpenVR] Retrieve eye parameters and field of view</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400718</commentid>
    <comment_count>1</comment_count>
      <attachid>334258</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-02-20 04:26:45 -0800</bug_when>
    <thetext>Created attachment 334258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400726</commentid>
    <comment_count>2</comment_count>
      <attachid>334258</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-02-20 04:50:41 -0800</bug_when>
    <thetext>Comment on attachment 334258
Patch

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

&gt; Source/WebCore/Modules/webvr/VREyeParameters.cpp:32
&gt; +VREyeParameters::VREyeParameters(FloatPoint3D offset, VRPlatformDisplayInfo::FieldOfView&amp; fieldOfView, IntSize renderSize)

These parameters should be const references, assuming we shouldn&apos;t have to be changing them.

&gt; Source/WebCore/Modules/webvr/VRFieldOfView.h:47
&gt; +    VRFieldOfView(VRPlatformDisplayInfo::FieldOfView fieldOfView)

This, again, should be a const reference.

&gt; Source/WebCore/Modules/webvr/VRFieldOfView.h:58
&gt; +    double m_upDegrees;
&gt; +    double m_rightDegrees;
&gt; +    double m_downDegrees;
&gt; +    double m_leftDegrees;

Given the close relation between all these member variables, I got used to just grouping them inside one struct:

    struct {
        double up;
        double right;
        double down;
        double left;
    } m_degrees;

If you find this sensible, feel free to adopt it.

&gt; Source/WebCore/platform/vr/VRPlatformDisplay.h:52
&gt; +    enum Eye { EyeLeft = 0, EyeRight, NumEyes };
&gt; +    FloatPoint3D eyeTranslation[Eye::NumEyes];

You could maybe group the eye stuff together.

&gt; Source/WebCore/platform/vr/VRPlatformDisplay.h:53
&gt; +    IntSize renderSize;

I don&apos;t think this should be an IntSize, since you&apos;re retrieving unsigned values from OpenVR and then again returning unsigned values in VREyeParameters.

Try using:

    struct RenderSize {
        unsigned width;
        unsigned height;
    } renderSize;

and then use VRPlatformDisplayInfo::RenderSize as the type to store this information in VREyeParameters.

&gt; Source/WebCore/platform/vr/VRPlatformDisplay.h:59
&gt; +        float upDegrees;
&gt; +        float downDegrees;
&gt; +        float leftDegrees;
&gt; +        float rightDegrees;

These are converted to doubles in VRFieldOfView. IMO this struct should follow the Web-facing API, and we should be performing the float-to-double conversion in the OpenVR-specific code.

&gt; Source/WebCore/platform/vr/VRPlatformDisplay.h:61
&gt; +    };
&gt; +    FieldOfView eyeFieldOfView[Eye::NumEyes];

This can be rolled into one statement, like with the RenderSize proposal.

&gt; Source/WebCore/platform/vr/openvr/VRPlatformDisplayOpenVR.cpp:67
&gt; +    m_system-&gt;GetProjectionRaw(static_cast&lt;vr::Hmd_Eye&gt;(eye), &amp;left, &amp;right, &amp;top, &amp;bottom);
&gt; +    fieldOfView.upDegrees = -rad2deg(atanf(top));
&gt; +    fieldOfView.downDegrees = rad2deg(atanf(bottom));
&gt; +    fieldOfView.leftDegrees = -rad2deg(atanf(left));
&gt; +    fieldOfView.rightDegrees = rad2deg(atanf(right));

As said above, we are retrieving floats here, since that&apos;s what OpenVR is providing, but the fieldOfView attributes should be of the double type.

&gt; Source/WebCore/platform/vr/openvr/VRPlatformDisplayOpenVR.cpp:68
&gt; +    return fieldOfView;

This can be

    return { -rad2deg(), rad2deg(), -rad2deg(), rad2deg() };

&gt; Source/WebCore/platform/vr/openvr/VRPlatformDisplayOpenVR.cpp:71
&gt; +void VRPlatformDisplayOpenVR::updateEyeParameters()

I guess this should go before computeFieldOfView(), following the declaration order in the header, but it&apos;s not super-important.

&gt; Source/WebCore/platform/vr/openvr/VRPlatformDisplayOpenVR.cpp:87
&gt; +VRPlatformDisplayOpenVR::~VRPlatformDisplayOpenVR()
&gt; +{

This should follow the constructor, and should be defaulted.

&gt; Source/WebCore/platform/vr/openvr/VRPlatformDisplayOpenVR.h:35
&gt;      explicit VRPlatformDisplayOpenVR(vr::IVRSystem*, vr::IVRChaperone*, vr::IVRCompositor*);
&gt;  
&gt; +    ~VRPlatformDisplayOpenVR();

No space required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400760</commentid>
    <comment_count>3</comment_count>
      <attachid>334269</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-02-20 07:24:33 -0800</bug_when>
    <thetext>Created attachment 334269
Patch

Applied the suggested changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400763</commentid>
    <comment_count>4</comment_count>
      <attachid>334269</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-02-20 07:31:07 -0800</bug_when>
    <thetext>Comment on attachment 334269
Patch

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

&gt; Source/WebCore/Modules/webvr/VREyeParameters.h:36
&gt; +class IntSize;

This can be dropped.

&gt; Source/WebCore/platform/vr/VRPlatformDisplay.h:24
&gt; +#include &quot;IntSize.h&quot;

This can be dropped.

&gt; Source/WebCore/platform/vr/openvr/VRPlatformDisplayOpenVR.cpp:61
&gt; +    /* OpenVR returns the tangents of the half-angles from the center view axis. */

// is a more common single-line comment pattern.

&gt; Source/WebCore/platform/vr/openvr/VRPlatformDisplayOpenVR.cpp:68
&gt; +    for (unsigned eye = 0; eye &lt; VRPlatformDisplayInfo::NumEyes; eye++) {

Usually better to increment via prefix: `++eye`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400767</commentid>
    <comment_count>5</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-02-20 07:52:08 -0800</bug_when>
    <thetext>Committed r228819: &lt;https://trac.webkit.org/changeset/228819&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400768</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-20 07:53:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/37707716&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334258</attachid>
            <date>2018-02-20 04:26:45 -0800</date>
            <delta_ts>2018-02-20 07:24:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182962-20180220132643.patch</filename>
            <type>text/plain</type>
            <size>16656</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y0NDRlM2MxYmI5Zjhj
NzZhZDgzZmZjNGVjMzAxODYwZDE0MTliMC4uNmMyMTM0NWU5ZGQxMjI5OTYyM2MzNTU0MzllYThl
NWEzNmM3YWQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE4LTAyLTIwICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJWUl1b
T3BlblZSXSBSZXRyaWV2ZSBleWUgcGFyYW1ldGVycyBhbmQgZmllbGQgb2YgdmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2V0IHRoZSByZXF1aXJl
ZCBkYXRhIGZyb20gT3BlblZSIHRvIGZpbGwgaW4gdGhlIFZSRXllUGFyYW1ldGVycyBhbmQKKyAg
ICAgICAgdGhlIFZSRmllbGRPZlZpZXcgb2JqZWN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
dnIvVlJEaXNwbGF5LmNwcDogQ3JlYXRlIHNvbWUgYXR0cmlidXRlcyBpbiB0aGUKKyAgICAgICAg
Ym9keSBvZiB0aGUgY29uc3RydWN0b3IgaW5zdGVhZCBpbiB0aGUgbWVtYmVyIGluaXRpYWxpemF0
aW9uIGxpc3QgdG8KKyAgICAgICAgYXZvaWQgY2FsbGluZyBnZXREaXNwbGF5SW5mbygpIG11bHRp
cGxlIHRpbWVzLgorICAgICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5OjpWUkRpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5OjpjYXBhYmlsaXRpZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VlJEaXNwbGF5OjpnZXRFeWVQYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5oOgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvVlJFeWVQ
YXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZSRXllUGFyYW1ldGVyczo6VlJFeWVQ
YXJhbWV0ZXJzKTogQWRkZWQgbmV3IGF0dHJpYnV0ZXMgdG8KKyAgICAgICAgdGhlIGNvbnN0cnVj
dG9yLgorICAgICAgICAoV2ViQ29yZTo6VlJFeWVQYXJhbWV0ZXJzOjpvZmZzZXQgY29uc3QpOiBS
ZXR1cm4gYSBSZWYgaW5zdGVhZCBvZgorICAgICAgICBhIHJhdyBwb2ludGVyLgorICAgICAgICAo
V2ViQ29yZTo6VlJFeWVQYXJhbWV0ZXJzOjpyZW5kZXJXaWR0aCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpWUkV5ZVBhcmFtZXRlcnM6OnJlbmRlckhlaWdodCBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZSRXll
UGFyYW1ldGVyczo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRmllbGRPZlZp
ZXcuY3BwOiBSZW1vdmVkLiBBbGwgdGhlIGltcGxldGVtZW50YXRpb24KKyAgICAgICAgZml0cyBw
ZXJmZWN0bHkgaW4gdGhlIGhlYWRlciBmaWxlLgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvVlJG
aWVsZE9mVmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6VlJGaWVsZE9mVmlldzo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlZSRmllbGRPZlZpZXc6OnVwRGVncmVlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpWUkZpZWxkT2ZWaWV3OjpyaWdodERlZ3JlZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VlJGaWVsZE9mVmlldzo6ZG93bkRlZ3JlZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VlJGaWVsZE9mVmlldzo6bGVmdERlZ3JlZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VlJGaWVsZE9mVmlldzo6VlJGaWVsZE9mVmlldyk6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vdnIvVlJQbGF0Zm9ybURpc3BsYXkuaDogQWRkZWQgc29t
ZSBtb3JlIGRhdGEgdG8gdGhlCisgICAgICAgIFZSUGxhdGZvcm1EaXNwbGF5SW5mbyBzdHJ1Y3Qu
CisgICAgICAgICogcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlZSUGxhdGZvcm1EaXNwbGF5T3BlblZSOjpWUlBsYXRmb3Jt
RGlzcGxheU9wZW5WUik6CisgICAgICAgIChXZWJDb3JlOjpWUlBsYXRmb3JtRGlzcGxheU9wZW5W
Ujo6Y29tcHV0ZUZpZWxkT2ZWaWV3KTogQ29tcHV0ZXMgdGhlCisgICAgICAgIHVwL2Rvd24vbGVm
dC9yaWdodCBGT1YgYW5nbGVzIGluIGRlZ3JlZXMgZnJvbSB0aGUgcmF3IHByb2plY3QKKyAgICAg
ICAgdmFsdWVzIHJldHVybmVkIGJ5IE9wZW5WUi4KKyAgICAgICAgKFdlYkNvcmU6OlZSUGxhdGZv
cm1EaXNwbGF5T3BlblZSOjp1cGRhdGVFeWVQYXJhbWV0ZXJzKTogRmlsbHMgaW4KKyAgICAgICAg
dGhlIGV5ZSBwYXJhbWV0ZXIgaW5mby4KKyAgICAgICAgKFdlYkNvcmU6OlZSUGxhdGZvcm1EaXNw
bGF5T3BlblZSOjp+VlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIpOgorICAgICAgICAqIHBsYXRmb3Jt
L3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oOgorCiAyMDE4LTAyLTIwICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXZWJWUl0g
VXNlIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgdG8gZW5hYmxlL2Rpc2FibGUgV2ViVlIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmNwcAppbmRleCBjMmJkMThkNjU2Mzk5
N2RmYTdhZTRjNzRhYjQ4ZDRmYzZkZDUwODllLi44YmM4OWZlMWViYTcxMWE4NDUzZmM0MTVmYTZl
YjU2MTI0ZDczYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZS
RGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXku
Y3BwCkBAIC00MywxMSArNDMsMTMgQEAgUmVmPFZSRGlzcGxheT4gVlJEaXNwbGF5OjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxWUlBsYXQKIAogVlJEaXNw
bGF5OjpWUkRpc3BsYXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxW
UlBsYXRmb3JtRGlzcGxheT4mJiBwbGF0Zm9ybURpc3BsYXkpCiAgICAgOiBBY3RpdmVET01PYmpl
Y3QoJmNvbnRleHQpCi0gICAgLCBtX2NhcGFiaWxpdGllcyhWUkRpc3BsYXlDYXBhYmlsaXRpZXM6
OmNyZWF0ZShwbGF0Zm9ybURpc3BsYXktPmdldERpc3BsYXlJbmZvKCkuY2FwYWJpbGl0eUZsYWdz
KSkKLSAgICAsIG1fZXllUGFyYW1ldGVycyhWUkV5ZVBhcmFtZXRlcnM6OmNyZWF0ZSgpKQogICAg
ICwgbV9kaXNwbGF5KFdURk1vdmUocGxhdGZvcm1EaXNwbGF5KSkKLSAgICAsIG1fZGlzcGxheU5h
bWUocGxhdGZvcm1EaXNwbGF5LT5nZXREaXNwbGF5SW5mbygpLmRpc3BsYXlOYW1lKQogeworICAg
IGF1dG8gZGlzcGxheUluZm8gPSBtX2Rpc3BsYXktPmdldERpc3BsYXlJbmZvKCk7CisgICAgbV9j
YXBhYmlsaXRpZXMgPSBWUkRpc3BsYXlDYXBhYmlsaXRpZXM6OmNyZWF0ZShkaXNwbGF5SW5mby5j
YXBhYmlsaXR5RmxhZ3MpOworICAgIG1fbGVmdEV5ZVBhcmFtZXRlcnMgPSBWUkV5ZVBhcmFtZXRl
cnM6OmNyZWF0ZShkaXNwbGF5SW5mby5leWVUcmFuc2xhdGlvbltWUlBsYXRmb3JtRGlzcGxheUlu
Zm86OkV5ZUxlZnRdLCBkaXNwbGF5SW5mby5leWVGaWVsZE9mVmlld1tWUlBsYXRmb3JtRGlzcGxh
eUluZm86OkV5ZUxlZnRdLCBkaXNwbGF5SW5mby5yZW5kZXJTaXplKTsKKyAgICBtX3JpZ2h0RXll
UGFyYW1ldGVycyA9IFZSRXllUGFyYW1ldGVyczo6Y3JlYXRlKGRpc3BsYXlJbmZvLmV5ZVRyYW5z
bGF0aW9uW1ZSUGxhdGZvcm1EaXNwbGF5SW5mbzo6RXllUmlnaHRdLCBkaXNwbGF5SW5mby5leWVG
aWVsZE9mVmlld1tWUlBsYXRmb3JtRGlzcGxheUluZm86OkV5ZVJpZ2h0XSwgZGlzcGxheUluZm8u
cmVuZGVyU2l6ZSk7CisgICAgbV9kaXNwbGF5TmFtZSA9IGRpc3BsYXlJbmZvLmRpc3BsYXlOYW1l
OwogfQogCiBWUkRpc3BsYXk6On5WUkRpc3BsYXkoKSA9IGRlZmF1bHQ7CkBAIC02Nyw3ICs2OSw3
IEBAIGJvb2wgVlJEaXNwbGF5Ojppc1ByZXNlbnRpbmcoKSBjb25zdAogCiBjb25zdCBWUkRpc3Bs
YXlDYXBhYmlsaXRpZXMmIFZSRGlzcGxheTo6Y2FwYWJpbGl0aWVzKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9jYXBhYmlsaXRpZXM7CisgICAgcmV0dXJuICptX2NhcGFiaWxpdGllczsKIH0KIAog
VlJTdGFnZVBhcmFtZXRlcnMqIFZSRGlzcGxheTo6c3RhZ2VQYXJhbWV0ZXJzKCkgY29uc3QKQEAg
LTc1LDkgKzc3LDkgQEAgVlJTdGFnZVBhcmFtZXRlcnMqIFZSRGlzcGxheTo6c3RhZ2VQYXJhbWV0
ZXJzKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotY29uc3QgVlJFeWVQYXJhbWV0
ZXJzJiBWUkRpc3BsYXk6OmdldEV5ZVBhcmFtZXRlcnMoVlJFeWUpIGNvbnN0Citjb25zdCBWUkV5
ZVBhcmFtZXRlcnMmIFZSRGlzcGxheTo6Z2V0RXllUGFyYW1ldGVycyhWUkV5ZSBleWUpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fZXllUGFyYW1ldGVyczsKKyAgICByZXR1cm4gZXllID09IFZSRXll
OjpMZWZ0ID8gKm1fbGVmdEV5ZVBhcmFtZXRlcnMgOiAqbV9yaWdodEV5ZVBhcmFtZXRlcnM7CiB9
CiAKIHVuc2lnbmVkIFZSRGlzcGxheTo6ZGlzcGxheUlkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5oCmluZGV4IDNkODVkM2I3NzcxM2IzNmVhNDA0OWQwNDY5
MjFkM2NlN2M0ZGYwMjYuLjZiNTE0OGY2M2Y5YThlYzM2OGViNDAxZTdmMjliNjExMzhmMWRhZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXkuaApAQCAtOTcsMTIgKzk3
LDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9u
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAKLSAgICBSZWY8
VlJEaXNwbGF5Q2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBSZWY8VlJFeWVQYXJh
bWV0ZXJzPiBtX2V5ZVBhcmFtZXRlcnM7Ci0KICAgICBXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5
PiBtX2Rpc3BsYXk7CiAKLSAgICBjb25zdCBTdHJpbmcgbV9kaXNwbGF5TmFtZTsKKyAgICBSZWZQ
dHI8VlJEaXNwbGF5Q2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKKyAgICAvLyBXZSBjb3Vs
ZCBsaWtlbHkgc3RvcmUganVzdCBvbmUgb2YgdGhlIHR3byBmb2xsb3dpbmcgb25lcyBhcyB0aGUg
dmFsdWVzIHNob3VsZCBiZSBpZGVudGljYWwKKyAgICAvLyAoZXhjZXB0IHRoZSBzaWduIG9mIHRo
ZSBleWUgdG8gaGVhZCB0cmFuc2Zvcm0gb2Zmc2V0KS4KKyAgICBSZWZQdHI8VlJFeWVQYXJhbWV0
ZXJzPiBtX2xlZnRFeWVQYXJhbWV0ZXJzOworICAgIFJlZlB0cjxWUkV5ZVBhcmFtZXRlcnM+IG1f
cmlnaHRFeWVQYXJhbWV0ZXJzOworCisgICAgU3RyaW5nIG1fZGlzcGxheU5hbWU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnZyL1ZSRXllUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZy
L1ZSRXllUGFyYW1ldGVycy5jcHAKaW5kZXggODE3YzMwOGU4MzdjODNhMDExYThjMzAzYTE2ZGYy
MzU0NzdlMTM0NC4uMjgyZGZkYTVhOWYxNTU1ZWFmZjZiZGM2NjVmNzJlNzU2NmQyMWJhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJFeWVQYXJhbWV0ZXJzLmNwcApA
QCAtMjksMTYgKzI5LDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVlJFeWVQYXJhbWV0
ZXJzOjpWUkV5ZVBhcmFtZXRlcnMoKQotICAgIDogbV9maWVsZE9mVmlldyhWUkZpZWxkT2ZWaWV3
OjpjcmVhdGUoKSkKK1ZSRXllUGFyYW1ldGVyczo6VlJFeWVQYXJhbWV0ZXJzKEZsb2F0UG9pbnQz
RCBvZmZzZXQsIFZSUGxhdGZvcm1EaXNwbGF5SW5mbzo6RmllbGRPZlZpZXcmIGZpZWxkT2ZWaWV3
LCBJbnRTaXplIHJlbmRlclNpemUpCisgICAgOiBtX2ZpZWxkT2ZWaWV3KFZSRmllbGRPZlZpZXc6
OmNyZWF0ZShmaWVsZE9mVmlldykpCisgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgLCBtX3Jl
bmRlclNpemUocmVuZGVyU2l6ZSkKIHsKIH0KIAotVlJFeWVQYXJhbWV0ZXJzOjp+VlJFeWVQYXJh
bWV0ZXJzKCkgPSBkZWZhdWx0OwotCi1GbG9hdDMyQXJyYXkqIFZSRXllUGFyYW1ldGVyczo6b2Zm
c2V0KCkgY29uc3QKK1JlZjxGbG9hdDMyQXJyYXk+IFZSRXllUGFyYW1ldGVyczo6b2Zmc2V0KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIG9mZnNldCA9IEZsb2F0MzJB
cnJheTo6Y3JlYXRlKDMpOworICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNldCk7CisgICAgZmxvYXQq
IG9mZnNldERhdGEgPSBvZmZzZXQtPmRhdGEoKTsKKyAgICBvZmZzZXREYXRhWzBdID0gbV9vZmZz
ZXQueCgpOworICAgIG9mZnNldERhdGFbMV0gPSBtX29mZnNldC55KCk7CisgICAgb2Zmc2V0RGF0
YVsyXSA9IG1fb2Zmc2V0LnooKTsKKyAgICByZXR1cm4gb2Zmc2V0LnJlbGVhc2VOb25OdWxsKCk7
CiB9CiAKIGNvbnN0IFZSRmllbGRPZlZpZXcmIFZSRXllUGFyYW1ldGVyczo6ZmllbGRPZlZpZXco
KSBjb25zdApAQCAtNDgsMTIgKzU0LDEyIEBAIGNvbnN0IFZSRmllbGRPZlZpZXcmIFZSRXllUGFy
YW1ldGVyczo6ZmllbGRPZlZpZXcoKSBjb25zdAogCiB1bnNpZ25lZCBWUkV5ZVBhcmFtZXRlcnM6
OnJlbmRlcldpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9yZW5k
ZXJTaXplLndpZHRoKCk7CiB9CiAKIHVuc2lnbmVkIFZSRXllUGFyYW1ldGVyczo6cmVuZGVySGVp
Z2h0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9yZW5kZXJTaXplLmhl
aWdodCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRXllUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMuaAppbmRleCA0MzMwZWI4ODgxYWZhZjg5OTc5
OWI2NzI4ZTQ1OTQyZTYzZWE2OTRhLi4zMzI5MzYwMmIwNjRmMTVkYzkxYjM3OTYyOTQ3ZjQxYmQ2
NDgwMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRXllUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJFeWVQYXJhbWV0
ZXJzLmgKQEAgLTI0LDIyICsyNCwyNSBAQAogICovCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkZsb2F0UG9pbnQzRC5oIgorI2luY2x1ZGUgIlZSRmllbGRPZlZpZXcuaCIKKyNpbmNsdWRlICJW
UlBsYXRmb3JtRGlzcGxheS5oIgorCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRmxvYXQzMkFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBWUkZpZWxkT2ZWaWV3OworY2xhc3MgSW50U2l6ZTsKIAogY2xhc3MgVlJFeWVQ
YXJhbWV0ZXJzIDogcHVibGljIFJlZkNvdW50ZWQ8VlJFeWVQYXJhbWV0ZXJzPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxWUkV5ZVBhcmFtZXRlcnM+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJl
ZjxWUkV5ZVBhcmFtZXRlcnM+IGNyZWF0ZShGbG9hdFBvaW50M0Qgb2Zmc2V0LCBWUlBsYXRmb3Jt
RGlzcGxheUluZm86OkZpZWxkT2ZWaWV3JiBmaWVsZE9mVmlldywgSW50U2l6ZSByZW5kZXJTaXpl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVlJFeWVQYXJhbWV0ZXJzKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVlJFeWVQYXJhbWV0ZXJzKG9mZnNldCwgZmll
bGRPZlZpZXcsIHJlbmRlclNpemUpKTsKICAgICB9Ci0gICAgflZSRXllUGFyYW1ldGVycygpOwog
Ci0gICAgRmxvYXQzMkFycmF5KiBvZmZzZXQoKSBjb25zdDsKKyAgICBSZWY8RmxvYXQzMkFycmF5
PiBvZmZzZXQoKSBjb25zdDsKIAogICAgIGNvbnN0IFZSRmllbGRPZlZpZXcmIGZpZWxkT2ZWaWV3
KCkgY29uc3Q7CiAKQEAgLTQ3LDkgKzUwLDExIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCByZW5k
ZXJIZWlnaHQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBWUkV5ZVBhcmFtZXRlcnMoKTsKKyAg
ICBWUkV5ZVBhcmFtZXRlcnMoRmxvYXRQb2ludDNEIG9mZnNldCwgVlJQbGF0Zm9ybURpc3BsYXlJ
bmZvOjpGaWVsZE9mVmlldyYsIEludFNpemUgcmVuZGVyU2l6ZSk7CiAKICAgICBSZWY8VlJGaWVs
ZE9mVmlldz4gbV9maWVsZE9mVmlldzsKKyAgICBGbG9hdFBvaW50M0QgbV9vZmZzZXQ7CisgICAg
SW50U2l6ZSBtX3JlbmRlclNpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRmllbGRPZlZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZpZWxkT2ZWaWV3LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZmZjNzM3MzJjMGI1ODhiODNiOGYyMGZmZGNmNDhjMzNjNDFm
N2QwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRmllbGRPZlZpZXcuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlZSRmllbGRPZlZpZXcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1WUkZpZWxkT2ZW
aWV3OjpWUkZpZWxkT2ZWaWV3KCkgPSBkZWZhdWx0OwotCi1kb3VibGUgVlJGaWVsZE9mVmlldzo6
dXBEZWdyZWVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotZG91YmxlIFZSRmllbGRP
ZlZpZXc6OnJpZ2h0RGVncmVlcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWRvdWJs
ZSBWUkZpZWxkT2ZWaWV3Ojpkb3duRGVncmVlcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLWRvdWJsZSBWUkZpZWxkT2ZWaWV3OjpsZWZ0RGVncmVlcygpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VidnIvVlJGaWVsZE9mVmlldy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ2ci9WUkZpZWxkT2ZWaWV3LmgKaW5kZXggNzdjMmE3NmIwM2Y1MmQzMmRkODgwMGE3
OWY4MTA3ODA4NzRmMzRlMC4uNTBhMzBhOTk3OTBkYTAwNGExNDU5ZTQ1M2JjZDMxMGI1M2VkYzZk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZpZWxkT2ZWaWV3
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZpZWxkT2ZWaWV3LmgKQEAg
LTI0LDYgKzI0LDggQEAKICAqLwogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJWUlBsYXRmb3Jt
RGlzcGxheS5oIgorCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKQEAgLTMxLDE4ICszMywyOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFZSRmllbGRPZlZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxWUkZpZWxkT2ZWaWV3PiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxWUkZpZWxkT2ZWaWV3PiBjcmVhdGUoKQorICAgIHN0YXRpYyBS
ZWY8VlJGaWVsZE9mVmlldz4gY3JlYXRlKFZSUGxhdGZvcm1EaXNwbGF5SW5mbzo6RmllbGRPZlZp
ZXcgZmllbGRPZlZpZXcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWUkZp
ZWxkT2ZWaWV3KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVlJGaWVsZE9mVmlldyhm
aWVsZE9mVmlldykpOwogICAgIH0KIAotICAgIGRvdWJsZSB1cERlZ3JlZXMoKSBjb25zdDsKLSAg
ICBkb3VibGUgcmlnaHREZWdyZWVzKCkgY29uc3Q7Ci0gICAgZG91YmxlIGRvd25EZWdyZWVzKCkg
Y29uc3Q7Ci0gICAgZG91YmxlIGxlZnREZWdyZWVzKCkgY29uc3Q7CisgICAgZG91YmxlIHVwRGVn
cmVlcygpIGNvbnN0IHsgcmV0dXJuIG1fdXBEZWdyZWVzOyB9OworICAgIGRvdWJsZSByaWdodERl
Z3JlZXMoKSBjb25zdCB7IHJldHVybiBtX3JpZ2h0RGVncmVlczsgfTsKKyAgICBkb3VibGUgZG93
bkRlZ3JlZXMoKSBjb25zdCB7IHJldHVybiBtX2Rvd25EZWdyZWVzOyB9OworICAgIGRvdWJsZSBs
ZWZ0RGVncmVlcygpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdERlZ3JlZXM7IH07CiAKIHByaXZhdGU6
Ci0gICAgVlJGaWVsZE9mVmlldygpOworICAgIFZSRmllbGRPZlZpZXcoVlJQbGF0Zm9ybURpc3Bs
YXlJbmZvOjpGaWVsZE9mVmlldyBmaWVsZE9mVmlldykKKyAgICAgICAgOiBtX3VwRGVncmVlcyhm
aWVsZE9mVmlldy51cERlZ3JlZXMpCisgICAgICAgICwgbV9yaWdodERlZ3JlZXMoZmllbGRPZlZp
ZXcucmlnaHREZWdyZWVzKQorICAgICAgICAsIG1fZG93bkRlZ3JlZXMoZmllbGRPZlZpZXcuZG93
bkRlZ3JlZXMpCisgICAgICAgICwgbV9sZWZ0RGVncmVlcyhmaWVsZE9mVmlldy5sZWZ0RGVncmVl
cykKKyAgICB7CisgICAgfQorCisgICAgZG91YmxlIG1fdXBEZWdyZWVzOworICAgIGRvdWJsZSBt
X3JpZ2h0RGVncmVlczsKKyAgICBkb3VibGUgbV9kb3duRGVncmVlczsKKyAgICBkb3VibGUgbV9s
ZWZ0RGVncmVlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggMjEzMzliOTk5MmNlNGNlNTAwNzc2ZjFiYjBkMmNiNDZmODQ5YThiNC4uMjM4M2ZhYTA3OWNk
MjdhODVhZDczZDJmM2NlMzQyMjQwZTUxOGY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI5Myw3ICsy
OTMsNiBAQCBNb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5jcHAKIE1vZHVsZXMvd2VidnIvVlJEaXNw
bGF5Q2FwYWJpbGl0aWVzLmNwcAogTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlFdmVudC5jcHAKIE1v
ZHVsZXMvd2VidnIvVlJFeWVQYXJhbWV0ZXJzLmNwcAotTW9kdWxlcy93ZWJ2ci9WUkZpZWxkT2ZW
aWV3LmNwcAogTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKIE1vZHVsZXMvd2VidnIvVlJQ
b3NlLmNwcAogTW9kdWxlcy93ZWJ2ci9WUlN0YWdlUGFyYW1ldGVycy5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSUGxhdGZvcm1EaXNwbGF5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5oCmluZGV4IGEzMDkyYzYyYzlj
ODhkNzdiNjQwMDRjMDhlYzJiYWFlNGIyNTZlOGEuLjk5ZWNlMDkyN2E0MzliMDNhZDdiOTZjNTM0
MzU4YjllY2MxZGQ4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZS
UGxhdGZvcm1EaXNwbGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvVlJQbGF0
Zm9ybURpc3BsYXkuaApAQCAtMjAsNiArMjAsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkZsb2F0UG9pbnQzRC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKwogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQ0LDYg
KzQ3LDE4IEBAIHN0cnVjdCBWUlBsYXRmb3JtRGlzcGxheUluZm8gewogICAgIGJvb2wgaXNDb25u
ZWN0ZWQ7CiAgICAgYm9vbCBpc01vdW50ZWQ7CiAgICAgdW5zaWduZWQgY2FwYWJpbGl0eUZsYWdz
OworCisgICAgZW51bSBFeWUgeyBFeWVMZWZ0ID0gMCwgRXllUmlnaHQsIE51bUV5ZXMgfTsKKyAg
ICBGbG9hdFBvaW50M0QgZXllVHJhbnNsYXRpb25bRXllOjpOdW1FeWVzXTsKKyAgICBJbnRTaXpl
IHJlbmRlclNpemU7CisKKyAgICBzdHJ1Y3QgRmllbGRPZlZpZXcgeworICAgICAgICBmbG9hdCB1
cERlZ3JlZXM7CisgICAgICAgIGZsb2F0IGRvd25EZWdyZWVzOworICAgICAgICBmbG9hdCBsZWZ0
RGVncmVlczsKKyAgICAgICAgZmxvYXQgcmlnaHREZWdyZWVzOworICAgIH07CisgICAgRmllbGRP
ZlZpZXcgZXllRmllbGRPZlZpZXdbRXllOjpOdW1FeWVzXTsKIH07CiAKIGNsYXNzIFZSUGxhdGZv
cm1EaXNwbGF5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52
ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92
ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuY3BwCmluZGV4IDQxZDc2ZjMxYjA2ZmU2
MWZjOWMxZTllMWE4MzQ4YzQ0ZWVmMGQzMjkuLjE1OTkyNDVjZDUwOGMzODJlMTAzMzAwMzNmNzY3
ZjI2MTYxOWM2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52
ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmNwcApAQCAtNTEsNiArNTEsNDAg
QEAgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI6OlZSUGxhdGZvcm1EaXNwbGF5T3BlblZSKHZyOjpJ
VlJTeXN0ZW0qIHN5c3RlbSwgdnI6OklWUkMKICAgICAgICAgVlJEaXNwbGF5Q2FwYWJpbGl0eUZs
YWdzOjpPcmllbnRhdGlvbiB8CiAgICAgICAgIFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnczo6RXh0
ZXJuYWxEaXNwbGF5IHwKICAgICAgICAgVlJEaXNwbGF5Q2FwYWJpbGl0eUZsYWdzOjpQcmVzZW50
OworCisgICAgdXBkYXRlRXllUGFyYW1ldGVycygpOworfQorCitWUlBsYXRmb3JtRGlzcGxheUlu
Zm86OkZpZWxkT2ZWaWV3IFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSOjpjb21wdXRlRmllbGRPZlZp
ZXcodnI6OkhtZF9FeWUgZXllKQoreworICAgIFZSUGxhdGZvcm1EaXNwbGF5SW5mbzo6RmllbGRP
ZlZpZXcgZmllbGRPZlZpZXc7CisgICAgZmxvYXQgbGVmdCwgcmlnaHQsIHRvcCwgYm90dG9tOwor
ICAgIC8qIE9wZW5WUiByZXR1cm5zIHRoZSB0YW5nZW50cyBvZiB0aGUgaGFsZi1hbmdsZXMgZnJv
bSB0aGUgY2VudGVyIHZpZXcgYXhpcy4gKi8KKyAgICBtX3N5c3RlbS0+R2V0UHJvamVjdGlvblJh
dyhzdGF0aWNfY2FzdDx2cjo6SG1kX0V5ZT4oZXllKSwgJmxlZnQsICZyaWdodCwgJnRvcCwgJmJv
dHRvbSk7CisgICAgZmllbGRPZlZpZXcudXBEZWdyZWVzID0gLXJhZDJkZWcoYXRhbmYodG9wKSk7
CisgICAgZmllbGRPZlZpZXcuZG93bkRlZ3JlZXMgPSByYWQyZGVnKGF0YW5mKGJvdHRvbSkpOwor
ICAgIGZpZWxkT2ZWaWV3LmxlZnREZWdyZWVzID0gLXJhZDJkZWcoYXRhbmYobGVmdCkpOworICAg
IGZpZWxkT2ZWaWV3LnJpZ2h0RGVncmVlcyA9IHJhZDJkZWcoYXRhbmYocmlnaHQpKTsKKyAgICBy
ZXR1cm4gZmllbGRPZlZpZXc7Cit9CisKK3ZvaWQgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI6OnVw
ZGF0ZUV5ZVBhcmFtZXRlcnMoKQoreworICAgIGZvciAodW5zaWduZWQgZXllID0gMDsgZXllIDwg
VlJQbGF0Zm9ybURpc3BsYXlJbmZvOjpOdW1FeWVzOyBleWUrKykgeworICAgICAgICBtX2Rpc3Bs
YXlJbmZvLmV5ZUZpZWxkT2ZWaWV3W2V5ZV0gPSBjb21wdXRlRmllbGRPZlZpZXcoc3RhdGljX2Nh
c3Q8dnI6OkhtZF9FeWU+KGV5ZSkpOworCisgICAgICAgIHZyOjpIbWRNYXRyaXgzNF90IGV5ZVRv
SGVhZCA9IG1fc3lzdGVtLT5HZXRFeWVUb0hlYWRUcmFuc2Zvcm0oc3RhdGljX2Nhc3Q8dnI6Okht
ZF9FeWU+KGV5ZSkpOworICAgICAgICBtX2Rpc3BsYXlJbmZvLmV5ZVRyYW5zbGF0aW9uW2V5ZV0u
c2V0KGV5ZVRvSGVhZC5tWzBdWzNdLCBleWVUb0hlYWQubVsxXVszXSwgZXllVG9IZWFkLm1bMl1b
M10pOworICAgIH0KKworICAgIHVpbnQzMl90IHdpZHRoOworICAgIHVpbnQzMl90IGhlaWdodDsK
KyAgICBtX3N5c3RlbS0+R2V0UmVjb21tZW5kZWRSZW5kZXJUYXJnZXRTaXplKCZ3aWR0aCwgJmhl
aWdodCk7CisgICAgbV9kaXNwbGF5SW5mby5yZW5kZXJTaXplID0gSW50U2l6ZSh3aWR0aCwgaGVp
Z2h0KTsKK30KKworVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI6On5WUlBsYXRmb3JtRGlzcGxheU9w
ZW5WUigpCit7CiB9CiAKIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5W
Ui5oCmluZGV4IDM4NjZmNDUzZDRmNjgzMjExMWZmMjQ3NmNhMTg5YmEyNjNkMjNkMTkuLjk1OWRm
OWY5YWI3MDdlMmU1ZDZlMGYwNmRjZTc0YzIzOWMxMzMyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5W
Ui5oCkBAIC0zMiw5ICszMiwxNCBAQCBjbGFzcyBWUlBsYXRmb3JtRGlzcGxheU9wZW5WUiA6IHB1
YmxpYyBWUlBsYXRmb3JtRGlzcGxheSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVlJQbGF0Zm9y
bURpc3BsYXlPcGVuVlIodnI6OklWUlN5c3RlbSosIHZyOjpJVlJDaGFwZXJvbmUqLCB2cjo6SVZS
Q29tcG9zaXRvciopOwogCisgICAgflZSUGxhdGZvcm1EaXNwbGF5T3BlblZSKCk7CisKICAgICBW
UlBsYXRmb3JtRGlzcGxheUluZm8gZ2V0RGlzcGxheUluZm8oKSBvdmVycmlkZSB7IHJldHVybiBt
X2Rpc3BsYXlJbmZvOyB9CiAKIHByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVFeWVQYXJhbWV0ZXJz
KCk7CisgICAgVlJQbGF0Zm9ybURpc3BsYXlJbmZvOjpGaWVsZE9mVmlldyBjb21wdXRlRmllbGRP
ZlZpZXcodnI6OkhtZF9FeWUpOworCiAgICAgdnI6OklWUlN5c3RlbSogbV9zeXN0ZW07CiAgICAg
dnI6OklWUkNoYXBlcm9uZSogbV9jaGFwZXJvbmU7CiAgICAgdnI6OklWUkNvbXBvc2l0b3IqIG1f
Y29tcG9zaXRvcjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334269</attachid>
            <date>2018-02-20 07:24:33 -0800</date>
            <delta_ts>2018-02-20 07:31:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182962-20180220162432.patch</filename>
            <type>text/plain</type>
            <size>16589</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y0NDRlM2MxYmI5Zjhj
NzZhZDgzZmZjNGVjMzAxODYwZDE0MTliMC4uNmMyMTM0NWU5ZGQxMjI5OTYyM2MzNTU0MzllYThl
NWEzNmM3YWQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE4LTAyLTIwICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJWUl1b
T3BlblZSXSBSZXRyaWV2ZSBleWUgcGFyYW1ldGVycyBhbmQgZmllbGQgb2YgdmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2V0IHRoZSByZXF1aXJl
ZCBkYXRhIGZyb20gT3BlblZSIHRvIGZpbGwgaW4gdGhlIFZSRXllUGFyYW1ldGVycyBhbmQKKyAg
ICAgICAgdGhlIFZSRmllbGRPZlZpZXcgb2JqZWN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
dnIvVlJEaXNwbGF5LmNwcDogQ3JlYXRlIHNvbWUgYXR0cmlidXRlcyBpbiB0aGUKKyAgICAgICAg
Ym9keSBvZiB0aGUgY29uc3RydWN0b3IgaW5zdGVhZCBpbiB0aGUgbWVtYmVyIGluaXRpYWxpemF0
aW9uIGxpc3QgdG8KKyAgICAgICAgYXZvaWQgY2FsbGluZyBnZXREaXNwbGF5SW5mbygpIG11bHRp
cGxlIHRpbWVzLgorICAgICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5OjpWUkRpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5OjpjYXBhYmlsaXRpZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VlJEaXNwbGF5OjpnZXRFeWVQYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5oOgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvVlJFeWVQ
YXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZSRXllUGFyYW1ldGVyczo6VlJFeWVQ
YXJhbWV0ZXJzKTogQWRkZWQgbmV3IGF0dHJpYnV0ZXMgdG8KKyAgICAgICAgdGhlIGNvbnN0cnVj
dG9yLgorICAgICAgICAoV2ViQ29yZTo6VlJFeWVQYXJhbWV0ZXJzOjpvZmZzZXQgY29uc3QpOiBS
ZXR1cm4gYSBSZWYgaW5zdGVhZCBvZgorICAgICAgICBhIHJhdyBwb2ludGVyLgorICAgICAgICAo
V2ViQ29yZTo6VlJFeWVQYXJhbWV0ZXJzOjpyZW5kZXJXaWR0aCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpWUkV5ZVBhcmFtZXRlcnM6OnJlbmRlckhlaWdodCBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZSRXll
UGFyYW1ldGVyczo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRmllbGRPZlZp
ZXcuY3BwOiBSZW1vdmVkLiBBbGwgdGhlIGltcGxldGVtZW50YXRpb24KKyAgICAgICAgZml0cyBw
ZXJmZWN0bHkgaW4gdGhlIGhlYWRlciBmaWxlLgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvVlJG
aWVsZE9mVmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6VlJGaWVsZE9mVmlldzo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlZSRmllbGRPZlZpZXc6OnVwRGVncmVlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpWUkZpZWxkT2ZWaWV3OjpyaWdodERlZ3JlZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VlJGaWVsZE9mVmlldzo6ZG93bkRlZ3JlZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VlJGaWVsZE9mVmlldzo6bGVmdERlZ3JlZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VlJGaWVsZE9mVmlldzo6VlJGaWVsZE9mVmlldyk6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vdnIvVlJQbGF0Zm9ybURpc3BsYXkuaDogQWRkZWQgc29t
ZSBtb3JlIGRhdGEgdG8gdGhlCisgICAgICAgIFZSUGxhdGZvcm1EaXNwbGF5SW5mbyBzdHJ1Y3Qu
CisgICAgICAgICogcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlZSUGxhdGZvcm1EaXNwbGF5T3BlblZSOjpWUlBsYXRmb3Jt
RGlzcGxheU9wZW5WUik6CisgICAgICAgIChXZWJDb3JlOjpWUlBsYXRmb3JtRGlzcGxheU9wZW5W
Ujo6Y29tcHV0ZUZpZWxkT2ZWaWV3KTogQ29tcHV0ZXMgdGhlCisgICAgICAgIHVwL2Rvd24vbGVm
dC9yaWdodCBGT1YgYW5nbGVzIGluIGRlZ3JlZXMgZnJvbSB0aGUgcmF3IHByb2plY3QKKyAgICAg
ICAgdmFsdWVzIHJldHVybmVkIGJ5IE9wZW5WUi4KKyAgICAgICAgKFdlYkNvcmU6OlZSUGxhdGZv
cm1EaXNwbGF5T3BlblZSOjp1cGRhdGVFeWVQYXJhbWV0ZXJzKTogRmlsbHMgaW4KKyAgICAgICAg
dGhlIGV5ZSBwYXJhbWV0ZXIgaW5mby4KKyAgICAgICAgKFdlYkNvcmU6OlZSUGxhdGZvcm1EaXNw
bGF5T3BlblZSOjp+VlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIpOgorICAgICAgICAqIHBsYXRmb3Jt
L3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oOgorCiAyMDE4LTAyLTIwICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXZWJWUl0g
VXNlIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgdG8gZW5hYmxlL2Rpc2FibGUgV2ViVlIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmNwcAppbmRleCBjMmJkMThkNjU2Mzk5
N2RmYTdhZTRjNzRhYjQ4ZDRmYzZkZDUwODllLi44YmM4OWZlMWViYTcxMWE4NDUzZmM0MTVmYTZl
YjU2MTI0ZDczYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZS
RGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXku
Y3BwCkBAIC00MywxMSArNDMsMTMgQEAgUmVmPFZSRGlzcGxheT4gVlJEaXNwbGF5OjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxWUlBsYXQKIAogVlJEaXNw
bGF5OjpWUkRpc3BsYXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxW
UlBsYXRmb3JtRGlzcGxheT4mJiBwbGF0Zm9ybURpc3BsYXkpCiAgICAgOiBBY3RpdmVET01PYmpl
Y3QoJmNvbnRleHQpCi0gICAgLCBtX2NhcGFiaWxpdGllcyhWUkRpc3BsYXlDYXBhYmlsaXRpZXM6
OmNyZWF0ZShwbGF0Zm9ybURpc3BsYXktPmdldERpc3BsYXlJbmZvKCkuY2FwYWJpbGl0eUZsYWdz
KSkKLSAgICAsIG1fZXllUGFyYW1ldGVycyhWUkV5ZVBhcmFtZXRlcnM6OmNyZWF0ZSgpKQogICAg
ICwgbV9kaXNwbGF5KFdURk1vdmUocGxhdGZvcm1EaXNwbGF5KSkKLSAgICAsIG1fZGlzcGxheU5h
bWUocGxhdGZvcm1EaXNwbGF5LT5nZXREaXNwbGF5SW5mbygpLmRpc3BsYXlOYW1lKQogeworICAg
IGF1dG8gZGlzcGxheUluZm8gPSBtX2Rpc3BsYXktPmdldERpc3BsYXlJbmZvKCk7CisgICAgbV9j
YXBhYmlsaXRpZXMgPSBWUkRpc3BsYXlDYXBhYmlsaXRpZXM6OmNyZWF0ZShkaXNwbGF5SW5mby5j
YXBhYmlsaXR5RmxhZ3MpOworICAgIG1fbGVmdEV5ZVBhcmFtZXRlcnMgPSBWUkV5ZVBhcmFtZXRl
cnM6OmNyZWF0ZShkaXNwbGF5SW5mby5leWVUcmFuc2xhdGlvbltWUlBsYXRmb3JtRGlzcGxheUlu
Zm86OkV5ZUxlZnRdLCBkaXNwbGF5SW5mby5leWVGaWVsZE9mVmlld1tWUlBsYXRmb3JtRGlzcGxh
eUluZm86OkV5ZUxlZnRdLCBkaXNwbGF5SW5mby5yZW5kZXJTaXplKTsKKyAgICBtX3JpZ2h0RXll
UGFyYW1ldGVycyA9IFZSRXllUGFyYW1ldGVyczo6Y3JlYXRlKGRpc3BsYXlJbmZvLmV5ZVRyYW5z
bGF0aW9uW1ZSUGxhdGZvcm1EaXNwbGF5SW5mbzo6RXllUmlnaHRdLCBkaXNwbGF5SW5mby5leWVG
aWVsZE9mVmlld1tWUlBsYXRmb3JtRGlzcGxheUluZm86OkV5ZVJpZ2h0XSwgZGlzcGxheUluZm8u
cmVuZGVyU2l6ZSk7CisgICAgbV9kaXNwbGF5TmFtZSA9IGRpc3BsYXlJbmZvLmRpc3BsYXlOYW1l
OwogfQogCiBWUkRpc3BsYXk6On5WUkRpc3BsYXkoKSA9IGRlZmF1bHQ7CkBAIC02Nyw3ICs2OSw3
IEBAIGJvb2wgVlJEaXNwbGF5Ojppc1ByZXNlbnRpbmcoKSBjb25zdAogCiBjb25zdCBWUkRpc3Bs
YXlDYXBhYmlsaXRpZXMmIFZSRGlzcGxheTo6Y2FwYWJpbGl0aWVzKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9jYXBhYmlsaXRpZXM7CisgICAgcmV0dXJuICptX2NhcGFiaWxpdGllczsKIH0KIAog
VlJTdGFnZVBhcmFtZXRlcnMqIFZSRGlzcGxheTo6c3RhZ2VQYXJhbWV0ZXJzKCkgY29uc3QKQEAg
LTc1LDkgKzc3LDkgQEAgVlJTdGFnZVBhcmFtZXRlcnMqIFZSRGlzcGxheTo6c3RhZ2VQYXJhbWV0
ZXJzKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotY29uc3QgVlJFeWVQYXJhbWV0
ZXJzJiBWUkRpc3BsYXk6OmdldEV5ZVBhcmFtZXRlcnMoVlJFeWUpIGNvbnN0Citjb25zdCBWUkV5
ZVBhcmFtZXRlcnMmIFZSRGlzcGxheTo6Z2V0RXllUGFyYW1ldGVycyhWUkV5ZSBleWUpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fZXllUGFyYW1ldGVyczsKKyAgICByZXR1cm4gZXllID09IFZSRXll
OjpMZWZ0ID8gKm1fbGVmdEV5ZVBhcmFtZXRlcnMgOiAqbV9yaWdodEV5ZVBhcmFtZXRlcnM7CiB9
CiAKIHVuc2lnbmVkIFZSRGlzcGxheTo6ZGlzcGxheUlkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5oCmluZGV4IDNkODVkM2I3NzcxM2IzNmVhNDA0OWQwNDY5
MjFkM2NlN2M0ZGYwMjYuLjZiNTE0OGY2M2Y5YThlYzM2OGViNDAxZTdmMjliNjExMzhmMWRhZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXkuaApAQCAtOTcsMTIgKzk3
LDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9u
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAKLSAgICBSZWY8
VlJEaXNwbGF5Q2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBSZWY8VlJFeWVQYXJh
bWV0ZXJzPiBtX2V5ZVBhcmFtZXRlcnM7Ci0KICAgICBXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5
PiBtX2Rpc3BsYXk7CiAKLSAgICBjb25zdCBTdHJpbmcgbV9kaXNwbGF5TmFtZTsKKyAgICBSZWZQ
dHI8VlJEaXNwbGF5Q2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKKyAgICAvLyBXZSBjb3Vs
ZCBsaWtlbHkgc3RvcmUganVzdCBvbmUgb2YgdGhlIHR3byBmb2xsb3dpbmcgb25lcyBhcyB0aGUg
dmFsdWVzIHNob3VsZCBiZSBpZGVudGljYWwKKyAgICAvLyAoZXhjZXB0IHRoZSBzaWduIG9mIHRo
ZSBleWUgdG8gaGVhZCB0cmFuc2Zvcm0gb2Zmc2V0KS4KKyAgICBSZWZQdHI8VlJFeWVQYXJhbWV0
ZXJzPiBtX2xlZnRFeWVQYXJhbWV0ZXJzOworICAgIFJlZlB0cjxWUkV5ZVBhcmFtZXRlcnM+IG1f
cmlnaHRFeWVQYXJhbWV0ZXJzOworCisgICAgU3RyaW5nIG1fZGlzcGxheU5hbWU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnZyL1ZSRXllUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZy
L1ZSRXllUGFyYW1ldGVycy5jcHAKaW5kZXggODE3YzMwOGU4MzdjODNhMDExYThjMzAzYTE2ZGYy
MzU0NzdlMTM0NC4uMjVmYjhlOGI3ZDU1NWQ3YWQwZDM0OTE3NDk5N2RiMzI5NzBjYzlhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJFeWVQYXJhbWV0ZXJzLmNwcApA
QCAtMjksMTYgKzI5LDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVlJFeWVQYXJhbWV0
ZXJzOjpWUkV5ZVBhcmFtZXRlcnMoKQotICAgIDogbV9maWVsZE9mVmlldyhWUkZpZWxkT2ZWaWV3
OjpjcmVhdGUoKSkKK1ZSRXllUGFyYW1ldGVyczo6VlJFeWVQYXJhbWV0ZXJzKGNvbnN0IEZsb2F0
UG9pbnQzRCYgb2Zmc2V0LCBjb25zdCBWUlBsYXRmb3JtRGlzcGxheUluZm86OkZpZWxkT2ZWaWV3
JiBmaWVsZE9mVmlldywgY29uc3QgUmVuZGVyU2l6ZSYgcmVuZGVyU2l6ZSkKKyAgICA6IG1fZmll
bGRPZlZpZXcoVlJGaWVsZE9mVmlldzo6Y3JlYXRlKGZpZWxkT2ZWaWV3KSkKKyAgICAsIG1fb2Zm
c2V0KG9mZnNldCkKKyAgICAsIG1fcmVuZGVyU2l6ZShyZW5kZXJTaXplKQogewogfQogCi1WUkV5
ZVBhcmFtZXRlcnM6On5WUkV5ZVBhcmFtZXRlcnMoKSA9IGRlZmF1bHQ7Ci0KLUZsb2F0MzJBcnJh
eSogVlJFeWVQYXJhbWV0ZXJzOjpvZmZzZXQoKSBjb25zdAorUmVmPEZsb2F0MzJBcnJheT4gVlJF
eWVQYXJhbWV0ZXJzOjpvZmZzZXQoKSBjb25zdAogewotICAgIHJldHVybiBudWxscHRyOworICAg
IGF1dG8gb2Zmc2V0ID0gRmxvYXQzMkFycmF5OjpjcmVhdGUoMyk7CisgICAgUkVMRUFTRV9BU1NF
UlQob2Zmc2V0KTsKKyAgICBmbG9hdCogb2Zmc2V0RGF0YSA9IG9mZnNldC0+ZGF0YSgpOworICAg
IG9mZnNldERhdGFbMF0gPSBtX29mZnNldC54KCk7CisgICAgb2Zmc2V0RGF0YVsxXSA9IG1fb2Zm
c2V0LnkoKTsKKyAgICBvZmZzZXREYXRhWzJdID0gbV9vZmZzZXQueigpOworICAgIHJldHVybiBv
ZmZzZXQucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogY29uc3QgVlJGaWVsZE9mVmlldyYgVlJFeWVQ
YXJhbWV0ZXJzOjpmaWVsZE9mVmlldygpIGNvbnN0CkBAIC00OCwxMiArNTQsMTIgQEAgY29uc3Qg
VlJGaWVsZE9mVmlldyYgVlJFeWVQYXJhbWV0ZXJzOjpmaWVsZE9mVmlldygpIGNvbnN0CiAKIHVu
c2lnbmVkIFZSRXllUGFyYW1ldGVyczo6cmVuZGVyV2lkdGgoKSBjb25zdAogewotICAgIHJldHVy
biAwOworICAgIHJldHVybiBtX3JlbmRlclNpemUud2lkdGg7CiB9CiAKIHVuc2lnbmVkIFZSRXll
UGFyYW1ldGVyczo6cmVuZGVySGVpZ2h0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gbV9yZW5kZXJTaXplLmhlaWdodDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJFeWVQYXJhbWV0ZXJzLmgKaW5kZXgg
NDMzMGViODg4MWFmYWY4OTk3OTliNjcyOGU0NTk0MmU2M2VhNjk0YS4uNWRjOGMwYmMwOGY1MDQw
ZGEyNjFhYTk1N2FkZDk2NzdlMzZmOWEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnZyL1ZSRXllUGFyYW1ldGVycy5oCkBAIC0yNCwyMiArMjQsMjcgQEAKICAqLwogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKKyNpbmNsdWRlICJWUkZpZWxkT2ZW
aWV3LmgiCisjaW5jbHVkZSAiVlJQbGF0Zm9ybURpc3BsYXkuaCIKKwogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVlJGaWVsZE9mVmlldzsKK2NsYXNzIEludFNp
emU7CiAKIGNsYXNzIFZSRXllUGFyYW1ldGVycyA6IHB1YmxpYyBSZWZDb3VudGVkPFZSRXllUGFy
YW1ldGVycz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VlJFeWVQYXJhbWV0ZXJzPiBjcmVh
dGUoKQorICAgIHVzaW5nIFJlbmRlclNpemUgPSBWUlBsYXRmb3JtRGlzcGxheUluZm86OlJlbmRl
clNpemU7CisKKyAgICBzdGF0aWMgUmVmPFZSRXllUGFyYW1ldGVycz4gY3JlYXRlKGNvbnN0IEZs
b2F0UG9pbnQzRCYgb2Zmc2V0LCBjb25zdCBWUlBsYXRmb3JtRGlzcGxheUluZm86OkZpZWxkT2ZW
aWV3JiBmaWVsZE9mVmlldywgY29uc3QgUmVuZGVyU2l6ZSYgcmVuZGVyU2l6ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZSRXllUGFyYW1ldGVycyk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFZSRXllUGFyYW1ldGVycyhvZmZzZXQsIGZpZWxkT2ZWaWV3LCBy
ZW5kZXJTaXplKSk7CiAgICAgfQotICAgIH5WUkV5ZVBhcmFtZXRlcnMoKTsKIAotICAgIEZsb2F0
MzJBcnJheSogb2Zmc2V0KCkgY29uc3Q7CisgICAgUmVmPEZsb2F0MzJBcnJheT4gb2Zmc2V0KCkg
Y29uc3Q7CiAKICAgICBjb25zdCBWUkZpZWxkT2ZWaWV3JiBmaWVsZE9mVmlldygpIGNvbnN0Owog
CkBAIC00Nyw5ICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgcmVuZGVySGVpZ2h0KCkg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgVlJFeWVQYXJhbWV0ZXJzKCk7CisgICAgVlJFeWVQYXJh
bWV0ZXJzKGNvbnN0IEZsb2F0UG9pbnQzRCYgb2Zmc2V0LCBjb25zdCBWUlBsYXRmb3JtRGlzcGxh
eUluZm86OkZpZWxkT2ZWaWV3JiwgY29uc3QgUmVuZGVyU2l6ZSYpOwogCiAgICAgUmVmPFZSRmll
bGRPZlZpZXc+IG1fZmllbGRPZlZpZXc7CisgICAgRmxvYXRQb2ludDNEIG1fb2Zmc2V0OworICAg
IFJlbmRlclNpemUgbV9yZW5kZXJTaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZpZWxkT2ZWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJGaWVsZE9mVmlldy5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmYzczNzMyYzBiNTg4YjgzYjhmMjBmZmRjZjQ4YzMz
YzQxZjdkMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZpZWxkT2ZWaWV3LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMu
TC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJWUkZpZWxkT2ZWaWV3LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVlJGaWVs
ZE9mVmlldzo6VlJGaWVsZE9mVmlldygpID0gZGVmYXVsdDsKLQotZG91YmxlIFZSRmllbGRPZlZp
ZXc6OnVwRGVncmVlcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWRvdWJsZSBWUkZp
ZWxkT2ZWaWV3OjpyaWdodERlZ3JlZXMoKSBjb25zdAotewotICAgIHJldHVybiAwOwotfQotCi1k
b3VibGUgVlJGaWVsZE9mVmlldzo6ZG93bkRlZ3JlZXMoKSBjb25zdAotewotICAgIHJldHVybiAw
OwotfQotCi1kb3VibGUgVlJGaWVsZE9mVmlldzo6bGVmdERlZ3JlZXMoKSBjb25zdAotewotICAg
IHJldHVybiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRmllbGRPZlZpZXcuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VidnIvVlJGaWVsZE9mVmlldy5oCmluZGV4IDc3YzJhNzZiMDNmNTJkMzJkZDg4
MDBhNzlmODEwNzgwODc0ZjM0ZTAuLjUwYTMwYTk5NzkwZGEwMDRhMTQ1OWU0NTNiY2QzMTBiNTNl
ZGM2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJGaWVsZE9m
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJGaWVsZE9mVmlldy5o
CkBAIC0yNCw2ICsyNCw4IEBACiAgKi8KICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVlJQbGF0
Zm9ybURpc3BsYXkuaCIKKwogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogCkBAIC0zMSwxOCArMzMsMjkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBWUkZpZWxkT2ZWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8VlJGaWVsZE9mVmlldz4gewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8VlJGaWVsZE9mVmlldz4gY3JlYXRlKCkKKyAgICBzdGF0
aWMgUmVmPFZSRmllbGRPZlZpZXc+IGNyZWF0ZShWUlBsYXRmb3JtRGlzcGxheUluZm86OkZpZWxk
T2ZWaWV3IGZpZWxkT2ZWaWV3KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VlJGaWVsZE9mVmlldyk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZSRmllbGRPZlZp
ZXcoZmllbGRPZlZpZXcpKTsKICAgICB9CiAKLSAgICBkb3VibGUgdXBEZWdyZWVzKCkgY29uc3Q7
Ci0gICAgZG91YmxlIHJpZ2h0RGVncmVlcygpIGNvbnN0OwotICAgIGRvdWJsZSBkb3duRGVncmVl
cygpIGNvbnN0OwotICAgIGRvdWJsZSBsZWZ0RGVncmVlcygpIGNvbnN0OworICAgIGRvdWJsZSB1
cERlZ3JlZXMoKSBjb25zdCB7IHJldHVybiBtX3VwRGVncmVlczsgfTsKKyAgICBkb3VibGUgcmln
aHREZWdyZWVzKCkgY29uc3QgeyByZXR1cm4gbV9yaWdodERlZ3JlZXM7IH07CisgICAgZG91Ymxl
IGRvd25EZWdyZWVzKCkgY29uc3QgeyByZXR1cm4gbV9kb3duRGVncmVlczsgfTsKKyAgICBkb3Vi
bGUgbGVmdERlZ3JlZXMoKSBjb25zdCB7IHJldHVybiBtX2xlZnREZWdyZWVzOyB9OwogCiBwcml2
YXRlOgotICAgIFZSRmllbGRPZlZpZXcoKTsKKyAgICBWUkZpZWxkT2ZWaWV3KFZSUGxhdGZvcm1E
aXNwbGF5SW5mbzo6RmllbGRPZlZpZXcgZmllbGRPZlZpZXcpCisgICAgICAgIDogbV91cERlZ3Jl
ZXMoZmllbGRPZlZpZXcudXBEZWdyZWVzKQorICAgICAgICAsIG1fcmlnaHREZWdyZWVzKGZpZWxk
T2ZWaWV3LnJpZ2h0RGVncmVlcykKKyAgICAgICAgLCBtX2Rvd25EZWdyZWVzKGZpZWxkT2ZWaWV3
LmRvd25EZWdyZWVzKQorICAgICAgICAsIG1fbGVmdERlZ3JlZXMoZmllbGRPZlZpZXcubGVmdERl
Z3JlZXMpCisgICAgeworICAgIH0KKworICAgIGRvdWJsZSBtX3VwRGVncmVlczsKKyAgICBkb3Vi
bGUgbV9yaWdodERlZ3JlZXM7CisgICAgZG91YmxlIG1fZG93bkRlZ3JlZXM7CisgICAgZG91Ymxl
IG1fbGVmdERlZ3JlZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDIxMzM5Yjk5OTJjZTRjZTUwMDc3NmYxYmIwZDJjYjQ2Zjg0OWE4YjQuLjIzODNmYWEw
NzljZDI3YTg1YWQ3M2QyZjNjZTM0MjI0MGU1MThmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yOTMs
NyArMjkzLDYgQEAgTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXkuY3BwCiBNb2R1bGVzL3dlYnZyL1ZS
RGlzcGxheUNhcGFiaWxpdGllcy5jcHAKIE1vZHVsZXMvd2VidnIvVlJEaXNwbGF5RXZlbnQuY3Bw
CiBNb2R1bGVzL3dlYnZyL1ZSRXllUGFyYW1ldGVycy5jcHAKLU1vZHVsZXMvd2VidnIvVlJGaWVs
ZE9mVmlldy5jcHAKIE1vZHVsZXMvd2VidnIvVlJGcmFtZURhdGEuY3BwCiBNb2R1bGVzL3dlYnZy
L1ZSUG9zZS5jcHAKIE1vZHVsZXMvd2VidnIvVlJTdGFnZVBhcmFtZXRlcnMuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvVlJQbGF0Zm9ybURpc3BsYXkuaAppbmRleCBhMzA5MmM2
MmM5Yzg4ZDc3YjY0MDA0YzA4ZWMyYmFhZTRiMjU2ZThhLi5iYWNhM2RjZjIwNzYyNzM5MzBjOWEz
Nzg5ZjllZmMxZmI4OTlmYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92
ci9WUlBsYXRmb3JtRGlzcGxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZS
UGxhdGZvcm1EaXNwbGF5LmgKQEAgLTIwLDYgKzIwLDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJGbG9hdFBvaW50M0QuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisKICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00
NCw2ICs0NywyMSBAQCBzdHJ1Y3QgVlJQbGF0Zm9ybURpc3BsYXlJbmZvIHsKICAgICBib29sIGlz
Q29ubmVjdGVkOwogICAgIGJvb2wgaXNNb3VudGVkOwogICAgIHVuc2lnbmVkIGNhcGFiaWxpdHlG
bGFnczsKKworICAgIGVudW0gRXllIHsgRXllTGVmdCA9IDAsIEV5ZVJpZ2h0LCBOdW1FeWVzIH07
CisgICAgRmxvYXRQb2ludDNEIGV5ZVRyYW5zbGF0aW9uW0V5ZTo6TnVtRXllc107CisKKyAgICBz
dHJ1Y3QgRmllbGRPZlZpZXcgeworICAgICAgICBkb3VibGUgdXBEZWdyZWVzOworICAgICAgICBk
b3VibGUgZG93bkRlZ3JlZXM7CisgICAgICAgIGRvdWJsZSBsZWZ0RGVncmVlczsKKyAgICAgICAg
ZG91YmxlIHJpZ2h0RGVncmVlczsKKyAgICB9IGV5ZUZpZWxkT2ZWaWV3W0V5ZTo6TnVtRXllc107
CisKKyAgICBzdHJ1Y3QgUmVuZGVyU2l6ZSB7CisgICAgICAgIHVuc2lnbmVkIHdpZHRoOworICAg
ICAgICB1bnNpZ25lZCBoZWlnaHQ7CisgICAgfSByZW5kZXJTaXplOwogfTsKIAogY2xhc3MgVlJQ
bGF0Zm9ybURpc3BsYXkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIv
b3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5jcHAKaW5kZXggNDFkNzZmMzFi
MDZmZTYxZmM5YzFlOWUxYTgzNDhjNDRlZWYwZDMyOS4uMGM3MWZlZDg5NmNiYTExOTljODRiYmNi
MDNiZGVlYjYxZTNjZjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIv
b3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuY3BwCkBAIC01MSw2ICs1
MSwzMSBAQCBWUlBsYXRmb3JtRGlzcGxheU9wZW5WUjo6VlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIo
dnI6OklWUlN5c3RlbSogc3lzdGVtLCB2cjo6SVZSQwogICAgICAgICBWUkRpc3BsYXlDYXBhYmls
aXR5RmxhZ3M6Ok9yaWVudGF0aW9uIHwKICAgICAgICAgVlJEaXNwbGF5Q2FwYWJpbGl0eUZsYWdz
OjpFeHRlcm5hbERpc3BsYXkgfAogICAgICAgICBWUkRpc3BsYXlDYXBhYmlsaXR5RmxhZ3M6OlBy
ZXNlbnQ7CisKKyAgICB1cGRhdGVFeWVQYXJhbWV0ZXJzKCk7Cit9CisKK1ZSUGxhdGZvcm1EaXNw
bGF5SW5mbzo6RmllbGRPZlZpZXcgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI6OmNvbXB1dGVGaWVs
ZE9mVmlldyh2cjo6SG1kX0V5ZSBleWUpCit7CisgICAgZmxvYXQgbGVmdCwgcmlnaHQsIHRvcCwg
Ym90dG9tOworICAgIC8qIE9wZW5WUiByZXR1cm5zIHRoZSB0YW5nZW50cyBvZiB0aGUgaGFsZi1h
bmdsZXMgZnJvbSB0aGUgY2VudGVyIHZpZXcgYXhpcy4gKi8KKyAgICBtX3N5c3RlbS0+R2V0UHJv
amVjdGlvblJhdyhzdGF0aWNfY2FzdDx2cjo6SG1kX0V5ZT4oZXllKSwgJmxlZnQsICZyaWdodCwg
JnRvcCwgJmJvdHRvbSk7CisgICAgcmV0dXJuIHsgLXJhZDJkZWcoYXRhbmYodG9wKSksIHJhZDJk
ZWcoYXRhbmYoYm90dG9tKSksIC1yYWQyZGVnKGF0YW5mKGxlZnQpKSwgcmFkMmRlZyhhdGFuZihy
aWdodCkpIH07Cit9CisKK3ZvaWQgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI6OnVwZGF0ZUV5ZVBh
cmFtZXRlcnMoKQoreworICAgIGZvciAodW5zaWduZWQgZXllID0gMDsgZXllIDwgVlJQbGF0Zm9y
bURpc3BsYXlJbmZvOjpOdW1FeWVzOyBleWUrKykgeworICAgICAgICBtX2Rpc3BsYXlJbmZvLmV5
ZUZpZWxkT2ZWaWV3W2V5ZV0gPSBjb21wdXRlRmllbGRPZlZpZXcoc3RhdGljX2Nhc3Q8dnI6Okht
ZF9FeWU+KGV5ZSkpOworCisgICAgICAgIHZyOjpIbWRNYXRyaXgzNF90IGV5ZVRvSGVhZCA9IG1f
c3lzdGVtLT5HZXRFeWVUb0hlYWRUcmFuc2Zvcm0oc3RhdGljX2Nhc3Q8dnI6OkhtZF9FeWU+KGV5
ZSkpOworICAgICAgICBtX2Rpc3BsYXlJbmZvLmV5ZVRyYW5zbGF0aW9uW2V5ZV0uc2V0KGV5ZVRv
SGVhZC5tWzBdWzNdLCBleWVUb0hlYWQubVsxXVszXSwgZXllVG9IZWFkLm1bMl1bM10pOworICAg
IH0KKworICAgIHVpbnQzMl90IHdpZHRoOworICAgIHVpbnQzMl90IGhlaWdodDsKKyAgICBtX3N5
c3RlbS0+R2V0UmVjb21tZW5kZWRSZW5kZXJUYXJnZXRTaXplKCZ3aWR0aCwgJmhlaWdodCk7Cisg
ICAgbV9kaXNwbGF5SW5mby5yZW5kZXJTaXplID0geyB3aWR0aCwgaGVpZ2h0IH07CiB9CiAKIH07
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oCmluZGV4IDM4NjZmNDUz
ZDRmNjgzMjExMWZmMjQ3NmNhMTg5YmEyNjNkMjNkMTkuLjFlODhiMDVhNDE4YTYyNDBmMDA3M2Nj
ZDViNDRiMWIxNTgyY2FiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Zy
L29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oCkBAIC0zMiw5ICszMiwx
MyBAQCBjbGFzcyBWUlBsYXRmb3JtRGlzcGxheU9wZW5WUiA6IHB1YmxpYyBWUlBsYXRmb3JtRGlz
cGxheSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIodnI6
OklWUlN5c3RlbSosIHZyOjpJVlJDaGFwZXJvbmUqLCB2cjo6SVZSQ29tcG9zaXRvciopOwogCisg
ICAgflZSUGxhdGZvcm1EaXNwbGF5T3BlblZSKCkgPSBkZWZhdWx0OwogICAgIFZSUGxhdGZvcm1E
aXNwbGF5SW5mbyBnZXREaXNwbGF5SW5mbygpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZGlzcGxheUlu
Zm87IH0KIAogcHJpdmF0ZToKKyAgICBWUlBsYXRmb3JtRGlzcGxheUluZm86OkZpZWxkT2ZWaWV3
IGNvbXB1dGVGaWVsZE9mVmlldyh2cjo6SG1kX0V5ZSk7CisgICAgdm9pZCB1cGRhdGVFeWVQYXJh
bWV0ZXJzKCk7CisKICAgICB2cjo6SVZSU3lzdGVtKiBtX3N5c3RlbTsKICAgICB2cjo6SVZSQ2hh
cGVyb25lKiBtX2NoYXBlcm9uZTsKICAgICB2cjo6SVZSQ29tcG9zaXRvciogbV9jb21wb3NpdG9y
Owo=
</data>
<flag name="review"
          id="353050"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>