<?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>110812</bug_id>
          
          <creation_ts>2013-02-25 15:16:24 -0800</creation_ts>
          <short_desc>Implement channel up-mixing and down-mixing rules</short_desc>
          <delta_ts>2013-02-27 13:49:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Chris Rogers">crogers</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>841336</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-25 15:16:24 -0800</bug_when>
    <thetext>Implement channel up-mixing and down-mixing rules</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841348</commentid>
    <comment_count>1</comment_count>
      <attachid>190140</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-25 15:25:31 -0800</bug_when>
    <thetext>Created attachment 190140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842276</commentid>
    <comment_count>2</comment_count>
      <attachid>190140</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-02-26 12:48:40 -0800</bug_when>
    <thetext>Comment on attachment 190140
Patch

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

Looks good. Thanks for the explanation offline about the algorithm and the layout test. One comment.

&gt; Source/WebCore/platform/audio/AudioBus.cpp:385
&gt; +        vadd(sourceC, 1, destination, 1, destination, 1, length());

This is basically exactly the same code as in speakersCopyFrom. Could you refactor it into a separate method to share the code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843465</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-27 13:49:10 -0800</bug_when>
    <thetext>Committed r144235: &lt;http://trac.webkit.org/changeset/144235&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190140</attachid>
            <date>2013-02-25 15:25:31 -0800</date>
            <delta_ts>2013-02-26 12:48:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110812-20130225152147.patch</filename>
            <type>text/plain</type>
            <size>41773</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzOTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGMzMGQ0MTU5M2M1NTAw
