<?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>185708</bug_id>
          
          <creation_ts>2018-05-16 18:18:52 -0700</creation_ts>
          <short_desc>Baseline op_jtrue emits an insane amount of code</short_desc>
          <delta_ts>2018-06-02 16:03:03 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1424565</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-16 18:18:52 -0700</bug_when>
    <thetext>This is too much:

    [  74] jtrue             loc11, 21(-&gt;95)
           0x7d2769f9871: mov -0x60(%rbp), %rax
           0x7d2769f9875: mov %rax, %rsi
           0x7d2769f9878: xor $0x6, %rsi
           0x7d2769f987c: test $0xfffffffffffffffe, %rsi
           0x7d2769f9883: jnz 0x7d2769f9899
           0x7d2769f9889: cmp $0x7, %eax
           0x7d2769f988c: setz %sil
           0x7d2769f9890: movzx %sil, %esi
           0x7d2769f9894: jmp 0x7d2769f994a
           0x7d2769f9899: test %rax, %r14
           0x7d2769f989c: jz 0x7d2769f98e1
           0x7d2769f98a2: cmp %r14, %rax
           0x7d2769f98a5: jb 0x7d2769f98ba
           0x7d2769f98ab: test %eax, %eax
           0x7d2769f98ad: setnz %sil
           0x7d2769f98b1: movzx %sil, %esi
           0x7d2769f98b5: jmp 0x7d2769f994a
           0x7d2769f98ba: lea (%r14,%rax), %rsi
           0x7d2769f98be: movq %rsi, %xmm0
           0x7d2769f98c3: xorps %xmm1, %xmm1
           0x7d2769f98c6: ucomisd %xmm1, %xmm0
           0x7d2769f98ca: jz 0x7d2769f98da
           0x7d2769f98d0: mov $0x1, %esi
           0x7d2769f98d5: jmp 0x7d2769f994a
           0x7d2769f98da: xor %esi, %esi
           0x7d2769f98dc: jmp 0x7d2769f994a
           0x7d2769f98e1: test %rax, %r15
           0x7d2769f98e4: jnz 0x7d2769f9948
           0x7d2769f98ea: cmp $0x1, 0x5(%rax)
           0x7d2769f98ee: jnz 0x7d2769f9906
           0x7d2769f98f4: mov 0x8(%rax), %esi
           0x7d2769f98f7: test %esi, %esi
           0x7d2769f98f9: setnz %sil
           0x7d2769f98fd: movzx %sil, %esi
           0x7d2769f9901: jmp 0x7d2769f994a
           0x7d2769f9906: test $0x1, 0x6(%rax)
           0x7d2769f990a: jz 0x7d2769f993e
           0x7d2769f9910: mov (%rax), %esi
           0x7d2769f9912: mov $0x10c5000e8, %rdx
           0x7d2769f991c: mov (%rdx), %rdx
           0x7d2769f991f: mov (%rdx,%rsi,8), %rsi
           0x7d2769f9923: mov $0x10c9dc000, %rdx
           0x7d2769f992d: cmp %rdx, 0x18(%rsi)
           0x7d2769f9931: jnz 0x7d2769f993e
           0x7d2769f9937: xor %esi, %esi
           0x7d2769f9939: jmp 0x7d2769f994a
           0x7d2769f993e: mov $0x1, %esi
           0x7d2769f9943: jmp 0x7d2769f994a
           0x7d2769f9948: xor %esi, %esi
           0x7d2769f994a: test %esi, %esi
           0x7d2769f994c: jnz 0x7d2769f99e6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429194</commentid>
    <comment_count>1</comment_count>
      <attachid>341752</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-01 05:33:02 -0700</bug_when>
    <thetext>Created attachment 341752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429195</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-01 05:35:16 -0700</bug_when>
    <thetext>Attachment 341752 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/AssemblyHelpers.h:1761:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429197</commentid>
    <comment_count>3</comment_count>
      <attachid>341752</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-01 05:39:02 -0700</bug_when>
    <thetext>Comment on attachment 341752
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:104
&gt; +        [  12] jtrue             arg1, 6(-&gt;18)
&gt; +              0x7f6c8710156c: mov 0x30(%rbp), %rax
&gt; +              0x7f6c87101570: test %rax, %r15
&gt; +              0x7f6c87101573: jnz 0x7f6c871015c8
&gt; +              0x7f6c87101579: cmp $0x1, 0x5(%rax)
&gt; +              0x7f6c8710157d: jnz 0x7f6c87101592
&gt; +              0x7f6c87101583: cmp $0x0, 0x8(%rax)
&gt; +              0x7f6c87101587: jnz 0x7f6c87101623
&gt; +              0x7f6c8710158d: jmp 0x7f6c87101615
&gt; +              0x7f6c87101592: test $0x1, 0x6(%rax)
&gt; +              0x7f6c87101596: jz 0x7f6c87101623
&gt; +              0x7f6c8710159c: mov (%rax), %esi
&gt; +              0x7f6c8710159e: mov $0x7f6c86f000e0, %rdx
&gt; +              0x7f6c871015a8: mov (%rdx), %rdx
&gt; +              0x7f6c871015ab: mov (%rdx,%rsi,8), %rsi
&gt; +              0x7f6c871015af: mov $0x7f6c867e0000, %rdx
&gt; +              0x7f6c871015b9: cmp %rdx, 0x18(%rsi)
&gt; +              0x7f6c871015bd: jnz 0x7f6c87101623
&gt; +              0x7f6c871015c3: jmp 0x7f6c87101615
&gt; +              0x7f6c871015c8: cmp %r14, %rax
&gt; +              0x7f6c871015cb: jb 0x7f6c871015de
&gt; +              0x7f6c871015d1: test %eax, %eax
&gt; +              0x7f6c871015d3: jnz 0x7f6c87101623
&gt; +              0x7f6c871015d9: jmp 0x7f6c87101615
&gt; +              0x7f6c871015de: test %rax, %r14
&gt; +              0x7f6c871015e1: jz 0x7f6c87101602
&gt; +              0x7f6c871015e7: lea (%r14,%rax), %rsi
&gt; +              0x7f6c871015eb: movq %rsi, %xmm0
&gt; +              0x7f6c871015f0: xorps %xmm1, %xmm1
&gt; +              0x7f6c871015f3: ucomisd %xmm1, %xmm0
&gt; +              0x7f6c871015f7: jz 0x7f6c87101615
&gt; +              0x7f6c871015fd: jmp 0x7f6c87101623
&gt; +              0x7f6c87101602: mov $0x7, %r11
&gt; +              0x7f6c8710160c: cmp %r11, %rax
&gt; +              0x7f6c8710160f: jz 0x7f6c87101623

We can reduce this further by,

1. Extracting this as a stub routine and call it from baseline,
2. Split it into fast path / slow path
3. IC

But I think this is a good first patch towards reducing this size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429593</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-02 14:13:52 -0700</bug_when>
    <thetext>Committed r232444: &lt;https://trac.webkit.org/changeset/232444&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429594</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-02 14:21:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/40750479&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341752</attachid>
            <date>2018-06-01 05:33:02 -0700</date>
            <delta_ts>2018-06-02 14:12:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185708-20180601213301.patch</filename>
            <type>text/plain</type>
            <size>28069</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjZjMzFlMDY0M2UyNGVhOTRjYTAwNWUzYzc3ZTlkNjJmMTdhY2VmLi45MjFjNmI2ZDZhZWI5MWRm
