<?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>162977</bug_id>
          
          <creation_ts>2016-10-05 10:33:30 -0700</creation_ts>
          <short_desc>[Win][Direct2D] Disable some CoreGraphics and CoreAnimation-based logic when building for D2D</short_desc>
          <delta_ts>2016-10-05 14:18:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>161817</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>dino</cc>
    
    <cc>pvollan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236699</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-05 10:33:30 -0700</bug_when>
    <thetext>Currently the Direct2D implementation does not support some of the accelerated compositing features that require CoreAnimation. During this bring-up, we want to disable these routines so that we can build and run in (mostly) unaccelerated drawing.

This change should have no impact on non-Direct2D ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236700</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-05 10:34:36 -0700</bug_when>
    <thetext>This patch also contains a few minor clean-ups and drive-by fixes I identified in initial D2D web browsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236753</commentid>
    <comment_count>2</comment_count>
      <attachid>290738</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-05 12:35:11 -0700</bug_when>
    <thetext>Created attachment 290738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236759</commentid>
    <comment_count>3</comment_count>
      <attachid>290738</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-05 12:44:53 -0700</bug_when>
    <thetext>Comment on attachment 290738
Patch

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

&gt; Source/WebCore/page/win/FrameWinDirect2D.cpp:44
&gt; +GDIObject&lt;HBITMAP&gt; imageFromRect(const Frame* frame, IntRect&amp; ir)

const Frame&amp; or null check

&gt; Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp:57
&gt; +    UNUSED_PARAM(mimeType);

this can be outside the if.

&gt; Source/WebCore/platform/win/DragImageDirect2D.cpp:77
&gt; +    IntSize dstSize(static_cast&lt;int&gt;(srcSize.width() * scale.width()), static_cast&lt;int&gt;(srcSize.height() * scale.height()));

I think this is wrong.  Shouldn&apos;t it be width*scale, height*scale?

&gt; Source/WebCore/platform/win/DragImageDirect2D.cpp:91
&gt; +    HWndDC dc(0);

nullptr here and elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236785</commentid>
    <comment_count>4</comment_count>
      <attachid>290738</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-05 14:17:42 -0700</bug_when>
    <thetext>Comment on attachment 290738
Patch

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

&gt;&gt; Source/WebCore/page/win/FrameWinDirect2D.cpp:44
&gt;&gt; +GDIObject&lt;HBITMAP&gt; imageFromRect(const Frame* frame, IntRect&amp; ir)
&gt; 
&gt; const Frame&amp; or null check

Done. I&apos;m stuck with the signature for now based on existing code.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp:57
&gt;&gt; +    UNUSED_PARAM(mimeType);
&gt; 
&gt; this can be outside the if.

Done.

&gt;&gt; Source/WebCore/platform/win/DragImageDirect2D.cpp:77
&gt;&gt; +    IntSize dstSize(static_cast&lt;int&gt;(srcSize.width() * scale.width()), static_cast&lt;int&gt;(srcSize.height() * scale.height()));
&gt; 
&gt; I think this is wrong.  Shouldn&apos;t it be width*scale, height*scale?

Scale can be asymmetric, so it is passed as a FloatSize. &apos;width()&apos; returns the scale in the X direction, &apos;height()&apos; returns the scaling factor in the Y direction.

&gt;&gt; Source/WebCore/platform/win/DragImageDirect2D.cpp:91
&gt;&gt; +    HWndDC dc(0);
&gt; 
&gt; nullptr here and elsewhere.

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236786</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-05 14:18:55 -0700</bug_when>
    <thetext>Committed r206830: &lt;http://trac.webkit.org/changeset/206830&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290738</attachid>
            <date>2016-10-05 12:35:11 -0700</date>
            <delta_ts>2016-10-05 12:44:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162977-20161005123159.patch</filename>
            <type>text/plain</type>
            <size>37830</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjgyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDE2LTEwLTA1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dW0RpcmVjdDJEXSBE
