<?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>245351</bug_id>
          
          <creation_ts>2022-09-18 20:04:00 -0700</creation_ts>
          <short_desc>[LFC][Cleanup] Remove Layout::Box::formattingContextRoot</short_desc>
          <delta_ts>2022-09-19 22:14:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>1899414</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-09-18 20:04:00 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899415</commentid>
    <comment_count>1</comment_count>
      <attachid>462427</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-09-18 20:30:16 -0700</bug_when>
    <thetext>Created attachment 462427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899463</commentid>
    <comment_count>2</comment_count>
      <attachid>462427</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-09-19 06:07:09 -0700</bug_when>
    <thetext>Comment on attachment 462427
Patch

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

&gt; Source/WebCore/layout/formattingContexts/FormattingContext.cpp:280
&gt;      for (auto&amp; descendant : descendantsOfType&lt;Box&gt;(root)) {
&gt;          if (!descendant.isOutOfFlowPositioned())
&gt;              continue;
&gt; -        if (&amp;descendant.formattingContextRoot() != &amp;root)
&gt; +        auto nearestFormattingContextRoot = [&amp;] {
&gt; +            auto* ancestor = &amp;descendant.containingBlock();
&gt; +            for (; !ancestor-&gt;establishesBlockFormattingContext(); ancestor = &amp;ancestor-&gt;containingBlock()) { }
&gt; +            return ancestor;
&gt; +        };
&gt; +        if (nearestFormattingContextRoot() != &amp;root)
&gt;              continue;
&gt;          formattingState().addOutOfFlowBox(descendant);
&gt;      }

This loop could just avoid traversing into subtrees that are in a separate formatting context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899660</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-09-19 15:34:10 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #2)
&gt; Comment on attachment 462427 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=462427&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/formattingContexts/FormattingContext.cpp:280
&gt; &gt;      for (auto&amp; descendant : descendantsOfType&lt;Box&gt;(root)) {
&gt; &gt;          if (!descendant.isOutOfFlowPositioned())
&gt; &gt;              continue;
&gt; &gt; -        if (&amp;descendant.formattingContextRoot() != &amp;root)
&gt; &gt; +        auto nearestFormattingContextRoot = [&amp;] {
&gt; &gt; +            auto* ancestor = &amp;descendant.containingBlock();
&gt; &gt; +            for (; !ancestor-&gt;establishesBlockFormattingContext(); ancestor = &amp;ancestor-&gt;containingBlock()) { }
&gt; &gt; +            return ancestor;
&gt; &gt; +        };
&gt; &gt; +        if (nearestFormattingContextRoot() != &amp;root)
&gt; &gt;              continue;
&gt; &gt;          formattingState().addOutOfFlowBox(descendant);
&gt; &gt;      }
&gt; 
&gt; This loop could just avoid traversing into subtrees that are in a separate
&gt; formatting context.
Yeah, this needs to be re-worked when getting it into shipping configuration (BFC) (there&apos;s a FIXME somewhere here).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899722</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-09-19 22:13:39 -0700</bug_when>
    <thetext>Committed 254662@main (3d0a14637f43): &lt;https://commits.webkit.org/254662@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 462427.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899723</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-09-19 22:14:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/100156556&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462427</attachid>
            <date>2022-09-18 20:30:16 -0700</date>
            <delta_ts>2022-09-19 22:13:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-245351-20220918203015.patch</filename>
            <type>text/plain</type>
            <size>23180</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBhOWUyMDQ5MTgxNjkwYTU4MjZiMTY3YTRjODE3OGZjOTg5ZDBlNWJjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBT
