<?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>227798</bug_id>
          
          <creation_ts>2021-07-08 09:08:59 -0700</creation_ts>
          <short_desc>display-profiler-output should be able to print disassembly for the FTL</short_desc>
          <delta_ts>2021-07-08 11:54:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1775680</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-07-08 09:08:59 -0700</bug_when>
    <thetext>display-profiler-output should be able to print disassembly for the FTL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775681</commentid>
    <comment_count>1</comment_count>
      <attachid>433135</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-07-08 09:12:30 -0700</bug_when>
    <thetext>Created attachment 433135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775698</commentid>
    <comment_count>2</comment_count>
      <attachid>433135</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-07-08 10:02:11 -0700</bug_when>
    <thetext>Comment on attachment 433135
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Right now running JSC with the bytecode profiler will will not print

typo: will will

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        before the DFG graph despite being printed after before and being added

typo: after before

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        to the Profiler::Compilation after the graph. Lastly, the disassmebly

typo: disassmebly

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        is the same text as Options::dumpDisassebly so it doesn&apos;t include execution

typo: Disassebly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775719</commentid>
    <comment_count>3</comment_count>
      <attachid>433140</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-07-08 10:40:45 -0700</bug_when>
    <thetext>Created attachment 433140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775720</commentid>
    <comment_count>4</comment_count>
      <attachid>433141</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-07-08 10:45:07 -0700</bug_when>
    <thetext>Created attachment 433141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775722</commentid>
    <comment_count>5</comment_count>
      <attachid>433142</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-07-08 10:49:41 -0700</bug_when>
    <thetext>Created attachment 433142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775724</commentid>
    <comment_count>6</comment_count>
      <attachid>433142</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-08 11:06:36 -0700</bug_when>
    <thetext>Comment on attachment 433142
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:26
&gt; +        94908                 979/4095/94908/0             Air               Move -824(%rax), %rax, b@402
&gt; +        94908                 979/4095/94908/0             asm                   0x3bf95fa085df: mov -0x338(%rax), %rax
&gt; +        94908                 979/4095/94908/0             b3            Void b@403 = Patchpoint($4396662888(b@90):ColdAny, generator = 0x1066c02e0, earlyClobbered = [], lateClobbered = [], usedRegisters = [%rax, %rbx], resultConstraints = WarmAny, WritesLocalState|Reads:Top, D@65)
&gt; +        94908                 979/4095/94908/0             Air               Patch &amp;Patchpoint0, $0x1060fc068, b@403

It&apos;s very deceptive to show DFG node execution counts for B3/Air code. I&apos;d recommend just not showing that info for B3/Air, but still showing it for the parent DFG node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775726</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-08 11:07:42 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #6)
&gt; Comment on attachment 433142 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=433142&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:26
&gt; &gt; +        94908                 979/4095/94908/0             Air               Move -824(%rax), %rax, b@402
&gt; &gt; +        94908                 979/4095/94908/0             asm                   0x3bf95fa085df: mov -0x338(%rax), %rax
&gt; &gt; +        94908                 979/4095/94908/0             b3            Void b@403 = Patchpoint($4396662888(b@90):ColdAny, generator = 0x1066c02e0, earlyClobbered = [], lateClobbered = [], usedRegisters = [%rax, %rbx], resultConstraints = WarmAny, WritesLocalState|Reads:Top, D@65)
&gt; &gt; +        94908                 979/4095/94908/0             Air               Patch &amp;Patchpoint0, $0x1060fc068, b@403
&gt; 
&gt; It&apos;s very deceptive to show DFG node execution counts for B3/Air code. I&apos;d
&gt; recommend just not showing that info for B3/Air, but still showing it for
&gt; the parent DFG node.

My reasoning is this:

Many DFG nodes lower to a lot of control flow in B3. Better to not incorrectly say all that control flow executes the same number of times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775735</commentid>
    <comment_count>8</comment_count>
      <attachid>433147</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-07-08 11:30:43 -0700</bug_when>
    <thetext>Created attachment 433147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775744</commentid>
    <comment_count>9</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-07-08 11:54:59 -0700</bug_when>
    <thetext>Landed in r279740.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433135</attachid>
            <date>2021-07-08 09:12:30 -0700</date>
            <delta_ts>2021-07-08 10:40:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227798-20210708121229.patch</filename>
            <type>text/plain</type>
            <size>16472</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi5kYzZmYTJiNGQ2YjFjODBj
NDljYmYzYTkzNzg5ZmY1MDc3MTAzYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAyMS0wNy0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBkaXNwbGF5LXByb2ZpbGVyLW91dHB1dCBzaG91bGQgYmUgYWJsZSB0
byBwcmludCBkaXNhc3NlbWJseSBmb3IgdGhlIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3Nzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmlnaHQgbm93IHJ1bm5pbmcgSlNDIHdpdGggdGhlIGJ5
dGVjb2RlIHByb2ZpbGVyIHdpbGwgd2lsbCBub3QgcHJpbnQKKyAgICAgICAgYXNzZW1ibHkgZm9y
IEZUTCBjb2RlLiBUaGlzIHBhdGNoIGFkZHMgdGhhdCwgYWxiZWl0IHdpdGggcG9vciBmb3JtYXR0
aW5nLgorICAgICAgICBGb3Igc29tZSByZWFzb24gSSBjb3VsZG4ndCBmaWd1cmUgb3V0IHF1aWNr
bHksIHRoZSBkaXNhc3NlbWJseSBpcyBwcmludGVkCisgICAgICAgIGJlZm9yZSB0aGUgREZHIGdy
YXBoIGRlc3BpdGUgYmVpbmcgcHJpbnRlZCBhZnRlciBiZWZvcmUgYW5kIGJlaW5nIGFkZGVkCisg
ICAgICAgIHRvIHRoZSBQcm9maWxlcjo6Q29tcGlsYXRpb24gYWZ0ZXIgdGhlIGdyYXBoLiBMYXN0
bHksIHRoZSBkaXNhc3NtZWJseQorICAgICAgICBpcyB0aGUgc2FtZSB0ZXh0IGFzIE9wdGlvbnM6
OmR1bXBEaXNhc3NlYmx5IHNvIGl0IGRvZXNuJ3QgaW5jbHVkZSBleGVjdXRpb24KKyAgICAgICAg
Y291bnRzLgorCisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpsaW5rKToKKyAgICAgICAgKiBmdGwvRlRMU3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OlN0YXRlOjpkdW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5oOgor
CiAyMDIxLTA2LTAxICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW1dQRV1bR1RLXSBTdXBwb3J0IGJ1aWxkaW5nIGFnYWluc3QgdUNsaWJjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCAwNjNmZDYwNDNjODhk
YWI0M2E4ZTc1OGQ2MzNhNzgzMjQzN2YyMjM2Li5hMzFmNzI1ZDc4YzAwNGE2ODQ3YTVlZTQwYjVk
OTQxY2Y0MzNkN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENv
bXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAK
QEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpS
ZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBo
Lm1fY29kZUJsb2NrOwogICAgIFZNJiB2bSA9IGdyYXBoLm1fdm07CiAKLSAgICBpZiAoc2hvdWxk
RHVtcERpc2Fzc2VtYmx5KCkpCisgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseSgpIHx8IHZt
Lm1fcGVyQnl0ZWNvZGVQcm9maWxlcikKICAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgpLnNldERp
c2Fzc2VtYmxlcihtYWtlVW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7CiAKICAgICB7
CkBAIC0xNjcsNzkgKzE2Nyw2OSBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9p
bnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgIH0KICAgICBzdGF0ZS5qaXRDb2RlLT5j
b21tb24uZmluYWxpemVDYXRjaEVudHJ5cG9pbnRzKFdURk1vdmUoc3RhdGUuZ3JhcGgubV9jYXRj
aEVudHJ5cG9pbnRzKSk7CiAKLSAgICBpZiAoQjM6OkFpcjo6RGlzYXNzZW1ibGVyKiBkaXNhc3Nl
bWJsZXIgPSBzdGF0ZS5wcm9jLT5jb2RlKCkuZGlzYXNzZW1ibGVyKCkpIHsKLSAgICAgICAgUHJp
bnRTdHJlYW0mIG91dCA9IFdURjo6ZGF0YUZpbGUoKTsKLQotICAgICAgICBvdXQucHJpbnQoIkdl
bmVyYXRlZCAiLCBzdGF0ZS5ncmFwaC5tX3BsYW4ubW9kZSgpLCAiIGNvZGUgZm9yICIsIENvZGVC
bG9ja1dpdGhKSVRUeXBlKHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQp
LCAiLCBpbnN0cnVjdGlvbnMgc2l6ZSA9ICIsIHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnNTaXplKCksICI6XG4iKTsKLQotICAgICAgICBMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
ID0gKnN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlcjsKLSAgICAgICAgQjM6OlZhbHVl
KiBjdXJyZW50QjNWYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgIE5vZGUqIGN1cnJlbnRERkdOb2Rl
ID0gbnVsbHB0cjsKLQotICAgICAgICBIYXNoU2V0PEIzOjpWYWx1ZSo+IHByaW50ZWRWYWx1ZXM7
Ci0gICAgICAgIEhhc2hTZXQ8Tm9kZSo+IHByaW50ZWROb2RlczsKLSAgICAgICAgY29uc3QgY2hh
ciogZGZnUHJlZml4ID0gIkRGRyAiICIgICAgIjsKLSAgICAgICAgY29uc3QgY2hhciogYjNQcmVm
aXggID0gImIzICAiICIgICAgICAgICAgIjsKLSAgICAgICAgY29uc3QgY2hhciogYWlyUHJlZml4
ID0gIkFpciAiICIgICAgICAgICAgICAgICI7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGFzbVByZWZp
eCA9ICJhc20gIiAiICAgICAgICAgICAgICAgICI7Ci0KLSAgICAgICAgYXV0byBwcmludERGR05v
ZGUgPSBbJl0gKE5vZGUqIG5vZGUpIHsKLSAgICAgICAgICAgIGlmIChjdXJyZW50REZHTm9kZSA9
PSBub2RlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgY3VycmVudERG
R05vZGUgPSBub2RlOwotICAgICAgICAgICAgaWYgKCFjdXJyZW50REZHTm9kZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIEhhc2hTZXQ8Tm9kZSo+IGxvY2FsUHJpbnRl
ZE5vZGVzOwotICAgICAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKE5vZGUqKT4gcHJpbnROb2Rl
UmVjdXJzaXZlID0gWyZdIChOb2RlKiBub2RlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByaW50
ZWROb2Rlcy5jb250YWlucyhub2RlKSB8fCBsb2NhbFByaW50ZWROb2Rlcy5jb250YWlucyhub2Rl
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgbG9jYWxQ
cmludGVkTm9kZXMuYWRkKG5vZGUpOwotICAgICAgICAgICAgICAgIGdyYXBoLmRvVG9DaGlsZHJl
bihub2RlLCBbJl0gKEVkZ2UgY2hpbGQpIHsKLSAgICAgICAgICAgICAgICAgICAgcHJpbnROb2Rl
UmVjdXJzaXZlKGNoaWxkLm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAgICAgZ3JhcGguZHVtcChvdXQsIGRmZ1ByZWZpeCwgbm9kZSk7Ci0gICAgICAgICAgICB9Owot
ICAgICAgICAgICAgcHJpbnROb2RlUmVjdXJzaXZlKG5vZGUpOwotICAgICAgICAgICAgcHJpbnRl
ZE5vZGVzLmFkZChub2RlKTsKLSAgICAgICAgfTsKLQotICAgICAgICBhdXRvIHByaW50QjNWYWx1
ZSA9IFsmXSAoQjM6OlZhbHVlKiB2YWx1ZSkgewotICAgICAgICAgICAgaWYgKGN1cnJlbnRCM1Zh
bHVlID09IHZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgY3Vy
cmVudEIzVmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgICAgIGlmICghY3VycmVudEIzVmFsdWUpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBwcmludERGR05vZGUoYml0d2lz
ZV9jYXN0PE5vZGUqPih2YWx1ZS0+b3JpZ2luKCkuZGF0YSgpKSk7Ci0KLSAgICAgICAgICAgIEhh
c2hTZXQ8QjM6OlZhbHVlKj4gbG9jYWxQcmludGVkVmFsdWVzOwotICAgICAgICAgICAgYXV0byBw
cmludFZhbHVlUmVjdXJzaXZlID0gcmVjdXJzYWJsZUxhbWJkYShbJl0gKGF1dG8gc2VsZiwgQjM6
OlZhbHVlKiB2YWx1ZSkgLT4gdm9pZCB7Ci0gICAgICAgICAgICAgICAgaWYgKHByaW50ZWRWYWx1
ZXMuY29udGFpbnModmFsdWUpIHx8IGxvY2FsUHJpbnRlZFZhbHVlcy5jb250YWlucyh2YWx1ZSkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGxvY2FsUHJp
bnRlZFZhbHVlcy5hZGQodmFsdWUpOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB2YWx1ZS0+bnVtQ2hpbGRyZW4oKTsgaSsrKQotICAgICAgICAgICAgICAgICAgICBz
ZWxmKHZhbHVlLT5jaGlsZChpKSk7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KGIzUHJlZml4
KTsKLSAgICAgICAgICAgICAgICB2YWx1ZS0+ZGVlcER1bXAoc3RhdGUucHJvYy5nZXQoKSwgb3V0
KTsKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAgICAgICAgICB9KTsKLQot
ICAgICAgICAgICAgcHJpbnRWYWx1ZVJlY3Vyc2l2ZShjdXJyZW50QjNWYWx1ZSk7Ci0gICAgICAg
ICAgICBwcmludGVkVmFsdWVzLmFkZCh2YWx1ZSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgYXV0
byBmb3JFYWNoSW5zdCA9IHNjb3BlZExhbWJkYTx2b2lkKEIzOjpBaXI6Okluc3QmKT4oWyZdIChC
Mzo6QWlyOjpJbnN0JiBpbnN0KSB7Ci0gICAgICAgICAgICBwcmludEIzVmFsdWUoaW5zdC5vcmln
aW4pOwotICAgICAgICB9KTsKKyAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCisgICAg
ICAgIHN0YXRlLmR1bXBEaXNhc3NlbWJseShXVEY6OmRhdGFGaWxlKCkpOworCisgICAgUHJvZmls
ZXI6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbiA9IGdyYXBoLmNvbXBpbGF0aW9uKCk7CisgICAg
aWYgKFVOTElLRUxZKGNvbXBpbGF0aW9uKSkgeworICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVz
Y3JpcHRpb24oCisgICAgICAgICAgICBQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwKKyAgICAgICAg
ICAgIHRvQ1N0cmluZygiR2VuZXJhdGVkIEZUTCBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0
aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAiLCBpbnN0cnVjdGlvbnMgc2l6
ZSA9ICIsIGdyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnNTaXplKCksICI6XG4iKSk7CisK
KyAgICAgICAgZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgICAgICBncmFwaC5lbnN1
cmVTU0FOYXR1cmFsTG9vcHMoKTsKKworICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAg
ICI7CisKKyAgICAgICAgRHVtcENvbnRleHQgZHVtcENvbnRleHQ7CisgICAgICAgIFN0cmluZ1By
aW50U3RyZWFtIG91dDsKKyAgICAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyOworICAgICAg
ICBmb3IgKHNpemVfdCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IGdyYXBoLm51bUJsb2Nr
cygpOyArK2Jsb2NrSW5kZXgpIHsKKyAgICAgICAgICAgIERGRzo6QmFzaWNCbG9jayogYmxvY2sg
PSBncmFwaC5ibG9jayhibG9ja0luZGV4KTsKKyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGdyYXBoLmR1bXBCbG9ja0hlYWRl
cihvdXQsIHByZWZpeCwgYmxvY2ssIEdyYXBoOjpEdW1wTGl2ZVBoaXNPbmx5LCAmZHVtcENvbnRl
eHQpOworICAgICAgICAgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKFByb2ZpbGVyOjpP
cmlnaW5TdGFjaygpLCBvdXQudG9DU3RyaW5nKCkpOworICAgICAgICAgICAgb3V0LnJlc2V0KCk7
CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJs
b2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9
IGJsb2NrLT5hdChub2RlSW5kZXgpOwogCi0gICAgICAgIGRpc2Fzc2VtYmxlci0+ZHVtcChzdGF0
ZS5wcm9jLT5jb2RlKCksIG91dCwgbGlua0J1ZmZlciwgYWlyUHJlZml4LCBhc21QcmVmaXgsIGZv
ckVhY2hJbnN0KTsKLSAgICAgICAgbGlua0J1ZmZlci5kaWRBbHJlYWR5RGlzYXNzZW1ibGUoKTsK
KyAgICAgICAgICAgICAgICBQcm9maWxlcjo6T3JpZ2luU3RhY2sgc3RhY2s7CisKKyAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFudGljLmlzU2V0KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgc3RhY2sgPSBQcm9maWxlcjo6T3JpZ2luU3RhY2soCisgICAgICAgICAgICAgICAg
ICAgICAgICAqdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyLCBjb2RlQmxvY2ssIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGdy
YXBoLmR1bXBDb2RlT3JpZ2luKG91dCwgcHJlZml4LCBsYXN0Tm9kZSwgbm9kZSwgJmR1bXBDb250
ZXh0KSkgeworICAgICAgICAgICAgICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24o
c3RhY2ssIG91dC50b0NTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIG91dC5yZXNldCgp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGdyYXBoLmR1bXAob3V0LCBw
cmVmaXgsIG5vZGUsICZkdW1wQ29udGV4dCk7CisgICAgICAgICAgICAgICAgY29tcGlsYXRpb24t
PmFkZERlc2NyaXB0aW9uKHN0YWNrLCBvdXQudG9DU3RyaW5nKCkpOworICAgICAgICAgICAgICAg
IG91dC5yZXNldCgpOworCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5pc1NldCgpKQorICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IG5vZGU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBkdW1wQ29udGV4dC5kdW1wKG91dCwgcHJlZml4
KTsKKyAgICAgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKFByb2ZpbGVyOjpPcmlnaW5T
dGFjaygpLCBvdXQudG9DU3RyaW5nKCkpOworICAgICAgICBvdXQucmVzZXQoKTsKKworICAgICAg
ICAvLyBGSVhNRTogQ29uZnVzaW5nbHksIHdoZW4gZGlzcGxheWluZyBKSVQgY29kZSB3aXRoIGRp
c3BsYXktcHJvZmlsZXItb3V0cHV0IHRoaXMgZ2V0cyBwbGFjZWQgYmVmb3JlIHRoZSBERkcgZ3Jh
cGggYWJvdmUuIEl0IGFsc28gbGFja3MgZXhlY3V0aW9uIGNvdW50cy4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzc5NworICAgICAgICBvdXQucHJpbnQoIiAgICBG
VEwgRGlzYXNzZW1ibHk6XG4iKTsKKyAgICAgICAgc3RhdGUuZHVtcERpc2Fzc2VtYmx5KG91dCk7
CisgICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQcm9maWxlcjo6T3JpZ2luU3Rh
Y2soKSwgb3V0LnRvQ1N0cmluZygpKTsKKyAgICAgICAgb3V0LnJlc2V0KCk7CisKKyAgICAgICAg
c3RhdGUuaml0Q29kZS0+Y29tbW9uLmNvbXBpbGF0aW9uID0gY29tcGlsYXRpb247CiAgICAgfQor
CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExpbmsuY3BwCmluZGV4IDFlYjFkOGFhOWQ2N2ZhZDg1YmI4NTI1OGQzZWVlYmY5YzkwMGQzYzgu
LjcwYmNhZjg2MjNjNDA3MDc0MDg4NTg0YWEzNzBlNDFlYzMzZWE0ZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ0Nh
bGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKKyNpbmNsdWRl
ICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJGVExKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklU
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTY4LDcyICs2OSwxMyBA
QCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogCiAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZy
YW1lID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyLCAtc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXNzZW1ibHlIZWxwZXJzOjpw
cm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKTsKLSAgICAKLSAgICBQcm9maWxlcjo6Q29tcGls
YXRpb24qIGNvbXBpbGF0aW9uID0gZ3JhcGguY29tcGlsYXRpb24oKTsKLSAgICBpZiAoVU5MSUtF
TFkoY29tcGlsYXRpb24pKSB7Ci0gICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbigK
LSAgICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpLAotICAgICAgICAgICAgdG9DU3Ry
aW5nKCJHZW5lcmF0ZWQgRlRMIEpJVCBjb2RlIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShj
b2RlQmxvY2ssIEpJVFR5cGU6OkZUTEpJVCksICIsIGluc3RydWN0aW9ucyBzaXplID0gIiwgZ3Jh
cGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uc1NpemUoKSwgIjpcbiIpKTsKLSAgICAgICAgCi0g
ICAgICAgIGdyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKLSAgICAgICAgZ3JhcGguZW5zdXJl
U1NBTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXgg
PSAiICAgICI7Ci0gICAgICAgIAotICAgICAgICBEdW1wQ29udGV4dCBkdW1wQ29udGV4dDsKLSAg
ICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwotICAgICAgICBOb2RlKiBsYXN0Tm9kZSA9IG51
bGxwdHI7Ci0gICAgICAgIGZvciAoc2l6ZV90IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwg
Z3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewotICAgICAgICAgICAgQmFzaWNCbG9j
ayogYmxvY2sgPSBncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgICAgIGlmICghYmxv
Y2spCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IGdyYXBoLmR1bXBCbG9ja0hlYWRlcihvdXQsIHByZWZpeCwgYmxvY2ssIEdyYXBoOjpEdW1wTGl2
ZVBoaXNPbmx5LCAmZHVtcENvbnRleHQpOwotICAgICAgICAgICAgY29tcGlsYXRpb24tPmFkZERl
c2NyaXB0aW9uKFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpLCBvdXQudG9DU3RyaW5nKCkpOwotICAg
ICAgICAgICAgb3V0LnJlc2V0KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoc2l6
ZV90IG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4
KSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjayBz
dGFjazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3JpZ2lu
LnNlbWFudGljLmlzU2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhY2sgPSBQcm9maWxl
cjo6T3JpZ2luU3RhY2soCi0gICAgICAgICAgICAgICAgICAgICAgICAqdm0ubV9wZXJCeXRlY29k
ZVByb2ZpbGVyLCBjb2RlQmxvY2ssIG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChncmFwaC5kdW1w
Q29kZU9yaWdpbihvdXQsIHByZWZpeCwgbGFzdE5vZGUsIG5vZGUsICZkdW1wQ29udGV4dCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKHN0YWNrLCBv
dXQudG9DU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgICAgICBvdXQucmVzZXQoKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZ3JhcGguZHVt
cChvdXQsIHByZWZpeCwgbm9kZSwgJmR1bXBDb250ZXh0KTsKLSAgICAgICAgICAgICAgICBjb21w
aWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oc3RhY2ssIG91dC50b0NTdHJpbmcoKSk7Ci0gICAgICAg
ICAgICAgICAgb3V0LnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
aWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pc1NldCgpKQotICAgICAgICAgICAgICAgICAgICBs
YXN0Tm9kZSA9IG5vZGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGR1bXBDb250ZXh0LmR1bXAob3V0LCBwcmVmaXgpOwotICAgICAgICBjb21waWxhdGlvbi0+
YWRkRGVzY3JpcHRpb24oUHJvZmlsZXI6Ok9yaWdpblN0YWNrKCksIG91dC50b0NTdHJpbmcoKSk7
Ci0gICAgICAgIG91dC5yZXNldCgpOwotCi0gICAgICAgIG91dC5wcmludCgiICAgIERpc2Fzc2Vt
Ymx5OlxuIik7Ci0gICAgICAgIG91dC5wcmludCgiICAgICAgICA8bm90IGltcGxlbWVudGVkIHll
dD5cbiIpOwotICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oUHJvZmlsZXI6Ok9y
aWdpblN0YWNrKCksIG91dC50b0NTdHJpbmcoKSk7Ci0gICAgICAgIG91dC5yZXNldCgpOwotICAg
ICAgICAKLSAgICAgICAgc3RhdGUuaml0Q29kZS0+Y29tbW9uLmNvbXBpbGF0aW9uID0gY29tcGls
YXRpb247Ci0gICAgfQogCiAgICAgc3dpdGNoIChncmFwaC5tX3BsYW4ubW9kZSgpKSB7CiAgICAg
Y2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkZUTDogewogICAgICAgICBib29sIHJlcXVpcmVzQXJp
dHlGaXh1cCA9IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICE9IDE7CiAgICAgICAgIGlmIChj
b2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYmIHJlcXVpcmVzQXJpdHlGaXh1
cCkgewogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtYWluUGF0aEp1bXBzOwot
ICAgIAorCiAgICAgICAgICAgICBqaXQubG9hZDMyKAogICAgICAgICAgICAgICAgIGZyYW1lLndp
dGhPZmZzZXQoc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7CkBAIC0xOTAs
NyArMTMyLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgc3RhdGUuaml0Q29k
ZS0+aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKKwogICAgIGNhc2UgSklUQ29tcGlsYXRpb25N
b2RlOjpGVExGb3JPU1JFbnRyeTogewogICAgICAgICAvLyBXZSBqdW1wIHRvIGhlcmUgc3RyYWln
aHQgZnJvbSBERkcgY29kZSwgYWZ0ZXIgaGF2aW5nIGJveGVkIHVwIGFsbCBvZiB0aGUKICAgICAg
ICAgLy8gdmFsdWVzIGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyLiBFdmVyeXRoaW5nIHNob3VsZCBi
ZSBnb29kIHRvIGdvIC0gYXQgdGhpcwpAQCAtMjAwLDcgKzE0Miw3IEBAIHZvaWQgbGluayhTdGF0
ZSYgc3RhdGUpCiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICBq
aXQudW50YWdSZXR1cm5BZGRyZXNzKCk7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBtYWlu
UGF0aEp1bXAgPSBqaXQuanVtcCgpOwotICAgICAgICAKKwogICAgICAgICBsaW5rQnVmZmVyID0g
bWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6RlRMLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgICAgICBpZiAobGlua0J1ZmZlci0+
ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxl
ZCA9IHRydWU7CkBAIC0yMTEsNyArMTUzLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAg
ICAgICAgc3RhdGUuaml0Q29kZS0+aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKGxpbmtCdWZmZXIt
PmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oc3RhcnQpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgICAgICAKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjMyLDcgKzE3NCw2IEBAIHZvaWQgbGluayhT
dGF0ZSYgc3RhdGUpCiAgICAgICAgIHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVCM0NvZGUoYjND
b2RlUmVmKTsKICAgICAgICAgc3RhdGUuaml0Q29kZS0+aW5pdGlhbGl6ZUFyaXR5Q2hlY2tFbnRy
eXBvaW50KGFyaXR5Q2hlY2tDb2RlUmVmKTsKICAgICB9Ci0KICAgICAKICAgICBzdGF0ZS5maW5h
bGl6ZXItPmVudHJ5cG9pbnRMaW5rQnVmZmVyID0gV1RGTW92ZShsaW5rQnVmZmVyKTsKICAgICBz
dGF0ZS5maW5hbGl6ZXItPmZ1bmN0aW9uID0gc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCmluZGV4IDAxYmRlZWM5ZmQzNzk2ZjRlNDdk
YmFlNzEyMGQ5ZTZkYWRlNmRiMDUuLjFkMmU2MzA2NTg2YTQ4ZjA3N2M3NWQ0NTgxYzEyNjExMzk5
NDBiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCkBAIC0yOCwxMSAr
MjgsMTYgQEAKIAogI2lmIEVOQUJMRShGVExfSklUKQogCisjaW5jbHVkZSAiQWlyQ29kZS5oIgor
I2luY2x1ZGUgIkFpckRpc2Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRU
eXBlLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRM
SklUQ29kZS5oIgogI2luY2x1ZGUgIkZUTEpJVEZpbmFsaXplci5oIgogI2luY2x1ZGUgIkZUTFBh
dGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaCIKIAorI2luY2x1ZGUgPHd0Zi9SZWN1cnNhYmxlTGFt
YmRhLmg+CisKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEIzOwpAQCAtNzEsNiArNzYsODEgQEAgU3RhdGU6OlN0YXRlKEdyYXBoJiBncmFwaCkKICAg
ICBwcm9jLT5zZXRGcm9udGVuZERhdGEoJmdyYXBoKTsKIH0KIAordm9pZCBTdGF0ZTo6ZHVtcERp
c2Fzc2VtYmx5KFByaW50U3RyZWFtJiBvdXQpCit7CisgICAgQjM6OkFpcjo6RGlzYXNzZW1ibGVy
KiBkaXNhc3NlbWJsZXIgPSBwcm9jLT5jb2RlKCkuZGlzYXNzZW1ibGVyKCk7CisKKyAgICBvdXQu
cHJpbnQoIkdlbmVyYXRlZCAiLCBncmFwaC5tX3BsYW4ubW9kZSgpLCAiIGNvZGUgZm9yICIsIENv
ZGVCbG9ja1dpdGhKSVRUeXBlKGdyYXBoLm1fY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAi
LCBpbnN0cnVjdGlvbnMgc2l6ZSA9ICIsIGdyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnNT
aXplKCksICI6XG4iKTsKKworICAgIExpbmtCdWZmZXImIGxpbmtCdWZmZXIgPSAqZmluYWxpemVy
LT5iM0NvZGVMaW5rQnVmZmVyOworICAgIEIzOjpWYWx1ZSogY3VycmVudEIzVmFsdWUgPSBudWxs
cHRyOworICAgIE5vZGUqIGN1cnJlbnRERkdOb2RlID0gbnVsbHB0cjsKKworICAgIEhhc2hTZXQ8
QjM6OlZhbHVlKj4gcHJpbnRlZFZhbHVlczsKKyAgICBIYXNoU2V0PE5vZGUqPiBwcmludGVkTm9k
ZXM7CisgICAgY29uc3QgY2hhciogZGZnUHJlZml4ID0gIkRGRyAiICIgICAgIjsKKyAgICBjb25z
dCBjaGFyKiBiM1ByZWZpeCAgPSAiYjMgICIgIiAgICAgICAgICAiOworICAgIGNvbnN0IGNoYXIq
IGFpclByZWZpeCA9ICJBaXIgIiAiICAgICAgICAgICAgICAiOworICAgIGNvbnN0IGNoYXIqIGFz
bVByZWZpeCA9ICJhc20gIiAiICAgICAgICAgICAgICAgICI7CisKKyAgICBhdXRvIHByaW50REZH
Tm9kZSA9IFsmXSAoTm9kZSogbm9kZSkgeworICAgICAgICBpZiAoY3VycmVudERGR05vZGUgPT0g
bm9kZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjdXJyZW50REZHTm9kZSA9IG5v
ZGU7CisgICAgICAgIGlmICghY3VycmVudERGR05vZGUpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgSGFzaFNldDxOb2RlKj4gbG9jYWxQcmludGVkTm9kZXM7CisgICAgICAgIFdURjo6
RnVuY3Rpb248dm9pZChOb2RlKik+IHByaW50Tm9kZVJlY3Vyc2l2ZSA9IFsmXSAoTm9kZSogbm9k
ZSkgeworICAgICAgICAgICAgaWYgKHByaW50ZWROb2Rlcy5jb250YWlucyhub2RlKSB8fCBsb2Nh
bFByaW50ZWROb2Rlcy5jb250YWlucyhub2RlKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGxvY2FsUHJpbnRlZE5vZGVzLmFkZChub2RlKTsKKyAgICAgICAgICAgIGdy
YXBoLmRvVG9DaGlsZHJlbihub2RlLCBbJl0gKEVkZ2UgY2hpbGQpIHsKKyAgICAgICAgICAgICAg
ICBwcmludE5vZGVSZWN1cnNpdmUoY2hpbGQubm9kZSgpKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgZ3JhcGguZHVtcChvdXQsIGRmZ1ByZWZpeCwgbm9kZSk7CisgICAgICAgIH07Cisg
ICAgICAgIHByaW50Tm9kZVJlY3Vyc2l2ZShub2RlKTsKKyAgICAgICAgcHJpbnRlZE5vZGVzLmFk
ZChub2RlKTsKKyAgICB9OworCisgICAgYXV0byBwcmludEIzVmFsdWUgPSBbJl0gKEIzOjpWYWx1
ZSogdmFsdWUpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRCM1ZhbHVlID09IHZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGN1cnJlbnRCM1ZhbHVlID0gdmFsdWU7CisgICAgICAg
IGlmICghY3VycmVudEIzVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcHJp
bnRERkdOb2RlKGJpdHdpc2VfY2FzdDxOb2RlKj4odmFsdWUtPm9yaWdpbigpLmRhdGEoKSkpOwor
CisgICAgICAgIEhhc2hTZXQ8QjM6OlZhbHVlKj4gbG9jYWxQcmludGVkVmFsdWVzOworICAgICAg
ICBhdXRvIHByaW50VmFsdWVSZWN1cnNpdmUgPSByZWN1cnNhYmxlTGFtYmRhKFsmXSAoYXV0byBz
ZWxmLCBCMzo6VmFsdWUqIHZhbHVlKSAtPiB2b2lkIHsKKyAgICAgICAgICAgIGlmIChwcmludGVk
VmFsdWVzLmNvbnRhaW5zKHZhbHVlKSB8fCBsb2NhbFByaW50ZWRWYWx1ZXMuY29udGFpbnModmFs
dWUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbG9jYWxQcmludGVk
VmFsdWVzLmFkZCh2YWx1ZSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dmFsdWUtPm51bUNoaWxkcmVuKCk7IGkrKykKKyAgICAgICAgICAgICAgICBzZWxmKHZhbHVlLT5j
aGlsZChpKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoYjNQcmVmaXgpOworICAgICAgICAgICAg
dmFsdWUtPmRlZXBEdW1wKHByb2MuZ2V0KCksIG91dCk7CisgICAgICAgICAgICBvdXQucHJpbnQo
IlxuIik7CisgICAgICAgIH0pOworCisgICAgICAgIHByaW50VmFsdWVSZWN1cnNpdmUoY3VycmVu
dEIzVmFsdWUpOworICAgICAgICBwcmludGVkVmFsdWVzLmFkZCh2YWx1ZSk7CisgICAgfTsKKwor
ICAgIGF1dG8gZm9yRWFjaEluc3QgPSBzY29wZWRMYW1iZGE8dm9pZChCMzo6QWlyOjpJbnN0Jik+
KFsmXSAoQjM6OkFpcjo6SW5zdCYgaW5zdCkgeworICAgICAgICBwcmludEIzVmFsdWUoaW5zdC5v
cmlnaW4pOworICAgIH0pOworCisgICAgZGlzYXNzZW1ibGVyLT5kdW1wKHByb2MtPmNvZGUoKSwg
b3V0LCBsaW5rQnVmZmVyLCBhaXJQcmVmaXgsIGFzbVByZWZpeCwgZm9yRWFjaEluc3QpOworICAg
IGxpbmtCdWZmZXIuZGlkQWxyZWFkeURpc2Fzc2VtYmxlKCk7Cit9CisKIFN0YXRlOjp+U3RhdGUo
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCmluZGV4IGEzZWZlYmYxZGE3
Nzg4ZmYzMDNlNGY2ODRmNzg3OTVhMWRhY2NjNWUuLmVjNDRlZjFmOWQ0NzgxMjgwYzNiM2UzOGJl
YjdhYzYyOThkYzI2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
U3RhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgKQEAgLTY3
LDYgKzY3LDggQEAgcHVibGljOgogCiAgICAgVk0mIHZtKCkgeyByZXR1cm4gZ3JhcGgubV92bTsg
fQogCisgICAgdm9pZCBkdW1wRGlzYXNzZW1ibHkoUHJpbnRTdHJlYW0mKTsKKwogICAgIC8vIE5v
bmUgb2YgdGhlc2UgdGhpbmdzIGlzIG93bmVkIGJ5IFN0YXRlLiBJdCBpcyB0aGUgcmVzcG9uc2li
aWxpdHkgb2YKICAgICAvLyBGVEwgcGhhc2VzIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgbGlmZWN5
Y2xlIG9mIHRoZSBtb2R1bGUgYW5kIGZ1bmN0aW9uLgogICAgIERGRzo6R3JhcGgmIGdyYXBoOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433140</attachid>
            <date>2021-07-08 10:40:45 -0700</date>
            <delta_ts>2021-07-08 10:45:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227798-20210708134044.patch</filename>
            <type>text/plain</type>
            <size>24595</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi41YTU2MzE0NDU2ZTRmOWQw
