<?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>234676</bug_id>
          
          <creation_ts>2021-12-24 15:38:07 -0800</creation_ts>
          <short_desc>[LFC][IFC] Turn InlineContentBreaker::ContinuousContent&apos;s leading/trailing member variables to std::optional&lt;InlineLayoutUnit&gt;</short_desc>
          <delta_ts>2021-12-25 22:18:16 -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>1826773</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-12-24 15:38:07 -0800</bug_when>
    <thetext>instead of using the magic value of 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826774</commentid>
    <comment_count>1</comment_count>
      <attachid>447949</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-12-24 15:51:16 -0800</bug_when>
    <thetext>Created attachment 447949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826775</commentid>
    <comment_count>2</comment_count>
      <attachid>447950</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-12-24 15:55:27 -0800</bug_when>
    <thetext>Created attachment 447950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826797</commentid>
    <comment_count>3</comment_count>
      <attachid>447950</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-12-25 01:32:55 -0800</bug_when>
    <thetext>Comment on attachment 447950
Patch

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

&gt; Source/WebCore/layout/formattingContexts/inline/InlineContentBreaker.cpp:516
&gt; -    auto avilableWidth = std::max(0.0f, lineStatus.availableWidth - nonOverflowingContentWidth);
&gt; +    auto avilableWidth = std::max(0.f, lineStatus.availableWidth - nonOverflowingContentWidth);

&quot;avilable&quot;

&gt; Source/WebCore/layout/formattingContexts/inline/InlineContentBreaker.cpp:539
&gt; -        auto avilableWidth = std::max(0.0f, lineStatus.availableWidth - previousContentWidth);
&gt; +        auto avilableWidth = std::max(0.f, lineStatus.availableWidth - previousContentWidth);

here too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826829</commentid>
    <comment_count>4</comment_count>
      <attachid>447962</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-12-25 13:03:44 -0800</bug_when>
    <thetext>Created attachment 447962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826844</commentid>
    <comment_count>5</comment_count>
      <attachid>447967</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-12-25 20:16:45 -0800</bug_when>
    <thetext>Created attachment 447967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826846</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-25 22:17:33 -0800</bug_when>
    <thetext>Committed r287442 (245577@main): &lt;https://commits.webkit.org/245577@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447967.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826847</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-25 22:18:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/86910704&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447949</attachid>
            <date>2021-12-24 15:51:16 -0800</date>
            <delta_ts>2021-12-24 15:55:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234676-20211224155115.patch</filename>
            <type>text/plain</type>
            <size>14209</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Mzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY2N2JmNzg2ZmNiNjMw