dW4sIDE4IFNlcCAyMDIyIDIwOjE1OjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gW0xGQ11bQ2xl
YW51cF0gUmVtb3ZlIExheW91dDo6Qm94Ojpmb3JtYXR0aW5nQ29udGV4dFJvb3QKIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDUzNTEKClJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgoKMS4gV2hpbGUgbGF5aW5nIG91dCBhIGZvcm1hdHRpbmcgY29udGV4dCwgd2Ug
cHJlY2lzZWx5IGtub3cgd2hhdCB0aGUgcm9vdCBvZiB0aGUgZm9ybWF0dGluZyBjb250ZXh0IGlz
LgoyLiBGaW5kaW5nIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCBvZiBhICJyYW5kb20iIGxh
eW91dCBib3ggc2hvdWxkIG9ubHkgYmUgYSB2YWxpZCBvcGVyYXRpb24gd2hlbiBBU1NFUlRpbmcg
YWdhaW5zdCBzb21lIHN0YXRlICh3aXRoIHRoZSBleGNlcHRpb24gb2YgZmluZGluZyB0aGUgcGFy
ZW50IGZsb2F0aW5nIHN0YXRlIHdoZW4gaW5pdGlhbGl6aW5nIGFuIElGQywgLXdlIGNvdWxkIGNl
cnRhaW5seSBlbGltaW5hdGUgaXQgd2l0aCBoYXZpbmcgYSBmb3JtYXR0aW5nIGNvbnRleHQgdHJl
ZSkuCgpNb3ZlIGZvcm1hdHRpbmdDb250ZXh0Um9vdCBpbXBsIHVuZGVyIEZvcm1hdHRpbmdDb250
ZXh0IChOREVCVUcgb25seSkuCgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3Rh
dGUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nU3RhdGU6OmJveEdlb21ldHJ5KToK
KiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmg6CihXZWJDb3JlOjpMYXlv
dXQ6OkZvcm1hdHRpbmdTdGF0ZTo6c2V0SW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveCk6
CihXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdTdGF0ZTo6aW50cmluc2ljV2lkdGhDb25zdHJh
aW50c0ZvckJveCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmVuc3VyZUlubGluZUZvcm1hdHRpbmdT
dGF0ZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6CihXZWJDb3Jl
OjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVkKToK
KiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250
ZXh0LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Omdlb21ldHJ5Rm9y
Qm94IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RP
dXRPZkZsb3dEZXNjZW5kYW50c0lmTmVlZGVkKToKKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6OmZvcm1hdHRpbmdDb250ZXh0Um9vdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkZvcm1h
dHRpbmdDb250ZXh0Ojp2YWxpZGF0ZUdlb21ldHJ5Q29uc3RyYWludHNBZnRlckxheW91dCBjb25z
dCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5n
Q29udGV4dC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ0dlb21ldHJ5LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5
Ojpjb21wbGljYXRlZENhc2VzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6
TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9h
dEF2b2lkZXIpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFi
bGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3Jt
YXR0aW5nUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhl
ZEhlaWdodCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
Qm94LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6Qm94Ojpmb3JtYXR0aW5nQ29udGV4dFJvb3QgY29u
c3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJv
eC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5pbmdC
bG9ja0NoYWluSXRlcmF0b3IuaDoKKFdlYkNvcmU6OkxheW91dDo6Y29udGFpbmluZ0Jsb2NrQ2hh
aW5XaXRoaW5Gb3JtYXR0aW5nQ29udGV4dCk6Ci0tLQogU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zv
cm1hdHRpbmdTdGF0ZS5jcHAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3Jt
YXR0aW5nU3RhdGUuaCAgICAgICB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0
U3RhdGUuY3BwICAgICAgICAgfCAxMCArKy0tCiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZp
Y2F0aW9uLmNwcCAgICAgICAgfCAgNCArLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0
aW5nQ29udGV4dC5jcHAgIHwgNDYgKysrKysrKysrKysrKystLS0tLQogLi4uL2Zvcm1hdHRpbmdD
b250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oICAgIHwgIDQgKysKIC4uLi9mb3JtYXR0aW5nQ29u
dGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCB8ICAyICstCiAuLi4vYmxvY2svQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5jcHAgICAgICAgICAgfCAgNCArLQogLi4uL3RhYmxlL1RhYmxlRm9ybWF0
dGluZ1F1aXJrcy5jcHAgICAgICAgICAgIHwgIDIgKy0KIC4uLi9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dEJveC5jcHAgICB8IDE5IC0tLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaCAgfCAgMSAtCiAuLi4vTGF5b3V0Q29udGFpbmluZ0Js
b2NrQ2hhaW5JdGVyYXRvci5oICAgICAgfCAgNiArLS0KIDEyIGZpbGVzIGNoYW5nZWQsIDU2IGlu
c2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdTdGF0ZS5jcHAKaW5kZXggNGVjMjVmMWIzZDdkLi5mMTZjNWFiOTQxZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIEJv
eEdlb21ldHJ5JiBGb3JtYXR0aW5nU3RhdGU6OmJveEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0
Qm94KQogewogICAgIC8vIFNob3VsZCBuZXZlciBuZWVkIHRvIG11dGF0ZSBhIGRpc3BsYXkgYm94
IG91dHNpZGUgb2YgdGhlIGZvcm1hdHRpbmcgY29udGV4dCwgdW5sZXNzIHdlIGFyZSB0cnlpbmcK
ICAgICAvLyB0byBjb21wdXRlIHRoZSBzdGF0aWMgcG9zaXRpb24gb2YgYW4gb3V0LW9mLWZsb3cg
Ym94LgotICAgIEFTU0VSVCgobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIGlz
SW5saW5lRm9ybWF0dGluZ1N0YXRlKCkpIHx8ICZsYXlvdXRTdGF0ZSgpLmZvcm1hdHRpbmdTdGF0
ZUZvckZvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSkg
PT0gdGhpcyk7CisgICAgQVNTRVJUKChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkg
JiYgaXNJbmxpbmVGb3JtYXR0aW5nU3RhdGUoKSkgfHwgJmxheW91dFN0YXRlKCkuZm9ybWF0dGlu
Z1N0YXRlRm9yRm9ybWF0dGluZ0NvbnRleHQoRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdD
b250ZXh0Um9vdChsYXlvdXRCb3gpKSA9PSB0aGlzKTsKICAgICAvLyBBbm9ueW1vdXMgdGV4dCB3
cmFwcGVycyBkbyBub3QgbmVlZCB0byBjb21wdXRlIGJveCBnZW9tZXRyeS4gVGhleSBpbml0aWF0
ZSBpbmxpbmUgcnVucy4KICAgICBBU1NFUlQoIWxheW91dEJveC5pc0lubGluZVRleHRCb3goKSk7
CiAgICAgcmV0dXJuIGxheW91dFN0YXRlKCkuZW5zdXJlR2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuaAppbmRleCA3NGUzMDkzNzYz
MGMuLjdiZmYyNDhmMGU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUu
aApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogaW5saW5lIHZvaWQgRm9ybWF0dGluZ1N0YXRl
OjpzZXRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94
LCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMpCiB7
CiAgICAgQVNTRVJUKCFtX2ludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3hlcy5jb250YWlu
cygmbGF5b3V0Qm94KSk7Ci0gICAgQVNTRVJUKCZtX2xheW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0
ZUZvckZvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSkg
PT0gdGhpcyk7CisgICAgQVNTRVJUKCZtX2xheW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0ZUZvckZv
cm1hdHRpbmdDb250ZXh0KEZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nQ29udGV4dFJvb3Qo
bGF5b3V0Qm94KSkgPT0gdGhpcyk7CiAgICAgbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9y
Qm94ZXMuc2V0KCZsYXlvdXRCb3gsIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMpOwogfQogCkBA
IC05Nyw3ICs5Nyw3IEBAIGlubGluZSB2b2lkIEZvcm1hdHRpbmdTdGF0ZTo6Y2xlYXJJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzKGNvbnN0IEJveCYgbGF5b3V0Qm94CiAKIGlubGluZSBzdGQ6Om9w
dGlvbmFsPEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM+IEZvcm1hdHRpbmdTdGF0ZTo6aW50cmlu
c2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsK
LSAgICBBU1NFUlQoJm1fbGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ0Nv
bnRleHQobGF5b3V0Qm94LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpKSA9PSB0aGlzKTsKKyAgICBB
U1NFUlQoJm1fbGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ0NvbnRleHQo
Rm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRCb3gpKSA9PSB0
aGlzKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9y
Qm94ZXMuZmluZCgmbGF5b3V0Qm94KTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9pbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzRm9yQm94ZXMuZW5kKCkpCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAppbmRleCAxYzU1MzFhZmM3MjUuLjBjZjNjNjMz
NTU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCkBAIC0xNjgsMTAgKzE2
OCwxMiBAQCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplbnN1cmVJbmxpbmVG
b3JtYXR0aW5nU3RhdGUoY29uc3QgQ29udGFpbmVyQgogCiAgICAgICAgIC8vIE90aGVyd2lzZSwg
dGhlIGZvcm1hdHRpbmcgY29udGV4dCBpbmhlcml0cyB0aGUgZmxvYXRzIGZyb20gdGhlIHBhcmVu
dCBmb3JtYXR0aW5nIGNvbnRleHQuCiAgICAgICAgIC8vIEZpbmQgdGhlIGZvcm1hdHRpbmcgc3Rh
dGUgaW4gd2hpY2ggdGhpcyBmb3JtYXR0aW5nIHJvb3QgbGl2ZXMsIG5vdCB0aGUgb25lIGl0IGNy
ZWF0ZXMgYW5kIHVzZSBpdHMgZmxvYXRpbmcgc3RhdGUuCi0gICAgICAgIEFTU0VSVChmb3JtYXR0
aW5nQ29udGV4dFJvb3QuZm9ybWF0dGluZ0NvbnRleHRSb290KCkuZXN0YWJsaXNoZXNCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0KCkpOwotICAgICAgICBhdXRvJiBwYXJlbnRGb3JtYXR0aW5nU3RhdGUg
PSBmb3JtYXR0aW5nU3RhdGVGb3JCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRpbmdDb250
ZXh0Um9vdC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSk7Ci0gICAgICAgIGF1dG8mIHBhcmVudEZs
b2F0aW5nU3RhdGUgPSBwYXJlbnRGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpOwotICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KHBhcmVudEZsb2F0
aW5nU3RhdGUsICp0aGlzKTsKKyAgICAgICAgYXV0byBwYXJlbnRGb3JtYXR0aW5nU3RhdGUgPSBb
Jl0gKCkgLT4gRm9ybWF0dGluZ1N0YXRlJiB7CisgICAgICAgICAgICBhdXRvKiBhbmNlc3RvciA9
ICZmb3JtYXR0aW5nQ29udGV4dFJvb3QuY29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgICAgICBm
b3IgKDsgIWFuY2VzdG9yLT5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgYW5j
ZXN0b3IgPSAmYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7IH0KKyAgICAgICAgICAgIHJl
dHVybiBmb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nQ29udGV4dCgqYW5jZXN0b3IpOworICAg
ICAgICB9OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+
KHBhcmVudEZvcm1hdHRpbmdTdGF0ZSgpLmZsb2F0aW5nU3RhdGUoKSwgKnRoaXMpOwogICAgIH07
CiAKICAgICBpZiAoaXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKaW5kZXggN2Y4M2ExZmI3ZDVkLi40ZDE3
ZDhhZmMxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCkBAIC0xOTUs
OCArMTk1LDggQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0
aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb24KIAogICAgICAgICBhdXRvIG1hcmdp
bkJlZm9yZSA9IGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9yZSgpOwogICAgICAgICBhdXRvIG1hcmdp
bkFmdGVyID0gYm94R2VvbWV0cnkubWFyZ2luQWZ0ZXIoKTsKLSAgICAgICAgaWYgKGxheW91dEJv
eC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKS5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKSkgewotICAgICAgICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8Qmxv
Y2tGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRp
bmdDb250ZXh0KGxheW91dEJveC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSkpOworICAgICAgICBp
ZiAoRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRCb3gpLmVz
dGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKSB7CisgICAgICAgICAgICBhdXRvJiBm
b3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3Rh
dGUuZm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ0NvbnRleHQoRm9ybWF0dGluZ0NvbnRleHQ6
OmZvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRCb3gpKSk7CiAgICAgICAgICAgICBhdXRvIHZl
cnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ1N0YXRlLnVzZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRC
b3gpOwogICAgICAgICAgICAgbWFyZ2luQmVmb3JlID0gdmVydGljYWxNYXJnaW4ubm9uQ29sbGFw
c2VkVmFsdWVzLmJlZm9yZTsKICAgICAgICAgICAgIG1hcmdpbkFmdGVyID0gdmVydGljYWxNYXJn
aW4ubm9uQ29sbGFwc2VkVmFsdWVzLmFmdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcApp
bmRleCA1MzNiOWU4NThmNTMuLmVkMTYxOGZmZTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4
dC5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBjb25zdCBCb3hHZW9tZXRyeSYgRm9ybWF0dGluZ0Nv
bnRleHQ6Omdlb21ldHJ5Rm9yQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBzdGQ6OgogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWlzPEluaXRpYWxD
b250YWluaW5nQmxvY2s+KGxheW91dEJveCkgJiYgIWxheW91dEJveC5pc0ludGVncmF0aW9uUm9v
dCgpICYmICZsYXlvdXRCb3guZm9ybWF0dGluZ0NvbnRleHRSb290KCkgPT0gJnJvb3QoKSkgewor
ICAgICAgICBpZiAoIWlzPEluaXRpYWxDb250YWluaW5nQmxvY2s+KGxheW91dEJveCkgJiYgIWxh
eW91dEJveC5pc0ludGVncmF0aW9uUm9vdCgpICYmICZmb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5
b3V0Qm94KSA9PSAmcm9vdCgpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBub24tZXNj
YXBlIGNhc2Ugb2YgYWNjZXNzaW5nIGEgYm94J3MgZ2VvbWV0cnkgaW5mb3JtYXRpb24gd2l0aGlu
IHRoZSBzYW1lIGZvcm1hdHRpbmcgY29udGV4dC4KICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CkBAIC0yMDAsNyArMjAwLDcgQEAgY29uc3QgQm94R2VvbWV0cnkmIEZvcm1hdHRp
bmdDb250ZXh0OjpnZW9tZXRyeUZvckJveChjb25zdCBCb3gmIGxheW91dEJveCwgc3RkOjoKICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugd2hlbiB0aGUgdGFibGUgZm9ybWF0dGluZyBy
b290IGNvbGxlY3RzIGdlb21ldHJ5IGluZm9ybWF0aW9uIGZyb20gdGhlIGNlbGwncwogICAgICAg
ICAgICAgLy8gZm9ybWF0dGluZyBjb250ZXh0IHRvIGJlIGFibGUgdG8gZGV0ZXJtaW5lIHdpZHRo
L2hlaWdodC4gc2VlIHNob3VsZElnbm9yZUNoaWxkQ29udGVudFZlcnRpY2FsTWFyZ2luCiAgICAg
ICAgICAgICBBU1NFUlQocm9vdCgpLmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5nQ29udGV4dCgp
KTsKLSAgICAgICAgICAgIHJldHVybiAmbGF5b3V0Qm94LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgp
LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpID09ICZyb290KCk7CisgICAgICAgICAgICByZXR1cm4g
JmZvcm1hdHRpbmdDb250ZXh0Um9vdChmb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0Qm94KSkg
PT0gJnJvb3QoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgqZXNjYXBlUmVhc29uID09IEVz
Y2FwZVJlYXNvbjo6T3V0T2ZGbG93Qm94TmVlZHNJbkZsb3dHZW9tZXRyeSkgewpAQCAtMjE3LDgg
KzIxNyw4IEBAIGNvbnN0IEJveEdlb21ldHJ5JiBGb3JtYXR0aW5nQ29udGV4dDo6Z2VvbWV0cnlG
b3JCb3goY29uc3QgQm94JiBsYXlvdXRCb3gsIHN0ZDo6CiAgICAgICAgICAgICBpZiAobGF5b3V0
Qm94LmlzSW50ZWdyYXRpb25Sb290KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0Um9vdCA9IGxheW91dEJveC5mb3Jt
YXR0aW5nQ29udGV4dFJvb3QoKTsKLSAgICAgICAgICAgIHJldHVybiAmZm9ybWF0dGluZ0NvbnRl
eHRSb290ID09ICZyb290KCkgfHwgJmZvcm1hdHRpbmdDb250ZXh0Um9vdCA9PSAmcm9vdCgpLmZv
cm1hdHRpbmdDb250ZXh0Um9vdCgpOworICAgICAgICAgICAgYXV0byYgZm9ybWF0dGluZ0NvbnRl
eHRSb290Rm9yQm94ID0gZm9ybWF0dGluZ0NvbnRleHRSb290KGxheW91dEJveCk7CisgICAgICAg
ICAgICByZXR1cm4gJmZvcm1hdHRpbmdDb250ZXh0Um9vdEZvckJveCA9PSAmcm9vdCgpIHx8ICZm
b3JtYXR0aW5nQ29udGV4dFJvb3RGb3JCb3ggPT0gJmZvcm1hdHRpbmdDb250ZXh0Um9vdChyb290
KCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCplc2NhcGVSZWFzb24gPT0gRXNjYXBlUmVh
c29uOjpGaW5kRml4ZWRIZWlnaHRBbmNlc3RvclF1aXJrKSB7CkBAIC0yMjcsMTIgKzIyNywxMiBA
QCBjb25zdCBCb3hHZW9tZXRyeSYgRm9ybWF0dGluZ0NvbnRleHQ6Omdlb21ldHJ5Rm9yQm94KGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBzdGQ6OgogICAgICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IHRv
IGNoZWNrIGlmIHRoZSB0YXJnZXRGb3JtYXR0aW5nUm9vdCBpcyBhbiBhbmNlc3RvciBmb3JtYXR0
aW5nIHJvb3QuCiAgICAgICAgICAgICBpZiAoaXM8SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4obGF5
b3V0Qm94KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGF1dG8m
IHRhcmdldEZvcm1hdHRpbmdSb290ID0gbGF5b3V0Qm94LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgp
OwotICAgICAgICAgICAgYXV0byogYW5jZXN0b3JGb3JtYXR0aW5nQ29udGV4dFJvb3QgPSAmcm9v
dCgpLmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpOworICAgICAgICAgICAgYXV0byYgdGFyZ2V0Rm9y
bWF0dGluZ1Jvb3QgPSBmb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0Qm94KTsKKyAgICAgICAg
ICAgIGF1dG8qIGFuY2VzdG9yRm9ybWF0dGluZ0NvbnRleHRSb290ID0gJmZvcm1hdHRpbmdDb250
ZXh0Um9vdChyb290KCkpOwogICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAg
ICAgICBpZiAoJnRhcmdldEZvcm1hdHRpbmdSb290ID09IGFuY2VzdG9yRm9ybWF0dGluZ0NvbnRl
eHRSb290KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICBhbmNlc3RvckZvcm1hdHRpbmdDb250ZXh0Um9vdCA9ICZhbmNlc3RvckZvcm1hdHRpbmdDb250
ZXh0Um9vdC0+Zm9ybWF0dGluZ0NvbnRleHRSb290KCk7CisgICAgICAgICAgICAgICAgYW5jZXN0
b3JGb3JtYXR0aW5nQ29udGV4dFJvb3QgPSAmRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdD
b250ZXh0Um9vdCgqYW5jZXN0b3JGb3JtYXR0aW5nQ29udGV4dFJvb3QpOwogICAgICAgICAgICAg
ICAgIGlmIChpczxJbml0aWFsQ29udGFpbmluZ0Jsb2NrPigqYW5jZXN0b3JGb3JtYXR0aW5nQ29u
dGV4dFJvb3QpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IH0KQEAgLTI0Myw3ICsyNDMsNyBAQCBjb25zdCBCb3hHZW9tZXRyeSYgRm9ybWF0dGluZ0NvbnRl
eHQ6Omdlb21ldHJ5Rm9yQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBzdGQ6OgogICAgICAgICAg
ICAgLy8gVGFibGVzIGFyZSB3cmFwcGVkIGluIGEgMiBsZXZlbCBmb3JtYXR0aW5nIGNvbnRleHQg
c3RydWN0dXJlLiBBIDx0YWJsZT4gZWxlbWVudCBpbml0aWF0ZXMgYSBibG9jayBmb3JtYXR0aW5n
IGNvbnRleHQgZm9yIGl0cyBwcmluY2lwYWwgdGFibGUgYm94CiAgICAgICAgICAgICAvLyB3aGVy
ZSB0aGUgY2FwdGlvbiBhbmQgdGhlIHRhYmxlIGNvbnRlbnQgbGl2ZS4gSXQgYWxzbyBpbml0aWF0
ZXMgYSB0YWJsZSB3cmFwcGVyIGJveCB3aGljaCBlc3RhYmxpc2hlcyB0aGUgdGFibGUgZm9ybWF0
dGluZyBjb250ZXh0LgogICAgICAgICAgICAgLy8gSW4gbWFueSBjYXNlcyB0aGUgVEZDIG5lZWRz
IGFjY2VzcyB0byB0aGUgcGFyZW50IChnZW5lcmF0ZWQpIEJGQy4KLSAgICAgICAgICAgIHJldHVy
biAmbGF5b3V0Qm94ID09ICZyb290KCkuZm9ybWF0dGluZ0NvbnRleHRSb290KCk7CisgICAgICAg
ICAgICByZXR1cm4gJmxheW91dEJveCA9PSAmZm9ybWF0dGluZ0NvbnRleHRSb290KHJvb3QoKSk7
CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI2OSwxOSAr
MjY5LDQxIEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RPdXRPZkZsb3dEZXNjZW5k
YW50c0lmTmVlZGVkKCkKICAgICBmb3IgKGF1dG8mIGRlc2NlbmRhbnQgOiBkZXNjZW5kYW50c09m
VHlwZTxCb3g+KHJvb3QpKSB7CiAgICAgICAgIGlmICghZGVzY2VuZGFudC5pc091dE9mRmxvd1Bv
c2l0aW9uZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoJmRlc2NlbmRh
bnQuZm9ybWF0dGluZ0NvbnRleHRSb290KCkgIT0gJnJvb3QpCisgICAgICAgIGF1dG8gbmVhcmVz
dEZvcm1hdHRpbmdDb250ZXh0Um9vdCA9IFsmXSB7CisgICAgICAgICAgICBhdXRvKiBhbmNlc3Rv
ciA9ICZkZXNjZW5kYW50LmNvbnRhaW5pbmdCbG9jaygpOworICAgICAgICAgICAgZm9yICg7ICFh
bmNlc3Rvci0+ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCk7IGFuY2VzdG9yID0g
JmFuY2VzdG9yLT5jb250YWluaW5nQmxvY2soKSkgeyB9CisgICAgICAgICAgICByZXR1cm4gYW5j
ZXN0b3I7CisgICAgICAgIH07CisgICAgICAgIGlmIChuZWFyZXN0Rm9ybWF0dGluZ0NvbnRleHRS
b290KCkgIT0gJnJvb3QpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgZm9ybWF0dGlu
Z1N0YXRlKCkuYWRkT3V0T2ZGbG93Qm94KGRlc2NlbmRhbnQpOwogICAgIH0KIH0KIAogI2lmbmRl
ZiBOREVCVUcKK2NvbnN0IENvbnRhaW5lckJveCYgRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRp
bmdDb250ZXh0Um9vdChjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICAvLyBXZSBzaG91bGQg
bmV2ZXIgbmVlZCB0byBhc2sgdGhpcyBxdWVzdGlvbiBvbiB0aGUgSUNCLgorICAgIEFTU0VSVCgh
aXM8SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4obGF5b3V0Qm94KSk7CisgICAgLy8gQSBib3ggbGl2
ZXMgaW4gdGhlIHNhbWUgZm9ybWF0dGluZyBjb250ZXh0IGFzIGl0cyBjb250YWluaW5nIGJsb2Nr
IHVubGVzcyB0aGUgY29udGFpbmluZyBibG9jayBlc3RhYmxpc2hlcyBhIGZvcm1hdHRpbmcgY29u
dGV4dC4KKyAgICAvLyBIb3dldmVyIHJlbGF0aXZlbHkgcG9zaXRpb25lZCAoaW5mbG93KSBpbmxp
bmUgY29udGFpbmVyIGxpdmVzIGluIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgd2hlcmUgaXRzIHBh
cmVudCBsaXZlcyB1bmxlc3MKKyAgICAvLyB0aGUgcGFyZW50IGVzdGFibGlzaGVzIGEgZm9ybWF0
dGluZyBjb250ZXh0LgorICAgIC8vCisgICAgLy8gPGRpdiBpZD1vdXRlciBzdHlsZT0icG9zaXRp
b246IGFic29sdXRlIj48ZGl2IGlkPWlubmVyPjxzcGFuIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmUiPmNvbnRlbnQ8L3NwYW4+PC9kaXY+PC9kaXY+CisgICAgLy8gV2hpbGUgdGhlIHJlbGF0aXZl
bHkgcG9zaXRpb25lZCBpbmxpbmUgY29udGFpbmVyIChzcGFuKSBpcyBwbGFjZWQgcmVsYXRpdmUg
dG8gaXRzIGNvbnRhaW5pbmcgYmxvY2sgIm91dGVyIiwgaXQgbGl2ZXMgaW4gdGhlIGlubGluZQor
ICAgIC8vIGZvcm1hdHRpbmcgY29udGV4dCBlc3RhYmxpc2hlZCBieSAiaW5uZXIiLgorICAgIGF1
dG8mIGFuY2VzdG9yID0gbGF5b3V0Qm94LmlzSW5saW5lTGV2ZWxCb3goKSAmJiBsYXlvdXRCb3gu
aXNJbkZsb3dQb3NpdGlvbmVkKCkgPyBsYXlvdXRCb3gucGFyZW50KCkgOiBsYXlvdXRCb3guY29u
dGFpbmluZ0Jsb2NrKCk7CisgICAgaWYgKGFuY2VzdG9yLmVzdGFibGlzaGVzRm9ybWF0dGluZ0Nv
bnRleHQoKSkKKyAgICAgICAgcmV0dXJuIGFuY2VzdG9yOworICAgIHJldHVybiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QoYW5jZXN0b3IpOworfQorCiB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojp2YWxp
ZGF0ZUdlb21ldHJ5Q29uc3RyYWludHNBZnRlckxheW91dCgpIGNvbnN0CiB7Ci0gICAgYXV0byYg
Zm9ybWF0dGluZ0NvbnRleHRSb290ID0gcm9vdCgpOworICAgIGF1dG8mIHJvb3QgPSB0aGlzLT5y
b290KCk7CiAgICAgLy8gRklYTUU6IGFkZCBhIGRlc2NlbmRhbnRzT2ZUeXBlPD4gZmxhdm9yIHRo
YXQgc3RvcHMgYXQgbmVzdGVkIGZvcm1hdHRpbmcgY29udGV4dHMKLSAgICBmb3IgKGF1dG8mIGxh
eW91dEJveCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEJveD4oZm9ybWF0dGluZ0NvbnRleHRSb290KSkg
ewotICAgICAgICBpZiAoJmxheW91dEJveC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSAhPSAmZm9y
bWF0dGluZ0NvbnRleHRSb290KQorICAgIGZvciAoYXV0byYgbGF5b3V0Qm94IDogZGVzY2VuZGFu
dHNPZlR5cGU8Qm94Pihyb290KSkgeworICAgICAgICBpZiAoJmZvcm1hdHRpbmdDb250ZXh0Um9v
dChsYXlvdXRCb3gpICE9ICZyb290KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGF1
dG8mIGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5ID0gZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94LmNv
bnRhaW5pbmdCbG9jaygpKTsKICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBnZW9tZXRyeUZv
ckJveChsYXlvdXRCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDI4NjFmM2VhZDRi
Yy4uNjc0ODBmOTFiYzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCkBAIC04Miw2ICs4Miwx
MCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBpc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSAmJiByb290KCku
aXNUYWJsZVdyYXBwZXJCb3goKTsgfQogICAgIGJvb2wgaXNGbGV4Rm9ybWF0dGluZ0NvbnRleHQo
KSBjb25zdCB7IHJldHVybiByb290KCkuZXN0YWJsaXNoZXNGbGV4Rm9ybWF0dGluZ0NvbnRleHQo
KTsgfQogCisjaWZuZGVmIE5ERUJVRworICAgIHN0YXRpYyBjb25zdCBDb250YWluZXJCb3gmIGZv
cm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBCb3gmKTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAg
ICAgRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4
dFJvb3QsIEZvcm1hdHRpbmdTdGF0ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAK
aW5kZXggZjgwMDhhMWNkYmVjLi5iZWI0MjEwYzk0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9t
ZXRyeS5jcHAKQEAgLTc5NCw3ICs3OTQsNyBAQCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIEZvcm1h
dHRpbmdHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyhjb25zdCBCb3gmIGxheW91dEJveAogICAg
ICAgICAgICAgYXV0byBib3R0b20gPSBCb3hHZW9tZXRyeTo6bWFyZ2luQm94UmVjdChmb3JtYXR0
aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KCpkb2N1bWVudEJveC5sYXN0SW5GbG93Q2hpbGQo
KSkpLmJvdHRvbSgpOwogICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgKHF1aXJrPykg
YmVoYXZpb3Igc2luY2UgdGhlIGRvY3VtZW50IGJveCBpcyBub3QgYSBmb3JtYXR0aW5nIGNvbnRl
eHQgcm9vdCBhbmQKICAgICAgICAgICAgIC8vIGFsbCB0aGUgZmxvYXQgYm94ZXMgZW5kIHVwIGF0
IHRoZSBJQ0IgbGV2ZWwuCi0gICAgICAgICAgICBhdXRvJiBpbml0aWFsQ29udGFpbmluZ0Jsb2Nr
ID0gZG9jdW1lbnRCb3guZm9ybWF0dGluZ0NvbnRleHRSb290KCk7CisgICAgICAgICAgICBhdXRv
JiBpbml0aWFsQ29udGFpbmluZ0Jsb2NrID0gZG9jdW1lbnRCb3guaW5pdGlhbENvbnRhaW5pbmdC
bG9jaygpOwogICAgICAgICAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRl
eHQgeyBmb3JtYXR0aW5nQ29udGV4dCgpLCBsYXlvdXRTdGF0ZSgpLmZvcm1hdHRpbmdTdGF0ZUZv
ckZvcm1hdHRpbmdDb250ZXh0KGluaXRpYWxDb250YWluaW5nQmxvY2spLmZsb2F0aW5nU3RhdGUo
KSB9OwogICAgICAgICAgICAgaWYgKGF1dG8gZmxvYXRCb3R0b20gPSBmbG9hdGluZ0NvbnRleHQu
Ym90dG9tKCkpIHsKICAgICAgICAgICAgICAgICBib3R0b20gPSBzdGQ6Om1heDxMYXlvdXRVbml0
PigqZmxvYXRCb3R0b20sIGJvdHRvbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmNwcAppbmRleCA2MDRhZDBlZTQ4MmYuLjUzZTYzMDg3NTlhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yMTYsNyAr
MjE2LDcgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Ojp1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2kKIAogICAgIGF1dG8gbG9naWNhbFRvcElu
Rm9ybWF0dGluZ0NvbnRleHRSb290Q29vcmRpbmF0ZSA9IFsmXSAoYXV0byYgZmxvYXRBdm9pZGVy
KSB7CiAgICAgICAgIGF1dG8gdG9wID0gQm94R2VvbWV0cnk6OmJvcmRlckJveFRvcChnZW9tZXRy
eUZvckJveChmbG9hdEF2b2lkZXIpKTsKLSAgICAgICAgZm9yIChhdXRvJiBhbmNlc3RvciA6IGNv
bnRhaW5pbmdCbG9ja0NoYWluV2l0aGluRm9ybWF0dGluZ0NvbnRleHQoZmxvYXRBdm9pZGVyKSkK
KyAgICAgICAgZm9yIChhdXRvJiBhbmNlc3RvciA6IGNvbnRhaW5pbmdCbG9ja0NoYWluV2l0aGlu
Rm9ybWF0dGluZ0NvbnRleHQoZmxvYXRBdm9pZGVyLCByb290KCkpKQogICAgICAgICAgICAgdG9w
ICs9IEJveEdlb21ldHJ5Ojpib3JkZXJCb3hUb3AoZ2VvbWV0cnlGb3JCb3goYW5jZXN0b3IpKTsK
ICAgICAgICAgcmV0dXJuIHRvcDsKICAgICB9OwpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6dXNlZEF2YWlsYWJsZVdp
ZHRoRm9yRmxvYXRBdm9pCiAgICAgICAgIGlmICghZmxvYXRDb25zdHJhaW50cy5sZWZ0ICYmICFm
bG9hdENvbnN0cmFpbnRzLnJpZ2h0KQogICAgICAgICAgICAgcmV0dXJuIEZsb2F0aW5nQ29udGV4
dDo6Q29uc3RyYWludHMgeyB9OwogICAgICAgICBhdXRvIG9mZnNldCA9IExheW91dFNpemUgeyB9
OwotICAgICAgICBmb3IgKGF1dG8mIGFuY2VzdG9yIDogY29udGFpbmluZ0Jsb2NrQ2hhaW5XaXRo
aW5Gb3JtYXR0aW5nQ29udGV4dChsYXlvdXRCb3gpKQorICAgICAgICBmb3IgKGF1dG8mIGFuY2Vz
dG9yIDogY29udGFpbmluZ0Jsb2NrQ2hhaW5XaXRoaW5Gb3JtYXR0aW5nQ29udGV4dChsYXlvdXRC
b3gsIHJvb3QoKSkpCiAgICAgICAgICAgICBvZmZzZXQgKz0gdG9MYXlvdXRTaXplKEJveEdlb21l
dHJ5Ojpib3JkZXJCb3hUb3BMZWZ0KGdlb21ldHJ5Rm9yQm94KGFuY2VzdG9yKSkpOwogICAgICAg
ICBpZiAoZmxvYXRDb25zdHJhaW50cy5sZWZ0KQogICAgICAgICAgICAgZmxvYXRDb25zdHJhaW50
cy5sZWZ0ID0gUG9pbnRJbkNvbnRleHRSb290IHsgKmZsb2F0Q29uc3RyYWludHMubGVmdCAtIG9m
ZnNldCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3MuY3BwCmlu
ZGV4IDI0ZTI0NDFhZGQ4Yy4uYTIzYzg5NmNmN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1F1aXJrcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9U
YWJsZUZvcm1hdHRpbmdRdWlya3MuY3BwCkBAIC02MCw3ICs2MCw3IEBAIExheW91dFVuaXQgVGFi
bGVGb3JtYXR0aW5nUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dp
dGhGaXhlZEhlCiAgICAgLy8gVGhlICJsZXQncyBmaW5kIHRoZSBuZWFyZXN0IGFuY2VzdG9yIHdp
dGggZml4ZWQgaGVpZ2h0IHRvIHJlc29sdmUgcGVyY2VudCBoZWlnaHQiIHF1aXJrIGlzIGxpbWl0
ZWQgdG8gdGhlIHRhYmxlIGZvcm1hdHRpbmcKICAgICAvLyBjb250ZXh0LiBJZiB3ZSBjYW4ndCBy
ZXNvbHZlIGl0IHdpdGhpbiB0aGUgdGFibGUgc3VidHJlZSwgd2UgZGVmYXVsdCBpdCB0byAwLgog
ICAgIC8vIGUuZyA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMHB4Ij48dGFibGU+PHRyPjx0ZCBzdHls
ZT0iaGVpZ2h0OiAxMDAlIj48L3RkPjwvdHI+PC90YWJsZT48L2Rpdj4gaXMgcmVzb2x2ZWQgdG8g
MHB4LgotICAgIGZvciAoYXV0byYgYW5jZXN0b3IgOiBjb250YWluaW5nQmxvY2tDaGFpbldpdGhp
bkZvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveCkpIHsKKyAgICBmb3IgKGF1dG8mIGFuY2VzdG9y
IDogY29udGFpbmluZ0Jsb2NrQ2hhaW5XaXRoaW5Gb3JtYXR0aW5nQ29udGV4dChsYXlvdXRCb3gs
IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpKSkgewogICAgICAgICBhdXRvIGhlaWdodCA9IGFu
Y2VzdG9yLnN0eWxlKCkubG9naWNhbEhlaWdodCgpOwogICAgICAgICBpZiAoaGVpZ2h0LmlzRml4
ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgaGVpZ2h0LnZhbHVlKCkgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4
IGYzODViY2RjNTlmYS4uMjNkOWFlYzFjN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKQEAgLTI0MiwyNSArMjQyLDYgQEAgY29uc3QgQ29u
dGFpbmVyQm94JiBCb3g6OmNvbnRhaW5pbmdCbG9jaygpIGNvbnN0CiAgICAgcmV0dXJuIGluaXRp
YWxDb250YWluaW5nQmxvY2soKTsKIH0KIAotY29uc3QgQ29udGFpbmVyQm94JiBCb3g6OmZvcm1h
dHRpbmdDb250ZXh0Um9vdCgpIGNvbnN0Ci17Ci0gICAgLy8gRmluZGluZyB0aGUgY29udGV4dCBy
b290IGJ5IHRyYXZlcnNpbmcgdGhlIHRyZWUgZHVyaW5nIHRyZWUgY29uc3RydWN0aW9uIGNvdWxk
IHByb3ZpZGUgaW5jb3JyZWN0IHJlc3VsdC4KLSAgICBBU1NFUlQoIVBoYXNlOjppc0luVHJlZUJ1
aWxkaW5nKCkpOwotICAgIC8vIFdlIHNob3VsZCBuZXZlciBuZWVkIHRvIGFzayB0aGlzIHF1ZXN0
aW9uIG9uIHRoZSBJQ0IuCi0gICAgQVNTRVJUKCFpczxJbml0aWFsQ29udGFpbmluZ0Jsb2NrPigq
dGhpcykpOwotICAgIC8vIEEgYm94IGxpdmVzIGluIHRoZSBzYW1lIGZvcm1hdHRpbmcgY29udGV4
dCBhcyBpdHMgY29udGFpbmluZyBibG9jayB1bmxlc3MgdGhlIGNvbnRhaW5pbmcgYmxvY2sgZXN0
YWJsaXNoZXMgYSBmb3JtYXR0aW5nIGNvbnRleHQuCi0gICAgLy8gSG93ZXZlciByZWxhdGl2ZWx5
IHBvc2l0aW9uZWQgKGluZmxvdykgaW5saW5lIGNvbnRhaW5lciBsaXZlcyBpbiB0aGUgZm9ybWF0
dGluZyBjb250ZXh0IHdoZXJlIGl0cyBwYXJlbnQgbGl2ZXMgdW5sZXNzCi0gICAgLy8gdGhlIHBh
cmVudCBlc3RhYmxpc2hlcyBhIGZvcm1hdHRpbmcgY29udGV4dC4KLSAgICAvLwotICAgIC8vIDxk
aXYgaWQ9b3V0ZXIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+PGRpdiBpZD1pbm5lcj48c3Bh
biBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlIj5jb250ZW50PC9zcGFuPjwvZGl2PjwvZGl2Pgot
ICAgIC8vIFdoaWxlIHRoZSByZWxhdGl2ZWx5IHBvc2l0aW9uZWQgaW5saW5lIGNvbnRhaW5lciAo
c3BhbikgaXMgcGxhY2VkIHJlbGF0aXZlIHRvIGl0cyBjb250YWluaW5nIGJsb2NrICJvdXRlciIs
IGl0IGxpdmVzIGluIHRoZSBpbmxpbmUKLSAgICAvLyBmb3JtYXR0aW5nIGNvbnRleHQgZXN0YWJs
aXNoZWQgYnkgImlubmVyIi4KLSAgICBhdXRvJiBhbmNlc3RvciA9IGlzSW5saW5lTGV2ZWxCb3go
KSAmJiBpc0luRmxvd1Bvc2l0aW9uZWQoKSA/IHBhcmVudCgpIDogY29udGFpbmluZ0Jsb2NrKCk7
Ci0gICAgaWYgKGFuY2VzdG9yLmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSkKLSAgICAg
ICAgcmV0dXJuIGFuY2VzdG9yOwotICAgIHJldHVybiBhbmNlc3Rvci5mb3JtYXR0aW5nQ29udGV4
dFJvb3QoKTsKLX0KLQogY29uc3QgSW5pdGlhbENvbnRhaW5pbmdCbG9jayYgQm94Ojppbml0aWFs
Q29udGFpbmluZ0Jsb2NrKCkgY29uc3QKIHsKICAgICBpZiAoaXM8SW5pdGlhbENvbnRhaW5pbmdC
bG9jaz4oKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRC
b3guaAppbmRleCA3NWUwYzA1Mjc5YmMuLjhjZWJlMDAyNTRkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKQEAgLTkzLDcgKzkzLDYgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpIGNvbnN0IHsgcmV0
dXJuIGlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCk7IH0K
IAogICAgIGNvbnN0IENvbnRhaW5lckJveCYgY29udGFpbmluZ0Jsb2NrKCkgY29uc3Q7Ci0gICAg
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QoKSBjb25zdDsKICAgICBj
b25zdCBJbml0aWFsQ29udGFpbmluZ0Jsb2NrJiBpbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgY29u
c3Q7CiAKICAgICBib29sIGlzQ29udGFpbmluZ0Jsb2NrRm9ySW5GbG93KCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluaW5n
QmxvY2tDaGFpbkl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yLmgKaW5kZXggMTQzNzQzZmJlMzVjLi40
MGZhMGI1YzU3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yLmgK
QEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKIAogTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5J
dGVyYXRvckFkYXB0ZXIgY29udGFpbmluZ0Jsb2NrQ2hhaW4oY29uc3QgQm94Jik7CiBMYXlvdXRD
b250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yQWRhcHRlciBjb250YWluaW5nQmxvY2tDaGFpbihj
b25zdCBCb3gmLCBjb25zdCBDb250YWluZXJCb3gmIHN0YXlXaXRoaW4pOwotTGF5b3V0Q29udGFp
bmluZ0Jsb2NrQ2hhaW5JdGVyYXRvckFkYXB0ZXIgY29udGFpbmluZ0Jsb2NrQ2hhaW5XaXRoaW5G
b3JtYXR0aW5nQ29udGV4dChjb25zdCBCb3gmKTsKK0xheW91dENvbnRhaW5pbmdCbG9ja0NoYWlu
SXRlcmF0b3JBZGFwdGVyIGNvbnRhaW5pbmdCbG9ja0NoYWluV2l0aGluRm9ybWF0dGluZ0NvbnRl
eHQoY29uc3QgQm94JiwgY29uc3QgQ29udGFpbmVyQm94JiByb290KTsKIAogaW5saW5lIExheW91
dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3I6OkxheW91dENvbnRhaW5pbmdCbG9ja0NoYWlu
SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyQm94KiBjdXJyZW50KQogICAgIDogbV9jdXJyZW50KGN1
cnJlbnQpCkBAIC04OSw5ICs4OSw5IEBAIGlubGluZSBMYXlvdXRDb250YWluaW5nQmxvY2tDaGFp
bkl0ZXJhdG9yQWRhcHRlciBjb250YWluaW5nQmxvY2tDaGFpbihjb25zdCBCb3gmCiAgICAgcmV0
dXJuIExheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3JBZGFwdGVyKGxheW91dEJveC5j
b250YWluaW5nQmxvY2soKSwgJnN0YXlXaXRoaW4pOwogfQogCi1pbmxpbmUgTGF5b3V0Q29udGFp
bmluZ0Jsb2NrQ2hhaW5JdGVyYXRvckFkYXB0ZXIgY29udGFpbmluZ0Jsb2NrQ2hhaW5XaXRoaW5G
b3JtYXR0aW5nQ29udGV4dChjb25zdCBCb3gmIGxheW91dEJveCkKK2lubGluZSBMYXlvdXRDb250
YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yQWRhcHRlciBjb250YWluaW5nQmxvY2tDaGFpbldpdGhp
bkZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBDb250YWluZXJC
b3gmIHJvb3QpCiB7Ci0gICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9ja0NoYWluKGxheW91dEJveCwg
bGF5b3V0Qm94LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpKTsKKyAgICByZXR1cm4gY29udGFpbmlu
Z0Jsb2NrQ2hhaW4obGF5b3V0Qm94LCByb290KTsKIH0KIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>