ZDdmNjMzYTg4NDFhMDA3MmNjMjAzNjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAyMS0wNy0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBkaXNwbGF5LXByb2ZpbGVyLW91dHB1dCBzaG91bGQgYmUgYWJsZSB0
byBwcmludCBkaXNhc3NlbWJseSBmb3IgdGhlIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3Nzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmlnaHQgbm93IHJ1bm5pbmcgSlNDIHdpdGggdGhlIGJ5
dGVjb2RlIHByb2ZpbGVyIHdpbGwgd2lsbCBub3QgcHJpbnQKKyAgICAgICAgYXNzZW1ibHkgZm9y
IEZUTCBjb2RlLiBUaGlzIHBhdGNoIGFkZHMgdGhpcyBzdXBwb3J0LiBJbiBvcmRlciB0byBnZXQK
KyAgICAgICAgZXhlY3V0aW9uIGNvdW50cyB3ZSBhZGQgYSBjYWxsYmFjayBhdCB0aGUgdHJhbnNp
dGlvbiBiZXR3ZWVuIGVhY2gKKyAgICAgICAgREZHIG5vZGUgaW4gdGhlIEFpciBkaXNhc3NlbWJs
eS4gQW4gZXhhbXBsZSBvdXRwdXQgd291bGQgbG9vayBzb21ldGhpbmcgbGlrZToKKworICAgICAg
ICAwICAgICAgICAgICAgICAgICAgICAgICAwLzAvMC8wICAgICAgICAgICAgICAgICAgICBiMyAg
QkIjMjc6IDsgZnJlcXVlbmN5ID0gMS4wMDAwMDAKKyAgICAgICAgMCAgICAgICAgICAgICAgICAg
ICAgICAgMC8wLzAvMCAgICAgICAgICAgICAgICAgICAgYjMgICAgUHJlZGVjZXNzb3JzOiAjMjAK
KyAgICAgICAgOTQ5MDggICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAg
ICAgREZHICAgICAgIERAMjk6PCAxMDotPglKU0NvbnN0YW50KEpTfFVzZUFzT3RoZXIsIE90aGVy
T2JqLCBXZWFrOk9iamVjdDogMHgxMDYwZmMwNjggd2l0aCBidXR0ZXJmbHkgMHg4MWVmZTQ4ZDgg
KFN0cnVjdHVyZSAweDEwNWZjOWYxMDpbMHhmNTBhLCBnbG9iYWwsIHtPYmplY3Q6MTAwLCBGdW5j
dGlvbjoxMDEsIEFycmF5OjEwMiwgUmVnRXhwOjEwMywgU2hhcmVkQXJyYXlCdWZmZXI6MTA0LCBB
dG9taWNzOjEwNSwgU3RyaW5nOjEwNiwgUHJvbWlzZToxMDcsIEJpZ0ludDoxMDgsIFdlYWtSZWY6
MTA5LCBGaW5hbGl6YXRpb25SZWdpc3RyeToxMTAsIEludGw6MTExLCAkdm06MTEyLCBXZWJBc3Nl
bWJseToxMTMsIFN5bWJvbC50b1N0cmluZ1RhZzoxMTQsIGRlYnVnOjExNSwgZGVzY3JpYmU6MTE2
LCBkZXNjcmliZUFycmF5OjExNywgcHJpbnQ6MTE4LCBwcmludEVycjoxMTksIHF1aXQ6MTIwLCBn
YzoxMjEsIGZ1bGxHQzoxMjIsIGVkZW5HQzoxMjMsIGdjSGVhcFNpemU6MTI0LCBNZW1vcnlGb290
cHJpbnQ6MTI1LCByZXNldE1lbW9yeVBlYWs6MTI2LCBhZGRyZXNzT2Y6MTI3LCB2ZXJzaW9uOjEy
OCwgcnVuOjEyOSwgcnVuU3RyaW5nOjEzMCwgbG9hZDoxMzEsIGxvYWRTdHJpbmc6MTMyLCByZWFk
RmlsZToxMzMsIHJlYWQ6MTM0LCBjaGVja1N5bnRheDoxMzUsIHNsZWVwU2Vjb25kczoxMzYsIGpz
Y1N0YWNrOjEzNywgcmVhZGxpbmU6MTM4LCBwcmVjaXNlVGltZToxMzksIG5ldmVySW5saW5lRnVu
Y3Rpb246MTQwLCBub0lubGluZToxNDEsIG5vREZHOjE0Miwgbm9GVEw6MTQzLCBub09TUkV4aXRG
dXp6aW5nOjE0NCwgbnVtYmVyT2ZERkdDb21waWxlczoxNDUsIGNhbGxlcklzT01HQ29tcGlsZWQ6
MTQ2LCBqc2NPcHRpb25zOjE0Nywgb3B0aW1pemVOZXh0SW52b2NhdGlvbjoxNDgsIHJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudDoxNDksIHRyYW5zZmVyQXJyYXlCdWZmZXI6MTUwLCBmYWlsTmV4dE5l
d0NvZGVCbG9jazoxNTEsIE9TUkV4aXQ6MTUyLCBpc0ZpbmFsVGllcjoxNTMsIHByZWRpY3RJbnQz
MjoxNTQsIGlzSW50MzI6MTU1LCBpc1B1cmVOYU46MTU2LCBmaWF0SW50NTI6MTU3LCBlZmZlY3Rm
dWw0MjoxNTgsIG1ha2VNYXNxdWVyYWRlcjoxNTksIGhhc0N1c3RvbVByb3BlcnRpZXM6MTYwLCBj
cmVhdGVHbG9iYWxPYmplY3Q6MTYxLCBjcmVhdGVIZWFwQmlnSW50OjE2MiwgdXNlQmlnSW50MzI6
MTYzLCBpc0JpZ0ludDMyOjE2NCwgaXNIZWFwQmlnSW50OjE2NSwgZHVtcFR5cGVzRm9yQWxsVmFy
aWFibGVzOjE2NiwgZHJhaW5NaWNyb3Rhc2tzOjE2Nywgc2V0VGltZW91dDoxNjgsIHJlbGVhc2VX
ZWFrUmVmczoxNjksIGZpbmFsaXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50OjE3MCwgZmluYWxpemF0
aW9uUmVnaXN0cnlEZWFkQ291bnQ6MTcxLCBnZXRSYW5kb21TZWVkOjE3Miwgc2V0UmFuZG9tU2Vl
ZDoxNzMsIGlzUm9wZToxNzQsIGNhbGxlclNvdXJjZU9yaWdpbjoxNzUsIGlzMzJCaXRQbGF0Zm9y
bToxNzYsIGNoZWNrTW9kdWxlU3ludGF4OjE3NywgcGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJv
ZmlsZXI6MTc4LCBnZW5lcmF0ZUhlYXBTbmFwc2hvdDoxNzksIGdlbmVyYXRlSGVhcFNuYXBzaG90
Rm9yR0NEZWJ1Z2dpbmc6MTgwLCByZXNldFN1cGVyU2FtcGxlclN0YXRlOjE4MSwgZW5zdXJlQXJy
YXlTdG9yYWdlOjE4Miwgc3RhcnRTYW1wbGluZ1Byb2ZpbGVyOjE4Mywgc2FtcGxpbmdQcm9maWxl
clN0YWNrVHJhY2VzOjE4NCwgbWF4QXJndW1lbnRzOjE4NSwgYXN5bmNUZXN0U3RhcnQ6MTg2LCBh
c3luY1Rlc3RQYXNzZWQ6MTg3LCBXZWJBc3NlbWJseU1lbW9yeU1vZGU6MTg4LCBjb25zb2xlOjE4
OSwgJDoxOTAsICQyNjI6MTkxLCB3YWl0Rm9yUmVwb3J0OjE5MiwgaGVhcENhcGFjaXR5OjE5Mywg
Zmxhc2hIZWFwQWNjZXNzOjE5NCwgZGlzYWJsZVJpY2hTb3VyY2VJbmZvOjE5NSwgbWFsbG9jSW5B
TG9vcDoxOTYsIHRvdGFsQ29tcGlsZVRpbWU6MTk3LCBzZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxs
YmFjazoxOTgsIGFzRG91YmxlTnVtYmVyOjE5OSwgZHJvcEFsbExvY2tzOjIwMCwgc3VtOjIwMX0s
IE5vbkFycmF5LCBQcm90bzoweDEwNWRiNTA2OCwgRGljdGlvbmFyeSwgTGVhZiAoV2F0Y2hlZCld
KSwgU3RydWN0dXJlSUQ6IDYyNzMwLCBiYyMwLCBFeGl0VmFsaWQpCisgICAgICAgIDk0OTA4ICAg
ICAgICAgICAgICAgICA5NzkvNDA5NS85NDkwOC8wICAgICAgICAgICAgIERGRyAgICAgICBEQDY5
OjwgMTotPglHZXRCdXR0ZXJmbHkoQ2VsbDpEQDI5LCBTdG9yYWdlfFVzZUFzT3RoZXIsIE90aGVy
LCBSOkpTT2JqZWN0X2J1dHRlcmZseSwgRXhpdHMsIGJjIzI2NiwgRXhpdFZhbGlkKQorICAgICAg
ICA5NDkwOCAgICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBiMyAg
ICAgICAgICAgIEludDY0IGJAMzk4ID0gTG9hZCgkNDQwMjY5NjcyOChiQDg1KSwgb2Zmc2V0ID0g
LTYwMzM4MzIsIENvbnRyb2xEZXBlbmRlbnR8UmVhZHM6NjAsIERANjkpCisgICAgICAgIDk0OTA4
ICAgICAgICAgICAgICAgICA5NzkvNDA5NS85NDkwOC8wICAgICAgICAgICAgIEFpciAgICAgICAg
ICAgICAgIE1vdmUgLTYwMzM4MzIoJXJieCksICVyYXgsIGJAMzk4CisgICAgICAgIDk0OTA4ICAg
ICAgICAgICAgICAgICA5NzkvNDA5NS85NDkwOC8wICAgICAgICAgICAgIGFzbSAgICAgICAgICAg
ICAgICAgICAweDNiZjk1ZmEwODVkODogbW92IC0weDVjMTFhOCglcmJ4KSwgJXJheAorICAgICAg
ICA5NDkwOCAgICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBERkcg
ICAgICAgREAyOTo8IDEwOi0+CUpTQ29uc3RhbnQoSlN8VXNlQXNPdGhlciwgT3RoZXJPYmosIFdl
YWs6T2JqZWN0OiAweDEwNjBmYzA2OCB3aXRoIGJ1dHRlcmZseSAweDgxZWZlNDhkOCAoU3RydWN0
dXJlIDB4MTA1ZmM5ZjEwOlsweGY1MGEsIGdsb2JhbCwge09iamVjdDoxMDAsIEZ1bmN0aW9uOjEw
MSwgQXJyYXk6MTAyLCBSZWdFeHA6MTAzLCBTaGFyZWRBcnJheUJ1ZmZlcjoxMDQsIEF0b21pY3M6
MTA1LCBTdHJpbmc6MTA2LCBQcm9taXNlOjEwNywgQmlnSW50OjEwOCwgV2Vha1JlZjoxMDksIEZp
bmFsaXphdGlvblJlZ2lzdHJ5OjExMCwgSW50bDoxMTEsICR2bToxMTIsIFdlYkFzc2VtYmx5OjEx
MywgU3ltYm9sLnRvU3RyaW5nVGFnOjExNCwgZGVidWc6MTE1LCBkZXNjcmliZToxMTYsIGRlc2Ny
aWJlQXJyYXk6MTE3LCBwcmludDoxMTgsIHByaW50RXJyOjExOSwgcXVpdDoxMjAsIGdjOjEyMSwg
ZnVsbEdDOjEyMiwgZWRlbkdDOjEyMywgZ2NIZWFwU2l6ZToxMjQsIE1lbW9yeUZvb3RwcmludDox
MjUsIHJlc2V0TWVtb3J5UGVhazoxMjYsIGFkZHJlc3NPZjoxMjcsIHZlcnNpb246MTI4LCBydW46
MTI5LCBydW5TdHJpbmc6MTMwLCBsb2FkOjEzMSwgbG9hZFN0cmluZzoxMzIsIHJlYWRGaWxlOjEz
MywgcmVhZDoxMzQsIGNoZWNrU3ludGF4OjEzNSwgc2xlZXBTZWNvbmRzOjEzNiwganNjU3RhY2s6
MTM3LCByZWFkbGluZToxMzgsIHByZWNpc2VUaW1lOjEzOSwgbmV2ZXJJbmxpbmVGdW5jdGlvbjox
NDAsIG5vSW5saW5lOjE0MSwgbm9ERkc6MTQyLCBub0ZUTDoxNDMsIG5vT1NSRXhpdEZ1enppbmc6
MTQ0LCBudW1iZXJPZkRGR0NvbXBpbGVzOjE0NSwgY2FsbGVySXNPTUdDb21waWxlZDoxNDYsIGpz
Y09wdGlvbnM6MTQ3LCBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uOjE0OCwgcmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50OjE0OSwgdHJhbnNmZXJBcnJheUJ1ZmZlcjoxNTAsIGZhaWxOZXh0TmV3Q29kZUJs
b2NrOjE1MSwgT1NSRXhpdDoxNTIsIGlzRmluYWxUaWVyOjE1MywgcHJlZGljdEludDMyOjE1NCwg
aXNJbnQzMjoxNTUsIGlzUHVyZU5hTjoxNTYsIGZpYXRJbnQ1MjoxNTcsIGVmZmVjdGZ1bDQyOjE1
OCwgbWFrZU1hc3F1ZXJhZGVyOjE1OSwgaGFzQ3VzdG9tUHJvcGVydGllczoxNjAsIGNyZWF0ZUds
b2JhbE9iamVjdDoxNjEsIGNyZWF0ZUhlYXBCaWdJbnQ6MTYyLCB1c2VCaWdJbnQzMjoxNjMsIGlz
QmlnSW50MzI6MTY0LCBpc0hlYXBCaWdJbnQ6MTY1LCBkdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXM6
MTY2LCBkcmFpbk1pY3JvdGFza3M6MTY3LCBzZXRUaW1lb3V0OjE2OCwgcmVsZWFzZVdlYWtSZWZz
OjE2OSwgZmluYWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQ6MTcwLCBmaW5hbGl6YXRpb25SZWdp
c3RyeURlYWRDb3VudDoxNzEsIGdldFJhbmRvbVNlZWQ6MTcyLCBzZXRSYW5kb21TZWVkOjE3Mywg
aXNSb3BlOjE3NCwgY2FsbGVyU291cmNlT3JpZ2luOjE3NSwgaXMzMkJpdFBsYXRmb3JtOjE3Niwg
Y2hlY2tNb2R1bGVTeW50YXg6MTc3LCBwbGF0Zm9ybVN1cHBvcnRzU2FtcGxpbmdQcm9maWxlcjox
NzgsIGdlbmVyYXRlSGVhcFNuYXBzaG90OjE3OSwgZ2VuZXJhdGVIZWFwU25hcHNob3RGb3JHQ0Rl
YnVnZ2luZzoxODAsIHJlc2V0U3VwZXJTYW1wbGVyU3RhdGU6MTgxLCBlbnN1cmVBcnJheVN0b3Jh
Z2U6MTgyLCBzdGFydFNhbXBsaW5nUHJvZmlsZXI6MTgzLCBzYW1wbGluZ1Byb2ZpbGVyU3RhY2tU
cmFjZXM6MTg0LCBtYXhBcmd1bWVudHM6MTg1LCBhc3luY1Rlc3RTdGFydDoxODYsIGFzeW5jVGVz
dFBhc3NlZDoxODcsIFdlYkFzc2VtYmx5TWVtb3J5TW9kZToxODgsIGNvbnNvbGU6MTg5LCAkOjE5
MCwgJDI2MjoxOTEsIHdhaXRGb3JSZXBvcnQ6MTkyLCBoZWFwQ2FwYWNpdHk6MTkzLCBmbGFzaEhl
YXBBY2Nlc3M6MTk0LCBkaXNhYmxlUmljaFNvdXJjZUluZm86MTk1LCBtYWxsb2NJbkFMb29wOjE5
NiwgdG90YWxDb21waWxlVGltZToxOTcsIHNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrOjE5
OCwgYXNEb3VibGVOdW1iZXI6MTk5LCBkcm9wQWxsTG9ja3M6MjAwLCBzdW06MjAxfSwgTm9uQXJy
YXksIFByb3RvOjB4MTA1ZGI1MDY4LCBEaWN0aW9uYXJ5LCBMZWFmIChXYXRjaGVkKV0pLCBTdHJ1
Y3R1cmVJRDogNjI3MzAsIGJjIzAsIEV4aXRWYWxpZCkKKyAgICAgICAgOTQ5MDggICAgICAgICAg
ICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgREZHICAgICAgIERANjU6PCAyOi0+
CUdldEJ5T2Zmc2V0KENoZWNrOlVudHlwZWQ6S2lsbDpEQDY5LCBLbm93bkNlbGw6S2lsbDpEQDI5
LCBKU3xVc2VBc090aGVyLCBOb25Cb29sSW50MzIsIGlkMHtzdW19LCAyMDEsIFI6TmFtZWRQcm9w
ZXJ0aWVzKDApLCBFeGl0cywgYmMjMjY2LCBFeGl0VmFsaWQpICBwcmVkaWN0aW5nIE5vbkJvb2xJ
bnQzMgorICAgICAgICA5NDkwOCAgICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAg
ICAgICAgICBiMyAgICAgICAgICAgIEludDY0IGJANDAyID0gTG9hZChiQDM5OCwgb2Zmc2V0ID0g
LTgyNCwgQ29udHJvbERlcGVuZGVudHxSZWFkczo2LCBEQDY1KQorICAgICAgICA5NDkwOCAgICAg
ICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBBaXIgICAgICAgICAgICAg
ICBNb3ZlIC04MjQoJXJheCksICVyYXgsIGJANDAyCisgICAgICAgIDk0OTA4ICAgICAgICAgICAg
ICAgICA5NzkvNDA5NS85NDkwOC8wICAgICAgICAgICAgIGFzbSAgICAgICAgICAgICAgICAgICAw
eDNiZjk1ZmEwODVkZjogbW92IC0weDMzOCglcmF4KSwgJXJheAorICAgICAgICA5NDkwOCAgICAg
ICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBiMyAgICAgICAgICAgIFZv
aWQgYkA0MDMgPSBQYXRjaHBvaW50KCQ0Mzk2NjYyODg4KGJAOTApOkNvbGRBbnksIGdlbmVyYXRv
ciA9IDB4MTA2NmMwMmUwLCBlYXJseUNsb2JiZXJlZCA9IFtdLCBsYXRlQ2xvYmJlcmVkID0gW10s
IHVzZWRSZWdpc3RlcnMgPSBbJXJheCwgJXJieF0sIHJlc3VsdENvbnN0cmFpbnRzID0gV2FybUFu
eSwgV3JpdGVzTG9jYWxTdGF0ZXxSZWFkczpUb3AsIERANjUpCisgICAgICAgIDk0OTA4ICAgICAg
ICAgICAgICAgICA5NzkvNDA5NS85NDkwOC8wICAgICAgICAgICAgIEFpciAgICAgICAgICAgICAg
IFBhdGNoICZQYXRjaHBvaW50MCwgJDB4MTA2MGZjMDY4LCBiQDQwMworICAgICAgICA5NDkwOCAg
ICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBERkcgICAgICAgREA1
NDo8ITA6LT4JUmV0dXJuKENoZWNrOlVudHlwZWQ6S2lsbDpEQDY1LCBNdXN0R2VuLCBXOlNpZGVT
dGF0ZSwgRXhpdHMsIGJjIzI3NCwgRXhpdFZhbGlkKQorICAgICAgICAyOTQ5MDggICAgICAgICAg
ICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBiMyAgICAgICAgICAgIFZvaWQgYkA0
MDkgPSBSZXR1cm4oYkA0MDIsIFRlcm1pbmFsLCBEQDU0KQorICAgICAgICA5NDkwOCAgICAgICAg
ICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBBaXIgICAgICAgICAgICAgICBS
ZXQ2NCAlcmF4LCBiQDQwOQorICAgICAgICA5NDkwOCAgICAgICAgICAgICAgICAgOTc5LzQwOTUv
OTQ5MDgvMCAgICAgICAgICAgICBhc20gICAgICAgICAgICAgICAgICAgMHgzYmY5NWZhMDg1ZWQ6
IG1vdiAtMHgyOCglcmJwKSwgJXJieAorICAgICAgICA5NDkwOCAgICAgICAgICAgICAgICAgOTc5
LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBhc20gICAgICAgICAgICAgICAgICAgMHgzYmY5NWZh
MDg1ZjE6IG1vdiAtMHgyMCglcmJwKSwgJXIxMgorICAgICAgICA5NDkwOCAgICAgICAgICAgICAg
ICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBhc20gICAgICAgICAgICAgICAgICAgMHgz
YmY5NWZhMDg1ZjU6IG1vdiAtMHgxOCglcmJwKSwgJXIxMworICAgICAgICA5NDkwOCAgICAgICAg
ICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBhc20gICAgICAgICAgICAgICAg
ICAgMHgzYmY5NWZhMDg1Zjk6IG1vdiAtMHgxMCglcmJwKSwgJXIxNAorICAgICAgICA5NDkwOCAg
ICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBhc20gICAgICAgICAg
ICAgICAgICAgMHgzYmY5NWZhMDg1ZmQ6IG1vdiAtMHg4KCVyYnApLCAlcjE1CisgICAgICAgIDk0
OTA4ICAgICAgICAgICAgICAgICA5NzkvNDA5NS85NDkwOC8wICAgICAgICAgICAgIGFzbSAgICAg
ICAgICAgICAgICAgICAweDNiZjk1ZmEwODYwMTogbW92ICVyYnAsICVyc3AKKyAgICAgICAgOTQ5
MDggICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYXNtICAgICAg
ICAgICAgICAgICAgIDB4M2JmOTVmYTA4NjA0OiBwb3AgJXJicAorICAgICAgICA5NDkwOCAgICAg
ICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBhc20gICAgICAgICAgICAg
ICAgICAgMHgzYmY5NWZhMDg2MDU6IHJldAorCisgICAgICAgIFRoZSBtYWluIGF3a3dhcmQgcGFy
dCBvZiB0aGlzIGZvcm1hdHRpbmcgaXMgdGhhdCB0aGUgZXhlY3V0aW9uIGNvdW50cyBjb21lIGZy
b20gdGhlIHByZXZpb3VzIERGRyBiYXNpYyBibG9jay4KKyAgICAgICAgVGhhdCBzYWlkLCBpdCBk
aWRuJ3Qgc2VlbSB3b3J0aCB3b3JyeWluZyBhYm91dCBmb3IgdGhlIGZpcnN0IHBhc3MuCisKKyAg
ICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZSk6
CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgor
ICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6U3RhdGU6OmR1
bXBEaXNhc3NlbWJseSk6CisgICAgICAgICogZnRsL0ZUTFN0YXRlLmg6CisgICAgICAgIChKU0M6
OkZUTDo6U3RhdGU6OmR1bXBEaXNhc3NlbWJseSk6CisKIDIwMjEtMDYtMDEgIEFkcmlhbiBQZXJl
eiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIFN1
cHBvcnQgYnVpbGRpbmcgYWdhaW5zdCB1Q2xpYmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENvbXBpbGUuY3BwCmluZGV4IDA2M2ZkNjA0M2M4OGRhYjQzYThlNzU4ZDYzM2E3ODMyNDM3ZjIy
MzYuLjVlNTU0MWVjNTU5N2VkZmM4ZWMzOTgzM2NmMzkxYjBjZjNkYzlhYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIGNv
bXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZ3JhcGgubV9jb2RlQmxvY2s7CiAgICAgVk0mIHZt
ID0gZ3JhcGgubV92bTsKIAotICAgIGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKKyAgICBp
ZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkgfHwgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyKQog
ICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVyKG1ha2VVbmlxdWU8QjM6
OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKIAogICAgIHsKQEAgLTE2Nyw3OSArMTY3LDgwIEBAIHZv
aWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1
bHQpCiAgICAgfQogICAgIHN0YXRlLmppdENvZGUtPmNvbW1vbi5maW5hbGl6ZUNhdGNoRW50cnlw
b2ludHMoV1RGTW92ZShzdGF0ZS5ncmFwaC5tX2NhdGNoRW50cnlwb2ludHMpKTsKIAotICAgIGlm
IChCMzo6QWlyOjpEaXNhc3NlbWJsZXIqIGRpc2Fzc2VtYmxlciA9IHN0YXRlLnByb2MtPmNvZGUo
KS5kaXNhc3NlbWJsZXIoKSkgewotICAgICAgICBQcmludFN0cmVhbSYgb3V0ID0gV1RGOjpkYXRh
RmlsZSgpOwotCi0gICAgICAgIG91dC5wcmludCgiR2VuZXJhdGVkICIsIHN0YXRlLmdyYXBoLm1f
cGxhbi5tb2RlKCksICIgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoc3RhdGUuZ3Jh
cGgubV9jb2RlQmxvY2ssIEpJVFR5cGU6OkZUTEpJVCksICIsIGluc3RydWN0aW9ucyBzaXplID0g
Iiwgc3RhdGUuZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uc1NpemUoKSwgIjpcbiIpOwot
Ci0gICAgICAgIExpbmtCdWZmZXImIGxpbmtCdWZmZXIgPSAqc3RhdGUuZmluYWxpemVyLT5iM0Nv
ZGVMaW5rQnVmZmVyOwotICAgICAgICBCMzo6VmFsdWUqIGN1cnJlbnRCM1ZhbHVlID0gbnVsbHB0
cjsKLSAgICAgICAgTm9kZSogY3VycmVudERGR05vZGUgPSBudWxscHRyOwotCi0gICAgICAgIEhh
c2hTZXQ8QjM6OlZhbHVlKj4gcHJpbnRlZFZhbHVlczsKLSAgICAgICAgSGFzaFNldDxOb2RlKj4g
cHJpbnRlZE5vZGVzOwotICAgICAgICBjb25zdCBjaGFyKiBkZmdQcmVmaXggPSAiREZHICIgIiAg
ICAiOwotICAgICAgICBjb25zdCBjaGFyKiBiM1ByZWZpeCAgPSAiYjMgICIgIiAgICAgICAgICAi
OwotICAgICAgICBjb25zdCBjaGFyKiBhaXJQcmVmaXggPSAiQWlyICIgIiAgICAgICAgICAgICAg
IjsKLSAgICAgICAgY29uc3QgY2hhciogYXNtUHJlZml4ID0gImFzbSAiICIgICAgICAgICAgICAg
ICAgIjsKLQotICAgICAgICBhdXRvIHByaW50REZHTm9kZSA9IFsmXSAoTm9kZSogbm9kZSkgewot
ICAgICAgICAgICAgaWYgKGN1cnJlbnRERkdOb2RlID09IG5vZGUpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgICAgICBjdXJyZW50REZHTm9kZSA9IG5vZGU7Ci0gICAgICAgICAg
ICBpZiAoIWN1cnJlbnRERkdOb2RlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICAgICAgSGFzaFNldDxOb2RlKj4gbG9jYWxQcmludGVkTm9kZXM7Ci0gICAgICAgICAgICBXVEY6
OkZ1bmN0aW9uPHZvaWQoTm9kZSopPiBwcmludE5vZGVSZWN1cnNpdmUgPSBbJl0gKE5vZGUqIG5v
ZGUpIHsKLSAgICAgICAgICAgICAgICBpZiAocHJpbnRlZE5vZGVzLmNvbnRhaW5zKG5vZGUpIHx8
IGxvY2FsUHJpbnRlZE5vZGVzLmNvbnRhaW5zKG5vZGUpKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBsb2NhbFByaW50ZWROb2Rlcy5hZGQobm9kZSk7Ci0g
ICAgICAgICAgICAgICAgZ3JhcGguZG9Ub0NoaWxkcmVuKG5vZGUsIFsmXSAoRWRnZSBjaGlsZCkg
ewotICAgICAgICAgICAgICAgICAgICBwcmludE5vZGVSZWN1cnNpdmUoY2hpbGQubm9kZSgpKTsK
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBncmFwaC5kdW1wKG91dCwgZGZn
UHJlZml4LCBub2RlKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBwcmludE5vZGVSZWN1
cnNpdmUobm9kZSk7Ci0gICAgICAgICAgICBwcmludGVkTm9kZXMuYWRkKG5vZGUpOwotICAgICAg
ICB9OwotCi0gICAgICAgIGF1dG8gcHJpbnRCM1ZhbHVlID0gWyZdIChCMzo6VmFsdWUqIHZhbHVl
KSB7Ci0gICAgICAgICAgICBpZiAoY3VycmVudEIzVmFsdWUgPT0gdmFsdWUpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBjdXJyZW50QjNWYWx1ZSA9IHZhbHVlOwotICAg
ICAgICAgICAgaWYgKCFjdXJyZW50QjNWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgIHByaW50REZHTm9kZShiaXR3aXNlX2Nhc3Q8Tm9kZSo+KHZhbHVlLT5vcmln
aW4oKS5kYXRhKCkpKTsKLQotICAgICAgICAgICAgSGFzaFNldDxCMzo6VmFsdWUqPiBsb2NhbFBy
aW50ZWRWYWx1ZXM7Ci0gICAgICAgICAgICBhdXRvIHByaW50VmFsdWVSZWN1cnNpdmUgPSByZWN1
cnNhYmxlTGFtYmRhKFsmXSAoYXV0byBzZWxmLCBCMzo6VmFsdWUqIHZhbHVlKSAtPiB2b2lkIHsK
LSAgICAgICAgICAgICAgICBpZiAocHJpbnRlZFZhbHVlcy5jb250YWlucyh2YWx1ZSkgfHwgbG9j
YWxQcmludGVkVmFsdWVzLmNvbnRhaW5zKHZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgICAgICAgICAgbG9jYWxQcmludGVkVmFsdWVzLmFkZCh2YWx1ZSk7Ci0g
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlLT5udW1DaGlsZHJl
bigpOyBpKyspCi0gICAgICAgICAgICAgICAgICAgIHNlbGYodmFsdWUtPmNoaWxkKGkpKTsKLSAg
ICAgICAgICAgICAgICBvdXQucHJpbnQoYjNQcmVmaXgpOwotICAgICAgICAgICAgICAgIHZhbHVl
LT5kZWVwRHVtcChzdGF0ZS5wcm9jLmdldCgpLCBvdXQpOwotICAgICAgICAgICAgICAgIG91dC5w
cmludCgiXG4iKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBwcmludFZhbHVlUmVj
dXJzaXZlKGN1cnJlbnRCM1ZhbHVlKTsKLSAgICAgICAgICAgIHByaW50ZWRWYWx1ZXMuYWRkKHZh
bHVlKTsKLSAgICAgICAgfTsKLQotICAgICAgICBhdXRvIGZvckVhY2hJbnN0ID0gc2NvcGVkTGFt
YmRhPHZvaWQoQjM6OkFpcjo6SW5zdCYpPihbJl0gKEIzOjpBaXI6Okluc3QmIGluc3QpIHsKLSAg
ICAgICAgICAgIHByaW50QjNWYWx1ZShpbnN0Lm9yaWdpbik7Ci0gICAgICAgIH0pOworICAgIGlm
IChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKKyAgICAgICAgc3RhdGUuZHVtcERpc2Fzc2VtYmx5
KFdURjo6ZGF0YUZpbGUoKSk7CisKKyAgICBQcm9maWxlcjo6Q29tcGlsYXRpb24qIGNvbXBpbGF0
aW9uID0gZ3JhcGguY29tcGlsYXRpb24oKTsKKyAgICBpZiAoVU5MSUtFTFkoY29tcGlsYXRpb24p
KSB7CisgICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbigKKyAgICAgICAgICAgIFBy
b2ZpbGVyOjpPcmlnaW5TdGFjaygpLAorICAgICAgICAgICAgdG9DU3RyaW5nKCJHZW5lcmF0ZWQg
RlRMIERGRyBJUiBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRUeXBl
OjpGVExKSVQpLCAiLCBpbnN0cnVjdGlvbnMgc2l6ZSA9ICIsIGdyYXBoLm1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnNTaXplKCksICI6XG4iKSk7CisKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBRG9t
aW5hdG9ycygpOworICAgICAgICBncmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKKworICAg
ICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CisKKyAgICAgICAgRHVtcENvbnRleHQg
ZHVtcENvbnRleHQ7CisgICAgICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKKyAgICAgICAgTm9k
ZSogbGFzdE5vZGUgPSBudWxscHRyOworICAgICAgICBmb3IgKHNpemVfdCBibG9ja0luZGV4ID0g
MDsgYmxvY2tJbmRleCA8IGdyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKKyAgICAg
ICAgICAgIERGRzo6QmFzaWNCbG9jayogYmxvY2sgPSBncmFwaC5ibG9jayhibG9ja0luZGV4KTsK
KyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgIGdyYXBoLmR1bXBCbG9ja0hlYWRlcihvdXQsIHByZWZpeCwgYmxvY2ssIEdyYXBo
OjpEdW1wTGl2ZVBoaXNPbmx5LCAmZHVtcENvbnRleHQpOworICAgICAgICAgICAgY29tcGlsYXRp
b24tPmFkZERlc2NyaXB0aW9uKFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpLCBvdXQudG9DU3RyaW5n
KCkpOworICAgICAgICAgICAgb3V0LnJlc2V0KCk7CiAKLSAgICAgICAgZGlzYXNzZW1ibGVyLT5k
dW1wKHN0YXRlLnByb2MtPmNvZGUoKSwgb3V0LCBsaW5rQnVmZmVyLCBhaXJQcmVmaXgsIGFzbVBy
ZWZpeCwgZm9yRWFjaEluc3QpOwotICAgICAgICBsaW5rQnVmZmVyLmRpZEFscmVhZHlEaXNhc3Nl
bWJsZSgpOworICAgICAgICAgICAgZm9yIChzaXplX3Qgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4
IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBu
b2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CisKKyAgICAgICAgICAgICAgICBQcm9maWxlcjo6
T3JpZ2luU3RhY2sgc3RhY2s7CisKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNl
bWFudGljLmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhY2sgPSBQcm9maWxlcjo6
T3JpZ2luU3RhY2soCisgICAgICAgICAgICAgICAgICAgICAgICAqdm0ubV9wZXJCeXRlY29kZVBy
b2ZpbGVyLCBjb2RlQmxvY2ssIG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGdyYXBoLmR1bXBDb2RlT3JpZ2luKG91dCwgcHJl
Zml4LCBsYXN0Tm9kZSwgbm9kZSwgJmR1bXBDb250ZXh0KSkgeworICAgICAgICAgICAgICAgICAg
ICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oc3RhY2ssIG91dC50b0NTdHJpbmcoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG91dC5yZXNldCgpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGdyYXBoLmR1bXAob3V0LCBwcmVmaXgsIG5vZGUsICZkdW1wQ29udGV4dCk7
CisgICAgICAgICAgICAgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKHN0YWNrLCBvdXQu
dG9DU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG91dC5yZXNldCgpOworCisgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pc1NldCgpKQorICAgICAgICAgICAgICAg
ICAgICBsYXN0Tm9kZSA9IG5vZGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBkdW1wQ29udGV4dC5kdW1wKG91dCwgcHJlZml4KTsKKyAgICAgICAgY29tcGlsYXRpb24tPmFk
ZERlc2NyaXB0aW9uKFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpLCBvdXQudG9DU3RyaW5nKCkpOwor
ICAgICAgICBvdXQucmVzZXQoKTsKKworICAgICAgICBvdXQucHJpbnQoIlxuXG5cbiAgICBGVEwg
QjMvQWlyIERpc2Fzc2VtYmx5OlxuIik7CisgICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlw
dGlvbihQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwgb3V0LnRvQ1N0cmluZygpKTsKKyAgICAgICAg
b3V0LnJlc2V0KCk7CisKKyAgICAgICAgUHJvZmlsZXI6Ok9yaWdpblN0YWNrIG5leHRTdGFjazsK
KyAgICAgICAgc3RhdGUuZHVtcERpc2Fzc2VtYmx5KG91dCwgc2NvcGVkTGFtYmRhPHZvaWQoTm9k
ZSopPihbJl0gKE5vZGUqIG5vZGUpIHsKKyAgICAgICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNj
cmlwdGlvbihuZXh0U3RhY2ssIG91dC50b0NTdHJpbmcoKSk7CisgICAgICAgICAgICBvdXQucmVz
ZXQoKTsKKyAgICAgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaXNTZXQoKSkgewor
ICAgICAgICAgICAgICAgIG5leHRTdGFjayA9IFByb2ZpbGVyOjpPcmlnaW5TdGFjaygKKyAgICAg
ICAgICAgICAgICAgICAgKnZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciwgY29kZUJsb2NrLCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
bmV4dFN0YWNrID0gUHJvZmlsZXI6Ok9yaWdpblN0YWNrKCk7CisgICAgICAgIH0pKTsKKyAgICAg
ICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpLCBv
dXQudG9DU3RyaW5nKCkpOworICAgICAgICBvdXQucmVzZXQoKTsKKworICAgICAgICBzdGF0ZS5q
aXRDb2RlLT5jb21tb24uY29tcGlsYXRpb24gPSBjb21waWxhdGlvbjsKICAgICB9CisKIH0KIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5j
cHAKaW5kZXggMWViMWQ4YWE5ZDY3ZmFkODViYjg1MjU4ZDNlZWViZjljOTAwZDNjOC4uNzBiY2Fm
ODYyM2M0MDcwNzQwODg1ODRhYTM3MGU0MWVjMzNlYTRmOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDQ2FsbEhlbHBl
cnMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgorI2luY2x1ZGUgIkRpc2Fz
c2VtYmxlci5oIgogI2luY2x1ZGUgIkZUTEpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgpAQCAtNjgsNzIgKzY5LDEzIEBAIHZvaWQg
bGluayhTdGF0ZSYgc3RhdGUpCiAKICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnJhbWUgPSBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoCiAgICAgICAgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIsIC1zdGF0aWNfY2FzdDxpbnQzMl90PihBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3Vl
U3RhY2tQb2ludGVyRGVsdGEoKSkpOwotICAgIAotICAgIFByb2ZpbGVyOjpDb21waWxhdGlvbiog
Y29tcGlsYXRpb24gPSBncmFwaC5jb21waWxhdGlvbigpOwotICAgIGlmIChVTkxJS0VMWShjb21w
aWxhdGlvbikpIHsKLSAgICAgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKAotICAgICAg
ICAgICAgUHJvZmlsZXI6Ok9yaWdpblN0YWNrKCksCi0gICAgICAgICAgICB0b0NTdHJpbmcoIkdl
bmVyYXRlZCBGVEwgSklUIGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKGNvZGVCbG9j
aywgSklUVHlwZTo6RlRMSklUKSwgIiwgaW5zdHJ1Y3Rpb25zIHNpemUgPSAiLCBncmFwaC5tX2Nv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zU2l6ZSgpLCAiOlxuIikpOwotICAgICAgICAKLSAgICAgICAg
Z3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwotICAgICAgICBncmFwaC5lbnN1cmVTU0FOYXR1
cmFsTG9vcHMoKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIgICAg
IjsKLSAgICAgICAgCi0gICAgICAgIER1bXBDb250ZXh0IGR1bXBDb250ZXh0OwotICAgICAgICBT
dHJpbmdQcmludFN0cmVhbSBvdXQ7Ci0gICAgICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsK
LSAgICAgICAgZm9yIChzaXplX3QgYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBncmFwaC5u
dW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9j
ayA9IGdyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZ3JhcGgu
ZHVtcEJsb2NrSGVhZGVyKG91dCwgcHJlZml4LCBibG9jaywgR3JhcGg6OkR1bXBMaXZlUGhpc09u
bHksICZkdW1wQ29udGV4dCk7Ci0gICAgICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRp
b24oUHJvZmlsZXI6Ok9yaWdpblN0YWNrKCksIG91dC50b0NTdHJpbmcoKSk7Ci0gICAgICAgICAg
ICBvdXQucmVzZXQoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yIChzaXplX3Qgbm9k
ZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKLSAg
ICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgUHJvZmlsZXI6Ok9yaWdpblN0YWNrIHN0YWNrOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50
aWMuaXNTZXQoKSkgewotICAgICAgICAgICAgICAgICAgICBzdGFjayA9IFByb2ZpbGVyOjpPcmln
aW5TdGFjaygKLSAgICAgICAgICAgICAgICAgICAgICAgICp2bS5tX3BlckJ5dGVjb2RlUHJvZmls
ZXIsIGNvZGVCbG9jaywgbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGdyYXBoLmR1bXBDb2RlT3Jp
Z2luKG91dCwgcHJlZml4LCBsYXN0Tm9kZSwgbm9kZSwgJmR1bXBDb250ZXh0KSkgewotICAgICAg
ICAgICAgICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oc3RhY2ssIG91dC50b0NT
dHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG91dC5yZXNldCgpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBncmFwaC5kdW1wKG91dCwg
cHJlZml4LCBub2RlLCAmZHVtcENvbnRleHQpOwotICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9u
LT5hZGREZXNjcmlwdGlvbihzdGFjaywgb3V0LnRvQ1N0cmluZygpKTsKLSAgICAgICAgICAgICAg
ICBvdXQucmVzZXQoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3JpZ2luLnNlbWFudGljLmlzU2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGxhc3ROb2Rl
ID0gbm9kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZHVt
cENvbnRleHQuZHVtcChvdXQsIHByZWZpeCk7Ci0gICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNj
cmlwdGlvbihQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwgb3V0LnRvQ1N0cmluZygpKTsKLSAgICAg
ICAgb3V0LnJlc2V0KCk7Ci0KLSAgICAgICAgb3V0LnByaW50KCIgICAgRGlzYXNzZW1ibHk6XG4i
KTsKLSAgICAgICAgb3V0LnByaW50KCIgICAgICAgIDxub3QgaW1wbGVtZW50ZWQgeWV0PlxuIik7
Ci0gICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQcm9maWxlcjo6T3JpZ2luU3Rh
Y2soKSwgb3V0LnRvQ1N0cmluZygpKTsKLSAgICAgICAgb3V0LnJlc2V0KCk7Ci0gICAgICAgIAot
ICAgICAgICBzdGF0ZS5qaXRDb2RlLT5jb21tb24uY29tcGlsYXRpb24gPSBjb21waWxhdGlvbjsK
LSAgICB9CiAKICAgICBzd2l0Y2ggKGdyYXBoLm1fcGxhbi5tb2RlKCkpIHsKICAgICBjYXNlIEpJ
VENvbXBpbGF0aW9uTW9kZTo6RlRMOiB7CiAgICAgICAgIGJvb2wgcmVxdWlyZXNBcml0eUZpeHVw
ID0gY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgIT0gMTsKICAgICAgICAgaWYgKGNvZGVCbG9j
ay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgcmVxdWlyZXNBcml0eUZpeHVwKSB7CiAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1haW5QYXRoSnVtcHM7Ci0gICAgCisK
ICAgICAgICAgICAgIGppdC5sb2FkMzIoCiAgICAgICAgICAgICAgICAgZnJhbWUud2l0aE9mZnNl
dChzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpLAogICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKQEAgLTE5MCw3ICsxMzIs
NyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBzdGF0ZS5qaXRDb2RlLT5pbml0
aWFsaXplQWRkcmVzc0ZvckNhbGwoc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkZU
TEZvck9TUkVudHJ5OiB7CiAgICAgICAgIC8vIFdlIGp1bXAgdG8gaGVyZSBzdHJhaWdodCBmcm9t
IERGRyBjb2RlLCBhZnRlciBoYXZpbmcgYm94ZWQgdXAgYWxsIG9mIHRoZQogICAgICAgICAvLyB2
YWx1ZXMgaW50byB0aGUgc2NyYXRjaCBidWZmZXIuIEV2ZXJ5dGhpbmcgc2hvdWxkIGJlIGdvb2Qg
dG8gZ28gLSBhdCB0aGlzCkBAIC0yMDAsNyArMTQyLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0
ZSkKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgIGppdC51bnRh
Z1JldHVybkFkZHJlc3MoKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG1haW5QYXRoSnVt
cCA9IGppdC5qdW1wKCk7Ci0gICAgICAgIAorCiAgICAgICAgIGxpbmtCdWZmZXIgPSBtYWtlVW5p
cXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVEws
IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWls
VG9BbGxvY2F0ZSgpKSB7CiAgICAgICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1
ZTsKQEAgLTIxMSw3ICsxNTMsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBz
dGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQWRkcmVzc0ZvckNhbGwobGlua0J1ZmZlci0+bG9jYXRp
b25PZjxKU0VudHJ5UHRyVGFnPihzdGFydCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
ICAgIAorCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgYnJlYWs7CkBAIC0yMzIsNyArMTc0LDYgQEAgdm9pZCBsaW5rKFN0YXRlJiBz
dGF0ZSkKICAgICAgICAgc3RhdGUuaml0Q29kZS0+aW5pdGlhbGl6ZUIzQ29kZShiM0NvZGVSZWYp
OwogICAgICAgICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQXJpdHlDaGVja0VudHJ5cG9pbnQo
YXJpdHlDaGVja0NvZGVSZWYpOwogICAgIH0KLQogICAgIAogICAgIHN0YXRlLmZpbmFsaXplci0+
ZW50cnlwb2ludExpbmtCdWZmZXIgPSBXVEZNb3ZlKGxpbmtCdWZmZXIpOwogICAgIHN0YXRlLmZp
bmFsaXplci0+ZnVuY3Rpb24gPSBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKaW5kZXggMDFiZGVlYzlmZDM3OTZmNGU0N2RiYWU3MTIw
ZDllNmRhZGU2ZGIwNS4uZWE0OWIzM2FhOTQyNTYzNTY5MzhiNGE5MGQ3NTJmYjQwOGFhODA2YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTI4LDExICsyOCwxNiBA
QAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVk
ZSAiQWlyRGlzYXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIK
ICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExKSVRDb2Rl
LmgiCiAjaW5jbHVkZSAiRlRMSklURmluYWxpemVyLmgiCiAjaW5jbHVkZSAiRlRMUGF0Y2hwb2lu
dEV4Y2VwdGlvbkhhbmRsZS5oIgogCisjaW5jbHVkZSA8d3RmL1JlY3Vyc2FibGVMYW1iZGEuaD4K
KwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB1c2luZyBuYW1lc3BhY2UgQjM7
CkBAIC03MSw2ICs3Niw4MyBAQCBTdGF0ZTo6U3RhdGUoR3JhcGgmIGdyYXBoKQogICAgIHByb2Mt
PnNldEZyb250ZW5kRGF0YSgmZ3JhcGgpOwogfQogCit2b2lkIFN0YXRlOjpkdW1wRGlzYXNzZW1i
bHkoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoREZHOjpOb2RlKik+
JiBwZXJERkdOb2RlQ2FsbGJhY2spCit7CisgICAgQjM6OkFpcjo6RGlzYXNzZW1ibGVyKiBkaXNh
c3NlbWJsZXIgPSBwcm9jLT5jb2RlKCkuZGlzYXNzZW1ibGVyKCk7CisKKyAgICBvdXQucHJpbnQo
IkdlbmVyYXRlZCAiLCBncmFwaC5tX3BsYW4ubW9kZSgpLCAiIGNvZGUgZm9yICIsIENvZGVCbG9j
a1dpdGhKSVRUeXBlKGdyYXBoLm1fY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAiLCBpbnN0
cnVjdGlvbnMgc2l6ZSA9ICIsIGdyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnNTaXplKCks
ICI6XG4iKTsKKworICAgIExpbmtCdWZmZXImIGxpbmtCdWZmZXIgPSAqZmluYWxpemVyLT5iM0Nv
ZGVMaW5rQnVmZmVyOworICAgIEIzOjpWYWx1ZSogY3VycmVudEIzVmFsdWUgPSBudWxscHRyOwor
ICAgIE5vZGUqIGN1cnJlbnRERkdOb2RlID0gbnVsbHB0cjsKKworICAgIEhhc2hTZXQ8QjM6OlZh
bHVlKj4gcHJpbnRlZFZhbHVlczsKKyAgICBIYXNoU2V0PE5vZGUqPiBwcmludGVkTm9kZXM7Cisg
ICAgY29uc3QgY2hhciogZGZnUHJlZml4ID0gIkRGRyAiICIgICAgIjsKKyAgICBjb25zdCBjaGFy
KiBiM1ByZWZpeCAgPSAiYjMgICIgIiAgICAgICAgICAiOworICAgIGNvbnN0IGNoYXIqIGFpclBy
ZWZpeCA9ICJBaXIgIiAiICAgICAgICAgICAgICAiOworICAgIGNvbnN0IGNoYXIqIGFzbVByZWZp
eCA9ICJhc20gIiAiICAgICAgICAgICAgICAgICI7CisKKyAgICBhdXRvIHByaW50REZHTm9kZSA9
IFsmXSAoTm9kZSogbm9kZSkgeworICAgICAgICBpZiAoY3VycmVudERGR05vZGUgPT0gbm9kZSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjdXJyZW50REZHTm9kZSA9IG5vZGU7Cisg
ICAgICAgIGlmICghY3VycmVudERGR05vZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgcGVyREZHTm9kZUNhbGxiYWNrKG5vZGUpOworCisgICAgICAgIEhhc2hTZXQ8Tm9kZSo+IGxv
Y2FsUHJpbnRlZE5vZGVzOworICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoTm9kZSopPiBwcmlu
dE5vZGVSZWN1cnNpdmUgPSBbJl0gKE5vZGUqIG5vZGUpIHsKKyAgICAgICAgICAgIGlmIChwcmlu
dGVkTm9kZXMuY29udGFpbnMobm9kZSkgfHwgbG9jYWxQcmludGVkTm9kZXMuY29udGFpbnMobm9k
ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBsb2NhbFByaW50ZWRO
b2Rlcy5hZGQobm9kZSk7CisgICAgICAgICAgICBncmFwaC5kb1RvQ2hpbGRyZW4obm9kZSwgWyZd
IChFZGdlIGNoaWxkKSB7CisgICAgICAgICAgICAgICAgcHJpbnROb2RlUmVjdXJzaXZlKGNoaWxk
Lm5vZGUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGdyYXBoLmR1bXAob3V0LCBk
ZmdQcmVmaXgsIG5vZGUpOworICAgICAgICB9OworICAgICAgICBwcmludE5vZGVSZWN1cnNpdmUo
bm9kZSk7CisgICAgICAgIHByaW50ZWROb2Rlcy5hZGQobm9kZSk7CisgICAgfTsKKworICAgIGF1
dG8gcHJpbnRCM1ZhbHVlID0gWyZdIChCMzo6VmFsdWUqIHZhbHVlKSB7CisgICAgICAgIGlmIChj
dXJyZW50QjNWYWx1ZSA9PSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBj
dXJyZW50QjNWYWx1ZSA9IHZhbHVlOworICAgICAgICBpZiAoIWN1cnJlbnRCM1ZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHByaW50REZHTm9kZShiaXR3aXNlX2Nhc3Q8Tm9k
ZSo+KHZhbHVlLT5vcmlnaW4oKS5kYXRhKCkpKTsKKworICAgICAgICBIYXNoU2V0PEIzOjpWYWx1
ZSo+IGxvY2FsUHJpbnRlZFZhbHVlczsKKyAgICAgICAgYXV0byBwcmludFZhbHVlUmVjdXJzaXZl
ID0gcmVjdXJzYWJsZUxhbWJkYShbJl0gKGF1dG8gc2VsZiwgQjM6OlZhbHVlKiB2YWx1ZSkgLT4g
dm9pZCB7CisgICAgICAgICAgICBpZiAocHJpbnRlZFZhbHVlcy5jb250YWlucyh2YWx1ZSkgfHwg
bG9jYWxQcmludGVkVmFsdWVzLmNvbnRhaW5zKHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIGxvY2FsUHJpbnRlZFZhbHVlcy5hZGQodmFsdWUpOworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlLT5udW1DaGlsZHJlbigpOyBpKysp
CisgICAgICAgICAgICAgICAgc2VsZih2YWx1ZS0+Y2hpbGQoaSkpOworICAgICAgICAgICAgb3V0
LnByaW50KGIzUHJlZml4KTsKKyAgICAgICAgICAgIHZhbHVlLT5kZWVwRHVtcChwcm9jLmdldCgp
LCBvdXQpOworICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgICAgICB9KTsKKworICAg
ICAgICBwcmludFZhbHVlUmVjdXJzaXZlKGN1cnJlbnRCM1ZhbHVlKTsKKyAgICAgICAgcHJpbnRl
ZFZhbHVlcy5hZGQodmFsdWUpOworICAgIH07CisKKyAgICBhdXRvIGZvckVhY2hJbnN0ID0gc2Nv
cGVkTGFtYmRhPHZvaWQoQjM6OkFpcjo6SW5zdCYpPihbJl0gKEIzOjpBaXI6Okluc3QmIGluc3Qp
IHsKKyAgICAgICAgcHJpbnRCM1ZhbHVlKGluc3Qub3JpZ2luKTsKKyAgICB9KTsKKworICAgIGRp
c2Fzc2VtYmxlci0+ZHVtcChwcm9jLT5jb2RlKCksIG91dCwgbGlua0J1ZmZlciwgYWlyUHJlZml4
LCBhc21QcmVmaXgsIGZvckVhY2hJbnN0KTsKKyAgICBsaW5rQnVmZmVyLmRpZEFscmVhZHlEaXNh
c3NlbWJsZSgpOworfQorCiBTdGF0ZTo6flN0YXRlKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU3RhdGUuaAppbmRleCBhM2VmZWJmMWRhNzc4OGZmMzAzZTRmNjg0Zjc4Nzk1YTFkYWNj
YzVlLi4zZDJjZTExOTYwZTk1MWM2OTIwNWQ5YTg1NGNhM2FlN2FhYTcwMjQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCkBAIC02Nyw2ICs2Nyw4IEBAIHB1YmxpYzoKIAogICAg
IFZNJiB2bSgpIHsgcmV0dXJuIGdyYXBoLm1fdm07IH0KIAorICAgIHZvaWQgZHVtcERpc2Fzc2Vt
Ymx5KFByaW50U3RyZWFtJiwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoREZHOjpOb2RlKik+JiBw
ZXJERkdOb2RlQ2FsbGJhY2sgPSBzY29wZWRMYW1iZGE8dm9pZChERkc6Ok5vZGUqKT4oW10gKERG
Rzo6Tm9kZSopIHsgfSkpOworCiAgICAgLy8gTm9uZSBvZiB0aGVzZSB0aGluZ3MgaXMgb3duZWQg
YnkgU3RhdGUuIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZgogICAgIC8vIEZUTCBwaGFzZXMg
dG8gcHJvcGVybHkgbWFuYWdlIHRoZSBsaWZlY3ljbGUgb2YgdGhlIG1vZHVsZSBhbmQgZnVuY3Rp
b24uCiAgICAgREZHOjpHcmFwaCYgZ3JhcGg7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433141</attachid>
            <date>2021-07-08 10:45:07 -0700</date>
            <delta_ts>2021-07-08 10:49:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227798-20210708134506.patch</filename>
            <type>text/plain</type>
            <size>24599</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi40ZmE5MTY2Y2EyZDRhMmQ4