MTM0NzM1ZGI1N2FjMjEzZGEyMjQxYWI0ZC4uMzMzMjcwMmFjNGQ2YjU2YWFhY2FhODBhYzBlZjJm
M2FjNDFjNDBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTEyLTI0ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIFR1cm4gSW5s
aW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50J3MgbGVhZGluZy90cmFpbGluZyBt
ZW1iZXIgdmFyaWFibGVzIHRvIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDY3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoaWxlIGFuIGVtcHR5
IChsb2dpY2FsIHdpZHRoID0gMCkgQ29udGludW91c0NvbnRlbnQgdGFrZXMgdXAgbm8gc3BhY2Us
IGl0IHNob3VsZCBub3QgYmUgbWlzdGFrZW4gZm9yIGNvbGxhcHNlZCBjb250ZW50CisgICAgICAg
IChpLmUgd2hlbiBtX2xvZ2ljYWxXaWR0aCgwKSA9PSBtX3RyYWlsaW5nQ29sbGFwc2libGVXaWR0
aCgwKSwgaGFzQ29sbGFwc2libGVDb250ZW50KCkgc2hvdWxkIHN0aWxsIHJldHVybiBmYWxzZSkK
KworICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRl
bnRCcmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJy
ZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbmdPdmVyZmxvd2luZ1J1
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2Vy
Ojp0cnlCcmVha2luZ1ByZXZpb3VzTm9uT3ZlcmZsb3dpbmdSdW5zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50
OjphcHBlbmRUb1J1bkxpc3QpOiBBZGQgYSBkZWRpY2F0ZWQgZnVuY3Rpb24gdG8gZGVhbCB3aXRo
IGFwcGVuZCBhbmQgbG9naWNhbFdpZHRoLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OnJlc2V0VHJhaWxpbmdXaGl0ZXNw
YWNlKTogVHVybiB0cmFpbGluZyB3aGl0ZXNwYWNlIGludG8gbGVhZGluZyBpZiBhcHBsaWNhYmxl
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGlu
dW91c0NvbnRlbnQ6OmFwcGVuZCk6IEFkZCBkZWRpY2F0ZWQgZnVuY3Rpb25zIGZvciBlYWNoIGlu
bGluZSBpdGVtIHR5cGVzLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6bGVhZGluZ0NvbGxhcHNpYmxl
V2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJl
YWtlcjo6Q29udGludW91c0NvbnRlbnQ6OnRyYWlsaW5nQ29sbGFwc2libGVXaWR0aCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51
b3VzQ29udGVudDo6aGFzQ29sbGFwc2libGVDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50Ojppc0Z1
bGx5Q29sbGFwc2libGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6YXBwZW5kSW5saW5lSXRlbSk6CisKIDIw
MjEtMTItMjQgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNd
W0lGQ10gUmVtb3ZlIHJlZHVuZGFudCBJbmxpbmVDb250ZW50QnJlYWtlcjo6c2hvdWxkS2VlcEVu
ZE9mTGluZVdoaXRlc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVh
a2VyLmNwcAppbmRleCBmNDA3ZWI0ZWM1NzUzODIxYTY5ZjJiMmY0MmQ5NWIyNjlmZDEwNzAwLi4x
NjQ1YjUzOTdmMDZlNzg3NGNmYmZjNTJlZWRiMDJmYmZjZTdjOWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50
QnJlYWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCkBAIC0xNjMsOSArMTYzLDkgQEAgSW5s
aW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6cHJvY2Vzc092
ZXJmbG93aW5nQ29udGVudChjb24KICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIG5ldyBjb250
ZW50IGlzIGZ1bGx5IGNvbGxhcHNpYmxlLCBpdCBzaG91bGQgc3VyZWx5IGZpdC4KICAgICAgICAg
ICAgICAgICByZXR1cm4gSW5saW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdCB7IFJlc3VsdDo6QWN0
aW9uOjpLZWVwIH07CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGF1dG8g
c3BhY2VSZXF1aXJlZCA9IGNvbnRpbnVvdXNDb250ZW50LmxvZ2ljYWxXaWR0aCgpIC0gY29udGlu
dW91c0NvbnRlbnQudHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoKCk7CisgICAgICAgICAgICAgICAg
YXV0byBzcGFjZVJlcXVpcmVkID0gY29udGludW91c0NvbnRlbnQubG9naWNhbFdpZHRoKCkgLSBj
b250aW51b3VzQ29udGVudC50cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGgoKS52YWx1ZV9vcigwLmYp
OwogICAgICAgICAgICAgICAgIGlmIChsaW5lU3RhdHVzLmhhc0Z1bGx5Q29sbGFwc2libGVUcmFp
bGluZ0NvbnRlbnQgfHwgaXNWaXN1YWxseUVtcHR5V2hpdGVzcGFjZUNvbnRlbnQoY29udGludW91
c0NvbnRlbnQpKQotICAgICAgICAgICAgICAgICAgICBzcGFjZVJlcXVpcmVkIC09IGNvbnRpbnVv
dXNDb250ZW50LmxlYWRpbmdDb2xsYXBzaWJsZVdpZHRoKCk7CisgICAgICAgICAgICAgICAgICAg
IHNwYWNlUmVxdWlyZWQgLT0gY29udGludW91c0NvbnRlbnQubGVhZGluZ0NvbGxhcHNpYmxlV2lk
dGgoKS52YWx1ZV9vcigwLmYpOwogICAgICAgICAgICAgICAgIGlmIChzcGFjZVJlcXVpcmVkIDw9
IGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJ
bmxpbmVDb250ZW50QnJlYWtlcjo6UmVzdWx0IHsgUmVzdWx0OjpBY3Rpb246OktlZXAgfTsKICAg
ICAgICAgICAgIH0KQEAgLTUxMyw3ICs1MTMsNyBAQCBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRl
bnRCcmVha2VyOjpPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uPiBJbgog
ICAgIGlmICghaXNXcmFwcGFibGVSdW4ob3ZlcmZsb3dpbmdSdW4pKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgYXV0byBhdmlsYWJsZVdpZHRoID0gc3RkOjptYXgoMC4wZiwgbGluZVN0YXR1
cy5hdmFpbGFibGVXaWR0aCAtIG5vbk92ZXJmbG93aW5nQ29udGVudFdpZHRoKTsKKyAgICBhdXRv
IGF2aWxhYmxlV2lkdGggPSBzdGQ6Om1heCgwLmYsIGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGgg
LSBub25PdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCk7CiAgICAgYXV0byBwYXJ0aWFsT3ZlcmZsb3dp
bmdSdW4gPSB0cnlCcmVha2luZ1RleHRSdW4ocnVucywgeyBvdmVyZmxvd2luZ1J1bkluZGV4LCB0
cnVlLCBsaW5lU3RhdHVzLmNvbnRlbnRMb2dpY2FsUmlnaHQgKyBub25PdmVyZmxvd2luZ0NvbnRl
bnRXaWR0aCB9LCBhdmlsYWJsZVdpZHRoLCBsaW5lU3RhdHVzLmhhc1dyYXBPcHBvcnR1bml0eUF0
UHJldmlvdXNQb3NpdGlvbik7CiAgICAgaWYgKCFwYXJ0aWFsT3ZlcmZsb3dpbmdSdW4pCiAgICAg
ICAgIHJldHVybiB7IH07CkBAIC01MzYsNyArNTM2LDcgQEAgc3RkOjpvcHRpb25hbDxJbmxpbmVD
b250ZW50QnJlYWtlcjo6T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4g
SW4KICAgICAgICAgaWYgKCFpc1dyYXBwYWJsZVJ1bihydW4pKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIEFTU0VSVChydW4uaW5saW5lSXRlbS5pc1RleHQoKSk7Ci0gICAgICAgIGF1
dG8gYXZpbGFibGVXaWR0aCA9IHN0ZDo6bWF4KDAuMGYsIGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lk
dGggLSBwcmV2aW91c0NvbnRlbnRXaWR0aCk7CisgICAgICAgIGF1dG8gYXZpbGFibGVXaWR0aCA9
IHN0ZDo6bWF4KDAuZiwgbGluZVN0YXR1cy5hdmFpbGFibGVXaWR0aCAtIHByZXZpb3VzQ29udGVu
dFdpZHRoKTsKICAgICAgICAgaWYgKGF1dG8gcGFydGlhbFJ1biA9IHRyeUJyZWFraW5nVGV4dFJ1
bihydW5zLCB7IGluZGV4LCBmYWxzZSwgbGluZVN0YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0ICsg
cHJldmlvdXNDb250ZW50V2lkdGggfSwgYXZpbGFibGVXaWR0aCwgbGluZVN0YXR1cy5oYXNXcmFw
T3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pKSB7CiAgICAgICAgICAgICAvLyBXZSBrbm93
IHRoaXMgcnVuIGZpdHMsIHNvIGlmIGJyZWFraW5nIGlzIGFsbG93ZWQgb24gdGhlIHJ1biwgaXQg
c2hvdWxkIHJldHVybiBhIG5vbi1lbXB0eSBsZWZ0LXNpZGUKICAgICAgICAgICAgIC8vIHNpbmNl
IGl0J3MgZWl0aGVyIGF0IGh5cGhlbiBwb3NpdGlvbiBvciB0aGUgZW50aXJlIHJ1biBpcyByZXR1
cm5lZC4KQEAgLTY3OSwyNiArNjc5LDQ3IEBAIE9wdGlvblNldDxJbmxpbmVDb250ZW50QnJlYWtl
cjo6V29yZEJyZWFrUnVsZT4gSW5saW5lQ29udGVudEJyZWFrZXI6OndvcmRCcmVha0JlCiAgICAg
cmV0dXJuIGluY2x1ZGVIeXBoZW5hdGlvbklmQWxsb3dlZCh7IH0pOwogfQogCi12b2lkIElubGlu
ZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6YXBwZW5kKGNvbnN0IElubGluZUl0
ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsV2lkdGgsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gY29sbGFwc2li
bGVXaWR0aCkKK3ZvaWQgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50Ojph
cHBlbmRUb1J1bkxpc3QoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIHsKLSAgICBBU1NF
UlQoaW5saW5lSXRlbS5pc1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzQm94KCkgfHwgaW5saW5lSXRl
bS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKTsKLSAg
ICBhdXRvIGlzTGVhZGluZ0NvbGxhcHNpYmxlID0gY29sbGFwc2libGVXaWR0aCAmJiAobV9ydW5z
LmlzRW1wdHkoKSB8fCBpc0Z1bGx5Q29sbGFwc2libGUoKSk7CiAgICAgbV9ydW5zLmFwcGVuZCh7
IGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGggfSk7CiAgICAgbV9sb2dpY2FsV2lkdGgg
PSBjbGFtcFRvPElubGluZUxheW91dFVuaXQ+KG1fbG9naWNhbFdpZHRoICsgbG9naWNhbFdpZHRo
KTsKK30KKwordm9pZCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OnJl
c2V0VHJhaWxpbmdXaGl0ZXNwYWNlKCkKK3sKKyAgICBpZiAoIW1fbGVhZGluZ0NvbGxhcHNpYmxl
V2lkdGgpCisgICAgICAgIG1fbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGggPSBtX3RyYWlsaW5nQ29s
bGFwc2libGVXaWR0aDsKKyAgICBtX3RyYWlsaW5nQ29sbGFwc2libGVXaWR0aCA9IHsgfTsKK30K
Kwordm9pZCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OmFwcGVuZChj
b25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKQoreworICAgIEFTU0VSVChpbmxpbmVJdGVtLmlz
Qm94KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lu
bGluZUJveEVuZCgpKTsKKyAgICBhcHBlbmRUb1J1bkxpc3QoaW5saW5lSXRlbSwgc3R5bGUsIGxv
Z2ljYWxXaWR0aCk7CisgICAgaWYgKGlubGluZUl0ZW0uaXNCb3goKSkgeworICAgICAgICAvLyBJ
bmxpbmUgYm94ZXMgKHdoaXRlc3BhY2UtPiA8c3Bhbj48L3NwYW4+KSBkbyBub3QgcHJldmVudCB0
aGUgdHJhaWxpbmcgY29udGVudCBmcm9tIGdldHRpbmcgY29sbGFwc2VkL2h1bmcKKyAgICAgICAg
Ly8gYnV0IGF0b21pYyBpbmxpbmUgbGV2ZWwgYm94ZXMgZG8uCisgICAgICAgIHJlc2V0VHJhaWxp
bmdXaGl0ZXNwYWNlKCk7CisgICAgfQorfQorCit2b2lkIElubGluZUNvbnRlbnRCcmVha2VyOjpD
b250aW51b3VzQ29udGVudDo6YXBwZW5kKGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVUZXh0
SXRlbSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBjb2xsYXBzaWJsZVdpZHRoKQor
ewogICAgIGlmICghY29sbGFwc2libGVXaWR0aCkgewotICAgICAgICBpZiAoaW5saW5lSXRlbS5p
c1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzQm94KCkpIHsKLSAgICAgICAgICAgIC8vIElubGluZSBi
b3hlcyBkbyBub3QgcHJldmVudCB0aGUgdHJhaWxpbmcgY29udGVudCBmcm9tIGdldHRpbmcgY29s
bGFwc2VkLgotICAgICAgICAgICAgbV90cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGggPSB7IH07Ci0g
ICAgICAgIH0KKyAgICAgICAgYXBwZW5kVG9SdW5MaXN0KGlubGluZVRleHRJdGVtLCBzdHlsZSwg
bG9naWNhbFdpZHRoKTsKKyAgICAgICAgcmVzZXRUcmFpbGluZ1doaXRlc3BhY2UoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKwogICAgIEFTU0VSVCgqY29sbGFwc2libGVXaWR0aCA8PSBsb2dp
Y2FsV2lkdGgpOworICAgIGF1dG8gaXNMZWFkaW5nQ29sbGFwc2libGUgPSBjb2xsYXBzaWJsZVdp
ZHRoICYmIChtX3J1bnMuaXNFbXB0eSgpIHx8IGlzRnVsbHlDb2xsYXBzaWJsZSgpKTsKKyAgICBh
cHBlbmRUb1J1bkxpc3QoaW5saW5lVGV4dEl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgpOwogICAg
IGlmIChpc0xlYWRpbmdDb2xsYXBzaWJsZSkgewogICAgICAgICBBU1NFUlQoIW1fdHJhaWxpbmdD
b2xsYXBzaWJsZVdpZHRoKTsKLSAgICAgICAgbV9sZWFkaW5nQ29sbGFwc2libGVXaWR0aCArPSAq
Y29sbGFwc2libGVXaWR0aDsKKyAgICAgICAgbV9sZWFkaW5nQ29sbGFwc2libGVXaWR0aCA9IG1f
bGVhZGluZ0NvbGxhcHNpYmxlV2lkdGgudmFsdWVfb3IoMC5mKSArICpjb2xsYXBzaWJsZVdpZHRo
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRo
ID0gKmNvbGxhcHNpYmxlV2lkdGggPT0gbG9naWNhbFdpZHRoID8gbV90cmFpbGluZ0NvbGxhcHNp
YmxlV2lkdGggKyBsb2dpY2FsV2lkdGggOiAqY29sbGFwc2libGVXaWR0aDsKKyAgICBtX3RyYWls
aW5nQ29sbGFwc2libGVXaWR0aCA9ICpjb2xsYXBzaWJsZVdpZHRoID09IGxvZ2ljYWxXaWR0aCA/
IG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoLnZhbHVlX29yKDAuZikgKyBsb2dpY2FsV2lkdGgg
OiAqY29sbGFwc2libGVXaWR0aDsKIH0KIAogdm9pZCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29u
dGludW91c0NvbnRlbnQ6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50
QnJlYWtlci5oCmluZGV4IGM3M2M1NjZhOTY1MDM4NjRkYTZiMTk2M2U3YjBhM2NjNTQyNzk3OTMu
Ljk0MTczY2YzMTY3NmIyOTYzOWE3YWJlMDBiMGRjMDFkZjY5NTcxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRl
bnRCcmVha2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAogY2xhc3MgSW5saW5lSXRlbTsKK2Ns
YXNzIElubGluZVRleHRJdGVtOwogc3RydWN0IENhbmRpZGF0ZVRleHRSdW5Gb3JCcmVha2luZzsK
IAogY2xhc3MgSW5saW5lQ29udGVudEJyZWFrZXIgewpAQCAtODAsMTIgKzgxLDEzIEBAIHB1Ymxp
YzoKICAgICAvLyBzZWUgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10ZXh0LTMvI2xpbmUt
YnJlYWstZGV0YWlscwogICAgIHN0cnVjdCBDb250aW51b3VzQ29udGVudCB7CiAgICAgICAgIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsV2lk
dGg7IH0KLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsZWFkaW5nQ29sbGFwc2libGVXaWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGg7IH0KLSAgICAgICAgSW5s
aW5lTGF5b3V0VW5pdCB0cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3RyYWlsaW5nQ29sbGFwc2libGVXaWR0aDsgfQotICAgICAgICBib29sIGhhc0NvbGxhcHNpYmxl
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRyYWlsaW5nQ29sbGFwc2libGVXaWR0aCgpID4gMCB8
fCBsZWFkaW5nQ29sbGFwc2libGVXaWR0aCgpID4gMDsgfQotICAgICAgICBib29sIGlzRnVsbHlD
b2xsYXBzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxXaWR0aCgpID09IHRyYWlsaW5nQ29s
bGFwc2libGVXaWR0aCgpICsgbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGgoKTsgfQorICAgICAgICBz
dGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGxlYWRpbmdDb2xsYXBzaWJsZVdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9sZWFkaW5nQ29sbGFwc2libGVXaWR0aDsgfQorICAgICAgICBzdGQ6
Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHRyYWlsaW5nQ29sbGFwc2libGVXaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoOyB9CisgICAgICAgIGJvb2wg
aGFzQ29sbGFwc2libGVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJhaWxpbmdDb2xsYXBzaWJs
ZVdpZHRoKCkgfHwgbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGgoKTsgfQorICAgICAgICBib29sIGlz
RnVsbHlDb2xsYXBzaWJsZSgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IElu
bGluZUl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdp
ZHRoLCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGNvbGxhcHNpYmxlV2lkdGggPSBz
dGQ6Om51bGxvcHQpOworICAgICAgICB2b2lkIGFwcGVuZChjb25zdCBJbmxpbmVJdGVtJiwgY29u
c3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CisgICAgICAg
IHZvaWQgYXBwZW5kKGNvbnN0IElubGluZVRleHRJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJ
bmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRV
bml0PiBjb2xsYXBzaWJsZVdpZHRoKTsKICAgICAgICAgdm9pZCByZXNldCgpOwogCiAgICAgICAg
IHN0cnVjdCBSdW4gewpAQCAtMTAxLDEwICsxMDMsMTMgQEAgcHVibGljOgogICAgICAgICBjb25z
dCBSdW5MaXN0JiBydW5zKCkgY29uc3QgeyByZXR1cm4gbV9ydW5zOyB9CiAKICAgICBwcml2YXRl
OgorICAgICAgICB2b2lkIGFwcGVuZFRvUnVuTGlzdChjb25zdCBJbmxpbmVJdGVtJiwgY29uc3Qg
UmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CisgICAgICAgIHZv
aWQgcmVzZXRUcmFpbGluZ1doaXRlc3BhY2UoKTsKKwogICAgICAgICBSdW5MaXN0IG1fcnVuczsK
ICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2xvZ2ljYWxXaWR0aCB7IDAgfTsKLSAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCBtX2xlYWRpbmdDb2xsYXBzaWJsZVdpZHRoIHsgMCB9OwotICAgICAg
ICBJbmxpbmVMYXlvdXRVbml0IG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoIHsgMCB9OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG1fbGVhZGluZ0NvbGxhcHNpYmxl
V2lkdGggeyAwIH07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbV90
cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGggeyAwIH07CiAgICAgfTsKIAogICAgIHN0cnVjdCBMaW5l
U3RhdHVzIHsKQEAgLTE3MSw2ICsxNzYsMTYgQEAgaW5saW5lIElubGluZUNvbnRlbnRCcmVha2Vy
OjpDb250aW51b3VzQ29udGVudDo6UnVuOjpSdW4oY29uc3QgUnVuJiBvdGhlcikKIHsKIH0KIAor
aW5saW5lIGJvb2wgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50Ojppc0Z1
bGx5Q29sbGFwc2libGUoKSBjb25zdAoreworICAgIGF1dG8gY29sbGFwc2libGVXaWR0aCA9IHN0
ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OworICAgIGlmIChtX2xlYWRpbmdDb2xs
YXBzaWJsZVdpZHRoKQorICAgICAgICBjb2xsYXBzaWJsZVdpZHRoID0gKm1fbGVhZGluZ0NvbGxh
cHNpYmxlV2lkdGg7CisgICAgaWYgKG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoKQorICAgICAg
ICBjb2xsYXBzaWJsZVdpZHRoID0gY29sbGFwc2libGVXaWR0aC52YWx1ZV9vcigwLmYpICsgKm1f
dHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoOworICAgIHJldHVybiBjb2xsYXBzaWJsZVdpZHRoICYm
ICpjb2xsYXBzaWJsZVdpZHRoID09IGxvZ2ljYWxXaWR0aCgpOworfQorCiB9CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA2MmFjZDYwODAz
MzkxNjk2ZDc0YTJmM2ExNjE5Nzg5YTY2YmJmOGMyLi5iNGEwMTA5NjkwNzhmMTEzMDRhZjJhZDE2
MWVkMWNkNTYxMGQyYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIu
Y3BwCkBAIC0xOTMsMjUgKzE5MywzMyBAQCBMaW5lQ2FuZGlkYXRlOjpJbmxpbmVDb250ZW50OjpJ
bmxpbmVDb250ZW50KGJvb2wgaWdub3JlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nKQogaW5saW5lIHZv
aWQgTGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6YXBwZW5kSW5saW5lSXRlbShjb25zdCBJ
bmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoKQogewogICAgIEFTU0VSVChpbmxpbmVJdGVtLmlzVGV4dCgp
IHx8IGlubGluZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8
fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpOwotICAgIGF1dG8gY29sbGFwc2libGVXaWR0
aCA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gewotICAgICAgICBp
ZiAoIWlubGluZUl0ZW0uaXNUZXh0KCkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAg
ICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihpbmxpbmVJ
dGVtKTsKLSAgICAgICAgaWYgKGlubGluZVRleHRJdGVtLmlzV2hpdGVzcGFjZSgpICYmICFJbmxp
bmVUZXh0SXRlbTo6c2hvdWxkUHJlc2VydmVTcGFjZXNBbmRUYWJzKGlubGluZVRleHRJdGVtKSkg
ewotICAgICAgICAgICAgLy8gRnVsbHkgY29sbGFwc2libGUgdHJhaWxpbmcgY29udGVudC4KLSAg
ICAgICAgICAgIHJldHVybiBsb2dpY2FsV2lkdGg7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gQ2hl
Y2sgZm9yIHBhcnRpYWxseSBjb2xsYXBzaWJsZSBjb250ZW50LgotICAgICAgICBpZiAobV9pZ25v
cmVUcmFpbGluZ0xldHRlclNwYWNpbmcpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAg
ICBhdXRvIGxldHRlclNwYWNpbmcgPSBzdHlsZS5sZXR0ZXJTcGFjaW5nKCk7Ci0gICAgICAgIGlm
IChsZXR0ZXJTcGFjaW5nIDw9IDApCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBB
U1NFUlQobG9naWNhbFdpZHRoID4gbGV0dGVyU3BhY2luZyk7Ci0gICAgICAgIHJldHVybiBsZXR0
ZXJTcGFjaW5nOwotICAgIH07Ci0gICAgbV9jb250aW51b3VzQ29udGVudC5hcHBlbmQoaW5saW5l
SXRlbSwgc3R5bGUsIGxvZ2ljYWxXaWR0aCwgY29sbGFwc2libGVXaWR0aCgpKTsKICAgICBtX2hh
c0lubGluZUxldmVsQm94ID0gbV9oYXNJbmxpbmVMZXZlbEJveCB8fCBpbmxpbmVJdGVtLmlzQm94
KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCk7CisKKyAgICBpZiAoaW5saW5lSXRl
bS5pc0JveCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0u
aXNJbmxpbmVCb3hFbmQoKSkKKyAgICAgICAgcmV0dXJuIG1fY29udGludW91c0NvbnRlbnQuYXBw
ZW5kKGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgpOworCisgICAgaWYgKGlubGluZUl0
ZW0uaXNUZXh0KCkpIHsKKyAgICAgICAgYXV0byYgaW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJ
bmxpbmVUZXh0SXRlbT4oaW5saW5lSXRlbSk7CisgICAgICAgIGF1dG8gaXNXaGl0ZXNwYWNlID0g
aW5saW5lVGV4dEl0ZW0uaXNXaGl0ZXNwYWNlKCk7CisKKyAgICAgICAgYXV0byBjb2xsYXBzaWJs
ZVdpZHRoID0gWyZdKCkgLT4gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7CisgICAg
ICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlICYmICFJbmxpbmVUZXh0SXRlbTo6c2hvdWxkUHJlc2Vy
dmVTcGFjZXNBbmRUYWJzKGlubGluZVRleHRJdGVtKSkgeworICAgICAgICAgICAgICAgIC8vIEZ1
bGx5IGNvbGxhcHNpYmxlIHRyYWlsaW5nIGNvbnRlbnQuCisgICAgICAgICAgICAgICAgcmV0dXJu
IGxvZ2ljYWxXaWR0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIENoZWNrIGZvciBw
YXJ0aWFsbHkgY29sbGFwc2libGUgY29udGVudC4KKyAgICAgICAgICAgIGlmIChtX2lnbm9yZVRy
YWlsaW5nTGV0dGVyU3BhY2luZykKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAg
ICAgICAgYXV0byBsZXR0ZXJTcGFjaW5nID0gc3R5bGUubGV0dGVyU3BhY2luZygpOworICAgICAg
ICAgICAgaWYgKGxldHRlclNwYWNpbmcgPD0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9
OworICAgICAgICAgICAgQVNTRVJUKGxvZ2ljYWxXaWR0aCA+IGxldHRlclNwYWNpbmcpOworICAg
ICAgICAgICAgcmV0dXJuIGxldHRlclNwYWNpbmc7CisgICAgICAgIH07CisgICAgICAgIG1fY29u
dGludW91c0NvbnRlbnQuYXBwZW5kKGlubGluZVRleHRJdGVtLCBzdHlsZSwgbG9naWNhbFdpZHRo
LCBjb2xsYXBzaWJsZVdpZHRoKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCiBpbmxpbmUgdm9pZCBMaW5lQ2FuZGlkYXRlOjpJbmxpbmVD
b250ZW50OjpyZXNldCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447950</attachid>
            <date>2021-12-24 15:55:27 -0800</date>
            <delta_ts>2021-12-25 13:03:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234676-20211224155526.patch</filename>
            <type>text/plain</type>
            <size>14205</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Mzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY2N2JmNzg2ZmNiNjMw
