<?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>191509</bug_id>
          
          <creation_ts>2018-11-10 17:36:34 -0800</creation_ts>
          <short_desc>[LFC][IFC] Construct dedicated runs when the inline element requires it.</short_desc>
          <delta_ts>2018-11-12 08:21:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1477334</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-11-10 17:36:34 -0800</bug_when>
    <thetext>When a run overlaps multiple inline elements like this:
&lt;span&gt;normal text content&lt;/span&gt;&lt;span style=&quot;position: relative; left: 10px;&quot;&gt;but this one needs dedicated run&lt;/span&gt;&lt;span&gt;end of text&lt;/span&gt;
The above content generates one long run &lt;normal text contentbut this one needs dedicated runend of text&gt;
However the middle run needs to be moved independently from the rest of the content, hence it needs a dedicated inline run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477339</commentid>
    <comment_count>1</comment_count>
      <attachid>354488</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-11-10 18:10:23 -0800</bug_when>
    <thetext>Created attachment 354488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477350</commentid>
    <comment_count>2</comment_count>
      <attachid>354494</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-11-10 20:50:58 -0800</bug_when>
    <thetext>Created attachment 354494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477482</commentid>
    <comment_count>3</comment_count>
      <attachid>354532</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-11-11 21:50:18 -0800</bug_when>
    <thetext>Created attachment 354532
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477483</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-11-11 21:51:14 -0800</bug_when>
    <thetext>This is not supposed to be too common, but could improve if it ends up being in a hot codepath.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477567</commentid>
    <comment_count>5</comment_count>
      <attachid>354532</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-11-12 07:48:41 -0800</bug_when>
    <thetext>Comment on attachment 354532
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        &lt;span&gt;normal text content&lt;/span&gt;&lt;span style=&quot;position: relative; left: 10px;&quot;&gt;but this one needs a dedicated run&lt;/span&gt;&lt;span&gt;end of text&lt;/span&gt;

No test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477572</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-11-12 08:18:16 -0800</bug_when>
    <thetext>Committed r238087: &lt;https://trac.webkit.org/changeset/238087&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477573</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-12 08:19:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/45990074&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477576</commentid>
    <comment_count>8</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-11-12 08:21:07 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #5)
&gt; Comment on attachment 354532 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=354532&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        &lt;span&gt;normal text content&lt;/span&gt;&lt;span style=&quot;position: relative; left: 10px;&quot;&gt;but this one needs a dedicated run&lt;/span&gt;&lt;span&gt;end of text&lt;/span&gt;
&gt; 
&gt; No test?
The positioning part is not done yet. This patch was actually in preparation for that (have to split the runs in order to move them independently)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354488</attachid>
            <date>2018-11-10 18:10:23 -0800</date>
            <delta_ts>2018-11-10 20:50:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191509-20181110181020.patch</filename>
            <type>text/plain</type>
            <size>16875</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZkZjM4MTc2NGM4NGRi