Y2MyYzEyNDVjZDQ3OTRlNTYyZmYyYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAyMS0wNy0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBkaXNwbGF5LXByb2ZpbGVyLW91dHB1dCBzaG91bGQgYmUgYWJsZSB0
byBwcmludCBkaXNhc3NlbWJseSBmb3IgdGhlIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3Nzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmlnaHQgbm93IHJ1bm5pbmcgSlNDIHdpdGggdGhlIGJ5
dGVjb2RlIHByb2ZpbGVyIHdpbGwgbm90IHByaW50CisgICAgICAgIGRpc2Fzc2VtYmx5IGZvciBG
VEwgY29kZS4gVGhpcyBwYXRjaCBhZGRzIHRoaXMgc3VwcG9ydC4gSW4gb3JkZXIgdG8gZ2V0Cisg
ICAgICAgIGV4ZWN1dGlvbiBjb3VudHMgdGhlcmUgaXMgYSBjYWxsYmFjayBhdCB0aGUgdHJhbnNp
dGlvbiBiZXR3ZWVuIGVhY2gKKyAgICAgICAgREZHIG5vZGUgaW4gdGhlIEFpciBkaXNhc3NlbWJs
ZXIuIEFuIGV4YW1wbGUgb2YgdGhlIG5ldyBvdXRwdXQgaXMgc29tZXRoaW5nIGxpa2U6CisKKyAg
ICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgMC8wLzAvMCAgICAgICAgICAgICAgICAgICAg
YjMgIEJCIzI3OiA7IGZyZXF1ZW5jeSA9IDEuMDAwMDAwCisgICAgICAgIDAgICAgICAgICAgICAg
ICAgICAgICAgIDAvMC8wLzAgICAgICAgICAgICAgICAgICAgIGIzICAgIFByZWRlY2Vzc29yczog
IzIwCisgICAgICAgIDk0OTA4ICAgICAgICAgICAgICAgICA5NzkvNDA5NS85NDkwOC8wICAgICAg
ICAgICAgIERGRyAgICAgICBEQDI5OjwgMTA6LT4gSlNDb25zdGFudChKU3xVc2VBc090aGVyLCBP
dGhlck9iaiwgV2VhazpPYmplY3Q6IDB4MTA2MGZjMDY4IHdpdGggYnV0dGVyZmx5IDB4ODFlZmU0
OGQ4IChTdHJ1Y3R1cmUgMHgxMDVmYzlmMTA6WzB4ZjUwYSwgZ2xvYmFsLCB7T2JqZWN0OjEwMCwg
RnVuY3Rpb246MTAxLCBBcnJheToxMDIsIFJlZ0V4cDoxMDMsIFNoYXJlZEFycmF5QnVmZmVyOjEw
NCwgQXRvbWljczoxMDUsIFN0cmluZzoxMDYsIFByb21pc2U6MTA3LCBCaWdJbnQ6MTA4LCBXZWFr
UmVmOjEwOSwgRmluYWxpemF0aW9uUmVnaXN0cnk6MTEwLCBJbnRsOjExMSwgJHZtOjExMiwgV2Vi
QXNzZW1ibHk6MTEzLCBTeW1ib2wudG9TdHJpbmdUYWc6MTE0LCBkZWJ1ZzoxMTUsIGRlc2NyaWJl
OjExNiwgZGVzY3JpYmVBcnJheToxMTcsIHByaW50OjExOCwgcHJpbnRFcnI6MTE5LCBxdWl0OjEy
MCwgZ2M6MTIxLCBmdWxsR0M6MTIyLCBlZGVuR0M6MTIzLCBnY0hlYXBTaXplOjEyNCwgTWVtb3J5
Rm9vdHByaW50OjEyNSwgcmVzZXRNZW1vcnlQZWFrOjEyNiwgYWRkcmVzc09mOjEyNywgdmVyc2lv
bjoxMjgsIHJ1bjoxMjksIHJ1blN0cmluZzoxMzAsIGxvYWQ6MTMxLCBsb2FkU3RyaW5nOjEzMiwg
cmVhZEZpbGU6MTMzLCByZWFkOjEzNCwgY2hlY2tTeW50YXg6MTM1LCBzbGVlcFNlY29uZHM6MTM2
LCBqc2NTdGFjazoxMzcsIHJlYWRsaW5lOjEzOCwgcHJlY2lzZVRpbWU6MTM5LCBuZXZlcklubGlu
ZUZ1bmN0aW9uOjE0MCwgbm9JbmxpbmU6MTQxLCBub0RGRzoxNDIsIG5vRlRMOjE0Mywgbm9PU1JF
eGl0RnV6emluZzoxNDQsIG51bWJlck9mREZHQ29tcGlsZXM6MTQ1LCBjYWxsZXJJc09NR0NvbXBp
bGVkOjE0NiwganNjT3B0aW9uczoxNDcsIG9wdGltaXplTmV4dEludm9jYXRpb246MTQ4LCByZW9w
dGltaXphdGlvblJldHJ5Q291bnQ6MTQ5LCB0cmFuc2ZlckFycmF5QnVmZmVyOjE1MCwgZmFpbE5l
eHROZXdDb2RlQmxvY2s6MTUxLCBPU1JFeGl0OjE1MiwgaXNGaW5hbFRpZXI6MTUzLCBwcmVkaWN0
SW50MzI6MTU0LCBpc0ludDMyOjE1NSwgaXNQdXJlTmFOOjE1NiwgZmlhdEludDUyOjE1NywgZWZm
ZWN0ZnVsNDI6MTU4LCBtYWtlTWFzcXVlcmFkZXI6MTU5LCBoYXNDdXN0b21Qcm9wZXJ0aWVzOjE2
MCwgY3JlYXRlR2xvYmFsT2JqZWN0OjE2MSwgY3JlYXRlSGVhcEJpZ0ludDoxNjIsIHVzZUJpZ0lu
dDMyOjE2MywgaXNCaWdJbnQzMjoxNjQsIGlzSGVhcEJpZ0ludDoxNjUsIGR1bXBUeXBlc0ZvckFs
bFZhcmlhYmxlczoxNjYsIGRyYWluTWljcm90YXNrczoxNjcsIHNldFRpbWVvdXQ6MTY4LCByZWxl
YXNlV2Vha1JlZnM6MTY5LCBmaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudDoxNzAsIGZpbmFs
aXphdGlvblJlZ2lzdHJ5RGVhZENvdW50OjE3MSwgZ2V0UmFuZG9tU2VlZDoxNzIsIHNldFJhbmRv
bVNlZWQ6MTczLCBpc1JvcGU6MTc0LCBjYWxsZXJTb3VyY2VPcmlnaW46MTc1LCBpczMyQml0UGxh
dGZvcm06MTc2LCBjaGVja01vZHVsZVN5bnRheDoxNzcsIHBsYXRmb3JtU3VwcG9ydHNTYW1wbGlu
Z1Byb2ZpbGVyOjE3OCwgZ2VuZXJhdGVIZWFwU25hcHNob3Q6MTc5LCBnZW5lcmF0ZUhlYXBTbmFw
c2hvdEZvckdDRGVidWdnaW5nOjE4MCwgcmVzZXRTdXBlclNhbXBsZXJTdGF0ZToxODEsIGVuc3Vy
ZUFycmF5U3RvcmFnZToxODIsIHN0YXJ0U2FtcGxpbmdQcm9maWxlcjoxODMsIHNhbXBsaW5nUHJv
ZmlsZXJTdGFja1RyYWNlczoxODQsIG1heEFyZ3VtZW50czoxODUsIGFzeW5jVGVzdFN0YXJ0OjE4
NiwgYXN5bmNUZXN0UGFzc2VkOjE4NywgV2ViQXNzZW1ibHlNZW1vcnlNb2RlOjE4OCwgY29uc29s
ZToxODksICQ6MTkwLCAkMjYyOjE5MSwgd2FpdEZvclJlcG9ydDoxOTIsIGhlYXBDYXBhY2l0eTox
OTMsIGZsYXNoSGVhcEFjY2VzczoxOTQsIGRpc2FibGVSaWNoU291cmNlSW5mbzoxOTUsIG1hbGxv
Y0luQUxvb3A6MTk2LCB0b3RhbENvbXBpbGVUaW1lOjE5Nywgc2V0VW5oYW5kbGVkUmVqZWN0aW9u
Q2FsbGJhY2s6MTk4LCBhc0RvdWJsZU51bWJlcjoxOTksIGRyb3BBbGxMb2NrczoyMDAsIHN1bToy
MDF9LCBOb25BcnJheSwgUHJvdG86MHgxMDVkYjUwNjgsIERpY3Rpb25hcnksIExlYWYgKFdhdGNo
ZWQpXSksIFN0cnVjdHVyZUlEOiA2MjczMCwgYmMjMCwgRXhpdFZhbGlkKQorICAgICAgICA5NDkw
OCAgICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBERkcgICAgICAg
REA2OTo8IDE6LT4gR2V0QnV0dGVyZmx5KENlbGw6REAyOSwgU3RvcmFnZXxVc2VBc090aGVyLCBP
dGhlciwgUjpKU09iamVjdF9idXR0ZXJmbHksIEV4aXRzLCBiYyMyNjYsIEV4aXRWYWxpZCkKKyAg
ICAgICAgOTQ5MDggICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAg
YjMgICAgICAgICAgICBJbnQ2NCBiQDM5OCA9IExvYWQoJDQ0MDI2OTY3MjgoYkA4NSksIG9mZnNl
dCA9IC02MDMzODMyLCBDb250cm9sRGVwZW5kZW50fFJlYWRzOjYwLCBEQDY5KQorICAgICAgICA5
NDkwOCAgICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBBaXIgICAg
ICAgICAgICAgICBNb3ZlIC02MDMzODMyKCVyYngpLCAlcmF4LCBiQDM5OAorICAgICAgICA5NDkw
OCAgICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBhc20gICAgICAg
ICAgICAgICAgICAgMHgzYmY5NWZhMDg1ZDg6IG1vdiAtMHg1YzExYTgoJXJieCksICVyYXgKKyAg
ICAgICAgOTQ5MDggICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAg
REZHICAgICAgIERAMjk6PCAxMDotPiBKU0NvbnN0YW50KEpTfFVzZUFzT3RoZXIsIE90aGVyT2Jq
LCBXZWFrOk9iamVjdDogMHgxMDYwZmMwNjggd2l0aCBidXR0ZXJmbHkgMHg4MWVmZTQ4ZDggKFN0
cnVjdHVyZSAweDEwNWZjOWYxMDpbMHhmNTBhLCBnbG9iYWwsIHtPYmplY3Q6MTAwLCBGdW5jdGlv
bjoxMDEsIEFycmF5OjEwMiwgUmVnRXhwOjEwMywgU2hhcmVkQXJyYXlCdWZmZXI6MTA0LCBBdG9t
aWNzOjEwNSwgU3RyaW5nOjEwNiwgUHJvbWlzZToxMDcsIEJpZ0ludDoxMDgsIFdlYWtSZWY6MTA5
LCBGaW5hbGl6YXRpb25SZWdpc3RyeToxMTAsIEludGw6MTExLCAkdm06MTEyLCBXZWJBc3NlbWJs
eToxMTMsIFN5bWJvbC50b1N0cmluZ1RhZzoxMTQsIGRlYnVnOjExNSwgZGVzY3JpYmU6MTE2LCBk
ZXNjcmliZUFycmF5OjExNywgcHJpbnQ6MTE4LCBwcmludEVycjoxMTksIHF1aXQ6MTIwLCBnYzox
MjEsIGZ1bGxHQzoxMjIsIGVkZW5HQzoxMjMsIGdjSGVhcFNpemU6MTI0LCBNZW1vcnlGb290cHJp
bnQ6MTI1LCByZXNldE1lbW9yeVBlYWs6MTI2LCBhZGRyZXNzT2Y6MTI3LCB2ZXJzaW9uOjEyOCwg
cnVuOjEyOSwgcnVuU3RyaW5nOjEzMCwgbG9hZDoxMzEsIGxvYWRTdHJpbmc6MTMyLCByZWFkRmls
ZToxMzMsIHJlYWQ6MTM0LCBjaGVja1N5bnRheDoxMzUsIHNsZWVwU2Vjb25kczoxMzYsIGpzY1N0
YWNrOjEzNywgcmVhZGxpbmU6MTM4LCBwcmVjaXNlVGltZToxMzksIG5ldmVySW5saW5lRnVuY3Rp
b246MTQwLCBub0lubGluZToxNDEsIG5vREZHOjE0Miwgbm9GVEw6MTQzLCBub09TUkV4aXRGdXp6
aW5nOjE0NCwgbnVtYmVyT2ZERkdDb21waWxlczoxNDUsIGNhbGxlcklzT01HQ29tcGlsZWQ6MTQ2
LCBqc2NPcHRpb25zOjE0Nywgb3B0aW1pemVOZXh0SW52b2NhdGlvbjoxNDgsIHJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudDoxNDksIHRyYW5zZmVyQXJyYXlCdWZmZXI6MTUwLCBmYWlsTmV4dE5ld0Nv
ZGVCbG9jazoxNTEsIE9TUkV4aXQ6MTUyLCBpc0ZpbmFsVGllcjoxNTMsIHByZWRpY3RJbnQzMjox
NTQsIGlzSW50MzI6MTU1LCBpc1B1cmVOYU46MTU2LCBmaWF0SW50NTI6MTU3LCBlZmZlY3RmdWw0
MjoxNTgsIG1ha2VNYXNxdWVyYWRlcjoxNTksIGhhc0N1c3RvbVByb3BlcnRpZXM6MTYwLCBjcmVh
dGVHbG9iYWxPYmplY3Q6MTYxLCBjcmVhdGVIZWFwQmlnSW50OjE2MiwgdXNlQmlnSW50MzI6MTYz
LCBpc0JpZ0ludDMyOjE2NCwgaXNIZWFwQmlnSW50OjE2NSwgZHVtcFR5cGVzRm9yQWxsVmFyaWFi
bGVzOjE2NiwgZHJhaW5NaWNyb3Rhc2tzOjE2Nywgc2V0VGltZW91dDoxNjgsIHJlbGVhc2VXZWFr
UmVmczoxNjksIGZpbmFsaXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50OjE3MCwgZmluYWxpemF0aW9u
UmVnaXN0cnlEZWFkQ291bnQ6MTcxLCBnZXRSYW5kb21TZWVkOjE3Miwgc2V0UmFuZG9tU2VlZDox
NzMsIGlzUm9wZToxNzQsIGNhbGxlclNvdXJjZU9yaWdpbjoxNzUsIGlzMzJCaXRQbGF0Zm9ybTox
NzYsIGNoZWNrTW9kdWxlU3ludGF4OjE3NywgcGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmls
ZXI6MTc4LCBnZW5lcmF0ZUhlYXBTbmFwc2hvdDoxNzksIGdlbmVyYXRlSGVhcFNuYXBzaG90Rm9y
R0NEZWJ1Z2dpbmc6MTgwLCByZXNldFN1cGVyU2FtcGxlclN0YXRlOjE4MSwgZW5zdXJlQXJyYXlT
dG9yYWdlOjE4Miwgc3RhcnRTYW1wbGluZ1Byb2ZpbGVyOjE4Mywgc2FtcGxpbmdQcm9maWxlclN0
YWNrVHJhY2VzOjE4NCwgbWF4QXJndW1lbnRzOjE4NSwgYXN5bmNUZXN0U3RhcnQ6MTg2LCBhc3lu
Y1Rlc3RQYXNzZWQ6MTg3LCBXZWJBc3NlbWJseU1lbW9yeU1vZGU6MTg4LCBjb25zb2xlOjE4OSwg
JDoxOTAsICQyNjI6MTkxLCB3YWl0Rm9yUmVwb3J0OjE5MiwgaGVhcENhcGFjaXR5OjE5MywgZmxh
c2hIZWFwQWNjZXNzOjE5NCwgZGlzYWJsZVJpY2hTb3VyY2VJbmZvOjE5NSwgbWFsbG9jSW5BTG9v
cDoxOTYsIHRvdGFsQ29tcGlsZVRpbWU6MTk3LCBzZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFj
azoxOTgsIGFzRG91YmxlTnVtYmVyOjE5OSwgZHJvcEFsbExvY2tzOjIwMCwgc3VtOjIwMX0sIE5v
bkFycmF5LCBQcm90bzoweDEwNWRiNTA2OCwgRGljdGlvbmFyeSwgTGVhZiAoV2F0Y2hlZCldKSwg
U3RydWN0dXJlSUQ6IDYyNzMwLCBiYyMwLCBFeGl0VmFsaWQpCisgICAgICAgIDk0OTA4ICAgICAg
ICAgICAgICAgICA5NzkvNDA5NS85NDkwOC8wICAgICAgICAgICAgIERGRyAgICAgICBEQDY1Ojwg
MjotPiBHZXRCeU9mZnNldChDaGVjazpVbnR5cGVkOktpbGw6REA2OSwgS25vd25DZWxsOktpbGw6
REAyOSwgSlN8VXNlQXNPdGhlciwgTm9uQm9vbEludDMyLCBpZDB7c3VtfSwgMjAxLCBSOk5hbWVk
UHJvcGVydGllcygwKSwgRXhpdHMsIGJjIzI2NiwgRXhpdFZhbGlkKSAgcHJlZGljdGluZyBOb25C
b29sSW50MzIKKyAgICAgICAgOTQ5MDggICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAg
ICAgICAgICAgICAgYjMgICAgICAgICAgICBJbnQ2NCBiQDQwMiA9IExvYWQoYkAzOTgsIG9mZnNl
dCA9IC04MjQsIENvbnRyb2xEZXBlbmRlbnR8UmVhZHM6NiwgREA2NSkKKyAgICAgICAgOTQ5MDgg
ICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgQWlyICAgICAgICAg
ICAgICAgTW92ZSAtODI0KCVyYXgpLCAlcmF4LCBiQDQwMgorICAgICAgICA5NDkwOCAgICAgICAg
ICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBhc20gICAgICAgICAgICAgICAg
ICAgMHgzYmY5NWZhMDg1ZGY6IG1vdiAtMHgzMzgoJXJheCksICVyYXgKKyAgICAgICAgOTQ5MDgg
ICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYjMgICAgICAgICAg
ICBWb2lkIGJANDAzID0gUGF0Y2hwb2ludCgkNDM5NjY2Mjg4OChiQDkwKTpDb2xkQW55LCBnZW5l
cmF0b3IgPSAweDEwNjZjMDJlMCwgZWFybHlDbG9iYmVyZWQgPSBbXSwgbGF0ZUNsb2JiZXJlZCA9
IFtdLCB1c2VkUmVnaXN0ZXJzID0gWyVyYXgsICVyYnhdLCByZXN1bHRDb25zdHJhaW50cyA9IFdh
cm1BbnksIFdyaXRlc0xvY2FsU3RhdGV8UmVhZHM6VG9wLCBEQDY1KQorICAgICAgICA5NDkwOCAg
ICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBBaXIgICAgICAgICAg
ICAgICBQYXRjaCAmUGF0Y2hwb2ludDAsICQweDEwNjBmYzA2OCwgYkA0MDMKKyAgICAgICAgOTQ5
MDggICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgREZHICAgICAg
IERANTQ6PCEwOi0+IFJldHVybihDaGVjazpVbnR5cGVkOktpbGw6REA2NSwgTXVzdEdlbiwgVzpT
aWRlU3RhdGUsIEV4aXRzLCBiYyMyNzQsIEV4aXRWYWxpZCkKKyAgICAgICAgMjk0OTA4ICAgICAg
ICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYjMgICAgICAgICAgICBWb2lk
IGJANDA5ID0gUmV0dXJuKGJANDAyLCBUZXJtaW5hbCwgREA1NCkKKyAgICAgICAgOTQ5MDggICAg
ICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgQWlyICAgICAgICAgICAg
ICAgUmV0NjQgJXJheCwgYkA0MDkKKyAgICAgICAgOTQ5MDggICAgICAgICAgICAgICAgIDk3OS80
MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYXNtICAgICAgICAgICAgICAgICAgIDB4M2JmOTVmYTA4
NWVkOiBtb3YgLTB4MjgoJXJicCksICVyYngKKyAgICAgICAgOTQ5MDggICAgICAgICAgICAgICAg
IDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYXNtICAgICAgICAgICAgICAgICAgIDB4M2Jm
OTVmYTA4NWYxOiBtb3YgLTB4MjAoJXJicCksICVyMTIKKyAgICAgICAgOTQ5MDggICAgICAgICAg
ICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYXNtICAgICAgICAgICAgICAgICAg
IDB4M2JmOTVmYTA4NWY1OiBtb3YgLTB4MTgoJXJicCksICVyMTMKKyAgICAgICAgOTQ5MDggICAg
ICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYXNtICAgICAgICAgICAg
ICAgICAgIDB4M2JmOTVmYTA4NWY5OiBtb3YgLTB4MTAoJXJicCksICVyMTQKKyAgICAgICAgOTQ5
MDggICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYXNtICAgICAg
ICAgICAgICAgICAgIDB4M2JmOTVmYTA4NWZkOiBtb3YgLTB4OCglcmJwKSwgJXIxNQorICAgICAg
ICA5NDkwOCAgICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBhc20g
ICAgICAgICAgICAgICAgICAgMHgzYmY5NWZhMDg2MDE6IG1vdiAlcmJwLCAlcnNwCisgICAgICAg
IDk0OTA4ICAgICAgICAgICAgICAgICA5NzkvNDA5NS85NDkwOC8wICAgICAgICAgICAgIGFzbSAg
ICAgICAgICAgICAgICAgICAweDNiZjk1ZmEwODYwNDogcG9wICVyYnAKKyAgICAgICAgOTQ5MDgg
ICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYXNtICAgICAgICAg
ICAgICAgICAgIDB4M2JmOTVmYTA4NjA1OiByZXQKKworICAgICAgICBUaGUgbWFpbiBhd2t3YXJk
IHBhcnQgb2YgdGhpcyBmb3JtYXR0aW5nIGlzIHRoYXQgdGhlIGV4ZWN1dGlvbiBjb3VudHMgY29t
ZSBmcm9tIHRoZSBwcmV2aW91cyBERkcgYmFzaWMgYmxvY2suCisgICAgICAgIFRoYXQgc2FpZCwg
aXQgZGlkbid0IHNlZW0gd29ydGggd29ycnlpbmcgYWJvdXQgZm9yIHRoZSBmaXJzdCBwYXNzLgor
CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBp
bGUpOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5r
KToKKyAgICAgICAgKiBmdGwvRlRMU3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlN0YXRl
OjpkdW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5oOgorICAgICAgICAo
SlNDOjpGVEw6OlN0YXRlOjpkdW1wRGlzYXNzZW1ibHkpOgorCiAyMDIxLTA2LTAxICBBZHJpYW4g
UGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RL
XSBTdXBwb3J0IGJ1aWxkaW5nIGFnYWluc3QgdUNsaWJjCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDb21waWxlLmNwcAppbmRleCAwNjNmZDYwNDNjODhkYWI0M2E4ZTc1OGQ2MzNhNzgzMjQz
N2YyMjM2Li41ZTU1NDFlYzU1OTdlZGZjOGVjMzk4MzNjZjM5MWIwY2YzZGM5YWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9p
ZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3Vs
dCkKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLm1fY29kZUJsb2NrOwogICAgIFZN
JiB2bSA9IGdyYXBoLm1fdm07CiAKLSAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCisg
ICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseSgpIHx8IHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxl
cikKICAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgpLnNldERpc2Fzc2VtYmxlcihtYWtlVW5pcXVl
PEIzOjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7CiAKICAgICB7CkBAIC0xNjcsNzkgKzE2Nyw4MCBA
QCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50
UmVzdWx0KQogICAgIH0KICAgICBzdGF0ZS5qaXRDb2RlLT5jb21tb24uZmluYWxpemVDYXRjaEVu
dHJ5cG9pbnRzKFdURk1vdmUoc3RhdGUuZ3JhcGgubV9jYXRjaEVudHJ5cG9pbnRzKSk7CiAKLSAg
ICBpZiAoQjM6OkFpcjo6RGlzYXNzZW1ibGVyKiBkaXNhc3NlbWJsZXIgPSBzdGF0ZS5wcm9jLT5j
b2RlKCkuZGlzYXNzZW1ibGVyKCkpIHsKLSAgICAgICAgUHJpbnRTdHJlYW0mIG91dCA9IFdURjo6
ZGF0YUZpbGUoKTsKLQotICAgICAgICBvdXQucHJpbnQoIkdlbmVyYXRlZCAiLCBzdGF0ZS5ncmFw
aC5tX3BsYW4ubW9kZSgpLCAiIGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKHN0YXRl
LmdyYXBoLm1fY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAiLCBpbnN0cnVjdGlvbnMgc2l6
ZSA9ICIsIHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnNTaXplKCksICI6XG4i
KTsKLQotICAgICAgICBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyID0gKnN0YXRlLmZpbmFsaXplci0+
YjNDb2RlTGlua0J1ZmZlcjsKLSAgICAgICAgQjM6OlZhbHVlKiBjdXJyZW50QjNWYWx1ZSA9IG51
bGxwdHI7Ci0gICAgICAgIE5vZGUqIGN1cnJlbnRERkdOb2RlID0gbnVsbHB0cjsKLQotICAgICAg
ICBIYXNoU2V0PEIzOjpWYWx1ZSo+IHByaW50ZWRWYWx1ZXM7Ci0gICAgICAgIEhhc2hTZXQ8Tm9k
ZSo+IHByaW50ZWROb2RlczsKLSAgICAgICAgY29uc3QgY2hhciogZGZnUHJlZml4ID0gIkRGRyAi
ICIgICAgIjsKLSAgICAgICAgY29uc3QgY2hhciogYjNQcmVmaXggID0gImIzICAiICIgICAgICAg
ICAgIjsKLSAgICAgICAgY29uc3QgY2hhciogYWlyUHJlZml4ID0gIkFpciAiICIgICAgICAgICAg
ICAgICI7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGFzbVByZWZpeCA9ICJhc20gIiAiICAgICAgICAg
ICAgICAgICI7Ci0KLSAgICAgICAgYXV0byBwcmludERGR05vZGUgPSBbJl0gKE5vZGUqIG5vZGUp
IHsKLSAgICAgICAgICAgIGlmIChjdXJyZW50REZHTm9kZSA9PSBub2RlKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgY3VycmVudERGR05vZGUgPSBub2RlOwotICAgICAg
ICAgICAgaWYgKCFjdXJyZW50REZHTm9kZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIEhhc2hTZXQ8Tm9kZSo+IGxvY2FsUHJpbnRlZE5vZGVzOwotICAgICAgICAgICAg
V1RGOjpGdW5jdGlvbjx2b2lkKE5vZGUqKT4gcHJpbnROb2RlUmVjdXJzaXZlID0gWyZdIChOb2Rl
KiBub2RlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByaW50ZWROb2Rlcy5jb250YWlucyhub2Rl
KSB8fCBsb2NhbFByaW50ZWROb2Rlcy5jb250YWlucyhub2RlKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgbG9jYWxQcmludGVkTm9kZXMuYWRkKG5vZGUp
OwotICAgICAgICAgICAgICAgIGdyYXBoLmRvVG9DaGlsZHJlbihub2RlLCBbJl0gKEVkZ2UgY2hp
bGQpIHsKLSAgICAgICAgICAgICAgICAgICAgcHJpbnROb2RlUmVjdXJzaXZlKGNoaWxkLm5vZGUo
KSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgZ3JhcGguZHVtcChvdXQs
IGRmZ1ByZWZpeCwgbm9kZSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgcHJpbnROb2Rl
UmVjdXJzaXZlKG5vZGUpOwotICAgICAgICAgICAgcHJpbnRlZE5vZGVzLmFkZChub2RlKTsKLSAg
ICAgICAgfTsKLQotICAgICAgICBhdXRvIHByaW50QjNWYWx1ZSA9IFsmXSAoQjM6OlZhbHVlKiB2
YWx1ZSkgewotICAgICAgICAgICAgaWYgKGN1cnJlbnRCM1ZhbHVlID09IHZhbHVlKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgY3VycmVudEIzVmFsdWUgPSB2YWx1ZTsK
LSAgICAgICAgICAgIGlmICghY3VycmVudEIzVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgICAgICBwcmludERGR05vZGUoYml0d2lzZV9jYXN0PE5vZGUqPih2YWx1ZS0+
b3JpZ2luKCkuZGF0YSgpKSk7Ci0KLSAgICAgICAgICAgIEhhc2hTZXQ8QjM6OlZhbHVlKj4gbG9j
YWxQcmludGVkVmFsdWVzOwotICAgICAgICAgICAgYXV0byBwcmludFZhbHVlUmVjdXJzaXZlID0g
cmVjdXJzYWJsZUxhbWJkYShbJl0gKGF1dG8gc2VsZiwgQjM6OlZhbHVlKiB2YWx1ZSkgLT4gdm9p
ZCB7Ci0gICAgICAgICAgICAgICAgaWYgKHByaW50ZWRWYWx1ZXMuY29udGFpbnModmFsdWUpIHx8
IGxvY2FsUHJpbnRlZFZhbHVlcy5jb250YWlucyh2YWx1ZSkpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAgICAgICAgIGxvY2FsUHJpbnRlZFZhbHVlcy5hZGQodmFsdWUp
OwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZS0+bnVtQ2hp
bGRyZW4oKTsgaSsrKQotICAgICAgICAgICAgICAgICAgICBzZWxmKHZhbHVlLT5jaGlsZChpKSk7
Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KGIzUHJlZml4KTsKLSAgICAgICAgICAgICAgICB2
YWx1ZS0+ZGVlcER1bXAoc3RhdGUucHJvYy5nZXQoKSwgb3V0KTsKLSAgICAgICAgICAgICAgICBv
dXQucHJpbnQoIlxuIik7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgcHJpbnRWYWx1
ZVJlY3Vyc2l2ZShjdXJyZW50QjNWYWx1ZSk7Ci0gICAgICAgICAgICBwcmludGVkVmFsdWVzLmFk
ZCh2YWx1ZSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgYXV0byBmb3JFYWNoSW5zdCA9IHNjb3Bl
ZExhbWJkYTx2b2lkKEIzOjpBaXI6Okluc3QmKT4oWyZdIChCMzo6QWlyOjpJbnN0JiBpbnN0KSB7
Ci0gICAgICAgICAgICBwcmludEIzVmFsdWUoaW5zdC5vcmlnaW4pOwotICAgICAgICB9KTsKKyAg
ICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCisgICAgICAgIHN0YXRlLmR1bXBEaXNhc3Nl
bWJseShXVEY6OmRhdGFGaWxlKCkpOworCisgICAgUHJvZmlsZXI6OkNvbXBpbGF0aW9uKiBjb21w
aWxhdGlvbiA9IGdyYXBoLmNvbXBpbGF0aW9uKCk7CisgICAgaWYgKFVOTElLRUxZKGNvbXBpbGF0
aW9uKSkgeworICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oCisgICAgICAgICAg
ICBQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwKKyAgICAgICAgICAgIHRvQ1N0cmluZygiR2VuZXJh
dGVkIEZUTCBERkcgSVIgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKGNvZGVCbG9jaywgSklU
VHlwZTo6RlRMSklUKSwgIiwgaW5zdHJ1Y3Rpb25zIHNpemUgPSAiLCBncmFwaC5tX2NvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zU2l6ZSgpLCAiOlxuIikpOworCisgICAgICAgIGdyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CisK
KyAgICAgICAgY29uc3QgY2hhciogcHJlZml4ID0gIiAgICAiOworCisgICAgICAgIER1bXBDb250
ZXh0IGR1bXBDb250ZXh0OworICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgICAg
IE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKKyAgICAgICAgZm9yIChzaXplX3QgYmxvY2tJbmRl
eCA9IDA7IGJsb2NrSW5kZXggPCBncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7Cisg
ICAgICAgICAgICBERkc6OkJhc2ljQmxvY2sqIGJsb2NrID0gZ3JhcGguYmxvY2soYmxvY2tJbmRl
eCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICBncmFwaC5kdW1wQmxvY2tIZWFkZXIob3V0LCBwcmVmaXgsIGJsb2NrLCBH
cmFwaDo6RHVtcExpdmVQaGlzT25seSwgJmR1bXBDb250ZXh0KTsKKyAgICAgICAgICAgIGNvbXBp
bGF0aW9uLT5hZGREZXNjcmlwdGlvbihQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwgb3V0LnRvQ1N0
cmluZygpKTsKKyAgICAgICAgICAgIG91dC5yZXNldCgpOwogCi0gICAgICAgIGRpc2Fzc2VtYmxl
ci0+ZHVtcChzdGF0ZS5wcm9jLT5jb2RlKCksIG91dCwgbGlua0J1ZmZlciwgYWlyUHJlZml4LCBh
c21QcmVmaXgsIGZvckVhY2hJbnN0KTsKLSAgICAgICAgbGlua0J1ZmZlci5kaWRBbHJlYWR5RGlz
YXNzZW1ibGUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IG5vZGVJbmRleCA9IDA7IG5vZGVJ
bmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CisgICAgICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOworCisgICAgICAgICAgICAgICAgUHJvZmls
ZXI6Ok9yaWdpblN0YWNrIHN0YWNrOworCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5pc1NldCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YWNrID0gUHJvZmls
ZXI6Ok9yaWdpblN0YWNrKAorICAgICAgICAgICAgICAgICAgICAgICAgKnZtLm1fcGVyQnl0ZWNv
ZGVQcm9maWxlciwgY29kZUJsb2NrLCBub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChncmFwaC5kdW1wQ29kZU9yaWdpbihvdXQs
IHByZWZpeCwgbGFzdE5vZGUsIG5vZGUsICZkdW1wQ29udGV4dCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKHN0YWNrLCBvdXQudG9DU3RyaW5nKCkp
OworICAgICAgICAgICAgICAgICAgICBvdXQucmVzZXQoKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBncmFwaC5kdW1wKG91dCwgcHJlZml4LCBub2RlLCAmZHVtcENvbnRl
eHQpOworICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihzdGFjaywg
b3V0LnRvQ1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBvdXQucmVzZXQoKTsKKworICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaXNTZXQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgbGFzdE5vZGUgPSBub2RlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgZHVtcENvbnRleHQuZHVtcChvdXQsIHByZWZpeCk7CisgICAgICAgIGNvbXBpbGF0aW9u
LT5hZGREZXNjcmlwdGlvbihQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwgb3V0LnRvQ1N0cmluZygp
KTsKKyAgICAgICAgb3V0LnJlc2V0KCk7CisKKyAgICAgICAgb3V0LnByaW50KCJcblxuXG4gICAg
RlRMIEIzL0FpciBEaXNhc3NlbWJseTpcbiIpOworICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVz
Y3JpcHRpb24oUHJvZmlsZXI6Ok9yaWdpblN0YWNrKCksIG91dC50b0NTdHJpbmcoKSk7CisgICAg
ICAgIG91dC5yZXNldCgpOworCisgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjayBuZXh0U3Rh
Y2s7CisgICAgICAgIHN0YXRlLmR1bXBEaXNhc3NlbWJseShvdXQsIHNjb3BlZExhbWJkYTx2b2lk
KE5vZGUqKT4oWyZdIChOb2RlKiBub2RlKSB7CisgICAgICAgICAgICBjb21waWxhdGlvbi0+YWRk
RGVzY3JpcHRpb24obmV4dFN0YWNrLCBvdXQudG9DU3RyaW5nKCkpOworICAgICAgICAgICAgb3V0
LnJlc2V0KCk7CisgICAgICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFudGljLmlzU2V0KCkp
IHsKKyAgICAgICAgICAgICAgICBuZXh0U3RhY2sgPSBQcm9maWxlcjo6T3JpZ2luU3RhY2soCisg
ICAgICAgICAgICAgICAgICAgICp2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIsIGNvZGVCbG9jaywg
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIG5leHRTdGFjayA9IFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpOworICAgICAgICB9KSk7Cisg
ICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQcm9maWxlcjo6T3JpZ2luU3RhY2so
KSwgb3V0LnRvQ1N0cmluZygpKTsKKyAgICAgICAgb3V0LnJlc2V0KCk7CisKKyAgICAgICAgc3Rh
dGUuaml0Q29kZS0+Y29tbW9uLmNvbXBpbGF0aW9uID0gY29tcGlsYXRpb247CiAgICAgfQorCiB9
CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExp
bmsuY3BwCmluZGV4IDFlYjFkOGFhOWQ2N2ZhZDg1YmI4NTI1OGQzZWVlYmY5YzkwMGQzYzguLjcw
YmNhZjg2MjNjNDA3MDc0MDg4NTg0YWEzNzBlNDFlYzMzZWE0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ0NhbGxI
ZWxwZXJzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKKyNpbmNsdWRlICJE
aXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJGVExKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUT3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTY4LDcyICs2OSwxMyBAQCB2
b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogCiAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZyYW1l
ID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyLCAtc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXNzZW1ibHlIZWxwZXJzOjpwcm9s
b2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKTsKLSAgICAKLSAgICBQcm9maWxlcjo6Q29tcGlsYXRp
b24qIGNvbXBpbGF0aW9uID0gZ3JhcGguY29tcGlsYXRpb24oKTsKLSAgICBpZiAoVU5MSUtFTFko
Y29tcGlsYXRpb24pKSB7Ci0gICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbigKLSAg
ICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpLAotICAgICAgICAgICAgdG9DU3RyaW5n
KCJHZW5lcmF0ZWQgRlRMIEpJVCBjb2RlIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2Rl
QmxvY2ssIEpJVFR5cGU6OkZUTEpJVCksICIsIGluc3RydWN0aW9ucyBzaXplID0gIiwgZ3JhcGgu
bV9jb2RlQmxvY2stPmluc3RydWN0aW9uc1NpemUoKSwgIjpcbiIpKTsKLSAgICAgICAgCi0gICAg
ICAgIGdyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKLSAgICAgICAgZ3JhcGguZW5zdXJlU1NB
TmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAi
ICAgICI7Ci0gICAgICAgIAotICAgICAgICBEdW1wQ29udGV4dCBkdW1wQ29udGV4dDsKLSAgICAg
ICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwotICAgICAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxw
dHI7Ci0gICAgICAgIGZvciAoc2l6ZV90IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgZ3Jh
cGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewotICAgICAgICAgICAgQmFzaWNCbG9jayog
YmxvY2sgPSBncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgICAgIGlmICghYmxvY2sp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGdy
YXBoLmR1bXBCbG9ja0hlYWRlcihvdXQsIHByZWZpeCwgYmxvY2ssIEdyYXBoOjpEdW1wTGl2ZVBo
aXNPbmx5LCAmZHVtcENvbnRleHQpOwotICAgICAgICAgICAgY29tcGlsYXRpb24tPmFkZERlc2Ny
aXB0aW9uKFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpLCBvdXQudG9DU3RyaW5nKCkpOwotICAgICAg
ICAgICAgb3V0LnJlc2V0KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoc2l6ZV90
IG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7
Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjayBzdGFj
azsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNl
bWFudGljLmlzU2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhY2sgPSBQcm9maWxlcjo6
T3JpZ2luU3RhY2soCi0gICAgICAgICAgICAgICAgICAgICAgICAqdm0ubV9wZXJCeXRlY29kZVBy
b2ZpbGVyLCBjb2RlQmxvY2ssIG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChncmFwaC5kdW1wQ29k
ZU9yaWdpbihvdXQsIHByZWZpeCwgbGFzdE5vZGUsIG5vZGUsICZkdW1wQ29udGV4dCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKHN0YWNrLCBvdXQu
dG9DU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgICAgICBvdXQucmVzZXQoKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZ3JhcGguZHVtcChv
dXQsIHByZWZpeCwgbm9kZSwgJmR1bXBDb250ZXh0KTsKLSAgICAgICAgICAgICAgICBjb21waWxh
dGlvbi0+YWRkRGVzY3JpcHRpb24oc3RhY2ssIG91dC50b0NTdHJpbmcoKSk7Ci0gICAgICAgICAg
ICAgICAgb3V0LnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYg
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pc1NldCgpKQotICAgICAgICAgICAgICAgICAgICBsYXN0
Tm9kZSA9IG5vZGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IGR1bXBDb250ZXh0LmR1bXAob3V0LCBwcmVmaXgpOwotICAgICAgICBjb21waWxhdGlvbi0+YWRk
RGVzY3JpcHRpb24oUHJvZmlsZXI6Ok9yaWdpblN0YWNrKCksIG91dC50b0NTdHJpbmcoKSk7Ci0g
ICAgICAgIG91dC5yZXNldCgpOwotCi0gICAgICAgIG91dC5wcmludCgiICAgIERpc2Fzc2VtYmx5
OlxuIik7Ci0gICAgICAgIG91dC5wcmludCgiICAgICAgICA8bm90IGltcGxlbWVudGVkIHlldD5c
biIpOwotICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oUHJvZmlsZXI6Ok9yaWdp
blN0YWNrKCksIG91dC50b0NTdHJpbmcoKSk7Ci0gICAgICAgIG91dC5yZXNldCgpOwotICAgICAg
ICAKLSAgICAgICAgc3RhdGUuaml0Q29kZS0+Y29tbW9uLmNvbXBpbGF0aW9uID0gY29tcGlsYXRp
b247Ci0gICAgfQogCiAgICAgc3dpdGNoIChncmFwaC5tX3BsYW4ubW9kZSgpKSB7CiAgICAgY2Fz
ZSBKSVRDb21waWxhdGlvbk1vZGU6OkZUTDogewogICAgICAgICBib29sIHJlcXVpcmVzQXJpdHlG
aXh1cCA9IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICE9IDE7CiAgICAgICAgIGlmIChjb2Rl
QmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYmIHJlcXVpcmVzQXJpdHlGaXh1cCkg
ewogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtYWluUGF0aEp1bXBzOwotICAg
IAorCiAgICAgICAgICAgICBqaXQubG9hZDMyKAogICAgICAgICAgICAgICAgIGZyYW1lLndpdGhP
ZmZzZXQoc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7CkBAIC0xOTAsNyAr
MTMyLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgc3RhdGUuaml0Q29kZS0+
aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKKwogICAgIGNhc2UgSklUQ29tcGlsYXRpb25Nb2Rl
OjpGVExGb3JPU1JFbnRyeTogewogICAgICAgICAvLyBXZSBqdW1wIHRvIGhlcmUgc3RyYWlnaHQg
ZnJvbSBERkcgY29kZSwgYWZ0ZXIgaGF2aW5nIGJveGVkIHVwIGFsbCBvZiB0aGUKICAgICAgICAg
Ly8gdmFsdWVzIGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyLiBFdmVyeXRoaW5nIHNob3VsZCBiZSBn
b29kIHRvIGdvIC0gYXQgdGhpcwpAQCAtMjAwLDcgKzE0Miw3IEBAIHZvaWQgbGluayhTdGF0ZSYg
c3RhdGUpCiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICBqaXQu
dW50YWdSZXR1cm5BZGRyZXNzKCk7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0
aEp1bXAgPSBqaXQuanVtcCgpOwotICAgICAgICAKKwogICAgICAgICBsaW5rQnVmZmVyID0gbWFr
ZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RlRMLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlk
RmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9
IHRydWU7CkBAIC0yMTEsNyArMTUzLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAg
ICAgc3RhdGUuaml0Q29kZS0+aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKGxpbmtCdWZmZXItPmxv
Y2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oc3RhcnQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgICAgICAKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjMyLDcgKzE3NCw2IEBAIHZvaWQgbGluayhTdGF0
ZSYgc3RhdGUpCiAgICAgICAgIHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVCM0NvZGUoYjNDb2Rl
UmVmKTsKICAgICAgICAgc3RhdGUuaml0Q29kZS0+aW5pdGlhbGl6ZUFyaXR5Q2hlY2tFbnRyeXBv
aW50KGFyaXR5Q2hlY2tDb2RlUmVmKTsKICAgICB9Ci0KICAgICAKICAgICBzdGF0ZS5maW5hbGl6
ZXItPmVudHJ5cG9pbnRMaW5rQnVmZmVyID0gV1RGTW92ZShsaW5rQnVmZmVyKTsKICAgICBzdGF0
ZS5maW5hbGl6ZXItPmZ1bmN0aW9uID0gc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCmluZGV4IDAxYmRlZWM5ZmQzNzk2ZjRlNDdkYmFl
NzEyMGQ5ZTZkYWRlNmRiMDUuLmVhNDliMzNhYTk0MjU2MzU2OTM4YjRhOTBkNzUyZmI0MDhhYTgw
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCkBAIC0yOCwxMSArMjgs
MTYgQEAKIAogI2lmIEVOQUJMRShGVExfSklUKQogCisjaW5jbHVkZSAiQWlyQ29kZS5oIgorI2lu
Y2x1ZGUgIkFpckRpc2Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBl
LmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMSklU
Q29kZS5oIgogI2luY2x1ZGUgIkZUTEpJVEZpbmFsaXplci5oIgogI2luY2x1ZGUgIkZUTFBhdGNo
cG9pbnRFeGNlcHRpb25IYW5kbGUuaCIKIAorI2luY2x1ZGUgPHd0Zi9SZWN1cnNhYmxlTGFtYmRh
Lmg+CisKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdXNpbmcgbmFtZXNwYWNl
IEIzOwpAQCAtNzEsNiArNzYsODMgQEAgU3RhdGU6OlN0YXRlKEdyYXBoJiBncmFwaCkKICAgICBw
cm9jLT5zZXRGcm9udGVuZERhdGEoJmdyYXBoKTsKIH0KIAordm9pZCBTdGF0ZTo6ZHVtcERpc2Fz
c2VtYmx5KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKERGRzo6Tm9k
ZSopPiYgcGVyREZHTm9kZUNhbGxiYWNrKQoreworICAgIEIzOjpBaXI6OkRpc2Fzc2VtYmxlciog
ZGlzYXNzZW1ibGVyID0gcHJvYy0+Y29kZSgpLmRpc2Fzc2VtYmxlcigpOworCisgICAgb3V0LnBy
aW50KCJHZW5lcmF0ZWQgIiwgZ3JhcGgubV9wbGFuLm1vZGUoKSwgIiBjb2RlIGZvciAiLCBDb2Rl
QmxvY2tXaXRoSklUVHlwZShncmFwaC5tX2NvZGVCbG9jaywgSklUVHlwZTo6RlRMSklUKSwgIiwg
aW5zdHJ1Y3Rpb25zIHNpemUgPSAiLCBncmFwaC5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zU2l6
ZSgpLCAiOlxuIik7CisKKyAgICBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyID0gKmZpbmFsaXplci0+
YjNDb2RlTGlua0J1ZmZlcjsKKyAgICBCMzo6VmFsdWUqIGN1cnJlbnRCM1ZhbHVlID0gbnVsbHB0
cjsKKyAgICBOb2RlKiBjdXJyZW50REZHTm9kZSA9IG51bGxwdHI7CisKKyAgICBIYXNoU2V0PEIz
OjpWYWx1ZSo+IHByaW50ZWRWYWx1ZXM7CisgICAgSGFzaFNldDxOb2RlKj4gcHJpbnRlZE5vZGVz
OworICAgIGNvbnN0IGNoYXIqIGRmZ1ByZWZpeCA9ICJERkcgIiAiICAgICI7CisgICAgY29uc3Qg
Y2hhciogYjNQcmVmaXggID0gImIzICAiICIgICAgICAgICAgIjsKKyAgICBjb25zdCBjaGFyKiBh
aXJQcmVmaXggPSAiQWlyICIgIiAgICAgICAgICAgICAgIjsKKyAgICBjb25zdCBjaGFyKiBhc21Q
cmVmaXggPSAiYXNtICIgIiAgICAgICAgICAgICAgICAiOworCisgICAgYXV0byBwcmludERGR05v
ZGUgPSBbJl0gKE5vZGUqIG5vZGUpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRERkdOb2RlID09IG5v
ZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY3VycmVudERGR05vZGUgPSBub2Rl
OworICAgICAgICBpZiAoIWN1cnJlbnRERkdOb2RlKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHBlckRGR05vZGVDYWxsYmFjayhub2RlKTsKKworICAgICAgICBIYXNoU2V0PE5vZGUq
PiBsb2NhbFByaW50ZWROb2RlczsKKyAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKE5vZGUqKT4g
cHJpbnROb2RlUmVjdXJzaXZlID0gWyZdIChOb2RlKiBub2RlKSB7CisgICAgICAgICAgICBpZiAo
cHJpbnRlZE5vZGVzLmNvbnRhaW5zKG5vZGUpIHx8IGxvY2FsUHJpbnRlZE5vZGVzLmNvbnRhaW5z
KG5vZGUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbG9jYWxQcmlu
dGVkTm9kZXMuYWRkKG5vZGUpOworICAgICAgICAgICAgZ3JhcGguZG9Ub0NoaWxkcmVuKG5vZGUs
IFsmXSAoRWRnZSBjaGlsZCkgeworICAgICAgICAgICAgICAgIHByaW50Tm9kZVJlY3Vyc2l2ZShj
aGlsZC5ub2RlKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBncmFwaC5kdW1wKG91
dCwgZGZnUHJlZml4LCBub2RlKTsKKyAgICAgICAgfTsKKyAgICAgICAgcHJpbnROb2RlUmVjdXJz
aXZlKG5vZGUpOworICAgICAgICBwcmludGVkTm9kZXMuYWRkKG5vZGUpOworICAgIH07CisKKyAg
ICBhdXRvIHByaW50QjNWYWx1ZSA9IFsmXSAoQjM6OlZhbHVlKiB2YWx1ZSkgeworICAgICAgICBp
ZiAoY3VycmVudEIzVmFsdWUgPT0gdmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgY3VycmVudEIzVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgaWYgKCFjdXJyZW50QjNWYWx1ZSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwcmludERGR05vZGUoYml0d2lzZV9jYXN0
PE5vZGUqPih2YWx1ZS0+b3JpZ2luKCkuZGF0YSgpKSk7CisKKyAgICAgICAgSGFzaFNldDxCMzo6
VmFsdWUqPiBsb2NhbFByaW50ZWRWYWx1ZXM7CisgICAgICAgIGF1dG8gcHJpbnRWYWx1ZVJlY3Vy
c2l2ZSA9IHJlY3Vyc2FibGVMYW1iZGEoWyZdIChhdXRvIHNlbGYsIEIzOjpWYWx1ZSogdmFsdWUp
IC0+IHZvaWQgeworICAgICAgICAgICAgaWYgKHByaW50ZWRWYWx1ZXMuY29udGFpbnModmFsdWUp
IHx8IGxvY2FsUHJpbnRlZFZhbHVlcy5jb250YWlucyh2YWx1ZSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICBsb2NhbFByaW50ZWRWYWx1ZXMuYWRkKHZhbHVlKTsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZS0+bnVtQ2hpbGRyZW4oKTsg
aSsrKQorICAgICAgICAgICAgICAgIHNlbGYodmFsdWUtPmNoaWxkKGkpKTsKKyAgICAgICAgICAg
IG91dC5wcmludChiM1ByZWZpeCk7CisgICAgICAgICAgICB2YWx1ZS0+ZGVlcER1bXAocHJvYy5n
ZXQoKSwgb3V0KTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgcHJpbnRWYWx1ZVJlY3Vyc2l2ZShjdXJyZW50QjNWYWx1ZSk7CisgICAgICAgIHBy
aW50ZWRWYWx1ZXMuYWRkKHZhbHVlKTsKKyAgICB9OworCisgICAgYXV0byBmb3JFYWNoSW5zdCA9
IHNjb3BlZExhbWJkYTx2b2lkKEIzOjpBaXI6Okluc3QmKT4oWyZdIChCMzo6QWlyOjpJbnN0JiBp
bnN0KSB7CisgICAgICAgIHByaW50QjNWYWx1ZShpbnN0Lm9yaWdpbik7CisgICAgfSk7CisKKyAg
ICBkaXNhc3NlbWJsZXItPmR1bXAocHJvYy0+Y29kZSgpLCBvdXQsIGxpbmtCdWZmZXIsIGFpclBy
ZWZpeCwgYXNtUHJlZml4LCBmb3JFYWNoSW5zdCk7CisgICAgbGlua0J1ZmZlci5kaWRBbHJlYWR5
RGlzYXNzZW1ibGUoKTsKK30KKwogU3RhdGU6On5TdGF0ZSgpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFN0YXRlLmgKaW5kZXggYTNlZmViZjFkYTc3ODhmZjMwM2U0ZjY4NGY3ODc5NWEx
ZGFjY2M1ZS4uM2QyY2UxMTk2MGU5NTFjNjkyMDVkOWE4NTRjYTNhZTdhYWE3MDI0MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaApAQCAtNjcsNiArNjcsOCBAQCBwdWJsaWM6CiAK
ICAgICBWTSYgdm0oKSB7IHJldHVybiBncmFwaC5tX3ZtOyB9CiAKKyAgICB2b2lkIGR1bXBEaXNh
c3NlbWJseShQcmludFN0cmVhbSYsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKERGRzo6Tm9kZSop
PiYgcGVyREZHTm9kZUNhbGxiYWNrID0gc2NvcGVkTGFtYmRhPHZvaWQoREZHOjpOb2RlKik+KFtd
IChERkc6Ok5vZGUqKSB7IH0pKTsKKwogICAgIC8vIE5vbmUgb2YgdGhlc2UgdGhpbmdzIGlzIG93
bmVkIGJ5IFN0YXRlLiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YKICAgICAvLyBGVEwgcGhh
c2VzIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgbGlmZWN5Y2xlIG9mIHRoZSBtb2R1bGUgYW5kIGZ1
bmN0aW9uLgogICAgIERGRzo6R3JhcGgmIGdyYXBoOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433142</attachid>
            <date>2021-07-08 10:49:41 -0700</date>
            <delta_ts>2021-07-08 11:30:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227798-20210708134940.patch</filename>
            <type>text/plain</type>
            <size>23109</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi40ZmE5MTY2Y2EyZDRhMmQ4
