<?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>57781</bug_id>
          
          <creation_ts>2011-04-04 13:22:20 -0700</creation_ts>
          <short_desc>[WinCairo] Get WebKit2 Up and Running</short_desc>
          <delta_ts>2014-01-28 20:15:12 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</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>
          <dependson>58242</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>379007</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2011-04-04 13:22:20 -0700</bug_when>
    <thetext>This bug tracks some changes needed to get a functioning WebKit2 layer working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379234</commentid>
    <comment_count>1</comment_count>
      <attachid>88166</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2011-04-04 17:10:03 -0700</bug_when>
    <thetext>Created attachment 88166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379815</commentid>
    <comment_count>2</comment_count>
      <attachid>88166</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-05 13:00:00 -0700</bug_when>
    <thetext>Comment on attachment 88166
Patch

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

Great stuff. Do you mind splitting out the Cairo specific bits from the Windows specific bits? I can review that section more easily and I believe it&apos;s a distinct change.

&gt; Source/WebKit2/Shared/API/c/cairo/WKGraphicsContextCairo.cpp:3
&gt; +/*
&gt; + * Copyright (C) 2011 Igalia SL All rights reserved.
&gt; + *

Is there something funky with your diff? This file is listed twice.

&gt; Source/WebKit2/Shared/API/c/cairo/WKGraphicsContextCairo.h:3
&gt; +/*
&gt; + * Copyright (C) 2011 Igalia SL All rights reserved.
&gt; + *

Here as well.

&gt; Source/WebKit2/Shared/cairo/ShareableBitmapCairo.cpp:45
&gt; +    cairo_surface_t* image = cairo_image_surface_create_for_data((unsigned char*)data(),
&gt; +                                               CAIRO_FORMAT_ARGB32,
&gt; +                                               m_size.width(), m_size.height(),
&gt; +                                               m_size.width() * 4);
&gt; +

Please fix the spacing here.

&gt; Source/WebKit2/Shared/cairo/ShareableBitmapCairo.cpp:48
&gt; +    cairo_t* bitmapContext = cairo_create(image);
&gt; +    cairo_surface_write_to_png(image, &quot;E:\\Projects\\dump_create.png&quot;);
&gt; +    cairo_surface_destroy(image);

I assume this is temporary. I hope so, because I don&apos;t have an E drive. :)

&gt; Source/WebKit2/Shared/cairo/ShareableBitmapCairo.cpp:53
&gt; +    cairo_translate(bitmapContext, 0, m_size.height());
&gt; +    cairo_scale(bitmapContext, 1, -1);
&gt; +

Is this still necessary for non-CG ports?

&gt; Source/WebKit2/Shared/cairo/ShareableBitmapCairo.cpp:66
&gt; +    cairo_pattern_t* pattern = cairo_pattern_create_for_surface(image);

Mind using a RefPtr here?

&gt; Source/WebKit2/Shared/cairo/ShareableBitmapCairo.cpp:120
&gt; +    cairo_surface_t* copy = copySurface(makeImage());

This is only used in one place, so you might as well move it inline. copySurface doesn&apos;t provide much extra description over makeImageCopy.

&gt; Source/WebKit2/Shared/cairo/ShareableBitmapCairo.cpp:133
&gt; +                                               CAIRO_FORMAT_ARGB32,
&gt; +                                               m_size.width(), m_size.height(),
&gt; +                                               m_size.width() * 4);
&gt; +

Please fix the spacing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383413</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2011-04-11 13:10:03 -0700</bug_when>
    <thetext>Some of this code will be landed under 58242.  Will revise this patch to reflect that after the other bug lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390783</commentid>
    <comment_count>4</comment_count>
      <attachid>88166</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-22 08:19:25 -0700</bug_when>
    <thetext>Comment on attachment 88166
Patch

Clearing the r? flag since we&apos;re waiting on another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957437</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-12-06 17:20:01 -0800</bug_when>
    <thetext>This isn&apos;t going to happen in the near future. Closing this ancient bug, and we can open a new one when this development is actually ongoing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88166</attachid>
            <date>2011-04-04 17:10:03 -0700</date>
            <delta_ts>2011-04-22 08:19:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57781-20110404171002.patch</filename>
            <type>text/plain</type>
            <size>33950</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyODkzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDQtMDQgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtXaW5DYWlyb10gR2V0IFdlYktpdDIgdXAgYW5kIHJ1bm5p
bmcsIHJldXNpbmcgdGhlIEd0ayBwb3J0IGxvZ2ljCisgICAgICAgIHdoZXJldmVyIHBvc3NpYmxl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3ODEK
KworICAgICAgICAqIFNoYXJlZC9BUEkvYy9jYWlybzogQWRkZWQuCisgICAgICAgICogU2hhcmVk
L0FQSS9jL2NhaXJvL1dLR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZ3RrL1dLR3JhcGhpY3NDb250ZXh0R3RrLmNwcC4KKyAg
ICAgICAgKFdLR3JhcGhpY3NDb250ZXh0R2V0Q2Fpcm9Db250ZXh0KToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvY2Fpcm8vV0tHcmFwaGljc0NvbnRleHRDYWlyby5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZ3RrL1dLR3JhcGhpY3NDb250ZXh0R3RrLmguCisgICAg
ICAgICogU2hhcmVkL0FQSS9jL2d0ay9XS0dyYXBoaWNzQ29udGV4dEd0ay5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogU2hhcmVkL0FQSS9jL2d0ay9XS0dyYXBoaWNzQ29udGV4dEd0ay5oOiBSZW1v
dmVkLgorICAgICAgICAqIFNoYXJlZC9MYXllclRyZWVDb250ZXh0Lmg6CisgICAgICAgICogU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAqIFNoYXJlZC9XZWJHcmFwaGljc0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQ6OldlYkdyYXBoaWNz
Q29udGV4dCk6CisgICAgICAgICogU2hhcmVkL1dlYkdyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAqIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdl
YktpdDo6cGFpbnRJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6cGFp
bnQpOgorICAgICAgICAoV2ViS2l0Ojpjb3B5U3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6bWFrZUltYWdlQ29weSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6bWFrZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlJbXBsOjp2aXNpYmlsaXR5RGlkQ2hhbmdlKToKKyAgICAg
ICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUltcGw6OnNlbmRVcGRhdGVCYWNraW5nU3RvcmVT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlJbXBsOjp3YWl0Rm9yQW5k
RGlzcGF0Y2hEaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHlJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhSW1wbDo6c2Vu
ZERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKToKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3By
b2o6CisKIDIwMTEtMDQtMDQgIEphZGUgSGFuICA8amFkZS5oYW5Abm9raWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9MYXllclRyZWVDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaAkocmV2aXNpb24gODI4MzkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTGF5ZXJUcmVlQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICsz
MSw2IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7CiB9
CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBMYXllclRyZWVDb250ZXh0IHsKQEAgLTU5LDYgKzU3LDQgQEAgaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBMYXllclRyZWVDbwogCiB9OwogCi0jZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCiAjZW5kaWYgLy8gTGF5ZXJUcmVlQ29udGV4dF9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCShyZXZpc2lvbiA4Mjgz
OSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNiArMzUsOCBAQAogCiAjaWYgUExBVEZPUk0oQ0cpCiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorI2VsaWYgUExBVEZPUk0oQ0FJUk8pCit0eXBlZGVmIHN0cnVjdCBfY2Fp
cm9fc3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7IAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTEwNSw2ICsxMDcsMTMgQEAgcHVibGljOgogICAgIC8vIFRoaXMgY3JlYXRlcyBhIENH
SW1hZ2VSZWYgdGhhdCBkaXJlY3RseSByZWZlcmVuY2VzIHRoZSBzaGFyZWQgYml0bWFwIGRhdGEu
CiAgICAgLy8gVGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0IHRoZSBj
b250ZW50cyBvZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCB3b24ndCBjaGFuZ2UuCiAgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IG1ha2VDR0ltYWdlKCk7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAg
ICAvLyBUaGlzIGNyZWF0ZXMgYSBjb3BpZWQgQml0bWFwSW1hZ2UgKG1vc3QgbGlrZWx5IGEgY29w
eS1vbi13cml0ZSkgb2YgdGhlIHNoYXJlYWJsZSBiaXRtYXAuCisgICAgY2Fpcm9fc3VyZmFjZV90
KiBtYWtlSW1hZ2VDb3B5KCk7CisKKyAgICAvLyBUaGlzIGNyZWF0ZXMgYSBCaXRtYXBJbWFnZSB0
aGF0IGRpcmVjdGx5IHJlZmVyZW5jZXMgdGhlIHNoYXJlZCBiaXRtYXAgZGF0YS4KKyAgICAvLyBU
aGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGNvbnRlbnRzIG9m
IHRoZSBzaGFyZWFibGUgYml0bWFwIHdvbid0IGNoYW5nZS4KKyAgICBjYWlyb19zdXJmYWNlX3Qq
IG1ha2VJbWFnZSgpOwogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViR3JhcGhpY3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gODI4MzkpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYkdyYXBoaWNzQ29udGV4dDo6
V2ViR3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KQogI2lm
IFBMQVRGT1JNKENHKQogICAgIDogbV9wbGF0Zm9ybUNvbnRleHQoZ3JhcGhpY3NDb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKSkKLSNlbGlmIFBMQVRGT1JNKEdUSykKKyNlbGlmIFBMQVRGT1JNKENB
SVJPKQogICAgIDogbV9wbGF0Zm9ybUNvbnRleHQoZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKSkKICNlbmRpZgogewpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdyYXBo
aWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJHcmFw
aGljc0NvbnRleHQuaAkocmV2aXNpb24gODI4MzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAKIAog
I2lmIFBMQVRGT1JNKENHKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbGlmIFBMQVRG
T1JNKEdUSykKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2VsaWYgUExBVEZPUk0oQ0FJUk8p
CisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDRykKICAg
ICBDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KCkgeyByZXR1cm4gbV9wbGF0Zm9ybUNvbnRl
eHQuZ2V0KCk7IH0KLSNlbGlmIFBMQVRGT1JNKEdUSykKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQog
ICAgIGNhaXJvX3QqIHBsYXRmb3JtQ29udGV4dCgpIHsgcmV0dXJuIG1fcGxhdGZvcm1Db250ZXh0
LmdldCgpOyB9CiAjZW5kaWYKIApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogCiAjaWYgUExB
VEZPUk0oQ0cpCiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gbV9wbGF0Zm9ybUNvbnRleHQ7
Ci0jZWxpZiBQTEFURk9STShHVEspCisjZWxpZiBQTEFURk9STShDQUlSTykKICAgICBSZWZQdHI8
Y2Fpcm9fdD4gbV9wbGF0Zm9ybUNvbnRleHQ7CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tHcmFwaGljc0NvbnRleHRDYWlyby5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NhaXJvL1dLR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCShyZXZpc2lvbiA4MjgzOSkJKGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL2d0ay9XS0dyYXBoaWNzQ29udGV4dEd0ay5jcHA6ODI4MzkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tHcmFwaGljc0NvbnRleHRDYWlyby5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2Fs
aWEgU0wgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV0tHcmFwaGljc0NvbnRleHRHdGsuaCIKKworI2luY2x1ZGUgIldLU2hh
cmVkQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkdyYXBoaWNzQ29udGV4dC5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCitjYWlyb190KiBXS0dyYXBoaWNzQ29udGV4dEdldEd0a0NvbnRl
eHQoV0tHcmFwaGljc0NvbnRleHRSZWYgZ3JhcGhpY3NDb250ZXh0UmVmKQoreworICAgIHJldHVy
biB0b0ltcGwoZ3JhcGhpY3NDb250ZXh0UmVmKS0+cGxhdGZvcm1Db250ZXh0KCk7Cit9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tHcmFwaGljc0NvbnRleHRDYWly
by5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NhaXJvL1dL
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL2NhaXJvL1dLR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgU0wg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBCcmVudCBGdWxnaGFt
IDxiZnVsZ2hhbUB3ZWJraXQub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNSwxNCArMjYsMTQgQEAKIAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0tH
cmFwaGljc0NvbnRleHRHdGsuaCIKKyNpbmNsdWRlICJXS0dyYXBoaWNzQ29udGV4dENhaXJvLmgi
CiAKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJHcmFwaGljc0Nv
bnRleHQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotY2Fpcm9fdCogV0tHcmFwaGlj
c0NvbnRleHRHZXRHdGtDb250ZXh0KFdLR3JhcGhpY3NDb250ZXh0UmVmIGdyYXBoaWNzQ29udGV4
dFJlZikKK2NhaXJvX3QqIFdLR3JhcGhpY3NDb250ZXh0R2V0Q2Fpcm9Db250ZXh0KFdLR3JhcGhp
Y3NDb250ZXh0UmVmIGdyYXBoaWNzQ29udGV4dFJlZikKIHsKICAgICByZXR1cm4gdG9JbXBsKGdy
YXBoaWNzQ29udGV4dFJlZiktPnBsYXRmb3JtQ29udGV4dCgpOwogfQpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL2NhaXJvL1dLR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tHcmFwaGljc0NvbnRl
eHRDYWlyby5oCShyZXZpc2lvbiA4MjgzOSkJKGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL2d0ay9XS0dyYXBoaWNzQ29udGV4dEd0ay5oOjgyODM5KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL2NhaXJvL1dLR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTTCBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLR3JhcGhpY3NDb250ZXh0
R3RrX2gKKyNkZWZpbmUgV0tHcmFwaGljc0NvbnRleHRHdGtfaAorCisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0Jhc2UuaD4KKworI2luY2x1ZGUgPGNhaXJvLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIGNhaXJvX3QqIFdLR3JhcGhpY3NDb250
ZXh0R2V0R3RrQ29udGV4dChXS0dyYXBoaWNzQ29udGV4dFJlZik7CisKKyNpZmRlZiBfX2NwbHVz
cGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0dyYXBoaWNzQ29udGV4dEd0a19oICovCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tHcmFwaGljc0NvbnRleHRD
YWlyby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9X
S0dyYXBoaWNzQ29udGV4dENhaXJvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvY2Fpcm8vV0tHcmFwaGljc0NvbnRleHRDYWlyby5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgU0wgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBCcmVudCBGdWxnaGFtIDxi
ZnVsZ2hhbUB3ZWJraXQub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Myw4ICsyNCw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBXS0dyYXBoaWNzQ29udGV4dEd0a19oCi0jZGVmaW5lIFdLR3JhcGhpY3NDb250ZXh0
R3RrX2gKKyNpZm5kZWYgV0tHcmFwaGljc0NvbnRleHRDYWlyb19oCisjZGVmaW5lIFdLR3JhcGhp
Y3NDb250ZXh0Q2Fpcm9faAogCiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIApAQCAtMzQs
MTAgKzM1LDEwIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1XS19FWFBPUlQgY2Fpcm9fdCog
V0tHcmFwaGljc0NvbnRleHRHZXRHdGtDb250ZXh0KFdLR3JhcGhpY3NDb250ZXh0UmVmKTsKK1dL
X0VYUE9SVCBjYWlyb190KiBXS0dyYXBoaWNzQ29udGV4dEdldENhaXJvQ29udGV4dChXS0dyYXBo
aWNzQ29udGV4dFJlZik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCiAKLSNlbmRp
ZiAvKiBXS0dyYXBoaWNzQ29udGV4dEd0a19oICovCisjZW5kaWYgLyogV0tHcmFwaGljc0NvbnRl
eHRDYWlyb19oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZ3RrL1dLR3Jh
cGhpY3NDb250ZXh0R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvZ3RrL1dLR3JhcGhpY3NDb250ZXh0R3RrLmNwcAkocmV2aXNpb24gODI4MzkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZ3RrL1dLR3JhcGhpY3NDb250ZXh0R3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IElnYWxpYSBTTCBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXS0dyYXBoaWNzQ29udGV4dEd0ay5oIgotCi0jaW5jbHVkZSAi
V0tTaGFyZWRBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViR3JhcGhpY3NDb250ZXh0LmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLWNhaXJvX3QqIFdLR3JhcGhpY3NDb250ZXh0R2V0R3Rr
Q29udGV4dChXS0dyYXBoaWNzQ29udGV4dFJlZiBncmFwaGljc0NvbnRleHRSZWYpCi17Ci0gICAg
cmV0dXJuIHRvSW1wbChncmFwaGljc0NvbnRleHRSZWYpLT5wbGF0Zm9ybUNvbnRleHQoKTsKLX0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9ndGsvV0tHcmFwaGljc0NvbnRleHRH
dGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZ3RrL1dLR3Jh
cGhpY3NDb250ZXh0R3RrLmgJKHJldmlzaW9uIDgyODM5KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL2d0ay9XS0dyYXBoaWNzQ29udGV4dEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFNMIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tHcmFwaGljc0NvbnRleHRHdGtfaAot
I2RlZmluZSBXS0dyYXBoaWNzQ29udGV4dEd0a19oCi0KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFz
ZS5oPgotCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4g
IkMiIHsKLSNlbmRpZgotCi1XS19FWFBPUlQgY2Fpcm9fdCogV0tHcmFwaGljc0NvbnRleHRHZXRH
dGtDb250ZXh0KFdLR3JhcGhpY3NDb250ZXh0UmVmKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19
Ci0jZW5kaWYKLQotI2VuZGlmIC8qIFdLR3JhcGhpY3NDb250ZXh0R3RrX2ggKi8KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJv
LmNwcAkocmV2aXNpb24gODI4MzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hh
cmVhYmxlQml0bWFwQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQnJlbnQgRnVsZ2hhbSA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMTMgKzM2LDEwNCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiAwOworICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiBpbiByZWxlYXNl
Qml0bWFwQ29udGV4dERhdGEuCisKKyAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlID0gY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoKHVuc2lnbmVkIGNoYXIqKWRhdGEoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FJUk9fRk9STUFU
X0FSR0IzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9zaXplLndpZHRoKCkgKiA0KTsKKworICAgIGNhaXJv
X3QqIGJpdG1hcENvbnRleHQgPSBjYWlyb19jcmVhdGUoaW1hZ2UpOworICAgIGNhaXJvX3N1cmZh
Y2Vfd3JpdGVfdG9fcG5nKGltYWdlLCAiRTpcXFByb2plY3RzXFxkdW1wX2NyZWF0ZS5wbmciKTsK
KyAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koaW1hZ2UpOworCisgICAgLy8gV2Ugd2FudCB0aGUg
b3JpZ2luIHRvIGJlIGluIHRoZSB0b3AgbGVmdCBjb3JuZXIgc28gd2UgZmxpcCB0aGUgYmFja2lu
ZyBzdG9yZSBjb250ZXh0LgorICAgIGNhaXJvX3RyYW5zbGF0ZShiaXRtYXBDb250ZXh0LCAwLCBt
X3NpemUuaGVpZ2h0KCkpOworICAgIGNhaXJvX3NjYWxlKGJpdG1hcENvbnRleHQsIDEsIC0xKTsK
KworICAgIHJldHVybiBhZG9wdFB0cihuZXcgR3JhcGhpY3NDb250ZXh0KGJpdG1hcENvbnRleHQp
KTsKIH0KIAotdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFBvaW50JiwgY29uc3QgSW50UmVjdCYpCitzdGF0aWMgdm9pZCBwYWludEltYWdlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSwgY29uc3QgSW50
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgY29udGV4dC5zYXZlKCk7CisKKyAgICBjYWlyb19zdXJmYWNlX3dy
aXRlX3RvX3BuZyhpbWFnZSwgIkU6XFxQcm9qZWN0c1xccGFpbnRfaW1hZ2UucG5nIik7CisKKyAg
ICAvLyBJZiB3ZSdyZSBkcmF3aW5nIGEgc3ViIHBvcnRpb24gb2YgdGhlIGltYWdlIG9yIHNjYWxp
bmcgdGhlbiBjcmVhdGUKKyAgICAvLyBhIHBhdHRlcm4gdHJhbnNmb3JtYXRpb24gb24gdGhlIGlt
YWdlIGFuZCBkcmF3IHRoZSB0cmFuc2Zvcm1lZCBwYXR0ZXJuLgorICAgIC8vIFRlc3QgdXNpbmcg
ZXhhbXBsZSBzaXRlIGF0IGh0dHA6Ly93d3cubWV5ZXJ3ZWIuY29tL2VyaWMvY3NzL2VkZ2UvY29t
cGxleHNwaXJhbC9kZW1vLmh0bWwKKyAgICBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4gPSBjYWly
b19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3VyZmFjZShpbWFnZSk7CisKKyAgICBjYWlyb19wYXR0ZXJu
X3NldF9leHRlbmQocGF0dGVybiwgQ0FJUk9fRVhURU5EX1BBRCk7CisKKyAgICBpbnQgd2lkdGgg
PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChpbWFnZSk7CisgICAgaW50IGhlaWdodCA9
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChpbWFnZSk7CisKKyAgICBmbG9hdCBzY2Fs
ZVggPSB3aWR0aCAvIHNyY1JlY3Qud2lkdGgoKTsKKyAgICBmbG9hdCBzY2FsZVkgPSBoZWlnaHQg
LyBzcmNSZWN0LmhlaWdodCgpOworICAgIGNhaXJvX21hdHJpeF90IG1hdHJpeCA9IHsgc2NhbGVY
LCAwLCAwLCBzY2FsZVksIHNyY1JlY3QueCgpLCBzcmNSZWN0LnkoKSB9OworICAgIGNhaXJvX3Bh
dHRlcm5fc2V0X21hdHJpeChwYXR0ZXJuLCAmbWF0cml4KTsKKworICAgIC8vIERyYXcgdGhlIGlt
YWdlLgorICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBj
YWlyb190cmFuc2xhdGUoY3IsIGRlc3RpbmF0aW9uLngoKSwgZGVzdGluYXRpb24ueSgpKTsKKyAg
ICBjYWlyb19zZXRfc291cmNlKGNyLCBwYXR0ZXJuKTsKKyAgICBjYWlyb19wYXR0ZXJuX2Rlc3Ry
b3kocGF0dGVybik7CisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCBzcmNSZWN0LndpZHRo
KCksIHNyY1JlY3QuaGVpZ2h0KCkpOworICAgIGNhaXJvX2NsaXAoY3IpOworICAgIGNhaXJvX3Bh
aW50X3dpdGhfYWxwaGEoY3IsIGNvbnRleHQuZ2V0QWxwaGEoKSk7CisKKyAgICBjb250ZXh0LnJl
c3RvcmUoKTsKIH0KLSAgICAgICAgCisKK3ZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkc3RQb2ludCwgY29uc3QgSW50
UmVjdCYgc3JjUmVjdCkKK3sKKyAgICBwYWludEltYWdlKGNvbnRleHQsIG1ha2VJbWFnZUNvcHko
KSwgZHN0UG9pbnQsIHNyY1JlY3QpOworfQorCisvLyBDYWlybyBkb2Vzbid0IHByb3ZpZGUgYSB3
YXkgdG8gY29weSBhIGNhaXJvX3N1cmZhY2VfdC4KKy8vIFNlZSBodHRwOi8vbGlzdHMuY2Fpcm9n
cmFwaGljcy5vcmcvYXJjaGl2ZXMvY2Fpcm8vMjAwNy1KdW5lLzAxMDg3Ny5odG1sCisvLyBPbmNl
IGNhaXJvIHByb3ZpZGVzIHRoZSB3YXksIHVzZSB0aGUgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGlz
Lgorc3RhdGljIGlubGluZSBjYWlyb19zdXJmYWNlX3QqIGNvcHlTdXJmYWNlKGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSkKK3sKKyAgICBjYWlyb19zdXJmYWNlX3dyaXRlX3RvX3BuZyhzdXJmYWNl
LCAiRTpcXFByb2plY3RzXFxvbGRTdXJmYWNlLnBuZyIpOworCisgICAgY2Fpcm9fZm9ybWF0X3Qg
Zm9ybWF0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZm9ybWF0KHN1cmZhY2UpOworICAgIGlu
dCB3aWR0aCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpOworICAgIGlu
dCBoZWlnaHQgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSk7CisgICAg
Y2Fpcm9fc3VyZmFjZV90KiBuZXdzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUo
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIGNhaXJvX3QqIGNyID0gY2Fpcm9fY3JlYXRl
KG5ld3N1cmZhY2UpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZSwg
MCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0Up
OworICAgIGNhaXJvX3BhaW50KGNyKTsKKyAgICBjYWlyb19kZXN0cm95KGNyKTsKKworICAgIGNh
aXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nKG5ld3N1cmZhY2UsICJFOlxcUHJvamVjdHNcXGNvcHlT
dXJmYWNlLnBuZyIpOworCisgICAgcmV0dXJuIG5ld3N1cmZhY2U7Cit9CisKK2NhaXJvX3N1cmZh
Y2VfdCogU2hhcmVhYmxlQml0bWFwOjptYWtlSW1hZ2VDb3B5KCkKK3sKKyAgICBjYWlyb19zdXJm
YWNlX3QqIGNvcHkgPSBjb3B5U3VyZmFjZShtYWtlSW1hZ2UoKSk7CisKKyAgICBjYWlyb19zdXJm
YWNlX3dyaXRlX3RvX3BuZyhjb3B5LCAiRTpcXFByb2plY3RzXFxtYWtlSW1hZ2VDb3B5LnBuZyIp
OworCisgICAgcmV0dXJuIGNvcHk7Cit9CisKK2NhaXJvX3N1cmZhY2VfdCogU2hhcmVhYmxlQml0
bWFwOjptYWtlSW1hZ2UoKQoreworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19p
bWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgodW5zaWduZWQgY2hhciopZGF0YSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQUlST19GT1JNQVRf
QVJHQjMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3NpemUud2lkdGgoKSAqIDQpOworCisgICAgY2Fpcm9f
c3VyZmFjZV93cml0ZV90b19wbmcoaW1hZ2UsICJFOlxcUHJvamVjdHNcXG1ha2VJbWFnZS5wbmci
KTsKKworICAgIHJldHVybiBpbWFnZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgJKHJldmlzaW9u
IDgyODM5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiAjaWYgUExBVEZPUk0oUVQpCiBjbGFz
cyBRUGFpbnRlcjsKLSNlbGlmIFBMQVRGT1JNKEdUSykKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQog
dHlwZWRlZiBzdHJ1Y3QgX2NhaXJvIGNhaXJvX3Q7CiAjZW5kaWYKIApAQCAtNjAsNyArNjAsNyBA
QCB0eXBlZGVmIENHQ29udGV4dFJlZiBQbGF0Zm9ybURyYXdpbmdDb250CiB0eXBlZGVmIEhEQyBQ
bGF0Zm9ybURyYXdpbmdDb250ZXh0OwogI2VsaWYgUExBVEZPUk0oUVQpCiB0eXBlZGVmIFFQYWlu
dGVyKiBQbGF0Zm9ybURyYXdpbmdDb250ZXh0OwotI2VsaWYgUExBVEZPUk0oR1RLKQorI2VsaWYg
UExBVEZPUk0oQ0FJUk8pCiB0eXBlZGVmIGNhaXJvX3QqIFBsYXRmb3JtRHJhd2luZ0NvbnRleHQ7
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDgyODM5KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDggKzIyLDggQEAKIAogbWVzc2FnZXMgLT4gRHJhd2luZ0FyZWFQcm94eSB7CiAg
ICAgVXBkYXRlKHVpbnQ2NF90IHN0YXRlSUQsIFdlYktpdDo6VXBkYXRlSW5mbyB1cGRhdGVJbmZv
KQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBEaWRVcGRhdGVCYWNraW5n
U3RvcmVTdGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBXZWJLaXQ6OlVwZGF0ZUlu
Zm8gdXBkYXRlSW5mbywgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQpCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250
ZXh0IGNvbnRleHQpCiAgICAgRXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90
IGJhY2tpbmdTdG9yZVN0YXRlSUQsIFdlYktpdDo6VXBkYXRlSW5mbyB1cGRhdGVJbmZvKQogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5SW1wbC5jcHAJKHJldmlzaW9uIDgyODM5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDEyICsxMzYs
MTAgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6dmlzaWJpbGl0eURpZAogICAgIC8vIFJl
c3VtZSBwYWludGluZy4KICAgICBtX3dlYlBhZ2VQcm94eS0+cHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpEcmF3aW5nQXJlYTo6UmVzdW1lUGFpbnRpbmcoKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJ
RCgpKTsKIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAvLyBJZiB3ZSBk
b24ndCBoYXZlIGEgYmFja2luZyBzdG9yZSwgZ28gYWhlYWQgYW5kIG1hcmsgdGhlIGJhY2tpbmcg
c3RvcmUgYXMgYmVpbmcgY2hhbmdlZCBzbwogICAgIC8vIHRoYXQgd2hlbiBwYWludCB3ZSdsbCBh
Y3R1YWxseSB3YWl0IGZvciBzb21ldGhpbmcgdG8gcGFpbnQgYW5kIG5vdCBmbGFzaCB3aGl0ZS4K
ICAgICBpZiAoIW1fYmFja2luZ1N0b3JlICYmIG1fbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCkp
CiAgICAgICAgIGJhY2tpbmdTdG9yZVN0YXRlRGlkQ2hhbmdlKERvTm90UmVzcG9uZEltbWVkaWF0
ZWx5KTsKLSNlbmRpZgogfQogCiB2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpzZXRQYWdlSXNW
aXNpYmxlKGJvb2wpCkBAIC0yNjcsMTMgKzI2NSwxMSBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlJ
bXBsOjpzZW5kVXBkYXRlQmFjCiAgICAgbV93ZWJQYWdlUHJveHktPnByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6RHJhd2luZ0FyZWE6OlVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKG1fbmV4dEJhY2tp
bmdTdG9yZVN0YXRlSUQsIHJlc3BvbmRJbW1lZGlhdGVseU9yTm90ID09IFJlc3BvbmRJbW1lZGlh
dGVseSwgbV9zaXplLCBtX3Njcm9sbE9mZnNldCksIG1fd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7
CiAgICAgbV9zY3JvbGxPZmZzZXQgPSBJbnRTaXplKCk7CiAKLSNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgaWYgKG1faXNXYWl0aW5nRm9yRGlkVXBkYXRlQmFja2luZ1N0b3Jl
U3RhdGUgJiYgIW1fbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gV2Fp
dCBmb3IgdGhlIERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlIG1lc3NhZ2UuIE5vcm1hbGx5IHdl
IGRvbiB0aGlzIGluIERyYXdpbmdBcmVhUHJveHlJbXBsOjpwYWludCwgYnV0IHRoYXQKICAgICAg
ICAgLy8gZnVuY3Rpb24gaXMgbmV2ZXIgY2FsbGVkIHdoZW4gaW4gYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcgbW9kZS4KICAgICAgICAgd2FpdEZvckFuZERpc3BhdGNoRGlkVXBkYXRlQmFja2luZ1N0
b3JlU3RhdGUoKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZCBEcmF3aW5nQXJlYVByb3h5SW1w
bDo6d2FpdEZvckFuZERpc3BhdGNoRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUoKQpAQCAtMjg1
LDcgKzI4MSw2IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6OndhaXRGb3JBbmREaXMKICAg
ICBpZiAobV93ZWJQYWdlUHJveHktPnByb2Nlc3MoKS0+aXNMYXVuY2hpbmcoKSkKICAgICAgICAg
cmV0dXJuOwogCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIC8vIEZJWE1F
OiB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIG9s
ZGVzdCBEaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSBtZXNzYWdlIHRoYXQKICAgICAvLyBoYXNu
J3QgeWV0IGJlZW4gcHJvY2Vzc2VkLiBCdXQgaXQgbWlnaHQgYmUgYmV0dGVyIHRvIHNraXAgYWhl
YWQgdG8gc29tZSBvdGhlciBEaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZQogICAgIC8vIG1lc3Nh
Z2UsIGlmIG11bHRpcGxlIERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlIG1lc3NhZ2VzIGFyZSB3
YWl0aW5nIHRvIGJlIHByb2Nlc3NlZC4gRm9yIGluc3RhbmNlLCB3ZSBjb3VsZApAQCAtMjk0LDcg
KzI4OSw2IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6OndhaXRGb3JBbmREaXMKICAgICAv
LyBUaGUgdGltZW91dCwgaW4gc2Vjb25kcywgd2UgdXNlIHdoZW4gd2FpdGluZyBmb3IgYSBEaWRV
cGRhdGVCYWNraW5nU3RvcmVTdGF0ZSBtZXNzYWdlIHdoZW4gd2UncmUgYXNrZWQgdG8gcGFpbnQu
CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBkaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZVRpbWVv
dXQgPSAwLjU7CiAgICAgbV93ZWJQYWdlUHJveHktPnByb2Nlc3MoKS0+Y29ubmVjdGlvbigpLT53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6
RGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGU+KG1fd2ViUGFnZVByb3h5LT5wYWdlSUQoKSwgZGlk
VXBkYXRlQmFja2luZ1N0b3JlU3RhdGVUaW1lb3V0KTsKLSNlbmRpZgogfQogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHlJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgJKHJldmlzaW9uIDgyODM5KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDEwICs4OSw4IEBAIHByaXZhdGU6CiAgICAgLy8gd2hlbmV2ZXIgb3VyIHN0YXRlIGNoYW5n
ZXMgaW4gYSB3YXkgdGhhdCB3aWxsIHJlcXVpcmUgYSBuZXcgYmFja2luZyBzdG9yZSB0byBiZSBh
bGxvY2F0ZWQuCiAgICAgdWludDY0X3QgbV9uZXh0QmFja2luZ1N0b3JlU3RhdGVJRDsKIAotI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAvLyBUaGUgY3VycmVudCBsYXllciB0
cmVlIGNvbnRleHQuCiAgICAgTGF5ZXJUcmVlQ29udGV4dCBtX2xheWVyVHJlZUNvbnRleHQ7Ci0j
ZW5kaWYKIAogICAgIC8vIFdoZXRoZXIgd2UndmUgc2VudCBhIFVwZGF0ZUJhY2tpbmdTdG9yZVN0
YXRlIG1lc3NhZ2UgYW5kIGFyZSBub3cgd2FpdGluZyBmb3IgYSBEaWRVcGRhdGVCYWNraW5nU3Rv
cmVTdGF0ZSBtZXNzYWdlLgogICAgIC8vIFVzZWQgdG8gdGhyb3R0bGUgVXBkYXRlQmFja2luZ1N0
b3JlU3RhdGUgbWVzc2FnZXMgc28gd2UgZG9uJ3Qgc2VuZCB0aGVtIGZhc3RlciB0aGFuIHRoZSBX
ZWIgcHJvY2VzcyBjYW4gaGFuZGxlLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAJKHJldmlzaW9uIDgyODM5KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsNiBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6
c2VuZERpZFVwZGF0ZUJhY2tpCiAgICAgaWYgKCFtX2lzUGFpbnRpbmdTdXNwZW5kZWQgJiYgIW1f
bGF5ZXJUcmVlSG9zdCkKICAgICAgICAgZGlzcGxheSh1cGRhdGVJbmZvKTsKIAotI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBMYXllclRyZWVDb250ZXh0IGxheWVyVHJlZUNv
bnRleHQ7CiAKICAgICBpZiAobV9pc1BhaW50aW5nU3VzcGVuZGVkIHx8IG1fbGF5ZXJUcmVlSG9z
dCkgewpAQCAtMzIzLDcgKzMyMiw2IEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpzZW5kRGlkVXBk
YXRlQmFja2kKICAgICB9CiAKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdB
cmVhUHJveHk6OkRpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKG1fYmFja2luZ1N0b3JlU3RhdGVJ
RCwgdXBkYXRlSW5mbywgbGF5ZXJUcmVlQ29udGV4dCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgRHJh
d2luZ0FyZWFJbXBsOjpkaWRVcGRhdGUoKQpJbmRleDogU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJv
agkocmV2aXNpb24gODI4OTMpCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTExMjEsNiArMTEyMSw4MiBAQAogCQkJCQkJPgogCQkJCQk8L0Zp
bGU+CiAJCQkJPC9GaWx0ZXI+CisJCQkJPEZpbHRlcgorCQkJCQlOYW1lPSJjYWlybyIKKwkJCQkJ
PgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcQVBJXGNcY2Fpcm9c
V0tHcmFwaGljc0NvbnRleHRDYWlyby5jcHAiCisJCQkJCQk+CisJCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJCQk+CisJCQkJCQkJPFRvb2wKKwkJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJCQkvPgorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJPgorCQkJCQkJCTxUb29sCisJCQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJLz4KKwkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2lu
MzIiCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJPgorCQkJCQkJCTxU
b29sCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJLz4KKwkJCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQlOYW1l
PSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQkJCT4KKwkJCQkJCQk8VG9vbAorCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJCS8+CisJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxG
aWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxBUElcY1xjYWlyb1xXS0dyYXBoaWNz
Q29udGV4dENhaXJvLmgiCisJCQkJCQk+CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
CQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJCQk+CisJCQkJCQkJPFRvb2wKKwkJCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJ
CQkJCQkJLz4KKwkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQkJCT4KKwkJCQkJCQk8VG9vbAorCQkJCQkJCQlOYW1lPSJWQ0N1c3Rv
bUJ1aWxkVG9vbCIKKwkJCQkJCQkvPgorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCQk+CisJCQkJCQkJPFRvb2wKKwkJCQkJ
CQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkJCQkJLz4KKwkJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQlOYW1lPSJQcm9kdWN0
aW9ufFdpbjMyIgorCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJCT4KKwkJ
CQkJCQk8VG9vbAorCQkJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQkJCQkvPgor
CQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPC9GaWxlPgorCQkJCTwvRmlsdGVyPgog
CQkJPC9GaWx0ZXI+CiAJCQk8RmlsdGVyCiAJCQkJTmFtZT0iQ29yZUlQQ1N1cHBvcnQiCkBAIC0x
MTcyLDIyICsxMjQ4LDYgQEAKIAkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJl
ZFx3aW5cTGF5ZXJUcmVlQ29udGV4dFdpbi5jcHAiCiAJCQkJCT4KLQkJCQkJPEZpbGVDb25maWd1
cmF0aW9uCi0JCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxUb29sCi0JCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0J
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxU
b29sCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cU2hhcmVkXHdpblxOYXRpdmVXZWJLZXlib2FyZEV2ZW50V2luLmNwcCIKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgy
ODkzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTEtMDQtMDQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXaW5DYWlyb10gSW1w
bGVtZW50IGEgdGVzdCAnZGlzcGxheUhUTUwnIHJvdXRpbmUgdG8gcmVtb3ZlCisgICAgICAgIG5l
dHdvcmsgdHJhbnNwb3J0IGlzc3VlcyBmcm9tIGRlYnVnZ2luZyB0aGUgTWluaUJyb3dzZXIuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Nzc4MQorCisg
ICAgICAgICogTWluaUJyb3dzZXIvTWluaUJyb3dzZXIudmNwcm9qOgorICAgICAgICAqIE1pbmlC
cm93c2VyL3dpbi9Ccm93c2VyVmlldy5jcHA6CisgICAgICAgIChCcm93c2VyVmlldzo6Z29Ub1VS
TCk6CisgICAgICAgIChCcm93c2VyVmlldzo6ZGlzcGxheUhUTUwpOgorICAgICAgICAqIE1pbmlC
cm93c2VyL3dpbi9Ccm93c2VyVmlldy5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL3dpbi9Ccm93
c2VyV2luZG93LmNwcDoKKyAgICAgICAgKEJyb3dzZXJXaW5kb3c6OmRpc3BsYXlIVE1MKToKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci93aW4vQnJvd3NlcldpbmRvdy5oOgorICAgICAgICAqIE1pbmlC
cm93c2VyL3dpbi9NaW5pQnJvd3Nlci5jcHA6CisgICAgICAgIChNaW5pQnJvd3Nlcjo6Y3JlYXRl
TmV3V2luZG93KToKKyAgICAgICAgKiBXaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3Byb2o6CisK
IDIwMTEtMDQtMDQgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBPamFuIFZhZmFpLgpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvTWluaUJyb3dz
ZXIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2VyL01pbmlCcm93c2VyLnZj
cHJvagkocmV2aXNpb24gODI4MzkpCisrKyBUb29scy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci52
Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsNyBAQAogCQk8L0NvbmZpZ3VyYXRp
b24+CiAJCTxDb25maWd1cmF0aW9uCiAJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIi
CisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJQ29u
ZmlndXJhdGlvblR5cGU9IjEiCiAJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxDb25maWd1
cmF0aW9uc1xNaW5pQnJvd3NlckRlYnVnQ2Fpcm9DRkxpdGUudnNwcm9wcyIKIAkJCVVzZU9mQVRM
PSIxIgpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvd2luL0Jyb3dzZXJWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9NaW5pQnJvd3Nlci93aW4vQnJvd3NlclZpZXcuY3BwCShyZXZpc2lvbiA4
MjgzOSkKKysrIFRvb2xzL01pbmlCcm93c2VyL3dpbi9Ccm93c2VyVmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJyb3dzZXJXaW5kb3cuaCIKICNp
bmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dFByaXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
U3RyaW5nQ0YuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMQ0YuaD4KIAogc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHNob3J0IEhJR0hfQklUX01BU0tfU0hPUlQgPSAweDgwMDA7CkBAIC0xNDYsMyAr
MTQ3LDIyIEBAIHZvaWQgQnJvd3NlclZpZXc6OmdvVG9VUkwoY29uc3Qgc3RkOjp3c3QKICAgICBX
S1BhZ2VMb2FkVVJMKHBhZ2UsIHVybCk7CiAgICAgV0tSZWxlYXNlKHVybCk7CiB9CisKK3ZvaWQg
QnJvd3NlclZpZXc6OmRpc3BsYXlIVE1MKGNvbnN0IHN0ZDo6d3N0cmluZyYgaHRtbCkKK3sKKyAg
ICBDRlN0cmluZ1JlZiBodG1sU3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygw
LCAoY29uc3QgVW5pQ2hhciopaHRtbC5kYXRhKCksIGh0bWwuc2l6ZSgpKTsKKyAgICBXS1N0cmlu
Z1JlZiBzdHJpbmcgPSBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhodG1sU3RyaW5nKTsKKyAg
ICBDRlJlbGVhc2UoaHRtbFN0cmluZyk7CisKKyAgICBDRlN0cmluZ1JlZiBsb2NhbCA9IENGU3Ry
aW5nQ3JlYXRlV2l0aENTdHJpbmcoMCwgImZpbGU6Ly9FOi9Qcm9qZWN0cyIsIGtDRlN0cmluZ0Vu
Y29kaW5nQVNDSUkpOworICAgIENGVVJMUmVmIGNmVVJMID0gQ0ZVUkxDcmVhdGVXaXRoU3RyaW5n
KDAsIGxvY2FsLCAwKTsKKyAgICBDRlJlbGVhc2UobG9jYWwpOworCisgICAgV0tVUkxSZWYgdXJs
ID0gV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoY2ZVUkwpOworICAgIENGUmVsZWFzZShjZlVSTCk7IAor
CisgICAgV0tQYWdlUmVmIHBhZ2UgPSBXS1ZpZXdHZXRQYWdlKG1fd2ViVmlldyk7CisgICAgV0tQ
YWdlTG9hZEhUTUxTdHJpbmcocGFnZSwgc3RyaW5nLCB1cmwpOworICAgIFdLUmVsZWFzZShzdHJp
bmcpOworICAgIFdLUmVsZWFzZSh1cmwpOworfQpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvd2lu
L0Jyb3dzZXJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvd2luL0Jyb3dz
ZXJWaWV3LmgJKHJldmlzaW9uIDgyODM5KQorKysgVG9vbHMvTWluaUJyb3dzZXIvd2luL0Jyb3dz
ZXJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgcHVibGljOgogICAgIEJy
b3dzZXJWaWV3KCk7CiAKICAgICB2b2lkIGdvVG9VUkwoY29uc3Qgc3RkOjp3c3RyaW5nJiB1cmwp
OworICAgIHZvaWQgZGlzcGxheUhUTUwoY29uc3Qgc3RkOjp3c3RyaW5nJiBodG1sKTsKIAogICAg
IHZvaWQgY3JlYXRlKFJFQ1QsIEJyb3dzZXJXaW5kb3cqIHBhcmVudFdpbmRvdyk7CiAgICAgdm9p
ZCBzZXRGcmFtZShSRUNUKTsKSW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL3dpbi9Ccm93c2VyV2lu
ZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9NaW5pQnJvd3Nlci93aW4vQnJvd3NlcldpbmRv
dy5jcHAJKHJldmlzaW9uIDgyODM5KQorKysgVG9vbHMvTWluaUJyb3dzZXIvd2luL0Jyb3dzZXJX
aW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDExIEBAIHZvaWQgQnJvd3Nl
cldpbmRvdzo6Z29Ub1VSTChjb25zdCBzdGQ6OncKICAgICBtX2Jyb3dzZXJWaWV3LmdvVG9VUkwo
dXJsKTsKIH0KIAordm9pZCBCcm93c2VyV2luZG93OjpkaXNwbGF5SFRNTChjb25zdCBzdGQ6Ondz
dHJpbmcmIGh0bWwpCit7CisgICAgbV9icm93c2VyVmlldy5kaXNwbGF5SFRNTChodG1sKTsKK30K
Kwogdm9pZCBCcm93c2VyV2luZG93OjpvbkNyZWF0ZShMUENSRUFURVNUUlVDVCBjcmVhdGVTdHJ1
Y3QpCiB7CiAgICAgLy8gUmVnaXN0ZXIgb3VyIHdpbmRvdy4KSW5kZXg6IFRvb2xzL01pbmlCcm93
c2VyL3dpbi9Ccm93c2VyV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIv
d2luL0Jyb3dzZXJXaW5kb3cuaAkocmV2aXNpb24gODI4MzkpCisrKyBUb29scy9NaW5pQnJvd3Nl
ci93aW4vQnJvd3NlcldpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNob3dXaW5kb3coKTsKIAogICAgIHZvaWQgZ29Ub1VSTChjb25zdCBz
dGQ6OndzdHJpbmcmIHVybCk7CisgICAgdm9pZCBkaXNwbGF5SFRNTChjb25zdCBzdGQ6OndzdHJp
bmcmIGh0bWwpOwogCiAgICAgYm9vbCBoYW5kbGVNZXNzYWdlKGNvbnN0IE1TRyopOwogCkluZGV4
OiBUb29scy9NaW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3Nlci5jcHAJKHJldmlzaW9uIDgyODM5KQorKysg
VG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTEsMTEgKzUxLDEyIEBAIHZvaWQgTWluaUJyb3dzZXI6OmluaXRpYWxpemUoSElOU1RBTkNFIGkK
IHZvaWQgTWluaUJyb3dzZXI6OmNyZWF0ZU5ld1dpbmRvdygpCiB7CiAgICAgc3RhdGljIGNvbnN0
IHdjaGFyX3QqIGtEZWZhdWx0VVJMU3RyaW5nID0gTCJodHRwOi8vd2Via2l0Lm9yZy8iOworICAg
IHN0YXRpYyBjb25zdCB3Y2hhcl90KiBrRGVmYXVsdEhUTUwgPSBMIjxwIHN0eWxlPVwiYmFja2dy
b3VuZC1jb2xvcjogIzAwRkYwMFwiPlRlc3Rpbmc8L3A+PGltZyBzcmM9XCJodHRwOi8vd2Via2l0
Lm9yZy9pbWFnZXMvaWNvbi1nb2xkLnBuZ1wiIGFsdD1cIkZhY2VcIj48ZGl2IHN0eWxlPVwiYm9y
ZGVyOiBzb2xpZCBibHVlXCIgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiPmRpdiB3aXRoIGJsdWUg
Ym9yZGVyPC9kaXY+PHVsPjxsaT5mb288bGk+YmFyPGxpPmJhejwvdWw+IjsKIAogICAgIEJyb3dz
ZXJXaW5kb3cqIGJyb3dzZXJXaW5kb3cgPSBCcm93c2VyV2luZG93OjpjcmVhdGUoKTsKICAgICBi
cm93c2VyV2luZG93LT5jcmVhdGVXaW5kb3coMCwgMCwgODAwLCA2MDApOwogICAgIGJyb3dzZXJX
aW5kb3ctPnNob3dXaW5kb3coKTsKLSAgICBicm93c2VyV2luZG93LT5nb1RvVVJMKGtEZWZhdWx0
VVJMU3RyaW5nKTsKKyAgICBicm93c2VyV2luZG93LT5kaXNwbGF5SFRNTChrRGVmYXVsdEhUTUwp
OwogfQogCiB2b2lkIE1pbmlCcm93c2VyOjpyZWdpc3RlcldpbmRvdyhCcm93c2VyV2luZG93KiB3
aW5kb3cpCkluZGV4OiBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3Byb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmNwcm9qCShyZXZpc2lvbiA4
MjgzOSkKKysrIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjcHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBACiAJCTwvQ29uZmlndXJhdGlvbj4KIAkJPENvbmZpZ3Vy
YXRpb24KIAkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCUludGVybWVkaWF0
ZURpcmVjdG9yeT0iJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQlDb25maWd1cmF0aW9uVHlwZT0i
MSIKIAkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXFdpbkxhdW5jaGVyRGVidWdDYWlyb0NG
TGl0ZS52c3Byb3BzIgogCQkJQ2hhcmFjdGVyU2V0PSIxIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>