MTliODc4ZmUwYmUzZGZlYzgxZDM2ZDQ5YS4uMzA1YTk5ZGQ3NjQxZjI4ZmYxNDA2ZWQ2NmI2Yzg1
ZWFhMDRlOTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE4LTExLTEwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBDb25zdHJ1
Y3QgZGVkaWNhdGVkIHJ1bnMgd2hlbiB0aGUgaW5saW5lIGVsZW1lbnQgcmVxdWlyZXMgaXQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1MDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBjZXJ0YWlu
IGNhc2VzLCBhIHJ1biBjYW4gb3ZlcmxhcCBtdWx0aXBsZSBpbmxpbmUgZWxlbWVudHMgbGlrZSB0
aGlzOgorICAgICAgICAKKyAgICAgICAgPHNwYW4+bm9ybWFsIHRleHQgY29udGVudDwvc3Bhbj48
c3BhbiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyBsZWZ0OiAxMHB4OyI+YnV0IHRoaXMgb25l
IG5lZWRzIGEgZGVkaWNhdGVkIHJ1bjwvc3Bhbj48c3Bhbj5lbmQgb2YgdGV4dDwvc3Bhbj4KKwor
ICAgICAgICBUaGUgY29udGVudCBhYm92ZSBnZW5lcmF0ZXMgb25lIGxvbmcgcnVuIDxub3JtYWwg
dGV4dCBjb250ZW50YnV0IHRoaXMgb25lIG5lZWRzIGRlZGljYXRlZCBydW5lbmQgb2YgdGV4dD4g
PC0gaW5wdXQgdG8gbGluZSBicmVha2luZy4KKyAgICAgICAgSG93ZXZlciwgc2luY2UgdGhlIG1p
ZGRsZSBydW4gaXMgcG9zaXRpb25lZCwgaXQgbmVlZHMgdG8gYmUgbW92ZWQgaW5kZXBlbmRlbnRs
eSBmcm9tIHRoZSByZXN0IG9mIHRoZSBjb250ZW50LCBoZW5jZSBpdCBuZWVkcyBhIGRlZGljYXRl
ZCBpbmxpbmUgcnVuLgorCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Y29udGVudFJlcXVpcmVzU2VwYXJhdGVSdW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c3BsaXRJbmxpbmVSdW5JZk5lZWRlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpwb3N0
UHJvY2Vzc0lubGluZVJ1bnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y2xvc2VMaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmFwcGVuZENvbnRlbnRUb0xpbmUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0SW5saW5lQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmlubGluZUZvcm1hdHRpbmdTdGF0ZSBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVMaW5lQnJlYWtlcjo6bmV4dFJ1bik6IG1pZC13b3JkIGJyZWFraW5nIGlzIG5vdCBp
bXBsZW1lbnRlZCB5ZXQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
UnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVJ1bjo6b3ZlcmxhcHNNdWx0
aXBsZUlubGluZUl0ZW1zIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVSdW5Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZVJ1blByb3ZpZGVyOjpwcm9jZXNzSW5saW5lVGV4dEl0ZW0pOgorICAgICAgICAqIGxheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZVJ1blByb3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZVJ1blByb3ZpZGVyOjpSdW46OlRleHRDb250ZXh0OjpleHBhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVSdW5Qcm92aWRlcjo6UnVuOjp0ZXh0Q29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVJ1blByb3ZpZGVyOjpSdW46OlRl
eHRDb250ZXh0OjpzZXRTdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZVJ1blByb3ZpZGVyOjpSdW46OlRleHRDb250ZXh0OjpzZXRMZW5ndGgpOiBEZWxldGVk
LgorCiAyMDE4LTExLTA5ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBhYmlsaXR5IHRvIGNvbmZpZ3VyZSBkb2N1bWVudC5jb29raWUgbGlmZXRpbWUg
Y2FwIHRocm91Z2ggdXNlciBkZWZhdWx0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCmluZGV4IDgzMjMxOGZlY2RkZjBlMmY5ZDBlNDgxYTBjODcyZmE2Nzk0MWE0ZjguLjVhM2Fm
ZTYwYWQxYzljMDZkM2I3YzA2ZmQxZTA0ZDEzMjU3OWFlMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKQEAgLTU4LDkgKzU4LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0KCkgY29uc3QKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbU3RhcnRdIC0+IGlubGluZSBmb3JtYXR0aW5nIGNv
bnRleHQgLT4gZm9ybWF0dGluZyByb290KCIgPDwgJnJvb3QoKSA8PCAiKSIpOwogCi0gICAgYXV0
byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRl
Pihmb3JtYXR0aW5nU3RhdGUoKSk7Ci0gICAgSW5saW5lUnVuUHJvdmlkZXIgaW5saW5lUnVuUHJv
dmlkZXIoaW5saW5lRm9ybWF0dGluZ1N0YXRlKTsKLQorICAgIElubGluZVJ1blByb3ZpZGVyIGlu
bGluZVJ1blByb3ZpZGVyKGlubGluZUZvcm1hdHRpbmdTdGF0ZSgpKTsKICAgICBjb2xsZWN0SW5s
aW5lQ29udGVudChpbmxpbmVSdW5Qcm92aWRlcik7CiAgICAgLy8gQ29tcHV0ZSB3aWR0aC9oZWln
aHQgZm9yIG5vbi10ZXh0IGNvbnRlbnQuCiAgICAgZm9yIChhdXRvJiBpbmxpbmVSdW4gOiBpbmxp
bmVSdW5Qcm92aWRlci5ydW5zKCkpIHsKQEAgLTEyNyw2ICsxMjUsMTA3IEBAIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdMaW5lKExpbmUmIGxpbmUpIGNvbnN0CiAg
ICAgbGluZS5pbml0KGxvZ2ljYWxSZWN0KTsKIH0KIAorYm9vbCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y29udGVudFJlcXVpcmVzU2VwYXJhdGVSdW4oY29uc3QgSW5saW5lSXRlbSYgaW5saW5l
SXRlbSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyB3YXkgdG9vIGluZWZmaWNpZW50
LiBXZSBzaG91bGQgcHJlLW1hcmsgdGhlIHJ1bnMgaW5zdGVhZCB3aGlsZSBmbGF0dGVuaW5nIHRo
ZSBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0LgorICAgIGZvciAoYXV0byogaW5saW5lQ29udGFp
bmVyID0gaW5saW5lSXRlbS5sYXlvdXRCb3goKS5wYXJlbnQoKTsgaW5saW5lQ29udGFpbmVyICE9
ICZyb290KCk7IGlubGluZUNvbnRhaW5lciA9IGlubGluZUNvbnRhaW5lci0+cGFyZW50KCkpIHsK
KyAgICAgICAgaWYgKGlubGluZUNvbnRhaW5lci0+aXNQb3NpdGlvbmVkKCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOyAKK30KKwordm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6c3BsaXRJbmxpbmVSdW5JZk5lZWRlZChJbmxpbmVSdW4mIGlu
bGluZVJ1bikgY29uc3QKK3sKKyAgICBBU1NFUlQoaW5saW5lUnVuLnRleHRDb250ZXh0KCkpOwor
ICAgIGlmICghaW5saW5lUnVuLm92ZXJsYXBzTXVsdGlwbGVJbmxpbmVJdGVtcygpKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBJbiBjZXJ0YWluIGNhc2VzLCBhIHJ1biBjYW4gb3ZlcmxhcCBt
dWx0aXBsZSBpbmxpbmUgZWxlbWVudHMgbGlrZSB0aGlzOgorICAgIC8vIDxzcGFuPm5vcm1hbCB0
ZXh0IGNvbnRlbnQ8L3NwYW4+PHNwYW4gc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgbGVmdDog
MTBweDsiPmJ1dCB0aGlzIG9uZSBuZWVkcyBhIGRlZGljYXRlZCBydW48L3NwYW4+PHNwYW4+ZW5k
IG9mIHRleHQ8L3NwYW4+CisgICAgLy8gVGhlIGNvbnRlbnQgYWJvdmUgZ2VuZXJhdGVzIG9uZSBs
b25nIHJ1biA8bm9ybWFsIHRleHQgY29udGVudGJ1dCB0aGlzIG9uZSBuZWVkcyBkZWRpY2F0ZWQg
cnVuZW5kIG9mIHRleHQ+CisgICAgLy8gSG93ZXZlciwgc2luY2UgdGhlIG1pZGRsZSBydW4gaXMg
cG9zaXRpb25lZCwgaXQgbmVlZHMgdG8gYmUgbW92ZWQgaW5kZXBlbmRlbnRseSBmcm9tIHRoZSBy
ZXN0IG9mIHRoZSBjb250ZW50LCBoZW5jZSBpdCBuZWVkcyBhIGRlZGljYXRlZCBpbmxpbmUgcnVu
LgorCisgICAgLy8gMS4gU3RhcnQgd2l0aCB0aGUgZmlyc3QgaW5saW5lIGl0ZW0gKGVsZW1lbnQp
IGFuZCB0cmF2ZXJzIHRoZSBsaXN0IHVudGlsCisgICAgLy8gMi4gZWl0aGVyIGZpbmQgYW4gaW5s
aW5lIGl0ZW0gdGhhdCBuZWVkcyBhIGRlZGljYXRlZCBydW4gb3Igd2UgcmVhY2ggdGhlIGVuZCBv
ZiB0aGUgcnVuCisgICAgLy8gMy4gU2hyaW5rIHRoZSBvcmlnaW5hbCBpbmxpbmUgcnVuIGFuZCBj
cmVhdGUgYSBuZXcgb25lLiAgICAgCisgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0g
dGhpcy0+aW5saW5lRm9ybWF0dGluZ1N0YXRlKCk7CisgICAgYXV0byYgaW5saW5lQ29udGVudCA9
IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVDb250ZW50KCk7CisgICAgYXV0byB0ZXh0VXRp
bCA9IFRleHRVdGlsIHsgaW5saW5lQ29udGVudCB9OworICAgIGF1dG8gcmV1c2VJbml0aWFsSW5s
aW5lUnVuID0gdHJ1ZTsKKworICAgIGF1dG8gc3BsaXQ9WyZdKGNvbnN0IGF1dG8mIGlubGluZUl0
ZW0sIGF1dG8gc3RhcnRQb3NpdGlvbiwgYXV0byBsZW5ndGgsIGF1dG8gY29udGVudFN0YXJ0KSB7
CisgICAgICAgIGF1dG8gd2lkdGggPSB0ZXh0VXRpbC53aWR0aChpbmxpbmVJdGVtLCBzdGFydFBv
c2l0aW9uLCBsZW5ndGgsIGNvbnRlbnRTdGFydCk7CisgICAgICAgIAorICAgICAgICAvLyBSZXVz
ZSAoc2hyaW5rKSB0aGUgb3JpZ2luYWwgcnVuIHRoZSB2ZXJ5IGZpcnN0IHRpbWUuIAorICAgICAg
ICBpZiAocmV1c2VJbml0aWFsSW5saW5lUnVuKSB7CisgICAgICAgICAgICBpbmxpbmVSdW4udGV4
dENvbnRleHQoKS0+c2V0TGVuZ3RoKGxlbmd0aCk7CisgICAgICAgICAgICBpbmxpbmVSdW4uc2V0
V2lkdGgod2lkdGgpOworCisgICAgICAgICAgICByZXVzZUluaXRpYWxJbmxpbmVSdW4gPSBmYWxz
ZTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZW50U3RhcnQgKyB3aWR0aDsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8gcnVuID0gSW5saW5lUnVuIHsgeyBpbmxpbmVSdW4ubG9naWNhbFRvcCgp
LCBjb250ZW50U3RhcnQsIHdpZHRoLCBpbmxpbmVSdW4uaGVpZ2h0KCkgfSwgaW5saW5lSXRlbSB9
OworICAgICAgICBydW4uc2V0VGV4dENvbnRleHQoeyBzdGFydFBvc2l0aW9uLCBsZW5ndGggfSk7
CisgICAgICAgIGlubGluZUZvcm1hdHRpbmdTdGF0ZS5hcHBlbmRJbmxpbmVSdW4ocnVuKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnRlbnRTdGFydCArIHdpZHRoOworICAgIH07CisKKyAgICBhdXRvIGNv
bnRlbnRTdGFydCA9IGlubGluZVJ1bi5sb2dpY2FsTGVmdCgpOworICAgIGF1dG8gc3RhcnRQb3Np
dGlvbiA9IGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5zdGFydCgpOworICAgIGF1dG8gcmVtYW5p
bmdMZW5ndGggPSBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+bGVuZ3RoKCk7CisKKyAgICB1bnNp
Z25lZCB1bmNvbW1pdHRlZExlbmd0aCA9IDA7CisgICAgSW5saW5lSXRlbSogZmlyc3RVbmNvbW1p
dHRlZElubGluZUl0ZW0gPSBudWxscHRyOworICAgIGZvciAoYXV0byBpdGVyYXRvciA9IGlubGlu
ZUNvbnRlbnQuZmluZDxjb25zdCBJbmxpbmVJdGVtJiwgSW5saW5lSXRlbUhhc2hUcmFuc2xhdG9y
PihpbmxpbmVSdW4uaW5saW5lSXRlbSgpKTsgaXRlcmF0b3IgIT0gaW5saW5lQ29udGVudC5lbmQo
KSAmJiByZW1hbmluZ0xlbmd0aCA+IDA7ICsraXRlcmF0b3IpIHsKKyAgICAgICAgYXV0byYgaW5s
aW5lSXRlbSA9ICoqaXRlcmF0b3I7CisKKyAgICAgICAgaWYgKCFjb250ZW50UmVxdWlyZXNTZXBh
cmF0ZVJ1bihpbmxpbmVJdGVtKSkgeworICAgICAgICAgICAgdW5jb21taXR0ZWRMZW5ndGggKz0g
c3RkOjptaW4ocmVtYW5pbmdMZW5ndGgsIGlubGluZUl0ZW0udGV4dENvbnRlbnQoKS5sZW5ndGgo
KSAtIHN0YXJ0UG9zaXRpb24pOworICAgICAgICAgICAgZmlyc3RVbmNvbW1pdHRlZElubGluZUl0
ZW0gPSAhZmlyc3RVbmNvbW1pdHRlZElubGluZUl0ZW0gPyAmaW5saW5lSXRlbSA6IGZpcnN0VW5j
b21taXR0ZWRJbmxpbmVJdGVtOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBDb21taXQgdGhlIGl0ZW1zIHRoYXQgZG9uJ3QgbmVlZCBkZWRpY2F0ZWQgcnVu
LgorICAgICAgICBpZiAoZmlyc3RVbmNvbW1pdHRlZElubGluZUl0ZW0pIHsKKyAgICAgICAgICAg
IGNvbnRlbnRTdGFydCA9IHNwbGl0KCpmaXJzdFVuY29tbWl0dGVkSW5saW5lSXRlbSwgc3RhcnRQ
b3NpdGlvbiwgdW5jb21taXR0ZWRMZW5ndGgsIGNvbnRlbnRTdGFydCk7CisKKyAgICAgICAgICAg
IHJlbWFuaW5nTGVuZ3RoIC09IHVuY29tbWl0dGVkTGVuZ3RoOworICAgICAgICAgICAgc3RhcnRQ
b3NpdGlvbiA9IDA7CisgICAgICAgICAgICB1bmNvbW1pdHRlZExlbmd0aCA9IDA7CisgICAgICAg
IH0KKworICAgICAgICAvLyBDcmVhdGUgYSBkZWRpY2F0ZWQgcnVuIGZvciB0aGlzIGlubGluZSBp
dGVtLgorICAgICAgICBhdXRvIGxlbmd0aCA9IHN0ZDo6bWluKHJlbWFuaW5nTGVuZ3RoLCBpbmxp
bmVJdGVtLnRleHRDb250ZW50KCkubGVuZ3RoKCkgLSBzdGFydFBvc2l0aW9uKTsKKyAgICAgICAg
Y29udGVudFN0YXJ0ID0gc3BsaXQoaW5saW5lSXRlbSwgc3RhcnRQb3NpdGlvbiwgbGVuZ3RoLCBj
b250ZW50U3RhcnQpOworICAgICAgICAKKyAgICAgICAgc3RhcnRQb3NpdGlvbiA9IDA7CisgICAg
ICAgIHJlbWFuaW5nTGVuZ3RoIC09IGxlbmd0aDsgCisgICAgICAgIGZpcnN0VW5jb21taXR0ZWRJ
bmxpbmVJdGVtID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICAvLyBBcHBhcmVudGx5IG5vIHNlY3Rp
b24gcmVxdWlyZXMgYSBkZWRpY2F0ZWQgcnVuLiAKKyAgICBpZiAocmV1c2VJbml0aWFsSW5saW5l
UnVuKSB7CisgICAgICAgIEFTU0VSVChyZW1hbmluZ0xlbmd0aCA9PSBpbmxpbmVSdW4udGV4dENv
bnRleHQoKS0+bGVuZ3RoKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJU
KHJlbWFuaW5nTGVuZ3RoID09IHVuY29tbWl0dGVkTGVuZ3RoKTsKKyAgICBzcGxpdCgqZmlyc3RV
bmNvbW1pdHRlZElubGluZUl0ZW0sIHN0YXJ0UG9zaXRpb24sIHVuY29tbWl0dGVkTGVuZ3RoLCBj
b250ZW50U3RhcnQpOworfQorCit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpwb3N0UHJv
Y2Vzc0lubGluZVJ1bnMoTGluZSYgbGluZSwgSXNMYXN0TGluZSBpc0xhc3RMaW5lLCBMaW5lOjpS
dW5SYW5nZSBydW5SYW5nZSkgY29uc3QKK3sKKyAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3Rh
dGUgPSB0aGlzLT5pbmxpbmVGb3JtYXR0aW5nU3RhdGUoKTsKKyAgICBHZW9tZXRyeTo6YWxpZ25S
dW5zKGlubGluZUZvcm1hdHRpbmdTdGF0ZSwgcm9vdCgpLnN0eWxlKCkudGV4dEFsaWduKCksIGxp
bmUsIHJ1blJhbmdlLCBpc0xhc3RMaW5lKTsKKworICAgIGF1dG8mIGlubGluZVJ1bnMgPSBpbmxp
bmVGb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVucygpOworICAgIEFTU0VSVCgqcnVuUmFuZ2UubGFz
dFJ1bkluZGV4IDwgaW5saW5lUnVucy5zaXplKCkpOworICAgIGZvciAoYXV0byBydW5JbmRleCA9
ICpydW5SYW5nZS5maXJzdFJ1bkluZGV4OyBydW5JbmRleCA8PSAqcnVuUmFuZ2UubGFzdFJ1bklu
ZGV4OyArK3J1bkluZGV4KQorICAgICAgICBzcGxpdElubGluZVJ1bklmTmVlZGVkKGlubGluZVJ1
bnNbcnVuSW5kZXhdKTsKK30KKwogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y2xvc2VM
aW5lKExpbmUmIGxpbmUsIElzTGFzdExpbmUgaXNMYXN0TGluZSkgY29uc3QKIHsKICAgICBhdXRv
IHJ1blJhbmdlID0gbGluZS5jbG9zZSgpOwpAQCAtMTM1LDcgKzIzNCw3IEBAIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmNsb3NlTGluZShMaW5lJiBsaW5lLCBJc0xhc3RMaW5lIGlzTGFz
dExpbmUpIGNvbnN0CiAgICAgaWYgKCFydW5SYW5nZS5maXJzdFJ1bkluZGV4KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBHZW9tZXRyeTo6YWxpZ25SdW5zKGRvd25jYXN0PElubGluZUZvcm1hdHRp
bmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKCkpLCByb290KCkuc3R5bGUoKS50ZXh0QWxpZ24oKSwg
bGluZSwgcnVuUmFuZ2UsIGlzTGFzdExpbmUpOworICAgIHBvc3RQcm9jZXNzSW5saW5lUnVucyhs
aW5lLCBpc0xhc3RMaW5lLCBydW5SYW5nZSk7CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmFwcGVuZENvbnRlbnRUb0xpbmUoTGluZSYgbGluZSwgY29uc3QgSW5saW5lTGluZUJy
ZWFrZXI6OlJ1biYgcnVuKSBjb25zdApAQCAtMTQ0LDEzICsyNDMsMTMgQEAgdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6YXBwZW5kQ29udGVudFRvTGluZShMaW5lJiBsaW5lLCBjb25zdCBJ
bmxpbmVMaW5lQnIKICAgICBsaW5lLmFwcGVuZENvbnRlbnQocnVuKTsKIAogICAgIGlmIChyb290
KCkuc3R5bGUoKS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5KQotICAgICAg
ICBHZW9tZXRyeTo6Y29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMoZG93bmNhc3Q8SW5saW5l
Rm9ybWF0dGluZ1N0YXRlPihmb3JtYXR0aW5nU3RhdGUoKSksIHJ1bi5jb250ZW50LCBsYXN0UnVu
VHlwZS52YWx1ZV9vcihJbmxpbmVSdW5Qcm92aWRlcjo6UnVuOjpUeXBlOjpOb25XaGl0ZXNwYWNl
KSk7CisgICAgICAgIEdlb21ldHJ5Ojpjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdGllcyhpbmxp
bmVGb3JtYXR0aW5nU3RhdGUoKSwgcnVuLmNvbnRlbnQsIGxhc3RSdW5UeXBlLnZhbHVlX29yKElu
bGluZVJ1blByb3ZpZGVyOjpSdW46OlR5cGU6Ok5vbldoaXRlc3BhY2UpKTsKIH0KIAogdm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5saW5lQ29udGVudChjb25zdCBJbmxpbmVS
dW5Qcm92aWRlciYgaW5saW5lUnVuUHJvdmlkZXIpIGNvbnN0CiB7CiAgICAgYXV0byYgbGF5b3V0
U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwotICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdT
dGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKCkp
OworICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMtPmlubGluZUZvcm1hdHRp
bmdTdGF0ZSgpOwogICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsg
aW5saW5lRm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKSB9OwogCiAgICAgTGluZSBsaW5l
KGlubGluZUZvcm1hdHRpbmdTdGF0ZSk7CkBAIC0zMzIsNyArNDMxLDcgQEAgRm9ybWF0dGluZ0Nv
bnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjppbnN0cmluc2kKICAgICBpZiAoYXV0byBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IGZv
cm1hdHRpbmdTdGF0ZUZvclJvb3QuaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMocm9vdCgpKSkK
ICAgICAgICAgcmV0dXJuICppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50czsKIAotICAgIGF1dG8m
IGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4o
Zm9ybWF0dGluZ1N0YXRlKCkpOworICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IHRo
aXMtPmlubGluZUZvcm1hdHRpbmdTdGF0ZSgpOwogICAgIElubGluZVJ1blByb3ZpZGVyIGlubGlu
ZVJ1blByb3ZpZGVyKGlubGluZUZvcm1hdHRpbmdTdGF0ZSk7CiAgICAgY29sbGVjdElubGluZUNv
bnRlbnQoaW5saW5lUnVuUHJvdmlkZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
aAppbmRleCA3MjQ3OTJhOWM0MzMzZTk1NDdiMzk0NDRhODA0ODcyYWI3YzUwNTIyLi4wZjljMWMy
MmJiY2Y1YTg0YmI4NDI5MzZkNzYxODZjZGZiYmQ0MDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIExheW91dCB7CiAKIGNsYXNzIElubGluZUZvcm1hdHRpbmdTdGF0ZTsKK3N0cnVjdCBJbmxp
bmVSdW47CiBjbGFzcyBJbmxpbmVSdW5Qcm92aWRlcjsKIAogLy8gVGhpcyBjbGFzcyBpbXBsZW1l
bnRzIHRoZSBsYXlvdXQgbG9naWMgZm9yIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHRzLgpAQCAt
MTExLDYgKzExMiw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplTmV3TGluZShMaW5l
JikgY29uc3Q7CiAgICAgdm9pZCBjbG9zZUxpbmUoTGluZSYsIElzTGFzdExpbmUpIGNvbnN0Owog
ICAgIHZvaWQgYXBwZW5kQ29udGVudFRvTGluZShMaW5lJiwgY29uc3QgSW5saW5lTGluZUJyZWFr
ZXI6OlJ1biYpIGNvbnN0OworICAgIHZvaWQgcG9zdFByb2Nlc3NJbmxpbmVSdW5zKExpbmUmLCBJ
c0xhc3RMaW5lLCBMaW5lOjpSdW5SYW5nZSkgY29uc3Q7CisgICAgdm9pZCBzcGxpdElubGluZVJ1
bklmTmVlZGVkKElubGluZVJ1biYpIGNvbnN0OworICAgIGJvb2wgY29udGVudFJlcXVpcmVzU2Vw
YXJhdGVSdW4oY29uc3QgSW5saW5lSXRlbSYpIGNvbnN0OwogCiAgICAgdm9pZCBsYXlvdXRGb3Jt
YXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlV2lk
dGhBbmRIZWlnaHRGb3JSZXBsYWNlZElubGluZUJveChjb25zdCBCb3gmKSBjb25zdDsKQEAgLTEy
Miw2ICsxMjYsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb2xsZWN0SW5saW5lQ29udGVudChJ
bmxpbmVSdW5Qcm92aWRlciYpIGNvbnN0OwogICAgIEluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRz
IGluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBJbmxp
bmVGb3JtYXR0aW5nU3RhdGUmIGlubGluZUZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKCkpOyB9CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5jcHAKaW5kZXggZjllNDI0NzI2ZjA0MjQ1ZmJjMzgy
MzA2MDllOWNlZDM5OGIwZjBmZS4uZDJlMTBkZjAyZTUyMmVmNzRlYTNlYmMwNTRlODEzMmZlYjBh
NGFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcApAQCAtNTQsNyArNTQsNiBAQCBzdGQ6Om9w
dGlvbmFsPElubGluZUxpbmVCcmVha2VyOjpSdW4+IElubGluZUxpbmVCcmVha2VyOjpuZXh0UnVu
KExheW91dFVuaXQgY29udAogICAgIC8vIEFkanVzdCB0aGUgY3VycmVudCBydW4gaWYgaXQgaXMg
c3BsaXQgbWlkd29yZC4KICAgICBpZiAobV9zcGxpdFBvc2l0aW9uKSB7CiAgICAgICAgIEFTU0VS
VChjdXJyZW50SW5saW5lUnVuLmlzVGV4dCgpKTsKLSAgICAgICAgY3VycmVudElubGluZVJ1bi50
ZXh0Q29udGV4dCgpLT5zZXRTdGFydCgqbV9zcGxpdFBvc2l0aW9uKTsKICAgICAgICAgbV9zcGxp
dFBvc2l0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVSdW4uaAppbmRleCA1ZjBlNTU4MGM0ZGNj
MTgzMTcwMDdiMTI0YmM5ZWFiOWEyYTNiYzEzLi42M2JiMGNhZTkxN2M3MDU5YWJlNWRkMGM3Y2Fi
NWZkODkwNzVkNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVSdW4uaApAQCAtNDMsNiArNDMsNyBAQCBzdHJ1Y3QgSW5saW5lUnVuIHsK
IAogICAgIExheW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxSZWN0Lndp
ZHRoKCk7IH0KICAgICBMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNh
bFJlY3QuaGVpZ2h0KCk7IH0KKyAgICBib29sIG92ZXJsYXBzTXVsdGlwbGVJbmxpbmVJdGVtcygp
IGNvbnN0OwogCiAgICAgdm9pZCBzZXRXaWR0aChMYXlvdXRVbml0IHdpZHRoKSB7IG1fbG9naWNh
bFJlY3Quc2V0V2lkdGgod2lkdGgpOyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsTGVmdChMYXlvdXRV
bml0IGxvZ2ljYWxMZWZ0KSB7IG1fbG9naWNhbFJlY3Quc2V0TGVmdChsb2dpY2FsTGVmdCk7IH0K
QEAgLTk4LDYgKzk5LDE2IEBAIGlubGluZSBJbmxpbmVSdW46OlRleHRDb250ZXh0OjpUZXh0Q29u
dGV4dChJdGVtUG9zaXRpb24gc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKIH0KIAoraW5saW5l
IGJvb2wgSW5saW5lUnVuOjpvdmVybGFwc011bHRpcGxlSW5saW5lSXRlbXMoKSBjb25zdAorewor
ICAgIC8vIE9ubHkgdGV4dCBjb250ZW50IGNhbiBvdmVybGFwIG11bHRpcGxlIGlubGluZSBlbGVt
ZW50cy4KKyAgICBpZiAoIW1fdGV4dENvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8gZW5kUG9zaXRpb24gPSBtX3RleHRDb250ZXh0LT5zdGFydCgpICsgbV90ZXh0Q29u
dGV4dC0+bGVuZ3RoKCk7CisgICAgcmV0dXJuIGVuZFBvc2l0aW9uID4gbV9pbmxpbmVJdGVtLnRl
eHRDb250ZW50KCkubGVuZ3RoKCk7Cit9CisKIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVuUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVuUHJvdmlk
ZXIuY3BwCmluZGV4IDljMTY1OGEzM2NlMTZlMWJkYmFmNTExNGRmMDA2M2JiOTFiODg2NWIuLjlh
YmIzY2ZmMjdhNjM2NjU0NjA3MDZiMDIwMjUzZWZlYzQ5Y2I1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVJ1blByb3ZpZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVSdW5Qcm92
aWRlci5jcHAKQEAgLTEzMCwxMCArMTMwLDkgQEAgdm9pZCBJbmxpbmVSdW5Qcm92aWRlcjo6cHJv
Y2Vzc0lubGluZVRleHRJdGVtKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pCiAgICAgICAg
IGF1dG8gaXNXaGl0ZXNwYWNlUnVuID0gaXNXaGl0ZXNwYWNlKHRleHRbY3VycmVudEl0ZW1Qb3Np
dGlvbl0sIHN0eWxlLnByZXNlcnZlTmV3bGluZSgpKTsKICAgICAgICAgYXV0byBsZW5ndGggPSBp
c1doaXRlc3BhY2VSdW4gPyBtb3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKGlubGluZUl0
ZW0sIGN1cnJlbnRJdGVtUG9zaXRpb24pIDogbW92ZVRvTmV4dEJyZWFrYWJsZVBvc2l0aW9uKGlu
bGluZUl0ZW0sIGN1cnJlbnRJdGVtUG9zaXRpb24pOwogCi0gICAgICAgIGlmIChpc0NvbnRpbm91
c0NvbnRlbnQoaXNXaGl0ZXNwYWNlUnVuID8gSW5saW5lUnVuUHJvdmlkZXI6OlJ1bjo6VHlwZTo6
V2hpdGVzcGFjZSA6IElubGluZVJ1blByb3ZpZGVyOjpSdW46OlR5cGU6Ok5vbldoaXRlc3BhY2Us
IGlubGluZUl0ZW0pKSB7Ci0gICAgICAgICAgICBhdXRvIHRleHRDb250ZXh0ID0gbV9pbmxpbmVS
dW5zLmxhc3QoKS50ZXh0Q29udGV4dCgpOwotICAgICAgICAgICAgdGV4dENvbnRleHQtPnNldExl
bmd0aCh0ZXh0Q29udGV4dC0+bGVuZ3RoKCkgKyBsZW5ndGgpOwotICAgICAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAoaXNDb250aW5vdXNDb250ZW50KGlzV2hpdGVzcGFjZVJ1biA/IElubGluZVJ1
blByb3ZpZGVyOjpSdW46OlR5cGU6OldoaXRlc3BhY2UgOiBJbmxpbmVSdW5Qcm92aWRlcjo6UnVu
OjpUeXBlOjpOb25XaGl0ZXNwYWNlLCBpbmxpbmVJdGVtKSkKKyAgICAgICAgICAgIG1faW5saW5l
UnVucy5sYXN0KCkudGV4dENvbnRleHQoKS0+ZXhwYW5kKGxlbmd0aCk7CisgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgbV9pbmxpbmVSdW5zLmFwcGVuZChpc1doaXRlc3BhY2VSdW4gPyBJbmxp
bmVSdW5Qcm92aWRlcjo6UnVuOjpjcmVhdGVXaGl0ZXNwYWNlUnVuKGlubGluZUl0ZW0sIGN1cnJl
bnRJdGVtUG9zaXRpb24sIGxlbmd0aCwgc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCkpCiAgICAg
ICAgICAgICAgICAgOiBJbmxpbmVSdW5Qcm92aWRlcjo6UnVuOjpjcmVhdGVOb25XaGl0ZXNwYWNl
UnVuKGlubGluZUl0ZW0sIGN1cnJlbnRJdGVtUG9zaXRpb24sIGxlbmd0aCkpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVSdW5Qcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lUnVuUHJvdmlkZXIuaAppbmRleCAxMGE0Y2RlNTQ3YzM0YmUwMmVmMWEzOGNkNzU1MmNk
MTk2MmU4YTc1Li4yODM0MWUxM2ExNmY4NDdmZTcxYjYxYzFmM2U0NTZiZmY2ZjYyNDdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVSdW5Q
cm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVJ1blByb3ZpZGVyLmgKQEAgLTgyLDEwICs4MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICAg
ICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb2xsYXBzZWQgPT0gSXND
b2xsYXBzZWQ6OlllczsgfQogCi0gICAgICAgICAgICB2b2lkIHNldFN0YXJ0KEl0ZW1Qb3NpdGlv
biBzdGFydCkgeyBtX3N0YXJ0ID0gc3RhcnQ7IH0KLSAgICAgICAgICAgIHZvaWQgc2V0TGVuZ3Ro
KHVuc2lnbmVkIGxlbmd0aCkgeyBtX2xlbmd0aCA9IGxlbmd0aDsgfQotCiAgICAgICAgIHByaXZh
dGU6CisgICAgICAgICAgICBmcmllbmQgY2xhc3MgSW5saW5lUnVuUHJvdmlkZXI7CisKKyAgICAg
ICAgICAgIHZvaWQgZXhwYW5kKHVuc2lnbmVkIGxlbmd0aCkgeyBtX2xlbmd0aCArPSBsZW5ndGg7
IH0KKwogICAgICAgICAgICAgSXRlbVBvc2l0aW9uIG1fc3RhcnQgeyAwIH07CiAgICAgICAgICAg
ICB1bnNpZ25lZCBtX2xlbmd0aCB7IDAgfTsKICAgICAgICAgICAgIElzQ29sbGFwc2VkIG1faXND
b2xsYXBzZWQgeyBJc0NvbGxhcHNlZDo6Tm8gfTsKQEAgLTk2LDcgKzk3LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5saW5lSXRlbTsgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIElubGlu
ZVJ1blByb3ZpZGVyOworCiAgICAgICAgIFJ1bihjb25zdCBJbmxpbmVJdGVtJiwgVHlwZSwgc3Rk
OjpvcHRpb25hbDxUZXh0Q29udGV4dD4pOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFRleHRDb250
ZXh0PiYgdGV4dENvbnRleHQoKSB7IHJldHVybiBtX3RleHRDb250ZXh0OyB9CiAKICAgICAgICAg
Y29uc3QgVHlwZSBtX3R5cGU7CiAgICAgICAgIGNvbnN0IElubGluZUl0ZW0mIG1faW5saW5lSXRl
bTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354494</attachid>
            <date>2018-11-10 20:50:58 -0800</date>
            <delta_ts>2018-11-11 14:46:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191509-20181110205055.patch</filename>
            <type>text/plain</type>
            <size>16875</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZkZjM4MTc2NGM4NGRi