MTM0NzM1ZGI1N2FjMjEzZGEyMjQxYWI0ZC4uMzMzMjcwMmFjNGQ2YjU2YWFhY2FhODBhYzBlZjJm
M2FjNDFjNDBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTEyLTI0ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIFR1cm4gSW5s
aW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50J3MgbGVhZGluZy90cmFpbGluZyBt
ZW1iZXIgdmFyaWFibGVzIHRvIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDY3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoaWxlIGFuIGVtcHR5
IChsb2dpY2FsIHdpZHRoID0gMCkgQ29udGludW91c0NvbnRlbnQgdGFrZXMgdXAgbm8gc3BhY2Us
IGl0IHNob3VsZCBub3QgYmUgbWlzdGFrZW4gZm9yIGNvbGxhcHNlZCBjb250ZW50CisgICAgICAg
IChpLmUgd2hlbiBtX2xvZ2ljYWxXaWR0aCgwKSA9PSBtX3RyYWlsaW5nQ29sbGFwc2libGVXaWR0
aCgwKSwgaGFzQ29sbGFwc2libGVDb250ZW50KCkgc2hvdWxkIHN0aWxsIHJldHVybiBmYWxzZSkK
KworICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRl
bnRCcmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJy
ZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbmdPdmVyZmxvd2luZ1J1
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2Vy
Ojp0cnlCcmVha2luZ1ByZXZpb3VzTm9uT3ZlcmZsb3dpbmdSdW5zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50
OjphcHBlbmRUb1J1bkxpc3QpOiBBZGQgYSBkZWRpY2F0ZWQgZnVuY3Rpb24gdG8gZGVhbCB3aXRo
IGFwcGVuZCBhbmQgbG9naWNhbFdpZHRoLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OnJlc2V0VHJhaWxpbmdXaGl0ZXNw
YWNlKTogVHVybiB0cmFpbGluZyB3aGl0ZXNwYWNlIGludG8gbGVhZGluZyBpZiBhcHBsaWNhYmxl
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGlu
dW91c0NvbnRlbnQ6OmFwcGVuZCk6IEFkZCBkZWRpY2F0ZWQgZnVuY3Rpb25zIGZvciBlYWNoIGlu
bGluZSBpdGVtIHR5cGVzLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6bGVhZGluZ0NvbGxhcHNpYmxl
V2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJl
YWtlcjo6Q29udGludW91c0NvbnRlbnQ6OnRyYWlsaW5nQ29sbGFwc2libGVXaWR0aCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51
b3VzQ29udGVudDo6aGFzQ29sbGFwc2libGVDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50Ojppc0Z1
bGx5Q29sbGFwc2libGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6YXBwZW5kSW5saW5lSXRlbSk6CisKIDIw
MjEtMTItMjQgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNd
W0lGQ10gUmVtb3ZlIHJlZHVuZGFudCBJbmxpbmVDb250ZW50QnJlYWtlcjo6c2hvdWxkS2VlcEVu
ZE9mTGluZVdoaXRlc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVh
a2VyLmNwcAppbmRleCBmNDA3ZWI0ZWM1NzUzODIxYTY5ZjJiMmY0MmQ5NWIyNjlmZDEwNzAwLi4x
NjQ1YjUzOTdmMDZlNzg3NGNmYmZjNTJlZWRiMDJmYmZjZTdjOWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50
QnJlYWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCkBAIC0xNjMsOSArMTYzLDkgQEAgSW5s
aW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6cHJvY2Vzc092
ZXJmbG93aW5nQ29udGVudChjb24KICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIG5ldyBjb250
ZW50IGlzIGZ1bGx5IGNvbGxhcHNpYmxlLCBpdCBzaG91bGQgc3VyZWx5IGZpdC4KICAgICAgICAg
ICAgICAgICByZXR1cm4gSW5saW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdCB7IFJlc3VsdDo6QWN0
aW9uOjpLZWVwIH07CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGF1dG8g
c3BhY2VSZXF1aXJlZCA9IGNvbnRpbnVvdXNDb250ZW50LmxvZ2ljYWxXaWR0aCgpIC0gY29udGlu
dW91c0NvbnRlbnQudHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoKCk7CisgICAgICAgICAgICAgICAg
YXV0byBzcGFjZVJlcXVpcmVkID0gY29udGludW91c0NvbnRlbnQubG9naWNhbFdpZHRoKCkgLSBj
b250aW51b3VzQ29udGVudC50cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGgoKS52YWx1ZV9vcigwLmYp
OwogICAgICAgICAgICAgICAgIGlmIChsaW5lU3RhdHVzLmhhc0Z1bGx5Q29sbGFwc2libGVUcmFp
bGluZ0NvbnRlbnQgfHwgaXNWaXN1YWxseUVtcHR5V2hpdGVzcGFjZUNvbnRlbnQoY29udGludW91
c0NvbnRlbnQpKQotICAgICAgICAgICAgICAgICAgICBzcGFjZVJlcXVpcmVkIC09IGNvbnRpbnVv
dXNDb250ZW50LmxlYWRpbmdDb2xsYXBzaWJsZVdpZHRoKCk7CisgICAgICAgICAgICAgICAgICAg
IHNwYWNlUmVxdWlyZWQgLT0gY29udGludW91c0NvbnRlbnQubGVhZGluZ0NvbGxhcHNpYmxlV2lk
dGgoKS52YWx1ZV9vcigwLmYpOwogICAgICAgICAgICAgICAgIGlmIChzcGFjZVJlcXVpcmVkIDw9
IGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJ
bmxpbmVDb250ZW50QnJlYWtlcjo6UmVzdWx0IHsgUmVzdWx0OjpBY3Rpb246OktlZXAgfTsKICAg
ICAgICAgICAgIH0KQEAgLTUxMyw3ICs1MTMsNyBAQCBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRl
bnRCcmVha2VyOjpPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uPiBJbgog
ICAgIGlmICghaXNXcmFwcGFibGVSdW4ob3ZlcmZsb3dpbmdSdW4pKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgYXV0byBhdmlsYWJsZVdpZHRoID0gc3RkOjptYXgoMC4wZiwgbGluZVN0YXR1
cy5hdmFpbGFibGVXaWR0aCAtIG5vbk92ZXJmbG93aW5nQ29udGVudFdpZHRoKTsKKyAgICBhdXRv
IGF2aWxhYmxlV2lkdGggPSBzdGQ6Om1heCgwLmYsIGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGgg
LSBub25PdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCk7CiAgICAgYXV0byBwYXJ0aWFsT3ZlcmZsb3dp
bmdSdW4gPSB0cnlCcmVha2luZ1RleHRSdW4ocnVucywgeyBvdmVyZmxvd2luZ1J1bkluZGV4LCB0
cnVlLCBsaW5lU3RhdHVzLmNvbnRlbnRMb2dpY2FsUmlnaHQgKyBub25PdmVyZmxvd2luZ0NvbnRl
bnRXaWR0aCB9LCBhdmlsYWJsZVdpZHRoLCBsaW5lU3RhdHVzLmhhc1dyYXBPcHBvcnR1bml0eUF0
UHJldmlvdXNQb3NpdGlvbik7CiAgICAgaWYgKCFwYXJ0aWFsT3ZlcmZsb3dpbmdSdW4pCiAgICAg
ICAgIHJldHVybiB7IH07CkBAIC01MzYsNyArNTM2LDcgQEAgc3RkOjpvcHRpb25hbDxJbmxpbmVD
b250ZW50QnJlYWtlcjo6T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4g
SW4KICAgICAgICAgaWYgKCFpc1dyYXBwYWJsZVJ1bihydW4pKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIEFTU0VSVChydW4uaW5saW5lSXRlbS5pc1RleHQoKSk7Ci0gICAgICAgIGF1
dG8gYXZpbGFibGVXaWR0aCA9IHN0ZDo6bWF4KDAuMGYsIGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lk
dGggLSBwcmV2aW91c0NvbnRlbnRXaWR0aCk7CisgICAgICAgIGF1dG8gYXZpbGFibGVXaWR0aCA9
IHN0ZDo6bWF4KDAuZiwgbGluZVN0YXR1cy5hdmFpbGFibGVXaWR0aCAtIHByZXZpb3VzQ29udGVu
dFdpZHRoKTsKICAgICAgICAgaWYgKGF1dG8gcGFydGlhbFJ1biA9IHRyeUJyZWFraW5nVGV4dFJ1
bihydW5zLCB7IGluZGV4LCBmYWxzZSwgbGluZVN0YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0ICsg
cHJldmlvdXNDb250ZW50V2lkdGggfSwgYXZpbGFibGVXaWR0aCwgbGluZVN0YXR1cy5oYXNXcmFw
T3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pKSB7CiAgICAgICAgICAgICAvLyBXZSBrbm93
IHRoaXMgcnVuIGZpdHMsIHNvIGlmIGJyZWFraW5nIGlzIGFsbG93ZWQgb24gdGhlIHJ1biwgaXQg
c2hvdWxkIHJldHVybiBhIG5vbi1lbXB0eSBsZWZ0LXNpZGUKICAgICAgICAgICAgIC8vIHNpbmNl
IGl0J3MgZWl0aGVyIGF0IGh5cGhlbiBwb3NpdGlvbiBvciB0aGUgZW50aXJlIHJ1biBpcyByZXR1
cm5lZC4KQEAgLTY3OSwyNiArNjc5LDQ3IEBAIE9wdGlvblNldDxJbmxpbmVDb250ZW50QnJlYWtl
cjo6V29yZEJyZWFrUnVsZT4gSW5saW5lQ29udGVudEJyZWFrZXI6OndvcmRCcmVha0JlCiAgICAg
cmV0dXJuIGluY2x1ZGVIeXBoZW5hdGlvbklmQWxsb3dlZCh7IH0pOwogfQogCi12b2lkIElubGlu
ZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6YXBwZW5kKGNvbnN0IElubGluZUl0
ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsV2lkdGgsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gY29sbGFwc2li
bGVXaWR0aCkKK3ZvaWQgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50Ojph
cHBlbmRUb1J1bkxpc3QoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIHsKLSAgICBBU1NF
UlQoaW5saW5lSXRlbS5pc1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzQm94KCkgfHwgaW5saW5lSXRl
bS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKTsKLSAg
ICBhdXRvIGlzTGVhZGluZ0NvbGxhcHNpYmxlID0gY29sbGFwc2libGVXaWR0aCAmJiAobV9ydW5z
LmlzRW1wdHkoKSB8fCBpc0Z1bGx5Q29sbGFwc2libGUoKSk7CiAgICAgbV9ydW5zLmFwcGVuZCh7
IGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGggfSk7CiAgICAgbV9sb2dpY2FsV2lkdGgg
PSBjbGFtcFRvPElubGluZUxheW91dFVuaXQ+KG1fbG9naWNhbFdpZHRoICsgbG9naWNhbFdpZHRo
KTsKK30KKwordm9pZCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OnJl
c2V0VHJhaWxpbmdXaGl0ZXNwYWNlKCkKK3sKKyAgICBpZiAoIW1fbGVhZGluZ0NvbGxhcHNpYmxl
V2lkdGgpCisgICAgICAgIG1fbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGggPSBtX3RyYWlsaW5nQ29s
bGFwc2libGVXaWR0aDsKKyAgICBtX3RyYWlsaW5nQ29sbGFwc2libGVXaWR0aCA9IHsgfTsKK30K
Kwordm9pZCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OmFwcGVuZChj
b25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKQoreworICAgIEFTU0VSVChpbmxpbmVJdGVtLmlz
Qm94KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lu
bGluZUJveEVuZCgpKTsKKyAgICBhcHBlbmRUb1J1bkxpc3QoaW5saW5lSXRlbSwgc3R5bGUsIGxv
Z2ljYWxXaWR0aCk7CisgICAgaWYgKGlubGluZUl0ZW0uaXNCb3goKSkgeworICAgICAgICAvLyBJ
bmxpbmUgYm94ZXMgKHdoaXRlc3BhY2UtPiA8c3Bhbj48L3NwYW4+KSBkbyBub3QgcHJldmVudCB0
aGUgdHJhaWxpbmcgY29udGVudCBmcm9tIGdldHRpbmcgY29sbGFwc2VkL2h1bmcKKyAgICAgICAg
Ly8gYnV0IGF0b21pYyBpbmxpbmUgbGV2ZWwgYm94ZXMgZG8uCisgICAgICAgIHJlc2V0VHJhaWxp
bmdXaGl0ZXNwYWNlKCk7CisgICAgfQorfQorCit2b2lkIElubGluZUNvbnRlbnRCcmVha2VyOjpD
b250aW51b3VzQ29udGVudDo6YXBwZW5kKGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVUZXh0
SXRlbSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBjb2xsYXBzaWJsZVdpZHRoKQor
ewogICAgIGlmICghY29sbGFwc2libGVXaWR0aCkgewotICAgICAgICBpZiAoaW5saW5lSXRlbS5p
c1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzQm94KCkpIHsKLSAgICAgICAgICAgIC8vIElubGluZSBi
b3hlcyBkbyBub3QgcHJldmVudCB0aGUgdHJhaWxpbmcgY29udGVudCBmcm9tIGdldHRpbmcgY29s
bGFwc2VkLgotICAgICAgICAgICAgbV90cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGggPSB7IH07Ci0g
ICAgICAgIH0KKyAgICAgICAgYXBwZW5kVG9SdW5MaXN0KGlubGluZVRleHRJdGVtLCBzdHlsZSwg
bG9naWNhbFdpZHRoKTsKKyAgICAgICAgcmVzZXRUcmFpbGluZ1doaXRlc3BhY2UoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKwogICAgIEFTU0VSVCgqY29sbGFwc2libGVXaWR0aCA8PSBsb2dp
Y2FsV2lkdGgpOworICAgIGF1dG8gaXNMZWFkaW5nQ29sbGFwc2libGUgPSBjb2xsYXBzaWJsZVdp
ZHRoICYmIChtX3J1bnMuaXNFbXB0eSgpIHx8IGlzRnVsbHlDb2xsYXBzaWJsZSgpKTsKKyAgICBh
cHBlbmRUb1J1bkxpc3QoaW5saW5lVGV4dEl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgpOwogICAg
IGlmIChpc0xlYWRpbmdDb2xsYXBzaWJsZSkgewogICAgICAgICBBU1NFUlQoIW1fdHJhaWxpbmdD
b2xsYXBzaWJsZVdpZHRoKTsKLSAgICAgICAgbV9sZWFkaW5nQ29sbGFwc2libGVXaWR0aCArPSAq
Y29sbGFwc2libGVXaWR0aDsKKyAgICAgICAgbV9sZWFkaW5nQ29sbGFwc2libGVXaWR0aCA9IG1f
bGVhZGluZ0NvbGxhcHNpYmxlV2lkdGgudmFsdWVfb3IoMC5mKSArICpjb2xsYXBzaWJsZVdpZHRo
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRo
ID0gKmNvbGxhcHNpYmxlV2lkdGggPT0gbG9naWNhbFdpZHRoID8gbV90cmFpbGluZ0NvbGxhcHNp
YmxlV2lkdGggKyBsb2dpY2FsV2lkdGggOiAqY29sbGFwc2libGVXaWR0aDsKKyAgICBtX3RyYWls
aW5nQ29sbGFwc2libGVXaWR0aCA9ICpjb2xsYXBzaWJsZVdpZHRoID09IGxvZ2ljYWxXaWR0aCA/
IG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoLnZhbHVlX29yKDAuZikgKyBsb2dpY2FsV2lkdGgg
OiAqY29sbGFwc2libGVXaWR0aDsKIH0KIAogdm9pZCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29u
dGludW91c0NvbnRlbnQ6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50
QnJlYWtlci5oCmluZGV4IGM3M2M1NjZhOTY1MDM4NjRkYTZiMTk2M2U3YjBhM2NjNTQyNzk3OTMu
LmRmZTU1YjYxZDNkNDllNzRhNTBmNzg4NmFhZTZmYTY3NWU4OGU4NmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRl
bnRCcmVha2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAogY2xhc3MgSW5saW5lSXRlbTsKK2Ns
YXNzIElubGluZVRleHRJdGVtOwogc3RydWN0IENhbmRpZGF0ZVRleHRSdW5Gb3JCcmVha2luZzsK
IAogY2xhc3MgSW5saW5lQ29udGVudEJyZWFrZXIgewpAQCAtODAsMTIgKzgxLDEzIEBAIHB1Ymxp
YzoKICAgICAvLyBzZWUgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10ZXh0LTMvI2xpbmUt
YnJlYWstZGV0YWlscwogICAgIHN0cnVjdCBDb250aW51b3VzQ29udGVudCB7CiAgICAgICAgIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsV2lk
dGg7IH0KLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsZWFkaW5nQ29sbGFwc2libGVXaWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGg7IH0KLSAgICAgICAgSW5s
aW5lTGF5b3V0VW5pdCB0cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3RyYWlsaW5nQ29sbGFwc2libGVXaWR0aDsgfQotICAgICAgICBib29sIGhhc0NvbGxhcHNpYmxl
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRyYWlsaW5nQ29sbGFwc2libGVXaWR0aCgpID4gMCB8
fCBsZWFkaW5nQ29sbGFwc2libGVXaWR0aCgpID4gMDsgfQotICAgICAgICBib29sIGlzRnVsbHlD
b2xsYXBzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxXaWR0aCgpID09IHRyYWlsaW5nQ29s
bGFwc2libGVXaWR0aCgpICsgbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGgoKTsgfQorICAgICAgICBz
dGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGxlYWRpbmdDb2xsYXBzaWJsZVdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9sZWFkaW5nQ29sbGFwc2libGVXaWR0aDsgfQorICAgICAgICBzdGQ6
Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHRyYWlsaW5nQ29sbGFwc2libGVXaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoOyB9CisgICAgICAgIGJvb2wg
aGFzQ29sbGFwc2libGVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJhaWxpbmdDb2xsYXBzaWJs
ZVdpZHRoKCkgfHwgbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGgoKTsgfQorICAgICAgICBib29sIGlz
RnVsbHlDb2xsYXBzaWJsZSgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IElu
bGluZUl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdp
ZHRoLCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGNvbGxhcHNpYmxlV2lkdGggPSBz
dGQ6Om51bGxvcHQpOworICAgICAgICB2b2lkIGFwcGVuZChjb25zdCBJbmxpbmVJdGVtJiwgY29u
c3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CisgICAgICAg
IHZvaWQgYXBwZW5kKGNvbnN0IElubGluZVRleHRJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJ
bmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRV
bml0PiBjb2xsYXBzaWJsZVdpZHRoKTsKICAgICAgICAgdm9pZCByZXNldCgpOwogCiAgICAgICAg
IHN0cnVjdCBSdW4gewpAQCAtMTAxLDEwICsxMDMsMTMgQEAgcHVibGljOgogICAgICAgICBjb25z
dCBSdW5MaXN0JiBydW5zKCkgY29uc3QgeyByZXR1cm4gbV9ydW5zOyB9CiAKICAgICBwcml2YXRl
OgorICAgICAgICB2b2lkIGFwcGVuZFRvUnVuTGlzdChjb25zdCBJbmxpbmVJdGVtJiwgY29uc3Qg
UmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CisgICAgICAgIHZv
aWQgcmVzZXRUcmFpbGluZ1doaXRlc3BhY2UoKTsKKwogICAgICAgICBSdW5MaXN0IG1fcnVuczsK
ICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2xvZ2ljYWxXaWR0aCB7IDAgfTsKLSAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCBtX2xlYWRpbmdDb2xsYXBzaWJsZVdpZHRoIHsgMCB9OwotICAgICAg
ICBJbmxpbmVMYXlvdXRVbml0IG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoIHsgMCB9OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG1fbGVhZGluZ0NvbGxhcHNpYmxl
V2lkdGggeyB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG1fdHJh
aWxpbmdDb2xsYXBzaWJsZVdpZHRoIHsgfTsKICAgICB9OwogCiAgICAgc3RydWN0IExpbmVTdGF0
dXMgewpAQCAtMTcxLDYgKzE3NiwxNiBAQCBpbmxpbmUgSW5saW5lQ29udGVudEJyZWFrZXI6OkNv
bnRpbnVvdXNDb250ZW50OjpSdW46OlJ1bihjb25zdCBSdW4mIG90aGVyKQogewogfQogCitpbmxp
bmUgYm9vbCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OmlzRnVsbHlD
b2xsYXBzaWJsZSgpIGNvbnN0Cit7CisgICAgYXV0byBjb2xsYXBzaWJsZVdpZHRoID0gc3RkOjpv
cHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07CisgICAgaWYgKG1fbGVhZGluZ0NvbGxhcHNp
YmxlV2lkdGgpCisgICAgICAgIGNvbGxhcHNpYmxlV2lkdGggPSAqbV9sZWFkaW5nQ29sbGFwc2li
bGVXaWR0aDsKKyAgICBpZiAobV90cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGgpCisgICAgICAgIGNv
bGxhcHNpYmxlV2lkdGggPSBjb2xsYXBzaWJsZVdpZHRoLnZhbHVlX29yKDAuZikgKyAqbV90cmFp
bGluZ0NvbGxhcHNpYmxlV2lkdGg7CisgICAgcmV0dXJuIGNvbGxhcHNpYmxlV2lkdGggJiYgKmNv
bGxhcHNpYmxlV2lkdGggPT0gbG9naWNhbFdpZHRoKCk7Cit9CisKIH0KIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IDYyYWNkNjA4MDMzOTE2
OTZkNzRhMmYzYTE2MTk3ODlhNjZiYmY4YzIuLmI0YTAxMDk2OTA3OGYxMTMwNGFmMmFkMTYxZWQx
Y2Q1NjEwZDJiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAK
QEAgLTE5MywyNSArMTkzLDMzIEBAIExpbmVDYW5kaWRhdGU6OklubGluZUNvbnRlbnQ6OklubGlu
ZUNvbnRlbnQoYm9vbCBpZ25vcmVUcmFpbGluZ0xldHRlclNwYWNpbmcpCiBpbmxpbmUgdm9pZCBM
aW5lQ2FuZGlkYXRlOjpJbmxpbmVDb250ZW50OjphcHBlbmRJbmxpbmVJdGVtKGNvbnN0IElubGlu
ZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsV2lkdGgpCiB7CiAgICAgQVNTRVJUKGlubGluZUl0ZW0uaXNUZXh0KCkgfHwg
aW5saW5lSXRlbS5pc0JveCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlu
bGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSk7Ci0gICAgYXV0byBjb2xsYXBzaWJsZVdpZHRoID0g
WyZdKCkgLT4gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7Ci0gICAgICAgIGlmICgh
aW5saW5lSXRlbS5pc1RleHQoKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGF1
dG8mIGlubGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0p
OwotICAgICAgICBpZiAoaW5saW5lVGV4dEl0ZW0uaXNXaGl0ZXNwYWNlKCkgJiYgIUlubGluZVRl
eHRJdGVtOjpzaG91bGRQcmVzZXJ2ZVNwYWNlc0FuZFRhYnMoaW5saW5lVGV4dEl0ZW0pKSB7Ci0g
ICAgICAgICAgICAvLyBGdWxseSBjb2xsYXBzaWJsZSB0cmFpbGluZyBjb250ZW50LgotICAgICAg
ICAgICAgcmV0dXJuIGxvZ2ljYWxXaWR0aDsKLSAgICAgICAgfQotICAgICAgICAvLyBDaGVjayBm
b3IgcGFydGlhbGx5IGNvbGxhcHNpYmxlIGNvbnRlbnQuCi0gICAgICAgIGlmIChtX2lnbm9yZVRy
YWlsaW5nTGV0dGVyU3BhY2luZykKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGF1
dG8gbGV0dGVyU3BhY2luZyA9IHN0eWxlLmxldHRlclNwYWNpbmcoKTsKLSAgICAgICAgaWYgKGxl
dHRlclNwYWNpbmcgPD0gMCkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIEFTU0VS
VChsb2dpY2FsV2lkdGggPiBsZXR0ZXJTcGFjaW5nKTsKLSAgICAgICAgcmV0dXJuIGxldHRlclNw
YWNpbmc7Ci0gICAgfTsKLSAgICBtX2NvbnRpbnVvdXNDb250ZW50LmFwcGVuZChpbmxpbmVJdGVt
LCBzdHlsZSwgbG9naWNhbFdpZHRoLCBjb2xsYXBzaWJsZVdpZHRoKCkpOwogICAgIG1faGFzSW5s
aW5lTGV2ZWxCb3ggPSBtX2hhc0lubGluZUxldmVsQm94IHx8IGlubGluZUl0ZW0uaXNCb3goKSB8
fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKTsKKworICAgIGlmIChpbmxpbmVJdGVtLmlz
Qm94KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lu
bGluZUJveEVuZCgpKQorICAgICAgICByZXR1cm4gbV9jb250aW51b3VzQ29udGVudC5hcHBlbmQo
aW5saW5lSXRlbSwgc3R5bGUsIGxvZ2ljYWxXaWR0aCk7CisKKyAgICBpZiAoaW5saW5lSXRlbS5p
c1RleHQoKSkgeworICAgICAgICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGlu
ZVRleHRJdGVtPihpbmxpbmVJdGVtKTsKKyAgICAgICAgYXV0byBpc1doaXRlc3BhY2UgPSBpbmxp
bmVUZXh0SXRlbS5pc1doaXRlc3BhY2UoKTsKKworICAgICAgICBhdXRvIGNvbGxhcHNpYmxlV2lk
dGggPSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsKKyAgICAgICAg
ICAgIGlmIChpc1doaXRlc3BhY2UgJiYgIUlubGluZVRleHRJdGVtOjpzaG91bGRQcmVzZXJ2ZVNw
YWNlc0FuZFRhYnMoaW5saW5lVGV4dEl0ZW0pKSB7CisgICAgICAgICAgICAgICAgLy8gRnVsbHkg
Y29sbGFwc2libGUgdHJhaWxpbmcgY29udGVudC4KKyAgICAgICAgICAgICAgICByZXR1cm4gbG9n
aWNhbFdpZHRoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHBhcnRp
YWxseSBjb2xsYXBzaWJsZSBjb250ZW50LgorICAgICAgICAgICAgaWYgKG1faWdub3JlVHJhaWxp
bmdMZXR0ZXJTcGFjaW5nKQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAg
ICBhdXRvIGxldHRlclNwYWNpbmcgPSBzdHlsZS5sZXR0ZXJTcGFjaW5nKCk7CisgICAgICAgICAg
ICBpZiAobGV0dGVyU3BhY2luZyA8PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgICAgICBBU1NFUlQobG9naWNhbFdpZHRoID4gbGV0dGVyU3BhY2luZyk7CisgICAgICAg
ICAgICByZXR1cm4gbGV0dGVyU3BhY2luZzsKKyAgICAgICAgfTsKKyAgICAgICAgbV9jb250aW51
b3VzQ29udGVudC5hcHBlbmQoaW5saW5lVGV4dEl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgsIGNv
bGxhcHNpYmxlV2lkdGgoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKIGlubGluZSB2b2lkIExpbmVDYW5kaWRhdGU6OklubGluZUNvbnRl
bnQ6OnJlc2V0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447962</attachid>
            <date>2021-12-25 13:03:44 -0800</date>
            <delta_ts>2021-12-25 20:16:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234676-20211225130343.patch</filename>
            <type>text/plain</type>
            <size>14702</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM2MzZhYjVmMmI3NGY2
