<?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>206792</bug_id>
          
          <creation_ts>2020-01-24 18:58:07 -0800</creation_ts>
          <short_desc>[LFC][IFC] Layout logic should be driven by the type of the inline box</short_desc>
          <delta_ts>2020-01-25 07:57:15 -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>commit-queue</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>1610972</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-24 18:58:07 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610973</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-24 18:58:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/58889080&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610974</commentid>
    <comment_count>2</comment_count>
      <attachid>388753</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-24 19:02:25 -0800</bug_when>
    <thetext>Created attachment 388753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611007</commentid>
    <comment_count>3</comment_count>
      <attachid>388753</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-24 23:59:20 -0800</bug_when>
    <thetext>Comment on attachment 388753
Patch

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

&gt; Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp:68
&gt;  static inline const Box* nextInPreOrder(const Box&amp; layoutBox, const Container&amp; stayWithin)
&gt;  {
&gt; -    const Box* nextInPreOrder = nullptr;
&gt; -    if (!layoutBox.establishesFormattingContext() &amp;&amp; is&lt;Container&gt;(layoutBox) &amp;&amp; downcast&lt;Container&gt;(layoutBox).hasInFlowOrFloatingChild())
&gt; -        return downcast&lt;Container&gt;(layoutBox).firstInFlowOrFloatingChild();
&gt; -
&gt; -    for (nextInPreOrder = &amp;layoutBox; nextInPreOrder &amp;&amp; nextInPreOrder != &amp;stayWithin; nextInPreOrder = nextInPreOrder-&gt;parent()) {
&gt; -        if (auto* nextSibling = nextInPreOrder-&gt;nextInFlowOrFloatingSibling())
&gt; -            return nextSibling;
&gt; +    auto opaqueBox = layoutBox.isFloatingPositioned() || layoutBox.isAtomicInlineLevelBox();
&gt; +    if (opaqueBox || layoutBox.isAnonymous() || layoutBox.isLineBreakBox()) {
&gt; +        for (auto* nextInPreOrder = &amp;layoutBox; nextInPreOrder &amp;&amp; nextInPreOrder != &amp;stayWithin; nextInPreOrder = nextInPreOrder-&gt;parent()) {
&gt; +            if (auto* nextSibling = nextInPreOrder-&gt;nextInFlowOrFloatingSibling())
&gt; +                return nextSibling;
&gt; +        }
&gt; +        return nullptr;
&gt;      }
&gt; -    return nullptr;
&gt; +    ASSERT(layoutBox.isInlineBox());
&gt; +    return downcast&lt;Container&gt;(layoutBox).firstInFlowOrFloatingChild();
&gt;  }

I feel this is making previously robust and understandable pre-order traversal code much less so. How de we know at the end this is a Container that is guaranteed to have at least one child?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611015</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-25 04:13:28 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; Comment on attachment 388753 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388753&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp:68
&gt; &gt;  static inline const Box* nextInPreOrder(const Box&amp; layoutBox, const Container&amp; stayWithin)
&gt; &gt;  {
&gt; &gt; -    const Box* nextInPreOrder = nullptr;
&gt; &gt; -    if (!layoutBox.establishesFormattingContext() &amp;&amp; is&lt;Container&gt;(layoutBox) &amp;&amp; downcast&lt;Container&gt;(layoutBox).hasInFlowOrFloatingChild())
&gt; &gt; -        return downcast&lt;Container&gt;(layoutBox).firstInFlowOrFloatingChild();
&gt; &gt; -
&gt; &gt; -    for (nextInPreOrder = &amp;layoutBox; nextInPreOrder &amp;&amp; nextInPreOrder != &amp;stayWithin; nextInPreOrder = nextInPreOrder-&gt;parent()) {
&gt; &gt; -        if (auto* nextSibling = nextInPreOrder-&gt;nextInFlowOrFloatingSibling())
&gt; &gt; -            return nextSibling;
&gt; &gt; +    auto opaqueBox = layoutBox.isFloatingPositioned() || layoutBox.isAtomicInlineLevelBox();
&gt; &gt; +    if (opaqueBox || layoutBox.isAnonymous() || layoutBox.isLineBreakBox()) {
&gt; &gt; +        for (auto* nextInPreOrder = &amp;layoutBox; nextInPreOrder &amp;&amp; nextInPreOrder != &amp;stayWithin; nextInPreOrder = nextInPreOrder-&gt;parent()) {
&gt; &gt; +            if (auto* nextSibling = nextInPreOrder-&gt;nextInFlowOrFloatingSibling())
&gt; &gt; +                return nextSibling;
&gt; &gt; +        }
&gt; &gt; +        return nullptr;
&gt; &gt;      }
&gt; &gt; -    return nullptr;
&gt; &gt; +    ASSERT(layoutBox.isInlineBox());
&gt; &gt; +    return downcast&lt;Container&gt;(layoutBox).firstInFlowOrFloatingChild();
&gt; &gt;  }
&gt; 
&gt; I feel this is making previously robust and understandable pre-order
&gt; traversal code much less so. How de we know at the end this is a Container
&gt; that is guaranteed to have at least one child?
I totally agree. I probably should be doing it the other way around and remove the Container class first since at this point that class is more of a nuisance than an actual help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611032</commentid>
    <comment_count>5</comment_count>
      <attachid>388772</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-25 06:36:19 -0800</bug_when>
    <thetext>Created attachment 388772
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611037</commentid>
    <comment_count>6</comment_count>
      <attachid>388772</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-25 07:57:13 -0800</bug_when>
    <thetext>Comment on attachment 388772
Patch

Clearing flags on attachment: 388772

Committed r255118: &lt;https://trac.webkit.org/changeset/255118&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611038</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-25 07:57:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388753</attachid>
            <date>2020-01-24 19:02:25 -0800</date>
            <delta_ts>2020-01-25 06:36:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206792-20200124190224.patch</filename>
            <type>text/plain</type>
            <size>7952</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjYyMjA0YTg0NmQ5NGMw
NDBiYWVmN2E1NDY2NzI1MDlmNTI1ZGVhMS4uOTI5NTRiZWE0NGY0NmJjNjM4YWQ1ZWI5MmJkZjNk
NjQ1YjM5YmMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAxLTI0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBMYXlvdXQg
bG9naWMgc2hvdWxkIGJlIGRyaXZlbiBieSB0aGUgdHlwZSBvZiB0aGUgaW5saW5lIGJveAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NzkyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81ODg4OTA4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgdGhlIHR5cGUgb2YgdGhlIGlubGluZSBib3ggdG8g
ZGVjaWRlIHdoYXQgbGF5b3V0IGZ1bmN0aW9ucyB0byBjYWxsIGFuZCBub3Qgd2hldGhlciB0aGUK
KyAgICAgICAgYm94IGhhcyBjaGlsZHJlbiBvciBpdCBlc3RhYmxpc2hlcyBhIGZvcm1hdHRpbmcg
Y29udGV4dC4KKworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6bmV4dEluUHJlT3Jk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVJbnRyaW5zaWNXaWR0aEZvckZv
cm1hdHRpbmdSb290KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxk
ZXI6OmlzVmlzdWFsbHlOb25FbXB0eSBjb25zdCk6CisKIDIwMjAtMDEtMjQgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIChSZWdyZXNzaW9uKSBM
YXlvdXRUZXN0cy9mYXN0L3RleHQvd2hpdGVzcGFjZS8wMjkuaHRtbCBmYWlscwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDEwZWNlYzQ0MWM0MTE0MWY3MzQ2NjNlOGU0
NjQ1NzE0OGFiY2MyZDcuLjUyNGRkMjljN2IwNjQ2ZDcxNDU1MjQyNThmMDk1ODY1NWY5ZGQ2ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTU1LDE1ICs1NSwxNiBA
QCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY29uc3Qg
Q29udGFpbmVyJiBmb3JtYXR0aW5nQ29udAogCiBzdGF0aWMgaW5saW5lIGNvbnN0IEJveCogbmV4
dEluUHJlT3JkZXIoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lciYgc3RheVdp
dGhpbikKIHsKLSAgICBjb25zdCBCb3gqIG5leHRJblByZU9yZGVyID0gbnVsbHB0cjsKLSAgICBp
ZiAoIWxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkgJiYgaXM8Q29udGFp
bmVyPihsYXlvdXRCb3gpICYmIGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZs
b3dPckZsb2F0aW5nQ2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PENvbnRhaW5lcj4o
bGF5b3V0Qm94KS5maXJzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgpOwotCi0gICAgZm9yIChuZXh0
SW5QcmVPcmRlciA9ICZsYXlvdXRCb3g7IG5leHRJblByZU9yZGVyICYmIG5leHRJblByZU9yZGVy
ICE9ICZzdGF5V2l0aGluOyBuZXh0SW5QcmVPcmRlciA9IG5leHRJblByZU9yZGVyLT5wYXJlbnQo
KSkgewotICAgICAgICBpZiAoYXV0byogbmV4dFNpYmxpbmcgPSBuZXh0SW5QcmVPcmRlci0+bmV4
dEluRmxvd09yRmxvYXRpbmdTaWJsaW5nKCkpCi0gICAgICAgICAgICByZXR1cm4gbmV4dFNpYmxp
bmc7CisgICAgYXV0byBvcGFxdWVCb3ggPSBsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQo
KSB8fCBsYXlvdXRCb3guaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpOworICAgIGlmIChvcGFxdWVC
b3ggfHwgbGF5b3V0Qm94LmlzQW5vbnltb3VzKCkgfHwgbGF5b3V0Qm94LmlzTGluZUJyZWFrQm94
KCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiBuZXh0SW5QcmVPcmRlciA9ICZsYXlvdXRCb3g7IG5l
eHRJblByZU9yZGVyICYmIG5leHRJblByZU9yZGVyICE9ICZzdGF5V2l0aGluOyBuZXh0SW5QcmVP
cmRlciA9IG5leHRJblByZU9yZGVyLT5wYXJlbnQoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8q
IG5leHRTaWJsaW5nID0gbmV4dEluUHJlT3JkZXItPm5leHRJbkZsb3dPckZsb2F0aW5nU2libGlu
ZygpKQorICAgICAgICAgICAgICAgIHJldHVybiBuZXh0U2libGluZzsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNT
RVJUKGxheW91dEJveC5pc0lubGluZUJveCgpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q29udGFp
bmVyPihsYXlvdXRCb3gpLmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7CiB9CiAKIHZvaWQg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9u
U3RhdGUmIGludmFsaWRhdGlvblN0YXRlLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhv
cml6b250YWxDb25zdHJhaW50cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYgdmVydGljYWxD
b25zdHJhaW50cykKQEAgLTE3NSwyMSArMTc2LDI3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRy
aW5zaWNXaWR0aENvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZElu
CiAgICAgVmVjdG9yPGNvbnN0IEJveCo+IGZvcm1hdHRpbmdDb250ZXh0Um9vdExpc3Q7CiAgICAg
YXV0byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBIb3Jpem9udGFsQ29uc3RyYWludHMgeyAwX2x1
LCAwX2x1IH07CiAgICAgYXV0byogbGF5b3V0Qm94ID0gcm9vdCgpLmZpcnN0SW5GbG93T3JGbG9h
dGluZ0NoaWxkKCk7CisgICAgLy8gSW4gb3JkZXIgdG8gY29tcHV0ZSB0aGUgbWF4L21pbiB3aWR0
aHMsIHdlIG5lZWQgdG8gY29tcHV0ZSBtYXJnaW5zLCBib3JkZXJzIGFuZCBwYWRkaW5ncyBmb3Ig
Y2VydGFpbiBpbmxpbmUgYm94ZXMgZmlyc3QuCiAgICAgd2hpbGUgKGxheW91dEJveCkgewotICAg
ICAgICBpZiAobGF5b3V0Qm94LT5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKKyAg
ICAgICAgaWYgKGxheW91dEJveC0+aXNBbm9ueW1vdXMoKSkgeworICAgICAgICAgICAgbGF5b3V0
Qm94ID0gbmV4dEluUHJlT3JkZXIoKmxheW91dEJveCwgcm9vdCgpKTsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChsYXlvdXRCb3gtPmlzUmVwbGFjZWQoKSkg
eworICAgICAgICAgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoKmxheW91dEJveCwgaG9yaXpv
bnRhbENvbnN0cmFpbnRzKTsKKyAgICAgICAgICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbigqbGF5
b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOworICAgICAgICB9IGVsc2UgaWYgKGxheW91
dEJveC0+aXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3gtPmlzQXRvbWljSW5saW5l
TGV2ZWxCb3goKSkgeworICAgICAgICAgICAgQVNTRVJUKGxheW91dEJveC0+ZXN0YWJsaXNoZXNG
b3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICAgICAgICAgIGZvcm1hdHRpbmdDb250ZXh0Um9vdExp
c3QuYXBwZW5kKGxheW91dEJveCk7Ci0gICAgICAgICAgICBjb21wdXRlSW50cmluc2ljV2lkdGhG
b3JGb3JtYXR0aW5nUm9vdCgqbGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwotICAg
ICAgICB9IGVsc2UgaWYgKGxheW91dEJveC0+aXNSZXBsYWNlZCgpIHx8IChsYXlvdXRCb3gtPmlz
SW5saW5lQm94KCkgJiYgIWxheW91dEJveC0+aXNBbm9ueW1vdXMoKSkpIHsKKwogICAgICAgICAg
ICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoKmxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFp
bnRzKTsKLSAgICAgICAgICAgIC8vIGlubGluZS1ibG9jayBhbmQgcmVwbGFjZWQuCi0gICAgICAg
ICAgICBhdXRvIG5lZWRzV2lkdGhDb21wdXRhdGlvbiA9IGxheW91dEJveC0+aXNSZXBsYWNlZCgp
OwotICAgICAgICAgICAgaWYgKG5lZWRzV2lkdGhDb21wdXRhdGlvbikKLSAgICAgICAgICAgICAg
ICBjb21wdXRlV2lkdGhBbmRNYXJnaW4oKmxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRz
KTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8vIFNpbXBsZSBpbmxpbmUg
Y29udGFpbmVyIHdpdGggbm8gaW50cmluc2ljIHdpZHRoIDxzcGFuPi4KLSAgICAgICAgICAgICAg
ICBjb21wdXRlSG9yaXpvbnRhbE1hcmdpbigqbGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWlu
dHMpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgICAgICBjb21wdXRlSG9yaXpv
bnRhbE1hcmdpbigqbGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOworICAgICAgICAg
ICAgY29tcHV0ZUludHJpbnNpY1dpZHRoRm9yRm9ybWF0dGluZ1Jvb3QoKmxheW91dEJveCk7Cisg
ICAgICAgIH0gZWxzZSBpZiAobGF5b3V0Qm94LT5pc0lubGluZUJveCgpKSB7CisgICAgICAgICAg
ICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZygqbGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWlu
dHMpOworICAgICAgICAgICAgY29tcHV0ZUhvcml6b250YWxNYXJnaW4oKmxheW91dEJveCwgaG9y
aXpvbnRhbENvbnN0cmFpbnRzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgbGF5b3V0Qm94ID0gbmV4dEluUHJlT3JkZXIoKmxheW91
dEJveCwgcm9vdCgpKTsKICAgICB9CiAKQEAgLTIzMiwxMyArMjM5LDkgQEAgSW5saW5lTGF5b3V0
VW5pdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aEZvckNv
bnN0cmFpbnQoY28KICAgICByZXR1cm4gbWF4aW11bUxpbmVXaWR0aDsKIH0KIAotdm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUludHJpbnNpY1dpZHRoRm9yRm9ybWF0dGluZ1Jv
b3QoY29uc3QgQm94JiBmb3JtYXR0aW5nUm9vdCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
JiBob3Jpem9udGFsQ29uc3RyYWludHMpCit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlSW50cmluc2ljV2lkdGhGb3JGb3JtYXR0aW5nUm9vdChjb25zdCBCb3gmIGZvcm1hdHRp
bmdSb290KQogewogICAgIEFTU0VSVChmb3JtYXR0aW5nUm9vdC5lc3RhYmxpc2hlc0Zvcm1hdHRp
bmdDb250ZXh0KCkpOwotCi0gICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoZm9ybWF0dGluZ1Jv
b3QsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0gICAgY29tcHV0ZUhvcml6b250YWxNYXJnaW4o
Zm9ybWF0dGluZ1Jvb3QsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0KICAgICBhdXRvIGNvbnN0
cmFpbnRzID0gSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7IH07CiAgICAgaWYgKGF1dG8gZml4
ZWRXaWR0aCA9IGdlb21ldHJ5KCkuZml4ZWRWYWx1ZShmb3JtYXR0aW5nUm9vdC5zdHlsZSgpLmxv
Z2ljYWxXaWR0aCgpKSkKICAgICAgICAgY29uc3RyYWludHMgPSB7ICpmaXhlZFdpZHRoLCAqZml4
ZWRXaWR0aCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggOTA2OTBjOTU4
YjI0N2E4YThkZTU2OTE1ZjBmODZmNzZjNmQ0MjBmYy4uOWY2ZjllYjRjZjVkNjI3Yjg3NWQ4ZTYy
YTg0N2FiYmVhZGE5NWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC03
OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxpbmVMYXlvdXQoSW5saW5lSXRlbXMm
LCBMaW5lTGF5b3V0Q29udGV4dDo6SW5saW5lSXRlbVJhbmdlLCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJik7CiAKLSAgICB2b2lkIGNvbXB1
dGVJbnRyaW5zaWNXaWR0aEZvckZvcm1hdHRpbmdSb290KGNvbnN0IEJveCYsIGNvbnN0IEhvcml6
b250YWxDb25zdHJhaW50cyYpOworICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY1dpZHRoRm9yRm9y
bWF0dGluZ1Jvb3QoY29uc3QgQm94Jik7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBjb21wdXRlZElu
dHJpbnNpY1dpZHRoRm9yQ29uc3RyYWludChjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKSBj
b25zdDsKIAogICAgIHZvaWQgY29tcHV0ZUhvcml6b250YWxNYXJnaW4oY29uc3QgQm94JiwgY29u
c3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXgg
MDU4N2ZhN2NmNGM0NDc2MDkyZjllN2VhNjcxZmQ5YTA3NzMxMDQzYS4uODQzZTZhODczY2YzMzVh
MDUxMDcxNDEyNDQ5ZTRmY2YwZDliODZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAt
NjQ0LDkgKzY0NCw5IEBAIGJvb2wgTGluZUJ1aWxkZXI6OmlzVmlzdWFsbHlOb25FbXB0eShjb25z
dCBSdW4mIHJ1bikgY29uc3QKICAgICB9CiAKICAgICBpZiAocnVuLmlzQm94KCkpIHsKLSAgICAg
ICAgaWYgKCFydW4ubGF5b3V0Qm94KCkuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKQor
ICAgICAgICBpZiAocnVuLmxheW91dEJveCgpLmlzUmVwbGFjZWQoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICBBU1NFUlQocnVuLmxheW91dEJveCgpLmlzSW5saW5lQmxvY2tC
b3goKSk7CisgICAgICAgIEFTU0VSVChydW4ubGF5b3V0Qm94KCkuaXNJbmxpbmVCbG9ja0JveCgp
IHx8IHJ1bi5sYXlvdXRCb3goKS5pc0lubGluZVRhYmxlQm94KCkpOwogICAgICAgICBpZiAoIXJ1
bi5sb2dpY2FsV2lkdGgoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYg
KG1faXNJbnRyaW5zaWNTaXppbmcgfHwgZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJv
eChydW4ubGF5b3V0Qm94KCkpLmhlaWdodCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388772</attachid>
            <date>2020-01-25 06:36:19 -0800</date>
            <delta_ts>2020-01-25 07:57:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206792-20200125063618.patch</filename>
            <type>text/plain</type>
            <size>8499</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ3NmQwMTk4ZmI5MDM2
OTczOTc2OTc2OTkxYjkzM2Q3ZmYwNjIzOS4uYTkzNzI5MDMyNGU0OWQ0M2FjYmU3MzhlN2QzNDM1
NTJhNTNjOGMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAxLTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBMYXlvdXQg
bG9naWMgc2hvdWxkIGJlIGRyaXZlbiBieSB0aGUgdHlwZSBvZiB0aGUgaW5saW5lIGJveAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NzkyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81ODg4OTA4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgdGhlIHR5cGUgb2YgdGhlIGlubGluZSBib3ggdG8g
ZGVjaWRlIHdoYXQgbGF5b3V0IGZ1bmN0aW9ucyB0byBjYWxsIGFuZCBub3Qgd2hldGhlciB0aGUK
KyAgICAgICAgYm94IGhhcyBjaGlsZHJlbiBvciBpdCBlc3RhYmxpc2hlcyBhIGZvcm1hdHRpbmcg
Y29udGV4dC4KKworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6bmV4dEluUHJlT3Jk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVJbnRyaW5zaWNXaWR0aEZvckZv
cm1hdHRpbmdSb290KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxk
ZXI6OmlzVmlzdWFsbHlOb25FbXB0eSBjb25zdCk6CisKIDIwMjAtMDEtMjUgIHlvdWVubiBmYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQgc2hvdWxk
IG5vdCByZW1vdmUgdGhlIG1lZGlhIHNlc3Npb24gYXQgRE9NIHN1c3BlbnNpb24gdGltZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDEwZWNlYzQ0MWM0MTE0MWY3MzQ2
NjNlOGU0NjQ1NzE0OGFiY2MyZDcuLjc4YzgxNDVkMDJhMDY1MjUyODk0ZGNhNjk4OTU0Zjc0YWEx
ZTFjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTUzLDEzICs1
MywyMCBAQCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQo
Y29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udAogewogfQogCi1zdGF0aWMgaW5saW5lIGNv
bnN0IEJveCogbmV4dEluUHJlT3JkZXIoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRh
aW5lciYgc3RheVdpdGhpbikKK3N0YXRpYyBpbmxpbmUgY29uc3QgQm94KiBuZXh0SW5saW5lTGV2
ZWxCb3hUb0xheW91dChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQ29udGFpbmVyJiBzdGF5
V2l0aGluKQogewotICAgIGNvbnN0IEJveCogbmV4dEluUHJlT3JkZXIgPSBudWxscHRyOwotICAg
IGlmICghbGF5b3V0Qm94LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSAmJiBpczxDb250
YWluZXI+KGxheW91dEJveCkgJiYgZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0lu
Rmxvd09yRmxvYXRpbmdDaGlsZCgpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q29udGFpbmVy
PihsYXlvdXRCb3gpLmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7CisgICAgLy8gQXRvbWlj
IGlubGluZS1sZXZlbCBib3hlcyBhbmQgZmxvYXRzIGFyZSBvcGFxdWUgYm94ZXMgbWVhbmluZyB0
aGF0IHRoZXkgYXJlCisgICAgLy8gcmVzcG9uc2libGUgZm9yIHRoZWlyIG93biBjb250ZW50IChk
byBub3QgbmVlZCB0byBkZXNjZW5kIGludG8gdGhlaXIgc3VidHJlZXMpLgorICAgIC8vIE9ubHkg
aW5saW5lIGJveGVzIG1heSBoYXZlIHJlbGV2YW50IGRlc2NlbmRhbnQgY29udGVudC4KKyAgICBp
ZiAobGF5b3V0Qm94LmlzSW5saW5lQm94KCkpIHsKKyAgICAgICAgaWYgKGlzPENvbnRhaW5lcj4o
bGF5b3V0Qm94KSAmJiBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93T3JG
bG9hdGluZ0NoaWxkKCkpIHsKKyAgICAgICAgICAgIC8vIEFub255bW91cyBpbmxpbmUgYm94ZXMv
bGluZSBicmVha3MgY2FuJ3QgaGF2ZSBkZXNjZW5kYW50IGNvbnRlbnQgYnkgZGVmaW5pdGlvbi4K
KyAgICAgICAgICAgIEFTU0VSVCghbGF5b3V0Qm94LmlzQW5vbnltb3VzKCkgJiYgIWxheW91dEJv
eC5pc0xpbmVCcmVha0JveCgpKTsKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxDb250YWlu
ZXI+KGxheW91dEJveCkuZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsKKyAgICAgICAgfQor
ICAgIH0KIAotICAgIGZvciAobmV4dEluUHJlT3JkZXIgPSAmbGF5b3V0Qm94OyBuZXh0SW5QcmVP
cmRlciAmJiBuZXh0SW5QcmVPcmRlciAhPSAmc3RheVdpdGhpbjsgbmV4dEluUHJlT3JkZXIgPSBu
ZXh0SW5QcmVPcmRlci0+cGFyZW50KCkpIHsKKyAgICBmb3IgKGF1dG8qIG5leHRJblByZU9yZGVy
ID0gJmxheW91dEJveDsgbmV4dEluUHJlT3JkZXIgJiYgbmV4dEluUHJlT3JkZXIgIT0gJnN0YXlX
aXRoaW47IG5leHRJblByZU9yZGVyID0gbmV4dEluUHJlT3JkZXItPnBhcmVudCgpKSB7CiAgICAg
ICAgIGlmIChhdXRvKiBuZXh0U2libGluZyA9IG5leHRJblByZU9yZGVyLT5uZXh0SW5GbG93T3JG
bG9hdGluZ1NpYmxpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBuZXh0U2libGluZzsKICAgICB9
CkBAIC0xMTMsNyArMTIwLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0
SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW8KICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgICAgICBsYXlvdXRC
b3ggPSBuZXh0SW5QcmVPcmRlcigqbGF5b3V0Qm94LCByb290KCkpOworICAgICAgICBsYXlvdXRC
b3ggPSBuZXh0SW5saW5lTGV2ZWxCb3hUb0xheW91dCgqbGF5b3V0Qm94LCByb290KCkpOwogICAg
IH0KIAogICAgIGNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKTsKQEAgLTE3NSwyMiArMTgy
LDI4IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEluCiAgICAgVmVjdG9yPGNvbnN0IEJveCo+IGZv
cm1hdHRpbmdDb250ZXh0Um9vdExpc3Q7CiAgICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWludHMg
PSBIb3Jpem9udGFsQ29uc3RyYWludHMgeyAwX2x1LCAwX2x1IH07CiAgICAgYXV0byogbGF5b3V0
Qm94ID0gcm9vdCgpLmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7CisgICAgLy8gSW4gb3Jk
ZXIgdG8gY29tcHV0ZSB0aGUgbWF4L21pbiB3aWR0aHMsIHdlIG5lZWQgdG8gY29tcHV0ZSBtYXJn
aW5zLCBib3JkZXJzIGFuZCBwYWRkaW5ncyBmb3IgY2VydGFpbiBpbmxpbmUgYm94ZXMgZmlyc3Qu
CiAgICAgd2hpbGUgKGxheW91dEJveCkgewotICAgICAgICBpZiAobGF5b3V0Qm94LT5lc3RhYmxp
c2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgaWYgKGxheW91dEJveC0+aXNBbm9u
eW1vdXMoKSkgeworICAgICAgICAgICAgbGF5b3V0Qm94ID0gbmV4dElubGluZUxldmVsQm94VG9M
YXlvdXQoKmxheW91dEJveCwgcm9vdCgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisgICAgICAgIGlmIChsYXlvdXRCb3gtPmlzUmVwbGFjZWQoKSkgeworICAgICAgICAgICAg
Y29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoKmxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRz
KTsKKyAgICAgICAgICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbigqbGF5b3V0Qm94LCBob3Jpem9u
dGFsQ29uc3RyYWludHMpOworICAgICAgICB9IGVsc2UgaWYgKGxheW91dEJveC0+aXNGbG9hdGlu
Z1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3gtPmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkgewor
ICAgICAgICAgICAgQVNTRVJUKGxheW91dEJveC0+ZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4
dCgpKTsKICAgICAgICAgICAgIGZvcm1hdHRpbmdDb250ZXh0Um9vdExpc3QuYXBwZW5kKGxheW91
dEJveCk7Ci0gICAgICAgICAgICBjb21wdXRlSW50cmluc2ljV2lkdGhGb3JGb3JtYXR0aW5nUm9v
dCgqbGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwotICAgICAgICB9IGVsc2UgaWYg
KGxheW91dEJveC0+aXNSZXBsYWNlZCgpIHx8IChsYXlvdXRCb3gtPmlzSW5saW5lQm94KCkgJiYg
IWxheW91dEJveC0+aXNBbm9ueW1vdXMoKSkpIHsKKwogICAgICAgICAgICAgY29tcHV0ZUJvcmRl
ckFuZFBhZGRpbmcoKmxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKLSAgICAgICAg
ICAgIC8vIGlubGluZS1ibG9jayBhbmQgcmVwbGFjZWQuCi0gICAgICAgICAgICBhdXRvIG5lZWRz
V2lkdGhDb21wdXRhdGlvbiA9IGxheW91dEJveC0+aXNSZXBsYWNlZCgpOwotICAgICAgICAgICAg
aWYgKG5lZWRzV2lkdGhDb21wdXRhdGlvbikKLSAgICAgICAgICAgICAgICBjb21wdXRlV2lkdGhB
bmRNYXJnaW4oKmxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKLSAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIFNpbXBsZSBpbmxpbmUgY29udGFpbmVyIHdpdGgg
bm8gaW50cmluc2ljIHdpZHRoIDxzcGFuPi4KLSAgICAgICAgICAgICAgICBjb21wdXRlSG9yaXpv
bnRhbE1hcmdpbigqbGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIGxheW91dEJveCA9IG5leHRJblByZU9yZGVyKCpsYXlv
dXRCb3gsIHJvb3QoKSk7CisgICAgICAgICAgICBjb21wdXRlSG9yaXpvbnRhbE1hcmdpbigqbGF5
b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOworICAgICAgICAgICAgY29tcHV0ZUludHJp
bnNpY1dpZHRoRm9yRm9ybWF0dGluZ1Jvb3QoKmxheW91dEJveCk7CisgICAgICAgIH0gZWxzZSBp
ZiAobGF5b3V0Qm94LT5pc0lubGluZUJveCgpKSB7CisgICAgICAgICAgICBjb21wdXRlQm9yZGVy
QW5kUGFkZGluZygqbGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOworICAgICAgICAg
ICAgY29tcHV0ZUhvcml6b250YWxNYXJnaW4oKmxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFp
bnRzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgbGF5b3V0Qm94ID0gbmV4dElubGluZUxldmVsQm94VG9MYXlvdXQoKmxheW91dEJv
eCwgcm9vdCgpKTsKICAgICB9CiAKICAgICBjb2xsZWN0SW5saW5lQ29udGVudElmTmVlZGVkKCk7
CkBAIC0yMzIsMTMgKzI0NSw5IEBAIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25zdHJhaW50KGNvCiAgICAgcmV0dXJu
IG1heGltdW1MaW5lV2lkdGg7CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVJbnRyaW5zaWNXaWR0aEZvckZvcm1hdHRpbmdSb290KGNvbnN0IEJveCYgZm9ybWF0dGlu
Z1Jvb3QsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRz
KQordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUludHJpbnNpY1dpZHRoRm9y
Rm9ybWF0dGluZ1Jvb3QoY29uc3QgQm94JiBmb3JtYXR0aW5nUm9vdCkKIHsKICAgICBBU1NFUlQo
Zm9ybWF0dGluZ1Jvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKLQotICAgIGNv
bXB1dGVCb3JkZXJBbmRQYWRkaW5nKGZvcm1hdHRpbmdSb290LCBob3Jpem9udGFsQ29uc3RyYWlu
dHMpOwotICAgIGNvbXB1dGVIb3Jpem9udGFsTWFyZ2luKGZvcm1hdHRpbmdSb290LCBob3Jpem9u
dGFsQ29uc3RyYWludHMpOwotCiAgICAgYXV0byBjb25zdHJhaW50cyA9IEludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMgeyB9OwogICAgIGlmIChhdXRvIGZpeGVkV2lkdGggPSBnZW9tZXRyeSgpLmZp
eGVkVmFsdWUoZm9ybWF0dGluZ1Jvb3Quc3R5bGUoKS5sb2dpY2FsV2lkdGgoKSkpCiAgICAgICAg
IGNvbnN0cmFpbnRzID0geyAqZml4ZWRXaWR0aCwgKmZpeGVkV2lkdGggfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDkwNjkwYzk1OGIyNDdhOGE4ZGU1NjkxNWYwZjg2Zjc2
YzZkNDIwZmMuLjlmNmY5ZWI0Y2Y1ZDYyN2I4NzVkOGU2MmE4NDdhYmJlYWRhOTViMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBsaW5lTGF5b3V0KElubGluZUl0ZW1zJiwgTGluZUxheW91dENvbnRleHQ6Oklu
bGluZUl0ZW1SYW5nZSwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGlj
YWxDb25zdHJhaW50cyYpOwogCi0gICAgdm9pZCBjb21wdXRlSW50cmluc2ljV2lkdGhGb3JGb3Jt
YXR0aW5nUm9vdChjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKKyAg
ICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNXaWR0aEZvckZvcm1hdHRpbmdSb290KGNvbnN0IEJveCYp
OwogICAgIElubGluZUxheW91dFVuaXQgY29tcHV0ZWRJbnRyaW5zaWNXaWR0aEZvckNvbnN0cmFp
bnQoY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJikgY29uc3Q7CiAKICAgICB2b2lkIGNvbXB1
dGVIb3Jpem9udGFsTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50
cyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IDA1ODdmYTdjZjRjNDQ3NjA5MmY5ZTdl
YTY3MWZkOWEwNzczMTA0M2EuLjg0M2U2YTg3M2NmMzM1YTA1MTA3MTQxMjQ0OWU0ZmNmMGQ5Yjg2
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTY0NCw5ICs2NDQsOSBAQCBib29sIExp
bmVCdWlsZGVyOjppc1Zpc3VhbGx5Tm9uRW1wdHkoY29uc3QgUnVuJiBydW4pIGNvbnN0CiAgICAg
fQogCiAgICAgaWYgKHJ1bi5pc0JveCgpKSB7Ci0gICAgICAgIGlmICghcnVuLmxheW91dEJveCgp
LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSkKKyAgICAgICAgaWYgKHJ1bi5sYXlvdXRC
b3goKS5pc1JlcGxhY2VkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgQVNT
RVJUKHJ1bi5sYXlvdXRCb3goKS5pc0lubGluZUJsb2NrQm94KCkpOworICAgICAgICBBU1NFUlQo
cnVuLmxheW91dEJveCgpLmlzSW5saW5lQmxvY2tCb3goKSB8fCBydW4ubGF5b3V0Qm94KCkuaXNJ
bmxpbmVUYWJsZUJveCgpKTsKICAgICAgICAgaWYgKCFydW4ubG9naWNhbFdpZHRoKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChtX2lzSW50cmluc2ljU2l6aW5nIHx8
IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gocnVuLmxheW91dEJveCgpKS5oZWln
aHQoKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>