<?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>227857</bug_id>
          
          <creation_ts>2021-07-10 17:08:07 -0700</creation_ts>
          <short_desc>Add SMNEGL, UMNEGL, UMADDL, and UMSUBL for ARM64 and select this instruction in Air</short_desc>
          <delta_ts>2021-07-12 13:52:20 -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>rmorisset</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>1776193</commentid>
    <comment_count>0</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-10 17:08:07 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776195</commentid>
    <comment_count>1</comment_count>
      <attachid>433282</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-10 17:34:31 -0700</bug_when>
    <thetext>Created attachment 433282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776203</commentid>
    <comment_count>2</comment_count>
      <attachid>433285</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-10 23:45:20 -0700</bug_when>
    <thetext>Created attachment 433285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776398</commentid>
    <comment_count>3</comment_count>
      <attachid>433285</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-07-12 11:54:08 -0700</bug_when>
    <thetext>Comment on attachment 433285
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        UMNEGL, UMADDL, and UMSUBL) of them. In addition, this patch refactors 

You just mentioned UMADDL twice: both as something that was already implemented, and as something that was missing.

&gt; Source/JavaScriptCore/ChangeLog:21
&gt; +        d = -(SExt32(n) * SExt32(m)) and d = -(SExt32(n) * SExt32(m)) respectively.

The two patterns are identical. Is it on purpose, or should the latter be Zext32 each time?

&gt; Source/JavaScriptCore/ChangeLog:24
&gt; +        Int @0 = S/UExt32(Trunc(ArgumentReg(%x0)))

nitpick: UExt32 -&gt; ZExt32 (I think that is what you meant here?)

&gt; Source/JavaScriptCore/ChangeLog:47
&gt; +        d = ZExt32(n) * ZExt32(m) + a

Maybe also mention that d = a + ZExt32(n) * ZExt32(m) is also recognized so that readers don&apos;t wonder.

&gt; Source/JavaScriptCore/ChangeLog:50
&gt; +        Int @0 = UExt32(Trunc(ArgumentReg(%x0)))

nit: UExt -&gt; ZExt

&gt; Source/JavaScriptCore/ChangeLog:77
&gt; +        Int @0 = UExt32(Trunc(ArgumentReg(%x0)))

nit: UExt -&gt; ZExt

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2761
&gt; +                auto tryB3Opcode = [&amp;] (Value* v, B3::Opcode b3Opcode) -&gt; bool { 

It is the third instance of this same function. Maybe it could be refactored out and given a more explicit name?
Maybe something like isMergeableB3Opcode (I&apos;m not super happy with that name, but I feel like it is already clearer than tryB3Opcode).

&gt; Source/JavaScriptCore/b3/air/AirOpcode.opcodes:278
&gt; +arm64: MultiplyNegSignExtend32 U:G:64, U:G:64, D:G:64

Should the first two not be U:G:32 since the instruction includes an extension from 32 to 64 bits?

&gt; Source/JavaScriptCore/b3/air/AirOpcode.opcodes:281
&gt; +arm64: MultiplyNegZeroExtend32 U:G:64, U:G:64, D:G:64

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776409</commentid>
    <comment_count>4</comment_count>
      <attachid>433341</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-12 12:47:57 -0700</bug_when>
    <thetext>Created attachment 433341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776411</commentid>
    <comment_count>5</comment_count>
      <attachid>433343</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-12 12:50:26 -0700</bug_when>
    <thetext>Created attachment 433343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776415</commentid>
    <comment_count>6</comment_count>
      <attachid>433343</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-07-12 12:57:40 -0700</bug_when>
    <thetext>Comment on attachment 433343
Patch

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

r=me

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2766
&gt; +                    // ZMNEG: d = -(ZExt32(n) * ZExt32(m))

nitpick: ZMNEG -&gt; UMNEG</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776416</commentid>
    <comment_count>7</comment_count>
      <attachid>433346</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-12 13:01:35 -0700</bug_when>
    <thetext>Created attachment 433346
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776417</commentid>
    <comment_count>8</comment_count>
      <attachid>433347</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-12 13:07:36 -0700</bug_when>
    <thetext>Created attachment 433347
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776418</commentid>
    <comment_count>9</comment_count>
      <attachid>433348</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-12 13:10:54 -0700</bug_when>
    <thetext>Created attachment 433348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776430</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-12 13:51:18 -0700</bug_when>
    <thetext>Committed r279850 (239605@main): &lt;https://commits.webkit.org/239605@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433348.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776431</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-12 13:52:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/80479986&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433282</attachid>
            <date>2021-07-10 17:34:31 -0700</date>
            <delta_ts>2021-07-10 23:45:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227857-20210710193429.patch</filename>
            <type>text/plain</type>
            <size>42504</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
M2U2MmU3ZWZlZTBiZjJiMTUwZjhhODM1NjAyZmY4OTIxMDUxY2FlLi5lODUyZjQyMDZmZjc3ZTFk
NTAxY2JjYTYzYzMwY2RmMDAwMWNjMWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAyMS0wNy0xMCAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIFNNTkVHTCwgVU1ORUdMLCBVTUFEREwsIGFuZCBVTVNVQkwgZm9y
IEFSTTY0IGFuZCBzZWxlY3QgdGhpcyBpbnN0cnVjdGlvbiBpbiBBaXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzg1NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlO
ZWczMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om11bHRpcGx5QWRkWmVy
b0V4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlT
dWJaZXJvRXh0ZW5kMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0
aXBseU5lZzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlO
ZWdTaWduRXh0ZW5kMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0
aXBseU5lZ1plcm9FeHRlbmQzMik6CisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoK
KyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKEpT
Qzo6dGVzdE11bHRpcGx5QWRkWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRp
cGx5U3ViU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5U3ViWmVyb0V4
dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5TmVnU2lnbkV4dGVuZDMyKToKKyAg
ICAgICAgKEpTQzo6dGVzdE11bHRpcGx5TmVnWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6
dGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyTGVmdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OnRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMlJpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKiBi
My9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoK
KyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAg
ICAgICh0ZXN0TXVsQWRkQXJnc0xlZnQpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NSaWdodCk6
CisgICAgICAgICh0ZXN0TXVsQWRkU2lnbkV4dGVuZDMyQXJnc0xlZnQpOgorICAgICAgICAodGVz
dE11bEFkZFplcm9FeHRlbmQzMkFyZ3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRaZXJvRXh0
ZW5kMzJBcmdzUmlnaHQpOgorICAgICAgICAodGVzdE11bFN1YkFyZ3NMZWZ0KToKKyAgICAgICAg
KHRlc3RNdWxTdWJBcmdzUmlnaHQpOgorICAgICAgICAodGVzdE11bFN1YkFyZ3NSaWdodDMyKToK
KyAgICAgICAgKHRlc3RNdWxTdWJTaWduRXh0ZW5kMzIpOgorICAgICAgICAodGVzdE11bFN1Ylpl
cm9FeHRlbmQzMik6CisgICAgICAgICh0ZXN0TXVsTmVnQXJnQXJnKToKKyAgICAgICAgKHRlc3RN
dWxOZWdBcmdzKToKKyAgICAgICAgKHRlc3RNdWxOZWdBcmdzMzIpOgorICAgICAgICAodGVzdE11
bE5lZ1NpZ25FeHRlbmQzMik6CisgICAgICAgICh0ZXN0TXVsTmVnWmVyb0V4dGVuZDMyKToKKyAg
ICAgICAgKHRlc3RNdWxTdWJTaWduRXh0ZW5kMzJBcmdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
My90ZXN0YjNfMy5jcHA6CisgICAgICAgIChhZGRBcmdUZXN0cyk6CisKIDIwMjEtMDctMDggIFlp
amlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBBaXIgb3Bj
b2RlIGFkZC9zdWItYW5kLXNoaWZ0IGZvciBBUk02NCBhbmQgc2VsZWN0IHRoaXMgaW5zdHJ1Y3Rp
b24gaW4gQWlyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGRmNjVjYjYzNjFmNGFiMDVhMDU1MGUzMGUzNGE4NTc3
OWFlZGFmN2YuLjNkODVjYmI4ZGI1MzNjODQwN2FhYjY1YTM5MDQ0ZjliYTJiNDAyMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oCkBAIC03NzAsNyArNzcwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtdWx0aXBseU5l
ZzMyKFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubXN1YjwzMj4oZGVzdCwgbXVsTGVmdCwg
bXVsUmlnaHQsIEFSTTY0UmVnaXN0ZXJzOjp6cik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1uZWc8
MzI+KGRlc3QsIG11bExlZnQsIG11bFJpZ2h0KTsKICAgICB9CiAKICAgICB2b2lkIG11bHRpcGx5
QWRkNjQoUmVnaXN0ZXJJRCBtdWxMZWZ0LCBSZWdpc3RlcklEIG11bFJpZ2h0LCBSZWdpc3RlcklE
IHN1bW1hbmQsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTc4Myw2ICs3ODMsMTEgQEAgcHVibGljOgog
ICAgICAgICBtX2Fzc2VtYmxlci5zbWFkZGwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIHN1bW1h
bmQpOwogICAgIH0KIAorICAgIHZvaWQgbXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIoUmVnaXN0ZXJJ
RCBtdWxMZWZ0LCBSZWdpc3RlcklEIG11bFJpZ2h0LCBSZWdpc3RlcklEIHN1bW1hbmQsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnVtYWRkbChkZXN0LCBtdWxM
ZWZ0LCBtdWxSaWdodCwgc3VtbWFuZCk7CisgICAgfQorCiAgICAgdm9pZCBtdWx0aXBseVN1YjY0
KFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBtaW51
ZW5kLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tc3ViPDY0
PihkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCwgbWludWVuZCk7CkBAIC03OTMsOSArNzk4LDI0IEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc21zdWJsKGRlc3QsIG11bExlZnQsIG11bFJp
Z2h0LCBtaW51ZW5kKTsKICAgICB9CiAKKyAgICB2b2lkIG11bHRpcGx5U3ViWmVyb0V4dGVuZDMy
KFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBtaW51
ZW5kLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci51bXN1Ymwo
ZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIG1pbnVlbmQpOworICAgIH0KKwogICAgIHZvaWQgbXVs
dGlwbHlOZWc2NChSZWdpc3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1zdWI8NjQ+KGRlc3QsIG11
bExlZnQsIG11bFJpZ2h0LCBBUk02NFJlZ2lzdGVyczo6enIpOworICAgICAgICBtX2Fzc2VtYmxl
ci5tbmVnPDY0PihkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCk7CisgICAgfQorCisgICAgdm9pZCBt
dWx0aXBseU5lZ1NpZ25FeHRlbmQzMihSZWdpc3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVs
UmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNtbmVn
bChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCk7CisgICAgfQorCisgICAgdm9pZCBtdWx0aXBseU5l
Z1plcm9FeHRlbmQzMihSZWdpc3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnVtbmVnbChkZXN0LCBt
dWxMZWZ0LCBtdWxSaWdodCk7CiAgICAgfQogCiAgICAgdm9pZCBtdWx0aXBseVNpZ25FeHRlbmQz
MihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggZDI5Zjkz
NjBhMzY3ZDBhMTEzNjNlODdiODU2OTNlNTg0ZjNlN2VhNC4uNzFjZDIzOTk4Y2U3YTI0MTIwMTk2
ZDBmMDQ1NjI0NmQxNGQ5MThhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci90ZXN0bWFzbS5jcHAKQEAgLTkyMSw3ICs5MjEsNyBAQCB2b2lkIHRlc3RNdWx0aXBseVNpZ25F
eHRlbmQzMigpCiAgICAgfQogfQogCi12b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMkxl
ZnQoKQordm9pZCB0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIoKQogewogICAgIC8vIGQgPSBT
RXh0MzIobikgKiBTRXh0MzIobSkgKyBhCiAgICAgYXV0byBhZGQgPSBjb21waWxlKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQpIHsKQEAgLTk0NCwyNSArOTQ0LDI4IEBAIHZvaWQgdGVzdE11bHRpcGx5
QWRkU2lnbkV4dGVuZDMyTGVmdCgpCiAgICAgfQogfQogCi12b2lkIHRlc3RNdWx0aXBseUFkZFNp
Z25FeHRlbmQzMlJpZ2h0KCkKK3ZvaWQgdGVzdE11bHRpcGx5QWRkWmVyb0V4dGVuZDMyKCkKIHsK
LSAgICAvLyBkID0gYSArIFNFeHQzMihuKSAqIFNFeHQzMihtKQorICAgIC8vIGQgPSBaRXh0MzIo
bikgKiBaRXh0MzIobSkgKyBhCiAgICAgYXV0byBhZGQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAotICAgICAg
ICBqaXQubXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAg
ICAgICAgaml0Lm11bHRpcGx5QWRkWmVyb0V4dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
CisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAogICAgICAgICAgICAgR1BSSW5m
bzo6YXJndW1lbnRHUFIyLCAKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCiAg
ICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAKICAgICAgICAgZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwogCi0gICAgZm9y
IChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKLSAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygp
KQotICAgICAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90PihhZGQsIGEsIG4sIG0p
LCBhICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4obikgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtKSk7
CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRv
IG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhIDogaW50NjRP
cGVyYW5kcygpKSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgdW4gPSBuOworICAgICAgICAg
ICAgICAgIHVpbnQzMl90IHVtID0gbTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50NjRfdD4oYWRkLCBuLCBtLCBhKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4odW4pICogc3RhdGlj
X2Nhc3Q8aW50NjRfdD4odW0pICsgYSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CiB9CkBAIC0xMDkxLDcgKzEwOTQsNyBAQCB2b2lkIHRlc3RTdWI2NEFyZ0ltbTY0KCkKIAogdm9p
ZCB0ZXN0TXVsdGlwbHlTdWJTaWduRXh0ZW5kMzIoKQogewotICAgIC8vIGQgPSBhIC0gU0V4dDMy
KG4pICogIFNFeHQzMihtKQorICAgIC8vIGQgPSBhIC0gU0V4dDMyKG4pICogU0V4dDMyKG0pCiAg
ICAgYXV0byBzdWIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAg
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIApAQCAtMTExMiw2ICsxMTE1LDcxIEBAIHZvaWQg
dGVzdE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyKCkKICAgICB9CiB9CiAKK3ZvaWQgdGVzdE11bHRp
cGx5U3ViWmVyb0V4dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gYSAtIChaRXh0MzIobikgKiBaRXh0
MzIobSkpCisgICAgYXV0byBzdWIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
KyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBqaXQubXVsdGlw
bHlTdWJaZXJvRXh0ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgIEdQ
UkluZm86OmFyZ3VtZW50R1BSMiwKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
CisgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAg
Zm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG4gOiBp
bnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5k
cygpKSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgdW4gPSBuOworICAgICAgICAgICAgICAg
IHVpbnQzMl90IHVtID0gbTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRf
dD4oc3ViLCBhLCBuLCBtKSwgYSAtIHN0YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRpY19j
YXN0PGludDY0X3Q+KHVtKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZvaWQgdGVzdE11bHRpcGx5TmVnU2lnbkV4dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gLSAoU0V4
dDMyKG4pICogU0V4dDMyKG0pKQorICAgIGF1dG8gbmVnID0gY29tcGlsZShbPV0gKENDYWxsSGVs
cGVycyYgaml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAg
ICAgaml0Lm11bHRpcGx5TmVnU2lnbkV4dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOwor
CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRv
IG0gOiBpbnQzMk9wZXJhbmRzKCkpCisgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRf
dD4obmVnLCBuLCBtKSwgLShzdGF0aWNfY2FzdDxpbnQ2NF90PihuKSAqIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KG0pKSk7CisgICAgfQorfQorCit2b2lkIHRlc3RNdWx0aXBseU5lZ1plcm9FeHRlbmQz
MigpCit7CisgICAgLy8gZCA9IC0gWkV4dDMyKG4pICogWkV4dDMyKG0pCisgICAgYXV0byBuZWcg
PSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKKworICAgICAgICBqaXQubXVsdGlwbHlOZWdaZXJvRXh0ZW5kMzIoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAg
ICBqaXQucmV0KCk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMo
KSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAg
ICAgdWludDMyX3QgdW4gPSBuOworICAgICAgICAgICAgdWludDMyX3QgdW0gPSBtOworICAgICAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQ2NF90PihuZWcsIG4sIG0pLCAtKHN0YXRpY19jYXN0
PHVpbnQ2NF90Pih1bikgKiBzdGF0aWNfY2FzdDx1aW50NjRfdD4odW0pKSk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKIHZvaWQgdGVzdEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIoKQogewogICAg
IHVpbnQzMl90IHNyYyA9IDB4ZjBmMGYwZjA7CkBAIC00MTY0LDkgKzQyMzIsMTIgQEAgdm9pZCBy
dW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lT
CiAgICAgUlVOKHRlc3RTdWI2NEltbTY0KCkpOwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW02NCgp
KTsKIAotICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkpOwotICAgIFJV
Tih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJSaWdodCgpKTsKKyAgICBSVU4odGVzdE11bHRp
cGx5QWRkU2lnbkV4dGVuZDMyKCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRaZXJvRXh0ZW5k
MzIoKSk7CiAgICAgUlVOKHRlc3RNdWx0aXBseVN1YlNpZ25FeHRlbmQzMigpKTsKKyAgICBSVU4o
dGVzdE11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlOZWdT
aWduRXh0ZW5kMzIoKSk7CisgICAgUlVOKHRlc3RNdWx0aXBseU5lZ1plcm9FeHRlbmQzMigpKTsK
IAogICAgIFJVTih0ZXN0RXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMigpKTsKICAgICBSVU4odGVz
dEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkNjQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCmluZGV4IDJiNTU2ZDcxODMzMzcyMGJmYTc4NzNjNzc5YmQyOTFmZDEy
NjE3OTEuLmEwZGM1ZTQ2ZDU5OWVhNzM1NzhiYmIyY2Y4NTk1MmVkMGQ5NmEwOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNTY3LDcyICsyNTY3LDc5
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAgICBpZiAodHJ5QXBw
ZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAgICAgICBWYWx1ZSog
bGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOwogICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92
YWx1ZS0+Y2hpbGQoMSk7CiAKLSAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkRm9ybShNdWx0aXBs
eUFkZDY0LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkgCi0gICAgICAg
ICAgICAgICAgPT0gaXNWYWxpZEZvcm0oTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIsIEFyZzo6VG1w
LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSk7Ci0gICAgICAgICAgICBBaXI6Ok9wY29k
ZSBtdWx0aXBseUFkZE9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlBZGQzMiwgTXVs
dGlwbHlBZGQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9y
bShtdWx0aXBseUFkZE9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpU
bXApKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFpbW0ocmlnaHQpIHx8IG1fdmFsdWVUb1RtcFty
aWdodF0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBseSA9IFsmXSAoVmFs
dWUqIHYpIC0+IGJvb2wgeyAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2LT5vcGNvZGUo
KSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwodikpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNv
bnRhaW5zKHYtPmNoaWxkKDApKSB8fCBtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgxKSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAg
ICAgICAgICAgICAgYXV0byB0cnlTRXh0MzIgPSBbJl0gKFZhbHVlKiB2KSAtPiBib29sIHsgCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi0+b3Bjb2RlKCkgPT0gU0V4dDMyICYmIGNh
bkJlSW50ZXJuYWwodik7Ci0gICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICBhdXRv
IHRyeU11bHRpcGx5QWRkID0gWyZdICgpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIGlmIChp
bW0ocmlnaHQpICYmICFtX3ZhbHVlVG9UbXBbcmlnaHRdKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgICAgICAgICAgLy8gTUFERDogZCA9IG4gKiBtICsg
YQotICAgICAgICAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZE11bHRpcGx5QWRkID0gWyZdIChW
YWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghdHJ5TXVsdGlwbHkobGVmdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5TGVm
dCA9IGxlZnQtPmNoaWxkKDApOwotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRp
cGx5UmlnaHQgPSBsZWZ0LT5jaGlsZCgxKTsKKyAgICAgICAgICAgICAgICBhdXRvIHRyeUIzT3Bj
b2RlID0gWyZdIChWYWx1ZSogdiwgQjM6Ok9wY29kZSBiM09wY29kZSkgLT4gYm9vbCB7IAorICAg
ICAgICAgICAgICAgICAgICBpZiAodi0+b3Bjb2RlKCkgIT0gYjNPcGNvZGUgfHwgIWNhbkJlSW50
ZXJuYWwodikpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgIH07CiAKKyAgICAgICAgICAgICAgICAvLyBNQUREOiBk
ID0gbiAqIG0gKyBhCisgICAgICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRNdWx0aXBseUFkZCA9
IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChsZWZ0LT5vcGNvZGUoKSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwobGVmdCkg
fHwgbV9sb2NrZWQuY29udGFpbnMocmlnaHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbGVm
dC0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0ID0g
bGVmdC0+Y2hpbGQoMSk7CisgICAgICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIGFpck9wY29k
ZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92YWx1
ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlOZXdBaXJPcGNvZGUgPSBb
Jl0gKCkgLT4gQWlyOjpPcGNvZGUgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFpck9w
Y29kZSAhPSBNdWx0aXBseUFkZDY0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBBaXI6Ok9vcHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTTUFEREw6IGQgPSBTRXh0
MzIobikgKiBTRXh0MzIobSkgKyBhCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlw
bHlBZGRPcGNvZGUgPT0gTXVsdGlwbHlBZGQ2NCAmJiB0cnlTRXh0MzIobXVsdGlwbHlMZWZ0KSAm
JiB0cnlTRXh0MzIobXVsdGlwbHlSaWdodCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhcHBlbmQoTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIsIAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0bXAobXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSksIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0bXAobXVsdGlwbHlSaWdodC0+Y2hpbGQoMCkpLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG1wKHJpZ2h0KSwgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRtcChtX3ZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbWl0SW50ZXJuYWwobXVsdGlwbHlMZWZ0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb21taXRJbnRlcm5hbChtdWx0aXBseVJpZ2h0KTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21taXRJbnRlcm5hbChsZWZ0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0cnlCM09wY29kZShtdWx0aXBseUxlZnQsIFNFeHQzMikgJiYgdHJ5QjNPcGNv
ZGUobXVsdGlwbHlSaWdodCwgU0V4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyOworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gVU1BRERMOiBkID0gWkV4dDMyKG4pICogWkV4dDMyKG0pICsgYQorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRyeUIzT3Bjb2RlKG11bHRpcGx5TGVmdCwgWkV4dDMyKSAmJiB0cnlCM09w
Y29kZShtdWx0aXBseVJpZ2h0LCBaRXh0MzIpKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gTXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gQWlyOjpPb3BzOworICAgICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAg
ICAgICAgICAgICAgICBhcHBlbmQobXVsdGlwbHlBZGRPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQp
LCB0bXAobXVsdGlwbHlSaWdodCksIHRtcChyaWdodCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG5ld0Fpck9wY29kZSA9IHRyeU5ld0Fpck9wY29kZSgp
OworICAgICAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0obmV3QWlyT3Bjb2RlLCBBcmc6
OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZChuZXdBaXJPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQtPmNoaWxkKDApKSwg
dG1wKG11bHRpcGx5UmlnaHQtPmNoaWxkKDApKSwgdG1wKHJpZ2h0KSwgdG1wKG1fdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5TGVmdCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseVJpZ2h0KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTXVsdGlw
bHlBZGQobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZE11bHRpcGx5QWRkKHJpZ2h0LCBsZWZ0KSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0oYWlyT3Bjb2Rl
LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2xvY2tl
ZC5jb250YWlucyhtdWx0aXBseUxlZnQpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKG11bHRpcGx5Umln
aHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICBhcHBlbmQoYWlyT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0KSwgdG1wKG11bHRpcGx5
UmlnaHQpLCB0bXAocmlnaHQpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBj
b21taXRJbnRlcm5hbChsZWZ0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgLy8gYWRkLXdpdGgtc2hpZnQgUGF0dGVy
bjogbiArIChtIFNoaWZ0VHlwZSBhbW91bnQpCi0gICAgICAgICAgICBhdXRvIHRyeU9wY29kZSA9
IFsmXSAoSlNDOjpCMzo6T3Bjb2RlIG9wY29kZSkgLT4gQWlyOjpPcGNvZGUgewotICAgICAgICAg
ICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBTaGw6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZExlZnRTaGlmdDMyLCBB
ZGRMZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgICAgICBjYXNlIFNT
aHI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFJpZ2h0
U2hpZnQzMiwgQWRkUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOwotICAgICAgICAgICAg
ICAgIGNhc2UgWlNocjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5
cGUoQWRkVW5zaWduZWRSaWdodFNoaWZ0MzIsIEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0LCBtX3Zh
bHVlLT50eXBlKCkpOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBBaXI6Ok9vcHM7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHJldHVybiB0cnlBcHBlbmRNdWx0aXBseUFkZChsZWZ0LCByaWdodCkgfHwgdHJ5QXBwZW5kTXVs
dGlwbHlBZGQocmlnaHQsIGxlZnQpOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgYXV0
byB0cnlBcHBlbmRBZGRBbmRTaGlmdCA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkg
LT4gYm9vbCB7CisgICAgICAgICAgICBpZiAodHJ5TXVsdGlwbHlBZGQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIC8vIGFkZC13aXRoLXNoaWZ0IFBhdHRlcm46IG4g
KyAobSBTaGlmdFR5cGUgYW1vdW50KQorICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRBZGRXaXRo
U2hpZnQgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAgICAg
ICAgICAgICAgIGF1dG8gdHJ5T3Bjb2RlID0gWyZdIChCMzo6T3Bjb2RlIG9wY29kZSkgLT4gQWly
OjpPcGNvZGUgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAg
ICAgICAgICAgICAgICBjYXNlIFNobDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnlPcGNvZGVGb3JUeXBlKEFkZExlZnRTaGlmdDMyLCBBZGRMZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+
dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoQWRkUmlnaHRTaGlmdDMyLCBBZGRSaWdo
dFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgWlNo
cjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVu
c2lnbmVkUmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBBaXI6Ok9vcHM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9OworCiAgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2Rl
KHJpZ2h0LT5vcGNvZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNv
ZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2NDksNyArMjY1Niw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAg
ICBpZiAodHJ5QXBwZW5kQWRkQW5kU2hpZnQobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZEFkZEFu
ZFNoaWZ0KHJpZ2h0LCBsZWZ0KSkKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRBZGRXaXRoU2hp
ZnQobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZEFkZFdpdGhTaGlmdChyaWdodCwgbGVmdCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhcHBlbmRCaW5PcDxBZGQzMiwg
QWRkNjQsIEFkZERvdWJsZSwgQWRkRmxvYXQsIENvbW11dGF0aXZlPihsZWZ0LCByaWdodCk7CkBA
IC0yNjYwLDcyICsyNjY3LDcyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9
IG1fdmFsdWUtPmNoaWxkKDApOwogICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+
Y2hpbGQoMSk7CiAKLSAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG11bHRpcGx5U3ViT3Bjb2RlID0g
dHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseVN1YjMyLCBNdWx0aXBseVN1YjY0LCBtX3ZhbHVlLT50
eXBlKCkpOwotICAgICAgICAgICAgaWYgKG11bHRpcGx5U3ViT3Bjb2RlICE9IEFpcjo6T29wcwot
ICAgICAgICAgICAgICAgICYmIGlzVmFsaWRGb3JtKG11bHRpcGx5U3ViT3Bjb2RlLCBBcmc6OlRt
cCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKLSAgICAgICAgICAgICAgICBhdXRv
IHRyeU11bHRpcGx5ID0gWyZdIChWYWx1ZSogdikgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICh2LT5vcGNvZGUoKSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwodikpCisgICAgICAg
ICAgICBhdXRvIHRyeUFwcGVuZE11bHRpcGx5U3ViID0gWyZdICgpIC0+IGJvb2wgeworICAgICAg
ICAgICAgICAgIGlmIChpbW0ocmlnaHQpICYmICFtX3ZhbHVlVG9UbXBbcmlnaHRdKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBhdXRvIHRyeUIz
T3Bjb2RlID0gWyZdIChWYWx1ZSogdiwgQjM6Ok9wY29kZSBiM09wY29kZSkgLT4gYm9vbCB7IAor
ICAgICAgICAgICAgICAgICAgICBpZiAodi0+b3Bjb2RlKCkgIT0gYjNPcGNvZGUgfHwgIWNhbkJl
SW50ZXJuYWwodikpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkgfHwgbV9s
b2NrZWQuY29udGFpbnModi0+Y2hpbGQoMSkpKQorICAgICAgICAgICAgICAgICAgICBpZiAobV9s
b2NrZWQuY29udGFpbnModi0+Y2hpbGQoMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
ICAgICB9OwogCiAgICAgICAgICAgICAgICAgLy8gTVNVQjogZCA9IGEgLSBuICogbQotICAgICAg
ICAgICAgICAgIGlmICgoIWltbShyaWdodCkgfHwgbV92YWx1ZVRvVG1wW3JpZ2h0XSkgJiYgdHJ5
TXVsdGlwbHkocmlnaHQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseUxl
ZnQgPSByaWdodC0+Y2hpbGQoMCk7Ci0gICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBs
eVJpZ2h0ID0gcmlnaHQtPmNoaWxkKDEpOwotCisgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2Vk
LmNvbnRhaW5zKGxlZnQpIHx8IHJpZ2h0LT5vcGNvZGUoKSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJu
YWwocmlnaHQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgVmFsdWUqIG11bHRpcGx5TGVmdCA9IHJpZ2h0LT5jaGlsZCgwKTsKKyAgICAgICAgICAg
ICAgICBWYWx1ZSogbXVsdGlwbHlSaWdodCA9IHJpZ2h0LT5jaGlsZCgxKTsKKyAgICAgICAgICAg
ICAgICBBaXI6Ok9wY29kZSBhaXJPcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKE11bHRpcGx5U3Vi
MzIsIE11bHRpcGx5U3ViNjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgYXV0
byB0cnlOZXdBaXJPcGNvZGUgPSBbJl0gKCkgLT4gQWlyOjpPcGNvZGUgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoYWlyT3Bjb2RlICE9IE11bHRpcGx5U3ViNjQpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gQWlyOjpPb3BzOwogICAgICAgICAgICAgICAgICAgICAvLyBTTVNVQkw6
IGQgPSBhIC0gU0V4dDMyKG4pICogU0V4dDMyKG0pCi0gICAgICAgICAgICAgICAgICAgIGlmICht
dWx0aXBseVN1Yk9wY29kZSA9PSBNdWx0aXBseVN1YjY0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAmJiBpc1ZhbGlkRm9ybShNdWx0aXBseVN1YlNpZ25FeHRlbmQzMiwgQXJnOjpUbXAsIEFyZzo6
VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRv
IHRyeVNFeHQzMiA9IFsmXSAoVmFsdWUqIHYpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodi0+b3Bjb2RlKCkgIT0gU0V4dDMyIHx8ICFjYW5CZUludGVybmFsKHYpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxkKDApKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfTsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRNdWx0aXBseVN1YlNpZ25FeHRlbmQz
MiA9IFsmXSAoKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRy
eVNFeHQzMihtdWx0aXBseUxlZnQpIHx8ICF0cnlTRXh0MzIobXVsdGlwbHlSaWdodCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcHBlbmQoTXVsdGlwbHlTdWJTaWduRXh0ZW5kMzIsIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0bXAobXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSksIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAobXVsdGlwbHlSaWdodC0+Y2hpbGQoMCkp
LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKGxlZnQpLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG1fdmFsdWUpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlMZWZ0KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseVJpZ2h0KTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh0cnlBcHBlbmRNdWx0aXBseVN1YlNpZ25FeHRlbmQz
MigpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAodHJ5QjNPcGNvZGUobXVsdGlwbHlMZWZ0
LCBTRXh0MzIpICYmIHRyeUIzT3Bjb2RlKG11bHRpcGx5UmlnaHQsIFNFeHQzMikpIAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyOworICAgICAg
ICAgICAgICAgICAgICAvLyBVTVNVQkw6IGQgPSBhIC0gWkV4dDMyKG4pICogWkV4dDMyKG0pCisg
ICAgICAgICAgICAgICAgICAgIGlmICh0cnlCM09wY29kZShtdWx0aXBseUxlZnQsIFpFeHQzMikg
JiYgdHJ5QjNPcGNvZGUobXVsdGlwbHlSaWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gTXVsdGlwbHlTdWJaZXJvRXh0ZW5kMzI7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBBaXI6Ok9vcHM7CisgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAg
ICAgICAgICBhcHBlbmQobXVsdGlwbHlTdWJPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQpLCB0bXAo
bXVsdGlwbHlSaWdodCksIHRtcChsZWZ0KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICBBaXI6Ok9wY29kZSBuZXdBaXJPcGNvZGUgPSB0cnlOZXdBaXJPcGNvZGUoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNWYWxpZEZvcm0obmV3QWlyT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAs
IEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKG5ld0Fp
ck9wY29kZSwgdG1wKG11bHRpcGx5TGVmdC0+Y2hpbGQoMCkpLCB0bXAobXVsdGlwbHlSaWdodC0+
Y2hpbGQoMCkpLCB0bXAobGVmdCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAg
IGNvbW1pdEludGVybmFsKG11bHRpcGx5TGVmdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1p
dEludGVybmFsKG11bHRpcGx5UmlnaHQpOwogICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRl
cm5hbChyaWdodCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAvLyBzdWItd2l0aC1zaGlmdCBQYXR0ZXJuOiBuIC0gKG0gU2hpZnRUeXBlIGFt
b3VudCkKLSAgICAgICAgICAgIGF1dG8gdHJ5T3Bjb2RlID0gWyZdIChKU0M6OkIzOjpPcGNvZGUg
b3Bjb2RlKSAtPiBBaXI6Ok9wY29kZSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUp
IHsKLSAgICAgICAgICAgICAgICBjYXNlIFNobDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRyeU9wY29kZUZvclR5cGUoU3ViTGVmdFNoaWZ0MzIsIFN1YkxlZnRTaGlmdDY0LCBtX3ZhbHVl
LT50eXBlKCkpOwotICAgICAgICAgICAgICAgIGNhc2UgU1NocjoKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViUmlnaHRTaGlmdDMyLCBTdWJSaWdodFNoaWZ0
NjQsIG1fdmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBaU2hyOgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShTdWJVbnNpZ25lZFJpZ2h0U2hp
ZnQzMiwgU3ViVW5zaWduZWRSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7Ci0gICAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsK
LSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShhaXJP
cGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5j
b250YWlucyhtdWx0aXBseUxlZnQpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKG11bHRpcGx5UmlnaHQp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYXBw
ZW5kKGFpck9wY29kZSwgdG1wKG11bHRpcGx5TGVmdCksIHRtcChtdWx0aXBseVJpZ2h0KSwgdG1w
KGxlZnQpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKHJp
Z2h0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH07CiAKKyAg
ICAgICAgICAgIGlmICh0cnlBcHBlbmRNdWx0aXBseVN1YigpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgLy8gc3ViLXdpdGgtc2hpZnQgUGF0dGVybjogbiAtIChtIFNo
aWZ0VHlwZSBhbW91bnQpCiAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZFN1YkFuZFNoaWZ0ID0g
WyZdICgpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIGF1dG8gdHJ5T3Bjb2RlID0gWyZdIChC
Mzo6T3Bjb2RlIG9wY29kZSkgLT4gQWlyOjpPcGNvZGUgeworICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKG9wY29kZSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIFNobDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YkxlZnRTaGlmdDMyLCBT
dWJMZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBTU2hyOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUo
U3ViUmlnaHRTaGlmdDMyLCBTdWJSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgWlNocjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnlPcGNvZGVGb3JUeXBlKFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyLCBTdWJVbnNpZ25lZFJp
Z2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworCiAgICAgICAgICAgICAgICAgQWlyOjpP
cGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlKHJpZ2h0LT5vcGNvZGUoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpJbW0s
IEFyZzo6VG1wKSkgCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3NTAs
MjAgKzI3NTcsNTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTmVnOiB7
Ci0gICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseU5lZ09wY29kZSA9IHRyeU9wY29kZUZv
clR5cGUoTXVsdGlwbHlOZWczMiwgTXVsdGlwbHlOZWc2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAg
ICAgICAgICAgIGlmIChtdWx0aXBseU5lZ09wY29kZSAhPSBBaXI6Ok9vcHMKLSAgICAgICAgICAg
ICAgICAmJiBpc1ZhbGlkRm9ybShtdWx0aXBseU5lZ09wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1w
LCBBcmc6OlRtcCkKLSAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2Rl
KCkgPT0gTXVsCi0gICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGls
ZCgwKSkpIHsKLSAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlPcGVyYXRpb24gPSBtX3Zh
bHVlLT5jaGlsZCgwKTsKLSAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbXVs
dGlwbHlPcGVyYXRpb24tPmNoaWxkKDApOwotICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBs
eVJpZ2h0ID0gbXVsdGlwbHlPcGVyYXRpb24tPmNoaWxkKDEpOwotICAgICAgICAgICAgICAgIGlm
ICghbV9sb2NrZWQuY29udGFpbnMobXVsdGlwbHlMZWZ0KSAmJiAhbV9sb2NrZWQuY29udGFpbnMo
bXVsdGlwbHlSaWdodCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kKG11bHRpcGx5TmVn
T3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0KSwgdG1wKG11bHRpcGx5UmlnaHQpLCB0bXAobV92YWx1
ZSkpOwotICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseU9wZXJhdGlv
bik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBw
ZW5kTXVsdGlwbHlOZWcgPSBbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgYXV0byB0
cnlCM09wY29kZSA9IFsmXSAoVmFsdWUqIHYsIEIzOjpPcGNvZGUgYjNPcGNvZGUpIC0+IGJvb2wg
eyAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IGIzT3Bjb2RlIHx8ICFj
YW5CZUludGVybmFsKHYpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnModi0+Y2hpbGQoMCkpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgLy8g
TU5FRyA6IGQgPSAtKG4gKiBtKQorICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgw
KS0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIFZhbHVl
KiBtdWx0aXBseUxlZnQgPSBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCk7CisgICAgICAgICAg
ICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSk7
CisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlw
ZShNdWx0aXBseU5lZzMyLCBNdWx0aXBseU5lZzY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAg
ICAgICAgICAgIGF1dG8gdHJ5TmV3QWlyT3Bjb2RlID0gWyZdICgpIC0+IEFpcjo6T3Bjb2RlIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGFpck9wY29kZSAhPSBNdWx0aXBseU5lZzY0KQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gU01ORUcgOiBkID0gLShTRXh0MzIobikgKiBTRXh0MzIobSkpCisgICAgICAgICAgICAg
ICAgICAgIGlmICh0cnlCM09wY29kZShtdWx0aXBseUxlZnQsIFNFeHQzMikgJiYgdHJ5QjNPcGNv
ZGUobXVsdGlwbHlSaWdodCwgU0V4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gTXVsdGlwbHlOZWdTaWduRXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIC8vIFpNTkVH
OiBkID0gLShaRXh0MzIobikgKiBaRXh0MzIobSkpCisgICAgICAgICAgICAgICAgICAgIGlmICh0
cnlCM09wY29kZShtdWx0aXBseUxlZnQsIFpFeHQzMikgJiYgdHJ5QjNPcGNvZGUobXVsdGlwbHlS
aWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlO
ZWdaZXJvRXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7Cisg
ICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG5ld0Fpck9w
Y29kZSA9IHRyeU5ld0Fpck9wY29kZSgpOworICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9y
bShuZXdBaXJPcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7CisgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZChuZXdBaXJPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQtPmNoaWxk
KDApKSwgdG1wKG11bHRpcGx5UmlnaHQtPmNoaWxkKDApKSwgdG1wKG1fdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlMZWZ0KTsKKyAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShhaXJPcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRt
cCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKG11bHRpcGx5TGVmdCkgfHwgbV9sb2NrZWQu
Y29udGFpbnMobXVsdGlwbHlSaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoYWlyT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0KSwg
dG1wKG11bHRpcGx5UmlnaHQpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgIGNvbW1p
dEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRNdWx0aXBseU5l
ZygpKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYXBwZW5kVW5PcDxO
ZWczMiwgTmVnNjQsIE5lZ2F0ZURvdWJsZSwgTmVnYXRlRmxvYXQ+KG1fdmFsdWUtPmNoaWxkKDAp
KTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IDA1ZGMzYTlmZWM0Njk2ODQwMzFkODhkNzNlYzM3Y2Mw
NThiZTFmNTcuLjBjNGFjMDI4NzE4NzBmNWUxNDE5Y2Y0YTRkMjM4YTZhZjYwYjU0YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAtMjU0
LDYgKzI1NCw5IEBAIGFybTY0OiBNdWx0aXBseUFkZDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQs
IEQ6Rzo2NAogYXJtNjQ6IE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyIFU6RzozMiwgVTpHOjMyLCBV
Okc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAsIFRtcAogCithcm02NDogTXVsdGlwbHlB
ZGRaZXJvRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBU
bXAsIFRtcCwgVG1wCisKIGFybTY0OiBNdWx0aXBseVN1YjMyIFU6RzozMiwgVTpHOjMyLCBVOkc6
MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcCwgVG1wLCBUbXAKIApAQCAtMjYzLDEzICsyNjYsMjIg
QEAgYXJtNjQ6IE11bHRpcGx5U3ViNjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiBh
cm02NDogTXVsdGlwbHlTdWJTaWduRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIsIFU6Rzo2NCwgRDpH
OjY0CiAgICAgVG1wLCBUbXAsIFRtcCwgVG1wCiAKK2FybTY0OiBNdWx0aXBseVN1Ylplcm9FeHRl
bmQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgVG1wLCBU
bXAKKwogYXJtNjQ6IE11bHRpcGx5TmVnMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBU
bXAsIFRtcCwgVG1wCiAKIGFybTY0OiBNdWx0aXBseU5lZzY0IFU6Rzo2NCwgVTpHOjY0LCBaRDpH
OjY0CiAgICAgVG1wLCBUbXAsIFRtcAogCi1hcm02NDogTXVsdGlwbHlTaWduRXh0ZW5kMzIgVTpH
OjMyLCBVOkc6MzIsIFpEOkc6NjQKK2FybTY0OiBNdWx0aXBseU5lZ1NpZ25FeHRlbmQzMiBVOkc6
NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIFRtcAorCithcm02NDogTXVsdGlwbHlO
ZWdaZXJvRXh0ZW5kMzIgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBUbXAK
KworYXJtNjQ6IE11bHRpcGx5U2lnbkV4dGVuZDMyIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKICAg
ICBUbXAsIFRtcCwgVG1wCiAKIGFybTY0OiBEaXYzMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDljN2QyOTk4ZTJhODkwZjVlZGU3MGViNmI5
ZTBmOTkxOTQ3ZmExMWYuLmY4YmU3NzkzY2VhZDVkMjNkZDk2MGU1MTQwZmFmODcwNGNlYWY0YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTkxMywxMyArOTEzLDE4IEBAIHZvaWQg
dGVzdE11bEFkZEFyZ3NMZWZ0MzIoKTsKIHZvaWQgdGVzdE11bEFkZEFyZ3NSaWdodDMyKCk7CiB2
b2lkIHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzTGVmdCgpOwogdm9pZCB0ZXN0TXVsQWRkU2ln
bkV4dGVuZDMyQXJnc1JpZ2h0KCk7Cit2b2lkIHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzTGVm
dCgpOwordm9pZCB0ZXN0TXVsQWRkWmVyb0V4dGVuZDMyQXJnc1JpZ2h0KCk7CiB2b2lkIHRlc3RN
dWxTdWJBcmdzTGVmdCgpOwogdm9pZCB0ZXN0TXVsU3ViQXJnc1JpZ2h0KCk7CiB2b2lkIHRlc3RN
dWxTdWJBcmdzTGVmdDMyKCk7CiB2b2lkIHRlc3RNdWxTdWJBcmdzUmlnaHQzMigpOwotdm9pZCB0
ZXN0TXVsU3ViU2lnbkV4dGVuZDMyQXJncygpOwordm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMy
KCk7Cit2b2lkIHRlc3RNdWxTdWJaZXJvRXh0ZW5kMzIoKTsKIHZvaWQgdGVzdE11bE5lZ0FyZ3Mo
KTsKIHZvaWQgdGVzdE11bE5lZ0FyZ3MzMigpOwordm9pZCB0ZXN0TXVsTmVnU2lnbkV4dGVuZDMy
KCk7Cit2b2lkIHRlc3RNdWxOZWdaZXJvRXh0ZW5kMzIoKTsKIHZvaWQgdGVzdE11bEFyZ0RvdWJs
ZShkb3VibGUpOwogdm9pZCB0ZXN0TXVsQXJnc0RvdWJsZShkb3VibGUsIGRvdWJsZSk7CiB2b2lk
IHRlc3RDYWxsU2ltcGxlRG91YmxlKGRvdWJsZSwgZG91YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzXzIuY3BwCmluZGV4IDhmNjBmY2M0YTRhMmVmMzU0MmU2NzQxYzI1MGFlOWY5OGRi
NmRhYjYuLjE3MWI4Mzc4MTMyNTdmMWQzZWMwNjJlOWY2ODc5MWViN2EyZDIwYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcApAQCAtODc0LDE5ICs4NzQsNiBAQCB2b2lkIHRl
c3RNdWxBcmdOZWdBcmcoaW50IGEsIGludCBiKQogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
Pihwcm9jLCBhLCBiKSA9PSBhICogKC1iKSk7CiB9CiAKLXZvaWQgdGVzdE11bE5lZ0FyZ0FyZyhp
bnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LSAgICBWYWx1ZSogYXJnQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBWYWx1ZSogbmVnQSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgYXJnQSk7Ci0gICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwg
bmVnQSwgYXJnQik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEs
IGIpID09ICgtYSkgKiBiKTsKLX0KLQogdm9pZCB0ZXN0TXVsQXJnSW1tKGludDY0X3QgYSwgaW50
NjRfdCBiKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTAxNCw3ICsxMDAxLDcgQEAgdm9p
ZCB0ZXN0TXVsQWRkQXJnc0xlZnQoKQogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykgewog
ICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgICAgIGZvciAoYXV0
byBjIDogdGVzdFZhbHVlcykKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4o
KmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKiBiLnZhbHVlICsg
Yy52YWx1ZSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KCpjb2Rl
LCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSwgYS52YWx1ZSAqIGIudmFsdWUgKyBjLnZhbHVl
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEwMzksMTQgKzEwMjYsMTQgQEAgdm9pZCB0ZXN0
TXVsQWRkQXJnc1JpZ2h0KCkKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKICAgICAg
ICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8gYyA6
IHRlc3RWYWx1ZXMpCi0gICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+KCpjb2Rl
LCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlICsgYi52YWx1ZSAqIGMudmFs
dWUpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52
YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSksIGEudmFsdWUgKyBiLnZhbHVlICogYy52YWx1ZSk7CiAg
ICAgICAgIH0KICAgICB9CiB9CiAKIHZvaWQgdGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0
KCkKIHsKLSAgICAvLyBkID0gU0V4dDMyKG4pICogIFNFeHQzMihtKSArIGEKKyAgICAvLyBkID0g
U0V4dDMyKG4pICogU0V4dDMyKG0pICsgYQogICAgIFByb2NlZHVyZSBwcm9jOwogICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAKQEAgLTExMTgsNiArMTEwNSw4NCBAQCB2
b2lkIHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzUmlnaHQoKQogICAgIH0KIH0KIAordm9pZCB0
ZXN0TXVsQWRkWmVyb0V4dGVuZDMyQXJnc0xlZnQoKQoreworICAgIC8vIGQgPSBaRXh0MzIobikg
KiBaRXh0MzIobSkgKyBhCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIFZhbHVlKiBtVmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAgIFZhbHVlKiBhVmFs
dWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMik7CisKKyAgICBWYWx1ZSogbXVsVmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIG5WYWx1ZSwgbVZhbHVlKTsKKyAgICBW
YWx1ZSogYWRkVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2lu
KCksIG11bFZhbHVlLCBhVmFsdWUpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRWYWx1ZSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgInVtYWRkbCIpOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJh
bmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICAgICAg
dWludDMyX3QgdW4gPSBuLnZhbHVlOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbS52
YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PigqY29k
ZSwgdW4sIHVtLCBhLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IHJocyA9IHN0YXRp
Y19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKSArIGEudmFsdWU7
CisgICAgICAgICAgICAgICAgQ0hFQ0sobGhzID09IHJocyk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE11bEFkZFplcm9FeHRlbmQzMkFyZ3NSaWdodCgp
Cit7CisgICAgLy8gZCA9IGEgKyBaRXh0MzIobikgKiBaRXh0MzIobSkKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFs
dWUqIGFWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmln
aW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKyAgICBWYWx1ZSogbVZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpKTsKKworICAgIFZh
bHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4o
KSwgblZhbHVlLCBtVmFsdWUpOworICAgIFZhbHVlKiBhZGRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYVZhbHVlLCBtdWxWYWx1ZSk7CisgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZFZhbHVl
KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0
KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAidW1hZGRsIik7CisKKyAg
ICBmb3IgKGF1dG8gYSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbiA6
IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJh
bmRzKCkpIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCB1biA9IG4udmFsdWU7CisgICAgICAg
ICAgICAgICAgdWludDMyX3QgdW0gPSBtLnZhbHVlOworICAgICAgICAgICAgICAgIGludDY0X3Qg
bGhzID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCB1biwgdW0pOworICAgICAgICAg
ICAgICAgIGludDY0X3QgcmhzID0gYS52YWx1ZSArIHN0YXRpY19jYXN0PGludDY0X3Q+KHVuKSAq
IHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKTsKKyAgICAgICAgICAgICAgICBDSEVDSyhsaHMgPT0g
cmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCB0ZXN0TXVs
QWRkQXJnc0xlZnQzMigpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMTk0LDcgKzEyNTks
NyBAQCB2b2lkIHRlc3RNdWxTdWJBcmdzTGVmdCgpCiAgICAgZm9yIChhdXRvIGEgOiB0ZXN0VmFs
dWVzKSB7CiAgICAgICAgIGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewogICAgICAgICAgICAg
Zm9yIChhdXRvIGMgOiB0ZXN0VmFsdWVzKQotICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxp
bnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAqIGIu
dmFsdWUgLSBjLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRf
dD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpLCBhLnZhbHVlICogYi52YWx1ZSAt
IGMudmFsdWUpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTIxOSw3ICsxMjg0LDcgQEAgdm9p
ZCB0ZXN0TXVsU3ViQXJnc1JpZ2h0KCkKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsK
ICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAgICAgICBmb3IgKGF1
dG8gYyA6IHRlc3RWYWx1ZXMpCi0gICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+
KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlIC0gYi52YWx1ZSAq
IGMudmFsdWUpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90PigqY29k
ZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSksIGEudmFsdWUgLSBiLnZhbHVlICogYy52YWx1
ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMjc1LDEyICsxMzQwLDEyIEBAIHZvaWQgdGVz
dE11bFN1YkFyZ3NSaWdodDMyKCkKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKICAg
ICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8g
YyA6IHRlc3RWYWx1ZXMpCi0gICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpj
b2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlIC0gYi52YWx1ZSAqIGMu
dmFsdWUpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwg
YS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSksIGEudmFsdWUgLSBiLnZhbHVlICogYy52YWx1ZSk7
CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgdGVzdE11bFN1YlNpZ25FeHRlbmQzMkFyZ3Mo
KQordm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyKCkKIHsKICAgICAvLyBkID0gYSAtIFNFeHQz
MihuKSAqIFNFeHQzMihtKQogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTMxNyw2ICsxMzgyLDYy
IEBAIHZvaWQgdGVzdE11bFN1YlNpZ25FeHRlbmQzMkFyZ3MoKQogICAgIH0KIH0KIAordm9pZCB0
ZXN0TXVsU3ViWmVyb0V4dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gYSAtIFpFeHQzMihuKSAqIFpF
eHQzMihtKQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
IFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBa
RXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
KSk7CisgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
IHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMikpKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOworICAgIFZhbHVlKiBzdWJW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgYVZhbHVl
LCBtdWxWYWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHN1YlZhbHVlKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpj
b2RlLCAidW1zdWJsIik7CisKKyAgICBmb3IgKGF1dG8gYSA6IGludDY0T3BlcmFuZHMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9y
IChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCB1
biA9IG4udmFsdWU7CisgICAgICAgICAgICAgICAgdWludDMyX3QgdW0gPSBtLnZhbHVlOworICAg
ICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhLnZhbHVl
LCB1biwgdW0pOworICAgICAgICAgICAgICAgIGludDY0X3QgcmhzID0gYS52YWx1ZSAtIHN0YXRp
Y19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKTsKKyAgICAgICAg
ICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCB0ZXN0TXVsTmVnQXJnQXJnKGludDMyX3QgYSwgaW50MzJfdCBiKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisKKyAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJn
QiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1ZSogbmVnQSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgYXJnQSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgbmVnQSwgYXJnQik7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQp
OworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQo
KSAmJiBKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPiAxKQorICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1uZWciKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50
MzJfdD4oKmNvZGUsIGEsIGIpLCAoLWEpICogYik7Cit9CisKIHZvaWQgdGVzdE11bE5lZ0FyZ3Mo
KQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTMzMCwxMSArMTQ1MSwxMyBAQCB2b2lkIHRl
c3RNdWxOZWdBcmdzKCkKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgYWRkZWQpOwogCiAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgaWYgKGlzQVJNNjQoKSAmJiBKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVs
KCkgPiAxKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1uZWciKTsKIAog
ICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDY0T3BlcmFuZHMoKTsKICAgICBmb3IgKGF1dG8gYSA6
IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAg
ICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUpID09
IC0oYS52YWx1ZSAqIGIudmFsdWUpKTsKKyAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2
NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSksIC0oYS52YWx1ZSAqIGIudmFsdWUpKTsKICAg
ICAgICAgfQogICAgIH0KIH0KQEAgLTEzNTQsMTEgKzE0NzcsODIgQEAgdm9pZCB0ZXN0TXVsTmVn
QXJnczMyKCkKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgYWRkZWQpOwogCiAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Cisg
ICAgaWYgKGlzQVJNNjQoKSAmJiBKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPiAx
KQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1uZWciKTsKIAogICAgIGF1
dG8gdGVzdFZhbHVlcyA9IGludDMyT3BlcmFuZHMoKTsKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RW
YWx1ZXMpIHsKLSAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAg
ICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUpID09IC0oYS52
YWx1ZSAqIGIudmFsdWUpKTsKKyAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKQorICAg
ICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVl
KSwgLShhLnZhbHVlICogYi52YWx1ZSkpOworICAgIH0KK30KKwordm9pZCB0ZXN0TXVsTmVnU2ln
bkV4dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gLSAoU0V4dDMyKG4pICogU0V4dDMyKG0pKQorICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisKKyAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
cHJvYywgU0V4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSkpOworICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICBwcm9jLCBTRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKSk7CisKKyAgICBWYWx1ZSogbXVsVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIG5WYWx1ZSwgbVZhbHVlKTsKKyAgICBWYWx1
ZSogbmVnVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCks
IG11bFZhbHVlKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgbmVnVmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNv
ZGUsICJzbW5lZ2wiKTsKKworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBpbnQ2
NF90IGxocyA9IGludm9rZTxpbnQ2NF90PigqY29kZSwgbi52YWx1ZSwgbS52YWx1ZSk7CisgICAg
ICAgICAgICBpbnQ2NF90IHJocyA9IC0oc3RhdGljX2Nhc3Q8aW50NjRfdD4obi52YWx1ZSkgKiBz
dGF0aWNfY2FzdDxpbnQ2NF90PihtLnZhbHVlKSk7CisgICAgICAgICAgICBDSEVDSyhsaHMgPT0g
cmhzKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsTmVnWmVyb0V4dGVuZDMy
KCkKK3sKKyAgICAvLyBkID0gLSAoWkV4dDMyKG4pICogWkV4dDMyKG0pKQorICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBW
YWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgWkV4
dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkp
OworICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpKSk7CisKKyAgICBWYWx1ZSogbXVsVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIE11bCwgT3JpZ2luKCksIG5WYWx1ZSwgbVZhbHVlKTsKKyAgICBWYWx1ZSogbmVnVmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG11bFZhbHVl
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgbmVnVmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAg
aWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJ1bW5l
Z2wiKTsKKworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZv
ciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICB1aW50MzJfdCB1biA9
IG4udmFsdWU7CisgICAgICAgICAgICB1aW50MzJfdCB1bSA9IG0udmFsdWU7CisgICAgICAgICAg
ICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PigqY29kZSwgdW4sIHVtKTsKKyAgICAgICAg
ICAgIGludDY0X3QgcmhzID0gLShzdGF0aWNfY2FzdDxpbnQ2NF90Pih1bikgKiBzdGF0aWNfY2Fz
dDxpbnQ2NF90Pih1bSkpOworICAgICAgICAgICAgQ0hFQ0sobGhzID09IHJocyk7CiAgICAgICAg
IH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
XzMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18zLmNwcAppbmRleCA3MmIw
OGQxNmFhNzI5Y2RiODM0NmZkMmZhYWZjYWQ5ZTAwMzlkNmViLi5jMTdhYmM3MzYzNDBkNWFiYjM2
NGM0M2Y1Yzg2MDcxMDg2NmRhNDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzXzMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMy5j
cHAKQEAgLTMzNzAsMTMgKzMzNzAsMTggQEAgdm9pZCBhZGRBcmdUZXN0cyhjb25zdCBjaGFyKiBm
aWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpCiAgICAgUlVO
KHRlc3RNdWxBZGRBcmdzUmlnaHQzMigpKTsKICAgICBSVU4odGVzdE11bEFkZFNpZ25FeHRlbmQz
MkFyZ3NMZWZ0KCkpOwogICAgIFJVTih0ZXN0TXVsQWRkU2lnbkV4dGVuZDMyQXJnc1JpZ2h0KCkp
OworICAgIFJVTih0ZXN0TXVsQWRkWmVyb0V4dGVuZDMyQXJnc0xlZnQoKSk7CisgICAgUlVOKHRl
c3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzUmlnaHQoKSk7CiAgICAgUlVOKHRlc3RNdWxTdWJBcmdz
TGVmdCgpKTsKICAgICBSVU4odGVzdE11bFN1YkFyZ3NSaWdodCgpKTsKICAgICBSVU4odGVzdE11
bFN1YkFyZ3NMZWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RNdWxTdWJBcmdzUmlnaHQzMigpKTsKLSAg
ICBSVU4odGVzdE11bFN1YlNpZ25FeHRlbmQzMkFyZ3MoKSk7CisgICAgUlVOKHRlc3RNdWxTdWJT
aWduRXh0ZW5kMzIoKSk7CisgICAgUlVOKHRlc3RNdWxTdWJaZXJvRXh0ZW5kMzIoKSk7CiAgICAg
UlVOKHRlc3RNdWxOZWdBcmdzKCkpOwogICAgIFJVTih0ZXN0TXVsTmVnQXJnczMyKCkpOworICAg
IFJVTih0ZXN0TXVsTmVnU2lnbkV4dGVuZDMyKCkpOworICAgIFJVTih0ZXN0TXVsTmVnWmVyb0V4
dGVuZDMyKCkpOwogICAgIAogICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ05lZ0FyZywgaW50NjRP
cGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpCiAgICAgUlVOX0JJTkFSWSh0ZXN0TXVsTmVnQXJn
QXJnLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433285</attachid>
            <date>2021-07-10 23:45:20 -0700</date>
            <delta_ts>2021-07-12 12:47:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227857-20210711014519.patch</filename>
            <type>text/plain</type>
            <size>46422</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Zjk2NzYxZTk2ZTViNTEyOWEzMTg1ZjQ0NjkxYjY2Y2NiYjE4Mjc0Li4yOTdjMjI5ZmQ1M2Y1MmNm
ZDI1YmY2NTAyY2JmMGI5NjUzNmY2ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzUgQEAKKzIwMjEtMDctMTAgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBTTU5FR0wsIFVNTkVHTCwgVU1BRERMLCBhbmQgVU1TVUJMIGZv
ciBBUk02NCBhbmQgc2VsZWN0IHRoaXMgaW5zdHJ1Y3Rpb24gaW4gQWlyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcHJldmlvdXMgcGF0Y2hlcyBo
YXZlIGFscmVhZHkgYWRkZWQgTU5FRywgTUFERCwgTVNVQiwgU01BRERMLCBhbmQgVU1BRERMLiAK
KyAgICAgICAgVGhpcyBwYXRjaCBjb21wbGV0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgc2lnbmVkIG9y
IHVuc2lnbmVkIHZhcmlhbnRzIChTTU5FR0wsIAorICAgICAgICBVTU5FR0wsIFVNQURETCwgYW5k
IFVNU1VCTCkgb2YgdGhlbS4gSW4gYWRkaXRpb24sIHRoaXMgcGF0Y2ggcmVmYWN0b3JzIAorICAg
ICAgICB0aGUgaW1wbGVtZW50YXRpb24gYW5kIHRoZSBhc3NvY2lhdGl2ZSB0ZXN0IGNhc2VzIG9m
IE1BREQsIE1TVUIsIGFuZCBNTkVHIAorICAgICAgICB0byBiZSBtb3JlIHJlYWRhYmxlIGFuZCBt
YWludGFpbmFibGUgdy5yLnQgdGhlaXIgdmFyaWFudHMuCisKKyAgICAgICAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMjIyBTTU5FR0wvVU1ORUdMIFhkIFduIFdtICMj
IworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgU2lnbmVk
L1Vuc2lnbmVkIE11bHRpcGx5LU5lZ2F0ZSBMb25nIG11bHRpcGxpZXMgdHdvIDMyLWJpdCByZWdp
c3RlciB2YWx1ZXMsIAorICAgICAgICBuZWdhdGVzIHRoZSBwcm9kdWN0LCBhbmQgd3JpdGVzIHRo
ZSByZXN1bHQgdG8gdGhlIDY0LWJpdCBkZXN0aW5hdGlvbiByZWdpc3Rlci4gCisgICAgICAgIFRo
ZSBlcXVpdmFsZW50IHBhdHRlcm5zIGFyZSAKKworICAgICAgICBkID0gLShTRXh0MzIobikgKiBT
RXh0MzIobSkpIGFuZCBkID0gLShTRXh0MzIobikgKiBTRXh0MzIobSkpIHJlc3BlY3RpdmVseS4K
KworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50IEAwID0gUy9VRXh0MzIoVHJ1bmMo
QXJndW1lbnRSZWcoJXgwKSkpCisgICAgICAgIEludCBAMSA9IFMvVUV4dDMyKFRydW5jKEFyZ3Vt
ZW50UmVnKCV4MSkpKQorICAgICAgICBJbnQgQDIgPSBNdWwoQDAsIEAxKQorICAgICAgICBJbnQg
QDMgPSBOZWcoQDIpCisgICAgICAgIFZvaWRANCA9IFJldHVybihAMywgVGVybWluYWwpCisKKyAg
ICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMyICAgICAgJXgwLCAleDAs
ICAgICAgQDAKKyAgICAgICAgTW92ZTMyICAgICAgJXgxLCAleDEsICAgICAgQDEKKyAgICAgICAg
TXVsdGlwbHlOZWcgJXgwLCAleDEsICV4MCwgQDMKKyAgICAgICAgUmV0ICAgICAgICAgJXgwLCAg
ICAgICAgICAgQDQKKworICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBNdWx0
aXBseU5lZ1NpZ25FeHRlbmQgICV4MCwgJXgxLCAleDAsIEAzCisgICAgICAgIFJldCAgICAgICAg
ICAgICAgICAgICAgJXgwLCAgICAgICAgICAgQDQKKworICAgICAgICAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorICAgICAgICAjIyMgVU1BRERMIFhkIFduIFdtIFhhICMjIworICAgICAgICAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBVbnNpZ25lZCBNdWx0aXBseS1BZGQg
TG9uZyBtdWx0aXBsaWVzIHR3byAzMi1iaXQgcmVnaXN0ZXIgdmFsdWVzLCBhZGRzIGEgNjQtYml0
IAorICAgICAgICByZWdpc3RlciB2YWx1ZSwgYW5kIHdyaXRlcyB0aGUgcmVzdWx0IHRvIHRoZSA2
NC1iaXQgZGVzdGluYXRpb24gcmVnaXN0ZXIuIFRoZSAKKyAgICAgICAgZXF1aXZhbGVudCBwYXR0
ZXJucyBhcmUgCisKKyAgICAgICAgZCA9IFpFeHQzMihuKSAqIFpFeHQzMihtKSArIGEKKworICAg
ICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50IEAwID0gVUV4dDMyKFRydW5jKEFyZ3VtZW50
UmVnKCV4MCkpKQorICAgICAgICBJbnQgQDEgPSBVRXh0MzIoVHJ1bmMoQXJndW1lbnRSZWcoJXgx
KSkpCisgICAgICAgIEludCBAMiA9IEFyZ3VtZW50UmVnKCV4MikKKyAgICAgICAgSW50IEAzID0g
TXVsKEAwLCBAMSkKKyAgICAgICAgSW50IEA0ID0gQWRkKEAzLCBAMikKKyAgICAgICAgVm9pZEA1
ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkKKworICAgICAgICAvLyBPbGQgb3B0aW1pemVkIEFJUgor
ICAgICAgICBNb3ZlMzIgICAgICAgICV4MCwgJXgwLCAgICAgICAgICAgQDEKKyAgICAgICAgTW92
ZTMyICAgICAgICAleDEsICV4MSwgICAgICAgICAgIEAyCisgICAgICAgIE11bHRpcGx5QWRkICAg
JXgwLCAleDEsICV4MiwgJXgwLCBANAorICAgICAgICBSZXQ2NCAgICAgICAgICV4MCwgICAgICAg
ICAgICAgICAgQDUKKworICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBNdWx0
aXBseUFkZFplcm9FeHRlbmQgJXgwLCAleDEsICV4MiwgJXgwLCBAOAorICAgICAgICBSZXQgICAg
ICAgICAgICAgICAgICAgJXgwLCAgICAgICAgICAgICAgICBAOQorCisgICAgICAgIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMjIyBVTVNVQkwgWGQgV24gV20gWGEgIyMjCisg
ICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIFVuc2lnbmVkIE11bHRp
cGx5LVN1YnRyYWN0IExvbmcgbXVsdGlwbGllcyB0d28gMzItYml0IHJlZ2lzdGVyIHZhbHVlcywg
c3VidHJhY3RzIAorICAgICAgICB0aGUgcHJvZHVjdCBmcm9tIGEgNjQtYml0IHJlZ2lzdGVyIHZh
bHVlLCBhbmQgd3JpdGVzIHRoZSByZXN1bHQgdG8gdGhlIDY0LWJpdCAKKyAgICAgICAgZGVzdGlu
YXRpb24gcmVnaXN0ZXIuIFRoZSBlcXVpdmFsZW50IHBhdHRlcm5zIGFyZSAKKworICAgICAgICBk
ID0gYSAtIFpFeHQzMihuKSAqIFpFeHQzMihtKQorCisgICAgICAgIEdpdmVuIEIzIElSOgorICAg
ICAgICBJbnQgQDAgPSBVRXh0MzIoVHJ1bmMoQXJndW1lbnRSZWcoJXgwKSkpCisgICAgICAgIElu
dCBAMSA9IFVFeHQzMihUcnVuYyhBcmd1bWVudFJlZygleDEpKSkKKyAgICAgICAgSW50IEAyID0g
QXJndW1lbnRSZWcoJXgyKQorICAgICAgICBJbnQgQDMgPSBNdWwoQDAsIEAxKQorICAgICAgICBJ
bnQgQDQgPSBTdWIoQDIsIEAzKQorICAgICAgICBWb2lkQDUgPSBSZXR1cm4oQDQsIFRlcm1pbmFs
KQorCisgICAgICAgIC8vIE9sZCBvcHRpbWl6ZWQgQUlSCisgICAgICAgIE1vdmUzMiAgICAgICAg
JXgwLCAleDAsICAgICAgICAgICBAMQorICAgICAgICBNb3ZlMzIgICAgICAgICV4MSwgJXgxLCAg
ICAgICAgICAgQDIKKyAgICAgICAgTXVsdGlwbHlTdWIgICAleDAsICV4MSwgJXgyLCAleDAsIEA0
CisgICAgICAgIFJldDY0ICAgICAgICAgJXgwLCAgICAgICAgICAgICAgICBANQorCisgICAgICAg
IC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAgIE11bHRpcGx5U3ViWmVyb0V4dGVuZCAleDAs
ICV4MSwgJXgyLCAleDAsIEA4CisgICAgICAgIFJldCAgICAgICAgICAgICAgICAgICAleDAsICAg
ICAgICAgICAgICAgIEA5CisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0aXBseU5lZzMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlBZGRaZXJvRXh0ZW5k
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0aXBseVN1Ylplcm9F
eHRlbmQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om11bHRpcGx5TmVn
NjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0aXBseU5lZ1NpZ25F
eHRlbmQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om11bHRpcGx5TmVn
WmVyb0V4dGVuZDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAg
ICAoSlNDOjp0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIpOgorICAgICAgICAoSlNDOjp0ZXN0
TXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIpOgorICAgICAgICAoSlNDOjp0ZXN0TXVsdGlwbHlTdWJT
aWduRXh0ZW5kMzIpOgorICAgICAgICAoSlNDOjp0ZXN0TXVsdGlwbHlTdWJaZXJvRXh0ZW5kMzIp
OgorICAgICAgICAoSlNDOjp0ZXN0TXVsdGlwbHlOZWdTaWduRXh0ZW5kMzIpOgorICAgICAgICAo
SlNDOjp0ZXN0TXVsdGlwbHlOZWdaZXJvRXh0ZW5kMzIpOgorICAgICAgICAoSlNDOjp0ZXN0TXVs
dGlwbHlBZGRTaWduRXh0ZW5kMzJMZWZ0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6dGVzdE11
bHRpcGx5QWRkU2lnbkV4dGVuZDMyUmlnaHQpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTG93
ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzOgorICAgICAg
ICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18yLmNwcDoKKyAgICAgICAgKHRl
c3RNdWxBZGRBcmdzTGVmdCk6CisgICAgICAgICh0ZXN0TXVsQWRkQXJnc1JpZ2h0KToKKyAgICAg
ICAgKHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzTGVmdCk6CisgICAgICAgICh0ZXN0TXVsQWRk
WmVyb0V4dGVuZDMyQXJnc0xlZnQpOgorICAgICAgICAodGVzdE11bEFkZFplcm9FeHRlbmQzMkFy
Z3NSaWdodCk6CisgICAgICAgICh0ZXN0TXVsU3ViQXJnc0xlZnQpOgorICAgICAgICAodGVzdE11
bFN1YkFyZ3NSaWdodCk6CisgICAgICAgICh0ZXN0TXVsU3ViQXJnc1JpZ2h0MzIpOgorICAgICAg
ICAodGVzdE11bFN1YlNpZ25FeHRlbmQzMik6CisgICAgICAgICh0ZXN0TXVsU3ViWmVyb0V4dGVu
ZDMyKToKKyAgICAgICAgKHRlc3RNdWxOZWdBcmdBcmcpOgorICAgICAgICAodGVzdE11bE5lZ0Fy
Z3MpOgorICAgICAgICAodGVzdE11bE5lZ0FyZ3MzMik6CisgICAgICAgICh0ZXN0TXVsTmVnU2ln
bkV4dGVuZDMyKToKKyAgICAgICAgKHRlc3RNdWxOZWdaZXJvRXh0ZW5kMzIpOgorICAgICAgICAo
dGVzdE11bFN1YlNpZ25FeHRlbmQzMkFyZ3MpOiBEZWxldGVkLgorICAgICAgICAqIGIzL3Rlc3Ri
M18zLmNwcDoKKyAgICAgICAgKGFkZEFyZ1Rlc3RzKToKKwogMjAyMS0wNy0xMCAgU2FhbSBCYXJh
dGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBDb250aW51ZSB0byBjb25zdWx0IElu
bGluZUFjY2VzcydzIFN0cnVjdHVyZSBldmVuIGFmdGVyIHN3aXRjaGluZyB0byBhIHN0dWIgSUMK
QEAgLTc2NSw5ICs4OTcsOSBAQAogICAgICAgICAgICAgMS4gSW50cm9kdWNlIGEgc3RyZW5ndGgg
cmVkdWN0aW9uIHJ1bGUgdG8gemVybyBleHRlbmQgYml0ZmllbGQuCiAgICAgICAgICAgICAyLiBB
ZGQgRXh0cmFjdCBSZWdpc3RlciAoRVhUUikgdG8gQWlyIG9wY29kZSB0byBzZXJ2ZSBpbnN0cnVj
dGlvbiBzZWxlY3Rvci4KIAotICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAgICAgICAgICMjIyBQYXJ0IEEgemVybyBleHRlbmQgYml0ZmllbGQgIyMj
Ci0gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg
ICAgICAgQSBuZXcgc3RyZW5ndGggcmVkdWN0aW9uIHJ1bGUgaXMgYWRkZWQgZm9yIHRoZSBjYW5v
bmljYWwgZm9ybSBvZiB0aGUgemVyby1leHRlbmQgCiAgICAgICAgIGJpdGZpZWxkLgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oCmluZGV4IGRmNjVjYjYzNjFmNGFiMDVhMDU1MGUzMGUzNGE4NTc3OWFlZGFmN2YuLjNkODVj
YmI4ZGI1MzNjODQwN2FhYjY1YTM5MDQ0ZjliYTJiNDAyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC03NzAs
NyArNzcwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtdWx0aXBseU5lZzMyKFJlZ2lzdGVySUQg
bXVsTGVmdCwgUmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIubXN1YjwzMj4oZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIEFSTTY0
UmVnaXN0ZXJzOjp6cik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1uZWc8MzI+KGRlc3QsIG11bExl
ZnQsIG11bFJpZ2h0KTsKICAgICB9CiAKICAgICB2b2lkIG11bHRpcGx5QWRkNjQoUmVnaXN0ZXJJ
RCBtdWxMZWZ0LCBSZWdpc3RlcklEIG11bFJpZ2h0LCBSZWdpc3RlcklEIHN1bW1hbmQsIFJlZ2lz
dGVySUQgZGVzdCkKQEAgLTc4Myw2ICs3ODMsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5zbWFkZGwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIHN1bW1hbmQpOwogICAgIH0KIAor
ICAgIHZvaWQgbXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIoUmVnaXN0ZXJJRCBtdWxMZWZ0LCBSZWdp
c3RlcklEIG11bFJpZ2h0LCBSZWdpc3RlcklEIHN1bW1hbmQsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnVtYWRkbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCwg
c3VtbWFuZCk7CisgICAgfQorCiAgICAgdm9pZCBtdWx0aXBseVN1YjY0KFJlZ2lzdGVySUQgbXVs
TGVmdCwgUmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBtaW51ZW5kLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tc3ViPDY0PihkZXN0LCBtdWxMZWZ0
LCBtdWxSaWdodCwgbWludWVuZCk7CkBAIC03OTMsOSArNzk4LDI0IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9hc3NlbWJsZXIuc21zdWJsKGRlc3QsIG11bExlZnQsIG11bFJpZ2h0LCBtaW51ZW5kKTsK
ICAgICB9CiAKKyAgICB2b2lkIG11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKFJlZ2lzdGVySUQgbXVs
TGVmdCwgUmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBtaW51ZW5kLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci51bXN1YmwoZGVzdCwgbXVsTGVmdCwg
bXVsUmlnaHQsIG1pbnVlbmQpOworICAgIH0KKwogICAgIHZvaWQgbXVsdGlwbHlOZWc2NChSZWdp
c3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1zdWI8NjQ+KGRlc3QsIG11bExlZnQsIG11bFJpZ2h0
LCBBUk02NFJlZ2lzdGVyczo6enIpOworICAgICAgICBtX2Fzc2VtYmxlci5tbmVnPDY0PihkZXN0
LCBtdWxMZWZ0LCBtdWxSaWdodCk7CisgICAgfQorCisgICAgdm9pZCBtdWx0aXBseU5lZ1NpZ25F
eHRlbmQzMihSZWdpc3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNtbmVnbChkZXN0LCBtdWxMZWZ0
LCBtdWxSaWdodCk7CisgICAgfQorCisgICAgdm9pZCBtdWx0aXBseU5lZ1plcm9FeHRlbmQzMihS
ZWdpc3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnVtbmVnbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdo
dCk7CiAgICAgfQogCiAgICAgdm9pZCBtdWx0aXBseVNpZ25FeHRlbmQzMihSZWdpc3RlcklEIGxl
ZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggZDI5ZjkzNjBhMzY3ZDBhMTEzNjNl
ODdiODU2OTNlNTg0ZjNlN2VhNC4uNzFjZDIzOTk4Y2U3YTI0MTIwMTk2ZDBmMDQ1NjI0NmQxNGQ5
MThhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFz
bS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAK
QEAgLTkyMSw3ICs5MjEsNyBAQCB2b2lkIHRlc3RNdWx0aXBseVNpZ25FeHRlbmQzMigpCiAgICAg
fQogfQogCi12b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMkxlZnQoKQordm9pZCB0ZXN0
TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIoKQogewogICAgIC8vIGQgPSBTRXh0MzIobikgKiBTRXh0
MzIobSkgKyBhCiAgICAgYXV0byBhZGQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQp
IHsKQEAgLTk0NCwyNSArOTQ0LDI4IEBAIHZvaWQgdGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMy
TGVmdCgpCiAgICAgfQogfQogCi12b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMlJpZ2h0
KCkKK3ZvaWQgdGVzdE11bHRpcGx5QWRkWmVyb0V4dGVuZDMyKCkKIHsKLSAgICAvLyBkID0gYSAr
IFNFeHQzMihuKSAqIFNFeHQzMihtKQorICAgIC8vIGQgPSBaRXh0MzIobikgKiBaRXh0MzIobSkg
KyBhCiAgICAgYXV0byBhZGQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAg
ICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAotICAgICAgICBqaXQubXVsdGlwbHlB
ZGRTaWduRXh0ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgaml0Lm11bHRp
cGx5QWRkWmVyb0V4dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBH
UFJJbmZvOjphcmd1bWVudEdQUjEsIAogICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIy
LCAKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCiAgICAgICAgICAgICBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAKICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwogCi0gICAgZm9yIChhdXRvIGEgOiBpbnQ2
NE9wZXJhbmRzKCkpIHsKLSAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsK
LSAgICAgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKQotICAgICAgICAgICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90PihhZGQsIGEsIG4sIG0pLCBhICsgc3RhdGljX2Nh
c3Q8aW50NjRfdD4obikgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtKSk7CisgICAgZm9yIChhdXRv
IG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJh
bmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygpKSB7Cisg
ICAgICAgICAgICAgICAgdWludDMyX3QgdW4gPSBuOworICAgICAgICAgICAgICAgIHVpbnQzMl90
IHVtID0gbTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oYWRkLCBu
LCBtLCBhKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4odW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4o
dW0pICsgYSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMDkxLDcg
KzEwOTQsNyBAQCB2b2lkIHRlc3RTdWI2NEFyZ0ltbTY0KCkKIAogdm9pZCB0ZXN0TXVsdGlwbHlT
dWJTaWduRXh0ZW5kMzIoKQogewotICAgIC8vIGQgPSBhIC0gU0V4dDMyKG4pICogIFNFeHQzMiht
KQorICAgIC8vIGQgPSBhIC0gU0V4dDMyKG4pICogU0V4dDMyKG0pCiAgICAgYXV0byBzdWIgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKIApAQCAtMTExMiw2ICsxMTE1LDcxIEBAIHZvaWQgdGVzdE11bHRpcGx5U3Vi
U2lnbkV4dGVuZDMyKCkKICAgICB9CiB9CiAKK3ZvaWQgdGVzdE11bHRpcGx5U3ViWmVyb0V4dGVu
ZDMyKCkKK3sKKyAgICAvLyBkID0gYSAtIChaRXh0MzIobikgKiBaRXh0MzIobSkpCisgICAgYXV0
byBzdWIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBqaXQubXVsdGlwbHlTdWJaZXJvRXh0ZW5k
MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMiwKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
aml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIGEgOiBp
bnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAg
ICAgICAgICAgdWludDMyX3QgdW4gPSBuOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVtID0g
bTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oc3ViLCBhLCBuLCBt
KSwgYSAtIHN0YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVt
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE11bHRp
cGx5TmVnU2lnbkV4dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gLSAoU0V4dDMyKG4pICogU0V4dDMy
KG0pKQorICAgIGF1dG8gbmVnID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7Cisg
ICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0Lm11bHRpcGx5
TmVnU2lnbkV4dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRv
IG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJh
bmRzKCkpCisgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4obmVnLCBuLCBtKSwg
LShzdGF0aWNfY2FzdDxpbnQ2NF90PihuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KG0pKSk7Cisg
ICAgfQorfQorCit2b2lkIHRlc3RNdWx0aXBseU5lZ1plcm9FeHRlbmQzMigpCit7CisgICAgLy8g
ZCA9IC0gWkV4dDMyKG4pICogWkV4dDMyKG0pCisgICAgYXV0byBuZWcgPSBjb21waWxlKFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsK
KworICAgICAgICBqaXQubXVsdGlwbHlOZWdaZXJvRXh0ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKwor
ICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7Cisg
ICAgfSk7CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBm
b3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgdWludDMyX3QgdW4g
PSBuOworICAgICAgICAgICAgdWludDMyX3QgdW0gPSBtOworICAgICAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPHVpbnQ2NF90PihuZWcsIG4sIG0pLCAtKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1bikg
KiBzdGF0aWNfY2FzdDx1aW50NjRfdD4odW0pKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZv
aWQgdGVzdEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIoKQogewogICAgIHVpbnQzMl90IHNyYyA9
IDB4ZjBmMGYwZjA7CkBAIC00MTY0LDkgKzQyMzIsMTIgQEAgdm9pZCBydW4oY29uc3QgY2hhciog
ZmlsdGVyKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRlc3RT
dWI2NEltbTY0KCkpOwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW02NCgpKTsKIAotICAgIFJVTih0
ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkpOwotICAgIFJVTih0ZXN0TXVsdGlwbHlB
ZGRTaWduRXh0ZW5kMzJSaWdodCgpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5QWRkU2lnbkV4dGVu
ZDMyKCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIoKSk7CiAgICAgUlVO
KHRlc3RNdWx0aXBseVN1YlNpZ25FeHRlbmQzMigpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5U3Vi
WmVyb0V4dGVuZDMyKCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlOZWdTaWduRXh0ZW5kMzIoKSk7
CisgICAgUlVOKHRlc3RNdWx0aXBseU5lZ1plcm9FeHRlbmQzMigpKTsKIAogICAgIFJVTih0ZXN0
RXh0cmFjdFVuc2lnbmVkQml0ZmllbGQzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RVbnNpZ25l
ZEJpdGZpZWxkNjQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
CmluZGV4IDJiNTU2ZDcxODMzMzcyMGJmYTc4NzNjNzc5YmQyOTFmZDEyNjE3OTEuLmEwZGM1ZTQ2
ZDU5OWVhNzM1NzhiYmIyY2Y4NTk1MmVkMGQ5NmEwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNTY3LDcyICsyNTY3LDc5IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUt
PmNoaWxkKDApOwogICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7
CiAKLSAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkRm9ybShNdWx0aXBseUFkZDY0LCBBcmc6OlRt
cCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkgCi0gICAgICAgICAgICAgICAgPT0gaXNW
YWxpZEZvcm0oTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJn
OjpUbXAsIEFyZzo6VG1wKSk7Ci0gICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseUFkZE9w
Y29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92
YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShtdWx0aXBseUFkZE9w
Y29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFpbW0ocmlnaHQpIHx8IG1fdmFsdWVUb1RtcFtyaWdodF0pIHsKLSAgICAg
ICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBseSA9IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wg
eyAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2LT5vcGNvZGUoKSAhPSBNdWwgfHwgIWNh
bkJlSW50ZXJuYWwodikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxk
KDApKSB8fCBtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgxKSkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAgICAgYXV0
byB0cnlTRXh0MzIgPSBbJl0gKFZhbHVlKiB2KSAtPiBib29sIHsgCi0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdi0+b3Bjb2RlKCkgPT0gU0V4dDMyICYmIGNhbkJlSW50ZXJuYWwodik7
Ci0gICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICBhdXRvIHRyeU11bHRpcGx5QWRk
ID0gWyZdICgpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIGlmIChpbW0ocmlnaHQpICYmICFt
X3ZhbHVlVG9UbXBbcmlnaHRdKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgICAgICAgICAgICAgLy8gTUFERDogZCA9IG4gKiBtICsgYQotICAgICAgICAgICAg
ICAgICAgICBhdXRvIHRyeUFwcGVuZE11bHRpcGx5QWRkID0gWyZdIChWYWx1ZSogbGVmdCwgVmFs
dWUqIHJpZ2h0KSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdHJ5TXVs
dGlwbHkobGVmdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5TGVmdCA9IGxlZnQtPmNoaWxk
KDApOwotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQgPSBsZWZ0
LT5jaGlsZCgxKTsKKyAgICAgICAgICAgICAgICBhdXRvIHRyeUIzT3Bjb2RlID0gWyZdIChWYWx1
ZSogdiwgQjM6Ok9wY29kZSBiM09wY29kZSkgLT4gYm9vbCB7IAorICAgICAgICAgICAgICAgICAg
ICBpZiAodi0+b3Bjb2RlKCkgIT0gYjNPcGNvZGUgfHwgIWNhbkJlSW50ZXJuYWwodikpCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGlm
IChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgIH07CiAKKyAgICAgICAgICAgICAgICAvLyBNQUREOiBkID0gbiAqIG0gKyBhCisg
ICAgICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRNdWx0aXBseUFkZCA9IFsmXSAoVmFsdWUqIGxl
ZnQsIFZhbHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0
LT5vcGNvZGUoKSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwobGVmdCkgfHwgbV9sb2NrZWQuY29u
dGFpbnMocmlnaHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbGVmdC0+Y2hpbGQoMCk7Cisg
ICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0ID0gbGVmdC0+Y2hpbGQoMSk7
CisgICAgICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIGFpck9wY29kZSA9IHRyeU9wY29kZUZv
clR5cGUoTXVsdGlwbHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byB0cnlOZXdBaXJPcGNvZGUgPSBbJl0gKCkgLT4gQWlyOjpP
cGNvZGUgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFpck9wY29kZSAhPSBNdWx0aXBs
eUFkZDY0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBTTUFEREw6IGQgPSBTRXh0MzIobikgKiBTRXh0MzIo
bSkgKyBhCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlwbHlBZGRPcGNvZGUgPT0g
TXVsdGlwbHlBZGQ2NCAmJiB0cnlTRXh0MzIobXVsdGlwbHlMZWZ0KSAmJiB0cnlTRXh0MzIobXVs
dGlwbHlSaWdodCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoTXVsdGlw
bHlBZGRTaWduRXh0ZW5kMzIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAo
bXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0bXAobXVsdGlwbHlSaWdodC0+Y2hpbGQoMCkpLCAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG1wKHJpZ2h0KSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRt
cChtX3ZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwo
bXVsdGlwbHlMZWZ0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5h
bChtdWx0aXBseVJpZ2h0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRl
cm5hbChsZWZ0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cnlC
M09wY29kZShtdWx0aXBseUxlZnQsIFNFeHQzMikgJiYgdHJ5QjNPcGNvZGUobXVsdGlwbHlSaWdo
dCwgU0V4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5
QWRkU2lnbkV4dGVuZDMyOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVU1BRERMOiBkID0g
WkV4dDMyKG4pICogWkV4dDMyKG0pICsgYQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRy
eUIzT3Bjb2RlKG11bHRpcGx5TGVmdCwgWkV4dDMyKSAmJiB0cnlCM09wY29kZShtdWx0aXBseVJp
Z2h0LCBaRXh0MzIpKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlw
bHlBZGRaZXJvRXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpP
b3BzOworICAgICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgICAgICAgICBh
cHBlbmQobXVsdGlwbHlBZGRPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQpLCB0bXAobXVsdGlwbHlS
aWdodCksIHRtcChyaWdodCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIEFp
cjo6T3Bjb2RlIG5ld0Fpck9wY29kZSA9IHRyeU5ld0Fpck9wY29kZSgpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNWYWxpZEZvcm0obmV3QWlyT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAs
IEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChu
ZXdBaXJPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQtPmNoaWxkKDApKSwgdG1wKG11bHRpcGx5Umln
aHQtPmNoaWxkKDApKSwgdG1wKHJpZ2h0KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5TGVmdCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseVJpZ2h0KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTXVsdGlwbHlBZGQobGVmdCwgcmln
aHQpIHx8IHRyeUFwcGVuZE11bHRpcGx5QWRkKHJpZ2h0LCBsZWZ0KSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0oYWlyT3Bjb2RlLCBBcmc6OlRtcCwgQXJn
OjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhtdWx0
aXBseUxlZnQpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKG11bHRpcGx5UmlnaHQpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBhcHBlbmQo
YWlyT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0KSwgdG1wKG11bHRpcGx5UmlnaHQpLCB0bXAocmln
aHQpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChs
ZWZ0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
fTsKIAotICAgICAgICAgICAgLy8gYWRkLXdpdGgtc2hpZnQgUGF0dGVybjogbiArIChtIFNoaWZ0
VHlwZSBhbW91bnQpCi0gICAgICAgICAgICBhdXRvIHRyeU9wY29kZSA9IFsmXSAoSlNDOjpCMzo6
T3Bjb2RlIG9wY29kZSkgLT4gQWlyOjpPcGNvZGUgewotICAgICAgICAgICAgICAgIHN3aXRjaCAo
b3Bjb2RlKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBTaGw6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZExlZnRTaGlmdDMyLCBBZGRMZWZ0U2hpZnQ2NCwg
bV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgICAgICBjYXNlIFNTaHI6Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFJpZ2h0U2hpZnQzMiwgQWRkUmln
aHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOwotICAgICAgICAgICAgICAgIGNhc2UgWlNocjoK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoQWRkVW5zaWduZWRS
aWdodFNoaWZ0MzIsIEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOwot
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6
Ok9vcHM7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnlBcHBl
bmRNdWx0aXBseUFkZChsZWZ0LCByaWdodCkgfHwgdHJ5QXBwZW5kTXVsdGlwbHlBZGQocmlnaHQs
IGxlZnQpOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRBZGRB
bmRTaGlmdCA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAg
ICAgICAgICBpZiAodHJ5TXVsdGlwbHlBZGQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIC8vIGFkZC13aXRoLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBTaGlmdFR5cGUg
YW1vdW50KQorICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRBZGRXaXRoU2hpZnQgPSBbJl0gKFZh
bHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIGF1dG8g
dHJ5T3Bjb2RlID0gWyZdIChCMzo6T3Bjb2RlIG9wY29kZSkgLT4gQWlyOjpPcGNvZGUgeworICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICAgICAgICAgICAgICBj
YXNlIFNobDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBl
KEFkZExlZnRTaGlmdDMyLCBBZGRMZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRyeU9wY29kZUZvclR5cGUoQWRkUmlnaHRTaGlmdDMyLCBBZGRSaWdodFNoaWZ0NjQsIG1fdmFs
dWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgWlNocjoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2lnbmVkUmlnaHRTaGlm
dDMyLCBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6
Ok9vcHM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworCiAgICAg
ICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlKHJpZ2h0LT5vcGNvZGUo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBB
cmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTI2NDksNyArMjY1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICBpZiAodHJ5QXBwZW5k
QWRkQW5kU2hpZnQobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZEFkZEFuZFNoaWZ0KHJpZ2h0LCBs
ZWZ0KSkKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRBZGRXaXRoU2hpZnQobGVmdCwgcmlnaHQp
IHx8IHRyeUFwcGVuZEFkZFdpdGhTaGlmdChyaWdodCwgbGVmdCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgICAgICBhcHBlbmRCaW5PcDxBZGQzMiwgQWRkNjQsIEFkZERvdWJs
ZSwgQWRkRmxvYXQsIENvbW11dGF0aXZlPihsZWZ0LCByaWdodCk7CkBAIC0yNjYwLDcyICsyNjY3
LDcyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxk
KDApOwogICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CiAKLSAg
ICAgICAgICAgIEFpcjo6T3Bjb2RlIG11bHRpcGx5U3ViT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlw
ZShNdWx0aXBseVN1YjMyLCBNdWx0aXBseVN1YjY0LCBtX3ZhbHVlLT50eXBlKCkpOwotICAgICAg
ICAgICAgaWYgKG11bHRpcGx5U3ViT3Bjb2RlICE9IEFpcjo6T29wcwotICAgICAgICAgICAgICAg
ICYmIGlzVmFsaWRGb3JtKG11bHRpcGx5U3ViT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFy
Zzo6VG1wLCBBcmc6OlRtcCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHRyeU11bHRpcGx5ID0g
WyZdIChWYWx1ZSogdikgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2LT5vcGNv
ZGUoKSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwodikpCisgICAgICAgICAgICBhdXRvIHRyeUFw
cGVuZE11bHRpcGx5U3ViID0gWyZdICgpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIGlmIChp
bW0ocmlnaHQpICYmICFtX3ZhbHVlVG9UbXBbcmlnaHRdKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBhdXRvIHRyeUIzT3Bjb2RlID0gWyZdIChW
YWx1ZSogdiwgQjM6Ok9wY29kZSBiM09wY29kZSkgLT4gYm9vbCB7IAorICAgICAgICAgICAgICAg
ICAgICBpZiAodi0+b3Bjb2RlKCkgIT0gYjNPcGNvZGUgfHwgIWNhbkJlSW50ZXJuYWwodikpCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkgfHwgbV9sb2NrZWQuY29udGFpbnMo
di0+Y2hpbGQoMSkpKQorICAgICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMo
di0+Y2hpbGQoMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9OwogCiAgICAg
ICAgICAgICAgICAgLy8gTVNVQjogZCA9IGEgLSBuICogbQotICAgICAgICAgICAgICAgIGlmICgo
IWltbShyaWdodCkgfHwgbV92YWx1ZVRvVG1wW3JpZ2h0XSkgJiYgdHJ5TXVsdGlwbHkocmlnaHQp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSByaWdodC0+Y2hp
bGQoMCk7Ci0gICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0ID0gcmlnaHQt
PmNoaWxkKDEpOwotCisgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKGxlZnQp
IHx8IHJpZ2h0LT5vcGNvZGUoKSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwocmlnaHQpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgVmFsdWUqIG11
bHRpcGx5TGVmdCA9IHJpZ2h0LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbXVs
dGlwbHlSaWdodCA9IHJpZ2h0LT5jaGlsZCgxKTsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29k
ZSBhaXJPcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKE11bHRpcGx5U3ViMzIsIE11bHRpcGx5U3Vi
NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgYXV0byB0cnlOZXdBaXJPcGNv
ZGUgPSBbJl0gKCkgLT4gQWlyOjpPcGNvZGUgeworICAgICAgICAgICAgICAgICAgICBpZiAoYWly
T3Bjb2RlICE9IE11bHRpcGx5U3ViNjQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
QWlyOjpPb3BzOwogICAgICAgICAgICAgICAgICAgICAvLyBTTVNVQkw6IGQgPSBhIC0gU0V4dDMy
KG4pICogU0V4dDMyKG0pCi0gICAgICAgICAgICAgICAgICAgIGlmIChtdWx0aXBseVN1Yk9wY29k
ZSA9PSBNdWx0aXBseVN1YjY0Ci0gICAgICAgICAgICAgICAgICAgICAgICAmJiBpc1ZhbGlkRm9y
bShNdWx0aXBseVN1YlNpZ25FeHRlbmQzMiwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCwg
QXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHRyeVNFeHQzMiA9IFsm
XSAoVmFsdWUqIHYpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodi0+b3Bjb2Rl
KCkgIT0gU0V4dDMyIHx8ICFjYW5CZUludGVybmFsKHYpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxkKDApKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byB0cnlBcHBlbmRNdWx0aXBseVN1YlNpZ25FeHRlbmQzMiA9IFsmXSAoKSAtPiBi
b29sIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRyeVNFeHQzMihtdWx0aXBs
eUxlZnQpIHx8ICF0cnlTRXh0MzIobXVsdGlwbHlSaWdodCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cHBlbmQoTXVsdGlwbHlTdWJTaWduRXh0ZW5kMzIsIAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0bXAobXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSksIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0bXAobXVsdGlwbHlSaWdodC0+Y2hpbGQoMCkpLCAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG1wKGxlZnQpLCAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG1wKG1fdmFsdWUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21t
aXRJbnRlcm5hbChyaWdodCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50
ZXJuYWwobXVsdGlwbHlMZWZ0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJ
bnRlcm5hbChtdWx0aXBseVJpZ2h0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0cnlBcHBlbmRNdWx0aXBseVN1YlNpZ25FeHRlbmQzMigpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpZiAodHJ5QjNPcGNvZGUobXVsdGlwbHlMZWZ0LCBTRXh0MzIpICYmIHRy
eUIzT3Bjb2RlKG11bHRpcGx5UmlnaHQsIFNFeHQzMikpIAorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyOworICAgICAgICAgICAgICAgICAgICAv
LyBVTVNVQkw6IGQgPSBhIC0gWkV4dDMyKG4pICogWkV4dDMyKG0pCisgICAgICAgICAgICAgICAg
ICAgIGlmICh0cnlCM09wY29kZShtdWx0aXBseUxlZnQsIFpFeHQzMikgJiYgdHJ5QjNPcGNvZGUo
bXVsdGlwbHlSaWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
TXVsdGlwbHlTdWJaZXJvRXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6
Ok9vcHM7CisgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgICAgICBhcHBlbmQo
bXVsdGlwbHlTdWJPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQpLCB0bXAobXVsdGlwbHlSaWdodCks
IHRtcChsZWZ0KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBu
ZXdBaXJPcGNvZGUgPSB0cnlOZXdBaXJPcGNvZGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNW
YWxpZEZvcm0obmV3QWlyT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6
OlRtcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKG5ld0Fpck9wY29kZSwgdG1wKG11
bHRpcGx5TGVmdC0+Y2hpbGQoMCkpLCB0bXAobXVsdGlwbHlSaWdodC0+Y2hpbGQoMCkpLCB0bXAo
bGVmdCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFs
KG11bHRpcGx5TGVmdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRp
cGx5UmlnaHQpOwogICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBz
dWItd2l0aC1zaGlmdCBQYXR0ZXJuOiBuIC0gKG0gU2hpZnRUeXBlIGFtb3VudCkKLSAgICAgICAg
ICAgIGF1dG8gdHJ5T3Bjb2RlID0gWyZdIChKU0M6OkIzOjpPcGNvZGUgb3Bjb2RlKSAtPiBBaXI6
Ok9wY29kZSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKLSAgICAgICAgICAg
ICAgICBjYXNlIFNobDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5
cGUoU3ViTGVmdFNoaWZ0MzIsIFN1YkxlZnRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOwotICAg
ICAgICAgICAgICAgIGNhc2UgU1NocjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9w
Y29kZUZvclR5cGUoU3ViUmlnaHRTaGlmdDMyLCBTdWJSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5
cGUoKSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBaU2hyOgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMiwgU3ViVW5zaWdu
ZWRSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKLSAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShhaXJPcGNvZGUsIEFyZzo6VG1w
LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhtdWx0aXBs
eUxlZnQpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKG11bHRpcGx5UmlnaHQpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYXBwZW5kKGFpck9wY29kZSwg
dG1wKG11bHRpcGx5TGVmdCksIHRtcChtdWx0aXBseVJpZ2h0KSwgdG1wKGxlZnQpLCB0bXAobV92
YWx1ZSkpOworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKHJpZ2h0KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH07CiAKKyAgICAgICAgICAgIGlmICh0
cnlBcHBlbmRNdWx0aXBseVN1YigpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgLy8gc3ViLXdpdGgtc2hpZnQgUGF0dGVybjogbiAtIChtIFNoaWZ0VHlwZSBhbW91bnQp
CiAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZFN1YkFuZFNoaWZ0ID0gWyZdICgpIC0+IGJvb2wg
eworICAgICAgICAgICAgICAgIGF1dG8gdHJ5T3Bjb2RlID0gWyZdIChCMzo6T3Bjb2RlIG9wY29k
ZSkgLT4gQWlyOjpPcGNvZGUgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkg
eworICAgICAgICAgICAgICAgICAgICBjYXNlIFNobDoKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YkxlZnRTaGlmdDMyLCBTdWJMZWZ0U2hpZnQ2NCwg
bV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViUmlnaHRTaGlmdDMy
LCBTdWJSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgWlNocjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JU
eXBlKFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyLCBTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92
YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9OworCiAgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0g
dHJ5T3Bjb2RlKHJpZ2h0LT5vcGNvZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlk
Rm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3NTAsMjAgKzI3NTcsNTMgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTmVnOiB7Ci0gICAgICAgICAgICBB
aXI6Ok9wY29kZSBtdWx0aXBseU5lZ09wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlO
ZWczMiwgTXVsdGlwbHlOZWc2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgIGlmICht
dWx0aXBseU5lZ09wY29kZSAhPSBBaXI6Ok9vcHMKLSAgICAgICAgICAgICAgICAmJiBpc1ZhbGlk
Rm9ybShtdWx0aXBseU5lZ09wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkKLSAg
ICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gTXVsCi0gICAg
ICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKLSAgICAg
ICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlPcGVyYXRpb24gPSBtX3ZhbHVlLT5jaGlsZCgwKTsK
LSAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbXVsdGlwbHlPcGVyYXRpb24t
PmNoaWxkKDApOwotICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0ID0gbXVsdGlw
bHlPcGVyYXRpb24tPmNoaWxkKDEpOwotICAgICAgICAgICAgICAgIGlmICghbV9sb2NrZWQuY29u
dGFpbnMobXVsdGlwbHlMZWZ0KSAmJiAhbV9sb2NrZWQuY29udGFpbnMobXVsdGlwbHlSaWdodCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kKG11bHRpcGx5TmVnT3Bjb2RlLCB0bXAobXVs
dGlwbHlMZWZ0KSwgdG1wKG11bHRpcGx5UmlnaHQpLCB0bXAobV92YWx1ZSkpOwotICAgICAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseU9wZXJhdGlvbik7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kTXVsdGlwbHlOZWcg
PSBbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgYXV0byB0cnlCM09wY29kZSA9IFsm
XSAoVmFsdWUqIHYsIEIzOjpPcGNvZGUgYjNPcGNvZGUpIC0+IGJvb2wgeyAKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IGIzT3Bjb2RlIHx8ICFjYW5CZUludGVybmFsKHYp
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICBpZiAobV9sb2NrZWQuY29udGFpbnModi0+Y2hpbGQoMCkpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgLy8gTU5FRyA6IGQgPSAtKG4g
KiBtKQorICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgIT0g
TXVsIHx8ICFjYW5CZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQg
PSBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgVmFsdWUqIG11
bHRpcGx5UmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSk7CisgICAgICAgICAgICAg
ICAgQWlyOjpPcGNvZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseU5lZzMy
LCBNdWx0aXBseU5lZzY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGF1dG8g
dHJ5TmV3QWlyT3Bjb2RlID0gWyZdICgpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGFpck9wY29kZSAhPSBNdWx0aXBseU5lZzY0KQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEFpcjo6T29wczsKKyAgICAgICAgICAgICAgICAgICAgLy8gU01ORUcgOiBk
ID0gLShTRXh0MzIobikgKiBTRXh0MzIobSkpCisgICAgICAgICAgICAgICAgICAgIGlmICh0cnlC
M09wY29kZShtdWx0aXBseUxlZnQsIFNFeHQzMikgJiYgdHJ5QjNPcGNvZGUobXVsdGlwbHlSaWdo
dCwgU0V4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlOZWdT
aWduRXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIC8vIFpNTkVHOiBkID0gLShaRXh0MzIo
bikgKiBaRXh0MzIobSkpCisgICAgICAgICAgICAgICAgICAgIGlmICh0cnlCM09wY29kZShtdWx0
aXBseUxlZnQsIFpFeHQzMikgJiYgdHJ5QjNPcGNvZGUobXVsdGlwbHlSaWdodCwgWkV4dDMyKSkg
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlOZWdaZXJvRXh0ZW5kMzI7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7CisgICAgICAgICAgICAgICAg
fTsKKworICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG5ld0Fpck9wY29kZSA9IHRyeU5ld0Fp
ck9wY29kZSgpOworICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShuZXdBaXJPcGNvZGUs
IEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7CisgICAgICAgICAgICAgICAgICAgIGFw
cGVuZChuZXdBaXJPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQtPmNoaWxkKDApKSwgdG1wKG11bHRp
cGx5UmlnaHQtPmNoaWxkKDApKSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29tbWl0SW50ZXJuYWwobXVsdGlwbHlMZWZ0KTsKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0
SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVy
bmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg
KCFpc1ZhbGlkRm9ybShhaXJPcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG1f
bG9ja2VkLmNvbnRhaW5zKG11bHRpcGx5TGVmdCkgfHwgbV9sb2NrZWQuY29udGFpbnMobXVsdGlw
bHlSaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBhcHBlbmQoYWlyT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0KSwgdG1wKG11bHRpcGx5Umln
aHQpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG1fdmFs
dWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH07CisKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRNdWx0aXBseU5lZygpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYXBwZW5kVW5PcDxOZWczMiwgTmVnNjQsIE5l
Z2F0ZURvdWJsZSwgTmVnYXRlRmxvYXQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bj
b2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNv
ZGVzCmluZGV4IDA1ZGMzYTlmZWM0Njk2ODQwMzFkODhkNzNlYzM3Y2MwNThiZTFmNTcuLjBjNGFj
MDI4NzE4NzBmNWUxNDE5Y2Y0YTRkMjM4YTZhZjYwYjU0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAtMjU0LDYgKzI1NCw5IEBAIGFy
bTY0OiBNdWx0aXBseUFkZDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogYXJtNjQ6
IE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6NjQsIEQ6Rzo2NAog
ICAgIFRtcCwgVG1wLCBUbXAsIFRtcAogCithcm02NDogTXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIg
VTpHOjMyLCBVOkc6MzIsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIFRtcCwgVG1wCisK
IGFybTY0OiBNdWx0aXBseVN1YjMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAg
ICBUbXAsIFRtcCwgVG1wLCBUbXAKIApAQCAtMjYzLDEzICsyNjYsMjIgQEAgYXJtNjQ6IE11bHRp
cGx5U3ViNjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiBhcm02NDogTXVsdGlwbHlT
dWJTaWduRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBU
bXAsIFRtcCwgVG1wCiAKK2FybTY0OiBNdWx0aXBseVN1Ylplcm9FeHRlbmQzMiBVOkc6MzIsIFU6
RzozMiwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgVG1wLCBUbXAKKwogYXJtNjQ6IE11
bHRpcGx5TmVnMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcCwgVG1wCiAK
IGFybTY0OiBNdWx0aXBseU5lZzY0IFU6Rzo2NCwgVTpHOjY0LCBaRDpHOjY0CiAgICAgVG1wLCBU
bXAsIFRtcAogCi1hcm02NDogTXVsdGlwbHlTaWduRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIsIFpE
Okc6NjQKK2FybTY0OiBNdWx0aXBseU5lZ1NpZ25FeHRlbmQzMiBVOkc6NjQsIFU6Rzo2NCwgRDpH
OjY0CisgICAgVG1wLCBUbXAsIFRtcAorCithcm02NDogTXVsdGlwbHlOZWdaZXJvRXh0ZW5kMzIg
VTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBUbXAKKworYXJtNjQ6IE11bHRp
cGx5U2lnbkV4dGVuZDMyIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1w
CiAKIGFybTY0OiBEaXYzMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5oCmluZGV4IDljN2QyOTk4ZTJhODkwZjVlZGU3MGViNmI5ZTBmOTkxOTQ3ZmExMWYu
LmY4YmU3NzkzY2VhZDVkMjNkZDk2MGU1MTQwZmFmODcwNGNlYWY0YzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmgKQEAgLTkxMywxMyArOTEzLDE4IEBAIHZvaWQgdGVzdE11bEFkZEFyZ3NM
ZWZ0MzIoKTsKIHZvaWQgdGVzdE11bEFkZEFyZ3NSaWdodDMyKCk7CiB2b2lkIHRlc3RNdWxBZGRT
aWduRXh0ZW5kMzJBcmdzTGVmdCgpOwogdm9pZCB0ZXN0TXVsQWRkU2lnbkV4dGVuZDMyQXJnc1Jp
Z2h0KCk7Cit2b2lkIHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzTGVmdCgpOwordm9pZCB0ZXN0
TXVsQWRkWmVyb0V4dGVuZDMyQXJnc1JpZ2h0KCk7CiB2b2lkIHRlc3RNdWxTdWJBcmdzTGVmdCgp
Owogdm9pZCB0ZXN0TXVsU3ViQXJnc1JpZ2h0KCk7CiB2b2lkIHRlc3RNdWxTdWJBcmdzTGVmdDMy
KCk7CiB2b2lkIHRlc3RNdWxTdWJBcmdzUmlnaHQzMigpOwotdm9pZCB0ZXN0TXVsU3ViU2lnbkV4
dGVuZDMyQXJncygpOwordm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyKCk7Cit2b2lkIHRlc3RN
dWxTdWJaZXJvRXh0ZW5kMzIoKTsKIHZvaWQgdGVzdE11bE5lZ0FyZ3MoKTsKIHZvaWQgdGVzdE11
bE5lZ0FyZ3MzMigpOwordm9pZCB0ZXN0TXVsTmVnU2lnbkV4dGVuZDMyKCk7Cit2b2lkIHRlc3RN
dWxOZWdaZXJvRXh0ZW5kMzIoKTsKIHZvaWQgdGVzdE11bEFyZ0RvdWJsZShkb3VibGUpOwogdm9p
ZCB0ZXN0TXVsQXJnc0RvdWJsZShkb3VibGUsIGRvdWJsZSk7CiB2b2lkIHRlc3RDYWxsU2ltcGxl
RG91YmxlKGRvdWJsZSwgZG91YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3Bw
CmluZGV4IDhmNjBmY2M0YTRhMmVmMzU0MmU2NzQxYzI1MGFlOWY5OGRiNmRhYjYuLjE3MWI4Mzc4
MTMyNTdmMWQzZWMwNjJlOWY2ODc5MWViN2EyZDIwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiM18yLmNwcApAQCAtODc0LDE5ICs4NzQsNiBAQCB2b2lkIHRlc3RNdWxBcmdOZWdBcmco
aW50IGEsIGludCBiKQogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9
PSBhICogKC1iKSk7CiB9CiAKLXZvaWQgdGVzdE11bE5lZ0FyZ0FyZyhpbnQgYSwgaW50IGIpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogYXJn
QiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBWYWx1ZSogbmVnQSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgYXJnQSk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgbmVnQSwgYXJnQik7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQp
OwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09ICgtYSkgKiBi
KTsKLX0KLQogdm9pZCB0ZXN0TXVsQXJnSW1tKGludDY0X3QgYSwgaW50NjRfdCBiKQogewogICAg
IFByb2NlZHVyZSBwcm9jOwpAQCAtMTAxNCw3ICsxMDAxLDcgQEAgdm9pZCB0ZXN0TXVsQWRkQXJn
c0xlZnQoKQogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykgewogICAgICAgICBmb3IgKGF1
dG8gYiA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZhbHVl
cykKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUs
IGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKiBiLnZhbHVlICsgYy52YWx1ZSk7CisgICAg
ICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZh
bHVlLCBjLnZhbHVlKSwgYS52YWx1ZSAqIGIudmFsdWUgKyBjLnZhbHVlKTsKICAgICAgICAgfQog
ICAgIH0KIH0KQEAgLTEwMzksMTQgKzEwMjYsMTQgQEAgdm9pZCB0ZXN0TXVsQWRkQXJnc1JpZ2h0
KCkKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgZm9yIChhdXRvIGIg
OiB0ZXN0VmFsdWVzKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpCi0g
ICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZh
bHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlICsgYi52YWx1ZSAqIGMudmFsdWUpOworICAgICAgICAg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwg
Yy52YWx1ZSksIGEudmFsdWUgKyBiLnZhbHVlICogYy52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9
CiB9CiAKIHZvaWQgdGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KCkKIHsKLSAgICAvLyBk
ID0gU0V4dDMyKG4pICogIFNFeHQzMihtKSArIGEKKyAgICAvLyBkID0gU0V4dDMyKG4pICogU0V4
dDMyKG0pICsgYQogICAgIFByb2NlZHVyZSBwcm9jOwogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CiAKQEAgLTExMTgsNiArMTEwNSw4NCBAQCB2b2lkIHRlc3RNdWxBZGRT
aWduRXh0ZW5kMzJBcmdzUmlnaHQoKQogICAgIH0KIH0KIAordm9pZCB0ZXN0TXVsQWRkWmVyb0V4
dGVuZDMyQXJnc0xlZnQoKQoreworICAgIC8vIGQgPSBaRXh0MzIobikgKiBaRXh0MzIobSkgKyBh
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSkpOworICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAgIFZhbHVlKiBhVmFsdWUgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMik7CisKKyAgICBWYWx1ZSogbXVsVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIE11bCwgT3JpZ2luKCksIG5WYWx1ZSwgbVZhbHVlKTsKKyAgICBWYWx1ZSogYWRkVmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG11bFZhbHVlLCBh
VmFsdWUpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCBhZGRWYWx1ZSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwg
InVtYWRkbCIpOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0
byBhIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgdW4gPSBu
LnZhbHVlOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbS52YWx1ZTsKKyAgICAgICAg
ICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PigqY29kZSwgdW4sIHVtLCBhLnZh
bHVlKTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IHJocyA9IHN0YXRpY19jYXN0PGludDY0X3Q+
KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKSArIGEudmFsdWU7CisgICAgICAgICAgICAg
ICAgQ0hFQ0sobGhzID09IHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgdGVzdE11bEFkZFplcm9FeHRlbmQzMkFyZ3NSaWdodCgpCit7CisgICAgLy8gZCA9
IGEgKyBaRXh0MzIobikgKiBaRXh0MzIobSkKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKyAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwg
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFs
dWUpOworICAgIFZhbHVlKiBhZGRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
QWRkLCBPcmlnaW4oKSwgYVZhbHVlLCBtdWxWYWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZFZhbHVlKTsKKworICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAidW1hZGRsIik7CisKKyAgICBmb3IgKGF1dG8gYSA6
IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMo
KSkgeworICAgICAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgICAgICAgICB1aW50MzJfdCB1biA9IG4udmFsdWU7CisgICAgICAgICAgICAgICAgdWludDMy
X3QgdW0gPSBtLnZhbHVlOworICAgICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGlu
dDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCB1biwgdW0pOworICAgICAgICAgICAgICAgIGludDY0X3Qg
cmhzID0gYS52YWx1ZSArIHN0YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHVtKTsKKyAgICAgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCB0ZXN0TXVsQWRkQXJnc0xlZnQzMigp
CiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMTk0LDcgKzEyNTksNyBAQCB2b2lkIHRlc3RN
dWxTdWJBcmdzTGVmdCgpCiAgICAgZm9yIChhdXRvIGEgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAg
IGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewogICAgICAgICAgICAgZm9yIChhdXRvIGMgOiB0
ZXN0VmFsdWVzKQotICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwg
YS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAqIGIudmFsdWUgLSBjLnZhbHVl
KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFs
dWUsIGIudmFsdWUsIGMudmFsdWUpLCBhLnZhbHVlICogYi52YWx1ZSAtIGMudmFsdWUpOwogICAg
ICAgICB9CiAgICAgfQogfQpAQCAtMTIxOSw3ICsxMjg0LDcgQEAgdm9pZCB0ZXN0TXVsU3ViQXJn
c1JpZ2h0KCkKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgZm9yIChh
dXRvIGIgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1
ZXMpCi0gICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhLnZhbHVl
LCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlIC0gYi52YWx1ZSAqIGMudmFsdWUpOworICAg
ICAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52
YWx1ZSwgYy52YWx1ZSksIGEudmFsdWUgLSBiLnZhbHVlICogYy52YWx1ZSk7CiAgICAgICAgIH0K
ICAgICB9CiB9CkBAIC0xMjc1LDEyICsxMzQwLDEyIEBAIHZvaWQgdGVzdE11bFN1YkFyZ3NSaWdo
dDMyKCkKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgZm9yIChhdXRv
IGIgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMp
Ci0gICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhLnZhbHVlLCBi
LnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlIC0gYi52YWx1ZSAqIGMudmFsdWUpOworICAgICAg
ICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1
ZSwgYy52YWx1ZSksIGEudmFsdWUgLSBiLnZhbHVlICogYy52YWx1ZSk7CiAgICAgICAgIH0KICAg
ICB9CiB9CiAKLXZvaWQgdGVzdE11bFN1YlNpZ25FeHRlbmQzMkFyZ3MoKQordm9pZCB0ZXN0TXVs
U3ViU2lnbkV4dGVuZDMyKCkKIHsKICAgICAvLyBkID0gYSAtIFNFeHQzMihuKSAqIFNFeHQzMiht
KQogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTMxNyw2ICsxMzgyLDYyIEBAIHZvaWQgdGVzdE11
bFN1YlNpZ25FeHRlbmQzMkFyZ3MoKQogICAgIH0KIH0KIAordm9pZCB0ZXN0TXVsU3ViWmVyb0V4
dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gYSAtIFpFeHQzMihuKSAqIFpFeHQzMihtKQorICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisK
KyAgICBWYWx1ZSogYVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBuVmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisgICAgVmFsdWUq
IG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFpFeHQzMiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpKTsKKwor
ICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBP
cmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOworICAgIFZhbHVlKiBzdWJWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgYVZhbHVlLCBtdWxWYWx1ZSk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHN1
YlZhbHVlKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChp
c0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAidW1zdWJsIik7
CisKKyAgICBmb3IgKGF1dG8gYSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1
dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCB1biA9IG4udmFsdWU7Cisg
ICAgICAgICAgICAgICAgdWludDMyX3QgdW0gPSBtLnZhbHVlOworICAgICAgICAgICAgICAgIGlu
dDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCB1biwgdW0pOworICAg
ICAgICAgICAgICAgIGludDY0X3QgcmhzID0gYS52YWx1ZSAtIHN0YXRpY19jYXN0PGludDY0X3Q+
KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKTsKKyAgICAgICAgICAgICAgICBDSEVDSyhs
aHMgPT0gcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0
ZXN0TXVsTmVnQXJnQXJnKGludDMyX3QgYSwgaW50MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1
ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJnQiA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKTsKKyAgICBWYWx1ZSogbmVnQSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVn
LCBPcmlnaW4oKSwgYXJnQSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgbmVnQSwgYXJnQik7CisgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgYXV0byBj
b2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSAmJiBKU0M6Ok9wdGlv
bnM6OmRlZmF1bHRCM09wdExldmVsKCkgPiAxKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bigqY29kZSwgIm1uZWciKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEs
IGIpLCAoLWEpICogYik7Cit9CisKIHZvaWQgdGVzdE11bE5lZ0FyZ3MoKQogewogICAgIFByb2Nl
ZHVyZSBwcm9jOwpAQCAtMTMzMCwxMSArMTQ1MSwxMyBAQCB2b2lkIHRlc3RNdWxOZWdBcmdzKCkK
ICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
YWRkZWQpOwogCiAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlz
QVJNNjQoKSAmJiBKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPiAxKQorICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1uZWciKTsKIAogICAgIGF1dG8gdGVzdFZh
bHVlcyA9IGludDY0T3BlcmFuZHMoKTsKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsK
ICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBDSEVDSyhp
bnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUpID09IC0oYS52YWx1ZSAqIGIu
dmFsdWUpKTsKKyAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52
YWx1ZSwgYi52YWx1ZSksIC0oYS52YWx1ZSAqIGIudmFsdWUpKTsKICAgICAgICAgfQogICAgIH0K
IH0KQEAgLTEzNTQsMTEgKzE0NzcsODIgQEAgdm9pZCB0ZXN0TXVsTmVnQXJnczMyKCkKICAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWRkZWQp
OwogCiAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQo
KSAmJiBKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPiAxKQorICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1uZWciKTsKIAogICAgIGF1dG8gdGVzdFZhbHVlcyA9
IGludDMyT3BlcmFuZHMoKTsKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKLSAgICAg
ICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBDSEVDSyhpbnZva2U8
aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUpID09IC0oYS52YWx1ZSAqIGIudmFsdWUp
KTsKKyAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKQorICAgICAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlKSwgLShhLnZhbHVlICog
Yi52YWx1ZSkpOworICAgIH0KK30KKwordm9pZCB0ZXN0TXVsTmVnU2lnbkV4dGVuZDMyKCkKK3sK
KyAgICAvLyBkID0gLSAoU0V4dDMyKG4pICogU0V4dDMyKG0pKQorICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSog
blZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgU0V4dDMyLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAg
IFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBT
RXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
KSk7CisKKyAgICBWYWx1ZSogbXVsVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IE11bCwgT3JpZ2luKCksIG5WYWx1ZSwgbVZhbHVlKTsKKyAgICBWYWx1ZSogbmVnVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG11bFZhbHVlKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgbmVn
VmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlz
QVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzbW5lZ2wiKTsK
KworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0
byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9r
ZTxpbnQ2NF90PigqY29kZSwgbi52YWx1ZSwgbS52YWx1ZSk7CisgICAgICAgICAgICBpbnQ2NF90
IHJocyA9IC0oc3RhdGljX2Nhc3Q8aW50NjRfdD4obi52YWx1ZSkgKiBzdGF0aWNfY2FzdDxpbnQ2
NF90PihtLnZhbHVlKSk7CisgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsTmVnWmVyb0V4dGVuZDMyKCkKK3sKKyAgICAvLyBk
ID0gLSAoWkV4dDMyKG4pICogWkV4dDMyKG0pKQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogblZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIFZhbHVlKiBt
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAg
ICBWYWx1ZSogbXVsVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3Jp
Z2luKCksIG5WYWx1ZSwgbVZhbHVlKTsKKyAgICBWYWx1ZSogbmVnVmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG11bFZhbHVlKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgbmVnVmFsdWUpOwor
CisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkK
KyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJ1bW5lZ2wiKTsKKworICAgIGZv
ciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50
MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICB1aW50MzJfdCB1biA9IG4udmFsdWU7CisgICAg
ICAgICAgICB1aW50MzJfdCB1bSA9IG0udmFsdWU7CisgICAgICAgICAgICBpbnQ2NF90IGxocyA9
IGludm9rZTxpbnQ2NF90PigqY29kZSwgdW4sIHVtKTsKKyAgICAgICAgICAgIGludDY0X3Qgcmhz
ID0gLShzdGF0aWNfY2FzdDxpbnQ2NF90Pih1bikgKiBzdGF0aWNfY2FzdDxpbnQ2NF90Pih1bSkp
OworICAgICAgICAgICAgQ0hFQ0sobGhzID09IHJocyk7CiAgICAgICAgIH0KICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18zLmNwcAppbmRleCA3MmIwOGQxNmFhNzI5Y2RiODM0
NmZkMmZhYWZjYWQ5ZTAwMzlkNmViLi5jMTdhYmM3MzYzNDBkNWFiYjM2NGM0M2Y1Yzg2MDcxMDg2
NmRhNDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMy5jcHAKQEAgLTMzNzAsMTMg
KzMzNzAsMTggQEAgdm9pZCBhZGRBcmdUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJl
ZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpCiAgICAgUlVOKHRlc3RNdWxBZGRBcmdz
UmlnaHQzMigpKTsKICAgICBSVU4odGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KCkpOwog
ICAgIFJVTih0ZXN0TXVsQWRkU2lnbkV4dGVuZDMyQXJnc1JpZ2h0KCkpOworICAgIFJVTih0ZXN0
TXVsQWRkWmVyb0V4dGVuZDMyQXJnc0xlZnQoKSk7CisgICAgUlVOKHRlc3RNdWxBZGRaZXJvRXh0
ZW5kMzJBcmdzUmlnaHQoKSk7CiAgICAgUlVOKHRlc3RNdWxTdWJBcmdzTGVmdCgpKTsKICAgICBS
VU4odGVzdE11bFN1YkFyZ3NSaWdodCgpKTsKICAgICBSVU4odGVzdE11bFN1YkFyZ3NMZWZ0MzIo
KSk7CiAgICAgUlVOKHRlc3RNdWxTdWJBcmdzUmlnaHQzMigpKTsKLSAgICBSVU4odGVzdE11bFN1
YlNpZ25FeHRlbmQzMkFyZ3MoKSk7CisgICAgUlVOKHRlc3RNdWxTdWJTaWduRXh0ZW5kMzIoKSk7
CisgICAgUlVOKHRlc3RNdWxTdWJaZXJvRXh0ZW5kMzIoKSk7CiAgICAgUlVOKHRlc3RNdWxOZWdB
cmdzKCkpOwogICAgIFJVTih0ZXN0TXVsTmVnQXJnczMyKCkpOworICAgIFJVTih0ZXN0TXVsTmVn
U2lnbkV4dGVuZDMyKCkpOworICAgIFJVTih0ZXN0TXVsTmVnWmVyb0V4dGVuZDMyKCkpOwogICAg
IAogICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ05lZ0FyZywgaW50NjRPcGVyYW5kcygpLCBpbnQ2
NE9wZXJhbmRzKCkpCiAgICAgUlVOX0JJTkFSWSh0ZXN0TXVsTmVnQXJnQXJnLCBpbnQ2NE9wZXJh
bmRzKCksIGludDY0T3BlcmFuZHMoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433341</attachid>
            <date>2021-07-12 12:47:57 -0700</date>
            <delta_ts>2021-07-12 12:50:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227857-20210712144755.patch</filename>
            <type>text/plain</type>
            <size>45644</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Zjk2NzYxZTk2ZTViNTEyOWEzMTg1ZjQ0NjkxYjY2Y2NiYjE4Mjc0Li43ODk2YTI5ODdiZjdhOGUy
ZDNkY2U5NDQ0MTQzMjJhMDczNzA4MWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzUgQEAKKzIwMjEtMDctMTIgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBTTU5FR0wsIFVNTkVHTCwgVU1BRERMLCBhbmQgVU1TVUJMIGZv
ciBBUk02NCBhbmQgc2VsZWN0IHRoaXMgaW5zdHJ1Y3Rpb24gaW4gQWlyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcHJldmlvdXMgcGF0Y2hlcyBo
YXZlIGFscmVhZHkgYWRkZWQgTU5FRywgTUFERCwgTVNVQiwgU01BRERMLCBhbmQgU01TVUJMLiAK
KyAgICAgICAgVGhpcyBwYXRjaCBjb21wbGV0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgc2lnbmVkIG9y
IHVuc2lnbmVkIHZhcmlhbnRzIChTTU5FR0wsIAorICAgICAgICBVTU5FR0wsIFVNQURETCwgYW5k
IFVNU1VCTCkgb2YgdGhlbS4gSW4gYWRkaXRpb24sIHRoaXMgcGF0Y2ggcmVmYWN0b3JzIAorICAg
ICAgICB0aGUgaW1wbGVtZW50YXRpb24gYW5kIHRoZSBhc3NvY2lhdGl2ZSB0ZXN0IGNhc2VzIG9m
IE1BREQsIE1TVUIsIGFuZCBNTkVHIAorICAgICAgICB0byBiZSBtb3JlIHJlYWRhYmxlIGFuZCBt
YWludGFpbmFibGUgdy5yLnQgdGhlaXIgdmFyaWFudHMuCisKKyAgICAgICAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMjIyBTTU5FR0wvVU1ORUdMIFhkIFduIFdtICMj
IworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgU2lnbmVk
L1Vuc2lnbmVkIE11bHRpcGx5LU5lZ2F0ZSBMb25nIG11bHRpcGxpZXMgdHdvIDMyLWJpdCByZWdp
c3RlciB2YWx1ZXMsIAorICAgICAgICBuZWdhdGVzIHRoZSBwcm9kdWN0LCBhbmQgd3JpdGVzIHRo
ZSByZXN1bHQgdG8gdGhlIDY0LWJpdCBkZXN0aW5hdGlvbiByZWdpc3Rlci4gCisgICAgICAgIFRo
ZSBlcXVpdmFsZW50IHBhdHRlcm5zIGFyZSAKKworICAgICAgICBkID0gLShTRXh0MzIobikgKiBT
RXh0MzIobSkpIGFuZCBkID0gLShaRXh0MzIobikgKiBaRXh0MzIobSkpIHJlc3BlY3RpdmVseS4K
KworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50IEAwID0gUy9aRXh0MzIoVHJ1bmMo
QXJndW1lbnRSZWcoJXgwKSkpCisgICAgICAgIEludCBAMSA9IFMvWkV4dDMyKFRydW5jKEFyZ3Vt
ZW50UmVnKCV4MSkpKQorICAgICAgICBJbnQgQDIgPSBNdWwoQDAsIEAxKQorICAgICAgICBJbnQg
QDMgPSBOZWcoQDIpCisgICAgICAgIFZvaWRANCA9IFJldHVybihAMywgVGVybWluYWwpCisKKyAg
ICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMyICAgICAgJXgwLCAleDAs
ICAgICAgQDAKKyAgICAgICAgTW92ZTMyICAgICAgJXgxLCAleDEsICAgICAgQDEKKyAgICAgICAg
TXVsdGlwbHlOZWcgJXgwLCAleDEsICV4MCwgQDMKKyAgICAgICAgUmV0ICAgICAgICAgJXgwLCAg
ICAgICAgICAgQDQKKworICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBNdWx0
aXBseU5lZ1NpZ24vWmVyb0V4dGVuZCAgJXgwLCAleDEsICV4MCwgQDMKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICAgICAgICAgICV4MCwgICAgICAgICAgIEA0CisKKyAgICAgICAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjIFVNQURETCBYZCBXbiBXbSBYYSAjIyMK
KyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgVW5zaWduZWQgTXVs
dGlwbHktQWRkIExvbmcgbXVsdGlwbGllcyB0d28gMzItYml0IHJlZ2lzdGVyIHZhbHVlcywgYWRk
cyBhIDY0LWJpdCAKKyAgICAgICAgcmVnaXN0ZXIgdmFsdWUsIGFuZCB3cml0ZXMgdGhlIHJlc3Vs
dCB0byB0aGUgNjQtYml0IGRlc3RpbmF0aW9uIHJlZ2lzdGVyLiBUaGUgCisgICAgICAgIGVxdWl2
YWxlbnQgcGF0dGVybnMgYXJlIAorCisgICAgICAgIGQgPSBaRXh0MzIobikgKiBaRXh0MzIobSkg
KyBhIG9yIGQgPSBhICsgWkV4dDMyKG4pICogWkV4dDMyKG0pCisKKyAgICAgICAgR2l2ZW4gQjMg
SVI6CisgICAgICAgIEludCBAMCA9IFpFeHQzMihUcnVuYyhBcmd1bWVudFJlZygleDApKSkKKyAg
ICAgICAgSW50IEAxID0gWkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MSkpKQorICAgICAgICBJ
bnQgQDIgPSBBcmd1bWVudFJlZygleDIpCisgICAgICAgIEludCBAMyA9IE11bChAMCwgQDEpCisg
ICAgICAgIEludCBANCA9IEFkZChAMywgQDIpCisgICAgICAgIFZvaWRANSA9IFJldHVybihANCwg
VGVybWluYWwpCisKKyAgICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMy
ICAgICAgICAleDAsICV4MCwgICAgICAgICAgIEAxCisgICAgICAgIE1vdmUzMiAgICAgICAgJXgx
LCAleDEsICAgICAgICAgICBAMgorICAgICAgICBNdWx0aXBseUFkZCAgICV4MCwgJXgxLCAleDIs
ICV4MCwgQDQKKyAgICAgICAgUmV0NjQgICAgICAgICAleDAsICAgICAgICAgICAgICAgIEA1CisK
KyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAgICAgICAgTXVsdGlwbHlBZGRaZXJvRXh0
ZW5kICV4MCwgJXgxLCAleDIsICV4MCwgQDgKKyAgICAgICAgUmV0ICAgICAgICAgICAgICAgICAg
ICV4MCwgICAgICAgICAgICAgICAgQDkKKworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorICAgICAgICAjIyMgVU1TVUJMIFhkIFduIFdtIFhhICMjIworICAgICAgICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBVbnNpZ25lZCBNdWx0aXBseS1TdWJ0cmFjdCBM
b25nIG11bHRpcGxpZXMgdHdvIDMyLWJpdCByZWdpc3RlciB2YWx1ZXMsIHN1YnRyYWN0cyAKKyAg
ICAgICAgdGhlIHByb2R1Y3QgZnJvbSBhIDY0LWJpdCByZWdpc3RlciB2YWx1ZSwgYW5kIHdyaXRl
cyB0aGUgcmVzdWx0IHRvIHRoZSA2NC1iaXQgCisgICAgICAgIGRlc3RpbmF0aW9uIHJlZ2lzdGVy
LiBUaGUgZXF1aXZhbGVudCBwYXR0ZXJucyBhcmUgCisKKyAgICAgICAgZCA9IGEgLSBaRXh0MzIo
bikgKiBaRXh0MzIobSkKKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50IEAwID0g
VUV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MCkpKQorICAgICAgICBJbnQgQDEgPSBVRXh0MzIo
VHJ1bmMoQXJndW1lbnRSZWcoJXgxKSkpCisgICAgICAgIEludCBAMiA9IEFyZ3VtZW50UmVnKCV4
MikKKyAgICAgICAgSW50IEAzID0gTXVsKEAwLCBAMSkKKyAgICAgICAgSW50IEA0ID0gU3ViKEAy
LCBAMykKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkKKworICAgICAgICAv
LyBPbGQgb3B0aW1pemVkIEFJUgorICAgICAgICBNb3ZlMzIgICAgICAgICV4MCwgJXgwLCAgICAg
ICAgICAgQDEKKyAgICAgICAgTW92ZTMyICAgICAgICAleDEsICV4MSwgICAgICAgICAgIEAyCisg
ICAgICAgIE11bHRpcGx5U3ViICAgJXgwLCAleDEsICV4MiwgJXgwLCBANAorICAgICAgICBSZXQ2
NCAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDUKKworICAgICAgICAvLyBOZXcgb3B0aW1p
emVkIEFJUgorICAgICAgICBNdWx0aXBseVN1Ylplcm9FeHRlbmQgJXgwLCAleDEsICV4MiwgJXgw
LCBAOAorICAgICAgICBSZXQgICAgICAgICAgICAgICAgICAgJXgwLCAgICAgICAgICAgICAgICBA
OQorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlOZWczMik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om11bHRpcGx5QWRkWmVyb0V4dGVuZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlTdWJaZXJvRXh0ZW5kMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0aXBseU5lZzY0KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlOZWdTaWduRXh0ZW5kMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0aXBseU5lZ1plcm9FeHRlbmQzMik6
CisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVzdE11
bHRpcGx5QWRkU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkWmVy
b0V4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyKToK
KyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKEpT
Qzo6dGVzdE11bHRpcGx5TmVnU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRp
cGx5TmVnWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkU2lnbkV4
dGVuZDMyTGVmdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RNdWx0aXBseUFkZFNpZ25F
eHRlbmQzMlJpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgor
ICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMu
aDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0TXVsQWRkQXJnc0xl
ZnQpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NSaWdodCk6CisgICAgICAgICh0ZXN0TXVsQWRk
U2lnbkV4dGVuZDMyQXJnc0xlZnQpOgorICAgICAgICAodGVzdE11bEFkZFplcm9FeHRlbmQzMkFy
Z3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzUmlnaHQpOgorICAg
ICAgICAodGVzdE11bFN1YkFyZ3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxTdWJBcmdzUmlnaHQp
OgorICAgICAgICAodGVzdE11bFN1YkFyZ3NSaWdodDMyKToKKyAgICAgICAgKHRlc3RNdWxTdWJT
aWduRXh0ZW5kMzIpOgorICAgICAgICAodGVzdE11bFN1Ylplcm9FeHRlbmQzMik6CisgICAgICAg
ICh0ZXN0TXVsTmVnQXJnQXJnKToKKyAgICAgICAgKHRlc3RNdWxOZWdBcmdzKToKKyAgICAgICAg
KHRlc3RNdWxOZWdBcmdzMzIpOgorICAgICAgICAodGVzdE11bE5lZ1NpZ25FeHRlbmQzMik6Cisg
ICAgICAgICh0ZXN0TXVsTmVnWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKHRlc3RNdWxTdWJTaWdu
RXh0ZW5kMzJBcmdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy90ZXN0YjNfMy5jcHA6CisgICAg
ICAgIChhZGRBcmdUZXN0cyk6CisKIDIwMjEtMDctMTAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgQ29udGludWUgdG8gY29uc3VsdCBJbmxpbmVBY2Nlc3MncyBT
dHJ1Y3R1cmUgZXZlbiBhZnRlciBzd2l0Y2hpbmcgdG8gYSBzdHViIElDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4
IGRmNjVjYjYzNjFmNGFiMDVhMDU1MGUzMGUzNGE4NTc3OWFlZGFmN2YuLjNkODVjYmI4ZGI1MzNj
ODQwN2FhYjY1YTM5MDQ0ZjliYTJiNDAyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC03NzAsNyArNzcwLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBtdWx0aXBseU5lZzMyKFJlZ2lzdGVySUQgbXVsTGVmdCwg
UmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIubXN1YjwzMj4oZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIEFSTTY0UmVnaXN0ZXJz
Ojp6cik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1uZWc8MzI+KGRlc3QsIG11bExlZnQsIG11bFJp
Z2h0KTsKICAgICB9CiAKICAgICB2b2lkIG11bHRpcGx5QWRkNjQoUmVnaXN0ZXJJRCBtdWxMZWZ0
LCBSZWdpc3RlcklEIG11bFJpZ2h0LCBSZWdpc3RlcklEIHN1bW1hbmQsIFJlZ2lzdGVySUQgZGVz
dCkKQEAgLTc4Myw2ICs3ODMsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zbWFk
ZGwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIHN1bW1hbmQpOwogICAgIH0KIAorICAgIHZvaWQg
bXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIoUmVnaXN0ZXJJRCBtdWxMZWZ0LCBSZWdpc3RlcklEIG11
bFJpZ2h0LCBSZWdpc3RlcklEIHN1bW1hbmQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnVtYWRkbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCwgc3VtbWFuZCk7
CisgICAgfQorCiAgICAgdm9pZCBtdWx0aXBseVN1YjY0KFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVn
aXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBtaW51ZW5kLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tc3ViPDY0PihkZXN0LCBtdWxMZWZ0LCBtdWxSaWdo
dCwgbWludWVuZCk7CkBAIC03OTMsOSArNzk4LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuc21zdWJsKGRlc3QsIG11bExlZnQsIG11bFJpZ2h0LCBtaW51ZW5kKTsKICAgICB9CiAK
KyAgICB2b2lkIG11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVn
aXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBtaW51ZW5kLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci51bXN1YmwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQs
IG1pbnVlbmQpOworICAgIH0KKwogICAgIHZvaWQgbXVsdGlwbHlOZWc2NChSZWdpc3RlcklEIG11
bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm1zdWI8NjQ+KGRlc3QsIG11bExlZnQsIG11bFJpZ2h0LCBBUk02NFJl
Z2lzdGVyczo6enIpOworICAgICAgICBtX2Fzc2VtYmxlci5tbmVnPDY0PihkZXN0LCBtdWxMZWZ0
LCBtdWxSaWdodCk7CisgICAgfQorCisgICAgdm9pZCBtdWx0aXBseU5lZ1NpZ25FeHRlbmQzMihS
ZWdpc3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNtbmVnbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdo
dCk7CisgICAgfQorCisgICAgdm9pZCBtdWx0aXBseU5lZ1plcm9FeHRlbmQzMihSZWdpc3RlcklE
IG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnVtbmVnbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCk7CiAgICAg
fQogCiAgICAgdm9pZCBtdWx0aXBseVNpZ25FeHRlbmQzMihSZWdpc3RlcklEIGxlZnQsIFJlZ2lz
dGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggZDI5ZjkzNjBhMzY3ZDBhMTEzNjNlODdiODU2OTNl
NTg0ZjNlN2VhNC4uNzFjZDIzOTk4Y2U3YTI0MTIwMTk2ZDBmMDQ1NjI0NmQxNGQ5MThhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTkyMSw3
ICs5MjEsNyBAQCB2b2lkIHRlc3RNdWx0aXBseVNpZ25FeHRlbmQzMigpCiAgICAgfQogfQogCi12
b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMkxlZnQoKQordm9pZCB0ZXN0TXVsdGlwbHlB
ZGRTaWduRXh0ZW5kMzIoKQogewogICAgIC8vIGQgPSBTRXh0MzIobikgKiBTRXh0MzIobSkgKyBh
CiAgICAgYXV0byBhZGQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKQEAgLTk0
NCwyNSArOTQ0LDI4IEBAIHZvaWQgdGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyTGVmdCgpCiAg
ICAgfQogfQogCi12b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMlJpZ2h0KCkKK3ZvaWQg
dGVzdE11bHRpcGx5QWRkWmVyb0V4dGVuZDMyKCkKIHsKLSAgICAvLyBkID0gYSArIFNFeHQzMihu
KSAqIFNFeHQzMihtKQorICAgIC8vIGQgPSBaRXh0MzIobikgKiBaRXh0MzIobSkgKyBhCiAgICAg
YXV0byBhZGQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAotICAgICAgICBqaXQubXVsdGlwbHlBZGRTaWduRXh0
ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgaml0Lm11bHRpcGx5QWRkWmVy
b0V4dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjph
cmd1bWVudEdQUjEsIAogICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCAKLSAgICAg
ICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCiAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7CiAKICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAg
ICAgaml0LnJldCgpOwogICAgIH0pOwogCi0gICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRz
KCkpIHsKLSAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKLSAgICAgICAg
ICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKQotICAgICAgICAgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ2NF90PihhZGQsIGEsIG4sIG0pLCBhICsgc3RhdGljX2Nhc3Q8aW50NjRf
dD4obikgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtKSk7CisgICAgZm9yIChhdXRvIG4gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICAgICAgdWludDMyX3QgdW4gPSBuOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbTsK
KyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oYWRkLCBuLCBtLCBhKSwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4odW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odW0pICsgYSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMDkxLDcgKzEwOTQsNyBA
QCB2b2lkIHRlc3RTdWI2NEFyZ0ltbTY0KCkKIAogdm9pZCB0ZXN0TXVsdGlwbHlTdWJTaWduRXh0
ZW5kMzIoKQogewotICAgIC8vIGQgPSBhIC0gU0V4dDMyKG4pICogIFNFeHQzMihtKQorICAgIC8v
IGQgPSBhIC0gU0V4dDMyKG4pICogU0V4dDMyKG0pCiAgICAgYXV0byBzdWIgPSBjb21waWxlKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIApAQCAtMTExMiw2ICsxMTE1LDcxIEBAIHZvaWQgdGVzdE11bHRpcGx5U3ViU2lnbkV4dGVu
ZDMyKCkKICAgICB9CiB9CiAKK3ZvaWQgdGVzdE11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKCkKK3sK
KyAgICAvLyBkID0gYSAtIChaRXh0MzIobikgKiBaRXh0MzIobSkpCisgICAgYXV0byBzdWIgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKKworICAgICAgICBqaXQubXVsdGlwbHlTdWJaZXJvRXh0ZW5kMzIoR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKKyAg
ICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAg
ICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJh
bmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICAgICAg
dWludDMyX3QgdW4gPSBuOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oc3ViLCBhLCBuLCBtKSwgYSAtIHN0
YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE11bHRpcGx5TmVnU2ln
bkV4dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gLSAoU0V4dDMyKG4pICogU0V4dDMyKG0pKQorICAg
IGF1dG8gbmVnID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0Lm11bHRpcGx5TmVnU2lnbkV4
dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpCisg
ICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4obmVnLCBuLCBtKSwgLShzdGF0aWNf
Y2FzdDxpbnQ2NF90PihuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KG0pKSk7CisgICAgfQorfQor
Cit2b2lkIHRlc3RNdWx0aXBseU5lZ1plcm9FeHRlbmQzMigpCit7CisgICAgLy8gZCA9IC0gWkV4
dDMyKG4pICogWkV4dDMyKG0pCisgICAgYXV0byBuZWcgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAg
ICBqaXQubXVsdGlwbHlOZWdaZXJvRXh0ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBl
bWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisK
KyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8g
bSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgdWludDMyX3QgdW4gPSBuOworICAg
ICAgICAgICAgdWludDMyX3QgdW0gPSBtOworICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVp
bnQ2NF90PihuZWcsIG4sIG0pLCAtKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1bikgKiBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odW0pKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgdGVzdEV4
dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIoKQogewogICAgIHVpbnQzMl90IHNyYyA9IDB4ZjBmMGYw
ZjA7CkBAIC00MTY0LDkgKzQyMzIsMTIgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBX
VEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRlc3RTdWI2NEltbTY0
KCkpOwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW02NCgpKTsKIAotICAgIFJVTih0ZXN0TXVsdGlw
bHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkpOwotICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0
ZW5kMzJSaWdodCgpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKCkpOwor
ICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIoKSk7CiAgICAgUlVOKHRlc3RNdWx0
aXBseVN1YlNpZ25FeHRlbmQzMigpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5U3ViWmVyb0V4dGVu
ZDMyKCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlOZWdTaWduRXh0ZW5kMzIoKSk7CisgICAgUlVO
KHRlc3RNdWx0aXBseU5lZ1plcm9FeHRlbmQzMigpKTsKIAogICAgIFJVTih0ZXN0RXh0cmFjdFVu
c2lnbmVkQml0ZmllbGQzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxk
NjQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDJi
NTU2ZDcxODMzMzcyMGJmYTc4NzNjNzc5YmQyOTFmZDEyNjE3OTEuLmI2NGQ2ODVhYThjOGQ5MWFk
NGRjZTdiMDY1NjE2MDVmNTJmMjY3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCkBAIC0yNDg1LDYgKzI0ODUsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxv
d2VyKCkKICAgICB7CiAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CisKKyAgICAgICAgYXV0
byBpc01lcmdlYWJsZUIzT3Bjb2RlID0gWyZdIChWYWx1ZSogdiwgQjM6Ok9wY29kZSBiM09wY29k
ZSkgLT4gYm9vbCB7IAorICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IGIzT3Bjb2RlIHx8
ICFjYW5CZUludGVybmFsKHYpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH07CisK
ICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICBjYXNlIEIzOjpO
b3A6IHsKICAgICAgICAgICAgIC8vIFllcywgd2Ugd2lsbCB0b3RhbGx5IHNlZSBOb3AncyBiZWNh
dXNlIHNvbWUgcGhhc2VzIHdpbGwgcmVwbGFjZVdpdGhOb3AoKSBpbnN0ZWFkIG9mCkBAIC0yNTY3
LDcyICsyNTc2LDcxIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAg
ICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAg
ICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOwogICAgICAgICAgICAgVmFsdWUq
IHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CiAKLSAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlk
Rm9ybShNdWx0aXBseUFkZDY0LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRt
cCkgCi0gICAgICAgICAgICAgICAgPT0gaXNWYWxpZEZvcm0oTXVsdGlwbHlBZGRTaWduRXh0ZW5k
MzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSk7Ci0gICAgICAgICAg
ICBBaXI6Ok9wY29kZSBtdWx0aXBseUFkZE9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlw
bHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgIGlm
IChpc1ZhbGlkRm9ybShtdWx0aXBseUFkZE9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6
OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFpbW0ocmlnaHQpIHx8IG1f
dmFsdWVUb1RtcFtyaWdodF0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBs
eSA9IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wgeyAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh2LT5vcGNvZGUoKSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwodikpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxkKDApKSB8fCBtX2xvY2tlZC5jb250YWlucyh2LT5j
aGlsZCgxKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH07
Ci0KLSAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlTRXh0MzIgPSBbJl0gKFZhbHVlKiB2KSAt
PiBib29sIHsgCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi0+b3Bjb2RlKCkgPT0g
U0V4dDMyICYmIGNhbkJlSW50ZXJuYWwodik7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgLy8gTUFERDogZCA9IG4gKiBtICsgYQotICAgICAgICAgICAgICAg
ICAgICBhdXRvIHRyeUFwcGVuZE11bHRpcGx5QWRkID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUq
IHJpZ2h0KSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdHJ5TXVsdGlw
bHkobGVmdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5TGVmdCA9IGxlZnQtPmNoaWxkKDAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQgPSBsZWZ0LT5j
aGlsZCgxKTsKKyAgICAgICAgICAgIGF1dG8gdHJ5TXVsdGlwbHlBZGQgPSBbJl0gKCkgLT4gYm9v
bCB7CisgICAgICAgICAgICAgICAgaWYgKGltbShyaWdodCkgJiYgIW1fdmFsdWVUb1RtcFtyaWdo
dF0pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICAgICAgICAg
IC8vIE1BREQ6IGQgPSBuICogbSArIGEKKyAgICAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZE11
bHRpcGx5QWRkID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGxlZnQtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRl
cm5hbChsZWZ0KSB8fCBtX2xvY2tlZC5jb250YWlucyhyaWdodCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBs
eUxlZnQgPSBsZWZ0LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRp
cGx5UmlnaHQgPSBsZWZ0LT5jaGlsZCgxKTsKKyAgICAgICAgICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseUFkZDMyLCBNdWx0aXBseUFk
ZDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHRyeU5ld0Fp
ck9wY29kZSA9IFsmXSAoKSAtPiBBaXI6Ok9wY29kZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYWlyT3Bjb2RlICE9IE11bHRpcGx5QWRkNjQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNNQURE
TDogZCA9IFNFeHQzMihuKSAqIFNFeHQzMihtKSArIGEKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtdWx0aXBseUFkZE9wY29kZSA9PSBNdWx0aXBseUFkZDY0ICYmIHRyeVNFeHQzMihtdWx0
aXBseUxlZnQpICYmIHRyeVNFeHQzMihtdWx0aXBseVJpZ2h0KSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZChNdWx0aXBseUFkZFNpZ25FeHRlbmQzMiwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRtcChtdWx0aXBseUxlZnQtPmNoaWxkKDApKSwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChtdWx0aXBseVJpZ2h0LT5jaGlsZCgwKSks
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAocmlnaHQpLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG1fdmFsdWUpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxlZnQpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5UmlnaHQpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlMZWZ0LCBT
RXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlSaWdodCwgU0V4dDMyKSkgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5QWRkU2lnbkV4dGVuZDMy
OworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVU1BRERMOiBkID0gWkV4dDMyKG4pICogWkV4
dDMyKG0pICsgYQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNv
ZGUobXVsdGlwbHlMZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlS
aWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRp
cGx5QWRkWmVyb0V4dGVuZDMyOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6
T29wczsKKyAgICAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kKG11bHRpcGx5QWRkT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0KSwgdG1wKG11bHRpcGx5
UmlnaHQpLCB0bXAocmlnaHQpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBB
aXI6Ok9wY29kZSBuZXdBaXJPcGNvZGUgPSB0cnlOZXdBaXJPcGNvZGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG5ld0Fpck9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1w
LCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQo
bmV3QWlyT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSksIHRtcChtdWx0aXBseVJp
Z2h0LT5jaGlsZCgwKSksIHRtcChyaWdodCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxlZnQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21taXRJbnRlcm5hbChsZWZ0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRyeUFwcGVuZE11bHRpcGx5QWRkKGxlZnQsIHJp
Z2h0KSB8fCB0cnlBcHBlbmRNdWx0aXBseUFkZChyaWdodCwgbGVmdCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKGFpck9wY29kZSwgQXJnOjpUbXAsIEFy
Zzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMobXVs
dGlwbHlMZWZ0KSB8fCBtX2xvY2tlZC5jb250YWlucyhtdWx0aXBseVJpZ2h0KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5k
KGFpck9wY29kZSwgdG1wKG11bHRpcGx5TGVmdCksIHRtcChtdWx0aXBseVJpZ2h0KSwgdG1wKHJp
Z2h0KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwo
bGVmdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
IH07CiAKLSAgICAgICAgICAgIC8vIGFkZC13aXRoLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBTaGlm
dFR5cGUgYW1vdW50KQotICAgICAgICAgICAgYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6QjM6
Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bjb2RlIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2gg
KG9wY29kZSkgewotICAgICAgICAgICAgICAgIGNhc2UgU2hsOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQs
IG1fdmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBTU2hyOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRSaWdodFNoaWZ0MzIsIEFkZFJp
Z2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgICAgICBjYXNlIFpTaHI6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2lnbmVk
UmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsK
LSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWly
OjpPb3BzOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ5QXBw
ZW5kTXVsdGlwbHlBZGQobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZE11bHRpcGx5QWRkKHJpZ2h0
LCBsZWZ0KTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQWRk
QW5kU2hpZnQgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAg
ICAgICAgICAgaWYgKHRyeU11bHRpcGx5QWRkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICAvLyBhZGQtd2l0aC1zaGlmdCBQYXR0ZXJuOiBuICsgKG0gU2hpZnRUeXBl
IGFtb3VudCkKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQWRkV2l0aFNoaWZ0ID0gWyZdIChW
YWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBhdXRv
IHRyeU9wY29kZSA9IFsmXSAoQjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bjb2RlIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBTaGw6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlw
ZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgU1NocjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnlPcGNvZGVGb3JUeXBlKEFkZFJpZ2h0U2hpZnQzMiwgQWRkUmlnaHRTaGlmdDY0LCBtX3Zh
bHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFpTaHI6CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRVbnNpZ25lZFJpZ2h0U2hp
ZnQzMiwgQWRkVW5zaWduZWRSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWly
OjpPb3BzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKwogICAg
ICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZShyaWdodC0+b3Bjb2Rl
KCkpOwogICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwg
QXJnOjpUbXAsIEFyZzo6SW1tLCBBcmc6OlRtcCkpIAogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yNjQ5LDcgKzI2NTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKHRyeUFwcGVu
ZEFkZEFuZFNoaWZ0KGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRBZGRBbmRTaGlmdChyaWdodCwg
bGVmdCkpCisgICAgICAgICAgICBpZiAodHJ5QXBwZW5kQWRkV2l0aFNoaWZ0KGxlZnQsIHJpZ2h0
KSB8fCB0cnlBcHBlbmRBZGRXaXRoU2hpZnQocmlnaHQsIGxlZnQpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgYXBwZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGREb3Vi
bGUsIEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4obGVmdCwgcmlnaHQpOwpAQCAtMjY2MCw3MiArMjY2
OCw2NCBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGls
ZCgwKTsKICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOwogCi0g
ICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseVN1Yk9wY29kZSA9IHRyeU9wY29kZUZvclR5
cGUoTXVsdGlwbHlTdWIzMiwgTXVsdGlwbHlTdWI2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAg
ICAgICAgIGlmIChtdWx0aXBseVN1Yk9wY29kZSAhPSBBaXI6Ok9vcHMKLSAgICAgICAgICAgICAg
ICAmJiBpc1ZhbGlkRm9ybShtdWx0aXBseVN1Yk9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBB
cmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBseSA9
IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICBpZiAodi0+b3Bj
b2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKHYpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFp
bnModi0+Y2hpbGQoMCkpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxkKDEpKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5k
TXVsdGlwbHlTdWIgPSBbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgaWYgKGltbShy
aWdodCkgJiYgIW1fdmFsdWVUb1RtcFtyaWdodF0pCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICAgICAgICAgIC8vIE1TVUI6IGQgPSBhIC0gbiAqIG0KLSAgICAg
ICAgICAgICAgICBpZiAoKCFpbW0ocmlnaHQpIHx8IG1fdmFsdWVUb1RtcFtyaWdodF0pICYmIHRy
eU11bHRpcGx5KHJpZ2h0KSkgewotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlM
ZWZ0ID0gcmlnaHQtPmNoaWxkKDApOwotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlw
bHlSaWdodCA9IHJpZ2h0LT5jaGlsZCgxKTsKLQorICAgICAgICAgICAgICAgIGlmIChtX2xvY2tl
ZC5jb250YWlucyhsZWZ0KSB8fCByaWdodC0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVy
bmFsKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSByaWdodC0+Y2hpbGQoMCk7CisgICAgICAgICAg
ICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQgPSByaWdodC0+Y2hpbGQoMSk7CisgICAgICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseVN1
YjMyLCBNdWx0aXBseVN1YjY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGF1
dG8gdHJ5TmV3QWlyT3Bjb2RlID0gWyZdICgpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGFpck9wY29kZSAhPSBNdWx0aXBseVN1YjY0KQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAgICAgICAgLy8gU01TVUJM
OiBkID0gYSAtIFNFeHQzMihuKSAqIFNFeHQzMihtKQotICAgICAgICAgICAgICAgICAgICBpZiAo
bXVsdGlwbHlTdWJPcGNvZGUgPT0gTXVsdGlwbHlTdWI2NAotICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgaXNWYWxpZEZvcm0oTXVsdGlwbHlTdWJTaWduRXh0ZW5kMzIsIEFyZzo6VG1wLCBBcmc6
OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byB0cnlTRXh0MzIgPSBbJl0gKFZhbHVlKiB2KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHYtPm9wY29kZSgpICE9IFNFeHQzMiB8fCAhY2FuQmVJbnRlcm5hbCh2KSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kTXVsdGlwbHlTdWJTaWduRXh0ZW5k
MzIgPSBbJl0gKCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0
cnlTRXh0MzIobXVsdGlwbHlMZWZ0KSB8fCAhdHJ5U0V4dDMyKG11bHRpcGx5UmlnaHQpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kKE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5TGVmdC0+Y2hpbGQoMCkpLCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5UmlnaHQtPmNoaWxkKDAp
KSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChsZWZ0KSwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChtX3ZhbHVlKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5TGVmdCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9OwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTXVsdGlwbHlTdWJTaWduRXh0ZW5k
MzIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVs
dGlwbHlMZWZ0LCBTRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlSaWdodCwg
U0V4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlTdWJTaWdu
RXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIC8vIFVNU1VCTDogZCA9IGEgLSBaRXh0MzIo
bikgKiBaRXh0MzIobSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNv
ZGUobXVsdGlwbHlMZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlS
aWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlT
dWJaZXJvRXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7Cisg
ICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgICAgICBhcHBlbmQobXVsdGlwbHlT
dWJPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQpLCB0bXAobXVsdGlwbHlSaWdodCksIHRtcChsZWZ0
KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBuZXdBaXJPcGNv
ZGUgPSB0cnlOZXdBaXJPcGNvZGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0o
bmV3QWlyT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKG5ld0Fpck9wY29kZSwgdG1wKG11bHRpcGx5TGVm
dC0+Y2hpbGQoMCkpLCB0bXAobXVsdGlwbHlSaWdodC0+Y2hpbGQoMCkpLCB0bXAobGVmdCksIHRt
cChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5
TGVmdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5UmlnaHQp
OwogICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBzdWItd2l0aC1z
aGlmdCBQYXR0ZXJuOiBuIC0gKG0gU2hpZnRUeXBlIGFtb3VudCkKLSAgICAgICAgICAgIGF1dG8g
dHJ5T3Bjb2RlID0gWyZdIChKU0M6OkIzOjpPcGNvZGUgb3Bjb2RlKSAtPiBBaXI6Ok9wY29kZSB7
Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKLSAgICAgICAgICAgICAgICBjYXNl
IFNobDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViTGVm
dFNoaWZ0MzIsIFN1YkxlZnRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOwotICAgICAgICAgICAg
ICAgIGNhc2UgU1NocjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5
cGUoU3ViUmlnaHRTaGlmdDMyLCBTdWJSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBaU2hyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5
T3Bjb2RlRm9yVHlwZShTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMiwgU3ViVW5zaWduZWRSaWdodFNo
aWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShhaXJPcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRt
cCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhtdWx0aXBseUxlZnQpIHx8
IG1fbG9ja2VkLmNvbnRhaW5zKG11bHRpcGx5UmlnaHQpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYXBwZW5kKGFpck9wY29kZSwgdG1wKG11bHRp
cGx5TGVmdCksIHRtcChtdWx0aXBseVJpZ2h0KSwgdG1wKGxlZnQpLCB0bXAobV92YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH07CiAKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRN
dWx0aXBseVN1YigpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgLy8g
c3ViLXdpdGgtc2hpZnQgUGF0dGVybjogbiAtIChtIFNoaWZ0VHlwZSBhbW91bnQpCiAgICAgICAg
ICAgICBhdXRvIHRyeUFwcGVuZFN1YkFuZFNoaWZ0ID0gWyZdICgpIC0+IGJvb2wgeworICAgICAg
ICAgICAgICAgIGF1dG8gdHJ5T3Bjb2RlID0gWyZdIChCMzo6T3Bjb2RlIG9wY29kZSkgLT4gQWly
OjpPcGNvZGUgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAg
ICAgICAgICAgICAgICBjYXNlIFNobDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnlPcGNvZGVGb3JUeXBlKFN1YkxlZnRTaGlmdDMyLCBTdWJMZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+
dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViUmlnaHRTaGlmdDMyLCBTdWJSaWdo
dFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgWlNo
cjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YlVu
c2lnbmVkUmlnaHRTaGlmdDMyLCBTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBBaXI6Ok9vcHM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9OworCiAgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2Rl
KHJpZ2h0LT5vcGNvZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNv
ZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3NTAsMjAgKzI3NTAsNDUgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTmVnOiB7Ci0gICAgICAgICAgICBBaXI6Ok9wY29k
ZSBtdWx0aXBseU5lZ09wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlOZWczMiwgTXVs
dGlwbHlOZWc2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgIGlmIChtdWx0aXBseU5l
Z09wY29kZSAhPSBBaXI6Ok9vcHMKLSAgICAgICAgICAgICAgICAmJiBpc1ZhbGlkRm9ybShtdWx0
aXBseU5lZ09wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkKLSAgICAgICAgICAg
ICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gTXVsCi0gICAgICAgICAgICAg
ICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKLSAgICAgICAgICAgICAg
ICBWYWx1ZSogbXVsdGlwbHlPcGVyYXRpb24gPSBtX3ZhbHVlLT5jaGlsZCgwKTsKLSAgICAgICAg
ICAgICAgICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbXVsdGlwbHlPcGVyYXRpb24tPmNoaWxkKDAp
OwotICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0ID0gbXVsdGlwbHlPcGVyYXRp
b24tPmNoaWxkKDEpOwotICAgICAgICAgICAgICAgIGlmICghbV9sb2NrZWQuY29udGFpbnMobXVs
dGlwbHlMZWZ0KSAmJiAhbV9sb2NrZWQuY29udGFpbnMobXVsdGlwbHlSaWdodCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kKG11bHRpcGx5TmVnT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0
KSwgdG1wKG11bHRpcGx5UmlnaHQpLCB0bXAobV92YWx1ZSkpOwotICAgICAgICAgICAgICAgICAg
ICBjb21taXRJbnRlcm5hbChtdWx0aXBseU9wZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kTXVsdGlwbHlOZWcgPSBbJl0gKCkg
LT4gYm9vbCB7CisgICAgICAgICAgICAgICAgLy8gTU5FRyA6IGQgPSAtKG4gKiBtKQorICAgICAg
ICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5C
ZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSBtX3ZhbHVlLT5j
aGlsZCgwKS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQg
PSBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSk7CisgICAgICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseU5lZzMyLCBNdWx0aXBseU5l
ZzY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGF1dG8gdHJ5TmV3QWlyT3Bj
b2RlID0gWyZdICgpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFp
ck9wY29kZSAhPSBNdWx0aXBseU5lZzY0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEFpcjo6T29wczsKKyAgICAgICAgICAgICAgICAgICAgLy8gU01ORUcgOiBkID0gLShTRXh0MzIo
bikgKiBTRXh0MzIobSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChpc01lcmdlYWJsZUIzT3Bj
b2RlKG11bHRpcGx5TGVmdCwgU0V4dDMyKSAmJiBpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5
UmlnaHQsIFNFeHQzMikpIAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5
TmVnU2lnbkV4dGVuZDMyOworICAgICAgICAgICAgICAgICAgICAvLyBaTU5FRzogZCA9IC0oWkV4
dDMyKG4pICogWkV4dDMyKG0pKQorICAgICAgICAgICAgICAgICAgICBpZiAoaXNNZXJnZWFibGVC
M09wY29kZShtdWx0aXBseUxlZnQsIFpFeHQzMikgJiYgaXNNZXJnZWFibGVCM09wY29kZShtdWx0
aXBseVJpZ2h0LCBaRXh0MzIpKSAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNdWx0
aXBseU5lZ1plcm9FeHRlbmQzMjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29w
czsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgbmV3
QWlyT3Bjb2RlID0gdHJ5TmV3QWlyT3Bjb2RlKCk7CisgICAgICAgICAgICAgICAgaWYgKGlzVmFs
aWRGb3JtKG5ld0Fpck9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kKG5ld0Fpck9wY29kZSwgdG1wKG11bHRpcGx5TGVmdC0+
Y2hpbGQoMCkpLCB0bXAobXVsdGlwbHlSaWdodC0+Y2hpbGQoMCkpLCB0bXAobV92YWx1ZSkpOwor
ICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxlZnQpOworICAgICAg
ICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseVJpZ2h0KTsKKyAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKGFpck9wY29kZSwgQXJnOjpUbXAsIEFy
Zzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMobXVsdGlwbHlMZWZ0KSB8fCBtX2xv
Y2tlZC5jb250YWlucyhtdWx0aXBseVJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIGFwcGVuZChhaXJPcGNvZGUsIHRtcChtdWx0aXBseUxl
ZnQpLCB0bXAobXVsdGlwbHlSaWdodCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAg
Y29tbWl0SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHRyeUFwcGVuZE11bHRp
cGx5TmVnKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhcHBlbmRV
bk9wPE5lZzMyLCBOZWc2NCwgTmVnYXRlRG91YmxlLCBOZWdhdGVGbG9hdD4obV92YWx1ZS0+Y2hp
bGQoMCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggMDVkYzNhOWZlYzQ2OTY4NDAzMWQ4OGQ3M2Vj
MzdjYzA1OGJlMWY1Ny4uNjRjYTc3N2JmMDY1ZWVmNzg3NmE5MDkyODQ5YWQ1NWI4MjQ5YmQ3YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBA
IC0yNTQsNiArMjU0LDkgQEAgYXJtNjQ6IE11bHRpcGx5QWRkNjQgVTpHOjY0LCBVOkc6NjQsIFU6
Rzo2NCwgRDpHOjY0CiBhcm02NDogTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIgVTpHOjMyLCBVOkc6
MzIsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcCwgVG1wCiAKK2FybTY0OiBNdWx0
aXBseUFkZFplcm9FeHRlbmQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjY0LCBEOkc6NjQKKyAgICBU
bXAsIFRtcCwgVG1wLCBUbXAKKwogYXJtNjQ6IE11bHRpcGx5U3ViMzIgVTpHOjMyLCBVOkc6MzIs
IFU6RzozMiwgWkQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAsIFRtcAogCkBAIC0yNjMsMTMgKzI2
NiwyMiBAQCBhcm02NDogTXVsdGlwbHlTdWI2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6
NjQKIGFybTY0OiBNdWx0aXBseVN1YlNpZ25FeHRlbmQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjY0
LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wLCBUbXAKIAorYXJtNjQ6IE11bHRpcGx5U3ViWmVy
b0V4dGVuZDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBU
bXAsIFRtcAorCiBhcm02NDogTXVsdGlwbHlOZWczMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgog
ICAgIFRtcCwgVG1wLCBUbXAKIAogYXJtNjQ6IE11bHRpcGx5TmVnNjQgVTpHOjY0LCBVOkc6NjQs
IFpEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCiAKLWFybTY0OiBNdWx0aXBseVNpZ25FeHRlbmQz
MiBVOkc6MzIsIFU6RzozMiwgWkQ6Rzo2NAorYXJtNjQ6IE11bHRpcGx5TmVnU2lnbkV4dGVuZDMy
IFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgVG1wCisKK2FybTY0OiBNdWx0
aXBseU5lZ1plcm9FeHRlbmQzMiBVOkc6MzIsIFU6RzozMiwgRDpHOjY0CisgICAgVG1wLCBUbXAs
IFRtcAorCithcm02NDogTXVsdGlwbHlTaWduRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2
NAogICAgIFRtcCwgVG1wLCBUbXAKIAogYXJtNjQ6IERpdjMyIFU6RzozMiwgVTpHOjMyLCBaRDpH
OjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXggOWM3ZDI5OThlMmE4OTBmNWVkZTcw
ZWI2YjllMGY5OTE5NDdmYTExZi4uZjhiZTc3OTNjZWFkNWQyM2RkOTYwZTUxNDBmYWY4NzA0Y2Vh
ZjRjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApAQCAtOTEzLDEzICs5MTMsMTggQEAg
dm9pZCB0ZXN0TXVsQWRkQXJnc0xlZnQzMigpOwogdm9pZCB0ZXN0TXVsQWRkQXJnc1JpZ2h0MzIo
KTsKIHZvaWQgdGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KCk7CiB2b2lkIHRlc3RNdWxB
ZGRTaWduRXh0ZW5kMzJBcmdzUmlnaHQoKTsKK3ZvaWQgdGVzdE11bEFkZFplcm9FeHRlbmQzMkFy
Z3NMZWZ0KCk7Cit2b2lkIHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzUmlnaHQoKTsKIHZvaWQg
dGVzdE11bFN1YkFyZ3NMZWZ0KCk7CiB2b2lkIHRlc3RNdWxTdWJBcmdzUmlnaHQoKTsKIHZvaWQg
dGVzdE11bFN1YkFyZ3NMZWZ0MzIoKTsKIHZvaWQgdGVzdE11bFN1YkFyZ3NSaWdodDMyKCk7Ci12
b2lkIHRlc3RNdWxTdWJTaWduRXh0ZW5kMzJBcmdzKCk7Cit2b2lkIHRlc3RNdWxTdWJTaWduRXh0
ZW5kMzIoKTsKK3ZvaWQgdGVzdE11bFN1Ylplcm9FeHRlbmQzMigpOwogdm9pZCB0ZXN0TXVsTmVn
QXJncygpOwogdm9pZCB0ZXN0TXVsTmVnQXJnczMyKCk7Cit2b2lkIHRlc3RNdWxOZWdTaWduRXh0
ZW5kMzIoKTsKK3ZvaWQgdGVzdE11bE5lZ1plcm9FeHRlbmQzMigpOwogdm9pZCB0ZXN0TXVsQXJn
RG91YmxlKGRvdWJsZSk7CiB2b2lkIHRlc3RNdWxBcmdzRG91YmxlKGRvdWJsZSwgZG91YmxlKTsK
IHZvaWQgdGVzdENhbGxTaW1wbGVEb3VibGUoZG91YmxlLCBkb3VibGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXggOGY2MGZjYzRhNGEyZWYzNTQyZTY3NDFjMjUwYWU5
Zjk4ZGI2ZGFiNi4uMTcxYjgzNzgxMzI1N2YxZDNlYzA2MmU5ZjY4NzkxZWI3YTJkMjBiNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCkBAIC04NzQsMTkgKzg3NCw2IEBAIHZv
aWQgdGVzdE11bEFyZ05lZ0FyZyhpbnQgYSwgaW50IGIpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgKiAoLWIpKTsKIH0KIAotdm9pZCB0ZXN0TXVsTmVnQXJn
QXJnKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBuZWdB
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBhcmdBKTsKLSAg
ICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdp
bigpLCBuZWdBLCBhcmdCKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJv
YywgYSwgYikgPT0gKC1hKSAqIGIpOwotfQotCiB2b2lkIHRlc3RNdWxBcmdJbW0oaW50NjRfdCBh
LCBpbnQ2NF90IGIpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMDE0LDcgKzEwMDEsNyBA
QCB2b2lkIHRlc3RNdWxBZGRBcmdzTGVmdCgpCiAgICAgZm9yIChhdXRvIGEgOiB0ZXN0VmFsdWVz
KSB7CiAgICAgICAgIGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewogICAgICAgICAgICAgZm9y
IChhdXRvIGMgOiB0ZXN0VmFsdWVzKQotICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQ2
NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAqIGIudmFs
dWUgKyBjLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4o
KmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpLCBhLnZhbHVlICogYi52YWx1ZSArIGMu
dmFsdWUpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTAzOSwxNCArMTAyNiwxNCBAQCB2b2lk
IHRlc3RNdWxBZGRBcmdzUmlnaHQoKQogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykgewog
ICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgICAgIGZvciAoYXV0
byBjIDogdGVzdFZhbHVlcykKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4o
KmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKyBiLnZhbHVlICog
Yy52YWx1ZSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KCpjb2Rl
LCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSwgYS52YWx1ZSArIGIudmFsdWUgKiBjLnZhbHVl
KTsKICAgICAgICAgfQogICAgIH0KIH0KIAogdm9pZCB0ZXN0TXVsQWRkU2lnbkV4dGVuZDMyQXJn
c0xlZnQoKQogewotICAgIC8vIGQgPSBTRXh0MzIobikgKiAgU0V4dDMyKG0pICsgYQorICAgIC8v
IGQgPSBTRXh0MzIobikgKiBTRXh0MzIobSkgKyBhCiAgICAgUHJvY2VkdXJlIHByb2M7CiAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKIApAQCAtMTExOCw2ICsxMTA1LDg0
IEBAIHZvaWQgdGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NSaWdodCgpCiAgICAgfQogfQogCit2
b2lkIHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzTGVmdCgpCit7CisgICAgLy8gZCA9IFpFeHQz
MihuKSAqIFpFeHQzMihtKSArIGEKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgVmFsdWUqIG1WYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisgICAgVmFsdWUq
IGFWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOwor
ICAgIFZhbHVlKiBhZGRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwgbXVsVmFsdWUsIGFWYWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZFZhbHVlKTsKKworICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKCpjb2RlLCAidW1hZGRsIik7CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
ICAgICB1aW50MzJfdCB1biA9IG4udmFsdWU7CisgICAgICAgICAgICAgICAgdWludDMyX3QgdW0g
PSBtLnZhbHVlOworICAgICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+
KCpjb2RlLCB1biwgdW0sIGEudmFsdWUpOworICAgICAgICAgICAgICAgIGludDY0X3QgcmhzID0g
c3RhdGljX2Nhc3Q8aW50NjRfdD4odW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odW0pICsgYS52
YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsQWRkWmVyb0V4dGVuZDMyQXJnc1Jp
Z2h0KCkKK3sKKyAgICAvLyBkID0gYSArIFpFeHQzMihuKSAqIFpFeHQzMihtKQorICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICBWYWx1ZSogYVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBuVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAgIFZhbHVlKiBt
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOworCisg
ICAgVmFsdWUqIG11bFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9y
aWdpbigpLCBuVmFsdWUsIG1WYWx1ZSk7CisgICAgVmFsdWUqIGFkZFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBhVmFsdWUsIG11bFZhbHVlKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWRk
VmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlz
QVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJ1bWFkZGwiKTsK
KworICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0
byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVuID0gbi52YWx1ZTsKKyAg
ICAgICAgICAgICAgICB1aW50MzJfdCB1bSA9IG0udmFsdWU7CisgICAgICAgICAgICAgICAgaW50
NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIHVuLCB1bSk7CisgICAg
ICAgICAgICAgICAgaW50NjRfdCByaHMgPSBhLnZhbHVlICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
dW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odW0pOworICAgICAgICAgICAgICAgIENIRUNLKGxo
cyA9PSByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIHRl
c3RNdWxBZGRBcmdzTGVmdDMyKCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTExOTQsNyAr
MTI1OSw3IEBAIHZvaWQgdGVzdE11bFN1YkFyZ3NMZWZ0KCkKICAgICBmb3IgKGF1dG8gYSA6IHRl
c3RWYWx1ZXMpIHsKICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpCi0gICAgICAgICAgICAgICAgQ0hFQ0soaW52
b2tlPGludDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVl
ICogYi52YWx1ZSAtIGMudmFsdWUpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSksIGEudmFsdWUgKiBiLnZh
bHVlIC0gYy52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMjE5LDcgKzEyODQsNyBA
QCB2b2lkIHRlc3RNdWxTdWJBcmdzUmlnaHQoKQogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVl
cykgewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byBjIDogdGVzdFZhbHVlcykKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50
NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgLSBiLnZh
bHVlICogYy52YWx1ZSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+
KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSwgYS52YWx1ZSAtIGIudmFsdWUgKiBj
LnZhbHVlKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEyNzUsMTIgKzEzNDAsMTIgQEAgdm9p
ZCB0ZXN0TXVsU3ViQXJnc1JpZ2h0MzIoKQogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykg
ewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgICAgIGZvciAo
YXV0byBjIDogdGVzdFZhbHVlcykKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJf
dD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgLSBiLnZhbHVl
ICogYy52YWx1ZSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpj
b2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSwgYS52YWx1ZSAtIGIudmFsdWUgKiBjLnZh
bHVlKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMy
QXJncygpCit2b2lkIHRlc3RNdWxTdWJTaWduRXh0ZW5kMzIoKQogewogICAgIC8vIGQgPSBhIC0g
U0V4dDMyKG4pICogU0V4dDMyKG0pCiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMzE3LDYgKzEz
ODIsNjIgQEAgdm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyQXJncygpCiAgICAgfQogfQogCit2
b2lkIHRlc3RNdWxTdWJaZXJvRXh0ZW5kMzIoKQoreworICAgIC8vIGQgPSBhIC0gWkV4dDMyKG4p
ICogWkV4dDMyKG0pCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhVmFsdWUgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHBy
b2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpKTsKKyAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKSkpOworCisgICAgVmFsdWUqIG11bFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBuVmFsdWUsIG1WYWx1ZSk7CisgICAgVmFsdWUq
IHN1YlZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBh
VmFsdWUsIG11bFZhbHVlKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgc3ViVmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsICJ1bXN1YmwiKTsKKworICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgICAgIHVpbnQz
Ml90IHVuID0gbi52YWx1ZTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCB1bSA9IG0udmFsdWU7
CisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEu
dmFsdWUsIHVuLCB1bSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBhLnZhbHVlIC0g
c3RhdGljX2Nhc3Q8aW50NjRfdD4odW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odW0pOworICAg
ICAgICAgICAgICAgIENIRUNLKGxocyA9PSByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIHRlc3RNdWxOZWdBcmdBcmcoaW50MzJfdCBhLCBpbnQzMl90IGIp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKworICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVl
KiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZhbHVlKiBuZWdBID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBhcmdBKTsKKyAgICBWYWx1ZSogcmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBuZWdBLCBhcmdC
KTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAoaXNB
Uk02NCgpICYmIEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA+IDEpCisgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibW5lZyIpOworICAgIENIRUNLX0VRKGludm9r
ZTxpbnQzMl90PigqY29kZSwgYSwgYiksICgtYSkgKiBiKTsKK30KKwogdm9pZCB0ZXN0TXVsTmVn
QXJncygpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMzMwLDExICsxNDUxLDEzIEBAIHZv
aWQgdGVzdE11bE5lZ0FyZ3MoKQogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7CiAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpICYmIEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0
TGV2ZWwoKSA+IDEpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibW5lZyIp
OwogCiAgICAgYXV0byB0ZXN0VmFsdWVzID0gaW50NjRPcGVyYW5kcygpOwogICAgIGZvciAoYXV0
byBhIDogdGVzdFZhbHVlcykgewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsK
LSAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1
ZSkgPT0gLShhLnZhbHVlICogYi52YWx1ZSkpOworICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlKSwgLShhLnZhbHVlICogYi52YWx1ZSkp
OwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTM1NCwxMSArMTQ3Nyw4MiBAQCB2b2lkIHRlc3RN
dWxOZWdBcmdzMzIoKQogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBhZGRlZCk7CiAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKKyAgICBpZiAoaXNBUk02NCgpICYmIEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwo
KSA+IDEpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibW5lZyIpOwogCiAg
ICAgYXV0byB0ZXN0VmFsdWVzID0gaW50MzJPcGVyYW5kcygpOwogICAgIGZvciAoYXV0byBhIDog
dGVzdFZhbHVlcykgewotICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKLSAgICAg
ICAgICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSkgPT0g
LShhLnZhbHVlICogYi52YWx1ZSkpOworICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMp
CisgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIu
dmFsdWUpLCAtKGEudmFsdWUgKiBiLnZhbHVlKSk7CisgICAgfQorfQorCit2b2lkIHRlc3RNdWxO
ZWdTaWduRXh0ZW5kMzIoKQoreworICAgIC8vIGQgPSAtIChTRXh0MzIobikgKiBTRXh0MzIobSkp
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBTRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSk7CisgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgIHByb2MsIFNFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOworICAg
IFZhbHVlKiBuZWdWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmln
aW4oKSwgbXVsVmFsdWUpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBuZWdWYWx1ZSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bigqY29kZSwgInNtbmVnbCIpOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLnZhbHVlLCBtLnZhbHVlKTsK
KyAgICAgICAgICAgIGludDY0X3QgcmhzID0gLShzdGF0aWNfY2FzdDxpbnQ2NF90PihuLnZhbHVl
KSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KG0udmFsdWUpKTsKKyAgICAgICAgICAgIENIRUNLKGxo
cyA9PSByaHMpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RNdWxOZWdaZXJvRXh0
ZW5kMzIoKQoreworICAgIC8vIGQgPSAtIChaRXh0MzIobikgKiBaRXh0MzIobSkpCisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9j
LCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKSk7CisgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOworICAgIFZhbHVlKiBu
ZWdWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgbXVs
VmFsdWUpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCBuZWdWYWx1ZSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwg
InVtbmVnbCIpOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIHVpbnQzMl90
IHVuID0gbi52YWx1ZTsKKyAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbS52YWx1ZTsKKyAgICAg
ICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCB1biwgdW0pOworICAg
ICAgICAgICAgaW50NjRfdCByaHMgPSAtKHN0YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRp
Y19jYXN0PGludDY0X3Q+KHVtKSk7CisgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKICAg
ICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjNfMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzMuY3BwCmluZGV4
IDcyYjA4ZDE2YWE3MjljZGI4MzQ2ZmQyZmFhZmNhZDllMDAzOWQ2ZWIuLmMxN2FiYzczNjM0MGQ1
YWJiMzY0YzQzZjVjODYwNzEwODY2ZGE0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjNfMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
M18zLmNwcApAQCAtMzM3MCwxMyArMzM3MCwxOCBAQCB2b2lkIGFkZEFyZ1Rlc3RzKGNvbnN0IGNo
YXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKICAg
ICBSVU4odGVzdE11bEFkZEFyZ3NSaWdodDMyKCkpOwogICAgIFJVTih0ZXN0TXVsQWRkU2lnbkV4
dGVuZDMyQXJnc0xlZnQoKSk7CiAgICAgUlVOKHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzUmln
aHQoKSk7CisgICAgUlVOKHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzTGVmdCgpKTsKKyAgICBS
VU4odGVzdE11bEFkZFplcm9FeHRlbmQzMkFyZ3NSaWdodCgpKTsKICAgICBSVU4odGVzdE11bFN1
YkFyZ3NMZWZ0KCkpOwogICAgIFJVTih0ZXN0TXVsU3ViQXJnc1JpZ2h0KCkpOwogICAgIFJVTih0
ZXN0TXVsU3ViQXJnc0xlZnQzMigpKTsKICAgICBSVU4odGVzdE11bFN1YkFyZ3NSaWdodDMyKCkp
OwotICAgIFJVTih0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyQXJncygpKTsKKyAgICBSVU4odGVzdE11
bFN1YlNpZ25FeHRlbmQzMigpKTsKKyAgICBSVU4odGVzdE11bFN1Ylplcm9FeHRlbmQzMigpKTsK
ICAgICBSVU4odGVzdE11bE5lZ0FyZ3MoKSk7CiAgICAgUlVOKHRlc3RNdWxOZWdBcmdzMzIoKSk7
CisgICAgUlVOKHRlc3RNdWxOZWdTaWduRXh0ZW5kMzIoKSk7CisgICAgUlVOKHRlc3RNdWxOZWda
ZXJvRXh0ZW5kMzIoKSk7CiAgICAgCiAgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnTmVnQXJnLCBp
bnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSkKICAgICBSVU5fQklOQVJZKHRlc3RNdWxO
ZWdBcmdBcmcsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433343</attachid>
            <date>2021-07-12 12:50:26 -0700</date>
            <delta_ts>2021-07-12 13:10:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227857-20210712145025.patch</filename>
            <type>text/plain</type>
            <size>45644</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Zjk2NzYxZTk2ZTViNTEyOWEzMTg1ZjQ0NjkxYjY2Y2NiYjE4Mjc0Li41ZmM4ZDdiZGU2NWM3Yjli
MmI3YjlkNDk1NDNlNWUyYWQ1Mzk2YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzUgQEAKKzIwMjEtMDctMTIgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBTTU5FR0wsIFVNTkVHTCwgVU1BRERMLCBhbmQgVU1TVUJMIGZv
ciBBUk02NCBhbmQgc2VsZWN0IHRoaXMgaW5zdHJ1Y3Rpb24gaW4gQWlyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcHJldmlvdXMgcGF0Y2hlcyBo
YXZlIGFscmVhZHkgYWRkZWQgTU5FRywgTUFERCwgTVNVQiwgU01BRERMLCBhbmQgU01TVUJMLiAK
KyAgICAgICAgVGhpcyBwYXRjaCBjb21wbGV0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgc2lnbmVkIG9y
IHVuc2lnbmVkIHZhcmlhbnRzIChTTU5FR0wsIAorICAgICAgICBVTU5FR0wsIFVNQURETCwgYW5k
IFVNU1VCTCkgb2YgdGhlbS4gSW4gYWRkaXRpb24sIHRoaXMgcGF0Y2ggcmVmYWN0b3JzIAorICAg
ICAgICB0aGUgaW1wbGVtZW50YXRpb24gYW5kIHRoZSBhc3NvY2lhdGl2ZSB0ZXN0IGNhc2VzIG9m
IE1BREQsIE1TVUIsIGFuZCBNTkVHIAorICAgICAgICB0byBiZSBtb3JlIHJlYWRhYmxlIGFuZCBt
YWludGFpbmFibGUgdy5yLnQgdGhlaXIgdmFyaWFudHMuCisKKyAgICAgICAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMjIyBTTU5FR0wvVU1ORUdMIFhkIFduIFdtICMj
IworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgU2lnbmVk
L1Vuc2lnbmVkIE11bHRpcGx5LU5lZ2F0ZSBMb25nIG11bHRpcGxpZXMgdHdvIDMyLWJpdCByZWdp
c3RlciB2YWx1ZXMsIAorICAgICAgICBuZWdhdGVzIHRoZSBwcm9kdWN0LCBhbmQgd3JpdGVzIHRo
ZSByZXN1bHQgdG8gdGhlIDY0LWJpdCBkZXN0aW5hdGlvbiByZWdpc3Rlci4gCisgICAgICAgIFRo
ZSBlcXVpdmFsZW50IHBhdHRlcm5zIGFyZSAKKworICAgICAgICBkID0gLShTRXh0MzIobikgKiBT
RXh0MzIobSkpIGFuZCBkID0gLShaRXh0MzIobikgKiBaRXh0MzIobSkpIHJlc3BlY3RpdmVseS4K
KworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50IEAwID0gUy9aRXh0MzIoVHJ1bmMo
QXJndW1lbnRSZWcoJXgwKSkpCisgICAgICAgIEludCBAMSA9IFMvWkV4dDMyKFRydW5jKEFyZ3Vt
ZW50UmVnKCV4MSkpKQorICAgICAgICBJbnQgQDIgPSBNdWwoQDAsIEAxKQorICAgICAgICBJbnQg
QDMgPSBOZWcoQDIpCisgICAgICAgIFZvaWRANCA9IFJldHVybihAMywgVGVybWluYWwpCisKKyAg
ICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMyICAgICAgJXgwLCAleDAs
ICAgICAgQDAKKyAgICAgICAgTW92ZTMyICAgICAgJXgxLCAleDEsICAgICAgQDEKKyAgICAgICAg
TXVsdGlwbHlOZWcgJXgwLCAleDEsICV4MCwgQDMKKyAgICAgICAgUmV0ICAgICAgICAgJXgwLCAg
ICAgICAgICAgQDQKKworICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBNdWx0
aXBseU5lZ1NpZ24vWmVyb0V4dGVuZCAgJXgwLCAleDEsICV4MCwgQDMKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICAgICAgICAgICV4MCwgICAgICAgICAgIEA0CisKKyAgICAgICAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjIFVNQURETCBYZCBXbiBXbSBYYSAjIyMK
KyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgVW5zaWduZWQgTXVs
dGlwbHktQWRkIExvbmcgbXVsdGlwbGllcyB0d28gMzItYml0IHJlZ2lzdGVyIHZhbHVlcywgYWRk
cyBhIDY0LWJpdCAKKyAgICAgICAgcmVnaXN0ZXIgdmFsdWUsIGFuZCB3cml0ZXMgdGhlIHJlc3Vs
dCB0byB0aGUgNjQtYml0IGRlc3RpbmF0aW9uIHJlZ2lzdGVyLiBUaGUgCisgICAgICAgIGVxdWl2
YWxlbnQgcGF0dGVybnMgYXJlIAorCisgICAgICAgIGQgPSBaRXh0MzIobikgKiBaRXh0MzIobSkg
KyBhIG9yIGQgPSBhICsgWkV4dDMyKG4pICogWkV4dDMyKG0pCisKKyAgICAgICAgR2l2ZW4gQjMg
SVI6CisgICAgICAgIEludCBAMCA9IFpFeHQzMihUcnVuYyhBcmd1bWVudFJlZygleDApKSkKKyAg
ICAgICAgSW50IEAxID0gWkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MSkpKQorICAgICAgICBJ
bnQgQDIgPSBBcmd1bWVudFJlZygleDIpCisgICAgICAgIEludCBAMyA9IE11bChAMCwgQDEpCisg
ICAgICAgIEludCBANCA9IEFkZChAMywgQDIpCisgICAgICAgIFZvaWRANSA9IFJldHVybihANCwg
VGVybWluYWwpCisKKyAgICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMy
ICAgICAgICAleDAsICV4MCwgICAgICAgICAgIEAxCisgICAgICAgIE1vdmUzMiAgICAgICAgJXgx
LCAleDEsICAgICAgICAgICBAMgorICAgICAgICBNdWx0aXBseUFkZCAgICV4MCwgJXgxLCAleDIs
ICV4MCwgQDQKKyAgICAgICAgUmV0NjQgICAgICAgICAleDAsICAgICAgICAgICAgICAgIEA1CisK
KyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAgICAgICAgTXVsdGlwbHlBZGRaZXJvRXh0
ZW5kICV4MCwgJXgxLCAleDIsICV4MCwgQDgKKyAgICAgICAgUmV0ICAgICAgICAgICAgICAgICAg
ICV4MCwgICAgICAgICAgICAgICAgQDkKKworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorICAgICAgICAjIyMgVU1TVUJMIFhkIFduIFdtIFhhICMjIworICAgICAgICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBVbnNpZ25lZCBNdWx0aXBseS1TdWJ0cmFjdCBM
b25nIG11bHRpcGxpZXMgdHdvIDMyLWJpdCByZWdpc3RlciB2YWx1ZXMsIHN1YnRyYWN0cyAKKyAg
ICAgICAgdGhlIHByb2R1Y3QgZnJvbSBhIDY0LWJpdCByZWdpc3RlciB2YWx1ZSwgYW5kIHdyaXRl
cyB0aGUgcmVzdWx0IHRvIHRoZSA2NC1iaXQgCisgICAgICAgIGRlc3RpbmF0aW9uIHJlZ2lzdGVy
LiBUaGUgZXF1aXZhbGVudCBwYXR0ZXJucyBhcmUgCisKKyAgICAgICAgZCA9IGEgLSBaRXh0MzIo
bikgKiBaRXh0MzIobSkKKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50IEAwID0g
WkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MCkpKQorICAgICAgICBJbnQgQDEgPSBaRXh0MzIo
VHJ1bmMoQXJndW1lbnRSZWcoJXgxKSkpCisgICAgICAgIEludCBAMiA9IEFyZ3VtZW50UmVnKCV4
MikKKyAgICAgICAgSW50IEAzID0gTXVsKEAwLCBAMSkKKyAgICAgICAgSW50IEA0ID0gU3ViKEAy
LCBAMykKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkKKworICAgICAgICAv
LyBPbGQgb3B0aW1pemVkIEFJUgorICAgICAgICBNb3ZlMzIgICAgICAgICV4MCwgJXgwLCAgICAg
ICAgICAgQDEKKyAgICAgICAgTW92ZTMyICAgICAgICAleDEsICV4MSwgICAgICAgICAgIEAyCisg
ICAgICAgIE11bHRpcGx5U3ViICAgJXgwLCAleDEsICV4MiwgJXgwLCBANAorICAgICAgICBSZXQ2
NCAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDUKKworICAgICAgICAvLyBOZXcgb3B0aW1p
emVkIEFJUgorICAgICAgICBNdWx0aXBseVN1Ylplcm9FeHRlbmQgJXgwLCAleDEsICV4MiwgJXgw
LCBAOAorICAgICAgICBSZXQgICAgICAgICAgICAgICAgICAgJXgwLCAgICAgICAgICAgICAgICBA
OQorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlOZWczMik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om11bHRpcGx5QWRkWmVyb0V4dGVuZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlTdWJaZXJvRXh0ZW5kMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0aXBseU5lZzY0KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlOZWdTaWduRXh0ZW5kMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0aXBseU5lZ1plcm9FeHRlbmQzMik6
CisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVzdE11
bHRpcGx5QWRkU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkWmVy
b0V4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyKToK
KyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKEpT
Qzo6dGVzdE11bHRpcGx5TmVnU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRp
cGx5TmVnWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkU2lnbkV4
dGVuZDMyTGVmdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RNdWx0aXBseUFkZFNpZ25F
eHRlbmQzMlJpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgor
ICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMu
aDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0TXVsQWRkQXJnc0xl
ZnQpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NSaWdodCk6CisgICAgICAgICh0ZXN0TXVsQWRk
U2lnbkV4dGVuZDMyQXJnc0xlZnQpOgorICAgICAgICAodGVzdE11bEFkZFplcm9FeHRlbmQzMkFy
Z3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzUmlnaHQpOgorICAg
ICAgICAodGVzdE11bFN1YkFyZ3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxTdWJBcmdzUmlnaHQp
OgorICAgICAgICAodGVzdE11bFN1YkFyZ3NSaWdodDMyKToKKyAgICAgICAgKHRlc3RNdWxTdWJT
aWduRXh0ZW5kMzIpOgorICAgICAgICAodGVzdE11bFN1Ylplcm9FeHRlbmQzMik6CisgICAgICAg
ICh0ZXN0TXVsTmVnQXJnQXJnKToKKyAgICAgICAgKHRlc3RNdWxOZWdBcmdzKToKKyAgICAgICAg
KHRlc3RNdWxOZWdBcmdzMzIpOgorICAgICAgICAodGVzdE11bE5lZ1NpZ25FeHRlbmQzMik6Cisg
ICAgICAgICh0ZXN0TXVsTmVnWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKHRlc3RNdWxTdWJTaWdu
RXh0ZW5kMzJBcmdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy90ZXN0YjNfMy5jcHA6CisgICAg
ICAgIChhZGRBcmdUZXN0cyk6CisKIDIwMjEtMDctMTAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgQ29udGludWUgdG8gY29uc3VsdCBJbmxpbmVBY2Nlc3MncyBT
dHJ1Y3R1cmUgZXZlbiBhZnRlciBzd2l0Y2hpbmcgdG8gYSBzdHViIElDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4
IGRmNjVjYjYzNjFmNGFiMDVhMDU1MGUzMGUzNGE4NTc3OWFlZGFmN2YuLjNkODVjYmI4ZGI1MzNj
ODQwN2FhYjY1YTM5MDQ0ZjliYTJiNDAyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC03NzAsNyArNzcwLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBtdWx0aXBseU5lZzMyKFJlZ2lzdGVySUQgbXVsTGVmdCwg
UmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIubXN1YjwzMj4oZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIEFSTTY0UmVnaXN0ZXJz
Ojp6cik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1uZWc8MzI+KGRlc3QsIG11bExlZnQsIG11bFJp
Z2h0KTsKICAgICB9CiAKICAgICB2b2lkIG11bHRpcGx5QWRkNjQoUmVnaXN0ZXJJRCBtdWxMZWZ0
LCBSZWdpc3RlcklEIG11bFJpZ2h0LCBSZWdpc3RlcklEIHN1bW1hbmQsIFJlZ2lzdGVySUQgZGVz
dCkKQEAgLTc4Myw2ICs3ODMsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zbWFk
ZGwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIHN1bW1hbmQpOwogICAgIH0KIAorICAgIHZvaWQg
bXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIoUmVnaXN0ZXJJRCBtdWxMZWZ0LCBSZWdpc3RlcklEIG11
bFJpZ2h0LCBSZWdpc3RlcklEIHN1bW1hbmQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnVtYWRkbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCwgc3VtbWFuZCk7
CisgICAgfQorCiAgICAgdm9pZCBtdWx0aXBseVN1YjY0KFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVn
aXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBtaW51ZW5kLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tc3ViPDY0PihkZXN0LCBtdWxMZWZ0LCBtdWxSaWdo
dCwgbWludWVuZCk7CkBAIC03OTMsOSArNzk4LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuc21zdWJsKGRlc3QsIG11bExlZnQsIG11bFJpZ2h0LCBtaW51ZW5kKTsKICAgICB9CiAK
KyAgICB2b2lkIG11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVn
aXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBtaW51ZW5kLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci51bXN1YmwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQs
IG1pbnVlbmQpOworICAgIH0KKwogICAgIHZvaWQgbXVsdGlwbHlOZWc2NChSZWdpc3RlcklEIG11
bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm1zdWI8NjQ+KGRlc3QsIG11bExlZnQsIG11bFJpZ2h0LCBBUk02NFJl
Z2lzdGVyczo6enIpOworICAgICAgICBtX2Fzc2VtYmxlci5tbmVnPDY0PihkZXN0LCBtdWxMZWZ0
LCBtdWxSaWdodCk7CisgICAgfQorCisgICAgdm9pZCBtdWx0aXBseU5lZ1NpZ25FeHRlbmQzMihS
ZWdpc3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNtbmVnbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdo
dCk7CisgICAgfQorCisgICAgdm9pZCBtdWx0aXBseU5lZ1plcm9FeHRlbmQzMihSZWdpc3RlcklE
IG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnVtbmVnbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCk7CiAgICAg
fQogCiAgICAgdm9pZCBtdWx0aXBseVNpZ25FeHRlbmQzMihSZWdpc3RlcklEIGxlZnQsIFJlZ2lz
dGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggZDI5ZjkzNjBhMzY3ZDBhMTEzNjNlODdiODU2OTNl
NTg0ZjNlN2VhNC4uNzFjZDIzOTk4Y2U3YTI0MTIwMTk2ZDBmMDQ1NjI0NmQxNGQ5MThhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTkyMSw3
ICs5MjEsNyBAQCB2b2lkIHRlc3RNdWx0aXBseVNpZ25FeHRlbmQzMigpCiAgICAgfQogfQogCi12
b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMkxlZnQoKQordm9pZCB0ZXN0TXVsdGlwbHlB
ZGRTaWduRXh0ZW5kMzIoKQogewogICAgIC8vIGQgPSBTRXh0MzIobikgKiBTRXh0MzIobSkgKyBh
CiAgICAgYXV0byBhZGQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKQEAgLTk0
NCwyNSArOTQ0LDI4IEBAIHZvaWQgdGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyTGVmdCgpCiAg
ICAgfQogfQogCi12b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMlJpZ2h0KCkKK3ZvaWQg
dGVzdE11bHRpcGx5QWRkWmVyb0V4dGVuZDMyKCkKIHsKLSAgICAvLyBkID0gYSArIFNFeHQzMihu
KSAqIFNFeHQzMihtKQorICAgIC8vIGQgPSBaRXh0MzIobikgKiBaRXh0MzIobSkgKyBhCiAgICAg
YXV0byBhZGQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAotICAgICAgICBqaXQubXVsdGlwbHlBZGRTaWduRXh0
ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgaml0Lm11bHRpcGx5QWRkWmVy
b0V4dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjph
cmd1bWVudEdQUjEsIAogICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCAKLSAgICAg
ICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCiAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7CiAKICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAg
ICAgaml0LnJldCgpOwogICAgIH0pOwogCi0gICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRz
KCkpIHsKLSAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKLSAgICAgICAg
ICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKQotICAgICAgICAgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ2NF90PihhZGQsIGEsIG4sIG0pLCBhICsgc3RhdGljX2Nhc3Q8aW50NjRf
dD4obikgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtKSk7CisgICAgZm9yIChhdXRvIG4gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICAgICAgdWludDMyX3QgdW4gPSBuOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbTsK
KyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oYWRkLCBuLCBtLCBhKSwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4odW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odW0pICsgYSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMDkxLDcgKzEwOTQsNyBA
QCB2b2lkIHRlc3RTdWI2NEFyZ0ltbTY0KCkKIAogdm9pZCB0ZXN0TXVsdGlwbHlTdWJTaWduRXh0
ZW5kMzIoKQogewotICAgIC8vIGQgPSBhIC0gU0V4dDMyKG4pICogIFNFeHQzMihtKQorICAgIC8v
IGQgPSBhIC0gU0V4dDMyKG4pICogU0V4dDMyKG0pCiAgICAgYXV0byBzdWIgPSBjb21waWxlKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIApAQCAtMTExMiw2ICsxMTE1LDcxIEBAIHZvaWQgdGVzdE11bHRpcGx5U3ViU2lnbkV4dGVu
ZDMyKCkKICAgICB9CiB9CiAKK3ZvaWQgdGVzdE11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKCkKK3sK
KyAgICAvLyBkID0gYSAtIChaRXh0MzIobikgKiBaRXh0MzIobSkpCisgICAgYXV0byBzdWIgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKKworICAgICAgICBqaXQubXVsdGlwbHlTdWJaZXJvRXh0ZW5kMzIoR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKKyAg
ICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAg
ICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJh
bmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICAgICAg
dWludDMyX3QgdW4gPSBuOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oc3ViLCBhLCBuLCBtKSwgYSAtIHN0
YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE11bHRpcGx5TmVnU2ln
bkV4dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gLSAoU0V4dDMyKG4pICogU0V4dDMyKG0pKQorICAg
IGF1dG8gbmVnID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0Lm11bHRpcGx5TmVnU2lnbkV4
dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpCisg
ICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4obmVnLCBuLCBtKSwgLShzdGF0aWNf
Y2FzdDxpbnQ2NF90PihuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KG0pKSk7CisgICAgfQorfQor
Cit2b2lkIHRlc3RNdWx0aXBseU5lZ1plcm9FeHRlbmQzMigpCit7CisgICAgLy8gZCA9IC0gWkV4
dDMyKG4pICogWkV4dDMyKG0pCisgICAgYXV0byBuZWcgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAg
ICBqaXQubXVsdGlwbHlOZWdaZXJvRXh0ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBl
bWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisK
KyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8g
bSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgdWludDMyX3QgdW4gPSBuOworICAg
ICAgICAgICAgdWludDMyX3QgdW0gPSBtOworICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVp
bnQ2NF90PihuZWcsIG4sIG0pLCAtKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1bikgKiBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odW0pKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgdGVzdEV4
dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIoKQogewogICAgIHVpbnQzMl90IHNyYyA9IDB4ZjBmMGYw
ZjA7CkBAIC00MTY0LDkgKzQyMzIsMTIgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBX
VEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRlc3RTdWI2NEltbTY0
KCkpOwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW02NCgpKTsKIAotICAgIFJVTih0ZXN0TXVsdGlw
bHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkpOwotICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0
ZW5kMzJSaWdodCgpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKCkpOwor
ICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIoKSk7CiAgICAgUlVOKHRlc3RNdWx0
aXBseVN1YlNpZ25FeHRlbmQzMigpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5U3ViWmVyb0V4dGVu
ZDMyKCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlOZWdTaWduRXh0ZW5kMzIoKSk7CisgICAgUlVO
KHRlc3RNdWx0aXBseU5lZ1plcm9FeHRlbmQzMigpKTsKIAogICAgIFJVTih0ZXN0RXh0cmFjdFVu
c2lnbmVkQml0ZmllbGQzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxk
NjQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDJi
NTU2ZDcxODMzMzcyMGJmYTc4NzNjNzc5YmQyOTFmZDEyNjE3OTEuLmI2NGQ2ODVhYThjOGQ5MWFk
NGRjZTdiMDY1NjE2MDVmNTJmMjY3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCkBAIC0yNDg1LDYgKzI0ODUsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxv
d2VyKCkKICAgICB7CiAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CisKKyAgICAgICAgYXV0
byBpc01lcmdlYWJsZUIzT3Bjb2RlID0gWyZdIChWYWx1ZSogdiwgQjM6Ok9wY29kZSBiM09wY29k
ZSkgLT4gYm9vbCB7IAorICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IGIzT3Bjb2RlIHx8
ICFjYW5CZUludGVybmFsKHYpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH07CisK
ICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICBjYXNlIEIzOjpO
b3A6IHsKICAgICAgICAgICAgIC8vIFllcywgd2Ugd2lsbCB0b3RhbGx5IHNlZSBOb3AncyBiZWNh
dXNlIHNvbWUgcGhhc2VzIHdpbGwgcmVwbGFjZVdpdGhOb3AoKSBpbnN0ZWFkIG9mCkBAIC0yNTY3
LDcyICsyNTc2LDcxIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAg
ICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAg
ICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOwogICAgICAgICAgICAgVmFsdWUq
IHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CiAKLSAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlk
Rm9ybShNdWx0aXBseUFkZDY0LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRt
cCkgCi0gICAgICAgICAgICAgICAgPT0gaXNWYWxpZEZvcm0oTXVsdGlwbHlBZGRTaWduRXh0ZW5k
MzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSk7Ci0gICAgICAgICAg
ICBBaXI6Ok9wY29kZSBtdWx0aXBseUFkZE9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlw
bHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgIGlm
IChpc1ZhbGlkRm9ybShtdWx0aXBseUFkZE9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6
OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFpbW0ocmlnaHQpIHx8IG1f
dmFsdWVUb1RtcFtyaWdodF0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBs
eSA9IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wgeyAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh2LT5vcGNvZGUoKSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwodikpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxkKDApKSB8fCBtX2xvY2tlZC5jb250YWlucyh2LT5j
aGlsZCgxKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH07
Ci0KLSAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlTRXh0MzIgPSBbJl0gKFZhbHVlKiB2KSAt
PiBib29sIHsgCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi0+b3Bjb2RlKCkgPT0g
U0V4dDMyICYmIGNhbkJlSW50ZXJuYWwodik7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgLy8gTUFERDogZCA9IG4gKiBtICsgYQotICAgICAgICAgICAgICAg
ICAgICBhdXRvIHRyeUFwcGVuZE11bHRpcGx5QWRkID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUq
IHJpZ2h0KSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdHJ5TXVsdGlw
bHkobGVmdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5TGVmdCA9IGxlZnQtPmNoaWxkKDAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQgPSBsZWZ0LT5j
aGlsZCgxKTsKKyAgICAgICAgICAgIGF1dG8gdHJ5TXVsdGlwbHlBZGQgPSBbJl0gKCkgLT4gYm9v
bCB7CisgICAgICAgICAgICAgICAgaWYgKGltbShyaWdodCkgJiYgIW1fdmFsdWVUb1RtcFtyaWdo
dF0pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICAgICAgICAg
IC8vIE1BREQ6IGQgPSBuICogbSArIGEKKyAgICAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZE11
bHRpcGx5QWRkID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGxlZnQtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRl
cm5hbChsZWZ0KSB8fCBtX2xvY2tlZC5jb250YWlucyhyaWdodCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBs
eUxlZnQgPSBsZWZ0LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRp
cGx5UmlnaHQgPSBsZWZ0LT5jaGlsZCgxKTsKKyAgICAgICAgICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseUFkZDMyLCBNdWx0aXBseUFk
ZDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHRyeU5ld0Fp
ck9wY29kZSA9IFsmXSAoKSAtPiBBaXI6Ok9wY29kZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYWlyT3Bjb2RlICE9IE11bHRpcGx5QWRkNjQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNNQURE
TDogZCA9IFNFeHQzMihuKSAqIFNFeHQzMihtKSArIGEKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtdWx0aXBseUFkZE9wY29kZSA9PSBNdWx0aXBseUFkZDY0ICYmIHRyeVNFeHQzMihtdWx0
aXBseUxlZnQpICYmIHRyeVNFeHQzMihtdWx0aXBseVJpZ2h0KSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZChNdWx0aXBseUFkZFNpZ25FeHRlbmQzMiwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRtcChtdWx0aXBseUxlZnQtPmNoaWxkKDApKSwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChtdWx0aXBseVJpZ2h0LT5jaGlsZCgwKSks
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAocmlnaHQpLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG1fdmFsdWUpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxlZnQpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5UmlnaHQpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlMZWZ0LCBT
RXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlSaWdodCwgU0V4dDMyKSkgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5QWRkU2lnbkV4dGVuZDMy
OworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVU1BRERMOiBkID0gWkV4dDMyKG4pICogWkV4
dDMyKG0pICsgYQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNv
ZGUobXVsdGlwbHlMZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlS
aWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRp
cGx5QWRkWmVyb0V4dGVuZDMyOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6
T29wczsKKyAgICAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kKG11bHRpcGx5QWRkT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0KSwgdG1wKG11bHRpcGx5
UmlnaHQpLCB0bXAocmlnaHQpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBB
aXI6Ok9wY29kZSBuZXdBaXJPcGNvZGUgPSB0cnlOZXdBaXJPcGNvZGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG5ld0Fpck9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1w
LCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQo
bmV3QWlyT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSksIHRtcChtdWx0aXBseVJp
Z2h0LT5jaGlsZCgwKSksIHRtcChyaWdodCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxlZnQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21taXRJbnRlcm5hbChsZWZ0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRyeUFwcGVuZE11bHRpcGx5QWRkKGxlZnQsIHJp
Z2h0KSB8fCB0cnlBcHBlbmRNdWx0aXBseUFkZChyaWdodCwgbGVmdCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKGFpck9wY29kZSwgQXJnOjpUbXAsIEFy
Zzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMobXVs
dGlwbHlMZWZ0KSB8fCBtX2xvY2tlZC5jb250YWlucyhtdWx0aXBseVJpZ2h0KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5k
KGFpck9wY29kZSwgdG1wKG11bHRpcGx5TGVmdCksIHRtcChtdWx0aXBseVJpZ2h0KSwgdG1wKHJp
Z2h0KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwo
bGVmdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
IH07CiAKLSAgICAgICAgICAgIC8vIGFkZC13aXRoLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBTaGlm
dFR5cGUgYW1vdW50KQotICAgICAgICAgICAgYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6QjM6
Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bjb2RlIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2gg
KG9wY29kZSkgewotICAgICAgICAgICAgICAgIGNhc2UgU2hsOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQs
IG1fdmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBTU2hyOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRSaWdodFNoaWZ0MzIsIEFkZFJp
Z2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgICAgICBjYXNlIFpTaHI6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2lnbmVk
UmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsK
LSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWly
OjpPb3BzOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ5QXBw
ZW5kTXVsdGlwbHlBZGQobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZE11bHRpcGx5QWRkKHJpZ2h0
LCBsZWZ0KTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQWRk
QW5kU2hpZnQgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAg
ICAgICAgICAgaWYgKHRyeU11bHRpcGx5QWRkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICAvLyBhZGQtd2l0aC1zaGlmdCBQYXR0ZXJuOiBuICsgKG0gU2hpZnRUeXBl
IGFtb3VudCkKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQWRkV2l0aFNoaWZ0ID0gWyZdIChW
YWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBhdXRv
IHRyeU9wY29kZSA9IFsmXSAoQjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bjb2RlIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBTaGw6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlw
ZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgU1NocjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnlPcGNvZGVGb3JUeXBlKEFkZFJpZ2h0U2hpZnQzMiwgQWRkUmlnaHRTaGlmdDY0LCBtX3Zh
bHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFpTaHI6CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRVbnNpZ25lZFJpZ2h0U2hp
ZnQzMiwgQWRkVW5zaWduZWRSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWly
OjpPb3BzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKwogICAg
ICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZShyaWdodC0+b3Bjb2Rl
KCkpOwogICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwg
QXJnOjpUbXAsIEFyZzo6SW1tLCBBcmc6OlRtcCkpIAogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yNjQ5LDcgKzI2NTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKHRyeUFwcGVu
ZEFkZEFuZFNoaWZ0KGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRBZGRBbmRTaGlmdChyaWdodCwg
bGVmdCkpCisgICAgICAgICAgICBpZiAodHJ5QXBwZW5kQWRkV2l0aFNoaWZ0KGxlZnQsIHJpZ2h0
KSB8fCB0cnlBcHBlbmRBZGRXaXRoU2hpZnQocmlnaHQsIGxlZnQpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgYXBwZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGREb3Vi
bGUsIEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4obGVmdCwgcmlnaHQpOwpAQCAtMjY2MCw3MiArMjY2
OCw2NCBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGls
ZCgwKTsKICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOwogCi0g
ICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseVN1Yk9wY29kZSA9IHRyeU9wY29kZUZvclR5
cGUoTXVsdGlwbHlTdWIzMiwgTXVsdGlwbHlTdWI2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAg
ICAgICAgIGlmIChtdWx0aXBseVN1Yk9wY29kZSAhPSBBaXI6Ok9vcHMKLSAgICAgICAgICAgICAg
ICAmJiBpc1ZhbGlkRm9ybShtdWx0aXBseVN1Yk9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBB
cmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBseSA9
IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICBpZiAodi0+b3Bj
b2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKHYpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFp
bnModi0+Y2hpbGQoMCkpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxkKDEpKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5k
TXVsdGlwbHlTdWIgPSBbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgaWYgKGltbShy
aWdodCkgJiYgIW1fdmFsdWVUb1RtcFtyaWdodF0pCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICAgICAgICAgIC8vIE1TVUI6IGQgPSBhIC0gbiAqIG0KLSAgICAg
ICAgICAgICAgICBpZiAoKCFpbW0ocmlnaHQpIHx8IG1fdmFsdWVUb1RtcFtyaWdodF0pICYmIHRy
eU11bHRpcGx5KHJpZ2h0KSkgewotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlM
ZWZ0ID0gcmlnaHQtPmNoaWxkKDApOwotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlw
bHlSaWdodCA9IHJpZ2h0LT5jaGlsZCgxKTsKLQorICAgICAgICAgICAgICAgIGlmIChtX2xvY2tl
ZC5jb250YWlucyhsZWZ0KSB8fCByaWdodC0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVy
bmFsKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSByaWdodC0+Y2hpbGQoMCk7CisgICAgICAgICAg
ICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQgPSByaWdodC0+Y2hpbGQoMSk7CisgICAgICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseVN1
YjMyLCBNdWx0aXBseVN1YjY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGF1
dG8gdHJ5TmV3QWlyT3Bjb2RlID0gWyZdICgpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGFpck9wY29kZSAhPSBNdWx0aXBseVN1YjY0KQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAgICAgICAgLy8gU01TVUJM
OiBkID0gYSAtIFNFeHQzMihuKSAqIFNFeHQzMihtKQotICAgICAgICAgICAgICAgICAgICBpZiAo
bXVsdGlwbHlTdWJPcGNvZGUgPT0gTXVsdGlwbHlTdWI2NAotICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgaXNWYWxpZEZvcm0oTXVsdGlwbHlTdWJTaWduRXh0ZW5kMzIsIEFyZzo6VG1wLCBBcmc6
OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byB0cnlTRXh0MzIgPSBbJl0gKFZhbHVlKiB2KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHYtPm9wY29kZSgpICE9IFNFeHQzMiB8fCAhY2FuQmVJbnRlcm5hbCh2KSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kTXVsdGlwbHlTdWJTaWduRXh0ZW5k
MzIgPSBbJl0gKCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0
cnlTRXh0MzIobXVsdGlwbHlMZWZ0KSB8fCAhdHJ5U0V4dDMyKG11bHRpcGx5UmlnaHQpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kKE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5TGVmdC0+Y2hpbGQoMCkpLCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5UmlnaHQtPmNoaWxkKDAp
KSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChsZWZ0KSwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChtX3ZhbHVlKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5TGVmdCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9OwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTXVsdGlwbHlTdWJTaWduRXh0ZW5k
MzIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVs
dGlwbHlMZWZ0LCBTRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlSaWdodCwg
U0V4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlTdWJTaWdu
RXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIC8vIFVNU1VCTDogZCA9IGEgLSBaRXh0MzIo
bikgKiBaRXh0MzIobSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNv
ZGUobXVsdGlwbHlMZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlS
aWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlT
dWJaZXJvRXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7Cisg
ICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgICAgICBhcHBlbmQobXVsdGlwbHlT
dWJPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQpLCB0bXAobXVsdGlwbHlSaWdodCksIHRtcChsZWZ0
KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBuZXdBaXJPcGNv
ZGUgPSB0cnlOZXdBaXJPcGNvZGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0o
bmV3QWlyT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKG5ld0Fpck9wY29kZSwgdG1wKG11bHRpcGx5TGVm
dC0+Y2hpbGQoMCkpLCB0bXAobXVsdGlwbHlSaWdodC0+Y2hpbGQoMCkpLCB0bXAobGVmdCksIHRt
cChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5
TGVmdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5UmlnaHQp
OwogICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBzdWItd2l0aC1z
aGlmdCBQYXR0ZXJuOiBuIC0gKG0gU2hpZnRUeXBlIGFtb3VudCkKLSAgICAgICAgICAgIGF1dG8g
dHJ5T3Bjb2RlID0gWyZdIChKU0M6OkIzOjpPcGNvZGUgb3Bjb2RlKSAtPiBBaXI6Ok9wY29kZSB7
Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKLSAgICAgICAgICAgICAgICBjYXNl
IFNobDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViTGVm
dFNoaWZ0MzIsIFN1YkxlZnRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOwotICAgICAgICAgICAg
ICAgIGNhc2UgU1NocjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5
cGUoU3ViUmlnaHRTaGlmdDMyLCBTdWJSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBaU2hyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5
T3Bjb2RlRm9yVHlwZShTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMiwgU3ViVW5zaWduZWRSaWdodFNo
aWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShhaXJPcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRt
cCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhtdWx0aXBseUxlZnQpIHx8
IG1fbG9ja2VkLmNvbnRhaW5zKG11bHRpcGx5UmlnaHQpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYXBwZW5kKGFpck9wY29kZSwgdG1wKG11bHRp
cGx5TGVmdCksIHRtcChtdWx0aXBseVJpZ2h0KSwgdG1wKGxlZnQpLCB0bXAobV92YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH07CiAKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRN
dWx0aXBseVN1YigpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgLy8g
c3ViLXdpdGgtc2hpZnQgUGF0dGVybjogbiAtIChtIFNoaWZ0VHlwZSBhbW91bnQpCiAgICAgICAg
ICAgICBhdXRvIHRyeUFwcGVuZFN1YkFuZFNoaWZ0ID0gWyZdICgpIC0+IGJvb2wgeworICAgICAg
ICAgICAgICAgIGF1dG8gdHJ5T3Bjb2RlID0gWyZdIChCMzo6T3Bjb2RlIG9wY29kZSkgLT4gQWly
OjpPcGNvZGUgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAg
ICAgICAgICAgICAgICBjYXNlIFNobDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnlPcGNvZGVGb3JUeXBlKFN1YkxlZnRTaGlmdDMyLCBTdWJMZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+
dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViUmlnaHRTaGlmdDMyLCBTdWJSaWdo
dFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgWlNo
cjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YlVu
c2lnbmVkUmlnaHRTaGlmdDMyLCBTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBBaXI6Ok9vcHM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9OworCiAgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2Rl
KHJpZ2h0LT5vcGNvZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNv
ZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3NTAsMjAgKzI3NTAsNDUgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTmVnOiB7Ci0gICAgICAgICAgICBBaXI6Ok9wY29k
ZSBtdWx0aXBseU5lZ09wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlOZWczMiwgTXVs
dGlwbHlOZWc2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgIGlmIChtdWx0aXBseU5l
Z09wY29kZSAhPSBBaXI6Ok9vcHMKLSAgICAgICAgICAgICAgICAmJiBpc1ZhbGlkRm9ybShtdWx0
aXBseU5lZ09wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkKLSAgICAgICAgICAg
ICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gTXVsCi0gICAgICAgICAgICAg
ICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKLSAgICAgICAgICAgICAg
ICBWYWx1ZSogbXVsdGlwbHlPcGVyYXRpb24gPSBtX3ZhbHVlLT5jaGlsZCgwKTsKLSAgICAgICAg
ICAgICAgICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbXVsdGlwbHlPcGVyYXRpb24tPmNoaWxkKDAp
OwotICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0ID0gbXVsdGlwbHlPcGVyYXRp
b24tPmNoaWxkKDEpOwotICAgICAgICAgICAgICAgIGlmICghbV9sb2NrZWQuY29udGFpbnMobXVs
dGlwbHlMZWZ0KSAmJiAhbV9sb2NrZWQuY29udGFpbnMobXVsdGlwbHlSaWdodCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kKG11bHRpcGx5TmVnT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0
KSwgdG1wKG11bHRpcGx5UmlnaHQpLCB0bXAobV92YWx1ZSkpOwotICAgICAgICAgICAgICAgICAg
ICBjb21taXRJbnRlcm5hbChtdWx0aXBseU9wZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kTXVsdGlwbHlOZWcgPSBbJl0gKCkg
LT4gYm9vbCB7CisgICAgICAgICAgICAgICAgLy8gTU5FRyA6IGQgPSAtKG4gKiBtKQorICAgICAg
ICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5C
ZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSBtX3ZhbHVlLT5j
aGlsZCgwKS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQg
PSBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSk7CisgICAgICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseU5lZzMyLCBNdWx0aXBseU5l
ZzY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGF1dG8gdHJ5TmV3QWlyT3Bj
b2RlID0gWyZdICgpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFp
ck9wY29kZSAhPSBNdWx0aXBseU5lZzY0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEFpcjo6T29wczsKKyAgICAgICAgICAgICAgICAgICAgLy8gU01ORUcgOiBkID0gLShTRXh0MzIo
bikgKiBTRXh0MzIobSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChpc01lcmdlYWJsZUIzT3Bj
b2RlKG11bHRpcGx5TGVmdCwgU0V4dDMyKSAmJiBpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5
UmlnaHQsIFNFeHQzMikpIAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5
TmVnU2lnbkV4dGVuZDMyOworICAgICAgICAgICAgICAgICAgICAvLyBaTU5FRzogZCA9IC0oWkV4
dDMyKG4pICogWkV4dDMyKG0pKQorICAgICAgICAgICAgICAgICAgICBpZiAoaXNNZXJnZWFibGVC
M09wY29kZShtdWx0aXBseUxlZnQsIFpFeHQzMikgJiYgaXNNZXJnZWFibGVCM09wY29kZShtdWx0
aXBseVJpZ2h0LCBaRXh0MzIpKSAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNdWx0
aXBseU5lZ1plcm9FeHRlbmQzMjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29w
czsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgbmV3
QWlyT3Bjb2RlID0gdHJ5TmV3QWlyT3Bjb2RlKCk7CisgICAgICAgICAgICAgICAgaWYgKGlzVmFs
aWRGb3JtKG5ld0Fpck9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kKG5ld0Fpck9wY29kZSwgdG1wKG11bHRpcGx5TGVmdC0+
Y2hpbGQoMCkpLCB0bXAobXVsdGlwbHlSaWdodC0+Y2hpbGQoMCkpLCB0bXAobV92YWx1ZSkpOwor
ICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxlZnQpOworICAgICAg
ICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseVJpZ2h0KTsKKyAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKGFpck9wY29kZSwgQXJnOjpUbXAsIEFy
Zzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMobXVsdGlwbHlMZWZ0KSB8fCBtX2xv
Y2tlZC5jb250YWlucyhtdWx0aXBseVJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIGFwcGVuZChhaXJPcGNvZGUsIHRtcChtdWx0aXBseUxl
ZnQpLCB0bXAobXVsdGlwbHlSaWdodCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAg
Y29tbWl0SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHRyeUFwcGVuZE11bHRp
cGx5TmVnKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhcHBlbmRV
bk9wPE5lZzMyLCBOZWc2NCwgTmVnYXRlRG91YmxlLCBOZWdhdGVGbG9hdD4obV92YWx1ZS0+Y2hp
bGQoMCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggMDVkYzNhOWZlYzQ2OTY4NDAzMWQ4OGQ3M2Vj
MzdjYzA1OGJlMWY1Ny4uNjRjYTc3N2JmMDY1ZWVmNzg3NmE5MDkyODQ5YWQ1NWI4MjQ5YmQ3YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBA
IC0yNTQsNiArMjU0LDkgQEAgYXJtNjQ6IE11bHRpcGx5QWRkNjQgVTpHOjY0LCBVOkc6NjQsIFU6
Rzo2NCwgRDpHOjY0CiBhcm02NDogTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIgVTpHOjMyLCBVOkc6
MzIsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcCwgVG1wCiAKK2FybTY0OiBNdWx0
aXBseUFkZFplcm9FeHRlbmQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjY0LCBEOkc6NjQKKyAgICBU
bXAsIFRtcCwgVG1wLCBUbXAKKwogYXJtNjQ6IE11bHRpcGx5U3ViMzIgVTpHOjMyLCBVOkc6MzIs
IFU6RzozMiwgWkQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAsIFRtcAogCkBAIC0yNjMsMTMgKzI2
NiwyMiBAQCBhcm02NDogTXVsdGlwbHlTdWI2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6
NjQKIGFybTY0OiBNdWx0aXBseVN1YlNpZ25FeHRlbmQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjY0
LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wLCBUbXAKIAorYXJtNjQ6IE11bHRpcGx5U3ViWmVy
b0V4dGVuZDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBU
bXAsIFRtcAorCiBhcm02NDogTXVsdGlwbHlOZWczMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgog
ICAgIFRtcCwgVG1wLCBUbXAKIAogYXJtNjQ6IE11bHRpcGx5TmVnNjQgVTpHOjY0LCBVOkc6NjQs
IFpEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCiAKLWFybTY0OiBNdWx0aXBseVNpZ25FeHRlbmQz
MiBVOkc6MzIsIFU6RzozMiwgWkQ6Rzo2NAorYXJtNjQ6IE11bHRpcGx5TmVnU2lnbkV4dGVuZDMy
IFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgVG1wCisKK2FybTY0OiBNdWx0
aXBseU5lZ1plcm9FeHRlbmQzMiBVOkc6MzIsIFU6RzozMiwgRDpHOjY0CisgICAgVG1wLCBUbXAs
IFRtcAorCithcm02NDogTXVsdGlwbHlTaWduRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2
NAogICAgIFRtcCwgVG1wLCBUbXAKIAogYXJtNjQ6IERpdjMyIFU6RzozMiwgVTpHOjMyLCBaRDpH
OjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXggOWM3ZDI5OThlMmE4OTBmNWVkZTcw
ZWI2YjllMGY5OTE5NDdmYTExZi4uZjhiZTc3OTNjZWFkNWQyM2RkOTYwZTUxNDBmYWY4NzA0Y2Vh
ZjRjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApAQCAtOTEzLDEzICs5MTMsMTggQEAg
dm9pZCB0ZXN0TXVsQWRkQXJnc0xlZnQzMigpOwogdm9pZCB0ZXN0TXVsQWRkQXJnc1JpZ2h0MzIo
KTsKIHZvaWQgdGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KCk7CiB2b2lkIHRlc3RNdWxB
ZGRTaWduRXh0ZW5kMzJBcmdzUmlnaHQoKTsKK3ZvaWQgdGVzdE11bEFkZFplcm9FeHRlbmQzMkFy
Z3NMZWZ0KCk7Cit2b2lkIHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzUmlnaHQoKTsKIHZvaWQg
dGVzdE11bFN1YkFyZ3NMZWZ0KCk7CiB2b2lkIHRlc3RNdWxTdWJBcmdzUmlnaHQoKTsKIHZvaWQg
dGVzdE11bFN1YkFyZ3NMZWZ0MzIoKTsKIHZvaWQgdGVzdE11bFN1YkFyZ3NSaWdodDMyKCk7Ci12
b2lkIHRlc3RNdWxTdWJTaWduRXh0ZW5kMzJBcmdzKCk7Cit2b2lkIHRlc3RNdWxTdWJTaWduRXh0
ZW5kMzIoKTsKK3ZvaWQgdGVzdE11bFN1Ylplcm9FeHRlbmQzMigpOwogdm9pZCB0ZXN0TXVsTmVn
QXJncygpOwogdm9pZCB0ZXN0TXVsTmVnQXJnczMyKCk7Cit2b2lkIHRlc3RNdWxOZWdTaWduRXh0
ZW5kMzIoKTsKK3ZvaWQgdGVzdE11bE5lZ1plcm9FeHRlbmQzMigpOwogdm9pZCB0ZXN0TXVsQXJn
RG91YmxlKGRvdWJsZSk7CiB2b2lkIHRlc3RNdWxBcmdzRG91YmxlKGRvdWJsZSwgZG91YmxlKTsK
IHZvaWQgdGVzdENhbGxTaW1wbGVEb3VibGUoZG91YmxlLCBkb3VibGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXggOGY2MGZjYzRhNGEyZWYzNTQyZTY3NDFjMjUwYWU5
Zjk4ZGI2ZGFiNi4uMTcxYjgzNzgxMzI1N2YxZDNlYzA2MmU5ZjY4NzkxZWI3YTJkMjBiNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCkBAIC04NzQsMTkgKzg3NCw2IEBAIHZv
aWQgdGVzdE11bEFyZ05lZ0FyZyhpbnQgYSwgaW50IGIpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgKiAoLWIpKTsKIH0KIAotdm9pZCB0ZXN0TXVsTmVnQXJn
QXJnKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBuZWdB
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBhcmdBKTsKLSAg
ICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdp
bigpLCBuZWdBLCBhcmdCKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJv
YywgYSwgYikgPT0gKC1hKSAqIGIpOwotfQotCiB2b2lkIHRlc3RNdWxBcmdJbW0oaW50NjRfdCBh
LCBpbnQ2NF90IGIpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMDE0LDcgKzEwMDEsNyBA
QCB2b2lkIHRlc3RNdWxBZGRBcmdzTGVmdCgpCiAgICAgZm9yIChhdXRvIGEgOiB0ZXN0VmFsdWVz
KSB7CiAgICAgICAgIGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewogICAgICAgICAgICAgZm9y
IChhdXRvIGMgOiB0ZXN0VmFsdWVzKQotICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQ2
NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAqIGIudmFs
dWUgKyBjLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4o
KmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpLCBhLnZhbHVlICogYi52YWx1ZSArIGMu
dmFsdWUpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTAzOSwxNCArMTAyNiwxNCBAQCB2b2lk
IHRlc3RNdWxBZGRBcmdzUmlnaHQoKQogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykgewog
ICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgICAgIGZvciAoYXV0
byBjIDogdGVzdFZhbHVlcykKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4o
KmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKyBiLnZhbHVlICog
Yy52YWx1ZSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KCpjb2Rl
LCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSwgYS52YWx1ZSArIGIudmFsdWUgKiBjLnZhbHVl
KTsKICAgICAgICAgfQogICAgIH0KIH0KIAogdm9pZCB0ZXN0TXVsQWRkU2lnbkV4dGVuZDMyQXJn
c0xlZnQoKQogewotICAgIC8vIGQgPSBTRXh0MzIobikgKiAgU0V4dDMyKG0pICsgYQorICAgIC8v
IGQgPSBTRXh0MzIobikgKiBTRXh0MzIobSkgKyBhCiAgICAgUHJvY2VkdXJlIHByb2M7CiAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKIApAQCAtMTExOCw2ICsxMTA1LDg0
IEBAIHZvaWQgdGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NSaWdodCgpCiAgICAgfQogfQogCit2
b2lkIHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzTGVmdCgpCit7CisgICAgLy8gZCA9IFpFeHQz
MihuKSAqIFpFeHQzMihtKSArIGEKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgVmFsdWUqIG1WYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisgICAgVmFsdWUq
IGFWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOwor
ICAgIFZhbHVlKiBhZGRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwgbXVsVmFsdWUsIGFWYWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZFZhbHVlKTsKKworICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKCpjb2RlLCAidW1hZGRsIik7CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
ICAgICB1aW50MzJfdCB1biA9IG4udmFsdWU7CisgICAgICAgICAgICAgICAgdWludDMyX3QgdW0g
PSBtLnZhbHVlOworICAgICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+
KCpjb2RlLCB1biwgdW0sIGEudmFsdWUpOworICAgICAgICAgICAgICAgIGludDY0X3QgcmhzID0g
c3RhdGljX2Nhc3Q8aW50NjRfdD4odW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odW0pICsgYS52
YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsQWRkWmVyb0V4dGVuZDMyQXJnc1Jp
Z2h0KCkKK3sKKyAgICAvLyBkID0gYSArIFpFeHQzMihuKSAqIFpFeHQzMihtKQorICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICBWYWx1ZSogYVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBuVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAgIFZhbHVlKiBt
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOworCisg
ICAgVmFsdWUqIG11bFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9y
aWdpbigpLCBuVmFsdWUsIG1WYWx1ZSk7CisgICAgVmFsdWUqIGFkZFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBhVmFsdWUsIG11bFZhbHVlKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWRk
VmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlz
QVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJ1bWFkZGwiKTsK
KworICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0
byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVuID0gbi52YWx1ZTsKKyAg
ICAgICAgICAgICAgICB1aW50MzJfdCB1bSA9IG0udmFsdWU7CisgICAgICAgICAgICAgICAgaW50
NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIHVuLCB1bSk7CisgICAg
ICAgICAgICAgICAgaW50NjRfdCByaHMgPSBhLnZhbHVlICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
dW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odW0pOworICAgICAgICAgICAgICAgIENIRUNLKGxo
cyA9PSByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIHRl
c3RNdWxBZGRBcmdzTGVmdDMyKCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTExOTQsNyAr
MTI1OSw3IEBAIHZvaWQgdGVzdE11bFN1YkFyZ3NMZWZ0KCkKICAgICBmb3IgKGF1dG8gYSA6IHRl
c3RWYWx1ZXMpIHsKICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpCi0gICAgICAgICAgICAgICAgQ0hFQ0soaW52
b2tlPGludDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVl
ICogYi52YWx1ZSAtIGMudmFsdWUpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSksIGEudmFsdWUgKiBiLnZh
bHVlIC0gYy52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMjE5LDcgKzEyODQsNyBA
QCB2b2lkIHRlc3RNdWxTdWJBcmdzUmlnaHQoKQogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVl
cykgewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byBjIDogdGVzdFZhbHVlcykKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50
NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgLSBiLnZh
bHVlICogYy52YWx1ZSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+
KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSwgYS52YWx1ZSAtIGIudmFsdWUgKiBj
LnZhbHVlKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEyNzUsMTIgKzEzNDAsMTIgQEAgdm9p
ZCB0ZXN0TXVsU3ViQXJnc1JpZ2h0MzIoKQogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykg
ewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgICAgIGZvciAo
YXV0byBjIDogdGVzdFZhbHVlcykKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJf
dD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgLSBiLnZhbHVl
ICogYy52YWx1ZSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpj
b2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSwgYS52YWx1ZSAtIGIudmFsdWUgKiBjLnZh
bHVlKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMy
QXJncygpCit2b2lkIHRlc3RNdWxTdWJTaWduRXh0ZW5kMzIoKQogewogICAgIC8vIGQgPSBhIC0g
U0V4dDMyKG4pICogU0V4dDMyKG0pCiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMzE3LDYgKzEz
ODIsNjIgQEAgdm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyQXJncygpCiAgICAgfQogfQogCit2
b2lkIHRlc3RNdWxTdWJaZXJvRXh0ZW5kMzIoKQoreworICAgIC8vIGQgPSBhIC0gWkV4dDMyKG4p
ICogWkV4dDMyKG0pCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhVmFsdWUgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHBy
b2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpKTsKKyAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKSkpOworCisgICAgVmFsdWUqIG11bFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBuVmFsdWUsIG1WYWx1ZSk7CisgICAgVmFsdWUq
IHN1YlZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBh
VmFsdWUsIG11bFZhbHVlKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgc3ViVmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsICJ1bXN1YmwiKTsKKworICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgICAgIHVpbnQz
Ml90IHVuID0gbi52YWx1ZTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCB1bSA9IG0udmFsdWU7
CisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEu
dmFsdWUsIHVuLCB1bSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBhLnZhbHVlIC0g
c3RhdGljX2Nhc3Q8aW50NjRfdD4odW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odW0pOworICAg
ICAgICAgICAgICAgIENIRUNLKGxocyA9PSByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIHRlc3RNdWxOZWdBcmdBcmcoaW50MzJfdCBhLCBpbnQzMl90IGIp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKworICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVl
KiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZhbHVlKiBuZWdBID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBhcmdBKTsKKyAgICBWYWx1ZSogcmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBuZWdBLCBhcmdC
KTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAoaXNB
Uk02NCgpICYmIEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA+IDEpCisgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibW5lZyIpOworICAgIENIRUNLX0VRKGludm9r
ZTxpbnQzMl90PigqY29kZSwgYSwgYiksICgtYSkgKiBiKTsKK30KKwogdm9pZCB0ZXN0TXVsTmVn
QXJncygpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMzMwLDExICsxNDUxLDEzIEBAIHZv
aWQgdGVzdE11bE5lZ0FyZ3MoKQogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7CiAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpICYmIEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0
TGV2ZWwoKSA+IDEpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibW5lZyIp
OwogCiAgICAgYXV0byB0ZXN0VmFsdWVzID0gaW50NjRPcGVyYW5kcygpOwogICAgIGZvciAoYXV0
byBhIDogdGVzdFZhbHVlcykgewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsK
LSAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1
ZSkgPT0gLShhLnZhbHVlICogYi52YWx1ZSkpOworICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlKSwgLShhLnZhbHVlICogYi52YWx1ZSkp
OwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTM1NCwxMSArMTQ3Nyw4MiBAQCB2b2lkIHRlc3RN
dWxOZWdBcmdzMzIoKQogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBhZGRlZCk7CiAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKKyAgICBpZiAoaXNBUk02NCgpICYmIEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwo
KSA+IDEpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibW5lZyIpOwogCiAg
ICAgYXV0byB0ZXN0VmFsdWVzID0gaW50MzJPcGVyYW5kcygpOwogICAgIGZvciAoYXV0byBhIDog
dGVzdFZhbHVlcykgewotICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKLSAgICAg
ICAgICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSkgPT0g
LShhLnZhbHVlICogYi52YWx1ZSkpOworICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMp
CisgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIu
dmFsdWUpLCAtKGEudmFsdWUgKiBiLnZhbHVlKSk7CisgICAgfQorfQorCit2b2lkIHRlc3RNdWxO
ZWdTaWduRXh0ZW5kMzIoKQoreworICAgIC8vIGQgPSAtIChTRXh0MzIobikgKiBTRXh0MzIobSkp
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBTRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSk7CisgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgIHByb2MsIFNFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOworICAg
IFZhbHVlKiBuZWdWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmln
aW4oKSwgbXVsVmFsdWUpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBuZWdWYWx1ZSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bigqY29kZSwgInNtbmVnbCIpOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLnZhbHVlLCBtLnZhbHVlKTsK
KyAgICAgICAgICAgIGludDY0X3QgcmhzID0gLShzdGF0aWNfY2FzdDxpbnQ2NF90PihuLnZhbHVl
KSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KG0udmFsdWUpKTsKKyAgICAgICAgICAgIENIRUNLKGxo
cyA9PSByaHMpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RNdWxOZWdaZXJvRXh0
ZW5kMzIoKQoreworICAgIC8vIGQgPSAtIChaRXh0MzIobikgKiBaRXh0MzIobSkpCisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9j
LCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKSk7CisgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOworICAgIFZhbHVlKiBu
ZWdWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgbXVs
VmFsdWUpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCBuZWdWYWx1ZSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwg
InVtbmVnbCIpOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIHVpbnQzMl90
IHVuID0gbi52YWx1ZTsKKyAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbS52YWx1ZTsKKyAgICAg
ICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCB1biwgdW0pOworICAg
ICAgICAgICAgaW50NjRfdCByaHMgPSAtKHN0YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRp
Y19jYXN0PGludDY0X3Q+KHVtKSk7CisgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKICAg
ICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjNfMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzMuY3BwCmluZGV4
IDcyYjA4ZDE2YWE3MjljZGI4MzQ2ZmQyZmFhZmNhZDllMDAzOWQ2ZWIuLmMxN2FiYzczNjM0MGQ1
YWJiMzY0YzQzZjVjODYwNzEwODY2ZGE0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjNfMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
M18zLmNwcApAQCAtMzM3MCwxMyArMzM3MCwxOCBAQCB2b2lkIGFkZEFyZ1Rlc3RzKGNvbnN0IGNo
YXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKICAg
ICBSVU4odGVzdE11bEFkZEFyZ3NSaWdodDMyKCkpOwogICAgIFJVTih0ZXN0TXVsQWRkU2lnbkV4
dGVuZDMyQXJnc0xlZnQoKSk7CiAgICAgUlVOKHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzUmln
aHQoKSk7CisgICAgUlVOKHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzTGVmdCgpKTsKKyAgICBS
VU4odGVzdE11bEFkZFplcm9FeHRlbmQzMkFyZ3NSaWdodCgpKTsKICAgICBSVU4odGVzdE11bFN1
YkFyZ3NMZWZ0KCkpOwogICAgIFJVTih0ZXN0TXVsU3ViQXJnc1JpZ2h0KCkpOwogICAgIFJVTih0
ZXN0TXVsU3ViQXJnc0xlZnQzMigpKTsKICAgICBSVU4odGVzdE11bFN1YkFyZ3NSaWdodDMyKCkp
OwotICAgIFJVTih0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyQXJncygpKTsKKyAgICBSVU4odGVzdE11
bFN1YlNpZ25FeHRlbmQzMigpKTsKKyAgICBSVU4odGVzdE11bFN1Ylplcm9FeHRlbmQzMigpKTsK
ICAgICBSVU4odGVzdE11bE5lZ0FyZ3MoKSk7CiAgICAgUlVOKHRlc3RNdWxOZWdBcmdzMzIoKSk7
CisgICAgUlVOKHRlc3RNdWxOZWdTaWduRXh0ZW5kMzIoKSk7CisgICAgUlVOKHRlc3RNdWxOZWda
ZXJvRXh0ZW5kMzIoKSk7CiAgICAgCiAgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnTmVnQXJnLCBp
bnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSkKICAgICBSVU5fQklOQVJZKHRlc3RNdWxO
ZWdBcmdBcmcsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433346</attachid>
            <date>2021-07-12 13:01:35 -0700</date>
            <delta_ts>2021-07-12 13:10:48 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-227857-20210712150134.patch</filename>
            <type>text/plain</type>
            <size>45644</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Zjk2NzYxZTk2ZTViNTEyOWEzMTg1ZjQ0NjkxYjY2Y2NiYjE4Mjc0Li41ZmM4ZDdiZGU2NWM3Yjli
MmI3YjlkNDk1NDNlNWUyYWQ1Mzk2YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzUgQEAKKzIwMjEtMDctMTIgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBTTU5FR0wsIFVNTkVHTCwgVU1BRERMLCBhbmQgVU1TVUJMIGZv
ciBBUk02NCBhbmQgc2VsZWN0IHRoaXMgaW5zdHJ1Y3Rpb24gaW4gQWlyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcHJldmlvdXMgcGF0Y2hlcyBo
YXZlIGFscmVhZHkgYWRkZWQgTU5FRywgTUFERCwgTVNVQiwgU01BRERMLCBhbmQgU01TVUJMLiAK
KyAgICAgICAgVGhpcyBwYXRjaCBjb21wbGV0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgc2lnbmVkIG9y
IHVuc2lnbmVkIHZhcmlhbnRzIChTTU5FR0wsIAorICAgICAgICBVTU5FR0wsIFVNQURETCwgYW5k
IFVNU1VCTCkgb2YgdGhlbS4gSW4gYWRkaXRpb24sIHRoaXMgcGF0Y2ggcmVmYWN0b3JzIAorICAg
ICAgICB0aGUgaW1wbGVtZW50YXRpb24gYW5kIHRoZSBhc3NvY2lhdGl2ZSB0ZXN0IGNhc2VzIG9m
IE1BREQsIE1TVUIsIGFuZCBNTkVHIAorICAgICAgICB0byBiZSBtb3JlIHJlYWRhYmxlIGFuZCBt
YWludGFpbmFibGUgdy5yLnQgdGhlaXIgdmFyaWFudHMuCisKKyAgICAgICAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMjIyBTTU5FR0wvVU1ORUdMIFhkIFduIFdtICMj
IworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgU2lnbmVk
L1Vuc2lnbmVkIE11bHRpcGx5LU5lZ2F0ZSBMb25nIG11bHRpcGxpZXMgdHdvIDMyLWJpdCByZWdp
c3RlciB2YWx1ZXMsIAorICAgICAgICBuZWdhdGVzIHRoZSBwcm9kdWN0LCBhbmQgd3JpdGVzIHRo
ZSByZXN1bHQgdG8gdGhlIDY0LWJpdCBkZXN0aW5hdGlvbiByZWdpc3Rlci4gCisgICAgICAgIFRo
ZSBlcXVpdmFsZW50IHBhdHRlcm5zIGFyZSAKKworICAgICAgICBkID0gLShTRXh0MzIobikgKiBT
RXh0MzIobSkpIGFuZCBkID0gLShaRXh0MzIobikgKiBaRXh0MzIobSkpIHJlc3BlY3RpdmVseS4K
KworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50IEAwID0gUy9aRXh0MzIoVHJ1bmMo
QXJndW1lbnRSZWcoJXgwKSkpCisgICAgICAgIEludCBAMSA9IFMvWkV4dDMyKFRydW5jKEFyZ3Vt
ZW50UmVnKCV4MSkpKQorICAgICAgICBJbnQgQDIgPSBNdWwoQDAsIEAxKQorICAgICAgICBJbnQg
QDMgPSBOZWcoQDIpCisgICAgICAgIFZvaWRANCA9IFJldHVybihAMywgVGVybWluYWwpCisKKyAg
ICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMyICAgICAgJXgwLCAleDAs
ICAgICAgQDAKKyAgICAgICAgTW92ZTMyICAgICAgJXgxLCAleDEsICAgICAgQDEKKyAgICAgICAg
TXVsdGlwbHlOZWcgJXgwLCAleDEsICV4MCwgQDMKKyAgICAgICAgUmV0ICAgICAgICAgJXgwLCAg
ICAgICAgICAgQDQKKworICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBNdWx0
aXBseU5lZ1NpZ24vWmVyb0V4dGVuZCAgJXgwLCAleDEsICV4MCwgQDMKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICAgICAgICAgICV4MCwgICAgICAgICAgIEA0CisKKyAgICAgICAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjIFVNQURETCBYZCBXbiBXbSBYYSAjIyMK
KyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgVW5zaWduZWQgTXVs
dGlwbHktQWRkIExvbmcgbXVsdGlwbGllcyB0d28gMzItYml0IHJlZ2lzdGVyIHZhbHVlcywgYWRk
cyBhIDY0LWJpdCAKKyAgICAgICAgcmVnaXN0ZXIgdmFsdWUsIGFuZCB3cml0ZXMgdGhlIHJlc3Vs
dCB0byB0aGUgNjQtYml0IGRlc3RpbmF0aW9uIHJlZ2lzdGVyLiBUaGUgCisgICAgICAgIGVxdWl2
YWxlbnQgcGF0dGVybnMgYXJlIAorCisgICAgICAgIGQgPSBaRXh0MzIobikgKiBaRXh0MzIobSkg
KyBhIG9yIGQgPSBhICsgWkV4dDMyKG4pICogWkV4dDMyKG0pCisKKyAgICAgICAgR2l2ZW4gQjMg
SVI6CisgICAgICAgIEludCBAMCA9IFpFeHQzMihUcnVuYyhBcmd1bWVudFJlZygleDApKSkKKyAg
ICAgICAgSW50IEAxID0gWkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MSkpKQorICAgICAgICBJ
bnQgQDIgPSBBcmd1bWVudFJlZygleDIpCisgICAgICAgIEludCBAMyA9IE11bChAMCwgQDEpCisg
ICAgICAgIEludCBANCA9IEFkZChAMywgQDIpCisgICAgICAgIFZvaWRANSA9IFJldHVybihANCwg
VGVybWluYWwpCisKKyAgICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMy
ICAgICAgICAleDAsICV4MCwgICAgICAgICAgIEAxCisgICAgICAgIE1vdmUzMiAgICAgICAgJXgx
LCAleDEsICAgICAgICAgICBAMgorICAgICAgICBNdWx0aXBseUFkZCAgICV4MCwgJXgxLCAleDIs
ICV4MCwgQDQKKyAgICAgICAgUmV0NjQgICAgICAgICAleDAsICAgICAgICAgICAgICAgIEA1CisK
KyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAgICAgICAgTXVsdGlwbHlBZGRaZXJvRXh0
ZW5kICV4MCwgJXgxLCAleDIsICV4MCwgQDgKKyAgICAgICAgUmV0ICAgICAgICAgICAgICAgICAg
ICV4MCwgICAgICAgICAgICAgICAgQDkKKworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorICAgICAgICAjIyMgVU1TVUJMIFhkIFduIFdtIFhhICMjIworICAgICAgICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBVbnNpZ25lZCBNdWx0aXBseS1TdWJ0cmFjdCBM
b25nIG11bHRpcGxpZXMgdHdvIDMyLWJpdCByZWdpc3RlciB2YWx1ZXMsIHN1YnRyYWN0cyAKKyAg
ICAgICAgdGhlIHByb2R1Y3QgZnJvbSBhIDY0LWJpdCByZWdpc3RlciB2YWx1ZSwgYW5kIHdyaXRl
cyB0aGUgcmVzdWx0IHRvIHRoZSA2NC1iaXQgCisgICAgICAgIGRlc3RpbmF0aW9uIHJlZ2lzdGVy
LiBUaGUgZXF1aXZhbGVudCBwYXR0ZXJucyBhcmUgCisKKyAgICAgICAgZCA9IGEgLSBaRXh0MzIo
bikgKiBaRXh0MzIobSkKKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50IEAwID0g
WkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MCkpKQorICAgICAgICBJbnQgQDEgPSBaRXh0MzIo
VHJ1bmMoQXJndW1lbnRSZWcoJXgxKSkpCisgICAgICAgIEludCBAMiA9IEFyZ3VtZW50UmVnKCV4
MikKKyAgICAgICAgSW50IEAzID0gTXVsKEAwLCBAMSkKKyAgICAgICAgSW50IEA0ID0gU3ViKEAy
LCBAMykKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkKKworICAgICAgICAv
LyBPbGQgb3B0aW1pemVkIEFJUgorICAgICAgICBNb3ZlMzIgICAgICAgICV4MCwgJXgwLCAgICAg
ICAgICAgQDEKKyAgICAgICAgTW92ZTMyICAgICAgICAleDEsICV4MSwgICAgICAgICAgIEAyCisg
ICAgICAgIE11bHRpcGx5U3ViICAgJXgwLCAleDEsICV4MiwgJXgwLCBANAorICAgICAgICBSZXQ2
NCAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDUKKworICAgICAgICAvLyBOZXcgb3B0aW1p
emVkIEFJUgorICAgICAgICBNdWx0aXBseVN1Ylplcm9FeHRlbmQgJXgwLCAleDEsICV4MiwgJXgw
LCBAOAorICAgICAgICBSZXQgICAgICAgICAgICAgICAgICAgJXgwLCAgICAgICAgICAgICAgICBA
OQorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlOZWczMik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om11bHRpcGx5QWRkWmVyb0V4dGVuZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlTdWJaZXJvRXh0ZW5kMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0aXBseU5lZzY0KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlOZWdTaWduRXh0ZW5kMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0aXBseU5lZ1plcm9FeHRlbmQzMik6
CisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVzdE11
bHRpcGx5QWRkU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkWmVy
b0V4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyKToK
KyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKEpT
Qzo6dGVzdE11bHRpcGx5TmVnU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRp
cGx5TmVnWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkU2lnbkV4
dGVuZDMyTGVmdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RNdWx0aXBseUFkZFNpZ25F
eHRlbmQzMlJpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgor
ICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMu
aDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0TXVsQWRkQXJnc0xl
ZnQpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NSaWdodCk6CisgICAgICAgICh0ZXN0TXVsQWRk
U2lnbkV4dGVuZDMyQXJnc0xlZnQpOgorICAgICAgICAodGVzdE11bEFkZFplcm9FeHRlbmQzMkFy
Z3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzUmlnaHQpOgorICAg
ICAgICAodGVzdE11bFN1YkFyZ3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxTdWJBcmdzUmlnaHQp
OgorICAgICAgICAodGVzdE11bFN1YkFyZ3NSaWdodDMyKToKKyAgICAgICAgKHRlc3RNdWxTdWJT
aWduRXh0ZW5kMzIpOgorICAgICAgICAodGVzdE11bFN1Ylplcm9FeHRlbmQzMik6CisgICAgICAg
ICh0ZXN0TXVsTmVnQXJnQXJnKToKKyAgICAgICAgKHRlc3RNdWxOZWdBcmdzKToKKyAgICAgICAg
KHRlc3RNdWxOZWdBcmdzMzIpOgorICAgICAgICAodGVzdE11bE5lZ1NpZ25FeHRlbmQzMik6Cisg
ICAgICAgICh0ZXN0TXVsTmVnWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKHRlc3RNdWxTdWJTaWdu
RXh0ZW5kMzJBcmdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy90ZXN0YjNfMy5jcHA6CisgICAg
ICAgIChhZGRBcmdUZXN0cyk6CisKIDIwMjEtMDctMTAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgQ29udGludWUgdG8gY29uc3VsdCBJbmxpbmVBY2Nlc3MncyBT
dHJ1Y3R1cmUgZXZlbiBhZnRlciBzd2l0Y2hpbmcgdG8gYSBzdHViIElDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4
IGRmNjVjYjYzNjFmNGFiMDVhMDU1MGUzMGUzNGE4NTc3OWFlZGFmN2YuLjNkODVjYmI4ZGI1MzNj
ODQwN2FhYjY1YTM5MDQ0ZjliYTJiNDAyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC03NzAsNyArNzcwLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBtdWx0aXBseU5lZzMyKFJlZ2lzdGVySUQgbXVsTGVmdCwg
UmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIubXN1YjwzMj4oZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIEFSTTY0UmVnaXN0ZXJz
Ojp6cik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1uZWc8MzI+KGRlc3QsIG11bExlZnQsIG11bFJp
Z2h0KTsKICAgICB9CiAKICAgICB2b2lkIG11bHRpcGx5QWRkNjQoUmVnaXN0ZXJJRCBtdWxMZWZ0
LCBSZWdpc3RlcklEIG11bFJpZ2h0LCBSZWdpc3RlcklEIHN1bW1hbmQsIFJlZ2lzdGVySUQgZGVz
dCkKQEAgLTc4Myw2ICs3ODMsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zbWFk
ZGwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIHN1bW1hbmQpOwogICAgIH0KIAorICAgIHZvaWQg
bXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIoUmVnaXN0ZXJJRCBtdWxMZWZ0LCBSZWdpc3RlcklEIG11
bFJpZ2h0LCBSZWdpc3RlcklEIHN1bW1hbmQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnVtYWRkbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCwgc3VtbWFuZCk7
CisgICAgfQorCiAgICAgdm9pZCBtdWx0aXBseVN1YjY0KFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVn
aXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBtaW51ZW5kLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tc3ViPDY0PihkZXN0LCBtdWxMZWZ0LCBtdWxSaWdo
dCwgbWludWVuZCk7CkBAIC03OTMsOSArNzk4LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuc21zdWJsKGRlc3QsIG11bExlZnQsIG11bFJpZ2h0LCBtaW51ZW5kKTsKICAgICB9CiAK
KyAgICB2b2lkIG11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVn
aXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBtaW51ZW5kLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci51bXN1YmwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQs
IG1pbnVlbmQpOworICAgIH0KKwogICAgIHZvaWQgbXVsdGlwbHlOZWc2NChSZWdpc3RlcklEIG11
bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm1zdWI8NjQ+KGRlc3QsIG11bExlZnQsIG11bFJpZ2h0LCBBUk02NFJl
Z2lzdGVyczo6enIpOworICAgICAgICBtX2Fzc2VtYmxlci5tbmVnPDY0PihkZXN0LCBtdWxMZWZ0
LCBtdWxSaWdodCk7CisgICAgfQorCisgICAgdm9pZCBtdWx0aXBseU5lZ1NpZ25FeHRlbmQzMihS
ZWdpc3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNtbmVnbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdo
dCk7CisgICAgfQorCisgICAgdm9pZCBtdWx0aXBseU5lZ1plcm9FeHRlbmQzMihSZWdpc3RlcklE
IG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnVtbmVnbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCk7CiAgICAg
fQogCiAgICAgdm9pZCBtdWx0aXBseVNpZ25FeHRlbmQzMihSZWdpc3RlcklEIGxlZnQsIFJlZ2lz
dGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggZDI5ZjkzNjBhMzY3ZDBhMTEzNjNlODdiODU2OTNl
NTg0ZjNlN2VhNC4uNzFjZDIzOTk4Y2U3YTI0MTIwMTk2ZDBmMDQ1NjI0NmQxNGQ5MThhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTkyMSw3
ICs5MjEsNyBAQCB2b2lkIHRlc3RNdWx0aXBseVNpZ25FeHRlbmQzMigpCiAgICAgfQogfQogCi12
b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMkxlZnQoKQordm9pZCB0ZXN0TXVsdGlwbHlB
ZGRTaWduRXh0ZW5kMzIoKQogewogICAgIC8vIGQgPSBTRXh0MzIobikgKiBTRXh0MzIobSkgKyBh
CiAgICAgYXV0byBhZGQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKQEAgLTk0
NCwyNSArOTQ0LDI4IEBAIHZvaWQgdGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyTGVmdCgpCiAg
ICAgfQogfQogCi12b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMlJpZ2h0KCkKK3ZvaWQg
dGVzdE11bHRpcGx5QWRkWmVyb0V4dGVuZDMyKCkKIHsKLSAgICAvLyBkID0gYSArIFNFeHQzMihu
KSAqIFNFeHQzMihtKQorICAgIC8vIGQgPSBaRXh0MzIobikgKiBaRXh0MzIobSkgKyBhCiAgICAg
YXV0byBhZGQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAotICAgICAgICBqaXQubXVsdGlwbHlBZGRTaWduRXh0
ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgaml0Lm11bHRpcGx5QWRkWmVy
b0V4dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjph
cmd1bWVudEdQUjEsIAogICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCAKLSAgICAg
ICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCiAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7CiAKICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAg
ICAgaml0LnJldCgpOwogICAgIH0pOwogCi0gICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRz
KCkpIHsKLSAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKLSAgICAgICAg
ICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKQotICAgICAgICAgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ2NF90PihhZGQsIGEsIG4sIG0pLCBhICsgc3RhdGljX2Nhc3Q8aW50NjRf
dD4obikgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtKSk7CisgICAgZm9yIChhdXRvIG4gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICAgICAgdWludDMyX3QgdW4gPSBuOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbTsK
KyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oYWRkLCBuLCBtLCBhKSwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4odW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odW0pICsgYSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMDkxLDcgKzEwOTQsNyBA
QCB2b2lkIHRlc3RTdWI2NEFyZ0ltbTY0KCkKIAogdm9pZCB0ZXN0TXVsdGlwbHlTdWJTaWduRXh0
ZW5kMzIoKQogewotICAgIC8vIGQgPSBhIC0gU0V4dDMyKG4pICogIFNFeHQzMihtKQorICAgIC8v
IGQgPSBhIC0gU0V4dDMyKG4pICogU0V4dDMyKG0pCiAgICAgYXV0byBzdWIgPSBjb21waWxlKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIApAQCAtMTExMiw2ICsxMTE1LDcxIEBAIHZvaWQgdGVzdE11bHRpcGx5U3ViU2lnbkV4dGVu
ZDMyKCkKICAgICB9CiB9CiAKK3ZvaWQgdGVzdE11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKCkKK3sK
KyAgICAvLyBkID0gYSAtIChaRXh0MzIobikgKiBaRXh0MzIobSkpCisgICAgYXV0byBzdWIgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKKworICAgICAgICBqaXQubXVsdGlwbHlTdWJaZXJvRXh0ZW5kMzIoR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKKyAg
ICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAg
ICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJh
bmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICAgICAg
dWludDMyX3QgdW4gPSBuOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oc3ViLCBhLCBuLCBtKSwgYSAtIHN0
YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE11bHRpcGx5TmVnU2ln
bkV4dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gLSAoU0V4dDMyKG4pICogU0V4dDMyKG0pKQorICAg
IGF1dG8gbmVnID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0Lm11bHRpcGx5TmVnU2lnbkV4
dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpCisg
ICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4obmVnLCBuLCBtKSwgLShzdGF0aWNf
Y2FzdDxpbnQ2NF90PihuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KG0pKSk7CisgICAgfQorfQor
Cit2b2lkIHRlc3RNdWx0aXBseU5lZ1plcm9FeHRlbmQzMigpCit7CisgICAgLy8gZCA9IC0gWkV4
dDMyKG4pICogWkV4dDMyKG0pCisgICAgYXV0byBuZWcgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAg
ICBqaXQubXVsdGlwbHlOZWdaZXJvRXh0ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBl
bWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisK
KyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8g
bSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgdWludDMyX3QgdW4gPSBuOworICAg
ICAgICAgICAgdWludDMyX3QgdW0gPSBtOworICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVp
bnQ2NF90PihuZWcsIG4sIG0pLCAtKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1bikgKiBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odW0pKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgdGVzdEV4
dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIoKQogewogICAgIHVpbnQzMl90IHNyYyA9IDB4ZjBmMGYw
ZjA7CkBAIC00MTY0LDkgKzQyMzIsMTIgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBX
VEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRlc3RTdWI2NEltbTY0
KCkpOwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW02NCgpKTsKIAotICAgIFJVTih0ZXN0TXVsdGlw
bHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkpOwotICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0
ZW5kMzJSaWdodCgpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKCkpOwor
ICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIoKSk7CiAgICAgUlVOKHRlc3RNdWx0
aXBseVN1YlNpZ25FeHRlbmQzMigpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5U3ViWmVyb0V4dGVu
ZDMyKCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlOZWdTaWduRXh0ZW5kMzIoKSk7CisgICAgUlVO
KHRlc3RNdWx0aXBseU5lZ1plcm9FeHRlbmQzMigpKTsKIAogICAgIFJVTih0ZXN0RXh0cmFjdFVu
c2lnbmVkQml0ZmllbGQzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxk
NjQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDJi
NTU2ZDcxODMzMzcyMGJmYTc4NzNjNzc5YmQyOTFmZDEyNjE3OTEuLjI4MzkxZTI1MzQwYzhjZDE1
NjE0Mjc3YjZjOTFmN2M2MzMyOWJmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCkBAIC0yNDg1LDYgKzI0ODUsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxv
d2VyKCkKICAgICB7CiAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CisKKyAgICAgICAgYXV0
byBpc01lcmdlYWJsZUIzT3Bjb2RlID0gWyZdIChWYWx1ZSogdiwgQjM6Ok9wY29kZSBiM09wY29k
ZSkgLT4gYm9vbCB7IAorICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IGIzT3Bjb2RlIHx8
ICFjYW5CZUludGVybmFsKHYpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH07CisK
ICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICBjYXNlIEIzOjpO
b3A6IHsKICAgICAgICAgICAgIC8vIFllcywgd2Ugd2lsbCB0b3RhbGx5IHNlZSBOb3AncyBiZWNh
dXNlIHNvbWUgcGhhc2VzIHdpbGwgcmVwbGFjZVdpdGhOb3AoKSBpbnN0ZWFkIG9mCkBAIC0yNTY3
LDcyICsyNTc2LDcxIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAg
ICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAg
ICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOwogICAgICAgICAgICAgVmFsdWUq
IHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CiAKLSAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlk
Rm9ybShNdWx0aXBseUFkZDY0LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRt
cCkgCi0gICAgICAgICAgICAgICAgPT0gaXNWYWxpZEZvcm0oTXVsdGlwbHlBZGRTaWduRXh0ZW5k
MzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSk7Ci0gICAgICAgICAg
ICBBaXI6Ok9wY29kZSBtdWx0aXBseUFkZE9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlw
bHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgIGlm
IChpc1ZhbGlkRm9ybShtdWx0aXBseUFkZE9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6
OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFpbW0ocmlnaHQpIHx8IG1f
dmFsdWVUb1RtcFtyaWdodF0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBs
eSA9IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wgeyAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh2LT5vcGNvZGUoKSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwodikpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxkKDApKSB8fCBtX2xvY2tlZC5jb250YWlucyh2LT5j
aGlsZCgxKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH07
Ci0KLSAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlTRXh0MzIgPSBbJl0gKFZhbHVlKiB2KSAt
PiBib29sIHsgCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi0+b3Bjb2RlKCkgPT0g
U0V4dDMyICYmIGNhbkJlSW50ZXJuYWwodik7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgLy8gTUFERDogZCA9IG4gKiBtICsgYQotICAgICAgICAgICAgICAg
ICAgICBhdXRvIHRyeUFwcGVuZE11bHRpcGx5QWRkID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUq
IHJpZ2h0KSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdHJ5TXVsdGlw
bHkobGVmdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5TGVmdCA9IGxlZnQtPmNoaWxkKDAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQgPSBsZWZ0LT5j
aGlsZCgxKTsKKyAgICAgICAgICAgIGF1dG8gdHJ5TXVsdGlwbHlBZGQgPSBbJl0gKCkgLT4gYm9v
bCB7CisgICAgICAgICAgICAgICAgaWYgKGltbShyaWdodCkgJiYgIW1fdmFsdWVUb1RtcFtyaWdo
dF0pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICAgICAgICAg
IC8vIE1BREQ6IGQgPSBuICogbSArIGEKKyAgICAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZE11
bHRpcGx5QWRkID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGxlZnQtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRl
cm5hbChsZWZ0KSB8fCBtX2xvY2tlZC5jb250YWlucyhyaWdodCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBs
eUxlZnQgPSBsZWZ0LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRp
cGx5UmlnaHQgPSBsZWZ0LT5jaGlsZCgxKTsKKyAgICAgICAgICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseUFkZDMyLCBNdWx0aXBseUFk
ZDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHRyeU5ld0Fp
ck9wY29kZSA9IFsmXSAoKSAtPiBBaXI6Ok9wY29kZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYWlyT3Bjb2RlICE9IE11bHRpcGx5QWRkNjQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNNQURE
TDogZCA9IFNFeHQzMihuKSAqIFNFeHQzMihtKSArIGEKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtdWx0aXBseUFkZE9wY29kZSA9PSBNdWx0aXBseUFkZDY0ICYmIHRyeVNFeHQzMihtdWx0
aXBseUxlZnQpICYmIHRyeVNFeHQzMihtdWx0aXBseVJpZ2h0KSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZChNdWx0aXBseUFkZFNpZ25FeHRlbmQzMiwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRtcChtdWx0aXBseUxlZnQtPmNoaWxkKDApKSwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChtdWx0aXBseVJpZ2h0LT5jaGlsZCgwKSks
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAocmlnaHQpLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG1fdmFsdWUpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxlZnQpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5UmlnaHQpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlMZWZ0LCBT
RXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlSaWdodCwgU0V4dDMyKSkgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5QWRkU2lnbkV4dGVuZDMy
OworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVU1BRERMOiBkID0gWkV4dDMyKG4pICogWkV4
dDMyKG0pICsgYQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNv
ZGUobXVsdGlwbHlMZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlS
aWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRp
cGx5QWRkWmVyb0V4dGVuZDMyOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6
T29wczsKKyAgICAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kKG11bHRpcGx5QWRkT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0KSwgdG1wKG11bHRpcGx5
UmlnaHQpLCB0bXAocmlnaHQpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBB
aXI6Ok9wY29kZSBuZXdBaXJPcGNvZGUgPSB0cnlOZXdBaXJPcGNvZGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG5ld0Fpck9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1w
LCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQo
bmV3QWlyT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSksIHRtcChtdWx0aXBseVJp
Z2h0LT5jaGlsZCgwKSksIHRtcChyaWdodCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxlZnQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21taXRJbnRlcm5hbChsZWZ0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRyeUFwcGVuZE11bHRpcGx5QWRkKGxlZnQsIHJp
Z2h0KSB8fCB0cnlBcHBlbmRNdWx0aXBseUFkZChyaWdodCwgbGVmdCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKGFpck9wY29kZSwgQXJnOjpUbXAsIEFy
Zzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMobXVs
dGlwbHlMZWZ0KSB8fCBtX2xvY2tlZC5jb250YWlucyhtdWx0aXBseVJpZ2h0KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5k
KGFpck9wY29kZSwgdG1wKG11bHRpcGx5TGVmdCksIHRtcChtdWx0aXBseVJpZ2h0KSwgdG1wKHJp
Z2h0KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwo
bGVmdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
IH07CiAKLSAgICAgICAgICAgIC8vIGFkZC13aXRoLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBTaGlm
dFR5cGUgYW1vdW50KQotICAgICAgICAgICAgYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6QjM6
Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bjb2RlIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2gg
KG9wY29kZSkgewotICAgICAgICAgICAgICAgIGNhc2UgU2hsOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQs
IG1fdmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBTU2hyOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRSaWdodFNoaWZ0MzIsIEFkZFJp
Z2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgICAgICBjYXNlIFpTaHI6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2lnbmVk
UmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsK
LSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWly
OjpPb3BzOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ5QXBw
ZW5kTXVsdGlwbHlBZGQobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZE11bHRpcGx5QWRkKHJpZ2h0
LCBsZWZ0KTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQWRk
QW5kU2hpZnQgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAg
ICAgICAgICAgaWYgKHRyeU11bHRpcGx5QWRkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICAvLyBhZGQtd2l0aC1zaGlmdCBQYXR0ZXJuOiBuICsgKG0gU2hpZnRUeXBl
IGFtb3VudCkKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQWRkV2l0aFNoaWZ0ID0gWyZdIChW
YWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBhdXRv
IHRyeU9wY29kZSA9IFsmXSAoQjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bjb2RlIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBTaGw6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlw
ZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgU1NocjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnlPcGNvZGVGb3JUeXBlKEFkZFJpZ2h0U2hpZnQzMiwgQWRkUmlnaHRTaGlmdDY0LCBtX3Zh
bHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFpTaHI6CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRVbnNpZ25lZFJpZ2h0U2hp
ZnQzMiwgQWRkVW5zaWduZWRSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWly
OjpPb3BzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKwogICAg
ICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZShyaWdodC0+b3Bjb2Rl
KCkpOwogICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwg
QXJnOjpUbXAsIEFyZzo6SW1tLCBBcmc6OlRtcCkpIAogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yNjQ5LDcgKzI2NTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKHRyeUFwcGVu
ZEFkZEFuZFNoaWZ0KGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRBZGRBbmRTaGlmdChyaWdodCwg
bGVmdCkpCisgICAgICAgICAgICBpZiAodHJ5QXBwZW5kQWRkV2l0aFNoaWZ0KGxlZnQsIHJpZ2h0
KSB8fCB0cnlBcHBlbmRBZGRXaXRoU2hpZnQocmlnaHQsIGxlZnQpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgYXBwZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGREb3Vi
bGUsIEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4obGVmdCwgcmlnaHQpOwpAQCAtMjY2MCw3MiArMjY2
OCw2NCBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGls
ZCgwKTsKICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOwogCi0g
ICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseVN1Yk9wY29kZSA9IHRyeU9wY29kZUZvclR5
cGUoTXVsdGlwbHlTdWIzMiwgTXVsdGlwbHlTdWI2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAg
ICAgICAgIGlmIChtdWx0aXBseVN1Yk9wY29kZSAhPSBBaXI6Ok9vcHMKLSAgICAgICAgICAgICAg
ICAmJiBpc1ZhbGlkRm9ybShtdWx0aXBseVN1Yk9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBB
cmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBseSA9
IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICBpZiAodi0+b3Bj
b2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKHYpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFp
bnModi0+Y2hpbGQoMCkpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxkKDEpKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5k
TXVsdGlwbHlTdWIgPSBbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgaWYgKGltbShy
aWdodCkgJiYgIW1fdmFsdWVUb1RtcFtyaWdodF0pCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICAgICAgICAgIC8vIE1TVUI6IGQgPSBhIC0gbiAqIG0KLSAgICAg
ICAgICAgICAgICBpZiAoKCFpbW0ocmlnaHQpIHx8IG1fdmFsdWVUb1RtcFtyaWdodF0pICYmIHRy
eU11bHRpcGx5KHJpZ2h0KSkgewotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlM
ZWZ0ID0gcmlnaHQtPmNoaWxkKDApOwotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlw
bHlSaWdodCA9IHJpZ2h0LT5jaGlsZCgxKTsKLQorICAgICAgICAgICAgICAgIGlmIChtX2xvY2tl
ZC5jb250YWlucyhsZWZ0KSB8fCByaWdodC0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVy
bmFsKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSByaWdodC0+Y2hpbGQoMCk7CisgICAgICAgICAg
ICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQgPSByaWdodC0+Y2hpbGQoMSk7CisgICAgICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseVN1
YjMyLCBNdWx0aXBseVN1YjY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGF1
dG8gdHJ5TmV3QWlyT3Bjb2RlID0gWyZdICgpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGFpck9wY29kZSAhPSBNdWx0aXBseVN1YjY0KQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAgICAgICAgLy8gU01TVUJM
OiBkID0gYSAtIFNFeHQzMihuKSAqIFNFeHQzMihtKQotICAgICAgICAgICAgICAgICAgICBpZiAo
bXVsdGlwbHlTdWJPcGNvZGUgPT0gTXVsdGlwbHlTdWI2NAotICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgaXNWYWxpZEZvcm0oTXVsdGlwbHlTdWJTaWduRXh0ZW5kMzIsIEFyZzo6VG1wLCBBcmc6
OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byB0cnlTRXh0MzIgPSBbJl0gKFZhbHVlKiB2KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHYtPm9wY29kZSgpICE9IFNFeHQzMiB8fCAhY2FuQmVJbnRlcm5hbCh2KSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kTXVsdGlwbHlTdWJTaWduRXh0ZW5k
MzIgPSBbJl0gKCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0
cnlTRXh0MzIobXVsdGlwbHlMZWZ0KSB8fCAhdHJ5U0V4dDMyKG11bHRpcGx5UmlnaHQpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kKE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5TGVmdC0+Y2hpbGQoMCkpLCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5UmlnaHQtPmNoaWxkKDAp
KSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChsZWZ0KSwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChtX3ZhbHVlKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5TGVmdCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9OwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTXVsdGlwbHlTdWJTaWduRXh0ZW5k
MzIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVs
dGlwbHlMZWZ0LCBTRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlSaWdodCwg
U0V4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlTdWJTaWdu
RXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIC8vIFVNU1VCTDogZCA9IGEgLSBaRXh0MzIo
bikgKiBaRXh0MzIobSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNv
ZGUobXVsdGlwbHlMZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlS
aWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlT
dWJaZXJvRXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7Cisg
ICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgICAgICBhcHBlbmQobXVsdGlwbHlT
dWJPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQpLCB0bXAobXVsdGlwbHlSaWdodCksIHRtcChsZWZ0
KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBuZXdBaXJPcGNv
ZGUgPSB0cnlOZXdBaXJPcGNvZGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0o
bmV3QWlyT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKG5ld0Fpck9wY29kZSwgdG1wKG11bHRpcGx5TGVm
dC0+Y2hpbGQoMCkpLCB0bXAobXVsdGlwbHlSaWdodC0+Y2hpbGQoMCkpLCB0bXAobGVmdCksIHRt
cChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5
TGVmdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5UmlnaHQp
OwogICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBzdWItd2l0aC1z
aGlmdCBQYXR0ZXJuOiBuIC0gKG0gU2hpZnRUeXBlIGFtb3VudCkKLSAgICAgICAgICAgIGF1dG8g
dHJ5T3Bjb2RlID0gWyZdIChKU0M6OkIzOjpPcGNvZGUgb3Bjb2RlKSAtPiBBaXI6Ok9wY29kZSB7
Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKLSAgICAgICAgICAgICAgICBjYXNl
IFNobDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViTGVm
dFNoaWZ0MzIsIFN1YkxlZnRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOwotICAgICAgICAgICAg
ICAgIGNhc2UgU1NocjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5
cGUoU3ViUmlnaHRTaGlmdDMyLCBTdWJSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBaU2hyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5
T3Bjb2RlRm9yVHlwZShTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMiwgU3ViVW5zaWduZWRSaWdodFNo
aWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShhaXJPcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRt
cCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhtdWx0aXBseUxlZnQpIHx8
IG1fbG9ja2VkLmNvbnRhaW5zKG11bHRpcGx5UmlnaHQpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYXBwZW5kKGFpck9wY29kZSwgdG1wKG11bHRp
cGx5TGVmdCksIHRtcChtdWx0aXBseVJpZ2h0KSwgdG1wKGxlZnQpLCB0bXAobV92YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH07CiAKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRN
dWx0aXBseVN1YigpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgLy8g
c3ViLXdpdGgtc2hpZnQgUGF0dGVybjogbiAtIChtIFNoaWZ0VHlwZSBhbW91bnQpCiAgICAgICAg
ICAgICBhdXRvIHRyeUFwcGVuZFN1YkFuZFNoaWZ0ID0gWyZdICgpIC0+IGJvb2wgeworICAgICAg
ICAgICAgICAgIGF1dG8gdHJ5T3Bjb2RlID0gWyZdIChCMzo6T3Bjb2RlIG9wY29kZSkgLT4gQWly
OjpPcGNvZGUgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAg
ICAgICAgICAgICAgICBjYXNlIFNobDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnlPcGNvZGVGb3JUeXBlKFN1YkxlZnRTaGlmdDMyLCBTdWJMZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+
dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViUmlnaHRTaGlmdDMyLCBTdWJSaWdo
dFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgWlNo
cjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YlVu
c2lnbmVkUmlnaHRTaGlmdDMyLCBTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBBaXI6Ok9vcHM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9OworCiAgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2Rl
KHJpZ2h0LT5vcGNvZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNv
ZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3NTAsMjAgKzI3NTAsNDUgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTmVnOiB7Ci0gICAgICAgICAgICBBaXI6Ok9wY29k
ZSBtdWx0aXBseU5lZ09wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlOZWczMiwgTXVs
dGlwbHlOZWc2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgIGlmIChtdWx0aXBseU5l
Z09wY29kZSAhPSBBaXI6Ok9vcHMKLSAgICAgICAgICAgICAgICAmJiBpc1ZhbGlkRm9ybShtdWx0
aXBseU5lZ09wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkKLSAgICAgICAgICAg
ICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gTXVsCi0gICAgICAgICAgICAg
ICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKLSAgICAgICAgICAgICAg
ICBWYWx1ZSogbXVsdGlwbHlPcGVyYXRpb24gPSBtX3ZhbHVlLT5jaGlsZCgwKTsKLSAgICAgICAg
ICAgICAgICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbXVsdGlwbHlPcGVyYXRpb24tPmNoaWxkKDAp
OwotICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0ID0gbXVsdGlwbHlPcGVyYXRp
b24tPmNoaWxkKDEpOwotICAgICAgICAgICAgICAgIGlmICghbV9sb2NrZWQuY29udGFpbnMobXVs
dGlwbHlMZWZ0KSAmJiAhbV9sb2NrZWQuY29udGFpbnMobXVsdGlwbHlSaWdodCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kKG11bHRpcGx5TmVnT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0
KSwgdG1wKG11bHRpcGx5UmlnaHQpLCB0bXAobV92YWx1ZSkpOwotICAgICAgICAgICAgICAgICAg
ICBjb21taXRJbnRlcm5hbChtdWx0aXBseU9wZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kTXVsdGlwbHlOZWcgPSBbJl0gKCkg
LT4gYm9vbCB7CisgICAgICAgICAgICAgICAgLy8gTU5FRyA6IGQgPSAtKG4gKiBtKQorICAgICAg
ICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5C
ZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSBtX3ZhbHVlLT5j
aGlsZCgwKS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQg
PSBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSk7CisgICAgICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseU5lZzMyLCBNdWx0aXBseU5l
ZzY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGF1dG8gdHJ5TmV3QWlyT3Bj
b2RlID0gWyZdICgpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFp
ck9wY29kZSAhPSBNdWx0aXBseU5lZzY0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEFpcjo6T29wczsKKyAgICAgICAgICAgICAgICAgICAgLy8gU01ORUcgOiBkID0gLShTRXh0MzIo
bikgKiBTRXh0MzIobSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChpc01lcmdlYWJsZUIzT3Bj
b2RlKG11bHRpcGx5TGVmdCwgU0V4dDMyKSAmJiBpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5
UmlnaHQsIFNFeHQzMikpIAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5
TmVnU2lnbkV4dGVuZDMyOworICAgICAgICAgICAgICAgICAgICAvLyBVTU5FRzogZCA9IC0oWkV4
dDMyKG4pICogWkV4dDMyKG0pKQorICAgICAgICAgICAgICAgICAgICBpZiAoaXNNZXJnZWFibGVC
M09wY29kZShtdWx0aXBseUxlZnQsIFpFeHQzMikgJiYgaXNNZXJnZWFibGVCM09wY29kZShtdWx0
aXBseVJpZ2h0LCBaRXh0MzIpKSAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNdWx0
aXBseU5lZ1plcm9FeHRlbmQzMjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29w
czsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgbmV3
QWlyT3Bjb2RlID0gdHJ5TmV3QWlyT3Bjb2RlKCk7CisgICAgICAgICAgICAgICAgaWYgKGlzVmFs
aWRGb3JtKG5ld0Fpck9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kKG5ld0Fpck9wY29kZSwgdG1wKG11bHRpcGx5TGVmdC0+
Y2hpbGQoMCkpLCB0bXAobXVsdGlwbHlSaWdodC0+Y2hpbGQoMCkpLCB0bXAobV92YWx1ZSkpOwor
ICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxlZnQpOworICAgICAg
ICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseVJpZ2h0KTsKKyAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKGFpck9wY29kZSwgQXJnOjpUbXAsIEFy
Zzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMobXVsdGlwbHlMZWZ0KSB8fCBtX2xv
Y2tlZC5jb250YWlucyhtdWx0aXBseVJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIGFwcGVuZChhaXJPcGNvZGUsIHRtcChtdWx0aXBseUxl
ZnQpLCB0bXAobXVsdGlwbHlSaWdodCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAg
Y29tbWl0SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHRyeUFwcGVuZE11bHRp
cGx5TmVnKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhcHBlbmRV
bk9wPE5lZzMyLCBOZWc2NCwgTmVnYXRlRG91YmxlLCBOZWdhdGVGbG9hdD4obV92YWx1ZS0+Y2hp
bGQoMCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggMDVkYzNhOWZlYzQ2OTY4NDAzMWQ4OGQ3M2Vj
MzdjYzA1OGJlMWY1Ny4uNjRjYTc3N2JmMDY1ZWVmNzg3NmE5MDkyODQ5YWQ1NWI4MjQ5YmQ3YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBA
IC0yNTQsNiArMjU0LDkgQEAgYXJtNjQ6IE11bHRpcGx5QWRkNjQgVTpHOjY0LCBVOkc6NjQsIFU6
Rzo2NCwgRDpHOjY0CiBhcm02NDogTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIgVTpHOjMyLCBVOkc6
MzIsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcCwgVG1wCiAKK2FybTY0OiBNdWx0
aXBseUFkZFplcm9FeHRlbmQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjY0LCBEOkc6NjQKKyAgICBU
bXAsIFRtcCwgVG1wLCBUbXAKKwogYXJtNjQ6IE11bHRpcGx5U3ViMzIgVTpHOjMyLCBVOkc6MzIs
IFU6RzozMiwgWkQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAsIFRtcAogCkBAIC0yNjMsMTMgKzI2
NiwyMiBAQCBhcm02NDogTXVsdGlwbHlTdWI2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6
NjQKIGFybTY0OiBNdWx0aXBseVN1YlNpZ25FeHRlbmQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjY0
LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wLCBUbXAKIAorYXJtNjQ6IE11bHRpcGx5U3ViWmVy
b0V4dGVuZDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBU
bXAsIFRtcAorCiBhcm02NDogTXVsdGlwbHlOZWczMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgog
ICAgIFRtcCwgVG1wLCBUbXAKIAogYXJtNjQ6IE11bHRpcGx5TmVnNjQgVTpHOjY0LCBVOkc6NjQs
IFpEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCiAKLWFybTY0OiBNdWx0aXBseVNpZ25FeHRlbmQz
MiBVOkc6MzIsIFU6RzozMiwgWkQ6Rzo2NAorYXJtNjQ6IE11bHRpcGx5TmVnU2lnbkV4dGVuZDMy
IFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgVG1wCisKK2FybTY0OiBNdWx0
aXBseU5lZ1plcm9FeHRlbmQzMiBVOkc6MzIsIFU6RzozMiwgRDpHOjY0CisgICAgVG1wLCBUbXAs
IFRtcAorCithcm02NDogTXVsdGlwbHlTaWduRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2
NAogICAgIFRtcCwgVG1wLCBUbXAKIAogYXJtNjQ6IERpdjMyIFU6RzozMiwgVTpHOjMyLCBaRDpH
OjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXggOWM3ZDI5OThlMmE4OTBmNWVkZTcw
ZWI2YjllMGY5OTE5NDdmYTExZi4uZjhiZTc3OTNjZWFkNWQyM2RkOTYwZTUxNDBmYWY4NzA0Y2Vh
ZjRjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApAQCAtOTEzLDEzICs5MTMsMTggQEAg
dm9pZCB0ZXN0TXVsQWRkQXJnc0xlZnQzMigpOwogdm9pZCB0ZXN0TXVsQWRkQXJnc1JpZ2h0MzIo
KTsKIHZvaWQgdGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KCk7CiB2b2lkIHRlc3RNdWxB
ZGRTaWduRXh0ZW5kMzJBcmdzUmlnaHQoKTsKK3ZvaWQgdGVzdE11bEFkZFplcm9FeHRlbmQzMkFy
Z3NMZWZ0KCk7Cit2b2lkIHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzUmlnaHQoKTsKIHZvaWQg
dGVzdE11bFN1YkFyZ3NMZWZ0KCk7CiB2b2lkIHRlc3RNdWxTdWJBcmdzUmlnaHQoKTsKIHZvaWQg
dGVzdE11bFN1YkFyZ3NMZWZ0MzIoKTsKIHZvaWQgdGVzdE11bFN1YkFyZ3NSaWdodDMyKCk7Ci12
b2lkIHRlc3RNdWxTdWJTaWduRXh0ZW5kMzJBcmdzKCk7Cit2b2lkIHRlc3RNdWxTdWJTaWduRXh0
ZW5kMzIoKTsKK3ZvaWQgdGVzdE11bFN1Ylplcm9FeHRlbmQzMigpOwogdm9pZCB0ZXN0TXVsTmVn
QXJncygpOwogdm9pZCB0ZXN0TXVsTmVnQXJnczMyKCk7Cit2b2lkIHRlc3RNdWxOZWdTaWduRXh0
ZW5kMzIoKTsKK3ZvaWQgdGVzdE11bE5lZ1plcm9FeHRlbmQzMigpOwogdm9pZCB0ZXN0TXVsQXJn
RG91YmxlKGRvdWJsZSk7CiB2b2lkIHRlc3RNdWxBcmdzRG91YmxlKGRvdWJsZSwgZG91YmxlKTsK
IHZvaWQgdGVzdENhbGxTaW1wbGVEb3VibGUoZG91YmxlLCBkb3VibGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXggOGY2MGZjYzRhNGEyZWYzNTQyZTY3NDFjMjUwYWU5
Zjk4ZGI2ZGFiNi4uMTcxYjgzNzgxMzI1N2YxZDNlYzA2MmU5ZjY4NzkxZWI3YTJkMjBiNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCkBAIC04NzQsMTkgKzg3NCw2IEBAIHZv
aWQgdGVzdE11bEFyZ05lZ0FyZyhpbnQgYSwgaW50IGIpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgKiAoLWIpKTsKIH0KIAotdm9pZCB0ZXN0TXVsTmVnQXJn
QXJnKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBuZWdB
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBhcmdBKTsKLSAg
ICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdp
bigpLCBuZWdBLCBhcmdCKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJv
YywgYSwgYikgPT0gKC1hKSAqIGIpOwotfQotCiB2b2lkIHRlc3RNdWxBcmdJbW0oaW50NjRfdCBh
LCBpbnQ2NF90IGIpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMDE0LDcgKzEwMDEsNyBA
QCB2b2lkIHRlc3RNdWxBZGRBcmdzTGVmdCgpCiAgICAgZm9yIChhdXRvIGEgOiB0ZXN0VmFsdWVz
KSB7CiAgICAgICAgIGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewogICAgICAgICAgICAgZm9y
IChhdXRvIGMgOiB0ZXN0VmFsdWVzKQotICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQ2
NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAqIGIudmFs
dWUgKyBjLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4o
KmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpLCBhLnZhbHVlICogYi52YWx1ZSArIGMu
dmFsdWUpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTAzOSwxNCArMTAyNiwxNCBAQCB2b2lk
IHRlc3RNdWxBZGRBcmdzUmlnaHQoKQogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykgewog
ICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgICAgIGZvciAoYXV0
byBjIDogdGVzdFZhbHVlcykKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4o
KmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKyBiLnZhbHVlICog
Yy52YWx1ZSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KCpjb2Rl
LCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSwgYS52YWx1ZSArIGIudmFsdWUgKiBjLnZhbHVl
KTsKICAgICAgICAgfQogICAgIH0KIH0KIAogdm9pZCB0ZXN0TXVsQWRkU2lnbkV4dGVuZDMyQXJn
c0xlZnQoKQogewotICAgIC8vIGQgPSBTRXh0MzIobikgKiAgU0V4dDMyKG0pICsgYQorICAgIC8v
IGQgPSBTRXh0MzIobikgKiBTRXh0MzIobSkgKyBhCiAgICAgUHJvY2VkdXJlIHByb2M7CiAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKIApAQCAtMTExOCw2ICsxMTA1LDg0
IEBAIHZvaWQgdGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NSaWdodCgpCiAgICAgfQogfQogCit2
b2lkIHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzTGVmdCgpCit7CisgICAgLy8gZCA9IFpFeHQz
MihuKSAqIFpFeHQzMihtKSArIGEKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgVmFsdWUqIG1WYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisgICAgVmFsdWUq
IGFWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOwor
ICAgIFZhbHVlKiBhZGRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwgbXVsVmFsdWUsIGFWYWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZFZhbHVlKTsKKworICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKCpjb2RlLCAidW1hZGRsIik7CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
ICAgICB1aW50MzJfdCB1biA9IG4udmFsdWU7CisgICAgICAgICAgICAgICAgdWludDMyX3QgdW0g
PSBtLnZhbHVlOworICAgICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+
KCpjb2RlLCB1biwgdW0sIGEudmFsdWUpOworICAgICAgICAgICAgICAgIGludDY0X3QgcmhzID0g
c3RhdGljX2Nhc3Q8aW50NjRfdD4odW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odW0pICsgYS52
YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsQWRkWmVyb0V4dGVuZDMyQXJnc1Jp
Z2h0KCkKK3sKKyAgICAvLyBkID0gYSArIFpFeHQzMihuKSAqIFpFeHQzMihtKQorICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICBWYWx1ZSogYVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBuVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAgIFZhbHVlKiBt
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOworCisg
ICAgVmFsdWUqIG11bFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9y
aWdpbigpLCBuVmFsdWUsIG1WYWx1ZSk7CisgICAgVmFsdWUqIGFkZFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBhVmFsdWUsIG11bFZhbHVlKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWRk
VmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlz
QVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJ1bWFkZGwiKTsK
KworICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0
byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVuID0gbi52YWx1ZTsKKyAg
ICAgICAgICAgICAgICB1aW50MzJfdCB1bSA9IG0udmFsdWU7CisgICAgICAgICAgICAgICAgaW50
NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIHVuLCB1bSk7CisgICAg
ICAgICAgICAgICAgaW50NjRfdCByaHMgPSBhLnZhbHVlICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
dW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odW0pOworICAgICAgICAgICAgICAgIENIRUNLKGxo
cyA9PSByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIHRl
c3RNdWxBZGRBcmdzTGVmdDMyKCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTExOTQsNyAr
MTI1OSw3IEBAIHZvaWQgdGVzdE11bFN1YkFyZ3NMZWZ0KCkKICAgICBmb3IgKGF1dG8gYSA6IHRl
c3RWYWx1ZXMpIHsKICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpCi0gICAgICAgICAgICAgICAgQ0hFQ0soaW52
b2tlPGludDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVl
ICogYi52YWx1ZSAtIGMudmFsdWUpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSksIGEudmFsdWUgKiBiLnZh
bHVlIC0gYy52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMjE5LDcgKzEyODQsNyBA
QCB2b2lkIHRlc3RNdWxTdWJBcmdzUmlnaHQoKQogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVl
cykgewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byBjIDogdGVzdFZhbHVlcykKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50
NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgLSBiLnZh
bHVlICogYy52YWx1ZSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+
KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSwgYS52YWx1ZSAtIGIudmFsdWUgKiBj
LnZhbHVlKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEyNzUsMTIgKzEzNDAsMTIgQEAgdm9p
ZCB0ZXN0TXVsU3ViQXJnc1JpZ2h0MzIoKQogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykg
ewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgICAgIGZvciAo
YXV0byBjIDogdGVzdFZhbHVlcykKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJf
dD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgLSBiLnZhbHVl
ICogYy52YWx1ZSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpj
b2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSwgYS52YWx1ZSAtIGIudmFsdWUgKiBjLnZh
bHVlKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMy
QXJncygpCit2b2lkIHRlc3RNdWxTdWJTaWduRXh0ZW5kMzIoKQogewogICAgIC8vIGQgPSBhIC0g
U0V4dDMyKG4pICogU0V4dDMyKG0pCiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMzE3LDYgKzEz
ODIsNjIgQEAgdm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyQXJncygpCiAgICAgfQogfQogCit2
b2lkIHRlc3RNdWxTdWJaZXJvRXh0ZW5kMzIoKQoreworICAgIC8vIGQgPSBhIC0gWkV4dDMyKG4p
ICogWkV4dDMyKG0pCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhVmFsdWUgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHBy
b2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpKTsKKyAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKSkpOworCisgICAgVmFsdWUqIG11bFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBuVmFsdWUsIG1WYWx1ZSk7CisgICAgVmFsdWUq
IHN1YlZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBh
VmFsdWUsIG11bFZhbHVlKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgc3ViVmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsICJ1bXN1YmwiKTsKKworICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgICAgIHVpbnQz
Ml90IHVuID0gbi52YWx1ZTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCB1bSA9IG0udmFsdWU7
CisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEu
dmFsdWUsIHVuLCB1bSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBhLnZhbHVlIC0g
c3RhdGljX2Nhc3Q8aW50NjRfdD4odW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odW0pOworICAg
ICAgICAgICAgICAgIENIRUNLKGxocyA9PSByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIHRlc3RNdWxOZWdBcmdBcmcoaW50MzJfdCBhLCBpbnQzMl90IGIp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKworICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVl
KiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZhbHVlKiBuZWdBID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBhcmdBKTsKKyAgICBWYWx1ZSogcmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBuZWdBLCBhcmdC
KTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAoaXNB
Uk02NCgpICYmIEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA+IDEpCisgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibW5lZyIpOworICAgIENIRUNLX0VRKGludm9r
ZTxpbnQzMl90PigqY29kZSwgYSwgYiksICgtYSkgKiBiKTsKK30KKwogdm9pZCB0ZXN0TXVsTmVn
QXJncygpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMzMwLDExICsxNDUxLDEzIEBAIHZv
aWQgdGVzdE11bE5lZ0FyZ3MoKQogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7CiAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpICYmIEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0
TGV2ZWwoKSA+IDEpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibW5lZyIp
OwogCiAgICAgYXV0byB0ZXN0VmFsdWVzID0gaW50NjRPcGVyYW5kcygpOwogICAgIGZvciAoYXV0
byBhIDogdGVzdFZhbHVlcykgewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsK
LSAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1
ZSkgPT0gLShhLnZhbHVlICogYi52YWx1ZSkpOworICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlKSwgLShhLnZhbHVlICogYi52YWx1ZSkp
OwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTM1NCwxMSArMTQ3Nyw4MiBAQCB2b2lkIHRlc3RN
dWxOZWdBcmdzMzIoKQogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBhZGRlZCk7CiAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKKyAgICBpZiAoaXNBUk02NCgpICYmIEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwo
KSA+IDEpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibW5lZyIpOwogCiAg
ICAgYXV0byB0ZXN0VmFsdWVzID0gaW50MzJPcGVyYW5kcygpOwogICAgIGZvciAoYXV0byBhIDog
dGVzdFZhbHVlcykgewotICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKLSAgICAg
ICAgICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSkgPT0g
LShhLnZhbHVlICogYi52YWx1ZSkpOworICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMp
CisgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIu
dmFsdWUpLCAtKGEudmFsdWUgKiBiLnZhbHVlKSk7CisgICAgfQorfQorCit2b2lkIHRlc3RNdWxO
ZWdTaWduRXh0ZW5kMzIoKQoreworICAgIC8vIGQgPSAtIChTRXh0MzIobikgKiBTRXh0MzIobSkp
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBTRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSk7CisgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgIHByb2MsIFNFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOworICAg
IFZhbHVlKiBuZWdWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmln
aW4oKSwgbXVsVmFsdWUpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBuZWdWYWx1ZSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bigqY29kZSwgInNtbmVnbCIpOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLnZhbHVlLCBtLnZhbHVlKTsK
KyAgICAgICAgICAgIGludDY0X3QgcmhzID0gLShzdGF0aWNfY2FzdDxpbnQ2NF90PihuLnZhbHVl
KSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KG0udmFsdWUpKTsKKyAgICAgICAgICAgIENIRUNLKGxo
cyA9PSByaHMpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RNdWxOZWdaZXJvRXh0
ZW5kMzIoKQoreworICAgIC8vIGQgPSAtIChaRXh0MzIobikgKiBaRXh0MzIobSkpCisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9j
LCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKSk7CisgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOworICAgIFZhbHVlKiBu
ZWdWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgbXVs
VmFsdWUpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCBuZWdWYWx1ZSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwg
InVtbmVnbCIpOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIHVpbnQzMl90
IHVuID0gbi52YWx1ZTsKKyAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbS52YWx1ZTsKKyAgICAg
ICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCB1biwgdW0pOworICAg
ICAgICAgICAgaW50NjRfdCByaHMgPSAtKHN0YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRp
Y19jYXN0PGludDY0X3Q+KHVtKSk7CisgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKICAg
ICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjNfMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzMuY3BwCmluZGV4
IDcyYjA4ZDE2YWE3MjljZGI4MzQ2ZmQyZmFhZmNhZDllMDAzOWQ2ZWIuLmMxN2FiYzczNjM0MGQ1
YWJiMzY0YzQzZjVjODYwNzEwODY2ZGE0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjNfMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
M18zLmNwcApAQCAtMzM3MCwxMyArMzM3MCwxOCBAQCB2b2lkIGFkZEFyZ1Rlc3RzKGNvbnN0IGNo
YXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKICAg
ICBSVU4odGVzdE11bEFkZEFyZ3NSaWdodDMyKCkpOwogICAgIFJVTih0ZXN0TXVsQWRkU2lnbkV4
dGVuZDMyQXJnc0xlZnQoKSk7CiAgICAgUlVOKHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzUmln
aHQoKSk7CisgICAgUlVOKHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzTGVmdCgpKTsKKyAgICBS
VU4odGVzdE11bEFkZFplcm9FeHRlbmQzMkFyZ3NSaWdodCgpKTsKICAgICBSVU4odGVzdE11bFN1
YkFyZ3NMZWZ0KCkpOwogICAgIFJVTih0ZXN0TXVsU3ViQXJnc1JpZ2h0KCkpOwogICAgIFJVTih0
ZXN0TXVsU3ViQXJnc0xlZnQzMigpKTsKICAgICBSVU4odGVzdE11bFN1YkFyZ3NSaWdodDMyKCkp
OwotICAgIFJVTih0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyQXJncygpKTsKKyAgICBSVU4odGVzdE11
bFN1YlNpZ25FeHRlbmQzMigpKTsKKyAgICBSVU4odGVzdE11bFN1Ylplcm9FeHRlbmQzMigpKTsK
ICAgICBSVU4odGVzdE11bE5lZ0FyZ3MoKSk7CiAgICAgUlVOKHRlc3RNdWxOZWdBcmdzMzIoKSk7
CisgICAgUlVOKHRlc3RNdWxOZWdTaWduRXh0ZW5kMzIoKSk7CisgICAgUlVOKHRlc3RNdWxOZWda
ZXJvRXh0ZW5kMzIoKSk7CiAgICAgCiAgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnTmVnQXJnLCBp
bnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSkKICAgICBSVU5fQklOQVJZKHRlc3RNdWxO
ZWdBcmdBcmcsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433347</attachid>
            <date>2021-07-12 13:07:36 -0700</date>
            <delta_ts>2021-07-12 13:10:51 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-227857-20210712150734.patch</filename>
            <type>text/plain</type>
            <size>45645</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Zjk2NzYxZTk2ZTViNTEyOWEzMTg1ZjQ0NjkxYjY2Y2NiYjE4Mjc0Li41ZmM4ZDdiZGU2NWM3Yjli
MmI3YjlkNDk1NDNlNWUyYWQ1Mzk2YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzUgQEAKKzIwMjEtMDctMTIgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBTTU5FR0wsIFVNTkVHTCwgVU1BRERMLCBhbmQgVU1TVUJMIGZv
ciBBUk02NCBhbmQgc2VsZWN0IHRoaXMgaW5zdHJ1Y3Rpb24gaW4gQWlyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcHJldmlvdXMgcGF0Y2hlcyBo
YXZlIGFscmVhZHkgYWRkZWQgTU5FRywgTUFERCwgTVNVQiwgU01BRERMLCBhbmQgU01TVUJMLiAK
KyAgICAgICAgVGhpcyBwYXRjaCBjb21wbGV0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgc2lnbmVkIG9y
IHVuc2lnbmVkIHZhcmlhbnRzIChTTU5FR0wsIAorICAgICAgICBVTU5FR0wsIFVNQURETCwgYW5k
IFVNU1VCTCkgb2YgdGhlbS4gSW4gYWRkaXRpb24sIHRoaXMgcGF0Y2ggcmVmYWN0b3JzIAorICAg
ICAgICB0aGUgaW1wbGVtZW50YXRpb24gYW5kIHRoZSBhc3NvY2lhdGl2ZSB0ZXN0IGNhc2VzIG9m
IE1BREQsIE1TVUIsIGFuZCBNTkVHIAorICAgICAgICB0byBiZSBtb3JlIHJlYWRhYmxlIGFuZCBt
YWludGFpbmFibGUgdy5yLnQgdGhlaXIgdmFyaWFudHMuCisKKyAgICAgICAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMjIyBTTU5FR0wvVU1ORUdMIFhkIFduIFdtICMj
IworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgU2lnbmVk
L1Vuc2lnbmVkIE11bHRpcGx5LU5lZ2F0ZSBMb25nIG11bHRpcGxpZXMgdHdvIDMyLWJpdCByZWdp
c3RlciB2YWx1ZXMsIAorICAgICAgICBuZWdhdGVzIHRoZSBwcm9kdWN0LCBhbmQgd3JpdGVzIHRo
ZSByZXN1bHQgdG8gdGhlIDY0LWJpdCBkZXN0aW5hdGlvbiByZWdpc3Rlci4gCisgICAgICAgIFRo
ZSBlcXVpdmFsZW50IHBhdHRlcm5zIGFyZSAKKworICAgICAgICBkID0gLShTRXh0MzIobikgKiBT
RXh0MzIobSkpIGFuZCBkID0gLShaRXh0MzIobikgKiBaRXh0MzIobSkpIHJlc3BlY3RpdmVseS4K
KworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50IEAwID0gUy9aRXh0MzIoVHJ1bmMo
QXJndW1lbnRSZWcoJXgwKSkpCisgICAgICAgIEludCBAMSA9IFMvWkV4dDMyKFRydW5jKEFyZ3Vt
ZW50UmVnKCV4MSkpKQorICAgICAgICBJbnQgQDIgPSBNdWwoQDAsIEAxKQorICAgICAgICBJbnQg
QDMgPSBOZWcoQDIpCisgICAgICAgIFZvaWRANCA9IFJldHVybihAMywgVGVybWluYWwpCisKKyAg
ICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMyICAgICAgJXgwLCAleDAs
ICAgICAgQDAKKyAgICAgICAgTW92ZTMyICAgICAgJXgxLCAleDEsICAgICAgQDEKKyAgICAgICAg
TXVsdGlwbHlOZWcgJXgwLCAleDEsICV4MCwgQDMKKyAgICAgICAgUmV0ICAgICAgICAgJXgwLCAg
ICAgICAgICAgQDQKKworICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBNdWx0
aXBseU5lZ1NpZ24vWmVyb0V4dGVuZCAgJXgwLCAleDEsICV4MCwgQDMKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICAgICAgICAgICV4MCwgICAgICAgICAgIEA0CisKKyAgICAgICAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjIFVNQURETCBYZCBXbiBXbSBYYSAjIyMK
KyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgVW5zaWduZWQgTXVs
dGlwbHktQWRkIExvbmcgbXVsdGlwbGllcyB0d28gMzItYml0IHJlZ2lzdGVyIHZhbHVlcywgYWRk
cyBhIDY0LWJpdCAKKyAgICAgICAgcmVnaXN0ZXIgdmFsdWUsIGFuZCB3cml0ZXMgdGhlIHJlc3Vs
dCB0byB0aGUgNjQtYml0IGRlc3RpbmF0aW9uIHJlZ2lzdGVyLiBUaGUgCisgICAgICAgIGVxdWl2
YWxlbnQgcGF0dGVybnMgYXJlIAorCisgICAgICAgIGQgPSBaRXh0MzIobikgKiBaRXh0MzIobSkg
KyBhIG9yIGQgPSBhICsgWkV4dDMyKG4pICogWkV4dDMyKG0pCisKKyAgICAgICAgR2l2ZW4gQjMg
SVI6CisgICAgICAgIEludCBAMCA9IFpFeHQzMihUcnVuYyhBcmd1bWVudFJlZygleDApKSkKKyAg
ICAgICAgSW50IEAxID0gWkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MSkpKQorICAgICAgICBJ
bnQgQDIgPSBBcmd1bWVudFJlZygleDIpCisgICAgICAgIEludCBAMyA9IE11bChAMCwgQDEpCisg
ICAgICAgIEludCBANCA9IEFkZChAMywgQDIpCisgICAgICAgIFZvaWRANSA9IFJldHVybihANCwg
VGVybWluYWwpCisKKyAgICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMy
ICAgICAgICAleDAsICV4MCwgICAgICAgICAgIEAxCisgICAgICAgIE1vdmUzMiAgICAgICAgJXgx
LCAleDEsICAgICAgICAgICBAMgorICAgICAgICBNdWx0aXBseUFkZCAgICV4MCwgJXgxLCAleDIs
ICV4MCwgQDQKKyAgICAgICAgUmV0NjQgICAgICAgICAleDAsICAgICAgICAgICAgICAgIEA1CisK
KyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAgICAgICAgTXVsdGlwbHlBZGRaZXJvRXh0
ZW5kICV4MCwgJXgxLCAleDIsICV4MCwgQDgKKyAgICAgICAgUmV0ICAgICAgICAgICAgICAgICAg
ICV4MCwgICAgICAgICAgICAgICAgQDkKKworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorICAgICAgICAjIyMgVU1TVUJMIFhkIFduIFdtIFhhICMjIworICAgICAgICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBVbnNpZ25lZCBNdWx0aXBseS1TdWJ0cmFjdCBM
b25nIG11bHRpcGxpZXMgdHdvIDMyLWJpdCByZWdpc3RlciB2YWx1ZXMsIHN1YnRyYWN0cyAKKyAg
ICAgICAgdGhlIHByb2R1Y3QgZnJvbSBhIDY0LWJpdCByZWdpc3RlciB2YWx1ZSwgYW5kIHdyaXRl
cyB0aGUgcmVzdWx0IHRvIHRoZSA2NC1iaXQgCisgICAgICAgIGRlc3RpbmF0aW9uIHJlZ2lzdGVy
LiBUaGUgZXF1aXZhbGVudCBwYXR0ZXJucyBhcmUgCisKKyAgICAgICAgZCA9IGEgLSBaRXh0MzIo
bikgKiBaRXh0MzIobSkKKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50IEAwID0g
WkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MCkpKQorICAgICAgICBJbnQgQDEgPSBaRXh0MzIo
VHJ1bmMoQXJndW1lbnRSZWcoJXgxKSkpCisgICAgICAgIEludCBAMiA9IEFyZ3VtZW50UmVnKCV4
MikKKyAgICAgICAgSW50IEAzID0gTXVsKEAwLCBAMSkKKyAgICAgICAgSW50IEA0ID0gU3ViKEAy
LCBAMykKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkKKworICAgICAgICAv
LyBPbGQgb3B0aW1pemVkIEFJUgorICAgICAgICBNb3ZlMzIgICAgICAgICV4MCwgJXgwLCAgICAg
ICAgICAgQDEKKyAgICAgICAgTW92ZTMyICAgICAgICAleDEsICV4MSwgICAgICAgICAgIEAyCisg
ICAgICAgIE11bHRpcGx5U3ViICAgJXgwLCAleDEsICV4MiwgJXgwLCBANAorICAgICAgICBSZXQ2
NCAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDUKKworICAgICAgICAvLyBOZXcgb3B0aW1p
emVkIEFJUgorICAgICAgICBNdWx0aXBseVN1Ylplcm9FeHRlbmQgJXgwLCAleDEsICV4MiwgJXgw
LCBAOAorICAgICAgICBSZXQgICAgICAgICAgICAgICAgICAgJXgwLCAgICAgICAgICAgICAgICBA
OQorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlOZWczMik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om11bHRpcGx5QWRkWmVyb0V4dGVuZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlTdWJaZXJvRXh0ZW5kMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0aXBseU5lZzY0KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlOZWdTaWduRXh0ZW5kMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0aXBseU5lZ1plcm9FeHRlbmQzMik6
CisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVzdE11
bHRpcGx5QWRkU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkWmVy
b0V4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyKToK
KyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKEpT
Qzo6dGVzdE11bHRpcGx5TmVnU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRp
cGx5TmVnWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkU2lnbkV4
dGVuZDMyTGVmdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RNdWx0aXBseUFkZFNpZ25F
eHRlbmQzMlJpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgor
ICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMu
aDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0TXVsQWRkQXJnc0xl
ZnQpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NSaWdodCk6CisgICAgICAgICh0ZXN0TXVsQWRk
U2lnbkV4dGVuZDMyQXJnc0xlZnQpOgorICAgICAgICAodGVzdE11bEFkZFplcm9FeHRlbmQzMkFy
Z3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzUmlnaHQpOgorICAg
ICAgICAodGVzdE11bFN1YkFyZ3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxTdWJBcmdzUmlnaHQp
OgorICAgICAgICAodGVzdE11bFN1YkFyZ3NSaWdodDMyKToKKyAgICAgICAgKHRlc3RNdWxTdWJT
aWduRXh0ZW5kMzIpOgorICAgICAgICAodGVzdE11bFN1Ylplcm9FeHRlbmQzMik6CisgICAgICAg
ICh0ZXN0TXVsTmVnQXJnQXJnKToKKyAgICAgICAgKHRlc3RNdWxOZWdBcmdzKToKKyAgICAgICAg
KHRlc3RNdWxOZWdBcmdzMzIpOgorICAgICAgICAodGVzdE11bE5lZ1NpZ25FeHRlbmQzMik6Cisg
ICAgICAgICh0ZXN0TXVsTmVnWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKHRlc3RNdWxTdWJTaWdu
RXh0ZW5kMzJBcmdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy90ZXN0YjNfMy5jcHA6CisgICAg
ICAgIChhZGRBcmdUZXN0cyk6CisKIDIwMjEtMDctMTAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgQ29udGludWUgdG8gY29uc3VsdCBJbmxpbmVBY2Nlc3MncyBT
dHJ1Y3R1cmUgZXZlbiBhZnRlciBzd2l0Y2hpbmcgdG8gYSBzdHViIElDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4
IGRmNjVjYjYzNjFmNGFiMDVhMDU1MGUzMGUzNGE4NTc3OWFlZGFmN2YuLjNkODVjYmI4ZGI1MzNj
ODQwN2FhYjY1YTM5MDQ0ZjliYTJiNDAyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC03NzAsNyArNzcwLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBtdWx0aXBseU5lZzMyKFJlZ2lzdGVySUQgbXVsTGVmdCwg
UmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIubXN1YjwzMj4oZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIEFSTTY0UmVnaXN0ZXJz
Ojp6cik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1uZWc8MzI+KGRlc3QsIG11bExlZnQsIG11bFJp
Z2h0KTsKICAgICB9CiAKICAgICB2b2lkIG11bHRpcGx5QWRkNjQoUmVnaXN0ZXJJRCBtdWxMZWZ0
LCBSZWdpc3RlcklEIG11bFJpZ2h0LCBSZWdpc3RlcklEIHN1bW1hbmQsIFJlZ2lzdGVySUQgZGVz
dCkKQEAgLTc4Myw2ICs3ODMsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zbWFk
ZGwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIHN1bW1hbmQpOwogICAgIH0KIAorICAgIHZvaWQg
bXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIoUmVnaXN0ZXJJRCBtdWxMZWZ0LCBSZWdpc3RlcklEIG11
bFJpZ2h0LCBSZWdpc3RlcklEIHN1bW1hbmQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnVtYWRkbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCwgc3VtbWFuZCk7
CisgICAgfQorCiAgICAgdm9pZCBtdWx0aXBseVN1YjY0KFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVn
aXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBtaW51ZW5kLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tc3ViPDY0PihkZXN0LCBtdWxMZWZ0LCBtdWxSaWdo
dCwgbWludWVuZCk7CkBAIC03OTMsOSArNzk4LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuc21zdWJsKGRlc3QsIG11bExlZnQsIG11bFJpZ2h0LCBtaW51ZW5kKTsKICAgICB9CiAK
KyAgICB2b2lkIG11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVn
aXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBtaW51ZW5kLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci51bXN1YmwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQs
IG1pbnVlbmQpOworICAgIH0KKwogICAgIHZvaWQgbXVsdGlwbHlOZWc2NChSZWdpc3RlcklEIG11
bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm1zdWI8NjQ+KGRlc3QsIG11bExlZnQsIG11bFJpZ2h0LCBBUk02NFJl
Z2lzdGVyczo6enIpOworICAgICAgICBtX2Fzc2VtYmxlci5tbmVnPDY0PihkZXN0LCBtdWxMZWZ0
LCBtdWxSaWdodCk7CisgICAgfQorCisgICAgdm9pZCBtdWx0aXBseU5lZ1NpZ25FeHRlbmQzMihS
ZWdpc3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNtbmVnbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdo
dCk7CisgICAgfQorCisgICAgdm9pZCBtdWx0aXBseU5lZ1plcm9FeHRlbmQzMihSZWdpc3RlcklE
IG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnVtbmVnbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCk7CiAgICAg
fQogCiAgICAgdm9pZCBtdWx0aXBseVNpZ25FeHRlbmQzMihSZWdpc3RlcklEIGxlZnQsIFJlZ2lz
dGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggZDI5ZjkzNjBhMzY3ZDBhMTEzNjNlODdiODU2OTNl
NTg0ZjNlN2VhNC4uNzFjZDIzOTk4Y2U3YTI0MTIwMTk2ZDBmMDQ1NjI0NmQxNGQ5MThhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTkyMSw3
ICs5MjEsNyBAQCB2b2lkIHRlc3RNdWx0aXBseVNpZ25FeHRlbmQzMigpCiAgICAgfQogfQogCi12
b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMkxlZnQoKQordm9pZCB0ZXN0TXVsdGlwbHlB
ZGRTaWduRXh0ZW5kMzIoKQogewogICAgIC8vIGQgPSBTRXh0MzIobikgKiBTRXh0MzIobSkgKyBh
CiAgICAgYXV0byBhZGQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKQEAgLTk0
NCwyNSArOTQ0LDI4IEBAIHZvaWQgdGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyTGVmdCgpCiAg
ICAgfQogfQogCi12b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMlJpZ2h0KCkKK3ZvaWQg
dGVzdE11bHRpcGx5QWRkWmVyb0V4dGVuZDMyKCkKIHsKLSAgICAvLyBkID0gYSArIFNFeHQzMihu
KSAqIFNFeHQzMihtKQorICAgIC8vIGQgPSBaRXh0MzIobikgKiBaRXh0MzIobSkgKyBhCiAgICAg
YXV0byBhZGQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAotICAgICAgICBqaXQubXVsdGlwbHlBZGRTaWduRXh0
ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgaml0Lm11bHRpcGx5QWRkWmVy
b0V4dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjph
cmd1bWVudEdQUjEsIAogICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCAKLSAgICAg
ICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCiAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7CiAKICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAg
ICAgaml0LnJldCgpOwogICAgIH0pOwogCi0gICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRz
KCkpIHsKLSAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKLSAgICAgICAg
ICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKQotICAgICAgICAgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ2NF90PihhZGQsIGEsIG4sIG0pLCBhICsgc3RhdGljX2Nhc3Q8aW50NjRf
dD4obikgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtKSk7CisgICAgZm9yIChhdXRvIG4gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICAgICAgdWludDMyX3QgdW4gPSBuOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbTsK
KyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oYWRkLCBuLCBtLCBhKSwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4odW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odW0pICsgYSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMDkxLDcgKzEwOTQsNyBA
QCB2b2lkIHRlc3RTdWI2NEFyZ0ltbTY0KCkKIAogdm9pZCB0ZXN0TXVsdGlwbHlTdWJTaWduRXh0
ZW5kMzIoKQogewotICAgIC8vIGQgPSBhIC0gU0V4dDMyKG4pICogIFNFeHQzMihtKQorICAgIC8v
IGQgPSBhIC0gU0V4dDMyKG4pICogU0V4dDMyKG0pCiAgICAgYXV0byBzdWIgPSBjb21waWxlKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIApAQCAtMTExMiw2ICsxMTE1LDcxIEBAIHZvaWQgdGVzdE11bHRpcGx5U3ViU2lnbkV4dGVu
ZDMyKCkKICAgICB9CiB9CiAKK3ZvaWQgdGVzdE11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKCkKK3sK
KyAgICAvLyBkID0gYSAtIChaRXh0MzIobikgKiBaRXh0MzIobSkpCisgICAgYXV0byBzdWIgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKKworICAgICAgICBqaXQubXVsdGlwbHlTdWJaZXJvRXh0ZW5kMzIoR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKKyAg
ICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAg
ICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJh
bmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICAgICAg
dWludDMyX3QgdW4gPSBuOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oc3ViLCBhLCBuLCBtKSwgYSAtIHN0
YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE11bHRpcGx5TmVnU2ln
bkV4dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gLSAoU0V4dDMyKG4pICogU0V4dDMyKG0pKQorICAg
IGF1dG8gbmVnID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0Lm11bHRpcGx5TmVnU2lnbkV4
dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpCisg
ICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4obmVnLCBuLCBtKSwgLShzdGF0aWNf
Y2FzdDxpbnQ2NF90PihuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KG0pKSk7CisgICAgfQorfQor
Cit2b2lkIHRlc3RNdWx0aXBseU5lZ1plcm9FeHRlbmQzMigpCit7CisgICAgLy8gZCA9IC0gWkV4
dDMyKG4pICogWkV4dDMyKG0pCisgICAgYXV0byBuZWcgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAg
ICBqaXQubXVsdGlwbHlOZWdaZXJvRXh0ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBl
bWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisK
KyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8g
bSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgdWludDMyX3QgdW4gPSBuOworICAg
ICAgICAgICAgdWludDMyX3QgdW0gPSBtOworICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVp
bnQ2NF90PihuZWcsIG4sIG0pLCAtKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1bikgKiBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odW0pKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgdGVzdEV4
dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIoKQogewogICAgIHVpbnQzMl90IHNyYyA9IDB4ZjBmMGYw
ZjA7CkBAIC00MTY0LDkgKzQyMzIsMTIgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBX
VEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRlc3RTdWI2NEltbTY0
KCkpOwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW02NCgpKTsKIAotICAgIFJVTih0ZXN0TXVsdGlw
bHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkpOwotICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0
ZW5kMzJSaWdodCgpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKCkpOwor
ICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIoKSk7CiAgICAgUlVOKHRlc3RNdWx0
aXBseVN1YlNpZ25FeHRlbmQzMigpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5U3ViWmVyb0V4dGVu
ZDMyKCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlOZWdTaWduRXh0ZW5kMzIoKSk7CisgICAgUlVO
KHRlc3RNdWx0aXBseU5lZ1plcm9FeHRlbmQzMigpKTsKIAogICAgIFJVTih0ZXN0RXh0cmFjdFVu
c2lnbmVkQml0ZmllbGQzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxk
NjQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDJi
NTU2ZDcxODMzMzcyMGJmYTc4NzNjNzc5YmQyOTFmZDEyNjE3OTEuLmQyMGIxNDEwZDc3MjgyODgx
NGVmMmNjNTQxZDBjYmQxNDdhNjM1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCkBAIC0yNDg1LDYgKzI0ODUsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxv
d2VyKCkKICAgICB7CiAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CisKKyAgICAgICAgYXV0
byBpc01lcmdlYWJsZUIzT3Bjb2RlID0gWyZdIChWYWx1ZSogdiwgQjM6Ok9wY29kZSBiM09wY29k
ZSkgLT4gYm9vbCB7IAorICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IGIzT3Bjb2RlIHx8
ICFjYW5CZUludGVybmFsKHYpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH07CisK
ICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICBjYXNlIEIzOjpO
b3A6IHsKICAgICAgICAgICAgIC8vIFllcywgd2Ugd2lsbCB0b3RhbGx5IHNlZSBOb3AncyBiZWNh
dXNlIHNvbWUgcGhhc2VzIHdpbGwgcmVwbGFjZVdpdGhOb3AoKSBpbnN0ZWFkIG9mCkBAIC0yNTY3
LDcyICsyNTc2LDcxIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAg
ICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAg
ICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOwogICAgICAgICAgICAgVmFsdWUq
IHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CiAKLSAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlk
Rm9ybShNdWx0aXBseUFkZDY0LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRt
cCkgCi0gICAgICAgICAgICAgICAgPT0gaXNWYWxpZEZvcm0oTXVsdGlwbHlBZGRTaWduRXh0ZW5k
MzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSk7Ci0gICAgICAgICAg
ICBBaXI6Ok9wY29kZSBtdWx0aXBseUFkZE9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlw
bHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgIGlm
IChpc1ZhbGlkRm9ybShtdWx0aXBseUFkZE9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6
OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFpbW0ocmlnaHQpIHx8IG1f
dmFsdWVUb1RtcFtyaWdodF0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBs
eSA9IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wgeyAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh2LT5vcGNvZGUoKSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwodikpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxkKDApKSB8fCBtX2xvY2tlZC5jb250YWlucyh2LT5j
aGlsZCgxKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH07
Ci0KLSAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlTRXh0MzIgPSBbJl0gKFZhbHVlKiB2KSAt
PiBib29sIHsgCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi0+b3Bjb2RlKCkgPT0g
U0V4dDMyICYmIGNhbkJlSW50ZXJuYWwodik7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgLy8gTUFERDogZCA9IG4gKiBtICsgYQotICAgICAgICAgICAgICAg
ICAgICBhdXRvIHRyeUFwcGVuZE11bHRpcGx5QWRkID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUq
IHJpZ2h0KSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdHJ5TXVsdGlw
bHkobGVmdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5TGVmdCA9IGxlZnQtPmNoaWxkKDAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQgPSBsZWZ0LT5j
aGlsZCgxKTsKKyAgICAgICAgICAgIGF1dG8gdHJ5TXVsdGlwbHlBZGQgPSBbJl0gKCkgLT4gYm9v
bCB7CisgICAgICAgICAgICAgICAgaWYgKGltbShyaWdodCkgJiYgIW1fdmFsdWVUb1RtcFtyaWdo
dF0pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICAgICAgICAg
IC8vIE1BREQ6IGQgPSBuICogbSArIGEKKyAgICAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZE11
bHRpcGx5QWRkID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGxlZnQtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRl
cm5hbChsZWZ0KSB8fCBtX2xvY2tlZC5jb250YWlucyhyaWdodCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBs
eUxlZnQgPSBsZWZ0LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRp
cGx5UmlnaHQgPSBsZWZ0LT5jaGlsZCgxKTsKKyAgICAgICAgICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseUFkZDMyLCBNdWx0aXBseUFk
ZDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHRyeU5ld0Fp
ck9wY29kZSA9IFsmXSAoKSAtPiBBaXI6Ok9wY29kZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYWlyT3Bjb2RlICE9IE11bHRpcGx5QWRkNjQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNNQURE
TDogZCA9IFNFeHQzMihuKSAqIFNFeHQzMihtKSArIGEKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtdWx0aXBseUFkZE9wY29kZSA9PSBNdWx0aXBseUFkZDY0ICYmIHRyeVNFeHQzMihtdWx0
aXBseUxlZnQpICYmIHRyeVNFeHQzMihtdWx0aXBseVJpZ2h0KSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZChNdWx0aXBseUFkZFNpZ25FeHRlbmQzMiwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRtcChtdWx0aXBseUxlZnQtPmNoaWxkKDApKSwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChtdWx0aXBseVJpZ2h0LT5jaGlsZCgwKSks
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAocmlnaHQpLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG1fdmFsdWUpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxlZnQpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5UmlnaHQpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlMZWZ0LCBT
RXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlSaWdodCwgU0V4dDMyKSkgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5QWRkU2lnbkV4dGVuZDMy
OworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVU1BRERMOiBkID0gWkV4dDMyKG4pICogWkV4
dDMyKG0pICsgYQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNv
ZGUobXVsdGlwbHlMZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlS
aWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRp
cGx5QWRkWmVyb0V4dGVuZDMyOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6
T29wczsKKyAgICAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kKG11bHRpcGx5QWRkT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0KSwgdG1wKG11bHRpcGx5
UmlnaHQpLCB0bXAocmlnaHQpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBB
aXI6Ok9wY29kZSBuZXdBaXJPcGNvZGUgPSB0cnlOZXdBaXJPcGNvZGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG5ld0Fpck9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1w
LCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQo
bmV3QWlyT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSksIHRtcChtdWx0aXBseVJp
Z2h0LT5jaGlsZCgwKSksIHRtcChyaWdodCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxlZnQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21taXRJbnRlcm5hbChsZWZ0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRyeUFwcGVuZE11bHRpcGx5QWRkKGxlZnQsIHJp
Z2h0KSB8fCB0cnlBcHBlbmRNdWx0aXBseUFkZChyaWdodCwgbGVmdCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKGFpck9wY29kZSwgQXJnOjpUbXAsIEFy
Zzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMobXVs
dGlwbHlMZWZ0KSB8fCBtX2xvY2tlZC5jb250YWlucyhtdWx0aXBseVJpZ2h0KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5k
KGFpck9wY29kZSwgdG1wKG11bHRpcGx5TGVmdCksIHRtcChtdWx0aXBseVJpZ2h0KSwgdG1wKHJp
Z2h0KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwo
bGVmdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
IH07CiAKLSAgICAgICAgICAgIC8vIGFkZC13aXRoLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBTaGlm
dFR5cGUgYW1vdW50KQotICAgICAgICAgICAgYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6QjM6
Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bjb2RlIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2gg
KG9wY29kZSkgewotICAgICAgICAgICAgICAgIGNhc2UgU2hsOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQs
IG1fdmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBTU2hyOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRSaWdodFNoaWZ0MzIsIEFkZFJp
Z2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgICAgICBjYXNlIFpTaHI6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2lnbmVk
UmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsK
LSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWly
OjpPb3BzOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ5QXBw
ZW5kTXVsdGlwbHlBZGQobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZE11bHRpcGx5QWRkKHJpZ2h0
LCBsZWZ0KTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQWRk
QW5kU2hpZnQgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAg
ICAgICAgICAgaWYgKHRyeU11bHRpcGx5QWRkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICAvLyBhZGQtd2l0aC1zaGlmdCBQYXR0ZXJuOiBuICsgKG0gU2hpZnRUeXBl
IGFtb3VudCkKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQWRkV2l0aFNoaWZ0ID0gWyZdIChW
YWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBhdXRv
IHRyeU9wY29kZSA9IFsmXSAoQjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bjb2RlIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBTaGw6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlw
ZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgU1NocjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnlPcGNvZGVGb3JUeXBlKEFkZFJpZ2h0U2hpZnQzMiwgQWRkUmlnaHRTaGlmdDY0LCBtX3Zh
bHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFpTaHI6CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRVbnNpZ25lZFJpZ2h0U2hp
ZnQzMiwgQWRkVW5zaWduZWRSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWly
OjpPb3BzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKwogICAg
ICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZShyaWdodC0+b3Bjb2Rl
KCkpOwogICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwg
QXJnOjpUbXAsIEFyZzo6SW1tLCBBcmc6OlRtcCkpIAogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yNjQ5LDcgKzI2NTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKHRyeUFwcGVu
ZEFkZEFuZFNoaWZ0KGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRBZGRBbmRTaGlmdChyaWdodCwg
bGVmdCkpCisgICAgICAgICAgICBpZiAodHJ5QXBwZW5kQWRkV2l0aFNoaWZ0KGxlZnQsIHJpZ2h0
KSB8fCB0cnlBcHBlbmRBZGRXaXRoU2hpZnQocmlnaHQsIGxlZnQpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgYXBwZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGREb3Vi
bGUsIEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4obGVmdCwgcmlnaHQpOwpAQCAtMjY2MCw3MiArMjY2
OCw2NCBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGls
ZCgwKTsKICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOwogCi0g
ICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseVN1Yk9wY29kZSA9IHRyeU9wY29kZUZvclR5
cGUoTXVsdGlwbHlTdWIzMiwgTXVsdGlwbHlTdWI2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAg
ICAgICAgIGlmIChtdWx0aXBseVN1Yk9wY29kZSAhPSBBaXI6Ok9vcHMKLSAgICAgICAgICAgICAg
ICAmJiBpc1ZhbGlkRm9ybShtdWx0aXBseVN1Yk9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBB
cmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBseSA9
IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICBpZiAodi0+b3Bj
b2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKHYpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFp
bnModi0+Y2hpbGQoMCkpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxkKDEpKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5k
TXVsdGlwbHlTdWIgPSBbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgaWYgKGltbShy
aWdodCkgJiYgIW1fdmFsdWVUb1RtcFtyaWdodF0pCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICAgICAgICAgIC8vIE1TVUI6IGQgPSBhIC0gbiAqIG0KLSAgICAg
ICAgICAgICAgICBpZiAoKCFpbW0ocmlnaHQpIHx8IG1fdmFsdWVUb1RtcFtyaWdodF0pICYmIHRy
eU11bHRpcGx5KHJpZ2h0KSkgewotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlM
ZWZ0ID0gcmlnaHQtPmNoaWxkKDApOwotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlw
bHlSaWdodCA9IHJpZ2h0LT5jaGlsZCgxKTsKLQorICAgICAgICAgICAgICAgIGlmIChtX2xvY2tl
ZC5jb250YWlucyhsZWZ0KSB8fCByaWdodC0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVy
bmFsKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSByaWdodC0+Y2hpbGQoMCk7CisgICAgICAgICAg
ICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQgPSByaWdodC0+Y2hpbGQoMSk7CisgICAgICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseVN1
YjMyLCBNdWx0aXBseVN1YjY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGF1
dG8gdHJ5TmV3QWlyT3Bjb2RlID0gWyZdICgpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGFpck9wY29kZSAhPSBNdWx0aXBseVN1YjY0KQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAgICAgICAgLy8gU01TVUJM
OiBkID0gYSAtIFNFeHQzMihuKSAqIFNFeHQzMihtKQotICAgICAgICAgICAgICAgICAgICBpZiAo
bXVsdGlwbHlTdWJPcGNvZGUgPT0gTXVsdGlwbHlTdWI2NAotICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgaXNWYWxpZEZvcm0oTXVsdGlwbHlTdWJTaWduRXh0ZW5kMzIsIEFyZzo6VG1wLCBBcmc6
OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byB0cnlTRXh0MzIgPSBbJl0gKFZhbHVlKiB2KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHYtPm9wY29kZSgpICE9IFNFeHQzMiB8fCAhY2FuQmVJbnRlcm5hbCh2KSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kTXVsdGlwbHlTdWJTaWduRXh0ZW5k
MzIgPSBbJl0gKCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0
cnlTRXh0MzIobXVsdGlwbHlMZWZ0KSB8fCAhdHJ5U0V4dDMyKG11bHRpcGx5UmlnaHQpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kKE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5TGVmdC0+Y2hpbGQoMCkpLCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5UmlnaHQtPmNoaWxkKDAp
KSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChsZWZ0KSwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChtX3ZhbHVlKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5TGVmdCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9OwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTXVsdGlwbHlTdWJTaWduRXh0ZW5k
MzIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVs
dGlwbHlMZWZ0LCBTRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlSaWdodCwg
U0V4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlTdWJTaWdu
RXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIC8vIFVNU1VCTDogZCA9IGEgLSBaRXh0MzIo
bikgKiBaRXh0MzIobSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNv
ZGUobXVsdGlwbHlMZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlS
aWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlT
dWJaZXJvRXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7Cisg
ICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgICAgICBhcHBlbmQobXVsdGlwbHlT
dWJPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQpLCB0bXAobXVsdGlwbHlSaWdodCksIHRtcChsZWZ0
KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBuZXdBaXJPcGNv
ZGUgPSB0cnlOZXdBaXJPcGNvZGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0o
bmV3QWlyT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKG5ld0Fpck9wY29kZSwgdG1wKG11bHRpcGx5TGVm
dC0+Y2hpbGQoMCkpLCB0bXAobXVsdGlwbHlSaWdodC0+Y2hpbGQoMCkpLCB0bXAobGVmdCksIHRt
cChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5
TGVmdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5UmlnaHQp
OwogICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBzdWItd2l0aC1z
aGlmdCBQYXR0ZXJuOiBuIC0gKG0gU2hpZnRUeXBlIGFtb3VudCkKLSAgICAgICAgICAgIGF1dG8g
dHJ5T3Bjb2RlID0gWyZdIChKU0M6OkIzOjpPcGNvZGUgb3Bjb2RlKSAtPiBBaXI6Ok9wY29kZSB7
Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKLSAgICAgICAgICAgICAgICBjYXNl
IFNobDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViTGVm
dFNoaWZ0MzIsIFN1YkxlZnRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOwotICAgICAgICAgICAg
ICAgIGNhc2UgU1NocjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5
cGUoU3ViUmlnaHRTaGlmdDMyLCBTdWJSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBaU2hyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5
T3Bjb2RlRm9yVHlwZShTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMiwgU3ViVW5zaWduZWRSaWdodFNo
aWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShhaXJPcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRt
cCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhtdWx0aXBseUxlZnQpIHx8
IG1fbG9ja2VkLmNvbnRhaW5zKG11bHRpcGx5UmlnaHQpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYXBwZW5kKGFpck9wY29kZSwgdG1wKG11bHRp
cGx5TGVmdCksIHRtcChtdWx0aXBseVJpZ2h0KSwgdG1wKGxlZnQpLCB0bXAobV92YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH07CiAKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRN
dWx0aXBseVN1YigpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgLy8g
c3ViLXdpdGgtc2hpZnQgUGF0dGVybjogbiAtIChtIFNoaWZ0VHlwZSBhbW91bnQpCiAgICAgICAg
ICAgICBhdXRvIHRyeUFwcGVuZFN1YkFuZFNoaWZ0ID0gWyZdICgpIC0+IGJvb2wgeworICAgICAg
ICAgICAgICAgIGF1dG8gdHJ5T3Bjb2RlID0gWyZdIChCMzo6T3Bjb2RlIG9wY29kZSkgLT4gQWly
OjpPcGNvZGUgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAg
ICAgICAgICAgICAgICBjYXNlIFNobDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnlPcGNvZGVGb3JUeXBlKFN1YkxlZnRTaGlmdDMyLCBTdWJMZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+
dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViUmlnaHRTaGlmdDMyLCBTdWJSaWdo
dFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgWlNo
cjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YlVu
c2lnbmVkUmlnaHRTaGlmdDMyLCBTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBBaXI6Ok9vcHM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9OworCiAgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2Rl
KHJpZ2h0LT5vcGNvZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNv
ZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3NTAsMjAgKzI3NTAsNDUgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTmVnOiB7Ci0gICAgICAgICAgICBBaXI6Ok9wY29k
ZSBtdWx0aXBseU5lZ09wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlOZWczMiwgTXVs
dGlwbHlOZWc2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgIGlmIChtdWx0aXBseU5l
Z09wY29kZSAhPSBBaXI6Ok9vcHMKLSAgICAgICAgICAgICAgICAmJiBpc1ZhbGlkRm9ybShtdWx0
aXBseU5lZ09wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkKLSAgICAgICAgICAg
ICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gTXVsCi0gICAgICAgICAgICAg
ICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKLSAgICAgICAgICAgICAg
ICBWYWx1ZSogbXVsdGlwbHlPcGVyYXRpb24gPSBtX3ZhbHVlLT5jaGlsZCgwKTsKLSAgICAgICAg
ICAgICAgICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbXVsdGlwbHlPcGVyYXRpb24tPmNoaWxkKDAp
OwotICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0ID0gbXVsdGlwbHlPcGVyYXRp
b24tPmNoaWxkKDEpOwotICAgICAgICAgICAgICAgIGlmICghbV9sb2NrZWQuY29udGFpbnMobXVs
dGlwbHlMZWZ0KSAmJiAhbV9sb2NrZWQuY29udGFpbnMobXVsdGlwbHlSaWdodCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kKG11bHRpcGx5TmVnT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0
KSwgdG1wKG11bHRpcGx5UmlnaHQpLCB0bXAobV92YWx1ZSkpOwotICAgICAgICAgICAgICAgICAg
ICBjb21taXRJbnRlcm5hbChtdWx0aXBseU9wZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kTXVsdGlwbHlOZWcgPSBbJl0gKCkg
LT4gYm9vbCB7CisgICAgICAgICAgICAgICAgLy8gTU5FRyA6IGQgPSAtKG4gKiBtKQorICAgICAg
ICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5C
ZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSBtX3ZhbHVlLT5j
aGlsZCgwKS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQg
PSBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSk7CisgICAgICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseU5lZzMyLCBNdWx0aXBseU5l
ZzY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGF1dG8gdHJ5TmV3QWlyT3Bj
b2RlID0gWyZdICgpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFp
ck9wY29kZSAhPSBNdWx0aXBseU5lZzY0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEFpcjo6T29wczsKKyAgICAgICAgICAgICAgICAgICAgLy8gU01ORUdMOiBkID0gLShTRXh0MzIo
bikgKiBTRXh0MzIobSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChpc01lcmdlYWJsZUIzT3Bj
b2RlKG11bHRpcGx5TGVmdCwgU0V4dDMyKSAmJiBpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5
UmlnaHQsIFNFeHQzMikpIAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5
TmVnU2lnbkV4dGVuZDMyOworICAgICAgICAgICAgICAgICAgICAvLyBVTU5FR0w6IGQgPSAtKFpF
eHQzMihuKSAqIFpFeHQzMihtKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxl
QjNPcGNvZGUobXVsdGlwbHlMZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVs
dGlwbHlSaWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVs
dGlwbHlOZWdaZXJvRXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9v
cHM7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG5l
d0Fpck9wY29kZSA9IHRyeU5ld0Fpck9wY29kZSgpOworICAgICAgICAgICAgICAgIGlmIChpc1Zh
bGlkRm9ybShuZXdBaXJPcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZChuZXdBaXJPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQt
PmNoaWxkKDApKSwgdG1wKG11bHRpcGx5UmlnaHQtPmNoaWxkKDApKSwgdG1wKG1fdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlMZWZ0KTsKKyAgICAg
ICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7CisgICAgICAgICAg
ICAgICAgICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShhaXJPcGNvZGUsIEFyZzo6VG1wLCBB
cmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKG11bHRpcGx5TGVmdCkgfHwgbV9s
b2NrZWQuY29udGFpbnMobXVsdGlwbHlSaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoYWlyT3Bjb2RlLCB0bXAobXVsdGlwbHlM
ZWZ0KSwgdG1wKG11bHRpcGx5UmlnaHQpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAg
IGNvbW1pdEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRNdWx0
aXBseU5lZygpKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYXBwZW5k
VW5PcDxOZWczMiwgTmVnNjQsIE5lZ2F0ZURvdWJsZSwgTmVnYXRlRmxvYXQ+KG1fdmFsdWUtPmNo
aWxkKDApKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IDA1ZGMzYTlmZWM0Njk2ODQwMzFkODhkNzNl
YzM3Y2MwNThiZTFmNTcuLjY0Y2E3NzdiZjA2NWVlZjc4NzZhOTA5Mjg0OWFkNTViODI0OWJkN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29k
ZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpA
QCAtMjU0LDYgKzI1NCw5IEBAIGFybTY0OiBNdWx0aXBseUFkZDY0IFU6Rzo2NCwgVTpHOjY0LCBV
Okc6NjQsIEQ6Rzo2NAogYXJtNjQ6IE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyIFU6RzozMiwgVTpH
OjMyLCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAsIFRtcAogCithcm02NDogTXVs
dGlwbHlBZGRaZXJvRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIsIFU6Rzo2NCwgRDpHOjY0CisgICAg
VG1wLCBUbXAsIFRtcCwgVG1wCisKIGFybTY0OiBNdWx0aXBseVN1YjMyIFU6RzozMiwgVTpHOjMy
LCBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcCwgVG1wLCBUbXAKIApAQCAtMjYzLDEzICsy
NjYsMjIgQEAgYXJtNjQ6IE11bHRpcGx5U3ViNjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpH
OjY0CiBhcm02NDogTXVsdGlwbHlTdWJTaWduRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIsIFU6Rzo2
NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcCwgVG1wCiAKK2FybTY0OiBNdWx0aXBseVN1Ylpl
cm9FeHRlbmQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwg
VG1wLCBUbXAKKwogYXJtNjQ6IE11bHRpcGx5TmVnMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIK
ICAgICBUbXAsIFRtcCwgVG1wCiAKIGFybTY0OiBNdWx0aXBseU5lZzY0IFU6Rzo2NCwgVTpHOjY0
LCBaRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcAogCi1hcm02NDogTXVsdGlwbHlTaWduRXh0ZW5k
MzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6NjQKK2FybTY0OiBNdWx0aXBseU5lZ1NpZ25FeHRlbmQz
MiBVOkc6MzIsIFU6RzozMiwgRDpHOjY0CisgICAgVG1wLCBUbXAsIFRtcAorCithcm02NDogTXVs
dGlwbHlOZWdaZXJvRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAorICAgIFRtcCwgVG1w
LCBUbXAKKworYXJtNjQ6IE11bHRpcGx5U2lnbkV4dGVuZDMyIFU6RzozMiwgVTpHOjMyLCBEOkc6
NjQKICAgICBUbXAsIFRtcCwgVG1wCiAKIGFybTY0OiBEaXYzMiBVOkc6MzIsIFU6RzozMiwgWkQ6
RzozMgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDljN2QyOTk4ZTJhODkwZjVlZGU3
MGViNmI5ZTBmOTkxOTQ3ZmExMWYuLmY4YmU3NzkzY2VhZDVkMjNkZDk2MGU1MTQwZmFmODcwNGNl
YWY0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTkxMywxMyArOTEzLDE4IEBA
IHZvaWQgdGVzdE11bEFkZEFyZ3NMZWZ0MzIoKTsKIHZvaWQgdGVzdE11bEFkZEFyZ3NSaWdodDMy
KCk7CiB2b2lkIHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzTGVmdCgpOwogdm9pZCB0ZXN0TXVs
QWRkU2lnbkV4dGVuZDMyQXJnc1JpZ2h0KCk7Cit2b2lkIHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJB
cmdzTGVmdCgpOwordm9pZCB0ZXN0TXVsQWRkWmVyb0V4dGVuZDMyQXJnc1JpZ2h0KCk7CiB2b2lk
IHRlc3RNdWxTdWJBcmdzTGVmdCgpOwogdm9pZCB0ZXN0TXVsU3ViQXJnc1JpZ2h0KCk7CiB2b2lk
IHRlc3RNdWxTdWJBcmdzTGVmdDMyKCk7CiB2b2lkIHRlc3RNdWxTdWJBcmdzUmlnaHQzMigpOwot
dm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyQXJncygpOwordm9pZCB0ZXN0TXVsU3ViU2lnbkV4
dGVuZDMyKCk7Cit2b2lkIHRlc3RNdWxTdWJaZXJvRXh0ZW5kMzIoKTsKIHZvaWQgdGVzdE11bE5l
Z0FyZ3MoKTsKIHZvaWQgdGVzdE11bE5lZ0FyZ3MzMigpOwordm9pZCB0ZXN0TXVsTmVnU2lnbkV4
dGVuZDMyKCk7Cit2b2lkIHRlc3RNdWxOZWdaZXJvRXh0ZW5kMzIoKTsKIHZvaWQgdGVzdE11bEFy
Z0RvdWJsZShkb3VibGUpOwogdm9pZCB0ZXN0TXVsQXJnc0RvdWJsZShkb3VibGUsIGRvdWJsZSk7
CiB2b2lkIHRlc3RDYWxsU2ltcGxlRG91YmxlKGRvdWJsZSwgZG91YmxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzXzIuY3BwCmluZGV4IDhmNjBmY2M0YTRhMmVmMzU0MmU2NzQxYzI1MGFl
OWY5OGRiNmRhYjYuLjE3MWI4Mzc4MTMyNTdmMWQzZWMwNjJlOWY2ODc5MWViN2EyZDIwYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcApAQCAtODc0LDE5ICs4NzQsNiBAQCB2
b2lkIHRlc3RNdWxBcmdOZWdBcmcoaW50IGEsIGludCBiKQogICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCBhLCBiKSA9PSBhICogKC1iKSk7CiB9CiAKLXZvaWQgdGVzdE11bE5lZ0Fy
Z0FyZyhpbnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKLSAgICBWYWx1ZSogYXJnQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBWYWx1ZSogbmVn
QSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgYXJnQSk7Ci0g
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmln
aW4oKSwgbmVnQSwgYXJnQik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHBy
b2MsIGEsIGIpID09ICgtYSkgKiBiKTsKLX0KLQogdm9pZCB0ZXN0TXVsQXJnSW1tKGludDY0X3Qg
YSwgaW50NjRfdCBiKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTAxNCw3ICsxMDAxLDcg
QEAgdm9pZCB0ZXN0TXVsQWRkQXJnc0xlZnQoKQogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVl
cykgewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byBjIDogdGVzdFZhbHVlcykKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50
NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKiBiLnZh
bHVlICsgYy52YWx1ZSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+
KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSwgYS52YWx1ZSAqIGIudmFsdWUgKyBj
LnZhbHVlKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEwMzksMTQgKzEwMjYsMTQgQEAgdm9p
ZCB0ZXN0TXVsQWRkQXJnc1JpZ2h0KCkKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsK
ICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAgICAgICBmb3IgKGF1
dG8gYyA6IHRlc3RWYWx1ZXMpCi0gICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+
KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlICsgYi52YWx1ZSAq
IGMudmFsdWUpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90PigqY29k
ZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSksIGEudmFsdWUgKyBiLnZhbHVlICogYy52YWx1
ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKIHZvaWQgdGVzdE11bEFkZFNpZ25FeHRlbmQzMkFy
Z3NMZWZ0KCkKIHsKLSAgICAvLyBkID0gU0V4dDMyKG4pICogIFNFeHQzMihtKSArIGEKKyAgICAv
LyBkID0gU0V4dDMyKG4pICogU0V4dDMyKG0pICsgYQogICAgIFByb2NlZHVyZSBwcm9jOwogICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAKQEAgLTExMTgsNiArMTEwNSw4
NCBAQCB2b2lkIHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzUmlnaHQoKQogICAgIH0KIH0KIAor
dm9pZCB0ZXN0TXVsQWRkWmVyb0V4dGVuZDMyQXJnc0xlZnQoKQoreworICAgIC8vIGQgPSBaRXh0
MzIobikgKiBaRXh0MzIobSkgKyBhCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIFZhbHVlKiBtVmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAgIFZhbHVl
KiBhVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisKKyAgICBWYWx1ZSogbXVsVmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIG5WYWx1ZSwgbVZhbHVlKTsK
KyAgICBWYWx1ZSogYWRkVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwg
T3JpZ2luKCksIG11bFZhbHVlLCBhVmFsdWUpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRWYWx1ZSk7CisKKyAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbigqY29kZSwgInVtYWRkbCIpOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICAgICAgdWludDMyX3QgdW4gPSBuLnZhbHVlOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVt
ID0gbS52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90
PigqY29kZSwgdW4sIHVtLCBhLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IHJocyA9
IHN0YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKSArIGEu
dmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0sobGhzID09IHJocyk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE11bEFkZFplcm9FeHRlbmQzMkFyZ3NS
aWdodCgpCit7CisgICAgLy8gZCA9IGEgKyBaRXh0MzIobikgKiBaRXh0MzIobSkKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisg
ICAgVmFsdWUqIGFWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogblZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5j
LCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKyAgICBWYWx1ZSog
bVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgWkV4dDMyLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpKTsKKwor
ICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBP
cmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOworICAgIFZhbHVlKiBhZGRWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYVZhbHVlLCBtdWxWYWx1ZSk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFk
ZFZhbHVlKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChp
c0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAidW1hZGRsIik7
CisKKyAgICBmb3IgKGF1dG8gYSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1
dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCB1biA9IG4udmFsdWU7Cisg
ICAgICAgICAgICAgICAgdWludDMyX3QgdW0gPSBtLnZhbHVlOworICAgICAgICAgICAgICAgIGlu
dDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCB1biwgdW0pOworICAg
ICAgICAgICAgICAgIGludDY0X3QgcmhzID0gYS52YWx1ZSArIHN0YXRpY19jYXN0PGludDY0X3Q+
KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKTsKKyAgICAgICAgICAgICAgICBDSEVDSyhs
aHMgPT0gcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCB0
ZXN0TXVsQWRkQXJnc0xlZnQzMigpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMTk0LDcg
KzEyNTksNyBAQCB2b2lkIHRlc3RNdWxTdWJBcmdzTGVmdCgpCiAgICAgZm9yIChhdXRvIGEgOiB0
ZXN0VmFsdWVzKSB7CiAgICAgICAgIGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewogICAgICAg
ICAgICAgZm9yIChhdXRvIGMgOiB0ZXN0VmFsdWVzKQotICAgICAgICAgICAgICAgIENIRUNLKGlu
dm9rZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1
ZSAqIGIudmFsdWUgLSBjLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpLCBhLnZhbHVlICogYi52
YWx1ZSAtIGMudmFsdWUpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTIxOSw3ICsxMjg0LDcg
QEAgdm9pZCB0ZXN0TXVsU3ViQXJnc1JpZ2h0KCkKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1
ZXMpIHsKICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAgICAgICBm
b3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpCi0gICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGlu
dDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlIC0gYi52
YWx1ZSAqIGMudmFsdWUpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90
PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSksIGEudmFsdWUgLSBiLnZhbHVlICog
Yy52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMjc1LDEyICsxMzQwLDEyIEBAIHZv
aWQgdGVzdE11bFN1YkFyZ3NSaWdodDMyKCkKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMp
IHsKICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8gYyA6IHRlc3RWYWx1ZXMpCi0gICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDMy
X3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlIC0gYi52YWx1
ZSAqIGMudmFsdWUpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90Pigq
Y29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSksIGEudmFsdWUgLSBiLnZhbHVlICogYy52
YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgdGVzdE11bFN1YlNpZ25FeHRlbmQz
MkFyZ3MoKQordm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyKCkKIHsKICAgICAvLyBkID0gYSAt
IFNFeHQzMihuKSAqIFNFeHQzMihtKQogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTMxNyw2ICsx
MzgyLDYyIEBAIHZvaWQgdGVzdE11bFN1YlNpZ25FeHRlbmQzMkFyZ3MoKQogICAgIH0KIH0KIAor
dm9pZCB0ZXN0TXVsU3ViWmVyb0V4dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gYSAtIFpFeHQzMihu
KSAqIFpFeHQzMihtKQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpKSk7CisgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMikpKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOworICAgIFZhbHVl
KiBzdWJWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwg
YVZhbHVlLCBtdWxWYWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHN1YlZhbHVlKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCAidW1zdWJsIik7CisKKyAgICBmb3IgKGF1dG8gYSA6IGludDY0T3BlcmFuZHMo
KSkgeworICAgICAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAg
ICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgICAgICB1aW50
MzJfdCB1biA9IG4udmFsdWU7CisgICAgICAgICAgICAgICAgdWludDMyX3QgdW0gPSBtLnZhbHVl
OworICAgICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBh
LnZhbHVlLCB1biwgdW0pOworICAgICAgICAgICAgICAgIGludDY0X3QgcmhzID0gYS52YWx1ZSAt
IHN0YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKTsKKyAg
ICAgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsTmVnQXJnQXJnKGludDMyX3QgYSwgaW50MzJfdCBi
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1
ZSogYXJnQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1ZSogbmVnQSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgYXJnQSk7CisgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgbmVnQSwgYXJn
Qik7CisgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBy
ZXN1bHQpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlz
QVJNNjQoKSAmJiBKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPiAxKQorICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1uZWciKTsKKyAgICBDSEVDS19FUShpbnZv
a2U8aW50MzJfdD4oKmNvZGUsIGEsIGIpLCAoLWEpICogYik7Cit9CisKIHZvaWQgdGVzdE11bE5l
Z0FyZ3MoKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTMzMCwxMSArMTQ1MSwxMyBAQCB2
b2lkIHRlc3RNdWxOZWdBcmdzKCkKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgYWRkZWQpOwogCiAgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSAmJiBKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09w
dExldmVsKCkgPiAxKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1uZWci
KTsKIAogICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDY0T3BlcmFuZHMoKTsKICAgICBmb3IgKGF1
dG8gYSA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7
Ci0gICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFs
dWUpID09IC0oYS52YWx1ZSAqIGIudmFsdWUpKTsKKyAgICAgICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSksIC0oYS52YWx1ZSAqIGIudmFsdWUp
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEzNTQsMTEgKzE0NzcsODIgQEAgdm9pZCB0ZXN0
TXVsTmVnQXJnczMyKCkKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgYWRkZWQpOwogCiAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgaWYgKGlzQVJNNjQoKSAmJiBKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVs
KCkgPiAxKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1uZWciKTsKIAog
ICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDMyT3BlcmFuZHMoKTsKICAgICBmb3IgKGF1dG8gYSA6
IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAg
ICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUpID09
IC0oYS52YWx1ZSAqIGIudmFsdWUpKTsKKyAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVz
KQorICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhLnZhbHVlLCBi
LnZhbHVlKSwgLShhLnZhbHVlICogYi52YWx1ZSkpOworICAgIH0KK30KKwordm9pZCB0ZXN0TXVs
TmVnU2lnbkV4dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gLSAoU0V4dDMyKG4pICogU0V4dDMyKG0p
KQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisKKyAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgcHJvYywgU0V4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSkpOworICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICBwcm9jLCBTRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBWYWx1ZSogbXVsVmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIG5WYWx1ZSwgbVZhbHVlKTsKKyAg
ICBWYWx1ZSogbmVnVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3Jp
Z2luKCksIG11bFZhbHVlKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgbmVnVmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsICJzbW5lZ2wiKTsKKworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PigqY29kZSwgbi52YWx1ZSwgbS52YWx1ZSk7
CisgICAgICAgICAgICBpbnQ2NF90IHJocyA9IC0oc3RhdGljX2Nhc3Q8aW50NjRfdD4obi52YWx1
ZSkgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtLnZhbHVlKSk7CisgICAgICAgICAgICBDSEVDSyhs
aHMgPT0gcmhzKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsTmVnWmVyb0V4
dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gLSAoWkV4dDMyKG4pICogWkV4dDMyKG0pKQorICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisK
KyAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJv
YywgWkV4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSkpOworICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKSk7CisKKyAgICBWYWx1ZSogbXVsVmFsdWUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIG5WYWx1ZSwgbVZhbHVlKTsKKyAgICBWYWx1ZSog
bmVnVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG11
bFZhbHVlKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgbmVnVmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7
CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUs
ICJ1bW5lZ2wiKTsKKworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAg
ICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICB1aW50MzJf
dCB1biA9IG4udmFsdWU7CisgICAgICAgICAgICB1aW50MzJfdCB1bSA9IG0udmFsdWU7CisgICAg
ICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PigqY29kZSwgdW4sIHVtKTsKKyAg
ICAgICAgICAgIGludDY0X3QgcmhzID0gLShzdGF0aWNfY2FzdDxpbnQ2NF90Pih1bikgKiBzdGF0
aWNfY2FzdDxpbnQ2NF90Pih1bSkpOworICAgICAgICAgICAgQ0hFQ0sobGhzID09IHJocyk7CiAg
ICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzXzMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18zLmNwcAppbmRl
eCA3MmIwOGQxNmFhNzI5Y2RiODM0NmZkMmZhYWZjYWQ5ZTAwMzlkNmViLi5jMTdhYmM3MzYzNDBk
NWFiYjM2NGM0M2Y1Yzg2MDcxMDg2NmRhNDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzXzMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjNfMy5jcHAKQEAgLTMzNzAsMTMgKzMzNzAsMTggQEAgdm9pZCBhZGRBcmdUZXN0cyhjb25zdCBj
aGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpCiAg
ICAgUlVOKHRlc3RNdWxBZGRBcmdzUmlnaHQzMigpKTsKICAgICBSVU4odGVzdE11bEFkZFNpZ25F
eHRlbmQzMkFyZ3NMZWZ0KCkpOwogICAgIFJVTih0ZXN0TXVsQWRkU2lnbkV4dGVuZDMyQXJnc1Jp
Z2h0KCkpOworICAgIFJVTih0ZXN0TXVsQWRkWmVyb0V4dGVuZDMyQXJnc0xlZnQoKSk7CisgICAg
UlVOKHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzUmlnaHQoKSk7CiAgICAgUlVOKHRlc3RNdWxT
dWJBcmdzTGVmdCgpKTsKICAgICBSVU4odGVzdE11bFN1YkFyZ3NSaWdodCgpKTsKICAgICBSVU4o
dGVzdE11bFN1YkFyZ3NMZWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RNdWxTdWJBcmdzUmlnaHQzMigp
KTsKLSAgICBSVU4odGVzdE11bFN1YlNpZ25FeHRlbmQzMkFyZ3MoKSk7CisgICAgUlVOKHRlc3RN
dWxTdWJTaWduRXh0ZW5kMzIoKSk7CisgICAgUlVOKHRlc3RNdWxTdWJaZXJvRXh0ZW5kMzIoKSk7
CiAgICAgUlVOKHRlc3RNdWxOZWdBcmdzKCkpOwogICAgIFJVTih0ZXN0TXVsTmVnQXJnczMyKCkp
OworICAgIFJVTih0ZXN0TXVsTmVnU2lnbkV4dGVuZDMyKCkpOworICAgIFJVTih0ZXN0TXVsTmVn
WmVyb0V4dGVuZDMyKCkpOwogICAgIAogICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ05lZ0FyZywg
aW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpCiAgICAgUlVOX0JJTkFSWSh0ZXN0TXVs
TmVnQXJnQXJnLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433348</attachid>
            <date>2021-07-12 13:10:54 -0700</date>
            <delta_ts>2021-07-12 13:51:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227857-20210712151053.patch</filename>
            <type>text/plain</type>
            <size>45645</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Zjk2NzYxZTk2ZTViNTEyOWEzMTg1ZjQ0NjkxYjY2Y2NiYjE4Mjc0Li41ODExYTZlMmY0YjljNzUx
NjdlNmZiYjI1ZTIyOTkzYzQyZjUyZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzUgQEAKKzIwMjEtMDctMTIgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBTTU5FR0wsIFVNTkVHTCwgVU1BRERMLCBhbmQgVU1TVUJMIGZv
ciBBUk02NCBhbmQgc2VsZWN0IHRoaXMgaW5zdHJ1Y3Rpb24gaW4gQWlyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBSb2JpbiBNb3Jpc3NldC4KKworICAgICAgICBUaGUgcHJldmlvdXMgcGF0Y2hlcyBo
YXZlIGFscmVhZHkgYWRkZWQgTU5FRywgTUFERCwgTVNVQiwgU01BRERMLCBhbmQgU01TVUJMLiAK
KyAgICAgICAgVGhpcyBwYXRjaCBjb21wbGV0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgc2lnbmVkIG9y
IHVuc2lnbmVkIHZhcmlhbnRzIChTTU5FR0wsIAorICAgICAgICBVTU5FR0wsIFVNQURETCwgYW5k
IFVNU1VCTCkgb2YgdGhlbS4gSW4gYWRkaXRpb24sIHRoaXMgcGF0Y2ggcmVmYWN0b3JzIAorICAg
ICAgICB0aGUgaW1wbGVtZW50YXRpb24gYW5kIHRoZSBhc3NvY2lhdGl2ZSB0ZXN0IGNhc2VzIG9m
IE1BREQsIE1TVUIsIGFuZCBNTkVHIAorICAgICAgICB0byBiZSBtb3JlIHJlYWRhYmxlIGFuZCBt
YWludGFpbmFibGUgdy5yLnQgdGhlaXIgdmFyaWFudHMuCisKKyAgICAgICAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMjIyBTTU5FR0wvVU1ORUdMIFhkIFduIFdtICMj
IworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgU2lnbmVk
L1Vuc2lnbmVkIE11bHRpcGx5LU5lZ2F0ZSBMb25nIG11bHRpcGxpZXMgdHdvIDMyLWJpdCByZWdp
c3RlciB2YWx1ZXMsIAorICAgICAgICBuZWdhdGVzIHRoZSBwcm9kdWN0LCBhbmQgd3JpdGVzIHRo
ZSByZXN1bHQgdG8gdGhlIDY0LWJpdCBkZXN0aW5hdGlvbiByZWdpc3Rlci4gCisgICAgICAgIFRo
ZSBlcXVpdmFsZW50IHBhdHRlcm5zIGFyZSAKKworICAgICAgICBkID0gLShTRXh0MzIobikgKiBT
RXh0MzIobSkpIGFuZCBkID0gLShaRXh0MzIobikgKiBaRXh0MzIobSkpIHJlc3BlY3RpdmVseS4K
KworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50IEAwID0gUy9aRXh0MzIoVHJ1bmMo
QXJndW1lbnRSZWcoJXgwKSkpCisgICAgICAgIEludCBAMSA9IFMvWkV4dDMyKFRydW5jKEFyZ3Vt
ZW50UmVnKCV4MSkpKQorICAgICAgICBJbnQgQDIgPSBNdWwoQDAsIEAxKQorICAgICAgICBJbnQg
QDMgPSBOZWcoQDIpCisgICAgICAgIFZvaWRANCA9IFJldHVybihAMywgVGVybWluYWwpCisKKyAg
ICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMyICAgICAgJXgwLCAleDAs
ICAgICAgQDAKKyAgICAgICAgTW92ZTMyICAgICAgJXgxLCAleDEsICAgICAgQDEKKyAgICAgICAg
TXVsdGlwbHlOZWcgJXgwLCAleDEsICV4MCwgQDMKKyAgICAgICAgUmV0ICAgICAgICAgJXgwLCAg
ICAgICAgICAgQDQKKworICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBNdWx0
aXBseU5lZ1NpZ24vWmVyb0V4dGVuZCAgJXgwLCAleDEsICV4MCwgQDMKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICAgICAgICAgICV4MCwgICAgICAgICAgIEA0CisKKyAgICAgICAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjIFVNQURETCBYZCBXbiBXbSBYYSAjIyMK
KyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgVW5zaWduZWQgTXVs
dGlwbHktQWRkIExvbmcgbXVsdGlwbGllcyB0d28gMzItYml0IHJlZ2lzdGVyIHZhbHVlcywgYWRk
cyBhIDY0LWJpdCAKKyAgICAgICAgcmVnaXN0ZXIgdmFsdWUsIGFuZCB3cml0ZXMgdGhlIHJlc3Vs
dCB0byB0aGUgNjQtYml0IGRlc3RpbmF0aW9uIHJlZ2lzdGVyLiBUaGUgCisgICAgICAgIGVxdWl2
YWxlbnQgcGF0dGVybnMgYXJlIAorCisgICAgICAgIGQgPSBaRXh0MzIobikgKiBaRXh0MzIobSkg
KyBhIG9yIGQgPSBhICsgWkV4dDMyKG4pICogWkV4dDMyKG0pCisKKyAgICAgICAgR2l2ZW4gQjMg
SVI6CisgICAgICAgIEludCBAMCA9IFpFeHQzMihUcnVuYyhBcmd1bWVudFJlZygleDApKSkKKyAg
ICAgICAgSW50IEAxID0gWkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MSkpKQorICAgICAgICBJ
bnQgQDIgPSBBcmd1bWVudFJlZygleDIpCisgICAgICAgIEludCBAMyA9IE11bChAMCwgQDEpCisg
ICAgICAgIEludCBANCA9IEFkZChAMywgQDIpCisgICAgICAgIFZvaWRANSA9IFJldHVybihANCwg
VGVybWluYWwpCisKKyAgICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMy
ICAgICAgICAleDAsICV4MCwgICAgICAgICAgIEAxCisgICAgICAgIE1vdmUzMiAgICAgICAgJXgx
LCAleDEsICAgICAgICAgICBAMgorICAgICAgICBNdWx0aXBseUFkZCAgICV4MCwgJXgxLCAleDIs
ICV4MCwgQDQKKyAgICAgICAgUmV0NjQgICAgICAgICAleDAsICAgICAgICAgICAgICAgIEA1CisK
KyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAgICAgICAgTXVsdGlwbHlBZGRaZXJvRXh0
ZW5kICV4MCwgJXgxLCAleDIsICV4MCwgQDgKKyAgICAgICAgUmV0ICAgICAgICAgICAgICAgICAg
ICV4MCwgICAgICAgICAgICAgICAgQDkKKworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorICAgICAgICAjIyMgVU1TVUJMIFhkIFduIFdtIFhhICMjIworICAgICAgICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBVbnNpZ25lZCBNdWx0aXBseS1TdWJ0cmFjdCBM
b25nIG11bHRpcGxpZXMgdHdvIDMyLWJpdCByZWdpc3RlciB2YWx1ZXMsIHN1YnRyYWN0cyAKKyAg
ICAgICAgdGhlIHByb2R1Y3QgZnJvbSBhIDY0LWJpdCByZWdpc3RlciB2YWx1ZSwgYW5kIHdyaXRl
cyB0aGUgcmVzdWx0IHRvIHRoZSA2NC1iaXQgCisgICAgICAgIGRlc3RpbmF0aW9uIHJlZ2lzdGVy
LiBUaGUgZXF1aXZhbGVudCBwYXR0ZXJucyBhcmUgCisKKyAgICAgICAgZCA9IGEgLSBaRXh0MzIo
bikgKiBaRXh0MzIobSkKKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50IEAwID0g
WkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MCkpKQorICAgICAgICBJbnQgQDEgPSBaRXh0MzIo
VHJ1bmMoQXJndW1lbnRSZWcoJXgxKSkpCisgICAgICAgIEludCBAMiA9IEFyZ3VtZW50UmVnKCV4
MikKKyAgICAgICAgSW50IEAzID0gTXVsKEAwLCBAMSkKKyAgICAgICAgSW50IEA0ID0gU3ViKEAy
LCBAMykKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkKKworICAgICAgICAv
LyBPbGQgb3B0aW1pemVkIEFJUgorICAgICAgICBNb3ZlMzIgICAgICAgICV4MCwgJXgwLCAgICAg
ICAgICAgQDEKKyAgICAgICAgTW92ZTMyICAgICAgICAleDEsICV4MSwgICAgICAgICAgIEAyCisg
ICAgICAgIE11bHRpcGx5U3ViICAgJXgwLCAleDEsICV4MiwgJXgwLCBANAorICAgICAgICBSZXQ2
NCAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDUKKworICAgICAgICAvLyBOZXcgb3B0aW1p
emVkIEFJUgorICAgICAgICBNdWx0aXBseVN1Ylplcm9FeHRlbmQgJXgwLCAleDEsICV4MiwgJXgw
LCBAOAorICAgICAgICBSZXQgICAgICAgICAgICAgICAgICAgJXgwLCAgICAgICAgICAgICAgICBA
OQorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlOZWczMik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om11bHRpcGx5QWRkWmVyb0V4dGVuZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlTdWJaZXJvRXh0ZW5kMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0aXBseU5lZzY0KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bXVsdGlwbHlOZWdTaWduRXh0ZW5kMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0aXBseU5lZ1plcm9FeHRlbmQzMik6
CisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVzdE11
bHRpcGx5QWRkU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkWmVy
b0V4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyKToK
KyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKEpT
Qzo6dGVzdE11bHRpcGx5TmVnU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRp
cGx5TmVnWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkU2lnbkV4
dGVuZDMyTGVmdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RNdWx0aXBseUFkZFNpZ25F
eHRlbmQzMlJpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgor
ICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMu
aDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0TXVsQWRkQXJnc0xl
ZnQpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NSaWdodCk6CisgICAgICAgICh0ZXN0TXVsQWRk
U2lnbkV4dGVuZDMyQXJnc0xlZnQpOgorICAgICAgICAodGVzdE11bEFkZFplcm9FeHRlbmQzMkFy
Z3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzUmlnaHQpOgorICAg
ICAgICAodGVzdE11bFN1YkFyZ3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxTdWJBcmdzUmlnaHQp
OgorICAgICAgICAodGVzdE11bFN1YkFyZ3NSaWdodDMyKToKKyAgICAgICAgKHRlc3RNdWxTdWJT
aWduRXh0ZW5kMzIpOgorICAgICAgICAodGVzdE11bFN1Ylplcm9FeHRlbmQzMik6CisgICAgICAg
ICh0ZXN0TXVsTmVnQXJnQXJnKToKKyAgICAgICAgKHRlc3RNdWxOZWdBcmdzKToKKyAgICAgICAg
KHRlc3RNdWxOZWdBcmdzMzIpOgorICAgICAgICAodGVzdE11bE5lZ1NpZ25FeHRlbmQzMik6Cisg
ICAgICAgICh0ZXN0TXVsTmVnWmVyb0V4dGVuZDMyKToKKyAgICAgICAgKHRlc3RNdWxTdWJTaWdu
RXh0ZW5kMzJBcmdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy90ZXN0YjNfMy5jcHA6CisgICAg
ICAgIChhZGRBcmdUZXN0cyk6CisKIDIwMjEtMDctMTAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgQ29udGludWUgdG8gY29uc3VsdCBJbmxpbmVBY2Nlc3MncyBT
dHJ1Y3R1cmUgZXZlbiBhZnRlciBzd2l0Y2hpbmcgdG8gYSBzdHViIElDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4
IGRmNjVjYjYzNjFmNGFiMDVhMDU1MGUzMGUzNGE4NTc3OWFlZGFmN2YuLjNkODVjYmI4ZGI1MzNj
ODQwN2FhYjY1YTM5MDQ0ZjliYTJiNDAyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC03NzAsNyArNzcwLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBtdWx0aXBseU5lZzMyKFJlZ2lzdGVySUQgbXVsTGVmdCwg
UmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIubXN1YjwzMj4oZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIEFSTTY0UmVnaXN0ZXJz
Ojp6cik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1uZWc8MzI+KGRlc3QsIG11bExlZnQsIG11bFJp
Z2h0KTsKICAgICB9CiAKICAgICB2b2lkIG11bHRpcGx5QWRkNjQoUmVnaXN0ZXJJRCBtdWxMZWZ0
LCBSZWdpc3RlcklEIG11bFJpZ2h0LCBSZWdpc3RlcklEIHN1bW1hbmQsIFJlZ2lzdGVySUQgZGVz
dCkKQEAgLTc4Myw2ICs3ODMsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zbWFk
ZGwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIHN1bW1hbmQpOwogICAgIH0KIAorICAgIHZvaWQg
bXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIoUmVnaXN0ZXJJRCBtdWxMZWZ0LCBSZWdpc3RlcklEIG11
bFJpZ2h0LCBSZWdpc3RlcklEIHN1bW1hbmQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnVtYWRkbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCwgc3VtbWFuZCk7
CisgICAgfQorCiAgICAgdm9pZCBtdWx0aXBseVN1YjY0KFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVn
aXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBtaW51ZW5kLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tc3ViPDY0PihkZXN0LCBtdWxMZWZ0LCBtdWxSaWdo
dCwgbWludWVuZCk7CkBAIC03OTMsOSArNzk4LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuc21zdWJsKGRlc3QsIG11bExlZnQsIG11bFJpZ2h0LCBtaW51ZW5kKTsKICAgICB9CiAK
KyAgICB2b2lkIG11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVn
aXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJRCBtaW51ZW5kLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci51bXN1YmwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQs
IG1pbnVlbmQpOworICAgIH0KKwogICAgIHZvaWQgbXVsdGlwbHlOZWc2NChSZWdpc3RlcklEIG11
bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm1zdWI8NjQ+KGRlc3QsIG11bExlZnQsIG11bFJpZ2h0LCBBUk02NFJl
Z2lzdGVyczo6enIpOworICAgICAgICBtX2Fzc2VtYmxlci5tbmVnPDY0PihkZXN0LCBtdWxMZWZ0
LCBtdWxSaWdodCk7CisgICAgfQorCisgICAgdm9pZCBtdWx0aXBseU5lZ1NpZ25FeHRlbmQzMihS
ZWdpc3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNtbmVnbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdo
dCk7CisgICAgfQorCisgICAgdm9pZCBtdWx0aXBseU5lZ1plcm9FeHRlbmQzMihSZWdpc3RlcklE
IG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnVtbmVnbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCk7CiAgICAg
fQogCiAgICAgdm9pZCBtdWx0aXBseVNpZ25FeHRlbmQzMihSZWdpc3RlcklEIGxlZnQsIFJlZ2lz
dGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggZDI5ZjkzNjBhMzY3ZDBhMTEzNjNlODdiODU2OTNl
NTg0ZjNlN2VhNC4uNzFjZDIzOTk4Y2U3YTI0MTIwMTk2ZDBmMDQ1NjI0NmQxNGQ5MThhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTkyMSw3
ICs5MjEsNyBAQCB2b2lkIHRlc3RNdWx0aXBseVNpZ25FeHRlbmQzMigpCiAgICAgfQogfQogCi12
b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMkxlZnQoKQordm9pZCB0ZXN0TXVsdGlwbHlB
ZGRTaWduRXh0ZW5kMzIoKQogewogICAgIC8vIGQgPSBTRXh0MzIobikgKiBTRXh0MzIobSkgKyBh
CiAgICAgYXV0byBhZGQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKQEAgLTk0
NCwyNSArOTQ0LDI4IEBAIHZvaWQgdGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyTGVmdCgpCiAg
ICAgfQogfQogCi12b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMlJpZ2h0KCkKK3ZvaWQg
dGVzdE11bHRpcGx5QWRkWmVyb0V4dGVuZDMyKCkKIHsKLSAgICAvLyBkID0gYSArIFNFeHQzMihu
KSAqIFNFeHQzMihtKQorICAgIC8vIGQgPSBaRXh0MzIobikgKiBaRXh0MzIobSkgKyBhCiAgICAg
YXV0byBhZGQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAotICAgICAgICBqaXQubXVsdGlwbHlBZGRTaWduRXh0
ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgaml0Lm11bHRpcGx5QWRkWmVy
b0V4dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjph
cmd1bWVudEdQUjEsIAogICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCAKLSAgICAg
ICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCiAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7CiAKICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAg
ICAgaml0LnJldCgpOwogICAgIH0pOwogCi0gICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRz
KCkpIHsKLSAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKLSAgICAgICAg
ICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKQotICAgICAgICAgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ2NF90PihhZGQsIGEsIG4sIG0pLCBhICsgc3RhdGljX2Nhc3Q8aW50NjRf
dD4obikgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtKSk7CisgICAgZm9yIChhdXRvIG4gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICAgICAgdWludDMyX3QgdW4gPSBuOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbTsK
KyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oYWRkLCBuLCBtLCBhKSwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4odW4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odW0pICsgYSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMDkxLDcgKzEwOTQsNyBA
QCB2b2lkIHRlc3RTdWI2NEFyZ0ltbTY0KCkKIAogdm9pZCB0ZXN0TXVsdGlwbHlTdWJTaWduRXh0
ZW5kMzIoKQogewotICAgIC8vIGQgPSBhIC0gU0V4dDMyKG4pICogIFNFeHQzMihtKQorICAgIC8v
IGQgPSBhIC0gU0V4dDMyKG4pICogU0V4dDMyKG0pCiAgICAgYXV0byBzdWIgPSBjb21waWxlKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIApAQCAtMTExMiw2ICsxMTE1LDcxIEBAIHZvaWQgdGVzdE11bHRpcGx5U3ViU2lnbkV4dGVu
ZDMyKCkKICAgICB9CiB9CiAKK3ZvaWQgdGVzdE11bHRpcGx5U3ViWmVyb0V4dGVuZDMyKCkKK3sK
KyAgICAvLyBkID0gYSAtIChaRXh0MzIobikgKiBaRXh0MzIobSkpCisgICAgYXV0byBzdWIgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKKworICAgICAgICBqaXQubXVsdGlwbHlTdWJaZXJvRXh0ZW5kMzIoR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKKyAg
ICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAg
ICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJh
bmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICAgICAg
dWludDMyX3QgdW4gPSBuOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVtID0gbTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oc3ViLCBhLCBuLCBtKSwgYSAtIHN0
YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE11bHRpcGx5TmVnU2ln
bkV4dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gLSAoU0V4dDMyKG4pICogU0V4dDMyKG0pKQorICAg
IGF1dG8gbmVnID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0Lm11bHRpcGx5TmVnU2lnbkV4
dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpCisg
ICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4obmVnLCBuLCBtKSwgLShzdGF0aWNf
Y2FzdDxpbnQ2NF90PihuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KG0pKSk7CisgICAgfQorfQor
Cit2b2lkIHRlc3RNdWx0aXBseU5lZ1plcm9FeHRlbmQzMigpCit7CisgICAgLy8gZCA9IC0gWkV4
dDMyKG4pICogWkV4dDMyKG0pCisgICAgYXV0byBuZWcgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAg
ICBqaXQubXVsdGlwbHlOZWdaZXJvRXh0ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBl
bWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisK
KyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8g
bSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgdWludDMyX3QgdW4gPSBuOworICAg
ICAgICAgICAgdWludDMyX3QgdW0gPSBtOworICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVp
bnQ2NF90PihuZWcsIG4sIG0pLCAtKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1bikgKiBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odW0pKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgdGVzdEV4
dHJhY3RVbnNpZ25lZEJpdGZpZWxkMzIoKQogewogICAgIHVpbnQzMl90IHNyYyA9IDB4ZjBmMGYw
ZjA7CkBAIC00MTY0LDkgKzQyMzIsMTIgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBX
VEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRlc3RTdWI2NEltbTY0
KCkpOwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW02NCgpKTsKIAotICAgIFJVTih0ZXN0TXVsdGlw
bHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkpOwotICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0
ZW5kMzJSaWdodCgpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKCkpOwor
ICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzIoKSk7CiAgICAgUlVOKHRlc3RNdWx0
aXBseVN1YlNpZ25FeHRlbmQzMigpKTsKKyAgICBSVU4odGVzdE11bHRpcGx5U3ViWmVyb0V4dGVu
ZDMyKCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlOZWdTaWduRXh0ZW5kMzIoKSk7CisgICAgUlVO
KHRlc3RNdWx0aXBseU5lZ1plcm9FeHRlbmQzMigpKTsKIAogICAgIFJVTih0ZXN0RXh0cmFjdFVu
c2lnbmVkQml0ZmllbGQzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RVbnNpZ25lZEJpdGZpZWxk
NjQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDJi
NTU2ZDcxODMzMzcyMGJmYTc4NzNjNzc5YmQyOTFmZDEyNjE3OTEuLmQyMGIxNDEwZDc3MjgyODgx
NGVmMmNjNTQxZDBjYmQxNDdhNjM1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCkBAIC0yNDg1LDYgKzI0ODUsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxv
d2VyKCkKICAgICB7CiAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CisKKyAgICAgICAgYXV0
byBpc01lcmdlYWJsZUIzT3Bjb2RlID0gWyZdIChWYWx1ZSogdiwgQjM6Ok9wY29kZSBiM09wY29k
ZSkgLT4gYm9vbCB7IAorICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IGIzT3Bjb2RlIHx8
ICFjYW5CZUludGVybmFsKHYpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH07CisK
ICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICBjYXNlIEIzOjpO
b3A6IHsKICAgICAgICAgICAgIC8vIFllcywgd2Ugd2lsbCB0b3RhbGx5IHNlZSBOb3AncyBiZWNh
dXNlIHNvbWUgcGhhc2VzIHdpbGwgcmVwbGFjZVdpdGhOb3AoKSBpbnN0ZWFkIG9mCkBAIC0yNTY3
LDcyICsyNTc2LDcxIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAg
ICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAg
ICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOwogICAgICAgICAgICAgVmFsdWUq
IHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CiAKLSAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlk
Rm9ybShNdWx0aXBseUFkZDY0LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRt
cCkgCi0gICAgICAgICAgICAgICAgPT0gaXNWYWxpZEZvcm0oTXVsdGlwbHlBZGRTaWduRXh0ZW5k
MzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSk7Ci0gICAgICAgICAg
ICBBaXI6Ok9wY29kZSBtdWx0aXBseUFkZE9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlw
bHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgIGlm
IChpc1ZhbGlkRm9ybShtdWx0aXBseUFkZE9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6
OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFpbW0ocmlnaHQpIHx8IG1f
dmFsdWVUb1RtcFtyaWdodF0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBs
eSA9IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wgeyAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh2LT5vcGNvZGUoKSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwodikpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxkKDApKSB8fCBtX2xvY2tlZC5jb250YWlucyh2LT5j
aGlsZCgxKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH07
Ci0KLSAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlTRXh0MzIgPSBbJl0gKFZhbHVlKiB2KSAt
PiBib29sIHsgCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi0+b3Bjb2RlKCkgPT0g
U0V4dDMyICYmIGNhbkJlSW50ZXJuYWwodik7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgLy8gTUFERDogZCA9IG4gKiBtICsgYQotICAgICAgICAgICAgICAg
ICAgICBhdXRvIHRyeUFwcGVuZE11bHRpcGx5QWRkID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUq
IHJpZ2h0KSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdHJ5TXVsdGlw
bHkobGVmdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5TGVmdCA9IGxlZnQtPmNoaWxkKDAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQgPSBsZWZ0LT5j
aGlsZCgxKTsKKyAgICAgICAgICAgIGF1dG8gdHJ5TXVsdGlwbHlBZGQgPSBbJl0gKCkgLT4gYm9v
bCB7CisgICAgICAgICAgICAgICAgaWYgKGltbShyaWdodCkgJiYgIW1fdmFsdWVUb1RtcFtyaWdo
dF0pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICAgICAgICAg
IC8vIE1BREQ6IGQgPSBuICogbSArIGEKKyAgICAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZE11
bHRpcGx5QWRkID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGxlZnQtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRl
cm5hbChsZWZ0KSB8fCBtX2xvY2tlZC5jb250YWlucyhyaWdodCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBs
eUxlZnQgPSBsZWZ0LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRp
cGx5UmlnaHQgPSBsZWZ0LT5jaGlsZCgxKTsKKyAgICAgICAgICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseUFkZDMyLCBNdWx0aXBseUFk
ZDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHRyeU5ld0Fp
ck9wY29kZSA9IFsmXSAoKSAtPiBBaXI6Ok9wY29kZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYWlyT3Bjb2RlICE9IE11bHRpcGx5QWRkNjQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNNQURE
TDogZCA9IFNFeHQzMihuKSAqIFNFeHQzMihtKSArIGEKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtdWx0aXBseUFkZE9wY29kZSA9PSBNdWx0aXBseUFkZDY0ICYmIHRyeVNFeHQzMihtdWx0
aXBseUxlZnQpICYmIHRyeVNFeHQzMihtdWx0aXBseVJpZ2h0KSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZChNdWx0aXBseUFkZFNpZ25FeHRlbmQzMiwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRtcChtdWx0aXBseUxlZnQtPmNoaWxkKDApKSwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChtdWx0aXBseVJpZ2h0LT5jaGlsZCgwKSks
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAocmlnaHQpLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG1fdmFsdWUpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxlZnQpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5UmlnaHQpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlMZWZ0LCBT
RXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlSaWdodCwgU0V4dDMyKSkgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5QWRkU2lnbkV4dGVuZDMy
OworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVU1BRERMOiBkID0gWkV4dDMyKG4pICogWkV4
dDMyKG0pICsgYQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNv
ZGUobXVsdGlwbHlMZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlS
aWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRp
cGx5QWRkWmVyb0V4dGVuZDMyOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6
T29wczsKKyAgICAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kKG11bHRpcGx5QWRkT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0KSwgdG1wKG11bHRpcGx5
UmlnaHQpLCB0bXAocmlnaHQpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBB
aXI6Ok9wY29kZSBuZXdBaXJPcGNvZGUgPSB0cnlOZXdBaXJPcGNvZGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG5ld0Fpck9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1w
LCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQo
bmV3QWlyT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSksIHRtcChtdWx0aXBseVJp
Z2h0LT5jaGlsZCgwKSksIHRtcChyaWdodCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxlZnQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21taXRJbnRlcm5hbChsZWZ0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRyeUFwcGVuZE11bHRpcGx5QWRkKGxlZnQsIHJp
Z2h0KSB8fCB0cnlBcHBlbmRNdWx0aXBseUFkZChyaWdodCwgbGVmdCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKGFpck9wY29kZSwgQXJnOjpUbXAsIEFy
Zzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMobXVs
dGlwbHlMZWZ0KSB8fCBtX2xvY2tlZC5jb250YWlucyhtdWx0aXBseVJpZ2h0KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5k
KGFpck9wY29kZSwgdG1wKG11bHRpcGx5TGVmdCksIHRtcChtdWx0aXBseVJpZ2h0KSwgdG1wKHJp
Z2h0KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwo
bGVmdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
IH07CiAKLSAgICAgICAgICAgIC8vIGFkZC13aXRoLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBTaGlm
dFR5cGUgYW1vdW50KQotICAgICAgICAgICAgYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6QjM6
Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bjb2RlIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2gg
KG9wY29kZSkgewotICAgICAgICAgICAgICAgIGNhc2UgU2hsOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQs
IG1fdmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBTU2hyOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRSaWdodFNoaWZ0MzIsIEFkZFJp
Z2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgICAgICBjYXNlIFpTaHI6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2lnbmVk
UmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsK
LSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWly
OjpPb3BzOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ5QXBw
ZW5kTXVsdGlwbHlBZGQobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZE11bHRpcGx5QWRkKHJpZ2h0
LCBsZWZ0KTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQWRk
QW5kU2hpZnQgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAg
ICAgICAgICAgaWYgKHRyeU11bHRpcGx5QWRkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICAvLyBhZGQtd2l0aC1zaGlmdCBQYXR0ZXJuOiBuICsgKG0gU2hpZnRUeXBl
IGFtb3VudCkKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQWRkV2l0aFNoaWZ0ID0gWyZdIChW
YWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBhdXRv
IHRyeU9wY29kZSA9IFsmXSAoQjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bjb2RlIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBTaGw6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlw
ZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgU1NocjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnlPcGNvZGVGb3JUeXBlKEFkZFJpZ2h0U2hpZnQzMiwgQWRkUmlnaHRTaGlmdDY0LCBtX3Zh
bHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFpTaHI6CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRVbnNpZ25lZFJpZ2h0U2hp
ZnQzMiwgQWRkVW5zaWduZWRSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWly
OjpPb3BzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKwogICAg
ICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZShyaWdodC0+b3Bjb2Rl
KCkpOwogICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwg
QXJnOjpUbXAsIEFyZzo6SW1tLCBBcmc6OlRtcCkpIAogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yNjQ5LDcgKzI2NTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKHRyeUFwcGVu
ZEFkZEFuZFNoaWZ0KGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRBZGRBbmRTaGlmdChyaWdodCwg
bGVmdCkpCisgICAgICAgICAgICBpZiAodHJ5QXBwZW5kQWRkV2l0aFNoaWZ0KGxlZnQsIHJpZ2h0
KSB8fCB0cnlBcHBlbmRBZGRXaXRoU2hpZnQocmlnaHQsIGxlZnQpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgYXBwZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGREb3Vi
bGUsIEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4obGVmdCwgcmlnaHQpOwpAQCAtMjY2MCw3MiArMjY2
OCw2NCBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGls
ZCgwKTsKICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOwogCi0g
ICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseVN1Yk9wY29kZSA9IHRyeU9wY29kZUZvclR5
cGUoTXVsdGlwbHlTdWIzMiwgTXVsdGlwbHlTdWI2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAg
ICAgICAgIGlmIChtdWx0aXBseVN1Yk9wY29kZSAhPSBBaXI6Ok9vcHMKLSAgICAgICAgICAgICAg
ICAmJiBpc1ZhbGlkRm9ybShtdWx0aXBseVN1Yk9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBB
cmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBseSA9
IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICBpZiAodi0+b3Bj
b2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKHYpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFp
bnModi0+Y2hpbGQoMCkpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxkKDEpKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5k
TXVsdGlwbHlTdWIgPSBbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgaWYgKGltbShy
aWdodCkgJiYgIW1fdmFsdWVUb1RtcFtyaWdodF0pCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICAgICAgICAgIC8vIE1TVUI6IGQgPSBhIC0gbiAqIG0KLSAgICAg
ICAgICAgICAgICBpZiAoKCFpbW0ocmlnaHQpIHx8IG1fdmFsdWVUb1RtcFtyaWdodF0pICYmIHRy
eU11bHRpcGx5KHJpZ2h0KSkgewotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlM
ZWZ0ID0gcmlnaHQtPmNoaWxkKDApOwotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlw
bHlSaWdodCA9IHJpZ2h0LT5jaGlsZCgxKTsKLQorICAgICAgICAgICAgICAgIGlmIChtX2xvY2tl
ZC5jb250YWlucyhsZWZ0KSB8fCByaWdodC0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVy
bmFsKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSByaWdodC0+Y2hpbGQoMCk7CisgICAgICAgICAg
ICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQgPSByaWdodC0+Y2hpbGQoMSk7CisgICAgICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseVN1
YjMyLCBNdWx0aXBseVN1YjY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGF1
dG8gdHJ5TmV3QWlyT3Bjb2RlID0gWyZdICgpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGFpck9wY29kZSAhPSBNdWx0aXBseVN1YjY0KQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAgICAgICAgLy8gU01TVUJM
OiBkID0gYSAtIFNFeHQzMihuKSAqIFNFeHQzMihtKQotICAgICAgICAgICAgICAgICAgICBpZiAo
bXVsdGlwbHlTdWJPcGNvZGUgPT0gTXVsdGlwbHlTdWI2NAotICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgaXNWYWxpZEZvcm0oTXVsdGlwbHlTdWJTaWduRXh0ZW5kMzIsIEFyZzo6VG1wLCBBcmc6
OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byB0cnlTRXh0MzIgPSBbJl0gKFZhbHVlKiB2KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHYtPm9wY29kZSgpICE9IFNFeHQzMiB8fCAhY2FuQmVJbnRlcm5hbCh2KSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kTXVsdGlwbHlTdWJTaWduRXh0ZW5k
MzIgPSBbJl0gKCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0
cnlTRXh0MzIobXVsdGlwbHlMZWZ0KSB8fCAhdHJ5U0V4dDMyKG11bHRpcGx5UmlnaHQpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kKE11bHRpcGx5U3ViU2lnbkV4dGVuZDMyLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5TGVmdC0+Y2hpbGQoMCkpLCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5UmlnaHQtPmNoaWxkKDAp
KSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChsZWZ0KSwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChtX3ZhbHVlKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5TGVmdCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9OwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTXVsdGlwbHlTdWJTaWduRXh0ZW5k
MzIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVs
dGlwbHlMZWZ0LCBTRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlSaWdodCwg
U0V4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlTdWJTaWdu
RXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIC8vIFVNU1VCTDogZCA9IGEgLSBaRXh0MzIo
bikgKiBaRXh0MzIobSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNv
ZGUobXVsdGlwbHlMZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlS
aWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlT
dWJaZXJvRXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7Cisg
ICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgICAgICBhcHBlbmQobXVsdGlwbHlT
dWJPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQpLCB0bXAobXVsdGlwbHlSaWdodCksIHRtcChsZWZ0
KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBuZXdBaXJPcGNv
ZGUgPSB0cnlOZXdBaXJPcGNvZGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0o
bmV3QWlyT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKG5ld0Fpck9wY29kZSwgdG1wKG11bHRpcGx5TGVm
dC0+Y2hpbGQoMCkpLCB0bXAobXVsdGlwbHlSaWdodC0+Y2hpbGQoMCkpLCB0bXAobGVmdCksIHRt
cChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5
TGVmdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5UmlnaHQp
OwogICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBzdWItd2l0aC1z
aGlmdCBQYXR0ZXJuOiBuIC0gKG0gU2hpZnRUeXBlIGFtb3VudCkKLSAgICAgICAgICAgIGF1dG8g
dHJ5T3Bjb2RlID0gWyZdIChKU0M6OkIzOjpPcGNvZGUgb3Bjb2RlKSAtPiBBaXI6Ok9wY29kZSB7
Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKLSAgICAgICAgICAgICAgICBjYXNl
IFNobDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViTGVm
dFNoaWZ0MzIsIFN1YkxlZnRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOwotICAgICAgICAgICAg
ICAgIGNhc2UgU1NocjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5
cGUoU3ViUmlnaHRTaGlmdDMyLCBTdWJSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBaU2hyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5
T3Bjb2RlRm9yVHlwZShTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMiwgU3ViVW5zaWduZWRSaWdodFNo
aWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShhaXJPcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRt
cCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhtdWx0aXBseUxlZnQpIHx8
IG1fbG9ja2VkLmNvbnRhaW5zKG11bHRpcGx5UmlnaHQpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYXBwZW5kKGFpck9wY29kZSwgdG1wKG11bHRp
cGx5TGVmdCksIHRtcChtdWx0aXBseVJpZ2h0KSwgdG1wKGxlZnQpLCB0bXAobV92YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH07CiAKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRN
dWx0aXBseVN1YigpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgLy8g
c3ViLXdpdGgtc2hpZnQgUGF0dGVybjogbiAtIChtIFNoaWZ0VHlwZSBhbW91bnQpCiAgICAgICAg
ICAgICBhdXRvIHRyeUFwcGVuZFN1YkFuZFNoaWZ0ID0gWyZdICgpIC0+IGJvb2wgeworICAgICAg
ICAgICAgICAgIGF1dG8gdHJ5T3Bjb2RlID0gWyZdIChCMzo6T3Bjb2RlIG9wY29kZSkgLT4gQWly
OjpPcGNvZGUgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAg
ICAgICAgICAgICAgICBjYXNlIFNobDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnlPcGNvZGVGb3JUeXBlKFN1YkxlZnRTaGlmdDMyLCBTdWJMZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+
dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViUmlnaHRTaGlmdDMyLCBTdWJSaWdo
dFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgWlNo
cjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YlVu
c2lnbmVkUmlnaHRTaGlmdDMyLCBTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBBaXI6Ok9vcHM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9OworCiAgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2Rl
KHJpZ2h0LT5vcGNvZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNv
ZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3NTAsMjAgKzI3NTAsNDUgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTmVnOiB7Ci0gICAgICAgICAgICBBaXI6Ok9wY29k
ZSBtdWx0aXBseU5lZ09wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlOZWczMiwgTXVs
dGlwbHlOZWc2NCwgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgIGlmIChtdWx0aXBseU5l
Z09wY29kZSAhPSBBaXI6Ok9vcHMKLSAgICAgICAgICAgICAgICAmJiBpc1ZhbGlkRm9ybShtdWx0
aXBseU5lZ09wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkKLSAgICAgICAgICAg
ICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gTXVsCi0gICAgICAgICAgICAg
ICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKLSAgICAgICAgICAgICAg
ICBWYWx1ZSogbXVsdGlwbHlPcGVyYXRpb24gPSBtX3ZhbHVlLT5jaGlsZCgwKTsKLSAgICAgICAg
ICAgICAgICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbXVsdGlwbHlPcGVyYXRpb24tPmNoaWxkKDAp
OwotICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0ID0gbXVsdGlwbHlPcGVyYXRp
b24tPmNoaWxkKDEpOwotICAgICAgICAgICAgICAgIGlmICghbV9sb2NrZWQuY29udGFpbnMobXVs
dGlwbHlMZWZ0KSAmJiAhbV9sb2NrZWQuY29udGFpbnMobXVsdGlwbHlSaWdodCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kKG11bHRpcGx5TmVnT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0
KSwgdG1wKG11bHRpcGx5UmlnaHQpLCB0bXAobV92YWx1ZSkpOwotICAgICAgICAgICAgICAgICAg
ICBjb21taXRJbnRlcm5hbChtdWx0aXBseU9wZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kTXVsdGlwbHlOZWcgPSBbJl0gKCkg
LT4gYm9vbCB7CisgICAgICAgICAgICAgICAgLy8gTU5FRyA6IGQgPSAtKG4gKiBtKQorICAgICAg
ICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5C
ZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSBtX3ZhbHVlLT5j
aGlsZCgwKS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQg
PSBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSk7CisgICAgICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgYWlyT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseU5lZzMyLCBNdWx0aXBseU5l
ZzY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGF1dG8gdHJ5TmV3QWlyT3Bj
b2RlID0gWyZdICgpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFp
ck9wY29kZSAhPSBNdWx0aXBseU5lZzY0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEFpcjo6T29wczsKKyAgICAgICAgICAgICAgICAgICAgLy8gU01ORUdMOiBkID0gLShTRXh0MzIo
bikgKiBTRXh0MzIobSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChpc01lcmdlYWJsZUIzT3Bj
b2RlKG11bHRpcGx5TGVmdCwgU0V4dDMyKSAmJiBpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5
UmlnaHQsIFNFeHQzMikpIAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5
TmVnU2lnbkV4dGVuZDMyOworICAgICAgICAgICAgICAgICAgICAvLyBVTU5FR0w6IGQgPSAtKFpF
eHQzMihuKSAqIFpFeHQzMihtKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxl
QjNPcGNvZGUobXVsdGlwbHlMZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVs
dGlwbHlSaWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVs
dGlwbHlOZWdaZXJvRXh0ZW5kMzI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9v
cHM7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG5l
d0Fpck9wY29kZSA9IHRyeU5ld0Fpck9wY29kZSgpOworICAgICAgICAgICAgICAgIGlmIChpc1Zh
bGlkRm9ybShuZXdBaXJPcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZChuZXdBaXJPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQt
PmNoaWxkKDApKSwgdG1wKG11bHRpcGx5UmlnaHQtPmNoaWxkKDApKSwgdG1wKG1fdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlMZWZ0KTsKKyAgICAg
ICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7CisgICAgICAgICAg
ICAgICAgICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShhaXJPcGNvZGUsIEFyZzo6VG1wLCBB
cmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKG11bHRpcGx5TGVmdCkgfHwgbV9s
b2NrZWQuY29udGFpbnMobXVsdGlwbHlSaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoYWlyT3Bjb2RlLCB0bXAobXVsdGlwbHlM
ZWZ0KSwgdG1wKG11bHRpcGx5UmlnaHQpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAg
IGNvbW1pdEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRNdWx0
aXBseU5lZygpKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYXBwZW5k
VW5PcDxOZWczMiwgTmVnNjQsIE5lZ2F0ZURvdWJsZSwgTmVnYXRlRmxvYXQ+KG1fdmFsdWUtPmNo
aWxkKDApKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IDA1ZGMzYTlmZWM0Njk2ODQwMzFkODhkNzNl
YzM3Y2MwNThiZTFmNTcuLjY0Y2E3NzdiZjA2NWVlZjc4NzZhOTA5Mjg0OWFkNTViODI0OWJkN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29k
ZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpA
QCAtMjU0LDYgKzI1NCw5IEBAIGFybTY0OiBNdWx0aXBseUFkZDY0IFU6Rzo2NCwgVTpHOjY0LCBV
Okc6NjQsIEQ6Rzo2NAogYXJtNjQ6IE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyIFU6RzozMiwgVTpH
OjMyLCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAsIFRtcAogCithcm02NDogTXVs
dGlwbHlBZGRaZXJvRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIsIFU6Rzo2NCwgRDpHOjY0CisgICAg
VG1wLCBUbXAsIFRtcCwgVG1wCisKIGFybTY0OiBNdWx0aXBseVN1YjMyIFU6RzozMiwgVTpHOjMy
LCBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcCwgVG1wLCBUbXAKIApAQCAtMjYzLDEzICsy
NjYsMjIgQEAgYXJtNjQ6IE11bHRpcGx5U3ViNjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpH
OjY0CiBhcm02NDogTXVsdGlwbHlTdWJTaWduRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIsIFU6Rzo2
NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcCwgVG1wCiAKK2FybTY0OiBNdWx0aXBseVN1Ylpl
cm9FeHRlbmQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwg
VG1wLCBUbXAKKwogYXJtNjQ6IE11bHRpcGx5TmVnMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIK
ICAgICBUbXAsIFRtcCwgVG1wCiAKIGFybTY0OiBNdWx0aXBseU5lZzY0IFU6Rzo2NCwgVTpHOjY0
LCBaRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcAogCi1hcm02NDogTXVsdGlwbHlTaWduRXh0ZW5k
MzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6NjQKK2FybTY0OiBNdWx0aXBseU5lZ1NpZ25FeHRlbmQz
MiBVOkc6MzIsIFU6RzozMiwgRDpHOjY0CisgICAgVG1wLCBUbXAsIFRtcAorCithcm02NDogTXVs
dGlwbHlOZWdaZXJvRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAorICAgIFRtcCwgVG1w
LCBUbXAKKworYXJtNjQ6IE11bHRpcGx5U2lnbkV4dGVuZDMyIFU6RzozMiwgVTpHOjMyLCBEOkc6
NjQKICAgICBUbXAsIFRtcCwgVG1wCiAKIGFybTY0OiBEaXYzMiBVOkc6MzIsIFU6RzozMiwgWkQ6
RzozMgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDljN2QyOTk4ZTJhODkwZjVlZGU3
MGViNmI5ZTBmOTkxOTQ3ZmExMWYuLmY4YmU3NzkzY2VhZDVkMjNkZDk2MGU1MTQwZmFmODcwNGNl
YWY0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTkxMywxMyArOTEzLDE4IEBA
IHZvaWQgdGVzdE11bEFkZEFyZ3NMZWZ0MzIoKTsKIHZvaWQgdGVzdE11bEFkZEFyZ3NSaWdodDMy
KCk7CiB2b2lkIHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzTGVmdCgpOwogdm9pZCB0ZXN0TXVs
QWRkU2lnbkV4dGVuZDMyQXJnc1JpZ2h0KCk7Cit2b2lkIHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJB
cmdzTGVmdCgpOwordm9pZCB0ZXN0TXVsQWRkWmVyb0V4dGVuZDMyQXJnc1JpZ2h0KCk7CiB2b2lk
IHRlc3RNdWxTdWJBcmdzTGVmdCgpOwogdm9pZCB0ZXN0TXVsU3ViQXJnc1JpZ2h0KCk7CiB2b2lk
IHRlc3RNdWxTdWJBcmdzTGVmdDMyKCk7CiB2b2lkIHRlc3RNdWxTdWJBcmdzUmlnaHQzMigpOwot
dm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyQXJncygpOwordm9pZCB0ZXN0TXVsU3ViU2lnbkV4
dGVuZDMyKCk7Cit2b2lkIHRlc3RNdWxTdWJaZXJvRXh0ZW5kMzIoKTsKIHZvaWQgdGVzdE11bE5l
Z0FyZ3MoKTsKIHZvaWQgdGVzdE11bE5lZ0FyZ3MzMigpOwordm9pZCB0ZXN0TXVsTmVnU2lnbkV4
dGVuZDMyKCk7Cit2b2lkIHRlc3RNdWxOZWdaZXJvRXh0ZW5kMzIoKTsKIHZvaWQgdGVzdE11bEFy
Z0RvdWJsZShkb3VibGUpOwogdm9pZCB0ZXN0TXVsQXJnc0RvdWJsZShkb3VibGUsIGRvdWJsZSk7
CiB2b2lkIHRlc3RDYWxsU2ltcGxlRG91YmxlKGRvdWJsZSwgZG91YmxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzXzIuY3BwCmluZGV4IDhmNjBmY2M0YTRhMmVmMzU0MmU2NzQxYzI1MGFl
OWY5OGRiNmRhYjYuLjE3MWI4Mzc4MTMyNTdmMWQzZWMwNjJlOWY2ODc5MWViN2EyZDIwYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcApAQCAtODc0LDE5ICs4NzQsNiBAQCB2
b2lkIHRlc3RNdWxBcmdOZWdBcmcoaW50IGEsIGludCBiKQogICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCBhLCBiKSA9PSBhICogKC1iKSk7CiB9CiAKLXZvaWQgdGVzdE11bE5lZ0Fy
Z0FyZyhpbnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKLSAgICBWYWx1ZSogYXJnQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBWYWx1ZSogbmVn
QSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgYXJnQSk7Ci0g
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmln
aW4oKSwgbmVnQSwgYXJnQik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHBy
b2MsIGEsIGIpID09ICgtYSkgKiBiKTsKLX0KLQogdm9pZCB0ZXN0TXVsQXJnSW1tKGludDY0X3Qg
YSwgaW50NjRfdCBiKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTAxNCw3ICsxMDAxLDcg
QEAgdm9pZCB0ZXN0TXVsQWRkQXJnc0xlZnQoKQogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVl
cykgewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byBjIDogdGVzdFZhbHVlcykKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50
NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKiBiLnZh
bHVlICsgYy52YWx1ZSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+
KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSwgYS52YWx1ZSAqIGIudmFsdWUgKyBj
LnZhbHVlKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEwMzksMTQgKzEwMjYsMTQgQEAgdm9p
ZCB0ZXN0TXVsQWRkQXJnc1JpZ2h0KCkKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsK
ICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAgICAgICBmb3IgKGF1
dG8gYyA6IHRlc3RWYWx1ZXMpCi0gICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+
KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlICsgYi52YWx1ZSAq
IGMudmFsdWUpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90PigqY29k
ZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSksIGEudmFsdWUgKyBiLnZhbHVlICogYy52YWx1
ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKIHZvaWQgdGVzdE11bEFkZFNpZ25FeHRlbmQzMkFy
Z3NMZWZ0KCkKIHsKLSAgICAvLyBkID0gU0V4dDMyKG4pICogIFNFeHQzMihtKSArIGEKKyAgICAv
LyBkID0gU0V4dDMyKG4pICogU0V4dDMyKG0pICsgYQogICAgIFByb2NlZHVyZSBwcm9jOwogICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAKQEAgLTExMTgsNiArMTEwNSw4
NCBAQCB2b2lkIHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzUmlnaHQoKQogICAgIH0KIH0KIAor
dm9pZCB0ZXN0TXVsQWRkWmVyb0V4dGVuZDMyQXJnc0xlZnQoKQoreworICAgIC8vIGQgPSBaRXh0
MzIobikgKiBaRXh0MzIobSkgKyBhCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIFZhbHVlKiBtVmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAgIFZhbHVl
KiBhVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisKKyAgICBWYWx1ZSogbXVsVmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIG5WYWx1ZSwgbVZhbHVlKTsK
KyAgICBWYWx1ZSogYWRkVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwg
T3JpZ2luKCksIG11bFZhbHVlLCBhVmFsdWUpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRWYWx1ZSk7CisKKyAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbigqY29kZSwgInVtYWRkbCIpOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICAgICAgdWludDMyX3QgdW4gPSBuLnZhbHVlOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHVt
ID0gbS52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90
PigqY29kZSwgdW4sIHVtLCBhLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IHJocyA9
IHN0YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKSArIGEu
dmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0sobGhzID09IHJocyk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE11bEFkZFplcm9FeHRlbmQzMkFyZ3NS
aWdodCgpCit7CisgICAgLy8gZCA9IGEgKyBaRXh0MzIobikgKiBaRXh0MzIobSkKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisg
ICAgVmFsdWUqIGFWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogblZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5j
LCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKyAgICBWYWx1ZSog
bVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgWkV4dDMyLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpKTsKKwor
ICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBP
cmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOworICAgIFZhbHVlKiBhZGRWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYVZhbHVlLCBtdWxWYWx1ZSk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFk
ZFZhbHVlKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChp
c0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAidW1hZGRsIik7
CisKKyAgICBmb3IgKGF1dG8gYSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1
dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCB1biA9IG4udmFsdWU7Cisg
ICAgICAgICAgICAgICAgdWludDMyX3QgdW0gPSBtLnZhbHVlOworICAgICAgICAgICAgICAgIGlu
dDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCB1biwgdW0pOworICAg
ICAgICAgICAgICAgIGludDY0X3QgcmhzID0gYS52YWx1ZSArIHN0YXRpY19jYXN0PGludDY0X3Q+
KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKTsKKyAgICAgICAgICAgICAgICBDSEVDSyhs
aHMgPT0gcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCB0
ZXN0TXVsQWRkQXJnc0xlZnQzMigpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMTk0LDcg
KzEyNTksNyBAQCB2b2lkIHRlc3RNdWxTdWJBcmdzTGVmdCgpCiAgICAgZm9yIChhdXRvIGEgOiB0
ZXN0VmFsdWVzKSB7CiAgICAgICAgIGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewogICAgICAg
ICAgICAgZm9yIChhdXRvIGMgOiB0ZXN0VmFsdWVzKQotICAgICAgICAgICAgICAgIENIRUNLKGlu
dm9rZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1
ZSAqIGIudmFsdWUgLSBjLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpLCBhLnZhbHVlICogYi52
YWx1ZSAtIGMudmFsdWUpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTIxOSw3ICsxMjg0LDcg
QEAgdm9pZCB0ZXN0TXVsU3ViQXJnc1JpZ2h0KCkKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1
ZXMpIHsKICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAgICAgICBm
b3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpCi0gICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGlu
dDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlIC0gYi52
YWx1ZSAqIGMudmFsdWUpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90
PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSksIGEudmFsdWUgLSBiLnZhbHVlICog
Yy52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMjc1LDEyICsxMzQwLDEyIEBAIHZv
aWQgdGVzdE11bFN1YkFyZ3NSaWdodDMyKCkKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMp
IHsKICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8gYyA6IHRlc3RWYWx1ZXMpCi0gICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDMy
X3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlIC0gYi52YWx1
ZSAqIGMudmFsdWUpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90Pigq
Y29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSksIGEudmFsdWUgLSBiLnZhbHVlICogYy52
YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgdGVzdE11bFN1YlNpZ25FeHRlbmQz
MkFyZ3MoKQordm9pZCB0ZXN0TXVsU3ViU2lnbkV4dGVuZDMyKCkKIHsKICAgICAvLyBkID0gYSAt
IFNFeHQzMihuKSAqIFNFeHQzMihtKQogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTMxNyw2ICsx
MzgyLDYyIEBAIHZvaWQgdGVzdE11bFN1YlNpZ25FeHRlbmQzMkFyZ3MoKQogICAgIH0KIH0KIAor
dm9pZCB0ZXN0TXVsU3ViWmVyb0V4dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gYSAtIFpFeHQzMihu
KSAqIFpFeHQzMihtKQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpKSk7CisgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMikpKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOworICAgIFZhbHVl
KiBzdWJWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwg
YVZhbHVlLCBtdWxWYWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHN1YlZhbHVlKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCAidW1zdWJsIik7CisKKyAgICBmb3IgKGF1dG8gYSA6IGludDY0T3BlcmFuZHMo
KSkgeworICAgICAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAg
ICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgICAgICB1aW50
MzJfdCB1biA9IG4udmFsdWU7CisgICAgICAgICAgICAgICAgdWludDMyX3QgdW0gPSBtLnZhbHVl
OworICAgICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBh
LnZhbHVlLCB1biwgdW0pOworICAgICAgICAgICAgICAgIGludDY0X3QgcmhzID0gYS52YWx1ZSAt
IHN0YXRpY19jYXN0PGludDY0X3Q+KHVuKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHVtKTsKKyAg
ICAgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsTmVnQXJnQXJnKGludDMyX3QgYSwgaW50MzJfdCBi
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1
ZSogYXJnQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1ZSogbmVnQSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgYXJnQSk7CisgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgbmVnQSwgYXJn
Qik7CisgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBy
ZXN1bHQpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlz
QVJNNjQoKSAmJiBKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPiAxKQorICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1uZWciKTsKKyAgICBDSEVDS19FUShpbnZv
a2U8aW50MzJfdD4oKmNvZGUsIGEsIGIpLCAoLWEpICogYik7Cit9CisKIHZvaWQgdGVzdE11bE5l
Z0FyZ3MoKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTMzMCwxMSArMTQ1MSwxMyBAQCB2
b2lkIHRlc3RNdWxOZWdBcmdzKCkKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgYWRkZWQpOwogCiAgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSAmJiBKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09w
dExldmVsKCkgPiAxKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1uZWci
KTsKIAogICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDY0T3BlcmFuZHMoKTsKICAgICBmb3IgKGF1
dG8gYSA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7
Ci0gICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFs
dWUpID09IC0oYS52YWx1ZSAqIGIudmFsdWUpKTsKKyAgICAgICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSksIC0oYS52YWx1ZSAqIGIudmFsdWUp
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEzNTQsMTEgKzE0NzcsODIgQEAgdm9pZCB0ZXN0
TXVsTmVnQXJnczMyKCkKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgYWRkZWQpOwogCiAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgaWYgKGlzQVJNNjQoKSAmJiBKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVs
KCkgPiAxKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1uZWciKTsKIAog
ICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDMyT3BlcmFuZHMoKTsKICAgICBmb3IgKGF1dG8gYSA6
IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAg
ICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUpID09
IC0oYS52YWx1ZSAqIGIudmFsdWUpKTsKKyAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVz
KQorICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhLnZhbHVlLCBi
LnZhbHVlKSwgLShhLnZhbHVlICogYi52YWx1ZSkpOworICAgIH0KK30KKwordm9pZCB0ZXN0TXVs
TmVnU2lnbkV4dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gLSAoU0V4dDMyKG4pICogU0V4dDMyKG0p
KQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisKKyAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgcHJvYywgU0V4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSkpOworICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICBwcm9jLCBTRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBWYWx1ZSogbXVsVmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIG5WYWx1ZSwgbVZhbHVlKTsKKyAg
ICBWYWx1ZSogbmVnVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3Jp
Z2luKCksIG11bFZhbHVlKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgbmVnVmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsICJzbW5lZ2wiKTsKKworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PigqY29kZSwgbi52YWx1ZSwgbS52YWx1ZSk7
CisgICAgICAgICAgICBpbnQ2NF90IHJocyA9IC0oc3RhdGljX2Nhc3Q8aW50NjRfdD4obi52YWx1
ZSkgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtLnZhbHVlKSk7CisgICAgICAgICAgICBDSEVDSyhs
aHMgPT0gcmhzKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsTmVnWmVyb0V4
dGVuZDMyKCkKK3sKKyAgICAvLyBkID0gLSAoWkV4dDMyKG4pICogWkV4dDMyKG0pKQorICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisK
KyAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJv
YywgWkV4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSkpOworICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKSk7CisKKyAgICBWYWx1ZSogbXVsVmFsdWUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIG5WYWx1ZSwgbVZhbHVlKTsKKyAgICBWYWx1ZSog
bmVnVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG11
bFZhbHVlKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgbmVnVmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7
CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUs
ICJ1bW5lZ2wiKTsKKworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAg
ICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICB1aW50MzJf
dCB1biA9IG4udmFsdWU7CisgICAgICAgICAgICB1aW50MzJfdCB1bSA9IG0udmFsdWU7CisgICAg
ICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PigqY29kZSwgdW4sIHVtKTsKKyAg
ICAgICAgICAgIGludDY0X3QgcmhzID0gLShzdGF0aWNfY2FzdDxpbnQ2NF90Pih1bikgKiBzdGF0
aWNfY2FzdDxpbnQ2NF90Pih1bSkpOworICAgICAgICAgICAgQ0hFQ0sobGhzID09IHJocyk7CiAg
ICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzXzMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18zLmNwcAppbmRl
eCA3MmIwOGQxNmFhNzI5Y2RiODM0NmZkMmZhYWZjYWQ5ZTAwMzlkNmViLi5jMTdhYmM3MzYzNDBk
NWFiYjM2NGM0M2Y1Yzg2MDcxMDg2NmRhNDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzXzMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjNfMy5jcHAKQEAgLTMzNzAsMTMgKzMzNzAsMTggQEAgdm9pZCBhZGRBcmdUZXN0cyhjb25zdCBj
aGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpCiAg
ICAgUlVOKHRlc3RNdWxBZGRBcmdzUmlnaHQzMigpKTsKICAgICBSVU4odGVzdE11bEFkZFNpZ25F
eHRlbmQzMkFyZ3NMZWZ0KCkpOwogICAgIFJVTih0ZXN0TXVsQWRkU2lnbkV4dGVuZDMyQXJnc1Jp
Z2h0KCkpOworICAgIFJVTih0ZXN0TXVsQWRkWmVyb0V4dGVuZDMyQXJnc0xlZnQoKSk7CisgICAg
UlVOKHRlc3RNdWxBZGRaZXJvRXh0ZW5kMzJBcmdzUmlnaHQoKSk7CiAgICAgUlVOKHRlc3RNdWxT
dWJBcmdzTGVmdCgpKTsKICAgICBSVU4odGVzdE11bFN1YkFyZ3NSaWdodCgpKTsKICAgICBSVU4o
dGVzdE11bFN1YkFyZ3NMZWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RNdWxTdWJBcmdzUmlnaHQzMigp
KTsKLSAgICBSVU4odGVzdE11bFN1YlNpZ25FeHRlbmQzMkFyZ3MoKSk7CisgICAgUlVOKHRlc3RN
dWxTdWJTaWduRXh0ZW5kMzIoKSk7CisgICAgUlVOKHRlc3RNdWxTdWJaZXJvRXh0ZW5kMzIoKSk7
CiAgICAgUlVOKHRlc3RNdWxOZWdBcmdzKCkpOwogICAgIFJVTih0ZXN0TXVsTmVnQXJnczMyKCkp
OworICAgIFJVTih0ZXN0TXVsTmVnU2lnbkV4dGVuZDMyKCkpOworICAgIFJVTih0ZXN0TXVsTmVn
WmVyb0V4dGVuZDMyKCkpOwogICAgIAogICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ05lZ0FyZywg
aW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpCiAgICAgUlVOX0JJTkFSWSh0ZXN0TXVs
TmVnQXJnQXJnLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>