ODhmMTYwNDYyYzVjYmViYjc3ZTVjOWQwNS4uNmUxZDc1MzdmMjIzMWU4M2UxYmNmMTFlODkyNGQz
ZTlkOTliNGMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAyLTI1ICBDaHJp
cyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGNoYW5u
ZWwgdXAtbWl4aW5nIGFuZCBkb3duLW1peGluZyBydWxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwODEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGxlYXNlIHNlZSBXZWIgQXVkaW8gc3BlY2lmaWNh
dGlvbiBmb3IgZGV0YWlscyBvZiB0aGUgQXVkaW9Ob2RlIG1peGluZyBydWxlcyBhdHRyaWJ1dGVz
OgorICAgICAgICBodHRwczovL2R2Y3MudzMub3JnL2hnL2F1ZGlvL3Jhdy1maWxlL3RpcC93ZWJh
dWRpby9zcGVjaWZpY2F0aW9uLmh0bWwjVXBNaXgKKworICAgICAgICBUZXN0OiB3ZWJhdWRpby9h
dWRpb25vZGUtY2hhbm5lbC1ydWxlcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvTm9kZTo6QXVkaW9Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y2hhbm5l
bENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6c2V0Q2hhbm5lbENvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y2hhbm5lbENvdW50TW9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb05vZGU6OnNldENoYW5uZWxDb3VudE1vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Ob2RlOjpjaGFubmVsSW50ZXJwcmV0YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlOjpzZXRDaGFubmVsSW50ZXJwcmV0YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlOjp1cGRhdGVDaGFubmVsc0ZvcklucHV0cyk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb05vZGUuaDoKKyAgICAgICAgKEF1ZGlvTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb05vZGU6OmludGVybmFsQ2hhbm5lbENvdW50TW9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb05vZGU6OmludGVybmFsQ2hhbm5lbEludGVycHJldGF0aW9uKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJ
bnB1dDo6bnVtYmVyT2ZDaGFubmVscyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1
dDo6YnVzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUlucHV0OjppbnRlcm5hbFN1bW1p
bmdCdXMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OnN1bUFsbENvbm5lY3Rp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUlucHV0OjpwdWxsKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0Lmg6CisgICAgICAgIChBdWRpb05vZGVJ
bnB1dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6UGFubmVyTm9kZSk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6
OnNwZWFrZXJzQ29weUZyb20pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OnNwZWFrZXJz
U3VtRnJvbSk6CisKIDIwMTMtMDItMjUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIENoYW5nZWQgRGF0YWJhc2VUcmFja2VyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2Uo
KSB0byByZXR1cm4gdGhlIHByZXZpb3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTm9kZS5jcHAKaW5kZXggOWE0MjJmYWNiZWZlNmM2NmY2NGUxMTcxZjRjMzQyZjA5
ZWFkYTAwYy4uZTJjOTNjMDY4M2U4MjA2NTJjYWRjNTQ5N2IwNzg5YjA1ZjBkNDlhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcApAQCAtNTUsNiAr
NTUsOSBAQCBBdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUpCiAgICAgLCBtX2Nvbm5lY3Rpb25SZWZDb3VudCgwKQogICAgICwgbV9pc01h
cmtlZEZvckRlbGV0aW9uKGZhbHNlKQogICAgICwgbV9pc0Rpc2FibGVkKGZhbHNlKQorICAgICwg
bV9jaGFubmVsQ291bnQoMikKKyAgICAsIG1fY2hhbm5lbENvdW50TW9kZShNYXgpCisgICAgLCBt
X2NoYW5uZWxJbnRlcnByZXRhdGlvbihBdWRpb0J1czo6U3BlYWtlcnMpCiB7CiAjaWYgREVCVUdf
QVVESU9OT0RFX1JFRkVSRU5DRVMKICAgICBpZiAoIXNfaXNOb2RlQ291bnRJbml0aWFsaXplZCkg
ewpAQCAtMTk0LDYgKzE5Nyw5MSBAQCB2b2lkIEF1ZGlvTm9kZTo6ZGlzY29ubmVjdCh1bnNpZ25l
ZCBvdXRwdXRJbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgb3V0cHV0LT5kaXNjb25uZWN0
QWxsKCk7CiB9CiAKK3Vuc2lnbmVkIGxvbmcgQXVkaW9Ob2RlOjpjaGFubmVsQ291bnQoKQorewor
ICAgIHJldHVybiBtX2NoYW5uZWxDb3VudDsKK30KKwordm9pZCBBdWRpb05vZGU6OnNldENoYW5u
ZWxDb3VudCh1bnNpZ25lZCBsb25nIGNoYW5uZWxDb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2Nr
ZXIgbG9ja2VyKGNvbnRleHQoKSk7CisKKyAgICBpZiAoY2hhbm5lbENvdW50ID4gMCAmJiBjaGFu
bmVsQ291bnQgPD0gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpIHsKKyAgICAg
ICAgaWYgKG1fY2hhbm5lbENvdW50ICE9IGNoYW5uZWxDb3VudCkgeworICAgICAgICAgICAgbV9j
aGFubmVsQ291bnQgPSBjaGFubmVsQ291bnQ7CisgICAgICAgICAgICBpZiAobV9jaGFubmVsQ291
bnRNb2RlICE9IE1heCkKKyAgICAgICAgICAgICAgICB1cGRhdGVDaGFubmVsc0ZvcklucHV0cygp
OworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
Cit9CisKK1N0cmluZyBBdWRpb05vZGU6OmNoYW5uZWxDb3VudE1vZGUoKQoreworICAgIHN3aXRj
aCAobV9jaGFubmVsQ291bnRNb2RlKSB7CisgICAgY2FzZSBNYXg6CisgICAgICAgIHJldHVybiAi
bWF4IjsKKyAgICBjYXNlIENsYW1wZWRNYXg6CisgICAgICAgIHJldHVybiAiY2xhbXBlZC1tYXgi
OworICAgIGNhc2UgRXhwbGljaXQ6CisgICAgICAgIHJldHVybiAiZXhwbGljaXQiOworICAgIH0K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gIiI7Cit9CisKK3ZvaWQgQXVk
aW9Ob2RlOjpzZXRDaGFubmVsQ291bnRNb2RlKGNvbnN0IFN0cmluZyYgbW9kZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBdWRpb0NvbnRl
eHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisKKyAgICBDaGFubmVsQ291bnRNb2Rl
IG9sZE1vZGUgPSBtX2NoYW5uZWxDb3VudE1vZGU7CisKKyAgICBpZiAobW9kZSA9PSAibWF4IikK
KyAgICAgICAgbV9jaGFubmVsQ291bnRNb2RlID0gTWF4OworICAgIGVsc2UgaWYgKG1vZGUgPT0g
ImNsYW1wZWQtbWF4IikKKyAgICAgICAgbV9jaGFubmVsQ291bnRNb2RlID0gQ2xhbXBlZE1heDsK
KyAgICBlbHNlIGlmIChtb2RlID09ICJleHBsaWNpdCIpCisgICAgICAgIG1fY2hhbm5lbENvdW50
TW9kZSA9IEV4cGxpY2l0OworICAgIGVsc2UKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VS
UjsKKworICAgIGlmIChtX2NoYW5uZWxDb3VudE1vZGUgIT0gb2xkTW9kZSkKKyAgICAgICAgdXBk
YXRlQ2hhbm5lbHNGb3JJbnB1dHMoKTsKK30KKworU3RyaW5nIEF1ZGlvTm9kZTo6Y2hhbm5lbElu
dGVycHJldGF0aW9uKCkKK3sKKyAgICBzd2l0Y2ggKG1fY2hhbm5lbEludGVycHJldGF0aW9uKSB7
CisgICAgY2FzZSBBdWRpb0J1czo6U3BlYWtlcnM6CisgICAgICAgIHJldHVybiAic3BlYWtlcnMi
OworICAgIGNhc2UgQXVkaW9CdXM6OkRpc2NyZXRlOgorICAgICAgICByZXR1cm4gImRpc2NyZXRl
IjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICIiOworfQor
Cit2b2lkIEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbEludGVycHJldGF0aW9uKGNvbnN0IFN0cmluZyYg
aW50ZXJwcmV0YXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkp
OworCisgICAgaWYgKGludGVycHJldGF0aW9uID09ICJzcGVha2VycyIpCisgICAgICAgIG1fY2hh
bm5lbEludGVycHJldGF0aW9uID0gQXVkaW9CdXM6OlNwZWFrZXJzOworICAgIGVsc2UgaWYgKGlu
dGVycHJldGF0aW9uID09ICJkaXNjcmV0ZSIpCisgICAgICAgIG1fY2hhbm5lbEludGVycHJldGF0
aW9uID0gQXVkaW9CdXM6OkRpc2NyZXRlOworICAgIGVsc2UKKyAgICAgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKK30KKwordm9pZCBBdWRpb05vZGU6OnVwZGF0ZUNoYW5uZWxzRm9ySW5wdXRz
KCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9pbnB1dHMuc2l6ZSgpOyArK2kp
CisgICAgICAgIGlucHV0KGkpLT5jaGFuZ2VkT3V0cHV0cygpOworfQorCiB2b2lkIEF1ZGlvTm9k
ZTo6cHJvY2Vzc0lmTmVjZXNzYXJ5KHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNT
RVJUKGNvbnRleHQoKS0+aXNBdWRpb1RocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCmluZGV4IDMwYjhlYjMxYzg0MzA5YzI0M2U2NjA0ODA4NTYx
MzFmMzc0N2ZjNDEuLjUwY2NmN2U5NmU0OTA3ZTcwMDMwOTQyZTM0YWYyOTFhNDNkMDQ5YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtMjUsNiAr
MjUsNyBAQAogI2lmbmRlZiBBdWRpb05vZGVfaAogI2RlZmluZSBBdWRpb05vZGVfaAogCisjaW5j
bHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtODAsNiArODEsMTIg
QEAgcHVibGljOgogICAgICAgICBOb2RlVHlwZUVuZAogICAgIH07CiAKKyAgICBlbnVtIENoYW5u
ZWxDb3VudE1vZGUgeworICAgICAgICBNYXgsCisgICAgICAgIENsYW1wZWRNYXgsCisgICAgICAg
IEV4cGxpY2l0CisgICAgfTsKKwogICAgIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9ub2RlVHlwZTsgfQogICAgIHZvaWQgc2V0Tm9kZVR5cGUoTm9kZVR5cGUpOwogCkBAIC0x
NjEsNiArMTY4LDE4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCisgICAgdW5zaWduZWQgbG9uZyBjaGFubmVsQ291bnQo
KTsKKyAgICB2b2lkIHNldENoYW5uZWxDb3VudCh1bnNpZ25lZCBsb25nLCBFeGNlcHRpb25Db2Rl
Jik7CisKKyAgICBTdHJpbmcgY2hhbm5lbENvdW50TW9kZSgpOworICAgIHZvaWQgc2V0Q2hhbm5l
bENvdW50TW9kZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBTdHJpbmcg
Y2hhbm5lbEludGVycHJldGF0aW9uKCk7CisgICAgdm9pZCBzZXRDaGFubmVsSW50ZXJwcmV0YXRp
b24oY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgQ2hhbm5lbENvdW50TW9k
ZSBpbnRlcm5hbENoYW5uZWxDb3VudE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxDb3Vu
dE1vZGU7IH0KKyAgICBBdWRpb0J1czo6Q2hhbm5lbEludGVycHJldGF0aW9uIGludGVybmFsQ2hh
bm5lbEludGVycHJldGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jaGFubmVsSW50ZXJwcmV0YXRp
b247IH0KKwogcHJvdGVjdGVkOgogICAgIC8vIElucHV0cyBhbmQgb3V0cHV0cyBtdXN0IGJlIGNy
ZWF0ZWQgYmVmb3JlIHRoZSBBdWRpb05vZGUgaXMgaW5pdGlhbGl6ZWQuCiAgICAgdm9pZCBhZGRJ
bnB1dChQYXNzT3duUHRyPEF1ZGlvTm9kZUlucHV0Pik7CkBAIC0xNzEsNiArMTkwLDkgQEAgcHJv
dGVjdGVkOgogICAgIC8vIENhbGxlZCBmcm9tIGNvbnRleHQncyBhdWRpbyB0aHJlYWQuCiAgICAg
dmlydHVhbCB2b2lkIHB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAKKyAgICAv
LyBGb3JjZSBhbGwgaW5wdXRzIHRvIHRha2UgYW55IGNoYW5uZWwgaW50ZXJwcmV0YXRpb24gY2hh
bmdlcyBpbnRvIGFjY291bnQuCisgICAgdm9pZCB1cGRhdGVDaGFubmVsc0ZvcklucHV0cygpOwor
CiBwcml2YXRlOgogICAgIHZvbGF0aWxlIGJvb2wgbV9pc0luaXRpYWxpemVkOwogICAgIE5vZGVU
eXBlIG1fbm9kZVR5cGU7CkBAIC0xODgsMTEgKzIxMCwxNiBAQCBwcml2YXRlOgogICAgIAogICAg
IGJvb2wgbV9pc01hcmtlZEZvckRlbGV0aW9uOwogICAgIGJvb2wgbV9pc0Rpc2FibGVkOwotICAg
IAorCiAjaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKICAgICBzdGF0aWMgYm9vbCBzX2lz
Tm9kZUNvdW50SW5pdGlhbGl6ZWQ7CiAgICAgc3RhdGljIGludCBzX25vZGVDb3VudFtOb2RlVHlw
ZUVuZF07CiAjZW5kaWYKKworcHJvdGVjdGVkOgorICAgIHVuc2lnbmVkIG1fY2hhbm5lbENvdW50
OworICAgIENoYW5uZWxDb3VudE1vZGUgbV9jaGFubmVsQ291bnRNb2RlOworICAgIEF1ZGlvQnVz
OjpDaGFubmVsSW50ZXJwcmV0YXRpb24gbV9jaGFubmVsSW50ZXJwcmV0YXRpb247CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5pZGwKaW5kZXggZGQ4ZWM4YmI3MzhiY2U1YTQwM2Y1ZjBjN2I0OGM4N2NhZDJk
OWNmMy4uZWVjZjQxN2JjYjdiNDJjMDAyNDcwODQ3NDc5NjVmODY3YmYzNDI0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbApAQCAtMjksNiArMjks
MTUgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0
czsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHM7
CiAKKyAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjaGFubmVsQ291bnQKKyAgICAgICAgc2V0
dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgYXR0cmlidXRlIERPTVN0cmluZyBjaGFu
bmVsQ291bnRNb2RlCisgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAg
IGF0dHJpYnV0ZSBET01TdHJpbmcgY2hhbm5lbEludGVycHJldGF0aW9uCisgICAgICAgIHNldHRl
ciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKwogICAgIHZvaWQgY29ubmVjdChpbiBBdWRpb05vZGU/
IGRlc3RpbmF0aW9uLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSB1bnNpZ25lZCBs
b25nIG91dHB1dCwgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gdW5zaWduZWQgbG9u
ZyBpbnB1dCkKICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5jcHAKaW5kZXggZjNmNDhi
ZTg0MTljNDgzODU0ZTBlZTgwNTY0OTEzM2FlMWEyNjBjMy4uOTk1NWJlODEwZWE0YzU5MWQwYWI1
ODk4YWQ0NWI1MWEyNjVkNWEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5jcHAKQEAgLTE0OSw2ICsxNDksMTAgQEAgdm9pZCBBdWRp
b05vZGVJbnB1dDo6dXBkYXRlSW50ZXJuYWxCdXMoKQogCiB1bnNpZ25lZCBBdWRpb05vZGVJbnB1
dDo6bnVtYmVyT2ZDaGFubmVscygpIGNvbnN0CiB7CisgICAgQXVkaW9Ob2RlOjpDaGFubmVsQ291
bnRNb2RlIG1vZGUgPSBub2RlKCktPmludGVybmFsQ2hhbm5lbENvdW50TW9kZSgpOworICAgIGlm
IChtb2RlID09IEF1ZGlvTm9kZTo6RXhwbGljaXQpCisgICAgICAgIHJldHVybiBub2RlKCktPmNo
YW5uZWxDb3VudCgpOworCiAgICAgLy8gRmluZCB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIG9mIHRo
ZSBjb25uZWN0aW9uIHdpdGggdGhlIGxhcmdlc3QgbnVtYmVyIG9mIGNoYW5uZWxzLgogICAgIHVu
c2lnbmVkIG1heENoYW5uZWxzID0gMTsgLy8gb25lIGNoYW5uZWwgaXMgdGhlIG1pbmltdW0gYWxs
b3dlZAogCkBAIC0xNTYsMjAgKzE2MCwxMCBAQCB1bnNpZ25lZCBBdWRpb05vZGVJbnB1dDo6bnVt
YmVyT2ZDaGFubmVscygpIGNvbnN0CiAgICAgICAgIEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0ID0g
Kmk7CiAgICAgICAgIG1heENoYW5uZWxzID0gbWF4KG1heENoYW5uZWxzLCBvdXRwdXQtPmJ1cygp
LT5udW1iZXJPZkNoYW5uZWxzKCkpOwogICAgIH0KLSAgICAKLSAgICByZXR1cm4gbWF4Q2hhbm5l
bHM7Ci19CiAKLXVuc2lnbmVkIEF1ZGlvTm9kZUlucHV0OjpudW1iZXJPZlJlbmRlcmluZ0NoYW5u
ZWxzKCkKLXsKLSAgICBBU1NFUlQoY29udGV4dCgpLT5pc0F1ZGlvVGhyZWFkKCkpOworICAgIGlm
IChtb2RlID09IEF1ZGlvTm9kZTo6Q2xhbXBlZE1heCkKKyAgICAgICAgbWF4Q2hhbm5lbHMgPSBt
aW4obWF4Q2hhbm5lbHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlKCktPmNoYW5uZWxDb3Vu
dCgpKSk7CiAKLSAgICAvLyBGaW5kIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgb2YgdGhlIHJlbmRl
cmluZyBjb25uZWN0aW9uIHdpdGggdGhlIGxhcmdlc3QgbnVtYmVyIG9mIGNoYW5uZWxzLgotICAg
IHVuc2lnbmVkIG1heENoYW5uZWxzID0gMTsgLy8gb25lIGNoYW5uZWwgaXMgdGhlIG1pbmltdW0g
YWxsb3dlZAotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mUmVuZGVyaW5n
Q29ubmVjdGlvbnMoKTsgKytpKQotICAgICAgICBtYXhDaGFubmVscyA9IG1heChtYXhDaGFubmVs
cywgcmVuZGVyaW5nT3V0cHV0KGkpLT5idXMoKS0+bnVtYmVyT2ZDaGFubmVscygpKTsKLSAgICAK
ICAgICByZXR1cm4gbWF4Q2hhbm5lbHM7CiB9CiAKQEAgLTE3OCwxMCArMTcyLDEwIEBAIEF1ZGlv
QnVzKiBBdWRpb05vZGVJbnB1dDo6YnVzKCkKICAgICBBU1NFUlQoY29udGV4dCgpLT5pc0F1ZGlv
VGhyZWFkKCkpOwogCiAgICAgLy8gSGFuZGxlIHNpbmdsZSBjb25uZWN0aW9uIHNwZWNpYWxseSB0
byBhbGxvdyBmb3IgaW4tcGxhY2UgcHJvY2Vzc2luZy4KLSAgICBpZiAobnVtYmVyT2ZSZW5kZXJp
bmdDb25uZWN0aW9ucygpID09IDEpCisgICAgaWYgKG51bWJlck9mUmVuZGVyaW5nQ29ubmVjdGlv
bnMoKSA9PSAxICYmIG5vZGUoKS0+aW50ZXJuYWxDaGFubmVsQ291bnRNb2RlKCkgPT0gQXVkaW9O
b2RlOjpNYXgpCiAgICAgICAgIHJldHVybiByZW5kZXJpbmdPdXRwdXQoMCktPmJ1cygpOwogCi0g
ICAgLy8gTXVsdGlwbGUgY29ubmVjdGlvbnMgY2FzZSAob3Igbm8gY29ubmVjdGlvbnMpLgorICAg
IC8vIE11bHRpcGxlIGNvbm5lY3Rpb25zIGNhc2Ugb3IgY29tcGxleCBDaGFubmVsQ291bnRNb2Rl
IChvciBubyBjb25uZWN0aW9ucykuCiAgICAgcmV0dXJuIGludGVybmFsU3VtbWluZ0J1cygpOwog
fQogCkBAIC0xODksOCArMTgzLDYgQEAgQXVkaW9CdXMqIEF1ZGlvTm9kZUlucHV0OjppbnRlcm5h
bFN1bW1pbmdCdXMoKQogewogICAgIEFTU0VSVChjb250ZXh0KCktPmlzQXVkaW9UaHJlYWQoKSk7
CiAKLSAgICBBU1NFUlQobnVtYmVyT2ZSZW5kZXJpbmdDaGFubmVscygpID09IG1faW50ZXJuYWxT
dW1taW5nQnVzLT5udW1iZXJPZkNoYW5uZWxzKCkpOwotCiAgICAgcmV0dXJuIG1faW50ZXJuYWxT
dW1taW5nQnVzLmdldCgpOwogfQogCkBAIC0xOTksNyArMTkxLDcgQEAgdm9pZCBBdWRpb05vZGVJ
bnB1dDo6c3VtQWxsQ29ubmVjdGlvbnMoQXVkaW9CdXMqIHN1bW1pbmdCdXMsIHNpemVfdCBmcmFt
ZXNUb1Byb2MKICAgICBBU1NFUlQoY29udGV4dCgpLT5pc0F1ZGlvVGhyZWFkKCkpOwogCiAgICAg
Ly8gV2Ugc2hvdWxkbid0IGJlIGNhbGxpbmcgdGhpcyBtZXRob2QgaWYgdGhlcmUncyBvbmx5IG9u
ZSBjb25uZWN0aW9uLCBzaW5jZSBpdCdzIGxlc3MgZWZmaWNpZW50LgotICAgIEFTU0VSVChudW1i
ZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCkgPiAxKTsKKyAgICBBU1NFUlQobnVtYmVyT2ZSZW5k
ZXJpbmdDb25uZWN0aW9ucygpID4gMSB8fCBub2RlKCktPmludGVybmFsQ2hhbm5lbENvdW50TW9k
ZSgpICE9IEF1ZGlvTm9kZTo6TWF4KTsKIAogICAgIEFTU0VSVChzdW1taW5nQnVzKTsKICAgICBp
ZiAoIXN1bW1pbmdCdXMpCkBAIC0yMDcsNiArMTk5LDggQEAgdm9pZCBBdWRpb05vZGVJbnB1dDo6
c3VtQWxsQ29ubmVjdGlvbnMoQXVkaW9CdXMqIHN1bW1pbmdCdXMsIHNpemVfdCBmcmFtZXNUb1By
b2MKICAgICAgICAgCiAgICAgc3VtbWluZ0J1cy0+emVybygpOwogCisgICAgQXVkaW9CdXM6OkNo
YW5uZWxJbnRlcnByZXRhdGlvbiBpbnRlcnByZXRhdGlvbiA9IG5vZGUoKS0+aW50ZXJuYWxDaGFu
bmVsSW50ZXJwcmV0YXRpb24oKTsKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1i
ZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCk7ICsraSkgewogICAgICAgICBBdWRpb05vZGVPdXRw
dXQqIG91dHB1dCA9IHJlbmRlcmluZ091dHB1dChpKTsKICAgICAgICAgQVNTRVJUKG91dHB1dCk7
CkBAIC0yMTUsNyArMjA5LDcgQEAgdm9pZCBBdWRpb05vZGVJbnB1dDo6c3VtQWxsQ29ubmVjdGlv
bnMoQXVkaW9CdXMqIHN1bW1pbmdCdXMsIHNpemVfdCBmcmFtZXNUb1Byb2MKICAgICAgICAgQXVk
aW9CdXMqIGNvbm5lY3Rpb25CdXMgPSBvdXRwdXQtPnB1bGwoMCwgZnJhbWVzVG9Qcm9jZXNzKTsK
IAogICAgICAgICAvLyBTdW0sIHdpdGggdW5pdHktZ2Fpbi4KLSAgICAgICAgc3VtbWluZ0J1cy0+
c3VtRnJvbSgqY29ubmVjdGlvbkJ1cyk7CisgICAgICAgIHN1bW1pbmdCdXMtPnN1bUZyb20oKmNv
bm5lY3Rpb25CdXMsIGludGVycHJldGF0aW9uKTsKICAgICB9CiB9CiAKQEAgLTIyNCw3ICsyMTgs
NyBAQCBBdWRpb0J1cyogQXVkaW9Ob2RlSW5wdXQ6OnB1bGwoQXVkaW9CdXMqIGluUGxhY2VCdXMs
IHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgQVNTRVJUKGNvbnRleHQoKS0+aXNBdWRpb1Ro
cmVhZCgpKTsKIAogICAgIC8vIEhhbmRsZSBzaW5nbGUgY29ubmVjdGlvbiBjYXNlLgotICAgIGlm
IChudW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCkgPT0gMSkgeworICAgIGlmIChudW1iZXJP
ZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCkgPT0gMSAmJiBub2RlKCktPmludGVybmFsQ2hhbm5lbENv
dW50TW9kZSgpID09IEF1ZGlvTm9kZTo6TWF4KSB7CiAgICAgICAgIC8vIFRoZSBvdXRwdXQgd2ls
bCBvcHRpbWl6ZSBwcm9jZXNzaW5nIHVzaW5nIGluUGxhY2VCdXMgaWYgaXQncyBhYmxlLgogICAg
ICAgICBBdWRpb05vZGVPdXRwdXQqIG91dHB1dCA9IHRoaXMtPnJlbmRlcmluZ091dHB1dCgwKTsK
ICAgICAgICAgcmV0dXJuIG91dHB1dC0+cHVsbChpblBsYWNlQnVzLCBmcmFtZXNUb1Byb2Nlc3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJ
bnB1dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5o
CmluZGV4IGViZTQ1MDRjZjg0Njk4ZTY1MDkxMTg1OTU2MGYxZTFjNTcxYjk1OWYuLjg1YmQ0NDBi
MTkwZmFjOWE3MGRlYTM3ZjQ0ODUwMzE0MDUzYzQ4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmgKQEAgLTgyLDkgKzgyLDYgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBBdWRpb05vZGUqIG1fbm9kZTsKIAotICAgIC8vIFRoZSBudW1i
ZXIgb2YgY2hhbm5lbHMgb2YgdGhlIHJlbmRlcmluZyBjb25uZWN0aW9uIHdpdGggdGhlIGxhcmdl
c3QgbnVtYmVyIG9mIGNoYW5uZWxzLgotICAgIHVuc2lnbmVkIG51bWJlck9mUmVuZGVyaW5nQ2hh
bm5lbHMoKTsKLQogICAgIC8vIG1fZGlzYWJsZWRPdXRwdXRzIGNvbnRhaW5zIHRoZSBBdWRpb05v
ZGVPdXRwdXRzIHdoaWNoIGFyZSBkaXNhYmxlZCAod2lsbCBub3QgYmUgcHJvY2Vzc2VkKSBieSB0
aGUgYXVkaW8gZ3JhcGggcmVuZGVyaW5nLgogICAgIC8vIEJ1dCwgZnJvbSBKYXZhU2NyaXB0J3Mg
cGVyc3BlY3RpdmUsIHRoZXNlIG91dHB1dHMgYXJlIHN0aWxsIGNvbm5lY3RlZCB0byB1cy4KICAg
ICAvLyBHZW5lcmFsbHksIHRoZXNlIHJlcHJlc2VudCBkaXNhYmxlZCBjb25uZWN0aW9ucyBmcm9t
ICJub3RlcyIgd2hpY2ggaGF2ZSBmaW5pc2hlZCBwbGF5aW5nIGJ1dCBhcmUgbm90IHlldCBnYXJi
YWdlIGNvbGxlY3RlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ29udm9sdmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Nv
bnZvbHZlck5vZGUuY3BwCmluZGV4IGM4MDEwZDAzMDI1MmM5Y2VmODJlMzRhYzJkNjNhMTE4YTk1
ZGY5MDQuLjUzNzU0YWQzZGE4YjdjYjE0MGVlNzI0ZmE0MDkwNzY3MGU3MzEyYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcApAQCAt
NTEsNyArNTEsMTIgQEAgQ29udm9sdmVyTm9kZTo6Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQq
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3
IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CiAgICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRp
b05vZGVPdXRwdXQodGhpcywgMikpKTsKLSAgICAKKworICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVm
YXVsdCBtaXhpbmcgcnVsZXMuCisgICAgbV9jaGFubmVsQ291bnQgPSAyOworICAgIG1fY2hhbm5l
bENvdW50TW9kZSA9IENsYW1wZWRNYXg7CisgICAgbV9jaGFubmVsSW50ZXJwcmV0YXRpb24gPSBB
dWRpb0J1czo6U3BlYWtlcnM7CisKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUNvbnZvbHZlcik7
CiAgICAgCiAgICAgaW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmlu
ZGV4IDAzODA4ZjFkYmVhMTFiOGQ5NTE2ODc2ODFiZTFlNTdlNjMzMjlmYTUuLmE3Y2E4NTMxMTlk
MDA5YjlkNDViYTc3NDc5ODgwZjkzMTQ4M2JlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAKQEAgLTM5LDYgKzM5LDEwIEBAIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCkKICAgICA6IEF1
ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2Ft
cGxlUmF0ZSgpKQogICAgICwgbV9udW1iZXJPZklucHV0Q2hhbm5lbHMoMCkKIHsKKyAgICAvLyBO
b2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5nIHJ1bGVzLgorICAgIG1fY2hhbm5lbENvdW50ID0g
MjsKKyAgICBtX2NoYW5uZWxDb3VudE1vZGUgPSBFeHBsaWNpdDsKKyAgICBtX2NoYW5uZWxJbnRl
cnByZXRhdGlvbiA9IEF1ZGlvQnVzOjpTcGVha2VyczsKIH0KIAogRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjp+RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCmluZGV4IGI1NzdjNGExYTUyOWVk
OTE3MzAxYjFlMTRlYzdkNDMxYmJkMmIzYTEuLjVmNTQ1NDQ5NTYyOWI4ZjVlYWYyYTFiZGI2YTdl
OTc1ZmFmODY4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5u
ZXJOb2RlLmNwcApAQCAtNTYsNyArNTYsMTIgQEAgUGFubmVyTm9kZTo6UGFubmVyTm9kZShBdWRp
b0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgYWRkSW5wdXQoYWRv
cHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CiAgICAgYWRkT3V0cHV0KGFkb3B0UHRy
KG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywgMikpKTsKLSAgICAKKworICAgIC8vIE5vZGUtc3Bl
Y2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCisgICAgbV9jaGFubmVsQ291bnQgPSAyOworICAg
IG1fY2hhbm5lbENvdW50TW9kZSA9IENsYW1wZWRNYXg7CisgICAgbV9jaGFubmVsSW50ZXJwcmV0
YXRpb24gPSBBdWRpb0J1czo6U3BlYWtlcnM7CisKICAgICBtX2Rpc3RhbmNlR2FpbiA9IEF1ZGlv
R2Fpbjo6Y3JlYXRlKGNvbnRleHQsICJkaXN0YW5jZUdhaW4iLCAxLjAsIDAuMCwgMS4wKTsKICAg
ICBtX2NvbmVHYWluID0gQXVkaW9HYWluOjpjcmVhdGUoY29udGV4dCwgImNvbmVHYWluIiwgMS4w
LCAwLjAsIDEuMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvQnVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNw
cAppbmRleCA0M2FjNDcwYzY2ZDc0YzlmMTk0M2Q5YTcyZDViY2ExMjJlYTI0ZjUwLi5lNWI0Mzlk
OThjNGZhNmIwODA2NThhYjZhYjI2Njk5ZmI3MDEyYjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCkBAIC0yOTQsOSArMjk0LDMzIEBAIHZvaWQgQXVkaW9C
dXM6OnNwZWFrZXJzQ29weUZyb20oY29uc3QgQXVkaW9CdXMmIHNvdXJjZUJ1cykKICAgICAgICAg
Y2hhbm5lbCg0KS0+emVybygpOwogICAgICAgICBjaGFubmVsKDUpLT56ZXJvKCk7CiAgICAgfSBl
bHNlIGlmIChudW1iZXJPZkRlc3RpbmF0aW9uQ2hhbm5lbHMgPT0gMSAmJiBudW1iZXJPZlNvdXJj
ZUNoYW5uZWxzID09IDYpIHsKLSAgICAgICAgLy8gSGFuZGxlIDUuMSAtPiBtb25vIGNhc2UsIGNv
cHkgY2VudGVyIGNoYW5uZWwgaW50byBtb25vLgotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGhhdmUgYSBiZXR0ZXIgYWxnb3JpdGhtIGZvciB0aGlzIGRvd24gbWl4aW5nLgotICAgICAgICBj
aGFubmVsKDApLT5jb3B5RnJvbShzb3VyY2VCdXMuY2hhbm5lbCgyKSk7CisgICAgICAgIC8vIEhh
bmRsZSA1LjEgLT4gbW9ubyBjYXNlLgorICAgICAgICBBdWRpb0J1cyYgc291cmNlQnVzU2FmZSA9
IGNvbnN0X2Nhc3Q8QXVkaW9CdXMmPihzb3VyY2VCdXMpOworCisgICAgICAgIGNvbnN0IGZsb2F0
KiBzb3VyY2VMID0gc291cmNlQnVzU2FmZS5jaGFubmVsQnlUeXBlKENoYW5uZWxMZWZ0KS0+ZGF0
YSgpOworICAgICAgICBjb25zdCBmbG9hdCogc291cmNlUiA9IHNvdXJjZUJ1c1NhZmUuY2hhbm5l
bEJ5VHlwZShDaGFubmVsUmlnaHQpLT5kYXRhKCk7CisgICAgICAgIGNvbnN0IGZsb2F0KiBzb3Vy
Y2VDID0gc291cmNlQnVzU2FmZS5jaGFubmVsQnlUeXBlKENoYW5uZWxDZW50ZXIpLT5kYXRhKCk7
CisgICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VTTCA9IHNvdXJjZUJ1c1NhZmUuY2hhbm5lbEJ5
VHlwZShDaGFubmVsU3Vycm91bmRMZWZ0KS0+ZGF0YSgpOworICAgICAgICBjb25zdCBmbG9hdCog
c291cmNlU1IgPSBzb3VyY2VCdXNTYWZlLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbFN1cnJvdW5kUmln
aHQpLT5kYXRhKCk7CisKKyAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gY2hhbm5lbEJ5VHlw
ZShDaGFubmVsTGVmdCktPm11dGFibGVEYXRhKCk7CisKKyAgICAgICAgQXVkaW9GbG9hdEFycmF5
IHRlbXAobGVuZ3RoKCkpOworICAgICAgICBmbG9hdCogdGVtcERhdGEgPSB0ZW1wLmRhdGEoKTsK
KworICAgICAgICAvLyBTdW0gaW4gTCBhbmQgUi4KKyAgICAgICAgdmFkZChzb3VyY2VMLCAxLCBz
b3VyY2VSLCAxLCBkZXN0aW5hdGlvbiwgMSwgbGVuZ3RoKCkpOworICAgICAgICBmbG9hdCBzY2Fs
ZSA9IDAuNzA3MTsKKyAgICAgICAgdnNtdWwoZGVzdGluYXRpb24sIDEsICZzY2FsZSwgZGVzdGlu
YXRpb24sIDEsIGxlbmd0aCgpKTsKKworICAgICAgICAvLyBTdW0gaW4gU0wgYW5kIFNSLgorICAg
ICAgICB2YWRkKHNvdXJjZVNMLCAxLCBzb3VyY2VTUiwgMSwgdGVtcERhdGEsIDEsIGxlbmd0aCgp
KTsKKyAgICAgICAgc2NhbGUgPSAwLjU7CisgICAgICAgIHZzbXVsKHRlbXBEYXRhLCAxLCAmc2Nh
bGUsIHRlbXBEYXRhLCAxLCBsZW5ndGgoKSk7CisgICAgICAgIHZhZGQodGVtcERhdGEsIDEsIGRl
c3RpbmF0aW9uLCAxLCBkZXN0aW5hdGlvbiwgMSwgbGVuZ3RoKCkpOworCisgICAgICAgIC8vIFN1
bSBpbiBjZW50ZXIuCisgICAgICAgIHZhZGQoc291cmNlQywgMSwgZGVzdGluYXRpb24sIDEsIGRl
c3RpbmF0aW9uLCAxLCBsZW5ndGgoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRmFsbGJh
Y2sgZm9yIHVua25vd24gY29tYmluYXRpb25zLgogICAgICAgICBkaXNjcmV0ZUNvcHlGcm9tKHNv
dXJjZUJ1cyk7CkBAIC0zMzEsOSArMzU1LDM0IEBAIHZvaWQgQXVkaW9CdXM6OnNwZWFrZXJzU3Vt
RnJvbShjb25zdCBBdWRpb0J1cyYgc291cmNlQnVzKQogICAgICAgICAvLyBIYW5kbGUgbW9ubyAt
PiA1LjEgY2FzZSwgc3VtIG1vbm8gY2hhbm5lbCBpbnRvIGNlbnRlci4KICAgICAgICAgY2hhbm5l
bCgyKS0+c3VtRnJvbShzb3VyY2VCdXMuY2hhbm5lbCgwKSk7CiAgICAgfSBlbHNlIGlmIChudW1i
ZXJPZkRlc3RpbmF0aW9uQ2hhbm5lbHMgPT0gMSAmJiBudW1iZXJPZlNvdXJjZUNoYW5uZWxzID09
IDYpIHsKLSAgICAgICAgLy8gSGFuZGxlIDUuMSAtPiBtb25vIGNhc2UsIHN1bSBjZW50ZXIgY2hh
bm5lbCBpbnRvIG1vbm8uCi0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIGJldHRl
ciBhbGdvcml0aG0gZm9yIHRoaXMgZG93biBtaXhpbmcuCi0gICAgICAgIGNoYW5uZWwoMCktPnN1
bUZyb20oc291cmNlQnVzLmNoYW5uZWwoMikpOworICAgICAgICAvLyBIYW5kbGUgNS4xIC0+IG1v
bm8gY2FzZS4KKyAgICAgICAgQXVkaW9CdXMmIHNvdXJjZUJ1c1NhZmUgPSBjb25zdF9jYXN0PEF1
ZGlvQnVzJj4oc291cmNlQnVzKTsKKworICAgICAgICBjb25zdCBmbG9hdCogc291cmNlTCA9IHNv
dXJjZUJ1c1NhZmUuY2hhbm5lbEJ5VHlwZShDaGFubmVsTGVmdCktPmRhdGEoKTsKKyAgICAgICAg
Y29uc3QgZmxvYXQqIHNvdXJjZVIgPSBzb3VyY2VCdXNTYWZlLmNoYW5uZWxCeVR5cGUoQ2hhbm5l
bFJpZ2h0KS0+ZGF0YSgpOworICAgICAgICBjb25zdCBmbG9hdCogc291cmNlQyA9IHNvdXJjZUJ1
c1NhZmUuY2hhbm5lbEJ5VHlwZShDaGFubmVsQ2VudGVyKS0+ZGF0YSgpOworICAgICAgICBjb25z
dCBmbG9hdCogc291cmNlU0wgPSBzb3VyY2VCdXNTYWZlLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbFN1
cnJvdW5kTGVmdCktPmRhdGEoKTsKKyAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZVNSID0gc291
cmNlQnVzU2FmZS5jaGFubmVsQnlUeXBlKENoYW5uZWxTdXJyb3VuZFJpZ2h0KS0+ZGF0YSgpOwor
CisgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGNoYW5uZWxCeVR5cGUoQ2hhbm5lbExlZnQp
LT5tdXRhYmxlRGF0YSgpOworCisgICAgICAgIEF1ZGlvRmxvYXRBcnJheSB0ZW1wKGxlbmd0aCgp
KTsKKyAgICAgICAgZmxvYXQqIHRlbXBEYXRhID0gdGVtcC5kYXRhKCk7CisKKyAgICAgICAgLy8g
U3VtIGluIEwgYW5kIFIuCisgICAgICAgIHZhZGQoc291cmNlTCwgMSwgc291cmNlUiwgMSwgdGVt
cERhdGEsIDEsIGxlbmd0aCgpKTsKKyAgICAgICAgZmxvYXQgc2NhbGUgPSAwLjcwNzE7CisgICAg
ICAgIHZzbXVsKHRlbXBEYXRhLCAxLCAmc2NhbGUsIHRlbXBEYXRhLCAxLCBsZW5ndGgoKSk7Cisg
ICAgICAgIHZhZGQodGVtcERhdGEsIDEsIGRlc3RpbmF0aW9uLCAxLCBkZXN0aW5hdGlvbiwgMSwg
bGVuZ3RoKCkpOworCisgICAgICAgIC8vIFN1bSBpbiBTTCBhbmQgU1IuCisgICAgICAgIHZhZGQo
c291cmNlU0wsIDEsIHNvdXJjZVNSLCAxLCB0ZW1wRGF0YSwgMSwgbGVuZ3RoKCkpOworICAgICAg
ICBzY2FsZSA9IDAuNTsKKyAgICAgICAgdnNtdWwodGVtcERhdGEsIDEsICZzY2FsZSwgdGVtcERh
dGEsIDEsIGxlbmd0aCgpKTsKKyAgICAgICAgdmFkZCh0ZW1wRGF0YSwgMSwgZGVzdGluYXRpb24s
IDEsIGRlc3RpbmF0aW9uLCAxLCBsZW5ndGgoKSk7CisKKyAgICAgICAgLy8gU3VtIGluIGNlbnRl
ci4KKyAgICAgICAgdmFkZChzb3VyY2VDLCAxLCBkZXN0aW5hdGlvbiwgMSwgZGVzdGluYXRpb24s
IDEsIGxlbmd0aCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBGYWxsYmFjayBmb3IgdW5r
bm93biBjb21iaW5hdGlvbnMuCiAgICAgICAgIGRpc2NyZXRlU3VtRnJvbShzb3VyY2VCdXMpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDY0ODY3NGEwYTRhYTFkMGE1NzJlNjZjNDVlNGE0ZTBmOTlhNDNkYTAuLjYzODE1NDZl
YmE2NDg1NjMwZTk4Y2M2M2UzZjE0MTJjOWQ4MTVkZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxMy0wMi0yNSAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBjaGFubmVsIHVwLW1peGluZyBhbmQgZG93bi1taXhpbmcgcnVsZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDgxMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViYXVkaW8vYXVk
aW9ub2RlLWNoYW5uZWwtcnVsZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJh
dWRpby9hdWRpb25vZGUtY2hhbm5lbC1ydWxlcy5odG1sOiBBZGRlZC4KKwogMjAxMy0wMi0yNSAg
QWxleGlzIE1lbmFyZCAgPGFsZXhpc0B3ZWJraXQub3JnPgogCiAgICAgICAgIHRyYW5zaXRpb24t
cHJvcGVydHkgcHJvcGVydHkgZG9lc24ndCBhY2NlcHQgImFsbCwgPElERU5UPiIuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb25vZGUtY2hhbm5lbC1ydWxlcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb25vZGUtY2hhbm5lbC1ydWxlcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYxNGM1ZDhhZjg2YmI3NDI3NjJhMjQxYTMxYzBiNmVkZWM2
M2U4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvbm9kZS1j
aGFubmVsLXJ1bGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3OCBAQAorQ2hhbm5lbCBtaXhp
bmcgcnVsZXMgZm9yIEF1ZGlvTm9kZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
UEFTUyBjb25uZWN0aW9uczogMSwgbWF4LCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMiwg
bWF4LCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMywgbWF4LCBzcGVha2VycworUEFTUyBj
b25uZWN0aW9uczogNCwgbWF4LCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogNSwgbWF4LCBz
cGVha2VycworUEFTUyBjb25uZWN0aW9uczogNiwgbWF4LCBzcGVha2VycworUEFTUyBjb25uZWN0
aW9uczogNywgbWF4LCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogOCwgbWF4LCBzcGVha2Vy
cworUEFTUyBjb25uZWN0aW9uczogMTEsIG1heCwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6
IDEyLCBtYXgsIHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25zOiAxNCwgbWF4LCBzcGVha2Vycwor
UEFTUyBjb25uZWN0aW9uczogMTgsIG1heCwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDEx
MSwgbWF4LCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTIyLCBtYXgsIHNwZWFrZXJzCitQ
QVNTIGNvbm5lY3Rpb25zOiAxMjMsIG1heCwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDEy
NCwgbWF4LCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTI4LCBtYXgsIHNwZWFrZXJzCitQ
QVNTIGNvbm5lY3Rpb25zOiAxLCBjbGFtcGVkLW1heCg0KSwgc3BlYWtlcnMKK1BBU1MgY29ubmVj
dGlvbnM6IDIsIGNsYW1wZWQtbWF4KDQpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMywg
Y2xhbXBlZC1tYXgoNCksIHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25zOiA0LCBjbGFtcGVkLW1h
eCg0KSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDUsIGNsYW1wZWQtbWF4KDQpLCBzcGVh
a2VycworUEFTUyBjb25uZWN0aW9uczogNiwgY2xhbXBlZC1tYXgoNCksIHNwZWFrZXJzCitQQVNT
IGNvbm5lY3Rpb25zOiA3LCBjbGFtcGVkLW1heCg0KSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlv
bnM6IDgsIGNsYW1wZWQtbWF4KDQpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTEsIGNs
YW1wZWQtbWF4KDQpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTIsIGNsYW1wZWQtbWF4
KDQpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTQsIGNsYW1wZWQtbWF4KDQpLCBzcGVh
a2VycworUEFTUyBjb25uZWN0aW9uczogMTgsIGNsYW1wZWQtbWF4KDQpLCBzcGVha2VycworUEFT
UyBjb25uZWN0aW9uczogMTExLCBjbGFtcGVkLW1heCg0KSwgc3BlYWtlcnMKK1BBU1MgY29ubmVj
dGlvbnM6IDEyMiwgY2xhbXBlZC1tYXgoNCksIHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25zOiAx
MjMsIGNsYW1wZWQtbWF4KDQpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTI0LCBjbGFt
cGVkLW1heCg0KSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDEyOCwgY2xhbXBlZC1tYXgo
NCksIHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25zOiAxLCBleHBsaWNpdCgxKSwgc3BlYWtlcnMK
K1BBU1MgY29ubmVjdGlvbnM6IDIsIGV4cGxpY2l0KDEpLCBzcGVha2VycworUEFTUyBjb25uZWN0
aW9uczogMywgZXhwbGljaXQoMSksIHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25zOiA0LCBleHBs
aWNpdCgxKSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDUsIGV4cGxpY2l0KDEpLCBzcGVh
a2VycworUEFTUyBjb25uZWN0aW9uczogNiwgZXhwbGljaXQoMSksIHNwZWFrZXJzCitQQVNTIGNv
bm5lY3Rpb25zOiA3LCBleHBsaWNpdCgxKSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDgs
IGV4cGxpY2l0KDEpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTEsIGV4cGxpY2l0KDEp
LCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTIsIGV4cGxpY2l0KDEpLCBzcGVha2Vycwor
UEFTUyBjb25uZWN0aW9uczogMTQsIGV4cGxpY2l0KDEpLCBzcGVha2VycworUEFTUyBjb25uZWN0
aW9uczogMTgsIGV4cGxpY2l0KDEpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTExLCBl
eHBsaWNpdCgxKSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDEyMiwgZXhwbGljaXQoMSks
IHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25zOiAxMjMsIGV4cGxpY2l0KDEpLCBzcGVha2Vycwor
UEFTUyBjb25uZWN0aW9uczogMTI0LCBleHBsaWNpdCgxKSwgc3BlYWtlcnMKK1BBU1MgY29ubmVj
dGlvbnM6IDEyOCwgZXhwbGljaXQoMSksIHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25zOiAxLCBl
eHBsaWNpdCgyKSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDIsIGV4cGxpY2l0KDIpLCBz
cGVha2VycworUEFTUyBjb25uZWN0aW9uczogMywgZXhwbGljaXQoMiksIHNwZWFrZXJzCitQQVNT
IGNvbm5lY3Rpb25zOiA0LCBleHBsaWNpdCgyKSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6
IDUsIGV4cGxpY2l0KDIpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogNiwgZXhwbGljaXQo
MiksIHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25zOiA3LCBleHBsaWNpdCgyKSwgc3BlYWtlcnMK
K1BBU1MgY29ubmVjdGlvbnM6IDgsIGV4cGxpY2l0KDIpLCBzcGVha2VycworUEFTUyBjb25uZWN0
aW9uczogMTEsIGV4cGxpY2l0KDIpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTIsIGV4
cGxpY2l0KDIpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTQsIGV4cGxpY2l0KDIpLCBz
cGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTgsIGV4cGxpY2l0KDIpLCBzcGVha2VycworUEFT
UyBjb25uZWN0aW9uczogMTExLCBleHBsaWNpdCgyKSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlv
bnM6IDEyMiwgZXhwbGljaXQoMiksIHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25zOiAxMjMsIGV4
cGxpY2l0KDIpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTI0LCBleHBsaWNpdCgyKSwg
c3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDEyOCwgZXhwbGljaXQoMiksIHNwZWFrZXJzCitQ
QVNTIGNvbm5lY3Rpb25zOiAxLCBleHBsaWNpdCg0KSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlv
bnM6IDIsIGV4cGxpY2l0KDQpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMywgZXhwbGlj
aXQoNCksIHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25zOiA0LCBleHBsaWNpdCg0KSwgc3BlYWtl
cnMKK1BBU1MgY29ubmVjdGlvbnM6IDUsIGV4cGxpY2l0KDQpLCBzcGVha2VycworUEFTUyBjb25u
ZWN0aW9uczogNiwgZXhwbGljaXQoNCksIHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25zOiA3LCBl
eHBsaWNpdCg0KSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDgsIGV4cGxpY2l0KDQpLCBz
cGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTEsIGV4cGxpY2l0KDQpLCBzcGVha2VycworUEFT
UyBjb25uZWN0aW9uczogMTIsIGV4cGxpY2l0KDQpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9u
czogMTQsIGV4cGxpY2l0KDQpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTgsIGV4cGxp
Y2l0KDQpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTExLCBleHBsaWNpdCg0KSwgc3Bl
YWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDEyMiwgZXhwbGljaXQoNCksIHNwZWFrZXJzCitQQVNT
IGNvbm5lY3Rpb25zOiAxMjMsIGV4cGxpY2l0KDQpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9u
czogMTI0LCBleHBsaWNpdCg0KSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDEyOCwgZXhw
bGljaXQoNCksIHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25zOiAxLCBleHBsaWNpdCg2KSwgc3Bl
YWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDIsIGV4cGxpY2l0KDYpLCBzcGVha2VycworUEFTUyBj
b25uZWN0aW9uczogMywgZXhwbGljaXQoNiksIHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25zOiA0
LCBleHBsaWNpdCg2KSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDUsIGV4cGxpY2l0KDYp
LCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogNiwgZXhwbGljaXQoNiksIHNwZWFrZXJzCitQ
QVNTIGNvbm5lY3Rpb25zOiA3LCBleHBsaWNpdCg2KSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlv
bnM6IDgsIGV4cGxpY2l0KDYpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTEsIGV4cGxp
Y2l0KDYpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczogMTIsIGV4cGxpY2l0KDYpLCBzcGVh
a2VycworUEFTUyBjb25uZWN0aW9uczogMTQsIGV4cGxpY2l0KDYpLCBzcGVha2VycworUEFTUyBj
b25uZWN0aW9uczogMTgsIGV4cGxpY2l0KDYpLCBzcGVha2VycworUEFTUyBjb25uZWN0aW9uczog
MTExLCBleHBsaWNpdCg2KSwgc3BlYWtlcnMKK1BBU1MgY29ubmVjdGlvbnM6IDEyMiwgZXhwbGlj
aXQoNiksIHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25zOiAxMjMsIGV4cGxpY2l0KDYpLCBzcGVh
a2VycworUEFTUyBjb25uZWN0aW9uczogMTI0LCBleHBsaWNpdCg2KSwgc3BlYWtlcnMKK1BBU1Mg
Y29ubmVjdGlvbnM6IDEyOCwgZXhwbGljaXQoNiksIHNwZWFrZXJzCitQQVNTIGNvbm5lY3Rpb25z
OiAxLCBtYXgsIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAyLCBtYXgsIGRpc2NyZXRlCitQ
QVNTIGNvbm5lY3Rpb25zOiAzLCBtYXgsIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiA0LCBt
YXgsIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiA1LCBtYXgsIGRpc2NyZXRlCitQQVNTIGNv
bm5lY3Rpb25zOiA2LCBtYXgsIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiA3LCBtYXgsIGRp
c2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiA4LCBtYXgsIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rp
b25zOiAxMSwgbWF4LCBkaXNjcmV0ZQorUEFTUyBjb25uZWN0aW9uczogMTIsIG1heCwgZGlzY3Jl
dGUKK1BBU1MgY29ubmVjdGlvbnM6IDE0LCBtYXgsIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25z
OiAxOCwgbWF4LCBkaXNjcmV0ZQorUEFTUyBjb25uZWN0aW9uczogMTExLCBtYXgsIGRpc2NyZXRl
CitQQVNTIGNvbm5lY3Rpb25zOiAxMjIsIG1heCwgZGlzY3JldGUKK1BBU1MgY29ubmVjdGlvbnM6
IDEyMywgbWF4LCBkaXNjcmV0ZQorUEFTUyBjb25uZWN0aW9uczogMTI0LCBtYXgsIGRpc2NyZXRl
CitQQVNTIGNvbm5lY3Rpb25zOiAxMjgsIG1heCwgZGlzY3JldGUKK1BBU1MgY29ubmVjdGlvbnM6
IDEsIGNsYW1wZWQtbWF4KDQpLCBkaXNjcmV0ZQorUEFTUyBjb25uZWN0aW9uczogMiwgY2xhbXBl
ZC1tYXgoNCksIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAzLCBjbGFtcGVkLW1heCg0KSwg
ZGlzY3JldGUKK1BBU1MgY29ubmVjdGlvbnM6IDQsIGNsYW1wZWQtbWF4KDQpLCBkaXNjcmV0ZQor
UEFTUyBjb25uZWN0aW9uczogNSwgY2xhbXBlZC1tYXgoNCksIGRpc2NyZXRlCitQQVNTIGNvbm5l
Y3Rpb25zOiA2LCBjbGFtcGVkLW1heCg0KSwgZGlzY3JldGUKK1BBU1MgY29ubmVjdGlvbnM6IDcs
IGNsYW1wZWQtbWF4KDQpLCBkaXNjcmV0ZQorUEFTUyBjb25uZWN0aW9uczogOCwgY2xhbXBlZC1t
YXgoNCksIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAxMSwgY2xhbXBlZC1tYXgoNCksIGRp
c2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAxMiwgY2xhbXBlZC1tYXgoNCksIGRpc2NyZXRlCitQ
QVNTIGNvbm5lY3Rpb25zOiAxNCwgY2xhbXBlZC1tYXgoNCksIGRpc2NyZXRlCitQQVNTIGNvbm5l
Y3Rpb25zOiAxOCwgY2xhbXBlZC1tYXgoNCksIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAx
MTEsIGNsYW1wZWQtbWF4KDQpLCBkaXNjcmV0ZQorUEFTUyBjb25uZWN0aW9uczogMTIyLCBjbGFt
cGVkLW1heCg0KSwgZGlzY3JldGUKK1BBU1MgY29ubmVjdGlvbnM6IDEyMywgY2xhbXBlZC1tYXgo
NCksIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAxMjQsIGNsYW1wZWQtbWF4KDQpLCBkaXNj
cmV0ZQorUEFTUyBjb25uZWN0aW9uczogMTI4LCBjbGFtcGVkLW1heCg0KSwgZGlzY3JldGUKK1BB
U1MgY29ubmVjdGlvbnM6IDEsIGV4cGxpY2l0KDQpLCBkaXNjcmV0ZQorUEFTUyBjb25uZWN0aW9u
czogMiwgZXhwbGljaXQoNCksIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAzLCBleHBsaWNp
dCg0KSwgZGlzY3JldGUKK1BBU1MgY29ubmVjdGlvbnM6IDQsIGV4cGxpY2l0KDQpLCBkaXNjcmV0
ZQorUEFTUyBjb25uZWN0aW9uczogNSwgZXhwbGljaXQoNCksIGRpc2NyZXRlCitQQVNTIGNvbm5l
Y3Rpb25zOiA2LCBleHBsaWNpdCg0KSwgZGlzY3JldGUKK1BBU1MgY29ubmVjdGlvbnM6IDcsIGV4
cGxpY2l0KDQpLCBkaXNjcmV0ZQorUEFTUyBjb25uZWN0aW9uczogOCwgZXhwbGljaXQoNCksIGRp
c2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAxMSwgZXhwbGljaXQoNCksIGRpc2NyZXRlCitQQVNT
IGNvbm5lY3Rpb25zOiAxMiwgZXhwbGljaXQoNCksIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25z
OiAxNCwgZXhwbGljaXQoNCksIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAxOCwgZXhwbGlj
aXQoNCksIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAxMTEsIGV4cGxpY2l0KDQpLCBkaXNj
cmV0ZQorUEFTUyBjb25uZWN0aW9uczogMTIyLCBleHBsaWNpdCg0KSwgZGlzY3JldGUKK1BBU1Mg
Y29ubmVjdGlvbnM6IDEyMywgZXhwbGljaXQoNCksIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25z
OiAxMjQsIGV4cGxpY2l0KDQpLCBkaXNjcmV0ZQorUEFTUyBjb25uZWN0aW9uczogMTI4LCBleHBs
aWNpdCg0KSwgZGlzY3JldGUKK1BBU1MgY29ubmVjdGlvbnM6IDEsIGV4cGxpY2l0KDgpLCBkaXNj
cmV0ZQorUEFTUyBjb25uZWN0aW9uczogMiwgZXhwbGljaXQoOCksIGRpc2NyZXRlCitQQVNTIGNv
bm5lY3Rpb25zOiAzLCBleHBsaWNpdCg4KSwgZGlzY3JldGUKK1BBU1MgY29ubmVjdGlvbnM6IDQs
IGV4cGxpY2l0KDgpLCBkaXNjcmV0ZQorUEFTUyBjb25uZWN0aW9uczogNSwgZXhwbGljaXQoOCks
IGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiA2LCBleHBsaWNpdCg4KSwgZGlzY3JldGUKK1BB
U1MgY29ubmVjdGlvbnM6IDcsIGV4cGxpY2l0KDgpLCBkaXNjcmV0ZQorUEFTUyBjb25uZWN0aW9u
czogOCwgZXhwbGljaXQoOCksIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAxMSwgZXhwbGlj
aXQoOCksIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAxMiwgZXhwbGljaXQoOCksIGRpc2Ny
ZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAxNCwgZXhwbGljaXQoOCksIGRpc2NyZXRlCitQQVNTIGNv
bm5lY3Rpb25zOiAxOCwgZXhwbGljaXQoOCksIGRpc2NyZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAx
MTEsIGV4cGxpY2l0KDgpLCBkaXNjcmV0ZQorUEFTUyBjb25uZWN0aW9uczogMTIyLCBleHBsaWNp
dCg4KSwgZGlzY3JldGUKK1BBU1MgY29ubmVjdGlvbnM6IDEyMywgZXhwbGljaXQoOCksIGRpc2Ny
ZXRlCitQQVNTIGNvbm5lY3Rpb25zOiAxMjQsIGV4cGxpY2l0KDgpLCBkaXNjcmV0ZQorUEFTUyBj
b25uZWN0aW9uczogMTI4LCBleHBsaWNpdCg4KSwgZGlzY3JldGUKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJhdWRpby9hdWRpb25vZGUtY2hhbm5lbC1ydWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vYXVkaW9ub2RlLWNoYW5uZWwtcnVsZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNWRjN2FhZWJh
NTBlNjllMDdhNTBmZWY1OTM5YjMxMDJjOGRmMzRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vYXVkaW9ub2RlLWNoYW5uZWwtcnVsZXMuaHRtbApAQCAtMCwwICsxLDMx
NyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIkNoYW5uZWwg
bWl4aW5nIHJ1bGVzIGZvciBBdWRpb05vZGVzLiIpOworCit2YXIgY29udGV4dCA9IDA7Cit2YXIg
c2FtcGxlUmF0ZSA9IDQ0MTAwOwordmFyIHJlbmRlck51bWJlck9mQ2hhbm5lbHMgPSA4OwordmFy
IHNpbmdsZVRlc3RGcmFtZUxlbmd0aCA9IDg7Cit2YXIgdGVzdEJ1ZmZlcnM7CisKKy8vIEEgbGlz
dCBvZiBjb25uZWN0aW9ucyB0byBhbiBBdWRpb05vZGUgaW5wdXQsIGVhY2ggb2Ygd2hpY2ggaXMg
dG8gYmUgdXNlZCBpbiBvbmUgb3IgbW9yZSBzcGVjaWZpYyB0ZXN0IGNhc2VzLgorLy8gRWFjaCBl
bGVtZW50IGluIHRoZSBsaXN0IGlzIGEgc3RyaW5nLCB3aXRoIHRoZSBudW1iZXIgb2YgY29ubmVj
dGlvbnMgY29ycmVzcG9uZGluZyB0byB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcsCisvLyBhbmQg
ZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZyBpcyBmcm9tICcxJyB0byAnOCcgcmVwcmVzZW50
aW5nIGEgMSB0byA4IGNoYW5uZWwgY29ubmVjdGlvbiAoZnJvbSBhbiBBdWRpb05vZGUgb3V0cHV0
KS4KKy8vIEZvciBleGFtcGxlLCB0aGUgc3RyaW5nICIxMjgiIG1lYW5zIDMgY29ubmVjdGlvbnMs
IGhhdmluZyAxLCAyLCBhbmQgOCBjaGFubmVscyByZXNwZWN0aXZlbHkuCit2YXIgY29ubmVjdGlv
bnNMaXN0ID0gWyIxIiwgIjIiLCAiMyIsICI0IiwgIjUiLCAiNiIsICI3IiwgIjgiLCAiMTEiLCAi
MTIiLCAiMTQiLCAiMTgiLCAiMTExIiwgIjEyMiIsICIxMjMiLCAiMTI0IiwgIjEyOCJdOworCisv
LyBBIGxpc3Qgb2YgbWl4aW5nIHJ1bGVzLCBlYWNoIG9mIHdoaWNoIHdpbGwgYmUgdGVzdGVkIGFn
YWluc3QgYWxsIG9mIHRoZSBjb25uZWN0aW9ucyBpbiBjb25uZWN0aW9uc0xpc3QuCit2YXIgbWl4
aW5nUnVsZXNMaXN0ID0gWworICAgIHtjaGFubmVsQ291bnQ6IDIsIGNoYW5uZWxDb3VudE1vZGU6
ICJtYXgiLCBjaGFubmVsSW50ZXJwcmV0YXRpb246ICJzcGVha2VycyJ9LAorICAgIHtjaGFubmVs
Q291bnQ6IDQsIGNoYW5uZWxDb3VudE1vZGU6ICJjbGFtcGVkLW1heCIsIGNoYW5uZWxJbnRlcnBy
ZXRhdGlvbjogInNwZWFrZXJzIn0sCisKKyAgICAvLyBUZXN0IHVwLWRvd24tbWl4IHRvIHNvbWUg
ZXhwbGljaXQgc3BlYWtlciBsYXlvdXRzLgorICAgIHtjaGFubmVsQ291bnQ6IDEsIGNoYW5uZWxD
b3VudE1vZGU6ICJleHBsaWNpdCIsIGNoYW5uZWxJbnRlcnByZXRhdGlvbjogInNwZWFrZXJzIn0s
CisgICAge2NoYW5uZWxDb3VudDogMiwgY2hhbm5lbENvdW50TW9kZTogImV4cGxpY2l0IiwgY2hh
bm5lbEludGVycHJldGF0aW9uOiAic3BlYWtlcnMifSwKKyAgICB7Y2hhbm5lbENvdW50OiA0LCBj
aGFubmVsQ291bnRNb2RlOiAiZXhwbGljaXQiLCBjaGFubmVsSW50ZXJwcmV0YXRpb246ICJzcGVh
a2VycyJ9LAorICAgIHtjaGFubmVsQ291bnQ6IDYsIGNoYW5uZWxDb3VudE1vZGU6ICJleHBsaWNp
dCIsIGNoYW5uZWxJbnRlcnByZXRhdGlvbjogInNwZWFrZXJzIn0sCisKKyAgICB7Y2hhbm5lbENv
dW50OiAyLCBjaGFubmVsQ291bnRNb2RlOiAibWF4IiwgY2hhbm5lbEludGVycHJldGF0aW9uOiAi
ZGlzY3JldGUifSwKKyAgICB7Y2hhbm5lbENvdW50OiA0LCBjaGFubmVsQ291bnRNb2RlOiAiY2xh
bXBlZC1tYXgiLCBjaGFubmVsSW50ZXJwcmV0YXRpb246ICJkaXNjcmV0ZSJ9LAorICAgIHtjaGFu
bmVsQ291bnQ6IDQsIGNoYW5uZWxDb3VudE1vZGU6ICJleHBsaWNpdCIsIGNoYW5uZWxJbnRlcnBy
ZXRhdGlvbjogImRpc2NyZXRlIn0sCisgICAge2NoYW5uZWxDb3VudDogOCwgY2hhbm5lbENvdW50
TW9kZTogImV4cGxpY2l0IiwgY2hhbm5lbEludGVycHJldGF0aW9uOiAiZGlzY3JldGUifSwKK107
CisKK3ZhciBudW1iZXJPZlRlc3RzID0gbWl4aW5nUnVsZXNMaXN0Lmxlbmd0aCAqIGNvbm5lY3Rp
b25zTGlzdC5sZW5ndGg7CisKKy8vIENyZWF0ZSBhbiBuLWNoYW5uZWwgYnVmZmVyLCB3aXRoIGFs
bCBzYW1wbGUgZGF0YSB6ZXJvIGV4Y2VwdCBmb3IgYSBzaGlmdGVkIGltcHVsc2UuCisvLyBUaGUg
aW1wdWxzZSBwb3NpdGlvbiBkZXBlbmRzIG9uIHRoZSBjaGFubmVsIGluZGV4LgorLy8gRm9yIGV4
YW1wbGUsIGZvciBhIDQtY2hhbm5lbCBidWZmZXI6CisvLyBjaGFubmVsMDogMSAwIDAgMCAwIDAg
MCAwCisvLyBjaGFubmVsMTogMCAxIDAgMCAwIDAgMCAwCisvLyBjaGFubmVsMjogMCAwIDEgMCAw
IDAgMCAwCisvLyBjaGFubmVsMzogMCAwIDAgMSAwIDAgMCAwCitmdW5jdGlvbiBjcmVhdGVUZXN0
QnVmZmVyKG51bWJlck9mQ2hhbm5lbHMpIHsKKyAgICB2YXIgYnVmZmVyID0gY29udGV4dC5jcmVh
dGVCdWZmZXIobnVtYmVyT2ZDaGFubmVscywgc2luZ2xlVGVzdEZyYW1lTGVuZ3RoLCBjb250ZXh0
LnNhbXBsZVJhdGUpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsg
KytpKSB7CisgICAgICAgIHZhciBkYXRhID0gYnVmZmVyLmdldENoYW5uZWxEYXRhKGkpOworICAg
ICAgICBkYXRhW2ldID0gMTsKKyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworLy8gRGlz
Y3JldGUgY2hhbm5lbCBpbnRlcnByZXRhdGlvbiBtaXhpbmc6CisvLyBodHRwczovL2R2Y3MudzMu
b3JnL2hnL2F1ZGlvL3Jhdy1maWxlL3RpcC93ZWJhdWRpby9zcGVjaWZpY2F0aW9uLmh0bWwjVXBN
aXgKKy8vIHVwLW1peCBieSBmaWxsaW5nIGNoYW5uZWxzIHVudGlsIHRoZXkgcnVuIG91dCB0aGVu
IGlnbm9yZSByZW1haW5pbmcgZGVzdCBjaGFubmVscy4KKy8vIGRvd24tbWl4IGJ5IGZpbGxpbmcg
YXMgbWFueSBjaGFubmVscyBhcyBwb3NzaWJsZSwgdGhlbiBkcm9wcGluZyByZW1haW5pbmcgc291
cmNlIGNoYW5uZWxzLgorZnVuY3Rpb24gZGlzY3JldGVTdW0oc291cmNlQnVmZmVyLCBkZXN0QnVm
ZmVyKSB7CisgICAgaWYgKHNvdXJjZUJ1ZmZlci5sZW5ndGggIT0gZGVzdEJ1ZmZlci5sZW5ndGgp
IHsKKyAgICAgICAgYWxlcnQoImRpc2NyZXRlU3VtKCk6IGludmFsaWQgQXVkaW9CdWZmZXIhIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgbnVtYmVyT2ZDaGFubmVscyA9IHNv
dXJjZUJ1ZmZlci5udW1iZXJPZkNoYW5uZWxzIDwgZGVzdEJ1ZmZlci5udW1iZXJPZkNoYW5uZWxz
ID8gc291cmNlQnVmZmVyLm51bWJlck9mQ2hhbm5lbHMgOiBkZXN0QnVmZmVyLm51bWJlck9mQ2hh
bm5lbHM7CisgICAgdmFyIGxlbmd0aCA9IG51bWJlck9mQ2hhbm5lbHM7CisKKyAgICBmb3IgKHZh
ciBjID0gMDsgYyA8IG51bWJlck9mQ2hhbm5lbHM7ICsrYykgeworICAgICAgICB2YXIgc291cmNl
ID0gc291cmNlQnVmZmVyLmdldENoYW5uZWxEYXRhKGMpOworICAgICAgICB2YXIgZGVzdCA9IGRl
c3RCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoYyk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGRlc3RbaV0gKz0gc291cmNlW2ldOworICAgICAg
ICB9CisgICAgfQorfQorCisvLyBTcGVha2VyIGNoYW5uZWwgaW50ZXJwcmV0YXRpb24gbWl4aW5n
OgorLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9hdWRpby9yYXctZmlsZS90aXAvd2ViYXVkaW8v
c3BlY2lmaWNhdGlvbi5odG1sI1VwTWl4CitmdW5jdGlvbiBzcGVha2Vyc1N1bShzb3VyY2VCdWZm
ZXIsIGRlc3RCdWZmZXIpCit7CisgICAgdmFyIG51bWJlck9mU291cmNlQ2hhbm5lbHMgPSBzb3Vy
Y2VCdWZmZXIubnVtYmVyT2ZDaGFubmVsczsKKyAgICB2YXIgbnVtYmVyT2ZEZXN0aW5hdGlvbkNo
YW5uZWxzID0gZGVzdEJ1ZmZlci5udW1iZXJPZkNoYW5uZWxzOworICAgIHZhciBsZW5ndGggPSBk
ZXN0QnVmZmVyLmxlbmd0aDsKKworICAgIGlmIChudW1iZXJPZkRlc3RpbmF0aW9uQ2hhbm5lbHMg
PT0gMiAmJiBudW1iZXJPZlNvdXJjZUNoYW5uZWxzID09IDEpIHsKKyAgICAgICAgLy8gSGFuZGxl
IG1vbm8gLT4gc3RlcmVvIGNhc2UgKHN1bW1pbmcgbW9ubyBjaGFubmVsIGludG8gYm90aCBsZWZ0
IGFuZCByaWdodCkuCisgICAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VCdWZmZXIuZ2V0Q2hhbm5l
bERhdGEoMCk7CisgICAgICAgIHZhciBkZXN0TCA9IGRlc3RCdWZmZXIuZ2V0Q2hhbm5lbERhdGEo
MCk7CisgICAgICAgIHZhciBkZXN0UiA9IGRlc3RCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMSk7CisK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAg
ZGVzdExbaV0gKz0gc291cmNlW2ldOworICAgICAgICAgICAgZGVzdFJbaV0gKz0gc291cmNlW2ld
OworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChudW1iZXJPZkRlc3RpbmF0aW9uQ2hhbm5lbHMg
PT0gMSAmJiBudW1iZXJPZlNvdXJjZUNoYW5uZWxzID09IDIpIHsKKyAgICAgICAgLy8gSGFuZGxl
IHN0ZXJlbyAtPiBtb25vIGNhc2UuIG91dHB1dCArPSAwLjUgKiAoaW5wdXQuTCArIGlucHV0LlIp
LgorICAgICAgICB2YXIgc291cmNlTCA9IHNvdXJjZUJ1ZmZlci5nZXRDaGFubmVsRGF0YSgwKTsK
KyAgICAgICAgdmFyIHNvdXJjZVIgPSBzb3VyY2VCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMSk7Cisg
ICAgICAgIHZhciBkZXN0ID0gZGVzdEJ1ZmZlci5nZXRDaGFubmVsRGF0YSgwKTsKKworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBkZXN0W2ld
ICs9IDAuNSAqIChzb3VyY2VMW2ldICsgc291cmNlUltpXSk7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgaWYgKG51bWJlck9mRGVzdGluYXRpb25DaGFubmVscyA9PSA2ICYmIG51bWJlck9mU291cmNl
Q2hhbm5lbHMgPT0gMSkgeworICAgICAgICAvLyBIYW5kbGUgbW9ubyAtPiA1LjEgY2FzZSwgc3Vt
IG1vbm8gY2hhbm5lbCBpbnRvIGNlbnRlci4KKyAgICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZUJ1
ZmZlci5nZXRDaGFubmVsRGF0YSgwKTsKKyAgICAgICAgdmFyIGRlc3QgPSBkZXN0QnVmZmVyLmdl
dENoYW5uZWxEYXRhKDIpOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgIGRlc3RbaV0gKz0gc291cmNlW2ldOworICAgICAgICB9CisgICAg
fSBlbHNlIGlmIChudW1iZXJPZkRlc3RpbmF0aW9uQ2hhbm5lbHMgPT0gMSAmJiBudW1iZXJPZlNv
dXJjZUNoYW5uZWxzID09IDYpIHsKKyAgICAgICAgLy8gSGFuZGxlIDUuMSAtPiBtb25vLgorICAg
ICAgICB2YXIgc291cmNlTCA9IHNvdXJjZUJ1ZmZlci5nZXRDaGFubmVsRGF0YSgwKTsKKyAgICAg
ICAgdmFyIHNvdXJjZVIgPSBzb3VyY2VCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMSk7CisgICAgICAg
IHZhciBzb3VyY2VDID0gc291cmNlQnVmZmVyLmdldENoYW5uZWxEYXRhKDIpOworICAgICAgICAv
LyBza2lwIExGRSBmb3Igbm93LCBhY2NvcmRpbmcgdG8gY3VycmVudCBzcGVjLgorICAgICAgICB2
YXIgc291cmNlU0wgPSBzb3VyY2VCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoNCk7CisgICAgICAgIHZh
ciBzb3VyY2VTUiA9IHNvdXJjZUJ1ZmZlci5nZXRDaGFubmVsRGF0YSg1KTsKKyAgICAgICAgdmFy
IGRlc3QgPSBkZXN0QnVmZmVyLmdldENoYW5uZWxEYXRhKDApOworCisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGRlc3RbaV0gKz0gMC43MDcx
ICogKHNvdXJjZUxbaV0gKyBzb3VyY2VSW2ldKSArIHNvdXJjZUNbaV0gKyAwLjUgKiAoc291cmNl
U0xbaV0gKyBzb3VyY2VTUltpXSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAv
LyBGYWxsYmFjayBmb3IgdW5rbm93biBjb21iaW5hdGlvbnMuCisgICAgICAgIGRpc2NyZXRlU3Vt
KHNvdXJjZUJ1ZmZlciwgZGVzdEJ1ZmZlcik7CisgICAgfQorfQorCitmdW5jdGlvbiBzY2hlZHVs
ZVRlc3QodGVzdE51bWJlciwgY29ubmVjdGlvbnMsIGNoYW5uZWxDb3VudCwgY2hhbm5lbENvdW50
TW9kZSwgY2hhbm5lbEludGVycHJldGF0aW9uKSB7CisgICAgdmFyIG1peE5vZGUgPSBjb250ZXh0
LmNyZWF0ZUdhaW4oKTsKKyAgICBtaXhOb2RlLmNoYW5uZWxDb3VudCA9IGNoYW5uZWxDb3VudDsK
KyAgICBtaXhOb2RlLmNoYW5uZWxDb3VudE1vZGUgPSBjaGFubmVsQ291bnRNb2RlOworICAgIG1p
eE5vZGUuY2hhbm5lbEludGVycHJldGF0aW9uID0gY2hhbm5lbEludGVycHJldGF0aW9uOworICAg
IG1peE5vZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKTsKKworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgY29ubmVjdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGNvbm5lY3Rp
b25OdW1iZXJPZkNoYW5uZWxzID0gY29ubmVjdGlvbnMuY2hhckNvZGVBdChpKSAtICIwIi5jaGFy
Q29kZUF0KDApOworCisgICAgICAgIHZhciBzb3VyY2UgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlclNv
dXJjZSgpOworICAgICAgICAvLyBHZXQgYSBidWZmZXIgd2l0aCB0aGUgcmlnaHQgbnVtYmVyIG9m
IGNoYW5uZWxzLCBjb252ZXJ0aW5nIGZyb20gMS1iYXNlZCB0byAwLWJhc2VkIGluZGV4LgorICAg
ICAgICB2YXIgYnVmZmVyID0gdGVzdEJ1ZmZlcnNbY29ubmVjdGlvbk51bWJlck9mQ2hhbm5lbHMg
LSAxXTsKKyAgICAgICAgc291cmNlLmJ1ZmZlciA9IGJ1ZmZlcjsKKyAgICAgICAgc291cmNlLmNv
bm5lY3QobWl4Tm9kZSk7CisKKyAgICAgICAgLy8gU3RhcnQgYXQgdGhlIHJpZ2h0IG9mZnNldC4K
KyAgICAgICAgdmFyIHNhbXBsZUZyYW1lT2Zmc2V0ID0gdGVzdE51bWJlciAqIHNpbmdsZVRlc3RG
cmFtZUxlbmd0aDsKKyAgICAgICAgdmFyIHRpbWUgPSBzYW1wbGVGcmFtZU9mZnNldCAvIHNhbXBs
ZVJhdGU7CisgICAgICAgIHNvdXJjZS5zdGFydCh0aW1lKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IGNvbXB1dGVOdW1iZXJPZkNoYW5uZWxzKGNvbm5lY3Rpb25zLCBjaGFubmVsQ291bnQsIGNoYW5u
ZWxDb3VudE1vZGUpIHsKKyAgICBpZiAoY2hhbm5lbENvdW50TW9kZSA9PSAiZXhwbGljaXQiKQor
ICAgICAgICByZXR1cm4gY2hhbm5lbENvdW50OworCisgICAgdmFyIGNvbXB1dGVkTnVtYmVyT2ZD
aGFubmVscyA9IDE7IC8vIE11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgY2hhbm5lbC4KKworICAgIC8v
IENvbXB1dGUgImNvbXB1dGVkTnVtYmVyT2ZDaGFubmVscyIgYmFzZWQgb24gYWxsIHRoZSBjb25u
ZWN0aW9ucy4KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbm5lY3Rpb25zLmxlbmd0aDsgKytp
KSB7CisgICAgICAgIHZhciBjb25uZWN0aW9uTnVtYmVyT2ZDaGFubmVscyA9IGNvbm5lY3Rpb25z
LmNoYXJDb2RlQXQoaSkgLSAiMCIuY2hhckNvZGVBdCgwKTsKKyAgICAgICAgY29tcHV0ZWROdW1i
ZXJPZkNoYW5uZWxzID0gTWF0aC5tYXgoY29tcHV0ZWROdW1iZXJPZkNoYW5uZWxzLCBjb25uZWN0
aW9uTnVtYmVyT2ZDaGFubmVscyk7CisgICAgfQorCisgICAgaWYgKGNoYW5uZWxDb3VudE1vZGUg
PT0gImNsYW1wZWQtbWF4IikKKyAgICAgICAgY29tcHV0ZWROdW1iZXJPZkNoYW5uZWxzID0gTWF0
aC5taW4oY29tcHV0ZWROdW1iZXJPZkNoYW5uZWxzLCBjaGFubmVsQ291bnQpOworCisgICAgcmV0
dXJuIGNvbXB1dGVkTnVtYmVyT2ZDaGFubmVsczsKK30KKworZnVuY3Rpb24gY2hlY2tUZXN0UmVz
dWx0KHJlbmRlcmVkQnVmZmVyLCB0ZXN0TnVtYmVyLCBjb25uZWN0aW9ucywgY2hhbm5lbENvdW50
LCBjaGFubmVsQ291bnRNb2RlLCBjaGFubmVsSW50ZXJwcmV0YXRpb24pIHsKKyAgICB2YXIgcyA9
ICJjb25uZWN0aW9uczogIiArIGNvbm5lY3Rpb25zICsgIiwgIiArIGNoYW5uZWxDb3VudE1vZGU7
CisKKyAgICAvLyBjaGFubmVsQ291bnQgaXMgaWdub3JlZCBpbiAibWF4IiBtb2RlLgorICAgIGlm
IChjaGFubmVsQ291bnRNb2RlID09ICJjbGFtcGVkLW1heCIgfHwgY2hhbm5lbENvdW50TW9kZSA9
PSAiZXhwbGljaXQiKSB7CisgICAgICAgIHMgKz0gIigiICsgY2hhbm5lbENvdW50ICsgIikiOwor
ICAgIH0KKworICAgIHMgKz0gIiwgIiArIGNoYW5uZWxJbnRlcnByZXRhdGlvbjsKKworICAgIHZh
ciBjb21wdXRlZE51bWJlck9mQ2hhbm5lbHMgPSBjb21wdXRlTnVtYmVyT2ZDaGFubmVscyhjb25u
ZWN0aW9ucywgY2hhbm5lbENvdW50LCBjaGFubmVsQ291bnRNb2RlKTsKKworICAgIC8vIFNob3cg
cmVuZGVyZWQgb3V0cHV0IGZvciB0aGlzIHRlc3Q6CisgICAgLy8KKyAgICAvLyBjb25zb2xlLmxv
ZyhzKTsKKyAgICAvLyB2YXIgc2FtcGxlRnJhbWVPZmZzZXQgPSB0ZXN0TnVtYmVyICogc2luZ2xl
VGVzdEZyYW1lTGVuZ3RoOworICAgIC8vIGZvciAodmFyIGMgPSAwOyBjIDwgcmVuZGVyTnVtYmVy
T2ZDaGFubmVsczsgKytjKSB7CisgICAgLy8gICAgIHZhciBkYXRhID0gcmVuZGVyZWRCdWZmZXIu
Z2V0Q2hhbm5lbERhdGEoYyk7CisgICAgLy8gICAgIHZhciBzID0gIiI7CisgICAgLy8gICAgIGZv
ciAodmFyIHNhbXBsZUZyYW1lID0gMDsgc2FtcGxlRnJhbWUgPCBzaW5nbGVUZXN0RnJhbWVMZW5n
dGg7ICsrc2FtcGxlRnJhbWUpIHsKKyAgICAvLyAgICAgICAgIHMgKz0gZGF0YVtzYW1wbGVGcmFt
ZSArIHNhbXBsZUZyYW1lT2Zmc2V0XSArICIgIjsKKyAgICAvLyAgICAgfQorICAgIC8vICAgICBz
ICs9ICJcbiI7CisgICAgLy8gICAgIGNvbnNvbGUubG9nKHMpOworICAgIC8vIH0KKyAgICAvLyBy
ZXR1cm47CisKKyAgICAvLyBDcmVhdGUgYSB6ZXJvLWluaXRpYWxpemVkIHNpbGVudCBBdWRpb0J1
ZmZlciB3aXRoIGNvbXB1dGVkTnVtYmVyT2ZDaGFubmVscy4KKyAgICB2YXIgZGVzdEJ1ZmZlciA9
IGNvbnRleHQuY3JlYXRlQnVmZmVyKGNvbXB1dGVkTnVtYmVyT2ZDaGFubmVscywgc2luZ2xlVGVz
dEZyYW1lTGVuZ3RoLCBjb250ZXh0LnNhbXBsZVJhdGUpOworCisgICAgLy8gTWl4IGFsbCBvZiB0
aGUgY29ubmVjdGlvbnMgaW50byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgorICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY29ubmVjdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGNvbm5l
Y3Rpb25OdW1iZXJPZkNoYW5uZWxzID0gY29ubmVjdGlvbnMuY2hhckNvZGVBdChpKSAtICIwIi5j
aGFyQ29kZUF0KDApOworICAgICAgICB2YXIgc291cmNlQnVmZmVyID0gdGVzdEJ1ZmZlcnNbY29u
bmVjdGlvbk51bWJlck9mQ2hhbm5lbHMgLSAxXTsgLy8gY29udmVydCBmcm9tIDEtYmFzZWQgdG8g
MC1iYXNlZCBpbmRleAorCisgICAgICAgIGlmIChjaGFubmVsSW50ZXJwcmV0YXRpb24gPT0gInNw
ZWFrZXJzIikgeworICAgICAgICAgICAgc3BlYWtlcnNTdW0oc291cmNlQnVmZmVyLCBkZXN0QnVm
ZmVyKTsKKyAgICAgICAgfSBlbHNlIGlmIChjaGFubmVsSW50ZXJwcmV0YXRpb24gPT0gImRpc2Ny
ZXRlIikgeworICAgICAgICAgICAgZGlzY3JldGVTdW0oc291cmNlQnVmZmVyLCBkZXN0QnVmZmVy
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFsZXJ0KCJJbnZhbGlkIGNoYW5uZWwg
aW50ZXJwcmV0YXRpb24hIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBWYWxpZGF0ZSB0
aGF0IGRlc3RCdWZmZXIgbWF0Y2hlcyB0aGUgcmVuZGVyZWQgb3V0cHV0LgorICAgIC8vIFdlIG5l
ZWQgdG8gY2hlY2sgdGhlIHJlbmRlcmVkIG91dHB1dCBhdCBhIHNwZWNpZmljIHNhbXBsZS1mcmFt
ZS1vZmZzZXQgY29ycmVzcG9uZGluZworICAgIC8vIHRvIHRoZSBzcGVjaWZpYyB0ZXN0IGNhc2Ug
d2UncmUgY2hlY2tpbmcgZm9yIGJhc2VkIG9uIHRlc3ROdW1iZXIuCisKKyAgICB2YXIgc2FtcGxl
RnJhbWVPZmZzZXQgPSB0ZXN0TnVtYmVyICogc2luZ2xlVGVzdEZyYW1lTGVuZ3RoOworICAgIGZv
ciAodmFyIGMgPSAwOyBjIDwgcmVuZGVyTnVtYmVyT2ZDaGFubmVsczsgKytjKSB7CisgICAgICAg
IHZhciByZW5kZXJlZERhdGEgPSByZW5kZXJlZEJ1ZmZlci5nZXRDaGFubmVsRGF0YShjKTsKKyAg
ICAgICAgZm9yICh2YXIgZnJhbWUgPSAwOyBmcmFtZSA8IHNpbmdsZVRlc3RGcmFtZUxlbmd0aDsg
KytmcmFtZSkgeworICAgICAgICAgICAgdmFyIHJlbmRlcmVkVmFsdWUgPSByZW5kZXJlZERhdGFb
ZnJhbWUgKyBzYW1wbGVGcmFtZU9mZnNldF07CisKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFZh
bHVlID0gMDsKKyAgICAgICAgICAgIGlmIChmcmFtZSA8IGRlc3RCdWZmZXIubGVuZ3RoICYmIGMg
PCBkZXN0QnVmZmVyLm51bWJlck9mQ2hhbm5lbHMpIHsKKyAgICAgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWREYXRhID0gZGVzdEJ1ZmZlci5nZXRDaGFubmVsRGF0YShjKTsKKyAgICAgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRWYWx1ZSA9IGV4cGVjdGVkRGF0YVtmcmFtZV07CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChyZW5kZXJlZFZhbHVlICE9IGV4cGVjdGVkVmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IHMgKyAicmVuZGVyZWQ6ICIgKyByZW5kZXJlZFZh
bHVlICsgIiBleHBlY3RlZDogIiArIGV4cGVjdGVkVmFsdWUgKyAiIGNoYW5uZWw6ICIgKyBjICsg
IiBmcmFtZTogIiArIGZyYW1lOworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQocyk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgdGVzdFBhc3NlZChzKTsKK30KKworZnVuY3Rpb24gY2hlY2tSZXN1bHQoZXZlbnQpIHsKKyAg
ICB2YXIgYnVmZmVyID0gZXZlbnQucmVuZGVyZWRCdWZmZXI7CisKKyAgICAvLyBTYW5pdHkgY2hl
Y2sgcmVzdWx0LgorICAgIGlmIChidWZmZXIubGVuZ3RoICE9IG51bWJlck9mVGVzdHMgKiBzaW5n
bGVUZXN0RnJhbWVMZW5ndGggfHwgYnVmZmVyLm51bWJlck9mQ2hhbm5lbHMgIT0gcmVuZGVyTnVt
YmVyT2ZDaGFubmVscykgeworICAgICAgICBhbGVydCgiT2ZmbGluZUF1ZGlvQ29udGV4dCByZXN1
bHQgbm90IG9mIGV4cGVjdGVkIHNpemUhIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQ2hlY2sgYWxsIHRoZSB0ZXN0cy4KKyAgICB2
YXIgdGVzdE51bWJlciA9IDA7CisgICAgZm9yICh2YXIgbSA9IDA7IG0gPCBtaXhpbmdSdWxlc0xp
c3QubGVuZ3RoOyArK20pIHsKKyAgICAgICAgdmFyIG1peGluZ1J1bGVzID0gbWl4aW5nUnVsZXNM
aXN0W21dOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbm5lY3Rpb25zTGlzdC5sZW5n
dGg7ICsraSwgKyt0ZXN0TnVtYmVyKSB7CisgICAgICAgICAgICBjaGVja1Rlc3RSZXN1bHQoYnVm
ZmVyLCB0ZXN0TnVtYmVyLCBjb25uZWN0aW9uc0xpc3RbaV0sIG1peGluZ1J1bGVzLmNoYW5uZWxD
b3VudCwgbWl4aW5nUnVsZXMuY2hhbm5lbENvdW50TW9kZSwgbWl4aW5nUnVsZXMuY2hhbm5lbElu
dGVycHJldGF0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgICAgfQorCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgLy8gQ3JlYXRlIDgtY2hhbm5lbCBvZmZsaW5lIGF1ZGlvIGNvbnRleHQuCisgICAgLy8g
RWFjaCB0ZXN0IHdpbGwgcmVuZGVyIDggc2FtcGxlLWZyYW1lcyBzdGFydGluZyBhdCBzYW1wbGUt
ZnJhbWUgcG9zaXRpb24gdGVzdE51bWJlciAqIDguCisgICAgdmFyIHRvdGFsRnJhbWVMZW5ndGgg
PSBudW1iZXJPZlRlc3RzICogc2luZ2xlVGVzdEZyYW1lTGVuZ3RoOworICAgIGNvbnRleHQgPSBu
ZXcgd2Via2l0T2ZmbGluZUF1ZGlvQ29udGV4dChyZW5kZXJOdW1iZXJPZkNoYW5uZWxzLCB0b3Rh
bEZyYW1lTGVuZ3RoLCBzYW1wbGVSYXRlKTsKKworICAgIC8vIFNldCBkZXN0aW5hdGlvbiB0byBk
aXNjcmV0ZSBtaXhpbmcuCisgICAgY29udGV4dC5kZXN0aW5hdGlvbi5jaGFubmVsQ291bnQgPSBy
ZW5kZXJOdW1iZXJPZkNoYW5uZWxzOworICAgIGNvbnRleHQuZGVzdGluYXRpb24uY2hhbm5lbENv
dW50TW9kZSA9ICJleHBsaWNpdCI7CisgICAgY29udGV4dC5kZXN0aW5hdGlvbi5jaGFubmVsSW50
ZXJwcmV0YXRpb24gPSAiZGlzY3JldGUiOworCisgICAgLy8gQ3JlYXRlIHRlc3QgYnVmZmVycyBm
cm9tIDEgdG8gOCBjaGFubmVscy4KKyAgICB0ZXN0QnVmZmVycyA9IG5ldyBBcnJheSgpOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcmVuZGVyTnVtYmVyT2ZDaGFubmVsczsgKytpKSB7CisgICAg
ICAgIHRlc3RCdWZmZXJzW2ldID0gY3JlYXRlVGVzdEJ1ZmZlcihpICsgMSk7CisgICAgfQorCisg
ICAgLy8gU2NoZWR1bGUgYWxsIHRoZSB0ZXN0cy4KKyAgICB2YXIgdGVzdE51bWJlciA9IDA7Cisg
ICAgZm9yICh2YXIgbSA9IDA7IG0gPCBtaXhpbmdSdWxlc0xpc3QubGVuZ3RoOyArK20pIHsKKyAg
ICAgICAgdmFyIG1peGluZ1J1bGVzID0gbWl4aW5nUnVsZXNMaXN0W21dOworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNvbm5lY3Rpb25zTGlzdC5sZW5ndGg7ICsraSwgKyt0ZXN0TnVtYmVy
KSB7CisgICAgICAgICAgICBzY2hlZHVsZVRlc3QodGVzdE51bWJlciwgY29ubmVjdGlvbnNMaXN0
W2ldLCBtaXhpbmdSdWxlcy5jaGFubmVsQ291bnQsIG1peGluZ1J1bGVzLmNoYW5uZWxDb3VudE1v
ZGUsIG1peGluZ1J1bGVzLmNoYW5uZWxJbnRlcnByZXRhdGlvbik7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBSZW5kZXIgdGhlbiBjaGVjayByZXN1bHRzLgorICAgIGNvbnRleHQub25jb21w
bGV0ZSA9IGNoZWNrUmVzdWx0OworICAgIGNvbnRleHQuc3RhcnRSZW5kZXJpbmcoKTsKK30KKwor
cnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="210757"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>