MTliODc4ZmUwYmUzZGZlYzgxZDM2ZDQ5YS4uMzA1YTk5ZGQ3NjQxZjI4ZmYxNDA2ZWQ2NmI2Yzg1
ZWFhMDRlOTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE4LTExLTEwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBDb25zdHJ1
Y3QgZGVkaWNhdGVkIHJ1bnMgd2hlbiB0aGUgaW5saW5lIGVsZW1lbnQgcmVxdWlyZXMgaXQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1MDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBjZXJ0YWlu
IGNhc2VzLCBhIHJ1biBjYW4gb3ZlcmxhcCBtdWx0aXBsZSBpbmxpbmUgZWxlbWVudHMgbGlrZSB0
aGlzOgorICAgICAgICAKKyAgICAgICAgPHNwYW4+bm9ybWFsIHRleHQgY29udGVudDwvc3Bhbj48
c3BhbiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyBsZWZ0OiAxMHB4OyI+YnV0IHRoaXMgb25l
IG5lZWRzIGEgZGVkaWNhdGVkIHJ1bjwvc3Bhbj48c3Bhbj5lbmQgb2YgdGV4dDwvc3Bhbj4KKwor
ICAgICAgICBUaGUgY29udGVudCBhYm92ZSBnZW5lcmF0ZXMgb25lIGxvbmcgcnVuIDxub3JtYWwg
dGV4dCBjb250ZW50YnV0IHRoaXMgb25lIG5lZWRzIGRlZGljYXRlZCBydW5lbmQgb2YgdGV4dD4g
PC0gaW5wdXQgdG8gbGluZSBicmVha2luZy4KKyAgICAgICAgSG93ZXZlciwgc2luY2UgdGhlIG1p
ZGRsZSBydW4gaXMgcG9zaXRpb25lZCwgaXQgbmVlZHMgdG8gYmUgbW92ZWQgaW5kZXBlbmRlbnRs
eSBmcm9tIHRoZSByZXN0IG9mIHRoZSBjb250ZW50LCBoZW5jZSBpdCBuZWVkcyBhIGRlZGljYXRl
ZCBpbmxpbmUgcnVuLgorCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Y29udGVudFJlcXVpcmVzU2VwYXJhdGVSdW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c3BsaXRJbmxpbmVSdW5JZk5lZWRlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpwb3N0
UHJvY2Vzc0lubGluZVJ1bnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y2xvc2VMaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmFwcGVuZENvbnRlbnRUb0xpbmUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0SW5saW5lQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmlubGluZUZvcm1hdHRpbmdTdGF0ZSBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVMaW5lQnJlYWtlcjo6bmV4dFJ1bik6IG1pZC13b3JkIGJyZWFraW5nIGlzIG5vdCBp
bXBsZW1lbnRlZCB5ZXQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
UnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVJ1bjo6b3ZlcmxhcHNNdWx0
aXBsZUlubGluZUl0ZW1zIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVSdW5Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZVJ1blByb3ZpZGVyOjpwcm9jZXNzSW5saW5lVGV4dEl0ZW0pOgorICAgICAgICAqIGxheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZVJ1blByb3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZVJ1blByb3ZpZGVyOjpSdW46OlRleHRDb250ZXh0OjpleHBhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVSdW5Qcm92aWRlcjo6UnVuOjp0ZXh0Q29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVJ1blByb3ZpZGVyOjpSdW46OlRl
eHRDb250ZXh0OjpzZXRTdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZVJ1blByb3ZpZGVyOjpSdW46OlRleHRDb250ZXh0OjpzZXRMZW5ndGgpOiBEZWxldGVk
LgorCiAyMDE4LTExLTA5ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBhYmlsaXR5IHRvIGNvbmZpZ3VyZSBkb2N1bWVudC5jb29raWUgbGlmZXRpbWUg
Y2FwIHRocm91Z2ggdXNlciBkZWZhdWx0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCmluZGV4IDgzMjMxOGZlY2RkZjBlMmY5ZDBlNDgxYTBjODcyZmE2Nzk0MWE0ZjguLjE4MzA1
ODc0MWVhODRhYjQwZTA0MWZmYjYwYmM4MzViNmI1MjNkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKQEAgLTU4LDkgKzU4LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0KCkgY29uc3QKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbU3RhcnRdIC0+IGlubGluZSBmb3JtYXR0aW5nIGNv
bnRleHQgLT4gZm9ybWF0dGluZyByb290KCIgPDwgJnJvb3QoKSA8PCAiKSIpOwogCi0gICAgYXV0
byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRl
Pihmb3JtYXR0aW5nU3RhdGUoKSk7Ci0gICAgSW5saW5lUnVuUHJvdmlkZXIgaW5saW5lUnVuUHJv
dmlkZXIoaW5saW5lRm9ybWF0dGluZ1N0YXRlKTsKLQorICAgIElubGluZVJ1blByb3ZpZGVyIGlu
bGluZVJ1blByb3ZpZGVyKGlubGluZUZvcm1hdHRpbmdTdGF0ZSgpKTsKICAgICBjb2xsZWN0SW5s
aW5lQ29udGVudChpbmxpbmVSdW5Qcm92aWRlcik7CiAgICAgLy8gQ29tcHV0ZSB3aWR0aC9oZWln
aHQgZm9yIG5vbi10ZXh0IGNvbnRlbnQuCiAgICAgZm9yIChhdXRvJiBpbmxpbmVSdW4gOiBpbmxp
bmVSdW5Qcm92aWRlci5ydW5zKCkpIHsKQEAgLTEyNyw2ICsxMjUsMTA3IEBAIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdMaW5lKExpbmUmIGxpbmUpIGNvbnN0CiAg
ICAgbGluZS5pbml0KGxvZ2ljYWxSZWN0KTsKIH0KIAorYm9vbCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y29udGVudFJlcXVpcmVzU2VwYXJhdGVSdW4oY29uc3QgSW5saW5lSXRlbSYgaW5saW5l
SXRlbSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyB3YXkgdG9vIGluZWZmaWNpZW50
LiBXZSBzaG91bGQgcHJlLW1hcmsgdGhlIHJ1bnMgaW5zdGVhZCB3aGlsZSBmbGF0dGVuaW5nIHRo
ZSBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0LgorICAgIGZvciAoYXV0byogaW5saW5lQ29udGFp
bmVyID0gaW5saW5lSXRlbS5sYXlvdXRCb3goKS5wYXJlbnQoKTsgaW5saW5lQ29udGFpbmVyICE9
ICZyb290KCk7IGlubGluZUNvbnRhaW5lciA9IGlubGluZUNvbnRhaW5lci0+cGFyZW50KCkpIHsK
KyAgICAgICAgaWYgKGlubGluZUNvbnRhaW5lci0+aXNQb3NpdGlvbmVkKCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOyAKK30KKwordm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6c3BsaXRJbmxpbmVSdW5JZk5lZWRlZChJbmxpbmVSdW4mIGlu
bGluZVJ1bikgY29uc3QKK3sKKyAgICBpZiAoIWlubGluZVJ1bi5vdmVybGFwc011bHRpcGxlSW5s
aW5lSXRlbXMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGlubGluZVJ1bi50ZXh0
Q29udGV4dCgpKTsKKyAgICAvLyBJbiBjZXJ0YWluIGNhc2VzLCBhIHJ1biBjYW4gb3ZlcmxhcCBt
dWx0aXBsZSBpbmxpbmUgZWxlbWVudHMgbGlrZSB0aGlzOgorICAgIC8vIDxzcGFuPm5vcm1hbCB0
ZXh0IGNvbnRlbnQ8L3NwYW4+PHNwYW4gc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgbGVmdDog
MTBweDsiPmJ1dCB0aGlzIG9uZSBuZWVkcyBhIGRlZGljYXRlZCBydW48L3NwYW4+PHNwYW4+ZW5k
IG9mIHRleHQ8L3NwYW4+CisgICAgLy8gVGhlIGNvbnRlbnQgYWJvdmUgZ2VuZXJhdGVzIG9uZSBs
b25nIHJ1biA8bm9ybWFsIHRleHQgY29udGVudGJ1dCB0aGlzIG9uZSBuZWVkcyBkZWRpY2F0ZWQg
cnVuZW5kIG9mIHRleHQ+CisgICAgLy8gSG93ZXZlciwgc2luY2UgdGhlIG1pZGRsZSBydW4gaXMg
cG9zaXRpb25lZCwgaXQgbmVlZHMgdG8gYmUgbW92ZWQgaW5kZXBlbmRlbnRseSBmcm9tIHRoZSBy
ZXN0IG9mIHRoZSBjb250ZW50LCBoZW5jZSBpdCBuZWVkcyBhIGRlZGljYXRlZCBpbmxpbmUgcnVu
LgorCisgICAgLy8gMS4gU3RhcnQgd2l0aCB0aGUgZmlyc3QgaW5saW5lIGl0ZW0gKGVsZW1lbnQp
IGFuZCB0cmF2ZXJzIHRoZSBsaXN0IHVudGlsCisgICAgLy8gMi4gZWl0aGVyIGZpbmQgYW4gaW5s
aW5lIGl0ZW0gdGhhdCBuZWVkcyBhIGRlZGljYXRlZCBydW4gb3Igd2UgcmVhY2ggdGhlIGVuZCBv
ZiB0aGUgcnVuCisgICAgLy8gMy4gU2hyaW5rIHRoZSBvcmlnaW5hbCBpbmxpbmUgcnVuIGFuZCBj
cmVhdGUgYSBuZXcgb25lLiAgICAgCisgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0g
dGhpcy0+aW5saW5lRm9ybWF0dGluZ1N0YXRlKCk7CisgICAgYXV0byYgaW5saW5lQ29udGVudCA9
IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVDb250ZW50KCk7CisgICAgYXV0byB0ZXh0VXRp
bCA9IFRleHRVdGlsIHsgaW5saW5lQ29udGVudCB9OworICAgIGF1dG8gcmV1c2VJbml0aWFsSW5s
aW5lUnVuID0gdHJ1ZTsKKworICAgIGF1dG8gc3BsaXQ9WyZdKGNvbnN0IGF1dG8mIGlubGluZUl0
ZW0sIGF1dG8gc3RhcnRQb3NpdGlvbiwgYXV0byBsZW5ndGgsIGF1dG8gY29udGVudFN0YXJ0KSB7
CisgICAgICAgIGF1dG8gd2lkdGggPSB0ZXh0VXRpbC53aWR0aChpbmxpbmVJdGVtLCBzdGFydFBv
c2l0aW9uLCBsZW5ndGgsIGNvbnRlbnRTdGFydCk7CisgICAgICAgIAorICAgICAgICAvLyBSZXVz
ZSAoc2hyaW5rKSB0aGUgb3JpZ2luYWwgcnVuIHRoZSB2ZXJ5IGZpcnN0IHRpbWUuIAorICAgICAg
ICBpZiAocmV1c2VJbml0aWFsSW5saW5lUnVuKSB7CisgICAgICAgICAgICBpbmxpbmVSdW4udGV4
dENvbnRleHQoKS0+c2V0TGVuZ3RoKGxlbmd0aCk7CisgICAgICAgICAgICBpbmxpbmVSdW4uc2V0
V2lkdGgod2lkdGgpOworCisgICAgICAgICAgICByZXVzZUluaXRpYWxJbmxpbmVSdW4gPSBmYWxz
ZTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZW50U3RhcnQgKyB3aWR0aDsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8gcnVuID0gSW5saW5lUnVuIHsgeyBpbmxpbmVSdW4ubG9naWNhbFRvcCgp
LCBjb250ZW50U3RhcnQsIHdpZHRoLCBpbmxpbmVSdW4uaGVpZ2h0KCkgfSwgaW5saW5lSXRlbSB9
OworICAgICAgICBydW4uc2V0VGV4dENvbnRleHQoeyBzdGFydFBvc2l0aW9uLCBsZW5ndGggfSk7
CisgICAgICAgIGlubGluZUZvcm1hdHRpbmdTdGF0ZS5hcHBlbmRJbmxpbmVSdW4ocnVuKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnRlbnRTdGFydCArIHdpZHRoOworICAgIH07CisKKyAgICBhdXRvIGNv
bnRlbnRTdGFydCA9IGlubGluZVJ1bi5sb2dpY2FsTGVmdCgpOworICAgIGF1dG8gc3RhcnRQb3Np
dGlvbiA9IGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5zdGFydCgpOworICAgIGF1dG8gcmVtYW5p
bmdMZW5ndGggPSBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+bGVuZ3RoKCk7CisKKyAgICB1bnNp
Z25lZCB1bmNvbW1pdHRlZExlbmd0aCA9IDA7CisgICAgSW5saW5lSXRlbSogZmlyc3RVbmNvbW1p
dHRlZElubGluZUl0ZW0gPSBudWxscHRyOworICAgIGZvciAoYXV0byBpdGVyYXRvciA9IGlubGlu
ZUNvbnRlbnQuZmluZDxjb25zdCBJbmxpbmVJdGVtJiwgSW5saW5lSXRlbUhhc2hUcmFuc2xhdG9y
PihpbmxpbmVSdW4uaW5saW5lSXRlbSgpKTsgaXRlcmF0b3IgIT0gaW5saW5lQ29udGVudC5lbmQo
KSAmJiByZW1hbmluZ0xlbmd0aCA+IDA7ICsraXRlcmF0b3IpIHsKKyAgICAgICAgYXV0byYgaW5s
aW5lSXRlbSA9ICoqaXRlcmF0b3I7CisKKyAgICAgICAgaWYgKCFjb250ZW50UmVxdWlyZXNTZXBh
cmF0ZVJ1bihpbmxpbmVJdGVtKSkgeworICAgICAgICAgICAgdW5jb21taXR0ZWRMZW5ndGggKz0g
c3RkOjptaW4ocmVtYW5pbmdMZW5ndGgsIGlubGluZUl0ZW0udGV4dENvbnRlbnQoKS5sZW5ndGgo
KSAtIHN0YXJ0UG9zaXRpb24pOworICAgICAgICAgICAgZmlyc3RVbmNvbW1pdHRlZElubGluZUl0
ZW0gPSAhZmlyc3RVbmNvbW1pdHRlZElubGluZUl0ZW0gPyAmaW5saW5lSXRlbSA6IGZpcnN0VW5j
b21taXR0ZWRJbmxpbmVJdGVtOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBDb21taXQgdGhlIGl0ZW1zIHRoYXQgZG9uJ3QgbmVlZCBkZWRpY2F0ZWQgcnVu
LgorICAgICAgICBpZiAoZmlyc3RVbmNvbW1pdHRlZElubGluZUl0ZW0pIHsKKyAgICAgICAgICAg
IGNvbnRlbnRTdGFydCA9IHNwbGl0KCpmaXJzdFVuY29tbWl0dGVkSW5saW5lSXRlbSwgc3RhcnRQ
b3NpdGlvbiwgdW5jb21taXR0ZWRMZW5ndGgsIGNvbnRlbnRTdGFydCk7CisKKyAgICAgICAgICAg
IHJlbWFuaW5nTGVuZ3RoIC09IHVuY29tbWl0dGVkTGVuZ3RoOworICAgICAgICAgICAgc3RhcnRQ
b3NpdGlvbiA9IDA7CisgICAgICAgICAgICB1bmNvbW1pdHRlZExlbmd0aCA9IDA7CisgICAgICAg
IH0KKworICAgICAgICAvLyBDcmVhdGUgYSBkZWRpY2F0ZWQgcnVuIGZvciB0aGlzIGlubGluZSBp
dGVtLgorICAgICAgICBhdXRvIGxlbmd0aCA9IHN0ZDo6bWluKHJlbWFuaW5nTGVuZ3RoLCBpbmxp
bmVJdGVtLnRleHRDb250ZW50KCkubGVuZ3RoKCkgLSBzdGFydFBvc2l0aW9uKTsKKyAgICAgICAg
Y29udGVudFN0YXJ0ID0gc3BsaXQoaW5saW5lSXRlbSwgc3RhcnRQb3NpdGlvbiwgbGVuZ3RoLCBj
b250ZW50U3RhcnQpOworICAgICAgICAKKyAgICAgICAgc3RhcnRQb3NpdGlvbiA9IDA7CisgICAg
ICAgIHJlbWFuaW5nTGVuZ3RoIC09IGxlbmd0aDsgCisgICAgICAgIGZpcnN0VW5jb21taXR0ZWRJ
bmxpbmVJdGVtID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICAvLyBBcHBhcmVudGx5IG5vIHNlY3Rp
b24gcmVxdWlyZXMgYSBkZWRpY2F0ZWQgcnVuLiAKKyAgICBpZiAocmV1c2VJbml0aWFsSW5saW5l
UnVuKSB7CisgICAgICAgIEFTU0VSVChyZW1hbmluZ0xlbmd0aCA9PSBpbmxpbmVSdW4udGV4dENv
bnRleHQoKS0+bGVuZ3RoKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJU
KHJlbWFuaW5nTGVuZ3RoID09IHVuY29tbWl0dGVkTGVuZ3RoKTsKKyAgICBzcGxpdCgqZmlyc3RV
bmNvbW1pdHRlZElubGluZUl0ZW0sIHN0YXJ0UG9zaXRpb24sIHVuY29tbWl0dGVkTGVuZ3RoLCBj
b250ZW50U3RhcnQpOworfQorCit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpwb3N0UHJv
Y2Vzc0lubGluZVJ1bnMoTGluZSYgbGluZSwgSXNMYXN0TGluZSBpc0xhc3RMaW5lLCBMaW5lOjpS
dW5SYW5nZSBydW5SYW5nZSkgY29uc3QKK3sKKyAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3Rh
dGUgPSB0aGlzLT5pbmxpbmVGb3JtYXR0aW5nU3RhdGUoKTsKKyAgICBHZW9tZXRyeTo6YWxpZ25S
dW5zKGlubGluZUZvcm1hdHRpbmdTdGF0ZSwgcm9vdCgpLnN0eWxlKCkudGV4dEFsaWduKCksIGxp
bmUsIHJ1blJhbmdlLCBpc0xhc3RMaW5lKTsKKworICAgIGF1dG8mIGlubGluZVJ1bnMgPSBpbmxp
bmVGb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVucygpOworICAgIEFTU0VSVCgqcnVuUmFuZ2UubGFz
dFJ1bkluZGV4IDwgaW5saW5lUnVucy5zaXplKCkpOworICAgIGZvciAoYXV0byBydW5JbmRleCA9
ICpydW5SYW5nZS5maXJzdFJ1bkluZGV4OyBydW5JbmRleCA8PSAqcnVuUmFuZ2UubGFzdFJ1bklu
ZGV4OyArK3J1bkluZGV4KQorICAgICAgICBzcGxpdElubGluZVJ1bklmTmVlZGVkKGlubGluZVJ1
bnNbcnVuSW5kZXhdKTsKK30KKwogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y2xvc2VM
aW5lKExpbmUmIGxpbmUsIElzTGFzdExpbmUgaXNMYXN0TGluZSkgY29uc3QKIHsKICAgICBhdXRv
IHJ1blJhbmdlID0gbGluZS5jbG9zZSgpOwpAQCAtMTM1LDcgKzIzNCw3IEBAIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmNsb3NlTGluZShMaW5lJiBsaW5lLCBJc0xhc3RMaW5lIGlzTGFz
dExpbmUpIGNvbnN0CiAgICAgaWYgKCFydW5SYW5nZS5maXJzdFJ1bkluZGV4KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBHZW9tZXRyeTo6YWxpZ25SdW5zKGRvd25jYXN0PElubGluZUZvcm1hdHRp
bmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKCkpLCByb290KCkuc3R5bGUoKS50ZXh0QWxpZ24oKSwg
bGluZSwgcnVuUmFuZ2UsIGlzTGFzdExpbmUpOworICAgIHBvc3RQcm9jZXNzSW5saW5lUnVucyhs
aW5lLCBpc0xhc3RMaW5lLCBydW5SYW5nZSk7CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmFwcGVuZENvbnRlbnRUb0xpbmUoTGluZSYgbGluZSwgY29uc3QgSW5saW5lTGluZUJy
ZWFrZXI6OlJ1biYgcnVuKSBjb25zdApAQCAtMTQ0LDEzICsyNDMsMTMgQEAgdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6YXBwZW5kQ29udGVudFRvTGluZShMaW5lJiBsaW5lLCBjb25zdCBJ
bmxpbmVMaW5lQnIKICAgICBsaW5lLmFwcGVuZENvbnRlbnQocnVuKTsKIAogICAgIGlmIChyb290
KCkuc3R5bGUoKS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5KQotICAgICAg
ICBHZW9tZXRyeTo6Y29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMoZG93bmNhc3Q8SW5saW5l
Rm9ybWF0dGluZ1N0YXRlPihmb3JtYXR0aW5nU3RhdGUoKSksIHJ1bi5jb250ZW50LCBsYXN0UnVu
VHlwZS52YWx1ZV9vcihJbmxpbmVSdW5Qcm92aWRlcjo6UnVuOjpUeXBlOjpOb25XaGl0ZXNwYWNl
KSk7CisgICAgICAgIEdlb21ldHJ5Ojpjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdGllcyhpbmxp
bmVGb3JtYXR0aW5nU3RhdGUoKSwgcnVuLmNvbnRlbnQsIGxhc3RSdW5UeXBlLnZhbHVlX29yKElu
bGluZVJ1blByb3ZpZGVyOjpSdW46OlR5cGU6Ok5vbldoaXRlc3BhY2UpKTsKIH0KIAogdm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5saW5lQ29udGVudChjb25zdCBJbmxpbmVS
dW5Qcm92aWRlciYgaW5saW5lUnVuUHJvdmlkZXIpIGNvbnN0CiB7CiAgICAgYXV0byYgbGF5b3V0
U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwotICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdT
dGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKCkp
OworICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMtPmlubGluZUZvcm1hdHRp
bmdTdGF0ZSgpOwogICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsg
aW5saW5lRm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKSB9OwogCiAgICAgTGluZSBsaW5l
KGlubGluZUZvcm1hdHRpbmdTdGF0ZSk7CkBAIC0zMzIsNyArNDMxLDcgQEAgRm9ybWF0dGluZ0Nv
bnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjppbnN0cmluc2kKICAgICBpZiAoYXV0byBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IGZv
cm1hdHRpbmdTdGF0ZUZvclJvb3QuaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMocm9vdCgpKSkK
ICAgICAgICAgcmV0dXJuICppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50czsKIAotICAgIGF1dG8m
IGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4o
Zm9ybWF0dGluZ1N0YXRlKCkpOworICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IHRo
aXMtPmlubGluZUZvcm1hdHRpbmdTdGF0ZSgpOwogICAgIElubGluZVJ1blByb3ZpZGVyIGlubGlu
ZVJ1blByb3ZpZGVyKGlubGluZUZvcm1hdHRpbmdTdGF0ZSk7CiAgICAgY29sbGVjdElubGluZUNv
bnRlbnQoaW5saW5lUnVuUHJvdmlkZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
aAppbmRleCA3MjQ3OTJhOWM0MzMzZTk1NDdiMzk0NDRhODA0ODcyYWI3YzUwNTIyLi4wZjljMWMy
MmJiY2Y1YTg0YmI4NDI5MzZkNzYxODZjZGZiYmQ0MDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIExheW91dCB7CiAKIGNsYXNzIElubGluZUZvcm1hdHRpbmdTdGF0ZTsKK3N0cnVjdCBJbmxp
bmVSdW47CiBjbGFzcyBJbmxpbmVSdW5Qcm92aWRlcjsKIAogLy8gVGhpcyBjbGFzcyBpbXBsZW1l
bnRzIHRoZSBsYXlvdXQgbG9naWMgZm9yIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHRzLgpAQCAt
MTExLDYgKzExMiw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplTmV3TGluZShMaW5l
JikgY29uc3Q7CiAgICAgdm9pZCBjbG9zZUxpbmUoTGluZSYsIElzTGFzdExpbmUpIGNvbnN0Owog
ICAgIHZvaWQgYXBwZW5kQ29udGVudFRvTGluZShMaW5lJiwgY29uc3QgSW5saW5lTGluZUJyZWFr
ZXI6OlJ1biYpIGNvbnN0OworICAgIHZvaWQgcG9zdFByb2Nlc3NJbmxpbmVSdW5zKExpbmUmLCBJ
c0xhc3RMaW5lLCBMaW5lOjpSdW5SYW5nZSkgY29uc3Q7CisgICAgdm9pZCBzcGxpdElubGluZVJ1
bklmTmVlZGVkKElubGluZVJ1biYpIGNvbnN0OworICAgIGJvb2wgY29udGVudFJlcXVpcmVzU2Vw
YXJhdGVSdW4oY29uc3QgSW5saW5lSXRlbSYpIGNvbnN0OwogCiAgICAgdm9pZCBsYXlvdXRGb3Jt
YXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlV2lk
dGhBbmRIZWlnaHRGb3JSZXBsYWNlZElubGluZUJveChjb25zdCBCb3gmKSBjb25zdDsKQEAgLTEy
Miw2ICsxMjYsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb2xsZWN0SW5saW5lQ29udGVudChJ
bmxpbmVSdW5Qcm92aWRlciYpIGNvbnN0OwogICAgIEluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRz
IGluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBJbmxp
bmVGb3JtYXR0aW5nU3RhdGUmIGlubGluZUZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKCkpOyB9CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5jcHAKaW5kZXggZjllNDI0NzI2ZjA0MjQ1ZmJjMzgy
MzA2MDllOWNlZDM5OGIwZjBmZS4uZDJlMTBkZjAyZTUyMmVmNzRlYTNlYmMwNTRlODEzMmZlYjBh
NGFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcApAQCAtNTQsNyArNTQsNiBAQCBzdGQ6Om9w
dGlvbmFsPElubGluZUxpbmVCcmVha2VyOjpSdW4+IElubGluZUxpbmVCcmVha2VyOjpuZXh0UnVu
KExheW91dFVuaXQgY29udAogICAgIC8vIEFkanVzdCB0aGUgY3VycmVudCBydW4gaWYgaXQgaXMg
c3BsaXQgbWlkd29yZC4KICAgICBpZiAobV9zcGxpdFBvc2l0aW9uKSB7CiAgICAgICAgIEFTU0VS
VChjdXJyZW50SW5saW5lUnVuLmlzVGV4dCgpKTsKLSAgICAgICAgY3VycmVudElubGluZVJ1bi50
ZXh0Q29udGV4dCgpLT5zZXRTdGFydCgqbV9zcGxpdFBvc2l0aW9uKTsKICAgICAgICAgbV9zcGxp
dFBvc2l0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVSdW4uaAppbmRleCA1ZjBlNTU4MGM0ZGNj
MTgzMTcwMDdiMTI0YmM5ZWFiOWEyYTNiYzEzLi42M2JiMGNhZTkxN2M3MDU5YWJlNWRkMGM3Y2Fi
NWZkODkwNzVkNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVSdW4uaApAQCAtNDMsNiArNDMsNyBAQCBzdHJ1Y3QgSW5saW5lUnVuIHsK
IAogICAgIExheW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxSZWN0Lndp
ZHRoKCk7IH0KICAgICBMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNh
bFJlY3QuaGVpZ2h0KCk7IH0KKyAgICBib29sIG92ZXJsYXBzTXVsdGlwbGVJbmxpbmVJdGVtcygp
IGNvbnN0OwogCiAgICAgdm9pZCBzZXRXaWR0aChMYXlvdXRVbml0IHdpZHRoKSB7IG1fbG9naWNh
bFJlY3Quc2V0V2lkdGgod2lkdGgpOyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsTGVmdChMYXlvdXRV
bml0IGxvZ2ljYWxMZWZ0KSB7IG1fbG9naWNhbFJlY3Quc2V0TGVmdChsb2dpY2FsTGVmdCk7IH0K
QEAgLTk4LDYgKzk5LDE2IEBAIGlubGluZSBJbmxpbmVSdW46OlRleHRDb250ZXh0OjpUZXh0Q29u
dGV4dChJdGVtUG9zaXRpb24gc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKIH0KIAoraW5saW5l
IGJvb2wgSW5saW5lUnVuOjpvdmVybGFwc011bHRpcGxlSW5saW5lSXRlbXMoKSBjb25zdAorewor
ICAgIC8vIE9ubHkgdGV4dCBjb250ZW50IGNhbiBvdmVybGFwIG11bHRpcGxlIGlubGluZSBlbGVt
ZW50cy4KKyAgICBpZiAoIW1fdGV4dENvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8gZW5kUG9zaXRpb24gPSBtX3RleHRDb250ZXh0LT5zdGFydCgpICsgbV90ZXh0Q29u
dGV4dC0+bGVuZ3RoKCk7CisgICAgcmV0dXJuIGVuZFBvc2l0aW9uID4gbV9pbmxpbmVJdGVtLnRl
eHRDb250ZW50KCkubGVuZ3RoKCk7Cit9CisKIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVuUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVuUHJvdmlk
ZXIuY3BwCmluZGV4IDljMTY1OGEzM2NlMTZlMWJkYmFmNTExNGRmMDA2M2JiOTFiODg2NWIuLjlh
YmIzY2ZmMjdhNjM2NjU0NjA3MDZiMDIwMjUzZWZlYzQ5Y2I1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVJ1blByb3ZpZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVSdW5Qcm92
aWRlci5jcHAKQEAgLTEzMCwxMCArMTMwLDkgQEAgdm9pZCBJbmxpbmVSdW5Qcm92aWRlcjo6cHJv
Y2Vzc0lubGluZVRleHRJdGVtKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pCiAgICAgICAg
IGF1dG8gaXNXaGl0ZXNwYWNlUnVuID0gaXNXaGl0ZXNwYWNlKHRleHRbY3VycmVudEl0ZW1Qb3Np
dGlvbl0sIHN0eWxlLnByZXNlcnZlTmV3bGluZSgpKTsKICAgICAgICAgYXV0byBsZW5ndGggPSBp
c1doaXRlc3BhY2VSdW4gPyBtb3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKGlubGluZUl0
ZW0sIGN1cnJlbnRJdGVtUG9zaXRpb24pIDogbW92ZVRvTmV4dEJyZWFrYWJsZVBvc2l0aW9uKGlu
bGluZUl0ZW0sIGN1cnJlbnRJdGVtUG9zaXRpb24pOwogCi0gICAgICAgIGlmIChpc0NvbnRpbm91
c0NvbnRlbnQoaXNXaGl0ZXNwYWNlUnVuID8gSW5saW5lUnVuUHJvdmlkZXI6OlJ1bjo6VHlwZTo6
V2hpdGVzcGFjZSA6IElubGluZVJ1blByb3ZpZGVyOjpSdW46OlR5cGU6Ok5vbldoaXRlc3BhY2Us
IGlubGluZUl0ZW0pKSB7Ci0gICAgICAgICAgICBhdXRvIHRleHRDb250ZXh0ID0gbV9pbmxpbmVS
dW5zLmxhc3QoKS50ZXh0Q29udGV4dCgpOwotICAgICAgICAgICAgdGV4dENvbnRleHQtPnNldExl
bmd0aCh0ZXh0Q29udGV4dC0+bGVuZ3RoKCkgKyBsZW5ndGgpOwotICAgICAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAoaXNDb250aW5vdXNDb250ZW50KGlzV2hpdGVzcGFjZVJ1biA/IElubGluZVJ1
blByb3ZpZGVyOjpSdW46OlR5cGU6OldoaXRlc3BhY2UgOiBJbmxpbmVSdW5Qcm92aWRlcjo6UnVu
OjpUeXBlOjpOb25XaGl0ZXNwYWNlLCBpbmxpbmVJdGVtKSkKKyAgICAgICAgICAgIG1faW5saW5l
UnVucy5sYXN0KCkudGV4dENvbnRleHQoKS0+ZXhwYW5kKGxlbmd0aCk7CisgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgbV9pbmxpbmVSdW5zLmFwcGVuZChpc1doaXRlc3BhY2VSdW4gPyBJbmxp
bmVSdW5Qcm92aWRlcjo6UnVuOjpjcmVhdGVXaGl0ZXNwYWNlUnVuKGlubGluZUl0ZW0sIGN1cnJl
bnRJdGVtUG9zaXRpb24sIGxlbmd0aCwgc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCkpCiAgICAg
ICAgICAgICAgICAgOiBJbmxpbmVSdW5Qcm92aWRlcjo6UnVuOjpjcmVhdGVOb25XaGl0ZXNwYWNl
UnVuKGlubGluZUl0ZW0sIGN1cnJlbnRJdGVtUG9zaXRpb24sIGxlbmd0aCkpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVSdW5Qcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lUnVuUHJvdmlkZXIuaAppbmRleCAxMGE0Y2RlNTQ3YzM0YmUwMmVmMWEzOGNkNzU1MmNk
MTk2MmU4YTc1Li4yODM0MWUxM2ExNmY4NDdmZTcxYjYxYzFmM2U0NTZiZmY2ZjYyNDdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVSdW5Q
cm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVJ1blByb3ZpZGVyLmgKQEAgLTgyLDEwICs4MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICAg
ICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb2xsYXBzZWQgPT0gSXND
b2xsYXBzZWQ6OlllczsgfQogCi0gICAgICAgICAgICB2b2lkIHNldFN0YXJ0KEl0ZW1Qb3NpdGlv
biBzdGFydCkgeyBtX3N0YXJ0ID0gc3RhcnQ7IH0KLSAgICAgICAgICAgIHZvaWQgc2V0TGVuZ3Ro
KHVuc2lnbmVkIGxlbmd0aCkgeyBtX2xlbmd0aCA9IGxlbmd0aDsgfQotCiAgICAgICAgIHByaXZh
dGU6CisgICAgICAgICAgICBmcmllbmQgY2xhc3MgSW5saW5lUnVuUHJvdmlkZXI7CisKKyAgICAg
ICAgICAgIHZvaWQgZXhwYW5kKHVuc2lnbmVkIGxlbmd0aCkgeyBtX2xlbmd0aCArPSBsZW5ndGg7
IH0KKwogICAgICAgICAgICAgSXRlbVBvc2l0aW9uIG1fc3RhcnQgeyAwIH07CiAgICAgICAgICAg
ICB1bnNpZ25lZCBtX2xlbmd0aCB7IDAgfTsKICAgICAgICAgICAgIElzQ29sbGFwc2VkIG1faXND
b2xsYXBzZWQgeyBJc0NvbGxhcHNlZDo6Tm8gfTsKQEAgLTk2LDcgKzk3LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5saW5lSXRlbTsgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIElubGlu
ZVJ1blByb3ZpZGVyOworCiAgICAgICAgIFJ1bihjb25zdCBJbmxpbmVJdGVtJiwgVHlwZSwgc3Rk
OjpvcHRpb25hbDxUZXh0Q29udGV4dD4pOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFRleHRDb250
ZXh0PiYgdGV4dENvbnRleHQoKSB7IHJldHVybiBtX3RleHRDb250ZXh0OyB9CiAKICAgICAgICAg
Y29uc3QgVHlwZSBtX3R5cGU7CiAgICAgICAgIGNvbnN0IElubGluZUl0ZW0mIG1faW5saW5lSXRl
bTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354532</attachid>
            <date>2018-11-11 21:50:18 -0800</date>
            <delta_ts>2018-11-12 07:48:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191509-20181111215014.patch</filename>
            <type>text/plain</type>
            <size>17265</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE5ZGI1NWM2NzRhMzQ1
