<?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>227238</bug_id>
          
          <creation_ts>2021-06-21 15:07:29 -0700</creation_ts>
          <short_desc>Use double instead of float where appropriate in HTML Canvas IDL</short_desc>
          <delta_ts>2021-06-21 17:23:20 -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>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=227146</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1771477</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-21 15:07:29 -0700</bug_when>
    <thetext>There are a lot of places in our HTML Canvas IDL where we&apos;re using float type, even though the specification is using double. Let&apos;s fix those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771479</commentid>
    <comment_count>1</comment_count>
      <attachid>431915</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-21 15:13:50 -0700</bug_when>
    <thetext>Created attachment 431915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771486</commentid>
    <comment_count>2</comment_count>
      <attachid>431915</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-21 15:24:44 -0700</bug_when>
    <thetext>Comment on attachment 431915
Patch

Let no one ever say bullying does not work. This proves it does ;). 

Thanks Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771493</commentid>
    <comment_count>3</comment_count>
      <attachid>431915</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-21 15:34:02 -0700</bug_when>
    <thetext>Comment on attachment 431915
Patch

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

&gt; Source/WebCore/inspector/InspectorCanvasCallTracer.h:155
&gt;      macro(std::optional&lt;float&gt;&amp;) \

Is this still needed anymore?

&gt; Source/WebCore/inspector/InspectorCanvasCallTracer.h:171
&gt;      macro(Vector&lt;float&gt;&amp;) \

Is this still needed anymore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771494</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-21 15:35:10 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #3)
&gt; Comment on attachment 431915 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=431915&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorCanvasCallTracer.h:155
&gt; &gt;      macro(std::optional&lt;float&gt;&amp;) \
&gt; 
&gt; Is this still needed anymore?
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorCanvasCallTracer.h:171
&gt; &gt;      macro(Vector&lt;float&gt;&amp;) \
&gt; 
&gt; Is this still needed anymore?

Yes, I tried to remove them and it failed to build. I believe this is because we still have some non-standard API using float and requiring those. I updated updated the &quot;standard&quot; API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771518</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-21 16:25:07 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #3)
&gt; Comment on attachment 431915 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=431915&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorCanvasCallTracer.h:155
&gt; &gt;      macro(std::optional&lt;float&gt;&amp;) \
&gt; 
&gt; Is this still needed anymore?
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorCanvasCallTracer.h:171
&gt; &gt;      macro(Vector&lt;float&gt;&amp;) \
&gt; 
&gt; Is this still needed anymore?

We really got to replace that with a non-macro version at some point. We have better technology.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771544</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-21 17:22:54 -0700</bug_when>
    <thetext>Committed r279093 (239010@main): &lt;https://commits.webkit.org/239010@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431915.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771545</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-21 17:23:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/79588170&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431915</attachid>
            <date>2021-06-21 15:13:50 -0700</date>
            <delta_ts>2021-06-21 17:22:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227238-20210621151349.patch</filename>
            <type>text/plain</type>
            <size>40192</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzYzMzM2NmNmNGZlZDUw