OWI3NTQ2NmYyYWU1ZDgwNzYwNDRiZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjggQEAKKzIwMTgtMDYtMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQmFzZWxpbmUgb3BfanRydWUgZW1pdHMgYW4gaW5zYW5lIGFtb3Vu
dCBvZiBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODU3MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBvcF9qdHJ1ZSAvIG9wX2pmYWxzZSBibG9hdHMgbWFzc2l2ZSBhbW91bnQgb2YgY29kZS4gVGhp
cyBwYXRjaCBhdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNpemUgb2YgdGhpcyBjb2RlIGJ5LAorCisg
ICAgICAgIDEuIG9wX2p0cnVlIC8gb3BfamZhbHNlIGltbWVkaWF0ZWx5IGp1bXBzIGlmIHRoZSBj
b25kaXRpb24gbWV0LiBXZSBhZGQgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZntUcnV0aHksRmFs
c2V5fQorICAgICAgICAgICB0byBqdW1wIGRpcmVjdGx5LiBUaGlzIHRpZ2h0ZW5zIHRoZSBjb2Rl
LgorCisgICAgICAgIDIuIEFsaWduIG91ciBlbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuIGltcGxl
bWVudGF0aW9uIHRvIEZUTCdzIGJvb2xpZnkgZnVuY3Rpb24uIEl0IGVtaXRzIGxlc3MgY29kZS4K
KworICAgICAgICBUaGlzIHJlZHVjZXMgdGhlIGNvZGUgc2l6ZSBvZiBvcF9qdHJ1ZSBpbiB4NjQg
ZnJvbSAyMjAgYnl0ZXMgdG8gMTY0IGJ5dGVzLgorCisgICAgICAgIFsgIDEyXSBqdHJ1ZSAgICAg
ICAgICAgICBhcmcxLCA2KC0+MTgpCisgICAgICAgICAgICAgIDB4N2YyMzMxNzAxNjJjOiBtb3Yg
MHgzMCglcmJwKSwgJXJheAorICAgICAgICAgICAgICAweDdmMjMzMTcwMTYzMDogbW92ICVyYXgs
ICVyc2kKKyAgICAgICAgICAgICAgMHg3ZjIzMzE3MDE2MzM6IHhvciAkMHg2LCAlcnNpCisgICAg
ICAgICAgICAgIDB4N2YyMzMxNzAxNjM3OiB0ZXN0ICQweGZmZmZmZmZmZmZmZmZmZmUsICVyc2kK
KyAgICAgICAgICAgICAgMHg3ZjIzMzE3MDE2M2U6IGpueiAweDdmMjMzMTcwMTY1NAorICAgICAg
ICAgICAgICAweDdmMjMzMTcwMTY0NDogY21wICQweDcsICVlYXgKKyAgICAgICAgICAgICAgMHg3
ZjIzMzE3MDE2NDc6IHNldHogJXNpbAorICAgICAgICAgICAgICAweDdmMjMzMTcwMTY0YjogbW92
enggJXNpbCwgJWVzaQorICAgICAgICAgICAgICAweDdmMjMzMTcwMTY0Zjogam1wIDB4N2YyMzMx
NzAxNzA1CisgICAgICAgICAgICAgIDB4N2YyMzMxNzAxNjU0OiB0ZXN0ICVyYXgsICVyMTQKKyAg
ICAgICAgICAgICAgMHg3ZjIzMzE3MDE2NTc6IGp6IDB4N2YyMzMxNzAxNjljCisgICAgICAgICAg
ICAgIDB4N2YyMzMxNzAxNjVkOiBjbXAgJXIxNCwgJXJheAorICAgICAgICAgICAgICAweDdmMjMz
MTcwMTY2MDogamIgMHg3ZjIzMzE3MDE2NzUKKyAgICAgICAgICAgICAgMHg3ZjIzMzE3MDE2NjY6
IHRlc3QgJWVheCwgJWVheAorICAgICAgICAgICAgICAweDdmMjMzMTcwMTY2ODogc2V0bnogJXNp
bAorICAgICAgICAgICAgICAweDdmMjMzMTcwMTY2YzogbW92enggJXNpbCwgJWVzaQorICAgICAg
ICAgICAgICAweDdmMjMzMTcwMTY3MDogam1wIDB4N2YyMzMxNzAxNzA1CisgICAgICAgICAgICAg
IDB4N2YyMzMxNzAxNjc1OiBsZWEgKCVyMTQsJXJheCksICVyc2kKKyAgICAgICAgICAgICAgMHg3
ZjIzMzE3MDE2Nzk6IG1vdnEgJXJzaSwgJXhtbTAKKyAgICAgICAgICAgICAgMHg3ZjIzMzE3MDE2
N2U6IHhvcnBzICV4bW0xLCAleG1tMQorICAgICAgICAgICAgICAweDdmMjMzMTcwMTY4MTogdWNv
bWlzZCAleG1tMSwgJXhtbTAKKyAgICAgICAgICAgICAgMHg3ZjIzMzE3MDE2ODU6IGp6IDB4N2Yy
MzMxNzAxNjk1CisgICAgICAgICAgICAgIDB4N2YyMzMxNzAxNjhiOiBtb3YgJDB4MSwgJWVzaQor
ICAgICAgICAgICAgICAweDdmMjMzMTcwMTY5MDogam1wIDB4N2YyMzMxNzAxNzA1CisgICAgICAg
ICAgICAgIDB4N2YyMzMxNzAxNjk1OiB4b3IgJWVzaSwgJWVzaQorICAgICAgICAgICAgICAweDdm
MjMzMTcwMTY5Nzogam1wIDB4N2YyMzMxNzAxNzA1CisgICAgICAgICAgICAgIDB4N2YyMzMxNzAx
NjljOiB0ZXN0ICVyYXgsICVyMTUKKyAgICAgICAgICAgICAgMHg3ZjIzMzE3MDE2OWY6IGpueiAw
eDdmMjMzMTcwMTcwMworICAgICAgICAgICAgICAweDdmMjMzMTcwMTZhNTogY21wICQweDEsIDB4
NSglcmF4KQorICAgICAgICAgICAgICAweDdmMjMzMTcwMTZhOTogam56IDB4N2YyMzMxNzAxNmMx
CisgICAgICAgICAgICAgIDB4N2YyMzMxNzAxNmFmOiBtb3YgMHg4KCVyYXgpLCAlZXNpCisgICAg
ICAgICAgICAgIDB4N2YyMzMxNzAxNmIyOiB0ZXN0ICVlc2ksICVlc2kKKyAgICAgICAgICAgICAg
MHg3ZjIzMzE3MDE2YjQ6IHNldG56ICVzaWwKKyAgICAgICAgICAgICAgMHg3ZjIzMzE3MDE2Yjg6
IG1vdnp4ICVzaWwsICVlc2kKKyAgICAgICAgICAgICAgMHg3ZjIzMzE3MDE2YmM6IGptcCAweDdm
MjMzMTcwMTcwNQorICAgICAgICAgICAgICAweDdmMjMzMTcwMTZjMTogdGVzdCAkMHgxLCAweDYo
JXJheCkKKyAgICAgICAgICAgICAgMHg3ZjIzMzE3MDE2YzU6IGp6IDB4N2YyMzMxNzAxNmY5Cisg
ICAgICAgICAgICAgIDB4N2YyMzMxNzAxNmNiOiBtb3YgKCVyYXgpLCAlZXNpCisgICAgICAgICAg
ICAgIDB4N2YyMzMxNzAxNmNkOiBtb3YgJDB4N2YyMzMxNTAwMGM4LCAlcmR4CisgICAgICAgICAg
ICAgIDB4N2YyMzMxNzAxNmQ3OiBtb3YgKCVyZHgpLCAlcmR4CisgICAgICAgICAgICAgIDB4N2Yy
MzMxNzAxNmRhOiBtb3YgKCVyZHgsJXJzaSw4KSwgJXJzaQorICAgICAgICAgICAgICAweDdmMjMz
MTcwMTZkZTogbW92ICQweDdmMjMzMGRlMDAwMCwgJXJkeAorICAgICAgICAgICAgICAweDdmMjMz
MTcwMTZlODogY21wICVyZHgsIDB4MTgoJXJzaSkKKyAgICAgICAgICAgICAgMHg3ZjIzMzE3MDE2
ZWM6IGpueiAweDdmMjMzMTcwMTZmOQorICAgICAgICAgICAgICAweDdmMjMzMTcwMTZmMjogeG9y
ICVlc2ksICVlc2kKKyAgICAgICAgICAgICAgMHg3ZjIzMzE3MDE2ZjQ6IGptcCAweDdmMjMzMTcw
MTcwNQorICAgICAgICAgICAgICAweDdmMjMzMTcwMTZmOTogbW92ICQweDEsICVlc2kKKyAgICAg
ICAgICAgICAgMHg3ZjIzMzE3MDE2ZmU6IGptcCAweDdmMjMzMTcwMTcwNQorICAgICAgICAgICAg
ICAweDdmMjMzMTcwMTcwMzogeG9yICVlc2ksICVlc2kKKyAgICAgICAgICAgICAgMHg3ZjIzMzE3
MDE3MDU6IHRlc3QgJWVzaSwgJWVzaQorICAgICAgICAgICAgICAweDdmMjMzMTcwMTcwNzogam56
IDB4N2YyMzMxNzAxNzFiCisKKyAgICAgICAgWyAgMTJdIGp0cnVlICAgICAgICAgICAgIGFyZzEs
IDYoLT4xOCkKKyAgICAgICAgICAgICAgMHg3ZjZjODcxMDE1NmM6IG1vdiAweDMwKCVyYnApLCAl
cmF4CisgICAgICAgICAgICAgIDB4N2Y2Yzg3MTAxNTcwOiB0ZXN0ICVyYXgsICVyMTUKKyAgICAg
ICAgICAgICAgMHg3ZjZjODcxMDE1NzM6IGpueiAweDdmNmM4NzEwMTVjOAorICAgICAgICAgICAg
ICAweDdmNmM4NzEwMTU3OTogY21wICQweDEsIDB4NSglcmF4KQorICAgICAgICAgICAgICAweDdm
NmM4NzEwMTU3ZDogam56IDB4N2Y2Yzg3MTAxNTkyCisgICAgICAgICAgICAgIDB4N2Y2Yzg3MTAx
NTgzOiBjbXAgJDB4MCwgMHg4KCVyYXgpCisgICAgICAgICAgICAgIDB4N2Y2Yzg3MTAxNTg3OiBq
bnogMHg3ZjZjODcxMDE2MjMKKyAgICAgICAgICAgICAgMHg3ZjZjODcxMDE1OGQ6IGptcCAweDdm
NmM4NzEwMTYxNQorICAgICAgICAgICAgICAweDdmNmM4NzEwMTU5MjogdGVzdCAkMHgxLCAweDYo
JXJheCkKKyAgICAgICAgICAgICAgMHg3ZjZjODcxMDE1OTY6IGp6IDB4N2Y2Yzg3MTAxNjIzCisg
ICAgICAgICAgICAgIDB4N2Y2Yzg3MTAxNTljOiBtb3YgKCVyYXgpLCAlZXNpCisgICAgICAgICAg
ICAgIDB4N2Y2Yzg3MTAxNTllOiBtb3YgJDB4N2Y2Yzg2ZjAwMGUwLCAlcmR4CisgICAgICAgICAg
ICAgIDB4N2Y2Yzg3MTAxNWE4OiBtb3YgKCVyZHgpLCAlcmR4CisgICAgICAgICAgICAgIDB4N2Y2
Yzg3MTAxNWFiOiBtb3YgKCVyZHgsJXJzaSw4KSwgJXJzaQorICAgICAgICAgICAgICAweDdmNmM4
NzEwMTVhZjogbW92ICQweDdmNmM4NjdlMDAwMCwgJXJkeAorICAgICAgICAgICAgICAweDdmNmM4
NzEwMTViOTogY21wICVyZHgsIDB4MTgoJXJzaSkKKyAgICAgICAgICAgICAgMHg3ZjZjODcxMDE1
YmQ6IGpueiAweDdmNmM4NzEwMTYyMworICAgICAgICAgICAgICAweDdmNmM4NzEwMTVjMzogam1w
IDB4N2Y2Yzg3MTAxNjE1CisgICAgICAgICAgICAgIDB4N2Y2Yzg3MTAxNWM4OiBjbXAgJXIxNCwg
JXJheAorICAgICAgICAgICAgICAweDdmNmM4NzEwMTVjYjogamIgMHg3ZjZjODcxMDE1ZGUKKyAg
ICAgICAgICAgICAgMHg3ZjZjODcxMDE1ZDE6IHRlc3QgJWVheCwgJWVheAorICAgICAgICAgICAg
ICAweDdmNmM4NzEwMTVkMzogam56IDB4N2Y2Yzg3MTAxNjIzCisgICAgICAgICAgICAgIDB4N2Y2
Yzg3MTAxNWQ5OiBqbXAgMHg3ZjZjODcxMDE2MTUKKyAgICAgICAgICAgICAgMHg3ZjZjODcxMDE1
ZGU6IHRlc3QgJXJheCwgJXIxNAorICAgICAgICAgICAgICAweDdmNmM4NzEwMTVlMToganogMHg3
ZjZjODcxMDE2MDIKKyAgICAgICAgICAgICAgMHg3ZjZjODcxMDE1ZTc6IGxlYSAoJXIxNCwlcmF4
KSwgJXJzaQorICAgICAgICAgICAgICAweDdmNmM4NzEwMTVlYjogbW92cSAlcnNpLCAleG1tMAor
ICAgICAgICAgICAgICAweDdmNmM4NzEwMTVmMDogeG9ycHMgJXhtbTEsICV4bW0xCisgICAgICAg
ICAgICAgIDB4N2Y2Yzg3MTAxNWYzOiB1Y29taXNkICV4bW0xLCAleG1tMAorICAgICAgICAgICAg
ICAweDdmNmM4NzEwMTVmNzoganogMHg3ZjZjODcxMDE2MTUKKyAgICAgICAgICAgICAgMHg3ZjZj
ODcxMDE1ZmQ6IGptcCAweDdmNmM4NzEwMTYyMworICAgICAgICAgICAgICAweDdmNmM4NzEwMTYw
MjogbW92ICQweDcsICVyMTEKKyAgICAgICAgICAgICAgMHg3ZjZjODcxMDE2MGM6IGNtcCAlcjEx
LCAlcmF4CisgICAgICAgICAgICAgIDB4N2Y2Yzg3MTAxNjBmOiBqeiAweDdmNmM4NzEwMTYyMwor
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVt
aXRCcmFuY2gpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4pOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUpOgorICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJ
ZlRydXRoeSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZGYWxzZXkp
OgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpKSVQ6OmFkZEp1bXApOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pmYWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZmFsc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfanRydWUpOgorCiAyMDE4LTA1LTMxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgogCiAgICAgICAgIFtCYXNlbGluZV0gU3RvcmUgY29uc3RhbnQgZGlyZWN0bHkgaW4g
ZW1pdF9vcF9tb3YKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGFjNzNiN2JiNDViNjY5NDU1NDY2MmNhZGE4NDliMGEx
ZDg3ZTQ0ZDkuLjY5NDkxNjFkMjY0NTJkNDU0MTc1OTc4NDkxNDRhZWMxNWJjN2Q3NGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcApAQCAtMTcxMyw4ICsxNzEzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5j
aChOb2RlKiBub2RlKQogCiAgICAgICAgIGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkID0gIW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCk7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBtX2ppdC5lbWl0
Q29udmVydFZhbHVlVG9Cb29sZWFuKCptX2ppdC52bSgpLCB2YWx1ZVJlZ3MsIHJlc3VsdEdQUiwg
dGVtcC5ncHIoKSwgdmFsdWVGUFIuZnByKCksIHRlbXBGUFIuZnByKCksIHNob3VsZENoZWNrTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgYnJhbmNoVGVzdDMy
KEpJVENvbXBpbGVyOjpaZXJvLCByZXN1bHRHUFIsIG5vdFRha2VuKTsKKyAgICAgICAgYXV0byBm
YWxzZXkgPSBtX2ppdC5icmFuY2hJZkZhbHNleSgqbV9qaXQudm0oKSwgdmFsdWVSZWdzLCByZXN1
bHRHUFIsIHRlbXAuZ3ByKCksIHZhbHVlRlBSLmZwcigpLCB0ZW1wRlBSLmZwcigpLCBzaG91bGRD
aGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIGFkZEJy
YW5jaChmYWxzZXksIG5vdFRha2VuKTsKICAgICAgICAganVtcCh0YWtlbiwgRm9yY2VKdW1wKTsK
IAogICAgICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
aW5kZXggZGIxOTM0NzVmNWE0ZDk4ZDY4NjU1OTg5YmY0ZTU5MTg4ODk4MzY5Ny4uNDM1ZWE2Njg3
MTcwY2FkODlkMzRmMGYzYWZkZWJmNDBhMzNkM2M1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xODg4LDkgKzE4ODgsOCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICB2YWx1ZS51c2UoKTsKIAogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
Ci0gICAgICAgICAgICBtX2ppdC5lbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKCptX2ppdC52bSgp
LCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgdmFsdWVGUFIs
IHRlbXBGUFIsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0
KTsKLSAgICAKLSAgICAgICAgICAgIGJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgcmVzdWx0R1BSLCB0YWtlbik7CisgICAgICAgICAgICBhdXRvIHRydXRoeSA9IG1faml0LmJy
YW5jaElmVHJ1dGh5KCptX2ppdC52bSgpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIHJlc3VsdEdQ
Uiwgc2NyYXRjaEdQUiwgdmFsdWVGUFIsIHRlbXBGUFIsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGFkZEJyYW5jaCh0cnV0aHks
IHRha2VuKTsKICAgICAgICAgICAgIGp1bXAobm90VGFrZW4pOwogICAgICAgICB9CiAgICAgICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4
IDZjY2E2NTAxMGZiYmE2NTlkMWE4MWFmYjg0MDZiYzM1YTQyOWI5ODAuLjhjYzg3OGY1NWM2OGMz
MjY2OWRlY2IzZDBjODkwMWQ5M2Q5MWJhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTc1NCw5MiArNzU0LDE2NiBAQCB2b2lkIEFzc2Vt
Ymx5SGVscGVyczo6d2FuZ3NJbnQ2NEhhc2goR1BSUmVnIGlucHV0QW5kUmVzdWx0LCBHUFJSZWcg
c2NyYXRjaCkKIH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEFzc2VtYmx5SGVs
cGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVl
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCwgRlBSUmVnIHZhbHVlQXNGUFIsIEZQUlJl
ZyB0ZW1wRlBSLCBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBuZWdhdGVSZXN1bHQpCit2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkLCBGUFJSZWcgdmFsdWVBc0ZQUiwgRlBSUmVnIHRlbXBGUFIsIGJvb2wgc2hv
dWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBib29sIGludmVydCkKIHsKICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgY29u
dHJvbCBmbG93IHN0cnVjdHVyZToKLSAgICAvLyBpZiAodmFsdWUgaXMgYm9vbGVhbikgewotICAg
IC8vICAgICByZXN1bHQgPSB2YWx1ZSA9PT0gdHJ1ZQotICAgIC8vIH0gZWxzZSBpZiAodmFsdWUg
aXMgaW50ZWdlcikgewotICAgIC8vICAgICByZXN1bHQgPSB2YWx1ZSAhPT0gMAotICAgIC8vIH0g
ZWxzZSBpZiAodmFsdWUgaXMgZG91YmxlKSB7Ci0gICAgLy8gICAgIHJlc3VsdCA9IHZhbHVlICE9
PSAwLjAgJiYgIWlzTmFOKHZhbHVlKTsKLSAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIGNlbGwp
IHsKLSAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZykgewotICAgIC8vICAgICAgICAgIHJl
c3VsdCA9IHZhbHVlLmxlbmd0aCgpICE9PSAwOwotICAgIC8vICAgICB9IGVsc2UgewotICAgIC8v
ICAgICAgICAgIGRvIGNyYXp5IHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMgYXMgdW5kZWZpbmVkCisg
ICAgLy8gaWYgKHZhbHVlIGlzIGNlbGwpIHsKKyAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmlu
ZykKKyAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAorICAgIC8vICAgICBl
bHNlIHsKKyAgICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVyYWRlcy1hcy11
bmRlZmluZWQKKyAgICAvLyAgICAgICAgIHJlc3VsdCA9IHRydWUKICAgICAvLyAgICAgfQorICAg
IC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgaW50MzIpIHsKKyAgICAvLyAgICAgcmVzdWx0ID0gISF1
bmJveEludDMyKHZhbHVlKQorICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVyKSB7Cisg
ICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCiAgICAgLy8gfSBlbHNlIHsK
LSAgICAvLyAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgLy8gICAgIHJlc3VsdCA9IHZhbHVlID09
IGpzVHJ1ZQogICAgIC8vIH0KLSAgICAvLwotICAgIC8vIGlmIChuZWdhdGVSZXN1bHQpCi0gICAg
Ly8gICAgIHJlc3VsdCA9ICFyZXN1bHQ7CiAKICAgICBKdW1wTGlzdCBkb25lOwotICAgIGF1dG8g
bm90Qm9vbGVhbiA9IGJyYW5jaElmTm90Qm9vbGVhbih2YWx1ZSwgcmVzdWx0KTsKLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgIGNvbXBhcmUzMihuZWdhdGVSZXN1bHQgPyBOb3RFcXVhbCA6IEVxdWFs
LCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZEltbTMyKFZhbHVlVHJ1ZSksIHJlc3VsdCk7Ci0jZWxzZQot
ICAgIGNvbXBhcmUzMihuZWdhdGVSZXN1bHQgPyBFcXVhbCA6IE5vdEVxdWFsLCB2YWx1ZS5wYXls
b2FkR1BSKCksIFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0KTsKLSNlbmRpZgorCisgICAgYXV0byBu
b3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHZhbHVlKTsKKyAgICBhdXRvIGlzQ2VsbEJ1dE5vdFN0
cmluZyA9IGJyYW5jaElmTm90U3RyaW5nKHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgbG9hZDMy
KEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSks
IHJlc3VsdCk7CisgICAgY29tcGFyZTMyKGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHJlc3Vs
dCwgVHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CiAK
LSAgICBub3RCb29sZWFuLmxpbmsodGhpcyk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBhdXRv
IGlzTm90TnVtYmVyID0gYnJhbmNoSWZOb3ROdW1iZXIodmFsdWUuZ3ByKCkpOwotI2Vsc2UKLSAg
ICBBU1NFUlQoc2NyYXRjaCAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICBhdXRvIGlzTm90TnVtYmVy
ID0gYnJhbmNoSWZOb3ROdW1iZXIodmFsdWUsIHNjcmF0Y2gpOwotI2VuZGlmCi0gICAgYXV0byBp
c0RvdWJsZSA9IGJyYW5jaElmTm90SW50MzIodmFsdWUpOworICAgIGlzQ2VsbEJ1dE5vdFN0cmlu
Zy5saW5rKHRoaXMpOworICAgIGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQp
IHsKKyAgICAgICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgSnVtcExpc3QgaXNOb3RNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkOworICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuYXBwZW5k
KGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5
cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KSkpOworICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZSh2bSwgdmFsdWUucGF5bG9hZEdQUigpLCBy
ZXN1bHQsIHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCk7CisgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBzY3JhdGNoSWZTaG91bGRDaGVj
a01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpOworICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZXN1bHQsIFN0cnVjdHVy
ZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCBzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKTsKIAotICAgIC8vIEl0J3MgYW4gaW50MzIuCi0gICAgY29tcGFyZTMyKG5l
Z2F0ZVJlc3VsdCA/IEVxdWFsIDogTm90RXF1YWwsIHZhbHVlLnBheWxvYWRHUFIoKSwgVHJ1c3Rl
ZEltbTMyKDApLCByZXN1bHQpOworICAgICAgICAvLyBXZSBhY3QgbGlrZSB3ZSBhcmUgInVuZGVm
aW5lZCIgaGVyZS4KKyAgICAgICAgbW92ZShpbnZlcnQgPyBUcnVzdGVkSW1tMzIoMSkgOiBUcnVz
dGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAgICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CisgICAg
ICAgIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIH0KKyAgICBt
b3ZlKGludmVydCA/IFRydXN0ZWRJbW0zMigwKSA6IFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0KTsK
KyAgICBkb25lLmFwcGVuZChqdW1wKCkpOworCisgICAgbm90Q2VsbC5saW5rKHRoaXMpOworICAg
IGF1dG8gbm90SW50MzIgPSBicmFuY2hJZk5vdEludDMyKHZhbHVlKTsKKyAgICBjb21wYXJlMzIo
aW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgdmFsdWUucGF5bG9hZEdQUigpLCBUcnVzdGVkSW1t
MzIoMCksIHJlc3VsdCk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAotICAgIGlzRG91Ymxl
LmxpbmsodGhpcyk7CisgICAgbm90SW50MzIubGluayh0aGlzKTsKKyAgICBhdXRvIG5vdERvdWJs
ZSA9IGJyYW5jaElmTm90RG91YmxlS25vd25Ob3RJbnQzMih2YWx1ZSk7CiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICB1bmJveERvdWJsZSh2YWx1ZS5ncHIoKSwgcmVzdWx0LCB2YWx1ZUFzRlBSKTsK
ICNlbHNlCiAgICAgdW5ib3hEb3VibGUodmFsdWUsIHZhbHVlQXNGUFIsIHRlbXBGUFIpOwogI2Vu
ZGlmCi0gICAgYXV0byBpc1plcm9Pck5hTiA9IGJyYW5jaERvdWJsZVplcm9Pck5hTih2YWx1ZUFz
RlBSLCB0ZW1wRlBSKTsKLSAgICBtb3ZlKG5lZ2F0ZVJlc3VsdCA/IFRydXN0ZWRJbW0zMigwKSA6
IFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0KTsKLSAgICBkb25lLmFwcGVuZChqdW1wKCkpOwotICAg
IGlzWmVyb09yTmFOLmxpbmsodGhpcyk7Ci0gICAgbW92ZShuZWdhdGVSZXN1bHQgPyBUcnVzdGVk
SW1tMzIoMSkgOiBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAgbW92ZShpbnZlcnQgPyBU
cnVzdGVkSW1tMzIoMSkgOiBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAgZG9uZS5hcHBl
bmQoYnJhbmNoRG91YmxlWmVyb09yTmFOKHZhbHVlQXNGUFIsIHRlbXBGUFIpKTsKKyAgICBtb3Zl
KGludmVydCA/IFRydXN0ZWRJbW0zMigwKSA6IFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0KTsKICAg
ICBkb25lLmFwcGVuZChqdW1wKCkpOwogCi0gICAgaXNOb3ROdW1iZXIubGluayh0aGlzKTsKLSAg
ICBhdXRvIGlzTm90Q2VsbEFuZElzTm90TnVtYmVyQW5kSXNOb3RCb29sZWFuID0gYnJhbmNoSWZO
b3RDZWxsKHZhbHVlKTsKLSAgICBhdXRvIGlzQ2VsbEJ1dE5vdFN0cmluZyA9IGJyYW5jaDgoTm90
RXF1YWwsCi0gICAgICAgIEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJ
bmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKTsKLSAgICBsb2FkMzIo
QWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwg
cmVzdWx0KTsKLSAgICBjb21wYXJlMzIobmVnYXRlUmVzdWx0ID8gRXF1YWwgOiBOb3RFcXVhbCwg
cmVzdWx0LCBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAgbm90RG91YmxlLmxpbmsodGhp
cyk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGlu
dDMyX3Q+KFZhbHVlVHJ1ZSkgPT0gVmFsdWVUcnVlLCAiIik7CisgICAgY29tcGFyZTY0KGludmVy
dCA/IE5vdEVxdWFsIDogRXF1YWwsIHZhbHVlLmdwcigpLCBUcnVzdGVkSW1tMzIoVmFsdWVUcnVl
KSwgcmVzdWx0KTsKKyNlbHNlCisgICAgbW92ZShpbnZlcnQgPyBUcnVzdGVkSW1tMzIoMSkgOiBU
cnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAgZG9uZS5hcHBlbmQoYnJhbmNoSWZOb3RCb29s
ZWFuKHZhbHVlLCBJbnZhbGlkR1BSUmVnKSk7CisgICAgY29tcGFyZTMyKGludmVydCA/IEVxdWFs
IDogTm90RXF1YWwsIHZhbHVlLnBheWxvYWRHUFIoKSwgVHJ1c3RlZEltbTMyKDApLCByZXN1bHQp
OworI2VuZGlmCisKKyAgICBkb25lLmxpbmsodGhpcyk7Cit9CisKK0Fzc2VtYmx5SGVscGVyczo6
SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJl
Z3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBHUFJSZWcgc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLCBGUFJSZWcgdmFsdWVBc0ZQUiwgRlBSUmVnIHRlbXBGUFIsIGJv
b2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBib29sIGludmVydCkKK3sKKyAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dp
bmcgY29udHJvbCBmbG93IHN0cnVjdHVyZToKKyAgICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewor
ICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nKQorICAgIC8vICAgICAgICAgcmVzdWx0ID0g
ISF2YWx1ZS0+bGVuZ3RoCisgICAgLy8gICAgIGVsc2UgeworICAgIC8vICAgICAgICAgZG8gZXZp
bCB0aGluZ3MgZm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZAorICAgIC8vICAgICAgICAgcmVz
dWx0ID0gdHJ1ZQorICAgIC8vICAgICB9CisgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBpbnQz
MikgeworICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCisgICAgLy8gfSBl
bHNlIGlmICh2YWx1ZSBpcyBudW1iZXIpIHsKKyAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERv
dWJsZSh2YWx1ZSkKKyAgICAvLyB9IGVsc2UgeworICAgIC8vICAgICByZXN1bHQgPSB2YWx1ZSA9
PSBqc1RydWUKKyAgICAvLyB9CisKKyAgICBKdW1wTGlzdCBkb25lOworICAgIEp1bXBMaXN0IHRy
dXRoeTsKKworICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbCh2YWx1ZSk7CisgICAg
YXV0byBpc0NlbGxCdXROb3RTdHJpbmcgPSBicmFuY2hJZk5vdFN0cmluZyh2YWx1ZS5wYXlsb2Fk
R1BSKCkpOworICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBO
b25aZXJvLCBBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwgSlNTdHJpbmc6Om9mZnNldE9mTGVu
Z3RoKCkpKSk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAotICAgIGlzQ2VsbEJ1dE5vdFN0
cmluZy5saW5rKHRoaXMpOwogICAgIGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpIHsKLSAgICAgICAgQVNTRVJUKHNjcmF0Y2ggIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAg
IGlzQ2VsbEJ1dE5vdFN0cmluZy5saW5rKHRoaXMpOworICAgICAgICBBU1NFUlQoc2NyYXRjaElm
U2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkICE9IEludmFsaWRHUFJSZWcpOwogICAg
ICAgICBKdW1wTGlzdCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ7CiAgICAgICAgIGlzTm90
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5hcHBlbmQoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyh2
YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7Ci0gICAgICAgIGVtaXRMb2FkU3RydWN0
dXJlKHZtLCB2YWx1ZS5wYXlsb2FkR1BSKCksIHJlc3VsdCwgc2NyYXRjaCk7Ci0gICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBzY3JhdGNoKTsKLSAgICAgICAgaXNOb3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVzdWx0LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgc2NyYXRjaCkpOworICAg
ICAgICBlbWl0TG9hZFN0cnVjdHVyZSh2bSwgdmFsdWUucGF5bG9hZEdQUigpLCBzY3JhdGNoLCBz
Y3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpOworICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKTsKKyAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmFw
cGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgU3RydWN0dXJlOjpnbG9i
YWxPYmplY3RPZmZzZXQoKSksIHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkpOworCiAgICAgICAgIC8vIFdlIGFjdCBsaWtlIHdlIGFyZSAidW5kZWZpbmVkIiBoZXJl
LgotICAgICAgICBtb3ZlKG5lZ2F0ZVJlc3VsdCA/IFRydXN0ZWRJbW0zMigxKSA6IFRydXN0ZWRJ
bW0zMigwKSwgcmVzdWx0KTsKLSAgICAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKLSAgICAgICAg
aXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAgICAgIGlmIChpbnZl
cnQpCisgICAgICAgICAgICB0cnV0aHkuYXBwZW5kKGp1bXAoKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CisKKyAgICAgICAgaWYgKGludmVydCkKKyAg
ICAgICAgICAgIGRvbmUuYXBwZW5kKGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHRydXRoeS5hcHBlbmQoaXNOb3RNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoaW52ZXJ0KQorICAgICAgICAgICAg
ZG9uZS5hcHBlbmQoaXNDZWxsQnV0Tm90U3RyaW5nKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdHJ1dGh5LmFwcGVuZChpc0NlbGxCdXROb3RTdHJpbmcpOwogICAgIH0KLSAgICBtb3ZlKG5l
Z2F0ZVJlc3VsdCA/IFRydXN0ZWRJbW0zMigwKSA6IFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0KTsK
KworICAgIG5vdENlbGwubGluayh0aGlzKTsKKyAgICBhdXRvIG5vdEludDMyID0gYnJhbmNoSWZO
b3RJbnQzMih2YWx1ZSk7CisgICAgdHJ1dGh5LmFwcGVuZChicmFuY2hUZXN0MzIoaW52ZXJ0ID8g
WmVybyA6IE5vblplcm8sIHZhbHVlLnBheWxvYWRHUFIoKSkpOwogICAgIGRvbmUuYXBwZW5kKGp1
bXAoKSk7CiAKLSAgICAvLyBudWxsIG9yIHVuZGVmaW5lZC4KLSAgICBpc05vdENlbGxBbmRJc05v
dE51bWJlckFuZElzTm90Qm9vbGVhbi5saW5rKHRoaXMpOyAKLSAgICBtb3ZlKG5lZ2F0ZVJlc3Vs
dCA/IFRydXN0ZWRJbW0zMigxKSA6IFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0KTsKKyAgICBub3RJ
bnQzMi5saW5rKHRoaXMpOworICAgIGF1dG8gbm90RG91YmxlID0gYnJhbmNoSWZOb3REb3VibGVL
bm93bk5vdEludDMyKHZhbHVlKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHVuYm94RG91Ymxl
KHZhbHVlLmdwcigpLCBzY3JhdGNoLCB2YWx1ZUFzRlBSKTsKKyNlbHNlCisgICAgdW5ib3hEb3Vi
bGUodmFsdWUsIHZhbHVlQXNGUFIsIHRlbXBGUFIpOworI2VuZGlmCisgICAgaWYgKGludmVydCkg
eworICAgICAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaERvdWJsZVplcm9Pck5hTih2YWx1ZUFzRlBS
LCB0ZW1wRlBSKSk7CisgICAgICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgZG9uZS5hcHBlbmQoYnJhbmNoRG91YmxlWmVyb09yTmFOKHZhbHVlQXNGUFIsIHRl
bXBGUFIpKTsKKyAgICAgICAgdHJ1dGh5LmFwcGVuZChqdW1wKCkpOworICAgIH0KKworICAgIG5v
dERvdWJsZS5saW5rKHRoaXMpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdHJ1dGh5LmFwcGVu
ZChicmFuY2g2NChpbnZlcnQgPyBOb3RFcXVhbCA6IEVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSkpOworI2Vsc2UKKyAgICBh
dXRvIG5vdEJvb2xlYW4gPSBicmFuY2hJZk5vdEJvb2xlYW4odmFsdWUsIEludmFsaWRHUFJSZWcp
OworICAgIGlmIChpbnZlcnQpCisgICAgICAgIHRydXRoeS5hcHBlbmQobm90Qm9vbGVhbik7Cisg
ICAgZWxzZQorICAgICAgICBkb25lLmFwcGVuZChub3RCb29sZWFuKTsKKyAgICB0cnV0aHkuYXBw
ZW5kKGJyYW5jaDMyKGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHZhbHVlLnBheWxvYWRHUFIo
KSwgVHJ1c3RlZEltbTMyKDApKSk7CisjZW5kaWYKIAogICAgIGRvbmUubGluayh0aGlzKTsKKwor
ICAgIHJldHVybiB0cnV0aHk7CiB9CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCAxZTM4N2Y2ODhmY2Y0
OTA0ZTVmYWUzY2EzYzI2MTk5NzBmOTQ2NDJiLi4yMDVmZmVmYzg2YWJkNzFhNmVjMzFiZWU5MWY4
YzE4N2FjNDBkNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKQEAgLTE3NTgsNiArMTc1OCwxNSBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJs
aWMgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG51bGxw
dHIpLCBBZGRyZXNzKHJlc3VsdEdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSk7CiAg
ICAgfQogCisgICAgSnVtcExpc3QgYnJhbmNoSWZWYWx1ZShWTSYsIEpTVmFsdWVSZWdzIHZhbHVl
LCBHUFJSZWcgc2NyYXRjaCwgR1BSUmVnIHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCwgRlBSUmVnLCBGUFJSZWcsIGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLCBKU0dsb2JhbE9iamVjdCosIGJvb2wgbmVnYXRlUmVzdWx0KTsKKyAgICBKdW1w
TGlzdCBicmFuY2hJZlRydXRoeShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2Ny
YXRjaCwgR1BSUmVnIHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwg
RlBSUmVnIHNjcmF0Y2hGUFIwLCBGUFJSZWcgc2NyYXRjaEZQUjEsIGJvb2wgc2hvdWxkQ2hlY2tN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmVmFsdWUodm0sIHZhbHVlLCBzY3JhdGNoLCBzY3Jh
dGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHNjcmF0Y2hGUFIwLCBzY3Jh
dGNoRlBSMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3Qs
IGZhbHNlKTsKKyAgICB9CisgICAgSnVtcExpc3QgYnJhbmNoSWZGYWxzZXkoVk0mIHZtLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEdQUlJlZyBzY3JhdGNoSWZTaG91bGRDaGVj
a01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIEZQUlJlZyBzY3JhdGNoRlBSMCwgRlBSUmVnIHNjcmF0
Y2hGUFIxLCBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hJZlZhbHVl
KHZtLCB2YWx1ZSwgc2NyYXRjaCwgc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLCBzY3JhdGNoRlBSMCwgc2NyYXRjaEZQUjEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0LCB0cnVlKTsKKyAgICB9CiAgICAgdm9pZCBlbWl0Q29u
dmVydFZhbHVlVG9Cb29sZWFuKFZNJiwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIEZQUlJl
ZywgRlBSUmVnLCBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgSlNHbG9i
YWxPYmplY3QqLCBib29sIG5lZ2F0ZVJlc3VsdCA9IGZhbHNlKTsKICAgICAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDbGFzc1R5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBjZjIwM2M2
ZGI0YmNhZWU1N2UzZGVjYjg0MTg0NDVjNTRlMzBjZThkLi41OTNkNWJmMzhiZTdmODZhMmVlMjc1
Y2FjMmExODQ2YTk3NDUyNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTMwNSw2ICsz
MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShjb25zdCBK
dW1wTGlzdCYpOwogICAgICAgICB2b2lkIGFkZFNsb3dDYXNlKCk7CiAgICAgICAgIHZvaWQgYWRk
SnVtcChKdW1wLCBpbnQpOworICAgICAgICB2b2lkIGFkZEp1bXAoY29uc3QgSnVtcExpc3QmLCBp
bnQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd1RvSG90KEp1bXAsIGludCk7CiAKICAgICAg
ICAgdm9pZCBjb21waWxlT3BDYWxsKE9wY29kZUlELCBJbnN0cnVjdGlvbiosIHVuc2lnbmVkIGNh
bGxMaW5rSW5mb0luZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5k
ZXggNzIzYjczZWQzNWQwNmM1Njk5YTIyMWVjN2FiNGQ1NTg0MDJiMzNmZi4uMmJiNjdmMTNiZWRl
MDRkNzU0YjkyYzU3NmFmOGE5ZmEwMzk3YzM4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKQEAgLTIzNSw2ICsyMzUsMTQgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6
YWRkSnVtcChKdW1wIGp1bXAsIGludCByZWxhdGl2ZU9mZnNldCkKICAgICBtX2ptcFRhYmxlLmFw
cGVuZChKdW1wVGFibGUoanVtcCwgbV9ieXRlY29kZU9mZnNldCArIHJlbGF0aXZlT2Zmc2V0KSk7
CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFkZEp1bXAoY29uc3QgSnVtcExpc3QmIGp1
bXBMaXN0LCBpbnQgcmVsYXRpdmVPZmZzZXQpCit7CisgICAgQVNTRVJUKG1fYnl0ZWNvZGVPZmZz
ZXQgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsgLy8gVGhpcyBtZXRo
b2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24s
IHNvIHRoYXQgbV9ieXRlY29kZU9mZnNldCBpcyBzZXQuCisKKyAgICBmb3IgKGF1dG8mIGp1bXAg
OiBqdW1wTGlzdC5qdW1wcygpKQorICAgICAgICBhZGRKdW1wKGp1bXAsIHJlbGF0aXZlT2Zmc2V0
KTsKK30KKwogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93VG9Ib3QoSnVtcCBq
dW1wLCBpbnQgcmVsYXRpdmVPZmZzZXQpCiB7CiAgICAgQVNTRVJUKG1fYnl0ZWNvZGVPZmZzZXQg
IT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsgLy8gVGhpcyBtZXRob2Qg
c2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNv
IHRoYXQgbV9ieXRlY29kZU9mZnNldCBpcyBzZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAppbmRleCA0NTlkMWEyZGI1YTFkYzFhZDBjMWIxMjIwM2VlNzFmZGEyYmNh
Mjc2Li4xNDZkYWNmNjk1YTI2NGQyNmIxOWIzYWRmZmEwNzUyMzJkYWZkYzYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM1MSwxNCArMzUxLDEyIEBAIHZv
aWQgSklUOjplbWl0X29wX2pmYWxzZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAK
ICAgICBHUFJSZWcgdmFsdWUgPSByZWdUMDsKLSAgICBHUFJSZWcgcmVzdWx0ID0gcmVnVDE7Ci0g
ICAgR1BSUmVnIHNjcmF0Y2ggPSByZWdUMjsKKyAgICBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMTsK
KyAgICBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMjsKICAgICBib29sIHNob3VsZENoZWNrTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHZhbHVlKTsKLSAgICBlbWl0Q29udmVydFZh
bHVlVG9Cb29sZWFuKCp2bSgpLCBKU1ZhbHVlUmVncyh2YWx1ZSksIHJlc3VsdCwgc2NyYXRjaCwg
ZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOwotCi0gICAgYWRkSnVtcChicmFuY2hUZXN0MzIoWmVy
bywgcmVzdWx0KSwgdGFyZ2V0KTsKKyAgICBhZGRKdW1wKGJyYW5jaElmRmFsc2V5KCp2bSgpLCBK
U1ZhbHVlUmVncyh2YWx1ZSksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwg
c2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCB0YXJnZXQpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNDQyLDEyICs0NDAsMTEgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfanRydWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1bnNp
Z25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAgR1BS
UmVnIHZhbHVlID0gcmVnVDA7Ci0gICAgR1BSUmVnIHJlc3VsdCA9IHJlZ1QxOwotICAgIEdQUlJl
ZyBzY3JhdGNoID0gcmVnVDI7CisgICAgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7CisgICAgR1BS
UmVnIHNjcmF0Y2gyID0gcmVnVDI7CiAgICAgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgPSB0cnVlOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCwgdmFsdWUpOwotICAgIGVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xl
YW4oKnZtKCksIEpTVmFsdWVSZWdzKHZhbHVlKSwgcmVzdWx0LCBzY3JhdGNoLCBmcFJlZ1QwLCBm
cFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSk7Ci0gICAgYWRkSnVtcChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVzdWx0
KSwgdGFyZ2V0KTsKKyAgICBhZGRKdW1wKGJyYW5jaElmVHJ1dGh5KCp2bSgpLCBKU1ZhbHVlUmVn
cyh2YWx1ZSksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hl
Y2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCB0
YXJnZXQpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAppbmRleCBlZWU5ZDI4NDY1MjcyMzE1ZjM4ZDk3MjI2ZWQ3MjI1ZTRiZDJkODBiLi5mNGMw
MTZiYmQxMGVkYzY4M2ZhMDJjZmZmMWVmMWY2Y2VhY2RjYjc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zNDcsMTIgKzM0NywxMCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0TG9hZChjb25kLCByZWdUMSwgcmVnVDApOwogCiAgICAgSlNWYWx1ZVJlZ3MgdmFs
dWUocmVnVDEsIHJlZ1QwKTsKLSAgICBHUFJSZWcgc2NyYXRjaCA9IHJlZ1QyOwotICAgIEdQUlJl
ZyByZXN1bHQgPSByZWdUMzsKKyAgICBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMjsKKyAgICBHUFJS
ZWcgc2NyYXRjaDIgPSByZWdUMzsKICAgICBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IHRydWU7Ci0gICAgZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbigqdm0oKSwgdmFs
dWUsIHJlc3VsdCwgc2NyYXRjaCwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOwotCi0gICAgYWRk
SnVtcChicmFuY2hUZXN0MzIoWmVybywgcmVzdWx0KSwgdGFyZ2V0KTsKKyAgICBhZGRKdW1wKGJy
YW5jaElmRmFsc2V5KCp2bSgpLCB2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBm
cFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSksIHRhcmdldCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2p0cnVlKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0zNjMsMTEgKzM2MSw5IEBAIHZvaWQg
SklUOjplbWl0X29wX2p0cnVlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdExvYWQoY29uZCwgcmVnVDEsIHJlZ1QwKTsKICAgICBib29sIHNob3VsZENoZWNrTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUocmVnVDEsIHJl
Z1QwKTsKLSAgICBHUFJSZWcgc2NyYXRjaCA9IHJlZ1QyOwotICAgIEdQUlJlZyByZXN1bHQgPSBy
ZWdUMzsKLSAgICBlbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKCp2bSgpLCB2YWx1ZSwgcmVzdWx0
LCBzY3JhdGNoLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7Ci0KLSAgICBhZGRKdW1wKGJyYW5j
aFRlc3QzMihOb25aZXJvLCByZXN1bHQpLCB0YXJnZXQpOworICAgIEdQUlJlZyBzY3JhdGNoMSA9
IHJlZ1QyOworICAgIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QzOworICAgIGFkZEp1bXAoYnJhbmNo
SWZUcnV0aHkoKnZtKCksIHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVn
VDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgbV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgdGFyZ2V0KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzZmNmYxMjY4N2JiMmVjZGY2OTk1ZjYzZmI0
OGM4Yjc0MDM1NDBkMS4uOGI1OTdiMGVjOGRiZGI5YzI5NGQ1NDQ4OGUyNGU5NzJjZDVkMjUwZSAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAxOC0wNi0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBCYXNlbGluZSBvcF9qdHJ1ZSBlbWl0cyBhbiBpbnNhbmUgYW1v
dW50IG9mIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NTcwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3RyZXNzL2xvZ2ljYWwtbm90LW1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZC5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJl
c3MvbG9naWNhbC1ub3QuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
dGVzdCk6CisKIDIwMTgtMDUtMzEgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgog
CiAgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IHN1cHBvcnQgZm9yICI9PCIgYW5k
ICI+PSIgcmVsYXRpb25hbCBvcGVyYXRpb24KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2xv
Z2ljYWwtbm90LW1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2xv
Z2ljYWwtbm90LW1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGI3ZDFh
OTRiMTIwYWMxN2M2Mzk5YWQ4YjJiZjQwODk5ZTNkZjYxCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvbG9naWNhbC1ub3QtbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkLmpzCkBAIC0w
LDAgKzEsMzUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFs
dWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KHZhbHVlKQoreworICAgIHJldHVy
biAhdmFsdWU7Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIGRhdGEgPSBbCisgICAgWyB7fSwg
dHJ1ZSBdLAorICAgIFsgdHJ1ZSwgdHJ1ZSBdLAorICAgIFsgZmFsc2UsIGZhbHNlIF0sCisgICAg
WyAtMCwgZmFsc2UgXSwKKyAgICBbIDEsIHRydWUgXSwKKyAgICBbIDQuMiwgdHJ1ZSBdLAorICAg
IFsgTmFOLCBmYWxzZSBdLAorICAgIFsgSW5maW5pdHksIHRydWUgXSwKKyAgICBbIFtdLCB0cnVl
IF0sCisgICAgWyBuZXcgRGF0ZSgpLCB0cnVlIF0sCisgICAgWyAiIiwgZmFsc2UgXSwKKyAgICBb
ICIiICsgIiIgKyAiIiwgZmFsc2UgXSwKKyAgICBbICJDb2NvYSIsIHRydWUgXSwKKyAgICBbIHVu
ZGVmaW5lZCwgZmFsc2UgXSwKKyAgICBbIG51bGwsIGZhbHNlIF0sCisgICAgWyBTeW1ib2woKSwg
dHJ1ZSBdLAorICAgIFsgbWFrZU1hc3F1ZXJhZGVyKCkgLCBmYWxzZV0KK107CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICBmb3IgKGxldCBbIHZhbHVlLCByZXN1bHQgXSBv
ZiBkYXRhKQorICAgICAgICBzaG91bGRCZSghdGVzdCh2YWx1ZSksIHJlc3VsdCk7Cit9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9sb2dpY2FsLW5vdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2xv
Z2ljYWwtbm90LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhOTBkY2JhNWM3MGM2YzZjYTY2ZTNiYjU3MzZmMDI4
OTI4NDc4NDMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9sb2dpY2FsLW5vdC5q
cwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdCh2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gIXZhbHVlOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBkYXRhID0gWworICAg
IFsge30sIHRydWUgXSwKKyAgICBbIHRydWUsIHRydWUgXSwKKyAgICBbIGZhbHNlLCBmYWxzZSBd
LAorICAgIFsgLTAsIGZhbHNlIF0sCisgICAgWyAxLCB0cnVlIF0sCisgICAgWyA0LjIsIHRydWUg
XSwKKyAgICBbIE5hTiwgZmFsc2UgXSwKKyAgICBbIEluZmluaXR5LCB0cnVlIF0sCisgICAgWyBb
XSwgdHJ1ZSBdLAorICAgIFsgbmV3IERhdGUoKSwgdHJ1ZSBdLAorICAgIFsgIiIsIGZhbHNlIF0s
CisgICAgWyAiIiArICIiICsgIiIsIGZhbHNlIF0sCisgICAgWyAiQ29jb2EiLCB0cnVlIF0sCisg
ICAgWyB1bmRlZmluZWQsIGZhbHNlIF0sCisgICAgWyBudWxsLCBmYWxzZSBdLAorICAgIFsgU3lt
Ym9sKCksIHRydWUgXSwKK107CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICBmb3IgKGxldCBbIHZhbHVlLCByZXN1bHQgXSBvZiBkYXRhKQorICAgICAgICBzaG91bGRCZSgh
dGVzdCh2YWx1ZSksIHJlc3VsdCk7Cit9Cg==
</data>
<flag name="review"
          id="359912"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>