Y2MyYzEyNDVjZDQ3OTRlNTYyZmYyYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAyMS0wNy0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBkaXNwbGF5LXByb2ZpbGVyLW91dHB1dCBzaG91bGQgYmUgYWJsZSB0
byBwcmludCBkaXNhc3NlbWJseSBmb3IgdGhlIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3Nzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmlnaHQgbm93IHJ1bm5pbmcgSlNDIHdpdGggdGhlIGJ5
dGVjb2RlIHByb2ZpbGVyIHdpbGwgbm90IHByaW50CisgICAgICAgIGRpc2Fzc2VtYmx5IGZvciBG
VEwgY29kZS4gVGhpcyBwYXRjaCBhZGRzIHRoaXMgc3VwcG9ydC4gSW4gb3JkZXIgdG8gZ2V0Cisg
ICAgICAgIGV4ZWN1dGlvbiBjb3VudHMgdGhlcmUgaXMgYSBjYWxsYmFjayBhdCB0aGUgdHJhbnNp
dGlvbiBiZXR3ZWVuIGVhY2gKKyAgICAgICAgREZHIG5vZGUgaW4gdGhlIEFpciBkaXNhc3NlbWJs
ZXIuIEFuIGV4YW1wbGUgb2YgdGhlIG5ldyBvdXRwdXQgaXMgc29tZXRoaW5nIGxpa2U6CisKKyAg
ICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgMC8wLzAvMCAgICAgICAgICAgICAgICAgICAg
YjMgIEJCIzI3OiA7IGZyZXF1ZW5jeSA9IDEuMDAwMDAwCisgICAgICAgIDAgICAgICAgICAgICAg
ICAgICAgICAgIDAvMC8wLzAgICAgICAgICAgICAgICAgICAgIGIzICAgIFByZWRlY2Vzc29yczog
IzIwCisgICAgICAgIDk0OTA4ICAgICAgICAgICAgICAgICA5NzkvNDA5NS85NDkwOC8wICAgICAg
ICAgICAgIERGRyAgICAgICBEQDI5OjwgMTA6LT4gSlNDb25zdGFudChKU3xVc2VBc090aGVyLCBP
dGhlck9iaiwgV2VhazpPYmplY3Q6IDB4MTA2MGZjMDY4IHdpdGggYnV0dGVyZmx5IDB4ODFlZmU0
OGQ4IChTdHJ1Y3R1cmUgMHgxMDVmYzlmMTA6WzB4ZjUwYSwgZ2xvYmFsLCB7T2JqZWN0OjEwMCwg
RnVuY3Rpb246MTAxLCBBcnJheToxMDIsIFJlZ0V4cDoxMDMsIFNoYXJlZEFycmF5QnVmZmVyOjEw
NCwgQXRvbWljczoxMDUsIFN0cmluZzoxMDYsIFByb21pc2U6MTA3LCBCaWdJbnQ6MTA4LCBXZWFr
UmVmOjEwOSwgRmluYWxpemF0aW9uUmVnaXN0cnk6MTEwLCBJbnRsOjExMSwgJHZtOjExMiwgV2Vi
QXNzZW1ibHk6MTEzLCBTeW1ib2wudG9TdHJpbmdUYWc6MTE0LCBkZWJ1ZzoxMTUsIGRlc2NyaWJl
OjExNiwgZGVzY3JpYmVBcnJheToxMTcsIHByaW50OjExOCwgcHJpbnRFcnI6MTE5LCBxdWl0OjEy
MCwgZ2M6MTIxLCBmdWxsR0M6MTIyLCBlZGVuR0M6MTIzLCBnY0hlYXBTaXplOjEyNCwgTWVtb3J5
Rm9vdHByaW50OjEyNSwgcmVzZXRNZW1vcnlQZWFrOjEyNiwgYWRkcmVzc09mOjEyNywgdmVyc2lv
bjoxMjgsIHJ1bjoxMjksIHJ1blN0cmluZzoxMzAsIGxvYWQ6MTMxLCBsb2FkU3RyaW5nOjEzMiwg
cmVhZEZpbGU6MTMzLCByZWFkOjEzNCwgY2hlY2tTeW50YXg6MTM1LCBzbGVlcFNlY29uZHM6MTM2
LCBqc2NTdGFjazoxMzcsIHJlYWRsaW5lOjEzOCwgcHJlY2lzZVRpbWU6MTM5LCBuZXZlcklubGlu
ZUZ1bmN0aW9uOjE0MCwgbm9JbmxpbmU6MTQxLCBub0RGRzoxNDIsIG5vRlRMOjE0Mywgbm9PU1JF
eGl0RnV6emluZzoxNDQsIG51bWJlck9mREZHQ29tcGlsZXM6MTQ1LCBjYWxsZXJJc09NR0NvbXBp
bGVkOjE0NiwganNjT3B0aW9uczoxNDcsIG9wdGltaXplTmV4dEludm9jYXRpb246MTQ4LCByZW9w
dGltaXphdGlvblJldHJ5Q291bnQ6MTQ5LCB0cmFuc2ZlckFycmF5QnVmZmVyOjE1MCwgZmFpbE5l
eHROZXdDb2RlQmxvY2s6MTUxLCBPU1JFeGl0OjE1MiwgaXNGaW5hbFRpZXI6MTUzLCBwcmVkaWN0
SW50MzI6MTU0LCBpc0ludDMyOjE1NSwgaXNQdXJlTmFOOjE1NiwgZmlhdEludDUyOjE1NywgZWZm
ZWN0ZnVsNDI6MTU4LCBtYWtlTWFzcXVlcmFkZXI6MTU5LCBoYXNDdXN0b21Qcm9wZXJ0aWVzOjE2
MCwgY3JlYXRlR2xvYmFsT2JqZWN0OjE2MSwgY3JlYXRlSGVhcEJpZ0ludDoxNjIsIHVzZUJpZ0lu
dDMyOjE2MywgaXNCaWdJbnQzMjoxNjQsIGlzSGVhcEJpZ0ludDoxNjUsIGR1bXBUeXBlc0ZvckFs
bFZhcmlhYmxlczoxNjYsIGRyYWluTWljcm90YXNrczoxNjcsIHNldFRpbWVvdXQ6MTY4LCByZWxl
YXNlV2Vha1JlZnM6MTY5LCBmaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudDoxNzAsIGZpbmFs
aXphdGlvblJlZ2lzdHJ5RGVhZENvdW50OjE3MSwgZ2V0UmFuZG9tU2VlZDoxNzIsIHNldFJhbmRv
bVNlZWQ6MTczLCBpc1JvcGU6MTc0LCBjYWxsZXJTb3VyY2VPcmlnaW46MTc1LCBpczMyQml0UGxh
dGZvcm06MTc2LCBjaGVja01vZHVsZVN5bnRheDoxNzcsIHBsYXRmb3JtU3VwcG9ydHNTYW1wbGlu
Z1Byb2ZpbGVyOjE3OCwgZ2VuZXJhdGVIZWFwU25hcHNob3Q6MTc5LCBnZW5lcmF0ZUhlYXBTbmFw
c2hvdEZvckdDRGVidWdnaW5nOjE4MCwgcmVzZXRTdXBlclNhbXBsZXJTdGF0ZToxODEsIGVuc3Vy
ZUFycmF5U3RvcmFnZToxODIsIHN0YXJ0U2FtcGxpbmdQcm9maWxlcjoxODMsIHNhbXBsaW5nUHJv
ZmlsZXJTdGFja1RyYWNlczoxODQsIG1heEFyZ3VtZW50czoxODUsIGFzeW5jVGVzdFN0YXJ0OjE4
NiwgYXN5bmNUZXN0UGFzc2VkOjE4NywgV2ViQXNzZW1ibHlNZW1vcnlNb2RlOjE4OCwgY29uc29s
ZToxODksICQ6MTkwLCAkMjYyOjE5MSwgd2FpdEZvclJlcG9ydDoxOTIsIGhlYXBDYXBhY2l0eTox
OTMsIGZsYXNoSGVhcEFjY2VzczoxOTQsIGRpc2FibGVSaWNoU291cmNlSW5mbzoxOTUsIG1hbGxv
Y0luQUxvb3A6MTk2LCB0b3RhbENvbXBpbGVUaW1lOjE5Nywgc2V0VW5oYW5kbGVkUmVqZWN0aW9u
Q2FsbGJhY2s6MTk4LCBhc0RvdWJsZU51bWJlcjoxOTksIGRyb3BBbGxMb2NrczoyMDAsIHN1bToy
MDF9LCBOb25BcnJheSwgUHJvdG86MHgxMDVkYjUwNjgsIERpY3Rpb25hcnksIExlYWYgKFdhdGNo
ZWQpXSksIFN0cnVjdHVyZUlEOiA2MjczMCwgYmMjMCwgRXhpdFZhbGlkKQorICAgICAgICA5NDkw
OCAgICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBERkcgICAgICAg
REA2OTo8IDE6LT4gR2V0QnV0dGVyZmx5KENlbGw6REAyOSwgU3RvcmFnZXxVc2VBc090aGVyLCBP
dGhlciwgUjpKU09iamVjdF9idXR0ZXJmbHksIEV4aXRzLCBiYyMyNjYsIEV4aXRWYWxpZCkKKyAg
ICAgICAgOTQ5MDggICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAg
YjMgICAgICAgICAgICBJbnQ2NCBiQDM5OCA9IExvYWQoJDQ0MDI2OTY3MjgoYkA4NSksIG9mZnNl
dCA9IC02MDMzODMyLCBDb250cm9sRGVwZW5kZW50fFJlYWRzOjYwLCBEQDY5KQorICAgICAgICA5
NDkwOCAgICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBBaXIgICAg
ICAgICAgICAgICBNb3ZlIC02MDMzODMyKCVyYngpLCAlcmF4LCBiQDM5OAorICAgICAgICA5NDkw
OCAgICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBhc20gICAgICAg
ICAgICAgICAgICAgMHgzYmY5NWZhMDg1ZDg6IG1vdiAtMHg1YzExYTgoJXJieCksICVyYXgKKyAg
ICAgICAgOTQ5MDggICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAg
REZHICAgICAgIERAMjk6PCAxMDotPiBKU0NvbnN0YW50KEpTfFVzZUFzT3RoZXIsIE90aGVyT2Jq
LCBXZWFrOk9iamVjdDogMHgxMDYwZmMwNjggd2l0aCBidXR0ZXJmbHkgMHg4MWVmZTQ4ZDggKFN0
cnVjdHVyZSAweDEwNWZjOWYxMDpbMHhmNTBhLCBnbG9iYWwsIHtPYmplY3Q6MTAwLCBGdW5jdGlv
bjoxMDEsIEFycmF5OjEwMiwgUmVnRXhwOjEwMywgU2hhcmVkQXJyYXlCdWZmZXI6MTA0LCBBdG9t
aWNzOjEwNSwgU3RyaW5nOjEwNiwgUHJvbWlzZToxMDcsIEJpZ0ludDoxMDgsIFdlYWtSZWY6MTA5
LCBGaW5hbGl6YXRpb25SZWdpc3RyeToxMTAsIEludGw6MTExLCAkdm06MTEyLCBXZWJBc3NlbWJs
eToxMTMsIFN5bWJvbC50b1N0cmluZ1RhZzoxMTQsIGRlYnVnOjExNSwgZGVzY3JpYmU6MTE2LCBk
ZXNjcmliZUFycmF5OjExNywgcHJpbnQ6MTE4LCBwcmludEVycjoxMTksIHF1aXQ6MTIwLCBnYzox
MjEsIGZ1bGxHQzoxMjIsIGVkZW5HQzoxMjMsIGdjSGVhcFNpemU6MTI0LCBNZW1vcnlGb290cHJp
bnQ6MTI1LCByZXNldE1lbW9yeVBlYWs6MTI2LCBhZGRyZXNzT2Y6MTI3LCB2ZXJzaW9uOjEyOCwg
cnVuOjEyOSwgcnVuU3RyaW5nOjEzMCwgbG9hZDoxMzEsIGxvYWRTdHJpbmc6MTMyLCByZWFkRmls
ZToxMzMsIHJlYWQ6MTM0LCBjaGVja1N5bnRheDoxMzUsIHNsZWVwU2Vjb25kczoxMzYsIGpzY1N0
YWNrOjEzNywgcmVhZGxpbmU6MTM4LCBwcmVjaXNlVGltZToxMzksIG5ldmVySW5saW5lRnVuY3Rp
b246MTQwLCBub0lubGluZToxNDEsIG5vREZHOjE0Miwgbm9GVEw6MTQzLCBub09TUkV4aXRGdXp6
aW5nOjE0NCwgbnVtYmVyT2ZERkdDb21waWxlczoxNDUsIGNhbGxlcklzT01HQ29tcGlsZWQ6MTQ2
LCBqc2NPcHRpb25zOjE0Nywgb3B0aW1pemVOZXh0SW52b2NhdGlvbjoxNDgsIHJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudDoxNDksIHRyYW5zZmVyQXJyYXlCdWZmZXI6MTUwLCBmYWlsTmV4dE5ld0Nv
ZGVCbG9jazoxNTEsIE9TUkV4aXQ6MTUyLCBpc0ZpbmFsVGllcjoxNTMsIHByZWRpY3RJbnQzMjox
NTQsIGlzSW50MzI6MTU1LCBpc1B1cmVOYU46MTU2LCBmaWF0SW50NTI6MTU3LCBlZmZlY3RmdWw0
MjoxNTgsIG1ha2VNYXNxdWVyYWRlcjoxNTksIGhhc0N1c3RvbVByb3BlcnRpZXM6MTYwLCBjcmVh
dGVHbG9iYWxPYmplY3Q6MTYxLCBjcmVhdGVIZWFwQmlnSW50OjE2MiwgdXNlQmlnSW50MzI6MTYz
LCBpc0JpZ0ludDMyOjE2NCwgaXNIZWFwQmlnSW50OjE2NSwgZHVtcFR5cGVzRm9yQWxsVmFyaWFi
bGVzOjE2NiwgZHJhaW5NaWNyb3Rhc2tzOjE2Nywgc2V0VGltZW91dDoxNjgsIHJlbGVhc2VXZWFr
UmVmczoxNjksIGZpbmFsaXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50OjE3MCwgZmluYWxpemF0aW9u
UmVnaXN0cnlEZWFkQ291bnQ6MTcxLCBnZXRSYW5kb21TZWVkOjE3Miwgc2V0UmFuZG9tU2VlZDox
NzMsIGlzUm9wZToxNzQsIGNhbGxlclNvdXJjZU9yaWdpbjoxNzUsIGlzMzJCaXRQbGF0Zm9ybTox
NzYsIGNoZWNrTW9kdWxlU3ludGF4OjE3NywgcGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmls
ZXI6MTc4LCBnZW5lcmF0ZUhlYXBTbmFwc2hvdDoxNzksIGdlbmVyYXRlSGVhcFNuYXBzaG90Rm9y
R0NEZWJ1Z2dpbmc6MTgwLCByZXNldFN1cGVyU2FtcGxlclN0YXRlOjE4MSwgZW5zdXJlQXJyYXlT
dG9yYWdlOjE4Miwgc3RhcnRTYW1wbGluZ1Byb2ZpbGVyOjE4Mywgc2FtcGxpbmdQcm9maWxlclN0
YWNrVHJhY2VzOjE4NCwgbWF4QXJndW1lbnRzOjE4NSwgYXN5bmNUZXN0U3RhcnQ6MTg2LCBhc3lu
Y1Rlc3RQYXNzZWQ6MTg3LCBXZWJBc3NlbWJseU1lbW9yeU1vZGU6MTg4LCBjb25zb2xlOjE4OSwg
JDoxOTAsICQyNjI6MTkxLCB3YWl0Rm9yUmVwb3J0OjE5MiwgaGVhcENhcGFjaXR5OjE5MywgZmxh
c2hIZWFwQWNjZXNzOjE5NCwgZGlzYWJsZVJpY2hTb3VyY2VJbmZvOjE5NSwgbWFsbG9jSW5BTG9v
cDoxOTYsIHRvdGFsQ29tcGlsZVRpbWU6MTk3LCBzZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFj
azoxOTgsIGFzRG91YmxlTnVtYmVyOjE5OSwgZHJvcEFsbExvY2tzOjIwMCwgc3VtOjIwMX0sIE5v
bkFycmF5LCBQcm90bzoweDEwNWRiNTA2OCwgRGljdGlvbmFyeSwgTGVhZiAoV2F0Y2hlZCldKSwg
U3RydWN0dXJlSUQ6IDYyNzMwLCBiYyMwLCBFeGl0VmFsaWQpCisgICAgICAgIDk0OTA4ICAgICAg
ICAgICAgICAgICA5NzkvNDA5NS85NDkwOC8wICAgICAgICAgICAgIERGRyAgICAgICBEQDY1Ojwg
MjotPiBHZXRCeU9mZnNldChDaGVjazpVbnR5cGVkOktpbGw6REA2OSwgS25vd25DZWxsOktpbGw6
REAyOSwgSlN8VXNlQXNPdGhlciwgTm9uQm9vbEludDMyLCBpZDB7c3VtfSwgMjAxLCBSOk5hbWVk
UHJvcGVydGllcygwKSwgRXhpdHMsIGJjIzI2NiwgRXhpdFZhbGlkKSAgcHJlZGljdGluZyBOb25C
b29sSW50MzIKKyAgICAgICAgOTQ5MDggICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAg
ICAgICAgICAgICAgYjMgICAgICAgICAgICBJbnQ2NCBiQDQwMiA9IExvYWQoYkAzOTgsIG9mZnNl
dCA9IC04MjQsIENvbnRyb2xEZXBlbmRlbnR8UmVhZHM6NiwgREA2NSkKKyAgICAgICAgOTQ5MDgg
ICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgQWlyICAgICAgICAg
ICAgICAgTW92ZSAtODI0KCVyYXgpLCAlcmF4LCBiQDQwMgorICAgICAgICA5NDkwOCAgICAgICAg
ICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBhc20gICAgICAgICAgICAgICAg
ICAgMHgzYmY5NWZhMDg1ZGY6IG1vdiAtMHgzMzgoJXJheCksICVyYXgKKyAgICAgICAgOTQ5MDgg
ICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYjMgICAgICAgICAg
ICBWb2lkIGJANDAzID0gUGF0Y2hwb2ludCgkNDM5NjY2Mjg4OChiQDkwKTpDb2xkQW55LCBnZW5l
cmF0b3IgPSAweDEwNjZjMDJlMCwgZWFybHlDbG9iYmVyZWQgPSBbXSwgbGF0ZUNsb2JiZXJlZCA9
IFtdLCB1c2VkUmVnaXN0ZXJzID0gWyVyYXgsICVyYnhdLCByZXN1bHRDb25zdHJhaW50cyA9IFdh
cm1BbnksIFdyaXRlc0xvY2FsU3RhdGV8UmVhZHM6VG9wLCBEQDY1KQorICAgICAgICA5NDkwOCAg
ICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBBaXIgICAgICAgICAg
ICAgICBQYXRjaCAmUGF0Y2hwb2ludDAsICQweDEwNjBmYzA2OCwgYkA0MDMKKyAgICAgICAgOTQ5
MDggICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgREZHICAgICAg
IERANTQ6PCEwOi0+IFJldHVybihDaGVjazpVbnR5cGVkOktpbGw6REA2NSwgTXVzdEdlbiwgVzpT
aWRlU3RhdGUsIEV4aXRzLCBiYyMyNzQsIEV4aXRWYWxpZCkKKyAgICAgICAgMjk0OTA4ICAgICAg
ICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYjMgICAgICAgICAgICBWb2lk
IGJANDA5ID0gUmV0dXJuKGJANDAyLCBUZXJtaW5hbCwgREA1NCkKKyAgICAgICAgOTQ5MDggICAg
ICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgQWlyICAgICAgICAgICAg
ICAgUmV0NjQgJXJheCwgYkA0MDkKKyAgICAgICAgOTQ5MDggICAgICAgICAgICAgICAgIDk3OS80
MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYXNtICAgICAgICAgICAgICAgICAgIDB4M2JmOTVmYTA4
NWVkOiBtb3YgLTB4MjgoJXJicCksICVyYngKKyAgICAgICAgOTQ5MDggICAgICAgICAgICAgICAg
IDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYXNtICAgICAgICAgICAgICAgICAgIDB4M2Jm
OTVmYTA4NWYxOiBtb3YgLTB4MjAoJXJicCksICVyMTIKKyAgICAgICAgOTQ5MDggICAgICAgICAg
ICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYXNtICAgICAgICAgICAgICAgICAg
IDB4M2JmOTVmYTA4NWY1OiBtb3YgLTB4MTgoJXJicCksICVyMTMKKyAgICAgICAgOTQ5MDggICAg
ICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYXNtICAgICAgICAgICAg
ICAgICAgIDB4M2JmOTVmYTA4NWY5OiBtb3YgLTB4MTAoJXJicCksICVyMTQKKyAgICAgICAgOTQ5
MDggICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYXNtICAgICAg
ICAgICAgICAgICAgIDB4M2JmOTVmYTA4NWZkOiBtb3YgLTB4OCglcmJwKSwgJXIxNQorICAgICAg
ICA5NDkwOCAgICAgICAgICAgICAgICAgOTc5LzQwOTUvOTQ5MDgvMCAgICAgICAgICAgICBhc20g
ICAgICAgICAgICAgICAgICAgMHgzYmY5NWZhMDg2MDE6IG1vdiAlcmJwLCAlcnNwCisgICAgICAg
IDk0OTA4ICAgICAgICAgICAgICAgICA5NzkvNDA5NS85NDkwOC8wICAgICAgICAgICAgIGFzbSAg
ICAgICAgICAgICAgICAgICAweDNiZjk1ZmEwODYwNDogcG9wICVyYnAKKyAgICAgICAgOTQ5MDgg
ICAgICAgICAgICAgICAgIDk3OS80MDk1Lzk0OTA4LzAgICAgICAgICAgICAgYXNtICAgICAgICAg
ICAgICAgICAgIDB4M2JmOTVmYTA4NjA1OiByZXQKKworICAgICAgICBUaGUgbWFpbiBhd2t3YXJk
IHBhcnQgb2YgdGhpcyBmb3JtYXR0aW5nIGlzIHRoYXQgdGhlIGV4ZWN1dGlvbiBjb3VudHMgY29t
ZSBmcm9tIHRoZSBwcmV2aW91cyBERkcgYmFzaWMgYmxvY2suCisgICAgICAgIFRoYXQgc2FpZCwg
aXQgZGlkbid0IHNlZW0gd29ydGggd29ycnlpbmcgYWJvdXQgZm9yIHRoZSBmaXJzdCBwYXNzLgor
CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBp
bGUpOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5r
KToKKyAgICAgICAgKiBmdGwvRlRMU3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlN0YXRl
OjpkdW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5oOgorICAgICAgICAo
SlNDOjpGVEw6OlN0YXRlOjpkdW1wRGlzYXNzZW1ibHkpOgorCiAyMDIxLTA2LTAxICBBZHJpYW4g
UGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RL
XSBTdXBwb3J0IGJ1aWxkaW5nIGFnYWluc3QgdUNsaWJjCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDb21waWxlLmNwcAppbmRleCAwNjNmZDYwNDNjODhkYWI0M2E4ZTc1OGQ2MzNhNzgzMjQz
N2YyMjM2Li41ZTU1NDFlYzU1OTdlZGZjOGVjMzk4MzNjZjM5MWIwY2YzZGM5YWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9p
ZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3Vs
dCkKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLm1fY29kZUJsb2NrOwogICAgIFZN
JiB2bSA9IGdyYXBoLm1fdm07CiAKLSAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCisg
ICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseSgpIHx8IHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxl
cikKICAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgpLnNldERpc2Fzc2VtYmxlcihtYWtlVW5pcXVl
PEIzOjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7CiAKICAgICB7CkBAIC0xNjcsNzkgKzE2Nyw4MCBA
QCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50
UmVzdWx0KQogICAgIH0KICAgICBzdGF0ZS5qaXRDb2RlLT5jb21tb24uZmluYWxpemVDYXRjaEVu
dHJ5cG9pbnRzKFdURk1vdmUoc3RhdGUuZ3JhcGgubV9jYXRjaEVudHJ5cG9pbnRzKSk7CiAKLSAg
ICBpZiAoQjM6OkFpcjo6RGlzYXNzZW1ibGVyKiBkaXNhc3NlbWJsZXIgPSBzdGF0ZS5wcm9jLT5j
b2RlKCkuZGlzYXNzZW1ibGVyKCkpIHsKLSAgICAgICAgUHJpbnRTdHJlYW0mIG91dCA9IFdURjo6
ZGF0YUZpbGUoKTsKLQotICAgICAgICBvdXQucHJpbnQoIkdlbmVyYXRlZCAiLCBzdGF0ZS5ncmFw
aC5tX3BsYW4ubW9kZSgpLCAiIGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKHN0YXRl
LmdyYXBoLm1fY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAiLCBpbnN0cnVjdGlvbnMgc2l6
ZSA9ICIsIHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnNTaXplKCksICI6XG4i
KTsKLQotICAgICAgICBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyID0gKnN0YXRlLmZpbmFsaXplci0+
YjNDb2RlTGlua0J1ZmZlcjsKLSAgICAgICAgQjM6OlZhbHVlKiBjdXJyZW50QjNWYWx1ZSA9IG51
bGxwdHI7Ci0gICAgICAgIE5vZGUqIGN1cnJlbnRERkdOb2RlID0gbnVsbHB0cjsKLQotICAgICAg
ICBIYXNoU2V0PEIzOjpWYWx1ZSo+IHByaW50ZWRWYWx1ZXM7Ci0gICAgICAgIEhhc2hTZXQ8Tm9k
ZSo+IHByaW50ZWROb2RlczsKLSAgICAgICAgY29uc3QgY2hhciogZGZnUHJlZml4ID0gIkRGRyAi
ICIgICAgIjsKLSAgICAgICAgY29uc3QgY2hhciogYjNQcmVmaXggID0gImIzICAiICIgICAgICAg
ICAgIjsKLSAgICAgICAgY29uc3QgY2hhciogYWlyUHJlZml4ID0gIkFpciAiICIgICAgICAgICAg
ICAgICI7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGFzbVByZWZpeCA9ICJhc20gIiAiICAgICAgICAg
ICAgICAgICI7Ci0KLSAgICAgICAgYXV0byBwcmludERGR05vZGUgPSBbJl0gKE5vZGUqIG5vZGUp
IHsKLSAgICAgICAgICAgIGlmIChjdXJyZW50REZHTm9kZSA9PSBub2RlKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgY3VycmVudERGR05vZGUgPSBub2RlOwotICAgICAg
ICAgICAgaWYgKCFjdXJyZW50REZHTm9kZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIEhhc2hTZXQ8Tm9kZSo+IGxvY2FsUHJpbnRlZE5vZGVzOwotICAgICAgICAgICAg
V1RGOjpGdW5jdGlvbjx2b2lkKE5vZGUqKT4gcHJpbnROb2RlUmVjdXJzaXZlID0gWyZdIChOb2Rl
KiBub2RlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByaW50ZWROb2Rlcy5jb250YWlucyhub2Rl
KSB8fCBsb2NhbFByaW50ZWROb2Rlcy5jb250YWlucyhub2RlKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgbG9jYWxQcmludGVkTm9kZXMuYWRkKG5vZGUp
OwotICAgICAgICAgICAgICAgIGdyYXBoLmRvVG9DaGlsZHJlbihub2RlLCBbJl0gKEVkZ2UgY2hp
bGQpIHsKLSAgICAgICAgICAgICAgICAgICAgcHJpbnROb2RlUmVjdXJzaXZlKGNoaWxkLm5vZGUo
KSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgZ3JhcGguZHVtcChvdXQs
IGRmZ1ByZWZpeCwgbm9kZSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgcHJpbnROb2Rl
UmVjdXJzaXZlKG5vZGUpOwotICAgICAgICAgICAgcHJpbnRlZE5vZGVzLmFkZChub2RlKTsKLSAg
ICAgICAgfTsKLQotICAgICAgICBhdXRvIHByaW50QjNWYWx1ZSA9IFsmXSAoQjM6OlZhbHVlKiB2
YWx1ZSkgewotICAgICAgICAgICAgaWYgKGN1cnJlbnRCM1ZhbHVlID09IHZhbHVlKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgY3VycmVudEIzVmFsdWUgPSB2YWx1ZTsK
LSAgICAgICAgICAgIGlmICghY3VycmVudEIzVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgICAgICBwcmludERGR05vZGUoYml0d2lzZV9jYXN0PE5vZGUqPih2YWx1ZS0+
b3JpZ2luKCkuZGF0YSgpKSk7Ci0KLSAgICAgICAgICAgIEhhc2hTZXQ8QjM6OlZhbHVlKj4gbG9j
YWxQcmludGVkVmFsdWVzOwotICAgICAgICAgICAgYXV0byBwcmludFZhbHVlUmVjdXJzaXZlID0g
cmVjdXJzYWJsZUxhbWJkYShbJl0gKGF1dG8gc2VsZiwgQjM6OlZhbHVlKiB2YWx1ZSkgLT4gdm9p
ZCB7Ci0gICAgICAgICAgICAgICAgaWYgKHByaW50ZWRWYWx1ZXMuY29udGFpbnModmFsdWUpIHx8
IGxvY2FsUHJpbnRlZFZhbHVlcy5jb250YWlucyh2YWx1ZSkpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAgICAgICAgIGxvY2FsUHJpbnRlZFZhbHVlcy5hZGQodmFsdWUp
OwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZS0+bnVtQ2hp
bGRyZW4oKTsgaSsrKQotICAgICAgICAgICAgICAgICAgICBzZWxmKHZhbHVlLT5jaGlsZChpKSk7
Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KGIzUHJlZml4KTsKLSAgICAgICAgICAgICAgICB2
YWx1ZS0+ZGVlcER1bXAoc3RhdGUucHJvYy5nZXQoKSwgb3V0KTsKLSAgICAgICAgICAgICAgICBv
dXQucHJpbnQoIlxuIik7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgcHJpbnRWYWx1
ZVJlY3Vyc2l2ZShjdXJyZW50QjNWYWx1ZSk7Ci0gICAgICAgICAgICBwcmludGVkVmFsdWVzLmFk
ZCh2YWx1ZSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgYXV0byBmb3JFYWNoSW5zdCA9IHNjb3Bl
ZExhbWJkYTx2b2lkKEIzOjpBaXI6Okluc3QmKT4oWyZdIChCMzo6QWlyOjpJbnN0JiBpbnN0KSB7
Ci0gICAgICAgICAgICBwcmludEIzVmFsdWUoaW5zdC5vcmlnaW4pOwotICAgICAgICB9KTsKKyAg
ICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCisgICAgICAgIHN0YXRlLmR1bXBEaXNhc3Nl
bWJseShXVEY6OmRhdGFGaWxlKCkpOworCisgICAgUHJvZmlsZXI6OkNvbXBpbGF0aW9uKiBjb21w
aWxhdGlvbiA9IGdyYXBoLmNvbXBpbGF0aW9uKCk7CisgICAgaWYgKFVOTElLRUxZKGNvbXBpbGF0
aW9uKSkgeworICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oCisgICAgICAgICAg
ICBQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwKKyAgICAgICAgICAgIHRvQ1N0cmluZygiR2VuZXJh
dGVkIEZUTCBERkcgSVIgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKGNvZGVCbG9jaywgSklU
VHlwZTo6RlRMSklUKSwgIiwgaW5zdHJ1Y3Rpb25zIHNpemUgPSAiLCBncmFwaC5tX2NvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zU2l6ZSgpLCAiOlxuIikpOworCisgICAgICAgIGdyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CisK
KyAgICAgICAgY29uc3QgY2hhciogcHJlZml4ID0gIiAgICAiOworCisgICAgICAgIER1bXBDb250
ZXh0IGR1bXBDb250ZXh0OworICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgICAg
IE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKKyAgICAgICAgZm9yIChzaXplX3QgYmxvY2tJbmRl
eCA9IDA7IGJsb2NrSW5kZXggPCBncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7Cisg
ICAgICAgICAgICBERkc6OkJhc2ljQmxvY2sqIGJsb2NrID0gZ3JhcGguYmxvY2soYmxvY2tJbmRl
eCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICBncmFwaC5kdW1wQmxvY2tIZWFkZXIob3V0LCBwcmVmaXgsIGJsb2NrLCBH
cmFwaDo6RHVtcExpdmVQaGlzT25seSwgJmR1bXBDb250ZXh0KTsKKyAgICAgICAgICAgIGNvbXBp
bGF0aW9uLT5hZGREZXNjcmlwdGlvbihQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwgb3V0LnRvQ1N0
cmluZygpKTsKKyAgICAgICAgICAgIG91dC5yZXNldCgpOwogCi0gICAgICAgIGRpc2Fzc2VtYmxl
ci0+ZHVtcChzdGF0ZS5wcm9jLT5jb2RlKCksIG91dCwgbGlua0J1ZmZlciwgYWlyUHJlZml4LCBh
c21QcmVmaXgsIGZvckVhY2hJbnN0KTsKLSAgICAgICAgbGlua0J1ZmZlci5kaWRBbHJlYWR5RGlz
YXNzZW1ibGUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IG5vZGVJbmRleCA9IDA7IG5vZGVJ
bmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CisgICAgICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOworCisgICAgICAgICAgICAgICAgUHJvZmls
ZXI6Ok9yaWdpblN0YWNrIHN0YWNrOworCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5pc1NldCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YWNrID0gUHJvZmls
ZXI6Ok9yaWdpblN0YWNrKAorICAgICAgICAgICAgICAgICAgICAgICAgKnZtLm1fcGVyQnl0ZWNv
ZGVQcm9maWxlciwgY29kZUJsb2NrLCBub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChncmFwaC5kdW1wQ29kZU9yaWdpbihvdXQs
IHByZWZpeCwgbGFzdE5vZGUsIG5vZGUsICZkdW1wQ29udGV4dCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKHN0YWNrLCBvdXQudG9DU3RyaW5nKCkp
OworICAgICAgICAgICAgICAgICAgICBvdXQucmVzZXQoKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBncmFwaC5kdW1wKG91dCwgcHJlZml4LCBub2RlLCAmZHVtcENvbnRl
eHQpOworICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihzdGFjaywg
b3V0LnRvQ1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBvdXQucmVzZXQoKTsKKworICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaXNTZXQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgbGFzdE5vZGUgPSBub2RlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgZHVtcENvbnRleHQuZHVtcChvdXQsIHByZWZpeCk7CisgICAgICAgIGNvbXBpbGF0aW9u
LT5hZGREZXNjcmlwdGlvbihQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwgb3V0LnRvQ1N0cmluZygp
KTsKKyAgICAgICAgb3V0LnJlc2V0KCk7CisKKyAgICAgICAgb3V0LnByaW50KCJcblxuXG4gICAg
RlRMIEIzL0FpciBEaXNhc3NlbWJseTpcbiIpOworICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVz
Y3JpcHRpb24oUHJvZmlsZXI6Ok9yaWdpblN0YWNrKCksIG91dC50b0NTdHJpbmcoKSk7CisgICAg
ICAgIG91dC5yZXNldCgpOworCisgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjayBuZXh0U3Rh
Y2s7CisgICAgICAgIHN0YXRlLmR1bXBEaXNhc3NlbWJseShvdXQsIHNjb3BlZExhbWJkYTx2b2lk
KE5vZGUqKT4oWyZdIChOb2RlKiBub2RlKSB7CisgICAgICAgICAgICBjb21waWxhdGlvbi0+YWRk
RGVzY3JpcHRpb24obmV4dFN0YWNrLCBvdXQudG9DU3RyaW5nKCkpOworICAgICAgICAgICAgb3V0
LnJlc2V0KCk7CisgICAgICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFudGljLmlzU2V0KCkp
IHsKKyAgICAgICAgICAgICAgICBuZXh0U3RhY2sgPSBQcm9maWxlcjo6T3JpZ2luU3RhY2soCisg
ICAgICAgICAgICAgICAgICAgICp2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIsIGNvZGVCbG9jaywg
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIG5leHRTdGFjayA9IFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpOworICAgICAgICB9KSk7Cisg
ICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQcm9maWxlcjo6T3JpZ2luU3RhY2so
KSwgb3V0LnRvQ1N0cmluZygpKTsKKyAgICAgICAgb3V0LnJlc2V0KCk7CisKKyAgICAgICAgc3Rh
dGUuaml0Q29kZS0+Y29tbW9uLmNvbXBpbGF0aW9uID0gY29tcGlsYXRpb247CiAgICAgfQorCiB9
CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExp
bmsuY3BwCmluZGV4IDFlYjFkOGFhOWQ2N2ZhZDg1YmI4NTI1OGQzZWVlYmY5YzkwMGQzYzguLjA2
NGE0MDFmOTBmMTI3NTczZWJmMWFjZTBiZWRlYzYyNzMxYmE2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtNjksNjUgKzY5LDYgQEAgdm9pZCBsaW5rKFN0YXRlJiBz
dGF0ZSkKICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnJhbWUgPSBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoCiAgICAgICAgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIC1zdGF0
aWNfY2FzdDxpbnQzMl90PihBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVs
dGEoKSkpOwogICAgIAotICAgIFByb2ZpbGVyOjpDb21waWxhdGlvbiogY29tcGlsYXRpb24gPSBn
cmFwaC5jb21waWxhdGlvbigpOwotICAgIGlmIChVTkxJS0VMWShjb21waWxhdGlvbikpIHsKLSAg
ICAgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKAotICAgICAgICAgICAgUHJvZmlsZXI6
Ok9yaWdpblN0YWNrKCksCi0gICAgICAgICAgICB0b0NTdHJpbmcoIkdlbmVyYXRlZCBGVEwgSklU
IGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKGNvZGVCbG9jaywgSklUVHlwZTo6RlRM
SklUKSwgIiwgaW5zdHJ1Y3Rpb25zIHNpemUgPSAiLCBncmFwaC5tX2NvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zU2l6ZSgpLCAiOlxuIikpOwotICAgICAgICAKLSAgICAgICAgZ3JhcGguZW5zdXJlU1NB
RG9taW5hdG9ycygpOwotICAgICAgICBncmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKLSAg
ICAgICAgCi0gICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIgICAgIjsKLSAgICAgICAgCi0g
ICAgICAgIER1bXBDb250ZXh0IGR1bXBDb250ZXh0OwotICAgICAgICBTdHJpbmdQcmludFN0cmVh
bSBvdXQ7Ci0gICAgICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKLSAgICAgICAgZm9yIChz
aXplX3QgYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBncmFwaC5udW1CbG9ja3MoKTsgKyti
bG9ja0luZGV4KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IGdyYXBoLmJsb2Nr
KGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZ3JhcGguZHVtcEJsb2NrSGVhZGVy
KG91dCwgcHJlZml4LCBibG9jaywgR3JhcGg6OkR1bXBMaXZlUGhpc09ubHksICZkdW1wQ29udGV4
dCk7Ci0gICAgICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oUHJvZmlsZXI6Ok9y
aWdpblN0YWNrKCksIG91dC50b0NTdHJpbmcoKSk7Ci0gICAgICAgICAgICBvdXQucmVzZXQoKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yIChzaXplX3Qgbm9kZUluZGV4ID0gMDsgbm9k
ZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKLSAgICAgICAgICAgICAgICBO
b2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgUHJvZmlsZXI6Ok9yaWdpblN0YWNrIHN0YWNrOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaXNTZXQoKSkgewot
ICAgICAgICAgICAgICAgICAgICBzdGFjayA9IFByb2ZpbGVyOjpPcmlnaW5TdGFjaygKLSAgICAg
ICAgICAgICAgICAgICAgICAgICp2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIsIGNvZGVCbG9jaywg
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgaWYgKGdyYXBoLmR1bXBDb2RlT3JpZ2luKG91dCwgcHJlZml4
LCBsYXN0Tm9kZSwgbm9kZSwgJmR1bXBDb250ZXh0KSkgewotICAgICAgICAgICAgICAgICAgICBj
b21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oc3RhY2ssIG91dC50b0NTdHJpbmcoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIG91dC5yZXNldCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBncmFwaC5kdW1wKG91dCwgcHJlZml4LCBub2RlLCAm
ZHVtcENvbnRleHQpOwotICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlv
bihzdGFjaywgb3V0LnRvQ1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICBvdXQucmVzZXQoKTsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFu
dGljLmlzU2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGxhc3ROb2RlID0gbm9kZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZHVtcENvbnRleHQuZHVtcChv
dXQsIHByZWZpeCk7Ci0gICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQcm9maWxl
cjo6T3JpZ2luU3RhY2soKSwgb3V0LnRvQ1N0cmluZygpKTsKLSAgICAgICAgb3V0LnJlc2V0KCk7
Ci0KLSAgICAgICAgb3V0LnByaW50KCIgICAgRGlzYXNzZW1ibHk6XG4iKTsKLSAgICAgICAgb3V0
LnByaW50KCIgICAgICAgIDxub3QgaW1wbGVtZW50ZWQgeWV0PlxuIik7Ci0gICAgICAgIGNvbXBp
bGF0aW9uLT5hZGREZXNjcmlwdGlvbihQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwgb3V0LnRvQ1N0
cmluZygpKTsKLSAgICAgICAgb3V0LnJlc2V0KCk7Ci0gICAgICAgIAotICAgICAgICBzdGF0ZS5q
aXRDb2RlLT5jb21tb24uY29tcGlsYXRpb24gPSBjb21waWxhdGlvbjsKLSAgICB9Ci0KICAgICBz
d2l0Y2ggKGdyYXBoLm1fcGxhbi5tb2RlKCkpIHsKICAgICBjYXNlIEpJVENvbXBpbGF0aW9uTW9k
ZTo6RlRMOiB7CiAgICAgICAgIGJvb2wgcmVxdWlyZXNBcml0eUZpeHVwID0gY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkgIT0gMTsKQEAgLTIzMyw3ICsxNzQsNiBAQCB2b2lkIGxpbmsoU3RhdGUm
IHN0YXRlKQogICAgICAgICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQXJpdHlDaGVja0VudHJ5
cG9pbnQoYXJpdHlDaGVja0NvZGVSZWYpOwogICAgIH0KIAotICAgIAogICAgIHN0YXRlLmZpbmFs
aXplci0+ZW50cnlwb2ludExpbmtCdWZmZXIgPSBXVEZNb3ZlKGxpbmtCdWZmZXIpOwogICAgIHN0
YXRlLmZpbmFsaXplci0+ZnVuY3Rpb24gPSBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbjsKICAgICBz
dGF0ZS5maW5hbGl6ZXItPmppdENvZGUgPSBzdGF0ZS5qaXRDb2RlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFN0YXRlLmNwcAppbmRleCAwMWJkZWVjOWZkMzc5NmY0ZTQ3ZGJhZTcxMjBkOWU2
ZGFkZTZkYjA1Li5lYTQ5YjMzYWE5NDI1NjM1NjkzOGI0YTkwZDc1MmZiNDA4YWE4MDZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcApAQCAtMjgsMTEgKzI4LDE2IEBACiAK
ICNpZiBFTkFCTEUoRlRMX0pJVCkKIAorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlICJB
aXJEaXNhc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgogI2lu
Y2x1ZGUgIkZUTEZvck9TUkVudHJ5SklUQ29kZS5oIgogI2luY2x1ZGUgIkZUTEpJVENvZGUuaCIK
ICNpbmNsdWRlICJGVExKSVRGaW5hbGl6ZXIuaCIKICNpbmNsdWRlICJGVExQYXRjaHBvaW50RXhj
ZXB0aW9uSGFuZGxlLmgiCiAKKyNpbmNsdWRlIDx3dGYvUmVjdXJzYWJsZUxhbWJkYS5oPgorCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBCMzsKQEAg
LTcxLDYgKzc2LDgzIEBAIFN0YXRlOjpTdGF0ZShHcmFwaCYgZ3JhcGgpCiAgICAgcHJvYy0+c2V0
RnJvbnRlbmREYXRhKCZncmFwaCk7CiB9CiAKK3ZvaWQgU3RhdGU6OmR1bXBEaXNhc3NlbWJseShQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChERkc6Ok5vZGUqKT4mIHBl
ckRGR05vZGVDYWxsYmFjaykKK3sKKyAgICBCMzo6QWlyOjpEaXNhc3NlbWJsZXIqIGRpc2Fzc2Vt
YmxlciA9IHByb2MtPmNvZGUoKS5kaXNhc3NlbWJsZXIoKTsKKworICAgIG91dC5wcmludCgiR2Vu
ZXJhdGVkICIsIGdyYXBoLm1fcGxhbi5tb2RlKCksICIgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0
aEpJVFR5cGUoZ3JhcGgubV9jb2RlQmxvY2ssIEpJVFR5cGU6OkZUTEpJVCksICIsIGluc3RydWN0
aW9ucyBzaXplID0gIiwgZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uc1NpemUoKSwgIjpc
biIpOworCisgICAgTGlua0J1ZmZlciYgbGlua0J1ZmZlciA9ICpmaW5hbGl6ZXItPmIzQ29kZUxp
bmtCdWZmZXI7CisgICAgQjM6OlZhbHVlKiBjdXJyZW50QjNWYWx1ZSA9IG51bGxwdHI7CisgICAg
Tm9kZSogY3VycmVudERGR05vZGUgPSBudWxscHRyOworCisgICAgSGFzaFNldDxCMzo6VmFsdWUq
PiBwcmludGVkVmFsdWVzOworICAgIEhhc2hTZXQ8Tm9kZSo+IHByaW50ZWROb2RlczsKKyAgICBj
b25zdCBjaGFyKiBkZmdQcmVmaXggPSAiREZHICIgIiAgICAiOworICAgIGNvbnN0IGNoYXIqIGIz
UHJlZml4ICA9ICJiMyAgIiAiICAgICAgICAgICI7CisgICAgY29uc3QgY2hhciogYWlyUHJlZml4
ID0gIkFpciAiICIgICAgICAgICAgICAgICI7CisgICAgY29uc3QgY2hhciogYXNtUHJlZml4ID0g
ImFzbSAiICIgICAgICAgICAgICAgICAgIjsKKworICAgIGF1dG8gcHJpbnRERkdOb2RlID0gWyZd
IChOb2RlKiBub2RlKSB7CisgICAgICAgIGlmIChjdXJyZW50REZHTm9kZSA9PSBub2RlKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGN1cnJlbnRERkdOb2RlID0gbm9kZTsKKyAgICAg
ICAgaWYgKCFjdXJyZW50REZHTm9kZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBw
ZXJERkdOb2RlQ2FsbGJhY2sobm9kZSk7CisKKyAgICAgICAgSGFzaFNldDxOb2RlKj4gbG9jYWxQ
cmludGVkTm9kZXM7CisgICAgICAgIFdURjo6RnVuY3Rpb248dm9pZChOb2RlKik+IHByaW50Tm9k
ZVJlY3Vyc2l2ZSA9IFsmXSAoTm9kZSogbm9kZSkgeworICAgICAgICAgICAgaWYgKHByaW50ZWRO
b2Rlcy5jb250YWlucyhub2RlKSB8fCBsb2NhbFByaW50ZWROb2Rlcy5jb250YWlucyhub2RlKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGxvY2FsUHJpbnRlZE5vZGVz
LmFkZChub2RlKTsKKyAgICAgICAgICAgIGdyYXBoLmRvVG9DaGlsZHJlbihub2RlLCBbJl0gKEVk
Z2UgY2hpbGQpIHsKKyAgICAgICAgICAgICAgICBwcmludE5vZGVSZWN1cnNpdmUoY2hpbGQubm9k
ZSgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZ3JhcGguZHVtcChvdXQsIGRmZ1By
ZWZpeCwgbm9kZSk7CisgICAgICAgIH07CisgICAgICAgIHByaW50Tm9kZVJlY3Vyc2l2ZShub2Rl
KTsKKyAgICAgICAgcHJpbnRlZE5vZGVzLmFkZChub2RlKTsKKyAgICB9OworCisgICAgYXV0byBw
cmludEIzVmFsdWUgPSBbJl0gKEIzOjpWYWx1ZSogdmFsdWUpIHsKKyAgICAgICAgaWYgKGN1cnJl
bnRCM1ZhbHVlID09IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGN1cnJl
bnRCM1ZhbHVlID0gdmFsdWU7CisgICAgICAgIGlmICghY3VycmVudEIzVmFsdWUpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgcHJpbnRERkdOb2RlKGJpdHdpc2VfY2FzdDxOb2RlKj4o
dmFsdWUtPm9yaWdpbigpLmRhdGEoKSkpOworCisgICAgICAgIEhhc2hTZXQ8QjM6OlZhbHVlKj4g
bG9jYWxQcmludGVkVmFsdWVzOworICAgICAgICBhdXRvIHByaW50VmFsdWVSZWN1cnNpdmUgPSBy
ZWN1cnNhYmxlTGFtYmRhKFsmXSAoYXV0byBzZWxmLCBCMzo6VmFsdWUqIHZhbHVlKSAtPiB2b2lk
IHsKKyAgICAgICAgICAgIGlmIChwcmludGVkVmFsdWVzLmNvbnRhaW5zKHZhbHVlKSB8fCBsb2Nh
bFByaW50ZWRWYWx1ZXMuY29udGFpbnModmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgbG9jYWxQcmludGVkVmFsdWVzLmFkZCh2YWx1ZSk7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWUtPm51bUNoaWxkcmVuKCk7IGkrKykKKyAg
ICAgICAgICAgICAgICBzZWxmKHZhbHVlLT5jaGlsZChpKSk7CisgICAgICAgICAgICBvdXQucHJp
bnQoYjNQcmVmaXgpOworICAgICAgICAgICAgdmFsdWUtPmRlZXBEdW1wKHByb2MuZ2V0KCksIG91
dCk7CisgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgICAgIH0pOworCisgICAgICAg
IHByaW50VmFsdWVSZWN1cnNpdmUoY3VycmVudEIzVmFsdWUpOworICAgICAgICBwcmludGVkVmFs
dWVzLmFkZCh2YWx1ZSk7CisgICAgfTsKKworICAgIGF1dG8gZm9yRWFjaEluc3QgPSBzY29wZWRM
YW1iZGE8dm9pZChCMzo6QWlyOjpJbnN0Jik+KFsmXSAoQjM6OkFpcjo6SW5zdCYgaW5zdCkgewor
ICAgICAgICBwcmludEIzVmFsdWUoaW5zdC5vcmlnaW4pOworICAgIH0pOworCisgICAgZGlzYXNz
ZW1ibGVyLT5kdW1wKHByb2MtPmNvZGUoKSwgb3V0LCBsaW5rQnVmZmVyLCBhaXJQcmVmaXgsIGFz
bVByZWZpeCwgZm9yRWFjaEluc3QpOworICAgIGxpbmtCdWZmZXIuZGlkQWxyZWFkeURpc2Fzc2Vt
YmxlKCk7Cit9CisKIFN0YXRlOjp+U3RhdGUoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTdGF0ZS5oCmluZGV4IGEzZWZlYmYxZGE3Nzg4ZmYzMDNlNGY2ODRmNzg3OTVhMWRhY2NjNWUu
LjNkMmNlMTE5NjBlOTUxYzY5MjA1ZDlhODU0Y2EzYWU3YWFhNzAyNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFN0YXRlLmgKQEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogCiAgICAgVk0m
IHZtKCkgeyByZXR1cm4gZ3JhcGgubV92bTsgfQogCisgICAgdm9pZCBkdW1wRGlzYXNzZW1ibHko
UHJpbnRTdHJlYW0mLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChERkc6Ok5vZGUqKT4mIHBlckRG
R05vZGVDYWxsYmFjayA9IHNjb3BlZExhbWJkYTx2b2lkKERGRzo6Tm9kZSopPihbXSAoREZHOjpO
b2RlKikgeyB9KSk7CisKICAgICAvLyBOb25lIG9mIHRoZXNlIHRoaW5ncyBpcyBvd25lZCBieSBT
dGF0ZS4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mCiAgICAgLy8gRlRMIHBoYXNlcyB0byBw
cm9wZXJseSBtYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZiB0aGUgbW9kdWxlIGFuZCBmdW5jdGlvbi4K
ICAgICBERkc6OkdyYXBoJiBncmFwaDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433147</attachid>
            <date>2021-07-08 11:30:43 -0700</date>
            <delta_ts>2021-07-08 11:32:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227798-20210708143042.patch</filename>
            <type>text/plain</type>
            <size>15255</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi42M2E5YjdiNjUwMjY4ODk3