YzBlZWZhYzhjOGQ5ZDE4ZTk4OTA2ZDRmMi4uNDVhZGRlMTk3YzIxYTMyMWI0NDBlZmUzZTZhNmRj
MzAwMGNhZTU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTA2LTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGRvdWJsZSBpbnN0ZWFk
IG9mIGZsb2F0IHdoZXJlIGFwcHJvcHJpYXRlIGluIEhUTUwgQ2FudmFzIElETAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MjM4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgYXJlIGEgbG90IG9m
IHBsYWNlcyBpbiBvdXIgSFRNTCBDYW52YXMgSURMIHdoZXJlIHdlJ3JlIHVzaW5nIGZsb2F0IHR5
cGUsIGV2ZW4gdGhvdWdoCisgICAgICAgIHRoZSBzcGVjaWZpY2F0aW9uIGlzIHVzaW5nIGRvdWJs
ZS4gVGhpcyBwYXRjaCBmaXhlcyB0aG9zZS4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c0NvbXBvc2l0aW5nLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNEcmF3SW1hZ2Uu
aWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0RyYXdQYXRoLmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNHcmFkaWVudDo6YWRkQ29sb3JTdG9wKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNH
cmFkaWVudC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNQYXRoRHJhd2luZ1N0eWxlcy5pZGw6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVjdC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZmlsbFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzdHJva2VUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OnNldExpbmVXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRNaXRlckxpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6
OmxpbmVEYXNoU2VxdWVuY2VJc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OnNldExpbmVEYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFdlYmtpdExpbmVEYXNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldExpbmVEYXNoT2Zmc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldEdsb2Jh
bEFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OnJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
Ojp0cmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6dHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZVJlY3RG
b3JDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6aXNQb2ludEluUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjppc1BvaW50SW5TdHJva2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNQb2ludEluUGF0aEludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmlzUG9pbnRJblN0cm9rZUludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNs
ZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpzdHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmNhbkRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OmRyYXdUZXh0VW5jaGVja2VkKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpsaW5lV2lkdGggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bWl0ZXJMaW1pdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpnZXRMaW5l
RGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjp3ZWJraXRMaW5lRGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpsaW5lRGFzaE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpnbG9iYWxBbHBoYSBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU2hhZG93U3R5bGVzLmlkbDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9DYW52YXNUZXh0LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNU
cmFuc2Zvcm0uaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmZpbGxUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlVGV4dCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBcmd1bWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXIuaDoKKwogMjAyMS0wNi0yMSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIENTU09NIHRlc3QgZm9yIHNlcmlhbGl6aW5nIGZvbnQtdmFyaWFudCBmYWls
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29tcG9zaXRp
bmcuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29tcG9zaXRpbmcuaWRs
CmluZGV4IDMyMjQ2NzJkYWZkNGUwNTI4YmEwNjFlZTYyODY2MjFmNjE2YmZjMTYuLjU1YmVlMzNm
MTNmMTEzYTA1OGIzOGM2MmJhOGFjZWZkMGIyNDgxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc0NvbXBvc2l0aW5nLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNDb21wb3NpdGluZy5pZGwKQEAgLTI1LDkgKzI1LDcgQEAKIAog
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY2FudmFzLmh0bWwjY2Fu
dmFzY29tcG9zaXRpbmcKIGludGVyZmFjZSBtaXhpbiBDYW52YXNDb21wb3NpdGluZyB7Ci0gICAg
Ly8gRklYTUU6IEFsbCB0aGUgdW5yZXN0cmljdGVkIGZsb2F0IGF0dHJpYnV0ZXMgYmVsb3cgc2hv
dWxkIGJlIHVucmVzdHJpY3RlZCBkb3VibGVzLgotCiAgICAgLy8gY29tcG9zaXRpbmcKLSAgICBh
dHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IGdsb2JhbEFscGhhOyAvLyAoZGVmYXVsdCAxLjAp
CisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgZ2xvYmFsQWxwaGE7IC8vIChkZWZh
dWx0IDEuMCkKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGdsb2JhbENvbXBvc2l0ZU9wZXJhdGlv
bjsgLy8gKGRlZmF1bHQgc291cmNlLW92ZXIpCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd0ltYWdlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGwKaW5kZXggNjA2NTBmMzExNzVmZmRlOTUxNWEyYmI3
NGY3N2JmMTI3NmQ0NWQxYy4uOWE4ZWRiMzczYmNhY2E2NGQ3ZTE3YzM0ZTVkODE2MTc3MzYyMjA3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd0ltYWdl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3SW1hZ2UuaWRs
CkBAIC0zOCw4ICszOCw2IEBAIHR5cGVkZWYgKEhUTUxJbWFnZUVsZW1lbnQgb3IgSFRNTENhbnZh
c0VsZW1lbnQgb3IgSW1hZ2VCaXRtYXAKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvY2FudmFzLmh0bWwjY2FudmFzZHJhd2ltYWdlCiBpbnRlcmZhY2UgbWl4aW4g
Q2FudmFzRHJhd0ltYWdlIHsKLSAgICAvLyBGSVhNRTogQWxsIHRoZSB1bnJlc3RyaWN0ZWQgZmxv
YXQgYXJndW1lbnRzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4KLQogICAg
IC8vIGRyYXdpbmcgaW1hZ2VzCiAgICAgdW5kZWZpbmVkIGRyYXdJbWFnZShDYW52YXNJbWFnZVNv
dXJjZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBk
eSk7CiAgICAgdW5kZWZpbmVkIGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgdW5y
ZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeSwgdW5yZXN0cmljdGVk
IGRvdWJsZSBkdywgdW5yZXN0cmljdGVkIGRvdWJsZSBkaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3UGF0aC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNEcmF3UGF0aC5pZGwKaW5kZXggY2UwZWQ3MDhlNGZiODRiMDBiZDRk
MzFjOGVjN2NkZWI4ZjhmOWNlMy4uMTg0ZWQ4OTIwOWJkNzA5NDVmNTgyOTc3MTIyYTNmYTYzYTQ4
YTY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd1Bh
dGguaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0RyYXdQYXRoLmlk
bApAQCAtMzYsOSArMzYsOCBAQCBpbnRlcmZhY2UgbWl4aW4gQ2FudmFzRHJhd1BhdGggewogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVzZXRDbGlwLgogICAgIC8vIHVuZGVmaW5lZCByZXNldENs
aXAoKTsKIAotICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVzdHJpY3RlZCBmbG9hdCBwYXJhbWV0
ZXJzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4KLSAgICBib29sZWFuIGlz
UG9pbnRJblBhdGgodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCBv
cHRpb25hbCBDYW52YXNGaWxsUnVsZSBmaWxsUnVsZSA9ICJub256ZXJvIik7Ci0gICAgYm9vbGVh
biBpc1BvaW50SW5QYXRoKFBhdGgyRCBwYXRoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0
cmljdGVkIGZsb2F0IHksIG9wdGlvbmFsIENhbnZhc0ZpbGxSdWxlIGZpbGxSdWxlID0gIm5vbnpl
cm8iKTsKLSAgICBib29sZWFuIGlzUG9pbnRJblN0cm9rZSh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwg
dW5yZXN0cmljdGVkIGZsb2F0IHkpOwotICAgIGJvb2xlYW4gaXNQb2ludEluU3Ryb2tlKFBhdGgy
RCBwYXRoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHkpOworICAg
IGJvb2xlYW4gaXNQb2ludEluUGF0aCh1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3Rl
ZCBkb3VibGUgeSwgb3B0aW9uYWwgQ2FudmFzRmlsbFJ1bGUgZmlsbFJ1bGUgPSAibm9uemVybyIp
OworICAgIGJvb2xlYW4gaXNQb2ludEluUGF0aChQYXRoMkQgcGF0aCwgdW5yZXN0cmljdGVkIGRv
dWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHksIG9wdGlvbmFsIENhbnZhc0ZpbGxSdWxlIGZp
bGxSdWxlID0gIm5vbnplcm8iKTsKKyAgICBib29sZWFuIGlzUG9pbnRJblN0cm9rZSh1bnJlc3Ry
aWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSk7CisgICAgYm9vbGVhbiBpc1Bv
aW50SW5TdHJva2UoUGF0aDJEIHBhdGgsIHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmlj
dGVkIGRvdWJsZSB5KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNH
cmFkaWVudC5jcHAKaW5kZXggOTgxMmYzMDA2OGVmNmFhNjg5YzU2ZjI4MDZkOGJkOWZiZjZjYTYx
OS4uNjQ5NDRkYWYwYmM2MzEzYjUzY2Y0OGQzODIyNGM2ODlmMDQ5OTExNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcApAQCAtNjgsNyArNjgsNyBA
QCBSZWY8Q2FudmFzR3JhZGllbnQ+IENhbnZhc0dyYWRpZW50OjpjcmVhdGUoY29uc3QgRmxvYXRQ
b2ludCYgY2VudGVyUG9pbnQsIGZsb2F0CiAKIENhbnZhc0dyYWRpZW50Ojp+Q2FudmFzR3JhZGll
bnQoKSA9IGRlZmF1bHQ7CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc0dyYWRpZW50OjphZGRD
b2xvclN0b3AoZmxvYXQgdmFsdWUsIGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcpCitFeGNlcHRp
b25Pcjx2b2lkPiBDYW52YXNHcmFkaWVudDo6YWRkQ29sb3JTdG9wKGRvdWJsZSB2YWx1ZSwgY29u
c3QgU3RyaW5nJiBjb2xvclN0cmluZykKIHsKICAgICBpZiAoISh2YWx1ZSA+PSAwICYmIHZhbHVl
IDw9IDEpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKQEAg
LTc4LDcgKzc4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzR3JhZGllbnQ6OmFkZENvbG9y
U3RvcChmbG9hdCB2YWx1ZSwgY29uc3QgU3RyaW5nJiBjb2xvclMKICAgICBpZiAoIWNvbG9yLmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAKLSAg
ICBtX2dyYWRpZW50LT5hZGRDb2xvclN0b3AoeyB2YWx1ZSwgV1RGTW92ZShjb2xvcikgfSk7Cisg
ICAgbV9ncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSwg
V1RGTW92ZShjb2xvcikgfSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmgKaW5kZXggZjZiZjUzMzE1ZTIyOWVlNWY0NjYz
NTY1ZGIwNmU1MDFjZDU3NDhkNS4uODk2YTZkMWY4M2M0OWEyZTM0NGYyZGIxNmYxNmY3ZjdlYzdk
OTI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzR3JhZGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5oCkBA
IC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBHcmFkaWVudCYgZ3JhZGllbnQoKSB7IHJldHVy
biBtX2dyYWRpZW50OyB9CiAgICAgY29uc3QgR3JhZGllbnQmIGdyYWRpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9ncmFkaWVudDsgfQogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYWRkQ29sb3JTdG9w
KGZsb2F0IHZhbHVlLCBjb25zdCBTdHJpbmcmIGNvbG9yKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lk
PiBhZGRDb2xvclN0b3AoZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGNvbG9yKTsKIAogcHJp
dmF0ZToKICAgICBDYW52YXNHcmFkaWVudChjb25zdCBGbG9hdFBvaW50JiBwMCwgY29uc3QgRmxv
YXRQb2ludCYgcDEsIENhbnZhc0Jhc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc0dyYWRpZW50LmlkbAppbmRleCA3MTA3Y2U4YmExYzJjOGM4YmU5ZjAxMzBkODQxZGU4
YzE1ZmRkNmM1Li45Yjc4NGEyNmNjMWJmNmEzMDFmODIzYWU0OWM2ZTg5ZDMxNDIyMTM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaWRsCkBAIC0yOCw4
ICsyOCw2IEBACiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCiAgICAgSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgQ2FudmFzR3JhZGllbnQgewotICAgIC8vIEZJWE1F
OiBUaGUgZmxvYXQgcGFyYW1ldGVycyBiZWxvdyBzaG91bGQgYmUgYSBkb3VibGUuCi0KICAgICAv
LyBvcGFxdWUgb2JqZWN0Ci0gICAgdW5kZWZpbmVkIGFkZENvbG9yU3RvcChmbG9hdCBvZmZzZXQs
IERPTVN0cmluZyBjb2xvcik7CisgICAgdW5kZWZpbmVkIGFkZENvbG9yU3RvcChkb3VibGUgb2Zm
c2V0LCBET01TdHJpbmcgY29sb3IpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1BhdGhEcmF3aW5nU3R5bGVzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1BhdGhEcmF3aW5nU3R5bGVzLmlkbAppbmRleCAwMGZiOTk1OWMzNWU2
M2M1MzExNjk2ZTRhMzE3MTllMDRjMzljZGM5Li43N2ZjMzY2YTgyOGJhYmE5OGU0YmE3YzYyZmJk
YTkxMDExYWYyMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNQYXRoRHJhd2luZ1N0eWxlcy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUGF0aERyYXdpbmdTdHlsZXMuaWRsCkBAIC0yNSwxNiArMjUsMTQgQEAKIAogLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY2FudmFzLmh0bWwjY2FudmFzcGF0
aGRyYXdpbmdzdHlsZXMKIGludGVyZmFjZSBtaXhpbiBDYW52YXNQYXRoRHJhd2luZ1N0eWxlcyB7
Ci0gICAgLy8gRklYTUU6IEFsbCB0aGUgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3VtZW50cyAvIGF0
dHJpYnV0ZXMgYmVsb3cgc2hvdWxkIGJlIHVucmVzdHJpY3RlZCBkb3VibGVzLgotCiAgICAgLy8g
bGluZSBjYXBzL2pvaW5zCi0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBsaW5lV2lk
dGg7IC8vIChkZWZhdWx0IDEpCisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgbGlu
ZVdpZHRoOyAvLyAoZGVmYXVsdCAxKQogICAgIGF0dHJpYnV0ZSBDYW52YXNMaW5lQ2FwIGxpbmVD
YXA7IC8vIChkZWZhdWx0ICJidXR0IikKICAgICBhdHRyaWJ1dGUgQ2FudmFzTGluZUpvaW4gbGlu
ZUpvaW47IC8vIChkZWZhdWx0ICJtaXRlciIpCi0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBm
bG9hdCBtaXRlckxpbWl0OyAvLyAoZGVmYXVsdCAxMCkKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmlj
dGVkIGRvdWJsZSBtaXRlckxpbWl0OyAvLyAoZGVmYXVsdCAxMCkKIAogICAgIC8vIGRhc2hlZCBs
aW5lcwotICAgIHVuZGVmaW5lZCBzZXRMaW5lRGFzaChzZXF1ZW5jZTx1bnJlc3RyaWN0ZWQgZmxv
YXQ+IHNlZ21lbnRzKTsgLy8gZGVmYXVsdCBlbXB0eQotICAgIHNlcXVlbmNlPHVucmVzdHJpY3Rl
ZCBmbG9hdD4gZ2V0TGluZURhc2goKTsKLSAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0
IGxpbmVEYXNoT2Zmc2V0OworICAgIHVuZGVmaW5lZCBzZXRMaW5lRGFzaChzZXF1ZW5jZTx1bnJl
c3RyaWN0ZWQgZG91YmxlPiBzZWdtZW50cyk7IC8vIGRlZmF1bHQgZW1wdHkKKyAgICBzZXF1ZW5j
ZTx1bnJlc3RyaWN0ZWQgZG91YmxlPiBnZXRMaW5lRGFzaCgpOworICAgIGF0dHJpYnV0ZSB1bnJl
c3RyaWN0ZWQgZG91YmxlIGxpbmVEYXNoT2Zmc2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlY3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVjdC5pZGwKaW5kZXggNWRkMDRmMjA3NGE1MmUxY2VjYTJlNDBjMzY0NzU5
ZjMxOGIzNTcyMy4uMTE3Mzk3MmY4ODYxYmJjNjA2YTQ2MGZlZWRhZTc4Y2Q0OWEyMWI3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVjdC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVjdC5pZGwKQEAgLTI1LDEwICsyNSw4
IEBACiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2NhbnZhcy5o
dG1sI2NhbnZhc3JlY3QKIGludGVyZmFjZSBtaXhpbiBDYW52YXNSZWN0IHsKLSAgICAvLyBGSVhN
RTogQWxsIHRoZSB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFyYW1ldGVycyBiZWxvdyBzaG91bGQgYmUg
dW5yZXN0cmljdGVkIGRvdWJsZXMuCi0KICAgICAvLyByZWN0cwotICAgIHVuZGVmaW5lZCBjbGVh
clJlY3QodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgdywgdW5yZXN0cmljdGVkIGZsb2F0IGgpOwotICAgIHVuZGVmaW5lZCBmaWxs
UmVjdCh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJp
Y3RlZCBmbG9hdCB3LCB1bnJlc3RyaWN0ZWQgZmxvYXQgaCk7Ci0gICAgdW5kZWZpbmVkIHN0cm9r
ZVJlY3QodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgdywgdW5yZXN0cmljdGVkIGZsb2F0IGgpOworICAgIHVuZGVmaW5lZCBjbGVh
clJlY3QodW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHksIHVucmVz
dHJpY3RlZCBkb3VibGUgdywgdW5yZXN0cmljdGVkIGRvdWJsZSBoKTsKKyAgICB1bmRlZmluZWQg
ZmlsbFJlY3QodW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHksIHVu
cmVzdHJpY3RlZCBkb3VibGUgdywgdW5yZXN0cmljdGVkIGRvdWJsZSBoKTsKKyAgICB1bmRlZmlu
ZWQgc3Ryb2tlUmVjdCh1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUg
eSwgdW5yZXN0cmljdGVkIGRvdWJsZSB3LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGgpOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCmluZGV4IGQ1YjA0OTM4ZDJmZWZhZTc0YTc3MWQxM2MzYzgxYzE1NGUyMGI1ZDMu
LjRkNTk1MGUwY2MyYmNjZTRhYTMyZGIyN2RhM2Q4MDdhMDEwOTdkOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cApAQCAtMTgxLDEyICsxODEsMTIgQEAgQ2FudmFzRGlyZWN0aW9uIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZGlyZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdG9UZXh0RGlyZWN0aW9uKHN0
YXRlKCkuZGlyZWN0aW9uKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgPyBDYW52YXNEaXJlY3Rpb246
OlJ0bCA6IENhbnZhc0RpcmVjdGlvbjo6THRyOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBz
dGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGRvdWJsZSB4LCBkb3VibGUgeSwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IG1heFdpZHRoKQogewogICAgIGRyYXdUZXh0SW50ZXJuYWwodGV4
dCwgeCwgeSwgdHJ1ZSwgbWF4V2lkdGgpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBkb3VibGUgeCwgZG91YmxlIHksIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhXaWR0aCkKIHsKICAgICBkcmF3VGV4dEludGVybmFsKHRl
eHQsIHgsIHksIGZhbHNlLCBtYXhXaWR0aCk7CiB9CkBAIC0yMjQsNyArMjI0LDcgQEAgYXV0byBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnRQcm94eSgpIC0+IGNvbnN0IEZvbnRQcm94eSoK
ICAgICByZXR1cm4gJnN0YXRlKCkuZm9udDsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9h
dCB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQordm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0
LCBkb3VibGUgeCwgZG91YmxlIHksIGJvb2wgZmlsbCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1h
eFdpZHRoKQogewogICAgIGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkp
LmRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDkzMDc0
ZWY4ZTBlNDQwYTJmYTY0NmFlMTQyNzBmYjJiZTAwN2Q5MmUuLjZiNDhlOGNjZjU4ODdmMTg5YjVi
YTY2ZGE1ZmIzN2UzNzYxMzQ0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC00OSw4ICs0OSw4IEBAIHB1Ymxp
YzoKIAogICAgIENhbnZhc0RpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdDsKIAotICAgIHZvaWQg
ZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgdm9pZCBzdHJva2VUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgc3RkOjpvcHRpb25hbDxmbG9h
dD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZmlsbFRleHQoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBkb3VibGUgeCwgZG91YmxlIHksIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhX
aWR0aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYg
dGV4dCwgZG91YmxlIHgsIGRvdWJsZSB5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4V2lkdGgg
PSBzdGQ6Om51bGxvcHQpOwogICAgIFJlZjxUZXh0TWV0cmljcz4gbWVhc3VyZVRleHQoY29uc3Qg
U3RyaW5nJiB0ZXh0KTsKIAogcHJpdmF0ZToKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgc2V0Rm9udFdpdGhvdXRVcGRhdGluZ1N0eWxlKGNvbnN0IFN0cmluZyYpOwogCi0g
ICAgdm9pZCBkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxv
YXQgeSwgYm9vbCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVs
bG9wdCk7CisgICAgdm9pZCBkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZG91
YmxlIHgsIGRvdWJsZSB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhXaWR0
aCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICB2b2lkIGRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwo
Y29uc3QgUGF0aCYsIEVsZW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKaW5kZXggMjcyYWZjOGUxYjlj
NmFlOGFiZjFmYWQ1MjRmMGUyMzBlY2JlMGI1OS4uOTFiOGExNmQ4YzlkYmYyNzM3ZTM2NjRkMTEz
YzI1ZDAxMTdiNDY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCkBAIC02NCw4ICs2NCw4IEBACiAgICAgdW5k
ZWZpbmVkIHNldExpbmVDYXAob3B0aW9uYWwgRE9NU3RyaW5nIGNhcCk7CiAgICAgdW5kZWZpbmVk
IHNldExpbmVKb2luKG9wdGlvbmFsIERPTVN0cmluZyBqb2luKTsKICAgICB1bmRlZmluZWQgc2V0
TWl0ZXJMaW1pdChvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgbGltaXQgPSBOYU4pOwotICAg
IGF0dHJpYnV0ZSBzZXF1ZW5jZTx1bnJlc3RyaWN0ZWQgZmxvYXQ+IHdlYmtpdExpbmVEYXNoOwot
ICAgIFtJbXBsZW1lbnRlZEFzPWxpbmVEYXNoT2Zmc2V0XSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVk
IGZsb2F0IHdlYmtpdExpbmVEYXNoT2Zmc2V0OworICAgIGF0dHJpYnV0ZSBzZXF1ZW5jZTx1bnJl
c3RyaWN0ZWQgZG91YmxlPiB3ZWJraXRMaW5lRGFzaDsKKyAgICBbSW1wbGVtZW50ZWRBcz1saW5l
RGFzaE9mZnNldF0gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgd2Via2l0TGluZURhc2hP
ZmZzZXQ7CiAKICAgICAvLyBOb24tc3RhbmRhcmQgbGVnYWN5IGFsaWFzZXMgKENhbnZhc1NoYWRv
d1N0eWxlcykuCiAgICAgdW5kZWZpbmVkIHNldFNoYWRvdyh1bnJlc3RyaWN0ZWQgZmxvYXQgd2lk
dGgsIHVucmVzdHJpY3RlZCBmbG9hdCBoZWlnaHQsIHVucmVzdHJpY3RlZCBmbG9hdCBibHVyLCBv
cHRpb25hbCBET01TdHJpbmcgY29sb3IsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhbHBo
YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IGI0MGQ2ZDIxMjI1MjU2YmIxNmZiNTljY2Ni
ZWFhNDMzYmM1NjU4ZmQuLjVhNDM4YmJhODhjMjMyNTRiM2ZjNzI2ZGUyNTljN2E1NjYzZTc3OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC01MTUsNyArNTE1LDcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRGaWxsU3R5bGUoQ2FudmFzU3R5bGUgc3R5bGUpCiAg
ICAgc3RhdGUudW5wYXJzZWRGaWxsQ29sb3IgPSBTdHJpbmcoKTsKIH0KIAotdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRMaW5lV2lkdGgoZmxvYXQgd2lkdGgpCit2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldExpbmVXaWR0aChkb3VibGUgd2lkdGgpCiB7
CiAgICAgaWYgKCEoc3RkOjppc2Zpbml0ZSh3aWR0aCkgJiYgd2lkdGggPiAwKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6c2V0TGluZUpvaW4oY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkKICAgICBzZXRMaW5l
Sm9pbihqb2luKTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRN
aXRlckxpbWl0KGZsb2F0IGxpbWl0KQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpzZXRNaXRlckxpbWl0KGRvdWJsZSBsaW1pdCkKIHsKICAgICBpZiAoIShzdGQ6OmlzZmluaXRl
KGxpbWl0KSAmJiBsaW1pdCA+IDApKQogICAgICAgICByZXR1cm47CkBAIC02NDQsNyArNjQ0LDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRTaGFkb3dDb2xvcihjb25z
dCBTdHJpbmcmIGNvbG9yU3RyaW5nKQogICAgIGFwcGx5U2hhZG93KCk7CiB9CiAKLXN0YXRpYyBi
b29sIGxpbmVEYXNoU2VxdWVuY2VJc1ZhbGlkKGNvbnN0IFZlY3RvcjxmbG9hdD4mIGRhc2gpCitz
dGF0aWMgYm9vbCBsaW5lRGFzaFNlcXVlbmNlSXNWYWxpZChjb25zdCBWZWN0b3I8ZG91YmxlPiYg
ZGFzaCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhc2guc2l6ZSgpOyBpKyspIHsK
ICAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRhc2hbaV0pIHx8IGRhc2hbaV0gPCAwKQpAQCAt
NjUzLDcgKzY1Myw3IEBAIHN0YXRpYyBib29sIGxpbmVEYXNoU2VxdWVuY2VJc1ZhbGlkKGNvbnN0
IFZlY3RvcjxmbG9hdD4mIGRhc2gpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0TGluZURhc2goY29uc3QgVmVjdG9yPGZsb2F0PiYg
ZGFzaCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0TGluZURhc2goY29u
c3QgVmVjdG9yPGRvdWJsZT4mIGRhc2gpCiB7CiAgICAgaWYgKCFsaW5lRGFzaFNlcXVlbmNlSXNW
YWxpZChkYXNoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjY4LDcgKzY2OCw3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0TGluZURhc2goY29uc3QgVmVjdG9yPGZsb2F0
PiYgZGFzaCkKICAgICBhcHBseUxpbmVEYXNoKCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6c2V0V2Via2l0TGluZURhc2goY29uc3QgVmVjdG9yPGZsb2F0PiYgZGFz
aCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0V2Via2l0TGluZURhc2go
Y29uc3QgVmVjdG9yPGRvdWJsZT4mIGRhc2gpCiB7CiAgICAgaWYgKCFsaW5lRGFzaFNlcXVlbmNl
SXNWYWxpZChkYXNoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjc5LDcgKzY3OSw3IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0V2Via2l0TGluZURhc2goY29uc3QgVmVj
dG9yPGZsb2F0PiYgZGFzaCkKICAgICBhcHBseUxpbmVEYXNoKCk7CiB9CiAKLXZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0TGluZURhc2hPZmZzZXQoZmxvYXQgb2Zmc2V0KQor
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRMaW5lRGFzaE9mZnNldChkb3Vi
bGUgb2Zmc2V0KQogewogICAgIGlmICghc3RkOjppc2Zpbml0ZShvZmZzZXQpIHx8IHN0YXRlKCku
bGluZURhc2hPZmZzZXQgPT0gb2Zmc2V0KQogICAgICAgICByZXR1cm47CkBAIC03MDAsNyArNzAw
LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjphcHBseUxpbmVEYXNoKCkg
Y29uc3QKICAgICBjLT5zZXRMaW5lRGFzaChjb252ZXJ0ZWRMaW5lRGFzaCwgc3RhdGUoKS5saW5l
RGFzaE9mZnNldCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0
R2xvYmFsQWxwaGEoZmxvYXQgYWxwaGEpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OnNldEdsb2JhbEFscGhhKGRvdWJsZSBhbHBoYSkKIHsKICAgICBpZiAoIShhbHBoYSA+PSAw
ICYmIGFscGhhIDw9IDEpKQogICAgICAgICByZXR1cm47CkBAIC03MzEsNyArNzMxLDcgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRHbG9iYWxDb21wb3NpdGVPcGVyYXRp
b24oY29uc3QgU3RyaW5nJiBvcGUKICAgICBjLT5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3AsIGJs
ZW5kTW9kZSk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2NhbGUo
ZmxvYXQgc3gsIGZsb2F0IHN5KQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpz
Y2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBk
cmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTc1OSw3ICs3NTksNyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNjYWxlKGZsb2F0IHN4LCBmbG9hdCBzeSkKICAg
ICBtX3BhdGgudHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybSgpLnNjYWxlTm9uVW5pZm9ybSgxLjAg
LyBzeCwgMS4wIC8gc3kpKTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
Ojpyb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OnJvdGF0ZShkb3VibGUgYW5nbGVJblJhZGlhbnMpCiB7CiAgICAgR3JhcGhpY3ND
b250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCkBAIC03ODIsNyArNzgy
LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpyb3RhdGUoZmxvYXQgYW5n
bGVJblJhZGlhbnMpCiAgICAgbV9wYXRoLnRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0oKS5yb3Rh
dGUoLWFuZ2xlSW5SYWRpYW5zIC8gcGlEb3VibGUgKiAxODAuMCkpOwogfQogCi12b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnRyYW5zbGF0ZShmbG9hdCB0eCwgZmxvYXQgdHkpCit2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnRyYW5zbGF0ZShkb3VibGUgdHgsIGRv
dWJsZSB0eSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwog
ICAgIGlmICghYykKQEAgLTgwNSw3ICs4MDUsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OnRyYW5zbGF0ZShmbG9hdCB0eCwgZmxvYXQgdHkpCiAgICAgbV9wYXRoLnRyYW5z
Zm9ybShBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoLXR4LCAtdHkpKTsKIH0KIAotdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0cmFuc2Zvcm0oZmxvYXQgbTExLCBmbG9hdCBt
MTIsIGZsb2F0IG0yMSwgZmxvYXQgbTIyLCBmbG9hdCBkeCwgZmxvYXQgZHkpCit2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnRyYW5zZm9ybShkb3VibGUgbTExLCBkb3VibGUgbTEy
LCBkb3VibGUgbTIxLCBkb3VibGUgbTIyLCBkb3VibGUgZHgsIGRvdWJsZSBkeSkKIHsKICAgICBH
cmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTgz
Nyw3ICs4MzcsNyBAQCBSZWY8RE9NTWF0cml4PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpnZXRUcmFuc2Zvcm0oKSBjb25zdAogICAgIHJldHVybiBET01NYXRyaXg6OmNyZWF0ZShzdGF0
ZSgpLnRyYW5zZm9ybS50b1RyYW5zZm9ybWF0aW9uTWF0cml4KCksIERPTU1hdHJpeFJlYWRPbmx5
OjpJczJEOjpZZXMpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNl
dFRyYW5zZm9ybShmbG9hdCBtMTEsIGZsb2F0IG0xMiwgZmxvYXQgbTIxLCBmbG9hdCBtMjIsIGZs
b2F0IGR4LCBmbG9hdCBkeSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0
VHJhbnNmb3JtKGRvdWJsZSBtMTEsIGRvdWJsZSBtMTIsIGRvdWJsZSBtMjEsIGRvdWJsZSBtMjIs
IGRvdWJsZSBkeCwgZG91YmxlIGR5KQogewogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdp
bmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQpAQCAtOTY1LDcgKzk2NSw3IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6YmVnaW5QYXRoKCkKICAgICBtX3BhdGguY2xlYXIoKTsK
IH0KIAotc3RhdGljIGJvb2wgdmFsaWRhdGVSZWN0Rm9yQ2FudmFzKGZsb2F0JiB4LCBmbG9hdCYg
eSwgZmxvYXQmIHdpZHRoLCBmbG9hdCYgaGVpZ2h0KQorc3RhdGljIGJvb2wgdmFsaWRhdGVSZWN0
Rm9yQ2FudmFzKGRvdWJsZSYgeCwgZG91YmxlJiB5LCBkb3VibGUmIHdpZHRoLCBkb3VibGUmIGhl
aWdodCkKIHsKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoeCkgfCAhc3RkOjppc2Zpbml0ZSh5KSB8
ICFzdGQ6OmlzZmluaXRlKHdpZHRoKSB8ICFzdGQ6OmlzZmluaXRlKGhlaWdodCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTExMzcsMjcgKzExMzcsMjcgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjplbmRDb21wb3NpdGVMYXllcigpCiAjZW5kaWYKIH0KIAotYm9vbCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5QYXRoKGZsb2F0IHgsIGZsb2F0
IHksIENhbnZhc0ZpbGxSdWxlIHdpbmRpbmdSdWxlKQorYm9vbCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjppc1BvaW50SW5QYXRoKGRvdWJsZSB4LCBkb3VibGUgeSwgQ2FudmFzRmlsbFJ1
bGUgd2luZGluZ1J1bGUpCiB7CiAgICAgcmV0dXJuIGlzUG9pbnRJblBhdGhJbnRlcm5hbChtX3Bh
dGgsIHgsIHksIHdpbmRpbmdSdWxlKTsKIH0KIAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjppc1BvaW50SW5TdHJva2UoZmxvYXQgeCwgZmxvYXQgeSkKK2Jvb2wgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNQb2ludEluU3Ryb2tlKGRvdWJsZSB4LCBkb3VibGUgeSkK
IHsKICAgICByZXR1cm4gaXNQb2ludEluU3Ryb2tlSW50ZXJuYWwobV9wYXRoLCB4LCB5KTsKIH0K
IAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5QYXRoKFBhdGgy
RCYgcGF0aCwgZmxvYXQgeCwgZmxvYXQgeSwgQ2FudmFzRmlsbFJ1bGUgd2luZGluZ1J1bGUpCiti
b29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmlzUG9pbnRJblBhdGgoUGF0aDJEJiBw
YXRoLCBkb3VibGUgeCwgZG91YmxlIHksIENhbnZhc0ZpbGxSdWxlIHdpbmRpbmdSdWxlKQogewog
ICAgIHJldHVybiBpc1BvaW50SW5QYXRoSW50ZXJuYWwocGF0aC5wYXRoKCksIHgsIHksIHdpbmRp
bmdSdWxlKTsKIH0KIAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50
SW5TdHJva2UoUGF0aDJEJiBwYXRoLCBmbG9hdCB4LCBmbG9hdCB5KQorYm9vbCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5TdHJva2UoUGF0aDJEJiBwYXRoLCBkb3VibGUg
eCwgZG91YmxlIHkpCiB7CiAgICAgcmV0dXJuIGlzUG9pbnRJblN0cm9rZUludGVybmFsKHBhdGgu
cGF0aCgpLCB4LCB5KTsKIH0KIAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpp
c1BvaW50SW5QYXRoSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgeCwgZmxvYXQgeSwg
Q2FudmFzRmlsbFJ1bGUgd2luZGluZ1J1bGUpCitib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OmlzUG9pbnRJblBhdGhJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBkb3VibGUgeCwg
ZG91YmxlIHksIENhbnZhc0ZpbGxSdWxlIHdpbmRpbmdSdWxlKQogewogICAgIGlmICghZHJhd2lu
Z0NvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3Miw3ICsxMTcyLDcgQEAg
Ym9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5QYXRoSW50ZXJuYWwo
Y29uc3QgUGF0aCYgcGF0aCwgZmxvYXQKICAgICByZXR1cm4gcGF0aC5jb250YWlucyh0cmFuc2Zv
cm1lZFBvaW50LCB0b1dpbmRSdWxlKHdpbmRpbmdSdWxlKSk7CiB9CiAKLWJvb2wgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNQb2ludEluU3Ryb2tlSW50ZXJuYWwoY29uc3QgUGF0aCYg
cGF0aCwgZmxvYXQgeCwgZmxvYXQgeSkKK2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6aXNQb2ludEluU3Ryb2tlSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgZG91YmxlIHgsIGRv
dWJsZSB5KQogewogICAgIGlmICghZHJhd2luZ0NvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTE5Nyw3ICsxMTk3LDcgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjppc1BvaW50SW5TdHJva2VJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBmbG8KICAgICB9
KTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjbGVhclJlY3QoZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKK3ZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6Y2xlYXJSZWN0KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91Ymxl
IHdpZHRoLCBkb3VibGUgaGVpZ2h0KQogewogICAgIGlmICghdmFsaWRhdGVSZWN0Rm9yQ2FudmFz
KHgsIHksIHdpZHRoLCBoZWlnaHQpKQogICAgICAgICByZXR1cm47CkBAIC0xMjM0LDcgKzEyMzQs
NyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNsZWFyUmVjdChmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYQogICAgIGRpZERyYXcocmVjdCk7CiB9CiAKLXZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZmlsbFJlY3QoZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6ZmlsbFJlY3QoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgd2lkdGgsIGRvdWJs
ZSBoZWlnaHQpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZVJlY3RGb3JDYW52YXMoeCwgeSwgd2lkdGgs
IGhlaWdodCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyNzgsNyArMTI3OCw3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZmlsbFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgd2lkdGgsIGZsb2F0CiAgICAgICAgIGRpZERyYXcocmVjdCk7CiB9CiAKLXZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c3Ryb2tlUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpzdHJva2VSZWN0KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHdpZHRoLCBkb3VibGUgaGVp
Z2h0KQogewogICAgIGlmICghdmFsaWRhdGVSZWN0Rm9yQ2FudmFzKHgsIHksIHdpZHRoLCBoZWln
aHQpKQogICAgICAgICByZXR1cm47CkBAIC0yMzUyLDcgKzIzNTIsNyBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OnNldERpcmVjdGlvbihEaXJlY3Rpb24gZGlyZWN0aW9uKQog
ICAgIG1vZGlmaWFibGVTdGF0ZSgpLmRpcmVjdGlvbiA9IGRpcmVjdGlvbjsKIH0KIAotYm9vbCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjYW5EcmF3VGV4dChmbG9hdCB4LCBmbG9hdCB5
LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQorYm9vbCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjYW5EcmF3VGV4dChkb3VibGUgeCwgZG91YmxlIHksIGJv
b2wgZmlsbCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heFdpZHRoKQogewogICAgIGlmICghZm9u
dFByb3h5KCktPnJlYWxpemVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0MDksNyAr
MjQwOSw3IEBAIFN0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpub3JtYWxpemVT
cGFjZXMoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1v
dmUoY2hhclZlY3RvcikpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OmRyYXdUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxs
LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6ZHJhd1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBkb3VibGUgeCwgZG91Ymxl
IHksIGJvb2wgZmlsbCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heFdpZHRoKQogewogICAgIGlm
ICghY2FuRHJhd1RleHQoeCwgeSwgZmlsbCwgbWF4V2lkdGgpKQogICAgICAgICByZXR1cm47CkBA
IC0yNDIwLDcgKzI0MjAsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeQogICAgIGRyYXdUZXh0
VW5jaGVja2VkKHRleHRSdW4sIHgsIHksIGZpbGwsIG1heFdpZHRoKTsKIH0KIAotdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVu
JiB0ZXh0UnVuLCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8Zmxv
YXQ+IG1heFdpZHRoKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4
dFVuY2hlY2tlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBkb3VibGUgeCwgZG91YmxlIHksIGJv
b2wgZmlsbCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heFdpZHRoKQogewogICAgIGF1dG8qIGMg
PSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGF1dG8mIGZvbnRQcm94eSA9ICp0aGlzLT5mb250UHJv
eHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaAppbmRleCA1NTNkOGU5ZjdjM2E4MGI2ZWVhNmNkMTc2NWU3
YTU4MDRhZDc1NzBkLi4wNzU3OWE0MTQ5YjZkZDI4NzhkMGEwYjkwZTZkNTRiMDZlMzk4ODZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5oCkBAIC04Nyw4ICs4Nyw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzJiBnZXRDb250ZXh0QXR0cmlidXRlcygp
IGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KIAotICAgIGZsb2F0IGxpbmVXaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRlKCkubGluZVdpZHRoOyB9Ci0gICAgdm9pZCBzZXRMaW5lV2lkdGgo
ZmxvYXQpOworICAgIGRvdWJsZSBsaW5lV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdGF0ZSgpLmxp
bmVXaWR0aDsgfQorICAgIHZvaWQgc2V0TGluZVdpZHRoKGRvdWJsZSk7CiAKICAgICBDYW52YXNM
aW5lQ2FwIGxpbmVDYXAoKSBjb25zdCB7IHJldHVybiBzdGF0ZSgpLmNhbnZhc0xpbmVDYXAoKTsg
fQogICAgIHZvaWQgc2V0TGluZUNhcChDYW52YXNMaW5lQ2FwKTsKQEAgLTk4LDE3ICs5OCwxNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMaW5lSm9pbihDYW52YXNMaW5lSm9pbik7CiAgICAgdm9p
ZCBzZXRMaW5lSm9pbihjb25zdCBTdHJpbmcmKTsKIAotICAgIGZsb2F0IG1pdGVyTGltaXQoKSBj
b25zdCB7IHJldHVybiBzdGF0ZSgpLm1pdGVyTGltaXQ7IH0KLSAgICB2b2lkIHNldE1pdGVyTGlt
aXQoZmxvYXQpOworICAgIGRvdWJsZSBtaXRlckxpbWl0KCkgY29uc3QgeyByZXR1cm4gc3RhdGUo
KS5taXRlckxpbWl0OyB9CisgICAgdm9pZCBzZXRNaXRlckxpbWl0KGRvdWJsZSk7CiAKLSAgICBj
b25zdCBWZWN0b3I8ZmxvYXQ+JiBnZXRMaW5lRGFzaCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlKCku
bGluZURhc2g7IH0KLSAgICB2b2lkIHNldExpbmVEYXNoKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsK
KyAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgZ2V0TGluZURhc2goKSBjb25zdCB7IHJldHVybiBz
dGF0ZSgpLmxpbmVEYXNoOyB9CisgICAgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBWZWN0b3I8ZG91
YmxlPiYpOwogCi0gICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgd2Via2l0TGluZURhc2goKSBjb25z
dCB7IHJldHVybiBnZXRMaW5lRGFzaCgpOyB9Ci0gICAgdm9pZCBzZXRXZWJraXRMaW5lRGFzaChj
b25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIHdlYmtpdExp
bmVEYXNoKCkgY29uc3QgeyByZXR1cm4gZ2V0TGluZURhc2goKTsgfQorICAgIHZvaWQgc2V0V2Vi
a2l0TGluZURhc2goY29uc3QgVmVjdG9yPGRvdWJsZT4mKTsKIAotICAgIGZsb2F0IGxpbmVEYXNo
T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKS5saW5lRGFzaE9mZnNldDsgfQotICAgIHZv
aWQgc2V0TGluZURhc2hPZmZzZXQoZmxvYXQpOworICAgIGRvdWJsZSBsaW5lRGFzaE9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkubGluZURhc2hPZmZzZXQ7IH0KKyAgICB2b2lkIHNldExp
bmVEYXNoT2Zmc2V0KGRvdWJsZSk7CiAKICAgICBmbG9hdCBzaGFkb3dPZmZzZXRYKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGUoKS5zaGFkb3dPZmZzZXQud2lkdGgoKTsgfQogICAgIHZvaWQgc2V0U2hh
ZG93T2Zmc2V0WChmbG9hdCk7CkBAIC0xMjIsOCArMTIyLDggQEAgcHVibGljOgogICAgIFN0cmlu
ZyBzaGFkb3dDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkuc2hhZG93Q29sb3JTdHJpbmco
KTsgfQogICAgIHZvaWQgc2V0U2hhZG93Q29sb3IoY29uc3QgU3RyaW5nJik7CiAKLSAgICBmbG9h
dCBnbG9iYWxBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkuZ2xvYmFsQWxwaGE7IH0KLSAg
ICB2b2lkIHNldEdsb2JhbEFscGhhKGZsb2F0KTsKKyAgICBkb3VibGUgZ2xvYmFsQWxwaGEoKSBj
b25zdCB7IHJldHVybiBzdGF0ZSgpLmdsb2JhbEFscGhhOyB9CisgICAgdm9pZCBzZXRHbG9iYWxB
bHBoYShkb3VibGUpOwogCiAgICAgU3RyaW5nIGdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uU3RyaW5nKCk7IH0K
ICAgICB2b2lkIHNldEdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbihjb25zdCBTdHJpbmcmKTsKQEAg
LTEzMSwxMyArMTMxLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNhdmUoKSB7ICsrbV91bnJlYWxp
emVkU2F2ZUNvdW50OyB9CiAgICAgdm9pZCByZXN0b3JlKCk7CiAKLSAgICB2b2lkIHNjYWxlKGZs
b2F0IHN4LCBmbG9hdCBzeSk7Ci0gICAgdm9pZCByb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMp
OwotICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHR4LCBmbG9hdCB0eSk7Ci0gICAgdm9pZCB0cmFu
c2Zvcm0oZmxvYXQgbTExLCBmbG9hdCBtMTIsIGZsb2F0IG0yMSwgZmxvYXQgbTIyLCBmbG9hdCBk
eCwgZmxvYXQgZHkpOworICAgIHZvaWQgc2NhbGUoZG91YmxlIHN4LCBkb3VibGUgc3kpOworICAg
IHZvaWQgcm90YXRlKGRvdWJsZSBhbmdsZUluUmFkaWFucyk7CisgICAgdm9pZCB0cmFuc2xhdGUo
ZG91YmxlIHR4LCBkb3VibGUgdHkpOworICAgIHZvaWQgdHJhbnNmb3JtKGRvdWJsZSBtMTEsIGRv
dWJsZSBtMTIsIGRvdWJsZSBtMjEsIGRvdWJsZSBtMjIsIGRvdWJsZSBkeCwgZG91YmxlIGR5KTsK
IAogICAgIFJlZjxET01NYXRyaXg+IGdldFRyYW5zZm9ybSgpIGNvbnN0OwotICAgIHZvaWQgc2V0
VHJhbnNmb3JtKGZsb2F0IG0xMSwgZmxvYXQgbTEyLCBmbG9hdCBtMjEsIGZsb2F0IG0yMiwgZmxv
YXQgZHgsIGZsb2F0IGR5KTsKKyAgICB2b2lkIHNldFRyYW5zZm9ybShkb3VibGUgbTExLCBkb3Vi
bGUgbTEyLCBkb3VibGUgbTIxLCBkb3VibGUgbTIyLCBkb3VibGUgZHgsIGRvdWJsZSBkeSk7CiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKERPTU1hdHJpeDJESW5pdCYmKTsKICAg
ICB2b2lkIHJlc2V0VHJhbnNmb3JtKCk7CiAKQEAgLTE1OSwxNSArMTU5LDE1IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0cm9rZShQYXRoMkQmKTsKICAgICB2b2lkIGNsaXAoUGF0aDJEJiwgQ2FudmFz
RmlsbFJ1bGUgPSBDYW52YXNGaWxsUnVsZTo6Tm9uemVybyk7CiAKLSAgICBib29sIGlzUG9pbnRJ
blBhdGgoZmxvYXQgeCwgZmxvYXQgeSwgQ2FudmFzRmlsbFJ1bGUgPSBDYW52YXNGaWxsUnVsZTo6
Tm9uemVybyk7Ci0gICAgYm9vbCBpc1BvaW50SW5TdHJva2UoZmxvYXQgeCwgZmxvYXQgeSk7Cisg
ICAgYm9vbCBpc1BvaW50SW5QYXRoKGRvdWJsZSB4LCBkb3VibGUgeSwgQ2FudmFzRmlsbFJ1bGUg
PSBDYW52YXNGaWxsUnVsZTo6Tm9uemVybyk7CisgICAgYm9vbCBpc1BvaW50SW5TdHJva2UoZG91
YmxlIHgsIGRvdWJsZSB5KTsKIAotICAgIGJvb2wgaXNQb2ludEluUGF0aChQYXRoMkQmLCBmbG9h
dCB4LCBmbG9hdCB5LCBDYW52YXNGaWxsUnVsZSA9IENhbnZhc0ZpbGxSdWxlOjpOb256ZXJvKTsK
LSAgICBib29sIGlzUG9pbnRJblN0cm9rZShQYXRoMkQmLCBmbG9hdCB4LCBmbG9hdCB5KTsKKyAg
ICBib29sIGlzUG9pbnRJblBhdGgoUGF0aDJEJiwgZG91YmxlIHgsIGRvdWJsZSB5LCBDYW52YXNG
aWxsUnVsZSA9IENhbnZhc0ZpbGxSdWxlOjpOb256ZXJvKTsKKyAgICBib29sIGlzUG9pbnRJblN0
cm9rZShQYXRoMkQmLCBkb3VibGUgeCwgZG91YmxlIHkpOwogCi0gICAgdm9pZCBjbGVhclJlY3Qo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7Ci0gICAgdm9pZCBm
aWxsUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLSAg
ICB2b2lkIHN0cm9rZVJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhl
aWdodCk7CisgICAgdm9pZCBjbGVhclJlY3QoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgd2lk
dGgsIGRvdWJsZSBoZWlnaHQpOworICAgIHZvaWQgZmlsbFJlY3QoZG91YmxlIHgsIGRvdWJsZSB5
LCBkb3VibGUgd2lkdGgsIGRvdWJsZSBoZWlnaHQpOworICAgIHZvaWQgc3Ryb2tlUmVjdChkb3Vi
bGUgeCwgZG91YmxlIHksIGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCk7CiAKICAgICB2b2lk
IHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25zdCBT
dHJpbmcmIGNvbG9yID0gU3RyaW5nKCksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3Rk
OjpudWxsb3B0KTsKICAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhID0gMS4wKTsKQEAgLTI1
NywyMCArMjU3LDIwIEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHVucGFyc2VkRmlsbENvbG9y
OwogICAgICAgICBDYW52YXNTdHlsZSBzdHJva2VTdHlsZTsKICAgICAgICAgQ2FudmFzU3R5bGUg
ZmlsbFN0eWxlOwotICAgICAgICBmbG9hdCBsaW5lV2lkdGg7CisgICAgICAgIGRvdWJsZSBsaW5l
V2lkdGg7CiAgICAgICAgIExpbmVDYXAgbGluZUNhcDsKICAgICAgICAgTGluZUpvaW4gbGluZUpv
aW47Ci0gICAgICAgIGZsb2F0IG1pdGVyTGltaXQ7CisgICAgICAgIGRvdWJsZSBtaXRlckxpbWl0
OwogICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgICAgICBmbG9hdCBzaGFkb3dC
bHVyOwogICAgICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICAgICAgZmxvYXQgZ2xvYmFsQWxw
aGE7CisgICAgICAgIGRvdWJsZSBnbG9iYWxBbHBoYTsKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0
b3IgZ2xvYmFsQ29tcG9zaXRlOwogICAgICAgICBCbGVuZE1vZGUgZ2xvYmFsQmxlbmQ7CiAgICAg
ICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIGJvb2wgaGFzSW52ZXJ0aWJs
ZVRyYW5zZm9ybTsKLSAgICAgICAgVmVjdG9yPGZsb2F0PiBsaW5lRGFzaDsKLSAgICAgICAgZmxv
YXQgbGluZURhc2hPZmZzZXQ7CisgICAgICAgIFZlY3Rvcjxkb3VibGU+IGxpbmVEYXNoOworICAg
ICAgICBkb3VibGUgbGluZURhc2hPZmZzZXQ7CiAgICAgICAgIGJvb2wgaW1hZ2VTbW9vdGhpbmdF
bmFibGVkOwogICAgICAgICBJbWFnZVNtb290aGluZ1F1YWxpdHkgaW1hZ2VTbW9vdGhpbmdRdWFs
aXR5OwogICAgICAgICBUZXh0QWxpZ24gdGV4dEFsaWduOwpAQCAtMzAyLDkgKzMwMiw5IEBAIHBy
b3RlY3RlZDoKIAogICAgIHN0YXRpYyBTdHJpbmcgbm9ybWFsaXplU3BhY2VzKGNvbnN0IFN0cmlu
ZyYpOwogCi0gICAgdm9pZCBkcmF3VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZs
b2F0IHksIGJvb2wgZmlsbCwgc3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51
bGxvcHQpOwotICAgIGJvb2wgY2FuRHJhd1RleHQoZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxs
LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgdm9p
ZCBkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVuJiwgZmxvYXQgeCwgZmxvYXQgeSwgYm9v
bCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7Cisg
ICAgdm9pZCBkcmF3VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGRvdWJsZSB4LCBkb3VibGUgeSwg
Ym9vbCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQp
OworICAgIGJvb2wgY2FuRHJhd1RleHQoZG91YmxlIHgsIGRvdWJsZSB5LCBib29sIGZpbGwsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBk
cmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVuJiwgZG91YmxlIHgsIGRvdWJsZSB5LCBib29s
IGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CiAK
ICAgICBSZWY8VGV4dE1ldHJpY3M+IG1lYXN1cmVUZXh0SW50ZXJuYWwoY29uc3QgVGV4dFJ1biYp
OwogICAgIFJlZjxUZXh0TWV0cmljcz4gbWVhc3VyZVRleHRJbnRlcm5hbChjb25zdCBTdHJpbmcm
IHRleHQpOwpAQCAtMzcxLDggKzM3MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdHJva2VJbnRl
cm5hbChjb25zdCBQYXRoJik7CiAgICAgdm9pZCBjbGlwSW50ZXJuYWwoY29uc3QgUGF0aCYsIENh
bnZhc0ZpbGxSdWxlKTsKIAotICAgIGJvb2wgaXNQb2ludEluUGF0aEludGVybmFsKGNvbnN0IFBh
dGgmLCBmbG9hdCB4LCBmbG9hdCB5LCBDYW52YXNGaWxsUnVsZSk7Ci0gICAgYm9vbCBpc1BvaW50
SW5TdHJva2VJbnRlcm5hbChjb25zdCBQYXRoJiwgZmxvYXQgeCwgZmxvYXQgeSk7CisgICAgYm9v
bCBpc1BvaW50SW5QYXRoSW50ZXJuYWwoY29uc3QgUGF0aCYsIGRvdWJsZSB4LCBkb3VibGUgeSwg
Q2FudmFzRmlsbFJ1bGUpOworICAgIGJvb2wgaXNQb2ludEluU3Ryb2tlSW50ZXJuYWwoY29uc3Qg
UGF0aCYsIGRvdWJsZSB4LCBkb3VibGUgeSk7CiAKICAgICBQYXRoIHRyYW5zZm9ybUFyZWFUb0Rl
dmljZShjb25zdCBQYXRoJikgY29uc3Q7CiAgICAgUGF0aCB0cmFuc2Zvcm1BcmVhVG9EZXZpY2Uo
Y29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNTaGFkb3dTdHlsZXMuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzU2hhZG93U3R5bGVzLmlkbAppbmRleCAyOGVjYzYyMWFlZjMzOTZhOTBjMDc2NTFl
ZjU4NDQ0ZWRiMjA3ODVjLi42OWVhMGU4MTczMDAxM2QyZTZiMDVhYmU4ZmQ1OWQ4ZjQ3OWJlYTky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTaGFkb3dTdHls
ZXMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1NoYWRvd1N0eWxl
cy5pZGwKQEAgLTI1LDggKzI1LDYgQEAKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvY2FudmFzLmh0bWwjY2FudmFzc2hhZG93c3R5bGVzCiBpbnRlcmZhY2UgbWl4
aW4gQ2FudmFzU2hhZG93U3R5bGVzIHsKLSAgICAvLyBGSVhNRTogQWxsIHRoZSB1bnJlc3RyaWN0
ZWQgZmxvYXQgYXR0cmlidXRlcyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmljdGVkIGRvdWJsZXMu
Ci0KICAgICAvLyBzaGFkb3dzCiAgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgc2hh
ZG93T2Zmc2V0WDsgLy8gKGRlZmF1bHQgMCkKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRv
dWJsZSBzaGFkb3dPZmZzZXRZOyAvLyAoZGVmYXVsdCAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNUZXh0LmlkbAppbmRleCAzZjA0MTZiNWE1NTYyZGU5YTE2ZDc0NDAzYzNlOTI4
MjFiZGMyYWNkLi4yYWRjYTY1ZTM1MTM0MjliZjYxY2M2MGQ1NWIyYzQ3NTBiNzAyOThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0LmlkbApAQCAtMjUsMTAgKzI1LDgg
QEAKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY2FudmFzLmh0
bWwjY2FudmFzdGV4dAogaW50ZXJmYWNlIG1peGluIENhbnZhc1RleHQgewotICAgIC8vIEZJWE1F
OiBBbGwgdGhlIHVucmVzdHJpY3RlZCBmbG9hdCBwYXJhbWV0ZXJzIGJlbG93IHNob3VsZCBiZSB1
bnJlc3RyaWN0ZWQgZG91Ymxlcy4KLQogICAgIC8vIHRleHQgKHNlZSBhbHNvIHRoZSBDYW52YXNQ
YXRoRHJhd2luZ1N0eWxlcyBhbmQgQ2FudmFzVGV4dERyYXdpbmdTdHlsZXMgaW50ZXJmYWNlcykK
LSAgICB1bmRlZmluZWQgZmlsbFRleHQoRE9NU3RyaW5nIHRleHQsIHVucmVzdHJpY3RlZCBmbG9h
dCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IG1h
eFdpZHRoKTsKLSAgICB1bmRlZmluZWQgc3Ryb2tlVGV4dChET01TdHJpbmcgdGV4dCwgdW5yZXN0
cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCBvcHRpb25hbCB1bnJlc3RyaWN0
ZWQgZmxvYXQgbWF4V2lkdGgpOworICAgIHVuZGVmaW5lZCBmaWxsVGV4dChET01TdHJpbmcgdGV4
dCwgdW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHksIG9wdGlvbmFs
IHVucmVzdHJpY3RlZCBkb3VibGUgbWF4V2lkdGgpOworICAgIHVuZGVmaW5lZCBzdHJva2VUZXh0
KERPTVN0cmluZyB0ZXh0LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgeSwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhXaWR0aCk7CiAgICAgVGV4dE1l
dHJpY3MgbWVhc3VyZVRleHQoRE9NU3RyaW5nIHRleHQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9ybS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNUcmFuc2Zvcm0uaWRsCmluZGV4IDYzZDU3ODFiNjE2OGE3NGEw
MTViMDhlYjIyYmNiNzJkYjEzNjJiZWQuLjdkOWFjOTUyYzQ4ZWJmZTMyMDA0NTM1MGVmNDg1ZDhm
NjE0OWEzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Ry
YW5zZm9ybS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNm
b3JtLmlkbApAQCAtMjUsMTYgKzI1LDE0IEBACiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL2NhbnZhcy5odG1sI2NhbnZhc3RyYW5zZm9ybQogaW50ZXJmYWNlIG1p
eGluIENhbnZhc1RyYW5zZm9ybSB7Ci0gICAgLy8gRklYTUU6IEFsbCB0aGUgdW5yZXN0cmljdGVk
IGZsb2F0IHBhcmFtZXRlcnMgYmVsb3cgc2hvdWxkIGJlIHVucmVzdHJpY3RlZCBkb3VibGVzLgot
CiAgICAgLy8gdHJhbnNmb3JtYXRpb25zIChkZWZhdWx0IHRyYW5zZm9ybSBpcyB0aGUgaWRlbnRp
dHkgbWF0cml4KQotICAgIHVuZGVmaW5lZCBzY2FsZSh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5y
ZXN0cmljdGVkIGZsb2F0IHkpOwotICAgIHVuZGVmaW5lZCByb3RhdGUodW5yZXN0cmljdGVkIGZs
b2F0IGFuZ2xlKTsKLSAgICB1bmRlZmluZWQgdHJhbnNsYXRlKHVucmVzdHJpY3RlZCBmbG9hdCB4
LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7Ci0gICAgdW5kZWZpbmVkIHRyYW5zZm9ybSh1bnJlc3Ry
aWN0ZWQgZmxvYXQgYSwgdW5yZXN0cmljdGVkIGZsb2F0IGIsIHVucmVzdHJpY3RlZCBmbG9hdCBj
LCB1bnJlc3RyaWN0ZWQgZmxvYXQgZCwgdW5yZXN0cmljdGVkIGZsb2F0IGUsIHVucmVzdHJpY3Rl
ZCBmbG9hdCBmKTsKKyAgICB1bmRlZmluZWQgc2NhbGUodW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1
bnJlc3RyaWN0ZWQgZG91YmxlIHkpOworICAgIHVuZGVmaW5lZCByb3RhdGUodW5yZXN0cmljdGVk
IGRvdWJsZSBhbmdsZSk7CisgICAgdW5kZWZpbmVkIHRyYW5zbGF0ZSh1bnJlc3RyaWN0ZWQgZG91
YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSk7CisgICAgdW5kZWZpbmVkIHRyYW5zZm9ybSh1
bnJlc3RyaWN0ZWQgZG91YmxlIGEsIHVucmVzdHJpY3RlZCBkb3VibGUgYiwgdW5yZXN0cmljdGVk
IGRvdWJsZSBjLCB1bnJlc3RyaWN0ZWQgZG91YmxlIGQsIHVucmVzdHJpY3RlZCBkb3VibGUgZSwg
dW5yZXN0cmljdGVkIGRvdWJsZSBmKTsKIAogICAgIFtOZXdPYmplY3RdIERPTU1hdHJpeCBnZXRU
cmFuc2Zvcm0oKTsKLSAgICB1bmRlZmluZWQgc2V0VHJhbnNmb3JtKHVucmVzdHJpY3RlZCBmbG9h
dCBhLCB1bnJlc3RyaWN0ZWQgZmxvYXQgYiwgdW5yZXN0cmljdGVkIGZsb2F0IGMsIHVucmVzdHJp
Y3RlZCBmbG9hdCBkLCB1bnJlc3RyaWN0ZWQgZmxvYXQgZSwgdW5yZXN0cmljdGVkIGZsb2F0IGYp
OworICAgIHVuZGVmaW5lZCBzZXRUcmFuc2Zvcm0odW5yZXN0cmljdGVkIGRvdWJsZSBhLCB1bnJl
c3RyaWN0ZWQgZG91YmxlIGIsIHVucmVzdHJpY3RlZCBkb3VibGUgYywgdW5yZXN0cmljdGVkIGRv
dWJsZSBkLCB1bnJlc3RyaWN0ZWQgZG91YmxlIGUsIHVucmVzdHJpY3RlZCBkb3VibGUgZik7CiAg
ICAgdW5kZWZpbmVkIHNldFRyYW5zZm9ybShvcHRpb25hbCBET01NYXRyaXgyREluaXQgdHJhbnNm
b3JtKTsKICAgICB1bmRlZmluZWQgcmVzZXRUcmFuc2Zvcm0oKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAppbmRleCAxNGRhMDA5YTg0MjZlZDk0ZDAyYTkxMGMzMjY5MDExMDM1
N2RkYmU0Li4yNzk3YTAxZmI4YmUzYWU1YjkwZmY5NTg4MjI2ZmFlOWUxZjcxNjk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTEyNiwxMiArMTI2LDEyIEBAIGF1dG8gT2Zm
c2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmb250UHJveHkoKSAtPiBjb25zdCBGb250
UHJveHkqIHsKICAgICByZXR1cm4gJnN0YXRlKCkuZm9udDsKIH0KIAotdm9pZCBPZmZzY3JlZW5D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxv
YXQgeCwgZmxvYXQgeSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCit2b2lkIE9mZnNj
cmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBkb3VibGUgeCwgZG91YmxlIHksIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhXaWR0aCkKIHsK
ICAgICBkcmF3VGV4dCh0ZXh0LCB4LCB5LCB0cnVlLCBtYXhXaWR0aCk7CiB9CiAKLXZvaWQgT2Zm
c2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYg
dGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCit2
b2lkIE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlVGV4dChjb25zdCBT
dHJpbmcmIHRleHQsIGRvdWJsZSB4LCBkb3VibGUgeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1h
eFdpZHRoKQogewogICAgIGRyYXdUZXh0KHRleHQsIHgsIHksIGZhbHNlLCBtYXhXaWR0aCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVl
bkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDhkODRmMWQ4NjQ4ZGMyNjNiNjJkMDc0
NzNlYTc4NDE0ZDc2NmE0MzIuLjE3Y2ViYmI0NTI1NGM2NTRjYjViMjYwYzNkNTk5MTFmM2Q5YWQ2
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09m
ZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC00Nyw4ICs0Nyw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0Rm9udChjb25zdCBTdHJpbmcmKTsKICAgICBDYW52YXNEaXJlY3Rp
b24gZGlyZWN0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIGZsb2F0IHgsIGZsb2F0IHksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3Rk
OjpudWxsb3B0KTsKLSAgICB2b2lkIHN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9h
dCB4LCBmbG9hdCB5LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9w
dCk7CisgICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGRvdWJsZSB4LCBkb3Vi
bGUgeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKKyAg
ICB2b2lkIHN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBkb3VibGUgeCwgZG91YmxlIHks
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgUmVm
PFRleHRNZXRyaWNzPiBtZWFzdXJlVGV4dChjb25zdCBTdHJpbmcmIHRleHQpOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAppbmRleCAx
ZDQ5MTQxNzhkODYwYTNiM2Y5YTkzODAwN2FkZWU2YjkxZjYzM2E1Li5jNTg3NGM3MDg3NDE3Nzkw
Mjk0NThmYjkyY2VjYTZkNDZiZjZjYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtNDM4LDYgKzQzOCwxMyBAQCBzdGQ6Om9wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnBybwogICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6U3RyaW5nIH19Owog
fQogCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4mIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoKmFyZ3VtZW50
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6Ok51bWJlciB9fTsKK30KKwogc3RkOjpvcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoc3RkOjpvcHRpb25hbDxmbG9hdD4mIGFyZ3VtZW50KQogewog
ICAgIGlmICghYXJndW1lbnQpCkBAIC01MzYsNiArNTQzLDExIEBAIHN0ZDo6b3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvCiAgICAgcmV0dXJuIHt7IGJ1aWxkQXJyYXlGb3JWZWN0b3IoV1RGTW92ZShkZWR1cGxp
Y2F0ZWQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKIH0KIAorc3RkOjpvcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoVmVjdG9yPGRvdWJsZT4mIGFyZ3VtZW50KQorewor
ICAgIHJldHVybiB7eyBidWlsZEFycmF5Rm9yVmVjdG9yKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dp
enpsZVR5cGU6OkFycmF5IH19OworfQorCiBzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1
bWVudChWZWN0b3I8ZmxvYXQ+JiBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgYnVpbGRBcnJh
eUZvclZlY3Rvcihhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpBcnJheSB9fTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
ci5oCmluZGV4IGMwZTg2NzQxMzlhMTdkMzQyNzVlODFkYjA5MDVhZTU0NmIxMGEwOGYuLmI1YWRj
ZjY0YTVkM2NmMjAwMWViNTBkMjQ1Y2Q5MjlhYzQ4NDk1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaApAQCAtMTUzLDYg
KzE1Myw3IEBAIGVudW0gSW1hZ2VTbW9vdGhpbmdRdWFsaXR5OwogICAgIG1hY3JvKEltYWdlRGF0
YVNldHRpbmdzJikgXAogICAgIG1hY3JvKEltYWdlU21vb3RoaW5nUXVhbGl0eSkgXAogICAgIG1h
Y3JvKHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+JikgXAorICAgIG1hY3JvKHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiYpIFwKICAgICBtYWNybyhQYXRoMkQqKSBcCiAgICAgbWFjcm8oUmVmUHRyPENhbnZhc0dy
YWRpZW50PiYpIFwKICAgICBtYWNybyhSZWZQdHI8Q2FudmFzUGF0dGVybj4mKSBcCkBAIC0xNjgs
NiArMTY5LDcgQEAgZW51bSBJbWFnZVNtb290aGluZ1F1YWxpdHk7CiAgICAgbWFjcm8oU3RyaW5n
JikgXAogICAgIG1hY3JvKFZlY3RvcjxTdHJpbmc+JikgXAogICAgIG1hY3JvKFZlY3RvcjxmbG9h
dD4mKSBcCisgICAgbWFjcm8oVmVjdG9yPGRvdWJsZT4mKSBcCiAgICAgbWFjcm8oVmVjdG9yPHVp
bnQzMl90PiYpIFwKICAgICBtYWNybyhWZWN0b3I8aW50MzJfdD4mKSBcCiAgICAgbWFjcm8oZG91
YmxlKSBcCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>