MzExYWQ2OWU2NGVkMGE3Njc2YzY1NDI3My4uNjM3ZDJkZjEwMmI4NzIxOTZmZDgxMzdmNzFhMWU3
ZTk1ZjExZTZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE4LTExLTExICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBDb25zdHJ1
Y3QgZGVkaWNhdGVkIHJ1bnMgd2hlbiB0aGUgaW5saW5lIGVsZW1lbnQgcmVxdWlyZXMgaXQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1MDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBjZXJ0YWlu
IGNhc2VzLCBhIHJ1biBjYW4gb3ZlcmxhcCBtdWx0aXBsZSBpbmxpbmUgZWxlbWVudHMgbGlrZSB0
aGlzOgorICAgICAgICAKKyAgICAgICAgPHNwYW4+bm9ybWFsIHRleHQgY29udGVudDwvc3Bhbj48
c3BhbiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyBsZWZ0OiAxMHB4OyI+YnV0IHRoaXMgb25l
IG5lZWRzIGEgZGVkaWNhdGVkIHJ1bjwvc3Bhbj48c3Bhbj5lbmQgb2YgdGV4dDwvc3Bhbj4KKwor
ICAgICAgICBUaGUgY29udGVudCBhYm92ZSBnZW5lcmF0ZXMgb25lIGxvbmcgcnVuIDxub3JtYWwg
dGV4dCBjb250ZW50YnV0IHRoaXMgb25lIG5lZWRzIGRlZGljYXRlZCBydW5lbmQgb2YgdGV4dD4g
PC0gaW5wdXQgdG8gbGluZSBicmVha2luZy4KKyAgICAgICAgSG93ZXZlciwgc2luY2UgdGhlIG1p
ZGRsZSBydW4gaXMgcG9zaXRpb25lZCwgaXQgbmVlZHMgdG8gYmUgbW92ZWQgaW5kZXBlbmRlbnRs
eSBmcm9tIHRoZSByZXN0IG9mIHRoZSBjb250ZW50LCBoZW5jZSBpdCBuZWVkcyBhIGRlZGljYXRl
ZCBpbmxpbmUgcnVuLgorCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Y29udGVudFJlcXVpcmVzU2VwYXJhdGVSdW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c3BsaXRJbmxpbmVSdW5JZk5lZWRlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpwb3N0
UHJvY2Vzc0lubGluZVJ1bnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y2xvc2VMaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmFwcGVuZENvbnRlbnRUb0xpbmUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0SW5saW5lQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmlubGluZUZvcm1hdHRpbmdTdGF0ZSBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVMaW5lQnJlYWtlcjo6bmV4dFJ1bik6IG1pZC13b3JkIGJyZWFraW5nIGlzIG5vdCBp
bXBsZW1lbnRlZCB5ZXQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
UnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVJ1bjo6b3ZlcmxhcHNNdWx0
aXBsZUlubGluZUl0ZW1zIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVSdW5Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZVJ1blByb3ZpZGVyOjpwcm9jZXNzSW5saW5lVGV4dEl0ZW0pOgorICAgICAgICAqIGxheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZVJ1blByb3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZVJ1blByb3ZpZGVyOjpSdW46OlRleHRDb250ZXh0OjpleHBhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVSdW5Qcm92aWRlcjo6UnVuOjp0ZXh0Q29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVJ1blByb3ZpZGVyOjpSdW46OlRl
eHRDb250ZXh0OjpzZXRTdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZVJ1blByb3ZpZGVyOjpSdW46OlRleHRDb250ZXh0OjpzZXRMZW5ndGgpOiBEZWxldGVk
LgorCiAyMDE4LTExLTExICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBEcmF3IGNhcHMgbG9jayBpbmRpY2F0b3IgaW4gcGFzc3dvcmQgZmllbGRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggZDdiNDYzZWQ1ZGUzYWFiZjBj
ZTBiODI5MTE5NjAzMjI0OWQ5YmVlYi4uYTY0YTVkYTgzODk1MGQxZmJhMmE1ZDUzYmE3MTM0OTU1
ZTg1YzBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNTgsOSAr
NTgsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoKSBjb25zdAogCiAg
ICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltT
dGFydF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBmb3JtYXR0aW5nIHJvb3QoIiA8
PCAmcm9vdCgpIDw8ICIpIik7CiAKLSAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBk
b3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGZvcm1hdHRpbmdTdGF0ZSgpKTsKLSAgICBJ
bmxpbmVSdW5Qcm92aWRlciBpbmxpbmVSdW5Qcm92aWRlcihpbmxpbmVGb3JtYXR0aW5nU3RhdGUp
OwotCisgICAgSW5saW5lUnVuUHJvdmlkZXIgaW5saW5lUnVuUHJvdmlkZXIoaW5saW5lRm9ybWF0
dGluZ1N0YXRlKCkpOwogICAgIGNvbGxlY3RJbmxpbmVDb250ZW50KGlubGluZVJ1blByb3ZpZGVy
KTsKICAgICAvLyBDb21wdXRlIHdpZHRoL2hlaWdodCBmb3Igbm9uLXRleHQgY29udGVudC4KICAg
ICBmb3IgKGF1dG8mIGlubGluZVJ1biA6IGlubGluZVJ1blByb3ZpZGVyLnJ1bnMoKSkgewpAQCAt
MTI3LDYgKzEyNSwxMTkgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW5pdGlhbGl6
ZU5ld0xpbmUoTGluZSYgbGluZSkgY29uc3QKICAgICBsaW5lLmluaXQobG9naWNhbFJlY3QpOwog
fQogCitib29sIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb250ZW50UmVxdWlyZXNTZXBhcmF0
ZVJ1bihjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBUaGlzIGlzIHdheSB0b28gaW5lZmZpY2llbnQuIFdlIHNob3VsZCBwcmUtbWFyayB0aGUgcnVu
cyBpbnN0ZWFkIHdoaWxlIGZsYXR0ZW5pbmcgdGhlIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQu
CisgICAgZm9yIChhdXRvKiBpbmxpbmVDb250YWluZXIgPSBpbmxpbmVJdGVtLmxheW91dEJveCgp
LnBhcmVudCgpOyBpbmxpbmVDb250YWluZXIgIT0gJnJvb3QoKTsgaW5saW5lQ29udGFpbmVyID0g
aW5saW5lQ29udGFpbmVyLT5wYXJlbnQoKSkgeworICAgICAgICBpZiAoaW5saW5lQ29udGFpbmVy
LT5pc1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7IAorfQorCit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzcGxpdElu
bGluZVJ1bklmTmVlZGVkKGNvbnN0IElubGluZVJ1biYgaW5saW5lUnVuLCBJbmxpbmVSdW5zJiBz
cGxpdFJ1bnMpIGNvbnN0Cit7CisgICAgaWYgKCFpbmxpbmVSdW4ub3ZlcmxhcHNNdWx0aXBsZUlu
bGluZUl0ZW1zKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChpbmxpbmVSdW4udGV4
dENvbnRleHQoKSk7CisgICAgLy8gSW4gY2VydGFpbiBjYXNlcywgYSBydW4gY2FuIG92ZXJsYXAg
bXVsdGlwbGUgaW5saW5lIGVsZW1lbnRzIGxpa2UgdGhpczoKKyAgICAvLyA8c3Bhbj5ub3JtYWwg
dGV4dCBjb250ZW50PC9zcGFuPjxzcGFuIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IGxlZnQ6
IDEwcHg7Ij5idXQgdGhpcyBvbmUgbmVlZHMgYSBkZWRpY2F0ZWQgcnVuPC9zcGFuPjxzcGFuPmVu
ZCBvZiB0ZXh0PC9zcGFuPgorICAgIC8vIFRoZSBjb250ZW50IGFib3ZlIGdlbmVyYXRlcyBvbmUg
bG9uZyBydW4gPG5vcm1hbCB0ZXh0IGNvbnRlbnRidXQgdGhpcyBvbmUgbmVlZHMgZGVkaWNhdGVk
IHJ1bmVuZCBvZiB0ZXh0PgorICAgIC8vIEhvd2V2ZXIsIHNpbmNlIHRoZSBtaWRkbGUgcnVuIGlz
IHBvc2l0aW9uZWQsIGl0IG5lZWRzIHRvIGJlIG1vdmVkIGluZGVwZW5kZW50bHkgZnJvbSB0aGUg
cmVzdCBvZiB0aGUgY29udGVudCwgaGVuY2UgaXQgbmVlZHMgYSBkZWRpY2F0ZWQgaW5saW5lIHJ1
bi4KKworICAgIC8vIDEuIFN0YXJ0IHdpdGggdGhlIGZpcnN0IGlubGluZSBpdGVtIChlbGVtZW50
KSBhbmQgdHJhdmVycyB0aGUgbGlzdCB1bnRpbAorICAgIC8vIDIuIGVpdGhlciBmaW5kIGFuIGlu
bGluZSBpdGVtIHRoYXQgbmVlZHMgYSBkZWRpY2F0ZWQgcnVuIG9yIHdlIHJlYWNoIHRoZSBlbmQg
b2YgdGhlIHJ1bgorICAgIC8vIDMuIFNocmluayB0aGUgb3JpZ2luYWwgaW5saW5lIHJ1biBhbmQg
Y3JlYXRlIGEgbmV3IG9uZS4gICAgIAorICAgIGF1dG8mIGlubGluZUNvbnRlbnQgPSBpbmxpbmVG
b3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVDb250ZW50KCk7CisgICAgYXV0byB0ZXh0VXRpbCA9IFRl
eHRVdGlsIHsgaW5saW5lQ29udGVudCB9OworCisgICAgYXV0byBzcGxpdD1bJl0oY29uc3QgYXV0
byYgaW5saW5lSXRlbSwgYXV0byBzdGFydFBvc2l0aW9uLCBhdXRvIGxlbmd0aCwgYXV0byBjb250
ZW50U3RhcnQpIHsKKyAgICAgICAgYXV0byB3aWR0aCA9IHRleHRVdGlsLndpZHRoKGlubGluZUl0
ZW0sIHN0YXJ0UG9zaXRpb24sIGxlbmd0aCwgY29udGVudFN0YXJ0KTsKKyAgICAgICAgCisgICAg
ICAgIGF1dG8gcnVuID0gSW5saW5lUnVuIHsgeyBpbmxpbmVSdW4ubG9naWNhbFRvcCgpLCBjb250
ZW50U3RhcnQsIHdpZHRoLCBpbmxpbmVSdW4uaGVpZ2h0KCkgfSwgaW5saW5lSXRlbSB9OworICAg
ICAgICBydW4uc2V0VGV4dENvbnRleHQoeyBzdGFydFBvc2l0aW9uLCBsZW5ndGggfSk7CisgICAg
ICAgIHNwbGl0UnVucy5hcHBlbmQocnVuKTsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRTdGFydCAr
IHdpZHRoOworICAgIH07CisKKyAgICBhdXRvIGNvbnRlbnRTdGFydCA9IGlubGluZVJ1bi5sb2dp
Y2FsTGVmdCgpOworICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IGlubGluZVJ1bi50ZXh0Q29udGV4
dCgpLT5zdGFydCgpOworICAgIGF1dG8gcmVtYW5pbmdMZW5ndGggPSBpbmxpbmVSdW4udGV4dENv
bnRleHQoKS0+bGVuZ3RoKCk7CisKKyAgICB1bnNpZ25lZCB1bmNvbW1pdHRlZExlbmd0aCA9IDA7
CisgICAgSW5saW5lSXRlbSogZmlyc3RVbmNvbW1pdHRlZElubGluZUl0ZW0gPSBudWxscHRyOwor
ICAgIGZvciAoYXV0byBpdGVyYXRvciA9IGlubGluZUNvbnRlbnQuZmluZDxjb25zdCBJbmxpbmVJ
dGVtJiwgSW5saW5lSXRlbUhhc2hUcmFuc2xhdG9yPihpbmxpbmVSdW4uaW5saW5lSXRlbSgpKTsg
aXRlcmF0b3IgIT0gaW5saW5lQ29udGVudC5lbmQoKSAmJiByZW1hbmluZ0xlbmd0aCA+IDA7ICsr
aXRlcmF0b3IpIHsKKyAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9ICoqaXRlcmF0b3I7CisKKyAg
ICAgICAgaWYgKCFjb250ZW50UmVxdWlyZXNTZXBhcmF0ZVJ1bihpbmxpbmVJdGVtKSkgeworICAg
ICAgICAgICAgdW5jb21taXR0ZWRMZW5ndGggKz0gc3RkOjptaW4ocmVtYW5pbmdMZW5ndGgsIGlu
bGluZUl0ZW0udGV4dENvbnRlbnQoKS5sZW5ndGgoKSAtIHN0YXJ0UG9zaXRpb24pOworICAgICAg
ICAgICAgZmlyc3RVbmNvbW1pdHRlZElubGluZUl0ZW0gPSAhZmlyc3RVbmNvbW1pdHRlZElubGlu
ZUl0ZW0gPyAmaW5saW5lSXRlbSA6IGZpcnN0VW5jb21taXR0ZWRJbmxpbmVJdGVtOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBDb21taXQgdGhlIGl0ZW1z
IHRoYXQgZG9uJ3QgbmVlZCBkZWRpY2F0ZWQgcnVuLgorICAgICAgICBpZiAoZmlyc3RVbmNvbW1p
dHRlZElubGluZUl0ZW0pIHsKKyAgICAgICAgICAgIGNvbnRlbnRTdGFydCA9IHNwbGl0KCpmaXJz
dFVuY29tbWl0dGVkSW5saW5lSXRlbSwgc3RhcnRQb3NpdGlvbiwgdW5jb21taXR0ZWRMZW5ndGgs
IGNvbnRlbnRTdGFydCk7CisKKyAgICAgICAgICAgIHJlbWFuaW5nTGVuZ3RoIC09IHVuY29tbWl0
dGVkTGVuZ3RoOworICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IDA7CisgICAgICAgICAgICB1
bmNvbW1pdHRlZExlbmd0aCA9IDA7CisgICAgICAgIH0KKworICAgICAgICAvLyBDcmVhdGUgYSBk
ZWRpY2F0ZWQgcnVuIGZvciB0aGlzIGlubGluZSBpdGVtLgorICAgICAgICBhdXRvIGxlbmd0aCA9
IHN0ZDo6bWluKHJlbWFuaW5nTGVuZ3RoLCBpbmxpbmVJdGVtLnRleHRDb250ZW50KCkubGVuZ3Ro
KCkgLSBzdGFydFBvc2l0aW9uKTsKKyAgICAgICAgY29udGVudFN0YXJ0ID0gc3BsaXQoaW5saW5l
SXRlbSwgc3RhcnRQb3NpdGlvbiwgbGVuZ3RoLCBjb250ZW50U3RhcnQpOworICAgICAgICAKKyAg
ICAgICAgc3RhcnRQb3NpdGlvbiA9IDA7CisgICAgICAgIHJlbWFuaW5nTGVuZ3RoIC09IGxlbmd0
aDsgCisgICAgICAgIGZpcnN0VW5jb21taXR0ZWRJbmxpbmVJdGVtID0gbnVsbHB0cjsKKyAgICB9
CisKKyAgICAvLyBFaXRoZXIgYWxsIGlubGluZSBlbGVtZW50cyBuZWVkZWQgZGVkaWNhdGVkIHJ1
bnMgb3IgbmVpdGhlciBvZiB0aGVtLgorICAgIGlmICghcmVtYW5pbmdMZW5ndGggfHwgcmVtYW5p
bmdMZW5ndGggPT0gaW5saW5lUnVuLnRleHRDb250ZXh0KCktPmxlbmd0aCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBBU1NFUlQocmVtYW5pbmdMZW5ndGggPT0gdW5jb21taXR0ZWRMZW5ndGgp
OworICAgIHNwbGl0KCpmaXJzdFVuY29tbWl0dGVkSW5saW5lSXRlbSwgc3RhcnRQb3NpdGlvbiwg
dW5jb21taXR0ZWRMZW5ndGgsIGNvbnRlbnRTdGFydCk7Cit9CisKK3ZvaWQgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OnBvc3RQcm9jZXNzSW5saW5lUnVucyhMaW5lJiBsaW5lLCBJc0xhc3RMaW5l
IGlzTGFzdExpbmUsIExpbmU6OlJ1blJhbmdlIHJ1blJhbmdlKSBjb25zdAoreworICAgIGF1dG8m
IGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMtPmlubGluZUZvcm1hdHRpbmdTdGF0ZSgpOwor
ICAgIEdlb21ldHJ5OjphbGlnblJ1bnMoaW5saW5lRm9ybWF0dGluZ1N0YXRlLCByb290KCkuc3R5
bGUoKS50ZXh0QWxpZ24oKSwgbGluZSwgcnVuUmFuZ2UsIGlzTGFzdExpbmUpOworCisgICAgYXV0
byYgaW5saW5lUnVucyA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCk7CisgICAg
QVNTRVJUKCpydW5SYW5nZS5sYXN0UnVuSW5kZXggPCBpbmxpbmVSdW5zLnNpemUoKSk7CisKKyAg
ICBhdXRvIHJ1bkluZGV4ID0gKnJ1blJhbmdlLmZpcnN0UnVuSW5kZXg7CisgICAgYXV0byYgbGFz
dElubGluZVJ1biA9IGlubGluZVJ1bnNbKnJ1blJhbmdlLmxhc3RSdW5JbmRleF07CisgICAgd2hp
bGUgKHJ1bkluZGV4IDwgaW5saW5lUnVucy5zaXplKCkpIHsKKyAgICAgICAgYXV0byYgaW5saW5l
UnVuID0gaW5saW5lUnVuc1tydW5JbmRleF07CisgICAgICAgIGF1dG8gaXNMYXN0UnVuSW5SYW5n
ZSA9ICZpbmxpbmVSdW4gPT0gJmxhc3RJbmxpbmVSdW47CisKKyAgICAgICAgSW5saW5lUnVucyBz
cGxpdFJ1bnM7CisgICAgICAgIHNwbGl0SW5saW5lUnVuSWZOZWVkZWQoaW5saW5lUnVuLCBzcGxp
dFJ1bnMpOworICAgICAgICBpZiAoIXNwbGl0UnVucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IEFTU0VSVChzcGxpdFJ1bnMuc2l6ZSgpID4gMSk7CisgICAgICAgICAgICAvLyBSZXBsYWNlIHRo
ZSBjb250aW5vdXMgcnVuIHdpdGggbmV3IG9uZXMuCisgICAgICAgICAgICAvLyBSZXVzZSB0aGUg
b3JpZ2luYWwgb25lLgorICAgICAgICAgICAgYXV0byYgZmlyc3RSdW4gPSBzcGxpdFJ1bnMuZmly
c3QoKTsgCisgICAgICAgICAgICBpbmxpbmVSdW4uc2V0V2lkdGgoZmlyc3RSdW4ud2lkdGgoKSk7
CisgICAgICAgICAgICBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+c2V0TGVuZ3RoKGZpcnN0UnVu
LnRleHRDb250ZXh0KCktPmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHNwbGl0UnVucy5yZW1vdmUo
MCk7CisgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHJlc3QuCisgICAgICAgICAgICBmb3IgKGF1
dG8mIHNwbGl0UnVuIDogc3BsaXRSdW5zKQorICAgICAgICAgICAgICAgIGlubGluZVJ1bnMuaW5z
ZXJ0KCsrcnVuSW5kZXgsIHNwbGl0UnVuKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc0xh
c3RSdW5JblJhbmdlKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgKytydW5JbmRleDsK
KyAgICB9Cit9CisKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNsb3NlTGluZShMaW5l
JiBsaW5lLCBJc0xhc3RMaW5lIGlzTGFzdExpbmUpIGNvbnN0CiB7CiAgICAgYXV0byBydW5SYW5n
ZSA9IGxpbmUuY2xvc2UoKTsKQEAgLTEzNSw3ICsyNDYsNyBAQCB2b2lkIElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpjbG9zZUxpbmUoTGluZSYgbGluZSwgSXNMYXN0TGluZSBpc0xhc3RMaW5lKSBj
b25zdAogICAgIGlmICghcnVuUmFuZ2UuZmlyc3RSdW5JbmRleCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgR2VvbWV0cnk6OmFsaWduUnVucyhkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+
KGZvcm1hdHRpbmdTdGF0ZSgpKSwgcm9vdCgpLnN0eWxlKCkudGV4dEFsaWduKCksIGxpbmUsIHJ1
blJhbmdlLCBpc0xhc3RMaW5lKTsKKyAgICBwb3N0UHJvY2Vzc0lubGluZVJ1bnMobGluZSwgaXNM
YXN0TGluZSwgcnVuUmFuZ2UpOwogfQogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojph
cHBlbmRDb250ZW50VG9MaW5lKExpbmUmIGxpbmUsIGNvbnN0IElubGluZUxpbmVCcmVha2VyOjpS
dW4mIHJ1bikgY29uc3QKQEAgLTE0NCwxMyArMjU1LDEzIEBAIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmFwcGVuZENvbnRlbnRUb0xpbmUoTGluZSYgbGluZSwgY29uc3QgSW5saW5lTGlu
ZUJyCiAgICAgbGluZS5hcHBlbmRDb250ZW50KHJ1bik7CiAKICAgICBpZiAocm9vdCgpLnN0eWxl
KCkudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkKLSAgICAgICAgR2VvbWV0
cnk6OmNvbXB1dGVFeHBhbnNpb25PcHBvcnR1bml0aWVzKGRvd25jYXN0PElubGluZUZvcm1hdHRp
bmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKCkpLCBydW4uY29udGVudCwgbGFzdFJ1blR5cGUudmFs
dWVfb3IoSW5saW5lUnVuUHJvdmlkZXI6OlJ1bjo6VHlwZTo6Tm9uV2hpdGVzcGFjZSkpOworICAg
ICAgICBHZW9tZXRyeTo6Y29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMoaW5saW5lRm9ybWF0
dGluZ1N0YXRlKCksIHJ1bi5jb250ZW50LCBsYXN0UnVuVHlwZS52YWx1ZV9vcihJbmxpbmVSdW5Q
cm92aWRlcjo6UnVuOjpUeXBlOjpOb25XaGl0ZXNwYWNlKSk7CiB9CiAKIHZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQoY29uc3QgSW5saW5lUnVuUHJvdmlk
ZXImIGlubGluZVJ1blByb3ZpZGVyKSBjb25zdAogewogICAgIGF1dG8mIGxheW91dFN0YXRlID0g
dGhpcy0+bGF5b3V0U3RhdGUoKTsKLSAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBk
b3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGZvcm1hdHRpbmdTdGF0ZSgpKTsKKyAgICBh
dXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5pbmxpbmVGb3JtYXR0aW5nU3RhdGUo
KTsKICAgICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7IGlubGluZUZv
cm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCkgfTsKIAogICAgIExpbmUgbGluZShpbmxpbmVG
b3JtYXR0aW5nU3RhdGUpOwpAQCAtMzI4LDcgKzQzOSw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpJ
bnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW5zdHJp
bnNpCiAgICAgaWYgKGF1dG8gaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBmb3JtYXR0aW5n
U3RhdGVGb3JSb290Lmluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKHJvb3QoKSkpCiAgICAgICAg
IHJldHVybiAqaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHM7CiAKLSAgICBhdXRvJiBpbmxpbmVG
b3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGZvcm1hdHRp
bmdTdGF0ZSgpKTsKKyAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5pbmxp
bmVGb3JtYXR0aW5nU3RhdGUoKTsKICAgICBJbmxpbmVSdW5Qcm92aWRlciBpbmxpbmVSdW5Qcm92
aWRlcihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOwogICAgIGNvbGxlY3RJbmxpbmVDb250ZW50KGlu
bGluZVJ1blByb3ZpZGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXgg
MDM0MTc1ZjU4M2U3MmM4NWM1YzY1YjUzMDJjMzU3NGVlNWM3NWFjNC4uYTNjMjJhNzE0YjlkMzgx
NGNjM2I1MmJhODRmMTc4NjgwYTYxNzYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUg
IkZvcm1hdHRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZUJyZWFrZXIuaCIKKyNp
bmNsdWRlICJJbmxpbmVSdW4uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTExMSw2ICsxMTIsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5p
dGlhbGl6ZU5ld0xpbmUoTGluZSYpIGNvbnN0OwogICAgIHZvaWQgY2xvc2VMaW5lKExpbmUmLCBJ
c0xhc3RMaW5lKSBjb25zdDsKICAgICB2b2lkIGFwcGVuZENvbnRlbnRUb0xpbmUoTGluZSYsIGNv
bnN0IElubGluZUxpbmVCcmVha2VyOjpSdW4mKSBjb25zdDsKKyAgICB2b2lkIHBvc3RQcm9jZXNz
SW5saW5lUnVucyhMaW5lJiwgSXNMYXN0TGluZSwgTGluZTo6UnVuUmFuZ2UpIGNvbnN0OworICAg
IHZvaWQgc3BsaXRJbmxpbmVSdW5JZk5lZWRlZChjb25zdCBJbmxpbmVSdW4mLCBJbmxpbmVSdW5z
JiBzcGxpdFJ1bnMpIGNvbnN0OworICAgIGJvb2wgY29udGVudFJlcXVpcmVzU2VwYXJhdGVSdW4o
Y29uc3QgSW5saW5lSXRlbSYpIGNvbnN0OwogCiAgICAgdm9pZCBsYXlvdXRGb3JtYXR0aW5nQ29u
dGV4dFJvb3QoY29uc3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlV2lkdGhBbmRIZWln
aHRGb3JSZXBsYWNlZElubGluZUJveChjb25zdCBCb3gmKSBjb25zdDsKQEAgLTEyMSw2ICsxMjUs
OCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb2xsZWN0SW5saW5lQ29udGVudChJbmxpbmVSdW5Q
cm92aWRlciYpIGNvbnN0OwogICAgIEluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGluc3RyaW5z
aWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBJbmxpbmVGb3JtYXR0
aW5nU3RhdGUmIGlubGluZUZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0
PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKCkpOyB9CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVM
aW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQnJlYWtlci5jcHAKaW5kZXggZjllNDI0NzI2ZjA0MjQ1ZmJjMzgyMzA2MDllOWNl
ZDM5OGIwZjBmZS4uZDJlMTBkZjAyZTUyMmVmNzRlYTNlYmMwNTRlODEzMmZlYjBhNGFhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZUJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmVCcmVha2VyLmNwcApAQCAtNTQsNyArNTQsNiBAQCBzdGQ6Om9wdGlvbmFsPElu
bGluZUxpbmVCcmVha2VyOjpSdW4+IElubGluZUxpbmVCcmVha2VyOjpuZXh0UnVuKExheW91dFVu
aXQgY29udAogICAgIC8vIEFkanVzdCB0aGUgY3VycmVudCBydW4gaWYgaXQgaXMgc3BsaXQgbWlk
d29yZC4KICAgICBpZiAobV9zcGxpdFBvc2l0aW9uKSB7CiAgICAgICAgIEFTU0VSVChjdXJyZW50
SW5saW5lUnVuLmlzVGV4dCgpKTsKLSAgICAgICAgY3VycmVudElubGluZVJ1bi50ZXh0Q29udGV4
dCgpLT5zZXRTdGFydCgqbV9zcGxpdFBvc2l0aW9uKTsKICAgICAgICAgbV9zcGxpdFBvc2l0aW9u
ID0gc3RkOjpudWxsb3B0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVSdW4uaAppbmRleCA1ZjBlNTU4MGM0ZGNjMTgzMTcwMDdi
MTI0YmM5ZWFiOWEyYTNiYzEzLi42M2JiMGNhZTkxN2M3MDU5YWJlNWRkMGM3Y2FiNWZkODkwNzVk
NjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVSdW4uaApAQCAtNDMsNiArNDMsNyBAQCBzdHJ1Y3QgSW5saW5lUnVuIHsKIAogICAgIExh
eW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxSZWN0LndpZHRoKCk7IH0K
ICAgICBMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFJlY3QuaGVp
Z2h0KCk7IH0KKyAgICBib29sIG92ZXJsYXBzTXVsdGlwbGVJbmxpbmVJdGVtcygpIGNvbnN0Owog
CiAgICAgdm9pZCBzZXRXaWR0aChMYXlvdXRVbml0IHdpZHRoKSB7IG1fbG9naWNhbFJlY3Quc2V0
V2lkdGgod2lkdGgpOyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsTGVmdChMYXlvdXRVbml0IGxvZ2lj
YWxMZWZ0KSB7IG1fbG9naWNhbFJlY3Quc2V0TGVmdChsb2dpY2FsTGVmdCk7IH0KQEAgLTk4LDYg
Kzk5LDE2IEBAIGlubGluZSBJbmxpbmVSdW46OlRleHRDb250ZXh0OjpUZXh0Q29udGV4dChJdGVt
UG9zaXRpb24gc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKIH0KIAoraW5saW5lIGJvb2wgSW5s
aW5lUnVuOjpvdmVybGFwc011bHRpcGxlSW5saW5lSXRlbXMoKSBjb25zdAoreworICAgIC8vIE9u
bHkgdGV4dCBjb250ZW50IGNhbiBvdmVybGFwIG11bHRpcGxlIGlubGluZSBlbGVtZW50cy4KKyAg
ICBpZiAoIW1fdGV4dENvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8g
ZW5kUG9zaXRpb24gPSBtX3RleHRDb250ZXh0LT5zdGFydCgpICsgbV90ZXh0Q29udGV4dC0+bGVu
Z3RoKCk7CisgICAgcmV0dXJuIGVuZFBvc2l0aW9uID4gbV9pbmxpbmVJdGVtLnRleHRDb250ZW50
KCkubGVuZ3RoKCk7Cit9CisKIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVuUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVuUHJvdmlkZXIuY3BwCmlu
ZGV4IDljMTY1OGEzM2NlMTZlMWJkYmFmNTExNGRmMDA2M2JiOTFiODg2NWIuLjlhYmIzY2ZmMjdh
NjM2NjU0NjA3MDZiMDIwMjUzZWZlYzQ5Y2I1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVJ1blByb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVSdW5Qcm92aWRlci5jcHAK
QEAgLTEzMCwxMCArMTMwLDkgQEAgdm9pZCBJbmxpbmVSdW5Qcm92aWRlcjo6cHJvY2Vzc0lubGlu
ZVRleHRJdGVtKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pCiAgICAgICAgIGF1dG8gaXNX
aGl0ZXNwYWNlUnVuID0gaXNXaGl0ZXNwYWNlKHRleHRbY3VycmVudEl0ZW1Qb3NpdGlvbl0sIHN0
eWxlLnByZXNlcnZlTmV3bGluZSgpKTsKICAgICAgICAgYXV0byBsZW5ndGggPSBpc1doaXRlc3Bh
Y2VSdW4gPyBtb3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKGlubGluZUl0ZW0sIGN1cnJl
bnRJdGVtUG9zaXRpb24pIDogbW92ZVRvTmV4dEJyZWFrYWJsZVBvc2l0aW9uKGlubGluZUl0ZW0s
IGN1cnJlbnRJdGVtUG9zaXRpb24pOwogCi0gICAgICAgIGlmIChpc0NvbnRpbm91c0NvbnRlbnQo
aXNXaGl0ZXNwYWNlUnVuID8gSW5saW5lUnVuUHJvdmlkZXI6OlJ1bjo6VHlwZTo6V2hpdGVzcGFj
ZSA6IElubGluZVJ1blByb3ZpZGVyOjpSdW46OlR5cGU6Ok5vbldoaXRlc3BhY2UsIGlubGluZUl0
ZW0pKSB7Ci0gICAgICAgICAgICBhdXRvIHRleHRDb250ZXh0ID0gbV9pbmxpbmVSdW5zLmxhc3Qo
KS50ZXh0Q29udGV4dCgpOwotICAgICAgICAgICAgdGV4dENvbnRleHQtPnNldExlbmd0aCh0ZXh0
Q29udGV4dC0+bGVuZ3RoKCkgKyBsZW5ndGgpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBp
ZiAoaXNDb250aW5vdXNDb250ZW50KGlzV2hpdGVzcGFjZVJ1biA/IElubGluZVJ1blByb3ZpZGVy
OjpSdW46OlR5cGU6OldoaXRlc3BhY2UgOiBJbmxpbmVSdW5Qcm92aWRlcjo6UnVuOjpUeXBlOjpO
b25XaGl0ZXNwYWNlLCBpbmxpbmVJdGVtKSkKKyAgICAgICAgICAgIG1faW5saW5lUnVucy5sYXN0
KCkudGV4dENvbnRleHQoKS0+ZXhwYW5kKGxlbmd0aCk7CisgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgbV9pbmxpbmVSdW5zLmFwcGVuZChpc1doaXRlc3BhY2VSdW4gPyBJbmxpbmVSdW5Qcm92
aWRlcjo6UnVuOjpjcmVhdGVXaGl0ZXNwYWNlUnVuKGlubGluZUl0ZW0sIGN1cnJlbnRJdGVtUG9z
aXRpb24sIGxlbmd0aCwgc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCkpCiAgICAgICAgICAgICAg
ICAgOiBJbmxpbmVSdW5Qcm92aWRlcjo6UnVuOjpjcmVhdGVOb25XaGl0ZXNwYWNlUnVuKGlubGlu
ZUl0ZW0sIGN1cnJlbnRJdGVtUG9zaXRpb24sIGxlbmd0aCkpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVSdW5Qcm92
aWRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVu
UHJvdmlkZXIuaAppbmRleCAxMGE0Y2RlNTQ3YzM0YmUwMmVmMWEzOGNkNzU1MmNkMTk2MmU4YTc1
Li4yODM0MWUxM2ExNmY4NDdmZTcxYjYxYzFmM2U0NTZiZmY2ZjYyNDdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVSdW5Qcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVJ1blBy
b3ZpZGVyLmgKQEAgLTgyLDEwICs4MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICAgICAgYm9vbCBp
c0NvbGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb2xsYXBzZWQgPT0gSXNDb2xsYXBzZWQ6
OlllczsgfQogCi0gICAgICAgICAgICB2b2lkIHNldFN0YXJ0KEl0ZW1Qb3NpdGlvbiBzdGFydCkg
eyBtX3N0YXJ0ID0gc3RhcnQ7IH0KLSAgICAgICAgICAgIHZvaWQgc2V0TGVuZ3RoKHVuc2lnbmVk
IGxlbmd0aCkgeyBtX2xlbmd0aCA9IGxlbmd0aDsgfQotCiAgICAgICAgIHByaXZhdGU6CisgICAg
ICAgICAgICBmcmllbmQgY2xhc3MgSW5saW5lUnVuUHJvdmlkZXI7CisKKyAgICAgICAgICAgIHZv
aWQgZXhwYW5kKHVuc2lnbmVkIGxlbmd0aCkgeyBtX2xlbmd0aCArPSBsZW5ndGg7IH0KKwogICAg
ICAgICAgICAgSXRlbVBvc2l0aW9uIG1fc3RhcnQgeyAwIH07CiAgICAgICAgICAgICB1bnNpZ25l
ZCBtX2xlbmd0aCB7IDAgfTsKICAgICAgICAgICAgIElzQ29sbGFwc2VkIG1faXNDb2xsYXBzZWQg
eyBJc0NvbGxhcHNlZDo6Tm8gfTsKQEAgLTk2LDcgKzk3LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
Y29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lSXRl
bTsgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIElubGluZVJ1blByb3Zp
ZGVyOworCiAgICAgICAgIFJ1bihjb25zdCBJbmxpbmVJdGVtJiwgVHlwZSwgc3RkOjpvcHRpb25h
bDxUZXh0Q29udGV4dD4pOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFRleHRDb250ZXh0PiYgdGV4
dENvbnRleHQoKSB7IHJldHVybiBtX3RleHRDb250ZXh0OyB9CiAKICAgICAgICAgY29uc3QgVHlw
ZSBtX3R5cGU7CiAgICAgICAgIGNvbnN0IElubGluZUl0ZW0mIG1faW5saW5lSXRlbTsK
</data>
<flag name="review"
          id="371697"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>