NTE0ZGU0NTc0YWQ5ODBhZDYyZjZjODUwOC4uZmNmM2I0OWFiYTQxZTk2NDIwZTIwMTk4MGJmNWI3
ZjU2ZTc0ZWYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTEyLTI1ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIFR1cm4gSW5s
aW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50J3MgbGVhZGluZy90cmFpbGluZyBt
ZW1iZXIgdmFyaWFibGVzIHRvIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDY3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFdoaWxlIGFuIGVtcHR5
IChsb2dpY2FsIHdpZHRoID0gMCkgQ29udGludW91c0NvbnRlbnQgdGFrZXMgdXAgbm8gc3BhY2Us
IGl0IHNob3VsZCBub3QgYmUgbWlzdGFrZW4gZm9yIGNvbGxhcHNlZCBjb250ZW50CisgICAgICAg
IChpLmUgd2hlbiBtX2xvZ2ljYWxXaWR0aCgwKSA9PSBtX3RyYWlsaW5nQ29sbGFwc2libGVXaWR0
aCgwKSwgaGFzQ29sbGFwc2libGVDb250ZW50KCkgc2hvdWxkIHN0aWxsIHJldHVybiBmYWxzZSkK
KworICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRl
bnRCcmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJy
ZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbmdPdmVyZmxvd2luZ1J1
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2Vy
Ojp0cnlCcmVha2luZ1ByZXZpb3VzTm9uT3ZlcmZsb3dpbmdSdW5zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50
OjphcHBlbmRUb1J1bkxpc3QpOiBBZGQgYSBkZWRpY2F0ZWQgZnVuY3Rpb24gdG8gZGVhbCB3aXRo
IGFwcGVuZCBhbmQgbG9naWNhbFdpZHRoLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OnJlc2V0VHJhaWxpbmdXaGl0ZXNw
YWNlKTogVHVybiB0cmFpbGluZyB3aGl0ZXNwYWNlIGludG8gbGVhZGluZyBpZiBhcHBsaWNhYmxl
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGlu
dW91c0NvbnRlbnQ6OmFwcGVuZCk6IEFkZCBkZWRpY2F0ZWQgZnVuY3Rpb25zIGZvciBlYWNoIGlu
bGluZSBpdGVtIHR5cGVzLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6bGVhZGluZ0NvbGxhcHNpYmxl
V2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJl
YWtlcjo6Q29udGludW91c0NvbnRlbnQ6OnRyYWlsaW5nQ29sbGFwc2libGVXaWR0aCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51
b3VzQ29udGVudDo6aGFzQ29sbGFwc2libGVDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50Ojppc0Z1
bGx5Q29sbGFwc2libGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6YXBwZW5kSW5saW5lSXRlbSk6CisKIDIw
MjEtMTItMjUgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNd
W0lGQ10gUmVtb3ZlIHJlZHVuZGFudCBJbmxpbmVDb250ZW50QnJlYWtlcjo6c2hvdWxkS2VlcEVu
ZE9mTGluZVdoaXRlc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVh
a2VyLmNwcAppbmRleCBmNDA3ZWI0ZWM1NzUzODIxYTY5ZjJiMmY0MmQ5NWIyNjlmZDEwNzAwLi4w
YThkOWEwMzQ1Nzg4ZTVlZGNhZWU4Zjk2YjJhZDdkODRmZmJlNGRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50
QnJlYWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCkBAIC0xNjMsOSArMTYzLDkgQEAgSW5s
aW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6cHJvY2Vzc092
ZXJmbG93aW5nQ29udGVudChjb24KICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIG5ldyBjb250
ZW50IGlzIGZ1bGx5IGNvbGxhcHNpYmxlLCBpdCBzaG91bGQgc3VyZWx5IGZpdC4KICAgICAgICAg
ICAgICAgICByZXR1cm4gSW5saW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdCB7IFJlc3VsdDo6QWN0
aW9uOjpLZWVwIH07CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGF1dG8g
c3BhY2VSZXF1aXJlZCA9IGNvbnRpbnVvdXNDb250ZW50LmxvZ2ljYWxXaWR0aCgpIC0gY29udGlu
dW91c0NvbnRlbnQudHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoKCk7CisgICAgICAgICAgICAgICAg
YXV0byBzcGFjZVJlcXVpcmVkID0gY29udGludW91c0NvbnRlbnQubG9naWNhbFdpZHRoKCkgLSBj
b250aW51b3VzQ29udGVudC50cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGgoKS52YWx1ZV9vcigwLmYp
OwogICAgICAgICAgICAgICAgIGlmIChsaW5lU3RhdHVzLmhhc0Z1bGx5Q29sbGFwc2libGVUcmFp
bGluZ0NvbnRlbnQgfHwgaXNWaXN1YWxseUVtcHR5V2hpdGVzcGFjZUNvbnRlbnQoY29udGludW91
c0NvbnRlbnQpKQotICAgICAgICAgICAgICAgICAgICBzcGFjZVJlcXVpcmVkIC09IGNvbnRpbnVv
dXNDb250ZW50LmxlYWRpbmdDb2xsYXBzaWJsZVdpZHRoKCk7CisgICAgICAgICAgICAgICAgICAg
IHNwYWNlUmVxdWlyZWQgLT0gY29udGludW91c0NvbnRlbnQubGVhZGluZ0NvbGxhcHNpYmxlV2lk
dGgoKS52YWx1ZV9vcigwLmYpOwogICAgICAgICAgICAgICAgIGlmIChzcGFjZVJlcXVpcmVkIDw9
IGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJ
bmxpbmVDb250ZW50QnJlYWtlcjo6UmVzdWx0IHsgUmVzdWx0OjpBY3Rpb246OktlZXAgfTsKICAg
ICAgICAgICAgIH0KQEAgLTUxMyw4ICs1MTMsOCBAQCBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRl
bnRCcmVha2VyOjpPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uPiBJbgog
ICAgIGlmICghaXNXcmFwcGFibGVSdW4ob3ZlcmZsb3dpbmdSdW4pKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgYXV0byBhdmlsYWJsZVdpZHRoID0gc3RkOjptYXgoMC4wZiwgbGluZVN0YXR1
cy5hdmFpbGFibGVXaWR0aCAtIG5vbk92ZXJmbG93aW5nQ29udGVudFdpZHRoKTsKLSAgICBhdXRv
IHBhcnRpYWxPdmVyZmxvd2luZ1J1biA9IHRyeUJyZWFraW5nVGV4dFJ1bihydW5zLCB7IG92ZXJm
bG93aW5nUnVuSW5kZXgsIHRydWUsIGxpbmVTdGF0dXMuY29udGVudExvZ2ljYWxSaWdodCArIG5v
bk92ZXJmbG93aW5nQ29udGVudFdpZHRoIH0sIGF2aWxhYmxlV2lkdGgsIGxpbmVTdGF0dXMuaGFz
V3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uKTsKKyAgICBhdXRvIGF2YWlsYWJsZVdp
ZHRoID0gc3RkOjptYXgoMC5mLCBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoIC0gbm9uT3ZlcmZs
b3dpbmdDb250ZW50V2lkdGgpOworICAgIGF1dG8gcGFydGlhbE92ZXJmbG93aW5nUnVuID0gdHJ5
QnJlYWtpbmdUZXh0UnVuKHJ1bnMsIHsgb3ZlcmZsb3dpbmdSdW5JbmRleCwgdHJ1ZSwgbGluZVN0
YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0ICsgbm9uT3ZlcmZsb3dpbmdDb250ZW50V2lkdGggfSwg
YXZhaWxhYmxlV2lkdGgsIGxpbmVTdGF0dXMuaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bv
c2l0aW9uKTsKICAgICBpZiAoIXBhcnRpYWxPdmVyZmxvd2luZ1J1bikKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICBpZiAocGFydGlhbE92ZXJmbG93aW5nUnVuLT5sZW5ndGgpCkBAIC01MzYsOCAr
NTM2LDggQEAgc3RkOjpvcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6T3ZlcmZsb3dpbmdU
ZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4gSW4KICAgICAgICAgaWYgKCFpc1dyYXBwYWJs
ZVJ1bihydW4pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEFTU0VSVChydW4uaW5s
aW5lSXRlbS5pc1RleHQoKSk7Ci0gICAgICAgIGF1dG8gYXZpbGFibGVXaWR0aCA9IHN0ZDo6bWF4
KDAuMGYsIGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGggLSBwcmV2aW91c0NvbnRlbnRXaWR0aCk7
Ci0gICAgICAgIGlmIChhdXRvIHBhcnRpYWxSdW4gPSB0cnlCcmVha2luZ1RleHRSdW4ocnVucywg
eyBpbmRleCwgZmFsc2UsIGxpbmVTdGF0dXMuY29udGVudExvZ2ljYWxSaWdodCArIHByZXZpb3Vz
Q29udGVudFdpZHRoIH0sIGF2aWxhYmxlV2lkdGgsIGxpbmVTdGF0dXMuaGFzV3JhcE9wcG9ydHVu
aXR5QXRQcmV2aW91c1Bvc2l0aW9uKSkgeworICAgICAgICBhdXRvIGF2YWlsYWJsZVdpZHRoID0g
c3RkOjptYXgoMC5mLCBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoIC0gcHJldmlvdXNDb250ZW50
V2lkdGgpOworICAgICAgICBpZiAoYXV0byBwYXJ0aWFsUnVuID0gdHJ5QnJlYWtpbmdUZXh0UnVu
KHJ1bnMsIHsgaW5kZXgsIGZhbHNlLCBsaW5lU3RhdHVzLmNvbnRlbnRMb2dpY2FsUmlnaHQgKyBw
cmV2aW91c0NvbnRlbnRXaWR0aCB9LCBhdmFpbGFibGVXaWR0aCwgbGluZVN0YXR1cy5oYXNXcmFw
T3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pKSB7CiAgICAgICAgICAgICAvLyBXZSBrbm93
IHRoaXMgcnVuIGZpdHMsIHNvIGlmIGJyZWFraW5nIGlzIGFsbG93ZWQgb24gdGhlIHJ1biwgaXQg
c2hvdWxkIHJldHVybiBhIG5vbi1lbXB0eSBsZWZ0LXNpZGUKICAgICAgICAgICAgIC8vIHNpbmNl
IGl0J3MgZWl0aGVyIGF0IGh5cGhlbiBwb3NpdGlvbiBvciB0aGUgZW50aXJlIHJ1biBpcyByZXR1
cm5lZC4KICAgICAgICAgICAgIEFTU0VSVChwYXJ0aWFsUnVuLT5sZW5ndGgpOwpAQCAtNjc5LDI2
ICs2NzksNDcgQEAgT3B0aW9uU2V0PElubGluZUNvbnRlbnRCcmVha2VyOjpXb3JkQnJlYWtSdWxl
PiBJbmxpbmVDb250ZW50QnJlYWtlcjo6d29yZEJyZWFrQmUKICAgICByZXR1cm4gaW5jbHVkZUh5
cGhlbmF0aW9uSWZBbGxvd2VkKHsgfSk7CiB9CiAKLXZvaWQgSW5saW5lQ29udGVudEJyZWFrZXI6
OkNvbnRpbnVvdXNDb250ZW50OjphcHBlbmQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwg
c3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBjb2xsYXBzaWJsZVdpZHRoKQordm9pZCBJ
bmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OmFwcGVuZFRvUnVuTGlzdChj
b25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKQogewotICAgIEFTU0VSVChpbmxpbmVJdGVtLmlz
VGV4dCgpIHx8IGlubGluZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3Rh
cnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpOwotICAgIGF1dG8gaXNMZWFkaW5n
Q29sbGFwc2libGUgPSBjb2xsYXBzaWJsZVdpZHRoICYmIChtX3J1bnMuaXNFbXB0eSgpIHx8IGlz
RnVsbHlDb2xsYXBzaWJsZSgpKTsKICAgICBtX3J1bnMuYXBwZW5kKHsgaW5saW5lSXRlbSwgc3R5
bGUsIGxvZ2ljYWxXaWR0aCB9KTsKICAgICBtX2xvZ2ljYWxXaWR0aCA9IGNsYW1wVG88SW5saW5l
TGF5b3V0VW5pdD4obV9sb2dpY2FsV2lkdGggKyBsb2dpY2FsV2lkdGgpOworfQorCit2b2lkIElu
bGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6cmVzZXRUcmFpbGluZ1doaXRl
c3BhY2UoKQoreworICAgIGlmICghbV9sZWFkaW5nQ29sbGFwc2libGVXaWR0aCkKKyAgICAgICAg
bV9sZWFkaW5nQ29sbGFwc2libGVXaWR0aCA9IG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoOwor
ICAgIG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoID0geyB9OworfQorCit2b2lkIElubGluZUNv
bnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6YXBwZW5kKGNvbnN0IElubGluZUl0ZW0m
IGlubGluZUl0ZW0sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsV2lkdGgpCit7CisgICAgQVNTRVJUKGlubGluZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJ
dGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpOwor
ICAgIGFwcGVuZFRvUnVuTGlzdChpbmxpbmVJdGVtLCBzdHlsZSwgbG9naWNhbFdpZHRoKTsKKyAg
ICBpZiAoaW5saW5lSXRlbS5pc0JveCgpKSB7CisgICAgICAgIC8vIElubGluZSBib3hlcyAod2hp
dGVzcGFjZS0+IDxzcGFuPjwvc3Bhbj4pIGRvIG5vdCBwcmV2ZW50IHRoZSB0cmFpbGluZyBjb250
ZW50IGZyb20gZ2V0dGluZyBjb2xsYXBzZWQvaHVuZworICAgICAgICAvLyBidXQgYXRvbWljIGlu
bGluZSBsZXZlbCBib3hlcyBkby4KKyAgICAgICAgcmVzZXRUcmFpbGluZ1doaXRlc3BhY2UoKTsK
KyAgICB9Cit9CisKK3ZvaWQgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50
OjphcHBlbmQoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZVRleHRJdGVtLCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoLCBzdGQ6Om9wdGlv
bmFsPElubGluZUxheW91dFVuaXQ+IGNvbGxhcHNpYmxlV2lkdGgpCit7CiAgICAgaWYgKCFjb2xs
YXBzaWJsZVdpZHRoKSB7Ci0gICAgICAgIGlmIChpbmxpbmVJdGVtLmlzVGV4dCgpIHx8IGlubGlu
ZUl0ZW0uaXNCb3goKSkgewotICAgICAgICAgICAgLy8gSW5saW5lIGJveGVzIGRvIG5vdCBwcmV2
ZW50IHRoZSB0cmFpbGluZyBjb250ZW50IGZyb20gZ2V0dGluZyBjb2xsYXBzZWQuCi0gICAgICAg
ICAgICBtX3RyYWlsaW5nQ29sbGFwc2libGVXaWR0aCA9IHsgfTsKLSAgICAgICAgfQorICAgICAg
ICBhcHBlbmRUb1J1bkxpc3QoaW5saW5lVGV4dEl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgpOwor
ICAgICAgICByZXNldFRyYWlsaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQorCiAgICAgQVNTRVJUKCpjb2xsYXBzaWJsZVdpZHRoIDw9IGxvZ2ljYWxXaWR0aCk7CisgICAg
YXV0byBpc0xlYWRpbmdDb2xsYXBzaWJsZSA9IGNvbGxhcHNpYmxlV2lkdGggJiYgKG1fcnVucy5p
c0VtcHR5KCkgfHwgaXNGdWxseUNvbGxhcHNpYmxlKCkpOworICAgIGFwcGVuZFRvUnVuTGlzdChp
bmxpbmVUZXh0SXRlbSwgc3R5bGUsIGxvZ2ljYWxXaWR0aCk7CiAgICAgaWYgKGlzTGVhZGluZ0Nv
bGxhcHNpYmxlKSB7CiAgICAgICAgIEFTU0VSVCghbV90cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGgp
OwotICAgICAgICBtX2xlYWRpbmdDb2xsYXBzaWJsZVdpZHRoICs9ICpjb2xsYXBzaWJsZVdpZHRo
OworICAgICAgICBtX2xlYWRpbmdDb2xsYXBzaWJsZVdpZHRoID0gbV9sZWFkaW5nQ29sbGFwc2li
bGVXaWR0aC52YWx1ZV9vcigwLmYpICsgKmNvbGxhcHNpYmxlV2lkdGg7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgbV90cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGggPSAqY29sbGFwc2libGVX
aWR0aCA9PSBsb2dpY2FsV2lkdGggPyBtX3RyYWlsaW5nQ29sbGFwc2libGVXaWR0aCArIGxvZ2lj
YWxXaWR0aCA6ICpjb2xsYXBzaWJsZVdpZHRoOworICAgIG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdp
ZHRoID0gKmNvbGxhcHNpYmxlV2lkdGggPT0gbG9naWNhbFdpZHRoID8gbV90cmFpbGluZ0NvbGxh
cHNpYmxlV2lkdGgudmFsdWVfb3IoMC5mKSArIGxvZ2ljYWxXaWR0aCA6ICpjb2xsYXBzaWJsZVdp
ZHRoOwogfQogCiB2b2lkIElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6
cmVzZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmgKaW5kZXgg
YzczYzU2NmE5NjUwMzg2NGRhNmIxOTYzZTdiMGEzY2M1NDI3OTc5My4uZGZlNTViNjFkM2Q0OWU3
NGE1MGY3ODg2YWFlNmZhNjc1ZTg4ZTg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVD
b250ZW50QnJlYWtlci5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5h
bWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBJbmxpbmVJdGVtOworY2xhc3MgSW5saW5lVGV4dEl0
ZW07CiBzdHJ1Y3QgQ2FuZGlkYXRlVGV4dFJ1bkZvckJyZWFraW5nOwogCiBjbGFzcyBJbmxpbmVD
b250ZW50QnJlYWtlciB7CkBAIC04MCwxMiArODEsMTMgQEAgcHVibGljOgogICAgIC8vIHNlZSBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQtMy8jbGluZS1icmVhay1kZXRhaWxzCiAg
ICAgc3RydWN0IENvbnRpbnVvdXNDb250ZW50IHsKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxXaWR0aDsgfQotICAgICAgICBJ
bmxpbmVMYXlvdXRVbml0IGxlYWRpbmdDb2xsYXBzaWJsZVdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV9sZWFkaW5nQ29sbGFwc2libGVXaWR0aDsgfQotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IHRy
YWlsaW5nQ29sbGFwc2libGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhaWxpbmdDb2xsYXBz
aWJsZVdpZHRoOyB9Ci0gICAgICAgIGJvb2wgaGFzQ29sbGFwc2libGVDb250ZW50KCkgY29uc3Qg
eyByZXR1cm4gdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoKCkgPiAwIHx8IGxlYWRpbmdDb2xsYXBz
aWJsZVdpZHRoKCkgPiAwOyB9Ci0gICAgICAgIGJvb2wgaXNGdWxseUNvbGxhcHNpYmxlKCkgY29u
c3QgeyByZXR1cm4gbG9naWNhbFdpZHRoKCkgPT0gdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoKCkg
KyBsZWFkaW5nQ29sbGFwc2libGVXaWR0aCgpOyB9CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SW5s
aW5lTGF5b3V0VW5pdD4gbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X2xlYWRpbmdDb2xsYXBzaWJsZVdpZHRoOyB9CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SW5saW5l
TGF5b3V0VW5pdD4gdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV90
cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGg7IH0KKyAgICAgICAgYm9vbCBoYXNDb2xsYXBzaWJsZUNv
bnRlbnQoKSBjb25zdCB7IHJldHVybiB0cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGgoKSB8fCBsZWFk
aW5nQ29sbGFwc2libGVXaWR0aCgpOyB9CisgICAgICAgIGJvb2wgaXNGdWxseUNvbGxhcHNpYmxl
KCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBhcHBlbmQoY29uc3QgSW5saW5lSXRlbSYsIGNvbnN0
IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIHN0ZDo6b3B0aW9u
YWw8SW5saW5lTGF5b3V0VW5pdD4gY29sbGFwc2libGVXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7Cisg
ICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYs
IElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKKyAgICAgICAgdm9pZCBhcHBlbmQoY29u
c3QgSW5saW5lVGV4dEl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQg
bG9naWNhbFdpZHRoLCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGNvbGxhcHNpYmxl
V2lkdGgpOwogICAgICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICAgICAgc3RydWN0IFJ1biB7CkBA
IC0xMDEsMTAgKzEwMywxMyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFJ1bkxpc3QmIHJ1bnMo
KSBjb25zdCB7IHJldHVybiBtX3J1bnM7IH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQg
YXBwZW5kVG9SdW5MaXN0KGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYsIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKKyAgICAgICAgdm9pZCByZXNldFRyYWlsaW5n
V2hpdGVzcGFjZSgpOworCiAgICAgICAgIFJ1bkxpc3QgbV9ydW5zOwogICAgICAgICBJbmxpbmVM
YXlvdXRVbml0IG1fbG9naWNhbFdpZHRoIHsgMCB9OwotICAgICAgICBJbmxpbmVMYXlvdXRVbml0
IG1fbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGggeyAwIH07Ci0gICAgICAgIElubGluZUxheW91dFVu
aXQgbV90cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGggeyAwIH07CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8SW5saW5lTGF5b3V0VW5pdD4gbV9sZWFkaW5nQ29sbGFwc2libGVXaWR0aCB7IH07CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbV90cmFpbGluZ0NvbGxhcHNpYmxl
V2lkdGggeyB9OwogICAgIH07CiAKICAgICBzdHJ1Y3QgTGluZVN0YXR1cyB7CkBAIC0xNzEsNiAr
MTc2LDE2IEBAIGlubGluZSBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6
OlJ1bjo6UnVuKGNvbnN0IFJ1biYgb3RoZXIpCiB7CiB9CiAKK2lubGluZSBib29sIElubGluZUNv
bnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6aXNGdWxseUNvbGxhcHNpYmxlKCkgY29u
c3QKK3sKKyAgICBhdXRvIGNvbGxhcHNpYmxlV2lkdGggPSBzdGQ6Om9wdGlvbmFsPElubGluZUxh
eW91dFVuaXQ+IHsgfTsKKyAgICBpZiAobV9sZWFkaW5nQ29sbGFwc2libGVXaWR0aCkKKyAgICAg
ICAgY29sbGFwc2libGVXaWR0aCA9ICptX2xlYWRpbmdDb2xsYXBzaWJsZVdpZHRoOworICAgIGlm
IChtX3RyYWlsaW5nQ29sbGFwc2libGVXaWR0aCkKKyAgICAgICAgY29sbGFwc2libGVXaWR0aCA9
IGNvbGxhcHNpYmxlV2lkdGgudmFsdWVfb3IoMC5mKSArICptX3RyYWlsaW5nQ29sbGFwc2libGVX
aWR0aDsKKyAgICByZXR1cm4gY29sbGFwc2libGVXaWR0aCAmJiAqY29sbGFwc2libGVXaWR0aCA9
PSBsb2dpY2FsV2lkdGgoKTsKK30KKwogfQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggNjJhY2Q2MDgwMzM5MTY5NmQ3NGEyZjNhMTYxOTc4
OWE2NmJiZjhjMi4uYjRhMDEwOTY5MDc4ZjExMzA0YWYyYWQxNjFlZDFjZDU2MTBkMmIzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtMTkzLDI1ICsxOTMs
MzMgQEAgTGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6SW5saW5lQ29udGVudChib29sIGln
bm9yZVRyYWlsaW5nTGV0dGVyU3BhY2luZykKIGlubGluZSB2b2lkIExpbmVDYW5kaWRhdGU6Oklu
bGluZUNvbnRlbnQ6OmFwcGVuZElubGluZUl0ZW0oY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRl
bSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0
aCkKIHsKICAgICBBU1NFUlQoaW5saW5lSXRlbS5pc1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzQm94
KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lubGlu
ZUJveEVuZCgpKTsKLSAgICBhdXRvIGNvbGxhcHNpYmxlV2lkdGggPSBbJl0oKSAtPiBzdGQ6Om9w
dGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsKLSAgICAgICAgaWYgKCFpbmxpbmVJdGVtLmlzVGV4
dCgpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgYXV0byYgaW5saW5lVGV4dEl0
ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4oaW5saW5lSXRlbSk7Ci0gICAgICAgIGlmIChp
bmxpbmVUZXh0SXRlbS5pc1doaXRlc3BhY2UoKSAmJiAhSW5saW5lVGV4dEl0ZW06OnNob3VsZFBy
ZXNlcnZlU3BhY2VzQW5kVGFicyhpbmxpbmVUZXh0SXRlbSkpIHsKLSAgICAgICAgICAgIC8vIEZ1
bGx5IGNvbGxhcHNpYmxlIHRyYWlsaW5nIGNvbnRlbnQuCi0gICAgICAgICAgICByZXR1cm4gbG9n
aWNhbFdpZHRoOwotICAgICAgICB9Ci0gICAgICAgIC8vIENoZWNrIGZvciBwYXJ0aWFsbHkgY29s
bGFwc2libGUgY29udGVudC4KLSAgICAgICAgaWYgKG1faWdub3JlVHJhaWxpbmdMZXR0ZXJTcGFj
aW5nKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgYXV0byBsZXR0ZXJTcGFjaW5n
ID0gc3R5bGUubGV0dGVyU3BhY2luZygpOwotICAgICAgICBpZiAobGV0dGVyU3BhY2luZyA8PSAw
KQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgQVNTRVJUKGxvZ2ljYWxXaWR0aCA+
IGxldHRlclNwYWNpbmcpOwotICAgICAgICByZXR1cm4gbGV0dGVyU3BhY2luZzsKLSAgICB9Owot
ICAgIG1fY29udGludW91c0NvbnRlbnQuYXBwZW5kKGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2Fs
V2lkdGgsIGNvbGxhcHNpYmxlV2lkdGgoKSk7CiAgICAgbV9oYXNJbmxpbmVMZXZlbEJveCA9IG1f
aGFzSW5saW5lTGV2ZWxCb3ggfHwgaW5saW5lSXRlbS5pc0JveCgpIHx8IGlubGluZUl0ZW0uaXNJ
bmxpbmVCb3hTdGFydCgpOworCisgICAgaWYgKGlubGluZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJ
dGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpCisg
ICAgICAgIHJldHVybiBtX2NvbnRpbnVvdXNDb250ZW50LmFwcGVuZChpbmxpbmVJdGVtLCBzdHls
ZSwgbG9naWNhbFdpZHRoKTsKKworICAgIGlmIChpbmxpbmVJdGVtLmlzVGV4dCgpKSB7CisgICAg
ICAgIGF1dG8mIGlubGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KGlubGlu
ZUl0ZW0pOworICAgICAgICBhdXRvIGlzV2hpdGVzcGFjZSA9IGlubGluZVRleHRJdGVtLmlzV2hp
dGVzcGFjZSgpOworCisgICAgICAgIGF1dG8gY29sbGFwc2libGVXaWR0aCA9IFsmXSgpIC0+IHN0
ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geworICAgICAgICAgICAgaWYgKGlzV2hpdGVz
cGFjZSAmJiAhSW5saW5lVGV4dEl0ZW06OnNob3VsZFByZXNlcnZlU3BhY2VzQW5kVGFicyhpbmxp
bmVUZXh0SXRlbSkpIHsKKyAgICAgICAgICAgICAgICAvLyBGdWxseSBjb2xsYXBzaWJsZSB0cmFp
bGluZyBjb250ZW50LgorICAgICAgICAgICAgICAgIHJldHVybiBsb2dpY2FsV2lkdGg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAvLyBDaGVjayBmb3IgcGFydGlhbGx5IGNvbGxhcHNpYmxl
IGNvbnRlbnQuCisgICAgICAgICAgICBpZiAobV9pZ25vcmVUcmFpbGluZ0xldHRlclNwYWNpbmcp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIGF1dG8gbGV0dGVyU3Bh
Y2luZyA9IHN0eWxlLmxldHRlclNwYWNpbmcoKTsKKyAgICAgICAgICAgIGlmIChsZXR0ZXJTcGFj
aW5nIDw9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIEFTU0VS
VChsb2dpY2FsV2lkdGggPiBsZXR0ZXJTcGFjaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBsZXR0
ZXJTcGFjaW5nOworICAgICAgICB9OworICAgICAgICBtX2NvbnRpbnVvdXNDb250ZW50LmFwcGVu
ZChpbmxpbmVUZXh0SXRlbSwgc3R5bGUsIGxvZ2ljYWxXaWR0aCwgY29sbGFwc2libGVXaWR0aCgp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAogaW5saW5lIHZvaWQgTGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6cmVzZXQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447967</attachid>
            <date>2021-12-25 20:16:45 -0800</date>
            <delta_ts>2021-12-25 22:17:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234676-20211225201644.patch</filename>
            <type>text/plain</type>
            <size>14707</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Mzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY2N2JmNzg2ZmNiNjMw
