<?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>71425</bug_id>
          
          <creation_ts>2011-11-02 17:56:54 -0700</creation_ts>
          <short_desc>Move Mocks into _mock files near their implementations</short_desc>
          <delta_ts>2011-11-02 23:16:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>levin+watchlist</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>495107</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-02 17:56:54 -0700</bug_when>
    <thetext>Move Mocks into _mock files near their implementations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495108</commentid>
    <comment_count>1</comment_count>
      <attachid>113411</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-02 17:57:19 -0700</bug_when>
    <thetext>Created attachment 113411
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495201</commentid>
    <comment_count>2</comment_count>
      <attachid>113432</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-02 22:07:48 -0700</bug_when>
    <thetext>Created attachment 113432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495209</commentid>
    <comment_count>3</comment_count>
      <attachid>113432</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-02 22:33:38 -0700</bug_when>
    <thetext>Comment on attachment 113432
Patch

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

&gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:47
&gt; +

Y U ADD BLANK LINE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495212</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-02 23:16:22 -0700</bug_when>
    <thetext>Committed r99140: &lt;http://trac.webkit.org/changeset/99140&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113411</attachid>
            <date>2011-11-02 17:57:19 -0700</date>
            <delta_ts>2011-11-02 22:07:44 -0700</delta_ts>
            <desc>wip</desc>
            <filename>bug-71425-20111102175717.patch</filename>
            <type>text/plain</type>
            <size>115456</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxMDYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYTgyYzRlNTVlZTYyYjIyYjZmN2I0NWM4OWIzODRhZmUx
MjI1NzAyLi5hNDZhM2U4NjNlNDU1ZWQ0OTc1MWM1ZTUxMjhjNmQ2YzRjMGM0ZTBiIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkg
QEAKKzIwMTEtMTEtMDIgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IE1vdmUgTW9ja3MgaW50byBfbW9jayBmaWxlcyBuZWFyIHRoZWlyIGltcGxlbWVudGF0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X21vY2su
cHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2No
ZWNrb3V0X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2RlcHNfbW9jay5weTogQ29waWVkIGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9fX2luaXRfXy5weS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9zY20vc2NtX21vY2sucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3BvcnRzX21vY2sucHk6IENvcGllZCBm
cm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrX3VuaXR0ZXN0
LnB5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2hvc3QucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vaG9zdF9tb2NrLnB5OiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfbW9jay5weTog
QWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1
Z3ppbGxhX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9idWlsZGJvdC9idWlsZGJvdF9tb2NrLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2ZhaWx1cmVtYXBfdW5pdHRlc3QucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2lyYy9pcmNfbW9jay5weTogQ29waWVkIGZy
b20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9fX2luaXRfXy5weS4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyX21vY2su
cHk6IENvcGllZCBmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Z3RrX3VuaXR0ZXN0LnB5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9z
dGF0dXNzZXJ2ZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L3dlYl9tb2NrLnB5OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2d0a191bml0dGVzdC5weS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvX21vY2sucHk6IENvcGllZCBmcm9tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvX19pbml0X18ucHkuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfbW9jay5weTogQ29waWVk
IGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGtfdW5pdHRl
c3QucHkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFj
ZV9tb2NrLnB5OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L19faW5pdF9fLnB5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS93b3Jrc3BhY2VfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vd2F0Y2hsaXN0L3dhdGNobGlzdF9tb2NrLnB5OiBDb3BpZWQgZnJvbSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L19faW5pdF9fLnB5LgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3Qu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
dGVzdF9leHBlY3RhdGlvbnNfZWRpdG9yX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvX19pbml0X18ucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRl
c3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGtf
dW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9odHRwX2xvY2tfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9sZWFrZGV0ZWN0b3JfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5p
dHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
aW5fdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9ib3RpbmZvX3VuaXR0ZXN0LnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXJf
dW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29t
bWFuZF91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVlcmllc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvcmViYXNlbGluZV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvbW9ja3Rvb2wucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3Nl
cnZlcnMvZ2FyZGVuaW5nc2VydmVyX3VuaXR0ZXN0LnB5OgorCiAyMDExLTEwLTMxICBFcmljIFNl
aWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBCYXNlbGluZU9wdGltaXplciB0ZXN0
cyBzaG91bGQgdXNlIG1vY2tzIGluc3RlYWQgb2YgcmVhbCBFeGVjdXRpdmUvRmlsZVN5c3RlbSBv
YmplY3RzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9iYXNlbGluZW9wdGltaXplcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyX3VuaXR0ZXN0LnB5CmluZGV4IDQzMjUx
MGY0MjBmMDUyMjQ3ZDIwZjEwMjEyZWYzNWVhMzMyZGM1MmYuLjFkM2U1NzM3MGZkZjkwYTQwN2Yy
NzViYjk0NDE5NjU3YjIyNzIzNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyX3VuaXR0
ZXN0LnB5CkBAIC0zMiw3ICszMiw3IEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWJraXRweS5j
b21tb24uY2hlY2tvdXQuYmFzZWxpbmVvcHRpbWl6ZXIgaW1wb3J0IEJhc2VsaW5lT3B0aW1pemVy
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2Nr
RmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5mYWN0b3J5IGltcG9y
dCBQb3J0RmFjdG9yeQotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrSG9z
dAorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogCiAKIGNs
YXNzIFRlc3RCYXNlbGluZU9wdGltaXplcihCYXNlbGluZU9wdGltaXplcik6CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dF9tb2NrLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfbW9jay5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mZDBmOWFlMTUwNmI3OGY4YTIxODdhMDliZTI3MjgwYTE1ZjQ0YWU5Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
Y2hlY2tvdXRfbW9jay5weQpAQCAtMCwwICsxLDg2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSB3
ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QKKwor
CitjbGFzcyBNb2NrQ29tbWl0TWVzc2FnZShvYmplY3QpOgorICAgIGRlZiBtZXNzYWdlKHNlbGYp
OgorICAgICAgICByZXR1cm4gIlRoaXMgaXMgYSBmYWtlIGNvbW1pdCBtZXNzYWdlIHRoYXQgaXMg
YXQgbGVhc3QgNTAgY2hhcmFjdGVycy4iCisKKworY2xhc3MgTW9ja0NoZWNrb3V0KG9iamVjdCk6
CisKKyAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBtb3ZlIG9udG8gdGhlIEhvc3Qgb2JqZWN0LCBh
bmQgd2Ugc2hvdWxkIHVzZSBhIE1vY2tDb21taXR0ZXJMaXN0IGZvciB0ZXN0cy4KKyAgICBfY29t
bWl0dGVyX2xpc3QgPSBDb21taXR0ZXJMaXN0KCkKKworICAgIGRlZiBjb21taXRfaW5mb19mb3Jf
cmV2aXNpb24oc2VsZiwgc3ZuX3JldmlzaW9uKToKKyAgICAgICAgIyBUaGUgcmVhbCBDaGVja291
dCB3b3VsZCBwcm9iYWJseSB0aHJvdyBhbiBleGNlcHRpb24sIGJ1dCB0aGlzIGlzIHRoZSBvbmx5
IHdheSB0ZXN0cyBoYXZlIHRvIGdldCBOb25lIGJhY2sgYXQgdGhlIG1vbWVudC4KKyAgICAgICAg
aWYgbm90IHN2bl9yZXZpc2lvbjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJl
dHVybiBDb21taXRJbmZvKHN2bl9yZXZpc2lvbiwgImVyaWNAd2Via2l0Lm9yZyIsIHsKKyAgICAg
ICAgICAgICJidWdfaWQiOiA1MDAwMCwKKyAgICAgICAgICAgICJhdXRob3JfbmFtZSI6ICJBZGFt
IEJhcnRoIiwKKyAgICAgICAgICAgICJhdXRob3JfZW1haWwiOiAiYWJhcnRoQHdlYmtpdC5vcmci
LAorICAgICAgICAgICAgImF1dGhvciI6IHNlbGYuX2NvbW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9y
X2J5X2VtYWlsKCJhYmFydGhAd2Via2l0Lm9yZyIpLAorICAgICAgICAgICAgInJldmlld2VyX3Rl
eHQiOiAiRGFyaW4gQWRsZXIiLAorICAgICAgICAgICAgInJldmlld2VyIjogc2VsZi5fY29tbWl0
dGVyX2xpc3QuY29tbWl0dGVyX2J5X25hbWUoIkRhcmluIEFkbGVyIiksCisgICAgICAgICAgICAi
Y2hhbmdlZF9maWxlcyI6IFsKKyAgICAgICAgICAgICAgICAicGF0aC90by9maWxlIiwKKyAgICAg
ICAgICAgICAgICAiYW5vdGhlci9maWxlIiwKKyAgICAgICAgICAgIF0sCisgICAgICAgIH0pCisK
KyAgICBkZWYgaXNfcGF0aF90b19jaGFuZ2Vsb2coc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVy
biBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpID09ICJDaGFuZ2VMb2ciCisKKyAgICBkZWYgYnVnX2lk
X2Zvcl9yZXZpc2lvbihzZWxmLCBzdm5fcmV2aXNpb24pOgorICAgICAgICByZXR1cm4gMTIzNDUK
KworICAgIGRlZiByZWNlbnRfY29tbWl0X2luZm9zX2Zvcl9maWxlcyhzZWxmLCBwYXRocyk6Cisg
ICAgICAgIHJldHVybiBbc2VsZi5jb21taXRfaW5mb19mb3JfcmV2aXNpb24oMzIpXQorCisgICAg
ZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1O
b25lKToKKyAgICAgICAgIyBJZGVhbGx5IHdlJ2QgcmV0dXJuIHNvbWV0aGluZyBtb3JlIGludGVy
ZXN0aW5nIGhlcmUuICBUaGUgcHJvYmxlbSBpcworICAgICAgICAjIHRoYXQgTGFuZERpZmYgd2ls
bCB0cnkgdG8gYWN0dWFsbHkgcmVhZCB0aGUgcGF0Y2ggZnJvbSBkaXNrIQorICAgICAgICByZXR1
cm4gW10KKworICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0
X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1Ob25lKToKKyAgICAgICAgcmV0dXJuIE1vY2tDb21taXRN
ZXNzYWdlKCkKKworICAgIGRlZiBjaHJvbWl1bV9kZXBzKHNlbGYpOgorICAgICAgICByZXR1cm4g
TW9ja0RFUFMoKQorCisgICAgZGVmIGFwcGx5X3BhdGNoKHNlbGYsIHBhdGNoLCBmb3JjZT1GYWxz
ZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBhcHBseV9yZXZlcnNlX2RpZmZzKHNlbGYsIHJl
dmlzaW9uKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHN1Z2dlc3RlZF9yZXZpZXdlcnMoc2Vs
ZiwgZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1Ob25lKToKKyAgICAgICAgcmV0dXJuIFtfbW9j
a19yZXZpZXdlcnNbMF1dCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9jaGVja291dF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CmluZGV4IGU0NGU5YjQ5NjA1ZjRm
YjczYTAyNWNjZGVhZmY3ZWRjMjA4NmVhOTkuLjM2NmE0NDIzNWNiMDEzMjVjYmY1ZTdjMDlkZjM5
ZmYzYWFmNzg4MmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CkBAIC0zNywxMiArMzcsMTQgQEAg
aW1wb3J0IHVuaXR0ZXN0CiBmcm9tIC5jaGVja291dCBpbXBvcnQgQ2hlY2tvdXQKIGZyb20gLmNo
YW5nZWxvZyBpbXBvcnQgQ2hhbmdlTG9nRW50cnkKIGZyb20gLnNjbSBpbXBvcnQgZGV0ZWN0X3Nj
bV9zeXN0ZW0sIENvbW1pdE1lc3NhZ2UKK2Zyb20gLnNjbS5zY21fbW9jayBpbXBvcnQgTW9ja1ND
TQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZl
LCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9j
ayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBv
cnQgTW9ja1NDTSwgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFy
dHkubW9jayBpbXBvcnQgTW9jawogCiAKKwogIyBGSVhNRTogQ29waWVkIGZyb20gc2NtX3VuaXR0
ZXN0LnB5CiBkZWYgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoZmlsZV9wYXRoLCBjb250ZW50cywg
ZW5jb2Rpbmc9InV0Zi04Iik6CiAgICAgd2l0aCBjb2RlY3Mub3BlbihmaWxlX3BhdGgsICJ3Iiwg
ZW5jb2RpbmcpIGFzIGZpbGU6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9kZXBzX21vY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9kZXBzX21vY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJhMTVhNjVlZTVlM2FlNDc0ZTBh
NTIzYTc0NDU2OGNmODhhNGI3MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2RlcHNfbW9jay5weQpAQCAtMCwwICsxLDM1IEBACisjIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworCitjbGFzcyBNb2NrREVQUyhvYmplY3QpOgorICAgIGRlZiByZWFkX3Zhcmlh
YmxlKHNlbGYsIG5hbWUpOgorICAgICAgICByZXR1cm4gNjU2NAorCisgICAgZGVmIHdyaXRlX3Zh
cmlhYmxlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgbG9nKCJNT0NLOiBNb2NrREVQUy53
cml0ZV92YXJpYWJsZSglcywgJXMpIiAlIChuYW1lLCB2YWx1ZSkpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX21vY2sucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX21vY2sucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzhhZjY3Yzk4NzUxZGM3NjFkOTI0Y2U3ZTMwMGYxOWFkZmIxMzY0MwotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21f
bW9jay5weQpAQCAtMCwwICsxLDExNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRp
dmUKKworCitjbGFzcyBNb2NrU0NNKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZp
bGVzeXN0ZW09Tm9uZSwgZXhlY3V0aXZlPU5vbmUpOgorICAgICAgICBzZWxmLmNoZWNrb3V0X3Jv
b3QgPSAiL21vY2stY2hlY2tvdXQiCisgICAgICAgIHNlbGYuYWRkZWRfcGF0aHMgPSBzZXQoKQor
ICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gZmlsZXN5c3RlbSBvciBNb2NrRmlsZVN5c3RlbSgp
CisgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZSBvciBNb2NrRXhlY3V0aXZlKCkK
KworICAgIGRlZiBhZGQoc2VsZiwgZGVzdGluYXRpb25fcGF0aCwgcmV0dXJuX2V4aXRfY29kZT1G
YWxzZSk6CisgICAgICAgIHNlbGYuYWRkZWRfcGF0aHMuYWRkKGRlc3RpbmF0aW9uX3BhdGgpCisg
ICAgICAgIGlmIHJldHVybl9leGl0X2NvZGU6CisgICAgICAgICAgICByZXR1cm4gMAorCisgICAg
ZGVmIGVuc3VyZV9jbGVhbl93b3JraW5nX2RpcmVjdG9yeShzZWxmLCBmb3JjZV9jbGVhbik6Cisg
ICAgICAgIHBhc3MKKworICAgIGRlZiBzdXBwb3J0c19sb2NhbF9jb21taXRzKHNlbGYpOgorICAg
ICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGVuc3VyZV9ub19sb2NhbF9jb21taXRzKHNlbGYs
IGZvcmNlX2NsZWFuKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGV4aXN0cyhzZWxmLCBwYXRo
KToKKyAgICAgICAgIyBUZXN0UmVhbE1haW4udGVzdF9yZWFsX21haW4gKGFuZCBzZXZlcmFsIG90
aGVyIHJlYmFzZWxpbmUgdGVzdHMpIGFyZSBzZW5zaXRpdmUgdG8gdGhpcyByZXR1cm4gdmFsdWUu
CisgICAgICAgICMgV2Ugc2hvdWxkIG1ha2UgdGhvc2UgdGVzdHMgbW9yZSByb2J1c3QsIGJ1dCBm
b3Igbm93IHdlIGp1c3QgcmV0dXJuIFRydWUgYWx3YXlzIChzaW5jZSBubyB0ZXN0IG5lZWRzIG90
aGVyd2lzZSkuCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgYWJzb2x1dGVfcGF0aChz
ZWxmLCAqY29tcHMpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYu
Y2hlY2tvdXRfcm9vdCwgKmNvbXBzKQorCisgICAgZGVmIGNoYW5nZWRfZmlsZXMoc2VsZiwgZ2l0
X2NvbW1pdD1Ob25lKToKKyAgICAgICAgcmV0dXJuIFsiTW9ja0ZpbGUxIl0KKworICAgIGRlZiBj
aGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CisgICAgICAgIHJldHVy
biBbIk1vY2tGaWxlMSJdCisKKyAgICBkZWYgaGVhZF9zdm5fcmV2aXNpb24oc2VsZik6CisgICAg
ICAgIHJldHVybiAxMjM0CisKKyAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQs
IGNoYW5nZWRfZmlsZXM9Tm9uZSk6CisgICAgICAgIHJldHVybiAiUGF0Y2gxIgorCisgICAgZGVm
IGNvbW1pdF9pZHNfZnJvbV9jb21taXRpc2hfYXJndW1lbnRzKHNlbGYsIGFyZ3MpOgorICAgICAg
ICByZXR1cm4gWyJDb21taXRpc2gxIiwgIkNvbW1pdGlzaDIiXQorCisgICAgZGVmIGNvbW1pdHRl
cl9lbWFpbF9mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgorICAgICAgICByZXR1cm4gIm1v
Y2tAd2Via2l0Lm9yZyIKKworICAgIGRlZiBjb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2Uoc2Vs
ZiwgbWVzc2FnZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdl
KHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIHBhc3N3b3JkPU5vbmUsIGdpdF9jb21taXQ9
Tm9uZSwgZm9yY2Vfc3F1YXNoPUZhbHNlLCBjaGFuZ2VkX2ZpbGVzPU5vbmUpOgorICAgICAgICBw
YXNzCisKKyAgICBkZWYgbWVyZ2VfYmFzZShzZWxmLCBnaXRfY29tbWl0KToKKyAgICAgICAgcmV0
dXJuIE5vbmUKKworICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfbG9jYWxfY29tbWl0KHNlbGYs
IGNvbW1pdF9pZCk6CisgICAgICAgIGlmIGNvbW1pdF9pZCA9PSAiQ29tbWl0aXNoMSI6CisgICAg
ICAgICAgICByZXR1cm4gQ29tbWl0TWVzc2FnZSgiQ29tbWl0TWVzc2FnZTFcbiIgXAorICAgICAg
ICAgICAgICAgICJodHRwczovL2J1Z3MuZXhhbXBsZS5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDAw
XG4iKQorICAgICAgICBpZiBjb21taXRfaWQgPT0gIkNvbW1pdGlzaDIiOgorICAgICAgICAgICAg
cmV0dXJuIENvbW1pdE1lc3NhZ2UoIkNvbW1pdE1lc3NhZ2UyXG4iIFwKKyAgICAgICAgICAgICAg
ICAiaHR0cHM6Ly9idWdzLmV4YW1wbGUub3JnL3Nob3dfYnVnLmNnaT9pZD01MDAwMVxuIikKKyAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCJCb2d1cyBjb21taXRfaWQgaW4gY29tbWl0X21lc3NhZ2Vf
Zm9yX2xvY2FsX2NvbW1pdC4iKQorCisgICAgZGVmIGRpZmZfZm9yX2ZpbGUoc2VsZiwgcGF0aCwg
bG9nPU5vbmUpOgorICAgICAgICByZXR1cm4gcGF0aCArICctZGlmZicKKworICAgIGRlZiBkaWZm
X2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CisgICAgICAgIHJldHVybiAiRGlmZkZvclJl
dmlzaW9uJXNcbmh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQ1IiAl
IHJldmlzaW9uCisKKyAgICBkZWYgc2hvd19oZWFkKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1
cm4gcGF0aAorCisgICAgZGVmIHN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KHNlbGYsIGNv
bW1pdF90ZXh0KToKKyAgICAgICAgcmV0dXJuICI0OTgyNCIKKworICAgIGRlZiBkZWxldGUoc2Vs
ZiwgcGF0aCk6CisgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtOgorICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHBhdGgpOgorICAgICAg
ICAgICAgc2VsZi5fZmlsZXN5c3RlbS5yZW1vdmUocGF0aCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDZjMWY0MmIzY2I4YzBiZGNmODlhZmNkMzgxM2Y1OGNkYjI2N2QxOGEuLmViMGFiNTY1NzAz
NThhNDIyNDkwNjgyZjU1Y2RkM2ZlYzc4YTA1YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQpAQCAt
NTIsNyArNTIsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBv
cnQgQ29tbWl0dGVyICAjIEZJWE1FOiBUaGlzIHNob3VsZCBubwogZnJvbSB3ZWJraXRweS5jb21t
b24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBBdHRhY2htZW50ICMgRklYTUU6IFRoaXMgc2hvdWxkIG5v
dCBiZSBuZWVkZWQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0
IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRw
dXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rv
b2wgaW1wb3J0IE1vY2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVj
dXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQogCiBmcm9tIC5kZXRlY3Rpb24gaW1wb3J0
IGZpbmRfY2hlY2tvdXRfcm9vdCwgZGVmYXVsdF9zY20sIGRldGVjdF9zY21fc3lzdGVtCiBmcm9t
IC5naXQgaW1wb3J0IEdpdCwgQW1iaWd1b3VzQ29tbWl0RXJyb3IKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0c19tb2NrLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3BvcnRzX21vY2sucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzY0
MTUyNTM5YzhjMTFjZWVkYmY4MjQ4MjVhMTU4YjM2YWIyMWI4YgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0c19tb2NrLnB5CkBAIC0w
LDAgKzEsNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2NsYXNzIE1vY2tQb3J0KG9iamVjdCk6Cisg
ICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiTW9ja1BvcnQiCisKKyAgICBkZWYg
bGF5b3V0X3Rlc3RzX3Jlc3VsdHNfcGF0aChzZWxmKToKKyAgICAgICAgcmV0dXJuICIvbW9jay1y
ZXN1bHRzL3Jlc3VsdHMuaHRtbCIKKworICAgIGRlZiBjaGVja193ZWJraXRfc3R5bGVfY29tbWFu
ZChzZWxmKToKKyAgICAgICAgcmV0dXJuIFsibW9jay1jaGVjay13ZWJraXQtc3R5bGUiXQorCisg
ICAgZGVmIHVwZGF0ZV93ZWJraXRfY29tbWFuZChzZWxmKToKKyAgICAgICAgcmV0dXJuIFsibW9j
ay11cGRhdGUtd2Via2l0Il0KKworICAgIGRlZiBidWlsZF93ZWJraXRfY29tbWFuZChzZWxmLCBi
dWlsZF9zdHlsZT1Ob25lKToKKyAgICAgICAgcmV0dXJuIFsibW9jay1idWlsZC13ZWJraXQiXQor
CisgICAgZGVmIHByZXBhcmVfY2hhbmdlbG9nX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJldHVy
biBbJ21vY2stcHJlcGFyZS1DaGFuZ2VMb2cnXQorCisgICAgZGVmIHJ1bl9weXRob25fdW5pdHRl
c3RzX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJldHVybiBbJ21vY2stdGVzdC13ZWJraXRweSdd
CisKKyAgICBkZWYgcnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJl
dHVybiBbJ21vY2stdGVzdC13ZWJraXRwZXJsJ10KKworICAgIGRlZiBydW5famF2YXNjcmlwdGNv
cmVfdGVzdHNfY29tbWFuZChzZWxmKToKKyAgICAgICAgcmV0dXJuIFsnbW9jay1ydW4tamF2YWNy
aXB0Y29yZS10ZXN0cyddCisKKyAgICBkZWYgcnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKHNlbGYp
OgorICAgICAgICByZXR1cm4gWydtb2NrLXJ1bi13ZWJraXQtdGVzdHMnXQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vaG9zdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2hvc3QucHkKaW5kZXggYjJmZGQyZjNmYzdkMGZjNjVmMmNlYmNmMjk5Njkw
ZmMxNWYzYTM2Mi4uMDNjM2QyM2IxNmEzYWU4OGM1ODFmMzE0YjU4NjdhM2UxZDk2MzI4ZSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vaG9zdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9ob3N0LnB5CkBAIC00MiwyMyArNDIsMzIgQEAgZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5mYWN0b3J5IGltcG9ydCBQb3J0RmFjdG9yeQog
CiBjbGFzcyBIb3N0KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBz
ZWxmLmJ1Z3MgPSBidWd6aWxsYS5CdWd6aWxsYSgpCi0gICAgICAgIHNlbGYuYnVpbGRib3QgPSBi
dWlsZGJvdC5CdWlsZEJvdCgpCisgICAgICAgICMgVGhlc2UgYmFzaWMgZW52aXJvbm1lbnQgYWJz
dHJhY3Rpb25zIHNob3VsZCBiZSBhIHNlcGFyYXRlIGxvd2VyLWxldmVsIG9iamVjdC4KKyAgICAg
ICAgIyBBbHRlcm5hdGl2ZWx5IHRoZSByZXN0IG9mIHRoZSBvYmplY3RzIGluIEhvc3Qgc2hvdWxk
IGp1c3QgbW92ZSB1cCB0byBhIGhpZ2hlciBhYnN0cmFjdGlvbi4KICAgICAgICAgc2VsZi5leGVj
dXRpdmUgPSBleGVjdXRpdmUuRXhlY3V0aXZlKCkKLSAgICAgICAgc2VsZi53ZWIgPSB3ZWIuV2Vi
KCkKLSAgICAgICAgc2VsZi5faXJjID0gTm9uZQogICAgICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBm
aWxlc3lzdGVtLkZpbGVTeXN0ZW0oKQotICAgICAgICBzZWxmLndvcmtzcGFjZSA9IHdvcmtzcGFj
ZS5Xb3Jrc3BhY2Uoc2VsZi5maWxlc3lzdGVtLCBzZWxmLmV4ZWN1dGl2ZSkKLSAgICAgICAgc2Vs
Zi5fcG9ydCA9IE5vbmUKICAgICAgICAgc2VsZi51c2VyID0gdXNlci5Vc2VyKCkKKyAgICAgICAg
c2VsZi5wbGF0Zm9ybSA9IHBsYXRmb3JtaW5mby5QbGF0Zm9ybUluZm8oKQorICAgICAgICBzZWxm
LndvcmtzcGFjZSA9IHdvcmtzcGFjZS5Xb3Jrc3BhY2Uoc2VsZi5maWxlc3lzdGVtLCBzZWxmLmV4
ZWN1dGl2ZSkKKyAgICAgICAgc2VsZi53ZWIgPSB3ZWIuV2ViKCkKKworICAgICAgICAjIEZJWE1F
OiBDaGVja291dCBzaG91bGQgb3duIHRoZSBzY20gb2JqZWN0LgogICAgICAgICBzZWxmLl9zY20g
PSBOb25lCiAgICAgICAgIHNlbGYuX2NoZWNrb3V0ID0gTm9uZQorCisgICAgICAgICMgRXZlcnl0
aGluZyBiZWxvdyB0aGlzIGxpbmUgaXMgV2ViS2l0LXNwZWNpZmljIGFuZCBiZWxvbmdzIG9uIGEg
aGlnaGVyLWxldmVsIG9iamVjdC4KKyAgICAgICAgc2VsZi5idWdzID0gYnVnemlsbGEuQnVnemls
bGEoKQorICAgICAgICBzZWxmLmJ1aWxkYm90ID0gYnVpbGRib3QuQnVpbGRCb3QoKQorCisgICAg
ICAgIHNlbGYuX2lyYyA9IE5vbmUKKyAgICAgICAgc2VsZi5fcG9ydCA9IE5vbmUKKwogICAgICAg
ICBzZWxmLnN0YXR1c19zZXJ2ZXIgPSBzdGF0dXNzZXJ2ZXIuU3RhdHVzU2VydmVyKCkKKwogICAg
ICAgICAjIEZJWE1FOiBVbmZvcnR1bmF0ZWx5IFBvcnQgb2JqZWN0cyBhcmUgY3VycmVudGx5IHRo
ZSBjZW50cmFsLWRpc3BhdGNoIG9iamVjdHMgb2YgdGhlIE5SV1Qgd29ybGQuCiAgICAgICAgICMg
SW4gb3JkZXIgdG8gaW5zdGFudGlhdGUgYSBwb3J0IGNvcnJlY3RseSwgd2UgaGF2ZSB0byBwYXNz
IGl0IGF0IGxlYXN0IGFuIGV4ZWN1dGl2ZSwgdXNlciwgc2NtLCBhbmQgZmlsZXN5c3RlbQogICAg
ICAgICAjIHNvIGZvciBub3cgd2UganVzdCBwYXNzIGFsb25nIHRoZSB3aG9sZSBIb3N0IG9iamVj
dC4KICAgICAgICAgc2VsZi5wb3J0X2ZhY3RvcnkgPSBQb3J0RmFjdG9yeShzZWxmKQotICAgICAg
ICBzZWxmLnBsYXRmb3JtID0gcGxhdGZvcm1pbmZvLlBsYXRmb3JtSW5mbygpCiAKICAgICBkZWYg
X2luaXRpYWxpemVfc2NtKHNlbGYsIHBhdGNoX2RpcmVjdG9yaWVzPU5vbmUpOgogICAgICAgICBz
ZWxmLl9zY20gPSBkZWZhdWx0X3NjbShwYXRjaF9kaXJlY3RvcmllcykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2hvc3RfbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2hvc3RfbW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjdiZTEyNzY2NDUzODA2
YmU3MDdhOWIxNmJjZmY5N2JjMjgxOGJhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vaG9zdF9tb2NrLnB5CkBAIC0wLDAgKzEsOTkgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitpbXBvcnQgdGhyZWFkaW5nCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6
aWxsYS5idWd6aWxsYV9tb2NrIGltcG9ydCBNb2NrQnVnemlsbGEKK2Zyb20gd2Via2l0cHkuY29t
bW9uLm5ldC5zdGF0dXNzZXJ2ZXJfbW9jayBpbXBvcnQgTW9ja1N0YXR1c1NlcnZlcgorZnJvbSB3
ZWJraXRweS5jb21tb24ubmV0LmJ1aWxkYm90LmJ1aWxkYm90X21vY2sgaW1wb3J0IE1vY2tCdWls
ZEJvdAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBN
b2NrRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlcl9tb2NrIGltcG9y
dCBNb2NrVXNlcgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBp
bXBvcnQgTW9ja0ZpbGVTeXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wbGF0Zm9y
bWluZm9fbW9jayBpbXBvcnQgTW9ja1BsYXRmb3JtSW5mbworZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLndvcmtzcGFjZV9tb2NrIGltcG9ydCBNb2NrV29ya3NwYWNlCitmcm9tIHdlYmtpdHB5
LmNvbW1vbi5uZXQud2ViX21vY2sgaW1wb3J0IE1vY2tXZWIKK2Zyb20gd2Via2l0cHkuY29tbW9u
LmNoZWNrb3V0LmNoZWNrb3V0X21vY2sgaW1wb3J0IE1vY2tDaGVja291dAorZnJvbSB3ZWJraXRw
eS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV9tb2NrIGltcG9ydCBNb2NrU0NNCitmcm9tIHdlYmtp
dHB5LmNvbW1vbi53YXRjaGxpc3Qud2F0Y2hsaXN0X21vY2sgaW1wb3J0IE1vY2tXYXRjaExpc3QK
KworIyBGSVhNRTogT2xkLXN0eWxlICJQb3J0cyIgbmVlZCB0byBkaWUgYW5kIGJlIHJlcGxhY2Vk
IGJ5IG1vZGVybiBsYXlvdXRfdGVzdHMucG9ydCB3aGljaCBuZWVkcyB0byBtb3ZlIHRvIGNvbW1v
bi4KK2Zyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5wb3J0c19tb2NrIGltcG9ydCBNb2NrUG9y
dAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5mYWN0b3J5IGltcG9ydCBQb3J0RmFj
dG9yeQorCisKK2NsYXNzIE1vY2tIb3N0KG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGxvZ19leGVjdXRpdmU9RmFsc2UsIGV4ZWN1dGl2ZV90aHJvd3Nfd2hlbl9ydW49Tm9uZSk6Cisg
ICAgICAgIHNlbGYuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPWxvZ19leGVj
dXRpdmUsIHNob3VsZF90aHJvd193aGVuX3J1bj1leGVjdXRpdmVfdGhyb3dzX3doZW5fcnVuKQor
ICAgICAgICBzZWxmLnVzZXIgPSBNb2NrVXNlcigpCisgICAgICAgIHNlbGYucGxhdGZvcm0gPSBN
b2NrUGxhdGZvcm1JbmZvKCkKKyAgICAgICAgc2VsZi53b3Jrc3BhY2UgPSBNb2NrV29ya3NwYWNl
KCkKKyAgICAgICAgc2VsZi53ZWIgPSBNb2NrV2ViKCkKKworICAgICAgICBzZWxmLl9jaGVja291
dCA9IE1vY2tDaGVja291dCgpCisgICAgICAgIHNlbGYuX3NjbSA9IE1vY2tTQ00oKQorICAgICAg
ICAjIFZhcmlvdXMgcGllY2VzIG9mIGNvZGUgKHdyb25nbHkpIGNhbGwgZmlsZXN5c3RlbS5jaGRp
cihjaGVja291dF9yb290KS4KKyAgICAgICAgIyBNYWtpbmcgdGhlIGNoZWNrb3V0X3Jvb3QgZXhp
c3QgaW4gdGhlIG1vY2sgZmlsZXN5c3RlbSBtYWtlcyB0aGF0IGNoZGlyIG5vdCByYWlzZS4KKyAg
ICAgICAgc2VsZi5maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oZGlycz1zZXQoW3NlbGYuX3Nj
bS5jaGVja291dF9yb290XSkpCisKKyAgICAgICAgc2VsZi5idWdzID0gTW9ja0J1Z3ppbGxhKCkK
KyAgICAgICAgc2VsZi5idWlsZGJvdCA9IE1vY2tCdWlsZEJvdCgpCisgICAgICAgIHNlbGYuX2No
cm9taXVtX2J1aWxkYm90ID0gTW9ja0J1aWxkQm90KCkKKyAgICAgICAgc2VsZi5zdGF0dXNfc2Vy
dmVyID0gTW9ja1N0YXR1c1NlcnZlcigpCisKKyAgICAgICAgc2VsZi5faXJjID0gTm9uZQorICAg
ICAgICBzZWxmLmlyY19wYXNzd29yZCA9ICJNT0NLIGlyYyBwYXNzd29yZCIKKyAgICAgICAgc2Vs
Zi53YWtldXBfZXZlbnQgPSB0aHJlYWRpbmcuRXZlbnQoKQorCisgICAgICAgIHNlbGYuX3BvcnQg
PSBNb2NrUG9ydCgpCisgICAgICAgICMgTm90ZTogV2UncmUgdXNpbmcgYSByZWFsIFBvcnRGYWN0
b3J5IGhlcmUuICBUZXN0cyB3aGljaCBkb24ndCB3aXNoIHRvIGRlcGVuZAorICAgICAgICAjIG9u
IHRoZSBsaXN0IG9mIGtub3duIHBvcnRzIHNob3VsZCBvdmVycmlkZSB0aGlzIHdpdGggYSBNb2Nr
UG9ydEZhY3RvcnkuCisgICAgICAgIHNlbGYucG9ydF9mYWN0b3J5ID0gUG9ydEZhY3Rvcnkoc2Vs
ZikKKworICAgICAgICBzZWxmLl93YXRjaF9saXN0ID0gTW9ja1dhdGNoTGlzdCgpCisKKyAgICBk
ZWYgc2NtKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fc2NtCisKKyAgICBkZWYgY2hlY2tv
dXQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jaGVja291dAorCisgICAgZGVmIHBvcnQo
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9wb3J0CisKKyAgICBkZWYgY2hyb21pdW1fYnVp
bGRib3Qoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jaHJvbWl1bV9idWlsZGJvdAorCisg
ICAgZGVmIHdhdGNoX2xpc3Qoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl93YXRjaF9saXN0
CisKKyAgICBkZWYgZW5zdXJlX2lyY19jb25uZWN0ZWQoc2VsZiwgZGVsZWdhdGUpOgorICAgICAg
ICBpZiBub3Qgc2VsZi5faXJjOgorICAgICAgICAgICAgc2VsZi5faXJjID0gTW9ja0lSQygpCisK
KyAgICBkZWYgaXJjKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faXJjCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfbW9j
ay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxs
YV9tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlNTgzYTdiNGVjZmFhOWU2NDFhYmJiZmMwMjk1NWE4OWQx
NWE0ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvYnVnemlsbGEvYnVnemlsbGFfbW9jay5weQpAQCAtMCwwICsxLDM5MyBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK2ltcG9ydCBkYXRldGltZQorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29t
bWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdCwgUmV2aWV3ZXIKKworCitkZWYgX2lkX3RvX29i
amVjdF9kaWN0aW9uYXJ5KCpvYmplY3RzKToKKyAgICBkaWN0aW9uYXJ5ID0ge30KKyAgICBmb3Ig
dGhpbmcgaW4gb2JqZWN0czoKKyAgICAgICAgZGljdGlvbmFyeVt0aGluZ1siaWQiXV0gPSB0aGlu
ZworICAgIHJldHVybiBkaWN0aW9uYXJ5CisKKyMgVGVzdGluZworCisKK19wYXRjaDEgPSB7Cisg
ICAgImlkIjogMTAwMDAsCisgICAgImJ1Z19pZCI6IDUwMDAwLAorICAgICJ1cmwiOiAiaHR0cDov
L2V4YW1wbGUuY29tLzEwMDAwIiwKKyAgICAibmFtZSI6ICJQYXRjaDEiLAorICAgICJpc19vYnNv
bGV0ZSI6IEZhbHNlLAorICAgICJpc19wYXRjaCI6IFRydWUsCisgICAgInJldmlldyI6ICIrIiwK
KyAgICAicmV2aWV3ZXJfZW1haWwiOiAiZm9vQGJhci5jb20iLAorICAgICJjb21taXQtcXVldWUi
OiAiKyIsCisgICAgImNvbW1pdHRlcl9lbWFpbCI6ICJmb29AYmFyLmNvbSIsCisgICAgImF0dGFj
aGVyX2VtYWlsIjogIkNvbnRyaWJ1dGVyMSIsCit9CisKKworX3BhdGNoMiA9IHsKKyAgICAiaWQi
OiAxMDAwMSwKKyAgICAiYnVnX2lkIjogNTAwMDAsCisgICAgInVybCI6ICJodHRwOi8vZXhhbXBs
ZS5jb20vMTAwMDEiLAorICAgICJuYW1lIjogIlBhdGNoMiIsCisgICAgImlzX29ic29sZXRlIjog
RmFsc2UsCisgICAgImlzX3BhdGNoIjogVHJ1ZSwKKyAgICAicmV2aWV3IjogIisiLAorICAgICJy
ZXZpZXdlcl9lbWFpbCI6ICJyZXZpZXdlcjJAd2Via2l0Lm9yZyIsCisgICAgImNvbW1pdC1xdWV1
ZSI6ICIrIiwKKyAgICAiY29tbWl0dGVyX2VtYWlsIjogIm5vbi1jb21taXR0ZXJAZXhhbXBsZS5j
b20iLAorICAgICJhdHRhY2hlcl9lbWFpbCI6ICJlcmljQHdlYmtpdC5vcmciLAorfQorCisKK19w
YXRjaDMgPSB7CisgICAgImlkIjogMTAwMDIsCisgICAgImJ1Z19pZCI6IDUwMDAxLAorICAgICJ1
cmwiOiAiaHR0cDovL2V4YW1wbGUuY29tLzEwMDAyIiwKKyAgICAibmFtZSI6ICJQYXRjaDMiLAor
ICAgICJpc19vYnNvbGV0ZSI6IEZhbHNlLAorICAgICJpc19wYXRjaCI6IFRydWUsCisgICAgInJl
dmlldyI6ICI/IiwKKyAgICAiYXR0YWNoZXJfZW1haWwiOiAiZXJpY0B3ZWJraXQub3JnIiwKK30K
KworCitfcGF0Y2g0ID0geworICAgICJpZCI6IDEwMDAzLAorICAgICJidWdfaWQiOiA1MDAwMywK
KyAgICAidXJsIjogImh0dHA6Ly9leGFtcGxlLmNvbS8xMDAwMiIsCisgICAgIm5hbWUiOiAiUGF0
Y2gzIiwKKyAgICAiaXNfb2Jzb2xldGUiOiBGYWxzZSwKKyAgICAiaXNfcGF0Y2giOiBUcnVlLAor
ICAgICJyZXZpZXciOiAiKyIsCisgICAgImNvbW1pdC1xdWV1ZSI6ICI/IiwKKyAgICAicmV2aWV3
ZXJfZW1haWwiOiAiZm9vQGJhci5jb20iLAorICAgICJhdHRhY2hlcl9lbWFpbCI6ICJDb250cmli
dXRlcjIiLAorfQorCisKK19wYXRjaDUgPSB7CisgICAgImlkIjogMTAwMDQsCisgICAgImJ1Z19p
ZCI6IDUwMDAzLAorICAgICJ1cmwiOiAiaHR0cDovL2V4YW1wbGUuY29tLzEwMDAyIiwKKyAgICAi
bmFtZSI6ICJQYXRjaDUiLAorICAgICJpc19vYnNvbGV0ZSI6IEZhbHNlLAorICAgICJpc19wYXRj
aCI6IFRydWUsCisgICAgInJldmlldyI6ICIrIiwKKyAgICAicmV2aWV3ZXJfZW1haWwiOiAiZm9v
QGJhci5jb20iLAorICAgICJhdHRhY2hlcl9lbWFpbCI6ICJlcmljQHdlYmtpdC5vcmciLAorfQor
CisKK19wYXRjaDYgPSB7ICMgVmFsaWQgY29tbWl0dGVyLCBidXQgbm8gcmV2aWV3ZXIuCisgICAg
ImlkIjogMTAwMDUsCisgICAgImJ1Z19pZCI6IDUwMDAzLAorICAgICJ1cmwiOiAiaHR0cDovL2V4
YW1wbGUuY29tLzEwMDAyIiwKKyAgICAibmFtZSI6ICJST0xMT1VUIG9mIHIzNDg5IiwKKyAgICAi
aXNfb2Jzb2xldGUiOiBGYWxzZSwKKyAgICAiaXNfcGF0Y2giOiBUcnVlLAorICAgICJjb21taXQt
cXVldWUiOiAiKyIsCisgICAgImNvbW1pdHRlcl9lbWFpbCI6ICJmb29AYmFyLmNvbSIsCisgICAg
ImF0dGFjaGVyX2VtYWlsIjogImVyaWNAd2Via2l0Lm9yZyIsCit9CisKKworX3BhdGNoNyA9IHsg
IyBWYWxpZCByZXZpZXcsIHBhdGNoIGlzIG1hcmtlZCBvYnNvbGV0ZS4KKyAgICAiaWQiOiAxMDAw
NiwKKyAgICAiYnVnX2lkIjogNTAwMDIsCisgICAgInVybCI6ICJodHRwOi8vZXhhbXBsZS5jb20v
MTAwMDIiLAorICAgICJuYW1lIjogIlBhdGNoNyIsCisgICAgImlzX29ic29sZXRlIjogVHJ1ZSwK
KyAgICAiaXNfcGF0Y2giOiBUcnVlLAorICAgICJyZXZpZXciOiAiKyIsCisgICAgInJldmlld2Vy
X2VtYWlsIjogImZvb0BiYXIuY29tIiwKKyAgICAiYXR0YWNoZXJfZW1haWwiOiAiZXJpY0B3ZWJr
aXQub3JnIiwKK30KKworCisjIFRoaXMgbWF0Y2hlcyBvbmUgb2YgQnVnLnVuYXNzaWduZWRfZW1h
aWxzCitfdW5hc3NpZ25lZF9lbWFpbCA9ICJ3ZWJraXQtdW5hc3NpZ25lZEBsaXN0cy53ZWJraXQu
b3JnIgorIyBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIEZsYWt5VGVzdFJlcG9ydGVyIHRvIGJlbGll
dmUgdGhlIGJ1ZworIyB3YXMgZmlsZWQgYnkgb25lIG9mIHRoZSB3ZWJraXRweSBib3RzLgorX2Nv
bW1pdF9xdWV1ZV9lbWFpbCA9ICJjb21taXQtcXVldWVAd2Via2l0Lm9yZyIKKworCitfYnVnMSA9
IHsKKyAgICAiaWQiOiA1MDAwMCwKKyAgICAidGl0bGUiOiAiQnVnIHdpdGggdHdvIHIrJ2QgYW5k
IGNxKydkIHBhdGNoZXMsIG9uZSBvZiB3aGljaCBoYXMgYW4gIgorICAgICAgICAgICAgICJpbnZh
bGlkIGNvbW1pdC1xdWV1ZSBzZXR0ZXIuIiwKKyAgICAicmVwb3J0ZXJfZW1haWwiOiAiZm9vQGZv
by5jb20iLAorICAgICJhc3NpZ25lZF90b19lbWFpbCI6IF91bmFzc2lnbmVkX2VtYWlsLAorICAg
ICJjY19lbWFpbHMiOiBbXSwKKyAgICAiYXR0YWNobWVudHMiOiBbX3BhdGNoMSwgX3BhdGNoMl0s
CisgICAgImJ1Z19zdGF0dXMiOiAiVU5DT05GSVJNRUQiLAorICAgICJjb21tZW50cyI6IFtdLAor
fQorCisKK19idWcyID0geworICAgICJpZCI6IDUwMDAxLAorICAgICJ0aXRsZSI6ICJCdWcgd2l0
aCBhIHBhdGNoIG5lZWRpbmcgcmV2aWV3LiIsCisgICAgInJlcG9ydGVyX2VtYWlsIjogImVyaWNA
d2Via2l0Lm9yZyIsCisgICAgImFzc2lnbmVkX3RvX2VtYWlsIjogImZvb0Bmb28uY29tIiwKKyAg
ICAiY2NfZW1haWxzIjogWyJhYmFydGhAd2Via2l0Lm9yZyIsIF0sCisgICAgImF0dGFjaG1lbnRz
IjogW19wYXRjaDNdLAorICAgICJidWdfc3RhdHVzIjogIkFTU0lHTkVEIiwKKyAgICAiY29tbWVu
dHMiOiBbeyJjb21tZW50X2RhdGUiOiAgZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMSwgNiwgMTEsIDks
IDQsIDMpLAorICAgICAgICAgICAgICAgICAgImNvbW1lbnRfZW1haWwiOiAiYmFyQGZvby5jb20i
LAorICAgICAgICAgICAgICAgICAgInRleHQiOiAiTWVzc2FnZTEuIiwKKyAgICAgICAgfSwKKyAg
ICBdLAorfQorCisKK19idWczID0geworICAgICJpZCI6IDUwMDAyLAorICAgICJ0aXRsZSI6ICJU
aGUgdGhpcmQgYnVnIiwKKyAgICAicmVwb3J0ZXJfZW1haWwiOiAiZm9vQGZvby5jb20iLAorICAg
ICJhc3NpZ25lZF90b19lbWFpbCI6IF91bmFzc2lnbmVkX2VtYWlsLAorICAgICJjY19lbWFpbHMi
OiBbXSwKKyAgICAiYXR0YWNobWVudHMiOiBbX3BhdGNoN10sCisgICAgImJ1Z19zdGF0dXMiOiAi
TkVXIiwKKyAgICAiY29tbWVudHMiOiBbXSwKK30KKworCitfYnVnNCA9IHsKKyAgICAiaWQiOiA1
MDAwMywKKyAgICAidGl0bGUiOiAiVGhlIGZvdXJ0aCBidWciLAorICAgICJyZXBvcnRlcl9lbWFp
bCI6ICJmb29AZm9vLmNvbSIsCisgICAgImFzc2lnbmVkX3RvX2VtYWlsIjogImZvb0Bmb28uY29t
IiwKKyAgICAiY2NfZW1haWxzIjogW10sCisgICAgImF0dGFjaG1lbnRzIjogW19wYXRjaDQsIF9w
YXRjaDUsIF9wYXRjaDZdLAorICAgICJidWdfc3RhdHVzIjogIlJFT1BFTkVEIiwKKyAgICAiY29t
bWVudHMiOiBbXSwKK30KKworCitfYnVnNSA9IHsKKyAgICAiaWQiOiA1MDAwNCwKKyAgICAidGl0
bGUiOiAiVGhlIGZpZnRoIGJ1ZyIsCisgICAgInJlcG9ydGVyX2VtYWlsIjogX2NvbW1pdF9xdWV1
ZV9lbWFpbCwKKyAgICAiYXNzaWduZWRfdG9fZW1haWwiOiAiZm9vQGZvby5jb20iLAorICAgICJj
Y19lbWFpbHMiOiBbXSwKKyAgICAiYXR0YWNobWVudHMiOiBbXSwKKyAgICAiYnVnX3N0YXR1cyI6
ICJSRVNPTFZFRCIsCisgICAgImR1cF9pZCI6IDUwMDAyLAorICAgICJjb21tZW50cyI6IFtdLAor
fQorCisKK2NsYXNzIE1vY2tCdWd6aWxsYVF1ZXJpZXMob2JqZWN0KToKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBidWd6aWxsYSk6CisgICAgICAgIHNlbGYuX2J1Z3ppbGxhID0gYnVnemlsbGEK
KworICAgIGRlZiBfYWxsX2J1Z3Moc2VsZik6CisgICAgICAgIHJldHVybiBtYXAobGFtYmRhIGJ1
Z19kaWN0aW9uYXJ5OiBCdWcoYnVnX2RpY3Rpb25hcnksIHNlbGYuX2J1Z3ppbGxhKSwKKyAgICAg
ICAgICAgICAgICAgICBzZWxmLl9idWd6aWxsYS5idWdfY2FjaGUudmFsdWVzKCkpCisKKyAgICBk
ZWYgZmV0Y2hfYnVnX2lkc19mcm9tX2NvbW1pdF9xdWV1ZShzZWxmKToKKyAgICAgICAgYnVnc193
aXRoX2NvbW1pdF9xdWV1ZWRfcGF0Y2hlcyA9IGZpbHRlcigKKyAgICAgICAgICAgICAgICBsYW1i
ZGEgYnVnOiBidWcuY29tbWl0X3F1ZXVlZF9wYXRjaGVzKCksCisgICAgICAgICAgICAgICAgc2Vs
Zi5fYWxsX2J1Z3MoKSkKKyAgICAgICAgcmV0dXJuIG1hcChsYW1iZGEgYnVnOiBidWcuaWQoKSwg
YnVnc193aXRoX2NvbW1pdF9xdWV1ZWRfcGF0Y2hlcykKKworICAgIGRlZiBmZXRjaF9hdHRhY2ht
ZW50X2lkc19mcm9tX3Jldmlld19xdWV1ZShzZWxmKToKKyAgICAgICAgdW5yZXZpZXdlZF9wYXRj
aGVzID0gc3VtKFtidWcudW5yZXZpZXdlZF9wYXRjaGVzKCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgYnVnIGluIHNlbGYuX2FsbF9idWdzKCldLCBbXSkKKyAgICAgICAg
cmV0dXJuIG1hcChsYW1iZGEgcGF0Y2g6IHBhdGNoLmlkKCksIHVucmV2aWV3ZWRfcGF0Y2hlcykK
KworICAgIGRlZiBmZXRjaF9wYXRjaGVzX2Zyb21fY29tbWl0X3F1ZXVlKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc3VtKFtidWcuY29tbWl0X3F1ZXVlZF9wYXRjaGVzKCkKKyAgICAgICAgICAgICAg
ICAgICAgZm9yIGJ1ZyBpbiBzZWxmLl9hbGxfYnVncygpXSwgW10pCisKKyAgICBkZWYgZmV0Y2hf
YnVnX2lkc19mcm9tX3BlbmRpbmdfY29tbWl0X2xpc3Qoc2VsZik6CisgICAgICAgIGJ1Z3Nfd2l0
aF9yZXZpZXdlZF9wYXRjaGVzID0gZmlsdGVyKGxhbWJkYSBidWc6IGJ1Zy5yZXZpZXdlZF9wYXRj
aGVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X2FsbF9idWdzKCkpCisgICAgICAgIGJ1Z19pZHMgPSBtYXAobGFtYmRhIGJ1ZzogYnVnLmlkKCks
IGJ1Z3Nfd2l0aF9yZXZpZXdlZF9wYXRjaGVzKQorICAgICAgICAjIE5PVEU6IFRoaXMgbWFudWFs
IGhhY2sgaGVyZSBpcyB0byBhbGxvdyB0ZXN0aW5nIGxvZ2dpbmcgaW4KKyAgICAgICAgIyB0ZXN0
X2Fzc2lnbl90b19jb21taXR0ZXIgdGhlIHJlYWwgcGVuZGluZy1jb21taXQgcXVlcnkgb24gYnVn
emlsbGEKKyAgICAgICAgIyB3aWxsIHJldHVybiBidWdzIHdpdGggcGF0Y2hlcyB3aGljaCBoYXZl
IHIrLCBidXQgYXJlIGFsc28gb2Jzb2xldGUuCisgICAgICAgIHJldHVybiBidWdfaWRzICsgWzUw
MDAyXQorCisgICAgZGVmIGZldGNoX3BhdGNoZXNfZnJvbV9wZW5kaW5nX2NvbW1pdF9saXN0KHNl
bGYpOgorICAgICAgICByZXR1cm4gc3VtKFtidWcucmV2aWV3ZWRfcGF0Y2hlcygpIGZvciBidWcg
aW4gc2VsZi5fYWxsX2J1Z3MoKV0sIFtdKQorCisgICAgZGVmIGZldGNoX2J1Z3NfbWF0Y2hpbmdf
c2VhcmNoKHNlbGYsIHNlYXJjaF9zdHJpbmcsIGF1dGhvcl9lbWFpbD1Ob25lKToKKyAgICAgICAg
cmV0dXJuIFtzZWxmLl9idWd6aWxsYS5mZXRjaF9idWcoNTAwMDQpLCBzZWxmLl9idWd6aWxsYS5m
ZXRjaF9idWcoNTAwMDMpXQorCisKK19tb2NrX3Jldmlld2VycyA9IFtSZXZpZXdlcigiRm9vIEJh
ciIsICJmb29AYmFyLmNvbSIpLAorICAgICAgICAgICAgICAgICAgIFJldmlld2VyKCJSZXZpZXdl
cjIiLCAicmV2aWV3ZXIyQHdlYmtpdC5vcmciKV0KKworCisjIEZJWE1FOiBCdWd6aWxsYSBpcyB0
aGUgd3JvbmcgTW9jay1wb2ludC4gIE9uY2Ugd2UgaGF2ZSBhIEJ1Z3ppbGxhTmV0d29yaworIyAg
ICAgICAgY2xhc3Mgd2Ugc2hvdWxkIG1vY2sgdGhhdCBpbnN0ZWFkLgorIyBNb3N0IG9mIHRoaXMg
Y2xhc3MgaXMganVzdCBjb3B5L3Bhc3RlIGZyb20gQnVnemlsbGEuCitjbGFzcyBNb2NrQnVnemls
bGEob2JqZWN0KToKKworICAgIGJ1Z19zZXJ2ZXJfdXJsID0gImh0dHA6Ly9leGFtcGxlLmNvbSIK
KworICAgIGJ1Z19jYWNoZSA9IF9pZF90b19vYmplY3RfZGljdGlvbmFyeShfYnVnMSwgX2J1ZzIs
IF9idWczLCBfYnVnNCwgX2J1ZzUpCisKKyAgICBhdHRhY2htZW50X2NhY2hlID0gX2lkX3RvX29i
amVjdF9kaWN0aW9uYXJ5KF9wYXRjaDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfcGF0Y2gyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX3BhdGNoMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9wYXRjaDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfcGF0Y2g1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX3BhdGNoNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9wYXRjaDcpCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6
CisgICAgICAgIHNlbGYucXVlcmllcyA9IE1vY2tCdWd6aWxsYVF1ZXJpZXMoc2VsZikKKyAgICAg
ICAgIyBGSVhNRTogVGhpcyBzaG91bGQgbW92ZSBvbnRvIHRoZSBIb3N0IG9iamVjdCwgYW5kIHdl
IHNob3VsZCB1c2UgYSBNb2NrQ29tbWl0dGVyTGlzdAorICAgICAgICBzZWxmLmNvbW1pdHRlcnMg
PSBDb21taXR0ZXJMaXN0KHJldmlld2Vycz1fbW9ja19yZXZpZXdlcnMpCisgICAgICAgIHNlbGYu
X292ZXJyaWRlX3BhdGNoID0gTm9uZQorCisgICAgZGVmIGNyZWF0ZV9idWcoc2VsZiwKKyAgICAg
ICAgICAgICAgICAgICBidWdfdGl0bGUsCisgICAgICAgICAgICAgICAgICAgYnVnX2Rlc2NyaXB0
aW9uLAorICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1Ob25lLAorICAgICAgICAgICAgICAg
ICAgIGRpZmY9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICBwYXRjaF9kZXNjcmlwdGlvbj1Ob25l
LAorICAgICAgICAgICAgICAgICAgIGNjPU5vbmUsCisgICAgICAgICAgICAgICAgICAgYmxvY2tl
ZD1Ob25lLAorICAgICAgICAgICAgICAgICAgIG1hcmtfZm9yX3Jldmlldz1GYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICBtYXJrX2Zvcl9jb21taXRfcXVldWU9RmFsc2UpOgorICAgICAgICBsb2co
Ik1PQ0sgY3JlYXRlX2J1ZyIpCisgICAgICAgIGxvZygiYnVnX3RpdGxlOiAlcyIgJSBidWdfdGl0
bGUpCisgICAgICAgIGxvZygiYnVnX2Rlc2NyaXB0aW9uOiAlcyIgJSBidWdfZGVzY3JpcHRpb24p
CisgICAgICAgIGlmIGNvbXBvbmVudDoKKyAgICAgICAgICAgIGxvZygiY29tcG9uZW50OiAlcyIg
JSBjb21wb25lbnQpCisgICAgICAgIGlmIGNjOgorICAgICAgICAgICAgbG9nKCJjYzogJXMiICUg
Y2MpCisgICAgICAgIGlmIGJsb2NrZWQ6CisgICAgICAgICAgICBsb2coImJsb2NrZWQ6ICVzIiAl
IGJsb2NrZWQpCisgICAgICAgIHJldHVybiA1MDAwNAorCisgICAgZGVmIHF1aXBzKHNlbGYpOgor
ICAgICAgICByZXR1cm4gWyJHb29kIGFydGlzdHMgY29weS4gR3JlYXQgYXJ0aXN0cyBzdGVhbC4g
LSBQYWJsbyBQaWNhc3NvIl0KKworICAgIGRlZiBmZXRjaF9idWcoc2VsZiwgYnVnX2lkKToKKyAg
ICAgICAgcmV0dXJuIEJ1ZyhzZWxmLmJ1Z19jYWNoZS5nZXQoaW50KGJ1Z19pZCkpLCBzZWxmKQor
CisgICAgZGVmIHNldF9vdmVycmlkZV9wYXRjaChzZWxmLCBwYXRjaCk6CisgICAgICAgIHNlbGYu
X292ZXJyaWRlX3BhdGNoID0gcGF0Y2gKKworICAgIGRlZiBmZXRjaF9hdHRhY2htZW50KHNlbGYs
IGF0dGFjaG1lbnRfaWQpOgorICAgICAgICBpZiBzZWxmLl9vdmVycmlkZV9wYXRjaDoKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9vdmVycmlkZV9wYXRjaAorCisgICAgICAgIGF0dGFjaG1lbnRf
ZGljdGlvbmFyeSA9IHNlbGYuYXR0YWNobWVudF9jYWNoZS5nZXQoYXR0YWNobWVudF9pZCkKKyAg
ICAgICAgaWYgbm90IGF0dGFjaG1lbnRfZGljdGlvbmFyeToKKyAgICAgICAgICAgIHByaW50ICJN
T0NLOiBmZXRjaF9hdHRhY2htZW50OiAlcyBpcyBub3QgYSBrbm93biBhdHRhY2htZW50IGlkIiAl
IGF0dGFjaG1lbnRfaWQKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGJ1ZyA9IHNl
bGYuZmV0Y2hfYnVnKGF0dGFjaG1lbnRfZGljdGlvbmFyeVsiYnVnX2lkIl0pCisgICAgICAgIGZv
ciBhdHRhY2htZW50IGluIGJ1Zy5hdHRhY2htZW50cyhpbmNsdWRlX29ic29sZXRlPVRydWUpOgor
ICAgICAgICAgICAgaWYgYXR0YWNobWVudC5pZCgpID09IGludChhdHRhY2htZW50X2lkKToKKyAg
ICAgICAgICAgICAgICByZXR1cm4gYXR0YWNobWVudAorCisgICAgZGVmIGJ1Z191cmxfZm9yX2J1
Z19pZChzZWxmLCBidWdfaWQpOgorICAgICAgICByZXR1cm4gIiVzLyVzIiAlIChzZWxmLmJ1Z19z
ZXJ2ZXJfdXJsLCBidWdfaWQpCisKKyAgICBkZWYgZmV0Y2hfYnVnX2RpY3Rpb25hcnkoc2VsZiwg
YnVnX2lkKToKKyAgICAgICAgcmV0dXJuIHNlbGYuYnVnX2NhY2hlLmdldChidWdfaWQpCisKKyAg
ICBkZWYgYXR0YWNobWVudF91cmxfZm9yX2lkKHNlbGYsIGF0dGFjaG1lbnRfaWQsIGFjdGlvbj0i
dmlldyIpOgorICAgICAgICBhY3Rpb25fcGFyYW0gPSAiIgorICAgICAgICBpZiBhY3Rpb24gYW5k
IGFjdGlvbiAhPSAidmlldyI6CisgICAgICAgICAgICBhY3Rpb25fcGFyYW0gPSAiJmFjdGlvbj0l
cyIgJSBhY3Rpb24KKyAgICAgICAgcmV0dXJuICIlcy8lcyVzIiAlIChzZWxmLmJ1Z19zZXJ2ZXJf
dXJsLCBhdHRhY2htZW50X2lkLCBhY3Rpb25fcGFyYW0pCisKKyAgICBkZWYgcmVhc3NpZ25fYnVn
KHNlbGYsIGJ1Z19pZCwgYXNzaWduZWU9Tm9uZSwgY29tbWVudF90ZXh0PU5vbmUpOgorICAgICAg
ICBsb2coIk1PQ0sgcmVhc3NpZ25fYnVnOiBidWdfaWQ9JXMsIGFzc2lnbmVlPSVzIiAlIChidWdf
aWQsIGFzc2lnbmVlKSkKKyAgICAgICAgaWYgY29tbWVudF90ZXh0OgorICAgICAgICAgICAgbG9n
KCItLSBCZWdpbiBjb21tZW50IC0tIikKKyAgICAgICAgICAgIGxvZyhjb21tZW50X3RleHQpCisg
ICAgICAgICAgICBsb2coIi0tIEVuZCBjb21tZW50IC0tIikKKworICAgIGRlZiBzZXRfZmxhZ19v
bl9hdHRhY2htZW50KHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNo
bWVudF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnX25hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb21tZW50X3RleHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhZGRpdGlvbmFsX2NvbW1lbnRfdGV4dD1Ob25lKToKKyAgICAgICAgbG9nKCJNT0NL
IHNldHRpbmcgZmxhZyAnJXMnIHRvICclcycgb24gYXR0YWNobWVudCAnJXMnIHdpdGggY29tbWVu
dCAnJXMnIGFuZCBhZGRpdGlvbmFsIGNvbW1lbnQgJyVzJyIgJSAoCisgICAgICAgICAgICBmbGFn
X25hbWUsIGZsYWdfdmFsdWUsIGF0dGFjaG1lbnRfaWQsIGNvbW1lbnRfdGV4dCwgYWRkaXRpb25h
bF9jb21tZW50X3RleHQpKQorCisgICAgZGVmIHBvc3RfY29tbWVudF90b19idWcoc2VsZiwgYnVn
X2lkLCBjb21tZW50X3RleHQsIGNjPU5vbmUpOgorICAgICAgICBsb2coIk1PQ0sgYnVnIGNvbW1l
bnQ6IGJ1Z19pZD0lcywgY2M9JXNcbi0tLSBCZWdpbiBjb21tZW50IC0tLVxuJXNcbi0tLSBFbmQg
Y29tbWVudCAtLS1cbiIgJSAoCisgICAgICAgICAgICBidWdfaWQsIGNjLCBjb21tZW50X3RleHQp
KQorCisgICAgZGVmIGFkZF9hdHRhY2htZW50X3RvX2J1ZyhzZWxmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnVnX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmls
ZV9vcl9zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPU5vbmUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb21tZW50X3RleHQ9Tm9uZSk6CisgICAgICAgIGxvZygiTU9D
SyBhZGRfYXR0YWNobWVudF90b19idWc6IGJ1Z19pZD0lcywgZGVzY3JpcHRpb249JXMgZmlsZW5h
bWU9JXMiICUgKGJ1Z19pZCwgZGVzY3JpcHRpb24sIGZpbGVuYW1lKSkKKyAgICAgICAgaWYgY29t
bWVudF90ZXh0OgorICAgICAgICAgICAgbG9nKCItLSBCZWdpbiBjb21tZW50IC0tIikKKyAgICAg
ICAgICAgIGxvZyhjb21tZW50X3RleHQpCisgICAgICAgICAgICBsb2coIi0tIEVuZCBjb21tZW50
IC0tIikKKworICAgIGRlZiBhZGRfcGF0Y2hfdG9fYnVnKHNlbGYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgYnVnX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbWVudF90ZXh0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFya19mb3JfcmV2
aWV3PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtfZm9yX2NvbW1pdF9xdWV1
ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrX2Zvcl9sYW5kaW5nPUZhbHNl
KToKKyAgICAgICAgbG9nKCJNT0NLIGFkZF9wYXRjaF90b19idWc6IGJ1Z19pZD0lcywgZGVzY3Jp
cHRpb249JXMsIG1hcmtfZm9yX3Jldmlldz0lcywgbWFya19mb3JfY29tbWl0X3F1ZXVlPSVzLCBt
YXJrX2Zvcl9sYW5kaW5nPSVzIiAlCisgICAgICAgICAgICAoYnVnX2lkLCBkZXNjcmlwdGlvbiwg
bWFya19mb3JfcmV2aWV3LCBtYXJrX2Zvcl9jb21taXRfcXVldWUsIG1hcmtfZm9yX2xhbmRpbmcp
KQorICAgICAgICBpZiBjb21tZW50X3RleHQ6CisgICAgICAgICAgICBsb2coIi0tIEJlZ2luIGNv
bW1lbnQgLS0iKQorICAgICAgICAgICAgbG9nKGNvbW1lbnRfdGV4dCkKKyAgICAgICAgICAgIGxv
ZygiLS0gRW5kIGNvbW1lbnQgLS0iKQorCisgICAgZGVmIGFkZF9jY190b19idWcoc2VsZiwgYnVn
X2lkLCBjY3MpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgb2Jzb2xldGVfYXR0YWNobWVudChz
ZWxmLCBhdHRhY2htZW50X2lkLCBtZXNzYWdlPU5vbmUpOgorICAgICAgICBwYXNzCisKKyAgICBk
ZWYgcmVvcGVuX2J1ZyhzZWxmLCBidWdfaWQsIG1lc3NhZ2UpOgorICAgICAgICBwYXNzCisKKyAg
ICBkZWYgY2xvc2VfYnVnX2FzX2ZpeGVkKHNlbGYsIGJ1Z19pZCwgbWVzc2FnZSk6CisgICAgICAg
IHBhc3MKKworICAgIGRlZiBjbGVhcl9hdHRhY2htZW50X2ZsYWdzKHNlbGYsIGF0dGFjaG1lbnRf
aWQsIG1lc3NhZ2UpOgorICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkK
aW5kZXggM2Q0MzRkZmNjZDM1MGYyN2RjOWU3ZGU5MzA2ZmE5Mzk2NWQ2YmM1Ni4uZGU5NmZhMTYw
NjA3ODNmNzhhYzdmOTJlZWY5MDdmMmIzYWNhZjNkMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0
dGVzdC5weQpAQCAtMzQsNyArMzQsNyBAQCBmcm9tIC5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEs
IEJ1Z3ppbGxhUXVlcmllcywgRWRpdFVzZXJzUGFyc2VyCiAKIGZyb20gd2Via2l0cHkuY29tbW9u
LmNoZWNrb3V0LmNoYW5nZWxvZyBpbXBvcnQgcGFyc2VfYnVnX2lkCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJr
aXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrQnJvd3NlcgorZnJvbSB3ZWJraXRweS5jb21t
b24ubmV0LndlYl9tb2NrIGltcG9ydCBNb2NrQnJvd3NlcgogZnJvbSB3ZWJraXRweS50aGlyZHBh
cnR5Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxT
b3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdF9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90X21vY2sucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTA2NDAxMmIzN2I3ZmFmZDMzY2FlYjdhZWI1Y2JlOGZmZjJkZWI0MgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJv
dF9tb2NrLnB5CkBAIC0wLDAgKzEsMTE1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitjbGFzcyBNb2Nr
QnVpbGRlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAg
c2VsZi5fbmFtZSA9IG5hbWUKKworICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5fbmFtZQorCisgICAgZGVmIHJlc3VsdHNfdXJsKHNlbGYpOgorICAgICAgICByZXR1cm4g
Imh0dHA6Ly9leGFtcGxlLmNvbS9idWlsZGVycy8lcy9yZXN1bHRzIiAlIHNlbGYubmFtZSgpCisK
KyAgICBkZWYgYWNjdW11bGF0ZWRfcmVzdWx0c191cmwoc2VsZik6CisgICAgICAgIHJldHVybiAi
aHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvJXMvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1
bHRzIiAlIHNlbGYubmFtZSgpCisKKyAgICBkZWYgZm9yY2VfYnVpbGQoc2VsZiwgdXNlcm5hbWUs
IGNvbW1lbnRzKToKKyAgICAgICAgbG9nKCJNT0NLOiBmb3JjZV9idWlsZDogbmFtZT0lcywgdXNl
cm5hbWU9JXMsIGNvbW1lbnRzPSVzIiAlICgKKyAgICAgICAgICAgIHNlbGYuX25hbWUsIHVzZXJu
YW1lLCBjb21tZW50cykpCisKKworY2xhc3MgTW9ja0ZhaWx1cmVNYXAob2JqZWN0KToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgYnVpbGRib3QpOgorICAgICAgICBzZWxmLl9idWlsZGJvdCA9IGJ1
aWxkYm90CisKKyAgICBkZWYgaXNfZW1wdHkoc2VsZik6CisgICAgICAgIHJldHVybiBGYWxzZQor
CisgICAgZGVmIGZpbHRlcl9vdXRfb2xkX2ZhaWx1cmVzKHNlbGYsIGlzX29sZF9yZXZpc2lvbik6
CisgICAgICAgIHBhc3MKKworICAgIGRlZiBmYWlsaW5nX3JldmlzaW9ucyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIFsyOTgzN10KKworICAgIGRlZiBidWlsZGVyc19mYWlsaW5nX2ZvcihzZWxmLCBy
ZXZpc2lvbik6CisgICAgICAgIHJldHVybiBbc2VsZi5fYnVpbGRib3QuYnVpbGRlcl93aXRoX25h
bWUoIkJ1aWxkZXIxIildCisKKyAgICBkZWYgdGVzdHNfZmFpbGluZ19mb3Ioc2VsZiwgcmV2aXNp
b24pOgorICAgICAgICByZXR1cm4gWyJtb2NrLXRlc3QtMSJdCisKKyAgICBkZWYgZmFpbGluZ190
ZXN0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNldChbIm1vY2stdGVzdC0xIl0pCisKKworY2xh
c3MgTW9ja0J1aWxkQm90KG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAg
ICBzZWxmLl9tb2NrX2J1aWxkZXIxX3N0YXR1cyA9IHsKKyAgICAgICAgICAgICJuYW1lIjogIkJ1
aWxkZXIxIiwKKyAgICAgICAgICAgICJpc19ncmVlbiI6IFRydWUsCisgICAgICAgICAgICAiYWN0
aXZpdHkiOiAiYnVpbGRpbmciLAorICAgICAgICB9CisgICAgICAgIHNlbGYuX21vY2tfYnVpbGRl
cjJfc3RhdHVzID0geworICAgICAgICAgICAgIm5hbWUiOiAiQnVpbGRlcjIiLAorICAgICAgICAg
ICAgImlzX2dyZWVuIjogVHJ1ZSwKKyAgICAgICAgICAgICJhY3Rpdml0eSI6ICJpZGxlIiwKKyAg
ICAgICAgfQorCisgICAgZGVmIGJ1aWxkZXJfd2l0aF9uYW1lKHNlbGYsIG5hbWUpOgorICAgICAg
ICByZXR1cm4gTW9ja0J1aWxkZXIobmFtZSkKKworICAgIGRlZiBidWlsZGVyX3N0YXR1c2VzKHNl
bGYpOgorICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgc2VsZi5fbW9ja19idWlsZGVyMV9z
dGF0dXMsCisgICAgICAgICAgICBzZWxmLl9tb2NrX2J1aWxkZXIyX3N0YXR1cywKKyAgICAgICAg
XQorCisgICAgZGVmIHJlZF9jb3JlX2J1aWxkZXJzX25hbWVzKHNlbGYpOgorICAgICAgICBpZiBu
b3Qgc2VsZi5fbW9ja19idWlsZGVyMl9zdGF0dXNbImlzX2dyZWVuIl06CisgICAgICAgICAgICBy
ZXR1cm4gW3NlbGYuX21vY2tfYnVpbGRlcjJfc3RhdHVzWyJuYW1lIl1dCisgICAgICAgIHJldHVy
biBbXQorCisgICAgZGVmIHJlZF9jb3JlX2J1aWxkZXJzKHNlbGYpOgorICAgICAgICBpZiBub3Qg
c2VsZi5fbW9ja19idWlsZGVyMl9zdGF0dXNbImlzX2dyZWVuIl06CisgICAgICAgICAgICByZXR1
cm4gW3NlbGYuX21vY2tfYnVpbGRlcjJfc3RhdHVzXQorICAgICAgICByZXR1cm4gW10KKworICAg
IGRlZiBpZGxlX3JlZF9jb3JlX2J1aWxkZXJzKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5f
bW9ja19idWlsZGVyMl9zdGF0dXNbImlzX2dyZWVuIl06CisgICAgICAgICAgICByZXR1cm4gW3Nl
bGYuX21vY2tfYnVpbGRlcjJfc3RhdHVzXQorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBs
YXN0X2dyZWVuX3JldmlzaW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gOTQ3OQorCisgICAgZGVm
IGxpZ2h0X3RyZWVfb25fZmlyZShzZWxmKToKKyAgICAgICAgc2VsZi5fbW9ja19idWlsZGVyMl9z
dGF0dXNbImlzX2dyZWVuIl0gPSBGYWxzZQorCisgICAgZGVmIGZhaWx1cmVfbWFwKHNlbGYpOgor
ICAgICAgICByZXR1cm4gTW9ja0ZhaWx1cmVNYXAoc2VsZikKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvY3Jl
ZGVudGlhbHNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
Y3JlZGVudGlhbHNfdW5pdHRlc3QucHkKaW5kZXggYmQxM2M5YTgzMzdmMjFjMTI0ZTllNmI5NWNh
NDc3ZDBjMmVhNzNlMi4uMDA3NWRkOTYwMWEyYzYzZjhiZjlmZDMxNjE3NDMzMzBjNGY0ZDk1YyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2NyZWRlbnRpYWxz
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVk
ZW50aWFsc191bml0dGVzdC5weQpAQCAtMzUsNyArMzUsOSBAQCBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5uZXQuY3JlZGVudGlhbHMgaW1wb3J0IENyZWRlbnRpYWxzCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5
LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29s
IGltcG9ydCBNb2NrT3B0aW9ucywgTW9ja1VzZXIsIE1vY2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0
cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKK2Zyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLnVzZXJfbW9jayBpbXBvcnQgTW9ja1VzZXIKIAogCiAjIEZJWE1FOiBP
dGhlciB1bml0IHRlc3RzIHByb2JhYmx5IHdhbnQgdGhpcyBjbGFzcy4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9mYWlsdXJlbWFwX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2ZhaWx1cmVtYXBfdW5pdHRlc3QucHkK
aW5kZXggZjMxZWQyNTIyMjMzYTUwNWE2MTU3OGYxNDFjMDMwMDZkMzU4ZDBhOS4uOWE2NmQ5ZWRl
MjExMGE4NjZjMzQ3MWRlMTZkZmIzNTNlM2IzODJlMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2ZhaWx1cmVtYXBfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2ZhaWx1cmVtYXBfdW5pdHRlc3QucHkKQEAgLTMx
LDcgKzMxLDcgQEAgaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVp
bGRib3QgaW1wb3J0IEJ1aWxkCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuZmFpbHVyZW1hcCBp
bXBvcnQgKgogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LnJlZ3Jlc3Npb253aW5kb3cgaW1wb3J0
IFJlZ3Jlc3Npb25XaW5kb3cKLWZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9j
a0J1aWxkZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWlsZGJvdC5idWlsZGJvdF9tb2Nr
IGltcG9ydCBNb2NrQnVpbGRlcgogCiAKIGNsYXNzIEZhaWx1cmVNYXBUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9p
cmMvaXJjX21vY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaXJjL2ly
Y19tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MjY5Y2Y3MzAwOGUzZDZlNjc1MGNhZGVhM2U1YWVhOWM2
NmZmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvaXJjL2lyY19tb2NrLnB5CkBAIC0wLDAgKzEsMzUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisK
K2NsYXNzIE1vY2tJUkMob2JqZWN0KToKKyAgICBkZWYgcG9zdChzZWxmLCBtZXNzYWdlKToKKyAg
ICAgICAgbG9nKCJNT0NLOiBpcmMucG9zdDogJXMiICUgbWVzc2FnZSkKKworICAgIGRlZiBkaXNj
b25uZWN0KHNlbGYpOgorICAgICAgICBsb2coIk1PQ0s6IGlyYy5kaXNjb25uZWN0IikKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXJfbW9j
ay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXJfbW9j
ay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMDQ1OGQ5ZjYwMDQwODVkMDcxOTU0NDFlYzM3NWI4ODM2ZWJjNGJi
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0
YXR1c3NlcnZlcl9tb2NrLnB5CkBAIC0wLDAgKzEsNjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2Ns
YXNzIE1vY2tTdGF0dXNTZXJ2ZXIob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBi
b3RfaWQ9Tm9uZSwgd29ya19pdGVtcz1Ob25lKToKKyAgICAgICAgc2VsZi5ob3N0ID0gImV4YW1w
bGUuY29tIgorICAgICAgICBzZWxmLmJvdF9pZCA9IGJvdF9pZAorICAgICAgICBzZWxmLl93b3Jr
X2l0ZW1zID0gd29ya19pdGVtcyBvciBbXQorCisgICAgZGVmIHBhdGNoX3N0YXR1cyhzZWxmLCBx
dWV1ZV9uYW1lLCBwYXRjaF9pZCk6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgc3Zu
X3JldmlzaW9uKHNlbGYsIHN2bl9yZXZpc2lvbik6CisgICAgICAgIHJldHVybiBOb25lCisKKyAg
ICBkZWYgbmV4dF93b3JrX2l0ZW0oc2VsZiwgcXVldWVfbmFtZSk6CisgICAgICAgIGlmIG5vdCBz
ZWxmLl93b3JrX2l0ZW1zOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3dvcmtfaXRlbXMucG9wKDApCisKKyAgICBkZWYgcmVsZWFzZV93b3JrX2l0ZW0oc2Vs
ZiwgcXVldWVfbmFtZSwgcGF0Y2gpOgorICAgICAgICBsb2coIk1PQ0s6IHJlbGVhc2Vfd29ya19p
dGVtOiAlcyAlcyIgJSAocXVldWVfbmFtZSwgcGF0Y2guaWQoKSkpCisKKyAgICBkZWYgdXBkYXRl
X3dvcmtfaXRlbXMoc2VsZiwgcXVldWVfbmFtZSwgd29ya19pdGVtcyk6CisgICAgICAgIHNlbGYu
X3dvcmtfaXRlbXMgPSB3b3JrX2l0ZW1zCisgICAgICAgIGxvZygiTU9DSzogdXBkYXRlX3dvcmtf
aXRlbXM6ICVzICVzIiAlIChxdWV1ZV9uYW1lLCB3b3JrX2l0ZW1zKSkKKworICAgIGRlZiBzdWJt
aXRfdG9fZXdzKHNlbGYsIHBhdGNoX2lkKToKKyAgICAgICAgbG9nKCJNT0NLOiBzdWJtaXRfdG9f
ZXdzOiAlcyIgJSAocGF0Y2hfaWQpKQorCisgICAgZGVmIHVwZGF0ZV9zdGF0dXMoc2VsZiwgcXVl
dWVfbmFtZSwgc3RhdHVzLCBwYXRjaD1Ob25lLCByZXN1bHRzX2ZpbGU9Tm9uZSk6CisgICAgICAg
IGxvZygiTU9DSzogdXBkYXRlX3N0YXR1czogJXMgJXMiICUgKHF1ZXVlX25hbWUsIHN0YXR1cykp
CisgICAgICAgIHJldHVybiAxODcKKworICAgIGRlZiB1cGRhdGVfc3ZuX3JldmlzaW9uKHNlbGYs
IHN2bl9yZXZpc2lvbiwgYnJva2VuX2JvdCk6CisgICAgICAgIHJldHVybiAxOTEKKworICAgIGRl
ZiByZXN1bHRzX3VybF9mb3Jfc3RhdHVzKHNlbGYsIHN0YXR1c19pZCk6CisgICAgICAgIHJldHVy
biAiaHR0cDovL2R1bW15X3VybCIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9zdGF0dXNzZXJ2ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyX3VuaXR0ZXN0LnB5CmluZGV4IDExNjliYTA4ZDhk
ZjNmMWQ0Nzk4NGJmZWY5NmE4Yzc4NzM3N2ExODcuLjFmMGFmZDA1YmI3YzAwMDllOGEzNGZkYmRi
YTE3MTc4N2JjMmE2NjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9zdGF0dXNzZXJ2ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L3N0YXR1c3NlcnZlcl91bml0dGVzdC5weQpAQCAtMzAsNyArMzAsNyBAQCBp
bXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LnN0YXR1c3NlcnZlciBp
bXBvcnQgU3RhdHVzU2VydmVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2Fw
dHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZVRlc3RDYXNlQmFzZQotZnJvbSB3ZWJraXRweS50b29s
Lm1vY2t0b29sIGltcG9ydCBNb2NrQnJvd3NlcgorZnJvbSB3ZWJraXRweS5jb21tb24ubmV0Lndl
Yl9tb2NrIGltcG9ydCBNb2NrQnJvd3NlcgogCiAKIGNsYXNzIFN0YXR1c1NlcnZlclRlc3QoT3V0
cHV0Q2FwdHVyZVRlc3RDYXNlQmFzZSk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvd2ViX21vY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvd2ViX21vY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhhYmMwZjM4MDhmY2JlZGRlYmRkMGQ2NzE4
MGVmYmE4YzllNmM0MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC93ZWJfbW9jay5weQpAQCAtMCwwICsxLDQ5IEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
CitjbGFzcyBNb2NrV2ViKG9iamVjdCk6CisgICAgZGVmIGdldF9iaW5hcnkoc2VsZiwgdXJsLCBj
b252ZXJ0XzQwNF90b19Ob25lPUZhbHNlKToKKyAgICAgICAgcmV0dXJuICJNT0NLIFdlYiByZXN1
bHQsIGNvbnZlcnQgNDA0IHRvIE5vbmU9JXMiICUgY29udmVydF80MDRfdG9fTm9uZQorCisKKyMg
RklYTUU6IENsYXNzZXMgd2hpY2ggYXJlIHVzaW5nIEJyb3dzZXIgcHJvYmFibHkgd2FudCB0byB1
c2UgV2ViIGluc3RlYWQuCitjbGFzcyBNb2NrQnJvd3NlcihvYmplY3QpOgorICAgIHBhcmFtcyA9
IHt9CisKKyAgICBkZWYgb3BlbihzZWxmLCB1cmwpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYg
c2VsZWN0X2Zvcm0oc2VsZiwgbmFtZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBfX3NldGl0
ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKKyAgICAgICAgc2VsZi5wYXJhbXNba2V5XSA9IHZhbHVl
CisKKyAgICBkZWYgc3VibWl0KHNlbGYpOgorICAgICAgICByZXR1cm4gU3RyaW5nSU8uU3RyaW5n
SU8oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4
ZWN1dGl2ZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRp
dmUucHkKaW5kZXggZmJiN2VmMDY3YjNkNTAzNWQ2ZTY1MmNlMjJmMjgzYTE1OTIwZTExYi4uMTRk
MjA0YzA1MzAyYWJlMjFkMWFiMGZjMjkwN2NhMWZiNmU4MTc4NiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5CkBAIC0xMDAsNiArMTAw
LDggQEAgY2xhc3MgRXhlY3V0aXZlKG9iamVjdCk6CiAgICAgUElQRSA9IHN1YnByb2Nlc3MuUElQ
RQogICAgIFNURE9VVCA9IHN1YnByb2Nlc3MuU1RET1VUCiAKKyAgICAjIHVuaXR0ZXN0aW5nID0g
RmFsc2UKKwogICAgIGRlZiBfc2hvdWxkX2Nsb3NlX2ZkcyhzZWxmKToKICAgICAgICAgIyBXZSBu
ZWVkIHRvIHBhc3MgY2xvc2VfZmRzPVRydWUgdG8gd29yayBhcm91bmQgUHl0aG9uIGJ1ZyAjMjMy
MAogICAgICAgICAjIChvdGhlcndpc2Ugd2UgY2FuIGhhbmcgd2hlbiB3ZSBraWxsIER1bXBSZW5k
ZXJUcmVlIHdoZW4gd2UgYXJlIHJ1bm5pbmcKQEAgLTQwMiw2ICs0MDQsOCBAQCBjbGFzcyBFeGVj
dXRpdmUob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX2V4aXRfY29kZT1GYWxz
ZSwKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3N0ZGVycj1UcnVlLAogICAgICAgICAgICAg
ICAgICAgICBkZWNvZGVfb3V0cHV0PVRydWUpOgorICAgICAgICAjIGlmIEV4ZWN1dGl2ZS51bml0
dGVzdGluZzoKKyAgICAgICAgIyAgICAgYXNzZXJ0IEZhbHNlCiAgICAgICAgICIiIlBvcGVuIHdy
YXBwZXIgZm9yIGNvbnZlbmllbmNlIGFuZCB0byB3b3JrIGFyb3VuZCBweXRob24gYnVncy4iIiIK
ICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2UoYXJncywgbGlzdCkgb3IgaXNpbnN0YW5jZShhcmdz
LCB0dXBsZSkpCiAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5Cmlu
ZGV4IDBlOTMzMTIyYjg1OWViZTk2MWQyMjQ4NmFjMzMzYzkyMzYyNDQ1MDAuLmU1YTA0YTI4MmM0
ZjY0YzM3OTU1NTQ3NWU4YWM5YmY4MTZlODU4MDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21vY2sucHkKQEAgLTEsNCArMSw0
IEBACi0jIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI2LDEzICsyNiw0NSBAQAogIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotIyBGSVhNRTogSW1wbGVtZW50IHRoZSByZXN0
IG9mIHRoZSBpbnRlcmZhY2UgYXMgbmVlZGVkIGZvciB0ZXN0aW5nIDopLgotCi0jIEZJWE1FOiBV
bmlmeSB3aXRoIHRvb2wvbW9ja3Rvb2wuTW9ja0V4ZWN1dGl2ZS4KK2ltcG9ydCBvcwogCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZQogCiAKKyMgRklYTUU6IFRo
aXMgc2hvdWxkIGJlIHVuaWZpZWQgd2l0aCBNb2NrRXhlY3V0aXZlMgorY2xhc3MgTW9ja0V4ZWN1
dGl2ZShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaG91bGRfbG9nPUZhbHNlLCBz
aG91bGRfdGhyb3c9RmFsc2UsIHNob3VsZF90aHJvd193aGVuX3J1bj1Ob25lKToKKyAgICAgICAg
c2VsZi5fc2hvdWxkX2xvZyA9IHNob3VsZF9sb2cKKyAgICAgICAgc2VsZi5fc2hvdWxkX3Rocm93
ID0gc2hvdWxkX3Rocm93CisgICAgICAgIHNlbGYuX3Nob3VsZF90aHJvd193aGVuX3J1biA9IHNo
b3VsZF90aHJvd193aGVuX3J1biBvciBzZXQoKQorICAgICAgICAjIEZJWE1FOiBPbmNlIGV4ZWN1
dGl2ZSB3cmFwcyBvcy5nZXRwaWQoKSB3ZSBjYW4ganVzdCB1c2UgYSBzdGF0aWMgcGlkIGZvciAi
dGhpcyIgcHJvY2Vzcy4KKyAgICAgICAgc2VsZi5fcnVubmluZ19waWRzID0gW29zLmdldHBpZCgp
XQorCisgICAgZGVmIGNoZWNrX3J1bm5pbmdfcGlkKHNlbGYsIHBpZCk6CisgICAgICAgIHJldHVy
biBwaWQgaW4gc2VsZi5fcnVubmluZ19waWRzCisKKyAgICBkZWYgcnVuX2FuZF90aHJvd19pZl9m
YWlsKHNlbGYsIGFyZ3MsIHF1aWV0PUZhbHNlLCBjd2Q9Tm9uZSk6CisgICAgICAgIGlmIHNlbGYu
X3Nob3VsZF9sb2c6CisgICAgICAgICAgICBsb2coIk1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWls
OiAlcywgY3dkPSVzIiAlIChhcmdzLCBjd2QpKQorICAgICAgICBpZiBzZWxmLl9zaG91bGRfdGhy
b3dfd2hlbl9ydW4uaW50ZXJzZWN0aW9uKGFyZ3MpOgorICAgICAgICAgICAgcmFpc2UgU2NyaXB0
RXJyb3IoIkV4Y2VwdGlvbiBmb3IgJXMiICUgYXJncykKKyAgICAgICAgcmV0dXJuICJNT0NLIG91
dHB1dCBvZiBjaGlsZCBwcm9jZXNzIgorCisgICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsCisgICAg
ICAgICAgICAgICAgICAgIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgIGN3ZD1Ob25lLAorICAg
ICAgICAgICAgICAgICAgICBpbnB1dD1Ob25lLAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9o
YW5kbGVyPU5vbmUsCisgICAgICAgICAgICAgICAgICAgIHJldHVybl9leGl0X2NvZGU9RmFsc2Us
CisgICAgICAgICAgICAgICAgICAgIHJldHVybl9zdGRlcnI9VHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgZGVjb2RlX291dHB1dD1GYWxzZSk6CisgICAgICAgIGlmIHNlbGYuX3Nob3VsZF9sb2c6
CisgICAgICAgICAgICBsb2coIk1PQ0sgcnVuX2NvbW1hbmQ6ICVzLCBjd2Q9JXMiICUgKGFyZ3Ms
IGN3ZCkpCisgICAgICAgIGlmIHNlbGYuX3Nob3VsZF90aHJvdzoKKyAgICAgICAgICAgIHJhaXNl
IFNjcmlwdEVycm9yKCJNT0NLIFNjcmlwdEVycm9yIikKKyAgICAgICAgcmV0dXJuICJNT0NLIG91
dHB1dCBvZiBjaGlsZCBwcm9jZXNzIgorCisKIGNsYXNzIE1vY2tFeGVjdXRpdmUyKG9iamVjdCk6
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dHB1dD0nJywgZXhpdF9jb2RlPTAsIGV4Y2VwdGlv
bj1Ob25lLAogICAgICAgICAgICAgICAgICBydW5fY29tbWFuZF9mbj1Ob25lLCBzdGRlcnI9Jycp
OgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRm
b3JtaW5mb19tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3Bs
YXRmb3JtaW5mb19tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNzU5NzEzZjk3OTkzMmUwNWU0MzhhNGEx
MDc5NzdmYWU0NWYwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvX21vY2sucHkKQEAgLTAsMCArMSwzMiBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworY2xhc3MgTW9ja1BsYXRmb3JtSW5mbyhvYmplY3QpOgorICAgIGRlZiBk
aXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiTW9ja1BsYXRmb3JtIDEuMCIKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vdXNlcl9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL3VzZXJfbW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGU2NmJhZDY5ZDIxYTE3YzI1
OWI5OWM0NWZhODVlNmI1MGNkZmU5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfbW9jay5weQpAQCAtMCwwICsxLDY0IEBACisjIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworCitjbGFzcyBNb2NrVXNlcihvYmplY3QpOgorCisgICAgQGNsYXNzbWV0aG9k
CisgICAgZGVmIHByb21wdChjbHMsIG1lc3NhZ2UsIHJlcGVhdD0xLCByYXdfaW5wdXQ9cmF3X2lu
cHV0KToKKyAgICAgICAgcmV0dXJuICJNb2NrIHVzZXIgcmVzcG9uc2UiCisKKyAgICBAY2xhc3Nt
ZXRob2QKKyAgICBkZWYgcHJvbXB0X3dpdGhfbGlzdChjbHMsIGxpc3RfdGl0bGUsIGxpc3RfaXRl
bXMsIGNhbl9jaG9vc2VfbXVsdGlwbGU9RmFsc2UsIHJhd19pbnB1dD1yYXdfaW5wdXQpOgorICAg
ICAgICBwYXNzCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYub3BlbmVk
X3VybHMgPSBbXQorCisgICAgZGVmIGVkaXQoc2VsZiwgZmlsZXMpOgorICAgICAgICBwYXNzCisK
KyAgICBkZWYgZWRpdF9jaGFuZ2Vsb2coc2VsZiwgZmlsZXMpOgorICAgICAgICBwYXNzCisKKyAg
ICBkZWYgcGFnZShzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGNvbmZp
cm0oc2VsZiwgbWVzc2FnZT1Ob25lLCBkZWZhdWx0PSd5Jyk6CisgICAgICAgIGxvZyhtZXNzYWdl
KQorICAgICAgICByZXR1cm4gZGVmYXVsdCA9PSAneScKKworICAgIGRlZiBjYW5fb3Blbl91cmwo
c2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgb3Blbl91cmwoc2VsZiwgdXJs
KToKKyAgICAgICAgc2VsZi5vcGVuZWRfdXJscy5hcHBlbmQodXJsKQorICAgICAgICBpZiB1cmwu
c3RhcnRzd2l0aCgiZmlsZTovLyIpOgorICAgICAgICAgICAgbG9nKCJNT0NLOiB1c2VyLm9wZW5f
dXJsOiBmaWxlOi8vLi4uIikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBsb2coIk1PQ0s6
IHVzZXIub3Blbl91cmw6ICVzIiAlIHVybCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2VfbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2VfbW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWU3NDY3
YjQ4NDgyY2E4NDhmMWQ3ZDM2N2Y4MTM3ZjEyYTAxZGNmCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV9tb2NrLnB5CkBAIC0w
LDAgKzEsMzUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2NsYXNzIE1vY2tXb3Jrc3BhY2Uob2JqZWN0
KToKKyAgICBkZWYgZmluZF91bnVzZWRfZmlsZW5hbWUoc2VsZiwgZGlyZWN0b3J5LCBuYW1lLCBl
eHRlbnNpb24sIHNlYXJjaF9saW1pdD0xMCk6CisgICAgICAgIHJldHVybiAiJXMvJXMuJXMiICUg
KGRpcmVjdG9yeSwgbmFtZSwgZXh0ZW5zaW9uKQorCisgICAgZGVmIGNyZWF0ZV96aXAoc2VsZiwg
emlwX3BhdGgsIHNvdXJjZV9wYXRoKToKKyAgICAgICAgcmV0dXJuIG9iamVjdCgpICAjIFNvbWV0
aGluZyB0aGF0IGlzIG5vdCBOb25lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV91bml0
dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2Vf
dW5pdHRlc3QucHkKaW5kZXggZmRhZTcwZTYwNDU4YTljMjlhNWY4ZDg3MTAzYjBjZmYxY2JiODk3
MS4uNjQyYWZiOWM2M2E2NTE3OGY5YzJkMTBlN2E4ZDM0NjgzNWFhYmEyMyAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV91bml0dGVzdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlX3Vu
aXR0ZXN0LnB5CkBAIC0zMSw3ICszMSw3IEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0
dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ud29ya3NwYWNlIGltcG9ydCBXb3Jrc3Bh
Y2UKLWZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQorZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0
aXZlCiAKIAogY2xhc3MgV29ya3NwYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi93YXRjaGxpc3Qvd2F0Y2hsaXN0X21v
Y2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi93YXRjaGxpc3Qvd2F0Y2hsaXN0
X21vY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ1NTc0Y2E4MDQ3OGQxY2VlMGRlZTViNzYzMmZlYjY5Yjcz
YjRlYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3dh
dGNobGlzdC93YXRjaGxpc3RfbW9jay5weQpAQCAtMCwwICsxLDMzIEBACisjIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworCitjbGFzcyBNb2NrV2F0Y2hMaXN0KG9iamVjdCk6CisgICAgZGVmIGRldGVybWluZV9jY19h
bmRfbWVzc2FnZXMoc2VsZiwgZGlmZik6CisgICAgICAgIGxvZygiTW9ja1dhdGNoTGlzdDogZGV0
ZXJtaW5lX2NjX2FuZF9tZXNzYWdlcyIpCisgICAgICAgIHJldHVybiB7J2NjX2xpc3QnOiBbJ2Fi
YXJ0aEB3ZWJraXQub3JnJywgJ2VyaWNAd2Via2l0Lm9yZycsICdsZXZpbkBjaHJvbWl1bS5vcmcn
XSwgJ21lc3NhZ2VzJzogWydNZXNzYWdlMS4nLCAnTWVzc2FnZTIuJ10sIH0KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weQppbmRl
eCBiMzZlYmFjNTJhNjQyZWFjMTFiZGYyNTk2MmUwNmFlYzg4ZTU5NjE5Li43MGM5MDI2MTE0ZTQx
MWFiNTY2MTBjMjAyMzQzNzU2MzI2ZTdmYzE4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJf
dW5pdHRlc3QucHkKQEAgLTQ2LDcgKzQ2LDkgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMg
aW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRy
b2xsZXJzLm1hbmFnZXIgaW1wb3J0IE1hbmFnZXIsIG5hdHVyYWxfc29ydF9rZXksIHRlc3Rfa2V5
LCBUZXN0UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24sIFRlc3RTaGFyZAogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubW9kZWxzLnJlc3VsdF9zdW1tYXJ5IGltcG9ydCBSZXN1bHRTdW1tYXJ5CiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRpbmcKLWZyb20gd2Vi
a2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMsIE1vY2tVc2VyLCBNb2NrRXhl
Y3V0aXZlCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVj
dXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2VyX21vY2sgaW1wb3J0IE1vY2tV
c2VyCiAKIAogY2xhc3MgTWFuYWdlcldyYXBwZXIoTWFuYWdlcik6CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X2V4cGVjdGF0
aW9uc19lZGl0b3JfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy90ZXN0X2V4cGVjdGF0aW9uc19lZGl0b3JfdW5pdHRlc3QucHkKaW5k
ZXggYTgxOWZhZWJjZTIyMzM0NGY0NWU0NGUwNjdkMTU3ZTk0MjY3Zjg5Zi4uMTllZTkyOGFkMzli
NzAzNWJkMmJjNjBjNWU5NmViZTdmYWFiNmIzMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9leHBlY3RhdGlvbnNfZWRpdG9y
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL3Rlc3RfZXhwZWN0YXRpb25zX2VkaXRvcl91bml0dGVzdC5weQpAQCAtNzAsNyAr
NzAsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25FZGl0b3JUZXN0cyh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgXSkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0RnVuYyk6Ci0gICAgICAg
IHNlbGYudGVzdF9wb3J0ID0gcG9ydC5nZXQoJ3Rlc3Qtd2luLXhwJywgTm9uZSkKKyAgICAgICAg
c2VsZi50ZXN0X3BvcnQgPSBwb3J0LlBvcnRGYWN0b3J5KE1vY2tIb3N0KCkpLmdldCgndGVzdC13
aW4teHAnLCBOb25lKQogICAgICAgICBzZWxmLmZ1bGxfdGVzdF9saXN0ID0gWydmYWlsdXJlcy9l
eHBlY3RlZC9rZXlib2FyZC5odG1sJywgJ2ZhaWx1cmVzL2V4cGVjdGVkL2F1ZGlvLmh0bWwnXQog
ICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmLCB0ZXN0RnVuYykKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9fX2luaXRf
Xy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvX19pbml0X18u
cHkKaW5kZXggYmM3MGM3MjhmOTlhMmY4ZmI2ZDk2ZmMyODM5OWZmMDk3YjIyODY4MC4uNTM1MTdh
YTg4YTA0YTZiYTAzMzhkZGI5MzcyOWZjY2M3Mzc1ZDAyZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9fX2luaXRfXy5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L19faW5pdF9fLnB5CkBAIC0yOSw3ICsy
OSw3IEBACiAKICIiIlBvcnQtc3BlY2lmaWMgZW50cnlwb2ludHMgZm9yIHRoZSBsYXlvdXQgdGVz
dHMgdGVzdCBpbmZyYXN0cnVjdHVyZS4iIiIKIAotZnJvbSBmYWN0b3J5IGltcG9ydCBnZXQKK2Zy
b20gZmFjdG9yeSBpbXBvcnQgUG9ydEZhY3RvcnkKIAogaW1wb3J0IGJ1aWxkZXJzICAjIFdoeSBp
cyB0aGlzIGluIHBvcnQ/CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQppbmRleCBlNTcwMGUzYTIyNmQwYzY4
YTI4NDNjM2UyMmRkN2RkNjBmNTg5ZDBiLi4wOTI4YjZlNmNhY2VmNTI4NDRlNWUzZWFhYmFmYThl
YzY3MmU1NTNkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CkBAIC0zNyw3ICszNywxMCBAQCBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3Rl
bQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRjYXB0dXJlCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGF0aCBpbXBvcnQgYWJzcGF0aF90b191cmkKIGZyb20g
d2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCi1mcm9tIHdlYmtpdHB5LnRvb2wu
bW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVXNlciwgTW9ja0V4ZWN1dGl2ZQorZnJv
bSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucworZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlcl9tb2NrIGltcG9ydCBNb2NrVXNlcgorCiAKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IFBvcnQsIERyaXZlciwgRHJpdmVy
T3V0cHV0CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZWZsX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9lZmxfdW5pdHRlc3QucHkKaW5kZXggMTNmNzM5NDliMDk5N2VhZDE4MzY5MzBhYzdm
YTkxMjEzMGZmNGRmNC4uODEyOTJjYjcwMDc5OWQ0MGNiNzRiMTc3ZTVhN2RjOThjYzhmNDcwMyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmxf
dW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9lZmxfdW5pdHRlc3QucHkKQEAgLTI5LDcgKzI5LDcgQEAgaW1wb3J0IHVuaXR0ZXN0CiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVy
ZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5lZmwgaW1wb3J0IEVmbFBvcnQKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKLWZyb20g
d2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCiAKIAog
Y2xhc3MgRWZsUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5CmluZGV4
IDViMWE5MjE2YmI4NGFhZTJhOTAxYTIwZjlmZDc4NmMxODIyYTFjYmYuLmFhNDBlZTY3Mzk5MWY5
MWVkYTdlZWU1Y2NmMmIzNjYwOTIyOWY2NmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkKQEAgLTE1NSw4ICsxNTUsNSBAQCBj
bGFzcyBQb3J0RmFjdG9yeShvYmplY3QpOgogZGVmIGFsbF9wb3J0X25hbWVzKCk6CiAgICAgcmV0
dXJuIFBvcnRGYWN0b3J5KCkuYWxsX3BvcnRfbmFtZXMoKQogCi1kZWYgZ2V0KHBvcnRfbmFtZT1O
b25lLCBvcHRpb25zPU5vbmUsICoqa3dhcmdzKToKLSAgICByZXR1cm4gUG9ydEZhY3RvcnkoKS5n
ZXQocG9ydF9uYW1lLCBvcHRpb25zLCAqKmt3YXJncykKLQogZGVmIGdldF9mcm9tX2J1aWxkZXJf
bmFtZShidWlsZGVyX25hbWUpOgogICAgIHJldHVybiBQb3J0RmFjdG9yeSgpLmdldF9mcm9tX2J1
aWxkZXJfbmFtZShidWlsZGVyX25hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKaW5kZXggMGY2
NTAwY2RkY2NhZjYxMGVmYTg2MjExM2QxNTcyMTA1YTM1YTNlYy4uNWUxNTFhZDdjMjRlY2JjZTE4
YTAxMzM5YThiMzkyZGE0Nzc3OGMwZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQpAQCAtMzAs
NyArMzAsOSBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLWZyb20g
d2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMsIE1vY2tVc2VyLCBNb2Nr
RXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25z
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tF
eGVjdXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2VyX21vY2sgaW1wb3J0IE1v
Y2tVc2VyCiAKIGltcG9ydCBjaHJvbWl1bV9ncHUKIGltcG9ydCBjaHJvbWl1bV9saW51eApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGtfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0a191
bml0dGVzdC5weQppbmRleCA4MjE3NzllZjE0NWUyZmM0MWI1MzUwMWUyYjk4YWE3OGQ0NjFlY2Jk
Li45NTFjNTM3MmRkNGU2YTU4OTJiODQwYTI5YTNkYmIwOWQ4ZmFkNWUwIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0a191bml0dGVzdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0a191bml0dGVz
dC5weQpAQCAtMzEsNyArMzEsNyBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0Lmd0ayBpbXBvcnQgR3RrUG9ydAogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQotZnJvbSB3ZWJraXRweS50b29s
Lm1vY2t0b29sIGltcG9ydCBNb2NrRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKIAogCiBjbGFzcyBHdGtQb3J0
VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfbG9ja191bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9sb2NrX3VuaXR0ZXN0
LnB5CmluZGV4IDY0OGY4YTZjZDRhZjFmZmVjYjdlYjA0NGEwMzEyYjZkMzRmZGE3Y2UuLmJmZjVh
NjZkODY5NWQyZjlkYTQ2YmI2MTQyMjA0YTEwODA1MWNhZTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9sb2NrX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9sb2NrX3Vu
aXR0ZXN0LnB5CkBAIC0yOSw3ICsyOSw3IEBAIGltcG9ydCBvcyAgIyBVc2VkIGZvciBvcy5nZXRw
aWQoKQogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxl
c3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCi1mcm9tIHdlYmtpdHB5LnRvb2wubW9j
a3Rvb2wgaW1wb3J0IE1vY2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5l
eGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQogCiAKICMgRklYTUU6IFRoZXNlIHRl
c3RzIGFsbCB0b3VjaCB0aGUgcmVhbCBkaXNrLCBidXQgY291bGQgYmUgd3JpdHRlbiB0byBhIE1v
Y2tGaWxlU3lzdGVtIGluc3RlYWQuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2xlYWtkZXRlY3Rvcl91bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbGVha2RldGVjdG9yX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDY5YzY5MzlkZGM0ODFmZjQ1MmRlNDBkMzI3ZmUxOTM1ZmQwMTJlYTAuLjhiNGNlODBhYTBh
M2Y3YTJhYmE3NDMzM2U2ODE4NzAwYjAyMjcyOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbGVha2RldGVjdG9yX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbGVha2RldGVjdG9yX3Vu
aXR0ZXN0LnB5CkBAIC0zMSw3ICszMSw3IEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMucG9ydC5sZWFrZGV0ZWN0b3IgaW1wb3J0IExlYWtEZXRlY3RvcgogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVT
eXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBP
dXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tFeGVj
dXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQg
TW9ja0V4ZWN1dGl2ZQogCiAKIGNsYXNzIExlYWtEZXRlY3RvclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tYWNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L21hY191bml0dGVzdC5weQppbmRleCBjNjVmMjhlMDM0YWNlOTFjYzhjYzJlY2RjOGE2ODlk
ZGQyMTliNTQ2Li45NDcxNDYyMGNmMzc0MmIwMDI3MzUzYzQyNjUyZTA3MGIzYWU2ZmFjIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hY191bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21h
Y191bml0dGVzdC5weQpAQCAtMzAsNyArMzAsOSBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0Lm1hYyBpbXBvcnQgTWFjUG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVz
eXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LnRv
b2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVXNlciwgTW9ja0V4ZWN1dGl2ZQor
ZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucworZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlcl9tb2NrIGltcG9ydCBNb2NrVXNlcgogCiAK
IGNsYXNzIE1hY1Rlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNl
LnB5CmluZGV4IDBiNzk1MzNjMzljNWU1MWRjMTUxM2VlMmE4YTgzNDZhNGNlMDRhMzIuLjc5Zjc2
YTE5NjNjY2NiZmM2ODZjZTFlMDAwN2Q1ZTA0OWM0NDliZDAgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkK
QEAgLTQ0LDcgKzQ0LDkgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMuc2VydmVycyBpbXBvcnQgaHR0cF9zZXJ2ZXJfYmFzZQogCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQotZnJv
bSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucywgTW9ja1VzZXIsIE1v
Y2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlv
bnMKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9j
a0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXJfbW9jayBpbXBvcnQg
TW9ja1VzZXIKIG1vY2tfb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVh
c2UnKQogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvcXRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3F0X3VuaXR0ZXN0LnB5CmluZGV4IDUyOGMyMzBmY2IzYzNlNjk3MGE5ODkzNzgwMjBh
NWJkODljMzEzOGYuLjY5N2ZiNDM0NzI4YWYwYzBhNjBlNTJlZmFhMTI5ZTUxYjBhMGU0MTYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5p
dHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9x
dF91bml0dGVzdC5weQpAQCAtMzMsNyArMzMsOSBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQucXQgaW1wb3J0IFF0UG9ydAogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQotZnJvbSB3ZWJraXRweS50b29s
Lm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucywgTW9ja1VzZXIsIE1vY2tFeGVjdXRpdmUKK2Zy
b20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQorZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXJfbW9jayBpbXBvcnQgTW9ja1VzZXIKIAogCiBj
bGFzcyBRdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5p
dHRlc3QucHkKaW5kZXggYjFiOTg0ZjY4MmYyZDU1ODhmMTEyMzgwM2UzOGIzM2E1ODI4YTAwMS4u
YWUwNWM1ZTBkZjZhMGEyZTc0NDk4NTQ0Mzk1YjQ3OTM1N2I0ODQ1NSAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5p
dHRlc3QucHkKQEAgLTM0LDcgKzM0LDEwIEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1v
ZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0UG9ydCwgV2ViS2l0
RHJpdmVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3Rj
YXNlCiAKLWZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja0V4ZWN1dGl2ZSwg
TW9ja09wdGlvbnMsIE1vY2tVc2VyCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0
IE1vY2tPcHRpb25zCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sg
aW1wb3J0IE1vY2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2VyX21v
Y2sgaW1wb3J0IE1vY2tVc2VyCisKIAogCiBjbGFzcyBUZXN0V2ViS2l0UG9ydChXZWJLaXRQb3J0
KToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
d2luX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93aW5fdW5pdHRlc3QucHkKaW5kZXggZTMwNWRiYzA5YzE2MDNlZDY4M2ZjMGEwN2FmZjY3ZjQ5
OWM5ZmQ4OC4uNDdiYzc5ZThkMjViOWFmZTlkMzI3M2VkNTc5YWZjNzhmYTc0MmEwNSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW5fdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW5f
dW5pdHRlc3QucHkKQEAgLTMxLDEyICszMSwxMyBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRl
c3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0
RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQg
TW9ja0V4ZWN1dGl2ZTIKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9j
ayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZSwgTW9ja0V4ZWN1dGl2ZTIKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlcl9tb2NrIGltcG9ydCBNb2NrVXNlcgogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKIGZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQud2luIGltcG9ydCBXaW5Qb3J0Ci1mcm9tIHdlYmtp
dHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVXNlciwgTW9ja0V4ZWN1
dGl2ZQorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucyAKIAog
CiBjbGFzcyBXaW5Qb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGVzdC9tYWluLnB5CmluZGV4IDRjOTlmNzYwZGE0OTY0MzgxMTljYmMyMTRhOGM3
YTU5YjE3YzVhNDAuLjMwMGMxNzc0MTFhMDY2OGQ0NTViZGNiYzM2M2QxNjc0MjU1ZTgzNzkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CkBAIC0xNjEsNiArMTYxLDkgQEAgY2xhc3Mg
VGVzdGVyKG9iamVjdCk6CiAKICAgICAgICAgc3lzX2FyZ3YuZXh0ZW5kKG1vZHVsZXMpCiAKKyAg
ICAgICAgIyBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVj
dXRpdmUKKyAgICAgICAgIyBFeGVjdXRpdmUudW5pdHRlc3RpbmcgPSBUcnVlCisKICAgICAgICAg
IyBXZSBwYXNzIE5vbmUgZm9yIHRoZSBtb2R1bGUgYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0aGUg
dW5pdHRlc3QKICAgICAgICAgIyBtb2R1bGUgdG8gcmVzb2x2ZSBtb2R1bGUgbmFtZXMgcmVsYXRp
dmUgdG8gYSBnaXZlbiBtb2R1bGUuCiAgICAgICAgICMgKFRoaXMgd291bGQgcmVxdWlyZSBpbXBv
cnRpbmcgYWxsIG9mIHRoZSB1bml0dGVzdCBtb2R1bGVzIGZyb20KZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvYm90aW5mb191bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvYm90aW5mb191bml0dGVzdC5weQppbmRleCAwNTRhY2Zj
MTFhNDZjMGJiNmJkNTg1N2QwMTI2ODI3Yzc2YTM5YmFhLi44MjBmZjU1OWVmMDkxMTBhN2RkYmYx
NjY1NmEzM2M5NDlkNmI3OGZkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvYm90L2JvdGluZm9fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2JvdC9ib3RpbmZvX3VuaXR0ZXN0LnB5CkBAIC0yOSw3ICsyOSw4IEBACiBpbXBvcnQgdW5p
dHRlc3QKIAogZnJvbSB3ZWJraXRweS50b29sLmJvdC5ib3RpbmZvIGltcG9ydCBCb3RJbmZvCi1m
cm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sLCBNb2NrU3RhdHVzU2Vy
dmVyCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5uZXQuc3RhdHVzc2VydmVyX21vY2sgaW1wb3J0IE1vY2tTdGF0dXNTZXJ2
ZXIKIAogCiBjbGFzcyBCb3RJbmZvVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVyX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9mbGFreXRlc3RyZXBvcnRl
cl91bml0dGVzdC5weQppbmRleCA4MWEwZjkwYzg2N2Y3YTg2ZGY4ZmQ1NzBlNWY3Njg3Y2UwOWVm
NTMwLi45NjFiODNkZmVhMGViMmYyY2Q0NzI4M2ZkYjdhMzI4ZTQyNTFlYzk5IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVyX3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVw
b3J0ZXJfdW5pdHRlc3QucHkKQEAgLTM1LDcgKzM1LDggQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3Jlc3VsdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5
Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gd2Via2l0cHkudG9vbC5ib3QuZmxha3l0ZXN0cmVwb3J0
ZXIgaW1wb3J0IEZsYWt5VGVzdFJlcG9ydGVyCi1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wg
aW1wb3J0IE1vY2tUb29sLCBNb2NrU3RhdHVzU2VydmVyCitmcm9tIHdlYmtpdHB5LnRvb2wubW9j
a3Rvb2wgaW1wb3J0IE1vY2tUb29sCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuc3RhdHVzc2Vy
dmVyX21vY2sgaW1wb3J0IE1vY2tTdGF0dXNTZXJ2ZXIKIAogCiAjIENyZWF0aW5nIGZha2UgQ29t
bWl0SW5mb3MgaXMgYSBwYWluLCBzbyB3ZSB1c2UgYSBtb2NrIG9uZSBoZXJlLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZF91bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmRfdW5pdHRlc3Qu
cHkKaW5kZXggYzI0M2ZjZDM0ZDIwNTdmMjNhN2Q4MWY3OWJlYjgxMDIyZmQxY2QwZS4uNGNhNzA2
NjE5YjgyYWZiOWNlOTExZmIxNWJiMzJlMjU1MzI2NjIyOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZF91bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY19jb21tYW5kX3VuaXR0ZXN0LnB5CkBAIC0z
MCw3ICszMCw4IEBAIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50b29s
LmJvdC5pcmNfY29tbWFuZCBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGlt
cG9ydCBNb2NrVG9vbCwgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29s
IGltcG9ydCBNb2NrVG9vbAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9t
b2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCiAKIAogY2xhc3MgSVJDQ29tbWFuZFRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3F1ZXJpZXNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvcXVlcmllc191bml0dGVzdC5weQppbmRleCA1MmUyMTQ5MzMwYTdkZDAzODQ0NGJh
NWVmODljNjI3MDEyNDA0Zjk1Li5lOTlhODk5ZTcwY2ZmZDQ1NmNhMGFiN2JmMjEyZTBmMjRmNGYw
ODlhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVl
cmllc191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVlcmllc191bml0dGVzdC5weQpAQCAtMzQsNiArMzQsMjAgQEAgZnJvbSB3ZWJraXRweS50
b29sLmNvbW1hbmRzLmNvbW1hbmR0ZXN0IGltcG9ydCBDb21tYW5kc1Rlc3QKIGZyb20gd2Via2l0
cHkudG9vbC5jb21tYW5kcy5xdWVyaWVzIGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9j
a3Rvb2wgaW1wb3J0IE1vY2tUb29sCiAKK2NsYXNzIE1vY2tUZXN0UG9ydDEob2JqZWN0KToKKyAg
ICBkZWYgc2tpcHNfbGF5b3V0X3Rlc3Qoc2VsZiwgdGVzdF9uYW1lKToKKyAgICAgICAgcmV0dXJu
IHRlc3RfbmFtZSBpbiBbIm1lZGlhL2Zvby9iYXIuaHRtbCIsICJmb28iXQorCisKK2NsYXNzIE1v
Y2tUZXN0UG9ydDIob2JqZWN0KToKKyAgICBkZWYgc2tpcHNfbGF5b3V0X3Rlc3Qoc2VsZiwgdGVz
dF9uYW1lKToKKyAgICAgICAgcmV0dXJuIHRlc3RfbmFtZSA9PSAibWVkaWEvZm9vL2Jhci5odG1s
IgorCisKK2NsYXNzIE1vY2tQb3J0RmFjdG9yeShvYmplY3QpOgorICAgIGRlZiBnZXRfYWxsKHNl
bGYsIG9wdGlvbnM9Tm9uZSk6CisgICAgICAgIHJldHVybiB7InRlc3RfcG9ydDEiOiBNb2NrVGVz
dFBvcnQxKCksICJ0ZXN0X3BvcnQyIjogTW9ja1Rlc3RQb3J0MigpfQorCiAKIGNsYXNzIFF1ZXJ5
Q29tbWFuZHNUZXN0KENvbW1hbmRzVGVzdCk6CiAgICAgZGVmIHRlc3RfYnVnc190b19jb21taXQo
c2VsZik6CkBAIC02Niw2ICs4MCw5IEBAIGNsYXNzIFF1ZXJ5Q29tbWFuZHNUZXN0KENvbW1hbmRz
VGVzdCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhUcmVlU3RhdHVzKCks
IE5vbmUsIGV4cGVjdGVkX3N0ZG91dCkKIAogICAgIGRlZiB0ZXN0X3NraXBwZWRfcG9ydHMoc2Vs
Zik6CisgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCisgICAgICAgIHRvb2wucG9ydF9mYWN0b3J5
ID0gTW9ja1BvcnRGYWN0b3J5KCkKKwogICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiUG9ydHMg
c2tpcHBpbmcgdGVzdCAnbWVkaWEvZm9vL2Jhci5odG1sJzogdGVzdF9wb3J0MSwgdGVzdF9wb3J0
MlxuIgogICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoU2tpcHBlZFBvcnRzKCks
ICgibWVkaWEvZm9vL2Jhci5odG1sIiwpLCBleHBlY3RlZF9zdGRvdXQpCiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5p
dHRlc3QucHkKaW5kZXggNGYwNjc2ZGIyMTI2NTEyOTc0MTJhMjM3Y2UwN2U5MzNhZmM5M2I2YS4u
YTM2OWM5ZjE2YTVlNWZlNmMzMGU2YWU3OTdjOWUxMjIwOGJjY2JlMiAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5p
dHRlc3QucHkKQEAgLTMxLDcgKzMxLDggQEAgaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3
ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gd2Via2l0cHkudG9vbC5j
b21tYW5kcy5yZWJhc2VsaW5lIGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wg
aW1wb3J0IE1vY2tUb29sLCBNb2NrRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rv
b2wgaW1wb3J0IE1vY2tUb29sCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZl
X21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKIAogCiBjbGFzcyBUZXN0UmViYXNlbGluZSh1bml0
dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
bW9ja3Rvb2wucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKaW5k
ZXggZjcxM2FmNTQxZGNkMzU5YTVmYzEzMzdhNGZhNGU3NDVjYTkzMDM3Zi4uYzUxMmU0NGI0ZmVm
OTRjOGY3NDBjYmEzNmEzZDU1Mzk5YTdlNjM2NiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL21vY2t0b29sLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9tb2NrdG9vbC5weQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtMjYsNzMzICsyNiw4IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1p
bXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBvcwotaW1wb3J0IFN0cmluZ0lPCi1pbXBvcnQgdGhyZWFk
aW5nCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21t
aXR0ZXJMaXN0LCBSZXZpZXdlcgotZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY29tbWl0
aW5mbyBpbXBvcnQgQ29tbWl0SW5mbwotZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2Nt
IGltcG9ydCBDb21taXRNZXNzYWdlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEg
aW1wb3J0IEJ1ZywgQXR0YWNobWVudAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJl
Y2F0ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhl
Y3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZp
bGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLQotCi1kZWYgX2lkX3RvX29iamVj
dF9kaWN0aW9uYXJ5KCpvYmplY3RzKToKLSAgICBkaWN0aW9uYXJ5ID0ge30KLSAgICBmb3IgdGhp
bmcgaW4gb2JqZWN0czoKLSAgICAgICAgZGljdGlvbmFyeVt0aGluZ1siaWQiXV0gPSB0aGluZwot
ICAgIHJldHVybiBkaWN0aW9uYXJ5Ci0KLSMgVGVzdGluZwotCi0KLV9wYXRjaDEgPSB7Ci0gICAg
ImlkIjogMTAwMDAsCi0gICAgImJ1Z19pZCI6IDUwMDAwLAotICAgICJ1cmwiOiAiaHR0cDovL2V4
YW1wbGUuY29tLzEwMDAwIiwKLSAgICAibmFtZSI6ICJQYXRjaDEiLAotICAgICJpc19vYnNvbGV0
ZSI6IEZhbHNlLAotICAgICJpc19wYXRjaCI6IFRydWUsCi0gICAgInJldmlldyI6ICIrIiwKLSAg
ICAicmV2aWV3ZXJfZW1haWwiOiAiZm9vQGJhci5jb20iLAotICAgICJjb21taXQtcXVldWUiOiAi
KyIsCi0gICAgImNvbW1pdHRlcl9lbWFpbCI6ICJmb29AYmFyLmNvbSIsCi0gICAgImF0dGFjaGVy
X2VtYWlsIjogIkNvbnRyaWJ1dGVyMSIsCi19Ci0KLQotX3BhdGNoMiA9IHsKLSAgICAiaWQiOiAx
MDAwMSwKLSAgICAiYnVnX2lkIjogNTAwMDAsCi0gICAgInVybCI6ICJodHRwOi8vZXhhbXBsZS5j
b20vMTAwMDEiLAotICAgICJuYW1lIjogIlBhdGNoMiIsCi0gICAgImlzX29ic29sZXRlIjogRmFs
c2UsCi0gICAgImlzX3BhdGNoIjogVHJ1ZSwKLSAgICAicmV2aWV3IjogIisiLAotICAgICJyZXZp
ZXdlcl9lbWFpbCI6ICJyZXZpZXdlcjJAd2Via2l0Lm9yZyIsCi0gICAgImNvbW1pdC1xdWV1ZSI6
ICIrIiwKLSAgICAiY29tbWl0dGVyX2VtYWlsIjogIm5vbi1jb21taXR0ZXJAZXhhbXBsZS5jb20i
LAotICAgICJhdHRhY2hlcl9lbWFpbCI6ICJlcmljQHdlYmtpdC5vcmciLAotfQotCi0KLV9wYXRj
aDMgPSB7Ci0gICAgImlkIjogMTAwMDIsCi0gICAgImJ1Z19pZCI6IDUwMDAxLAotICAgICJ1cmwi
OiAiaHR0cDovL2V4YW1wbGUuY29tLzEwMDAyIiwKLSAgICAibmFtZSI6ICJQYXRjaDMiLAotICAg
ICJpc19vYnNvbGV0ZSI6IEZhbHNlLAotICAgICJpc19wYXRjaCI6IFRydWUsCi0gICAgInJldmll
dyI6ICI/IiwKLSAgICAiYXR0YWNoZXJfZW1haWwiOiAiZXJpY0B3ZWJraXQub3JnIiwKLX0KLQot
Ci1fcGF0Y2g0ID0gewotICAgICJpZCI6IDEwMDAzLAotICAgICJidWdfaWQiOiA1MDAwMywKLSAg
ICAidXJsIjogImh0dHA6Ly9leGFtcGxlLmNvbS8xMDAwMiIsCi0gICAgIm5hbWUiOiAiUGF0Y2gz
IiwKLSAgICAiaXNfb2Jzb2xldGUiOiBGYWxzZSwKLSAgICAiaXNfcGF0Y2giOiBUcnVlLAotICAg
ICJyZXZpZXciOiAiKyIsCi0gICAgImNvbW1pdC1xdWV1ZSI6ICI/IiwKLSAgICAicmV2aWV3ZXJf
ZW1haWwiOiAiZm9vQGJhci5jb20iLAotICAgICJhdHRhY2hlcl9lbWFpbCI6ICJDb250cmlidXRl
cjIiLAotfQotCi0KLV9wYXRjaDUgPSB7Ci0gICAgImlkIjogMTAwMDQsCi0gICAgImJ1Z19pZCI6
IDUwMDAzLAotICAgICJ1cmwiOiAiaHR0cDovL2V4YW1wbGUuY29tLzEwMDAyIiwKLSAgICAibmFt
ZSI6ICJQYXRjaDUiLAotICAgICJpc19vYnNvbGV0ZSI6IEZhbHNlLAotICAgICJpc19wYXRjaCI6
IFRydWUsCi0gICAgInJldmlldyI6ICIrIiwKLSAgICAicmV2aWV3ZXJfZW1haWwiOiAiZm9vQGJh
ci5jb20iLAotICAgICJhdHRhY2hlcl9lbWFpbCI6ICJlcmljQHdlYmtpdC5vcmciLAotfQotCi0K
LV9wYXRjaDYgPSB7ICMgVmFsaWQgY29tbWl0dGVyLCBidXQgbm8gcmV2aWV3ZXIuCi0gICAgImlk
IjogMTAwMDUsCi0gICAgImJ1Z19pZCI6IDUwMDAzLAotICAgICJ1cmwiOiAiaHR0cDovL2V4YW1w
bGUuY29tLzEwMDAyIiwKLSAgICAibmFtZSI6ICJST0xMT1VUIG9mIHIzNDg5IiwKLSAgICAiaXNf
b2Jzb2xldGUiOiBGYWxzZSwKLSAgICAiaXNfcGF0Y2giOiBUcnVlLAotICAgICJjb21taXQtcXVl
dWUiOiAiKyIsCi0gICAgImNvbW1pdHRlcl9lbWFpbCI6ICJmb29AYmFyLmNvbSIsCi0gICAgImF0
dGFjaGVyX2VtYWlsIjogImVyaWNAd2Via2l0Lm9yZyIsCi19Ci0KLQotX3BhdGNoNyA9IHsgIyBW
YWxpZCByZXZpZXcsIHBhdGNoIGlzIG1hcmtlZCBvYnNvbGV0ZS4KLSAgICAiaWQiOiAxMDAwNiwK
LSAgICAiYnVnX2lkIjogNTAwMDIsCi0gICAgInVybCI6ICJodHRwOi8vZXhhbXBsZS5jb20vMTAw
MDIiLAotICAgICJuYW1lIjogIlBhdGNoNyIsCi0gICAgImlzX29ic29sZXRlIjogVHJ1ZSwKLSAg
ICAiaXNfcGF0Y2giOiBUcnVlLAotICAgICJyZXZpZXciOiAiKyIsCi0gICAgInJldmlld2VyX2Vt
YWlsIjogImZvb0BiYXIuY29tIiwKLSAgICAiYXR0YWNoZXJfZW1haWwiOiAiZXJpY0B3ZWJraXQu
b3JnIiwKLX0KLQotCi0jIFRoaXMgbWF0Y2hlcyBvbmUgb2YgQnVnLnVuYXNzaWduZWRfZW1haWxz
Ci1fdW5hc3NpZ25lZF9lbWFpbCA9ICJ3ZWJraXQtdW5hc3NpZ25lZEBsaXN0cy53ZWJraXQub3Jn
IgotIyBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIEZsYWt5VGVzdFJlcG9ydGVyIHRvIGJlbGlldmUg
dGhlIGJ1ZwotIyB3YXMgZmlsZWQgYnkgb25lIG9mIHRoZSB3ZWJraXRweSBib3RzLgotX2NvbW1p
dF9xdWV1ZV9lbWFpbCA9ICJjb21taXQtcXVldWVAd2Via2l0Lm9yZyIKLQotCi1fYnVnMSA9IHsK
LSAgICAiaWQiOiA1MDAwMCwKLSAgICAidGl0bGUiOiAiQnVnIHdpdGggdHdvIHIrJ2QgYW5kIGNx
KydkIHBhdGNoZXMsIG9uZSBvZiB3aGljaCBoYXMgYW4gIgotICAgICAgICAgICAgICJpbnZhbGlk
IGNvbW1pdC1xdWV1ZSBzZXR0ZXIuIiwKLSAgICAicmVwb3J0ZXJfZW1haWwiOiAiZm9vQGZvby5j
b20iLAotICAgICJhc3NpZ25lZF90b19lbWFpbCI6IF91bmFzc2lnbmVkX2VtYWlsLAotICAgICJj
Y19lbWFpbHMiOiBbXSwKLSAgICAiYXR0YWNobWVudHMiOiBbX3BhdGNoMSwgX3BhdGNoMl0sCi0g
ICAgImJ1Z19zdGF0dXMiOiAiVU5DT05GSVJNRUQiLAotICAgICJjb21tZW50cyI6IFtdLAotfQot
Ci0KLV9idWcyID0gewotICAgICJpZCI6IDUwMDAxLAotICAgICJ0aXRsZSI6ICJCdWcgd2l0aCBh
IHBhdGNoIG5lZWRpbmcgcmV2aWV3LiIsCi0gICAgInJlcG9ydGVyX2VtYWlsIjogImVyaWNAd2Vi
a2l0Lm9yZyIsCi0gICAgImFzc2lnbmVkX3RvX2VtYWlsIjogImZvb0Bmb28uY29tIiwKLSAgICAi
Y2NfZW1haWxzIjogWyJhYmFydGhAd2Via2l0Lm9yZyIsIF0sCi0gICAgImF0dGFjaG1lbnRzIjog
W19wYXRjaDNdLAotICAgICJidWdfc3RhdHVzIjogIkFTU0lHTkVEIiwKLSAgICAiY29tbWVudHMi
OiBbeyJjb21tZW50X2RhdGUiOiAgZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMSwgNiwgMTEsIDksIDQs
IDMpLAotICAgICAgICAgICAgICAgICAgImNvbW1lbnRfZW1haWwiOiAiYmFyQGZvby5jb20iLAot
ICAgICAgICAgICAgICAgICAgInRleHQiOiAiTWVzc2FnZTEuIiwKLSAgICAgICAgfSwKLSAgICBd
LAotfQotCi0KLV9idWczID0gewotICAgICJpZCI6IDUwMDAyLAotICAgICJ0aXRsZSI6ICJUaGUg
dGhpcmQgYnVnIiwKLSAgICAicmVwb3J0ZXJfZW1haWwiOiAiZm9vQGZvby5jb20iLAotICAgICJh
c3NpZ25lZF90b19lbWFpbCI6IF91bmFzc2lnbmVkX2VtYWlsLAotICAgICJjY19lbWFpbHMiOiBb
XSwKLSAgICAiYXR0YWNobWVudHMiOiBbX3BhdGNoN10sCi0gICAgImJ1Z19zdGF0dXMiOiAiTkVX
IiwKLSAgICAiY29tbWVudHMiOiBbXSwKLX0KLQotCi1fYnVnNCA9IHsKLSAgICAiaWQiOiA1MDAw
MywKLSAgICAidGl0bGUiOiAiVGhlIGZvdXJ0aCBidWciLAotICAgICJyZXBvcnRlcl9lbWFpbCI6
ICJmb29AZm9vLmNvbSIsCi0gICAgImFzc2lnbmVkX3RvX2VtYWlsIjogImZvb0Bmb28uY29tIiwK
LSAgICAiY2NfZW1haWxzIjogW10sCi0gICAgImF0dGFjaG1lbnRzIjogW19wYXRjaDQsIF9wYXRj
aDUsIF9wYXRjaDZdLAotICAgICJidWdfc3RhdHVzIjogIlJFT1BFTkVEIiwKLSAgICAiY29tbWVu
dHMiOiBbXSwKLX0KLQotCi1fYnVnNSA9IHsKLSAgICAiaWQiOiA1MDAwNCwKLSAgICAidGl0bGUi
OiAiVGhlIGZpZnRoIGJ1ZyIsCi0gICAgInJlcG9ydGVyX2VtYWlsIjogX2NvbW1pdF9xdWV1ZV9l
bWFpbCwKLSAgICAiYXNzaWduZWRfdG9fZW1haWwiOiAiZm9vQGZvby5jb20iLAotICAgICJjY19l
bWFpbHMiOiBbXSwKLSAgICAiYXR0YWNobWVudHMiOiBbXSwKLSAgICAiYnVnX3N0YXR1cyI6ICJS
RVNPTFZFRCIsCi0gICAgImR1cF9pZCI6IDUwMDAyLAotICAgICJjb21tZW50cyI6IFtdLAotfQot
Ci0KLWNsYXNzIE1vY2tCdWd6aWxsYVF1ZXJpZXMob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBidWd6aWxsYSk6Ci0gICAgICAgIHNlbGYuX2J1Z3ppbGxhID0gYnVnemlsbGEKLQot
ICAgIGRlZiBfYWxsX2J1Z3Moc2VsZik6Ci0gICAgICAgIHJldHVybiBtYXAobGFtYmRhIGJ1Z19k
aWN0aW9uYXJ5OiBCdWcoYnVnX2RpY3Rpb25hcnksIHNlbGYuX2J1Z3ppbGxhKSwKLSAgICAgICAg
ICAgICAgICAgICBzZWxmLl9idWd6aWxsYS5idWdfY2FjaGUudmFsdWVzKCkpCi0KLSAgICBkZWYg
ZmV0Y2hfYnVnX2lkc19mcm9tX2NvbW1pdF9xdWV1ZShzZWxmKToKLSAgICAgICAgYnVnc193aXRo
X2NvbW1pdF9xdWV1ZWRfcGF0Y2hlcyA9IGZpbHRlcigKLSAgICAgICAgICAgICAgICBsYW1iZGEg
YnVnOiBidWcuY29tbWl0X3F1ZXVlZF9wYXRjaGVzKCksCi0gICAgICAgICAgICAgICAgc2VsZi5f
YWxsX2J1Z3MoKSkKLSAgICAgICAgcmV0dXJuIG1hcChsYW1iZGEgYnVnOiBidWcuaWQoKSwgYnVn
c193aXRoX2NvbW1pdF9xdWV1ZWRfcGF0Y2hlcykKLQotICAgIGRlZiBmZXRjaF9hdHRhY2htZW50
X2lkc19mcm9tX3Jldmlld19xdWV1ZShzZWxmKToKLSAgICAgICAgdW5yZXZpZXdlZF9wYXRjaGVz
ID0gc3VtKFtidWcudW5yZXZpZXdlZF9wYXRjaGVzKCkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgYnVnIGluIHNlbGYuX2FsbF9idWdzKCldLCBbXSkKLSAgICAgICAgcmV0
dXJuIG1hcChsYW1iZGEgcGF0Y2g6IHBhdGNoLmlkKCksIHVucmV2aWV3ZWRfcGF0Y2hlcykKLQot
ICAgIGRlZiBmZXRjaF9wYXRjaGVzX2Zyb21fY29tbWl0X3F1ZXVlKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc3VtKFtidWcuY29tbWl0X3F1ZXVlZF9wYXRjaGVzKCkKLSAgICAgICAgICAgICAgICAg
ICAgZm9yIGJ1ZyBpbiBzZWxmLl9hbGxfYnVncygpXSwgW10pCi0KLSAgICBkZWYgZmV0Y2hfYnVn
X2lkc19mcm9tX3BlbmRpbmdfY29tbWl0X2xpc3Qoc2VsZik6Ci0gICAgICAgIGJ1Z3Nfd2l0aF9y
ZXZpZXdlZF9wYXRjaGVzID0gZmlsdGVyKGxhbWJkYSBidWc6IGJ1Zy5yZXZpZXdlZF9wYXRjaGVz
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Fs
bF9idWdzKCkpCi0gICAgICAgIGJ1Z19pZHMgPSBtYXAobGFtYmRhIGJ1ZzogYnVnLmlkKCksIGJ1
Z3Nfd2l0aF9yZXZpZXdlZF9wYXRjaGVzKQotICAgICAgICAjIE5PVEU6IFRoaXMgbWFudWFsIGhh
Y2sgaGVyZSBpcyB0byBhbGxvdyB0ZXN0aW5nIGxvZ2dpbmcgaW4KLSAgICAgICAgIyB0ZXN0X2Fz
c2lnbl90b19jb21taXR0ZXIgdGhlIHJlYWwgcGVuZGluZy1jb21taXQgcXVlcnkgb24gYnVnemls
bGEKLSAgICAgICAgIyB3aWxsIHJldHVybiBidWdzIHdpdGggcGF0Y2hlcyB3aGljaCBoYXZlIHIr
LCBidXQgYXJlIGFsc28gb2Jzb2xldGUuCi0gICAgICAgIHJldHVybiBidWdfaWRzICsgWzUwMDAy
XQotCi0gICAgZGVmIGZldGNoX3BhdGNoZXNfZnJvbV9wZW5kaW5nX2NvbW1pdF9saXN0KHNlbGYp
OgotICAgICAgICByZXR1cm4gc3VtKFtidWcucmV2aWV3ZWRfcGF0Y2hlcygpIGZvciBidWcgaW4g
c2VsZi5fYWxsX2J1Z3MoKV0sIFtdKQotCi0gICAgZGVmIGZldGNoX2J1Z3NfbWF0Y2hpbmdfc2Vh
cmNoKHNlbGYsIHNlYXJjaF9zdHJpbmcsIGF1dGhvcl9lbWFpbD1Ob25lKToKLSAgICAgICAgcmV0
dXJuIFtzZWxmLl9idWd6aWxsYS5mZXRjaF9idWcoNTAwMDQpLCBzZWxmLl9idWd6aWxsYS5mZXRj
aF9idWcoNTAwMDMpXQotCi0KLV9tb2NrX3Jldmlld2VycyA9IFtSZXZpZXdlcigiRm9vIEJhciIs
ICJmb29AYmFyLmNvbSIpLAotICAgICAgICAgICAgICAgICAgIFJldmlld2VyKCJSZXZpZXdlcjIi
LCAicmV2aWV3ZXIyQHdlYmtpdC5vcmciKV0KLQotCi0jIEZJWE1FOiBCdWd6aWxsYSBpcyB0aGUg
d3JvbmcgTW9jay1wb2ludC4gIE9uY2Ugd2UgaGF2ZSBhIEJ1Z3ppbGxhTmV0d29yawotIyAgICAg
ICAgY2xhc3Mgd2Ugc2hvdWxkIG1vY2sgdGhhdCBpbnN0ZWFkLgotIyBNb3N0IG9mIHRoaXMgY2xh
c3MgaXMganVzdCBjb3B5L3Bhc3RlIGZyb20gQnVnemlsbGEuCi1jbGFzcyBNb2NrQnVnemlsbGEo
b2JqZWN0KToKLQotICAgIGJ1Z19zZXJ2ZXJfdXJsID0gImh0dHA6Ly9leGFtcGxlLmNvbSIKLQot
ICAgIGJ1Z19jYWNoZSA9IF9pZF90b19vYmplY3RfZGljdGlvbmFyeShfYnVnMSwgX2J1ZzIsIF9i
dWczLCBfYnVnNCwgX2J1ZzUpCi0KLSAgICBhdHRhY2htZW50X2NhY2hlID0gX2lkX3RvX29iamVj
dF9kaWN0aW9uYXJ5KF9wYXRjaDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfcGF0Y2gyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX3BhdGNoMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9wYXRjaDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfcGF0Y2g1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX3BhdGNoNiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9wYXRjaDcpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0g
ICAgICAgIHNlbGYucXVlcmllcyA9IE1vY2tCdWd6aWxsYVF1ZXJpZXMoc2VsZikKLSAgICAgICAg
c2VsZi5jb21taXR0ZXJzID0gQ29tbWl0dGVyTGlzdChyZXZpZXdlcnM9X21vY2tfcmV2aWV3ZXJz
KQotICAgICAgICBzZWxmLl9vdmVycmlkZV9wYXRjaCA9IE5vbmUKLQotICAgIGRlZiBjcmVhdGVf
YnVnKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgYnVnX3RpdGxlLAotICAgICAgICAgICAgICAg
ICAgIGJ1Z19kZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgICBkaWZmPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgcGF0Y2hf
ZGVzY3JpcHRpb249Tm9uZSwKLSAgICAgICAgICAgICAgICAgICBjYz1Ob25lLAotICAgICAgICAg
ICAgICAgICAgIGJsb2NrZWQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICBtYXJrX2Zvcl9yZXZp
ZXc9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgbWFya19mb3JfY29tbWl0X3F1ZXVlPUZhbHNl
KToKLSAgICAgICAgbG9nKCJNT0NLIGNyZWF0ZV9idWciKQotICAgICAgICBsb2coImJ1Z190aXRs
ZTogJXMiICUgYnVnX3RpdGxlKQotICAgICAgICBsb2coImJ1Z19kZXNjcmlwdGlvbjogJXMiICUg
YnVnX2Rlc2NyaXB0aW9uKQotICAgICAgICBpZiBjb21wb25lbnQ6Ci0gICAgICAgICAgICBsb2co
ImNvbXBvbmVudDogJXMiICUgY29tcG9uZW50KQotICAgICAgICBpZiBjYzoKLSAgICAgICAgICAg
IGxvZygiY2M6ICVzIiAlIGNjKQotICAgICAgICBpZiBibG9ja2VkOgotICAgICAgICAgICAgbG9n
KCJibG9ja2VkOiAlcyIgJSBibG9ja2VkKQotICAgICAgICByZXR1cm4gNTAwMDQKLQotICAgIGRl
ZiBxdWlwcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIFsiR29vZCBhcnRpc3RzIGNvcHkuIEdyZWF0
IGFydGlzdHMgc3RlYWwuIC0gUGFibG8gUGljYXNzbyJdCi0KLSAgICBkZWYgZmV0Y2hfYnVnKHNl
bGYsIGJ1Z19pZCk6Ci0gICAgICAgIHJldHVybiBCdWcoc2VsZi5idWdfY2FjaGUuZ2V0KGludChi
dWdfaWQpKSwgc2VsZikKLQotICAgIGRlZiBzZXRfb3ZlcnJpZGVfcGF0Y2goc2VsZiwgcGF0Y2gp
OgotICAgICAgICBzZWxmLl9vdmVycmlkZV9wYXRjaCA9IHBhdGNoCi0KLSAgICBkZWYgZmV0Y2hf
YXR0YWNobWVudChzZWxmLCBhdHRhY2htZW50X2lkKToKLSAgICAgICAgaWYgc2VsZi5fb3ZlcnJp
ZGVfcGF0Y2g6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fb3ZlcnJpZGVfcGF0Y2gKLQotICAg
ICAgICBhdHRhY2htZW50X2RpY3Rpb25hcnkgPSBzZWxmLmF0dGFjaG1lbnRfY2FjaGUuZ2V0KGF0
dGFjaG1lbnRfaWQpCi0gICAgICAgIGlmIG5vdCBhdHRhY2htZW50X2RpY3Rpb25hcnk6Ci0gICAg
ICAgICAgICBwcmludCAiTU9DSzogZmV0Y2hfYXR0YWNobWVudDogJXMgaXMgbm90IGEga25vd24g
YXR0YWNobWVudCBpZCIgJSBhdHRhY2htZW50X2lkCi0gICAgICAgICAgICByZXR1cm4gTm9uZQot
ICAgICAgICBidWcgPSBzZWxmLmZldGNoX2J1ZyhhdHRhY2htZW50X2RpY3Rpb25hcnlbImJ1Z19p
ZCJdKQotICAgICAgICBmb3IgYXR0YWNobWVudCBpbiBidWcuYXR0YWNobWVudHMoaW5jbHVkZV9v
YnNvbGV0ZT1UcnVlKToKLSAgICAgICAgICAgIGlmIGF0dGFjaG1lbnQuaWQoKSA9PSBpbnQoYXR0
YWNobWVudF9pZCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQKLQotICAgIGRl
ZiBidWdfdXJsX2Zvcl9idWdfaWQoc2VsZiwgYnVnX2lkKToKLSAgICAgICAgcmV0dXJuICIlcy8l
cyIgJSAoc2VsZi5idWdfc2VydmVyX3VybCwgYnVnX2lkKQotCi0gICAgZGVmIGZldGNoX2J1Z19k
aWN0aW9uYXJ5KHNlbGYsIGJ1Z19pZCk6Ci0gICAgICAgIHJldHVybiBzZWxmLmJ1Z19jYWNoZS5n
ZXQoYnVnX2lkKQotCi0gICAgZGVmIGF0dGFjaG1lbnRfdXJsX2Zvcl9pZChzZWxmLCBhdHRhY2ht
ZW50X2lkLCBhY3Rpb249InZpZXciKToKLSAgICAgICAgYWN0aW9uX3BhcmFtID0gIiIKLSAgICAg
ICAgaWYgYWN0aW9uIGFuZCBhY3Rpb24gIT0gInZpZXciOgotICAgICAgICAgICAgYWN0aW9uX3Bh
cmFtID0gIiZhY3Rpb249JXMiICUgYWN0aW9uCi0gICAgICAgIHJldHVybiAiJXMvJXMlcyIgJSAo
c2VsZi5idWdfc2VydmVyX3VybCwgYXR0YWNobWVudF9pZCwgYWN0aW9uX3BhcmFtKQotCi0gICAg
ZGVmIHJlYXNzaWduX2J1ZyhzZWxmLCBidWdfaWQsIGFzc2lnbmVlPU5vbmUsIGNvbW1lbnRfdGV4
dD1Ob25lKToKLSAgICAgICAgbG9nKCJNT0NLIHJlYXNzaWduX2J1ZzogYnVnX2lkPSVzLCBhc3Np
Z25lZT0lcyIgJSAoYnVnX2lkLCBhc3NpZ25lZSkpCi0gICAgICAgIGlmIGNvbW1lbnRfdGV4dDoK
LSAgICAgICAgICAgIGxvZygiLS0gQmVnaW4gY29tbWVudCAtLSIpCi0gICAgICAgICAgICBsb2co
Y29tbWVudF90ZXh0KQotICAgICAgICAgICAgbG9nKCItLSBFbmQgY29tbWVudCAtLSIpCi0KLSAg
ICBkZWYgc2V0X2ZsYWdfb25fYXR0YWNobWVudChzZWxmLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF0dGFjaG1lbnRfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudF90ZXh0PU5vbmUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9jb21tZW50X3RleHQ9Tm9uZSk6Ci0g
ICAgICAgIGxvZygiTU9DSyBzZXR0aW5nIGZsYWcgJyVzJyB0byAnJXMnIG9uIGF0dGFjaG1lbnQg
JyVzJyB3aXRoIGNvbW1lbnQgJyVzJyBhbmQgYWRkaXRpb25hbCBjb21tZW50ICclcyciICUgKAot
ICAgICAgICAgICAgZmxhZ19uYW1lLCBmbGFnX3ZhbHVlLCBhdHRhY2htZW50X2lkLCBjb21tZW50
X3RleHQsIGFkZGl0aW9uYWxfY29tbWVudF90ZXh0KSkKLQotICAgIGRlZiBwb3N0X2NvbW1lbnRf
dG9fYnVnKHNlbGYsIGJ1Z19pZCwgY29tbWVudF90ZXh0LCBjYz1Ob25lKToKLSAgICAgICAgbG9n
KCJNT0NLIGJ1ZyBjb21tZW50OiBidWdfaWQ9JXMsIGNjPSVzXG4tLS0gQmVnaW4gY29tbWVudCAt
LS1cbiVzXG4tLS0gRW5kIGNvbW1lbnQgLS0tXG4iICUgKAotICAgICAgICAgICAgYnVnX2lkLCBj
YywgY29tbWVudF90ZXh0KSkKLQotICAgIGRlZiBhZGRfYXR0YWNobWVudF90b19idWcoc2VsZiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Z19pZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbGVfb3Jfc3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1O
b25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudF90ZXh0PU5vbmUpOgot
ICAgICAgICBsb2coIk1PQ0sgYWRkX2F0dGFjaG1lbnRfdG9fYnVnOiBidWdfaWQ9JXMsIGRlc2Ny
aXB0aW9uPSVzIGZpbGVuYW1lPSVzIiAlIChidWdfaWQsIGRlc2NyaXB0aW9uLCBmaWxlbmFtZSkp
Ci0gICAgICAgIGlmIGNvbW1lbnRfdGV4dDoKLSAgICAgICAgICAgIGxvZygiLS0gQmVnaW4gY29t
bWVudCAtLSIpCi0gICAgICAgICAgICBsb2coY29tbWVudF90ZXh0KQotICAgICAgICAgICAgbG9n
KCItLSBFbmQgY29tbWVudCAtLSIpCi0KLSAgICBkZWYgYWRkX3BhdGNoX3RvX2J1ZyhzZWxmLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Z19pZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBkaWZmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1lbnRfdGV4dD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hcmtfZm9yX3Jldmlldz1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXJr
X2Zvcl9jb21taXRfcXVldWU9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWFya19m
b3JfbGFuZGluZz1GYWxzZSk6Ci0gICAgICAgIGxvZygiTU9DSyBhZGRfcGF0Y2hfdG9fYnVnOiBi
dWdfaWQ9JXMsIGRlc2NyaXB0aW9uPSVzLCBtYXJrX2Zvcl9yZXZpZXc9JXMsIG1hcmtfZm9yX2Nv
bW1pdF9xdWV1ZT0lcywgbWFya19mb3JfbGFuZGluZz0lcyIgJQotICAgICAgICAgICAgKGJ1Z19p
ZCwgZGVzY3JpcHRpb24sIG1hcmtfZm9yX3JldmlldywgbWFya19mb3JfY29tbWl0X3F1ZXVlLCBt
YXJrX2Zvcl9sYW5kaW5nKSkKLSAgICAgICAgaWYgY29tbWVudF90ZXh0OgotICAgICAgICAgICAg
bG9nKCItLSBCZWdpbiBjb21tZW50IC0tIikKLSAgICAgICAgICAgIGxvZyhjb21tZW50X3RleHQp
Ci0gICAgICAgICAgICBsb2coIi0tIEVuZCBjb21tZW50IC0tIikKLQotICAgIGRlZiBhZGRfY2Nf
dG9fYnVnKHNlbGYsIGJ1Z19pZCwgY2NzKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIG9ic29s
ZXRlX2F0dGFjaG1lbnQoc2VsZiwgYXR0YWNobWVudF9pZCwgbWVzc2FnZT1Ob25lKToKLSAgICAg
ICAgcGFzcwotCi0gICAgZGVmIHJlb3Blbl9idWcoc2VsZiwgYnVnX2lkLCBtZXNzYWdlKToKLSAg
ICAgICAgcGFzcwotCi0gICAgZGVmIGNsb3NlX2J1Z19hc19maXhlZChzZWxmLCBidWdfaWQsIG1l
c3NhZ2UpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgY2xlYXJfYXR0YWNobWVudF9mbGFncyhz
ZWxmLCBhdHRhY2htZW50X2lkLCBtZXNzYWdlKToKLSAgICAgICAgcGFzcwotCi0KLWNsYXNzIE1v
Y2tCdWlsZGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgotICAgICAg
ICBzZWxmLl9uYW1lID0gbmFtZQotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLl9uYW1lCi0KLSAgICBkZWYgcmVzdWx0c191cmwoc2VsZik6Ci0gICAgICAgIHJldHVy
biAiaHR0cDovL2V4YW1wbGUuY29tL2J1aWxkZXJzLyVzL3Jlc3VsdHMiICUgc2VsZi5uYW1lKCkK
LQotICAgIGRlZiBhY2N1bXVsYXRlZF9yZXN1bHRzX3VybChzZWxmKToKLSAgICAgICAgcmV0dXJu
ICJodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy8lcy9yZXN1bHRzL2xheW91dC10ZXN0LXJl
c3VsdHMiICUgc2VsZi5uYW1lKCkKLQotICAgIGRlZiBmb3JjZV9idWlsZChzZWxmLCB1c2VybmFt
ZSwgY29tbWVudHMpOgotICAgICAgICBsb2coIk1PQ0s6IGZvcmNlX2J1aWxkOiBuYW1lPSVzLCB1
c2VybmFtZT0lcywgY29tbWVudHM9JXMiICUgKAotICAgICAgICAgICAgc2VsZi5fbmFtZSwgdXNl
cm5hbWUsIGNvbW1lbnRzKSkKLQotCi1jbGFzcyBNb2NrRmFpbHVyZU1hcChvYmplY3QpOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBidWlsZGJvdCk6Ci0gICAgICAgIHNlbGYuX2J1aWxkYm90ID0g
YnVpbGRib3QKLQotICAgIGRlZiBpc19lbXB0eShzZWxmKToKLSAgICAgICAgcmV0dXJuIEZhbHNl
Ci0KLSAgICBkZWYgZmlsdGVyX291dF9vbGRfZmFpbHVyZXMoc2VsZiwgaXNfb2xkX3JldmlzaW9u
KToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGZhaWxpbmdfcmV2aXNpb25zKHNlbGYpOgotICAg
ICAgICByZXR1cm4gWzI5ODM3XQotCi0gICAgZGVmIGJ1aWxkZXJzX2ZhaWxpbmdfZm9yKHNlbGYs
IHJldmlzaW9uKToKLSAgICAgICAgcmV0dXJuIFtzZWxmLl9idWlsZGJvdC5idWlsZGVyX3dpdGhf
bmFtZSgiQnVpbGRlcjEiKV0KLQotICAgIGRlZiB0ZXN0c19mYWlsaW5nX2ZvcihzZWxmLCByZXZp
c2lvbik6Ci0gICAgICAgIHJldHVybiBbIm1vY2stdGVzdC0xIl0KLQotICAgIGRlZiBmYWlsaW5n
X3Rlc3RzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2V0KFsibW9jay10ZXN0LTEiXSkKLQotCi1j
bGFzcyBNb2NrQnVpbGRCb3Qob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAg
ICAgIHNlbGYuX21vY2tfYnVpbGRlcjFfc3RhdHVzID0gewotICAgICAgICAgICAgIm5hbWUiOiAi
QnVpbGRlcjEiLAotICAgICAgICAgICAgImlzX2dyZWVuIjogVHJ1ZSwKLSAgICAgICAgICAgICJh
Y3Rpdml0eSI6ICJidWlsZGluZyIsCi0gICAgICAgIH0KLSAgICAgICAgc2VsZi5fbW9ja19idWls
ZGVyMl9zdGF0dXMgPSB7Ci0gICAgICAgICAgICAibmFtZSI6ICJCdWlsZGVyMiIsCi0gICAgICAg
ICAgICAiaXNfZ3JlZW4iOiBUcnVlLAotICAgICAgICAgICAgImFjdGl2aXR5IjogImlkbGUiLAot
ICAgICAgICB9Ci0KLSAgICBkZWYgYnVpbGRlcl93aXRoX25hbWUoc2VsZiwgbmFtZSk6Ci0gICAg
ICAgIHJldHVybiBNb2NrQnVpbGRlcihuYW1lKQotCi0gICAgZGVmIGJ1aWxkZXJfc3RhdHVzZXMo
c2VsZik6Ci0gICAgICAgIHJldHVybiBbCi0gICAgICAgICAgICBzZWxmLl9tb2NrX2J1aWxkZXIx
X3N0YXR1cywKLSAgICAgICAgICAgIHNlbGYuX21vY2tfYnVpbGRlcjJfc3RhdHVzLAotICAgICAg
ICBdCi0KLSAgICBkZWYgcmVkX2NvcmVfYnVpbGRlcnNfbmFtZXMoc2VsZik6Ci0gICAgICAgIGlm
IG5vdCBzZWxmLl9tb2NrX2J1aWxkZXIyX3N0YXR1c1siaXNfZ3JlZW4iXToKLSAgICAgICAgICAg
IHJldHVybiBbc2VsZi5fbW9ja19idWlsZGVyMl9zdGF0dXNbIm5hbWUiXV0KLSAgICAgICAgcmV0
dXJuIFtdCi0KLSAgICBkZWYgcmVkX2NvcmVfYnVpbGRlcnMoc2VsZik6Ci0gICAgICAgIGlmIG5v
dCBzZWxmLl9tb2NrX2J1aWxkZXIyX3N0YXR1c1siaXNfZ3JlZW4iXToKLSAgICAgICAgICAgIHJl
dHVybiBbc2VsZi5fbW9ja19idWlsZGVyMl9zdGF0dXNdCi0gICAgICAgIHJldHVybiBbXQotCi0g
ICAgZGVmIGlkbGVfcmVkX2NvcmVfYnVpbGRlcnMoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxm
Ll9tb2NrX2J1aWxkZXIyX3N0YXR1c1siaXNfZ3JlZW4iXToKLSAgICAgICAgICAgIHJldHVybiBb
c2VsZi5fbW9ja19idWlsZGVyMl9zdGF0dXNdCi0gICAgICAgIHJldHVybiBbXQotCi0gICAgZGVm
IGxhc3RfZ3JlZW5fcmV2aXNpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiA5NDc5Ci0KLSAgICBk
ZWYgbGlnaHRfdHJlZV9vbl9maXJlKHNlbGYpOgotICAgICAgICBzZWxmLl9tb2NrX2J1aWxkZXIy
X3N0YXR1c1siaXNfZ3JlZW4iXSA9IEZhbHNlCi0KLSAgICBkZWYgZmFpbHVyZV9tYXAoc2VsZik6
Ci0gICAgICAgIHJldHVybiBNb2NrRmFpbHVyZU1hcChzZWxmKQotCi0KLWNsYXNzIE1vY2tTQ00o
b2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZXN5c3RlbT1Ob25lLCBleGVjdXRp
dmU9Tm9uZSk6Ci0gICAgICAgIHNlbGYuY2hlY2tvdXRfcm9vdCA9ICIvbW9jay1jaGVja291dCIK
LSAgICAgICAgc2VsZi5hZGRlZF9wYXRocyA9IHNldCgpCi0gICAgICAgIHNlbGYuX2ZpbGVzeXN0
ZW0gPSBmaWxlc3lzdGVtIG9yIE1vY2tGaWxlU3lzdGVtKCkKLSAgICAgICAgc2VsZi5fZXhlY3V0
aXZlID0gZXhlY3V0aXZlIG9yIE1vY2tFeGVjdXRpdmUoKQotCi0gICAgZGVmIGFkZChzZWxmLCBk
ZXN0aW5hdGlvbl9wYXRoLCByZXR1cm5fZXhpdF9jb2RlPUZhbHNlKToKLSAgICAgICAgc2VsZi5h
ZGRlZF9wYXRocy5hZGQoZGVzdGluYXRpb25fcGF0aCkKLSAgICAgICAgaWYgcmV0dXJuX2V4aXRf
Y29kZToKLSAgICAgICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgZW5zdXJlX2NsZWFuX3dvcmtp
bmdfZGlyZWN0b3J5KHNlbGYsIGZvcmNlX2NsZWFuKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVm
IHN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAg
ICBkZWYgZW5zdXJlX25vX2xvY2FsX2NvbW1pdHMoc2VsZiwgZm9yY2VfY2xlYW4pOgotICAgICAg
ICBwYXNzCi0KLSAgICBkZWYgZXhpc3RzKHNlbGYsIHBhdGgpOgotICAgICAgICAjIFRlc3RSZWFs
TWFpbi50ZXN0X3JlYWxfbWFpbiAoYW5kIHNldmVyYWwgb3RoZXIgcmViYXNlbGluZSB0ZXN0cykg
YXJlIHNlbnNpdGl2ZSB0byB0aGlzIHJldHVybiB2YWx1ZS4KLSAgICAgICAgIyBXZSBzaG91bGQg
bWFrZSB0aG9zZSB0ZXN0cyBtb3JlIHJvYnVzdCwgYnV0IGZvciBub3cgd2UganVzdCByZXR1cm4g
VHJ1ZSBhbHdheXMgKHNpbmNlIG5vIHRlc3QgbmVlZHMgb3RoZXJ3aXNlKS4KLSAgICAgICAgcmV0
dXJuIFRydWUKLQotICAgIGRlZiBhYnNvbHV0ZV9wYXRoKHNlbGYsICpjb21wcyk6Ci0gICAgICAg
IHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5jaGVja291dF9yb290LCAqY29tcHMp
Ci0KLSAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgotICAgICAg
ICByZXR1cm4gWyJNb2NrRmlsZTEiXQotCi0gICAgZGVmIGNoYW5nZWRfZmlsZXNfZm9yX3Jldmlz
aW9uKHNlbGYsIHJldmlzaW9uKToKLSAgICAgICAgcmV0dXJuIFsiTW9ja0ZpbGUxIl0KLQotICAg
IGRlZiBoZWFkX3N2bl9yZXZpc2lvbihzZWxmKToKLSAgICAgICAgcmV0dXJuIDEyMzQKLQotICAg
IGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1Ob25lKToK
LSAgICAgICAgcmV0dXJuICJQYXRjaDEiCi0KLSAgICBkZWYgY29tbWl0X2lkc19mcm9tX2NvbW1p
dGlzaF9hcmd1bWVudHMoc2VsZiwgYXJncyk6Ci0gICAgICAgIHJldHVybiBbIkNvbW1pdGlzaDEi
LCAiQ29tbWl0aXNoMiJdCi0KLSAgICBkZWYgY29tbWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbihz
ZWxmLCByZXZpc2lvbik6Ci0gICAgICAgIHJldHVybiAibW9ja0B3ZWJraXQub3JnIgotCi0gICAg
ZGVmIGNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAg
cGFzcwotCi0gICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5h
bWU9Tm9uZSwgcGFzc3dvcmQ9Tm9uZSwgZ2l0X2NvbW1pdD1Ob25lLCBmb3JjZV9zcXVhc2g9RmFs
c2UsIGNoYW5nZWRfZmlsZXM9Tm9uZSk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBtZXJnZV9i
YXNlKHNlbGYsIGdpdF9jb21taXQpOgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGNv
bW1pdF9tZXNzYWdlX2Zvcl9sb2NhbF9jb21taXQoc2VsZiwgY29tbWl0X2lkKToKLSAgICAgICAg
aWYgY29tbWl0X2lkID09ICJDb21taXRpc2gxIjoKLSAgICAgICAgICAgIHJldHVybiBDb21taXRN
ZXNzYWdlKCJDb21taXRNZXNzYWdlMVxuIiBcCi0gICAgICAgICAgICAgICAgImh0dHBzOi8vYnVn
cy5leGFtcGxlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwMDBcbiIpCi0gICAgICAgIGlmIGNvbW1p
dF9pZCA9PSAiQ29tbWl0aXNoMiI6Ci0gICAgICAgICAgICByZXR1cm4gQ29tbWl0TWVzc2FnZSgi
Q29tbWl0TWVzc2FnZTJcbiIgXAotICAgICAgICAgICAgICAgICJodHRwczovL2J1Z3MuZXhhbXBs
ZS5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDAxXG4iKQotICAgICAgICByYWlzZSBFeGNlcHRpb24o
IkJvZ3VzIGNvbW1pdF9pZCBpbiBjb21taXRfbWVzc2FnZV9mb3JfbG9jYWxfY29tbWl0LiIpCi0K
LSAgICBkZWYgZGlmZl9mb3JfZmlsZShzZWxmLCBwYXRoLCBsb2c9Tm9uZSk6Ci0gICAgICAgIHJl
dHVybiBwYXRoICsgJy1kaWZmJwotCi0gICAgZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNlbGYsIHJl
dmlzaW9uKToKLSAgICAgICAgcmV0dXJuICJEaWZmRm9yUmV2aXNpb24lc1xuaHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDUiICUgcmV2aXNpb24KLQotICAgIGRlZiBz
aG93X2hlYWQoc2VsZiwgcGF0aCk6Ci0gICAgICAgIHJldHVybiBwYXRoCi0KLSAgICBkZWYgc3Zu
X3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoc2VsZiwgY29tbWl0X3RleHQpOgotICAgICAgICBy
ZXR1cm4gIjQ5ODI0IgotCi0gICAgZGVmIGRlbGV0ZShzZWxmLCBwYXRoKToKLSAgICAgICAgaWYg
bm90IHNlbGYuX2ZpbGVzeXN0ZW06Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgc2Vs
Zi5fZmlsZXN5c3RlbS5leGlzdHMocGF0aCk6Ci0gICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVt
LnJlbW92ZShwYXRoKQotCi0KLWNsYXNzIE1vY2tERVBTKG9iamVjdCk6Ci0gICAgZGVmIHJlYWRf
dmFyaWFibGUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiA2NTY0Ci0KLSAgICBkZWYgd3Jp
dGVfdmFyaWFibGUoc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICBsb2coIk1PQ0s6IE1vY2tE
RVBTLndyaXRlX3ZhcmlhYmxlKCVzLCAlcykiICUgKG5hbWUsIHZhbHVlKSkKLQotCi1jbGFzcyBN
b2NrQ29tbWl0TWVzc2FnZShvYmplY3QpOgotICAgIGRlZiBtZXNzYWdlKHNlbGYpOgotICAgICAg
ICByZXR1cm4gIlRoaXMgaXMgYSBmYWtlIGNvbW1pdCBtZXNzYWdlIHRoYXQgaXMgYXQgbGVhc3Qg
NTAgY2hhcmFjdGVycy4iCi0KLWNsYXNzIE1vY2tDaGVja291dChvYmplY3QpOgotCi0gICAgX2Nv
bW1pdHRlcl9saXN0ID0gQ29tbWl0dGVyTGlzdCgpCi0KLSAgICBkZWYgY29tbWl0X2luZm9fZm9y
X3JldmlzaW9uKHNlbGYsIHN2bl9yZXZpc2lvbik6Ci0gICAgICAgICMgVGhlIHJlYWwgQ2hlY2tv
dXQgd291bGQgcHJvYmFibHkgdGhyb3cgYW4gZXhjZXB0aW9uLCBidXQgdGhpcyBpcyB0aGUgb25s
eSB3YXkgdGVzdHMgaGF2ZSB0byBnZXQgTm9uZSBiYWNrIGF0IHRoZSBtb21lbnQuCi0gICAgICAg
IGlmIG5vdCBzdm5fcmV2aXNpb246Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBy
ZXR1cm4gQ29tbWl0SW5mbyhzdm5fcmV2aXNpb24sICJlcmljQHdlYmtpdC5vcmciLCB7Ci0gICAg
ICAgICAgICAiYnVnX2lkIjogNTAwMDAsCi0gICAgICAgICAgICAiYXV0aG9yX25hbWUiOiAiQWRh
bSBCYXJ0aCIsCi0gICAgICAgICAgICAiYXV0aG9yX2VtYWlsIjogImFiYXJ0aEB3ZWJraXQub3Jn
IiwKLSAgICAgICAgICAgICJhdXRob3IiOiBzZWxmLl9jb21taXR0ZXJfbGlzdC5jb250cmlidXRv
cl9ieV9lbWFpbCgiYWJhcnRoQHdlYmtpdC5vcmciKSwKLSAgICAgICAgICAgICJyZXZpZXdlcl90
ZXh0IjogIkRhcmluIEFkbGVyIiwKLSAgICAgICAgICAgICJyZXZpZXdlciI6IHNlbGYuX2NvbW1p
dHRlcl9saXN0LmNvbW1pdHRlcl9ieV9uYW1lKCJEYXJpbiBBZGxlciIpLAotICAgICAgICAgICAg
ImNoYW5nZWRfZmlsZXMiOiBbCi0gICAgICAgICAgICAgICAgInBhdGgvdG8vZmlsZSIsCi0gICAg
ICAgICAgICAgICAgImFub3RoZXIvZmlsZSIsCi0gICAgICAgICAgICBdLAotICAgICAgICB9KQot
Ci0gICAgZGVmIGlzX3BhdGhfdG9fY2hhbmdlbG9nKHNlbGYsIHBhdGgpOgotICAgICAgICByZXR1
cm4gb3MucGF0aC5iYXNlbmFtZShwYXRoKSA9PSAiQ2hhbmdlTG9nIgotCi0gICAgZGVmIGJ1Z19p
ZF9mb3JfcmV2aXNpb24oc2VsZiwgc3ZuX3JldmlzaW9uKToKLSAgICAgICAgcmV0dXJuIDEyMzQ1
Ci0KLSAgICBkZWYgcmVjZW50X2NvbW1pdF9pbmZvc19mb3JfZmlsZXMoc2VsZiwgcGF0aHMpOgot
ICAgICAgICByZXR1cm4gW3NlbGYuY29tbWl0X2luZm9fZm9yX3JldmlzaW9uKDMyKV0KLQotICAg
IGRlZiBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYsIGdpdF9jb21taXQsIGNoYW5nZWRfZmlsZXM9
Tm9uZSk6Ci0gICAgICAgICMgSWRlYWxseSB3ZSdkIHJldHVybiBzb21ldGhpbmcgbW9yZSBpbnRl
cmVzdGluZyBoZXJlLiAgVGhlIHByb2JsZW0gaXMKLSAgICAgICAgIyB0aGF0IExhbmREaWZmIHdp
bGwgdHJ5IHRvIGFjdHVhbGx5IHJlYWQgdGhlIHBhdGNoIGZyb20gZGlzayEKLSAgICAgICAgcmV0
dXJuIFtdCi0KLSAgICBkZWYgY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdp
dF9jb21taXQsIGNoYW5nZWRfZmlsZXM9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBNb2NrQ29tbWl0
TWVzc2FnZSgpCi0KLSAgICBkZWYgY2hyb21pdW1fZGVwcyhzZWxmKToKLSAgICAgICAgcmV0dXJu
IE1vY2tERVBTKCkKLQotICAgIGRlZiBhcHBseV9wYXRjaChzZWxmLCBwYXRjaCwgZm9yY2U9RmFs
c2UpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgYXBwbHlfcmV2ZXJzZV9kaWZmcyhzZWxmLCBy
ZXZpc2lvbik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBzdWdnZXN0ZWRfcmV2aWV3ZXJzKHNl
bGYsIGdpdF9jb21taXQsIGNoYW5nZWRfZmlsZXM9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBbX21v
Y2tfcmV2aWV3ZXJzWzBdXQotCi0KLWNsYXNzIE1vY2tVc2VyKG9iamVjdCk6Ci0KLSAgICBAY2xh
c3NtZXRob2QKLSAgICBkZWYgcHJvbXB0KGNscywgbWVzc2FnZSwgcmVwZWF0PTEsIHJhd19pbnB1
dD1yYXdfaW5wdXQpOgotICAgICAgICByZXR1cm4gIk1vY2sgdXNlciByZXNwb25zZSIKLQotICAg
IEBjbGFzc21ldGhvZAotICAgIGRlZiBwcm9tcHRfd2l0aF9saXN0KGNscywgbGlzdF90aXRsZSwg
bGlzdF9pdGVtcywgY2FuX2Nob29zZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PXJhd19pbnB1
dCk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2Vs
Zi5vcGVuZWRfdXJscyA9IFtdCi0KLSAgICBkZWYgZWRpdChzZWxmLCBmaWxlcyk6Ci0gICAgICAg
IHBhc3MKLQotICAgIGRlZiBlZGl0X2NoYW5nZWxvZyhzZWxmLCBmaWxlcyk6Ci0gICAgICAgIHBh
c3MKLQotICAgIGRlZiBwYWdlKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICBwYXNzCi0KLSAgICBk
ZWYgY29uZmlybShzZWxmLCBtZXNzYWdlPU5vbmUsIGRlZmF1bHQ9J3knKToKLSAgICAgICAgbG9n
KG1lc3NhZ2UpCi0gICAgICAgIHJldHVybiBkZWZhdWx0ID09ICd5JwotCi0gICAgZGVmIGNhbl9v
cGVuX3VybChzZWxmKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBvcGVuX3VybChz
ZWxmLCB1cmwpOgotICAgICAgICBzZWxmLm9wZW5lZF91cmxzLmFwcGVuZCh1cmwpCi0gICAgICAg
IGlmIHVybC5zdGFydHN3aXRoKCJmaWxlOi8vIik6Ci0gICAgICAgICAgICBsb2coIk1PQ0s6IHVz
ZXIub3Blbl91cmw6IGZpbGU6Ly8uLi4iKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGxv
ZygiTU9DSzogdXNlci5vcGVuX3VybDogJXMiICUgdXJsKQotCi0KLWNsYXNzIE1vY2tJUkMob2Jq
ZWN0KToKLQotICAgIGRlZiBwb3N0KHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICBsb2coIk1PQ0s6
IGlyYy5wb3N0OiAlcyIgJSBtZXNzYWdlKQotCi0gICAgZGVmIGRpc2Nvbm5lY3Qoc2VsZik6Ci0g
ICAgICAgIGxvZygiTU9DSzogaXJjLmRpc2Nvbm5lY3QiKQotCi0KLWNsYXNzIE1vY2tTdGF0dXNT
ZXJ2ZXIob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBib3RfaWQ9Tm9uZSwgd29y
a19pdGVtcz1Ob25lKToKLSAgICAgICAgc2VsZi5ob3N0ID0gImV4YW1wbGUuY29tIgotICAgICAg
ICBzZWxmLmJvdF9pZCA9IGJvdF9pZAotICAgICAgICBzZWxmLl93b3JrX2l0ZW1zID0gd29ya19p
dGVtcyBvciBbXQotCi0gICAgZGVmIHBhdGNoX3N0YXR1cyhzZWxmLCBxdWV1ZV9uYW1lLCBwYXRj
aF9pZCk6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgc3ZuX3JldmlzaW9uKHNlbGYs
IHN2bl9yZXZpc2lvbik6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgbmV4dF93b3Jr
X2l0ZW0oc2VsZiwgcXVldWVfbmFtZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl93b3JrX2l0ZW1z
OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHNlbGYuX3dvcmtfaXRl
bXMucG9wKDApCi0KLSAgICBkZWYgcmVsZWFzZV93b3JrX2l0ZW0oc2VsZiwgcXVldWVfbmFtZSwg
cGF0Y2gpOgotICAgICAgICBsb2coIk1PQ0s6IHJlbGVhc2Vfd29ya19pdGVtOiAlcyAlcyIgJSAo
cXVldWVfbmFtZSwgcGF0Y2guaWQoKSkpCi0KLSAgICBkZWYgdXBkYXRlX3dvcmtfaXRlbXMoc2Vs
ZiwgcXVldWVfbmFtZSwgd29ya19pdGVtcyk6Ci0gICAgICAgIHNlbGYuX3dvcmtfaXRlbXMgPSB3
b3JrX2l0ZW1zCi0gICAgICAgIGxvZygiTU9DSzogdXBkYXRlX3dvcmtfaXRlbXM6ICVzICVzIiAl
IChxdWV1ZV9uYW1lLCB3b3JrX2l0ZW1zKSkKLQotICAgIGRlZiBzdWJtaXRfdG9fZXdzKHNlbGYs
IHBhdGNoX2lkKToKLSAgICAgICAgbG9nKCJNT0NLOiBzdWJtaXRfdG9fZXdzOiAlcyIgJSAocGF0
Y2hfaWQpKQotCi0gICAgZGVmIHVwZGF0ZV9zdGF0dXMoc2VsZiwgcXVldWVfbmFtZSwgc3RhdHVz
LCBwYXRjaD1Ob25lLCByZXN1bHRzX2ZpbGU9Tm9uZSk6Ci0gICAgICAgIGxvZygiTU9DSzogdXBk
YXRlX3N0YXR1czogJXMgJXMiICUgKHF1ZXVlX25hbWUsIHN0YXR1cykpCi0gICAgICAgIHJldHVy
biAxODcKLQotICAgIGRlZiB1cGRhdGVfc3ZuX3JldmlzaW9uKHNlbGYsIHN2bl9yZXZpc2lvbiwg
YnJva2VuX2JvdCk6Ci0gICAgICAgIHJldHVybiAxOTEKLQotICAgIGRlZiByZXN1bHRzX3VybF9m
b3Jfc3RhdHVzKHNlbGYsIHN0YXR1c19pZCk6Ci0gICAgICAgIHJldHVybiAiaHR0cDovL2R1bW15
X3VybCIKLQotCi0jIEZJWE1FOiBVbmlmeSB3aXRoIGNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21v
Y2suTW9ja0V4ZWN1dGl2ZS4KLWNsYXNzIE1vY2tFeGVjdXRpdmUob2JqZWN0KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgc2hvdWxkX2xvZz1GYWxzZSwgc2hvdWxkX3Rocm93PUZhbHNlLCBzaG91
bGRfdGhyb3dfd2hlbl9ydW49Tm9uZSk6Ci0gICAgICAgIHNlbGYuX3Nob3VsZF9sb2cgPSBzaG91
bGRfbG9nCi0gICAgICAgIHNlbGYuX3Nob3VsZF90aHJvdyA9IHNob3VsZF90aHJvdwotICAgICAg
ICBzZWxmLl9zaG91bGRfdGhyb3dfd2hlbl9ydW4gPSBzaG91bGRfdGhyb3dfd2hlbl9ydW4gb3Ig
c2V0KCkKLSAgICAgICAgIyBGSVhNRTogT25jZSBleGVjdXRpdmUgd3JhcHMgb3MuZ2V0cGlkKCkg
d2UgY2FuIGp1c3QgdXNlIGEgc3RhdGljIHBpZCBmb3IgInRoaXMiIHByb2Nlc3MuCi0gICAgICAg
IHNlbGYuX3J1bm5pbmdfcGlkcyA9IFtvcy5nZXRwaWQoKV0KLQotICAgIGRlZiBjaGVja19ydW5u
aW5nX3BpZChzZWxmLCBwaWQpOgotICAgICAgICByZXR1cm4gcGlkIGluIHNlbGYuX3J1bm5pbmdf
cGlkcwotCi0gICAgZGVmIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLCBhcmdzLCBxdWlldD1G
YWxzZSwgY3dkPU5vbmUpOgotICAgICAgICBpZiBzZWxmLl9zaG91bGRfbG9nOgotICAgICAgICAg
ICAgbG9nKCJNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogJXMsIGN3ZD0lcyIgJSAoYXJncywg
Y3dkKSkKLSAgICAgICAgaWYgc2VsZi5fc2hvdWxkX3Rocm93X3doZW5fcnVuLmludGVyc2VjdGlv
bihhcmdzKToKLSAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJFeGNlcHRpb24gZm9yICVz
IiAlIGFyZ3MpCi0gICAgICAgIHJldHVybiAiTU9DSyBvdXRwdXQgb2YgY2hpbGQgcHJvY2VzcyIK
LQotICAgIGRlZiBydW5fY29tbWFuZChzZWxmLAotICAgICAgICAgICAgICAgICAgICBhcmdzLAot
ICAgICAgICAgICAgICAgICAgICBjd2Q9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgaW5wdXQ9
Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JfaGFuZGxlcj1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICByZXR1cm5fZXhpdF9jb2RlPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm5fc3RkZXJyPVRydWUsCi0gICAgICAgICAgICAgICAgICAgIGRlY29kZV9vdXRwdXQ9RmFs
c2UpOgotICAgICAgICBpZiBzZWxmLl9zaG91bGRfbG9nOgotICAgICAgICAgICAgbG9nKCJNT0NL
IHJ1bl9jb21tYW5kOiAlcywgY3dkPSVzIiAlIChhcmdzLCBjd2QpKQotICAgICAgICBpZiBzZWxm
Ll9zaG91bGRfdGhyb3c6Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiTU9DSyBTY3Jp
cHRFcnJvciIpCi0gICAgICAgIHJldHVybiAiTU9DSyBvdXRwdXQgb2YgY2hpbGQgcHJvY2VzcyIK
K2Zyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIAogCiBjbGFz
cyBNb2NrT3B0aW9ucyhvYmplY3QpOgpAQCAtNzY4LDEzOSArNDMsNiBAQCBjbGFzcyBNb2NrT3B0
aW9ucyhvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1trZXldID0gdmFsdWUKIAog
Ci1jbGFzcyBNb2NrUG9ydChvYmplY3QpOgotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gIk1vY2tQb3J0IgotCi0gICAgZGVmIGxheW91dF90ZXN0c19yZXN1bHRzX3BhdGgoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiAiL21vY2stcmVzdWx0cy9yZXN1bHRzLmh0bWwiCi0KLSAgICBk
ZWYgY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJldHVybiBbIm1v
Y2stY2hlY2std2Via2l0LXN0eWxlIl0KLQotICAgIGRlZiB1cGRhdGVfd2Via2l0X2NvbW1hbmQo
c2VsZik6Ci0gICAgICAgIHJldHVybiBbIm1vY2stdXBkYXRlLXdlYmtpdCJdCi0KLSAgICBkZWYg
YnVpbGRfd2Via2l0X2NvbW1hbmQoc2VsZiwgYnVpbGRfc3R5bGU9Tm9uZSk6Ci0gICAgICAgIHJl
dHVybiBbIm1vY2stYnVpbGQtd2Via2l0Il0KLQotICAgIGRlZiBwcmVwYXJlX2NoYW5nZWxvZ19j
b21tYW5kKHNlbGYpOgotICAgICAgICByZXR1cm4gWydtb2NrLXByZXBhcmUtQ2hhbmdlTG9nJ10K
LQotICAgIGRlZiBydW5fcHl0aG9uX3VuaXR0ZXN0c19jb21tYW5kKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gWydtb2NrLXRlc3Qtd2Via2l0cHknXQotCi0gICAgZGVmIHJ1bl9wZXJsX3VuaXR0ZXN0
c19jb21tYW5kKHNlbGYpOgotICAgICAgICByZXR1cm4gWydtb2NrLXRlc3Qtd2Via2l0cGVybCdd
Ci0KLSAgICBkZWYgcnVuX2phdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1hbmQoc2VsZik6Ci0gICAg
ICAgIHJldHVybiBbJ21vY2stcnVuLWphdmFjcmlwdGNvcmUtdGVzdHMnXQotCi0gICAgZGVmIHJ1
bl93ZWJraXRfdGVzdHNfY29tbWFuZChzZWxmKToKLSAgICAgICAgcmV0dXJuIFsnbW9jay1ydW4t
d2Via2l0LXRlc3RzJ10KLQotCi1jbGFzcyBNb2NrVGVzdFBvcnQxKG9iamVjdCk6Ci0gICAgZGVm
IHNraXBzX2xheW91dF90ZXN0KHNlbGYsIHRlc3RfbmFtZSk6Ci0gICAgICAgIHJldHVybiB0ZXN0
X25hbWUgaW4gWyJtZWRpYS9mb28vYmFyLmh0bWwiLCAiZm9vIl0KLQotCi1jbGFzcyBNb2NrVGVz
dFBvcnQyKG9iamVjdCk6Ci0gICAgZGVmIHNraXBzX2xheW91dF90ZXN0KHNlbGYsIHRlc3RfbmFt
ZSk6Ci0gICAgICAgIHJldHVybiB0ZXN0X25hbWUgPT0gIm1lZGlhL2Zvby9iYXIuaHRtbCIKLQot
Ci1jbGFzcyBNb2NrUG9ydEZhY3Rvcnkob2JqZWN0KToKLSAgICBkZWYgZ2V0X2FsbChzZWxmLCBv
cHRpb25zPU5vbmUpOgotICAgICAgICByZXR1cm4geyJ0ZXN0X3BvcnQxIjogTW9ja1Rlc3RQb3J0
MSgpLCAidGVzdF9wb3J0MiI6IE1vY2tUZXN0UG9ydDIoKX0KLQotCi1jbGFzcyBNb2NrUGxhdGZv
cm1JbmZvKG9iamVjdCk6Ci0gICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKLSAgICAgICAgcmV0
dXJuICJNb2NrUGxhdGZvcm0gMS4wIgotCi0KLWNsYXNzIE1vY2tXYXRjaExpc3Qob2JqZWN0KToK
LSAgICBkZWYgZGV0ZXJtaW5lX2NjX2FuZF9tZXNzYWdlcyhzZWxmLCBkaWZmKToKLSAgICAgICAg
bG9nKCJNb2NrV2F0Y2hMaXN0OiBkZXRlcm1pbmVfY2NfYW5kX21lc3NhZ2VzIikKLSAgICAgICAg
cmV0dXJuIHsnY2NfbGlzdCc6IFsnYWJhcnRoQHdlYmtpdC5vcmcnLCAnZXJpY0B3ZWJraXQub3Jn
JywgJ2xldmluQGNocm9taXVtLm9yZyddLCAnbWVzc2FnZXMnOiBbJ01lc3NhZ2UxLicsICdNZXNz
YWdlMi4nXSwgfQotCi0KLWNsYXNzIE1vY2tXb3Jrc3BhY2Uob2JqZWN0KToKLSAgICBkZWYgZmlu
ZF91bnVzZWRfZmlsZW5hbWUoc2VsZiwgZGlyZWN0b3J5LCBuYW1lLCBleHRlbnNpb24sIHNlYXJj
aF9saW1pdD0xMCk6Ci0gICAgICAgIHJldHVybiAiJXMvJXMuJXMiICUgKGRpcmVjdG9yeSwgbmFt
ZSwgZXh0ZW5zaW9uKQotCi0gICAgZGVmIGNyZWF0ZV96aXAoc2VsZiwgemlwX3BhdGgsIHNvdXJj
ZV9wYXRoKToKLSAgICAgICAgcmV0dXJuIG9iamVjdCgpICAjIFNvbWV0aGluZyB0aGF0IGlzIG5v
dCBOb25lCi0KLQotY2xhc3MgTW9ja1dlYihvYmplY3QpOgotICAgIGRlZiBnZXRfYmluYXJ5KHNl
bGYsIHVybCwgY29udmVydF80MDRfdG9fTm9uZT1GYWxzZSk6Ci0gICAgICAgIHJldHVybiAiTU9D
SyBXZWIgcmVzdWx0LCBjb252ZXJ0IDQwNCB0byBOb25lPSVzIiAlIGNvbnZlcnRfNDA0X3RvX05v
bmUKLQotCi1jbGFzcyBNb2NrSG9zdChvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBs
b2dfZXhlY3V0aXZlPUZhbHNlLCBleGVjdXRpdmVfdGhyb3dzX3doZW5fcnVuPU5vbmUpOgotICAg
ICAgICBzZWxmLndha2V1cF9ldmVudCA9IHRocmVhZGluZy5FdmVudCgpCi0gICAgICAgIHNlbGYu
YnVncyA9IE1vY2tCdWd6aWxsYSgpCi0gICAgICAgIHNlbGYuYnVpbGRib3QgPSBNb2NrQnVpbGRC
b3QoKQotICAgICAgICBzZWxmLmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1s
b2dfZXhlY3V0aXZlLCBzaG91bGRfdGhyb3dfd2hlbl9ydW49ZXhlY3V0aXZlX3Rocm93c193aGVu
X3J1bikKLSAgICAgICAgc2VsZi53ZWIgPSBNb2NrV2ViKCkKLSAgICAgICAgc2VsZi53b3Jrc3Bh
Y2UgPSBNb2NrV29ya3NwYWNlKCkKLSAgICAgICAgc2VsZi5faXJjID0gTm9uZQotICAgICAgICBz
ZWxmLnVzZXIgPSBNb2NrVXNlcigpCi0gICAgICAgIHNlbGYuX3NjbSA9IE1vY2tTQ00oKQotICAg
ICAgICBzZWxmLl9jaHJvbWl1bV9idWlsZGJvdCA9IE1vY2tCdWlsZEJvdCgpCi0gICAgICAgICMg
VmFyaW91cyBwaWVjZXMgb2YgY29kZSAod3JvbmdseSkgY2FsbCBmaWxlc3lzdGVtLmNoZGlyKGNo
ZWNrb3V0X3Jvb3QpLgotICAgICAgICAjIE1ha2luZyB0aGUgY2hlY2tvdXRfcm9vdCBleGlzdCBp
biB0aGUgbW9jayBmaWxlc3lzdGVtIG1ha2VzIHRoYXQgY2hkaXIgbm90IHJhaXNlLgotICAgICAg
ICBzZWxmLmZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbShkaXJzPXNldChbc2VsZi5fc2NtLmNo
ZWNrb3V0X3Jvb3RdKSkKLSAgICAgICAgc2VsZi5fcG9ydCA9IE1vY2tQb3J0KCkKLSAgICAgICAg
c2VsZi5fY2hlY2tvdXQgPSBNb2NrQ2hlY2tvdXQoKQotICAgICAgICBzZWxmLnN0YXR1c19zZXJ2
ZXIgPSBNb2NrU3RhdHVzU2VydmVyKCkKLSAgICAgICAgc2VsZi5pcmNfcGFzc3dvcmQgPSAiTU9D
SyBpcmMgcGFzc3dvcmQiCi0gICAgICAgIHNlbGYucG9ydF9mYWN0b3J5ID0gTW9ja1BvcnRGYWN0
b3J5KCkKLSAgICAgICAgc2VsZi5wbGF0Zm9ybSA9IE1vY2tQbGF0Zm9ybUluZm8oKQotICAgICAg
ICBzZWxmLl93YXRjaF9saXN0ID0gTW9ja1dhdGNoTGlzdCgpCi0KLSAgICBkZWYgc2NtKHNlbGYp
OgotICAgICAgICByZXR1cm4gc2VsZi5fc2NtCi0KLSAgICBkZWYgY2hlY2tvdXQoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBzZWxmLl9jaGVja291dAotCi0gICAgZGVmIHBvcnQoc2VsZik6Ci0gICAg
ICAgIHJldHVybiBzZWxmLl9wb3J0Ci0KLSAgICBkZWYgY2hyb21pdW1fYnVpbGRib3Qoc2VsZik6
Ci0gICAgICAgIHJldHVybiBzZWxmLl9jaHJvbWl1bV9idWlsZGJvdAotCi0gICAgZGVmIHdhdGNo
X2xpc3Qoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl93YXRjaF9saXN0Ci0KLSAgICBkZWYg
ZW5zdXJlX2lyY19jb25uZWN0ZWQoc2VsZiwgZGVsZWdhdGUpOgotICAgICAgICBpZiBub3Qgc2Vs
Zi5faXJjOgotICAgICAgICAgICAgc2VsZi5faXJjID0gTW9ja0lSQygpCi0KLSAgICBkZWYgaXJj
KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5faXJjCi0KLQogY2xhc3MgTW9ja1Rvb2woTW9j
a0hvc3QpOgogICAgIGRlZiBwYXRoKHNlbGYpOgogICAgICAgICByZXR1cm4gImVjaG8iCi0KLQot
Y2xhc3MgTW9ja0Jyb3dzZXIob2JqZWN0KToKLSAgICBwYXJhbXMgPSB7fQotCi0gICAgZGVmIG9w
ZW4oc2VsZiwgdXJsKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHNlbGVjdF9mb3JtKHNlbGYs
IG5hbWUpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2
YWx1ZSk6Ci0gICAgICAgIHNlbGYucGFyYW1zW2tleV0gPSB2YWx1ZQotCi0gICAgZGVmIHN1Ym1p
dChzZWxmKToKLSAgICAgICAgcmV0dXJuIFN0cmluZ0lPLlN0cmluZ0lPKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlcl91bml0
dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3Nl
cnZlcl91bml0dGVzdC5weQppbmRleCBjYTA3MjM4ZWJhMzM1ODBkMmQxMzYzYjQyYzY0ODQ3ODc1
ZGUxMTZhLi42N2RiN2NkNjI3M2E4YzI3MWM2Y2QzNzYzMDVkMWRhY2RjZGI4NmY3IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXJf
dW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvZ2Fy
ZGVuaW5nc2VydmVyX3VuaXR0ZXN0LnB5CkBAIC0zOCw3ICszOCw4IEBAIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBmYWN0b3J5CiBmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCAqCiBmcm9tIHdlYmtp
dHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0
b29sIGltcG9ydCBNb2NrVG9vbCwgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS50b29sLm1v
Y2t0b29sIGltcG9ydCBNb2NrVG9vbAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LnRvb2wuc2VydmVy
cy5nYXJkZW5pbmdzZXJ2ZXIgaW1wb3J0ICoKIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113432</attachid>
            <date>2011-11-02 22:07:48 -0700</date>
            <delta_ts>2011-11-02 22:50:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71425-20111102220746.patch</filename>
            <type>text/plain</type>
            <size>128603</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxMDYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYTgyYzRlNTVlZTYyYjIyYjZmN2I0NWM4OWIzODRhZmUx
MjI1NzAyLi42ZTNhNzBjNDUwNzM2NjFkOWMyNTlhYTMwZGQ2YzcxYTNkYjUzOTljIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcg
QEAKKzIwMTEtMTEtMDIgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IE1vdmUgTW9ja3MgaW50byBfbW9jayBmaWxlcyBuZWFyIHRoZWlyIGltcGxlbWVudGF0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGVudGly
ZSBjaGFuZ2UgaXMgc3BsaXR0aW5nIG1vY2t0b29sLnB5IGludG8gc2VwYXJhdGUgX21vY2sucHkg
ZmlsZXMKKyAgICAgICAgYW5kIHBsYWNpbmcgdGhlbSBuZXh0IHRvIHRoZWlyIHJlYWwgaW1wbGVt
ZW50YXRpb25zLgorCisgICAgICAgIEkgYWxzbyBkZWxldGVkIE1vY2tQb3J0RmFjdG9yeSAoc2lu
Y2UgaXQgd2FzIHdyb25nKSBhbmQgd2FzIGp1c3QgaGlkaW5nCisgICAgICAgIHRoZSBmYWN0IHRo
YXQgdGhlICJza2lwcGVkLXBvcnRzIiBjb21tYW5kIHdhcyBicm9rZW4gKGFuZCBoYXMgYmVlbiBm
b3IgYSBsb25nIHRpbWUpLgorICAgICAgICBTbyBJIG1hZGUgTW9ja0hvc3QgdXNlIGEgcmVhbCBQ
b3J0RmFjdG9yeSAocGFzc2VkIGEgTW9ja0hvc3QpIGFuZCBjaGFuZ2VkCisgICAgICAgIHRoZSBz
a2lwcGVkLXBvcnRzIGltcGxlbWVudGF0aW9uIHRvIHVzZSBtb2Rlcm4gUG9ydEZhY3RvcnkgbWV0
aG9kcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2Vs
aW5lb3B0aW1pemVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L2NoZWNrb3V0X21vY2sucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RlcHNfbW9jay5weTogQ29waWVkIGZy
b20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9fX2luaXRfXy5weS4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX21vY2su
cHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3Nj
bS9zY21fdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29u
ZmlnL3BvcnRzX21vY2sucHk6IENvcGllZCBmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZ3RrX3VuaXR0ZXN0LnB5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2hvc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vaG9z
dF9tb2NrLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
YnVnemlsbGEvYnVnemlsbGFfbW9jay5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdF9tb2NrLnB5OiBB
ZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNf
dW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2ZhaWx1
cmVtYXBfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2lyYy9pcmNfbW9jay5weTogQ29waWVkIGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9fX2luaXRfXy5weS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvc3RhdHVzc2VydmVyX21vY2sucHk6IENvcGllZCBmcm9tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrX3VuaXR0ZXN0LnB5LgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXJfdW5pdHRlc3QucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3dlYl9tb2NrLnB5OiBDb3BpZWQgZnJv
bSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0a191bml0dGVzdC5w
eS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9j
ay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1p
bmZvX21vY2sucHk6IENvcGllZCBmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvX19pbml0X18ucHkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL3VzZXJfbW9jay5weTogQ29waWVkIGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9ndGtfdW5pdHRlc3QucHkuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV9tb2NrLnB5OiBDb3BpZWQgZnJvbSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L19faW5pdF9fLnB5LgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2VfdW5pdHRlc3QucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vd2F0Y2hsaXN0L3dhdGNobGlzdF9tb2Nr
LnB5OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L19faW5pdF9fLnB5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9leHBlY3RhdGlvbnNfZWRpdG9yX3VuaXR0
ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvX19p
bml0X18ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
YXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZWZsX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZmFjdG9yeS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGtfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX2xvY2tfdW5pdHRlc3QucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9sZWFrZGV0ZWN0b3JfdW5p
dHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9t
YWNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW5fdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS90ZXN0L21haW4ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90
b29sL2JvdC9ib3RpbmZvX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZF91bml0dGVzdC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllc191bml0dGVzdC5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZV91bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyX3VuaXR0ZXN0
LnB5OgorCiAyMDExLTEwLTMxICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBCYXNlbGluZU9wdGltaXplciB0ZXN0cyBzaG91bGQgdXNlIG1vY2tzIGluc3RlYWQgb2Yg
cmVhbCBFeGVjdXRpdmUvRmlsZVN5c3RlbSBvYmplY3RzCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplcl91bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1p
emVyX3VuaXR0ZXN0LnB5CmluZGV4IDQzMjUxMGY0MjBmMDUyMjQ3ZDIwZjEwMjEyZWYzNWVhMzMy
ZGM1MmYuLjFkM2U1NzM3MGZkZjkwYTQwN2YyNzViYjk0NDE5NjU3YjIyNzIzNWYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1p
emVyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L2Jhc2VsaW5lb3B0aW1pemVyX3VuaXR0ZXN0LnB5CkBAIC0zMiw3ICszMiw3IEBAIGltcG9y
dCB1bml0dGVzdAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuYmFzZWxpbmVvcHRpbWl6
ZXIgaW1wb3J0IEJhc2VsaW5lT3B0aW1pemVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydC5mYWN0b3J5IGltcG9ydCBQb3J0RmFjdG9yeQotZnJvbSB3ZWJraXRweS50
b29sLm1vY2t0b29sIGltcG9ydCBNb2NrSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9t
b2NrIGltcG9ydCBNb2NrSG9zdAogCiAKIGNsYXNzIFRlc3RCYXNlbGluZU9wdGltaXplcihCYXNl
bGluZU9wdGltaXplcik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9jaGVja291dF9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvY2hlY2tvdXRfbW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzlkYjFmNmFhYmRjYjQ3
ODA4NGQyMTJhMTU4NzE3YTM4MmQ0YmViCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfbW9jay5weQpAQCAtMCwwICsxLDk1
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCisKK2Zyb20gLmRlcHNfbW9jayBpbXBvcnQg
TW9ja0RFUFMKK2Zyb20gLmNvbW1pdGluZm8gaW1wb3J0IENvbW1pdEluZm8KKworIyBGSVhNRTog
VGhlc2UgaW1wb3J0cyBhcmUgd3JvbmcsIHdlIHNob3VsZCB1c2UgYSBzaGFyZWQgTW9ja0NvbW1p
dHRlcnNMaXN0LgorZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0
IENvbW1pdHRlckxpc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYS5idWd6aWxs
YV9tb2NrIGltcG9ydCBfbW9ja19yZXZpZXdlcnMKKworCitjbGFzcyBNb2NrQ29tbWl0TWVzc2Fn
ZShvYmplY3QpOgorICAgIGRlZiBtZXNzYWdlKHNlbGYpOgorICAgICAgICByZXR1cm4gIlRoaXMg
aXMgYSBmYWtlIGNvbW1pdCBtZXNzYWdlIHRoYXQgaXMgYXQgbGVhc3QgNTAgY2hhcmFjdGVycy4i
CisKKworY2xhc3MgTW9ja0NoZWNrb3V0KG9iamVjdCk6CisKKyAgICAjIEZJWE1FOiBUaGlzIHNo
b3VsZCBtb3ZlIG9udG8gdGhlIEhvc3Qgb2JqZWN0LCBhbmQgd2Ugc2hvdWxkIHVzZSBhIE1vY2tD
b21taXR0ZXJMaXN0IGZvciB0ZXN0cy4KKyAgICBfY29tbWl0dGVyX2xpc3QgPSBDb21taXR0ZXJM
aXN0KCkKKworICAgIGRlZiBjb21taXRfaW5mb19mb3JfcmV2aXNpb24oc2VsZiwgc3ZuX3Jldmlz
aW9uKToKKyAgICAgICAgIyBUaGUgcmVhbCBDaGVja291dCB3b3VsZCBwcm9iYWJseSB0aHJvdyBh
biBleGNlcHRpb24sIGJ1dCB0aGlzIGlzIHRoZSBvbmx5IHdheSB0ZXN0cyBoYXZlIHRvIGdldCBO
b25lIGJhY2sgYXQgdGhlIG1vbWVudC4KKyAgICAgICAgaWYgbm90IHN2bl9yZXZpc2lvbjoKKyAg
ICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBDb21taXRJbmZvKHN2bl9yZXZp
c2lvbiwgImVyaWNAd2Via2l0Lm9yZyIsIHsKKyAgICAgICAgICAgICJidWdfaWQiOiA1MDAwMCwK
KyAgICAgICAgICAgICJhdXRob3JfbmFtZSI6ICJBZGFtIEJhcnRoIiwKKyAgICAgICAgICAgICJh
dXRob3JfZW1haWwiOiAiYWJhcnRoQHdlYmtpdC5vcmciLAorICAgICAgICAgICAgImF1dGhvciI6
IHNlbGYuX2NvbW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKCJhYmFydGhAd2Via2l0
Lm9yZyIpLAorICAgICAgICAgICAgInJldmlld2VyX3RleHQiOiAiRGFyaW4gQWRsZXIiLAorICAg
ICAgICAgICAgInJldmlld2VyIjogc2VsZi5fY29tbWl0dGVyX2xpc3QuY29tbWl0dGVyX2J5X25h
bWUoIkRhcmluIEFkbGVyIiksCisgICAgICAgICAgICAiY2hhbmdlZF9maWxlcyI6IFsKKyAgICAg
ICAgICAgICAgICAicGF0aC90by9maWxlIiwKKyAgICAgICAgICAgICAgICAiYW5vdGhlci9maWxl
IiwKKyAgICAgICAgICAgIF0sCisgICAgICAgIH0pCisKKyAgICBkZWYgaXNfcGF0aF90b19jaGFu
Z2Vsb2coc2VsZiwgcGF0aCk6CisgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHNlbGYuX2Zp
bGVzeXN0ZW0uYmFzZW5hbWUuCisgICAgICAgIHJldHVybiBvcy5wYXRoLmJhc2VuYW1lKHBhdGgp
ID09ICJDaGFuZ2VMb2ciCisKKyAgICBkZWYgYnVnX2lkX2Zvcl9yZXZpc2lvbihzZWxmLCBzdm5f
cmV2aXNpb24pOgorICAgICAgICByZXR1cm4gMTIzNDUKKworICAgIGRlZiByZWNlbnRfY29tbWl0
X2luZm9zX2Zvcl9maWxlcyhzZWxmLCBwYXRocyk6CisgICAgICAgIHJldHVybiBbc2VsZi5jb21t
aXRfaW5mb19mb3JfcmV2aXNpb24oMzIpXQorCisgICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Mo
c2VsZiwgZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1Ob25lKToKKyAgICAgICAgIyBJZGVhbGx5
IHdlJ2QgcmV0dXJuIHNvbWV0aGluZyBtb3JlIGludGVyZXN0aW5nIGhlcmUuICBUaGUgcHJvYmxl
bSBpcworICAgICAgICAjIHRoYXQgTGFuZERpZmYgd2lsbCB0cnkgdG8gYWN0dWFsbHkgcmVhZCB0
aGUgcGF0Y2ggZnJvbSBkaXNrIQorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBjb21taXRf
bWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1O
b25lKToKKyAgICAgICAgcmV0dXJuIE1vY2tDb21taXRNZXNzYWdlKCkKKworICAgIGRlZiBjaHJv
bWl1bV9kZXBzKHNlbGYpOgorICAgICAgICByZXR1cm4gTW9ja0RFUFMoKQorCisgICAgZGVmIGFw
cGx5X3BhdGNoKHNlbGYsIHBhdGNoLCBmb3JjZT1GYWxzZSk6CisgICAgICAgIHBhc3MKKworICAg
IGRlZiBhcHBseV9yZXZlcnNlX2RpZmZzKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgcGFzcwor
CisgICAgZGVmIHN1Z2dlc3RlZF9yZXZpZXdlcnMoc2VsZiwgZ2l0X2NvbW1pdCwgY2hhbmdlZF9m
aWxlcz1Ob25lKToKKyAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBhIHNoYXJlZCBtb2Nr
IGNvbW1pdGVyIGxpc3QuCisgICAgICAgIHJldHVybiBbX21vY2tfcmV2aWV3ZXJzWzBdXQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRf
dW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVj
a291dF91bml0dGVzdC5weQppbmRleCBlNDRlOWI0OTYwNWY0ZmI3M2EwMjVjY2RlYWZmN2VkYzIw
ODZlYTk5Li4zNjZhNDQyMzVjYjAxMzI1Y2JmNWU3YzA5ZGYzOWZmM2FhZjc4ODJjIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dF91bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVj
a291dF91bml0dGVzdC5weQpAQCAtMzcsMTIgKzM3LDE0IEBAIGltcG9ydCB1bml0dGVzdAogZnJv
bSAuY2hlY2tvdXQgaW1wb3J0IENoZWNrb3V0CiBmcm9tIC5jaGFuZ2Vsb2cgaW1wb3J0IENoYW5n
ZUxvZ0VudHJ5CiBmcm9tIC5zY20gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtLCBDb21taXRNZXNz
YWdlCitmcm9tIC5zY20uc2NtX21vY2sgaW1wb3J0IE1vY2tTQ00KIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lz
dGVtCi1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tTQ00sIE1vY2tFeGVj
dXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQg
TW9ja0V4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sK
IAogCisKICMgRklYTUU6IENvcGllZCBmcm9tIHNjbV91bml0dGVzdC5weQogZGVmIHdyaXRlX2lu
dG9fZmlsZV9hdF9wYXRoKGZpbGVfcGF0aCwgY29udGVudHMsIGVuY29kaW5nPSJ1dGYtOCIpOgog
ICAgIHdpdGggY29kZWNzLm9wZW4oZmlsZV9wYXRoLCAidyIsIGVuY29kaW5nKSBhcyBmaWxlOgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvZGVwc19t
b2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvZGVwc19tb2Nr
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNiNTdlOGIyODY0YWQ1M2E1YTZhNDk0ZTY5N2JhZjc3ZjBiY2U2NjUK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9kZXBzX21vY2sucHkKQEAgLTAsMCArMSwzOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCisKKwor
Y2xhc3MgTW9ja0RFUFMob2JqZWN0KToKKyAgICBkZWYgcmVhZF92YXJpYWJsZShzZWxmLCBuYW1l
KToKKyAgICAgICAgcmV0dXJuIDY1NjQKKworICAgIGRlZiB3cml0ZV92YXJpYWJsZShzZWxmLCBu
YW1lLCB2YWx1ZSk6CisgICAgICAgIGxvZygiTU9DSzogTW9ja0RFUFMud3JpdGVfdmFyaWFibGUo
JXMsICVzKSIgJSAobmFtZSwgdmFsdWUpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV9tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4YWY2N2M5
ODc1MWRjNzYxZDkyNGNlN2UzMDBmMTlhZGZiMTM2NDMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX21vY2sucHkKQEAgLTAs
MCArMSwxMTQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCisKKworY2xhc3Mg
TW9ja1NDTShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlc3lzdGVtPU5vbmUs
IGV4ZWN1dGl2ZT1Ob25lKToKKyAgICAgICAgc2VsZi5jaGVja291dF9yb290ID0gIi9tb2NrLWNo
ZWNrb3V0IgorICAgICAgICBzZWxmLmFkZGVkX3BhdGhzID0gc2V0KCkKKyAgICAgICAgc2VsZi5f
ZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0gb3IgTW9ja0ZpbGVTeXN0ZW0oKQorICAgICAgICBzZWxm
Ll9leGVjdXRpdmUgPSBleGVjdXRpdmUgb3IgTW9ja0V4ZWN1dGl2ZSgpCisKKyAgICBkZWYgYWRk
KHNlbGYsIGRlc3RpbmF0aW9uX3BhdGgsIHJldHVybl9leGl0X2NvZGU9RmFsc2UpOgorICAgICAg
ICBzZWxmLmFkZGVkX3BhdGhzLmFkZChkZXN0aW5hdGlvbl9wYXRoKQorICAgICAgICBpZiByZXR1
cm5fZXhpdF9jb2RlOgorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgIGRlZiBlbnN1cmVfY2xl
YW5fd29ya2luZ19kaXJlY3Rvcnkoc2VsZiwgZm9yY2VfY2xlYW4pOgorICAgICAgICBwYXNzCisK
KyAgICBkZWYgc3VwcG9ydHNfbG9jYWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFRy
dWUKKworICAgIGRlZiBlbnN1cmVfbm9fbG9jYWxfY29tbWl0cyhzZWxmLCBmb3JjZV9jbGVhbik6
CisgICAgICAgIHBhc3MKKworICAgIGRlZiBleGlzdHMoc2VsZiwgcGF0aCk6CisgICAgICAgICMg
VGVzdFJlYWxNYWluLnRlc3RfcmVhbF9tYWluIChhbmQgc2V2ZXJhbCBvdGhlciByZWJhc2VsaW5l
IHRlc3RzKSBhcmUgc2Vuc2l0aXZlIHRvIHRoaXMgcmV0dXJuIHZhbHVlLgorICAgICAgICAjIFdl
IHNob3VsZCBtYWtlIHRob3NlIHRlc3RzIG1vcmUgcm9idXN0LCBidXQgZm9yIG5vdyB3ZSBqdXN0
IHJldHVybiBUcnVlIGFsd2F5cyAoc2luY2Ugbm8gdGVzdCBuZWVkcyBvdGhlcndpc2UpLgorICAg
ICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGFic29sdXRlX3BhdGgoc2VsZiwgKmNvbXBzKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmNoZWNrb3V0X3Jvb3Qs
ICpjb21wcykKKworICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSk6
CisgICAgICAgIHJldHVybiBbIk1vY2tGaWxlMSJdCisKKyAgICBkZWYgY2hhbmdlZF9maWxlc19m
b3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgorICAgICAgICByZXR1cm4gWyJNb2NrRmlsZTEi
XQorCisgICAgZGVmIGhlYWRfc3ZuX3JldmlzaW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gMTIz
NAorCisgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0LCBjaGFuZ2VkX2ZpbGVz
PU5vbmUpOgorICAgICAgICByZXR1cm4gIlBhdGNoMSIKKworICAgIGRlZiBjb21taXRfaWRzX2Zy
b21fY29tbWl0aXNoX2FyZ3VtZW50cyhzZWxmLCBhcmdzKToKKyAgICAgICAgcmV0dXJuIFsiQ29t
bWl0aXNoMSIsICJDb21taXRpc2gyIl0KKworICAgIGRlZiBjb21taXR0ZXJfZW1haWxfZm9yX3Jl
dmlzaW9uKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgcmV0dXJuICJtb2NrQHdlYmtpdC5vcmci
CisKKyAgICBkZWYgY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgor
ICAgICAgICBwYXNzCisKKyAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdl
LCB1c2VybmFtZT1Ob25lLCBwYXNzd29yZD1Ob25lLCBnaXRfY29tbWl0PU5vbmUsIGZvcmNlX3Nx
dWFzaD1GYWxzZSwgY2hhbmdlZF9maWxlcz1Ob25lKToKKyAgICAgICAgcGFzcworCisgICAgZGVm
IG1lcmdlX2Jhc2Uoc2VsZiwgZ2l0X2NvbW1pdCk6CisgICAgICAgIHJldHVybiBOb25lCisKKyAg
ICBkZWYgY29tbWl0X21lc3NhZ2VfZm9yX2xvY2FsX2NvbW1pdChzZWxmLCBjb21taXRfaWQpOgor
ICAgICAgICBpZiBjb21taXRfaWQgPT0gIkNvbW1pdGlzaDEiOgorICAgICAgICAgICAgcmV0dXJu
IENvbW1pdE1lc3NhZ2UoIkNvbW1pdE1lc3NhZ2UxXG4iIFwKKyAgICAgICAgICAgICAgICAiaHR0
cHM6Ly9idWdzLmV4YW1wbGUub3JnL3Nob3dfYnVnLmNnaT9pZD01MDAwMFxuIikKKyAgICAgICAg
aWYgY29tbWl0X2lkID09ICJDb21taXRpc2gyIjoKKyAgICAgICAgICAgIHJldHVybiBDb21taXRN
ZXNzYWdlKCJDb21taXRNZXNzYWdlMlxuIiBcCisgICAgICAgICAgICAgICAgImh0dHBzOi8vYnVn
cy5leGFtcGxlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwMDFcbiIpCisgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigiQm9ndXMgY29tbWl0X2lkIGluIGNvbW1pdF9tZXNzYWdlX2Zvcl9sb2NhbF9jb21t
aXQuIikKKworICAgIGRlZiBkaWZmX2Zvcl9maWxlKHNlbGYsIHBhdGgsIGxvZz1Ob25lKToKKyAg
ICAgICAgcmV0dXJuIHBhdGggKyAnLWRpZmYnCisKKyAgICBkZWYgZGlmZl9mb3JfcmV2aXNpb24o
c2VsZiwgcmV2aXNpb24pOgorICAgICAgICByZXR1cm4gIkRpZmZGb3JSZXZpc2lvbiVzXG5odHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM0NSIgJSByZXZpc2lvbgorCisg
ICAgZGVmIHNob3dfaGVhZChzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIHBhdGgKKworICAg
IGRlZiBzdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChzZWxmLCBjb21taXRfdGV4dCk6Cisg
ICAgICAgIHJldHVybiAiNDk4MjQiCisKKyAgICBkZWYgZGVsZXRlKHNlbGYsIHBhdGgpOgorICAg
ICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbToKKyAgICAgICAgICAgIHJldHVybgorICAgICAg
ICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhwYXRoKToKKyAgICAgICAgICAgIHNlbGYuX2Zp
bGVzeXN0ZW0ucmVtb3ZlKHBhdGgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQppbmRleCA2YzFmNDJiM2Ni
OGMwYmRjZjg5YWZjZDM4MTNmNThjZGIyNjdkMThhLi5lYjBhYjU2NTcwMzU4YTQyMjQ5MDY4MmY1
NWNkZDNmZWM3OGEwNWE2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkKQEAgLTUyLDcgKzUyLDcgQEAg
ZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlciAg
IyBGSVhNRTogVGhpcyBzaG91bGQgbm8KIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxs
YSBpbXBvcnQgQXR0YWNobWVudCAjIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNj
cmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBv
cnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2Nr
RXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1w
b3J0IE1vY2tFeGVjdXRpdmUKIAogZnJvbSAuZGV0ZWN0aW9uIGltcG9ydCBmaW5kX2NoZWNrb3V0
X3Jvb3QsIGRlZmF1bHRfc2NtLCBkZXRlY3Rfc2NtX3N5c3RlbQogZnJvbSAuZ2l0IGltcG9ydCBH
aXQsIEFtYmlndW91c0NvbW1pdEVycm9yCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jb25maWcvcG9ydHNfbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NvbmZpZy9wb3J0c19tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NDE1MjUzOWM4YzExY2Vl
ZGJmODI0ODI1YTE1OGIzNmFiMjFiOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvcG9ydHNfbW9jay5weQpAQCAtMCwwICsxLDU5IEBACisj
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworCitjbGFzcyBNb2NrUG9ydChvYmplY3QpOgorICAgIGRlZiBuYW1lKHNl
bGYpOgorICAgICAgICByZXR1cm4gIk1vY2tQb3J0IgorCisgICAgZGVmIGxheW91dF90ZXN0c19y
ZXN1bHRzX3BhdGgoc2VsZik6CisgICAgICAgIHJldHVybiAiL21vY2stcmVzdWx0cy9yZXN1bHRz
Lmh0bWwiCisKKyAgICBkZWYgY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1hbmQoc2VsZik6CisgICAg
ICAgIHJldHVybiBbIm1vY2stY2hlY2std2Via2l0LXN0eWxlIl0KKworICAgIGRlZiB1cGRhdGVf
d2Via2l0X2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJldHVybiBbIm1vY2stdXBkYXRlLXdlYmtp
dCJdCisKKyAgICBkZWYgYnVpbGRfd2Via2l0X2NvbW1hbmQoc2VsZiwgYnVpbGRfc3R5bGU9Tm9u
ZSk6CisgICAgICAgIHJldHVybiBbIm1vY2stYnVpbGQtd2Via2l0Il0KKworICAgIGRlZiBwcmVw
YXJlX2NoYW5nZWxvZ19jb21tYW5kKHNlbGYpOgorICAgICAgICByZXR1cm4gWydtb2NrLXByZXBh
cmUtQ2hhbmdlTG9nJ10KKworICAgIGRlZiBydW5fcHl0aG9uX3VuaXR0ZXN0c19jb21tYW5kKHNl
bGYpOgorICAgICAgICByZXR1cm4gWydtb2NrLXRlc3Qtd2Via2l0cHknXQorCisgICAgZGVmIHJ1
bl9wZXJsX3VuaXR0ZXN0c19jb21tYW5kKHNlbGYpOgorICAgICAgICByZXR1cm4gWydtb2NrLXRl
c3Qtd2Via2l0cGVybCddCisKKyAgICBkZWYgcnVuX2phdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1h
bmQoc2VsZik6CisgICAgICAgIHJldHVybiBbJ21vY2stcnVuLWphdmFjcmlwdGNvcmUtdGVzdHMn
XQorCisgICAgZGVmIHJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZChzZWxmKToKKyAgICAgICAgcmV0
dXJuIFsnbW9jay1ydW4td2Via2l0LXRlc3RzJ10KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2hvc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9o
b3N0LnB5CmluZGV4IGIyZmRkMmYzZmM3ZDBmYzY1ZjJjZWJjZjI5OTY5MGZjMTVmM2EzNjIuLjAz
YzNkMjNiMTZhM2FlODhjNTgxZjMxNGI1ODY3YTNlMWQ5NjMyOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2hvc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vaG9zdC5weQpAQCAtNDIsMjMgKzQyLDMyIEBAIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQuZmFjdG9yeSBpbXBvcnQgUG9ydEZhY3RvcnkKIAogY2xhc3MgSG9zdChv
YmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5idWdzID0gYnVn
emlsbGEuQnVnemlsbGEoKQotICAgICAgICBzZWxmLmJ1aWxkYm90ID0gYnVpbGRib3QuQnVpbGRC
b3QoKQorICAgICAgICAjIFRoZXNlIGJhc2ljIGVudmlyb25tZW50IGFic3RyYWN0aW9ucyBzaG91
bGQgYmUgYSBzZXBhcmF0ZSBsb3dlci1sZXZlbCBvYmplY3QuCisgICAgICAgICMgQWx0ZXJuYXRp
dmVseSB0aGUgcmVzdCBvZiB0aGUgb2JqZWN0cyBpbiBIb3N0IHNob3VsZCBqdXN0IG1vdmUgdXAg
dG8gYSBoaWdoZXIgYWJzdHJhY3Rpb24uCiAgICAgICAgIHNlbGYuZXhlY3V0aXZlID0gZXhlY3V0
aXZlLkV4ZWN1dGl2ZSgpCi0gICAgICAgIHNlbGYud2ViID0gd2ViLldlYigpCi0gICAgICAgIHNl
bGYuX2lyYyA9IE5vbmUKICAgICAgICAgc2VsZi5maWxlc3lzdGVtID0gZmlsZXN5c3RlbS5GaWxl
U3lzdGVtKCkKLSAgICAgICAgc2VsZi53b3Jrc3BhY2UgPSB3b3Jrc3BhY2UuV29ya3NwYWNlKHNl
bGYuZmlsZXN5c3RlbSwgc2VsZi5leGVjdXRpdmUpCi0gICAgICAgIHNlbGYuX3BvcnQgPSBOb25l
CiAgICAgICAgIHNlbGYudXNlciA9IHVzZXIuVXNlcigpCisgICAgICAgIHNlbGYucGxhdGZvcm0g
PSBwbGF0Zm9ybWluZm8uUGxhdGZvcm1JbmZvKCkKKyAgICAgICAgc2VsZi53b3Jrc3BhY2UgPSB3
b3Jrc3BhY2UuV29ya3NwYWNlKHNlbGYuZmlsZXN5c3RlbSwgc2VsZi5leGVjdXRpdmUpCisgICAg
ICAgIHNlbGYud2ViID0gd2ViLldlYigpCisKKyAgICAgICAgIyBGSVhNRTogQ2hlY2tvdXQgc2hv
dWxkIG93biB0aGUgc2NtIG9iamVjdC4KICAgICAgICAgc2VsZi5fc2NtID0gTm9uZQogICAgICAg
ICBzZWxmLl9jaGVja291dCA9IE5vbmUKKworICAgICAgICAjIEV2ZXJ5dGhpbmcgYmVsb3cgdGhp
cyBsaW5lIGlzIFdlYktpdC1zcGVjaWZpYyBhbmQgYmVsb25ncyBvbiBhIGhpZ2hlci1sZXZlbCBv
YmplY3QuCisgICAgICAgIHNlbGYuYnVncyA9IGJ1Z3ppbGxhLkJ1Z3ppbGxhKCkKKyAgICAgICAg
c2VsZi5idWlsZGJvdCA9IGJ1aWxkYm90LkJ1aWxkQm90KCkKKworICAgICAgICBzZWxmLl9pcmMg
PSBOb25lCisgICAgICAgIHNlbGYuX3BvcnQgPSBOb25lCisKICAgICAgICAgc2VsZi5zdGF0dXNf
c2VydmVyID0gc3RhdHVzc2VydmVyLlN0YXR1c1NlcnZlcigpCisKICAgICAgICAgIyBGSVhNRTog
VW5mb3J0dW5hdGVseSBQb3J0IG9iamVjdHMgYXJlIGN1cnJlbnRseSB0aGUgY2VudHJhbC1kaXNw
YXRjaCBvYmplY3RzIG9mIHRoZSBOUldUIHdvcmxkLgogICAgICAgICAjIEluIG9yZGVyIHRvIGlu
c3RhbnRpYXRlIGEgcG9ydCBjb3JyZWN0bHksIHdlIGhhdmUgdG8gcGFzcyBpdCBhdCBsZWFzdCBh
biBleGVjdXRpdmUsIHVzZXIsIHNjbSwgYW5kIGZpbGVzeXN0ZW0KICAgICAgICAgIyBzbyBmb3Ig
bm93IHdlIGp1c3QgcGFzcyBhbG9uZyB0aGUgd2hvbGUgSG9zdCBvYmplY3QuCiAgICAgICAgIHNl
bGYucG9ydF9mYWN0b3J5ID0gUG9ydEZhY3Rvcnkoc2VsZikKLSAgICAgICAgc2VsZi5wbGF0Zm9y
bSA9IHBsYXRmb3JtaW5mby5QbGF0Zm9ybUluZm8oKQogCiAgICAgZGVmIF9pbml0aWFsaXplX3Nj
bShzZWxmLCBwYXRjaF9kaXJlY3Rvcmllcz1Ob25lKToKICAgICAgICAgc2VsZi5fc2NtID0gZGVm
YXVsdF9zY20ocGF0Y2hfZGlyZWN0b3JpZXMpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9ob3N0X21vY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9ob3N0X21vY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2UwMTM4MmU1YjA0YjQ3ZmNjOGRiYWY3NGRlOWI5
MGE2MTMzZWU3MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2hvc3RfbW9jay5weQpAQCAtMCwwICsxLDEwMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9y
dCB0aHJlYWRpbmcKKworZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhLmJ1Z3ppbGxh
X21vY2sgaW1wb3J0IE1vY2tCdWd6aWxsYQorZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LnN0YXR1
c3NlcnZlcl9tb2NrIGltcG9ydCBNb2NrU3RhdHVzU2VydmVyCitmcm9tIHdlYmtpdHB5LmNvbW1v
bi5uZXQuYnVpbGRib3QuYnVpbGRib3RfbW9jayBpbXBvcnQgTW9ja0J1aWxkQm90Citmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUK
K2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2VyX21vY2sgaW1wb3J0IE1vY2tVc2VyCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmls
ZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBsYXRmb3JtaW5mb19tb2NrIGlt
cG9ydCBNb2NrUGxhdGZvcm1JbmZvCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ud29ya3Nw
YWNlX21vY2sgaW1wb3J0IE1vY2tXb3Jrc3BhY2UKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC53
ZWJfbW9jayBpbXBvcnQgTW9ja1dlYgorZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmlyYy5pcmNf
bW9jayBpbXBvcnQgTW9ja0lSQworZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY2hlY2tv
dXRfbW9jayBpbXBvcnQgTW9ja0NoZWNrb3V0Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5zY20uc2NtX21vY2sgaW1wb3J0IE1vY2tTQ00KK2Zyb20gd2Via2l0cHkuY29tbW9uLndhdGNo
bGlzdC53YXRjaGxpc3RfbW9jayBpbXBvcnQgTW9ja1dhdGNoTGlzdAorCisjIEZJWE1FOiBPbGQt
c3R5bGUgIlBvcnRzIiBuZWVkIHRvIGRpZSBhbmQgYmUgcmVwbGFjZWQgYnkgbW9kZXJuIGxheW91
dF90ZXN0cy5wb3J0IHdoaWNoIG5lZWRzIHRvIG1vdmUgdG8gY29tbW9uLgorZnJvbSB3ZWJraXRw
eS5jb21tb24uY29uZmlnLnBvcnRzX21vY2sgaW1wb3J0IE1vY2tQb3J0Citmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5wb3J0LmZhY3RvcnkgaW1wb3J0IFBvcnRGYWN0b3J5CisKKworY2xhc3Mg
TW9ja0hvc3Qob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nX2V4ZWN1dGl2ZT1G
YWxzZSwgZXhlY3V0aXZlX3Rocm93c193aGVuX3J1bj1Ob25lKToKKyAgICAgICAgc2VsZi5leGVj
dXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9bG9nX2V4ZWN1dGl2ZSwgc2hvdWxkX3Ro
cm93X3doZW5fcnVuPWV4ZWN1dGl2ZV90aHJvd3Nfd2hlbl9ydW4pCisgICAgICAgIHNlbGYudXNl
ciA9IE1vY2tVc2VyKCkKKyAgICAgICAgc2VsZi5wbGF0Zm9ybSA9IE1vY2tQbGF0Zm9ybUluZm8o
KQorICAgICAgICBzZWxmLndvcmtzcGFjZSA9IE1vY2tXb3Jrc3BhY2UoKQorICAgICAgICBzZWxm
LndlYiA9IE1vY2tXZWIoKQorCisgICAgICAgIHNlbGYuX2NoZWNrb3V0ID0gTW9ja0NoZWNrb3V0
KCkKKyAgICAgICAgc2VsZi5fc2NtID0gTW9ja1NDTSgpCisgICAgICAgICMgVmFyaW91cyBwaWVj
ZXMgb2YgY29kZSAod3JvbmdseSkgY2FsbCBmaWxlc3lzdGVtLmNoZGlyKGNoZWNrb3V0X3Jvb3Qp
LgorICAgICAgICAjIE1ha2luZyB0aGUgY2hlY2tvdXRfcm9vdCBleGlzdCBpbiB0aGUgbW9jayBm
aWxlc3lzdGVtIG1ha2VzIHRoYXQgY2hkaXIgbm90IHJhaXNlLgorICAgICAgICBzZWxmLmZpbGVz
eXN0ZW0gPSBNb2NrRmlsZVN5c3RlbShkaXJzPXNldChbc2VsZi5fc2NtLmNoZWNrb3V0X3Jvb3Rd
KSkKKworICAgICAgICBzZWxmLmJ1Z3MgPSBNb2NrQnVnemlsbGEoKQorICAgICAgICBzZWxmLmJ1
aWxkYm90ID0gTW9ja0J1aWxkQm90KCkKKyAgICAgICAgc2VsZi5fY2hyb21pdW1fYnVpbGRib3Qg
PSBNb2NrQnVpbGRCb3QoKQorICAgICAgICBzZWxmLnN0YXR1c19zZXJ2ZXIgPSBNb2NrU3RhdHVz
U2VydmVyKCkKKworICAgICAgICBzZWxmLl9pcmMgPSBOb25lCisgICAgICAgIHNlbGYuaXJjX3Bh
c3N3b3JkID0gIk1PQ0sgaXJjIHBhc3N3b3JkIgorICAgICAgICBzZWxmLndha2V1cF9ldmVudCA9
IHRocmVhZGluZy5FdmVudCgpCisKKyAgICAgICAgc2VsZi5fcG9ydCA9IE1vY2tQb3J0KCkKKyAg
ICAgICAgIyBOb3RlOiBXZSdyZSB1c2luZyBhIHJlYWwgUG9ydEZhY3RvcnkgaGVyZS4gIFRlc3Rz
IHdoaWNoIGRvbid0IHdpc2ggdG8gZGVwZW5kCisgICAgICAgICMgb24gdGhlIGxpc3Qgb2Yga25v
d24gcG9ydHMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgd2l0aCBhIE1vY2tQb3J0RmFjdG9yeS4KKyAg
ICAgICAgc2VsZi5wb3J0X2ZhY3RvcnkgPSBQb3J0RmFjdG9yeShzZWxmKQorCisgICAgICAgIHNl
bGYuX3dhdGNoX2xpc3QgPSBNb2NrV2F0Y2hMaXN0KCkKKworICAgIGRlZiBzY20oc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLl9zY20KKworICAgIGRlZiBjaGVja291dChzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX2NoZWNrb3V0CisKKyAgICBkZWYgcG9ydChzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuX3BvcnQKKworICAgIGRlZiBjaHJvbWl1bV9idWlsZGJvdChzZWxmKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX2Nocm9taXVtX2J1aWxkYm90CisKKyAgICBkZWYgd2F0Y2hfbGlz
dChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3dhdGNoX2xpc3QKKworICAgIGRlZiBlbnN1
cmVfaXJjX2Nvbm5lY3RlZChzZWxmLCBkZWxlZ2F0ZSk6CisgICAgICAgIGlmIG5vdCBzZWxmLl9p
cmM6CisgICAgICAgICAgICBzZWxmLl9pcmMgPSBNb2NrSVJDKCkKKworICAgIGRlZiBpcmMoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9pcmMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV9tb2NrLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX21vY2sucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODczNjNkYjVlMzliODY2MGViOGE2MGVjYzk3ZTc1MjNlNjk0YzIxOQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6
aWxsYV9tb2NrLnB5CkBAIC0wLDAgKzEsMzk3IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGRh
dGV0aW1lCisKK2Zyb20gLmJ1ZyBpbXBvcnQgQnVnCitmcm9tIC5hdHRhY2htZW50IGltcG9ydCBB
dHRhY2htZW50Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQg
Q29tbWl0dGVyTGlzdCwgUmV2aWV3ZXIKKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRl
cHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCisKKworZGVmIF9pZF90b19vYmplY3RfZGljdGlv
bmFyeSgqb2JqZWN0cyk6CisgICAgZGljdGlvbmFyeSA9IHt9CisgICAgZm9yIHRoaW5nIGluIG9i
amVjdHM6CisgICAgICAgIGRpY3Rpb25hcnlbdGhpbmdbImlkIl1dID0gdGhpbmcKKyAgICByZXR1
cm4gZGljdGlvbmFyeQorCisjIFRlc3RpbmcKKworCitfcGF0Y2gxID0geworICAgICJpZCI6IDEw
MDAwLAorICAgICJidWdfaWQiOiA1MDAwMCwKKyAgICAidXJsIjogImh0dHA6Ly9leGFtcGxlLmNv
bS8xMDAwMCIsCisgICAgIm5hbWUiOiAiUGF0Y2gxIiwKKyAgICAiaXNfb2Jzb2xldGUiOiBGYWxz
ZSwKKyAgICAiaXNfcGF0Y2giOiBUcnVlLAorICAgICJyZXZpZXciOiAiKyIsCisgICAgInJldmll
d2VyX2VtYWlsIjogImZvb0BiYXIuY29tIiwKKyAgICAiY29tbWl0LXF1ZXVlIjogIisiLAorICAg
ICJjb21taXR0ZXJfZW1haWwiOiAiZm9vQGJhci5jb20iLAorICAgICJhdHRhY2hlcl9lbWFpbCI6
ICJDb250cmlidXRlcjEiLAorfQorCisKK19wYXRjaDIgPSB7CisgICAgImlkIjogMTAwMDEsCisg
ICAgImJ1Z19pZCI6IDUwMDAwLAorICAgICJ1cmwiOiAiaHR0cDovL2V4YW1wbGUuY29tLzEwMDAx
IiwKKyAgICAibmFtZSI6ICJQYXRjaDIiLAorICAgICJpc19vYnNvbGV0ZSI6IEZhbHNlLAorICAg
ICJpc19wYXRjaCI6IFRydWUsCisgICAgInJldmlldyI6ICIrIiwKKyAgICAicmV2aWV3ZXJfZW1h
aWwiOiAicmV2aWV3ZXIyQHdlYmtpdC5vcmciLAorICAgICJjb21taXQtcXVldWUiOiAiKyIsCisg
ICAgImNvbW1pdHRlcl9lbWFpbCI6ICJub24tY29tbWl0dGVyQGV4YW1wbGUuY29tIiwKKyAgICAi
YXR0YWNoZXJfZW1haWwiOiAiZXJpY0B3ZWJraXQub3JnIiwKK30KKworCitfcGF0Y2gzID0gewor
ICAgICJpZCI6IDEwMDAyLAorICAgICJidWdfaWQiOiA1MDAwMSwKKyAgICAidXJsIjogImh0dHA6
Ly9leGFtcGxlLmNvbS8xMDAwMiIsCisgICAgIm5hbWUiOiAiUGF0Y2gzIiwKKyAgICAiaXNfb2Jz
b2xldGUiOiBGYWxzZSwKKyAgICAiaXNfcGF0Y2giOiBUcnVlLAorICAgICJyZXZpZXciOiAiPyIs
CisgICAgImF0dGFjaGVyX2VtYWlsIjogImVyaWNAd2Via2l0Lm9yZyIsCit9CisKKworX3BhdGNo
NCA9IHsKKyAgICAiaWQiOiAxMDAwMywKKyAgICAiYnVnX2lkIjogNTAwMDMsCisgICAgInVybCI6
ICJodHRwOi8vZXhhbXBsZS5jb20vMTAwMDIiLAorICAgICJuYW1lIjogIlBhdGNoMyIsCisgICAg
ImlzX29ic29sZXRlIjogRmFsc2UsCisgICAgImlzX3BhdGNoIjogVHJ1ZSwKKyAgICAicmV2aWV3
IjogIisiLAorICAgICJjb21taXQtcXVldWUiOiAiPyIsCisgICAgInJldmlld2VyX2VtYWlsIjog
ImZvb0BiYXIuY29tIiwKKyAgICAiYXR0YWNoZXJfZW1haWwiOiAiQ29udHJpYnV0ZXIyIiwKK30K
KworCitfcGF0Y2g1ID0geworICAgICJpZCI6IDEwMDA0LAorICAgICJidWdfaWQiOiA1MDAwMywK
KyAgICAidXJsIjogImh0dHA6Ly9leGFtcGxlLmNvbS8xMDAwMiIsCisgICAgIm5hbWUiOiAiUGF0
Y2g1IiwKKyAgICAiaXNfb2Jzb2xldGUiOiBGYWxzZSwKKyAgICAiaXNfcGF0Y2giOiBUcnVlLAor
ICAgICJyZXZpZXciOiAiKyIsCisgICAgInJldmlld2VyX2VtYWlsIjogImZvb0BiYXIuY29tIiwK
KyAgICAiYXR0YWNoZXJfZW1haWwiOiAiZXJpY0B3ZWJraXQub3JnIiwKK30KKworCitfcGF0Y2g2
ID0geyAgIyBWYWxpZCBjb21taXR0ZXIsIGJ1dCBubyByZXZpZXdlci4KKyAgICAiaWQiOiAxMDAw
NSwKKyAgICAiYnVnX2lkIjogNTAwMDMsCisgICAgInVybCI6ICJodHRwOi8vZXhhbXBsZS5jb20v
MTAwMDIiLAorICAgICJuYW1lIjogIlJPTExPVVQgb2YgcjM0ODkiLAorICAgICJpc19vYnNvbGV0
ZSI6IEZhbHNlLAorICAgICJpc19wYXRjaCI6IFRydWUsCisgICAgImNvbW1pdC1xdWV1ZSI6ICIr
IiwKKyAgICAiY29tbWl0dGVyX2VtYWlsIjogImZvb0BiYXIuY29tIiwKKyAgICAiYXR0YWNoZXJf
ZW1haWwiOiAiZXJpY0B3ZWJraXQub3JnIiwKK30KKworCitfcGF0Y2g3ID0geyAgIyBWYWxpZCBy
ZXZpZXcsIHBhdGNoIGlzIG1hcmtlZCBvYnNvbGV0ZS4KKyAgICAiaWQiOiAxMDAwNiwKKyAgICAi
YnVnX2lkIjogNTAwMDIsCisgICAgInVybCI6ICJodHRwOi8vZXhhbXBsZS5jb20vMTAwMDIiLAor
ICAgICJuYW1lIjogIlBhdGNoNyIsCisgICAgImlzX29ic29sZXRlIjogVHJ1ZSwKKyAgICAiaXNf
cGF0Y2giOiBUcnVlLAorICAgICJyZXZpZXciOiAiKyIsCisgICAgInJldmlld2VyX2VtYWlsIjog
ImZvb0BiYXIuY29tIiwKKyAgICAiYXR0YWNoZXJfZW1haWwiOiAiZXJpY0B3ZWJraXQub3JnIiwK
K30KKworCisjIFRoaXMgbWF0Y2hlcyBvbmUgb2YgQnVnLnVuYXNzaWduZWRfZW1haWxzCitfdW5h
c3NpZ25lZF9lbWFpbCA9ICJ3ZWJraXQtdW5hc3NpZ25lZEBsaXN0cy53ZWJraXQub3JnIgorIyBU
aGlzIGlzIG5lZWRlZCBmb3IgdGhlIEZsYWt5VGVzdFJlcG9ydGVyIHRvIGJlbGlldmUgdGhlIGJ1
ZworIyB3YXMgZmlsZWQgYnkgb25lIG9mIHRoZSB3ZWJraXRweSBib3RzLgorX2NvbW1pdF9xdWV1
ZV9lbWFpbCA9ICJjb21taXQtcXVldWVAd2Via2l0Lm9yZyIKKworCitfYnVnMSA9IHsKKyAgICAi
aWQiOiA1MDAwMCwKKyAgICAidGl0bGUiOiAiQnVnIHdpdGggdHdvIHIrJ2QgYW5kIGNxKydkIHBh
dGNoZXMsIG9uZSBvZiB3aGljaCBoYXMgYW4gIgorICAgICAgICAgICAgICJpbnZhbGlkIGNvbW1p
dC1xdWV1ZSBzZXR0ZXIuIiwKKyAgICAicmVwb3J0ZXJfZW1haWwiOiAiZm9vQGZvby5jb20iLAor
ICAgICJhc3NpZ25lZF90b19lbWFpbCI6IF91bmFzc2lnbmVkX2VtYWlsLAorICAgICJjY19lbWFp
bHMiOiBbXSwKKyAgICAiYXR0YWNobWVudHMiOiBbX3BhdGNoMSwgX3BhdGNoMl0sCisgICAgImJ1
Z19zdGF0dXMiOiAiVU5DT05GSVJNRUQiLAorICAgICJjb21tZW50cyI6IFtdLAorfQorCisKK19i
dWcyID0geworICAgICJpZCI6IDUwMDAxLAorICAgICJ0aXRsZSI6ICJCdWcgd2l0aCBhIHBhdGNo
IG5lZWRpbmcgcmV2aWV3LiIsCisgICAgInJlcG9ydGVyX2VtYWlsIjogImVyaWNAd2Via2l0Lm9y
ZyIsCisgICAgImFzc2lnbmVkX3RvX2VtYWlsIjogImZvb0Bmb28uY29tIiwKKyAgICAiY2NfZW1h
aWxzIjogWyJhYmFydGhAd2Via2l0Lm9yZyIsIF0sCisgICAgImF0dGFjaG1lbnRzIjogW19wYXRj
aDNdLAorICAgICJidWdfc3RhdHVzIjogIkFTU0lHTkVEIiwKKyAgICAiY29tbWVudHMiOiBbeyJj
b21tZW50X2RhdGUiOiAgZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMSwgNiwgMTEsIDksIDQsIDMpLAor
ICAgICAgICAgICAgICAgICAgImNvbW1lbnRfZW1haWwiOiAiYmFyQGZvby5jb20iLAorICAgICAg
ICAgICAgICAgICAgInRleHQiOiAiTWVzc2FnZTEuIiwKKyAgICAgICAgfSwKKyAgICBdLAorfQor
CisKK19idWczID0geworICAgICJpZCI6IDUwMDAyLAorICAgICJ0aXRsZSI6ICJUaGUgdGhpcmQg
YnVnIiwKKyAgICAicmVwb3J0ZXJfZW1haWwiOiAiZm9vQGZvby5jb20iLAorICAgICJhc3NpZ25l
ZF90b19lbWFpbCI6IF91bmFzc2lnbmVkX2VtYWlsLAorICAgICJjY19lbWFpbHMiOiBbXSwKKyAg
ICAiYXR0YWNobWVudHMiOiBbX3BhdGNoN10sCisgICAgImJ1Z19zdGF0dXMiOiAiTkVXIiwKKyAg
ICAiY29tbWVudHMiOiBbXSwKK30KKworCitfYnVnNCA9IHsKKyAgICAiaWQiOiA1MDAwMywKKyAg
ICAidGl0bGUiOiAiVGhlIGZvdXJ0aCBidWciLAorICAgICJyZXBvcnRlcl9lbWFpbCI6ICJmb29A
Zm9vLmNvbSIsCisgICAgImFzc2lnbmVkX3RvX2VtYWlsIjogImZvb0Bmb28uY29tIiwKKyAgICAi
Y2NfZW1haWxzIjogW10sCisgICAgImF0dGFjaG1lbnRzIjogW19wYXRjaDQsIF9wYXRjaDUsIF9w
YXRjaDZdLAorICAgICJidWdfc3RhdHVzIjogIlJFT1BFTkVEIiwKKyAgICAiY29tbWVudHMiOiBb
XSwKK30KKworCitfYnVnNSA9IHsKKyAgICAiaWQiOiA1MDAwNCwKKyAgICAidGl0bGUiOiAiVGhl
IGZpZnRoIGJ1ZyIsCisgICAgInJlcG9ydGVyX2VtYWlsIjogX2NvbW1pdF9xdWV1ZV9lbWFpbCwK
KyAgICAiYXNzaWduZWRfdG9fZW1haWwiOiAiZm9vQGZvby5jb20iLAorICAgICJjY19lbWFpbHMi
OiBbXSwKKyAgICAiYXR0YWNobWVudHMiOiBbXSwKKyAgICAiYnVnX3N0YXR1cyI6ICJSRVNPTFZF
RCIsCisgICAgImR1cF9pZCI6IDUwMDAyLAorICAgICJjb21tZW50cyI6IFtdLAorfQorCisKK2Ns
YXNzIE1vY2tCdWd6aWxsYVF1ZXJpZXMob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBidWd6aWxsYSk6CisgICAgICAgIHNlbGYuX2J1Z3ppbGxhID0gYnVnemlsbGEKKworICAgIGRl
ZiBfYWxsX2J1Z3Moc2VsZik6CisgICAgICAgIHJldHVybiBtYXAobGFtYmRhIGJ1Z19kaWN0aW9u
YXJ5OiBCdWcoYnVnX2RpY3Rpb25hcnksIHNlbGYuX2J1Z3ppbGxhKSwKKyAgICAgICAgICAgICAg
ICAgICBzZWxmLl9idWd6aWxsYS5idWdfY2FjaGUudmFsdWVzKCkpCisKKyAgICBkZWYgZmV0Y2hf
YnVnX2lkc19mcm9tX2NvbW1pdF9xdWV1ZShzZWxmKToKKyAgICAgICAgYnVnc193aXRoX2NvbW1p
dF9xdWV1ZWRfcGF0Y2hlcyA9IGZpbHRlcigKKyAgICAgICAgICAgICAgICBsYW1iZGEgYnVnOiBi
dWcuY29tbWl0X3F1ZXVlZF9wYXRjaGVzKCksCisgICAgICAgICAgICAgICAgc2VsZi5fYWxsX2J1
Z3MoKSkKKyAgICAgICAgcmV0dXJuIG1hcChsYW1iZGEgYnVnOiBidWcuaWQoKSwgYnVnc193aXRo
X2NvbW1pdF9xdWV1ZWRfcGF0Y2hlcykKKworICAgIGRlZiBmZXRjaF9hdHRhY2htZW50X2lkc19m
cm9tX3Jldmlld19xdWV1ZShzZWxmKToKKyAgICAgICAgdW5yZXZpZXdlZF9wYXRjaGVzID0gc3Vt
KFtidWcudW5yZXZpZXdlZF9wYXRjaGVzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgYnVnIGluIHNlbGYuX2FsbF9idWdzKCldLCBbXSkKKyAgICAgICAgcmV0dXJuIG1h
cChsYW1iZGEgcGF0Y2g6IHBhdGNoLmlkKCksIHVucmV2aWV3ZWRfcGF0Y2hlcykKKworICAgIGRl
ZiBmZXRjaF9wYXRjaGVzX2Zyb21fY29tbWl0X3F1ZXVlKHNlbGYpOgorICAgICAgICByZXR1cm4g
c3VtKFtidWcuY29tbWl0X3F1ZXVlZF9wYXRjaGVzKCkKKyAgICAgICAgICAgICAgICAgICAgZm9y
IGJ1ZyBpbiBzZWxmLl9hbGxfYnVncygpXSwgW10pCisKKyAgICBkZWYgZmV0Y2hfYnVnX2lkc19m
cm9tX3BlbmRpbmdfY29tbWl0X2xpc3Qoc2VsZik6CisgICAgICAgIGJ1Z3Nfd2l0aF9yZXZpZXdl
ZF9wYXRjaGVzID0gZmlsdGVyKGxhbWJkYSBidWc6IGJ1Zy5yZXZpZXdlZF9wYXRjaGVzKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2FsbF9idWdz
KCkpCisgICAgICAgIGJ1Z19pZHMgPSBtYXAobGFtYmRhIGJ1ZzogYnVnLmlkKCksIGJ1Z3Nfd2l0
aF9yZXZpZXdlZF9wYXRjaGVzKQorICAgICAgICAjIE5PVEU6IFRoaXMgbWFudWFsIGhhY2sgaGVy
ZSBpcyB0byBhbGxvdyB0ZXN0aW5nIGxvZ2dpbmcgaW4KKyAgICAgICAgIyB0ZXN0X2Fzc2lnbl90
b19jb21taXR0ZXIgdGhlIHJlYWwgcGVuZGluZy1jb21taXQgcXVlcnkgb24gYnVnemlsbGEKKyAg
ICAgICAgIyB3aWxsIHJldHVybiBidWdzIHdpdGggcGF0Y2hlcyB3aGljaCBoYXZlIHIrLCBidXQg
YXJlIGFsc28gb2Jzb2xldGUuCisgICAgICAgIHJldHVybiBidWdfaWRzICsgWzUwMDAyXQorCisg
ICAgZGVmIGZldGNoX3BhdGNoZXNfZnJvbV9wZW5kaW5nX2NvbW1pdF9saXN0KHNlbGYpOgorICAg
ICAgICByZXR1cm4gc3VtKFtidWcucmV2aWV3ZWRfcGF0Y2hlcygpIGZvciBidWcgaW4gc2VsZi5f
YWxsX2J1Z3MoKV0sIFtdKQorCisgICAgZGVmIGZldGNoX2J1Z3NfbWF0Y2hpbmdfc2VhcmNoKHNl
bGYsIHNlYXJjaF9zdHJpbmcsIGF1dGhvcl9lbWFpbD1Ob25lKToKKyAgICAgICAgcmV0dXJuIFtz
ZWxmLl9idWd6aWxsYS5mZXRjaF9idWcoNTAwMDQpLCBzZWxmLl9idWd6aWxsYS5mZXRjaF9idWco
NTAwMDMpXQorCisKK19tb2NrX3Jldmlld2VycyA9IFtSZXZpZXdlcigiRm9vIEJhciIsICJmb29A
YmFyLmNvbSIpLAorICAgICAgICAgICAgICAgICAgIFJldmlld2VyKCJSZXZpZXdlcjIiLCAicmV2
aWV3ZXIyQHdlYmtpdC5vcmciKV0KKworCisjIEZJWE1FOiBCdWd6aWxsYSBpcyB0aGUgd3Jvbmcg
TW9jay1wb2ludC4gIE9uY2Ugd2UgaGF2ZSBhIEJ1Z3ppbGxhTmV0d29yaworIyAgICAgICAgY2xh
c3Mgd2Ugc2hvdWxkIG1vY2sgdGhhdCBpbnN0ZWFkLgorIyBNb3N0IG9mIHRoaXMgY2xhc3MgaXMg
anVzdCBjb3B5L3Bhc3RlIGZyb20gQnVnemlsbGEuCitjbGFzcyBNb2NrQnVnemlsbGEob2JqZWN0
KToKKworICAgIGJ1Z19zZXJ2ZXJfdXJsID0gImh0dHA6Ly9leGFtcGxlLmNvbSIKKworICAgIGJ1
Z19jYWNoZSA9IF9pZF90b19vYmplY3RfZGljdGlvbmFyeShfYnVnMSwgX2J1ZzIsIF9idWczLCBf
YnVnNCwgX2J1ZzUpCisKKyAgICBhdHRhY2htZW50X2NhY2hlID0gX2lkX3RvX29iamVjdF9kaWN0
aW9uYXJ5KF9wYXRjaDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfcGF0Y2gyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX3BhdGNoMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9wYXRjaDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfcGF0Y2g1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX3BhdGNoNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9wYXRjaDcpCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAg
IHNlbGYucXVlcmllcyA9IE1vY2tCdWd6aWxsYVF1ZXJpZXMoc2VsZikKKyAgICAgICAgIyBGSVhN
RTogVGhpcyBzaG91bGQgbW92ZSBvbnRvIHRoZSBIb3N0IG9iamVjdCwgYW5kIHdlIHNob3VsZCB1
c2UgYSBNb2NrQ29tbWl0dGVyTGlzdAorICAgICAgICBzZWxmLmNvbW1pdHRlcnMgPSBDb21taXR0
ZXJMaXN0KHJldmlld2Vycz1fbW9ja19yZXZpZXdlcnMpCisgICAgICAgIHNlbGYuX292ZXJyaWRl
X3BhdGNoID0gTm9uZQorCisgICAgZGVmIGNyZWF0ZV9idWcoc2VsZiwKKyAgICAgICAgICAgICAg
ICAgICBidWdfdGl0bGUsCisgICAgICAgICAgICAgICAgICAgYnVnX2Rlc2NyaXB0aW9uLAorICAg
ICAgICAgICAgICAgICAgIGNvbXBvbmVudD1Ob25lLAorICAgICAgICAgICAgICAgICAgIGRpZmY9
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICBwYXRjaF9kZXNjcmlwdGlvbj1Ob25lLAorICAgICAg
ICAgICAgICAgICAgIGNjPU5vbmUsCisgICAgICAgICAgICAgICAgICAgYmxvY2tlZD1Ob25lLAor
ICAgICAgICAgICAgICAgICAgIG1hcmtfZm9yX3Jldmlldz1GYWxzZSwKKyAgICAgICAgICAgICAg
ICAgICBtYXJrX2Zvcl9jb21taXRfcXVldWU9RmFsc2UpOgorICAgICAgICBsb2coIk1PQ0sgY3Jl
YXRlX2J1ZyIpCisgICAgICAgIGxvZygiYnVnX3RpdGxlOiAlcyIgJSBidWdfdGl0bGUpCisgICAg
ICAgIGxvZygiYnVnX2Rlc2NyaXB0aW9uOiAlcyIgJSBidWdfZGVzY3JpcHRpb24pCisgICAgICAg
IGlmIGNvbXBvbmVudDoKKyAgICAgICAgICAgIGxvZygiY29tcG9uZW50OiAlcyIgJSBjb21wb25l
bnQpCisgICAgICAgIGlmIGNjOgorICAgICAgICAgICAgbG9nKCJjYzogJXMiICUgY2MpCisgICAg
ICAgIGlmIGJsb2NrZWQ6CisgICAgICAgICAgICBsb2coImJsb2NrZWQ6ICVzIiAlIGJsb2NrZWQp
CisgICAgICAgIHJldHVybiA1MDAwNAorCisgICAgZGVmIHF1aXBzKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gWyJHb29kIGFydGlzdHMgY29weS4gR3JlYXQgYXJ0aXN0cyBzdGVhbC4gLSBQYWJsbyBQ
aWNhc3NvIl0KKworICAgIGRlZiBmZXRjaF9idWcoc2VsZiwgYnVnX2lkKToKKyAgICAgICAgcmV0
dXJuIEJ1ZyhzZWxmLmJ1Z19jYWNoZS5nZXQoaW50KGJ1Z19pZCkpLCBzZWxmKQorCisgICAgZGVm
IHNldF9vdmVycmlkZV9wYXRjaChzZWxmLCBwYXRjaCk6CisgICAgICAgIHNlbGYuX292ZXJyaWRl
X3BhdGNoID0gcGF0Y2gKKworICAgIGRlZiBmZXRjaF9hdHRhY2htZW50KHNlbGYsIGF0dGFjaG1l
bnRfaWQpOgorICAgICAgICBpZiBzZWxmLl9vdmVycmlkZV9wYXRjaDoKKyAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9vdmVycmlkZV9wYXRjaAorCisgICAgICAgIGF0dGFjaG1lbnRfZGljdGlvbmFy
eSA9IHNlbGYuYXR0YWNobWVudF9jYWNoZS5nZXQoYXR0YWNobWVudF9pZCkKKyAgICAgICAgaWYg
bm90IGF0dGFjaG1lbnRfZGljdGlvbmFyeToKKyAgICAgICAgICAgIHByaW50ICJNT0NLOiBmZXRj
aF9hdHRhY2htZW50OiAlcyBpcyBub3QgYSBrbm93biBhdHRhY2htZW50IGlkIiAlIGF0dGFjaG1l
bnRfaWQKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGJ1ZyA9IHNlbGYuZmV0Y2hf
YnVnKGF0dGFjaG1lbnRfZGljdGlvbmFyeVsiYnVnX2lkIl0pCisgICAgICAgIGZvciBhdHRhY2ht
ZW50IGluIGJ1Zy5hdHRhY2htZW50cyhpbmNsdWRlX29ic29sZXRlPVRydWUpOgorICAgICAgICAg
ICAgaWYgYXR0YWNobWVudC5pZCgpID09IGludChhdHRhY2htZW50X2lkKToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYXR0YWNobWVudAorCisgICAgZGVmIGJ1Z191cmxfZm9yX2J1Z19pZChzZWxm
LCBidWdfaWQpOgorICAgICAgICByZXR1cm4gIiVzLyVzIiAlIChzZWxmLmJ1Z19zZXJ2ZXJfdXJs
LCBidWdfaWQpCisKKyAgICBkZWYgZmV0Y2hfYnVnX2RpY3Rpb25hcnkoc2VsZiwgYnVnX2lkKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuYnVnX2NhY2hlLmdldChidWdfaWQpCisKKyAgICBkZWYgYXR0
YWNobWVudF91cmxfZm9yX2lkKHNlbGYsIGF0dGFjaG1lbnRfaWQsIGFjdGlvbj0idmlldyIpOgor
ICAgICAgICBhY3Rpb25fcGFyYW0gPSAiIgorICAgICAgICBpZiBhY3Rpb24gYW5kIGFjdGlvbiAh
PSAidmlldyI6CisgICAgICAgICAgICBhY3Rpb25fcGFyYW0gPSAiJmFjdGlvbj0lcyIgJSBhY3Rp
b24KKyAgICAgICAgcmV0dXJuICIlcy8lcyVzIiAlIChzZWxmLmJ1Z19zZXJ2ZXJfdXJsLCBhdHRh
Y2htZW50X2lkLCBhY3Rpb25fcGFyYW0pCisKKyAgICBkZWYgcmVhc3NpZ25fYnVnKHNlbGYsIGJ1
Z19pZCwgYXNzaWduZWU9Tm9uZSwgY29tbWVudF90ZXh0PU5vbmUpOgorICAgICAgICBsb2coIk1P
Q0sgcmVhc3NpZ25fYnVnOiBidWdfaWQ9JXMsIGFzc2lnbmVlPSVzIiAlIChidWdfaWQsIGFzc2ln
bmVlKSkKKyAgICAgICAgaWYgY29tbWVudF90ZXh0OgorICAgICAgICAgICAgbG9nKCItLSBCZWdp
biBjb21tZW50IC0tIikKKyAgICAgICAgICAgIGxvZyhjb21tZW50X3RleHQpCisgICAgICAgICAg
ICBsb2coIi0tIEVuZCBjb21tZW50IC0tIikKKworICAgIGRlZiBzZXRfZmxhZ19vbl9hdHRhY2ht
ZW50KHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudF9pZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnX25hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21tZW50X3RleHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
ZGRpdGlvbmFsX2NvbW1lbnRfdGV4dD1Ob25lKToKKyAgICAgICAgbG9nKCJNT0NLIHNldHRpbmcg
ZmxhZyAnJXMnIHRvICclcycgb24gYXR0YWNobWVudCAnJXMnIHdpdGggY29tbWVudCAnJXMnIGFu
ZCBhZGRpdGlvbmFsIGNvbW1lbnQgJyVzJyIgJSAoCisgICAgICAgICAgICBmbGFnX25hbWUsIGZs
YWdfdmFsdWUsIGF0dGFjaG1lbnRfaWQsIGNvbW1lbnRfdGV4dCwgYWRkaXRpb25hbF9jb21tZW50
X3RleHQpKQorCisgICAgZGVmIHBvc3RfY29tbWVudF90b19idWcoc2VsZiwgYnVnX2lkLCBjb21t
ZW50X3RleHQsIGNjPU5vbmUpOgorICAgICAgICBsb2coIk1PQ0sgYnVnIGNvbW1lbnQ6IGJ1Z19p
ZD0lcywgY2M9JXNcbi0tLSBCZWdpbiBjb21tZW50IC0tLVxuJXNcbi0tLSBFbmQgY29tbWVudCAt
LS1cbiIgJSAoCisgICAgICAgICAgICBidWdfaWQsIGNjLCBjb21tZW50X3RleHQpKQorCisgICAg
ZGVmIGFkZF9hdHRhY2htZW50X3RvX2J1ZyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnVnX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9vcl9zdHJp
bmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPU5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21tZW50X3RleHQ9Tm9uZSk6CisgICAgICAgIGxvZygiTU9DSyBhZGRfYXR0
YWNobWVudF90b19idWc6IGJ1Z19pZD0lcywgZGVzY3JpcHRpb249JXMgZmlsZW5hbWU9JXMiICUg
KGJ1Z19pZCwgZGVzY3JpcHRpb24sIGZpbGVuYW1lKSkKKyAgICAgICAgaWYgY29tbWVudF90ZXh0
OgorICAgICAgICAgICAgbG9nKCItLSBCZWdpbiBjb21tZW50IC0tIikKKyAgICAgICAgICAgIGxv
Zyhjb21tZW50X3RleHQpCisgICAgICAgICAgICBsb2coIi0tIEVuZCBjb21tZW50IC0tIikKKwor
ICAgIGRlZiBhZGRfcGF0Y2hfdG9fYnVnKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
YnVnX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudF90
ZXh0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFya19mb3JfcmV2aWV3PUZhbHNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtfZm9yX2NvbW1pdF9xdWV1ZT1GYWxzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrX2Zvcl9sYW5kaW5nPUZhbHNlKToKKyAgICAg
ICAgbG9nKCJNT0NLIGFkZF9wYXRjaF90b19idWc6IGJ1Z19pZD0lcywgZGVzY3JpcHRpb249JXMs
IG1hcmtfZm9yX3Jldmlldz0lcywgbWFya19mb3JfY29tbWl0X3F1ZXVlPSVzLCBtYXJrX2Zvcl9s
YW5kaW5nPSVzIiAlCisgICAgICAgICAgICAoYnVnX2lkLCBkZXNjcmlwdGlvbiwgbWFya19mb3Jf
cmV2aWV3LCBtYXJrX2Zvcl9jb21taXRfcXVldWUsIG1hcmtfZm9yX2xhbmRpbmcpKQorICAgICAg
ICBpZiBjb21tZW50X3RleHQ6CisgICAgICAgICAgICBsb2coIi0tIEJlZ2luIGNvbW1lbnQgLS0i
KQorICAgICAgICAgICAgbG9nKGNvbW1lbnRfdGV4dCkKKyAgICAgICAgICAgIGxvZygiLS0gRW5k
IGNvbW1lbnQgLS0iKQorCisgICAgZGVmIGFkZF9jY190b19idWcoc2VsZiwgYnVnX2lkLCBjY3Mp
OgorICAgICAgICBwYXNzCisKKyAgICBkZWYgb2Jzb2xldGVfYXR0YWNobWVudChzZWxmLCBhdHRh
Y2htZW50X2lkLCBtZXNzYWdlPU5vbmUpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgcmVvcGVu
X2J1ZyhzZWxmLCBidWdfaWQsIG1lc3NhZ2UpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgY2xv
c2VfYnVnX2FzX2ZpeGVkKHNlbGYsIGJ1Z19pZCwgbWVzc2FnZSk6CisgICAgICAgIHBhc3MKKwor
ICAgIGRlZiBjbGVhcl9hdHRhY2htZW50X2ZsYWdzKHNlbGYsIGF0dGFjaG1lbnRfaWQsIG1lc3Nh
Z2UpOgorICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkKaW5kZXggM2Q0
MzRkZmNjZDM1MGYyN2RjOWU3ZGU5MzA2ZmE5Mzk2NWQ2YmM1Ni4uZGU5NmZhMTYwNjA3ODNmNzhh
YzdmOTJlZWY5MDdmMmIzYWNhZjNkMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weQpA
QCAtMzQsNyArMzQsNyBAQCBmcm9tIC5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEsIEJ1Z3ppbGxh
UXVlcmllcywgRWRpdFVzZXJzUGFyc2VyCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0
LmNoYW5nZWxvZyBpbXBvcnQgcGFyc2VfYnVnX2lkCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJraXRweS50b29s
Lm1vY2t0b29sIGltcG9ydCBNb2NrQnJvd3NlcgorZnJvbSB3ZWJraXRweS5jb21tb24ubmV0Lndl
Yl9tb2NrIGltcG9ydCBNb2NrQnJvd3NlcgogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sg
aW1wb3J0IE1vY2sKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9y
dCBCZWF1dGlmdWxTb3VwCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWlsZGJvdC9idWlsZGJvdF9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90X21vY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZjZmNl
YjExNGU0OWNkMzgyNTU4ODMxY2ExZmU3NWNhODA1YTNhYwotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdF9tb2NrLnB5
CkBAIC0wLDAgKzEsMTE1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitjbGFzcyBNb2NrQnVpbGRlcihv
YmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5fbmFt
ZSA9IG5hbWUKKworICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFt
ZQorCisgICAgZGVmIHJlc3VsdHNfdXJsKHNlbGYpOgorICAgICAgICByZXR1cm4gImh0dHA6Ly9l
eGFtcGxlLmNvbS9idWlsZGVycy8lcy9yZXN1bHRzIiAlIHNlbGYubmFtZSgpCisKKyAgICBkZWYg
YWNjdW11bGF0ZWRfcmVzdWx0c191cmwoc2VsZik6CisgICAgICAgIHJldHVybiAiaHR0cDovL2V4
YW1wbGUuY29tL2YvYnVpbGRlcnMvJXMvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzIiAlIHNl
bGYubmFtZSgpCisKKyAgICBkZWYgZm9yY2VfYnVpbGQoc2VsZiwgdXNlcm5hbWUsIGNvbW1lbnRz
KToKKyAgICAgICAgbG9nKCJNT0NLOiBmb3JjZV9idWlsZDogbmFtZT0lcywgdXNlcm5hbWU9JXMs
IGNvbW1lbnRzPSVzIiAlICgKKyAgICAgICAgICAgIHNlbGYuX25hbWUsIHVzZXJuYW1lLCBjb21t
ZW50cykpCisKKworY2xhc3MgTW9ja0ZhaWx1cmVNYXAob2JqZWN0KToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgYnVpbGRib3QpOgorICAgICAgICBzZWxmLl9idWlsZGJvdCA9IGJ1aWxkYm90CisK
KyAgICBkZWYgaXNfZW1wdHkoc2VsZik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVm
IGZpbHRlcl9vdXRfb2xkX2ZhaWx1cmVzKHNlbGYsIGlzX29sZF9yZXZpc2lvbik6CisgICAgICAg
IHBhc3MKKworICAgIGRlZiBmYWlsaW5nX3JldmlzaW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJu
IFsyOTgzN10KKworICAgIGRlZiBidWlsZGVyc19mYWlsaW5nX2ZvcihzZWxmLCByZXZpc2lvbik6
CisgICAgICAgIHJldHVybiBbc2VsZi5fYnVpbGRib3QuYnVpbGRlcl93aXRoX25hbWUoIkJ1aWxk
ZXIxIildCisKKyAgICBkZWYgdGVzdHNfZmFpbGluZ19mb3Ioc2VsZiwgcmV2aXNpb24pOgorICAg
ICAgICByZXR1cm4gWyJtb2NrLXRlc3QtMSJdCisKKyAgICBkZWYgZmFpbGluZ190ZXN0cyhzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNldChbIm1vY2stdGVzdC0xIl0pCisKKworY2xhc3MgTW9ja0J1
aWxkQm90KG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9t
b2NrX2J1aWxkZXIxX3N0YXR1cyA9IHsKKyAgICAgICAgICAgICJuYW1lIjogIkJ1aWxkZXIxIiwK
KyAgICAgICAgICAgICJpc19ncmVlbiI6IFRydWUsCisgICAgICAgICAgICAiYWN0aXZpdHkiOiAi
YnVpbGRpbmciLAorICAgICAgICB9CisgICAgICAgIHNlbGYuX21vY2tfYnVpbGRlcjJfc3RhdHVz
ID0geworICAgICAgICAgICAgIm5hbWUiOiAiQnVpbGRlcjIiLAorICAgICAgICAgICAgImlzX2dy
ZWVuIjogVHJ1ZSwKKyAgICAgICAgICAgICJhY3Rpdml0eSI6ICJpZGxlIiwKKyAgICAgICAgfQor
CisgICAgZGVmIGJ1aWxkZXJfd2l0aF9uYW1lKHNlbGYsIG5hbWUpOgorICAgICAgICByZXR1cm4g
TW9ja0J1aWxkZXIobmFtZSkKKworICAgIGRlZiBidWlsZGVyX3N0YXR1c2VzKHNlbGYpOgorICAg
ICAgICByZXR1cm4gWworICAgICAgICAgICAgc2VsZi5fbW9ja19idWlsZGVyMV9zdGF0dXMsCisg
ICAgICAgICAgICBzZWxmLl9tb2NrX2J1aWxkZXIyX3N0YXR1cywKKyAgICAgICAgXQorCisgICAg
ZGVmIHJlZF9jb3JlX2J1aWxkZXJzX25hbWVzKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5f
bW9ja19idWlsZGVyMl9zdGF0dXNbImlzX2dyZWVuIl06CisgICAgICAgICAgICByZXR1cm4gW3Nl
bGYuX21vY2tfYnVpbGRlcjJfc3RhdHVzWyJuYW1lIl1dCisgICAgICAgIHJldHVybiBbXQorCisg
ICAgZGVmIHJlZF9jb3JlX2J1aWxkZXJzKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fbW9j
a19idWlsZGVyMl9zdGF0dXNbImlzX2dyZWVuIl06CisgICAgICAgICAgICByZXR1cm4gW3NlbGYu
X21vY2tfYnVpbGRlcjJfc3RhdHVzXQorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBpZGxl
X3JlZF9jb3JlX2J1aWxkZXJzKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fbW9ja19idWls
ZGVyMl9zdGF0dXNbImlzX2dyZWVuIl06CisgICAgICAgICAgICByZXR1cm4gW3NlbGYuX21vY2tf
YnVpbGRlcjJfc3RhdHVzXQorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBsYXN0X2dyZWVu
X3JldmlzaW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gOTQ3OQorCisgICAgZGVmIGxpZ2h0X3Ry
ZWVfb25fZmlyZShzZWxmKToKKyAgICAgICAgc2VsZi5fbW9ja19idWlsZGVyMl9zdGF0dXNbImlz
X2dyZWVuIl0gPSBGYWxzZQorCisgICAgZGVmIGZhaWx1cmVfbWFwKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gTW9ja0ZhaWx1cmVNYXAoc2VsZikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFsc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFsc191bml0dGVzdC5weQppbmRleCBiZDEzYzlh
ODMzN2YyMWMxMjRlOWU2Yjk1Y2E0NzdkMGMyZWE3M2UyLi4wMDc1ZGQ5NjAxYTJjNjNmOGJmOWZk
MzE2MTc0MzMzMGM0ZjRkOTVjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2NyZWRlbnRpYWxzX3VuaXR0ZXN0LnB5CkBAIC0zNSw3ICszNSw5IEBA
IGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5jcmVkZW50aWFscyBpbXBvcnQgQ3JlZGVudGlhbHMK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENh
cHR1cmUKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCi1mcm9tIHdl
YmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVXNlciwgTW9ja0V4
ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwor
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhl
Y3V0aXZlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlcl9tb2NrIGltcG9ydCBNb2Nr
VXNlcgogCiAKICMgRklYTUU6IE90aGVyIHVuaXQgdGVzdHMgcHJvYmFibHkgd2FudCB0aGlzIGNs
YXNzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2ZhaWx1
cmVtYXBfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvZmFp
bHVyZW1hcF91bml0dGVzdC5weQppbmRleCBmMzFlZDI1MjIyMzNhNTA1YTYxNTc4ZjE0MWMwMzAw
NmQzNThkMGE5Li45YTY2ZDllZGUyMTEwYTg2NmMzNDcxZGUxNmRmYjM1M2UzYjM4MmUxIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvZmFpbHVyZW1hcF91bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvZmFpbHVyZW1h
cF91bml0dGVzdC5weQpAQCAtMzEsNyArMzEsNyBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLm5ldC5idWlsZGJvdCBpbXBvcnQgQnVpbGQKIGZyb20gd2Via2l0cHkuY29t
bW9uLm5ldC5mYWlsdXJlbWFwIGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQucmVn
cmVzc2lvbndpbmRvdyBpbXBvcnQgUmVncmVzc2lvbldpbmRvdwotZnJvbSB3ZWJraXRweS50b29s
Lm1vY2t0b29sIGltcG9ydCBNb2NrQnVpbGRlcgorZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1
aWxkYm90LmJ1aWxkYm90X21vY2sgaW1wb3J0IE1vY2tCdWlsZGVyCiAKIAogY2xhc3MgRmFpbHVy
ZU1hcFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vbmV0L2lyYy9pcmNfbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9pcmMvaXJjX21vY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM0YmUwNjcwNWEzYzMx
M2YyYTEyYTFmYzNhZWM1YzEyNTM2MmE3OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9pcmMvaXJjX21vY2sucHkKQEAgLTAsMCArMSwzNyBAQAor
IyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4K
KyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVk
X2xvZ2dpbmcgaW1wb3J0IGxvZworCisKK2NsYXNzIE1vY2tJUkMob2JqZWN0KToKKyAgICBkZWYg
cG9zdChzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgbG9nKCJNT0NLOiBpcmMucG9zdDogJXMiICUg
bWVzc2FnZSkKKworICAgIGRlZiBkaXNjb25uZWN0KHNlbGYpOgorICAgICAgICBsb2coIk1PQ0s6
IGlyYy5kaXNjb25uZWN0IikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9zdGF0dXNzZXJ2ZXJfbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9zdGF0dXNzZXJ2ZXJfbW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWQxYWU4MDdhZTg4ZGZk
OWI1YWQwM2Q5ODAzN2Q2MTI2MjUxNDc1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlcl9tb2NrLnB5CkBAIC0wLDAgKzEsNjgg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRl
ZF9sb2dnaW5nIGltcG9ydCBsb2cKKworCitjbGFzcyBNb2NrU3RhdHVzU2VydmVyKG9iamVjdCk6
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYm90X2lkPU5vbmUsIHdvcmtfaXRlbXM9Tm9uZSk6
CisgICAgICAgIHNlbGYuaG9zdCA9ICJleGFtcGxlLmNvbSIKKyAgICAgICAgc2VsZi5ib3RfaWQg
PSBib3RfaWQKKyAgICAgICAgc2VsZi5fd29ya19pdGVtcyA9IHdvcmtfaXRlbXMgb3IgW10KKwor
ICAgIGRlZiBwYXRjaF9zdGF0dXMoc2VsZiwgcXVldWVfbmFtZSwgcGF0Y2hfaWQpOgorICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgZGVmIHN2bl9yZXZpc2lvbihzZWxmLCBzdm5fcmV2aXNpb24p
OgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIG5leHRfd29ya19pdGVtKHNlbGYsIHF1
ZXVlX25hbWUpOgorICAgICAgICBpZiBub3Qgc2VsZi5fd29ya19pdGVtczoKKyAgICAgICAgICAg
IHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl93b3JrX2l0ZW1zLnBvcCgwKQorCisg
ICAgZGVmIHJlbGVhc2Vfd29ya19pdGVtKHNlbGYsIHF1ZXVlX25hbWUsIHBhdGNoKToKKyAgICAg
ICAgbG9nKCJNT0NLOiByZWxlYXNlX3dvcmtfaXRlbTogJXMgJXMiICUgKHF1ZXVlX25hbWUsIHBh
dGNoLmlkKCkpKQorCisgICAgZGVmIHVwZGF0ZV93b3JrX2l0ZW1zKHNlbGYsIHF1ZXVlX25hbWUs
IHdvcmtfaXRlbXMpOgorICAgICAgICBzZWxmLl93b3JrX2l0ZW1zID0gd29ya19pdGVtcworICAg
ICAgICBsb2coIk1PQ0s6IHVwZGF0ZV93b3JrX2l0ZW1zOiAlcyAlcyIgJSAocXVldWVfbmFtZSwg
d29ya19pdGVtcykpCisKKyAgICBkZWYgc3VibWl0X3RvX2V3cyhzZWxmLCBwYXRjaF9pZCk6Cisg
ICAgICAgIGxvZygiTU9DSzogc3VibWl0X3RvX2V3czogJXMiICUgKHBhdGNoX2lkKSkKKworICAg
IGRlZiB1cGRhdGVfc3RhdHVzKHNlbGYsIHF1ZXVlX25hbWUsIHN0YXR1cywgcGF0Y2g9Tm9uZSwg
cmVzdWx0c19maWxlPU5vbmUpOgorICAgICAgICBsb2coIk1PQ0s6IHVwZGF0ZV9zdGF0dXM6ICVz
ICVzIiAlIChxdWV1ZV9uYW1lLCBzdGF0dXMpKQorICAgICAgICByZXR1cm4gMTg3CisKKyAgICBk
ZWYgdXBkYXRlX3N2bl9yZXZpc2lvbihzZWxmLCBzdm5fcmV2aXNpb24sIGJyb2tlbl9ib3QpOgor
ICAgICAgICByZXR1cm4gMTkxCisKKyAgICBkZWYgcmVzdWx0c191cmxfZm9yX3N0YXR1cyhzZWxm
LCBzdGF0dXNfaWQpOgorICAgICAgICByZXR1cm4gImh0dHA6Ly9kdW1teV91cmwiCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlcl91
bml0dGVzdC5weQppbmRleCAxMTY5YmEwOGQ4ZGYzZjFkNDc5ODRiZmVmOTZhOGM3ODczNzdhMTg3
Li4xZjBhZmQwNWJiN2MwMDA5ZThhMzRmZGJkYmExNzE3ODdiYzJhNjYxIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyX3VuaXR0ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXJfdW5p
dHRlc3QucHkKQEAgLTMwLDcgKzMwLDcgQEAgaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0
cHkuY29tbW9uLm5ldC5zdGF0dXNzZXJ2ZXIgaW1wb3J0IFN0YXR1c1NlcnZlcgogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmVUZXN0
Q2FzZUJhc2UKLWZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja0Jyb3dzZXIK
K2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC53ZWJfbW9jayBpbXBvcnQgTW9ja0Jyb3dzZXIKIAog
CiBjbGFzcyBTdGF0dXNTZXJ2ZXJUZXN0KE91dHB1dENhcHR1cmVUZXN0Q2FzZUJhc2UpOgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3dlYl9tb2NrLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3dlYl9tb2NrLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU5NmRkMGE0MTkwYmI0ZGFmNTEwYTFhMWY3YTU1ZTU1NjMzMTFkYzMKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvd2ViX21vY2sucHkKQEAgLTAs
MCArMSw1MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBTdHJpbmdJTworCisKK2NsYXNzIE1v
Y2tXZWIob2JqZWN0KToKKyAgICBkZWYgZ2V0X2JpbmFyeShzZWxmLCB1cmwsIGNvbnZlcnRfNDA0
X3RvX05vbmU9RmFsc2UpOgorICAgICAgICByZXR1cm4gIk1PQ0sgV2ViIHJlc3VsdCwgY29udmVy
dCA0MDQgdG8gTm9uZT0lcyIgJSBjb252ZXJ0XzQwNF90b19Ob25lCisKKworIyBGSVhNRTogQ2xh
c3NlcyB3aGljaCBhcmUgdXNpbmcgQnJvd3NlciBwcm9iYWJseSB3YW50IHRvIHVzZSBXZWIgaW5z
dGVhZC4KK2NsYXNzIE1vY2tCcm93c2VyKG9iamVjdCk6CisgICAgcGFyYW1zID0ge30KKworICAg
IGRlZiBvcGVuKHNlbGYsIHVybCk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBzZWxlY3RfZm9y
bShzZWxmLCBuYW1lKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYs
IGtleSwgdmFsdWUpOgorICAgICAgICBzZWxmLnBhcmFtc1trZXldID0gdmFsdWUKKworICAgIGRl
ZiBzdWJtaXQoc2VsZik6CisgICAgICAgIHJldHVybiBTdHJpbmdJTy5TdHJpbmdJTygpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21v
Y2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21v
Y2sucHkKaW5kZXggMGU5MzMxMjJiODU5ZWJlOTYxZDIyNDg2YWMzMzNjOTIzNjI0NDUwMC4uNzZk
ZWIzYTAwNWNiYmZmZTlmZGQxN2EwZGZmOTk5ODRhNzEzOTUxYSAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQpAQCAt
MSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjYsMTEgKzI2LDQ0
IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jIEZJWE1FOiBJbXBsZW1lbnQg
dGhlIHJlc3Qgb2YgdGhlIGludGVyZmFjZSBhcyBuZWVkZWQgZm9yIHRlc3RpbmcgOikuCitpbXBv
cnQgb3MKIAotIyBGSVhNRTogVW5pZnkgd2l0aCB0b29sL21vY2t0b29sLk1vY2tFeGVjdXRpdmUu
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBs
b2cKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVy
cm9yCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCisKKyMg
RklYTUU6IFRoaXMgc2hvdWxkIGJlIHVuaWZpZWQgd2l0aCBNb2NrRXhlY3V0aXZlMgorY2xhc3Mg
TW9ja0V4ZWN1dGl2ZShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaG91bGRfbG9n
PUZhbHNlLCBzaG91bGRfdGhyb3c9RmFsc2UsIHNob3VsZF90aHJvd193aGVuX3J1bj1Ob25lKToK
KyAgICAgICAgc2VsZi5fc2hvdWxkX2xvZyA9IHNob3VsZF9sb2cKKyAgICAgICAgc2VsZi5fc2hv
dWxkX3Rocm93ID0gc2hvdWxkX3Rocm93CisgICAgICAgIHNlbGYuX3Nob3VsZF90aHJvd193aGVu
X3J1biA9IHNob3VsZF90aHJvd193aGVuX3J1biBvciBzZXQoKQorICAgICAgICAjIEZJWE1FOiBP
bmNlIGV4ZWN1dGl2ZSB3cmFwcyBvcy5nZXRwaWQoKSB3ZSBjYW4ganVzdCB1c2UgYSBzdGF0aWMg
cGlkIGZvciAidGhpcyIgcHJvY2Vzcy4KKyAgICAgICAgc2VsZi5fcnVubmluZ19waWRzID0gW29z
LmdldHBpZCgpXQorCisgICAgZGVmIGNoZWNrX3J1bm5pbmdfcGlkKHNlbGYsIHBpZCk6CisgICAg
ICAgIHJldHVybiBwaWQgaW4gc2VsZi5fcnVubmluZ19waWRzCisKKyAgICBkZWYgcnVuX2FuZF90
aHJvd19pZl9mYWlsKHNlbGYsIGFyZ3MsIHF1aWV0PUZhbHNlLCBjd2Q9Tm9uZSk6CisgICAgICAg
IGlmIHNlbGYuX3Nob3VsZF9sb2c6CisgICAgICAgICAgICBsb2coIk1PQ0sgcnVuX2FuZF90aHJv
d19pZl9mYWlsOiAlcywgY3dkPSVzIiAlIChhcmdzLCBjd2QpKQorICAgICAgICBpZiBzZWxmLl9z
aG91bGRfdGhyb3dfd2hlbl9ydW4uaW50ZXJzZWN0aW9uKGFyZ3MpOgorICAgICAgICAgICAgcmFp
c2UgU2NyaXB0RXJyb3IoIkV4Y2VwdGlvbiBmb3IgJXMiICUgYXJncykKKyAgICAgICAgcmV0dXJu
ICJNT0NLIG91dHB1dCBvZiBjaGlsZCBwcm9jZXNzIgorCisgICAgZGVmIHJ1bl9jb21tYW5kKHNl
bGYsCisgICAgICAgICAgICAgICAgICAgIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgIGN3ZD1O
b25lLAorICAgICAgICAgICAgICAgICAgICBpbnB1dD1Ob25lLAorICAgICAgICAgICAgICAgICAg
ICBlcnJvcl9oYW5kbGVyPU5vbmUsCisgICAgICAgICAgICAgICAgICAgIHJldHVybl9leGl0X2Nv
ZGU9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHJldHVybl9zdGRlcnI9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgZGVjb2RlX291dHB1dD1GYWxzZSk6CisgICAgICAgIGlmIHNlbGYuX3No
b3VsZF9sb2c6CisgICAgICAgICAgICBsb2coIk1PQ0sgcnVuX2NvbW1hbmQ6ICVzLCBjd2Q9JXMi
ICUgKGFyZ3MsIGN3ZCkpCisgICAgICAgIGlmIHNlbGYuX3Nob3VsZF90aHJvdzoKKyAgICAgICAg
ICAgIHJhaXNlIFNjcmlwdEVycm9yKCJNT0NLIFNjcmlwdEVycm9yIikKKyAgICAgICAgcmV0dXJu
ICJNT0NLIG91dHB1dCBvZiBjaGlsZCBwcm9jZXNzIgogCiAKIGNsYXNzIE1vY2tFeGVjdXRpdmUy
KG9iamVjdCk6CkBAIC02Niw5ICs5OSw3IEBAIGNsYXNzIE1vY2tFeGVjdXRpdmUyKG9iamVjdCk6
CiAgICAgICAgIGlmIHJldHVybl9leGl0X2NvZGU6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5f
ZXhpdF9jb2RlCiAgICAgICAgIGlmIHNlbGYuX2V4aXRfY29kZSBhbmQgZXJyb3JfaGFuZGxlcjoK
LSAgICAgICAgICAgIHNjcmlwdF9lcnJvciA9IGV4ZWN1dGl2ZS5TY3JpcHRFcnJvcihzY3JpcHRf
YXJncz1hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4aXRfY29kZT1zZWxmLl9leGl0X2NvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0PXNlbGYuX291dHB1dCkKKyAgICAgICAgICAg
IHNjcmlwdF9lcnJvciA9IFNjcmlwdEVycm9yKHNjcmlwdF9hcmdzPWFyZ3MsIGV4aXRfY29kZT1z
ZWxmLl9leGl0X2NvZGUsIG91dHB1dD1zZWxmLl9vdXRwdXQpCiAgICAgICAgICAgICBlcnJvcl9o
YW5kbGVyKHNjcmlwdF9lcnJvcikKICAgICAgICAgaWYgcmV0dXJuX3N0ZGVycjoKICAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9vdXRwdXQgKyBzZWxmLl9zdGRlcnIKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm9fbW9jay5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm9fbW9jay5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41YmQ3NGVkMjljMGRlZTliNWUyYjkxNmI2ZTE4ODgwMjVkNzlmNjNlCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRm
b3JtaW5mb19tb2NrLnB5CkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2NsYXNz
IE1vY2tQbGF0Zm9ybUluZm8ob2JqZWN0KToKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgor
ICAgICAgICByZXR1cm4gIk1vY2tQbGF0Zm9ybSAxLjAiCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlcl9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfbW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmY3OWEwYzRl
NjQ5ZjQzNGRmNzMzNWQ1NGZkZmRmZTdjZDQ3ZDgwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfbW9jay5weQpAQCAtMCwwICsxLDY2
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0
ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCisKKworY2xhc3MgTW9ja1VzZXIob2JqZWN0KToKKworICAg
IEBjbGFzc21ldGhvZAorICAgIGRlZiBwcm9tcHQoY2xzLCBtZXNzYWdlLCByZXBlYXQ9MSwgcmF3
X2lucHV0PXJhd19pbnB1dCk6CisgICAgICAgIHJldHVybiAiTW9jayB1c2VyIHJlc3BvbnNlIgor
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHByb21wdF93aXRoX2xpc3QoY2xzLCBsaXN0X3Rp
dGxlLCBsaXN0X2l0ZW1zLCBjYW5fY2hvb3NlX211bHRpcGxlPUZhbHNlLCByYXdfaW5wdXQ9cmF3
X2lucHV0KToKKyAgICAgICAgcGFzcworCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAg
ICBzZWxmLm9wZW5lZF91cmxzID0gW10KKworICAgIGRlZiBlZGl0KHNlbGYsIGZpbGVzKToKKyAg
ICAgICAgcGFzcworCisgICAgZGVmIGVkaXRfY2hhbmdlbG9nKHNlbGYsIGZpbGVzKToKKyAgICAg
ICAgcGFzcworCisgICAgZGVmIHBhZ2Uoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHBhc3MKKwor
ICAgIGRlZiBjb25maXJtKHNlbGYsIG1lc3NhZ2U9Tm9uZSwgZGVmYXVsdD0neScpOgorICAgICAg
ICBsb2cobWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHQgPT0gJ3knCisKKyAgICBkZWYg
Y2FuX29wZW5fdXJsKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIG9wZW5f
dXJsKHNlbGYsIHVybCk6CisgICAgICAgIHNlbGYub3BlbmVkX3VybHMuYXBwZW5kKHVybCkKKyAg
ICAgICAgaWYgdXJsLnN0YXJ0c3dpdGgoImZpbGU6Ly8iKToKKyAgICAgICAgICAgIGxvZygiTU9D
SzogdXNlci5vcGVuX3VybDogZmlsZTovLy4uLiIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAg
ICAgbG9nKCJNT0NLOiB1c2VyLm9wZW5fdXJsOiAlcyIgJSB1cmwpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlX21vY2sucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlX21vY2sucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDA1Zjg2Y2YzOTViMDIwZGU2NWQxZTdkZWIwYjQ0OGNhYjUyZDgzZgotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2Vf
bW9jay5weQpAQCAtMCwwICsxLDM1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
IyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitjbGFzcyBNb2NrV29y
a3NwYWNlKG9iamVjdCk6CisgICAgZGVmIGZpbmRfdW51c2VkX2ZpbGVuYW1lKHNlbGYsIGRpcmVj
dG9yeSwgbmFtZSwgZXh0ZW5zaW9uLCBzZWFyY2hfbGltaXQ9MTApOgorICAgICAgICByZXR1cm4g
IiVzLyVzLiVzIiAlIChkaXJlY3RvcnksIG5hbWUsIGV4dGVuc2lvbikKKworICAgIGRlZiBjcmVh
dGVfemlwKHNlbGYsIHppcF9wYXRoLCBzb3VyY2VfcGF0aCk6CisgICAgICAgIHJldHVybiBvYmpl
Y3QoKSAgIyBTb21ldGhpbmcgdGhhdCBpcyBub3QgTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV91bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2VfdW5pdHRlc3QucHkKaW5k
ZXggZmRhZTcwZTYwNDU4YTljMjlhNWY4ZDg3MTAzYjBjZmYxY2JiODk3MS4uNjQyYWZiOWM2M2E2
NTE3OGY5YzJkMTBlN2E4ZDM0NjgzNWFhYmEyMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV91bml0dGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlX3VuaXR0ZXN0LnB5CkBAIC0z
MSw3ICszMSw3IEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0ud29ya3NwYWNlIGltcG9ydCBXb3Jrc3BhY2UKLWZyb20gd2Via2l0
cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCiAKIAogY2xhc3Mg
V29ya3NwYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi93YXRjaGxpc3Qvd2F0Y2hsaXN0X21vY2sucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi93YXRjaGxpc3Qvd2F0Y2hsaXN0X21vY2sucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmZkMmY4ODBmZmUxYmJjYjAyOWM3NjViZmFhOGVlNTc2Y2JiNTgyNAotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3dhdGNobGlzdC93YXRjaGxp
c3RfbW9jay5weQpAQCAtMCwwICsxLDM1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCisKKworY2xhc3Mg
TW9ja1dhdGNoTGlzdChvYmplY3QpOgorICAgIGRlZiBkZXRlcm1pbmVfY2NfYW5kX21lc3NhZ2Vz
KHNlbGYsIGRpZmYpOgorICAgICAgICBsb2coIk1vY2tXYXRjaExpc3Q6IGRldGVybWluZV9jY19h
bmRfbWVzc2FnZXMiKQorICAgICAgICByZXR1cm4geydjY19saXN0JzogWydhYmFydGhAd2Via2l0
Lm9yZycsICdlcmljQHdlYmtpdC5vcmcnLCAnbGV2aW5AY2hyb21pdW0ub3JnJ10sICdtZXNzYWdl
cyc6IFsnTWVzc2FnZTEuJywgJ01lc3NhZ2UyLiddLCB9CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdl
cl91bml0dGVzdC5weQppbmRleCBiMzZlYmFjNTJhNjQyZWFjMTFiZGYyNTk2MmUwNmFlYzg4ZTU5
NjE5Li43MGM5MDI2MTE0ZTQxMWFiNTY2MTBjMjAyMzQzNzU2MzI2ZTdmYzE4IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2Vy
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHkKQEAgLTQ2LDcgKzQ2LDkgQEAgZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzLm1hbmFnZXIgaW1wb3J0IE1hbmFnZXIsIG5hdHVyYWxf
c29ydF9rZXksIHRlc3Rfa2V5LCBUZXN0UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24sIFRlc3RTaGFy
ZAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnJlc3VsdF9zdW1tYXJ5IGltcG9y
dCBSZXN1bHRTdW1tYXJ5CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQg
cHJpbnRpbmcKLWZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMs
IE1vY2tVc2VyLCBNb2NrRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1w
b3J0IE1vY2tPcHRpb25zCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21v
Y2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2Vy
X21vY2sgaW1wb3J0IE1vY2tVc2VyCiAKIAogY2xhc3MgTWFuYWdlcldyYXBwZXIoTWFuYWdlcik6
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2VfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2VfdW5pdHRlc3QucHkKaW5kZXggZTU3MDBlM2EyMjZkMGM2OGEyODQzYzNlMjJkZDdkZDYw
ZjU4OWQwYi4uMDkyOGI2ZTZjYWNlZjUyODQ0ZTVlM2VhYWJhZmE4ZWM2NzJlNTUzZCAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFz
ZV91bml0dGVzdC5weQpAQCAtMzcsNyArMzcsMTAgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0Y2FwdHVyZQogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLnBhdGggaW1wb3J0IGFic3BhdGhfdG9fdXJpCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFy
dHkubW9jayBpbXBvcnQgTW9jawotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBN
b2NrT3B0aW9ucywgTW9ja1VzZXIsIE1vY2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkudG9vbC5t
b2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5l
eGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLnVzZXJfbW9jayBpbXBvcnQgTW9ja1VzZXIKKwogCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5wb3J0IGltcG9ydCBQb3J0LCBEcml2ZXIsIERyaXZlck91dHB1dAogCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2VmbF91bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsX3VuaXR0
ZXN0LnB5CmluZGV4IDEzZjczOTQ5YjA5OTdlYWQxODM2OTMwYWM3ZmE5MTIxMzBmZjRkZjQuLjgx
MjkyY2I3MDA3OTlkNDBjYjc0YjE3N2U1YTdkYzk4Y2M4ZjQ3MDMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsX3VuaXR0ZXN0LnB5
CkBAIC0yOSw3ICsyOSw3IEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLnBvcnQuZWZsIGltcG9ydCBFZmxQb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCi1mcm9tIHdlYmtpdHB5LnRvb2wubW9j
a3Rvb2wgaW1wb3J0IE1vY2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5l
eGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQogCiAKIGNsYXNzIEVmbFBvcnRUZXN0
KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQppbmRl
eCAwZjY1MDBjZGRjY2FmNjEwZWZhODYyMTEzZDE1NzIxMDVhMzVhM2VjLi41ZTE1MWFkN2MyNGVj
YmNlMThhMDEzMzlhOGIzOTJkYTQ3Nzc4YzBkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CkBA
IC0zMCw3ICszMCw5IEBAIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQot
ZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucywgTW9ja1VzZXIs
IE1vY2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09w
dGlvbnMKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQg
TW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXJfbW9jayBpbXBv
cnQgTW9ja1VzZXIKIAogaW1wb3J0IGNocm9taXVtX2dwdQogaW1wb3J0IGNocm9taXVtX2xpbnV4
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0
a191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Z3RrX3VuaXR0ZXN0LnB5CmluZGV4IDgyMTc3OWVmMTQ1ZTJmYzQxYjUzNTAxZTJiOThhYTc4ZDQ2
MWVjYmQuLjk1MWM1MzcyZGQ0ZTZhNTg5MmI4NDBhMjlhM2RiYjA5ZDhmYWQ1ZTAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrX3Vu
aXR0ZXN0LnB5CkBAIC0zMSw3ICszMSw3IEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuZ3RrIGltcG9ydCBHdGtQb3J0CiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCi1mcm9tIHdlYmtpdHB5
LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQogCiAKIGNsYXNzIEd0
a1BvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9sb2NrX3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX2xvY2tfdW5p
dHRlc3QucHkKaW5kZXggNjQ4ZjhhNmNkNGFmMWZmZWNiN2ViMDQ0YTAzMTJiNmQzNGZkYTdjZS4u
YmZmNWE2NmQ4Njk1ZDJmOWRhNDZiYjYxNDIyMDRhMTA4MDUxY2FlOCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX2xvY2tfdW5pdHRlc3Qu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX2xv
Y2tfdW5pdHRlc3QucHkKQEAgLTI5LDcgKzI5LDcgQEAgaW1wb3J0IG9zICAjIFVzZWQgZm9yIG9z
LmdldHBpZCgpCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkudG9v
bC5tb2NrdG9vbCBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCiAKIAogIyBGSVhNRTogVGhl
c2UgdGVzdHMgYWxsIHRvdWNoIHRoZSByZWFsIGRpc2ssIGJ1dCBjb3VsZCBiZSB3cml0dGVuIHRv
IGEgTW9ja0ZpbGVTeXN0ZW0gaW5zdGVhZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbGVha2RldGVjdG9yX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9sZWFrZGV0ZWN0b3JfdW5pdHRlc3Qu
cHkKaW5kZXggNjljNjkzOWRkYzQ4MWZmNDUyZGU0MGQzMjdmZTE5MzVmZDAxMmVhMC4uOGI0Y2U4
MGFhMGEzZjdhMmFiYTc0MzMzZTY4MTg3MDBiMDIyNzI5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9sZWFrZGV0ZWN0b3JfdW5pdHRlc3QucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9sZWFrZGV0ZWN0
b3JfdW5pdHRlc3QucHkKQEAgLTMxLDcgKzMxLDcgQEAgaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmxlYWtkZXRlY3RvciBpbXBvcnQgTGVha0RldGVjdG9y
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2Nr
RmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1w
b3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9j
a0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGlt
cG9ydCBNb2NrRXhlY3V0aXZlCiAKIAogY2xhc3MgTGVha0RldGVjdG9yVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L21hY191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CmluZGV4IGM2NWYyOGUwMzRhY2U5MWNjOGNjMmVjZGM4
YTY4OWRkZDIxOWI1NDYuLjk0NzE0NjIwY2YzNzQyYjAwMjczNTNjNDI2NTJlMDcwYjNhZTZmYWMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFj
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvbWFjX3VuaXR0ZXN0LnB5CkBAIC0zMCw3ICszMCw5IEBAIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLnBvcnQubWFjIGltcG9ydCBNYWNQb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0
cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMsIE1vY2tVc2VyLCBNb2NrRXhlY3V0
aXZlCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRp
dmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2VyX21vY2sgaW1wb3J0IE1vY2tVc2Vy
CiAKIAogY2xhc3MgTWFjVGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNh
c2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVz
dGNhc2UucHkKaW5kZXggMGI3OTUzM2MzOWM1ZTUxZGMxNTEzZWUyYThhODM0NmE0Y2UwNGEzMi4u
NzlmNzZhMTk2M2NjY2JmYzY4NmNlMWUwMDA3ZDVlMDQ5YzQ0OWJkMCAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2Fz
ZS5weQpAQCAtNDQsNyArNDQsOSBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCBodHRwX3NlcnZlcl9iYXNlCiAKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVt
Ci1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVXNl
ciwgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2Nr
T3B0aW9ucworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9y
dCBNb2NrRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlcl9tb2NrIGlt
cG9ydCBNb2NrVXNlcgogbW9ja19vcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0n
UmVsZWFzZScpCiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9xdF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHkKaW5kZXggNTI4YzIzMGZjYjNjM2U2OTcwYTk4OTM3
ODAyMGE1YmQ4OWMzMTM4Zi4uNjk3ZmI0MzQ3MjhhZjBjMGE2MGU1MmVmYWExMjllNTFiMGEwZTQx
NiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9x
dF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3F0X3VuaXR0ZXN0LnB5CkBAIC0zMyw3ICszMyw5IEBAIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5xdCBpbXBvcnQgUXRQb3J0CiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCi1mcm9tIHdlYmtpdHB5
LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVXNlciwgTW9ja0V4ZWN1dGl2
ZQorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucworZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZl
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlcl9tb2NrIGltcG9ydCBNb2NrVXNlcgog
CiAKIGNsYXNzIFF0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4IGU1
MDE1ZmEwYTU2ZTg0OWQ0YWJlNWQ1MmZhM2FjOThkMzExY2QyZmUuLjJkMWI0NTIyMGFmYjk0YTIw
NGI1ZDA2NGFjMzM5NWQwNzMxYjQwNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTM2LDcgKzM2LDcgQEAgaW1wb3J0IHRpbWUK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBQb3J0LCBEcml2ZXIsIERyaXZlck91
dHB1dAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlv
biBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KLWZyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9j
a3Rvb2wKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2VyX21vY2sgaW1wb3J0IE1vY2tV
c2VyCiAKIAogIyBUaGlzIHNldHMgYmFzaWMgZXhwZWN0YXRpb25zIGZvciBhIHRlc3QuIEVhY2gg
aW5kaXZpZHVhbCBleHBlY3RhdGlvbgpAQCAtMjczLDcgKzI3Myw4IEBAIGNsYXNzIFRlc3RQb3J0
KFBvcnQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X25hbWU9Tm9uZSwgdXNlcj1Ob25l
LCBmaWxlc3lzdGVtPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgaWYgbm90IHBvcnRfbmFtZSBv
ciBwb3J0X25hbWUgPT0gJ3Rlc3QnOgogICAgICAgICAgICAgcG9ydF9uYW1lID0gJ3Rlc3QtbWFj
LWxlb3BhcmQnCi0gICAgICAgIHVzZXIgPSB1c2VyIG9yIG1vY2t0b29sLk1vY2tVc2VyKCkKKyAg
ICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIGEgTW9ja0V4ZWN1dGl2ZSB0b28uCisgICAg
ICAgIHVzZXIgPSB1c2VyIG9yIE1vY2tVc2VyKCkKICAgICAgICAgZmlsZXN5c3RlbSA9IGZpbGVz
eXN0ZW0gb3IgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQogICAgICAgICBQb3J0Ll9faW5pdF9fKHNl
bGYsIHBvcnRfbmFtZT1wb3J0X25hbWUsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSwgdXNlcj11c2Vy
LCAqKmt3YXJncykKICAgICAgICAgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkgPSBOb25lCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vi
a2l0X3VuaXR0ZXN0LnB5CmluZGV4IGIxYjk4NGY2ODJmMmQ1NTg4ZjExMjM4MDNlMzhiMzNhNTgy
OGEwMDEuLmFlMDVjNWUwZGY2YTBhMmU3NDQ5ODU0NDM5NWI0NzkzNTdiNDg0NTUgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vi
a2l0X3VuaXR0ZXN0LnB5CkBAIC0zNCw3ICszNCwxMCBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktpdFBvcnQs
IFdlYktpdERyaXZlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9y
dF90ZXN0Y2FzZQogCi1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tFeGVj
dXRpdmUsIE1vY2tPcHRpb25zLCBNb2NrVXNlcgorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29s
IGltcG9ydCBNb2NrT3B0aW9ucworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2
ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
dXNlcl9tb2NrIGltcG9ydCBNb2NrVXNlcgorCiAKIAogY2xhc3MgVGVzdFdlYktpdFBvcnQoV2Vi
S2l0UG9ydCk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dpbl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvd2luX3VuaXR0ZXN0LnB5CmluZGV4IGUzMDVkYmMwOWMxNjAzZWQ2ODNmYzBhMDdh
ZmY2N2Y0OTljOWZkODguLjcyMDY1NzE2ODQ0Zjk0NjhhZTRjZDQ3NWY2ZGQzMzdjOTJhODg3NTAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2lu
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvd2luX3VuaXR0ZXN0LnB5CkBAIC0zMSwxMiArMzEsMTMgQEAgaW1wb3J0IHN5cwogaW1wb3J0
IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0
IFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sg
aW1wb3J0IE1vY2tFeGVjdXRpdmUyCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUsIE1vY2tFeGVjdXRpdmUyCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQor
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXJfbW9jayBpbXBvcnQgTW9ja1VzZXIKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0
dXJlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNl
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndpbiBpbXBvcnQgV2luUG9ydAotZnJv
bSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucywgTW9ja1VzZXIsIE1v
Y2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlv
bnMKIAogCiBjbGFzcyBXaW5Qb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CmluZGV4IDgwYTkzNzQx
ODM2ZWFkNjU1MjY0MTY2NjY3OTdmYWI5ZmU3ZTBlYzAuLjQ3ZGFiOWE0MmVkY2MwMDk0OTY3NWU2
NTg4ODM2N2UzMmNjOTBiODcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRp
b250ZXN0LnB5CkBAIC02Miw3ICs2Miw4IEBAIFNIT1VMRF9URVNUX1BST0NFU1NFUyA9IG11bHRp
cHJvY2Vzc2luZyBhbmQgc3lzLnBsYXRmb3JtIG5vdCBpbiAoJ2N5Z3dpbicsICd3aW4zCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgYXJyYXlfc3RyZWFtCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0gaW1wb3J0IG91dHB1dGNhcHR1cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCi1mcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0
b29sCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlcl9tb2NrIGltcG9ydCBNb2NrVXNl
cgorCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQudGVzdCBpbXBvcnQgVGVzdFBvcnQsIFRlc3REcml2ZXIsIHVuaXRfdGVz
dF9maWxlc3lzdGVtCkBAIC0xMDEsNyArMTAyLDcgQEAgZGVmIHBhcnNlX2FyZ3MoZXh0cmFfYXJn
cz1Ob25lLCByZWNvcmRfcmVzdWx0cz1GYWxzZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UsIG5ld18K
IGRlZiBwYXNzaW5nX3J1bihleHRyYV9hcmdzPU5vbmUsIHBvcnRfb2JqPU5vbmUsIHJlY29yZF9y
ZXN1bHRzPUZhbHNlLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmlsZXN5c3RlbT1Ob25lKToKICAg
ICBvcHRpb25zLCBwYXJzZWRfYXJncyA9IHBhcnNlX2FyZ3MoZXh0cmFfYXJncywgcmVjb3JkX3Jl
c3VsdHMsIHRlc3RzX2luY2x1ZGVkKQogICAgIGlmIG5vdCBwb3J0X29iajoKLSAgICAgICAgcG9y
dF9vYmogPSBwb3J0LmdldChwb3J0X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRp
b25zLCB1c2VyPW1vY2t0b29sLk1vY2tVc2VyKCksIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKKyAg
ICAgICAgcG9ydF9vYmogPSBwb3J0LmdldChwb3J0X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0
aW9ucz1vcHRpb25zLCB1c2VyPU1vY2tVc2VyKCksIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKICAg
ICBidWlsZGJvdF9vdXRwdXQgPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQogICAgIHJlZ3Vs
YXJfb3V0cHV0ID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKICAgICByZXMgPSBydW5fd2Vi
a2l0X3Rlc3RzLnJ1bihwb3J0X29iaiwgb3B0aW9ucywgcGFyc2VkX2FyZ3MsIGJ1aWxkYm90X291
dHB1dD1idWlsZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0PXJlZ3VsYXJfb3V0cHV0KQpAQCAt
MTEzLDcgKzExNCw3IEBAIGRlZiBsb2dnaW5nX3J1bihleHRyYV9hcmdzPU5vbmUsIHBvcnRfb2Jq
PU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNlLCB0ZXN0c19pbmNsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlY29yZF9yZXN1bHRzPXJlY29yZF9yZXN1bHRzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD10ZXN0c19p
bmNsdWRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfbm90
aGluZz1GYWxzZSwgbmV3X3Jlc3VsdHM9bmV3X3Jlc3VsdHMpCi0gICAgdXNlciA9IG1vY2t0b29s
Lk1vY2tVc2VyKCkKKyAgICB1c2VyID0gTW9ja1VzZXIoKQogICAgIGlmIG5vdCBwb3J0X29iajoK
ICAgICAgICAgcG9ydF9vYmogPSBwb3J0LmdldChwb3J0X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwg
b3B0aW9ucz1vcHRpb25zLCB1c2VyPXVzZXIsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKIApAQCAt
MTQ0LDcgKzE0NSw3IEBAIGRlZiBnZXRfdGVzdHNfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgdGVzdHNf
aW5jbHVkZWQ9RmFsc2UsIGZsYXR0ZW5fYmF0Y2hlcz1GYWxzZSwKICAgICAgICAgZXh0cmFfYXJn
cyA9IFsncGFzc2VzJywgJ2ZhaWx1cmVzJ10gKyBleHRyYV9hcmdzCiAgICAgb3B0aW9ucywgcGFy
c2VkX2FyZ3MgPSBwYXJzZV9hcmdzKGV4dHJhX2FyZ3MsIHRlc3RzX2luY2x1ZGVkPVRydWUpCiAK
LSAgICB1c2VyID0gbW9ja3Rvb2wuTW9ja1VzZXIoKQorICAgIHVzZXIgPSBNb2NrVXNlcigpCiAK
ICAgICB0ZXN0X2JhdGNoZXMgPSBbXQogCkBAIC0yOTAsNyArMjkxLDcgQEAgY2xhc3MgTWFpblRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfbGludF90ZXN0X2ZpbGVzX19l
cnJvcnMoc2VsZik6CiAgICAgICAgIG9wdGlvbnMsIHBhcnNlZF9hcmdzID0gcGFyc2VfYXJncyhb
Jy0tbGludC10ZXN0LWZpbGVzJ10pCi0gICAgICAgIHVzZXIgPSBtb2NrdG9vbC5Nb2NrVXNlcigp
CisgICAgICAgIHVzZXIgPSBNb2NrVXNlcigpCiAgICAgICAgIHBvcnRfb2JqID0gcG9ydC5nZXQo
b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zLCB1c2VyPXVzZXIpCiAgICAgICAgIHBv
cnRfb2JqLnRlc3RfZXhwZWN0YXRpb25zID0gbGFtYmRhOiAiIyBzeW50YXggZXJyb3IiCiAgICAg
ICAgIHJlcywgb3V0LCBlcnIgPSBydW5fYW5kX2NhcHR1cmUocG9ydF9vYmosIG9wdGlvbnMsIHBh
cnNlZF9hcmdzKQpAQCAtNDU1LDcgKzQ1Niw3IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgICAgICAgICByZXR1cm4gdW5leHBlY3RlZF9yZXN1bHRzWydudW1f
cmVncmVzc2lvbnMnXSArIHVuZXhwZWN0ZWRfcmVzdWx0c1snbnVtX21pc3NpbmcnXQogCiAgICAg
ICAgIG9wdGlvbnMsIHBhcnNlZF9hcmdzID0gcnVuX3dlYmtpdF90ZXN0cy5wYXJzZV9hcmdzKFsn
LS1waXhlbC10ZXN0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnXSkKLSAgICAgICAgdGVzdF9w
b3J0ID0gQ3VzdG9tRXhpdENvZGVQb3J0KG9wdGlvbnM9b3B0aW9ucywgdXNlcj1tb2NrdG9vbC5N
b2NrVXNlcigpKQorICAgICAgICB0ZXN0X3BvcnQgPSBDdXN0b21FeGl0Q29kZVBvcnQob3B0aW9u
cz1vcHRpb25zLCB1c2VyPU1vY2tVc2VyKCkpCiAgICAgICAgIHJlcywgb3V0LCBlcnIsIF8gPSBs
b2dnaW5nX3J1bihbJy0tbm8tc2hvdy1yZXN1bHRzJywKICAgICAgICAgICAgICdmYWlsdXJlcy9l
eHBlY3RlZC9taXNzaW5nX2ltYWdlLmh0bWwnLAogICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhw
ZWN0ZWQvbWlzc2luZ190ZXh0Lmh0bWwnLApAQCAtNjI3LDcgKzYyOCw3IEBAIGNsYXNzIE1haW5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICAgICBkZWYgZ2V0X3BvcnRfZm9yX3J1bihh
cmdzKToKICAgICAgICAgICAgIG9wdGlvbnMsIHBhcnNlZF9hcmdzID0gcnVuX3dlYmtpdF90ZXN0
cy5wYXJzZV9hcmdzKGFyZ3MpCi0gICAgICAgICAgICB0ZXN0X3BvcnQgPSBJbWFnZURpZmZUZXN0
UG9ydChvcHRpb25zPW9wdGlvbnMsIHVzZXI9bW9ja3Rvb2wuTW9ja1VzZXIoKSkKKyAgICAgICAg
ICAgIHRlc3RfcG9ydCA9IEltYWdlRGlmZlRlc3RQb3J0KG9wdGlvbnM9b3B0aW9ucywgdXNlcj1N
b2NrVXNlcigpKQogICAgICAgICAgICAgcmVzID0gcGFzc2luZ19ydW4oYXJncywgcG9ydF9vYmo9
dGVzdF9wb3J0LCB0ZXN0c19pbmNsdWRlZD1UcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHJlcykKICAgICAgICAgICAgIHJldHVybiB0ZXN0X3BvcnQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRf
dGVzdHNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3Jl
YmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IGQyNWE5M2Zh
OTAyYmMzYzcyYjM1YzdlMmRhMGI5MDc1OGZjNWRhMTUuLjkxNWUyYWQ4YTY2NzhmZTVlNjdhZDgz
NjBjNGY0ZDkxYzczMDJkZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9f
YmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVt
X3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpAQCAtMzEsMTMgKzMxLDE2IEBACiAKIGltcG9ydCB1
bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCitmcm9tIHdlYmtp
dHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0gaW1wb3J0IHVybGZldGNoZXJfbW9jawogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtIGltcG9ydCBmaWxlc3lzdGVtX21vY2sKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBp
bXBvcnQgemlwZmlsZXNldF9tb2NrCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0
IG91dHB1dGNhcHR1cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1w
b3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIAorZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tv
dXQuc2NtLnNjbV9tb2NrIGltcG9ydCBNb2NrU0NNCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0udXNlcl9tb2NrIGltcG9ydCBNb2NrVXNlcgorCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cyBpbXBvcnQgcG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0IGltcG9y
dCB1bml0X3Rlc3RfZmlsZXN5c3RlbQogZnJvbSB3ZWJraXRweS50b19iZV9tb3ZlZCBpbXBvcnQg
cmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMKQEAgLTYxLDcgKzY0LDcgQEAgQVJDSElW
RV9VUkwgPSAnaHR0cDovL2xvY2FsaG9zdC9sYXlvdXRfdGVzdF9yZXN1bHRzJwogCiAKIGRlZiB0
ZXN0X29wdGlvbnMoKToKLSAgICByZXR1cm4gbW9ja3Rvb2wuTW9ja09wdGlvbnMoY29uZmlndXJh
dGlvbj1Ob25lLAorICAgIHJldHVybiBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPU5vbmUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2t1cD1GYWxzZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaHRtbF9kaXJlY3Rvcnk9Jy90bXAnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcmNoaXZlX3VybD1BUkNISVZFX1VSTCwKQEAgLTczLDcgKzc2
LDcgQEAgZGVmIHRlc3Rfb3B0aW9ucygpOgogCiBkZWYgdGVzdF9ob3N0X3BvcnRfYW5kX2ZpbGVz
eXN0ZW0ob3B0aW9ucywgZXhwZWN0YXRpb25zKToKICAgICBmaWxlc3lzdGVtID0gdW5pdF90ZXN0
X2ZpbGVzeXN0ZW0oKQotICAgIGhvc3RfcG9ydF9vYmogPSBwb3J0LmdldCgndGVzdCcsIG9wdGlv
bnMsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSwgdXNlcj1tb2NrdG9vbC5Nb2NrVXNlcigpKQorICAg
IGhvc3RfcG9ydF9vYmogPSBwb3J0LmdldCgndGVzdCcsIG9wdGlvbnMsIGZpbGVzeXN0ZW09Zmls
ZXN5c3RlbSwgdXNlcj1Nb2NrVXNlcigpKQogCiAgICAgZXhwZWN0YXRpb25zX3BhdGggPSBob3N0
X3BvcnRfb2JqLnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpCiAgICAgZmlsZXN5c3Rl
bS53cml0ZV90ZXh0X2ZpbGUoZXhwZWN0YXRpb25zX3BhdGgsIGV4cGVjdGF0aW9ucykKQEAgLTE2
Miw3ICsxNjUsNyBAQCBjbGFzcyBUZXN0R2V0SG9zdFBvcnRPYmplY3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICAjIHRoYXQgSW1hZ2UgZGlmZiBpcyAob3IgaXNuJ3QpIHByZXNlbnQgaW4g
dGhlIHR3byBjb25maWdzLgogICAgICAgICBwb3J0LmdldCA9IGdldF9tb2NrX2dldCh7J1JlbGVh
c2UnOiByZWxlYXNlX3ByZXNlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
RGVidWcnOiBkZWJ1Z19wcmVzZW50fSkKLSAgICAgICAgb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tP
cHRpb25zKGNvbmZpZ3VyYXRpb249Tm9uZSwKKyAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25z
KGNvbmZpZ3VyYXRpb249Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGh0bWxfZGlyZWN0b3J5PScvdG1wJykKICAgICAgICAgcG9ydF9vYmogPSByZWJhc2VsaW5l
X2Nocm9taXVtX3dlYmtpdF90ZXN0cy5nZXRfaG9zdF9wb3J0X29iamVjdChvcHRpb25zKQogICAg
ICAgICBpZiB2YWxpZF9wb3J0X29iajoKQEAgLTIxOCw3ICsyMjEsNyBAQCBjbGFzcyBUZXN0UmVi
YXNlbGluZXIodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAgIHVybF9mZXRjaGVyID0gdGVz
dF91cmxfZmV0Y2hlcihmaWxlc3lzdGVtKQogICAgICAgICB6aXBfZmFjdG9yeSA9IHRlc3Rfemlw
X2ZhY3RvcnkoKQotICAgICAgICBtb2NrX3NjbSA9IG1vY2t0b29sLk1vY2tTQ00oZmlsZXN5c3Rl
bSkKKyAgICAgICAgbW9ja19zY20gPSBNb2NrU0NNKGZpbGVzeXN0ZW0pCiAgICAgICAgIGZpbGVz
eXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkobW9ja19zY20uY2hlY2tvdXRfcm9vdCkKIAogICAg
ICAgICAjIEZJWE1FOiBTQ00gbW9kdWxlIGRvZXNuJ3QgaGFuZGxlIHBhdGhzIHRoYXQgYXJlbid0
IHJlbGF0aXZlIHRvIHRoZSBjaGVja291dF9yb290IGNvbnNpc3RlbnRseS4KQEAgLTM1Niw3ICsz
NTksNyBAQCBjbGFzcyBUZXN0UmVhbE1haW4odW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBo
b3N0X3BvcnRfb2JqLCBmaWxlc3lzdGVtID0gdGVzdF9ob3N0X3BvcnRfYW5kX2ZpbGVzeXN0ZW0o
b3B0aW9ucywgZXhwZWN0YXRpb25zKQogICAgICAgICB1cmxfZmV0Y2hlciA9IHRlc3RfdXJsX2Zl
dGNoZXIoZmlsZXN5c3RlbSkKICAgICAgICAgemlwX2ZhY3RvcnkgPSB0ZXN0X3ppcF9mYWN0b3J5
KCkKLSAgICAgICAgbW9ja19zY20gPSBtb2NrdG9vbC5Nb2NrU0NNKCkKKyAgICAgICAgbW9ja19z
Y20gPSBNb2NrU0NNKCkKICAgICAgICAgZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeSht
b2NrX3NjbS5jaGVja291dF9yb290KQogCiAgICAgICAgICMgRklYTUU6IFNDTSBtb2R1bGUgZG9l
c24ndCBoYW5kbGUgcGF0aHMgdGhhdCBhcmVuJ3QgcmVsYXRpdmUgdG8gdGhlIGNoZWNrb3V0X3Jv
b3QgY29uc2lzdGVudGx5LgpAQCAtMzgzLDcgKzM4Niw3IEBAIGNsYXNzIFRlc3RSZWFsTWFpbih1
bml0dGVzdC5UZXN0Q2FzZSk6CiAKIGNsYXNzIFRlc3RIdG1sR2VuZXJhdG9yKHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICBkZWYgbWFrZV9nZW5lcmF0b3Ioc2VsZiwgZmlsZXMsIHRlc3RzKToKLSAg
ICAgICAgb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249Tm9uZSwg
aHRtbF9kaXJlY3Rvcnk9Jy90bXAnKQorICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29u
ZmlndXJhdGlvbj1Ob25lLCBodG1sX2RpcmVjdG9yeT0nL3RtcCcpCiAgICAgICAgIGhvc3RfcG9y
dCA9IHBvcnQuZ2V0KCd0ZXN0Jywgb3B0aW9ucywgZmlsZXN5c3RlbT11bml0X3Rlc3RfZmlsZXN5
c3RlbShmaWxlcykpCiAgICAgICAgIGdlbmVyYXRvciA9IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Vi
a2l0X3Rlc3RzLkh0bWxHZW5lcmF0b3IoaG9zdF9wb3J0LAogICAgICAgICAgICAgdGFyZ2V0X3Bv
cnQ9Tm9uZSwgb3B0aW9ucz1vcHRpb25zLCBwbGF0Zm9ybXM9Wyd0ZXN0LW1hYy1sZW9wYXJkJ10s
IHJlYmFzZWxpbmluZ190ZXN0cz10ZXN0cykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvYm90aW5mb191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvYm90aW5mb191bml0dGVzdC5weQppbmRleCAwNTRhY2ZjMTFhNDZjMGJiNmJk
NTg1N2QwMTI2ODI3Yzc2YTM5YmFhLi44MjBmZjU1OWVmMDkxMTBhN2RkYmYxNjY1NmEzM2M5NDlk
NmI3OGZkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2JvdGlu
Zm9fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9ib3Rp
bmZvX3VuaXR0ZXN0LnB5CkBAIC0yOSw3ICsyOSw4IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJv
bSB3ZWJraXRweS50b29sLmJvdC5ib3RpbmZvIGltcG9ydCBCb3RJbmZvCi1mcm9tIHdlYmtpdHB5
LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sLCBNb2NrU3RhdHVzU2VydmVyCitmcm9tIHdl
YmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sCitmcm9tIHdlYmtpdHB5LmNvbW1v
bi5uZXQuc3RhdHVzc2VydmVyX21vY2sgaW1wb3J0IE1vY2tTdGF0dXNTZXJ2ZXIKIAogCiBjbGFz
cyBCb3RJbmZvVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVyX3VuaXR0ZXN0LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9mbGFreXRlc3RyZXBvcnRlcl91bml0dGVzdC5w
eQppbmRleCA4MWEwZjkwYzg2N2Y3YTg2ZGY4ZmQ1NzBlNWY3Njg3Y2UwOWVmNTMwLi45NjFiODNk
ZmVhMGViMmYyY2Q0NzI4M2ZkYjdhMzI4ZTQyNTFlYzk5IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVyX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXJfdW5pdHRl
c3QucHkKQEAgLTM1LDcgKzM1LDggQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxz
IGltcG9ydCB0ZXN0X3Jlc3VsdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBp
bXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0
IE1vY2sKIGZyb20gd2Via2l0cHkudG9vbC5ib3QuZmxha3l0ZXN0cmVwb3J0ZXIgaW1wb3J0IEZs
YWt5VGVzdFJlcG9ydGVyCi1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tU
b29sLCBNb2NrU3RhdHVzU2VydmVyCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0
IE1vY2tUb29sCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuc3RhdHVzc2VydmVyX21vY2sgaW1w
b3J0IE1vY2tTdGF0dXNTZXJ2ZXIKIAogCiAjIENyZWF0aW5nIGZha2UgQ29tbWl0SW5mb3MgaXMg
YSBwYWluLCBzbyB3ZSB1c2UgYSBtb2NrIG9uZSBoZXJlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZF91bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmRfdW5pdHRlc3QucHkKaW5kZXggYzI0
M2ZjZDM0ZDIwNTdmMjNhN2Q4MWY3OWJlYjgxMDIyZmQxY2QwZS4uNGNhNzA2NjE5YjgyYWZiOWNl
OTExZmIxNWJiMzJlMjU1MzI2NjIyOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9pcmNfY29tbWFuZF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvYm90L2lyY19jb21tYW5kX3VuaXR0ZXN0LnB5CkBAIC0zMCw3ICszMCw4IEBA
IGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2Fw
dHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50b29sLmJvdC5pcmNfY29t
bWFuZCBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrVG9v
bCwgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2Nr
VG9vbAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBN
b2NrRXhlY3V0aXZlCiAKIAogY2xhc3MgSVJDQ29tbWFuZFRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25s
b2FkX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rv
d25sb2FkX3VuaXR0ZXN0LnB5CmluZGV4IGI5NGRhNjBlYjFhOTM2ZGMxZWJjMDJmMzViN2U2ZWJl
MzQ5MmMxZGMuLjI0ZTY5ODFlYzZkNDMzODNkZTQ2MTAyNzNmMjZmN2JjOGQ3M2I0YWMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZF91bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxv
YWRfdW5pdHRlc3QucHkKQEAgLTMyLDcgKzMyLDggQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkudGhp
cmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuY29t
bWFuZHRlc3QgaW1wb3J0IENvbW1hbmRzVGVzdAogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRz
LmRvd25sb2FkIGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1v
Y2tDaGVja291dCwgTW9ja09wdGlvbnMsIE1vY2tUb29sCitmcm9tIHdlYmtpdHB5LnRvb2wubW9j
a3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVG9vbAorZnJvbSB3ZWJraXRweS5jb21tb24u
Y2hlY2tvdXQuY2hlY2tvdXRfbW9jayBpbXBvcnQgTW9ja0NoZWNrb3V0CiAKIAogY2xhc3MgQWJz
dHJhY3RSb2xsb3V0UHJlcENvbW1hbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0
ZW1fdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFy
bHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5CmluZGV4IGM1MWE2YWRhNTA2OWRjMTU4YWM5YWRk
NDg4OThlMmUwYThhYjZlOGQuLjQ0MTQzZjcyZDNlMTczZTE0OTc3MzQzNTc1ZTYwZTFiYTM4YTFh
N2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJs
eXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbV91bml0dGVzdC5weQpAQCAtMzMsNyArMzMs
NyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0
cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50b29sLmJvdC5xdWV1ZWVuZ2luZSBpbXBvcnQgUXVl
dWVFbmdpbmUKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5lYXJseXdhcm5pbmdzeXN0ZW0g
aW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5xdWV1ZXN0ZXN0IGltcG9ydCBR
dWV1ZXNUZXN0Ci1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sLCBN
b2NrT3B0aW9ucywgTW9ja1BvcnQKK2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQg
TW9ja1Rvb2wsIE1vY2tPcHRpb25zCiAKIAogY2xhc3MgQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0
ZW1UZXN0KFF1ZXVlc1Rlc3QpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3F1ZXJpZXMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcXVlcmllcy5weQppbmRleCA3ZjdlMjI3YTVhYThkYWM4MWQwNWMzOGM2YjlkZjExZTk1
ODYwOTlkLi41OGMxZjMxZDcwMTQ1YWE3ZmU5YmQyZDEzODljN2I2MzM5Mzk4YmM1IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllcy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllcy5weQpAQCAtNDQs
NiArNDQsNyBAQCBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQWJz
dHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXBy
ZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxvZwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1w
b3J0IHBvcnQKIAorCiBjbGFzcyBTdWdnZXN0UmV2aWV3ZXJzKEFic3RyYWN0RGVjbGFyYXRpdmVD
b21tYW5kKToKICAgICBuYW1lID0gInN1Z2dlc3QtcmV2aWV3ZXJzIgogICAgIGhlbHBfdGV4dCA9
ICJTdWdnZXN0IHJldmlld2VycyBmb3IgYSBwYXRjaCBiYXNlZCBvbiByZWNlbnQgY2hhbmdlcyB0
byB0aGUgbW9kaWZpZWQgZmlsZXMuIgpAQCAtMzg3LDcgKzM4OCw4IEBAIG91dCB3aGF0IHBvcnRz
IGFyZSBza2lwcGluZyB0aGUgdGVzdChzKS4gQ2F0ZWdvcmllcyBhcmUgdGFrZW4gaW4gYWNjb3Vu
dCB0b28uIiIiCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToK
ICAgICAgICAgcmVzdWx0cyA9IGRpY3QoWyh0ZXN0X25hbWUsIFtdKSBmb3IgdGVzdF9uYW1lIGlu
IGFyZ3NdKQotICAgICAgICBmb3IgcG9ydF9uYW1lLCBwb3J0X29iamVjdCBpbiB0b29sLnBvcnRf
ZmFjdG9yeS5nZXRfYWxsKCkuaXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBwb3J0X25hbWUgaW4g
dG9vbC5wb3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFtZXMoKToKKyAgICAgICAgICAgIHBvcnRfb2Jq
ZWN0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZSkKICAgICAgICAgICAgIGZvciB0
ZXN0X25hbWUgaW4gYXJnczoKICAgICAgICAgICAgICAgICBpZiBwb3J0X29iamVjdC5za2lwc19s
YXlvdXRfdGVzdCh0ZXN0X25hbWUpOgogICAgICAgICAgICAgICAgICAgICByZXN1bHRzW3Rlc3Rf
bmFtZV0uYXBwZW5kKHBvcnRfbmFtZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXNfdW5pdHRlc3QucHkKaW5kZXggNTJlMjE0OTMzMGE3
ZGQwMzg0NDRiYTVlZjg5YzYyNzAxMjQwNGY5NS4uZmUxM2E0YzU0ODA5NDNlMWE0Y2UzYzk4NTUy
NDExNDZhMWI0ZTU3NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3F1ZXJpZXNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3F1ZXJpZXNfdW5pdHRlc3QucHkKQEAgLTM1LDYgKzM1LDMwIEBAIGZyb20g
d2Via2l0cHkudG9vbC5jb21tYW5kcy5xdWVyaWVzIGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRv
b2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sCiAKIAorY2xhc3MgTW9ja1Rlc3RQb3J0MShvYmpl
Y3QpOgorICAgIGRlZiBza2lwc19sYXlvdXRfdGVzdChzZWxmLCB0ZXN0X25hbWUpOgorICAgICAg
ICByZXR1cm4gdGVzdF9uYW1lIGluIFsibWVkaWEvZm9vL2Jhci5odG1sIiwgImZvbyJdCisKKwor
Y2xhc3MgTW9ja1Rlc3RQb3J0MihvYmplY3QpOgorICAgIGRlZiBza2lwc19sYXlvdXRfdGVzdChz
ZWxmLCB0ZXN0X25hbWUpOgorICAgICAgICByZXR1cm4gdGVzdF9uYW1lID09ICJtZWRpYS9mb28v
YmFyLmh0bWwiCisKKworY2xhc3MgTW9ja1BvcnRGYWN0b3J5KG9iamVjdCk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9hbGxfcG9ydHMgPSB7CisgICAgICAgICAgICAi
dGVzdF9wb3J0MSI6IE1vY2tUZXN0UG9ydDEoKSwKKyAgICAgICAgICAgICJ0ZXN0X3BvcnQyIjog
TW9ja1Rlc3RQb3J0MigpLAorICAgICAgICB9CisKKyAgICBkZWYgYWxsX3BvcnRfbmFtZXMoc2Vs
Ziwgb3B0aW9ucz1Ob25lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FsbF9wb3J0cy5rZXlzKCkK
KworICAgIGRlZiBnZXQoc2VsZiwgcG9ydF9uYW1lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Fs
bF9wb3J0cy5nZXQocG9ydF9uYW1lKQorCisKIGNsYXNzIFF1ZXJ5Q29tbWFuZHNUZXN0KENvbW1h
bmRzVGVzdCk6CiAgICAgZGVmIHRlc3RfYnVnc190b19jb21taXQoc2VsZik6CiAgICAgICAgIGV4
cGVjdGVkX3N0ZGVyciA9ICJXYXJuaW5nLCBhdHRhY2htZW50IDEwMDAxIG9uIGJ1ZyA1MDAwMCBo
YXMgaW52YWxpZCBjb21taXR0ZXIgKG5vbi1jb21taXR0ZXJAZXhhbXBsZS5jb20pXG4iCkBAIC02
NiwxNCArOTAsMTcgQEAgY2xhc3MgUXVlcnlDb21tYW5kc1Rlc3QoQ29tbWFuZHNUZXN0KToKICAg
ICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKFRyZWVTdGF0dXMoKSwgTm9uZSwgZXhw
ZWN0ZWRfc3Rkb3V0KQogCiAgICAgZGVmIHRlc3Rfc2tpcHBlZF9wb3J0cyhzZWxmKToKKyAgICAg
ICAgdG9vbCA9IE1vY2tUb29sKCkKKyAgICAgICAgdG9vbC5wb3J0X2ZhY3RvcnkgPSBNb2NrUG9y
dEZhY3RvcnkoKQorCiAgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJQb3J0cyBza2lwcGluZyB0
ZXN0ICdtZWRpYS9mb28vYmFyLmh0bWwnOiB0ZXN0X3BvcnQxLCB0ZXN0X3BvcnQyXG4iCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhTa2lwcGVkUG9ydHMoKSwgKCJtZWRpYS9m
b28vYmFyLmh0bWwiLCksIGV4cGVjdGVkX3N0ZG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhl
Y3V0ZV9vdXRwdXRzKFNraXBwZWRQb3J0cygpLCAoIm1lZGlhL2Zvby9iYXIuaHRtbCIsKSwgZXhw
ZWN0ZWRfc3Rkb3V0LCB0b29sPXRvb2wpCiAKICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIlBv
cnRzIHNraXBwaW5nIHRlc3QgJ2Zvbyc6IHRlc3RfcG9ydDFcbiIKLSAgICAgICAgc2VsZi5hc3Nl
cnRfZXhlY3V0ZV9vdXRwdXRzKFNraXBwZWRQb3J0cygpLCAoImZvbyIsKSwgZXhwZWN0ZWRfc3Rk
b3V0KQorICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoU2tpcHBlZFBvcnRzKCks
ICgiZm9vIiwpLCBleHBlY3RlZF9zdGRvdXQsIHRvb2w9dG9vbCkKIAogICAgICAgICBleHBlY3Rl
ZF9zdGRvdXQgPSAiVGVzdCAnbWVkaWEnIGlzIG5vdCBza2lwcGVkIGJ5IGFueSBwb3J0LlxuIgot
ICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoU2tpcHBlZFBvcnRzKCksICgibWVk
aWEiLCksIGV4cGVjdGVkX3N0ZG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRw
dXRzKFNraXBwZWRQb3J0cygpLCAoIm1lZGlhIiwpLCBleHBlY3RlZF9zdGRvdXQsIHRvb2w9dG9v
bCkKIAogCiBjbGFzcyBGYWlsdXJlUmVhc29uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0
dGVzdC5weQppbmRleCAwNWVlZWRjZjYyNDA2YmQ1M2QyZmUxYjE2ZDJmNzM2NzUwMjA5YTk0Li5h
ZTNiZmZlZTdmNjA3NzYwMTcxMzYyMzk5ZjY3NTQxNjcwZTM1YzMwIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkK
QEAgLTMwLDYgKzMwLDcgQEAgaW1wb3J0IG9zCiBpbXBvcnQgU3RyaW5nSU8KIAogZnJvbSB3ZWJr
aXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBDaGVja291dE5lZWRzVXBkYXRlCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtX21vY2sgaW1wb3J0IE1vY2tTQ00KIGZy
b20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQXR0YWNobWVudAogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9yZXN1bHRzCkBA
IC0zOSw3ICs0MCw4IEBAIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5jb21tYW5kdGVzdCBp
bXBvcnQgQ29tbWFuZHNUZXN0CiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMucXVldWVzIGlt
cG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMucXVldWVzdGVzdCBpbXBvcnQgUXVl
dWVzVGVzdAogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnN0ZXBzZXF1ZW5jZSBpbXBvcnQg
U3RlcFNlcXVlbmNlCi1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29s
LCBNb2NrT3B0aW9ucywgTW9ja1NDTSwgTW9ja1N0YXR1c1NlcnZlcgorZnJvbSB3ZWJraXRweS5j
b21tb24ubmV0LnN0YXR1c3NlcnZlcl9tb2NrIGltcG9ydCBNb2NrU3RhdHVzU2VydmVyCitmcm9t
IHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sLCBNb2NrT3B0aW9ucwogCiAK
IGNsYXNzIFRlc3RDb21taXRRdWV1ZShDb21taXRRdWV1ZSk6CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZV91bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5
CmluZGV4IDRmMDY3NmRiMjEyNjUxMjk3NDEyYTIzN2NlMDdlOTMzYWZjOTNiNmEuLmEzNjljOWYx
NmE1ZTVmZTZjMzBlNmFlNzk3YzllMTIyMDhiY2NiZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5
CkBAIC0zMSw3ICszMSw4IEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHku
dGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMu
cmViYXNlbGluZSBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBN
b2NrVG9vbCwgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9y
dCBNb2NrVG9vbAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGlt
cG9ydCBNb2NrRXhlY3V0aXZlCiAKIAogY2xhc3MgVGVzdFJlYmFzZWxpbmUodW5pdHRlc3QuVGVz
dENhc2UpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29s
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5CmluZGV4IGY3MTNh
ZjU0MWRjZDM1OWE1ZmMxMzM3YTRmYTRlNzQ1Y2E5MzAzN2YuLmM1MTJlNDRiNGZlZjk0YzhmNzQw
Y2JhMzZhM2Q1NTM5OWE3ZTYzNjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9tb2NrdG9vbC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rv
b2wucHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI2
LDczMyArMjYsOCBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGRh
dGV0aW1lCi1pbXBvcnQgb3MKLWltcG9ydCBTdHJpbmdJTwotaW1wb3J0IHRocmVhZGluZwogCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlz
dCwgUmV2aWV3ZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNvbW1pdGluZm8gaW1w
b3J0IENvbW1pdEluZm8KLWZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQg
Q29tbWl0TWVzc2FnZQotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBC
dWcsIEF0dGFjaG1lbnQKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xv
Z2dpbmcgaW1wb3J0IGxvZwotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBp
bXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVt
X21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCi0KLQotZGVmIF9pZF90b19vYmplY3RfZGljdGlv
bmFyeSgqb2JqZWN0cyk6Ci0gICAgZGljdGlvbmFyeSA9IHt9Ci0gICAgZm9yIHRoaW5nIGluIG9i
amVjdHM6Ci0gICAgICAgIGRpY3Rpb25hcnlbdGhpbmdbImlkIl1dID0gdGhpbmcKLSAgICByZXR1
cm4gZGljdGlvbmFyeQotCi0jIFRlc3RpbmcKLQotCi1fcGF0Y2gxID0gewotICAgICJpZCI6IDEw
MDAwLAotICAgICJidWdfaWQiOiA1MDAwMCwKLSAgICAidXJsIjogImh0dHA6Ly9leGFtcGxlLmNv
bS8xMDAwMCIsCi0gICAgIm5hbWUiOiAiUGF0Y2gxIiwKLSAgICAiaXNfb2Jzb2xldGUiOiBGYWxz
ZSwKLSAgICAiaXNfcGF0Y2giOiBUcnVlLAotICAgICJyZXZpZXciOiAiKyIsCi0gICAgInJldmll
d2VyX2VtYWlsIjogImZvb0BiYXIuY29tIiwKLSAgICAiY29tbWl0LXF1ZXVlIjogIisiLAotICAg
ICJjb21taXR0ZXJfZW1haWwiOiAiZm9vQGJhci5jb20iLAotICAgICJhdHRhY2hlcl9lbWFpbCI6
ICJDb250cmlidXRlcjEiLAotfQotCi0KLV9wYXRjaDIgPSB7Ci0gICAgImlkIjogMTAwMDEsCi0g
ICAgImJ1Z19pZCI6IDUwMDAwLAotICAgICJ1cmwiOiAiaHR0cDovL2V4YW1wbGUuY29tLzEwMDAx
IiwKLSAgICAibmFtZSI6ICJQYXRjaDIiLAotICAgICJpc19vYnNvbGV0ZSI6IEZhbHNlLAotICAg
ICJpc19wYXRjaCI6IFRydWUsCi0gICAgInJldmlldyI6ICIrIiwKLSAgICAicmV2aWV3ZXJfZW1h
aWwiOiAicmV2aWV3ZXIyQHdlYmtpdC5vcmciLAotICAgICJjb21taXQtcXVldWUiOiAiKyIsCi0g
ICAgImNvbW1pdHRlcl9lbWFpbCI6ICJub24tY29tbWl0dGVyQGV4YW1wbGUuY29tIiwKLSAgICAi
YXR0YWNoZXJfZW1haWwiOiAiZXJpY0B3ZWJraXQub3JnIiwKLX0KLQotCi1fcGF0Y2gzID0gewot
ICAgICJpZCI6IDEwMDAyLAotICAgICJidWdfaWQiOiA1MDAwMSwKLSAgICAidXJsIjogImh0dHA6
Ly9leGFtcGxlLmNvbS8xMDAwMiIsCi0gICAgIm5hbWUiOiAiUGF0Y2gzIiwKLSAgICAiaXNfb2Jz
b2xldGUiOiBGYWxzZSwKLSAgICAiaXNfcGF0Y2giOiBUcnVlLAotICAgICJyZXZpZXciOiAiPyIs
Ci0gICAgImF0dGFjaGVyX2VtYWlsIjogImVyaWNAd2Via2l0Lm9yZyIsCi19Ci0KLQotX3BhdGNo
NCA9IHsKLSAgICAiaWQiOiAxMDAwMywKLSAgICAiYnVnX2lkIjogNTAwMDMsCi0gICAgInVybCI6
ICJodHRwOi8vZXhhbXBsZS5jb20vMTAwMDIiLAotICAgICJuYW1lIjogIlBhdGNoMyIsCi0gICAg
ImlzX29ic29sZXRlIjogRmFsc2UsCi0gICAgImlzX3BhdGNoIjogVHJ1ZSwKLSAgICAicmV2aWV3
IjogIisiLAotICAgICJjb21taXQtcXVldWUiOiAiPyIsCi0gICAgInJldmlld2VyX2VtYWlsIjog
ImZvb0BiYXIuY29tIiwKLSAgICAiYXR0YWNoZXJfZW1haWwiOiAiQ29udHJpYnV0ZXIyIiwKLX0K
LQotCi1fcGF0Y2g1ID0gewotICAgICJpZCI6IDEwMDA0LAotICAgICJidWdfaWQiOiA1MDAwMywK
LSAgICAidXJsIjogImh0dHA6Ly9leGFtcGxlLmNvbS8xMDAwMiIsCi0gICAgIm5hbWUiOiAiUGF0
Y2g1IiwKLSAgICAiaXNfb2Jzb2xldGUiOiBGYWxzZSwKLSAgICAiaXNfcGF0Y2giOiBUcnVlLAot
ICAgICJyZXZpZXciOiAiKyIsCi0gICAgInJldmlld2VyX2VtYWlsIjogImZvb0BiYXIuY29tIiwK
LSAgICAiYXR0YWNoZXJfZW1haWwiOiAiZXJpY0B3ZWJraXQub3JnIiwKLX0KLQotCi1fcGF0Y2g2
ID0geyAjIFZhbGlkIGNvbW1pdHRlciwgYnV0IG5vIHJldmlld2VyLgotICAgICJpZCI6IDEwMDA1
LAotICAgICJidWdfaWQiOiA1MDAwMywKLSAgICAidXJsIjogImh0dHA6Ly9leGFtcGxlLmNvbS8x
MDAwMiIsCi0gICAgIm5hbWUiOiAiUk9MTE9VVCBvZiByMzQ4OSIsCi0gICAgImlzX29ic29sZXRl
IjogRmFsc2UsCi0gICAgImlzX3BhdGNoIjogVHJ1ZSwKLSAgICAiY29tbWl0LXF1ZXVlIjogIisi
LAotICAgICJjb21taXR0ZXJfZW1haWwiOiAiZm9vQGJhci5jb20iLAotICAgICJhdHRhY2hlcl9l
bWFpbCI6ICJlcmljQHdlYmtpdC5vcmciLAotfQotCi0KLV9wYXRjaDcgPSB7ICMgVmFsaWQgcmV2
aWV3LCBwYXRjaCBpcyBtYXJrZWQgb2Jzb2xldGUuCi0gICAgImlkIjogMTAwMDYsCi0gICAgImJ1
Z19pZCI6IDUwMDAyLAotICAgICJ1cmwiOiAiaHR0cDovL2V4YW1wbGUuY29tLzEwMDAyIiwKLSAg
ICAibmFtZSI6ICJQYXRjaDciLAotICAgICJpc19vYnNvbGV0ZSI6IFRydWUsCi0gICAgImlzX3Bh
dGNoIjogVHJ1ZSwKLSAgICAicmV2aWV3IjogIisiLAotICAgICJyZXZpZXdlcl9lbWFpbCI6ICJm
b29AYmFyLmNvbSIsCi0gICAgImF0dGFjaGVyX2VtYWlsIjogImVyaWNAd2Via2l0Lm9yZyIsCi19
Ci0KLQotIyBUaGlzIG1hdGNoZXMgb25lIG9mIEJ1Zy51bmFzc2lnbmVkX2VtYWlscwotX3VuYXNz
aWduZWRfZW1haWwgPSAid2Via2l0LXVuYXNzaWduZWRAbGlzdHMud2Via2l0Lm9yZyIKLSMgVGhp
cyBpcyBuZWVkZWQgZm9yIHRoZSBGbGFreVRlc3RSZXBvcnRlciB0byBiZWxpZXZlIHRoZSBidWcK
LSMgd2FzIGZpbGVkIGJ5IG9uZSBvZiB0aGUgd2Via2l0cHkgYm90cy4KLV9jb21taXRfcXVldWVf
ZW1haWwgPSAiY29tbWl0LXF1ZXVlQHdlYmtpdC5vcmciCi0KLQotX2J1ZzEgPSB7Ci0gICAgImlk
IjogNTAwMDAsCi0gICAgInRpdGxlIjogIkJ1ZyB3aXRoIHR3byByKydkIGFuZCBjcSsnZCBwYXRj
aGVzLCBvbmUgb2Ygd2hpY2ggaGFzIGFuICIKLSAgICAgICAgICAgICAiaW52YWxpZCBjb21taXQt
cXVldWUgc2V0dGVyLiIsCi0gICAgInJlcG9ydGVyX2VtYWlsIjogImZvb0Bmb28uY29tIiwKLSAg
ICAiYXNzaWduZWRfdG9fZW1haWwiOiBfdW5hc3NpZ25lZF9lbWFpbCwKLSAgICAiY2NfZW1haWxz
IjogW10sCi0gICAgImF0dGFjaG1lbnRzIjogW19wYXRjaDEsIF9wYXRjaDJdLAotICAgICJidWdf
c3RhdHVzIjogIlVOQ09ORklSTUVEIiwKLSAgICAiY29tbWVudHMiOiBbXSwKLX0KLQotCi1fYnVn
MiA9IHsKLSAgICAiaWQiOiA1MDAwMSwKLSAgICAidGl0bGUiOiAiQnVnIHdpdGggYSBwYXRjaCBu
ZWVkaW5nIHJldmlldy4iLAotICAgICJyZXBvcnRlcl9lbWFpbCI6ICJlcmljQHdlYmtpdC5vcmci
LAotICAgICJhc3NpZ25lZF90b19lbWFpbCI6ICJmb29AZm9vLmNvbSIsCi0gICAgImNjX2VtYWls
cyI6IFsiYWJhcnRoQHdlYmtpdC5vcmciLCBdLAotICAgICJhdHRhY2htZW50cyI6IFtfcGF0Y2gz
XSwKLSAgICAiYnVnX3N0YXR1cyI6ICJBU1NJR05FRCIsCi0gICAgImNvbW1lbnRzIjogW3siY29t
bWVudF9kYXRlIjogIGRhdGV0aW1lLmRhdGV0aW1lKDIwMTEsIDYsIDExLCA5LCA0LCAzKSwKLSAg
ICAgICAgICAgICAgICAgICJjb21tZW50X2VtYWlsIjogImJhckBmb28uY29tIiwKLSAgICAgICAg
ICAgICAgICAgICJ0ZXh0IjogIk1lc3NhZ2UxLiIsCi0gICAgICAgIH0sCi0gICAgXSwKLX0KLQot
Ci1fYnVnMyA9IHsKLSAgICAiaWQiOiA1MDAwMiwKLSAgICAidGl0bGUiOiAiVGhlIHRoaXJkIGJ1
ZyIsCi0gICAgInJlcG9ydGVyX2VtYWlsIjogImZvb0Bmb28uY29tIiwKLSAgICAiYXNzaWduZWRf
dG9fZW1haWwiOiBfdW5hc3NpZ25lZF9lbWFpbCwKLSAgICAiY2NfZW1haWxzIjogW10sCi0gICAg
ImF0dGFjaG1lbnRzIjogW19wYXRjaDddLAotICAgICJidWdfc3RhdHVzIjogIk5FVyIsCi0gICAg
ImNvbW1lbnRzIjogW10sCi19Ci0KLQotX2J1ZzQgPSB7Ci0gICAgImlkIjogNTAwMDMsCi0gICAg
InRpdGxlIjogIlRoZSBmb3VydGggYnVnIiwKLSAgICAicmVwb3J0ZXJfZW1haWwiOiAiZm9vQGZv
by5jb20iLAotICAgICJhc3NpZ25lZF90b19lbWFpbCI6ICJmb29AZm9vLmNvbSIsCi0gICAgImNj
X2VtYWlscyI6IFtdLAotICAgICJhdHRhY2htZW50cyI6IFtfcGF0Y2g0LCBfcGF0Y2g1LCBfcGF0
Y2g2XSwKLSAgICAiYnVnX3N0YXR1cyI6ICJSRU9QRU5FRCIsCi0gICAgImNvbW1lbnRzIjogW10s
Ci19Ci0KLQotX2J1ZzUgPSB7Ci0gICAgImlkIjogNTAwMDQsCi0gICAgInRpdGxlIjogIlRoZSBm
aWZ0aCBidWciLAotICAgICJyZXBvcnRlcl9lbWFpbCI6IF9jb21taXRfcXVldWVfZW1haWwsCi0g
ICAgImFzc2lnbmVkX3RvX2VtYWlsIjogImZvb0Bmb28uY29tIiwKLSAgICAiY2NfZW1haWxzIjog
W10sCi0gICAgImF0dGFjaG1lbnRzIjogW10sCi0gICAgImJ1Z19zdGF0dXMiOiAiUkVTT0xWRUQi
LAotICAgICJkdXBfaWQiOiA1MDAwMiwKLSAgICAiY29tbWVudHMiOiBbXSwKLX0KLQotCi1jbGFz
cyBNb2NrQnVnemlsbGFRdWVyaWVzKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
YnVnemlsbGEpOgotICAgICAgICBzZWxmLl9idWd6aWxsYSA9IGJ1Z3ppbGxhCi0KLSAgICBkZWYg
X2FsbF9idWdzKHNlbGYpOgotICAgICAgICByZXR1cm4gbWFwKGxhbWJkYSBidWdfZGljdGlvbmFy
eTogQnVnKGJ1Z19kaWN0aW9uYXJ5LCBzZWxmLl9idWd6aWxsYSksCi0gICAgICAgICAgICAgICAg
ICAgc2VsZi5fYnVnemlsbGEuYnVnX2NhY2hlLnZhbHVlcygpKQotCi0gICAgZGVmIGZldGNoX2J1
Z19pZHNfZnJvbV9jb21taXRfcXVldWUoc2VsZik6Ci0gICAgICAgIGJ1Z3Nfd2l0aF9jb21taXRf
cXVldWVkX3BhdGNoZXMgPSBmaWx0ZXIoCi0gICAgICAgICAgICAgICAgbGFtYmRhIGJ1ZzogYnVn
LmNvbW1pdF9xdWV1ZWRfcGF0Y2hlcygpLAotICAgICAgICAgICAgICAgIHNlbGYuX2FsbF9idWdz
KCkpCi0gICAgICAgIHJldHVybiBtYXAobGFtYmRhIGJ1ZzogYnVnLmlkKCksIGJ1Z3Nfd2l0aF9j
b21taXRfcXVldWVkX3BhdGNoZXMpCi0KLSAgICBkZWYgZmV0Y2hfYXR0YWNobWVudF9pZHNfZnJv
bV9yZXZpZXdfcXVldWUoc2VsZik6Ci0gICAgICAgIHVucmV2aWV3ZWRfcGF0Y2hlcyA9IHN1bShb
YnVnLnVucmV2aWV3ZWRfcGF0Y2hlcygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIGJ1ZyBpbiBzZWxmLl9hbGxfYnVncygpXSwgW10pCi0gICAgICAgIHJldHVybiBtYXAo
bGFtYmRhIHBhdGNoOiBwYXRjaC5pZCgpLCB1bnJldmlld2VkX3BhdGNoZXMpCi0KLSAgICBkZWYg
ZmV0Y2hfcGF0Y2hlc19mcm9tX2NvbW1pdF9xdWV1ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHN1
bShbYnVnLmNvbW1pdF9xdWV1ZWRfcGF0Y2hlcygpCi0gICAgICAgICAgICAgICAgICAgIGZvciBi
dWcgaW4gc2VsZi5fYWxsX2J1Z3MoKV0sIFtdKQotCi0gICAgZGVmIGZldGNoX2J1Z19pZHNfZnJv
bV9wZW5kaW5nX2NvbW1pdF9saXN0KHNlbGYpOgotICAgICAgICBidWdzX3dpdGhfcmV2aWV3ZWRf
cGF0Y2hlcyA9IGZpbHRlcihsYW1iZGEgYnVnOiBidWcucmV2aWV3ZWRfcGF0Y2hlcygpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9hbGxfYnVncygp
KQotICAgICAgICBidWdfaWRzID0gbWFwKGxhbWJkYSBidWc6IGJ1Zy5pZCgpLCBidWdzX3dpdGhf
cmV2aWV3ZWRfcGF0Y2hlcykKLSAgICAgICAgIyBOT1RFOiBUaGlzIG1hbnVhbCBoYWNrIGhlcmUg
aXMgdG8gYWxsb3cgdGVzdGluZyBsb2dnaW5nIGluCi0gICAgICAgICMgdGVzdF9hc3NpZ25fdG9f
Y29tbWl0dGVyIHRoZSByZWFsIHBlbmRpbmctY29tbWl0IHF1ZXJ5IG9uIGJ1Z3ppbGxhCi0gICAg
ICAgICMgd2lsbCByZXR1cm4gYnVncyB3aXRoIHBhdGNoZXMgd2hpY2ggaGF2ZSByKywgYnV0IGFy
ZSBhbHNvIG9ic29sZXRlLgotICAgICAgICByZXR1cm4gYnVnX2lkcyArIFs1MDAwMl0KLQotICAg
IGRlZiBmZXRjaF9wYXRjaGVzX2Zyb21fcGVuZGluZ19jb21taXRfbGlzdChzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHN1bShbYnVnLnJldmlld2VkX3BhdGNoZXMoKSBmb3IgYnVnIGluIHNlbGYuX2Fs
bF9idWdzKCldLCBbXSkKLQotICAgIGRlZiBmZXRjaF9idWdzX21hdGNoaW5nX3NlYXJjaChzZWxm
LCBzZWFyY2hfc3RyaW5nLCBhdXRob3JfZW1haWw9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBbc2Vs
Zi5fYnVnemlsbGEuZmV0Y2hfYnVnKDUwMDA0KSwgc2VsZi5fYnVnemlsbGEuZmV0Y2hfYnVnKDUw
MDAzKV0KLQotCi1fbW9ja19yZXZpZXdlcnMgPSBbUmV2aWV3ZXIoIkZvbyBCYXIiLCAiZm9vQGJh
ci5jb20iKSwKLSAgICAgICAgICAgICAgICAgICBSZXZpZXdlcigiUmV2aWV3ZXIyIiwgInJldmll
d2VyMkB3ZWJraXQub3JnIildCi0KLQotIyBGSVhNRTogQnVnemlsbGEgaXMgdGhlIHdyb25nIE1v
Y2stcG9pbnQuICBPbmNlIHdlIGhhdmUgYSBCdWd6aWxsYU5ldHdvcmsKLSMgICAgICAgIGNsYXNz
IHdlIHNob3VsZCBtb2NrIHRoYXQgaW5zdGVhZC4KLSMgTW9zdCBvZiB0aGlzIGNsYXNzIGlzIGp1
c3QgY29weS9wYXN0ZSBmcm9tIEJ1Z3ppbGxhLgotY2xhc3MgTW9ja0J1Z3ppbGxhKG9iamVjdCk6
Ci0KLSAgICBidWdfc2VydmVyX3VybCA9ICJodHRwOi8vZXhhbXBsZS5jb20iCi0KLSAgICBidWdf
Y2FjaGUgPSBfaWRfdG9fb2JqZWN0X2RpY3Rpb25hcnkoX2J1ZzEsIF9idWcyLCBfYnVnMywgX2J1
ZzQsIF9idWc1KQotCi0gICAgYXR0YWNobWVudF9jYWNoZSA9IF9pZF90b19vYmplY3RfZGljdGlv
bmFyeShfcGF0Y2gxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX3BhdGNoMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9wYXRjaDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfcGF0Y2g0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX3BhdGNoNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9wYXRjaDYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfcGF0Y2g3KQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBz
ZWxmLnF1ZXJpZXMgPSBNb2NrQnVnemlsbGFRdWVyaWVzKHNlbGYpCi0gICAgICAgIHNlbGYuY29t
bWl0dGVycyA9IENvbW1pdHRlckxpc3QocmV2aWV3ZXJzPV9tb2NrX3Jldmlld2VycykKLSAgICAg
ICAgc2VsZi5fb3ZlcnJpZGVfcGF0Y2ggPSBOb25lCi0KLSAgICBkZWYgY3JlYXRlX2J1ZyhzZWxm
LAotICAgICAgICAgICAgICAgICAgIGJ1Z190aXRsZSwKLSAgICAgICAgICAgICAgICAgICBidWdf
ZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgY29tcG9uZW50PU5vbmUsCi0gICAgICAg
ICAgICAgICAgICAgZGlmZj1Ob25lLAotICAgICAgICAgICAgICAgICAgIHBhdGNoX2Rlc2NyaXB0
aW9uPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgY2M9Tm9uZSwKLSAgICAgICAgICAgICAgICAg
ICBibG9ja2VkPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgbWFya19mb3JfcmV2aWV3PUZhbHNl
LAotICAgICAgICAgICAgICAgICAgIG1hcmtfZm9yX2NvbW1pdF9xdWV1ZT1GYWxzZSk6Ci0gICAg
ICAgIGxvZygiTU9DSyBjcmVhdGVfYnVnIikKLSAgICAgICAgbG9nKCJidWdfdGl0bGU6ICVzIiAl
IGJ1Z190aXRsZSkKLSAgICAgICAgbG9nKCJidWdfZGVzY3JpcHRpb246ICVzIiAlIGJ1Z19kZXNj
cmlwdGlvbikKLSAgICAgICAgaWYgY29tcG9uZW50OgotICAgICAgICAgICAgbG9nKCJjb21wb25l
bnQ6ICVzIiAlIGNvbXBvbmVudCkKLSAgICAgICAgaWYgY2M6Ci0gICAgICAgICAgICBsb2coImNj
OiAlcyIgJSBjYykKLSAgICAgICAgaWYgYmxvY2tlZDoKLSAgICAgICAgICAgIGxvZygiYmxvY2tl
ZDogJXMiICUgYmxvY2tlZCkKLSAgICAgICAgcmV0dXJuIDUwMDA0Ci0KLSAgICBkZWYgcXVpcHMo
c2VsZik6Ci0gICAgICAgIHJldHVybiBbIkdvb2QgYXJ0aXN0cyBjb3B5LiBHcmVhdCBhcnRpc3Rz
IHN0ZWFsLiAtIFBhYmxvIFBpY2Fzc28iXQotCi0gICAgZGVmIGZldGNoX2J1ZyhzZWxmLCBidWdf
aWQpOgotICAgICAgICByZXR1cm4gQnVnKHNlbGYuYnVnX2NhY2hlLmdldChpbnQoYnVnX2lkKSks
IHNlbGYpCi0KLSAgICBkZWYgc2V0X292ZXJyaWRlX3BhdGNoKHNlbGYsIHBhdGNoKToKLSAgICAg
ICAgc2VsZi5fb3ZlcnJpZGVfcGF0Y2ggPSBwYXRjaAotCi0gICAgZGVmIGZldGNoX2F0dGFjaG1l
bnQoc2VsZiwgYXR0YWNobWVudF9pZCk6Ci0gICAgICAgIGlmIHNlbGYuX292ZXJyaWRlX3BhdGNo
OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX292ZXJyaWRlX3BhdGNoCi0KLSAgICAgICAgYXR0
YWNobWVudF9kaWN0aW9uYXJ5ID0gc2VsZi5hdHRhY2htZW50X2NhY2hlLmdldChhdHRhY2htZW50
X2lkKQotICAgICAgICBpZiBub3QgYXR0YWNobWVudF9kaWN0aW9uYXJ5OgotICAgICAgICAgICAg
cHJpbnQgIk1PQ0s6IGZldGNoX2F0dGFjaG1lbnQ6ICVzIGlzIG5vdCBhIGtub3duIGF0dGFjaG1l
bnQgaWQiICUgYXR0YWNobWVudF9pZAotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAg
YnVnID0gc2VsZi5mZXRjaF9idWcoYXR0YWNobWVudF9kaWN0aW9uYXJ5WyJidWdfaWQiXSkKLSAg
ICAgICAgZm9yIGF0dGFjaG1lbnQgaW4gYnVnLmF0dGFjaG1lbnRzKGluY2x1ZGVfb2Jzb2xldGU9
VHJ1ZSk6Ci0gICAgICAgICAgICBpZiBhdHRhY2htZW50LmlkKCkgPT0gaW50KGF0dGFjaG1lbnRf
aWQpOgotICAgICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50Ci0KLSAgICBkZWYgYnVnX3Vy
bF9mb3JfYnVnX2lkKHNlbGYsIGJ1Z19pZCk6Ci0gICAgICAgIHJldHVybiAiJXMvJXMiICUgKHNl
bGYuYnVnX3NlcnZlcl91cmwsIGJ1Z19pZCkKLQotICAgIGRlZiBmZXRjaF9idWdfZGljdGlvbmFy
eShzZWxmLCBidWdfaWQpOgotICAgICAgICByZXR1cm4gc2VsZi5idWdfY2FjaGUuZ2V0KGJ1Z19p
ZCkKLQotICAgIGRlZiBhdHRhY2htZW50X3VybF9mb3JfaWQoc2VsZiwgYXR0YWNobWVudF9pZCwg
YWN0aW9uPSJ2aWV3Iik6Ci0gICAgICAgIGFjdGlvbl9wYXJhbSA9ICIiCi0gICAgICAgIGlmIGFj
dGlvbiBhbmQgYWN0aW9uICE9ICJ2aWV3IjoKLSAgICAgICAgICAgIGFjdGlvbl9wYXJhbSA9ICIm
YWN0aW9uPSVzIiAlIGFjdGlvbgotICAgICAgICByZXR1cm4gIiVzLyVzJXMiICUgKHNlbGYuYnVn
X3NlcnZlcl91cmwsIGF0dGFjaG1lbnRfaWQsIGFjdGlvbl9wYXJhbSkKLQotICAgIGRlZiByZWFz
c2lnbl9idWcoc2VsZiwgYnVnX2lkLCBhc3NpZ25lZT1Ob25lLCBjb21tZW50X3RleHQ9Tm9uZSk6
Ci0gICAgICAgIGxvZygiTU9DSyByZWFzc2lnbl9idWc6IGJ1Z19pZD0lcywgYXNzaWduZWU9JXMi
ICUgKGJ1Z19pZCwgYXNzaWduZWUpKQotICAgICAgICBpZiBjb21tZW50X3RleHQ6Ci0gICAgICAg
ICAgICBsb2coIi0tIEJlZ2luIGNvbW1lbnQgLS0iKQotICAgICAgICAgICAgbG9nKGNvbW1lbnRf
dGV4dCkKLSAgICAgICAgICAgIGxvZygiLS0gRW5kIGNvbW1lbnQgLS0iKQotCi0gICAgZGVmIHNl
dF9mbGFnX29uX2F0dGFjaG1lbnQoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdHRhY2htZW50X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRfdGV4dD1Ob25lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfY29tbWVudF90ZXh0PU5vbmUpOgotICAgICAgICBs
b2coIk1PQ0sgc2V0dGluZyBmbGFnICclcycgdG8gJyVzJyBvbiBhdHRhY2htZW50ICclcycgd2l0
aCBjb21tZW50ICclcycgYW5kIGFkZGl0aW9uYWwgY29tbWVudCAnJXMnIiAlICgKLSAgICAgICAg
ICAgIGZsYWdfbmFtZSwgZmxhZ192YWx1ZSwgYXR0YWNobWVudF9pZCwgY29tbWVudF90ZXh0LCBh
ZGRpdGlvbmFsX2NvbW1lbnRfdGV4dCkpCi0KLSAgICBkZWYgcG9zdF9jb21tZW50X3RvX2J1Zyhz
ZWxmLCBidWdfaWQsIGNvbW1lbnRfdGV4dCwgY2M9Tm9uZSk6Ci0gICAgICAgIGxvZygiTU9DSyBi
dWcgY29tbWVudDogYnVnX2lkPSVzLCBjYz0lc1xuLS0tIEJlZ2luIGNvbW1lbnQgLS0tXG4lc1xu
LS0tIEVuZCBjb21tZW50IC0tLVxuIiAlICgKLSAgICAgICAgICAgIGJ1Z19pZCwgY2MsIGNvbW1l
bnRfdGV4dCkpCi0KLSAgICBkZWYgYWRkX2F0dGFjaG1lbnRfdG9fYnVnKHNlbGYsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBidWdfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaWxlX29yX3N0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2Ny
aXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Tm9uZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRfdGV4dD1Ob25lKToKLSAgICAgICAg
bG9nKCJNT0NLIGFkZF9hdHRhY2htZW50X3RvX2J1ZzogYnVnX2lkPSVzLCBkZXNjcmlwdGlvbj0l
cyBmaWxlbmFtZT0lcyIgJSAoYnVnX2lkLCBkZXNjcmlwdGlvbiwgZmlsZW5hbWUpKQotICAgICAg
ICBpZiBjb21tZW50X3RleHQ6Ci0gICAgICAgICAgICBsb2coIi0tIEJlZ2luIGNvbW1lbnQgLS0i
KQotICAgICAgICAgICAgbG9nKGNvbW1lbnRfdGV4dCkKLSAgICAgICAgICAgIGxvZygiLS0gRW5k
IGNvbW1lbnQgLS0iKQotCi0gICAgZGVmIGFkZF9wYXRjaF90b19idWcoc2VsZiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBidWdfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21tZW50X3RleHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXJr
X2Zvcl9yZXZpZXc9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWFya19mb3JfY29t
bWl0X3F1ZXVlPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtfZm9yX2xhbmRp
bmc9RmFsc2UpOgotICAgICAgICBsb2coIk1PQ0sgYWRkX3BhdGNoX3RvX2J1ZzogYnVnX2lkPSVz
LCBkZXNjcmlwdGlvbj0lcywgbWFya19mb3JfcmV2aWV3PSVzLCBtYXJrX2Zvcl9jb21taXRfcXVl
dWU9JXMsIG1hcmtfZm9yX2xhbmRpbmc9JXMiICUKLSAgICAgICAgICAgIChidWdfaWQsIGRlc2Ny
aXB0aW9uLCBtYXJrX2Zvcl9yZXZpZXcsIG1hcmtfZm9yX2NvbW1pdF9xdWV1ZSwgbWFya19mb3Jf
bGFuZGluZykpCi0gICAgICAgIGlmIGNvbW1lbnRfdGV4dDoKLSAgICAgICAgICAgIGxvZygiLS0g
QmVnaW4gY29tbWVudCAtLSIpCi0gICAgICAgICAgICBsb2coY29tbWVudF90ZXh0KQotICAgICAg
ICAgICAgbG9nKCItLSBFbmQgY29tbWVudCAtLSIpCi0KLSAgICBkZWYgYWRkX2NjX3RvX2J1Zyhz
ZWxmLCBidWdfaWQsIGNjcyk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBvYnNvbGV0ZV9hdHRh
Y2htZW50KHNlbGYsIGF0dGFjaG1lbnRfaWQsIG1lc3NhZ2U9Tm9uZSk6Ci0gICAgICAgIHBhc3MK
LQotICAgIGRlZiByZW9wZW5fYnVnKHNlbGYsIGJ1Z19pZCwgbWVzc2FnZSk6Ci0gICAgICAgIHBh
c3MKLQotICAgIGRlZiBjbG9zZV9idWdfYXNfZml4ZWQoc2VsZiwgYnVnX2lkLCBtZXNzYWdlKToK
LSAgICAgICAgcGFzcwotCi0gICAgZGVmIGNsZWFyX2F0dGFjaG1lbnRfZmxhZ3Moc2VsZiwgYXR0
YWNobWVudF9pZCwgbWVzc2FnZSk6Ci0gICAgICAgIHBhc3MKLQotCi1jbGFzcyBNb2NrQnVpbGRl
cihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi5f
bmFtZSA9IG5hbWUKLQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5f
bmFtZQotCi0gICAgZGVmIHJlc3VsdHNfdXJsKHNlbGYpOgotICAgICAgICByZXR1cm4gImh0dHA6
Ly9leGFtcGxlLmNvbS9idWlsZGVycy8lcy9yZXN1bHRzIiAlIHNlbGYubmFtZSgpCi0KLSAgICBk
ZWYgYWNjdW11bGF0ZWRfcmVzdWx0c191cmwoc2VsZik6Ci0gICAgICAgIHJldHVybiAiaHR0cDov
L2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvJXMvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzIiAl
IHNlbGYubmFtZSgpCi0KLSAgICBkZWYgZm9yY2VfYnVpbGQoc2VsZiwgdXNlcm5hbWUsIGNvbW1l
bnRzKToKLSAgICAgICAgbG9nKCJNT0NLOiBmb3JjZV9idWlsZDogbmFtZT0lcywgdXNlcm5hbWU9
JXMsIGNvbW1lbnRzPSVzIiAlICgKLSAgICAgICAgICAgIHNlbGYuX25hbWUsIHVzZXJuYW1lLCBj
b21tZW50cykpCi0KLQotY2xhc3MgTW9ja0ZhaWx1cmVNYXAob2JqZWN0KToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgYnVpbGRib3QpOgotICAgICAgICBzZWxmLl9idWlsZGJvdCA9IGJ1aWxkYm90
Ci0KLSAgICBkZWYgaXNfZW1wdHkoc2VsZik6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAg
ZGVmIGZpbHRlcl9vdXRfb2xkX2ZhaWx1cmVzKHNlbGYsIGlzX29sZF9yZXZpc2lvbik6Ci0gICAg
ICAgIHBhc3MKLQotICAgIGRlZiBmYWlsaW5nX3JldmlzaW9ucyhzZWxmKToKLSAgICAgICAgcmV0
dXJuIFsyOTgzN10KLQotICAgIGRlZiBidWlsZGVyc19mYWlsaW5nX2ZvcihzZWxmLCByZXZpc2lv
bik6Ci0gICAgICAgIHJldHVybiBbc2VsZi5fYnVpbGRib3QuYnVpbGRlcl93aXRoX25hbWUoIkJ1
aWxkZXIxIildCi0KLSAgICBkZWYgdGVzdHNfZmFpbGluZ19mb3Ioc2VsZiwgcmV2aXNpb24pOgot
ICAgICAgICByZXR1cm4gWyJtb2NrLXRlc3QtMSJdCi0KLSAgICBkZWYgZmFpbGluZ190ZXN0cyhz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHNldChbIm1vY2stdGVzdC0xIl0pCi0KLQotY2xhc3MgTW9j
a0J1aWxkQm90KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxm
Ll9tb2NrX2J1aWxkZXIxX3N0YXR1cyA9IHsKLSAgICAgICAgICAgICJuYW1lIjogIkJ1aWxkZXIx
IiwKLSAgICAgICAgICAgICJpc19ncmVlbiI6IFRydWUsCi0gICAgICAgICAgICAiYWN0aXZpdHki
OiAiYnVpbGRpbmciLAotICAgICAgICB9Ci0gICAgICAgIHNlbGYuX21vY2tfYnVpbGRlcjJfc3Rh
dHVzID0gewotICAgICAgICAgICAgIm5hbWUiOiAiQnVpbGRlcjIiLAotICAgICAgICAgICAgImlz
X2dyZWVuIjogVHJ1ZSwKLSAgICAgICAgICAgICJhY3Rpdml0eSI6ICJpZGxlIiwKLSAgICAgICAg
fQotCi0gICAgZGVmIGJ1aWxkZXJfd2l0aF9uYW1lKHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1
cm4gTW9ja0J1aWxkZXIobmFtZSkKLQotICAgIGRlZiBidWlsZGVyX3N0YXR1c2VzKHNlbGYpOgot
ICAgICAgICByZXR1cm4gWwotICAgICAgICAgICAgc2VsZi5fbW9ja19idWlsZGVyMV9zdGF0dXMs
Ci0gICAgICAgICAgICBzZWxmLl9tb2NrX2J1aWxkZXIyX3N0YXR1cywKLSAgICAgICAgXQotCi0g
ICAgZGVmIHJlZF9jb3JlX2J1aWxkZXJzX25hbWVzKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2Vs
Zi5fbW9ja19idWlsZGVyMl9zdGF0dXNbImlzX2dyZWVuIl06Ci0gICAgICAgICAgICByZXR1cm4g
W3NlbGYuX21vY2tfYnVpbGRlcjJfc3RhdHVzWyJuYW1lIl1dCi0gICAgICAgIHJldHVybiBbXQot
Ci0gICAgZGVmIHJlZF9jb3JlX2J1aWxkZXJzKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5f
bW9ja19idWlsZGVyMl9zdGF0dXNbImlzX2dyZWVuIl06Ci0gICAgICAgICAgICByZXR1cm4gW3Nl
bGYuX21vY2tfYnVpbGRlcjJfc3RhdHVzXQotICAgICAgICByZXR1cm4gW10KLQotICAgIGRlZiBp
ZGxlX3JlZF9jb3JlX2J1aWxkZXJzKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5fbW9ja19i
dWlsZGVyMl9zdGF0dXNbImlzX2dyZWVuIl06Ci0gICAgICAgICAgICByZXR1cm4gW3NlbGYuX21v
Y2tfYnVpbGRlcjJfc3RhdHVzXQotICAgICAgICByZXR1cm4gW10KLQotICAgIGRlZiBsYXN0X2dy
ZWVuX3JldmlzaW9uKHNlbGYpOgotICAgICAgICByZXR1cm4gOTQ3OQotCi0gICAgZGVmIGxpZ2h0
X3RyZWVfb25fZmlyZShzZWxmKToKLSAgICAgICAgc2VsZi5fbW9ja19idWlsZGVyMl9zdGF0dXNb
ImlzX2dyZWVuIl0gPSBGYWxzZQotCi0gICAgZGVmIGZhaWx1cmVfbWFwKHNlbGYpOgotICAgICAg
ICByZXR1cm4gTW9ja0ZhaWx1cmVNYXAoc2VsZikKLQotCi1jbGFzcyBNb2NrU0NNKG9iamVjdCk6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVzeXN0ZW09Tm9uZSwgZXhlY3V0aXZlPU5vbmUp
OgotICAgICAgICBzZWxmLmNoZWNrb3V0X3Jvb3QgPSAiL21vY2stY2hlY2tvdXQiCi0gICAgICAg
IHNlbGYuYWRkZWRfcGF0aHMgPSBzZXQoKQotICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gZmls
ZXN5c3RlbSBvciBNb2NrRmlsZVN5c3RlbSgpCi0gICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4
ZWN1dGl2ZSBvciBNb2NrRXhlY3V0aXZlKCkKLQotICAgIGRlZiBhZGQoc2VsZiwgZGVzdGluYXRp
b25fcGF0aCwgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSk6Ci0gICAgICAgIHNlbGYuYWRkZWRfcGF0
aHMuYWRkKGRlc3RpbmF0aW9uX3BhdGgpCi0gICAgICAgIGlmIHJldHVybl9leGl0X2NvZGU6Ci0g
ICAgICAgICAgICByZXR1cm4gMAotCi0gICAgZGVmIGVuc3VyZV9jbGVhbl93b3JraW5nX2RpcmVj
dG9yeShzZWxmLCBmb3JjZV9jbGVhbik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBzdXBwb3J0
c19sb2NhbF9jb21taXRzKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIGVu
c3VyZV9ub19sb2NhbF9jb21taXRzKHNlbGYsIGZvcmNlX2NsZWFuKToKLSAgICAgICAgcGFzcwot
Ci0gICAgZGVmIGV4aXN0cyhzZWxmLCBwYXRoKToKLSAgICAgICAgIyBUZXN0UmVhbE1haW4udGVz
dF9yZWFsX21haW4gKGFuZCBzZXZlcmFsIG90aGVyIHJlYmFzZWxpbmUgdGVzdHMpIGFyZSBzZW5z
aXRpdmUgdG8gdGhpcyByZXR1cm4gdmFsdWUuCi0gICAgICAgICMgV2Ugc2hvdWxkIG1ha2UgdGhv
c2UgdGVzdHMgbW9yZSByb2J1c3QsIGJ1dCBmb3Igbm93IHdlIGp1c3QgcmV0dXJuIFRydWUgYWx3
YXlzIChzaW5jZSBubyB0ZXN0IG5lZWRzIG90aGVyd2lzZSkuCi0gICAgICAgIHJldHVybiBUcnVl
Ci0KLSAgICBkZWYgYWJzb2x1dGVfcGF0aChzZWxmLCAqY29tcHMpOgotICAgICAgICByZXR1cm4g
c2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuY2hlY2tvdXRfcm9vdCwgKmNvbXBzKQotCi0gICAg
ZGVmIGNoYW5nZWRfZmlsZXMoc2VsZiwgZ2l0X2NvbW1pdD1Ob25lKToKLSAgICAgICAgcmV0dXJu
IFsiTW9ja0ZpbGUxIl0KLQotICAgIGRlZiBjaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbihzZWxm
LCByZXZpc2lvbik6Ci0gICAgICAgIHJldHVybiBbIk1vY2tGaWxlMSJdCi0KLSAgICBkZWYgaGVh
ZF9zdm5fcmV2aXNpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiAxMjM0Ci0KLSAgICBkZWYgY3Jl
YXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQsIGNoYW5nZWRfZmlsZXM9Tm9uZSk6Ci0gICAgICAg
IHJldHVybiAiUGF0Y2gxIgotCi0gICAgZGVmIGNvbW1pdF9pZHNfZnJvbV9jb21taXRpc2hfYXJn
dW1lbnRzKHNlbGYsIGFyZ3MpOgotICAgICAgICByZXR1cm4gWyJDb21taXRpc2gxIiwgIkNvbW1p
dGlzaDIiXQotCi0gICAgZGVmIGNvbW1pdHRlcl9lbWFpbF9mb3JfcmV2aXNpb24oc2VsZiwgcmV2
aXNpb24pOgotICAgICAgICByZXR1cm4gIm1vY2tAd2Via2l0Lm9yZyIKLQotICAgIGRlZiBjb21t
aXRfbG9jYWxseV93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIHBhc3MKLQot
ICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUs
IHBhc3N3b3JkPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgZm9yY2Vfc3F1YXNoPUZhbHNlLCBjaGFu
Z2VkX2ZpbGVzPU5vbmUpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgbWVyZ2VfYmFzZShzZWxm
LCBnaXRfY29tbWl0KToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBjb21taXRfbWVz
c2FnZV9mb3JfbG9jYWxfY29tbWl0KHNlbGYsIGNvbW1pdF9pZCk6Ci0gICAgICAgIGlmIGNvbW1p
dF9pZCA9PSAiQ29tbWl0aXNoMSI6Ci0gICAgICAgICAgICByZXR1cm4gQ29tbWl0TWVzc2FnZSgi
Q29tbWl0TWVzc2FnZTFcbiIgXAotICAgICAgICAgICAgICAgICJodHRwczovL2J1Z3MuZXhhbXBs
ZS5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDAwXG4iKQotICAgICAgICBpZiBjb21taXRfaWQgPT0g
IkNvbW1pdGlzaDIiOgotICAgICAgICAgICAgcmV0dXJuIENvbW1pdE1lc3NhZ2UoIkNvbW1pdE1l
c3NhZ2UyXG4iIFwKLSAgICAgICAgICAgICAgICAiaHR0cHM6Ly9idWdzLmV4YW1wbGUub3JnL3No
b3dfYnVnLmNnaT9pZD01MDAwMVxuIikKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJCb2d1cyBj
b21taXRfaWQgaW4gY29tbWl0X21lc3NhZ2VfZm9yX2xvY2FsX2NvbW1pdC4iKQotCi0gICAgZGVm
IGRpZmZfZm9yX2ZpbGUoc2VsZiwgcGF0aCwgbG9nPU5vbmUpOgotICAgICAgICByZXR1cm4gcGF0
aCArICctZGlmZicKLQotICAgIGRlZiBkaWZmX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6
Ci0gICAgICAgIHJldHVybiAiRGlmZkZvclJldmlzaW9uJXNcbmh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMzQ1IiAlIHJldmlzaW9uCi0KLSAgICBkZWYgc2hvd19oZWFk
KHNlbGYsIHBhdGgpOgotICAgICAgICByZXR1cm4gcGF0aAotCi0gICAgZGVmIHN2bl9yZXZpc2lv
bl9mcm9tX2NvbW1pdF90ZXh0KHNlbGYsIGNvbW1pdF90ZXh0KToKLSAgICAgICAgcmV0dXJuICI0
OTgyNCIKLQotICAgIGRlZiBkZWxldGUoc2VsZiwgcGF0aCk6Ci0gICAgICAgIGlmIG5vdCBzZWxm
Ll9maWxlc3lzdGVtOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHNlbGYuX2ZpbGVz
eXN0ZW0uZXhpc3RzKHBhdGgpOgotICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5yZW1vdmUo
cGF0aCkKLQotCi1jbGFzcyBNb2NrREVQUyhvYmplY3QpOgotICAgIGRlZiByZWFkX3ZhcmlhYmxl
KHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gNjU2NAotCi0gICAgZGVmIHdyaXRlX3Zhcmlh
YmxlKHNlbGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgbG9nKCJNT0NLOiBNb2NrREVQUy53cml0
ZV92YXJpYWJsZSglcywgJXMpIiAlIChuYW1lLCB2YWx1ZSkpCi0KLQotY2xhc3MgTW9ja0NvbW1p
dE1lc3NhZ2Uob2JqZWN0KToKLSAgICBkZWYgbWVzc2FnZShzZWxmKToKLSAgICAgICAgcmV0dXJu
ICJUaGlzIGlzIGEgZmFrZSBjb21taXQgbWVzc2FnZSB0aGF0IGlzIGF0IGxlYXN0IDUwIGNoYXJh
Y3RlcnMuIgotCi1jbGFzcyBNb2NrQ2hlY2tvdXQob2JqZWN0KToKLQotICAgIF9jb21taXR0ZXJf
bGlzdCA9IENvbW1pdHRlckxpc3QoKQotCi0gICAgZGVmIGNvbW1pdF9pbmZvX2Zvcl9yZXZpc2lv
bihzZWxmLCBzdm5fcmV2aXNpb24pOgotICAgICAgICAjIFRoZSByZWFsIENoZWNrb3V0IHdvdWxk
IHByb2JhYmx5IHRocm93IGFuIGV4Y2VwdGlvbiwgYnV0IHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRl
c3RzIGhhdmUgdG8gZ2V0IE5vbmUgYmFjayBhdCB0aGUgbW9tZW50LgotICAgICAgICBpZiBub3Qg
c3ZuX3JldmlzaW9uOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIENv
bW1pdEluZm8oc3ZuX3JldmlzaW9uLCAiZXJpY0B3ZWJraXQub3JnIiwgewotICAgICAgICAgICAg
ImJ1Z19pZCI6IDUwMDAwLAotICAgICAgICAgICAgImF1dGhvcl9uYW1lIjogIkFkYW0gQmFydGgi
LAotICAgICAgICAgICAgImF1dGhvcl9lbWFpbCI6ICJhYmFydGhAd2Via2l0Lm9yZyIsCi0gICAg
ICAgICAgICAiYXV0aG9yIjogc2VsZi5fY29tbWl0dGVyX2xpc3QuY29udHJpYnV0b3JfYnlfZW1h
aWwoImFiYXJ0aEB3ZWJraXQub3JnIiksCi0gICAgICAgICAgICAicmV2aWV3ZXJfdGV4dCI6ICJE
YXJpbiBBZGxlciIsCi0gICAgICAgICAgICAicmV2aWV3ZXIiOiBzZWxmLl9jb21taXR0ZXJfbGlz
dC5jb21taXR0ZXJfYnlfbmFtZSgiRGFyaW4gQWRsZXIiKSwKLSAgICAgICAgICAgICJjaGFuZ2Vk
X2ZpbGVzIjogWwotICAgICAgICAgICAgICAgICJwYXRoL3RvL2ZpbGUiLAotICAgICAgICAgICAg
ICAgICJhbm90aGVyL2ZpbGUiLAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSkKLQotICAgIGRl
ZiBpc19wYXRoX3RvX2NoYW5nZWxvZyhzZWxmLCBwYXRoKToKLSAgICAgICAgcmV0dXJuIG9zLnBh
dGguYmFzZW5hbWUocGF0aCkgPT0gIkNoYW5nZUxvZyIKLQotICAgIGRlZiBidWdfaWRfZm9yX3Jl
dmlzaW9uKHNlbGYsIHN2bl9yZXZpc2lvbik6Ci0gICAgICAgIHJldHVybiAxMjM0NQotCi0gICAg
ZGVmIHJlY2VudF9jb21taXRfaW5mb3NfZm9yX2ZpbGVzKHNlbGYsIHBhdGhzKToKLSAgICAgICAg
cmV0dXJuIFtzZWxmLmNvbW1pdF9pbmZvX2Zvcl9yZXZpc2lvbigzMildCi0KLSAgICBkZWYgbW9k
aWZpZWRfY2hhbmdlbG9ncyhzZWxmLCBnaXRfY29tbWl0LCBjaGFuZ2VkX2ZpbGVzPU5vbmUpOgot
ICAgICAgICAjIElkZWFsbHkgd2UnZCByZXR1cm4gc29tZXRoaW5nIG1vcmUgaW50ZXJlc3Rpbmcg
aGVyZS4gIFRoZSBwcm9ibGVtIGlzCi0gICAgICAgICMgdGhhdCBMYW5kRGlmZiB3aWxsIHRyeSB0
byBhY3R1YWxseSByZWFkIHRoZSBwYXRjaCBmcm9tIGRpc2shCi0gICAgICAgIHJldHVybiBbXQot
Ci0gICAgZGVmIGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0
LCBjaGFuZ2VkX2ZpbGVzPU5vbmUpOgotICAgICAgICByZXR1cm4gTW9ja0NvbW1pdE1lc3NhZ2Uo
KQotCi0gICAgZGVmIGNocm9taXVtX2RlcHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBNb2NrREVQ
UygpCi0KLSAgICBkZWYgYXBwbHlfcGF0Y2goc2VsZiwgcGF0Y2gsIGZvcmNlPUZhbHNlKToKLSAg
ICAgICAgcGFzcwotCi0gICAgZGVmIGFwcGx5X3JldmVyc2VfZGlmZnMoc2VsZiwgcmV2aXNpb24p
OgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgc3VnZ2VzdGVkX3Jldmlld2VycyhzZWxmLCBnaXRf
Y29tbWl0LCBjaGFuZ2VkX2ZpbGVzPU5vbmUpOgotICAgICAgICByZXR1cm4gW19tb2NrX3Jldmll
d2Vyc1swXV0KLQotCi1jbGFzcyBNb2NrVXNlcihvYmplY3QpOgotCi0gICAgQGNsYXNzbWV0aG9k
Ci0gICAgZGVmIHByb21wdChjbHMsIG1lc3NhZ2UsIHJlcGVhdD0xLCByYXdfaW5wdXQ9cmF3X2lu
cHV0KToKLSAgICAgICAgcmV0dXJuICJNb2NrIHVzZXIgcmVzcG9uc2UiCi0KLSAgICBAY2xhc3Nt
ZXRob2QKLSAgICBkZWYgcHJvbXB0X3dpdGhfbGlzdChjbHMsIGxpc3RfdGl0bGUsIGxpc3RfaXRl
bXMsIGNhbl9jaG9vc2VfbXVsdGlwbGU9RmFsc2UsIHJhd19pbnB1dD1yYXdfaW5wdXQpOgotICAg
ICAgICBwYXNzCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYub3BlbmVk
X3VybHMgPSBbXQotCi0gICAgZGVmIGVkaXQoc2VsZiwgZmlsZXMpOgotICAgICAgICBwYXNzCi0K
LSAgICBkZWYgZWRpdF9jaGFuZ2Vsb2coc2VsZiwgZmlsZXMpOgotICAgICAgICBwYXNzCi0KLSAg
ICBkZWYgcGFnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGNvbmZp
cm0oc2VsZiwgbWVzc2FnZT1Ob25lLCBkZWZhdWx0PSd5Jyk6Ci0gICAgICAgIGxvZyhtZXNzYWdl
KQotICAgICAgICByZXR1cm4gZGVmYXVsdCA9PSAneScKLQotICAgIGRlZiBjYW5fb3Blbl91cmwo
c2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgb3Blbl91cmwoc2VsZiwgdXJs
KToKLSAgICAgICAgc2VsZi5vcGVuZWRfdXJscy5hcHBlbmQodXJsKQotICAgICAgICBpZiB1cmwu
c3RhcnRzd2l0aCgiZmlsZTovLyIpOgotICAgICAgICAgICAgbG9nKCJNT0NLOiB1c2VyLm9wZW5f
dXJsOiBmaWxlOi8vLi4uIikKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBsb2coIk1PQ0s6
IHVzZXIub3Blbl91cmw6ICVzIiAlIHVybCkKLQotCi1jbGFzcyBNb2NrSVJDKG9iamVjdCk6Ci0K
LSAgICBkZWYgcG9zdChzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgbG9nKCJNT0NLOiBpcmMucG9z
dDogJXMiICUgbWVzc2FnZSkKLQotICAgIGRlZiBkaXNjb25uZWN0KHNlbGYpOgotICAgICAgICBs
b2coIk1PQ0s6IGlyYy5kaXNjb25uZWN0IikKLQotCi1jbGFzcyBNb2NrU3RhdHVzU2VydmVyKG9i
amVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgYm90X2lkPU5vbmUsIHdvcmtfaXRlbXM9
Tm9uZSk6Ci0gICAgICAgIHNlbGYuaG9zdCA9ICJleGFtcGxlLmNvbSIKLSAgICAgICAgc2VsZi5i
b3RfaWQgPSBib3RfaWQKLSAgICAgICAgc2VsZi5fd29ya19pdGVtcyA9IHdvcmtfaXRlbXMgb3Ig
W10KLQotICAgIGRlZiBwYXRjaF9zdGF0dXMoc2VsZiwgcXVldWVfbmFtZSwgcGF0Y2hfaWQpOgot
ICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIHN2bl9yZXZpc2lvbihzZWxmLCBzdm5fcmV2
aXNpb24pOgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIG5leHRfd29ya19pdGVtKHNl
bGYsIHF1ZXVlX25hbWUpOgotICAgICAgICBpZiBub3Qgc2VsZi5fd29ya19pdGVtczoKLSAgICAg
ICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBzZWxmLl93b3JrX2l0ZW1zLnBvcCgw
KQotCi0gICAgZGVmIHJlbGVhc2Vfd29ya19pdGVtKHNlbGYsIHF1ZXVlX25hbWUsIHBhdGNoKToK
LSAgICAgICAgbG9nKCJNT0NLOiByZWxlYXNlX3dvcmtfaXRlbTogJXMgJXMiICUgKHF1ZXVlX25h
bWUsIHBhdGNoLmlkKCkpKQotCi0gICAgZGVmIHVwZGF0ZV93b3JrX2l0ZW1zKHNlbGYsIHF1ZXVl
X25hbWUsIHdvcmtfaXRlbXMpOgotICAgICAgICBzZWxmLl93b3JrX2l0ZW1zID0gd29ya19pdGVt
cwotICAgICAgICBsb2coIk1PQ0s6IHVwZGF0ZV93b3JrX2l0ZW1zOiAlcyAlcyIgJSAocXVldWVf
bmFtZSwgd29ya19pdGVtcykpCi0KLSAgICBkZWYgc3VibWl0X3RvX2V3cyhzZWxmLCBwYXRjaF9p
ZCk6Ci0gICAgICAgIGxvZygiTU9DSzogc3VibWl0X3RvX2V3czogJXMiICUgKHBhdGNoX2lkKSkK
LQotICAgIGRlZiB1cGRhdGVfc3RhdHVzKHNlbGYsIHF1ZXVlX25hbWUsIHN0YXR1cywgcGF0Y2g9
Tm9uZSwgcmVzdWx0c19maWxlPU5vbmUpOgotICAgICAgICBsb2coIk1PQ0s6IHVwZGF0ZV9zdGF0
dXM6ICVzICVzIiAlIChxdWV1ZV9uYW1lLCBzdGF0dXMpKQotICAgICAgICByZXR1cm4gMTg3Ci0K
LSAgICBkZWYgdXBkYXRlX3N2bl9yZXZpc2lvbihzZWxmLCBzdm5fcmV2aXNpb24sIGJyb2tlbl9i
b3QpOgotICAgICAgICByZXR1cm4gMTkxCi0KLSAgICBkZWYgcmVzdWx0c191cmxfZm9yX3N0YXR1
cyhzZWxmLCBzdGF0dXNfaWQpOgotICAgICAgICByZXR1cm4gImh0dHA6Ly9kdW1teV91cmwiCi0K
LQotIyBGSVhNRTogVW5pZnkgd2l0aCBjb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrLk1vY2tF
eGVjdXRpdmUuCi1jbGFzcyBNb2NrRXhlY3V0aXZlKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHNob3VsZF9sb2c9RmFsc2UsIHNob3VsZF90aHJvdz1GYWxzZSwgc2hvdWxkX3Rocm93
X3doZW5fcnVuPU5vbmUpOgotICAgICAgICBzZWxmLl9zaG91bGRfbG9nID0gc2hvdWxkX2xvZwot
ICAgICAgICBzZWxmLl9zaG91bGRfdGhyb3cgPSBzaG91bGRfdGhyb3cKLSAgICAgICAgc2VsZi5f
c2hvdWxkX3Rocm93X3doZW5fcnVuID0gc2hvdWxkX3Rocm93X3doZW5fcnVuIG9yIHNldCgpCi0g
ICAgICAgICMgRklYTUU6IE9uY2UgZXhlY3V0aXZlIHdyYXBzIG9zLmdldHBpZCgpIHdlIGNhbiBq
dXN0IHVzZSBhIHN0YXRpYyBwaWQgZm9yICJ0aGlzIiBwcm9jZXNzLgotICAgICAgICBzZWxmLl9y
dW5uaW5nX3BpZHMgPSBbb3MuZ2V0cGlkKCldCi0KLSAgICBkZWYgY2hlY2tfcnVubmluZ19waWQo
c2VsZiwgcGlkKToKLSAgICAgICAgcmV0dXJuIHBpZCBpbiBzZWxmLl9ydW5uaW5nX3BpZHMKLQot
ICAgIGRlZiBydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZiwgYXJncywgcXVpZXQ9RmFsc2UsIGN3
ZD1Ob25lKToKLSAgICAgICAgaWYgc2VsZi5fc2hvdWxkX2xvZzoKLSAgICAgICAgICAgIGxvZygi
TU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6ICVzLCBjd2Q9JXMiICUgKGFyZ3MsIGN3ZCkpCi0g
ICAgICAgIGlmIHNlbGYuX3Nob3VsZF90aHJvd193aGVuX3J1bi5pbnRlcnNlY3Rpb24oYXJncyk6
Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiRXhjZXB0aW9uIGZvciAlcyIgJSBhcmdz
KQotICAgICAgICByZXR1cm4gIk1PQ0sgb3V0cHV0IG9mIGNoaWxkIHByb2Nlc3MiCi0KLSAgICBk
ZWYgcnVuX2NvbW1hbmQoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgYXJncywKLSAgICAgICAg
ICAgICAgICAgICAgY3dkPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgIGlucHV0PU5vbmUsCi0g
ICAgICAgICAgICAgICAgICAgIGVycm9yX2hhbmRsZXI9Tm9uZSwKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3N0
ZGVycj1UcnVlLAotICAgICAgICAgICAgICAgICAgICBkZWNvZGVfb3V0cHV0PUZhbHNlKToKLSAg
ICAgICAgaWYgc2VsZi5fc2hvdWxkX2xvZzoKLSAgICAgICAgICAgIGxvZygiTU9DSyBydW5fY29t
bWFuZDogJXMsIGN3ZD0lcyIgJSAoYXJncywgY3dkKSkKLSAgICAgICAgaWYgc2VsZi5fc2hvdWxk
X3Rocm93OgotICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IoIk1PQ0sgU2NyaXB0RXJyb3Ii
KQotICAgICAgICByZXR1cm4gIk1PQ0sgb3V0cHV0IG9mIGNoaWxkIHByb2Nlc3MiCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiAKIAogY2xhc3MgTW9ja09w
dGlvbnMob2JqZWN0KToKQEAgLTc2OCwxMzkgKzQzLDYgQEAgY2xhc3MgTW9ja09wdGlvbnMob2Jq
ZWN0KToKICAgICAgICAgICAgIHNlbGYuX19kaWN0X19ba2V5XSA9IHZhbHVlCiAKIAotY2xhc3Mg
TW9ja1BvcnQob2JqZWN0KToKLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuICJN
b2NrUG9ydCIKLQotICAgIGRlZiBsYXlvdXRfdGVzdHNfcmVzdWx0c19wYXRoKHNlbGYpOgotICAg
ICAgICByZXR1cm4gIi9tb2NrLXJlc3VsdHMvcmVzdWx0cy5odG1sIgotCi0gICAgZGVmIGNoZWNr
X3dlYmtpdF9zdHlsZV9jb21tYW5kKHNlbGYpOgotICAgICAgICByZXR1cm4gWyJtb2NrLWNoZWNr
LXdlYmtpdC1zdHlsZSJdCi0KLSAgICBkZWYgdXBkYXRlX3dlYmtpdF9jb21tYW5kKHNlbGYpOgot
ICAgICAgICByZXR1cm4gWyJtb2NrLXVwZGF0ZS13ZWJraXQiXQotCi0gICAgZGVmIGJ1aWxkX3dl
YmtpdF9jb21tYW5kKHNlbGYsIGJ1aWxkX3N0eWxlPU5vbmUpOgotICAgICAgICByZXR1cm4gWyJt
b2NrLWJ1aWxkLXdlYmtpdCJdCi0KLSAgICBkZWYgcHJlcGFyZV9jaGFuZ2Vsb2dfY29tbWFuZChz
ZWxmKToKLSAgICAgICAgcmV0dXJuIFsnbW9jay1wcmVwYXJlLUNoYW5nZUxvZyddCi0KLSAgICBk
ZWYgcnVuX3B5dGhvbl91bml0dGVzdHNfY29tbWFuZChzZWxmKToKLSAgICAgICAgcmV0dXJuIFsn
bW9jay10ZXN0LXdlYmtpdHB5J10KLQotICAgIGRlZiBydW5fcGVybF91bml0dGVzdHNfY29tbWFu
ZChzZWxmKToKLSAgICAgICAgcmV0dXJuIFsnbW9jay10ZXN0LXdlYmtpdHBlcmwnXQotCi0gICAg
ZGVmIHJ1bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5kKHNlbGYpOgotICAgICAgICByZXR1
cm4gWydtb2NrLXJ1bi1qYXZhY3JpcHRjb3JlLXRlc3RzJ10KLQotICAgIGRlZiBydW5fd2Via2l0
X3Rlc3RzX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJldHVybiBbJ21vY2stcnVuLXdlYmtpdC10
ZXN0cyddCi0KLQotY2xhc3MgTW9ja1Rlc3RQb3J0MShvYmplY3QpOgotICAgIGRlZiBza2lwc19s
YXlvdXRfdGVzdChzZWxmLCB0ZXN0X25hbWUpOgotICAgICAgICByZXR1cm4gdGVzdF9uYW1lIGlu
IFsibWVkaWEvZm9vL2Jhci5odG1sIiwgImZvbyJdCi0KLQotY2xhc3MgTW9ja1Rlc3RQb3J0Mihv
YmplY3QpOgotICAgIGRlZiBza2lwc19sYXlvdXRfdGVzdChzZWxmLCB0ZXN0X25hbWUpOgotICAg
ICAgICByZXR1cm4gdGVzdF9uYW1lID09ICJtZWRpYS9mb28vYmFyLmh0bWwiCi0KLQotY2xhc3Mg
TW9ja1BvcnRGYWN0b3J5KG9iamVjdCk6Ci0gICAgZGVmIGdldF9hbGwoc2VsZiwgb3B0aW9ucz1O
b25lKToKLSAgICAgICAgcmV0dXJuIHsidGVzdF9wb3J0MSI6IE1vY2tUZXN0UG9ydDEoKSwgInRl
c3RfcG9ydDIiOiBNb2NrVGVzdFBvcnQyKCl9Ci0KLQotY2xhc3MgTW9ja1BsYXRmb3JtSW5mbyhv
YmplY3QpOgotICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAiTW9j
a1BsYXRmb3JtIDEuMCIKLQotCi1jbGFzcyBNb2NrV2F0Y2hMaXN0KG9iamVjdCk6Ci0gICAgZGVm
IGRldGVybWluZV9jY19hbmRfbWVzc2FnZXMoc2VsZiwgZGlmZik6Ci0gICAgICAgIGxvZygiTW9j
a1dhdGNoTGlzdDogZGV0ZXJtaW5lX2NjX2FuZF9tZXNzYWdlcyIpCi0gICAgICAgIHJldHVybiB7
J2NjX2xpc3QnOiBbJ2FiYXJ0aEB3ZWJraXQub3JnJywgJ2VyaWNAd2Via2l0Lm9yZycsICdsZXZp
bkBjaHJvbWl1bS5vcmcnXSwgJ21lc3NhZ2VzJzogWydNZXNzYWdlMS4nLCAnTWVzc2FnZTIuJ10s
IH0KLQotCi1jbGFzcyBNb2NrV29ya3NwYWNlKG9iamVjdCk6Ci0gICAgZGVmIGZpbmRfdW51c2Vk
X2ZpbGVuYW1lKHNlbGYsIGRpcmVjdG9yeSwgbmFtZSwgZXh0ZW5zaW9uLCBzZWFyY2hfbGltaXQ9
MTApOgotICAgICAgICByZXR1cm4gIiVzLyVzLiVzIiAlIChkaXJlY3RvcnksIG5hbWUsIGV4dGVu
c2lvbikKLQotICAgIGRlZiBjcmVhdGVfemlwKHNlbGYsIHppcF9wYXRoLCBzb3VyY2VfcGF0aCk6
Ci0gICAgICAgIHJldHVybiBvYmplY3QoKSAgIyBTb21ldGhpbmcgdGhhdCBpcyBub3QgTm9uZQot
Ci0KLWNsYXNzIE1vY2tXZWIob2JqZWN0KToKLSAgICBkZWYgZ2V0X2JpbmFyeShzZWxmLCB1cmws
IGNvbnZlcnRfNDA0X3RvX05vbmU9RmFsc2UpOgotICAgICAgICByZXR1cm4gIk1PQ0sgV2ViIHJl
c3VsdCwgY29udmVydCA0MDQgdG8gTm9uZT0lcyIgJSBjb252ZXJ0XzQwNF90b19Ob25lCi0KLQot
Y2xhc3MgTW9ja0hvc3Qob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nX2V4ZWN1
dGl2ZT1GYWxzZSwgZXhlY3V0aXZlX3Rocm93c193aGVuX3J1bj1Ob25lKToKLSAgICAgICAgc2Vs
Zi53YWtldXBfZXZlbnQgPSB0aHJlYWRpbmcuRXZlbnQoKQotICAgICAgICBzZWxmLmJ1Z3MgPSBN
b2NrQnVnemlsbGEoKQotICAgICAgICBzZWxmLmJ1aWxkYm90ID0gTW9ja0J1aWxkQm90KCkKLSAg
ICAgICAgc2VsZi5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9bG9nX2V4ZWN1
dGl2ZSwgc2hvdWxkX3Rocm93X3doZW5fcnVuPWV4ZWN1dGl2ZV90aHJvd3Nfd2hlbl9ydW4pCi0g
ICAgICAgIHNlbGYud2ViID0gTW9ja1dlYigpCi0gICAgICAgIHNlbGYud29ya3NwYWNlID0gTW9j
a1dvcmtzcGFjZSgpCi0gICAgICAgIHNlbGYuX2lyYyA9IE5vbmUKLSAgICAgICAgc2VsZi51c2Vy
ID0gTW9ja1VzZXIoKQotICAgICAgICBzZWxmLl9zY20gPSBNb2NrU0NNKCkKLSAgICAgICAgc2Vs
Zi5fY2hyb21pdW1fYnVpbGRib3QgPSBNb2NrQnVpbGRCb3QoKQotICAgICAgICAjIFZhcmlvdXMg
cGllY2VzIG9mIGNvZGUgKHdyb25nbHkpIGNhbGwgZmlsZXN5c3RlbS5jaGRpcihjaGVja291dF9y
b290KS4KLSAgICAgICAgIyBNYWtpbmcgdGhlIGNoZWNrb3V0X3Jvb3QgZXhpc3QgaW4gdGhlIG1v
Y2sgZmlsZXN5c3RlbSBtYWtlcyB0aGF0IGNoZGlyIG5vdCByYWlzZS4KLSAgICAgICAgc2VsZi5m
aWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oZGlycz1zZXQoW3NlbGYuX3NjbS5jaGVja291dF9y
b290XSkpCi0gICAgICAgIHNlbGYuX3BvcnQgPSBNb2NrUG9ydCgpCi0gICAgICAgIHNlbGYuX2No
ZWNrb3V0ID0gTW9ja0NoZWNrb3V0KCkKLSAgICAgICAgc2VsZi5zdGF0dXNfc2VydmVyID0gTW9j
a1N0YXR1c1NlcnZlcigpCi0gICAgICAgIHNlbGYuaXJjX3Bhc3N3b3JkID0gIk1PQ0sgaXJjIHBh
c3N3b3JkIgotICAgICAgICBzZWxmLnBvcnRfZmFjdG9yeSA9IE1vY2tQb3J0RmFjdG9yeSgpCi0g
ICAgICAgIHNlbGYucGxhdGZvcm0gPSBNb2NrUGxhdGZvcm1JbmZvKCkKLSAgICAgICAgc2VsZi5f
d2F0Y2hfbGlzdCA9IE1vY2tXYXRjaExpc3QoKQotCi0gICAgZGVmIHNjbShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX3NjbQotCi0gICAgZGVmIGNoZWNrb3V0KHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc2VsZi5fY2hlY2tvdXQKLQotICAgIGRlZiBwb3J0KHNlbGYpOgotICAgICAgICByZXR1
cm4gc2VsZi5fcG9ydAotCi0gICAgZGVmIGNocm9taXVtX2J1aWxkYm90KHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi5fY2hyb21pdW1fYnVpbGRib3QKLQotICAgIGRlZiB3YXRjaF9saXN0KHNl
bGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fd2F0Y2hfbGlzdAotCi0gICAgZGVmIGVuc3VyZV9p
cmNfY29ubmVjdGVkKHNlbGYsIGRlbGVnYXRlKToKLSAgICAgICAgaWYgbm90IHNlbGYuX2lyYzoK
LSAgICAgICAgICAgIHNlbGYuX2lyYyA9IE1vY2tJUkMoKQotCi0gICAgZGVmIGlyYyhzZWxmKToK
LSAgICAgICAgcmV0dXJuIHNlbGYuX2lyYwotCi0KIGNsYXNzIE1vY2tUb29sKE1vY2tIb3N0KToK
ICAgICBkZWYgcGF0aChzZWxmKToKICAgICAgICAgcmV0dXJuICJlY2hvIgotCi0KLWNsYXNzIE1v
Y2tCcm93c2VyKG9iamVjdCk6Ci0gICAgcGFyYW1zID0ge30KLQotICAgIGRlZiBvcGVuKHNlbGYs
IHVybCk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBzZWxlY3RfZm9ybShzZWxmLCBuYW1lKToK
LSAgICAgICAgcGFzcwotCi0gICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgot
ICAgICAgICBzZWxmLnBhcmFtc1trZXldID0gdmFsdWUKLQotICAgIGRlZiBzdWJtaXQoc2VsZik6
Ci0gICAgICAgIHJldHVybiBTdHJpbmdJTy5TdHJpbmdJTygpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXJfdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXJfdW5p
dHRlc3QucHkKaW5kZXggY2EwNzIzOGViYTMzNTgwZDJkMTM2M2I0MmM2NDg0Nzg3NWRlMTE2YS4u
NjdkYjdjZDYyNzNhOGMyNzFjNmNkMzc2MzA1ZDFkYWNkY2RiODZmNyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3Nl
cnZlcl91bml0dGVzdC5weQpAQCAtMzgsNyArMzgsOCBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgZmFjdG9yeQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS50aGly
ZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKLWZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBv
cnQgTW9ja1Rvb2wsIE1vY2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBp
bXBvcnQgTW9ja1Rvb2wKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9j
ayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS50b29sLnNlcnZlcnMuZ2FyZGVu
aW5nc2VydmVyIGltcG9ydCAqCiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlcl91bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXJfdW5pdHRlc3QucHkKaW5k
ZXggNWU4YmI1N2QzMTk2NTdkMzhhNGI4NjAzMjAyNGVkNjQ5OWJjM2JhZS4uODAwM2QwNTllOGI0
MmNkZGI0MzA3MzAxNzIxYjk1YWY5ODhlZjdhYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlcl91bml0dGVzdC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0
ZXN0LnB5CkBAIC0zOSw3ICszOSw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBv
cnQgZmlsZXN5c3RlbV9tb2NrCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFj
a2FnZS5qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yIGltcG9ydCBzdHJpcF9qc29uX3dyYXBwZXIKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQud2Via2l0IGltcG9ydCBXZWJLaXRQb3J0CiBm
cm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMucmViYXNlbGluZXNlcnZlciBpbXBvcnQgVGVzdENv
bmZpZywgUmViYXNlbGluZVNlcnZlcgotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9y
dCBNb2NrU0NNCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtX21vY2sgaW1w
b3J0IE1vY2tTQ00KIGZyb20gd2Via2l0cHkudG9vbC5zZXJ2ZXJzIGltcG9ydCByZWJhc2VsaW5l
c2VydmVyCiAKIAo=
</data>
<flag name="review"
          id="111797"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="111798"
          type_id="3"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>