NjEzZTlkMDJmYjY1MjE2ZjBlNGI0YzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0wNy0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBkaXNwbGF5LXByb2ZpbGVyLW91dHB1dCBzaG91bGQgYmUgYWJsZSB0
byBwcmludCBkaXNhc3NlbWJseSBmb3IgdGhlIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3Nzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmlnaHQgbm93IHJ1bm5pbmcgSlNDIHdpdGggdGhlIGJ5
dGVjb2RlIHByb2ZpbGVyIHdpbGwgbm90IHByaW50CisgICAgICAgIGRpc2Fzc2VtYmx5IGZvciBG
VEwgY29kZS4gVGhpcyBwYXRjaCBhZGRzIHRoaXMgc3VwcG9ydC4gSW4gb3JkZXIgdG8gZ2V0Cisg
ICAgICAgIGV4ZWN1dGlvbiBjb3VudHMgdGhlcmUgaXMgYSBjYWxsYmFjayBhdCB0aGUgdHJhbnNp
dGlvbiBiZXR3ZWVuIGVhY2gKKyAgICAgICAgREZHIG5vZGUgaW4gdGhlIEFpciBkaXNhc3NlbWJs
ZXIuIFNpbmNlIEIzIGNvZGUgbW92ZSBwYXJ0cyBvZgorICAgICAgICBERkcgbm9kZXMgdG8gZGlm
ZmVyZW50IGJhc2ljIGJsb2NrcyB3ZSBkb24ndCBpbmNsdWRlIGV4ZWN1dGlvbgorICAgICAgICBj
b3VudHMgaW4gdGhlIGR1bXAuIEhvd2V2ZXIsIHRoZSBERkctb25seSBncmFwaCBwcmludGVkIGJl
Zm9yZQorICAgICAgICB0aGUgZGlzYXNzZW1ibHkgd2lsbCBzdGlsbCBoYXZlIHRoZSBjb3VudHMu
CisKKyAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29t
cGlsZSk6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Omxp
bmspOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6U3Rh
dGU6OmR1bXBEaXNhc3NlbWJseSk6CisgICAgICAgICogZnRsL0ZUTFN0YXRlLmg6CisgICAgICAg
IChKU0M6OkZUTDo6U3RhdGU6OmR1bXBEaXNhc3NlbWJseSk6CisKIDIwMjEtMDYtMDEgIEFkcmlh
biBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtH
VEtdIFN1cHBvcnQgYnVpbGRpbmcgYWdhaW5zdCB1Q2xpYmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IDA2M2ZkNjA0M2M4OGRhYjQzYThlNzU4ZDYzM2E3ODMy
NDM3ZjIyMzYuLmU5NDRiMjUwNDYyM2Y5MGJjNGIyNWI5ZmE4N2Y2NDlhNWZkZWU5ZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCB2
b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVz
dWx0KQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZ3JhcGgubV9jb2RlQmxvY2s7CiAgICAg
Vk0mIHZtID0gZ3JhcGgubV92bTsKIAotICAgIGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkK
KyAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkgfHwgdm0ubV9wZXJCeXRlY29kZVByb2Zp
bGVyKQogICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVyKG1ha2VVbmlx
dWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKIAogICAgIHsKQEAgLTE2Nyw3OSArMTY3LDc0
IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9p
bnRSZXN1bHQpCiAgICAgfQogICAgIHN0YXRlLmppdENvZGUtPmNvbW1vbi5maW5hbGl6ZUNhdGNo
RW50cnlwb2ludHMoV1RGTW92ZShzdGF0ZS5ncmFwaC5tX2NhdGNoRW50cnlwb2ludHMpKTsKIAot
ICAgIGlmIChCMzo6QWlyOjpEaXNhc3NlbWJsZXIqIGRpc2Fzc2VtYmxlciA9IHN0YXRlLnByb2Mt
PmNvZGUoKS5kaXNhc3NlbWJsZXIoKSkgewotICAgICAgICBQcmludFN0cmVhbSYgb3V0ID0gV1RG
OjpkYXRhRmlsZSgpOwotCi0gICAgICAgIG91dC5wcmludCgiR2VuZXJhdGVkICIsIHN0YXRlLmdy
YXBoLm1fcGxhbi5tb2RlKCksICIgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoc3Rh
dGUuZ3JhcGgubV9jb2RlQmxvY2ssIEpJVFR5cGU6OkZUTEpJVCksICIsIGluc3RydWN0aW9ucyBz
aXplID0gIiwgc3RhdGUuZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uc1NpemUoKSwgIjpc
biIpOwotCi0gICAgICAgIExpbmtCdWZmZXImIGxpbmtCdWZmZXIgPSAqc3RhdGUuZmluYWxpemVy
LT5iM0NvZGVMaW5rQnVmZmVyOwotICAgICAgICBCMzo6VmFsdWUqIGN1cnJlbnRCM1ZhbHVlID0g
bnVsbHB0cjsKLSAgICAgICAgTm9kZSogY3VycmVudERGR05vZGUgPSBudWxscHRyOwotCi0gICAg
ICAgIEhhc2hTZXQ8QjM6OlZhbHVlKj4gcHJpbnRlZFZhbHVlczsKLSAgICAgICAgSGFzaFNldDxO
b2RlKj4gcHJpbnRlZE5vZGVzOwotICAgICAgICBjb25zdCBjaGFyKiBkZmdQcmVmaXggPSAiREZH
ICIgIiAgICAiOwotICAgICAgICBjb25zdCBjaGFyKiBiM1ByZWZpeCAgPSAiYjMgICIgIiAgICAg
ICAgICAiOwotICAgICAgICBjb25zdCBjaGFyKiBhaXJQcmVmaXggPSAiQWlyICIgIiAgICAgICAg
ICAgICAgIjsKLSAgICAgICAgY29uc3QgY2hhciogYXNtUHJlZml4ID0gImFzbSAiICIgICAgICAg
ICAgICAgICAgIjsKLQotICAgICAgICBhdXRvIHByaW50REZHTm9kZSA9IFsmXSAoTm9kZSogbm9k
ZSkgewotICAgICAgICAgICAgaWYgKGN1cnJlbnRERkdOb2RlID09IG5vZGUpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBjdXJyZW50REZHTm9kZSA9IG5vZGU7Ci0gICAg
ICAgICAgICBpZiAoIWN1cnJlbnRERkdOb2RlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgSGFzaFNldDxOb2RlKj4gbG9jYWxQcmludGVkTm9kZXM7Ci0gICAgICAgICAg
ICBXVEY6OkZ1bmN0aW9uPHZvaWQoTm9kZSopPiBwcmludE5vZGVSZWN1cnNpdmUgPSBbJl0gKE5v
ZGUqIG5vZGUpIHsKLSAgICAgICAgICAgICAgICBpZiAocHJpbnRlZE5vZGVzLmNvbnRhaW5zKG5v
ZGUpIHx8IGxvY2FsUHJpbnRlZE5vZGVzLmNvbnRhaW5zKG5vZGUpKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBsb2NhbFByaW50ZWROb2Rlcy5hZGQobm9k
ZSk7Ci0gICAgICAgICAgICAgICAgZ3JhcGguZG9Ub0NoaWxkcmVuKG5vZGUsIFsmXSAoRWRnZSBj
aGlsZCkgewotICAgICAgICAgICAgICAgICAgICBwcmludE5vZGVSZWN1cnNpdmUoY2hpbGQubm9k
ZSgpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBncmFwaC5kdW1wKG91
dCwgZGZnUHJlZml4LCBub2RlKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBwcmludE5v
ZGVSZWN1cnNpdmUobm9kZSk7Ci0gICAgICAgICAgICBwcmludGVkTm9kZXMuYWRkKG5vZGUpOwot
ICAgICAgICB9OwotCi0gICAgICAgIGF1dG8gcHJpbnRCM1ZhbHVlID0gWyZdIChCMzo6VmFsdWUq
IHZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAoY3VycmVudEIzVmFsdWUgPT0gdmFsdWUpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBjdXJyZW50QjNWYWx1ZSA9IHZhbHVl
OwotICAgICAgICAgICAgaWYgKCFjdXJyZW50QjNWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgIHByaW50REZHTm9kZShiaXR3aXNlX2Nhc3Q8Tm9kZSo+KHZhbHVl
LT5vcmlnaW4oKS5kYXRhKCkpKTsKLQotICAgICAgICAgICAgSGFzaFNldDxCMzo6VmFsdWUqPiBs
b2NhbFByaW50ZWRWYWx1ZXM7Ci0gICAgICAgICAgICBhdXRvIHByaW50VmFsdWVSZWN1cnNpdmUg
PSByZWN1cnNhYmxlTGFtYmRhKFsmXSAoYXV0byBzZWxmLCBCMzo6VmFsdWUqIHZhbHVlKSAtPiB2
b2lkIHsKLSAgICAgICAgICAgICAgICBpZiAocHJpbnRlZFZhbHVlcy5jb250YWlucyh2YWx1ZSkg
fHwgbG9jYWxQcmludGVkVmFsdWVzLmNvbnRhaW5zKHZhbHVlKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgbG9jYWxQcmludGVkVmFsdWVzLmFkZCh2YWx1
ZSk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlLT5udW1D
aGlsZHJlbigpOyBpKyspCi0gICAgICAgICAgICAgICAgICAgIHNlbGYodmFsdWUtPmNoaWxkKGkp
KTsKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoYjNQcmVmaXgpOwotICAgICAgICAgICAgICAg
IHZhbHVlLT5kZWVwRHVtcChzdGF0ZS5wcm9jLmdldCgpLCBvdXQpOwotICAgICAgICAgICAgICAg
IG91dC5wcmludCgiXG4iKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBwcmludFZh
bHVlUmVjdXJzaXZlKGN1cnJlbnRCM1ZhbHVlKTsKLSAgICAgICAgICAgIHByaW50ZWRWYWx1ZXMu
YWRkKHZhbHVlKTsKLSAgICAgICAgfTsKLQotICAgICAgICBhdXRvIGZvckVhY2hJbnN0ID0gc2Nv
cGVkTGFtYmRhPHZvaWQoQjM6OkFpcjo6SW5zdCYpPihbJl0gKEIzOjpBaXI6Okluc3QmIGluc3Qp
IHsKLSAgICAgICAgICAgIHByaW50QjNWYWx1ZShpbnN0Lm9yaWdpbik7Ci0gICAgICAgIH0pOwor
ICAgIGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKKyAgICAgICAgc3RhdGUuZHVtcERpc2Fz
c2VtYmx5KFdURjo6ZGF0YUZpbGUoKSk7CisKKyAgICBQcm9maWxlcjo6Q29tcGlsYXRpb24qIGNv
bXBpbGF0aW9uID0gZ3JhcGguY29tcGlsYXRpb24oKTsKKyAgICBpZiAoVU5MSUtFTFkoY29tcGls
YXRpb24pKSB7CisgICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbigKKyAgICAgICAg
ICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpLAorICAgICAgICAgICAgdG9DU3RyaW5nKCJHZW5l
cmF0ZWQgRlRMIERGRyBJUiBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2NrLCBK
SVRUeXBlOjpGVExKSVQpLCAiLCBpbnN0cnVjdGlvbnMgc2l6ZSA9ICIsIGdyYXBoLm1fY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnNTaXplKCksICI6XG4iKSk7CisKKyAgICAgICAgZ3JhcGguZW5zdXJl
U1NBRG9taW5hdG9ycygpOworICAgICAgICBncmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsK
KworICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CisKKyAgICAgICAgRHVtcENv
bnRleHQgZHVtcENvbnRleHQ7CisgICAgICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKKyAgICAg
ICAgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyOworICAgICAgICBmb3IgKHNpemVfdCBibG9ja0lu
ZGV4ID0gMDsgYmxvY2tJbmRleCA8IGdyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsK
KyAgICAgICAgICAgIERGRzo6QmFzaWNCbG9jayogYmxvY2sgPSBncmFwaC5ibG9jayhibG9ja0lu
ZGV4KTsKKyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGdyYXBoLmR1bXBCbG9ja0hlYWRlcihvdXQsIHByZWZpeCwgYmxvY2ss
IEdyYXBoOjpEdW1wTGl2ZVBoaXNPbmx5LCAmZHVtcENvbnRleHQpOworICAgICAgICAgICAgY29t
cGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpLCBvdXQudG9D
U3RyaW5nKCkpOworICAgICAgICAgICAgb3V0LnJlc2V0KCk7CisKKyAgICAgICAgICAgIGZvciAo
c2l6ZV90IG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUlu
ZGV4KSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgp
OworCisgICAgICAgICAgICAgICAgUHJvZmlsZXI6Ok9yaWdpblN0YWNrIHN0YWNrOwogCi0gICAg
ICAgIGRpc2Fzc2VtYmxlci0+ZHVtcChzdGF0ZS5wcm9jLT5jb2RlKCksIG91dCwgbGlua0J1ZmZl
ciwgYWlyUHJlZml4LCBhc21QcmVmaXgsIGZvckVhY2hJbnN0KTsKLSAgICAgICAgbGlua0J1ZmZl
ci5kaWRBbHJlYWR5RGlzYXNzZW1ibGUoKTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3Jp
Z2luLnNlbWFudGljLmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhY2sgPSBQcm9m
aWxlcjo6T3JpZ2luU3RhY2soCisgICAgICAgICAgICAgICAgICAgICAgICAqdm0ubV9wZXJCeXRl
Y29kZVByb2ZpbGVyLCBjb2RlQmxvY2ssIG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGdyYXBoLmR1bXBDb2RlT3JpZ2luKG91
dCwgcHJlZml4LCBsYXN0Tm9kZSwgbm9kZSwgJmR1bXBDb250ZXh0KSkgeworICAgICAgICAgICAg
ICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oc3RhY2ssIG91dC50b0NTdHJpbmco
KSk7CisgICAgICAgICAgICAgICAgICAgIG91dC5yZXNldCgpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIGdyYXBoLmR1bXAob3V0LCBwcmVmaXgsIG5vZGUsICZkdW1wQ29u
dGV4dCk7CisgICAgICAgICAgICAgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKHN0YWNr
LCBvdXQudG9DU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG91dC5yZXNldCgpOworCisgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pc1NldCgpKQorICAgICAgICAg
ICAgICAgICAgICBsYXN0Tm9kZSA9IG5vZGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBkdW1wQ29udGV4dC5kdW1wKG91dCwgcHJlZml4KTsKKyAgICAgICAgY29tcGlsYXRp
b24tPmFkZERlc2NyaXB0aW9uKFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpLCBvdXQudG9DU3RyaW5n
KCkpOworICAgICAgICBvdXQucmVzZXQoKTsKKworICAgICAgICBvdXQucHJpbnQoIlxuXG5cbiAg
ICBGVEwgQjMvQWlyIERpc2Fzc2VtYmx5OlxuIik7CisgICAgICAgIGNvbXBpbGF0aW9uLT5hZGRE
ZXNjcmlwdGlvbihQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwgb3V0LnRvQ1N0cmluZygpKTsKKyAg
ICAgICAgb3V0LnJlc2V0KCk7CisKKyAgICAgICAgc3RhdGUuZHVtcERpc2Fzc2VtYmx5KG91dCwg
c2NvcGVkTGFtYmRhPHZvaWQoTm9kZSopPihbJl0gKE5vZGUqKSB7CisgICAgICAgICAgICBjb21w
aWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oeyB9LCBvdXQudG9DU3RyaW5nKCkpOworICAgICAgICAg
ICAgb3V0LnJlc2V0KCk7CisgICAgICAgIH0pKTsKKyAgICAgICAgY29tcGlsYXRpb24tPmFkZERl
c2NyaXB0aW9uKHsgfSwgb3V0LnRvQ1N0cmluZygpKTsKKyAgICAgICAgb3V0LnJlc2V0KCk7CisK
KyAgICAgICAgc3RhdGUuaml0Q29kZS0+Y29tbW9uLmNvbXBpbGF0aW9uID0gY29tcGlsYXRpb247
CiAgICAgfQorCiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IDFlYjFkOGFhOWQ2N2ZhZDg1YmI4NTI1OGQzZWVlYmY5
YzkwMGQzYzguLjA2NGE0MDFmOTBmMTI3NTczZWJmMWFjZTBiZWRlYzYyNzMxYmE2YmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtNjksNjUgKzY5LDYgQEAgdm9pZCBs
aW5rKFN0YXRlJiBzdGF0ZSkKICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnJhbWUgPSBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoCiAgICAgICAgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIsIC1zdGF0aWNfY2FzdDxpbnQzMl90PihBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3Rh
Y2tQb2ludGVyRGVsdGEoKSkpOwogICAgIAotICAgIFByb2ZpbGVyOjpDb21waWxhdGlvbiogY29t
cGlsYXRpb24gPSBncmFwaC5jb21waWxhdGlvbigpOwotICAgIGlmIChVTkxJS0VMWShjb21waWxh
dGlvbikpIHsKLSAgICAgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKAotICAgICAgICAg
ICAgUHJvZmlsZXI6Ok9yaWdpblN0YWNrKCksCi0gICAgICAgICAgICB0b0NTdHJpbmcoIkdlbmVy
YXRlZCBGVEwgSklUIGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKGNvZGVCbG9jaywg
SklUVHlwZTo6RlRMSklUKSwgIiwgaW5zdHJ1Y3Rpb25zIHNpemUgPSAiLCBncmFwaC5tX2NvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zU2l6ZSgpLCAiOlxuIikpOwotICAgICAgICAKLSAgICAgICAgZ3Jh
cGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwotICAgICAgICBncmFwaC5lbnN1cmVTU0FOYXR1cmFs
TG9vcHMoKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIgICAgIjsK
LSAgICAgICAgCi0gICAgICAgIER1bXBDb250ZXh0IGR1bXBDb250ZXh0OwotICAgICAgICBTdHJp
bmdQcmludFN0cmVhbSBvdXQ7Ci0gICAgICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKLSAg
ICAgICAgZm9yIChzaXplX3QgYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBncmFwaC5udW1C
bG9ja3MoKTsgKytibG9ja0luZGV4KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9
IGdyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZ3JhcGguZHVt
cEJsb2NrSGVhZGVyKG91dCwgcHJlZml4LCBibG9jaywgR3JhcGg6OkR1bXBMaXZlUGhpc09ubHks
ICZkdW1wQ29udGV4dCk7Ci0gICAgICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24o
UHJvZmlsZXI6Ok9yaWdpblN0YWNrKCksIG91dC50b0NTdHJpbmcoKSk7Ci0gICAgICAgICAgICBv
dXQucmVzZXQoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yIChzaXplX3Qgbm9kZUlu
ZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKLSAgICAg
ICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgUHJvZmlsZXI6Ok9yaWdpblN0YWNrIHN0YWNrOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMu
aXNTZXQoKSkgewotICAgICAgICAgICAgICAgICAgICBzdGFjayA9IFByb2ZpbGVyOjpPcmlnaW5T
dGFjaygKLSAgICAgICAgICAgICAgICAgICAgICAgICp2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIs
IGNvZGVCbG9jaywgbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGdyYXBoLmR1bXBDb2RlT3JpZ2lu
KG91dCwgcHJlZml4LCBsYXN0Tm9kZSwgbm9kZSwgJmR1bXBDb250ZXh0KSkgewotICAgICAgICAg
ICAgICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oc3RhY2ssIG91dC50b0NTdHJp
bmcoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG91dC5yZXNldCgpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBncmFwaC5kdW1wKG91dCwgcHJl
Zml4LCBub2RlLCAmZHVtcENvbnRleHQpOwotICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uLT5h
ZGREZXNjcmlwdGlvbihzdGFjaywgb3V0LnRvQ1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICBv
dXQucmVzZXQoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+
b3JpZ2luLnNlbWFudGljLmlzU2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGxhc3ROb2RlID0g
bm9kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZHVtcENv
bnRleHQuZHVtcChvdXQsIHByZWZpeCk7Ci0gICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlw
dGlvbihQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwgb3V0LnRvQ1N0cmluZygpKTsKLSAgICAgICAg
b3V0LnJlc2V0KCk7Ci0KLSAgICAgICAgb3V0LnByaW50KCIgICAgRGlzYXNzZW1ibHk6XG4iKTsK
LSAgICAgICAgb3V0LnByaW50KCIgICAgICAgIDxub3QgaW1wbGVtZW50ZWQgeWV0PlxuIik7Ci0g
ICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQcm9maWxlcjo6T3JpZ2luU3RhY2so
KSwgb3V0LnRvQ1N0cmluZygpKTsKLSAgICAgICAgb3V0LnJlc2V0KCk7Ci0gICAgICAgIAotICAg
ICAgICBzdGF0ZS5qaXRDb2RlLT5jb21tb24uY29tcGlsYXRpb24gPSBjb21waWxhdGlvbjsKLSAg
ICB9Ci0KICAgICBzd2l0Y2ggKGdyYXBoLm1fcGxhbi5tb2RlKCkpIHsKICAgICBjYXNlIEpJVENv
bXBpbGF0aW9uTW9kZTo6RlRMOiB7CiAgICAgICAgIGJvb2wgcmVxdWlyZXNBcml0eUZpeHVwID0g
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgIT0gMTsKQEAgLTIzMyw3ICsxNzQsNiBAQCB2b2lk
IGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQXJp
dHlDaGVja0VudHJ5cG9pbnQoYXJpdHlDaGVja0NvZGVSZWYpOwogICAgIH0KIAotICAgIAogICAg
IHN0YXRlLmZpbmFsaXplci0+ZW50cnlwb2ludExpbmtCdWZmZXIgPSBXVEZNb3ZlKGxpbmtCdWZm
ZXIpOwogICAgIHN0YXRlLmZpbmFsaXplci0+ZnVuY3Rpb24gPSBzdGF0ZS5nZW5lcmF0ZWRGdW5j
dGlvbjsKICAgICBzdGF0ZS5maW5hbGl6ZXItPmppdENvZGUgPSBzdGF0ZS5qaXRDb2RlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAppbmRleCAwMWJkZWVjOWZkMzc5NmY0ZTQ3
ZGJhZTcxMjBkOWU2ZGFkZTZkYjA1Li5lYTQ5YjMzYWE5NDI1NjM1NjkzOGI0YTkwZDc1MmZiNDA4
YWE4MDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcApAQCAtMjgsMTEg
KzI4LDE2IEBACiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAorI2luY2x1ZGUgIkFpckNvZGUuaCIK
KyNpbmNsdWRlICJBaXJEaXNhc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklU
VHlwZS5oIgogI2luY2x1ZGUgIkZUTEZvck9TUkVudHJ5SklUQ29kZS5oIgogI2luY2x1ZGUgIkZU
TEpJVENvZGUuaCIKICNpbmNsdWRlICJGVExKSVRGaW5hbGl6ZXIuaCIKICNpbmNsdWRlICJGVExQ
YXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmgiCiAKKyNpbmNsdWRlIDx3dGYvUmVjdXJzYWJsZUxh
bWJkYS5oPgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBCMzsKQEAgLTcxLDYgKzc2LDgzIEBAIFN0YXRlOjpTdGF0ZShHcmFwaCYgZ3JhcGgpCiAg
ICAgcHJvYy0+c2V0RnJvbnRlbmREYXRhKCZncmFwaCk7CiB9CiAKK3ZvaWQgU3RhdGU6OmR1bXBE
aXNhc3NlbWJseShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChERkc6
Ok5vZGUqKT4mIHBlckRGR05vZGVDYWxsYmFjaykKK3sKKyAgICBCMzo6QWlyOjpEaXNhc3NlbWJs
ZXIqIGRpc2Fzc2VtYmxlciA9IHByb2MtPmNvZGUoKS5kaXNhc3NlbWJsZXIoKTsKKworICAgIG91
dC5wcmludCgiR2VuZXJhdGVkICIsIGdyYXBoLm1fcGxhbi5tb2RlKCksICIgY29kZSBmb3IgIiwg
Q29kZUJsb2NrV2l0aEpJVFR5cGUoZ3JhcGgubV9jb2RlQmxvY2ssIEpJVFR5cGU6OkZUTEpJVCks
ICIsIGluc3RydWN0aW9ucyBzaXplID0gIiwgZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9u
c1NpemUoKSwgIjpcbiIpOworCisgICAgTGlua0J1ZmZlciYgbGlua0J1ZmZlciA9ICpmaW5hbGl6
ZXItPmIzQ29kZUxpbmtCdWZmZXI7CisgICAgQjM6OlZhbHVlKiBjdXJyZW50QjNWYWx1ZSA9IG51
bGxwdHI7CisgICAgTm9kZSogY3VycmVudERGR05vZGUgPSBudWxscHRyOworCisgICAgSGFzaFNl
dDxCMzo6VmFsdWUqPiBwcmludGVkVmFsdWVzOworICAgIEhhc2hTZXQ8Tm9kZSo+IHByaW50ZWRO
b2RlczsKKyAgICBjb25zdCBjaGFyKiBkZmdQcmVmaXggPSAiREZHICIgIiAgICAiOworICAgIGNv
bnN0IGNoYXIqIGIzUHJlZml4ICA9ICJiMyAgIiAiICAgICAgICAgICI7CisgICAgY29uc3QgY2hh
ciogYWlyUHJlZml4ID0gIkFpciAiICIgICAgICAgICAgICAgICI7CisgICAgY29uc3QgY2hhciog
YXNtUHJlZml4ID0gImFzbSAiICIgICAgICAgICAgICAgICAgIjsKKworICAgIGF1dG8gcHJpbnRE
RkdOb2RlID0gWyZdIChOb2RlKiBub2RlKSB7CisgICAgICAgIGlmIChjdXJyZW50REZHTm9kZSA9
PSBub2RlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGN1cnJlbnRERkdOb2RlID0g
bm9kZTsKKyAgICAgICAgaWYgKCFjdXJyZW50REZHTm9kZSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBwZXJERkdOb2RlQ2FsbGJhY2sobm9kZSk7CisKKyAgICAgICAgSGFzaFNldDxO
b2RlKj4gbG9jYWxQcmludGVkTm9kZXM7CisgICAgICAgIFdURjo6RnVuY3Rpb248dm9pZChOb2Rl
Kik+IHByaW50Tm9kZVJlY3Vyc2l2ZSA9IFsmXSAoTm9kZSogbm9kZSkgeworICAgICAgICAgICAg
aWYgKHByaW50ZWROb2Rlcy5jb250YWlucyhub2RlKSB8fCBsb2NhbFByaW50ZWROb2Rlcy5jb250
YWlucyhub2RlKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGxvY2Fs
UHJpbnRlZE5vZGVzLmFkZChub2RlKTsKKyAgICAgICAgICAgIGdyYXBoLmRvVG9DaGlsZHJlbihu
b2RlLCBbJl0gKEVkZ2UgY2hpbGQpIHsKKyAgICAgICAgICAgICAgICBwcmludE5vZGVSZWN1cnNp
dmUoY2hpbGQubm9kZSgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZ3JhcGguZHVt
cChvdXQsIGRmZ1ByZWZpeCwgbm9kZSk7CisgICAgICAgIH07CisgICAgICAgIHByaW50Tm9kZVJl
Y3Vyc2l2ZShub2RlKTsKKyAgICAgICAgcHJpbnRlZE5vZGVzLmFkZChub2RlKTsKKyAgICB9Owor
CisgICAgYXV0byBwcmludEIzVmFsdWUgPSBbJl0gKEIzOjpWYWx1ZSogdmFsdWUpIHsKKyAgICAg
ICAgaWYgKGN1cnJlbnRCM1ZhbHVlID09IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGN1cnJlbnRCM1ZhbHVlID0gdmFsdWU7CisgICAgICAgIGlmICghY3VycmVudEIzVmFs
dWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcHJpbnRERkdOb2RlKGJpdHdpc2Vf
Y2FzdDxOb2RlKj4odmFsdWUtPm9yaWdpbigpLmRhdGEoKSkpOworCisgICAgICAgIEhhc2hTZXQ8
QjM6OlZhbHVlKj4gbG9jYWxQcmludGVkVmFsdWVzOworICAgICAgICBhdXRvIHByaW50VmFsdWVS
ZWN1cnNpdmUgPSByZWN1cnNhYmxlTGFtYmRhKFsmXSAoYXV0byBzZWxmLCBCMzo6VmFsdWUqIHZh
bHVlKSAtPiB2b2lkIHsKKyAgICAgICAgICAgIGlmIChwcmludGVkVmFsdWVzLmNvbnRhaW5zKHZh
bHVlKSB8fCBsb2NhbFByaW50ZWRWYWx1ZXMuY29udGFpbnModmFsdWUpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgbG9jYWxQcmludGVkVmFsdWVzLmFkZCh2YWx1ZSk7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWUtPm51bUNoaWxkcmVu
KCk7IGkrKykKKyAgICAgICAgICAgICAgICBzZWxmKHZhbHVlLT5jaGlsZChpKSk7CisgICAgICAg
ICAgICBvdXQucHJpbnQoYjNQcmVmaXgpOworICAgICAgICAgICAgdmFsdWUtPmRlZXBEdW1wKHBy
b2MuZ2V0KCksIG91dCk7CisgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgICAgIH0p
OworCisgICAgICAgIHByaW50VmFsdWVSZWN1cnNpdmUoY3VycmVudEIzVmFsdWUpOworICAgICAg
ICBwcmludGVkVmFsdWVzLmFkZCh2YWx1ZSk7CisgICAgfTsKKworICAgIGF1dG8gZm9yRWFjaElu
c3QgPSBzY29wZWRMYW1iZGE8dm9pZChCMzo6QWlyOjpJbnN0Jik+KFsmXSAoQjM6OkFpcjo6SW5z
dCYgaW5zdCkgeworICAgICAgICBwcmludEIzVmFsdWUoaW5zdC5vcmlnaW4pOworICAgIH0pOwor
CisgICAgZGlzYXNzZW1ibGVyLT5kdW1wKHByb2MtPmNvZGUoKSwgb3V0LCBsaW5rQnVmZmVyLCBh
aXJQcmVmaXgsIGFzbVByZWZpeCwgZm9yRWFjaEluc3QpOworICAgIGxpbmtCdWZmZXIuZGlkQWxy
ZWFkeURpc2Fzc2VtYmxlKCk7Cit9CisKIFN0YXRlOjp+U3RhdGUoKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTdGF0ZS5oCmluZGV4IGEzZWZlYmYxZGE3Nzg4ZmYzMDNlNGY2ODRmNzg3
OTVhMWRhY2NjNWUuLjNkMmNlMTE5NjBlOTUxYzY5MjA1ZDlhODU0Y2EzYWU3YWFhNzAyNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgKQEAgLTY3LDYgKzY3LDggQEAgcHVibGlj
OgogCiAgICAgVk0mIHZtKCkgeyByZXR1cm4gZ3JhcGgubV92bTsgfQogCisgICAgdm9pZCBkdW1w
RGlzYXNzZW1ibHkoUHJpbnRTdHJlYW0mLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChERkc6Ok5v
ZGUqKT4mIHBlckRGR05vZGVDYWxsYmFjayA9IHNjb3BlZExhbWJkYTx2b2lkKERGRzo6Tm9kZSop
PihbXSAoREZHOjpOb2RlKikgeyB9KSk7CisKICAgICAvLyBOb25lIG9mIHRoZXNlIHRoaW5ncyBp
cyBvd25lZCBieSBTdGF0ZS4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mCiAgICAgLy8gRlRM
IHBoYXNlcyB0byBwcm9wZXJseSBtYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZiB0aGUgbW9kdWxlIGFu
ZCBmdW5jdGlvbi4KICAgICBERkc6OkdyYXBoJiBncmFwaDsK
</data>
<flag name="review"
          id="455288"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>