aXNhYmxlIHNvbWUgQ29yZUdyYXBoaWNzIGFuZCBDb3JlQW5pbWF0aW9uLWJhc2VkIGxvZ2ljIHdo
ZW4gYnVpbGRpbmcgZm9yIEQyRAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYyOTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ3VycmVudGx5IHRoZSBEaXJlY3QyRCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5v
dCBzdXBwb3J0IHNvbWUgb2YgdGhlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nCisgICAgICAgIGZl
YXR1cmVzIHRoYXQgcmVxdWlyZSBDb3JlQW5pbWF0aW9uLiBEdXJpbmcgdGhpcyBicmluZy11cCwg
d2Ugd2FudCB0byBkaXNhYmxlIHRoZXNlIHJvdXRpbmVzCisgICAgICAgIHNvIHRoYXQgd2UgY2Fu
IGJ1aWxkIGFuZCBydW4gaW4gKG1vc3RseSkgdW5hY2NlbGVyYXRlZCBkcmF3aW5nLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggbW9zdGx5IGNvbnNpc3RzIG9mIGFkZGluZyAiI2lmIFVTRShDRykiIGFu
ZCAiI2lmIFVTRShDQSkiIHRvIGZpbGVzIHRoYXQgYXJlCisgICAgICAgIHNwZWNpZmljIHRvIHRo
b3NlIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICBUaGlzIGNoYW5nZSBzaG91bGQgaGF2ZSBu
byBpbXBhY3Qgb24gbm9uLURpcmVjdDJEIHBvcnRzLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBi
ZWhhdmlvciBmb3IgYWN0aXZlIHBvcnRzLgorCisgICAgICAgICogY29uZmlnLmg6IFR1cm4gb2Yg
Q0cgd2hlbiBidWlsZGluZyBpbiBEaXJlY3QyRC4KKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VT
b3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgICogcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgICogcGFnZS93aW4vRnJhbWVD
R1dpbi5jcHA6CisgICAgICAgICogcGFnZS93aW4vRnJhbWVEaXJlY3QyRC5jcHA6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dFBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL1RpbGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9U
aWxlR3JpZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FBbmltYXRpb25XaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUZpbHRlcnNXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJp
bWFnZUNhY2hlV2l0aFRpbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udENHV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YUNHV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR2x5cGhQ
YWdlVHJlZU5vZGVDR1dpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ds
eXBoUGFnZVRyZWVOb2RlRGlyZWN0MkQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFkaWVudERpcmVjdDJELmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vUGF0aERpcmVjdDJELmNwcDogRml4IGEgZmV3IGJ1aWxkIHByb2JsZW1zIEkgZGlkbid0IG5v
dGljZQorICAgICAgICB3aGlsZSBidWlsZGluZyB3aXRob3V0IERpcmVjdDJEIGFjdGl2ZS4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDR1dpbi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhV2luLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VEaXJlY3QyRC5jcHA6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcDoKKwogMjAxNi0xMC0wNSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1pc3NpbmcgcXVvdGF0aW9uIG1hcmsgd2hlbiA8
cT4gZ2V0cyByZXBhcmVudGVkLgpJbmRleDogU291cmNlL1dlYkNvcmUvY29uZmlnLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29uZmlnLmgJKHJldmlzaW9uIDIwNjgxNykKKysrIFNv
dXJjZS9XZWJDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw4IEBACiAj
aWZuZGVmIF9XSU5TT0NLQVBJXwogI2RlZmluZSBfV0lOU09DS0FQSV8gLy8gUHJldmVudCBpbmNs
dXNpb24gb2Ygd2luc29jay5oIGluIHdpbmRvd3MuaAogI2VuZGlmCisjZWxpZiBVU0UoRElSRUNU
MkQpCisjdW5kZWYgVVNFX0NHCiAjZWxpZiAhVVNFKFdJTkdESSkKICNkZWZpbmUgVVNFX0NHIDEK
ICN1bmRlZiBVU0VfQ0FJUk8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcAkocmV2aXNpb24gMjA2ODE3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMTAgQEAKICNpbmNsdWRl
ICJTVkdVUklSZWZlcmVuY2UuaCIKICNlbmRpZgogCisjaWYgVVNFKERJUkVDVDJEKQorI2luY2x1
ZGUgPGR3cml0ZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIHZv
aWQgQ1NTRm9udEZhY2VTb3VyY2U6OnNldFN0YXR1cyhTdGF0dXMgbmV3U3RhdHVzKQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAkocmV2aXNpb24gMjA2
ODE3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCwxMCBAQAogI2luY2x1ZGUgIldPRkZGaWxlRm9ybWF0Lmgi
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgVVNFKERJUkVDVDJEKQorI2luY2x1ZGUg
PGR3cml0ZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVkRm9udDo6
Q2FjaGVkRm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZXNzaW9uSUQgc2Vz
c2lvbklELCBUeXBlIHR5cGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuY3BwCShyZXZpc2lvbiAyMDY4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQw
LDEwIEBACiAjaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oIgogCisjaWYgVVNFKERJUkVDVDJEKQorI2lu
Y2x1ZGUgPGR3cml0ZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVk
U1ZHRm9udDo6Q2FjaGVkU1ZHRm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBT
ZXNzaW9uSUQgc2Vzc2lvbklEKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHJldmlzaW9uIDIwNjgxNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CiAKKyNpZiAhVVNFKERJUkVDVDJEKQorCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUYuaCIKIAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCkBAIC05NjUsNCArOTY3
LDYgQEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBDYXB0aW9uVXNlclByZQogICAgIAogfQog
CisjZW5kaWYKKwogI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCShyZXZpc2lvbiAyMDY4MTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZyYW1lV2luLmgiCiAKKyNp
ZiBVU0UoQ0cpCisKICNpbmNsdWRlICJCaXRtYXBJbmZvLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgpAQCAtODMsMyArODUsNSBAQCBHRElPYmplY3Q8
SEJJVE1BUD4gaW1hZ2VGcm9tUmVjdChjb25zdCBGCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbkRpcmVj
dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbkRp
cmVjdDJELmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFt
ZVdpbkRpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJGcmFtZVdpbi5oIgorCisjaWYgVVNFKERJUkVDVDJEKQorCisjaW5jbHVk
ZSAiQml0bWFwSW5mby5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVTZWxl
Y3Rpb24uaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgor
I2luY2x1ZGUgPGQyZDEuaD4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL3dp
bi9HRElPYmplY3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHRElPYmplY3Q8SEJJVE1B
UD4gaW1hZ2VGcm9tUmVjdChjb25zdCBGcmFtZSogZnJhbWUsIEludFJlY3QmIGlyKQoreworICAg
IFBhaW50QmVoYXZpb3Igb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lLT52aWV3KCktPnBhaW50QmVo
YXZpb3IoKTsKKyAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVo
YXZpb3IgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKKworICAgIHZv
aWQqIGJpdHMgPSBudWxscHRyOworICAgIGF1dG8gaGRjID0gYWRvcHRHRElPYmplY3QoOjpDcmVh
dGVDb21wYXRpYmxlREMoMCkpOworICAgIGludCB3ID0gaXIud2lkdGgoKTsKKyAgICBpbnQgaCA9
IGlyLmhlaWdodCgpOworICAgIEJpdG1hcEluZm8gYm1wID0gQml0bWFwSW5mbzo6Y3JlYXRlKElu
dFNpemUodywgaCkpOworCisgICAgR0RJT2JqZWN0PEhCSVRNQVA+IGhibXAgPSBhZG9wdEdESU9i
amVjdCg6OkNyZWF0ZURJQlNlY3Rpb24oMCwgJmJtcCwgRElCX1JHQl9DT0xPUlMsIHN0YXRpY19j
YXN0PHZvaWQqKj4oJmJpdHMpLCAwLCAwKSk7CisgICAgaWYgKCFoYm1wKQorICAgICAgICByZXR1
cm4gaGJtcDsKKworICAgIEhHRElPQkogaGJtcE9sZCA9IFNlbGVjdE9iamVjdChoZGMuZ2V0KCks
IGhibXAuZ2V0KCkpOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKworICAgIFNlbGVjdE9iamVj
dChoZGMuZ2V0KCksIGhibXBPbGQpOworCisgICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhh
dmlvcihvbGRQYWludEJlaGF2aW9yKTsKKworICAgIHJldHVybiBoYm1wOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAJKHJldmlzaW9uIDIwNjgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMCBA
QAogI2luY2x1ZGUgIk9wZW5UeXBlVmVydGljYWxEYXRhLmgiCiAjZW5kaWYKIAorI2lmIFVTRShE
SVJFQ1QyRCkKKyNpbmNsdWRlIDxkd3JpdGUuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVuc2lnbmVkIEdseXBoUGFnZTo6c19jb3VudCA9IDA7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAJKHJldmlzaW9uIDIwNjgx
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDEwIEBACiAjaW5jbHVkZSAiT3BlblR5cGVWZXJ0aWNh
bERhdGEuaCIKICNlbmRpZgogCisjaWYgVVNFKERJUkVDVDJEKQorI2luY2x1ZGUgPGR3cml0ZS5o
PgorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9y
bURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuY3BwCShyZXZpc2lvbiAyMDY4MTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dGb250Lmg+CiAjZW5k
aWYKIAorI2lmIFVTRShESVJFQ1QyRCkKKyNpbmNsdWRlIDxkd3JpdGUuaD4KKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEo
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDIwNjgx
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NzksNyArNTc5LDYgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShE
SVJFQ1QyRCkKICAgICB2b2lkIHBsYXRmb3JtSW5pdChIREMsIElEMkQxUmVuZGVyVGFyZ2V0Kios
IFJFQ1QsIGJvb2wgaGFzQWxwaGEgPSBmYWxzZSk7Ci0gICAgdm9pZCBwbGF0Zm9ybUluaXQoSUQy
RDFSZW5kZXJUYXJnZXQqKTsKICAgICB2b2lkIGRyYXdXaXRob3V0U2hhZG93KGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJU
YXJnZXQqKT4mKTsKICAgICB2b2lkIGRyYXdXaXRoU2hhZG93KGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdSZWN0LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4m
KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcAkocmV2aXNpb24gMjA2ODE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw5IEBAIHZvaWQgSW1hZ2U6
OmZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0MKIAogdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdy
YXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCiB7CisjaWYgVVNFKERJUkVDVDJEKQorICAgIG5vdEltcGxlbWVudGVkKCk7CisjZWxz
ZQogICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiAgICAgaWYgKGNv
bG9yLmlzVmFsaWQoKSkgewogICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZGVzdFJl
Y3QsIGNvbG9yLCBvcCk7CkBAIC0xOTksNiArMjAyLDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYgYwogI2Vsc2UKICAgICBzdGFydEFuaW1hdGlvbigpOwogI2VuZGlm
CisjZW5kaWYKIH0KIAogLy8gRklYTUU6IE1lcmdlIHdpdGggdGhlIG90aGVyIGRyYXdUaWxlZCBl
dmVudHVhbGx5LCBzaW5jZSB3ZSBuZWVkIGEgY29tYmluYXRpb24gb2YgYm90aCBmb3Igc29tZSB0
aGluZ3MuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbkNGLmNwcAkocmV2aXNpb24gMjA2ODE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDE1IEBAIENETVNlc3Npb25BVkZvdW5kYXRpb25D
Rjo6Q0RNU2Vzc2lvbkFWRm8KIAogUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkZvdW5k
YXRpb25DRjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4
QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYg
ZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKIHsKKyNpZiBVU0UoRElSRUNUMkQpCisg
ICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsKKyAgICBVTlVTRURfUEFSQU0oaW5pdERhdGEpOwor
ICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvblVSTCk7CisgICAgVU5VU0VEX1BBUkFNKGVycm9y
Q29kZSk7CisgICAgVU5VU0VEX1BBUkFNKHN5c3RlbUNvZGUpOworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7CisjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtaW1lVHlw
ZSk7CiAKICAgICBTdHJpbmcga2V5VVJJOwpAQCAtMTAxLDYgKzExMCw3IEBAIFJlZlB0cjxVaW50
OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW8KIAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
a2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihr
ZXlSZXF1ZXN0LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGtleVJlcXVlc3QuZ2V0KCkpKTsKICAg
ICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKGtleVJlcXVlc3RCdWZmZXIsIDAsIGtleVJlcXVl
c3RCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisjZW5kaWYKIH0KIAogdm9pZCBDRE1TZXNzaW9uQVZG
b3VuZGF0aW9uQ0Y6OnJlbGVhc2VLZXlzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAkocmV2aXNp
b24gMjA2ODE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODYzLDcgKzg2MywxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpwCiAgICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEuMGYsIC0xLjBmKSk7CiAg
ICAgICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9u
TG93KTsKICAgICAgICAgRmxvYXRSZWN0IHBhaW50UmVjdChGbG9hdFBvaW50KCksIHJlY3Quc2l6
ZSgpKTsKKyNpZiBVU0UoRElSRUNUMkQpCisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisjZWxz
ZQogICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwg
Q0dSZWN0TWFrZSgwLCAwLCBwYWludFJlY3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdodCgpKSwg
aW1hZ2UuZ2V0KCkpOworI2VuZGlmCiAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgICAg
ICBpbWFnZSA9IDA7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZpc2lvbiAyMDY4MTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJHcmFwaGlj
c0xheWVyQ0EuaCIKIAorI2lmIFVTRShDQSkKKwogI2luY2x1ZGUgIkFuaW1hdGlvbi5oIgogI2lu
Y2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXIuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxh
eWVyLmgiCkBAIC0zOTkzLDMgKzM5OTUsNSBAQCBkb3VibGUgR3JhcGhpY3NMYXllckNBOjpiYWNr
aW5nU3RvcmVNZW1vCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllci5jcHAJKHJldmlzaW9uIDIwNjgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5
ZXIuaCIKIAorI2lmIFVTRShDQSkKKwogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CiAjaW5jbHVkZSA8Q29yZVRleHQvQ29yZVRleHQuaD4KICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRDRy5oIgpAQCAtMzgsOCArNDAsNiBAQAogI2luY2x1ZGUgIkNvcmVUZXh0U1BJ
V2luLmgiCiAjZW5kaWYKIAotI2lmIFVTRShDQSkKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGF0aWMgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGdlbmVyYXRlTGF5ZXJJRCgpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDY4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUaWxlQ29udHJvbGxl
ci5oIgogCisjaWYgVVNFKENHKQorCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKQEAgLTczNSwzICs3MzcsNSBA
QCB2b2lkIFRpbGVDb250cm9sbGVyOjpyZW1vdmVVbnBhcmVudGVkVGlsCiAjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAJKHJldmlzaW9uIDIwNjgxNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIFVTRShDRykKKwogI2luY2x1ZGUgIlRpbGVHcmlkLmgiCiAKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKQEAgLTc2MiwzICs3NjUsNSBAQCB2b2lkIFRpbGVHcmlkOjpyZW1vdmVVbnBh
cmVudGVkVGlsZXNOb3coCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdy
aWQuaAkocmV2aXNpb24gMjA2ODE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUdyaWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsOSBAQCBwdWJsaWM6
CiAgICAgVGlsZUdyaWQoVGlsZUNvbnRyb2xsZXImKTsKICAgICB+VGlsZUdyaWQoKTsKIAorI2lm
IFVTRShDQSkKICAgICBQbGF0Zm9ybUNBTGF5ZXImIGNvbnRhaW5lckxheWVyKCkgeyByZXR1cm4g
bV9jb250YWluZXJMYXllcjsgfQorI2VuZGlmCiAKICAgICB2b2lkIHNldElzWm9vbWVkT3V0VGls
ZUdyaWQoYm9vbCk7CiAKQEAgLTgzLDcgKzg1LDkgQEAgcHVibGljOgogICAgIGRvdWJsZSByZXRh
aW5lZFRpbGVCYWNraW5nU3RvcmVNZW1vcnkoKSBjb25zdDsKICAgICB1bnNpZ25lZCBibGFua1Bp
eGVsQ291bnQoKSBjb25zdDsKIAorI2lmIFVTRShDRykKICAgICB2b2lkIGRyYXdUaWxlTWFwQ29u
dGVudHMoQ0dDb250ZXh0UmVmLCBDR1JlY3QgbGF5ZXJCb3VuZHMpIGNvbnN0OworI2VuZGlmCiAK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZVbnBhcmVudGVkVGlsZXMo
KSBjb25zdCB7IHJldHVybiBtX2NvaG9ydExpc3Quc2l6ZSgpOyB9CkBAIC0xNTAsNyArMTU0LDkg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzVXNpbmdEaXNwbGF5TGlzdERyYXdpbmcoUGxhdGZvcm1D
QUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBUaWxlQ29udHJvbGxlciYgbV9jb250cm9s
bGVyOworI2lmIFVTRShDQSkKICAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBtX2NvbnRhaW5lckxh
eWVyOworI2VuZGlmCiAKICAgICB0eXBlZGVmIEhhc2hNYXA8VGlsZUluZGV4LCBUaWxlSW5mbz4g
VGlsZU1hcDsKICAgICBUaWxlTWFwIG1fdGlsZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9z
dC5jcHAJKHJldmlzaW9uIDIwNjgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDQUNGTGF5ZXJUcmVlSG9z
dC5oIgogCisjaWYgVVNFKENBKQorCiAjaW5jbHVkZSAiQ0FDRkxheWVyVHJlZUhvc3RDbGllbnQu
aCIKICNpbmNsdWRlICJEZWJ1Z1BhZ2VPdmVybGF5cy5oIgogI2luY2x1ZGUgIkRlZlduZFByb2NX
aW5kb3dDbGFzcy5oIgpAQCAtMzc0LDMgKzM3Niw1IEBAIHZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6
OnVwZGF0ZURlYnVnSW5mb0wKIH0KIAogfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFu
Z2VzRmx1c2hlci5jcHAJKHJldmlzaW9uIDIwNjgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxheWVy
Q2hhbmdlc0ZsdXNoZXIuaCIKIAorI2lmIFVTRShDQSkKKwogI2luY2x1ZGUgIkFic3RyYWN0Q0FD
RkxheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVkRXhjZXB0aW9uSGFuZGxlclN1
cHByZXNzb3IuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0xMjksMyArMTMx
LDUgQEAgdm9pZCBMYXllckNoYW5nZXNGbHVzaGVyOjpyZW1vdmVIb29rKCkKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5jcHAJKHJldmlzaW9uIDIwNjgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBQTEFURk9S
TShXSU4pCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0EpCiAjaW5jbHVkZSAiUGxhdGZvcm1D
QUFuaW1hdGlvbldpbi5oIgogCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlv
bldpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmgJKHJldmlzaW9uIDIwNjgxNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2lu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgUGxhdGZvcm1DQUFu
aW1hdGlvbldpbl9oCiAjZGVmaW5lIFBsYXRmb3JtQ0FBbmltYXRpb25XaW5faAogCi0jaWYgUExB
VEZPUk0oV0lOKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENBKQogCiAjaW5jbHVkZSAiUGxh
dGZvcm1DQUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBRmlsdGVyc1dp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1BsYXRmb3JtQ0FGaWx0ZXJzV2luLmNwcAkocmV2aXNpb24gMjA2ODE3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FGaWx0ZXJzV2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtQ0FGaWx0ZXJzLmgiCiAKKyNpZiBVU0UoQ0EpCisKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiB2b2lkIFBsYXRmb3JtQ0FGaWx0ZXJzOjpzZXRGaWx0ZXJzT25M
YXllcihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVy
cykKQEAgLTQ0LDMgKzQ2LDUgQEAgY29uc3QgY2hhciogUGxhdGZvcm1DQUZpbHRlcnM6OmFuaW1h
dGVkRgogICAgIC8vIEhhcmR3YXJlIGZpbHRlciBhbmltYXRpb24gbm90IGltcGxlbWVudGVkIG9u
IFdpbmRvd3MuCiAgICAgcmV0dXJuICIiOwogfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBTGF5ZXJXaW4uY3BwCShyZXZpc2lvbiAyMDY4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsOCBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyV2luLmgiCiAK
KyNpZiBVU0UoQ0EpCisKICNpbmNsdWRlICJBYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0LmgiCiAj
aW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJHRElVdGlsaXRpZXMuaCIKQEAgLTk1
MywzICs5NTUsNSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6ZHJhd1RleHRBdFBvaW50CiAg
ICAgY2cuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAgICAgY2cuZHJhd1RleHQoZm9udCwg
VGV4dFJ1bih0ZXh0KSwgSW50UG9pbnQoeCwgeSkpOwogfQorCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRl
cm5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcAkocmV2aXNpb24gMjA2ODE3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXll
cldpbkludGVybmFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOCBAQAogCiAjaW5j
bHVkZSAiUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuaCIKIAorI2lmIFVTRShDQSkKKwogI2lu
Y2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCkBAIC0zMjMsMyArMzI1LDUgQEAgdm9pZCBQbGF0Zm9y
bUNBTGF5ZXJXaW5JbnRlcm5hbDo6c2V0Qm9yZAogCiAgICAgQ0FDRkxheWVyU2V0Qm9yZGVyQ29s
b3Iob3duZXIoKS0+cGxhdGZvcm1MYXllcigpLCBjb2xvci5nZXQoKSk7CiB9CisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdM
YXllclRyZWVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCShyZXZpc2lvbiAyMDY4
MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmll
d0xheWVyVHJlZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuaCIKIAor
I2lmIFVTRShDQSkKKwogI2luY2x1ZGUgIkdESVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtQ0FMYXllci5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCkBAIC0xOTcsMyArMTk5LDUg
QEAgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBXS0NBQ0ZWaWV3TGF5ZXJUcgogI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJh
Y2tpbmdMYXllcldpbi5jcHAJKHJldmlzaW9uIDIwNjgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXZWJUaWxlZEJhY2tpbmdMYXllcldpbi5oIgogCisjaWYgVVNFKENBKQorCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW5jbHVk
ZSAiVGlsZUNvbnRyb2xsZXIuaCIKQEAgLTE4MCwzICsxODIsNSBAQCB2b2lkIFdlYlRpbGVkQmFj
a2luZ0xheWVyV2luOjppbnZhbGlkYXRlCiAgICAgQVNTRVJUKG1fdGlsZUNvbnRyb2xsZXIpOwog
ICAgIG1fdGlsZUNvbnRyb2xsZXIgPSBudWxscHRyOwogfQorCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCShy
ZXZpc2lvbiAyMDY4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFkaWVudENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAKKyNpZiBVU0UoQ0cpCisKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3Jh
cGhpY3MuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xMDUsMyArMTA3LDUgQEAg
dm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIGNvbnRleAogfQogCiB9IC8vbmFtZXNw
YWNlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMjA2ODE3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKIAorI2lmIFVTRShDRykKKwogI2luY2x1
ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgogI2lu
Y2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXIuaCIKQEAgLTEwNDgsNyArMTA1MCw2IEBAIEludFJl
Y3QgR3JhcGhpY3NDb250ZXh0OjpjbGlwQm91bmRzKCkgY28KICAgICAgICAgcmV0dXJuIEludFJl
Y3QoLTIwNDgsIC0yMDQ4LCA0MDk2LCA0MDk2KTsgLy8gRklYTUU6IGRpc3BsYXkgbGlzdHMuCiAg
ICAgfQogCi0KICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChDR0NvbnRleHRHZXRDbGlwQm91
bmRpbmdCb3gocGxhdGZvcm1Db250ZXh0KCkpKTsKIH0KIApAQCAtMTkwNSwzICsxOTA2LDUgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtU3Ryb2tlRWxsaQogfQogCiB9CisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAJKHJldmlzaW9uIDIwNjgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKIAorI2lmIFVTRShDRykKKwogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKQEAgLTU5
MSwzICs1OTMsNSBAQCBTdHJpbmcgSW1hZ2VEYXRhVG9EYXRhVVJMKGNvbnN0IEltYWdlRGF0CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cu
Y3BwCShyZXZpc2lvbiAyMDY4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDgg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckRhdGEuaCIKIAor
I2lmIFVTRShDRykKKwogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CkBAIC01NDQs
MyArNTQ2LDUgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoVWludDhDbGFtcAogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJ
KHJldmlzaW9uIDIwNjgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
ICJMZW5ndGguaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhp
Y3MvQ0dDb250ZXh0Lmg+CkBAIC0zNDQsOCArMzQ1LDEyIEBAIHZvaWQgUERGRG9jdW1lbnRJbWFn
ZTo6ZHJhd1BERlBhZ2UoR3JhcGgKIAogICAgIGNvbnRleHQudHJhbnNsYXRlKC1tX2Nyb3BCb3gu
eCgpLCAtbV9jcm9wQm94LnkoKSk7CiAKKyNpZiBVU0UoRElSRUNUMkQpCisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyNlbHNlCiAgICAgLy8gQ0dQREYgcGFnZXMgYXJlIGluZGV4ZWQgZnJvbSAxLgog
ICAgIENHQ29udGV4dERyYXdQREZQYWdlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIENHUERG
RG9jdW1lbnRHZXRQYWdlKG1fZG9jdW1lbnQuZ2V0KCksIDEpKTsKKyNlbmRpZgogfQogCiAjZW5k
aWYgLy8gIVVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAJKHJldmlzaW9u
IDIwNjgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCiAKKyNpZiBVU0UoQ0cpCisKICNpbmNsdWRlICJBZmZp
bmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIApAQCAtOTAsMyAr
OTIsNSBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0CiB9CiAKIH0K
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJp
bWFnZUNhY2hlV2l0aFRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcAkocmV2aXNpb24gMjA2
ODE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCiAKKyNpZiBV
U0UoQ0cpCisKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBDQUNIRV9TVUJJTUFHRVMK
QEAgLTExNCwzICsxMTYsNSBAQCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyJiBzdWJpbWFnZUNhY2hl
KCkKIH0KIAogI2VuZGlmCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAJKHJldmlzaW9uIDIwNjgxNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRm9udENhc2NhZGUuaCIKIAorI2lmIFVTRShDRykKKwogI2luY2x1ZGUgIkFmZmluZVRyYW5z
Zm9ybS5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZvbnQuaCIK
QEAgLTIxOCwzICsyMjAsNSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNz
Q29uCiB9CiAKIH0KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNHV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNHV2luLmNwcAko
cmV2aXNpb24gMjA2ODE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDgg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAK
KyNpZiBVU0UoQ0cpCisKICNpbmNsdWRlICJTaGFyZWRHRElPYmplY3QuaCIKICNpbmNsdWRlIDxB
cHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRlIDxXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CkBAIC0xMzUsMyArMTM3
LDUgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoYwogfQogCiB9CisK
KyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBo
UGFnZVRyZWVOb2RlQ0dXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNHV2luLmNwcAkocmV2aXNpb24gMjA2
ODE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRy
ZWVOb2RlQ0dXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR2x5cGhQYWdlLmgiCiAKKyNpZiBVU0UoQ0cpCisKICNp
bmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5
c3RlbUludGVyZmFjZS5oPgogCkBAIC01OCwzICs2MCw1IEBAIGJvb2wgR2x5cGhQYWdlOjpmaWxs
KFVDaGFyKiBidWZmZXIsIHVuc2kKIH0KIAogfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZURpcmVjdDJELmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR2x5cGhQ
YWdlVHJlZU5vZGVEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDIwNjgxNykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZURpcmVjdDJELmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmIFVTRShESVJFQ1QyRCkKIAogI2lu
Y2x1ZGUgIkZvbnQuaCIKLSNpbmNsdWRlICJUZXh0QW5hbHlzaXNIZWxwZXIuaCIKKyNpbmNsdWRl
ICJUZXh0QW5hbHl6ZXJIZWxwZXIuaCIKICNpbmNsdWRlIDxkd3JpdGUuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YWRpZW50RGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFkaWVudERpcmVjdDJELmNwcAkocmV2aXNpb24gMjA2ODE3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgR3JhZGllbnQ6OmZpbGwoR3Jh
cGhpY3NDb250ZXh0KiBjb24KICAgICAgICAgLy8gZm9yIHdoaWNoIG1fcDAgPT0gbV9wMS4KICAg
ICAgICAgQVNTRVJUKG1fcDAgPT0gbV9wMSk7CiAKLSAgICAgICAgRDJEMV9NQVRSSVhfM1gyX0Yg
Y3RtOworICAgICAgICBEMkQxX01BVFJJWF8zWDJfRiBjdG0gPSB7IH07CiAgICAgICAgIGQyZENv
bnRleHQtPkdldFRyYW5zZm9ybSgmY3RtKTsKIAogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJh
bnNmb3JtKGN0bSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
UGF0aERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vUGF0aERpcmVjdDJELmNwcAkocmV2aXNpb24gMjA2ODE3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzNiwxNCArMzM2LDE0IEBAIHZvaWQgUGF0aDo6YWRkQXJjVG8oY29uc3QgRmxv
YXRQb2ludCYgcDEKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1zdGF0aWMgZXF1YWxSYWRp
dXNXaWR0aHMoY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUm
IHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0
IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpCitzdGF0aWMgYm9vbCBlcXVhbFJhZGl1c1dp
ZHRocyhjb25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9w
UmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxv
YXRTaXplJiBib3R0b21SaWdodFJhZGl1cykKIHsKICAgICByZXR1cm4gdG9wTGVmdFJhZGl1cy53
aWR0aCgpID09IHRvcFJpZ2h0UmFkaXVzLndpZHRoKCkKICAgICAgICAgJiYgdG9wUmlnaHRSYWRp
dXMud2lkdGgoKSA9PSBib3R0b21MZWZ0UmFkaXVzLndpZHRoKCkKICAgICAgICAgJiYgYm90dG9t
TGVmdFJhZGl1cy53aWR0aCgpID09IGJvdHRvbVJpZ2h0UmFkaXVzLndpZHRoKCk7CiB9CiAKLXN0
YXRpYyBlcXVhbFJhZGl1c0hlaWdodHMoY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBj
b25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxl
ZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpCitzdGF0aWMgYm9v
bCBlcXVhbFJhZGl1c0hlaWdodHMoY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25z
dCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRS
YWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpCiB7CiAgICAgcmV0dXJu
IHRvcExlZnRSYWRpdXMuaGVpZ2h0KCkgPT0gYm90dG9tTGVmdFJhZGl1cy5oZWlnaHQoKQogICAg
ICAgICAmJiBib3R0b21MZWZ0UmFkaXVzLmhlaWdodCgpID09IHRvcFJpZ2h0UmFkaXVzLmhlaWdo
dCgpCkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBQYXRoOjphZGRBcmMoY29uc3QgRmxvYXRQb2lu
dCYgY2VudAogICAgIGZsb2F0IGZpcnN0QXJjRW5kID0gc3RhcnRBbmdsZSArIG1heFN3ZWVwOwog
ICAgIGRyYXdBcmNTZWN0aW9uKG1fYWN0aXZlUGF0aC5nZXQoKSwgY2VudGVyLCByYWRpdXMsIHN0
YXJ0QW5nbGUsIGZpcnN0QXJjRW5kLCBjbG9ja3dpc2UpOwogCi0gICAgaWYgKGFyZUVzc2VudGlh
bGx5RXF1YWwoZmlyc3RBcmNFbmQsIGVuZEFuZ2xlKSkKKyAgICBpZiAoV1RGOjphcmVFc3NlbnRp
YWxseUVxdWFsKGZpcnN0QXJjRW5kLCBlbmRBbmdsZSkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGRyYXdBcmNTZWN0aW9uKG1fYWN0aXZlUGF0aC5nZXQoKSwgY2VudGVyLCByYWRpdXMsIGZpcnN0
QXJjRW5kLCBlbmRBbmdsZSwgY2xvY2t3aXNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YUNHV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDR1dpbi5j
cHAJKHJldmlzaW9uIDIwNjgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9TaW1wbGVGb250RGF0YUNHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnQuaCIKIAorI2lmIFVTRShD
RykKKwogI2luY2x1ZGUgIkNvcmVUZXh0U1BJV2luLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCkBAIC0xNTIsMyArMTU0LDUgQEAgZmxvYXQgRm9udDo6
cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIAogfQogCiB9CisKKyNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhV2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxl
Rm9udERhdGFXaW4uY3BwCShyZXZpc2lvbiAyMDY4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL3dpbi9HRElPYmplY3QuaD4KIAorI2lmIFVTRShESVJFQ1QyRCkKKyNpbmNsdWRlIDxkd3Jp
dGUuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGZsb2F0IGNTbWFs
bENhcHNGb250U2l6ZU11bHRpcGxpZXIgPSAwLjdmOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCShyZXZpc2lvbiAyMDY4MTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJh
Z0ltYWdlLmgiCiAKKyNpZiBVU0UoQ0cpCisKICNpbmNsdWRlICJCaXRtYXBJbmZvLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgpAQCAt
MTQ2LDMgKzE0OCw1IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW0K
IH0KICAgICAKIH0KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
RHJhZ0ltYWdlRGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VEaXJlY3QyRC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZURpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgorCisj
aWYgVVNFKERJUkVDVDJEKQorCisjaW5jbHVkZSAiQml0bWFwSW5mby5oIgorI2luY2x1ZGUgIkNh
Y2hlZEltYWdlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFdu
ZERDLmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
CisjaW5jbHVkZSA8ZDJkMS5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIGRlYWxsb2NDb250ZXh0KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5k
ZXJUYXJnZXQpCit7CisgICAgaWYgKHJlbmRlclRhcmdldCkKKyAgICAgICAgcmVuZGVyVGFyZ2V0
LT5SZWxlYXNlKCk7Cit9CisKK0dESU9iamVjdDxIQklUTUFQPiBhbGxvY0ltYWdlKEhEQyBkYywg
SW50U2l6ZSBzaXplLCBJRDJEMVJlbmRlclRhcmdldCoqIHRhcmdldFJlZikKK3sKKyAgICBCaXRt
YXBJbmZvIGJtcEluZm8gPSBCaXRtYXBJbmZvOjpjcmVhdGUoc2l6ZSk7CisKKyAgICBMUFZPSUQg
Yml0cyA9IG51bGxwdHI7CisgICAgYXV0byBoYm1wID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVE
SUJTZWN0aW9uKGRjLCAmYm1wSW5mbywgRElCX1JHQl9DT0xPUlMsICZiaXRzLCAwLCAwKSk7CisK
KyAgICBpZiAoIXRhcmdldFJlZiB8fCAhaGJtcCkKKyAgICAgICAgcmV0dXJuIGhibXA7CisKKyAg
ICAvLyBGSVhNRTogVXNlIEdESSBJbnRlcm9wIGxheWVyIHRvIGNyZWF0ZSBIQklUTUFQIGZyb20g
RDJEIEJpdG1hcAorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGhibXA7Cit9CisK
K0RyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2VSZWYsIEZsb2F0
U2l6ZSBzY2FsZSkKK3sKKyAgICAvLyBGSVhNRTogZHVlIHRvIHRoZSB3YXkgZHJhZyBpbWFnZXMg
YXJlIGRvbmUgb24gd2luZG93cyB3ZSBuZWVkIAorICAgIC8vIHRvIHByZXByb2Nlc3MgdGhlIGFs
cGhhIGNoYW5uZWwgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDY+CisgICAgaWYgKCFpbWFnZVJlZikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBHRElPYmplY3Q8SEJJVE1BUD4gaGJtcDsK
KyAgICBhdXRvIGltYWdlID0gYWRvcHRHRElPYmplY3QoaW1hZ2VSZWYpOworCisgICAgSW50U2l6
ZSBzcmNTaXplID0gZHJhZ0ltYWdlU2l6ZShpbWFnZS5nZXQoKSk7CisgICAgSW50U2l6ZSBkc3RT
aXplKHN0YXRpY19jYXN0PGludD4oc3JjU2l6ZS53aWR0aCgpICogc2NhbGUud2lkdGgoKSksIHN0
YXRpY19jYXN0PGludD4oc3JjU2l6ZS5oZWlnaHQoKSAqIHNjYWxlLmhlaWdodCgpKSk7CisKKyAg
ICBIV25kREMgZGMoMCk7CisgICAgYXV0byBkc3REQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRl
Q29tcGF0aWJsZURDKGRjKSk7CisgICAgaWYgKGRzdERDKQorICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOworCisgICAgaWYgKCFoYm1wKQorICAgICAgICBoYm1wLnN3YXAoaW1hZ2UpOworICAgIHJl
dHVybiBoYm1wLmxlYWsoKTsKK30KKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21J
bWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit7CisgICAgSFdu
ZERDIGRjKDApOworICAgIGF1dG8gd29ya2luZ0RDID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVD
b21wYXRpYmxlREMoZGMpKTsKKyAgICBpZiAoIXdvcmtpbmdEQykKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
ICAgIAorfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZWRpYUNvbnRyb2xzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVkaWFDb250cm9scy5jcHAJKHJldmlzaW9uIDIwNjgxNykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJlbmRlclRo
ZW1lLmgiCiAKQEAgLTEyOCw2ICsxMjksMTMgQEAgdm9pZCBSZW5kZXJNZWRpYUNvbnRyb2xzOjph
ZGp1c3RNZWRpYVNsaQogCiBib29sIFJlbmRlck1lZGlhQ29udHJvbHM6OnBhaW50TWVkaWFDb250
cm9sc1BhcnQoTWVkaWFDb250cm9sRWxlbWVudFR5cGUgcGFydCwgY29uc3QgUmVuZGVyT2JqZWN0
JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKKyNp
ZiBVU0UoRElSRUNUMkQpCisgICAgVU5VU0VEX1BBUkFNKHBhcnQpOworICAgIFVOVVNFRF9QQVJB
TShvKTsKKyAgICBVTlVTRURfUEFSQU0ocGFpbnRJbmZvKTsKKyAgICBVTlVTRURfUEFSQU0ocik7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyNlbHNlCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgc3dpdGNoIChwYXJ0
KSB7CkBAIC0yMTQsNyArMjIyLDcgQEAgYm9vbCBSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1l
ZGlhQ29udAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotCisjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
</data>
<flag name="review"
          id="313899"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>