<?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>248854</bug_id>
          
          <creation_ts>2022-12-06 19:48:33 -0800</creation_ts>
          <short_desc>[leading-trim][IFC] Add support for nested block containers with leading-trim: end</short_desc>
          <delta_ts>2023-01-13 09:28:12 -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>
          
          <blocked>245599</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</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>1917118</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-12-06 19:48:33 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1917122</commentid>
    <comment_count>1</comment_count>
      <attachid>463913</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-12-06 20:52:58 -0800</bug_when>
    <thetext>Created attachment 463913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1917212</commentid>
    <comment_count>2</comment_count>
      <attachid>463915</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-12-07 07:16:47 -0800</bug_when>
    <thetext>Created attachment 463915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1917216</commentid>
    <comment_count>3</comment_count>
      <attachid>463915</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-12-07 07:25:18 -0800</bug_when>
    <thetext>Comment on attachment 463915
Patch

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

&gt; Source/WebCore/rendering/RenderBlockFlow.cpp:725
&gt; +    if (childrenInline()) {
&gt; +        setLeadingTrimForSubtree(this);
&gt; +        layoutInlineChildren(relayoutChildren, repaintLogicalTop, repaintLogicalBottom);
&gt; +        adjustLeadingTrimAfterLayout();
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    // With block children, there&apos;s no way to tell what the last formatted line is until after we finished laying out the subtree.
&gt; +    setLeadingTrimForSubtree();
&gt; +    layoutBlockChildren(relayoutChildren, maxFloatLogicalBottom);
&gt; +    adjustLeadingTrimAfterLayout();

setLeadingTrimForSubtree(this) vs setLeadingTrimForSubtree() is but subtle.

Maybe a stack helper (LeadingTrimmer!) could make this bit less intrusive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1917217</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-12-07 07:27:57 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; Comment on attachment 463915 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=463915&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBlockFlow.cpp:725
&gt; &gt; +    if (childrenInline()) {
&gt; &gt; +        setLeadingTrimForSubtree(this);
&gt; &gt; +        layoutInlineChildren(relayoutChildren, repaintLogicalTop, repaintLogicalBottom);
&gt; &gt; +        adjustLeadingTrimAfterLayout();
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    // With block children, there&apos;s no way to tell what the last formatted line is until after we finished laying out the subtree.
&gt; &gt; +    setLeadingTrimForSubtree();
&gt; &gt; +    layoutBlockChildren(relayoutChildren, maxFloatLogicalBottom);
&gt; &gt; +    adjustLeadingTrimAfterLayout();
&gt; 
&gt; setLeadingTrimForSubtree(this) vs setLeadingTrimForSubtree() is but subtle.
&gt; 
&gt; Maybe a stack helper (LeadingTrimmer!) could make this bit less intrusive.
yeah, good point!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1917297</commentid>
    <comment_count>5</comment_count>
      <attachid>463925</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-12-07 11:01:00 -0800</bug_when>
    <thetext>Created attachment 463925
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1917410</commentid>
    <comment_count>6</comment_count>
      <attachid>463929</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-12-07 16:45:25 -0800</bug_when>
    <thetext>Created attachment 463929
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1917420</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-12-07 17:23:48 -0800</bug_when>
    <thetext>Committed 257526@main (be3537314eb4): &lt;https://commits.webkit.org/257526@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 463929.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1917421</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-12-07 17:24:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/103097237&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463913</attachid>
            <date>2022-12-06 20:52:58 -0800</date>
            <delta_ts>2022-12-07 07:16:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-248854-20221206205257.patch</filename>
            <type>text/plain</type>
            <size>20433</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAwNWZjNzRkZWYxNTY0NGI2NzRiNWZiZWUwNTc0ZGYzZWIwMGFlOTQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgNiBEZWMgMjAyMiAxOTo0ODo0OSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFtsZWFkaW5n
LXRyaW1dW0lGQ10gQWRkIHN1cHBvcnQgZm9yIG5lc3RlZCBibG9jayBjb250YWluZXJzCiB3aXRo
IGxlYWRpbmctdHJpbTogZW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNDg4NTQKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBwYXRjaCBhZGRzIG11
bHRpLXBhc3MgaW5saW5lIGxheW91dCB0byBzdXBwb3J0IGxhc3QgZm9ybWF0dGVkIGxpbmUgdHJp
bW1pbmcuCgoibGVhZGluZy10cmltOiBlbmQiIHRyaW1zIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGxh
c3QgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dC4KV2hpbGUgdGhpcyBwcm9wZXJ0eSBpcyBub3Qg
aW5oZXJpdGVkLCBpdCBpcyBwcm9wYWdhdGVkIHRocm91Z2ggbmVzdGVkIGJsb2NrIGNvbnRhaW5l
cnMuCldpdGggbmVzdGVkIGJsb2NrIGNvbnRhaW5lcnMsIHdlIGNhbiBlbmQgdXAgd2l0aCBtdWx0
aXBsZSBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0cyBlLmcuCjxkaXYgc3R5bGU9ImxlYWRpbmct
dHJpbTogZW5kIj4KICA8ZGl2PgogICAgPGRpdj5maXJzdCBsaW5lPC9kaXY+CiAgPC9kaXY+CiAg
PGRpdj4gbGFzdCBsaW5lPC9kaXY+CjwvZGl2PgpUaGUgbGFzdCBmb3JtYXR0ZWQgbGluZSBjYW4g
bm90IGJlIGlkZW50aWZpZWQgdW50aWwgYWZ0ZXIgZmluaXNoaW5nIHRoZSBsYXlvdXQgcHJvY2Vz
cyBvbiB0aGUgZW50aXJlCnN1YnRyZWUgd2hlcmUgdGhlIHByb3BlcnR5IGlzIHNldC4KSW4gdGhp
cyBwYXRjaCwgd2UgcnVuIGFuIGFkZGl0aW9uYWwgaW5saW5lIGxheW91dCBvbiB0aGUgbGFzdCBm
b3JtYXR0aW5nIGNvbnRleHQgd2l0aCB0aGUgbGVhZGluZyB0cmltIChlbmQpIHNldC4KCjEuIHNl
dCAidHJpbSBzdGFydCIgKHdoZW4gYXBwbGljYWJsZSkgb24gdGhlIGxheW91dCBzdGF0ZS4KMi4g
cmVzZXQgdGhlICJ0cmltIHN0YXJ0IiBzdGF0ZSBhZnRlciB0cmltbWluZyB0aGUgZmlyc3QgbGlu
ZSAoc28gdGhhdCBzdWJzZXF1ZW50IElGQ3MgZG9uJ3QgYXBwbHkgInRyaW0gc3RhcnQiKQozLiB3
aGVuIHRoZSBlbnRpcmUgc3VidHJlZSBpcyBsYWlkIG91dCwgY2hlY2sgaWYgd2UgbmVlZCB0byBh
cHBseSAidHJpbSBlbmQnLgo0LiBmaW5kIHRoZSBsYXN0IGZvcm1hdHRpbmcgY29udGV4dAo1LiBz
ZXQgInRyaW0gZW5kIiBvbiB0aGUgbGF5b3V0IHN0YXRlIGFuZCBydW4gbGF5b3V0IG9uIHRoZSBs
YXN0IElGQy4KKEZhc3QgcGF0aCBmb3IgdGhlIHNpbXBsZSBjYXNlIHdoZW4gdGhlIGxlYWRpbmcg
dHJpbSBibG9jayBjb250YWluZXIgaXMgYWxzbyBhbiBJRkMgcm9vdC4pCgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcDoKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpsZWFkaW5nVHJpbSk6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CihXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmxheW91dEJsb2NrKToKKFdlYkNvcmU6OmZpcnN0SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRSb290KToKKFdlYkNvcmU6Omxhc3RJbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJvb3QpOgoo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpzZXRMZWFkaW5nVHJpbUZvclN1YnRyZWUpOgooV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93OjphZGp1c3RMZWFkaW5nVHJpbUFmdGVyTGF5b3V0KToKKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5GbG93Q2hpbGRyZW4pOgooV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpyZXNldExlYWRpbmdUcmltKTogRGVsZXRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
b3V0U3RhdGUuY3BwOgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6OlJlbmRlckxheW91dFN0
YXRlKToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaDoKKFdl
YkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpsZWFkaW5nVHJpbSk6CihXZWJDb3JlOjpSZW5kZXJM
YXlvdXRTdGF0ZTo6aGFzTGVhZGluZ1RyaW1TdGFydCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJM
YXlvdXRTdGF0ZTo6aGFzTGVhZGluZ1RyaW1FbmQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyTGF5
b3V0U3RhdGU6OmFkZExlYWRpbmdUcmltU3RhcnQpOgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3Rh
dGU6OnJlbW92ZUxlYWRpbmdUcmltU3RhcnQpOgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6
OmFkZExlYWRpbmdUcmltRW5kKToKKFdlYkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpoYXNMZWFk
aW5nVHJpbSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJMYXlvdXRTdGF0ZTo6bGVh
ZGluZ1RyaW0gY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6OmFk
ZExlYWRpbmdUcmltKTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpyZW1v
dmVMZWFkaW5nVHJpbSk6IERlbGV0ZWQuCi0tLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuY3BwICAgIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcCAgfCAxNDkgKysrKysrKysrKysrKy0tLS0tCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggICAgfCAgIDUgKy0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggICAgICB8ICAgMyArLQogLi4uL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcCAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaCAgfCAgNDggKysrKy0tCiA2IGZpbGVzIGNoYW5n
ZWQsIDE1NiBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggOTgyNWMyMWIwZTJkLi41OGNiYjlm
MDA5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxp
bmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAK
QEAgLTQ3NSwxMSArNDc1LDEzIEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxMYXlvdXQ6
OkJsb2NrTGF5b3V0U3RhdGU6OkxpbmVDbGFtcD4gbGluZUNsYW1wKGNvbnN0CiAKIHN0YXRpYyBp
bmxpbmUgTGF5b3V0OjpCbG9ja0xheW91dFN0YXRlOjpMZWFkaW5nVHJpbSBsZWFkaW5nVHJpbShj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIHJvb3RSZW5kZXJlcikKIHsKLSAgICBhdXRvIGxlYWRpbmdU
cmltU2lkZXMgPSByb290UmVuZGVyZXIudmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQo
KS5sYXlvdXRTdGF0ZSgpLT5sZWFkaW5nVHJpbSgpOworICAgIGF1dG8qIGxheW91dFN0YXRlID0g
cm9vdFJlbmRlcmVyLnZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkubGF5b3V0U3Rh
dGUoKTsKKyAgICBpZiAoIWxheW91dFN0YXRlKQorICAgICAgICByZXR1cm4geyB9OwogICAgIGF1
dG8gbGVhZGluZ1RyaW1Gb3JJRkMgPSBMYXlvdXQ6OkJsb2NrTGF5b3V0U3RhdGU6OkxlYWRpbmdU
cmltIHsgfTsKLSAgICBpZiAobGVhZGluZ1RyaW1TaWRlcy5jb250YWlucyhSZW5kZXJMYXlvdXRT
dGF0ZTo6TGVhZGluZ1RyaW1TaWRlOjpTdGFydCkpCisgICAgaWYgKGxheW91dFN0YXRlLT5oYXNM
ZWFkaW5nVHJpbVN0YXJ0KCkpCiAgICAgICAgIGxlYWRpbmdUcmltRm9ySUZDLmFkZChMYXlvdXQ6
OkJsb2NrTGF5b3V0U3RhdGU6OkxlYWRpbmdUcmltU2lkZTo6U3RhcnQpOwotICAgIGlmIChsZWFk
aW5nVHJpbVNpZGVzLmNvbnRhaW5zKFJlbmRlckxheW91dFN0YXRlOjpMZWFkaW5nVHJpbVNpZGU6
OkVuZCkpCisgICAgaWYgKGxheW91dFN0YXRlLT5oYXNMZWFkaW5nVHJpbUVuZChyb290UmVuZGVy
ZXIpKQogICAgICAgICBsZWFkaW5nVHJpbUZvcklGQy5hZGQoTGF5b3V0OjpCbG9ja0xheW91dFN0
YXRlOjpMZWFkaW5nVHJpbVNpZGU6OkVuZCk7CiAgICAgcmV0dXJuIGxlYWRpbmdUcmltRm9ySUZD
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRl
eCAwZTQxMzdiMmIwMzIuLmUyZTE2M2YzYzM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTQ4MCw0MCArNDgwLDYgQEAgdm9pZCBSZW5kZXJC
bG9ja0Zsb3c6OnNldENoaWxkcmVuSW5saW5lKGJvb2wgdmFsdWUpCiAgICAgUmVuZGVyQmxvY2s6
OnNldENoaWxkcmVuSW5saW5lKHZhbHVlKTsKIH0KIAotdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnNl
dExlYWRpbmdUcmltRm9yU3VidHJlZSgpCi17Ci0gICAgYXV0byogbGF5b3V0U3RhdGUgPSB2aWV3
KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmxheW91dFN0YXRlKCk7Ci0gICAgaWYgKCFs
YXlvdXRTdGF0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gbGVhZGluZ1RyaW0gPSBzdHls
ZSgpLmxlYWRpbmdUcmltKCk7Ci0gICAgaWYgKGxlYWRpbmdUcmltID09IExlYWRpbmdUcmltOjpO
b3JtYWwpIHsKLSAgICAgICAgaWYgKGJvcmRlckFuZFBhZGRpbmdTdGFydCgpKSB7Ci0gICAgICAg
ICAgICAvLyBGb3IgYmxvY2sgY29udGFpbmVyczogdHJpbSB0aGUgYmxvY2stc3RhcnQgc2lkZSBv
ZiB0aGUgZmlyc3QgZm9ybWF0dGVkIGxpbmUgdG8gdGhlIGNvcnJlc3BvbmRpbmcKLSAgICAgICAg
ICAgIC8vIHRleHQtZWRnZSBtZXRyaWMgb2YgaXRzIHJvb3QgaW5saW5lIGJveC4gSWYgdGhlcmUg
aXMgbm8gc3VjaCBsaW5lLCBvciBpZiB0aGVyZSBpcyBpbnRlcnZlbmluZyBub24temVybyBwYWRk
aW5nIG9yIGJvcmRlcnMsCi0gICAgICAgICAgICAvLyB0aGVyZSBpcyBubyBlZmZlY3QuCi0gICAg
ICAgICAgICBsYXlvdXRTdGF0ZS0+cmVzZXRMZWFkaW5nVHJpbSgpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBuZXN0ZWQg
bGVhZGluZyB0cmltcyBpZiBhcHBsaWNhYmxlLgotICAgIGxheW91dFN0YXRlLT5yZXNldExlYWRp
bmdUcmltKCk7Ci0gICAgaWYgKGxlYWRpbmdUcmltID09IExlYWRpbmdUcmltOjpTdGFydCB8fCBs
ZWFkaW5nVHJpbSA9PSBMZWFkaW5nVHJpbTo6Qm90aCkKLSAgICAgICAgbGF5b3V0U3RhdGUtPmFk
ZExlYWRpbmdUcmltKFJlbmRlckxheW91dFN0YXRlOjpMZWFkaW5nVHJpbVNpZGU6OlN0YXJ0KTsK
LSAgICBpZiAobGVhZGluZ1RyaW0gPT0gTGVhZGluZ1RyaW06OkVuZCB8fCBsZWFkaW5nVHJpbSA9
PSBMZWFkaW5nVHJpbTo6Qm90aCkKLSAgICAgICAgbGF5b3V0U3RhdGUtPmFkZExlYWRpbmdUcmlt
KFJlbmRlckxheW91dFN0YXRlOjpMZWFkaW5nVHJpbVNpZGU6OkVuZCk7Ci19Ci0KLXZvaWQgUmVu
ZGVyQmxvY2tGbG93OjpyZXNldExlYWRpbmdUcmltKCkKLXsKLSAgICBhdXRvKiBsYXlvdXRTdGF0
ZSA9IHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkubGF5b3V0U3RhdGUoKTsKLSAg
ICBpZiAoIWxheW91dFN0YXRlIHx8ICFsYXlvdXRTdGF0ZS0+bGVhZGluZ1RyaW0oKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGlmIChsYXlvdXRTdGF0ZS0+bGVhZGluZ1RyaW0oKS5jb250YWlucyhS
ZW5kZXJMYXlvdXRTdGF0ZTo6TGVhZGluZ1RyaW1TaWRlOjpTdGFydCkgJiYgaGFzTGluZXMoKSkg
ewotICAgICAgICAvLyBPbmx5IHRoZSBmaXJzdCBmb3JtYXR0ZWQgbGluZSBpcyB0cmltbWVkLgot
ICAgICAgICBsYXlvdXRTdGF0ZS0+cmVtb3ZlTGVhZGluZ1RyaW0oUmVuZGVyTGF5b3V0U3RhdGU6
OkxlYWRpbmdUcmltU2lkZTo6U3RhcnQpOwotICAgIH0KLX0KLQogdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9n
aWNhbEhlaWdodCkKIHsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CkBAIC01NjYsMTIgKzUz
Miw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hp
bGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxICiAgICAgICAgIGlmICghZmlyc3RDaGlsZCgp
ICYmICFpc0Fub255bW91c0Jsb2NrKCkpCiAgICAgICAgICAgICBzZXRDaGlsZHJlbklubGluZSh0
cnVlKTsKICAgICAgICAgZGlydHlGb3JMYXlvdXRGcm9tUGVyY2VudGFnZUhlaWdodERlc2NlbmRh
bnRzKCk7Ci0gICAgICAgIHNldExlYWRpbmdUcmltRm9yU3VidHJlZSgpOwotCi0gICAgICAgIGlm
IChjaGlsZHJlbklubGluZSgpKQotICAgICAgICAgICAgbGF5b3V0SW5saW5lQ2hpbGRyZW4ocmVs
YXlvdXRDaGlsZHJlbiwgcmVwYWludExvZ2ljYWxUb3AsIHJlcGFpbnRMb2dpY2FsQm90dG9tKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgbGF5b3V0QmxvY2tDaGlsZHJlbihyZWxheW91dENo
aWxkcmVuLCBtYXhGbG9hdExvZ2ljYWxCb3R0b20pOworICAgICAgICBsYXlvdXRJbkZsb3dDaGls
ZHJlbihyZWxheW91dENoaWxkcmVuLCByZXBhaW50TG9naWNhbFRvcCwgcmVwYWludExvZ2ljYWxC
b3R0b20sIG1heEZsb2F0TG9naWNhbEJvdHRvbSk7CiAgICAgICAgIC8vIEV4cGFuZCBvdXIgaW50
cmluc2ljIGhlaWdodCB0byBlbmNvbXBhc3MgZmxvYXRzLgogICAgICAgICBMYXlvdXRVbml0IHRv
QWRkID0gYm9yZGVyQW5kUGFkZGluZ0FmdGVyKCkgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7
CiAgICAgICAgIGlmIChsb3dlc3RGbG9hdExvZ2ljYWxCb3R0b20oKSA+IChsb2dpY2FsSGVpZ2h0
KCkgLSB0b0FkZCkgJiYgY3JlYXRlc05ld0Zvcm1hdHRpbmdDb250ZXh0KCkpCkBAIC01ODAsNyAr
NTQxLDYgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRD
aGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEgKICAgICAgICAgICAgIHNldEV2ZXJIYWRM
YXlvdXQodHJ1ZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBy
ZXNldExlYWRpbmdUcmltKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gd2hpbGUgKHRydWUpOwog
CkBAIC02NzYsNiArNjM2LDExMyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSAogICAgIGNsZWFy
TmVlZHNMYXlvdXQoKTsKIH0KIAorc3RhdGljIFJlbmRlckJsb2NrRmxvdyogZmlyc3RJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBlbmNsb3NpbmdCbG9j
a0NvbnRhaW5lcikKK3sKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYWZ0ZXIgaW1wbGVtZW50
aW5nICJsYXN0IGxpbmUgZGFtYWdlIi4KKyAgICBmb3IgKGF1dG8qIGNoaWxkID0gZW5jbG9zaW5n
QmxvY2tDb250YWluZXIuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlv
dXNTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFpczxSZW5kZXJCbG9ja0Zsb3c+KGNoaWxkKSB8
fCBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpjaGlsZCkuY3JlYXRlc05ld0Zvcm1hdHRpbmdD
b250ZXh0KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byYgYmxvY2tDb250
YWluZXIgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpjaGlsZCk7CisgICAgICAgIGlmIChi
bG9ja0NvbnRhaW5lci5oYXNMaW5lcygpKQorICAgICAgICAgICAgcmV0dXJuICZibG9ja0NvbnRh
aW5lcjsKKyAgICAgICAgaWYgKGF1dG8qIGRlc2NlbmRhbnRSb290ID0gZmlyc3RJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dFJvb3QoYmxvY2tDb250YWluZXIpKQorICAgICAgICAgICAgcmV0dXJuIGRl
c2NlbmRhbnRSb290OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFJl
bmRlckJsb2NrRmxvdyogbGFzdElubGluZUZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cmIGVuY2xvc2luZ0Jsb2NrQ29udGFpbmVyKQoreworICAgIGZvciAoYXV0byog
Y2hpbGQgPSBlbmNsb3NpbmdCbG9ja0NvbnRhaW5lci5sYXN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7CisgICAgICAgIGlmICghaXM8UmVuZGVyQmxv
Y2tGbG93PihjaGlsZCkgfHwgZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqY2hpbGQpLmNyZWF0
ZXNOZXdGb3JtYXR0aW5nQ29udGV4dCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGF1dG8mIGJsb2NrQ29udGFpbmVyID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqY2hpbGQp
OworICAgICAgICBpZiAoYmxvY2tDb250YWluZXIuaGFzTGluZXMoKSkKKyAgICAgICAgICAgIHJl
dHVybiAmYmxvY2tDb250YWluZXI7CisgICAgICAgIGlmIChhdXRvKiBkZXNjZW5kYW50Um9vdCA9
IGxhc3RJbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJvb3QoYmxvY2tDb250YWluZXIpKQorICAgICAg
ICAgICAgcmV0dXJuIGRlc2NlbmRhbnRSb290OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKwordm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnNldExlYWRpbmdUcmltRm9yU3VidHJlZShjb25z
dCBSZW5kZXJCbG9ja0Zsb3cqIGlubGluZUZvcm1hdHRpbmdDb250ZXh0Um9vdEZvckxlYWRpbmdU
cmltRW5kKQoreworICAgIGF1dG8qIGxheW91dFN0YXRlID0gdmlldygpLmZyYW1lVmlldygpLmxh
eW91dENvbnRleHQoKS5sYXlvdXRTdGF0ZSgpOworICAgIGlmICghbGF5b3V0U3RhdGUpCisgICAg
ICAgIHJldHVybjsKKyAgICBhdXRvIGxlYWRpbmdUcmltID0gc3R5bGUoKS5sZWFkaW5nVHJpbSgp
OworICAgIGlmIChsZWFkaW5nVHJpbSA9PSBMZWFkaW5nVHJpbTo6Tm9ybWFsKSB7CisgICAgICAg
IGlmIChib3JkZXJBbmRQYWRkaW5nU3RhcnQoKSkgeworICAgICAgICAgICAgLy8gRm9yIGJsb2Nr
IGNvbnRhaW5lcnM6IHRyaW0gdGhlIGJsb2NrLXN0YXJ0IHNpZGUgb2YgdGhlIGZpcnN0IGZvcm1h
dHRlZCBsaW5lIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAvLyB0ZXh0LWVkZ2Ug
bWV0cmljIG9mIGl0cyByb290IGlubGluZSBib3guIElmIHRoZXJlIGlzIG5vIHN1Y2ggbGluZSwg
b3IgaWYgdGhlcmUgaXMgaW50ZXJ2ZW5pbmcgbm9uLXplcm8gcGFkZGluZyBvciBib3JkZXJzLAor
ICAgICAgICAgICAgLy8gdGhlcmUgaXMgbm8gZWZmZWN0LgorICAgICAgICAgICAgbGF5b3V0U3Rh
dGUtPnJlc2V0TGVhZGluZ1RyaW0oKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAg
fQorICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgbmVzdGVkIGxlYWRpbmcgdHJpbXMgaWYg
YXBwbGljYWJsZS4KKyAgICBsYXlvdXRTdGF0ZS0+cmVzZXRMZWFkaW5nVHJpbSgpOworICAgIGF1
dG8gYXBwbHlMZWFkaW5nVHJpbVN0YXJ0ID0gbGVhZGluZ1RyaW0gPT0gTGVhZGluZ1RyaW06OlN0
YXJ0IHx8IGxlYWRpbmdUcmltID09IExlYWRpbmdUcmltOjpCb3RoOworICAgIGF1dG8gYXBwbHlM
ZWFkaW5nVHJpbUVuZCA9IChsZWFkaW5nVHJpbSA9PSBMZWFkaW5nVHJpbTo6RW5kIHx8IGxlYWRp
bmdUcmltID09IExlYWRpbmdUcmltOjpCb3RoKSAmJiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJv
b3RGb3JMZWFkaW5nVHJpbUVuZDsKKyAgICBpZiAoYXBwbHlMZWFkaW5nVHJpbUVuZCkgeworICAg
ICAgICBsYXlvdXRTdGF0ZS0+YWRkTGVhZGluZ1RyaW1FbmQoKmlubGluZUZvcm1hdHRpbmdDb250
ZXh0Um9vdEZvckxlYWRpbmdUcmltRW5kKTsKKyAgICAgICAgLy8gRklYTUU6IEluc3RlYWQgd2Ug
c2hvdWxkIGp1c3QgZGFtYWdlIHRoZSBsYXN0IGxpbmUuCisgICAgICAgIGlmIChhdXRvKiBmaXJz
dEZvcm1hdHRlZExpbmVSb290ID0gZmlyc3RJbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJvb3QoKnRo
aXMpOyBmaXJzdEZvcm1hdHRlZExpbmVSb290ICYmIGZpcnN0Rm9ybWF0dGVkTGluZVJvb3QgIT0g
aW5saW5lRm9ybWF0dGluZ0NvbnRleHRSb290Rm9yTGVhZGluZ1RyaW1FbmQpIHsKKyAgICAgICAg
ICAgIC8vIFdoZW4gd2UgcnVuIGEgImxhc3QgbGluZSIgbGF5b3V0IG9uIHRoZSBsYXN0IGZvcm1h
dHRpbmcgY29udGV4dCwgd2Ugc2hvdWxkIG5vdCB0cmltIHRoZSBmaXJzdCBsaW5lIGV2ZXIgKHNl
ZSBGSVhNRSkuCisgICAgICAgICAgICBhcHBseUxlYWRpbmdUcmltU3RhcnQgPSBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBpZiAoYXBwbHlMZWFkaW5nVHJpbVN0YXJ0KQorICAgICAgICBs
YXlvdXRTdGF0ZS0+YWRkTGVhZGluZ1RyaW1TdGFydCgpOworfQorCit2b2lkIFJlbmRlckJsb2Nr
Rmxvdzo6YWRqdXN0TGVhZGluZ1RyaW1BZnRlckxheW91dCgpCit7CisgICAgYXV0byogbGF5b3V0
U3RhdGUgPSB2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmxheW91dFN0YXRlKCk7
CisgICAgaWYgKCFsYXlvdXRTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChzdHlsZSgp
LmxlYWRpbmdUcmltKCkgIT0gTGVhZGluZ1RyaW06Ok5vcm1hbCkKKyAgICAgICAgcmV0dXJuIGxh
eW91dFN0YXRlLT5yZXNldExlYWRpbmdUcmltKCk7CisgICAgLy8gVGhpcyBpcyBwcm9wYWdhdGVk
IGxlYWRpbmctdHJpbS4KKyAgICBpZiAobGF5b3V0U3RhdGUtPmhhc0xlYWRpbmdUcmltU3RhcnQo
KSAmJiBoYXNMaW5lcygpKSB7CisgICAgICAgIC8vIE9ubHkgdGhlIGZpcnN0IGZvcm1hdHRlZCBs
aW5lIGlzIHRyaW1tZWQuCisgICAgICAgIGxheW91dFN0YXRlLT5yZW1vdmVMZWFkaW5nVHJpbVN0
YXJ0KCk7CisgICAgfQorfQorCit2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5GbG93Q2hp
bGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHJlcGFpbnRMb2dpY2FsVG9w
LCBMYXlvdXRVbml0IHJlcGFpbnRMb2dpY2FsQm90dG9tLCBMYXlvdXRVbml0JiBtYXhGbG9hdExv
Z2ljYWxCb3R0b20pCit7CisgICAgaWYgKGNoaWxkcmVuSW5saW5lKCkpIHsKKyAgICAgICAgc2V0
TGVhZGluZ1RyaW1Gb3JTdWJ0cmVlKHRoaXMpOworICAgICAgICBsYXlvdXRJbmxpbmVDaGlsZHJl
bihyZWxheW91dENoaWxkcmVuLCByZXBhaW50TG9naWNhbFRvcCwgcmVwYWludExvZ2ljYWxCb3R0
b20pOworICAgICAgICBhZGp1c3RMZWFkaW5nVHJpbUFmdGVyTGF5b3V0KCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBXaXRoIGJsb2NrIGNoaWxkcmVuLCB0aGVyZSdzIG5vIHdh
eSB0byB0ZWxsIHdoYXQgdGhlIGxhc3QgZm9ybWF0dGVkIGxpbmUgaXMgdW50aWwgYWZ0ZXIgd2Ug
ZmluaXNoZWQgbGF5aW5nIG91dCB0aGUgc3VidHJlZS4KKyAgICBzZXRMZWFkaW5nVHJpbUZvclN1
YnRyZWUoKTsKKyAgICBsYXlvdXRCbG9ja0NoaWxkcmVuKHJlbGF5b3V0Q2hpbGRyZW4sIG1heEZs
b2F0TG9naWNhbEJvdHRvbSk7CisgICAgYWRqdXN0TGVhZGluZ1RyaW1BZnRlckxheW91dCgpOwor
CisgICAgYXV0byBoYW5kbGVMZWFkaW5nVHJpbUVuZCA9IFsmXSB7CisgICAgICAgIGF1dG8gaGFz
TGVhZGluZ1RyaW1FbmQgPSBzdHlsZSgpLmxlYWRpbmdUcmltKCkgPT0gTGVhZGluZ1RyaW06OkVu
ZCB8fCBzdHlsZSgpLmxlYWRpbmdUcmltKCkgPT0gTGVhZGluZ1RyaW06OkJvdGg7CisgICAgICAg
IGlmICghaGFzTGVhZGluZ1RyaW1FbmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8v
IERpcnR5IHRoZSBsYXN0IGZvcm1hdHRlZCBsaW5lIChpbiB0aGUgbGFzdCBJRkMpIGFuZCBpc3N1
ZSByZWxheW91dCB3aXRoIGZvcmNpbmcgdHJpbW1pbmcgdGhlIGxhc3QgbGluZS4KKyAgICAgICAg
aWYgKGF1dG8qIHJvb3RGb3JMYXN0Rm9ybWF0dGVkTGluZSA9IGxhc3RJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dFJvb3QoKnRoaXMpKSB7CisgICAgICAgICAgICBmb3IgKFJlbmRlckJsb2NrKiBhbmNl
c3RvciA9IHJvb3RGb3JMYXN0Rm9ybWF0dGVkTGluZTsgYW5jZXN0b3IgJiYgYW5jZXN0b3IgIT0g
dGhpczsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZGFtYWdlIHRoZSBsYXN0IGxp
bmUgb25seS4KKyAgICAgICAgICAgICAgICBhbmNlc3Rvci0+c2V0TmVlZHNMYXlvdXQoTWFya09u
bHlUaGlzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0TGVhZGluZ1RyaW1Gb3JT
dWJ0cmVlKHJvb3RGb3JMYXN0Rm9ybWF0dGVkTGluZSk7CisgICAgICAgICAgICBsYXlvdXRCbG9j
a0NoaWxkcmVuKHJlbGF5b3V0Q2hpbGRyZW4sIG1heEZsb2F0TG9naWNhbEJvdHRvbSk7CisgICAg
ICAgICAgICBhZGp1c3RMZWFkaW5nVHJpbUFmdGVyTGF5b3V0KCk7CisgICAgICAgIH0KKyAgICB9
OworICAgIGhhbmRsZUxlYWRpbmdUcmltRW5kKCk7Cit9CisKIHZvaWQgUmVuZGVyQmxvY2tGbG93
OjpsYXlvdXRCbG9ja0NoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYg
bWF4RmxvYXRMb2dpY2FsQm90dG9tKQogewogICAgIExheW91dFVuaXQgYmVmb3JlRWRnZSA9IGJv
cmRlckFuZFBhZGRpbmdCZWZvcmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuaAppbmRleCBhZTMzNGY0NmExMzkuLjUxYzY0Y2IwM2JmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtNjYsNiArNjYsNyBAQCBwcm90
ZWN0ZWQ6CiAKICAgICAvLyBSZW5kZXJCbG9ja0Zsb3cgYWx3YXlzIGNvbnRhaW5zIGVpdGhlciBs
aW5lcyBvciBwYXJhZ3JhcGhzLiBXaGVuIHRoZSBjaGlsZHJlbiBhcmUgYWxsIGJsb2NrcyAoZS5n
LiBwYXJhZ3JhcGhzKSwgd2UgY2FsbCBsYXlvdXRCbG9ja0NoaWxkcmVuLgogICAgIC8vIFdoZW4g
dGhlIGNoaWxkcmVuIGFyZSBhbGwgaW5saW5lIChlLmcuLCBsaW5lcyksIHdlIGNhbGwgbGF5b3V0
SW5saW5lQ2hpbGRyZW4uCisgICAgdm9pZCBsYXlvdXRJbkZsb3dDaGlsZHJlbihib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcmVwYWludExvZ2ljYWxUb3AsIExheW91dFVuaXQgcmVw
YWludExvZ2ljYWxCb3R0b20sIExheW91dFVuaXQmIG1heEZsb2F0TG9naWNhbEJvdHRvbSk7CiAg
ICAgdm9pZCBsYXlvdXRCbG9ja0NoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0
VW5pdCYgbWF4RmxvYXRMb2dpY2FsQm90dG9tKTsKICAgICB2b2lkIGxheW91dElubGluZUNoaWxk
cmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVwYWludExvZ2ljYWxUb3As
IExheW91dFVuaXQmIHJlcGFpbnRMb2dpY2FsQm90dG9tKTsKIApAQCAtNTI2LDggKzUyNyw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyhM
YXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkg
Y29uc3Q7CiAgICAgdm9pZCBhZGp1c3RJbml0aWFsTGV0dGVyUG9zaXRpb24oUmVuZGVyQm94JiBj
aGlsZEJveCwgTGF5b3V0VW5pdCYgbG9naWNhbFRvcE9mZnNldCwgTGF5b3V0VW5pdCYgbWFyZ2lu
QmVmb3JlT2Zmc2V0KTsKIAotICAgIHZvaWQgc2V0TGVhZGluZ1RyaW1Gb3JTdWJ0cmVlKCk7Ci0g
ICAgdm9pZCByZXNldExlYWRpbmdUcmltKCk7CisgICAgdm9pZCBzZXRMZWFkaW5nVHJpbUZvclN1
YnRyZWUoY29uc3QgUmVuZGVyQmxvY2tGbG93KiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJvb3RG
b3JMZWFkaW5nVHJpbUVuZCA9IG51bGxwdHIpOworICAgIHZvaWQgYWRqdXN0TGVhZGluZ1RyaW1B
ZnRlckxheW91dCgpOwogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICBpbnQgbV93
aWR0aEZvclRleHRBdXRvc2l6aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgKaW5kZXggYTEwZTQwYTgxYzY2Li5mMDc3OWY0ZTBkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMzEwLDYgKzMxMCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHBhaW50Rm9jdXNSaW5nKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IFJlbmRlclN0eWxl
JiwgY29uc3QgVmVjdG9yPExheW91dFJlY3Q+JiBmb2N1c1JpbmdSZWN0cykgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgZXN0YWJsaXNoZXNJbmRlcGVuZGVudEZvcm1hdHRpbmdDb250ZXh0KCkg
Y29uc3Q7CisgICAgYm9vbCBjcmVhdGVzTmV3Rm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdDsKIAog
cHJvdGVjdGVkOgogICAgIGVudW0gQmFzZVR5cGVGbGFnIHsKQEAgLTM2Myw4ICszNjQsNiBAQCBw
cm90ZWN0ZWQ6CiAKICAgICBib29sIGlzVmlzaWJsZUluVmlld3BvcnQoKSBjb25zdDsKIAotICAg
IGJvb2wgY3JlYXRlc05ld0Zvcm1hdHRpbmdDb250ZXh0KCkgY29uc3Q7Ci0KICAgICBib29sIHNo
b3VsZEFwcGx5TGF5b3V0T3JQYWludENvbnRhaW5tZW50KGJvb2wpIGNvbnN0OwogICAgIGJvb2wg
c2hvdWxkQXBwbHlTaXplT3JTdHlsZUNvbnRhaW5tZW50KGJvb2wpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcAppbmRleCAzYjJjOWVh
YzQwZTIuLjE5ZmZjYzhhZmRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheW91dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5b3V0U3RhdGUuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFJlbmRlckxheW91dFN0YXRlOjpS
ZW5kZXJMYXlvdXRTdGF0ZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgSXNQYWdpbmF0ZWQgaXNQ
YWdpCiAgICAgfQogfQogCi1SZW5kZXJMYXlvdXRTdGF0ZTo6UmVuZGVyTGF5b3V0U3RhdGUoY29u
c3QgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6TGF5b3V0U3RhdGVTdGFjayYgbGF5b3V0U3RhdGVT
dGFjaywgUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0LCBMYXlv
dXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0LCBib29sIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCwg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IG1heGltdW1MaW5lQ291bnRGb3JMaW5lQ2xhbXAsIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiB2aXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1wLCBMZWFkaW5nVHJp
bSBsZWFkaW5nVHJpbSkKK1JlbmRlckxheW91dFN0YXRlOjpSZW5kZXJMYXlvdXRTdGF0ZShjb25z
dCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpMYXlvdXRTdGF0ZVN0YWNrJiBsYXlvdXRTdGF0ZVN0
YWNrLCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQsIExheW91
dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQsIGJvb2wgcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkLCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gbWF4aW11bUxpbmVDb3VudEZvckxpbmVDbGFtcCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IHZpc2libGVMaW5lQ291bnRGb3JMaW5lQ2xhbXAsIHN0ZDo6b3B0aW9u
YWw8TGVhZGluZ1RyaW0+IGxlYWRpbmdUcmltKQogICAgIDogbV9jbGlwcGVkKGZhbHNlKQogICAg
ICwgbV9pc1BhZ2luYXRlZChmYWxzZSkKICAgICAsIG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2Vk
KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91
dFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaApp
bmRleCBhYzRjYjE5Mzc1Y2QuLjgxNGZlMzc0YmJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJG
cmFtZVZpZXdMYXlvdXRDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsOSArNDMsOSBAQCBjbGFzcyBSZW5kZXJMYXlvdXRTdGF0
ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVuZGVyTGF5b3V0U3RhdGUpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIGVudW0gTGVhZGluZ1RyaW1TaWRlIDog
dWludDhfdCB7Ci0gICAgICAgIFN0YXJ0ID0gMSA8PCAwLAotICAgICAgICBFbmQgICA9IDEgPDwg
MQorICAgIHN0cnVjdCBMZWFkaW5nVHJpbSB7CisgICAgICAgIGJvb2wgdHJpbUZpcnN0Rm9ybWF0
dGVkTGluZSB7IGZhbHNlIH07CisgICAgICAgIFdlYWtQdHI8Y29uc3QgUmVuZGVyQmxvY2tGbG93
PiB0cmltTGFzdEZvcm1hdHRlZExpbmVPblRhcmdldDsKICAgICB9OwogCiAgICAgUmVuZGVyTGF5
b3V0U3RhdGUoKQpAQCAtNTcsNyArNTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB7CiAgICAg
fQotICAgIFJlbmRlckxheW91dFN0YXRlKGNvbnN0IEZyYW1lVmlld0xheW91dENvbnRleHQ6Okxh
eW91dFN0YXRlU3RhY2smLCBSZW5kZXJCb3gmLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQsIExh
eW91dFVuaXQgcGFnZUhlaWdodCwgYm9vbCBwYWdlSGVpZ2h0Q2hhbmdlZCwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IG1heGltdW1MaW5lQ291bnRGb3JMaW5lQ2xhbXAsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiB2aXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1wLCBPcHRpb25TZXQ8TGVhZGluZ1RyaW1T
aWRlPik7CisgICAgUmVuZGVyTGF5b3V0U3RhdGUoY29uc3QgRnJhbWVWaWV3TGF5b3V0Q29udGV4
dDo6TGF5b3V0U3RhdGVTdGFjayYsIFJlbmRlckJveCYsIGNvbnN0IExheW91dFNpemUmIG9mZnNl
dCwgTGF5b3V0VW5pdCBwYWdlSGVpZ2h0LCBib29sIHBhZ2VIZWlnaHRDaGFuZ2VkLCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbWF4aW11bUxpbmVDb3VudEZvckxpbmVDbGFtcCwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IHZpc2libGVMaW5lQ291bnRGb3JMaW5lQ2xhbXAsIHN0ZDo6b3B0aW9uYWw8TGVh
ZGluZ1RyaW0+KTsKICAgICBlbnVtIGNsYXNzIElzUGFnaW5hdGVkIHsgTm8sIFllcyB9OwogICAg
IGV4cGxpY2l0IFJlbmRlckxheW91dFN0YXRlKFJlbmRlckVsZW1lbnQmLCBJc1BhZ2luYXRlZCA9
IElzUGFnaW5hdGVkOjpObyk7CiAKQEAgLTEwMCwxMSArMTAxLDE0IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFZpc2libGVMaW5lQ291bnRGb3JMaW5lQ2xhbXAoc2l6ZV90IHZpc2libGVMaW5lQ291
bnQpIHsgbV92aXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1wID0gdmlzaWJsZUxpbmVDb3VudDsg
fQogICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB2aXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1w
KCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1wOyB9CiAKLSAg
ICB1c2luZyBMZWFkaW5nVHJpbSA9IE9wdGlvblNldDxMZWFkaW5nVHJpbVNpZGU+OwotICAgIGJv
b2wgaGFzTGVhZGluZ1RyaW0oKSBjb25zdCB7IHJldHVybiAhbGVhZGluZ1RyaW0oKS5pc0VtcHR5
KCk7IH0KLSAgICBMZWFkaW5nVHJpbSBsZWFkaW5nVHJpbSgpIGNvbnN0IHsgcmV0dXJuIG1fbGVh
ZGluZ1RyaW07IH0KLSAgICB2b2lkIGFkZExlYWRpbmdUcmltKExlYWRpbmdUcmltU2lkZSBsZWFk
aW5nVHJpbSkgeyBtX2xlYWRpbmdUcmltLmFkZChsZWFkaW5nVHJpbSk7IH0KLSAgICB2b2lkIHJl
bW92ZUxlYWRpbmdUcmltKExlYWRpbmdUcmltU2lkZSBsZWFkaW5nVHJpbSkgeyBtX2xlYWRpbmdU
cmltLnJlbW92ZShsZWFkaW5nVHJpbSk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPExlYWRpbmdUcmlt
PiBsZWFkaW5nVHJpbSgpIHsgcmV0dXJuIG1fbGVhZGluZ1RyaW07IH0KKyAgICBib29sIGhhc0xl
YWRpbmdUcmltU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2xlYWRpbmdUcmltICYmIG1fbGVhZGlu
Z1RyaW0tPnRyaW1GaXJzdEZvcm1hdHRlZExpbmU7IH0KKyAgICBib29sIGhhc0xlYWRpbmdUcmlt
RW5kKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY2FuZGlkYXRlKSBjb25zdCB7IHJldHVybiBtX2xl
YWRpbmdUcmltICYmIG1fbGVhZGluZ1RyaW0tPnRyaW1MYXN0Rm9ybWF0dGVkTGluZU9uVGFyZ2V0
LmdldCgpID09ICZjYW5kaWRhdGU7IH0KKworICAgIHZvaWQgYWRkTGVhZGluZ1RyaW1TdGFydCgp
OworICAgIHZvaWQgcmVtb3ZlTGVhZGluZ1RyaW1TdGFydCgpOworCisgICAgdm9pZCBhZGRMZWFk
aW5nVHJpbUVuZChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHRhcmdldElubGluZUZvcm1hdHRpbmdD
b250ZXh0KTsKICAgICB2b2lkIHJlc2V0TGVhZGluZ1RyaW0oKSB7IG1fbGVhZGluZ1RyaW0gPSB7
IH07IH0KIAogcHJpdmF0ZToKQEAgLTE0OSw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIExheW91
dFNpemUgbV9saW5lR3JpZFBhZ2luYXRpb25PcmlnaW47CiAgICAgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG1fbWF4aW11bUxpbmVDb3VudEZvckxpbmVDbGFtcDsKICAgICBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gbV92aXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1wOwotICAgIExlYWRpbmdUcmltIG1f
bGVhZGluZ1RyaW07CisgICAgc3RkOjpvcHRpb25hbDxMZWFkaW5nVHJpbT4gbV9sZWFkaW5nVHJp
bTsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFJlbmRlckVsZW1lbnQqIG1fcmVuZGVyZXIgeyBu
dWxscHRyIH07CiAjZW5kaWYKQEAgLTE5OCw2ICsyMDIsMzAgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fcHVzaGVkIHsgZmFsc2UgfTsKIH07CiAKK2lubGluZSB2b2lkIFJlbmRlckxheW91dFN0YXRl
OjphZGRMZWFkaW5nVHJpbVN0YXJ0KCkKK3sKKyAgICBpZiAobV9sZWFkaW5nVHJpbSkgeworICAg
ICAgICBtX2xlYWRpbmdUcmltLT50cmltRmlyc3RGb3JtYXR0ZWRMaW5lID0gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBtX2xlYWRpbmdUcmltID0geyB0cnVlLCB7IH0gfTsKK30K
KworaW5saW5lIHZvaWQgUmVuZGVyTGF5b3V0U3RhdGU6OnJlbW92ZUxlYWRpbmdUcmltU3RhcnQo
KQoreworICAgIEFTU0VSVChtX2xlYWRpbmdUcmltICYmIG1fbGVhZGluZ1RyaW0tPnRyaW1GaXJz
dEZvcm1hdHRlZExpbmUpOworICAgIG1fbGVhZGluZ1RyaW0tPnRyaW1GaXJzdEZvcm1hdHRlZExp
bmUgPSBmYWxzZTsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyTGF5b3V0U3RhdGU6OmFkZExlYWRp
bmdUcmltRW5kKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgdGFyZ2V0SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQpCit7CisgICAgaWYgKG1fbGVhZGluZ1RyaW0pIHsKKyAgICAgICAgbV9sZWFkaW5nVHJp
bS0+dHJpbUxhc3RGb3JtYXR0ZWRMaW5lT25UYXJnZXQgPSAmdGFyZ2V0SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9sZWFkaW5nVHJpbSA9IHsg
ZmFsc2UsICZ0YXJnZXRJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCB9OworfQorCiBpbmxpbmUgdm9p
ZCBSZW5kZXJMYXlvdXRTdGF0ZTo6cmVzZXRMaW5lQ2xhbXAoKQogewogICAgIG1fbWF4aW11bUxp
bmVDb3VudEZvckxpbmVDbGFtcCA9IHsgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463915</attachid>
            <date>2022-12-07 07:16:47 -0800</date>
            <delta_ts>2022-12-07 11:00:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-248854-20221207071646.patch</filename>
            <type>text/plain</type>
            <size>20437</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA4ZTExNjAyMmJmZGQzNzBmODQ2YmVmZDhjNjVlMDA2Y2YwMDU4MmIwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgNiBEZWMgMjAyMiAxOTo0ODo0OSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFtsZWFkaW5n
LXRyaW1dW0lGQ10gQWRkIHN1cHBvcnQgZm9yIG5lc3RlZCBibG9jayBjb250YWluZXJzCiB3aXRo
IGxlYWRpbmctdHJpbTogZW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNDg4NTQKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBwYXRjaCBhZGRzIG11
bHRpLXBhc3MgaW5saW5lIGxheW91dCB0byBzdXBwb3J0IGxhc3QgZm9ybWF0dGVkIGxpbmUgdHJp
bW1pbmcuCgoibGVhZGluZy10cmltOiBlbmQiIHRyaW1zIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGxh
c3QgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dC4KV2hpbGUgdGhpcyBwcm9wZXJ0eSBpcyBub3Qg
aW5oZXJpdGVkLCBpdCBpcyBwcm9wYWdhdGVkIHRocm91Z2ggbmVzdGVkIGJsb2NrIGNvbnRhaW5l
cnMuCldpdGggbmVzdGVkIGJsb2NrIGNvbnRhaW5lcnMsIHdlIGNhbiBlbmQgdXAgd2l0aCBtdWx0
aXBsZSBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0cyBlLmcuCjxkaXYgc3R5bGU9ImxlYWRpbmct
dHJpbTogZW5kIj4KICA8ZGl2PgogICAgPGRpdj5maXJzdCBsaW5lPC9kaXY+CiAgPC9kaXY+CiAg
PGRpdj4gbGFzdCBsaW5lPC9kaXY+CjwvZGl2PgpUaGUgbGFzdCBmb3JtYXR0ZWQgbGluZSBjYW4g
bm90IGJlIGlkZW50aWZpZWQgdW50aWwgYWZ0ZXIgZmluaXNoaW5nIHRoZSBsYXlvdXQgcHJvY2Vz
cyBvbiB0aGUgZW50aXJlCnN1YnRyZWUgd2hlcmUgdGhlIHByb3BlcnR5IGlzIHNldC4KSW4gdGhp
cyBwYXRjaCwgd2UgcnVuIGFuIGFkZGl0aW9uYWwgaW5saW5lIGxheW91dCBvbiB0aGUgbGFzdCBm
b3JtYXR0aW5nIGNvbnRleHQgd2l0aCB0aGUgbGVhZGluZyB0cmltIChlbmQpIHNldC4KCjEuIHNl
dCAidHJpbSBzdGFydCIgKHdoZW4gYXBwbGljYWJsZSkgb24gdGhlIGxheW91dCBzdGF0ZS4KMi4g
cmVzZXQgdGhlICJ0cmltIHN0YXJ0IiBzdGF0ZSBhZnRlciB0cmltbWluZyB0aGUgZmlyc3QgbGlu
ZSAoc28gdGhhdCBzdWJzZXF1ZW50IElGQ3MgZG9uJ3QgYXBwbHkgInRyaW0gc3RhcnQiKQozLiB3
aGVuIHRoZSBlbnRpcmUgc3VidHJlZSBpcyBsYWlkIG91dCwgY2hlY2sgaWYgd2UgbmVlZCB0byBh
cHBseSAidHJpbSBlbmQnLgo0LiBmaW5kIHRoZSBsYXN0IGZvcm1hdHRpbmcgY29udGV4dAo1LiBz
ZXQgInRyaW0gZW5kIiBvbiB0aGUgbGF5b3V0IHN0YXRlIGFuZCBydW4gbGF5b3V0IG9uIHRoZSBs
YXN0IElGQy4KKEZhc3QgcGF0aCBmb3IgdGhlIHNpbXBsZSBjYXNlIHdoZW4gdGhlIGxlYWRpbmcg
dHJpbSBibG9jayBjb250YWluZXIgaXMgYWxzbyBhbiBJRkMgcm9vdC4pCgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcDoKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpsZWFkaW5nVHJpbSk6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CihXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmxheW91dEJsb2NrKToKKFdlYkNvcmU6OmZpcnN0SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRSb290KToKKFdlYkNvcmU6Omxhc3RJbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJvb3QpOgoo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpzZXRMZWFkaW5nVHJpbUZvclN1YnRyZWUpOgooV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93OjphZGp1c3RMZWFkaW5nVHJpbUFmdGVyTGF5b3V0KToKKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5GbG93Q2hpbGRyZW4pOgooV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpyZXNldExlYWRpbmdUcmltKTogRGVsZXRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
b3V0U3RhdGUuY3BwOgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6OlJlbmRlckxheW91dFN0
YXRlKToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaDoKKFdl
YkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpsZWFkaW5nVHJpbSk6CihXZWJDb3JlOjpSZW5kZXJM
YXlvdXRTdGF0ZTo6aGFzTGVhZGluZ1RyaW1TdGFydCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJM
YXlvdXRTdGF0ZTo6aGFzTGVhZGluZ1RyaW1FbmQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyTGF5
b3V0U3RhdGU6OmFkZExlYWRpbmdUcmltU3RhcnQpOgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3Rh
dGU6OnJlbW92ZUxlYWRpbmdUcmltU3RhcnQpOgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6
OmFkZExlYWRpbmdUcmltRW5kKToKKFdlYkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpoYXNMZWFk
aW5nVHJpbSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJMYXlvdXRTdGF0ZTo6bGVh
ZGluZ1RyaW0gY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6OmFk
ZExlYWRpbmdUcmltKTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpyZW1v
dmVMZWFkaW5nVHJpbSk6IERlbGV0ZWQuCi0tLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuY3BwICAgIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcCAgfCAxNDkgKysrKysrKysrKysrKy0tLS0tCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggICAgfCAgIDUgKy0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggICAgICB8ICAgMyArLQogLi4uL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcCAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaCAgfCAgNDggKysrKy0tCiA2IGZpbGVzIGNoYW5n
ZWQsIDE1NiBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggOTgyNWMyMWIwZTJkLi41OGNiYjlm
MDA5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxp
bmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAK
QEAgLTQ3NSwxMSArNDc1LDEzIEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxMYXlvdXQ6
OkJsb2NrTGF5b3V0U3RhdGU6OkxpbmVDbGFtcD4gbGluZUNsYW1wKGNvbnN0CiAKIHN0YXRpYyBp
bmxpbmUgTGF5b3V0OjpCbG9ja0xheW91dFN0YXRlOjpMZWFkaW5nVHJpbSBsZWFkaW5nVHJpbShj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIHJvb3RSZW5kZXJlcikKIHsKLSAgICBhdXRvIGxlYWRpbmdU
cmltU2lkZXMgPSByb290UmVuZGVyZXIudmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQo
KS5sYXlvdXRTdGF0ZSgpLT5sZWFkaW5nVHJpbSgpOworICAgIGF1dG8qIGxheW91dFN0YXRlID0g
cm9vdFJlbmRlcmVyLnZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkubGF5b3V0U3Rh
dGUoKTsKKyAgICBpZiAoIWxheW91dFN0YXRlKQorICAgICAgICByZXR1cm4geyB9OwogICAgIGF1
dG8gbGVhZGluZ1RyaW1Gb3JJRkMgPSBMYXlvdXQ6OkJsb2NrTGF5b3V0U3RhdGU6OkxlYWRpbmdU
cmltIHsgfTsKLSAgICBpZiAobGVhZGluZ1RyaW1TaWRlcy5jb250YWlucyhSZW5kZXJMYXlvdXRT
dGF0ZTo6TGVhZGluZ1RyaW1TaWRlOjpTdGFydCkpCisgICAgaWYgKGxheW91dFN0YXRlLT5oYXNM
ZWFkaW5nVHJpbVN0YXJ0KCkpCiAgICAgICAgIGxlYWRpbmdUcmltRm9ySUZDLmFkZChMYXlvdXQ6
OkJsb2NrTGF5b3V0U3RhdGU6OkxlYWRpbmdUcmltU2lkZTo6U3RhcnQpOwotICAgIGlmIChsZWFk
aW5nVHJpbVNpZGVzLmNvbnRhaW5zKFJlbmRlckxheW91dFN0YXRlOjpMZWFkaW5nVHJpbVNpZGU6
OkVuZCkpCisgICAgaWYgKGxheW91dFN0YXRlLT5oYXNMZWFkaW5nVHJpbUVuZChyb290UmVuZGVy
ZXIpKQogICAgICAgICBsZWFkaW5nVHJpbUZvcklGQy5hZGQoTGF5b3V0OjpCbG9ja0xheW91dFN0
YXRlOjpMZWFkaW5nVHJpbVNpZGU6OkVuZCk7CiAgICAgcmV0dXJuIGxlYWRpbmdUcmltRm9ySUZD
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRl
eCAwZTQxMzdiMmIwMzIuLjg0NGQ5MzAzNWZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTQ4MCw0MCArNDgwLDYgQEAgdm9pZCBSZW5kZXJC
bG9ja0Zsb3c6OnNldENoaWxkcmVuSW5saW5lKGJvb2wgdmFsdWUpCiAgICAgUmVuZGVyQmxvY2s6
OnNldENoaWxkcmVuSW5saW5lKHZhbHVlKTsKIH0KIAotdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnNl
dExlYWRpbmdUcmltRm9yU3VidHJlZSgpCi17Ci0gICAgYXV0byogbGF5b3V0U3RhdGUgPSB2aWV3
KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmxheW91dFN0YXRlKCk7Ci0gICAgaWYgKCFs
YXlvdXRTdGF0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gbGVhZGluZ1RyaW0gPSBzdHls
ZSgpLmxlYWRpbmdUcmltKCk7Ci0gICAgaWYgKGxlYWRpbmdUcmltID09IExlYWRpbmdUcmltOjpO
b3JtYWwpIHsKLSAgICAgICAgaWYgKGJvcmRlckFuZFBhZGRpbmdTdGFydCgpKSB7Ci0gICAgICAg
ICAgICAvLyBGb3IgYmxvY2sgY29udGFpbmVyczogdHJpbSB0aGUgYmxvY2stc3RhcnQgc2lkZSBv
ZiB0aGUgZmlyc3QgZm9ybWF0dGVkIGxpbmUgdG8gdGhlIGNvcnJlc3BvbmRpbmcKLSAgICAgICAg
ICAgIC8vIHRleHQtZWRnZSBtZXRyaWMgb2YgaXRzIHJvb3QgaW5saW5lIGJveC4gSWYgdGhlcmUg
aXMgbm8gc3VjaCBsaW5lLCBvciBpZiB0aGVyZSBpcyBpbnRlcnZlbmluZyBub24temVybyBwYWRk
aW5nIG9yIGJvcmRlcnMsCi0gICAgICAgICAgICAvLyB0aGVyZSBpcyBubyBlZmZlY3QuCi0gICAg
ICAgICAgICBsYXlvdXRTdGF0ZS0+cmVzZXRMZWFkaW5nVHJpbSgpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBuZXN0ZWQg
bGVhZGluZyB0cmltcyBpZiBhcHBsaWNhYmxlLgotICAgIGxheW91dFN0YXRlLT5yZXNldExlYWRp
bmdUcmltKCk7Ci0gICAgaWYgKGxlYWRpbmdUcmltID09IExlYWRpbmdUcmltOjpTdGFydCB8fCBs
ZWFkaW5nVHJpbSA9PSBMZWFkaW5nVHJpbTo6Qm90aCkKLSAgICAgICAgbGF5b3V0U3RhdGUtPmFk
ZExlYWRpbmdUcmltKFJlbmRlckxheW91dFN0YXRlOjpMZWFkaW5nVHJpbVNpZGU6OlN0YXJ0KTsK
LSAgICBpZiAobGVhZGluZ1RyaW0gPT0gTGVhZGluZ1RyaW06OkVuZCB8fCBsZWFkaW5nVHJpbSA9
PSBMZWFkaW5nVHJpbTo6Qm90aCkKLSAgICAgICAgbGF5b3V0U3RhdGUtPmFkZExlYWRpbmdUcmlt
KFJlbmRlckxheW91dFN0YXRlOjpMZWFkaW5nVHJpbVNpZGU6OkVuZCk7Ci19Ci0KLXZvaWQgUmVu
ZGVyQmxvY2tGbG93OjpyZXNldExlYWRpbmdUcmltKCkKLXsKLSAgICBhdXRvKiBsYXlvdXRTdGF0
ZSA9IHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkubGF5b3V0U3RhdGUoKTsKLSAg
ICBpZiAoIWxheW91dFN0YXRlIHx8ICFsYXlvdXRTdGF0ZS0+bGVhZGluZ1RyaW0oKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGlmIChsYXlvdXRTdGF0ZS0+bGVhZGluZ1RyaW0oKS5jb250YWlucyhS
ZW5kZXJMYXlvdXRTdGF0ZTo6TGVhZGluZ1RyaW1TaWRlOjpTdGFydCkgJiYgaGFzTGluZXMoKSkg
ewotICAgICAgICAvLyBPbmx5IHRoZSBmaXJzdCBmb3JtYXR0ZWQgbGluZSBpcyB0cmltbWVkLgot
ICAgICAgICBsYXlvdXRTdGF0ZS0+cmVtb3ZlTGVhZGluZ1RyaW0oUmVuZGVyTGF5b3V0U3RhdGU6
OkxlYWRpbmdUcmltU2lkZTo6U3RhcnQpOwotICAgIH0KLX0KLQogdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9n
aWNhbEhlaWdodCkKIHsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CkBAIC01NjYsMTIgKzUz
Miw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hp
bGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxICiAgICAgICAgIGlmICghZmlyc3RDaGlsZCgp
ICYmICFpc0Fub255bW91c0Jsb2NrKCkpCiAgICAgICAgICAgICBzZXRDaGlsZHJlbklubGluZSh0
cnVlKTsKICAgICAgICAgZGlydHlGb3JMYXlvdXRGcm9tUGVyY2VudGFnZUhlaWdodERlc2NlbmRh
bnRzKCk7Ci0gICAgICAgIHNldExlYWRpbmdUcmltRm9yU3VidHJlZSgpOwotCi0gICAgICAgIGlm
IChjaGlsZHJlbklubGluZSgpKQotICAgICAgICAgICAgbGF5b3V0SW5saW5lQ2hpbGRyZW4ocmVs
YXlvdXRDaGlsZHJlbiwgcmVwYWludExvZ2ljYWxUb3AsIHJlcGFpbnRMb2dpY2FsQm90dG9tKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgbGF5b3V0QmxvY2tDaGlsZHJlbihyZWxheW91dENo
aWxkcmVuLCBtYXhGbG9hdExvZ2ljYWxCb3R0b20pOworICAgICAgICBsYXlvdXRJbkZsb3dDaGls
ZHJlbihyZWxheW91dENoaWxkcmVuLCByZXBhaW50TG9naWNhbFRvcCwgcmVwYWludExvZ2ljYWxC
b3R0b20sIG1heEZsb2F0TG9naWNhbEJvdHRvbSk7CiAgICAgICAgIC8vIEV4cGFuZCBvdXIgaW50
cmluc2ljIGhlaWdodCB0byBlbmNvbXBhc3MgZmxvYXRzLgogICAgICAgICBMYXlvdXRVbml0IHRv
QWRkID0gYm9yZGVyQW5kUGFkZGluZ0FmdGVyKCkgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7
CiAgICAgICAgIGlmIChsb3dlc3RGbG9hdExvZ2ljYWxCb3R0b20oKSA+IChsb2dpY2FsSGVpZ2h0
KCkgLSB0b0FkZCkgJiYgY3JlYXRlc05ld0Zvcm1hdHRpbmdDb250ZXh0KCkpCkBAIC01ODAsNyAr
NTQxLDYgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRD
aGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEgKICAgICAgICAgICAgIHNldEV2ZXJIYWRM
YXlvdXQodHJ1ZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBy
ZXNldExlYWRpbmdUcmltKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gd2hpbGUgKHRydWUpOwog
CkBAIC02NzYsNiArNjM2LDExMyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSAogICAgIGNsZWFy
TmVlZHNMYXlvdXQoKTsKIH0KIAorc3RhdGljIFJlbmRlckJsb2NrRmxvdyogZmlyc3RJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBlbmNsb3NpbmdCbG9j
a0NvbnRhaW5lcikKK3sKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYWZ0ZXIgaW1wbGVtZW50
aW5nICJsYXN0IGxpbmUgZGFtYWdlIi4KKyAgICBmb3IgKGF1dG8qIGNoaWxkID0gZW5jbG9zaW5n
QmxvY2tDb250YWluZXIuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlv
dXNTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFpczxSZW5kZXJCbG9ja0Zsb3c+KGNoaWxkKSB8
fCBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpjaGlsZCkuY3JlYXRlc05ld0Zvcm1hdHRpbmdD
b250ZXh0KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byYgYmxvY2tDb250
YWluZXIgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpjaGlsZCk7CisgICAgICAgIGlmIChi
bG9ja0NvbnRhaW5lci5oYXNMaW5lcygpKQorICAgICAgICAgICAgcmV0dXJuICZibG9ja0NvbnRh
aW5lcjsKKyAgICAgICAgaWYgKGF1dG8qIGRlc2NlbmRhbnRSb290ID0gZmlyc3RJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dFJvb3QoYmxvY2tDb250YWluZXIpKQorICAgICAgICAgICAgcmV0dXJuIGRl
c2NlbmRhbnRSb290OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFJl
bmRlckJsb2NrRmxvdyogbGFzdElubGluZUZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cmIGVuY2xvc2luZ0Jsb2NrQ29udGFpbmVyKQoreworICAgIGZvciAoYXV0byog
Y2hpbGQgPSBlbmNsb3NpbmdCbG9ja0NvbnRhaW5lci5sYXN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7CisgICAgICAgIGlmICghaXM8UmVuZGVyQmxv
Y2tGbG93PihjaGlsZCkgfHwgZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqY2hpbGQpLmNyZWF0
ZXNOZXdGb3JtYXR0aW5nQ29udGV4dCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGF1dG8mIGJsb2NrQ29udGFpbmVyID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqY2hpbGQp
OworICAgICAgICBpZiAoYmxvY2tDb250YWluZXIuaGFzTGluZXMoKSkKKyAgICAgICAgICAgIHJl
dHVybiAmYmxvY2tDb250YWluZXI7CisgICAgICAgIGlmIChhdXRvKiBkZXNjZW5kYW50Um9vdCA9
IGxhc3RJbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJvb3QoYmxvY2tDb250YWluZXIpKQorICAgICAg
ICAgICAgcmV0dXJuIGRlc2NlbmRhbnRSb290OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKwordm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnNldExlYWRpbmdUcmltRm9yU3VidHJlZShjb25z
dCBSZW5kZXJCbG9ja0Zsb3cqIGlubGluZUZvcm1hdHRpbmdDb250ZXh0Um9vdEZvckxlYWRpbmdU
cmltRW5kKQoreworICAgIGF1dG8qIGxheW91dFN0YXRlID0gdmlldygpLmZyYW1lVmlldygpLmxh
eW91dENvbnRleHQoKS5sYXlvdXRTdGF0ZSgpOworICAgIGlmICghbGF5b3V0U3RhdGUpCisgICAg
ICAgIHJldHVybjsKKyAgICBhdXRvIGxlYWRpbmdUcmltID0gc3R5bGUoKS5sZWFkaW5nVHJpbSgp
OworICAgIGlmIChsZWFkaW5nVHJpbSA9PSBMZWFkaW5nVHJpbTo6Tm9ybWFsKSB7CisgICAgICAg
IGlmIChib3JkZXJBbmRQYWRkaW5nU3RhcnQoKSkgeworICAgICAgICAgICAgLy8gRm9yIGJsb2Nr
IGNvbnRhaW5lcnM6IHRyaW0gdGhlIGJsb2NrLXN0YXJ0IHNpZGUgb2YgdGhlIGZpcnN0IGZvcm1h
dHRlZCBsaW5lIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAvLyB0ZXh0LWVkZ2Ug
bWV0cmljIG9mIGl0cyByb290IGlubGluZSBib3guIElmIHRoZXJlIGlzIG5vIHN1Y2ggbGluZSwg
b3IgaWYgdGhlcmUgaXMgaW50ZXJ2ZW5pbmcgbm9uLXplcm8gcGFkZGluZyBvciBib3JkZXJzLAor
ICAgICAgICAgICAgLy8gdGhlcmUgaXMgbm8gZWZmZWN0LgorICAgICAgICAgICAgbGF5b3V0U3Rh
dGUtPnJlc2V0TGVhZGluZ1RyaW0oKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAg
fQorICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgbmVzdGVkIGxlYWRpbmcgdHJpbXMgaWYg
YXBwbGljYWJsZS4KKyAgICBsYXlvdXRTdGF0ZS0+cmVzZXRMZWFkaW5nVHJpbSgpOworICAgIGF1
dG8gYXBwbHlMZWFkaW5nVHJpbVN0YXJ0ID0gbGVhZGluZ1RyaW0gPT0gTGVhZGluZ1RyaW06OlN0
YXJ0IHx8IGxlYWRpbmdUcmltID09IExlYWRpbmdUcmltOjpCb3RoOworICAgIGF1dG8gYXBwbHlM
ZWFkaW5nVHJpbUVuZCA9IChsZWFkaW5nVHJpbSA9PSBMZWFkaW5nVHJpbTo6RW5kIHx8IGxlYWRp
bmdUcmltID09IExlYWRpbmdUcmltOjpCb3RoKSAmJiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJv
b3RGb3JMZWFkaW5nVHJpbUVuZDsKKyAgICBpZiAoYXBwbHlMZWFkaW5nVHJpbUVuZCkgeworICAg
ICAgICBsYXlvdXRTdGF0ZS0+YWRkTGVhZGluZ1RyaW1FbmQoKmlubGluZUZvcm1hdHRpbmdDb250
ZXh0Um9vdEZvckxlYWRpbmdUcmltRW5kKTsKKyAgICAgICAgLy8gRklYTUU6IEluc3RlYWQgd2Ug
c2hvdWxkIGp1c3QgZGFtYWdlIHRoZSBsYXN0IGxpbmUuCisgICAgICAgIGlmIChhdXRvKiBmaXJz
dEZvcm1hdHRlZExpbmVSb290ID0gZmlyc3RJbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJvb3QoKnRo
aXMpOyBmaXJzdEZvcm1hdHRlZExpbmVSb290ICYmIGZpcnN0Rm9ybWF0dGVkTGluZVJvb3QgIT0g
aW5saW5lRm9ybWF0dGluZ0NvbnRleHRSb290Rm9yTGVhZGluZ1RyaW1FbmQpIHsKKyAgICAgICAg
ICAgIC8vIFdoZW4gd2UgcnVuIGEgImxhc3QgbGluZSIgbGF5b3V0IG9uIHRoZSBsYXN0IGZvcm1h
dHRpbmcgY29udGV4dCwgd2Ugc2hvdWxkIG5vdCB0cmltIHRoZSBmaXJzdCBsaW5lIGV2ZXIgKHNl
ZSBGSVhNRSkuCisgICAgICAgICAgICBhcHBseUxlYWRpbmdUcmltU3RhcnQgPSBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBpZiAoYXBwbHlMZWFkaW5nVHJpbVN0YXJ0KQorICAgICAgICBs
YXlvdXRTdGF0ZS0+YWRkTGVhZGluZ1RyaW1TdGFydCgpOworfQorCit2b2lkIFJlbmRlckJsb2Nr
Rmxvdzo6YWRqdXN0TGVhZGluZ1RyaW1BZnRlckxheW91dCgpCit7CisgICAgYXV0byogbGF5b3V0
U3RhdGUgPSB2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmxheW91dFN0YXRlKCk7
CisgICAgaWYgKCFsYXlvdXRTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChzdHlsZSgp
LmxlYWRpbmdUcmltKCkgIT0gTGVhZGluZ1RyaW06Ok5vcm1hbCkKKyAgICAgICAgcmV0dXJuIGxh
eW91dFN0YXRlLT5yZXNldExlYWRpbmdUcmltKCk7CisgICAgLy8gVGhpcyBpcyBwcm9wYWdhdGVk
IGxlYWRpbmctdHJpbS4KKyAgICBpZiAobGF5b3V0U3RhdGUtPmhhc0xlYWRpbmdUcmltU3RhcnQo
KSAmJiBoYXNMaW5lcygpKSB7CisgICAgICAgIC8vIE9ubHkgdGhlIGZpcnN0IGZvcm1hdHRlZCBs
aW5lIGlzIHRyaW1tZWQuCisgICAgICAgIGxheW91dFN0YXRlLT5yZW1vdmVMZWFkaW5nVHJpbVN0
YXJ0KCk7CisgICAgfQorfQorCit2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5GbG93Q2hp
bGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbFRv
cCwgTGF5b3V0VW5pdCYgcmVwYWludExvZ2ljYWxCb3R0b20sIExheW91dFVuaXQmIG1heEZsb2F0
TG9naWNhbEJvdHRvbSkKK3sKKyAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkgeworICAgICAgICBz
ZXRMZWFkaW5nVHJpbUZvclN1YnRyZWUodGhpcyk7CisgICAgICAgIGxheW91dElubGluZUNoaWxk
cmVuKHJlbGF5b3V0Q2hpbGRyZW4sIHJlcGFpbnRMb2dpY2FsVG9wLCByZXBhaW50TG9naWNhbEJv
dHRvbSk7CisgICAgICAgIGFkanVzdExlYWRpbmdUcmltQWZ0ZXJMYXlvdXQoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIFdpdGggYmxvY2sgY2hpbGRyZW4sIHRoZXJlJ3Mgbm8g
d2F5IHRvIHRlbGwgd2hhdCB0aGUgbGFzdCBmb3JtYXR0ZWQgbGluZSBpcyB1bnRpbCBhZnRlciB3
ZSBmaW5pc2hlZCBsYXlpbmcgb3V0IHRoZSBzdWJ0cmVlLgorICAgIHNldExlYWRpbmdUcmltRm9y
U3VidHJlZSgpOworICAgIGxheW91dEJsb2NrQ2hpbGRyZW4ocmVsYXlvdXRDaGlsZHJlbiwgbWF4
RmxvYXRMb2dpY2FsQm90dG9tKTsKKyAgICBhZGp1c3RMZWFkaW5nVHJpbUFmdGVyTGF5b3V0KCk7
CisKKyAgICBhdXRvIGhhbmRsZUxlYWRpbmdUcmltRW5kID0gWyZdIHsKKyAgICAgICAgYXV0byBo
YXNMZWFkaW5nVHJpbUVuZCA9IHN0eWxlKCkubGVhZGluZ1RyaW0oKSA9PSBMZWFkaW5nVHJpbTo6
RW5kIHx8IHN0eWxlKCkubGVhZGluZ1RyaW0oKSA9PSBMZWFkaW5nVHJpbTo6Qm90aDsKKyAgICAg
ICAgaWYgKCFoYXNMZWFkaW5nVHJpbUVuZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Ly8gRGlydHkgdGhlIGxhc3QgZm9ybWF0dGVkIGxpbmUgKGluIHRoZSBsYXN0IElGQykgYW5kIGlz
c3VlIHJlbGF5b3V0IHdpdGggZm9yY2luZyB0cmltbWluZyB0aGUgbGFzdCBsaW5lLgorICAgICAg
ICBpZiAoYXV0byogcm9vdEZvckxhc3RGb3JtYXR0ZWRMaW5lID0gbGFzdElubGluZUZvcm1hdHRp
bmdDb250ZXh0Um9vdCgqdGhpcykpIHsKKyAgICAgICAgICAgIGZvciAoUmVuZGVyQmxvY2sqIGFu
Y2VzdG9yID0gcm9vdEZvckxhc3RGb3JtYXR0ZWRMaW5lOyBhbmNlc3RvciAmJiBhbmNlc3RvciAh
PSB0aGlzOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5jb250YWluaW5nQmxvY2soKSkgeworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBkYW1hZ2UgdGhlIGxhc3Qg
bGluZSBvbmx5LgorICAgICAgICAgICAgICAgIGFuY2VzdG9yLT5zZXROZWVkc0xheW91dChNYXJr
T25seVRoaXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZXRMZWFkaW5nVHJpbUZv
clN1YnRyZWUocm9vdEZvckxhc3RGb3JtYXR0ZWRMaW5lKTsKKyAgICAgICAgICAgIGxheW91dEJs
b2NrQ2hpbGRyZW4ocmVsYXlvdXRDaGlsZHJlbiwgbWF4RmxvYXRMb2dpY2FsQm90dG9tKTsKKyAg
ICAgICAgICAgIGFkanVzdExlYWRpbmdUcmltQWZ0ZXJMYXlvdXQoKTsKKyAgICAgICAgfQorICAg
IH07CisgICAgaGFuZGxlTGVhZGluZ1RyaW1FbmQoKTsKK30KKwogdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OmxheW91dEJsb2NrQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0
JiBtYXhGbG9hdExvZ2ljYWxCb3R0b20pCiB7CiAgICAgTGF5b3V0VW5pdCBiZWZvcmVFZGdlID0g
Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5oCmluZGV4IGFlMzM0ZjQ2YTEzOS4uNjkwMzQ5YWFiM2UyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC02Niw2ICs2Niw3IEBAIHBy
b3RlY3RlZDoKIAogICAgIC8vIFJlbmRlckJsb2NrRmxvdyBhbHdheXMgY29udGFpbnMgZWl0aGVy
IGxpbmVzIG9yIHBhcmFncmFwaHMuIFdoZW4gdGhlIGNoaWxkcmVuIGFyZSBhbGwgYmxvY2tzIChl
LmcuIHBhcmFncmFwaHMpLCB3ZSBjYWxsIGxheW91dEJsb2NrQ2hpbGRyZW4uCiAgICAgLy8gV2hl
biB0aGUgY2hpbGRyZW4gYXJlIGFsbCBpbmxpbmUgKGUuZy4sIGxpbmVzKSwgd2UgY2FsbCBsYXlv
dXRJbmxpbmVDaGlsZHJlbi4KKyAgICB2b2lkIGxheW91dEluRmxvd0NoaWxkcmVuKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVwYWludExvZ2ljYWxUb3AsIExheW91dFVuaXQm
IHJlcGFpbnRMb2dpY2FsQm90dG9tLCBMYXlvdXRVbml0JiBtYXhGbG9hdExvZ2ljYWxCb3R0b20p
OwogICAgIHZvaWQgbGF5b3V0QmxvY2tDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQmIG1heEZsb2F0TG9naWNhbEJvdHRvbSk7CiAgICAgdm9pZCBsYXlvdXRJbmxpbmVD
aGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJlcGFpbnRMb2dpY2Fs
VG9wLCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbEJvdHRvbSk7CiAKQEAgLTUyNiw4ICs1Mjcs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lk
dGgpIGNvbnN0OwogICAgIHZvaWQgYWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9uKFJlbmRlckJv
eCYgY2hpbGRCb3gsIExheW91dFVuaXQmIGxvZ2ljYWxUb3BPZmZzZXQsIExheW91dFVuaXQmIG1h
cmdpbkJlZm9yZU9mZnNldCk7CiAKLSAgICB2b2lkIHNldExlYWRpbmdUcmltRm9yU3VidHJlZSgp
OwotICAgIHZvaWQgcmVzZXRMZWFkaW5nVHJpbSgpOworICAgIHZvaWQgc2V0TGVhZGluZ1RyaW1G
b3JTdWJ0cmVlKGNvbnN0IFJlbmRlckJsb2NrRmxvdyogaW5saW5lRm9ybWF0dGluZ0NvbnRleHRS
b290Rm9yTGVhZGluZ1RyaW1FbmQgPSBudWxscHRyKTsKKyAgICB2b2lkIGFkanVzdExlYWRpbmdU
cmltQWZ0ZXJMYXlvdXQoKTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgaW50
IG1fd2lkdGhGb3JUZXh0QXV0b3NpemluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oCmluZGV4IGExMGU0MGE4MWM2Ni4uZjA3NzlmNGUwZDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTMxMCw2ICszMTAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwYWludEZvY3VzUmluZyhjb25zdCBQYWludEluZm8mLCBjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IFZlY3RvcjxMYXlvdXRSZWN0PiYgZm9jdXNSaW5nUmVjdHMpIGNvbnN0Owog
CiAgICAgdmlydHVhbCBib29sIGVzdGFibGlzaGVzSW5kZXBlbmRlbnRGb3JtYXR0aW5nQ29udGV4
dCgpIGNvbnN0OworICAgIGJvb2wgY3JlYXRlc05ld0Zvcm1hdHRpbmdDb250ZXh0KCkgY29uc3Q7
CiAKIHByb3RlY3RlZDoKICAgICBlbnVtIEJhc2VUeXBlRmxhZyB7CkBAIC0zNjMsOCArMzY0LDYg
QEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBpc1Zpc2libGVJblZpZXdwb3J0KCkgY29uc3Q7CiAK
LSAgICBib29sIGNyZWF0ZXNOZXdGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0OwotCiAgICAgYm9v
bCBzaG91bGRBcHBseUxheW91dE9yUGFpbnRDb250YWlubWVudChib29sKSBjb25zdDsKICAgICBi
b29sIHNob3VsZEFwcGx5U2l6ZU9yU3R5bGVDb250YWlubWVudChib29sKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5jcHAKaW5kZXggM2Iy
YzllYWM0MGUyLi4xOWZmY2M4YWZkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheW91dFN0YXRlLmNwcApAQCAtNjIsNyArNjIsNyBAQCBSZW5kZXJMYXlvdXRTdGF0
ZTo6UmVuZGVyTGF5b3V0U3RhdGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIElzUGFnaW5hdGVk
IGlzUGFnaQogICAgIH0KIH0KIAotUmVuZGVyTGF5b3V0U3RhdGU6OlJlbmRlckxheW91dFN0YXRl
KGNvbnN0IEZyYW1lVmlld0xheW91dENvbnRleHQ6OkxheW91dFN0YXRlU3RhY2smIGxheW91dFN0
YXRlU3RhY2ssIFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldCwg
TGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCwgYm9vbCBwYWdlTG9naWNhbEhlaWdodENoYW5n
ZWQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtYXhpbXVtTGluZUNvdW50Rm9yTGluZUNsYW1wLCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcCwgTGVhZGlu
Z1RyaW0gbGVhZGluZ1RyaW0pCitSZW5kZXJMYXlvdXRTdGF0ZTo6UmVuZGVyTGF5b3V0U3RhdGUo
Y29uc3QgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6TGF5b3V0U3RhdGVTdGFjayYgbGF5b3V0U3Rh
dGVTdGFjaywgUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0LCBM
YXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0LCBib29sIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdl
ZCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1heGltdW1MaW5lQ291bnRGb3JMaW5lQ2xhbXAsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiB2aXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1wLCBzdGQ6Om9w
dGlvbmFsPExlYWRpbmdUcmltPiBsZWFkaW5nVHJpbSkKICAgICA6IG1fY2xpcHBlZChmYWxzZSkK
ICAgICAsIG1faXNQYWdpbmF0ZWQoZmFsc2UpCiAgICAgLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hh
bmdlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXlvdXRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRl
LmgKaW5kZXggYWM0Y2IxOTM3NWNkLi44MTRmZTM3NGJiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDkgKzQzLDkgQEAgY2xhc3MgUmVuZGVyTGF5b3V0
U3RhdGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbmRlckxheW91dFN0YXRlKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBlbnVtIExlYWRpbmdUcmltU2lk
ZSA6IHVpbnQ4X3QgewotICAgICAgICBTdGFydCA9IDEgPDwgMCwKLSAgICAgICAgRW5kICAgPSAx
IDw8IDEKKyAgICBzdHJ1Y3QgTGVhZGluZ1RyaW0geworICAgICAgICBib29sIHRyaW1GaXJzdEZv
cm1hdHRlZExpbmUgeyBmYWxzZSB9OworICAgICAgICBXZWFrUHRyPGNvbnN0IFJlbmRlckJsb2Nr
Rmxvdz4gdHJpbUxhc3RGb3JtYXR0ZWRMaW5lT25UYXJnZXQ7CiAgICAgfTsKIAogICAgIFJlbmRl
ckxheW91dFN0YXRlKCkKQEAgLTU3LDcgKzU4LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgewog
ICAgIH0KLSAgICBSZW5kZXJMYXlvdXRTdGF0ZShjb25zdCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0
OjpMYXlvdXRTdGF0ZVN0YWNrJiwgUmVuZGVyQm94JiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0
LCBMYXlvdXRVbml0IHBhZ2VIZWlnaHQsIGJvb2wgcGFnZUhlaWdodENoYW5nZWQsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBtYXhpbXVtTGluZUNvdW50Rm9yTGluZUNsYW1wLCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcCwgT3B0aW9uU2V0PExlYWRpbmdU
cmltU2lkZT4pOworICAgIFJlbmRlckxheW91dFN0YXRlKGNvbnN0IEZyYW1lVmlld0xheW91dENv
bnRleHQ6OkxheW91dFN0YXRlU3RhY2smLCBSZW5kZXJCb3gmLCBjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXQsIExheW91dFVuaXQgcGFnZUhlaWdodCwgYm9vbCBwYWdlSGVpZ2h0Q2hhbmdlZCwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IG1heGltdW1MaW5lQ291bnRGb3JMaW5lQ2xhbXAsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiB2aXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1wLCBzdGQ6Om9wdGlvbmFs
PExlYWRpbmdUcmltPik7CiAgICAgZW51bSBjbGFzcyBJc1BhZ2luYXRlZCB7IE5vLCBZZXMgfTsK
ICAgICBleHBsaWNpdCBSZW5kZXJMYXlvdXRTdGF0ZShSZW5kZXJFbGVtZW50JiwgSXNQYWdpbmF0
ZWQgPSBJc1BhZ2luYXRlZDo6Tm8pOwogCkBAIC0xMDAsMTEgKzEwMSwxNCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRWaXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1wKHNpemVfdCB2aXNpYmxlTGlu
ZUNvdW50KSB7IG1fdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcCA9IHZpc2libGVMaW5lQ291
bnQ7IH0KICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gdmlzaWJsZUxpbmVDb3VudEZvckxpbmVD
bGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcDsgfQog
Ci0gICAgdXNpbmcgTGVhZGluZ1RyaW0gPSBPcHRpb25TZXQ8TGVhZGluZ1RyaW1TaWRlPjsKLSAg
ICBib29sIGhhc0xlYWRpbmdUcmltKCkgY29uc3QgeyByZXR1cm4gIWxlYWRpbmdUcmltKCkuaXNF
bXB0eSgpOyB9Ci0gICAgTGVhZGluZ1RyaW0gbGVhZGluZ1RyaW0oKSBjb25zdCB7IHJldHVybiBt
X2xlYWRpbmdUcmltOyB9Ci0gICAgdm9pZCBhZGRMZWFkaW5nVHJpbShMZWFkaW5nVHJpbVNpZGUg
bGVhZGluZ1RyaW0pIHsgbV9sZWFkaW5nVHJpbS5hZGQobGVhZGluZ1RyaW0pOyB9Ci0gICAgdm9p
ZCByZW1vdmVMZWFkaW5nVHJpbShMZWFkaW5nVHJpbVNpZGUgbGVhZGluZ1RyaW0pIHsgbV9sZWFk
aW5nVHJpbS5yZW1vdmUobGVhZGluZ1RyaW0pOyB9CisgICAgc3RkOjpvcHRpb25hbDxMZWFkaW5n
VHJpbT4gbGVhZGluZ1RyaW0oKSB7IHJldHVybiBtX2xlYWRpbmdUcmltOyB9CisgICAgYm9vbCBo
YXNMZWFkaW5nVHJpbVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWFkaW5nVHJpbSAmJiBtX2xl
YWRpbmdUcmltLT50cmltRmlyc3RGb3JtYXR0ZWRMaW5lOyB9CisgICAgYm9vbCBoYXNMZWFkaW5n
VHJpbUVuZChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGNhbmRpZGF0ZSkgY29uc3QgeyByZXR1cm4g
bV9sZWFkaW5nVHJpbSAmJiBtX2xlYWRpbmdUcmltLT50cmltTGFzdEZvcm1hdHRlZExpbmVPblRh
cmdldC5nZXQoKSA9PSAmY2FuZGlkYXRlOyB9CisKKyAgICB2b2lkIGFkZExlYWRpbmdUcmltU3Rh
cnQoKTsKKyAgICB2b2lkIHJlbW92ZUxlYWRpbmdUcmltU3RhcnQoKTsKKworICAgIHZvaWQgYWRk
TGVhZGluZ1RyaW1FbmQoY29uc3QgUmVuZGVyQmxvY2tGbG93JiB0YXJnZXRJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCk7CiAgICAgdm9pZCByZXNldExlYWRpbmdUcmltKCkgeyBtX2xlYWRpbmdUcmlt
ID0geyB9OyB9CiAKIHByaXZhdGU6CkBAIC0xNDksNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBM
YXlvdXRTaXplIG1fbGluZUdyaWRQYWdpbmF0aW9uT3JpZ2luOwogICAgIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBtX21heGltdW1MaW5lQ291bnRGb3JMaW5lQ2xhbXA7CiAgICAgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IG1fdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcDsKLSAgICBMZWFkaW5nVHJp
bSBtX2xlYWRpbmdUcmltOworICAgIHN0ZDo6b3B0aW9uYWw8TGVhZGluZ1RyaW0+IG1fbGVhZGlu
Z1RyaW07CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBSZW5kZXJFbGVtZW50KiBtX3JlbmRlcmVy
IHsgbnVsbHB0ciB9OwogI2VuZGlmCkBAIC0xOTgsNiArMjAyLDMwIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3B1c2hlZCB7IGZhbHNlIH07CiB9OwogCitpbmxpbmUgdm9pZCBSZW5kZXJMYXlvdXRT
dGF0ZTo6YWRkTGVhZGluZ1RyaW1TdGFydCgpCit7CisgICAgaWYgKG1fbGVhZGluZ1RyaW0pIHsK
KyAgICAgICAgbV9sZWFkaW5nVHJpbS0+dHJpbUZpcnN0Rm9ybWF0dGVkTGluZSA9IHRydWU7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9sZWFkaW5nVHJpbSA9IHsgdHJ1ZSwgeyB9IH07
Cit9CisKK2lubGluZSB2b2lkIFJlbmRlckxheW91dFN0YXRlOjpyZW1vdmVMZWFkaW5nVHJpbVN0
YXJ0KCkKK3sKKyAgICBBU1NFUlQobV9sZWFkaW5nVHJpbSAmJiBtX2xlYWRpbmdUcmltLT50cmlt
Rmlyc3RGb3JtYXR0ZWRMaW5lKTsKKyAgICBtX2xlYWRpbmdUcmltLT50cmltRmlyc3RGb3JtYXR0
ZWRMaW5lID0gZmFsc2U7Cit9CisKK2lubGluZSB2b2lkIFJlbmRlckxheW91dFN0YXRlOjphZGRM
ZWFkaW5nVHJpbUVuZChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHRhcmdldElubGluZUZvcm1hdHRp
bmdDb250ZXh0KQoreworICAgIGlmIChtX2xlYWRpbmdUcmltKSB7CisgICAgICAgIG1fbGVhZGlu
Z1RyaW0tPnRyaW1MYXN0Rm9ybWF0dGVkTGluZU9uVGFyZ2V0ID0gJnRhcmdldElubGluZUZvcm1h
dHRpbmdDb250ZXh0OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbGVhZGluZ1RyaW0g
PSB7IGZhbHNlLCAmdGFyZ2V0SW5saW5lRm9ybWF0dGluZ0NvbnRleHQgfTsKK30KKwogaW5saW5l
IHZvaWQgUmVuZGVyTGF5b3V0U3RhdGU6OnJlc2V0TGluZUNsYW1wKCkKIHsKICAgICBtX21heGlt
dW1MaW5lQ291bnRGb3JMaW5lQ2xhbXAgPSB7IH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463925</attachid>
            <date>2022-12-07 11:01:00 -0800</date>
            <delta_ts>2022-12-07 16:45:24 -0800</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-248854-20221207110059.patch</filename>
            <type>text/plain</type>
            <size>21007</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBjNzhlNzA5YzEzYzgwOTRjYmIyYzc2NGNhNDNiOTNkNzM1MGM3YzZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgNiBEZWMgMjAyMiAxOTo0ODo0OSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFtsZWFkaW5n
LXRyaW1dW0lGQ10gQWRkIHN1cHBvcnQgZm9yIG5lc3RlZCBibG9jayBjb250YWluZXJzCiB3aXRo
IGxlYWRpbmctdHJpbTogZW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNDg4NTQKClJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKVGhpcyBwYXRjaCBhZGRzIG11
bHRpLXBhc3MgaW5saW5lIGxheW91dCB0byBzdXBwb3J0IGxhc3QgZm9ybWF0dGVkIGxpbmUgdHJp
bW1pbmcuCgoibGVhZGluZy10cmltOiBlbmQiIHRyaW1zIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGxh
c3QgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dC4KV2hpbGUgdGhpcyBwcm9wZXJ0eSBpcyBub3Qg
aW5oZXJpdGVkLCBpdCBpcyBwcm9wYWdhdGVkIHRocm91Z2ggbmVzdGVkIGJsb2NrIGNvbnRhaW5l
cnMuCldpdGggbmVzdGVkIGJsb2NrIGNvbnRhaW5lcnMsIHdlIGNhbiBlbmQgdXAgd2l0aCBtdWx0
aXBsZSBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0cyBlLmcuCjxkaXYgc3R5bGU9ImxlYWRpbmct
dHJpbTogZW5kIj4KICA8ZGl2PgogICAgPGRpdj5maXJzdCBsaW5lPC9kaXY+CiAgPC9kaXY+CiAg
PGRpdj4gbGFzdCBsaW5lPC9kaXY+CjwvZGl2PgpUaGUgbGFzdCBmb3JtYXR0ZWQgbGluZSBjYW4g
bm90IGJlIGlkZW50aWZpZWQgdW50aWwgYWZ0ZXIgZmluaXNoaW5nIHRoZSBsYXlvdXQgcHJvY2Vz
cyBvbiB0aGUgZW50aXJlCnN1YnRyZWUgd2hlcmUgdGhlIHByb3BlcnR5IGlzIHNldC4KSW4gdGhp
cyBwYXRjaCwgd2UgcnVuIGFuIGFkZGl0aW9uYWwgaW5saW5lIGxheW91dCBvbiB0aGUgbGFzdCBm
b3JtYXR0aW5nIGNvbnRleHQgd2l0aCB0aGUgbGVhZGluZyB0cmltIChlbmQpIHNldC4KCjEuIHNl
dCAidHJpbSBzdGFydCIgKHdoZW4gYXBwbGljYWJsZSkgb24gdGhlIGxheW91dCBzdGF0ZS4KMi4g
cmVzZXQgdGhlICJ0cmltIHN0YXJ0IiBzdGF0ZSBhZnRlciB0cmltbWluZyB0aGUgZmlyc3QgbGlu
ZSAoc28gdGhhdCBzdWJzZXF1ZW50IElGQ3MgZG9uJ3QgYXBwbHkgInRyaW0gc3RhcnQiKQozLiB3
aGVuIHRoZSBlbnRpcmUgc3VidHJlZSBpcyBsYWlkIG91dCwgY2hlY2sgaWYgd2UgbmVlZCB0byBh
cHBseSAidHJpbSBlbmQnLgo0LiBmaW5kIHRoZSBsYXN0IGZvcm1hdHRpbmcgY29udGV4dAo1LiBz
ZXQgInRyaW0gZW5kIiBvbiB0aGUgbGF5b3V0IHN0YXRlIGFuZCBydW4gbGF5b3V0IG9uIHRoZSBs
YXN0IElGQy4KKEZhc3QgcGF0aCBmb3IgdGhlIHNpbXBsZSBjYXNlIHdoZW4gdGhlIGxlYWRpbmcg
dHJpbSBibG9jayBjb250YWluZXIgaXMgYWxzbyBhbiBJRkMgcm9vdC4pCgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcDoKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpsZWFkaW5nVHJpbSk6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CihXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmxheW91dEJsb2NrKToKKFdlYkNvcmU6OmZpcnN0SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRSb290KToKKFdlYkNvcmU6Omxhc3RJbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJvb3QpOgoo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpzZXRMZWFkaW5nVHJpbUZvclN1YnRyZWUpOgooV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93OjphZGp1c3RMZWFkaW5nVHJpbUFmdGVyTGF5b3V0KToKKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5GbG93Q2hpbGRyZW4pOgooV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpyZXNldExlYWRpbmdUcmltKTogRGVsZXRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
b3V0U3RhdGUuY3BwOgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6OlJlbmRlckxheW91dFN0
YXRlKToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaDoKKFdl
YkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpsZWFkaW5nVHJpbSk6CihXZWJDb3JlOjpSZW5kZXJM
YXlvdXRTdGF0ZTo6aGFzTGVhZGluZ1RyaW1TdGFydCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJM
YXlvdXRTdGF0ZTo6aGFzTGVhZGluZ1RyaW1FbmQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyTGF5
b3V0U3RhdGU6OmFkZExlYWRpbmdUcmltU3RhcnQpOgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3Rh
dGU6OnJlbW92ZUxlYWRpbmdUcmltU3RhcnQpOgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6
OmFkZExlYWRpbmdUcmltRW5kKToKKFdlYkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpoYXNMZWFk
aW5nVHJpbSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJMYXlvdXRTdGF0ZTo6bGVh
ZGluZ1RyaW0gY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6OmFk
ZExlYWRpbmdUcmltKTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpyZW1v
dmVMZWFkaW5nVHJpbSk6IERlbGV0ZWQuCi0tLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuY3BwICAgIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcCAgfCAxNjggKysrKysrKysrKysrKy0tLS0tCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggICAgfCAgIDUgKy0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggICAgICB8ICAgMyArLQogLi4uL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcCAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaCAgfCAgNDggKysrLS0KIDYgZmlsZXMgY2hhbmdl
ZCwgMTc1IGluc2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5l
TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCA5ODI1YzIxYjBlMmQuLjU4Y2JiOWYw
MDkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGlu
ZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApA
QCAtNDc1LDExICs0NzUsMTMgQEAgc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPExheW91dDo6
QmxvY2tMYXlvdXRTdGF0ZTo6TGluZUNsYW1wPiBsaW5lQ2xhbXAoY29uc3QKIAogc3RhdGljIGlu
bGluZSBMYXlvdXQ6OkJsb2NrTGF5b3V0U3RhdGU6OkxlYWRpbmdUcmltIGxlYWRpbmdUcmltKGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgcm9vdFJlbmRlcmVyKQogewotICAgIGF1dG8gbGVhZGluZ1Ry
aW1TaWRlcyA9IHJvb3RSZW5kZXJlci52aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgp
LmxheW91dFN0YXRlKCktPmxlYWRpbmdUcmltKCk7CisgICAgYXV0byogbGF5b3V0U3RhdGUgPSBy
b290UmVuZGVyZXIudmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5sYXlvdXRTdGF0
ZSgpOworICAgIGlmICghbGF5b3V0U3RhdGUpCisgICAgICAgIHJldHVybiB7IH07CiAgICAgYXV0
byBsZWFkaW5nVHJpbUZvcklGQyA9IExheW91dDo6QmxvY2tMYXlvdXRTdGF0ZTo6TGVhZGluZ1Ry
aW0geyB9OwotICAgIGlmIChsZWFkaW5nVHJpbVNpZGVzLmNvbnRhaW5zKFJlbmRlckxheW91dFN0
YXRlOjpMZWFkaW5nVHJpbVNpZGU6OlN0YXJ0KSkKKyAgICBpZiAobGF5b3V0U3RhdGUtPmhhc0xl
YWRpbmdUcmltU3RhcnQoKSkKICAgICAgICAgbGVhZGluZ1RyaW1Gb3JJRkMuYWRkKExheW91dDo6
QmxvY2tMYXlvdXRTdGF0ZTo6TGVhZGluZ1RyaW1TaWRlOjpTdGFydCk7Ci0gICAgaWYgKGxlYWRp
bmdUcmltU2lkZXMuY29udGFpbnMoUmVuZGVyTGF5b3V0U3RhdGU6OkxlYWRpbmdUcmltU2lkZTo6
RW5kKSkKKyAgICBpZiAobGF5b3V0U3RhdGUtPmhhc0xlYWRpbmdUcmltRW5kKHJvb3RSZW5kZXJl
cikpCiAgICAgICAgIGxlYWRpbmdUcmltRm9ySUZDLmFkZChMYXlvdXQ6OkJsb2NrTGF5b3V0U3Rh
dGU6OkxlYWRpbmdUcmltU2lkZTo6RW5kKTsKICAgICByZXR1cm4gbGVhZGluZ1RyaW1Gb3JJRkM7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4
IDQ5NjdlOTBhOTE3OC4uMTEwNWIwMWNhYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtNDgwLDQwICs0ODAsNiBAQCB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6c2V0Q2hpbGRyZW5JbmxpbmUoYm9vbCB2YWx1ZSkKICAgICBSZW5kZXJCbG9jazo6
c2V0Q2hpbGRyZW5JbmxpbmUodmFsdWUpOwogfQogCi12b2lkIFJlbmRlckJsb2NrRmxvdzo6c2V0
TGVhZGluZ1RyaW1Gb3JTdWJ0cmVlKCkKLXsKLSAgICBhdXRvKiBsYXlvdXRTdGF0ZSA9IHZpZXco
KS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkubGF5b3V0U3RhdGUoKTsKLSAgICBpZiAoIWxh
eW91dFN0YXRlKQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byBsZWFkaW5nVHJpbSA9IHN0eWxl
KCkubGVhZGluZ1RyaW0oKTsKLSAgICBpZiAobGVhZGluZ1RyaW0gPT0gTGVhZGluZ1RyaW06Ok5v
cm1hbCkgewotICAgICAgICBpZiAoYm9yZGVyQW5kUGFkZGluZ1N0YXJ0KCkpIHsKLSAgICAgICAg
ICAgIC8vIEZvciBibG9jayBjb250YWluZXJzOiB0cmltIHRoZSBibG9jay1zdGFydCBzaWRlIG9m
IHRoZSBmaXJzdCBmb3JtYXR0ZWQgbGluZSB0byB0aGUgY29ycmVzcG9uZGluZwotICAgICAgICAg
ICAgLy8gdGV4dC1lZGdlIG1ldHJpYyBvZiBpdHMgcm9vdCBpbmxpbmUgYm94LiBJZiB0aGVyZSBp
cyBubyBzdWNoIGxpbmUsIG9yIGlmIHRoZXJlIGlzIGludGVydmVuaW5nIG5vbi16ZXJvIHBhZGRp
bmcgb3IgYm9yZGVycywKLSAgICAgICAgICAgIC8vIHRoZXJlIGlzIG5vIGVmZmVjdC4KLSAgICAg
ICAgICAgIGxheW91dFN0YXRlLT5yZXNldExlYWRpbmdUcmltKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG5lc3RlZCBs
ZWFkaW5nIHRyaW1zIGlmIGFwcGxpY2FibGUuCi0gICAgbGF5b3V0U3RhdGUtPnJlc2V0TGVhZGlu
Z1RyaW0oKTsKLSAgICBpZiAobGVhZGluZ1RyaW0gPT0gTGVhZGluZ1RyaW06OlN0YXJ0IHx8IGxl
YWRpbmdUcmltID09IExlYWRpbmdUcmltOjpCb3RoKQotICAgICAgICBsYXlvdXRTdGF0ZS0+YWRk
TGVhZGluZ1RyaW0oUmVuZGVyTGF5b3V0U3RhdGU6OkxlYWRpbmdUcmltU2lkZTo6U3RhcnQpOwot
ICAgIGlmIChsZWFkaW5nVHJpbSA9PSBMZWFkaW5nVHJpbTo6RW5kIHx8IGxlYWRpbmdUcmltID09
IExlYWRpbmdUcmltOjpCb3RoKQotICAgICAgICBsYXlvdXRTdGF0ZS0+YWRkTGVhZGluZ1RyaW0o
UmVuZGVyTGF5b3V0U3RhdGU6OkxlYWRpbmdUcmltU2lkZTo6RW5kKTsKLX0KLQotdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OnJlc2V0TGVhZGluZ1RyaW0oKQotewotICAgIGF1dG8qIGxheW91dFN0YXRl
ID0gdmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5sYXlvdXRTdGF0ZSgpOwotICAg
IGlmICghbGF5b3V0U3RhdGUgfHwgIWxheW91dFN0YXRlLT5sZWFkaW5nVHJpbSgpKQotICAgICAg
ICByZXR1cm47Ci0gICAgaWYgKGxheW91dFN0YXRlLT5sZWFkaW5nVHJpbSgpLmNvbnRhaW5zKFJl
bmRlckxheW91dFN0YXRlOjpMZWFkaW5nVHJpbVNpZGU6OlN0YXJ0KSAmJiBoYXNMaW5lcygpKSB7
Ci0gICAgICAgIC8vIE9ubHkgdGhlIGZpcnN0IGZvcm1hdHRlZCBsaW5lIGlzIHRyaW1tZWQuCi0g
ICAgICAgIGxheW91dFN0YXRlLT5yZW1vdmVMZWFkaW5nVHJpbShSZW5kZXJMYXlvdXRTdGF0ZTo6
TGVhZGluZ1RyaW1TaWRlOjpTdGFydCk7Ci0gICAgfQotfQotCiB2b2lkIFJlbmRlckJsb2NrRmxv
dzo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dp
Y2FsSGVpZ2h0KQogewogICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKQEAgLTU2NiwxMiArNTMy
LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEgKICAgICAgICAgaWYgKCFmaXJzdENoaWxkKCkg
JiYgIWlzQW5vbnltb3VzQmxvY2soKSkKICAgICAgICAgICAgIHNldENoaWxkcmVuSW5saW5lKHRy
dWUpOwogICAgICAgICBkaXJ0eUZvckxheW91dEZyb21QZXJjZW50YWdlSGVpZ2h0RGVzY2VuZGFu
dHMoKTsKLSAgICAgICAgc2V0TGVhZGluZ1RyaW1Gb3JTdWJ0cmVlKCk7Ci0KLSAgICAgICAgaWYg
KGNoaWxkcmVuSW5saW5lKCkpCi0gICAgICAgICAgICBsYXlvdXRJbmxpbmVDaGlsZHJlbihyZWxh
eW91dENoaWxkcmVuLCByZXBhaW50TG9naWNhbFRvcCwgcmVwYWludExvZ2ljYWxCb3R0b20pOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBsYXlvdXRCbG9ja0NoaWxkcmVuKHJlbGF5b3V0Q2hp
bGRyZW4sIG1heEZsb2F0TG9naWNhbEJvdHRvbSk7CisgICAgICAgIGxheW91dEluRmxvd0NoaWxk
cmVuKHJlbGF5b3V0Q2hpbGRyZW4sIHJlcGFpbnRMb2dpY2FsVG9wLCByZXBhaW50TG9naWNhbEJv
dHRvbSwgbWF4RmxvYXRMb2dpY2FsQm90dG9tKTsKICAgICAgICAgLy8gRXhwYW5kIG91ciBpbnRy
aW5zaWMgaGVpZ2h0IHRvIGVuY29tcGFzcyBmbG9hdHMuCiAgICAgICAgIExheW91dFVuaXQgdG9B
ZGQgPSBib3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsK
ICAgICAgICAgaWYgKGxvd2VzdEZsb2F0TG9naWNhbEJvdHRvbSgpID4gKGxvZ2ljYWxIZWlnaHQo
KSAtIHRvQWRkKSAmJiBjcmVhdGVzTmV3Rm9ybWF0dGluZ0NvbnRleHQoKSkKQEAgLTU4MCw3ICs1
NDEsNiBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENo
aWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSAogICAgICAgICAgICAgc2V0RXZlckhhZExh
eW91dCh0cnVlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIHJl
c2V0TGVhZGluZ1RyaW0oKTsKICAgICAgICAgYnJlYWs7CiAgICAgfSB3aGlsZSAodHJ1ZSk7CiAK
QEAgLTY3Niw2ICs2MzYsMTMyIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9jayhi
b29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxICiAgICAgY2xlYXJO
ZWVkc0xheW91dCgpOwogfQogCitzdGF0aWMgUmVuZGVyQmxvY2tGbG93KiBmaXJzdElubGluZUZv
cm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGVuY2xvc2luZ0Jsb2Nr
Q29udGFpbmVyKQoreworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhZnRlciBpbXBsZW1lbnRp
bmcgImxhc3QgbGluZSBkYW1hZ2UiLgorICAgIGZvciAoYXV0byogY2hpbGQgPSBlbmNsb3NpbmdC
bG9ja0NvbnRhaW5lci5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91
c1NpYmxpbmcoKSkgeworICAgICAgICBpZiAoIWlzPFJlbmRlckJsb2NrRmxvdz4oY2hpbGQpIHx8
IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKmNoaWxkKS5jcmVhdGVzTmV3Rm9ybWF0dGluZ0Nv
bnRleHQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvJiBibG9ja0NvbnRh
aW5lciA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKmNoaWxkKTsKKyAgICAgICAgaWYgKGJs
b2NrQ29udGFpbmVyLmhhc0xpbmVzKCkpCisgICAgICAgICAgICByZXR1cm4gJmJsb2NrQ29udGFp
bmVyOworICAgICAgICBpZiAoYXV0byogZGVzY2VuZGFudFJvb3QgPSBmaXJzdElubGluZUZvcm1h
dHRpbmdDb250ZXh0Um9vdChibG9ja0NvbnRhaW5lcikpCisgICAgICAgICAgICByZXR1cm4gZGVz
Y2VuZGFudFJvb3Q7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVu
ZGVyQmxvY2tGbG93KiBsYXN0SW5saW5lRm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IFJlbmRl
ckJsb2NrRmxvdyYgZW5jbG9zaW5nQmxvY2tDb250YWluZXIpCit7CisgICAgZm9yIChhdXRvKiBj
aGlsZCA9IGVuY2xvc2luZ0Jsb2NrQ29udGFpbmVyLmxhc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFpczxSZW5kZXJCbG9j
a0Zsb3c+KGNoaWxkKSB8fCBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpjaGlsZCkuY3JlYXRl
c05ld0Zvcm1hdHRpbmdDb250ZXh0KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
YXV0byYgYmxvY2tDb250YWluZXIgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpjaGlsZCk7
CisgICAgICAgIGlmIChibG9ja0NvbnRhaW5lci5oYXNMaW5lcygpKQorICAgICAgICAgICAgcmV0
dXJuICZibG9ja0NvbnRhaW5lcjsKKyAgICAgICAgaWYgKGF1dG8qIGRlc2NlbmRhbnRSb290ID0g
bGFzdElubGluZUZvcm1hdHRpbmdDb250ZXh0Um9vdChibG9ja0NvbnRhaW5lcikpCisgICAgICAg
ICAgICByZXR1cm4gZGVzY2VuZGFudFJvb3Q7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwor
fQorCitjbGFzcyBMZWFkaW5nVHJpbW1lciB7CitwdWJsaWM6CisgICAgTGVhZGluZ1RyaW1tZXIo
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBSZW5kZXJCbG9ja0Zsb3cqIGlubGlu
ZUZvcm1hdHRpbmdDb250ZXh0Um9vdEZvckxlYWRpbmdUcmltRW5kID0gbnVsbHB0cikKKyAgICAg
ICAgOiBtX2Zsb3coZmxvdykKKyAgICB7CisgICAgICAgIHNldExlYWRpbmdUcmltRm9yU3VidHJl
ZShpbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJvb3RGb3JMZWFkaW5nVHJpbUVuZCk7CisgICAgfQor
CisgICAgfkxlYWRpbmdUcmltbWVyKCkKKyAgICB7CisgICAgICAgIGFkanVzdExlYWRpbmdUcmlt
QWZ0ZXJMYXlvdXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZXRMZWFkaW5nVHJp
bUZvclN1YnRyZWUoY29uc3QgUmVuZGVyQmxvY2tGbG93KiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4
dFJvb3RGb3JMZWFkaW5nVHJpbUVuZCk7CisgICAgdm9pZCBhZGp1c3RMZWFkaW5nVHJpbUFmdGVy
TGF5b3V0KCk7CisKKyAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIG1fZmxvdzsKK307CisKK3Zv
aWQgTGVhZGluZ1RyaW1tZXI6OnNldExlYWRpbmdUcmltRm9yU3VidHJlZShjb25zdCBSZW5kZXJC
bG9ja0Zsb3cqIGlubGluZUZvcm1hdHRpbmdDb250ZXh0Um9vdEZvckxlYWRpbmdUcmltRW5kKQor
eworICAgIGF1dG8qIGxheW91dFN0YXRlID0gbV9mbG93LnZpZXcoKS5mcmFtZVZpZXcoKS5sYXlv
dXRDb250ZXh0KCkubGF5b3V0U3RhdGUoKTsKKyAgICBpZiAoIWxheW91dFN0YXRlKQorICAgICAg
ICByZXR1cm47CisgICAgYXV0byBsZWFkaW5nVHJpbSA9IG1fZmxvdy5zdHlsZSgpLmxlYWRpbmdU
cmltKCk7CisgICAgaWYgKGxlYWRpbmdUcmltID09IExlYWRpbmdUcmltOjpOb3JtYWwpIHsKKyAg
ICAgICAgaWYgKG1fZmxvdy5ib3JkZXJBbmRQYWRkaW5nU3RhcnQoKSkgeworICAgICAgICAgICAg
Ly8gRm9yIGJsb2NrIGNvbnRhaW5lcnM6IHRyaW0gdGhlIGJsb2NrLXN0YXJ0IHNpZGUgb2YgdGhl
IGZpcnN0IGZvcm1hdHRlZCBsaW5lIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAv
LyB0ZXh0LWVkZ2UgbWV0cmljIG9mIGl0cyByb290IGlubGluZSBib3guIElmIHRoZXJlIGlzIG5v
IHN1Y2ggbGluZSwgb3IgaWYgdGhlcmUgaXMgaW50ZXJ2ZW5pbmcgbm9uLXplcm8gcGFkZGluZyBv
ciBib3JkZXJzLAorICAgICAgICAgICAgLy8gdGhlcmUgaXMgbm8gZWZmZWN0LgorICAgICAgICAg
ICAgbGF5b3V0U3RhdGUtPnJlc2V0TGVhZGluZ1RyaW0oKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgbmVzdGVkIGxlYWRp
bmcgdHJpbXMgaWYgYXBwbGljYWJsZS4KKyAgICBsYXlvdXRTdGF0ZS0+cmVzZXRMZWFkaW5nVHJp
bSgpOworICAgIGF1dG8gYXBwbHlMZWFkaW5nVHJpbVN0YXJ0ID0gbGVhZGluZ1RyaW0gPT0gTGVh
ZGluZ1RyaW06OlN0YXJ0IHx8IGxlYWRpbmdUcmltID09IExlYWRpbmdUcmltOjpCb3RoOworICAg
IGF1dG8gYXBwbHlMZWFkaW5nVHJpbUVuZCA9IChsZWFkaW5nVHJpbSA9PSBMZWFkaW5nVHJpbTo6
RW5kIHx8IGxlYWRpbmdUcmltID09IExlYWRpbmdUcmltOjpCb3RoKSAmJiBpbmxpbmVGb3JtYXR0
aW5nQ29udGV4dFJvb3RGb3JMZWFkaW5nVHJpbUVuZDsKKyAgICBpZiAoYXBwbHlMZWFkaW5nVHJp
bUVuZCkgeworICAgICAgICBsYXlvdXRTdGF0ZS0+YWRkTGVhZGluZ1RyaW1FbmQoKmlubGluZUZv
cm1hdHRpbmdDb250ZXh0Um9vdEZvckxlYWRpbmdUcmltRW5kKTsKKyAgICAgICAgLy8gRklYTUU6
IEluc3RlYWQgd2Ugc2hvdWxkIGp1c3QgZGFtYWdlIHRoZSBsYXN0IGxpbmUuCisgICAgICAgIGlm
IChhdXRvKiBmaXJzdEZvcm1hdHRlZExpbmVSb290ID0gZmlyc3RJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dFJvb3QobV9mbG93KTsgZmlyc3RGb3JtYXR0ZWRMaW5lUm9vdCAmJiBmaXJzdEZvcm1hdHRl
ZExpbmVSb290ICE9IGlubGluZUZvcm1hdHRpbmdDb250ZXh0Um9vdEZvckxlYWRpbmdUcmltRW5k
KSB7CisgICAgICAgICAgICAvLyBXaGVuIHdlIHJ1biBhICJsYXN0IGxpbmUiIGxheW91dCBvbiB0
aGUgbGFzdCBmb3JtYXR0aW5nIGNvbnRleHQsIHdlIHNob3VsZCBub3QgdHJpbSB0aGUgZmlyc3Qg
bGluZSBldmVyIChzZWUgRklYTUUpLgorICAgICAgICAgICAgYXBwbHlMZWFkaW5nVHJpbVN0YXJ0
ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGFwcGx5TGVhZGluZ1RyaW1TdGFy
dCkKKyAgICAgICAgbGF5b3V0U3RhdGUtPmFkZExlYWRpbmdUcmltU3RhcnQoKTsKK30KKwordm9p
ZCBMZWFkaW5nVHJpbW1lcjo6YWRqdXN0TGVhZGluZ1RyaW1BZnRlckxheW91dCgpCit7CisgICAg
YXV0byogbGF5b3V0U3RhdGUgPSBtX2Zsb3cudmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRl
eHQoKS5sYXlvdXRTdGF0ZSgpOworICAgIGlmICghbGF5b3V0U3RhdGUpCisgICAgICAgIHJldHVy
bjsKKyAgICBpZiAobV9mbG93LnN0eWxlKCkubGVhZGluZ1RyaW0oKSAhPSBMZWFkaW5nVHJpbTo6
Tm9ybWFsKQorICAgICAgICByZXR1cm4gbGF5b3V0U3RhdGUtPnJlc2V0TGVhZGluZ1RyaW0oKTsK
KyAgICAvLyBUaGlzIGlzIHByb3BhZ2F0ZWQgbGVhZGluZy10cmltLgorICAgIGlmIChsYXlvdXRT
dGF0ZS0+aGFzTGVhZGluZ1RyaW1TdGFydCgpICYmIG1fZmxvdy5oYXNMaW5lcygpKSB7CisgICAg
ICAgIC8vIE9ubHkgdGhlIGZpcnN0IGZvcm1hdHRlZCBsaW5lIGlzIHRyaW1tZWQuCisgICAgICAg
IGxheW91dFN0YXRlLT5yZW1vdmVMZWFkaW5nVHJpbVN0YXJ0KCk7CisgICAgfQorfQorCit2b2lk
IFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5GbG93Q2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxk
cmVuLCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgcmVwYWludExv
Z2ljYWxCb3R0b20sIExheW91dFVuaXQmIG1heEZsb2F0TG9naWNhbEJvdHRvbSkKK3sKKyAgICBp
ZiAoY2hpbGRyZW5JbmxpbmUoKSkgeworICAgICAgICBhdXRvIGxlYWRpbmdUcmltbWVyID0gTGVh
ZGluZ1RyaW1tZXIgeyAqdGhpcywgdGhpcyB9OworICAgICAgICBsYXlvdXRJbmxpbmVDaGlsZHJl
bihyZWxheW91dENoaWxkcmVuLCByZXBhaW50TG9naWNhbFRvcCwgcmVwYWludExvZ2ljYWxCb3R0
b20pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgeworICAgICAgICAvLyBXaXRoIGJs
b2NrIGNoaWxkcmVuLCB0aGVyZSdzIG5vIHdheSB0byB0ZWxsIHdoYXQgdGhlIGxhc3QgZm9ybWF0
dGVkIGxpbmUgaXMgdW50aWwgYWZ0ZXIgd2UgZmluaXNoZWQgbGF5aW5nIG91dCB0aGUgc3VidHJl
ZS4KKyAgICAgICAgYXV0byBsZWFkaW5nVHJpbW1lciA9IExlYWRpbmdUcmltbWVyIHsgKnRoaXMg
fTsKKyAgICAgICAgbGF5b3V0QmxvY2tDaGlsZHJlbihyZWxheW91dENoaWxkcmVuLCBtYXhGbG9h
dExvZ2ljYWxCb3R0b20pOworICAgIH0KKworICAgIGF1dG8gaGFuZGxlTGVhZGluZ1RyaW1FbmQg
PSBbJl0geworICAgICAgICBhdXRvIGhhc0xlYWRpbmdUcmltRW5kID0gc3R5bGUoKS5sZWFkaW5n
VHJpbSgpID09IExlYWRpbmdUcmltOjpFbmQgfHwgc3R5bGUoKS5sZWFkaW5nVHJpbSgpID09IExl
YWRpbmdUcmltOjpCb3RoOworICAgICAgICBpZiAoIWhhc0xlYWRpbmdUcmltRW5kKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAvLyBEaXJ0eSB0aGUgbGFzdCBmb3JtYXR0ZWQgbGluZSAo
aW4gdGhlIGxhc3QgSUZDKSBhbmQgaXNzdWUgcmVsYXlvdXQgd2l0aCBmb3JjaW5nIHRyaW1taW5n
IHRoZSBsYXN0IGxpbmUuCisgICAgICAgIGlmIChhdXRvKiByb290Rm9yTGFzdEZvcm1hdHRlZExp
bmUgPSBsYXN0SW5saW5lRm9ybWF0dGluZ0NvbnRleHRSb290KCp0aGlzKSkgeworICAgICAgICAg
ICAgZm9yIChSZW5kZXJCbG9jayogYW5jZXN0b3IgPSByb290Rm9yTGFzdEZvcm1hdHRlZExpbmU7
IGFuY2VzdG9yICYmIGFuY2VzdG9yICE9IHRoaXM7IGFuY2VzdG9yID0gYW5jZXN0b3ItPmNvbnRh
aW5pbmdCbG9jaygpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBh
YmxlIHRvIGRhbWFnZSB0aGUgbGFzdCBsaW5lIG9ubHkuCisgICAgICAgICAgICAgICAgYW5jZXN0
b3ItPnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGF1dG8gbGVhZGluZ1RyaW1tZXIgPSBMZWFkaW5nVHJpbW1lciB7ICp0aGlzLCByb290
Rm9yTGFzdEZvcm1hdHRlZExpbmUgfTsKKyAgICAgICAgICAgIGxheW91dEJsb2NrQ2hpbGRyZW4o
cmVsYXlvdXRDaGlsZHJlbiwgbWF4RmxvYXRMb2dpY2FsQm90dG9tKTsKKyAgICAgICAgfQorICAg
IH07CisgICAgaGFuZGxlTGVhZGluZ1RyaW1FbmQoKTsKK30KKwogdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OmxheW91dEJsb2NrQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0
JiBtYXhGbG9hdExvZ2ljYWxCb3R0b20pCiB7CiAgICAgTGF5b3V0VW5pdCBiZWZvcmVFZGdlID0g
Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5oCmluZGV4IGFlMzM0ZjQ2YTEzOS4uNjkwMzQ5YWFiM2UyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC02Niw2ICs2Niw3IEBAIHBy
b3RlY3RlZDoKIAogICAgIC8vIFJlbmRlckJsb2NrRmxvdyBhbHdheXMgY29udGFpbnMgZWl0aGVy
IGxpbmVzIG9yIHBhcmFncmFwaHMuIFdoZW4gdGhlIGNoaWxkcmVuIGFyZSBhbGwgYmxvY2tzIChl
LmcuIHBhcmFncmFwaHMpLCB3ZSBjYWxsIGxheW91dEJsb2NrQ2hpbGRyZW4uCiAgICAgLy8gV2hl
biB0aGUgY2hpbGRyZW4gYXJlIGFsbCBpbmxpbmUgKGUuZy4sIGxpbmVzKSwgd2UgY2FsbCBsYXlv
dXRJbmxpbmVDaGlsZHJlbi4KKyAgICB2b2lkIGxheW91dEluRmxvd0NoaWxkcmVuKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVwYWludExvZ2ljYWxUb3AsIExheW91dFVuaXQm
IHJlcGFpbnRMb2dpY2FsQm90dG9tLCBMYXlvdXRVbml0JiBtYXhGbG9hdExvZ2ljYWxCb3R0b20p
OwogICAgIHZvaWQgbGF5b3V0QmxvY2tDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQmIG1heEZsb2F0TG9naWNhbEJvdHRvbSk7CiAgICAgdm9pZCBsYXlvdXRJbmxpbmVD
aGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJlcGFpbnRMb2dpY2Fs
VG9wLCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbEJvdHRvbSk7CiAKQEAgLTUyNiw4ICs1Mjcs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lk
dGgpIGNvbnN0OwogICAgIHZvaWQgYWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9uKFJlbmRlckJv
eCYgY2hpbGRCb3gsIExheW91dFVuaXQmIGxvZ2ljYWxUb3BPZmZzZXQsIExheW91dFVuaXQmIG1h
cmdpbkJlZm9yZU9mZnNldCk7CiAKLSAgICB2b2lkIHNldExlYWRpbmdUcmltRm9yU3VidHJlZSgp
OwotICAgIHZvaWQgcmVzZXRMZWFkaW5nVHJpbSgpOworICAgIHZvaWQgc2V0TGVhZGluZ1RyaW1G
b3JTdWJ0cmVlKGNvbnN0IFJlbmRlckJsb2NrRmxvdyogaW5saW5lRm9ybWF0dGluZ0NvbnRleHRS
b290Rm9yTGVhZGluZ1RyaW1FbmQgPSBudWxscHRyKTsKKyAgICB2b2lkIGFkanVzdExlYWRpbmdU
cmltQWZ0ZXJMYXlvdXQoKTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgaW50
IG1fd2lkdGhGb3JUZXh0QXV0b3NpemluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oCmluZGV4IGFjYzM0ZDdiY2U3ZC4uMDE4NGEyNWUzNTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTMxMCw2ICszMTAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwYWludEZvY3VzUmluZyhjb25zdCBQYWludEluZm8mLCBjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IFZlY3RvcjxMYXlvdXRSZWN0PiYgZm9jdXNSaW5nUmVjdHMpIGNvbnN0Owog
CiAgICAgdmlydHVhbCBib29sIGVzdGFibGlzaGVzSW5kZXBlbmRlbnRGb3JtYXR0aW5nQ29udGV4
dCgpIGNvbnN0OworICAgIGJvb2wgY3JlYXRlc05ld0Zvcm1hdHRpbmdDb250ZXh0KCkgY29uc3Q7
CiAKIHByb3RlY3RlZDoKICAgICBlbnVtIEJhc2VUeXBlRmxhZyB7CkBAIC0zNjMsOCArMzY0LDYg
QEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBpc1Zpc2libGVJblZpZXdwb3J0KCkgY29uc3Q7CiAK
LSAgICBib29sIGNyZWF0ZXNOZXdGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0OwotCiAgICAgYm9v
bCBzaG91bGRBcHBseUxheW91dE9yUGFpbnRDb250YWlubWVudChib29sKSBjb25zdDsKICAgICBi
b29sIHNob3VsZEFwcGx5U2l6ZU9yU3R5bGVDb250YWlubWVudChib29sKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5jcHAKaW5kZXggM2Iy
YzllYWM0MGUyLi4xOWZmY2M4YWZkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheW91dFN0YXRlLmNwcApAQCAtNjIsNyArNjIsNyBAQCBSZW5kZXJMYXlvdXRTdGF0
ZTo6UmVuZGVyTGF5b3V0U3RhdGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIElzUGFnaW5hdGVk
IGlzUGFnaQogICAgIH0KIH0KIAotUmVuZGVyTGF5b3V0U3RhdGU6OlJlbmRlckxheW91dFN0YXRl
KGNvbnN0IEZyYW1lVmlld0xheW91dENvbnRleHQ6OkxheW91dFN0YXRlU3RhY2smIGxheW91dFN0
YXRlU3RhY2ssIFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldCwg
TGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCwgYm9vbCBwYWdlTG9naWNhbEhlaWdodENoYW5n
ZWQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtYXhpbXVtTGluZUNvdW50Rm9yTGluZUNsYW1wLCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcCwgTGVhZGlu
Z1RyaW0gbGVhZGluZ1RyaW0pCitSZW5kZXJMYXlvdXRTdGF0ZTo6UmVuZGVyTGF5b3V0U3RhdGUo
Y29uc3QgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6TGF5b3V0U3RhdGVTdGFjayYgbGF5b3V0U3Rh
dGVTdGFjaywgUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0LCBM
YXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0LCBib29sIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdl
ZCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1heGltdW1MaW5lQ291bnRGb3JMaW5lQ2xhbXAsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiB2aXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1wLCBzdGQ6Om9w
dGlvbmFsPExlYWRpbmdUcmltPiBsZWFkaW5nVHJpbSkKICAgICA6IG1fY2xpcHBlZChmYWxzZSkK
ICAgICAsIG1faXNQYWdpbmF0ZWQoZmFsc2UpCiAgICAgLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hh
bmdlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXlvdXRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRl
LmgKaW5kZXggYWM0Y2IxOTM3NWNkLi44MTRmZTM3NGJiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDkgKzQzLDkgQEAgY2xhc3MgUmVuZGVyTGF5b3V0
U3RhdGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbmRlckxheW91dFN0YXRlKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBlbnVtIExlYWRpbmdUcmltU2lk
ZSA6IHVpbnQ4X3QgewotICAgICAgICBTdGFydCA9IDEgPDwgMCwKLSAgICAgICAgRW5kICAgPSAx
IDw8IDEKKyAgICBzdHJ1Y3QgTGVhZGluZ1RyaW0geworICAgICAgICBib29sIHRyaW1GaXJzdEZv
cm1hdHRlZExpbmUgeyBmYWxzZSB9OworICAgICAgICBXZWFrUHRyPGNvbnN0IFJlbmRlckJsb2Nr
Rmxvdz4gdHJpbUxhc3RGb3JtYXR0ZWRMaW5lT25UYXJnZXQ7CiAgICAgfTsKIAogICAgIFJlbmRl
ckxheW91dFN0YXRlKCkKQEAgLTU3LDcgKzU4LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgewog
ICAgIH0KLSAgICBSZW5kZXJMYXlvdXRTdGF0ZShjb25zdCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0
OjpMYXlvdXRTdGF0ZVN0YWNrJiwgUmVuZGVyQm94JiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0
LCBMYXlvdXRVbml0IHBhZ2VIZWlnaHQsIGJvb2wgcGFnZUhlaWdodENoYW5nZWQsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBtYXhpbXVtTGluZUNvdW50Rm9yTGluZUNsYW1wLCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcCwgT3B0aW9uU2V0PExlYWRpbmdU
cmltU2lkZT4pOworICAgIFJlbmRlckxheW91dFN0YXRlKGNvbnN0IEZyYW1lVmlld0xheW91dENv
bnRleHQ6OkxheW91dFN0YXRlU3RhY2smLCBSZW5kZXJCb3gmLCBjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXQsIExheW91dFVuaXQgcGFnZUhlaWdodCwgYm9vbCBwYWdlSGVpZ2h0Q2hhbmdlZCwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IG1heGltdW1MaW5lQ291bnRGb3JMaW5lQ2xhbXAsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiB2aXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1wLCBzdGQ6Om9wdGlvbmFs
PExlYWRpbmdUcmltPik7CiAgICAgZW51bSBjbGFzcyBJc1BhZ2luYXRlZCB7IE5vLCBZZXMgfTsK
ICAgICBleHBsaWNpdCBSZW5kZXJMYXlvdXRTdGF0ZShSZW5kZXJFbGVtZW50JiwgSXNQYWdpbmF0
ZWQgPSBJc1BhZ2luYXRlZDo6Tm8pOwogCkBAIC0xMDAsMTEgKzEwMSwxNCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRWaXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1wKHNpemVfdCB2aXNpYmxlTGlu
ZUNvdW50KSB7IG1fdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcCA9IHZpc2libGVMaW5lQ291
bnQ7IH0KICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gdmlzaWJsZUxpbmVDb3VudEZvckxpbmVD
bGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcDsgfQog
Ci0gICAgdXNpbmcgTGVhZGluZ1RyaW0gPSBPcHRpb25TZXQ8TGVhZGluZ1RyaW1TaWRlPjsKLSAg
ICBib29sIGhhc0xlYWRpbmdUcmltKCkgY29uc3QgeyByZXR1cm4gIWxlYWRpbmdUcmltKCkuaXNF
bXB0eSgpOyB9Ci0gICAgTGVhZGluZ1RyaW0gbGVhZGluZ1RyaW0oKSBjb25zdCB7IHJldHVybiBt
X2xlYWRpbmdUcmltOyB9Ci0gICAgdm9pZCBhZGRMZWFkaW5nVHJpbShMZWFkaW5nVHJpbVNpZGUg
bGVhZGluZ1RyaW0pIHsgbV9sZWFkaW5nVHJpbS5hZGQobGVhZGluZ1RyaW0pOyB9Ci0gICAgdm9p
ZCByZW1vdmVMZWFkaW5nVHJpbShMZWFkaW5nVHJpbVNpZGUgbGVhZGluZ1RyaW0pIHsgbV9sZWFk
aW5nVHJpbS5yZW1vdmUobGVhZGluZ1RyaW0pOyB9CisgICAgc3RkOjpvcHRpb25hbDxMZWFkaW5n
VHJpbT4gbGVhZGluZ1RyaW0oKSB7IHJldHVybiBtX2xlYWRpbmdUcmltOyB9CisgICAgYm9vbCBo
YXNMZWFkaW5nVHJpbVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWFkaW5nVHJpbSAmJiBtX2xl
YWRpbmdUcmltLT50cmltRmlyc3RGb3JtYXR0ZWRMaW5lOyB9CisgICAgYm9vbCBoYXNMZWFkaW5n
VHJpbUVuZChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGNhbmRpZGF0ZSkgY29uc3QgeyByZXR1cm4g
bV9sZWFkaW5nVHJpbSAmJiBtX2xlYWRpbmdUcmltLT50cmltTGFzdEZvcm1hdHRlZExpbmVPblRh
cmdldC5nZXQoKSA9PSAmY2FuZGlkYXRlOyB9CisKKyAgICB2b2lkIGFkZExlYWRpbmdUcmltU3Rh
cnQoKTsKKyAgICB2b2lkIHJlbW92ZUxlYWRpbmdUcmltU3RhcnQoKTsKKworICAgIHZvaWQgYWRk
TGVhZGluZ1RyaW1FbmQoY29uc3QgUmVuZGVyQmxvY2tGbG93JiB0YXJnZXRJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCk7CiAgICAgdm9pZCByZXNldExlYWRpbmdUcmltKCkgeyBtX2xlYWRpbmdUcmlt
ID0geyB9OyB9CiAKIHByaXZhdGU6CkBAIC0xNDksNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBM
YXlvdXRTaXplIG1fbGluZUdyaWRQYWdpbmF0aW9uT3JpZ2luOwogICAgIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBtX21heGltdW1MaW5lQ291bnRGb3JMaW5lQ2xhbXA7CiAgICAgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IG1fdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcDsKLSAgICBMZWFkaW5nVHJp
bSBtX2xlYWRpbmdUcmltOworICAgIHN0ZDo6b3B0aW9uYWw8TGVhZGluZ1RyaW0+IG1fbGVhZGlu
Z1RyaW07CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBSZW5kZXJFbGVtZW50KiBtX3JlbmRlcmVy
IHsgbnVsbHB0ciB9OwogI2VuZGlmCkBAIC0xOTgsNiArMjAyLDMwIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3B1c2hlZCB7IGZhbHNlIH07CiB9OwogCitpbmxpbmUgdm9pZCBSZW5kZXJMYXlvdXRT
dGF0ZTo6YWRkTGVhZGluZ1RyaW1TdGFydCgpCit7CisgICAgaWYgKG1fbGVhZGluZ1RyaW0pIHsK
KyAgICAgICAgbV9sZWFkaW5nVHJpbS0+dHJpbUZpcnN0Rm9ybWF0dGVkTGluZSA9IHRydWU7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9sZWFkaW5nVHJpbSA9IHsgdHJ1ZSwgeyB9IH07
Cit9CisKK2lubGluZSB2b2lkIFJlbmRlckxheW91dFN0YXRlOjpyZW1vdmVMZWFkaW5nVHJpbVN0
YXJ0KCkKK3sKKyAgICBBU1NFUlQobV9sZWFkaW5nVHJpbSAmJiBtX2xlYWRpbmdUcmltLT50cmlt
Rmlyc3RGb3JtYXR0ZWRMaW5lKTsKKyAgICBtX2xlYWRpbmdUcmltLT50cmltRmlyc3RGb3JtYXR0
ZWRMaW5lID0gZmFsc2U7Cit9CisKK2lubGluZSB2b2lkIFJlbmRlckxheW91dFN0YXRlOjphZGRM
ZWFkaW5nVHJpbUVuZChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHRhcmdldElubGluZUZvcm1hdHRp
bmdDb250ZXh0KQoreworICAgIGlmIChtX2xlYWRpbmdUcmltKSB7CisgICAgICAgIG1fbGVhZGlu
Z1RyaW0tPnRyaW1MYXN0Rm9ybWF0dGVkTGluZU9uVGFyZ2V0ID0gJnRhcmdldElubGluZUZvcm1h
dHRpbmdDb250ZXh0OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbGVhZGluZ1RyaW0g
PSB7IGZhbHNlLCAmdGFyZ2V0SW5saW5lRm9ybWF0dGluZ0NvbnRleHQgfTsKK30KKwogaW5saW5l
IHZvaWQgUmVuZGVyTGF5b3V0U3RhdGU6OnJlc2V0TGluZUNsYW1wKCkKIHsKICAgICBtX21heGlt
dW1MaW5lQ291bnRGb3JMaW5lQ2xhbXAgPSB7IH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463929</attachid>
            <date>2022-12-07 16:45:25 -0800</date>
            <delta_ts>2022-12-07 17:23:49 -0800</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-248854-20221207164525.patch</filename>
            <type>text/plain</type>
            <size>21007</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBjNzhlNzA5YzEzYzgwOTRjYmIyYzc2NGNhNDNiOTNkNzM1MGM3YzZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgNiBEZWMgMjAyMiAxOTo0ODo0OSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFtsZWFkaW5n
LXRyaW1dW0lGQ10gQWRkIHN1cHBvcnQgZm9yIG5lc3RlZCBibG9jayBjb250YWluZXJzCiB3aXRo
IGxlYWRpbmctdHJpbTogZW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNDg4NTQKClJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKVGhpcyBwYXRjaCBhZGRzIG11
bHRpLXBhc3MgaW5saW5lIGxheW91dCB0byBzdXBwb3J0IGxhc3QgZm9ybWF0dGVkIGxpbmUgdHJp
bW1pbmcuCgoibGVhZGluZy10cmltOiBlbmQiIHRyaW1zIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGxh
c3QgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dC4KV2hpbGUgdGhpcyBwcm9wZXJ0eSBpcyBub3Qg
aW5oZXJpdGVkLCBpdCBpcyBwcm9wYWdhdGVkIHRocm91Z2ggbmVzdGVkIGJsb2NrIGNvbnRhaW5l
cnMuCldpdGggbmVzdGVkIGJsb2NrIGNvbnRhaW5lcnMsIHdlIGNhbiBlbmQgdXAgd2l0aCBtdWx0
aXBsZSBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0cyBlLmcuCjxkaXYgc3R5bGU9ImxlYWRpbmct
dHJpbTogZW5kIj4KICA8ZGl2PgogICAgPGRpdj5maXJzdCBsaW5lPC9kaXY+CiAgPC9kaXY+CiAg
PGRpdj4gbGFzdCBsaW5lPC9kaXY+CjwvZGl2PgpUaGUgbGFzdCBmb3JtYXR0ZWQgbGluZSBjYW4g
bm90IGJlIGlkZW50aWZpZWQgdW50aWwgYWZ0ZXIgZmluaXNoaW5nIHRoZSBsYXlvdXQgcHJvY2Vz
cyBvbiB0aGUgZW50aXJlCnN1YnRyZWUgd2hlcmUgdGhlIHByb3BlcnR5IGlzIHNldC4KSW4gdGhp
cyBwYXRjaCwgd2UgcnVuIGFuIGFkZGl0aW9uYWwgaW5saW5lIGxheW91dCBvbiB0aGUgbGFzdCBm
b3JtYXR0aW5nIGNvbnRleHQgd2l0aCB0aGUgbGVhZGluZyB0cmltIChlbmQpIHNldC4KCjEuIHNl
dCAidHJpbSBzdGFydCIgKHdoZW4gYXBwbGljYWJsZSkgb24gdGhlIGxheW91dCBzdGF0ZS4KMi4g
cmVzZXQgdGhlICJ0cmltIHN0YXJ0IiBzdGF0ZSBhZnRlciB0cmltbWluZyB0aGUgZmlyc3QgbGlu
ZSAoc28gdGhhdCBzdWJzZXF1ZW50IElGQ3MgZG9uJ3QgYXBwbHkgInRyaW0gc3RhcnQiKQozLiB3
aGVuIHRoZSBlbnRpcmUgc3VidHJlZSBpcyBsYWlkIG91dCwgY2hlY2sgaWYgd2UgbmVlZCB0byBh
cHBseSAidHJpbSBlbmQnLgo0LiBmaW5kIHRoZSBsYXN0IGZvcm1hdHRpbmcgY29udGV4dAo1LiBz
ZXQgInRyaW0gZW5kIiBvbiB0aGUgbGF5b3V0IHN0YXRlIGFuZCBydW4gbGF5b3V0IG9uIHRoZSBs
YXN0IElGQy4KKEZhc3QgcGF0aCBmb3IgdGhlIHNpbXBsZSBjYXNlIHdoZW4gdGhlIGxlYWRpbmcg
dHJpbSBibG9jayBjb250YWluZXIgaXMgYWxzbyBhbiBJRkMgcm9vdC4pCgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcDoKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpsZWFkaW5nVHJpbSk6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CihXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmxheW91dEJsb2NrKToKKFdlYkNvcmU6OmZpcnN0SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRSb290KToKKFdlYkNvcmU6Omxhc3RJbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJvb3QpOgoo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpzZXRMZWFkaW5nVHJpbUZvclN1YnRyZWUpOgooV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93OjphZGp1c3RMZWFkaW5nVHJpbUFmdGVyTGF5b3V0KToKKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5GbG93Q2hpbGRyZW4pOgooV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpyZXNldExlYWRpbmdUcmltKTogRGVsZXRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
b3V0U3RhdGUuY3BwOgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6OlJlbmRlckxheW91dFN0
YXRlKToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaDoKKFdl
YkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpsZWFkaW5nVHJpbSk6CihXZWJDb3JlOjpSZW5kZXJM
YXlvdXRTdGF0ZTo6aGFzTGVhZGluZ1RyaW1TdGFydCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJM
YXlvdXRTdGF0ZTo6aGFzTGVhZGluZ1RyaW1FbmQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyTGF5
b3V0U3RhdGU6OmFkZExlYWRpbmdUcmltU3RhcnQpOgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3Rh
dGU6OnJlbW92ZUxlYWRpbmdUcmltU3RhcnQpOgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6
OmFkZExlYWRpbmdUcmltRW5kKToKKFdlYkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpoYXNMZWFk
aW5nVHJpbSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJMYXlvdXRTdGF0ZTo6bGVh
ZGluZ1RyaW0gY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6OmFk
ZExlYWRpbmdUcmltKTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpyZW1v
dmVMZWFkaW5nVHJpbSk6IERlbGV0ZWQuCi0tLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuY3BwICAgIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcCAgfCAxNjggKysrKysrKysrKysrKy0tLS0tCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggICAgfCAgIDUgKy0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggICAgICB8ICAgMyArLQogLi4uL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcCAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaCAgfCAgNDggKysrLS0KIDYgZmlsZXMgY2hhbmdl
ZCwgMTc1IGluc2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5l
TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCA5ODI1YzIxYjBlMmQuLjU4Y2JiOWYw
MDkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGlu
ZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApA
QCAtNDc1LDExICs0NzUsMTMgQEAgc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPExheW91dDo6
QmxvY2tMYXlvdXRTdGF0ZTo6TGluZUNsYW1wPiBsaW5lQ2xhbXAoY29uc3QKIAogc3RhdGljIGlu
bGluZSBMYXlvdXQ6OkJsb2NrTGF5b3V0U3RhdGU6OkxlYWRpbmdUcmltIGxlYWRpbmdUcmltKGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgcm9vdFJlbmRlcmVyKQogewotICAgIGF1dG8gbGVhZGluZ1Ry
aW1TaWRlcyA9IHJvb3RSZW5kZXJlci52aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgp
LmxheW91dFN0YXRlKCktPmxlYWRpbmdUcmltKCk7CisgICAgYXV0byogbGF5b3V0U3RhdGUgPSBy
b290UmVuZGVyZXIudmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5sYXlvdXRTdGF0
ZSgpOworICAgIGlmICghbGF5b3V0U3RhdGUpCisgICAgICAgIHJldHVybiB7IH07CiAgICAgYXV0
byBsZWFkaW5nVHJpbUZvcklGQyA9IExheW91dDo6QmxvY2tMYXlvdXRTdGF0ZTo6TGVhZGluZ1Ry
aW0geyB9OwotICAgIGlmIChsZWFkaW5nVHJpbVNpZGVzLmNvbnRhaW5zKFJlbmRlckxheW91dFN0
YXRlOjpMZWFkaW5nVHJpbVNpZGU6OlN0YXJ0KSkKKyAgICBpZiAobGF5b3V0U3RhdGUtPmhhc0xl
YWRpbmdUcmltU3RhcnQoKSkKICAgICAgICAgbGVhZGluZ1RyaW1Gb3JJRkMuYWRkKExheW91dDo6
QmxvY2tMYXlvdXRTdGF0ZTo6TGVhZGluZ1RyaW1TaWRlOjpTdGFydCk7Ci0gICAgaWYgKGxlYWRp
bmdUcmltU2lkZXMuY29udGFpbnMoUmVuZGVyTGF5b3V0U3RhdGU6OkxlYWRpbmdUcmltU2lkZTo6
RW5kKSkKKyAgICBpZiAobGF5b3V0U3RhdGUtPmhhc0xlYWRpbmdUcmltRW5kKHJvb3RSZW5kZXJl
cikpCiAgICAgICAgIGxlYWRpbmdUcmltRm9ySUZDLmFkZChMYXlvdXQ6OkJsb2NrTGF5b3V0U3Rh
dGU6OkxlYWRpbmdUcmltU2lkZTo6RW5kKTsKICAgICByZXR1cm4gbGVhZGluZ1RyaW1Gb3JJRkM7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4
IDQ5NjdlOTBhOTE3OC4uMTEwNWIwMWNhYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtNDgwLDQwICs0ODAsNiBAQCB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6c2V0Q2hpbGRyZW5JbmxpbmUoYm9vbCB2YWx1ZSkKICAgICBSZW5kZXJCbG9jazo6
c2V0Q2hpbGRyZW5JbmxpbmUodmFsdWUpOwogfQogCi12b2lkIFJlbmRlckJsb2NrRmxvdzo6c2V0
TGVhZGluZ1RyaW1Gb3JTdWJ0cmVlKCkKLXsKLSAgICBhdXRvKiBsYXlvdXRTdGF0ZSA9IHZpZXco
KS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkubGF5b3V0U3RhdGUoKTsKLSAgICBpZiAoIWxh
eW91dFN0YXRlKQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byBsZWFkaW5nVHJpbSA9IHN0eWxl
KCkubGVhZGluZ1RyaW0oKTsKLSAgICBpZiAobGVhZGluZ1RyaW0gPT0gTGVhZGluZ1RyaW06Ok5v
cm1hbCkgewotICAgICAgICBpZiAoYm9yZGVyQW5kUGFkZGluZ1N0YXJ0KCkpIHsKLSAgICAgICAg
ICAgIC8vIEZvciBibG9jayBjb250YWluZXJzOiB0cmltIHRoZSBibG9jay1zdGFydCBzaWRlIG9m
IHRoZSBmaXJzdCBmb3JtYXR0ZWQgbGluZSB0byB0aGUgY29ycmVzcG9uZGluZwotICAgICAgICAg
ICAgLy8gdGV4dC1lZGdlIG1ldHJpYyBvZiBpdHMgcm9vdCBpbmxpbmUgYm94LiBJZiB0aGVyZSBp
cyBubyBzdWNoIGxpbmUsIG9yIGlmIHRoZXJlIGlzIGludGVydmVuaW5nIG5vbi16ZXJvIHBhZGRp
bmcgb3IgYm9yZGVycywKLSAgICAgICAgICAgIC8vIHRoZXJlIGlzIG5vIGVmZmVjdC4KLSAgICAg
ICAgICAgIGxheW91dFN0YXRlLT5yZXNldExlYWRpbmdUcmltKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG5lc3RlZCBs
ZWFkaW5nIHRyaW1zIGlmIGFwcGxpY2FibGUuCi0gICAgbGF5b3V0U3RhdGUtPnJlc2V0TGVhZGlu
Z1RyaW0oKTsKLSAgICBpZiAobGVhZGluZ1RyaW0gPT0gTGVhZGluZ1RyaW06OlN0YXJ0IHx8IGxl
YWRpbmdUcmltID09IExlYWRpbmdUcmltOjpCb3RoKQotICAgICAgICBsYXlvdXRTdGF0ZS0+YWRk
TGVhZGluZ1RyaW0oUmVuZGVyTGF5b3V0U3RhdGU6OkxlYWRpbmdUcmltU2lkZTo6U3RhcnQpOwot
ICAgIGlmIChsZWFkaW5nVHJpbSA9PSBMZWFkaW5nVHJpbTo6RW5kIHx8IGxlYWRpbmdUcmltID09
IExlYWRpbmdUcmltOjpCb3RoKQotICAgICAgICBsYXlvdXRTdGF0ZS0+YWRkTGVhZGluZ1RyaW0o
UmVuZGVyTGF5b3V0U3RhdGU6OkxlYWRpbmdUcmltU2lkZTo6RW5kKTsKLX0KLQotdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OnJlc2V0TGVhZGluZ1RyaW0oKQotewotICAgIGF1dG8qIGxheW91dFN0YXRl
ID0gdmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5sYXlvdXRTdGF0ZSgpOwotICAg
IGlmICghbGF5b3V0U3RhdGUgfHwgIWxheW91dFN0YXRlLT5sZWFkaW5nVHJpbSgpKQotICAgICAg
ICByZXR1cm47Ci0gICAgaWYgKGxheW91dFN0YXRlLT5sZWFkaW5nVHJpbSgpLmNvbnRhaW5zKFJl
bmRlckxheW91dFN0YXRlOjpMZWFkaW5nVHJpbVNpZGU6OlN0YXJ0KSAmJiBoYXNMaW5lcygpKSB7
Ci0gICAgICAgIC8vIE9ubHkgdGhlIGZpcnN0IGZvcm1hdHRlZCBsaW5lIGlzIHRyaW1tZWQuCi0g
ICAgICAgIGxheW91dFN0YXRlLT5yZW1vdmVMZWFkaW5nVHJpbShSZW5kZXJMYXlvdXRTdGF0ZTo6
TGVhZGluZ1RyaW1TaWRlOjpTdGFydCk7Ci0gICAgfQotfQotCiB2b2lkIFJlbmRlckJsb2NrRmxv
dzo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dp
Y2FsSGVpZ2h0KQogewogICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKQEAgLTU2NiwxMiArNTMy
LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEgKICAgICAgICAgaWYgKCFmaXJzdENoaWxkKCkg
JiYgIWlzQW5vbnltb3VzQmxvY2soKSkKICAgICAgICAgICAgIHNldENoaWxkcmVuSW5saW5lKHRy
dWUpOwogICAgICAgICBkaXJ0eUZvckxheW91dEZyb21QZXJjZW50YWdlSGVpZ2h0RGVzY2VuZGFu
dHMoKTsKLSAgICAgICAgc2V0TGVhZGluZ1RyaW1Gb3JTdWJ0cmVlKCk7Ci0KLSAgICAgICAgaWYg
KGNoaWxkcmVuSW5saW5lKCkpCi0gICAgICAgICAgICBsYXlvdXRJbmxpbmVDaGlsZHJlbihyZWxh
eW91dENoaWxkcmVuLCByZXBhaW50TG9naWNhbFRvcCwgcmVwYWludExvZ2ljYWxCb3R0b20pOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBsYXlvdXRCbG9ja0NoaWxkcmVuKHJlbGF5b3V0Q2hp
bGRyZW4sIG1heEZsb2F0TG9naWNhbEJvdHRvbSk7CisgICAgICAgIGxheW91dEluRmxvd0NoaWxk
cmVuKHJlbGF5b3V0Q2hpbGRyZW4sIHJlcGFpbnRMb2dpY2FsVG9wLCByZXBhaW50TG9naWNhbEJv
dHRvbSwgbWF4RmxvYXRMb2dpY2FsQm90dG9tKTsKICAgICAgICAgLy8gRXhwYW5kIG91ciBpbnRy
aW5zaWMgaGVpZ2h0IHRvIGVuY29tcGFzcyBmbG9hdHMuCiAgICAgICAgIExheW91dFVuaXQgdG9B
ZGQgPSBib3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsK
ICAgICAgICAgaWYgKGxvd2VzdEZsb2F0TG9naWNhbEJvdHRvbSgpID4gKGxvZ2ljYWxIZWlnaHQo
KSAtIHRvQWRkKSAmJiBjcmVhdGVzTmV3Rm9ybWF0dGluZ0NvbnRleHQoKSkKQEAgLTU4MCw3ICs1
NDEsNiBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENo
aWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSAogICAgICAgICAgICAgc2V0RXZlckhhZExh
eW91dCh0cnVlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIHJl
c2V0TGVhZGluZ1RyaW0oKTsKICAgICAgICAgYnJlYWs7CiAgICAgfSB3aGlsZSAodHJ1ZSk7CiAK
QEAgLTY3Niw2ICs2MzYsMTMyIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9jayhi
b29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxICiAgICAgY2xlYXJO
ZWVkc0xheW91dCgpOwogfQogCitzdGF0aWMgUmVuZGVyQmxvY2tGbG93KiBmaXJzdElubGluZUZv
cm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGVuY2xvc2luZ0Jsb2Nr
Q29udGFpbmVyKQoreworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhZnRlciBpbXBsZW1lbnRp
bmcgImxhc3QgbGluZSBkYW1hZ2UiLgorICAgIGZvciAoYXV0byogY2hpbGQgPSBlbmNsb3NpbmdC
bG9ja0NvbnRhaW5lci5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91
c1NpYmxpbmcoKSkgeworICAgICAgICBpZiAoIWlzPFJlbmRlckJsb2NrRmxvdz4oY2hpbGQpIHx8
IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKmNoaWxkKS5jcmVhdGVzTmV3Rm9ybWF0dGluZ0Nv
bnRleHQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvJiBibG9ja0NvbnRh
aW5lciA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKmNoaWxkKTsKKyAgICAgICAgaWYgKGJs
b2NrQ29udGFpbmVyLmhhc0xpbmVzKCkpCisgICAgICAgICAgICByZXR1cm4gJmJsb2NrQ29udGFp
bmVyOworICAgICAgICBpZiAoYXV0byogZGVzY2VuZGFudFJvb3QgPSBmaXJzdElubGluZUZvcm1h
dHRpbmdDb250ZXh0Um9vdChibG9ja0NvbnRhaW5lcikpCisgICAgICAgICAgICByZXR1cm4gZGVz
Y2VuZGFudFJvb3Q7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVu
ZGVyQmxvY2tGbG93KiBsYXN0SW5saW5lRm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IFJlbmRl
ckJsb2NrRmxvdyYgZW5jbG9zaW5nQmxvY2tDb250YWluZXIpCit7CisgICAgZm9yIChhdXRvKiBj
aGlsZCA9IGVuY2xvc2luZ0Jsb2NrQ29udGFpbmVyLmxhc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFpczxSZW5kZXJCbG9j
a0Zsb3c+KGNoaWxkKSB8fCBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpjaGlsZCkuY3JlYXRl
c05ld0Zvcm1hdHRpbmdDb250ZXh0KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
YXV0byYgYmxvY2tDb250YWluZXIgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpjaGlsZCk7
CisgICAgICAgIGlmIChibG9ja0NvbnRhaW5lci5oYXNMaW5lcygpKQorICAgICAgICAgICAgcmV0
dXJuICZibG9ja0NvbnRhaW5lcjsKKyAgICAgICAgaWYgKGF1dG8qIGRlc2NlbmRhbnRSb290ID0g
bGFzdElubGluZUZvcm1hdHRpbmdDb250ZXh0Um9vdChibG9ja0NvbnRhaW5lcikpCisgICAgICAg
ICAgICByZXR1cm4gZGVzY2VuZGFudFJvb3Q7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwor
fQorCitjbGFzcyBMZWFkaW5nVHJpbW1lciB7CitwdWJsaWM6CisgICAgTGVhZGluZ1RyaW1tZXIo
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBSZW5kZXJCbG9ja0Zsb3cqIGlubGlu
ZUZvcm1hdHRpbmdDb250ZXh0Um9vdEZvckxlYWRpbmdUcmltRW5kID0gbnVsbHB0cikKKyAgICAg
ICAgOiBtX2Zsb3coZmxvdykKKyAgICB7CisgICAgICAgIHNldExlYWRpbmdUcmltRm9yU3VidHJl
ZShpbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJvb3RGb3JMZWFkaW5nVHJpbUVuZCk7CisgICAgfQor
CisgICAgfkxlYWRpbmdUcmltbWVyKCkKKyAgICB7CisgICAgICAgIGFkanVzdExlYWRpbmdUcmlt
QWZ0ZXJMYXlvdXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZXRMZWFkaW5nVHJp
bUZvclN1YnRyZWUoY29uc3QgUmVuZGVyQmxvY2tGbG93KiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4
dFJvb3RGb3JMZWFkaW5nVHJpbUVuZCk7CisgICAgdm9pZCBhZGp1c3RMZWFkaW5nVHJpbUFmdGVy
TGF5b3V0KCk7CisKKyAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIG1fZmxvdzsKK307CisKK3Zv
aWQgTGVhZGluZ1RyaW1tZXI6OnNldExlYWRpbmdUcmltRm9yU3VidHJlZShjb25zdCBSZW5kZXJC
bG9ja0Zsb3cqIGlubGluZUZvcm1hdHRpbmdDb250ZXh0Um9vdEZvckxlYWRpbmdUcmltRW5kKQor
eworICAgIGF1dG8qIGxheW91dFN0YXRlID0gbV9mbG93LnZpZXcoKS5mcmFtZVZpZXcoKS5sYXlv
dXRDb250ZXh0KCkubGF5b3V0U3RhdGUoKTsKKyAgICBpZiAoIWxheW91dFN0YXRlKQorICAgICAg
ICByZXR1cm47CisgICAgYXV0byBsZWFkaW5nVHJpbSA9IG1fZmxvdy5zdHlsZSgpLmxlYWRpbmdU
cmltKCk7CisgICAgaWYgKGxlYWRpbmdUcmltID09IExlYWRpbmdUcmltOjpOb3JtYWwpIHsKKyAg
ICAgICAgaWYgKG1fZmxvdy5ib3JkZXJBbmRQYWRkaW5nU3RhcnQoKSkgeworICAgICAgICAgICAg
Ly8gRm9yIGJsb2NrIGNvbnRhaW5lcnM6IHRyaW0gdGhlIGJsb2NrLXN0YXJ0IHNpZGUgb2YgdGhl
IGZpcnN0IGZvcm1hdHRlZCBsaW5lIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAv
LyB0ZXh0LWVkZ2UgbWV0cmljIG9mIGl0cyByb290IGlubGluZSBib3guIElmIHRoZXJlIGlzIG5v
IHN1Y2ggbGluZSwgb3IgaWYgdGhlcmUgaXMgaW50ZXJ2ZW5pbmcgbm9uLXplcm8gcGFkZGluZyBv
ciBib3JkZXJzLAorICAgICAgICAgICAgLy8gdGhlcmUgaXMgbm8gZWZmZWN0LgorICAgICAgICAg
ICAgbGF5b3V0U3RhdGUtPnJlc2V0TGVhZGluZ1RyaW0oKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgbmVzdGVkIGxlYWRp
bmcgdHJpbXMgaWYgYXBwbGljYWJsZS4KKyAgICBsYXlvdXRTdGF0ZS0+cmVzZXRMZWFkaW5nVHJp
bSgpOworICAgIGF1dG8gYXBwbHlMZWFkaW5nVHJpbVN0YXJ0ID0gbGVhZGluZ1RyaW0gPT0gTGVh
ZGluZ1RyaW06OlN0YXJ0IHx8IGxlYWRpbmdUcmltID09IExlYWRpbmdUcmltOjpCb3RoOworICAg
IGF1dG8gYXBwbHlMZWFkaW5nVHJpbUVuZCA9IChsZWFkaW5nVHJpbSA9PSBMZWFkaW5nVHJpbTo6
RW5kIHx8IGxlYWRpbmdUcmltID09IExlYWRpbmdUcmltOjpCb3RoKSAmJiBpbmxpbmVGb3JtYXR0
aW5nQ29udGV4dFJvb3RGb3JMZWFkaW5nVHJpbUVuZDsKKyAgICBpZiAoYXBwbHlMZWFkaW5nVHJp
bUVuZCkgeworICAgICAgICBsYXlvdXRTdGF0ZS0+YWRkTGVhZGluZ1RyaW1FbmQoKmlubGluZUZv
cm1hdHRpbmdDb250ZXh0Um9vdEZvckxlYWRpbmdUcmltRW5kKTsKKyAgICAgICAgLy8gRklYTUU6
IEluc3RlYWQgd2Ugc2hvdWxkIGp1c3QgZGFtYWdlIHRoZSBsYXN0IGxpbmUuCisgICAgICAgIGlm
IChhdXRvKiBmaXJzdEZvcm1hdHRlZExpbmVSb290ID0gZmlyc3RJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dFJvb3QobV9mbG93KTsgZmlyc3RGb3JtYXR0ZWRMaW5lUm9vdCAmJiBmaXJzdEZvcm1hdHRl
ZExpbmVSb290ICE9IGlubGluZUZvcm1hdHRpbmdDb250ZXh0Um9vdEZvckxlYWRpbmdUcmltRW5k
KSB7CisgICAgICAgICAgICAvLyBXaGVuIHdlIHJ1biBhICJsYXN0IGxpbmUiIGxheW91dCBvbiB0
aGUgbGFzdCBmb3JtYXR0aW5nIGNvbnRleHQsIHdlIHNob3VsZCBub3QgdHJpbSB0aGUgZmlyc3Qg
bGluZSBldmVyIChzZWUgRklYTUUpLgorICAgICAgICAgICAgYXBwbHlMZWFkaW5nVHJpbVN0YXJ0
ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGFwcGx5TGVhZGluZ1RyaW1TdGFy
dCkKKyAgICAgICAgbGF5b3V0U3RhdGUtPmFkZExlYWRpbmdUcmltU3RhcnQoKTsKK30KKwordm9p
ZCBMZWFkaW5nVHJpbW1lcjo6YWRqdXN0TGVhZGluZ1RyaW1BZnRlckxheW91dCgpCit7CisgICAg
YXV0byogbGF5b3V0U3RhdGUgPSBtX2Zsb3cudmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRl
eHQoKS5sYXlvdXRTdGF0ZSgpOworICAgIGlmICghbGF5b3V0U3RhdGUpCisgICAgICAgIHJldHVy
bjsKKyAgICBpZiAobV9mbG93LnN0eWxlKCkubGVhZGluZ1RyaW0oKSAhPSBMZWFkaW5nVHJpbTo6
Tm9ybWFsKQorICAgICAgICByZXR1cm4gbGF5b3V0U3RhdGUtPnJlc2V0TGVhZGluZ1RyaW0oKTsK
KyAgICAvLyBUaGlzIGlzIHByb3BhZ2F0ZWQgbGVhZGluZy10cmltLgorICAgIGlmIChsYXlvdXRT
dGF0ZS0+aGFzTGVhZGluZ1RyaW1TdGFydCgpICYmIG1fZmxvdy5oYXNMaW5lcygpKSB7CisgICAg
ICAgIC8vIE9ubHkgdGhlIGZpcnN0IGZvcm1hdHRlZCBsaW5lIGlzIHRyaW1tZWQuCisgICAgICAg
IGxheW91dFN0YXRlLT5yZW1vdmVMZWFkaW5nVHJpbVN0YXJ0KCk7CisgICAgfQorfQorCit2b2lk
IFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5GbG93Q2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxk
cmVuLCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgcmVwYWludExv
Z2ljYWxCb3R0b20sIExheW91dFVuaXQmIG1heEZsb2F0TG9naWNhbEJvdHRvbSkKK3sKKyAgICBp
ZiAoY2hpbGRyZW5JbmxpbmUoKSkgeworICAgICAgICBhdXRvIGxlYWRpbmdUcmltbWVyID0gTGVh
ZGluZ1RyaW1tZXIgeyAqdGhpcywgdGhpcyB9OworICAgICAgICBsYXlvdXRJbmxpbmVDaGlsZHJl
bihyZWxheW91dENoaWxkcmVuLCByZXBhaW50TG9naWNhbFRvcCwgcmVwYWludExvZ2ljYWxCb3R0
b20pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgeworICAgICAgICAvLyBXaXRoIGJs
b2NrIGNoaWxkcmVuLCB0aGVyZSdzIG5vIHdheSB0byB0ZWxsIHdoYXQgdGhlIGxhc3QgZm9ybWF0
dGVkIGxpbmUgaXMgdW50aWwgYWZ0ZXIgd2UgZmluaXNoZWQgbGF5aW5nIG91dCB0aGUgc3VidHJl
ZS4KKyAgICAgICAgYXV0byBsZWFkaW5nVHJpbW1lciA9IExlYWRpbmdUcmltbWVyIHsgKnRoaXMg
fTsKKyAgICAgICAgbGF5b3V0QmxvY2tDaGlsZHJlbihyZWxheW91dENoaWxkcmVuLCBtYXhGbG9h
dExvZ2ljYWxCb3R0b20pOworICAgIH0KKworICAgIGF1dG8gaGFuZGxlTGVhZGluZ1RyaW1FbmQg
PSBbJl0geworICAgICAgICBhdXRvIGhhc0xlYWRpbmdUcmltRW5kID0gc3R5bGUoKS5sZWFkaW5n
VHJpbSgpID09IExlYWRpbmdUcmltOjpFbmQgfHwgc3R5bGUoKS5sZWFkaW5nVHJpbSgpID09IExl
YWRpbmdUcmltOjpCb3RoOworICAgICAgICBpZiAoIWhhc0xlYWRpbmdUcmltRW5kKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAvLyBEaXJ0eSB0aGUgbGFzdCBmb3JtYXR0ZWQgbGluZSAo
aW4gdGhlIGxhc3QgSUZDKSBhbmQgaXNzdWUgcmVsYXlvdXQgd2l0aCBmb3JjaW5nIHRyaW1taW5n
IHRoZSBsYXN0IGxpbmUuCisgICAgICAgIGlmIChhdXRvKiByb290Rm9yTGFzdEZvcm1hdHRlZExp
bmUgPSBsYXN0SW5saW5lRm9ybWF0dGluZ0NvbnRleHRSb290KCp0aGlzKSkgeworICAgICAgICAg
ICAgZm9yIChSZW5kZXJCbG9jayogYW5jZXN0b3IgPSByb290Rm9yTGFzdEZvcm1hdHRlZExpbmU7
IGFuY2VzdG9yICYmIGFuY2VzdG9yICE9IHRoaXM7IGFuY2VzdG9yID0gYW5jZXN0b3ItPmNvbnRh
aW5pbmdCbG9jaygpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBh
YmxlIHRvIGRhbWFnZSB0aGUgbGFzdCBsaW5lIG9ubHkuCisgICAgICAgICAgICAgICAgYW5jZXN0
b3ItPnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGF1dG8gbGVhZGluZ1RyaW1tZXIgPSBMZWFkaW5nVHJpbW1lciB7ICp0aGlzLCByb290
Rm9yTGFzdEZvcm1hdHRlZExpbmUgfTsKKyAgICAgICAgICAgIGxheW91dEJsb2NrQ2hpbGRyZW4o
cmVsYXlvdXRDaGlsZHJlbiwgbWF4RmxvYXRMb2dpY2FsQm90dG9tKTsKKyAgICAgICAgfQorICAg
IH07CisgICAgaGFuZGxlTGVhZGluZ1RyaW1FbmQoKTsKK30KKwogdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OmxheW91dEJsb2NrQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0
JiBtYXhGbG9hdExvZ2ljYWxCb3R0b20pCiB7CiAgICAgTGF5b3V0VW5pdCBiZWZvcmVFZGdlID0g
Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5oCmluZGV4IGFlMzM0ZjQ2YTEzOS4uNjkwMzQ5YWFiM2UyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC02Niw2ICs2Niw3IEBAIHBy
b3RlY3RlZDoKIAogICAgIC8vIFJlbmRlckJsb2NrRmxvdyBhbHdheXMgY29udGFpbnMgZWl0aGVy
IGxpbmVzIG9yIHBhcmFncmFwaHMuIFdoZW4gdGhlIGNoaWxkcmVuIGFyZSBhbGwgYmxvY2tzIChl
LmcuIHBhcmFncmFwaHMpLCB3ZSBjYWxsIGxheW91dEJsb2NrQ2hpbGRyZW4uCiAgICAgLy8gV2hl
biB0aGUgY2hpbGRyZW4gYXJlIGFsbCBpbmxpbmUgKGUuZy4sIGxpbmVzKSwgd2UgY2FsbCBsYXlv
dXRJbmxpbmVDaGlsZHJlbi4KKyAgICB2b2lkIGxheW91dEluRmxvd0NoaWxkcmVuKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVwYWludExvZ2ljYWxUb3AsIExheW91dFVuaXQm
IHJlcGFpbnRMb2dpY2FsQm90dG9tLCBMYXlvdXRVbml0JiBtYXhGbG9hdExvZ2ljYWxCb3R0b20p
OwogICAgIHZvaWQgbGF5b3V0QmxvY2tDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQmIG1heEZsb2F0TG9naWNhbEJvdHRvbSk7CiAgICAgdm9pZCBsYXlvdXRJbmxpbmVD
aGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJlcGFpbnRMb2dpY2Fs
VG9wLCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbEJvdHRvbSk7CiAKQEAgLTUyNiw4ICs1Mjcs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lk
dGgpIGNvbnN0OwogICAgIHZvaWQgYWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9uKFJlbmRlckJv
eCYgY2hpbGRCb3gsIExheW91dFVuaXQmIGxvZ2ljYWxUb3BPZmZzZXQsIExheW91dFVuaXQmIG1h
cmdpbkJlZm9yZU9mZnNldCk7CiAKLSAgICB2b2lkIHNldExlYWRpbmdUcmltRm9yU3VidHJlZSgp
OwotICAgIHZvaWQgcmVzZXRMZWFkaW5nVHJpbSgpOworICAgIHZvaWQgc2V0TGVhZGluZ1RyaW1G
b3JTdWJ0cmVlKGNvbnN0IFJlbmRlckJsb2NrRmxvdyogaW5saW5lRm9ybWF0dGluZ0NvbnRleHRS
b290Rm9yTGVhZGluZ1RyaW1FbmQgPSBudWxscHRyKTsKKyAgICB2b2lkIGFkanVzdExlYWRpbmdU
cmltQWZ0ZXJMYXlvdXQoKTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgaW50
IG1fd2lkdGhGb3JUZXh0QXV0b3NpemluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oCmluZGV4IGFjYzM0ZDdiY2U3ZC4uMDE4NGEyNWUzNTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTMxMCw2ICszMTAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwYWludEZvY3VzUmluZyhjb25zdCBQYWludEluZm8mLCBjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IFZlY3RvcjxMYXlvdXRSZWN0PiYgZm9jdXNSaW5nUmVjdHMpIGNvbnN0Owog
CiAgICAgdmlydHVhbCBib29sIGVzdGFibGlzaGVzSW5kZXBlbmRlbnRGb3JtYXR0aW5nQ29udGV4
dCgpIGNvbnN0OworICAgIGJvb2wgY3JlYXRlc05ld0Zvcm1hdHRpbmdDb250ZXh0KCkgY29uc3Q7
CiAKIHByb3RlY3RlZDoKICAgICBlbnVtIEJhc2VUeXBlRmxhZyB7CkBAIC0zNjMsOCArMzY0LDYg
QEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBpc1Zpc2libGVJblZpZXdwb3J0KCkgY29uc3Q7CiAK
LSAgICBib29sIGNyZWF0ZXNOZXdGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0OwotCiAgICAgYm9v
bCBzaG91bGRBcHBseUxheW91dE9yUGFpbnRDb250YWlubWVudChib29sKSBjb25zdDsKICAgICBi
b29sIHNob3VsZEFwcGx5U2l6ZU9yU3R5bGVDb250YWlubWVudChib29sKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5jcHAKaW5kZXggM2Iy
YzllYWM0MGUyLi4xOWZmY2M4YWZkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheW91dFN0YXRlLmNwcApAQCAtNjIsNyArNjIsNyBAQCBSZW5kZXJMYXlvdXRTdGF0
ZTo6UmVuZGVyTGF5b3V0U3RhdGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIElzUGFnaW5hdGVk
IGlzUGFnaQogICAgIH0KIH0KIAotUmVuZGVyTGF5b3V0U3RhdGU6OlJlbmRlckxheW91dFN0YXRl
KGNvbnN0IEZyYW1lVmlld0xheW91dENvbnRleHQ6OkxheW91dFN0YXRlU3RhY2smIGxheW91dFN0
YXRlU3RhY2ssIFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldCwg
TGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCwgYm9vbCBwYWdlTG9naWNhbEhlaWdodENoYW5n
ZWQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtYXhpbXVtTGluZUNvdW50Rm9yTGluZUNsYW1wLCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcCwgTGVhZGlu
Z1RyaW0gbGVhZGluZ1RyaW0pCitSZW5kZXJMYXlvdXRTdGF0ZTo6UmVuZGVyTGF5b3V0U3RhdGUo
Y29uc3QgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6TGF5b3V0U3RhdGVTdGFjayYgbGF5b3V0U3Rh
dGVTdGFjaywgUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0LCBM
YXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0LCBib29sIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdl
ZCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1heGltdW1MaW5lQ291bnRGb3JMaW5lQ2xhbXAsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiB2aXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1wLCBzdGQ6Om9w
dGlvbmFsPExlYWRpbmdUcmltPiBsZWFkaW5nVHJpbSkKICAgICA6IG1fY2xpcHBlZChmYWxzZSkK
ICAgICAsIG1faXNQYWdpbmF0ZWQoZmFsc2UpCiAgICAgLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hh
bmdlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXlvdXRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRl
LmgKaW5kZXggYWM0Y2IxOTM3NWNkLi44MTRmZTM3NGJiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDkgKzQzLDkgQEAgY2xhc3MgUmVuZGVyTGF5b3V0
U3RhdGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbmRlckxheW91dFN0YXRlKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBlbnVtIExlYWRpbmdUcmltU2lk
ZSA6IHVpbnQ4X3QgewotICAgICAgICBTdGFydCA9IDEgPDwgMCwKLSAgICAgICAgRW5kICAgPSAx
IDw8IDEKKyAgICBzdHJ1Y3QgTGVhZGluZ1RyaW0geworICAgICAgICBib29sIHRyaW1GaXJzdEZv
cm1hdHRlZExpbmUgeyBmYWxzZSB9OworICAgICAgICBXZWFrUHRyPGNvbnN0IFJlbmRlckJsb2Nr
Rmxvdz4gdHJpbUxhc3RGb3JtYXR0ZWRMaW5lT25UYXJnZXQ7CiAgICAgfTsKIAogICAgIFJlbmRl
ckxheW91dFN0YXRlKCkKQEAgLTU3LDcgKzU4LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgewog
ICAgIH0KLSAgICBSZW5kZXJMYXlvdXRTdGF0ZShjb25zdCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0
OjpMYXlvdXRTdGF0ZVN0YWNrJiwgUmVuZGVyQm94JiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0
LCBMYXlvdXRVbml0IHBhZ2VIZWlnaHQsIGJvb2wgcGFnZUhlaWdodENoYW5nZWQsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBtYXhpbXVtTGluZUNvdW50Rm9yTGluZUNsYW1wLCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcCwgT3B0aW9uU2V0PExlYWRpbmdU
cmltU2lkZT4pOworICAgIFJlbmRlckxheW91dFN0YXRlKGNvbnN0IEZyYW1lVmlld0xheW91dENv
bnRleHQ6OkxheW91dFN0YXRlU3RhY2smLCBSZW5kZXJCb3gmLCBjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXQsIExheW91dFVuaXQgcGFnZUhlaWdodCwgYm9vbCBwYWdlSGVpZ2h0Q2hhbmdlZCwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IG1heGltdW1MaW5lQ291bnRGb3JMaW5lQ2xhbXAsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiB2aXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1wLCBzdGQ6Om9wdGlvbmFs
PExlYWRpbmdUcmltPik7CiAgICAgZW51bSBjbGFzcyBJc1BhZ2luYXRlZCB7IE5vLCBZZXMgfTsK
ICAgICBleHBsaWNpdCBSZW5kZXJMYXlvdXRTdGF0ZShSZW5kZXJFbGVtZW50JiwgSXNQYWdpbmF0
ZWQgPSBJc1BhZ2luYXRlZDo6Tm8pOwogCkBAIC0xMDAsMTEgKzEwMSwxNCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRWaXNpYmxlTGluZUNvdW50Rm9yTGluZUNsYW1wKHNpemVfdCB2aXNpYmxlTGlu
ZUNvdW50KSB7IG1fdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcCA9IHZpc2libGVMaW5lQ291
bnQ7IH0KICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gdmlzaWJsZUxpbmVDb3VudEZvckxpbmVD
bGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcDsgfQog
Ci0gICAgdXNpbmcgTGVhZGluZ1RyaW0gPSBPcHRpb25TZXQ8TGVhZGluZ1RyaW1TaWRlPjsKLSAg
ICBib29sIGhhc0xlYWRpbmdUcmltKCkgY29uc3QgeyByZXR1cm4gIWxlYWRpbmdUcmltKCkuaXNF
bXB0eSgpOyB9Ci0gICAgTGVhZGluZ1RyaW0gbGVhZGluZ1RyaW0oKSBjb25zdCB7IHJldHVybiBt
X2xlYWRpbmdUcmltOyB9Ci0gICAgdm9pZCBhZGRMZWFkaW5nVHJpbShMZWFkaW5nVHJpbVNpZGUg
bGVhZGluZ1RyaW0pIHsgbV9sZWFkaW5nVHJpbS5hZGQobGVhZGluZ1RyaW0pOyB9Ci0gICAgdm9p
ZCByZW1vdmVMZWFkaW5nVHJpbShMZWFkaW5nVHJpbVNpZGUgbGVhZGluZ1RyaW0pIHsgbV9sZWFk
aW5nVHJpbS5yZW1vdmUobGVhZGluZ1RyaW0pOyB9CisgICAgc3RkOjpvcHRpb25hbDxMZWFkaW5n
VHJpbT4gbGVhZGluZ1RyaW0oKSB7IHJldHVybiBtX2xlYWRpbmdUcmltOyB9CisgICAgYm9vbCBo
YXNMZWFkaW5nVHJpbVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWFkaW5nVHJpbSAmJiBtX2xl
YWRpbmdUcmltLT50cmltRmlyc3RGb3JtYXR0ZWRMaW5lOyB9CisgICAgYm9vbCBoYXNMZWFkaW5n
VHJpbUVuZChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGNhbmRpZGF0ZSkgY29uc3QgeyByZXR1cm4g
bV9sZWFkaW5nVHJpbSAmJiBtX2xlYWRpbmdUcmltLT50cmltTGFzdEZvcm1hdHRlZExpbmVPblRh
cmdldC5nZXQoKSA9PSAmY2FuZGlkYXRlOyB9CisKKyAgICB2b2lkIGFkZExlYWRpbmdUcmltU3Rh
cnQoKTsKKyAgICB2b2lkIHJlbW92ZUxlYWRpbmdUcmltU3RhcnQoKTsKKworICAgIHZvaWQgYWRk
TGVhZGluZ1RyaW1FbmQoY29uc3QgUmVuZGVyQmxvY2tGbG93JiB0YXJnZXRJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCk7CiAgICAgdm9pZCByZXNldExlYWRpbmdUcmltKCkgeyBtX2xlYWRpbmdUcmlt
ID0geyB9OyB9CiAKIHByaXZhdGU6CkBAIC0xNDksNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBM
YXlvdXRTaXplIG1fbGluZUdyaWRQYWdpbmF0aW9uT3JpZ2luOwogICAgIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBtX21heGltdW1MaW5lQ291bnRGb3JMaW5lQ2xhbXA7CiAgICAgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IG1fdmlzaWJsZUxpbmVDb3VudEZvckxpbmVDbGFtcDsKLSAgICBMZWFkaW5nVHJp
bSBtX2xlYWRpbmdUcmltOworICAgIHN0ZDo6b3B0aW9uYWw8TGVhZGluZ1RyaW0+IG1fbGVhZGlu
Z1RyaW07CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBSZW5kZXJFbGVtZW50KiBtX3JlbmRlcmVy
IHsgbnVsbHB0ciB9OwogI2VuZGlmCkBAIC0xOTgsNiArMjAyLDMwIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3B1c2hlZCB7IGZhbHNlIH07CiB9OwogCitpbmxpbmUgdm9pZCBSZW5kZXJMYXlvdXRT
dGF0ZTo6YWRkTGVhZGluZ1RyaW1TdGFydCgpCit7CisgICAgaWYgKG1fbGVhZGluZ1RyaW0pIHsK
KyAgICAgICAgbV9sZWFkaW5nVHJpbS0+dHJpbUZpcnN0Rm9ybWF0dGVkTGluZSA9IHRydWU7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9sZWFkaW5nVHJpbSA9IHsgdHJ1ZSwgeyB9IH07
Cit9CisKK2lubGluZSB2b2lkIFJlbmRlckxheW91dFN0YXRlOjpyZW1vdmVMZWFkaW5nVHJpbVN0
YXJ0KCkKK3sKKyAgICBBU1NFUlQobV9sZWFkaW5nVHJpbSAmJiBtX2xlYWRpbmdUcmltLT50cmlt
Rmlyc3RGb3JtYXR0ZWRMaW5lKTsKKyAgICBtX2xlYWRpbmdUcmltLT50cmltRmlyc3RGb3JtYXR0
ZWRMaW5lID0gZmFsc2U7Cit9CisKK2lubGluZSB2b2lkIFJlbmRlckxheW91dFN0YXRlOjphZGRM
ZWFkaW5nVHJpbUVuZChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHRhcmdldElubGluZUZvcm1hdHRp
bmdDb250ZXh0KQoreworICAgIGlmIChtX2xlYWRpbmdUcmltKSB7CisgICAgICAgIG1fbGVhZGlu
Z1RyaW0tPnRyaW1MYXN0Rm9ybWF0dGVkTGluZU9uVGFyZ2V0ID0gJnRhcmdldElubGluZUZvcm1h
dHRpbmdDb250ZXh0OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbGVhZGluZ1RyaW0g
PSB7IGZhbHNlLCAmdGFyZ2V0SW5saW5lRm9ybWF0dGluZ0NvbnRleHQgfTsKK30KKwogaW5saW5l
IHZvaWQgUmVuZGVyTGF5b3V0U3RhdGU6OnJlc2V0TGluZUNsYW1wKCkKIHsKICAgICBtX21heGlt
dW1MaW5lQ291bnRGb3JMaW5lQ2xhbXAgPSB7IH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>