MTM0NzM1ZGI1N2FjMjEzZGEyMjQxYWI0ZC4uMzlhNTJjYzlhYjAxMTg4MjVlM2QxYWQxMzhhMzVm
ZWQwOTU1OTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTEyLTI0ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIFR1cm4gSW5s
aW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50J3MgbGVhZGluZy90cmFpbGluZyBt
ZW1iZXIgdmFyaWFibGVzIHRvIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDY3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFdoaWxlIGFuIGVtcHR5
IChsb2dpY2FsIHdpZHRoID0gMCkgQ29udGludW91c0NvbnRlbnQgdGFrZXMgdXAgbm8gc3BhY2Us
IGl0IHNob3VsZCBub3QgYmUgbWlzdGFrZW4gZm9yIGNvbGxhcHNlZCBjb250ZW50CisgICAgICAg
IChpLmUgd2hlbiBtX2xvZ2ljYWxXaWR0aCgwKSA9PSBtX3RyYWlsaW5nQ29sbGFwc2libGVXaWR0
aCgwKSwgaGFzQ29sbGFwc2libGVDb250ZW50KCkgc2hvdWxkIHN0aWxsIHJldHVybiBmYWxzZSkK
KworICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRl
bnRCcmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJy
ZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbmdPdmVyZmxvd2luZ1J1
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2Vy
Ojp0cnlCcmVha2luZ1ByZXZpb3VzTm9uT3ZlcmZsb3dpbmdSdW5zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50
OjphcHBlbmRUb1J1bkxpc3QpOiBBZGQgYSBkZWRpY2F0ZWQgZnVuY3Rpb24gdG8gZGVhbCB3aXRo
IGFwcGVuZCBhbmQgbG9naWNhbFdpZHRoLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OnJlc2V0VHJhaWxpbmdXaGl0ZXNw
YWNlKTogVHVybiB0cmFpbGluZyB3aGl0ZXNwYWNlIGludG8gbGVhZGluZyBpZiBhcHBsaWNhYmxl
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGlu
dW91c0NvbnRlbnQ6OmFwcGVuZCk6IEFkZCBkZWRpY2F0ZWQgZnVuY3Rpb25zIGZvciBlYWNoIGlu
bGluZSBpdGVtIHR5cGVzLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6bGVhZGluZ0NvbGxhcHNpYmxl
V2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJl
YWtlcjo6Q29udGludW91c0NvbnRlbnQ6OnRyYWlsaW5nQ29sbGFwc2libGVXaWR0aCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51
b3VzQ29udGVudDo6aGFzQ29sbGFwc2libGVDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50Ojppc0Z1
bGx5Q29sbGFwc2libGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6YXBwZW5kSW5saW5lSXRlbSk6CisKIDIw
MjEtMTItMjQgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNd
W0lGQ10gUmVtb3ZlIHJlZHVuZGFudCBJbmxpbmVDb250ZW50QnJlYWtlcjo6c2hvdWxkS2VlcEVu
ZE9mTGluZVdoaXRlc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVh
a2VyLmNwcAppbmRleCBmNDA3ZWI0ZWM1NzUzODIxYTY5ZjJiMmY0MmQ5NWIyNjlmZDEwNzAwLi42
M2YxNDRhOWE0NGM5NDBhMmYzNmU1NmE2NTllOTZlNDUwMTlmNDZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50
QnJlYWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCkBAIC0xNjMsOSArMTYzLDkgQEAgSW5s
aW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6cHJvY2Vzc092
ZXJmbG93aW5nQ29udGVudChjb24KICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIG5ldyBjb250
ZW50IGlzIGZ1bGx5IGNvbGxhcHNpYmxlLCBpdCBzaG91bGQgc3VyZWx5IGZpdC4KICAgICAgICAg
ICAgICAgICByZXR1cm4gSW5saW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdCB7IFJlc3VsdDo6QWN0
aW9uOjpLZWVwIH07CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGF1dG8g
c3BhY2VSZXF1aXJlZCA9IGNvbnRpbnVvdXNDb250ZW50LmxvZ2ljYWxXaWR0aCgpIC0gY29udGlu
dW91c0NvbnRlbnQudHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoKCk7CisgICAgICAgICAgICAgICAg
YXV0byBzcGFjZVJlcXVpcmVkID0gY29udGludW91c0NvbnRlbnQubG9naWNhbFdpZHRoKCkgLSBj
b250aW51b3VzQ29udGVudC50cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGgoKS52YWx1ZV9vcigwLmYp
OwogICAgICAgICAgICAgICAgIGlmIChsaW5lU3RhdHVzLmhhc0Z1bGx5Q29sbGFwc2libGVUcmFp
bGluZ0NvbnRlbnQgfHwgaXNWaXN1YWxseUVtcHR5V2hpdGVzcGFjZUNvbnRlbnQoY29udGludW91
c0NvbnRlbnQpKQotICAgICAgICAgICAgICAgICAgICBzcGFjZVJlcXVpcmVkIC09IGNvbnRpbnVv
dXNDb250ZW50LmxlYWRpbmdDb2xsYXBzaWJsZVdpZHRoKCk7CisgICAgICAgICAgICAgICAgICAg
IHNwYWNlUmVxdWlyZWQgLT0gY29udGludW91c0NvbnRlbnQubGVhZGluZ0NvbGxhcHNpYmxlV2lk
dGgoKS52YWx1ZV9vcigwLmYpOwogICAgICAgICAgICAgICAgIGlmIChzcGFjZVJlcXVpcmVkIDw9
IGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJ
bmxpbmVDb250ZW50QnJlYWtlcjo6UmVzdWx0IHsgUmVzdWx0OjpBY3Rpb246OktlZXAgfTsKICAg
ICAgICAgICAgIH0KQEAgLTUxMyw4ICs1MTMsOCBAQCBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRl
bnRCcmVha2VyOjpPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uPiBJbgog
ICAgIGlmICghaXNXcmFwcGFibGVSdW4ob3ZlcmZsb3dpbmdSdW4pKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgYXV0byBhdmlsYWJsZVdpZHRoID0gc3RkOjptYXgoMC4wZiwgbGluZVN0YXR1
cy5hdmFpbGFibGVXaWR0aCAtIG5vbk92ZXJmbG93aW5nQ29udGVudFdpZHRoKTsKLSAgICBhdXRv
IHBhcnRpYWxPdmVyZmxvd2luZ1J1biA9IHRyeUJyZWFraW5nVGV4dFJ1bihydW5zLCB7IG92ZXJm
bG93aW5nUnVuSW5kZXgsIHRydWUsIGxpbmVTdGF0dXMuY29udGVudExvZ2ljYWxSaWdodCArIG5v
bk92ZXJmbG93aW5nQ29udGVudFdpZHRoIH0sIGF2aWxhYmxlV2lkdGgsIGxpbmVTdGF0dXMuaGFz
V3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uKTsKKyAgICBhdXRvIGF2YWlsYWJsZVdp
ZHRoID0gc3RkOjptYXgoMC5mLCBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoIC0gbm9uT3ZlcmZs
b3dpbmdDb250ZW50V2lkdGgpOworICAgIGF1dG8gcGFydGlhbE92ZXJmbG93aW5nUnVuID0gdHJ5
QnJlYWtpbmdUZXh0UnVuKHJ1bnMsIHsgb3ZlcmZsb3dpbmdSdW5JbmRleCwgdHJ1ZSwgbGluZVN0
YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0ICsgbm9uT3ZlcmZsb3dpbmdDb250ZW50V2lkdGggfSwg
YXZhaWxhYmxlV2lkdGgsIGxpbmVTdGF0dXMuaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bv
c2l0aW9uKTsKICAgICBpZiAoIXBhcnRpYWxPdmVyZmxvd2luZ1J1bikKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICBpZiAocGFydGlhbE92ZXJmbG93aW5nUnVuLT5sZW5ndGgpCkBAIC01MzYsOCAr
NTM2LDggQEAgc3RkOjpvcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6T3ZlcmZsb3dpbmdU
ZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4gSW4KICAgICAgICAgaWYgKCFpc1dyYXBwYWJs
ZVJ1bihydW4pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEFTU0VSVChydW4uaW5s
aW5lSXRlbS5pc1RleHQoKSk7Ci0gICAgICAgIGF1dG8gYXZpbGFibGVXaWR0aCA9IHN0ZDo6bWF4
KDAuMGYsIGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGggLSBwcmV2aW91c0NvbnRlbnRXaWR0aCk7
Ci0gICAgICAgIGlmIChhdXRvIHBhcnRpYWxSdW4gPSB0cnlCcmVha2luZ1RleHRSdW4ocnVucywg
eyBpbmRleCwgZmFsc2UsIGxpbmVTdGF0dXMuY29udGVudExvZ2ljYWxSaWdodCArIHByZXZpb3Vz
Q29udGVudFdpZHRoIH0sIGF2aWxhYmxlV2lkdGgsIGxpbmVTdGF0dXMuaGFzV3JhcE9wcG9ydHVu
aXR5QXRQcmV2aW91c1Bvc2l0aW9uKSkgeworICAgICAgICBhdXRvIGF2YWlsYWJsZVdpZHRoID0g
c3RkOjptYXgoMC5mLCBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoIC0gcHJldmlvdXNDb250ZW50
V2lkdGgpOworICAgICAgICBpZiAoYXV0byBwYXJ0aWFsUnVuID0gdHJ5QnJlYWtpbmdUZXh0UnVu
KHJ1bnMsIHsgaW5kZXgsIGZhbHNlLCBsaW5lU3RhdHVzLmNvbnRlbnRMb2dpY2FsUmlnaHQgKyBw
cmV2aW91c0NvbnRlbnRXaWR0aCB9LCBhdmFpbGFibGVXaWR0aCwgbGluZVN0YXR1cy5oYXNXcmFw
T3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pKSB7CiAgICAgICAgICAgICAvLyBXZSBrbm93
IHRoaXMgcnVuIGZpdHMsIHNvIGlmIGJyZWFraW5nIGlzIGFsbG93ZWQgb24gdGhlIHJ1biwgaXQg
c2hvdWxkIHJldHVybiBhIG5vbi1lbXB0eSBsZWZ0LXNpZGUKICAgICAgICAgICAgIC8vIHNpbmNl
IGl0J3MgZWl0aGVyIGF0IGh5cGhlbiBwb3NpdGlvbiBvciB0aGUgZW50aXJlIHJ1biBpcyByZXR1
cm5lZC4KICAgICAgICAgICAgIEFTU0VSVChwYXJ0aWFsUnVuLT5sZW5ndGgpOwpAQCAtNjc5LDI2
ICs2NzksNDcgQEAgT3B0aW9uU2V0PElubGluZUNvbnRlbnRCcmVha2VyOjpXb3JkQnJlYWtSdWxl
PiBJbmxpbmVDb250ZW50QnJlYWtlcjo6d29yZEJyZWFrQmUKICAgICByZXR1cm4gaW5jbHVkZUh5
cGhlbmF0aW9uSWZBbGxvd2VkKHsgfSk7CiB9CiAKLXZvaWQgSW5saW5lQ29udGVudEJyZWFrZXI6
OkNvbnRpbnVvdXNDb250ZW50OjphcHBlbmQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwg
c3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBjb2xsYXBzaWJsZVdpZHRoKQordm9pZCBJ
bmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OmFwcGVuZFRvUnVuTGlzdChj
b25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKQogewotICAgIEFTU0VSVChpbmxpbmVJdGVtLmlz
VGV4dCgpIHx8IGlubGluZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3Rh
cnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpOwotICAgIGF1dG8gaXNMZWFkaW5n
Q29sbGFwc2libGUgPSBjb2xsYXBzaWJsZVdpZHRoICYmIChtX3J1bnMuaXNFbXB0eSgpIHx8IGlz
RnVsbHlDb2xsYXBzaWJsZSgpKTsKICAgICBtX3J1bnMuYXBwZW5kKHsgaW5saW5lSXRlbSwgc3R5
bGUsIGxvZ2ljYWxXaWR0aCB9KTsKICAgICBtX2xvZ2ljYWxXaWR0aCA9IGNsYW1wVG88SW5saW5l
TGF5b3V0VW5pdD4obV9sb2dpY2FsV2lkdGggKyBsb2dpY2FsV2lkdGgpOworfQorCit2b2lkIElu
bGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6cmVzZXRUcmFpbGluZ1doaXRl
c3BhY2UoKQoreworICAgIGlmICghbV9sZWFkaW5nQ29sbGFwc2libGVXaWR0aCkKKyAgICAgICAg
bV9sZWFkaW5nQ29sbGFwc2libGVXaWR0aCA9IG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoOwor
ICAgIG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoID0geyB9OworfQorCit2b2lkIElubGluZUNv
bnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6YXBwZW5kKGNvbnN0IElubGluZUl0ZW0m
IGlubGluZUl0ZW0sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsV2lkdGgpCit7CisgICAgQVNTRVJUKGlubGluZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJ
dGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpOwor
ICAgIGFwcGVuZFRvUnVuTGlzdChpbmxpbmVJdGVtLCBzdHlsZSwgbG9naWNhbFdpZHRoKTsKKyAg
ICBpZiAoaW5saW5lSXRlbS5pc0JveCgpKSB7CisgICAgICAgIC8vIElubGluZSBib3hlcyAod2hp
dGVzcGFjZS0+IDxzcGFuPjwvc3Bhbj4pIGRvIG5vdCBwcmV2ZW50IHRoZSB0cmFpbGluZyBjb250
ZW50IGZyb20gZ2V0dGluZyBjb2xsYXBzZWQvaHVuZworICAgICAgICAvLyBidXQgYXRvbWljIGlu
bGluZSBsZXZlbCBib3hlcyBkby4KKyAgICAgICAgcmVzZXRUcmFpbGluZ1doaXRlc3BhY2UoKTsK
KyAgICB9Cit9CisKK3ZvaWQgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50
OjphcHBlbmQoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZVRleHRJdGVtLCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoLCBzdGQ6Om9wdGlv
bmFsPElubGluZUxheW91dFVuaXQ+IGNvbGxhcHNpYmxlV2lkdGgpCit7CiAgICAgaWYgKCFjb2xs
YXBzaWJsZVdpZHRoKSB7Ci0gICAgICAgIGlmIChpbmxpbmVJdGVtLmlzVGV4dCgpIHx8IGlubGlu
ZUl0ZW0uaXNCb3goKSkgewotICAgICAgICAgICAgLy8gSW5saW5lIGJveGVzIGRvIG5vdCBwcmV2
ZW50IHRoZSB0cmFpbGluZyBjb250ZW50IGZyb20gZ2V0dGluZyBjb2xsYXBzZWQuCi0gICAgICAg
ICAgICBtX3RyYWlsaW5nQ29sbGFwc2libGVXaWR0aCA9IHsgfTsKLSAgICAgICAgfQorICAgICAg
ICBhcHBlbmRUb1J1bkxpc3QoaW5saW5lVGV4dEl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgpOwor
ICAgICAgICByZXNldFRyYWlsaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQorCiAgICAgQVNTRVJUKCpjb2xsYXBzaWJsZVdpZHRoIDw9IGxvZ2ljYWxXaWR0aCk7CisgICAg
YXV0byBpc0xlYWRpbmdDb2xsYXBzaWJsZSA9IGNvbGxhcHNpYmxlV2lkdGggJiYgKCF0aGlzLT5s
b2dpY2FsV2lkdGgoKSB8fCBpc0Z1bGx5Q29sbGFwc2libGUoKSk7CisgICAgYXBwZW5kVG9SdW5M
aXN0KGlubGluZVRleHRJdGVtLCBzdHlsZSwgbG9naWNhbFdpZHRoKTsKICAgICBpZiAoaXNMZWFk
aW5nQ29sbGFwc2libGUpIHsKICAgICAgICAgQVNTRVJUKCFtX3RyYWlsaW5nQ29sbGFwc2libGVX
aWR0aCk7Ci0gICAgICAgIG1fbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGggKz0gKmNvbGxhcHNpYmxl
V2lkdGg7CisgICAgICAgIG1fbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGggPSBtX2xlYWRpbmdDb2xs
YXBzaWJsZVdpZHRoLnZhbHVlX29yKDAuZikgKyAqY29sbGFwc2libGVXaWR0aDsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBtX3RyYWlsaW5nQ29sbGFwc2libGVXaWR0aCA9ICpjb2xsYXBz
aWJsZVdpZHRoID09IGxvZ2ljYWxXaWR0aCA/IG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoICsg
bG9naWNhbFdpZHRoIDogKmNvbGxhcHNpYmxlV2lkdGg7CisgICAgbV90cmFpbGluZ0NvbGxhcHNp
YmxlV2lkdGggPSAqY29sbGFwc2libGVXaWR0aCA9PSBsb2dpY2FsV2lkdGggPyBtX3RyYWlsaW5n
Q29sbGFwc2libGVXaWR0aC52YWx1ZV9vcigwLmYpICsgbG9naWNhbFdpZHRoIDogKmNvbGxhcHNp
YmxlV2lkdGg7CiB9CiAKIHZvaWQgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250
ZW50OjpyZXNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaApp
bmRleCBjNzNjNTY2YTk2NTAzODY0ZGE2YjE5NjNlN2IwYTNjYzU0Mjc5NzkzLi5kZmU1NWI2MWQz
ZDQ5ZTc0YTUwZjc4ODZhYWU2ZmE2NzVlODhlODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUNvbnRlbnRCcmVha2VyLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIExheW91dCB7CiAKIGNsYXNzIElubGluZUl0ZW07CitjbGFzcyBJbmxpbmVU
ZXh0SXRlbTsKIHN0cnVjdCBDYW5kaWRhdGVUZXh0UnVuRm9yQnJlYWtpbmc7CiAKIGNsYXNzIElu
bGluZUNvbnRlbnRCcmVha2VyIHsKQEAgLTgwLDEyICs4MSwxMyBAQCBwdWJsaWM6CiAgICAgLy8g
c2VlIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdGV4dC0zLyNsaW5lLWJyZWFrLWRldGFp
bHMKICAgICBzdHJ1Y3QgQ29udGludW91c0NvbnRlbnQgewogICAgICAgICBJbmxpbmVMYXlvdXRV
bml0IGxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFdpZHRoOyB9Ci0gICAg
ICAgIElubGluZUxheW91dFVuaXQgbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX2xlYWRpbmdDb2xsYXBzaWJsZVdpZHRoOyB9Ci0gICAgICAgIElubGluZUxheW91dFVu
aXQgdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV90cmFpbGluZ0Nv
bGxhcHNpYmxlV2lkdGg7IH0KLSAgICAgICAgYm9vbCBoYXNDb2xsYXBzaWJsZUNvbnRlbnQoKSBj
b25zdCB7IHJldHVybiB0cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGgoKSA+IDAgfHwgbGVhZGluZ0Nv
bGxhcHNpYmxlV2lkdGgoKSA+IDA7IH0KLSAgICAgICAgYm9vbCBpc0Z1bGx5Q29sbGFwc2libGUo
KSBjb25zdCB7IHJldHVybiBsb2dpY2FsV2lkdGgoKSA9PSB0cmFpbGluZ0NvbGxhcHNpYmxlV2lk
dGgoKSArIGxlYWRpbmdDb2xsYXBzaWJsZVdpZHRoKCk7IH0KKyAgICAgICAgc3RkOjpvcHRpb25h
bDxJbmxpbmVMYXlvdXRVbml0PiBsZWFkaW5nQ29sbGFwc2libGVXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGg7IH0KKyAgICAgICAgc3RkOjpvcHRpb25hbDxJ
bmxpbmVMYXlvdXRVbml0PiB0cmFpbGluZ0NvbGxhcHNpYmxlV2lkdGgoKSBjb25zdCB7IHJldHVy
biBtX3RyYWlsaW5nQ29sbGFwc2libGVXaWR0aDsgfQorICAgICAgICBib29sIGhhc0NvbGxhcHNp
YmxlQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRyYWlsaW5nQ29sbGFwc2libGVXaWR0aCgpIHx8
IGxlYWRpbmdDb2xsYXBzaWJsZVdpZHRoKCk7IH0KKyAgICAgICAgYm9vbCBpc0Z1bGx5Q29sbGFw
c2libGUoKSBjb25zdDsKIAotICAgICAgICB2b2lkIGFwcGVuZChjb25zdCBJbmxpbmVJdGVtJiwg
Y29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwgc3RkOjpv
cHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBjb2xsYXBzaWJsZVdpZHRoID0gc3RkOjpudWxsb3B0
KTsKKyAgICAgICAgdm9pZCBhcHBlbmQoY29uc3QgSW5saW5lSXRlbSYsIGNvbnN0IFJlbmRlclN0
eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOworICAgICAgICB2b2lkIGFwcGVu
ZChjb25zdCBJbmxpbmVUZXh0SXRlbSYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsV2lkdGgsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gY29sbGFw
c2libGVXaWR0aCk7CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKIAogICAgICAgICBzdHJ1Y3QgUnVu
IHsKQEAgLTEwMSwxMCArMTAzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgUnVuTGlzdCYg
cnVucygpIGNvbnN0IHsgcmV0dXJuIG1fcnVuczsgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
dm9pZCBhcHBlbmRUb1J1bkxpc3QoY29uc3QgSW5saW5lSXRlbSYsIGNvbnN0IFJlbmRlclN0eWxl
JiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOworICAgICAgICB2b2lkIHJlc2V0VHJh
aWxpbmdXaGl0ZXNwYWNlKCk7CisKICAgICAgICAgUnVuTGlzdCBtX3J1bnM7CiAgICAgICAgIElu
bGluZUxheW91dFVuaXQgbV9sb2dpY2FsV2lkdGggeyAwIH07Ci0gICAgICAgIElubGluZUxheW91
dFVuaXQgbV9sZWFkaW5nQ29sbGFwc2libGVXaWR0aCB7IDAgfTsKLSAgICAgICAgSW5saW5lTGF5
b3V0VW5pdCBtX3RyYWlsaW5nQ29sbGFwc2libGVXaWR0aCB7IDAgfTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBtX2xlYWRpbmdDb2xsYXBzaWJsZVdpZHRoIHsgfTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBtX3RyYWlsaW5nQ29sbGFw
c2libGVXaWR0aCB7IH07CiAgICAgfTsKIAogICAgIHN0cnVjdCBMaW5lU3RhdHVzIHsKQEAgLTE3
MSw2ICsxNzYsMTYgQEAgaW5saW5lIElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29u
dGVudDo6UnVuOjpSdW4oY29uc3QgUnVuJiBvdGhlcikKIHsKIH0KIAoraW5saW5lIGJvb2wgSW5s
aW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50Ojppc0Z1bGx5Q29sbGFwc2libGUo
KSBjb25zdAoreworICAgIGF1dG8gY29sbGFwc2libGVXaWR0aCA9IHN0ZDo6b3B0aW9uYWw8SW5s
aW5lTGF5b3V0VW5pdD4geyB9OworICAgIGlmIChtX2xlYWRpbmdDb2xsYXBzaWJsZVdpZHRoKQor
ICAgICAgICBjb2xsYXBzaWJsZVdpZHRoID0gKm1fbGVhZGluZ0NvbGxhcHNpYmxlV2lkdGg7Cisg
ICAgaWYgKG1fdHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoKQorICAgICAgICBjb2xsYXBzaWJsZVdp
ZHRoID0gY29sbGFwc2libGVXaWR0aC52YWx1ZV9vcigwLmYpICsgKm1fdHJhaWxpbmdDb2xsYXBz
aWJsZVdpZHRoOworICAgIHJldHVybiBjb2xsYXBzaWJsZVdpZHRoICYmICpjb2xsYXBzaWJsZVdp
ZHRoID09IGxvZ2ljYWxXaWR0aCgpOworfQorCiB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA2MmFjZDYwODAzMzkxNjk2ZDc0YTJmM2Ex
NjE5Nzg5YTY2YmJmOGMyLi5iNGEwMTA5NjkwNzhmMTEzMDRhZjJhZDE2MWVkMWNkNTYxMGQyYjMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC0xOTMsMjUg
KzE5MywzMyBAQCBMaW5lQ2FuZGlkYXRlOjpJbmxpbmVDb250ZW50OjpJbmxpbmVDb250ZW50KGJv
b2wgaWdub3JlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nKQogaW5saW5lIHZvaWQgTGluZUNhbmRpZGF0
ZTo6SW5saW5lQ29udGVudDo6YXBwZW5kSW5saW5lSXRlbShjb25zdCBJbmxpbmVJdGVtJiBpbmxp
bmVJdGVtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIElubGluZUxheW91dFVuaXQgbG9naWNh
bFdpZHRoKQogewogICAgIEFTU0VSVChpbmxpbmVJdGVtLmlzVGV4dCgpIHx8IGlubGluZUl0ZW0u
aXNCb3goKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlz
SW5saW5lQm94RW5kKCkpOwotICAgIGF1dG8gY29sbGFwc2libGVXaWR0aCA9IFsmXSgpIC0+IHN0
ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gewotICAgICAgICBpZiAoIWlubGluZUl0ZW0u
aXNUZXh0KCkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBhdXRvJiBpbmxpbmVU
ZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKTsKLSAgICAgICAg
aWYgKGlubGluZVRleHRJdGVtLmlzV2hpdGVzcGFjZSgpICYmICFJbmxpbmVUZXh0SXRlbTo6c2hv
dWxkUHJlc2VydmVTcGFjZXNBbmRUYWJzKGlubGluZVRleHRJdGVtKSkgewotICAgICAgICAgICAg
Ly8gRnVsbHkgY29sbGFwc2libGUgdHJhaWxpbmcgY29udGVudC4KLSAgICAgICAgICAgIHJldHVy
biBsb2dpY2FsV2lkdGg7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIHBhcnRpYWxs
eSBjb2xsYXBzaWJsZSBjb250ZW50LgotICAgICAgICBpZiAobV9pZ25vcmVUcmFpbGluZ0xldHRl
clNwYWNpbmcpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBhdXRvIGxldHRlclNw
YWNpbmcgPSBzdHlsZS5sZXR0ZXJTcGFjaW5nKCk7Ci0gICAgICAgIGlmIChsZXR0ZXJTcGFjaW5n
IDw9IDApCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBBU1NFUlQobG9naWNhbFdp
ZHRoID4gbGV0dGVyU3BhY2luZyk7Ci0gICAgICAgIHJldHVybiBsZXR0ZXJTcGFjaW5nOwotICAg
IH07Ci0gICAgbV9jb250aW51b3VzQ29udGVudC5hcHBlbmQoaW5saW5lSXRlbSwgc3R5bGUsIGxv
Z2ljYWxXaWR0aCwgY29sbGFwc2libGVXaWR0aCgpKTsKICAgICBtX2hhc0lubGluZUxldmVsQm94
ID0gbV9oYXNJbmxpbmVMZXZlbEJveCB8fCBpbmxpbmVJdGVtLmlzQm94KCkgfHwgaW5saW5lSXRl
bS5pc0lubGluZUJveFN0YXJ0KCk7CisKKyAgICBpZiAoaW5saW5lSXRlbS5pc0JveCgpIHx8IGlu
bGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQo
KSkKKyAgICAgICAgcmV0dXJuIG1fY29udGludW91c0NvbnRlbnQuYXBwZW5kKGlubGluZUl0ZW0s
IHN0eWxlLCBsb2dpY2FsV2lkdGgpOworCisgICAgaWYgKGlubGluZUl0ZW0uaXNUZXh0KCkpIHsK
KyAgICAgICAgYXV0byYgaW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4o
aW5saW5lSXRlbSk7CisgICAgICAgIGF1dG8gaXNXaGl0ZXNwYWNlID0gaW5saW5lVGV4dEl0ZW0u
aXNXaGl0ZXNwYWNlKCk7CisKKyAgICAgICAgYXV0byBjb2xsYXBzaWJsZVdpZHRoID0gWyZdKCkg
LT4gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7CisgICAgICAgICAgICBpZiAoaXNX
aGl0ZXNwYWNlICYmICFJbmxpbmVUZXh0SXRlbTo6c2hvdWxkUHJlc2VydmVTcGFjZXNBbmRUYWJz
KGlubGluZVRleHRJdGVtKSkgeworICAgICAgICAgICAgICAgIC8vIEZ1bGx5IGNvbGxhcHNpYmxl
IHRyYWlsaW5nIGNvbnRlbnQuCisgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ2ljYWxXaWR0aDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIENoZWNrIGZvciBwYXJ0aWFsbHkgY29sbGFw
c2libGUgY29udGVudC4KKyAgICAgICAgICAgIGlmIChtX2lnbm9yZVRyYWlsaW5nTGV0dGVyU3Bh
Y2luZykKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgYXV0byBsZXR0
ZXJTcGFjaW5nID0gc3R5bGUubGV0dGVyU3BhY2luZygpOworICAgICAgICAgICAgaWYgKGxldHRl
clNwYWNpbmcgPD0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAg
QVNTRVJUKGxvZ2ljYWxXaWR0aCA+IGxldHRlclNwYWNpbmcpOworICAgICAgICAgICAgcmV0dXJu
IGxldHRlclNwYWNpbmc7CisgICAgICAgIH07CisgICAgICAgIG1fY29udGludW91c0NvbnRlbnQu
YXBwZW5kKGlubGluZVRleHRJdGVtLCBzdHlsZSwgbG9naWNhbFdpZHRoLCBjb2xsYXBzaWJsZVdp
ZHRoKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCiBpbmxpbmUgdm9pZCBMaW5lQ2FuZGlkYXRlOjpJbmxpbmVDb250ZW50OjpyZXNldCgp
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>