<?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>227202</bug_id>
          
          <creation_ts>2021-06-20 21:52:48 -0700</creation_ts>
          <short_desc>Add ARM64 BIC, ORN, BFXIL to AIR opcode and select them in AIR</short_desc>
          <delta_ts>2021-06-29 08:53:39 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yijia Huang">yijia_huang</reporter>
          <assigned_to name="Yijia Huang">yijia_huang</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1771215</commentid>
    <comment_count>0</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-20 21:52:48 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772556</commentid>
    <comment_count>1</comment_count>
      <attachid>432238</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-24 23:05:31 -0700</bug_when>
    <thetext>Created attachment 432238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772704</commentid>
    <comment_count>2</comment_count>
      <attachid>432278</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-25 09:13:49 -0700</bug_when>
    <thetext>Created attachment 432278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772718</commentid>
    <comment_count>3</comment_count>
      <attachid>432278</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-25 10:06:04 -0700</bug_when>
    <thetext>Comment on attachment 432278
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:59
&gt; +        Before Adding BFI:
&gt; +        // Old optimized AIR
&gt; +        Move    $1, %x2,      @3
&gt; +        Lshift %x2, %x1, %x1, @5
&gt; +        Not    %x1, %x1,      @6
&gt; +        And    %x0, %x1, %x0, @7
&gt; +        Ret    %x0,           @8
&gt; +
&gt; +        After Adding BFI:
&gt; +        // New optimized AIR
&gt; +        ClearBit %x1, %x0, %x2, @7
&gt; +        Ret      %x0,           @8

Nice

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:503
&gt; +    void clearBit64(RegisterID bitToClear, RegisterID dest, RegisterID scratchForMask = InvalidGPRReg)
&gt; +    {
&gt; +        if (scratchForMask == InvalidGPRReg)
&gt; +            scratchForMask = scratchRegister();
&gt; +
&gt; +        move(TrustedImm32(1), scratchForMask);
&gt; +        lshift64(bitToClear, scratchForMask);
&gt; +        clearBits64WithMask(scratchForMask, dest);

This is an interesting question for Phil.

I wonder if it&apos;s worth sucking up the lshift as part of this instruction, instead of emitting it directly in Air IR, and just adding a &quot;clearBits32/64WithMask&quot; in Air

&gt; Source/JavaScriptCore/assembler/testmasm.cpp:920
&gt; +    constexpr unsigned bitsInWord = sizeof(uint32_t) * 8;

nit: 8 =&gt; CHAR_BIT

&gt; Source/JavaScriptCore/b3/air/AirOpcode.opcodes:384
&gt; +arm64: ClearBit32 U:G:32, UZD:G:32, U:G:32

the last register here should be &quot;scratch&quot;, so, &quot;S:G:32&quot;

&gt; Source/JavaScriptCore/b3/air/AirOpcode.opcodes:387
&gt; +arm64: ClearBit64 U:G:32, UD:G:64, U:G:64

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772745</commentid>
    <comment_count>4</comment_count>
      <attachid>432286</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-25 12:48:55 -0700</bug_when>
    <thetext>Created attachment 432286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772806</commentid>
    <comment_count>5</comment_count>
      <attachid>432307</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-25 16:23:26 -0700</bug_when>
    <thetext>Created attachment 432307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772896</commentid>
    <comment_count>6</comment_count>
      <attachid>432338</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-26 14:49:27 -0700</bug_when>
    <thetext>Created attachment 432338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772912</commentid>
    <comment_count>7</comment_count>
      <attachid>432343</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-26 22:03:23 -0700</bug_when>
    <thetext>Created attachment 432343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772914</commentid>
    <comment_count>8</comment_count>
      <attachid>432345</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-26 22:14:33 -0700</bug_when>
    <thetext>Created attachment 432345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772957</commentid>
    <comment_count>9</comment_count>
      <attachid>432356</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-27 14:16:31 -0700</bug_when>
    <thetext>Created attachment 432356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772984</commentid>
    <comment_count>10</comment_count>
      <attachid>432368</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-28 01:23:11 -0700</bug_when>
    <thetext>Created attachment 432368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772989</commentid>
    <comment_count>11</comment_count>
      <attachid>432371</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-28 01:39:01 -0700</bug_when>
    <thetext>Created attachment 432371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773283</commentid>
    <comment_count>12</comment_count>
      <attachid>432371</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-06-28 17:36:12 -0700</bug_when>
    <thetext>Comment on attachment 432371
Patch

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

Didn&apos;t you previously make (n &gt;&gt; a) &amp; b the canonical form for extracting a bitfield?

It&apos;s probably worth saying the following though I&apos;m sure you&apos;ve started to figure it out: Canonical forms are like pseudoinstructions. Just as phases may look for instructions, they may look for patterns of instructions, or instructions with something special about them (like that some operand is a constant). Also, anytime we can express some logic in B3 IR using existing instructions, then rather than adding a new instruction, we pick a canonical form of existing ones. Like BitNot - there is no BitNot opcode. 

When designing canonical forms, we often have many alternative possible ways of expressing this &quot;pseudoinstruction&quot;. So which one do we pick? There are two things that happen to instructions or instruction patterns:

1. There&apos;s a bunch of code to create them.
2. There&apos;s a bunch of code to pattern-match them.

If someone wants to write a phase that as part of a transformation needs to introduce a bitfield extract, then they will want to emit it using canonical form.

If someone wants to pattern-match the bitfield extract, then they will pattern-match the canonical form.

Therefore: we should always pick the canonical form that requires the least amount of code for case (1) and (2), with a preference for less code in (2).

Hence why I think that (n &gt;&gt; a) &amp; b is the natural choice.  Your instruction selection code illustraces this. To check if (n &amp; a) &gt;&gt; b is a bitfield extract, you have to count trailing zeroes, then shift down, then check if it&apos;s a mask.  But with (n &gt;&gt; a) &amp; b, you just have to check that a is a mask.

&gt; Source/JavaScriptCore/ChangeLog:36
&gt; +            Turn this: -value - 1 
&gt; +            Into this: value ^ -1

This is great.  I can&apos;t believe we didn&apos;t have this rule already.

Indeed, the canonical form of the BitNot(@x) operation in B3 IR is BitXor(@x, -1).  So, your patch just reinforces this existing rule.

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2851
&gt; +            // BFXIL Pattern: d = ((n &amp; mask1) &gt;&gt; lsb) | (d &amp; mask2)

I would have made this be (n &gt;&gt; lsb) &amp; mask1

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:3022
&gt; +            // UBFX Pattern: d = (n &amp; mask) &gt;&gt; lsb

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773284</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-28 17:36:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/79890466&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773302</commentid>
    <comment_count>14</comment_count>
      <attachid>432447</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-28 19:06:48 -0700</bug_when>
    <thetext>Created attachment 432447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773311</commentid>
    <comment_count>15</comment_count>
      <attachid>432447</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-06-28 20:21:31 -0700</bug_when>
    <thetext>Comment on attachment 432447
Patch

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

Nice work.

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2916
&gt; +                auto isValidMask2 = [&amp;] () -&gt; bool {

I like your style of lambda usage. It makes the code easy to read since you are naming this block of computation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773314</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-28 21:05:21 -0700</bug_when>
    <thetext>Committed r279362 (239228@main): &lt;https://commits.webkit.org/239228@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 432447.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432238</attachid>
            <date>2021-06-24 23:05:31 -0700</date>
            <delta_ts>2021-06-25 09:13:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227202-20210625010530.patch</filename>
            <type>text/plain</type>
            <size>15506</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
M2RjMjc2YWQxOWE3YTc3NTE4MWFlMzdkMThhYTkzNWYxMGQ2ZGZkLi5hNzVlOTBjMWRhYTQyYTIz
YmFlYTBiYWRjY2IyOTFhY2M4YWY1NGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMS0wNi0yNCAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBCSUMgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNsZWFyQml0MzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpjbGVhckJpdHMzMldpdGhNYXNrKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2xlYXJCaXQ2NCk6CisgICAgICAgICog
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVzdENsZWFyQml0MzIpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvQjNSZWR1Y2VTdHJl
bmd0aC5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzOgorICAgICAgICAq
IGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18yLmNwcDoKKyAgICAgICAgKHRlc3RD
bGVhckJpdDMyKToKKyAgICAgICAgKHRlc3RDbGVhckJpdDY0KToKKyAgICAgICAgKGFkZEJpdFRl
c3RzKToKKwogMjAyMS0wNi0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIGxkcCBhbmQgc3RwIG1vcmUgZm9yIHNhdmluZyAvIHJlc3RvcmluZyByZWdpc3Rl
cnMgb24gQVJNNjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDA2OWJkNDZiMzk0MWMwYTg2ZThlM2EzNjk5NDRh
YTRhOTBiYzA3NWQuLmQyZTZjODg4NDY0MjllMTFlNzc1YjIyOGJlZDdiYjExYmNjYWMzZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oCkBAIC00NjgsNyArNDY4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJs
ZXIuYW5kXzw2ND4oZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCi0gICAg
dm9pZCBjbGVhckJpdDY0KFJlZ2lzdGVySUQgYml0VG9DbGVhciwgUmVnaXN0ZXJJRCBkZXN0LCBS
ZWdpc3RlcklEIHNjcmF0Y2hGb3JNYXNrID0gSW52YWxpZEdQUlJlZykKKyAgICBlbnVtIGNsYXNz
IENsZWFyQml0c0F0dHJpYnV0ZXMgeworICAgICAgICBPS1RvQ2xvYmJlck1hc2ssCisgICAgICAg
IE11c3RQcmVzZXJ2ZU1hc2sKKyAgICB9OworCisgICAgdm9pZCBjbGVhckJpdDMyKFJlZ2lzdGVy
SUQgYml0VG9DbGVhciwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2hGb3JNYXNr
ID0gSW52YWxpZEdQUlJlZykKICAgICB7CiAgICAgICAgIGlmIChzY3JhdGNoRm9yTWFzayA9PSBJ
bnZhbGlkR1BSUmVnKQogICAgICAgICAgICAgc2NyYXRjaEZvck1hc2sgPSBzY3JhdGNoUmVnaXN0
ZXIoKTsKQEAgLTQ3OCwxMCArNDgzLDI1IEBAIHB1YmxpYzoKICAgICAgICAgY2xlYXJCaXRzNjRX
aXRoTWFzayhzY3JhdGNoRm9yTWFzaywgZGVzdCk7CiAgICAgfQogCi0gICAgZW51bSBjbGFzcyBD
bGVhckJpdHNBdHRyaWJ1dGVzIHsKLSAgICAgICAgT0tUb0Nsb2JiZXJNYXNrLAotICAgICAgICBN
dXN0UHJlc2VydmVNYXNrCi0gICAgfTsKKyAgICB2b2lkIGNsZWFyQml0czMyV2l0aE1hc2soUmVn
aXN0ZXJJRCBtYXNrLCBSZWdpc3RlcklEIGRlc3QsIENsZWFyQml0c0F0dHJpYnV0ZXMgPSBDbGVh
ckJpdHNBdHRyaWJ1dGVzOjpPS1RvQ2xvYmJlck1hc2spCisgICAgeworICAgICAgICBjbGVhckJp
dHMzMldpdGhNYXNrKGRlc3QsIG1hc2ssIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJC
aXRzMzJXaXRoTWFzayhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBtYXNrLCBSZWdpc3RlcklE
IGRlc3QsIENsZWFyQml0c0F0dHJpYnV0ZXMgPSBDbGVhckJpdHNBdHRyaWJ1dGVzOjpPS1RvQ2xv
YmJlck1hc2spCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iaWM8MzI+KGRlc3QsIHNyYywg
bWFzayk7CisgICAgfQorCisgICAgdm9pZCBjbGVhckJpdDY0KFJlZ2lzdGVySUQgYml0VG9DbGVh
ciwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2hGb3JNYXNrID0gSW52YWxpZEdQ
UlJlZykKKyAgICB7CisgICAgICAgIGlmIChzY3JhdGNoRm9yTWFzayA9PSBJbnZhbGlkR1BSUmVn
KQorICAgICAgICAgICAgc2NyYXRjaEZvck1hc2sgPSBzY3JhdGNoUmVnaXN0ZXIoKTsKKworICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgc2NyYXRjaEZvck1hc2spOworICAgICAgICBsc2hp
ZnQ2NChiaXRUb0NsZWFyLCBzY3JhdGNoRm9yTWFzayk7CisgICAgICAgIGNsZWFyQml0czY0V2l0
aE1hc2soc2NyYXRjaEZvck1hc2ssIGRlc3QpOworICAgIH0KIAogICAgIHZvaWQgY2xlYXJCaXRz
NjRXaXRoTWFzayhSZWdpc3RlcklEIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCwgQ2xlYXJCaXRzQXR0
cmlidXRlcyA9IENsZWFyQml0c0F0dHJpYnV0ZXM6Ok9LVG9DbG9iYmVyTWFzaykKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCmluZGV4IGM5Y2Y5
NjhiN2I0NWY0MjM4N2VkYzdmZDY2OTNmMDlkNTNlZTZhNTAuLjJhMWY2OTE4ZmU4MjgyMTJkMGU3
ZDhmNWE5YmIxOWI1MjI2OWQ0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvdGVzdG1hc20uY3BwCkBAIC05MDQsNiArOTA0LDMzIEBAIHZvaWQgdGVzdE11bDMyV2l0aElt
bWVkaWF0ZXMoKQogfQogCiAjaWYgQ1BVKEFSTTY0KQordm9pZCB0ZXN0Q2xlYXJCaXQzMigpCit7
CisgICAgYXV0byB0ZXN0ID0gY29tcGlsZShbXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBHUFJSZWcgc2NyYXRjaEdQ
UiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMjsKKyAgICAgICAgaml0LmNsZWFyQml0MzIoR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIHNjcmF0Y2hHUFIpOworICAg
ICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQu
cmV0KCk7CisgICAgfSk7CisKKyAgICBjb25zdGV4cHIgdW5zaWduZWQgYml0c0luV29yZCA9IHNp
emVvZih1aW50MzJfdCkgKiA4OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJpdHNJ
bldvcmQ7ICsraSkgeworICAgICAgICB1aW50MzJfdCB3b3JkID0gc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MzJfdD46Om1heCgpOworICAgICAgICBjb25zdGV4cHIgdWludDMyX3Qgb25lID0gMTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQzMl90Pih0ZXN0LCB3b3JkLCBpKSwgKHdvcmQg
JiB+KG9uZSA8PCBpKSkpOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBi
aXRzSW5Xb3JkOyArK2kpIHsKKyAgICAgICAgdWludDMyX3Qgd29yZCA9IDA7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTx1aW50MzJfdD4odGVzdCwgd29yZCwgaSksIDApOworICAgIH0KK30KKwog
dm9pZCB0ZXN0TXVsMzJTaWduRXh0ZW5kKCkKIHsKICAgICBmb3IgKGF1dG8gdmFsdWUgOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKQEAgLTM0MjMsNiArMzQ1MCw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIq
IGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogI2VuZGlmCiAKICNp
ZiBDUFUoQVJNNjQpCisgICAgUlVOKHRlc3RDbGVhckJpdDMyKCkpOwogICAgIFJVTih0ZXN0TG9h
ZFN0b3JlUGFpcjY0SW50NjQoKSk7CiAgICAgUlVOKHRlc3RMb2FkU3RvcmVQYWlyNjREb3VibGUo
KSk7CiAgICAgUlVOKHRlc3RNdWwzMlNpZ25FeHRlbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDg0MDQwZmVmNGE5NmE3NTkxMzdiYzY2ZWRlNDUx
OGY3OTIzMWFhYmQuLjhjYWQ0NTIxMTVmZGZlZmVmZGE0YTNjNDQxZTViMjVlNWI2NzY3OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNzkyLDYgKzI3
OTIsMzYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICh0cnlBcHBlbmRVQkZYKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgICAgICAvLyBDbGVhckJpdCBQYXR0ZXJuOiBk
ID0gZCAmICgoMSA8PCBhbW91bnQpIF4gLTEpCisgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZENs
ZWFyQml0ID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKKyAgICAg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKENsZWFyQml0MzIs
IENsZWFyQml0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFpc1Zh
bGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSAKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChyaWdodC0+b3Bj
b2RlKCkgIT0gQml0WG9yIHx8ICFjYW5CZUludGVybmFsKHJpZ2h0KSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChyaWdodC0+Y2hpbGQoMCkt
Pm9wY29kZSgpICE9IFNobCB8fCAhY2FuQmVJbnRlcm5hbChyaWdodC0+Y2hpbGQoMCkpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBWYWx1ZSog
ZFZhbHVlID0gbGVmdDsKKyAgICAgICAgICAgICAgICBWYWx1ZSogb25lVmFsdWUgPSByaWdodC0+
Y2hpbGQoMCktPmNoaWxkKDApOworICAgICAgICAgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9
IHJpZ2h0LT5jaGlsZCgwKS0+Y2hpbGQoMSk7CisgICAgICAgICAgICAgICAgVmFsdWUqIG5lZ09u
ZSA9IHJpZ2h0LT5jaGlsZCgxKTsKKyAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFp
bnMoZFZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIGlmICghb25lVmFsdWUtPmhhc0ludCgpIHx8ICFvbmVWYWx1ZS0+aXNJbnQoMSkgfHwg
IW5lZ09uZS0+aGFzSW50KCkgfHwgIW5lZ09uZS0+aXNJbnQoLTEpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBUbXAgcmVzdWx0ID0gdG1wKG1f
dmFsdWUpOworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUobV92YWx1
ZS0+dHlwZSgpKSwgdG1wKGRWYWx1ZSksIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgYXBwZW5k
KG9wY29kZSwgdG1wKGFtb3VudFZhbHVlKSwgcmVzdWx0LCBtX2NvZGUubmV3VG1wKEdQKSk7Cisg
ICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQtPmNoaWxkKDApKTsKKyAgICAgICAg
ICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAodHJ5QXBwZW5kQ2xlYXJCaXQo
bGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZENsZWFyQml0KHJpZ2h0LCBsZWZ0KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBBbmQ2NCwg
QW5kRG91YmxlLCBBbmRGbG9hdCwgQ29tbXV0YXRpdmU+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVk
dWNlU3RyZW5ndGguY3BwCmluZGV4IDNkZGFkZTc3MDhlYjRjN2I0MmM1N2JiYTA2MjljNmU5ZmRm
NjU4ZmQuLmE2YjcwMzgxZjM0YTk1NWJkOTRhMGZmODMzYTMxNDVjYmU5NThkZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTYyNyw2ICs2
MjcsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1fdmFs
dWUtPmlzSW50ZWdlcigpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTdWIoTmVn
KHZhbHVlKSwgMSkKKyAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEJpdFhvcih2YWx1ZSwg
LTEpCisgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBO
ZWcgJiYgbV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDEpKSB7CisgICAgICAgICAgICAgICAgICAg
IFZhbHVlKiBtaW51c09uZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxk
KDApLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDMyKQorICAgICAgICAgICAgICAgICAgICAgICAg
bWludXNPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3QzMlZhbHVlPihtX2luZGV4LCBt
X3ZhbHVlLT5vcmlnaW4oKSwgLTEpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICBtaW51c09uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdDY0
VmFsdWU+KG1faW5kZXgsIG1fdmFsdWUtPm9yaWdpbigpLCAtMSk7CisgICAgICAgICAgICAgICAg
ICAgIHJlcGxhY2VXaXRoTmV3PFZhbHVlPihCaXRYb3IsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3Zh
bHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCksIG1pbnVzT25lKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlz
OiBTdWIodmFsdWUsIGNvbnN0YW50KQogICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQWRk
KHZhbHVlLCAtY29uc3RhbnQpCiAgICAgICAgICAgICAgICAgaWYgKFZhbHVlKiBuZWdhdGVkQ29u
c3RhbnQgPSBtX3ZhbHVlLT5jaGlsZCgxKS0+bmVnQ29uc3RhbnQobV9wcm9jKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggYTZhMTU4
ODY3M2E0MjUxYjMxNGY0MGI2NzFlOGRjMzRlYTJkNTQ2MS4uOWNhNjJkYTI1NzE0YzQ1NzQ0NzVm
MzY1NGZmOWVmNjdiMGY4NTQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpck9wY29kZS5vcGNvZGVzCkBAIC0zODEsNiArMzgxLDEyIEBAIGFybTY0OiBCaXRGaWVsZElu
c2VydDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKIGFybTY0OiBCaXRGaWVsZElu
c2VydDY0IFU6Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAogICAgIFRtcCwgSW1tLCBJbW0s
IFRtcAogCithcm02NDogQ2xlYXJCaXQzMiBVOkc6MzIsIFVaRDpHOjMyLCBVOkc6MzIKKyAgICBU
bXAsIFRtcCwgVG1wCisKK2FybTY0OiBDbGVhckJpdDY0IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0
CisgICAgVG1wLCBUbXAsIFRtcAorCiA2NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAog
ICAgIFRtcCwgVG1wLCBUbXAKICAgICBhcm02NDogQml0SW1tNjQsIFRtcCwgVG1wCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzLmgKaW5kZXggNDRjMGE1MGJhMTEyOTBjZTYxZTQ4ZDY4M2E0MWNlZDFi
YmI1YzI1Ni4uOWY4NjVjNTZhOThjMGRlM2NiMmJmNTdhOTVhNzUzYWYxNzIzNjZkMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuaApAQCAtNDMwLDYgKzQzMCw4IEBAIHZvaWQgdGVzdFViZml6
NjRTaGlmdEFuZCgpOwogdm9pZCB0ZXN0VWJmaXo2NEFuZFNoaWZ0KCk7CiB2b2lkIHRlc3RCaXRG
aWVsZEluc2VydDMyKCk7CiB2b2lkIHRlc3RCaXRGaWVsZEluc2VydDY0KCk7Cit2b2lkIHRlc3RD
bGVhckJpdDMyKCk7Cit2b2lkIHRlc3RDbGVhckJpdDY0KCk7CiB2b2lkIHRlc3RCaXRBbmRaZXJv
U2hpZnRSaWdodEFyZ0ltbU1hc2szMigpOwogdm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRB
cmdJbW1NYXNrNjQoKTsKIHZvaWQgdGVzdEJhc2ljU2VsZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiM18yLmNwcAppbmRleCA5NGE3ZTM0Y2M3ZDgwOWRjOTJkMGRjZDQ3Mjk0ZWZiYjAz
MTdmY2VkLi40NjU5YTRjZTQ0NTQ2NGEyOGYxZWFjYjVmZTRjMzYyZDhhZmYzMjg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKQEAgLTQxODQsNiArNDE4NCwxMzggQEAgc3Rh
dGljIHZvaWQgdGVzdEJpdE9ySW1tQXJnMzIoaW50IGEsIGludCBiKQogICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48aW50Pihwcm9jLCBiKSA9PSAoYSB8IGIpKTsKIH0KIAordm9pZCB0ZXN0Q2xlYXJC
aXQzMigpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIp
CisgICAgICAgIHJldHVybjsKKyAgICB1aW50MzJfdCBkID0gMHhmZmZmZmZmZjsKKyAgICBWZWN0
b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDEsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQ
YXR0ZXJuOiBkID0gZCAmICgtKDEgPDwgYW1vdW50KSAtIDEpCisgICAgYXV0byB0ZXN0MSA9IFsm
XSAodWludDMyX3QgZCwgdWludDMyX3QgYW1vdW50KSAtPiB1aW50MzJfdCB7CisgICAgICAgIFBy
b2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworCisgICAgICAgIFZhbHVlKiBkVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7CisgICAgICAgIFZhbHVlKiBhbW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBjb25zdDEgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisKKyAgICAgICAgVmFsdWUqIG5lZ1Zh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIE5lZywgT3Jp
Z2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9y
aWdpbigpLCBjb25zdDEsIGFtbW91bnRWYWx1ZSkpOworICAgICAgICBWYWx1ZSogc3ViVmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5lZ1ZhbHVlLCBj
b25zdDEpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgZFZhbHVlLCBzdWJWYWx1ZSkpOworCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgp
KQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJiaWMiKTsKKyAgICAg
ICAgcmV0dXJuIGludm9rZTx1aW50MzJfdD4oKmNvZGUsIGQsIGFtb3VudCk7CisgICAgfTsKKwor
ICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IGQgJiAoKDEgPDwgYW1vdW50KSBeIC0xKQorICAgIGF1
dG8gdGVzdDIgPSBbJl0gKHVpbnQzMl90IGQsIHVpbnQzMl90IGFtb3VudCkgLT4gdWludDMyX3Qg
eworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogZFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogYW1tb3VudFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogb25lVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisgICAgICAg
IFZhbHVlKiBtaW51c09uZVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIC0xKTsKKworICAgICAgICBWYWx1ZSogeG9yVmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwgCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIG9uZVZh
bHVlLCBhbW1vdW50VmFsdWUpLCAKKyAgICAgICAgICAgIG1pbnVzT25lVmFsdWUpOworICAgICAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
QW5kLCBPcmlnaW4oKSwgZFZhbHVlLCB4b3JWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJiaWMiKTsKKyAgICAgICAgcmV0dXJuIGludm9r
ZTx1aW50MzJfdD4oKmNvZGUsIGQsIGFtb3VudCk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBh
bW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgIENIRUNLKHRlc3QxKGQsIGFtb3VudCkgPT0gKGQg
JiAoLSgxVSA8PCBhbW91bnQpIC0gMVUpKSk7CisgICAgICAgIENIRUNLKHRlc3QyKGQsIGFtb3Vu
dCkgPT0gKGQgJiAoKDFVIDw8IGFtb3VudCkgXiAweGZmZmZmZmZmVSkpKTsKKyAgICB9Cit9CisK
K3ZvaWQgdGVzdENsZWFyQml0NjQoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRC
M09wdExldmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisgICAgdWludDY0X3QgZCA9IDB4ZmZm
ZmZmZmZmZmZmZmZmZjsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDEsIDE3
LCAzMCwgNjIgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IGQgJiAoLSgxIDw8IGFtb3Vu
dCkgLSAxKQorICAgIGF1dG8gdGVzdDEgPSBbJl0gKHVpbnQ2NF90IGQsIHVpbnQzMl90IGFtb3Vu
dCkgLT4gdWludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogZFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogYW1tb3VudFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogY29uc3QxID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOworCisgICAgICAgIFZh
bHVlKiBuZWdWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBOZWcsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU2hsLCBPcmlnaW4oKSwgY29uc3QxLCBhbW1vdW50VmFsdWUpKTsKKyAgICAgICAgVmFsdWUq
IHN1YlZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBu
ZWdWYWx1ZSwgY29uc3QxKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGRWYWx1ZSwgc3ViVmFsdWUp
KTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYg
KGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAiYmlj
Iik7CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDY0X3Q+KCpjb2RlLCBkLCBhbW91bnQpOwor
ICAgIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBkICYgKCgxIDw8IGFtb3VudCkgXiAt
MSkKKyAgICBhdXRvIHRlc3QyID0gWyZdICh1aW50NjRfdCBkLCB1aW50MzJfdCBhbW91bnQpIC0+
IHVpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGRWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGFtbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIG9uZVZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOworICAgICAgICBWYWx1ZSog
bWludXNPbmVWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCAtMSk7CisKKyAgICAgICAgVmFsdWUqIHhvclZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksIAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBvbmVWYWx1ZSwgYW1t
b3VudFZhbHVlKSwgCisgICAgICAgICAgICBtaW51c09uZVZhbHVlKTsKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3Jp
Z2luKCksIGRWYWx1ZSwgeG9yVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKCpjb2RlLCAiYmljIik7CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDY0
X3Q+KCpjb2RlLCBkLCBhbW91bnQpOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gYW1vdW50IDog
YW1vdW50cykgeworICAgICAgICBDSEVDSyh0ZXN0MShkLCBhbW91bnQpID09IChkICYgKC0oMVVM
TCA8PCBhbW91bnQpIC0gMVVMTCkpKTsKKyAgICAgICAgQ0hFQ0sodGVzdDIoZCwgYW1vdW50KSA9
PSAoZCAmICgoMVVMTCA8PCBhbW91bnQpIF4gMHhmZmZmZmZmZmZmZmZmZmZmVUxMKSkpOworICAg
IH0KK30KKwogdm9pZCBhZGRCaXRUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0
cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpCiB7CiAgICAgUlVOKHRlc3RVYmZ4MzJTaGlm
dEFuZCgpKTsKQEAgLTQyMDAsNiArNDMzMiw4IEBAIHZvaWQgYWRkQml0VGVzdHMoY29uc3QgY2hh
ciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tzKQogICAg
IFJVTih0ZXN0VWJmaXo2NEFuZFNoaWZ0KCkpOwogICAgIFJVTih0ZXN0Qml0RmllbGRJbnNlcnQz
MigpKTsKICAgICBSVU4odGVzdEJpdEZpZWxkSW5zZXJ0NjQoKSk7CisgICAgUlVOKHRlc3RDbGVh
ckJpdDMyKCkpOworICAgIFJVTih0ZXN0Q2xlYXJCaXQ2NCgpKTsKICAgICBSVU4odGVzdEJpdEFu
ZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazMyKCkpOwogICAgIFJVTih0ZXN0Qml0QW5kWmVyb1No
aWZ0UmlnaHRBcmdJbW1NYXNrNjQoKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQzLCA0Mykp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432278</attachid>
            <date>2021-06-25 09:13:49 -0700</date>
            <delta_ts>2021-06-25 12:48:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227202-20210625111347.patch</filename>
            <type>text/plain</type>
            <size>17244</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
M2RjMjc2YWQxOWE3YTc3NTE4MWFlMzdkMThhYTkzNWYxMGQ2ZGZkLi5mMTY1ODc3NDI0N2FiMDNk
M2M5MGMwYTExMGIwMTU5MTQ4MjA5MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAyMS0wNi0yNCAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBCSUMgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAg
IGJpYyBSZCwgUm4sIFJtLCBzaGlmdCwgYW1vdW50CisKKyAgICAgICAgVGhlIEJJQyAoQml0IENs
ZWFyKSBpbnN0cnVjdGlvbiBwZXJmb3JtcyBhbiBBTkQgb3BlcmF0aW9uIG9uIHRoZSBiaXRzIGlu
IFJuIHdpdGggdGhlIAorICAgICAgICBjb21wbGVtZW50cyBvZiB0aGUgY29ycmVzcG9uZGluZyBi
aXRzIGluIHRoZSB2YWx1ZSBvZiBSbS4gVGhlIGluc3RydWN0aW9uIHNlbGVjdG9yIGNhbiAKKyAg
ICAgICAgdXRpbGl6ZSB0aGlzIHRvIGxvd2VyaW5nIGNlcnRhaW4gcGF0dGVybnMgaW4gQjMgSVIg
YmVmb3JlIGZ1cnRoZXIgQWlyIG9wdGltaXphdGlvbi4gCisKKyAgICAgICAgT25lIG9mIHRoZSB1
c2VmdWwgZm9ybSBjb3VsZCBiZToKKworICAgICAgICAgICAgY2xlYXJCaXQgYW1vdW50LCBkZXN0
CisKKyAgICAgICAgd2hpY2ggaXMgdXNlZCB0byBjbGVhciBvbmUgc3BlY2lmaWMgYml0IGluIHRo
ZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4gVGhlIGVxdWl2YWxlbnQgCisgICAgICAgIHBhdHRlcm5z
IGFyZToKKworICAgICAgICBQYXR0ZXJuIDE6CisgICAgICAgICAgICBkID0gZCAmICgtKDEgPDwg
YW1vdW50KSAtIDEpCisKKyAgICAgICAgUGF0dGVybiAyOgorICAgICAgICAgICAgZCA9IGQgJiAo
KDEgPDwgYW1vdW50KSBeIC0xKQorCisgICAgICAgIEluIG9yZGVyIHRvIGdldCBiZW5lZml0cyBm
b3IgY29tcGxlbWVudCBvcGVyYXRpb24sIGN1cnJlbnQgaW5zdHJ1Y3Rpb24gc2VsZWN0b3IgdXNl
cyAKKyAgICAgICAgbXZuIGluc3RydWN0aW9uIHRvIGxvd2VyIHRoZSBwYXR0ZXJuIHZhbHVlIF4g
LTEuIFRoZW4sIGEgbmV3IHN0cmVuZ3RoIHJlZHVjdGlvbiBydWxlIGlzIAorICAgICAgICBpbnRy
b2R1Y2VkOgorICAgICAgICAgICAgVHVybiB0aGlzOiAtdmFsdWUgLSAxIAorICAgICAgICAgICAg
SW50byB0aGlzOiB2YWx1ZSBeIC0xCisKKyAgICAgICAgU28sIGQgPSBkICYgKCgxIDw8IGFtb3Vu
dCkgXiAtMSkgaXMgc2VsZWN0ZWQgYXMgdGhlIGNhbm9uaWNhbCBmb3JtLgorCisgICAgICAgIEdp
dmVuIEIzIElSOgorICAgICAgICBJbnQgQDAgPSBBcmd1bWVudFJlZygleDApCisgICAgICAgIElu
dCBAMSA9IEFyZ3VtZW50UmVnKCV4MSkKKyAgICAgICAgSW50IEAyID0gVHJ1bmMoYkAxKQorICAg
ICAgICBJbnQgQDMgPSBDb25zdCgxKQorICAgICAgICBJbnQgQDQgPSBDb25zdCgtMSkKKyAgICAg
ICAgSW50IEA1ID0gU2hsKCQxKEAzKSwgQDIpCisgICAgICAgIEludCBANiA9IEJpdFhvcihANSwg
JC0xKEA0KSkKKyAgICAgICAgSW50IEA3ID0gQml0QW5kKEAwLCBANikKKyAgICAgICAgVm9pZEA4
ID0gUmV0dXJuKEA3LCBUZXJtaW5hbCkKKworICAgICAgICBCZWZvcmUgQWRkaW5nIEJGSToKKyAg
ICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZSAgICAkMSwgJXgyLCAgICAg
IEAzCisgICAgICAgIExzaGlmdCAleDIsICV4MSwgJXgxLCBANQorICAgICAgICBOb3QgICAgJXgx
LCAleDEsICAgICAgQDYKKyAgICAgICAgQW5kICAgICV4MCwgJXgxLCAleDAsIEA3CisgICAgICAg
IFJldCAgICAleDAsICAgICAgICAgICBAOAorCisgICAgICAgIEFmdGVyIEFkZGluZyBCRkk6Cisg
ICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAgIENsZWFyQml0ICV4MSwgJXgwLCAl
eDIsIEA3CisgICAgICAgIFJldCAgICAgICV4MCwgICAgICAgICAgIEA4CisKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpjbGVhckJpdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6Y2xlYXJCaXRzMzJXaXRoTWFzayk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmNsZWFyQml0NjQpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAg
ICAgIChKU0M6OnRlc3RDbGVhckJpdDMyKToKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3Bw
OgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL2Fpci9B
aXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90
ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0Q2xlYXJCaXQzMik6CisgICAgICAgICh0ZXN0Q2xl
YXJCaXQ2NCk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisKIDIwMjEtMDYtMjQgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBsZHAgYW5kIHN0cCBtb3JlIGZv
ciBzYXZpbmcgLyByZXN0b3JpbmcgcmVnaXN0ZXJzIG9uIEFSTTY0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCAw
NjliZDQ2YjM5NDFjMGE4NmU4ZTNhMzY5OTQ0YWE0YTkwYmMwNzVkLi5kMmU2Yzg4ODQ2NDI5ZTEx
ZTc3NWIyMjhiZWQ3YmIxMWJjY2FjM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNDY4LDcgKzQ2OCwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZF88NjQ+KGRlc3QsIGRlc3QsIGRhdGFU
ZW1wUmVnaXN0ZXIpOwogICAgIH0KIAotICAgIHZvaWQgY2xlYXJCaXQ2NChSZWdpc3RlcklEIGJp
dFRvQ2xlYXIsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoRm9yTWFzayA9IElu
dmFsaWRHUFJSZWcpCisgICAgZW51bSBjbGFzcyBDbGVhckJpdHNBdHRyaWJ1dGVzIHsKKyAgICAg
ICAgT0tUb0Nsb2JiZXJNYXNrLAorICAgICAgICBNdXN0UHJlc2VydmVNYXNrCisgICAgfTsKKwor
ICAgIHZvaWQgY2xlYXJCaXQzMihSZWdpc3RlcklEIGJpdFRvQ2xlYXIsIFJlZ2lzdGVySUQgZGVz
dCwgUmVnaXN0ZXJJRCBzY3JhdGNoRm9yTWFzayA9IEludmFsaWRHUFJSZWcpCiAgICAgewogICAg
ICAgICBpZiAoc2NyYXRjaEZvck1hc2sgPT0gSW52YWxpZEdQUlJlZykKICAgICAgICAgICAgIHNj
cmF0Y2hGb3JNYXNrID0gc2NyYXRjaFJlZ2lzdGVyKCk7CkBAIC00NzgsMTAgKzQ4MywyNSBAQCBw
dWJsaWM6CiAgICAgICAgIGNsZWFyQml0czY0V2l0aE1hc2soc2NyYXRjaEZvck1hc2ssIGRlc3Qp
OwogICAgIH0KIAotICAgIGVudW0gY2xhc3MgQ2xlYXJCaXRzQXR0cmlidXRlcyB7Ci0gICAgICAg
IE9LVG9DbG9iYmVyTWFzaywKLSAgICAgICAgTXVzdFByZXNlcnZlTWFzawotICAgIH07CisgICAg
dm9pZCBjbGVhckJpdHMzMldpdGhNYXNrKFJlZ2lzdGVySUQgbWFzaywgUmVnaXN0ZXJJRCBkZXN0
LCBDbGVhckJpdHNBdHRyaWJ1dGVzID0gQ2xlYXJCaXRzQXR0cmlidXRlczo6T0tUb0Nsb2JiZXJN
YXNrKQorICAgIHsKKyAgICAgICAgY2xlYXJCaXRzMzJXaXRoTWFzayhkZXN0LCBtYXNrLCBkZXN0
KTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQml0czMyV2l0aE1hc2soUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgbWFzaywgUmVnaXN0ZXJJRCBkZXN0LCBDbGVhckJpdHNBdHRyaWJ1dGVzID0g
Q2xlYXJCaXRzQXR0cmlidXRlczo6T0tUb0Nsb2JiZXJNYXNrKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYmljPDMyPihkZXN0LCBzcmMsIG1hc2spOworICAgIH0KKworICAgIHZvaWQgY2xl
YXJCaXQ2NChSZWdpc3RlcklEIGJpdFRvQ2xlYXIsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJ
RCBzY3JhdGNoRm9yTWFzayA9IEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBpZiAoc2Ny
YXRjaEZvck1hc2sgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHNjcmF0Y2hGb3JNYXNr
ID0gc2NyYXRjaFJlZ2lzdGVyKCk7CisKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHNj
cmF0Y2hGb3JNYXNrKTsKKyAgICAgICAgbHNoaWZ0NjQoYml0VG9DbGVhciwgc2NyYXRjaEZvck1h
c2spOworICAgICAgICBjbGVhckJpdHM2NFdpdGhNYXNrKHNjcmF0Y2hGb3JNYXNrLCBkZXN0KTsK
KyAgICB9CiAKICAgICB2b2lkIGNsZWFyQml0czY0V2l0aE1hc2soUmVnaXN0ZXJJRCBtYXNrLCBS
ZWdpc3RlcklEIGRlc3QsIENsZWFyQml0c0F0dHJpYnV0ZXMgPSBDbGVhckJpdHNBdHRyaWJ1dGVz
OjpPS1RvQ2xvYmJlck1hc2spCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL3Rlc3RtYXNtLmNwcAppbmRleCBjOWNmOTY4YjdiNDVmNDIzODdlZGM3ZmQ2NjkzZjA5ZDUz
ZWU2YTUwLi4yYTFmNjkxOGZlODI4MjEyZDBlN2Q4ZjVhOWJiMTliNTIyNjlkNDA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtOTA0LDYgKzkw
NCwzMyBAQCB2b2lkIHRlc3RNdWwzMldpdGhJbW1lZGlhdGVzKCkKIH0KIAogI2lmIENQVShBUk02
NCkKK3ZvaWQgdGVzdENsZWFyQml0MzIoKQoreworICAgIGF1dG8gdGVzdCA9IGNvbXBpbGUoW10g
KENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7
CisKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjI7Cisg
ICAgICAgIGppdC5jbGVhckJpdDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgY29uc3Rl
eHByIHVuc2lnbmVkIGJpdHNJbldvcmQgPSBzaXplb2YodWludDMyX3QpICogODsKKworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBiaXRzSW5Xb3JkOyArK2kpIHsKKyAgICAgICAgdWludDMy
X3Qgd29yZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKKyAgICAgICAg
Y29uc3RleHByIHVpbnQzMl90IG9uZSA9IDE7CisgICAgICAgIENIRUNLX0VRKGludm9rZTx1aW50
MzJfdD4odGVzdCwgd29yZCwgaSksICh3b3JkICYgfihvbmUgPDwgaSkpKTsKKyAgICB9CisKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYml0c0luV29yZDsgKytpKSB7CisgICAgICAgIHVp
bnQzMl90IHdvcmQgPSAwOworICAgICAgICBDSEVDS19FUShpbnZva2U8dWludDMyX3Q+KHRlc3Qs
IHdvcmQsIGkpLCAwKTsKKyAgICB9Cit9CisKIHZvaWQgdGVzdE11bDMyU2lnbkV4dGVuZCgpCiB7
CiAgICAgZm9yIChhdXRvIHZhbHVlIDogaW50MzJPcGVyYW5kcygpKSB7CkBAIC0zNDIzLDYgKzM0
NTAsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdURl9JR05PUkVTX1RIUkVBRF9T
QUZFVFlfQU5BTFlTSVMKICNlbmRpZgogCiAjaWYgQ1BVKEFSTTY0KQorICAgIFJVTih0ZXN0Q2xl
YXJCaXQzMigpKTsKICAgICBSVU4odGVzdExvYWRTdG9yZVBhaXI2NEludDY0KCkpOwogICAgIFJV
Tih0ZXN0TG9hZFN0b3JlUGFpcjY0RG91YmxlKCkpOwogICAgIFJVTih0ZXN0TXVsMzJTaWduRXh0
ZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fp
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCA4
NDA0MGZlZjRhOTZhNzU5MTM3YmM2NmVkZTQ1MThmNzkyMzFhYWJkLi44Y2FkNDUyMTE1ZmRmZWZl
ZmRhNGEzYzQ0MWU1YjI1ZTViNjc2NzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcApAQCAtMjc5Miw2ICsyNzkyLDM2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBpZiAodHJ5QXBwZW5kVUJGWCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAg
ICAgICAgLy8gQ2xlYXJCaXQgUGF0dGVybjogZCA9IGQgJiAoKDEgPDwgYW1vdW50KSBeIC0xKQor
ICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRDbGVhckJpdCA9IFsmXSAoVmFsdWUqIGxlZnQsIFZh
bHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2Rl
ID0gb3Bjb2RlRm9yVHlwZShDbGVhckJpdDMyLCBDbGVhckJpdDY0LCBtX3ZhbHVlLT50eXBlKCkp
OworICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJn
OjpUbXAsIEFyZzo6VG1wKSkgCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBpZiAocmlnaHQtPm9wY29kZSgpICE9IEJpdFhvciB8fCAhY2FuQmVJbnRl
cm5hbChyaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICBpZiAocmlnaHQtPmNoaWxkKDApLT5vcGNvZGUoKSAhPSBTaGwgfHwgIWNhbkJlSW50
ZXJuYWwocmlnaHQtPmNoaWxkKDApKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgICAgICAgICAgVmFsdWUqIGRWYWx1ZSA9IGxlZnQ7CisgICAgICAgICAgICAg
ICAgVmFsdWUqIG9uZVZhbHVlID0gcmlnaHQtPmNoaWxkKDApLT5jaGlsZCgwKTsKKyAgICAgICAg
ICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByaWdodC0+Y2hpbGQoMCktPmNoaWxkKDEpOwor
ICAgICAgICAgICAgICAgIFZhbHVlKiBuZWdPbmUgPSByaWdodC0+Y2hpbGQoMSk7CisgICAgICAg
ICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKGRWYWx1ZSkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoIW9uZVZhbHVlLT5oYXNJbnQo
KSB8fCAhb25lVmFsdWUtPmlzSW50KDEpIHx8ICFuZWdPbmUtPmhhc0ludCgpIHx8ICFuZWdPbmUt
PmlzSW50KC0xKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
ICAgICAgICAgVG1wIHJlc3VsdCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBhcHBl
bmQocmVsYXhlZE1vdmVGb3JUeXBlKG1fdmFsdWUtPnR5cGUoKSksIHRtcChkVmFsdWUpLCByZXN1
bHQpOworICAgICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUsIHRtcChhbW91bnRWYWx1ZSksIHJl
c3VsdCwgbV9jb2RlLm5ld1RtcChHUCkpOworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFs
KHJpZ2h0LT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQp
OworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAg
ICAgICAgaWYgKHRyeUFwcGVuZENsZWFyQml0KGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRDbGVh
ckJpdChyaWdodCwgbGVmdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAg
ICBhcHBlbmRCaW5PcDxBbmQzMiwgQW5kNjQsIEFuZERvdWJsZSwgQW5kRmxvYXQsIENvbW11dGF0
aXZlPihsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAppbmRleCAzZGRhZGU3
NzA4ZWI0YzdiNDJjNTdiYmEwNjI5YzZlOWZkZjY1OGZkLi5hNmI3MDM4MWYzNGE5NTViZDk0YTBm
ZjgzM2EzMTQ1Y2JlOTU4ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVk
dWNlU3RyZW5ndGguY3BwCkBAIC02MjcsNiArNjI3LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0ludGVnZXIoKSkgeworICAgICAgICAg
ICAgICAgIC8vIFR1cm4gdGhpczogU3ViKE5lZyh2YWx1ZSksIDEpCisgICAgICAgICAgICAgICAg
Ly8gSW50byB0aGlzOiBCaXRYb3IodmFsdWUsIC0xKQorICAgICAgICAgICAgICAgIGlmIChtX3Zh
bHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gTmVnICYmIG1fdmFsdWUtPmNoaWxkKDEpLT5pc0lu
dCgxKSkgeworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbWludXNPbmU7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQz
MikKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbnVzT25lID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0PENvbnN0MzJWYWx1ZT4obV9pbmRleCwgbV92YWx1ZS0+b3JpZ2luKCksIC0xKTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbWludXNPbmUgPSBt
X2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3Q2NFZhbHVlPihtX2luZGV4LCBtX3ZhbHVlLT5vcmln
aW4oKSwgLTEpOworICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aE5ldzxWYWx1ZT4oQml0
WG9yLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApLCBtaW51
c09uZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU3ViKHZhbHVlLCBjb25zdGFudCkKICAgICAg
ICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEFkZCh2YWx1ZSwgLWNvbnN0YW50KQogICAgICAgICAg
ICAgICAgIGlmIChWYWx1ZSogbmVnYXRlZENvbnN0YW50ID0gbV92YWx1ZS0+Y2hpbGQoMSktPm5l
Z0NvbnN0YW50KG1fcHJvYykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ck9wY29kZS5vcGNvZGVzCmluZGV4IGE2YTE1ODg2NzNhNDI1MWIzMTRmNDBiNjcxZThkYzM0ZWEy
ZDU0NjEuLjljYTYyZGEyNTcxNGM0NTc0NDc1ZjM2NTRmZjllZjY3YjBmODU0NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAtMzgxLDYg
KzM4MSwxMiBAQCBhcm02NDogQml0RmllbGRJbnNlcnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMy
LCBaRDpHOjMyCiBhcm02NDogQml0RmllbGRJbnNlcnQ2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMy
LCBEOkc6NjQKICAgICBUbXAsIEltbSwgSW1tLCBUbXAKIAorYXJtNjQ6IENsZWFyQml0MzIgVTpH
OjMyLCBVWkQ6RzozMiwgVTpHOjMyCisgICAgVG1wLCBUbXAsIFRtcAorCithcm02NDogQ2xlYXJC
aXQ2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NAorICAgIFRtcCwgVG1wLCBUbXAKKwogNjQ6IEFu
ZDY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCiAgICAgYXJtNjQ6
IEJpdEltbTY0LCBUbXAsIFRtcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDQ0YzBh
NTBiYTExMjkwY2U2MWU0OGQ2ODNhNDFjZWQxYmJiNWMyNTYuLjlmODY1YzU2YTk4YzBkZTNjYjJi
ZjU3YTk1YTc1M2FmMTcyMzY2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTQz
MCw2ICs0MzAsOCBAQCB2b2lkIHRlc3RVYmZpejY0U2hpZnRBbmQoKTsKIHZvaWQgdGVzdFViZml6
NjRBbmRTaGlmdCgpOwogdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQzMigpOwogdm9pZCB0ZXN0Qml0
RmllbGRJbnNlcnQ2NCgpOwordm9pZCB0ZXN0Q2xlYXJCaXQzMigpOwordm9pZCB0ZXN0Q2xlYXJC
aXQ2NCgpOwogdm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrMzIoKTsKIHZv
aWQgdGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazY0KCk7CiB2b2lkIHRlc3RCYXNp
Y1NlbGVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXggOTRhN2Uz
NGNjN2Q4MDlkYzkyZDBkY2Q0NzI5NGVmYmIwMzE3ZmNlZC4uNDY1OWE0Y2U0NDU0NjRhMjhmMWVh
Y2I1ZmU0YzM2MmQ4YWZmMzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3Bw
CkBAIC00MTg0LDYgKzQxODQsMTM4IEBAIHN0YXRpYyB2b2lkIHRlc3RCaXRPckltbUFyZzMyKGlu
dCBhLCBpbnQgYikKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYikgPT0gKGEg
fCBiKSk7CiB9CiAKK3ZvaWQgdGVzdENsZWFyQml0MzIoKQoreworICAgIGlmIChKU0M6Ok9wdGlv
bnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisgICAgdWludDMy
X3QgZCA9IDB4ZmZmZmZmZmY7CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRzID0geyAwLCAx
LCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IGQgJiAoLSgxIDw8IGFtb3Vu
dCkgLSAxKQorICAgIGF1dG8gdGVzdDEgPSBbJl0gKHVpbnQzMl90IGQsIHVpbnQzMl90IGFtb3Vu
dCkgLT4gdWludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogZFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogYW1tb3Vu
dFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5j
LCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1
ZSogY29uc3QxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDEpOworCisgICAgICAgIFZhbHVlKiBuZWdWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBOZWcsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgY29uc3QxLCBhbW1vdW50VmFsdWUp
KTsKKyAgICAgICAgVmFsdWUqIHN1YlZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBTdWIsIE9yaWdpbigpLCBuZWdWYWx1ZSwgY29uc3QxKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCks
IGRWYWx1ZSwgc3ViVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3Ry
dWN0aW9uKCpjb2RlLCAiYmljIik7CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDMyX3Q+KCpj
b2RlLCBkLCBhbW91bnQpOworICAgIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBkICYg
KCgxIDw8IGFtb3VudCkgXiAtMSkKKyAgICBhdXRvIHRlc3QyID0gWyZdICh1aW50MzJfdCBkLCB1
aW50MzJfdCBhbW91bnQpIC0+IHVpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFs
dWUqIGRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAg
VmFsdWUqIGFtbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsK
KyAgICAgICAgVmFsdWUqIG9uZVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDEpOworICAgICAgICBWYWx1ZSogbWludXNPbmVWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7CisKKyAgICAgICAg
VmFsdWUqIHhvclZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdFhvciwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBTaGwsIE9yaWdpbigpLCBvbmVWYWx1ZSwgYW1tb3VudFZhbHVlKSwgCisgICAgICAg
ICAgICBtaW51c09uZVZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGRWYWx1ZSwgeG9yVmFs
dWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAg
aWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAi
YmljIik7CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDMyX3Q+KCpjb2RlLCBkLCBhbW91bnQp
OworICAgIH07CisKKyAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICBD
SEVDSyh0ZXN0MShkLCBhbW91bnQpID09IChkICYgKC0oMVUgPDwgYW1vdW50KSAtIDFVKSkpOwor
ICAgICAgICBDSEVDSyh0ZXN0MihkLCBhbW91bnQpID09IChkICYgKCgxVSA8PCBhbW91bnQpIF4g
MHhmZmZmZmZmZlUpKSk7CisgICAgfQorfQorCit2b2lkIHRlc3RDbGVhckJpdDY0KCkKK3sKKyAg
ICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0
dXJuOworICAgIHVpbnQ2NF90IGQgPSAweGZmZmZmZmZmZmZmZmZmZmY7CisgICAgVmVjdG9yPHVp
bnQzMl90PiBhbW91bnRzID0geyAwLCAxLCAxNywgMzAsIDYyIH07CisKKyAgICAvLyBUZXN0IFBh
dHRlcm46IGQgPSBkICYgKC0oMSA8PCBhbW91bnQpIC0gMSkKKyAgICBhdXRvIHRlc3QxID0gWyZd
ICh1aW50NjRfdCBkLCB1aW50MzJfdCBhbW91bnQpIC0+IHVpbnQ2NF90IHsKKyAgICAgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisKKyAgICAgICAgVmFsdWUqIGRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFs
dWUqIGFtbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAg
ICAgICAgVmFsdWUqIGNvbnN0MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAxKTsKKworICAgICAgICBWYWx1ZSogbmVnVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTmVnLCBPcmlnaW4oKSwgCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIGNvbnN0MSwgYW1t
b3VudFZhbHVlKSk7CisgICAgICAgIFZhbHVlKiBzdWJWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgbmVnVmFsdWUsIGNvbnN0MSk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQs
IE9yaWdpbigpLCBkVmFsdWUsIHN1YlZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJpYyIpOworICAgICAgICByZXR1cm4gaW52b2tlPHVp
bnQ2NF90PigqY29kZSwgZCwgYW1vdW50KTsKKyAgICB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJu
OiBkID0gZCAmICgoMSA8PCBhbW91bnQpIF4gLTEpCisgICAgYXV0byB0ZXN0MiA9IFsmXSAodWlu
dDY0X3QgZCwgdWludDMyX3QgYW1vdW50KSAtPiB1aW50NjRfdCB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisg
ICAgICAgIFZhbHVlKiBkVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBh
bW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAg
IFZhbHVlKiBvbmVWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9y
aWdpbigpLCAxKTsKKyAgICAgICAgVmFsdWUqIG1pbnVzT25lVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpOworCisgICAgICAgIFZhbHVlKiB4
b3JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRY
b3IsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
U2hsLCBPcmlnaW4oKSwgb25lVmFsdWUsIGFtbW91bnRWYWx1ZSksIAorICAgICAgICAgICAgbWlu
dXNPbmVWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBkVmFsdWUsIHhvclZhbHVlKSk7CisK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FS
TTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJpYyIpOwor
ICAgICAgICByZXR1cm4gaW52b2tlPHVpbnQ2NF90PigqY29kZSwgZCwgYW1vdW50KTsKKyAgICB9
OworCisgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgQ0hFQ0sodGVz
dDEoZCwgYW1vdW50KSA9PSAoZCAmICgtKDFVTEwgPDwgYW1vdW50KSAtIDFVTEwpKSk7CisgICAg
ICAgIENIRUNLKHRlc3QyKGQsIGFtb3VudCkgPT0gKGQgJiAoKDFVTEwgPDwgYW1vdW50KSBeIDB4
ZmZmZmZmZmZmZmZmZmZmZlVMTCkpKTsKKyAgICB9Cit9CisKIHZvaWQgYWRkQml0VGVzdHMoY29u
c3QgY2hhciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tz
KQogewogICAgIFJVTih0ZXN0VWJmeDMyU2hpZnRBbmQoKSk7CkBAIC00MjAwLDYgKzQzMzIsOCBA
QCB2b2lkIGFkZEJpdFRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNoYXJl
ZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKICAgICBSVU4odGVzdFViZml6NjRBbmRTaGlmdCgpKTsK
ICAgICBSVU4odGVzdEJpdEZpZWxkSW5zZXJ0MzIoKSk7CiAgICAgUlVOKHRlc3RCaXRGaWVsZElu
c2VydDY0KCkpOworICAgIFJVTih0ZXN0Q2xlYXJCaXQzMigpKTsKKyAgICBSVU4odGVzdENsZWFy
Qml0NjQoKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2szMigp
KTsKICAgICBSVU4odGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazY0KCkpOwogICAg
IFJVTih0ZXN0Qml0QW5kQXJncyg0MywgNDMpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432286</attachid>
            <date>2021-06-25 12:48:55 -0700</date>
            <delta_ts>2021-06-25 16:23:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227202-20210625144854.patch</filename>
            <type>text/plain</type>
            <size>14553</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
M2RjMjc2YWQxOWE3YTc3NTE4MWFlMzdkMThhYTkzNWYxMGQ2ZGZkLi4yMmI5NDc3MGYyYWVjYTVk
ZDVlNmNhZWExMzU4NmIyYjI1ZmJhM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAyMS0wNi0yNCAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBCSUMgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAg
IGJpYyBSZCwgUm4sIFJtCisKKyAgICAgICAgVGhlIEJJQyAoQml0IENsZWFyKSBpbnN0cnVjdGlv
biBwZXJmb3JtcyBhbiBBTkQgb3BlcmF0aW9uIG9uIHRoZSBiaXRzIGluIFJuIHdpdGggdGhlIAor
ICAgICAgICBjb21wbGVtZW50cyBvZiB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSB2YWx1
ZSBvZiBSbS4gVGhlIGluc3RydWN0aW9uIHNlbGVjdG9yIGNhbiAKKyAgICAgICAgdXRpbGl6ZSB0
aGlzIHRvIGxvd2VyaW5nIGNlcnRhaW4gcGF0dGVybnMgaW4gQjMgSVIgYmVmb3JlIGZ1cnRoZXIg
QWlyIG9wdGltaXphdGlvbi4gCisgICAgICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm5zIG9mIHRo
aXMgaW5zdHJ1Y3Rpb24gYXJlOgorCisgICAgICAgIFBhdHRlcm4gMToKKyAgICAgICAgICAgIGQg
PSBuICYgKC1tIC0gMSkKKworICAgICAgICBQYXR0ZXJuIDI6CisgICAgICAgICAgICBkID0gbiAm
IChtIF4gLTEpCisKKyAgICAgICAgSW4gb3JkZXIgdG8gZ2V0IGJlbmVmaXRzIGZvciBjb21wbGVt
ZW50IG9wZXJhdGlvbiwgY3VycmVudCBpbnN0cnVjdGlvbiBzZWxlY3RvciB1c2VzIAorICAgICAg
ICBtdm4gaW5zdHJ1Y3Rpb24gdG8gbG93ZXIgdGhlIHBhdHRlcm4gdmFsdWUgXiAtMS4gVGhlbiwg
YSBuZXcgc3RyZW5ndGggcmVkdWN0aW9uIHJ1bGUgaXMgCisgICAgICAgIGludHJvZHVjZWQ6Cisg
ICAgICAgICAgICBUdXJuIHRoaXM6IC12YWx1ZSAtIDEgCisgICAgICAgICAgICBJbnRvIHRoaXM6
IHZhbHVlIF4gLTEKKworICAgICAgICBTbywgZCA9IG4gJiAobSBeIC0xKSBpcyBzZWxlY3RlZCBh
cyB0aGUgY2Fub25pY2FsIGZvcm0uCisKKyAgICAgICAgR2l2ZW4gQjMgSVI6CisgICAgICAgIElu
dCBAMCA9IEFyZ3VtZW50UmVnKCV4MCkKKyAgICAgICAgSW50IEAxID0gQXJndW1lbnRSZWcoJXgx
KQorICAgICAgICBJbnQgQDIgPSAtMQorICAgICAgICBJbnQgQDMgPSBCaXRYb3IoQDEsIEAyKQor
ICAgICAgICBJbnQgQDQgPSBCaXRBbmQoQDAsIEAzKQorICAgICAgICBWb2lkQDUgPSBSZXR1cm4o
QDQsIFRlcm1pbmFsKQorCisgICAgICAgIEJlZm9yZSBBZGRpbmcgQklDOgorICAgICAgICAvLyBP
bGQgb3B0aW1pemVkIEFJUgorICAgICAgICBOb3QgJXgxLCAleDEsICAgICAgQDMKKyAgICAgICAg
QW5kICV4MCwgJXgxLCAleDAsIEA0CisgICAgICAgIFJldCAleDAsICAgICAgICAgICBANQorCisg
ICAgICAgIEFmdGVyIEFkZGluZyBCSUM6CisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisg
ICAgICAgIEJpYyAleDAsICV4MSwgJXgwLCBANAorICAgICAgICBSZXQgJXgwLCAgICAgICAgICAg
QDUKKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpYzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk02NDo6YmljNjQpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6
CisgICAgICAgIChKU0M6OnRlc3RCSUMzMik6CisgICAgICAgIChKU0M6OnRlc3RCSUMzMik6Cisg
ICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVu
Z3RoLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6CisgICAgICAgICog
YjMvdGVzdGIzLmg6CisgICAgICAgICogYjMvdGVzdGIzXzIuY3BwOgorICAgICAgICAodGVzdEJJ
QzMyKToKKyAgICAgICAgKHRlc3RCSUM2NCk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisKIDIw
MjEtMDYtMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBs
ZHAgYW5kIHN0cCBtb3JlIGZvciBzYXZpbmcgLyByZXN0b3JpbmcgcmVnaXN0ZXJzIG9uIEFSTTY0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAppbmRleCAwNjliZDQ2YjM5NDFjMGE4NmU4ZTNhMzY5OTQ0YWE0YTkwYmMwNzVk
Li4wMTYyNTczZmI5MDJhOTkxZmMzNTA1MDE2NTViNDcxZDhhYWIwODgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApA
QCAtNDEwLDYgKzQxMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnViZml6PDY0
PihkZXN0LCBzcmMsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKICAgICB9CiAKKyAgICB2
b2lkIGJpYzMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIG1hc2ssIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJpYzwzMj4oZGVzdCwgc3JjLCBtYXNrKTsK
KyAgICB9CisKKyAgICB2b2lkIGJpYzY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIG1hc2ss
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJpYzw2ND4oZGVz
dCwgc3JjLCBtYXNrKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDY0KFJlZ2lzdGVySUQgc3JjMSwg
UmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5hbmRfPDY0PihkZXN0LCBzcmMxLCBzcmMyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggYzljZjk2OGI3YjQ1ZjQyMzg3ZWRjN2ZkNjY5
M2YwOWQ1M2VlNmE1MC4uNzMyZGE0NjlhMjAxMzM0MGI3OWM3NTVjMjcxZWI1MGNiNTM4Yzg4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTkw
NCw2ICs5MDQsNDIgQEAgdm9pZCB0ZXN0TXVsMzJXaXRoSW1tZWRpYXRlcygpCiB9CiAKICNpZiBD
UFUoQVJNNjQpCit2b2lkIHRlc3RCSUMzMigpCit7CisgICAgYXV0byB0ZXN0ID0gY29tcGlsZShb
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKKworICAgICAgICBqaXQuYmljMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBlbWl0RnVu
Y3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisKKyAgICBm
b3IgKGF1dG8gdmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgdWludDMyX3Qgd29y
ZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPHVpbnQzMl90Pih0ZXN0LCB3b3JkLCB2YWx1ZSksICh3b3JkICYgfnZhbHVlKSk7
CisgICAgICAgIENIRUNLX0VRKGludm9rZTx1aW50MzJfdD4odGVzdCwgMFUsIHZhbHVlKSwgMFUp
OworICAgIH0KK30KKwordm9pZCB0ZXN0QklDNjQoKQoreworICAgIGF1dG8gdGVzdCA9IGNvbXBp
bGUoW10gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3Vl
KGppdCk7CisKKyAgICAgICAgaml0LmJpYzY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1p
dEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisg
ICAgZm9yIChhdXRvIHZhbHVlIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIHVpbnQ2NF90
IHdvcmQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTx1aW50NjRfdD4odGVzdCwgd29yZCwgdmFsdWUpLCAod29yZCAmIH52YWx1
ZSkpOworICAgICAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KHRlc3QsIDBVTEwsIHZhbHVl
KSwgMFVMTCk7CisgICAgfQorfQorCiB2b2lkIHRlc3RNdWwzMlNpZ25FeHRlbmQoKQogewogICAg
IGZvciAoYXV0byB2YWx1ZSA6IGludDMyT3BlcmFuZHMoKSkgewpAQCAtMzQyMyw2ICszNDU5LDgg
QEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZ
X0FOQUxZU0lTCiAjZW5kaWYKIAogI2lmIENQVShBUk02NCkKKyAgICBSVU4odGVzdEJJQzMyKCkp
OworICAgIFJVTih0ZXN0QklDNjQoKSk7CiAgICAgUlVOKHRlc3RMb2FkU3RvcmVQYWlyNjRJbnQ2
NCgpKTsKICAgICBSVU4odGVzdExvYWRTdG9yZVBhaXI2NERvdWJsZSgpKTsKICAgICBSVU4odGVz
dE11bDMyU2lnbkV4dGVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fp
ci5jcHAKaW5kZXggODQwNDBmZWY0YTk2YTc1OTEzN2JjNjZlZGU0NTE4Zjc5MjMxYWFiZC4uNzJm
ZWVkMTU1YWRiOWIzZGYyM2QyNDE0MmUzNTdkOGRiNWZmMzMyYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTI3OTIsNiArMjc5MiwyOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgaWYgKHRyeUFwcGVuZFVCRlgoKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKKyAgICAgICAgICAgIC8vIEJJQyBQYXR0ZXJuOiBkID0gbiAmIChtIF4gLTEpCisgICAg
ICAgICAgICBhdXRvIHRyeUFwcGVuZEJJQyA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdo
dCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2Rl
Rm9yVHlwZShCaWMzMiwgQmljNjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAg
aWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSAK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChy
aWdodC0+b3Bjb2RlKCkgIT0gQml0WG9yIHx8ICFjYW5CZUludGVybmFsKHJpZ2h0KSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgVmFsdWUqIG5W
YWx1ZSA9IGxlZnQ7CisgICAgICAgICAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJpZ2h0LT5jaGls
ZCgwKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbWludXNPbmUgPSByaWdodC0+Y2hpbGQoMSk7
CisgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKG5WYWx1ZSkgfHwgbV9sb2Nr
ZWQuY29udGFpbnMobVZhbHVlKSB8fCAhbWludXNPbmUtPmhhc0ludCgpIHx8ICFtaW51c09uZS0+
aXNJbnQoLTEpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
ICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoblZhbHVlKSwgdG1wKG1WYWx1ZSksIHRtcChtX3Zh
bHVlKSk7CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHRy
eUFwcGVuZEJJQyhsZWZ0LCByaWdodCkgfHwgdHJ5QXBwZW5kQklDKHJpZ2h0LCBsZWZ0KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBB
bmQ2NCwgQW5kRG91YmxlLCBBbmRGbG9hdCwgQ29tbXV0YXRpdmU+KGxlZnQsIHJpZ2h0KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IDNkZGFkZTc3MDhlYjRjN2I0MmM1N2JiYTA2Mjlj
NmU5ZmRmNjU4ZmQuLmE2YjcwMzgxZjM0YTk1NWJkOTRhMGZmODMzYTMxNDVjYmU5NThkZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTYy
Nyw2ICs2MjcsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KG1fdmFsdWUtPmlzSW50ZWdlcigpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBT
dWIoTmVnKHZhbHVlKSwgMSkKKyAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEJpdFhvcih2
YWx1ZSwgLTEpCisgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUo
KSA9PSBOZWcgJiYgbV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDEpKSB7CisgICAgICAgICAgICAg
ICAgICAgIFZhbHVlKiBtaW51c09uZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUt
PmNoaWxkKDApLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDMyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbWludXNPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3QzMlZhbHVlPihtX2lu
ZGV4LCBtX3ZhbHVlLT5vcmlnaW4oKSwgLTEpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICBtaW51c09uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxD
b25zdDY0VmFsdWU+KG1faW5kZXgsIG1fdmFsdWUtPm9yaWdpbigpLCAtMSk7CisgICAgICAgICAg
ICAgICAgICAgIHJlcGxhY2VXaXRoTmV3PFZhbHVlPihCaXRYb3IsIG1fdmFsdWUtPm9yaWdpbigp
LCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCksIG1pbnVzT25lKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgLy8gVHVy
biB0aGlzOiBTdWIodmFsdWUsIGNvbnN0YW50KQogICAgICAgICAgICAgICAgIC8vIEludG8gdGhp
czogQWRkKHZhbHVlLCAtY29uc3RhbnQpCiAgICAgICAgICAgICAgICAgaWYgKFZhbHVlKiBuZWdh
dGVkQ29uc3RhbnQgPSBtX3ZhbHVlLT5jaGlsZCgxKS0+bmVnQ29uc3RhbnQobV9wcm9jKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXgg
YTZhMTU4ODY3M2E0MjUxYjMxNGY0MGI2NzFlOGRjMzRlYTJkNTQ2MS4uMWU0NmZjYzMxOGYxMWIw
M2Q1OTU4MTEwYTA0ZjM3NGFlMWY0NTZhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBAIC0zODEsNiArMzgxLDEyIEBAIGFybTY0OiBCaXRG
aWVsZEluc2VydDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKIGFybTY0OiBCaXRG
aWVsZEluc2VydDY0IFU6Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAogICAgIFRtcCwgSW1t
LCBJbW0sIFRtcAogCithcm02NDogQmljMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBU
bXAsIFRtcCwgVG1wCisKK2FybTY0OiBCaWM2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAg
VG1wLCBUbXAsIFRtcAorCiA2NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRt
cCwgVG1wLCBUbXAKICAgICBhcm02NDogQml0SW1tNjQsIFRtcCwgVG1wCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzLmgKaW5kZXggNDRjMGE1MGJhMTEyOTBjZTYxZTQ4ZDY4M2E0MWNlZDFiYmI1YzI1
Ni4uMjNiODUwMzg1ZDA0OGM3NzQ2MGUxYjgxNjY0ZDgzNzM5MWQxNDA1NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjMuaApAQCAtNDMwLDYgKzQzMCw4IEBAIHZvaWQgdGVzdFViZml6NjRTaGlm
dEFuZCgpOwogdm9pZCB0ZXN0VWJmaXo2NEFuZFNoaWZ0KCk7CiB2b2lkIHRlc3RCaXRGaWVsZElu
c2VydDMyKCk7CiB2b2lkIHRlc3RCaXRGaWVsZEluc2VydDY0KCk7Cit2b2lkIHRlc3RCSUMzMigp
Owordm9pZCB0ZXN0QklDNjQoKTsKIHZvaWQgdGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1t
TWFzazMyKCk7CiB2b2lkIHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2s2NCgpOwog
dm9pZCB0ZXN0QmFzaWNTZWxlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3Bw
CmluZGV4IDk0YTdlMzRjYzdkODA5ZGM5MmQwZGNkNDcyOTRlZmJiMDMxN2ZjZWQuLjI3Yzc2OWI0
Yzg0YTRkMWVjYzMwZTdlY2YwMDg5ZWZmMTE1ZDQ2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiM18yLmNwcApAQCAtNDE4NCw2ICs0MTg0LDEyMiBAQCBzdGF0aWMgdm9pZCB0ZXN0Qml0
T3JJbW1BcmczMihpbnQgYSwgaW50IGIpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHBy
b2MsIGIpID09IChhIHwgYikpOwogfQogCit2b2lkIHRlc3RCSUMzMigpCit7CisgICAgaWYgKEpT
Qzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gJiAoLW0gLSAxKQorICAgIGF1dG8gdGVzdDEgPSBb
Jl0gKGludDMyX3QgbiwgaW50MzJfdCBtKSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
KTsKKyAgICAgICAgVmFsdWUqIGNvbnN0MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAxKTsKKworICAgICAgICBWYWx1ZSogbmVnVmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG1WYWx1ZSk7CisgICAgICAgIFZh
bHVlKiBzdWJWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4o
KSwgbmVnVmFsdWUsIGNvbnN0MSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBuVmFsdWUsIHN1YlZh
bHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAg
IGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwg
ImJpYyIpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAg
ICB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAmIChtIF4gLTEpCisgICAgYXV0byB0
ZXN0MiA9IFsmXSAoaW50MzJfdCBuLCBpbnQzMl90IG0pIC0+IGludDMyX3QgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogbWludXNPbmVWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7CisKKyAgICAgICAgVmFsdWUqIHhv
clZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBt
VmFsdWUsIG1pbnVzT25lVmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgblZhbHVlLCB4b3JW
YWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAg
ICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUs
ICJiaWMiKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQzMl90PigqY29kZSwgbiwgbSk7Cisg
ICAgfTsKKworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZv
ciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBDSEVDSyh0ZXN0MShu
LnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSAmICgtbS52YWx1ZSAtIDEpKSk7CisgICAgICAg
ICAgICBDSEVDSyh0ZXN0MihuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSAmIChtLnZhbHVl
IF4gLTEpKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEJJQzY0KCkKK3sKKyAg
ICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gZCA9IG4gJiAoLW0gLSAxKQorICAgIGF1
dG8gdGVzdDEgPSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBtKSAtPiBpbnQ2NF90IHsKKyAgICAg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAg
ICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGNvbnN0
MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKwor
ICAgICAgICBWYWx1ZSogbmVnVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5l
ZywgT3JpZ2luKCksIG1WYWx1ZSk7CisgICAgICAgIFZhbHVlKiBzdWJWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgbmVnVmFsdWUsIGNvbnN0MSk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXRBbmQsIE9yaWdpbigpLCBuVmFsdWUsIHN1YlZhbHVlKSk7CisKKyAgICAgICAgYXV0byBj
b2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJpYyIpOworICAgICAgICByZXR1cm4g
aW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgLy8gVGVzdCBQYXR0
ZXJuOiBkID0gbiAmIChtIF4gLTEpCisgICAgYXV0byB0ZXN0MiA9IFsmXSAoaW50NjRfdCBuLCBp
bnQ2NF90IG0pIC0+IGludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOworICAgICAgICBWYWx1ZSogbWludXNPbmVWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7CisKKyAgICAgICAgVmFsdWUqIHhvclZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBtVmFs
dWUsIG1pbnVzT25lVmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgblZhbHVlLCB4b3JWYWx1
ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBp
ZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJi
aWMiKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAg
fTsKKworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAo
YXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBDSEVDSyh0ZXN0MShuLnZh
bHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSAmICgtbS52YWx1ZSAtIDFMTCkpKTsKKyAgICAgICAg
ICAgIENIRUNLKHRlc3QyKG4udmFsdWUsIG0udmFsdWUpID09IChuLnZhbHVlICYgKG0udmFsdWUg
XiAtMUxMKSkpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIGFkZEJpdFRlc3RzKGNvbnN0
IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykK
IHsKICAgICBSVU4odGVzdFViZngzMlNoaWZ0QW5kKCkpOwpAQCAtNDIwMCw2ICs0MzE2LDggQEAg
dm9pZCBhZGRCaXRUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRU
YXNrPHZvaWQoKT4+PiYgdGFza3MpCiAgICAgUlVOKHRlc3RVYmZpejY0QW5kU2hpZnQoKSk7CiAg
ICAgUlVOKHRlc3RCaXRGaWVsZEluc2VydDMyKCkpOwogICAgIFJVTih0ZXN0Qml0RmllbGRJbnNl
cnQ2NCgpKTsKKyAgICBSVU4odGVzdEJJQzMyKCkpOworICAgIFJVTih0ZXN0QklDNjQoKSk7CiAg
ICAgUlVOKHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2szMigpKTsKICAgICBSVU4o
dGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazY0KCkpOwogICAgIFJVTih0ZXN0Qml0
QW5kQXJncyg0MywgNDMpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432307</attachid>
            <date>2021-06-25 16:23:26 -0700</date>
            <delta_ts>2021-06-26 14:49:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227202-20210625182325.patch</filename>
            <type>text/plain</type>
            <size>14553</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
M2RjMjc2YWQxOWE3YTc3NTE4MWFlMzdkMThhYTkzNWYxMGQ2ZGZkLi4yMmI5NDc3MGYyYWVjYTVk
ZDVlNmNhZWExMzU4NmIyYjI1ZmJhM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAyMS0wNi0yNCAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBCSUMgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAg
IGJpYyBSZCwgUm4sIFJtCisKKyAgICAgICAgVGhlIEJJQyAoQml0IENsZWFyKSBpbnN0cnVjdGlv
biBwZXJmb3JtcyBhbiBBTkQgb3BlcmF0aW9uIG9uIHRoZSBiaXRzIGluIFJuIHdpdGggdGhlIAor
ICAgICAgICBjb21wbGVtZW50cyBvZiB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSB2YWx1
ZSBvZiBSbS4gVGhlIGluc3RydWN0aW9uIHNlbGVjdG9yIGNhbiAKKyAgICAgICAgdXRpbGl6ZSB0
aGlzIHRvIGxvd2VyaW5nIGNlcnRhaW4gcGF0dGVybnMgaW4gQjMgSVIgYmVmb3JlIGZ1cnRoZXIg
QWlyIG9wdGltaXphdGlvbi4gCisgICAgICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm5zIG9mIHRo
aXMgaW5zdHJ1Y3Rpb24gYXJlOgorCisgICAgICAgIFBhdHRlcm4gMToKKyAgICAgICAgICAgIGQg
PSBuICYgKC1tIC0gMSkKKworICAgICAgICBQYXR0ZXJuIDI6CisgICAgICAgICAgICBkID0gbiAm
IChtIF4gLTEpCisKKyAgICAgICAgSW4gb3JkZXIgdG8gZ2V0IGJlbmVmaXRzIGZvciBjb21wbGVt
ZW50IG9wZXJhdGlvbiwgY3VycmVudCBpbnN0cnVjdGlvbiBzZWxlY3RvciB1c2VzIAorICAgICAg
ICBtdm4gaW5zdHJ1Y3Rpb24gdG8gbG93ZXIgdGhlIHBhdHRlcm4gdmFsdWUgXiAtMS4gVGhlbiwg
YSBuZXcgc3RyZW5ndGggcmVkdWN0aW9uIHJ1bGUgaXMgCisgICAgICAgIGludHJvZHVjZWQ6Cisg
ICAgICAgICAgICBUdXJuIHRoaXM6IC12YWx1ZSAtIDEgCisgICAgICAgICAgICBJbnRvIHRoaXM6
IHZhbHVlIF4gLTEKKworICAgICAgICBTbywgZCA9IG4gJiAobSBeIC0xKSBpcyBzZWxlY3RlZCBh
cyB0aGUgY2Fub25pY2FsIGZvcm0uCisKKyAgICAgICAgR2l2ZW4gQjMgSVI6CisgICAgICAgIElu
dCBAMCA9IEFyZ3VtZW50UmVnKCV4MCkKKyAgICAgICAgSW50IEAxID0gQXJndW1lbnRSZWcoJXgx
KQorICAgICAgICBJbnQgQDIgPSAtMQorICAgICAgICBJbnQgQDMgPSBCaXRYb3IoQDEsIEAyKQor
ICAgICAgICBJbnQgQDQgPSBCaXRBbmQoQDAsIEAzKQorICAgICAgICBWb2lkQDUgPSBSZXR1cm4o
QDQsIFRlcm1pbmFsKQorCisgICAgICAgIEJlZm9yZSBBZGRpbmcgQklDOgorICAgICAgICAvLyBP
bGQgb3B0aW1pemVkIEFJUgorICAgICAgICBOb3QgJXgxLCAleDEsICAgICAgQDMKKyAgICAgICAg
QW5kICV4MCwgJXgxLCAleDAsIEA0CisgICAgICAgIFJldCAleDAsICAgICAgICAgICBANQorCisg
ICAgICAgIEFmdGVyIEFkZGluZyBCSUM6CisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisg
ICAgICAgIEJpYyAleDAsICV4MSwgJXgwLCBANAorICAgICAgICBSZXQgJXgwLCAgICAgICAgICAg
QDUKKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpYzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk02NDo6YmljNjQpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6
CisgICAgICAgIChKU0M6OnRlc3RCSUMzMik6CisgICAgICAgIChKU0M6OnRlc3RCSUMzMik6Cisg
ICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVu
Z3RoLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6CisgICAgICAgICog
YjMvdGVzdGIzLmg6CisgICAgICAgICogYjMvdGVzdGIzXzIuY3BwOgorICAgICAgICAodGVzdEJJ
QzMyKToKKyAgICAgICAgKHRlc3RCSUM2NCk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisKIDIw
MjEtMDYtMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBs
ZHAgYW5kIHN0cCBtb3JlIGZvciBzYXZpbmcgLyByZXN0b3JpbmcgcmVnaXN0ZXJzIG9uIEFSTTY0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAppbmRleCAwNjliZDQ2YjM5NDFjMGE4NmU4ZTNhMzY5OTQ0YWE0YTkwYmMwNzVk
Li4wMTYyNTczZmI5MDJhOTkxZmMzNTA1MDE2NTViNDcxZDhhYWIwODgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApA
QCAtNDEwLDYgKzQxMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnViZml6PDY0
PihkZXN0LCBzcmMsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKICAgICB9CiAKKyAgICB2
b2lkIGJpYzMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIG1hc2ssIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJpYzwzMj4oZGVzdCwgc3JjLCBtYXNrKTsK
KyAgICB9CisKKyAgICB2b2lkIGJpYzY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIG1hc2ss
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJpYzw2ND4oZGVz
dCwgc3JjLCBtYXNrKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDY0KFJlZ2lzdGVySUQgc3JjMSwg
UmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5hbmRfPDY0PihkZXN0LCBzcmMxLCBzcmMyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggYzljZjk2OGI3YjQ1ZjQyMzg3ZWRjN2ZkNjY5
M2YwOWQ1M2VlNmE1MC4uYTgwMmZlZGY1MDQ4Yjc4M2FmYzM1YzY1YjhhZTVhYWJhYTFhMWZmMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTkw
NCw2ICs5MDQsNDIgQEAgdm9pZCB0ZXN0TXVsMzJXaXRoSW1tZWRpYXRlcygpCiB9CiAKICNpZiBD
UFUoQVJNNjQpCit2b2lkIHRlc3RCSUMzMigpCit7CisgICAgYXV0byB0ZXN0ID0gY29tcGlsZShb
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKKworICAgICAgICBqaXQuYmljMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBlbWl0RnVu
Y3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisKKyAgICBm
b3IgKGF1dG8gdmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgdWludDMyX3Qgd29y
ZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPHVpbnQzMl90Pih0ZXN0LCB3b3JkLCB2YWx1ZSksICh3b3JkICYgfnZhbHVlKSk7
CisgICAgICAgIENIRUNLX0VRKGludm9rZTx1aW50MzJfdD4odGVzdCwgMFUsIHZhbHVlKSwgMFUp
OworICAgIH0KK30KKwordm9pZCB0ZXN0QklDNjQoKQoreworICAgIGF1dG8gdGVzdCA9IGNvbXBp
bGUoW10gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3Vl
KGppdCk7CisKKyAgICAgICAgaml0LmJpYzY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1p
dEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisg
ICAgZm9yIChhdXRvIHZhbHVlIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIHVpbnQ2NF90
IHdvcmQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTx1aW50NjRfdD4odGVzdCwgd29yZCwgdmFsdWUpLCAod29yZCAmIH52YWx1
ZSkpOworICAgICAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KHRlc3QsIDBVTEwsIHZhbHVl
KSwgMFVMTCk7CisgICAgfQorfQorCiB2b2lkIHRlc3RNdWwzMlNpZ25FeHRlbmQoKQogewogICAg
IGZvciAoYXV0byB2YWx1ZSA6IGludDMyT3BlcmFuZHMoKSkgewpAQCAtMzQyMyw2ICszNDU5LDgg
QEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZ
X0FOQUxZU0lTCiAjZW5kaWYKIAogI2lmIENQVShBUk02NCkKKyAgICBSVU4odGVzdEJJQzMyKCkp
OworICAgIFJVTih0ZXN0QklDNjQoKSk7CiAgICAgUlVOKHRlc3RMb2FkU3RvcmVQYWlyNjRJbnQ2
NCgpKTsKICAgICBSVU4odGVzdExvYWRTdG9yZVBhaXI2NERvdWJsZSgpKTsKICAgICBSVU4odGVz
dE11bDMyU2lnbkV4dGVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fp
ci5jcHAKaW5kZXggODQwNDBmZWY0YTk2YTc1OTEzN2JjNjZlZGU0NTE4Zjc5MjMxYWFiZC4uNzJm
ZWVkMTU1YWRiOWIzZGYyM2QyNDE0MmUzNTdkOGRiNWZmMzMyYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTI3OTIsNiArMjc5MiwyOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgaWYgKHRyeUFwcGVuZFVCRlgoKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKKyAgICAgICAgICAgIC8vIEJJQyBQYXR0ZXJuOiBkID0gbiAmIChtIF4gLTEpCisgICAg
ICAgICAgICBhdXRvIHRyeUFwcGVuZEJJQyA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdo
dCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2Rl
Rm9yVHlwZShCaWMzMiwgQmljNjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAg
aWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSAK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChy
aWdodC0+b3Bjb2RlKCkgIT0gQml0WG9yIHx8ICFjYW5CZUludGVybmFsKHJpZ2h0KSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgVmFsdWUqIG5W
YWx1ZSA9IGxlZnQ7CisgICAgICAgICAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJpZ2h0LT5jaGls
ZCgwKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbWludXNPbmUgPSByaWdodC0+Y2hpbGQoMSk7
CisgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKG5WYWx1ZSkgfHwgbV9sb2Nr
ZWQuY29udGFpbnMobVZhbHVlKSB8fCAhbWludXNPbmUtPmhhc0ludCgpIHx8ICFtaW51c09uZS0+
aXNJbnQoLTEpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
ICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoblZhbHVlKSwgdG1wKG1WYWx1ZSksIHRtcChtX3Zh
bHVlKSk7CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHRy
eUFwcGVuZEJJQyhsZWZ0LCByaWdodCkgfHwgdHJ5QXBwZW5kQklDKHJpZ2h0LCBsZWZ0KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBB
bmQ2NCwgQW5kRG91YmxlLCBBbmRGbG9hdCwgQ29tbXV0YXRpdmU+KGxlZnQsIHJpZ2h0KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IDNkZGFkZTc3MDhlYjRjN2I0MmM1N2JiYTA2Mjlj
NmU5ZmRmNjU4ZmQuLmE2YjcwMzgxZjM0YTk1NWJkOTRhMGZmODMzYTMxNDVjYmU5NThkZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTYy
Nyw2ICs2MjcsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KG1fdmFsdWUtPmlzSW50ZWdlcigpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBT
dWIoTmVnKHZhbHVlKSwgMSkKKyAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEJpdFhvcih2
YWx1ZSwgLTEpCisgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUo
KSA9PSBOZWcgJiYgbV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDEpKSB7CisgICAgICAgICAgICAg
ICAgICAgIFZhbHVlKiBtaW51c09uZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUt
PmNoaWxkKDApLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDMyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbWludXNPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3QzMlZhbHVlPihtX2lu
ZGV4LCBtX3ZhbHVlLT5vcmlnaW4oKSwgLTEpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICBtaW51c09uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxD
b25zdDY0VmFsdWU+KG1faW5kZXgsIG1fdmFsdWUtPm9yaWdpbigpLCAtMSk7CisgICAgICAgICAg
ICAgICAgICAgIHJlcGxhY2VXaXRoTmV3PFZhbHVlPihCaXRYb3IsIG1fdmFsdWUtPm9yaWdpbigp
LCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCksIG1pbnVzT25lKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgLy8gVHVy
biB0aGlzOiBTdWIodmFsdWUsIGNvbnN0YW50KQogICAgICAgICAgICAgICAgIC8vIEludG8gdGhp
czogQWRkKHZhbHVlLCAtY29uc3RhbnQpCiAgICAgICAgICAgICAgICAgaWYgKFZhbHVlKiBuZWdh
dGVkQ29uc3RhbnQgPSBtX3ZhbHVlLT5jaGlsZCgxKS0+bmVnQ29uc3RhbnQobV9wcm9jKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXgg
YTZhMTU4ODY3M2E0MjUxYjMxNGY0MGI2NzFlOGRjMzRlYTJkNTQ2MS4uMWU0NmZjYzMxOGYxMWIw
M2Q1OTU4MTEwYTA0ZjM3NGFlMWY0NTZhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBAIC0zODEsNiArMzgxLDEyIEBAIGFybTY0OiBCaXRG
aWVsZEluc2VydDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKIGFybTY0OiBCaXRG
aWVsZEluc2VydDY0IFU6Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAogICAgIFRtcCwgSW1t
LCBJbW0sIFRtcAogCithcm02NDogQmljMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBU
bXAsIFRtcCwgVG1wCisKK2FybTY0OiBCaWM2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAg
VG1wLCBUbXAsIFRtcAorCiA2NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRt
cCwgVG1wLCBUbXAKICAgICBhcm02NDogQml0SW1tNjQsIFRtcCwgVG1wCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzLmgKaW5kZXggNDRjMGE1MGJhMTEyOTBjZTYxZTQ4ZDY4M2E0MWNlZDFiYmI1YzI1
Ni4uMjNiODUwMzg1ZDA0OGM3NzQ2MGUxYjgxNjY0ZDgzNzM5MWQxNDA1NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjMuaApAQCAtNDMwLDYgKzQzMCw4IEBAIHZvaWQgdGVzdFViZml6NjRTaGlm
dEFuZCgpOwogdm9pZCB0ZXN0VWJmaXo2NEFuZFNoaWZ0KCk7CiB2b2lkIHRlc3RCaXRGaWVsZElu
c2VydDMyKCk7CiB2b2lkIHRlc3RCaXRGaWVsZEluc2VydDY0KCk7Cit2b2lkIHRlc3RCSUMzMigp
Owordm9pZCB0ZXN0QklDNjQoKTsKIHZvaWQgdGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1t
TWFzazMyKCk7CiB2b2lkIHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2s2NCgpOwog
dm9pZCB0ZXN0QmFzaWNTZWxlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3Bw
CmluZGV4IDk0YTdlMzRjYzdkODA5ZGM5MmQwZGNkNDcyOTRlZmJiMDMxN2ZjZWQuLjI3Yzc2OWI0
Yzg0YTRkMWVjYzMwZTdlY2YwMDg5ZWZmMTE1ZDQ2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiM18yLmNwcApAQCAtNDE4NCw2ICs0MTg0LDEyMiBAQCBzdGF0aWMgdm9pZCB0ZXN0Qml0
T3JJbW1BcmczMihpbnQgYSwgaW50IGIpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHBy
b2MsIGIpID09IChhIHwgYikpOwogfQogCit2b2lkIHRlc3RCSUMzMigpCit7CisgICAgaWYgKEpT
Qzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gJiAoLW0gLSAxKQorICAgIGF1dG8gdGVzdDEgPSBb
Jl0gKGludDMyX3QgbiwgaW50MzJfdCBtKSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
KTsKKyAgICAgICAgVmFsdWUqIGNvbnN0MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAxKTsKKworICAgICAgICBWYWx1ZSogbmVnVmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG1WYWx1ZSk7CisgICAgICAgIFZh
bHVlKiBzdWJWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4o
KSwgbmVnVmFsdWUsIGNvbnN0MSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBuVmFsdWUsIHN1YlZh
bHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAg
IGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwg
ImJpYyIpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAg
ICB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAmIChtIF4gLTEpCisgICAgYXV0byB0
ZXN0MiA9IFsmXSAoaW50MzJfdCBuLCBpbnQzMl90IG0pIC0+IGludDMyX3QgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogbWludXNPbmVWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7CisKKyAgICAgICAgVmFsdWUqIHhv
clZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBt
VmFsdWUsIG1pbnVzT25lVmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgblZhbHVlLCB4b3JW
YWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAg
ICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUs
ICJiaWMiKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQzMl90PigqY29kZSwgbiwgbSk7Cisg
ICAgfTsKKworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZv
ciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBDSEVDSyh0ZXN0MShu
LnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSAmICgtbS52YWx1ZSAtIDEpKSk7CisgICAgICAg
ICAgICBDSEVDSyh0ZXN0MihuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSAmIChtLnZhbHVl
IF4gLTEpKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEJJQzY0KCkKK3sKKyAg
ICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gZCA9IG4gJiAoLW0gLSAxKQorICAgIGF1
dG8gdGVzdDEgPSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBtKSAtPiBpbnQ2NF90IHsKKyAgICAg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAg
ICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGNvbnN0
MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKwor
ICAgICAgICBWYWx1ZSogbmVnVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5l
ZywgT3JpZ2luKCksIG1WYWx1ZSk7CisgICAgICAgIFZhbHVlKiBzdWJWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgbmVnVmFsdWUsIGNvbnN0MSk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXRBbmQsIE9yaWdpbigpLCBuVmFsdWUsIHN1YlZhbHVlKSk7CisKKyAgICAgICAgYXV0byBj
b2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJpYyIpOworICAgICAgICByZXR1cm4g
aW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgLy8gVGVzdCBQYXR0
ZXJuOiBkID0gbiAmIChtIF4gLTEpCisgICAgYXV0byB0ZXN0MiA9IFsmXSAoaW50NjRfdCBuLCBp
bnQ2NF90IG0pIC0+IGludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOworICAgICAgICBWYWx1ZSogbWludXNPbmVWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7CisKKyAgICAgICAgVmFsdWUqIHhvclZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBtVmFs
dWUsIG1pbnVzT25lVmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgblZhbHVlLCB4b3JWYWx1
ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBp
ZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJi
aWMiKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAg
fTsKKworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAo
YXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBDSEVDSyh0ZXN0MShuLnZh
bHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSAmICgtbS52YWx1ZSAtIDFMTCkpKTsKKyAgICAgICAg
ICAgIENIRUNLKHRlc3QyKG4udmFsdWUsIG0udmFsdWUpID09IChuLnZhbHVlICYgKG0udmFsdWUg
XiAtMUxMKSkpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIGFkZEJpdFRlc3RzKGNvbnN0
IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykK
IHsKICAgICBSVU4odGVzdFViZngzMlNoaWZ0QW5kKCkpOwpAQCAtNDIwMCw2ICs0MzE2LDggQEAg
dm9pZCBhZGRCaXRUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRU
YXNrPHZvaWQoKT4+PiYgdGFza3MpCiAgICAgUlVOKHRlc3RVYmZpejY0QW5kU2hpZnQoKSk7CiAg
ICAgUlVOKHRlc3RCaXRGaWVsZEluc2VydDMyKCkpOwogICAgIFJVTih0ZXN0Qml0RmllbGRJbnNl
cnQ2NCgpKTsKKyAgICBSVU4odGVzdEJJQzMyKCkpOworICAgIFJVTih0ZXN0QklDNjQoKSk7CiAg
ICAgUlVOKHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2szMigpKTsKICAgICBSVU4o
dGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazY0KCkpOwogICAgIFJVTih0ZXN0Qml0
QW5kQXJncyg0MywgNDMpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432338</attachid>
            <date>2021-06-26 14:49:27 -0700</date>
            <delta_ts>2021-06-26 22:03:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227202-20210626164926.patch</filename>
            <type>text/plain</type>
            <size>35765</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
M2RjMjc2YWQxOWE3YTc3NTE4MWFlMzdkMThhYTkzNWYxMGQ2ZGZkLi40MDM1ZWEyMGIwN2FiZDFh
OWU5MzcyZmVkMGI1MWZjZTNmZmZiNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTQgQEAKKzIwMjEtMDYtMjYgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBhIG5ldyBwYXR0ZXJuIHRvIGluc3RydWN0aW9uIHNlbGVjdG9y
IHRvIHVzZSBCSUMgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHRocmVlIG1vZGlmaWNh
dGlvbnM6CisgICAgICAgICAgICAxLiBBZGQgYml0IGNsZWFyIChCSUMpIHRvIEFpciBvcGNvZGUg
dG8gc2VydmUgaW50cnVjaXRvbiBzZWxlY3Rvci4KKyAgICAgICAgICAgIDIuIEFkZCBiaXRmaWVs
ZCBjbGVhciAoQkZDKSB0byBBaXIgb3Bjb2RlLgorICAgICAgICAgICAgMy4gRG8gcmVmYWN0b3Jp
bmcgLSByZW5hbWUgQWlyIG9wY29kZXMgYWRkZWQgaW4gdGhlIHByZXZpb3VzIHBhdGNoZXMuCisK
KyAgICAgICAgUGFydCBBCisgICAgICAgIEdpdmVuIHRoZSBvcGVyYXRpb246CisKKyAgICAgICAg
YmljIFJkLCBSbiwgUm0KKworICAgICAgICBUaGUgQklDIChCaXQgQ2xlYXIpIGluc3RydWN0aW9u
IHBlcmZvcm1zIGFuIEFORCBvcGVyYXRpb24gb24gdGhlIGJpdHMgaW4gUm4gd2l0aCB0aGUgCisg
ICAgICAgIGNvbXBsZW1lbnRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlIHZhbHVl
IG9mIFJtLiBUaGUgaW5zdHJ1Y3Rpb24gc2VsZWN0b3IgY2FuIAorICAgICAgICB1dGlsaXplIHRo
aXMgdG8gbG93ZXJpbmcgY2VydGFpbiBwYXR0ZXJucyBpbiBCMyBJUiBiZWZvcmUgZnVydGhlciBB
aXIgb3B0aW1pemF0aW9uLiAKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybnMgb2YgdGhp
cyBpbnN0cnVjdGlvbiBhcmU6CisKKyAgICAgICAgUGF0dGVybiAxOgorICAgICAgICAgICAgZCA9
IG4gJiAoLW0gLSAxKQorCisgICAgICAgIFBhdHRlcm4gMjoKKyAgICAgICAgICAgIGQgPSBuICYg
KG0gXiAtMSkKKworICAgICAgICBJbiBvcmRlciB0byBnZXQgYmVuZWZpdHMgZm9yIGNvbXBsZW1l
bnQgb3BlcmF0aW9uLCBjdXJyZW50IGluc3RydWN0aW9uIHNlbGVjdG9yIHVzZXMgCisgICAgICAg
IG12biBpbnN0cnVjdGlvbiB0byBsb3dlciB0aGUgcGF0dGVybiB2YWx1ZSBeIC0xLiBUaGVuLCBh
IG5ldyBzdHJlbmd0aCByZWR1Y3Rpb24gcnVsZSBpcyAKKyAgICAgICAgaW50cm9kdWNlZDoKKyAg
ICAgICAgICAgIFR1cm4gdGhpczogLXZhbHVlIC0gMSAKKyAgICAgICAgICAgIEludG8gdGhpczog
dmFsdWUgXiAtMQorCisgICAgICAgIFNvLCBkID0gbiAmIChtIF4gLTEpIGlzIHNlbGVjdGVkIGFz
IHRoZSBjYW5vbmljYWwgZm9ybS4KKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50
IEAwID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJbnQgQDEgPSBBcmd1bWVudFJlZygleDEp
CisgICAgICAgIEludCBAMiA9IC0xCisgICAgICAgIEludCBAMyA9IEJpdFhvcihAMSwgQDIpCisg
ICAgICAgIEludCBANCA9IEJpdEFuZChAMCwgQDMpCisgICAgICAgIFZvaWRANSA9IFJldHVybihA
NCwgVGVybWluYWwpCisKKyAgICAgICAgQmVmb3JlIEFkZGluZyBCSUM6CisgICAgICAgIC8vIE9s
ZCBvcHRpbWl6ZWQgQUlSCisgICAgICAgIE5vdCAleDEsICV4MSwgICAgICBAMworICAgICAgICBB
bmQgJXgwLCAleDEsICV4MCwgQDQKKyAgICAgICAgUmV0ICV4MCwgICAgICAgICAgIEA1CisKKyAg
ICAgICAgQWZ0ZXIgQWRkaW5nIEJJQzoKKyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAg
ICAgICAgQmljICV4MCwgJXgxLCAleDAsIEA0CisgICAgICAgIFJldCAleDAsICAgICAgICAgICBA
NQorCisgICAgICAgIFBhcnQgQgorICAgICAgICBUaGUgQml0ZmllbGQgQ2xlYXIgKEJGQyksIGxl
YXZpbmcgb3RoZXIgYml0cyB1bmNoYW5nZWQsIGlzIHNpbWlsYXIgdG8gQkZJIHdoaWNoIGlzIGFu
IAorICAgICAgICBhbGlhcyBvZiBCRk0uIEdpdmVuIHRoZSBvcGVyYXRpb246CisKKyAgICAgICAg
YmZjIFJkLCBsc2IsIHdpZHRoCisKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybiBvZiB0
aGlzIGluc3RydWN0aW9uIGlzOgorCisgICAgICAgIG1hc2sgPSAoKDEgPDwgd2lkdGgpIC0gMSkg
PDwgbHNiCisgICAgICAgIGQgPSBkICYgfm1hc2sKKworICAgICAgICBTaW5jZSBtYXNrIGlzIGEg
Y29uc3RhbnQgYW5kIEIzIHBlcmZvcm1zIGNvbnN0YW50IGZvbGQgaW4gdGhlIG9wdGltaXphdGlv
biBwaGFzZSwgdGhpcyAKKyAgICAgICAgcGF0dGVybiB3aWxsIGRpcmVjdGx5IGxvd2VyIHRvIHRo
ZSBCaXRBbmQgYmluYXJ5IG9wZXJhdGlvbi4gU28sIG5vIG5lZWQgdG8gbWF0Y2ggdGhpcyBwYXR0
ZXJuLgorCisgICAgICAgIFBhcnQgQworICAgICAgICBBdCBNYWNyb0Fzc2VtYmxlciBsZXZlbCwg
dGhlIGVtaXR0ZXJzIGFyZSBleGVwZWN0ZWQgdG8gYmUgZXhwcmVzc2VkIGluIGVuZ2xpc2ggCisg
ICAgICAgIChlLmcuIHNvbWV0aGluZyBsaWtlIGNsZWFyQml0RmllbGQgZm9yIEJGQykuIERvIHJl
ZmFjdG9yaW5nIHRvIHJlbmFtZSBBaXIgb3Bjb2RlIGZvciAKKyAgICAgICAgdWJmeCwgdWJmaXos
IGJmaSwgYW5kIGJpYy4KKworICAgICAgICAqIGFzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oOgor
ICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6YmZjKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
Ojp1bnNpZ25lZEJpdGZpZWxkRXh0cmFjdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6dW5zaWduZWRCaXRmaWVsZEV4dHJhY3Q2NCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OnVuc2lnbmVkQml0ZmllbGRJbnNlcnRJblplcm8zMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnVuc2lnbmVkQml0ZmllbGRJbnNlcnRJblplcm82
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpdENsZWFyV2l0aE1hc2sz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpdENsZWFyV2l0aE1hc2s2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpdEZpZWxkQ2xlYXIzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpdEZpZWxkQ2xlYXI2NCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZngzMik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZng2NCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZml6MzIpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZpejY0KTogRGVsZXRlZC4KKyAgICAgICAgKiBh
c3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0Qml0Q2xlYXJXaXRoTWFz
azMyKToKKyAgICAgICAgKEpTQzo6dGVzdEJpdENsZWFyV2l0aE1hc2s2NCk6CisgICAgICAgIChK
U0M6OnRlc3RVbnNpZ25lZEJpdGZpZWxkRXh0cmFjdDMyKToKKyAgICAgICAgKEpTQzo6dGVzdFVu
c2lnbmVkQml0ZmllbGRFeHRyYWN0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0VW5zaWduZWRCaXRm
aWVsZEluc2VydEluWmVybzMyKToKKyAgICAgICAgKEpTQzo6dGVzdFVuc2lnbmVkQml0ZmllbGRJ
bnNlcnRJblplcm82NCk6CisgICAgICAgIChKU0M6OnRlc3RCaXRGaWVsZENsZWFyMzIpOgorICAg
ICAgICAoSlNDOjp0ZXN0Qml0RmllbGRDbGVhcjY0KToKKyAgICAgICAgKEpTQzo6dGVzdFViZngz
Mik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RVYmZ4NjQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjp0ZXN0VWJmaXozMik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RVYmZpejY0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIz
L0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
czoKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6Cisg
ICAgICAgICh0ZXN0QklDMzIpOgorICAgICAgICAodGVzdEJJQzY0KToKKyAgICAgICAgKGFkZEJp
dFRlc3RzKToKKwogMjAyMS0wNi0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIGxkcCBhbmQgc3RwIG1vcmUgZm9yIHNhdmluZyAvIHJlc3RvcmluZyByZWdp
c3RlcnMgb24gQVJNNjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTTY0QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FS
TTY0QXNzZW1ibGVyLmgKaW5kZXggNzU4Y2JlNDAyNzc5OGU4MzFkMmQwM2NhODQ4ZWQ4YjA0ODM2
NWUxNC4uY2I0Y2IxYmMwNzMwMWRlOGU2MmJmYmJlZWRiNzFjZTQ3NDhjYmQ1OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaApAQCAtODMy
LDYgKzgzMiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGluc24oY29uZGl0aW9uYWxCcmFuY2hJbW1l
ZGlhdGUob2Zmc2V0LCBjb25kKSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXpl
PgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBiZmMoUmVnaXN0ZXJJRCByZCwgaW50IGxzYiwgaW50
IHdpZHRoKQorICAgIHsKKyAgICAgICAgYmZpPGRhdGFzaXplPihyZCwgQVJNNjRSZWdpc3RlcnM6
OnpyLCBsc2IsIHdpZHRoKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGJmaShSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBp
bnQgbHNiLCBpbnQgd2lkdGgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCAwNjliZDQ2YjM5NDFjMGE4
NmU4ZTNhMzY5OTQ0YWE0YTkwYmMwNzVkLi4wZDQzMjE4OWQ1ZDA1ZmM4MzlhMzk0YzBjZmYyMzNh
NjI5ZTliNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMzkwLDI2ICszOTAsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIGFuZDMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAgIH0KIAotICAgIHZvaWQgdWJm
eDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgs
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnViZng8MzI+KGRl
c3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOwotICAgIH0KLQotICAgIHZvaWQg
dWJmeDY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lk
dGgsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnViZng8NjQ+
KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOwotICAgIH0KLQotICAgIHZv
aWQgdWJmaXozMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMy
IHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci51YmZp
ejwzMj4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Ci0gICAgfQotCi0g
ICAgdm9pZCB1YmZpejY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVk
SW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LnViZml6PDY0PihkZXN0LCBzcmMsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKLSAgICB9
Ci0KICAgICB2b2lkIGFuZDY0KFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRfPDY0PihkZXN0LCBz
cmMxLCBzcmMyKTsKQEAgLTQ2OCw2ICs0NDgsNTcgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5hbmRfPDY0PihkZXN0LCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAg
ICAvLyBCaXQgT3BlcmF0aW9uczoKKyAgICB2b2lkIGV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIo
UmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudWJmeDwzMj4oZGVzdCwg
c3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBleHRy
YWN0VW5zaWduZWRCaXRmaWVsZDY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBU
cnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnViZng8NjQ+KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOwor
ICAgIH0KKworICAgIHZvaWQgaW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyKFJlZ2lzdGVy
SUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnViZml6PDMyPihkZXN0LCBzcmMsIGxz
Yi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGluc2VydFVuc2ln
bmVkQml0ZmllbGRJblplcm82NChSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1
c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci51YmZpejw2ND4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Cisg
ICAgfQorCisgICAgdm9pZCBpbnNlcnRCaXRGaWVsZDMyKFJlZ2lzdGVySUQgc291cmNlLCBUcnVz
dGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmJmaTwzMj4oZGVzdCwgc291cmNlLCBsc2IubV92YWx1ZSwg
d2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBpbnNlcnRCaXRGaWVsZDY0KFJlZ2lz
dGVySUQgc291cmNlLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJmaTw2ND4oZGVzdCwgc291
cmNlLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBjbGVh
ckJpdEZpZWxkMzIoVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iZmM8MzI+KGRlc3QsIGxzYi5t
X3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQml0RmllbGQ2
NChUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJmYzw2ND4oZGVzdCwgbHNiLm1fdmFsdWUsIHdp
ZHRoLm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJCaXRzV2l0aE1hc2szMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5iaWM8MzI+KGRlc3QsIHNyYywgbWFzayk7CisgICAgfQorCisgICAg
dm9pZCBjbGVhckJpdHNXaXRoTWFzazY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIG1hc2ss
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJpYzw2ND4oZGVz
dCwgc3JjLCBtYXNrKTsKKyAgICB9CisKICAgICB2b2lkIGNsZWFyQml0NjQoUmVnaXN0ZXJJRCBi
aXRUb0NsZWFyLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaEZvck1hc2sgPSBJ
bnZhbGlkR1BSUmVnKQogICAgIHsKICAgICAgICAgaWYgKHNjcmF0Y2hGb3JNYXNrID09IEludmFs
aWRHUFJSZWcpCkBAIC0yNzUyLDE4ICsyNzgzLDYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5mY3NlbDw2ND4oZGVzdCwgdGhlbkNhc2UsIGVsc2VDYXNlLCBBUk02NENvbmRpdGlvbihj
b25kKSk7CiAgICAgfQogCi0gICAgLy8gQml0IGZpZWxkIG9wZXJhdGlvbnM6Ci0gICAgdm9pZCBi
aXRGaWVsZEluc2VydDMyKFJlZ2lzdGVySUQgc291cmNlLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVz
dGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmJmaTwzMj4oZGVzdCwgc291cmNlLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Ci0g
ICAgfQotCi0gICAgLy8gZGVzdEJpdE9mZnNldCBpcyB0aGUgdG9wIGJpdCBvZiB0aGUgZGVzdGlu
YXRpb24gd2hlcmUgdGhlIGJpdHMgc2hvdWxkIGJlIGNvcGllZCB0by4gWmVybyBpcyB0aGUgbG93
ZXN0IG9yZGVyIGJpdC4KLSAgICB2b2lkIGJpdEZpZWxkSW5zZXJ0NjQoUmVnaXN0ZXJJRCBzb3Vy
Y2UsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0
KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmZpPDY0PihkZXN0LCBzb3VyY2UsIGxzYi5t
X3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKLSAgICB9Ci0KICAgICAvLyBGb3J3YXJkcyAvIGV4dGVy
bmFsIGNvbnRyb2wgZmxvdyBvcGVyYXRpb25zOgogICAgIC8vCiAgICAgLy8gVGhpcyBzZXQgb2Yg
anVtcCBhbmQgY29uZGl0aW9uYWwgYnJhbmNoIG9wZXJhdGlvbnMgcmV0dXJuIGEgSnVtcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCBjOWNmOTY4
YjdiNDVmNDIzODdlZGM3ZmQ2NjkzZjA5ZDUzZWU2YTUwLi5iODNhMjZmYTE2MmViZWQyMzVlZTJj
ZTY4ZDdjNWM2Y2Q2ZDliNGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L3Rlc3RtYXNtLmNwcApAQCAtOTA0LDcgKzkwNCw3IEBAIHZvaWQgdGVzdE11bDMyV2l0aEltbWVk
aWF0ZXMoKQogfQogCiAjaWYgQ1BVKEFSTTY0KQotdm9pZCB0ZXN0TXVsMzJTaWduRXh0ZW5kKCkK
K3ZvaWQgdGVzdE11bHRpcGx5U2lnbkV4dGVuZDMyKCkKIHsKICAgICBmb3IgKGF1dG8gdmFsdWUg
OiBpbnQzMk9wZXJhbmRzKCkpIHsKICAgICAgICAgYXV0byBtdWwgPSBjb21waWxlKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQpIHsKQEAgLTEwODksNyArMTA4OSw3IEBAIHZvaWQgdGVzdFN1YjY0QXJn
SW1tNjQoKQogICAgIH0KIH0KIAotdm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyKCkKK3ZvaWQg
dGVzdE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyKCkKIHsKICAgICAvLyBkID0gYSAtIFNFeHQzMihu
KSAqICBTRXh0MzIobSkKICAgICBhdXRvIHN1YiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCkgewpAQCAtMTExMiw3ICsxMTEyLDcgQEAgdm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMy
KCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdFViZngzMigpCit2b2lkIHRlc3RFeHRyYWN0VW5zaWdu
ZWRCaXRmaWVsZDMyKCkKIHsKICAgICB1aW50MzJfdCBzcmMgPSAweGYwZjBmMGYwOwogICAgIFZl
Y3Rvcjx1aW50MzJfdD4gaW1tcyA9IHsgMCwgMSwgNSwgNywgMzAsIDMxLCAzMiwgNDIsIDU2LCA2
MiwgNjMsIDY0IH07CkBAIC0xMTIyLDcgKzExMjIsNyBAQCB2b2lkIHRlc3RVYmZ4MzIoKQogICAg
ICAgICAgICAgICAgIGF1dG8gdWJmeDMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0
KSB7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgaml0LnViZngzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAg
ICAgICAgICAgICAgICAgICBqaXQuZXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMihHUFJJbmZvOjph
cmd1bWVudEdQUjAsIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIobHNiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMih3aWR0aCksIAogICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOwpAQCAtMTEzNiw3ICsxMTM2LDcgQEAgdm9pZCB0ZXN0VWJmeDMyKCkKICAg
ICB9CiB9CiAKLXZvaWQgdGVzdFViZng2NCgpCit2b2lkIHRlc3RFeHRyYWN0VW5zaWduZWRCaXRm
aWVsZDY0KCkKIHsKICAgICB1aW50NjRfdCBzcmMgPSAweGYwZjBmMGYwZjBmMGYwZjA7CiAgICAg
VmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCA1LCA3LCAzMCwgMzEsIDMyLCA0MiwgNTYs
IDYyLCA2MywgNjQgfTsKQEAgLTExNDYsNyArMTE0Niw3IEBAIHZvaWQgdGVzdFViZng2NCgpCiAg
ICAgICAgICAgICAgICAgYXV0byB1YmZ4NjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAot
ICAgICAgICAgICAgICAgICAgICBqaXQudWJmeDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisg
ICAgICAgICAgICAgICAgICAgIGppdC5leHRyYWN0VW5zaWduZWRCaXRmaWVsZDY0KEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihsc2IpLCAKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKHdpZHRoKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7CkBAIC0xMTYwLDcgKzExNjAsNyBAQCB2b2lkIHRlc3RVYmZ4NjQoKQog
ICAgIH0KIH0KIAotdm9pZCB0ZXN0VWJmaXozMigpCit2b2lkIHRlc3RJbnNlcnRVbnNpZ25lZEJp
dGZpZWxkSW5aZXJvMzIoKQogewogICAgIHVpbnQzMl90IHNyYyA9IDB4ZjBmMGYwZjA7CiAgICAg
VmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCA1LCA3LCAzMCwgMzEsIDMyLCA0MiwgNTYs
IDYyLCA2MywgNjQgfTsKQEAgLTExNzAsNyArMTE3MCw3IEBAIHZvaWQgdGVzdFViZml6MzIoKQog
ICAgICAgICAgICAgICAgIGF1dG8gdWJmaXozMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCkgewogICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwog
Ci0gICAgICAgICAgICAgICAgICAgIGppdC51YmZpejMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
CisgICAgICAgICAgICAgICAgICAgIGppdC5pbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvMzIo
R1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTExODUsNyArMTE4NSw3IEBAIHZvaWQgdGVzdFVi
Zml6MzIoKQogICAgIH0KIH0KIAotdm9pZCB0ZXN0VWJmaXo2NCgpCit2b2lkIHRlc3RJbnNlcnRV
bnNpZ25lZEJpdGZpZWxkSW5aZXJvNjQoKQogewogICAgIHVpbnQ2NF90IHNyYyA9IDB4ZjBmMGYw
ZjBmMGYwZjBmMDsKICAgICBWZWN0b3I8dWludDMyX3Q+IGltbXMgPSB7IDAsIDEsIDUsIDcsIDMw
LCAzMSwgMzIsIDQyLCA1NiwgNjIsIDYzLCA2NCB9OwpAQCAtMTE5NSw3ICsxMTk1LDcgQEAgdm9p
ZCB0ZXN0VWJmaXo2NCgpCiAgICAgICAgICAgICAgICAgYXV0byB1YmZpejY0ID0gY29tcGlsZShb
PV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlv
blByb2xvZ3VlKGppdCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaml0LnViZml6NjQoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgaml0Lmluc2VydFVuc2lnbmVk
Qml0ZmllbGRJblplcm82NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAogICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNiKSwgCiAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAogICAgICAgICAg
ICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpAQCAtMTIxMCw3ICsxMjEw
LDcgQEAgdm9pZCB0ZXN0VWJmaXo2NCgpCiAgICAgfQogfQogCi12b2lkIHRlc3RCaXRGaWVsZElu
c2VydDMyKCkKK3ZvaWQgdGVzdEluc2VydEJpdEZpZWxkMzIoKQogewogICAgIHVpbnQzMl90IHNy
YyA9IDB4MGYwZjBmMGY7CiAgICAgdWludDMyX3QgZHN0ID0gMHhmMGYwZjBmMDsKQEAgLTEyMjEs
NyArMTIyMSw3IEBAIHZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0MzIoKQogICAgICAgICAgICAgICAg
IGF1dG8gYmZpMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAg
ICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAotICAgICAgICAgICAgICAg
ICAgICBqaXQuYml0RmllbGRJbnNlcnQ2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAg
ICAgICAgICAgICAgICBqaXQuaW5zZXJ0Qml0RmllbGQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAs
IAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNi
KSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3
aWR0aCksIAogICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
QEAgLTEyNDAsNyArMTI0MCw3IEBAIHZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0MzIoKQogICAgIH0K
IH0KIAotdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQ2NCgpCit2b2lkIHRlc3RJbnNlcnRCaXRGaWVs
ZDY0KCkKIHsKICAgICB1aW50NjRfdCBzcmMgPSAweDBmMGYwZjBmMGYwZjBmMGY7CiAgICAgdWlu
dDY0X3QgZHN0ID0gMHhmMGYwZjBmMGYwZjBmMGYwOwpAQCAtMTI1MSw3ICsxMjUxLDcgQEAgdm9p
ZCB0ZXN0Qml0RmllbGRJbnNlcnQ2NCgpCiAgICAgICAgICAgICAgICAgYXV0byBiZmk2NCA9IGNv
bXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgICAgICAgICBlbWl0
RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCi0gICAgICAgICAgICAgICAgICAgIGppdC5iaXRGaWVs
ZEluc2VydDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgIGpp
dC5pbnNlcnRCaXRGaWVsZDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCiAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsc2IpLCAKICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHdpZHRoKSwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwpAQCAtMTI2OSw2ICsxMjY5
LDkyIEBAIHZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0NjQoKQogICAgICAgICB9CiAgICAgfQogfQor
Cit2b2lkIHRlc3RDbGVhckJpdEZpZWxkMzIoKQoreworICAgIHVpbnQzMl90IHNyYyA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGlt
bXMgPSB7IDAsIDEsIDUsIDcsIDMwLCAzMSwgMzIsIDQyLCA1NiwgNjIsIDYzLCA2NCB9OworICAg
IGZvciAoYXV0byBsc2IgOiBpbW1zKSB7CisgICAgICAgIGZvciAoYXV0byB3aWR0aCA6IGltbXMp
IHsKKyAgICAgICAgICAgIGlmIChsc2IgPj0gMCAmJiB3aWR0aCA+IDAgJiYgbHNiICsgd2lkdGgg
PCAzMikgeworICAgICAgICAgICAgICAgIGF1dG8gYmZjMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuY2xlYXJCaXRGaWVsZDMyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHdpZHRo
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
R1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAg
ICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHVp
bnQzMl90IG1hc2sgPSAoKDFVIDw8IHdpZHRoKSAtIDFVKSA8PCBsc2I7CisgICAgICAgICAgICAg
ICAgdWludDMyX3QgcmhzID0gaW52b2tlPHVpbnQzMl90PihiZmMzMiwgc3JjKTsKKyAgICAgICAg
ICAgICAgICB1aW50MzJfdCBsaHMgPSBzcmMgJiB+bWFzazsKKyAgICAgICAgICAgICAgICBDSEVD
S19FUShyaHMsIGxocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgdGVzdENsZWFyQml0RmllbGQ2NCgpCit7CisgICAgdWludDY0X3Qgc3JjID0gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOworICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9
IHsgMCwgMSwgNSwgNywgMzAsIDMxLCAzMiwgNDIsIDU2LCA2MiwgNjMsIDY0IH07CisgICAgZm9y
IChhdXRvIGxzYiA6IGltbXMpIHsKKyAgICAgICAgZm9yIChhdXRvIHdpZHRoIDogaW1tcykgewor
ICAgICAgICAgICAgaWYgKGxzYiA+PSAwICYmIHdpZHRoID4gMCAmJiBsc2IgKyB3aWR0aCA8IDMy
KSB7CisgICAgICAgICAgICAgICAgYXV0byBiZmM2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQp
OworCisgICAgICAgICAgICAgICAgICAgIGppdC5jbGVhckJpdEZpZWxkNjQoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIobHNiKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAg
ICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAg
ICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgdWludDY0
X3QgbWFzayA9ICgoMVVMTCA8PCB3aWR0aCkgLSAxVUxMKSA8PCBsc2I7CisgICAgICAgICAgICAg
ICAgdWludDY0X3QgcmhzID0gaW52b2tlPHVpbnQ2NF90PihiZmM2NCwgc3JjKTsKKyAgICAgICAg
ICAgICAgICB1aW50NjRfdCBsaHMgPSBzcmMgJiB+bWFzazsKKyAgICAgICAgICAgICAgICBDSEVD
S19FUShyaHMsIGxocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgdGVzdENsZWFyQml0c1dpdGhNYXNrMzIoKQoreworICAgIGF1dG8gdGVzdCA9IGNvbXBpbGUo
W10gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGpp
dCk7CisKKyAgICAgICAgaml0LmNsZWFyQml0c1dpdGhNYXNrMzIoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKwor
ICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7Cisg
ICAgfSk7CisKKyAgICBmb3IgKGF1dG8gdmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgdWludDMyX3Qgd29yZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQzMl90Pih0ZXN0LCB3b3JkLCB2YWx1ZSksICh3
b3JkICYgfnZhbHVlKSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTx1aW50MzJfdD4odGVzdCwg
MFUsIHZhbHVlKSwgMFUpOworICAgIH0KK30KKwordm9pZCB0ZXN0Q2xlYXJCaXRzV2l0aE1hc2s2
NCgpCit7CisgICAgYXV0byB0ZXN0ID0gY29tcGlsZShbXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
KyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBqaXQuY2xlYXJC
aXRzV2l0aE1hc2s2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxv
Z3VlKGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9KTsKKworICAgIGZvciAoYXV0byB2
YWx1ZSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICB1aW50NjRfdCB3b3JkID0gc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOworICAgICAgICBDSEVDS19FUShpbnZva2U8
dWludDY0X3Q+KHRlc3QsIHdvcmQsIHZhbHVlKSwgKHdvcmQgJiB+dmFsdWUpKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPHVpbnQ2NF90Pih0ZXN0LCAwVUxMLCB2YWx1ZSksIDBVTEwpOworICAg
IH0KK30KICNlbmRpZgogCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0
KQpAQCAtMzQyNSw5ICszNTExLDggQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZf
SUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAjaWYgQ1BVKEFSTTY0KQogICAgIFJVTih0
ZXN0TG9hZFN0b3JlUGFpcjY0SW50NjQoKSk7CiAgICAgUlVOKHRlc3RMb2FkU3RvcmVQYWlyNjRE
b3VibGUoKSk7Ci0gICAgUlVOKHRlc3RNdWwzMlNpZ25FeHRlbmQoKSk7Ci0gICAgUlVOKHRlc3RN
dWx0aXBseUFkZFNpZ25FeHRlbmQzMkxlZnQoKSk7Ci0gICAgUlVOKHRlc3RNdWx0aXBseUFkZFNp
Z25FeHRlbmQzMlJpZ2h0KCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlTaWduRXh0ZW5kMzIoKSk7
CisKICAgICBSVU4odGVzdFN1YjMyQXJncygpKTsKICAgICBSVU4odGVzdFN1YjMySW1tKCkpOwog
ICAgIFJVTih0ZXN0U3ViMzJBcmdJbW0oKSk7CkBAIC0zNDM1LDEzICszNTIwLDIxIEBAIHZvaWQg
cnVuKGNvbnN0IGNoYXIqIGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJ
UwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW0zMigpKTsKICAgICBSVU4odGVzdFN1YjY0SW1tNjQo
KSk7CiAgICAgUlVOKHRlc3RTdWI2NEFyZ0ltbTY0KCkpOwotICAgIFJVTih0ZXN0TXVsU3ViU2ln
bkV4dGVuZDMyKCkpOwotICAgIFJVTih0ZXN0VWJmeDMyKCkpOwotICAgIFJVTih0ZXN0VWJmeDY0
KCkpOwotICAgIFJVTih0ZXN0VWJmaXozMigpKTsKLSAgICBSVU4odGVzdFViZml6NjQoKSk7Ci0g
ICAgUlVOKHRlc3RCaXRGaWVsZEluc2VydDMyKCkpOwotICAgIFJVTih0ZXN0Qml0RmllbGRJbnNl
cnQ2NCgpKTsKKworICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkpOwor
ICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJSaWdodCgpKTsKKyAgICBSVU4odGVz
dE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyKCkpOworCisgICAgUlVOKHRlc3RFeHRyYWN0VW5zaWdu
ZWRCaXRmaWVsZDMyKCkpOworICAgIFJVTih0ZXN0RXh0cmFjdFVuc2lnbmVkQml0ZmllbGQ2NCgp
KTsKKyAgICBSVU4odGVzdEluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm8zMigpKTsKKyAgICBS
VU4odGVzdEluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm82NCgpKTsKKyAgICBSVU4odGVzdElu
c2VydEJpdEZpZWxkMzIoKSk7CisgICAgUlVOKHRlc3RJbnNlcnRCaXRGaWVsZDY0KCkpOworICAg
IFJVTih0ZXN0Q2xlYXJCaXRGaWVsZDMyKCkpOworICAgIFJVTih0ZXN0Q2xlYXJCaXRGaWVsZDY0
KCkpOworICAgIFJVTih0ZXN0Q2xlYXJCaXRzV2l0aE1hc2szMigpKTsKKyAgICBSVU4odGVzdENs
ZWFyQml0c1dpdGhNYXNrNjQoKSk7CiAjZW5kaWYKIAogI2lmIENQVShYODYpIHx8IENQVShYODZf
NjQpIHx8IENQVShBUk02NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAKaW5kZXggODQwNDBmZWY0YTk2YTc1OTEzN2JjNjZlZGU0NTE4Zjc5MjMxYWFiZC4uYWJkNzMw
OThiOWQwOGQwOTU0MmNjZTgzMWViYTBjNWY0ZWY5YTg0NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTI3NjQsNyArMjc2NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAvLyBVQkZYIFBhdHRlcm46IGRlc3QgPSAoc3JjID4+IGxzYikgJiBtYXNrIAog
ICAgICAgICAgICAgLy8gV2hlcmU6IG1hc2sgPSAoMSA8PCB3aWR0aCkgLSAxCiAgICAgICAgICAg
ICBhdXRvIHRyeUFwcGVuZFVCRlggPSBbJl0gKCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAg
QWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShVYmZ4MzIsIFViZng2NCwgbV92YWx1
ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVG
b3JUeXBlKEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIsIEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxk
NjQsIG1fdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShv
cGNvZGUsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBpZiAobGVmdC0+b3Bj
b2RlKCkgIT0gWlNociB8fCAhY2FuQmVJbnRlcm5hbChsZWZ0KSkKQEAgLTI3ODAsNyArMjc4MCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKCFtYXNrIHx8IG1hc2sgJiAobWFzayAr
IDEpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAg
dWludDY0X3Qgd2lkdGggPSBXVEY6OmJpdENvdW50KG1hc2spOwotICAgICAgICAgICAgICAgIHVp
bnQ2NF90IGRhdGFzaXplID0gb3Bjb2RlID09IFViZngzMiA/IDMyIDogNjQ7CisgICAgICAgICAg
ICAgICAgdWludDY0X3QgZGF0YXNpemUgPSBvcGNvZGUgPT0gRXh0cmFjdFVuc2lnbmVkQml0Zmll
bGQzMiA/IDMyIDogNjQ7CiAgICAgICAgICAgICAgICAgaWYgKGxzYiArIHdpZHRoID4gZGF0YXNp
emUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjc5Miw2ICsyNzky
LDI4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kVUJGWCgpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAorICAgICAgICAgICAgLy8gQklDIFBhdHRlcm46IGQgPSBuICYg
KG0gXiAtMSkKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQklDID0gWyZdIChWYWx1ZSogbGVm
dCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBv
cGNvZGUgPSBvcGNvZGVGb3JUeXBlKENsZWFyQml0c1dpdGhNYXNrMzIsIENsZWFyQml0c1dpdGhN
YXNrNjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9y
bShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSAKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChyaWdodC0+b3Bjb2RlKCkg
IT0gQml0WG9yIHx8ICFjYW5CZUludGVybmFsKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IGxlZnQ7Cisg
ICAgICAgICAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJpZ2h0LT5jaGlsZCgwKTsKKyAgICAgICAg
ICAgICAgICBWYWx1ZSogbWludXNPbmUgPSByaWdodC0+Y2hpbGQoMSk7CisgICAgICAgICAgICAg
ICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKG5WYWx1ZSkgfHwgbV9sb2NrZWQuY29udGFpbnMobVZh
bHVlKSB8fCAhbWludXNPbmUtPmhhc0ludCgpIHx8ICFtaW51c09uZS0+aXNJbnQoLTEpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBhcHBlbmQo
b3Bjb2RlLCB0bXAoblZhbHVlKSwgdG1wKG1WYWx1ZSksIHRtcChtX3ZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOworICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHRyeUFwcGVuZEJJQyhsZWZ0
LCByaWdodCkgfHwgdHJ5QXBwZW5kQklDKHJpZ2h0LCBsZWZ0KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisKICAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBBbmQ2NCwgQW5kRG91Ymxl
LCBBbmRGbG9hdCwgQ29tbXV0YXRpdmU+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMjgwNCw3ICsyODI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IC8vIFdoZXJlOiBtYXNrMSA9ICgoMSA8PCB3aWR0aCkgLSAxKQogICAgICAgICAgICAgLy8gICAg
ICAgIG1hc2syID0gfihtYXNrMSA8PCBsc2IpCiAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZEJG
SSA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkgLT4gYm9vbCB7Ci0gICAgICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShCaXRGaWVsZEluc2VydDMy
LCBCaXRGaWVsZEluc2VydDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIEFp
cjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoSW5zZXJ0Qml0RmllbGQzMiwgSW5zZXJ0
Qml0RmllbGQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoIWlzVmFs
aWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6SW1tLCBBcmc6OkltbSwgQXJnOjpUbXApKSAK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGlmIChs
ZWZ0LT5vcGNvZGUoKSAhPSBTaGwgfHwgIWNhbkJlSW50ZXJuYWwobGVmdCkpCkBAIC0yODI4LDcg
KzI4NTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHVpbnQ2NF90IG1hc2sxID0gbWFz
a1ZhbHVlMS0+YXNJbnQoKTsKICAgICAgICAgICAgICAgICBpZiAoIW1hc2sxIHx8IG1hc2sxICYg
KG1hc2sxICsgMSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29kZSA9PSBCaXRGaWVsZEluc2VydDMyID8g
MzIgOiA2NDsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29kZSA9PSBJ
bnNlcnRCaXRGaWVsZDMyID8gMzIgOiA2NDsKICAgICAgICAgICAgICAgICB1aW50NjRfdCB3aWR0
aCA9IFdURjo6Yml0Q291bnQobWFzazEpOwogICAgICAgICAgICAgICAgIGlmIChsc2IgKyB3aWR0
aCA+IGRhdGFzaXplKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yODk5
LDcgKzI5MjEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gVUJGSVogUGF0dGVybjogZCA9
IChuICYgbWFzaykgPDwgbHNiIAogICAgICAgICAgICAgLy8gV2hlcmU6IG1hc2sgPSAoMSA8PCB3
aWR0aCkgLSAxCiAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZFVCRlogPSBbJl0gKCkgLT4gYm9v
bCB7Ci0gICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShV
YmZpejMyLCBVYmZpejY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIEFpcjo6
T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoSW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVy
bzMyLCBJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvNjQsIG1fdmFsdWUtPnR5cGUoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6Oklt
bSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgICAgIGlmIChsZWZ0LT5vcGNvZGUoKSAhPSBCaXRBbmQgfHwgIWNhbkJl
SW50ZXJuYWwobGVmdCkpCkBAIC0yOTE1LDcgKzI5MzcsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGlmICghbWFzayB8fCBtYXNrICYgKG1hc2sgKyAxKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIHVpbnQ2NF90IHdpZHRoID0gV1RGOjpi
aXRDb3VudChtYXNrKTsKLSAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29k
ZSA9PSBVYmZpejMyID8gMzIgOiA2NDsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6
ZSA9IG9wY29kZSA9PSBJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvMzIgPyAzMiA6IDY0Owog
ICAgICAgICAgICAgICAgIGlmIChsc2IgKyB3aWR0aCA+IGRhdGFzaXplKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Jl
ZHVjZVN0cmVuZ3RoLmNwcAppbmRleCAzZGRhZGU3NzA4ZWI0YzdiNDJjNTdiYmEwNjI5YzZlOWZk
ZjY1OGZkLi5hNmI3MDM4MWYzNGE5NTViZDk0YTBmZjgzM2EzMTQ1Y2JlOTU4ZGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC02MjcsNiAr
NjI3LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtX3Zh
bHVlLT5pc0ludGVnZXIoKSkgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU3ViKE5l
Zyh2YWx1ZSksIDEpCisgICAgICAgICAgICAgICAgLy8gSW50byB0aGlzOiBCaXRYb3IodmFsdWUs
IC0xKQorICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0g
TmVnICYmIG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludCgxKSkgeworICAgICAgICAgICAgICAgICAg
ICBWYWx1ZSogbWludXNPbmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGls
ZCgwKS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQzMikKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1pbnVzT25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0MzJWYWx1ZT4obV9pbmRleCwg
bV92YWx1ZS0+b3JpZ2luKCksIC0xKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgbWludXNPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3Q2
NFZhbHVlPihtX2luZGV4LCBtX3ZhbHVlLT5vcmlnaW4oKSwgLTEpOworICAgICAgICAgICAgICAg
ICAgICByZXBsYWNlV2l0aE5ldzxWYWx1ZT4oQml0WG9yLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92
YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApLCBtaW51c09uZSk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhp
czogU3ViKHZhbHVlLCBjb25zdGFudCkKICAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEFk
ZCh2YWx1ZSwgLWNvbnN0YW50KQogICAgICAgICAgICAgICAgIGlmIChWYWx1ZSogbmVnYXRlZENv
bnN0YW50ID0gbV92YWx1ZS0+Y2hpbGQoMSktPm5lZ0NvbnN0YW50KG1fcHJvYykpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IGE2YTE1
ODg2NzNhNDI1MWIzMTRmNDBiNjcxZThkYzM0ZWEyZDU0NjEuLmU1OTFjNDYzOWE1ODlkNWFjODE5
MTk1MmY1MTllMzg0ZjVkZGRhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3Bjb2RlLm9wY29kZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAtMzYzLDI0ICszNjMsNiBAQCBBbmQzMiBVOkc6MzIsIFVa
RDpHOjMyCiAgICAgeDg2OiBJbW0sIEFkZHIKICAgICB4ODY6IEltbSwgSW5kZXgKIAotYXJtNjQ6
IFViZngzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCi0gICAgVG1wLCBJbW0sIElt
bSwgVG1wCi0KLWFybTY0OiBVYmZ4NjQgVTpHOjY0LCBVOkc6MzIsIFU6RzozMiwgRDpHOjY0Ci0g
ICAgVG1wLCBJbW0sIEltbSwgVG1wCi0KLWFybTY0OiBVYmZpejMyIFU6RzozMiwgVTpHOjMyLCBV
Okc6MzIsIFpEOkc6MzIKLSAgICBUbXAsIEltbSwgSW1tLCBUbXAKLQotYXJtNjQ6IFViZml6NjQg
VTpHOjY0LCBVOkc6MzIsIFU6RzozMiwgRDpHOjY0Ci0gICAgVG1wLCBJbW0sIEltbSwgVG1wCi0K
LWFybTY0OiBCaXRGaWVsZEluc2VydDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIK
LSAgICBUbXAsIEltbSwgSW1tLCBUbXAKLQotYXJtNjQ6IEJpdEZpZWxkSW5zZXJ0NjQgVTpHOjY0
LCBVOkc6MzIsIFU6RzozMiwgRDpHOjY0Ci0gICAgVG1wLCBJbW0sIEltbSwgVG1wCi0KIDY0OiBB
bmQ2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcAogICAgIGFybTY0
OiBCaXRJbW02NCwgVG1wLCBUbXAKQEAgLTgzMCw2ICs4MTIsMzYgQEAgeDg2XzY0OiBYY2hnNjQg
VUQ6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cwogICAgIFRtcCwgQWRkcgogICAgIFRtcCwgSW5kZXgK
IAorYXJtNjQ6IEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIgVTpHOjMyLCBVOkc6MzIsIFU6Rzoz
MiwgWkQ6RzozMgorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCithcm02NDogRXh0cmFjdFVuc2ln
bmVkQml0ZmllbGQ2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKKyAgICBUbXAsIElt
bSwgSW1tLCBUbXAKKworYXJtNjQ6IEluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm8zMiBVOkc6
MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBJbW0sIEltbSwgVG1wCisKK2Fy
bTY0OiBJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvNjQgVTpHOjY0LCBVOkc6MzIsIFU6Rzoz
MiwgRDpHOjY0CisgICAgVG1wLCBJbW0sIEltbSwgVG1wCisKK2FybTY0OiBJbnNlcnRCaXRGaWVs
ZDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIEltbSwgSW1tLCBU
bXAKKworYXJtNjQ6IEluc2VydEJpdEZpZWxkNjQgVTpHOjY0LCBVOkc6MzIsIFU6RzozMiwgRDpH
OjY0CisgICAgVG1wLCBJbW0sIEltbSwgVG1wCisKK2FybTY0OiBDbGVhckJpdEZpZWxkMzIgVTpH
OjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBJbW0sIEltbSwgVG1wCisKK2FybTY0OiBDbGVhckJp
dEZpZWxkNjQgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAorICAgIEltbSwgSW1tLCBUbXAKKworYXJt
NjQ6IENsZWFyQml0c1dpdGhNYXNrMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAs
IFRtcCwgVG1wCisKK2FybTY0OiBDbGVhckJpdHNXaXRoTWFzazY0IFU6Rzo2NCwgVTpHOjY0LCBE
Okc6NjQKKyAgICBUbXAsIFRtcCwgVG1wCisKICMgVGhlIGZpcnN0IG9wZXJhbmQgaXMgcmF4Lgog
IyBGSVhNRTogVGhpcyBmb3JtdWxhdGlvbiBtZWFucyB0aGF0IHRoZSBib29sZWFuIHJlc3VsdCBj
YW5ub3QgYmUgcHV0IGluIGVheCwgZXZlbiB0aG91Z2ggYWxsIHVzZXJzCiAjIG9mIHRoaXMgd291
bGQgYmUgT0sgd2l0aCB0aGF0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDQ0YzBh
NTBiYTExMjkwY2U2MWU0OGQ2ODNhNDFjZWQxYmJiNWMyNTYuLjBkZTcyYzFhNWQ5MTZiZjFjMDJk
YzBkNWJiOWI2N2ZjNWVlOWMxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTQy
OCw4ICs0MjgsMTAgQEAgdm9pZCB0ZXN0VWJmaXo2NEFuZFNoaWZ0VmFsdWVNYXNrKCk7CiB2b2lk
IHRlc3RVYmZpejY0QW5kU2hpZnRNYXNrVmFsdWUoKTsKIHZvaWQgdGVzdFViZml6NjRTaGlmdEFu
ZCgpOwogdm9pZCB0ZXN0VWJmaXo2NEFuZFNoaWZ0KCk7Ci12b2lkIHRlc3RCaXRGaWVsZEluc2Vy
dDMyKCk7Ci12b2lkIHRlc3RCaXRGaWVsZEluc2VydDY0KCk7Cit2b2lkIHRlc3RJbnNlcnRCaXRG
aWVsZDMyKCk7Cit2b2lkIHRlc3RJbnNlcnRCaXRGaWVsZDY0KCk7Cit2b2lkIHRlc3RCSUMzMigp
Owordm9pZCB0ZXN0QklDNjQoKTsKIHZvaWQgdGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1t
TWFzazMyKCk7CiB2b2lkIHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2s2NCgpOwog
dm9pZCB0ZXN0QmFzaWNTZWxlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3Bw
CmluZGV4IDk0YTdlMzRjYzdkODA5ZGM5MmQwZGNkNDcyOTRlZmJiMDMxN2ZjZWQuLmE1NWI0NTdj
ZTFhYjk3YmM5NWNiNTdlMjRkMWZkMjY4Y2FhNTRjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiM18yLmNwcApAQCAtMzE1OCw3ICszMTU4LDcgQEAgdm9pZCB0ZXN0VWJmaXo2NEFuZFNo
aWZ0KCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0MzIoKQordm9pZCB0ZXN0
SW5zZXJ0Qml0RmllbGQzMigpCiB7CiAgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0
TGV2ZWwoKSA8IDIpCiAgICAgICAgIHJldHVybjsKQEAgLTMyMzYsNyArMzIzNiw3IEBAIHZvaWQg
dGVzdEJpdEZpZWxkSW5zZXJ0MzIoKQogICAgIH0KIH0KIAotdm9pZCB0ZXN0Qml0RmllbGRJbnNl
cnQ2NCgpCit2b2lkIHRlc3RJbnNlcnRCaXRGaWVsZDY0KCkKIHsKICAgICBpZiAoSlNDOjpPcHRp
b25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKICAgICAgICAgcmV0dXJuOwpAQCAtNDE4NCw2
ICs0MTg0LDEyMiBAQCBzdGF0aWMgdm9pZCB0ZXN0Qml0T3JJbW1BcmczMihpbnQgYSwgaW50IGIp
CiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IChhIHwgYikpOwogfQog
Cit2b2lkIHRlc3RCSUMzMigpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0
TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9
IG4gJiAoLW0gLSAxKQorICAgIGF1dG8gdGVzdDEgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBt
KSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
IAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGNvbnN0
MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKwor
ICAgICAgICBWYWx1ZSogbmVnVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5l
ZywgT3JpZ2luKCksIG1WYWx1ZSk7CisgICAgICAgIFZhbHVlKiBzdWJWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgbmVnVmFsdWUsIGNvbnN0MSk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXRBbmQsIE9yaWdpbigpLCBuVmFsdWUsIHN1YlZhbHVlKSk7CisKKyAgICAgICAgYXV0byBj
b2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJpYyIpOworICAgICAgICByZXR1cm4g
aW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgLy8gVGVzdCBQYXR0
ZXJuOiBkID0gbiAmIChtIF4gLTEpCisgICAgYXV0byB0ZXN0MiA9IFsmXSAoaW50MzJfdCBuLCBp
bnQzMl90IG0pIC0+IGludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSog
bVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5j
LCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1
ZSogbWludXNPbmVWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAtMSk7CisKKyAgICAgICAgVmFsdWUqIHhvclZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBtVmFsdWUsIG1pbnVzT25lVmFsdWUpOwor
ICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0QW5kLCBPcmlnaW4oKSwgblZhbHVlLCB4b3JWYWx1ZSkpOworCisgICAgICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJiaWMiKTsKKyAgICAgICAgcmV0dXJu
IGludm9rZTxpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBu
IDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5k
cygpKSB7CisgICAgICAgICAgICBDSEVDSyh0ZXN0MShuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52
YWx1ZSAmICgtbS52YWx1ZSAtIDEpKSk7CisgICAgICAgICAgICBDSEVDSyh0ZXN0MihuLnZhbHVl
LCBtLnZhbHVlKSA9PSAobi52YWx1ZSAmIChtLnZhbHVlIF4gLTEpKSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgdGVzdEJJQzY0KCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZh
dWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGVzdCBQYXR0
ZXJuOiBkID0gZCA9IG4gJiAoLW0gLSAxKQorICAgIGF1dG8gdGVzdDEgPSBbJl0gKGludDY0X3Qg
biwgaW50NjRfdCBtKSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUq
IG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGNvbnN0MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKworICAgICAgICBWYWx1ZSogbmVnVmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG1WYWx1ZSk7Cisg
ICAgICAgIFZhbHVlKiBzdWJWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3Vi
LCBPcmlnaW4oKSwgbmVnVmFsdWUsIGNvbnN0MSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBuVmFs
dWUsIHN1YlZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7
CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bigqY29kZSwgImJpYyIpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBu
LCBtKTsKKyAgICB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAmIChtIF4gLTEpCisg
ICAgYXV0byB0ZXN0MiA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0pIC0+IGludDY0X3Qgewor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSog
bWludXNPbmVWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCAtMSk7CisKKyAgICAgICAgVmFsdWUqIHhvclZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBtVmFsdWUsIG1pbnVzT25lVmFsdWUpOworICAg
ICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0QW5kLCBPcmlnaW4oKSwgblZhbHVlLCB4b3JWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJiaWMiKTsKKyAgICAgICAgcmV0dXJuIGlu
dm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuIDog
aW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygp
KSB7CisgICAgICAgICAgICBDSEVDSyh0ZXN0MShuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1
ZSAmICgtbS52YWx1ZSAtIDFMTCkpKTsKKyAgICAgICAgICAgIENIRUNLKHRlc3QyKG4udmFsdWUs
IG0udmFsdWUpID09IChuLnZhbHVlICYgKG0udmFsdWUgXiAtMUxMKSkpOworICAgICAgICB9Cisg
ICAgfQorfQorCiB2b2lkIGFkZEJpdFRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVm
UHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKIHsKICAgICBSVU4odGVzdFViZngzMlNo
aWZ0QW5kKCkpOwpAQCAtNDE5OCw4ICs0MzE0LDEwIEBAIHZvaWQgYWRkQml0VGVzdHMoY29uc3Qg
Y2hhciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tzKQog
ICAgIFJVTih0ZXN0VWJmaXo2NEFuZFNoaWZ0TWFza1ZhbHVlKCkpOwogICAgIFJVTih0ZXN0VWJm
aXo2NFNoaWZ0QW5kKCkpOwogICAgIFJVTih0ZXN0VWJmaXo2NEFuZFNoaWZ0KCkpOwotICAgIFJV
Tih0ZXN0Qml0RmllbGRJbnNlcnQzMigpKTsKLSAgICBSVU4odGVzdEJpdEZpZWxkSW5zZXJ0NjQo
KSk7CisgICAgUlVOKHRlc3RJbnNlcnRCaXRGaWVsZDMyKCkpOworICAgIFJVTih0ZXN0SW5zZXJ0
Qml0RmllbGQ2NCgpKTsKKyAgICBSVU4odGVzdEJJQzMyKCkpOworICAgIFJVTih0ZXN0QklDNjQo
KSk7CiAgICAgUlVOKHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2szMigpKTsKICAg
ICBSVU4odGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazY0KCkpOwogICAgIFJVTih0
ZXN0Qml0QW5kQXJncyg0MywgNDMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCAyN2I2MzFkNGNjNzNhZDViYTAxY2RjOTI4Yjc3OGE0Mzli
YzBlZGYyLi4zZDA4NzI4MDgyN2QyYWVmN2MzMmVlZDJhZmQxODYyZjRjMzlhZGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNjc1NCw3
ICsxNjc1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtZXJnZS0+YXBwZW5kU29tZVJlZ2lz
dGVyKHB0cik7CiAgICAgICAgICAgICBtZXJnZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAg
ICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwot
ICAgICAgICAgICAgICAgIGppdC5iaXRGaWVsZEluc2VydDY0KHBhcmFtc1sxXS5ncHIoKSwgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDY0
IC0gTWFjcm9Bc3NlbWJsZXI6Om1heE51bWJlck9mQWxsb3dlZFBBQ0JpdHMpLCBwYXJhbXNbMF0u
Z3ByKCkpOworICAgICAgICAgICAgICAgIGppdC5pbnNlcnRCaXRGaWVsZDY0KHBhcmFtc1sxXS5n
cHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKDY0IC0gTWFjcm9Bc3NlbWJsZXI6Om1heE51bWJlck9mQWxsb3dlZFBBQ0JpdHMpLCBw
YXJhbXNbMF0uZ3ByKCkpOwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIHJlc3VsdCA9
IGRvVW50YWdBcnJheVB0cihtZXJnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAKaW5kZXggNDk4MTdhN2FkZDU0MGI3MTZmZWUyNmRlNDM3NmM2MTA4
MjdlNTdlMi4uZDM2ZWI3MWI5YWRkMzZkNDQyNjQ5ODRiODdkZWQyMDIwYjczYTA2NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMTExMSw3
ICsxMTExLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNhZ2VXaXRob3V0VW50YWdnaW5nKEdp
Z2FjYWdlOjpLaW5kIGtpbmQsIEdQUlJlZyBzdG9yYWdlKQogICAgIGFkZFB0cihUcnVzdGVkSW1t
UHRyKEdpZ2FjYWdlOjpiYXNlUHRyKGtpbmQpKSwgc3RvcmFnZSk7CiAjaWYgQ1BVKEFSTTY0RSkK
ICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKQotICAgICAgICBiaXRGaWVsZElu
c2VydDY0KHN0b3JhZ2UsIFRydXN0ZWRJbW0zMigwKSwgVHJ1c3RlZEltbTMyKDY0IC0gbWF4TnVt
YmVyT2ZBbGxvd2VkUEFDQml0cyksIHRlbXBSZWcpOworICAgICAgICBpbnNlcnRCaXRGaWVsZDY0
KHN0b3JhZ2UsIFRydXN0ZWRJbW0zMigwKSwgVHJ1c3RlZEltbTMyKDY0IC0gbWF4TnVtYmVyT2ZB
bGxvd2VkUEFDQml0cyksIHRlbXBSZWcpOwogICAgIGlmIChza2lwLmlzU2V0KCkpCiAgICAgICAg
IHNraXAubGluayh0aGlzKTsKICNlbmRpZgpAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgdm9pZCBBc3Nl
bWJseUhlbHBlcnM6OmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWcoR2lnYWNhZ2U6OktpbmQga2lu
ZCwgR1BSUmVnIHN0b3IKICAgICAgICAgICAgIEFTU0VSVChMb2dpY2FsSW1tZWRpYXRlOjpjcmVh
dGU2NChHaWdhY2FnZTo6bWFzayhraW5kKSkuaXNWYWxpZCgpKTsKICAgICAgICAgICAgIGFuZFB0
cihUcnVzdGVkSW1tUHRyKEdpZ2FjYWdlOjptYXNrKGtpbmQpKSwgdGVtcFJlZyk7CiAgICAgICAg
ICAgICBhZGRQdHIoc2NyYXRjaCwgdGVtcFJlZyk7Ci0gICAgICAgICAgICBiaXRGaWVsZEluc2Vy
dDY0KHRlbXBSZWcsIFRydXN0ZWRJbW0zMigwKSwgVHJ1c3RlZEltbTMyKDY0IC0gbWF4TnVtYmVy
T2ZBbGxvd2VkUEFDQml0cyksIHN0b3JhZ2UpOworICAgICAgICAgICAgaW5zZXJ0Qml0RmllbGQ2
NCh0ZW1wUmVnLCBUcnVzdGVkSW1tMzIoMCksIFRydXN0ZWRJbW0zMig2NCAtIG1heE51bWJlck9m
QWxsb3dlZFBBQ0JpdHMpLCBzdG9yYWdlKTsKICNlbHNlCiAgICAgICAgICAgICBhbmRQdHIoVHJ1
c3RlZEltbVB0cihHaWdhY2FnZTo6bWFzayhraW5kKSksIHN0b3JhZ2UpOwogICAgICAgICAgICAg
YWRkUHRyKHNjcmF0Y2gsIHN0b3JhZ2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432343</attachid>
            <date>2021-06-26 22:03:23 -0700</date>
            <delta_ts>2021-06-26 22:14:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227202-20210627000321.patch</filename>
            <type>text/plain</type>
            <size>43101</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
M2RjMjc2YWQxOWE3YTc3NTE4MWFlMzdkMThhYTkzNWYxMGQ2ZGZkLi40MDM1ZWEyMGIwN2FiZDFh
OWU5MzcyZmVkMGI1MWZjZTNmZmZiNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTQgQEAKKzIwMjEtMDYtMjYgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBhIG5ldyBwYXR0ZXJuIHRvIGluc3RydWN0aW9uIHNlbGVjdG9y
IHRvIHVzZSBCSUMgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHRocmVlIG1vZGlmaWNh
dGlvbnM6CisgICAgICAgICAgICAxLiBBZGQgYml0IGNsZWFyIChCSUMpIHRvIEFpciBvcGNvZGUg
dG8gc2VydmUgaW50cnVjaXRvbiBzZWxlY3Rvci4KKyAgICAgICAgICAgIDIuIEFkZCBiaXRmaWVs
ZCBjbGVhciAoQkZDKSB0byBBaXIgb3Bjb2RlLgorICAgICAgICAgICAgMy4gRG8gcmVmYWN0b3Jp
bmcgLSByZW5hbWUgQWlyIG9wY29kZXMgYWRkZWQgaW4gdGhlIHByZXZpb3VzIHBhdGNoZXMuCisK
KyAgICAgICAgUGFydCBBCisgICAgICAgIEdpdmVuIHRoZSBvcGVyYXRpb246CisKKyAgICAgICAg
YmljIFJkLCBSbiwgUm0KKworICAgICAgICBUaGUgQklDIChCaXQgQ2xlYXIpIGluc3RydWN0aW9u
IHBlcmZvcm1zIGFuIEFORCBvcGVyYXRpb24gb24gdGhlIGJpdHMgaW4gUm4gd2l0aCB0aGUgCisg
ICAgICAgIGNvbXBsZW1lbnRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlIHZhbHVl
IG9mIFJtLiBUaGUgaW5zdHJ1Y3Rpb24gc2VsZWN0b3IgY2FuIAorICAgICAgICB1dGlsaXplIHRo
aXMgdG8gbG93ZXJpbmcgY2VydGFpbiBwYXR0ZXJucyBpbiBCMyBJUiBiZWZvcmUgZnVydGhlciBB
aXIgb3B0aW1pemF0aW9uLiAKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybnMgb2YgdGhp
cyBpbnN0cnVjdGlvbiBhcmU6CisKKyAgICAgICAgUGF0dGVybiAxOgorICAgICAgICAgICAgZCA9
IG4gJiAoLW0gLSAxKQorCisgICAgICAgIFBhdHRlcm4gMjoKKyAgICAgICAgICAgIGQgPSBuICYg
KG0gXiAtMSkKKworICAgICAgICBJbiBvcmRlciB0byBnZXQgYmVuZWZpdHMgZm9yIGNvbXBsZW1l
bnQgb3BlcmF0aW9uLCBjdXJyZW50IGluc3RydWN0aW9uIHNlbGVjdG9yIHVzZXMgCisgICAgICAg
IG12biBpbnN0cnVjdGlvbiB0byBsb3dlciB0aGUgcGF0dGVybiB2YWx1ZSBeIC0xLiBUaGVuLCBh
IG5ldyBzdHJlbmd0aCByZWR1Y3Rpb24gcnVsZSBpcyAKKyAgICAgICAgaW50cm9kdWNlZDoKKyAg
ICAgICAgICAgIFR1cm4gdGhpczogLXZhbHVlIC0gMSAKKyAgICAgICAgICAgIEludG8gdGhpczog
dmFsdWUgXiAtMQorCisgICAgICAgIFNvLCBkID0gbiAmIChtIF4gLTEpIGlzIHNlbGVjdGVkIGFz
IHRoZSBjYW5vbmljYWwgZm9ybS4KKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50
IEAwID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJbnQgQDEgPSBBcmd1bWVudFJlZygleDEp
CisgICAgICAgIEludCBAMiA9IC0xCisgICAgICAgIEludCBAMyA9IEJpdFhvcihAMSwgQDIpCisg
ICAgICAgIEludCBANCA9IEJpdEFuZChAMCwgQDMpCisgICAgICAgIFZvaWRANSA9IFJldHVybihA
NCwgVGVybWluYWwpCisKKyAgICAgICAgQmVmb3JlIEFkZGluZyBCSUM6CisgICAgICAgIC8vIE9s
ZCBvcHRpbWl6ZWQgQUlSCisgICAgICAgIE5vdCAleDEsICV4MSwgICAgICBAMworICAgICAgICBB
bmQgJXgwLCAleDEsICV4MCwgQDQKKyAgICAgICAgUmV0ICV4MCwgICAgICAgICAgIEA1CisKKyAg
ICAgICAgQWZ0ZXIgQWRkaW5nIEJJQzoKKyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAg
ICAgICAgQmljICV4MCwgJXgxLCAleDAsIEA0CisgICAgICAgIFJldCAleDAsICAgICAgICAgICBA
NQorCisgICAgICAgIFBhcnQgQgorICAgICAgICBUaGUgQml0ZmllbGQgQ2xlYXIgKEJGQyksIGxl
YXZpbmcgb3RoZXIgYml0cyB1bmNoYW5nZWQsIGlzIHNpbWlsYXIgdG8gQkZJIHdoaWNoIGlzIGFu
IAorICAgICAgICBhbGlhcyBvZiBCRk0uIEdpdmVuIHRoZSBvcGVyYXRpb246CisKKyAgICAgICAg
YmZjIFJkLCBsc2IsIHdpZHRoCisKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybiBvZiB0
aGlzIGluc3RydWN0aW9uIGlzOgorCisgICAgICAgIG1hc2sgPSAoKDEgPDwgd2lkdGgpIC0gMSkg
PDwgbHNiCisgICAgICAgIGQgPSBkICYgfm1hc2sKKworICAgICAgICBTaW5jZSBtYXNrIGlzIGEg
Y29uc3RhbnQgYW5kIEIzIHBlcmZvcm1zIGNvbnN0YW50IGZvbGQgaW4gdGhlIG9wdGltaXphdGlv
biBwaGFzZSwgdGhpcyAKKyAgICAgICAgcGF0dGVybiB3aWxsIGRpcmVjdGx5IGxvd2VyIHRvIHRo
ZSBCaXRBbmQgYmluYXJ5IG9wZXJhdGlvbi4gU28sIG5vIG5lZWQgdG8gbWF0Y2ggdGhpcyBwYXR0
ZXJuLgorCisgICAgICAgIFBhcnQgQworICAgICAgICBBdCBNYWNyb0Fzc2VtYmxlciBsZXZlbCwg
dGhlIGVtaXR0ZXJzIGFyZSBleGVwZWN0ZWQgdG8gYmUgZXhwcmVzc2VkIGluIGVuZ2xpc2ggCisg
ICAgICAgIChlLmcuIHNvbWV0aGluZyBsaWtlIGNsZWFyQml0RmllbGQgZm9yIEJGQykuIERvIHJl
ZmFjdG9yaW5nIHRvIHJlbmFtZSBBaXIgb3Bjb2RlIGZvciAKKyAgICAgICAgdWJmeCwgdWJmaXos
IGJmaSwgYW5kIGJpYy4KKworICAgICAgICAqIGFzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oOgor
ICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6YmZjKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
Ojp1bnNpZ25lZEJpdGZpZWxkRXh0cmFjdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6dW5zaWduZWRCaXRmaWVsZEV4dHJhY3Q2NCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OnVuc2lnbmVkQml0ZmllbGRJbnNlcnRJblplcm8zMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnVuc2lnbmVkQml0ZmllbGRJbnNlcnRJblplcm82
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpdENsZWFyV2l0aE1hc2sz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpdENsZWFyV2l0aE1hc2s2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpdEZpZWxkQ2xlYXIzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpdEZpZWxkQ2xlYXI2NCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZngzMik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZng2NCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZml6MzIpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZpejY0KTogRGVsZXRlZC4KKyAgICAgICAgKiBh
c3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0Qml0Q2xlYXJXaXRoTWFz
azMyKToKKyAgICAgICAgKEpTQzo6dGVzdEJpdENsZWFyV2l0aE1hc2s2NCk6CisgICAgICAgIChK
U0M6OnRlc3RVbnNpZ25lZEJpdGZpZWxkRXh0cmFjdDMyKToKKyAgICAgICAgKEpTQzo6dGVzdFVu
c2lnbmVkQml0ZmllbGRFeHRyYWN0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0VW5zaWduZWRCaXRm
aWVsZEluc2VydEluWmVybzMyKToKKyAgICAgICAgKEpTQzo6dGVzdFVuc2lnbmVkQml0ZmllbGRJ
bnNlcnRJblplcm82NCk6CisgICAgICAgIChKU0M6OnRlc3RCaXRGaWVsZENsZWFyMzIpOgorICAg
ICAgICAoSlNDOjp0ZXN0Qml0RmllbGRDbGVhcjY0KToKKyAgICAgICAgKEpTQzo6dGVzdFViZngz
Mik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RVYmZ4NjQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjp0ZXN0VWJmaXozMik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RVYmZpejY0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIz
L0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
czoKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6Cisg
ICAgICAgICh0ZXN0QklDMzIpOgorICAgICAgICAodGVzdEJJQzY0KToKKyAgICAgICAgKGFkZEJp
dFRlc3RzKToKKwogMjAyMS0wNi0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIGxkcCBhbmQgc3RwIG1vcmUgZm9yIHNhdmluZyAvIHJlc3RvcmluZyByZWdp
c3RlcnMgb24gQVJNNjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTTY0QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FS
TTY0QXNzZW1ibGVyLmgKaW5kZXggNzU4Y2JlNDAyNzc5OGU4MzFkMmQwM2NhODQ4ZWQ4YjA0ODM2
NWUxNC4uY2I0Y2IxYmMwNzMwMWRlOGU2MmJmYmJlZWRiNzFjZTQ3NDhjYmQ1OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaApAQCAtODMy
LDYgKzgzMiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGluc24oY29uZGl0aW9uYWxCcmFuY2hJbW1l
ZGlhdGUob2Zmc2V0LCBjb25kKSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXpl
PgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBiZmMoUmVnaXN0ZXJJRCByZCwgaW50IGxzYiwgaW50
IHdpZHRoKQorICAgIHsKKyAgICAgICAgYmZpPGRhdGFzaXplPihyZCwgQVJNNjRSZWdpc3RlcnM6
OnpyLCBsc2IsIHdpZHRoKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGJmaShSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBp
bnQgbHNiLCBpbnQgd2lkdGgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCAwNjliZDQ2YjM5NDFjMGE4
NmU4ZTNhMzY5OTQ0YWE0YTkwYmMwNzVkLi4yNmQ5ZTUxM2MxZDdkODdlYmFiMGQxYmZlMzZkZTQ2
NDkxOTg5OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMzkwLDI2ICszOTAsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIGFuZDMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAgIH0KIAotICAgIHZvaWQgdWJm
eDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgs
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnViZng8MzI+KGRl
c3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOwotICAgIH0KLQotICAgIHZvaWQg
dWJmeDY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lk
dGgsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnViZng8NjQ+
KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOwotICAgIH0KLQotICAgIHZv
aWQgdWJmaXozMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMy
IHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci51YmZp
ejwzMj4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Ci0gICAgfQotCi0g
ICAgdm9pZCB1YmZpejY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVk
SW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LnViZml6PDY0PihkZXN0LCBzcmMsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKLSAgICB9
Ci0KICAgICB2b2lkIGFuZDY0KFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRfPDY0PihkZXN0LCBz
cmMxLCBzcmMyKTsKQEAgLTQ2OCw2ICs0NDgsNjcgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5hbmRfPDY0PihkZXN0LCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAg
ICAvLyBCaXQgT3BlcmF0aW9uczoKKyAgICB2b2lkIGV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIo
UmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudWJmeDwzMj4oZGVzdCwg
c3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBleHRy
YWN0VW5zaWduZWRCaXRmaWVsZDY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBU
cnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnViZng8NjQ+KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOwor
ICAgIH0KKworICAgIHZvaWQgaW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyKFJlZ2lzdGVy
SUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnViZml6PDMyPihkZXN0LCBzcmMsIGxz
Yi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGluc2VydFVuc2ln
bmVkQml0ZmllbGRJblplcm82NChSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1
c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci51YmZpejw2ND4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Cisg
ICAgfQorCisgICAgdm9pZCBpbnNlcnRCaXRGaWVsZDMyKFJlZ2lzdGVySUQgc291cmNlLCBUcnVz
dGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmJmaTwzMj4oZGVzdCwgc291cmNlLCBsc2IubV92YWx1ZSwg
d2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBpbnNlcnRCaXRGaWVsZDY0KFJlZ2lz
dGVySUQgc291cmNlLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJmaTw2ND4oZGVzdCwgc291
cmNlLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBjbGVh
ckJpdEZpZWxkMzIoVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iZmM8MzI+KGRlc3QsIGxzYi5t
X3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQml0RmllbGQ2
NChUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJmYzw2ND4oZGVzdCwgbHNiLm1fdmFsdWUsIHdp
ZHRoLm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJCaXRzV2l0aE1hc2szMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5iaWM8MzI+KGRlc3QsIHNyYywgbWFzayk7CisgICAgfQorCisgICAg
dm9pZCBjbGVhckJpdHNXaXRoTWFzazY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIG1hc2ss
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJpYzw2ND4oZGVz
dCwgc3JjLCBtYXNrKTsKKyAgICB9CisKKyAgICB2b2lkIG9yTm90MzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JuPDMyPihkZXN0LCBzcmMsIG1hc2spOworICAgIH0KKworICAgIHZvaWQgb3JOb3Q2
NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5vcm48NjQ+KGRlc3QsIHNyYywgbWFzayk7CisgICAgfQor
CiAgICAgdm9pZCBjbGVhckJpdDY0KFJlZ2lzdGVySUQgYml0VG9DbGVhciwgUmVnaXN0ZXJJRCBk
ZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2hGb3JNYXNrID0gSW52YWxpZEdQUlJlZykKICAgICB7CiAg
ICAgICAgIGlmIChzY3JhdGNoRm9yTWFzayA9PSBJbnZhbGlkR1BSUmVnKQpAQCAtMjc1MiwxOCAr
Mjc5Myw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuZmNzZWw8NjQ+KGRlc3QsIHRo
ZW5DYXNlLCBlbHNlQ2FzZSwgQVJNNjRDb25kaXRpb24oY29uZCkpOwogICAgIH0KIAotICAgIC8v
IEJpdCBmaWVsZCBvcGVyYXRpb25zOgotICAgIHZvaWQgYml0RmllbGRJbnNlcnQzMihSZWdpc3Rl
cklEIHNvdXJjZSwgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3Rl
cklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5iZmk8MzI+KGRlc3QsIHNvdXJj
ZSwgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOwotICAgIH0KLQotICAgIC8vIGRlc3RCaXRP
ZmZzZXQgaXMgdGhlIHRvcCBiaXQgb2YgdGhlIGRlc3RpbmF0aW9uIHdoZXJlIHRoZSBiaXRzIHNo
b3VsZCBiZSBjb3BpZWQgdG8uIFplcm8gaXMgdGhlIGxvd2VzdCBvcmRlciBiaXQuCi0gICAgdm9p
ZCBiaXRGaWVsZEluc2VydDY0KFJlZ2lzdGVySUQgc291cmNlLCBUcnVzdGVkSW1tMzIgbHNiLCBU
cnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmJmaTw2ND4oZGVzdCwgc291cmNlLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7
Ci0gICAgfQotCiAgICAgLy8gRm9yd2FyZHMgLyBleHRlcm5hbCBjb250cm9sIGZsb3cgb3BlcmF0
aW9uczoKICAgICAvLwogICAgIC8vIFRoaXMgc2V0IG9mIGp1bXAgYW5kIGNvbmRpdGlvbmFsIGJy
YW5jaCBvcGVyYXRpb25zIHJldHVybiBhIEp1bXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggYzljZjk2OGI3YjQ1ZjQyMzg3ZWRjN2ZkNjY5M2Yw
OWQ1M2VlNmE1MC4uMjcyMTUzN2U5MmY1Y2U3YWExYTQ5ZDExNjJkMzZlOTJhMjlhMWJjMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTkwNCw3
ICs5MDQsNyBAQCB2b2lkIHRlc3RNdWwzMldpdGhJbW1lZGlhdGVzKCkKIH0KIAogI2lmIENQVShB
Uk02NCkKLXZvaWQgdGVzdE11bDMyU2lnbkV4dGVuZCgpCit2b2lkIHRlc3RNdWx0aXBseVNpZ25F
eHRlbmQzMigpCiB7CiAgICAgZm9yIChhdXRvIHZhbHVlIDogaW50MzJPcGVyYW5kcygpKSB7CiAg
ICAgICAgIGF1dG8gbXVsID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CkBAIC0x
MDg5LDcgKzEwODksNyBAQCB2b2lkIHRlc3RTdWI2NEFyZ0ltbTY0KCkKICAgICB9CiB9CiAKLXZv
aWQgdGVzdE11bFN1YlNpZ25FeHRlbmQzMigpCit2b2lkIHRlc3RNdWx0aXBseVN1YlNpZ25FeHRl
bmQzMigpCiB7CiAgICAgLy8gZCA9IGEgLSBTRXh0MzIobikgKiAgU0V4dDMyKG0pCiAgICAgYXV0
byBzdWIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKQEAgLTExMTIsNyArMTEx
Miw3IEBAIHZvaWQgdGVzdE11bFN1YlNpZ25FeHRlbmQzMigpCiAgICAgfQogfQogCi12b2lkIHRl
c3RVYmZ4MzIoKQordm9pZCB0ZXN0RXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMigpCiB7CiAgICAg
dWludDMyX3Qgc3JjID0gMHhmMGYwZjBmMDsKICAgICBWZWN0b3I8dWludDMyX3Q+IGltbXMgPSB7
IDAsIDEsIDUsIDcsIDMwLCAzMSwgMzIsIDQyLCA1NiwgNjIsIDYzLCA2NCB9OwpAQCAtMTEyMiw3
ICsxMTIyLDcgQEAgdm9pZCB0ZXN0VWJmeDMyKCkKICAgICAgICAgICAgICAgICBhdXRvIHViZngz
MiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgICAgICAg
ICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCi0gICAgICAgICAgICAgICAgICAgIGppdC51
YmZ4MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgaml0LmV4
dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAogICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKICAg
ICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTExMzYs
NyArMTEzNiw3IEBAIHZvaWQgdGVzdFViZngzMigpCiAgICAgfQogfQogCi12b2lkIHRlc3RVYmZ4
NjQoKQordm9pZCB0ZXN0RXh0cmFjdFVuc2lnbmVkQml0ZmllbGQ2NCgpCiB7CiAgICAgdWludDY0
X3Qgc3JjID0gMHhmMGYwZjBmMGYwZjBmMGYwOwogICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9
IHsgMCwgMSwgNSwgNywgMzAsIDMxLCAzMiwgNDIsIDU2LCA2MiwgNjMsIDY0IH07CkBAIC0xMTQ2
LDcgKzExNDYsNyBAQCB2b2lkIHRlc3RVYmZ4NjQoKQogICAgICAgICAgICAgICAgIGF1dG8gdWJm
eDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgICAgICAgICAg
ICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaml0
LnViZng2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICBqaXQu
ZXh0cmFjdFVuc2lnbmVkQml0ZmllbGQ2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNiKSwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAog
ICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpAQCAtMTE2
MCw3ICsxMTYwLDcgQEAgdm9pZCB0ZXN0VWJmeDY0KCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdFVi
Zml6MzIoKQordm9pZCB0ZXN0SW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyKCkKIHsKICAg
ICB1aW50MzJfdCBzcmMgPSAweGYwZjBmMGYwOwogICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9
IHsgMCwgMSwgNSwgNywgMzAsIDMxLCAzMiwgNDIsIDU2LCA2MiwgNjMsIDY0IH07CkBAIC0xMTcw
LDcgKzExNzAsNyBAQCB2b2lkIHRlc3RVYmZpejMyKCkKICAgICAgICAgICAgICAgICBhdXRvIHVi
Zml6MzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAg
ICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAotICAgICAgICAgICAgICAgICAgICBq
aXQudWJmaXozMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICBq
aXQuaW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsc2Ip
LCAKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHdp
ZHRoKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CkBAIC0xMTg1LDcgKzExODUsNyBAQCB2b2lkIHRlc3RVYmZpejMyKCkKICAgICB9CiB9CiAKLXZv
aWQgdGVzdFViZml6NjQoKQordm9pZCB0ZXN0SW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzY0
KCkKIHsKICAgICB1aW50NjRfdCBzcmMgPSAweGYwZjBmMGYwZjBmMGYwZjA7CiAgICAgVmVjdG9y
PHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCA1LCA3LCAzMCwgMzEsIDMyLCA0MiwgNTYsIDYyLCA2
MywgNjQgfTsKQEAgLTExOTUsNyArMTE5NSw3IEBAIHZvaWQgdGVzdFViZml6NjQoKQogICAgICAg
ICAgICAgICAgIGF1dG8gdWJmaXo2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkg
ewogICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCi0gICAg
ICAgICAgICAgICAgICAgIGppdC51YmZpejY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAg
ICAgICAgICAgICAgICAgIGppdC5pbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvNjQoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCAKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKGxzYiksIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86
OnJldHVyblZhbHVlR1BSKTsKQEAgLTEyMTAsNyArMTIxMCw3IEBAIHZvaWQgdGVzdFViZml6NjQo
KQogICAgIH0KIH0KIAotdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQzMigpCit2b2lkIHRlc3RJbnNl
cnRCaXRGaWVsZDMyKCkKIHsKICAgICB1aW50MzJfdCBzcmMgPSAweDBmMGYwZjBmOwogICAgIHVp
bnQzMl90IGRzdCA9IDB4ZjBmMGYwZjA7CkBAIC0xMjIxLDcgKzEyMjEsNyBAQCB2b2lkIHRlc3RC
aXRGaWVsZEluc2VydDMyKCkKICAgICAgICAgICAgICAgICBhdXRvIGJmaTMyID0gY29tcGlsZShb
PV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlv
blByb2xvZ3VlKGppdCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaml0LmJpdEZpZWxkSW5zZXJ0
NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgaml0Lmluc2Vy
dEJpdEZpZWxkMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAogICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CkBAIC0xMjQwLDcgKzEyNDAsNyBAQCB2
b2lkIHRlc3RCaXRGaWVsZEluc2VydDMyKCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdEJpdEZpZWxk
SW5zZXJ0NjQoKQordm9pZCB0ZXN0SW5zZXJ0Qml0RmllbGQ2NCgpCiB7CiAgICAgdWludDY0X3Qg
c3JjID0gMHgwZjBmMGYwZjBmMGYwZjBmOwogICAgIHVpbnQ2NF90IGRzdCA9IDB4ZjBmMGYwZjBm
MGYwZjBmMDsKQEAgLTEyNTEsNyArMTI1MSw3IEBAIHZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0NjQo
KQogICAgICAgICAgICAgICAgIGF1dG8gYmZpNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsK
IAotICAgICAgICAgICAgICAgICAgICBqaXQuYml0RmllbGRJbnNlcnQ2NChHUFJJbmZvOjphcmd1
bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICBqaXQuaW5zZXJ0Qml0RmllbGQ2NChHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIobHNiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAogICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKQEAgLTEyNjksNiArMTI2OSwxMjggQEAgdm9pZCB0ZXN0Qml0Rmll
bGRJbnNlcnQ2NCgpCiAgICAgICAgIH0KICAgICB9CiB9CisKK3ZvaWQgdGVzdENsZWFyQml0Rmll
bGQzMigpCit7CisgICAgdWludDMyX3Qgc3JjID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJf
dD46Om1heCgpOworICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9IHsgMCwgMSwgNSwgNywgMzAs
IDMxLCAzMiwgNDIsIDU2LCA2MiwgNjMsIDY0IH07CisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMp
IHsKKyAgICAgICAgZm9yIChhdXRvIHdpZHRoIDogaW1tcykgeworICAgICAgICAgICAgaWYgKGxz
YiA+PSAwICYmIHdpZHRoID4gMCAmJiBsc2IgKyB3aWR0aCA8IDMyKSB7CisgICAgICAgICAgICAg
ICAgYXV0byBiZmMzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAg
ICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAg
ICAgICAgIGppdC5jbGVhckJpdEZpZWxkMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNi
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjAs
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbWFzayA9ICgoMVUgPDwg
d2lkdGgpIC0gMVUpIDw8IGxzYjsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCByaHMgPSBpbnZv
a2U8dWludDMyX3Q+KGJmYzMyLCBzcmMpOworICAgICAgICAgICAgICAgIHVpbnQzMl90IGxocyA9
IHNyYyAmIH5tYXNrOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHJocywgbGhzKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0Q2xlYXJCaXRGaWVsZDY0
KCkKK3sKKyAgICB1aW50NjRfdCBzcmMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6
bWF4KCk7CisgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCA1LCA3LCAzMCwgMzEs
IDMyLCA0MiwgNTYsIDYyLCA2MywgNjQgfTsKKyAgICBmb3IgKGF1dG8gbHNiIDogaW1tcykgewor
ICAgICAgICBmb3IgKGF1dG8gd2lkdGggOiBpbW1zKSB7CisgICAgICAgICAgICBpZiAobHNiID49
IDAgJiYgd2lkdGggPiAwICYmIGxzYiArIHdpZHRoIDwgMzIpIHsKKyAgICAgICAgICAgICAgICBh
dXRvIGJmYzY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgaml0LmNsZWFyQml0RmllbGQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsc2IpLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlv
bkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBtYXNrID0gKCgxVUxMIDw8IHdp
ZHRoKSAtIDFVTEwpIDw8IGxzYjsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCByaHMgPSBpbnZv
a2U8dWludDY0X3Q+KGJmYzY0LCBzcmMpOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxocyA9
IHNyYyAmIH5tYXNrOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHJocywgbGhzKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0Q2xlYXJCaXRzV2l0aE1h
c2szMigpCit7CisgICAgYXV0byB0ZXN0ID0gY29tcGlsZShbXSAoQ0NhbGxIZWxwZXJzJiBqaXQp
IHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBqaXQuY2xl
YXJCaXRzV2l0aE1hc2szMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgIGVtaXRGdW5jdGlvbkVw
aWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9KTsKKworICAgIGZvciAoYXV0
byBtYXNrIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIHVpbnQzMl90IHNyYyA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PHVpbnQzMl90Pih0ZXN0LCBzcmMsIG1hc2spLCAoc3JjICYgfm1hc2spKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPHVpbnQzMl90Pih0ZXN0LCAwVSwgbWFzayksIDBVKTsKKyAgICB9Cit9CisK
K3ZvaWQgdGVzdENsZWFyQml0c1dpdGhNYXNrNjQoKQoreworICAgIGF1dG8gdGVzdCA9IGNvbXBp
bGUoW10gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3Vl
KGppdCk7CisKKyAgICAgICAgaml0LmNsZWFyQml0c1dpdGhNYXNrNjQoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
KworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7
CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8gbWFzayA6IGludDY0T3BlcmFuZHMoKSkgeworICAg
ICAgICB1aW50NjRfdCBzcmMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7
CisgICAgICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4odGVzdCwgc3JjLCBtYXNrKSwgKHNy
YyAmIH5tYXNrKSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4odGVzdCwgMFVM
TCwgbWFzayksIDBVTEwpOworICAgIH0KK30KKwordm9pZCB0ZXN0T3JOb3QzMigpCit7CisgICAg
YXV0byB0ZXN0ID0gY29tcGlsZShbXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBqaXQub3JOb3QzMihHUFJJbmZvOjph
cmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworCisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5y
ZXQoKTsKKyAgICB9KTsKKworICAgIGZvciAoYXV0byBtYXNrIDogaW50MzJPcGVyYW5kcygpKSB7
CisgICAgICAgIGludDMyX3Qgc3JjID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4odGVzdCwgc3JjLCBtYXNrKSwg
KHNyYyB8IH5tYXNrKSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90Pih0ZXN0LCAw
VSwgbWFzayksIH5tYXNrKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdE9yTm90NjQoKQoreworICAg
IGF1dG8gdGVzdCA9IGNvbXBpbGUoW10gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0Lm9yTm90NjQoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQu
cmV0KCk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8gbWFzayA6IGludDY0T3BlcmFuZHMoKSkg
eworICAgICAgICBpbnQ2NF90IHNyYyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+Ojpt
YXgoKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KHRlc3QsIHNyYywgbWFzayks
IChzcmMgfCB+bWFzaykpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4odGVzdCwg
MFVMTCwgbWFzayksIH5tYXNrKTsKKyAgICB9Cit9CiAjZW5kaWYKIAogI2lmIENQVShYODYpIHx8
IENQVShYODZfNjQpIHx8IENQVShBUk02NCkKQEAgLTM0MjUsOSArMzU0Nyw4IEBAIHZvaWQgcnVu
KGNvbnN0IGNoYXIqIGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwog
I2lmIENQVShBUk02NCkKICAgICBSVU4odGVzdExvYWRTdG9yZVBhaXI2NEludDY0KCkpOwogICAg
IFJVTih0ZXN0TG9hZFN0b3JlUGFpcjY0RG91YmxlKCkpOwotICAgIFJVTih0ZXN0TXVsMzJTaWdu
RXh0ZW5kKCkpOwotICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkpOwot
ICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJSaWdodCgpKTsKKyAgICBSVU4odGVz
dE11bHRpcGx5U2lnbkV4dGVuZDMyKCkpOworCiAgICAgUlVOKHRlc3RTdWIzMkFyZ3MoKSk7CiAg
ICAgUlVOKHRlc3RTdWIzMkltbSgpKTsKICAgICBSVU4odGVzdFN1YjMyQXJnSW1tKCkpOwpAQCAt
MzQzNSwxMyArMzU1NiwyNCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdURl9JR05P
UkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKICAgICBSVU4odGVzdFN1YjY0QXJnSW1tMzIoKSk7
CiAgICAgUlVOKHRlc3RTdWI2NEltbTY0KCkpOwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW02NCgp
KTsKLSAgICBSVU4odGVzdE11bFN1YlNpZ25FeHRlbmQzMigpKTsKLSAgICBSVU4odGVzdFViZngz
MigpKTsKLSAgICBSVU4odGVzdFViZng2NCgpKTsKLSAgICBSVU4odGVzdFViZml6MzIoKSk7Ci0g
ICAgUlVOKHRlc3RVYmZpejY0KCkpOwotICAgIFJVTih0ZXN0Qml0RmllbGRJbnNlcnQzMigpKTsK
LSAgICBSVU4odGVzdEJpdEZpZWxkSW5zZXJ0NjQoKSk7CisKKyAgICBSVU4odGVzdE11bHRpcGx5
QWRkU2lnbkV4dGVuZDMyTGVmdCgpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5QWRkU2lnbkV4dGVu
ZDMyUmlnaHQoKSk7CisgICAgUlVOKHRlc3RNdWx0aXBseVN1YlNpZ25FeHRlbmQzMigpKTsKKwor
ICAgIFJVTih0ZXN0RXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMigpKTsKKyAgICBSVU4odGVzdEV4
dHJhY3RVbnNpZ25lZEJpdGZpZWxkNjQoKSk7CisgICAgUlVOKHRlc3RJbnNlcnRVbnNpZ25lZEJp
dGZpZWxkSW5aZXJvMzIoKSk7CisgICAgUlVOKHRlc3RJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5a
ZXJvNjQoKSk7CisgICAgUlVOKHRlc3RJbnNlcnRCaXRGaWVsZDMyKCkpOworICAgIFJVTih0ZXN0
SW5zZXJ0Qml0RmllbGQ2NCgpKTsKKyAgICBSVU4odGVzdENsZWFyQml0RmllbGQzMigpKTsKKyAg
ICBSVU4odGVzdENsZWFyQml0RmllbGQ2NCgpKTsKKyAgICBSVU4odGVzdENsZWFyQml0c1dpdGhN
YXNrMzIoKSk7CisgICAgUlVOKHRlc3RDbGVhckJpdHNXaXRoTWFzazY0KCkpOworCisgICAgUlVO
KHRlc3RPck5vdDMyKCkpOworICAgIFJVTih0ZXN0T3JOb3Q2NCgpKTsKICNlbmRpZgogCiAjaWYg
Q1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCA4NDA0MGZlZjRhOTZhNzU5MTM3YmM2NmVkZTQ1
MThmNzkyMzFhYWJkLi42ODYyZDA2MWMyNTQyODkzMTczMzQ2YjVlZTQ1ZDRjOWFmYjU3NzkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMjc2NCw3ICsy
NzY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFVCRlggUGF0dGVybjogZGVzdCA9IChz
cmMgPj4gbHNiKSAmIG1hc2sgCiAgICAgICAgICAgICAvLyBXaGVyZTogbWFzayA9ICgxIDw8IHdp
ZHRoKSAtIDEKICAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kVUJGWCA9IFsmXSAoKSAtPiBib29s
IHsKLSAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKFVi
ZngzMiwgVWJmeDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIEFpcjo6T3Bj
b2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoRXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMiwgRXh0
cmFjdFVuc2lnbmVkQml0ZmllbGQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgICAgICAg
ICBpZiAoIWlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6SW1tLCBBcmc6OkltbSwg
QXJnOjpUbXApKSAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgICAgIGlmIChsZWZ0LT5vcGNvZGUoKSAhPSBaU2hyIHx8ICFjYW5CZUludGVybmFsKGxlZnQp
KQpAQCAtMjc4MCw3ICsyNzgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoIW1h
c2sgfHwgbWFzayAmIChtYXNrICsgMSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgICAgICB1aW50NjRfdCB3aWR0aCA9IFdURjo6Yml0Q291bnQobWFzayk7
Ci0gICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YXNpemUgPSBvcGNvZGUgPT0gVWJmeDMyID8g
MzIgOiA2NDsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29kZSA9PSBF
eHRyYWN0VW5zaWduZWRCaXRmaWVsZDMyID8gMzIgOiA2NDsKICAgICAgICAgICAgICAgICBpZiAo
bHNiICsgd2lkdGggPiBkYXRhc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0yNzkyLDYgKzI3OTIsMjggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICh0cnlB
cHBlbmRVQkZYKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgICAgICAvLyBC
SUMgUGF0dGVybjogZCA9IG4gJiAobSBeIC0xKQorICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRC
SUMgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAgICAgICAg
ICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoQ2xlYXJCaXRzV2l0aE1h
c2szMiwgQ2xlYXJCaXRzV2l0aE1hc2s2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRt
cCkpIAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
aWYgKHJpZ2h0LT5vcGNvZGUoKSAhPSBCaXRYb3IgfHwgIWNhbkJlSW50ZXJuYWwocmlnaHQpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBWYWx1
ZSogblZhbHVlID0gbGVmdDsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbVZhbHVlID0gcmlnaHQt
PmNoaWxkKDApOworICAgICAgICAgICAgICAgIFZhbHVlKiBtaW51c09uZSA9IHJpZ2h0LT5jaGls
ZCgxKTsKKyAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMoblZhbHVlKSB8fCBt
X2xvY2tlZC5jb250YWlucyhtVmFsdWUpIHx8ICFtaW51c09uZS0+aGFzSW50KCkgfHwgIW1pbnVz
T25lLT5pc0ludCgtMSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUsIHRtcChuVmFsdWUpLCB0bXAobVZhbHVlKSwgdG1w
KG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBp
ZiAodHJ5QXBwZW5kQklDKGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRCSUMocmlnaHQsIGxlZnQp
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgYXBwZW5kQmluT3A8QW5k
MzIsIEFuZDY0LCBBbmREb3VibGUsIEFuZEZsb2F0LCBDb21tdXRhdGl2ZT4obGVmdCwgcmlnaHQp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yODA0LDcgKzI4MjYsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgLy8gV2hlcmU6IG1hc2sxID0gKCgxIDw8IHdpZHRoKSAtIDEp
CiAgICAgICAgICAgICAvLyAgICAgICAgbWFzazIgPSB+KG1hc2sxIDw8IGxzYikKICAgICAgICAg
ICAgIGF1dG8gdHJ5QXBwZW5kQkZJID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAt
PiBib29sIHsKLSAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JU
eXBlKEJpdEZpZWxkSW5zZXJ0MzIsIEJpdEZpZWxkSW5zZXJ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7
CisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShJbnNl
cnRCaXRGaWVsZDMyLCBJbnNlcnRCaXRGaWVsZDY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAg
ICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFy
Zzo6SW1tLCBBcmc6OlRtcCkpIAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgaWYgKGxlZnQtPm9wY29kZSgpICE9IFNobCB8fCAhY2FuQmVJbnRlcm5h
bChsZWZ0KSkKQEAgLTI4MjgsNyArMjg1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
dWludDY0X3QgbWFzazEgPSBtYXNrVmFsdWUxLT5hc0ludCgpOwogICAgICAgICAgICAgICAgIGlm
ICghbWFzazEgfHwgbWFzazEgJiAobWFzazEgKyAxKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGFzaXplID0gb3Bjb2RlID09
IEJpdEZpZWxkSW5zZXJ0MzIgPyAzMiA6IDY0OworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRh
dGFzaXplID0gb3Bjb2RlID09IEluc2VydEJpdEZpZWxkMzIgPyAzMiA6IDY0OwogICAgICAgICAg
ICAgICAgIHVpbnQ2NF90IHdpZHRoID0gV1RGOjpiaXRDb3VudChtYXNrMSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGxzYiArIHdpZHRoID4gZGF0YXNpemUpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI4NTcsNiArMjg3OSwyOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
aWYgKHRyeUFwcGVuZEJGSShsZWZ0LCByaWdodCkgfHwgdHJ5QXBwZW5kQkZJKHJpZ2h0LCBsZWZ0
KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgICAgIC8vIE9STiBQYXR0ZXJu
OiBkID0gbiB8IChtIF4gLTEpCisgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZE9STiA9IFsmXSAo
VmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgQWly
OjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShPck5vdDMyLCBPck5vdDY0LCBtX3ZhbHVl
LT50eXBlKCkpOworICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6
OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICBpZiAocmlnaHQtPm9wY29kZSgpICE9IEJpdFhvciB8fCAh
Y2FuQmVJbnRlcm5hbChyaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICAgICAgICAgIFZhbHVlKiBuVmFsdWUgPSBsZWZ0OworICAgICAgICAgICAgICAg
IFZhbHVlKiBtVmFsdWUgPSByaWdodC0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgVmFsdWUq
IG1pbnVzT25lID0gcmlnaHQtPmNoaWxkKDEpOworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tl
ZC5jb250YWlucyhuVmFsdWUpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKG1WYWx1ZSkgfHwgIW1pbnVz
T25lLT5oYXNJbnQoKSB8fCAhbWludXNPbmUtPmlzSW50KC0xKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKG5W
YWx1ZSksIHRtcChtVmFsdWUpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgIGNvbW1p
dEludGVybmFsKHJpZ2h0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH07CisKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRPUk4obGVmdCwgcmlnaHQpIHx8IHRy
eUFwcGVuZE9STihyaWdodCwgbGVmdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAg
ICAgICAgICBhcHBlbmRCaW5PcDxPcjMyLCBPcjY0LCBPckRvdWJsZSwgT3JGbG9hdCwgQ29tbXV0
YXRpdmU+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
Mjg5OSw3ICsyOTQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFVCRklaIFBhdHRlcm46
IGQgPSAobiAmIG1hc2spIDw8IGxzYiAKICAgICAgICAgICAgIC8vIFdoZXJlOiBtYXNrID0gKDEg
PDwgd2lkdGgpIC0gMQogICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRVQkZaID0gWyZdICgpIC0+
IGJvb2wgewotICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5
cGUoVWJmaXozMiwgVWJmaXo2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBB
aXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKEluc2VydFVuc2lnbmVkQml0ZmllbGRJ
blplcm8zMiwgSW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzY0LCBtX3ZhbHVlLT50eXBlKCkp
OwogICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJn
OjpJbW0sIEFyZzo6SW1tLCBBcmc6OlRtcCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgICAgICBpZiAobGVmdC0+b3Bjb2RlKCkgIT0gQml0QW5kIHx8ICFj
YW5CZUludGVybmFsKGxlZnQpKQpAQCAtMjkxNSw3ICsyOTU5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBpZiAoIW1hc2sgfHwgbWFzayAmIChtYXNrICsgMSkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB1aW50NjRfdCB3aWR0aCA9IFdU
Rjo6Yml0Q291bnQobWFzayk7Ci0gICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YXNpemUgPSBv
cGNvZGUgPT0gVWJmaXozMiA/IDMyIDogNjQ7CisgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0
YXNpemUgPSBvcGNvZGUgPT0gSW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyID8gMzIgOiA2
NDsKICAgICAgICAgICAgICAgICBpZiAobHNiICsgd2lkdGggPiBkYXRhc2l6ZSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNSZWR1Y2VTdHJlbmd0aC5jcHAKaW5kZXggM2RkYWRlNzcwOGViNGM3YjQyYzU3YmJhMDYyOWM2
ZTlmZGY2NThmZC4uYTZiNzAzODFmMzRhOTU1YmQ5NGEwZmY4MzNhMzE0NWNiZTk1OGRlOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcApAQCAtNjI3
LDYgKzYyNywxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
bV92YWx1ZS0+aXNJbnRlZ2VyKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFN1
YihOZWcodmFsdWUpLCAxKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQml0WG9yKHZh
bHVlLCAtMSkKKyAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgp
ID09IE5lZyAmJiBtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgVmFsdWUqIG1pbnVzT25lOworICAgICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+
Y2hpbGQoMCktPmNoaWxkKDApLT50eXBlKCkgPT0gSW50MzIpCisgICAgICAgICAgICAgICAgICAg
ICAgICBtaW51c09uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdDMyVmFsdWU+KG1faW5k
ZXgsIG1fdmFsdWUtPm9yaWdpbigpLCAtMSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1pbnVzT25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENv
bnN0NjRWYWx1ZT4obV9pbmRleCwgbV92YWx1ZS0+b3JpZ2luKCksIC0xKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVwbGFjZVdpdGhOZXc8VmFsdWU+KEJpdFhvciwgbV92YWx1ZS0+b3JpZ2luKCks
IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKSwgbWludXNPbmUpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICAvLyBUdXJu
IHRoaXM6IFN1Yih2YWx1ZSwgY29uc3RhbnQpCiAgICAgICAgICAgICAgICAgLy8gSW50byB0aGlz
OiBBZGQodmFsdWUsIC1jb25zdGFudCkKICAgICAgICAgICAgICAgICBpZiAoVmFsdWUqIG5lZ2F0
ZWRDb25zdGFudCA9IG1fdmFsdWUtPmNoaWxkKDEpLT5uZWdDb25zdGFudChtX3Byb2MpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwppbmRleCBh
NmExNTg4NjczYTQyNTFiMzE0ZjQwYjY3MWU4ZGMzNGVhMmQ1NDYxLi5hZTFhNGFjYjAyYzUwZDA1
MzkyZGEzODNmZjJlODViNWNiMzA5NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTM2MywyNCArMzYzLDYgQEAgQW5kMzIgVTpHOjMy
LCBVWkQ6RzozMgogICAgIHg4NjogSW1tLCBBZGRyCiAgICAgeDg2OiBJbW0sIEluZGV4CiAKLWFy
bTY0OiBVYmZ4MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgotICAgIFRtcCwgSW1t
LCBJbW0sIFRtcAotCi1hcm02NDogVWJmeDY0IFU6Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2
NAotICAgIFRtcCwgSW1tLCBJbW0sIFRtcAotCi1hcm02NDogVWJmaXozMiBVOkc6MzIsIFU6Rzoz
MiwgVTpHOjMyLCBaRDpHOjMyCi0gICAgVG1wLCBJbW0sIEltbSwgVG1wCi0KLWFybTY0OiBVYmZp
ejY0IFU6Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAotICAgIFRtcCwgSW1tLCBJbW0sIFRt
cAotCi1hcm02NDogQml0RmllbGRJbnNlcnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpH
OjMyCi0gICAgVG1wLCBJbW0sIEltbSwgVG1wCi0KLWFybTY0OiBCaXRGaWVsZEluc2VydDY0IFU6
Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAotICAgIFRtcCwgSW1tLCBJbW0sIFRtcAotCiA2
NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKICAgICBh
cm02NDogQml0SW1tNjQsIFRtcCwgVG1wCkBAIC04MzAsNiArODEyLDQyIEBAIHg4Nl82NDogWGNo
ZzY0IFVEOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKICAgICBUbXAsIEFkZHIKICAgICBUbXAsIElu
ZGV4CiAKK2FybTY0OiBFeHRyYWN0VW5zaWduZWRCaXRmaWVsZDMyIFU6RzozMiwgVTpHOjMyLCBV
Okc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IEV4dHJhY3RV
bnNpZ25lZEJpdGZpZWxkNjQgVTpHOjY0LCBVOkc6MzIsIFU6RzozMiwgRDpHOjY0CisgICAgVG1w
LCBJbW0sIEltbSwgVG1wCisKK2FybTY0OiBJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvMzIg
VTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAor
Cithcm02NDogSW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzY0IFU6Rzo2NCwgVTpHOjMyLCBV
Okc6MzIsIEQ6Rzo2NAorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCithcm02NDogSW5zZXJ0Qml0
RmllbGQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBJbW0sIElt
bSwgVG1wCisKK2FybTY0OiBJbnNlcnRCaXRGaWVsZDY0IFU6Rzo2NCwgVTpHOjMyLCBVOkc6MzIs
IEQ6Rzo2NAorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCithcm02NDogQ2xlYXJCaXRGaWVsZDMy
IFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgSW1tLCBJbW0sIFRtcAorCithcm02NDogQ2xl
YXJCaXRGaWVsZDY0IFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKKyAgICBJbW0sIEltbSwgVG1wCisK
K2FybTY0OiBDbGVhckJpdHNXaXRoTWFzazMyIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAg
VG1wLCBUbXAsIFRtcAorCithcm02NDogQ2xlYXJCaXRzV2l0aE1hc2s2NCBVOkc6NjQsIFU6Rzo2
NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIFRtcAorCithcm02NDogT3JOb3QzMiBVOkc6MzIsIFU6
RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wLCBUbXAKKworYXJtNjQ6IE9yTm90NjQgVTpHOjY0
LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBUbXAKKwogIyBUaGUgZmlyc3Qgb3BlcmFu
ZCBpcyByYXguCiAjIEZJWE1FOiBUaGlzIGZvcm11bGF0aW9uIG1lYW5zIHRoYXQgdGhlIGJvb2xl
YW4gcmVzdWx0IGNhbm5vdCBiZSBwdXQgaW4gZWF4LCBldmVuIHRob3VnaCBhbGwgdXNlcnMKICMg
b2YgdGhpcyB3b3VsZCBiZSBPSyB3aXRoIHRoYXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgK
aW5kZXggNDRjMGE1MGJhMTEyOTBjZTYxZTQ4ZDY4M2E0MWNlZDFiYmI1YzI1Ni4uY2ViMzVhZWNj
NTI4OTZmYzkwOGRhMGMwYjIwYWMzOTcwOTI5YWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuaApAQCAtNDI4LDggKzQyOCwxMiBAQCB2b2lkIHRlc3RVYmZpejY0QW5kU2hpZnRWYWx1ZU1h
c2soKTsKIHZvaWQgdGVzdFViZml6NjRBbmRTaGlmdE1hc2tWYWx1ZSgpOwogdm9pZCB0ZXN0VWJm
aXo2NFNoaWZ0QW5kKCk7CiB2b2lkIHRlc3RVYmZpejY0QW5kU2hpZnQoKTsKLXZvaWQgdGVzdEJp
dEZpZWxkSW5zZXJ0MzIoKTsKLXZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0NjQoKTsKK3ZvaWQgdGVz
dEluc2VydEJpdEZpZWxkMzIoKTsKK3ZvaWQgdGVzdEluc2VydEJpdEZpZWxkNjQoKTsKK3ZvaWQg
dGVzdEJJQzMyKCk7Cit2b2lkIHRlc3RCSUM2NCgpOwordm9pZCB0ZXN0T3JOb3QzMigpOwordm9p
ZCB0ZXN0T3JOb3Q2NCgpOwogdm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNr
MzIoKTsKIHZvaWQgdGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazY0KCk7CiB2b2lk
IHRlc3RCYXNpY1NlbGVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiM18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5k
ZXggOTRhN2UzNGNjN2Q4MDlkYzkyZDBkY2Q0NzI5NGVmYmIwMzE3ZmNlZC4uNjZjODAxMWUyYjVj
MzMxYzYxZWM5ZTQyYjA1NDA2YTY4NTk5ZDUzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzXzIuY3BwCkBAIC0zMTU4LDcgKzMxNTgsNyBAQCB2b2lkIHRlc3RVYmZpejY0QW5kU2hpZnQo
KQogICAgIH0KIH0KIAotdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQzMigpCit2b2lkIHRlc3RJbnNl
cnRCaXRGaWVsZDMyKCkKIHsKICAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZl
bCgpIDwgMikKICAgICAgICAgcmV0dXJuOwpAQCAtMzIzNiw3ICszMjM2LDcgQEAgdm9pZCB0ZXN0
Qml0RmllbGRJbnNlcnQzMigpCiAgICAgfQogfQogCi12b2lkIHRlc3RCaXRGaWVsZEluc2VydDY0
KCkKK3ZvaWQgdGVzdEluc2VydEJpdEZpZWxkNjQoKQogewogICAgIGlmIChKU0M6Ok9wdGlvbnM6
OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQogICAgICAgICByZXR1cm47CkBAIC0zMzA2LDYgKzMz
MDYsMjQxIEBAIHZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0NjQoKQogICAgIH0KIH0KIAordm9pZCB0
ZXN0QklDMzIoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkg
PCAyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICYgKC1t
IC0gMSkKKyAgICBhdXRvIHRlc3QxID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSkgLT4gaW50
MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBjb25zdDEgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisKKyAgICAgICAg
VmFsdWUqIG5lZ1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdp
bigpLCBtVmFsdWUpOworICAgICAgICBWYWx1ZSogc3ViVmFsdWUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5lZ1ZhbHVlLCBjb25zdDEpOworICAgICAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5k
LCBPcmlnaW4oKSwgblZhbHVlLCBzdWJWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNv
bXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hl
Y2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJiaWMiKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxp
bnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9
IG4gJiAobSBeIC0xKQorICAgIGF1dG8gdGVzdDIgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBt
KSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
IAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIG1pbnVz
T25lVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
LTEpOworCisgICAgICAgIFZhbHVlKiB4b3JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0WG9yLCBPcmlnaW4oKSwgbVZhbHVlLCBtaW51c09uZVZhbHVlKTsKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFu
ZCwgT3JpZ2luKCksIG5WYWx1ZSwgeG9yVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAiYmljIik7CisgICAgICAgIHJldHVybiBpbnZva2U8
aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgQ0hFQ0sodGVzdDEobi52YWx1ZSwgbS52YWx1ZSkgPT0gKG4udmFsdWUgJiAo
LW0udmFsdWUgLSAxKSkpOworICAgICAgICAgICAgQ0hFQ0sodGVzdDIobi52YWx1ZSwgbS52YWx1
ZSkgPT0gKG4udmFsdWUgJiAobS52YWx1ZSBeIC0xKSkpOworICAgICAgICB9CisgICAgfQorfQor
Cit2b2lkIHRlc3RCSUM2NCgpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0
TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9
IG4gJiAoLW0gLSAxKQorICAgIGF1dG8gdGVzdDEgPSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBt
KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
KyAgICAgICAgVmFsdWUqIGNvbnN0MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAxKTsKKworICAgICAgICBWYWx1ZSogbmVnVmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG1WYWx1ZSk7CisgICAgICAgIFZhbHVl
KiBzdWJWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwg
bmVnVmFsdWUsIGNvbnN0MSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBuVmFsdWUsIHN1YlZhbHVl
KSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlm
IChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJp
YyIpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9
OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAmIChtIF4gLTEpCisgICAgYXV0byB0ZXN0
MiA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0pIC0+IGludDY0X3QgeworICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1
ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogbWludXNPbmVWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7CisK
KyAgICAgICAgVmFsdWUqIHhvclZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRYb3IsIE9yaWdpbigpLCBtVmFsdWUsIG1pbnVzT25lVmFsdWUpOworICAgICAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmln
aW4oKSwgblZhbHVlLCB4b3JWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oKmNvZGUsICJiaWMiKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90
PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5k
cygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAg
ICAgICBDSEVDSyh0ZXN0MShuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSAmICgtbS52YWx1
ZSAtIDFMTCkpKTsKKyAgICAgICAgICAgIENIRUNLKHRlc3QyKG4udmFsdWUsIG0udmFsdWUpID09
IChuLnZhbHVlICYgKG0udmFsdWUgXiAtMUxMKSkpOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIHRlc3RPck5vdDMyKCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRM
ZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0g
biB8ICgtbSAtIDEpCisgICAgYXV0byB0ZXN0MSA9IFsmXSAoaW50MzJfdCBuLCBpbnQzMl90IG0p
IC0+IGludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwg
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogY29uc3Qx
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOworCisg
ICAgICAgIFZhbHVlKiBuZWdWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVn
LCBPcmlnaW4oKSwgbVZhbHVlKTsKKyAgICAgICAgVmFsdWUqIHN1YlZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuZWdWYWx1ZSwgY29uc3QxKTsKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdE9yLCBPcmlnaW4oKSwgblZhbHVlLCBzdWJWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm9ybiIpOworICAgICAgICByZXR1cm4g
aW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgaW50IGNvdW50ID0g
MDsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gfCAobSBeIC0xKQorICAgIGF1dG8gdGVz
dDIgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBtKSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIG1pbnVzT25lVmFsdWUgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpOworCisgICAgICAgIFZhbHVlKiB4b3JW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgbVZh
bHVlLCBtaW51c09uZVZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgblZhbHVlLCB4b3JWYWx1
ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBp
ZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJv
cm4iKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAg
fTsKKworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAo
YXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBDSEVDSyh0ZXN0MShuLnZh
bHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSB8ICgtbS52YWx1ZSAtIDEpKSk7CisgICAgICAgICAg
ICBDSEVDSyh0ZXN0MihuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSB8IChtLnZhbHVlIF4g
LTEpKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE9yTm90NjQoKQoreworICAg
IGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIHwgKC1tIC0gMSkKKyAgICBhdXRvIHRl
c3QxID0gWyZdIChpbnQ2NF90IG4sIGludDY0X3QgbSkgLT4gaW50NjRfdCB7CisgICAgICAgIFBy
b2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZh
bHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBjb25zdDEgPSBy
b290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisKKyAgICAg
ICAgVmFsdWUqIG5lZ1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcsIE9y
aWdpbigpLCBtVmFsdWUpOworICAgICAgICBWYWx1ZSogc3ViVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5lZ1ZhbHVlLCBjb25zdDEpOworICAgICAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
T3IsIE9yaWdpbigpLCBuVmFsdWUsIHN1YlZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm9ybiIpOworICAgICAgICByZXR1cm4gaW52b2tl
PGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBk
ID0gbiB8IChtIF4gLTEpCisgICAgYXV0byB0ZXN0MiA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90
IG0pIC0+IGludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgICAgICBWYWx1ZSogbWludXNPbmVWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7CisKKyAgICAgICAgVmFsdWUqIHhvclZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBtVmFsdWUsIG1p
bnVzT25lVmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBuVmFsdWUsIHhvclZhbHVlKSk7CisK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FS
TTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm9ybiIpOwor
ICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisg
ICAgZm9yIChhdXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0g
OiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIENIRUNLKHRlc3QxKG4udmFsdWUsIG0u
dmFsdWUpID09IChuLnZhbHVlIHwgKC1tLnZhbHVlIC0gMUxMKSkpOworICAgICAgICAgICAgQ0hF
Q0sodGVzdDIobi52YWx1ZSwgbS52YWx1ZSkgPT0gKG4udmFsdWUgfCAobS52YWx1ZSBeIC0xTEwp
KSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgdGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0
QXJnSW1tTWFzazMyKCkKIHsKICAgICAvLyBUdXJuIHRoaXM6ICh0bXAgPj4gaW1tKSAmIG1hc2sg
CkBAIC00MTk4LDggKzQ0MzMsMTIgQEAgdm9pZCBhZGRCaXRUZXN0cyhjb25zdCBjaGFyKiBmaWx0
ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpCiAgICAgUlVOKHRl
c3RVYmZpejY0QW5kU2hpZnRNYXNrVmFsdWUoKSk7CiAgICAgUlVOKHRlc3RVYmZpejY0U2hpZnRB
bmQoKSk7CiAgICAgUlVOKHRlc3RVYmZpejY0QW5kU2hpZnQoKSk7Ci0gICAgUlVOKHRlc3RCaXRG
aWVsZEluc2VydDMyKCkpOwotICAgIFJVTih0ZXN0Qml0RmllbGRJbnNlcnQ2NCgpKTsKKyAgICBS
VU4odGVzdEluc2VydEJpdEZpZWxkMzIoKSk7CisgICAgUlVOKHRlc3RJbnNlcnRCaXRGaWVsZDY0
KCkpOworICAgIFJVTih0ZXN0QklDMzIoKSk7CisgICAgUlVOKHRlc3RCSUM2NCgpKTsKKyAgICBS
VU4odGVzdE9yTm90MzIoKSk7CisgICAgUlVOKHRlc3RPck5vdDY0KCkpOwogICAgIFJVTih0ZXN0
Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrMzIoKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRa
ZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2s2NCgpKTsKICAgICBSVU4odGVzdEJpdEFuZEFyZ3MoNDMs
IDQzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
aW5kZXggMjdiNjMxZDRjYzczYWQ1YmEwMWNkYzkyOGI3NzhhNDM5YmMwZWRmMi4uM2QwODcyODA4
MjdkMmFlZjdjMzJlZWQyYWZkMTg2MmY0YzM5YWRjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTY3NTQsNyArMTY3NTQsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgbWVyZ2UtPmFwcGVuZFNvbWVSZWdpc3RlcihwdHIpOwogICAgICAg
ICAgICAgbWVyZ2UtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIGppdC5t
b3ZlKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICBq
aXQuYml0RmllbGRJbnNlcnQ2NChwYXJhbXNbMV0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKDApLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig2NCAtIE1hY3JvQXNzZW1ibGVy
OjptYXhOdW1iZXJPZkFsbG93ZWRQQUNCaXRzKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAg
ICAgICAgICBqaXQuaW5zZXJ0Qml0RmllbGQ2NChwYXJhbXNbMV0uZ3ByKCksIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKDApLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig2NCAtIE1hY3Jv
QXNzZW1ibGVyOjptYXhOdW1iZXJPZkFsbG93ZWRQQUNCaXRzKSwgcGFyYW1zWzBdLmdwcigpKTsK
ICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICByZXN1bHQgPSBkb1VudGFnQXJyYXlQdHIo
bWVyZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3Bw
CmluZGV4IDQ5ODE3YTdhZGQ1NDBiNzE2ZmVlMjZkZTQzNzZjNjEwODI3ZTU3ZTIuLmQzNmViNzFi
OWFkZDM2ZDQ0MjY0OTg0Yjg3ZGVkMjAyMGI3M2EwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTExMTEsNyArMTExMSw3IEBAIHZvaWQg
QXNzZW1ibHlIZWxwZXJzOjpjYWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6S2luZCBraW5k
LCBHUFJSZWcgc3RvcmFnZSkKICAgICBhZGRQdHIoVHJ1c3RlZEltbVB0cihHaWdhY2FnZTo6YmFz
ZVB0cihraW5kKSksIHN0b3JhZ2UpOwogI2lmIENQVShBUk02NEUpCiAgICAgaWYgKGtpbmQgPT0g
R2lnYWNhZ2U6OlByaW1pdGl2ZSkKLSAgICAgICAgYml0RmllbGRJbnNlcnQ2NChzdG9yYWdlLCBU
cnVzdGVkSW1tMzIoMCksIFRydXN0ZWRJbW0zMig2NCAtIG1heE51bWJlck9mQWxsb3dlZFBBQ0Jp
dHMpLCB0ZW1wUmVnKTsKKyAgICAgICAgaW5zZXJ0Qml0RmllbGQ2NChzdG9yYWdlLCBUcnVzdGVk
SW1tMzIoMCksIFRydXN0ZWRJbW0zMig2NCAtIG1heE51bWJlck9mQWxsb3dlZFBBQ0JpdHMpLCB0
ZW1wUmVnKTsKICAgICBpZiAoc2tpcC5pc1NldCgpKQogICAgICAgICBza2lwLmxpbmsodGhpcyk7
CiAjZW5kaWYKQEAgLTExNDgsNyArMTE0OCw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWdl
Q29uZGl0aW9uYWxseUFuZFVudGFnKEdpZ2FjYWdlOjpLaW5kIGtpbmQsIEdQUlJlZyBzdG9yCiAg
ICAgICAgICAgICBBU1NFUlQoTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlNjQoR2lnYWNhZ2U6Om1h
c2soa2luZCkpLmlzVmFsaWQoKSk7CiAgICAgICAgICAgICBhbmRQdHIoVHJ1c3RlZEltbVB0cihH
aWdhY2FnZTo6bWFzayhraW5kKSksIHRlbXBSZWcpOwogICAgICAgICAgICAgYWRkUHRyKHNjcmF0
Y2gsIHRlbXBSZWcpOwotICAgICAgICAgICAgYml0RmllbGRJbnNlcnQ2NCh0ZW1wUmVnLCBUcnVz
dGVkSW1tMzIoMCksIFRydXN0ZWRJbW0zMig2NCAtIG1heE51bWJlck9mQWxsb3dlZFBBQ0JpdHMp
LCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGluc2VydEJpdEZpZWxkNjQodGVtcFJlZywgVHJ1c3Rl
ZEltbTMyKDApLCBUcnVzdGVkSW1tMzIoNjQgLSBtYXhOdW1iZXJPZkFsbG93ZWRQQUNCaXRzKSwg
c3RvcmFnZSk7CiAjZWxzZQogICAgICAgICAgICAgYW5kUHRyKFRydXN0ZWRJbW1QdHIoR2lnYWNh
Z2U6Om1hc2soa2luZCkpLCBzdG9yYWdlKTsKICAgICAgICAgICAgIGFkZFB0cihzY3JhdGNoLCBz
dG9yYWdlKTsK
</data>
<flag name="commit-queue"
          id="454351"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432345</attachid>
            <date>2021-06-26 22:14:33 -0700</date>
            <delta_ts>2021-06-27 14:16:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227202-20210627001431.patch</filename>
            <type>text/plain</type>
            <size>43079</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
M2RjMjc2YWQxOWE3YTc3NTE4MWFlMzdkMThhYTkzNWYxMGQ2ZGZkLi40MDM1ZWEyMGIwN2FiZDFh
OWU5MzcyZmVkMGI1MWZjZTNmZmZiNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTQgQEAKKzIwMjEtMDYtMjYgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBhIG5ldyBwYXR0ZXJuIHRvIGluc3RydWN0aW9uIHNlbGVjdG9y
IHRvIHVzZSBCSUMgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHRocmVlIG1vZGlmaWNh
dGlvbnM6CisgICAgICAgICAgICAxLiBBZGQgYml0IGNsZWFyIChCSUMpIHRvIEFpciBvcGNvZGUg
dG8gc2VydmUgaW50cnVjaXRvbiBzZWxlY3Rvci4KKyAgICAgICAgICAgIDIuIEFkZCBiaXRmaWVs
ZCBjbGVhciAoQkZDKSB0byBBaXIgb3Bjb2RlLgorICAgICAgICAgICAgMy4gRG8gcmVmYWN0b3Jp
bmcgLSByZW5hbWUgQWlyIG9wY29kZXMgYWRkZWQgaW4gdGhlIHByZXZpb3VzIHBhdGNoZXMuCisK
KyAgICAgICAgUGFydCBBCisgICAgICAgIEdpdmVuIHRoZSBvcGVyYXRpb246CisKKyAgICAgICAg
YmljIFJkLCBSbiwgUm0KKworICAgICAgICBUaGUgQklDIChCaXQgQ2xlYXIpIGluc3RydWN0aW9u
IHBlcmZvcm1zIGFuIEFORCBvcGVyYXRpb24gb24gdGhlIGJpdHMgaW4gUm4gd2l0aCB0aGUgCisg
ICAgICAgIGNvbXBsZW1lbnRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlIHZhbHVl
IG9mIFJtLiBUaGUgaW5zdHJ1Y3Rpb24gc2VsZWN0b3IgY2FuIAorICAgICAgICB1dGlsaXplIHRo
aXMgdG8gbG93ZXJpbmcgY2VydGFpbiBwYXR0ZXJucyBpbiBCMyBJUiBiZWZvcmUgZnVydGhlciBB
aXIgb3B0aW1pemF0aW9uLiAKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybnMgb2YgdGhp
cyBpbnN0cnVjdGlvbiBhcmU6CisKKyAgICAgICAgUGF0dGVybiAxOgorICAgICAgICAgICAgZCA9
IG4gJiAoLW0gLSAxKQorCisgICAgICAgIFBhdHRlcm4gMjoKKyAgICAgICAgICAgIGQgPSBuICYg
KG0gXiAtMSkKKworICAgICAgICBJbiBvcmRlciB0byBnZXQgYmVuZWZpdHMgZm9yIGNvbXBsZW1l
bnQgb3BlcmF0aW9uLCBjdXJyZW50IGluc3RydWN0aW9uIHNlbGVjdG9yIHVzZXMgCisgICAgICAg
IG12biBpbnN0cnVjdGlvbiB0byBsb3dlciB0aGUgcGF0dGVybiB2YWx1ZSBeIC0xLiBUaGVuLCBh
IG5ldyBzdHJlbmd0aCByZWR1Y3Rpb24gcnVsZSBpcyAKKyAgICAgICAgaW50cm9kdWNlZDoKKyAg
ICAgICAgICAgIFR1cm4gdGhpczogLXZhbHVlIC0gMSAKKyAgICAgICAgICAgIEludG8gdGhpczog
dmFsdWUgXiAtMQorCisgICAgICAgIFNvLCBkID0gbiAmIChtIF4gLTEpIGlzIHNlbGVjdGVkIGFz
IHRoZSBjYW5vbmljYWwgZm9ybS4KKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50
IEAwID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJbnQgQDEgPSBBcmd1bWVudFJlZygleDEp
CisgICAgICAgIEludCBAMiA9IC0xCisgICAgICAgIEludCBAMyA9IEJpdFhvcihAMSwgQDIpCisg
ICAgICAgIEludCBANCA9IEJpdEFuZChAMCwgQDMpCisgICAgICAgIFZvaWRANSA9IFJldHVybihA
NCwgVGVybWluYWwpCisKKyAgICAgICAgQmVmb3JlIEFkZGluZyBCSUM6CisgICAgICAgIC8vIE9s
ZCBvcHRpbWl6ZWQgQUlSCisgICAgICAgIE5vdCAleDEsICV4MSwgICAgICBAMworICAgICAgICBB
bmQgJXgwLCAleDEsICV4MCwgQDQKKyAgICAgICAgUmV0ICV4MCwgICAgICAgICAgIEA1CisKKyAg
ICAgICAgQWZ0ZXIgQWRkaW5nIEJJQzoKKyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAg
ICAgICAgQmljICV4MCwgJXgxLCAleDAsIEA0CisgICAgICAgIFJldCAleDAsICAgICAgICAgICBA
NQorCisgICAgICAgIFBhcnQgQgorICAgICAgICBUaGUgQml0ZmllbGQgQ2xlYXIgKEJGQyksIGxl
YXZpbmcgb3RoZXIgYml0cyB1bmNoYW5nZWQsIGlzIHNpbWlsYXIgdG8gQkZJIHdoaWNoIGlzIGFu
IAorICAgICAgICBhbGlhcyBvZiBCRk0uIEdpdmVuIHRoZSBvcGVyYXRpb246CisKKyAgICAgICAg
YmZjIFJkLCBsc2IsIHdpZHRoCisKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybiBvZiB0
aGlzIGluc3RydWN0aW9uIGlzOgorCisgICAgICAgIG1hc2sgPSAoKDEgPDwgd2lkdGgpIC0gMSkg
PDwgbHNiCisgICAgICAgIGQgPSBkICYgfm1hc2sKKworICAgICAgICBTaW5jZSBtYXNrIGlzIGEg
Y29uc3RhbnQgYW5kIEIzIHBlcmZvcm1zIGNvbnN0YW50IGZvbGQgaW4gdGhlIG9wdGltaXphdGlv
biBwaGFzZSwgdGhpcyAKKyAgICAgICAgcGF0dGVybiB3aWxsIGRpcmVjdGx5IGxvd2VyIHRvIHRo
ZSBCaXRBbmQgYmluYXJ5IG9wZXJhdGlvbi4gU28sIG5vIG5lZWQgdG8gbWF0Y2ggdGhpcyBwYXR0
ZXJuLgorCisgICAgICAgIFBhcnQgQworICAgICAgICBBdCBNYWNyb0Fzc2VtYmxlciBsZXZlbCwg
dGhlIGVtaXR0ZXJzIGFyZSBleGVwZWN0ZWQgdG8gYmUgZXhwcmVzc2VkIGluIGVuZ2xpc2ggCisg
ICAgICAgIChlLmcuIHNvbWV0aGluZyBsaWtlIGNsZWFyQml0RmllbGQgZm9yIEJGQykuIERvIHJl
ZmFjdG9yaW5nIHRvIHJlbmFtZSBBaXIgb3Bjb2RlIGZvciAKKyAgICAgICAgdWJmeCwgdWJmaXos
IGJmaSwgYW5kIGJpYy4KKworICAgICAgICAqIGFzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oOgor
ICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6YmZjKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
Ojp1bnNpZ25lZEJpdGZpZWxkRXh0cmFjdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6dW5zaWduZWRCaXRmaWVsZEV4dHJhY3Q2NCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OnVuc2lnbmVkQml0ZmllbGRJbnNlcnRJblplcm8zMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnVuc2lnbmVkQml0ZmllbGRJbnNlcnRJblplcm82
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpdENsZWFyV2l0aE1hc2sz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpdENsZWFyV2l0aE1hc2s2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpdEZpZWxkQ2xlYXIzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpdEZpZWxkQ2xlYXI2NCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZngzMik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZng2NCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZml6MzIpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZpejY0KTogRGVsZXRlZC4KKyAgICAgICAgKiBh
c3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0Qml0Q2xlYXJXaXRoTWFz
azMyKToKKyAgICAgICAgKEpTQzo6dGVzdEJpdENsZWFyV2l0aE1hc2s2NCk6CisgICAgICAgIChK
U0M6OnRlc3RVbnNpZ25lZEJpdGZpZWxkRXh0cmFjdDMyKToKKyAgICAgICAgKEpTQzo6dGVzdFVu
c2lnbmVkQml0ZmllbGRFeHRyYWN0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0VW5zaWduZWRCaXRm
aWVsZEluc2VydEluWmVybzMyKToKKyAgICAgICAgKEpTQzo6dGVzdFVuc2lnbmVkQml0ZmllbGRJ
bnNlcnRJblplcm82NCk6CisgICAgICAgIChKU0M6OnRlc3RCaXRGaWVsZENsZWFyMzIpOgorICAg
ICAgICAoSlNDOjp0ZXN0Qml0RmllbGRDbGVhcjY0KToKKyAgICAgICAgKEpTQzo6dGVzdFViZngz
Mik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RVYmZ4NjQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjp0ZXN0VWJmaXozMik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RVYmZpejY0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIz
L0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
czoKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6Cisg
ICAgICAgICh0ZXN0QklDMzIpOgorICAgICAgICAodGVzdEJJQzY0KToKKyAgICAgICAgKGFkZEJp
dFRlc3RzKToKKwogMjAyMS0wNi0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIGxkcCBhbmQgc3RwIG1vcmUgZm9yIHNhdmluZyAvIHJlc3RvcmluZyByZWdp
c3RlcnMgb24gQVJNNjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTTY0QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FS
TTY0QXNzZW1ibGVyLmgKaW5kZXggNzU4Y2JlNDAyNzc5OGU4MzFkMmQwM2NhODQ4ZWQ4YjA0ODM2
NWUxNC4uY2I0Y2IxYmMwNzMwMWRlOGU2MmJmYmJlZWRiNzFjZTQ3NDhjYmQ1OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaApAQCAtODMy
LDYgKzgzMiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGluc24oY29uZGl0aW9uYWxCcmFuY2hJbW1l
ZGlhdGUob2Zmc2V0LCBjb25kKSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXpl
PgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBiZmMoUmVnaXN0ZXJJRCByZCwgaW50IGxzYiwgaW50
IHdpZHRoKQorICAgIHsKKyAgICAgICAgYmZpPGRhdGFzaXplPihyZCwgQVJNNjRSZWdpc3RlcnM6
OnpyLCBsc2IsIHdpZHRoKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGJmaShSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBp
bnQgbHNiLCBpbnQgd2lkdGgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCAwNjliZDQ2YjM5NDFjMGE4
NmU4ZTNhMzY5OTQ0YWE0YTkwYmMwNzVkLi4yNmQ5ZTUxM2MxZDdkODdlYmFiMGQxYmZlMzZkZTQ2
NDkxOTg5OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMzkwLDI2ICszOTAsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIGFuZDMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAgIH0KIAotICAgIHZvaWQgdWJm
eDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgs
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnViZng8MzI+KGRl
c3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOwotICAgIH0KLQotICAgIHZvaWQg
dWJmeDY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lk
dGgsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnViZng8NjQ+
KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOwotICAgIH0KLQotICAgIHZv
aWQgdWJmaXozMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMy
IHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci51YmZp
ejwzMj4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Ci0gICAgfQotCi0g
ICAgdm9pZCB1YmZpejY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVk
SW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LnViZml6PDY0PihkZXN0LCBzcmMsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKLSAgICB9
Ci0KICAgICB2b2lkIGFuZDY0KFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRfPDY0PihkZXN0LCBz
cmMxLCBzcmMyKTsKQEAgLTQ2OCw2ICs0NDgsNjcgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5hbmRfPDY0PihkZXN0LCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAg
ICAvLyBCaXQgT3BlcmF0aW9uczoKKyAgICB2b2lkIGV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIo
UmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudWJmeDwzMj4oZGVzdCwg
c3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBleHRy
YWN0VW5zaWduZWRCaXRmaWVsZDY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBU
cnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnViZng8NjQ+KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOwor
ICAgIH0KKworICAgIHZvaWQgaW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyKFJlZ2lzdGVy
SUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnViZml6PDMyPihkZXN0LCBzcmMsIGxz
Yi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGluc2VydFVuc2ln
bmVkQml0ZmllbGRJblplcm82NChSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1
c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci51YmZpejw2ND4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Cisg
ICAgfQorCisgICAgdm9pZCBpbnNlcnRCaXRGaWVsZDMyKFJlZ2lzdGVySUQgc291cmNlLCBUcnVz
dGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmJmaTwzMj4oZGVzdCwgc291cmNlLCBsc2IubV92YWx1ZSwg
d2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBpbnNlcnRCaXRGaWVsZDY0KFJlZ2lz
dGVySUQgc291cmNlLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJmaTw2ND4oZGVzdCwgc291
cmNlLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBjbGVh
ckJpdEZpZWxkMzIoVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iZmM8MzI+KGRlc3QsIGxzYi5t
X3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQml0RmllbGQ2
NChUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJmYzw2ND4oZGVzdCwgbHNiLm1fdmFsdWUsIHdp
ZHRoLm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJCaXRzV2l0aE1hc2szMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5iaWM8MzI+KGRlc3QsIHNyYywgbWFzayk7CisgICAgfQorCisgICAg
dm9pZCBjbGVhckJpdHNXaXRoTWFzazY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIG1hc2ss
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJpYzw2ND4oZGVz
dCwgc3JjLCBtYXNrKTsKKyAgICB9CisKKyAgICB2b2lkIG9yTm90MzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JuPDMyPihkZXN0LCBzcmMsIG1hc2spOworICAgIH0KKworICAgIHZvaWQgb3JOb3Q2
NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5vcm48NjQ+KGRlc3QsIHNyYywgbWFzayk7CisgICAgfQor
CiAgICAgdm9pZCBjbGVhckJpdDY0KFJlZ2lzdGVySUQgYml0VG9DbGVhciwgUmVnaXN0ZXJJRCBk
ZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2hGb3JNYXNrID0gSW52YWxpZEdQUlJlZykKICAgICB7CiAg
ICAgICAgIGlmIChzY3JhdGNoRm9yTWFzayA9PSBJbnZhbGlkR1BSUmVnKQpAQCAtMjc1MiwxOCAr
Mjc5Myw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuZmNzZWw8NjQ+KGRlc3QsIHRo
ZW5DYXNlLCBlbHNlQ2FzZSwgQVJNNjRDb25kaXRpb24oY29uZCkpOwogICAgIH0KIAotICAgIC8v
IEJpdCBmaWVsZCBvcGVyYXRpb25zOgotICAgIHZvaWQgYml0RmllbGRJbnNlcnQzMihSZWdpc3Rl
cklEIHNvdXJjZSwgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3Rl
cklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5iZmk8MzI+KGRlc3QsIHNvdXJj
ZSwgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOwotICAgIH0KLQotICAgIC8vIGRlc3RCaXRP
ZmZzZXQgaXMgdGhlIHRvcCBiaXQgb2YgdGhlIGRlc3RpbmF0aW9uIHdoZXJlIHRoZSBiaXRzIHNo
b3VsZCBiZSBjb3BpZWQgdG8uIFplcm8gaXMgdGhlIGxvd2VzdCBvcmRlciBiaXQuCi0gICAgdm9p
ZCBiaXRGaWVsZEluc2VydDY0KFJlZ2lzdGVySUQgc291cmNlLCBUcnVzdGVkSW1tMzIgbHNiLCBU
cnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmJmaTw2ND4oZGVzdCwgc291cmNlLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7
Ci0gICAgfQotCiAgICAgLy8gRm9yd2FyZHMgLyBleHRlcm5hbCBjb250cm9sIGZsb3cgb3BlcmF0
aW9uczoKICAgICAvLwogICAgIC8vIFRoaXMgc2V0IG9mIGp1bXAgYW5kIGNvbmRpdGlvbmFsIGJy
YW5jaCBvcGVyYXRpb25zIHJldHVybiBhIEp1bXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggYzljZjk2OGI3YjQ1ZjQyMzg3ZWRjN2ZkNjY5M2Yw
OWQ1M2VlNmE1MC4uMjcyMTUzN2U5MmY1Y2U3YWExYTQ5ZDExNjJkMzZlOTJhMjlhMWJjMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTkwNCw3
ICs5MDQsNyBAQCB2b2lkIHRlc3RNdWwzMldpdGhJbW1lZGlhdGVzKCkKIH0KIAogI2lmIENQVShB
Uk02NCkKLXZvaWQgdGVzdE11bDMyU2lnbkV4dGVuZCgpCit2b2lkIHRlc3RNdWx0aXBseVNpZ25F
eHRlbmQzMigpCiB7CiAgICAgZm9yIChhdXRvIHZhbHVlIDogaW50MzJPcGVyYW5kcygpKSB7CiAg
ICAgICAgIGF1dG8gbXVsID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CkBAIC0x
MDg5LDcgKzEwODksNyBAQCB2b2lkIHRlc3RTdWI2NEFyZ0ltbTY0KCkKICAgICB9CiB9CiAKLXZv
aWQgdGVzdE11bFN1YlNpZ25FeHRlbmQzMigpCit2b2lkIHRlc3RNdWx0aXBseVN1YlNpZ25FeHRl
bmQzMigpCiB7CiAgICAgLy8gZCA9IGEgLSBTRXh0MzIobikgKiAgU0V4dDMyKG0pCiAgICAgYXV0
byBzdWIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKQEAgLTExMTIsNyArMTEx
Miw3IEBAIHZvaWQgdGVzdE11bFN1YlNpZ25FeHRlbmQzMigpCiAgICAgfQogfQogCi12b2lkIHRl
c3RVYmZ4MzIoKQordm9pZCB0ZXN0RXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMigpCiB7CiAgICAg
dWludDMyX3Qgc3JjID0gMHhmMGYwZjBmMDsKICAgICBWZWN0b3I8dWludDMyX3Q+IGltbXMgPSB7
IDAsIDEsIDUsIDcsIDMwLCAzMSwgMzIsIDQyLCA1NiwgNjIsIDYzLCA2NCB9OwpAQCAtMTEyMiw3
ICsxMTIyLDcgQEAgdm9pZCB0ZXN0VWJmeDMyKCkKICAgICAgICAgICAgICAgICBhdXRvIHViZngz
MiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgICAgICAg
ICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCi0gICAgICAgICAgICAgICAgICAgIGppdC51
YmZ4MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgaml0LmV4
dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAogICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKICAg
ICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTExMzYs
NyArMTEzNiw3IEBAIHZvaWQgdGVzdFViZngzMigpCiAgICAgfQogfQogCi12b2lkIHRlc3RVYmZ4
NjQoKQordm9pZCB0ZXN0RXh0cmFjdFVuc2lnbmVkQml0ZmllbGQ2NCgpCiB7CiAgICAgdWludDY0
X3Qgc3JjID0gMHhmMGYwZjBmMGYwZjBmMGYwOwogICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9
IHsgMCwgMSwgNSwgNywgMzAsIDMxLCAzMiwgNDIsIDU2LCA2MiwgNjMsIDY0IH07CkBAIC0xMTQ2
LDcgKzExNDYsNyBAQCB2b2lkIHRlc3RVYmZ4NjQoKQogICAgICAgICAgICAgICAgIGF1dG8gdWJm
eDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgICAgICAgICAg
ICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaml0
LnViZng2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICBqaXQu
ZXh0cmFjdFVuc2lnbmVkQml0ZmllbGQ2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNiKSwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAog
ICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpAQCAtMTE2
MCw3ICsxMTYwLDcgQEAgdm9pZCB0ZXN0VWJmeDY0KCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdFVi
Zml6MzIoKQordm9pZCB0ZXN0SW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyKCkKIHsKICAg
ICB1aW50MzJfdCBzcmMgPSAweGYwZjBmMGYwOwogICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9
IHsgMCwgMSwgNSwgNywgMzAsIDMxLCAzMiwgNDIsIDU2LCA2MiwgNjMsIDY0IH07CkBAIC0xMTcw
LDcgKzExNzAsNyBAQCB2b2lkIHRlc3RVYmZpejMyKCkKICAgICAgICAgICAgICAgICBhdXRvIHVi
Zml6MzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAg
ICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAotICAgICAgICAgICAgICAgICAgICBq
aXQudWJmaXozMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICBq
aXQuaW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsc2Ip
LCAKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHdp
ZHRoKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CkBAIC0xMTg1LDcgKzExODUsNyBAQCB2b2lkIHRlc3RVYmZpejMyKCkKICAgICB9CiB9CiAKLXZv
aWQgdGVzdFViZml6NjQoKQordm9pZCB0ZXN0SW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzY0
KCkKIHsKICAgICB1aW50NjRfdCBzcmMgPSAweGYwZjBmMGYwZjBmMGYwZjA7CiAgICAgVmVjdG9y
PHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCA1LCA3LCAzMCwgMzEsIDMyLCA0MiwgNTYsIDYyLCA2
MywgNjQgfTsKQEAgLTExOTUsNyArMTE5NSw3IEBAIHZvaWQgdGVzdFViZml6NjQoKQogICAgICAg
ICAgICAgICAgIGF1dG8gdWJmaXo2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkg
ewogICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCi0gICAg
ICAgICAgICAgICAgICAgIGppdC51YmZpejY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAg
ICAgICAgICAgICAgICAgIGppdC5pbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvNjQoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCAKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKGxzYiksIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86
OnJldHVyblZhbHVlR1BSKTsKQEAgLTEyMTAsNyArMTIxMCw3IEBAIHZvaWQgdGVzdFViZml6NjQo
KQogICAgIH0KIH0KIAotdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQzMigpCit2b2lkIHRlc3RJbnNl
cnRCaXRGaWVsZDMyKCkKIHsKICAgICB1aW50MzJfdCBzcmMgPSAweDBmMGYwZjBmOwogICAgIHVp
bnQzMl90IGRzdCA9IDB4ZjBmMGYwZjA7CkBAIC0xMjIxLDcgKzEyMjEsNyBAQCB2b2lkIHRlc3RC
aXRGaWVsZEluc2VydDMyKCkKICAgICAgICAgICAgICAgICBhdXRvIGJmaTMyID0gY29tcGlsZShb
PV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlv
blByb2xvZ3VlKGppdCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaml0LmJpdEZpZWxkSW5zZXJ0
NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgaml0Lmluc2Vy
dEJpdEZpZWxkMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAogICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CkBAIC0xMjQwLDcgKzEyNDAsNyBAQCB2
b2lkIHRlc3RCaXRGaWVsZEluc2VydDMyKCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdEJpdEZpZWxk
SW5zZXJ0NjQoKQordm9pZCB0ZXN0SW5zZXJ0Qml0RmllbGQ2NCgpCiB7CiAgICAgdWludDY0X3Qg
c3JjID0gMHgwZjBmMGYwZjBmMGYwZjBmOwogICAgIHVpbnQ2NF90IGRzdCA9IDB4ZjBmMGYwZjBm
MGYwZjBmMDsKQEAgLTEyNTEsNyArMTI1MSw3IEBAIHZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0NjQo
KQogICAgICAgICAgICAgICAgIGF1dG8gYmZpNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsK
IAotICAgICAgICAgICAgICAgICAgICBqaXQuYml0RmllbGRJbnNlcnQ2NChHUFJJbmZvOjphcmd1
bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICBqaXQuaW5zZXJ0Qml0RmllbGQ2NChHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIobHNiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAogICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKQEAgLTEyNjksNiArMTI2OSwxMjggQEAgdm9pZCB0ZXN0Qml0Rmll
bGRJbnNlcnQ2NCgpCiAgICAgICAgIH0KICAgICB9CiB9CisKK3ZvaWQgdGVzdENsZWFyQml0Rmll
bGQzMigpCit7CisgICAgdWludDMyX3Qgc3JjID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJf
dD46Om1heCgpOworICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9IHsgMCwgMSwgNSwgNywgMzAs
IDMxLCAzMiwgNDIsIDU2LCA2MiwgNjMsIDY0IH07CisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMp
IHsKKyAgICAgICAgZm9yIChhdXRvIHdpZHRoIDogaW1tcykgeworICAgICAgICAgICAgaWYgKGxz
YiA+PSAwICYmIHdpZHRoID4gMCAmJiBsc2IgKyB3aWR0aCA8IDMyKSB7CisgICAgICAgICAgICAg
ICAgYXV0byBiZmMzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAg
ICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAg
ICAgICAgIGppdC5jbGVhckJpdEZpZWxkMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNi
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjAs
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbWFzayA9ICgoMVUgPDwg
d2lkdGgpIC0gMVUpIDw8IGxzYjsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCByaHMgPSBpbnZv
a2U8dWludDMyX3Q+KGJmYzMyLCBzcmMpOworICAgICAgICAgICAgICAgIHVpbnQzMl90IGxocyA9
IHNyYyAmIH5tYXNrOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHJocywgbGhzKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0Q2xlYXJCaXRGaWVsZDY0
KCkKK3sKKyAgICB1aW50NjRfdCBzcmMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6
bWF4KCk7CisgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCA1LCA3LCAzMCwgMzEs
IDMyLCA0MiwgNTYsIDYyLCA2MywgNjQgfTsKKyAgICBmb3IgKGF1dG8gbHNiIDogaW1tcykgewor
ICAgICAgICBmb3IgKGF1dG8gd2lkdGggOiBpbW1zKSB7CisgICAgICAgICAgICBpZiAobHNiID49
IDAgJiYgd2lkdGggPiAwICYmIGxzYiArIHdpZHRoIDwgMzIpIHsKKyAgICAgICAgICAgICAgICBh
dXRvIGJmYzY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgaml0LmNsZWFyQml0RmllbGQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsc2IpLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlv
bkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBtYXNrID0gKCgxVUxMIDw8IHdp
ZHRoKSAtIDFVTEwpIDw8IGxzYjsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCByaHMgPSBpbnZv
a2U8dWludDY0X3Q+KGJmYzY0LCBzcmMpOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxocyA9
IHNyYyAmIH5tYXNrOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHJocywgbGhzKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0Q2xlYXJCaXRzV2l0aE1h
c2szMigpCit7CisgICAgYXV0byB0ZXN0ID0gY29tcGlsZShbXSAoQ0NhbGxIZWxwZXJzJiBqaXQp
IHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBqaXQuY2xl
YXJCaXRzV2l0aE1hc2szMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgIGVtaXRGdW5jdGlvbkVw
aWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9KTsKKworICAgIGZvciAoYXV0
byBtYXNrIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIHVpbnQzMl90IHNyYyA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PHVpbnQzMl90Pih0ZXN0LCBzcmMsIG1hc2spLCAoc3JjICYgfm1hc2spKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPHVpbnQzMl90Pih0ZXN0LCAwVSwgbWFzayksIDBVKTsKKyAgICB9Cit9CisK
K3ZvaWQgdGVzdENsZWFyQml0c1dpdGhNYXNrNjQoKQoreworICAgIGF1dG8gdGVzdCA9IGNvbXBp
bGUoW10gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3Vl
KGppdCk7CisKKyAgICAgICAgaml0LmNsZWFyQml0c1dpdGhNYXNrNjQoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
KworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7
CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8gbWFzayA6IGludDY0T3BlcmFuZHMoKSkgeworICAg
ICAgICB1aW50NjRfdCBzcmMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7
CisgICAgICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4odGVzdCwgc3JjLCBtYXNrKSwgKHNy
YyAmIH5tYXNrKSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4odGVzdCwgMFVM
TCwgbWFzayksIDBVTEwpOworICAgIH0KK30KKwordm9pZCB0ZXN0T3JOb3QzMigpCit7CisgICAg
YXV0byB0ZXN0ID0gY29tcGlsZShbXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBqaXQub3JOb3QzMihHUFJJbmZvOjph
cmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworCisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5y
ZXQoKTsKKyAgICB9KTsKKworICAgIGZvciAoYXV0byBtYXNrIDogaW50MzJPcGVyYW5kcygpKSB7
CisgICAgICAgIGludDMyX3Qgc3JjID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4odGVzdCwgc3JjLCBtYXNrKSwg
KHNyYyB8IH5tYXNrKSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90Pih0ZXN0LCAw
VSwgbWFzayksIH5tYXNrKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdE9yTm90NjQoKQoreworICAg
IGF1dG8gdGVzdCA9IGNvbXBpbGUoW10gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0Lm9yTm90NjQoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQu
cmV0KCk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8gbWFzayA6IGludDY0T3BlcmFuZHMoKSkg
eworICAgICAgICBpbnQ2NF90IHNyYyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+Ojpt
YXgoKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KHRlc3QsIHNyYywgbWFzayks
IChzcmMgfCB+bWFzaykpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4odGVzdCwg
MFVMTCwgbWFzayksIH5tYXNrKTsKKyAgICB9Cit9CiAjZW5kaWYKIAogI2lmIENQVShYODYpIHx8
IENQVShYODZfNjQpIHx8IENQVShBUk02NCkKQEAgLTM0MjUsOSArMzU0Nyw4IEBAIHZvaWQgcnVu
KGNvbnN0IGNoYXIqIGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwog
I2lmIENQVShBUk02NCkKICAgICBSVU4odGVzdExvYWRTdG9yZVBhaXI2NEludDY0KCkpOwogICAg
IFJVTih0ZXN0TG9hZFN0b3JlUGFpcjY0RG91YmxlKCkpOwotICAgIFJVTih0ZXN0TXVsMzJTaWdu
RXh0ZW5kKCkpOwotICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkpOwot
ICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJSaWdodCgpKTsKKyAgICBSVU4odGVz
dE11bHRpcGx5U2lnbkV4dGVuZDMyKCkpOworCiAgICAgUlVOKHRlc3RTdWIzMkFyZ3MoKSk7CiAg
ICAgUlVOKHRlc3RTdWIzMkltbSgpKTsKICAgICBSVU4odGVzdFN1YjMyQXJnSW1tKCkpOwpAQCAt
MzQzNSwxMyArMzU1NiwyNCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdURl9JR05P
UkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKICAgICBSVU4odGVzdFN1YjY0QXJnSW1tMzIoKSk7
CiAgICAgUlVOKHRlc3RTdWI2NEltbTY0KCkpOwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW02NCgp
KTsKLSAgICBSVU4odGVzdE11bFN1YlNpZ25FeHRlbmQzMigpKTsKLSAgICBSVU4odGVzdFViZngz
MigpKTsKLSAgICBSVU4odGVzdFViZng2NCgpKTsKLSAgICBSVU4odGVzdFViZml6MzIoKSk7Ci0g
ICAgUlVOKHRlc3RVYmZpejY0KCkpOwotICAgIFJVTih0ZXN0Qml0RmllbGRJbnNlcnQzMigpKTsK
LSAgICBSVU4odGVzdEJpdEZpZWxkSW5zZXJ0NjQoKSk7CisKKyAgICBSVU4odGVzdE11bHRpcGx5
QWRkU2lnbkV4dGVuZDMyTGVmdCgpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5QWRkU2lnbkV4dGVu
ZDMyUmlnaHQoKSk7CisgICAgUlVOKHRlc3RNdWx0aXBseVN1YlNpZ25FeHRlbmQzMigpKTsKKwor
ICAgIFJVTih0ZXN0RXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMigpKTsKKyAgICBSVU4odGVzdEV4
dHJhY3RVbnNpZ25lZEJpdGZpZWxkNjQoKSk7CisgICAgUlVOKHRlc3RJbnNlcnRVbnNpZ25lZEJp
dGZpZWxkSW5aZXJvMzIoKSk7CisgICAgUlVOKHRlc3RJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5a
ZXJvNjQoKSk7CisgICAgUlVOKHRlc3RJbnNlcnRCaXRGaWVsZDMyKCkpOworICAgIFJVTih0ZXN0
SW5zZXJ0Qml0RmllbGQ2NCgpKTsKKyAgICBSVU4odGVzdENsZWFyQml0RmllbGQzMigpKTsKKyAg
ICBSVU4odGVzdENsZWFyQml0RmllbGQ2NCgpKTsKKyAgICBSVU4odGVzdENsZWFyQml0c1dpdGhN
YXNrMzIoKSk7CisgICAgUlVOKHRlc3RDbGVhckJpdHNXaXRoTWFzazY0KCkpOworCisgICAgUlVO
KHRlc3RPck5vdDMyKCkpOworICAgIFJVTih0ZXN0T3JOb3Q2NCgpKTsKICNlbmRpZgogCiAjaWYg
Q1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCA4NDA0MGZlZjRhOTZhNzU5MTM3YmM2NmVkZTQ1
MThmNzkyMzFhYWJkLi42ODYyZDA2MWMyNTQyODkzMTczMzQ2YjVlZTQ1ZDRjOWFmYjU3NzkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMjc2NCw3ICsy
NzY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFVCRlggUGF0dGVybjogZGVzdCA9IChz
cmMgPj4gbHNiKSAmIG1hc2sgCiAgICAgICAgICAgICAvLyBXaGVyZTogbWFzayA9ICgxIDw8IHdp
ZHRoKSAtIDEKICAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kVUJGWCA9IFsmXSAoKSAtPiBib29s
IHsKLSAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKFVi
ZngzMiwgVWJmeDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIEFpcjo6T3Bj
b2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoRXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMiwgRXh0
cmFjdFVuc2lnbmVkQml0ZmllbGQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgICAgICAg
ICBpZiAoIWlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6SW1tLCBBcmc6OkltbSwg
QXJnOjpUbXApKSAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgICAgIGlmIChsZWZ0LT5vcGNvZGUoKSAhPSBaU2hyIHx8ICFjYW5CZUludGVybmFsKGxlZnQp
KQpAQCAtMjc4MCw3ICsyNzgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoIW1h
c2sgfHwgbWFzayAmIChtYXNrICsgMSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgICAgICB1aW50NjRfdCB3aWR0aCA9IFdURjo6Yml0Q291bnQobWFzayk7
Ci0gICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YXNpemUgPSBvcGNvZGUgPT0gVWJmeDMyID8g
MzIgOiA2NDsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29kZSA9PSBF
eHRyYWN0VW5zaWduZWRCaXRmaWVsZDMyID8gMzIgOiA2NDsKICAgICAgICAgICAgICAgICBpZiAo
bHNiICsgd2lkdGggPiBkYXRhc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0yNzkyLDYgKzI3OTIsMjggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICh0cnlB
cHBlbmRVQkZYKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgICAgICAvLyBC
SUMgUGF0dGVybjogZCA9IG4gJiAobSBeIC0xKQorICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRC
SUMgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAgICAgICAg
ICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoQ2xlYXJCaXRzV2l0aE1h
c2szMiwgQ2xlYXJCaXRzV2l0aE1hc2s2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRt
cCkpIAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
aWYgKHJpZ2h0LT5vcGNvZGUoKSAhPSBCaXRYb3IgfHwgIWNhbkJlSW50ZXJuYWwocmlnaHQpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBWYWx1
ZSogblZhbHVlID0gbGVmdDsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbVZhbHVlID0gcmlnaHQt
PmNoaWxkKDApOworICAgICAgICAgICAgICAgIFZhbHVlKiBtaW51c09uZSA9IHJpZ2h0LT5jaGls
ZCgxKTsKKyAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMoblZhbHVlKSB8fCBt
X2xvY2tlZC5jb250YWlucyhtVmFsdWUpIHx8ICFtaW51c09uZS0+aGFzSW50KCkgfHwgIW1pbnVz
T25lLT5pc0ludCgtMSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUsIHRtcChuVmFsdWUpLCB0bXAobVZhbHVlKSwgdG1w
KG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBp
ZiAodHJ5QXBwZW5kQklDKGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRCSUMocmlnaHQsIGxlZnQp
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgYXBwZW5kQmluT3A8QW5k
MzIsIEFuZDY0LCBBbmREb3VibGUsIEFuZEZsb2F0LCBDb21tdXRhdGl2ZT4obGVmdCwgcmlnaHQp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yODA0LDcgKzI4MjYsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgLy8gV2hlcmU6IG1hc2sxID0gKCgxIDw8IHdpZHRoKSAtIDEp
CiAgICAgICAgICAgICAvLyAgICAgICAgbWFzazIgPSB+KG1hc2sxIDw8IGxzYikKICAgICAgICAg
ICAgIGF1dG8gdHJ5QXBwZW5kQkZJID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAt
PiBib29sIHsKLSAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JU
eXBlKEJpdEZpZWxkSW5zZXJ0MzIsIEJpdEZpZWxkSW5zZXJ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7
CisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShJbnNl
cnRCaXRGaWVsZDMyLCBJbnNlcnRCaXRGaWVsZDY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAg
ICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFy
Zzo6SW1tLCBBcmc6OlRtcCkpIAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgaWYgKGxlZnQtPm9wY29kZSgpICE9IFNobCB8fCAhY2FuQmVJbnRlcm5h
bChsZWZ0KSkKQEAgLTI4MjgsNyArMjg1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
dWludDY0X3QgbWFzazEgPSBtYXNrVmFsdWUxLT5hc0ludCgpOwogICAgICAgICAgICAgICAgIGlm
ICghbWFzazEgfHwgbWFzazEgJiAobWFzazEgKyAxKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGFzaXplID0gb3Bjb2RlID09
IEJpdEZpZWxkSW5zZXJ0MzIgPyAzMiA6IDY0OworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRh
dGFzaXplID0gb3Bjb2RlID09IEluc2VydEJpdEZpZWxkMzIgPyAzMiA6IDY0OwogICAgICAgICAg
ICAgICAgIHVpbnQ2NF90IHdpZHRoID0gV1RGOjpiaXRDb3VudChtYXNrMSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGxzYiArIHdpZHRoID4gZGF0YXNpemUpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI4NTcsNiArMjg3OSwyOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
aWYgKHRyeUFwcGVuZEJGSShsZWZ0LCByaWdodCkgfHwgdHJ5QXBwZW5kQkZJKHJpZ2h0LCBsZWZ0
KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgICAgIC8vIE9STiBQYXR0ZXJu
OiBkID0gbiB8IChtIF4gLTEpCisgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZE9STiA9IFsmXSAo
VmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgQWly
OjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShPck5vdDMyLCBPck5vdDY0LCBtX3ZhbHVl
LT50eXBlKCkpOworICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6
OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICBpZiAocmlnaHQtPm9wY29kZSgpICE9IEJpdFhvciB8fCAh
Y2FuQmVJbnRlcm5hbChyaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICAgICAgICAgIFZhbHVlKiBuVmFsdWUgPSBsZWZ0OworICAgICAgICAgICAgICAg
IFZhbHVlKiBtVmFsdWUgPSByaWdodC0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgVmFsdWUq
IG1pbnVzT25lID0gcmlnaHQtPmNoaWxkKDEpOworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tl
ZC5jb250YWlucyhuVmFsdWUpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKG1WYWx1ZSkgfHwgIW1pbnVz
T25lLT5oYXNJbnQoKSB8fCAhbWludXNPbmUtPmlzSW50KC0xKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKG5W
YWx1ZSksIHRtcChtVmFsdWUpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgIGNvbW1p
dEludGVybmFsKHJpZ2h0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH07CisKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRPUk4obGVmdCwgcmlnaHQpIHx8IHRy
eUFwcGVuZE9STihyaWdodCwgbGVmdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAg
ICAgICAgICBhcHBlbmRCaW5PcDxPcjMyLCBPcjY0LCBPckRvdWJsZSwgT3JGbG9hdCwgQ29tbXV0
YXRpdmU+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
Mjg5OSw3ICsyOTQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFVCRklaIFBhdHRlcm46
IGQgPSAobiAmIG1hc2spIDw8IGxzYiAKICAgICAgICAgICAgIC8vIFdoZXJlOiBtYXNrID0gKDEg
PDwgd2lkdGgpIC0gMQogICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRVQkZaID0gWyZdICgpIC0+
IGJvb2wgewotICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5
cGUoVWJmaXozMiwgVWJmaXo2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBB
aXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKEluc2VydFVuc2lnbmVkQml0ZmllbGRJ
blplcm8zMiwgSW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzY0LCBtX3ZhbHVlLT50eXBlKCkp
OwogICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJn
OjpJbW0sIEFyZzo6SW1tLCBBcmc6OlRtcCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgICAgICBpZiAobGVmdC0+b3Bjb2RlKCkgIT0gQml0QW5kIHx8ICFj
YW5CZUludGVybmFsKGxlZnQpKQpAQCAtMjkxNSw3ICsyOTU5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBpZiAoIW1hc2sgfHwgbWFzayAmIChtYXNrICsgMSkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB1aW50NjRfdCB3aWR0aCA9IFdU
Rjo6Yml0Q291bnQobWFzayk7Ci0gICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YXNpemUgPSBv
cGNvZGUgPT0gVWJmaXozMiA/IDMyIDogNjQ7CisgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0
YXNpemUgPSBvcGNvZGUgPT0gSW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyID8gMzIgOiA2
NDsKICAgICAgICAgICAgICAgICBpZiAobHNiICsgd2lkdGggPiBkYXRhc2l6ZSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNSZWR1Y2VTdHJlbmd0aC5jcHAKaW5kZXggM2RkYWRlNzcwOGViNGM3YjQyYzU3YmJhMDYyOWM2
ZTlmZGY2NThmZC4uYTZiNzAzODFmMzRhOTU1YmQ5NGEwZmY4MzNhMzE0NWNiZTk1OGRlOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcApAQCAtNjI3
LDYgKzYyNywxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
bV92YWx1ZS0+aXNJbnRlZ2VyKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFN1
YihOZWcodmFsdWUpLCAxKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQml0WG9yKHZh
bHVlLCAtMSkKKyAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgp
ID09IE5lZyAmJiBtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgVmFsdWUqIG1pbnVzT25lOworICAgICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+
Y2hpbGQoMCktPmNoaWxkKDApLT50eXBlKCkgPT0gSW50MzIpCisgICAgICAgICAgICAgICAgICAg
ICAgICBtaW51c09uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdDMyVmFsdWU+KG1faW5k
ZXgsIG1fdmFsdWUtPm9yaWdpbigpLCAtMSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1pbnVzT25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENv
bnN0NjRWYWx1ZT4obV9pbmRleCwgbV92YWx1ZS0+b3JpZ2luKCksIC0xKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVwbGFjZVdpdGhOZXc8VmFsdWU+KEJpdFhvciwgbV92YWx1ZS0+b3JpZ2luKCks
IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKSwgbWludXNPbmUpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICAvLyBUdXJu
IHRoaXM6IFN1Yih2YWx1ZSwgY29uc3RhbnQpCiAgICAgICAgICAgICAgICAgLy8gSW50byB0aGlz
OiBBZGQodmFsdWUsIC1jb25zdGFudCkKICAgICAgICAgICAgICAgICBpZiAoVmFsdWUqIG5lZ2F0
ZWRDb25zdGFudCA9IG1fdmFsdWUtPmNoaWxkKDEpLT5uZWdDb25zdGFudChtX3Byb2MpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwppbmRleCBh
NmExNTg4NjczYTQyNTFiMzE0ZjQwYjY3MWU4ZGMzNGVhMmQ1NDYxLi5hZTFhNGFjYjAyYzUwZDA1
MzkyZGEzODNmZjJlODViNWNiMzA5NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTM2MywyNCArMzYzLDYgQEAgQW5kMzIgVTpHOjMy
LCBVWkQ6RzozMgogICAgIHg4NjogSW1tLCBBZGRyCiAgICAgeDg2OiBJbW0sIEluZGV4CiAKLWFy
bTY0OiBVYmZ4MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgotICAgIFRtcCwgSW1t
LCBJbW0sIFRtcAotCi1hcm02NDogVWJmeDY0IFU6Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2
NAotICAgIFRtcCwgSW1tLCBJbW0sIFRtcAotCi1hcm02NDogVWJmaXozMiBVOkc6MzIsIFU6Rzoz
MiwgVTpHOjMyLCBaRDpHOjMyCi0gICAgVG1wLCBJbW0sIEltbSwgVG1wCi0KLWFybTY0OiBVYmZp
ejY0IFU6Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAotICAgIFRtcCwgSW1tLCBJbW0sIFRt
cAotCi1hcm02NDogQml0RmllbGRJbnNlcnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpH
OjMyCi0gICAgVG1wLCBJbW0sIEltbSwgVG1wCi0KLWFybTY0OiBCaXRGaWVsZEluc2VydDY0IFU6
Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAotICAgIFRtcCwgSW1tLCBJbW0sIFRtcAotCiA2
NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKICAgICBh
cm02NDogQml0SW1tNjQsIFRtcCwgVG1wCkBAIC04MzAsNiArODEyLDQyIEBAIHg4Nl82NDogWGNo
ZzY0IFVEOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKICAgICBUbXAsIEFkZHIKICAgICBUbXAsIElu
ZGV4CiAKK2FybTY0OiBFeHRyYWN0VW5zaWduZWRCaXRmaWVsZDMyIFU6RzozMiwgVTpHOjMyLCBV
Okc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IEV4dHJhY3RV
bnNpZ25lZEJpdGZpZWxkNjQgVTpHOjY0LCBVOkc6MzIsIFU6RzozMiwgRDpHOjY0CisgICAgVG1w
LCBJbW0sIEltbSwgVG1wCisKK2FybTY0OiBJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvMzIg
VTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAor
Cithcm02NDogSW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzY0IFU6Rzo2NCwgVTpHOjMyLCBV
Okc6MzIsIEQ6Rzo2NAorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCithcm02NDogSW5zZXJ0Qml0
RmllbGQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBJbW0sIElt
bSwgVG1wCisKK2FybTY0OiBJbnNlcnRCaXRGaWVsZDY0IFU6Rzo2NCwgVTpHOjMyLCBVOkc6MzIs
IEQ6Rzo2NAorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCithcm02NDogQ2xlYXJCaXRGaWVsZDMy
IFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgSW1tLCBJbW0sIFRtcAorCithcm02NDogQ2xl
YXJCaXRGaWVsZDY0IFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKKyAgICBJbW0sIEltbSwgVG1wCisK
K2FybTY0OiBDbGVhckJpdHNXaXRoTWFzazMyIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAg
VG1wLCBUbXAsIFRtcAorCithcm02NDogQ2xlYXJCaXRzV2l0aE1hc2s2NCBVOkc6NjQsIFU6Rzo2
NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIFRtcAorCithcm02NDogT3JOb3QzMiBVOkc6MzIsIFU6
RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wLCBUbXAKKworYXJtNjQ6IE9yTm90NjQgVTpHOjY0
LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBUbXAKKwogIyBUaGUgZmlyc3Qgb3BlcmFu
ZCBpcyByYXguCiAjIEZJWE1FOiBUaGlzIGZvcm11bGF0aW9uIG1lYW5zIHRoYXQgdGhlIGJvb2xl
YW4gcmVzdWx0IGNhbm5vdCBiZSBwdXQgaW4gZWF4LCBldmVuIHRob3VnaCBhbGwgdXNlcnMKICMg
b2YgdGhpcyB3b3VsZCBiZSBPSyB3aXRoIHRoYXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgK
aW5kZXggNDRjMGE1MGJhMTEyOTBjZTYxZTQ4ZDY4M2E0MWNlZDFiYmI1YzI1Ni4uY2ViMzVhZWNj
NTI4OTZmYzkwOGRhMGMwYjIwYWMzOTcwOTI5YWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuaApAQCAtNDI4LDggKzQyOCwxMiBAQCB2b2lkIHRlc3RVYmZpejY0QW5kU2hpZnRWYWx1ZU1h
c2soKTsKIHZvaWQgdGVzdFViZml6NjRBbmRTaGlmdE1hc2tWYWx1ZSgpOwogdm9pZCB0ZXN0VWJm
aXo2NFNoaWZ0QW5kKCk7CiB2b2lkIHRlc3RVYmZpejY0QW5kU2hpZnQoKTsKLXZvaWQgdGVzdEJp
dEZpZWxkSW5zZXJ0MzIoKTsKLXZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0NjQoKTsKK3ZvaWQgdGVz
dEluc2VydEJpdEZpZWxkMzIoKTsKK3ZvaWQgdGVzdEluc2VydEJpdEZpZWxkNjQoKTsKK3ZvaWQg
dGVzdEJJQzMyKCk7Cit2b2lkIHRlc3RCSUM2NCgpOwordm9pZCB0ZXN0T3JOb3QzMigpOwordm9p
ZCB0ZXN0T3JOb3Q2NCgpOwogdm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNr
MzIoKTsKIHZvaWQgdGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazY0KCk7CiB2b2lk
IHRlc3RCYXNpY1NlbGVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiM18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5k
ZXggOTRhN2UzNGNjN2Q4MDlkYzkyZDBkY2Q0NzI5NGVmYmIwMzE3ZmNlZC4uMGE0MDM2ZGMyYmQ3
N2Q2MzQyYTQxZmE4ODRhY2ZhZWI2ZTY0N2M1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzXzIuY3BwCkBAIC0zMTU4LDcgKzMxNTgsNyBAQCB2b2lkIHRlc3RVYmZpejY0QW5kU2hpZnQo
KQogICAgIH0KIH0KIAotdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQzMigpCit2b2lkIHRlc3RJbnNl
cnRCaXRGaWVsZDMyKCkKIHsKICAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZl
bCgpIDwgMikKICAgICAgICAgcmV0dXJuOwpAQCAtMzIzNiw3ICszMjM2LDcgQEAgdm9pZCB0ZXN0
Qml0RmllbGRJbnNlcnQzMigpCiAgICAgfQogfQogCi12b2lkIHRlc3RCaXRGaWVsZEluc2VydDY0
KCkKK3ZvaWQgdGVzdEluc2VydEJpdEZpZWxkNjQoKQogewogICAgIGlmIChKU0M6Ok9wdGlvbnM6
OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQogICAgICAgICByZXR1cm47CkBAIC0zMzA2LDYgKzMz
MDYsMjM5IEBAIHZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0NjQoKQogICAgIH0KIH0KIAordm9pZCB0
ZXN0QklDMzIoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkg
PCAyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICYgKC1t
IC0gMSkKKyAgICBhdXRvIHRlc3QxID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSkgLT4gaW50
MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBjb25zdDEgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisKKyAgICAgICAg
VmFsdWUqIG5lZ1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdp
bigpLCBtVmFsdWUpOworICAgICAgICBWYWx1ZSogc3ViVmFsdWUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5lZ1ZhbHVlLCBjb25zdDEpOworICAgICAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5k
LCBPcmlnaW4oKSwgblZhbHVlLCBzdWJWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNv
bXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hl
Y2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJiaWMiKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxp
bnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9
IG4gJiAobSBeIC0xKQorICAgIGF1dG8gdGVzdDIgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBt
KSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
IAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIG1pbnVz
T25lVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
LTEpOworCisgICAgICAgIFZhbHVlKiB4b3JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0WG9yLCBPcmlnaW4oKSwgbVZhbHVlLCBtaW51c09uZVZhbHVlKTsKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFu
ZCwgT3JpZ2luKCksIG5WYWx1ZSwgeG9yVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAiYmljIik7CisgICAgICAgIHJldHVybiBpbnZva2U8
aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgQ0hFQ0sodGVzdDEobi52YWx1ZSwgbS52YWx1ZSkgPT0gKG4udmFsdWUgJiAo
LW0udmFsdWUgLSAxKSkpOworICAgICAgICAgICAgQ0hFQ0sodGVzdDIobi52YWx1ZSwgbS52YWx1
ZSkgPT0gKG4udmFsdWUgJiAobS52YWx1ZSBeIC0xKSkpOworICAgICAgICB9CisgICAgfQorfQor
Cit2b2lkIHRlc3RCSUM2NCgpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0
TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9
IG4gJiAoLW0gLSAxKQorICAgIGF1dG8gdGVzdDEgPSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBt
KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
KyAgICAgICAgVmFsdWUqIGNvbnN0MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAxKTsKKworICAgICAgICBWYWx1ZSogbmVnVmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG1WYWx1ZSk7CisgICAgICAgIFZhbHVl
KiBzdWJWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwg
bmVnVmFsdWUsIGNvbnN0MSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBuVmFsdWUsIHN1YlZhbHVl
KSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlm
IChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJp
YyIpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9
OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAmIChtIF4gLTEpCisgICAgYXV0byB0ZXN0
MiA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0pIC0+IGludDY0X3QgeworICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1
ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogbWludXNPbmVWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7CisK
KyAgICAgICAgVmFsdWUqIHhvclZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRYb3IsIE9yaWdpbigpLCBtVmFsdWUsIG1pbnVzT25lVmFsdWUpOworICAgICAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmln
aW4oKSwgblZhbHVlLCB4b3JWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oKmNvZGUsICJiaWMiKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90
PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5k
cygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAg
ICAgICBDSEVDSyh0ZXN0MShuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSAmICgtbS52YWx1
ZSAtIDFMTCkpKTsKKyAgICAgICAgICAgIENIRUNLKHRlc3QyKG4udmFsdWUsIG0udmFsdWUpID09
IChuLnZhbHVlICYgKG0udmFsdWUgXiAtMUxMKSkpOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIHRlc3RPck5vdDMyKCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRM
ZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0g
biB8ICgtbSAtIDEpCisgICAgYXV0byB0ZXN0MSA9IFsmXSAoaW50MzJfdCBuLCBpbnQzMl90IG0p
IC0+IGludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwg
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogY29uc3Qx
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOworCisg
ICAgICAgIFZhbHVlKiBuZWdWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVn
LCBPcmlnaW4oKSwgbVZhbHVlKTsKKyAgICAgICAgVmFsdWUqIHN1YlZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuZWdWYWx1ZSwgY29uc3QxKTsKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdE9yLCBPcmlnaW4oKSwgblZhbHVlLCBzdWJWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm9ybiIpOworICAgICAgICByZXR1cm4g
aW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgLy8gVGVzdCBQYXR0
ZXJuOiBkID0gbiB8IChtIF4gLTEpCisgICAgYXV0byB0ZXN0MiA9IFsmXSAoaW50MzJfdCBuLCBp
bnQzMl90IG0pIC0+IGludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSog
bVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5j
LCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1
ZSogbWludXNPbmVWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAtMSk7CisKKyAgICAgICAgVmFsdWUqIHhvclZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBtVmFsdWUsIG1pbnVzT25lVmFsdWUpOwor
ICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0T3IsIE9yaWdpbigpLCBuVmFsdWUsIHhvclZhbHVlKSk7CisKKyAgICAgICAgYXV0byBj
b2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm9ybiIpOworICAgICAgICByZXR1cm4g
aW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG4g
OiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRz
KCkpIHsKKyAgICAgICAgICAgIENIRUNLKHRlc3QxKG4udmFsdWUsIG0udmFsdWUpID09IChuLnZh
bHVlIHwgKC1tLnZhbHVlIC0gMSkpKTsKKyAgICAgICAgICAgIENIRUNLKHRlc3QyKG4udmFsdWUs
IG0udmFsdWUpID09IChuLnZhbHVlIHwgKG0udmFsdWUgXiAtMSkpKTsKKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCB0ZXN0T3JOb3Q2NCgpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVm
YXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRlc3QgUGF0
dGVybjogZCA9IG4gfCAoLW0gLSAxKQorICAgIGF1dG8gdGVzdDEgPSBbJl0gKGludDY0X3Qgbiwg
aW50NjRfdCBtKSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5W
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGNvbnN0MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKworICAgICAgICBWYWx1ZSogbmVnVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG1WYWx1ZSk7CisgICAg
ICAgIFZhbHVlKiBzdWJWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBP
cmlnaW4oKSwgbmVnVmFsdWUsIGNvbnN0MSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRPciwgT3JpZ2luKCksIG5WYWx1ZSwg
c3ViVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAg
ICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpj
b2RlLCAib3JuIik7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50NjRfdD4oKmNvZGUsIG4sIG0p
OworICAgIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIHwgKG0gXiAtMSkKKyAgICBh
dXRvIHRlc3QyID0gWyZdIChpbnQ2NF90IG4sIGludDY0X3QgbSkgLT4gaW50NjRfdCB7CisgICAg
ICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBtaW51
c09uZVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IC0xKTsKKworICAgICAgICBWYWx1ZSogeG9yVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIG1WYWx1ZSwgbWludXNPbmVWYWx1ZSk7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRP
ciwgT3JpZ2luKCksIG5WYWx1ZSwgeG9yVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAib3JuIik7CisgICAgICAgIHJldHVybiBpbnZva2U8
aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0
T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgQ0hFQ0sodGVzdDEobi52YWx1ZSwgbS52YWx1ZSkgPT0gKG4udmFsdWUgfCAo
LW0udmFsdWUgLSAxTEwpKSk7CisgICAgICAgICAgICBDSEVDSyh0ZXN0MihuLnZhbHVlLCBtLnZh
bHVlKSA9PSAobi52YWx1ZSB8IChtLnZhbHVlIF4gLTFMTCkpKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwogdm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrMzIoKQogewogICAg
IC8vIFR1cm4gdGhpczogKHRtcCA+PiBpbW0pICYgbWFzayAKQEAgLTQxOTgsOCArNDQzMSwxMiBA
QCB2b2lkIGFkZEJpdFRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNoYXJl
ZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKICAgICBSVU4odGVzdFViZml6NjRBbmRTaGlmdE1hc2tW
YWx1ZSgpKTsKICAgICBSVU4odGVzdFViZml6NjRTaGlmdEFuZCgpKTsKICAgICBSVU4odGVzdFVi
Zml6NjRBbmRTaGlmdCgpKTsKLSAgICBSVU4odGVzdEJpdEZpZWxkSW5zZXJ0MzIoKSk7Ci0gICAg
UlVOKHRlc3RCaXRGaWVsZEluc2VydDY0KCkpOworICAgIFJVTih0ZXN0SW5zZXJ0Qml0RmllbGQz
MigpKTsKKyAgICBSVU4odGVzdEluc2VydEJpdEZpZWxkNjQoKSk7CisgICAgUlVOKHRlc3RCSUMz
MigpKTsKKyAgICBSVU4odGVzdEJJQzY0KCkpOworICAgIFJVTih0ZXN0T3JOb3QzMigpKTsKKyAg
ICBSVU4odGVzdE9yTm90NjQoKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFy
Z0ltbU1hc2szMigpKTsKICAgICBSVU4odGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFz
azY0KCkpOwogICAgIFJVTih0ZXN0Qml0QW5kQXJncyg0MywgNDMpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAyN2I2MzFkNGNjNzNhZDVi
YTAxY2RjOTI4Yjc3OGE0MzliYzBlZGYyLi4zZDA4NzI4MDgyN2QyYWVmN2MzMmVlZDJhZmQxODYy
ZjRjMzlhZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCkBAIC0xNjc1NCw3ICsxNjc1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtZXJn
ZS0+YXBwZW5kU29tZVJlZ2lzdGVyKHB0cik7CiAgICAgICAgICAgICBtZXJnZS0+c2V0R2VuZXJh
dG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzJdLmdwcigpLCBw
YXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgIGppdC5iaXRGaWVsZEluc2VydDY0KHBh
cmFtc1sxXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKDY0IC0gTWFjcm9Bc3NlbWJsZXI6Om1heE51bWJlck9mQWxsb3dlZFBB
Q0JpdHMpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgIGppdC5pbnNlcnRCaXRG
aWVsZDY0KHBhcmFtc1sxXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDY0IC0gTWFjcm9Bc3NlbWJsZXI6Om1heE51bWJlck9m
QWxsb3dlZFBBQ0JpdHMpLCBwYXJhbXNbMF0uZ3ByKCkpOwogICAgICAgICAgICAgfSk7CiAKICAg
ICAgICAgICAgIHJlc3VsdCA9IGRvVW50YWdBcnJheVB0cihtZXJnZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggNDk4MTdhN2FkZDU0MGI3
MTZmZWUyNmRlNDM3NmM2MTA4MjdlNTdlMi4uZDM2ZWI3MWI5YWRkMzZkNDQyNjQ5ODRiODdkZWQy
MDIwYjczYTA2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmNwcApAQCAtMTExMSw3ICsxMTExLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNhZ2VX
aXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpLaW5kIGtpbmQsIEdQUlJlZyBzdG9yYWdlKQogICAg
IGFkZFB0cihUcnVzdGVkSW1tUHRyKEdpZ2FjYWdlOjpiYXNlUHRyKGtpbmQpKSwgc3RvcmFnZSk7
CiAjaWYgQ1BVKEFSTTY0RSkKICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKQot
ICAgICAgICBiaXRGaWVsZEluc2VydDY0KHN0b3JhZ2UsIFRydXN0ZWRJbW0zMigwKSwgVHJ1c3Rl
ZEltbTMyKDY0IC0gbWF4TnVtYmVyT2ZBbGxvd2VkUEFDQml0cyksIHRlbXBSZWcpOworICAgICAg
ICBpbnNlcnRCaXRGaWVsZDY0KHN0b3JhZ2UsIFRydXN0ZWRJbW0zMigwKSwgVHJ1c3RlZEltbTMy
KDY0IC0gbWF4TnVtYmVyT2ZBbGxvd2VkUEFDQml0cyksIHRlbXBSZWcpOwogICAgIGlmIChza2lw
LmlzU2V0KCkpCiAgICAgICAgIHNraXAubGluayh0aGlzKTsKICNlbmRpZgpAQCAtMTE0OCw3ICsx
MTQ4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWco
R2lnYWNhZ2U6OktpbmQga2luZCwgR1BSUmVnIHN0b3IKICAgICAgICAgICAgIEFTU0VSVChMb2dp
Y2FsSW1tZWRpYXRlOjpjcmVhdGU2NChHaWdhY2FnZTo6bWFzayhraW5kKSkuaXNWYWxpZCgpKTsK
ICAgICAgICAgICAgIGFuZFB0cihUcnVzdGVkSW1tUHRyKEdpZ2FjYWdlOjptYXNrKGtpbmQpKSwg
dGVtcFJlZyk7CiAgICAgICAgICAgICBhZGRQdHIoc2NyYXRjaCwgdGVtcFJlZyk7Ci0gICAgICAg
ICAgICBiaXRGaWVsZEluc2VydDY0KHRlbXBSZWcsIFRydXN0ZWRJbW0zMigwKSwgVHJ1c3RlZElt
bTMyKDY0IC0gbWF4TnVtYmVyT2ZBbGxvd2VkUEFDQml0cyksIHN0b3JhZ2UpOworICAgICAgICAg
ICAgaW5zZXJ0Qml0RmllbGQ2NCh0ZW1wUmVnLCBUcnVzdGVkSW1tMzIoMCksIFRydXN0ZWRJbW0z
Mig2NCAtIG1heE51bWJlck9mQWxsb3dlZFBBQ0JpdHMpLCBzdG9yYWdlKTsKICNlbHNlCiAgICAg
ICAgICAgICBhbmRQdHIoVHJ1c3RlZEltbVB0cihHaWdhY2FnZTo6bWFzayhraW5kKSksIHN0b3Jh
Z2UpOwogICAgICAgICAgICAgYWRkUHRyKHNjcmF0Y2gsIHN0b3JhZ2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432356</attachid>
            <date>2021-06-27 14:16:31 -0700</date>
            <delta_ts>2021-06-28 01:23:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227202-20210627161630.patch</filename>
            <type>text/plain</type>
            <size>45577</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
M2RjMjc2YWQxOWE3YTc3NTE4MWFlMzdkMThhYTkzNWYxMGQ2ZGZkLi41MWM4ZGEwYTk0YTAzNjBl
MThiOTA4ZGQ1OTA1MGNlODhkZDZjYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODcgQEAKKzIwMjEtMDYtMjcgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBhIG5ldyBwYXR0ZXJuIHRvIGluc3RydWN0aW9uIHNlbGVjdG9y
IHRvIHVzZSBCSUMgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHRocmVlIG1vZGlmaWNh
dGlvbnM6CisgICAgICAgICAgICAxLiBBZGQgYml0IGNsZWFyIChCSUMpIGFuZCBvciBub3QgKE9S
TikgdG8gQWlyIG9wY29kZSB0byBzZXJ2ZSBpbnRydWNpdG9uIHNlbGVjdG9yLgorICAgICAgICAg
ICAgMi4gQWRkIGJpdGZpZWxkIGNsZWFyIChCRkMpIHRvIEFpciBvcGNvZGUuIAorICAgICAgICAg
ICAgNC4gRG8gcmVmYWN0b3JpbmcgLSByZW5hbWUgQWlyIG9wY29kZXMgYWRkZWQgaW4gdGhlIHBy
ZXZpb3VzIHBhdGNoZXMuCisKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMj
IyBQYXJ0IEEgQklDICMjIworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgR2l2
ZW4gdGhlIG9wZXJhdGlvbjoKKworICAgICAgICBiaWMgUmQsIFJuLCBSbQorCisgICAgICAgIFRo
ZSBCSUMgKEJpdCBDbGVhcikgaW5zdHJ1Y3Rpb24gcGVyZm9ybXMgYW4gQU5EIG9wZXJhdGlvbiBv
biB0aGUgYml0cyBpbiBSbiB3aXRoIHRoZSAKKyAgICAgICAgY29tcGxlbWVudHMgb2YgdGhlIGNv
cnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgdmFsdWUgb2YgUm0uIFRoZSBpbnN0cnVjdGlvbiBzZWxl
Y3RvciBjYW4gCisgICAgICAgIHV0aWxpemUgdGhpcyB0byBsb3dlcmluZyBjZXJ0YWluIHBhdHRl
cm5zIGluIEIzIElSIGJlZm9yZSBmdXJ0aGVyIEFpciBvcHRpbWl6YXRpb24uIAorICAgICAgICBU
aGUgZXF1aXZhbGVudCBwYXR0ZXJucyBvZiB0aGlzIGluc3RydWN0aW9uIGFyZToKKworICAgICAg
ICBQYXR0ZXJuIDE6CisgICAgICAgICAgICBkID0gbiAmICgtbSAtIDEpCisKKyAgICAgICAgUGF0
dGVybiAyOgorICAgICAgICAgICAgZCA9IG4gJiAobSBeIC0xKQorCisgICAgICAgIEluIG9yZGVy
IHRvIGdldCBiZW5lZml0cyBmb3IgY29tcGxlbWVudCBvcGVyYXRpb24sIGN1cnJlbnQgaW5zdHJ1
Y3Rpb24gc2VsZWN0b3IgdXNlcyAKKyAgICAgICAgbXZuIGluc3RydWN0aW9uIHRvIGxvd2VyIHRo
ZSBwYXR0ZXJuIHZhbHVlIF4gLTEuIFRoZW4sIGEgbmV3IHN0cmVuZ3RoIHJlZHVjdGlvbiBydWxl
IGlzIAorICAgICAgICBpbnRyb2R1Y2VkOgorICAgICAgICAgICAgVHVybiB0aGlzOiAtdmFsdWUg
LSAxIAorICAgICAgICAgICAgSW50byB0aGlzOiB2YWx1ZSBeIC0xCisKKyAgICAgICAgU28sIGQg
PSBuICYgKG0gXiAtMSkgaXMgc2VsZWN0ZWQgYXMgdGhlIGNhbm9uaWNhbCBmb3JtLgorCisgICAg
ICAgIEdpdmVuIEIzIElSOgorICAgICAgICBJbnQgQDAgPSBBcmd1bWVudFJlZygleDApCisgICAg
ICAgIEludCBAMSA9IEFyZ3VtZW50UmVnKCV4MSkKKyAgICAgICAgSW50IEAyID0gLTEKKyAgICAg
ICAgSW50IEAzID0gQml0WG9yKEAxLCBAMikKKyAgICAgICAgSW50IEA0ID0gQml0QW5kKEAwLCBA
MykKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkKKworICAgICAgICBCZWZv
cmUgQWRkaW5nIEJJQzoKKyAgICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTm90
ICV4MSwgJXgxLCAgICAgIEAzCisgICAgICAgIEFuZCAleDAsICV4MSwgJXgwLCBANAorICAgICAg
ICBSZXQgJXgwLCAgICAgICAgICAgQDUKKworICAgICAgICBBZnRlciBBZGRpbmcgQklDOgorICAg
ICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBCaWMgJXgwLCAleDEsICV4MCwgQDQK
KyAgICAgICAgUmV0ICV4MCwgICAgICAgICAgIEA1CisKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0t
LS0tCisgICAgICAgICMjIyBQYXJ0IEEgT1JOICMjIworICAgICAgICAtLS0tLS0tLS0tLS0tLS0t
LS0KKyAgICAgICAgR2l2ZW4gdGhlIG9wZXJhdGlvbjoKKworICAgICAgICBvcm4gUmQsIFJuLCBS
bQorCisgICAgICAgIEJpdHdpc2UgT1IgTk9UIChzaGlmdGVkIHJlZ2lzdGVyKSBwZXJmb3JtcyBh
IGJpdHdpc2UgKGluY2x1c2l2ZSkgT1Igb2YgYSByZWdpc3RlciB2YWx1ZSAKKyAgICAgICAgUm4g
YW5kIHRoZSBjb21wbGVtZW50IG9mIGFuIG9wdGlvbmFsbHktc2hpZnRlZCByZWdpc3RlciB2YWx1
ZSBSbSwgYW5kIHdyaXRlcyB0aGUgcmVzdWx0IAorICAgICAgICB0byB0aGUgZGVzdGluYXRpb24g
cmVnaXN0ZXIgUmQuCisKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybnMgb2YgdGhpcyBp
bnN0cnVjdGlvbiBhcmU6CisKKyAgICAgICAgUGF0dGVybiAxOgorICAgICAgICAgICAgZCA9IG4g
fCAoLW0gLSAxKQorCisgICAgICAgIFBhdHRlcm4gMjoKKyAgICAgICAgICAgIGQgPSBuIHwgKG0g
XiAtMSkKKworICAgICAgICBUaGVuLCBkID0gbiB8IChtIF4gLTEpIGlzIHNlbGVjdGVkIGFzIHRo
ZSBjYW5vbmljYWwgZm9ybS4KKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50IEAw
ID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJbnQgQDEgPSBBcmd1bWVudFJlZygleDEpCisg
ICAgICAgIEludCBAMiA9IC0xCisgICAgICAgIEludCBAMyA9IEJpdFhvcihAMSwgQDIpCisgICAg
ICAgIEludCBANCA9IEJpdE9yKEAwLCBAMykKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBU
ZXJtaW5hbCkKKworICAgICAgICBCZWZvcmUgQWRkaW5nIEJJQzoKKyAgICAgICAgLy8gT2xkIG9w
dGltaXplZCBBSVIKKyAgICAgICAgTm90ICV4MSwgJXgxLCAgICAgIEAzCisgICAgICAgIE9yICAl
eDAsICV4MSwgJXgwLCBANAorICAgICAgICBSZXQgJXgwLCAgICAgICAgICAgQDUKKworICAgICAg
ICBBZnRlciBBZGRpbmcgQklDOgorICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAg
ICBPcm4gJXgwLCAleDEsICV4MCwgQDQKKyAgICAgICAgUmV0ICV4MCwgICAgICAgICAgIEA1CisK
KyAgICAgICAgLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjIFBhcnQgQiAjIyMKKyAgICAgICAg
LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgVGhlIEJpdGZpZWxkIENsZWFyIChCRkMpLCBsZWF2aW5n
IG90aGVyIGJpdHMgdW5jaGFuZ2VkLCBpcyBzaW1pbGFyIHRvIEJGSSB3aGljaCBpcyBhbiAKKyAg
ICAgICAgYWxpYXMgb2YgQkZNLiBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIGJmYyBS
ZCwgbHNiLCB3aWR0aAorCisgICAgICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm4gb2YgdGhpcyBp
bnN0cnVjdGlvbiBpczoKKworICAgICAgICBtYXNrID0gKCgxIDw8IHdpZHRoKSAtIDEpIDw8IGxz
YgorICAgICAgICBkID0gZCAmIH5tYXNrCisKKyAgICAgICAgU2luY2UgbWFzayBpcyBhIGNvbnN0
YW50IGFuZCBCMyBwZXJmb3JtcyBjb25zdGFudCBmb2xkIGluIHRoZSBvcHRpbWl6YXRpb24gcGhh
c2UsIHRoaXMgCisgICAgICAgIHBhdHRlcm4gd2lsbCBkaXJlY3RseSBsb3dlciB0byB0aGUgQml0
QW5kIGJpbmFyeSBvcGVyYXRpb24uIFNvLCBubyBuZWVkIHRvIG1hdGNoIHRoaXMgcGF0dGVybi4K
KworICAgICAgICAtLS0tLS0tLS0tLS0tLQorICAgICAgICAjIyMgUGFydCBDICMjIworICAgICAg
ICAtLS0tLS0tLS0tLS0tLQorICAgICAgICBBdCBNYWNyb0Fzc2VtYmxlciBsZXZlbCwgdGhlIGVt
aXR0ZXJzIGFyZSBleGVwZWN0ZWQgdG8gYmUgZXhwcmVzc2VkIGluIGVuZ2xpc2ggCisgICAgICAg
IChlLmcuIHNvbWV0aGluZyBsaWtlIGNsZWFyQml0RmllbGQgZm9yIEJGQykuIERvIHJlZmFjdG9y
aW5nIHRvIHJlbmFtZSBBaXIgb3Bjb2RlIGZvciAKKyAgICAgICAgVUJGWCwgVUJGSVosIEJGSSwg
YW5kIEJJQy4KKworICAgICAgICAqIGFzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oOgorICAgICAg
ICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6YmZjKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpleHRy
YWN0VW5zaWduZWRCaXRmaWVsZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6ZXh0cmFjdFVuc2lnbmVkQml0ZmllbGQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6Omluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm8zMik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm82NCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omluc2VydEJpdEZpZWxkMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjppbnNlcnRCaXRGaWVsZDY0KToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2xlYXJCaXRGaWVsZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2xlYXJCaXRGaWVsZDY0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2xlYXJCaXRzV2l0aE1hc2szMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNsZWFyQml0c1dpdGhNYXNrNjQpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpvck5vdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk02NDo6b3JOb3Q2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OnViZngzMik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnViZng2NCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnVi
Zml6MzIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZp
ejY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Yml0Rmll
bGRJbnNlcnQzMik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmJpdEZpZWxkSW5zZXJ0NjQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFz
bS5jcHA6CisgICAgICAgIChKU0M6OnRlc3RNdWx0aXBseVNpZ25FeHRlbmQzMik6CisgICAgICAg
IChKU0M6OnRlc3RNdWx0aXBseVN1YlNpZ25FeHRlbmQzMik6CisgICAgICAgIChKU0M6OnRlc3RF
eHRyYWN0VW5zaWduZWRCaXRmaWVsZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdEV4dHJhY3RVbnNp
Z25lZEJpdGZpZWxkNjQpOgorICAgICAgICAoSlNDOjp0ZXN0SW5zZXJ0VW5zaWduZWRCaXRmaWVs
ZEluWmVybzMyKToKKyAgICAgICAgKEpTQzo6dGVzdEluc2VydFVuc2lnbmVkQml0ZmllbGRJblpl
cm82NCk6CisgICAgICAgIChKU0M6OnRlc3RJbnNlcnRCaXRGaWVsZDMyKToKKyAgICAgICAgKEpT
Qzo6dGVzdEluc2VydEJpdEZpZWxkNjQpOgorICAgICAgICAoSlNDOjp0ZXN0Q2xlYXJCaXRGaWVs
ZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdENsZWFyQml0RmllbGQ2NCk6CisgICAgICAgIChKU0M6
OnRlc3RDbGVhckJpdHNXaXRoTWFzazMyKToKKyAgICAgICAgKEpTQzo6dGVzdENsZWFyQml0c1dp
dGhNYXNrNjQpOgorICAgICAgICAoSlNDOjp0ZXN0T3JOb3QzMik6CisgICAgICAgIChKU0M6OnRl
c3RPck5vdDY0KToKKyAgICAgICAgKEpTQzo6dGVzdE11bDMyU2lnbkV4dGVuZCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OnRlc3RNdWxTdWJTaWduRXh0ZW5kMzIpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjp0ZXN0VWJmeDMyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6dGVzdFViZng2NCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RVYmZpejMyKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6dGVzdFViZml6NjQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjp0ZXN0Qml0RmllbGRJ
bnNlcnQzMik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RCaXRGaWVsZEluc2VydDY0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL0Iz
UmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoK
KyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAg
ICAgICh0ZXN0SW5zZXJ0Qml0RmllbGQzMik6CisgICAgICAgICh0ZXN0SW5zZXJ0Qml0RmllbGQ2
NCk6CisgICAgICAgICh0ZXN0QklDMzIpOgorICAgICAgICAodGVzdEJJQzY0KToKKyAgICAgICAg
KHRlc3RPck5vdDMyKToKKyAgICAgICAgKHRlc3RPck5vdDY0KToKKyAgICAgICAgKGFkZEJpdFRl
c3RzKToKKyAgICAgICAgKHRlc3RCaXRGaWVsZEluc2VydDMyKTogRGVsZXRlZC4KKyAgICAgICAg
KHRlc3RCaXRGaWVsZEluc2VydDY0KTogRGVsZXRlZC4KKyAgICAgICAgKiBmdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FnZVdpdGhvdXRVbnRhZ2dpbmcpOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWcpOgor
CiAyMDIxLTA2LTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBV
c2UgbGRwIGFuZCBzdHAgbW9yZSBmb3Igc2F2aW5nIC8gcmVzdG9yaW5nIHJlZ2lzdGVycyBvbiBB
Uk02NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRB
c3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaAppbmRleCA3NThjYmU0MDI3Nzk4ZTgzMWQyZDAzY2E4NDhlZDhiMDQ4MzY1ZTE0Li5jYjRj
YjFiYzA3MzAxZGU4ZTYyYmZiYmVlZGI3MWNlNDc0OGNiZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCkBAIC04MzIsNiArODMyLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgaW5zbihjb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZShvZmZz
ZXQsIGNvbmQpKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIGJmYyhSZWdpc3RlcklEIHJkLCBpbnQgbHNiLCBpbnQgd2lkdGgpCisg
ICAgeworICAgICAgICBiZmk8ZGF0YXNpemU+KHJkLCBBUk02NFJlZ2lzdGVyczo6enIsIGxzYiwg
d2lkdGgpOworICAgIH0KKwogICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgYmZpKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIGludCBsc2IsIGlu
dCB3aWR0aCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDA2OWJkNDZiMzk0MWMwYTg2ZThlM2EzNjk5
NDRhYTRhOTBiYzA3NWQuLjI2ZDllNTEzYzFkN2Q4N2ViYWIwZDFiZmUzNmRlNDY0OTE5ODk5NmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCkBAIC0zOTAsMjYgKzM5MCw2IEBAIHB1YmxpYzoKICAgICAgICAgYW5kMzIo
ZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCi0gICAgdm9pZCB1YmZ4MzIoUmVnaXN0
ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudWJmeDwzMj4oZGVzdCwgc3JjLCBs
c2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Ci0gICAgfQotCi0gICAgdm9pZCB1YmZ4NjQoUmVn
aXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0
ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudWJmeDw2ND4oZGVzdCwgc3Jj
LCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Ci0gICAgfQotCi0gICAgdm9pZCB1YmZpejMy
KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnViZml6PDMyPihkZXN0
LCBzcmMsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHVi
Zml6NjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0
aCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudWJmaXo8NjQ+
KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOwotICAgIH0KLQogICAgIHZv
aWQgYW5kNjQoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZF88NjQ+KGRlc3QsIHNyYzEsIHNyYzIp
OwpAQCAtNDY4LDYgKzQ0OCw2NyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZF88
NjQ+KGRlc3QsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIC8vIEJpdCBP
cGVyYXRpb25zOgorICAgIHZvaWQgZXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMihSZWdpc3RlcklE
IHNyYywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci51YmZ4PDMyPihkZXN0LCBzcmMsIGxzYi5t
X3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGV4dHJhY3RVbnNpZ25l
ZEJpdGZpZWxkNjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0z
MiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudWJm
eDw2ND4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisg
ICAgdm9pZCBpbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvMzIoUmVnaXN0ZXJJRCBzcmMsIFRy
dXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIudWJmaXo8MzI+KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUs
IHdpZHRoLm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgaW5zZXJ0VW5zaWduZWRCaXRmaWVs
ZEluWmVybzY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIg
d2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnViZml6
PDY0PihkZXN0LCBzcmMsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAg
ICB2b2lkIGluc2VydEJpdEZpZWxkMzIoUmVnaXN0ZXJJRCBzb3VyY2UsIFRydXN0ZWRJbW0zMiBs
c2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYmZpPDMyPihkZXN0LCBzb3VyY2UsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3Zh
bHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGluc2VydEJpdEZpZWxkNjQoUmVnaXN0ZXJJRCBzb3Vy
Y2UsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmZpPDY0PihkZXN0LCBzb3VyY2UsIGxzYi5t
X3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQml0RmllbGQz
MihUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJmYzwzMj4oZGVzdCwgbHNiLm1fdmFsdWUsIHdp
ZHRoLm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJCaXRGaWVsZDY0KFRydXN0ZWRJ
bW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYmZjPDY0PihkZXN0LCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1
ZSk7CisgICAgfQorCisgICAgdm9pZCBjbGVhckJpdHNXaXRoTWFzazMyKFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmJpYzwzMj4oZGVzdCwgc3JjLCBtYXNrKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFy
Qml0c1dpdGhNYXNrNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgbWFzaywgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmljPDY0PihkZXN0LCBzcmMsIG1h
c2spOworICAgIH0KKworICAgIHZvaWQgb3JOb3QzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcm48
MzI+KGRlc3QsIHNyYywgbWFzayk7CisgICAgfQorCisgICAgdm9pZCBvck5vdDY0KFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm9ybjw2ND4oZGVzdCwgc3JjLCBtYXNrKTsKKyAgICB9CisKICAgICB2b2lk
IGNsZWFyQml0NjQoUmVnaXN0ZXJJRCBiaXRUb0NsZWFyLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lz
dGVySUQgc2NyYXRjaEZvck1hc2sgPSBJbnZhbGlkR1BSUmVnKQogICAgIHsKICAgICAgICAgaWYg
KHNjcmF0Y2hGb3JNYXNrID09IEludmFsaWRHUFJSZWcpCkBAIC0yNzUyLDE4ICsyNzkzLDYgQEAg
cHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5mY3NlbDw2ND4oZGVzdCwgdGhlbkNhc2UsIGVs
c2VDYXNlLCBBUk02NENvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCi0gICAgLy8gQml0IGZpZWxk
IG9wZXJhdGlvbnM6Ci0gICAgdm9pZCBiaXRGaWVsZEluc2VydDMyKFJlZ2lzdGVySUQgc291cmNl
LCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkK
LSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJmaTwzMj4oZGVzdCwgc291cmNlLCBsc2IubV92
YWx1ZSwgd2lkdGgubV92YWx1ZSk7Ci0gICAgfQotCi0gICAgLy8gZGVzdEJpdE9mZnNldCBpcyB0
aGUgdG9wIGJpdCBvZiB0aGUgZGVzdGluYXRpb24gd2hlcmUgdGhlIGJpdHMgc2hvdWxkIGJlIGNv
cGllZCB0by4gWmVybyBpcyB0aGUgbG93ZXN0IG9yZGVyIGJpdC4KLSAgICB2b2lkIGJpdEZpZWxk
SW5zZXJ0NjQoUmVnaXN0ZXJJRCBzb3VyY2UsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0z
MiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmZp
PDY0PihkZXN0LCBzb3VyY2UsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKLSAgICB9Ci0K
ICAgICAvLyBGb3J3YXJkcyAvIGV4dGVybmFsIGNvbnRyb2wgZmxvdyBvcGVyYXRpb25zOgogICAg
IC8vCiAgICAgLy8gVGhpcyBzZXQgb2YganVtcCBhbmQgY29uZGl0aW9uYWwgYnJhbmNoIG9wZXJh
dGlvbnMgcmV0dXJuIGEgSnVtcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcAppbmRleCBjOWNmOTY4YjdiNDVmNDIzODdlZGM3ZmQ2NjkzZjA5ZDUzZWU2YTUw
Li4yNzIxNTM3ZTkyZjVjZTdhYTFhNDlkMTE2MmQzNmU5MmEyOWExYmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtOTA0LDcgKzkwNCw3IEBA
IHZvaWQgdGVzdE11bDMyV2l0aEltbWVkaWF0ZXMoKQogfQogCiAjaWYgQ1BVKEFSTTY0KQotdm9p
ZCB0ZXN0TXVsMzJTaWduRXh0ZW5kKCkKK3ZvaWQgdGVzdE11bHRpcGx5U2lnbkV4dGVuZDMyKCkK
IHsKICAgICBmb3IgKGF1dG8gdmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkpIHsKICAgICAgICAgYXV0
byBtdWwgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKQEAgLTEwODksNyArMTA4
OSw3IEBAIHZvaWQgdGVzdFN1YjY0QXJnSW1tNjQoKQogICAgIH0KIH0KIAotdm9pZCB0ZXN0TXVs
U3ViU2lnbkV4dGVuZDMyKCkKK3ZvaWQgdGVzdE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyKCkKIHsK
ICAgICAvLyBkID0gYSAtIFNFeHQzMihuKSAqICBTRXh0MzIobSkKICAgICBhdXRvIHN1YiA9IGNv
bXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewpAQCAtMTExMiw3ICsxMTEyLDcgQEAgdm9p
ZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyKCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdFViZngzMigp
Cit2b2lkIHRlc3RFeHRyYWN0VW5zaWduZWRCaXRmaWVsZDMyKCkKIHsKICAgICB1aW50MzJfdCBz
cmMgPSAweGYwZjBmMGYwOwogICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9IHsgMCwgMSwgNSwg
NywgMzAsIDMxLCAzMiwgNDIsIDU2LCA2MiwgNjMsIDY0IH07CkBAIC0xMTIyLDcgKzExMjIsNyBA
QCB2b2lkIHRlc3RVYmZ4MzIoKQogICAgICAgICAgICAgICAgIGF1dG8gdWJmeDMyID0gY29tcGls
ZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5j
dGlvblByb2xvZ3VlKGppdCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaml0LnViZngzMihHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICBqaXQuZXh0cmFjdFVuc2ln
bmVkQml0ZmllbGQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNiKSwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAogICAgICAgICAgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpAQCAtMTEzNiw3ICsxMTM2LDcg
QEAgdm9pZCB0ZXN0VWJmeDMyKCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdFViZng2NCgpCit2b2lk
IHRlc3RFeHRyYWN0VW5zaWduZWRCaXRmaWVsZDY0KCkKIHsKICAgICB1aW50NjRfdCBzcmMgPSAw
eGYwZjBmMGYwZjBmMGYwZjA7CiAgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCA1
LCA3LCAzMCwgMzEsIDMyLCA0MiwgNTYsIDYyLCA2MywgNjQgfTsKQEAgLTExNDYsNyArMTE0Niw3
IEBAIHZvaWQgdGVzdFViZng2NCgpCiAgICAgICAgICAgICAgICAgYXV0byB1YmZ4NjQgPSBjb21w
aWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoaml0KTsKIAotICAgICAgICAgICAgICAgICAgICBqaXQudWJmeDY0KEdQ
UkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgIGppdC5leHRyYWN0VW5z
aWduZWRCaXRmaWVsZDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsc2IpLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHdpZHRoKSwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CkBAIC0xMTYwLDcgKzExNjAs
NyBAQCB2b2lkIHRlc3RVYmZ4NjQoKQogICAgIH0KIH0KIAotdm9pZCB0ZXN0VWJmaXozMigpCit2
b2lkIHRlc3RJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvMzIoKQogewogICAgIHVpbnQzMl90
IHNyYyA9IDB4ZjBmMGYwZjA7CiAgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCA1
LCA3LCAzMCwgMzEsIDMyLCA0MiwgNTYsIDYyLCA2MywgNjQgfTsKQEAgLTExNzAsNyArMTE3MCw3
IEBAIHZvaWQgdGVzdFViZml6MzIoKQogICAgICAgICAgICAgICAgIGF1dG8gdWJmaXozMiA9IGNv
bXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgICAgICAgICBlbWl0
RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCi0gICAgICAgICAgICAgICAgICAgIGppdC51YmZpejMy
KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgIGppdC5pbnNlcnRV
bnNpZ25lZEJpdGZpZWxkSW5aZXJvMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAogICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKICAg
ICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTExODUs
NyArMTE4NSw3IEBAIHZvaWQgdGVzdFViZml6MzIoKQogICAgIH0KIH0KIAotdm9pZCB0ZXN0VWJm
aXo2NCgpCit2b2lkIHRlc3RJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvNjQoKQogewogICAg
IHVpbnQ2NF90IHNyYyA9IDB4ZjBmMGYwZjBmMGYwZjBmMDsKICAgICBWZWN0b3I8dWludDMyX3Q+
IGltbXMgPSB7IDAsIDEsIDUsIDcsIDMwLCAzMSwgMzIsIDQyLCA1NiwgNjIsIDYzLCA2NCB9OwpA
QCAtMTE5NSw3ICsxMTk1LDcgQEAgdm9pZCB0ZXN0VWJmaXo2NCgpCiAgICAgICAgICAgICAgICAg
YXV0byB1YmZpejY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKLSAgICAgICAgICAgICAg
ICAgICAgaml0LnViZml6NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAg
ICAgICAgaml0Lmluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm82NChHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIobHNiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMih3aWR0aCksIAogICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIpOwpAQCAtMTIxMCw3ICsxMjEwLDcgQEAgdm9pZCB0ZXN0VWJmaXo2NCgpCiAgICAgfQog
fQogCi12b2lkIHRlc3RCaXRGaWVsZEluc2VydDMyKCkKK3ZvaWQgdGVzdEluc2VydEJpdEZpZWxk
MzIoKQogewogICAgIHVpbnQzMl90IHNyYyA9IDB4MGYwZjBmMGY7CiAgICAgdWludDMyX3QgZHN0
ID0gMHhmMGYwZjBmMDsKQEAgLTEyMjEsNyArMTIyMSw3IEBAIHZvaWQgdGVzdEJpdEZpZWxkSW5z
ZXJ0MzIoKQogICAgICAgICAgICAgICAgIGF1dG8gYmZpMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKIAotICAgICAgICAgICAgICAgICAgICBqaXQuYml0RmllbGRJbnNlcnQ2NChHUFJJbmZv
Ojphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICBqaXQuaW5zZXJ0Qml0RmllbGQz
MihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAogICAgICAgICAgICAgICAgICAgICAgICAg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKQEAgLTEyNDAsNyArMTI0MCw3IEBAIHZvaWQgdGVzdEJp
dEZpZWxkSW5zZXJ0MzIoKQogICAgIH0KIH0KIAotdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQ2NCgp
Cit2b2lkIHRlc3RJbnNlcnRCaXRGaWVsZDY0KCkKIHsKICAgICB1aW50NjRfdCBzcmMgPSAweDBm
MGYwZjBmMGYwZjBmMGY7CiAgICAgdWludDY0X3QgZHN0ID0gMHhmMGYwZjBmMGYwZjBmMGYwOwpA
QCAtMTI1MSw3ICsxMjUxLDcgQEAgdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQ2NCgpCiAgICAgICAg
ICAgICAgICAgYXV0byBiZmk2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewog
ICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCi0gICAgICAg
ICAgICAgICAgICAgIGppdC5iaXRGaWVsZEluc2VydDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
CisgICAgICAgICAgICAgICAgICAgIGppdC5pbnNlcnRCaXRGaWVsZDY0KEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihsc2IpLCAKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKHdpZHRoKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOwpAQCAtMTI2OSw2ICsxMjY5LDEyOCBAQCB2b2lkIHRlc3RCaXRGaWVsZEluc2VydDY0
KCkKICAgICAgICAgfQogICAgIH0KIH0KKwordm9pZCB0ZXN0Q2xlYXJCaXRGaWVsZDMyKCkKK3sK
KyAgICB1aW50MzJfdCBzcmMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7
CisgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCA1LCA3LCAzMCwgMzEsIDMyLCA0
MiwgNTYsIDYyLCA2MywgNjQgfTsKKyAgICBmb3IgKGF1dG8gbHNiIDogaW1tcykgeworICAgICAg
ICBmb3IgKGF1dG8gd2lkdGggOiBpbW1zKSB7CisgICAgICAgICAgICBpZiAobHNiID49IDAgJiYg
d2lkdGggPiAwICYmIGxzYiArIHdpZHRoIDwgMzIpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJm
YzMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAg
ICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0
LmNsZWFyQml0RmllbGQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsc2IpLCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxv
Z3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBtYXNrID0gKCgxVSA8PCB3aWR0aCkgLSAx
VSkgPDwgbHNiOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHJocyA9IGludm9rZTx1aW50MzJf
dD4oYmZjMzIsIHNyYyk7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbGhzID0gc3JjICYgfm1h
c2s7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEocmhzLCBsaHMpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RDbGVhckJpdEZpZWxkNjQoKQoreworICAg
IHVpbnQ2NF90IHNyYyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKTsKKyAg
ICBWZWN0b3I8dWludDMyX3Q+IGltbXMgPSB7IDAsIDEsIDUsIDcsIDMwLCAzMSwgMzIsIDQyLCA1
NiwgNjIsIDYzLCA2NCB9OworICAgIGZvciAoYXV0byBsc2IgOiBpbW1zKSB7CisgICAgICAgIGZv
ciAoYXV0byB3aWR0aCA6IGltbXMpIHsKKyAgICAgICAgICAgIGlmIChsc2IgPj0gMCAmJiB3aWR0
aCA+IDAgJiYgbHNiICsgd2lkdGggPCAzMikgeworICAgICAgICAgICAgICAgIGF1dG8gYmZjNjQg
PSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuY2xl
YXJCaXRGaWVsZDY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKHdpZHRoKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
aml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgIHVpbnQ2NF90IG1hc2sgPSAoKDFVTEwgPDwgd2lkdGgpIC0gMVVM
TCkgPDwgbHNiOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJocyA9IGludm9rZTx1aW50NjRf
dD4oYmZjNjQsIHNyYyk7CisgICAgICAgICAgICAgICAgdWludDY0X3QgbGhzID0gc3JjICYgfm1h
c2s7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEocmhzLCBsaHMpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RDbGVhckJpdHNXaXRoTWFzazMyKCkKK3sK
KyAgICBhdXRvIHRlc3QgPSBjb21waWxlKFtdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAg
ICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgIGppdC5jbGVhckJpdHNXaXRo
TWFzazMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIG1hc2sgOiBp
bnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgdWludDMyX3Qgc3JjID0gc3RkOjpudW1lcmljX2xp
bWl0czx1aW50MzJfdD46Om1heCgpOworICAgICAgICBDSEVDS19FUShpbnZva2U8dWludDMyX3Q+
KHRlc3QsIHNyYywgbWFzayksIChzcmMgJiB+bWFzaykpOworICAgICAgICBDSEVDS19FUShpbnZv
a2U8dWludDMyX3Q+KHRlc3QsIDBVLCBtYXNrKSwgMFUpOworICAgIH0KK30KKwordm9pZCB0ZXN0
Q2xlYXJCaXRzV2l0aE1hc2s2NCgpCit7CisgICAgYXV0byB0ZXN0ID0gY29tcGlsZShbXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKwor
ICAgICAgICBqaXQuY2xlYXJCaXRzV2l0aE1hc2s2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAg
IGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9KTsK
KworICAgIGZvciAoYXV0byBtYXNrIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIHVpbnQ2
NF90IHNyYyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPHVpbnQ2NF90Pih0ZXN0LCBzcmMsIG1hc2spLCAoc3JjICYgfm1hc2sp
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQ2NF90Pih0ZXN0LCAwVUxMLCBtYXNrKSwg
MFVMTCk7CisgICAgfQorfQorCit2b2lkIHRlc3RPck5vdDMyKCkKK3sKKyAgICBhdXRvIHRlc3Qg
PSBjb21waWxlKFtdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Q
cm9sb2d1ZShqaXQpOworCisgICAgICAgIGppdC5vck5vdDMyKEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAg
ICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAg
IH0pOworCisgICAgZm9yIChhdXRvIG1hc2sgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAg
aW50MzJfdCBzcmMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7CisgICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90Pih0ZXN0LCBzcmMsIG1hc2spLCAoc3JjIHwgfm1h
c2spKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KHRlc3QsIDBVLCBtYXNrKSwg
fm1hc2spOworICAgIH0KK30KKwordm9pZCB0ZXN0T3JOb3Q2NCgpCit7CisgICAgYXV0byB0ZXN0
ID0gY29tcGlsZShbXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKKworICAgICAgICBqaXQub3JOb3Q2NChHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisg
ICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAg
ICB9KTsKKworICAgIGZvciAoYXV0byBtYXNrIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAg
IGludDY0X3Qgc3JjID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4odGVzdCwgc3JjLCBtYXNrKSwgKHNyYyB8IH5t
YXNrKSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90Pih0ZXN0LCAwVUxMLCBtYXNr
KSwgfm1hc2spOworICAgIH0KK30KICNlbmRpZgogCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82
NCkgfHwgQ1BVKEFSTTY0KQpAQCAtMzQyNSw5ICszNTQ3LDggQEAgdm9pZCBydW4oY29uc3QgY2hh
ciogZmlsdGVyKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAjaWYgQ1BVKEFS
TTY0KQogICAgIFJVTih0ZXN0TG9hZFN0b3JlUGFpcjY0SW50NjQoKSk7CiAgICAgUlVOKHRlc3RM
b2FkU3RvcmVQYWlyNjREb3VibGUoKSk7Ci0gICAgUlVOKHRlc3RNdWwzMlNpZ25FeHRlbmQoKSk7
Ci0gICAgUlVOKHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMkxlZnQoKSk7Ci0gICAgUlVOKHRl
c3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMlJpZ2h0KCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlT
aWduRXh0ZW5kMzIoKSk7CisKICAgICBSVU4odGVzdFN1YjMyQXJncygpKTsKICAgICBSVU4odGVz
dFN1YjMySW1tKCkpOwogICAgIFJVTih0ZXN0U3ViMzJBcmdJbW0oKSk7CkBAIC0zNDM1LDEzICsz
NTU2LDI0IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFE
X1NBRkVUWV9BTkFMWVNJUwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW0zMigpKTsKICAgICBSVU4o
dGVzdFN1YjY0SW1tNjQoKSk7CiAgICAgUlVOKHRlc3RTdWI2NEFyZ0ltbTY0KCkpOwotICAgIFJV
Tih0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyKCkpOwotICAgIFJVTih0ZXN0VWJmeDMyKCkpOwotICAg
IFJVTih0ZXN0VWJmeDY0KCkpOwotICAgIFJVTih0ZXN0VWJmaXozMigpKTsKLSAgICBSVU4odGVz
dFViZml6NjQoKSk7Ci0gICAgUlVOKHRlc3RCaXRGaWVsZEluc2VydDMyKCkpOwotICAgIFJVTih0
ZXN0Qml0RmllbGRJbnNlcnQ2NCgpKTsKKworICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0
ZW5kMzJMZWZ0KCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJSaWdodCgp
KTsKKyAgICBSVU4odGVzdE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyKCkpOworCisgICAgUlVOKHRl
c3RFeHRyYWN0VW5zaWduZWRCaXRmaWVsZDMyKCkpOworICAgIFJVTih0ZXN0RXh0cmFjdFVuc2ln
bmVkQml0ZmllbGQ2NCgpKTsKKyAgICBSVU4odGVzdEluc2VydFVuc2lnbmVkQml0ZmllbGRJblpl
cm8zMigpKTsKKyAgICBSVU4odGVzdEluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm82NCgpKTsK
KyAgICBSVU4odGVzdEluc2VydEJpdEZpZWxkMzIoKSk7CisgICAgUlVOKHRlc3RJbnNlcnRCaXRG
aWVsZDY0KCkpOworICAgIFJVTih0ZXN0Q2xlYXJCaXRGaWVsZDMyKCkpOworICAgIFJVTih0ZXN0
Q2xlYXJCaXRGaWVsZDY0KCkpOworICAgIFJVTih0ZXN0Q2xlYXJCaXRzV2l0aE1hc2szMigpKTsK
KyAgICBSVU4odGVzdENsZWFyQml0c1dpdGhNYXNrNjQoKSk7CisKKyAgICBSVU4odGVzdE9yTm90
MzIoKSk7CisgICAgUlVOKHRlc3RPck5vdDY0KCkpOwogI2VuZGlmCiAKICNpZiBDUFUoWDg2KSB8
fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCmluZGV4IDg0MDQwZmVmNGE5NmE3NTkxMzdiYzY2ZWRlNDUxOGY3OTIzMWFh
YmQuLjY4NjJkMDYxYzI1NDI4OTMxNzMzNDZiNWVlNDVkNGM5YWZiNTc3OTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNzY0LDcgKzI3NjQsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgLy8gVUJGWCBQYXR0ZXJuOiBkZXN0ID0gKHNyYyA+PiBsc2Ip
ICYgbWFzayAKICAgICAgICAgICAgIC8vIFdoZXJlOiBtYXNrID0gKDEgPDwgd2lkdGgpIC0gMQog
ICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRVQkZYID0gWyZdICgpIC0+IGJvb2wgewotICAgICAg
ICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoVWJmeDMyLCBVYmZ4
NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2Rl
ID0gb3Bjb2RlRm9yVHlwZShFeHRyYWN0VW5zaWduZWRCaXRmaWVsZDMyLCBFeHRyYWN0VW5zaWdu
ZWRCaXRmaWVsZDY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIGlmICghaXNW
YWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6SW1tLCBBcmc6OlRtcCkp
IAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYg
KGxlZnQtPm9wY29kZSgpICE9IFpTaHIgfHwgIWNhbkJlSW50ZXJuYWwobGVmdCkpCkBAIC0yNzgw
LDcgKzI3ODAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmICghbWFzayB8fCBtYXNr
ICYgKG1hc2sgKyAxKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgICAgIHVpbnQ2NF90IHdpZHRoID0gV1RGOjpiaXRDb3VudChtYXNrKTsKLSAgICAgICAg
ICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29kZSA9PSBVYmZ4MzIgPyAzMiA6IDY0Owor
ICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGFzaXplID0gb3Bjb2RlID09IEV4dHJhY3RVbnNp
Z25lZEJpdGZpZWxkMzIgPyAzMiA6IDY0OwogICAgICAgICAgICAgICAgIGlmIChsc2IgKyB3aWR0
aCA+IGRhdGFzaXplKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI3
OTIsNiArMjc5MiwyOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKHRyeUFwcGVuZFVCRlgo
KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgICAgIC8vIEJJQyBQYXR0ZXJu
OiBkID0gbiAmIChtIF4gLTEpCisgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZEJJQyA9IFsmXSAo
VmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgQWly
OjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShDbGVhckJpdHNXaXRoTWFzazMyLCBDbGVh
ckJpdHNXaXRoTWFzazY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGlmICgh
aXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAocmlnaHQt
Pm9wY29kZSgpICE9IEJpdFhvciB8fCAhY2FuQmVJbnRlcm5hbChyaWdodCkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIFZhbHVlKiBuVmFsdWUg
PSBsZWZ0OworICAgICAgICAgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByaWdodC0+Y2hpbGQoMCk7
CisgICAgICAgICAgICAgICAgVmFsdWUqIG1pbnVzT25lID0gcmlnaHQtPmNoaWxkKDEpOworICAg
ICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhuVmFsdWUpIHx8IG1fbG9ja2VkLmNv
bnRhaW5zKG1WYWx1ZSkgfHwgIW1pbnVzT25lLT5oYXNJbnQoKSB8fCAhbWludXNPbmUtPmlzSW50
KC0xKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAg
ICAgYXBwZW5kKG9wY29kZSwgdG1wKG5WYWx1ZSksIHRtcChtVmFsdWUpLCB0bXAobV92YWx1ZSkp
OworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKHJpZ2h0KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmICh0cnlBcHBl
bmRCSUMobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZEJJQyhyaWdodCwgbGVmdCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICBhcHBlbmRCaW5PcDxBbmQzMiwgQW5kNjQs
IEFuZERvdWJsZSwgQW5kRmxvYXQsIENvbW11dGF0aXZlPihsZWZ0LCByaWdodCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI4MDQsNyArMjgyNiw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAvLyBXaGVyZTogbWFzazEgPSAoKDEgPDwgd2lkdGgpIC0gMSkKICAgICAgICAg
ICAgIC8vICAgICAgICBtYXNrMiA9IH4obWFzazEgPDwgbHNiKQogICAgICAgICAgICAgYXV0byB0
cnlBcHBlbmRCRkkgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgewot
ICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoQml0Rmll
bGRJbnNlcnQzMiwgQml0RmllbGRJbnNlcnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAg
ICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKEluc2VydEJpdEZpZWxk
MzIsIEluc2VydEJpdEZpZWxkNjQsIG1fdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAg
aWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpJbW0sIEFy
Zzo6VG1wKSkgCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
ICAgICBpZiAobGVmdC0+b3Bjb2RlKCkgIT0gU2hsIHx8ICFjYW5CZUludGVybmFsKGxlZnQpKQpA
QCAtMjgyOCw3ICsyODUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB1aW50NjRfdCBt
YXNrMSA9IG1hc2tWYWx1ZTEtPmFzSW50KCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtYXNrMSB8
fCBtYXNrMSAmIChtYXNrMSArIDEpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YXNpemUgPSBvcGNvZGUgPT0gQml0RmllbGRJ
bnNlcnQzMiA/IDMyIDogNjQ7CisgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YXNpemUgPSBv
cGNvZGUgPT0gSW5zZXJ0Qml0RmllbGQzMiA/IDMyIDogNjQ7CiAgICAgICAgICAgICAgICAgdWlu
dDY0X3Qgd2lkdGggPSBXVEY6OmJpdENvdW50KG1hc2sxKTsKICAgICAgICAgICAgICAgICBpZiAo
bHNiICsgd2lkdGggPiBkYXRhc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjg1Nyw2ICsyODc5LDI4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAodHJ5QXBw
ZW5kQkZJKGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRCRkkocmlnaHQsIGxlZnQpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAorICAgICAgICAgICAgLy8gT1JOIFBhdHRlcm46IGQgPSBuIHwg
KG0gXiAtMSkKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kT1JOID0gWyZdIChWYWx1ZSogbGVm
dCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBv
cGNvZGUgPSBvcGNvZGVGb3JUeXBlKE9yTm90MzIsIE9yTm90NjQsIG1fdmFsdWUtPnR5cGUoKSk7
CisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6
OlRtcCwgQXJnOjpUbXApKSAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIGlmIChyaWdodC0+b3Bjb2RlKCkgIT0gQml0WG9yIHx8ICFjYW5CZUludGVy
bmFsKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
ICAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IGxlZnQ7CisgICAgICAgICAgICAgICAgVmFsdWUqIG1W
YWx1ZSA9IHJpZ2h0LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbWludXNPbmUg
PSByaWdodC0+Y2hpbGQoMSk7CisgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5z
KG5WYWx1ZSkgfHwgbV9sb2NrZWQuY29udGFpbnMobVZhbHVlKSB8fCAhbWludXNPbmUtPmhhc0lu
dCgpIHx8ICFtaW51c09uZS0+aXNJbnQoLTEpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoblZhbHVlKSwgdG1w
KG1WYWx1ZSksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwo
cmlnaHQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfTsKKwor
ICAgICAgICAgICAgaWYgKHRyeUFwcGVuZE9STihsZWZ0LCByaWdodCkgfHwgdHJ5QXBwZW5kT1JO
KHJpZ2h0LCBsZWZ0KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgIGFw
cGVuZEJpbk9wPE9yMzIsIE9yNjQsIE9yRG91YmxlLCBPckZsb2F0LCBDb21tdXRhdGl2ZT4obGVm
dCwgcmlnaHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yODk5LDcgKzI5
NDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gVUJGSVogUGF0dGVybjogZCA9IChuICYg
bWFzaykgPDwgbHNiIAogICAgICAgICAgICAgLy8gV2hlcmU6IG1hc2sgPSAoMSA8PCB3aWR0aCkg
LSAxCiAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZFVCRlogPSBbJl0gKCkgLT4gYm9vbCB7Ci0g
ICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShVYmZpejMy
LCBVYmZpejY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2Rl
IG9wY29kZSA9IG9wY29kZUZvclR5cGUoSW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyLCBJ
bnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvNjQsIG1fdmFsdWUtPnR5cGUoKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJn
OjpJbW0sIEFyZzo6VG1wKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgICAgIGlmIChsZWZ0LT5vcGNvZGUoKSAhPSBCaXRBbmQgfHwgIWNhbkJlSW50ZXJu
YWwobGVmdCkpCkBAIC0yOTE1LDcgKzI5NTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGlmICghbWFzayB8fCBtYXNrICYgKG1hc2sgKyAxKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIHVpbnQ2NF90IHdpZHRoID0gV1RGOjpiaXRDb3Vu
dChtYXNrKTsKLSAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29kZSA9PSBV
YmZpejMyID8gMzIgOiA2NDsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9w
Y29kZSA9PSBJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvMzIgPyAzMiA6IDY0OwogICAgICAg
ICAgICAgICAgIGlmIChsc2IgKyB3aWR0aCA+IGRhdGFzaXplKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0
cmVuZ3RoLmNwcAppbmRleCAzZGRhZGU3NzA4ZWI0YzdiNDJjNTdiYmEwNjI5YzZlOWZkZjY1OGZk
Li5hNmI3MDM4MWYzNGE5NTViZDk0YTBmZjgzM2EzMTQ1Y2JlOTU4ZGU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC02MjcsNiArNjI3LDE4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5p
c0ludGVnZXIoKSkgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU3ViKE5lZyh2YWx1
ZSksIDEpCisgICAgICAgICAgICAgICAgLy8gSW50byB0aGlzOiBCaXRYb3IodmFsdWUsIC0xKQor
ICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gTmVnICYm
IG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludCgxKSkgeworICAgICAgICAgICAgICAgICAgICBWYWx1
ZSogbWludXNPbmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+
Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQzMikKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbnVz
T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0MzJWYWx1ZT4obV9pbmRleCwgbV92YWx1
ZS0+b3JpZ2luKCksIC0xKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgbWludXNPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3Q2NFZhbHVl
PihtX2luZGV4LCBtX3ZhbHVlLT5vcmlnaW4oKSwgLTEpOworICAgICAgICAgICAgICAgICAgICBy
ZXBsYWNlV2l0aE5ldzxWYWx1ZT4oQml0WG9yLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+
Y2hpbGQoMCktPmNoaWxkKDApLCBtaW51c09uZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU3Vi
KHZhbHVlLCBjb25zdGFudCkKICAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEFkZCh2YWx1
ZSwgLWNvbnN0YW50KQogICAgICAgICAgICAgICAgIGlmIChWYWx1ZSogbmVnYXRlZENvbnN0YW50
ID0gbV92YWx1ZS0+Y2hpbGQoMSktPm5lZ0NvbnN0YW50KG1fcHJvYykpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IGE2YTE1ODg2NzNh
NDI1MWIzMTRmNDBiNjcxZThkYzM0ZWEyZDU0NjEuLmFlMWE0YWNiMDJjNTBkMDUzOTJkYTM4M2Zm
MmU4NWI1Y2IzMDk1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyT3Bjb2RlLm9wY29kZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJP
cGNvZGUub3Bjb2RlcwpAQCAtMzYzLDI0ICszNjMsNiBAQCBBbmQzMiBVOkc6MzIsIFVaRDpHOjMy
CiAgICAgeDg2OiBJbW0sIEFkZHIKICAgICB4ODY6IEltbSwgSW5kZXgKIAotYXJtNjQ6IFViZngz
MiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCi0gICAgVG1wLCBJbW0sIEltbSwgVG1w
Ci0KLWFybTY0OiBVYmZ4NjQgVTpHOjY0LCBVOkc6MzIsIFU6RzozMiwgRDpHOjY0Ci0gICAgVG1w
LCBJbW0sIEltbSwgVG1wCi0KLWFybTY0OiBVYmZpejMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIs
IFpEOkc6MzIKLSAgICBUbXAsIEltbSwgSW1tLCBUbXAKLQotYXJtNjQ6IFViZml6NjQgVTpHOjY0
LCBVOkc6MzIsIFU6RzozMiwgRDpHOjY0Ci0gICAgVG1wLCBJbW0sIEltbSwgVG1wCi0KLWFybTY0
OiBCaXRGaWVsZEluc2VydDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKLSAgICBU
bXAsIEltbSwgSW1tLCBUbXAKLQotYXJtNjQ6IEJpdEZpZWxkSW5zZXJ0NjQgVTpHOjY0LCBVOkc6
MzIsIFU6RzozMiwgRDpHOjY0Ci0gICAgVG1wLCBJbW0sIEltbSwgVG1wCi0KIDY0OiBBbmQ2NCBV
Okc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcAogICAgIGFybTY0OiBCaXRJ
bW02NCwgVG1wLCBUbXAKQEAgLTgzMCw2ICs4MTIsNDIgQEAgeDg2XzY0OiBYY2hnNjQgVUQ6Rzo2
NCwgVUQ6Rzo2NCAvZWZmZWN0cwogICAgIFRtcCwgQWRkcgogICAgIFRtcCwgSW5kZXgKIAorYXJt
NjQ6IEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6
RzozMgorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCithcm02NDogRXh0cmFjdFVuc2lnbmVkQml0
ZmllbGQ2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKKyAgICBUbXAsIEltbSwgSW1t
LCBUbXAKKworYXJtNjQ6IEluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm8zMiBVOkc6MzIsIFU6
RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBJbW0sIEltbSwgVG1wCisKK2FybTY0OiBJ
bnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvNjQgVTpHOjY0LCBVOkc6MzIsIFU6RzozMiwgRDpH
OjY0CisgICAgVG1wLCBJbW0sIEltbSwgVG1wCisKK2FybTY0OiBJbnNlcnRCaXRGaWVsZDMyIFU6
RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIEltbSwgSW1tLCBUbXAKKwor
YXJtNjQ6IEluc2VydEJpdEZpZWxkNjQgVTpHOjY0LCBVOkc6MzIsIFU6RzozMiwgRDpHOjY0Cisg
ICAgVG1wLCBJbW0sIEltbSwgVG1wCisKK2FybTY0OiBDbGVhckJpdEZpZWxkMzIgVTpHOjMyLCBV
Okc6MzIsIFpEOkc6MzIKKyAgICBJbW0sIEltbSwgVG1wCisKK2FybTY0OiBDbGVhckJpdEZpZWxk
NjQgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAorICAgIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IENs
ZWFyQml0c1dpdGhNYXNrMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwg
VG1wCisKK2FybTY0OiBDbGVhckJpdHNXaXRoTWFzazY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQK
KyAgICBUbXAsIFRtcCwgVG1wCisKK2FybTY0OiBPck5vdDMyIFU6RzozMiwgVTpHOjMyLCBaRDpH
OjMyCisgICAgVG1wLCBUbXAsIFRtcAorCithcm02NDogT3JOb3Q2NCBVOkc6NjQsIFU6Rzo2NCwg
RDpHOjY0CisgICAgVG1wLCBUbXAsIFRtcAorCiAjIFRoZSBmaXJzdCBvcGVyYW5kIGlzIHJheC4K
ICMgRklYTUU6IFRoaXMgZm9ybXVsYXRpb24gbWVhbnMgdGhhdCB0aGUgYm9vbGVhbiByZXN1bHQg
Y2Fubm90IGJlIHB1dCBpbiBlYXgsIGV2ZW4gdGhvdWdoIGFsbCB1c2VycwogIyBvZiB0aGlzIHdv
dWxkIGJlIE9LIHdpdGggdGhhdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAppbmRleCA0NGMw
YTUwYmExMTI5MGNlNjFlNDhkNjgzYTQxY2VkMWJiYjVjMjU2Li5jZWIzNWFlY2M1Mjg5NmZjOTA4
ZGEwYzBiMjBhYzM5NzA5MjlhYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC00
MjgsOCArNDI4LDEyIEBAIHZvaWQgdGVzdFViZml6NjRBbmRTaGlmdFZhbHVlTWFzaygpOwogdm9p
ZCB0ZXN0VWJmaXo2NEFuZFNoaWZ0TWFza1ZhbHVlKCk7CiB2b2lkIHRlc3RVYmZpejY0U2hpZnRB
bmQoKTsKIHZvaWQgdGVzdFViZml6NjRBbmRTaGlmdCgpOwotdm9pZCB0ZXN0Qml0RmllbGRJbnNl
cnQzMigpOwotdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQ2NCgpOwordm9pZCB0ZXN0SW5zZXJ0Qml0
RmllbGQzMigpOwordm9pZCB0ZXN0SW5zZXJ0Qml0RmllbGQ2NCgpOwordm9pZCB0ZXN0QklDMzIo
KTsKK3ZvaWQgdGVzdEJJQzY0KCk7Cit2b2lkIHRlc3RPck5vdDMyKCk7Cit2b2lkIHRlc3RPck5v
dDY0KCk7CiB2b2lkIHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2szMigpOwogdm9p
ZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrNjQoKTsKIHZvaWQgdGVzdEJhc2lj
U2VsZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAppbmRleCA5NGE3ZTM0
Y2M3ZDgwOWRjOTJkMGRjZDQ3Mjk0ZWZiYjAzMTdmY2VkLi4wYTQwMzZkYzJiZDc3ZDYzNDJhNDFm
YTg4NGFjZmFlYjZlNjQ3YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzXzIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAK
QEAgLTMxNTgsNyArMzE1OCw3IEBAIHZvaWQgdGVzdFViZml6NjRBbmRTaGlmdCgpCiAgICAgfQog
fQogCi12b2lkIHRlc3RCaXRGaWVsZEluc2VydDMyKCkKK3ZvaWQgdGVzdEluc2VydEJpdEZpZWxk
MzIoKQogewogICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQog
ICAgICAgICByZXR1cm47CkBAIC0zMjM2LDcgKzMyMzYsNyBAQCB2b2lkIHRlc3RCaXRGaWVsZElu
c2VydDMyKCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0NjQoKQordm9pZCB0
ZXN0SW5zZXJ0Qml0RmllbGQ2NCgpCiB7CiAgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIz
T3B0TGV2ZWwoKSA8IDIpCiAgICAgICAgIHJldHVybjsKQEAgLTMzMDYsNiArMzMwNiwyMzkgQEAg
dm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQ2NCgpCiAgICAgfQogfQogCit2b2lkIHRlc3RCSUMzMigp
Cit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gJiAoLW0gLSAxKQorICAg
IGF1dG8gdGVzdDEgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBtKSAtPiBpbnQzMl90IHsKKyAg
ICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGNvbnN0MSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKworICAgICAgICBWYWx1ZSogbmVn
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG1WYWx1
ZSk7CisgICAgICAgIFZhbHVlKiBzdWJWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU3ViLCBPcmlnaW4oKSwgbmVnVmFsdWUsIGNvbnN0MSk7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigp
LCBuVmFsdWUsIHN1YlZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgImJpYyIpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+KCpj
b2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAmIChtIF4g
LTEpCisgICAgYXV0byB0ZXN0MiA9IFsmXSAoaW50MzJfdCBuLCBpbnQzMl90IG0pIC0+IGludDMy
X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogbWludXNPbmVWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7CisKKyAg
ICAgICAgVmFsdWUqIHhvclZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRY
b3IsIE9yaWdpbigpLCBtVmFsdWUsIG1pbnVzT25lVmFsdWUpOworICAgICAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4o
KSwgblZhbHVlLCB4b3JWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9j
KHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tVc2VzSW5z
dHJ1Y3Rpb24oKmNvZGUsICJiaWMiKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQzMl90Pigq
Y29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICBDSEVDSyh0ZXN0MShuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSAmICgtbS52YWx1ZSAt
IDEpKSk7CisgICAgICAgICAgICBDSEVDSyh0ZXN0MihuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52
YWx1ZSAmIChtLnZhbHVlIF4gLTEpKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVz
dEJJQzY0KCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwg
MikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAmICgtbSAt
IDEpCisgICAgYXV0byB0ZXN0MSA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0pIC0+IGludDY0
X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBW
YWx1ZSogY29uc3QxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDEpOworCisgICAgICAgIFZhbHVlKiBuZWdWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgbVZhbHVlKTsKKyAgICAgICAgVmFsdWUqIHN1YlZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuZWdWYWx1ZSwg
Y29uc3QxKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIG5WYWx1ZSwgc3ViVmFsdWUpKTsKKworICAg
ICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQo
KSkKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAiYmljIik7CisgICAg
ICAgIHJldHVybiBpbnZva2U8aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICAv
LyBUZXN0IFBhdHRlcm46IGQgPSBuICYgKG0gXiAtMSkKKyAgICBhdXRvIHRlc3QyID0gWyZdIChp
bnQ2NF90IG4sIGludDY0X3QgbSkgLT4gaW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9j
OworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAg
IFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBtaW51c09uZVZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKTsKKworICAgICAgICBW
YWx1ZSogeG9yVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3Jp
Z2luKCksIG1WYWx1ZSwgbWludXNPbmVWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBuVmFs
dWUsIHhvclZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7
CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bigqY29kZSwgImJpYyIpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBu
LCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAg
ICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIENIRUNL
KHRlc3QxKG4udmFsdWUsIG0udmFsdWUpID09IChuLnZhbHVlICYgKC1tLnZhbHVlIC0gMUxMKSkp
OworICAgICAgICAgICAgQ0hFQ0sodGVzdDIobi52YWx1ZSwgbS52YWx1ZSkgPT0gKG4udmFsdWUg
JiAobS52YWx1ZSBeIC0xTEwpKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE9y
Tm90MzIoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAy
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIHwgKC1tIC0g
MSkKKyAgICBhdXRvIHRlc3QxID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSkgLT4gaW50MzJf
dCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBjb25zdDEgPSByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisKKyAgICAgICAgVmFs
dWUqIG5lZ1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigp
LCBtVmFsdWUpOworICAgICAgICBWYWx1ZSogc3ViVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5lZ1ZhbHVlLCBjb25zdDEpOworICAgICAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9y
aWdpbigpLCBuVmFsdWUsIHN1YlZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGls
ZVByb2MocHJvYyk7CisKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKCpjb2RlLCAib3JuIik7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50
MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBu
IHwgKG0gXiAtMSkKKyAgICBhdXRvIHRlc3QyID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSkg
LT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBtaW51c09u
ZVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0x
KTsKKworICAgICAgICBWYWx1ZSogeG9yVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdFhvciwgT3JpZ2luKCksIG1WYWx1ZSwgbWludXNPbmVWYWx1ZSk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRPciwg
T3JpZ2luKCksIG5WYWx1ZSwgeG9yVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKCpjb2RlLCAib3JuIik7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50
MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3Bl
cmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICAgICAgQ0hFQ0sodGVzdDEobi52YWx1ZSwgbS52YWx1ZSkgPT0gKG4udmFsdWUgfCAoLW0u
dmFsdWUgLSAxKSkpOworICAgICAgICAgICAgQ0hFQ0sodGVzdDIobi52YWx1ZSwgbS52YWx1ZSkg
PT0gKG4udmFsdWUgfCAobS52YWx1ZSBeIC0xKSkpOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIHRlc3RPck5vdDY0KCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRM
ZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0g
biB8ICgtbSAtIDEpCisgICAgYXV0byB0ZXN0MSA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0p
IC0+IGludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwor
ICAgICAgICBWYWx1ZSogY29uc3QxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDEpOworCisgICAgICAgIFZhbHVlKiBuZWdWYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgbVZhbHVlKTsKKyAgICAgICAgVmFsdWUq
IHN1YlZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBu
ZWdWYWx1ZSwgY29uc3QxKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgblZhbHVlLCBzdWJWYWx1ZSkp
OworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAo
aXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJvcm4i
KTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsK
KworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gfCAobSBeIC0xKQorICAgIGF1dG8gdGVzdDIg
PSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBtKSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisK
KyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUq
IG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIG1pbnVzT25lVmFsdWUg
PSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpOworCisg
ICAgICAgIFZhbHVlKiB4b3JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
WG9yLCBPcmlnaW4oKSwgbVZhbHVlLCBtaW51c09uZVZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4o
KSwgblZhbHVlLCB4b3JWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9j
KHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tVc2VzSW5z
dHJ1Y3Rpb24oKmNvZGUsICJvcm4iKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90Pigq
Y29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICBDSEVDSyh0ZXN0MShuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSB8ICgtbS52YWx1ZSAt
IDFMTCkpKTsKKyAgICAgICAgICAgIENIRUNLKHRlc3QyKG4udmFsdWUsIG0udmFsdWUpID09IChu
LnZhbHVlIHwgKG0udmFsdWUgXiAtMUxMKSkpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lk
IHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2szMigpCiB7CiAgICAgLy8gVHVybiB0
aGlzOiAodG1wID4+IGltbSkgJiBtYXNrIApAQCAtNDE5OCw4ICs0NDMxLDEyIEBAIHZvaWQgYWRk
Qml0VGVzdHMoY29uc3QgY2hhciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lk
KCk+Pj4mIHRhc2tzKQogICAgIFJVTih0ZXN0VWJmaXo2NEFuZFNoaWZ0TWFza1ZhbHVlKCkpOwog
ICAgIFJVTih0ZXN0VWJmaXo2NFNoaWZ0QW5kKCkpOwogICAgIFJVTih0ZXN0VWJmaXo2NEFuZFNo
aWZ0KCkpOwotICAgIFJVTih0ZXN0Qml0RmllbGRJbnNlcnQzMigpKTsKLSAgICBSVU4odGVzdEJp
dEZpZWxkSW5zZXJ0NjQoKSk7CisgICAgUlVOKHRlc3RJbnNlcnRCaXRGaWVsZDMyKCkpOworICAg
IFJVTih0ZXN0SW5zZXJ0Qml0RmllbGQ2NCgpKTsKKyAgICBSVU4odGVzdEJJQzMyKCkpOworICAg
IFJVTih0ZXN0QklDNjQoKSk7CisgICAgUlVOKHRlc3RPck5vdDMyKCkpOworICAgIFJVTih0ZXN0
T3JOb3Q2NCgpKTsKICAgICBSVU4odGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazMy
KCkpOwogICAgIFJVTih0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrNjQoKSk7CiAg
ICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQzLCA0MykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDI3YjYzMWQ0Y2M3M2FkNWJhMDFjZGM5Mjhi
Nzc4YTQzOWJjMGVkZjIuLjNkMDg3MjgwODI3ZDJhZWY3YzMyZWVkMmFmZDE4NjJmNGMzOWFkYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAg
LTE2NzU0LDcgKzE2NzU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1lcmdlLT5hcHBlbmRT
b21lUmVnaXN0ZXIocHRyKTsKICAgICAgICAgICAgIG1lcmdlLT5zZXRHZW5lcmF0b3IoWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKICAgICAgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5n
cHIoKSk7Ci0gICAgICAgICAgICAgICAgaml0LmJpdEZpZWxkSW5zZXJ0NjQocGFyYW1zWzFdLmdw
cigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoNjQgLSBNYWNyb0Fzc2VtYmxlcjo6bWF4TnVtYmVyT2ZBbGxvd2VkUEFDQml0cyksIHBh
cmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgaml0Lmluc2VydEJpdEZpZWxkNjQocGFy
YW1zWzFdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoNjQgLSBNYWNyb0Fzc2VtYmxlcjo6bWF4TnVtYmVyT2ZBbGxvd2VkUEFD
Qml0cyksIHBhcmFtc1swXS5ncHIoKSk7CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAg
cmVzdWx0ID0gZG9VbnRhZ0FycmF5UHRyKG1lcmdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCA0OTgxN2E3YWRkNTQwYjcxNmZlZTI2ZGU0
Mzc2YzYxMDgyN2U1N2UyLi5kMzZlYjcxYjlhZGQzNmQ0NDI2NDk4NGI4N2RlZDIwMjBiNzNhMDY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBA
IC0xMTExLDcgKzExMTEsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y2FnZVdpdGhvdXRVbnRh
Z2dpbmcoR2lnYWNhZ2U6OktpbmQga2luZCwgR1BSUmVnIHN0b3JhZ2UpCiAgICAgYWRkUHRyKFRy
dXN0ZWRJbW1QdHIoR2lnYWNhZ2U6OmJhc2VQdHIoa2luZCkpLCBzdG9yYWdlKTsKICNpZiBDUFUo
QVJNNjRFKQogICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmltaXRpdmUpCi0gICAgICAgIGJp
dEZpZWxkSW5zZXJ0NjQoc3RvcmFnZSwgVHJ1c3RlZEltbTMyKDApLCBUcnVzdGVkSW1tMzIoNjQg
LSBtYXhOdW1iZXJPZkFsbG93ZWRQQUNCaXRzKSwgdGVtcFJlZyk7CisgICAgICAgIGluc2VydEJp
dEZpZWxkNjQoc3RvcmFnZSwgVHJ1c3RlZEltbTMyKDApLCBUcnVzdGVkSW1tMzIoNjQgLSBtYXhO
dW1iZXJPZkFsbG93ZWRQQUNCaXRzKSwgdGVtcFJlZyk7CiAgICAgaWYgKHNraXAuaXNTZXQoKSkK
ICAgICAgICAgc2tpcC5saW5rKHRoaXMpOwogI2VuZGlmCkBAIC0xMTQ4LDcgKzExNDgsNyBAQCB2
b2lkIEFzc2VtYmx5SGVscGVyczo6Y2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6
S2luZCBraW5kLCBHUFJSZWcgc3RvcgogICAgICAgICAgICAgQVNTRVJUKExvZ2ljYWxJbW1lZGlh
dGU6OmNyZWF0ZTY0KEdpZ2FjYWdlOjptYXNrKGtpbmQpKS5pc1ZhbGlkKCkpOwogICAgICAgICAg
ICAgYW5kUHRyKFRydXN0ZWRJbW1QdHIoR2lnYWNhZ2U6Om1hc2soa2luZCkpLCB0ZW1wUmVnKTsK
ICAgICAgICAgICAgIGFkZFB0cihzY3JhdGNoLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgIGJpdEZp
ZWxkSW5zZXJ0NjQodGVtcFJlZywgVHJ1c3RlZEltbTMyKDApLCBUcnVzdGVkSW1tMzIoNjQgLSBt
YXhOdW1iZXJPZkFsbG93ZWRQQUNCaXRzKSwgc3RvcmFnZSk7CisgICAgICAgICAgICBpbnNlcnRC
aXRGaWVsZDY0KHRlbXBSZWcsIFRydXN0ZWRJbW0zMigwKSwgVHJ1c3RlZEltbTMyKDY0IC0gbWF4
TnVtYmVyT2ZBbGxvd2VkUEFDQml0cyksIHN0b3JhZ2UpOwogI2Vsc2UKICAgICAgICAgICAgIGFu
ZFB0cihUcnVzdGVkSW1tUHRyKEdpZ2FjYWdlOjptYXNrKGtpbmQpKSwgc3RvcmFnZSk7CiAgICAg
ICAgICAgICBhZGRQdHIoc2NyYXRjaCwgc3RvcmFnZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432368</attachid>
            <date>2021-06-28 01:23:11 -0700</date>
            <delta_ts>2021-06-28 01:38:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227202-20210628032310.patch</filename>
            <type>text/plain</type>
            <size>66077</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
M2RjMjc2YWQxOWE3YTc3NTE4MWFlMzdkMThhYTkzNWYxMGQ2ZGZkLi40YTI5N2QwYjUxOGE5Yzhi
ZDdhZjg1NTc4OTZjM2VmY2Y5OWY5YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNDggQEAKKzIwMjEtMDYtMjcgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBhIG5ldyBwYXR0ZXJuIHRvIGluc3RydWN0aW9uIHNlbGVjdG9y
IHRvIHVzZSBCSUMgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHRocmVlIG1vZGlmaWNh
dGlvbnM6CisgICAgICAgICAgICAxLiBBZGQgYml0IGNsZWFyIChCSUMpLCBvciBub3QgKE9STiks
IGFuZCBleHRyYWN0IGFuZCBpbnNlcnQgYml0ZmllbGQgYXQgbG93ZXIgZW5kIChGQlhJTCkgCisg
ICAgICAgICAgICAgICB0byBBaXIgb3Bjb2RlIHRvIHNlcnZlIGludHJ1Y2l0b24gc2VsZWN0b3Iu
CisgICAgICAgICAgICAyLiBBZGQgYml0ZmllbGQgY2xlYXIgKEJGQykgdG8gQWlyIG9wY29kZS4g
CisgICAgICAgICAgICA0LiBEbyByZWZhY3RvcmluZyAtIHJlbmFtZSBBaXIgb3Bjb2RlcyBhZGRl
ZCBpbiB0aGUgcHJldmlvdXMgcGF0Y2hlcy4KKworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0K
KyAgICAgICAgIyMjIFBhcnQgQSBCSUMgIyMjCisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLQor
ICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIGJpYyBSZCwgUm4sIFJtCisK
KyAgICAgICAgVGhlIEJJQyAoQml0IENsZWFyKSBpbnN0cnVjdGlvbiBwZXJmb3JtcyBhbiBBTkQg
b3BlcmF0aW9uIG9uIHRoZSBiaXRzIGluIFJuIHdpdGggdGhlIAorICAgICAgICBjb21wbGVtZW50
cyBvZiB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSB2YWx1ZSBvZiBSbS4gVGhlIGluc3Ry
dWN0aW9uIHNlbGVjdG9yIGNhbiAKKyAgICAgICAgdXRpbGl6ZSB0aGlzIHRvIGxvd2VyaW5nIGNl
cnRhaW4gcGF0dGVybnMgaW4gQjMgSVIgYmVmb3JlIGZ1cnRoZXIgQWlyIG9wdGltaXphdGlvbi4g
CisgICAgICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm5zIG9mIHRoaXMgaW5zdHJ1Y3Rpb24gYXJl
OgorCisgICAgICAgIFBhdHRlcm4gMToKKyAgICAgICAgICAgIGQgPSBuICYgKC1tIC0gMSkKKwor
ICAgICAgICBQYXR0ZXJuIDI6CisgICAgICAgICAgICBkID0gbiAmIChtIF4gLTEpCisKKyAgICAg
ICAgSW4gb3JkZXIgdG8gZ2V0IGJlbmVmaXRzIGZvciBjb21wbGVtZW50IG9wZXJhdGlvbiwgY3Vy
cmVudCBpbnN0cnVjdGlvbiBzZWxlY3RvciB1c2VzIAorICAgICAgICBtdm4gaW5zdHJ1Y3Rpb24g
dG8gbG93ZXIgdGhlIHBhdHRlcm4gdmFsdWUgXiAtMS4gVGhlbiwgYSBuZXcgc3RyZW5ndGggcmVk
dWN0aW9uIHJ1bGUgaXMgCisgICAgICAgIGludHJvZHVjZWQ6CisgICAgICAgICAgICBUdXJuIHRo
aXM6IC12YWx1ZSAtIDEgCisgICAgICAgICAgICBJbnRvIHRoaXM6IHZhbHVlIF4gLTEKKworICAg
ICAgICBTbywgZCA9IG4gJiAobSBeIC0xKSBpcyBzZWxlY3RlZCBhcyB0aGUgY2Fub25pY2FsIGZv
cm0uCisKKyAgICAgICAgR2l2ZW4gQjMgSVI6CisgICAgICAgIEludCBAMCA9IEFyZ3VtZW50UmVn
KCV4MCkKKyAgICAgICAgSW50IEAxID0gQXJndW1lbnRSZWcoJXgxKQorICAgICAgICBJbnQgQDIg
PSAtMQorICAgICAgICBJbnQgQDMgPSBCaXRYb3IoQDEsIEAyKQorICAgICAgICBJbnQgQDQgPSBC
aXRBbmQoQDAsIEAzKQorICAgICAgICBWb2lkQDUgPSBSZXR1cm4oQDQsIFRlcm1pbmFsKQorCisg
ICAgICAgIEJlZm9yZSBBZGRpbmcgQklDOgorICAgICAgICAvLyBPbGQgb3B0aW1pemVkIEFJUgor
ICAgICAgICBOb3QgJXgxLCAleDEsICAgICAgQDMKKyAgICAgICAgQW5kICV4MCwgJXgxLCAleDAs
IEA0CisgICAgICAgIFJldCAleDAsICAgICAgICAgICBANQorCisgICAgICAgIEFmdGVyIEFkZGlu
ZyBCSUM6CisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAgIEJpYyAleDAsICV4
MSwgJXgwLCBANAorICAgICAgICBSZXQgJXgwLCAgICAgICAgICAgQDUKKworICAgICAgICAtLS0t
LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjIFBhcnQgQSBPUk4gIyMjCisgICAgICAgIC0tLS0t
LS0tLS0tLS0tLS0tLQorICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIG9y
biBSZCwgUm4sIFJtCisKKyAgICAgICAgQml0d2lzZSBPUiBOT1QgKHNoaWZ0ZWQgcmVnaXN0ZXIp
IHBlcmZvcm1zIGEgYml0d2lzZSAoaW5jbHVzaXZlKSBPUiBvZiBhIHJlZ2lzdGVyIHZhbHVlIAor
ICAgICAgICBSbiBhbmQgdGhlIGNvbXBsZW1lbnQgb2YgYW4gb3B0aW9uYWxseS1zaGlmdGVkIHJl
Z2lzdGVyIHZhbHVlIFJtLCBhbmQgd3JpdGVzIHRoZSByZXN1bHQgCisgICAgICAgIHRvIHRoZSBk
ZXN0aW5hdGlvbiByZWdpc3RlciBSZC4KKworICAgICAgICBUaGUgZXF1aXZhbGVudCBwYXR0ZXJu
cyBvZiB0aGlzIGluc3RydWN0aW9uIGFyZToKKworICAgICAgICBQYXR0ZXJuIDE6CisgICAgICAg
ICAgICBkID0gbiB8ICgtbSAtIDEpCisKKyAgICAgICAgUGF0dGVybiAyOgorICAgICAgICAgICAg
ZCA9IG4gfCAobSBeIC0xKQorCisgICAgICAgIFRoZW4sIGQgPSBuIHwgKG0gXiAtMSkgaXMgc2Vs
ZWN0ZWQgYXMgdGhlIGNhbm9uaWNhbCBmb3JtLgorCisgICAgICAgIEdpdmVuIEIzIElSOgorICAg
ICAgICBJbnQgQDAgPSBBcmd1bWVudFJlZygleDApCisgICAgICAgIEludCBAMSA9IEFyZ3VtZW50
UmVnKCV4MSkKKyAgICAgICAgSW50IEAyID0gLTEKKyAgICAgICAgSW50IEAzID0gQml0WG9yKEAx
LCBAMikKKyAgICAgICAgSW50IEA0ID0gQml0T3IoQDAsIEAzKQorICAgICAgICBWb2lkQDUgPSBS
ZXR1cm4oQDQsIFRlcm1pbmFsKQorCisgICAgICAgIEJlZm9yZSBBZGRpbmcgQklDOgorICAgICAg
ICAvLyBPbGQgb3B0aW1pemVkIEFJUgorICAgICAgICBOb3QgJXgxLCAleDEsICAgICAgQDMKKyAg
ICAgICAgT3IgICV4MCwgJXgxLCAleDAsIEA0CisgICAgICAgIFJldCAleDAsICAgICAgICAgICBA
NQorCisgICAgICAgIEFmdGVyIEFkZGluZyBCSUM6CisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQg
QUlSCisgICAgICAgIE9ybiAleDAsICV4MSwgJXgwLCBANAorICAgICAgICBSZXQgJXgwLCAgICAg
ICAgICAgQDUKKworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjIyMgUGFy
dCBBIEZCWElMICMjIworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBHaXZl
biB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIGJmeGlsIFJkLCBSbiwgbHNiLCB3aWR0aAorCisg
ICAgICAgIEJpdGZpZWxkIGV4dHJhY3QgYW5kIGluc2VydCBhdCBsb3cgZW5kKEZCWElMKSBjb3Bp
ZXMgYW55IG51bWJlciBvZiBsb3ctb3JkZXIgYml0cyAKKyAgICAgICAgZnJvbSBhIHNvdXJjZSBy
ZWdpc3RlciBpbnRvIHRoZSBzYW1lIG51bWJlciBvZiBhZGphY2VudCBiaXRzIGF0IHRoZSBsb3cg
ZW5kIGluIAorICAgICAgICB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIsIGxlYXZpbmcgb3RoZXIg
Yml0cyB1bmNoYW5nZWQuCisKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybnMgb2YgdGhp
cyBpbnN0cnVjdGlvbiBhcmU6CisKKyAgICAgICAgUGF0dGVybiAxOgorICAgICAgICBtYXNrMSA9
ICgxIDw8IHdpZHRoKSAtIDEKKyAgICAgICAgbWFzazIgPSB+bWFzazEKKyAgICAgICAgKChuID4+
IGxzYikgJiBtYXNrMSkgfCAoZCAmIG1hc2syKQorCisgICAgICAgIFBhdHRlcm4gMjoKKyAgICAg
ICAgbWFzazEgPSAoKDEgPDwgd2lkdGgpIC0gMSkgPDwgbHNiCisgICAgICAgIG1hc2syID0gfiht
YXNrMSA+PiBsc2IpCisgICAgICAgICgobiAmIG1hc2sxKSA+PiBsc2IpIHwgKGQgJiBtYXNrMikK
KworICAgICAgICBUaGVuLCBpbnRyb2R1Y2UgYSBzdHJlbmd0aCByZWR1Y3Rpb24gcnVsZQorICAg
ICAgICBUdXJuIHRoaXM6ICh2ID4+IHNoaWZ0QW1vdW50KSAmIG1hc2sKKyAgICAgICAgSW50byB0
aGlzOiAodiAmIG1hc2tTaGlmdCkgPj4gc2hpZnRBbW91bnQKKworICAgICAgICB3aXRoIGNvbnN0
cmFpbnRzOgorICAgICAgICAxLiBtYXNrID0gKDEgPDwgd2lkdGgpIC0gMQorICAgICAgICAyLiBt
YXNrU2hpZnQgPSBtYXNrIDw8IGxzYgorICAgICAgICAzLiAwIDw9IHNoaWZ0QW1vdW50IDwgZGF0
YXNpemUKKyAgICAgICAgNC4gMCA8IHdpZHRoIDwgZGF0YXNpemUKKyAgICAgICAgNS4gc2hpZnRB
bW91bnQgKyB3aWR0aCA8PSBkYXRhc2l6ZQorCisgICAgICAgIFRoZSBjYW5vbmljYWwgZm9ybSB0
byBtYXRjaCBGQlhJTCBpcyBkID0gKChuICYgbWFzazEpID4+IGxzYikgfCAoZCAmIG1hc2syKS4K
KyAgICAgICAgCisgICAgICAgIEdpdmVuIEIzIElSOgorICAgICAgICBJbnQgQDAgPSBBcmd1bWVu
dFJlZygleDApCisgICAgICAgIEludCBAMSA9IEFyZ3VtZW50UmVnKCV4MSkKKyAgICAgICAgSW50
IEAyID0gbHNiCisgICAgICAgIEludCBAMyA9IG1hc2sxCisgICAgICAgIEludCBANCA9IG1hc2sy
CisgICAgICAgIEludCBANSA9IEJpdEFuZChAMSwgQDMpCisgICAgICAgIEludCBANiA9IEJpdEFu
ZChAMCwgQDQpKQorICAgICAgICBJbnQgQDcgPSBaU2hyKEA1LCBAMikKKyAgICAgICAgSW50IEA4
ID0gQml0T3IoQDcsIEA2KQorICAgICAgICBWb2lkQDkgPSBSZXR1cm4oQDgsIFRlcm1pbmFsKQor
CisgICAgICAgIEJlZm9yZSBBZGRpbmcgQklDOgorICAgICAgICAvLyBPbGQgb3B0aW1pemVkIEFJ
UgorICAgICAgICBBbmQgICAgICAgICAgICAgICAgICAgICAgbWFzazIsICV4MCwgICAleDAsICAg
ICAgQDYKKyAgICAgICAgRXh0cmFjdFVuc2lnbmVkQml0ZmllbGQgICAgJXgxLCBsc2IsIHdpZHRo
LCAleDEsIEA3CisgICAgICAgIE9yICAgICAgICAgICAgICAgICAgICAgICAgICV4MCwgJXgxLCAg
ICV4MCwgICAgICBAOAorICAgICAgICBSZXQgICAgICAgICAgICAgICAgICAgICAgICAleDAsICAg
ICAgICAgICAgICAgICAgQDkKKworICAgICAgICBBZnRlciBBZGRpbmcgQklDOgorICAgICAgICAv
LyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBFeHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExvd0Vu
ZCAleDEsIGxzYiwgd2lkdGgsICV4MCwgQDgKKyAgICAgICAgUmV0NjQgICAgICAgICAgICAgICAg
ICAgICAgICAgJXgwLCAgICAgICAgICAgICAgICAgIEA5CisKKyAgICAgICAgLS0tLS0tLS0tLS0t
LS0KKyAgICAgICAgIyMjIFBhcnQgQiAjIyMKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0KKyAgICAg
ICAgVGhlIEJpdGZpZWxkIENsZWFyIChCRkMpLCBsZWF2aW5nIG90aGVyIGJpdHMgdW5jaGFuZ2Vk
LCBpcyBzaW1pbGFyIHRvIEJGSSB3aGljaCBpcyBhbiAKKyAgICAgICAgYWxpYXMgb2YgQkZNLiBH
aXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIGJmYyBSZCwgbHNiLCB3aWR0aAorCisgICAg
ICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm4gb2YgdGhpcyBpbnN0cnVjdGlvbiBpczoKKworICAg
ICAgICBtYXNrID0gKCgxIDw8IHdpZHRoKSAtIDEpIDw8IGxzYgorICAgICAgICBkID0gZCAmIH5t
YXNrCisKKyAgICAgICAgU2luY2UgbWFzayBpcyBhIGNvbnN0YW50IGFuZCBCMyBwZXJmb3JtcyBj
b25zdGFudCBmb2xkIGluIHRoZSBvcHRpbWl6YXRpb24gcGhhc2UsIHRoaXMgCisgICAgICAgIHBh
dHRlcm4gd2lsbCBkaXJlY3RseSBsb3dlciB0byB0aGUgQml0QW5kIGJpbmFyeSBvcGVyYXRpb24u
IFNvLCBubyBuZWVkIHRvIG1hdGNoIHRoaXMgcGF0dGVybi4KKworICAgICAgICAtLS0tLS0tLS0t
LS0tLQorICAgICAgICAjIyMgUGFydCBDICMjIworICAgICAgICAtLS0tLS0tLS0tLS0tLQorICAg
ICAgICBBdCBNYWNyb0Fzc2VtYmxlciBsZXZlbCwgdGhlIGVtaXR0ZXJzIGFyZSBleGVwZWN0ZWQg
dG8gYmUgZXhwcmVzc2VkIGluIGVuZ2xpc2ggCisgICAgICAgIChlLmcuIHNvbWV0aGluZyBsaWtl
IGNsZWFyQml0RmllbGQgZm9yIEJGQykuIERvIHJlZmFjdG9yaW5nIHRvIHJlbmFtZSBBaXIgb3Bj
b2RlIGZvciAKKyAgICAgICAgVUJGWCwgVUJGSVosIEJGSSwgYW5kIEJJQy4KKworICAgICAgICAq
IGFzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxl
cjo6YmZjKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpleHRyYWN0VW5zaWduZWRCaXRmaWVsZDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6ZXh0cmFjdFVuc2lnbmVkQml0
ZmllbGQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omluc2VydFVuc2ln
bmVkQml0ZmllbGRJblplcm8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
Omluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm82NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNNjQ6Omluc2VydEJpdEZpZWxkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0OjppbnNlcnRCaXRGaWVsZDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6Y2xlYXJCaXRGaWVsZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6Y2xlYXJCaXRGaWVsZDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6Y2xlYXJCaXRzV2l0aE1hc2szMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmNsZWFyQml0c1dpdGhNYXNrNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0Ojpvck5vdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6b3JOb3Q2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZngzMik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZng2NCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZml6MzIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZpejY0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Yml0RmllbGRJbnNlcnQzMik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpdEZpZWxkSW5zZXJ0NjQpOiBE
ZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6
OnRlc3RNdWx0aXBseVNpZ25FeHRlbmQzMik6CisgICAgICAgIChKU0M6OnRlc3RNdWx0aXBseVN1
YlNpZ25FeHRlbmQzMik6CisgICAgICAgIChKU0M6OnRlc3RFeHRyYWN0VW5zaWduZWRCaXRmaWVs
ZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkNjQpOgorICAg
ICAgICAoSlNDOjp0ZXN0SW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyKToKKyAgICAgICAg
KEpTQzo6dGVzdEluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm82NCk6CisgICAgICAgIChKU0M6
OnRlc3RJbnNlcnRCaXRGaWVsZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdEluc2VydEJpdEZpZWxk
NjQpOgorICAgICAgICAoSlNDOjp0ZXN0Q2xlYXJCaXRGaWVsZDMyKToKKyAgICAgICAgKEpTQzo6
dGVzdENsZWFyQml0RmllbGQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RDbGVhckJpdHNXaXRoTWFz
azMyKToKKyAgICAgICAgKEpTQzo6dGVzdENsZWFyQml0c1dpdGhNYXNrNjQpOgorICAgICAgICAo
SlNDOjp0ZXN0T3JOb3QzMik6CisgICAgICAgIChKU0M6OnRlc3RPck5vdDY0KToKKyAgICAgICAg
KEpTQzo6dGVzdE11bDMyU2lnbkV4dGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RN
dWxTdWJTaWduRXh0ZW5kMzIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjp0ZXN0VWJmeDMyKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6dGVzdFViZng2NCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OnRlc3RVYmZpejMyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6dGVzdFViZml6NjQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjp0ZXN0Qml0RmllbGRJbnNlcnQzMik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OnRlc3RCaXRGaWVsZEluc2VydDY0KTogRGVsZXRlZC4KKyAgICAgICAgKiBi
My9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgor
ICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMu
aDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0SW5zZXJ0Qml0Rmll
bGQzMik6CisgICAgICAgICh0ZXN0SW5zZXJ0Qml0RmllbGQ2NCk6CisgICAgICAgICh0ZXN0QklD
MzIpOgorICAgICAgICAodGVzdEJJQzY0KToKKyAgICAgICAgKHRlc3RPck5vdDMyKToKKyAgICAg
ICAgKHRlc3RPck5vdDY0KToKKyAgICAgICAgKGFkZEJpdFRlc3RzKToKKyAgICAgICAgKHRlc3RC
aXRGaWVsZEluc2VydDMyKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3RCaXRGaWVsZEluc2VydDY0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6Cisg
ICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5
SGVscGVyczo6Y2FnZVdpdGhvdXRVbnRhZ2dpbmcpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWcpOgorCiAyMDIxLTA2LTI0ICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgbGRwIGFuZCBzdHAgbW9yZSBm
b3Igc2F2aW5nIC8gcmVzdG9yaW5nIHJlZ2lzdGVycyBvbiBBUk02NC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAppbmRleCA3NThjYmU0MDI3
Nzk4ZTgzMWQyZDAzY2E4NDhlZDhiMDQ4MzY1ZTE0Li5jYjRjYjFiYzA3MzAxZGU4ZTYyYmZiYmVl
ZGI3MWNlNDc0OGNiZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTTY0QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BUk02NEFzc2VtYmxlci5oCkBAIC04MzIsNiArODMyLDEyIEBAIHB1YmxpYzoKICAgICAgICAg
aW5zbihjb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZShvZmZzZXQsIGNvbmQpKTsKICAgICB9CiAK
KyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGJmYyhS
ZWdpc3RlcklEIHJkLCBpbnQgbHNiLCBpbnQgd2lkdGgpCisgICAgeworICAgICAgICBiZmk8ZGF0
YXNpemU+KHJkLCBBUk02NFJlZ2lzdGVyczo6enIsIGxzYiwgd2lkdGgpOworICAgIH0KKwogICAg
IHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYmZpKFJlZ2lz
dGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIGludCBsc2IsIGludCB3aWR0aCkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oCmluZGV4IDA2OWJkNDZiMzk0MWMwYTg2ZThlM2EzNjk5NDRhYTRhOTBiYzA3NWQuLjA4OTE1
OTViNGRhYWUzNGRmN2RmZTczN2YyMDhiMGYwMWI3MjM1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zOTAs
MjYgKzM5MCw2IEBAIHB1YmxpYzoKICAgICAgICAgYW5kMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVz
dCk7CiAgICAgfQogCi0gICAgdm9pZCB1YmZ4MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0z
MiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIudWJmeDwzMj4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92
YWx1ZSk7Ci0gICAgfQotCi0gICAgdm9pZCB1YmZ4NjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJ
bW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIudWJmeDw2ND4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgu
bV92YWx1ZSk7Ci0gICAgfQotCi0gICAgdm9pZCB1YmZpejMyKFJlZ2lzdGVySUQgc3JjLCBUcnVz
dGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLnViZml6PDMyPihkZXN0LCBzcmMsIGxzYi5tX3ZhbHVlLCB3
aWR0aC5tX3ZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHViZml6NjQoUmVnaXN0ZXJJRCBzcmMs
IFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQot
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudWJmaXo8NjQ+KGRlc3QsIHNyYywgbHNiLm1fdmFs
dWUsIHdpZHRoLm1fdmFsdWUpOwotICAgIH0KLQogICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBz
cmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmFuZF88NjQ+KGRlc3QsIHNyYzEsIHNyYzIpOwpAQCAtNDY4LDYgKzQ0OCw3NyBA
QCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZF88NjQ+KGRlc3QsIGRlc3QsIGRhdGFU
ZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIC8vIEJpdCBPcGVyYXRpb25zOgorICAgIHZvaWQg
ZXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGxz
YiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci51YmZ4PDMyPihkZXN0LCBzcmMsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVl
KTsKKyAgICB9CisKKyAgICB2b2lkIGV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkNjQoUmVnaXN0ZXJJ
RCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudWJmeDw2ND4oZGVzdCwgc3JjLCBsc2Iu
bV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBpbnNlcnRVbnNpZ25l
ZEJpdGZpZWxkSW5aZXJvMzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0
ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIudWJmaXo8MzI+KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOworICAg
IH0KKworICAgIHZvaWQgaW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzY0KFJlZ2lzdGVySUQg
c3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnViZml6PDY0PihkZXN0LCBzcmMsIGxzYi5t
X3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGluc2VydEJpdEZpZWxk
MzIoUmVnaXN0ZXJJRCBzb3VyY2UsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0
aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmZpPDMyPihk
ZXN0LCBzb3VyY2UsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2
b2lkIGluc2VydEJpdEZpZWxkNjQoUmVnaXN0ZXJJRCBzb3VyY2UsIFRydXN0ZWRJbW0zMiBsc2Is
IFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYmZpPDY0PihkZXN0LCBzb3VyY2UsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVl
KTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQml0RmllbGQzMihUcnVzdGVkSW1tMzIgbHNiLCBU
cnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmJmYzwzMj4oZGVzdCwgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOworICAgIH0K
KworICAgIHZvaWQgY2xlYXJCaXRGaWVsZDY0KFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0z
MiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmZj
PDY0PihkZXN0LCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9p
ZCBjbGVhckJpdHNXaXRoTWFzazMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIG1hc2ssIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJpYzwzMj4oZGVzdCwg
c3JjLCBtYXNrKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQml0c1dpdGhNYXNrNjQoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYmljPDY0PihkZXN0LCBzcmMsIG1hc2spOworICAgIH0KKworICAgIHZv
aWQgb3JOb3QzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBtYXNrLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcm48MzI+KGRlc3QsIHNyYywgbWFzayk7
CisgICAgfQorCisgICAgdm9pZCBvck5vdDY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIG1h
c2ssIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybjw2ND4o
ZGVzdCwgc3JjLCBtYXNrKTsKKyAgICB9CisKKyAgICB2b2lkIGV4dHJhY3RJbnNlcnRCaXRmaWVs
ZEF0TG93RW5kMzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0z
MiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmZ4
aWw8MzI+KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOworICAgIH0KKwor
ICAgIHZvaWQgZXh0cmFjdEluc2VydEJpdGZpZWxkQXRMb3dFbmQ2NChSZWdpc3RlcklEIHNyYywg
VHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iZnhpbDw2ND4oZGVzdCwgc3JjLCBsc2IubV92YWx1
ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCiAgICAgdm9pZCBjbGVhckJpdDY0KFJlZ2lzdGVy
SUQgYml0VG9DbGVhciwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2hGb3JNYXNr
ID0gSW52YWxpZEdQUlJlZykKICAgICB7CiAgICAgICAgIGlmIChzY3JhdGNoRm9yTWFzayA9PSBJ
bnZhbGlkR1BSUmVnKQpAQCAtMjc1MiwxOCArMjgwMyw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIuZmNzZWw8NjQ+KGRlc3QsIHRoZW5DYXNlLCBlbHNlQ2FzZSwgQVJNNjRDb25kaXRp
b24oY29uZCkpOwogICAgIH0KIAotICAgIC8vIEJpdCBmaWVsZCBvcGVyYXRpb25zOgotICAgIHZv
aWQgYml0RmllbGRJbnNlcnQzMihSZWdpc3RlcklEIHNvdXJjZSwgVHJ1c3RlZEltbTMyIGxzYiwg
VHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fz
c2VtYmxlci5iZmk8MzI+KGRlc3QsIHNvdXJjZSwgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUp
OwotICAgIH0KLQotICAgIC8vIGRlc3RCaXRPZmZzZXQgaXMgdGhlIHRvcCBiaXQgb2YgdGhlIGRl
c3RpbmF0aW9uIHdoZXJlIHRoZSBiaXRzIHNob3VsZCBiZSBjb3BpZWQgdG8uIFplcm8gaXMgdGhl
IGxvd2VzdCBvcmRlciBiaXQuCi0gICAgdm9pZCBiaXRGaWVsZEluc2VydDY0KFJlZ2lzdGVySUQg
c291cmNlLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJmaTw2ND4oZGVzdCwgc291cmNlLCBs
c2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Ci0gICAgfQotCiAgICAgLy8gRm9yd2FyZHMgLyBl
eHRlcm5hbCBjb250cm9sIGZsb3cgb3BlcmF0aW9uczoKICAgICAvLwogICAgIC8vIFRoaXMgc2V0
IG9mIGp1bXAgYW5kIGNvbmRpdGlvbmFsIGJyYW5jaCBvcGVyYXRpb25zIHJldHVybiBhIEp1bXAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggYzlj
Zjk2OGI3YjQ1ZjQyMzg3ZWRjN2ZkNjY5M2YwOWQ1M2VlNmE1MC4uYjk5YWZmMzQxOGQ1NGIyNWU5
M2U5MjY4ZjgwMDg5MGFkN2NmNDUzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci90ZXN0bWFzbS5jcHAKQEAgLTkwNCw3ICs5MDQsNyBAQCB2b2lkIHRlc3RNdWwzMldpdGhJ
bW1lZGlhdGVzKCkKIH0KIAogI2lmIENQVShBUk02NCkKLXZvaWQgdGVzdE11bDMyU2lnbkV4dGVu
ZCgpCit2b2lkIHRlc3RNdWx0aXBseVNpZ25FeHRlbmQzMigpCiB7CiAgICAgZm9yIChhdXRvIHZh
bHVlIDogaW50MzJPcGVyYW5kcygpKSB7CiAgICAgICAgIGF1dG8gbXVsID0gY29tcGlsZShbPV0g
KENDYWxsSGVscGVycyYgaml0KSB7CkBAIC0xMDg5LDcgKzEwODksNyBAQCB2b2lkIHRlc3RTdWI2
NEFyZ0ltbTY0KCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdE11bFN1YlNpZ25FeHRlbmQzMigpCit2
b2lkIHRlc3RNdWx0aXBseVN1YlNpZ25FeHRlbmQzMigpCiB7CiAgICAgLy8gZCA9IGEgLSBTRXh0
MzIobikgKiAgU0V4dDMyKG0pCiAgICAgYXV0byBzdWIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKQEAgLTExMTIsNyArMTExMiw3IEBAIHZvaWQgdGVzdE11bFN1YlNpZ25FeHRl
bmQzMigpCiAgICAgfQogfQogCi12b2lkIHRlc3RVYmZ4MzIoKQordm9pZCB0ZXN0RXh0cmFjdFVu
c2lnbmVkQml0ZmllbGQzMigpCiB7CiAgICAgdWludDMyX3Qgc3JjID0gMHhmMGYwZjBmMDsKICAg
ICBWZWN0b3I8dWludDMyX3Q+IGltbXMgPSB7IDAsIDEsIDUsIDcsIDMwLCAzMSwgMzIsIDQyLCA1
NiwgNjIsIDYzLCA2NCB9OwpAQCAtMTEyMiw3ICsxMTIyLDcgQEAgdm9pZCB0ZXN0VWJmeDMyKCkK
ICAgICAgICAgICAgICAgICBhdXRvIHViZngzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCkgewogICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwog
Ci0gICAgICAgICAgICAgICAgICAgIGppdC51YmZ4MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAK
KyAgICAgICAgICAgICAgICAgICAgaml0LmV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCAKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKGxzYiksIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86
OnJldHVyblZhbHVlR1BSKTsKQEAgLTExMzYsNyArMTEzNiw3IEBAIHZvaWQgdGVzdFViZngzMigp
CiAgICAgfQogfQogCi12b2lkIHRlc3RVYmZ4NjQoKQordm9pZCB0ZXN0RXh0cmFjdFVuc2lnbmVk
Qml0ZmllbGQ2NCgpCiB7CiAgICAgdWludDY0X3Qgc3JjID0gMHhmMGYwZjBmMGYwZjBmMGYwOwog
ICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9IHsgMCwgMSwgNSwgNywgMzAsIDMxLCAzMiwgNDIs
IDU2LCA2MiwgNjMsIDY0IH07CkBAIC0xMTQ2LDcgKzExNDYsNyBAQCB2b2lkIHRlc3RVYmZ4NjQo
KQogICAgICAgICAgICAgICAgIGF1dG8gdWJmeDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVy
cyYgaml0KSB7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7
CiAKLSAgICAgICAgICAgICAgICAgICAgaml0LnViZng2NChHUFJJbmZvOjphcmd1bWVudEdQUjAs
IAorICAgICAgICAgICAgICAgICAgICBqaXQuZXh0cmFjdFVuc2lnbmVkQml0ZmllbGQ2NChHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIobHNiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAogICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIpOwpAQCAtMTE2MCw3ICsxMTYwLDcgQEAgdm9pZCB0ZXN0VWJmeDY0
KCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdFViZml6MzIoKQordm9pZCB0ZXN0SW5zZXJ0VW5zaWdu
ZWRCaXRmaWVsZEluWmVybzMyKCkKIHsKICAgICB1aW50MzJfdCBzcmMgPSAweGYwZjBmMGYwOwog
ICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9IHsgMCwgMSwgNSwgNywgMzAsIDMxLCAzMiwgNDIs
IDU2LCA2MiwgNjMsIDY0IH07CkBAIC0xMTcwLDcgKzExNzAsNyBAQCB2b2lkIHRlc3RVYmZpejMy
KCkKICAgICAgICAgICAgICAgICBhdXRvIHViZml6MzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIAotICAgICAgICAgICAgICAgICAgICBqaXQudWJmaXozMihHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIAorICAgICAgICAgICAgICAgICAgICBqaXQuaW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVy
bzMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsc2IpLCAKICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHdpZHRoKSwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CkBAIC0xMTg1LDcgKzExODUsNyBAQCB2b2lkIHRl
c3RVYmZpejMyKCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdFViZml6NjQoKQordm9pZCB0ZXN0SW5z
ZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzY0KCkKIHsKICAgICB1aW50NjRfdCBzcmMgPSAweGYw
ZjBmMGYwZjBmMGYwZjA7CiAgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCA1LCA3
LCAzMCwgMzEsIDMyLCA0MiwgNTYsIDYyLCA2MywgNjQgfTsKQEAgLTExOTUsNyArMTE5NSw3IEBA
IHZvaWQgdGVzdFViZml6NjQoKQogICAgICAgICAgICAgICAgIGF1dG8gdWJmaXo2NCA9IGNvbXBp
bGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZShqaXQpOwogCi0gICAgICAgICAgICAgICAgICAgIGppdC51YmZpejY0KEdQ
UkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgIGppdC5pbnNlcnRVbnNp
Z25lZEJpdGZpZWxkSW5aZXJvNjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAogICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTEyMTAsNyAr
MTIxMCw3IEBAIHZvaWQgdGVzdFViZml6NjQoKQogICAgIH0KIH0KIAotdm9pZCB0ZXN0Qml0Rmll
bGRJbnNlcnQzMigpCit2b2lkIHRlc3RJbnNlcnRCaXRGaWVsZDMyKCkKIHsKICAgICB1aW50MzJf
dCBzcmMgPSAweDBmMGYwZjBmOwogICAgIHVpbnQzMl90IGRzdCA9IDB4ZjBmMGYwZjA7CkBAIC0x
MjIxLDcgKzEyMjEsNyBAQCB2b2lkIHRlc3RCaXRGaWVsZEluc2VydDMyKCkKICAgICAgICAgICAg
ICAgICBhdXRvIGJmaTMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAg
ICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKLSAgICAgICAgICAg
ICAgICAgICAgaml0LmJpdEZpZWxkSW5zZXJ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAg
ICAgICAgICAgICAgICAgICAgaml0Lmluc2VydEJpdEZpZWxkMzIoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCAKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGxzYiksIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIod2lkdGgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BS
MSk7CkBAIC0xMjQwLDcgKzEyNDAsNyBAQCB2b2lkIHRlc3RCaXRGaWVsZEluc2VydDMyKCkKICAg
ICB9CiB9CiAKLXZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0NjQoKQordm9pZCB0ZXN0SW5zZXJ0Qml0
RmllbGQ2NCgpCiB7CiAgICAgdWludDY0X3Qgc3JjID0gMHgwZjBmMGYwZjBmMGYwZjBmOwogICAg
IHVpbnQ2NF90IGRzdCA9IDB4ZjBmMGYwZjBmMGYwZjBmMDsKQEAgLTEyNTEsNyArMTI1MSw3IEBA
IHZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0NjQoKQogICAgICAgICAgICAgICAgIGF1dG8gYmZpNjQg
PSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAotICAgICAgICAgICAgICAgICAgICBqaXQuYml0
RmllbGRJbnNlcnQ2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAg
ICBqaXQuaW5zZXJ0Qml0RmllbGQ2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNiKSwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAogICAg
ICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKQEAgLTEyNjksNiAr
MTI2OSwxODggQEAgdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQ2NCgpCiAgICAgICAgIH0KICAgICB9
CiB9CisKK3ZvaWQgdGVzdEV4dHJhY3RJbnNlcnRCaXRmaWVsZEF0TG93RW5kMzIoKQoreworICAg
IHVpbnQzMl90IHNyYyA9IDB4ZjBmMGYwZjA7CisgICAgdWludDMyX3QgZHN0ID0gMHgwZjBmMGYw
ZjsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGltbXMgPSB7IDAsIDEsIDUsIDcsIDMwLCAzMSwgMzIs
IDQyLCA1NiwgNjIsIDYzLCA2NCB9OworICAgIGZvciAoYXV0byBsc2IgOiBpbW1zKSB7CisgICAg
ICAgIGZvciAoYXV0byB3aWR0aCA6IGltbXMpIHsKKyAgICAgICAgICAgIGlmIChsc2IgPj0gMCAm
JiB3aWR0aCA+IDAgJiYgbHNiICsgd2lkdGggPCAzMikgeworICAgICAgICAgICAgICAgIGF1dG8g
YmZ4aWwzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAg
ICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAg
IGppdC5leHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihs
c2IpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KHdpZHRoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbWFzazEgPSAoMVUgPDwgd2lk
dGgpIC0gMVU7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbWFzazIgPSB+bWFzazE7CisgICAg
ICAgICAgICAgICAgdWludDMyX3QgcmhzID0gaW52b2tlPHVpbnQzMl90PihiZnhpbDMyLCBzcmMs
IGRzdCk7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbGhzID0gKChzcmMgPj4gbHNiKSAmIG1h
c2sxKSB8IChkc3QgJiBtYXNrMik7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEocmhzLCBsaHMp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RFeHRyYWN0
SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDY0KCkKK3sKKyAgICB1aW50NjRfdCBzcmMgPSAweDBmMGYw
ZjBmMGYwZjBmMGY7CisgICAgdWludDY0X3QgZHN0ID0gMHhmMGYwZjBmMGYwZjBmMGYwOworICAg
IFZlY3Rvcjx1aW50NjRfdD4gaW1tcyA9IHsgMCwgMSwgNSwgNywgMzAsIDMxLCAzMiwgNDIsIDU2
LCA2MiwgNjMsIDY0IH07CisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMpIHsKKyAgICAgICAgZm9y
IChhdXRvIHdpZHRoIDogaW1tcykgeworICAgICAgICAgICAgaWYgKGxzYiA+PSAwICYmIHdpZHRo
ID4gMCAmJiBsc2IgKyB3aWR0aCA8IDY0KSB7CisgICAgICAgICAgICAgICAgYXV0byBiZnhpbDY0
ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAg
IGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmV4
dHJhY3RJbnNlcnRCaXRmaWVsZEF0TG93RW5kNjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAor
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgp
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxv
Z3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBtYXNrMSA9ICgxVUxMIDw8IHdpZHRoKSAt
IDFVTEw7CisgICAgICAgICAgICAgICAgdWludDY0X3QgbWFzazIgPSB+bWFzazE7CisgICAgICAg
ICAgICAgICAgdWludDY0X3QgcmhzID0gaW52b2tlPHVpbnQ2NF90PihiZnhpbDY0LCBzcmMsIGRz
dCk7CisgICAgICAgICAgICAgICAgdWludDY0X3QgbGhzID0gKChzcmMgPj4gbHNiKSAmIG1hc2sx
KSB8IChkc3QgJiBtYXNrMik7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEocmhzLCBsaHMpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RDbGVhckJpdEZp
ZWxkMzIoKQoreworICAgIHVpbnQzMl90IHNyYyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMy
X3Q+OjptYXgoKTsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGltbXMgPSB7IDAsIDEsIDUsIDcsIDMw
LCAzMSwgMzIsIDQyLCA1NiwgNjIsIDYzLCA2NCB9OworICAgIGZvciAoYXV0byBsc2IgOiBpbW1z
KSB7CisgICAgICAgIGZvciAoYXV0byB3aWR0aCA6IGltbXMpIHsKKyAgICAgICAgICAgIGlmIChs
c2IgPj0gMCAmJiB3aWR0aCA+IDAgJiYgbHNiICsgd2lkdGggPCAzMikgeworICAgICAgICAgICAg
ICAgIGF1dG8gYmZjMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAg
ICAgICAgICBqaXQuY2xlYXJCaXRGaWVsZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxz
YiksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHdpZHRoKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHVpbnQzMl90IG1hc2sgPSAoKDFVIDw8
IHdpZHRoKSAtIDFVKSA8PCBsc2I7CisgICAgICAgICAgICAgICAgdWludDMyX3QgcmhzID0gaW52
b2tlPHVpbnQzMl90PihiZmMzMiwgc3JjKTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBsaHMg
PSBzcmMgJiB+bWFzazsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShyaHMsIGxocyk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdENsZWFyQml0RmllbGQ2
NCgpCit7CisgICAgdWludDY0X3Qgc3JjID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46
Om1heCgpOworICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9IHsgMCwgMSwgNSwgNywgMzAsIDMx
LCAzMiwgNDIsIDU2LCA2MiwgNjMsIDY0IH07CisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMpIHsK
KyAgICAgICAgZm9yIChhdXRvIHdpZHRoIDogaW1tcykgeworICAgICAgICAgICAgaWYgKGxzYiA+
PSAwICYmIHdpZHRoID4gMCAmJiBsc2IgKyB3aWR0aCA8IDMyKSB7CisgICAgICAgICAgICAgICAg
YXV0byBiZmM2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAg
ICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAg
ICAgIGppdC5jbGVhckJpdEZpZWxkNjQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNiKSwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgdWludDY0X3QgbWFzayA9ICgoMVVMTCA8PCB3
aWR0aCkgLSAxVUxMKSA8PCBsc2I7CisgICAgICAgICAgICAgICAgdWludDY0X3QgcmhzID0gaW52
b2tlPHVpbnQ2NF90PihiZmM2NCwgc3JjKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBsaHMg
PSBzcmMgJiB+bWFzazsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShyaHMsIGxocyk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdENsZWFyQml0c1dpdGhN
YXNrMzIoKQoreworICAgIGF1dG8gdGVzdCA9IGNvbXBpbGUoW10gKENDYWxsSGVscGVycyYgaml0
KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0LmNs
ZWFyQml0c1dpdGhNYXNrMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25F
cGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1
dG8gbWFzayA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICB1aW50MzJfdCBzcmMgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7CisgICAgICAgIENIRUNLX0VRKGludm9r
ZTx1aW50MzJfdD4odGVzdCwgc3JjLCBtYXNrKSwgKHNyYyAmIH5tYXNrKSk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTx1aW50MzJfdD4odGVzdCwgMFUsIG1hc2spLCAwVSk7CisgICAgfQorfQor
Cit2b2lkIHRlc3RDbGVhckJpdHNXaXRoTWFzazY0KCkKK3sKKyAgICBhdXRvIHRlc3QgPSBjb21w
aWxlKFtdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1
ZShqaXQpOworCisgICAgICAgIGppdC5jbGVhckJpdHNXaXRoTWFzazY0KEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgp
OworICAgIH0pOworCisgICAgZm9yIChhdXRvIG1hc2sgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAg
ICAgICAgdWludDY0X3Qgc3JjID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgp
OworICAgICAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KHRlc3QsIHNyYywgbWFzayksIChz
cmMgJiB+bWFzaykpOworICAgICAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KHRlc3QsIDBV
TEwsIG1hc2spLCAwVUxMKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdE9yTm90MzIoKQoreworICAg
IGF1dG8gdGVzdCA9IGNvbXBpbGUoW10gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0Lm9yTm90MzIoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQu
cmV0KCk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8gbWFzayA6IGludDMyT3BlcmFuZHMoKSkg
eworICAgICAgICBpbnQzMl90IHNyYyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+Ojpt
YXgoKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KHRlc3QsIHNyYywgbWFzayks
IChzcmMgfCB+bWFzaykpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4odGVzdCwg
MFUsIG1hc2spLCB+bWFzayk7CisgICAgfQorfQorCit2b2lkIHRlc3RPck5vdDY0KCkKK3sKKyAg
ICBhdXRvIHRlc3QgPSBjb21waWxlKFtdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICBl
bWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgIGppdC5vck5vdDY0KEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0
LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIG1hc2sgOiBpbnQ2NE9wZXJhbmRzKCkp
IHsKKyAgICAgICAgaW50NjRfdCBzcmMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6
bWF4KCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90Pih0ZXN0LCBzcmMsIG1hc2sp
LCAoc3JjIHwgfm1hc2spKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KHRlc3Qs
IDBVTEwsIG1hc2spLCB+bWFzayk7CisgICAgfQorfQogI2VuZGlmCiAKICNpZiBDUFUoWDg2KSB8
fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCkBAIC0zNDI1LDkgKzM2MDcsOCBAQCB2b2lkIHJ1
bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMK
ICNpZiBDUFUoQVJNNjQpCiAgICAgUlVOKHRlc3RMb2FkU3RvcmVQYWlyNjRJbnQ2NCgpKTsKICAg
ICBSVU4odGVzdExvYWRTdG9yZVBhaXI2NERvdWJsZSgpKTsKLSAgICBSVU4odGVzdE11bDMyU2ln
bkV4dGVuZCgpKTsKLSAgICBSVU4odGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyTGVmdCgpKTsK
LSAgICBSVU4odGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyUmlnaHQoKSk7CisgICAgUlVOKHRl
c3RNdWx0aXBseVNpZ25FeHRlbmQzMigpKTsKKwogICAgIFJVTih0ZXN0U3ViMzJBcmdzKCkpOwog
ICAgIFJVTih0ZXN0U3ViMzJJbW0oKSk7CiAgICAgUlVOKHRlc3RTdWIzMkFyZ0ltbSgpKTsKQEAg
LTM0MzUsMTMgKzM2MTYsMjYgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdO
T1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRlc3RTdWI2NEFyZ0ltbTMyKCkp
OwogICAgIFJVTih0ZXN0U3ViNjRJbW02NCgpKTsKICAgICBSVU4odGVzdFN1YjY0QXJnSW1tNjQo
KSk7Ci0gICAgUlVOKHRlc3RNdWxTdWJTaWduRXh0ZW5kMzIoKSk7Ci0gICAgUlVOKHRlc3RVYmZ4
MzIoKSk7Ci0gICAgUlVOKHRlc3RVYmZ4NjQoKSk7Ci0gICAgUlVOKHRlc3RVYmZpejMyKCkpOwot
ICAgIFJVTih0ZXN0VWJmaXo2NCgpKTsKLSAgICBSVU4odGVzdEJpdEZpZWxkSW5zZXJ0MzIoKSk7
Ci0gICAgUlVOKHRlc3RCaXRGaWVsZEluc2VydDY0KCkpOworCisgICAgUlVOKHRlc3RNdWx0aXBs
eUFkZFNpZ25FeHRlbmQzMkxlZnQoKSk7CisgICAgUlVOKHRlc3RNdWx0aXBseUFkZFNpZ25FeHRl
bmQzMlJpZ2h0KCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlTdWJTaWduRXh0ZW5kMzIoKSk7CisK
KyAgICBSVU4odGVzdEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIoKSk7CisgICAgUlVOKHRlc3RF
eHRyYWN0VW5zaWduZWRCaXRmaWVsZDY0KCkpOworICAgIFJVTih0ZXN0SW5zZXJ0VW5zaWduZWRC
aXRmaWVsZEluWmVybzMyKCkpOworICAgIFJVTih0ZXN0SW5zZXJ0VW5zaWduZWRCaXRmaWVsZElu
WmVybzY0KCkpOworICAgIFJVTih0ZXN0SW5zZXJ0Qml0RmllbGQzMigpKTsKKyAgICBSVU4odGVz
dEluc2VydEJpdEZpZWxkNjQoKSk7CisgICAgUlVOKHRlc3RFeHRyYWN0SW5zZXJ0Qml0ZmllbGRB
dExvd0VuZDMyKCkpOworICAgIFJVTih0ZXN0RXh0cmFjdEluc2VydEJpdGZpZWxkQXRMb3dFbmQ2
NCgpKTsKKyAgICBSVU4odGVzdENsZWFyQml0RmllbGQzMigpKTsKKyAgICBSVU4odGVzdENsZWFy
Qml0RmllbGQ2NCgpKTsKKyAgICBSVU4odGVzdENsZWFyQml0c1dpdGhNYXNrMzIoKSk7CisgICAg
UlVOKHRlc3RDbGVhckJpdHNXaXRoTWFzazY0KCkpOworCisgICAgUlVOKHRlc3RPck5vdDMyKCkp
OworICAgIFJVTih0ZXN0T3JOb3Q2NCgpKTsKICNlbmRpZgogCiAjaWYgQ1BVKFg4NikgfHwgQ1BV
KFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRv
QWlyLmNwcAppbmRleCA4NDA0MGZlZjRhOTZhNzU5MTM3YmM2NmVkZTQ1MThmNzkyMzFhYWJkLi5j
Y2EwMzZmNzJhMjBkNzJmNjNlZDMzMTNiNzllYzc2ZTk2MzVmNTgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMjc2MSwzNSArMjc2MSwyNiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgLy8gVUJGWCBQYXR0ZXJuOiBkZXN0ID0gKHNyYyA+PiBsc2IpICYgbWFzayAKLSAgICAgICAg
ICAgIC8vIFdoZXJlOiBtYXNrID0gKDEgPDwgd2lkdGgpIC0gMQotICAgICAgICAgICAgYXV0byB0
cnlBcHBlbmRVQkZYID0gWyZdICgpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgIEFpcjo6T3Bj
b2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoVWJmeDMyLCBVYmZ4NjQsIG1fdmFsdWUtPnR5cGUo
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBB
cmc6OkltbSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCisgICAgICAgICAgICAvLyBCSUMgUGF0dGVy
bjogZCA9IG4gJiAobSBeIC0xKQorICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRCSUMgPSBbJl0g
KFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIEFp
cjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoQ2xlYXJCaXRzV2l0aE1hc2szMiwgQ2xl
YXJCaXRzV2l0aE1hc2s2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAo
IWlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIAogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKGxlZnQt
Pm9wY29kZSgpICE9IFpTaHIgfHwgIWNhbkJlSW50ZXJuYWwobGVmdCkpCisgICAgICAgICAgICAg
ICAgaWYgKHJpZ2h0LT5vcGNvZGUoKSAhPSBCaXRYb3IgfHwgIWNhbkJlSW50ZXJuYWwocmlnaHQp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgICAgICBW
YWx1ZSogc3JjVmFsdWUgPSBsZWZ0LT5jaGlsZCgwKTsKLSAgICAgICAgICAgICAgICBWYWx1ZSog
bHNiVmFsdWUgPSBsZWZ0LT5jaGlsZCgxKTsKLSAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQu
Y29udGFpbnMoc3JjVmFsdWUpIHx8ICFpbW0obHNiVmFsdWUpIHx8IGxzYlZhbHVlLT5hc0ludCgp
IDwgMCB8fCAhcmlnaHQtPmhhc0ludCgpKQorICAgICAgICAgICAgICAgIFZhbHVlKiBuVmFsdWUg
PSBsZWZ0OworICAgICAgICAgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByaWdodC0+Y2hpbGQoMCk7
CisgICAgICAgICAgICAgICAgVmFsdWUqIG1pbnVzT25lID0gcmlnaHQtPmNoaWxkKDEpOworICAg
ICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhuVmFsdWUpIHx8IG1fbG9ja2VkLmNv
bnRhaW5zKG1WYWx1ZSkgfHwgIW1pbnVzT25lLT5oYXNJbnQoKSB8fCAhbWludXNPbmUtPmlzSW50
KC0xKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICAg
ICAgdWludDY0X3QgbHNiID0gbHNiVmFsdWUtPmFzSW50KCk7Ci0gICAgICAgICAgICAgICAgdWlu
dDY0X3QgbWFzayA9IHJpZ2h0LT5hc0ludCgpOwotICAgICAgICAgICAgICAgIGlmICghbWFzayB8
fCBtYXNrICYgKG1hc2sgKyAxKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgIHVpbnQ2NF90IHdpZHRoID0gV1RGOjpiaXRDb3VudChtYXNrKTsKLSAg
ICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29kZSA9PSBVYmZ4MzIgPyAzMiA6
IDY0OwotICAgICAgICAgICAgICAgIGlmIChsc2IgKyB3aWR0aCA+IGRhdGFzaXplKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICBhcHBlbmQob3Bj
b2RlLCB0bXAoc3JjVmFsdWUpLCBpbW0obHNiVmFsdWUpLCBpbW0od2lkdGgpLCB0bXAobV92YWx1
ZSkpOwotICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOworICAgICAgICAgICAg
ICAgIGFwcGVuZChvcGNvZGUsIHRtcChuVmFsdWUpLCB0bXAobVZhbHVlKSwgdG1wKG1fdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICBpZiAodHJ5QXBw
ZW5kVUJGWCgpKQorICAgICAgICAgICAgaWYgKHRyeUFwcGVuZEJJQyhsZWZ0LCByaWdodCkgfHwg
dHJ5QXBwZW5kQklDKHJpZ2h0LCBsZWZ0KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBBbmQ2NCwgQW5kRG91YmxlLCBBbmRGbG9hdCwg
Q29tbXV0YXRpdmU+KGxlZnQsIHJpZ2h0KTsKQEAgLTI4MDQsNyArMjc5NSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAvLyBXaGVyZTogbWFzazEgPSAoKDEgPDwgd2lkdGgpIC0gMSkKICAgICAg
ICAgICAgIC8vICAgICAgICBtYXNrMiA9IH4obWFzazEgPDwgbHNiKQogICAgICAgICAgICAgYXV0
byB0cnlBcHBlbmRCRkkgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wg
ewotICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoQml0
RmllbGRJbnNlcnQzMiwgQml0RmllbGRJbnNlcnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKEluc2VydEJpdEZp
ZWxkMzIsIEluc2VydEJpdEZpZWxkNjQsIG1fdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpJbW0s
IEFyZzo6VG1wKSkgCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgICAgICBpZiAobGVmdC0+b3Bjb2RlKCkgIT0gU2hsIHx8ICFjYW5CZUludGVybmFsKGxlZnQp
KQpAQCAtMjgyOCw3ICsyODE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB1aW50NjRf
dCBtYXNrMSA9IG1hc2tWYWx1ZTEtPmFzSW50KCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtYXNr
MSB8fCBtYXNrMSAmIChtYXNrMSArIDEpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YXNpemUgPSBvcGNvZGUgPT0gQml0Rmll
bGRJbnNlcnQzMiA/IDMyIDogNjQ7CisgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YXNpemUg
PSBvcGNvZGUgPT0gSW5zZXJ0Qml0RmllbGQzMiA/IDMyIDogNjQ7CiAgICAgICAgICAgICAgICAg
dWludDY0X3Qgd2lkdGggPSBXVEY6OmJpdENvdW50KG1hc2sxKTsKICAgICAgICAgICAgICAgICBp
ZiAobHNiICsgd2lkdGggPiBkYXRhc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjg1Nyw2ICsyODQ4LDg5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAodHJ5
QXBwZW5kQkZJKGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRCRkkocmlnaHQsIGxlZnQpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICAgICAgLy8gQkZYSUwgUGF0dGVybjogZCA9
ICgobiAmIG1hc2sxKSA+PiBsc2IpIHwgKGQgJiBtYXNrMikKKyAgICAgICAgICAgIC8vIFdoZXJl
OiBtYXNrMSA9ICgoMSA8PCB3aWR0aCkgLSAxKSA8PCBsc2IKKyAgICAgICAgICAgIC8vICAgICAg
ICBtYXNrMiA9IH4obWFzazEgPj4gbHNiKQorICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRCRlhJ
TCA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAgICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShFeHRyYWN0SW5zZXJ0Qml0
ZmllbGRBdExvd0VuZDMyLCBFeHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDY0LCBtX3ZhbHVl
LT50eXBlKCkpOworICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6
OlRtcCwgQXJnOjpJbW0sIEFyZzo6SW1tLCBBcmc6OlRtcCkpIAorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGxlZnQtPm9wY29kZSgpICE9IFpT
aHIgfHwgIWNhbkJlSW50ZXJuYWwobGVmdCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICBpZiAocmlnaHQtPm9wY29kZSgpICE9IEJpdEFuZCB8fCAh
Y2FuQmVJbnRlcm5hbChyaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICBpZiAobGVmdC0+Y2hpbGQoMCktPm9wY29kZSgpICE9IEJpdEFuZCB8
fCAhY2FuQmVJbnRlcm5hbChsZWZ0LT5jaGlsZCgwKSkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIFZhbHVlKiBuVmFsdWUgPSBsZWZ0LT5jaGls
ZCgwKS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgVmFsdWUqIG1hc2tWYWx1ZTEgPSBsZWZ0
LT5jaGlsZCgwKS0+Y2hpbGQoMSk7CisgICAgICAgICAgICAgICAgVmFsdWUqIGxzYlZhbHVlID0g
bGVmdC0+Y2hpbGQoMSk7CisgICAgICAgICAgICAgICAgVmFsdWUqIGRWYWx1ZSA9IHJpZ2h0LT5j
aGlsZCgwKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbWFza1ZhbHVlMiA9IHJpZ2h0LT5jaGls
ZCgxKTsKKyAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMoblZhbHVlKSB8fCBt
X2xvY2tlZC5jb250YWlucyhkVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgaWYgKCFtYXNrVmFsdWUxLT5oYXNJbnQoKSB8fCAhaW1tKGxz
YlZhbHVlKSB8fCBsc2JWYWx1ZS0+YXNJbnQoKSA8IDAgfHwgIW1hc2tWYWx1ZTItPmhhc0ludCgp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICB1
aW50NjRfdCBsc2IgPSBsc2JWYWx1ZS0+YXNJbnQoKTsKKyAgICAgICAgICAgICAgICB1aW50NjRf
dCBtYXNrMSA9IG1hc2tWYWx1ZTEtPmFzSW50KCk7CisgICAgICAgICAgICAgICAgdWludDY0X3Qg
bWFzazFTaGlmdEFtb3VudCA9IFdURjo6Y291bnRUcmFpbGluZ1plcm9zKG1hc2sxKTsKKyAgICAg
ICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29kZSA9PSBFeHRyYWN0SW5zZXJ0Qml0
ZmllbGRBdExvd0VuZDMyID8gMzIgOiA2NDsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YXNpemUg
PT0gMzIpCisgICAgICAgICAgICAgICAgICAgIG1hc2sxICY9IDB4ZmZmZmZmZmY7CisgICAgICAg
ICAgICAgICAgbWFzazEgPj49IG1hc2sxU2hpZnRBbW91bnQ7CisgICAgICAgICAgICAgICAgaWYg
KCFtYXNrMSB8fCBtYXNrMSAmIChtYXNrMSArIDEpIHx8IG1hc2sxU2hpZnRBbW91bnQgIT0gbHNi
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgdWlu
dDY0X3Qgd2lkdGggPSBXVEY6OmJpdENvdW50KG1hc2sxKTsKKyAgICAgICAgICAgICAgICBpZiAo
bHNiICsgd2lkdGggPiBkYXRhc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgICAgICAgICAgdWludDY0X3QgbWFzazIgPSBtYXNrVmFsdWUyLT5hc0ludCgp
OworCisgICAgICAgICAgICAgICAgYXV0byBpc1ZhbGlkTWFzazIgPSBbJl0gKCkgLT4gYm9vbCB7
CisgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG1hc2sgPSAobWFzazEgXiBtYXNrMik7Cisg
ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxvd2VyU2V0ID0gMHhmZmZmZmZmZjsKKyAgICAg
ICAgICAgICAgICAgICAgdWludDY0X3QgZnVsbFNldCA9IDB4ZmZmZmZmZmZmZmZmZmZmZjsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFzaXplID09IDMyID8gISgobWFzayAmIGxvd2Vy
U2V0KSBeIGxvd2VyU2V0KSA6ICEobWFzayBeIGZ1bGxTZXQpOworICAgICAgICAgICAgICAgIH07
CisKKyAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRNYXNrMigpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBUbXAgcmVzdWx0ID0gdG1wKG1f
dmFsdWUpOworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUobV92YWx1
ZS0+dHlwZSgpKSwgdG1wKGRWYWx1ZSksIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgYXBwZW5k
KG9wY29kZSwgdG1wKG5WYWx1ZSksIGltbShsc2JWYWx1ZSksIGltbSh3aWR0aCksIHJlc3VsdCk7
CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobGVmdC0+Y2hpbGQoMCkpOworICAgICAg
ICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOworICAgICAgICAgICAgICAgIGNvbW1pdElu
dGVybmFsKHJpZ2h0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH07CisKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRCRlhJTChsZWZ0LCByaWdodCkgfHwgdHJ5
QXBwZW5kQkZYSUwocmlnaHQsIGxlZnQpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgLy8gT1JOIFBhdHRlcm46IGQgPSBuIHwgKG0gXiAtMSkKKyAgICAgICAgICAgIGF1
dG8gdHJ5QXBwZW5kT1JOID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBib29s
IHsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKE9y
Tm90MzIsIE9yTm90NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFp
c1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSAKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChyaWdodC0+
b3Bjb2RlKCkgIT0gQml0WG9yIHx8ICFjYW5CZUludGVybmFsKHJpZ2h0KSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgVmFsdWUqIG5WYWx1ZSA9
IGxlZnQ7CisgICAgICAgICAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJpZ2h0LT5jaGlsZCgwKTsK
KyAgICAgICAgICAgICAgICBWYWx1ZSogbWludXNPbmUgPSByaWdodC0+Y2hpbGQoMSk7CisgICAg
ICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKG5WYWx1ZSkgfHwgbV9sb2NrZWQuY29u
dGFpbnMobVZhbHVlKSB8fCAhbWludXNPbmUtPmhhc0ludCgpIHx8ICFtaW51c09uZS0+aXNJbnQo
LTEpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAg
ICBhcHBlbmQob3Bjb2RlLCB0bXAoblZhbHVlKSwgdG1wKG1WYWx1ZSksIHRtcChtX3ZhbHVlKSk7
CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOworICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHRyeUFwcGVu
ZE9STihsZWZ0LCByaWdodCkgfHwgdHJ5QXBwZW5kT1JOKHJpZ2h0LCBsZWZ0KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgIGFwcGVuZEJpbk9wPE9yMzIsIE9yNjQsIE9y
RG91YmxlLCBPckZsb2F0LCBDb21tdXRhdGl2ZT4obGVmdCwgcmlnaHQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0yODk5LDcgKzI5NzMsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgLy8gVUJGSVogUGF0dGVybjogZCA9IChuICYgbWFzaykgPDwgbHNiIAogICAgICAgICAg
ICAgLy8gV2hlcmU6IG1hc2sgPSAoMSA8PCB3aWR0aCkgLSAxCiAgICAgICAgICAgICBhdXRvIHRy
eUFwcGVuZFVCRlogPSBbJl0gKCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShVYmZpejMyLCBVYmZpejY0LCBtX3ZhbHVlLT50eXBl
KCkpOworICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUo
SW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyLCBJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5a
ZXJvNjQsIG1fdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9y
bShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGlmIChsZWZ0LT5v
cGNvZGUoKSAhPSBCaXRBbmQgfHwgIWNhbkJlSW50ZXJuYWwobGVmdCkpCkBAIC0yOTE1LDcgKzI5
ODksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmICghbWFzayB8fCBtYXNrICYgKG1h
c2sgKyAxKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgIHVpbnQ2NF90IHdpZHRoID0gV1RGOjpiaXRDb3VudChtYXNrKTsKLSAgICAgICAgICAgICAg
ICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29kZSA9PSBVYmZpejMyID8gMzIgOiA2NDsKKyAgICAg
ICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29kZSA9PSBJbnNlcnRVbnNpZ25lZEJp
dGZpZWxkSW5aZXJvMzIgPyAzMiA6IDY0OwogICAgICAgICAgICAgICAgIGlmIChsc2IgKyB3aWR0
aCA+IGRhdGFzaXplKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI5
NDIsNyArMzAxNiw0NCBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBaU2hy
OiB7Ci0gICAgICAgICAgICBhcHBlbmRTaGlmdDxVcnNoaWZ0MzIsIFVyc2hpZnQ2ND4obV92YWx1
ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgIFZhbHVlKiBsZWZ0
ID0gbV92YWx1ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVl
LT5jaGlsZCgxKTsKKworICAgICAgICAgICAgLy8gVUJGWCBQYXR0ZXJuOiBkID0gKG4gJiBtYXNr
KSA+PiBsc2IKKyAgICAgICAgICAgIC8vIFdoZXJlOiBtYXNrID0gKCgxIDw8IHdpZHRoKSAtIDEp
IDw8IGxzYgorICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRVQkZYID0gWyZdICgpIC0+IGJvb2wg
eworICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoRXh0
cmFjdFVuc2lnbmVkQml0ZmllbGQzMiwgRXh0cmFjdFVuc2lnbmVkQml0ZmllbGQ2NCwgbV92YWx1
ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKG9wY29kZSwgQXJn
OjpUbXAsIEFyZzo6SW1tLCBBcmc6OkltbSwgQXJnOjpUbXApKSAKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChsZWZ0LT5vcGNvZGUoKSAhPSBC
aXRBbmQgfHwgIWNhbkJlSW50ZXJuYWwobGVmdCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICAgICAgICAgIFZhbHVlKiBuVmFsdWUgPSBsZWZ0LT5jaGlsZCgw
KTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbWFza1ZhbHVlID0gbGVmdC0+Y2hpbGQoMSk7Cisg
ICAgICAgICAgICAgICAgVmFsdWUqIGxzYlZhbHVlID0gcmlnaHQ7CisgICAgICAgICAgICAgICAg
aWYgKG1fbG9ja2VkLmNvbnRhaW5zKG5WYWx1ZSkgfHwgIW1hc2tWYWx1ZS0+aGFzSW50KCkgfHwg
IWltbShsc2JWYWx1ZSkgfHwgbHNiVmFsdWUtPmFzSW50KCkgPCAwKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBsc2IgPSBsc2JW
YWx1ZS0+YXNJbnQoKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBtYXNrID0gbWFza1ZhbHVl
LT5hc0ludCgpOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IG1hc2tTaGlmdEFtb3VudCA9IFdU
Rjo6Y291bnRUcmFpbGluZ1plcm9zKG1hc2spOworICAgICAgICAgICAgICAgIG1hc2sgPj49IG1h
c2tTaGlmdEFtb3VudDsKKyAgICAgICAgICAgICAgICBpZiAoIW1hc2sgfHwgbWFzayAmIChtYXNr
ICsgMSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICB1aW50NjRfdCB3aWR0aCA9IFdURjo6Yml0Q291bnQobWFzayk7CisgICAgICAgICAgICAgICAg
dWludDY0X3QgZGF0YXNpemUgPSBvcGNvZGUgPT0gRXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMiA/
IDMyIDogNjQ7CisgICAgICAgICAgICAgICAgaWYgKGxzYiArIHdpZHRoID4gZGF0YXNpemUpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIGFwcGVu
ZChvcGNvZGUsIHRtcChuVmFsdWUpLCBpbW0obHNiVmFsdWUpLCBpbW0od2lkdGgpLCB0bXAobV92
YWx1ZSkpOworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHRy
eUFwcGVuZFVCRlgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGFw
cGVuZFNoaWZ0PFVyc2hpZnQzMiwgVXJzaGlmdDY0PihsZWZ0LCByaWdodCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVk
dWNlU3RyZW5ndGguY3BwCmluZGV4IDNkZGFkZTc3MDhlYjRjN2I0MmM1N2JiYTA2MjljNmU5ZmRm
NjU4ZmQuLjU2ZTliMmEwMjk0NmFhZjcxZWI3ODVmOTA2YmQwZDlkYmUwYzg3Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTYyNyw2ICs2
MjcsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1fdmFs
dWUtPmlzSW50ZWdlcigpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTdWIoTmVn
KHZhbHVlKSwgMSkKKyAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEJpdFhvcih2YWx1ZSwg
LTEpCisgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBO
ZWcgJiYgbV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDEpKSB7CisgICAgICAgICAgICAgICAgICAg
IFZhbHVlKiBtaW51c09uZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxk
KDApLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDMyKQorICAgICAgICAgICAgICAgICAgICAgICAg
bWludXNPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3QzMlZhbHVlPihtX2luZGV4LCBt
X3ZhbHVlLT5vcmlnaW4oKSwgLTEpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICBtaW51c09uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdDY0
VmFsdWU+KG1faW5kZXgsIG1fdmFsdWUtPm9yaWdpbigpLCAtMSk7CisgICAgICAgICAgICAgICAg
ICAgIHJlcGxhY2VXaXRoTmV3PFZhbHVlPihCaXRYb3IsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3Zh
bHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCksIG1pbnVzT25lKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlz
OiBTdWIodmFsdWUsIGNvbnN0YW50KQogICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQWRk
KHZhbHVlLCAtY29uc3RhbnQpCiAgICAgICAgICAgICAgICAgaWYgKFZhbHVlKiBuZWdhdGVkQ29u
c3RhbnQgPSBtX3ZhbHVlLT5jaGlsZCgxKS0+bmVnQ29uc3RhbnQobV9wcm9jKSkgewpAQCAtMTAz
Nyw2ICsxMDQ5LDM3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQml0QW5kKFpTaHIodmFsdWUsIHNo
aWZ0QW1vdW50KSwgbWFzaykKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogWlNocihCaXRBbmQo
dmFsdWUsIG1hc2tTaGlmdCksIHNoaWZ0QW1vdW50KQorICAgICAgICAgICAgLy8gQ29uZGl0aW9u
czoKKyAgICAgICAgICAgIC8vIDEuIG1hc2sgPSAoMSA8PCB3aWR0aCkgLSAxCisgICAgICAgICAg
ICAvLyAyLiBtYXNrU2hpZnQgPSBtYXNrIDw8IGxzYgorICAgICAgICAgICAgLy8gMy4gMCA8PSBz
aGlmdEFtb3VudCA8IGRhdGFzaXplCisgICAgICAgICAgICAvLyA0LiAwIDwgd2lkdGggPCBkYXRh
c2l6ZQorICAgICAgICAgICAgLy8gNS4gc2hpZnRBbW91bnQgKyB3aWR0aCA8PSBkYXRhc2l6ZQor
ICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBaU2hyCisgICAg
ICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpLT5oYXNJbnQoKQorICAg
ICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgxKS0+YXNJbnQoKSA+PSAw
CisgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMSktPmhhc0ludCgpKSB7CisgICAg
ICAgICAgICAgICAgdWludDY0X3Qgc2hpZnRBbW91bnQgPSBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hp
bGQoMSktPmFzSW50KCk7CisgICAgICAgICAgICAgICAgdWludDY0X3QgbWFzayA9IG1fdmFsdWUt
PmNoaWxkKDEpLT5hc0ludCgpOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IHdpZHRoID0gV1RG
OjpiaXRDb3VudChtYXNrKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG1f
dmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDY0ID8gNjQgOiAzMjsKKyAg
ICAgICAgICAgICAgICBib29sIGlzVmFsaWRTaGlmdEFtb3VudCA9IHNoaWZ0QW1vdW50IDwgZGF0
YXNpemU7CisgICAgICAgICAgICAgICAgYm9vbCBpc1ZhbGlkTWFzayA9IG1hc2sgJiYgIShtYXNr
ICYgKG1hc2sgKyAxKSkgJiYgd2lkdGggPCBkYXRhc2l6ZTsKKyAgICAgICAgICAgICAgICBpZiAo
aXNWYWxpZFNoaWZ0QW1vdW50ICYmIGlzVmFsaWRNYXNrICYmIHNoaWZ0QW1vdW50ICsgd2lkdGgg
PD0gZGF0YXNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgbWFza1NoaWZ0ID0g
bWFzayA8PCBzaGlmdEFtb3VudDsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG1hc2tTaGlm
dFZhbHVlOworICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YXNpemUgPT0gMzIpCisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXNrU2hpZnRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxD
b25zdDMyVmFsdWU+KG1faW5kZXgsIG1fdmFsdWUtPm9yaWdpbigpLCBtYXNrU2hpZnQpOworICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtYXNrU2hpZnRW
YWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdDY0VmFsdWU+KG1faW5kZXgsIG1fdmFs
dWUtPm9yaWdpbigpLCBtYXNrU2hpZnQpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogYml0
QW5kVmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIEJpdEFuZCwg
bV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKSwgbWFza1NoaWZ0
VmFsdWUpOworICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aE5ldzxWYWx1ZT4oWlNociwg
bV92YWx1ZS0+b3JpZ2luKCksIGJpdEFuZFZhbHVlLCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQo
MSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQml0QW5kKFpTaHIodmFsdWUs
IHNoaWZ0QW1vdW50KSwgbWFzaykKICAgICAgICAgICAgIC8vIENvbmRpdGlvbnM6CiAgICAgICAg
ICAgICAvLyAxLiBtYXNrID0gKDEgPDwgd2lkdGgpIC0gMQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggYTZhMTU4ODY3M2E0MjUxYjMxNGY0
MGI2NzFlOGRjMzRlYTJkNTQ2MS4uZjQ0Y2JmMGY2NmUwNTQ3NGRmNTQ3YjAwNTU5NzJmZGYwMTQz
NjkxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUu
b3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNv
ZGVzCkBAIC0zNjMsMjQgKzM2Myw2IEBAIEFuZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICB4ODY6
IEltbSwgQWRkcgogICAgIHg4NjogSW1tLCBJbmRleAogCi1hcm02NDogVWJmeDMyIFU6RzozMiwg
VTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKLSAgICBUbXAsIEltbSwgSW1tLCBUbXAKLQotYXJtNjQ6
IFViZng2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKLSAgICBUbXAsIEltbSwgSW1t
LCBUbXAKLQotYXJtNjQ6IFViZml6MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgot
ICAgIFRtcCwgSW1tLCBJbW0sIFRtcAotCi1hcm02NDogVWJmaXo2NCBVOkc6NjQsIFU6RzozMiwg
VTpHOjMyLCBEOkc6NjQKLSAgICBUbXAsIEltbSwgSW1tLCBUbXAKLQotYXJtNjQ6IEJpdEZpZWxk
SW5zZXJ0MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgotICAgIFRtcCwgSW1tLCBJ
bW0sIFRtcAotCi1hcm02NDogQml0RmllbGRJbnNlcnQ2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMy
LCBEOkc6NjQKLSAgICBUbXAsIEltbSwgSW1tLCBUbXAKLQogNjQ6IEFuZDY0IFU6Rzo2NCwgVTpH
OjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCiAgICAgYXJtNjQ6IEJpdEltbTY0LCBUbXAs
IFRtcApAQCAtODMwLDYgKzgxMiw0OCBAQCB4ODZfNjQ6IFhjaGc2NCBVRDpHOjY0LCBVRDpHOjY0
IC9lZmZlY3RzCiAgICAgVG1wLCBBZGRyCiAgICAgVG1wLCBJbmRleAogCithcm02NDogRXh0cmFj
dFVuc2lnbmVkQml0ZmllbGQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAg
VG1wLCBJbW0sIEltbSwgVG1wCisKK2FybTY0OiBFeHRyYWN0VW5zaWduZWRCaXRmaWVsZDY0IFU6
Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCith
cm02NDogSW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyIFU6RzozMiwgVTpHOjMyLCBVOkc6
MzIsIFpEOkc6MzIKKyAgICBUbXAsIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IEluc2VydFVuc2ln
bmVkQml0ZmllbGRJblplcm82NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKKyAgICBU
bXAsIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IEluc2VydEJpdEZpZWxkMzIgVTpHOjMyLCBVOkc6
MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCithcm02NDogSW5z
ZXJ0Qml0RmllbGQ2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKKyAgICBUbXAsIElt
bSwgSW1tLCBUbXAKKworYXJtNjQ6IENsZWFyQml0RmllbGQzMiBVOkc6MzIsIFU6RzozMiwgWkQ6
RzozMgorICAgIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IENsZWFyQml0RmllbGQ2NCBVOkc6MzIs
IFU6RzozMiwgRDpHOjY0CisgICAgSW1tLCBJbW0sIFRtcAorCithcm02NDogQ2xlYXJCaXRzV2l0
aE1hc2szMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wLCBUbXAKKworYXJt
NjQ6IENsZWFyQml0c1dpdGhNYXNrNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwg
VG1wLCBUbXAKKworYXJtNjQ6IE9yTm90MzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBU
bXAsIFRtcCwgVG1wCisKK2FybTY0OiBPck5vdDY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAg
ICBUbXAsIFRtcCwgVG1wCisKK2FybTY0OiBFeHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDMy
IFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIEltbSwgSW1tLCBUbXAK
KworYXJtNjQ6IEV4dHJhY3RJbnNlcnRCaXRmaWVsZEF0TG93RW5kNjQgVTpHOjY0LCBVOkc6MzIs
IFU6RzozMiwgRDpHOjY0CisgICAgVG1wLCBJbW0sIEltbSwgVG1wCisKICMgVGhlIGZpcnN0IG9w
ZXJhbmQgaXMgcmF4LgogIyBGSVhNRTogVGhpcyBmb3JtdWxhdGlvbiBtZWFucyB0aGF0IHRoZSBi
b29sZWFuIHJlc3VsdCBjYW5ub3QgYmUgcHV0IGluIGVheCwgZXZlbiB0aG91Z2ggYWxsIHVzZXJz
CiAjIG9mIHRoaXMgd291bGQgYmUgT0sgd2l0aCB0aGF0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
My5oCmluZGV4IDQ0YzBhNTBiYTExMjkwY2U2MWU0OGQ2ODNhNDFjZWQxYmJiNWMyNTYuLjhlZGJk
ZWZlODdiN2Y1NWRjZjJkYzUyNGFlYjAwMDZiOGZkMWZhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzLmgKQEAgLTQyOCw4ICs0MjgsMTQgQEAgdm9pZCB0ZXN0VWJmaXo2NEFuZFNoaWZ0VmFs
dWVNYXNrKCk7CiB2b2lkIHRlc3RVYmZpejY0QW5kU2hpZnRNYXNrVmFsdWUoKTsKIHZvaWQgdGVz
dFViZml6NjRTaGlmdEFuZCgpOwogdm9pZCB0ZXN0VWJmaXo2NEFuZFNoaWZ0KCk7Ci12b2lkIHRl
c3RCaXRGaWVsZEluc2VydDMyKCk7Ci12b2lkIHRlc3RCaXRGaWVsZEluc2VydDY0KCk7Cit2b2lk
IHRlc3RJbnNlcnRCaXRGaWVsZDMyKCk7Cit2b2lkIHRlc3RJbnNlcnRCaXRGaWVsZDY0KCk7Cit2
b2lkIHRlc3RFeHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDMyKCk7Cit2b2lkIHRlc3RFeHRy
YWN0SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDY0KCk7Cit2b2lkIHRlc3RCSUMzMigpOwordm9pZCB0
ZXN0QklDNjQoKTsKK3ZvaWQgdGVzdE9yTm90MzIoKTsKK3ZvaWQgdGVzdE9yTm90NjQoKTsKIHZv
aWQgdGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazMyKCk7CiB2b2lkIHRlc3RCaXRB
bmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2s2NCgpOwogdm9pZCB0ZXN0QmFzaWNTZWxlY3QoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCmluZGV4IDk0YTdlMzRjYzdkODA5ZGM5
MmQwZGNkNDcyOTRlZmJiMDMxN2ZjZWQuLmNlOGExZjc3YjJhMmI5YjY5Mjg4MzBmZjU0MTQ0MDE2
YzBjMzYyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcApAQCAtMzE1OCwx
MyArMzE1OCwxMyBAQCB2b2lkIHRlc3RVYmZpejY0QW5kU2hpZnQoKQogICAgIH0KIH0KIAotdm9p
ZCB0ZXN0Qml0RmllbGRJbnNlcnQzMigpCit2b2lkIHRlc3RJbnNlcnRCaXRGaWVsZDMyKCkKIHsK
ICAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKICAgICAgICAg
cmV0dXJuOwogICAgIHVpbnQzMl90IGQgPSAweGYwZjBmMGYwOwogICAgIHVpbnQzMl90IG4gPSAw
eGZmZmZmZmZmOwotICAgIFZlY3Rvcjx1aW50MzJfdD4gbHNicyA9IHsgMSwgMiwgMTQsIDMwLCAz
MCB9OworICAgIFZlY3Rvcjx1aW50MzJfdD4gbHNicyA9IHsgMiwgMiwgMTQsIDMwLCAzMCB9Owog
ICAgIFZlY3Rvcjx1aW50MzJfdD4gd2lkdGhzID0geyAzMCwgMywgMTcsIDEsIDIgfTsKIAogICAg
IC8vIFRlc3QgUGF0dGVybjogZCA9ICgobiAmIG1hc2sxKSA8PCBsc2IpIHwgKGQgJiBtYXNrMikK
QEAgLTMyMzYsMTMgKzMyMzYsMTMgQEAgdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQzMigpCiAgICAg
fQogfQogCi12b2lkIHRlc3RCaXRGaWVsZEluc2VydDY0KCkKK3ZvaWQgdGVzdEluc2VydEJpdEZp
ZWxkNjQoKQogewogICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAy
KQogICAgICAgICByZXR1cm47CiAgICAgdWludDY0X3QgZCA9IDB4ZjBmMGYwZjBmMGYwZjBmMDsK
ICAgICB1aW50NjRfdCBuID0gMHhmZmZmZmZmZmZmZmZmZmZmOwotICAgIFZlY3Rvcjx1aW50NjRf
dD4gbHNicyA9IHsgMSwgMzAsIDE0LCA2MiwgNjIgfTsKKyAgICBWZWN0b3I8dWludDY0X3Q+IGxz
YnMgPSB7IDIsIDMwLCAxNCwgNjIsIDYyIH07CiAgICAgVmVjdG9yPHVpbnQ2NF90PiB3aWR0aHMg
PSB7IDYyLCAzMywgMTcsIDEsIDIgfTsKIAogICAgIC8vIFRlc3QgUGF0dGVybjogZCA9ICgobiAm
IG1hc2sxKSA8PCBsc2IpIHwgKGQgJiBtYXNrMikKQEAgLTMzMDYsNiArMzMwNiwzOTkgQEAgdm9p
ZCB0ZXN0Qml0RmllbGRJbnNlcnQ2NCgpCiAgICAgfQogfQogCit2b2lkIHRlc3RFeHRyYWN0SW5z
ZXJ0Qml0ZmllbGRBdExvd0VuZDMyKCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0
QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworICAgIHVpbnQzMl90IGQgPSAweGYw
ZjBmMGYwOworICAgIHVpbnQzMl90IG4gPSAweGZmZmZmZmZmOworICAgIFZlY3Rvcjx1aW50MzJf
dD4gbHNicyA9IHsgMiwgMTAsIDE0LCAzMCB9OworICAgIFZlY3Rvcjx1aW50MzJfdD4gd2lkdGhz
ID0geyAzMCwgMTEsIDE3LCAyIH07CisKKyAgICAvLyBCRlhJTCBQYXR0ZXJuOiBkID0gKChuID4+
IGxzYikgJiBtYXNrMSkgfCAoZCAmIG1hc2syKQorICAgIC8vIFdoZXJlOiBtYXNrMSA9ICgoMSA8
PCB3aWR0aCkgLSAxKQorICAgIC8vICAgICAgICBtYXNrMiA9IH5tYXNrMQorICAgIGF1dG8gdGVz
dDEgPSBbJl0gKHVpbnQzMl90IGxzYiwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90IG1hc2syKSAt
PiB1aW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBkVmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBsc2JWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsc2IpOwor
ICAgICAgICBWYWx1ZSogbWFza1ZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBtYXNrMSk7CisgICAgICAgIFZhbHVlKiBtYXNrVmFsdWUyID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG1hc2syKTsKKworICAg
ICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNo
ciwgT3JpZ2luKCksIG5WYWx1ZSwgbHNiVmFsdWUpOworICAgICAgICBWYWx1ZSogbGVmdEFuZFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBzaGlm
dFZhbHVlLCBtYXNrVmFsdWUxKTsKKyAgICAgICAgVmFsdWUqIHJpZ2h0QW5kVmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGRWYWx1ZSwgbWFza1Zh
bHVlMik7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgbGVmdEFuZFZhbHVlLCByaWdodEFuZFZhbHVlKSk7
CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChp
c0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJmeGls
Iik7CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDMyX3Q+KCpjb2RlLCBkLCBuKTsKKyAgICB9
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsc2JzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIHVpbnQzMl90IGxzYiA9IGxzYnMuYXQoaSk7CisgICAgICAgIHVpbnQzMl90IG1hc2sxID0g
KDFVIDw8IHdpZHRocy5hdChpKSkgLSAxVTsKKyAgICAgICAgdWludDMyX3QgbWFzazIgPSB+bWFz
azE7CisgICAgICAgIENIRUNLKHRlc3QxKGxzYiwgbWFzazEsIG1hc2syKSA9PSAoKChuID4+IGxz
YikgJiBtYXNrMSkgfCAoZCAmIG1hc2syKSkpOworICAgIH0KKworICAgIC8vIEJGWElMIFBhdHRl
cm46IGQgPSAoKG4gJiBtYXNrMSkgPj4gbHNiKSB8IChkICYgbWFzazIpCisgICAgLy8gV2hlcmU6
IG1hc2sxID0gKCgxIDw8IHdpZHRoKSAtIDEpIDw8IGxzYgorICAgIC8vICAgICAgICBtYXNrMiA9
IH4obWFzazEgPj4gbHNiKQorICAgIGF1dG8gdGVzdDIgPSBbJl0gKHVpbnQzMl90IGxzYiwgdWlu
dDMyX3QgbWFzazEsIHVpbnQzMl90IG1hc2syKSAtPiB1aW50MzJfdCB7CisgICAgICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgICAgIFZhbHVlKiBkVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKSk7CisgICAgICAgIFZhbHVlKiBsc2JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBsc2IpOworICAgICAgICBWYWx1ZSogbWFza1ZhbHVlMSA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrMSk7Cisg
ICAgICAgIFZhbHVlKiBtYXNrVmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIG1hc2syKTsKKworICAgICAgICBWYWx1ZSogbGVmdEFuZFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBuVmFsdWUsIG1h
c2tWYWx1ZTEpOworICAgICAgICBWYWx1ZSogcmlnaHRBbmRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgZFZhbHVlLCBtYXNrVmFsdWUyKTsKKyAg
ICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpT
aHIsIE9yaWdpbigpLCBsZWZ0QW5kVmFsdWUsIGxzYlZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigp
LCBzaGlmdFZhbHVlLCByaWdodEFuZFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJmeGlsIik7CisgICAgICAgIHJldHVybiBpbnZva2U8
dWludDMyX3Q+KCpjb2RlLCBkLCBuKTsKKyAgICB9OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsc2JzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHVpbnQzMl90IGxzYiA9IGxzYnMuYXQo
aSk7CisgICAgICAgIHVpbnQzMl90IG1hc2sxID0gKCgxVSA8PCB3aWR0aHMuYXQoaSkpIC0gMVUp
IDw8IGxzYjsKKyAgICAgICAgdWludDMyX3QgbWFzazIgPSB+KG1hc2sxID4+IGxzYik7CisgICAg
ICAgIENIRUNLKHRlc3QyKGxzYiwgbWFzazEsIG1hc2syKSA9PSAoKChuICYgbWFzazEpID4+IGxz
YikgfCAoZCAmIG1hc2syKSkpOworICAgIH0KK30KKwordm9pZCB0ZXN0RXh0cmFjdEluc2VydEJp
dGZpZWxkQXRMb3dFbmQ2NCgpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0
TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICB1aW50NjRfdCBkID0gMHhmMGYwZjBm
MGYwZjBmMGYwOworICAgIHVpbnQ2NF90IG4gPSAweGZmZmZmZmZmZmZmZmZmZmY7CisgICAgVmVj
dG9yPHVpbnQ2NF90PiBsc2JzID0geyAyLCAzMCwgMTQsIDYyIH07CisgICAgVmVjdG9yPHVpbnQ2
NF90PiB3aWR0aHMgPSB7IDYyLCAzMywgMTcsIDIgfTsKKworICAgIC8vIEJGWElMIFBhdHRlcm46
IGQgPSAoKG4gPj4gbHNiKSAmIG1hc2sxKSB8IChkICYgbWFzazIpCisgICAgLy8gV2hlcmU6IG1h
c2sxID0gKCgxIDw8IHdpZHRoKSAtIDEpCisgICAgLy8gICAgICAgIG1hc2syID0gfm1hc2sxCisg
ICAgYXV0byB0ZXN0MSA9IFsmXSAodWludDY0X3QgbHNiLCB1aW50NjRfdCBtYXNrMSwgdWludDY0
X3QgbWFzazIpIC0+IHVpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGRW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGxzYlZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxzYik7CisgICAgICAgIFZhbHVlKiBtYXNrVmFsdWUx
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG1hc2sxKTsK
KyAgICAgICAgVmFsdWUqIG1hc2tWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgbWFzazIpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgblZhbHVlLCBsc2JW
YWx1ZSk7CisgICAgICAgIFZhbHVlKiBsZWZ0QW5kVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIHNoaWZ0VmFsdWUsIG1hc2tWYWx1ZTEpOworICAg
ICAgICBWYWx1ZSogcmlnaHRBbmRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0QW5kLCBPcmlnaW4oKSwgZFZhbHVlLCBtYXNrVmFsdWUyKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigp
LCBsZWZ0QW5kVmFsdWUsIHJpZ2h0QW5kVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAiYmZ4aWwiKTsKKyAgICAgICAgcmV0dXJuIGludm9r
ZTx1aW50NjRfdD4oKmNvZGUsIGQsIG4pOworICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxzYnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgdWludDY0X3QgbHNiID0gbHNicy5h
dChpKTsKKyAgICAgICAgdWludDY0X3QgbWFzazEgPSAoMVVMTCA8PCB3aWR0aHMuYXQoaSkpIC0g
MVVMTDsKKyAgICAgICAgdWludDY0X3QgbWFzazIgPSB+bWFzazE7CisgICAgICAgIENIRUNLKHRl
c3QxKGxzYiwgbWFzazEsIG1hc2syKSA9PSAoKChuID4+IGxzYikgJiBtYXNrMSkgfCAoZCAmIG1h
c2syKSkpOworICAgIH0KKworICAgIC8vIEJGWElMIFBhdHRlcm46IGQgPSAoKG4gJiBtYXNrMSkg
Pj4gbHNiKSB8IChkICYgbWFzazIpCisgICAgLy8gV2hlcmU6IG1hc2sxID0gKCgxIDw8IHdpZHRo
KSAtIDEpIDw8IGxzYgorICAgIC8vICAgICAgICBtYXNrMiA9IH4obWFzazEgPj4gbHNiKQorICAg
IGF1dG8gdGVzdDIgPSBbJl0gKHVpbnQ2NF90IGxzYiwgdWludDY0X3QgbWFzazEsIHVpbnQ2NF90
IG1hc2syKSAtPiB1aW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBkVmFs
dWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7CisgICAgICAgIFZhbHVlKiBsc2JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBsc2IpOworICAgICAgICBWYWx1ZSogbWFza1ZhbHVlMSA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrMSk7Cisg
ICAgICAgIFZhbHVlKiBtYXNrVmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIG1hc2syKTsKKworICAgICAgICBWYWx1ZSogbGVmdEFuZFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBuVmFsdWUsIG1h
c2tWYWx1ZTEpOworICAgICAgICBWYWx1ZSogcmlnaHRBbmRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgZFZhbHVlLCBtYXNrVmFsdWUyKTsKKyAg
ICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpT
aHIsIE9yaWdpbigpLCBsZWZ0QW5kVmFsdWUsIGxzYlZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigp
LCBzaGlmdFZhbHVlLCByaWdodEFuZFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJmeGlsIik7CisgICAgICAgIHJldHVybiBpbnZva2U8
dWludDY0X3Q+KCpjb2RlLCBkLCBuKTsKKyAgICB9OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsc2JzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHVpbnQ2NF90IGxzYiA9IGxzYnMuYXQo
aSk7CisgICAgICAgIHVpbnQ2NF90IG1hc2sxID0gKCgxVUxMIDw8IHdpZHRocy5hdChpKSkgLSAx
VUxMKSA8PCBsc2I7CisgICAgICAgIHVpbnQ2NF90IG1hc2syID0gfihtYXNrMSA+PiBsc2IpOwor
ICAgICAgICBDSEVDSyh0ZXN0Mihsc2IsIG1hc2sxLCBtYXNrMikgPT0gKCgobiAmIG1hc2sxKSA+
PiBsc2IpIHwgKGQgJiBtYXNrMikpKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdEJJQzMyKCkKK3sK
KyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAmICgtbSAtIDEpCisgICAgYXV0
byB0ZXN0MSA9IFsmXSAoaW50MzJfdCBuLCBpbnQzMl90IG0pIC0+IGludDMyX3QgeworICAgICAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogY29uc3QxID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOworCisgICAgICAgIFZhbHVlKiBuZWdWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgbVZhbHVlKTsK
KyAgICAgICAgVmFsdWUqIHN1YlZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
dWIsIE9yaWdpbigpLCBuZWdWYWx1ZSwgY29uc3QxKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIG5W
YWx1ZSwgc3ViVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCAiYmljIik7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50MzJfdD4oKmNvZGUs
IG4sIG0pOworICAgIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICYgKG0gXiAtMSkK
KyAgICBhdXRvIHRlc3QyID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSkgLT4gaW50MzJfdCB7
CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBtaW51c09uZVZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKTsKKworICAgICAg
ICBWYWx1ZSogeG9yVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwg
T3JpZ2luKCksIG1WYWx1ZSwgbWludXNPbmVWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBu
VmFsdWUsIHhvclZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbigqY29kZSwgImJpYyIpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+KCpjb2Rl
LCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsK
KyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIENI
RUNLKHRlc3QxKG4udmFsdWUsIG0udmFsdWUpID09IChuLnZhbHVlICYgKC1tLnZhbHVlIC0gMSkp
KTsKKyAgICAgICAgICAgIENIRUNLKHRlc3QyKG4udmFsdWUsIG0udmFsdWUpID09IChuLnZhbHVl
ICYgKG0udmFsdWUgXiAtMSkpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QklD
NjQoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICYgKC1tIC0gMSkK
KyAgICBhdXRvIHRlc3QxID0gWyZdIChpbnQ2NF90IG4sIGludDY0X3QgbSkgLT4gaW50NjRfdCB7
CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVl
KiBjb25zdDEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MSk7CisKKyAgICAgICAgVmFsdWUqIG5lZ1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBOZWcsIE9yaWdpbigpLCBtVmFsdWUpOworICAgICAgICBWYWx1ZSogc3ViVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5lZ1ZhbHVlLCBjb25z
dDEpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgblZhbHVlLCBzdWJWYWx1ZSkpOworCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKQor
ICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJiaWMiKTsKKyAgICAgICAg
cmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIC8vIFRl
c3QgUGF0dGVybjogZCA9IG4gJiAobSBeIC0xKQorICAgIGF1dG8gdGVzdDIgPSBbJl0gKGludDY0
X3QgbiwgaW50NjRfdCBtKSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFs
dWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIG1pbnVzT25lVmFsdWUgPSByb290LT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpOworCisgICAgICAgIFZhbHVl
KiB4b3JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4o
KSwgbVZhbHVlLCBtaW51c09uZVZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIG5WYWx1ZSwg
eG9yVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAg
ICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpj
b2RlLCAiYmljIik7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50NjRfdD4oKmNvZGUsIG4sIG0p
OworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAg
ICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgQ0hFQ0sodGVz
dDEobi52YWx1ZSwgbS52YWx1ZSkgPT0gKG4udmFsdWUgJiAoLW0udmFsdWUgLSAxTEwpKSk7Cisg
ICAgICAgICAgICBDSEVDSyh0ZXN0MihuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSAmICht
LnZhbHVlIF4gLTFMTCkpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0T3JOb3Qz
MigpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gfCAoLW0gLSAxKQor
ICAgIGF1dG8gdGVzdDEgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBtKSAtPiBpbnQzMl90IHsK
KyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGNvbnN0MSA9IHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKworICAgICAgICBWYWx1ZSog
bmVnVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG1W
YWx1ZSk7CisgICAgICAgIFZhbHVlKiBzdWJWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgU3ViLCBPcmlnaW4oKSwgbmVnVmFsdWUsIGNvbnN0MSk7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
IAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRPciwgT3JpZ2lu
KCksIG5WYWx1ZSwgc3ViVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oKmNvZGUsICJvcm4iKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQzMl90
PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gfCAo
bSBeIC0xKQorICAgIGF1dG8gdGVzdDIgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBtKSAtPiBp
bnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIG1pbnVzT25lVmFs
dWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpOwor
CisgICAgICAgIFZhbHVlKiB4b3JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0WG9yLCBPcmlnaW4oKSwgbVZhbHVlLCBtaW51c09uZVZhbHVlKTsKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmln
aW4oKSwgblZhbHVlLCB4b3JWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oKmNvZGUsICJvcm4iKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQzMl90
PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5k
cygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAg
ICAgICBDSEVDSyh0ZXN0MShuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSB8ICgtbS52YWx1
ZSAtIDEpKSk7CisgICAgICAgICAgICBDSEVDSyh0ZXN0MihuLnZhbHVlLCBtLnZhbHVlKSA9PSAo
bi52YWx1ZSB8IChtLnZhbHVlIF4gLTEpKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
dGVzdE9yTm90NjQoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVs
KCkgPCAyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIHwg
KC1tIC0gMSkKKyAgICBhdXRvIHRlc3QxID0gWyZdIChpbnQ2NF90IG4sIGludDY0X3QgbSkgLT4g
aW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAg
ICAgIFZhbHVlKiBjb25zdDEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMSk7CisKKyAgICAgICAgVmFsdWUqIG5lZ1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBtVmFsdWUpOworICAgICAgICBWYWx1ZSogc3Vi
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5lZ1Zh
bHVlLCBjb25zdDEpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBuVmFsdWUsIHN1YlZhbHVlKSk7CisK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FS
TTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm9ybiIpOwor
ICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisg
ICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiB8IChtIF4gLTEpCisgICAgYXV0byB0ZXN0MiA9IFsm
XSAoaW50NjRfdCBuLCBpbnQ2NF90IG0pIC0+IGludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAg
ICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogbWludXNPbmVWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7CisKKyAgICAg
ICAgVmFsdWUqIHhvclZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3Is
IE9yaWdpbigpLCBtVmFsdWUsIG1pbnVzT25lVmFsdWUpOworICAgICAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBu
VmFsdWUsIHhvclZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbigqY29kZSwgIm9ybiIpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2Rl
LCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsK
KyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIENI
RUNLKHRlc3QxKG4udmFsdWUsIG0udmFsdWUpID09IChuLnZhbHVlIHwgKC1tLnZhbHVlIC0gMUxM
KSkpOworICAgICAgICAgICAgQ0hFQ0sodGVzdDIobi52YWx1ZSwgbS52YWx1ZSkgPT0gKG4udmFs
dWUgfCAobS52YWx1ZSBeIC0xTEwpKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgdGVz
dEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazMyKCkKIHsKICAgICAvLyBUdXJuIHRoaXM6
ICh0bXAgPj4gaW1tKSAmIG1hc2sgCkBAIC00MTk4LDggKzQ1OTEsMTQgQEAgdm9pZCBhZGRCaXRU
ZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+
PiYgdGFza3MpCiAgICAgUlVOKHRlc3RVYmZpejY0QW5kU2hpZnRNYXNrVmFsdWUoKSk7CiAgICAg
UlVOKHRlc3RVYmZpejY0U2hpZnRBbmQoKSk7CiAgICAgUlVOKHRlc3RVYmZpejY0QW5kU2hpZnQo
KSk7Ci0gICAgUlVOKHRlc3RCaXRGaWVsZEluc2VydDMyKCkpOwotICAgIFJVTih0ZXN0Qml0Rmll
bGRJbnNlcnQ2NCgpKTsKKyAgICBSVU4odGVzdEluc2VydEJpdEZpZWxkMzIoKSk7CisgICAgUlVO
KHRlc3RJbnNlcnRCaXRGaWVsZDY0KCkpOworICAgIFJVTih0ZXN0RXh0cmFjdEluc2VydEJpdGZp
ZWxkQXRMb3dFbmQzMigpKTsKKyAgICBSVU4odGVzdEV4dHJhY3RJbnNlcnRCaXRmaWVsZEF0TG93
RW5kNjQoKSk7CisgICAgUlVOKHRlc3RCSUMzMigpKTsKKyAgICBSVU4odGVzdEJJQzY0KCkpOwor
ICAgIFJVTih0ZXN0T3JOb3QzMigpKTsKKyAgICBSVU4odGVzdE9yTm90NjQoKSk7CiAgICAgUlVO
KHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2szMigpKTsKICAgICBSVU4odGVzdEJp
dEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazY0KCkpOwogICAgIFJVTih0ZXN0Qml0QW5kQXJn
cyg0MywgNDMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAppbmRleCAyN2I2MzFkNGNjNzNhZDViYTAxY2RjOTI4Yjc3OGE0MzliYzBlZGYyLi4zZDA4
NzI4MDgyN2QyYWVmN2MzMmVlZDJhZmQxODYyZjRjMzlhZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNjc1NCw3ICsxNjc1NCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBtZXJnZS0+YXBwZW5kU29tZVJlZ2lzdGVyKHB0cik7CiAg
ICAgICAgICAgICBtZXJnZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAg
aml0Lm1vdmUocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAg
ICAgIGppdC5iaXRGaWVsZEluc2VydDY0KHBhcmFtc1sxXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoMCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDY0IC0gTWFjcm9Bc3Nl
bWJsZXI6Om1heE51bWJlck9mQWxsb3dlZFBBQ0JpdHMpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAg
ICAgICAgICAgICAgIGppdC5pbnNlcnRCaXRGaWVsZDY0KHBhcmFtc1sxXS5ncHIoKSwgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDY0IC0g
TWFjcm9Bc3NlbWJsZXI6Om1heE51bWJlck9mQWxsb3dlZFBBQ0JpdHMpLCBwYXJhbXNbMF0uZ3By
KCkpOwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIHJlc3VsdCA9IGRvVW50YWdBcnJh
eVB0cihtZXJnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAKaW5kZXggNDk4MTdhN2FkZDU0MGI3MTZmZWUyNmRlNDM3NmM2MTA4MjdlNTdlMi4uZDM2
ZWI3MWI5YWRkMzZkNDQyNjQ5ODRiODdkZWQyMDIwYjczYTA2NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMTExMSw3ICsxMTExLDcgQEAg
dm9pZCBBc3NlbWJseUhlbHBlcnM6OmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpLaW5k
IGtpbmQsIEdQUlJlZyBzdG9yYWdlKQogICAgIGFkZFB0cihUcnVzdGVkSW1tUHRyKEdpZ2FjYWdl
OjpiYXNlUHRyKGtpbmQpKSwgc3RvcmFnZSk7CiAjaWYgQ1BVKEFSTTY0RSkKICAgICBpZiAoa2lu
ZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKQotICAgICAgICBiaXRGaWVsZEluc2VydDY0KHN0b3Jh
Z2UsIFRydXN0ZWRJbW0zMigwKSwgVHJ1c3RlZEltbTMyKDY0IC0gbWF4TnVtYmVyT2ZBbGxvd2Vk
UEFDQml0cyksIHRlbXBSZWcpOworICAgICAgICBpbnNlcnRCaXRGaWVsZDY0KHN0b3JhZ2UsIFRy
dXN0ZWRJbW0zMigwKSwgVHJ1c3RlZEltbTMyKDY0IC0gbWF4TnVtYmVyT2ZBbGxvd2VkUEFDQml0
cyksIHRlbXBSZWcpOwogICAgIGlmIChza2lwLmlzU2V0KCkpCiAgICAgICAgIHNraXAubGluayh0
aGlzKTsKICNlbmRpZgpAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6
OmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWcoR2lnYWNhZ2U6OktpbmQga2luZCwgR1BSUmVnIHN0
b3IKICAgICAgICAgICAgIEFTU0VSVChMb2dpY2FsSW1tZWRpYXRlOjpjcmVhdGU2NChHaWdhY2Fn
ZTo6bWFzayhraW5kKSkuaXNWYWxpZCgpKTsKICAgICAgICAgICAgIGFuZFB0cihUcnVzdGVkSW1t
UHRyKEdpZ2FjYWdlOjptYXNrKGtpbmQpKSwgdGVtcFJlZyk7CiAgICAgICAgICAgICBhZGRQdHIo
c2NyYXRjaCwgdGVtcFJlZyk7Ci0gICAgICAgICAgICBiaXRGaWVsZEluc2VydDY0KHRlbXBSZWcs
IFRydXN0ZWRJbW0zMigwKSwgVHJ1c3RlZEltbTMyKDY0IC0gbWF4TnVtYmVyT2ZBbGxvd2VkUEFD
Qml0cyksIHN0b3JhZ2UpOworICAgICAgICAgICAgaW5zZXJ0Qml0RmllbGQ2NCh0ZW1wUmVnLCBU
cnVzdGVkSW1tMzIoMCksIFRydXN0ZWRJbW0zMig2NCAtIG1heE51bWJlck9mQWxsb3dlZFBBQ0Jp
dHMpLCBzdG9yYWdlKTsKICNlbHNlCiAgICAgICAgICAgICBhbmRQdHIoVHJ1c3RlZEltbVB0cihH
aWdhY2FnZTo6bWFzayhraW5kKSksIHN0b3JhZ2UpOwogICAgICAgICAgICAgYWRkUHRyKHNjcmF0
Y2gsIHN0b3JhZ2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432371</attachid>
            <date>2021-06-28 01:39:01 -0700</date>
            <delta_ts>2021-06-28 19:06:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227202-20210628033859.patch</filename>
            <type>text/plain</type>
            <size>66080</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
M2RjMjc2YWQxOWE3YTc3NTE4MWFlMzdkMThhYTkzNWYxMGQ2ZGZkLi40OWE3NWU4MjRhMDY1MGJi
MDIxNWQ2MzRlNjIzMWQ2OWM3M2IxY2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNDggQEAKKzIwMjEtMDYtMjcgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBhIG5ldyBwYXR0ZXJuIHRvIGluc3RydWN0aW9uIHNlbGVjdG9y
IHRvIHVzZSBCSUMgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHRocmVlIG1vZGlmaWNh
dGlvbnM6CisgICAgICAgICAgICAxLiBBZGQgYml0IGNsZWFyIChCSUMpLCBvciBub3QgKE9STiks
IGFuZCBleHRyYWN0IGFuZCBpbnNlcnQgYml0ZmllbGQgYXQgbG93ZXIgZW5kIChGQlhJTCkgCisg
ICAgICAgICAgICAgICB0byBBaXIgb3Bjb2RlIHRvIHNlcnZlIGludHJ1Y2l0b24gc2VsZWN0b3Iu
CisgICAgICAgICAgICAyLiBBZGQgYml0ZmllbGQgY2xlYXIgKEJGQykgdG8gTWFjcm9Bc3NlbWJs
ZXIuCisgICAgICAgICAgICA0LiBEbyByZWZhY3RvcmluZyAtIHJlbmFtZSBBaXIgb3Bjb2RlcyBh
ZGRlZCBpbiB0aGUgcHJldmlvdXMgcGF0Y2hlcy4KKworICAgICAgICAtLS0tLS0tLS0tLS0tLS0t
LS0KKyAgICAgICAgIyMjIFBhcnQgQSBCSUMgIyMjCisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0t
LQorICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIGJpYyBSZCwgUm4sIFJt
CisKKyAgICAgICAgVGhlIEJJQyAoQml0IENsZWFyKSBpbnN0cnVjdGlvbiBwZXJmb3JtcyBhbiBB
TkQgb3BlcmF0aW9uIG9uIHRoZSBiaXRzIGluIFJuIHdpdGggdGhlIAorICAgICAgICBjb21wbGVt
ZW50cyBvZiB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSB2YWx1ZSBvZiBSbS4gVGhlIGlu
c3RydWN0aW9uIHNlbGVjdG9yIGNhbiAKKyAgICAgICAgdXRpbGl6ZSB0aGlzIHRvIGxvd2VyaW5n
IGNlcnRhaW4gcGF0dGVybnMgaW4gQjMgSVIgYmVmb3JlIGZ1cnRoZXIgQWlyIG9wdGltaXphdGlv
bi4gCisgICAgICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm5zIG9mIHRoaXMgaW5zdHJ1Y3Rpb24g
YXJlOgorCisgICAgICAgIFBhdHRlcm4gMToKKyAgICAgICAgICAgIGQgPSBuICYgKC1tIC0gMSkK
KworICAgICAgICBQYXR0ZXJuIDI6CisgICAgICAgICAgICBkID0gbiAmIChtIF4gLTEpCisKKyAg
ICAgICAgSW4gb3JkZXIgdG8gZ2V0IGJlbmVmaXRzIGZvciBjb21wbGVtZW50IG9wZXJhdGlvbiwg
Y3VycmVudCBpbnN0cnVjdGlvbiBzZWxlY3RvciB1c2VzIAorICAgICAgICBtdm4gaW5zdHJ1Y3Rp
b24gdG8gbG93ZXIgdGhlIHBhdHRlcm4gdmFsdWUgXiAtMS4gVGhlbiwgYSBuZXcgc3RyZW5ndGgg
cmVkdWN0aW9uIHJ1bGUgaXMgCisgICAgICAgIGludHJvZHVjZWQ6CisgICAgICAgICAgICBUdXJu
IHRoaXM6IC12YWx1ZSAtIDEgCisgICAgICAgICAgICBJbnRvIHRoaXM6IHZhbHVlIF4gLTEKKwor
ICAgICAgICBTbywgZCA9IG4gJiAobSBeIC0xKSBpcyBzZWxlY3RlZCBhcyB0aGUgY2Fub25pY2Fs
IGZvcm0uCisKKyAgICAgICAgR2l2ZW4gQjMgSVI6CisgICAgICAgIEludCBAMCA9IEFyZ3VtZW50
UmVnKCV4MCkKKyAgICAgICAgSW50IEAxID0gQXJndW1lbnRSZWcoJXgxKQorICAgICAgICBJbnQg
QDIgPSAtMQorICAgICAgICBJbnQgQDMgPSBCaXRYb3IoQDEsIEAyKQorICAgICAgICBJbnQgQDQg
PSBCaXRBbmQoQDAsIEAzKQorICAgICAgICBWb2lkQDUgPSBSZXR1cm4oQDQsIFRlcm1pbmFsKQor
CisgICAgICAgIEJlZm9yZSBBZGRpbmcgQklDOgorICAgICAgICAvLyBPbGQgb3B0aW1pemVkIEFJ
UgorICAgICAgICBOb3QgJXgxLCAleDEsICAgICAgQDMKKyAgICAgICAgQW5kICV4MCwgJXgxLCAl
eDAsIEA0CisgICAgICAgIFJldCAleDAsICAgICAgICAgICBANQorCisgICAgICAgIEFmdGVyIEFk
ZGluZyBCSUM6CisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAgIEJpYyAleDAs
ICV4MSwgJXgwLCBANAorICAgICAgICBSZXQgJXgwLCAgICAgICAgICAgQDUKKworICAgICAgICAt
LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjIFBhcnQgQSBPUk4gIyMjCisgICAgICAgIC0t
LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAg
IG9ybiBSZCwgUm4sIFJtCisKKyAgICAgICAgQml0d2lzZSBPUiBOT1QgKHNoaWZ0ZWQgcmVnaXN0
ZXIpIHBlcmZvcm1zIGEgYml0d2lzZSAoaW5jbHVzaXZlKSBPUiBvZiBhIHJlZ2lzdGVyIHZhbHVl
IAorICAgICAgICBSbiBhbmQgdGhlIGNvbXBsZW1lbnQgb2YgYW4gb3B0aW9uYWxseS1zaGlmdGVk
IHJlZ2lzdGVyIHZhbHVlIFJtLCBhbmQgd3JpdGVzIHRoZSByZXN1bHQgCisgICAgICAgIHRvIHRo
ZSBkZXN0aW5hdGlvbiByZWdpc3RlciBSZC4KKworICAgICAgICBUaGUgZXF1aXZhbGVudCBwYXR0
ZXJucyBvZiB0aGlzIGluc3RydWN0aW9uIGFyZToKKworICAgICAgICBQYXR0ZXJuIDE6CisgICAg
ICAgICAgICBkID0gbiB8ICgtbSAtIDEpCisKKyAgICAgICAgUGF0dGVybiAyOgorICAgICAgICAg
ICAgZCA9IG4gfCAobSBeIC0xKQorCisgICAgICAgIFRoZW4sIGQgPSBuIHwgKG0gXiAtMSkgaXMg
c2VsZWN0ZWQgYXMgdGhlIGNhbm9uaWNhbCBmb3JtLgorCisgICAgICAgIEdpdmVuIEIzIElSOgor
ICAgICAgICBJbnQgQDAgPSBBcmd1bWVudFJlZygleDApCisgICAgICAgIEludCBAMSA9IEFyZ3Vt
ZW50UmVnKCV4MSkKKyAgICAgICAgSW50IEAyID0gLTEKKyAgICAgICAgSW50IEAzID0gQml0WG9y
KEAxLCBAMikKKyAgICAgICAgSW50IEA0ID0gQml0T3IoQDAsIEAzKQorICAgICAgICBWb2lkQDUg
PSBSZXR1cm4oQDQsIFRlcm1pbmFsKQorCisgICAgICAgIEJlZm9yZSBBZGRpbmcgQklDOgorICAg
ICAgICAvLyBPbGQgb3B0aW1pemVkIEFJUgorICAgICAgICBOb3QgJXgxLCAleDEsICAgICAgQDMK
KyAgICAgICAgT3IgICV4MCwgJXgxLCAleDAsIEA0CisgICAgICAgIFJldCAleDAsICAgICAgICAg
ICBANQorCisgICAgICAgIEFmdGVyIEFkZGluZyBCSUM6CisgICAgICAgIC8vIE5ldyBvcHRpbWl6
ZWQgQUlSCisgICAgICAgIE9ybiAleDAsICV4MSwgJXgwLCBANAorICAgICAgICBSZXQgJXgwLCAg
ICAgICAgICAgQDUKKworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjIyMg
UGFydCBBIEZCWElMICMjIworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBH
aXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIGJmeGlsIFJkLCBSbiwgbHNiLCB3aWR0aAor
CisgICAgICAgIEJpdGZpZWxkIGV4dHJhY3QgYW5kIGluc2VydCBhdCBsb3cgZW5kKEZCWElMKSBj
b3BpZXMgYW55IG51bWJlciBvZiBsb3ctb3JkZXIgYml0cyAKKyAgICAgICAgZnJvbSBhIHNvdXJj
ZSByZWdpc3RlciBpbnRvIHRoZSBzYW1lIG51bWJlciBvZiBhZGphY2VudCBiaXRzIGF0IHRoZSBs
b3cgZW5kIGluIAorICAgICAgICB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIsIGxlYXZpbmcgb3Ro
ZXIgYml0cyB1bmNoYW5nZWQuCisKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybnMgb2Yg
dGhpcyBpbnN0cnVjdGlvbiBhcmU6CisKKyAgICAgICAgUGF0dGVybiAxOgorICAgICAgICBtYXNr
MSA9ICgxIDw8IHdpZHRoKSAtIDEKKyAgICAgICAgbWFzazIgPSB+bWFzazEKKyAgICAgICAgKChu
ID4+IGxzYikgJiBtYXNrMSkgfCAoZCAmIG1hc2syKQorCisgICAgICAgIFBhdHRlcm4gMjoKKyAg
ICAgICAgbWFzazEgPSAoKDEgPDwgd2lkdGgpIC0gMSkgPDwgbHNiCisgICAgICAgIG1hc2syID0g
fihtYXNrMSA+PiBsc2IpCisgICAgICAgICgobiAmIG1hc2sxKSA+PiBsc2IpIHwgKGQgJiBtYXNr
MikKKworICAgICAgICBUaGVuLCBpbnRyb2R1Y2UgYSBzdHJlbmd0aCByZWR1Y3Rpb24gcnVsZQor
ICAgICAgICBUdXJuIHRoaXM6ICh2ID4+IHNoaWZ0QW1vdW50KSAmIG1hc2sKKyAgICAgICAgSW50
byB0aGlzOiAodiAmIG1hc2tTaGlmdCkgPj4gc2hpZnRBbW91bnQKKworICAgICAgICB3aXRoIGNv
bnN0cmFpbnRzOgorICAgICAgICAxLiBtYXNrID0gKDEgPDwgd2lkdGgpIC0gMQorICAgICAgICAy
LiBtYXNrU2hpZnQgPSBtYXNrIDw8IGxzYgorICAgICAgICAzLiAwIDw9IHNoaWZ0QW1vdW50IDwg
ZGF0YXNpemUKKyAgICAgICAgNC4gMCA8IHdpZHRoIDwgZGF0YXNpemUKKyAgICAgICAgNS4gc2hp
ZnRBbW91bnQgKyB3aWR0aCA8PSBkYXRhc2l6ZQorCisgICAgICAgIFRoZSBjYW5vbmljYWwgZm9y
bSB0byBtYXRjaCBGQlhJTCBpcyBkID0gKChuICYgbWFzazEpID4+IGxzYikgfCAoZCAmIG1hc2sy
KS4KKyAgICAgICAgCisgICAgICAgIEdpdmVuIEIzIElSOgorICAgICAgICBJbnQgQDAgPSBBcmd1
bWVudFJlZygleDApCisgICAgICAgIEludCBAMSA9IEFyZ3VtZW50UmVnKCV4MSkKKyAgICAgICAg
SW50IEAyID0gbHNiCisgICAgICAgIEludCBAMyA9IG1hc2sxCisgICAgICAgIEludCBANCA9IG1h
c2syCisgICAgICAgIEludCBANSA9IEJpdEFuZChAMSwgQDMpCisgICAgICAgIEludCBANiA9IEJp
dEFuZChAMCwgQDQpKQorICAgICAgICBJbnQgQDcgPSBaU2hyKEA1LCBAMikKKyAgICAgICAgSW50
IEA4ID0gQml0T3IoQDcsIEA2KQorICAgICAgICBWb2lkQDkgPSBSZXR1cm4oQDgsIFRlcm1pbmFs
KQorCisgICAgICAgIEJlZm9yZSBBZGRpbmcgQklDOgorICAgICAgICAvLyBPbGQgb3B0aW1pemVk
IEFJUgorICAgICAgICBBbmQgICAgICAgICAgICAgICAgICAgICAgbWFzazIsICV4MCwgICAleDAs
ICAgICAgQDYKKyAgICAgICAgRXh0cmFjdFVuc2lnbmVkQml0ZmllbGQgICAgJXgxLCBsc2IsIHdp
ZHRoLCAleDEsIEA3CisgICAgICAgIE9yICAgICAgICAgICAgICAgICAgICAgICAgICV4MCwgJXgx
LCAgICV4MCwgICAgICBAOAorICAgICAgICBSZXQgICAgICAgICAgICAgICAgICAgICAgICAleDAs
ICAgICAgICAgICAgICAgICAgQDkKKworICAgICAgICBBZnRlciBBZGRpbmcgQklDOgorICAgICAg
ICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBFeHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExv
d0VuZCAleDEsIGxzYiwgd2lkdGgsICV4MCwgQDgKKyAgICAgICAgUmV0NjQgICAgICAgICAgICAg
ICAgICAgICAgICAgJXgwLCAgICAgICAgICAgICAgICAgIEA5CisKKyAgICAgICAgLS0tLS0tLS0t
LS0tLS0KKyAgICAgICAgIyMjIFBhcnQgQiAjIyMKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0KKyAg
ICAgICAgVGhlIEJpdGZpZWxkIENsZWFyIChCRkMpLCBsZWF2aW5nIG90aGVyIGJpdHMgdW5jaGFu
Z2VkLCBpcyBzaW1pbGFyIHRvIEJGSSB3aGljaCBpcyBhbiAKKyAgICAgICAgYWxpYXMgb2YgQkZN
LiBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIGJmYyBSZCwgbHNiLCB3aWR0aAorCisg
ICAgICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm4gb2YgdGhpcyBpbnN0cnVjdGlvbiBpczoKKwor
ICAgICAgICBtYXNrID0gKCgxIDw8IHdpZHRoKSAtIDEpIDw8IGxzYgorICAgICAgICBkID0gZCAm
IH5tYXNrCisKKyAgICAgICAgU2luY2UgbWFzayBpcyBhIGNvbnN0YW50IGFuZCBCMyBwZXJmb3Jt
cyBjb25zdGFudCBmb2xkIGluIHRoZSBvcHRpbWl6YXRpb24gcGhhc2UsIHRoaXMgCisgICAgICAg
IHBhdHRlcm4gd2lsbCBkaXJlY3RseSBsb3dlciB0byB0aGUgQml0QW5kIGJpbmFyeSBvcGVyYXRp
b24uIFNvLCBubyBuZWVkIHRvIG1hdGNoIHRoaXMgcGF0dGVybi4KKworICAgICAgICAtLS0tLS0t
LS0tLS0tLQorICAgICAgICAjIyMgUGFydCBDICMjIworICAgICAgICAtLS0tLS0tLS0tLS0tLQor
ICAgICAgICBBdCBNYWNyb0Fzc2VtYmxlciBsZXZlbCwgdGhlIGVtaXR0ZXJzIGFyZSBleGVwZWN0
ZWQgdG8gYmUgZXhwcmVzc2VkIGluIGVuZ2xpc2ggCisgICAgICAgIChlLmcuIHNvbWV0aGluZyBs
aWtlIGNsZWFyQml0RmllbGQgZm9yIEJGQykuIERvIHJlZmFjdG9yaW5nIHRvIHJlbmFtZSBBaXIg
b3Bjb2RlIGZvciAKKyAgICAgICAgVUJGWCwgVUJGSVosIEJGSSwgYW5kIEJJQy4KKworICAgICAg
ICAqIGFzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk02NEFzc2Vt
Ymxlcjo6YmZjKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpleHRyYWN0VW5zaWduZWRCaXRmaWVs
ZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6ZXh0cmFjdFVuc2lnbmVk
Qml0ZmllbGQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omluc2VydFVu
c2lnbmVkQml0ZmllbGRJblplcm8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6Omluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm82NCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6Omluc2VydEJpdEZpZWxkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjppbnNlcnRCaXRGaWVsZDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6Y2xlYXJCaXRGaWVsZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6Y2xlYXJCaXRGaWVsZDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6Y2xlYXJCaXRzV2l0aE1hc2szMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmNsZWFyQml0c1dpdGhNYXNrNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0Ojpvck5vdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6b3JO
b3Q2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZngzMik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZng2NCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnViZml6MzIpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZpejY0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Yml0RmllbGRJbnNlcnQzMik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJpdEZpZWxkSW5zZXJ0NjQp
OiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChK
U0M6OnRlc3RNdWx0aXBseVNpZ25FeHRlbmQzMik6CisgICAgICAgIChKU0M6OnRlc3RNdWx0aXBs
eVN1YlNpZ25FeHRlbmQzMik6CisgICAgICAgIChKU0M6OnRlc3RFeHRyYWN0VW5zaWduZWRCaXRm
aWVsZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkNjQpOgor
ICAgICAgICAoSlNDOjp0ZXN0SW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyKToKKyAgICAg
ICAgKEpTQzo6dGVzdEluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm82NCk6CisgICAgICAgIChK
U0M6OnRlc3RJbnNlcnRCaXRGaWVsZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdEluc2VydEJpdEZp
ZWxkNjQpOgorICAgICAgICAoSlNDOjp0ZXN0Q2xlYXJCaXRGaWVsZDMyKToKKyAgICAgICAgKEpT
Qzo6dGVzdENsZWFyQml0RmllbGQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RDbGVhckJpdHNXaXRo
TWFzazMyKToKKyAgICAgICAgKEpTQzo6dGVzdENsZWFyQml0c1dpdGhNYXNrNjQpOgorICAgICAg
ICAoSlNDOjp0ZXN0T3JOb3QzMik6CisgICAgICAgIChKU0M6OnRlc3RPck5vdDY0KToKKyAgICAg
ICAgKEpTQzo6dGVzdE11bDMyU2lnbkV4dGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRl
c3RNdWxTdWJTaWduRXh0ZW5kMzIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjp0ZXN0VWJmeDMy
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6dGVzdFViZng2NCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OnRlc3RVYmZpejMyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6dGVzdFViZml6NjQp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjp0ZXN0Qml0RmllbGRJbnNlcnQzMik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OnRlc3RCaXRGaWVsZEluc2VydDY0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3Bw
OgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0
YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0SW5zZXJ0Qml0
RmllbGQzMik6CisgICAgICAgICh0ZXN0SW5zZXJ0Qml0RmllbGQ2NCk6CisgICAgICAgICh0ZXN0
QklDMzIpOgorICAgICAgICAodGVzdEJJQzY0KToKKyAgICAgICAgKHRlc3RPck5vdDMyKToKKyAg
ICAgICAgKHRlc3RPck5vdDY0KToKKyAgICAgICAgKGFkZEJpdFRlc3RzKToKKyAgICAgICAgKHRl
c3RCaXRGaWVsZEluc2VydDMyKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3RCaXRGaWVsZEluc2Vy
dDY0KTogRGVsZXRlZC4KKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6
CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6Y2FnZVdpdGhvdXRVbnRhZ2dpbmcpOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWcpOgorCiAyMDIxLTA2LTI0ICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgbGRwIGFuZCBzdHAgbW9y
ZSBmb3Igc2F2aW5nIC8gcmVzdG9yaW5nIHJlZ2lzdGVycyBvbiBBUk02NC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAppbmRleCA3NThjYmU0
MDI3Nzk4ZTgzMWQyZDAzY2E4NDhlZDhiMDQ4MzY1ZTE0Li5jYjRjYjFiYzA3MzAxZGU4ZTYyYmZi
YmVlZGI3MWNlNDc0OGNiZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BUk02NEFzc2VtYmxlci5oCkBAIC04MzIsNiArODMyLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgaW5zbihjb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZShvZmZzZXQsIGNvbmQpKTsKICAgICB9
CiAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGJm
YyhSZWdpc3RlcklEIHJkLCBpbnQgbHNiLCBpbnQgd2lkdGgpCisgICAgeworICAgICAgICBiZmk8
ZGF0YXNpemU+KHJkLCBBUk02NFJlZ2lzdGVyczo6enIsIGxzYiwgd2lkdGgpOworICAgIH0KKwog
ICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYmZpKFJl
Z2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIGludCBsc2IsIGludCB3aWR0aCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oCmluZGV4IDA2OWJkNDZiMzk0MWMwYTg2ZThlM2EzNjk5NDRhYTRhOTBiYzA3NWQuLjA4
OTE1OTViNGRhYWUzNGRmN2RmZTczN2YyMDhiMGYwMWI3MjM1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0z
OTAsMjYgKzM5MCw2IEBAIHB1YmxpYzoKICAgICAgICAgYW5kMzIoZGF0YVRlbXBSZWdpc3Rlciwg
ZGVzdCk7CiAgICAgfQogCi0gICAgdm9pZCB1YmZ4MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJ
bW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIudWJmeDwzMj4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgu
bV92YWx1ZSk7Ci0gICAgfQotCi0gICAgdm9pZCB1YmZ4NjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0
ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIudWJmeDw2ND4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lk
dGgubV92YWx1ZSk7Ci0gICAgfQotCi0gICAgdm9pZCB1YmZpejMyKFJlZ2lzdGVySUQgc3JjLCBU
cnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKLSAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnViZml6PDMyPihkZXN0LCBzcmMsIGxzYi5tX3ZhbHVl
LCB3aWR0aC5tX3ZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHViZml6NjQoUmVnaXN0ZXJJRCBz
cmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0
KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudWJmaXo8NjQ+KGRlc3QsIHNyYywgbHNiLm1f
dmFsdWUsIHdpZHRoLm1fdmFsdWUpOwotICAgIH0KLQogICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJ
RCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLmFuZF88NjQ+KGRlc3QsIHNyYzEsIHNyYzIpOwpAQCAtNDY4LDYgKzQ0OCw3
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZF88NjQ+KGRlc3QsIGRlc3QsIGRh
dGFUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIC8vIEJpdCBPcGVyYXRpb25zOgorICAgIHZv
aWQgZXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMy
IGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci51YmZ4PDMyPihkZXN0LCBzcmMsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3Zh
bHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkNjQoUmVnaXN0
ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudWJmeDw2ND4oZGVzdCwgc3JjLCBs
c2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBpbnNlcnRVbnNp
Z25lZEJpdGZpZWxkSW5aZXJvMzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRy
dXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIudWJmaXo8MzI+KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOwor
ICAgIH0KKworICAgIHZvaWQgaW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzY0KFJlZ2lzdGVy
SUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnViZml6PDY0PihkZXN0LCBzcmMsIGxz
Yi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGluc2VydEJpdEZp
ZWxkMzIoUmVnaXN0ZXJJRCBzb3VyY2UsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3
aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmZpPDMy
PihkZXN0LCBzb3VyY2UsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAg
ICB2b2lkIGluc2VydEJpdEZpZWxkNjQoUmVnaXN0ZXJJRCBzb3VyY2UsIFRydXN0ZWRJbW0zMiBs
c2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYmZpPDY0PihkZXN0LCBzb3VyY2UsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3Zh
bHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQml0RmllbGQzMihUcnVzdGVkSW1tMzIgbHNi
LCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmJmYzwzMj4oZGVzdCwgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOworICAg
IH0KKworICAgIHZvaWQgY2xlYXJCaXRGaWVsZDY0KFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJ
bW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YmZjPDY0PihkZXN0LCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAg
dm9pZCBjbGVhckJpdHNXaXRoTWFzazMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIG1hc2ss
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJpYzwzMj4oZGVz
dCwgc3JjLCBtYXNrKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQml0c1dpdGhNYXNrNjQoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYmljPDY0PihkZXN0LCBzcmMsIG1hc2spOworICAgIH0KKworICAg
IHZvaWQgb3JOb3QzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBtYXNrLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcm48MzI+KGRlc3QsIHNyYywgbWFz
ayk7CisgICAgfQorCisgICAgdm9pZCBvck5vdDY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybjw2
ND4oZGVzdCwgc3JjLCBtYXNrKTsKKyAgICB9CisKKyAgICB2b2lkIGV4dHJhY3RJbnNlcnRCaXRm
aWVsZEF0TG93RW5kMzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJ
bW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YmZ4aWw8MzI+KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOworICAgIH0K
KworICAgIHZvaWQgZXh0cmFjdEluc2VydEJpdGZpZWxkQXRMb3dFbmQ2NChSZWdpc3RlcklEIHNy
YywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iZnhpbDw2ND4oZGVzdCwgc3JjLCBsc2IubV92
YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCiAgICAgdm9pZCBjbGVhckJpdDY0KFJlZ2lz
dGVySUQgYml0VG9DbGVhciwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2hGb3JN
YXNrID0gSW52YWxpZEdQUlJlZykKICAgICB7CiAgICAgICAgIGlmIChzY3JhdGNoRm9yTWFzayA9
PSBJbnZhbGlkR1BSUmVnKQpAQCAtMjc1MiwxOCArMjgwMyw2IEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIuZmNzZWw8NjQ+KGRlc3QsIHRoZW5DYXNlLCBlbHNlQ2FzZSwgQVJNNjRDb25k
aXRpb24oY29uZCkpOwogICAgIH0KIAotICAgIC8vIEJpdCBmaWVsZCBvcGVyYXRpb25zOgotICAg
IHZvaWQgYml0RmllbGRJbnNlcnQzMihSZWdpc3RlcklEIHNvdXJjZSwgVHJ1c3RlZEltbTMyIGxz
YiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBt
X2Fzc2VtYmxlci5iZmk8MzI+KGRlc3QsIHNvdXJjZSwgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFs
dWUpOwotICAgIH0KLQotICAgIC8vIGRlc3RCaXRPZmZzZXQgaXMgdGhlIHRvcCBiaXQgb2YgdGhl
IGRlc3RpbmF0aW9uIHdoZXJlIHRoZSBiaXRzIHNob3VsZCBiZSBjb3BpZWQgdG8uIFplcm8gaXMg
dGhlIGxvd2VzdCBvcmRlciBiaXQuCi0gICAgdm9pZCBiaXRGaWVsZEluc2VydDY0KFJlZ2lzdGVy
SUQgc291cmNlLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVy
SUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJmaTw2ND4oZGVzdCwgc291cmNl
LCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Ci0gICAgfQotCiAgICAgLy8gRm9yd2FyZHMg
LyBleHRlcm5hbCBjb250cm9sIGZsb3cgb3BlcmF0aW9uczoKICAgICAvLwogICAgIC8vIFRoaXMg
c2V0IG9mIGp1bXAgYW5kIGNvbmRpdGlvbmFsIGJyYW5jaCBvcGVyYXRpb25zIHJldHVybiBhIEp1
bXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXgg
YzljZjk2OGI3YjQ1ZjQyMzg3ZWRjN2ZkNjY5M2YwOWQ1M2VlNmE1MC4uYjk5YWZmMzQxOGQ1NGIy
NWU5M2U5MjY4ZjgwMDg5MGFkN2NmNDUzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTkwNCw3ICs5MDQsNyBAQCB2b2lkIHRlc3RNdWwzMldp
dGhJbW1lZGlhdGVzKCkKIH0KIAogI2lmIENQVShBUk02NCkKLXZvaWQgdGVzdE11bDMyU2lnbkV4
dGVuZCgpCit2b2lkIHRlc3RNdWx0aXBseVNpZ25FeHRlbmQzMigpCiB7CiAgICAgZm9yIChhdXRv
IHZhbHVlIDogaW50MzJPcGVyYW5kcygpKSB7CiAgICAgICAgIGF1dG8gbXVsID0gY29tcGlsZShb
PV0gKENDYWxsSGVscGVycyYgaml0KSB7CkBAIC0xMDg5LDcgKzEwODksNyBAQCB2b2lkIHRlc3RT
dWI2NEFyZ0ltbTY0KCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdE11bFN1YlNpZ25FeHRlbmQzMigp
Cit2b2lkIHRlc3RNdWx0aXBseVN1YlNpZ25FeHRlbmQzMigpCiB7CiAgICAgLy8gZCA9IGEgLSBT
RXh0MzIobikgKiAgU0V4dDMyKG0pCiAgICAgYXV0byBzdWIgPSBjb21waWxlKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKQEAgLTExMTIsNyArMTExMiw3IEBAIHZvaWQgdGVzdE11bFN1YlNpZ25F
eHRlbmQzMigpCiAgICAgfQogfQogCi12b2lkIHRlc3RVYmZ4MzIoKQordm9pZCB0ZXN0RXh0cmFj
dFVuc2lnbmVkQml0ZmllbGQzMigpCiB7CiAgICAgdWludDMyX3Qgc3JjID0gMHhmMGYwZjBmMDsK
ICAgICBWZWN0b3I8dWludDMyX3Q+IGltbXMgPSB7IDAsIDEsIDUsIDcsIDMwLCAzMSwgMzIsIDQy
LCA1NiwgNjIsIDYzLCA2NCB9OwpAQCAtMTEyMiw3ICsxMTIyLDcgQEAgdm9pZCB0ZXN0VWJmeDMy
KCkKICAgICAgICAgICAgICAgICBhdXRvIHViZngzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCkgewogICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQp
OwogCi0gICAgICAgICAgICAgICAgICAgIGppdC51YmZ4MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIw
LCAKKyAgICAgICAgICAgICAgICAgICAgaml0LmV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCAKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKGxzYiksIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTExMzYsNyArMTEzNiw3IEBAIHZvaWQgdGVzdFViZngz
MigpCiAgICAgfQogfQogCi12b2lkIHRlc3RVYmZ4NjQoKQordm9pZCB0ZXN0RXh0cmFjdFVuc2ln
bmVkQml0ZmllbGQ2NCgpCiB7CiAgICAgdWludDY0X3Qgc3JjID0gMHhmMGYwZjBmMGYwZjBmMGYw
OwogICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9IHsgMCwgMSwgNSwgNywgMzAsIDMxLCAzMiwg
NDIsIDU2LCA2MiwgNjMsIDY0IH07CkBAIC0xMTQ2LDcgKzExNDYsNyBAQCB2b2lkIHRlc3RVYmZ4
NjQoKQogICAgICAgICAgICAgICAgIGF1dG8gdWJmeDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVs
cGVycyYgaml0KSB7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGpp
dCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaml0LnViZng2NChHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIAorICAgICAgICAgICAgICAgICAgICBqaXQuZXh0cmFjdFVuc2lnbmVkQml0ZmllbGQ2NChH
UFJJbmZvOjphcmd1bWVudEdQUjAsIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIobHNiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAogICAgICAgICAgICAgICAgICAgICAgICAgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpAQCAtMTE2MCw3ICsxMTYwLDcgQEAgdm9pZCB0ZXN0VWJm
eDY0KCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdFViZml6MzIoKQordm9pZCB0ZXN0SW5zZXJ0VW5z
aWduZWRCaXRmaWVsZEluWmVybzMyKCkKIHsKICAgICB1aW50MzJfdCBzcmMgPSAweGYwZjBmMGYw
OwogICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9IHsgMCwgMSwgNSwgNywgMzAsIDMxLCAzMiwg
NDIsIDU2LCA2MiwgNjMsIDY0IH07CkBAIC0xMTcwLDcgKzExNzAsNyBAQCB2b2lkIHRlc3RVYmZp
ejMyKCkKICAgICAgICAgICAgICAgICBhdXRvIHViZml6MzIgPSBjb21waWxlKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKIAotICAgICAgICAgICAgICAgICAgICBqaXQudWJmaXozMihHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIAorICAgICAgICAgICAgICAgICAgICBqaXQuaW5zZXJ0VW5zaWduZWRCaXRmaWVsZElu
WmVybzMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCiAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsc2IpLCAKICAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHdpZHRoKSwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CkBAIC0xMTg1LDcgKzExODUsNyBAQCB2b2lk
IHRlc3RVYmZpejMyKCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdFViZml6NjQoKQordm9pZCB0ZXN0
SW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzY0KCkKIHsKICAgICB1aW50NjRfdCBzcmMgPSAw
eGYwZjBmMGYwZjBmMGYwZjA7CiAgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCA1
LCA3LCAzMCwgMzEsIDMyLCA0MiwgNTYsIDYyLCA2MywgNjQgfTsKQEAgLTExOTUsNyArMTE5NSw3
IEBAIHZvaWQgdGVzdFViZml6NjQoKQogICAgICAgICAgICAgICAgIGF1dG8gdWJmaXo2NCA9IGNv
bXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgICAgICAgICBlbWl0
RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCi0gICAgICAgICAgICAgICAgICAgIGppdC51YmZpejY0
KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgIGppdC5pbnNlcnRV
bnNpZ25lZEJpdGZpZWxkSW5aZXJvNjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAogICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKICAg
ICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTEyMTAs
NyArMTIxMCw3IEBAIHZvaWQgdGVzdFViZml6NjQoKQogICAgIH0KIH0KIAotdm9pZCB0ZXN0Qml0
RmllbGRJbnNlcnQzMigpCit2b2lkIHRlc3RJbnNlcnRCaXRGaWVsZDMyKCkKIHsKICAgICB1aW50
MzJfdCBzcmMgPSAweDBmMGYwZjBmOwogICAgIHVpbnQzMl90IGRzdCA9IDB4ZjBmMGYwZjA7CkBA
IC0xMjIxLDcgKzEyMjEsNyBAQCB2b2lkIHRlc3RCaXRGaWVsZEluc2VydDMyKCkKICAgICAgICAg
ICAgICAgICBhdXRvIGJmaTMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAg
ICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKLSAgICAgICAg
ICAgICAgICAgICAgaml0LmJpdEZpZWxkSW5zZXJ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAK
KyAgICAgICAgICAgICAgICAgICAgaml0Lmluc2VydEJpdEZpZWxkMzIoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCAKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGxzYiksIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIod2lkdGgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7CkBAIC0xMjQwLDcgKzEyNDAsNyBAQCB2b2lkIHRlc3RCaXRGaWVsZEluc2VydDMyKCkK
ICAgICB9CiB9CiAKLXZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0NjQoKQordm9pZCB0ZXN0SW5zZXJ0
Qml0RmllbGQ2NCgpCiB7CiAgICAgdWludDY0X3Qgc3JjID0gMHgwZjBmMGYwZjBmMGYwZjBmOwog
ICAgIHVpbnQ2NF90IGRzdCA9IDB4ZjBmMGYwZjBmMGYwZjBmMDsKQEAgLTEyNTEsNyArMTI1MSw3
IEBAIHZvaWQgdGVzdEJpdEZpZWxkSW5zZXJ0NjQoKQogICAgICAgICAgICAgICAgIGF1dG8gYmZp
NjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAotICAgICAgICAgICAgICAgICAgICBqaXQu
Yml0RmllbGRJbnNlcnQ2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAg
ICAgICBqaXQuaW5zZXJ0Qml0RmllbGQ2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNiKSwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAog
ICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKQEAgLTEyNjks
NiArMTI2OSwxODggQEAgdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQ2NCgpCiAgICAgICAgIH0KICAg
ICB9CiB9CisKK3ZvaWQgdGVzdEV4dHJhY3RJbnNlcnRCaXRmaWVsZEF0TG93RW5kMzIoKQorewor
ICAgIHVpbnQzMl90IHNyYyA9IDB4ZjBmMGYwZjA7CisgICAgdWludDMyX3QgZHN0ID0gMHgwZjBm
MGYwZjsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGltbXMgPSB7IDAsIDEsIDUsIDcsIDMwLCAzMSwg
MzIsIDQyLCA1NiwgNjIsIDYzLCA2NCB9OworICAgIGZvciAoYXV0byBsc2IgOiBpbW1zKSB7Cisg
ICAgICAgIGZvciAoYXV0byB3aWR0aCA6IGltbXMpIHsKKyAgICAgICAgICAgIGlmIChsc2IgPj0g
MCAmJiB3aWR0aCA+IDAgJiYgbHNiICsgd2lkdGggPCAzMikgeworICAgICAgICAgICAgICAgIGF1
dG8gYmZ4aWwzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAg
ICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAg
ICAgIGppdC5leHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDMyKEdQUkluZm86OmFyZ3VtZW50
R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mihsc2IpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKHdpZHRoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjEs
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbWFzazEgPSAoMVUgPDwg
d2lkdGgpIC0gMVU7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbWFzazIgPSB+bWFzazE7Cisg
ICAgICAgICAgICAgICAgdWludDMyX3QgcmhzID0gaW52b2tlPHVpbnQzMl90PihiZnhpbDMyLCBz
cmMsIGRzdCk7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbGhzID0gKChzcmMgPj4gbHNiKSAm
IG1hc2sxKSB8IChkc3QgJiBtYXNrMik7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEocmhzLCBs
aHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RFeHRy
YWN0SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDY0KCkKK3sKKyAgICB1aW50NjRfdCBzcmMgPSAweDBm
MGYwZjBmMGYwZjBmMGY7CisgICAgdWludDY0X3QgZHN0ID0gMHhmMGYwZjBmMGYwZjBmMGYwOwor
ICAgIFZlY3Rvcjx1aW50NjRfdD4gaW1tcyA9IHsgMCwgMSwgNSwgNywgMzAsIDMxLCAzMiwgNDIs
IDU2LCA2MiwgNjMsIDY0IH07CisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMpIHsKKyAgICAgICAg
Zm9yIChhdXRvIHdpZHRoIDogaW1tcykgeworICAgICAgICAgICAgaWYgKGxzYiA+PSAwICYmIHdp
ZHRoID4gMCAmJiBsc2IgKyB3aWR0aCA8IDY0KSB7CisgICAgICAgICAgICAgICAgYXV0byBiZnhp
bDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAg
ICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0
LmV4dHJhY3RJbnNlcnRCaXRmaWVsZEF0TG93RW5kNjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiks
IAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lk
dGgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVw
aWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBtYXNrMSA9ICgxVUxMIDw8IHdpZHRo
KSAtIDFVTEw7CisgICAgICAgICAgICAgICAgdWludDY0X3QgbWFzazIgPSB+bWFzazE7CisgICAg
ICAgICAgICAgICAgdWludDY0X3QgcmhzID0gaW52b2tlPHVpbnQ2NF90PihiZnhpbDY0LCBzcmMs
IGRzdCk7CisgICAgICAgICAgICAgICAgdWludDY0X3QgbGhzID0gKChzcmMgPj4gbHNiKSAmIG1h
c2sxKSB8IChkc3QgJiBtYXNrMik7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEocmhzLCBsaHMp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RDbGVhckJp
dEZpZWxkMzIoKQoreworICAgIHVpbnQzMl90IHNyYyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDMyX3Q+OjptYXgoKTsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGltbXMgPSB7IDAsIDEsIDUsIDcs
IDMwLCAzMSwgMzIsIDQyLCA1NiwgNjIsIDYzLCA2NCB9OworICAgIGZvciAoYXV0byBsc2IgOiBp
bW1zKSB7CisgICAgICAgIGZvciAoYXV0byB3aWR0aCA6IGltbXMpIHsKKyAgICAgICAgICAgIGlm
IChsc2IgPj0gMCAmJiB3aWR0aCA+IDAgJiYgbHNiICsgd2lkdGggPCAzMikgeworICAgICAgICAg
ICAgICAgIGF1dG8gYmZjMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAg
ICAgICAgICAgICBqaXQuY2xlYXJCaXRGaWVsZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGxzYiksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHdpZHRoKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHVpbnQzMl90IG1hc2sgPSAoKDFV
IDw8IHdpZHRoKSAtIDFVKSA8PCBsc2I7CisgICAgICAgICAgICAgICAgdWludDMyX3QgcmhzID0g
aW52b2tlPHVpbnQzMl90PihiZmMzMiwgc3JjKTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBs
aHMgPSBzcmMgJiB+bWFzazsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShyaHMsIGxocyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdENsZWFyQml0Rmll
bGQ2NCgpCit7CisgICAgdWludDY0X3Qgc3JjID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRf
dD46Om1heCgpOworICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9IHsgMCwgMSwgNSwgNywgMzAs
IDMxLCAzMiwgNDIsIDU2LCA2MiwgNjMsIDY0IH07CisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMp
IHsKKyAgICAgICAgZm9yIChhdXRvIHdpZHRoIDogaW1tcykgeworICAgICAgICAgICAgaWYgKGxz
YiA+PSAwICYmIHdpZHRoID4gMCAmJiBsc2IgKyB3aWR0aCA8IDMyKSB7CisgICAgICAgICAgICAg
ICAgYXV0byBiZmM2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAg
ICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAg
ICAgICAgIGppdC5jbGVhckJpdEZpZWxkNjQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNi
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjAs
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgdWludDY0X3QgbWFzayA9ICgoMVVMTCA8
PCB3aWR0aCkgLSAxVUxMKSA8PCBsc2I7CisgICAgICAgICAgICAgICAgdWludDY0X3QgcmhzID0g
aW52b2tlPHVpbnQ2NF90PihiZmM2NCwgc3JjKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBs
aHMgPSBzcmMgJiB+bWFzazsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShyaHMsIGxocyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdENsZWFyQml0c1dp
dGhNYXNrMzIoKQoreworICAgIGF1dG8gdGVzdCA9IGNvbXBpbGUoW10gKENDYWxsSGVscGVycyYg
aml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0
LmNsZWFyQml0c1dpdGhNYXNrMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisKKyAgICBmb3Ig
KGF1dG8gbWFzayA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICB1aW50MzJfdCBzcmMgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7CisgICAgICAgIENIRUNLX0VRKGlu
dm9rZTx1aW50MzJfdD4odGVzdCwgc3JjLCBtYXNrKSwgKHNyYyAmIH5tYXNrKSk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTx1aW50MzJfdD4odGVzdCwgMFUsIG1hc2spLCAwVSk7CisgICAgfQor
fQorCit2b2lkIHRlc3RDbGVhckJpdHNXaXRoTWFzazY0KCkKK3sKKyAgICBhdXRvIHRlc3QgPSBj
b21waWxlKFtdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9s
b2d1ZShqaXQpOworCisgICAgICAgIGppdC5jbGVhckJpdHNXaXRoTWFzazY0KEdQUkluZm86OmFy
Z3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJl
dCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIG1hc2sgOiBpbnQ2NE9wZXJhbmRzKCkpIHsK
KyAgICAgICAgdWludDY0X3Qgc3JjID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCgpOworICAgICAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KHRlc3QsIHNyYywgbWFzayks
IChzcmMgJiB+bWFzaykpOworICAgICAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KHRlc3Qs
IDBVTEwsIG1hc2spLCAwVUxMKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdE9yTm90MzIoKQorewor
ICAgIGF1dG8gdGVzdCA9IGNvbXBpbGUoW10gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAg
IGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0Lm9yTm90MzIoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZh
bHVlR1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBq
aXQucmV0KCk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8gbWFzayA6IGludDMyT3BlcmFuZHMo
KSkgeworICAgICAgICBpbnQzMl90IHNyYyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+
OjptYXgoKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KHRlc3QsIHNyYywgbWFz
ayksIChzcmMgfCB+bWFzaykpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4odGVz
dCwgMFUsIG1hc2spLCB+bWFzayk7CisgICAgfQorfQorCit2b2lkIHRlc3RPck5vdDY0KCkKK3sK
KyAgICBhdXRvIHRlc3QgPSBjb21waWxlKFtdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAg
ICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgIGppdC5vck5vdDY0KEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAg
aml0LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIG1hc2sgOiBpbnQ2NE9wZXJhbmRz
KCkpIHsKKyAgICAgICAgaW50NjRfdCBzcmMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90
Pjo6bWF4KCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90Pih0ZXN0LCBzcmMsIG1h
c2spLCAoc3JjIHwgfm1hc2spKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KHRl
c3QsIDBVTEwsIG1hc2spLCB+bWFzayk7CisgICAgfQorfQogI2VuZGlmCiAKICNpZiBDUFUoWDg2
KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCkBAIC0zNDI1LDkgKzM2MDcsOCBAQCB2b2lk
IHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlT
SVMKICNpZiBDUFUoQVJNNjQpCiAgICAgUlVOKHRlc3RMb2FkU3RvcmVQYWlyNjRJbnQ2NCgpKTsK
ICAgICBSVU4odGVzdExvYWRTdG9yZVBhaXI2NERvdWJsZSgpKTsKLSAgICBSVU4odGVzdE11bDMy
U2lnbkV4dGVuZCgpKTsKLSAgICBSVU4odGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyTGVmdCgp
KTsKLSAgICBSVU4odGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyUmlnaHQoKSk7CisgICAgUlVO
KHRlc3RNdWx0aXBseVNpZ25FeHRlbmQzMigpKTsKKwogICAgIFJVTih0ZXN0U3ViMzJBcmdzKCkp
OwogICAgIFJVTih0ZXN0U3ViMzJJbW0oKSk7CiAgICAgUlVOKHRlc3RTdWIzMkFyZ0ltbSgpKTsK
QEAgLTM0MzUsMTMgKzM2MTYsMjYgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZf
SUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRlc3RTdWI2NEFyZ0ltbTMy
KCkpOwogICAgIFJVTih0ZXN0U3ViNjRJbW02NCgpKTsKICAgICBSVU4odGVzdFN1YjY0QXJnSW1t
NjQoKSk7Ci0gICAgUlVOKHRlc3RNdWxTdWJTaWduRXh0ZW5kMzIoKSk7Ci0gICAgUlVOKHRlc3RV
YmZ4MzIoKSk7Ci0gICAgUlVOKHRlc3RVYmZ4NjQoKSk7Ci0gICAgUlVOKHRlc3RVYmZpejMyKCkp
OwotICAgIFJVTih0ZXN0VWJmaXo2NCgpKTsKLSAgICBSVU4odGVzdEJpdEZpZWxkSW5zZXJ0MzIo
KSk7Ci0gICAgUlVOKHRlc3RCaXRGaWVsZEluc2VydDY0KCkpOworCisgICAgUlVOKHRlc3RNdWx0
aXBseUFkZFNpZ25FeHRlbmQzMkxlZnQoKSk7CisgICAgUlVOKHRlc3RNdWx0aXBseUFkZFNpZ25F
eHRlbmQzMlJpZ2h0KCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlTdWJTaWduRXh0ZW5kMzIoKSk7
CisKKyAgICBSVU4odGVzdEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIoKSk7CisgICAgUlVOKHRl
c3RFeHRyYWN0VW5zaWduZWRCaXRmaWVsZDY0KCkpOworICAgIFJVTih0ZXN0SW5zZXJ0VW5zaWdu
ZWRCaXRmaWVsZEluWmVybzMyKCkpOworICAgIFJVTih0ZXN0SW5zZXJ0VW5zaWduZWRCaXRmaWVs
ZEluWmVybzY0KCkpOworICAgIFJVTih0ZXN0SW5zZXJ0Qml0RmllbGQzMigpKTsKKyAgICBSVU4o
dGVzdEluc2VydEJpdEZpZWxkNjQoKSk7CisgICAgUlVOKHRlc3RFeHRyYWN0SW5zZXJ0Qml0Zmll
bGRBdExvd0VuZDMyKCkpOworICAgIFJVTih0ZXN0RXh0cmFjdEluc2VydEJpdGZpZWxkQXRMb3dF
bmQ2NCgpKTsKKyAgICBSVU4odGVzdENsZWFyQml0RmllbGQzMigpKTsKKyAgICBSVU4odGVzdENs
ZWFyQml0RmllbGQ2NCgpKTsKKyAgICBSVU4odGVzdENsZWFyQml0c1dpdGhNYXNrMzIoKSk7Cisg
ICAgUlVOKHRlc3RDbGVhckJpdHNXaXRoTWFzazY0KCkpOworCisgICAgUlVOKHRlc3RPck5vdDMy
KCkpOworICAgIFJVTih0ZXN0T3JOb3Q2NCgpKTsKICNlbmRpZgogCiAjaWYgQ1BVKFg4NikgfHwg
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcAppbmRleCA4NDA0MGZlZjRhOTZhNzU5MTM3YmM2NmVkZTQ1MThmNzkyMzFhYWJk
Li5jY2EwMzZmNzJhMjBkNzJmNjNlZDMzMTNiNzllYzc2ZTk2MzVmNTgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMjc2MSwzNSArMjc2MSwyNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgLy8gVUJGWCBQYXR0ZXJuOiBkZXN0ID0gKHNyYyA+PiBsc2IpICYgbWFzayAKLSAgICAg
ICAgICAgIC8vIFdoZXJlOiBtYXNrID0gKDEgPDwgd2lkdGgpIC0gMQotICAgICAgICAgICAgYXV0
byB0cnlBcHBlbmRVQkZYID0gWyZdICgpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgIEFpcjo6
T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoVWJmeDMyLCBVYmZ4NjQsIG1fdmFsdWUtPnR5
cGUoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1w
LCBBcmc6OkltbSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCisgICAgICAgICAgICAvLyBCSUMgUGF0
dGVybjogZCA9IG4gJiAobSBeIC0xKQorICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRCSUMgPSBb
Jl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAgICAgICAgICAgICAg
IEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoQ2xlYXJCaXRzV2l0aE1hc2szMiwg
Q2xlYXJCaXRzV2l0aE1hc2s2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIAog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKGxl
ZnQtPm9wY29kZSgpICE9IFpTaHIgfHwgIWNhbkJlSW50ZXJuYWwobGVmdCkpCisgICAgICAgICAg
ICAgICAgaWYgKHJpZ2h0LT5vcGNvZGUoKSAhPSBCaXRYb3IgfHwgIWNhbkJlSW50ZXJuYWwocmln
aHQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgICAg
ICBWYWx1ZSogc3JjVmFsdWUgPSBsZWZ0LT5jaGlsZCgwKTsKLSAgICAgICAgICAgICAgICBWYWx1
ZSogbHNiVmFsdWUgPSBsZWZ0LT5jaGlsZCgxKTsKLSAgICAgICAgICAgICAgICBpZiAobV9sb2Nr
ZWQuY29udGFpbnMoc3JjVmFsdWUpIHx8ICFpbW0obHNiVmFsdWUpIHx8IGxzYlZhbHVlLT5hc0lu
dCgpIDwgMCB8fCAhcmlnaHQtPmhhc0ludCgpKQorICAgICAgICAgICAgICAgIFZhbHVlKiBuVmFs
dWUgPSBsZWZ0OworICAgICAgICAgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByaWdodC0+Y2hpbGQo
MCk7CisgICAgICAgICAgICAgICAgVmFsdWUqIG1pbnVzT25lID0gcmlnaHQtPmNoaWxkKDEpOwor
ICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhuVmFsdWUpIHx8IG1fbG9ja2Vk
LmNvbnRhaW5zKG1WYWx1ZSkgfHwgIW1pbnVzT25lLT5oYXNJbnQoKSB8fCAhbWludXNPbmUtPmlz
SW50KC0xKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAg
ICAgICAgdWludDY0X3QgbHNiID0gbHNiVmFsdWUtPmFzSW50KCk7Ci0gICAgICAgICAgICAgICAg
dWludDY0X3QgbWFzayA9IHJpZ2h0LT5hc0ludCgpOwotICAgICAgICAgICAgICAgIGlmICghbWFz
ayB8fCBtYXNrICYgKG1hc2sgKyAxKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgICAgIHVpbnQ2NF90IHdpZHRoID0gV1RGOjpiaXRDb3VudChtYXNrKTsK
LSAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29kZSA9PSBVYmZ4MzIgPyAz
MiA6IDY0OwotICAgICAgICAgICAgICAgIGlmIChsc2IgKyB3aWR0aCA+IGRhdGFzaXplKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICBhcHBlbmQo
b3Bjb2RlLCB0bXAoc3JjVmFsdWUpLCBpbW0obHNiVmFsdWUpLCBpbW0od2lkdGgpLCB0bXAobV92
YWx1ZSkpOwotICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOworICAgICAgICAg
ICAgICAgIGFwcGVuZChvcGNvZGUsIHRtcChuVmFsdWUpLCB0bXAobVZhbHVlKSwgdG1wKG1fdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICBpZiAodHJ5
QXBwZW5kVUJGWCgpKQorICAgICAgICAgICAgaWYgKHRyeUFwcGVuZEJJQyhsZWZ0LCByaWdodCkg
fHwgdHJ5QXBwZW5kQklDKHJpZ2h0LCBsZWZ0KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBBbmQ2NCwgQW5kRG91YmxlLCBBbmRGbG9h
dCwgQ29tbXV0YXRpdmU+KGxlZnQsIHJpZ2h0KTsKQEAgLTI4MDQsNyArMjc5NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAvLyBXaGVyZTogbWFzazEgPSAoKDEgPDwgd2lkdGgpIC0gMSkKICAg
ICAgICAgICAgIC8vICAgICAgICBtYXNrMiA9IH4obWFzazEgPDwgbHNiKQogICAgICAgICAgICAg
YXV0byB0cnlBcHBlbmRCRkkgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJv
b2wgewotICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUo
Qml0RmllbGRJbnNlcnQzMiwgQml0RmllbGRJbnNlcnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAg
ICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKEluc2VydEJp
dEZpZWxkMzIsIEluc2VydEJpdEZpZWxkNjQsIG1fdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpJ
bW0sIEFyZzo6VG1wKSkgCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgICAgICBpZiAobGVmdC0+b3Bjb2RlKCkgIT0gU2hsIHx8ICFjYW5CZUludGVybmFsKGxl
ZnQpKQpAQCAtMjgyOCw3ICsyODE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB1aW50
NjRfdCBtYXNrMSA9IG1hc2tWYWx1ZTEtPmFzSW50KCk7CiAgICAgICAgICAgICAgICAgaWYgKCFt
YXNrMSB8fCBtYXNrMSAmIChtYXNrMSArIDEpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YXNpemUgPSBvcGNvZGUgPT0gQml0
RmllbGRJbnNlcnQzMiA/IDMyIDogNjQ7CisgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YXNp
emUgPSBvcGNvZGUgPT0gSW5zZXJ0Qml0RmllbGQzMiA/IDMyIDogNjQ7CiAgICAgICAgICAgICAg
ICAgdWludDY0X3Qgd2lkdGggPSBXVEY6OmJpdENvdW50KG1hc2sxKTsKICAgICAgICAgICAgICAg
ICBpZiAobHNiICsgd2lkdGggPiBkYXRhc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjg1Nyw2ICsyODQ4LDg5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAo
dHJ5QXBwZW5kQkZJKGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRCRkkocmlnaHQsIGxlZnQpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICAgICAgLy8gQkZYSUwgUGF0dGVybjog
ZCA9ICgobiAmIG1hc2sxKSA+PiBsc2IpIHwgKGQgJiBtYXNrMikKKyAgICAgICAgICAgIC8vIFdo
ZXJlOiBtYXNrMSA9ICgoMSA8PCB3aWR0aCkgLSAxKSA8PCBsc2IKKyAgICAgICAgICAgIC8vICAg
ICAgICBtYXNrMiA9IH4obWFzazEgPj4gbHNiKQorICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRC
RlhJTCA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAgICAg
ICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShFeHRyYWN0SW5zZXJ0
Qml0ZmllbGRBdExvd0VuZDMyLCBFeHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDY0LCBtX3Zh
bHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBB
cmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6SW1tLCBBcmc6OlRtcCkpIAorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGxlZnQtPm9wY29kZSgpICE9
IFpTaHIgfHwgIWNhbkJlSW50ZXJuYWwobGVmdCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAocmlnaHQtPm9wY29kZSgpICE9IEJpdEFuZCB8
fCAhY2FuQmVJbnRlcm5hbChyaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBpZiAobGVmdC0+Y2hpbGQoMCktPm9wY29kZSgpICE9IEJpdEFu
ZCB8fCAhY2FuQmVJbnRlcm5hbChsZWZ0LT5jaGlsZCgwKSkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIFZhbHVlKiBuVmFsdWUgPSBsZWZ0LT5j
aGlsZCgwKS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgVmFsdWUqIG1hc2tWYWx1ZTEgPSBs
ZWZ0LT5jaGlsZCgwKS0+Y2hpbGQoMSk7CisgICAgICAgICAgICAgICAgVmFsdWUqIGxzYlZhbHVl
ID0gbGVmdC0+Y2hpbGQoMSk7CisgICAgICAgICAgICAgICAgVmFsdWUqIGRWYWx1ZSA9IHJpZ2h0
LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbWFza1ZhbHVlMiA9IHJpZ2h0LT5j
aGlsZCgxKTsKKyAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMoblZhbHVlKSB8
fCBtX2xvY2tlZC5jb250YWlucyhkVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKCFtYXNrVmFsdWUxLT5oYXNJbnQoKSB8fCAhaW1t
KGxzYlZhbHVlKSB8fCBsc2JWYWx1ZS0+YXNJbnQoKSA8IDAgfHwgIW1hc2tWYWx1ZTItPmhhc0lu
dCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAg
ICB1aW50NjRfdCBsc2IgPSBsc2JWYWx1ZS0+YXNJbnQoKTsKKyAgICAgICAgICAgICAgICB1aW50
NjRfdCBtYXNrMSA9IG1hc2tWYWx1ZTEtPmFzSW50KCk7CisgICAgICAgICAgICAgICAgdWludDY0
X3QgbWFzazFTaGlmdEFtb3VudCA9IFdURjo6Y291bnRUcmFpbGluZ1plcm9zKG1hc2sxKTsKKyAg
ICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29kZSA9PSBFeHRyYWN0SW5zZXJ0
Qml0ZmllbGRBdExvd0VuZDMyID8gMzIgOiA2NDsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YXNp
emUgPT0gMzIpCisgICAgICAgICAgICAgICAgICAgIG1hc2sxICY9IDB4ZmZmZmZmZmY7CisgICAg
ICAgICAgICAgICAgbWFzazEgPj49IG1hc2sxU2hpZnRBbW91bnQ7CisgICAgICAgICAgICAgICAg
aWYgKCFtYXNrMSB8fCBtYXNrMSAmIChtYXNrMSArIDEpIHx8IG1hc2sxU2hpZnRBbW91bnQgIT0g
bHNiKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
dWludDY0X3Qgd2lkdGggPSBXVEY6OmJpdENvdW50KG1hc2sxKTsKKyAgICAgICAgICAgICAgICBp
ZiAobHNiICsgd2lkdGggPiBkYXRhc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgICAgICAgICAgdWludDY0X3QgbWFzazIgPSBtYXNrVmFsdWUyLT5hc0lu
dCgpOworCisgICAgICAgICAgICAgICAgYXV0byBpc1ZhbGlkTWFzazIgPSBbJl0gKCkgLT4gYm9v
bCB7CisgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG1hc2sgPSAobWFzazEgXiBtYXNrMik7
CisgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxvd2VyU2V0ID0gMHhmZmZmZmZmZjsKKyAg
ICAgICAgICAgICAgICAgICAgdWludDY0X3QgZnVsbFNldCA9IDB4ZmZmZmZmZmZmZmZmZmZmZjsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFzaXplID09IDMyID8gISgobWFzayAmIGxv
d2VyU2V0KSBeIGxvd2VyU2V0KSA6ICEobWFzayBeIGZ1bGxTZXQpOworICAgICAgICAgICAgICAg
IH07CisKKyAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRNYXNrMigpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBUbXAgcmVzdWx0ID0gdG1w
KG1fdmFsdWUpOworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUobV92
YWx1ZS0+dHlwZSgpKSwgdG1wKGRWYWx1ZSksIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgYXBw
ZW5kKG9wY29kZSwgdG1wKG5WYWx1ZSksIGltbShsc2JWYWx1ZSksIGltbSh3aWR0aCksIHJlc3Vs
dCk7CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobGVmdC0+Y2hpbGQoMCkpOworICAg
ICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOworICAgICAgICAgICAgICAgIGNvbW1p
dEludGVybmFsKHJpZ2h0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH07CisKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRCRlhJTChsZWZ0LCByaWdodCkgfHwg
dHJ5QXBwZW5kQkZYSUwocmlnaHQsIGxlZnQpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgLy8gT1JOIFBhdHRlcm46IGQgPSBuIHwgKG0gXiAtMSkKKyAgICAgICAgICAg
IGF1dG8gdHJ5QXBwZW5kT1JOID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBi
b29sIHsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBl
KE9yTm90MzIsIE9yTm90NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgaWYg
KCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSAKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChyaWdo
dC0+b3Bjb2RlKCkgIT0gQml0WG9yIHx8ICFjYW5CZUludGVybmFsKHJpZ2h0KSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgVmFsdWUqIG5WYWx1
ZSA9IGxlZnQ7CisgICAgICAgICAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJpZ2h0LT5jaGlsZCgw
KTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbWludXNPbmUgPSByaWdodC0+Y2hpbGQoMSk7Cisg
ICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKG5WYWx1ZSkgfHwgbV9sb2NrZWQu
Y29udGFpbnMobVZhbHVlKSB8fCAhbWludXNPbmUtPmhhc0ludCgpIHx8ICFtaW51c09uZS0+aXNJ
bnQoLTEpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAg
ICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoblZhbHVlKSwgdG1wKG1WYWx1ZSksIHRtcChtX3ZhbHVl
KSk7CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOworICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHRyeUFw
cGVuZE9STihsZWZ0LCByaWdodCkgfHwgdHJ5QXBwZW5kT1JOKHJpZ2h0LCBsZWZ0KSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgIGFwcGVuZEJpbk9wPE9yMzIsIE9yNjQs
IE9yRG91YmxlLCBPckZsb2F0LCBDb21tdXRhdGl2ZT4obGVmdCwgcmlnaHQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yODk5LDcgKzI5NzMsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgLy8gVUJGSVogUGF0dGVybjogZCA9IChuICYgbWFzaykgPDwgbHNiIAogICAgICAg
ICAgICAgLy8gV2hlcmU6IG1hc2sgPSAoMSA8PCB3aWR0aCkgLSAxCiAgICAgICAgICAgICBhdXRv
IHRyeUFwcGVuZFVCRlogPSBbJl0gKCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgQWlyOjpP
cGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShVYmZpejMyLCBVYmZpejY0LCBtX3ZhbHVlLT50
eXBlKCkpOworICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5
cGUoSW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyLCBJbnNlcnRVbnNpZ25lZEJpdGZpZWxk
SW5aZXJvNjQsIG1fdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlk
Rm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGlmIChsZWZ0
LT5vcGNvZGUoKSAhPSBCaXRBbmQgfHwgIWNhbkJlSW50ZXJuYWwobGVmdCkpCkBAIC0yOTE1LDcg
KzI5ODksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmICghbWFzayB8fCBtYXNrICYg
KG1hc2sgKyAxKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgICAgIHVpbnQ2NF90IHdpZHRoID0gV1RGOjpiaXRDb3VudChtYXNrKTsKLSAgICAgICAgICAg
ICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29kZSA9PSBVYmZpejMyID8gMzIgOiA2NDsKKyAg
ICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29kZSA9PSBJbnNlcnRVbnNpZ25l
ZEJpdGZpZWxkSW5aZXJvMzIgPyAzMiA6IDY0OwogICAgICAgICAgICAgICAgIGlmIChsc2IgKyB3
aWR0aCA+IGRhdGFzaXplKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTI5NDIsNyArMzAxNiw0NCBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBa
U2hyOiB7Ci0gICAgICAgICAgICBhcHBlbmRTaGlmdDxVcnNoaWZ0MzIsIFVyc2hpZnQ2ND4obV92
YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgIFZhbHVlKiBs
ZWZ0ID0gbV92YWx1ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSBtX3Zh
bHVlLT5jaGlsZCgxKTsKKworICAgICAgICAgICAgLy8gVUJGWCBQYXR0ZXJuOiBkID0gKG4gJiBt
YXNrKSA+PiBsc2IKKyAgICAgICAgICAgIC8vIFdoZXJlOiBtYXNrID0gKCgxIDw8IHdpZHRoKSAt
IDEpIDw8IGxzYgorICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRVQkZYID0gWyZdICgpIC0+IGJv
b2wgeworICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUo
RXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMiwgRXh0cmFjdFVuc2lnbmVkQml0ZmllbGQ2NCwgbV92
YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKG9wY29kZSwg
QXJnOjpUbXAsIEFyZzo6SW1tLCBBcmc6OkltbSwgQXJnOjpUbXApKSAKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChsZWZ0LT5vcGNvZGUoKSAh
PSBCaXRBbmQgfHwgIWNhbkJlSW50ZXJuYWwobGVmdCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIFZhbHVlKiBuVmFsdWUgPSBsZWZ0LT5jaGls
ZCgwKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbWFza1ZhbHVlID0gbGVmdC0+Y2hpbGQoMSk7
CisgICAgICAgICAgICAgICAgVmFsdWUqIGxzYlZhbHVlID0gcmlnaHQ7CisgICAgICAgICAgICAg
ICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKG5WYWx1ZSkgfHwgIW1hc2tWYWx1ZS0+aGFzSW50KCkg
fHwgIWltbShsc2JWYWx1ZSkgfHwgbHNiVmFsdWUtPmFzSW50KCkgPCAwKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBsc2IgPSBs
c2JWYWx1ZS0+YXNJbnQoKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBtYXNrID0gbWFza1Zh
bHVlLT5hc0ludCgpOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IG1hc2tTaGlmdEFtb3VudCA9
IFdURjo6Y291bnRUcmFpbGluZ1plcm9zKG1hc2spOworICAgICAgICAgICAgICAgIG1hc2sgPj49
IG1hc2tTaGlmdEFtb3VudDsKKyAgICAgICAgICAgICAgICBpZiAoIW1hc2sgfHwgbWFzayAmICht
YXNrICsgMSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB1aW50NjRfdCB3aWR0aCA9IFdURjo6Yml0Q291bnQobWFzayk7CisgICAgICAgICAgICAg
ICAgdWludDY0X3QgZGF0YXNpemUgPSBvcGNvZGUgPT0gRXh0cmFjdFVuc2lnbmVkQml0ZmllbGQz
MiA/IDMyIDogNjQ7CisgICAgICAgICAgICAgICAgaWYgKGxzYiArIHdpZHRoID4gZGF0YXNpemUp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIGFw
cGVuZChvcGNvZGUsIHRtcChuVmFsdWUpLCBpbW0obHNiVmFsdWUpLCBpbW0od2lkdGgpLCB0bXAo
bV92YWx1ZSkpOworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYg
KHRyeUFwcGVuZFVCRlgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGFwcGVuZFNoaWZ0PFVyc2hpZnQzMiwgVXJzaGlmdDY0PihsZWZ0LCByaWdodCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IDNkZGFkZTc3MDhlYjRjN2I0MmM1N2JiYTA2MjljNmU5
ZmRmNjU4ZmQuLjU2ZTliMmEwMjk0NmFhZjcxZWI3ODVmOTA2YmQwZDlkYmUwYzg3Y2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTYyNyw2
ICs2MjcsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1f
dmFsdWUtPmlzSW50ZWdlcigpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTdWIo
TmVnKHZhbHVlKSwgMSkKKyAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEJpdFhvcih2YWx1
ZSwgLTEpCisgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9
PSBOZWcgJiYgbV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDEpKSB7CisgICAgICAgICAgICAgICAg
ICAgIFZhbHVlKiBtaW51c09uZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNo
aWxkKDApLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDMyKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbWludXNPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3QzMlZhbHVlPihtX2luZGV4
LCBtX3ZhbHVlLT5vcmlnaW4oKSwgLTEpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICBtaW51c09uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25z
dDY0VmFsdWU+KG1faW5kZXgsIG1fdmFsdWUtPm9yaWdpbigpLCAtMSk7CisgICAgICAgICAgICAg
ICAgICAgIHJlcGxhY2VXaXRoTmV3PFZhbHVlPihCaXRYb3IsIG1fdmFsdWUtPm9yaWdpbigpLCBt
X3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCksIG1pbnVzT25lKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgLy8gVHVybiB0
aGlzOiBTdWIodmFsdWUsIGNvbnN0YW50KQogICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczog
QWRkKHZhbHVlLCAtY29uc3RhbnQpCiAgICAgICAgICAgICAgICAgaWYgKFZhbHVlKiBuZWdhdGVk
Q29uc3RhbnQgPSBtX3ZhbHVlLT5jaGlsZCgxKS0+bmVnQ29uc3RhbnQobV9wcm9jKSkgewpAQCAt
MTAzNyw2ICsxMDQ5LDM3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQml0QW5kKFpTaHIodmFsdWUs
IHNoaWZ0QW1vdW50KSwgbWFzaykKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogWlNocihCaXRB
bmQodmFsdWUsIG1hc2tTaGlmdCksIHNoaWZ0QW1vdW50KQorICAgICAgICAgICAgLy8gQ29uZGl0
aW9uczoKKyAgICAgICAgICAgIC8vIDEuIG1hc2sgPSAoMSA8PCB3aWR0aCkgLSAxCisgICAgICAg
ICAgICAvLyAyLiBtYXNrU2hpZnQgPSBtYXNrIDw8IGxzYgorICAgICAgICAgICAgLy8gMy4gMCA8
PSBzaGlmdEFtb3VudCA8IGRhdGFzaXplCisgICAgICAgICAgICAvLyA0LiAwIDwgd2lkdGggPCBk
YXRhc2l6ZQorICAgICAgICAgICAgLy8gNS4gc2hpZnRBbW91bnQgKyB3aWR0aCA8PSBkYXRhc2l6
ZQorICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBaU2hyCisg
ICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpLT5oYXNJbnQoKQor
ICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgxKS0+YXNJbnQoKSA+
PSAwCisgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMSktPmhhc0ludCgpKSB7Cisg
ICAgICAgICAgICAgICAgdWludDY0X3Qgc2hpZnRBbW91bnQgPSBtX3ZhbHVlLT5jaGlsZCgwKS0+
Y2hpbGQoMSktPmFzSW50KCk7CisgICAgICAgICAgICAgICAgdWludDY0X3QgbWFzayA9IG1fdmFs
dWUtPmNoaWxkKDEpLT5hc0ludCgpOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IHdpZHRoID0g
V1RGOjpiaXRDb3VudChtYXNrKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9
IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDY0ID8gNjQgOiAzMjsK
KyAgICAgICAgICAgICAgICBib29sIGlzVmFsaWRTaGlmdEFtb3VudCA9IHNoaWZ0QW1vdW50IDwg
ZGF0YXNpemU7CisgICAgICAgICAgICAgICAgYm9vbCBpc1ZhbGlkTWFzayA9IG1hc2sgJiYgISht
YXNrICYgKG1hc2sgKyAxKSkgJiYgd2lkdGggPCBkYXRhc2l6ZTsKKyAgICAgICAgICAgICAgICBp
ZiAoaXNWYWxpZFNoaWZ0QW1vdW50ICYmIGlzVmFsaWRNYXNrICYmIHNoaWZ0QW1vdW50ICsgd2lk
dGggPD0gZGF0YXNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgbWFza1NoaWZ0
ID0gbWFzayA8PCBzaGlmdEFtb3VudDsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG1hc2tT
aGlmdFZhbHVlOworICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YXNpemUgPT0gMzIpCisgICAg
ICAgICAgICAgICAgICAgICAgICBtYXNrU2hpZnRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dDxDb25zdDMyVmFsdWU+KG1faW5kZXgsIG1fdmFsdWUtPm9yaWdpbigpLCBtYXNrU2hpZnQpOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtYXNrU2hp
ZnRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdDY0VmFsdWU+KG1faW5kZXgsIG1f
dmFsdWUtPm9yaWdpbigpLCBtYXNrU2hpZnQpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSog
Yml0QW5kVmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIEJpdEFu
ZCwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKSwgbWFza1No
aWZ0VmFsdWUpOworICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aE5ldzxWYWx1ZT4oWlNo
ciwgbV92YWx1ZS0+b3JpZ2luKCksIGJpdEFuZFZhbHVlLCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hp
bGQoMSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQml0QW5kKFpTaHIodmFs
dWUsIHNoaWZ0QW1vdW50KSwgbWFzaykKICAgICAgICAgICAgIC8vIENvbmRpdGlvbnM6CiAgICAg
ICAgICAgICAvLyAxLiBtYXNrID0gKDEgPDwgd2lkdGgpIC0gMQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggYTZhMTU4ODY3M2E0MjUxYjMx
NGY0MGI2NzFlOGRjMzRlYTJkNTQ2MS4uZjQ0Y2JmMGY2NmUwNTQ3NGRmNTQ3YjAwNTU5NzJmZGYw
MTQzNjkxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNv
ZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5v
cGNvZGVzCkBAIC0zNjMsMjQgKzM2Myw2IEBAIEFuZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICB4
ODY6IEltbSwgQWRkcgogICAgIHg4NjogSW1tLCBJbmRleAogCi1hcm02NDogVWJmeDMyIFU6Rzoz
MiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKLSAgICBUbXAsIEltbSwgSW1tLCBUbXAKLQotYXJt
NjQ6IFViZng2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKLSAgICBUbXAsIEltbSwg
SW1tLCBUbXAKLQotYXJtNjQ6IFViZml6MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6Rzoz
MgotICAgIFRtcCwgSW1tLCBJbW0sIFRtcAotCi1hcm02NDogVWJmaXo2NCBVOkc6NjQsIFU6Rzoz
MiwgVTpHOjMyLCBEOkc6NjQKLSAgICBUbXAsIEltbSwgSW1tLCBUbXAKLQotYXJtNjQ6IEJpdEZp
ZWxkSW5zZXJ0MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgotICAgIFRtcCwgSW1t
LCBJbW0sIFRtcAotCi1hcm02NDogQml0RmllbGRJbnNlcnQ2NCBVOkc6NjQsIFU6RzozMiwgVTpH
OjMyLCBEOkc6NjQKLSAgICBUbXAsIEltbSwgSW1tLCBUbXAKLQogNjQ6IEFuZDY0IFU6Rzo2NCwg
VTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCiAgICAgYXJtNjQ6IEJpdEltbTY0LCBU
bXAsIFRtcApAQCAtODMwLDYgKzgxMiw0OCBAQCB4ODZfNjQ6IFhjaGc2NCBVRDpHOjY0LCBVRDpH
OjY0IC9lZmZlY3RzCiAgICAgVG1wLCBBZGRyCiAgICAgVG1wLCBJbmRleAogCithcm02NDogRXh0
cmFjdFVuc2lnbmVkQml0ZmllbGQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisg
ICAgVG1wLCBJbW0sIEltbSwgVG1wCisKK2FybTY0OiBFeHRyYWN0VW5zaWduZWRCaXRmaWVsZDY0
IFU6Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAor
Cithcm02NDogSW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyIFU6RzozMiwgVTpHOjMyLCBV
Okc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IEluc2VydFVu
c2lnbmVkQml0ZmllbGRJblplcm82NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKKyAg
ICBUbXAsIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IEluc2VydEJpdEZpZWxkMzIgVTpHOjMyLCBV
Okc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCithcm02NDog
SW5zZXJ0Qml0RmllbGQ2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKKyAgICBUbXAs
IEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IENsZWFyQml0RmllbGQzMiBVOkc6MzIsIFU6RzozMiwg
WkQ6RzozMgorICAgIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IENsZWFyQml0RmllbGQ2NCBVOkc6
MzIsIFU6RzozMiwgRDpHOjY0CisgICAgSW1tLCBJbW0sIFRtcAorCithcm02NDogQ2xlYXJCaXRz
V2l0aE1hc2szMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wLCBUbXAKKwor
YXJtNjQ6IENsZWFyQml0c1dpdGhNYXNrNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRt
cCwgVG1wLCBUbXAKKworYXJtNjQ6IE9yTm90MzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAg
ICBUbXAsIFRtcCwgVG1wCisKK2FybTY0OiBPck5vdDY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQK
KyAgICBUbXAsIFRtcCwgVG1wCisKK2FybTY0OiBFeHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExvd0Vu
ZDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIEltbSwgSW1tLCBU
bXAKKworYXJtNjQ6IEV4dHJhY3RJbnNlcnRCaXRmaWVsZEF0TG93RW5kNjQgVTpHOjY0LCBVOkc6
MzIsIFU6RzozMiwgRDpHOjY0CisgICAgVG1wLCBJbW0sIEltbSwgVG1wCisKICMgVGhlIGZpcnN0
IG9wZXJhbmQgaXMgcmF4LgogIyBGSVhNRTogVGhpcyBmb3JtdWxhdGlvbiBtZWFucyB0aGF0IHRo
ZSBib29sZWFuIHJlc3VsdCBjYW5ub3QgYmUgcHV0IGluIGVheCwgZXZlbiB0aG91Z2ggYWxsIHVz
ZXJzCiAjIG9mIHRoaXMgd291bGQgYmUgT0sgd2l0aCB0aGF0LgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiMy5oCmluZGV4IDQ0YzBhNTBiYTExMjkwY2U2MWU0OGQ2ODNhNDFjZWQxYmJiNWMyNTYuLjhl
ZGJkZWZlODdiN2Y1NWRjZjJkYzUyNGFlYjAwMDZiOGZkMWZhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzLmgKQEAgLTQyOCw4ICs0MjgsMTQgQEAgdm9pZCB0ZXN0VWJmaXo2NEFuZFNoaWZ0
VmFsdWVNYXNrKCk7CiB2b2lkIHRlc3RVYmZpejY0QW5kU2hpZnRNYXNrVmFsdWUoKTsKIHZvaWQg
dGVzdFViZml6NjRTaGlmdEFuZCgpOwogdm9pZCB0ZXN0VWJmaXo2NEFuZFNoaWZ0KCk7Ci12b2lk
IHRlc3RCaXRGaWVsZEluc2VydDMyKCk7Ci12b2lkIHRlc3RCaXRGaWVsZEluc2VydDY0KCk7Cit2
b2lkIHRlc3RJbnNlcnRCaXRGaWVsZDMyKCk7Cit2b2lkIHRlc3RJbnNlcnRCaXRGaWVsZDY0KCk7
Cit2b2lkIHRlc3RFeHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDMyKCk7Cit2b2lkIHRlc3RF
eHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDY0KCk7Cit2b2lkIHRlc3RCSUMzMigpOwordm9p
ZCB0ZXN0QklDNjQoKTsKK3ZvaWQgdGVzdE9yTm90MzIoKTsKK3ZvaWQgdGVzdE9yTm90NjQoKTsK
IHZvaWQgdGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazMyKCk7CiB2b2lkIHRlc3RC
aXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2s2NCgpOwogdm9pZCB0ZXN0QmFzaWNTZWxlY3Qo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCmluZGV4IDk0YTdlMzRjYzdkODA5
ZGM5MmQwZGNkNDcyOTRlZmJiMDMxN2ZjZWQuLmNlOGExZjc3YjJhMmI5YjY5Mjg4MzBmZjU0MTQ0
MDE2YzBjMzYyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNf
Mi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcApAQCAtMzE1
OCwxMyArMzE1OCwxMyBAQCB2b2lkIHRlc3RVYmZpejY0QW5kU2hpZnQoKQogICAgIH0KIH0KIAot
dm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQzMigpCit2b2lkIHRlc3RJbnNlcnRCaXRGaWVsZDMyKCkK
IHsKICAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKICAgICAg
ICAgcmV0dXJuOwogICAgIHVpbnQzMl90IGQgPSAweGYwZjBmMGYwOwogICAgIHVpbnQzMl90IG4g
PSAweGZmZmZmZmZmOwotICAgIFZlY3Rvcjx1aW50MzJfdD4gbHNicyA9IHsgMSwgMiwgMTQsIDMw
LCAzMCB9OworICAgIFZlY3Rvcjx1aW50MzJfdD4gbHNicyA9IHsgMiwgMiwgMTQsIDMwLCAzMCB9
OwogICAgIFZlY3Rvcjx1aW50MzJfdD4gd2lkdGhzID0geyAzMCwgMywgMTcsIDEsIDIgfTsKIAog
ICAgIC8vIFRlc3QgUGF0dGVybjogZCA9ICgobiAmIG1hc2sxKSA8PCBsc2IpIHwgKGQgJiBtYXNr
MikKQEAgLTMyMzYsMTMgKzMyMzYsMTMgQEAgdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQzMigpCiAg
ICAgfQogfQogCi12b2lkIHRlc3RCaXRGaWVsZEluc2VydDY0KCkKK3ZvaWQgdGVzdEluc2VydEJp
dEZpZWxkNjQoKQogewogICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkg
PCAyKQogICAgICAgICByZXR1cm47CiAgICAgdWludDY0X3QgZCA9IDB4ZjBmMGYwZjBmMGYwZjBm
MDsKICAgICB1aW50NjRfdCBuID0gMHhmZmZmZmZmZmZmZmZmZmZmOwotICAgIFZlY3Rvcjx1aW50
NjRfdD4gbHNicyA9IHsgMSwgMzAsIDE0LCA2MiwgNjIgfTsKKyAgICBWZWN0b3I8dWludDY0X3Q+
IGxzYnMgPSB7IDIsIDMwLCAxNCwgNjIsIDYyIH07CiAgICAgVmVjdG9yPHVpbnQ2NF90PiB3aWR0
aHMgPSB7IDYyLCAzMywgMTcsIDEsIDIgfTsKIAogICAgIC8vIFRlc3QgUGF0dGVybjogZCA9ICgo
biAmIG1hc2sxKSA8PCBsc2IpIHwgKGQgJiBtYXNrMikKQEAgLTMzMDYsNiArMzMwNiwzOTkgQEAg
dm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQ2NCgpCiAgICAgfQogfQogCit2b2lkIHRlc3RFeHRyYWN0
SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDMyKCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZh
dWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworICAgIHVpbnQzMl90IGQgPSAw
eGYwZjBmMGYwOworICAgIHVpbnQzMl90IG4gPSAweGZmZmZmZmZmOworICAgIFZlY3Rvcjx1aW50
MzJfdD4gbHNicyA9IHsgMiwgMTAsIDE0LCAzMCB9OworICAgIFZlY3Rvcjx1aW50MzJfdD4gd2lk
dGhzID0geyAzMCwgMTEsIDE3LCAyIH07CisKKyAgICAvLyBCRlhJTCBQYXR0ZXJuOiBkID0gKChu
ID4+IGxzYikgJiBtYXNrMSkgfCAoZCAmIG1hc2syKQorICAgIC8vIFdoZXJlOiBtYXNrMSA9ICgo
MSA8PCB3aWR0aCkgLSAxKQorICAgIC8vICAgICAgICBtYXNrMiA9IH5tYXNrMQorICAgIGF1dG8g
dGVzdDEgPSBbJl0gKHVpbnQzMl90IGxzYiwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90IG1hc2sy
KSAtPiB1aW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBkVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBuVmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBsc2JW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsc2Ip
OworICAgICAgICBWYWx1ZSogbWFza1ZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBtYXNrMSk7CisgICAgICAgIFZhbHVlKiBtYXNrVmFsdWUyID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG1hc2syKTsKKwor
ICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
WlNociwgT3JpZ2luKCksIG5WYWx1ZSwgbHNiVmFsdWUpOworICAgICAgICBWYWx1ZSogbGVmdEFu
ZFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBz
aGlmdFZhbHVlLCBtYXNrVmFsdWUxKTsKKyAgICAgICAgVmFsdWUqIHJpZ2h0QW5kVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGRWYWx1ZSwgbWFz
a1ZhbHVlMik7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgbGVmdEFuZFZhbHVlLCByaWdodEFuZFZhbHVl
KSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlm
IChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJm
eGlsIik7CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDMyX3Q+KCpjb2RlLCBkLCBuKTsKKyAg
ICB9OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsc2JzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIHVpbnQzMl90IGxzYiA9IGxzYnMuYXQoaSk7CisgICAgICAgIHVpbnQzMl90IG1hc2sx
ID0gKDFVIDw8IHdpZHRocy5hdChpKSkgLSAxVTsKKyAgICAgICAgdWludDMyX3QgbWFzazIgPSB+
bWFzazE7CisgICAgICAgIENIRUNLKHRlc3QxKGxzYiwgbWFzazEsIG1hc2syKSA9PSAoKChuID4+
IGxzYikgJiBtYXNrMSkgfCAoZCAmIG1hc2syKSkpOworICAgIH0KKworICAgIC8vIEJGWElMIFBh
dHRlcm46IGQgPSAoKG4gJiBtYXNrMSkgPj4gbHNiKSB8IChkICYgbWFzazIpCisgICAgLy8gV2hl
cmU6IG1hc2sxID0gKCgxIDw8IHdpZHRoKSAtIDEpIDw8IGxzYgorICAgIC8vICAgICAgICBtYXNr
MiA9IH4obWFzazEgPj4gbHNiKQorICAgIGF1dG8gdGVzdDIgPSBbJl0gKHVpbnQzMl90IGxzYiwg
dWludDMyX3QgbWFzazEsIHVpbnQzMl90IG1hc2syKSAtPiB1aW50MzJfdCB7CisgICAgICAgIFBy
b2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworCisgICAgICAgIFZhbHVlKiBkVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7CisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBsc2JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsc2IpOworICAgICAgICBWYWx1ZSogbWFza1ZhbHVl
MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrMSk7
CisgICAgICAgIFZhbHVlKiBtYXNrVmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIG1hc2syKTsKKworICAgICAgICBWYWx1ZSogbGVmdEFuZFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBuVmFsdWUs
IG1hc2tWYWx1ZTEpOworICAgICAgICBWYWx1ZSogcmlnaHRBbmRWYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgZFZhbHVlLCBtYXNrVmFsdWUyKTsK
KyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFpTaHIsIE9yaWdpbigpLCBsZWZ0QW5kVmFsdWUsIGxzYlZhbHVlKTsKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdp
bigpLCBzaGlmdFZhbHVlLCByaWdodEFuZFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJmeGlsIik7CisgICAgICAgIHJldHVybiBpbnZv
a2U8dWludDMyX3Q+KCpjb2RlLCBkLCBuKTsKKyAgICB9OworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsc2JzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHVpbnQzMl90IGxzYiA9IGxzYnMu
YXQoaSk7CisgICAgICAgIHVpbnQzMl90IG1hc2sxID0gKCgxVSA8PCB3aWR0aHMuYXQoaSkpIC0g
MVUpIDw8IGxzYjsKKyAgICAgICAgdWludDMyX3QgbWFzazIgPSB+KG1hc2sxID4+IGxzYik7Cisg
ICAgICAgIENIRUNLKHRlc3QyKGxzYiwgbWFzazEsIG1hc2syKSA9PSAoKChuICYgbWFzazEpID4+
IGxzYikgfCAoZCAmIG1hc2syKSkpOworICAgIH0KK30KKwordm9pZCB0ZXN0RXh0cmFjdEluc2Vy
dEJpdGZpZWxkQXRMb3dFbmQ2NCgpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIz
T3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICB1aW50NjRfdCBkID0gMHhmMGYw
ZjBmMGYwZjBmMGYwOworICAgIHVpbnQ2NF90IG4gPSAweGZmZmZmZmZmZmZmZmZmZmY7CisgICAg
VmVjdG9yPHVpbnQ2NF90PiBsc2JzID0geyAyLCAzMCwgMTQsIDYyIH07CisgICAgVmVjdG9yPHVp
bnQ2NF90PiB3aWR0aHMgPSB7IDYyLCAzMywgMTcsIDIgfTsKKworICAgIC8vIEJGWElMIFBhdHRl
cm46IGQgPSAoKG4gPj4gbHNiKSAmIG1hc2sxKSB8IChkICYgbWFzazIpCisgICAgLy8gV2hlcmU6
IG1hc2sxID0gKCgxIDw8IHdpZHRoKSAtIDEpCisgICAgLy8gICAgICAgIG1hc2syID0gfm1hc2sx
CisgICAgYXV0byB0ZXN0MSA9IFsmXSAodWludDY0X3QgbHNiLCB1aW50NjRfdCBtYXNrMSwgdWlu
dDY0X3QgbWFzazIpIC0+IHVpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUq
IGRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGxzYlZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxzYik7CisgICAgICAgIFZhbHVlKiBtYXNrVmFs
dWUxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG1hc2sx
KTsKKyAgICAgICAgVmFsdWUqIG1hc2tWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgbWFzazIpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgblZhbHVlLCBs
c2JWYWx1ZSk7CisgICAgICAgIFZhbHVlKiBsZWZ0QW5kVmFsdWUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIHNoaWZ0VmFsdWUsIG1hc2tWYWx1ZTEpOwor
ICAgICAgICBWYWx1ZSogcmlnaHRBbmRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0QW5kLCBPcmlnaW4oKSwgZFZhbHVlLCBtYXNrVmFsdWUyKTsKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdp
bigpLCBsZWZ0QW5kVmFsdWUsIHJpZ2h0QW5kVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAiYmZ4aWwiKTsKKyAgICAgICAgcmV0dXJuIGlu
dm9rZTx1aW50NjRfdD4oKmNvZGUsIGQsIG4pOworICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxzYnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgdWludDY0X3QgbHNiID0gbHNi
cy5hdChpKTsKKyAgICAgICAgdWludDY0X3QgbWFzazEgPSAoMVVMTCA8PCB3aWR0aHMuYXQoaSkp
IC0gMVVMTDsKKyAgICAgICAgdWludDY0X3QgbWFzazIgPSB+bWFzazE7CisgICAgICAgIENIRUNL
KHRlc3QxKGxzYiwgbWFzazEsIG1hc2syKSA9PSAoKChuID4+IGxzYikgJiBtYXNrMSkgfCAoZCAm
IG1hc2syKSkpOworICAgIH0KKworICAgIC8vIEJGWElMIFBhdHRlcm46IGQgPSAoKG4gJiBtYXNr
MSkgPj4gbHNiKSB8IChkICYgbWFzazIpCisgICAgLy8gV2hlcmU6IG1hc2sxID0gKCgxIDw8IHdp
ZHRoKSAtIDEpIDw8IGxzYgorICAgIC8vICAgICAgICBtYXNrMiA9IH4obWFzazEgPj4gbHNiKQor
ICAgIGF1dG8gdGVzdDIgPSBbJl0gKHVpbnQ2NF90IGxzYiwgdWludDY0X3QgbWFzazEsIHVpbnQ2
NF90IG1hc2syKSAtPiB1aW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBk
VmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBsc2JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsc2IpOworICAgICAgICBWYWx1ZSogbWFza1ZhbHVl
MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrMSk7
CisgICAgICAgIFZhbHVlKiBtYXNrVmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIG1hc2syKTsKKworICAgICAgICBWYWx1ZSogbGVmdEFuZFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBuVmFsdWUs
IG1hc2tWYWx1ZTEpOworICAgICAgICBWYWx1ZSogcmlnaHRBbmRWYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgZFZhbHVlLCBtYXNrVmFsdWUyKTsK
KyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFpTaHIsIE9yaWdpbigpLCBsZWZ0QW5kVmFsdWUsIGxzYlZhbHVlKTsKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdp
bigpLCBzaGlmdFZhbHVlLCByaWdodEFuZFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJmeGlsIik7CisgICAgICAgIHJldHVybiBpbnZv
a2U8dWludDY0X3Q+KCpjb2RlLCBkLCBuKTsKKyAgICB9OworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsc2JzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHVpbnQ2NF90IGxzYiA9IGxzYnMu
YXQoaSk7CisgICAgICAgIHVpbnQ2NF90IG1hc2sxID0gKCgxVUxMIDw8IHdpZHRocy5hdChpKSkg
LSAxVUxMKSA8PCBsc2I7CisgICAgICAgIHVpbnQ2NF90IG1hc2syID0gfihtYXNrMSA+PiBsc2Ip
OworICAgICAgICBDSEVDSyh0ZXN0Mihsc2IsIG1hc2sxLCBtYXNrMikgPT0gKCgobiAmIG1hc2sx
KSA+PiBsc2IpIHwgKGQgJiBtYXNrMikpKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdEJJQzMyKCkK
K3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAmICgtbSAtIDEpCisgICAg
YXV0byB0ZXN0MSA9IFsmXSAoaW50MzJfdCBuLCBpbnQzMl90IG0pIC0+IGludDMyX3QgeworICAg
ICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogY29uc3QxID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOworCisgICAgICAgIFZhbHVlKiBuZWdW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgbVZhbHVl
KTsKKyAgICAgICAgVmFsdWUqIHN1YlZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBTdWIsIE9yaWdpbigpLCBuZWdWYWx1ZSwgY29uc3QxKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCks
IG5WYWx1ZSwgc3ViVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3Ry
dWN0aW9uKCpjb2RlLCAiYmljIik7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50MzJfdD4oKmNv
ZGUsIG4sIG0pOworICAgIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICYgKG0gXiAt
MSkKKyAgICBhdXRvIHRlc3QyID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSkgLT4gaW50MzJf
dCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBtaW51c09uZVZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKTsKKworICAg
ICAgICBWYWx1ZSogeG9yVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhv
ciwgT3JpZ2luKCksIG1WYWx1ZSwgbWludXNPbmVWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigp
LCBuVmFsdWUsIHhvclZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgImJpYyIpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+KCpj
b2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IENIRUNLKHRlc3QxKG4udmFsdWUsIG0udmFsdWUpID09IChuLnZhbHVlICYgKC1tLnZhbHVlIC0g
MSkpKTsKKyAgICAgICAgICAgIENIRUNLKHRlc3QyKG4udmFsdWUsIG0udmFsdWUpID09IChuLnZh
bHVlICYgKG0udmFsdWUgXiAtMSkpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0
QklDNjQoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAy
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICYgKC1tIC0g
MSkKKyAgICBhdXRvIHRlc3QxID0gWyZdIChpbnQ2NF90IG4sIGludDY0X3QgbSkgLT4gaW50NjRf
dCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZh
bHVlKiBjb25zdDEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMSk7CisKKyAgICAgICAgVmFsdWUqIG5lZ1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBOZWcsIE9yaWdpbigpLCBtVmFsdWUpOworICAgICAgICBWYWx1ZSogc3ViVmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5lZ1ZhbHVlLCBj
b25zdDEpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgblZhbHVlLCBzdWJWYWx1ZSkpOworCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgp
KQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJiaWMiKTsKKyAgICAg
ICAgcmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIC8v
IFRlc3QgUGF0dGVybjogZCA9IG4gJiAobSBeIC0xKQorICAgIGF1dG8gdGVzdDIgPSBbJl0gKGlu
dDY0X3QgbiwgaW50NjRfdCBtKSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAg
VmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIG1pbnVzT25lVmFsdWUgPSByb290LT5h
cHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpOworCisgICAgICAgIFZh
bHVlKiB4b3JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmln
aW4oKSwgbVZhbHVlLCBtaW51c09uZVZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIG5WYWx1
ZSwgeG9yVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9u
KCpjb2RlLCAiYmljIik7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50NjRfdD4oKmNvZGUsIG4s
IG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAg
ICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgQ0hFQ0so
dGVzdDEobi52YWx1ZSwgbS52YWx1ZSkgPT0gKG4udmFsdWUgJiAoLW0udmFsdWUgLSAxTEwpKSk7
CisgICAgICAgICAgICBDSEVDSyh0ZXN0MihuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSAm
IChtLnZhbHVlIF4gLTFMTCkpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0T3JO
b3QzMigpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gfCAoLW0gLSAx
KQorICAgIGF1dG8gdGVzdDEgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBtKSAtPiBpbnQzMl90
IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGNvbnN0MSA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKworICAgICAgICBWYWx1
ZSogbmVnVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCks
IG1WYWx1ZSk7CisgICAgICAgIFZhbHVlKiBzdWJWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgbmVnVmFsdWUsIGNvbnN0MSk7CisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRPciwgT3Jp
Z2luKCksIG5WYWx1ZSwgc3ViVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKKworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJvcm4iKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQz
Ml90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4g
fCAobSBeIC0xKQorICAgIGF1dG8gdGVzdDIgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBtKSAt
PiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
IAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIG1pbnVzT25l
VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEp
OworCisgICAgICAgIFZhbHVlKiB4b3JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0WG9yLCBPcmlnaW4oKSwgbVZhbHVlLCBtaW51c09uZVZhbHVlKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBP
cmlnaW4oKSwgblZhbHVlLCB4b3JWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBp
bGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJvcm4iKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQz
Ml90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVy
YW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAg
ICAgICAgICBDSEVDSyh0ZXN0MShuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSB8ICgtbS52
YWx1ZSAtIDEpKSk7CisgICAgICAgICAgICBDSEVDSyh0ZXN0MihuLnZhbHVlLCBtLnZhbHVlKSA9
PSAobi52YWx1ZSB8IChtLnZhbHVlIF4gLTEpKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgdGVzdE9yTm90NjQoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExl
dmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBu
IHwgKC1tIC0gMSkKKyAgICBhdXRvIHRlc3QxID0gWyZdIChpbnQ2NF90IG4sIGludDY0X3QgbSkg
LT4gaW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Cisg
ICAgICAgIFZhbHVlKiBjb25zdDEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMSk7CisKKyAgICAgICAgVmFsdWUqIG5lZ1ZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBtVmFsdWUpOworICAgICAgICBWYWx1ZSog
c3ViVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5l
Z1ZhbHVlLCBjb25zdDEpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisg
ICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBuVmFsdWUsIHN1YlZhbHVlKSk7
CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChp
c0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm9ybiIp
OworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9Owor
CisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiB8IChtIF4gLTEpCisgICAgYXV0byB0ZXN0MiA9
IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0pIC0+IGludDY0X3QgeworICAgICAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSog
bVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogbWludXNPbmVWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7CisKKyAg
ICAgICAgVmFsdWUqIHhvclZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRY
b3IsIE9yaWdpbigpLCBtVmFsdWUsIG1pbnVzT25lVmFsdWUpOworICAgICAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigp
LCBuVmFsdWUsIHhvclZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgIm9ybiIpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpj
b2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IENIRUNLKHRlc3QxKG4udmFsdWUsIG0udmFsdWUpID09IChuLnZhbHVlIHwgKC1tLnZhbHVlIC0g
MUxMKSkpOworICAgICAgICAgICAgQ0hFQ0sodGVzdDIobi52YWx1ZSwgbS52YWx1ZSkgPT0gKG4u
dmFsdWUgfCAobS52YWx1ZSBeIC0xTEwpKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQg
dGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazMyKCkKIHsKICAgICAvLyBUdXJuIHRo
aXM6ICh0bXAgPj4gaW1tKSAmIG1hc2sgCkBAIC00MTk4LDggKzQ1OTEsMTQgQEAgdm9pZCBhZGRC
aXRUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQo
KT4+PiYgdGFza3MpCiAgICAgUlVOKHRlc3RVYmZpejY0QW5kU2hpZnRNYXNrVmFsdWUoKSk7CiAg
ICAgUlVOKHRlc3RVYmZpejY0U2hpZnRBbmQoKSk7CiAgICAgUlVOKHRlc3RVYmZpejY0QW5kU2hp
ZnQoKSk7Ci0gICAgUlVOKHRlc3RCaXRGaWVsZEluc2VydDMyKCkpOwotICAgIFJVTih0ZXN0Qml0
RmllbGRJbnNlcnQ2NCgpKTsKKyAgICBSVU4odGVzdEluc2VydEJpdEZpZWxkMzIoKSk7CisgICAg
UlVOKHRlc3RJbnNlcnRCaXRGaWVsZDY0KCkpOworICAgIFJVTih0ZXN0RXh0cmFjdEluc2VydEJp
dGZpZWxkQXRMb3dFbmQzMigpKTsKKyAgICBSVU4odGVzdEV4dHJhY3RJbnNlcnRCaXRmaWVsZEF0
TG93RW5kNjQoKSk7CisgICAgUlVOKHRlc3RCSUMzMigpKTsKKyAgICBSVU4odGVzdEJJQzY0KCkp
OworICAgIFJVTih0ZXN0T3JOb3QzMigpKTsKKyAgICBSVU4odGVzdE9yTm90NjQoKSk7CiAgICAg
UlVOKHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2szMigpKTsKICAgICBSVU4odGVz
dEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazY0KCkpOwogICAgIFJVTih0ZXN0Qml0QW5k
QXJncyg0MywgNDMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAppbmRleCAyN2I2MzFkNGNjNzNhZDViYTAxY2RjOTI4Yjc3OGE0MzliYzBlZGYyLi4z
ZDA4NzI4MDgyN2QyYWVmN2MzMmVlZDJhZmQxODYyZjRjMzlhZGM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNjc1NCw3ICsxNjc1NCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtZXJnZS0+YXBwZW5kU29tZVJlZ2lzdGVyKHB0cik7
CiAgICAgICAgICAgICBtZXJnZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAg
ICAgaml0Lm1vdmUocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAg
ICAgICAgIGppdC5iaXRGaWVsZEluc2VydDY0KHBhcmFtc1sxXS5ncHIoKSwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoMCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDY0IC0gTWFjcm9B
c3NlbWJsZXI6Om1heE51bWJlck9mQWxsb3dlZFBBQ0JpdHMpLCBwYXJhbXNbMF0uZ3ByKCkpOwor
ICAgICAgICAgICAgICAgIGppdC5pbnNlcnRCaXRGaWVsZDY0KHBhcmFtc1sxXS5ncHIoKSwgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDY0
IC0gTWFjcm9Bc3NlbWJsZXI6Om1heE51bWJlck9mQWxsb3dlZFBBQ0JpdHMpLCBwYXJhbXNbMF0u
Z3ByKCkpOwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIHJlc3VsdCA9IGRvVW50YWdB
cnJheVB0cihtZXJnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHAKaW5kZXggNDk4MTdhN2FkZDU0MGI3MTZmZWUyNmRlNDM3NmM2MTA4MjdlNTdlMi4u
ZDM2ZWI3MWI5YWRkMzZkNDQyNjQ5ODRiODdkZWQyMDIwYjczYTA2NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMTExMSw3ICsxMTExLDcg
QEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpL
aW5kIGtpbmQsIEdQUlJlZyBzdG9yYWdlKQogICAgIGFkZFB0cihUcnVzdGVkSW1tUHRyKEdpZ2Fj
YWdlOjpiYXNlUHRyKGtpbmQpKSwgc3RvcmFnZSk7CiAjaWYgQ1BVKEFSTTY0RSkKICAgICBpZiAo
a2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKQotICAgICAgICBiaXRGaWVsZEluc2VydDY0KHN0
b3JhZ2UsIFRydXN0ZWRJbW0zMigwKSwgVHJ1c3RlZEltbTMyKDY0IC0gbWF4TnVtYmVyT2ZBbGxv
d2VkUEFDQml0cyksIHRlbXBSZWcpOworICAgICAgICBpbnNlcnRCaXRGaWVsZDY0KHN0b3JhZ2Us
IFRydXN0ZWRJbW0zMigwKSwgVHJ1c3RlZEltbTMyKDY0IC0gbWF4TnVtYmVyT2ZBbGxvd2VkUEFD
Qml0cyksIHRlbXBSZWcpOwogICAgIGlmIChza2lwLmlzU2V0KCkpCiAgICAgICAgIHNraXAubGlu
ayh0aGlzKTsKICNlbmRpZgpAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBl
cnM6OmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWcoR2lnYWNhZ2U6OktpbmQga2luZCwgR1BSUmVn
IHN0b3IKICAgICAgICAgICAgIEFTU0VSVChMb2dpY2FsSW1tZWRpYXRlOjpjcmVhdGU2NChHaWdh
Y2FnZTo6bWFzayhraW5kKSkuaXNWYWxpZCgpKTsKICAgICAgICAgICAgIGFuZFB0cihUcnVzdGVk
SW1tUHRyKEdpZ2FjYWdlOjptYXNrKGtpbmQpKSwgdGVtcFJlZyk7CiAgICAgICAgICAgICBhZGRQ
dHIoc2NyYXRjaCwgdGVtcFJlZyk7Ci0gICAgICAgICAgICBiaXRGaWVsZEluc2VydDY0KHRlbXBS
ZWcsIFRydXN0ZWRJbW0zMigwKSwgVHJ1c3RlZEltbTMyKDY0IC0gbWF4TnVtYmVyT2ZBbGxvd2Vk
UEFDQml0cyksIHN0b3JhZ2UpOworICAgICAgICAgICAgaW5zZXJ0Qml0RmllbGQ2NCh0ZW1wUmVn
LCBUcnVzdGVkSW1tMzIoMCksIFRydXN0ZWRJbW0zMig2NCAtIG1heE51bWJlck9mQWxsb3dlZFBB
Q0JpdHMpLCBzdG9yYWdlKTsKICNlbHNlCiAgICAgICAgICAgICBhbmRQdHIoVHJ1c3RlZEltbVB0
cihHaWdhY2FnZTo6bWFzayhraW5kKSksIHN0b3JhZ2UpOwogICAgICAgICAgICAgYWRkUHRyKHNj
cmF0Y2gsIHN0b3JhZ2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432447</attachid>
            <date>2021-06-28 19:06:48 -0700</date>
            <delta_ts>2021-06-28 21:05:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227202-20210628210647.patch</filename>
            <type>text/plain</type>
            <size>64847</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
M2RjMjc2YWQxOWE3YTc3NTE4MWFlMzdkMThhYTkzNWYxMGQ2ZGZkLi4yMDRjMWJkNTkzOTJkNGEy
NWUzZjA1NWQ1OTVjOTI5NGI3ZGU2MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNDggQEAKKzIwMjEtMDYtMjcgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBhIG5ldyBwYXR0ZXJuIHRvIGluc3RydWN0aW9uIHNlbGVjdG9y
IHRvIHVzZSBCSUMgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHRocmVlIG1vZGlmaWNh
dGlvbnM6CisgICAgICAgICAgICAxLiBBZGQgYml0IGNsZWFyIChCSUMpLCBvciBub3QgKE9STiks
IGFuZCBleHRyYWN0IGFuZCBpbnNlcnQgYml0ZmllbGQgYXQgbG93ZXIgZW5kIChGQlhJTCkgCisg
ICAgICAgICAgICAgICB0byBBaXIgb3Bjb2RlIHRvIHNlcnZlIGludHJ1Y2l0b24gc2VsZWN0b3Iu
CisgICAgICAgICAgICAyLiBBZGQgYml0ZmllbGQgY2xlYXIgKEJGQykgdG8gTWFjcm9Bc3NlbWJs
ZXIuCisgICAgICAgICAgICA0LiBEbyByZWZhY3RvcmluZyAtIHJlbmFtZSBBaXIgb3Bjb2RlcyBh
ZGRlZCBpbiB0aGUgcHJldmlvdXMgcGF0Y2hlcy4KKworICAgICAgICAtLS0tLS0tLS0tLS0tLS0t
LS0KKyAgICAgICAgIyMjIFBhcnQgQSBCSUMgIyMjCisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0t
LQorICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIGJpYyBSZCwgUm4sIFJt
CisKKyAgICAgICAgVGhlIEJJQyAoQml0IENsZWFyKSBpbnN0cnVjdGlvbiBwZXJmb3JtcyBhbiBB
TkQgb3BlcmF0aW9uIG9uIHRoZSBiaXRzIGluIFJuIHdpdGggdGhlIAorICAgICAgICBjb21wbGVt
ZW50cyBvZiB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSB2YWx1ZSBvZiBSbS4gVGhlIGlu
c3RydWN0aW9uIHNlbGVjdG9yIGNhbiAKKyAgICAgICAgdXRpbGl6ZSB0aGlzIHRvIGxvd2VyaW5n
IGNlcnRhaW4gcGF0dGVybnMgaW4gQjMgSVIgYmVmb3JlIGZ1cnRoZXIgQWlyIG9wdGltaXphdGlv
bi4gCisgICAgICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm5zIG9mIHRoaXMgaW5zdHJ1Y3Rpb24g
YXJlOgorCisgICAgICAgIFBhdHRlcm4gMToKKyAgICAgICAgICAgIGQgPSBuICYgKC1tIC0gMSkK
KworICAgICAgICBQYXR0ZXJuIDI6CisgICAgICAgICAgICBkID0gbiAmIChtIF4gLTEpCisKKyAg
ICAgICAgSW4gb3JkZXIgdG8gZ2V0IGJlbmVmaXRzIGZvciBjb21wbGVtZW50IG9wZXJhdGlvbiwg
Y3VycmVudCBpbnN0cnVjdGlvbiBzZWxlY3RvciB1c2VzIAorICAgICAgICBtdm4gaW5zdHJ1Y3Rp
b24gdG8gbG93ZXIgdGhlIHBhdHRlcm4gdmFsdWUgXiAtMS4gVGhlbiwgYSBuZXcgc3RyZW5ndGgg
cmVkdWN0aW9uIHJ1bGUgaXMgCisgICAgICAgIGludHJvZHVjZWQ6CisgICAgICAgICAgICBUdXJu
IHRoaXM6IC12YWx1ZSAtIDEgCisgICAgICAgICAgICBJbnRvIHRoaXM6IHZhbHVlIF4gLTEKKwor
ICAgICAgICBTbywgZCA9IG4gJiAobSBeIC0xKSBpcyBzZWxlY3RlZCBhcyB0aGUgY2Fub25pY2Fs
IGZvcm0uCisKKyAgICAgICAgR2l2ZW4gQjMgSVI6CisgICAgICAgIEludCBAMCA9IEFyZ3VtZW50
UmVnKCV4MCkKKyAgICAgICAgSW50IEAxID0gQXJndW1lbnRSZWcoJXgxKQorICAgICAgICBJbnQg
QDIgPSAtMQorICAgICAgICBJbnQgQDMgPSBCaXRYb3IoQDEsIEAyKQorICAgICAgICBJbnQgQDQg
PSBCaXRBbmQoQDAsIEAzKQorICAgICAgICBWb2lkQDUgPSBSZXR1cm4oQDQsIFRlcm1pbmFsKQor
CisgICAgICAgIEJlZm9yZSBBZGRpbmcgQklDOgorICAgICAgICAvLyBPbGQgb3B0aW1pemVkIEFJ
UgorICAgICAgICBOb3QgJXgxLCAleDEsICAgICAgQDMKKyAgICAgICAgQW5kICV4MCwgJXgxLCAl
eDAsIEA0CisgICAgICAgIFJldCAleDAsICAgICAgICAgICBANQorCisgICAgICAgIEFmdGVyIEFk
ZGluZyBCSUM6CisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAgIEJpYyAleDAs
ICV4MSwgJXgwLCBANAorICAgICAgICBSZXQgJXgwLCAgICAgICAgICAgQDUKKworICAgICAgICAt
LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjIFBhcnQgQSBPUk4gIyMjCisgICAgICAgIC0t
LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAg
IG9ybiBSZCwgUm4sIFJtCisKKyAgICAgICAgQml0d2lzZSBPUiBOT1QgKHNoaWZ0ZWQgcmVnaXN0
ZXIpIHBlcmZvcm1zIGEgYml0d2lzZSAoaW5jbHVzaXZlKSBPUiBvZiBhIHJlZ2lzdGVyIHZhbHVl
IAorICAgICAgICBSbiBhbmQgdGhlIGNvbXBsZW1lbnQgb2YgYW4gb3B0aW9uYWxseS1zaGlmdGVk
IHJlZ2lzdGVyIHZhbHVlIFJtLCBhbmQgd3JpdGVzIHRoZSByZXN1bHQgCisgICAgICAgIHRvIHRo
ZSBkZXN0aW5hdGlvbiByZWdpc3RlciBSZC4KKworICAgICAgICBUaGUgZXF1aXZhbGVudCBwYXR0
ZXJucyBvZiB0aGlzIGluc3RydWN0aW9uIGFyZToKKworICAgICAgICBQYXR0ZXJuIDE6CisgICAg
ICAgICAgICBkID0gbiB8ICgtbSAtIDEpCisKKyAgICAgICAgUGF0dGVybiAyOgorICAgICAgICAg
ICAgZCA9IG4gfCAobSBeIC0xKQorCisgICAgICAgIFRoZW4sIGQgPSBuIHwgKG0gXiAtMSkgaXMg
c2VsZWN0ZWQgYXMgdGhlIGNhbm9uaWNhbCBmb3JtLgorCisgICAgICAgIEdpdmVuIEIzIElSOgor
ICAgICAgICBJbnQgQDAgPSBBcmd1bWVudFJlZygleDApCisgICAgICAgIEludCBAMSA9IEFyZ3Vt
ZW50UmVnKCV4MSkKKyAgICAgICAgSW50IEAyID0gLTEKKyAgICAgICAgSW50IEAzID0gQml0WG9y
KEAxLCBAMikKKyAgICAgICAgSW50IEA0ID0gQml0T3IoQDAsIEAzKQorICAgICAgICBWb2lkQDUg
PSBSZXR1cm4oQDQsIFRlcm1pbmFsKQorCisgICAgICAgIEJlZm9yZSBBZGRpbmcgQklDOgorICAg
ICAgICAvLyBPbGQgb3B0aW1pemVkIEFJUgorICAgICAgICBOb3QgJXgxLCAleDEsICAgICAgQDMK
KyAgICAgICAgT3IgICV4MCwgJXgxLCAleDAsIEA0CisgICAgICAgIFJldCAleDAsICAgICAgICAg
ICBANQorCisgICAgICAgIEFmdGVyIEFkZGluZyBCSUM6CisgICAgICAgIC8vIE5ldyBvcHRpbWl6
ZWQgQUlSCisgICAgICAgIE9ybiAleDAsICV4MSwgJXgwLCBANAorICAgICAgICBSZXQgJXgwLCAg
ICAgICAgICAgQDUKKworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjIyMg
UGFydCBBIEZCWElMICMjIworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBH
aXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIGJmeGlsIFJkLCBSbiwgbHNiLCB3aWR0aAor
CisgICAgICAgIEJpdGZpZWxkIGV4dHJhY3QgYW5kIGluc2VydCBhdCBsb3cgZW5kKEZCWElMKSBj
b3BpZXMgYW55IG51bWJlciBvZiBsb3ctb3JkZXIgYml0cyAKKyAgICAgICAgZnJvbSBhIHNvdXJj
ZSByZWdpc3RlciBpbnRvIHRoZSBzYW1lIG51bWJlciBvZiBhZGphY2VudCBiaXRzIGF0IHRoZSBs
b3cgZW5kIGluIAorICAgICAgICB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIsIGxlYXZpbmcgb3Ro
ZXIgYml0cyB1bmNoYW5nZWQuCisKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybnMgb2Yg
dGhpcyBpbnN0cnVjdGlvbiBhcmU6CisKKyAgICAgICAgUGF0dGVybiAxOgorICAgICAgICBtYXNr
MSA9ICgxIDw8IHdpZHRoKSAtIDEKKyAgICAgICAgbWFzazIgPSB+bWFzazEKKyAgICAgICAgKChu
ID4+IGxzYikgJiBtYXNrMSkgfCAoZCAmIG1hc2syKQorCisgICAgICAgIFBhdHRlcm4gMjoKKyAg
ICAgICAgbWFzazEgPSAoKDEgPDwgd2lkdGgpIC0gMSkgPDwgbHNiCisgICAgICAgIG1hc2syID0g
fihtYXNrMSA+PiBsc2IpCisgICAgICAgICgobiAmIG1hc2sxKSA+PiBsc2IpIHwgKGQgJiBtYXNr
MikKKworICAgICAgICBUaGVuLCBpbnRyb2R1Y2UgYSBzdHJlbmd0aCByZWR1Y3Rpb24gcnVsZSBm
b3IgZWFzaWVyIHJlY29nbml6YXRpb24uCisgICAgICAgIFR1cm4gdGhpczogKHYgJiBtYXNrU2hp
ZnQpID4+IHNoaWZ0QW1vdW50CisgICAgICAgIEludG8gdGhpczogKHYgPj4gc2hpZnRBbW91bnQp
ICYgbWFzaworCisgICAgICAgIHdpdGggY29uc3RyYWludHM6CisgICAgICAgIDEuIG1hc2tTaGlm
dCA9IG1hc2sgPDwgbHNiCisgICAgICAgIDIuIG1hc2sgPSAoMSA8PCB3aWR0aCkgLSAxCisgICAg
ICAgIDMuIDAgPD0gc2hpZnRBbW91bnQgPCBkYXRhc2l6ZQorICAgICAgICA0LiAwIDwgd2lkdGgg
PCBkYXRhc2l6ZQorICAgICAgICA1LiBzaGlmdEFtb3VudCArIHdpZHRoIDw9IGRhdGFzaXplCisK
KyAgICAgICAgVGhlIGNhbm9uaWNhbCBmb3JtIHRvIG1hdGNoIEZCWElMIGlzIGQgPSAoKG4gPj4g
bHNiKSAmIG1hc2sxKSB8IChkICYgbWFzazIpLgorICAgICAgICAKKyAgICAgICAgR2l2ZW4gQjMg
SVI6CisgICAgICAgIEludCBAMCA9IEFyZ3VtZW50UmVnKCV4MCkKKyAgICAgICAgSW50IEAxID0g
QXJndW1lbnRSZWcoJXgxKQorICAgICAgICBJbnQgQDIgPSBsc2IKKyAgICAgICAgSW50IEAzID0g
bWFzazEKKyAgICAgICAgSW50IEA0ID0gbWFzazIKKyAgICAgICAgSW50IEA1ID0gQml0QW5kKEAx
LCBAMykKKyAgICAgICAgSW50IEA2ID0gQml0QW5kKEAwLCBANCkpCisgICAgICAgIEludCBANyA9
IFpTaHIoQDUsIEAyKQorICAgICAgICBJbnQgQDggPSBCaXRPcihANywgQDYpCisgICAgICAgIFZv
aWRAOSA9IFJldHVybihAOCwgVGVybWluYWwpCisKKyAgICAgICAgQmVmb3JlIEFkZGluZyBCSUM6
CisgICAgICAgIC8vIE9sZCBvcHRpbWl6ZWQgQUlSCisgICAgICAgIEFuZCAgICAgICAgICAgICAg
ICAgICAgICBtYXNrMiwgJXgwLCAgICV4MCwgICAgICBANgorICAgICAgICBFeHRyYWN0VW5zaWdu
ZWRCaXRmaWVsZCAgICAleDEsIGxzYiwgd2lkdGgsICV4MSwgQDcKKyAgICAgICAgT3IgICAgICAg
ICAgICAgICAgICAgICAgICAgJXgwLCAleDEsICAgJXgwLCAgICAgIEA4CisgICAgICAgIFJldCAg
ICAgICAgICAgICAgICAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgICBAOQorCisgICAgICAg
IEFmdGVyIEFkZGluZyBCSUM6CisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAg
IEV4dHJhY3RJbnNlcnRCaXRmaWVsZEF0TG93RW5kICV4MSwgbHNiLCB3aWR0aCwgJXgwLCBAOAor
ICAgICAgICBSZXQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAleDAsICAgICAgICAgICAgICAg
ICAgQDkKKworICAgICAgICAtLS0tLS0tLS0tLS0tLQorICAgICAgICAjIyMgUGFydCBCICMjIwor
ICAgICAgICAtLS0tLS0tLS0tLS0tLQorICAgICAgICBUaGUgQml0ZmllbGQgQ2xlYXIgKEJGQyks
IGxlYXZpbmcgb3RoZXIgYml0cyB1bmNoYW5nZWQsIGlzIHNpbWlsYXIgdG8gQkZJIHdoaWNoIGlz
IGFuIAorICAgICAgICBhbGlhcyBvZiBCRk0uIEdpdmVuIHRoZSBvcGVyYXRpb246CisKKyAgICAg
ICAgYmZjIFJkLCBsc2IsIHdpZHRoCisKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybiBv
ZiB0aGlzIGluc3RydWN0aW9uIGlzOgorCisgICAgICAgIG1hc2sgPSAoKDEgPDwgd2lkdGgpIC0g
MSkgPDwgbHNiCisgICAgICAgIGQgPSBkICYgfm1hc2sKKworICAgICAgICBTaW5jZSBtYXNrIGlz
IGEgY29uc3RhbnQgYW5kIEIzIHBlcmZvcm1zIGNvbnN0YW50IGZvbGQgaW4gdGhlIG9wdGltaXph
dGlvbiBwaGFzZSwgdGhpcyAKKyAgICAgICAgcGF0dGVybiB3aWxsIGRpcmVjdGx5IGxvd2VyIHRv
IHRoZSBCaXRBbmQgYmluYXJ5IG9wZXJhdGlvbi4gU28sIG5vIG5lZWQgdG8gbWF0Y2ggdGhpcyBw
YXR0ZXJuLgorCisgICAgICAgIC0tLS0tLS0tLS0tLS0tCisgICAgICAgICMjIyBQYXJ0IEMgIyMj
CisgICAgICAgIC0tLS0tLS0tLS0tLS0tCisgICAgICAgIEF0IE1hY3JvQXNzZW1ibGVyIGxldmVs
LCB0aGUgZW1pdHRlcnMgYXJlIGV4ZXBlY3RlZCB0byBiZSBleHByZXNzZWQgaW4gZW5nbGlzaCAK
KyAgICAgICAgKGUuZy4gc29tZXRoaW5nIGxpa2UgY2xlYXJCaXRGaWVsZCBmb3IgQkZDKS4gRG8g
cmVmYWN0b3JpbmcgdG8gcmVuYW1lIEFpciBvcGNvZGUgZm9yIAorICAgICAgICBVQkZYLCBVQkZJ
WiwgQkZJLCBhbmQgQklDLgorCisgICAgICAgICogYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmg6
CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpiZmMpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpleHRyYWN0VW5zaWduZWRCaXRmaWVsZDY0KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6aW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVybzMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6aW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVy
bzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6aW5zZXJ0Qml0RmllbGQz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omluc2VydEJpdEZpZWxkNjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpjbGVhckJpdEZpZWxkMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpjbGVhckJpdEZpZWxkNjQpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpjbGVhckJpdHNXaXRoTWFzazMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2xlYXJCaXRzV2l0aE1hc2s2NCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9yTm90MzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpvck5vdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6dWJmeDMyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6dWJmeDY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6dWJmaXozMik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OnViZml6NjQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpiaXRGaWVsZEluc2VydDMyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6Yml0RmllbGRJbnNlcnQ2NCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVy
L3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5U2lnbkV4dGVuZDMyKToK
KyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKEpT
Qzo6dGVzdEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIpOgorICAgICAgICAoSlNDOjp0ZXN0RXh0
cmFjdFVuc2lnbmVkQml0ZmllbGQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RJbnNlcnRVbnNpZ25l
ZEJpdGZpZWxkSW5aZXJvMzIpOgorICAgICAgICAoSlNDOjp0ZXN0SW5zZXJ0VW5zaWduZWRCaXRm
aWVsZEluWmVybzY0KToKKyAgICAgICAgKEpTQzo6dGVzdEluc2VydEJpdEZpZWxkMzIpOgorICAg
ICAgICAoSlNDOjp0ZXN0SW5zZXJ0Qml0RmllbGQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RDbGVh
ckJpdEZpZWxkMzIpOgorICAgICAgICAoSlNDOjp0ZXN0Q2xlYXJCaXRGaWVsZDY0KToKKyAgICAg
ICAgKEpTQzo6dGVzdENsZWFyQml0c1dpdGhNYXNrMzIpOgorICAgICAgICAoSlNDOjp0ZXN0Q2xl
YXJCaXRzV2l0aE1hc2s2NCk6CisgICAgICAgIChKU0M6OnRlc3RPck5vdDMyKToKKyAgICAgICAg
KEpTQzo6dGVzdE9yTm90NjQpOgorICAgICAgICAoSlNDOjp0ZXN0TXVsMzJTaWduRXh0ZW5kKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6dGVzdE11bFN1YlNpZ25FeHRlbmQzMik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OnRlc3RVYmZ4MzIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjp0ZXN0
VWJmeDY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6dGVzdFViZml6MzIpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjp0ZXN0VWJmaXo2NCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RC
aXRGaWVsZEluc2VydDMyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6dGVzdEJpdEZpZWxkSW5z
ZXJ0NjQpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAg
ICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29kZS5v
cGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18yLmNw
cDoKKyAgICAgICAgKHRlc3RJbnNlcnRCaXRGaWVsZDMyKToKKyAgICAgICAgKHRlc3RJbnNlcnRC
aXRGaWVsZDY0KToKKyAgICAgICAgKHRlc3RCSUMzMik6CisgICAgICAgICh0ZXN0QklDNjQpOgor
ICAgICAgICAodGVzdE9yTm90MzIpOgorICAgICAgICAodGVzdE9yTm90NjQpOgorICAgICAgICAo
YWRkQml0VGVzdHMpOgorICAgICAgICAodGVzdEJpdEZpZWxkSW5zZXJ0MzIpOiBEZWxldGVkLgor
ICAgICAgICAodGVzdEJpdEZpZWxkSW5zZXJ0NjQpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjYWdlV2l0aG91dFVudGFnZ2lu
Zyk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FnZUNvbmRpdGlvbmFsbHlBbmRV
bnRhZyk6CisKIDIwMjEtMDYtMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVzZSBsZHAgYW5kIHN0cCBtb3JlIGZvciBzYXZpbmcgLyByZXN0b3JpbmcgcmVnaXN0
ZXJzIG9uIEFSTTY0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BUk02NEFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02
NEFzc2VtYmxlci5oCmluZGV4IDc1OGNiZTQwMjc3OThlODMxZDJkMDNjYTg0OGVkOGIwNDgzNjVl
MTQuLmNiNGNiMWJjMDczMDFkZThlNjJiZmJiZWVkYjcxY2U0NzQ4Y2JkNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKQEAgLTgzMiw2
ICs4MzIsMTIgQEAgcHVibGljOgogICAgICAgICBpbnNuKGNvbmRpdGlvbmFsQnJhbmNoSW1tZWRp
YXRlKG9mZnNldCwgY29uZCkpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4K
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYmZjKFJlZ2lzdGVySUQgcmQsIGludCBsc2IsIGludCB3
aWR0aCkKKyAgICB7CisgICAgICAgIGJmaTxkYXRhc2l6ZT4ocmQsIEFSTTY0UmVnaXN0ZXJzOjp6
ciwgbHNiLCB3aWR0aCk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBiZmkoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgaW50
IGxzYiwgaW50IHdpZHRoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggMDY5YmQ0NmIzOTQxYzBhODZl
OGUzYTM2OTk0NGFhNGE5MGJjMDc1ZC4uMDg5MTU5NWI0ZGFhZTM0ZGY3ZGZlNzM3ZjIwOGIwZjAx
YjcyMzVhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTM5MCwyNiArMzkwLDYgQEAgcHVibGljOgogICAgICAg
ICBhbmQzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKLSAgICB2b2lkIHViZngz
MihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci51YmZ4PDMyPihkZXN0
LCBzcmMsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHVi
Zng2NChSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRo
LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci51YmZ4PDY0Pihk
ZXN0LCBzcmMsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHViZml6MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3
aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudWJmaXo8
MzI+KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOwotICAgIH0KLQotICAg
IHZvaWQgdWJmaXo2NChSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZElt
bTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci51
YmZpejw2ND4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Ci0gICAgfQot
CiAgICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kXzw2ND4oZGVzdCwgc3Jj
MSwgc3JjMik7CkBAIC00NjgsNiArNDQ4LDc3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJs
ZXIuYW5kXzw2ND4oZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAg
Ly8gQml0IE9wZXJhdGlvbnM6CisgICAgdm9pZCBleHRyYWN0VW5zaWduZWRCaXRmaWVsZDMyKFJl
Z2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnViZng8MzI+KGRlc3QsIHNy
YywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgZXh0cmFj
dFVuc2lnbmVkQml0ZmllbGQ2NChSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1
c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci51YmZ4PDY0PihkZXN0LCBzcmMsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAg
ICB9CisKKyAgICB2b2lkIGluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm8zMihSZWdpc3RlcklE
IHNyYywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci51YmZpejwzMj4oZGVzdCwgc3JjLCBsc2Iu
bV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBpbnNlcnRVbnNpZ25l
ZEJpdGZpZWxkSW5aZXJvNjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0
ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIudWJmaXo8NjQ+KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOworICAg
IH0KKworICAgIHZvaWQgaW5zZXJ0Qml0RmllbGQzMihSZWdpc3RlcklEIHNvdXJjZSwgVHJ1c3Rl
ZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5iZmk8MzI+KGRlc3QsIHNvdXJjZSwgbHNiLm1fdmFsdWUsIHdp
ZHRoLm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgaW5zZXJ0Qml0RmllbGQ2NChSZWdpc3Rl
cklEIHNvdXJjZSwgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iZmk8NjQ+KGRlc3QsIHNvdXJj
ZSwgbHNiLm1fdmFsdWUsIHdpZHRoLm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJC
aXRGaWVsZDMyKFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmZjPDMyPihkZXN0LCBsc2IubV92
YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBjbGVhckJpdEZpZWxkNjQo
VHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iZmM8NjQ+KGRlc3QsIGxzYi5tX3ZhbHVlLCB3aWR0
aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQml0c1dpdGhNYXNrMzIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYmljPDMyPihkZXN0LCBzcmMsIG1hc2spOworICAgIH0KKworICAgIHZv
aWQgY2xlYXJCaXRzV2l0aE1hc2s2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBtYXNrLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iaWM8NjQ+KGRlc3Qs
IHNyYywgbWFzayk7CisgICAgfQorCisgICAgdm9pZCBvck5vdDMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLm9ybjwzMj4oZGVzdCwgc3JjLCBtYXNrKTsKKyAgICB9CisKKyAgICB2b2lkIG9yTm90NjQo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIub3JuPDY0PihkZXN0LCBzcmMsIG1hc2spOworICAgIH0KKwor
ICAgIHZvaWQgZXh0cmFjdEluc2VydEJpdGZpZWxkQXRMb3dFbmQzMihSZWdpc3RlcklEIHNyYywg
VHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iZnhpbDwzMj4oZGVzdCwgc3JjLCBsc2IubV92YWx1
ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBleHRyYWN0SW5zZXJ0Qml0Zmll
bGRBdExvd0VuZDY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1t
MzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJm
eGlsPDY0PihkZXN0LCBzcmMsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisK
ICAgICB2b2lkIGNsZWFyQml0NjQoUmVnaXN0ZXJJRCBiaXRUb0NsZWFyLCBSZWdpc3RlcklEIGRl
c3QsIFJlZ2lzdGVySUQgc2NyYXRjaEZvck1hc2sgPSBJbnZhbGlkR1BSUmVnKQogICAgIHsKICAg
ICAgICAgaWYgKHNjcmF0Y2hGb3JNYXNrID09IEludmFsaWRHUFJSZWcpCkBAIC0yNzUyLDE4ICsy
ODAzLDYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5mY3NlbDw2ND4oZGVzdCwgdGhl
bkNhc2UsIGVsc2VDYXNlLCBBUk02NENvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCi0gICAgLy8g
Qml0IGZpZWxkIG9wZXJhdGlvbnM6Ci0gICAgdm9pZCBiaXRGaWVsZEluc2VydDMyKFJlZ2lzdGVy
SUQgc291cmNlLCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVy
SUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJmaTwzMj4oZGVzdCwgc291cmNl
LCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Ci0gICAgfQotCi0gICAgLy8gZGVzdEJpdE9m
ZnNldCBpcyB0aGUgdG9wIGJpdCBvZiB0aGUgZGVzdGluYXRpb24gd2hlcmUgdGhlIGJpdHMgc2hv
dWxkIGJlIGNvcGllZCB0by4gWmVybyBpcyB0aGUgbG93ZXN0IG9yZGVyIGJpdC4KLSAgICB2b2lk
IGJpdEZpZWxkSW5zZXJ0NjQoUmVnaXN0ZXJJRCBzb3VyY2UsIFRydXN0ZWRJbW0zMiBsc2IsIFRy
dXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuYmZpPDY0PihkZXN0LCBzb3VyY2UsIGxzYi5tX3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsK
LSAgICB9Ci0KICAgICAvLyBGb3J3YXJkcyAvIGV4dGVybmFsIGNvbnRyb2wgZmxvdyBvcGVyYXRp
b25zOgogICAgIC8vCiAgICAgLy8gVGhpcyBzZXQgb2YganVtcCBhbmQgY29uZGl0aW9uYWwgYnJh
bmNoIG9wZXJhdGlvbnMgcmV0dXJuIGEgSnVtcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCBjOWNmOTY4YjdiNDVmNDIzODdlZGM3ZmQ2NjkzZjA5
ZDUzZWU2YTUwLi5iOTlhZmYzNDE4ZDU0YjI1ZTkzZTkyNjhmODAwODkwYWQ3Y2Y0NTM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtOTA0LDcg
KzkwNCw3IEBAIHZvaWQgdGVzdE11bDMyV2l0aEltbWVkaWF0ZXMoKQogfQogCiAjaWYgQ1BVKEFS
TTY0KQotdm9pZCB0ZXN0TXVsMzJTaWduRXh0ZW5kKCkKK3ZvaWQgdGVzdE11bHRpcGx5U2lnbkV4
dGVuZDMyKCkKIHsKICAgICBmb3IgKGF1dG8gdmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkpIHsKICAg
ICAgICAgYXV0byBtdWwgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKQEAgLTEw
ODksNyArMTA4OSw3IEBAIHZvaWQgdGVzdFN1YjY0QXJnSW1tNjQoKQogICAgIH0KIH0KIAotdm9p
ZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyKCkKK3ZvaWQgdGVzdE11bHRpcGx5U3ViU2lnbkV4dGVu
ZDMyKCkKIHsKICAgICAvLyBkID0gYSAtIFNFeHQzMihuKSAqICBTRXh0MzIobSkKICAgICBhdXRv
IHN1YiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewpAQCAtMTExMiw3ICsxMTEy
LDcgQEAgdm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyKCkKICAgICB9CiB9CiAKLXZvaWQgdGVz
dFViZngzMigpCit2b2lkIHRlc3RFeHRyYWN0VW5zaWduZWRCaXRmaWVsZDMyKCkKIHsKICAgICB1
aW50MzJfdCBzcmMgPSAweGYwZjBmMGYwOwogICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9IHsg
MCwgMSwgNSwgNywgMzAsIDMxLCAzMiwgNDIsIDU2LCA2MiwgNjMsIDY0IH07CkBAIC0xMTIyLDcg
KzExMjIsNyBAQCB2b2lkIHRlc3RVYmZ4MzIoKQogICAgICAgICAgICAgICAgIGF1dG8gdWJmeDMy
ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgICAgICAgICAgICAg
IGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaml0LnVi
ZngzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICBqaXQuZXh0
cmFjdFVuc2lnbmVkQml0ZmllbGQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNiKSwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAogICAg
ICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpAQCAtMTEzNiw3
ICsxMTM2LDcgQEAgdm9pZCB0ZXN0VWJmeDMyKCkKICAgICB9CiB9CiAKLXZvaWQgdGVzdFViZng2
NCgpCit2b2lkIHRlc3RFeHRyYWN0VW5zaWduZWRCaXRmaWVsZDY0KCkKIHsKICAgICB1aW50NjRf
dCBzcmMgPSAweGYwZjBmMGYwZjBmMGYwZjA7CiAgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0g
eyAwLCAxLCA1LCA3LCAzMCwgMzEsIDMyLCA0MiwgNTYsIDYyLCA2MywgNjQgfTsKQEAgLTExNDYs
NyArMTE0Niw3IEBAIHZvaWQgdGVzdFViZng2NCgpCiAgICAgICAgICAgICAgICAgYXV0byB1YmZ4
NjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAotICAgICAgICAgICAgICAgICAgICBqaXQu
dWJmeDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgIGppdC5l
eHRyYWN0VW5zaWduZWRCaXRmaWVsZDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsc2IpLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHdpZHRoKSwgCiAg
ICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CkBAIC0xMTYw
LDcgKzExNjAsNyBAQCB2b2lkIHRlc3RVYmZ4NjQoKQogICAgIH0KIH0KIAotdm9pZCB0ZXN0VWJm
aXozMigpCit2b2lkIHRlc3RJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvMzIoKQogewogICAg
IHVpbnQzMl90IHNyYyA9IDB4ZjBmMGYwZjA7CiAgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0g
eyAwLCAxLCA1LCA3LCAzMCwgMzEsIDMyLCA0MiwgNTYsIDYyLCA2MywgNjQgfTsKQEAgLTExNzAs
NyArMTE3MCw3IEBAIHZvaWQgdGVzdFViZml6MzIoKQogICAgICAgICAgICAgICAgIGF1dG8gdWJm
aXozMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgICAg
ICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCi0gICAgICAgICAgICAgICAgICAgIGpp
dC51YmZpejMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgIGpp
dC5pbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAK
ICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiks
IAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lk
dGgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
QEAgLTExODUsNyArMTE4NSw3IEBAIHZvaWQgdGVzdFViZml6MzIoKQogICAgIH0KIH0KIAotdm9p
ZCB0ZXN0VWJmaXo2NCgpCit2b2lkIHRlc3RJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvNjQo
KQogewogICAgIHVpbnQ2NF90IHNyYyA9IDB4ZjBmMGYwZjBmMGYwZjBmMDsKICAgICBWZWN0b3I8
dWludDMyX3Q+IGltbXMgPSB7IDAsIDEsIDUsIDcsIDMwLCAzMSwgMzIsIDQyLCA1NiwgNjIsIDYz
LCA2NCB9OwpAQCAtMTE5NSw3ICsxMTk1LDcgQEAgdm9pZCB0ZXN0VWJmaXo2NCgpCiAgICAgICAg
ICAgICAgICAgYXV0byB1YmZpejY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7
CiAgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKLSAgICAg
ICAgICAgICAgICAgICAgaml0LnViZml6NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAg
ICAgICAgICAgICAgICAgaml0Lmluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm82NChHUFJJbmZv
Ojphcmd1bWVudEdQUjAsIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIobHNiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMih3aWR0aCksIAogICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpOwpAQCAtMTIxMCw3ICsxMjEwLDcgQEAgdm9pZCB0ZXN0VWJmaXo2NCgp
CiAgICAgfQogfQogCi12b2lkIHRlc3RCaXRGaWVsZEluc2VydDMyKCkKK3ZvaWQgdGVzdEluc2Vy
dEJpdEZpZWxkMzIoKQogewogICAgIHVpbnQzMl90IHNyYyA9IDB4MGYwZjBmMGY7CiAgICAgdWlu
dDMyX3QgZHN0ID0gMHhmMGYwZjBmMDsKQEAgLTEyMjEsNyArMTIyMSw3IEBAIHZvaWQgdGVzdEJp
dEZpZWxkSW5zZXJ0MzIoKQogICAgICAgICAgICAgICAgIGF1dG8gYmZpMzIgPSBjb21waWxlKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKIAotICAgICAgICAgICAgICAgICAgICBqaXQuYml0RmllbGRJbnNlcnQ2
NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICBqaXQuaW5zZXJ0
Qml0RmllbGQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNiKSwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAogICAgICAgICAgICAgICAg
ICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKQEAgLTEyNDAsNyArMTI0MCw3IEBAIHZv
aWQgdGVzdEJpdEZpZWxkSW5zZXJ0MzIoKQogICAgIH0KIH0KIAotdm9pZCB0ZXN0Qml0RmllbGRJ
bnNlcnQ2NCgpCit2b2lkIHRlc3RJbnNlcnRCaXRGaWVsZDY0KCkKIHsKICAgICB1aW50NjRfdCBz
cmMgPSAweDBmMGYwZjBmMGYwZjBmMGY7CiAgICAgdWludDY0X3QgZHN0ID0gMHhmMGYwZjBmMGYw
ZjBmMGYwOwpAQCAtMTI1MSw3ICsxMjUxLDcgQEAgdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQ2NCgp
CiAgICAgICAgICAgICAgICAgYXV0byBiZmk2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCkgewogICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwog
Ci0gICAgICAgICAgICAgICAgICAgIGppdC5iaXRGaWVsZEluc2VydDY0KEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgIGppdC5pbnNlcnRCaXRGaWVsZDY0KEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihsc2IpLCAKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKHdpZHRoKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOwpAQCAtMTI2OSw2ICsxMjY5LDE4OCBAQCB2b2lkIHRlc3RCaXRGaWVs
ZEluc2VydDY0KCkKICAgICAgICAgfQogICAgIH0KIH0KKwordm9pZCB0ZXN0RXh0cmFjdEluc2Vy
dEJpdGZpZWxkQXRMb3dFbmQzMigpCit7CisgICAgdWludDMyX3Qgc3JjID0gMHhmMGYwZjBmMDsK
KyAgICB1aW50MzJfdCBkc3QgPSAweDBmMGYwZjBmOworICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1t
cyA9IHsgMCwgMSwgNSwgNywgMzAsIDMxLCAzMiwgNDIsIDU2LCA2MiwgNjMsIDY0IH07CisgICAg
Zm9yIChhdXRvIGxzYiA6IGltbXMpIHsKKyAgICAgICAgZm9yIChhdXRvIHdpZHRoIDogaW1tcykg
eworICAgICAgICAgICAgaWYgKGxzYiA+PSAwICYmIHdpZHRoID4gMCAmJiBsc2IgKyB3aWR0aCA8
IDMyKSB7CisgICAgICAgICAgICAgICAgYXV0byBiZnhpbDMyID0gY29tcGlsZShbPV0gKENDYWxs
SGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3Vl
KGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmV4dHJhY3RJbnNlcnRCaXRmaWVsZEF0
TG93RW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5t
b3ZlKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisg
ICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAg
ICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB1aW50MzJfdCBtYXNrMSA9ICgxVSA8PCB3aWR0aCkgLSAxVTsKKyAgICAgICAgICAgICAgICB1
aW50MzJfdCBtYXNrMiA9IH5tYXNrMTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCByaHMgPSBp
bnZva2U8dWludDMyX3Q+KGJmeGlsMzIsIHNyYywgZHN0KTsKKyAgICAgICAgICAgICAgICB1aW50
MzJfdCBsaHMgPSAoKHNyYyA+PiBsc2IpICYgbWFzazEpIHwgKGRzdCAmIG1hc2syKTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShyaHMsIGxocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgdGVzdEV4dHJhY3RJbnNlcnRCaXRmaWVsZEF0TG93RW5kNjQoKQor
eworICAgIHVpbnQ2NF90IHNyYyA9IDB4MGYwZjBmMGYwZjBmMGYwZjsKKyAgICB1aW50NjRfdCBk
c3QgPSAweGYwZjBmMGYwZjBmMGYwZjA7CisgICAgVmVjdG9yPHVpbnQ2NF90PiBpbW1zID0geyAw
LCAxLCA1LCA3LCAzMCwgMzEsIDMyLCA0MiwgNTYsIDYyLCA2MywgNjQgfTsKKyAgICBmb3IgKGF1
dG8gbHNiIDogaW1tcykgeworICAgICAgICBmb3IgKGF1dG8gd2lkdGggOiBpbW1zKSB7CisgICAg
ICAgICAgICBpZiAobHNiID49IDAgJiYgd2lkdGggPiAwICYmIGxzYiArIHdpZHRoIDwgNjQpIHsK
KyAgICAgICAgICAgICAgICBhdXRvIGJmeGlsNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsK
KworICAgICAgICAgICAgICAgICAgICBqaXQuZXh0cmFjdEluc2VydEJpdGZpZWxkQXRMb3dFbmQ2
NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNiKSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAorICAgICAgICAgICAgICAgICAgICAgICAg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoR1BS
SW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAg
ICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHVpbnQ2
NF90IG1hc2sxID0gKDFVTEwgPDwgd2lkdGgpIC0gMVVMTDsKKyAgICAgICAgICAgICAgICB1aW50
NjRfdCBtYXNrMiA9IH5tYXNrMTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCByaHMgPSBpbnZv
a2U8dWludDY0X3Q+KGJmeGlsNjQsIHNyYywgZHN0KTsKKyAgICAgICAgICAgICAgICB1aW50NjRf
dCBsaHMgPSAoKHNyYyA+PiBsc2IpICYgbWFzazEpIHwgKGRzdCAmIG1hc2syKTsKKyAgICAgICAg
ICAgICAgICBDSEVDS19FUShyaHMsIGxocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgdGVzdENsZWFyQml0RmllbGQzMigpCit7CisgICAgdWludDMyX3Qgc3Jj
ID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOworICAgIFZlY3Rvcjx1aW50
MzJfdD4gaW1tcyA9IHsgMCwgMSwgNSwgNywgMzAsIDMxLCAzMiwgNDIsIDU2LCA2MiwgNjMsIDY0
IH07CisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMpIHsKKyAgICAgICAgZm9yIChhdXRvIHdpZHRo
IDogaW1tcykgeworICAgICAgICAgICAgaWYgKGxzYiA+PSAwICYmIHdpZHRoID4gMCAmJiBsc2Ig
KyB3aWR0aCA8IDMyKSB7CisgICAgICAgICAgICAgICAgYXV0byBiZmMzMiA9IGNvbXBpbGUoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Q
cm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5jbGVhckJpdEZpZWxkMzIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNiKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIod2lkdGgpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICAgICAgICAgICAgICBq
aXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
KworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAg
ICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgdWludDMyX3QgbWFzayA9ICgoMVUgPDwgd2lkdGgpIC0gMVUpIDw8IGxzYjsKKyAgICAg
ICAgICAgICAgICB1aW50MzJfdCByaHMgPSBpbnZva2U8dWludDMyX3Q+KGJmYzMyLCBzcmMpOwor
ICAgICAgICAgICAgICAgIHVpbnQzMl90IGxocyA9IHNyYyAmIH5tYXNrOworICAgICAgICAgICAg
ICAgIENIRUNLX0VRKHJocywgbGhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCB0ZXN0Q2xlYXJCaXRGaWVsZDY0KCkKK3sKKyAgICB1aW50NjRfdCBzcmMgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7CisgICAgVmVjdG9yPHVpbnQzMl90
PiBpbW1zID0geyAwLCAxLCA1LCA3LCAzMCwgMzEsIDMyLCA0MiwgNTYsIDYyLCA2MywgNjQgfTsK
KyAgICBmb3IgKGF1dG8gbHNiIDogaW1tcykgeworICAgICAgICBmb3IgKGF1dG8gd2lkdGggOiBp
bW1zKSB7CisgICAgICAgICAgICBpZiAobHNiID49IDAgJiYgd2lkdGggPiAwICYmIGxzYiArIHdp
ZHRoIDwgMzIpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJmYzY0ID0gY29tcGlsZShbPV0gKEND
YWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmNsZWFyQml0RmllbGQ2NChDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsc2IpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3
aWR0aCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5t
b3ZlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisg
ICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAg
ICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB1aW50NjRfdCBtYXNrID0gKCgxVUxMIDw8IHdpZHRoKSAtIDFVTEwpIDw8IGxzYjsKKyAgICAg
ICAgICAgICAgICB1aW50NjRfdCByaHMgPSBpbnZva2U8dWludDY0X3Q+KGJmYzY0LCBzcmMpOwor
ICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxocyA9IHNyYyAmIH5tYXNrOworICAgICAgICAgICAg
ICAgIENIRUNLX0VRKHJocywgbGhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCB0ZXN0Q2xlYXJCaXRzV2l0aE1hc2szMigpCit7CisgICAgYXV0byB0ZXN0ID0g
Y29tcGlsZShbXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKKworICAgICAgICBqaXQuY2xlYXJCaXRzV2l0aE1hc2szMihHUFJJbmZvOjph
cmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworCisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5y
ZXQoKTsKKyAgICB9KTsKKworICAgIGZvciAoYXV0byBtYXNrIDogaW50MzJPcGVyYW5kcygpKSB7
CisgICAgICAgIHVpbnQzMl90IHNyYyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+Ojpt
YXgoKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQzMl90Pih0ZXN0LCBzcmMsIG1hc2sp
LCAoc3JjICYgfm1hc2spKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQzMl90Pih0ZXN0
LCAwVSwgbWFzayksIDBVKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdENsZWFyQml0c1dpdGhNYXNr
NjQoKQoreworICAgIGF1dG8gdGVzdCA9IGNvbXBpbGUoW10gKENDYWxsSGVscGVycyYgaml0KSB7
CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0LmNsZWFy
Qml0c1dpdGhNYXNrNjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGls
b2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8g
bWFzayA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICB1aW50NjRfdCBzcmMgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTx1
aW50NjRfdD4odGVzdCwgc3JjLCBtYXNrKSwgKHNyYyAmIH5tYXNrKSk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTx1aW50NjRfdD4odGVzdCwgMFVMTCwgbWFzayksIDBVTEwpOworICAgIH0KK30K
Kwordm9pZCB0ZXN0T3JOb3QzMigpCit7CisgICAgYXV0byB0ZXN0ID0gY29tcGlsZShbXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKwor
ICAgICAgICBqaXQub3JOb3QzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgIGVtaXRGdW5jdGlv
bkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9KTsKKworICAgIGZvciAo
YXV0byBtYXNrIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGludDMyX3Qgc3JjID0gc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOworICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50MzJfdD4odGVzdCwgc3JjLCBtYXNrKSwgKHNyYyB8IH5tYXNrKSk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQzMl90Pih0ZXN0LCAwVSwgbWFzayksIH5tYXNrKTsKKyAgICB9Cit9
CisKK3ZvaWQgdGVzdE9yTm90NjQoKQoreworICAgIGF1dG8gdGVzdCA9IGNvbXBpbGUoW10gKEND
YWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisK
KyAgICAgICAgaml0Lm9yTm90NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisKKyAgICBmb3Ig
KGF1dG8gbWFzayA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBpbnQ2NF90IHNyYyA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52
b2tlPGludDY0X3Q+KHRlc3QsIHNyYywgbWFzayksIChzcmMgfCB+bWFzaykpOworICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50NjRfdD4odGVzdCwgMFVMTCwgbWFzayksIH5tYXNrKTsKKyAgICB9
Cit9CiAjZW5kaWYKIAogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk02NCkK
QEAgLTM0MjUsOSArMzYwNyw4IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikgV1RGX0lH
Tk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogI2lmIENQVShBUk02NCkKICAgICBSVU4odGVz
dExvYWRTdG9yZVBhaXI2NEludDY0KCkpOwogICAgIFJVTih0ZXN0TG9hZFN0b3JlUGFpcjY0RG91
YmxlKCkpOwotICAgIFJVTih0ZXN0TXVsMzJTaWduRXh0ZW5kKCkpOwotICAgIFJVTih0ZXN0TXVs
dGlwbHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkpOwotICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWdu
RXh0ZW5kMzJSaWdodCgpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5U2lnbkV4dGVuZDMyKCkpOwor
CiAgICAgUlVOKHRlc3RTdWIzMkFyZ3MoKSk7CiAgICAgUlVOKHRlc3RTdWIzMkltbSgpKTsKICAg
ICBSVU4odGVzdFN1YjMyQXJnSW1tKCkpOwpAQCAtMzQzNSwxMyArMzYxNiwyNiBAQCB2b2lkIHJ1
bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMK
ICAgICBSVU4odGVzdFN1YjY0QXJnSW1tMzIoKSk7CiAgICAgUlVOKHRlc3RTdWI2NEltbTY0KCkp
OwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW02NCgpKTsKLSAgICBSVU4odGVzdE11bFN1YlNpZ25F
eHRlbmQzMigpKTsKLSAgICBSVU4odGVzdFViZngzMigpKTsKLSAgICBSVU4odGVzdFViZng2NCgp
KTsKLSAgICBSVU4odGVzdFViZml6MzIoKSk7Ci0gICAgUlVOKHRlc3RVYmZpejY0KCkpOwotICAg
IFJVTih0ZXN0Qml0RmllbGRJbnNlcnQzMigpKTsKLSAgICBSVU4odGVzdEJpdEZpZWxkSW5zZXJ0
NjQoKSk7CisKKyAgICBSVU4odGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyTGVmdCgpKTsKKyAg
ICBSVU4odGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyUmlnaHQoKSk7CisgICAgUlVOKHRlc3RN
dWx0aXBseVN1YlNpZ25FeHRlbmQzMigpKTsKKworICAgIFJVTih0ZXN0RXh0cmFjdFVuc2lnbmVk
Qml0ZmllbGQzMigpKTsKKyAgICBSVU4odGVzdEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkNjQoKSk7
CisgICAgUlVOKHRlc3RJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvMzIoKSk7CisgICAgUlVO
KHRlc3RJbnNlcnRVbnNpZ25lZEJpdGZpZWxkSW5aZXJvNjQoKSk7CisgICAgUlVOKHRlc3RJbnNl
cnRCaXRGaWVsZDMyKCkpOworICAgIFJVTih0ZXN0SW5zZXJ0Qml0RmllbGQ2NCgpKTsKKyAgICBS
VU4odGVzdEV4dHJhY3RJbnNlcnRCaXRmaWVsZEF0TG93RW5kMzIoKSk7CisgICAgUlVOKHRlc3RF
eHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDY0KCkpOworICAgIFJVTih0ZXN0Q2xlYXJCaXRG
aWVsZDMyKCkpOworICAgIFJVTih0ZXN0Q2xlYXJCaXRGaWVsZDY0KCkpOworICAgIFJVTih0ZXN0
Q2xlYXJCaXRzV2l0aE1hc2szMigpKTsKKyAgICBSVU4odGVzdENsZWFyQml0c1dpdGhNYXNrNjQo
KSk7CisKKyAgICBSVU4odGVzdE9yTm90MzIoKSk7CisgICAgUlVOKHRlc3RPck5vdDY0KCkpOwog
I2VuZGlmCiAKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDg0MDQwZmVmNGE5NmE3
NTkxMzdiYzY2ZWRlNDUxOGY3OTIzMWFhYmQuLjZmMmViNmFmODRmNmI5MGJjMTExZGM3ZTJmMDlj
NmMwY2ExMTI1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
CkBAIC0yNzY0LDcgKzI3NjQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gVUJGWCBQYXR0
ZXJuOiBkZXN0ID0gKHNyYyA+PiBsc2IpICYgbWFzayAKICAgICAgICAgICAgIC8vIFdoZXJlOiBt
YXNrID0gKDEgPDwgd2lkdGgpIC0gMQogICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRVQkZYID0g
WyZdICgpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9w
Y29kZUZvclR5cGUoVWJmeDMyLCBVYmZ4NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShFeHRyYWN0VW5zaWduZWRC
aXRmaWVsZDMyLCBFeHRyYWN0VW5zaWduZWRCaXRmaWVsZDY0LCBtX3ZhbHVlLT50eXBlKCkpOwog
ICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpJ
bW0sIEFyZzo6SW1tLCBBcmc6OlRtcCkpIAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICAgICAgaWYgKGxlZnQtPm9wY29kZSgpICE9IFpTaHIgfHwgIWNhbkJl
SW50ZXJuYWwobGVmdCkpCkBAIC0yNzgwLDcgKzI3ODAsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGlmICghbWFzayB8fCBtYXNrICYgKG1hc2sgKyAxKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIHVpbnQ2NF90IHdpZHRoID0gV1RGOjpi
aXRDb3VudChtYXNrKTsKLSAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG9wY29k
ZSA9PSBVYmZ4MzIgPyAzMiA6IDY0OworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGFzaXpl
ID0gb3Bjb2RlID09IEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIgPyAzMiA6IDY0OwogICAgICAg
ICAgICAgICAgIGlmIChsc2IgKyB3aWR0aCA+IGRhdGFzaXplKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTI3OTIsNiArMjc5MiwyOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgaWYgKHRyeUFwcGVuZFVCRlgoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKKyAg
ICAgICAgICAgIC8vIEJJQyBQYXR0ZXJuOiBkID0gbiAmIChtIF4gLTEpCisgICAgICAgICAgICBh
dXRvIHRyeUFwcGVuZEJJQyA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkgLT4gYm9v
bCB7CisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShD
bGVhckJpdHNXaXRoTWFzazMyLCBDbGVhckJpdHNXaXRoTWFzazY0LCBtX3ZhbHVlLT50eXBlKCkp
OworICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJn
OjpUbXAsIEFyZzo6VG1wKSkgCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBpZiAocmlnaHQtPm9wY29kZSgpICE9IEJpdFhvciB8fCAhY2FuQmVJbnRl
cm5hbChyaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICAgICAgICAgIFZhbHVlKiBuVmFsdWUgPSBsZWZ0OworICAgICAgICAgICAgICAgIFZhbHVlKiBt
VmFsdWUgPSByaWdodC0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgVmFsdWUqIG1pbnVzT25l
ID0gcmlnaHQtPmNoaWxkKDEpOworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlu
cyhuVmFsdWUpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKG1WYWx1ZSkgfHwgIW1pbnVzT25lLT5oYXNJ
bnQoKSB8fCAhbWludXNPbmUtPmlzSW50KC0xKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKG5WYWx1ZSksIHRt
cChtVmFsdWUpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFs
KHJpZ2h0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH07CisK
KyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRCSUMobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZEJJ
QyhyaWdodCwgbGVmdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICBh
cHBlbmRCaW5PcDxBbmQzMiwgQW5kNjQsIEFuZERvdWJsZSwgQW5kRmxvYXQsIENvbW11dGF0aXZl
PihsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI4MDQs
NyArMjgyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBXaGVyZTogbWFzazEgPSAoKDEg
PDwgd2lkdGgpIC0gMSkKICAgICAgICAgICAgIC8vICAgICAgICBtYXNrMiA9IH4obWFzazEgPDwg
bHNiKQogICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRCRkkgPSBbJl0gKFZhbHVlKiBsZWZ0LCBW
YWx1ZSogcmlnaHQpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29k
ZSA9IG9wY29kZUZvclR5cGUoQml0RmllbGRJbnNlcnQzMiwgQml0RmllbGRJbnNlcnQ2NCwgbV92
YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNv
ZGVGb3JUeXBlKEluc2VydEJpdEZpZWxkMzIsIEluc2VydEJpdEZpZWxkNjQsIG1fdmFsdWUtPnR5
cGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1w
LCBBcmc6OkltbSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBpZiAobGVmdC0+b3Bjb2RlKCkgIT0gU2hsIHx8
ICFjYW5CZUludGVybmFsKGxlZnQpKQpAQCAtMjgyOCw3ICsyODUwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICB1aW50NjRfdCBtYXNrMSA9IG1hc2tWYWx1ZTEtPmFzSW50KCk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFtYXNrMSB8fCBtYXNrMSAmIChtYXNrMSArIDEpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YXNp
emUgPSBvcGNvZGUgPT0gQml0RmllbGRJbnNlcnQzMiA/IDMyIDogNjQ7CisgICAgICAgICAgICAg
ICAgdWludDY0X3QgZGF0YXNpemUgPSBvcGNvZGUgPT0gSW5zZXJ0Qml0RmllbGQzMiA/IDMyIDog
NjQ7CiAgICAgICAgICAgICAgICAgdWludDY0X3Qgd2lkdGggPSBXVEY6OmJpdENvdW50KG1hc2sx
KTsKICAgICAgICAgICAgICAgICBpZiAobHNiICsgd2lkdGggPiBkYXRhc2l6ZSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjg1Nyw2ICsyODc5LDg0IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kQkZJKGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRC
RkkocmlnaHQsIGxlZnQpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICAgICAg
Ly8gQkZYSUwgUGF0dGVybjogZCA9ICgobiA+PiBsc2IpICYgbWFzazEpIHwgKGQgJiBtYXNrMikK
KyAgICAgICAgICAgIC8vIFdoZXJlOiBtYXNrMSA9ICgoMSA8PCB3aWR0aCkgLSAxKQorICAgICAg
ICAgICAgLy8gICAgICAgIG1hc2syID0gfm1hc2sxCisgICAgICAgICAgICBhdXRvIHRyeUFwcGVu
ZEJGWElMID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKKyAgICAg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKEV4dHJhY3RJbnNl
cnRCaXRmaWVsZEF0TG93RW5kMzIsIEV4dHJhY3RJbnNlcnRCaXRmaWVsZEF0TG93RW5kNjQsIG1f
dmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUs
IEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobGVmdC0+b3Bjb2RlKCkg
IT0gQml0QW5kIHx8ICFjYW5CZUludGVybmFsKGxlZnQpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGxlZnQtPmNoaWxkKDApLT5vcGNvZGUo
KSAhPSBaU2hyIHx8ICFjYW5CZUludGVybmFsKGxlZnQtPmNoaWxkKDApKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChyaWdodC0+b3Bjb2Rl
KCkgIT0gQml0QW5kIHx8ICFjYW5CZUludGVybmFsKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IGxlZnQt
PmNoaWxkKDApLT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbWFza1ZhbHVlMSA9
IGxlZnQtPmNoaWxkKDEpOworICAgICAgICAgICAgICAgIFZhbHVlKiBsc2JWYWx1ZSA9IGxlZnQt
PmNoaWxkKDApLT5jaGlsZCgxKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogZFZhbHVlID0gcmln
aHQtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIFZhbHVlKiBtYXNrVmFsdWUyID0gcmlnaHQt
PmNoaWxkKDEpOworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhuVmFsdWUp
IHx8IG1fbG9ja2VkLmNvbnRhaW5zKGRWYWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoIW1hc2tWYWx1ZTEtPmhhc0ludCgpIHx8ICFp
bW0obHNiVmFsdWUpIHx8IGxzYlZhbHVlLT5hc0ludCgpIDwgMCB8fCAhbWFza1ZhbHVlMi0+aGFz
SW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAg
ICAgIHVpbnQ2NF90IGxzYiA9IGxzYlZhbHVlLT5hc0ludCgpOworICAgICAgICAgICAgICAgIHVp
bnQ2NF90IG1hc2sxID0gbWFza1ZhbHVlMS0+YXNJbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAo
IW1hc2sxIHx8IG1hc2sxICYgKG1hc2sxICsgMSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCB3aWR0aCA9IFdURjo6Yml0Q291bnQo
bWFzazEpOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGFzaXplID0gb3Bjb2RlID09IEV4
dHJhY3RJbnNlcnRCaXRmaWVsZEF0TG93RW5kMzIgPyAzMiA6IDY0OworICAgICAgICAgICAgICAg
IGlmIChsc2IgKyB3aWR0aCA+IGRhdGFzaXplKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgdWludDY0X3QgbWFzazIgPSBtYXNrVmFsdWUyLT5hc0lu
dCgpOworCisgICAgICAgICAgICAgICAgYXV0byBpc1ZhbGlkTWFzazIgPSBbJl0gKCkgLT4gYm9v
bCB7CisgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG1hc2sgPSBtYXNrMSBeIG1hc2syOwor
ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBsb3dlclNldCA9IDB4ZmZmZmZmZmY7CisgICAg
ICAgICAgICAgICAgICAgIHVpbnQ2NF90IGZ1bGxTZXQgPSAweGZmZmZmZmZmZmZmZmZmZmY7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhc2l6ZSA9PSAzMiA/ICEoKG1hc2sgJiBsb3dl
clNldCkgXiBsb3dlclNldCkgOiAhKG1hc2sgXiBmdWxsU2V0KTsKKyAgICAgICAgICAgICAgICB9
OworCisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkTWFzazIoKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgVG1wIHJlc3VsdCA9IHRtcCht
X3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKG1fdmFs
dWUtPnR5cGUoKSksIHRtcChkVmFsdWUpLCByZXN1bHQpOworICAgICAgICAgICAgICAgIGFwcGVu
ZChvcGNvZGUsIHRtcChuVmFsdWUpLCBpbW0obHNiVmFsdWUpLCBpbW0od2lkdGgpLCByZXN1bHQp
OworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQtPmNoaWxkKDApKTsKKyAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChsZWZ0KTsKKyAgICAgICAgICAgICAgICBjb21taXRJ
bnRlcm5hbChyaWdodCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICBpZiAodHJ5QXBwZW5kQkZYSUwobGVmdCwgcmlnaHQpIHx8IHRy
eUFwcGVuZEJGWElMKHJpZ2h0LCBsZWZ0KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIC8vIE9STiBQYXR0ZXJuOiBkID0gbiB8IChtIF4gLTEpCisgICAgICAgICAgICBh
dXRvIHRyeUFwcGVuZE9STiA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkgLT4gYm9v
bCB7CisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShP
ck5vdDMyLCBPck5vdDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGlmICgh
aXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAocmlnaHQt
Pm9wY29kZSgpICE9IEJpdFhvciB8fCAhY2FuQmVJbnRlcm5hbChyaWdodCkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIFZhbHVlKiBuVmFsdWUg
PSBsZWZ0OworICAgICAgICAgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByaWdodC0+Y2hpbGQoMCk7
CisgICAgICAgICAgICAgICAgVmFsdWUqIG1pbnVzT25lID0gcmlnaHQtPmNoaWxkKDEpOworICAg
ICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhuVmFsdWUpIHx8IG1fbG9ja2VkLmNv
bnRhaW5zKG1WYWx1ZSkgfHwgIW1pbnVzT25lLT5oYXNJbnQoKSB8fCAhbWludXNPbmUtPmlzSW50
KC0xKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAg
ICAgYXBwZW5kKG9wY29kZSwgdG1wKG5WYWx1ZSksIHRtcChtVmFsdWUpLCB0bXAobV92YWx1ZSkp
OworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKHJpZ2h0KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmICh0cnlBcHBl
bmRPUk4obGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZE9STihyaWdodCwgbGVmdCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICBhcHBlbmRCaW5PcDxPcjMyLCBPcjY0LCBP
ckRvdWJsZSwgT3JGbG9hdCwgQ29tbXV0YXRpdmU+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtMjg5OSw3ICsyOTk5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIC8vIFVCRklaIFBhdHRlcm46IGQgPSAobiAmIG1hc2spIDw8IGxzYiAKICAgICAgICAg
ICAgIC8vIFdoZXJlOiBtYXNrID0gKDEgPDwgd2lkdGgpIC0gMQogICAgICAgICAgICAgYXV0byB0
cnlBcHBlbmRVQkZaID0gWyZdICgpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgIEFpcjo6T3Bj
b2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoVWJmaXozMiwgVWJmaXo2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBl
KEluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm8zMiwgSW5zZXJ0VW5zaWduZWRCaXRmaWVsZElu
WmVybzY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZv
cm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6SW1tLCBBcmc6OlRtcCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBpZiAobGVmdC0+
b3Bjb2RlKCkgIT0gQml0QW5kIHx8ICFjYW5CZUludGVybmFsKGxlZnQpKQpAQCAtMjkxNSw3ICsz
MDE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoIW1hc2sgfHwgbWFzayAmICht
YXNrICsgMSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
ICAgICB1aW50NjRfdCB3aWR0aCA9IFdURjo6Yml0Q291bnQobWFzayk7Ci0gICAgICAgICAgICAg
ICAgdWludDY0X3QgZGF0YXNpemUgPSBvcGNvZGUgPT0gVWJmaXozMiA/IDMyIDogNjQ7CisgICAg
ICAgICAgICAgICAgdWludDY0X3QgZGF0YXNpemUgPSBvcGNvZGUgPT0gSW5zZXJ0VW5zaWduZWRC
aXRmaWVsZEluWmVybzMyID8gMzIgOiA2NDsKICAgICAgICAgICAgICAgICBpZiAobHNiICsgd2lk
dGggPiBkYXRhc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0y
OTQyLDcgKzMwNDIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgWlNo
cjogewotICAgICAgICAgICAgYXBwZW5kU2hpZnQ8VXJzaGlmdDMyLCBVcnNoaWZ0NjQ+KG1fdmFs
dWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICBWYWx1ZSogbGVm
dCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1
ZS0+Y2hpbGQoMSk7CisKKyAgICAgICAgICAgIGFwcGVuZFNoaWZ0PFVyc2hpZnQzMiwgVXJzaGlm
dDY0PihsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IDNkZGFk
ZTc3MDhlYjRjN2I0MmM1N2JiYTA2MjljNmU5ZmRmNjU4ZmQuLjIwNjU1MTQ3NTc0MjdjYWY4MmZm
ZWEzZDVmNjUwY2I4ZTI5OGNiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1JlZHVjZVN0cmVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNS
ZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTYyNyw2ICs2MjcsMTggQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmlzSW50ZWdlcigpKSB7CisgICAgICAg
ICAgICAgICAgLy8gVHVybiB0aGlzOiBTdWIoTmVnKHZhbHVlKSwgMSkKKyAgICAgICAgICAgICAg
ICAvLyBJbnRvIHRoaXM6IEJpdFhvcih2YWx1ZSwgLTEpCisgICAgICAgICAgICAgICAgaWYgKG1f
dmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBOZWcgJiYgbV92YWx1ZS0+Y2hpbGQoMSktPmlz
SW50KDEpKSB7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtaW51c09uZTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKS0+dHlwZSgpID09IElu
dDMyKQorICAgICAgICAgICAgICAgICAgICAgICAgbWludXNPbmUgPSBtX2luc2VydGlvblNldC5p
bnNlcnQ8Q29uc3QzMlZhbHVlPihtX2luZGV4LCBtX3ZhbHVlLT5vcmlnaW4oKSwgLTEpOworICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtaW51c09uZSA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdDY0VmFsdWU+KG1faW5kZXgsIG1fdmFsdWUtPm9y
aWdpbigpLCAtMSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3PFZhbHVlPihC
aXRYb3IsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCksIG1p
bnVzT25lKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTdWIodmFsdWUsIGNvbnN0YW50KQogICAg
ICAgICAgICAgICAgIC8vIEludG8gdGhpczogQWRkKHZhbHVlLCAtY29uc3RhbnQpCiAgICAgICAg
ICAgICAgICAgaWYgKFZhbHVlKiBuZWdhdGVkQ29uc3RhbnQgPSBtX3ZhbHVlLT5jaGlsZCgxKS0+
bmVnQ29uc3RhbnQobV9wcm9jKSkgewpAQCAtMTA2MCwxMyArMTA3MiwxMyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJpdEFuZChTaGwodmFs
dWUsIHNoaWZ0QW1vdW50KSwgbWFza1NoaWZ0KQorICAgICAgICAgICAgLy8gSW50byB0aGlzOiBT
aGwoQml0QW5kKHZhbHVlLCBtYXNrKSwgc2hpZnRBbW91bnQpCiAgICAgICAgICAgICAvLyBDb25k
aXRpb25zOgogICAgICAgICAgICAgLy8gMS4gbWFza1NoaWZ0ID0gbWFzayA8PCBzaGlmdEFtb3Vu
dAogICAgICAgICAgICAgLy8gMi4gbWFzayA9ICgxIDw8IHdpZHRoKSAtIDEKICAgICAgICAgICAg
IC8vIDMuIDAgPD0gc2hpZnRBbW91bnQgPCBkYXRhc2l6ZQogICAgICAgICAgICAgLy8gNC4gMCA8
IHdpZHRoIDwgZGF0YXNpemUKICAgICAgICAgICAgIC8vIDUuIHNoaWZ0QW1vdW50ICsgd2lkdGgg
PD0gZGF0YXNpemUKLSAgICAgICAgICAgIC8vIEludG8gdGhpczogU2hsKEJpdEFuZCh2YWx1ZSwg
bWFzayksIHNoaWZ0QW1vdW50KQogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5v
cGNvZGUoKSA9PSBTaGwKICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hp
bGQoMSktPmhhc0ludCgpCiAgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmNo
aWxkKDEpLT5hc0ludCgpID49IDAKQEAgLTE0MjQsNiArMTQzNiwzOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICAvLyBUdXJu
IHRoaXM6IFpTaHIoQml0QW5kKHZhbHVlLCBtYXNrU2hpZnQpLCBzaGlmdEFtb3VudCkKKyAgICAg
ICAgICAgIC8vIEludG8gdGhpczogQml0QW5kKFpTaHIodmFsdWUsIHNoaWZ0QW1vdW50KSwgbWFz
aykKKyAgICAgICAgICAgIC8vIENvbmRpdGlvbnM6CisgICAgICAgICAgICAvLyAxLiBtYXNrU2hp
ZnQgPSBtYXNrIDw8IHNoaWZ0QW1vdW50CisgICAgICAgICAgICAvLyAyLiBtYXNrID0gKDEgPDwg
d2lkdGgpIC0gMQorICAgICAgICAgICAgLy8gMy4gMCA8PSBzaGlmdEFtb3VudCA8IGRhdGFzaXpl
CisgICAgICAgICAgICAvLyA0LiAwIDwgd2lkdGggPCBkYXRhc2l6ZQorICAgICAgICAgICAgLy8g
NS4gc2hpZnRBbW91bnQgKyB3aWR0aCA8PSBkYXRhc2l6ZQorICAgICAgICAgICAgaWYgKG1fdmFs
dWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBCaXRBbmQKKyAgICAgICAgICAgICAgICAmJiBtX3Zh
bHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSktPmhhc0ludCgpCisgICAgICAgICAgICAgICAgJiYgbV92
YWx1ZS0+Y2hpbGQoMSktPmhhc0ludCgpCisgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hp
bGQoMSktPmFzSW50KCkgPj0gMCkgeworICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNoaWZ0QW1v
dW50ID0gbV92YWx1ZS0+Y2hpbGQoMSktPmFzSW50KCk7CisgICAgICAgICAgICAgICAgdWludDY0
X3QgbWFza1NoaWZ0ID0gbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpLT5hc0ludCgpOworICAg
ICAgICAgICAgICAgIHVpbnQ2NF90IG1hc2tTaGlmdEFtb3VudCA9IFdURjo6Y291bnRUcmFpbGlu
Z1plcm9zKG1hc2tTaGlmdCk7CisgICAgICAgICAgICAgICAgdWludDY0X3QgbWFzayA9IG1hc2tT
aGlmdCA+PiBtYXNrU2hpZnRBbW91bnQ7CisgICAgICAgICAgICAgICAgdWludDY0X3Qgd2lkdGgg
PSBXVEY6OmJpdENvdW50KG1hc2spOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGFzaXpl
ID0gbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApLT50eXBlKCkgPT0gSW50NjQgPyA2NCA6IDMy
OworICAgICAgICAgICAgICAgIGJvb2wgaXNWYWxpZFNoaWZ0QW1vdW50ID0gbWFza1NoaWZ0QW1v
dW50ID09IHNoaWZ0QW1vdW50ICYmIHNoaWZ0QW1vdW50IDwgZGF0YXNpemU7CisgICAgICAgICAg
ICAgICAgYm9vbCBpc1ZhbGlkTWFzayA9IG1hc2sgJiYgIShtYXNrICYgKG1hc2sgKyAxKSkgJiYg
d2lkdGggPCBkYXRhc2l6ZTsKKyAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZFNoaWZ0QW1vdW50
ICYmIGlzVmFsaWRNYXNrICYmIHNoaWZ0QW1vdW50ICsgd2lkdGggPD0gZGF0YXNpemUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgVmFsdWUqIG1hc2tWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGRhdGFzaXplID09IDMyKQorICAgICAgICAgICAgICAgICAgICAgICAgbWFza1ZhbHVlID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0MzJWYWx1ZT4obV9pbmRleCwgbV92YWx1ZS0+b3Jp
Z2luKCksIG1hc2spOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICBtYXNrVmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3Q2NFZhbHVlPiht
X2luZGV4LCBtX3ZhbHVlLT5vcmlnaW4oKSwgbWFzayk7CisgICAgICAgICAgICAgICAgICAgIFZh
bHVlKiBzaGlmdFZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBa
U2hyLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApLCBtX3Zh
bHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3PFZhbHVl
PihCaXRBbmQsIG1fdmFsdWUtPm9yaWdpbigpLCBzaGlmdFZhbHVlLCBtYXNrVmFsdWUpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKICAgICAgICAgICAgIGhhbmRsZVNoaWZ0QW1vdW50KCk7CiAgICAgICAgICAgICBicmVhazsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bj
b2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5k
ZXggYTZhMTU4ODY3M2E0MjUxYjMxNGY0MGI2NzFlOGRjMzRlYTJkNTQ2MS4uZjQ0Y2JmMGY2NmUw
NTQ3NGRmNTQ3YjAwNTU5NzJmZGYwMTQzNjkxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBAIC0zNjMsMjQgKzM2Myw2IEBAIEFuZDMyIFU6
RzozMiwgVVpEOkc6MzIKICAgICB4ODY6IEltbSwgQWRkcgogICAgIHg4NjogSW1tLCBJbmRleAog
Ci1hcm02NDogVWJmeDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKLSAgICBUbXAs
IEltbSwgSW1tLCBUbXAKLQotYXJtNjQ6IFViZng2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBE
Okc6NjQKLSAgICBUbXAsIEltbSwgSW1tLCBUbXAKLQotYXJtNjQ6IFViZml6MzIgVTpHOjMyLCBV
Okc6MzIsIFU6RzozMiwgWkQ6RzozMgotICAgIFRtcCwgSW1tLCBJbW0sIFRtcAotCi1hcm02NDog
VWJmaXo2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKLSAgICBUbXAsIEltbSwgSW1t
LCBUbXAKLQotYXJtNjQ6IEJpdEZpZWxkSW5zZXJ0MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwg
WkQ6RzozMgotICAgIFRtcCwgSW1tLCBJbW0sIFRtcAotCi1hcm02NDogQml0RmllbGRJbnNlcnQ2
NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKLSAgICBUbXAsIEltbSwgSW1tLCBUbXAK
LQogNjQ6IEFuZDY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCiAg
ICAgYXJtNjQ6IEJpdEltbTY0LCBUbXAsIFRtcApAQCAtODMwLDYgKzgxMiw0OCBAQCB4ODZfNjQ6
IFhjaGc2NCBVRDpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCiAgICAgVG1wLCBBZGRyCiAgICAgVG1w
LCBJbmRleAogCithcm02NDogRXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMiBVOkc6MzIsIFU6Rzoz
MiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBJbW0sIEltbSwgVG1wCisKK2FybTY0OiBFeHRy
YWN0VW5zaWduZWRCaXRmaWVsZDY0IFU6Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAorICAg
IFRtcCwgSW1tLCBJbW0sIFRtcAorCithcm02NDogSW5zZXJ0VW5zaWduZWRCaXRmaWVsZEluWmVy
bzMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIEltbSwgSW1tLCBU
bXAKKworYXJtNjQ6IEluc2VydFVuc2lnbmVkQml0ZmllbGRJblplcm82NCBVOkc6NjQsIFU6Rzoz
MiwgVTpHOjMyLCBEOkc6NjQKKyAgICBUbXAsIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IEluc2Vy
dEJpdEZpZWxkMzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgSW1t
LCBJbW0sIFRtcAorCithcm02NDogSW5zZXJ0Qml0RmllbGQ2NCBVOkc6NjQsIFU6RzozMiwgVTpH
OjMyLCBEOkc6NjQKKyAgICBUbXAsIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IENsZWFyQml0Rmll
bGQzMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6
IENsZWFyQml0RmllbGQ2NCBVOkc6MzIsIFU6RzozMiwgRDpHOjY0CisgICAgSW1tLCBJbW0sIFRt
cAorCithcm02NDogQ2xlYXJCaXRzV2l0aE1hc2szMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgor
ICAgIFRtcCwgVG1wLCBUbXAKKworYXJtNjQ6IENsZWFyQml0c1dpdGhNYXNrNjQgVTpHOjY0LCBV
Okc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBUbXAKKworYXJtNjQ6IE9yTm90MzIgVTpHOjMy
LCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgVG1wCisKK2FybTY0OiBPck5vdDY0IFU6
Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgVG1wCisKK2FybTY0OiBFeHRyYWN0
SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIK
KyAgICBUbXAsIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IEV4dHJhY3RJbnNlcnRCaXRmaWVsZEF0
TG93RW5kNjQgVTpHOjY0LCBVOkc6MzIsIFU6RzozMiwgRDpHOjY0CisgICAgVG1wLCBJbW0sIElt
bSwgVG1wCisKICMgVGhlIGZpcnN0IG9wZXJhbmQgaXMgcmF4LgogIyBGSVhNRTogVGhpcyBmb3Jt
dWxhdGlvbiBtZWFucyB0aGF0IHRoZSBib29sZWFuIHJlc3VsdCBjYW5ub3QgYmUgcHV0IGluIGVh
eCwgZXZlbiB0aG91Z2ggYWxsIHVzZXJzCiAjIG9mIHRoaXMgd291bGQgYmUgT0sgd2l0aCB0aGF0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDQ0YzBhNTBiYTExMjkwY2U2MWU0OGQ2
ODNhNDFjZWQxYmJiNWMyNTYuLjhlZGJkZWZlODdiN2Y1NWRjZjJkYzUyNGFlYjAwMDZiOGZkMWZh
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTQyOCw4ICs0MjgsMTQgQEAgdm9p
ZCB0ZXN0VWJmaXo2NEFuZFNoaWZ0VmFsdWVNYXNrKCk7CiB2b2lkIHRlc3RVYmZpejY0QW5kU2hp
ZnRNYXNrVmFsdWUoKTsKIHZvaWQgdGVzdFViZml6NjRTaGlmdEFuZCgpOwogdm9pZCB0ZXN0VWJm
aXo2NEFuZFNoaWZ0KCk7Ci12b2lkIHRlc3RCaXRGaWVsZEluc2VydDMyKCk7Ci12b2lkIHRlc3RC
aXRGaWVsZEluc2VydDY0KCk7Cit2b2lkIHRlc3RJbnNlcnRCaXRGaWVsZDMyKCk7Cit2b2lkIHRl
c3RJbnNlcnRCaXRGaWVsZDY0KCk7Cit2b2lkIHRlc3RFeHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExv
d0VuZDMyKCk7Cit2b2lkIHRlc3RFeHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDY0KCk7Cit2
b2lkIHRlc3RCSUMzMigpOwordm9pZCB0ZXN0QklDNjQoKTsKK3ZvaWQgdGVzdE9yTm90MzIoKTsK
K3ZvaWQgdGVzdE9yTm90NjQoKTsKIHZvaWQgdGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1t
TWFzazMyKCk7CiB2b2lkIHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2s2NCgpOwog
dm9pZCB0ZXN0QmFzaWNTZWxlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3Bw
CmluZGV4IDk0YTdlMzRjYzdkODA5ZGM5MmQwZGNkNDcyOTRlZmJiMDMxN2ZjZWQuLmRkNDA5MGFi
MDRiMDExMzE4MDBmNWVhNzU5M2RlNjYxMDMxNDI5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiM18yLmNwcApAQCAtMzE1OCwxMyArMzE1OCwxMyBAQCB2b2lkIHRlc3RVYmZpejY0QW5k
U2hpZnQoKQogICAgIH0KIH0KIAotdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQzMigpCit2b2lkIHRl
c3RJbnNlcnRCaXRGaWVsZDMyKCkKIHsKICAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNP
cHRMZXZlbCgpIDwgMikKICAgICAgICAgcmV0dXJuOwogICAgIHVpbnQzMl90IGQgPSAweGYwZjBm
MGYwOwogICAgIHVpbnQzMl90IG4gPSAweGZmZmZmZmZmOwotICAgIFZlY3Rvcjx1aW50MzJfdD4g
bHNicyA9IHsgMSwgMiwgMTQsIDMwLCAzMCB9OworICAgIFZlY3Rvcjx1aW50MzJfdD4gbHNicyA9
IHsgMiwgMiwgMTQsIDMwLCAzMCB9OwogICAgIFZlY3Rvcjx1aW50MzJfdD4gd2lkdGhzID0geyAz
MCwgMywgMTcsIDEsIDIgfTsKIAogICAgIC8vIFRlc3QgUGF0dGVybjogZCA9ICgobiAmIG1hc2sx
KSA8PCBsc2IpIHwgKGQgJiBtYXNrMikKQEAgLTMyMzYsMTMgKzMyMzYsMTMgQEAgdm9pZCB0ZXN0
Qml0RmllbGRJbnNlcnQzMigpCiAgICAgfQogfQogCi12b2lkIHRlc3RCaXRGaWVsZEluc2VydDY0
KCkKK3ZvaWQgdGVzdEluc2VydEJpdEZpZWxkNjQoKQogewogICAgIGlmIChKU0M6Ok9wdGlvbnM6
OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQogICAgICAgICByZXR1cm47CiAgICAgdWludDY0X3Qg
ZCA9IDB4ZjBmMGYwZjBmMGYwZjBmMDsKICAgICB1aW50NjRfdCBuID0gMHhmZmZmZmZmZmZmZmZm
ZmZmOwotICAgIFZlY3Rvcjx1aW50NjRfdD4gbHNicyA9IHsgMSwgMzAsIDE0LCA2MiwgNjIgfTsK
KyAgICBWZWN0b3I8dWludDY0X3Q+IGxzYnMgPSB7IDIsIDMwLCAxNCwgNjIsIDYyIH07CiAgICAg
VmVjdG9yPHVpbnQ2NF90PiB3aWR0aHMgPSB7IDYyLCAzMywgMTcsIDEsIDIgfTsKIAogICAgIC8v
IFRlc3QgUGF0dGVybjogZCA9ICgobiAmIG1hc2sxKSA8PCBsc2IpIHwgKGQgJiBtYXNrMikKQEAg
LTMzMDYsNiArMzMwNiwzOTkgQEAgdm9pZCB0ZXN0Qml0RmllbGRJbnNlcnQ2NCgpCiAgICAgfQog
fQogCit2b2lkIHRlc3RFeHRyYWN0SW5zZXJ0Qml0ZmllbGRBdExvd0VuZDMyKCkKK3sKKyAgICBp
ZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJu
OworICAgIHVpbnQzMl90IGQgPSAweGYwZjBmMGYwOworICAgIHVpbnQzMl90IG4gPSAweGZmZmZm
ZmZmOworICAgIFZlY3Rvcjx1aW50MzJfdD4gbHNicyA9IHsgMSwgMTAsIDE0LCAzMCB9OworICAg
IFZlY3Rvcjx1aW50MzJfdD4gd2lkdGhzID0geyAzMCwgMTEsIDE3LCAxIH07CisKKyAgICAvLyBC
RlhJTCBQYXR0ZXJuOiBkID0gKChuID4+IGxzYikgJiBtYXNrMSkgfCAoZCAmIG1hc2syKQorICAg
IC8vIFdoZXJlOiBtYXNrMSA9ICgoMSA8PCB3aWR0aCkgLSAxKQorICAgIC8vICAgICAgICBtYXNr
MiA9IH5tYXNrMQorICAgIGF1dG8gdGVzdDEgPSBbJl0gKHVpbnQzMl90IGxzYiwgdWludDMyX3Qg
bWFzazEsIHVpbnQzMl90IG1hc2syKSAtPiB1aW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
ICAgIFZhbHVlKiBkVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7
CisgICAgICAgIFZhbHVlKiBsc2JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBsc2IpOworICAgICAgICBWYWx1ZSogbWFza1ZhbHVlMSA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrMSk7CisgICAgICAg
IFZhbHVlKiBtYXNrVmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIG1hc2syKTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIG5WYWx1ZSwgbHNiVmFsdWUpOwor
ICAgICAgICBWYWx1ZSogbGVmdEFuZFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXRBbmQsIE9yaWdpbigpLCBzaGlmdFZhbHVlLCBtYXNrVmFsdWUxKTsKKyAgICAgICAgVmFs
dWUqIHJpZ2h0QW5kVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwg
T3JpZ2luKCksIGRWYWx1ZSwgbWFza1ZhbHVlMik7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgbGVmdEFu
ZFZhbHVlLCByaWdodEFuZFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJ
bnN0cnVjdGlvbigqY29kZSwgImJmeGlsIik7CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDMy
X3Q+KCpjb2RlLCBkLCBuKTsKKyAgICB9OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
c2JzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHVpbnQzMl90IGxzYiA9IGxzYnMuYXQoaSk7Cisg
ICAgICAgIHVpbnQzMl90IG1hc2sxID0gKDFVIDw8IHdpZHRocy5hdChpKSkgLSAxVTsKKyAgICAg
ICAgdWludDMyX3QgbWFzazIgPSB+bWFzazE7CisgICAgICAgIENIRUNLKHRlc3QxKGxzYiwgbWFz
azEsIG1hc2syKSA9PSAoKChuID4+IGxzYikgJiBtYXNrMSkgfCAoZCAmIG1hc2syKSkpOworICAg
IH0KKworICAgIC8vIEJGWElMIFBhdHRlcm46IGQgPSAoKG4gJiBtYXNrMSkgPj4gbHNiKSB8IChk
ICYgbWFzazIpCisgICAgLy8gV2hlcmU6IG1hc2sxID0gKCgxIDw8IHdpZHRoKSAtIDEpIDw8IGxz
YgorICAgIC8vICAgICAgICBtYXNrMiA9IH4obWFzazEgPj4gbHNiKQorICAgIGF1dG8gdGVzdDIg
PSBbJl0gKHVpbnQzMl90IGxzYiwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90IG1hc2syKSAtPiB1
aW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBkVmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBsc2JWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsc2IpOworICAg
ICAgICBWYWx1ZSogbWFza1ZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBtYXNrMSk7CisgICAgICAgIFZhbHVlKiBtYXNrVmFsdWUyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG1hc2syKTsKKworICAgICAg
ICBWYWx1ZSogbGVmdEFuZFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRB
bmQsIE9yaWdpbigpLCBuVmFsdWUsIG1hc2tWYWx1ZTEpOworICAgICAgICBWYWx1ZSogcmlnaHRB
bmRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwg
ZFZhbHVlLCBtYXNrVmFsdWUyKTsKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBsZWZ0QW5kVmFsdWUsIGxzYlZh
bHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBzaGlmdFZhbHVlLCByaWdodEFuZFZhbHVlKSk7CisK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FS
TTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJmeGlsIik7
CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDMyX3Q+KCpjb2RlLCBkLCBuKTsKKyAgICB9Owor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsc2JzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IHVpbnQzMl90IGxzYiA9IGxzYnMuYXQoaSk7CisgICAgICAgIHVpbnQzMl90IG1hc2sxID0gKCgx
VSA8PCB3aWR0aHMuYXQoaSkpIC0gMVUpIDw8IGxzYjsKKyAgICAgICAgdWludDMyX3QgbWFzazIg
PSB+KG1hc2sxID4+IGxzYik7CisgICAgICAgIENIRUNLKHRlc3QyKGxzYiwgbWFzazEsIG1hc2sy
KSA9PSAoKChuICYgbWFzazEpID4+IGxzYikgfCAoZCAmIG1hc2syKSkpOworICAgIH0KK30KKwor
dm9pZCB0ZXN0RXh0cmFjdEluc2VydEJpdGZpZWxkQXRMb3dFbmQ2NCgpCit7CisgICAgaWYgKEpT
Qzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAg
ICB1aW50NjRfdCBkID0gMHhmMGYwZjBmMGYwZjBmMGYwOworICAgIHVpbnQ2NF90IG4gPSAweGZm
ZmZmZmZmZmZmZmZmZmY7CisgICAgVmVjdG9yPHVpbnQ2NF90PiBsc2JzID0geyAxLCAzMCwgMTQs
IDYyIH07CisgICAgVmVjdG9yPHVpbnQ2NF90PiB3aWR0aHMgPSB7IDYyLCAzMywgMTcsIDEgfTsK
KworICAgIC8vIEJGWElMIFBhdHRlcm46IGQgPSAoKG4gPj4gbHNiKSAmIG1hc2sxKSB8IChkICYg
bWFzazIpCisgICAgLy8gV2hlcmU6IG1hc2sxID0gKCgxIDw8IHdpZHRoKSAtIDEpCisgICAgLy8g
ICAgICAgIG1hc2syID0gfm1hc2sxCisgICAgYXV0byB0ZXN0MSA9IFsmXSAodWludDY0X3QgbHNi
LCB1aW50NjRfdCBtYXNrMSwgdWludDY0X3QgbWFzazIpIC0+IHVpbnQ2NF90IHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisKKyAgICAgICAgVmFsdWUqIGRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAg
VmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGxzYlZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxzYik7Cisg
ICAgICAgIFZhbHVlKiBtYXNrVmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIG1hc2sxKTsKKyAgICAgICAgVmFsdWUqIG1hc2tWYWx1ZTIgPSByb290
LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbWFzazIpOworCisgICAg
ICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hy
LCBPcmlnaW4oKSwgblZhbHVlLCBsc2JWYWx1ZSk7CisgICAgICAgIFZhbHVlKiBsZWZ0QW5kVmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIHNoaWZ0
VmFsdWUsIG1hc2tWYWx1ZTEpOworICAgICAgICBWYWx1ZSogcmlnaHRBbmRWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgZFZhbHVlLCBtYXNrVmFs
dWUyKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBsZWZ0QW5kVmFsdWUsIHJpZ2h0QW5kVmFsdWUpKTsK
KworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlz
QVJNNjQoKSkKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAiYmZ4aWwi
KTsKKyAgICAgICAgcmV0dXJuIGludm9rZTx1aW50NjRfdD4oKmNvZGUsIGQsIG4pOworICAgIH07
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxzYnMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgdWludDY0X3QgbHNiID0gbHNicy5hdChpKTsKKyAgICAgICAgdWludDY0X3QgbWFzazEgPSAo
MVVMTCA8PCB3aWR0aHMuYXQoaSkpIC0gMVVMTDsKKyAgICAgICAgdWludDY0X3QgbWFzazIgPSB+
bWFzazE7CisgICAgICAgIENIRUNLKHRlc3QxKGxzYiwgbWFzazEsIG1hc2syKSA9PSAoKChuID4+
IGxzYikgJiBtYXNrMSkgfCAoZCAmIG1hc2syKSkpOworICAgIH0KKworICAgIC8vIEJGWElMIFBh
dHRlcm46IGQgPSAoKG4gJiBtYXNrMSkgPj4gbHNiKSB8IChkICYgbWFzazIpCisgICAgLy8gV2hl
cmU6IG1hc2sxID0gKCgxIDw8IHdpZHRoKSAtIDEpIDw8IGxzYgorICAgIC8vICAgICAgICBtYXNr
MiA9IH4obWFzazEgPj4gbHNiKQorICAgIGF1dG8gdGVzdDIgPSBbJl0gKHVpbnQ2NF90IGxzYiwg
dWludDY0X3QgbWFzazEsIHVpbnQ2NF90IG1hc2syKSAtPiB1aW50NjRfdCB7CisgICAgICAgIFBy
b2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworCisgICAgICAgIFZhbHVlKiBkVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZh
bHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBsc2JWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsc2IpOworICAg
ICAgICBWYWx1ZSogbWFza1ZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBtYXNrMSk7CisgICAgICAgIFZhbHVlKiBtYXNrVmFsdWUyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG1hc2syKTsKKworICAgICAg
ICBWYWx1ZSogbGVmdEFuZFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRB
bmQsIE9yaWdpbigpLCBuVmFsdWUsIG1hc2tWYWx1ZTEpOworICAgICAgICBWYWx1ZSogcmlnaHRB
bmRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwg
ZFZhbHVlLCBtYXNrVmFsdWUyKTsKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBsZWZ0QW5kVmFsdWUsIGxzYlZh
bHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBzaGlmdFZhbHVlLCByaWdodEFuZFZhbHVlKSk7CisK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FS
TTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJmeGlsIik7
CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDY0X3Q+KCpjb2RlLCBkLCBuKTsKKyAgICB9Owor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsc2JzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IHVpbnQ2NF90IGxzYiA9IGxzYnMuYXQoaSk7CisgICAgICAgIHVpbnQ2NF90IG1hc2sxID0gKCgx
VUxMIDw8IHdpZHRocy5hdChpKSkgLSAxVUxMKSA8PCBsc2I7CisgICAgICAgIHVpbnQ2NF90IG1h
c2syID0gfihtYXNrMSA+PiBsc2IpOworICAgICAgICBDSEVDSyh0ZXN0Mihsc2IsIG1hc2sxLCBt
YXNrMikgPT0gKCgobiAmIG1hc2sxKSA+PiBsc2IpIHwgKGQgJiBtYXNrMikpKTsKKyAgICB9Cit9
CisKK3ZvaWQgdGVzdEJJQzMyKCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNP
cHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBk
ID0gbiAmICgtbSAtIDEpCisgICAgYXV0byB0ZXN0MSA9IFsmXSAoaW50MzJfdCBuLCBpbnQzMl90
IG0pIC0+IGludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmln
aW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogY29u
c3QxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOwor
CisgICAgICAgIFZhbHVlKiBuZWdWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
TmVnLCBPcmlnaW4oKSwgbVZhbHVlKTsKKyAgICAgICAgVmFsdWUqIHN1YlZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuZWdWYWx1ZSwgY29uc3QxKTsK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdEFuZCwgT3JpZ2luKCksIG5WYWx1ZSwgc3ViVmFsdWUpKTsKKworICAgICAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAiYmljIik7CisgICAgICAgIHJldHVy
biBpbnZva2U8aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICAvLyBUZXN0IFBh
dHRlcm46IGQgPSBuICYgKG0gXiAtMSkKKyAgICBhdXRvIHRlc3QyID0gWyZdIChpbnQzMl90IG4s
IGludDMyX3QgbSkgLT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBu
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVl
KiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZh
bHVlKiBtaW51c09uZVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIC0xKTsKKworICAgICAgICBWYWx1ZSogeG9yVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIG1WYWx1ZSwgbWludXNPbmVWYWx1ZSk7
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXRBbmQsIE9yaWdpbigpLCBuVmFsdWUsIHhvclZhbHVlKSk7CisKKyAgICAgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAg
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImJpYyIpOworICAgICAgICByZXR1
cm4gaW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRv
IG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJh
bmRzKCkpIHsKKyAgICAgICAgICAgIENIRUNLKHRlc3QxKG4udmFsdWUsIG0udmFsdWUpID09IChu
LnZhbHVlICYgKC1tLnZhbHVlIC0gMSkpKTsKKyAgICAgICAgICAgIENIRUNLKHRlc3QyKG4udmFs
dWUsIG0udmFsdWUpID09IChuLnZhbHVlICYgKG0udmFsdWUgXiAtMSkpKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCB0ZXN0QklDNjQoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRl
ZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUZXN0IFBh
dHRlcm46IGQgPSBuICYgKC1tIC0gMSkKKyAgICBhdXRvIHRlc3QxID0gWyZdIChpbnQ2NF90IG4s
IGludDY0X3QgbSkgLT4gaW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBu
VmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBjb25zdDEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2
NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisKKyAgICAgICAgVmFsdWUqIG5lZ1ZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBtVmFsdWUpOworICAg
ICAgICBWYWx1ZSogc3ViVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1Yiwg
T3JpZ2luKCksIG5lZ1ZhbHVlLCBjb25zdDEpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgblZhbHVl
LCBzdWJWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwor
ICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24o
KmNvZGUsICJiaWMiKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwg
bSk7CisgICAgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gJiAobSBeIC0xKQorICAg
IGF1dG8gdGVzdDIgPSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBtKSAtPiBpbnQ2NF90IHsKKyAg
ICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIG1p
bnVzT25lVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgLTEpOworCisgICAgICAgIFZhbHVlKiB4b3JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgbVZhbHVlLCBtaW51c09uZVZhbHVlKTsKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dEFuZCwgT3JpZ2luKCksIG5WYWx1ZSwgeG9yVmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAiYmljIik7CisgICAgICAgIHJldHVybiBpbnZv
a2U8aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbiA6IGlu
dDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkg
eworICAgICAgICAgICAgQ0hFQ0sodGVzdDEobi52YWx1ZSwgbS52YWx1ZSkgPT0gKG4udmFsdWUg
JiAoLW0udmFsdWUgLSAxTEwpKSk7CisgICAgICAgICAgICBDSEVDSyh0ZXN0MihuLnZhbHVlLCBt
LnZhbHVlKSA9PSAobi52YWx1ZSAmIChtLnZhbHVlIF4gLTFMTCkpKTsKKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCB0ZXN0T3JOb3QzMigpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVm
YXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRlc3QgUGF0
dGVybjogZCA9IG4gfCAoLW0gLSAxKQorICAgIGF1dG8gdGVzdDEgPSBbJl0gKGludDMyX3Qgbiwg
aW50MzJfdCBtKSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5W
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUq
IG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFs
dWUqIGNvbnN0MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAxKTsKKworICAgICAgICBWYWx1ZSogbmVnVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIE5lZywgT3JpZ2luKCksIG1WYWx1ZSk7CisgICAgICAgIFZhbHVlKiBzdWJWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgbmVnVmFsdWUsIGNv
bnN0MSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXRPciwgT3JpZ2luKCksIG5WYWx1ZSwgc3ViVmFsdWUpKTsKKworICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgICAgICBpZiAoaXNBUk02NCgp
KQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJvcm4iKTsKKyAgICAg
ICAgcmV0dXJuIGludm9rZTxpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIC8v
IFRlc3QgUGF0dGVybjogZCA9IG4gfCAobSBeIC0xKQorICAgIGF1dG8gdGVzdDIgPSBbJl0gKGlu
dDMyX3QgbiwgaW50MzJfdCBtKSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAg
VmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAg
ICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAg
ICAgICAgVmFsdWUqIG1pbnVzT25lVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgLTEpOworCisgICAgICAgIFZhbHVlKiB4b3JWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgbVZhbHVlLCBtaW51c09u
ZVZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgblZhbHVlLCB4b3JWYWx1ZSkpOworCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgp
KQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJvcm4iKTsKKyAgICAg
ICAgcmV0dXJuIGludm9rZTxpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZv
ciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50
MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBDSEVDSyh0ZXN0MShuLnZhbHVlLCBtLnZhbHVl
KSA9PSAobi52YWx1ZSB8ICgtbS52YWx1ZSAtIDEpKSk7CisgICAgICAgICAgICBDSEVDSyh0ZXN0
MihuLnZhbHVlLCBtLnZhbHVlKSA9PSAobi52YWx1ZSB8IChtLnZhbHVlIF4gLTEpKSk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE9yTm90NjQoKQoreworICAgIGlmIChKU0M6Ok9w
dGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBUZXN0IFBhdHRlcm46IGQgPSBuIHwgKC1tIC0gMSkKKyAgICBhdXRvIHRlc3QxID0gWyZdIChp
bnQ2NF90IG4sIGludDY0X3QgbSkgLT4gaW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9j
OworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAg
IFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBjb25zdDEgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisKKyAgICAgICAgVmFsdWUqIG5l
Z1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBtVmFs
dWUpOworICAgICAgICBWYWx1ZSogc3ViVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFN1YiwgT3JpZ2luKCksIG5lZ1ZhbHVlLCBjb25zdDEpOworICAgICAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigp
LCBuVmFsdWUsIHN1YlZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgIm9ybiIpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpj
b2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiB8IChtIF4g
LTEpCisgICAgYXV0byB0ZXN0MiA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0pIC0+IGludDY0
X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBW
YWx1ZSogbWludXNPbmVWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAtMSk7CisKKyAgICAgICAgVmFsdWUqIHhvclZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBtVmFsdWUsIG1pbnVzT25lVmFsdWUp
OworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0T3IsIE9yaWdpbigpLCBuVmFsdWUsIHhvclZhbHVlKSk7CisKKyAgICAgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAg
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm9ybiIpOworICAgICAgICByZXR1
cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRv
IG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9wZXJh
bmRzKCkpIHsKKyAgICAgICAgICAgIENIRUNLKHRlc3QxKG4udmFsdWUsIG0udmFsdWUpID09IChu
LnZhbHVlIHwgKC1tLnZhbHVlIC0gMUxMKSkpOworICAgICAgICAgICAgQ0hFQ0sodGVzdDIobi52
YWx1ZSwgbS52YWx1ZSkgPT0gKG4udmFsdWUgfCAobS52YWx1ZSBeIC0xTEwpKSk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKIHZvaWQgdGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazMy
KCkKIHsKICAgICAvLyBUdXJuIHRoaXM6ICh0bXAgPj4gaW1tKSAmIG1hc2sgCkBAIC00MTk4LDgg
KzQ1OTEsMTQgQEAgdm9pZCBhZGRCaXRUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJl
ZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpCiAgICAgUlVOKHRlc3RVYmZpejY0QW5k
U2hpZnRNYXNrVmFsdWUoKSk7CiAgICAgUlVOKHRlc3RVYmZpejY0U2hpZnRBbmQoKSk7CiAgICAg
UlVOKHRlc3RVYmZpejY0QW5kU2hpZnQoKSk7Ci0gICAgUlVOKHRlc3RCaXRGaWVsZEluc2VydDMy
KCkpOwotICAgIFJVTih0ZXN0Qml0RmllbGRJbnNlcnQ2NCgpKTsKKyAgICBSVU4odGVzdEluc2Vy
dEJpdEZpZWxkMzIoKSk7CisgICAgUlVOKHRlc3RJbnNlcnRCaXRGaWVsZDY0KCkpOworICAgIFJV
Tih0ZXN0RXh0cmFjdEluc2VydEJpdGZpZWxkQXRMb3dFbmQzMigpKTsKKyAgICBSVU4odGVzdEV4
dHJhY3RJbnNlcnRCaXRmaWVsZEF0TG93RW5kNjQoKSk7CisgICAgUlVOKHRlc3RCSUMzMigpKTsK
KyAgICBSVU4odGVzdEJJQzY0KCkpOworICAgIFJVTih0ZXN0T3JOb3QzMigpKTsKKyAgICBSVU4o
dGVzdE9yTm90NjQoKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1h
c2szMigpKTsKICAgICBSVU4odGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazY0KCkp
OwogICAgIFJVTih0ZXN0Qml0QW5kQXJncyg0MywgNDMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAyN2I2MzFkNGNjNzNhZDViYTAxY2Rj
OTI4Yjc3OGE0MzliYzBlZGYyLi4zZDA4NzI4MDgyN2QyYWVmN2MzMmVlZDJhZmQxODYyZjRjMzlh
ZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CkBAIC0xNjc1NCw3ICsxNjc1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtZXJnZS0+YXBw
ZW5kU29tZVJlZ2lzdGVyKHB0cik7CiAgICAgICAgICAgICBtZXJnZS0+c2V0R2VuZXJhdG9yKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNb
MF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgIGppdC5iaXRGaWVsZEluc2VydDY0KHBhcmFtc1sx
XS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKDY0IC0gTWFjcm9Bc3NlbWJsZXI6Om1heE51bWJlck9mQWxsb3dlZFBBQ0JpdHMp
LCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgIGppdC5pbnNlcnRCaXRGaWVsZDY0
KHBhcmFtc1sxXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDY0IC0gTWFjcm9Bc3NlbWJsZXI6Om1heE51bWJlck9mQWxsb3dl
ZFBBQ0JpdHMpLCBwYXJhbXNbMF0uZ3ByKCkpOwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAg
ICAgIHJlc3VsdCA9IGRvVW50YWdBcnJheVB0cihtZXJnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggNDk4MTdhN2FkZDU0MGI3MTZmZWUy
NmRlNDM3NmM2MTA4MjdlNTdlMi4uZDM2ZWI3MWI5YWRkMzZkNDQyNjQ5ODRiODdkZWQyMDIwYjcz
YTA2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNw
cApAQCAtMTExMSw3ICsxMTExLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNhZ2VXaXRob3V0
VW50YWdnaW5nKEdpZ2FjYWdlOjpLaW5kIGtpbmQsIEdQUlJlZyBzdG9yYWdlKQogICAgIGFkZFB0
cihUcnVzdGVkSW1tUHRyKEdpZ2FjYWdlOjpiYXNlUHRyKGtpbmQpKSwgc3RvcmFnZSk7CiAjaWYg
Q1BVKEFSTTY0RSkKICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKQotICAgICAg
ICBiaXRGaWVsZEluc2VydDY0KHN0b3JhZ2UsIFRydXN0ZWRJbW0zMigwKSwgVHJ1c3RlZEltbTMy
KDY0IC0gbWF4TnVtYmVyT2ZBbGxvd2VkUEFDQml0cyksIHRlbXBSZWcpOworICAgICAgICBpbnNl
cnRCaXRGaWVsZDY0KHN0b3JhZ2UsIFRydXN0ZWRJbW0zMigwKSwgVHJ1c3RlZEltbTMyKDY0IC0g
bWF4TnVtYmVyT2ZBbGxvd2VkUEFDQml0cyksIHRlbXBSZWcpOwogICAgIGlmIChza2lwLmlzU2V0
KCkpCiAgICAgICAgIHNraXAubGluayh0aGlzKTsKICNlbmRpZgpAQCAtMTE0OCw3ICsxMTQ4LDcg
QEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWcoR2lnYWNh
Z2U6OktpbmQga2luZCwgR1BSUmVnIHN0b3IKICAgICAgICAgICAgIEFTU0VSVChMb2dpY2FsSW1t
ZWRpYXRlOjpjcmVhdGU2NChHaWdhY2FnZTo6bWFzayhraW5kKSkuaXNWYWxpZCgpKTsKICAgICAg
ICAgICAgIGFuZFB0cihUcnVzdGVkSW1tUHRyKEdpZ2FjYWdlOjptYXNrKGtpbmQpKSwgdGVtcFJl
Zyk7CiAgICAgICAgICAgICBhZGRQdHIoc2NyYXRjaCwgdGVtcFJlZyk7Ci0gICAgICAgICAgICBi
aXRGaWVsZEluc2VydDY0KHRlbXBSZWcsIFRydXN0ZWRJbW0zMigwKSwgVHJ1c3RlZEltbTMyKDY0
IC0gbWF4TnVtYmVyT2ZBbGxvd2VkUEFDQml0cyksIHN0b3JhZ2UpOworICAgICAgICAgICAgaW5z
ZXJ0Qml0RmllbGQ2NCh0ZW1wUmVnLCBUcnVzdGVkSW1tMzIoMCksIFRydXN0ZWRJbW0zMig2NCAt
IG1heE51bWJlck9mQWxsb3dlZFBBQ0JpdHMpLCBzdG9yYWdlKTsKICNlbHNlCiAgICAgICAgICAg
ICBhbmRQdHIoVHJ1c3RlZEltbVB0cihHaWdhY2FnZTo6bWFzayhraW5kKSksIHN0b3JhZ2UpOwog
ICAgICAgICAgICAgYWRkUHRyKHNjcmF0Y2gsIHN0b3JhZ2UpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>