<?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>56870</bug_id>
          
          <creation_ts>2011-03-22 15:14:44 -0700</creation_ts>
          <short_desc>Add GYP to Source/ThirdParty</short_desc>
          <delta_ts>2011-03-22 15:37:10 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>55018</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>371702</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-03-22 15:14:44 -0700</bug_when>
    <thetext>Add GYP to Source/ThirdParty</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371704</commentid>
    <comment_count>1</comment_count>
      <attachid>86517</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-03-22 15:17:23 -0700</bug_when>
    <thetext>Created attachment 86517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371709</commentid>
    <comment_count>2</comment_count>
      <attachid>86517</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-22 15:23:09 -0700</bug_when>
    <thetext>Comment on attachment 86517
Patch

LGTM.

We could autoinstall this, but this will be more compatible with Apple&apos;s submission process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371730</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-03-22 15:37:10 -0700</bug_when>
    <thetext>Committed r81709: &lt;http://trac.webkit.org/changeset/81709&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86517</attachid>
            <date>2011-03-22 15:17:23 -0700</date>
            <delta_ts>2011-03-22 15:23:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56870-20110322151720.patch</filename>
            <type>text/plain</type>
            <size>1217599</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE3MDYKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCAzOTdkYjFlNWFlMDExMmZjNTVkOTBkMmE4OGRmNDUxY2NhMzI2ZmJiLi4wNTdi
ZTA0ZTg4MjhkZjA2MjNlMTMzNzE5ZjVmMmE1OWIxMWFmOWY4IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAyIEBACisyMDExLTAzLTIyICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEdZUCB0byBTb3VyY2UvVGhpcmRQYXJ0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY4NzAKKworICAgICAgICBX
ZSBwcm9iYWJseSBkb24ndCBuZWVkIGFsbCB0aGUgdGVzdCBmaWxlcywgYnV0IGl0IHNlZW1zIGNs
ZWFuZXIgdG8ganVzdAorICAgICAgICBjaGVjayBpbiB0aGUgd2hvbGUgR1lQIHRyZWUuICBHWVAg
aXMgQlNEIGxpY2Vuc2VkLCBzbyBpdCBpcyBjb21wYXRpYmxlCisgICAgICAgIHdpdGggdGhlIFdl
YktpdCBsaWNlbnNlLgorCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL0FVVEhPUlM6
IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC9ERVBTOiBBZGRlZC4KKyAg
ICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvTElDRU5TRTogQWRkZWQuCisgICAgICAgICog
U291cmNlL1RoaXJkUGFydHkvZ3lwL01BTklGRVNUOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvUFJFU1VCTUlULnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhp
cmRQYXJ0eS9neXAvUkVBRE1FLldlYktpdDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJk
UGFydHkvZ3lwL2NvZGVyZXZpZXcuc2V0dGluZ3M6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9U
aGlyZFBhcnR5L2d5cC9neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5
cC9neXAuYmF0OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvZ3lwX2R1
bW15LmM6IEFkZGVkLgorICAgICAgICAobWFpbik6CisgICAgICAgICogU291cmNlL1RoaXJkUGFy
dHkvZ3lwL2d5cHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5
cC9weWxpYi9neXAvTVNWU05ldy5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3B5bGliL2d5cC9NU1ZTUHJvamVjdC5weTogQWRkZWQuCisgICAgICAgICogU291cmNl
L1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9NU1ZTU2V0dGluZ3MucHk6IEFkZGVkLgorICAgICAg
ICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvTVNWU1NldHRpbmdzX3Rlc3QucHk6
IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvTVNWU1Rv
b2xGaWxlLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIv
Z3lwL01TVlNVc2VyRmlsZS5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkv
Z3lwL3B5bGliL2d5cC9NU1ZTVmVyc2lvbi5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3B5bGliL2d5cC9TQ29ucy5weTogQWRkZWQuCisgICAgICAgICogU291cmNl
L1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9fX2luaXRfXy5weTogQWRkZWQuCisgICAgICAgICog
U291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9jb21tb24ucHk6IEFkZGVkLgorICAgICAg
ICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvZWFzeV94bWwucHk6IEFkZGVkLgor
ICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvZWFzeV94bWxfdGVzdC5w
eTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9nZW5l
cmF0b3IvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5
cC9weWxpYi9neXAvZ2VuZXJhdG9yL2d5cGQucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9U
aGlyZFBhcnR5L2d5cC9weWxpYi9neXAvZ2VuZXJhdG9yL2d5cHNoLnB5OiBBZGRlZC4KKyAgICAg
ICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIvZ3lwL2dlbmVyYXRvci9tYWtlLnB5OiBB
ZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIvZ3lwL2dlbmVyYXRv
ci9tc3ZzLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIv
Z3lwL2dlbmVyYXRvci9zY29ucy5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3B5bGliL2d5cC9nZW5lcmF0b3IveGNvZGUucHk6IEFkZGVkLgorICAgICAgICAqIFNv
dXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvaW5wdXQucHk6IEFkZGVkLgorICAgICAgICAq
IFNvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvc3lzdGVtX3Rlc3QucHk6IEFkZGVkLgor
ICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAveGNvZGVwcm9qX2ZpbGUu
cHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAveG1s
X2ZpeC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3NhbXBsZXMv
c2FtcGxlczogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3NhbXBsZXMv
c2FtcGxlcy5iYXQ6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC9zZXR1
cC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9u
cy1iYXJlL2d5cHRlc3QtYmFyZS5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvYWN0aW9ucy1iYXJlL3NyYy9iYXJlLmd5cDogQWRkZWQuCisgICAgICAgICog
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy1iYXJlL3NyYy9iYXJlLnB5OiBBZGRl
ZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zLW11bHRpcGxl
L2d5cHRlc3QtYWxsLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9hY3Rpb25zLW11bHRpcGxlL3NyYy9hY3Rpb25zLmd5cDogQWRkZWQuCisgICAgICAgICog
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy1tdWx0aXBsZS9zcmMvY29weS5weTog
QWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy1tdWx0
aXBsZS9zcmMvZmlsdGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9hY3Rpb25zLW11bHRpcGxlL3NyYy9mb28uYzogQWRkZWQuCisgICAgICAgIChmb28p
OgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMtbXVsdGlwbGUv
c3JjL2lucHV0LnR4dDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvYWN0aW9ucy1tdWx0aXBsZS9zcmMvbWFpbi5jOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgor
ICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMtc3ViZGlyL2d5cHRl
c3QtYWN0aW9uLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9hY3Rpb25zLXN1YmRpci9zcmMvbWFrZS1maWxlLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zLXN1YmRpci9zcmMvbm9uZS5neXA6IEFkZGVk
LgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMtc3ViZGlyL3Ny
Yy9zdWJkaXIvbWFrZS1zdWJkaXItZmlsZS5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy1zdWJkaXIvc3JjL3N1YmRpci9zdWJkaXIuZ3lwOiBB
ZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zL2d5cHRl
c3QtYWxsLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9h
Y3Rpb25zL2d5cHRlc3QtZGVmYXVsdC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy9neXB0ZXN0LWVycm9ycy5weTogQWRkZWQuCisgICAgICAg
ICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy9zcmMvYWN0aW9uX21pc3Npbmdf
bmFtZS5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Fj
dGlvbnMvc3JjL2FjdGlvbnMuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9hY3Rpb25zL3NyYy9jb25maXJtLWRlcC1maWxlcy5weTogQWRkZWQuCisgICAg
ICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy9zcmMvc3ViZGlyMS9jb3Vu
dGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rp
b25zL3NyYy9zdWJkaXIxL2V4ZWN1dGFibGUuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zL3NyYy9zdWJkaXIxL21ha2UtcHJvZzEucHk6IEFk
ZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMvc3JjL3N1
YmRpcjEvbWFrZS1wcm9nMi5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvYWN0aW9ucy9zcmMvc3ViZGlyMS9wcm9ncmFtLmM6IEFkZGVkLgorICAgICAgICAo
bWFpbik6CisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy9zcmMv
c3ViZGlyMi9tYWtlLWZpbGUucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2FjdGlvbnMvc3JjL3N1YmRpcjIvbm9uZS5neXA6IEFkZGVkLgorICAgICAgICAq
IFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMvc3JjL3N1YmRpcjMvZ2VuZXJhdGVf
bWFpbi5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0
aW9ucy9zcmMvc3ViZGlyMy9udWxsX2lucHV0Lmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWRkaXRpb25hbC10YXJnZXRzL2d5cHRlc3QtYWRkaXRpb25h
bC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWRkaXRp
b25hbC10YXJnZXRzL3NyYy9hbGwuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9hZGRpdGlvbmFsLXRhcmdldHMvc3JjL2RpcjEvYWN0aW9ucy5neXA6IEFk
ZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FkZGl0aW9uYWwtdGFy
Z2V0cy9zcmMvZGlyMS9lbWl0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9hZGRpdGlvbmFsLXRhcmdldHMvc3JjL2RpcjEvbGliMS5jOiBBZGRlZC4KKyAg
ICAgICAgKGZ1bmMxKToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hc3Nl
bWJseS9neXB0ZXN0LWFzc2VtYmx5LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9hc3NlbWJseS9zcmMvYXMuYmF0OiBBZGRlZC4KKyAgICAgICAgKiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hc3NlbWJseS9zcmMvYXNzZW1ibHkuZ3lwOiBBZGRlZC4K
KyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hc3NlbWJseS9zcmMvbGliMS5T
OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hc3NlbWJseS9z
cmMvbGliMS5jOiBBZGRlZC4KKyAgICAgICAgKGxpYjFfZnVuY3Rpb24pOgorICAgICAgICAqIFNv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Fzc2VtYmx5L3NyYy9wcm9ncmFtLmM6IEFkZGVkLgor
ICAgICAgICAobWFpbik6CisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVp
bGRkaXIvZ3lwdGVzdC1hbGwucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2J1aWxkZGlyL2d5cHRlc3QtZGVmYXVsdC5weTogQWRkZWQuCisgICAgICAgICog
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVpbGRkaXIvc3JjL2J1aWxkZGlyLmd5cGk6IEFk
ZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL3NyYy9m
dW5jMS5jOiBBZGRlZC4KKyAgICAgICAgKGZ1bmMxKToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvZnVuYzIuYzogQWRkZWQuCisgICAgICAgIChmdW5j
Mik6CisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVpbGRkaXIvc3JjL2Z1
bmMzLmM6IEFkZGVkLgorICAgICAgICAoZnVuYzMpOgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L2J1aWxkZGlyL3NyYy9mdW5jNC5jOiBBZGRlZC4KKyAgICAgICAgKGZ1bmM0
KToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvZnVu
YzUuYzogQWRkZWQuCisgICAgICAgIChmdW5jNSk6CisgICAgICAgICogU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvYnVpbGRkaXIvc3JjL3Byb2cxLmM6IEFkZGVkLgorICAgICAgICAobWFpbik6
CisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVpbGRkaXIvc3JjL3Byb2cx
Lmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVpbGRk
aXIvc3JjL3N1YmRpcjIvcHJvZzIuYzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAg
KiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvc3ViZGlyMi9wcm9nMi5n
eXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGly
L3NyYy9zdWJkaXIyL3N1YmRpcjMvcHJvZzMuYzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvc3ViZGlyMi9z
dWJkaXIzL3Byb2czLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvYnVpbGRkaXIvc3JjL3N1YmRpcjIvc3ViZGlyMy9zdWJkaXI0L3Byb2c0LmM6IEFkZGVk
LgorICAgICAgICAobWFpbik6CisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
YnVpbGRkaXIvc3JjL3N1YmRpcjIvc3ViZGlyMy9zdWJkaXI0L3Byb2c0Lmd5cDogQWRkZWQuCisg
ICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVpbGRkaXIvc3JjL3N1YmRpcjIv
c3ViZGlyMy9zdWJkaXI0L3N1YmRpcjUvcHJvZzUuYzogQWRkZWQuCisgICAgICAgIChtYWluKToK
KyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvc3ViZGly
Mi9zdWJkaXIzL3N1YmRpcjQvc3ViZGlyNS9wcm9nNS5neXA6IEFkZGVkLgorICAgICAgICAqIFNv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NmbGFncy9jZmxhZ3MuYzogQWRkZWQuCisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jZmxhZ3MvY2Zs
YWdzLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY2Zs
YWdzL2d5cHRlc3QtY2ZsYWdzLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9jb21waWxhYmxlL2d5cHRlc3QtaGVhZGVycy5weTogQWRkZWQuCisgICAgICAg
ICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29tcGlsYWJsZS9zcmMvaGVhZGVycy5neXA6
IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbXBpbGFibGUv
c3JjL2xpYjEuY3BwOiBBZGRlZC4KKyAgICAgICAgKGxpYjFfZnVuY3Rpb24pOgorICAgICAgICAq
IFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbXBpbGFibGUvc3JjL2xpYjEuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb21waWxhYmxlL3NyYy9w
cm9ncmFtLmNwcDogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBTb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9iYXNpY3MvY29uZmlndXJhdGlvbnMuYzog
QWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9jb25maWd1cmF0aW9ucy9iYXNpY3MvY29uZmlndXJhdGlvbnMuZ3lwOiBBZGRlZC4KKyAg
ICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9iYXNpY3Mv
Z3lwdGVzdC1jb25maWd1cmF0aW9ucy5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMvaW5oZXJpdGFuY2UvY29uZmlndXJhdGlvbnMu
YzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9jb25maWd1cmF0aW9ucy9pbmhlcml0YW5jZS9jb25maWd1cmF0aW9ucy5neXA6IEFk
ZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25z
L2luaGVyaXRhbmNlL2d5cHRlc3QtaW5oZXJpdGFuY2UucHk6IEFkZGVkLgorICAgICAgICAqIFNv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL2ludmFsaWQvYWN0aW9ucy5n
eXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3Vy
YXRpb25zL2ludmFsaWQvYWxsX2RlcGVuZGVudF9zZXR0aW5ncy5neXA6IEFkZGVkLgorICAgICAg
ICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL2ludmFsaWQvY29u
ZmlndXJhdGlvbnMuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9jb25maWd1cmF0aW9ucy9pbnZhbGlkL2RlcGVuZGVuY2llcy5neXA6IEFkZGVkLgorICAg
ICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL2ludmFsaWQv
ZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncy5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL2ludmFsaWQvZ3lwdGVzdC1jb25maWd1
cmF0aW9ucy5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
Y29uZmlndXJhdGlvbnMvaW52YWxpZC9saWJyYXJpZXMuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBT
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9pbnZhbGlkL2xpbmtfc2V0
dGluZ3MuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9j
b25maWd1cmF0aW9ucy9pbnZhbGlkL3NvdXJjZXMuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9pbnZhbGlkL3RhcmdldF9uYW1l
Lmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29uZmln
dXJhdGlvbnMvaW52YWxpZC90eXBlLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMvdGFyZ2V0X3BsYXRmb3JtL2NvbmZpZ3VyYXRp
b25zLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29u
ZmlndXJhdGlvbnMvdGFyZ2V0X3BsYXRmb3JtL2Zyb250LmM6IEFkZGVkLgorICAgICAgICAobWFp
bik6CisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMv
dGFyZ2V0X3BsYXRmb3JtL2d5cHRlc3QtdGFyZ2V0X3BsYXRmb3JtLnB5OiBBZGRlZC4KKyAgICAg
ICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy90YXJnZXRfcGxh
dGZvcm0vbGVmdC5jOiBBZGRlZC4KKyAgICAgICAgKG1lc3NhZ2UpOgorICAgICAgICAqIFNvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL3RhcmdldF9wbGF0Zm9ybS9yaWdo
dC5jOiBBZGRlZC4KKyAgICAgICAgKG1lc3NhZ2UpOgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL3g2NC9jb25maWd1cmF0aW9ucy5jOiBBZGRlZC4K
KyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Nv
bmZpZ3VyYXRpb25zL3g2NC9jb25maWd1cmF0aW9ucy5neXA6IEFkZGVkLgorICAgICAgICAqIFNv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL3g2NC9neXB0ZXN0LXg4Ni5w
eTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzLWxp
bmsvZ3lwdGVzdC1jb3BpZXMtbGluay5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvY29waWVzLWxpbmsvc3JjL2NvcGllcy1saW5rLmd5cDogQWRkZWQuCisg
ICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzLWxpbmsvc3JjL2NvcHku
cHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvcGllcy1s
aW5rL3NyYy9mdW5jMS5jOiBBZGRlZC4KKyAgICAgICAgKGZ1bmMxKToKKyAgICAgICAgKiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb3BpZXMtbGluay9zcmMvbWFpbi5jOiBBZGRlZC4KKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvcGll
cy9neXB0ZXN0LWFsbC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvY29waWVzL2d5cHRlc3QtZGVmYXVsdC5weTogQWRkZWQuCisgICAgICAgICogU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzL3NyYy9jb3BpZXMuZ3lwOiBBZGRlZC4KKyAgICAg
ICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb3BpZXMvc3JjL2RpcmVjdG9yeS9maWxl
MzogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzL3Ny
Yy9kaXJlY3RvcnkvZmlsZTQ6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2NvcGllcy9zcmMvZGlyZWN0b3J5L3N1YmRpci9maWxlNTogQWRkZWQuCisgICAgICAg
ICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzL3NyYy9maWxlMTogQWRkZWQuCisg
ICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzL3NyYy9maWxlMjogQWRk
ZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzL3NyYy9wYXJl
bnRkaXIvc3ViZGlyL2ZpbGU2OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9jeHhmbGFncy9jeHhmbGFncy5jYzogQWRkZWQuCisgICAgICAgICogU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvY3h4ZmxhZ3MvY3h4ZmxhZ3MuZ3lwOiBBZGRlZC4KKyAgICAgICAg
KiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jeHhmbGFncy9neXB0ZXN0LWN4eGZsYWdzLnB5
OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZWZpbmVzLWVz
Y2FwaW5nL2RlZmluZXMtZXNjYXBpbmcuYzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZWZpbmVzLWVzY2FwaW5nL2RlZmluZXMt
ZXNjYXBpbmcuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9kZWZpbmVzLWVzY2FwaW5nL2d5cHRlc3QtZGVmaW5lcy1lc2NhcGluZy5weTogQWRkZWQuCisg
ICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVmaW5lcy9kZWZpbmVzLWVudi5n
eXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlZmluZXMv
ZGVmaW5lcy5jOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2RlZmluZXMvZGVmaW5lcy5neXA6IEFkZGVkLgorICAgICAgICAqIFNv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlZmluZXMvZ3lwdGVzdC1kZWZpbmUtb3ZlcnJpZGUu
cHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlZmluZXMv
Z3lwdGVzdC1kZWZpbmVzLWVudi1yZWd5cC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvZGVmaW5lcy9neXB0ZXN0LWRlZmluZXMtZW52LnB5OiBBZGRlZC4K
KyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZWZpbmVzL2d5cHRlc3QtZGVm
aW5lcy5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVw
ZW5kZW5jaWVzL2EuYzogQWRkZWQuCisgICAgICAgIChmdW5jQSk6CisgICAgICAgICogU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVwZW5kZW5jaWVzL2IvYi5jOiBBZGRlZC4KKyAgICAgICAg
KGZ1bmNCKToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZXBlbmRlbmNp
ZXMvYi9iLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
ZGVwZW5kZW5jaWVzL2MvYy5jOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9kZXBlbmRlbmNpZXMvYy9jLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvZGVwZW5kZW5jaWVzL2MvZC5jOiBBZGRlZC4KKyAgICAgICAgKGZ1
bmNEKToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZXBlbmRlbmNpZXMv
ZXh0cmFfdGFyZ2V0cy5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2RlcGVuZGVuY2llcy9neXB0ZXN0LWV4dHJhLXRhcmdldHMucHk6IEFkZGVkLgorICAg
ICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlcGVuZGVuY2llcy9neXB0ZXN0LWxp
Yi1vbmx5LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9k
ZXBlbmRlbmNpZXMvbGliX29ubHkuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9kZXBlbmRlbmN5LWNvcHkvZ3lwdGVzdC1jb3B5LnB5OiBBZGRlZC4KKyAg
ICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZXBlbmRlbmN5LWNvcHkvc3JjL2Nv
cGllcy5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Rl
cGVuZGVuY3ktY29weS9zcmMvZmlsZTEuYzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZXBlbmRlbmN5LWNvcHkvc3JjL2ZpbGUy
LmM6IEFkZGVkLgorICAgICAgICAobWFpbik6CisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvZXhjbHVzaW9uL2V4Y2x1c2lvbi5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2V4Y2x1c2lvbi9neXB0ZXN0LWV4Y2x1c2lvbi5weTogQWRk
ZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZXhjbHVzaW9uL2hlbGxv
LmM6IEFkZGVkLgorICAgICAgICAoZnVuYzEpOgorICAgICAgICAobWFpbik6CisgICAgICAgICog
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9hY3Rpb25zL2FjdGlv
bnMuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5l
cmF0b3Itb3V0cHV0L2FjdGlvbnMvc3ViZGlyMS9hY3Rpb25zLW91dC9SRUFETUUudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0
L2FjdGlvbnMvc3ViZGlyMS9leGVjdXRhYmxlLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9hY3Rpb25zL3N1YmRpcjEvbWFr
ZS1wcm9nMS5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
Z2VuZXJhdG9yLW91dHB1dC9hY3Rpb25zL3N1YmRpcjEvbWFrZS1wcm9nMi5weTogQWRkZWQuCisg
ICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9hY3Rp
b25zL3N1YmRpcjEvcHJvZ3JhbS5jOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAq
IFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvYWN0aW9ucy9zdWJk
aXIyL2FjdGlvbnMtb3V0L1JFQURNRS50eHQ6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvYWN0aW9ucy9zdWJkaXIyL21ha2UtZmls
ZS5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJh
dG9yLW91dHB1dC9hY3Rpb25zL3N1YmRpcjIvbm9uZS5neXA6IEFkZGVkLgorICAgICAgICAqIFNv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvY29waWVzL2NvcGllcy1v
dXQvUkVBRE1FLnR4dDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvZ2VuZXJhdG9yLW91dHB1dC9jb3BpZXMvY29waWVzLmd5cDogQWRkZWQuCisgICAgICAgICog
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9jb3BpZXMvZmlsZTE6
IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1v
dXRwdXQvY29waWVzL2ZpbGUyOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2NvcGllcy9zdWJkaXIvY29waWVzLW91dC9SRUFETUUu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0
b3Itb3V0cHV0L2NvcGllcy9zdWJkaXIvZmlsZTM6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvY29waWVzL3N1YmRpci9maWxlNDog
QWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91
dHB1dC9jb3BpZXMvc3ViZGlyL3N1YmRpci5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvZ3lwdGVzdC1hY3Rpb25zLnB5OiBB
ZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0
cHV0L2d5cHRlc3QtY29waWVzLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2d5cHRlc3QtcmVsb2NhdGUucHk6IEFkZGVkLgor
ICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvZ3lw
dGVzdC1ydWxlcy5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvZ2VuZXJhdG9yLW91dHB1dC9neXB0ZXN0LXN1YmRpcjItZGVlcC5weTogQWRkZWQuCisgICAg
ICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9neXB0ZXN0
LXRvcC1hbGwucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2dlbmVyYXRvci1vdXRwdXQvcnVsZXMvY29weS1maWxlLnB5OiBBZGRlZC4KKyAgICAgICAgKiBT
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3J1bGVzL3J1bGVzLmd5
cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9y
LW91dHB1dC9ydWxlcy9zdWJkaXIxL2RlZmluZTMuaW4wOiBBZGRlZC4KKyAgICAgICAgKiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3J1bGVzL3N1YmRpcjEvZGVm
aW5lNC5pbjA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dl
bmVyYXRvci1vdXRwdXQvcnVsZXMvc3ViZGlyMS9leGVjdXRhYmxlLmd5cDogQWRkZWQuCisgICAg
ICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxlcy9z
dWJkaXIxL2Z1bmN0aW9uMS5pbjE6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvcnVsZXMvc3ViZGlyMS9mdW5jdGlvbjIuaW4xOiBB
ZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0
cHV0L3J1bGVzL3N1YmRpcjEvcHJvZ3JhbS5jOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorICAg
ICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvcnVsZXMv
c3ViZGlyMi9maWxlMS5pbjA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvcnVsZXMvc3ViZGlyMi9maWxlMi5pbjA6IEFkZGVkLgor
ICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvcnVs
ZXMvc3ViZGlyMi9maWxlMy5pbjE6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvcnVsZXMvc3ViZGlyMi9maWxlNC5pbjE6IEFkZGVk
LgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQv
cnVsZXMvc3ViZGlyMi9ub25lLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxlcy9zdWJkaXIyL3J1bGVzLW91dC9SRUFE
TUUudHh0OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5l
cmF0b3Itb3V0cHV0L3NyYy9pbmMuaDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9zcmMvaW5jMS9pbmNsdWRlMS5oOiBBZGRlZC4K
KyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3Ny
Yy9wcm9nMS5jOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvc3JjL3Byb2cxLmd5cDogQWRkZWQuCisg
ICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9zcmMv
c3ViZGlyMi9kZWVwZXIvZGVlcGVyLmM6IEFkZGVkLgorICAgICAgICAobWFpbik6CisgICAgICAg
ICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9zcmMvc3ViZGly
Mi9kZWVwZXIvZGVlcGVyLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9zcmMvc3ViZGlyMi9kZWVwZXIvZGVlcGVyLmg6IEFk
ZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRw
dXQvc3JjL3N1YmRpcjIvaW5jMi9pbmNsdWRlMi5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3NyYy9zdWJkaXIyL3Byb2cyLmM6
IEFkZGVkLgorICAgICAgICAobWFpbik6CisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9zcmMvc3ViZGlyMi9wcm9nMi5neXA6IEFkZGVkLgorICAg
ICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvc3JjL3N1
YmRpcjMvaW5jMy9pbmNsdWRlMy5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3NyYy9zdWJkaXIzL3Byb2czLmM6IEFkZGVkLgor
ICAgICAgICAobWFpbik6CisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2Vu
ZXJhdG9yLW91dHB1dC9zcmMvc3ViZGlyMy9wcm9nMy5neXA6IEFkZGVkLgorICAgICAgICAqIFNv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvc3JjL3N5bXJvb3QuZ3lw
aTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaGVsbG8vZ3lw
dGVzdC1hbGwucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2hlbGxvL2d5cHRlc3QtZGVmYXVsdC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvaGVsbG8vZ3lwdGVzdC1kaXNhYmxlLXJlZ3lwLnB5OiBBZGRlZC4KKyAg
ICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9oZWxsby9neXB0ZXN0LXJlZ3lwLnB5
OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9oZWxsby9neXB0
ZXN0LXRhcmdldC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvaGVsbG8vaGVsbG8uYzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9oZWxsby9oZWxsby5neXA6IEFkZGVkLgorICAgICAgICAq
IFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2hlbGxvL2hlbGxvMi5jOiBBZGRlZC4KKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2hlbGxvL2hl
bGxvMi5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2hv
bWVfZG90X2d5cC9neXB0ZXN0LWhvbWUtaW5jbHVkZXMtcmVneXAucHk6IEFkZGVkLgorICAgICAg
ICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2hvbWVfZG90X2d5cC9neXB0ZXN0LWhvbWUt
aW5jbHVkZXMucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2hvbWVfZG90X2d5cC9ob21lLy5neXAvaW5jbHVkZS5neXBpOiBBZGRlZC4KKyAgICAgICAgKiBT
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ob21lX2RvdF9neXAvaG9tZTIvLmd5cC9pbmNsdWRl
Lmd5cGk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2hvbWVf
ZG90X2d5cC9zcmMvYWxsLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvaG9tZV9kb3RfZ3lwL3NyYy9wcmludGZvby5jOiBBZGRlZC4KKyAgICAgICAgKG1h
aW4pOgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2luY2x1ZGVfZGlycy9n
eXB0ZXN0LWFsbC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvaW5jbHVkZV9kaXJzL2d5cHRlc3QtZGVmYXVsdC5weTogQWRkZWQuCisgICAgICAgICogU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaW5jbHVkZV9kaXJzL3NyYy9pbmMuaDogQWRkZWQuCisg
ICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaW5jbHVkZV9kaXJzL3NyYy9pbmMx
L2luY2x1ZGUxLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2luY2x1ZGVfZGlycy9zcmMvaW5jbHVkZXMuYzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9pbmNsdWRlX2RpcnMvc3JjL2luY2x1
ZGVzLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaW5j
bHVkZV9kaXJzL3NyYy9zaGFkb3cxL3NoYWRvdy5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9pbmNsdWRlX2RpcnMvc3JjL3NoYWRvdzIvc2hhZG93Lmg6IEFk
ZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2luY2x1ZGVfZGlycy9z
cmMvc3ViZGlyL2luYy5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9pbmNsdWRlX2RpcnMvc3JjL3N1YmRpci9pbmMyL2luY2x1ZGUyLmg6IEFkZGVkLgorICAg
ICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2luY2x1ZGVfZGlycy9zcmMvc3ViZGly
L3N1YmRpcl9pbmNsdWRlcy5jOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2luY2x1ZGVfZGlycy9zcmMvc3ViZGlyL3N1YmRpcl9p
bmNsdWRlcy5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2xpYi9SRUFETUUudHh0OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9saWIvVGVzdENtZC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvbGliL1Rlc3RDb21tb24ucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2xpYi9UZXN0R3lwLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9saWJyYXJ5L2d5cHRlc3Qtc2hhcmVkLW9iai1pbnN0YWxsLXBh
dGgucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpYnJh
cnkvZ3lwdGVzdC1zaGFyZWQucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2xpYnJhcnkvZ3lwdGVzdC1zdGF0aWMucHk6IEFkZGVkLgorICAgICAgICAqIFNv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpYnJhcnkvc3JjL2xpYjEuYzogQWRkZWQuCisgICAg
ICAgIChsaWIxX2Z1bmN0aW9uKToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9saWJyYXJ5L3NyYy9saWIxX21vdmVhYmxlLmM6IEFkZGVkLgorICAgICAgICAobW92ZWFibGVf
ZnVuY3Rpb24pOgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpYnJhcnkv
c3JjL2xpYjIuYzogQWRkZWQuCisgICAgICAgIChsaWIyX2Z1bmN0aW9uKToKKyAgICAgICAgKiBT
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9saWJyYXJ5L3NyYy9saWIyX21vdmVhYmxlLmM6IEFk
ZGVkLgorICAgICAgICAobW92ZWFibGVfZnVuY3Rpb24pOgorICAgICAgICAqIFNvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2xpYnJhcnkvc3JjL2xpYnJhcnkuZ3lwOiBBZGRlZC4KKyAgICAgICAg
KiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9saWJyYXJ5L3NyYy9wcm9ncmFtLmM6IEFkZGVk
LgorICAgICAgICAobWFpbik6CisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
bGlicmFyeS9zcmMvc2hhcmVkX2RlcGVuZGVuY3kuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9saW5rLW9iamVjdHMvYmFzZS5jOiBBZGRlZC4KKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpbmstb2Jq
ZWN0cy9leHRyYS5jOiBBZGRlZC4KKyAgICAgICAgKGV4dHJhKToKKyAgICAgICAgKiBTb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9saW5rLW9iamVjdHMvZ3lwdGVzdC1hbGwucHk6IEFkZGVkLgor
ICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpbmstb2JqZWN0cy9saW5rLW9i
amVjdHMuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9t
YWtlL2RlcGVuZGVuY2llcy5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L21ha2UvZ3lwdGVzdC1kZXBlbmRlbmNpZXMucHk6IEFkZGVkLgorICAgICAgICAq
IFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21ha2UvZ3lwdGVzdC1ub2xvYWQucHk6IEFkZGVk
LgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21ha2UvbWFpbi5jYzogQWRk
ZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbWFrZS9tYWluLmg6IEFk
ZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21ha2Uvbm9sb2FkL2Fs
bC5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21ha2Uv
bm9sb2FkL2xpYi9zaGFyZWQuYzogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvbWFrZS9ub2xvYWQvbGliL3NoYXJlZC5neXA6IEFkZGVkLgorICAgICAgICAqIFNv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21ha2Uvbm9sb2FkL2xpYi9zaGFyZWQuaDogQWRkZWQu
CisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbWFrZS9ub2xvYWQvbWFpbi5j
OiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L21vZHVsZS9neXB0ZXN0LWRlZmF1bHQucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21vZHVsZS9zcmMvbGliMS5jOiBBZGRlZC4KKyAgICAgICAg
KG1vZHVsZV9tYWluKToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tb2R1
bGUvc3JjL2xpYjIuYzogQWRkZWQuCisgICAgICAgIChtb2R1bGVfbWFpbik6CisgICAgICAgICog
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbW9kdWxlL3NyYy9tb2R1bGUuZ3lwOiBBZGRlZC4K
KyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tb2R1bGUvc3JjL3Byb2dyYW0u
YzogQWRkZWQuCisgICAgICAgIChDYWxsTW9kdWxlKToKKyAgICAgICAgKG1haW4pOgorICAgICAg
ICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21zdnMvZXhwcmVzcy9iYXNlL2Jhc2UuZ3lw
OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tc3ZzL2V4cHJl
c3MvZXhwcmVzcy5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L21zdnMvZXhwcmVzcy9neXB0ZXN0LWV4cHJlc3MucHk6IEFkZGVkLgorICAgICAgICAqIFNv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21zdnMvcHJlY29tcGlsZWQvZ3lwdGVzdC1hbGwucHk6
IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21zdnMvcHJlY29t
cGlsZWQvaGVsbG8uYzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBTb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9tc3ZzL3ByZWNvbXBpbGVkL2hlbGxvLmd5cDogQWRkZWQuCisg
ICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbXN2cy9wcmVjb21waWxlZC9oZWxs
bzIuYzogQWRkZWQuCisgICAgICAgIChoZWxsbzIpOgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L21zdnMvcHJlY29tcGlsZWQvcHJlY29tcC5jOiBBZGRlZC4KKyAgICAgICAg
KiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tdWx0aXBsZS10YXJnZXRzL2d5cHRlc3QtYWxs
LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tdWx0aXBs
ZS10YXJnZXRzL2d5cHRlc3QtZGVmYXVsdC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvbXVsdGlwbGUtdGFyZ2V0cy9zcmMvY29tbW9uLmM6IEFkZGVkLgor
ICAgICAgICAoY29tbW9uKToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9t
dWx0aXBsZS10YXJnZXRzL3NyYy9tdWx0aXBsZS5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L211bHRpcGxlLXRhcmdldHMvc3JjL3Byb2cxLmM6IEFkZGVk
LgorICAgICAgICAobWFpbik6CisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
bXVsdGlwbGUtdGFyZ2V0cy9zcmMvcHJvZzIuYzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9uby1vdXRwdXQvZ3lwdGVzdC1uby1v
dXRwdXQucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L25v
LW91dHB1dC9zcmMvbm9vdXRwdXQuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9wcm9kdWN0L2d5cHRlc3QtcHJvZHVjdC5weTogQWRkZWQuCisgICAgICAg
ICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcHJvZHVjdC9oZWxsby5jOiBBZGRlZC4KKyAg
ICAgICAgKGZ1bmMxKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L3Byb2R1Y3QvcHJvZHVjdC5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzLXJlYnVpbGQvZ3lwdGVzdC1hbGwucHk6IEFkZGVk
LgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzLXJlYnVpbGQvZ3lw
dGVzdC1kZWZhdWx0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9ydWxlcy1yZWJ1aWxkL3NyYy9tYWluLmM6IEFkZGVkLgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMtcmVidWlsZC9zcmMvbWFr
ZS1zb3VyY2VzLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9ydWxlcy1yZWJ1aWxkL3NyYy9wcm9nMS5pbjogQWRkZWQuCisgICAgICAgICogU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMtcmVidWlsZC9zcmMvcHJvZzIuaW46IEFkZGVkLgorICAg
ICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzLXJlYnVpbGQvc3JjL3NhbWVf
dGFyZ2V0Lmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
cnVsZXMvZ3lwdGVzdC1hbGwucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L3J1bGVzL2d5cHRlc3QtZGVmYXVsdC5weTogQWRkZWQuCisgICAgICAgICogU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMvc3JjL2FjdGlvbnMuZ3lwOiBBZGRlZC4KKyAg
ICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9zcmMvY29weS1maWxlLnB5
OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9zcmMv
c3ViZGlyMS9leGVjdXRhYmxlLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvcnVsZXMvc3JjL3N1YmRpcjEvZnVuY3Rpb24xLmluOiBBZGRlZC4KKyAgICAg
ICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9zcmMvc3ViZGlyMS9mdW5jdGlv
bjIuaW46IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVz
L3NyYy9zdWJkaXIxL3Byb2dyYW0uYzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAg
KiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9zcmMvc3ViZGlyMi9maWxlMS5pbjog
QWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMvc3JjL3N1
YmRpcjIvZmlsZTIuaW46IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L3J1bGVzL3NyYy9zdWJkaXIyL25ldmVyX3VzZWQuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBT
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9zcmMvc3ViZGlyMi9ub19pbnB1dHMuZ3lw
OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9zcmMv
c3ViZGlyMi9ub25lLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvcnVsZXMvc3JjL3N1YmRpcjMvZXhlY3V0YWJsZTIuZ3lwOiBBZGRlZC4KKyAgICAgICAg
KiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9zcmMvc3ViZGlyMy9mdW5jdGlvbjMu
aW46IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzL3Ny
Yy9zdWJkaXIzL3Byb2dyYW0uYzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBT
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zYW1lLWd5cC1uYW1lL2d5cHRlc3QtYWxsLnB5OiBB
ZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zYW1lLWd5cC1uYW1l
L2d5cHRlc3QtZGVmYXVsdC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3Qvc2FtZS1neXAtbmFtZS9zcmMvYWxsLmd5cDogQWRkZWQuCisgICAgICAgICogU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1neXAtbmFtZS9zcmMvc3ViZGlyMS9leGVjdXRh
YmxlLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2Ft
ZS1neXAtbmFtZS9zcmMvc3ViZGlyMS9tYWluMS5jYzogQWRkZWQuCisgICAgICAgICogU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1neXAtbmFtZS9zcmMvc3ViZGlyMi9leGVjdXRhYmxl
Lmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1n
eXAtbmFtZS9zcmMvc3ViZGlyMi9tYWluMi5jYzogQWRkZWQuCisgICAgICAgICogU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1uYW1lL2d5cHRlc3QtYWxsLnB5OiBBZGRlZC4KKyAgICAg
ICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zYW1lLW5hbWUvZ3lwdGVzdC1kZWZhdWx0
LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zYW1lLW5h
bWUvc3JjL2FsbC5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L3NhbWUtbmFtZS9zcmMvZnVuYy5jOiBBZGRlZC4KKyAgICAgICAgKGZ1bmMpOgorICAgICAg
ICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NhbWUtbmFtZS9zcmMvcHJvZzEuYzogQWRk
ZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9zYW1lLW5hbWUvc3JjL3Byb2cyLmM6IEFkZGVkLgorICAgICAgICAobWFpbik6CisgICAgICAg
ICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1uYW1lL3NyYy9zdWJkaXIxL2Z1bmMu
YzogQWRkZWQuCisgICAgICAgIChzdWJkaXIxX2Z1bmMpOgorICAgICAgICAqIFNvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L3NhbWUtbmFtZS9zcmMvc3ViZGlyMi9mdW5jLmM6IEFkZGVkLgorICAg
ICAgICAoc3ViZGlyMl9mdW5jKToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9zYW1lLXRhcmdldC1uYW1lL2d5cHRlc3Qtc2FtZS10YXJnZXQtbmFtZS5weTogQWRkZWQuCisg
ICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS10YXJnZXQtbmFtZS9zcmMv
YWxsLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2Ft
ZS10YXJnZXQtbmFtZS9zcmMvZXhlY3V0YWJsZTEuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zYW1lLXRhcmdldC1uYW1lL3NyYy9leGVjdXRhYmxlMi5n
eXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Njb25zX3Rv
b2xzL2d5cHRlc3QtdG9vbHMucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L3Njb25zX3Rvb2xzL3NpdGVfc2NvbnMvc2l0ZV90b29scy90aGlzX3Rvb2wucHk6
IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Njb25zX3Rvb2xz
L3Rvb2xzLmM6IEFkZGVkLgorICAgICAgICAobWFpbik6CisgICAgICAgICogU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3Qvc2NvbnNfdG9vbHMvdG9vbHMuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBT
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zaWJsaW5nL2d5cHRlc3QtYWxsLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zaWJsaW5nL2d5cHRlc3QtcmVs
b2NhdGUucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Np
Ymxpbmcvc3JjL3Byb2cxL3Byb2cxLmM6IEFkZGVkLgorICAgICAgICAobWFpbik6CisgICAgICAg
ICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2libGluZy9zcmMvcHJvZzEvcHJvZzEuZ3lw
OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zaWJsaW5nL3Ny
Yy9wcm9nMi9wcm9nMi5jOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NpYmxpbmcvc3JjL3Byb2cyL3Byb2cyLmd5cDogQWRkZWQu
CisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc21hbGwvZ3lwdGVzdC1zbWFs
bC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc3ViZGly
ZWN0b3J5L2d5cHRlc3QtU1lNUk9PVC1hbGwucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L3N1YmRpcmVjdG9yeS9neXB0ZXN0LVNZTVJPT1QtZGVmYXVsdC5w
eTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc3ViZGlyZWN0
b3J5L2d5cHRlc3Qtc3ViZGlyLWFsbC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3Qvc3ViZGlyZWN0b3J5L2d5cHRlc3Qtc3ViZGlyLWRlZmF1bHQucHk6IEFk
ZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3N1YmRpcmVjdG9yeS9n
eXB0ZXN0LXN1YmRpcjItZGVlcC5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3Qvc3ViZGlyZWN0b3J5L2d5cHRlc3QtdG9wLWFsbC5weTogQWRkZWQuCisgICAg
ICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc3ViZGlyZWN0b3J5L2d5cHRlc3QtdG9w
LWRlZmF1bHQucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L3N1YmRpcmVjdG9yeS9zcmMvcHJvZzEuYzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zdWJkaXJlY3Rvcnkvc3JjL3Byb2cxLmd5
cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc3ViZGlyZWN0
b3J5L3NyYy9zdWJkaXIvcHJvZzIuYzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAg
KiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zdWJkaXJlY3Rvcnkvc3JjL3N1YmRpci9wcm9n
Mi5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3N1YmRp
cmVjdG9yeS9zcmMvc3ViZGlyL3N1YmRpcjIvcHJvZzMuYzogQWRkZWQuCisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zdWJkaXJlY3Rvcnkvc3Jj
L3N1YmRpci9zdWJkaXIyL3Byb2czLmd5cDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3Qvc3ViZGlyZWN0b3J5L3NyYy9zeW1yb290Lmd5cGk6IEFkZGVkLgorICAg
ICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Rvb2xzZXRzL2d5cHRlc3QtdG9vbHNl
dHMucHk6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Rvb2xz
ZXRzL21haW4uY2M6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L3Rvb2xzZXRzL3Rvb2xzZXRzLmNjOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC90b29sc2V0cy90b29sc2V0cy5neXA6IEFkZGVkLgorICAgICAgICAqIFNvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3RvcGxldmVsLWRpci9neXB0ZXN0LXRvcGxldmVsLWRpci5w
eTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdG9wbGV2ZWwt
ZGlyL3NyYy9zdWIxL21haW4uZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC90b3BsZXZlbC1kaXIvc3JjL3N1YjEvcHJvZzEuYzogQWRkZWQuCisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC90b3BsZXZlbC1k
aXIvc3JjL3N1YjIvcHJvZzIuYzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBT
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC90b3BsZXZlbC1kaXIvc3JjL3N1YjIvcHJvZzIuZ3lw
OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYWJsZXMv
Y29tbWFuZHMvY29tbWFuZHMtcmVwZWF0ZWQuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYWJsZXMvY29tbWFuZHMvY29tbWFuZHMtcmVwZWF0ZWQu
Z3lwLnN0ZG91dDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
dmFyaWFibGVzL2NvbW1hbmRzL2NvbW1hbmRzLXJlcGVhdGVkLmd5cGQuZ29sZGVuOiBBZGRlZC4K
KyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYWJsZXMvY29tbWFuZHMv
Y29tbWFuZHMuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC92YXJpYWJsZXMvY29tbWFuZHMvY29tbWFuZHMuZ3lwLmlnbm9yZS1lbnYuc3Rkb3V0OiBBZGRl
ZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYWJsZXMvY29tbWFu
ZHMvY29tbWFuZHMuZ3lwLnN0ZG91dDogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2NvbW1hbmRzL2NvbW1hbmRzLmd5cGQuZ29sZGVuOiBBZGRl
ZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYWJsZXMvY29tbWFu
ZHMvY29tbWFuZHMuZ3lwaTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvdmFyaWFibGVzL2NvbW1hbmRzL2d5cHRlc3QtY29tbWFuZHMtaWdub3JlLWVudi5weTog
QWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2Nv
bW1hbmRzL2d5cHRlc3QtY29tbWFuZHMtcmVwZWF0ZWQucHk6IEFkZGVkLgorICAgICAgICAqIFNv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhYmxlcy9jb21tYW5kcy9neXB0ZXN0LWNvbW1h
bmRzLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJp
YWJsZXMvY29tbWFuZHMvdXBkYXRlX2dvbGRlbjogQWRkZWQuCisgICAgICAgICogU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2ZpbGVsaXN0L2ZpbGVsaXN0Lmd5cC5zdGRvdXQ6
IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhYmxlcy9m
aWxlbGlzdC9maWxlbGlzdC5neXBkLmdvbGRlbjogQWRkZWQuCisgICAgICAgICogU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2ZpbGVsaXN0L2d5cHRlc3QtZmlsZWxpc3QucHk6
IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhYmxlcy9m
aWxlbGlzdC9zcmMvZmlsZWxpc3QuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC92YXJpYWJsZXMvZmlsZWxpc3QvdXBkYXRlX2dvbGRlbjogQWRkZWQuCisg
ICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFyaWFudHMvZ3lwdGVzdC12YXJp
YW50cy5weTogQWRkZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFy
aWFudHMvc3JjL3ZhcmlhbnRzLmM6IEFkZGVkLgorICAgICAgICAobWFpbik6CisgICAgICAgICog
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFyaWFudHMvc3JjL3ZhcmlhbnRzLmd5cDogQWRk
ZWQuCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rvb2xzL1JFQURNRTogQWRkZWQu
CisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rvb2xzL3ByZXR0eV9neXAucHk6IEFk
ZGVkLgorICAgICAgICAqIFNvdXJjZS9UaGlyZFBhcnR5L2d5cC90b29scy9wcmV0dHlfc2xuLnB5
OiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvVGhpcmRQYXJ0eS9neXAvdG9vbHMvcHJldHR5X3Zj
cHJvai5weTogQWRkZWQuCisKIDIwMTEtMDMtMjEgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL0FVVEhPUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvQVVUSE9SUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGI2NzUyYWQzOWExZWZlYTZlMTgwMTg5ODZjZDMz
YTJmNTg4ZjVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL0FVVEhP
UlMKQEAgLTAsMCArMSw1IEBACisjIE5hbWVzIHNob3VsZCBiZSBhZGRlZCB0byB0aGlzIGZpbGUg
bGlrZSBzbzoKKyMgTmFtZSBvciBPcmdhbml6YXRpb24gPGVtYWlsIGFkZHJlc3M+CisKK0dvb2ds
ZSBJbmMuCitTdGV2ZW4gS25pZ2h0IDxrbmlnaHRAYmFsZG10LmNvbT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC9ERVBTIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL0RFUFMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGU1NmMwNjNkZmZiYmU2ZDIzYTFmZTMyZjRjNWIwZmNlNjQzYTczNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9ERVBTCkBAIC0wLDAgKzEsOCBAQAor
IyBERVBTIGZpbGUgZm9yIGdjbGllbnQgdXNlIGluIGJ1aWxkYm90IGV4ZWN1dGlvbiBvZiBneXAg
dGVzdHMuCisjCisjIChZb3UgZG9uJ3QgbmVlZCB0byB1c2UgZ2NsaWVudCBmb3Igbm9ybWFsIEdZ
UCBkZXZlbG9wbWVudCB3b3JrLikKKworZGVwcyA9IHsKKyAgInNjb25zIjoKKyAgICAiaHR0cDov
L3NyYy5jaHJvbWl1bS5vcmcvc3ZuL3RydW5rL3NyYy90aGlyZF9wYXJ0eS9zY29uc0A0NDA5OSIs
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvTElDRU5TRSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNmIwMTFhMTA5MzM1ZDdiYjg2MDRk
NDliZTBkMTg1ZjM0ZDE3NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvTElDRU5TRQpAQCAtMCwwICsxLDI3IEBACitDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCittZXQ6
CisKKyAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKK25vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0
aW9uLgorICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCitEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9NQU5JRkVTVCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC9NQU5JRkVTVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjVlY2MxODQyZDMwYjEyZTgwMGRiNDdjNjJhMTBmMDk3
YTk1ZmU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL01BTklGRVNU
CkBAIC0wLDAgKzEsMjEgQEAKK3NldHVwLnB5CitneXAKK0xJQ0VOU0UKK0FVVEhPUlMKK3B5bGli
L2d5cC9NU1ZTTmV3LnB5CitweWxpYi9neXAvTVNWU1Byb2plY3QucHkKK3B5bGliL2d5cC9NU1ZT
VG9vbEZpbGUucHkKK3B5bGliL2d5cC9NU1ZTVXNlckZpbGUucHkKK3B5bGliL2d5cC9NU1ZTVmVy
c2lvbi5weQorcHlsaWIvZ3lwL1NDb25zLnB5CitweWxpYi9neXAvX19pbml0X18ucHkKK3B5bGli
L2d5cC9jb21tb24ucHkKK3B5bGliL2d5cC9pbnB1dC5weQorcHlsaWIvZ3lwL3hjb2RlcHJval9m
aWxlLnB5CitweWxpYi9neXAvZ2VuZXJhdG9yL19faW5pdF9fLnB5CitweWxpYi9neXAvZ2VuZXJh
dG9yL2d5cGQucHkKK3B5bGliL2d5cC9nZW5lcmF0b3IvZ3lwc2gucHkKK3B5bGliL2d5cC9nZW5l
cmF0b3IvbWFrZS5weQorcHlsaWIvZ3lwL2dlbmVyYXRvci9tc3ZzLnB5CitweWxpYi9neXAvZ2Vu
ZXJhdG9yL3Njb25zLnB5CitweWxpYi9neXAvZ2VuZXJhdG9yL3hjb2RlLnB5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvUFJFU1VCTUlULnB5IGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL1BSRVNVQk1JVC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yzk5Mjg4NDBmZjA2ZDNiNDk1MDE2NjdiYzYy
YTZhODNkNjk1YjE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL1BS
RVNVQk1JVC5weQpAQCAtMCwwICsxLDUzIEBACisjIENvcHlyaWdodCAyMDEwLCBHb29nbGUgSW5j
LgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitFWENMVURF
RF9QQVRIUyA9ICgpCisKKworZGVmIENoZWNrQ2hhbmdlT25VcGxvYWQoaW5wdXRfYXBpLCBvdXRw
dXRfYXBpKToKKyAgcmVwb3J0ID0gW10KKyAgYmxhY2tfbGlzdCA9IGlucHV0X2FwaS5ERUZBVUxU
X0JMQUNLX0xJU1QgKyBFWENMVURFRF9QQVRIUworICBzb3VyY2VzID0gbGFtYmRhIHg6IGlucHV0
X2FwaS5GaWx0ZXJTb3VyY2VGaWxlKHgsIGJsYWNrX2xpc3Q9YmxhY2tfbGlzdCkKKyAgcmVwb3J0
LmV4dGVuZChpbnB1dF9hcGkuY2FubmVkX2NoZWNrcy5DaGVja0NoYW5nZVN2bkVvbFN0eWxlKAor
ICAgICAgaW5wdXRfYXBpLCBvdXRwdXRfYXBpLCBzb3VyY2VzKSkKKyAgcmV0dXJuIHJlcG9ydAor
CisKK2RlZiBDaGVja0NoYW5nZU9uQ29tbWl0KGlucHV0X2FwaSwgb3V0cHV0X2FwaSk6CisgIHJl
cG9ydCA9IFtdCisgIGJsYWNrX2xpc3QgPSBpbnB1dF9hcGkuREVGQVVMVF9CTEFDS19MSVNUICsg
RVhDTFVERURfUEFUSFMKKyAgc291cmNlcyA9IGxhbWJkYSB4OiBpbnB1dF9hcGkuRmlsdGVyU291
cmNlRmlsZSh4LCBibGFja19saXN0PWJsYWNrX2xpc3QpCisgIHJlcG9ydC5leHRlbmQoaW5wdXRf
YXBpLmNhbm5lZF9jaGVja3MuQ2hlY2tDaGFuZ2VTdm5Fb2xTdHlsZSgKKyAgICAgIGlucHV0X2Fw
aSwgb3V0cHV0X2FwaSwgc291cmNlcykpCisgIHJlcG9ydC5leHRlbmQoaW5wdXRfYXBpLmNhbm5l
ZF9jaGVja3MuQ2hlY2tUcmVlSXNPcGVuKAorICAgICAgaW5wdXRfYXBpLCBvdXRwdXRfYXBpLAor
ICAgICAgJ2h0dHA6Ly9neXAtc3RhdHVzLmFwcHNwb3QuY29tL3N0YXR1cycsCisgICAgICAnaHR0
cDovL2d5cC1zdGF0dXMuYXBwc3BvdC5jb20vY3VycmVudCcpKQorICByZXR1cm4gcmVwb3J0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvUkVBRE1FLldlYktpdCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC9SRUFETUUuV2ViS2l0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllZWQwNzVkMDkxZjdjNjk0
MGIwNGUzNDQ5NGRjNzE2ZWQ0ZmFiN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvUkVBRE1FLldlYktpdApAQCAtMCwwICsxIEBACitUaGlzIGRpcmVjdG9yeSBpcyBh
IGNvcHkgb2YgaHR0cDovL2d5cC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGF0IHJldmlzaW9u
IDkwMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9jb2RlcmV2aWV3LnNldHRp
bmdzIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL2NvZGVyZXZpZXcuc2V0dGluZ3MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTA0YTI0NDBkZjM5ZDE1OTQwNTY3ZTRkZjk0NmVjOGU1MDkyNDJmMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9jb2RlcmV2aWV3LnNldHRpbmdzCkBAIC0wLDAg
KzEsMTAgQEAKKyMgVGhpcyBmaWxlIGlzIHVzZWQgYnkgZ2NsIHRvIGdldCByZXBvc2l0b3J5IHNw
ZWNpZmljIGluZm9ybWF0aW9uLgorQ09ERV9SRVZJRVdfU0VSVkVSOiBjb2RlcmV2aWV3LmNocm9t
aXVtLm9yZworQ0NfTElTVDogZ3lwLWRldmVsb3BlckBnb29nbGVncm91cHMuY29tCitWSUVXX1ZD
OiBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ3lwL3NvdXJjZS9kZXRhaWw/cj0KK1RSWV9PTl9V
UExPQUQ6IFRydWUKK1RSWVNFUlZFUl9QUk9KRUNUOiBneXAKK1RSWVNFUlZFUl9QQVRDSExFVkVM
OiAwCitUUllTRVJWRVJfUk9PVDogdHJ1bmsKK1RSWVNFUlZFUl9TVk5fVVJMOiBzdm46Ly9zdm4u
Y2hyb21pdW0ub3JnL2Nocm9tZS10cnkvdHJ5LW5hY2wKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL2d5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9neXAKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDUyZTcxMTZmNWE1YTliNjM0ZjU1YmJkN2JkYTAyNWMwYTgwMzY3YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9neXAKQEAgLTAsMCArMSwxOCBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworaW1wb3J0IHN5cworCisjIFRPRE8obWFyayk6IHN5cy5wYXRoIG1hbmlwdWxhdGlvbiBp
cyBzb21lIHRlbXBvcmFyeSB0ZXN0aW5nIHN0dWZmLgordHJ5OgorICBpbXBvcnQgZ3lwCitleGNl
cHQgSW1wb3J0RXJyb3IsIGU6CisgIGltcG9ydCBvcy5wYXRoCisgIHN5cy5wYXRoLmFwcGVuZChv
cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKSwgJ3B5bGliJykpCisgIGlt
cG9ydCBneXAKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgc3lzLmV4aXQoZ3lwLm1h
aW4oc3lzLmFyZ3ZbMTpdKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9neXAu
YmF0IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL2d5cC5iYXQKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBmYmM2ZDMw
ZWVmMTQxMGNiMjBlYTVmNDQ1Zjg0ZWIzODU2MzZjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC9neXAuYmF0CkBAIC0wLDAgKzEsNSBAQAorQHJlbSBDb3B5cmlnaHQg
KGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCitAcmVtIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUNCitAcmVtIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorDQorQHB5dGhvbiAiJX5k
cDAvZ3lwIiAlKg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9neXBfZHVtbXku
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9neXBfZHVtbXkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjU1YmJj
NzhkYTI1MzQzZjdmZjU5NWNmN2U0OGQ1MTkxMTA4M2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3lwL2d5cF9kdW1teS5jCkBAIC0wLDAgKzEsNyBAQAorLyogQ29weXJp
Z2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLiAqLworCitpbnQgbWFpbigpIHsK
KyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvZ3lwdGVz
dC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9neXB0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5Njc3
ZGIzYWUxYzM4NjQ3ZjljYjAzZjM0NjEyYTZmZGEzYWQxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvZ3lwdGVzdC5weQpAQCAtMCwwICsxLDI1NSBAQAorIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKworX19kb2NfXyA9ICIiIgorZ3lwdGVzdC5weSAtLSB0ZXN0IHJ1bm5lciBmb3IgR1lQ
IHRlc3RzLgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgc3VicHJv
Y2VzcworaW1wb3J0IHN5cworCitjbGFzcyBDb21tYW5kUnVubmVyOgorICAiIiIKKyAgRXhlY3V0
b3IgY2xhc3MgZm9yIGNvbW1hbmRzLCBpbmNsdWRpbmcgImNvbW1hbmRzIiBpbXBsZW1lbnRlZCBi
eQorICBQeXRob24gZnVuY3Rpb25zLgorICAiIiIKKyAgdmVyYm9zZSA9IFRydWUKKyAgYWN0aXZl
ID0gVHJ1ZQorCisgIGRlZiBfX2luaXRfXyhzZWxmLCBkaWN0aW9uYXJ5PXt9KToKKyAgICBzZWxm
LnN1YnN0X2RpY3Rpb25hcnkoZGljdGlvbmFyeSkKKworICBkZWYgc3Vic3RfZGljdGlvbmFyeShz
ZWxmLCBkaWN0aW9uYXJ5KToKKyAgICBzZWxmLl9zdWJzdF9kaWN0aW9uYXJ5ID0gZGljdGlvbmFy
eQorCisgIGRlZiBzdWJzdChzZWxmLCBzdHJpbmcsIGRpY3Rpb25hcnk9Tm9uZSk6CisgICAgIiIi
CisgICAgU3Vic3RpdHV0ZXMgKHZpYSB0aGUgZm9ybWF0IG9wZXJhdG9yKSB0aGUgdmFsdWVzIGlu
IHRoZSBzcGVjaWZpZWQKKyAgICBkaWN0aW9uYXJ5IGludG8gdGhlIHNwZWNpZmllZCBjb21tYW5k
LgorCisgICAgVGhlIGNvbW1hbmQgY2FuIGJlIGFuIChhY3Rpb24sIHN0cmluZykgdHVwbGUuICBJ
biBhbGwgY2FzZXMsIHdlCisgICAgcGVyZm9ybSBzdWJzdGl0dXRpb24gb24gc3RyaW5ncyBhbmQg
ZG9uJ3Qgd29ycnkgaWYgc29tZXRoaW5nIGlzbid0CisgICAgYSBzdHJpbmcuICAoSXQncyBwcm9i
YWJseSBhIFB5dGhvbiBmdW5jdGlvbiB0byBiZSBleGVjdXRlZC4pCisgICAgIiIiCisgICAgaWYg
ZGljdGlvbmFyeSBpcyBOb25lOgorICAgICAgZGljdGlvbmFyeSA9IHNlbGYuX3N1YnN0X2RpY3Rp
b25hcnkKKyAgICBpZiBkaWN0aW9uYXJ5OgorICAgICAgdHJ5OgorICAgICAgICBzdHJpbmcgPSBz
dHJpbmcgJSBkaWN0aW9uYXJ5CisgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICBwYXNz
CisgICAgcmV0dXJuIHN0cmluZworCisgIGRlZiBkaXNwbGF5KHNlbGYsIGNvbW1hbmQsIHN0ZG91
dD1Ob25lLCBzdGRlcnI9Tm9uZSk6CisgICAgaWYgbm90IHNlbGYudmVyYm9zZToKKyAgICAgIHJl
dHVybgorICAgIGlmIHR5cGUoY29tbWFuZCkgPT0gdHlwZSgoKSk6CisgICAgICBmdW5jID0gY29t
bWFuZFswXQorICAgICAgYXJncyA9IGNvbW1hbmRbMTpdCisgICAgICBzID0gJyVzKCVzKScgJSAo
ZnVuYy5fX25hbWVfXywgJywgJy5qb2luKG1hcChyZXByLCBhcmdzKSkpCisgICAgaWYgdHlwZShj
b21tYW5kKSA9PSB0eXBlKFtdKToKKyAgICAgICMgVE9ETzogIHF1b3RlIGFyZ3VtZW50cyBjb250
YWluaW5nIHNwYWNlcworICAgICAgIyBUT0RPOiAgaGFuZGxlIG1ldGEgY2hhcmFjdGVycz8KKyAg
ICAgIHMgPSAnICcuam9pbihjb21tYW5kKQorICAgIGVsc2U6CisgICAgICBzID0gc2VsZi5zdWJz
dChjb21tYW5kKQorICAgIGlmIG5vdCBzLmVuZHN3aXRoKCdcbicpOgorICAgICAgcyArPSAnXG4n
CisgICAgc3lzLnN0ZG91dC53cml0ZShzKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCisgIGRl
ZiBleGVjdXRlKHNlbGYsIGNvbW1hbmQsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSk6CisgICAg
IiIiCisgICAgRXhlY3V0ZXMgYSBzaW5nbGUgY29tbWFuZC4KKyAgICAiIiIKKyAgICBpZiBub3Qg
c2VsZi5hY3RpdmU6CisgICAgICByZXR1cm4gMAorICAgIGlmIHR5cGUoY29tbWFuZCkgPT0gdHlw
ZSgnJyk6CisgICAgICBjb21tYW5kID0gc2VsZi5zdWJzdChjb21tYW5kKQorICAgICAgY21kYXJn
cyA9IHNobGV4LnNwbGl0KGNvbW1hbmQpCisgICAgICBpZiBjbWRhcmdzWzBdID09ICdjZCc6Cisg
ICAgICAgICBjb21tYW5kID0gKG9zLmNoZGlyLCkgKyB0dXBsZShjbWRhcmdzWzE6XSkKKyAgICBp
ZiB0eXBlKGNvbW1hbmQpID09IHR5cGUoKCkpOgorICAgICAgZnVuYyA9IGNvbW1hbmRbMF0KKyAg
ICAgIGFyZ3MgPSBjb21tYW5kWzE6XQorICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MpCisgICAgZWxz
ZToKKyAgICAgIGlmIHN0ZG91dCBpcyBzeXMuc3Rkb3V0OgorICAgICAgICAjIFNhbWUgYXMgcGFz
c2luZyBzeXMuc3Rkb3V0LCBleGNlcHQgcHl0aG9uMi40IGRvZXNuJ3QgZmFpbCBvbiBpdC4KKyAg
ICAgICAgc3Vib3V0ID0gTm9uZQorICAgICAgZWxzZToKKyAgICAgICAgIyBPcGVuIHBpcGUgZm9y
IGFueXRoaW5nIGVsc2Ugc28gUG9wZW4gd29ya3Mgb24gcHl0aG9uMi40LgorICAgICAgICBzdWJv
dXQgPSBzdWJwcm9jZXNzLlBJUEUKKyAgICAgIGlmIHN0ZGVyciBpcyBzeXMuc3RkZXJyOgorICAg
ICAgICAjIFNhbWUgYXMgcGFzc2luZyBzeXMuc3RkZXJyLCBleGNlcHQgcHl0aG9uMi40IGRvZXNu
J3QgZmFpbCBvbiBpdC4KKyAgICAgICAgc3ViZXJyID0gTm9uZQorICAgICAgZWxpZiBzdGRlcnIg
aXMgTm9uZToKKyAgICAgICAgIyBNZXJnZSB3aXRoIHN0ZG91dCBpZiBzdGRlcnIgaXNuJ3Qgc3Bl
Y2lmaWVkLgorICAgICAgICBzdWJlcnIgPSBzdWJwcm9jZXNzLlNURE9VVAorICAgICAgZWxzZToK
KyAgICAgICAgIyBPcGVuIHBpcGUgZm9yIGFueXRoaW5nIGVsc2Ugc28gUG9wZW4gd29ya3Mgb24g
cHl0aG9uMi40LgorICAgICAgICBzdWJlcnIgPSBzdWJwcm9jZXNzLlBJUEUKKyAgICAgIHAgPSBz
dWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVs
bD0oc3lzLnBsYXRmb3JtID09ICd3aW4zMicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3Rkb3V0PXN1Ym91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJlcnIp
CisgICAgICBwLndhaXQoKQorICAgICAgaWYgc3Rkb3V0IGlzIE5vbmU6CisgICAgICAgIHNlbGYu
c3Rkb3V0ID0gcC5zdGRvdXQucmVhZCgpCisgICAgICBlbGlmIHN0ZG91dCBpcyBub3Qgc3lzLnN0
ZG91dDoKKyAgICAgICAgc3Rkb3V0LndyaXRlKHAuc3Rkb3V0LnJlYWQoKSkKKyAgICAgIGlmIHN0
ZGVyciBub3QgaW4gKE5vbmUsIHN5cy5zdGRlcnIpOgorICAgICAgICBzdGRlcnIud3JpdGUocC5z
dGRlcnIucmVhZCgpKQorICAgICAgcmV0dXJuIHAucmV0dXJuY29kZQorCisgIGRlZiBydW4oc2Vs
ZiwgY29tbWFuZCwgZGlzcGxheT1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUpOgorICAg
ICIiIgorICAgIFJ1bnMgYSBzaW5nbGUgY29tbWFuZCwgZGlzcGxheWluZyBpdCBmaXJzdC4KKyAg
ICAiIiIKKyAgICBpZiBkaXNwbGF5IGlzIE5vbmU6CisgICAgICBkaXNwbGF5ID0gY29tbWFuZAor
ICAgIHNlbGYuZGlzcGxheShkaXNwbGF5KQorICAgIHJldHVybiBzZWxmLmV4ZWN1dGUoY29tbWFu
ZCwgc3Rkb3V0LCBzdGRlcnIpCisKKworY2xhc3MgVW5idWZmZXJlZDoKKyAgZGVmIF9faW5pdF9f
KHNlbGYsIGZwKToKKyAgICBzZWxmLmZwID0gZnAKKyAgZGVmIHdyaXRlKHNlbGYsIGFyZyk6Cisg
ICAgc2VsZi5mcC53cml0ZShhcmcpCisgICAgc2VsZi5mcC5mbHVzaCgpCisgIGRlZiBfX2dldGF0
dHJfXyhzZWxmLCBhdHRyKToKKyAgICByZXR1cm4gZ2V0YXR0cihzZWxmLmZwLCBhdHRyKQorCitz
eXMuc3Rkb3V0ID0gVW5idWZmZXJlZChzeXMuc3Rkb3V0KQorc3lzLnN0ZGVyciA9IFVuYnVmZmVy
ZWQoc3lzLnN0ZGVycikKKworCitkZWYgZmluZF9hbGxfZ3lwdGVzdF9maWxlcyhkaXJlY3Rvcnkp
OgorICAgIHJlc3VsdCA9IFtdCisgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGso
ZGlyZWN0b3J5KToKKyAgICAgIGlmICcuc3ZuJyBpbiBkaXJzOgorICAgICAgICBkaXJzLnJlbW92
ZSgnLnN2bicpCisgICAgICByZXN1bHQuZXh0ZW5kKFsgb3MucGF0aC5qb2luKHJvb3QsIGYpIGZv
ciBmIGluIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICBpZiBmLnN0YXJ0c3dpdGgoJ2d5cHRl
c3QnKSBhbmQgZi5lbmRzd2l0aCgnLnB5JykgXSkKKyAgICByZXN1bHQuc29ydCgpCisgICAgcmV0
dXJuIHJlc3VsdAorCisKK2RlZiBtYWluKGFyZ3Y9Tm9uZSk6CisgIGlmIGFyZ3YgaXMgTm9uZToK
KyAgICBhcmd2ID0gc3lzLmFyZ3YKKworICB1c2FnZSA9ICJneXB0ZXN0LnB5IFstYWhsbnFdIFst
ZiBmb3JtYXRzXSBbdGVzdCAuLi5dIgorICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIo
dXNhZ2U9dXNhZ2UpCisgIHBhcnNlci5hZGRfb3B0aW9uKCItYSIsICItLWFsbCIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICBoZWxwPSJydW4gYWxsIHRlc3RzIikKKyAgcGFyc2Vy
LmFkZF9vcHRpb24oIi1DIiwgIi0tY2hkaXIiLCBhY3Rpb249InN0b3JlIiwgZGVmYXVsdD1Ob25l
LAorICAgICAgICAgICAgaGVscD0iY2hkaXIgdG8gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkiKQor
ICBwYXJzZXIuYWRkX29wdGlvbigiLWYiLCAiLS1mb3JtYXQiLCBhY3Rpb249InN0b3JlIiwgZGVm
YXVsdD0nJywKKyAgICAgICAgICAgIGhlbHA9InJ1biB0ZXN0cyB3aXRoIHRoZSBzcGVjaWZpZWQg
Zm9ybWF0cyIpCisgIHBhcnNlci5hZGRfb3B0aW9uKCItbCIsICItLWxpc3QiLCBhY3Rpb249InN0
b3JlX3RydWUiLAorICAgICAgICAgICAgaGVscD0ibGlzdCBhdmFpbGFibGUgdGVzdHMgYW5kIGV4
aXQiKQorICBwYXJzZXIuYWRkX29wdGlvbigiLW4iLCAiLS1uby1leGVjIiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwKKyAgICAgICAgICAgIGhlbHA9Im5vIGV4ZWN1dGUsIGp1c3QgcHJpbnQgdGhlIGNv
bW1hbmQgbGluZSIpCisgIHBhcnNlci5hZGRfb3B0aW9uKCItLXBhc3NlZCIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsCisgICAgICAgICAgICBoZWxwPSJyZXBvcnQgcGFzc2VkIHRlc3RzIikKKyAgcGFy
c2VyLmFkZF9vcHRpb24oIi0tcGF0aCIsIGFjdGlvbj0iYXBwZW5kIiwgZGVmYXVsdD1bXSwKKyAg
ICAgICAgICAgIGhlbHA9ImFkZGl0aW9uYWwgJFBBVEggZGlyZWN0b3J5IikKKyAgcGFyc2VyLmFk
ZF9vcHRpb24oIi1xIiwgIi0tcXVpZXQiLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAg
ICAgaGVscD0icXVpZXQsIGRvbid0IHByaW50IHRlc3QgY29tbWFuZCBsaW5lcyIpCisgIG9wdHMs
IGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmd2WzE6XSkKKworICBpZiBvcHRzLmNoZGlyOgor
ICAgIG9zLmNoZGlyKG9wdHMuY2hkaXIpCisKKyAgaWYgb3B0cy5wYXRoOgorICAgIG9zLmVudmly
b25bJ1BBVEgnXSArPSAnOicgKyAnOicuam9pbihvcHRzLnBhdGgpCisKKyAgaWYgbm90IGFyZ3M6
CisgICAgaWYgbm90IG9wdHMuYWxsOgorICAgICAgc3lzLnN0ZGVyci53cml0ZSgnU3BlY2lmeSAt
YSB0byBnZXQgYWxsIHRlc3RzLlxuJykKKyAgICAgIHJldHVybiAxCisgICAgYXJncyA9IFsndGVz
dCddCisKKyAgdGVzdHMgPSBbXQorICBmb3IgYXJnIGluIGFyZ3M6CisgICAgaWYgb3MucGF0aC5p
c2RpcihhcmcpOgorICAgICAgdGVzdHMuZXh0ZW5kKGZpbmRfYWxsX2d5cHRlc3RfZmlsZXMob3Mu
cGF0aC5ub3JtcGF0aChhcmcpKSkKKyAgICBlbHNlOgorICAgICAgdGVzdHMuYXBwZW5kKGFyZykK
KworICBpZiBvcHRzLmxpc3Q6CisgICAgZm9yIHRlc3QgaW4gdGVzdHM6CisgICAgICBwcmludCB0
ZXN0CisgICAgc3lzLmV4aXQoMCkKKworICBDb21tYW5kUnVubmVyLnZlcmJvc2UgPSBub3Qgb3B0
cy5xdWlldAorICBDb21tYW5kUnVubmVyLmFjdGl2ZSA9IG5vdCBvcHRzLm5vX2V4ZWMKKyAgY3Ig
PSBDb21tYW5kUnVubmVyKCkKKworICBvcy5lbnZpcm9uWydQWVRIT05QQVRIJ10gPSBvcy5wYXRo
LmFic3BhdGgoJ3Rlc3QvbGliJykKKyAgaWYgbm90IG9wdHMucXVpZXQ6CisgICAgc3lzLnN0ZG91
dC53cml0ZSgnUFlUSE9OUEFUSD0lc1xuJyAlIG9zLmVudmlyb25bJ1BZVEhPTlBBVEgnXSkKKwor
ICBwYXNzZWQgPSBbXQorICBmYWlsZWQgPSBbXQorICBub19yZXN1bHQgPSBbXQorCisgIGlmIG9w
dHMuZm9ybWF0OgorICAgIGZvcm1hdF9saXN0ID0gb3B0cy5mb3JtYXQuc3BsaXQoJywnKQorICBl
bHNlOgorICAgICMgVE9ETzogIG5vdCBkdXBsaWNhdGUgdGhpcyBtYXBwaW5nIGZyb20gcHlsaWIv
Z3lwL19faW5pdF9fLnB5CisgICAgZm9ybWF0X2xpc3QgPSBbIHsKKyAgICAgICdmcmVlYnNkNyc6
ICdtYWtlJywKKyAgICAgICdmcmVlYnNkOCc6ICdtYWtlJywKKyAgICAgICdjeWd3aW4nOiAgICdt
c3ZzJywKKyAgICAgICd3aW4zMic6ICAgICdtc3ZzJywKKyAgICAgICdsaW51eDInOiAgICdtYWtl
JywKKyAgICAgICdkYXJ3aW4nOiAgICd4Y29kZScsCisgICAgfVtzeXMucGxhdGZvcm1dIF0KKwor
ICBmb3IgZm9ybWF0IGluIGZvcm1hdF9saXN0OgorICAgIG9zLmVudmlyb25bJ1RFU1RHWVBfRk9S
TUFUJ10gPSBmb3JtYXQKKyAgICBpZiBub3Qgb3B0cy5xdWlldDoKKyAgICAgIHN5cy5zdGRvdXQu
d3JpdGUoJ1RFU1RHWVBfRk9STUFUPSVzXG4nICUgZm9ybWF0KQorCisgICAgZm9yIHRlc3QgaW4g
dGVzdHM6CisgICAgICBzdGF0dXMgPSBjci5ydW4oW3N5cy5leGVjdXRhYmxlLCB0ZXN0XSwKKyAg
ICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3lzLnN0ZG91dCwKKyAgICAgICAgICAgICAgICAg
ICAgICBzdGRlcnI9c3lzLnN0ZGVycikKKyAgICAgIGlmIHN0YXR1cyA9PSAyOgorICAgICAgICBu
b19yZXN1bHQuYXBwZW5kKHRlc3QpCisgICAgICBlbGlmIHN0YXR1czoKKyAgICAgICAgZmFpbGVk
LmFwcGVuZCh0ZXN0KQorICAgICAgZWxzZToKKyAgICAgICAgcGFzc2VkLmFwcGVuZCh0ZXN0KQor
CisgIGlmIG5vdCBvcHRzLnF1aWV0OgorICAgIGRlZiByZXBvcnQoZGVzY3JpcHRpb24sIHRlc3Rz
KToKKyAgICAgIGlmIHRlc3RzOgorICAgICAgICBpZiBsZW4odGVzdHMpID09IDE6CisgICAgICAg
ICAgc3lzLnN0ZG91dC53cml0ZSgiXG4lcyB0aGUgZm9sbG93aW5nIHRlc3Q6XG4iICUgZGVzY3Jp
cHRpb24pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgZm10ID0gIlxuJXMgdGhlIGZvbGxvd2lu
ZyAlZCB0ZXN0czpcbiIKKyAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGZtdCAlIChkZXNjcmlw
dGlvbiwgbGVuKHRlc3RzKSkpCisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlx0IiArICJcblx0
Ii5qb2luKHRlc3RzKSArICJcbiIpCisKKyAgICBpZiBvcHRzLnBhc3NlZDoKKyAgICAgIHJlcG9y
dCgiUGFzc2VkIiwgcGFzc2VkKQorICAgIHJlcG9ydCgiRmFpbGVkIiwgZmFpbGVkKQorICAgIHJl
cG9ydCgiTm8gcmVzdWx0IGZyb20iLCBub19yZXN1bHQpCisKKyAgaWYgZmFpbGVkOgorICAgIHJl
dHVybiAxCisgIGVsc2U6CisgICAgcmV0dXJuIDAKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWlu
X18iOgorICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvcHlsaWIvZ3lwL01TVlNOZXcucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIvZ3lw
L01TVlNOZXcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI3N2Q0YTUwOGY5NTg3YzMzODNkZGExYzlmZjFlY2E1
YTMyNmJkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9n
eXAvTVNWU05ldy5weQpAQCAtMCwwICsxLDM0MSBAQAorIyEvdXNyL2Jpbi9weXRob24yLjQKKwor
IyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiJOZXcgaW1w
bGVtZW50YXRpb24gb2YgVmlzdWFsIFN0dWRpbyBwcm9qZWN0IGdlbmVyYXRpb24gZm9yIFNDb25z
LiIiIgorCitpbXBvcnQgY29tbW9uCitpbXBvcnQgb3MKK2ltcG9ydCByYW5kb20KKworaW1wb3J0
IGd5cC5jb21tb24KKworIyBoYXNobGliIGlzIHN1cHBsaWVkIGFzIG9mIFB5dGhvbiAyLjUgYXMg
dGhlIHJlcGxhY2VtZW50IGludGVyZmFjZSBmb3IgbWQ1CisjIGFuZCBvdGhlciBzZWN1cmUgaGFz
aGVzLiAgSW4gMi42LCBtZDUgaXMgZGVwcmVjYXRlZC4gIEltcG9ydCBoYXNobGliIGlmCisjIGF2
YWlsYWJsZSwgYXZvaWRpbmcgYSBkZXByZWNhdGlvbiB3YXJuaW5nIHVuZGVyIDIuNi4gIEltcG9y
dCBtZDUgb3RoZXJ3aXNlLAorIyBwcmVzZXJ2aW5nIDIuNCBjb21wYXRpYmlsaXR5LgordHJ5Ogor
ICBpbXBvcnQgaGFzaGxpYgorICBfbmV3X21kNSA9IGhhc2hsaWIubWQ1CitleGNlcHQgSW1wb3J0
RXJyb3I6CisgIGltcG9ydCBtZDUKKyAgX25ld19tZDUgPSBtZDUubmV3CisKKworIyBJbml0aWFs
aXplIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yCityYW5kb20uc2VlZCgpCisKKyMgR1VJRHMgZm9y
IHByb2plY3QgdHlwZXMKK0VOVFJZX1RZUEVfR1VJRFMgPSB7CisgICAgJ3Byb2plY3QnOiAnezhC
QzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0nLAorICAgICdmb2xkZXInOiAnezIx
NTBFMzMzLThGREMtNDJBMy05NDc0LTFBMzk1NkQ0NkRFOH0nLAorfQorCisjLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisjIEhlbHBlciBmdW5jdGlvbnMKKworCitkZWYgTWFrZUd1aWQobmFtZSwgc2Vl
ZD0nbXN2c19uZXcnKToKKyAgIiIiUmV0dXJucyBhIEdVSUQgZm9yIHRoZSBzcGVjaWZpZWQgdGFy
Z2V0IG5hbWUuCisKKyAgQXJnczoKKyAgICBuYW1lOiBUYXJnZXQgbmFtZS4KKyAgICBzZWVkOiBT
ZWVkIGZvciBNRDUgaGFzaC4KKyAgUmV0dXJuczoKKyAgICBBIEdVSUQtbGluZSBzdHJpbmcgY2Fs
Y3VsYXRlZCBmcm9tIHRoZSBuYW1lIGFuZCBzZWVkLgorCisgIFRoaXMgZ2VuZXJhdGVzIHNvbWV0
aGluZyB3aGljaCBsb29rcyBsaWtlIGEgR1VJRCwgYnV0IGRlcGVuZHMgb25seSBvbiB0aGUKKyAg
bmFtZSBhbmQgc2VlZC4gIFRoaXMgbWVhbnMgdGhlIHNhbWUgbmFtZS9zZWVkIHdpbGwgYWx3YXlz
IGdlbmVyYXRlIHRoZSBzYW1lCisgIEdVSUQsIHNvIHRoYXQgcHJvamVjdHMgYW5kIHNvbHV0aW9u
cyB3aGljaCByZWZlciB0byBlYWNoIG90aGVyIGNhbiBleHBsaWNpdGx5CisgIGRldGVybWluZSB0
aGUgR1VJRCB0byByZWZlciB0byBleHBsaWNpdGx5LiAgSXQgYWxzbyBtZWFucyB0aGF0IHRoZSBH
VUlEIHdpbGwKKyAgbm90IGNoYW5nZSB3aGVuIHRoZSBwcm9qZWN0IGZvciBhIHRhcmdldCBpcyBy
ZWJ1aWx0LgorICAiIiIKKyAgIyBDYWxjdWxhdGUgYSBNRDUgc2lnbmF0dXJlIGZvciB0aGUgc2Vl
ZCBhbmQgbmFtZS4KKyAgZCA9IF9uZXdfbWQ1KHN0cihzZWVkKSArIHN0cihuYW1lKSkuaGV4ZGln
ZXN0KCkudXBwZXIoKQorICAjIENvbnZlcnQgbW9zdCBvZiB0aGUgc2lnbmF0dXJlIHRvIEdVSUQg
Zm9ybSAoZGlzY2FyZCB0aGUgcmVzdCkKKyAgZ3VpZCA9ICgneycgKyBkWzo4XSArICctJyArIGRb
ODoxMl0gKyAnLScgKyBkWzEyOjE2XSArICctJyArIGRbMTY6MjBdCisgICAgICAgICAgKyAnLScg
KyBkWzIwOjMyXSArICd9JykKKyAgcmV0dXJuIGd1aWQKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisKK2NsYXNzIE1TVlNGb2xkZXI6CisgICIiIkZvbGRlciBpbiBhIFZpc3VhbCBTdHVkaW8g
cHJvamVjdCBvciBzb2x1dGlvbi4iIiIKKworICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgbmFt
ZSA9IE5vbmUsIGVudHJpZXMgPSBOb25lLAorICAgICAgICAgICAgICAgZ3VpZCA9IE5vbmUsIGl0
ZW1zID0gTm9uZSk6CisgICAgIiIiSW5pdGlhbGl6ZXMgdGhlIGZvbGRlci4KKworICAgIEFyZ3M6
CisgICAgICBwYXRoOiBGdWxsIHBhdGggdG8gdGhlIGZvbGRlci4KKyAgICAgIG5hbWU6IE5hbWUg
b2YgdGhlIGZvbGRlci4KKyAgICAgIGVudHJpZXM6IExpc3Qgb2YgZm9sZGVyIGVudHJpZXMgdG8g
bmVzdCBpbnNpZGUgdGhpcyBmb2xkZXIuICBNYXkgY29udGFpbgorICAgICAgICAgIEZvbGRlciBv
ciBQcm9qZWN0IG9iamVjdHMuICBNYXkgYmUgTm9uZSwgaWYgdGhlIGZvbGRlciBpcyBlbXB0eS4K
KyAgICAgIGd1aWQ6IEdVSUQgdG8gdXNlIGZvciBmb2xkZXIsIGlmIG5vdCBOb25lLgorICAgICAg
aXRlbXM6IExpc3Qgb2Ygc29sdXRpb24gaXRlbXMgdG8gaW5jbHVkZSBpbiB0aGUgZm9sZGVyIHBy
b2plY3QuICBNYXkgYmUKKyAgICAgICAgICBOb25lLCBpZiB0aGUgZm9sZGVyIGRvZXMgbm90IGRp
cmVjdGx5IGNvbnRhaW4gaXRlbXMuCisgICAgIiIiCisgICAgaWYgbmFtZToKKyAgICAgIHNlbGYu
bmFtZSA9IG5hbWUKKyAgICBlbHNlOgorICAgICAgIyBVc2UgbGFzdCBsYXllci4KKyAgICAgIHNl
bGYubmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKKworICAgIHNlbGYucGF0aCA9IHBhdGgK
KyAgICBzZWxmLmd1aWQgPSBndWlkCisKKyAgICAjIENvcHkgcGFzc2VkIGxpc3RzIChvciBzZXQg
dG8gZW1wdHkgbGlzdHMpCisgICAgc2VsZi5lbnRyaWVzID0gbGlzdChlbnRyaWVzIG9yIFtdKQor
ICAgIHNlbGYuaXRlbXMgPSBsaXN0KGl0ZW1zIG9yIFtdKQorCisgICAgc2VsZi5lbnRyeV90eXBl
X2d1aWQgPSBFTlRSWV9UWVBFX0dVSURTWydmb2xkZXInXQorCisgIGRlZiBnZXRfZ3VpZChzZWxm
KToKKyAgICBpZiBzZWxmLmd1aWQgaXMgTm9uZToKKyAgICAgICMgVXNlIGNvbnNpc3RlbnQgZ3Vp
ZHMgZm9yIGZvbGRlcnMgKHNvIHRoaW5ncyBkb24ndCByZWdlbmVyYXRlKS4KKyAgICAgIHNlbGYu
Z3VpZCA9IE1ha2VHdWlkKHNlbGYucGF0aCwgc2VlZD0nbXN2c19mb2xkZXInKQorICAgIHJldHVy
biBzZWxmLmd1aWQKKworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworY2xhc3MgTVNWU1By
b2plY3Q6CisgICIiIlZpc3VhbCBTdHVkaW8gcHJvamVjdC4iIiIKKworICBkZWYgX19pbml0X18o
c2VsZiwgcGF0aCwgbmFtZSA9IE5vbmUsIGRlcGVuZGVuY2llcyA9IE5vbmUsIGd1aWQgPSBOb25l
LAorICAgICAgICAgICAgICAgc3BlYyA9IE5vbmUsIGJ1aWxkX2ZpbGUgPSBOb25lLCBjb25maWdf
cGxhdGZvcm1fb3ZlcnJpZGVzID0gTm9uZSwKKyAgICAgICAgICAgICAgIGZpeHBhdGhfcHJlZml4
ID0gTm9uZSk6CisgICAgIiIiSW5pdGlhbGl6ZXMgdGhlIHByb2plY3QuCisKKyAgICBBcmdzOgor
ICAgICAgcGF0aDogQWJzb2x1dGUgcGF0aCB0byB0aGUgcHJvamVjdCBmaWxlLgorICAgICAgbmFt
ZTogTmFtZSBvZiBwcm9qZWN0LiAgSWYgTm9uZSwgdGhlIG5hbWUgd2lsbCBiZSB0aGUgc2FtZSBh
cyB0aGUgYmFzZQorICAgICAgICAgIG5hbWUgb2YgdGhlIHByb2plY3QgZmlsZS4KKyAgICAgIGRl
cGVuZGVuY2llczogTGlzdCBvZiBvdGhlciBQcm9qZWN0IG9iamVjdHMgdGhpcyBwcm9qZWN0IGlz
IGRlcGVuZGVudAorICAgICAgICAgIHVwb24sIGlmIG5vdCBOb25lLgorICAgICAgZ3VpZDogR1VJ
RCB0byB1c2UgZm9yIHByb2plY3QsIGlmIG5vdCBOb25lLgorICAgICAgc3BlYzogRGljdGlvbmFy
eSBzcGVjaWZ5aW5nIGhvdyB0byBidWlsZCB0aGlzIHByb2plY3QuCisgICAgICBidWlsZF9maWxl
OiBGaWxlbmFtZSBvZiB0aGUgLmd5cCBmaWxlIHRoYXQgdGhlIHZjcHJvaiBmaWxlIGNvbWVzIGZy
b20uCisgICAgICBjb25maWdfcGxhdGZvcm1fb3ZlcnJpZGVzOiBvcHRpb25hbCBkaWN0IG9mIGNv
bmZpZ3VyYXRpb24gcGxhdGZvcm1zIHRvCisgICAgICAgICAgdXNlZCBpbiBwbGFjZSBvZiB0aGUg
ZGVmYXVsdCBmb3IgdGhpcyB0YXJnZXQuCisgICAgICBmaXhwYXRoX3ByZWZpeDogdGhlIHBhdGgg
dXNlZCB0byBhZGp1c3QgdGhlIGJlaGF2aW9yIG9mIF9maXhwYXRoCisgICAgIiIiCisgICAgc2Vs
Zi5wYXRoID0gcGF0aAorICAgIHNlbGYuZ3VpZCA9IGd1aWQKKyAgICBzZWxmLnNwZWMgPSBzcGVj
CisgICAgc2VsZi5idWlsZF9maWxlID0gYnVpbGRfZmlsZQorICAgICMgVXNlIHByb2plY3QgZmls
ZW5hbWUgaWYgbmFtZSBub3Qgc3BlY2lmaWVkCisgICAgc2VsZi5uYW1lID0gbmFtZSBvciBvcy5w
YXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUocGF0aCkpWzBdCisKKyAgICAjIENvcHkgcGFz
c2VkIGxpc3RzIChvciBzZXQgdG8gZW1wdHkgbGlzdHMpCisgICAgc2VsZi5kZXBlbmRlbmNpZXMg
PSBsaXN0KGRlcGVuZGVuY2llcyBvciBbXSkKKworICAgIHNlbGYuZW50cnlfdHlwZV9ndWlkID0g
RU5UUllfVFlQRV9HVUlEU1sncHJvamVjdCddCisKKyAgICBpZiBjb25maWdfcGxhdGZvcm1fb3Zl
cnJpZGVzOgorICAgICAgc2VsZi5jb25maWdfcGxhdGZvcm1fb3ZlcnJpZGVzID0gY29uZmlnX3Bs
YXRmb3JtX292ZXJyaWRlcworICAgIGVsc2U6CisgICAgICBzZWxmLmNvbmZpZ19wbGF0Zm9ybV9v
dmVycmlkZXMgPSB7fQorICAgIHNlbGYuZml4cGF0aF9wcmVmaXggPSBmaXhwYXRoX3ByZWZpeAor
CisgIGRlZiBzZXRfZGVwZW5kZW5jaWVzKHNlbGYsIGRlcGVuZGVuY2llcyk6CisgICAgc2VsZi5k
ZXBlbmRlbmNpZXMgPSBsaXN0KGRlcGVuZGVuY2llcyBvciBbXSkKKyAgCisgIGRlZiBnZXRfZ3Vp
ZChzZWxmKToKKyAgICBpZiBzZWxmLmd1aWQgaXMgTm9uZToKKyAgICAgICMgU2V0IEdVSUQgZnJv
bSBwYXRoCisgICAgICAjIFRPRE8ocnNwYW5nbGVyKTogVGhpcyBpcyBmcmFnaWxlLgorICAgICAg
IyAxLiBXZSBjYW4ndCBqdXN0IHVzZSB0aGUgcHJvamVjdCBmaWxlbmFtZSBzYW5zIHBhdGgsIHNp
bmNlIHRoZXJlIGNvdWxkCisgICAgICAjICAgIGJlIG11bHRpcGxlIHByb2plY3RzIHdpdGggdGhl
IHNhbWUgYmFzZSBuYW1lIChmb3IgZXhhbXBsZSwKKyAgICAgICMgICAgZm9vL3VuaXR0ZXN0LnZj
cHJvaiBhbmQgYmFyL3VuaXR0ZXN0LnZjcHJvaikuCisgICAgICAjIDIuIFRoZSBwYXRoIG5lZWRz
IHRvIGJlIHJlbGF0aXZlIHRvICRTT1VSQ0VfUk9PVCwgc28gdGhhdCB0aGUgcHJvamVjdAorICAg
ICAgIyAgICBHVUlEIGlzIHRoZSBzYW1lIHdoZXRoZXIgaXQncyBpbmNsdWRlZCBmcm9tIGJhc2Uv
YmFzZS5zbG4gb3IKKyAgICAgICMgICAgZm9vL2Jhci9iYXovYmF6LnNsbi4KKyAgICAgICMgMy4g
VGhlIEdVSUQgbmVlZHMgdG8gYmUgdGhlIHNhbWUgZWFjaCB0aW1lIHRoaXMgYnVpbGRlciBpcyBp
bnZva2VkLCBzbworICAgICAgIyAgICB0aGF0IHdlIGRvbid0IG5lZWQgdG8gcmVidWlsZCB0aGUg
c29sdXRpb24gd2hlbiB0aGUgcHJvamVjdCBjaGFuZ2VzLgorICAgICAgIyA0LiBXZSBzaG91bGQg
YmUgYWJsZSB0byBoYW5kbGUgcHJlLWJ1aWx0IHByb2plY3QgZmlsZXMgYnkgcmVhZGluZyB0aGUK
KyAgICAgICMgICAgR1VJRCBmcm9tIHRoZSBmaWxlcy4KKyAgICAgIHNlbGYuZ3VpZCA9IE1ha2VH
dWlkKHNlbGYubmFtZSkKKyAgICByZXR1cm4gc2VsZi5ndWlkCisKKyMtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworCitjbGFzcyBNU1ZTU29sdXRpb246CisgICIiIlZpc3VhbCBTdHVkaW8gc29sdXRp
b24uIiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIHZlcnNpb24sIGVudHJpZXM9Tm9u
ZSwgdmFyaWFudHM9Tm9uZSwKKyAgICAgICAgICAgICAgIHdlYnNpdGVQcm9wZXJ0aWVzPVRydWUp
OgorICAgICIiIkluaXRpYWxpemVzIHRoZSBzb2x1dGlvbi4KKworICAgIEFyZ3M6CisgICAgICBw
YXRoOiBQYXRoIHRvIHNvbHV0aW9uIGZpbGUuCisgICAgICB2ZXJzaW9uOiBGb3JtYXQgdmVyc2lv
biB0byBlbWl0LgorICAgICAgZW50cmllczogTGlzdCBvZiBlbnRyaWVzIGluIHNvbHV0aW9uLiAg
TWF5IGNvbnRhaW4gRm9sZGVyIG9yIFByb2plY3QKKyAgICAgICAgICBvYmplY3RzLiAgTWF5IGJl
IE5vbmUsIGlmIHRoZSBmb2xkZXIgaXMgZW1wdHkuCisgICAgICB2YXJpYW50czogTGlzdCBvZiBi
dWlsZCB2YXJpYW50IHN0cmluZ3MuICBJZiBub25lLCBhIGRlZmF1bHQgbGlzdCB3aWxsCisgICAg
ICAgICAgYmUgdXNlZC4KKyAgICAgIHdlYnNpdGVQcm9wZXJ0aWVzOiBGbGFnIHRvIGRlY2lkZSBp
ZiB0aGUgd2Vic2l0ZSBwcm9wZXJ0aWVzIHNlY3Rpb24KKyAgICAgICAgICBpcyBnZW5lcmF0ZWQu
CisgICAgIiIiCisgICAgc2VsZi5wYXRoID0gcGF0aAorICAgIHNlbGYud2Vic2l0ZVByb3BlcnRp
ZXMgPSB3ZWJzaXRlUHJvcGVydGllcworICAgIHNlbGYudmVyc2lvbiA9IHZlcnNpb24KKworICAg
ICMgQ29weSBwYXNzZWQgbGlzdHMgKG9yIHNldCB0byBlbXB0eSBsaXN0cykKKyAgICBzZWxmLmVu
dHJpZXMgPSBsaXN0KGVudHJpZXMgb3IgW10pCisKKyAgICBpZiB2YXJpYW50czoKKyAgICAgICMg
Q29weSBwYXNzZWQgbGlzdAorICAgICAgc2VsZi52YXJpYW50cyA9IHZhcmlhbnRzWzpdCisgICAg
ZWxzZToKKyAgICAgICMgVXNlIGRlZmF1bHQKKyAgICAgIHNlbGYudmFyaWFudHMgPSBbJ0RlYnVn
fFdpbjMyJywgJ1JlbGVhc2V8V2luMzInXQorICAgICMgVE9ETyhyc3BhbmdsZXIpOiBOZWVkIHRv
IGJlIGFibGUgdG8gaGFuZGxlIGEgbWFwcGluZyBvZiBzb2x1dGlvbiBjb25maWcKKyAgICAjIHRv
IHByb2plY3QgY29uZmlnLiAgU2hvdWxkIHdlIGJlIGFibGUgdG8gaGFuZGxlIHZhcmlhbnRzIGJl
aW5nIGEgZGljdCwKKyAgICAjIG9yIGFkZCBhIHNlcGFyYXRlIHZhcmlhbnRfbWFwIHZhcmlhYmxl
PyAgSWYgaXQncyBhIGRpY3QsIHdlIGNhbid0CisgICAgIyBndWFyYW50ZWUgdGhlIG9yZGVyIG9m
IHZhcmlhbnRzIHNpbmNlIGRpY3Qga2V5cyBhcmVuJ3Qgb3JkZXJlZC4KKworCisgICAgIyBUT0RP
KHJzcGFuZ2xlcik6IEF1dG9tYXRpY2FsbHkgd3JpdGUgdG8gZGlzayBmb3Igbm93OyBzaG91bGQg
ZGVsYXkgdW50aWwKKyAgICAjIG5vZGUtZXZhbHVhdGlvbiB0aW1lLgorICAgIHNlbGYuV3JpdGUo
KQorCisKKyAgZGVmIFdyaXRlKHNlbGYsIHdyaXRlcj1jb21tb24uV3JpdGVPbkRpZmYpOgorICAg
ICIiIldyaXRlcyB0aGUgc29sdXRpb24gZmlsZSB0byBkaXNrLgorCisgICAgUmFpc2VzOgorICAg
ICAgSW5kZXhFcnJvcjogQW4gZW50cnkgYXBwZWFycyBtdWx0aXBsZSB0aW1lcy4KKyAgICAiIiIK
KyAgICAjIFdhbGsgdGhlIGVudHJ5IHRyZWUgYW5kIGNvbGxlY3QgYWxsIHRoZSBmb2xkZXJzIGFu
ZCBwcm9qZWN0cy4KKyAgICBhbGxfZW50cmllcyA9IFtdCisgICAgZW50cmllc190b19jaGVjayA9
IHNlbGYuZW50cmllc1s6XQorICAgIHdoaWxlIGVudHJpZXNfdG9fY2hlY2s6CisgICAgICAjIFBv
cCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpc3QgdG8gcHJlc2VydmUgdGhlIHVzZXIncyBv
cmRlci4KKyAgICAgIGUgPSBlbnRyaWVzX3RvX2NoZWNrLnBvcCgwKQorCisgICAgICAjIEEgcHJv
amVjdCBvciBmb2xkZXIgY2FuIG9ubHkgYXBwZWFyIG9uY2UgaW4gdGhlIHNvbHV0aW9uJ3MgZm9s
ZGVyIHRyZWUuCisgICAgICAjIFRoaXMgYWxzbyBwcm90ZWN0cyBmcm9tIGN5Y2xlcy4KKyAgICAg
IGlmIGUgaW4gYWxsX2VudHJpZXM6CisgICAgICAgICNyYWlzZSBJbmRleEVycm9yKCdFbnRyeSAi
JXMiIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gc29sdXRpb24nICUKKyAgICAgICAgIyAgICAg
ICAgICAgICAgICAgZS5uYW1lKQorICAgICAgICBjb250aW51ZQorCisgICAgICBhbGxfZW50cmll
cy5hcHBlbmQoZSkKKworICAgICAgIyBJZiB0aGlzIGlzIGEgZm9sZGVyLCBjaGVjayBpdHMgZW50
cmllcyB0b28uCisgICAgICBpZiBpc2luc3RhbmNlKGUsIE1TVlNGb2xkZXIpOgorICAgICAgICBl
bnRyaWVzX3RvX2NoZWNrICs9IGUuZW50cmllcworCisgICAgIyBTb3J0IGJ5IG5hbWUgdGhlbiBn
dWlkIChzbyB0aGluZ3MgYXJlIGluIG9yZGVyIG9uIHZzMjAwOCkuCisgICAgZGVmIE5hbWVUaGVu
R3VpZChhLCBiKToKKyAgICAgIGlmIGEubmFtZSA8IGIubmFtZTogcmV0dXJuIC0xCisgICAgICBp
ZiBhLm5hbWUgPiBiLm5hbWU6IHJldHVybiAxCisgICAgICBpZiBhLmdldF9ndWlkKCkgPCBiLmdl
dF9ndWlkKCk6IHJldHVybiAtMQorICAgICAgaWYgYS5nZXRfZ3VpZCgpID4gYi5nZXRfZ3VpZCgp
OiByZXR1cm4gMQorICAgICAgcmV0dXJuIDAKKworICAgIGFsbF9lbnRyaWVzID0gc29ydGVkKGFs
bF9lbnRyaWVzLCBOYW1lVGhlbkd1aWQpCisKKyAgICAjIE9wZW4gZmlsZSBhbmQgcHJpbnQgaGVh
ZGVyCisgICAgZiA9IHdyaXRlcihzZWxmLnBhdGgpCisgICAgZi53cml0ZSgnTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgJworICAgICAgICAgICAgJ0Zvcm1hdCBWZXJzaW9u
ICVzXHJcbicgJSBzZWxmLnZlcnNpb24uU29sdXRpb25WZXJzaW9uKCkpCisgICAgZi53cml0ZSgn
IyAlc1xyXG4nICUgc2VsZi52ZXJzaW9uLkRlc2NyaXB0aW9uKCkpCisKKyAgICAjIFByb2plY3Qg
ZW50cmllcworICAgIHNsbl9yb290ID0gb3MucGF0aC5zcGxpdChzZWxmLnBhdGgpWzBdCisgICAg
Zm9yIGUgaW4gYWxsX2VudHJpZXM6CisgICAgICByZWxhdGl2ZV9wYXRoID0gZ3lwLmNvbW1vbi5S
ZWxhdGl2ZVBhdGgoZS5wYXRoLCBzbG5fcm9vdCkKKyAgICAgIGYud3JpdGUoJ1Byb2plY3QoIiVz
IikgPSAiJXMiLCAiJXMiLCAiJXMiXHJcbicgJSAoCisgICAgICAgICAgZS5lbnRyeV90eXBlX2d1
aWQsICAgICAgICAgICMgRW50cnkgdHlwZSBHVUlECisgICAgICAgICAgZS5uYW1lLCAgICAgICAg
ICAgICAgICAgICAgICMgRm9sZGVyIG5hbWUKKyAgICAgICAgICByZWxhdGl2ZV9wYXRoLnJlcGxh
Y2UoJy8nLCAnXFwnKSwgICMgRm9sZGVyIG5hbWUgKGFnYWluKQorICAgICAgICAgIGUuZ2V0X2d1
aWQoKSwgICAgICAgICAgICAgICAjIEVudHJ5IEdVSUQKKyAgICAgICkpCisKKyAgICAgICMgVE9E
Tyhyc3BhbmdsZXIpOiBOZWVkIGEgd2F5IHRvIGNvbmZpZ3VyZSB0aGlzIHN0dWZmCisgICAgICBp
ZiBzZWxmLndlYnNpdGVQcm9wZXJ0aWVzOgorICAgICAgICBmLndyaXRlKCdcdFByb2plY3RTZWN0
aW9uKFdlYnNpdGVQcm9wZXJ0aWVzKSA9IHByZVByb2plY3RcclxuJworICAgICAgICAgICAgICAg
ICdcdFx0RGVidWcuQXNwTmV0Q29tcGlsZXIuRGVidWcgPSAiVHJ1ZSJcclxuJworICAgICAgICAg
ICAgICAgICdcdFx0UmVsZWFzZS5Bc3BOZXRDb21waWxlci5EZWJ1ZyA9ICJGYWxzZSJcclxuJwor
ICAgICAgICAgICAgICAgICdcdEVuZFByb2plY3RTZWN0aW9uXHJcbicpCisKKyAgICAgIGlmIGlz
aW5zdGFuY2UoZSwgTVNWU0ZvbGRlcik6CisgICAgICAgIGlmIGUuaXRlbXM6CisgICAgICAgICAg
Zi53cml0ZSgnXHRQcm9qZWN0U2VjdGlvbihTb2x1dGlvbkl0ZW1zKSA9IHByZVByb2plY3Rcclxu
JykKKyAgICAgICAgICBmb3IgaSBpbiBlLml0ZW1zOgorICAgICAgICAgICAgZi53cml0ZSgnXHRc
dCVzID0gJXNcclxuJyAlIChpLCBpKSkKKyAgICAgICAgICBmLndyaXRlKCdcdEVuZFByb2plY3RT
ZWN0aW9uXHJcbicpCisKKyAgICAgIGlmIGlzaW5zdGFuY2UoZSwgTVNWU1Byb2plY3QpOgorICAg
ICAgICBpZiBlLmRlcGVuZGVuY2llczoKKyAgICAgICAgICBmLndyaXRlKCdcdFByb2plY3RTZWN0
aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3RcclxuJykKKyAgICAgICAgICBm
b3IgZCBpbiBlLmRlcGVuZGVuY2llczoKKyAgICAgICAgICAgIGYud3JpdGUoJ1x0XHQlcyA9ICVz
XHJcbicgJSAoZC5nZXRfZ3VpZCgpLCBkLmdldF9ndWlkKCkpKQorICAgICAgICAgIGYud3JpdGUo
J1x0RW5kUHJvamVjdFNlY3Rpb25cclxuJykKKworICAgICAgZi53cml0ZSgnRW5kUHJvamVjdFxy
XG4nKQorCisgICAgIyBHbG9iYWwgc2VjdGlvbgorICAgIGYud3JpdGUoJ0dsb2JhbFxyXG4nKQor
CisgICAgIyBDb25maWd1cmF0aW9ucyAodmFyaWFudHMpCisgICAgZi53cml0ZSgnXHRHbG9iYWxT
ZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvblxyXG4n
KQorICAgIGZvciB2IGluIHNlbGYudmFyaWFudHM6CisgICAgICBmLndyaXRlKCdcdFx0JXMgPSAl
c1xyXG4nICUgKHYsIHYpKQorICAgIGYud3JpdGUoJ1x0RW5kR2xvYmFsU2VjdGlvblxyXG4nKQor
CisgICAgIyBTb3J0IGNvbmZpZyBndWlkcyBmb3IgZWFzaWVyIGRpZmZpbmcgb2Ygc29sdXRpb24g
Y2hhbmdlcy4KKyAgICBjb25maWdfZ3VpZHMgPSBbXQorICAgIGNvbmZpZ19ndWlkc19vdmVycmlk
ZXMgPSB7fQorICAgIGZvciBlIGluIGFsbF9lbnRyaWVzOgorICAgICAgaWYgaXNpbnN0YW5jZShl
LCBNU1ZTUHJvamVjdCk6CisgICAgICAgIGNvbmZpZ19ndWlkcy5hcHBlbmQoZS5nZXRfZ3VpZCgp
KQorICAgICAgICBjb25maWdfZ3VpZHNfb3ZlcnJpZGVzW2UuZ2V0X2d1aWQoKV0gPSBlLmNvbmZp
Z19wbGF0Zm9ybV9vdmVycmlkZXMKKyAgICBjb25maWdfZ3VpZHMuc29ydCgpCisKKyAgICBmLndy
aXRlKCdcdEdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9z
dFNvbHV0aW9uXHJcbicpCisgICAgZm9yIGcgaW4gY29uZmlnX2d1aWRzOgorICAgICAgZm9yIHYg
aW4gc2VsZi52YXJpYW50czoKKyAgICAgICAgbnYgPSBjb25maWdfZ3VpZHNfb3ZlcnJpZGVzW2dd
LmdldCh2LCB2KQorICAgICAgICAjIFBpY2sgd2hpY2ggcHJvamVjdCBjb25maWd1cmF0aW9uIHRv
IGJ1aWxkIGZvciB0aGlzIHNvbHV0aW9uCisgICAgICAgICMgY29uZmlndXJhdGlvbi4KKyAgICAg
ICAgZi53cml0ZSgnXHRcdCVzLiVzLkFjdGl2ZUNmZyA9ICVzXHJcbicgJSAoCisgICAgICAgICAg
ICBnLCAgICAgICAgICAgICAgIyBQcm9qZWN0IEdVSUQKKyAgICAgICAgICAgIHYsICAgICAgICAg
ICAgICAjIFNvbHV0aW9uIGJ1aWxkIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIG52LCAgICAg
ICAgICAgICAjIFByb2plY3QgYnVpbGQgY29uZmlnIGZvciB0aGF0IHNvbHV0aW9uIGNvbmZpZwor
ICAgICAgICApKQorCisgICAgICAgICMgRW5hYmxlIHByb2plY3QgaW4gdGhpcyBzb2x1dGlvbiBj
b25maWd1cmF0aW9uLgorICAgICAgICBmLndyaXRlKCdcdFx0JXMuJXMuQnVpbGQuMCA9ICVzXHJc
bicgJSAoCisgICAgICAgICAgICBnLCAgICAgICAgICAgICAgIyBQcm9qZWN0IEdVSUQKKyAgICAg
ICAgICAgIHYsICAgICAgICAgICAgICAjIFNvbHV0aW9uIGJ1aWxkIGNvbmZpZ3VyYXRpb24KKyAg
ICAgICAgICAgIG52LCAgICAgICAgICAgICAjIFByb2plY3QgYnVpbGQgY29uZmlnIGZvciB0aGF0
IHNvbHV0aW9uIGNvbmZpZworICAgICAgICApKQorICAgIGYud3JpdGUoJ1x0RW5kR2xvYmFsU2Vj
dGlvblxyXG4nKQorCisgICAgIyBUT0RPKHJzcGFuZ2xlcik6IFNob3VsZCBiZSBhYmxlIHRvIGNv
bmZpZ3VyZSB0aGlzIHN0dWZmIHRvbyAodGhvdWdoIEkndmUKKyAgICAjIG5ldmVyIHNlZW4gdGhp
cyBiZSBhbnkgZGlmZmVyZW50KQorICAgIGYud3JpdGUoJ1x0R2xvYmFsU2VjdGlvbihTb2x1dGlv
blByb3BlcnRpZXMpID0gcHJlU29sdXRpb25cclxuJykKKyAgICBmLndyaXRlKCdcdFx0SGlkZVNv
bHV0aW9uTm9kZSA9IEZBTFNFXHJcbicpCisgICAgZi53cml0ZSgnXHRFbmRHbG9iYWxTZWN0aW9u
XHJcbicpCisKKyAgICAjIEZvbGRlciBtYXBwaW5ncworICAgICMgVE9ETyhyc3BhbmdsZXIpOiBT
aG91bGQgb21pdCB0aGlzIHNlY3Rpb24gaWYgdGhlcmUgYXJlIG5vIGZvbGRlcnMKKyAgICBmLndy
aXRlKCdcdEdsb2JhbFNlY3Rpb24oTmVzdGVkUHJvamVjdHMpID0gcHJlU29sdXRpb25cclxuJykK
KyAgICBmb3IgZSBpbiBhbGxfZW50cmllczoKKyAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGUsIE1T
VlNGb2xkZXIpOgorICAgICAgICBjb250aW51ZSAgICAgICAgIyBEb2VzIG5vdCBhcHBseSB0byBw
cm9qZWN0cywgb25seSBmb2xkZXJzCisgICAgICBmb3Igc3ViZW50cnkgaW4gZS5lbnRyaWVzOgor
ICAgICAgICBmLndyaXRlKCdcdFx0JXMgPSAlc1xyXG4nICUgKHN1YmVudHJ5LmdldF9ndWlkKCks
IGUuZ2V0X2d1aWQoKSkpCisgICAgZi53cml0ZSgnXHRFbmRHbG9iYWxTZWN0aW9uXHJcbicpCisK
KyAgICBmLndyaXRlKCdFbmRHbG9iYWxcclxuJykKKworICAgIGYuY2xvc2UoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9NU1ZTUHJvamVjdC5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvTVNWU1Byb2plY3QucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI0
NmZkZDljZGExZDNjZTU5Y2EyNDk5MmYwOTZjZjE4NmQzOGJiOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvTVNWU1Byb2plY3QucHkKQEAgLTAsMCAr
MSwyNDUgQEAKKyMhL3Vzci9iaW4vcHl0aG9uMi40CisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiVmlzdWFsIFN0dWRpbyBwcm9qZWN0IHJlYWRlci93
cml0ZXIuIiIiCisKK2ltcG9ydCBjb21tb24KK2ltcG9ydCB4bWwuZG9tCitpbXBvcnQgeG1sX2Zp
eAorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworY2xhc3MgVG9vbChvYmplY3QpOgorICAi
IiJWaXN1YWwgU3R1ZGlvIHRvb2wuIiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGF0
dHJzPU5vbmUpOgorICAgICIiIkluaXRpYWxpemVzIHRoZSB0b29sLgorCisgICAgQXJnczoKKyAg
ICAgIG5hbWU6IFRvb2wgbmFtZS4KKyAgICAgIGF0dHJzOiBEaWN0IG9mIHRvb2wgYXR0cmlidXRl
czsgbWF5IGJlIE5vbmUuCisgICAgIiIiCisgICAgc2VsZi5uYW1lID0gbmFtZQorICAgIHNlbGYu
YXR0cnMgPSBhdHRycyBvciB7fQorCisgIGRlZiBDcmVhdGVFbGVtZW50KHNlbGYsIGRvYyk6Cisg
ICAgIiIiQ3JlYXRlcyBhbiBlbGVtZW50IGZvciB0aGUgdG9vbC4KKworICAgIEFyZ3M6CisgICAg
ICBkb2M6IHhtbC5kb20uRG9jdW1lbnQgb2JqZWN0IHRvIHVzZSBmb3Igbm9kZSBjcmVhdGlvbi4K
KworICAgIFJldHVybnM6CisgICAgICBBIG5ldyB4bWwuZG9tLkVsZW1lbnQgZm9yIHRoZSB0b29s
LgorICAgICIiIgorICAgIG5vZGUgPSBkb2MuY3JlYXRlRWxlbWVudCgnVG9vbCcpCisgICAgbm9k
ZS5zZXRBdHRyaWJ1dGUoJ05hbWUnLCBzZWxmLm5hbWUpCisgICAgZm9yIGssIHYgaW4gc2VsZi5h
dHRycy5pdGVtcygpOgorICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoaywgdikKKyAgICByZXR1cm4g
bm9kZQorCisKK2NsYXNzIEZpbHRlcihvYmplY3QpOgorICAiIiJWaXN1YWwgU3R1ZGlvIGZpbHRl
ciAtIHRoYXQgaXMsIGEgdmlydHVhbCBmb2xkZXIuIiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUsIGNvbnRlbnRzPU5vbmUpOgorICAgICIiIkluaXRpYWxpemVzIHRoZSBmb2xkZXIuCisK
KyAgICBBcmdzOgorICAgICAgbmFtZTogRmlsdGVyIChmb2xkZXIpIG5hbWUuCisgICAgICBjb250
ZW50czogTGlzdCBvZiBmaWxlbmFtZXMgYW5kL29yIEZpbHRlciBvYmplY3RzIGNvbnRhaW5lZC4K
KyAgICAiIiIKKyAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgc2VsZi5jb250ZW50cyA9IGxpc3Qo
Y29udGVudHMgb3IgW10pCisKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK2NsYXNzIFdy
aXRlcihvYmplY3QpOgorICAiIiJWaXN1YWwgU3R1ZGlvIFhNTCBwcm9qZWN0IHdyaXRlci4iIiIK
KworICBkZWYgX19pbml0X18oc2VsZiwgcHJvamVjdF9wYXRoLCB2ZXJzaW9uKToKKyAgICAiIiJJ
bml0aWFsaXplcyB0aGUgcHJvamVjdC4KKworICAgIEFyZ3M6CisgICAgICBwcm9qZWN0X3BhdGg6
IFBhdGggdG8gdGhlIHByb2plY3QgZmlsZS4KKyAgICAgIHZlcnNpb246IEZvcm1hdCB2ZXJzaW9u
IHRvIGVtaXQuCisgICAgIiIiCisgICAgc2VsZi5wcm9qZWN0X3BhdGggPSBwcm9qZWN0X3BhdGgK
KyAgICBzZWxmLmRvYyA9IE5vbmUKKyAgICBzZWxmLnZlcnNpb24gPSB2ZXJzaW9uCisKKyAgZGVm
IENyZWF0ZShzZWxmLCBuYW1lLCBndWlkPU5vbmUsIHBsYXRmb3Jtcz1Ob25lKToKKyAgICAiIiJD
cmVhdGVzIHRoZSBwcm9qZWN0IGRvY3VtZW50LgorCisgICAgQXJnczoKKyAgICAgIG5hbWU6IE5h
bWUgb2YgdGhlIHByb2plY3QuCisgICAgICBndWlkOiBHVUlEIHRvIHVzZSBmb3IgcHJvamVjdCwg
aWYgbm90IE5vbmUuCisgICAgIiIiCisgICAgc2VsZi5uYW1lID0gbmFtZQorICAgIHNlbGYuZ3Vp
ZCA9IGd1aWQKKworICAgICMgRGVmYXVsdCB0byBXaW4zMiBmb3IgcGxhdGZvcm1zLgorICAgIGlm
IG5vdCBwbGF0Zm9ybXM6CisgICAgICBwbGF0Zm9ybXMgPSBbJ1dpbjMyJ10KKworICAgICMgQ3Jl
YXRlIFhNTCBkb2MKKyAgICB4bWxfaW1wbCA9IHhtbC5kb20uZ2V0RE9NSW1wbGVtZW50YXRpb24o
KQorICAgIHNlbGYuZG9jID0geG1sX2ltcGwuY3JlYXRlRG9jdW1lbnQoTm9uZSwgJ1Zpc3VhbFN0
dWRpb1Byb2plY3QnLCBOb25lKQorCisgICAgIyBBZGQgYXR0cmlidXRlcyB0byByb290IGVsZW1l
bnQKKyAgICBzZWxmLm5fcm9vdCA9IHNlbGYuZG9jLmRvY3VtZW50RWxlbWVudAorICAgIHNlbGYu
bl9yb290LnNldEF0dHJpYnV0ZSgnUHJvamVjdFR5cGUnLCAnVmlzdWFsIEMrKycpCisgICAgc2Vs
Zi5uX3Jvb3Quc2V0QXR0cmlidXRlKCdWZXJzaW9uJywgc2VsZi52ZXJzaW9uLlByb2plY3RWZXJz
aW9uKCkpCisgICAgc2VsZi5uX3Jvb3Quc2V0QXR0cmlidXRlKCdOYW1lJywgc2VsZi5uYW1lKQor
ICAgIHNlbGYubl9yb290LnNldEF0dHJpYnV0ZSgnUHJvamVjdEdVSUQnLCBzZWxmLmd1aWQpCisg
ICAgc2VsZi5uX3Jvb3Quc2V0QXR0cmlidXRlKCdSb290TmFtZXNwYWNlJywgc2VsZi5uYW1lKQor
ICAgIHNlbGYubl9yb290LnNldEF0dHJpYnV0ZSgnS2V5d29yZCcsICdXaW4zMlByb2onKQorCisg
ICAgIyBBZGQgcGxhdGZvcm0gbGlzdAorICAgIG5fcGxhdGZvcm0gPSBzZWxmLmRvYy5jcmVhdGVF
bGVtZW50KCdQbGF0Zm9ybXMnKQorICAgIHNlbGYubl9yb290LmFwcGVuZENoaWxkKG5fcGxhdGZv
cm0pCisgICAgZm9yIHBsYXRmb3JtIGluIHBsYXRmb3JtczoKKyAgICAgIG4gPSBzZWxmLmRvYy5j
cmVhdGVFbGVtZW50KCdQbGF0Zm9ybScpCisgICAgICBuLnNldEF0dHJpYnV0ZSgnTmFtZScsIHBs
YXRmb3JtKQorICAgICAgbl9wbGF0Zm9ybS5hcHBlbmRDaGlsZChuKQorCisgICAgIyBBZGQgdG9v
bCBmaWxlcyBzZWN0aW9uCisgICAgc2VsZi5uX3Rvb2xfZmlsZXMgPSBzZWxmLmRvYy5jcmVhdGVF
bGVtZW50KCdUb29sRmlsZXMnKQorICAgIHNlbGYubl9yb290LmFwcGVuZENoaWxkKHNlbGYubl90
b29sX2ZpbGVzKQorCisgICAgIyBBZGQgY29uZmlndXJhdGlvbnMgc2VjdGlvbgorICAgIHNlbGYu
bl9jb25maWdzID0gc2VsZi5kb2MuY3JlYXRlRWxlbWVudCgnQ29uZmlndXJhdGlvbnMnKQorICAg
IHNlbGYubl9yb290LmFwcGVuZENoaWxkKHNlbGYubl9jb25maWdzKQorCisgICAgIyBBZGQgZW1w
dHkgUmVmZXJlbmNlcyBzZWN0aW9uCisgICAgc2VsZi5uX3Jvb3QuYXBwZW5kQ2hpbGQoc2VsZi5k
b2MuY3JlYXRlRWxlbWVudCgnUmVmZXJlbmNlcycpKQorCisgICAgIyBBZGQgZmlsZXMgc2VjdGlv
bgorICAgIHNlbGYubl9maWxlcyA9IHNlbGYuZG9jLmNyZWF0ZUVsZW1lbnQoJ0ZpbGVzJykKKyAg
ICBzZWxmLm5fcm9vdC5hcHBlbmRDaGlsZChzZWxmLm5fZmlsZXMpCisgICAgIyBLZWVwIGEgZGlj
dCBrZXllZCBvbiBmaWxlbmFtZSB0byBzcGVlZCB1cCBhY2Nlc3MuCisgICAgc2VsZi5uX2ZpbGVz
X2RpY3QgPSBkaWN0KCkKKworICAgICMgQWRkIGVtcHR5IEdsb2JhbHMgc2VjdGlvbgorICAgIHNl
bGYubl9yb290LmFwcGVuZENoaWxkKHNlbGYuZG9jLmNyZWF0ZUVsZW1lbnQoJ0dsb2JhbHMnKSkK
KworICBkZWYgQWRkVG9vbEZpbGUoc2VsZiwgcGF0aCk6CisgICAgIiIiQWRkcyBhIHRvb2wgZmls
ZSB0byB0aGUgcHJvamVjdC4KKworICAgIEFyZ3M6CisgICAgICBwYXRoOiBSZWxhdGl2ZSBwYXRo
IGZyb20gcHJvamVjdCB0byB0b29sIGZpbGUuCisgICAgIiIiCisgICAgbl90b29sID0gc2VsZi5k
b2MuY3JlYXRlRWxlbWVudCgnVG9vbEZpbGUnKQorICAgIG5fdG9vbC5zZXRBdHRyaWJ1dGUoJ1Jl
bGF0aXZlUGF0aCcsIHBhdGgpCisgICAgc2VsZi5uX3Rvb2xfZmlsZXMuYXBwZW5kQ2hpbGQobl90
b29sKQorCisgIGRlZiBfQWRkQ29uZmlnVG9Ob2RlKHNlbGYsIHBhcmVudCwgY29uZmlnX3R5cGUs
IGNvbmZpZ19uYW1lLCBhdHRycz1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICB0b29scz1O
b25lKToKKyAgICAiIiJBZGRzIGEgY29uZmlndXJhdGlvbiB0byB0aGUgcGFyZW50IG5vZGUuCisK
KyAgICBBcmdzOgorICAgICAgcGFyZW50OiBEZXN0aW5hdGlvbiBub2RlLgorICAgICAgY29uZmln
X3R5cGU6IFR5cGUgb2YgY29uZmlndXJhdGlvbiBub2RlLgorICAgICAgY29uZmlnX25hbWU6IENv
bmZpZ3VyYXRpb24gbmFtZS4KKyAgICAgIGF0dHJzOiBEaWN0IG9mIGNvbmZpZ3VyYXRpb24gYXR0
cmlidXRlczsgbWF5IGJlIE5vbmUuCisgICAgICB0b29sczogTGlzdCBvZiB0b29scyAoc3RyaW5n
cyBvciBUb29sIG9iamVjdHMpOyBtYXkgYmUgTm9uZS4KKyAgICAiIiIKKyAgICAjIEhhbmRsZSBk
ZWZhdWx0cworICAgIGlmIG5vdCBhdHRyczoKKyAgICAgIGF0dHJzID0ge30KKyAgICBpZiBub3Qg
dG9vbHM6CisgICAgICB0b29scyA9IFtdCisKKyAgICAjIEFkZCBjb25maWd1cmF0aW9uIG5vZGUg
YW5kIGl0cyBhdHRyaWJ1dGVzCisgICAgbl9jb25maWcgPSBzZWxmLmRvYy5jcmVhdGVFbGVtZW50
KGNvbmZpZ190eXBlKQorICAgIG5fY29uZmlnLnNldEF0dHJpYnV0ZSgnTmFtZScsIGNvbmZpZ19u
YW1lKQorICAgIGZvciBrLCB2IGluIGF0dHJzLml0ZW1zKCk6CisgICAgICBuX2NvbmZpZy5zZXRB
dHRyaWJ1dGUoaywgdikKKyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQobl9jb25maWcpCisKKyAgICAj
IEFkZCB0b29sIG5vZGVzIGFuZCB0aGVpciBhdHRyaWJ1dGVzCisgICAgaWYgdG9vbHM6CisgICAg
ICBmb3IgdCBpbiB0b29sczoKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh0LCBUb29sKToKKyAgICAg
ICAgICBuX2NvbmZpZy5hcHBlbmRDaGlsZCh0LkNyZWF0ZUVsZW1lbnQoc2VsZi5kb2MpKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgIG5fY29uZmlnLmFwcGVuZENoaWxkKFRvb2wodCkuQ3JlYXRl
RWxlbWVudChzZWxmLmRvYykpCisKKyAgZGVmIEFkZENvbmZpZyhzZWxmLCBuYW1lLCBhdHRycz1O
b25lLCB0b29scz1Ob25lKToKKyAgICAiIiJBZGRzIGEgY29uZmlndXJhdGlvbiB0byB0aGUgcHJv
amVjdC4KKworICAgIEFyZ3M6CisgICAgICBuYW1lOiBDb25maWd1cmF0aW9uIG5hbWUuCisgICAg
ICBhdHRyczogRGljdCBvZiBjb25maWd1cmF0aW9uIGF0dHJpYnV0ZXM7IG1heSBiZSBOb25lLgor
ICAgICAgdG9vbHM6IExpc3Qgb2YgdG9vbHMgKHN0cmluZ3Mgb3IgVG9vbCBvYmplY3RzKTsgbWF5
IGJlIE5vbmUuCisgICAgIiIiCisgICAgc2VsZi5fQWRkQ29uZmlnVG9Ob2RlKHNlbGYubl9jb25m
aWdzLCAnQ29uZmlndXJhdGlvbicsIG5hbWUsIGF0dHJzLCB0b29scykKKworICBkZWYgX0FkZEZp
bGVzVG9Ob2RlKHNlbGYsIHBhcmVudCwgZmlsZXMpOgorICAgICIiIkFkZHMgZmlsZXMgYW5kL29y
IGZpbHRlcnMgdG8gdGhlIHBhcmVudCBub2RlLgorCisgICAgQXJnczoKKyAgICAgIHBhcmVudDog
RGVzdGluYXRpb24gbm9kZQorICAgICAgZmlsZXM6IEEgbGlzdCBvZiBGaWx0ZXIgb2JqZWN0cyBh
bmQvb3IgcmVsYXRpdmUgcGF0aHMgdG8gZmlsZXMuCisKKyAgICBXaWxsIGNhbGwgaXRzZWxmIHJl
Y3Vyc2l2ZWx5LCBpZiB0aGUgZmlsZXMgbGlzdCBjb250YWlucyBGaWx0ZXIgb2JqZWN0cy4KKyAg
ICAiIiIKKyAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgIGlmIGlzaW5zdGFuY2UoZiwgRmlsdGVy
KToKKyAgICAgICAgbm9kZSA9IHNlbGYuZG9jLmNyZWF0ZUVsZW1lbnQoJ0ZpbHRlcicpCisgICAg
ICAgIG5vZGUuc2V0QXR0cmlidXRlKCdOYW1lJywgZi5uYW1lKQorICAgICAgICBzZWxmLl9BZGRG
aWxlc1RvTm9kZShub2RlLCBmLmNvbnRlbnRzKQorICAgICAgZWxzZToKKyAgICAgICAgbm9kZSA9
IHNlbGYuZG9jLmNyZWF0ZUVsZW1lbnQoJ0ZpbGUnKQorICAgICAgICBub2RlLnNldEF0dHJpYnV0
ZSgnUmVsYXRpdmVQYXRoJywgZikKKyAgICAgICAgc2VsZi5uX2ZpbGVzX2RpY3RbZl0gPSBub2Rl
CisgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQobm9kZSkKKworICBkZWYgQWRkRmlsZXMoc2VsZiwg
ZmlsZXMpOgorICAgICIiIkFkZHMgZmlsZXMgdG8gdGhlIHByb2plY3QuCisKKyAgICBBcmdzOgor
ICAgICAgZmlsZXM6IEEgbGlzdCBvZiBGaWx0ZXIgb2JqZWN0cyBhbmQvb3IgcmVsYXRpdmUgcGF0
aHMgdG8gZmlsZXMuCisKKyAgICBUaGlzIG1ha2VzIGEgY29weSBvZiB0aGUgZmlsZS9maWx0ZXIg
dHJlZSBhdCB0aGUgdGltZSBvZiB0aGlzIGNhbGwuICBJZiB5b3UKKyAgICBsYXRlciBhZGQgZmls
ZXMgdG8gYSBGaWx0ZXIgb2JqZWN0IHdoaWNoIHdhcyBwYXNzZWQgaW50byBhIHByZXZpb3VzIGNh
bGwKKyAgICB0byBBZGRGaWxlcygpLCBpdCB3aWxsIG5vdCBiZSByZWZsZWN0ZWQgaW4gdGhpcyBw
cm9qZWN0LgorICAgICIiIgorICAgIHNlbGYuX0FkZEZpbGVzVG9Ob2RlKHNlbGYubl9maWxlcywg
ZmlsZXMpCisgICAgIyBUT0RPKHJzcGFuZ2xlcikgVGhpcyBhbHNvIGRvZXNuJ3QgaGFuZGxlIGFk
ZGluZyBmaWxlcyB0byBhbiBleGlzdGluZworICAgICMgZmlsdGVyLiAgVGhhdCBpcywgaXQgZG9l
c24ndCBtZXJnZSB0aGUgdHJlZXMuCisKKyAgZGVmIEFkZEZpbGVDb25maWcoc2VsZiwgcGF0aCwg
Y29uZmlnLCBhdHRycz1Ob25lLCB0b29scz1Ob25lKToKKyAgICAiIiJBZGRzIGEgY29uZmlndXJh
dGlvbiB0byBhIGZpbGUuCisKKyAgICBBcmdzOgorICAgICAgcGF0aDogUmVsYXRpdmUgcGF0aCB0
byB0aGUgZmlsZS4KKyAgICAgIGNvbmZpZzogTmFtZSBvZiBjb25maWd1cmF0aW9uIHRvIGFkZC4K
KyAgICAgIGF0dHJzOiBEaWN0IG9mIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlczsgbWF5IGJlIE5v
bmUuCisgICAgICB0b29sczogTGlzdCBvZiB0b29scyAoc3RyaW5ncyBvciBUb29sIG9iamVjdHMp
OyBtYXkgYmUgTm9uZS4KKworICAgIFJhaXNlczoKKyAgICAgIFZhbHVlRXJyb3I6IFJlbGF0aXZl
IHBhdGggZG9lcyBub3QgbWF0Y2ggYW55IGZpbGUgYWRkZWQgdmlhIEFkZEZpbGVzKCkuCisgICAg
IiIiCisgICAgIyBGaW5kIHRoZSBmaWxlIG5vZGUgd2l0aCB0aGUgcmlnaHQgcmVsYXRpdmUgcGF0
aAorICAgIHBhcmVudCA9IHNlbGYubl9maWxlc19kaWN0LmdldChwYXRoKQorICAgIGlmIG5vdCBw
YXJlbnQ6CisgICAgICByYWlzZSBWYWx1ZUVycm9yKCdBZGRGaWxlQ29uZmlnOiBmaWxlICIlcyIg
bm90IGluIHByb2plY3QuJyAlIHBhdGgpCisKKyAgICAjIEFkZCB0aGUgY29uZmlnIHRvIHRoZSBm
aWxlIG5vZGUKKyAgICBzZWxmLl9BZGRDb25maWdUb05vZGUocGFyZW50LCAnRmlsZUNvbmZpZ3Vy
YXRpb24nLCBjb25maWcsIGF0dHJzLCB0b29scykKKworICBkZWYgV3JpdGUoc2VsZiwgd3JpdGVy
PWNvbW1vbi5Xcml0ZU9uRGlmZik6CisgICAgIiIiV3JpdGVzIHRoZSBwcm9qZWN0IGZpbGUuIiIi
CisgICAgZiA9IHdyaXRlcihzZWxmLnByb2plY3RfcGF0aCkKKyAgICBmaXggPSB4bWxfZml4Llht
bEZpeCgpCisgICAgc2VsZi5kb2Mud3JpdGV4bWwoZiwgZW5jb2Rpbmc9J1dpbmRvd3MtMTI1Mics
IGFkZGluZGVudD0nICAnLCBuZXdsPSdcclxuJykKKyAgICBmaXguQ2xlYW51cCgpCisgICAgZi5j
bG9zZSgpCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC9weWxpYi9neXAvTVNWU1NldHRpbmdzLnB5IGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3B5bGliL2d5cC9NU1ZTU2V0dGluZ3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI3OWRkNWNkMjc2ZjBj
ZmQ2MDE4OGIzM2JjNGIzYjg0ODM1Mzk2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC9weWxpYi9neXAvTVNWU1NldHRpbmdzLnB5CkBAIC0wLDAgKzEsOTgwIEBACivv
u78jIS91c3IvYmluL3B5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisKKyIiIiBDb2RlIHRvIHZhbGlkYXRlIGFuZCBjb252ZXJ0IHNldHRpbmdzIG9m
IHRoZSBNaWNyb3NvZnQgYnVpbGQgdG9vbHMuCisKK1RoaXMgZmlsZSBjb250YWlucyBjb2RlIHRv
IHZhbGlkYXRlIGFuZCBjb252ZXJ0IHNldHRpbmdzIG9mIHRoZSBNaWNyb3NvZnQKK2J1aWxkIHRv
b2xzLiAgVGhlIGZ1bmN0aW9uIENvbnZlcnRUb01zQnVpbGRTZXR0aW5ncygpLCBWYWxpZGF0ZU1T
VlNTZXR0aW5ncygpLAorYW5kIFZhbGlkYXRlTVNCdWlsZFNldHRpbmdzKCkgYXJlIHRoZSBlbnRy
eSBwb2ludHMuCisKK1RoaXMgZmlsZSB3YXMgY3JlYXRlZCBieSBjb21wYXJpbmcgdGhlIHByb2pl
Y3RzIGNyZWF0ZWQgYnkgVmlzdWFsIFN0dWRpbyAyMDA4CithbmQgVmlzdWFsIFN0dWRpbyAyMDEw
IGZvciBhbGwgYXZhaWxhYmxlIHNldHRpbmdzIHRocm91Z2ggdGhlIHVzZXIgaW50ZXJmYWNlLgor
VGhlIE1TQnVpbGQgc2NoZW1hcyB3ZXJlIGFsc28gY29uc2lkZXJlZC4gIFRoZXkgYXJlIHR5cGlj
YWxseSBmb3VuZCBpbiB0aGUKK01TQnVpbGQgaW5zdGFsbCBkaXJlY3RvcnksIGUuZy4gYzpcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxNU0J1aWxkCisiIiIKKworaW1wb3J0IHN5cworCisKKyMgRGljdGlv
bmFyaWVzIG9mIHNldHRpbmdzIHZhbGlkYXRvcnMuIFRoZSBrZXkgaXMgdGhlIHRvb2wgbmFtZSwg
dGhlIHZhbHVlIGlzCisjIGEgZGljdGlvbmFyeSBtYXBwaW5nIHNldHRpbmcgbmFtZXMgdG8gdmFs
aWRhdGlvbiBmdW5jdGlvbnMuCitfbXN2c192YWxpZGF0b3JzID0ge30KK19tc2J1aWxkX3ZhbGlk
YXRvcnMgPSB7fQorCisKKyMgQSBkaWN0aW9uYXJ5IG9mIHNldHRpbmdzIGNvbnZlcnRlcnMuIFRo
ZSBrZXkgaXMgdGhlIHRvb2wgbmFtZSwgdGhlIHZhbHVlIGlzCisjIGEgZGljdGlvbmFyeSBtYXBw
aW5nIHNldHRpbmcgbmFtZXMgdG8gY29udmVyc2lvbiBmdW5jdGlvbnMuCitfbXN2c190b19tc2J1
aWxkX2NvbnZlcnRlcnMgPSB7fQorCisKKyMgVG9vbCBuYW1lIG1hcHBpbmcgZnJvbSBNU1ZTIHRv
IE1TQnVpbGQuCitfbXNidWlsZF9uYW1lX29mX3Rvb2wgPSB7fQorCisKK2RlZiBfQWRkVG9vbChu
YW1lcyk6CisgICIiIiBBZGRzIGEgdG9vbCB0byB0aGUgZm91ciBkaWN0aW9uYXJpZXMgdXNlZCB0
byBwcm9jZXNzIHNldHRpbmdzLgorCisgIFRoaXMgb25seSBkZWZpbmVzIHRoZSB0b29sLiAgRWFj
aCBzZXR0aW5nIGFsc28gbmVlZHMgdG8gYmUgYWRkZWQuCisKKyAgQXJnczoKKyAgICBuYW1lczog
YSBkaWN0aW9uYXJ5IG9mIHRoZSBNU1ZTIGFuZCBNU0J1aWxkIG5hbWVzIG9mIHRoaXMgdG9vbC4K
KyAgIiIiCisgIG1zdnNfbmFtZSA9IG5hbWVzWydtc3ZzJ10KKyAgbXNidWlsZF9uYW1lID0gbmFt
ZXNbJ21zYnVpbGQnXQorICBfbXN2c192YWxpZGF0b3JzW21zdnNfbmFtZV0gPSB7fQorICBfbXNi
dWlsZF92YWxpZGF0b3JzW21zYnVpbGRfbmFtZV0gPSB7fQorICBfbXN2c190b19tc2J1aWxkX2Nv
bnZlcnRlcnNbbXN2c19uYW1lXSA9IHt9CisgIF9tc2J1aWxkX25hbWVfb2ZfdG9vbFttc3ZzX25h
bWVdID0gbXNidWlsZF9uYW1lCisKKworZGVmIF9HZXRNc0J1aWxkVG9vbFNldHRpbmdzKG1zYnVp
bGRfc2V0dGluZ3MsIHRvb2wpOgorICAiIiIgUmV0dXJucyBhbiBNU0J1aWxkIHRvb2wgZGljdGlv
bmFyeS4gIENyZWF0ZXMgaXQgaWYgbmVlZGVkLiAiIiIKKyAgdG9vbF9uYW1lID0gdG9vbFsnbXNi
dWlsZCddCisgIHJldHVybiBfR2V0T3JDcmVhdGVTdWJEaWN0aW9uYXJ5KG1zYnVpbGRfc2V0dGlu
Z3MsIHRvb2xfbmFtZSkKKworCitkZWYgX0dldE9yQ3JlYXRlU3ViRGljdGlvbmFyeShkaWN0LCBu
YW1lKToKKyAgIiIiIFJldHVybnMgb3IgY3JlYXRlcyBvbmUgb2YgdGhlIHN1Yi1kaWN0aW9uYXJ5
IG9mIGRpY3QuICIiIgorICBpZiBub3QgbmFtZSBpbiBkaWN0OgorICAgIGRpY3RbbmFtZV0gPSB7
fQorICByZXR1cm4gZGljdFtuYW1lXQorCisKK2NsYXNzIF9UeXBlOgorICAiIiIgVHlwZSBvZiBz
ZXR0aW5ncyAoQmFzZSBjbGFzcykuICIiIgorICBkZWYgVmFsaWRhdGVNU1ZTKHNlbGYsIHZhbHVl
KToKKyAgICAiIiIgUmFpc2VzIFZhbHVlRXJyb3IgaWYgdmFsdWUgaXMgbm90IHZhbGlkIGZvciBN
U1ZTLiAiIiIKKyAgICBwYXNzCisgIGRlZiBWYWxpZGF0ZU1TQnVpbGQoc2VsZiwgdmFsdWUpOgor
ICAgICIiIiBSYWlzZXMgVmFsdWVFcnJvciBpZiB2YWx1ZSBpcyBub3QgdmFsaWQgZm9yIE1TQnVp
bGQuICIiIgorICAgIHBhc3MKKyAgZGVmIENvbnZlcnRUb01TQnVpbGQoc2VsZiwgdmFsdWUpOgor
ICAgICIiIiBSZXR1cm5zIHRoZSBNU0J1aWxkIGVxdWl2YWxlbnQgb2YgdGhlIE1TVlMgdmFsdWUg
Z2l2ZW4uCisKKyAgICBSYWlzZXMgVmFsdWVFcnJvciBpZiB2YWx1ZSBpcyBub3QgdmFsaWQuCisg
ICAgIiIiCisgICAgcmV0dXJuIHZhbHVlCisKKworY2xhc3MgX1N0cmluZyhfVHlwZSk6CisgICIi
IiBBIHNldHRpbmcgdGhhdCdzIGp1c3QgYSBzdHJpbmcuICIiIgorICBkZWYgVmFsaWRhdGVNU1ZT
KHNlbGYsIHZhbHVlKToKKyAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAg
IHJhaXNlIFZhbHVlRXJyb3IKKyAgZGVmIFZhbGlkYXRlTVNCdWlsZChzZWxmLCB2YWx1ZSk6Cisg
ICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICByYWlzZSBWYWx1ZUVycm9y
CisgIGRlZiBDb252ZXJ0VG9NU0J1aWxkKHNlbGYsIHZhbHVlKToKKyAgICAjIENvbnZlcnQgdGhl
IG1hY3JvcworICAgIHJldHVybiBfQ29udmVydFZDTWFjcm9zVG9Nc0J1aWxkKHZhbHVlKQorCisK
K2NsYXNzIF9TdHJpbmdMaXN0KF9UeXBlKToKKyAgIiIiIEEgc2V0dGluZ3MgdGhhdCdzIGEgbGlz
dCBvZiBzdHJpbmdzLiAiIiIKKyAgZGVmIFZhbGlkYXRlTVNWUyhzZWxmLCB2YWx1ZSk6CisgICAg
aWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cikgYW5kIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBs
aXN0KToKKyAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgZGVmIFZhbGlkYXRlTVNCdWlsZChzZWxm
LCB2YWx1ZSk6CisgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cikgYW5kIG5vdCBpc2lu
c3RhbmNlKHZhbHVlLCBsaXN0KToKKyAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgZGVmIENvbnZl
cnRUb01TQnVpbGQoc2VsZiwgdmFsdWUpOgorICAgICMgQ29udmVydCB0aGUgbWFjcm9zCisgICAg
aWYgaXNpbnN0YW5jZSh2YWx1ZSwgbGlzdCk6CisgICAgICByZXR1cm4gW19Db252ZXJ0VkNNYWNy
b3NUb01zQnVpbGQoaSkgZm9yIGkgaW4gdmFsdWVdCisgICAgZWxzZToKKyAgICAgIHJldHVybiBf
Q29udmVydFZDTWFjcm9zVG9Nc0J1aWxkKHZhbHVlKQorCisKK2NsYXNzIF9Cb29sZWFuKF9UeXBl
KToKKyAgIiIiIEJvb2xlYW4gc2V0dGluZ3MsIGNhbiBoYXZlIHRoZSB2YWx1ZXMgJ2ZhbHNlJyBv
ciAndHJ1ZScuICIiIgorICBkZWYgX1ZhbGlkYXRlKHNlbGYsIHZhbHVlKToKKyAgICBpZiB2YWx1
ZSAhPSAndHJ1ZScgYW5kIHZhbHVlICE9ICdmYWxzZSc6CisgICAgICByYWlzZSBWYWx1ZUVycm9y
CisgIGRlZiBWYWxpZGF0ZU1TVlMoc2VsZiwgdmFsdWUpOgorICAgIHNlbGYuX1ZhbGlkYXRlKHZh
bHVlKQorICBkZWYgVmFsaWRhdGVNU0J1aWxkKHNlbGYsIHZhbHVlKToKKyAgICBzZWxmLl9WYWxp
ZGF0ZSh2YWx1ZSkKKyAgZGVmIENvbnZlcnRUb01TQnVpbGQoc2VsZiwgdmFsdWUpOgorICAgIHNl
bGYuX1ZhbGlkYXRlKHZhbHVlKQorICAgIHJldHVybiB2YWx1ZQorCisKK2NsYXNzIF9JbnRlZ2Vy
KF9UeXBlKToKKyAgIiIiIEludGVnZXIgc2V0dGluZ3MuICIiIgorICBkZWYgX19pbml0X18oc2Vs
ZiwgbXNidWlsZF9iYXNlPTEwKToKKyAgICBzZWxmLm1zYnVpbGRfYmFzZSA9IG1zYnVpbGRfYmFz
ZQorICBkZWYgVmFsaWRhdGVNU1ZTKHNlbGYsIHZhbHVlKToKKyAgICAjIFRyeSB0byBjb252ZXJ0
LCB0aGlzIHdpbGwgcmFpc2UgVmFsdWVFcnJvciBpZiBpbnZhbGlkLgorICAgIHNlbGYuQ29udmVy
dFRvTVNCdWlsZCh2YWx1ZSkKKyAgZGVmIFZhbGlkYXRlTVNCdWlsZChzZWxmLCB2YWx1ZSk6Cisg
ICAgIyBUcnkgdG8gY29udmVydCwgdGhpcyB3aWxsIHJhaXNlIFZhbHVlRXJyb3IgaWYgaW52YWxp
ZC4KKyAgICBpbnQodmFsdWUsIHNlbGYubXNidWlsZF9iYXNlKQorICBkZWYgQ29udmVydFRvTVNC
dWlsZChzZWxmLCB2YWx1ZSk6CisgICAgZm9ybWF0ID0gKHNlbGYubXNidWlsZF9iYXNlID09IDEw
KSBhbmQgJyVkJyBvciAnMHglMDR4JworICAgIHJldHVybiBmb3JtYXQgJSBpbnQodmFsdWUpCisK
KworY2xhc3MgX0VudW1lcmF0aW9uKF9UeXBlKToKKyAgIiIiIFR5cGUgb2Ygc2V0dGluZ3MgdGhh
dCBpcyBhbiBlbnVtZXJhdGlvbi4KKworICBJbiBNU1ZTLCB0aGUgdmFsdWVzIGFyZSBpbmRleGVz
IGxpa2UgJzAnLCAnMScsIGFuZCAnMicuCisgIE1TQnVpbGQgdXNlcyB0ZXh0IGxhYmVscyB0aGF0
IGFyZSBtb3JlIHJlcHJlc2VudGF0aXZlLCBsaWtlICdXaW4zMicuCisKKyAgQ29uc3RydWN0b3Ig
YXJnczoKKyAgICBsYWJlbF9saXN0OiBhbiBhcnJheSBvZiBNU0J1aWxkIGxhYmVscyB0aGF0IGNv
cnJlc3BvbmQgdG8gdGhlIE1TVlMgaW5kZXguCisgICAgICAgIEluIHRoZSByYXJlIGNhc2VzIHdo
ZXJlIE1TVlMgaGFzIHNraXBwZWQgYW4gaW5kZXggdmFsdWUsIE5vbmUgaXMKKyAgICAgICAgdXNl
ZCBpbiB0aGUgYXJyYXkgdG8gaW5kaWNhdGUgdGhlIHVudXNlZCBzcG90LgorICAgIG5ldzogYW4g
YXJyYXkgb2YgbGFiZWxzIHRoYXQgYXJlIG5ldyB0byBNU0J1aWxkLgorICAiIiIKKyAgZGVmIF9f
aW5pdF9fKHNlbGYsIGxhYmVsX2xpc3QsIG5ldz1bXSk6CisgICAgc2VsZi5sYWJlbF9saXN0ID0g
bGFiZWxfbGlzdAorICAgIHNlbGYubXNidWlsZF92YWx1ZXMgPSBzZXQoKQorICAgIGZvciB2YWx1
ZSBpbiBsYWJlbF9saXN0OgorICAgICAgaWYgbm90IHZhbHVlIGlzIE5vbmU6CisgICAgICAgIHNl
bGYubXNidWlsZF92YWx1ZXMuYWRkKHZhbHVlKQorICAgIGZvciB2YWx1ZSBpbiBuZXc6CisgICAg
ICBzZWxmLm1zYnVpbGRfdmFsdWVzLmFkZCh2YWx1ZSkKKyAgZGVmIFZhbGlkYXRlTVNWUyhzZWxm
LCB2YWx1ZSk6CisgICAgIyBUcnkgdG8gY29udmVydC4gIEl0IHdpbGwgcmFpc2UgYW4gZXhjZXB0
aW9uIGlmIG5vdCB2YWxpZC4KKyAgICBzZWxmLkNvbnZlcnRUb01TQnVpbGQodmFsdWUpCisgIGRl
ZiBWYWxpZGF0ZU1TQnVpbGQoc2VsZiwgdmFsdWUpOgorICAgIGlmIG5vdCB2YWx1ZSBpbiBzZWxm
Lm1zYnVpbGRfdmFsdWVzOgorICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICBkZWYgQ29udmVydFRv
TVNCdWlsZChzZWxmLCB2YWx1ZSk6CisgICAgaW5kZXggPSBpbnQodmFsdWUpCisgICAgaWYgaW5k
ZXggPCAwIG9yIGluZGV4ID49IGxlbihzZWxmLmxhYmVsX2xpc3QpOgorICAgICAgcmFpc2UgVmFs
dWVFcnJvcgorICAgIGxhYmVsID0gc2VsZi5sYWJlbF9saXN0W2luZGV4XQorICAgIGlmIGxhYmVs
IGlzIE5vbmU6CisgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgcmV0dXJuIGxhYmVsCisKKwor
IyBJbnN0YW50aWF0ZSB0aGUgdmFyaW91cyBnZW5lcmljIHR5cGVzLgorX2Jvb2xlYW4gPSBfQm9v
bGVhbigpCitfaW50ZWdlciA9IF9JbnRlZ2VyKCkKKyMgRm9yIG5vdywgd2UgZG9uJ3QgZG8gYW55
IHNwZWNpYWwgdmFsaWRhdGlvbiBvbiB0aGVzZSB0eXBlczoKK19zdHJpbmcgPSBfU3RyaW5nKCkK
K19maWxlX25hbWUgPSBfU3RyaW5nKCkKK19mb2xkZXJfbmFtZSA9IF9TdHJpbmcoKQorX2ZpbGVf
bGlzdCA9IF9TdHJpbmdMaXN0KCkKK19mb2xkZXJfbGlzdCA9IF9TdHJpbmdMaXN0KCkKK19zdHJp
bmdfbGlzdCA9IF9TdHJpbmdMaXN0KCkKKyMgU29tZSBib29sZWFuIHNldHRpbmdzIHdlbnQgZnJv
bSBudW1lcmljYWwgdmFsdWVzIHRvIGJvb2xlYW4uICBUaGUKKyMgbWFwcGluZyBpcyAwOiBkZWZh
dWx0LCAxOiBmYWxzZSwgMjogdHJ1ZS4KK19uZXdseV9ib29sZWFuID0gX0VudW1lcmF0aW9uKFsn
JywgJ2ZhbHNlJywgJ3RydWUnXSkKKworCitkZWYgX1NhbWUodG9vbCwgbmFtZSwgdHlwZSk6Cisg
ICIiIiBEZWZpbmVzIGEgc2V0dGluZyB0aGF0IGhhcyB0aGUgc2FtZSBuYW1lIGluIE1TVlMgYW5k
IE1TQnVpbGQuCisKKyAgQXJnczoKKyAgICB0b29sOiBhIGRpY3Rpb25hcnkgdGhhdCBnaXZlcyB0
aGUgbmFtZXMgb2YgdGhlIHRvb2wgZm9yIE1TVlMgYW5kIE1TQnVpbGQuCisgICAgbmFtZTogdGhl
IG5hbWUgb2YgdGhlIHNldHRpbmcuCisgICAgdHlwZTogdGhlIHR5cGUgb2YgdGhpcyBzZXR0aW5n
LgorICAiIiIKKyAgX1JlbmFtZWQodG9vbCwgbmFtZSwgbmFtZSwgdHlwZSkKKworCitkZWYgX1Jl
bmFtZWQodG9vbCwgbXN2c19uYW1lLCBtc2J1aWxkX25hbWUsIHR5cGUpOgorICAiIiIgRGVmaW5l
cyBhIHNldHRpbmcgZm9yIHdoaWNoIHRoZSBuYW1lIGhhcyBjaGFuZ2VkLgorCisgIEFyZ3M6Cisg
ICAgdG9vbDogYSBkaWN0aW9uYXJ5IHRoYXQgZ2l2ZXMgdGhlIG5hbWVzIG9mIHRoZSB0b29sIGZv
ciBNU1ZTIGFuZCBNU0J1aWxkLgorICAgIG1zdnNfbmFtZTogdGhlIG5hbWUgb2YgdGhlIE1TVlMg
c2V0dGluZy4KKyAgICBtc2J1aWxkX25hbWU6IHRoZSBuYW1lIG9mIHRoZSBNU0J1aWxkIHNldHRp
bmcuCisgICAgdHlwZTogdGhlIHR5cGUgb2YgdGhpcyBzZXR0aW5nLgorICAiIiIKKyAgZGVmIF9U
cmFuc2xhdGUodmFsdWUsIG1zYnVpbGRfc2V0dGluZ3MpOgorICAgIG1zYnVpbGRfdG9vbF9zZXR0
aW5ncyA9IF9HZXRNc0J1aWxkVG9vbFNldHRpbmdzKG1zYnVpbGRfc2V0dGluZ3MsIHRvb2wpCisg
ICAgbXNidWlsZF90b29sX3NldHRpbmdzW21zYnVpbGRfbmFtZV0gPSB0eXBlLkNvbnZlcnRUb01T
QnVpbGQodmFsdWUpCisgIG1zdnNfdG9vbF9uYW1lID0gdG9vbFsnbXN2cyddCisgIG1zYnVpbGRf
dG9vbF9uYW1lID0gdG9vbFsnbXNidWlsZCddCisgIF9tc3ZzX3ZhbGlkYXRvcnNbbXN2c190b29s
X25hbWVdW21zdnNfbmFtZV0gPSB0eXBlLlZhbGlkYXRlTVNWUworICBfbXNidWlsZF92YWxpZGF0
b3JzW21zYnVpbGRfdG9vbF9uYW1lXVttc2J1aWxkX25hbWVdID0gdHlwZS5WYWxpZGF0ZU1TQnVp
bGQKKyAgX21zdnNfdG9fbXNidWlsZF9jb252ZXJ0ZXJzW21zdnNfdG9vbF9uYW1lXVttc3ZzX25h
bWVdID0gX1RyYW5zbGF0ZQorCisKK2RlZiBfTW92ZWQodG9vbCwgc2V0dGluZ3NfbmFtZSwgbXNi
dWlsZF90b29sX25hbWUsIHR5cGUpOgorICAgIF9Nb3ZlZEFuZFJlbmFtZWQodG9vbCwgc2V0dGlu
Z3NfbmFtZSwgbXNidWlsZF90b29sX25hbWUsIHNldHRpbmdzX25hbWUsCisgICAgICAgICAgICAg
ICAgICAgICB0eXBlKQorCisKK2RlZiBfTW92ZWRBbmRSZW5hbWVkKHRvb2wsIG1zdnNfc2V0dGlu
Z3NfbmFtZSwgbXNidWlsZF90b29sX25hbWUsCisgICAgICAgICAgICAgICAgICAgICBtc2J1aWxk
X3NldHRpbmdzX25hbWUsIHR5cGUpOgorICAiIiIgRGVmaW5lcyBhIHNldHRpbmcgdGhhdCBtYXkg
aGF2ZSBtb3ZlZCB0byBhIG5ldyBzZWN0aW9uLgorCisgIEFyZ3M6CisgICAgdG9vbDogYSBkaWN0
aW9uYXJ5IHRoYXQgZ2l2ZXMgdGhlIG5hbWVzIG9mIHRoZSB0b29sIGZvciBNU1ZTIGFuZCBNU0J1
aWxkLgorICAgIG1zdnNfc2V0dGluZ3NfbmFtZTogdGhlIE1TVlMgbmFtZSBvZiB0aGUgc2V0dGlu
Zy4KKyAgICBtc2J1aWxkX3Rvb2xfbmFtZTogdGhlIG5hbWUgb2YgdGhlIE1TQnVpbGQgdG9vbCB0
byBwbGFjZSB0aGUgc2V0dGluZyB1bmRlci4KKyAgICBtc2J1aWxkX3NldHRpbmdzX25hbWU6IHRo
ZSBNU0J1aWxkIG5hbWUgb2YgdGhlIHNldHRpbmcuCisgICAgdHlwZTogdGhlIHR5cGUgb2YgdGhp
cyBzZXR0aW5nLgorICAiIiIKKyAgZGVmIF9UcmFuc2xhdGUodmFsdWUsIG1zYnVpbGRfc2V0dGlu
Z3MpOgorICAgIHRvb2xfc2V0dGluZ3MgPSBfR2V0T3JDcmVhdGVTdWJEaWN0aW9uYXJ5KG1zYnVp
bGRfc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbXNidWlsZF90b29sX25hbWUpCisgICAgdG9vbF9zZXR0aW5nc1ttc2J1aWxkX3NldHRpbmdz
X25hbWVdID0gdHlwZS5Db252ZXJ0VG9NU0J1aWxkKHZhbHVlKQorICBtc3ZzX3Rvb2xfbmFtZSA9
IHRvb2xbJ21zdnMnXQorICBfbXN2c192YWxpZGF0b3JzW21zdnNfdG9vbF9uYW1lXVttc3ZzX3Nl
dHRpbmdzX25hbWVdID0gdHlwZS5WYWxpZGF0ZU1TVlMKKyAgdmFsaWRhdG9yID0gdHlwZS5WYWxp
ZGF0ZU1TQnVpbGQKKyAgX21zYnVpbGRfdmFsaWRhdG9yc1ttc2J1aWxkX3Rvb2xfbmFtZV1bbXNi
dWlsZF9zZXR0aW5nc19uYW1lXSA9IHZhbGlkYXRvcgorICBfbXN2c190b19tc2J1aWxkX2NvbnZl
cnRlcnNbbXN2c190b29sX25hbWVdW21zdnNfc2V0dGluZ3NfbmFtZV0gPSBfVHJhbnNsYXRlCisK
KworZGVmIF9NU1ZTT25seSh0b29sLCBuYW1lLCB0eXBlKToKKyAgIiIiIERlZmluZXMgYSBzZXR0
aW5nIHRoYXQgaXMgb25seSBmb3VuZCBpbiBNU1ZTLgorCisgIEFyZ3M6CisgICAgdG9vbDogYSBk
aWN0aW9uYXJ5IHRoYXQgZ2l2ZXMgdGhlIG5hbWVzIG9mIHRoZSB0b29sIGZvciBNU1ZTIGFuZCBN
U0J1aWxkLgorICAgIG5hbWU6IHRoZSBuYW1lIG9mIHRoZSBzZXR0aW5nLgorICAgIHR5cGU6IHRo
ZSB0eXBlIG9mIHRoaXMgc2V0dGluZy4KKyAgIiIiCisgIGRlZiBfVHJhbnNsYXRlKHZhbHVlLCBt
c2J1aWxkX3NldHRpbmdzKToKKyAgICBwYXNzCisgIG1zdnNfdG9vbF9uYW1lID0gdG9vbFsnbXN2
cyddCisgIF9tc3ZzX3ZhbGlkYXRvcnNbbXN2c190b29sX25hbWVdW25hbWVdID0gdHlwZS5WYWxp
ZGF0ZU1TVlMKKyAgX21zdnNfdG9fbXNidWlsZF9jb252ZXJ0ZXJzW21zdnNfdG9vbF9uYW1lXVtu
YW1lXSA9IF9UcmFuc2xhdGUKKworCitkZWYgX01TQnVpbGRPbmx5KHRvb2wsIG5hbWUsIHR5cGUp
OgorICAiIiIgRGVmaW5lcyBhIHNldHRpbmcgdGhhdCBpcyBvbmx5IGZvdW5kIGluIE1TQnVpbGQu
CisKKyAgQXJnczoKKyAgICB0b29sOiBhIGRpY3Rpb25hcnkgdGhhdCBnaXZlcyB0aGUgbmFtZXMg
b2YgdGhlIHRvb2wgZm9yIE1TVlMgYW5kIE1TQnVpbGQuCisgICAgbmFtZTogdGhlIG5hbWUgb2Yg
dGhlIHNldHRpbmcuCisgICAgdHlwZTogdGhlIHR5cGUgb2YgdGhpcyBzZXR0aW5nLgorICAiIiIK
KyAgbXNidWlsZF90b29sX25hbWUgPSB0b29sWydtc2J1aWxkJ10KKyAgX21zYnVpbGRfdmFsaWRh
dG9yc1ttc2J1aWxkX3Rvb2xfbmFtZV1bbmFtZV0gPSB0eXBlLlZhbGlkYXRlTVNCdWlsZAorCisK
K2RlZiBfQ29udmVydGVkVG9BZGRpdGlvbmFsT3B0aW9uKHRvb2wsIG1zdnNfbmFtZSwgZmxhZyk6
CisgICIiIiBEZWZpbmVzIGEgc2V0dGluZyB0aGF0J3MgaGFuZGxlZCB2aWEgYSBjb21tYW5kIGxp
bmUgb3B0aW9uIGluIE1TQnVpbGQuCisKKyAgQXJnczoKKyAgICB0b29sOiBhIGRpY3Rpb25hcnkg
dGhhdCBnaXZlcyB0aGUgbmFtZXMgb2YgdGhlIHRvb2wgZm9yIE1TVlMgYW5kIE1TQnVpbGQuCisg
ICAgbXN2c19uYW1lOiB0aGUgbmFtZSBvZiB0aGUgTVNWUyBzZXR0aW5nIHRoYXQgaWYgJ3RydWUn
IGJlY29tZXMgYSBmbGFnCisgICAgZmxhZzogdGhlIGZsYWcgdG8gaW5zZXJ0IGF0IHRoZSBlbmQg
b2YgdGhlIEFkZGl0aW9uYWxPcHRpb25zCisgICIiIgorICBkZWYgX1RyYW5zbGF0ZSh2YWx1ZSwg
bXNidWlsZF9zZXR0aW5ncyk6CisgICAgaWYgdmFsdWUgPT0gJ3RydWUnOgorICAgICAgdG9vbF9z
ZXR0aW5ncyA9IF9HZXRNc0J1aWxkVG9vbFNldHRpbmdzKG1zYnVpbGRfc2V0dGluZ3MsIHRvb2wp
CisgICAgICBpZiAnQWRkaXRpb25hbE9wdGlvbnMnIGluIHRvb2xfc2V0dGluZ3M6CisgICAgICAg
IG5ld19mbGFncyA9ICIlcyAlcyIgJSAodG9vbF9zZXR0aW5nc1snQWRkaXRpb25hbE9wdGlvbnMn
XSwgZmxhZykKKyAgICAgIGVsc2U6CisgICAgICAgIG5ld19mbGFncyA9IGZsYWcKKyAgICAgIHRv
b2xfc2V0dGluZ3NbJ0FkZGl0aW9uYWxPcHRpb25zJ10gPSBuZXdfZmxhZ3MKKyAgbXN2c190b29s
X25hbWUgPSB0b29sWydtc3ZzJ10KKyAgX21zdnNfdmFsaWRhdG9yc1ttc3ZzX3Rvb2xfbmFtZV1b
bXN2c19uYW1lXSA9IF9ib29sZWFuLlZhbGlkYXRlTVNWUworICBfbXN2c190b19tc2J1aWxkX2Nv
bnZlcnRlcnNbbXN2c190b29sX25hbWVdW21zdnNfbmFtZV0gPSBfVHJhbnNsYXRlCisKKworZGVm
IF9DdXN0b21HZW5lcmF0ZVByZXByb2Nlc3NlZEZpbGUodG9vbCwgbXN2c19uYW1lKToKKyAgZGVm
IF9UcmFuc2xhdGUodmFsdWUsIG1zYnVpbGRfc2V0dGluZ3MpOgorICAgICAgdG9vbF9zZXR0aW5n
cyA9IF9HZXRNc0J1aWxkVG9vbFNldHRpbmdzKG1zYnVpbGRfc2V0dGluZ3MsIHRvb2wpCisgICAg
ICBpZiB2YWx1ZSA9PSAnMCc6CisgICAgICAgIHRvb2xfc2V0dGluZ3NbJ1ByZXByb2Nlc3NUb0Zp
bGUnXSA9ICdmYWxzZScKKyAgICAgICAgdG9vbF9zZXR0aW5nc1snUHJlcHJvY2Vzc1N1cHByZXNz
TGluZU51bWJlcnMnXSA9ICdmYWxzZScKKyAgICAgIGVsaWYgdmFsdWUgPT0gJzEnOiAgIyAvUAor
ICAgICAgICB0b29sX3NldHRpbmdzWydQcmVwcm9jZXNzVG9GaWxlJ10gPSAndHJ1ZScKKyAgICAg
ICAgdG9vbF9zZXR0aW5nc1snUHJlcHJvY2Vzc1N1cHByZXNzTGluZU51bWJlcnMnXSA9ICdmYWxz
ZScKKyAgICAgIGVsaWYgdmFsdWUgPT0gJzInOiAgIyAvRVAgL1AKKyAgICAgICAgdG9vbF9zZXR0
aW5nc1snUHJlcHJvY2Vzc1RvRmlsZSddID0gJ3RydWUnCisgICAgICAgIHRvb2xfc2V0dGluZ3Nb
J1ByZXByb2Nlc3NTdXBwcmVzc0xpbmVOdW1iZXJzJ10gPSAndHJ1ZScKKyAgICAgIGVsc2U6Cisg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgbXN2c190b29sX25hbWUgPSB0b29sWydtc3ZzJ10K
KyAgIyBDcmVhdGUgYSBib2d1cyB2YWxpZGF0b3IgdGhhdCBsb29rcyBmb3IgJzAnLCAnMScsIG9y
ICcyJworICBtc3ZzX3ZhbGlkYXRvciA9IF9FbnVtZXJhdGlvbihbJ2EnLCAnYicsICdjJ10pLlZh
bGlkYXRlTVNWUworICBfbXN2c192YWxpZGF0b3JzW21zdnNfdG9vbF9uYW1lXVttc3ZzX25hbWVd
ID0gbXN2c192YWxpZGF0b3IKKyAgbXNidWlsZF92YWxpZGF0b3IgPSBfYm9vbGVhbi5WYWxpZGF0
ZU1TQnVpbGQKKyAgbXNidWlsZF90b29sX3ZhbGlkYXRvcnMgPSBfbXNidWlsZF92YWxpZGF0b3Jz
W3Rvb2xbJ21zYnVpbGQnXV0KKyAgbXNidWlsZF90b29sX3ZhbGlkYXRvcnNbJ1ByZXByb2Nlc3NU
b0ZpbGUnXSA9IG1zYnVpbGRfdmFsaWRhdG9yCisgIG1zYnVpbGRfdG9vbF92YWxpZGF0b3JzWydQ
cmVwcm9jZXNzU3VwcHJlc3NMaW5lTnVtYmVycyddID0gbXNidWlsZF92YWxpZGF0b3IKKyAgX21z
dnNfdG9fbXNidWlsZF9jb252ZXJ0ZXJzW21zdnNfdG9vbF9uYW1lXVttc3ZzX25hbWVdID0gX1Ry
YW5zbGF0ZQorCisKK2RlZiBfQ29udmVydFZDTWFjcm9zVG9Nc0J1aWxkKHMpOgorICBpZiAocy5m
aW5kKCckJykgPj0gMCk6CisgICAgcyA9IHMucmVwbGFjZSgnJChDb25maWd1cmF0aW9uTmFtZSkn
LCAnJChDb25maWd1cmF0aW9uKScpCisgICAgcyA9IHMucmVwbGFjZSgnJChJbnB1dERpciknLCAn
JShSb290RGlyKSUoRGlyZWN0b3J5KScpCisgICAgcyA9IHMucmVwbGFjZSgnJChJbnB1dEV4dCkn
LCAnJShFeHRlbnNpb24pJykKKyAgICBzID0gcy5yZXBsYWNlKCckKElucHV0RmlsZU5hbWUpJywg
JyUoRmlsZW5hbWUpJShFeHRlbnNpb24pJykKKyAgICBzID0gcy5yZXBsYWNlKCckKElucHV0TmFt
ZSknLCAnJShGaWxlbmFtZSknKQorICAgIHMgPSBzLnJlcGxhY2UoJyQoSW5wdXRQYXRoKScsICcl
KEZ1bGxQYXRoKScpCisgICAgcyA9IHMucmVwbGFjZSgnJChQYXJlbnROYW1lKScsICckKFByb2pl
Y3RGaWxlTmFtZSknKQorICAgIHMgPSBzLnJlcGxhY2UoJyQoUGxhdGZvcm1OYW1lKScsICckKFBs
YXRmb3JtKScpCisgICAgcyA9IHMucmVwbGFjZSgnJChTYWZlSW5wdXROYW1lKScsICclKEZpbGVu
YW1lKScpCisKKyAgICBzID0gcy5yZXBsYWNlKCckKEludERpcilcXCcsICckKEludERpciknKQor
ICAgIHMgPSBzLnJlcGxhY2UoJyQoT3V0RGlyKVxcJywgJyQoT3V0RGlyKScpCisgICAgcyA9IHMu
cmVwbGFjZSgnJChJbnREaXIpLycsICckKEludERpciknKQorICAgIHMgPSBzLnJlcGxhY2UoJyQo
T3V0RGlyKS8nLCAnJChPdXREaXIpJykKKyAgcmV0dXJuIHMKKworCitkZWYgQ29udmVydFRvTXNC
dWlsZFNldHRpbmdzKG1zdnNfc2V0dGluZ3MsIHN0ZGVycj1zeXMuc3RkZXJyKToKKyAgIiIiIENv
bnZlcnRzIE1TVlMgc2V0dGluZ3MgKFZTMjAwOCBhbmQgZWFybGllcikgdG8gTVNCdWlsZCBzZXR0
aW5ncyAoVlMyMDEwKykuCisKKyAgQXJnczoKKyAgICAgIG1zdnNfc2V0dGluZ3M6IEEgZGljdGlv
bmFyeS4gIFRoZSBrZXkgaXMgdGhlIHRvb2wgbmFtZS4gIFRoZSB2YWx1ZXMgYXJlCisgICAgICAg
ICAgICAgICAgICAgICB0aGVtc2VsdmVzIGRpY3Rpb25hcmllcyBvZiBzZXR0aW5ncyBhbmQgdGhl
aXIgdmFsdWVzLgorICAgICAgc3RkZXJyOiBUaGUgc3RyZWFtIHJlY2VpdmluZyB0aGUgZXJyb3Ig
bWVzc2FnZXMuCisgIFJldHVybnM6CisgICAgICBBIGRpY3Rpb25hcnkgb2YgTVNCdWlsZCBzZXR0
aW5ncy4gIFRoZSBrZXkgaXMgZWl0aGVyIHRoZSBNU0J1aWxkIHRvb2wgbmFtZQorICAgICAgb3Ig
dGhlIGVtcHR5IHN0cmluZyAoZm9yIHRoZSBnbG9iYWwgc2V0dGluZ3MpLiAgVGhlIHZhbHVlcyBh
cmUgdGhlbXNlbHZlcworICAgICAgZGljdGlvbmFyaWVzIG9mIHNldHRpbmdzIGFuZCB0aGVpciB2
YWx1ZXMuCisgICIiIgorICBtc2J1aWxkX3NldHRpbmdzID0ge30KKyAgZm9yIG1zdnNfdG9vbF9u
YW1lLCBtc3ZzX3Rvb2xfc2V0dGluZ3MgaW4gbXN2c19zZXR0aW5ncy5pdGVyaXRlbXMoKToKKyAg
ICBpZiBtc3ZzX3Rvb2xfbmFtZSBpbiBfbXN2c190b19tc2J1aWxkX2NvbnZlcnRlcnM6CisgICAg
ICBtc3ZzX3Rvb2wgPSBfbXN2c190b19tc2J1aWxkX2NvbnZlcnRlcnNbbXN2c190b29sX25hbWVd
CisgICAgICBmb3IgbXN2c19zZXR0aW5nLCBtc3ZzX3ZhbHVlIGluIG1zdnNfdG9vbF9zZXR0aW5n
cy5pdGVyaXRlbXMoKToKKyAgICAgICAgaWYgbXN2c19zZXR0aW5nIGluIG1zdnNfdG9vbDoKKyAg
ICAgICAgICAjIEludm9rZSB0aGUgdHJhbnNsYXRpb24gZnVuY3Rpb24uCisgICAgICAgICAgdHJ5
OgorICAgICAgICAgICAgbXN2c190b29sW21zdnNfc2V0dGluZ10obXN2c192YWx1ZSwgbXNidWls
ZF9zZXR0aW5ncykKKyAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHBy
aW50ID4+IHN0ZGVyciwgKCdXYXJuaW5nOiB1bnJlY29nbml6ZWQgdmFsdWUgIiVzIiBmb3IgJXMv
JXMgJworICAgICAgICAgICAgICAgICd3aGlsZSBjb252ZXJ0aW5nIHRvIE1TQnVpbGQuJyAlCisg
ICAgICAgICAgICAgICAgKG1zdnNfdmFsdWUsIG1zdnNfdG9vbF9uYW1lLCBtc3ZzX3NldHRpbmcp
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICMgV2UgZG9uJ3Qga25vdyB0aGlzIHNldHRpbmcu
ICBHaXZlIGEgd2FybmluZy4KKyAgICAgICAgICBwcmludCA+PiBzdGRlcnIsICgnV2FybmluZzog
dW5yZWNvZ25pemVkIHNldHRpbmcgJXMvJXMgJworICAgICAgICAgICAgICAnd2hpbGUgY29udmVy
dGluZyB0byBNU0J1aWxkLicgJSAobXN2c190b29sX25hbWUsIG1zdnNfc2V0dGluZykpCisgICAg
ZWxzZToKKyAgICAgIHByaW50ID4+IHN0ZGVyciwgKCdXYXJuaW5nOiB1bnJlY29nbml6ZWQgdG9v
bCAlcyB3aGlsZSBjb252ZXJ0aW5nIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdNU0J1
aWxkLicgJSBtc3ZzX3Rvb2xfbmFtZSkKKyAgcmV0dXJuIG1zYnVpbGRfc2V0dGluZ3MKKworCitk
ZWYgVmFsaWRhdGVNU1ZTU2V0dGluZ3Moc2V0dGluZ3MsIHN0ZGVycj1zeXMuc3RkZXJyKToKKyAg
IiIiIFZhbGlkYXRlcyB0aGF0IHRoZSBuYW1lcyBvZiB0aGUgc2V0dGluZ3MgYXJlIHZhbGlkIGZv
ciBNU1ZTLgorCisgIEFyZ3M6CisgICAgICBzZXR0aW5nczogQSBkaWN0aW9uYXJ5LiAgVGhlIGtl
eSBpcyB0aGUgdG9vbCBuYW1lLiAgVGhlIHZhbHVlcyBhcmUKKyAgICAgICAgICAgICAgICB0aGVt
c2VsdmVzIGRpY3Rpb25hcmllcyBvZiBzZXR0aW5ncyBhbmQgdGhlaXIgdmFsdWVzLgorICAgICAg
c3RkZXJyOiBUaGUgc3RyZWFtIHJlY2VpdmluZyB0aGUgZXJyb3IgbWVzc2FnZXMuCisgICIiIgor
ICBfVmFsaWRhdGVTZXR0aW5ncyhfbXN2c192YWxpZGF0b3JzLCBzZXR0aW5ncywgc3RkZXJyKQor
CisKK2RlZiBWYWxpZGF0ZU1TQnVpbGRTZXR0aW5ncyhzZXR0aW5ncywgc3RkZXJyPXN5cy5zdGRl
cnIpOgorICAiIiIgVmFsaWRhdGVzIHRoYXQgdGhlIG5hbWVzIG9mIHRoZSBzZXR0aW5ncyBhcmUg
dmFsaWQgZm9yIE1TQnVpbGQuCisKKyAgQXJnczoKKyAgICAgIHNldHRpbmdzOiBBIGRpY3Rpb25h
cnkuICBUaGUga2V5IGlzIHRoZSB0b29sIG5hbWUuICBUaGUgdmFsdWVzIGFyZQorICAgICAgICAg
ICAgICAgIHRoZW1zZWx2ZXMgZGljdGlvbmFyaWVzIG9mIHNldHRpbmdzIGFuZCB0aGVpciB2YWx1
ZXMuCisgICAgICBzdGRlcnI6IFRoZSBzdHJlYW0gcmVjZWl2aW5nIHRoZSBlcnJvciBtZXNzYWdl
cy4KKyAgIiIiCisgIF9WYWxpZGF0ZVNldHRpbmdzKF9tc2J1aWxkX3ZhbGlkYXRvcnMsIHNldHRp
bmdzLCBzdGRlcnIpCisKKworZGVmIF9WYWxpZGF0ZVNldHRpbmdzKHZhbGlkYXRvcnMsIHNldHRp
bmdzLCBzdGRlcnIpOgorICAiIiIgVmFsaWRhdGVzIHRoYXQgdGhlIHNldHRpbmdzIGFyZSB2YWxp
ZCBmb3IgTVNCdWlsZCBvciBNU1ZTLgorCisgIFdlIGN1cnJlbnRseSBvbmx5IHZhbGlkYXRlIHRo
ZSBuYW1lcyBvZiB0aGUgc2V0dGluZ3MsIG5vdCB0aGVpciB2YWx1ZXMuCisKKyAgQXJnczoKKyAg
ICAgIHZhbGlkYXRvcnM6IEEgZGljdGlvbmFyeSBvZiB0b29scyBhbmQgdGhlaXIgdmFsaWRhdG9y
cy4KKyAgICAgIHNldHRpbmdzOiBBIGRpY3Rpb25hcnkuICBUaGUga2V5IGlzIHRoZSB0b29sIG5h
bWUuICBUaGUgdmFsdWVzIGFyZQorICAgICAgICAgICAgICAgIHRoZW1zZWx2ZXMgZGljdGlvbmFy
aWVzIG9mIHNldHRpbmdzIGFuZCB0aGVpciB2YWx1ZXMuCisgICAgICBzdGRlcnI6IFRoZSBzdHJl
YW0gcmVjZWl2aW5nIHRoZSBlcnJvciBtZXNzYWdlcy4KKyAgIiIiCisgIGZvciB0b29sX25hbWUg
aW4gc2V0dGluZ3M6CisgICAgaWYgdG9vbF9uYW1lIGluIHZhbGlkYXRvcnM6CisgICAgICB0b29s
X3ZhbGlkYXRvcnMgPSB2YWxpZGF0b3JzW3Rvb2xfbmFtZV0KKyAgICAgIGZvciBzZXR0aW5nLCB2
YWx1ZSBpbiBzZXR0aW5nc1t0b29sX25hbWVdLml0ZXJpdGVtcygpOgorICAgICAgICBpZiBzZXR0
aW5nIGluIHRvb2xfdmFsaWRhdG9yczoKKyAgICAgICAgICB0cnk6CisgICAgICAgICAgICB0b29s
X3ZhbGlkYXRvcnNbc2V0dGluZ10odmFsdWUpCisgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6
CisgICAgICAgICAgICBwcmludCA+PiBzdGRlcnIsICgnV2FybmluZzogdW5yZWNvZ25pemVkIHZh
bHVlICIlcyIgZm9yICVzLyVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFs
dWUsIHRvb2xfbmFtZSwgc2V0dGluZykpCisgICAgICAgICAgI2V4Y2VwdCBUeXBlRXJyb3I6ICAj
KGplYW5sdWMpCisgICAgICAgICAgIyAgcHJpbnQgKCcqKip2YWx1ZSAiJXMiIGZvciAlcy8lcycg
JSAodmFsdWUsIHRvb2xfbmFtZSwgc2V0dGluZykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
cHJpbnQgPj4gc3RkZXJyLCAoJ1dhcm5pbmc6IHVucmVjb2duaXplZCBzZXR0aW5nICVzLyVzJyAl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvb2xfbmFtZSwgc2V0dGluZykpCisgICAg
ZWxzZToKKyAgICAgIHByaW50ID4+IHN0ZGVyciwgKCdXYXJuaW5nOiB1bnJlY29nbml6ZWQgdG9v
bCAlcycgJSB0b29sX25hbWUpCisKKworIyBNU1ZTIGFuZCBNQnVpbGQgbmFtZXMgb2YgdGhlIHRv
b2xzLgorX2NvbXBpbGUgPSB7J21zdnMnOiAnVkNDTENvbXBpbGVyVG9vbCcsICdtc2J1aWxkJzog
J0NsQ29tcGlsZSd9CitfbGluayA9IHsnbXN2cyc6ICdWQ0xpbmtlclRvb2wnLCAnbXNidWlsZCc6
ICdMaW5rJ30KK19taWRsID0geydtc3ZzJzogJ1ZDTUlETFRvb2wnLCAnbXNidWlsZCc6ICdNaWRs
J30KK19yYyA9IHsnbXN2cyc6ICdWQ1Jlc291cmNlQ29tcGlsZXJUb29sJywgJ21zYnVpbGQnOiAn
UmVzb3VyY2VDb21waWxlJ30KK19saWIgPSB7J21zdnMnOiAnVkNMaWJyYXJpYW5Ub29sJywgJ21z
YnVpbGQnOiAnTGliJ30KK19tYW5pZmVzdCA9IHsnbXN2cyc6ICdWQ01hbmlmZXN0VG9vbCcsICdt
c2J1aWxkJzogJ010J30KKworCitfQWRkVG9vbChfY29tcGlsZSkKK19BZGRUb29sKF9saW5rKQor
X0FkZFRvb2woX21pZGwpCitfQWRkVG9vbChfcmMpCitfQWRkVG9vbChfbGliKQorX0FkZFRvb2wo
X21hbmlmZXN0KQorIyBBZGQgc2VjdGlvbnMgb25seSBmb3VuZCBpbiB0aGUgTVNCdWlsZCBzZXR0
aW5ncy4KK19tc2J1aWxkX3ZhbGlkYXRvcnNbJyddID0ge30KK19tc2J1aWxkX3ZhbGlkYXRvcnNb
J1Byb2plY3RSZWZlcmVuY2UnXSA9IHt9CitfbXNidWlsZF92YWxpZGF0b3JzWydNYW5pZmVzdFJl
c291cmNlQ29tcGlsZSddID0ge30KKworIyBEZXNjcmlwdGlvbnMgb2YgdGhlIGNvbXBpbGVyIG9w
dGlvbnMsIGkuZS4gVkNDTENvbXBpbGVyVG9vbCBpbiBNU1ZTIGFuZAorIyBDbENvbXBpbGUgaW4g
TVNCdWlsZC4KKyMgU2VlICJjOlxQcm9ncmFtIEZpbGVzICh4ODYpXE1TQnVpbGRcTWljcm9zb2Z0
LkNwcFx2NC4wXDEwMzNcY2wueG1sIiBmb3IKKyMgdGhlIHNjaGVtYSBvZiB0aGUgTVNCdWlsZCBD
bENvbXBpbGUgc2V0dGluZ3MuCisKKyMgT3B0aW9ucyB0aGF0IGhhdmUgdGhlIHNhbWUgbmFtZSBp
biBNU1ZTIGFuZCBNU0J1aWxkCitfU2FtZShfY29tcGlsZSwgJ0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMnLCBfZm9sZGVyX2xpc3QpICAjIC9JCitfU2FtZShfY29tcGlsZSwgJ0FkZGl0aW9u
YWxPcHRpb25zJywgX3N0cmluZ19saXN0KQorX1NhbWUoX2NvbXBpbGUsICdBZGRpdGlvbmFsVXNp
bmdEaXJlY3RvcmllcycsIF9mb2xkZXJfbGlzdCkgICMgL0FJCitfU2FtZShfY29tcGlsZSwgJ0Fz
c2VtYmxlckxpc3RpbmdMb2NhdGlvbicsIF9maWxlX25hbWUpICAjIC9GYQorX1NhbWUoX2NvbXBp
bGUsICdCcm93c2VJbmZvcm1hdGlvbkZpbGUnLCBfZmlsZV9uYW1lKQorX1NhbWUoX2NvbXBpbGUs
ICdCdWZmZXJTZWN1cml0eUNoZWNrJywgX2Jvb2xlYW4pICAjIC9HUworX1NhbWUoX2NvbXBpbGUs
ICdEaXNhYmxlTGFuZ3VhZ2VFeHRlbnNpb25zJywgX2Jvb2xlYW4pICAjIC9aYQorX1NhbWUoX2Nv
bXBpbGUsICdEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncycsIF9zdHJpbmdfbGlzdCkgICMgL3dkCitf
U2FtZShfY29tcGlsZSwgJ0VuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnMnLCBfYm9vbGVhbikg
ICMgL0dUCitfU2FtZShfY29tcGlsZSwgJ0VuYWJsZVBSRWZhc3QnLCBfYm9vbGVhbikgICMgL2Fu
YWx5emUgVmlzaWJsZT0nZmFsc2UnCitfU2FtZShfY29tcGlsZSwgJ0V4cGFuZEF0dHJpYnV0ZWRT
b3VyY2UnLCBfYm9vbGVhbikgICMgL0Z4CitfU2FtZShfY29tcGlsZSwgJ0Zsb2F0aW5nUG9pbnRF
eGNlcHRpb25zJywgX2Jvb2xlYW4pICAjIC9mcDpleGNlcHQKK19TYW1lKF9jb21waWxlLCAnRm9y
Y2VDb25mb3JtYW5jZUluRm9yTG9vcFNjb3BlJywgX2Jvb2xlYW4pICAjIC9aYzpmb3JTY29wZQor
X1NhbWUoX2NvbXBpbGUsICdGb3JjZWRJbmNsdWRlRmlsZXMnLCBfZmlsZV9saXN0KSAgIyAvRkkK
K19TYW1lKF9jb21waWxlLCAnRm9yY2VkVXNpbmdGaWxlcycsIF9maWxlX2xpc3QpICAjIC9GVQor
X1NhbWUoX2NvbXBpbGUsICdHZW5lcmF0ZVhNTERvY3VtZW50YXRpb25GaWxlcycsIF9ib29sZWFu
KSAgIyAvZG9jCitfU2FtZShfY29tcGlsZSwgJ0lnbm9yZVN0YW5kYXJkSW5jbHVkZVBhdGgnLCBf
Ym9vbGVhbikgICMgL1gKK19TYW1lKF9jb21waWxlLCAnTWluaW1hbFJlYnVpbGQnLCBfYm9vbGVh
bikgICMgL0dtCitfU2FtZShfY29tcGlsZSwgJ09taXREZWZhdWx0TGliTmFtZScsIF9ib29sZWFu
KSAgIyAvWmwKK19TYW1lKF9jb21waWxlLCAnT21pdEZyYW1lUG9pbnRlcnMnLCBfYm9vbGVhbikg
ICMgL095CitfU2FtZShfY29tcGlsZSwgJ1ByZXByb2Nlc3NvckRlZmluaXRpb25zJywgX3N0cmlu
Z19saXN0KSAgIyAvRAorX1NhbWUoX2NvbXBpbGUsICdQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZScs
IF9maWxlX25hbWUpICAjIC9GZAorX1NhbWUoX2NvbXBpbGUsICdSdW50aW1lVHlwZUluZm8nLCBf
Ym9vbGVhbikgICMgL0dSCitfU2FtZShfY29tcGlsZSwgJ1Nob3dJbmNsdWRlcycsIF9ib29sZWFu
KSAgIyAvc2hvd0luY2x1ZGVzCitfU2FtZShfY29tcGlsZSwgJ1NtYWxsZXJUeXBlQ2hlY2snLCBf
Ym9vbGVhbikgICMgL1JUQ2MKK19TYW1lKF9jb21waWxlLCAnU3RyaW5nUG9vbGluZycsIF9ib29s
ZWFuKSAgIyAvR0YKK19TYW1lKF9jb21waWxlLCAnU3VwcHJlc3NTdGFydHVwQmFubmVyJywgX2Jv
b2xlYW4pICAjIC9ub2xvZ28KK19TYW1lKF9jb21waWxlLCAnVHJlYXRXQ2hhcl90QXNCdWlsdElu
VHlwZScsIF9ib29sZWFuKSAgIyAvWmM6d2NoYXJfdAorX1NhbWUoX2NvbXBpbGUsICdVbmRlZmlu
ZUFsbFByZXByb2Nlc3NvckRlZmluaXRpb25zJywgX2Jvb2xlYW4pICAjIC91CitfU2FtZShfY29t
cGlsZSwgJ1VuZGVmaW5lUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMnLCBfc3RyaW5nX2xpc3QpICAj
IC9VCitfU2FtZShfY29tcGlsZSwgJ1VzZUZ1bGxQYXRocycsIF9ib29sZWFuKSAgIyAvRkMKK19T
YW1lKF9jb21waWxlLCAnV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uJywgX2Jvb2xlYW4pICAjIC9H
TAorX1NhbWUoX2NvbXBpbGUsICdYTUxEb2N1bWVudGF0aW9uRmlsZU5hbWUnLCBfZmlsZV9uYW1l
KQorCitfU2FtZShfY29tcGlsZSwgJ0Fzc2VtYmxlck91dHB1dCcsCisgICAgICBfRW51bWVyYXRp
b24oWydOb0xpc3RpbmcnLAorICAgICAgICAgICAgICAgICAgICAnQXNzZW1ibHlDb2RlJywgICMg
L0ZBCisgICAgICAgICAgICAgICAgICAgICdBbGwnLCAgIyAvRkFjcworICAgICAgICAgICAgICAg
ICAgICAnQXNzZW1ibHlBbmRNYWNoaW5lQ29kZScsICAjIC9GQWMKKyAgICAgICAgICAgICAgICAg
ICAgJ0Fzc2VtYmx5QW5kU291cmNlQ29kZSddKSkgICMgL0ZBcworX1NhbWUoX2NvbXBpbGUsICdC
YXNpY1J1bnRpbWVDaGVja3MnLAorICAgICAgX0VudW1lcmF0aW9uKFsnRGVmYXVsdCcsCisgICAg
ICAgICAgICAgICAgICAgICdTdGFja0ZyYW1lUnVudGltZUNoZWNrJywgICMgL1JUQ3MKKyAgICAg
ICAgICAgICAgICAgICAgJ1VuaW5pdGlhbGl6ZWRMb2NhbFVzYWdlQ2hlY2snLCAgIyAvUlRDdQor
ICAgICAgICAgICAgICAgICAgICAnRW5hYmxlRmFzdENoZWNrcyddKSkgICMgL1JUQzEKK19TYW1l
KF9jb21waWxlLCAnQnJvd3NlSW5mb3JtYXRpb24nLAorICAgICAgX0VudW1lcmF0aW9uKFsnZmFs
c2UnLAorICAgICAgICAgICAgICAgICAgICAndHJ1ZScsICAjIC9GUgorICAgICAgICAgICAgICAg
ICAgICAndHJ1ZSddKSkgICMgL0ZyCitfU2FtZShfY29tcGlsZSwgJ0NhbGxpbmdDb252ZW50aW9u
JywKKyAgICAgIF9FbnVtZXJhdGlvbihbJ0NkZWNsJywgICMgL0dkCisgICAgICAgICAgICAgICAg
ICAgICdGYXN0Q2FsbCcsICAjIC9HcgorICAgICAgICAgICAgICAgICAgICAnU3RkQ2FsbCddKSkg
ICMgL0d6CitfU2FtZShfY29tcGlsZSwgJ0NvbXBpbGVBcycsCisgICAgICBfRW51bWVyYXRpb24o
WydEZWZhdWx0JywKKyAgICAgICAgICAgICAgICAgICAgJ0NvbXBpbGVBc0MnLCAgIyAvVEMKKyAg
ICAgICAgICAgICAgICAgICAgJ0NvbXBpbGVBc0NwcCddKSkgICMgL1RQCitfU2FtZShfY29tcGls
ZSwgJ0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQnLAorICAgICAgX0VudW1lcmF0aW9uKFsnJywgICMg
RGlzYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgJ09sZFN0eWxlJywgICMgL1o3CisgICAgICAg
ICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICdQcm9ncmFtRGF0YWJhc2Un
LCAgIyAvWmkKKyAgICAgICAgICAgICAgICAgICAgJ0VkaXRBbmRDb250aW51ZSddKSkgICMgL1pJ
CitfU2FtZShfY29tcGlsZSwgJ0VuYWJsZUVuaGFuY2VkSW5zdHJ1Y3Rpb25TZXQnLAorICAgICAg
X0VudW1lcmF0aW9uKFsnTm90U2V0JywKKyAgICAgICAgICAgICAgICAgICAgJ1N0cmVhbWluZ1NJ
TURFeHRlbnNpb25zJywgICMgL2FyY2g6U1NFCisgICAgICAgICAgICAgICAgICAgICdTdHJlYW1p
bmdTSU1ERXh0ZW5zaW9uczInXSkpICAjIC9hcmNoOlNTRTIKK19TYW1lKF9jb21waWxlLCAnRXJy
b3JSZXBvcnRpbmcnLAorICAgICAgX0VudW1lcmF0aW9uKFsnTm9uZScsICAjIC9lcnJvclJlcG9y
dDpub25lCisgICAgICAgICAgICAgICAgICAgICdQcm9tcHQnLCAgIyAvZXJyb3JSZXBvcnQ6cHJv
bXB0CisgICAgICAgICAgICAgICAgICAgICdRdWV1ZSddLCAgIyAvZXJyb3JSZXBvcnQ6cXVldWUK
KyAgICAgICAgICAgICAgICAgICBuZXc9WydTZW5kJ10pKSAgIyAvZXJyb3JSZXBvcnQ6c2VuZCIK
K19TYW1lKF9jb21waWxlLCAnRXhjZXB0aW9uSGFuZGxpbmcnLAorICAgICAgX0VudW1lcmF0aW9u
KFsnZmFsc2UnLAorICAgICAgICAgICAgICAgICAgICAnU3luYycsICAjIC9FSHNjCisgICAgICAg
ICAgICAgICAgICAgICdBc3luYyddLCAgIyAvRUhhCisgICAgICAgICAgICAgICAgICAgbmV3PVsn
U3luY0NUaHJvdyddKSkgICMgL0VIcworX1NhbWUoX2NvbXBpbGUsICdGYXZvclNpemVPclNwZWVk
JywKKyAgICAgIF9FbnVtZXJhdGlvbihbJ05laXRoZXInLAorICAgICAgICAgICAgICAgICAgICAn
U3BlZWQnLCAgIyAvT3QKKyAgICAgICAgICAgICAgICAgICAgJ1NpemUnXSkpICAjIC9PcworX1Nh
bWUoX2NvbXBpbGUsICdGbG9hdGluZ1BvaW50TW9kZWwnLAorICAgICAgX0VudW1lcmF0aW9uKFsn
UHJlY2lzZScsICAjIC9mcDpwcmVjaXNlCisgICAgICAgICAgICAgICAgICAgICdTdHJpY3QnLCAg
IyAvZnA6c3RyaWN0CisgICAgICAgICAgICAgICAgICAgICdGYXN0J10pKSAgIyAvZnA6ZmFzdAor
X1NhbWUoX2NvbXBpbGUsICdJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbicsCisgICAgICBfRW51bWVy
YXRpb24oWydEZWZhdWx0JywKKyAgICAgICAgICAgICAgICAgICAgJ09ubHlFeHBsaWNpdElubGlu
ZScsICAjIC9PYjEKKyAgICAgICAgICAgICAgICAgICAgJ0FueVN1aXRhYmxlJ10sICAjIC9PYjIK
KyAgICAgICAgICAgICAgICAgICBuZXc9WydEaXNhYmxlZCddKSkgICMgL09iMAorX1NhbWUoX2Nv
bXBpbGUsICdPcHRpbWl6YXRpb24nLAorICAgICAgX0VudW1lcmF0aW9uKFsnRGlzYWJsZWQnLCAg
IyAvT2QKKyAgICAgICAgICAgICAgICAgICAgJ01pblNwYWNlJywgICMgL08xCisgICAgICAgICAg
ICAgICAgICAgICdNYXhTcGVlZCcsICAjIC9PMgorICAgICAgICAgICAgICAgICAgICAnRnVsbCdd
KSkgICMgL094CitfU2FtZShfY29tcGlsZSwgJ1J1bnRpbWVMaWJyYXJ5JywKKyAgICAgIF9FbnVt
ZXJhdGlvbihbJ011bHRpVGhyZWFkZWQnLCAgIyAvTVQKKyAgICAgICAgICAgICAgICAgICAgJ011
bHRpVGhyZWFkZWREZWJ1ZycsICAjIC9NVGQKKyAgICAgICAgICAgICAgICAgICAgJ011bHRpVGhy
ZWFkZWRETEwnLCAgIyAvTUQKKyAgICAgICAgICAgICAgICAgICAgJ011bHRpVGhyZWFkZWREZWJ1
Z0RMTCddKSkgICMgL01EZAorX1NhbWUoX2NvbXBpbGUsICdTdHJ1Y3RNZW1iZXJBbGlnbm1lbnQn
LAorICAgICAgX0VudW1lcmF0aW9uKFsnRGVmYXVsdCcsCisgICAgICAgICAgICAgICAgICAgICcx
Qnl0ZScsICAjIC9acDEKKyAgICAgICAgICAgICAgICAgICAgJzJCeXRlcycsICAjIC9acDIKKyAg
ICAgICAgICAgICAgICAgICAgJzRCeXRlcycsICAjIC9acDQKKyAgICAgICAgICAgICAgICAgICAg
JzhCeXRlcycsICAjIC9acDgKKyAgICAgICAgICAgICAgICAgICAgJzE2Qnl0ZXMnXSkpICAjIC9a
cDE2CitfU2FtZShfY29tcGlsZSwgJ1dhcm5pbmdMZXZlbCcsCisgICAgICBfRW51bWVyYXRpb24o
WydUdXJuT2ZmQWxsV2FybmluZ3MnLCAgIyAvVzAKKyAgICAgICAgICAgICAgICAgICAgJ0xldmVs
MScsICAjIC9XMQorICAgICAgICAgICAgICAgICAgICAnTGV2ZWwyJywgICMgL1cyCisgICAgICAg
ICAgICAgICAgICAgICdMZXZlbDMnLCAgIyAvVzMKKyAgICAgICAgICAgICAgICAgICAgJ0xldmVs
NCddLCAgIyAvVzQKKyAgICAgICAgICAgICAgICAgICBuZXc9WydFbmFibGVBbGxXYXJuaW5ncydd
KSkgICMgL1dhbGwKKworIyBPcHRpb25zIGZvdW5kIGluIE1TVlMgdGhhdCBoYXZlIGJlZW4gcmVu
YW1lZCBpbiBNU0J1aWxkLgorX1JlbmFtZWQoX2NvbXBpbGUsICdFbmFibGVGdW5jdGlvbkxldmVs
TGlua2luZycsICdGdW5jdGlvbkxldmVsTGlua2luZycsCisgICAgICAgICBfYm9vbGVhbikgICMg
L0d5CitfUmVuYW1lZChfY29tcGlsZSwgJ0VuYWJsZUludHJpbnNpY0Z1bmN0aW9ucycsICdJbnRy
aW5zaWNGdW5jdGlvbnMnLAorICAgICAgICAgX2Jvb2xlYW4pICAjIC9PaQorX1JlbmFtZWQoX2Nv
bXBpbGUsICdLZWVwQ29tbWVudHMnLCAnUHJlcHJvY2Vzc0tlZXBDb21tZW50cycsIF9ib29sZWFu
KSAgIyAvQworX1JlbmFtZWQoX2NvbXBpbGUsICdPYmplY3RGaWxlJywgJ09iamVjdEZpbGVOYW1l
JywgX2ZpbGVfbmFtZSkgICMgL0ZvCitfUmVuYW1lZChfY29tcGlsZSwgJ09wZW5NUCcsICdPcGVu
TVBTdXBwb3J0JywgX2Jvb2xlYW4pICAjIC9vcGVubXAKK19SZW5hbWVkKF9jb21waWxlLCAnUHJl
Y29tcGlsZWRIZWFkZXJUaHJvdWdoJywgICdQcmVjb21waWxlZEhlYWRlckZpbGUnLAorICAgICAg
ICAgX2ZpbGVfbmFtZSkgICMgVXNlZCB3aXRoIC9ZYyBhbmQgL1l1CitfUmVuYW1lZChfY29tcGls
ZSwgJ1ByZWNvbXBpbGVkSGVhZGVyRmlsZScsICdQcmVjb21waWxlZEhlYWRlck91dHB1dEZpbGUn
LAorICAgICAgICAgX2ZpbGVfbmFtZSkgICMgL0ZwCitfUmVuYW1lZChfY29tcGlsZSwgJ1VzZVBy
ZWNvbXBpbGVkSGVhZGVyJywgJ1ByZWNvbXBpbGVkSGVhZGVyJywKKyAgICAgICAgIF9FbnVtZXJh
dGlvbihbJ05vdFVzaW5nJywgICMgVlMgcmVjb2duaXplZCAnJyBmb3IgdGhpcyB2YWx1ZSB0b28u
CisgICAgICAgICAgICAgICAgICAgICAgICdDcmVhdGUnLCAgICMgL1ljCisgICAgICAgICAgICAg
ICAgICAgICAgICdVc2UnXSkpICAjIC9ZdQorX1JlbmFtZWQoX2NvbXBpbGUsICdXYXJuQXNFcnJv
cicsICdUcmVhdFdhcm5pbmdBc0Vycm9yJywgX2Jvb2xlYW4pICAjIC9XWAorCitfQ29udmVydGVk
VG9BZGRpdGlvbmFsT3B0aW9uKF9jb21waWxlLCAnRGVmYXVsdENoYXJJc1Vuc2lnbmVkJywgJy9K
JykKKworIyBNU1ZTIG9wdGlvbnMgbm90IGZvdW5kIGluIE1TQnVpbGQuCitfTVNWU09ubHkoX2Nv
bXBpbGUsICdEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXMnLCBfYm9vbGVhbikKK19NU1ZT
T25seShfY29tcGlsZSwgJ1VzZVVuaWNvZGVSZXNwb25zZUZpbGVzJywgX2Jvb2xlYW4pCisKKyMg
TVNCdWlsZCBvcHRpb25zIG5vdCBmb3VuZCBpbiBNU1ZTLgorX01TQnVpbGRPbmx5KF9jb21waWxl
LCAnQnVpbGRpbmdJbklERScsIF9ib29sZWFuKQorX01TQnVpbGRPbmx5KF9jb21waWxlLCAnQ29t
cGlsZUFzTWFuYWdlZCcsCisgICAgICAgICAgICAgX0VudW1lcmF0aW9uKFtdLCBuZXc9WydmYWxz
ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cnVlJywgICMgL2Nscgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHVyZScsICAjIC9jbHI6cHVyZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2FmZScsICAjIC9jbHI6c2FmZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnT2xkU3ludGF4J10pKSAgIyAvY2xy
Om9sZFN5bnRheAorX01TQnVpbGRPbmx5KF9jb21waWxlLCAnQ3JlYXRlSG90cGF0Y2hhYmxlSW1h
Z2UnLCBfYm9vbGVhbikgICMgL2hvdHBhdGNoCitfTVNCdWlsZE9ubHkoX2NvbXBpbGUsICdNdWx0
aVByb2Nlc3NvckNvbXBpbGF0aW9uJywgX2Jvb2xlYW4pICAjIC9NUAorX01TQnVpbGRPbmx5KF9j
b21waWxlLCAnUHJlcHJvY2Vzc091dHB1dFBhdGgnLCBfc3RyaW5nKSAgIyAvRmkKK19NU0J1aWxk
T25seShfY29tcGlsZSwgJ1Byb2Nlc3Nvck51bWJlcicsIF9pbnRlZ2VyKSAgIyB0aGUgbnVtYmVy
IG9mIHByb2Nlc3NvcnMKK19NU0J1aWxkT25seShfY29tcGlsZSwgJ1RyYWNrZXJMb2dEaXJlY3Rv
cnknLCBfZm9sZGVyX25hbWUpCitfTVNCdWlsZE9ubHkoX2NvbXBpbGUsICdUcmVhdFNwZWNpZmlj
V2FybmluZ3NBc0Vycm9ycycsIF9zdHJpbmdfbGlzdCkgICMgL3dlCitfTVNCdWlsZE9ubHkoX2Nv
bXBpbGUsICdVc2VVbmljb2RlRm9yQXNzZW1ibGVyTGlzdGluZycsIF9ib29sZWFuKSAgIyAvRkF1
CisKKyMgRGVmaW5lcyBhIHNldHRpbmcgdGhhdCBuZWVkcyB2ZXJ5IGN1c3RvbWl6ZWQgcHJvY2Vz
c2luZworX0N1c3RvbUdlbmVyYXRlUHJlcHJvY2Vzc2VkRmlsZShfY29tcGlsZSwgJ0dlbmVyYXRl
UHJlcHJvY2Vzc2VkRmlsZScpCisKKworIyBEaXJlY3RpdmVzIGZvciBjb252ZXJ0aW5nIE1TVlMg
VkNMaW5rZXJUb29sIHRvIE1TQnVpbGQgTGluay4KKyMgU2VlICJjOlxQcm9ncmFtIEZpbGVzICh4
ODYpXE1TQnVpbGRcTWljcm9zb2Z0LkNwcFx2NC4wXDEwMzNcbGluay54bWwiIGZvcgorIyB0aGUg
c2NoZW1hIG9mIHRoZSBNU0J1aWxkIExpbmsgc2V0dGluZ3MuCisKKyMgT3B0aW9ucyB0aGF0IGhh
dmUgdGhlIHNhbWUgbmFtZSBpbiBNU1ZTIGFuZCBNU0J1aWxkCitfU2FtZShfbGluaywgJ0FkZGl0
aW9uYWxEZXBlbmRlbmNpZXMnLCBfZmlsZV9saXN0KQorX1NhbWUoX2xpbmssICdBZGRpdGlvbmFs
TGlicmFyeURpcmVjdG9yaWVzJywgX2ZvbGRlcl9saXN0KSAgIyAvTElCUEFUSAorX1NhbWUoX2xp
bmssICdBZGRpdGlvbmFsTWFuaWZlc3REZXBlbmRlbmNpZXMnLCBfZmlsZV9saXN0KSAjIC9NQU5J
RkVTVERFUEVOREVOQ1kKK19TYW1lKF9saW5rLCAnQWRkaXRpb25hbE9wdGlvbnMnLCBfc3RyaW5n
X2xpc3QpCitfU2FtZShfbGluaywgJ0FkZE1vZHVsZU5hbWVzVG9Bc3NlbWJseScsIF9maWxlX2xp
c3QpICAjIC9BU1NFTUJMWU1PRFVMRQorX1NhbWUoX2xpbmssICdBbGxvd0lzb2xhdGlvbicsIF9i
b29sZWFuKSAgIyAvQUxMT1dJU09MQVRJT04KK19TYW1lKF9saW5rLCAnQXNzZW1ibHlMaW5rUmVz
b3VyY2UnLCBfZmlsZV9saXN0KSAgIyAvQVNTRU1CTFlMSU5LUkVTT1VSQ0UKK19TYW1lKF9saW5r
LCAnQmFzZUFkZHJlc3MnLCBfc3RyaW5nKSAgIyAvQkFTRQorX1NhbWUoX2xpbmssICdDTFJVbm1h
bmFnZWRDb2RlQ2hlY2snLCBfYm9vbGVhbikgICMgL0NMUlVOTUFOQUdFRENPREVDSEVDSworX1Nh
bWUoX2xpbmssICdEZWxheUxvYWRETExzJywgX2ZpbGVfbGlzdCkgICMgL0RFTEFZTE9BRAorX1Nh
bWUoX2xpbmssICdEZWxheVNpZ24nLCBfYm9vbGVhbikgICMgL0RFTEFZU0lHTgorX1NhbWUoX2xp
bmssICdFbWJlZE1hbmFnZWRSZXNvdXJjZUZpbGUnLCBfZmlsZV9saXN0KSAgIyAvQVNTRU1CTFlS
RVNPVVJDRQorX1NhbWUoX2xpbmssICdFbmFibGVVQUMnLCBfYm9vbGVhbikgICMgL01BTklGRVNU
VUFDCitfU2FtZShfbGluaywgJ0VudHJ5UG9pbnRTeW1ib2wnLCBfc3RyaW5nKSAgIyAvRU5UUlkK
K19TYW1lKF9saW5rLCAnRm9yY2VTeW1ib2xSZWZlcmVuY2VzJywgX2ZpbGVfbGlzdCkgICMgL0lO
Q0xVREUKK19TYW1lKF9saW5rLCAnRnVuY3Rpb25PcmRlcicsIF9maWxlX25hbWUpICAjIC9PUkRF
UgorX1NhbWUoX2xpbmssICdHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24nLCBfYm9vbGVhbikgICMg
L0RFQlVHCitfU2FtZShfbGluaywgJ0dlbmVyYXRlTWFwRmlsZScsIF9ib29sZWFuKSAgIyAvTUFQ
CitfU2FtZShfbGluaywgJ0hlYXBDb21taXRTaXplJywgX3N0cmluZykKK19TYW1lKF9saW5rLCAn
SGVhcFJlc2VydmVTaXplJywgX3N0cmluZykgICMgL0hFQVAKK19TYW1lKF9saW5rLCAnSWdub3Jl
QWxsRGVmYXVsdExpYnJhcmllcycsIF9ib29sZWFuKSAgIyAvTk9ERUZBVUxUTElCCitfU2FtZShf
bGluaywgJ0lnbm9yZUVtYmVkZGVkSURMJywgX2Jvb2xlYW4pICAjIC9JR05PUkVJREwKK19TYW1l
KF9saW5rLCAnSW1wb3J0TGlicmFyeScsIF9maWxlX25hbWUpICAjIC9JTVBMSUIKK19TYW1lKF9s
aW5rLCAnS2V5Q29udGFpbmVyJywgX2ZpbGVfbmFtZSkgICMgL0tFWUNPTlRBSU5FUgorX1NhbWUo
X2xpbmssICdLZXlGaWxlJywgX2ZpbGVfbmFtZSkgICMgL0tFWUZJTEUKK19TYW1lKF9saW5rLCAn
TWFuaWZlc3RGaWxlJywgX2ZpbGVfbmFtZSkgICMgL01hbmlmZXN0RmlsZQorX1NhbWUoX2xpbmss
ICdNYXBFeHBvcnRzJywgX2Jvb2xlYW4pICAjIC9NQVBJTkZPOkVYUE9SVFMKK19TYW1lKF9saW5r
LCAnTWFwRmlsZU5hbWUnLCBfZmlsZV9uYW1lKQorX1NhbWUoX2xpbmssICdNZXJnZWRJRExCYXNl
RmlsZU5hbWUnLCBfZmlsZV9uYW1lKSAgIyAvSURMT1VUCitfU2FtZShfbGluaywgJ01lcmdlU2Vj
dGlvbnMnLCBfc3RyaW5nKSAgIyAvTUVSR0UKK19TYW1lKF9saW5rLCAnTWlkbENvbW1hbmRGaWxl
JywgX2ZpbGVfbmFtZSkgICMgL01JREwKK19TYW1lKF9saW5rLCAnTW9kdWxlRGVmaW5pdGlvbkZp
bGUnLCBfZmlsZV9uYW1lKSAgIyAvREVGCitfU2FtZShfbGluaywgJ091dHB1dEZpbGUnLCBfZmls
ZV9uYW1lKSAgIyAvT1VUCitfU2FtZShfbGluaywgJ1BlclVzZXJSZWRpcmVjdGlvbicsIF9ib29s
ZWFuKQorX1NhbWUoX2xpbmssICdQcm9maWxlJywgX2Jvb2xlYW4pICAjIC9QUk9GSUxFCitfU2Ft
ZShfbGluaywgJ1Byb2ZpbGVHdWlkZWREYXRhYmFzZScsIF9maWxlX25hbWUpICAjIC9QR0QKK19T
YW1lKF9saW5rLCAnUHJvZ3JhbURhdGFiYXNlRmlsZScsIF9maWxlX25hbWUpICAjIC9QREIKK19T
YW1lKF9saW5rLCAnUmVnaXN0ZXJPdXRwdXQnLCBfYm9vbGVhbikKK19TYW1lKF9saW5rLCAnU2V0
Q2hlY2tzdW0nLCBfYm9vbGVhbikgICMgL1JFTEVBU0UKK19TYW1lKF9saW5rLCAnU3RhY2tDb21t
aXRTaXplJywgX3N0cmluZykKK19TYW1lKF9saW5rLCAnU3RhY2tSZXNlcnZlU2l6ZScsIF9zdHJp
bmcpICAjIC9TVEFDSworX1NhbWUoX2xpbmssICdTdHJpcFByaXZhdGVTeW1ib2xzJywgX2ZpbGVf
bmFtZSkgICMgL1BEQlNUUklQUEVECitfU2FtZShfbGluaywgJ1N1cHBvcnRVbmxvYWRPZkRlbGF5
TG9hZGVkRExMJywgX2Jvb2xlYW4pICAjIC9ERUxBWTpVTkxPQUQKK19TYW1lKF9saW5rLCAnU3Vw
cHJlc3NTdGFydHVwQmFubmVyJywgX2Jvb2xlYW4pICAjIC9OT0xPR08KK19TYW1lKF9saW5rLCAn
U3dhcFJ1bkZyb21DRCcsIF9ib29sZWFuKSAgIyAvU1dBUFJVTjpDRAorX1NhbWUoX2xpbmssICdU
dXJuT2ZmQXNzZW1ibHlHZW5lcmF0aW9uJywgX2Jvb2xlYW4pICAjIC9OT0FTU0VNQkxZCitfU2Ft
ZShfbGluaywgJ1R5cGVMaWJyYXJ5RmlsZScsIF9maWxlX25hbWUpICAjIC9UTEJPVVQKK19TYW1l
KF9saW5rLCAnVHlwZUxpYnJhcnlSZXNvdXJjZUlEJywgX2ludGVnZXIpICAjIC9UTEJJRAorX1Nh
bWUoX2xpbmssICdVQUNVSUFjY2VzcycsIF9ib29sZWFuKSAgIyAvdWlBY2Nlc3M9J3RydWUnCitf
U2FtZShfbGluaywgJ1ZlcnNpb24nLCBfc3RyaW5nKSAgIyAvVkVSU0lPTgorCitfU2FtZShfbGlu
aywgJ0VuYWJsZUNPTURBVEZvbGRpbmcnLCBfbmV3bHlfYm9vbGVhbikgICMgL09QVDpJQ0YKK19T
YW1lKF9saW5rLCAnRml4ZWRCYXNlQWRkcmVzcycsIF9uZXdseV9ib29sZWFuKSAgIyAvRklYRUQK
K19TYW1lKF9saW5rLCAnTGFyZ2VBZGRyZXNzQXdhcmUnLCBfbmV3bHlfYm9vbGVhbikgICMgL0xB
UkdFQUREUkVTU0FXQVJFCitfU2FtZShfbGluaywgJ09wdGltaXplUmVmZXJlbmNlcycsIF9uZXds
eV9ib29sZWFuKSAgIyAvT1BUOlJFRgorX1NhbWUoX2xpbmssICdSYW5kb21pemVkQmFzZUFkZHJl
c3MnLCBfbmV3bHlfYm9vbGVhbikgICMgL0RZTkFNSUNCQVNFCitfU2FtZShfbGluaywgJ1Rlcm1p
bmFsU2VydmVyQXdhcmUnLCBfbmV3bHlfYm9vbGVhbikgICMgL1RTQVdBUkUKKworX3N1YnN5c3Rl
bV9lbnVtZXJhdGlvbiA9IF9FbnVtZXJhdGlvbihbCisgICAgJ05vdFNldCcsCisgICAgJ0NvbnNv
bGUnLCAgIyAvU1VCU1lTVEVNOkNPTlNPTEUKKyAgICAnV2luZG93cycsICAjIC9TVUJTWVNURU06
V0lORE9XUworICAgICdOYXRpdmUnLCAgIyAvU1VCU1lTVEVNOk5BVElWRQorICAgICdFRkkgQXBw
bGljYXRpb24nLCAgIyAvU1VCU1lTVEVNOkVGSV9BUFBMSUNBVElPTgorICAgICdFRkkgQm9vdCBT
ZXJ2aWNlIERyaXZlcicsICAjIC9TVUJTWVNURU06RUZJX0JPT1RfU0VSVklDRV9EUklWRVIKKyAg
ICAnRUZJIFJPTScsICAjIC9TVUJTWVNURU06RUZJX1JPTQorICAgICdFRkkgUnVudGltZScsICAj
IC9TVUJTWVNURU06RUZJX1JVTlRJTUVfRFJJVkVSCisgICAgJ1dpbmRvd3NDRSddLCAgIyAvU1VC
U1lTVEVNOldJTkRPV1NDRQorICAgIG5ldz1bJ1BPU0lYJ10pICAjIC9TVUJTWVNURU06UE9TSVgK
KworX3RhcmdldF9tYWNoaW5lX2VudW1lcmF0aW9uID0gX0VudW1lcmF0aW9uKFsKKyAgICAnTm90
U2V0JywKKyAgICAnTWFjaGluZVg4NicsICAjIC9NQUNISU5FOlg4NgorICAgIE5vbmUsCisgICAg
J01hY2hpbmVBUk0nLCAgIyAvTUFDSElORTpBUk0KKyAgICAnTWFjaGluZUVCQycsICAjIC9NQUNI
SU5FOkVCQworICAgICdNYWNoaW5lSUE2NCcsICAjIC9NQUNISU5FOklBNjQKKyAgICBOb25lLAor
ICAgICdNYWNoaW5lTUlQUycsICAjIC9NQUNISU5FOk1JUFMKKyAgICAnTWFjaGluZU1JUFMxNics
ICAjIC9NQUNISU5FOk1JUFMxNgorICAgICdNYWNoaW5lTUlQU0ZQVScsICAjIC9NQUNISU5FOk1J
UFNGUFUKKyAgICAnTWFjaGluZU1JUFNGUFUxNicsICAjIC9NQUNISU5FOk1JUFNGUFUxNgorICAg
IE5vbmUsCisgICAgTm9uZSwKKyAgICBOb25lLAorICAgICdNYWNoaW5lU0g0JywgICMgL01BQ0hJ
TkU6U0g0CisgICAgTm9uZSwKKyAgICAnTWFjaGluZVRIVU1CJywgICMgL01BQ0hJTkU6VEhVTUIK
KyAgICAnTWFjaGluZVg2NCddKSAgIyAvTUFDSElORTpYNjQKKworX1NhbWUoX2xpbmssICdBc3Nl
bWJseURlYnVnJywKKyAgICAgIF9FbnVtZXJhdGlvbihbJycsCisgICAgICAgICAgICAgICAgICAg
ICd0cnVlJywgICMgL0FTU0VNQkxZREVCVUcKKyAgICAgICAgICAgICAgICAgICAgJ2ZhbHNlJ10p
KSAgIyAvQVNTRU1CTFlERUJVRzpESVNBQkxFCitfU2FtZShfbGluaywgJ0NMUkltYWdlVHlwZScs
CisgICAgICBfRW51bWVyYXRpb24oWydEZWZhdWx0JywKKyAgICAgICAgICAgICAgICAgICAgJ0Zv
cmNlSUpXSW1hZ2UnLCAgIyAvQ0xSSU1BR0VUWVBFOklKVworICAgICAgICAgICAgICAgICAgICAn
Rm9yY2VQdXJlSUxJbWFnZScsICAjIC9Td2l0Y2g9IkNMUklNQUdFVFlQRTpQVVJFCisgICAgICAg
ICAgICAgICAgICAgICdGb3JjZVNhZmVJTEltYWdlJ10pKSAgIyAvU3dpdGNoPSJDTFJJTUFHRVRZ
UEU6U0FGRQorX1NhbWUoX2xpbmssICdDTFJUaHJlYWRBdHRyaWJ1dGUnLAorICAgICAgX0VudW1l
cmF0aW9uKFsnRGVmYXVsdFRocmVhZGluZ0F0dHJpYnV0ZScsICAjIC9DTFJUSFJFQURBVFRSSUJV
VEU6Tk9ORQorICAgICAgICAgICAgICAgICAgICAnTVRBVGhyZWFkaW5nQXR0cmlidXRlJywgICMg
L0NMUlRIUkVBREFUVFJJQlVURTpNVEEKKyAgICAgICAgICAgICAgICAgICAgJ1NUQVRocmVhZGlu
Z0F0dHJpYnV0ZSddKSkgICMgL0NMUlRIUkVBREFUVFJJQlVURTpTVEEKK19TYW1lKF9saW5rLCAn
RGF0YUV4ZWN1dGlvblByZXZlbnRpb24nLAorICAgICAgX0VudW1lcmF0aW9uKFsnJywKKyAgICAg
ICAgICAgICAgICAgICAgJ2ZhbHNlJywgICMgL05YQ09NUEFUOk5PCisgICAgICAgICAgICAgICAg
ICAgICd0cnVlJ10pKSAgIyAvTlhDT01QQVQKK19TYW1lKF9saW5rLCAnRHJpdmVyJywKKyAgICAg
IF9FbnVtZXJhdGlvbihbJ05vdFNldCcsCisgICAgICAgICAgICAgICAgICAgICdEcml2ZXInLCAg
IyAvRHJpdmVyCisgICAgICAgICAgICAgICAgICAgICdVcE9ubHknLCAgIyAvRFJJVkVSOlVQT05M
WQorICAgICAgICAgICAgICAgICAgICAnV0RNJ10pKSAgIyAvRFJJVkVSOldETQorX1NhbWUoX2xp
bmssICdMaW5rVGltZUNvZGVHZW5lcmF0aW9uJywKKyAgICAgIF9FbnVtZXJhdGlvbihbJ0RlZmF1
bHQnLAorICAgICAgICAgICAgICAgICAgICAnVXNlTGlua1RpbWVDb2RlR2VuZXJhdGlvbicsICAj
IC9MVENHCisgICAgICAgICAgICAgICAgICAgICdQR0luc3RydW1lbnQnLCAgIyAvTFRDRzpQR0lu
c3RydW1lbnQKKyAgICAgICAgICAgICAgICAgICAgJ1BHT3B0aW1pemF0aW9uJywgICMgL0xUQ0c6
UEdPcHRpbWl6ZQorICAgICAgICAgICAgICAgICAgICAnUEdVcGRhdGUnXSkpICAjIC9MVENHOlBH
VXBkYXRlCitfU2FtZShfbGluaywgJ1Nob3dQcm9ncmVzcycsCisgICAgICBfRW51bWVyYXRpb24o
WydOb3RTZXQnLAorICAgICAgICAgICAgICAgICAgICAnTGlua1ZlcmJvc2UnLCAgIyAvVkVSQk9T
RQorICAgICAgICAgICAgICAgICAgICAnTGlua1ZlcmJvc2VMaWInXSwgICMgL1ZFUkJPU0U6TGli
CisgICAgICAgICAgICAgICAgICAgbmV3PVsnTGlua1ZlcmJvc2VJQ0YnLCAgIyAvVkVSQk9TRTpJ
Q0YKKyAgICAgICAgICAgICAgICAgICAgICAgICdMaW5rVmVyYm9zZVJFRicsICAjIC9WRVJCT1NF
OlJFRgorICAgICAgICAgICAgICAgICAgICAgICAgJ0xpbmtWZXJib3NlU0FGRVNFSCcsICAjIC9W
RVJCT1NFOlNBRkVTRUgKKyAgICAgICAgICAgICAgICAgICAgICAgICdMaW5rVmVyYm9zZUNMUidd
KSkgICMgL1ZFUkJPU0U6Q0xSCitfU2FtZShfbGluaywgJ1N1YlN5c3RlbScsIF9zdWJzeXN0ZW1f
ZW51bWVyYXRpb24pCitfU2FtZShfbGluaywgJ1RhcmdldE1hY2hpbmUnLCBfdGFyZ2V0X21hY2hp
bmVfZW51bWVyYXRpb24pCitfU2FtZShfbGluaywgJ1VBQ0V4ZWN1dGlvbkxldmVsJywKKyAgICAg
IF9FbnVtZXJhdGlvbihbJ0FzSW52b2tlcicsICAjIC9sZXZlbD0nYXNJbnZva2VyJworICAgICAg
ICAgICAgICAgICAgICAnSGlnaGVzdEF2YWlsYWJsZScsICAjIC9sZXZlbD0naGlnaGVzdEF2YWls
YWJsZScKKyAgICAgICAgICAgICAgICAgICAgJ1JlcXVpcmVBZG1pbmlzdHJhdG9yJ10pKSAgIyAv
bGV2ZWw9J3JlcXVpcmVBZG1pbmlzdHJhdG9yJworCisKKyMgT3B0aW9ucyBmb3VuZCBpbiBNU1ZT
IHRoYXQgaGF2ZSBiZWVuIHJlbmFtZWQgaW4gTVNCdWlsZC4KK19SZW5hbWVkKF9saW5rLCAnRXJy
b3JSZXBvcnRpbmcnLCAnTGlua0Vycm9yUmVwb3J0aW5nJywKKyAgICAgICAgIF9FbnVtZXJhdGlv
bihbJ05vRXJyb3JSZXBvcnQnLCAgIyAvRVJST1JSRVBPUlQ6Tk9ORQorICAgICAgICAgICAgICAg
ICAgICAgICAnUHJvbXB0SW1tZWRpYXRlbHknLCAgIyAvRVJST1JSRVBPUlQ6UFJPTVBUCisgICAg
ICAgICAgICAgICAgICAgICAgICdRdWV1ZUZvck5leHRMb2dpbiddLCAgIyAvRVJST1JSRVBPUlQ6
UVVFVUUKKyAgICAgICAgICAgICAgICAgICAgICBuZXc9WydTZW5kRXJyb3JSZXBvcnQnXSkpICAj
IC9FUlJPUlJFUE9SVDpTRU5ECitfUmVuYW1lZChfbGluaywgJ0lnbm9yZURlZmF1bHRMaWJyYXJ5
TmFtZXMnLCAnSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzJywKKyAgICAgICAgIF9maWxl
X2xpc3QpICAjIC9OT0RFRkFVTFRMSUIKK19SZW5hbWVkKF9saW5rLCAnUmVzb3VyY2VPbmx5RExM
JywgJ05vRW50cnlQb2ludCcsIF9ib29sZWFuKSAgIyAvTk9FTlRSWQorX1JlbmFtZWQoX2xpbmss
ICdTd2FwUnVuRnJvbU5ldCcsICdTd2FwUnVuRnJvbU5FVCcsIF9ib29sZWFuKSAgIyAvU1dBUFJV
TjpORVQKKworX01vdmVkKF9saW5rLCAnR2VuZXJhdGVNYW5pZmVzdCcsICcnLCBfYm9vbGVhbikK
K19Nb3ZlZChfbGluaywgJ0lnbm9yZUltcG9ydExpYnJhcnknLCAnJywgX2Jvb2xlYW4pCitfTW92
ZWQoX2xpbmssICdMaW5rSW5jcmVtZW50YWwnLCAnJywgX25ld2x5X2Jvb2xlYW4pCitfTW92ZWQo
X2xpbmssICdMaW5rTGlicmFyeURlcGVuZGVuY2llcycsICdQcm9qZWN0UmVmZXJlbmNlJywgX2Jv
b2xlYW4pCitfTW92ZWQoX2xpbmssICdVc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0cycsICdQcm9q
ZWN0UmVmZXJlbmNlJywgX2Jvb2xlYW4pCisKKyMgTVNWUyBvcHRpb25zIG5vdCBmb3VuZCBpbiBN
U0J1aWxkLgorX01TVlNPbmx5KF9saW5rLCAnT3B0aW1pemVGb3JXaW5kb3dzOTgnLCBfbmV3bHlf
Ym9vbGVhbikKK19NU1ZTT25seShfbGluaywgJ1VzZVVuaWNvZGVSZXNwb25zZUZpbGVzJywgX2Jv
b2xlYW4pCisjIFRPRE8oamVhbmx1YykgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgZ2VudWluZSBz
ZXR0aW5ncyBidXQgYnlwcm9kdWN0cyBvZiBHeXAuCitfTVNWU09ubHkoX2xpbmssICdBZGRpdGlv
bmFsTGlicmFyeURpcmVjdG9yaWVzX2V4Y2x1ZGVkJywgX2ZvbGRlcl9saXN0KQorCisjIE1TQnVp
bGQgb3B0aW9ucyBub3QgZm91bmQgaW4gTVNWUy4KK19NU0J1aWxkT25seShfbGluaywgJ0J1aWxk
aW5nSW5JREUnLCBfYm9vbGVhbikKK19NU0J1aWxkT25seShfbGluaywgJ0ltYWdlSGFzU2FmZUV4
Y2VwdGlvbkhhbmRsZXJzJywgX2Jvb2xlYW4pICAjIC9TQUZFU0VICitfTVNCdWlsZE9ubHkoX2xp
bmssICdMaW5rRExMJywgX2Jvb2xlYW4pICAjIC9ETEwgVmlzaWJsZT0nZmFsc2UnCitfTVNCdWls
ZE9ubHkoX2xpbmssICdMaW5rU3RhdHVzJywgX2Jvb2xlYW4pICAjIC9MVENHOlNUQVRVUworX01T
QnVpbGRPbmx5KF9saW5rLCAnUHJldmVudERsbEJpbmRpbmcnLCBfYm9vbGVhbikgICMgL0FMTE9X
QklORAorX01TQnVpbGRPbmx5KF9saW5rLCAnU3VwcG9ydE5vYmluZE9mRGVsYXlMb2FkZWRETEwn
LCBfYm9vbGVhbikgICMgL0RFTEFZOk5PQklORAorX01TQnVpbGRPbmx5KF9saW5rLCAnVHJhY2tl
ckxvZ0RpcmVjdG9yeScsIF9mb2xkZXJfbmFtZSkKK19NU0J1aWxkT25seShfbGluaywgJ1RyZWF0
TGlua2VyV2FybmluZ0FzRXJyb3JzJywgX2Jvb2xlYW4pICAjIC9XWAorX01TQnVpbGRPbmx5KF9s
aW5rLCAnTWluaW11bVJlcXVpcmVkVmVyc2lvbicsIF9zdHJpbmcpCitfTVNCdWlsZE9ubHkoX2xp
bmssICdNU0RPU1N0dWJGaWxlTmFtZScsIF9maWxlX25hbWUpICAjIC9TVFVCIFZpc2libGU9J2Zh
bHNlJworX01TQnVpbGRPbmx5KF9saW5rLCAnU2VjdGlvbkFsaWdubWVudCcsIF9pbnRlZ2VyKSAg
IyAvQUxJR04KK19NU0J1aWxkT25seShfbGluaywgJ1NwZWNpZnlTZWN0aW9uQXR0cmlidXRlcycs
IF9zdHJpbmcpICAjIC9TRUNUSU9OCitfTVNCdWlsZE9ubHkoX2xpbmssICdGb3JjZUZpbGVPdXRw
dXQnLAorICAgICAgICAgICAgIF9FbnVtZXJhdGlvbihbXSwgbmV3PVsnRW5hYmxlZCcsICAjIC9G
T1JDRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTXVsdGlwbHlEZWZpbmVk
U3ltYm9sT25seScsICMvRk9SQ0U6TVVMVElQTEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1VuZGVmaW5lZFN5bWJvbE9ubHknXSkpICAjIC9GT1JDRTpVTlJFU09MVkVECitf
TVNCdWlsZE9ubHkoX2xpbmssICdDcmVhdGVIb3RQYXRjaGFibGVJbWFnZScsCisgICAgICAgICAg
ICAgX0VudW1lcmF0aW9uKFtdLCBuZXc9WydFbmFibGVkJywgICMgL0ZVTkNUSU9OUEFETUlOCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdYODZJbWFnZScsICAjIC9GVU5DVElP
TlBBRE1JTjo1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdYNjRJbWFnZScs
ICAjIC9GVU5DVElPTlBBRE1JTjo2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdJdGFuaXVtSW1hZ2UnXSkpICAjIC9GVU5DVElPTlBBRE1JTjoxNgorX01TQnVpbGRPbmx5KF9s
aW5rLCAnQ0xSU3VwcG9ydExhc3RFcnJvcicsCisgICAgICAgICAgICAgX0VudW1lcmF0aW9uKFtd
LCBuZXc9WydFbmFibGVkJywgICMgL0NMUlN1cHBvcnRMYXN0RXJyb3IKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0Rpc2FibGVkJywgICMgL0NMUlN1cHBvcnRMYXN0RXJyb3I6
Tk8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAvQ0xSU3VwcG9ydExhc3RF
cnJvcjpTWVNURU1ETEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1N5c3Rl
bURsbHMnXSkpCisKKworIyBEaXJlY3RpdmVzIGZvciBjb252ZXJ0aW5nIFZDUmVzb3VyY2VDb21w
aWxlclRvb2wgdG8gUmVzb3VyY2VDb21waWxlLgorIyBTZWUgImM6XFByb2dyYW0gRmlsZXMgKHg4
NilcTVNCdWlsZFxNaWNyb3NvZnQuQ3BwXHY0LjBcMTAzM1xyYy54bWwiIGZvcgorIyB0aGUgc2No
ZW1hIG9mIHRoZSBNU0J1aWxkIFJlc291cmNlQ29tcGlsZSBzZXR0aW5ncy4KKworX1NhbWUoX3Jj
LCAnQWRkaXRpb25hbE9wdGlvbnMnLCBfc3RyaW5nX2xpc3QpCitfU2FtZShfcmMsICdBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzJywgX2ZvbGRlcl9saXN0KSAgIyAvSQorX1NhbWUoX3JjLCAn
Q3VsdHVyZScsIF9JbnRlZ2VyKG1zYnVpbGRfYmFzZT0xNikpCitfU2FtZShfcmMsICdJZ25vcmVT
dGFuZGFyZEluY2x1ZGVQYXRoJywgX2Jvb2xlYW4pICAjIC9YCitfU2FtZShfcmMsICdQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucycsIF9zdHJpbmdfbGlzdCkgICMgL0QKK19TYW1lKF9yYywgJ1Jlc291
cmNlT3V0cHV0RmlsZU5hbWUnLCBfc3RyaW5nKSAgIyAvZm8KK19TYW1lKF9yYywgJ1Nob3dQcm9n
cmVzcycsIF9ib29sZWFuKSAgIyAvdgorIyBUaGVyZSBpcyBubyBVSSBpbiBWaXN1YWxTdHVkaW8g
MjAwOCB0byBzZXQgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzLgorIyBIb3dldmVyIHRoZXkgYXJl
IGZvdW5kIGluIENMIGFuZCBvdGhlciB0b29scy4gIEluY2x1ZGUgdGhlbSBoZXJlIGZvcgorIyBj
b21wbGV0ZW5lc3MsIGFzIHRoZXkgYXJlIHZlcnkgbGlrZWx5IHRvIGhhdmUgdGhlIHNhbWUgdXNh
Z2UgcGF0dGVybi4KK19TYW1lKF9yYywgJ1N1cHByZXNzU3RhcnR1cEJhbm5lcicsIF9ib29sZWFu
KSAgIyAvbm9sb2dvCitfU2FtZShfcmMsICdVbmRlZmluZVByZXByb2Nlc3NvckRlZmluaXRpb25z
JywgX3N0cmluZ19saXN0KSAgIyAvdQorCisjIE1TQnVpbGQgb3B0aW9ucyBub3QgZm91bmQgaW4g
TVNWUy4KK19NU0J1aWxkT25seShfcmMsICdOdWxsVGVybWluYXRlU3RyaW5ncycsIF9ib29sZWFu
KSAgIyAvbgorX01TQnVpbGRPbmx5KF9yYywgJ1RyYWNrZXJMb2dEaXJlY3RvcnknLCBfZm9sZGVy
X25hbWUpCisKKworIyBEaXJlY3RpdmVzIGZvciBjb252ZXJ0aW5nIFZDTUlETFRvb2wgdG8gTWlk
bC4KKyMgU2VlICJjOlxQcm9ncmFtIEZpbGVzICh4ODYpXE1TQnVpbGRcTWljcm9zb2Z0LkNwcFx2
NC4wXDEwMzNcbWlkbC54bWwiIGZvcgorIyB0aGUgc2NoZW1hIG9mIHRoZSBNU0J1aWxkIE1pZGwg
c2V0dGluZ3MuCisKK19TYW1lKF9taWRsLCAnQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcycs
IF9mb2xkZXJfbGlzdCkgICMgL0kKK19TYW1lKF9taWRsLCAnQWRkaXRpb25hbE9wdGlvbnMnLCBf
c3RyaW5nX2xpc3QpCitfU2FtZShfbWlkbCwgJ0NQcmVwcm9jZXNzT3B0aW9ucycsIF9zdHJpbmcp
ICAjIC9jcHBfb3B0CitfU2FtZShfbWlkbCwgJ0Vycm9yQ2hlY2tBbGxvY2F0aW9ucycsIF9ib29s
ZWFuKSAgIyAvZXJyb3IgYWxsb2NhdGlvbgorX1NhbWUoX21pZGwsICdFcnJvckNoZWNrQm91bmRz
JywgX2Jvb2xlYW4pICAjIC9lcnJvciBib3VuZHNfY2hlY2sKK19TYW1lKF9taWRsLCAnRXJyb3JD
aGVja0VudW1SYW5nZScsIF9ib29sZWFuKSAgIyAvZXJyb3IgZW51bQorX1NhbWUoX21pZGwsICdF
cnJvckNoZWNrUmVmUG9pbnRlcnMnLCBfYm9vbGVhbikgICMgL2Vycm9yIHJlZgorX1NhbWUoX21p
ZGwsICdFcnJvckNoZWNrU3R1YkRhdGEnLCBfYm9vbGVhbikgICMgL2Vycm9yIHN0dWJfZGF0YQor
X1NhbWUoX21pZGwsICdHZW5lcmF0ZVN0dWJsZXNzUHJveGllcycsIF9ib29sZWFuKSAgIyAvT2lj
ZgorX1NhbWUoX21pZGwsICdHZW5lcmF0ZVR5cGVMaWJyYXJ5JywgX2Jvb2xlYW4pCitfU2FtZShf
bWlkbCwgJ0hlYWRlckZpbGVOYW1lJywgX2ZpbGVfbmFtZSkgICMgL2gKK19TYW1lKF9taWRsLCAn
SWdub3JlU3RhbmRhcmRJbmNsdWRlUGF0aCcsIF9ib29sZWFuKSAgIyAvbm9fZGVmX2lkaXIKK19T
YW1lKF9taWRsLCAnSW50ZXJmYWNlSWRlbnRpZmllckZpbGVOYW1lJywgX2ZpbGVfbmFtZSkgICMg
L2lpZAorX1NhbWUoX21pZGwsICdNa1R5cExpYkNvbXBhdGlibGUnLCBfYm9vbGVhbikgICMgL21r
dHlwbGliMjAzCitfU2FtZShfbWlkbCwgJ091dHB1dERpcmVjdG9yeScsIF9zdHJpbmcpICAjIC9v
dXQKK19TYW1lKF9taWRsLCAnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMnLCBfc3RyaW5nX2xpc3Qp
ICAjIC9ECitfU2FtZShfbWlkbCwgJ1Byb3h5RmlsZU5hbWUnLCBfZmlsZV9uYW1lKSAgIyAvcHJv
eHkKK19TYW1lKF9taWRsLCAnUmVkaXJlY3RPdXRwdXRBbmRFcnJvcnMnLCBfZmlsZV9uYW1lKSAg
IyAvbworX1NhbWUoX21pZGwsICdTdXBwcmVzc1N0YXJ0dXBCYW5uZXInLCBfYm9vbGVhbikgICMg
L25vbG9nbworX1NhbWUoX21pZGwsICdUeXBlTGlicmFyeU5hbWUnLCBfZmlsZV9uYW1lKSAgIyAv
dGxiCitfU2FtZShfbWlkbCwgJ1VuZGVmaW5lUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMnLCBfc3Ry
aW5nX2xpc3QpICAjIC9VCitfU2FtZShfbWlkbCwgJ1dhcm5Bc0Vycm9yJywgX2Jvb2xlYW4pICAj
IC9XWAorCitfU2FtZShfbWlkbCwgJ0RlZmF1bHRDaGFyVHlwZScsCisgICAgICBfRW51bWVyYXRp
b24oWydVbnNpZ25lZCcsICAjIC9jaGFyIHVuc2lnbmVkCisgICAgICAgICAgICAgICAgICAgICdT
aWduZWQnLCAgIyAvY2hhciBzaWduZWQKKyAgICAgICAgICAgICAgICAgICAgJ0FzY2lpJ10pKSAg
IyAvY2hhciBhc2NpaTcKK19TYW1lKF9taWRsLCAnVGFyZ2V0RW52aXJvbm1lbnQnLAorICAgICAg
X0VudW1lcmF0aW9uKFsnTm90U2V0JywKKyAgICAgICAgICAgICAgICAgICAgJ1dpbjMyJywgICMg
L2VudiB3aW4zMgorICAgICAgICAgICAgICAgICAgICAnSXRhbml1bScsICAjIC9lbnYgaWE2NAor
ICAgICAgICAgICAgICAgICAgICAnWDY0J10pKSAgIyAvZW52IHg2NAorX1NhbWUoX21pZGwsICdF
bmFibGVFcnJvckNoZWNrcycsCisgICAgICBfRW51bWVyYXRpb24oWydFbmFibGVDdXN0b20nLAor
ICAgICAgICAgICAgICAgICAgICAnTm9uZScsICAjIC9lcnJvciBub25lCisgICAgICAgICAgICAg
ICAgICAgICdBbGwnXSkpICAjIC9lcnJvciBhbGwKK19TYW1lKF9taWRsLCAnU3RydWN0TWVtYmVy
QWxpZ25tZW50JywKKyAgICAgIF9FbnVtZXJhdGlvbihbJ05vdFNldCcsCisgICAgICAgICAgICAg
ICAgICAgICcxJywgICMgWnAxCisgICAgICAgICAgICAgICAgICAgICcyJywgICMgWnAyCisgICAg
ICAgICAgICAgICAgICAgICc0JywgICMgWnA0CisgICAgICAgICAgICAgICAgICAgICc4J10pKSAg
IyBacDgKK19TYW1lKF9taWRsLCAnV2FybmluZ0xldmVsJywKKyAgICAgIF9FbnVtZXJhdGlvbihb
JzAnLCAgIyAvVzAKKyAgICAgICAgICAgICAgICAgICAgJzEnLCAgIyAvVzEKKyAgICAgICAgICAg
ICAgICAgICAgJzInLCAgIyAvVzIKKyAgICAgICAgICAgICAgICAgICAgJzMnLCAgIyAvVzMKKyAg
ICAgICAgICAgICAgICAgICAgJzQnXSkpICAjIC9XNAorCitfUmVuYW1lZChfbWlkbCwgJ0RMTERh
dGFGaWxlTmFtZScsICdEbGxEYXRhRmlsZU5hbWUnLCBfZmlsZV9uYW1lKSAgIyAvZGxsZGF0YQor
X1JlbmFtZWQoX21pZGwsICdWYWxpZGF0ZVBhcmFtZXRlcnMnLCAnVmFsaWRhdGVBbGxQYXJhbWV0
ZXJzJywKKyAgICAgICAgIF9ib29sZWFuKSAgIyAvcm9idXN0CisKKyMgTVNCdWlsZCBvcHRpb25z
IG5vdCBmb3VuZCBpbiBNU1ZTLgorX01TQnVpbGRPbmx5KF9taWRsLCAnQXBwbGljYXRpb25Db25m
aWd1cmF0aW9uTW9kZScsIF9ib29sZWFuKSAgIyAvYXBwX2NvbmZpZworX01TQnVpbGRPbmx5KF9t
aWRsLCAnQ2xpZW50U3R1YkZpbGUnLCBfZmlsZV9uYW1lKSAgIyAvY3N0dWIKK19NU0J1aWxkT25s
eShfbWlkbCwgJ0dlbmVyYXRlQ2xpZW50RmlsZXMnLAorICAgICAgICAgICAgIF9FbnVtZXJhdGlv
bihbXSwgbmV3PVsnU3R1YicsICAjIC9jbGllbnQgc3R1YgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnTm9uZSddKSkgICMgL2NsaWVudCBub25lCitfTVNCdWlsZE9ubHkoX21p
ZGwsICdHZW5lcmF0ZVNlcnZlckZpbGVzJywKKyAgICAgICAgICAgICBfRW51bWVyYXRpb24oW10s
IG5ldz1bJ1N0dWInLCAgIyAvY2xpZW50IHN0dWIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ05vbmUnXSkpICAjIC9jbGllbnQgbm9uZQorX01TQnVpbGRPbmx5KF9taWRsLCAn
TG9jYWxlSUQnLCBfaW50ZWdlcikgICMgL2xjaWQgREVDSU1BTAorX01TQnVpbGRPbmx5KF9taWRs
LCAnU2VydmVyU3R1YkZpbGUnLCBfZmlsZV9uYW1lKSAgIyAvc3N0dWIKK19NU0J1aWxkT25seShf
bWlkbCwgJ1N1cHByZXNzQ29tcGlsZXJXYXJuaW5ncycsIF9ib29sZWFuKSAgIyAvbm9fd2Fybgor
X01TQnVpbGRPbmx5KF9taWRsLCAnVHJhY2tlckxvZ0RpcmVjdG9yeScsIF9mb2xkZXJfbmFtZSkK
K19NU0J1aWxkT25seShfbWlkbCwgJ1R5cGVMaWJGb3JtYXQnLAorICAgICAgICAgICAgIF9FbnVt
ZXJhdGlvbihbXSwgbmV3PVsnTmV3Rm9ybWF0JywgICMgL25ld3RsYgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnT2xkRm9ybWF0J10pKSAgIyAvb2xkdGxiCisKKworIyBEaXJl
Y3RpdmVzIGZvciBjb252ZXJ0aW5nIFZDTGlicmFyaWFuVG9vbCB0byBMaWIuCisjIFNlZSAiYzpc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxNU0J1aWxkXE1pY3Jvc29mdC5DcHBcdjQuMFwxMDMzXGxpYi54
bWwiIGZvcgorIyB0aGUgc2NoZW1hIG9mIHRoZSBNU0J1aWxkIExpYiBzZXR0aW5ncy4KKworX1Nh
bWUoX2xpYiwgJ0FkZGl0aW9uYWxEZXBlbmRlbmNpZXMnLCBfZmlsZV9saXN0KQorX1NhbWUoX2xp
YiwgJ0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMnLCBfZm9sZGVyX2xpc3QpICAjIC9MSUJQ
QVRICitfU2FtZShfbGliLCAnQWRkaXRpb25hbE9wdGlvbnMnLCBfc3RyaW5nX2xpc3QpCitfU2Ft
ZShfbGliLCAnRXhwb3J0TmFtZWRGdW5jdGlvbnMnLCBfc3RyaW5nX2xpc3QpICAjIC9FWFBPUlQK
K19TYW1lKF9saWIsICdGb3JjZVN5bWJvbFJlZmVyZW5jZXMnLCBfc3RyaW5nKSAgIyAvSU5DTFVE
RQorX1NhbWUoX2xpYiwgJ0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXMnLCBfYm9vbGVhbikgICMg
L05PREVGQVVMVExJQgorX1NhbWUoX2xpYiwgJ0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmll
cycsIF9maWxlX2xpc3QpICAjIC9OT0RFRkFVTFRMSUIKK19TYW1lKF9saWIsICdNb2R1bGVEZWZp
bml0aW9uRmlsZScsIF9maWxlX25hbWUpICAjIC9ERUYKK19TYW1lKF9saWIsICdPdXRwdXRGaWxl
JywgX2ZpbGVfbmFtZSkgICMgL09VVAorX1NhbWUoX2xpYiwgJ1N1cHByZXNzU3RhcnR1cEJhbm5l
cicsIF9ib29sZWFuKSAgIyAvTk9MT0dPCitfU2FtZShfbGliLCAnVXNlVW5pY29kZVJlc3BvbnNl
RmlsZXMnLCBfYm9vbGVhbikKKworIyBUT0RPKGplYW5sdWMpIF9saW5rIGRlZmluZXMgdGhlIHNh
bWUgdmFsdWUgdGhhdCBnZXRzIG1vdmVkIHRvCisjIFByb2plY3RSZWZlcmVuY2UuICBXZSBtYXkg
d2FudCB0byB2YWxpZGF0ZSB0aGF0IHRoZXkgYXJlIGNvbnNpc3RlbnQuCitfTW92ZWQoX2xpYiwg
J0xpbmtMaWJyYXJ5RGVwZW5kZW5jaWVzJywgJ1Byb2plY3RSZWZlcmVuY2UnLCBfYm9vbGVhbikK
KworIyBUT0RPKGplYW5sdWMpIEkgZG9uJ3QgdGhpbmsgdGhlc2UgYXJlIGdlbnVpbmUgc2V0dGlu
Z3MgYnV0IGJ5cHJvZHVjdHMgb2YgR3lwLgorX01TVlNPbmx5KF9saWIsICdBZGRpdGlvbmFsTGli
cmFyeURpcmVjdG9yaWVzX2V4Y2x1ZGVkJywgX2ZvbGRlcl9saXN0KQorCitfTVNCdWlsZE9ubHko
X2xpYiwgJ0Rpc3BsYXlMaWJyYXJ5JywgX3N0cmluZykgICMgL0xJU1QgVmlzaWJsZT0nZmFsc2Un
CitfTVNCdWlsZE9ubHkoX2xpYiwgJ0Vycm9yUmVwb3J0aW5nJywKKyAgICAgICAgICAgICBfRW51
bWVyYXRpb24oW10sIG5ldz1bJ1Byb21wdEltbWVkaWF0ZWx5JywgICMgL0VSUk9SUkVQT1JUOlBS
T01QVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUXVldWVGb3JOZXh0TG9n
aW4nLCAgIyAvRVJST1JSRVBPUlQ6UVVFVUUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1NlbmRFcnJvclJlcG9ydCcsICAjIC9FUlJPUlJFUE9SVDpTRU5ECisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdOb0Vycm9yUmVwb3J0J10pKSAgIyAvRVJST1JSRVBP
UlQ6Tk9ORQorX01TQnVpbGRPbmx5KF9saWIsICdMaW5rVGltZUNvZGVHZW5lcmF0aW9uJywgX2Jv
b2xlYW4pICAjIC9MVENHCitfTVNCdWlsZE9ubHkoX2xpYiwgJ01pbmltdW1SZXF1aXJlZFZlcnNp
b24nLCBfc3RyaW5nKQorX01TQnVpbGRPbmx5KF9saWIsICdOYW1lJywgX2ZpbGVfbmFtZSkgICMg
L05BTUUKK19NU0J1aWxkT25seShfbGliLCAnUmVtb3ZlT2JqZWN0cycsIF9maWxlX2xpc3QpICAj
IC9SRU1PVkUKK19NU0J1aWxkT25seShfbGliLCAnU3ViU3lzdGVtJywgX3N1YnN5c3RlbV9lbnVt
ZXJhdGlvbikKK19NU0J1aWxkT25seShfbGliLCAnVGFyZ2V0TWFjaGluZScsIF90YXJnZXRfbWFj
aGluZV9lbnVtZXJhdGlvbikKK19NU0J1aWxkT25seShfbGliLCAnVHJhY2tlckxvZ0RpcmVjdG9y
eScsIF9mb2xkZXJfbmFtZSkKK19NU0J1aWxkT25seShfbGliLCAnVHJlYXRMaWJXYXJuaW5nQXNF
cnJvcnMnLCBfYm9vbGVhbikgICMgL1dYCitfTVNCdWlsZE9ubHkoX2xpYiwgJ1ZlcmJvc2UnLCBf
Ym9vbGVhbikKKworCisjIERpcmVjdGl2ZXMgZm9yIGNvbnZlcnRpbmcgVkNNYW5pZmVzdFRvb2wg
dG8gTXQuCisjIFNlZSAiYzpcUHJvZ3JhbSBGaWxlcyAoeDg2KVxNU0J1aWxkXE1pY3Jvc29mdC5D
cHBcdjQuMFwxMDMzXG10LnhtbCIgZm9yCisjIHRoZSBzY2hlbWEgb2YgdGhlIE1TQnVpbGQgTGli
IHNldHRpbmdzLgorCisjIE9wdGlvbnMgdGhhdCBoYXZlIHRoZSBzYW1lIG5hbWUgaW4gTVNWUyBh
bmQgTVNCdWlsZAorX1NhbWUoX21hbmlmZXN0LCAnQWRkaXRpb25hbE1hbmlmZXN0RmlsZXMnLCBf
ZmlsZV9saXN0KSAgIyAvbWFuaWZlc3QKK19TYW1lKF9tYW5pZmVzdCwgJ0FkZGl0aW9uYWxPcHRp
b25zJywgX3N0cmluZ19saXN0KQorX1NhbWUoX21hbmlmZXN0LCAnQXNzZW1ibHlJZGVudGl0eScs
IF9zdHJpbmcpICAjIC9pZGVudGl0eToKK19TYW1lKF9tYW5pZmVzdCwgJ0NvbXBvbmVudEZpbGVO
YW1lJywgX2ZpbGVfbmFtZSkgICMgL2RsbAorX1NhbWUoX21hbmlmZXN0LCAnR2VuZXJhdGVDYXRh
bG9nRmlsZXMnLCBfYm9vbGVhbikgICMgL21ha2VjZGZzCitfU2FtZShfbWFuaWZlc3QsICdJbnB1
dFJlc291cmNlTWFuaWZlc3RzJywgX3N0cmluZykgICMgL2lucHV0cmVzb3VyY2UKK19TYW1lKF9t
YW5pZmVzdCwgJ091dHB1dE1hbmlmZXN0RmlsZScsIF9maWxlX25hbWUpICAjIC9vdXQKK19TYW1l
KF9tYW5pZmVzdCwgJ1JlZ2lzdHJhclNjcmlwdEZpbGUnLCBfZmlsZV9uYW1lKSAgIyAvcmdzCitf
U2FtZShfbWFuaWZlc3QsICdSZXBsYWNlbWVudHNGaWxlJywgX2ZpbGVfbmFtZSkgICMgL3JlcGxh
Y2VtZW50cworX1NhbWUoX21hbmlmZXN0LCAnU3VwcHJlc3NTdGFydHVwQmFubmVyJywgX2Jvb2xl
YW4pICAjIC9ub2xvZ28KK19TYW1lKF9tYW5pZmVzdCwgJ1R5cGVMaWJyYXJ5RmlsZScsIF9maWxl
X25hbWUpICAjIC90bGI6CitfU2FtZShfbWFuaWZlc3QsICdVcGRhdGVGaWxlSGFzaGVzJywgX2Jv
b2xlYW4pICAjIC9oYXNodXBkYXRlCitfU2FtZShfbWFuaWZlc3QsICdVcGRhdGVGaWxlSGFzaGVz
U2VhcmNoUGF0aCcsIF9maWxlX25hbWUpCitfU2FtZShfbWFuaWZlc3QsICdWZXJib3NlT3V0cHV0
JywgX2Jvb2xlYW4pICAjIC92ZXJib3NlCisKKyMgT3B0aW9ucyB0aGF0IGhhdmUgbW92ZWQgbG9j
YXRpb24uCitfTW92ZWRBbmRSZW5hbWVkKF9tYW5pZmVzdCwgJ01hbmlmZXN0UmVzb3VyY2VGaWxl
JywKKyAgICAgICAgICAgICAgICAgJ01hbmlmZXN0UmVzb3VyY2VDb21waWxlJywKKyAgICAgICAg
ICAgICAgICAgJ1Jlc291cmNlT3V0cHV0RmlsZU5hbWUnLAorICAgICAgICAgICAgICAgICBfZmls
ZV9uYW1lKQorX01vdmVkKF9tYW5pZmVzdCwgJ0VtYmVkTWFuaWZlc3QnLCAnJywgX2Jvb2xlYW4p
CisKKyMgTVNWUyBvcHRpb25zIG5vdCBmb3VuZCBpbiBNU0J1aWxkLgorX01TVlNPbmx5KF9tYW5p
ZmVzdCwgJ0RlcGVuZGVuY3lJbmZvcm1hdGlvbkZpbGUnLCBfZmlsZV9uYW1lKQorX01TVlNPbmx5
KF9tYW5pZmVzdCwgJ1VzZUZBVDMyV29ya2Fyb3VuZCcsIF9ib29sZWFuKQorX01TVlNPbmx5KF9t
YW5pZmVzdCwgJ1VzZVVuaWNvZGVSZXNwb25zZUZpbGVzJywgX2Jvb2xlYW4pCisKKyMgTVNCdWls
ZCBvcHRpb25zIG5vdCBmb3VuZCBpbiBNU1ZTLgorX01TQnVpbGRPbmx5KF9tYW5pZmVzdCwgJ0Vu
YWJsZURQSUF3YXJlbmVzcycsIF9ib29sZWFuKQorX01TQnVpbGRPbmx5KF9tYW5pZmVzdCwgJ0dl
bmVyYXRlQ2F0ZWdvcnlUYWdzJywgX2Jvb2xlYW4pICAjIC9jYXRlZ29yeQorX01TQnVpbGRPbmx5
KF9tYW5pZmVzdCwgJ01hbmlmZXN0RnJvbU1hbmFnZWRBc3NlbWJseScsCisgICAgICAgICAgICAg
X2ZpbGVfbmFtZSkgICMgL21hbmFnZWRhc3NlbWJseW5hbWUKK19NU0J1aWxkT25seShfbWFuaWZl
c3QsICdPdXRwdXRSZXNvdXJjZU1hbmlmZXN0cycsIF9zdHJpbmcpICAjIC9vdXRwdXRyZXNvdXJj
ZQorX01TQnVpbGRPbmx5KF9tYW5pZmVzdCwgJ1N1cHByZXNzRGVwZW5kZW5jeUVsZW1lbnQnLCBf
Ym9vbGVhbikgICMgL25vZGVwZW5kZW5jeQorX01TQnVpbGRPbmx5KF9tYW5pZmVzdCwgJ1RyYWNr
ZXJMb2dEaXJlY3RvcnknLCBfZm9sZGVyX25hbWUpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC9weWxpYi9neXAvTVNWU1NldHRpbmdzX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvcHlsaWIvZ3lwL01TVlNTZXR0aW5nc190ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5Y2E3
ZmRhYjdmZmEwZTgwNjliY2FmNDM0ZTQ4MzU4MzZlNjQ5NDMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIvZ3lwL01TVlNTZXR0aW5nc190ZXN0LnB5CkBAIC0w
LDAgKzEsMTQ3OCBAQAor77u/IyEvdXNyL2Jpbi9weXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIgVW5pdCB0ZXN0cyBmb3IgdGhlIE1TVlNT
ZXR0aW5ncy5weSBmaWxlLiAiIiIKKworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBv
cnQgTVNWU1NldHRpbmdzCitpbXBvcnQgU3RyaW5nSU8KKworCitjbGFzcyBUZXN0U2VxdWVuY2VG
dW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgorCisgIGRlZiBzZXRVcChzZWxmKToKKyAgICBz
ZWxmLnN0ZGVyciA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKKworICBkZWYgX0V4cGVjdGVkV2Fybmlu
Z3Moc2VsZiwgZXhwZWN0ZWQpOgorICAgICIiIiBDb21wYXJlcyByZWNvcmRlZCBsaW5lcyB0byBl
eHBlY3RlZCB3YXJuaW5ncy4gIiIiCisgICAgc2VsZi5zdGRlcnIuc2VlaygwKQorICAgIGFjdHVh
bCA9IHNlbGYuc3RkZXJyLnJlYWQoKS5zcGxpdCgnXG4nKQorICAgIGFjdHVhbCA9IFtsaW5lIGZv
ciBsaW5lIGluIGFjdHVhbCBpZiBsaW5lICE9ICcnXQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29y
dGVkKGV4cGVjdGVkKSwgc29ydGVkKGFjdHVhbCkpCisKKyAgZGVmIHRlc3RfVmFsaWRhdGVNU1ZT
U2V0dGluZ3NfdG9vbF9uYW1lcyhzZWxmKToKKyAgICAiIiIgVGVzdHMgdGhhdCBvbmx5IE1TVlMg
dG9vbCBuYW1lcyBhcmUgYWxsb3dlZC4gIiIiCisgICAgTVNWU1NldHRpbmdzLlZhbGlkYXRlTVNW
U1NldHRpbmdzKHsKKyAgICAgICAgJ1ZDQ0xDb21waWxlclRvb2wnOiB7fSwKKyAgICAgICAgJ1ZD
TGlua2VyVG9vbCc6IHt9LAorICAgICAgICAnVkNNSURMVG9vbCc6IHt9LAorICAgICAgICAnZm9v
Jzoge30sCisgICAgICAgICdWQ1Jlc291cmNlQ29tcGlsZXJUb29sJzoge30sCisgICAgICAgICdW
Q0xpYnJhcmlhblRvb2wnOiB7fSwKKyAgICAgICAgJ1ZDTWFuaWZlc3RUb29sJzoge30sCisgICAg
ICAgICdDbENvbXBpbGUnOiB7fX0sCisgICAgICAgIHNlbGYuc3RkZXJyKQorICAgIHNlbGYuX0V4
cGVjdGVkV2FybmluZ3MoWworICAgICAgICAnV2FybmluZzogdW5yZWNvZ25pemVkIHRvb2wgZm9v
JywKKyAgICAgICAgJ1dhcm5pbmc6IHVucmVjb2duaXplZCB0b29sIENsQ29tcGlsZSddKQorCisg
IGRlZiB0ZXN0X1ZhbGlkYXRlTVNWU1NldHRpbmdzX3NldHRpbmdzKHNlbGYpOgorICAgICIiIiBU
ZXN0cyB0aGF0IGZvciBpbnZhbGlkIE1TVlMgc2V0dGluZ3MuICIiIgorICAgIE1TVlNTZXR0aW5n
cy5WYWxpZGF0ZU1TVlNTZXR0aW5ncyh7CisgICAgICAgICdWQ0NMQ29tcGlsZXJUb29sJzogewor
ICAgICAgICAgICAgJ0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMnOiAnZm9sZGVyMTtmb2xk
ZXIyJywKKyAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6IFsnc3RyaW5nMScsICdzdHJp
bmcyJ10sCisgICAgICAgICAgICAnQWRkaXRpb25hbFVzaW5nRGlyZWN0b3JpZXMnOiAnZm9sZGVy
MTtmb2xkZXIyJywKKyAgICAgICAgICAgICdBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb24nOiAnYV9m
aWxlX25hbWUnLAorICAgICAgICAgICAgJ0Fzc2VtYmxlck91dHB1dCc6ICcwJywKKyAgICAgICAg
ICAgICdCYXNpY1J1bnRpbWVDaGVja3MnOiAnNScsCisgICAgICAgICAgICAnQnJvd3NlSW5mb3Jt
YXRpb24nOiAnZmRrc2xqJywKKyAgICAgICAgICAgICdCcm93c2VJbmZvcm1hdGlvbkZpbGUnOiAn
YV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ0J1ZmZlclNlY3VyaXR5Q2hlY2snOiAndHJ1ZScs
CisgICAgICAgICAgICAnQ2FsbGluZ0NvbnZlbnRpb24nOiAnLTEnLAorICAgICAgICAgICAgJ0Nv
bXBpbGVBcyc6ICcxJywKKyAgICAgICAgICAgICdEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0JzogJzIn
LAorICAgICAgICAgICAgJ0RlZmF1bHRDaGFySXNVbnNpZ25lZCc6ICd0cnVlJywKKyAgICAgICAg
ICAgICdEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXMnOiAndHJ1ZScsCisgICAgICAgICAg
ICAnRGlzYWJsZUxhbmd1YWdlRXh0ZW5zaW9ucyc6ICd0cnVlJywKKyAgICAgICAgICAgICdEaXNh
YmxlU3BlY2lmaWNXYXJuaW5ncyc6ICdzdHJpbmcxO3N0cmluZzInLAorICAgICAgICAgICAgJ0Vu
YWJsZUVuaGFuY2VkSW5zdHJ1Y3Rpb25TZXQnOiAnMScsCisgICAgICAgICAgICAnRW5hYmxlRmli
ZXJTYWZlT3B0aW1pemF0aW9ucyc6ICd0cnVlJywKKyAgICAgICAgICAgICdFbmFibGVGdW5jdGlv
bkxldmVsTGlua2luZyc6ICd0cnVlJywKKyAgICAgICAgICAgICdFbmFibGVJbnRyaW5zaWNGdW5j
dGlvbnMnOiAndHJ1ZScsCisgICAgICAgICAgICAnRW5hYmxlUFJFZmFzdCc6ICd0cnVlJywKKyAg
ICAgICAgICAgICdFbmFibGVwcmVmYXN0JzogJ2JvZ3VzJywKKyAgICAgICAgICAgICdFcnJvclJl
cG9ydGluZyc6ICcxJywKKyAgICAgICAgICAgICdFeGNlcHRpb25IYW5kbGluZyc6ICcxJywKKyAg
ICAgICAgICAgICdFeHBhbmRBdHRyaWJ1dGVkU291cmNlJzogJ3RydWUnLAorICAgICAgICAgICAg
J0Zhdm9yU2l6ZU9yU3BlZWQnOiAnMScsCisgICAgICAgICAgICAnRmxvYXRpbmdQb2ludEV4Y2Vw
dGlvbnMnOiAndHJ1ZScsCisgICAgICAgICAgICAnRmxvYXRpbmdQb2ludE1vZGVsJzogJzEnLAor
ICAgICAgICAgICAgJ0ZvcmNlQ29uZm9ybWFuY2VJbkZvckxvb3BTY29wZSc6ICd0cnVlJywKKyAg
ICAgICAgICAgICdGb3JjZWRJbmNsdWRlRmlsZXMnOiAnZmlsZTE7ZmlsZTInLAorICAgICAgICAg
ICAgJ0ZvcmNlZFVzaW5nRmlsZXMnOiAnZmlsZTE7ZmlsZTInLAorICAgICAgICAgICAgJ0dlbmVy
YXRlUHJlcHJvY2Vzc2VkRmlsZSc6ICcxJywKKyAgICAgICAgICAgICdHZW5lcmF0ZVhNTERvY3Vt
ZW50YXRpb25GaWxlcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdJZ25vcmVTdGFuZGFyZEluY2x1
ZGVQYXRoJzogJ3RydWUnLAorICAgICAgICAgICAgJ0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uJzog
JzEnLAorICAgICAgICAgICAgJ0tlZXBDb21tZW50cyc6ICd0cnVlJywKKyAgICAgICAgICAgICdN
aW5pbWFsUmVidWlsZCc6ICd0cnVlJywKKyAgICAgICAgICAgICdPYmplY3RGaWxlJzogJ2FfZmls
ZV9uYW1lJywKKyAgICAgICAgICAgICdPbWl0RGVmYXVsdExpYk5hbWUnOiAndHJ1ZScsCisgICAg
ICAgICAgICAnT21pdEZyYW1lUG9pbnRlcnMnOiAndHJ1ZScsCisgICAgICAgICAgICAnT3Blbk1Q
JzogJ3RydWUnLAorICAgICAgICAgICAgJ09wdGltaXphdGlvbic6ICcxJywKKyAgICAgICAgICAg
ICdQcmVjb21waWxlZEhlYWRlckZpbGUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ1By
ZWNvbXBpbGVkSGVhZGVyVGhyb3VnaCc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnMnOiAnc3RyaW5nMTtzdHJpbmcyJywKKyAgICAgICAgICAgICdQ
cm9ncmFtRGF0YUJhc2VGaWxlTmFtZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnUnVu
dGltZUxpYnJhcnknOiAnMScsCisgICAgICAgICAgICAnUnVudGltZVR5cGVJbmZvJzogJ3RydWUn
LAorICAgICAgICAgICAgJ1Nob3dJbmNsdWRlcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdTbWFs
bGVyVHlwZUNoZWNrJzogJ3RydWUnLAorICAgICAgICAgICAgJ1N0cmluZ1Bvb2xpbmcnOiAndHJ1
ZScsCisgICAgICAgICAgICAnU3RydWN0TWVtYmVyQWxpZ25tZW50JzogJzEnLAorICAgICAgICAg
ICAgJ1N1cHByZXNzU3RhcnR1cEJhbm5lcic6ICd0cnVlJywKKyAgICAgICAgICAgICdUcmVhdFdD
aGFyX3RBc0J1aWx0SW5UeXBlJzogJ3RydWUnLAorICAgICAgICAgICAgJ1VuZGVmaW5lQWxsUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnMnOiAndHJ1ZScsCisgICAgICAgICAgICAnVW5kZWZpbmVQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucyc6ICdzdHJpbmcxO3N0cmluZzInLAorICAgICAgICAgICAgJ1Vz
ZUZ1bGxQYXRocyc6ICd0cnVlJywKKyAgICAgICAgICAgICdVc2VQcmVjb21waWxlZEhlYWRlcic6
ICcxJywKKyAgICAgICAgICAgICdVc2VVbmljb2RlUmVzcG9uc2VGaWxlcyc6ICd0cnVlJywKKyAg
ICAgICAgICAgICdXYXJuQXNFcnJvcic6ICd0cnVlJywKKyAgICAgICAgICAgICdXYXJuaW5nTGV2
ZWwnOiAnMScsCisgICAgICAgICAgICAnV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uJzogJ3RydWUn
LAorICAgICAgICAgICAgJ1hNTERvY3VtZW50YXRpb25GaWxlTmFtZSc6ICdhX2ZpbGVfbmFtZScs
CisgICAgICAgICAgICAnWlpYWVonOiAnYm9ndXMnfSwKKyAgICAgICAgJ1ZDTGlua2VyVG9vbCc6
IHsKKyAgICAgICAgICAgICdBZGRpdGlvbmFsRGVwZW5kZW5jaWVzJzogJ2ZpbGUxO2ZpbGUyJywK
KyAgICAgICAgICAgICdBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzJzogJ2ZvbGRlcjE7Zm9s
ZGVyMicsCisgICAgICAgICAgICAnQWRkaXRpb25hbE1hbmlmZXN0RGVwZW5kZW5jaWVzJzogJ2Zp
bGUxO2ZpbGUyJywKKyAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6ICdhIHN0cmluZzEn
LAorICAgICAgICAgICAgJ0FkZE1vZHVsZU5hbWVzVG9Bc3NlbWJseSc6ICdmaWxlMTtmaWxlMics
CisgICAgICAgICAgICAnQWxsb3dJc29sYXRpb24nOiAndHJ1ZScsCisgICAgICAgICAgICAnQXNz
ZW1ibHlEZWJ1Zyc6ICcyJywKKyAgICAgICAgICAgICdBc3NlbWJseUxpbmtSZXNvdXJjZSc6ICdm
aWxlMTtmaWxlMicsCisgICAgICAgICAgICAnQmFzZUFkZHJlc3MnOiAnYSBzdHJpbmcxJywKKyAg
ICAgICAgICAgICdDTFJJbWFnZVR5cGUnOiAnMicsCisgICAgICAgICAgICAnQ0xSVGhyZWFkQXR0
cmlidXRlJzogJzInLAorICAgICAgICAgICAgJ0NMUlVubWFuYWdlZENvZGVDaGVjayc6ICd0cnVl
JywKKyAgICAgICAgICAgICdEYXRhRXhlY3V0aW9uUHJldmVudGlvbic6ICcyJywKKyAgICAgICAg
ICAgICdEZWxheUxvYWRETExzJzogJ2ZpbGUxO2ZpbGUyJywKKyAgICAgICAgICAgICdEZWxheVNp
Z24nOiAndHJ1ZScsCisgICAgICAgICAgICAnRHJpdmVyJzogJzInLAorICAgICAgICAgICAgJ0Vt
YmVkTWFuYWdlZFJlc291cmNlRmlsZSc6ICdmaWxlMTtmaWxlMicsCisgICAgICAgICAgICAnRW5h
YmxlQ09NREFURm9sZGluZyc6ICcyJywKKyAgICAgICAgICAgICdFbmFibGVVQUMnOiAndHJ1ZScs
CisgICAgICAgICAgICAnRW50cnlQb2ludFN5bWJvbCc6ICdhIHN0cmluZzEnLAorICAgICAgICAg
ICAgJ0Vycm9yUmVwb3J0aW5nJzogJzInLAorICAgICAgICAgICAgJ0ZpeGVkQmFzZUFkZHJlc3Mn
OiAnMicsCisgICAgICAgICAgICAnRm9yY2VTeW1ib2xSZWZlcmVuY2VzJzogJ2ZpbGUxO2ZpbGUy
JywKKyAgICAgICAgICAgICdGdW5jdGlvbk9yZGVyJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAg
ICAgICdHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24nOiAndHJ1ZScsCisgICAgICAgICAgICAnR2Vu
ZXJhdGVNYW5pZmVzdCc6ICd0cnVlJywKKyAgICAgICAgICAgICdHZW5lcmF0ZU1hcEZpbGUnOiAn
dHJ1ZScsCisgICAgICAgICAgICAnSGVhcENvbW1pdFNpemUnOiAnYSBzdHJpbmcxJywKKyAgICAg
ICAgICAgICdIZWFwUmVzZXJ2ZVNpemUnOiAnYSBzdHJpbmcxJywKKyAgICAgICAgICAgICdJZ25v
cmVBbGxEZWZhdWx0TGlicmFyaWVzJzogJ3RydWUnLAorICAgICAgICAgICAgJ0lnbm9yZURlZmF1
bHRMaWJyYXJ5TmFtZXMnOiAnZmlsZTE7ZmlsZTInLAorICAgICAgICAgICAgJ0lnbm9yZUVtYmVk
ZGVkSURMJzogJ3RydWUnLAorICAgICAgICAgICAgJ0lnbm9yZUltcG9ydExpYnJhcnknOiAndHJ1
ZScsCisgICAgICAgICAgICAnSW1wb3J0TGlicmFyeSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAg
ICAgICAnS2V5Q29udGFpbmVyJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdLZXlGaWxl
JzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdMYXJnZUFkZHJlc3NBd2FyZSc6ICcyJywK
KyAgICAgICAgICAgICdMaW5rSW5jcmVtZW50YWwnOiAnMicsCisgICAgICAgICAgICAnTGlua0xp
YnJhcnlEZXBlbmRlbmNpZXMnOiAndHJ1ZScsCisgICAgICAgICAgICAnTGlua1RpbWVDb2RlR2Vu
ZXJhdGlvbic6ICcyJywKKyAgICAgICAgICAgICdNYW5pZmVzdEZpbGUnOiAnYV9maWxlX25hbWUn
LAorICAgICAgICAgICAgJ01hcEV4cG9ydHMnOiAndHJ1ZScsCisgICAgICAgICAgICAnTWFwRmls
ZU5hbWUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ01lcmdlZElETEJhc2VGaWxlTmFt
ZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnTWVyZ2VTZWN0aW9ucyc6ICdhIHN0cmlu
ZzEnLAorICAgICAgICAgICAgJ01pZGxDb21tYW5kRmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAg
ICAgICAgICAnTW9kdWxlRGVmaW5pdGlvbkZpbGUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAg
ICAgJ09wdGltaXplRm9yV2luZG93czk4JzogJzEnLAorICAgICAgICAgICAgJ09wdGltaXplUmVm
ZXJlbmNlcyc6ICcyJywKKyAgICAgICAgICAgICdPdXRwdXRGaWxlJzogJ2FfZmlsZV9uYW1lJywK
KyAgICAgICAgICAgICdQZXJVc2VyUmVkaXJlY3Rpb24nOiAndHJ1ZScsCisgICAgICAgICAgICAn
UHJvZmlsZSc6ICd0cnVlJywKKyAgICAgICAgICAgICdQcm9maWxlR3VpZGVkRGF0YWJhc2UnOiAn
YV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ1Byb2dyYW1EYXRhYmFzZUZpbGUnOiAnYV9maWxl
X25hbWUnLAorICAgICAgICAgICAgJ1JhbmRvbWl6ZWRCYXNlQWRkcmVzcyc6ICcyJywKKyAgICAg
ICAgICAgICdSZWdpc3Rlck91dHB1dCc6ICd0cnVlJywKKyAgICAgICAgICAgICdSZXNvdXJjZU9u
bHlETEwnOiAndHJ1ZScsCisgICAgICAgICAgICAnU2V0Q2hlY2tzdW0nOiAndHJ1ZScsCisgICAg
ICAgICAgICAnU2hvd1Byb2dyZXNzJzogJzInLAorICAgICAgICAgICAgJ1N0YWNrQ29tbWl0U2l6
ZSc6ICdhIHN0cmluZzEnLAorICAgICAgICAgICAgJ1N0YWNrUmVzZXJ2ZVNpemUnOiAnYSBzdHJp
bmcxJywKKyAgICAgICAgICAgICdTdHJpcFByaXZhdGVTeW1ib2xzJzogJ2FfZmlsZV9uYW1lJywK
KyAgICAgICAgICAgICdTdWJTeXN0ZW0nOiAnMicsCisgICAgICAgICAgICAnU3VwcG9ydFVubG9h
ZE9mRGVsYXlMb2FkZWRETEwnOiAndHJ1ZScsCisgICAgICAgICAgICAnU3VwcHJlc3NTdGFydHVw
QmFubmVyJzogJ3RydWUnLAorICAgICAgICAgICAgJ1N3YXBSdW5Gcm9tQ0QnOiAndHJ1ZScsCisg
ICAgICAgICAgICAnU3dhcFJ1bkZyb21OZXQnOiAndHJ1ZScsCisgICAgICAgICAgICAnVGFyZ2V0
TWFjaGluZSc6ICcyJywKKyAgICAgICAgICAgICdUZXJtaW5hbFNlcnZlckF3YXJlJzogJzInLAor
ICAgICAgICAgICAgJ1R1cm5PZmZBc3NlbWJseUdlbmVyYXRpb24nOiAndHJ1ZScsCisgICAgICAg
ICAgICAnVHlwZUxpYnJhcnlGaWxlJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdUeXBl
TGlicmFyeVJlc291cmNlSUQnOiAnMzMnLAorICAgICAgICAgICAgJ1VBQ0V4ZWN1dGlvbkxldmVs
JzogJzInLAorICAgICAgICAgICAgJ1VBQ1VJQWNjZXNzJzogJ3RydWUnLAorICAgICAgICAgICAg
J1VzZUxpYnJhcnlEZXBlbmRlbmN5SW5wdXRzJzogJ3RydWUnLAorICAgICAgICAgICAgJ1VzZVVu
aWNvZGVSZXNwb25zZUZpbGVzJzogJ3RydWUnLAorICAgICAgICAgICAgJ1ZlcnNpb24nOiAnYSBz
dHJpbmcxJ30sCisgICAgICAgICdWQ01JRExUb29sJzogeworICAgICAgICAgICAgJ0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMnOiAnZm9sZGVyMTtmb2xkZXIyJywKKyAgICAgICAgICAgICdB
ZGRpdGlvbmFsT3B0aW9ucyc6ICdhIHN0cmluZzEnLAorICAgICAgICAgICAgJ0NQcmVwcm9jZXNz
T3B0aW9ucyc6ICdhIHN0cmluZzEnLAorICAgICAgICAgICAgJ0RlZmF1bHRDaGFyVHlwZSc6ICcx
JywKKyAgICAgICAgICAgICdETExEYXRhRmlsZU5hbWUnOiAnYV9maWxlX25hbWUnLAorICAgICAg
ICAgICAgJ0VuYWJsZUVycm9yQ2hlY2tzJzogJzEnLAorICAgICAgICAgICAgJ0Vycm9yQ2hlY2tB
bGxvY2F0aW9ucyc6ICd0cnVlJywKKyAgICAgICAgICAgICdFcnJvckNoZWNrQm91bmRzJzogJ3Ry
dWUnLAorICAgICAgICAgICAgJ0Vycm9yQ2hlY2tFbnVtUmFuZ2UnOiAndHJ1ZScsCisgICAgICAg
ICAgICAnRXJyb3JDaGVja1JlZlBvaW50ZXJzJzogJ3RydWUnLAorICAgICAgICAgICAgJ0Vycm9y
Q2hlY2tTdHViRGF0YSc6ICd0cnVlJywKKyAgICAgICAgICAgICdHZW5lcmF0ZVN0dWJsZXNzUHJv
eGllcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdHZW5lcmF0ZVR5cGVMaWJyYXJ5JzogJ3RydWUn
LAorICAgICAgICAgICAgJ0hlYWRlckZpbGVOYW1lJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAg
ICAgICdJZ25vcmVTdGFuZGFyZEluY2x1ZGVQYXRoJzogJ3RydWUnLAorICAgICAgICAgICAgJ0lu
dGVyZmFjZUlkZW50aWZpZXJGaWxlTmFtZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAn
TWtUeXBMaWJDb21wYXRpYmxlJzogJ3RydWUnLAorICAgICAgICAgICAgJ25vdGdvb2QnOiAnYm9n
dXMnLAorICAgICAgICAgICAgJ091dHB1dERpcmVjdG9yeSc6ICdhIHN0cmluZzEnLAorICAgICAg
ICAgICAgJ1ByZXByb2Nlc3NvckRlZmluaXRpb25zJzogJ3N0cmluZzE7c3RyaW5nMicsCisgICAg
ICAgICAgICAnUHJveHlGaWxlTmFtZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnUmVk
aXJlY3RPdXRwdXRBbmRFcnJvcnMnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ1N0cnVj
dE1lbWJlckFsaWdubWVudCc6ICcxJywKKyAgICAgICAgICAgICdTdXBwcmVzc1N0YXJ0dXBCYW5u
ZXInOiAndHJ1ZScsCisgICAgICAgICAgICAnVGFyZ2V0RW52aXJvbm1lbnQnOiAnMScsCisgICAg
ICAgICAgICAnVHlwZUxpYnJhcnlOYW1lJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdV
bmRlZmluZVByZXByb2Nlc3NvckRlZmluaXRpb25zJzogJ3N0cmluZzE7c3RyaW5nMicsCisgICAg
ICAgICAgICAnVmFsaWRhdGVQYXJhbWV0ZXJzJzogJ3RydWUnLAorICAgICAgICAgICAgJ1dhcm5B
c0Vycm9yJzogJ3RydWUnLAorICAgICAgICAgICAgJ1dhcm5pbmdMZXZlbCc6ICcxJ30sCisgICAg
ICAgICdWQ1Jlc291cmNlQ29tcGlsZXJUb29sJzogeworICAgICAgICAgICAgJ0FkZGl0aW9uYWxP
cHRpb25zJzogJ2Egc3RyaW5nMScsCisgICAgICAgICAgICAnQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyc6ICdmb2xkZXIxO2ZvbGRlcjInLAorICAgICAgICAgICAgJ0N1bHR1cmUnOiAnMTAw
MycsCisgICAgICAgICAgICAnSWdub3JlU3RhbmRhcmRJbmNsdWRlUGF0aCc6ICd0cnVlJywKKyAg
ICAgICAgICAgICdub3Rnb29kMic6ICdib2d1cycsCisgICAgICAgICAgICAnUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMnOiAnc3RyaW5nMTtzdHJpbmcyJywKKyAgICAgICAgICAgICdSZXNvdXJjZU91
dHB1dEZpbGVOYW1lJzogJ2Egc3RyaW5nMScsCisgICAgICAgICAgICAnU2hvd1Byb2dyZXNzJzog
J3RydWUnLAorICAgICAgICAgICAgJ1N1cHByZXNzU3RhcnR1cEJhbm5lcic6ICd0cnVlJywKKyAg
ICAgICAgICAgICdVbmRlZmluZVByZXByb2Nlc3NvckRlZmluaXRpb25zJzogJ3N0cmluZzE7c3Ry
aW5nMid9LAorICAgICAgICAnVkNMaWJyYXJpYW5Ub29sJzogeworICAgICAgICAgICAgJ0FkZGl0
aW9uYWxEZXBlbmRlbmNpZXMnOiAnZmlsZTE7ZmlsZTInLAorICAgICAgICAgICAgJ0FkZGl0aW9u
YWxMaWJyYXJ5RGlyZWN0b3JpZXMnOiAnZm9sZGVyMTtmb2xkZXIyJywKKyAgICAgICAgICAgICdB
ZGRpdGlvbmFsT3B0aW9ucyc6ICdhIHN0cmluZzEnLAorICAgICAgICAgICAgJ0V4cG9ydE5hbWVk
RnVuY3Rpb25zJzogJ3N0cmluZzE7c3RyaW5nMicsCisgICAgICAgICAgICAnRm9yY2VTeW1ib2xS
ZWZlcmVuY2VzJzogJ2Egc3RyaW5nMScsCisgICAgICAgICAgICAnSWdub3JlQWxsRGVmYXVsdExp
YnJhcmllcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJy
YXJpZXMnOiAnZmlsZTE7ZmlsZTInLAorICAgICAgICAgICAgJ0xpbmtMaWJyYXJ5RGVwZW5kZW5j
aWVzJzogJ3RydWUnLAorICAgICAgICAgICAgJ01vZHVsZURlZmluaXRpb25GaWxlJzogJ2FfZmls
ZV9uYW1lJywKKyAgICAgICAgICAgICdPdXRwdXRGaWxlJzogJ2FfZmlsZV9uYW1lJywKKyAgICAg
ICAgICAgICdTdXBwcmVzc1N0YXJ0dXBCYW5uZXInOiAndHJ1ZScsCisgICAgICAgICAgICAnVXNl
VW5pY29kZVJlc3BvbnNlRmlsZXMnOiAndHJ1ZSd9LAorICAgICAgICAnVkNNYW5pZmVzdFRvb2wn
OiB7CisgICAgICAgICAgICAnQWRkaXRpb25hbE1hbmlmZXN0RmlsZXMnOiAnZmlsZTE7ZmlsZTIn
LAorICAgICAgICAgICAgJ0FkZGl0aW9uYWxPcHRpb25zJzogJ2Egc3RyaW5nMScsCisgICAgICAg
ICAgICAnQXNzZW1ibHlJZGVudGl0eSc6ICdhIHN0cmluZzEnLAorICAgICAgICAgICAgJ0NvbXBv
bmVudEZpbGVOYW1lJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdEZXBlbmRlbmN5SW5m
b3JtYXRpb25GaWxlJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdHZW5lcmF0ZUNhdGFs
b2dGaWxlcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdJbnB1dFJlc291cmNlTWFuaWZlc3RzJzog
J2Egc3RyaW5nMScsCisgICAgICAgICAgICAnTWFuaWZlc3RSZXNvdXJjZUZpbGUnOiAnYV9maWxl
X25hbWUnLAorICAgICAgICAgICAgJ091dHB1dE1hbmlmZXN0RmlsZSc6ICdhX2ZpbGVfbmFtZScs
CisgICAgICAgICAgICAnUmVnaXN0cmFyU2NyaXB0RmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAg
ICAgICAgICAnUmVwbGFjZW1lbnRzRmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAn
U3VwcHJlc3NTdGFydHVwQmFubmVyJzogJ3RydWUnLAorICAgICAgICAgICAgJ1R5cGVMaWJyYXJ5
RmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnVXBkYXRlRmlsZUhhc2hlcyc6ICd0
cnVlbCcsCisgICAgICAgICAgICAnVXBkYXRlRmlsZUhhc2hlc1NlYXJjaFBhdGgnOiAnYV9maWxl
X25hbWUnLAorICAgICAgICAgICAgJ1VzZUZBVDMyV29ya2Fyb3VuZCc6ICd0cnVlJywKKyAgICAg
ICAgICAgICdVc2VVbmljb2RlUmVzcG9uc2VGaWxlcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdW
ZXJib3NlT3V0cHV0JzogJ3RydWUnfX0sCisgICAgICAgIHNlbGYuc3RkZXJyKQorICAgIHNlbGYu
X0V4cGVjdGVkV2FybmluZ3MoWworICAgICAgICAnV2FybmluZzogdW5yZWNvZ25pemVkIHZhbHVl
ICI1IiBmb3IgVkNDTENvbXBpbGVyVG9vbC8nCisgICAgICAgICAgICAnQmFzaWNSdW50aW1lQ2hl
Y2tzJywKKyAgICAgICAgJ1dhcm5pbmc6IHVucmVjb2duaXplZCB2YWx1ZSAiZmRrc2xqIiBmb3Ig
VkNDTENvbXBpbGVyVG9vbC8nCisgICAgICAgICAgICAnQnJvd3NlSW5mb3JtYXRpb24nLAorICAg
ICAgICAnV2FybmluZzogdW5yZWNvZ25pemVkIHZhbHVlICItMSIgZm9yIFZDQ0xDb21waWxlclRv
b2wvJworICAgICAgICAgICAgJ0NhbGxpbmdDb252ZW50aW9uJywKKyAgICAgICAgJ1dhcm5pbmc6
IHVucmVjb2duaXplZCB2YWx1ZSAiMiIgZm9yIFZDQ0xDb21waWxlclRvb2wvJworICAgICAgICAg
ICAgJ0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQnLAorICAgICAgICAnV2FybmluZzogdW5yZWNvZ25p
emVkIHNldHRpbmcgVkNDTENvbXBpbGVyVG9vbC9FbmFibGVwcmVmYXN0JywKKyAgICAgICAgJ1dh
cm5pbmc6IHVucmVjb2duaXplZCBzZXR0aW5nIFZDQ0xDb21waWxlclRvb2wvWlpYWVonLAorICAg
ICAgICAnV2FybmluZzogdW5yZWNvZ25pemVkIHZhbHVlICIyIiBmb3IgVkNMaW5rZXJUb29sL1Rh
cmdldE1hY2hpbmUnLAorICAgICAgICAnV2FybmluZzogdW5yZWNvZ25pemVkIHNldHRpbmcgVkNN
SURMVG9vbC9ub3Rnb29kJywKKyAgICAgICAgJ1dhcm5pbmc6IHVucmVjb2duaXplZCBzZXR0aW5n
IFZDUmVzb3VyY2VDb21waWxlclRvb2wvbm90Z29vZDInLAorICAgICAgICAnV2FybmluZzogdW5y
ZWNvZ25pemVkIHZhbHVlICJ0cnVlbCIgZm9yIFZDTWFuaWZlc3RUb29sLycKKyAgICAgICAgICAg
ICdVcGRhdGVGaWxlSGFzaGVzJ10pCisKKyAgZGVmIHRlc3RfVmFsaWRhdGVNU0J1aWxkU2V0dGlu
Z3Nfc2V0dGluZ3Moc2VsZik6CisgICAgIiIiIFRlc3RzIHRoYXQgZm9yIGludmFsaWQgTVNCdWls
ZCBzZXR0aW5ncy4gIiIiCisgICAgTVNWU1NldHRpbmdzLlZhbGlkYXRlTVNCdWlsZFNldHRpbmdz
KHsKKyAgICAgICAgJ0NsQ29tcGlsZSc6IHsKKyAgICAgICAgICAgICdBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzJzogJ2ZvbGRlcjE7Zm9sZGVyMicsCisgICAgICAgICAgICAnQWRkaXRpb25h
bE9wdGlvbnMnOiBbJ3N0cmluZzEnLCAnc3RyaW5nMiddLAorICAgICAgICAgICAgJ0FkZGl0aW9u
YWxVc2luZ0RpcmVjdG9yaWVzJzogJ2ZvbGRlcjE7Zm9sZGVyMicsCisgICAgICAgICAgICAnQXNz
ZW1ibGVyTGlzdGluZ0xvY2F0aW9uJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdBc3Nl
bWJsZXJPdXRwdXQnOiAnTm9MaXN0aW5nJywKKyAgICAgICAgICAgICdCYXNpY1J1bnRpbWVDaGVj
a3MnOiAnU3RhY2tGcmFtZVJ1bnRpbWVDaGVjaycsCisgICAgICAgICAgICAnQnJvd3NlSW5mb3Jt
YXRpb24nOiAnZmFsc2UnLAorICAgICAgICAgICAgJ0Jyb3dzZUluZm9ybWF0aW9uRmlsZSc6ICdh
X2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnQnVmZmVyU2VjdXJpdHlDaGVjayc6ICd0cnVlJywK
KyAgICAgICAgICAgICdCdWlsZGluZ0luSURFJzogJ3RydWUnLAorICAgICAgICAgICAgJ0NhbGxp
bmdDb252ZW50aW9uJzogJ0NkZWNsJywKKyAgICAgICAgICAgICdDb21waWxlQXMnOiAnQ29tcGls
ZUFzQycsCisgICAgICAgICAgICAnQ29tcGlsZUFzTWFuYWdlZCc6ICdQdXJlJywKKyAgICAgICAg
ICAgICdDcmVhdGVIb3RwYXRjaGFibGVJbWFnZSc6ICd0cnVlJywKKyAgICAgICAgICAgICdEZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0JzogJ1Byb2dyYW1EYXRhYmFzZScsCisgICAgICAgICAgICAnRGlz
YWJsZUxhbmd1YWdlRXh0ZW5zaW9ucyc6ICd0cnVlJywKKyAgICAgICAgICAgICdEaXNhYmxlU3Bl
Y2lmaWNXYXJuaW5ncyc6ICdzdHJpbmcxO3N0cmluZzInLAorICAgICAgICAgICAgJ0VuYWJsZUVu
aGFuY2VkSW5zdHJ1Y3Rpb25TZXQnOiAnU3RyZWFtaW5nU0lNREV4dGVuc2lvbnMnLAorICAgICAg
ICAgICAgJ0VuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnMnOiAndHJ1ZScsCisgICAgICAgICAg
ICAnRW5hYmxlUFJFZmFzdCc6ICd0cnVlJywKKyAgICAgICAgICAgICdFbmFibGVwcmVmYXN0Jzog
J2JvZ3VzJywKKyAgICAgICAgICAgICdFcnJvclJlcG9ydGluZyc6ICdQcm9tcHQnLAorICAgICAg
ICAgICAgJ0V4Y2VwdGlvbkhhbmRsaW5nJzogJ1N5bmNDVGhyb3cnLAorICAgICAgICAgICAgJ0V4
cGFuZEF0dHJpYnV0ZWRTb3VyY2UnOiAndHJ1ZScsCisgICAgICAgICAgICAnRmF2b3JTaXplT3JT
cGVlZCc6ICdOZWl0aGVyJywKKyAgICAgICAgICAgICdGbG9hdGluZ1BvaW50RXhjZXB0aW9ucyc6
ICd0cnVlJywKKyAgICAgICAgICAgICdGbG9hdGluZ1BvaW50TW9kZWwnOiAnUHJlY2lzZScsCisg
ICAgICAgICAgICAnRm9yY2VDb25mb3JtYW5jZUluRm9yTG9vcFNjb3BlJzogJ3RydWUnLAorICAg
ICAgICAgICAgJ0ZvcmNlZEluY2x1ZGVGaWxlcyc6ICdmaWxlMTtmaWxlMicsCisgICAgICAgICAg
ICAnRm9yY2VkVXNpbmdGaWxlcyc6ICdmaWxlMTtmaWxlMicsCisgICAgICAgICAgICAnRnVuY3Rp
b25MZXZlbExpbmtpbmcnOiAnZmFsc2UnLAorICAgICAgICAgICAgJ0dlbmVyYXRlWE1MRG9jdW1l
bnRhdGlvbkZpbGVzJzogJ3RydWUnLAorICAgICAgICAgICAgJ0lnbm9yZVN0YW5kYXJkSW5jbHVk
ZVBhdGgnOiAndHJ1ZScsCisgICAgICAgICAgICAnSW5saW5lRnVuY3Rpb25FeHBhbnNpb24nOiAn
T25seUV4cGxpY2l0SW5saW5lJywKKyAgICAgICAgICAgICdJbnRyaW5zaWNGdW5jdGlvbnMnOiAn
ZmFsc2UnLAorICAgICAgICAgICAgJ01pbmltYWxSZWJ1aWxkJzogJ3RydWUnLAorICAgICAgICAg
ICAgJ011bHRpUHJvY2Vzc29yQ29tcGlsYXRpb24nOiAndHJ1ZScsCisgICAgICAgICAgICAnT2Jq
ZWN0RmlsZU5hbWUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ09taXREZWZhdWx0TGli
TmFtZSc6ICd0cnVlJywKKyAgICAgICAgICAgICdPbWl0RnJhbWVQb2ludGVycyc6ICd0cnVlJywK
KyAgICAgICAgICAgICdPcGVuTVBTdXBwb3J0JzogJ3RydWUnLAorICAgICAgICAgICAgJ09wdGlt
aXphdGlvbic6ICdEaXNhYmxlZCcsCisgICAgICAgICAgICAnUHJlY29tcGlsZWRIZWFkZXInOiAn
Tm90VXNpbmcnLAorICAgICAgICAgICAgJ1ByZWNvbXBpbGVkSGVhZGVyRmlsZSc6ICdhX2ZpbGVf
bmFtZScsCisgICAgICAgICAgICAnUHJlY29tcGlsZWRIZWFkZXJPdXRwdXRGaWxlJzogJ2FfZmls
ZV9uYW1lJywKKyAgICAgICAgICAgICdQcmVwcm9jZXNzS2VlcENvbW1lbnRzJzogJ3RydWUnLAor
ICAgICAgICAgICAgJ1ByZXByb2Nlc3NvckRlZmluaXRpb25zJzogJ3N0cmluZzE7c3RyaW5nMics
CisgICAgICAgICAgICAnUHJlcHJvY2Vzc091dHB1dFBhdGgnOiAnYSBzdHJpbmcxJywKKyAgICAg
ICAgICAgICdQcmVwcm9jZXNzU3VwcHJlc3NMaW5lTnVtYmVycyc6ICdmYWxzZScsCisgICAgICAg
ICAgICAnUHJlcHJvY2Vzc1RvRmlsZSc6ICdmYWxzZScsCisgICAgICAgICAgICAnUHJvY2Vzc29y
TnVtYmVyJzogJzMzJywKKyAgICAgICAgICAgICdQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZSc6ICdh
X2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnUnVudGltZUxpYnJhcnknOiAnTXVsdGlUaHJlYWRl
ZCcsCisgICAgICAgICAgICAnUnVudGltZVR5cGVJbmZvJzogJ3RydWUnLAorICAgICAgICAgICAg
J1Nob3dJbmNsdWRlcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdTbWFsbGVyVHlwZUNoZWNrJzog
J3RydWUnLAorICAgICAgICAgICAgJ1N0cmluZ1Bvb2xpbmcnOiAndHJ1ZScsCisgICAgICAgICAg
ICAnU3RydWN0TWVtYmVyQWxpZ25tZW50JzogJzFCeXRlJywKKyAgICAgICAgICAgICdTdXBwcmVz
c1N0YXJ0dXBCYW5uZXInOiAndHJ1ZScsCisgICAgICAgICAgICAnVHJhY2tlckxvZ0RpcmVjdG9y
eSc6ICdhX2ZvbGRlcicsCisgICAgICAgICAgICAnVHJlYXRTcGVjaWZpY1dhcm5pbmdzQXNFcnJv
cnMnOiAnc3RyaW5nMTtzdHJpbmcyJywKKyAgICAgICAgICAgICdUcmVhdFdhcm5pbmdBc0Vycm9y
JzogJ3RydWUnLAorICAgICAgICAgICAgJ1RyZWF0V0NoYXJfdEFzQnVpbHRJblR5cGUnOiAndHJ1
ZScsCisgICAgICAgICAgICAnVW5kZWZpbmVBbGxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyc6ICd0
cnVlJywKKyAgICAgICAgICAgICdVbmRlZmluZVByZXByb2Nlc3NvckRlZmluaXRpb25zJzogJ3N0
cmluZzE7c3RyaW5nMicsCisgICAgICAgICAgICAnVXNlRnVsbFBhdGhzJzogJ3RydWUnLAorICAg
ICAgICAgICAgJ1VzZVVuaWNvZGVGb3JBc3NlbWJsZXJMaXN0aW5nJzogJ3RydWUnLAorICAgICAg
ICAgICAgJ1dhcm5pbmdMZXZlbCc6ICdUdXJuT2ZmQWxsV2FybmluZ3MnLAorICAgICAgICAgICAg
J1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbic6ICd0cnVlJywKKyAgICAgICAgICAgICdYTUxEb2N1
bWVudGF0aW9uRmlsZU5hbWUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ1paWFlaJzog
J2JvZ3VzJ30sCisgICAgICAgICdMaW5rJzogeworICAgICAgICAgICAgJ0FkZGl0aW9uYWxEZXBl
bmRlbmNpZXMnOiAnZmlsZTE7ZmlsZTInLAorICAgICAgICAgICAgJ0FkZGl0aW9uYWxMaWJyYXJ5
RGlyZWN0b3JpZXMnOiAnZm9sZGVyMTtmb2xkZXIyJywKKyAgICAgICAgICAgICdBZGRpdGlvbmFs
TWFuaWZlc3REZXBlbmRlbmNpZXMnOiAnZmlsZTE7ZmlsZTInLAorICAgICAgICAgICAgJ0FkZGl0
aW9uYWxPcHRpb25zJzogJ2Egc3RyaW5nMScsCisgICAgICAgICAgICAnQWRkTW9kdWxlTmFtZXNU
b0Fzc2VtYmx5JzogJ2ZpbGUxO2ZpbGUyJywKKyAgICAgICAgICAgICdBbGxvd0lzb2xhdGlvbic6
ICd0cnVlJywKKyAgICAgICAgICAgICdBc3NlbWJseURlYnVnJzogJycsCisgICAgICAgICAgICAn
QXNzZW1ibHlMaW5rUmVzb3VyY2UnOiAnZmlsZTE7ZmlsZTInLAorICAgICAgICAgICAgJ0Jhc2VB
ZGRyZXNzJzogJ2Egc3RyaW5nMScsCisgICAgICAgICAgICAnQnVpbGRpbmdJbklERSc6ICd0cnVl
JywKKyAgICAgICAgICAgICdDTFJJbWFnZVR5cGUnOiAnRm9yY2VJSldJbWFnZScsCisgICAgICAg
ICAgICAnQ0xSU3VwcG9ydExhc3RFcnJvcic6ICdFbmFibGVkJywKKyAgICAgICAgICAgICdDTFJU
aHJlYWRBdHRyaWJ1dGUnOiAnTVRBVGhyZWFkaW5nQXR0cmlidXRlJywKKyAgICAgICAgICAgICdD
TFJVbm1hbmFnZWRDb2RlQ2hlY2snOiAndHJ1ZScsCisgICAgICAgICAgICAnQ3JlYXRlSG90UGF0
Y2hhYmxlSW1hZ2UnOiAnWDg2SW1hZ2UnLAorICAgICAgICAgICAgJ0RhdGFFeGVjdXRpb25QcmV2
ZW50aW9uJzogJ2ZhbHNlJywKKyAgICAgICAgICAgICdEZWxheUxvYWRETExzJzogJ2ZpbGUxO2Zp
bGUyJywKKyAgICAgICAgICAgICdEZWxheVNpZ24nOiAndHJ1ZScsCisgICAgICAgICAgICAnRHJp
dmVyJzogJ05vdFNldCcsCisgICAgICAgICAgICAnRW1iZWRNYW5hZ2VkUmVzb3VyY2VGaWxlJzog
J2ZpbGUxO2ZpbGUyJywKKyAgICAgICAgICAgICdFbmFibGVDT01EQVRGb2xkaW5nJzogJ2ZhbHNl
JywKKyAgICAgICAgICAgICdFbmFibGVVQUMnOiAndHJ1ZScsCisgICAgICAgICAgICAnRW50cnlQ
b2ludFN5bWJvbCc6ICdhIHN0cmluZzEnLAorICAgICAgICAgICAgJ0ZpeGVkQmFzZUFkZHJlc3Mn
OiAnZmFsc2UnLAorICAgICAgICAgICAgJ0ZvcmNlRmlsZU91dHB1dCc6ICdFbmFibGVkJywKKyAg
ICAgICAgICAgICdGb3JjZVN5bWJvbFJlZmVyZW5jZXMnOiAnZmlsZTE7ZmlsZTInLAorICAgICAg
ICAgICAgJ0Z1bmN0aW9uT3JkZXInOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ0dlbmVy
YXRlRGVidWdJbmZvcm1hdGlvbic6ICd0cnVlJywKKyAgICAgICAgICAgICdHZW5lcmF0ZU1hcEZp
bGUnOiAndHJ1ZScsCisgICAgICAgICAgICAnSGVhcENvbW1pdFNpemUnOiAnYSBzdHJpbmcxJywK
KyAgICAgICAgICAgICdIZWFwUmVzZXJ2ZVNpemUnOiAnYSBzdHJpbmcxJywKKyAgICAgICAgICAg
ICdJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzJzogJ3RydWUnLAorICAgICAgICAgICAgJ0lnbm9y
ZUVtYmVkZGVkSURMJzogJ3RydWUnLAorICAgICAgICAgICAgJ0lnbm9yZVNwZWNpZmljRGVmYXVs
dExpYnJhcmllcyc6ICdhX2ZpbGVfbGlzdCcsCisgICAgICAgICAgICAnSW1hZ2VIYXNTYWZlRXhj
ZXB0aW9uSGFuZGxlcnMnOiAndHJ1ZScsCisgICAgICAgICAgICAnSW1wb3J0TGlicmFyeSc6ICdh
X2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnS2V5Q29udGFpbmVyJzogJ2FfZmlsZV9uYW1lJywK
KyAgICAgICAgICAgICdLZXlGaWxlJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdMYXJn
ZUFkZHJlc3NBd2FyZSc6ICdmYWxzZScsCisgICAgICAgICAgICAnTGlua0RMTCc6ICd0cnVlJywK
KyAgICAgICAgICAgICdMaW5rRXJyb3JSZXBvcnRpbmcnOiAnU2VuZEVycm9yUmVwb3J0JywKKyAg
ICAgICAgICAgICdMaW5rU3RhdHVzJzogJ3RydWUnLAorICAgICAgICAgICAgJ0xpbmtUaW1lQ29k
ZUdlbmVyYXRpb24nOiAnVXNlTGlua1RpbWVDb2RlR2VuZXJhdGlvbicsCisgICAgICAgICAgICAn
TWFuaWZlc3RGaWxlJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdNYXBFeHBvcnRzJzog
J3RydWUnLAorICAgICAgICAgICAgJ01hcEZpbGVOYW1lJzogJ2FfZmlsZV9uYW1lJywKKyAgICAg
ICAgICAgICdNZXJnZWRJRExCYXNlRmlsZU5hbWUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAg
ICAgJ01lcmdlU2VjdGlvbnMnOiAnYSBzdHJpbmcxJywKKyAgICAgICAgICAgICdNaWRsQ29tbWFu
ZEZpbGUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ01pbmltdW1SZXF1aXJlZFZlcnNp
b24nOiAnYSBzdHJpbmcxJywKKyAgICAgICAgICAgICdNb2R1bGVEZWZpbml0aW9uRmlsZSc6ICdh
X2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnTVNET1NTdHViRmlsZU5hbWUnOiAnYV9maWxlX25h
bWUnLAorICAgICAgICAgICAgJ05vRW50cnlQb2ludCc6ICd0cnVlJywKKyAgICAgICAgICAgICdP
cHRpbWl6ZVJlZmVyZW5jZXMnOiAnZmFsc2UnLAorICAgICAgICAgICAgJ091dHB1dEZpbGUnOiAn
YV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ1BlclVzZXJSZWRpcmVjdGlvbic6ICd0cnVlJywK
KyAgICAgICAgICAgICdQcmV2ZW50RGxsQmluZGluZyc6ICd0cnVlJywKKyAgICAgICAgICAgICdQ
cm9maWxlJzogJ3RydWUnLAorICAgICAgICAgICAgJ1Byb2ZpbGVHdWlkZWREYXRhYmFzZSc6ICdh
X2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnUHJvZ3JhbURhdGFiYXNlRmlsZSc6ICdhX2ZpbGVf
bmFtZScsCisgICAgICAgICAgICAnUmFuZG9taXplZEJhc2VBZGRyZXNzJzogJ2ZhbHNlJywKKyAg
ICAgICAgICAgICdSZWdpc3Rlck91dHB1dCc6ICd0cnVlJywKKyAgICAgICAgICAgICdTZWN0aW9u
QWxpZ25tZW50JzogJzMzJywKKyAgICAgICAgICAgICdTZXRDaGVja3N1bSc6ICd0cnVlJywKKyAg
ICAgICAgICAgICdTaG93UHJvZ3Jlc3MnOiAnTGlua1ZlcmJvc2VSRUYnLAorICAgICAgICAgICAg
J1NwZWNpZnlTZWN0aW9uQXR0cmlidXRlcyc6ICdhIHN0cmluZzEnLAorICAgICAgICAgICAgJ1N0
YWNrQ29tbWl0U2l6ZSc6ICdhIHN0cmluZzEnLAorICAgICAgICAgICAgJ1N0YWNrUmVzZXJ2ZVNp
emUnOiAnYSBzdHJpbmcxJywKKyAgICAgICAgICAgICdTdHJpcFByaXZhdGVTeW1ib2xzJzogJ2Ff
ZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdTdWJTeXN0ZW0nOiAnQ29uc29sZScsCisgICAgICAg
ICAgICAnU3VwcG9ydE5vYmluZE9mRGVsYXlMb2FkZWRETEwnOiAndHJ1ZScsCisgICAgICAgICAg
ICAnU3VwcG9ydFVubG9hZE9mRGVsYXlMb2FkZWRETEwnOiAndHJ1ZScsCisgICAgICAgICAgICAn
U3VwcHJlc3NTdGFydHVwQmFubmVyJzogJ3RydWUnLAorICAgICAgICAgICAgJ1N3YXBSdW5Gcm9t
Q0QnOiAndHJ1ZScsCisgICAgICAgICAgICAnU3dhcFJ1bkZyb21ORVQnOiAndHJ1ZScsCisgICAg
ICAgICAgICAnVGFyZ2V0TWFjaGluZSc6ICdNYWNoaW5lWDg2JywKKyAgICAgICAgICAgICdUZXJt
aW5hbFNlcnZlckF3YXJlJzogJ2ZhbHNlJywKKyAgICAgICAgICAgICdUcmFja2VyTG9nRGlyZWN0
b3J5JzogJ2FfZm9sZGVyJywKKyAgICAgICAgICAgICdUcmVhdExpbmtlcldhcm5pbmdBc0Vycm9y
cyc6ICd0cnVlJywKKyAgICAgICAgICAgICdUdXJuT2ZmQXNzZW1ibHlHZW5lcmF0aW9uJzogJ3Ry
dWUnLAorICAgICAgICAgICAgJ1R5cGVMaWJyYXJ5RmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAg
ICAgICAgICAnVHlwZUxpYnJhcnlSZXNvdXJjZUlEJzogJzMzJywKKyAgICAgICAgICAgICdVQUNF
eGVjdXRpb25MZXZlbCc6ICdBc0ludm9rZXInLAorICAgICAgICAgICAgJ1VBQ1VJQWNjZXNzJzog
J3RydWUnLAorICAgICAgICAgICAgJ1ZlcnNpb24nOiAnYSBzdHJpbmcxJ30sCisgICAgICAgICdS
ZXNvdXJjZUNvbXBpbGUnOiB7CisgICAgICAgICAgICAnQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyc6ICdmb2xkZXIxO2ZvbGRlcjInLAorICAgICAgICAgICAgJ0FkZGl0aW9uYWxPcHRpb25z
JzogJ2Egc3RyaW5nMScsCisgICAgICAgICAgICAnQ3VsdHVyZSc6ICcweDIzNicsCisgICAgICAg
ICAgICAnSWdub3JlU3RhbmRhcmRJbmNsdWRlUGF0aCc6ICd0cnVlJywKKyAgICAgICAgICAgICdO
dWxsVGVybWluYXRlU3RyaW5ncyc6ICd0cnVlJywKKyAgICAgICAgICAgICdQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyc6ICdzdHJpbmcxO3N0cmluZzInLAorICAgICAgICAgICAgJ1Jlc291cmNlT3V0
cHV0RmlsZU5hbWUnOiAnYSBzdHJpbmcxJywKKyAgICAgICAgICAgICdTaG93UHJvZ3Jlc3MnOiAn
dHJ1ZScsCisgICAgICAgICAgICAnU3VwcHJlc3NTdGFydHVwQmFubmVyJzogJ3RydWUnLAorICAg
ICAgICAgICAgJ1RyYWNrZXJMb2dEaXJlY3RvcnknOiAnYV9mb2xkZXInLAorICAgICAgICAgICAg
J1VuZGVmaW5lUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMnOiAnc3RyaW5nMTtzdHJpbmcyJ30sCisg
ICAgICAgICdNaWRsJzogeworICAgICAgICAgICAgJ0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMnOiAnZm9sZGVyMTtmb2xkZXIyJywKKyAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6
ICdhIHN0cmluZzEnLAorICAgICAgICAgICAgJ0FwcGxpY2F0aW9uQ29uZmlndXJhdGlvbk1vZGUn
OiAndHJ1ZScsCisgICAgICAgICAgICAnQ2xpZW50U3R1YkZpbGUnOiAnYV9maWxlX25hbWUnLAor
ICAgICAgICAgICAgJ0NQcmVwcm9jZXNzT3B0aW9ucyc6ICdhIHN0cmluZzEnLAorICAgICAgICAg
ICAgJ0RlZmF1bHRDaGFyVHlwZSc6ICdTaWduZWQnLAorICAgICAgICAgICAgJ0RsbERhdGFGaWxl
TmFtZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnRW5hYmxlRXJyb3JDaGVja3MnOiAn
RW5hYmxlQ3VzdG9tJywKKyAgICAgICAgICAgICdFcnJvckNoZWNrQWxsb2NhdGlvbnMnOiAndHJ1
ZScsCisgICAgICAgICAgICAnRXJyb3JDaGVja0JvdW5kcyc6ICd0cnVlJywKKyAgICAgICAgICAg
ICdFcnJvckNoZWNrRW51bVJhbmdlJzogJ3RydWUnLAorICAgICAgICAgICAgJ0Vycm9yQ2hlY2tS
ZWZQb2ludGVycyc6ICd0cnVlJywKKyAgICAgICAgICAgICdFcnJvckNoZWNrU3R1YkRhdGEnOiAn
dHJ1ZScsCisgICAgICAgICAgICAnR2VuZXJhdGVDbGllbnRGaWxlcyc6ICdTdHViJywKKyAgICAg
ICAgICAgICdHZW5lcmF0ZVNlcnZlckZpbGVzJzogJ05vbmUnLAorICAgICAgICAgICAgJ0dlbmVy
YXRlU3R1Ymxlc3NQcm94aWVzJzogJ3RydWUnLAorICAgICAgICAgICAgJ0dlbmVyYXRlVHlwZUxp
YnJhcnknOiAndHJ1ZScsCisgICAgICAgICAgICAnSGVhZGVyRmlsZU5hbWUnOiAnYV9maWxlX25h
bWUnLAorICAgICAgICAgICAgJ0lnbm9yZVN0YW5kYXJkSW5jbHVkZVBhdGgnOiAndHJ1ZScsCisg
ICAgICAgICAgICAnSW50ZXJmYWNlSWRlbnRpZmllckZpbGVOYW1lJzogJ2FfZmlsZV9uYW1lJywK
KyAgICAgICAgICAgICdMb2NhbGVJRCc6ICczMycsCisgICAgICAgICAgICAnTWtUeXBMaWJDb21w
YXRpYmxlJzogJ3RydWUnLAorICAgICAgICAgICAgJ091dHB1dERpcmVjdG9yeSc6ICdhIHN0cmlu
ZzEnLAorICAgICAgICAgICAgJ1ByZXByb2Nlc3NvckRlZmluaXRpb25zJzogJ3N0cmluZzE7c3Ry
aW5nMicsCisgICAgICAgICAgICAnUHJveHlGaWxlTmFtZSc6ICdhX2ZpbGVfbmFtZScsCisgICAg
ICAgICAgICAnUmVkaXJlY3RPdXRwdXRBbmRFcnJvcnMnOiAnYV9maWxlX25hbWUnLAorICAgICAg
ICAgICAgJ1NlcnZlclN0dWJGaWxlJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdTdHJ1
Y3RNZW1iZXJBbGlnbm1lbnQnOiAnTm90U2V0JywKKyAgICAgICAgICAgICdTdXBwcmVzc0NvbXBp
bGVyV2FybmluZ3MnOiAndHJ1ZScsCisgICAgICAgICAgICAnU3VwcHJlc3NTdGFydHVwQmFubmVy
JzogJ3RydWUnLAorICAgICAgICAgICAgJ1RhcmdldEVudmlyb25tZW50JzogJ0l0YW5pdW0nLAor
ICAgICAgICAgICAgJ1RyYWNrZXJMb2dEaXJlY3RvcnknOiAnYV9mb2xkZXInLAorICAgICAgICAg
ICAgJ1R5cGVMaWJGb3JtYXQnOiAnTmV3Rm9ybWF0JywKKyAgICAgICAgICAgICdUeXBlTGlicmFy
eU5hbWUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ1VuZGVmaW5lUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMnOiAnc3RyaW5nMTtzdHJpbmcyJywKKyAgICAgICAgICAgICdWYWxpZGF0ZUFs
bFBhcmFtZXRlcnMnOiAndHJ1ZScsCisgICAgICAgICAgICAnV2FybkFzRXJyb3InOiAndHJ1ZScs
CisgICAgICAgICAgICAnV2FybmluZ0xldmVsJzogJzEnfSwKKyAgICAgICAgJ0xpYic6IHsKKyAg
ICAgICAgICAgICdBZGRpdGlvbmFsRGVwZW5kZW5jaWVzJzogJ2ZpbGUxO2ZpbGUyJywKKyAgICAg
ICAgICAgICdBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzJzogJ2ZvbGRlcjE7Zm9sZGVyMics
CisgICAgICAgICAgICAnQWRkaXRpb25hbE9wdGlvbnMnOiAnYSBzdHJpbmcxJywKKyAgICAgICAg
ICAgICdEaXNwbGF5TGlicmFyeSc6ICdhIHN0cmluZzEnLAorICAgICAgICAgICAgJ0Vycm9yUmVw
b3J0aW5nJzogJ1Byb21wdEltbWVkaWF0ZWx5JywKKyAgICAgICAgICAgICdFeHBvcnROYW1lZEZ1
bmN0aW9ucyc6ICdzdHJpbmcxO3N0cmluZzInLAorICAgICAgICAgICAgJ0ZvcmNlU3ltYm9sUmVm
ZXJlbmNlcyc6ICdhIHN0cmluZzEnLAorICAgICAgICAgICAgJ0lnbm9yZUFsbERlZmF1bHRMaWJy
YXJpZXMnOiAndHJ1ZScsCisgICAgICAgICAgICAnSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFy
aWVzJzogJ2ZpbGUxO2ZpbGUyJywKKyAgICAgICAgICAgICdMaW5rVGltZUNvZGVHZW5lcmF0aW9u
JzogJ3RydWUnLAorICAgICAgICAgICAgJ01pbmltdW1SZXF1aXJlZFZlcnNpb24nOiAnYSBzdHJp
bmcxJywKKyAgICAgICAgICAgICdNb2R1bGVEZWZpbml0aW9uRmlsZSc6ICdhX2ZpbGVfbmFtZScs
CisgICAgICAgICAgICAnTmFtZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnT3V0cHV0
RmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnUmVtb3ZlT2JqZWN0cyc6ICdmaWxl
MTtmaWxlMicsCisgICAgICAgICAgICAnU3ViU3lzdGVtJzogJ0NvbnNvbGUnLAorICAgICAgICAg
ICAgJ1N1cHByZXNzU3RhcnR1cEJhbm5lcic6ICd0cnVlJywKKyAgICAgICAgICAgICdUYXJnZXRN
YWNoaW5lJzogJ01hY2hpbmVYODZpJywKKyAgICAgICAgICAgICdUcmFja2VyTG9nRGlyZWN0b3J5
JzogJ2FfZm9sZGVyJywKKyAgICAgICAgICAgICdUcmVhdExpYldhcm5pbmdBc0Vycm9ycyc6ICd0
cnVlJywKKyAgICAgICAgICAgICdVc2VVbmljb2RlUmVzcG9uc2VGaWxlcyc6ICd0cnVlJywKKyAg
ICAgICAgICAgICdWZXJib3NlJzogJ3RydWUnfSwKKyAgICAgICAgJ010JzogeworICAgICAgICAg
ICAgJ0FkZGl0aW9uYWxNYW5pZmVzdEZpbGVzJzogJ2ZpbGUxO2ZpbGUyJywKKyAgICAgICAgICAg
ICdBZGRpdGlvbmFsT3B0aW9ucyc6ICdhIHN0cmluZzEnLAorICAgICAgICAgICAgJ0Fzc2VtYmx5
SWRlbnRpdHknOiAnYSBzdHJpbmcxJywKKyAgICAgICAgICAgICdDb21wb25lbnRGaWxlTmFtZSc6
ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnRW5hYmxlRFBJQXdhcmVuZXNzJzogJ2ZhbCcs
CisgICAgICAgICAgICAnR2VuZXJhdGVDYXRhbG9nRmlsZXMnOiAndHJ1ZWwnLAorICAgICAgICAg
ICAgJ0dlbmVyYXRlQ2F0ZWdvcnlUYWdzJzogJ3RydWUnLAorICAgICAgICAgICAgJ0lucHV0UmVz
b3VyY2VNYW5pZmVzdHMnOiAnYSBzdHJpbmcxJywKKyAgICAgICAgICAgICdNYW5pZmVzdEZyb21N
YW5hZ2VkQXNzZW1ibHknOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ25vdGdvb2QzJzog
J2JvZ3VzJywKKyAgICAgICAgICAgICdPdXRwdXRNYW5pZmVzdEZpbGUnOiAnYV9maWxlX25hbWUn
LAorICAgICAgICAgICAgJ091dHB1dFJlc291cmNlTWFuaWZlc3RzJzogJ2Egc3RyaW5nMScsCisg
ICAgICAgICAgICAnUmVnaXN0cmFyU2NyaXB0RmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAg
ICAgICAnUmVwbGFjZW1lbnRzRmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnU3Vw
cHJlc3NEZXBlbmRlbmN5RWxlbWVudCc6ICd0cnVlJywKKyAgICAgICAgICAgICdTdXBwcmVzc1N0
YXJ0dXBCYW5uZXInOiAndHJ1ZScsCisgICAgICAgICAgICAnVHJhY2tlckxvZ0RpcmVjdG9yeSc6
ICdhX2ZvbGRlcicsCisgICAgICAgICAgICAnVHlwZUxpYnJhcnlGaWxlJzogJ2FfZmlsZV9uYW1l
JywKKyAgICAgICAgICAgICdVcGRhdGVGaWxlSGFzaGVzJzogJ3RydWUnLAorICAgICAgICAgICAg
J1VwZGF0ZUZpbGVIYXNoZXNTZWFyY2hQYXRoJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAg
ICdWZXJib3NlT3V0cHV0JzogJ3RydWUnfSwKKyAgICAgICAgJ1Byb2plY3RSZWZlcmVuY2UnOiB7
CisgICAgICAgICAgICAnTGlua0xpYnJhcnlEZXBlbmRlbmNpZXMnOiAndHJ1ZScsCisgICAgICAg
ICAgICAnVXNlTGlicmFyeURlcGVuZGVuY3lJbnB1dHMnOiAndHJ1ZSd9LAorICAgICAgICAnTWFu
aWZlc3RSZXNvdXJjZUNvbXBpbGUnOiB7CisgICAgICAgICAgICAnUmVzb3VyY2VPdXRwdXRGaWxl
TmFtZSc6ICdhX2ZpbGVfbmFtZSd9LAorICAgICAgICAnJzogeworICAgICAgICAgICAgJ0VtYmVk
TWFuaWZlc3QnOiAndHJ1ZScsCisgICAgICAgICAgICAnR2VuZXJhdGVNYW5pZmVzdCc6ICd0cnVl
JywKKyAgICAgICAgICAgICdJZ25vcmVJbXBvcnRMaWJyYXJ5JzogJ3RydWUnLAorICAgICAgICAg
ICAgJ0xpbmtJbmNyZW1lbnRhbCc6ICdmYWxzZSd9fSwKKyAgICAgICAgc2VsZi5zdGRlcnIpCisg
ICAgc2VsZi5fRXhwZWN0ZWRXYXJuaW5ncyhbCisgICAgICAgICdXYXJuaW5nOiB1bnJlY29nbml6
ZWQgc2V0dGluZyBDbENvbXBpbGUvRW5hYmxlcHJlZmFzdCcsCisgICAgICAgICdXYXJuaW5nOiB1
bnJlY29nbml6ZWQgc2V0dGluZyBDbENvbXBpbGUvWlpYWVonLAorICAgICAgICAnV2FybmluZzog
dW5yZWNvZ25pemVkIHNldHRpbmcgTXQvbm90Z29vZDMnLAorICAgICAgICAnV2FybmluZzogdW5y
ZWNvZ25pemVkIHZhbHVlICJ0cnVlbCIgZm9yIE10L0dlbmVyYXRlQ2F0YWxvZ0ZpbGVzJywKKyAg
ICAgICAgJ1dhcm5pbmc6IHVucmVjb2duaXplZCB2YWx1ZSAiTWFjaGluZVg4NmkiIGZvciBMaWIv
VGFyZ2V0TWFjaGluZScsCisgICAgICAgICdXYXJuaW5nOiB1bnJlY29nbml6ZWQgdmFsdWUgImZh
bCIgZm9yIE10L0VuYWJsZURQSUF3YXJlbmVzcyddKQorCisgIGRlZiB0ZXN0X0NvbnZlcnRUb01z
QnVpbGRTZXR0aW5nc19lbXB0eShzZWxmKToKKyAgICAiIiIgVGVzdHMgYW4gZW1wdHkgY29udmVy
c2lvbi4gIiIiCisgICAgbXN2c19zZXR0aW5ncyA9IHt9CisgICAgZXhwZWN0ZWRfbXNidWlsZF9z
ZXR0aW5ncyA9IHt9CisgICAgYWN0dWFsX21zYnVpbGRfc2V0dGluZ3MgPSBNU1ZTU2V0dGluZ3Mu
Q29udmVydFRvTXNCdWlsZFNldHRpbmdzKAorICAgICAgICBtc3ZzX3NldHRpbmdzLAorICAgICAg
ICBzZWxmLnN0ZGVycikKKyAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX21zYnVpbGRfc2V0
dGluZ3MsIGFjdHVhbF9tc2J1aWxkX3NldHRpbmdzKQorICAgIHNlbGYuX0V4cGVjdGVkV2Fybmlu
Z3MoW10pCisKKyAgZGVmIHRlc3RfQ29udmVydFRvTXNCdWlsZFNldHRpbmdzX21pbmltYWwoc2Vs
Zik6CisgICAgIiIiIFRlc3RzIGEgbWluaW1hbCBjb252ZXJzaW9uLiAiIiIKKyAgICBtc3ZzX3Nl
dHRpbmdzID0geworICAgICAgICAnVkNDTENvbXBpbGVyVG9vbCc6IHsKKyAgICAgICAgICAgICdB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzJzogJ2RpcjEnLAorICAgICAgICAgICAgJ0FkZGl0
aW9uYWxPcHRpb25zJzogJy9mb28nLAorICAgICAgICAgICAgJ0Jhc2ljUnVudGltZUNoZWNrcyc6
ICcwJywKKyAgICAgICAgICAgIH0sCisgICAgICAgICdWQ0xpbmtlclRvb2wnOiB7CisgICAgICAg
ICAgICAnTGlua1RpbWVDb2RlR2VuZXJhdGlvbic6ICcxJywKKyAgICAgICAgICAgICdFcnJvclJl
cG9ydGluZyc6ICcxJywKKyAgICAgICAgICAgICdEYXRhRXhlY3V0aW9uUHJldmVudGlvbic6ICcy
JywKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0KKyAgICBleHBlY3RlZF9tc2J1aWxkX3NldHRp
bmdzID0geworICAgICAgICAnQ2xDb21waWxlJzogeworICAgICAgICAgICAgJ0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMnOiAnZGlyMScsCisgICAgICAgICAgICAnQWRkaXRpb25hbE9wdGlv
bnMnOiAnL2ZvbycsCisgICAgICAgICAgICAnQmFzaWNSdW50aW1lQ2hlY2tzJzogJ0RlZmF1bHQn
LAorICAgICAgICAgICAgfSwKKyAgICAgICAgJ0xpbmsnOiB7CisgICAgICAgICAgICAnTGlua1Rp
bWVDb2RlR2VuZXJhdGlvbic6ICdVc2VMaW5rVGltZUNvZGVHZW5lcmF0aW9uJywKKyAgICAgICAg
ICAgICdMaW5rRXJyb3JSZXBvcnRpbmcnOiAnUHJvbXB0SW1tZWRpYXRlbHknLAorICAgICAgICAg
ICAgJ0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uJzogJ3RydWUnLAorICAgICAgICAgICAgfSwKKyAg
ICAgICAgfQorICAgIGFjdHVhbF9tc2J1aWxkX3NldHRpbmdzID0gTVNWU1NldHRpbmdzLkNvbnZl
cnRUb01zQnVpbGRTZXR0aW5ncygKKyAgICAgICAgbXN2c19zZXR0aW5ncywKKyAgICAgICAgc2Vs
Zi5zdGRlcnIpCisgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9tc2J1aWxkX3NldHRpbmdz
LCBhY3R1YWxfbXNidWlsZF9zZXR0aW5ncykKKyAgICBzZWxmLl9FeHBlY3RlZFdhcm5pbmdzKFtd
KQorCisgIGRlZiB0ZXN0X0NvbnZlcnRUb01zQnVpbGRTZXR0aW5nc193YXJuaW5ncyhzZWxmKToK
KyAgICAiIiIgVGVzdHMgY29udmVyc2lvbiB0aGF0IGdlbmVyYXRlcyB3YXJuaW5ncy4gIiIiCisg
ICAgbXN2c19zZXR0aW5ncyA9IHsKKyAgICAgICAgJ1ZDQ0xDb21waWxlclRvb2wnOiB7CisgICAg
ICAgICAgICAnQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyc6ICcxJywKKyAgICAgICAgICAg
ICdBZGRpdGlvbmFsT3B0aW9ucyc6ICcyJywKKyAgICAgICAgICAgICMgVGhlc2UgYXJlIGluY29y
cmVjdCB2YWx1ZXM6CisgICAgICAgICAgICAnQmFzaWNSdW50aW1lQ2hlY2tzJzogJzEyJywKKyAg
ICAgICAgICAgICdCcm93c2VJbmZvcm1hdGlvbic6ICcyMScsCisgICAgICAgICAgICAnVXNlUHJl
Y29tcGlsZWRIZWFkZXInOiAnMTMnLAorICAgICAgICAgICAgJ0dlbmVyYXRlUHJlcHJvY2Vzc2Vk
RmlsZSc6ICcxNCd9LAorICAgICAgICAnVkNMaW5rZXJUb29sJzogeworICAgICAgICAgICAgIyBU
aGVzZSBhcmUgaW5jb3JyZWN0IHZhbHVlczoKKyAgICAgICAgICAgICdEcml2ZXInOiAnMTAnLAor
ICAgICAgICAgICAgJ0xpbmtUaW1lQ29kZUdlbmVyYXRpb24nOiAnMzEnLAorICAgICAgICAgICAg
J0Vycm9yUmVwb3J0aW5nJzogJzIxJywKKyAgICAgICAgICAgICdGaXhlZEJhc2VBZGRyZXNzJzog
JzYnfSwKKyAgICAgICAgJ1ZDUmVzb3VyY2VDb21waWxlclRvb2wnOiB7CisgICAgICAgICAgICAj
IEN1c3RvbQorICAgICAgICAgICAgJ0N1bHR1cmUnOiAnMTAwMyd9fQorICAgIGV4cGVjdGVkX21z
YnVpbGRfc2V0dGluZ3MgPSB7CisgICAgICAgICdDbENvbXBpbGUnOiB7CisgICAgICAgICAgICAn
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyc6ICcxJywKKyAgICAgICAgICAgICdBZGRpdGlv
bmFsT3B0aW9ucyc6ICcyJ30sCisgICAgICAgICdMaW5rJzoge30sCisgICAgICAgICdSZXNvdXJj
ZUNvbXBpbGUnOiB7CisgICAgICAgICAgICAjIEN1c3RvbQorICAgICAgICAgICAgJ0N1bHR1cmUn
OiAnMHgwM2ViJ319CisgICAgYWN0dWFsX21zYnVpbGRfc2V0dGluZ3MgPSBNU1ZTU2V0dGluZ3Mu
Q29udmVydFRvTXNCdWlsZFNldHRpbmdzKAorICAgICAgICBtc3ZzX3NldHRpbmdzLAorICAgICAg
ICBzZWxmLnN0ZGVycikKKyAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX21zYnVpbGRfc2V0
dGluZ3MsIGFjdHVhbF9tc2J1aWxkX3NldHRpbmdzKQorICAgIHNlbGYuX0V4cGVjdGVkV2Fybmlu
Z3MoWworICAgICAgICAnV2FybmluZzogdW5yZWNvZ25pemVkIHZhbHVlICIxMiIgZm9yIFZDQ0xD
b21waWxlclRvb2wvJworICAgICAgICAgICAgJ0Jhc2ljUnVudGltZUNoZWNrcyB3aGlsZSBjb252
ZXJ0aW5nIHRvIE1TQnVpbGQuJywKKyAgICAgICAgJ1dhcm5pbmc6IHVucmVjb2duaXplZCB2YWx1
ZSAiMjEiIGZvciBWQ0NMQ29tcGlsZXJUb29sLycKKyAgICAgICAgICAgICdCcm93c2VJbmZvcm1h
dGlvbiB3aGlsZSBjb252ZXJ0aW5nIHRvIE1TQnVpbGQuJywKKyAgICAgICAgJ1dhcm5pbmc6IHVu
cmVjb2duaXplZCB2YWx1ZSAiMTMiIGZvciBWQ0NMQ29tcGlsZXJUb29sLycKKyAgICAgICAgICAg
ICdVc2VQcmVjb21waWxlZEhlYWRlciB3aGlsZSBjb252ZXJ0aW5nIHRvIE1TQnVpbGQuJywKKyAg
ICAgICAgJ1dhcm5pbmc6IHVucmVjb2duaXplZCB2YWx1ZSAiMTQiIGZvciBWQ0NMQ29tcGlsZXJU
b29sLycKKyAgICAgICAgICAgICdHZW5lcmF0ZVByZXByb2Nlc3NlZEZpbGUgd2hpbGUgY29udmVy
dGluZyB0byBNU0J1aWxkLicsCisKKyAgICAgICAgJ1dhcm5pbmc6IHVucmVjb2duaXplZCB2YWx1
ZSAiMTAiIGZvciBWQ0xpbmtlclRvb2wvJworICAgICAgICAgICAgJ0RyaXZlciB3aGlsZSBjb252
ZXJ0aW5nIHRvIE1TQnVpbGQuJywKKyAgICAgICAgJ1dhcm5pbmc6IHVucmVjb2duaXplZCB2YWx1
ZSAiMzEiIGZvciBWQ0xpbmtlclRvb2wvJworICAgICAgICAgICAgJ0xpbmtUaW1lQ29kZUdlbmVy
YXRpb24gd2hpbGUgY29udmVydGluZyB0byBNU0J1aWxkLicsCisgICAgICAgICdXYXJuaW5nOiB1
bnJlY29nbml6ZWQgdmFsdWUgIjIxIiBmb3IgVkNMaW5rZXJUb29sLycKKyAgICAgICAgICAgICdF
cnJvclJlcG9ydGluZyB3aGlsZSBjb252ZXJ0aW5nIHRvIE1TQnVpbGQuJywKKyAgICAgICAgJ1dh
cm5pbmc6IHVucmVjb2duaXplZCB2YWx1ZSAiNiIgZm9yIFZDTGlua2VyVG9vbC8nCisgICAgICAg
ICAgICAnRml4ZWRCYXNlQWRkcmVzcyB3aGlsZSBjb252ZXJ0aW5nIHRvIE1TQnVpbGQuJywKKyAg
ICAgICAgXSkKKworICBkZWYgdGVzdF9Db252ZXJ0VG9Nc0J1aWxkU2V0dGluZ3NfZnVsbF9zeW50
aGV0aWMoc2VsZik6CisgICAgIiIiIFRlc3RzIGNvbnZlcnNpb24gb2YgYWxsIHRoZSBNc0J1aWxk
IHNldHRpbmdzLiAiIiIKKyAgICBtc3ZzX3NldHRpbmdzID0geworICAgICAgICAnVkNDTENvbXBp
bGVyVG9vbCc6IHsKKyAgICAgICAgICAgICdBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzJzog
J2ZvbGRlcjE7Zm9sZGVyMjtmb2xkZXIzJywKKyAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9u
cyc6ICdhX3N0cmluZycsCisgICAgICAgICAgICAnQWRkaXRpb25hbFVzaW5nRGlyZWN0b3JpZXMn
OiAnZm9sZGVyMTtmb2xkZXIyO2ZvbGRlcjMnLAorICAgICAgICAgICAgJ0Fzc2VtYmxlckxpc3Rp
bmdMb2NhdGlvbic6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnQXNzZW1ibGVyT3V0cHV0
JzogJzAnLAorICAgICAgICAgICAgJ0Jhc2ljUnVudGltZUNoZWNrcyc6ICcxJywKKyAgICAgICAg
ICAgICdCcm93c2VJbmZvcm1hdGlvbic6ICcyJywKKyAgICAgICAgICAgICdCcm93c2VJbmZvcm1h
dGlvbkZpbGUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ0J1ZmZlclNlY3VyaXR5Q2hl
Y2snOiAndHJ1ZScsCisgICAgICAgICAgICAnQ2FsbGluZ0NvbnZlbnRpb24nOiAnMCcsCisgICAg
ICAgICAgICAnQ29tcGlsZUFzJzogJzEnLAorICAgICAgICAgICAgJ0RlYnVnSW5mb3JtYXRpb25G
b3JtYXQnOiAnNCcsCisgICAgICAgICAgICAnRGVmYXVsdENoYXJJc1Vuc2lnbmVkJzogJ3RydWUn
LAorICAgICAgICAgICAgJ0RldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcyc6ICd0cnVlJywK
KyAgICAgICAgICAgICdEaXNhYmxlTGFuZ3VhZ2VFeHRlbnNpb25zJzogJ3RydWUnLAorICAgICAg
ICAgICAgJ0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzJzogJ2QxO2QyO2QzJywKKyAgICAgICAgICAg
ICdFbmFibGVFbmhhbmNlZEluc3RydWN0aW9uU2V0JzogJzAnLAorICAgICAgICAgICAgJ0VuYWJs
ZUZpYmVyU2FmZU9wdGltaXphdGlvbnMnOiAndHJ1ZScsCisgICAgICAgICAgICAnRW5hYmxlRnVu
Y3Rpb25MZXZlbExpbmtpbmcnOiAndHJ1ZScsCisgICAgICAgICAgICAnRW5hYmxlSW50cmluc2lj
RnVuY3Rpb25zJzogJ3RydWUnLAorICAgICAgICAgICAgJ0VuYWJsZVBSRWZhc3QnOiAndHJ1ZScs
CisgICAgICAgICAgICAnRXJyb3JSZXBvcnRpbmcnOiAnMScsCisgICAgICAgICAgICAnRXhjZXB0
aW9uSGFuZGxpbmcnOiAnMicsCisgICAgICAgICAgICAnRXhwYW5kQXR0cmlidXRlZFNvdXJjZSc6
ICd0cnVlJywKKyAgICAgICAgICAgICdGYXZvclNpemVPclNwZWVkJzogJzAnLAorICAgICAgICAg
ICAgJ0Zsb2F0aW5nUG9pbnRFeGNlcHRpb25zJzogJ3RydWUnLAorICAgICAgICAgICAgJ0Zsb2F0
aW5nUG9pbnRNb2RlbCc6ICcxJywKKyAgICAgICAgICAgICdGb3JjZUNvbmZvcm1hbmNlSW5Gb3JM
b29wU2NvcGUnOiAndHJ1ZScsCisgICAgICAgICAgICAnRm9yY2VkSW5jbHVkZUZpbGVzJzogJ2Zp
bGUxO2ZpbGUyO2ZpbGUzJywKKyAgICAgICAgICAgICdGb3JjZWRVc2luZ0ZpbGVzJzogJ2ZpbGUx
O2ZpbGUyO2ZpbGUzJywKKyAgICAgICAgICAgICdHZW5lcmF0ZVByZXByb2Nlc3NlZEZpbGUnOiAn
MScsCisgICAgICAgICAgICAnR2VuZXJhdGVYTUxEb2N1bWVudGF0aW9uRmlsZXMnOiAndHJ1ZScs
CisgICAgICAgICAgICAnSWdub3JlU3RhbmRhcmRJbmNsdWRlUGF0aCc6ICd0cnVlJywKKyAgICAg
ICAgICAgICdJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbic6ICcyJywKKyAgICAgICAgICAgICdLZWVw
Q29tbWVudHMnOiAndHJ1ZScsCisgICAgICAgICAgICAnTWluaW1hbFJlYnVpbGQnOiAndHJ1ZScs
CisgICAgICAgICAgICAnT2JqZWN0RmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAn
T21pdERlZmF1bHRMaWJOYW1lJzogJ3RydWUnLAorICAgICAgICAgICAgJ09taXRGcmFtZVBvaW50
ZXJzJzogJ3RydWUnLAorICAgICAgICAgICAgJ09wZW5NUCc6ICd0cnVlJywKKyAgICAgICAgICAg
ICdPcHRpbWl6YXRpb24nOiAnMycsCisgICAgICAgICAgICAnUHJlY29tcGlsZWRIZWFkZXJGaWxl
JzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdQcmVjb21waWxlZEhlYWRlclRocm91Z2gn
OiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ1ByZXByb2Nlc3NvckRlZmluaXRpb25zJzog
J2QxO2QyO2QzJywKKyAgICAgICAgICAgICdQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZSc6ICdhX2Zp
bGVfbmFtZScsCisgICAgICAgICAgICAnUnVudGltZUxpYnJhcnknOiAnMCcsCisgICAgICAgICAg
ICAnUnVudGltZVR5cGVJbmZvJzogJ3RydWUnLAorICAgICAgICAgICAgJ1Nob3dJbmNsdWRlcyc6
ICd0cnVlJywKKyAgICAgICAgICAgICdTbWFsbGVyVHlwZUNoZWNrJzogJ3RydWUnLAorICAgICAg
ICAgICAgJ1N0cmluZ1Bvb2xpbmcnOiAndHJ1ZScsCisgICAgICAgICAgICAnU3RydWN0TWVtYmVy
QWxpZ25tZW50JzogJzEnLAorICAgICAgICAgICAgJ1N1cHByZXNzU3RhcnR1cEJhbm5lcic6ICd0
cnVlJywKKyAgICAgICAgICAgICdUcmVhdFdDaGFyX3RBc0J1aWx0SW5UeXBlJzogJ3RydWUnLAor
ICAgICAgICAgICAgJ1VuZGVmaW5lQWxsUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMnOiAndHJ1ZScs
CisgICAgICAgICAgICAnVW5kZWZpbmVQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyc6ICdkMTtkMjtk
MycsCisgICAgICAgICAgICAnVXNlRnVsbFBhdGhzJzogJ3RydWUnLAorICAgICAgICAgICAgJ1Vz
ZVByZWNvbXBpbGVkSGVhZGVyJzogJzEnLAorICAgICAgICAgICAgJ1VzZVVuaWNvZGVSZXNwb25z
ZUZpbGVzJzogJ3RydWUnLAorICAgICAgICAgICAgJ1dhcm5Bc0Vycm9yJzogJ3RydWUnLAorICAg
ICAgICAgICAgJ1dhcm5pbmdMZXZlbCc6ICcyJywKKyAgICAgICAgICAgICdXaG9sZVByb2dyYW1P
cHRpbWl6YXRpb24nOiAndHJ1ZScsCisgICAgICAgICAgICAnWE1MRG9jdW1lbnRhdGlvbkZpbGVO
YW1lJzogJ2FfZmlsZV9uYW1lJ30sCisgICAgICAgICdWQ0xpbmtlclRvb2wnOiB7CisgICAgICAg
ICAgICAnQWRkaXRpb25hbERlcGVuZGVuY2llcyc6ICdmaWxlMTtmaWxlMjtmaWxlMycsCisgICAg
ICAgICAgICAnQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyc6ICdmb2xkZXIxO2ZvbGRlcjI7
Zm9sZGVyMycsCisgICAgICAgICAgICAnQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllc19leGNs
dWRlZCc6ICdmb2xkZXIxO2ZvbGRlcjI7Zm9sZGVyMycsCisgICAgICAgICAgICAnQWRkaXRpb25h
bE1hbmlmZXN0RGVwZW5kZW5jaWVzJzogJ2ZpbGUxO2ZpbGUyO2ZpbGUzJywKKyAgICAgICAgICAg
ICdBZGRpdGlvbmFsT3B0aW9ucyc6ICdhX3N0cmluZycsCisgICAgICAgICAgICAnQWRkTW9kdWxl
TmFtZXNUb0Fzc2VtYmx5JzogJ2ZpbGUxO2ZpbGUyO2ZpbGUzJywKKyAgICAgICAgICAgICdBbGxv
d0lzb2xhdGlvbic6ICd0cnVlJywKKyAgICAgICAgICAgICdBc3NlbWJseURlYnVnJzogJzAnLAor
ICAgICAgICAgICAgJ0Fzc2VtYmx5TGlua1Jlc291cmNlJzogJ2ZpbGUxO2ZpbGUyO2ZpbGUzJywK
KyAgICAgICAgICAgICdCYXNlQWRkcmVzcyc6ICdhX3N0cmluZycsCisgICAgICAgICAgICAnQ0xS
SW1hZ2VUeXBlJzogJzEnLAorICAgICAgICAgICAgJ0NMUlRocmVhZEF0dHJpYnV0ZSc6ICcyJywK
KyAgICAgICAgICAgICdDTFJVbm1hbmFnZWRDb2RlQ2hlY2snOiAndHJ1ZScsCisgICAgICAgICAg
ICAnRGF0YUV4ZWN1dGlvblByZXZlbnRpb24nOiAnMCcsCisgICAgICAgICAgICAnRGVsYXlMb2Fk
RExMcyc6ICdmaWxlMTtmaWxlMjtmaWxlMycsCisgICAgICAgICAgICAnRGVsYXlTaWduJzogJ3Ry
dWUnLAorICAgICAgICAgICAgJ0RyaXZlcic6ICcxJywKKyAgICAgICAgICAgICdFbWJlZE1hbmFn
ZWRSZXNvdXJjZUZpbGUnOiAnZmlsZTE7ZmlsZTI7ZmlsZTMnLAorICAgICAgICAgICAgJ0VuYWJs
ZUNPTURBVEZvbGRpbmcnOiAnMCcsCisgICAgICAgICAgICAnRW5hYmxlVUFDJzogJ3RydWUnLAor
ICAgICAgICAgICAgJ0VudHJ5UG9pbnRTeW1ib2wnOiAnYV9zdHJpbmcnLAorICAgICAgICAgICAg
J0Vycm9yUmVwb3J0aW5nJzogJzAnLAorICAgICAgICAgICAgJ0ZpeGVkQmFzZUFkZHJlc3MnOiAn
MScsCisgICAgICAgICAgICAnRm9yY2VTeW1ib2xSZWZlcmVuY2VzJzogJ2ZpbGUxO2ZpbGUyO2Zp
bGUzJywKKyAgICAgICAgICAgICdGdW5jdGlvbk9yZGVyJzogJ2FfZmlsZV9uYW1lJywKKyAgICAg
ICAgICAgICdHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24nOiAndHJ1ZScsCisgICAgICAgICAgICAn
R2VuZXJhdGVNYW5pZmVzdCc6ICd0cnVlJywKKyAgICAgICAgICAgICdHZW5lcmF0ZU1hcEZpbGUn
OiAndHJ1ZScsCisgICAgICAgICAgICAnSGVhcENvbW1pdFNpemUnOiAnYV9zdHJpbmcnLAorICAg
ICAgICAgICAgJ0hlYXBSZXNlcnZlU2l6ZSc6ICdhX3N0cmluZycsCisgICAgICAgICAgICAnSWdu
b3JlQWxsRGVmYXVsdExpYnJhcmllcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdJZ25vcmVEZWZh
dWx0TGlicmFyeU5hbWVzJzogJ2ZpbGUxO2ZpbGUyO2ZpbGUzJywKKyAgICAgICAgICAgICdJZ25v
cmVFbWJlZGRlZElETCc6ICd0cnVlJywKKyAgICAgICAgICAgICdJZ25vcmVJbXBvcnRMaWJyYXJ5
JzogJ3RydWUnLAorICAgICAgICAgICAgJ0ltcG9ydExpYnJhcnknOiAnYV9maWxlX25hbWUnLAor
ICAgICAgICAgICAgJ0tleUNvbnRhaW5lcic6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAn
S2V5RmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnTGFyZ2VBZGRyZXNzQXdhcmUn
OiAnMicsCisgICAgICAgICAgICAnTGlua0luY3JlbWVudGFsJzogJzEnLAorICAgICAgICAgICAg
J0xpbmtMaWJyYXJ5RGVwZW5kZW5jaWVzJzogJ3RydWUnLAorICAgICAgICAgICAgJ0xpbmtUaW1l
Q29kZUdlbmVyYXRpb24nOiAnMicsCisgICAgICAgICAgICAnTWFuaWZlc3RGaWxlJzogJ2FfZmls
ZV9uYW1lJywKKyAgICAgICAgICAgICdNYXBFeHBvcnRzJzogJ3RydWUnLAorICAgICAgICAgICAg
J01hcEZpbGVOYW1lJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdNZXJnZWRJRExCYXNl
RmlsZU5hbWUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ01lcmdlU2VjdGlvbnMnOiAn
YV9zdHJpbmcnLAorICAgICAgICAgICAgJ01pZGxDb21tYW5kRmlsZSc6ICdhX2ZpbGVfbmFtZScs
CisgICAgICAgICAgICAnTW9kdWxlRGVmaW5pdGlvbkZpbGUnOiAnYV9maWxlX25hbWUnLAorICAg
ICAgICAgICAgJ09wdGltaXplRm9yV2luZG93czk4JzogJzEnLAorICAgICAgICAgICAgJ09wdGlt
aXplUmVmZXJlbmNlcyc6ICcwJywKKyAgICAgICAgICAgICdPdXRwdXRGaWxlJzogJ2FfZmlsZV9u
YW1lJywKKyAgICAgICAgICAgICdQZXJVc2VyUmVkaXJlY3Rpb24nOiAndHJ1ZScsCisgICAgICAg
ICAgICAnUHJvZmlsZSc6ICd0cnVlJywKKyAgICAgICAgICAgICdQcm9maWxlR3VpZGVkRGF0YWJh
c2UnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ1Byb2dyYW1EYXRhYmFzZUZpbGUnOiAn
YV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ1JhbmRvbWl6ZWRCYXNlQWRkcmVzcyc6ICcxJywK
KyAgICAgICAgICAgICdSZWdpc3Rlck91dHB1dCc6ICd0cnVlJywKKyAgICAgICAgICAgICdSZXNv
dXJjZU9ubHlETEwnOiAndHJ1ZScsCisgICAgICAgICAgICAnU2V0Q2hlY2tzdW0nOiAndHJ1ZScs
CisgICAgICAgICAgICAnU2hvd1Byb2dyZXNzJzogJzAnLAorICAgICAgICAgICAgJ1N0YWNrQ29t
bWl0U2l6ZSc6ICdhX3N0cmluZycsCisgICAgICAgICAgICAnU3RhY2tSZXNlcnZlU2l6ZSc6ICdh
X3N0cmluZycsCisgICAgICAgICAgICAnU3RyaXBQcml2YXRlU3ltYm9scyc6ICdhX2ZpbGVfbmFt
ZScsCisgICAgICAgICAgICAnU3ViU3lzdGVtJzogJzInLAorICAgICAgICAgICAgJ1N1cHBvcnRV
bmxvYWRPZkRlbGF5TG9hZGVkRExMJzogJ3RydWUnLAorICAgICAgICAgICAgJ1N1cHByZXNzU3Rh
cnR1cEJhbm5lcic6ICd0cnVlJywKKyAgICAgICAgICAgICdTd2FwUnVuRnJvbUNEJzogJ3RydWUn
LAorICAgICAgICAgICAgJ1N3YXBSdW5Gcm9tTmV0JzogJ3RydWUnLAorICAgICAgICAgICAgJ1Rh
cmdldE1hY2hpbmUnOiAnMycsCisgICAgICAgICAgICAnVGVybWluYWxTZXJ2ZXJBd2FyZSc6ICcy
JywKKyAgICAgICAgICAgICdUdXJuT2ZmQXNzZW1ibHlHZW5lcmF0aW9uJzogJ3RydWUnLAorICAg
ICAgICAgICAgJ1R5cGVMaWJyYXJ5RmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAn
VHlwZUxpYnJhcnlSZXNvdXJjZUlEJzogJzMzJywKKyAgICAgICAgICAgICdVQUNFeGVjdXRpb25M
ZXZlbCc6ICcxJywKKyAgICAgICAgICAgICdVQUNVSUFjY2Vzcyc6ICd0cnVlJywKKyAgICAgICAg
ICAgICdVc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0cyc6ICdmYWxzZScsCisgICAgICAgICAgICAn
VXNlVW5pY29kZVJlc3BvbnNlRmlsZXMnOiAndHJ1ZScsCisgICAgICAgICAgICAnVmVyc2lvbic6
ICdhX3N0cmluZyd9LAorICAgICAgICAnVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCc6IHsKKyAgICAg
ICAgICAgICdBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzJzogJ2ZvbGRlcjE7Zm9sZGVyMjtm
b2xkZXIzJywKKyAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6ICdhX3N0cmluZycsCisg
ICAgICAgICAgICAnQ3VsdHVyZSc6ICcxMDAzJywKKyAgICAgICAgICAgICdJZ25vcmVTdGFuZGFy
ZEluY2x1ZGVQYXRoJzogJ3RydWUnLAorICAgICAgICAgICAgJ1ByZXByb2Nlc3NvckRlZmluaXRp
b25zJzogJ2QxO2QyO2QzJywKKyAgICAgICAgICAgICdSZXNvdXJjZU91dHB1dEZpbGVOYW1lJzog
J2Ffc3RyaW5nJywKKyAgICAgICAgICAgICdTaG93UHJvZ3Jlc3MnOiAndHJ1ZScsCisgICAgICAg
ICAgICAnU3VwcHJlc3NTdGFydHVwQmFubmVyJzogJ3RydWUnLAorICAgICAgICAgICAgJ1VuZGVm
aW5lUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMnOiAnZDE7ZDI7ZDMnfSwKKyAgICAgICAgJ1ZDTUlE
TFRvb2wnOiB7CisgICAgICAgICAgICAnQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyc6ICdm
b2xkZXIxO2ZvbGRlcjI7Zm9sZGVyMycsCisgICAgICAgICAgICAnQWRkaXRpb25hbE9wdGlvbnMn
OiAnYV9zdHJpbmcnLAorICAgICAgICAgICAgJ0NQcmVwcm9jZXNzT3B0aW9ucyc6ICdhX3N0cmlu
ZycsCisgICAgICAgICAgICAnRGVmYXVsdENoYXJUeXBlJzogJzAnLAorICAgICAgICAgICAgJ0RM
TERhdGFGaWxlTmFtZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnRW5hYmxlRXJyb3JD
aGVja3MnOiAnMicsCisgICAgICAgICAgICAnRXJyb3JDaGVja0FsbG9jYXRpb25zJzogJ3RydWUn
LAorICAgICAgICAgICAgJ0Vycm9yQ2hlY2tCb3VuZHMnOiAndHJ1ZScsCisgICAgICAgICAgICAn
RXJyb3JDaGVja0VudW1SYW5nZSc6ICd0cnVlJywKKyAgICAgICAgICAgICdFcnJvckNoZWNrUmVm
UG9pbnRlcnMnOiAndHJ1ZScsCisgICAgICAgICAgICAnRXJyb3JDaGVja1N0dWJEYXRhJzogJ3Ry
dWUnLAorICAgICAgICAgICAgJ0dlbmVyYXRlU3R1Ymxlc3NQcm94aWVzJzogJ3RydWUnLAorICAg
ICAgICAgICAgJ0dlbmVyYXRlVHlwZUxpYnJhcnknOiAndHJ1ZScsCisgICAgICAgICAgICAnSGVh
ZGVyRmlsZU5hbWUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ0lnbm9yZVN0YW5kYXJk
SW5jbHVkZVBhdGgnOiAndHJ1ZScsCisgICAgICAgICAgICAnSW50ZXJmYWNlSWRlbnRpZmllckZp
bGVOYW1lJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdNa1R5cExpYkNvbXBhdGlibGUn
OiAndHJ1ZScsCisgICAgICAgICAgICAnT3V0cHV0RGlyZWN0b3J5JzogJ2Ffc3RyaW5nJywKKyAg
ICAgICAgICAgICdQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyc6ICdkMTtkMjtkMycsCisgICAgICAg
ICAgICAnUHJveHlGaWxlTmFtZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnUmVkaXJl
Y3RPdXRwdXRBbmRFcnJvcnMnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ1N0cnVjdE1l
bWJlckFsaWdubWVudCc6ICczJywKKyAgICAgICAgICAgICdTdXBwcmVzc1N0YXJ0dXBCYW5uZXIn
OiAndHJ1ZScsCisgICAgICAgICAgICAnVGFyZ2V0RW52aXJvbm1lbnQnOiAnMScsCisgICAgICAg
ICAgICAnVHlwZUxpYnJhcnlOYW1lJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdVbmRl
ZmluZVByZXByb2Nlc3NvckRlZmluaXRpb25zJzogJ2QxO2QyO2QzJywKKyAgICAgICAgICAgICdW
YWxpZGF0ZVBhcmFtZXRlcnMnOiAndHJ1ZScsCisgICAgICAgICAgICAnV2FybkFzRXJyb3InOiAn
dHJ1ZScsCisgICAgICAgICAgICAnV2FybmluZ0xldmVsJzogJzQnfSwKKyAgICAgICAgJ1ZDTGli
cmFyaWFuVG9vbCc6IHsKKyAgICAgICAgICAgICdBZGRpdGlvbmFsRGVwZW5kZW5jaWVzJzogJ2Zp
bGUxO2ZpbGUyO2ZpbGUzJywKKyAgICAgICAgICAgICdBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9y
aWVzJzogJ2ZvbGRlcjE7Zm9sZGVyMjtmb2xkZXIzJywKKyAgICAgICAgICAgICdBZGRpdGlvbmFs
TGlicmFyeURpcmVjdG9yaWVzX2V4Y2x1ZGVkJzogJ2ZvbGRlcjE7Zm9sZGVyMjtmb2xkZXIzJywK
KyAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6ICdhX3N0cmluZycsCisgICAgICAgICAg
ICAnRXhwb3J0TmFtZWRGdW5jdGlvbnMnOiAnZDE7ZDI7ZDMnLAorICAgICAgICAgICAgJ0ZvcmNl
U3ltYm9sUmVmZXJlbmNlcyc6ICdhX3N0cmluZycsCisgICAgICAgICAgICAnSWdub3JlQWxsRGVm
YXVsdExpYnJhcmllcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdJZ25vcmVTcGVjaWZpY0RlZmF1
bHRMaWJyYXJpZXMnOiAnZmlsZTE7ZmlsZTI7ZmlsZTMnLAorICAgICAgICAgICAgJ0xpbmtMaWJy
YXJ5RGVwZW5kZW5jaWVzJzogJ3RydWUnLAorICAgICAgICAgICAgJ01vZHVsZURlZmluaXRpb25G
aWxlJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdPdXRwdXRGaWxlJzogJ2FfZmlsZV9u
YW1lJywKKyAgICAgICAgICAgICdTdXBwcmVzc1N0YXJ0dXBCYW5uZXInOiAndHJ1ZScsCisgICAg
ICAgICAgICAnVXNlVW5pY29kZVJlc3BvbnNlRmlsZXMnOiAndHJ1ZSd9LAorICAgICAgICAnVkNN
YW5pZmVzdFRvb2wnOiB7CisgICAgICAgICAgICAnQWRkaXRpb25hbE1hbmlmZXN0RmlsZXMnOiAn
ZmlsZTE7ZmlsZTI7ZmlsZTMnLAorICAgICAgICAgICAgJ0FkZGl0aW9uYWxPcHRpb25zJzogJ2Ff
c3RyaW5nJywKKyAgICAgICAgICAgICdBc3NlbWJseUlkZW50aXR5JzogJ2Ffc3RyaW5nJywKKyAg
ICAgICAgICAgICdDb21wb25lbnRGaWxlTmFtZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAg
ICAnRGVwZW5kZW5jeUluZm9ybWF0aW9uRmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAg
ICAnRW1iZWRNYW5pZmVzdCc6ICd0cnVlJywKKyAgICAgICAgICAgICdHZW5lcmF0ZUNhdGFsb2dG
aWxlcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdJbnB1dFJlc291cmNlTWFuaWZlc3RzJzogJ2Ff
c3RyaW5nJywKKyAgICAgICAgICAgICdNYW5pZmVzdFJlc291cmNlRmlsZSc6ICdteV9uYW1lJywK
KyAgICAgICAgICAgICdPdXRwdXRNYW5pZmVzdEZpbGUnOiAnYV9maWxlX25hbWUnLAorICAgICAg
ICAgICAgJ1JlZ2lzdHJhclNjcmlwdEZpbGUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAg
J1JlcGxhY2VtZW50c0ZpbGUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ1N1cHByZXNz
U3RhcnR1cEJhbm5lcic6ICd0cnVlJywKKyAgICAgICAgICAgICdUeXBlTGlicmFyeUZpbGUnOiAn
YV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ1VwZGF0ZUZpbGVIYXNoZXMnOiAndHJ1ZScsCisg
ICAgICAgICAgICAnVXBkYXRlRmlsZUhhc2hlc1NlYXJjaFBhdGgnOiAnYV9maWxlX25hbWUnLAor
ICAgICAgICAgICAgJ1VzZUZBVDMyV29ya2Fyb3VuZCc6ICd0cnVlJywKKyAgICAgICAgICAgICdV
c2VVbmljb2RlUmVzcG9uc2VGaWxlcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdWZXJib3NlT3V0
cHV0JzogJ3RydWUnfX0KKyAgICBleHBlY3RlZF9tc2J1aWxkX3NldHRpbmdzID0geworICAgICAg
ICAnQ2xDb21waWxlJzogeworICAgICAgICAgICAgJ0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMnOiAnZm9sZGVyMTtmb2xkZXIyO2ZvbGRlcjMnLAorICAgICAgICAgICAgJ0FkZGl0aW9uYWxP
cHRpb25zJzogJ2Ffc3RyaW5nIC9KJywKKyAgICAgICAgICAgICdBZGRpdGlvbmFsVXNpbmdEaXJl
Y3Rvcmllcyc6ICdmb2xkZXIxO2ZvbGRlcjI7Zm9sZGVyMycsCisgICAgICAgICAgICAnQXNzZW1i
bGVyTGlzdGluZ0xvY2F0aW9uJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdBc3NlbWJs
ZXJPdXRwdXQnOiAnTm9MaXN0aW5nJywKKyAgICAgICAgICAgICdCYXNpY1J1bnRpbWVDaGVja3Mn
OiAnU3RhY2tGcmFtZVJ1bnRpbWVDaGVjaycsCisgICAgICAgICAgICAnQnJvd3NlSW5mb3JtYXRp
b24nOiAndHJ1ZScsCisgICAgICAgICAgICAnQnJvd3NlSW5mb3JtYXRpb25GaWxlJzogJ2FfZmls
ZV9uYW1lJywKKyAgICAgICAgICAgICdCdWZmZXJTZWN1cml0eUNoZWNrJzogJ3RydWUnLAorICAg
ICAgICAgICAgJ0NhbGxpbmdDb252ZW50aW9uJzogJ0NkZWNsJywKKyAgICAgICAgICAgICdDb21w
aWxlQXMnOiAnQ29tcGlsZUFzQycsCisgICAgICAgICAgICAnRGVidWdJbmZvcm1hdGlvbkZvcm1h
dCc6ICdFZGl0QW5kQ29udGludWUnLAorICAgICAgICAgICAgJ0Rpc2FibGVMYW5ndWFnZUV4dGVu
c2lvbnMnOiAndHJ1ZScsCisgICAgICAgICAgICAnRGlzYWJsZVNwZWNpZmljV2FybmluZ3MnOiAn
ZDE7ZDI7ZDMnLAorICAgICAgICAgICAgJ0VuYWJsZUVuaGFuY2VkSW5zdHJ1Y3Rpb25TZXQnOiAn
Tm90U2V0JywKKyAgICAgICAgICAgICdFbmFibGVGaWJlclNhZmVPcHRpbWl6YXRpb25zJzogJ3Ry
dWUnLAorICAgICAgICAgICAgJ0VuYWJsZVBSRWZhc3QnOiAndHJ1ZScsCisgICAgICAgICAgICAn
RXJyb3JSZXBvcnRpbmcnOiAnUHJvbXB0JywKKyAgICAgICAgICAgICdFeGNlcHRpb25IYW5kbGlu
Zyc6ICAnQXN5bmMnLAorICAgICAgICAgICAgJ0V4cGFuZEF0dHJpYnV0ZWRTb3VyY2UnOiAndHJ1
ZScsCisgICAgICAgICAgICAnRmF2b3JTaXplT3JTcGVlZCc6ICdOZWl0aGVyJywKKyAgICAgICAg
ICAgICdGbG9hdGluZ1BvaW50RXhjZXB0aW9ucyc6ICd0cnVlJywKKyAgICAgICAgICAgICdGbG9h
dGluZ1BvaW50TW9kZWwnOiAnU3RyaWN0JywKKyAgICAgICAgICAgICdGb3JjZUNvbmZvcm1hbmNl
SW5Gb3JMb29wU2NvcGUnOiAndHJ1ZScsCisgICAgICAgICAgICAnRm9yY2VkSW5jbHVkZUZpbGVz
JzogJ2ZpbGUxO2ZpbGUyO2ZpbGUzJywKKyAgICAgICAgICAgICdGb3JjZWRVc2luZ0ZpbGVzJzog
J2ZpbGUxO2ZpbGUyO2ZpbGUzJywKKyAgICAgICAgICAgICdGdW5jdGlvbkxldmVsTGlua2luZyc6
ICd0cnVlJywKKyAgICAgICAgICAgICdHZW5lcmF0ZVhNTERvY3VtZW50YXRpb25GaWxlcyc6ICd0
cnVlJywKKyAgICAgICAgICAgICdJZ25vcmVTdGFuZGFyZEluY2x1ZGVQYXRoJzogJ3RydWUnLAor
ICAgICAgICAgICAgJ0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uJzogJ0FueVN1aXRhYmxlJywKKyAg
ICAgICAgICAgICdJbnRyaW5zaWNGdW5jdGlvbnMnOiAndHJ1ZScsCisgICAgICAgICAgICAnTWlu
aW1hbFJlYnVpbGQnOiAndHJ1ZScsCisgICAgICAgICAgICAnT2JqZWN0RmlsZU5hbWUnOiAnYV9m
aWxlX25hbWUnLAorICAgICAgICAgICAgJ09taXREZWZhdWx0TGliTmFtZSc6ICd0cnVlJywKKyAg
ICAgICAgICAgICdPbWl0RnJhbWVQb2ludGVycyc6ICd0cnVlJywKKyAgICAgICAgICAgICdPcGVu
TVBTdXBwb3J0JzogJ3RydWUnLAorICAgICAgICAgICAgJ09wdGltaXphdGlvbic6ICdGdWxsJywK
KyAgICAgICAgICAgICdQcmVjb21waWxlZEhlYWRlcic6ICdDcmVhdGUnLAorICAgICAgICAgICAg
J1ByZWNvbXBpbGVkSGVhZGVyRmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnUHJl
Y29tcGlsZWRIZWFkZXJPdXRwdXRGaWxlJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdQ
cmVwcm9jZXNzS2VlcENvbW1lbnRzJzogJ3RydWUnLAorICAgICAgICAgICAgJ1ByZXByb2Nlc3Nv
ckRlZmluaXRpb25zJzogJ2QxO2QyO2QzJywKKyAgICAgICAgICAgICdQcmVwcm9jZXNzU3VwcHJl
c3NMaW5lTnVtYmVycyc6ICdmYWxzZScsCisgICAgICAgICAgICAnUHJlcHJvY2Vzc1RvRmlsZSc6
ICd0cnVlJywKKyAgICAgICAgICAgICdQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZSc6ICdhX2ZpbGVf
bmFtZScsCisgICAgICAgICAgICAnUnVudGltZUxpYnJhcnknOiAnTXVsdGlUaHJlYWRlZCcsCisg
ICAgICAgICAgICAnUnVudGltZVR5cGVJbmZvJzogJ3RydWUnLAorICAgICAgICAgICAgJ1Nob3dJ
bmNsdWRlcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdTbWFsbGVyVHlwZUNoZWNrJzogJ3RydWUn
LAorICAgICAgICAgICAgJ1N0cmluZ1Bvb2xpbmcnOiAndHJ1ZScsCisgICAgICAgICAgICAnU3Ry
dWN0TWVtYmVyQWxpZ25tZW50JzogJzFCeXRlJywKKyAgICAgICAgICAgICdTdXBwcmVzc1N0YXJ0
dXBCYW5uZXInOiAndHJ1ZScsCisgICAgICAgICAgICAnVHJlYXRXYXJuaW5nQXNFcnJvcic6ICd0
cnVlJywKKyAgICAgICAgICAgICdUcmVhdFdDaGFyX3RBc0J1aWx0SW5UeXBlJzogJ3RydWUnLAor
ICAgICAgICAgICAgJ1VuZGVmaW5lQWxsUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMnOiAndHJ1ZScs
CisgICAgICAgICAgICAnVW5kZWZpbmVQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyc6ICdkMTtkMjtk
MycsCisgICAgICAgICAgICAnVXNlRnVsbFBhdGhzJzogJ3RydWUnLAorICAgICAgICAgICAgJ1dh
cm5pbmdMZXZlbCc6ICdMZXZlbDInLAorICAgICAgICAgICAgJ1dob2xlUHJvZ3JhbU9wdGltaXph
dGlvbic6ICd0cnVlJywKKyAgICAgICAgICAgICdYTUxEb2N1bWVudGF0aW9uRmlsZU5hbWUnOiAn
YV9maWxlX25hbWUnfSwKKyAgICAgICAgJ0xpbmsnOiB7CisgICAgICAgICAgICAnQWRkaXRpb25h
bERlcGVuZGVuY2llcyc6ICdmaWxlMTtmaWxlMjtmaWxlMycsCisgICAgICAgICAgICAnQWRkaXRp
b25hbExpYnJhcnlEaXJlY3Rvcmllcyc6ICdmb2xkZXIxO2ZvbGRlcjI7Zm9sZGVyMycsCisgICAg
ICAgICAgICAnQWRkaXRpb25hbE1hbmlmZXN0RGVwZW5kZW5jaWVzJzogJ2ZpbGUxO2ZpbGUyO2Zp
bGUzJywKKyAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6ICdhX3N0cmluZycsCisgICAg
ICAgICAgICAnQWRkTW9kdWxlTmFtZXNUb0Fzc2VtYmx5JzogJ2ZpbGUxO2ZpbGUyO2ZpbGUzJywK
KyAgICAgICAgICAgICdBbGxvd0lzb2xhdGlvbic6ICd0cnVlJywKKyAgICAgICAgICAgICdBc3Nl
bWJseURlYnVnJzogJycsCisgICAgICAgICAgICAnQXNzZW1ibHlMaW5rUmVzb3VyY2UnOiAnZmls
ZTE7ZmlsZTI7ZmlsZTMnLAorICAgICAgICAgICAgJ0Jhc2VBZGRyZXNzJzogJ2Ffc3RyaW5nJywK
KyAgICAgICAgICAgICdDTFJJbWFnZVR5cGUnOiAnRm9yY2VJSldJbWFnZScsCisgICAgICAgICAg
ICAnQ0xSVGhyZWFkQXR0cmlidXRlJzogJ1NUQVRocmVhZGluZ0F0dHJpYnV0ZScsCisgICAgICAg
ICAgICAnQ0xSVW5tYW5hZ2VkQ29kZUNoZWNrJzogJ3RydWUnLAorICAgICAgICAgICAgJ0RhdGFF
eGVjdXRpb25QcmV2ZW50aW9uJzogICcnLAorICAgICAgICAgICAgJ0RlbGF5TG9hZERMTHMnOiAn
ZmlsZTE7ZmlsZTI7ZmlsZTMnLAorICAgICAgICAgICAgJ0RlbGF5U2lnbic6ICd0cnVlJywKKyAg
ICAgICAgICAgICdEcml2ZXInOiAnRHJpdmVyJywKKyAgICAgICAgICAgICdFbWJlZE1hbmFnZWRS
ZXNvdXJjZUZpbGUnOiAnZmlsZTE7ZmlsZTI7ZmlsZTMnLAorICAgICAgICAgICAgJ0VuYWJsZUNP
TURBVEZvbGRpbmcnOiAnJywKKyAgICAgICAgICAgICdFbmFibGVVQUMnOiAndHJ1ZScsCisgICAg
ICAgICAgICAnRW50cnlQb2ludFN5bWJvbCc6ICdhX3N0cmluZycsCisgICAgICAgICAgICAnRml4
ZWRCYXNlQWRkcmVzcyc6ICdmYWxzZScsCisgICAgICAgICAgICAnRm9yY2VTeW1ib2xSZWZlcmVu
Y2VzJzogJ2ZpbGUxO2ZpbGUyO2ZpbGUzJywKKyAgICAgICAgICAgICdGdW5jdGlvbk9yZGVyJzog
J2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24nOiAn
dHJ1ZScsCisgICAgICAgICAgICAnR2VuZXJhdGVNYXBGaWxlJzogJ3RydWUnLAorICAgICAgICAg
ICAgJ0hlYXBDb21taXRTaXplJzogJ2Ffc3RyaW5nJywKKyAgICAgICAgICAgICdIZWFwUmVzZXJ2
ZVNpemUnOiAnYV9zdHJpbmcnLAorICAgICAgICAgICAgJ0lnbm9yZUFsbERlZmF1bHRMaWJyYXJp
ZXMnOiAndHJ1ZScsCisgICAgICAgICAgICAnSWdub3JlRW1iZWRkZWRJREwnOiAndHJ1ZScsCisg
ICAgICAgICAgICAnSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzJzogJ2ZpbGUxO2ZpbGUy
O2ZpbGUzJywKKyAgICAgICAgICAgICdJbXBvcnRMaWJyYXJ5JzogJ2FfZmlsZV9uYW1lJywKKyAg
ICAgICAgICAgICdLZXlDb250YWluZXInOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ0tl
eUZpbGUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ0xhcmdlQWRkcmVzc0F3YXJlJzog
J3RydWUnLAorICAgICAgICAgICAgJ0xpbmtFcnJvclJlcG9ydGluZyc6ICdOb0Vycm9yUmVwb3J0
JywKKyAgICAgICAgICAgICdMaW5rVGltZUNvZGVHZW5lcmF0aW9uJzogJ1BHSW5zdHJ1bWVudCcs
CisgICAgICAgICAgICAnTWFuaWZlc3RGaWxlJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAg
ICdNYXBFeHBvcnRzJzogJ3RydWUnLAorICAgICAgICAgICAgJ01hcEZpbGVOYW1lJzogJ2FfZmls
ZV9uYW1lJywKKyAgICAgICAgICAgICdNZXJnZWRJRExCYXNlRmlsZU5hbWUnOiAnYV9maWxlX25h
bWUnLAorICAgICAgICAgICAgJ01lcmdlU2VjdGlvbnMnOiAnYV9zdHJpbmcnLAorICAgICAgICAg
ICAgJ01pZGxDb21tYW5kRmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnTW9kdWxl
RGVmaW5pdGlvbkZpbGUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ05vRW50cnlQb2lu
dCc6ICd0cnVlJywKKyAgICAgICAgICAgICdPcHRpbWl6ZVJlZmVyZW5jZXMnOiAnJywKKyAgICAg
ICAgICAgICdPdXRwdXRGaWxlJzogJ2FfZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdQZXJVc2Vy
UmVkaXJlY3Rpb24nOiAndHJ1ZScsCisgICAgICAgICAgICAnUHJvZmlsZSc6ICd0cnVlJywKKyAg
ICAgICAgICAgICdQcm9maWxlR3VpZGVkRGF0YWJhc2UnOiAnYV9maWxlX25hbWUnLAorICAgICAg
ICAgICAgJ1Byb2dyYW1EYXRhYmFzZUZpbGUnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAg
J1JhbmRvbWl6ZWRCYXNlQWRkcmVzcyc6ICdmYWxzZScsCisgICAgICAgICAgICAnUmVnaXN0ZXJP
dXRwdXQnOiAndHJ1ZScsCisgICAgICAgICAgICAnU2V0Q2hlY2tzdW0nOiAndHJ1ZScsCisgICAg
ICAgICAgICAnU2hvd1Byb2dyZXNzJzogJ05vdFNldCcsCisgICAgICAgICAgICAnU3RhY2tDb21t
aXRTaXplJzogJ2Ffc3RyaW5nJywKKyAgICAgICAgICAgICdTdGFja1Jlc2VydmVTaXplJzogJ2Ff
c3RyaW5nJywKKyAgICAgICAgICAgICdTdHJpcFByaXZhdGVTeW1ib2xzJzogJ2FfZmlsZV9uYW1l
JywKKyAgICAgICAgICAgICdTdWJTeXN0ZW0nOiAnV2luZG93cycsCisgICAgICAgICAgICAnU3Vw
cG9ydFVubG9hZE9mRGVsYXlMb2FkZWRETEwnOiAndHJ1ZScsCisgICAgICAgICAgICAnU3VwcHJl
c3NTdGFydHVwQmFubmVyJzogJ3RydWUnLAorICAgICAgICAgICAgJ1N3YXBSdW5Gcm9tQ0QnOiAn
dHJ1ZScsCisgICAgICAgICAgICAnU3dhcFJ1bkZyb21ORVQnOiAndHJ1ZScsCisgICAgICAgICAg
ICAnVGFyZ2V0TWFjaGluZSc6ICdNYWNoaW5lQVJNJywKKyAgICAgICAgICAgICdUZXJtaW5hbFNl
cnZlckF3YXJlJzogJ3RydWUnLAorICAgICAgICAgICAgJ1R1cm5PZmZBc3NlbWJseUdlbmVyYXRp
b24nOiAndHJ1ZScsCisgICAgICAgICAgICAnVHlwZUxpYnJhcnlGaWxlJzogJ2FfZmlsZV9uYW1l
JywKKyAgICAgICAgICAgICdUeXBlTGlicmFyeVJlc291cmNlSUQnOiAnMzMnLAorICAgICAgICAg
ICAgJ1VBQ0V4ZWN1dGlvbkxldmVsJzogJ0hpZ2hlc3RBdmFpbGFibGUnLAorICAgICAgICAgICAg
J1VBQ1VJQWNjZXNzJzogJ3RydWUnLAorICAgICAgICAgICAgJ1ZlcnNpb24nOiAnYV9zdHJpbmcn
fSwKKyAgICAgICAgJ1Jlc291cmNlQ29tcGlsZSc6IHsKKyAgICAgICAgICAgICdBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzJzogJ2ZvbGRlcjE7Zm9sZGVyMjtmb2xkZXIzJywKKyAgICAgICAg
ICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6ICdhX3N0cmluZycsCisgICAgICAgICAgICAnQ3VsdHVy
ZSc6ICcweDAzZWInLAorICAgICAgICAgICAgJ0lnbm9yZVN0YW5kYXJkSW5jbHVkZVBhdGgnOiAn
dHJ1ZScsCisgICAgICAgICAgICAnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMnOiAnZDE7ZDI7ZDMn
LAorICAgICAgICAgICAgJ1Jlc291cmNlT3V0cHV0RmlsZU5hbWUnOiAnYV9zdHJpbmcnLAorICAg
ICAgICAgICAgJ1Nob3dQcm9ncmVzcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdTdXBwcmVzc1N0
YXJ0dXBCYW5uZXInOiAndHJ1ZScsCisgICAgICAgICAgICAnVW5kZWZpbmVQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyc6ICdkMTtkMjtkMyd9LAorICAgICAgICAnTWlkbCc6IHsKKyAgICAgICAgICAg
ICdBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzJzogJ2ZvbGRlcjE7Zm9sZGVyMjtmb2xkZXIz
JywKKyAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6ICdhX3N0cmluZycsCisgICAgICAg
ICAgICAnQ1ByZXByb2Nlc3NPcHRpb25zJzogJ2Ffc3RyaW5nJywKKyAgICAgICAgICAgICdEZWZh
dWx0Q2hhclR5cGUnOiAgJ1Vuc2lnbmVkJywKKyAgICAgICAgICAgICdEbGxEYXRhRmlsZU5hbWUn
OiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ0VuYWJsZUVycm9yQ2hlY2tzJzogJ0FsbCcs
CisgICAgICAgICAgICAnRXJyb3JDaGVja0FsbG9jYXRpb25zJzogJ3RydWUnLAorICAgICAgICAg
ICAgJ0Vycm9yQ2hlY2tCb3VuZHMnOiAndHJ1ZScsCisgICAgICAgICAgICAnRXJyb3JDaGVja0Vu
dW1SYW5nZSc6ICd0cnVlJywKKyAgICAgICAgICAgICdFcnJvckNoZWNrUmVmUG9pbnRlcnMnOiAn
dHJ1ZScsCisgICAgICAgICAgICAnRXJyb3JDaGVja1N0dWJEYXRhJzogJ3RydWUnLAorICAgICAg
ICAgICAgJ0dlbmVyYXRlU3R1Ymxlc3NQcm94aWVzJzogJ3RydWUnLAorICAgICAgICAgICAgJ0dl
bmVyYXRlVHlwZUxpYnJhcnknOiAndHJ1ZScsCisgICAgICAgICAgICAnSGVhZGVyRmlsZU5hbWUn
OiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ0lnbm9yZVN0YW5kYXJkSW5jbHVkZVBhdGgn
OiAndHJ1ZScsCisgICAgICAgICAgICAnSW50ZXJmYWNlSWRlbnRpZmllckZpbGVOYW1lJzogJ2Ff
ZmlsZV9uYW1lJywKKyAgICAgICAgICAgICdNa1R5cExpYkNvbXBhdGlibGUnOiAndHJ1ZScsCisg
ICAgICAgICAgICAnT3V0cHV0RGlyZWN0b3J5JzogJ2Ffc3RyaW5nJywKKyAgICAgICAgICAgICdQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyc6ICdkMTtkMjtkMycsCisgICAgICAgICAgICAnUHJveHlG
aWxlTmFtZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnUmVkaXJlY3RPdXRwdXRBbmRF
cnJvcnMnOiAnYV9maWxlX25hbWUnLAorICAgICAgICAgICAgJ1N0cnVjdE1lbWJlckFsaWdubWVu
dCc6ICc0JywKKyAgICAgICAgICAgICdTdXBwcmVzc1N0YXJ0dXBCYW5uZXInOiAndHJ1ZScsCisg
ICAgICAgICAgICAnVGFyZ2V0RW52aXJvbm1lbnQnOiAnV2luMzInLAorICAgICAgICAgICAgJ1R5
cGVMaWJyYXJ5TmFtZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnVW5kZWZpbmVQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucyc6ICdkMTtkMjtkMycsCisgICAgICAgICAgICAnVmFsaWRhdGVB
bGxQYXJhbWV0ZXJzJzogJ3RydWUnLAorICAgICAgICAgICAgJ1dhcm5Bc0Vycm9yJzogJ3RydWUn
LAorICAgICAgICAgICAgJ1dhcm5pbmdMZXZlbCc6ICc0J30sCisgICAgICAgICdMaWInOiB7Cisg
ICAgICAgICAgICAnQWRkaXRpb25hbERlcGVuZGVuY2llcyc6ICdmaWxlMTtmaWxlMjtmaWxlMycs
CisgICAgICAgICAgICAnQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyc6ICdmb2xkZXIxO2Zv
bGRlcjI7Zm9sZGVyMycsCisgICAgICAgICAgICAnQWRkaXRpb25hbE9wdGlvbnMnOiAnYV9zdHJp
bmcnLAorICAgICAgICAgICAgJ0V4cG9ydE5hbWVkRnVuY3Rpb25zJzogJ2QxO2QyO2QzJywKKyAg
ICAgICAgICAgICdGb3JjZVN5bWJvbFJlZmVyZW5jZXMnOiAnYV9zdHJpbmcnLAorICAgICAgICAg
ICAgJ0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXMnOiAndHJ1ZScsCisgICAgICAgICAgICAnSWdu
b3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzJzogJ2ZpbGUxO2ZpbGUyO2ZpbGUzJywKKyAgICAg
ICAgICAgICdNb2R1bGVEZWZpbml0aW9uRmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAg
ICAnT3V0cHV0RmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnU3VwcHJlc3NTdGFy
dHVwQmFubmVyJzogJ3RydWUnLAorICAgICAgICAgICAgJ1VzZVVuaWNvZGVSZXNwb25zZUZpbGVz
JzogJ3RydWUnfSwKKyAgICAgICAgJ010JzogeworICAgICAgICAgICAgJ0FkZGl0aW9uYWxNYW5p
ZmVzdEZpbGVzJzogJ2ZpbGUxO2ZpbGUyO2ZpbGUzJywKKyAgICAgICAgICAgICdBZGRpdGlvbmFs
T3B0aW9ucyc6ICdhX3N0cmluZycsCisgICAgICAgICAgICAnQXNzZW1ibHlJZGVudGl0eSc6ICdh
X3N0cmluZycsCisgICAgICAgICAgICAnQ29tcG9uZW50RmlsZU5hbWUnOiAnYV9maWxlX25hbWUn
LAorICAgICAgICAgICAgJ0dlbmVyYXRlQ2F0YWxvZ0ZpbGVzJzogJ3RydWUnLAorICAgICAgICAg
ICAgJ0lucHV0UmVzb3VyY2VNYW5pZmVzdHMnOiAnYV9zdHJpbmcnLAorICAgICAgICAgICAgJ091
dHB1dE1hbmlmZXN0RmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnUmVnaXN0cmFy
U2NyaXB0RmlsZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnUmVwbGFjZW1lbnRzRmls
ZSc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnU3VwcHJlc3NTdGFydHVwQmFubmVyJzog
J3RydWUnLAorICAgICAgICAgICAgJ1R5cGVMaWJyYXJ5RmlsZSc6ICdhX2ZpbGVfbmFtZScsCisg
ICAgICAgICAgICAnVXBkYXRlRmlsZUhhc2hlcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdVcGRh
dGVGaWxlSGFzaGVzU2VhcmNoUGF0aCc6ICdhX2ZpbGVfbmFtZScsCisgICAgICAgICAgICAnVmVy
Ym9zZU91dHB1dCc6ICd0cnVlJ30sCisgICAgICAgICdNYW5pZmVzdFJlc291cmNlQ29tcGlsZSc6
IHsKKyAgICAgICAgICAgICdSZXNvdXJjZU91dHB1dEZpbGVOYW1lJzogJ215X25hbWUnfSwKKyAg
ICAgICAgJ1Byb2plY3RSZWZlcmVuY2UnOiB7CisgICAgICAgICAgICAnTGlua0xpYnJhcnlEZXBl
bmRlbmNpZXMnOiAndHJ1ZScsCisgICAgICAgICAgICAnVXNlTGlicmFyeURlcGVuZGVuY3lJbnB1
dHMnOiAnZmFsc2UnfSwKKyAgICAgICAgJyc6IHsKKyAgICAgICAgICAgICdFbWJlZE1hbmlmZXN0
JzogJ3RydWUnLAorICAgICAgICAgICAgJ0dlbmVyYXRlTWFuaWZlc3QnOiAndHJ1ZScsCisgICAg
ICAgICAgICAnSWdub3JlSW1wb3J0TGlicmFyeSc6ICd0cnVlJywKKyAgICAgICAgICAgICdMaW5r
SW5jcmVtZW50YWwnOiAnZmFsc2UnfX0KKyAgICBhY3R1YWxfbXNidWlsZF9zZXR0aW5ncyA9IE1T
VlNTZXR0aW5ncy5Db252ZXJ0VG9Nc0J1aWxkU2V0dGluZ3MoCisgICAgICAgIG1zdnNfc2V0dGlu
Z3MsCisgICAgICAgIHNlbGYuc3RkZXJyKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRf
bXNidWlsZF9zZXR0aW5ncywgYWN0dWFsX21zYnVpbGRfc2V0dGluZ3MpCisgICAgc2VsZi5fRXhw
ZWN0ZWRXYXJuaW5ncyhbXSkKKworICBkZWYgdGVzdF9Db252ZXJ0VG9Nc0J1aWxkU2V0dGluZ3Nf
YWN0dWFsKHNlbGYpOgorICAgICIiIiBUZXN0cyB0aGUgY29udmVyc2lvbiBvZiBhbiBhY3R1YWwg
cHJvamVjdC4KKworICAgIEEgVlMyMDA4IHByb2plY3Qgd2l0aCBtb3N0IG9mIHRoZSBvcHRpb25z
IGRlZmluZWQgd2FzIGNyZWF0ZWQgdGhyb3VnaCB0aGUKKyAgICBWUzIwMDggSURFLiAgSXQgd2Fz
IHRoZW4gY29udmVydGVkIHRvIFZTMjAxMC4gIFRoZSB0b29sIHNldHRpbmdzIGZvdW5kIGluCisg
ICAgdGhlIC52Y3Byb2ogYW5kIC52Y3hwcm9qIGZpbGVzIHdlcmUgY29udmVydGVkIHRvIHRoZSB0
d28gZGljdGlvbmFyaWVzCisgICAgbXN2c19zZXR0aW5ncyBhbmQgZXhwZWN0ZWRfbXNidWlsZF9z
ZXR0aW5ncy4KKworICAgIE5vdGUgdGhhdCBmb3IgbWFueSBzZXR0aW5ncywgdGhlIFZTMjAxMCBj
b252ZXJ0ZXIgYWRkcyBtYWNyb3MgbGlrZQorICAgICUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcykgdG8gbWFrZSBzdXJlIHRoYW4gaW5oZXJpdGVkIHZhbHVlcyBhcmUKKyAgICBpbmNsdWRl
ZC4gIFNpbmNlIHRoZSBHeXAgcHJvamVjdHMgd2UgZ2VuZXJhdGUgZG8gbm90IHVzZSBpbmhlcml0
YW5jZSwKKyAgICB3ZSByZW1vdmVkIHRoZXNlIG1hY3Jvcy4gIFRoZXkgd2VyZToKKyAgICAgICAg
Q2xDb21waWxlOgorICAgICAgICAgICAgQWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllczogICc7
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKScKKyAgICAgICAgICAgIEFkZGl0aW9uYWxP
cHRpb25zOiAgJyAlKEFkZGl0aW9uYWxPcHRpb25zKScKKyAgICAgICAgICAgIEFkZGl0aW9uYWxV
c2luZ0RpcmVjdG9yaWVzOiAgJzslKEFkZGl0aW9uYWxVc2luZ0RpcmVjdG9yaWVzKScKKyAgICAg
ICAgICAgIERpc2FibGVTcGVjaWZpY1dhcm5pbmdzOiAnOyUoRGlzYWJsZVNwZWNpZmljV2Fybmlu
Z3MpJywKKyAgICAgICAgICAgIEZvcmNlZEluY2x1ZGVGaWxlczogICc7JShGb3JjZWRJbmNsdWRl
RmlsZXMpJywKKyAgICAgICAgICAgIEZvcmNlZFVzaW5nRmlsZXM6ICAnOyUoRm9yY2VkVXNpbmdG
aWxlcyknLAorICAgICAgICAgICAgUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM6ICAnOyUoUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnMpJywKKyAgICAgICAgICAgIFVuZGVmaW5lUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM6CisgICAgICAgICAgICAgICAgJzslKFVuZGVmaW5lUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnMpJywKKyAgICAgICAgTGluazoKKyAgICAgICAgICAgIEFkZGl0aW9uYWxEZXBlbmRlbmNp
ZXM6ICAnOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyknLAorICAgICAgICAgICAgQWRkaXRpb25h
bExpYnJhcnlEaXJlY3RvcmllczogICc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKScs
CisgICAgICAgICAgICBBZGRpdGlvbmFsTWFuaWZlc3REZXBlbmRlbmNpZXM6CisgICAgICAgICAg
ICAgICAgJzslKEFkZGl0aW9uYWxNYW5pZmVzdERlcGVuZGVuY2llcyknLAorICAgICAgICAgICAg
QWRkaXRpb25hbE9wdGlvbnM6ICAnICUoQWRkaXRpb25hbE9wdGlvbnMpJywKKyAgICAgICAgICAg
IEFkZE1vZHVsZU5hbWVzVG9Bc3NlbWJseTogICc7JShBZGRNb2R1bGVOYW1lc1RvQXNzZW1ibHkp
JywKKyAgICAgICAgICAgIEFzc2VtYmx5TGlua1Jlc291cmNlOiAgJzslKEFzc2VtYmx5TGlua1Jl
c291cmNlKScsCisgICAgICAgICAgICBEZWxheUxvYWRETExzOiAgJzslKERlbGF5TG9hZERMTHMp
JywKKyAgICAgICAgICAgIEVtYmVkTWFuYWdlZFJlc291cmNlRmlsZTogICc7JShFbWJlZE1hbmFn
ZWRSZXNvdXJjZUZpbGUpJywKKyAgICAgICAgICAgIEZvcmNlU3ltYm9sUmVmZXJlbmNlczogICc7
JShGb3JjZVN5bWJvbFJlZmVyZW5jZXMpJywKKyAgICAgICAgICAgIElnbm9yZVNwZWNpZmljRGVm
YXVsdExpYnJhcmllczoKKyAgICAgICAgICAgICAgICAnOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0
TGlicmFyaWVzKScsCisgICAgICAgIFJlc291cmNlQ29tcGlsZToKKyAgICAgICAgICAgIEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM6ICAnOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyknLAorICAgICAgICAgICAgQWRkaXRpb25hbE9wdGlvbnM6ICAnICUoQWRkaXRpb25hbE9wdGlv
bnMpJywKKyAgICAgICAgICAgIFByZXByb2Nlc3NvckRlZmluaXRpb25zOiAgJzslKFByZXByb2Nl
c3NvckRlZmluaXRpb25zKScsCisgICAgICAgIE10OgorICAgICAgICAgICAgQWRkaXRpb25hbE1h
bmlmZXN0RmlsZXM6ICAnOyUoQWRkaXRpb25hbE1hbmlmZXN0RmlsZXMpJywKKyAgICAgICAgICAg
IEFkZGl0aW9uYWxPcHRpb25zOiAgJyAlKEFkZGl0aW9uYWxPcHRpb25zKScsCisgICAgICAgICAg
ICBJbnB1dFJlc291cmNlTWFuaWZlc3RzOiAgJzslKElucHV0UmVzb3VyY2VNYW5pZmVzdHMpJywK
KyAgICAiIiIKKyAgICBtc3ZzX3NldHRpbmdzID0geworICAgICAgICAnVkNDTENvbXBpbGVyVG9v
bCc6IHsKKyAgICAgICAgICAgICdBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzJzogJ2RpcjEn
LAorICAgICAgICAgICAgJ0FkZGl0aW9uYWxPcHRpb25zJzogJy9tb3JlJywKKyAgICAgICAgICAg
ICdBZGRpdGlvbmFsVXNpbmdEaXJlY3Rvcmllcyc6ICd0ZXN0JywKKyAgICAgICAgICAgICdBc3Nl
bWJsZXJMaXN0aW5nTG9jYXRpb24nOiAnJChJbnREaXIpXFxhJywKKyAgICAgICAgICAgICdBc3Nl
bWJsZXJPdXRwdXQnOiAnMScsCisgICAgICAgICAgICAnQmFzaWNSdW50aW1lQ2hlY2tzJzogJzMn
LAorICAgICAgICAgICAgJ0Jyb3dzZUluZm9ybWF0aW9uJzogJzEnLAorICAgICAgICAgICAgJ0Jy
b3dzZUluZm9ybWF0aW9uRmlsZSc6ICckKEludERpcilcXGUnLAorICAgICAgICAgICAgJ0J1ZmZl
clNlY3VyaXR5Q2hlY2snOiAnZmFsc2UnLAorICAgICAgICAgICAgJ0NhbGxpbmdDb252ZW50aW9u
JzogJzEnLAorICAgICAgICAgICAgJ0NvbXBpbGVBcyc6ICcxJywKKyAgICAgICAgICAgICdEZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0JzogJzQnLAorICAgICAgICAgICAgJ0RlZmF1bHRDaGFySXNVbnNp
Z25lZCc6ICd0cnVlJywKKyAgICAgICAgICAgICdEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxl
bXMnOiAndHJ1ZScsCisgICAgICAgICAgICAnRGlzYWJsZUxhbmd1YWdlRXh0ZW5zaW9ucyc6ICd0
cnVlJywKKyAgICAgICAgICAgICdEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyc6ICdhYmMnLAorICAg
ICAgICAgICAgJ0VuYWJsZUVuaGFuY2VkSW5zdHJ1Y3Rpb25TZXQnOiAnMScsCisgICAgICAgICAg
ICAnRW5hYmxlRmliZXJTYWZlT3B0aW1pemF0aW9ucyc6ICd0cnVlJywKKyAgICAgICAgICAgICdF
bmFibGVGdW5jdGlvbkxldmVsTGlua2luZyc6ICd0cnVlJywKKyAgICAgICAgICAgICdFbmFibGVJ
bnRyaW5zaWNGdW5jdGlvbnMnOiAndHJ1ZScsCisgICAgICAgICAgICAnRW5hYmxlUFJFZmFzdCc6
ICd0cnVlJywKKyAgICAgICAgICAgICdFcnJvclJlcG9ydGluZyc6ICcyJywKKyAgICAgICAgICAg
ICdFeGNlcHRpb25IYW5kbGluZyc6ICcyJywKKyAgICAgICAgICAgICdFeHBhbmRBdHRyaWJ1dGVk
U291cmNlJzogJ3RydWUnLAorICAgICAgICAgICAgJ0Zhdm9yU2l6ZU9yU3BlZWQnOiAnMicsCisg
ICAgICAgICAgICAnRmxvYXRpbmdQb2ludEV4Y2VwdGlvbnMnOiAndHJ1ZScsCisgICAgICAgICAg
ICAnRmxvYXRpbmdQb2ludE1vZGVsJzogJzEnLAorICAgICAgICAgICAgJ0ZvcmNlQ29uZm9ybWFu
Y2VJbkZvckxvb3BTY29wZSc6ICdmYWxzZScsCisgICAgICAgICAgICAnRm9yY2VkSW5jbHVkZUZp
bGVzJzogJ2RlZicsCisgICAgICAgICAgICAnRm9yY2VkVXNpbmdGaWxlcyc6ICdnZScsCisgICAg
ICAgICAgICAnR2VuZXJhdGVQcmVwcm9jZXNzZWRGaWxlJzogJzInLAorICAgICAgICAgICAgJ0dl
bmVyYXRlWE1MRG9jdW1lbnRhdGlvbkZpbGVzJzogJ3RydWUnLAorICAgICAgICAgICAgJ0lnbm9y
ZVN0YW5kYXJkSW5jbHVkZVBhdGgnOiAndHJ1ZScsCisgICAgICAgICAgICAnSW5saW5lRnVuY3Rp
b25FeHBhbnNpb24nOiAnMScsCisgICAgICAgICAgICAnS2VlcENvbW1lbnRzJzogJ3RydWUnLAor
ICAgICAgICAgICAgJ01pbmltYWxSZWJ1aWxkJzogJ3RydWUnLAorICAgICAgICAgICAgJ09iamVj
dEZpbGUnOiAnJChJbnREaXIpXFxiJywKKyAgICAgICAgICAgICdPbWl0RGVmYXVsdExpYk5hbWUn
OiAndHJ1ZScsCisgICAgICAgICAgICAnT21pdEZyYW1lUG9pbnRlcnMnOiAndHJ1ZScsCisgICAg
ICAgICAgICAnT3Blbk1QJzogJ3RydWUnLAorICAgICAgICAgICAgJ09wdGltaXphdGlvbic6ICcz
JywKKyAgICAgICAgICAgICdQcmVjb21waWxlZEhlYWRlckZpbGUnOiAnJChJbnREaXIpXFwkKFRh
cmdldE5hbWUpLnBjaGUnLAorICAgICAgICAgICAgJ1ByZWNvbXBpbGVkSGVhZGVyVGhyb3VnaCc6
ICdTdGRBZnguaGQnLAorICAgICAgICAgICAgJ1ByZXByb2Nlc3NvckRlZmluaXRpb25zJzogJ1dJ
TjMyO19ERUJVRztfQ09OU09MRScsCisgICAgICAgICAgICAnUHJvZ3JhbURhdGFCYXNlRmlsZU5h
bWUnOiAnJChJbnREaXIpXFx2YzkwYi5wZGInLAorICAgICAgICAgICAgJ1J1bnRpbWVMaWJyYXJ5
JzogJzMnLAorICAgICAgICAgICAgJ1J1bnRpbWVUeXBlSW5mbyc6ICdmYWxzZScsCisgICAgICAg
ICAgICAnU2hvd0luY2x1ZGVzJzogJ3RydWUnLAorICAgICAgICAgICAgJ1NtYWxsZXJUeXBlQ2hl
Y2snOiAndHJ1ZScsCisgICAgICAgICAgICAnU3RyaW5nUG9vbGluZyc6ICd0cnVlJywKKyAgICAg
ICAgICAgICdTdHJ1Y3RNZW1iZXJBbGlnbm1lbnQnOiAnMycsCisgICAgICAgICAgICAnU3VwcHJl
c3NTdGFydHVwQmFubmVyJzogJ2ZhbHNlJywKKyAgICAgICAgICAgICdUcmVhdFdDaGFyX3RBc0J1
aWx0SW5UeXBlJzogJ2ZhbHNlJywKKyAgICAgICAgICAgICdVbmRlZmluZUFsbFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zJzogJ3RydWUnLAorICAgICAgICAgICAgJ1VuZGVmaW5lUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMnOiAnd2VyJywKKyAgICAgICAgICAgICdVc2VGdWxsUGF0aHMnOiAndHJ1ZScs
CisgICAgICAgICAgICAnVXNlUHJlY29tcGlsZWRIZWFkZXInOiAnMCcsCisgICAgICAgICAgICAn
VXNlVW5pY29kZVJlc3BvbnNlRmlsZXMnOiAnZmFsc2UnLAorICAgICAgICAgICAgJ1dhcm5Bc0Vy
cm9yJzogJ3RydWUnLAorICAgICAgICAgICAgJ1dhcm5pbmdMZXZlbCc6ICczJywKKyAgICAgICAg
ICAgICdXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24nOiAndHJ1ZScsCisgICAgICAgICAgICAnWE1M
RG9jdW1lbnRhdGlvbkZpbGVOYW1lJzogJyQoSW50RGlyKVxcYyd9LAorICAgICAgICAnVkNMaW5r
ZXJUb29sJzogeworICAgICAgICAgICAgJ0FkZGl0aW9uYWxEZXBlbmRlbmNpZXMnOiAnengnLAor
ICAgICAgICAgICAgJ0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMnOiAnYXNkJywKKyAgICAg
ICAgICAgICdBZGRpdGlvbmFsTWFuaWZlc3REZXBlbmRlbmNpZXMnOiAnczInLAorICAgICAgICAg
ICAgJ0FkZGl0aW9uYWxPcHRpb25zJzogJy9tb3IyJywKKyAgICAgICAgICAgICdBZGRNb2R1bGVO
YW1lc1RvQXNzZW1ibHknOiAnZDEnLAorICAgICAgICAgICAgJ0FsbG93SXNvbGF0aW9uJzogJ2Zh
bHNlJywKKyAgICAgICAgICAgICdBc3NlbWJseURlYnVnJzogJzEnLAorICAgICAgICAgICAgJ0Fz
c2VtYmx5TGlua1Jlc291cmNlJzogJ2Q1JywKKyAgICAgICAgICAgICdCYXNlQWRkcmVzcyc6ICcy
MzQyMycsCisgICAgICAgICAgICAnQ0xSSW1hZ2VUeXBlJzogJzMnLAorICAgICAgICAgICAgJ0NM
UlRocmVhZEF0dHJpYnV0ZSc6ICcxJywKKyAgICAgICAgICAgICdDTFJVbm1hbmFnZWRDb2RlQ2hl
Y2snOiAndHJ1ZScsCisgICAgICAgICAgICAnRGF0YUV4ZWN1dGlvblByZXZlbnRpb24nOiAnMCcs
CisgICAgICAgICAgICAnRGVsYXlMb2FkRExMcyc6ICdkNCcsCisgICAgICAgICAgICAnRGVsYXlT
aWduJzogJ3RydWUnLAorICAgICAgICAgICAgJ0RyaXZlcic6ICcyJywKKyAgICAgICAgICAgICdF
bWJlZE1hbmFnZWRSZXNvdXJjZUZpbGUnOiAnZDInLAorICAgICAgICAgICAgJ0VuYWJsZUNPTURB
VEZvbGRpbmcnOiAnMScsCisgICAgICAgICAgICAnRW5hYmxlVUFDJzogJ2ZhbHNlJywKKyAgICAg
ICAgICAgICdFbnRyeVBvaW50U3ltYm9sJzogJ2Y1JywKKyAgICAgICAgICAgICdFcnJvclJlcG9y
dGluZyc6ICcyJywKKyAgICAgICAgICAgICdGaXhlZEJhc2VBZGRyZXNzJzogJzEnLAorICAgICAg
ICAgICAgJ0ZvcmNlU3ltYm9sUmVmZXJlbmNlcyc6ICdkMycsCisgICAgICAgICAgICAnRnVuY3Rp
b25PcmRlcic6ICdmc3NkZnNkJywKKyAgICAgICAgICAgICdHZW5lcmF0ZURlYnVnSW5mb3JtYXRp
b24nOiAndHJ1ZScsCisgICAgICAgICAgICAnR2VuZXJhdGVNYW5pZmVzdCc6ICdmYWxzZScsCisg
ICAgICAgICAgICAnR2VuZXJhdGVNYXBGaWxlJzogJ3RydWUnLAorICAgICAgICAgICAgJ0hlYXBD
b21taXRTaXplJzogJzEzJywKKyAgICAgICAgICAgICdIZWFwUmVzZXJ2ZVNpemUnOiAnMTInLAor
ICAgICAgICAgICAgJ0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXMnOiAndHJ1ZScsCisgICAgICAg
ICAgICAnSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcyc6ICdmbG9iO2Zsb2snLAorICAgICAgICAg
ICAgJ0lnbm9yZUVtYmVkZGVkSURMJzogJ3RydWUnLAorICAgICAgICAgICAgJ0lnbm9yZUltcG9y
dExpYnJhcnknOiAndHJ1ZScsCisgICAgICAgICAgICAnSW1wb3J0TGlicmFyeSc6ICdmNCcsCisg
ICAgICAgICAgICAnS2V5Q29udGFpbmVyJzogJ2Y3JywKKyAgICAgICAgICAgICdLZXlGaWxlJzog
J2Y2JywKKyAgICAgICAgICAgICdMYXJnZUFkZHJlc3NBd2FyZSc6ICcyJywKKyAgICAgICAgICAg
ICdMaW5rSW5jcmVtZW50YWwnOiAnMCcsCisgICAgICAgICAgICAnTGlua0xpYnJhcnlEZXBlbmRl
bmNpZXMnOiAnZmFsc2UnLAorICAgICAgICAgICAgJ0xpbmtUaW1lQ29kZUdlbmVyYXRpb24nOiAn
MScsCisgICAgICAgICAgICAnTWFuaWZlc3RGaWxlJzoKKyAgICAgICAgICAgICAgICAnJChJbnRE
aXIpXFwkKFRhcmdldEZpbGVOYW1lKS4yaW50ZXJtZWRpYXRlLm1hbmlmZXN0JywKKyAgICAgICAg
ICAgICdNYXBFeHBvcnRzJzogJ3RydWUnLAorICAgICAgICAgICAgJ01hcEZpbGVOYW1lJzogJ2Q1
JywKKyAgICAgICAgICAgICdNZXJnZWRJRExCYXNlRmlsZU5hbWUnOiAnZjInLAorICAgICAgICAg
ICAgJ01lcmdlU2VjdGlvbnMnOiAnZjUnLAorICAgICAgICAgICAgJ01pZGxDb21tYW5kRmlsZSc6
ICdmMScsCisgICAgICAgICAgICAnTW9kdWxlRGVmaW5pdGlvbkZpbGUnOiAnc2RzZCcsCisgICAg
ICAgICAgICAnT3B0aW1pemVGb3JXaW5kb3dzOTgnOiAnMicsCisgICAgICAgICAgICAnT3B0aW1p
emVSZWZlcmVuY2VzJzogJzInLAorICAgICAgICAgICAgJ091dHB1dEZpbGUnOiAnJChPdXREaXIp
XFwkKFByb2plY3ROYW1lKTIuZXhlJywKKyAgICAgICAgICAgICdQZXJVc2VyUmVkaXJlY3Rpb24n
OiAndHJ1ZScsCisgICAgICAgICAgICAnUHJvZmlsZSc6ICd0cnVlJywKKyAgICAgICAgICAgICdQ
cm9maWxlR3VpZGVkRGF0YWJhc2UnOiAnJChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZ2RkJywK
KyAgICAgICAgICAgICdQcm9ncmFtRGF0YWJhc2VGaWxlJzogJ0Zsb2IucGRiJywKKyAgICAgICAg
ICAgICdSYW5kb21pemVkQmFzZUFkZHJlc3MnOiAnMScsCisgICAgICAgICAgICAnUmVnaXN0ZXJP
dXRwdXQnOiAndHJ1ZScsCisgICAgICAgICAgICAnUmVzb3VyY2VPbmx5RExMJzogJ3RydWUnLAor
ICAgICAgICAgICAgJ1NldENoZWNrc3VtJzogJ2ZhbHNlJywKKyAgICAgICAgICAgICdTaG93UHJv
Z3Jlc3MnOiAnMScsCisgICAgICAgICAgICAnU3RhY2tDb21taXRTaXplJzogJzE1JywKKyAgICAg
ICAgICAgICdTdGFja1Jlc2VydmVTaXplJzogJzE0JywKKyAgICAgICAgICAgICdTdHJpcFByaXZh
dGVTeW1ib2xzJzogJ2QzJywKKyAgICAgICAgICAgICdTdWJTeXN0ZW0nOiAnMScsCisgICAgICAg
ICAgICAnU3VwcG9ydFVubG9hZE9mRGVsYXlMb2FkZWRETEwnOiAndHJ1ZScsCisgICAgICAgICAg
ICAnU3VwcHJlc3NTdGFydHVwQmFubmVyJzogJ2ZhbHNlJywKKyAgICAgICAgICAgICdTd2FwUnVu
RnJvbUNEJzogJ3RydWUnLAorICAgICAgICAgICAgJ1N3YXBSdW5Gcm9tTmV0JzogJ3RydWUnLAor
ICAgICAgICAgICAgJ1RhcmdldE1hY2hpbmUnOiAnMScsCisgICAgICAgICAgICAnVGVybWluYWxT
ZXJ2ZXJBd2FyZSc6ICcxJywKKyAgICAgICAgICAgICdUdXJuT2ZmQXNzZW1ibHlHZW5lcmF0aW9u
JzogJ3RydWUnLAorICAgICAgICAgICAgJ1R5cGVMaWJyYXJ5RmlsZSc6ICdmMycsCisgICAgICAg
ICAgICAnVHlwZUxpYnJhcnlSZXNvdXJjZUlEJzogJzEyJywKKyAgICAgICAgICAgICdVQUNFeGVj
dXRpb25MZXZlbCc6ICcyJywKKyAgICAgICAgICAgICdVQUNVSUFjY2Vzcyc6ICd0cnVlJywKKyAg
ICAgICAgICAgICdVc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0cyc6ICd0cnVlJywKKyAgICAgICAg
ICAgICdVc2VVbmljb2RlUmVzcG9uc2VGaWxlcyc6ICdmYWxzZScsCisgICAgICAgICAgICAnVmVy
c2lvbic6ICczMzMnfSwKKyAgICAgICAgJ1ZDUmVzb3VyY2VDb21waWxlclRvb2wnOiB7CisgICAg
ICAgICAgICAnQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyc6ICdmMycsCisgICAgICAgICAg
ICAnQWRkaXRpb25hbE9wdGlvbnMnOiAnL21vcmUzJywKKyAgICAgICAgICAgICdDdWx0dXJlJzog
JzMwODQnLAorICAgICAgICAgICAgJ0lnbm9yZVN0YW5kYXJkSW5jbHVkZVBhdGgnOiAndHJ1ZScs
CisgICAgICAgICAgICAnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMnOiAnX1VOSUNPREU7VU5JQ09E
RTInLAorICAgICAgICAgICAgJ1Jlc291cmNlT3V0cHV0RmlsZU5hbWUnOiAnJChJbnREaXIpLyQo
SW5wdXROYW1lKTMucmVzJywKKyAgICAgICAgICAgICdTaG93UHJvZ3Jlc3MnOiAndHJ1ZSd9LAor
ICAgICAgICAnVkNNYW5pZmVzdFRvb2wnOiB7CisgICAgICAgICAgICAnQWRkaXRpb25hbE1hbmlm
ZXN0RmlsZXMnOiAnc2ZzZGZzZCcsCisgICAgICAgICAgICAnQWRkaXRpb25hbE9wdGlvbnMnOiAn
YWZkc2RhZnNkJywKKyAgICAgICAgICAgICdBc3NlbWJseUlkZW50aXR5JzogJ3NkZGZkc2FkZnNh
JywKKyAgICAgICAgICAgICdDb21wb25lbnRGaWxlTmFtZSc6ICdmc2RmZHMnLAorICAgICAgICAg
ICAgJ0RlcGVuZGVuY3lJbmZvcm1hdGlvbkZpbGUnOiAnJChJbnREaXIpXFxtdC5kZXBkZmQnLAor
ICAgICAgICAgICAgJ0VtYmVkTWFuaWZlc3QnOiAnZmFsc2UnLAorICAgICAgICAgICAgJ0dlbmVy
YXRlQ2F0YWxvZ0ZpbGVzJzogJ3RydWUnLAorICAgICAgICAgICAgJ0lucHV0UmVzb3VyY2VNYW5p
ZmVzdHMnOiAnYXNmc2ZkYWZzJywKKyAgICAgICAgICAgICdNYW5pZmVzdFJlc291cmNlRmlsZSc6
CisgICAgICAgICAgICAgICAgJyQoSW50RGlyKVxcJChUYXJnZXRGaWxlTmFtZSkuZW1iZWQubWFu
aWZlc3QucmVzZmRzZicsCisgICAgICAgICAgICAnT3V0cHV0TWFuaWZlc3RGaWxlJzogJyQoVGFy
Z2V0UGF0aCkubWFuaWZlc3RkZnMnLAorICAgICAgICAgICAgJ1JlZ2lzdHJhclNjcmlwdEZpbGUn
OiAnc2Rmc2ZkJywKKyAgICAgICAgICAgICdSZXBsYWNlbWVudHNGaWxlJzogJ3NkZmZzZCcsCisg
ICAgICAgICAgICAnU3VwcHJlc3NTdGFydHVwQmFubmVyJzogJ2ZhbHNlJywKKyAgICAgICAgICAg
ICdUeXBlTGlicmFyeUZpbGUnOiAnc2ZzZCcsCisgICAgICAgICAgICAnVXBkYXRlRmlsZUhhc2hl
cyc6ICd0cnVlJywKKyAgICAgICAgICAgICdVcGRhdGVGaWxlSGFzaGVzU2VhcmNoUGF0aCc6ICdz
ZnNkJywKKyAgICAgICAgICAgICdVc2VGQVQzMldvcmthcm91bmQnOiAndHJ1ZScsCisgICAgICAg
ICAgICAnVXNlVW5pY29kZVJlc3BvbnNlRmlsZXMnOiAnZmFsc2UnLAorICAgICAgICAgICAgJ1Zl
cmJvc2VPdXRwdXQnOiAndHJ1ZSd9fQorICAgIGV4cGVjdGVkX21zYnVpbGRfc2V0dGluZ3MgPSB7
CisgICAgICAgICdDbENvbXBpbGUnOiB7CisgICAgICAgICAgICAnQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyc6ICdkaXIxJywKKyAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6ICcv
bW9yZSAvSicsCisgICAgICAgICAgICAnQWRkaXRpb25hbFVzaW5nRGlyZWN0b3JpZXMnOiAndGVz
dCcsCisgICAgICAgICAgICAnQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uJzogJyQoSW50RGlyKWEn
LAorICAgICAgICAgICAgJ0Fzc2VtYmxlck91dHB1dCc6ICdBc3NlbWJseUNvZGUnLAorICAgICAg
ICAgICAgJ0Jhc2ljUnVudGltZUNoZWNrcyc6ICdFbmFibGVGYXN0Q2hlY2tzJywKKyAgICAgICAg
ICAgICdCcm93c2VJbmZvcm1hdGlvbic6ICd0cnVlJywKKyAgICAgICAgICAgICdCcm93c2VJbmZv
cm1hdGlvbkZpbGUnOiAnJChJbnREaXIpZScsCisgICAgICAgICAgICAnQnVmZmVyU2VjdXJpdHlD
aGVjayc6ICdmYWxzZScsCisgICAgICAgICAgICAnQ2FsbGluZ0NvbnZlbnRpb24nOiAnRmFzdENh
bGwnLAorICAgICAgICAgICAgJ0NvbXBpbGVBcyc6ICdDb21waWxlQXNDJywKKyAgICAgICAgICAg
ICdEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0JzogJ0VkaXRBbmRDb250aW51ZScsCisgICAgICAgICAg
ICAnRGlzYWJsZUxhbmd1YWdlRXh0ZW5zaW9ucyc6ICd0cnVlJywKKyAgICAgICAgICAgICdEaXNh
YmxlU3BlY2lmaWNXYXJuaW5ncyc6ICdhYmMnLAorICAgICAgICAgICAgJ0VuYWJsZUVuaGFuY2Vk
SW5zdHJ1Y3Rpb25TZXQnOiAnU3RyZWFtaW5nU0lNREV4dGVuc2lvbnMnLAorICAgICAgICAgICAg
J0VuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnMnOiAndHJ1ZScsCisgICAgICAgICAgICAnRW5h
YmxlUFJFZmFzdCc6ICd0cnVlJywKKyAgICAgICAgICAgICdFcnJvclJlcG9ydGluZyc6ICdRdWV1
ZScsCisgICAgICAgICAgICAnRXhjZXB0aW9uSGFuZGxpbmcnOiAnQXN5bmMnLAorICAgICAgICAg
ICAgJ0V4cGFuZEF0dHJpYnV0ZWRTb3VyY2UnOiAndHJ1ZScsCisgICAgICAgICAgICAnRmF2b3JT
aXplT3JTcGVlZCc6ICdTaXplJywKKyAgICAgICAgICAgICdGbG9hdGluZ1BvaW50RXhjZXB0aW9u
cyc6ICd0cnVlJywKKyAgICAgICAgICAgICdGbG9hdGluZ1BvaW50TW9kZWwnOiAnU3RyaWN0JywK
KyAgICAgICAgICAgICdGb3JjZUNvbmZvcm1hbmNlSW5Gb3JMb29wU2NvcGUnOiAnZmFsc2UnLAor
ICAgICAgICAgICAgJ0ZvcmNlZEluY2x1ZGVGaWxlcyc6ICdkZWYnLAorICAgICAgICAgICAgJ0Zv
cmNlZFVzaW5nRmlsZXMnOiAnZ2UnLAorICAgICAgICAgICAgJ0Z1bmN0aW9uTGV2ZWxMaW5raW5n
JzogJ3RydWUnLAorICAgICAgICAgICAgJ0dlbmVyYXRlWE1MRG9jdW1lbnRhdGlvbkZpbGVzJzog
J3RydWUnLAorICAgICAgICAgICAgJ0lnbm9yZVN0YW5kYXJkSW5jbHVkZVBhdGgnOiAndHJ1ZScs
CisgICAgICAgICAgICAnSW5saW5lRnVuY3Rpb25FeHBhbnNpb24nOiAnT25seUV4cGxpY2l0SW5s
aW5lJywKKyAgICAgICAgICAgICdJbnRyaW5zaWNGdW5jdGlvbnMnOiAndHJ1ZScsCisgICAgICAg
ICAgICAnTWluaW1hbFJlYnVpbGQnOiAndHJ1ZScsCisgICAgICAgICAgICAnT2JqZWN0RmlsZU5h
bWUnOiAnJChJbnREaXIpYicsCisgICAgICAgICAgICAnT21pdERlZmF1bHRMaWJOYW1lJzogJ3Ry
dWUnLAorICAgICAgICAgICAgJ09taXRGcmFtZVBvaW50ZXJzJzogJ3RydWUnLAorICAgICAgICAg
ICAgJ09wZW5NUFN1cHBvcnQnOiAndHJ1ZScsCisgICAgICAgICAgICAnT3B0aW1pemF0aW9uJzog
J0Z1bGwnLAorICAgICAgICAgICAgJ1ByZWNvbXBpbGVkSGVhZGVyJzogJ05vdFVzaW5nJywgICMg
QWN0dWFsIGNvbnZlcnNpb24gZ2l2ZXMgJycKKyAgICAgICAgICAgICdQcmVjb21waWxlZEhlYWRl
ckZpbGUnOiAnU3RkQWZ4LmhkJywKKyAgICAgICAgICAgICdQcmVjb21waWxlZEhlYWRlck91dHB1
dEZpbGUnOiAnJChJbnREaXIpJChUYXJnZXROYW1lKS5wY2hlJywKKyAgICAgICAgICAgICdQcmVw
cm9jZXNzS2VlcENvbW1lbnRzJzogJ3RydWUnLAorICAgICAgICAgICAgJ1ByZXByb2Nlc3NvckRl
ZmluaXRpb25zJzogJ1dJTjMyO19ERUJVRztfQ09OU09MRScsCisgICAgICAgICAgICAnUHJlcHJv
Y2Vzc1N1cHByZXNzTGluZU51bWJlcnMnOiAndHJ1ZScsCisgICAgICAgICAgICAnUHJlcHJvY2Vz
c1RvRmlsZSc6ICd0cnVlJywKKyAgICAgICAgICAgICdQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZSc6
ICckKEludERpcil2YzkwYi5wZGInLAorICAgICAgICAgICAgJ1J1bnRpbWVMaWJyYXJ5JzogJ011
bHRpVGhyZWFkZWREZWJ1Z0RMTCcsCisgICAgICAgICAgICAnUnVudGltZVR5cGVJbmZvJzogJ2Zh
bHNlJywKKyAgICAgICAgICAgICdTaG93SW5jbHVkZXMnOiAndHJ1ZScsCisgICAgICAgICAgICAn
U21hbGxlclR5cGVDaGVjayc6ICd0cnVlJywKKyAgICAgICAgICAgICdTdHJpbmdQb29saW5nJzog
J3RydWUnLAorICAgICAgICAgICAgJ1N0cnVjdE1lbWJlckFsaWdubWVudCc6ICc0Qnl0ZXMnLAor
ICAgICAgICAgICAgJ1N1cHByZXNzU3RhcnR1cEJhbm5lcic6ICdmYWxzZScsCisgICAgICAgICAg
ICAnVHJlYXRXYXJuaW5nQXNFcnJvcic6ICd0cnVlJywKKyAgICAgICAgICAgICdUcmVhdFdDaGFy
X3RBc0J1aWx0SW5UeXBlJzogJ2ZhbHNlJywKKyAgICAgICAgICAgICdVbmRlZmluZUFsbFByZXBy
b2Nlc3NvckRlZmluaXRpb25zJzogJ3RydWUnLAorICAgICAgICAgICAgJ1VuZGVmaW5lUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnMnOiAnd2VyJywKKyAgICAgICAgICAgICdVc2VGdWxsUGF0aHMnOiAn
dHJ1ZScsCisgICAgICAgICAgICAnV2FybmluZ0xldmVsJzogJ0xldmVsMycsCisgICAgICAgICAg
ICAnV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uJzogJ3RydWUnLAorICAgICAgICAgICAgJ1hNTERv
Y3VtZW50YXRpb25GaWxlTmFtZSc6ICckKEludERpciljJ30sCisgICAgICAgICdMaW5rJzogewor
ICAgICAgICAgICAgJ0FkZGl0aW9uYWxEZXBlbmRlbmNpZXMnOiAnengnLAorICAgICAgICAgICAg
J0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMnOiAnYXNkJywKKyAgICAgICAgICAgICdBZGRp
dGlvbmFsTWFuaWZlc3REZXBlbmRlbmNpZXMnOiAnczInLAorICAgICAgICAgICAgJ0FkZGl0aW9u
YWxPcHRpb25zJzogJy9tb3IyJywKKyAgICAgICAgICAgICdBZGRNb2R1bGVOYW1lc1RvQXNzZW1i
bHknOiAnZDEnLAorICAgICAgICAgICAgJ0FsbG93SXNvbGF0aW9uJzogJ2ZhbHNlJywKKyAgICAg
ICAgICAgICdBc3NlbWJseURlYnVnJzogJ3RydWUnLAorICAgICAgICAgICAgJ0Fzc2VtYmx5TGlu
a1Jlc291cmNlJzogJ2Q1JywKKyAgICAgICAgICAgICdCYXNlQWRkcmVzcyc6ICcyMzQyMycsCisg
ICAgICAgICAgICAnQ0xSSW1hZ2VUeXBlJzogJ0ZvcmNlU2FmZUlMSW1hZ2UnLAorICAgICAgICAg
ICAgJ0NMUlRocmVhZEF0dHJpYnV0ZSc6ICdNVEFUaHJlYWRpbmdBdHRyaWJ1dGUnLAorICAgICAg
ICAgICAgJ0NMUlVubWFuYWdlZENvZGVDaGVjayc6ICd0cnVlJywKKyAgICAgICAgICAgICdEYXRh
RXhlY3V0aW9uUHJldmVudGlvbic6ICcnLAorICAgICAgICAgICAgJ0RlbGF5TG9hZERMTHMnOiAn
ZDQnLAorICAgICAgICAgICAgJ0RlbGF5U2lnbic6ICd0cnVlJywKKyAgICAgICAgICAgICdEcml2
ZXInOiAnVXBPbmx5JywKKyAgICAgICAgICAgICdFbWJlZE1hbmFnZWRSZXNvdXJjZUZpbGUnOiAn
ZDInLAorICAgICAgICAgICAgJ0VuYWJsZUNPTURBVEZvbGRpbmcnOiAnZmFsc2UnLAorICAgICAg
ICAgICAgJ0VuYWJsZVVBQyc6ICdmYWxzZScsCisgICAgICAgICAgICAnRW50cnlQb2ludFN5bWJv
bCc6ICdmNScsCisgICAgICAgICAgICAnRml4ZWRCYXNlQWRkcmVzcyc6ICdmYWxzZScsCisgICAg
ICAgICAgICAnRm9yY2VTeW1ib2xSZWZlcmVuY2VzJzogJ2QzJywKKyAgICAgICAgICAgICdGdW5j
dGlvbk9yZGVyJzogJ2Zzc2Rmc2QnLAorICAgICAgICAgICAgJ0dlbmVyYXRlRGVidWdJbmZvcm1h
dGlvbic6ICd0cnVlJywKKyAgICAgICAgICAgICdHZW5lcmF0ZU1hcEZpbGUnOiAndHJ1ZScsCisg
ICAgICAgICAgICAnSGVhcENvbW1pdFNpemUnOiAnMTMnLAorICAgICAgICAgICAgJ0hlYXBSZXNl
cnZlU2l6ZSc6ICcxMicsCisgICAgICAgICAgICAnSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcyc6
ICd0cnVlJywKKyAgICAgICAgICAgICdJZ25vcmVFbWJlZGRlZElETCc6ICd0cnVlJywKKyAgICAg
ICAgICAgICdJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMnOiAnZmxvYjtmbG9rJywKKyAg
ICAgICAgICAgICdJbXBvcnRMaWJyYXJ5JzogJ2Y0JywKKyAgICAgICAgICAgICdLZXlDb250YWlu
ZXInOiAnZjcnLAorICAgICAgICAgICAgJ0tleUZpbGUnOiAnZjYnLAorICAgICAgICAgICAgJ0xh
cmdlQWRkcmVzc0F3YXJlJzogJ3RydWUnLAorICAgICAgICAgICAgJ0xpbmtFcnJvclJlcG9ydGlu
Zyc6ICdRdWV1ZUZvck5leHRMb2dpbicsCisgICAgICAgICAgICAnTGlua1RpbWVDb2RlR2VuZXJh
dGlvbic6ICdVc2VMaW5rVGltZUNvZGVHZW5lcmF0aW9uJywKKyAgICAgICAgICAgICdNYW5pZmVz
dEZpbGUnOiAnJChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuMmludGVybWVkaWF0ZS5tYW5pZmVz
dCcsCisgICAgICAgICAgICAnTWFwRXhwb3J0cyc6ICd0cnVlJywKKyAgICAgICAgICAgICdNYXBG
aWxlTmFtZSc6ICdkNScsCisgICAgICAgICAgICAnTWVyZ2VkSURMQmFzZUZpbGVOYW1lJzogJ2Yy
JywKKyAgICAgICAgICAgICdNZXJnZVNlY3Rpb25zJzogJ2Y1JywKKyAgICAgICAgICAgICdNaWRs
Q29tbWFuZEZpbGUnOiAnZjEnLAorICAgICAgICAgICAgJ01vZHVsZURlZmluaXRpb25GaWxlJzog
J3Nkc2QnLAorICAgICAgICAgICAgJ05vRW50cnlQb2ludCc6ICd0cnVlJywKKyAgICAgICAgICAg
ICdPcHRpbWl6ZVJlZmVyZW5jZXMnOiAndHJ1ZScsCisgICAgICAgICAgICAnT3V0cHV0RmlsZSc6
ICckKE91dERpcikkKFByb2plY3ROYW1lKTIuZXhlJywKKyAgICAgICAgICAgICdQZXJVc2VyUmVk
aXJlY3Rpb24nOiAndHJ1ZScsCisgICAgICAgICAgICAnUHJvZmlsZSc6ICd0cnVlJywKKyAgICAg
ICAgICAgICdQcm9maWxlR3VpZGVkRGF0YWJhc2UnOiAnJChUYXJnZXREaXIpJChUYXJnZXROYW1l
KS5wZ2RkJywKKyAgICAgICAgICAgICdQcm9ncmFtRGF0YWJhc2VGaWxlJzogJ0Zsb2IucGRiJywK
KyAgICAgICAgICAgICdSYW5kb21pemVkQmFzZUFkZHJlc3MnOiAnZmFsc2UnLAorICAgICAgICAg
ICAgJ1JlZ2lzdGVyT3V0cHV0JzogJ3RydWUnLAorICAgICAgICAgICAgJ1NldENoZWNrc3VtJzog
J2ZhbHNlJywKKyAgICAgICAgICAgICdTaG93UHJvZ3Jlc3MnOiAnTGlua1ZlcmJvc2UnLAorICAg
ICAgICAgICAgJ1N0YWNrQ29tbWl0U2l6ZSc6ICcxNScsCisgICAgICAgICAgICAnU3RhY2tSZXNl
cnZlU2l6ZSc6ICcxNCcsCisgICAgICAgICAgICAnU3RyaXBQcml2YXRlU3ltYm9scyc6ICdkMycs
CisgICAgICAgICAgICAnU3ViU3lzdGVtJzogJ0NvbnNvbGUnLAorICAgICAgICAgICAgJ1N1cHBv
cnRVbmxvYWRPZkRlbGF5TG9hZGVkRExMJzogJ3RydWUnLAorICAgICAgICAgICAgJ1N1cHByZXNz
U3RhcnR1cEJhbm5lcic6ICdmYWxzZScsCisgICAgICAgICAgICAnU3dhcFJ1bkZyb21DRCc6ICd0
cnVlJywKKyAgICAgICAgICAgICdTd2FwUnVuRnJvbU5FVCc6ICd0cnVlJywKKyAgICAgICAgICAg
ICdUYXJnZXRNYWNoaW5lJzogJ01hY2hpbmVYODYnLAorICAgICAgICAgICAgJ1Rlcm1pbmFsU2Vy
dmVyQXdhcmUnOiAnZmFsc2UnLAorICAgICAgICAgICAgJ1R1cm5PZmZBc3NlbWJseUdlbmVyYXRp
b24nOiAndHJ1ZScsCisgICAgICAgICAgICAnVHlwZUxpYnJhcnlGaWxlJzogJ2YzJywKKyAgICAg
ICAgICAgICdUeXBlTGlicmFyeVJlc291cmNlSUQnOiAnMTInLAorICAgICAgICAgICAgJ1VBQ0V4
ZWN1dGlvbkxldmVsJzogJ1JlcXVpcmVBZG1pbmlzdHJhdG9yJywKKyAgICAgICAgICAgICdVQUNV
SUFjY2Vzcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdWZXJzaW9uJzogJzMzMyd9LAorICAgICAg
ICAnUmVzb3VyY2VDb21waWxlJzogeworICAgICAgICAgICAgJ0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMnOiAnZjMnLAorICAgICAgICAgICAgJ0FkZGl0aW9uYWxPcHRpb25zJzogJy9tb3Jl
MycsCisgICAgICAgICAgICAnQ3VsdHVyZSc6ICcweDBjMGMnLAorICAgICAgICAgICAgJ0lnbm9y
ZVN0YW5kYXJkSW5jbHVkZVBhdGgnOiAndHJ1ZScsCisgICAgICAgICAgICAnUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMnOiAnX1VOSUNPREU7VU5JQ09ERTInLAorICAgICAgICAgICAgJ1Jlc291cmNl
T3V0cHV0RmlsZU5hbWUnOiAnJChJbnREaXIpJShGaWxlbmFtZSkzLnJlcycsCisgICAgICAgICAg
ICAnU2hvd1Byb2dyZXNzJzogJ3RydWUnfSwKKyAgICAgICAgJ010JzogeworICAgICAgICAgICAg
J0FkZGl0aW9uYWxNYW5pZmVzdEZpbGVzJzogJ3Nmc2Rmc2QnLAorICAgICAgICAgICAgJ0FkZGl0
aW9uYWxPcHRpb25zJzogJ2FmZHNkYWZzZCcsCisgICAgICAgICAgICAnQXNzZW1ibHlJZGVudGl0
eSc6ICdzZGRmZHNhZGZzYScsCisgICAgICAgICAgICAnQ29tcG9uZW50RmlsZU5hbWUnOiAnZnNk
ZmRzJywKKyAgICAgICAgICAgICdHZW5lcmF0ZUNhdGFsb2dGaWxlcyc6ICd0cnVlJywKKyAgICAg
ICAgICAgICdJbnB1dFJlc291cmNlTWFuaWZlc3RzJzogJ2FzZnNmZGFmcycsCisgICAgICAgICAg
ICAnT3V0cHV0TWFuaWZlc3RGaWxlJzogJyQoVGFyZ2V0UGF0aCkubWFuaWZlc3RkZnMnLAorICAg
ICAgICAgICAgJ1JlZ2lzdHJhclNjcmlwdEZpbGUnOiAnc2Rmc2ZkJywKKyAgICAgICAgICAgICdS
ZXBsYWNlbWVudHNGaWxlJzogJ3NkZmZzZCcsCisgICAgICAgICAgICAnU3VwcHJlc3NTdGFydHVw
QmFubmVyJzogJ2ZhbHNlJywKKyAgICAgICAgICAgICdUeXBlTGlicmFyeUZpbGUnOiAnc2ZzZCcs
CisgICAgICAgICAgICAnVXBkYXRlRmlsZUhhc2hlcyc6ICd0cnVlJywKKyAgICAgICAgICAgICdV
cGRhdGVGaWxlSGFzaGVzU2VhcmNoUGF0aCc6ICdzZnNkJywKKyAgICAgICAgICAgICdWZXJib3Nl
T3V0cHV0JzogJ3RydWUnfSwKKyAgICAgICAgJ1Byb2plY3RSZWZlcmVuY2UnOiB7CisgICAgICAg
ICAgICAnTGlua0xpYnJhcnlEZXBlbmRlbmNpZXMnOiAnZmFsc2UnLAorICAgICAgICAgICAgJ1Vz
ZUxpYnJhcnlEZXBlbmRlbmN5SW5wdXRzJzogJ3RydWUnfSwKKyAgICAgICAgJyc6IHsKKyAgICAg
ICAgICAgICdFbWJlZE1hbmlmZXN0JzogJ2ZhbHNlJywKKyAgICAgICAgICAgICdHZW5lcmF0ZU1h
bmlmZXN0JzogJ2ZhbHNlJywKKyAgICAgICAgICAgICdJZ25vcmVJbXBvcnRMaWJyYXJ5JzogJ3Ry
dWUnLAorICAgICAgICAgICAgJ0xpbmtJbmNyZW1lbnRhbCc6ICcnCisgICAgICAgICAgICB9LAor
ICAgICAgICAnTWFuaWZlc3RSZXNvdXJjZUNvbXBpbGUnOiB7CisgICAgICAgICAgICAnUmVzb3Vy
Y2VPdXRwdXRGaWxlTmFtZSc6CisgICAgICAgICAgICAgICAgJyQoSW50RGlyKSQoVGFyZ2V0Rmls
ZU5hbWUpLmVtYmVkLm1hbmlmZXN0LnJlc2Zkc2YnfQorICAgICAgICB9CisgICAgYWN0dWFsX21z
YnVpbGRfc2V0dGluZ3MgPSBNU1ZTU2V0dGluZ3MuQ29udmVydFRvTXNCdWlsZFNldHRpbmdzKAor
ICAgICAgICBtc3ZzX3NldHRpbmdzLAorICAgICAgICBzZWxmLnN0ZGVycikKKyAgICBzZWxmLmFz
c2VydEVxdWFsKGV4cGVjdGVkX21zYnVpbGRfc2V0dGluZ3MsIGFjdHVhbF9tc2J1aWxkX3NldHRp
bmdzKQorICAgIHNlbGYuX0V4cGVjdGVkV2FybmluZ3MoW10pCisKK2lmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6CisgIHVuaXR0ZXN0Lm1haW4oKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvTVNWU1Rvb2xGaWxl
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9NU1ZTVG9vbEZpbGUucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDkzYTljNDI3NDkwNzEyYzRlM2Y2YWY4NDdjNWYwZDI1YjM2NGJkMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvTVNWU1Rvb2xGaWxl
LnB5CkBAIC0wLDAgKzEsODEgQEAKKyMhL3Vzci9iaW4vcHl0aG9uMi40CisKKyMgQ29weXJpZ2h0
IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiVmlzdWFsIFN0dWRpbyBwcm9q
ZWN0IHJlYWRlci93cml0ZXIuIiIiCisKK2ltcG9ydCBjb21tb24KK2ltcG9ydCB4bWwuZG9tCitp
bXBvcnQgeG1sX2ZpeAorCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitjbGFzcyBXcml0
ZXIob2JqZWN0KToKKyAgIiIiVmlzdWFsIFN0dWRpbyBYTUwgdG9vbCBmaWxlIHdyaXRlci4iIiIK
KworICBkZWYgX19pbml0X18oc2VsZiwgdG9vbF9maWxlX3BhdGgpOgorICAgICIiIkluaXRpYWxp
emVzIHRoZSB0b29sIGZpbGUuCisKKyAgICBBcmdzOgorICAgICAgdG9vbF9maWxlX3BhdGg6IFBh
dGggdG8gdGhlIHRvb2wgZmlsZS4KKyAgICAiIiIKKyAgICBzZWxmLnRvb2xfZmlsZV9wYXRoID0g
dG9vbF9maWxlX3BhdGgKKyAgICBzZWxmLmRvYyA9IE5vbmUKKworICBkZWYgQ3JlYXRlKHNlbGYs
IG5hbWUpOgorICAgICIiIkNyZWF0ZXMgdGhlIHRvb2wgZmlsZSBkb2N1bWVudC4KKworICAgIEFy
Z3M6CisgICAgICBuYW1lOiBOYW1lIG9mIHRoZSB0b29sIGZpbGUuCisgICAgIiIiCisgICAgc2Vs
Zi5uYW1lID0gbmFtZQorCisgICAgIyBDcmVhdGUgWE1MIGRvYworICAgIHhtbF9pbXBsID0geG1s
LmRvbS5nZXRET01JbXBsZW1lbnRhdGlvbigpCisgICAgc2VsZi5kb2MgPSB4bWxfaW1wbC5jcmVh
dGVEb2N1bWVudChOb25lLCAnVmlzdWFsU3R1ZGlvVG9vbEZpbGUnLCBOb25lKQorCisgICAgIyBB
ZGQgYXR0cmlidXRlcyB0byByb290IGVsZW1lbnQKKyAgICBzZWxmLm5fcm9vdCA9IHNlbGYuZG9j
LmRvY3VtZW50RWxlbWVudAorICAgIHNlbGYubl9yb290LnNldEF0dHJpYnV0ZSgnVmVyc2lvbics
ICc4LjAwJykKKyAgICBzZWxmLm5fcm9vdC5zZXRBdHRyaWJ1dGUoJ05hbWUnLCBzZWxmLm5hbWUp
CisKKyAgICAjIEFkZCBydWxlcyBzZWN0aW9uCisgICAgc2VsZi5uX3J1bGVzID0gc2VsZi5kb2Mu
Y3JlYXRlRWxlbWVudCgnUnVsZXMnKQorICAgIHNlbGYubl9yb290LmFwcGVuZENoaWxkKHNlbGYu
bl9ydWxlcykKKworICBkZWYgQWRkQ3VzdG9tQnVpbGRSdWxlKHNlbGYsIG5hbWUsIGNtZCwgZGVz
Y3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9kZXBlbmRlbmNp
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0cywgZXh0ZW5zaW9ucyk6CisgICAg
IiIiQWRkcyBhIHJ1bGUgdG8gdGhlIHRvb2wgZmlsZS4KKworICAgIEFyZ3M6CisgICAgICBuYW1l
OiBOYW1lIG9mIHRoZSBydWxlLgorICAgICAgZGVzY3JpcHRpb246IERlc2NyaXB0aW9uIG9mIHRo
ZSBydWxlLgorICAgICAgY21kOiBDb21tYW5kIGxpbmUgb2YgdGhlIHJ1bGUuCisgICAgICBhZGRp
dGlvbmFsX2RlcGVuZGVuY2llczogb3RoZXIgZmlsZXMgd2hpY2ggbWF5IHRyaWdnZXIgdGhlIHJ1
bGUuCisgICAgICBvdXRwdXRzOiBvdXRwdXRzIG9mIHRoZSBydWxlLgorICAgICAgZXh0ZW5zaW9u
czogZXh0ZW5zaW9ucyBoYW5kbGVkIGJ5IHRoZSBydWxlLgorICAgICIiIgorICAgIG5fcnVsZSA9
IHNlbGYuZG9jLmNyZWF0ZUVsZW1lbnQoJ0N1c3RvbUJ1aWxkUnVsZScpCisgICAgbl9ydWxlLnNl
dEF0dHJpYnV0ZSgnTmFtZScsIG5hbWUpCisgICAgbl9ydWxlLnNldEF0dHJpYnV0ZSgnRXhlY3V0
aW9uRGVzY3JpcHRpb24nLCBkZXNjcmlwdGlvbikKKyAgICBuX3J1bGUuc2V0QXR0cmlidXRlKCdD
b21tYW5kTGluZScsIGNtZCkKKyAgICBuX3J1bGUuc2V0QXR0cmlidXRlKCdPdXRwdXRzJywgJzsn
LmpvaW4ob3V0cHV0cykpCisgICAgbl9ydWxlLnNldEF0dHJpYnV0ZSgnRmlsZUV4dGVuc2lvbnMn
LCAnOycuam9pbihleHRlbnNpb25zKSkKKyAgICBuX3J1bGUuc2V0QXR0cmlidXRlKCdBZGRpdGlv
bmFsRGVwZW5kZW5jaWVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc7Jy5qb2luKGFkZGl0
aW9uYWxfZGVwZW5kZW5jaWVzKSkKKyAgICBzZWxmLm5fcnVsZXMuYXBwZW5kQ2hpbGQobl9ydWxl
KQorCisgIGRlZiBXcml0ZShzZWxmLCB3cml0ZXI9Y29tbW9uLldyaXRlT25EaWZmKToKKyAgICAi
IiJXcml0ZXMgdGhlIHRvb2wgZmlsZS4iIiIKKyAgICBmID0gd3JpdGVyKHNlbGYudG9vbF9maWxl
X3BhdGgpCisgICAgZml4ID0geG1sX2ZpeC5YbWxGaXgoKQorICAgIHNlbGYuZG9jLndyaXRleG1s
KGYsIGVuY29kaW5nPSdXaW5kb3dzLTEyNTInLCBhZGRpbmRlbnQ9JyAgJywgbmV3bD0nXHJcbicp
CisgICAgZml4LkNsZWFudXAoKQorICAgIGYuY2xvc2UoKQorCisjLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIvZ3lwL01TVlNVc2Vy
RmlsZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvTVNWU1VzZXJGaWxlLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJhMTY2YTkyYTJjNjMwZDUxMmNkZmUzZGZhMTJmYTM1NGYxZTZhOTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIvZ3lwL01TVlNVc2Vy
RmlsZS5weQpAQCAtMCwwICsxLDE4MiBAQAorIyEvdXNyL2Jpbi9weXRob24yLjQKKworIyBDb3B5
cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiJWaXN1YWwgU3R1ZGlv
IHVzZXIgcHJlZmVyZW5jZXMgZmlsZSB3cml0ZXIuIiIiCisKK2ltcG9ydCBjb21tb24KK2ltcG9y
dCBvcworaW1wb3J0IHJlCitpbXBvcnQgc29ja2V0ICMgZm9yIGdldGhvc3RuYW1lCitpbXBvcnQg
eG1sLmRvbQoraW1wb3J0IHhtbF9maXgKKworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Rl
ZiBfRmluZENvbW1hbmRJblBhdGgoY29tbWFuZCk6CisgICIiIklmIHRoZXJlIGFyZSBubyBzbGFz
aGVzIGluIHRoZSBjb21tYW5kIGdpdmVuLCB0aGlzIGZ1bmN0aW9uCisgICAgIHNlYXJjaGVzIHRo
ZSBQQVRIIGVudiB0byBmaW5kIHRoZSBnaXZlbiBjb21tYW5kLCBhbmQgY29udmVydHMgaXQKKyAg
ICAgdG8gYW4gYWJzb2x1dGUgcGF0aC4gIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIE1TVlMg
aXMgbG9va2luZworICAgICBmb3IgYW4gYWN0dWFsIGZpbGUgdG8gbGF1bmNoIGEgZGVidWdnZXIg
b24sIG5vdCBqdXN0IGEgY29tbWFuZAorICAgICBsaW5lLiAgTm90ZSB0aGF0IHRoaXMgaGFwcGVu
cyBhdCBHWVAgdGltZSwgc28gYW55dGhpbmcgbmVlZGluZyB0bworICAgICBiZSBidWlsdCBuZWVk
cyB0byBoYXZlIGEgZnVsbCBwYXRoLiIiIgorICBpZiAnLycgaW4gY29tbWFuZCBvciAnXFwnIGlu
IGNvbW1hbmQ6CisgICAgIyBJZiB0aGUgY29tbWFuZCBhbHJlYWR5IGhhcyBwYXRoIGVsZW1lbnRz
IChlaXRoZXIgcmVsYXRpdmUgb3IKKyAgICAjIGFic29sdXRlKSwgdGhlbiBhc3N1bWUgaXQgaXMg
Y29uc3RydWN0ZWQgcHJvcGVybHkuCisgICAgcmV0dXJuIGNvbW1hbmQKKyAgZWxzZToKKyAgICAj
IFNlYXJjaCB0aHJvdWdoIHRoZSBwYXRoIGxpc3QgYW5kIGZpbmQgYW4gZXhpc3RpbmcgZmlsZSB0
aGF0CisgICAgIyB3ZSBjYW4gYWNjZXNzLgorICAgIHBhdGhzID0gb3MuZW52aXJvbi5nZXQoJ1BB
VEgnLCcnKS5zcGxpdChvcy5wYXRoc2VwKQorICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAg
aXRlbSA9IG9zLnBhdGguam9pbihwYXRoLCBjb21tYW5kKQorICAgICAgaWYgb3MucGF0aC5pc2Zp
bGUoaXRlbSkgYW5kIG9zLmFjY2VzcyhpdGVtLCBvcy5YX09LKToKKyAgICAgICAgcmV0dXJuIGl0
ZW0KKyAgcmV0dXJuIGNvbW1hbmQKKworZGVmIF9RdW90ZVdpbjMyQ29tbWFuZExpbmVBcmdzKGFy
Z3MpOgorICBuZXdfYXJncyA9IFtdCisgIGZvciBhcmcgaW4gYXJnczoKKyAgICAjIFJlcGxhY2Ug
YWxsIGRvdWJsZS1xdW90ZXMgd2l0aCBkb3VibGUtZG91YmxlLXF1b3RlcyB0byBlc2NhcGUKKyAg
ICAjIHRoZW0gZm9yIGNtZCBzaGVsbCwgYW5kIHRoZW4gcXVvdGUgdGhlIHdob2xlIHRoaW5nIGlm
IHRoZXJlCisgICAgIyBhcmUgYW55LgorICAgIGlmIGFyZy5maW5kKCciJykgIT0gLTE6CisgICAg
ICBhcmcgPSAnIiInLmpvaW4oYXJnLnNwbGl0KCciJykpCisgICAgICBhcmcgPSAnIiVzIicgJSBh
cmcKKworICAgICMgT3RoZXJ3aXNlLCBpZiB0aGVyZSBhcmUgYW55IHNwYWNlcywgcXVvdGUgdGhl
IHdob2xlIGFyZy4KKyAgICBlbGlmIHJlLnNlYXJjaChyJ1sgXHRcbl0nLCBhcmcpOgorICAgICAg
YXJnID0gJyIlcyInICUgYXJnCisgICAgbmV3X2FyZ3MuYXBwZW5kKGFyZykKKyAgcmV0dXJuIG5l
d19hcmdzCisKK2NsYXNzIFdyaXRlcihvYmplY3QpOgorICAiIiJWaXN1YWwgU3R1ZGlvIFhNTCB1
c2VyIHVzZXIgZmlsZSB3cml0ZXIuIiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZXJfZmls
ZV9wYXRoLCB2ZXJzaW9uKToKKyAgICAiIiJJbml0aWFsaXplcyB0aGUgdXNlciBmaWxlLgorCisg
ICAgQXJnczoKKyAgICAgIHVzZXJfZmlsZV9wYXRoOiBQYXRoIHRvIHRoZSB1c2VyIGZpbGUuCisg
ICAgIiIiCisgICAgc2VsZi51c2VyX2ZpbGVfcGF0aCA9IHVzZXJfZmlsZV9wYXRoCisgICAgc2Vs
Zi52ZXJzaW9uID0gdmVyc2lvbgorICAgIHNlbGYuZG9jID0gTm9uZQorCisgIGRlZiBDcmVhdGUo
c2VsZiwgbmFtZSk6CisgICAgIiIiQ3JlYXRlcyB0aGUgdXNlciBmaWxlIGRvY3VtZW50LgorCisg
ICAgQXJnczoKKyAgICAgIG5hbWU6IE5hbWUgb2YgdGhlIHVzZXIgZmlsZS4KKyAgICAiIiIKKyAg
ICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICAjIENyZWF0ZSBYTUwgZG9jCisgICAgeG1sX2ltcGwg
PSB4bWwuZG9tLmdldERPTUltcGxlbWVudGF0aW9uKCkKKyAgICBzZWxmLmRvYyA9IHhtbF9pbXBs
LmNyZWF0ZURvY3VtZW50KE5vbmUsICdWaXN1YWxTdHVkaW9Vc2VyRmlsZScsIE5vbmUpCisKKyAg
ICAjIEFkZCBhdHRyaWJ1dGVzIHRvIHJvb3QgZWxlbWVudAorICAgIHNlbGYubl9yb290ID0gc2Vs
Zi5kb2MuZG9jdW1lbnRFbGVtZW50CisgICAgc2VsZi5uX3Jvb3Quc2V0QXR0cmlidXRlKCdWZXJz
aW9uJywgc2VsZi52ZXJzaW9uLlByb2plY3RWZXJzaW9uKCkpCisgICAgc2VsZi5uX3Jvb3Quc2V0
QXR0cmlidXRlKCdOYW1lJywgc2VsZi5uYW1lKQorCisgICAgIyBBZGQgY29uZmlndXJhdGlvbnMg
c2VjdGlvbgorICAgIHNlbGYubl9jb25maWdzID0gc2VsZi5kb2MuY3JlYXRlRWxlbWVudCgnQ29u
ZmlndXJhdGlvbnMnKQorICAgIHNlbGYubl9yb290LmFwcGVuZENoaWxkKHNlbGYubl9jb25maWdz
KQorCisgIGRlZiBfQWRkQ29uZmlnVG9Ob2RlKHNlbGYsIHBhcmVudCwgY29uZmlnX3R5cGUsIGNv
bmZpZ19uYW1lKToKKyAgICAiIiJBZGRzIGEgY29uZmlndXJhdGlvbiB0byB0aGUgcGFyZW50IG5v
ZGUuCisKKyAgICBBcmdzOgorICAgICAgcGFyZW50OiBEZXN0aW5hdGlvbiBub2RlLgorICAgICAg
Y29uZmlnX3R5cGU6IFR5cGUgb2YgY29uZmlndXJhdGlvbiBub2RlLgorICAgICAgY29uZmlnX25h
bWU6IENvbmZpZ3VyYXRpb24gbmFtZS4KKyAgICAiIiIKKyAgICAjIEFkZCBjb25maWd1cmF0aW9u
IG5vZGUgYW5kIGl0cyBhdHRyaWJ1dGVzCisgICAgbl9jb25maWcgPSBzZWxmLmRvYy5jcmVhdGVF
bGVtZW50KGNvbmZpZ190eXBlKQorICAgIG5fY29uZmlnLnNldEF0dHJpYnV0ZSgnTmFtZScsIGNv
bmZpZ19uYW1lKQorICAgIHBhcmVudC5hcHBlbmRDaGlsZChuX2NvbmZpZykKKworICBkZWYgQWRk
Q29uZmlnKHNlbGYsIG5hbWUpOgorICAgICIiIkFkZHMgYSBjb25maWd1cmF0aW9uIHRvIHRoZSBw
cm9qZWN0LgorCisgICAgQXJnczoKKyAgICAgIG5hbWU6IENvbmZpZ3VyYXRpb24gbmFtZS4KKyAg
ICAiIiIKKyAgICBzZWxmLl9BZGRDb25maWdUb05vZGUoc2VsZi5uX2NvbmZpZ3MsICdDb25maWd1
cmF0aW9uJywgbmFtZSkKKworCisgIGRlZiBBZGREZWJ1Z1NldHRpbmdzKHNlbGYsIGNvbmZpZ19u
YW1lLCBjb21tYW5kLCBlbnZpcm9ubWVudCA9IHt9LAorICAgICAgICAgICAgICAgICAgICAgICB3
b3JraW5nX2RpcmVjdG9yeT0iIik6CisgICAgIiIiQWRkcyBhIERlYnVnU2V0dGluZ3Mgbm9kZSB0
byB0aGUgdXNlciBmaWxlIGZvciBhIHBhcnRpY3VsYXIgY29uZmlnLgorCisgICAgQXJnczoKKyAg
ICAgIGNvbW1hbmQ6IGNvbW1hbmQgbGluZSB0byBydW4uICBGaXJzdCBlbGVtZW50IGluIHRoZSBs
aXN0IGlzIHRoZQorICAgICAgICBleGVjdXRhYmxlLiAgQWxsIGVsZW1lbnRzIG9mIHRoZSBjb21t
YW5kIHdpbGwgYmUgcXVvdGVkIGlmCisgICAgICAgIG5lY2Vzc2FyeS4KKyAgICAgIHdvcmtpbmdf
ZGlyZWN0b3J5OiBvdGhlciBmaWxlcyB3aGljaCBtYXkgdHJpZ2dlciB0aGUgcnVsZS4gKG9wdGlv
bmFsKQorICAgICIiIgorICAgIGNvbW1hbmQgPSBfUXVvdGVXaW4zMkNvbW1hbmRMaW5lQXJncyhj
b21tYW5kKQorCisgICAgbl9jbWQgPSBzZWxmLmRvYy5jcmVhdGVFbGVtZW50KCdEZWJ1Z1NldHRp
bmdzJykKKyAgICBhYnNfY29tbWFuZCA9IF9GaW5kQ29tbWFuZEluUGF0aChjb21tYW5kWzBdKQor
ICAgIG5fY21kLnNldEF0dHJpYnV0ZSgnQ29tbWFuZCcsIGFic19jb21tYW5kKQorICAgIG5fY21k
LnNldEF0dHJpYnV0ZSgnV29ya2luZ0RpcmVjdG9yeScsIHdvcmtpbmdfZGlyZWN0b3J5KQorICAg
IG5fY21kLnNldEF0dHJpYnV0ZSgnQ29tbWFuZEFyZ3VtZW50cycsICIgIi5qb2luKGNvbW1hbmRb
MTpdKSkKKyAgICBuX2NtZC5zZXRBdHRyaWJ1dGUoJ1JlbW90ZU1hY2hpbmUnLCBzb2NrZXQuZ2V0
aG9zdG5hbWUoKSkKKworICAgIGlmIGVudmlyb25tZW50IGFuZCBpc2luc3RhbmNlKGVudmlyb25t
ZW50LCBkaWN0KToKKyAgICAgIG5fY21kLnNldEF0dHJpYnV0ZSgnRW52aXJvbm1lbnQnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICIgIi5qb2luKFsnJXM9IiVzIicgJSAoa2V5LCB2YWwpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5LHZhbCkgaW4gZW52aXJv
bm1lbnQuaXRlcml0ZW1zKCldKSkKKyAgICBlbHNlOgorICAgICAgbl9jbWQuc2V0QXR0cmlidXRl
KCdFbnZpcm9ubWVudCcsICcnKQorCisgICAgbl9jbWQuc2V0QXR0cmlidXRlKCdFbnZpcm9ubWVu
dE1lcmdlJywgJ3RydWUnKQorCisgICAgIyBDdXJyZW50bHkgdGhlc2UgYXJlIGFsbCAiZHVtbXki
IHZhbHVlcyB0aGF0IHdlJ3JlIGp1c3Qgc2V0dGluZworICAgICMgaW4gdGhlIGRlZmF1bHQgbWFu
bmVyIHRoYXQgTVNWUyBkb2VzIGl0LiAgV2UgY291bGQgdXNlIHNvbWUgb2YKKyAgICAjIHRoZXNl
IHRvIGFkZCBhZGRpdGlvbmFsIGNhcGFiaWxpdGllcywgSSBzdXBwb3NlLCBidXQgdGhleSBtaWdo
dAorICAgICMgbm90IGhhdmUgcGFyaXR5IHdpdGggb3RoZXIgcGxhdGZvcm1zIHRoZW4uCisgICAg
bl9jbWQuc2V0QXR0cmlidXRlKCdBdHRhY2gnLCAnZmFsc2UnKQorICAgIG5fY21kLnNldEF0dHJp
YnV0ZSgnRGVidWdnZXJUeXBlJywgJzMnKSAjICdhdXRvJyBkZWJ1Z2dlcgorICAgIG5fY21kLnNl
dEF0dHJpYnV0ZSgnUmVtb3RlJywgJzEnKQorICAgIG5fY21kLnNldEF0dHJpYnV0ZSgnUmVtb3Rl
Q29tbWFuZCcsICcnKQorICAgIG5fY21kLnNldEF0dHJpYnV0ZSgnSHR0cFVybCcsICcnKQorICAg
IG5fY21kLnNldEF0dHJpYnV0ZSgnUERCUGF0aCcsICcnKQorICAgIG5fY21kLnNldEF0dHJpYnV0
ZSgnU1FMRGVidWdnaW5nJywgJycpCisgICAgbl9jbWQuc2V0QXR0cmlidXRlKCdEZWJ1Z2dlckZs
YXZvcicsICcwJykKKyAgICBuX2NtZC5zZXRBdHRyaWJ1dGUoJ01QSVJ1bkNvbW1hbmQnLCAnJykK
KyAgICBuX2NtZC5zZXRBdHRyaWJ1dGUoJ01QSVJ1bkFyZ3VtZW50cycsICcnKQorICAgIG5fY21k
LnNldEF0dHJpYnV0ZSgnTVBJUnVuV29ya2luZ0RpcmVjdG9yeScsICcnKQorICAgIG5fY21kLnNl
dEF0dHJpYnV0ZSgnQXBwbGljYXRpb25Db21tYW5kJywgJycpCisgICAgbl9jbWQuc2V0QXR0cmli
dXRlKCdBcHBsaWNhdGlvbkFyZ3VtZW50cycsICcnKQorICAgIG5fY21kLnNldEF0dHJpYnV0ZSgn
U2hpbUNvbW1hbmQnLCAnJykKKyAgICBuX2NtZC5zZXRBdHRyaWJ1dGUoJ01QSUFjY2VwdE1vZGUn
LCAnJykKKyAgICBuX2NtZC5zZXRBdHRyaWJ1dGUoJ01QSUFjY2VwdEZpbHRlcicsICcnKQorCisg
ICAgIyBGaW5kIHRoZSBjb25maWcsIGFuZCBhZGQgaXQgaWYgaXQgZG9lc24ndCBleGlzdC4KKyAg
ICBmb3VuZCA9IEZhbHNlCisgICAgZm9yIGNvbmZpZyBpbiBzZWxmLm5fY29uZmlncy5jaGlsZE5v
ZGVzOgorICAgICAgaWYgY29uZmlnLmdldEF0dHJpYnV0ZSgiTmFtZSIpID09IGNvbmZpZ19uYW1l
OgorICAgICAgICBmb3VuZCA9IFRydWUKKworICAgIGlmIG5vdCBmb3VuZDoKKyAgICAgIHNlbGYu
QWRkQ29uZmlnKGNvbmZpZ19uYW1lKQorCisgICAgIyBBZGQgdGhlIERlYnVnU2V0dGluZ3Mgb250
byB0aGUgYXBwcm9wcmlhdGUgY29uZmlnLgorICAgIGZvciBjb25maWcgaW4gc2VsZi5uX2NvbmZp
Z3MuY2hpbGROb2RlczoKKyAgICAgIGlmIGNvbmZpZy5nZXRBdHRyaWJ1dGUoIk5hbWUiKSA9PSBj
b25maWdfbmFtZToKKyAgICAgICAgY29uZmlnLmFwcGVuZENoaWxkKG5fY21kKQorICAgICAgICBi
cmVhaworCisgIGRlZiBXcml0ZShzZWxmLCB3cml0ZXI9Y29tbW9uLldyaXRlT25EaWZmKToKKyAg
ICAiIiJXcml0ZXMgdGhlIHVzZXIgZmlsZS4iIiIKKyAgICBmID0gd3JpdGVyKHNlbGYudXNlcl9m
aWxlX3BhdGgpCisgICAgc2VsZi5kb2Mud3JpdGV4bWwoZiwgZW5jb2Rpbmc9J1dpbmRvd3MtMTI1
MicsIGFkZGluZGVudD0nICAnLCBuZXdsPSdcclxuJykKKyAgICBmLmNsb3NlKCkKKworIy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGli
L2d5cC9NU1ZTVmVyc2lvbi5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvTVNW
U1ZlcnNpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIwNmViNmJjMWFjMjgyYjE5YTg4ZTE5Y2ZlYTY1OWM0
ZjI0ZjFhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9n
eXAvTVNWU1ZlcnNpb24ucHkKQEAgLTAsMCArMSwyMDAgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisK
KyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiSGFuZGxl
IHZlcnNpb24gaW5mb3JtYXRpb24gcmVsYXRlZCB0byBWaXN1YWwgU3R1aW8uIiIiCisKK2ltcG9y
dCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworCisKK2NsYXNz
IFZpc3VhbFN0dWRpb1ZlcnNpb246CisgICIiIkluZm9ybWF0aW9uIHJlZ2FyZGluZyBhIHZlcnNp
b24gb2YgVmlzdWFsIFN0dWRpby4iIiIKKworICBkZWYgX19pbml0X18oc2VsZiwgc2hvcnRfbmFt
ZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICBzb2x1dGlvbl92ZXJzaW9uLCBwcm9qZWN0
X3ZlcnNpb24sIGZsYXRfc2xuLCB1c2VzX3ZjeHByb2opOgorICAgIHNlbGYuc2hvcnRfbmFtZSA9
IHNob3J0X25hbWUKKyAgICBzZWxmLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KKyAgICBzZWxm
LnNvbHV0aW9uX3ZlcnNpb24gPSBzb2x1dGlvbl92ZXJzaW9uCisgICAgc2VsZi5wcm9qZWN0X3Zl
cnNpb24gPSBwcm9qZWN0X3ZlcnNpb24KKyAgICBzZWxmLmZsYXRfc2xuID0gZmxhdF9zbG4KKyAg
ICBzZWxmLnVzZXNfdmN4cHJvaiA9IHVzZXNfdmN4cHJvagorCisgIGRlZiBTaG9ydE5hbWUoc2Vs
Zik6CisgICAgcmV0dXJuIHNlbGYuc2hvcnRfbmFtZQorCisgIGRlZiBEZXNjcmlwdGlvbihzZWxm
KToKKyAgICAiIiJHZXQgdGhlIGZ1bGwgZGVzY3JpcHRpb24gb2YgdGhlIHZlcnNpb24uIiIiCisg
ICAgcmV0dXJuIHNlbGYuZGVzY3JpcHRpb24KKworICBkZWYgU29sdXRpb25WZXJzaW9uKHNlbGYp
OgorICAgICIiIkdldCB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIHNsbiBmaWxlcy4iIiIKKyAg
ICByZXR1cm4gc2VsZi5zb2x1dGlvbl92ZXJzaW9uCisKKyAgZGVmIFByb2plY3RWZXJzaW9uKHNl
bGYpOgorICAgICIiIkdldCB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIHZjcHJvaiBvciB2Y3hw
cm9qIGZpbGVzLiIiIgorICAgIHJldHVybiBzZWxmLnByb2plY3RfdmVyc2lvbgorCisgIGRlZiBG
bGF0U29sdXRpb24oc2VsZik6CisgICAgcmV0dXJuIHNlbGYuZmxhdF9zbG4KKworICBkZWYgVXNl
c1ZjeHByb2ooc2VsZik6CisgICAgIiIiUmV0dXJucyB0cnVlIGlmIHRoaXMgdmVyc2lvbiB1c2Vz
IGEgdmN4cHJvaiBmaWxlLiIiIgorICAgIHJldHVybiBzZWxmLnVzZXNfdmN4cHJvagorCisgIGRl
ZiBQcm9qZWN0RXh0ZW5zaW9uKHNlbGYpOgorICAgICIiIlJldHVybnMgdGhlIGZpbGUgZXh0ZW5z
aW9uIGZvciB0aGUgcHJvamVjdC4iIiIKKyAgICByZXR1cm4gc2VsZi51c2VzX3ZjeHByb2ogYW5k
ICcudmN4cHJvaicgb3IgJy52Y3Byb2onCisKK2RlZiBfUmVnaXN0cnlHZXRWYWx1ZShrZXksIHZh
bHVlKToKKyAgIiIiVXNlIHJlZy5leGUgdG8gcmVhZCBhIHBhcmljdWxhciBrZXkuCisKKyAgV2hp
bGUgaWRlYWxseSB3ZSBtaWdodCB1c2UgdGhlIHdpbjMyIG1vZHVsZSwgd2Ugd291bGQgbGlrZSBn
eXAgdG8gYmUKKyAgcHl0aG9uIG5ldXRyYWwsIHNvIGZvciBpbnN0YW5jZSBjeWd3aW4gcHl0aG9u
IGxhY2tzIHRoaXMgbW9kdWxlLgorCisgIEFyZ3VtZW50czoKKyAgICBrZXk6IFRoZSByZWdpc3Ry
eSBrZXkgdG8gcmVhZCBmcm9tLgorICAgIHZhbHVlOiBUaGUgcGFydGljdWxhciB2YWx1ZSB0byBy
ZWFkLgorICBSZXR1cm46CisgICAgVGhlIGNvbnRlbnRzIHRoZXJlLCBvciBOb25lIGZvciBmYWls
dXJlLgorICAiIiIKKyAgIyBTa2lwIGlmIG5vdCBvbiBXaW5kb3dzLgorICBpZiBzeXMucGxhdGZv
cm0gbm90IGluICgnd2luMzInLCAnY3lnd2luJyk6CisgICAgcmV0dXJuIE5vbmUKKyAgIyBSdW4g
cmVnLmV4ZS4KKyAgY21kID0gW29zLnBhdGguam9pbihvcy5lbnZpcm9uLmdldCgnV0lORElSJywg
JycpLCAnU3lzdGVtMzInLCAncmVnLmV4ZScpLAorICAgICAgICAgJ3F1ZXJ5Jywga2V5LCAnL3Yn
LCB2YWx1ZV0KKyAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5Q
SVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICB0ZXh0ID0gcC5jb21tdW5pY2F0ZSgpWzBd
CisgICMgUmVxdWlyZSBhIHN1Y2Nlc3NmdWwgcmV0dXJuIHZhbHVlLgorICBpZiBwLnJldHVybmNv
ZGU6CisgICAgcmV0dXJuIE5vbmUKKyAgIyBFeHRyYWN0IHZhbHVlLgorICBtYXRjaCA9IHJlLnNl
YXJjaChyJ1JFR19cdytccysoW15ccl0rKVxyXG4nLCB0ZXh0KQorICBpZiBub3QgbWF0Y2g6Cisg
ICAgcmV0dXJuIE5vbmUKKyAgcmV0dXJuIG1hdGNoLmdyb3VwKDEpCisKKworZGVmIF9SZWdpc3Ry
eUtleUV4aXN0cyhrZXkpOgorICAiIiJVc2UgcmVnLmV4ZSB0byBzZWUgaWYgYSBrZXkgZXhpc3Rz
LgorCisgIEFyZ3M6CisgICAga2V5OiBUaGUgcmVnaXN0cnkga2V5IHRvIGNoZWNrLgorICBSZXR1
cm46CisgICAgVHJ1ZSBpZiB0aGUga2V5IGV4aXN0cworICAiIiIKKyAgIyBTa2lwIGlmIG5vdCBv
biBXaW5kb3dzLgorICBpZiBzeXMucGxhdGZvcm0gbm90IGluICgnd2luMzInLCAnY3lnd2luJyk6
CisgICAgcmV0dXJuIE5vbmUKKyAgIyBSdW4gcmVnLmV4ZS4KKyAgY21kID0gW29zLnBhdGguam9p
bihvcy5lbnZpcm9uLmdldCgnV0lORElSJywgJycpLCAnU3lzdGVtMzInLCAncmVnLmV4ZScpLAor
ICAgICAgICAgJ3F1ZXJ5Jywga2V5XQorICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91
dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgIHJldHVybiBwLnJl
dHVybmNvZGUgPT0gMAorCisKK2RlZiBfQ3JlYXRlVmVyc2lvbihuYW1lKToKKyAgdmVyc2lvbnMg
PSB7CisgICAgICAnMjAxMCc6IFZpc3VhbFN0dWRpb1ZlcnNpb24oJzIwMTAnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdWaXN1YWwgU3R1ZGlvIDIwMTAnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNvbHV0aW9uX3ZlcnNpb249JzExLjAwJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0X3ZlcnNpb249JzQuMCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhdF9zbG49RmFsc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXNlc192Y3hwcm9qPVRydWUpLAorICAgICAgJzIwMDgn
OiBWaXN1YWxTdHVkaW9WZXJzaW9uKCcyMDA4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnVmlzdWFsIFN0dWRpbyAyMDA4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzb2x1dGlvbl92ZXJzaW9uPScxMC4wMCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvamVjdF92ZXJzaW9uPSc5LjAwJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGF0X3Nsbj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1c2VzX3ZjeHByb2o9RmFsc2UpLAorICAgICAgJzIwMDhlJzogVmlzdWFsU3R1ZGlv
VmVyc2lvbignMjAwOGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVmlz
dWFsIFN0dWRpbyAyMDA4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29s
dXRpb25fdmVyc2lvbj0nMTAuMDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9qZWN0X3ZlcnNpb249JzkuMDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbGF0X3Nsbj1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c2VzX3ZjeHByb2o9RmFsc2UpLAorICAgICAgJzIwMDUnOiBWaXN1YWxTdHVkaW9WZXJzaW9uKCcy
MDA1JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVmlzdWFsIFN0dWRpbyAy
MDA1JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2x1dGlvbl92ZXJzaW9u
PSc5LjAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0X3ZlcnNp
b249JzguMDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYXRfc2xuPUZh
bHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXNfdmN4cHJvaj1GYWxz
ZSksCisgICAgICAnMjAwNWUnOiBWaXN1YWxTdHVkaW9WZXJzaW9uKCcyMDA1ZScsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWaXN1YWwgU3R1ZGlvIDIwMDUnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2x1dGlvbl92ZXJzaW9uPSc5LjAwJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdF92ZXJzaW9uPSc4LjAwJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhdF9zbG49VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlc192Y3hwcm9qPUZhbHNlKSwKKyAgfQor
ICByZXR1cm4gdmVyc2lvbnNbc3RyKG5hbWUpXQorCisKK2RlZiBfRGV0ZWN0VmlzdWFsU3R1ZGlv
VmVyc2lvbnMoKToKKyAgIiIiQ29sbGVjdCB0aGUgbGlzdCBvZiBpbnN0YWxsZWQgdmlzdWFsIHN0
dWRpbyB2ZXJzaW9ucy4KKworICBSZXR1cm5zOgorICAgIEEgbGlzdCBvZiB2aXN1YWwgc3R1ZGlv
IHZlcnNpb25zIGluc3RhbGxlZCBpbiBkZXNjZW5kaW5nIG9yZGVyIG9mCisgICAgdXNhZ2UgcHJl
ZmVyZW5jZS4KKyAgICBCYXNlIHRoaXMgb24gdGhlIHJlZ2lzdHJ5IGFuZCBhIHF1aWNrIGNoZWNr
IGlmIGRldmVudi5leGUgZXhpc3RzLgorICAgIE9ubHkgdmVyc2lvbnMgOC0xMCBhcmUgY29uc2lk
ZXJlZC4KKyAgICBQb3NzaWJpbGl0aWVzIGFyZToKKyAgICAgIDIwMDUgLSBWaXN1YWwgU3R1ZGlv
IDIwMDUgKDgpCisgICAgICAyMDA4IC0gVmlzdWFsIFN0dWRpbyAyMDA4ICg5KQorICAgICAgMjAx
MCAtIFZpc3VhbCBTdHVkaW8gMjAxMCAoMTApCisgICIiIgorICB2ZXJzaW9uX3RvX3llYXIgPSB7
JzguMCc6ICcyMDA1JywgJzkuMCc6ICcyMDA4JywgJzEwLjAnOiAnMjAxMCd9CisgIHZlcnNpb25z
ID0gW10KKyAgIyBGb3Igbm93LCBwcmVmZXIgdmVyc2lvbnMgYmVmb3JlIFZTMjAxMAorICBmb3Ig
dmVyc2lvbiBpbiAoJzkuMCcsICc4LjAnLCAnMTAuMCcpOgorICAgICMgQ2hlY2sgaWYgVlMyMDEw
IGFuZCBsYXRlciBpcyBpbnN0YWxsZWQgYXMgc3BlY2lmaWVkIGJ5CisgICAgIyBodHRwOi8vbXNk
bi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvYmIxNjQ2NTkuYXNweAorICAgIGtleTMyID0g
cidIS0xNXFNPRlRXQVJFXE1pY3Jvc29mdFxEZXZEaXZcVlNcU2VydmljaW5nXCVzJyAlIHZlcnNp
b24KKyAgICBrZXk2NCA9IHInSEtMTVxTT0ZUV0FSRVxXb3c2NDMyTm9kZVxNaWNyb3NvZnRcRGV2
RGl2XFZTXFNlcnZpY2luZ1wlc0QnICUgKAorICAgICAgICAgdmVyc2lvbikKKyAgICBpZiBfUmVn
aXN0cnlLZXlFeGlzdHMoa2V5MzIpIG9yIF9SZWdpc3RyeUtleUV4aXN0cyhrZXk2NCk6CisgICAg
ICAjIEFkZCB0aGlzIG9uZS4KKyAgICAgICMgVE9ETyhqZWFubHVjKSBUaGlzIGRvZXMgbm90IGNo
ZWNrIGZvciBhbiBleHByZXNzIHZlcnNpb24uCisgICAgICAjIFRPRE8oamVhbmx1YykgVW5jb21t
ZW50IHRoaXMgbGluZSB3aGVuIHJlYWR5IHRvIHN1cHBvcnQgVlMyMDEwOgorICAgICAgIyB2ZXJz
aW9ucy5hcHBlbmQoX0NyZWF0ZVZlcnNpb24odmVyc2lvbl90b195ZWFyW3ZlcnNpb25dKSkKKyAg
ICAgIGNvbnRpbnVlCisgICAgIyBHZXQgdGhlIGluc3RhbGwgZGlyIGZvciB0aGlzIHZlcnNpb24u
CisgICAga2V5ID0gcidIS0xNXFNvZnR3YXJlXE1pY3Jvc29mdFxWaXN1YWxTdHVkaW9cJXMnICUg
dmVyc2lvbgorICAgIHBhdGggPSBfUmVnaXN0cnlHZXRWYWx1ZShrZXksICdJbnN0YWxsRGlyJykK
KyAgICBpZiBub3QgcGF0aDoKKyAgICAgIGNvbnRpbnVlCisgICAgIyBDaGVjayBmb3IgZnVsbC4K
KyAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocGF0aCwgJ2RldmVudi5leGUnKSk6
CisgICAgICAjIEFkZCB0aGlzIG9uZS4KKyAgICAgIHZlcnNpb25zLmFwcGVuZChfQ3JlYXRlVmVy
c2lvbih2ZXJzaW9uX3RvX3llYXJbdmVyc2lvbl0pKQorICAgICMgQ2hlY2sgZm9yIGV4cHJlc3Mu
CisgICAgZWxpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocGF0aCwgJ3ZjZXhwcmVzcy5l
eGUnKSk6CisgICAgICAjIEFkZCB0aGlzIG9uZS4KKyAgICAgIHZlcnNpb25zLmFwcGVuZChfQ3Jl
YXRlVmVyc2lvbih2ZXJzaW9uX3RvX3llYXJbdmVyc2lvbl0gKyAnZScpKQorICByZXR1cm4gdmVy
c2lvbnMKKworCitkZWYgU2VsZWN0VmlzdWFsU3R1ZGlvVmVyc2lvbih2ZXJzaW9uPSdhdXRvJyk6
CisgICIiIlNlbGVjdCB3aGljaCB2ZXJzaW9uIG9mIFZpc3VhbCBTdHVkaW8gcHJvamVjdHMgdG8g
Z2VuZXJhdGUuCisKKyAgQXJndW1lbnRzOgorICAgIHZlcnNpb246IEhvb2sgdG8gYWxsb3cgY2Fs
bGVyIHRvIGZvcmNlIGEgcGFydGljdWxhciB2ZXJzaW9uICh2cyBhdXRvKS4KKyAgUmV0dXJuczoK
KyAgICBBbiBvYmplY3QgcmVwcmVzZW50aW5nIGEgdmlzdWFsIHN0dWRpbyBwcm9qZWN0IGZvcm1h
dCB2ZXJzaW9uLgorICAiIiIKKyAgIyBJbiBhdXRvIG1vZGUsIGNoZWNrIGVudmlyb25tZW50IHZh
cmlhYmxlIGZvciBvdmVycmlkZS4KKyAgaWYgdmVyc2lvbiA9PSAnYXV0byc6CisgICAgdmVyc2lv
biA9IG9zLmVudmlyb24uZ2V0KCdHWVBfTVNWU19WRVJTSU9OJywgJ2F1dG8nKQorICAjIEluIGF1
dG8gbW9kZSwgcGljayB0aGUgbW9zdCBwcmVmZXJyZWQgdmVyc2lvbiBwcmVzZW50LgorICBpZiB2
ZXJzaW9uID09ICdhdXRvJzoKKyAgICB2ZXJzaW9ucyA9IF9EZXRlY3RWaXN1YWxTdHVkaW9WZXJz
aW9ucygpCisgICAgaWYgbm90IHZlcnNpb25zOgorICAgICAgIyBEZWZhdWx0IHRvIDIwMDUuCisg
ICAgICByZXR1cm4gX0NyZWF0ZVZlcnNpb24oJzIwMDUnKQorICAgIHJldHVybiB2ZXJzaW9uc1sw
XQorICAjIENvbnZlcnQgdmVyc2lvbiBzdHJpbmcgaW50byBhIHZlcnNpb24gb2JqZWN0LgorICBy
ZXR1cm4gX0NyZWF0ZVZlcnNpb24odmVyc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC9weWxpYi9neXAvU0NvbnMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIv
Z3lwL1NDb25zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljNTdiY2JmYzQ4ZjlhOTk1M2E0N2I4NzFlYjEwZmZi
ODY2ZTEwNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIv
Z3lwL1NDb25zLnB5CkBAIC0wLDAgKzEsMjAwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKwor
IyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1NDb25z
IGdlbmVyYXRvci4KKworVGhpcyBjb250YWlucyBjbGFzcyBkZWZpbml0aW9ucyBhbmQgc3VwcG9y
dGluZyBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcKK3BpZWNlcyBvZiBTQ29ucyBmaWxlcyBmb3Ig
dGhlIGRpZmZlcmVudCB0eXBlcyBvZiBHWVAgdGFyZ2V0cy4KKyIiIgorCitpbXBvcnQgb3MKKwor
CitkZWYgV3JpdGVMaXN0KGZwLCBsaXN0LCBwcmVmaXg9JycsCisgICAgICAgICAgICAgICAgICAg
ICAgICBzZXBhcmF0b3I9JyxcbiAgICAnLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJlYW1i
bGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RhbWJsZT1Ob25lKToKKyAgZnAu
d3JpdGUocHJlYW1ibGUgb3IgJycpCisgIGZwLndyaXRlKChzZXBhcmF0b3Igb3IgJyAnKS5qb2lu
KFtwcmVmaXggKyBsIGZvciBsIGluIGxpc3RdKSkKKyAgZnAud3JpdGUocG9zdGFtYmxlIG9yICcn
KQorCisKK2NsYXNzIFRhcmdldEJhc2Uob2JqZWN0KToKKyAgIiIiCisgIEJhc2UgY2xhc3MgZm9y
IGEgU0NvbnMgcmVwcmVzZW50YXRpb24gb2YgYSBHWVAgdGFyZ2V0LgorICAiIiIKKyAgaXNfaWdu
b3JlZCA9IEZhbHNlCisgIHRhcmdldF9wcmVmaXggPSAnJworICB0YXJnZXRfc3VmZml4ID0gJycK
KyAgZGVmIF9faW5pdF9fKHNlbGYsIHNwZWMpOgorICAgIHNlbGYuc3BlYyA9IHNwZWMKKyAgZGVm
IGZ1bGxfcHJvZHVjdF9uYW1lKHNlbGYpOgorICAgICIiIgorICAgIFJldHVybnMgdGhlIGZ1bGwg
bmFtZSBvZiB0aGUgcHJvZHVjdCBiZWluZyBidWlsdDoKKworICAgICAgKiBVc2VzICdwcm9kdWN0
X25hbWUnIGlmIGl0J3Mgc2V0LCBlbHNlIHByZWZpeCArICd0YXJnZXRfbmFtZScuCisgICAgICAq
IFByZXBlbmRzICdwcm9kdWN0X2RpcicgaWYgc2V0LgorICAgICAgKiBBcHBlbmRzIFNDb25zIHN1
ZmZpeCB2YXJpYWJsZXMgZm9yIHRoZSB0YXJnZXQgdHlwZSAob3IKKyAgICAgICAgcHJvZHVjdF9l
eHRlbnNpb24pLgorICAgICIiIgorICAgIHN1ZmZpeCA9IHNlbGYudGFyZ2V0X3N1ZmZpeAorICAg
IHByb2R1Y3RfZXh0ZW5zaW9uID0gc2VsZi5zcGVjLmdldCgncHJvZHVjdF9leHRlbnNpb24nKQor
ICAgIGlmIHByb2R1Y3RfZXh0ZW5zaW9uOgorICAgICAgc3VmZml4ID0gJy4nICsgcHJvZHVjdF9l
eHRlbnNpb24KKyAgICBwcmVmaXggPSBzZWxmLnNwZWMuZ2V0KCdwcm9kdWN0X3ByZWZpeCcsIHNl
bGYudGFyZ2V0X3ByZWZpeCkKKyAgICBuYW1lID0gc2VsZi5zcGVjWyd0YXJnZXRfbmFtZSddCisg
ICAgbmFtZSA9IHByZWZpeCArIHNlbGYuc3BlYy5nZXQoJ3Byb2R1Y3RfbmFtZScsIG5hbWUpICsg
c3VmZml4CisgICAgcHJvZHVjdF9kaXIgPSBzZWxmLnNwZWMuZ2V0KCdwcm9kdWN0X2RpcicpCisg
ICAgaWYgcHJvZHVjdF9kaXI6CisgICAgICBuYW1lID0gb3MucGF0aC5qb2luKHByb2R1Y3RfZGly
LCBuYW1lKQorICAgIGVsc2U6CisgICAgICBuYW1lID0gb3MucGF0aC5qb2luKHNlbGYub3V0X2Rp
ciwgbmFtZSkKKyAgICByZXR1cm4gbmFtZQorCisgIGRlZiB3cml0ZV9pbnB1dF9maWxlcyhzZWxm
LCBmcCk6CisgICAgIiIiCisgICAgV3JpdGVzIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBpbnB1dCBm
aWxlcyAoc291cmNlcykuCisgICAgIiIiCisgICAgc291cmNlcyA9IHNlbGYuc3BlYy5nZXQoJ3Nv
dXJjZXMnKQorICAgIGlmIG5vdCBzb3VyY2VzOgorICAgICAgZnAud3JpdGUoJ1xuaW5wdXRfZmls
ZXMgPSBbXVxuJykKKyAgICAgIHJldHVybgorICAgIHByZWFtYmxlID0gJ1xuaW5wdXRfZmlsZXMg
PSBbXG4gICAgJworICAgIHBvc3RhbWJsZSA9ICcsXG5dXG4nCisgICAgV3JpdGVMaXN0KGZwLCBt
YXAocmVwciwgc291cmNlcyksIHByZWFtYmxlPXByZWFtYmxlLCBwb3N0YW1ibGU9cG9zdGFtYmxl
KQorCisgIGRlZiBidWlsZGVyX2NhbGwoc2VsZik6CisgICAgIiIiCisgICAgUmV0dXJucyB0aGUg
YWN0dWFsIFNDb25zIGJ1aWxkZXIgY2FsbCB0byBidWlsZCB0aGlzIHRhcmdldC4KKyAgICAiIiIK
KyAgICBuYW1lID0gc2VsZi5mdWxsX3Byb2R1Y3RfbmFtZSgpCisgICAgcmV0dXJuICdlbnYuJXMo
ZW52LkZpbGUoJXIpLCBpbnB1dF9maWxlcyknICUgKHNlbGYuYnVpbGRlcl9uYW1lLCBuYW1lKQor
ICBkZWYgd3JpdGVfdGFyZ2V0KHNlbGYsIGZwLCBzcmNfZGlyPScnLCBwcmU9JycpOgorICAgICIi
IgorICAgIFdyaXRlcyB0aGUgbGluZXMgbmVjZXNzYXJ5IHRvIGJ1aWxkIHRoaXMgdGFyZ2V0Lgor
ICAgICIiIgorICAgIGZwLndyaXRlKCdcbicgKyBwcmUpCisgICAgZnAud3JpdGUoJ19vdXRwdXRz
ID0gJXNcbicgJSBzZWxmLmJ1aWxkZXJfY2FsbCgpKQorICAgIGZwLndyaXRlKCd0YXJnZXRfZmls
ZXMuZXh0ZW5kKF9vdXRwdXRzKVxuJykKKworCitjbGFzcyBOb25lVGFyZ2V0KFRhcmdldEJhc2Up
OgorICAiIiIKKyAgQSBHWVAgdGFyZ2V0IHR5cGUgb2YgJ25vbmUnLCBpbXBsaWNpdGx5IG9yIGV4
cGxpY2l0bHkuCisgICIiIgorICBkZWYgd3JpdGVfdGFyZ2V0KHNlbGYsIGZwLCBwcmU9JycpOgor
ICAgIGZwLndyaXRlKCdcbnRhcmdldF9maWxlcy5leHRlbmQoaW5wdXRfZmlsZXMpXG4nKQorCisK
K2NsYXNzIFNldHRpbmdzVGFyZ2V0KFRhcmdldEJhc2UpOgorICAiIiIKKyAgQSBHWVAgdGFyZ2V0
IHR5cGUgb2YgJ3NldHRpbmdzJy4KKyAgIiIiCisgIGlzX2lnbm9yZWQgPSBUcnVlCisKKworY29t
cGlsYWJsZV9zb3VyY2VzX3RlbXBsYXRlID0gIiIiCitfcmVzdWx0ID0gW10KK2ZvciBpbmZpbGUg
aW4gaW5wdXRfZmlsZXM6CisgIGlmIGVudi5jb21waWxhYmxlKGluZmlsZSk6CisgICAgaWYgKHR5
cGUoaW5maWxlKSA9PSB0eXBlKCcnKQorICAgICAgICBhbmQgKGluZmlsZS5zdGFydHN3aXRoKCUo
c3JjX2RpcilyKQorICAgICAgICAgICAgIG9yIG5vdCBvcy5wYXRoLmlzYWJzKGVudi5zdWJzdChp
bmZpbGUpKSkpOgorICAgICAgIyBGb3JjZSBmaWxlcyBiZWxvdyB0aGUgYnVpbGQgZGlyZWN0b3J5
IGJ5IHJlcGxhY2luZyBhbGwgJy4uJworICAgICAgIyBlbGVtZW50cyBpbiB0aGUgcGF0aCB3aXRo
ICdfXyc6CisgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGgubm9ybXBh
dGgoaW5maWxlKSkKKyAgICAgIGJhc2UgPSBbZCA9PSAnLi4nIGFuZCAnX18nIG9yIGQgZm9yIGQg
aW4gYmFzZS5zcGxpdCgnLycpXQorICAgICAgYmFzZSA9IG9zLnBhdGguam9pbigqYmFzZSkKKyAg
ICAgIG9iamVjdCA9ICcke09CSl9ESVJ9LyR7Q09NUE9ORU5UX05BTUV9LyR7VEFSR0VUX05BTUV9
LycgKyBiYXNlCisgICAgICBpZiBub3QgaW5maWxlLnN0YXJ0c3dpdGgoJShzcmNfZGlyKXIpOgor
ICAgICAgICBpbmZpbGUgPSAlKHNyY19kaXIpciArIGluZmlsZQorICAgICAgaW5maWxlID0gZW52
LiUobmFtZSlzKG9iamVjdCwgaW5maWxlKVswXQorICAgIGVsc2U6CisgICAgICBpbmZpbGUgPSBl
bnYuJShuYW1lKXMoaW5maWxlKVswXQorICBfcmVzdWx0LmFwcGVuZChpbmZpbGUpCitpbnB1dF9m
aWxlcyA9IF9yZXN1bHQKKyIiIgorCitjbGFzcyBDb21waWxhYmxlU291cmNlc1RhcmdldEJhc2Uo
VGFyZ2V0QmFzZSk6CisgICIiIgorICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0YXJnZXRz
IHRoYXQgY29tcGlsZSB0aGVpciBzb3VyY2UgZmlsZXMuCisKKyAgV2UgZXhwbGljaXRseSB0cmFu
c2Zvcm0gY29tcGlsYWJsZSBmaWxlcyBpbnRvIG9iamVjdCBmaWxlcywKKyAgZXZlbiB0aG91Z2gg
U0NvbnMgY291bGQgaW5mZXIgdGhhdCBmb3IgdXMsIGJlY2F1c2Ugd2Ugd2FudAorICB0byBjb250
cm9sIHdoZXJlIHRoZSBvYmplY3QgZmlsZSBlbmRzIHVwLiAgKFRoZSBpbXBsaWNpdCBydWxlcwor
ICBpbiBTQ29ucyBhbHdheXMgcHV0IHRoZSBvYmplY3QgZmlsZSBuZXh0IHRvIHRoZSBzb3VyY2Ug
ZmlsZS4pCisgICIiIgorICBpbnRlcm1lZGlhdGVfYnVpbGRlcl9uYW1lID0gTm9uZQorICBkZWYg
d3JpdGVfdGFyZ2V0KHNlbGYsIGZwLCBzcmNfZGlyPScnLCBwcmU9JycpOgorICAgIGlmIHNlbGYu
aW50ZXJtZWRpYXRlX2J1aWxkZXJfbmFtZSBpcyBOb25lOgorICAgICAgcmFpc2UgTm90SW1wbGVt
ZW50ZWRFcnJvcgorICAgIGlmIHNyY19kaXIgYW5kIG5vdCBzcmNfZGlyLmVuZHN3aXRoKCcvJyk6
CisgICAgICBzcmNfZGlyICs9ICcvJworICAgIHZhcmlhYmxlcyA9IHsKKyAgICAgICAgJ3NyY19k
aXInOiBzcmNfZGlyLAorICAgICAgICAnbmFtZSc6IHNlbGYuaW50ZXJtZWRpYXRlX2J1aWxkZXJf
bmFtZSwKKyAgICB9CisgICAgZnAud3JpdGUoY29tcGlsYWJsZV9zb3VyY2VzX3RlbXBsYXRlICUg
dmFyaWFibGVzKQorICAgIHN1cGVyKENvbXBpbGFibGVTb3VyY2VzVGFyZ2V0QmFzZSwgc2VsZiku
d3JpdGVfdGFyZ2V0KGZwKQorCisKK2NsYXNzIFByb2dyYW1UYXJnZXQoQ29tcGlsYWJsZVNvdXJj
ZXNUYXJnZXRCYXNlKToKKyAgIiIiCisgIEEgR1lQIHRhcmdldCB0eXBlIG9mICdleGVjdXRhYmxl
Jy4KKyAgIiIiCisgIGJ1aWxkZXJfbmFtZSA9ICdHeXBQcm9ncmFtJworICBpbnRlcm1lZGlhdGVf
YnVpbGRlcl9uYW1lID0gJ1N0YXRpY09iamVjdCcKKyAgdGFyZ2V0X3ByZWZpeCA9ICcke1BST0dQ
UkVGSVh9JworICB0YXJnZXRfc3VmZml4ID0gJyR7UFJPR1NVRkZJWH0nCisgIG91dF9kaXIgPSAn
JHtUT1BfQlVJTERESVJ9JworCisKK2NsYXNzIFN0YXRpY0xpYnJhcnlUYXJnZXQoQ29tcGlsYWJs
ZVNvdXJjZXNUYXJnZXRCYXNlKToKKyAgIiIiCisgIEEgR1lQIHRhcmdldCB0eXBlIG9mICdzdGF0
aWNfbGlicmFyeScuCisgICIiIgorICBidWlsZGVyX25hbWUgPSAnR3lwU3RhdGljTGlicmFyeScK
KyAgaW50ZXJtZWRpYXRlX2J1aWxkZXJfbmFtZSA9ICdTdGF0aWNPYmplY3QnCisgIHRhcmdldF9w
cmVmaXggPSAnJHtMSUJQUkVGSVh9JworICB0YXJnZXRfc3VmZml4ID0gJyR7TElCU1VGRklYfScK
KyAgb3V0X2RpciA9ICcke0xJQl9ESVJ9JworCisKK2NsYXNzIFNoYXJlZExpYnJhcnlUYXJnZXQo
Q29tcGlsYWJsZVNvdXJjZXNUYXJnZXRCYXNlKToKKyAgIiIiCisgIEEgR1lQIHRhcmdldCB0eXBl
IG9mICdzaGFyZWRfbGlicmFyeScuCisgICIiIgorICBidWlsZGVyX25hbWUgPSAnR3lwU2hhcmVk
TGlicmFyeScKKyAgaW50ZXJtZWRpYXRlX2J1aWxkZXJfbmFtZSA9ICdTaGFyZWRPYmplY3QnCisg
IHRhcmdldF9wcmVmaXggPSAnJHtTSExJQlBSRUZJWH0nCisgIHRhcmdldF9zdWZmaXggPSAnJHtT
SExJQlNVRkZJWH0nCisgIG91dF9kaXIgPSAnJHtMSUJfRElSfScKKworCitjbGFzcyBMb2FkYWJs
ZU1vZHVsZVRhcmdldChDb21waWxhYmxlU291cmNlc1RhcmdldEJhc2UpOgorICAiIiIKKyAgQSBH
WVAgdGFyZ2V0IHR5cGUgb2YgJ2xvYWRhYmxlX21vZHVsZScuCisgICIiIgorICBidWlsZGVyX25h
bWUgPSAnR3lwTG9hZGFibGVNb2R1bGUnCisgIGludGVybWVkaWF0ZV9idWlsZGVyX25hbWUgPSAn
U2hhcmVkT2JqZWN0JworICB0YXJnZXRfcHJlZml4ID0gJyR7U0hMSUJQUkVGSVh9JworICB0YXJn
ZXRfc3VmZml4ID0gJyR7U0hMSUJTVUZGSVh9JworICBvdXRfZGlyID0gJyR7VE9QX0JVSUxERElS
fScKKworCitUYXJnZXRNYXAgPSB7CisgIE5vbmUgOiBOb25lVGFyZ2V0LAorICAnbm9uZScgOiBO
b25lVGFyZ2V0LAorICAnc2V0dGluZ3MnIDogU2V0dGluZ3NUYXJnZXQsCisgICdleGVjdXRhYmxl
JyA6IFByb2dyYW1UYXJnZXQsCisgICdzdGF0aWNfbGlicmFyeScgOiBTdGF0aWNMaWJyYXJ5VGFy
Z2V0LAorICAnc2hhcmVkX2xpYnJhcnknIDogU2hhcmVkTGlicmFyeVRhcmdldCwKKyAgJ2xvYWRh
YmxlX21vZHVsZScgOiBMb2FkYWJsZU1vZHVsZVRhcmdldCwKK30KKworZGVmIFRhcmdldChzcGVj
KToKKyAgcmV0dXJuIFRhcmdldE1hcFtzcGVjLmdldCgndHlwZScpXShzcGVjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9fX2luaXRfXy5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC9weWxpYi9neXAvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIwODhmNjIw
N2VmNjYwOWUwZTlhNTAxZjU3NDI0YTliOTJhMDdiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvX19pbml0X18ucHkKQEAgLTAsMCArMSw0NjEgQEAK
KyMhL3Vzci9iaW4vcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKworaW1wb3J0IGNvcHkKK2ltcG9ydCBneXAuaW5wdXQKK2ltcG9ydCBvcHRwYXJz
ZQoraW1wb3J0IG9zLnBhdGgKK2ltcG9ydCByZQoraW1wb3J0IHNobGV4CitpbXBvcnQgc3lzCisK
KyMgRGVmYXVsdCBkZWJ1ZyBtb2RlcyBmb3IgR1lQCitkZWJ1ZyA9IHt9CisKKyMgTGlzdCBvZiAi
b2ZmaWNpYWwiIGRlYnVnIG1vZGVzLCBidXQgeW91IGNhbiB1c2UgYW55dGhpbmcgeW91IGxpa2Uu
CitERUJVR19HRU5FUkFMID0gJ2dlbmVyYWwnCitERUJVR19WQVJJQUJMRVMgPSAndmFyaWFibGVz
JworREVCVUdfSU5DTFVERVMgPSAnaW5jbHVkZXMnCisKK2RlZiBEZWJ1Z091dHB1dChtb2RlLCBt
ZXNzYWdlKToKKyAgaWYgbW9kZSBpbiBneXAuZGVidWcua2V5cygpOgorICAgIHByaW50ICIlczog
JXMiICUgKG1vZGUudXBwZXIoKSwgbWVzc2FnZSkKKworZGVmIEZpbmRCdWlsZEZpbGVzKCk6Cisg
IGV4dGVuc2lvbiA9ICcuZ3lwJworICBmaWxlcyA9IG9zLmxpc3RkaXIob3MuZ2V0Y3dkKCkpCisg
IGJ1aWxkX2ZpbGVzID0gW10KKyAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgaWYgZmlsZVstbGVu
KGV4dGVuc2lvbik6XSA9PSBleHRlbnNpb246CisgICAgICBidWlsZF9maWxlcy5hcHBlbmQoZmls
ZSkKKyAgcmV0dXJuIGJ1aWxkX2ZpbGVzCisKKworZGVmIExvYWQoYnVpbGRfZmlsZXMsIGZvcm1h
dCwgZGVmYXVsdF92YXJpYWJsZXM9e30sCisgICAgICAgICBpbmNsdWRlcz1bXSwgZGVwdGg9Jy4n
LCBwYXJhbXM9e30sIGNoZWNrPUZhbHNlLCBjaXJjdWxhcl9jaGVjaz1UcnVlKToKKyAgIiIiCisg
IExvYWRzIG9uZSBvciBtb3JlIHNwZWNpZmllZCBidWlsZCBmaWxlcy4KKyAgZGVmYXVsdF92YXJp
YWJsZXMgYW5kIGluY2x1ZGVzIHdpbGwgYmUgY29waWVkIGJlZm9yZSB1c2UuCisgIFJldHVybnMg
dGhlIGdlbmVyYXRvciBmb3IgdGhlIHNwZWNpZmllZCBmb3JtYXQgYW5kIHRoZQorICBkYXRhIHJl
dHVybmVkIGJ5IGxvYWRpbmcgdGhlIHNwZWNpZmllZCBidWlsZCBmaWxlcy4KKyAgIiIiCisgIGRl
ZmF1bHRfdmFyaWFibGVzID0gY29weS5jb3B5KGRlZmF1bHRfdmFyaWFibGVzKQorCisgICMgRGVm
YXVsdCB2YXJpYWJsZXMgcHJvdmlkZWQgYnkgdGhpcyBwcm9ncmFtIGFuZCBpdHMgbW9kdWxlcyBz
aG91bGQgYmUKKyAgIyBuYW1lZCBXSVRIX0NBUElUQUxfTEVUVEVSUyB0byBwcm92aWRlIGEgZGlz
dGluY3QgImJlc3QgcHJhY3RpY2UiIG5hbWVzcGFjZSwKKyAgIyBhdm9pZGluZyBjb2xsaXNpb25z
IHdpdGggdXNlciBhbmQgYXV0b21hdGljIHZhcmlhYmxlcy4KKyAgZGVmYXVsdF92YXJpYWJsZXNb
J0dFTkVSQVRPUiddID0gZm9ybWF0CisKKyAgZ2VuZXJhdG9yX25hbWUgPSAnZ3lwLmdlbmVyYXRv
ci4nICsgZm9ybWF0CisgICMgVGhlc2UgcGFyYW1ldGVycyBhcmUgcGFzc2VkIGluIG9yZGVyIChh
cyBvcHBvc2VkIHRvIGJ5IGtleSkKKyAgIyBiZWNhdXNlIEFjdGl2ZVB5dGhvbiBjYW5ub3QgaGFu
ZGxlIGtleSBwYXJhbWV0ZXJzIHRvIF9faW1wb3J0X18uCisgIGdlbmVyYXRvciA9IF9faW1wb3J0
X18oZ2VuZXJhdG9yX25hbWUsIGdsb2JhbHMoKSwgbG9jYWxzKCksIGdlbmVyYXRvcl9uYW1lKQor
ICBmb3IgKGtleSwgdmFsKSBpbiBnZW5lcmF0b3IuZ2VuZXJhdG9yX2RlZmF1bHRfdmFyaWFibGVz
Lml0ZW1zKCk6CisgICAgZGVmYXVsdF92YXJpYWJsZXMuc2V0ZGVmYXVsdChrZXksIHZhbCkKKwor
ICAjIEdpdmUgdGhlIGdlbmVyYXRvciB0aGUgb3Bwb3J0dW5pdHkgdG8gc2V0IGFkZGl0aW9uYWwg
dmFyaWFibGVzIGJhc2VkIG9uCisgICMgdGhlIHBhcmFtcyBpdCB3aWxsIHJlY2VpdmUgaW4gdGhl
IG91dHB1dCBwaGFzZS4KKyAgaWYgZ2V0YXR0cihnZW5lcmF0b3IsICdDYWxjdWxhdGVWYXJpYWJs
ZXMnLCBOb25lKToKKyAgICBnZW5lcmF0b3IuQ2FsY3VsYXRlVmFyaWFibGVzKGRlZmF1bHRfdmFy
aWFibGVzLCBwYXJhbXMpCisKKyAgIyBGZXRjaCB0aGUgZ2VuZXJhdG9yIHNwZWNpZmljIGluZm8g
dGhhdCBnZXRzIGZlZCB0byBpbnB1dCwgd2UgdXNlIGdldGF0dHIKKyAgIyBzbyB3ZSBjYW4gZGVm
YXVsdCB0aGluZ3MgYW5kIHRoZSBnZW5lcmF0b3JzIG9ubHkgaGF2ZSB0byBwcm92aWRlIHdoYXQK
KyAgIyB0aGV5IG5lZWQuCisgIGdlbmVyYXRvcl9pbnB1dF9pbmZvID0geworICAgICdnZW5lcmF0
b3Jfd2FudHNfYWJzb2x1dGVfYnVpbGRfZmlsZV9wYXRocyc6CisgICAgICAgIGdldGF0dHIoZ2Vu
ZXJhdG9yLCAnZ2VuZXJhdG9yX3dhbnRzX2Fic29sdXRlX2J1aWxkX2ZpbGVfcGF0aHMnLCBGYWxz
ZSksCisgICAgJ2dlbmVyYXRvcl9oYW5kbGVzX3ZhcmlhbnRzJzoKKyAgICAgICAgZ2V0YXR0cihn
ZW5lcmF0b3IsICdnZW5lcmF0b3JfaGFuZGxlc192YXJpYW50cycsIEZhbHNlKSwKKyAgICAnbm9u
X2NvbmZpZ3VyYXRpb25fa2V5cyc6CisgICAgICAgIGdldGF0dHIoZ2VuZXJhdG9yLCAnZ2VuZXJh
dG9yX2FkZGl0aW9uYWxfbm9uX2NvbmZpZ3VyYXRpb25fa2V5cycsIFtdKSwKKyAgICAncGF0aF9z
ZWN0aW9ucyc6CisgICAgICAgIGdldGF0dHIoZ2VuZXJhdG9yLCAnZ2VuZXJhdG9yX2FkZGl0aW9u
YWxfcGF0aF9zZWN0aW9ucycsIFtdKSwKKyAgICAnZXh0cmFfc291cmNlc19mb3JfcnVsZXMnOgor
ICAgICAgICBnZXRhdHRyKGdlbmVyYXRvciwgJ2dlbmVyYXRvcl9leHRyYV9zb3VyY2VzX2Zvcl9y
dWxlcycsIFtdKSwKKyAgICAnZ2VuZXJhdG9yX3N1cHBvcnRzX211bHRpcGxlX3Rvb2xzZXRzJzoK
KyAgICAgICAgZ2V0YXR0cihnZW5lcmF0b3IsICdnZW5lcmF0b3Jfc3VwcG9ydHNfbXVsdGlwbGVf
dG9vbHNldHMnLCBGYWxzZSksCisgIH0KKworICAjIFByb2Nlc3MgdGhlIGlucHV0IHNwZWNpZmlj
IHRvIHRoaXMgZ2VuZXJhdG9yLgorICByZXN1bHQgPSBneXAuaW5wdXQuTG9hZChidWlsZF9maWxl
cywgZGVmYXVsdF92YXJpYWJsZXMsIGluY2x1ZGVzWzpdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXB0aCwgZ2VuZXJhdG9yX2lucHV0X2luZm8sIGNoZWNrLCBjaXJjdWxhcl9jaGVjaykK
KyAgcmV0dXJuIFtnZW5lcmF0b3JdICsgcmVzdWx0CisKK2RlZiBOYW1lVmFsdWVMaXN0VG9EaWN0
KG5hbWVfdmFsdWVfbGlzdCk6CisgICIiIgorICBUYWtlcyBhbiBhcnJheSBvZiBzdHJpbmdzIG9m
IHRoZSBmb3JtICdOQU1FPVZBTFVFJyBhbmQgY3JlYXRlcyBhIGRpY3Rpb25hcnkKKyAgb2YgdGhl
IHBhaXJzLiAgSWYgYSBzdHJpbmcgaXMgc2ltcGx5IE5BTUUsIHRoZW4gdGhlIHZhbHVlIGluIHRo
ZSBkaWN0aW9uYXJ5CisgIGlzIHNldCB0byBUcnVlLiAgSWYgVkFMVUUgY2FuIGJlIGNvbnZlcnRl
ZCB0byBhbiBpbnRlZ2VyLCBpdCBpcy4KKyAgIiIiCisgIHJlc3VsdCA9IHsgfQorICBmb3IgaXRl
bSBpbiBuYW1lX3ZhbHVlX2xpc3Q6CisgICAgdG9rZW5zID0gaXRlbS5zcGxpdCgnPScsIDEpCisg
ICAgaWYgbGVuKHRva2VucykgPT0gMjoKKyAgICAgICMgSWYgd2UgY2FuIG1ha2UgaXQgYW4gaW50
LCB1c2UgdGhhdCwgb3RoZXJ3aXNlLCB1c2UgdGhlIHN0cmluZy4KKyAgICAgIHRyeToKKyAgICAg
ICAgdG9rZW5fdmFsdWUgPSBpbnQodG9rZW5zWzFdKQorICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6
CisgICAgICAgIHRva2VuX3ZhbHVlID0gdG9rZW5zWzFdCisgICAgICAjIFNldCB0aGUgdmFyaWFi
bGUgdG8gdGhlIHN1cHBsaWVkIHZhbHVlLgorICAgICAgcmVzdWx0W3Rva2Vuc1swXV0gPSB0b2tl
bl92YWx1ZQorICAgIGVsc2U6CisgICAgICAjIE5vIHZhbHVlIHN1cHBsaWVkLCB0cmVhdCBpdCBh
cyBhIGJvb2xlYW4gYW5kIHNldCBpdC4KKyAgICAgIHJlc3VsdFt0b2tlbnNbMF1dID0gVHJ1ZQor
ICByZXR1cm4gcmVzdWx0CisKK2RlZiBTaGxleEVudihlbnZfbmFtZSk6CisgIGZsYWdzID0gb3Mu
ZW52aXJvbi5nZXQoZW52X25hbWUsIFtdKQorICBpZiBmbGFnczoKKyAgICBmbGFncyA9IHNobGV4
LnNwbGl0KGZsYWdzKQorICByZXR1cm4gZmxhZ3MKKworZGVmIEZvcm1hdE9wdChvcHQsIHZhbHVl
KToKKyAgaWYgb3B0LnN0YXJ0c3dpdGgoJy0tJyk6CisgICAgcmV0dXJuICclcz0lcycgJSAob3B0
LCB2YWx1ZSkKKyAgcmV0dXJuIG9wdCArIHZhbHVlCisKK2RlZiBSZWdlbmVyYXRlQXBwZW5kRmxh
ZyhmbGFnLCB2YWx1ZXMsIHByZWRpY2F0ZSwgZW52X25hbWUsIG9wdGlvbnMpOgorICAiIiJSZWdl
bmVyYXRlIGEgbGlzdCBvZiBjb21tYW5kIGxpbmUgZmxhZ3MsIGZvciBhbiBvcHRpb24gb2YgYWN0
aW9uPSdhcHBlbmQnLgorCisgIFRoZSB8ZW52X25hbWV8LCBpZiBnaXZlbiwgaXMgY2hlY2tlZCBp
biB0aGUgZW52aXJvbm1lbnQgYW5kIHVzZWQgdG8gZ2VuZXJhdGUKKyAgYW4gaW5pdGlhbCBsaXN0
IG9mIG9wdGlvbnMsIHRoZW4gdGhlIG9wdGlvbnMgdGhhdCB3ZXJlIHNwZWNpZmllZCBvbiB0aGUK
KyAgY29tbWFuZCBsaW5lIChnaXZlbiBpbiB8dmFsdWVzfCkgYXJlIGFwcGVuZGVkLiAgVGhpcyBt
YXRjaGVzIHRoZSBoYW5kbGluZyBvZgorICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIGNvbW1h
bmQgbGluZSBmbGFncyB3aGVyZSBjb21tYW5kIGxpbmUgZmxhZ3Mgb3ZlcnJpZGUKKyAgdGhlIGVu
dmlyb25tZW50LCB3aGlsZSBub3QgcmVxdWlyaW5nIHRoZSBlbnZpcm9ubWVudCB0byBiZSBzZXQg
d2hlbiB0aGUgZmxhZ3MKKyAgYXJlIHVzZWQgYWdhaW4uCisgICIiIgorICBmbGFncyA9IFtdCisg
IGlmIG9wdGlvbnMudXNlX2Vudmlyb25tZW50IGFuZCBlbnZfbmFtZToKKyAgICBmb3IgZmxhZ192
YWx1ZSBpbiBTaGxleEVudihlbnZfbmFtZSk6CisgICAgICBmbGFncy5hcHBlbmQoRm9ybWF0T3B0
KGZsYWcsIHByZWRpY2F0ZShmbGFnX3ZhbHVlKSkpCisgIGlmIHZhbHVlczoKKyAgICBmb3IgZmxh
Z192YWx1ZSBpbiB2YWx1ZXM6CisgICAgICBmbGFncy5hcHBlbmQoRm9ybWF0T3B0KGZsYWcsIHBy
ZWRpY2F0ZShmbGFnX3ZhbHVlKSkpCisgIHJldHVybiBmbGFncworCitkZWYgUmVnZW5lcmF0ZUZs
YWdzKG9wdGlvbnMpOgorICAiIiJHaXZlbiBhIHBhcnNlZCBvcHRpb25zIG9iamVjdCwgYW5kIHRh
a2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGludG8KKyAgYWNjb3VudCwgcmV0dXJucyBh
IGxpc3Qgb2YgZmxhZ3MgdGhhdCBzaG91bGQgcmVnZW5lcmF0ZSBhbiBlcXVpdmFsZW50IG9wdGlv
bnMKKyAgb2JqZWN0IChldmVuIGluIHRoZSBhYnNlbmNlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJp
YWJsZXMuKQorCisgIEFueSBwYXRoIG9wdGlvbnMgd2lsbCBiZSBub3JtYWxpemVkIHJlbGF0aXZl
IHRvIGRlcHRoLgorCisgIFRoZSBmb3JtYXQgZmxhZyBpcyBub3QgaW5jbHVkZWQsIGFzIGl0IGlz
IGFzc3VtZWQgdGhlIGNhbGxpbmcgZ2VuZXJhdG9yIHdpbGwKKyAgc2V0IHRoYXQgYXMgYXBwcm9w
cmlhdGUuCisgICIiIgorICBkZWYgRml4UGF0aChwYXRoKToKKyAgICBwYXRoID0gZ3lwLmNvbW1v
bi5GaXhJZlJlbGF0aXZlUGF0aChwYXRoLCBvcHRpb25zLmRlcHRoKQorICAgIGlmIG5vdCBwYXRo
OgorICAgICAgcmV0dXJuIG9zLnBhdGguY3VyZGlyCisgICAgcmV0dXJuIHBhdGgKKworICBkZWYg
Tm9vcCh2YWx1ZSk6CisgICAgcmV0dXJuIHZhbHVlCisKKyAgIyBXZSBhbHdheXMgd2FudCB0byBp
Z25vcmUgdGhlIGVudmlyb25tZW50IHdoZW4gcmVnZW5lcmF0aW5nLCB0byBhdm9pZAorICAjIGR1
cGxpY2F0ZSBvciBjaGFuZ2VkIGZsYWdzIGluIHRoZSBlbnZpcm9ubWVudCBhdCB0aGUgdGltZSBv
ZiByZWdlbmVyYXRpb24uCisgIGZsYWdzID0gWyctLWlnbm9yZS1lbnZpcm9ubWVudCddCisgIGZv
ciBuYW1lLCBtZXRhZGF0YSBpbiBvcHRpb25zLl9yZWdlbmVyYXRpb25fbWV0YWRhdGEuaXRlcml0
ZW1zKCk6CisgICAgb3B0ID0gbWV0YWRhdGFbJ29wdCddCisgICAgdmFsdWUgPSBnZXRhdHRyKG9w
dGlvbnMsIG5hbWUpCisgICAgdmFsdWVfcHJlZGljYXRlID0gbWV0YWRhdGFbJ3R5cGUnXSA9PSAn
cGF0aCcgYW5kIEZpeFBhdGggb3IgTm9vcAorICAgIGFjdGlvbiA9IG1ldGFkYXRhWydhY3Rpb24n
XQorICAgIGVudl9uYW1lID0gbWV0YWRhdGFbJ2Vudl9uYW1lJ10KKyAgICBpZiBhY3Rpb24gPT0g
J2FwcGVuZCc6CisgICAgICBmbGFncy5leHRlbmQoUmVnZW5lcmF0ZUFwcGVuZEZsYWcob3B0LCB2
YWx1ZSwgdmFsdWVfcHJlZGljYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVudl9uYW1lLCBvcHRpb25zKSkKKyAgICBlbGlmIGFjdGlvbiBpbiAoJ3N0b3JlJywg
Tm9uZSk6ICAjIE5vbmUgaXMgYSBzeW5vbnltIGZvciAnc3RvcmUnLgorICAgICAgaWYgdmFsdWU6
CisgICAgICAgIGZsYWdzLmFwcGVuZChGb3JtYXRPcHQob3B0LCB2YWx1ZV9wcmVkaWNhdGUodmFs
dWUpKSkKKyAgICAgIGVsaWYgb3B0aW9ucy51c2VfZW52aXJvbm1lbnQgYW5kIGVudl9uYW1lIGFu
ZCBvcy5lbnZpcm9uLmdldChlbnZfbmFtZSk6CisgICAgICAgIGZsYWdzLmFwcGVuZChGb3JtYXRP
cHQob3B0LCB2YWx1ZV9wcmVkaWNhdGUob3MuZW52aXJvbi5nZXQoZW52X25hbWUpKSkpCisgICAg
ZWxpZiBhY3Rpb24gaW4gKCdzdG9yZV90cnVlJywgJ3N0b3JlX2ZhbHNlJyk6CisgICAgICBpZiAo
KGFjdGlvbiA9PSAnc3RvcmVfdHJ1ZScgYW5kIHZhbHVlKSBvcgorICAgICAgICAgIChhY3Rpb24g
PT0gJ3N0b3JlX2ZhbHNlJyBhbmQgbm90IHZhbHVlKSk6CisgICAgICAgIGZsYWdzLmFwcGVuZChv
cHQpCisgICAgICBlbGlmIG9wdGlvbnMudXNlX2Vudmlyb25tZW50IGFuZCBlbnZfbmFtZToKKyAg
ICAgICAgcHJpbnQgPj5zeXMuc3RkZXJyLCAoJ1dhcm5pbmc6IGVudmlyb25tZW50IHJlZ2VuZXJh
dGlvbiB1bmltcGxlbWVudGVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvciAl
cyBmbGFnICVyIGVudl9uYW1lICVyJyAlIChhY3Rpb24sIG9wdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZfbmFtZSkpCisg
ICAgZWxzZToKKyAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgKCdXYXJuaW5nOiByZWdlbmVyYXRp
b24gdW5pbXBsZW1lbnRlZCBmb3IgYWN0aW9uICVyICcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdmbGFnICVyJyAlIChhY3Rpb24sIG9wdCkpCisKKyAgcmV0dXJuIGZsYWdzCisKK2NsYXNz
IFJlZ2VuZXJhdGFibGVPcHRpb25QYXJzZXIob3B0cGFyc2UuT3B0aW9uUGFyc2VyKToKKyAgZGVm
IF9faW5pdF9fKHNlbGYpOgorICAgIHNlbGYuX19yZWdlbmVyYXRhYmxlX29wdGlvbnMgPSB7fQor
ICAgIG9wdHBhcnNlLk9wdGlvblBhcnNlci5fX2luaXRfXyhzZWxmKQorCisgIGRlZiBhZGRfb3B0
aW9uKHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAiIiJBZGQgYW4gb3B0aW9uIHRvIHRoZSBwYXJz
ZXIuCisKKyAgICBUaGlzIGFjY2VwdHMgdGhlIHNhbWUgYXJndW1lbnRzIGFzIE9wdGlvblBhcnNl
ci5hZGRfb3B0aW9uLCBwbHVzIHRoZQorICAgIGZvbGxvd2luZzoKKyAgICAgIHJlZ2VuZXJhdGU6
IGNhbiBiZSBzZXQgdG8gRmFsc2UgdG8gcHJldmVudCB0aGlzIG9wdGlvbiBmcm9tIGJlaW5nIGlu
Y2x1ZGVkCisgICAgICAgICAgICAgICAgICBpbiByZWdlbmVyYXRpb24uCisgICAgICBlbnZfbmFt
ZTogbmFtZSBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0IGFkZGl0aW9uYWwgdmFsdWVzIGZv
ciB0aGlzCisgICAgICAgICAgICAgICAgb3B0aW9uIGNvbWUgZnJvbS4KKyAgICAgIHR5cGU6IGFk
ZHMgdHlwZT0ncGF0aCcsIHRvIHRlbGwgdGhlIHJlZ2VuZXJhdG9yIHRoYXQgdGhlIHZhbHVlcyBv
ZgorICAgICAgICAgICAgdGhpcyBvcHRpb24gbmVlZCB0byBiZSBtYWRlIHJlbGF0aXZlIHRvIG9w
dGlvbnMuZGVwdGgKKyAgICAiIiIKKyAgICBlbnZfbmFtZSA9IGt3LnBvcCgnZW52X25hbWUnLCBO
b25lKQorICAgIGlmICdkZXN0JyBpbiBrdyBhbmQga3cucG9wKCdyZWdlbmVyYXRlJywgVHJ1ZSk6
CisgICAgICBkZXN0ID0ga3dbJ2Rlc3QnXQorCisgICAgICAjIFRoZSBwYXRoIHR5cGUgaXMgbmVl
ZGVkIGZvciByZWdlbmVyYXRpbmcsIGZvciBvcHRwYXJzZSB3ZSBjYW4ganVzdCB0cmVhdAorICAg
ICAgIyBpdCBhcyBhIHN0cmluZy4KKyAgICAgIHR5cGUgPSBrdy5nZXQoJ3R5cGUnKQorICAgICAg
aWYgdHlwZSA9PSAncGF0aCc6CisgICAgICAgIGt3Wyd0eXBlJ10gPSAnc3RyaW5nJworCisgICAg
ICBzZWxmLl9fcmVnZW5lcmF0YWJsZV9vcHRpb25zW2Rlc3RdID0geworICAgICAgICAgICdhY3Rp
b24nOiBrdy5nZXQoJ2FjdGlvbicpLAorICAgICAgICAgICd0eXBlJzogdHlwZSwKKyAgICAgICAg
ICAnZW52X25hbWUnOiBlbnZfbmFtZSwKKyAgICAgICAgICAnb3B0JzogYXJnc1swXSwKKyAgICAg
ICAgfQorCisgICAgb3B0cGFyc2UuT3B0aW9uUGFyc2VyLmFkZF9vcHRpb24oc2VsZiwgKmFyZ3Ms
ICoqa3cpCisKKyAgZGVmIHBhcnNlX2FyZ3Moc2VsZiwgKmFyZ3MpOgorICAgIHZhbHVlcywgYXJn
cyA9IG9wdHBhcnNlLk9wdGlvblBhcnNlci5wYXJzZV9hcmdzKHNlbGYsICphcmdzKQorICAgIHZh
bHVlcy5fcmVnZW5lcmF0aW9uX21ldGFkYXRhID0gc2VsZi5fX3JlZ2VuZXJhdGFibGVfb3B0aW9u
cworICAgIHJldHVybiB2YWx1ZXMsIGFyZ3MKKworZGVmIG1haW4oYXJncyk6CisgIG15X25hbWUg
PSBvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKQorCisgIHBhcnNlciA9IFJlZ2VuZXJhdGFi
bGVPcHRpb25QYXJzZXIoKQorICB1c2FnZSA9ICd1c2FnZTogJXMgW29wdGlvbnMgLi4uXSBbYnVp
bGRfZmlsZSAuLi5dJworICBwYXJzZXIuc2V0X3VzYWdlKHVzYWdlLnJlcGxhY2UoJyVzJywgJyVw
cm9nJykpCisgIHBhcnNlci5hZGRfb3B0aW9uKCctRCcsIGRlc3Q9J2RlZmluZXMnLCBhY3Rpb249
J2FwcGVuZCcsIG1ldGF2YXI9J1ZBUj1WQUwnLAorICAgICAgICAgICAgICAgICAgICBlbnZfbmFt
ZT0nR1lQX0RFRklORVMnLAorICAgICAgICAgICAgICAgICAgICBoZWxwPSdzZXRzIHZhcmlhYmxl
IFZBUiB0byB2YWx1ZSBWQUwnKQorICBwYXJzZXIuYWRkX29wdGlvbignLWYnLCAnLS1mb3JtYXQn
LCBkZXN0PSdmb3JtYXRzJywgYWN0aW9uPSdhcHBlbmQnLAorICAgICAgICAgICAgICAgICAgICBl
bnZfbmFtZT0nR1lQX0dFTkVSQVRPUlMnLCByZWdlbmVyYXRlPUZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICBoZWxwPSdvdXRwdXQgZm9ybWF0cyB0byBnZW5lcmF0ZScpCisgIHBhcnNlci5hZGRf
b3B0aW9uKCctLW1zdnMtdmVyc2lvbicsIGRlc3Q9J21zdnNfdmVyc2lvbicsCisgICAgICAgICAg
ICAgICAgICAgIHJlZ2VuZXJhdGU9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgIGhlbHA9J0Rl
cHJlY2F0ZWQ7IHVzZSAtRyBtc3ZzX3ZlcnNpb249TVNWU19WRVJTSU9OIGluc3RlYWQnKQorICBw
YXJzZXIuYWRkX29wdGlvbignLUknLCAnLS1pbmNsdWRlJywgZGVzdD0naW5jbHVkZXMnLCBhY3Rp
b249J2FwcGVuZCcsCisgICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9J0lOQ0xVREUnLCB0eXBl
PSdwYXRoJywKKyAgICAgICAgICAgICAgICAgICAgaGVscD0nZmlsZXMgdG8gaW5jbHVkZSBpbiBh
bGwgbG9hZGVkIC5neXAgZmlsZXMnKQorICBwYXJzZXIuYWRkX29wdGlvbignLS1kZXB0aCcsIGRl
c3Q9J2RlcHRoJywgbWV0YXZhcj0nUEFUSCcsIHR5cGU9J3BhdGgnLAorICAgICAgICAgICAgICAg
ICAgICBoZWxwPSdzZXQgREVQVEggZ3lwIHZhcmlhYmxlIHRvIGEgcmVsYXRpdmUgcGF0aCB0byBQ
QVRIJykKKyAgcGFyc2VyLmFkZF9vcHRpb24oJy1kJywgJy0tZGVidWcnLCBkZXN0PSdkZWJ1Zycs
IG1ldGF2YXI9J0RFQlVHTU9ERScsCisgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nYXBwZW5k
JywgZGVmYXVsdD1bXSwgaGVscD0ndHVybiBvbiBhIGRlYnVnZ2luZyAnCisgICAgICAgICAgICAg
ICAgICAgICdtb2RlIGZvciBkZWJ1Z2dpbmcgR1lQLiAgU3VwcG9ydGVkIG1vZGVzIGFyZSAidmFy
aWFibGVzIiAnCisgICAgICAgICAgICAgICAgICAgICdhbmQgImdlbmVyYWwiJykKKyAgcGFyc2Vy
LmFkZF9vcHRpb24oJy1TJywgJy0tc3VmZml4JywgZGVzdD0nc3VmZml4JywgZGVmYXVsdD0nJywK
KyAgICAgICAgICAgICAgICAgICAgaGVscD0nc3VmZml4IHRvIGFkZCB0byBnZW5lcmF0ZWQgZmls
ZXMnKQorICBwYXJzZXIuYWRkX29wdGlvbignLUcnLCBkZXN0PSdnZW5lcmF0b3JfZmxhZ3MnLCBh
Y3Rpb249J2FwcGVuZCcsIGRlZmF1bHQ9W10sCisgICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9
J0ZMQUc9VkFMJywgZW52X25hbWU9J0dZUF9HRU5FUkFUT1JfRkxBR1MnLAorICAgICAgICAgICAg
ICAgICAgICBoZWxwPSdzZXRzIGdlbmVyYXRvciBmbGFnIEZMQUcgdG8gVkFMJykKKyAgcGFyc2Vy
LmFkZF9vcHRpb24oJy0tZ2VuZXJhdG9yLW91dHB1dCcsIGRlc3Q9J2dlbmVyYXRvcl9vdXRwdXQn
LAorICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJywgZGVmYXVsdD1Ob25lLCBtZXRh
dmFyPSdESVInLCB0eXBlPSdwYXRoJywKKyAgICAgICAgICAgICAgICAgICAgZW52X25hbWU9J0dZ
UF9HRU5FUkFUT1JfT1VUUFVUJywKKyAgICAgICAgICAgICAgICAgICAgaGVscD0ncHV0cyBnZW5l
cmF0ZWQgYnVpbGQgZmlsZXMgdW5kZXIgRElSJykKKyAgcGFyc2VyLmFkZF9vcHRpb24oJy0taWdu
b3JlLWVudmlyb25tZW50JywgZGVzdD0ndXNlX2Vudmlyb25tZW50JywKKyAgICAgICAgICAgICAg
ICAgICAgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwgcmVnZW5lcmF0ZT1GYWxz
ZSwKKyAgICAgICAgICAgICAgICAgICAgaGVscD0nZG8gbm90IHJlYWQgb3B0aW9ucyBmcm9tIGVu
dmlyb25tZW50IHZhcmlhYmxlcycpCisgIHBhcnNlci5hZGRfb3B0aW9uKCctLWNoZWNrJywgZGVz
dD0nY2hlY2snLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICBoZWxw
PSdjaGVjayBmb3JtYXQgb2YgZ3lwIGZpbGVzJykKKyAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdG9w
bGV2ZWwtZGlyJywgZGVzdD0ndG9wbGV2ZWxfZGlyJywgYWN0aW9uPSdzdG9yZScsCisgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgbWV0YXZhcj0nRElSJywgdHlwZT0ncGF0aCcsCisg
ICAgICAgICAgICAgICAgICAgIGhlbHA9J2RpcmVjdG9yeSB0byB1c2UgYXMgdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlJykKKyAgIyAtLW5vLWNpcmN1bGFyLWNoZWNrIGRpc2FibGVzIHRoZSBj
aGVjayBmb3IgY2lyY3VsYXIgcmVsYXRpb25zaGlwcyBiZXR3ZWVuCisgICMgLmd5cCBmaWxlcy4g
IFRoZXNlIHJlbGF0aW9uc2hpcHMgc2hvdWxkIG5vdCBleGlzdCwgYnV0IHRoZXkndmUgb25seSBi
ZWVuCisgICMgb2JzZXJ2ZWQgdG8gYmUgaGFybWZ1bCB3aXRoIHRoZSBYY29kZSBnZW5lcmF0b3Iu
ICBDaHJvbWl1bSdzIC5neXAgZmlsZXMKKyAgIyBjdXJyZW50bHkgaGF2ZSBzb21lIGNpcmN1bGFy
IHJlbGF0aW9uc2hpcHMgb24gbm9uLU1hYyBwbGF0Zm9ybXMsIHNvIHRoaXMKKyAgIyBvcHRpb24g
YWxsb3dzIHRoZSBzdHJpY3QgYmVoYXZpb3IgdG8gYmUgdXNlZCBvbiBNYWNzIGFuZCB0aGUgbGVu
aWVudAorICAjIGJlaGF2aW9yIHRvIGJlIHVzZWQgZWxzZXdoZXJlLgorICAjIFRPRE8obWFyayk6
IFJlbW92ZSB0aGlzIG9wdGlvbiB3aGVuIGh0dHA6Ly9jcmJ1Zy5jb20vMzU4NzggaXMgZml4ZWQu
CisgIHBhcnNlci5hZGRfb3B0aW9uKCctLW5vLWNpcmN1bGFyLWNoZWNrJywgZGVzdD0nY2lyY3Vs
YXJfY2hlY2snLAorICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX2ZhbHNlJywgZGVm
YXVsdD1UcnVlLCByZWdlbmVyYXRlPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBoZWxwPSJk
b24ndCBjaGVjayBmb3IgY2lyY3VsYXIgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGZpbGVzIikKKwor
ICAjIFdlIHJlYWQgYSBmZXcgdGhpbmdzIGZyb20gfi8uZ3lwLCBzbyBzZXQgdXAgYSB2YXIgZm9y
IHRoYXQuCisgIGhvbWVfdmFycyA9IFsnSE9NRSddCisgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ2N5
Z3dpbicsICd3aW4zMicpOgorICAgIGhvbWVfdmFycy5hcHBlbmQoJ1VTRVJQUk9GSUxFJykKKyAg
aG9tZSA9IE5vbmUKKyAgaG9tZV9kb3RfZ3lwID0gTm9uZQorICBmb3IgaG9tZV92YXIgaW4gaG9t
ZV92YXJzOgorICAgIGhvbWUgPSBvcy5nZXRlbnYoaG9tZV92YXIpCisgICAgaWYgaG9tZSAhPSBO
b25lOgorICAgICAgaG9tZV9kb3RfZ3lwID0gb3MucGF0aC5qb2luKGhvbWUsICcuZ3lwJykKKyAg
ICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhob21lX2RvdF9neXApOgorICAgICAgICBob21lX2Rv
dF9neXAgPSBOb25lCisgICAgICBlbHNlOgorICAgICAgICBicmVhaworCisgICMgVE9ETyh0aG9t
YXN2bCk6IGFkZCBzdXBwb3J0IGZvciB+Ly5neXAvZGVmYXVsdHMKKworICBvcHRpb25zLCBidWls
ZF9maWxlc19hcmcgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQorICBidWlsZF9maWxlcyA9IGJ1
aWxkX2ZpbGVzX2FyZworCisgIGlmIG5vdCBvcHRpb25zLmZvcm1hdHM6CisgICAgIyBJZiBubyBm
b3JtYXQgd2FzIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUsIHRoZW4gY2hlY2sgdGhlIGVudiB2
YXJpYWJsZS4KKyAgICBnZW5lcmF0ZV9mb3JtYXRzID0gW10KKyAgICBpZiBvcHRpb25zLnVzZV9l
bnZpcm9ubWVudDoKKyAgICAgIGdlbmVyYXRlX2Zvcm1hdHMgPSBvcy5lbnZpcm9uLmdldCgnR1lQ
X0dFTkVSQVRPUlMnLCBbXSkKKyAgICBpZiBnZW5lcmF0ZV9mb3JtYXRzOgorICAgICAgZ2VuZXJh
dGVfZm9ybWF0cyA9IHJlLnNwbGl0KCdbXHMsXScsIGdlbmVyYXRlX2Zvcm1hdHMpCisgICAgaWYg
Z2VuZXJhdGVfZm9ybWF0czoKKyAgICAgIG9wdGlvbnMuZm9ybWF0cyA9IGdlbmVyYXRlX2Zvcm1h
dHMKKyAgICBlbHNlOgorICAgICAgIyBOb3RoaW5nIGluIHRoZSB2YXJpYWJsZSwgZGVmYXVsdCBi
YXNlZCBvbiBwbGF0Zm9ybS4KKyAgICAgIG9wdGlvbnMuZm9ybWF0cyA9IFsgeydkYXJ3aW4nOiAg
ICd4Y29kZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2luMzInOiAgICAnbXN2cycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3lnd2luJzogICAnbXN2cycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnZnJlZWJzZDcnOiAnbWFrZScsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnZnJlZWJzZDgnOiAnbWFrZScsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnbGludXgyJzogICAnbWFrZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3BlbmJz
ZDQnOiAnbWFrZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Vub3M1JzogICAnbWFr
ZScsfVtzeXMucGxhdGZvcm1dIF0KKworICBpZiBub3Qgb3B0aW9ucy5nZW5lcmF0b3Jfb3V0cHV0
IGFuZCBvcHRpb25zLnVzZV9lbnZpcm9ubWVudDoKKyAgICBnX28gPSBvcy5lbnZpcm9uLmdldCgn
R1lQX0dFTkVSQVRPUl9PVVRQVVQnKQorICAgIGlmIGdfbzoKKyAgICAgIG9wdGlvbnMuZ2VuZXJh
dG9yX291dHB1dCA9IGdfbworCisgIGZvciBtb2RlIGluIG9wdGlvbnMuZGVidWc6CisgICAgZ3lw
LmRlYnVnW21vZGVdID0gMQorCisgICMgRG8gYW4gZXh0cmEgY2hlY2sgdG8gYXZvaWQgd29yayB3
aGVuIHdlJ3JlIG5vdCBkZWJ1Z2dpbmcuCisgIGlmIERFQlVHX0dFTkVSQUwgaW4gZ3lwLmRlYnVn
LmtleXMoKToKKyAgICBEZWJ1Z091dHB1dChERUJVR19HRU5FUkFMLCAncnVubmluZyB3aXRoIHRo
ZXNlIG9wdGlvbnM6JykKKyAgICBmb3Igb3B0aW9uLCB2YWx1ZSBpbiBzb3J0ZWQob3B0aW9ucy5f
X2RpY3RfXy5pdGVtcygpKToKKyAgICAgIGlmIG9wdGlvblswXSA9PSAnXyc6CisgICAgICAgIGNv
bnRpbnVlCisgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBiYXNlc3RyaW5nKToKKyAgICAgICAg
RGVidWdPdXRwdXQoREVCVUdfR0VORVJBTCwgIiAgJXM6ICclcyciICUgKG9wdGlvbiwgdmFsdWUp
KQorICAgICAgZWxzZToKKyAgICAgICAgRGVidWdPdXRwdXQoREVCVUdfR0VORVJBTCwgIiAgJXM6
ICVzIiAlIChvcHRpb24sIHN0cih2YWx1ZSkpKQorCisgIGlmIG5vdCBidWlsZF9maWxlczoKKyAg
ICBidWlsZF9maWxlcyA9IEZpbmRCdWlsZEZpbGVzKCkKKyAgaWYgbm90IGJ1aWxkX2ZpbGVzOgor
ICAgIHByaW50ID4+c3lzLnN0ZGVyciwgKHVzYWdlICsgJ1xuXG4lczogZXJyb3I6IG5vIGJ1aWxk
X2ZpbGUnKSAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChteV9uYW1lLCBteV9uYW1lKQor
ICAgIHJldHVybiAxCisKKyAgIyBUT0RPKG1hcmspOiBDaHJvbWl1bS1zcGVjaWZpYyBoYWNrIQor
ICAjIEZvciBDaHJvbWl1bSwgdGhlIGd5cCAiZGVwdGgiIHZhcmlhYmxlIHNob3VsZCBhbHdheXMg
YmUgYSByZWxhdGl2ZSBwYXRoCisgICMgdG8gQ2hyb21pdW0ncyB0b3AtbGV2ZWwgInNyYyIgZGly
ZWN0b3J5LiAgSWYgbm8gZGVwdGggdmFyaWFibGUgd2FzIHNldAorICAjIG9uIHRoZSBjb21tYW5k
IGxpbmUsIHRyeSB0byBmaW5kIGEgInNyYyIgZGlyZWN0b3J5IGJ5IGxvb2tpbmcgYXQgdGhlCisg
ICMgYWJzb2x1dGUgcGF0aCB0byBlYWNoIGJ1aWxkIGZpbGUncyBkaXJlY3RvcnkuICBUaGUgZmly
c3QgInNyYyIgY29tcG9uZW50CisgICMgZm91bmQgd2lsbCBiZSB0cmVhdGVkIGFzIHRob3VnaCBp
dCB3ZXJlIHRoZSBwYXRoIHVzZWQgZm9yIC0tZGVwdGguCisgIGlmIG5vdCBvcHRpb25zLmRlcHRo
OgorICAgIGZvciBidWlsZF9maWxlIGluIGJ1aWxkX2ZpbGVzOgorICAgICAgYnVpbGRfZmlsZV9k
aXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKGJ1aWxkX2ZpbGUpKQorICAgICAg
YnVpbGRfZmlsZV9kaXJfY29tcG9uZW50cyA9IGJ1aWxkX2ZpbGVfZGlyLnNwbGl0KG9zLnBhdGgu
c2VwKQorICAgICAgY29tcG9uZW50c19sZW4gPSBsZW4oYnVpbGRfZmlsZV9kaXJfY29tcG9uZW50
cykKKyAgICAgIGZvciBpbmRleCBpbiB4cmFuZ2UoY29tcG9uZW50c19sZW4gLSAxLCAtMSwgLTEp
OgorICAgICAgICBpZiBidWlsZF9maWxlX2Rpcl9jb21wb25lbnRzW2luZGV4XSA9PSAnc3JjJzoK
KyAgICAgICAgICBvcHRpb25zLmRlcHRoID0gb3MucGF0aC5zZXAuam9pbihidWlsZF9maWxlX2Rp
cl9jb21wb25lbnRzKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGRlbCBidWlsZF9maWxlX2Rp
cl9jb21wb25lbnRzW2luZGV4XQorCisgICAgICAjIElmIHRoZSBpbm5lciBsb29wIGZvdW5kIHNv
bWV0aGluZywgYnJlYWsgd2l0aG91dCBhZHZhbmNpbmcgdG8gYW5vdGhlcgorICAgICAgIyBidWls
ZCBmaWxlLgorICAgICAgaWYgb3B0aW9ucy5kZXB0aDoKKyAgICAgICAgYnJlYWsKKworICAgIGlm
IG5vdCBvcHRpb25zLmRlcHRoOgorICAgICAgcmFpc2UgRXhjZXB0aW9uLCBcCisgICAgICAgICAg
ICAnQ291bGQgbm90IGF1dG9tYXRpY2FsbHkgbG9jYXRlIHNyYyBkaXJlY3RvcnkuICBUaGlzIGlz
IGEgJyArIFwKKyAgICAgICAgICAgICd0ZW1wb3JhcnkgQ2hyb21pdW0gZmVhdHVyZSB0aGF0IHdp
bGwgYmUgcmVtb3ZlZC4gIFVzZSAnICsgXAorICAgICAgICAgICAgJy0tZGVwdGggYXMgYSB3b3Jr
YXJvdW5kLicKKworICAjIElmIHRvcGxldmVsLWRpciBpcyBub3Qgc2V0LCB3ZSBhc3N1bWUgdGhh
dCBkZXB0aCBpcyB0aGUgcm9vdCBvZiBvdXIgc291cmNlCisgICMgdHJlZS4KKyAgaWYgbm90IG9w
dGlvbnMudG9wbGV2ZWxfZGlyOgorICAgIG9wdGlvbnMudG9wbGV2ZWxfZGlyID0gb3B0aW9ucy5k
ZXB0aAorCisgICMgLUQgb24gdGhlIGNvbW1hbmQgbGluZSBzZXRzIHZhcmlhYmxlIGRlZmF1bHRz
IC0gRCBpc24ndCBqdXN0IGZvciBkZWZpbmUsCisgICMgaXQncyBmb3IgZGVmYXVsdC4gIFBlcmhh
cHMgdGhlcmUgc2hvdWxkIGJlIGEgd2F5IHRvIGZvcmNlICgtRj8pIGEKKyAgIyB2YXJpYWJsZSdz
IHZhbHVlIHNvIHRoYXQgaXQgY2FuJ3QgYmUgb3ZlcnJpZGRlbiBieSBhbnl0aGluZyBlbHNlLgor
ICBjbWRsaW5lX2RlZmF1bHRfdmFyaWFibGVzID0ge30KKyAgZGVmaW5lcyA9IFtdCisgIGlmIG9w
dGlvbnMudXNlX2Vudmlyb25tZW50OgorICAgIGRlZmluZXMgKz0gU2hsZXhFbnYoJ0dZUF9ERUZJ
TkVTJykKKyAgaWYgb3B0aW9ucy5kZWZpbmVzOgorICAgIGRlZmluZXMgKz0gb3B0aW9ucy5kZWZp
bmVzCisgIGNtZGxpbmVfZGVmYXVsdF92YXJpYWJsZXMgPSBOYW1lVmFsdWVMaXN0VG9EaWN0KGRl
ZmluZXMpCisgIGlmIERFQlVHX0dFTkVSQUwgaW4gZ3lwLmRlYnVnLmtleXMoKToKKyAgICBEZWJ1
Z091dHB1dChERUJVR19HRU5FUkFMLAorICAgICAgICAgICAgICAgICJjbWRsaW5lX2RlZmF1bHRf
dmFyaWFibGVzOiAlcyIgJSBjbWRsaW5lX2RlZmF1bHRfdmFyaWFibGVzKQorCisgICMgU2V0IHVw
IGluY2x1ZGVzLgorICBpbmNsdWRlcyA9IFtdCisKKyAgIyBJZiB+Ly5neXAvaW5jbHVkZS5neXBp
IGV4aXN0cywgaXQnbGwgYmUgZm9yY2libHkgaW5jbHVkZWQgaW50byBldmVyeQorICAjIC5neXAg
ZmlsZSB0aGF0J3MgbG9hZGVkLCBiZWZvcmUgYW55dGhpbmcgZWxzZSBpcyBpbmNsdWRlZC4KKyAg
aWYgaG9tZV9kb3RfZ3lwICE9IE5vbmU6CisgICAgZGVmYXVsdF9pbmNsdWRlID0gb3MucGF0aC5q
b2luKGhvbWVfZG90X2d5cCwgJ2luY2x1ZGUuZ3lwaScpCisgICAgaWYgb3MucGF0aC5leGlzdHMo
ZGVmYXVsdF9pbmNsdWRlKToKKyAgICAgIGluY2x1ZGVzLmFwcGVuZChkZWZhdWx0X2luY2x1ZGUp
CisKKyAgIyBDb21tYW5kLWxpbmUgLS1pbmNsdWRlIGZpbGVzIGNvbWUgYWZ0ZXIgdGhlIGRlZmF1
bHQgaW5jbHVkZS4KKyAgaWYgb3B0aW9ucy5pbmNsdWRlczoKKyAgICBpbmNsdWRlcy5leHRlbmQo
b3B0aW9ucy5pbmNsdWRlcykKKworICAjIEdlbmVyYXRvciBmbGFncyBzaG91bGQgYmUgcHJlZml4
ZWQgd2l0aCB0aGUgdGFyZ2V0IGdlbmVyYXRvciBzaW5jZSB0aGV5CisgICMgYXJlIGdsb2JhbCBh
Y3Jvc3MgYWxsIGdlbmVyYXRvciBydW5zLgorICBnZW5fZmxhZ3MgPSBbXQorICBpZiBvcHRpb25z
LnVzZV9lbnZpcm9ubWVudDoKKyAgICBnZW5fZmxhZ3MgKz0gU2hsZXhFbnYoJ0dZUF9HRU5FUkFU
T1JfRkxBR1MnKQorICBpZiBvcHRpb25zLmdlbmVyYXRvcl9mbGFnczoKKyAgICBnZW5fZmxhZ3Mg
Kz0gb3B0aW9ucy5nZW5lcmF0b3JfZmxhZ3MKKyAgZ2VuZXJhdG9yX2ZsYWdzID0gTmFtZVZhbHVl
TGlzdFRvRGljdChnZW5fZmxhZ3MpCisgIGlmIERFQlVHX0dFTkVSQUwgaW4gZ3lwLmRlYnVnLmtl
eXMoKToKKyAgICBEZWJ1Z091dHB1dChERUJVR19HRU5FUkFMLCAiZ2VuZXJhdG9yX2ZsYWdzOiAl
cyIgJSBnZW5lcmF0b3JfZmxhZ3MpCisKKyAgIyBUT0RPOiBSZW1vdmUgdGhpcyBhbmQgdGhlIG9w
dGlvbiBhZnRlciB3ZSd2ZSBnb3R0ZW4gZm9sa3MgdG8gbW92ZSB0byB0aGUKKyAgIyBnZW5lcmF0
b3IgZmxhZy4KKyAgaWYgb3B0aW9ucy5tc3ZzX3ZlcnNpb246CisgICAgcHJpbnQgPj5zeXMuc3Rk
ZXJyLCBcCisgICAgICAnREVQUkVDQVRFRDogVXNlIGdlbmVyYXRvciBmbGFnICgtRyBtc3ZzX3Zl
cnNpb249JyArIFwKKyAgICAgIG9wdGlvbnMubXN2c192ZXJzaW9uICsgJykgaW5zdGVhZCBvZiAt
LW1zdnMtdmVyc2lvbj0nICsgXAorICAgICAgb3B0aW9ucy5tc3ZzX3ZlcnNpb24KKyAgICBnZW5l
cmF0b3JfZmxhZ3NbJ21zdnNfdmVyc2lvbiddID0gb3B0aW9ucy5tc3ZzX3ZlcnNpb24KKworICAj
IEdlbmVyYXRlIGFsbCByZXF1ZXN0ZWQgZm9ybWF0cyAodXNlIGEgc2V0IGluIGNhc2Ugd2UgZ290
IG9uZSBmb3JtYXQgcmVxdWVzdAorICAjIHR3aWNlKQorICBmb3IgZm9ybWF0IGluIHNldChvcHRp
b25zLmZvcm1hdHMpOgorICAgIHBhcmFtcyA9IHsnb3B0aW9ucyc6IG9wdGlvbnMsCisgICAgICAg
ICAgICAgICdidWlsZF9maWxlcyc6IGJ1aWxkX2ZpbGVzLAorICAgICAgICAgICAgICAnZ2VuZXJh
dG9yX2ZsYWdzJzogZ2VuZXJhdG9yX2ZsYWdzLAorICAgICAgICAgICAgICAnY3dkJzogb3MuZ2V0
Y3dkKCksCisgICAgICAgICAgICAgICdidWlsZF9maWxlc19hcmcnOiBidWlsZF9maWxlc19hcmcs
CisgICAgICAgICAgICAgICdneXBfYmluYXJ5Jzogc3lzLmFyZ3ZbMF0sCisgICAgICAgICAgICAg
ICdob21lX2RvdF9neXAnOiBob21lX2RvdF9neXB9CisKKyAgICAjIFN0YXJ0IHdpdGggdGhlIGRl
ZmF1bHQgdmFyaWFibGVzIGZyb20gdGhlIGNvbW1hbmQgbGluZS4KKyAgICBbZ2VuZXJhdG9yLCBm
bGF0X2xpc3QsIHRhcmdldHMsIGRhdGFdID0gTG9hZChidWlsZF9maWxlcywgZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZGxpbmVfZGVm
YXVsdF92YXJpYWJsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5jbHVkZXMsIG9wdGlvbnMuZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLCBvcHRpb25zLmNoZWNrLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY2lyY3Vs
YXJfY2hlY2spCisKKyAgICAjIFRPRE8obWFyayk6IFBhc3MgfGRhdGF8IGZvciBub3cgYmVjYXVz
ZSB0aGUgZ2VuZXJhdG9yIG5lZWRzIGEgbGlzdCBvZgorICAgICMgYnVpbGQgZmlsZXMgdGhhdCBj
YW1lIGluLiAgSW4gdGhlIGZ1dHVyZSwgbWF5YmUgaXQgc2hvdWxkIGp1c3QgYWNjZXB0CisgICAg
IyBhIGxpc3QsIGFuZCBub3QgdGhlIHdob2xlIGRhdGEgZGljdC4KKyAgICAjIE5PVEU6IGZsYXRf
bGlzdCBpcyB0aGUgZmxhdHRlbmVkIGRlcGVuZGVuY3kgZ3JhcGggc3BlY2lmeWluZyB0aGUgb3Jk
ZXIKKyAgICAjIHRoYXQgdGFyZ2V0cyBtYXkgYmUgYnVpbHQuICBCdWlsZCBzeXN0ZW1zIHRoYXQg
b3BlcmF0ZSBzZXJpYWxseSBvciB0aGF0CisgICAgIyBuZWVkIHRvIGhhdmUgZGVwZW5kZW5jaWVz
IGRlZmluZWQgYmVmb3JlIGRlcGVuZGVudHMgcmVmZXJlbmNlIHRoZW0gc2hvdWxkCisgICAgIyBn
ZW5lcmF0ZSB0YXJnZXRzIGluIHRoZSBvcmRlciBzcGVjaWZpZWQgaW4gZmxhdF9saXN0LgorICAg
IGdlbmVyYXRvci5HZW5lcmF0ZU91dHB1dChmbGF0X2xpc3QsIHRhcmdldHMsIGRhdGEsIHBhcmFt
cykKKworICAjIERvbmUKKyAgcmV0dXJuIDAKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgorICBzeXMuZXhpdChtYWluKHN5cy5hcmd2WzE6XSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvcHlsaWIvZ3lwL2NvbW1vbi5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9w
eWxpYi9neXAvY29tbW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhZTNhZTdlNjcxNTMyNjg1M2Q1NTYwYTRm
MmIwOTg3MmRmY2QwZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
cHlsaWIvZ3lwL2NvbW1vbi5weQpAQCAtMCwwICsxLDM0NSBAQAorIyEvdXNyL2Jpbi9weXRob24K
KworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCitpbXBvcnQg
ZXJybm8KK2ltcG9ydCBmaWxlY21wCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHJlCitpbXBvcnQg
dGVtcGZpbGUKK2ltcG9ydCBzeXMKKworZGVmIEV4Y2VwdGlvbkFwcGVuZChlLCBtc2cpOgorICAi
IiJBcHBlbmQgYSBtZXNzYWdlIHRvIHRoZSBnaXZlbiBleGNlcHRpb24ncyBtZXNzYWdlLiIiIgor
ICBpZiBub3QgZS5hcmdzOgorICAgIGUuYXJncyA9IChtc2csKQorICBlbGlmIGxlbihlLmFyZ3Mp
ID09IDE6CisgICAgZS5hcmdzID0gKHN0cihlLmFyZ3NbMF0pICsgJyAnICsgbXNnLCkKKyAgZWxz
ZToKKyAgICBlLmFyZ3MgPSAoc3RyKGUuYXJnc1swXSkgKyAnICcgKyBtc2csKSArIGUuYXJnc1sx
Ol0KKworCitkZWYgUGFyc2VRdWFsaWZpZWRUYXJnZXQodGFyZ2V0KToKKyAgIyBTcGxpdHMgYSBx
dWFsaWZpZWQgdGFyZ2V0IGludG8gYSBidWlsZCBmaWxlLCB0YXJnZXQgbmFtZSBhbmQgdG9vbHNl
dC4KKworICAjIE5PVEU6IHJzcGxpdCBpcyB1c2VkIHRvIGRpc2FtYmlndWF0ZSB0aGUgV2luZG93
cyBkcml2ZSBsZXR0ZXIgc2VwYXJhdG9yLgorICB0YXJnZXRfc3BsaXQgPSB0YXJnZXQucnNwbGl0
KCc6JywgMSkKKyAgaWYgbGVuKHRhcmdldF9zcGxpdCkgPT0gMjoKKyAgICBbYnVpbGRfZmlsZSwg
dGFyZ2V0XSA9IHRhcmdldF9zcGxpdAorICBlbHNlOgorICAgIGJ1aWxkX2ZpbGUgPSBOb25lCisK
KyAgdGFyZ2V0X3NwbGl0ID0gdGFyZ2V0LnJzcGxpdCgnIycsIDEpCisgIGlmIGxlbih0YXJnZXRf
c3BsaXQpID09IDI6CisgICAgW3RhcmdldCwgdG9vbHNldF0gPSB0YXJnZXRfc3BsaXQKKyAgZWxz
ZToKKyAgICB0b29sc2V0ID0gTm9uZQorCisgIHJldHVybiBbYnVpbGRfZmlsZSwgdGFyZ2V0LCB0
b29sc2V0XQorCisKK2RlZiBSZXNvbHZlVGFyZ2V0KGJ1aWxkX2ZpbGUsIHRhcmdldCwgdG9vbHNl
dCk6CisgICMgVGhpcyBmdW5jdGlvbiByZXNvbHZlcyBhIHRhcmdldCBpbnRvIGEgY2Fub25pY2Fs
IGZvcm06CisgICMgLSBhIGZ1bGx5IGRlZmluZWQgYnVpbGQgZmlsZSwgZWl0aGVyIGFic29sdXRl
IG9yIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50CisgICMgZGlyZWN0b3J5CisgICMgLSBhIHRhcmdl
dCBuYW1lCisgICMgLSBhIHRvb2xzZXQKKyAgIworICAjIGJ1aWxkX2ZpbGUgaXMgdGhlIGZpbGUg
cmVsYXRpdmUgdG8gd2hpY2ggJ3RhcmdldCcgaXMgZGVmaW5lZC4KKyAgIyB0YXJnZXQgaXMgdGhl
IHF1YWxpZmllZCB0YXJnZXQuCisgICMgdG9vbHNldCBpcyB0aGUgZGVmYXVsdCB0b29sc2V0IGZv
ciB0aGF0IHRhcmdldC4KKyAgW3BhcnNlZF9idWlsZF9maWxlLCB0YXJnZXQsIHBhcnNlZF90b29s
c2V0XSA9IFBhcnNlUXVhbGlmaWVkVGFyZ2V0KHRhcmdldCkKKworICBpZiBwYXJzZWRfYnVpbGRf
ZmlsZToKKyAgICBpZiBidWlsZF9maWxlOgorICAgICAgIyBJZiBhIHJlbGF0aXZlIHBhdGgsIHBh
cnNlZF9idWlsZF9maWxlIGlzIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkKKyAgICAgICMgY29u
dGFpbmluZyBidWlsZF9maWxlLiAgSWYgYnVpbGRfZmlsZSBpcyBub3QgaW4gdGhlIGN1cnJlbnQg
ZGlyZWN0b3J5LAorICAgICAgIyBwYXJzZWRfYnVpbGRfZmlsZSBpcyBub3QgYSB1c2FibGUgcGF0
aCBhcy1pcy4gIFJlc29sdmUgaXQgYnkKKyAgICAgICMgaW50ZXJwcmV0aW5nIGl0IGFzIHJlbGF0
aXZlIHRvIGJ1aWxkX2ZpbGUuICBJZiBwYXJzZWRfYnVpbGRfZmlsZSBpcworICAgICAgIyBhYnNv
bHV0ZSwgaXQgaXMgdXNhYmxlIGFzIGEgcGF0aCByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IGRp
cmVjdG9yeSwKKyAgICAgICMgYW5kIG9zLnBhdGguam9pbiB3aWxsIHJldHVybiBpdCBhcy1pcy4K
KyAgICAgIGJ1aWxkX2ZpbGUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihvcy5wYXRo
LmRpcm5hbWUoYnVpbGRfZmlsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyc2VkX2J1aWxkX2ZpbGUpKQorICAgIGVsc2U6CisgICAgICBidWls
ZF9maWxlID0gcGFyc2VkX2J1aWxkX2ZpbGUKKworICBpZiBwYXJzZWRfdG9vbHNldDoKKyAgICB0
b29sc2V0ID0gcGFyc2VkX3Rvb2xzZXQKKworICByZXR1cm4gW2J1aWxkX2ZpbGUsIHRhcmdldCwg
dG9vbHNldF0KKworCitkZWYgQnVpbGRGaWxlKGZ1bGx5X3F1YWxpZmllZF90YXJnZXQpOgorICAj
IEV4dHJhY3RzIHRoZSBidWlsZCBmaWxlIGZyb20gdGhlIGZ1bGx5IHF1YWxpZmllZCB0YXJnZXQu
CisgIHJldHVybiBQYXJzZVF1YWxpZmllZFRhcmdldChmdWxseV9xdWFsaWZpZWRfdGFyZ2V0KVsw
XQorCisKK2RlZiBRdWFsaWZpZWRUYXJnZXQoYnVpbGRfZmlsZSwgdGFyZ2V0LCB0b29sc2V0KToK
KyAgIyAiUXVhbGlmaWVkIiBtZWFucyB0aGUgZmlsZSB0aGF0IGEgdGFyZ2V0IHdhcyBkZWZpbmVk
IGluIGFuZCB0aGUgdGFyZ2V0CisgICMgbmFtZSwgc2VwYXJhdGVkIGJ5IGEgY29sb24sIHN1ZmZp
eGVkIGJ5IGEgIyBhbmQgdGhlIHRvb2xzZXQgbmFtZToKKyAgIyAvcGF0aC90by9maWxlLmd5cDp0
YXJnZXRfbmFtZSN0b29sc2V0CisgIGZ1bGx5X3F1YWxpZmllZCA9IGJ1aWxkX2ZpbGUgKyAnOicg
KyB0YXJnZXQKKyAgaWYgdG9vbHNldDoKKyAgICBmdWxseV9xdWFsaWZpZWQgPSBmdWxseV9xdWFs
aWZpZWQgKyAnIycgKyB0b29sc2V0CisgIHJldHVybiBmdWxseV9xdWFsaWZpZWQKKworCitkZWYg
UmVsYXRpdmVQYXRoKHBhdGgsIHJlbGF0aXZlX3RvKToKKyAgIyBBc3N1bWluZyBib3RoIHxwYXRo
fCBhbmQgfHJlbGF0aXZlX3RvfCBhcmUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQKKyAgIyBkaXJl
Y3RvcnksIHJldHVybnMgYSByZWxhdGl2ZSBwYXRoIHRoYXQgaWRlbnRpZmllcyBwYXRoIHJlbGF0
aXZlIHRvCisgICMgcmVsYXRpdmVfdG8uCisKKyAgIyBDb252ZXJ0IHRvIGFic29sdXRlIChhbmQg
dGhlcmVmb3JlIG5vcm1hbGl6ZWQgcGF0aHMpLgorICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKHBh
dGgpCisgIHJlbGF0aXZlX3RvID0gb3MucGF0aC5hYnNwYXRoKHJlbGF0aXZlX3RvKQorCisgICMg
U3BsaXQgdGhlIHBhdGhzIGludG8gY29tcG9uZW50cy4KKyAgcGF0aF9zcGxpdCA9IHBhdGguc3Bs
aXQob3MucGF0aC5zZXApCisgIHJlbGF0aXZlX3RvX3NwbGl0ID0gcmVsYXRpdmVfdG8uc3BsaXQo
b3MucGF0aC5zZXApCisKKyAgIyBEZXRlcm1pbmUgaG93IG11Y2ggb2YgdGhlIHByZWZpeCB0aGUg
dHdvIHBhdGhzIHNoYXJlLgorICBwcmVmaXhfbGVuID0gbGVuKG9zLnBhdGguY29tbW9ucHJlZml4
KFtwYXRoX3NwbGl0LCByZWxhdGl2ZV90b19zcGxpdF0pKQorCisgICMgUHV0IGVub3VnaCAiLi4i
IGNvbXBvbmVudHMgdG8gYmFjayB1cCBvdXQgb2YgcmVsYXRpdmVfdG8gdG8gdGhlIGNvbW1vbgor
ICAjIHByZWZpeCwgYW5kIHRoZW4gYXBwZW5kIHRoZSBwYXJ0IG9mIHBhdGhfc3BsaXQgYWZ0ZXIg
dGhlIGNvbW1vbiBwcmVmaXguCisgIHJlbGF0aXZlX3NwbGl0ID0gW29zLnBhdGgucGFyZGlyXSAq
IChsZW4ocmVsYXRpdmVfdG9fc3BsaXQpIC0gcHJlZml4X2xlbikgKyBcCisgICAgICAgICAgICAg
ICAgICAgcGF0aF9zcGxpdFtwcmVmaXhfbGVuOl0KKworICBpZiBsZW4ocmVsYXRpdmVfc3BsaXQp
ID09IDA6CisgICAgIyBUaGUgcGF0aHMgd2VyZSB0aGUgc2FtZS4KKyAgICByZXR1cm4gJycKKwor
ICAjIFR1cm4gaXQgYmFjayBpbnRvIGEgc3RyaW5nIGFuZCB3ZSdyZSBkb25lLgorICByZXR1cm4g
b3MucGF0aC5qb2luKCpyZWxhdGl2ZV9zcGxpdCkKKworCitkZWYgRml4SWZSZWxhdGl2ZVBhdGgo
cGF0aCwgcmVsYXRpdmVfdG8pOgorICAjIExpa2UgUmVsYXRpdmVQYXRoIGJ1dCByZXR1cm5zIHxw
YXRofCB1bmNoYW5nZWQgaWYgaXQgaXMgYWJzb2x1dGUuCisgIGlmIG9zLnBhdGguaXNhYnMocGF0
aCk6CisgICAgcmV0dXJuIHBhdGgKKyAgcmV0dXJuIFJlbGF0aXZlUGF0aChwYXRoLCByZWxhdGl2
ZV90bykKKworCitkZWYgVW5yZWxhdGl2ZVBhdGgocGF0aCwgcmVsYXRpdmVfdG8pOgorICAjIEFz
c3VtaW5nIHRoYXQgfHJlbGF0aXZlX3RvfCBpcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJl
Y3RvcnksIGFuZCB8cGF0aHwKKyAgIyBpcyBhIHBhdGggcmVsYXRpdmUgdG8gdGhlIGRpcm5hbWUg
b2YgfHJlbGF0aXZlX3RvfCwgcmV0dXJucyBhIHBhdGggdGhhdAorICAjIGlkZW50aWZpZXMgfHBh
dGh8IHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyAgcmVsX2RpciA9IG9zLnBh
dGguZGlybmFtZShyZWxhdGl2ZV90bykKKyAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgob3MucGF0
aC5qb2luKHJlbF9kaXIsIHBhdGgpKQorCisKKyMgcmUgb2JqZWN0cyB1c2VkIGJ5IEVuY29kZVBP
U0lYU2hlbGxBcmd1bWVudC4gIFNlZSBJRUVFIDEwMDMuMSBYQ1UuMi4yIGF0CisjIGh0dHA6Ly93
d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS91dGlsaXRpZXMveGN1X2NoYXAw
Mi5odG1sI3RhZ18wMl8wMgorIyBhbmQgdGhlIGRvY3VtZW50YXRpb24gZm9yIHZhcmlvdXMgc2hl
bGxzLgorCisjIF9xdW90ZSBpcyBhIHBhdHRlcm4gdGhhdCBzaG91bGQgbWF0Y2ggYW55IGFyZ3Vt
ZW50IHRoYXQgbmVlZHMgdG8gYmUgcXVvdGVkCisjIHdpdGggZG91YmxlLXF1b3RlcyBieSBFbmNv
ZGVQT1NJWFNoZWxsQXJndW1lbnQuICBJdCBtYXRjaGVzIHRoZSBmb2xsb3dpbmcKKyMgY2hhcmFj
dGVycyBhcHBlYXJpbmcgYW55d2hlcmUgaW4gYW4gYXJndW1lbnQ6CisjICAgXHQsIFxuLCBzcGFj
ZSAgcGFyYW1ldGVyIHNlcGFyYXRvcnMKKyMgICAjICAgICAgICAgICAgICBjb21tZW50cworIyAg
ICQgICAgICAgICAgICAgIGV4cGFuc2lvbnMgKHF1b3RlZCB0byBhbHdheXMgZXhwYW5kIHdpdGhp
biBvbmUgYXJndW1lbnQpCisjICAgJSAgICAgICAgICAgICAgY2FsbGVkIG91dCBieSBJRUVFIDEw
MDMuMSBYQ1UuMi4yCisjICAgJiAgICAgICAgICAgICAgam9iIGNvbnRyb2wKKyMgICAnICAgICAg
ICAgICAgICBxdW90aW5nCisjICAgKCwgKSAgICAgICAgICAgc3Vic2hlbGwgZXhlY3V0aW9uCisj
ICAgKiwgPywgWyAgICAgICAgcGF0aG5hbWUgZXhwYW5zaW9uCisjICAgOyAgICAgICAgICAgICAg
Y29tbWFuZCBkZWxpbWl0ZXIKKyMgICA8LCA+LCB8ICAgICAgICByZWRpcmVjdGlvbgorIyAgID0g
ICAgICAgICAgICAgIGFzc2lnbm1lbnQKKyMgICB7LCB9ICAgICAgICAgICBicmFjZSBleHBhbnNp
b24gKGJhc2gpCisjICAgfiAgICAgICAgICAgICAgdGlsZGUgZXhwYW5zaW9uCisjIEl0IGFsc28g
bWF0Y2hlcyB0aGUgZW1wdHkgc3RyaW5nLCBiZWNhdXNlICIiIChvciAnJykgaXMgdGhlIG9ubHkg
d2F5IHRvCisjIHJlcHJlc2VudCBhbiBlbXB0eSBzdHJpbmcgbGl0ZXJhbCBhcmd1bWVudCB0byBh
IFBPU0lYIHNoZWxsLgorIworIyBUaGlzIGRvZXMgbm90IG1hdGNoIHRoZSBjaGFyYWN0ZXJzIGlu
IF9lc2NhcGUsIGJlY2F1c2UgdGhvc2UgbmVlZCB0byBiZQorIyBiYWNrc2xhc2gtZXNjYXBlZCBy
ZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSBhcHBlYXIgaW4gYSBkb3VibGUtcXVvdGVkCisjIHN0
cmluZy4KK19xdW90ZSA9IHJlLmNvbXBpbGUoJ1tcdFxuICMkJSZcJygpKjs8PT4/W3t8fX5dfF4k
JykKKworIyBfZXNjYXBlIGlzIGEgcGF0dGVybiB0aGF0IHNob3VsZCBtYXRjaCBhbnkgY2hhcmFj
dGVyIHRoYXQgbmVlZHMgdG8gYmUKKyMgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLCB3aGV0aGVy
IG9yIG5vdCB0aGUgYXJndW1lbnQgbWF0Y2hlZCB0aGUgX3F1b3RlCisjIHBhdHRlcm4uICBfZXNj
YXBlIGlzIHVzZWQgd2l0aCByZS5zdWIgdG8gYmFja3NsYXNoIGFueXRoaW5nIGluIF9lc2NhcGUn
cworIyBmaXJzdCBtYXRjaCBncm91cCwgaGVuY2UgdGhlIChwYXJlbnRoZXNlcykgaW4gdGhlIHJl
Z3VsYXIgZXhwcmVzc2lvbi4KKyMKKyMgX2VzY2FwZSBtYXRjaGVzIHRoZSBmb2xsb3dpbmcgY2hh
cmFjdGVycyBhcHBlYXJpbmcgYW55d2hlcmUgaW4gYW4gYXJndW1lbnQ6CisjICAgIiAgdG8gcHJl
dmVudCBQT1NJWCBzaGVsbHMgZnJvbSBpbnRlcnByZXRpbmcgdGhpcyBjaGFyYWN0ZXIgZm9yIHF1
b3RpbmcKKyMgICBcICB0byBwcmV2ZW50IFBPU0lYIHNoZWxscyBmcm9tIGludGVycHJldGluZyB0
aGlzIGNoYXJhY3RlciBmb3IgZXNjYXBpbmcKKyMgICBgICB0byBwcmV2ZW50IFBPU0lYIHNoZWxs
cyBmcm9tIGludGVycHJldGluZyB0aGlzIGNoYXJhY3RlciBmb3IgY29tbWFuZAorIyAgICAgIHN1
YnN0aXR1dGlvbgorIyBNaXNzaW5nIGZyb20gdGhpcyBsaXN0IGlzICQsIGJlY2F1c2UgdGhlIGRl
c2lyZWQgYmVoYXZpb3Igb2YKKyMgRW5jb2RlUE9TSVhTaGVsbEFyZ3VtZW50IGlzIHRvIHBlcm1p
dCBwYXJhbWV0ZXIgKHZhcmlhYmxlKSBleHBhbnNpb24uCisjCisjIEFsc28gbWlzc2luZyBmcm9t
IHRoaXMgbGlzdCBpcyAhLCB3aGljaCBiYXNoIHdpbGwgaW50ZXJwcmV0IGFzIHRoZSBoaXN0b3J5
CisjIGV4cGFuc2lvbiBjaGFyYWN0ZXIgd2hlbiBoaXN0b3J5IGlzIGVuYWJsZWQuICBiYXNoIGRv
ZXMgbm90IGVuYWJsZSBoaXN0b3J5CisjIGJ5IGRlZmF1bHQgaW4gbm9uLWludGVyYWN0aXZlIHNo
ZWxscywgc28gdGhpcyBpcyBub3QgdGhvdWdodCB0byBiZSBhIHByb2JsZW0uCisjICEgd2FzIG9t
aXR0ZWQgZnJvbSB0aGlzIGxpc3QgYmVjYXVzZSBiYXNoIGludGVycHJldHMgIlwhIiBhcyBhIGxp
dGVyYWwgc3RyaW5nCisjIGluY2x1ZGluZyB0aGUgYmFja3NsYXNoIGNoYXJhY3RlciAoYXZvaWRp
bmcgaGlzdG9yeSBleHBhbnNpb24gYnV0IHJldGFpbmluZworIyB0aGUgYmFja3NsYXNoKSwgd2hp
Y2ggd291bGQgbm90IGJlIGNvcnJlY3QgZm9yIGFyZ3VtZW50IGVuY29kaW5nLiAgSGFuZGxpbmcK
KyMgdGhpcyBjYXNlIHByb3Blcmx5IHdvdWxkIGFsc28gYmUgcHJvYmxlbWF0aWMgYmVjYXVzZSBi
YXNoIGFsbG93cyB0aGUgaGlzdG9yeQorIyBjaGFyYWN0ZXIgdG8gYmUgY2hhbmdlZCB3aXRoIHRo
ZSBoaXN0Y2hhcnMgc2hlbGwgdmFyaWFibGUuICBGb3J0dW5hdGVseSwKKyMgYXMgaGlzdG9yeSBp
cyBub3QgZW5hYmxlZCBpbiBub24taW50ZXJhY3RpdmUgc2hlbGxzIGFuZAorIyBFbmNvZGVQT1NJ
WFNoZWxsQXJndW1lbnQgaXMgb25seSBleHBlY3RlZCB0byBlbmNvZGUgZm9yIG5vbi1pbnRlcmFj
dGl2ZQorIyBzaGVsbHMsIHRoZXJlIGlzIG5vIHJvb20gZm9yIGVycm9yIGhlcmUgYnkgaWdub3Jp
bmcgIS4KK19lc2NhcGUgPSByZS5jb21waWxlKHInKFsiXFxgXSknKQorCitkZWYgRW5jb2RlUE9T
SVhTaGVsbEFyZ3VtZW50KGFyZ3VtZW50KToKKyAgIiIiRW5jb2RlcyB8YXJndW1lbnR8IHN1aXRh
Ymx5IGZvciBjb25zdW1wdGlvbiBieSBQT1NJWCBzaGVsbHMuCisKKyAgYXJndW1lbnQgbWF5IGJl
IHF1b3RlZCBhbmQgZXNjYXBlZCBhcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgUE9TSVggc2hl
bGxzCisgIHRyZWF0IHRoZSByZXR1cm5lZCB2YWx1ZSBhcyBhIGxpdGVyYWwgcmVwcmVzZW50aW5n
IHRoZSBhcmd1bWVudCBwYXNzZWQgdG8KKyAgdGhpcyBmdW5jdGlvbi4gIFBhcmFtZXRlciAodmFy
aWFibGUpIGV4cGFuc2lvbnMgYmVnaW5uaW5nIHdpdGggJCBhcmUgYWxsb3dlZAorICB0byByZW1h
aW4gaW50YWN0IHdpdGhvdXQgZXNjYXBpbmcgdGhlICQsIHRvIGFsbG93IHRoZSBhcmd1bWVudCB0
byBjb250YWluCisgIHJlZmVyZW5jZXMgdG8gdmFyaWFibGVzIHRvIGJlIGV4cGFuZGVkIGJ5IHRo
ZSBzaGVsbC4KKyAgIiIiCisKKyAgaWYgbm90IGlzaW5zdGFuY2UoYXJndW1lbnQsIHN0cik6Cisg
ICAgYXJndW1lbnQgPSBzdHIoYXJndW1lbnQpCisKKyAgaWYgX3F1b3RlLnNlYXJjaChhcmd1bWVu
dCk6CisgICAgcXVvdGUgPSAnIicKKyAgZWxzZToKKyAgICBxdW90ZSA9ICcnCisKKyAgZW5jb2Rl
ZCA9IHF1b3RlICsgcmUuc3ViKF9lc2NhcGUsIHInXFxcMScsIGFyZ3VtZW50KSArIHF1b3RlCisK
KyAgcmV0dXJuIGVuY29kZWQKKworCitkZWYgRW5jb2RlUE9TSVhTaGVsbExpc3QobGlzdCk6Cisg
ICIiIkVuY29kZXMgfGxpc3R8IHN1aXRhYmx5IGZvciBjb25zdW1wdGlvbiBieSBQT1NJWCBzaGVs
bHMuCisKKyAgUmV0dXJucyBFbmNvZGVQT1NJWFNoZWxsQXJndW1lbnQgZm9yIGVhY2ggaXRlbSBp
biBsaXN0LCBhbmQgam9pbnMgdGhlbQorICB0b2dldGhlciB1c2luZyB0aGUgc3BhY2UgY2hhcmFj
dGVyIGFzIGFuIGFyZ3VtZW50IHNlcGFyYXRvci4KKyAgIiIiCisKKyAgZW5jb2RlZF9hcmd1bWVu
dHMgPSBbXQorICBmb3IgYXJndW1lbnQgaW4gbGlzdDoKKyAgICBlbmNvZGVkX2FyZ3VtZW50cy5h
cHBlbmQoRW5jb2RlUE9TSVhTaGVsbEFyZ3VtZW50KGFyZ3VtZW50KSkKKyAgcmV0dXJuICcgJy5q
b2luKGVuY29kZWRfYXJndW1lbnRzKQorCisKK2RlZiBEZWVwRGVwZW5kZW5jeVRhcmdldHModGFy
Z2V0X2RpY3RzLCByb290cyk6CisgICIiIlJldHVybnMgdGhlIHJlY3Vyc2l2ZSBsaXN0IG9mIHRh
cmdldCBkZXBlbmRlbmNpZXMuIiIiCisgIGRlcGVuZGVuY2llcyA9IHNldCgpCisgIHBlbmRpbmcg
PSBzZXQocm9vdHMpCisgIHdoaWxlIHBlbmRpbmc6CisgICAgIyBQbHVjayBvdXQgb25lLgorICAg
IHIgPSBwZW5kaW5nLnBvcCgpCisgICAgIyBTa2lwIGlmIHZpc2l0ZWQgYWxyZWFkeS4KKyAgICBp
ZiByIGluIGRlcGVuZGVuY2llczoKKyAgICAgIGNvbnRpbnVlCisgICAgIyBBZGQgaXQuCisgICAg
ZGVwZW5kZW5jaWVzLmFkZChyKQorICAgICMgQWRkIGl0cyBjaGlsZHJlbi4KKyAgICBzcGVjID0g
dGFyZ2V0X2RpY3RzW3JdCisgICAgcGVuZGluZy51cGRhdGUoc2V0KHNwZWMuZ2V0KCdkZXBlbmRl
bmNpZXMnLCBbXSkpKQorICAgIHBlbmRpbmcudXBkYXRlKHNldChzcGVjLmdldCgnZGVwZW5kZW5j
aWVzX29yaWdpbmFsJywgW10pKSkKKyAgcmV0dXJuIGxpc3QoZGVwZW5kZW5jaWVzIC0gc2V0KHJv
b3RzKSkKKworCitkZWYgQnVpbGRGaWxlVGFyZ2V0cyh0YXJnZXRfbGlzdCwgYnVpbGRfZmlsZSk6
CisgICIiIkZyb20gYSB0YXJnZXRfbGlzdCwgcmV0dXJucyB0aGUgc3Vic2V0IGZyb20gdGhlIHNw
ZWNpZmllZCBidWlsZF9maWxlLgorICAiIiIKKyAgcmV0dXJuIFtwIGZvciBwIGluIHRhcmdldF9s
aXN0IGlmIEJ1aWxkRmlsZShwKSA9PSBidWlsZF9maWxlXQorCisKK2RlZiBBbGxUYXJnZXRzKHRh
cmdldF9saXN0LCB0YXJnZXRfZGljdHMsIGJ1aWxkX2ZpbGUpOgorICAiIiJSZXR1cm5zIGFsbCB0
YXJnZXRzIChkaXJlY3QgYW5kIGRlcGVuZGVuY2llcykgZm9yIHRoZSBzcGVjaWZpZWQgYnVpbGRf
ZmlsZS4KKyAgIiIiCisgIGJmdGFyZ2V0cyA9IEJ1aWxkRmlsZVRhcmdldHModGFyZ2V0X2xpc3Qs
IGJ1aWxkX2ZpbGUpCisgIGRlcHRhcmdldHMgPSBEZWVwRGVwZW5kZW5jeVRhcmdldHModGFyZ2V0
X2RpY3RzLCBiZnRhcmdldHMpCisgIHJldHVybiBiZnRhcmdldHMgKyBkZXB0YXJnZXRzCisKKwor
ZGVmIFdyaXRlT25EaWZmKGZpbGVuYW1lKToKKyAgIiIiV3JpdGUgdG8gYSBmaWxlIG9ubHkgaWYg
dGhlIG5ldyBjb250ZW50cyBkaWZmZXIuCisKKyAgQXJndW1lbnRzOgorICAgIGZpbGVuYW1lOiBu
YW1lIG9mIHRoZSBmaWxlIHRvIHBvdGVudGlhbGx5IHdyaXRlIHRvLgorICBSZXR1cm5zOgorICAg
IEEgZmlsZSBsaWtlIG9iamVjdCB3aGljaCB3aWxsIHdyaXRlIHRvIHRlbXBvcmFyeSBmaWxlIGFu
ZCBvbmx5IG92ZXJ3cml0ZQorICAgIHRoZSB0YXJnZXQgaWYgaXQgZGlmZmVycyAob24gY2xvc2Up
LgorICAiIiIKKworICBjbGFzcyBXcml0ZXI6CisgICAgIiIiV3JhcHBlciBhcm91bmQgZmlsZSB3
aGljaCBvbmx5IGNvdmVycyB0aGUgdGFyZ2V0IGlmIGl0IGRpZmZlcnMuIiIiCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgorICAgICAgIyBQaWNrIHRlbXBvcmFyeSBmaWxlLgorICAgICAgdG1wX2Zk
LCBzZWxmLnRtcF9wYXRoID0gdGVtcGZpbGUubWtzdGVtcCgKKyAgICAgICAgICBzdWZmaXg9Jy50
bXAnLAorICAgICAgICAgIHByZWZpeD1vcy5wYXRoLnNwbGl0KGZpbGVuYW1lKVsxXSArICcuZ3lw
LicsCisgICAgICAgICAgZGlyPW9zLnBhdGguc3BsaXQoZmlsZW5hbWUpWzBdKQorICAgICAgdHJ5
OgorICAgICAgICBzZWxmLnRtcF9maWxlID0gb3MuZmRvcGVuKHRtcF9mZCwgJ3diJykKKyAgICAg
IGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICMgRG9uJ3QgbGVhdmUgdHVyZHMgYmVoaW5kLgor
ICAgICAgICBvcy51bmxpbmsoc2VsZi50bXBfcGF0aCkKKyAgICAgICAgcmFpc2UKKworICAgIGRl
ZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRybmFtZSk6CisgICAgICAjIERlbGVnYXRlIGV2ZXJ5dGhp
bmcgZWxzZSB0byBzZWxmLnRtcF9maWxlCisgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLnRtcF9m
aWxlLCBhdHRybmFtZSkKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgIHRyeToKKyAgICAg
ICAgIyBDbG9zZSB0bXAgZmlsZS4KKyAgICAgICAgc2VsZi50bXBfZmlsZS5jbG9zZSgpCisgICAg
ICAgICMgRGV0ZXJtaW5lIGlmIGRpZmZlcmVudC4KKyAgICAgICAgc2FtZSA9IEZhbHNlCisgICAg
ICAgIHRyeToKKyAgICAgICAgICBzYW1lID0gZmlsZWNtcC5jbXAoc2VsZi50bXBfcGF0aCwgZmls
ZW5hbWUsIEZhbHNlKQorICAgICAgICBleGNlcHQgT1NFcnJvciwgZToKKyAgICAgICAgICBpZiBl
LmVycm5vICE9IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgaWYg
c2FtZToKKyAgICAgICAgICAjIFRoZSBuZXcgZmlsZSBpcyBpZGVudGljYWwgdG8gdGhlIG9sZCBv
bmUsIGp1c3QgZ2V0IHJpZCBvZiB0aGUgbmV3CisgICAgICAgICAgIyBvbmUuCisgICAgICAgICAg
b3MudW5saW5rKHNlbGYudG1wX3BhdGgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgIyBUaGUg
bmV3IGZpbGUgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9sZCBvbmUsIG9yIHRoZXJlIGlzIG5vIG9s
ZCBvbmUuCisgICAgICAgICAgIyBSZW5hbWUgdGhlIG5ldyBmaWxlIHRvIHRoZSBwZXJtYW5lbnQg
bmFtZS4KKyAgICAgICAgICAjCisgICAgICAgICAgIyB0ZW1wZmlsZS5ta3N0ZW1wIHVzZXMgYW4g
b3Zlcmx5IHJlc3RyaWN0aXZlIG1vZGUsIHJlc3VsdGluZyBpbiBhCisgICAgICAgICAgIyBmaWxl
IHRoYXQgY2FuIG9ubHkgYmUgcmVhZCBieSB0aGUgb3duZXIsIHJlZ2FyZGxlc3Mgb2YgdGhlIHVt
YXNrLgorICAgICAgICAgICMgVGhlcmUncyBubyByZWFzb24gdG8gbm90IHJlc3BlY3QgdGhlIHVt
YXNrIGhlcmUsIHdoaWNoIG1lYW5zIHRoYXQKKyAgICAgICAgICAjIGFuIGV4dHJhIGhvb3AgaXMg
cmVxdWlyZWQgdG8gZmV0Y2ggaXQgYW5kIHJlc2V0IHRoZSBuZXcgZmlsZSdzIG1vZGUuCisgICAg
ICAgICAgIworICAgICAgICAgICMgTm8gd2F5IHRvIGdldCB0aGUgdW1hc2sgd2l0aG91dCBzZXR0
aW5nIGEgbmV3IG9uZT8gIFNldCBhIHNhZmUgb25lCisgICAgICAgICAgIyBhbmQgdGhlbiBzZXQg
aXQgYmFjayB0byB0aGUgb2xkIHZhbHVlLgorICAgICAgICAgIHVtYXNrID0gb3MudW1hc2soMDc3
KQorICAgICAgICAgIG9zLnVtYXNrKHVtYXNrKQorICAgICAgICAgIG9zLmNobW9kKHNlbGYudG1w
X3BhdGgsIDA2NjYgJiB+dW1hc2spCisgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4z
MicgYW5kIG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKKyAgICAgICAgICAgICMgTk9URTogb24g
d2luZG93cyAoYnV0IG5vdCBjeWd3aW4pIHJlbmFtZSB3aWxsIG5vdCByZXBsYWNlIGFuCisgICAg
ICAgICAgICAjIGV4aXN0aW5nIGZpbGUsIHNvIGl0IG11c3QgYmUgcHJlY2VkZWQgd2l0aCBhIHJl
bW92ZS4gU2FkbHkgdGhlcmUKKyAgICAgICAgICAgICMgaXMgbm8gd2F5IHRvIG1ha2UgdGhlIHN3
aXRjaCBhdG9taWMuCisgICAgICAgICAgICBvcy5yZW1vdmUoZmlsZW5hbWUpCisgICAgICAgICAg
b3MucmVuYW1lKHNlbGYudG1wX3BhdGgsIGZpbGVuYW1lKQorICAgICAgZXhjZXB0IEV4Y2VwdGlv
bjoKKyAgICAgICAgIyBEb24ndCBsZWF2ZSB0dXJkcyBiZWhpbmQuCisgICAgICAgIG9zLnVubGlu
ayhzZWxmLnRtcF9wYXRoKQorICAgICAgICByYWlzZQorCisgIHJldHVybiBXcml0ZXIoKQorCisK
KyMgRnJvbSBBbGV4IE1hcnRlbGxpLAorIyBodHRwOi8vYXNwbi5hY3RpdmVzdGF0ZS5jb20vQVNQ
Ti9Db29rYm9vay9QeXRob24vUmVjaXBlLzUyNTYwCisjIEFTUE46IFB5dGhvbiBDb29rYm9vazog
UmVtb3ZlIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlCisjIEZpcnN0IGNvbW1lbnQsIGRhdGVk
IDIwMDEvMTAvMTMuCisjIChBbHNvIGluIHRoZSBwcmludGVkIFB5dGhvbiBDb29rYm9vay4pCisK
K2RlZiB1bmlxdWVyKHNlcSwgaWRmdW49Tm9uZSk6CisgICAgaWYgaWRmdW4gaXMgTm9uZToKKyAg
ICAgICAgZGVmIGlkZnVuKHgpOiByZXR1cm4geAorICAgIHNlZW4gPSB7fQorICAgIHJlc3VsdCA9
IFtdCisgICAgZm9yIGl0ZW0gaW4gc2VxOgorICAgICAgICBtYXJrZXIgPSBpZGZ1bihpdGVtKQor
ICAgICAgICBpZiBtYXJrZXIgaW4gc2VlbjogY29udGludWUKKyAgICAgICAgc2VlblttYXJrZXJd
ID0gMQorICAgICAgICByZXN1bHQuYXBwZW5kKGl0ZW0pCisgICAgcmV0dXJuIHJlc3VsdApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9lYXN5X3htbC5weSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvZWFzeV94bWwucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOThl
MjkyM2ExMWFmNzQxODBjODhlZGE3ZmNhZWQ1YzU5ODQwNDdkYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvZWFzeV94bWwucHkKQEAgLTAsMCArMSwx
MjEgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKworaW1wb3J0IHhtbC5kb20KK2ltcG9ydCB4bWxfZml4CitpbXBvcnQg
Y29tbW9uCisKK2NsYXNzIEVhc3lYbWwob2JqZWN0KToKKyAgIiIiIENsYXNzIHRvIGVhc2lseSBj
cmVhdGUgWE1MIGZpbGVzIHdpdGggc3Vic3RhbnRpYWwgcHJlLWRlZmluZWQgc3RydWN0dXJlcy4K
KworICBWaXN1YWwgU3R1ZGlvIGZpbGVzIGhhdmUgYSBsb3Qgb2YgcHJlLWRlZmluZWQgc3RydWN0
dXJlcy4gIFRoaXMgY2xhc3MgbWFrZXMKKyAgaXQgZWFzeSB0byByZXByZXNlbnQgdGhlc2Ugc3Ry
dWN0dXJlcyBhcyBQeXRob24gZGF0YSBzdHJ1Y3R1cmVzLCBpbnN0ZWFkIG9mCisgIGhhdmluZyB0
byBjcmVhdGUgYSBsb3Qgb2YgZnVuY3Rpb24gY2FsbHMuCisKKyAgRm9yIHRoaXMgY2xhc3MsIGFu
IFhNTCBlbGVtZW50IGlzIHJlcHJlc2VudGVkIGFzIGEgbGlzdCBjb21wb3NlZCBvZjoKKyAgMS4g
VGhlIG5hbWUgb2YgdGhlIGVsZW1lbnQsIGEgc3RyaW5nLAorICAyLiBUaGUgYXR0cmlidXRlcyBv
ZiB0aGUgZWxlbWVudCwgYW4gZGljdGlvbmFyeSAob3B0aW9uYWwpLCBhbmQKKyAgMysuIFRoZSBj
b250ZW50IG9mIHRoZSBlbGVtZW50LCBpZiBhbnkuICBTdHJpbmdzIGFyZSBzaW1wbGUgdGV4dCBu
b2RlcyBhbmQKKyAgICAgIGxpc3RzIGFyZSBjaGlsZCBlbGVtZW50cy4KKworICBFeGFtcGxlIDE6
CisgICAgICA8dGVzdC8+CisgIGJlY29tZXMKKyAgICAgIFsndGVzdCddCisKKyAgRXhhbXBsZSAy
OgorICAgICAgPG15ZWxlbWVudCBhPSd2YWx1ZTEnIGI9J3ZhbHVlMic+CisgICAgICAgICA8Y2hp
bGR0eXBlPlRoaXMgaXM8L2NoaWxkdHlwZT4KKyAgICAgICAgIDxjaGlsZHR5cGU+aXQhPC9jaGls
ZHR5cGU+CisgICAgICA8L215ZWxlbWVudD4KKworICBiZWNvbWVzCisgICAgICBbJ215ZWxlbWVu
dCcsIHsnYSc6J3ZhbHVlMScsICdiJzondmFsdWUyJ30sCisgICAgICAgICBbJ2NoaWxkdHlwZScs
ICdUaGlzIGlzJ10sCisgICAgICAgICBbJ2NoaWxkdHlwZScsICdpdCEnXSwKKyAgICAgIF0KKyAg
IiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGF0dHJpYnV0ZXM9Tm9uZSk6CisgICAg
IiIiIENvbnN0cnVjdHMgYW4gb2JqZWN0IHJlcHJlc2VudGluZyBhbiBYTUwgZG9jdW1lbnQuCisK
KyAgICBBcmdzOgorICAgICAgbmFtZTogIEEgc3RyaW5nLCB0aGUgbmFtZSBvZiB0aGUgcm9vdCBl
bGVtZW50LgorICAgICAgYXR0cmlidXRlczogIEEgZGljdGlvbmFyeSwgdGhlIGF0dHJpYnV0ZXMg
b2YgdGhlIHJvb3QuCisgICAgIiIiCisgICAgeG1sX2ltcGwgPSB4bWwuZG9tLmdldERPTUltcGxl
bWVudGF0aW9uKCkKKyAgICBzZWxmLmRvYyA9IHhtbF9pbXBsLmNyZWF0ZURvY3VtZW50KE5vbmUs
IG5hbWUsIE5vbmUpCisgICAgaWYgYXR0cmlidXRlczoKKyAgICAgIHNlbGYuU2V0QXR0cmlidXRl
cyhzZWxmLmRvYy5kb2N1bWVudEVsZW1lbnQsIGF0dHJpYnV0ZXMpCisKKyAgZGVmIEFwcGVuZENo
aWxkcmVuKHNlbGYsIHBhcmVudCwgY2hpbGRyZW5fc3BlY2lmaWNhdGlvbnMpOgorICAgICIiIiBB
cHBlbmRzIG11bHRpcGxlIGNoaWxkcmVuLgorCisgICAgQXJnczoKKyAgICAgIHBhcmVudDogIFRo
ZSBub2RlIHRvIHdoaWNoIHRoZSBjaGlsZHJlbiB3aWxsIGJlIGFkZGVkLgorICAgICAgY2hpbGRy
ZW5fc3BlY2lmaWNhdGlvbnM6ICBBIGxpc3Qgb2Ygbm9kZSBzcGVjaWZpY2F0aW9ucy4KKyAgICAi
IiIKKyAgICBmb3Igc3BlY2lmaWNhdGlvbiBpbiBjaGlsZHJlbl9zcGVjaWZpY2F0aW9uczoKKyAg
ICAgICMgSWYgaXQncyBhIHN0cmluZywgYXBwZW5kIGEgdGV4dCBub2RlLgorICAgICAgIyBPdGhl
cndpc2UgYXBwZW5kIGFuIFhNTCBub2RlLgorICAgICAgaWYgaXNpbnN0YW5jZShzcGVjaWZpY2F0
aW9uLCBzdHIpOgorICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoc2VsZi5kb2MuY3JlYXRlVGV4
dE5vZGUoc3BlY2lmaWNhdGlvbikpCisgICAgICBlbHNlOgorICAgICAgICBzZWxmLkFwcGVuZE5v
ZGUocGFyZW50LCBzcGVjaWZpY2F0aW9uKQorCisgIGRlZiBBcHBlbmROb2RlKHNlbGYsIHBhcmVu
dCwgc3BlY2lmaWNhdGlvbik6CisgICAgIiIiIEFwcGVuZHMgbXVsdGlwbGUgY2hpbGRyZW4uCisK
KyAgICBBcmdzOgorICAgICAgcGFyZW50OiAgVGhlIG5vZGUgdG8gd2hpY2ggdGhlIGNoaWxkIHdp
bGwgYmUgYWRkZWQuCisgICAgICBjaGlsZHJlbl9zcGVjaWZpY2F0aW9uczogIEEgbGlzdCwgdGhl
IG5vZGUgc3BlY2lmaWNhdGlvbi4gIFRoZSBmaXJzdAorICAgICAgICAgIGVudHJ5IGlzIHRoZSBu
YW1lIG9mIHRoZSBlbGVtZW50LiAgSWYgdGhlIHNlY29uZCBlbnRyeSBpcyBhCisgICAgICAgICAg
ZGljdGlvbmFyeSwgaXQgaXMgdGhlIGF0dHJpYnV0ZXMuICBUaGUgcmVtYWluaW5nIGVudHJpZXMg
b2YgdGhlCisgICAgICAgICAgbGlzdCBhcmUgdGhlIHN1Yi1lbGVtZW50cy4KKyAgICBSZXR1cm5z
OgorICAgICAgVGhlIFhNTCBlbGVtZW50IGNyZWF0ZWQuCisgICAgIiIiCisgICAgbmFtZSA9IHNw
ZWNpZmljYXRpb25bMF0KKyAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgorICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdUaGUgZmlyc3QgaXRlbSBvZiBhbiBFYXN5WG1sIHNwZWNpZmljYXRp
b24gc2hvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgICAgICAnYSBzdHJpbmcuICBTcGVjaWZp
Y2F0aW9uIHdhcyAnICsgc3RyKHNwZWNpZmljYXRpb24pKQorICAgIGVsZW1lbnQgPSBzZWxmLmRv
Yy5jcmVhdGVFbGVtZW50KG5hbWUpCisgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpCisg
ICAgcmVzdCA9IHNwZWNpZmljYXRpb25bMTpdCisgICAgIyBUaGUgc2Vjb25kIGVsZW1lbnQgaXMg
b3B0aW9uYWxseSBhIGRpY3Rpb25hcnkgb2YgdGhlIGF0dHJpYnV0ZXMuCisgICAgaWYgcmVzdCBh
bmQgaXNpbnN0YW5jZShyZXN0WzBdLCBkaWN0KToKKyAgICAgIHNlbGYuU2V0QXR0cmlidXRlcyhl
bGVtZW50LCByZXN0WzBdKQorICAgICAgcmVzdCA9IHJlc3RbMTpdCisgICAgaWYgcmVzdDoKKyAg
ICAgIHNlbGYuQXBwZW5kQ2hpbGRyZW4oZWxlbWVudCwgcmVzdCkKKyAgICByZXR1cm4gZWxlbWVu
dAorCisgIGRlZiBTZXRBdHRyaWJ1dGVzKHNlbGYsIGVsZW1lbnQsIGF0dHJpYnV0ZV9kZXNjcmlw
dGlvbik6CisgICAgIiIiIFNldHMgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZWxlbWVudC4KKworICAg
IEFyZ3M6CisgICAgICBlbGVtZW50OiAgVGhlIG5vZGUgdG8gd2hpY2ggdGhlIGNoaWxkIHdpbGwg
YmUgYWRkZWQuCisgICAgICBhdHRyaWJ1dGVfZGVzY3JpcHRpb246ICBBIGRpY3Rpb25hcnkgdGhh
dCBtYXBzIGF0dHJpYnV0ZSBuYW1lcyB0bworICAgICAgICAgIGF0dHJpYnV0ZSB2YWx1ZXMuCisg
ICAgIiIiCisgICAgZm9yIGF0dHJpYnV0ZSwgdmFsdWUgaW4gYXR0cmlidXRlX2Rlc2NyaXB0aW9u
Lml0ZXJpdGVtcygpOgorICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1
ZSkKKworICBkZWYgUm9vdChzZWxmKToKKyAgICAiIiIgUmV0dXJucyB0aGUgcm9vdCBlbGVtZW50
LiAiIiIKKyAgICByZXR1cm4gc2VsZi5kb2MuZG9jdW1lbnRFbGVtZW50CisKKyAgZGVmIFdyaXRl
SWZDaGFuZ2VkKHNlbGYsIHBhdGgpOgorICAgICIiIiBXcml0ZXMgdGhlIFhNTCBkb2MgYnV0IGRv
bid0IHRvdWNoIHRoZSBmaWxlIGlmIHVuY2hhbmdlZC4gIiIiCisgICAgZiA9IGNvbW1vbi5Xcml0
ZU9uRGlmZihwYXRoKQorICAgIGZpeCA9IHhtbF9maXguWG1sRml4KCkKKyAgICBzZWxmLmRvYy53
cml0ZXhtbChmLCBlbmNvZGluZz0ndXRmLTgnLCBhZGRpbmRlbnQ9JycsIG5ld2w9JycpCisgICAg
Zml4LkNsZWFudXAoKQorICAgIGYuY2xvc2UoKQorCisgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAg
ICIiIiBDb252ZXJ0cyB0aGUgZG9jIHRvIGEgc3RyaW5nLiAiIiIKKyAgICByZXR1cm4gc2VsZi5k
b2MudG94bWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9l
YXN5X3htbF90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9lYXN5X3ht
bF90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzNDgyMWYwNjk4M2JhOTJkYWQxODg0M2U1ZDBlOWY5ZDhk
YmRhYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIvZ3lw
L2Vhc3lfeG1sX3Rlc3QucHkKQEAgLTAsMCArMSw5MiBAQAorIyEvdXNyL2Jpbi9weXRob24KKwor
IyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIgVW5pdCB0
ZXN0cyBmb3IgdGhlIGVhc3lfeG1sLnB5IGZpbGUuICIiIgorCitpbXBvcnQgZWFzeV94bWwKK2lt
cG9ydCB1bml0dGVzdAoraW1wb3J0IFN0cmluZ0lPCisKKworY2xhc3MgVGVzdFNlcXVlbmNlRnVu
Y3Rpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICBkZWYgc2V0VXAoc2VsZik6CisgICAgc2Vs
Zi5zdGRlcnIgPSBTdHJpbmdJTy5TdHJpbmdJTygpCisKKyAgZGVmIHRlc3RfRWFzeVhtbF9zaW1w
bGUoc2VsZik6CisgICAgeG1sID0gZWFzeV94bWwuRWFzeVhtbCgndGVzdCcpCisgICAgc2VsZi5h
c3NlcnRFcXVhbChzdHIoeG1sKSwgJzw/eG1sIHZlcnNpb249IjEuMCIgPz48dGVzdC8+JykKKwor
ICBkZWYgdGVzdF9FYXN5WG1sX3NpbXBsZV93aXRoX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgeG1s
ID0gZWFzeV94bWwuRWFzeVhtbCgndGVzdDInLCB7J2EnOiAndmFsdWUxJywgJ2InOiAndmFsdWUy
J30pCisgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoeG1sKSwKKyAgICAgICAgICAgICAgICAgICAg
ICc8P3htbCB2ZXJzaW9uPSIxLjAiID8+PHRlc3QyIGE9InZhbHVlMSIgYj0idmFsdWUyIi8+JykK
KworICBkZWYgdGVzdF9FYXN5WG1sX2FkZF9ub2RlKHNlbGYpOgorICAgICMgV2Ugd2FudCB0byBj
cmVhdGU6CisgICAgdGFyZ2V0ID0gKCc8P3htbCB2ZXJzaW9uPSIxLjAiID8+JworICAgICAgICAn
PHRlc3QzPicKKyAgICAgICAgICAnPEdyYW5kUGFyZW50PicKKyAgICAgICAgICAgICc8UGFyZW50
MT4nCisgICAgICAgICAgICAgICAnPENoaWxkLz4nCisgICAgICAgICAgICAnPC9QYXJlbnQxPicK
KyAgICAgICAgICAgICc8UGFyZW50Mi8+JworICAgICAgICAgICc8L0dyYW5kUGFyZW50PicKKyAg
ICAgICAgJzwvdGVzdDM+JykKKworICAgICMgRG8gaXQgdGhlIGhhcmQgd2F5IGZpcnN0OgorICAg
IHhtbCA9IGVhc3lfeG1sLkVhc3lYbWwoJ3Rlc3QzJykKKyAgICBncmFuZF9wYXJlbnQgPSB4bWwu
QXBwZW5kTm9kZSh4bWwuUm9vdCgpLCBbJ0dyYW5kUGFyZW50J10pCisgICAgcGFyZW50MSA9IHht
bC5BcHBlbmROb2RlKGdyYW5kX3BhcmVudCwgWydQYXJlbnQxJ10pCisgICAgcGFyZW50MiA9IHht
bC5BcHBlbmROb2RlKGdyYW5kX3BhcmVudCwgWydQYXJlbnQyJ10pCisgICAgeG1sLkFwcGVuZE5v
ZGUocGFyZW50MSwgWydDaGlsZCddKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHhtbCksIHRh
cmdldCkKKworICAgICMgRG8gaXQgdGhlIGVhc2llciB3YXk6CisgICAgeG1sID0gZWFzeV94bWwu
RWFzeVhtbCgndGVzdDMnKQorICAgIHhtbC5BcHBlbmROb2RlKHhtbC5Sb290KCksCisgICAgICAg
IFsnR3JhbmRQYXJlbnQnLAorICAgICAgICAgICAgWydQYXJlbnQxJywgWydDaGlsZCddXSwKKyAg
ICAgICAgICAgIFsnUGFyZW50MiddXSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih4bWwpLCB0
YXJnZXQpCisKKyAgZGVmIHRlc3RfRWFzeVhtbF9jb21wbGV4KHNlbGYpOgorICAgICMgV2Ugd2Fu
dCB0byBjcmVhdGU6CisgICAgdGFyZ2V0ID0gKCc8P3htbCB2ZXJzaW9uPSIxLjAiID8+JworICAg
ICAgICAnPFByb2plY3Q+JworICAgICAgICAgICc8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFs
cyI+JworICAgICAgICAgICAgJzxQcm9qZWN0R3VpZD57RDIyNTBDMjAtM0E5NC00RkI5LUFGNzMt
MTFCQzVCNzM4ODRCfTwvUHJvamVjdEd1aWQ+JworICAgICAgICAgICAgJzxLZXl3b3JkPldpbjMy
UHJvajwvS2V5d29yZD4nCisgICAgICAgICAgICAnPFJvb3ROYW1lc3BhY2U+YXV0b21hdGVkX3Vp
X3Rlc3RzPC9Sb290TmFtZXNwYWNlPicKKyAgICAgICAgICAnPC9Qcm9wZXJ0eUdyb3VwPicKKyAg
ICAgICAgICAnPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXFxNaWNyb3NvZnQuQ3Bw
LnByb3BzIi8+JworICAgICAgICAgICc8UHJvcGVydHlHcm91cCBDb25kaXRpb249IlwnJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKVwnPT1cJycKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0RlYnVnfFdpbjMyXCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4nCisgICAg
ICAgICAgICAnPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlw
ZT4nCisgICAgICAgICAgICAnPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+Jwor
ICAgICAgICAgICc8L1Byb3BlcnR5R3JvdXA+JworICAgICAgICAnPC9Qcm9qZWN0PicpCisKKyAg
ICB4bWwgPSBlYXN5X3htbC5FYXN5WG1sKCdQcm9qZWN0JykKKyAgICB4bWwuQXBwZW5kQ2hpbGRy
ZW4oeG1sLlJvb3QoKSwgWworICAgICAgICBbJ1Byb3BlcnR5R3JvdXAnLCB7J0xhYmVsJzogJ0ds
b2JhbHMnfSwKKyAgICAgICAgICAgIFsnUHJvamVjdEd1aWQnLCAne0QyMjUwQzIwLTNBOTQtNEZC
OS1BRjczLTExQkM1QjczODg0Qn0nXSwKKyAgICAgICAgICAgIFsnS2V5d29yZCcsICdXaW4zMlBy
b2onXSwKKyAgICAgICAgICAgIFsnUm9vdE5hbWVzcGFjZScsICdhdXRvbWF0ZWRfdWlfdGVzdHMn
XQorICAgICAgICBdLAorICAgICAgICBbJ0ltcG9ydCcsIHsnUHJvamVjdCc6ICckKFZDVGFyZ2V0
c1BhdGgpXFxNaWNyb3NvZnQuQ3BwLnByb3BzJ31dLAorICAgICAgICBbJ1Byb3BlcnR5R3JvdXAn
LAorICAgICAgICAgICAgeydDb25kaXRpb24nOiAiJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIiwKKyAgICAgICAgICAgICAgICAnTGFiZWwnOiAnQ29uZmlndXJh
dGlvbid9LAorICAgICAgICAgICAgWydDb25maWd1cmF0aW9uVHlwZScsICdBcHBsaWNhdGlvbidd
LAorICAgICAgICAgICAgWydDaGFyYWN0ZXJTZXQnLCAnVW5pY29kZSddCisgICAgICAgIF0KKyAg
ICBdKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHhtbCksIHRhcmdldCkKKworCitpZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgorICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvZ2VuZXJhdG9yL19faW5pdF9fLnB5IGIvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9nZW5lcmF0b3IvX19pbml0X18ucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9nZW5lcmF0b3IvZ3lwZC5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvZ2VuZXJhdG9yL2d5cGQucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTQ4ZjBiODUyMTFjNjZjNTE2MWNjNTYwZDllMzA4OTUzNzRjZDdmNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvZ2VuZXJhdG9yL2d5cGQucHkKQEAg
LTAsMCArMSw4OCBAQAorIyEvdXNyL2Jpbi9weXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiJneXBkIG91dHB1dCBtb2R1bGUKKworVGhpcyBt
b2R1bGUgcHJvZHVjZXMgZ3lwIGlucHV0IGFzIGl0cyBvdXRwdXQuICBPdXRwdXQgZmlsZXMgYXJl
IGdpdmVuIHRoZQorLmd5cGQgZXh0ZW5zaW9uIHRvIGF2b2lkIG92ZXJ3cml0aW5nIHRoZSAuZ3lw
IGZpbGVzIHRoYXQgdGhleSBhcmUgZ2VuZXJhdGVkCitmcm9tLiAgSW50ZXJuYWwgcmVmZXJlbmNl
cyB0byAuZ3lwIGZpbGVzIChzdWNoIGFzIHRob3NlIGZvdW5kIGluCisiZGVwZW5kZW5jaWVzIiBz
ZWN0aW9ucykgYXJlIG5vdCBhZGp1c3RlZCB0byBwb2ludCB0byAuZ3lwZCBmaWxlcyBpbnN0ZWFk
OwordW5saWtlIG90aGVyIHBhdGhzLCB3aGljaCBhcmUgcmVsYXRpdmUgdG8gdGhlIC5neXAgb3Ig
Lmd5cGQgZmlsZSwgc3VjaCBwYXRocworYXJlIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkgZnJv
bSB3aGljaCBneXAgd2FzIHJ1biB0byBjcmVhdGUgdGhlIC5neXBkIGZpbGUuCisKK1RoaXMgZ2Vu
ZXJhdG9yIG1vZHVsZSBpcyBpbnRlbmRlZCB0byBiZSBhIHNhbXBsZSBhbmQgYSBkZWJ1Z2dpbmcg
YWlkLCBoZW5jZQordGhlICJkIiBmb3IgImRlYnVnIiBpbiAuZ3lwZC4gIEl0IGlzIHVzZWZ1bCB0
byBpbnNwZWN0IHRoZSByZXN1bHRzIG9mIHRoZQordmFyaW91cyBtZXJnZXMsIGV4cGFuc2lvbnMs
IGFuZCBjb25kaXRpb25hbCBldmFsdWF0aW9ucyBwZXJmb3JtZWQgYnkgZ3lwCithbmQgdG8gc2Vl
IGEgcmVwcmVzZW50YXRpb24gb2Ygd2hhdCB3b3VsZCBiZSBmZWQgdG8gYSBnZW5lcmF0b3IgbW9k
dWxlLgorCitJdCdzIG5vdCBhZHZpc2FibGUgdG8gcmVuYW1lIC5neXBkIGZpbGVzIHByb2R1Y2Vk
IGJ5IHRoaXMgbW9kdWxlIHRvIC5neXAsCitiZWNhdXNlIHRoZXkgd2lsbCBoYXZlIGFsbCBtZXJn
ZXMsIGV4cGFuc2lvbnMsIGFuZCBldmFsdWF0aW9ucyBhbHJlYWR5CitwZXJmb3JtZWQgYW5kIHRo
ZSByZWxldmFudCBjb25zdHJ1Y3RzIG5vdCBwcmVzZW50IGluIHRoZSBvdXRwdXQ7IHBhdGhzIHRv
CitkZXBlbmRlbmNpZXMgbWF5IGJlIHdyb25nOyBhbmQgdmFyaW91cyBzZWN0aW9ucyB0aGF0IGRv
IG5vdCBiZWxvbmcgaW4gLmd5cAorZmlsZXMgc3VjaCBhcyBzdWNoIGFzICJpbmNsdWRlZF9maWxl
cyIgYW5kICIqX2V4Y2x1ZGVkIiB3aWxsIGJlIHByZXNlbnQuCitPdXRwdXQgd2lsbCBhbHNvIGJl
IHN0cmlwcGVkIG9mIGNvbW1lbnRzLiAgVGhpcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgYQorZ2Vu
ZXJhbC1wdXJwb3NlIGd5cCBwcmV0dHktcHJpbnRlcjsgZm9yIHRoYXQsIHlvdSBwcm9iYWJseSBq
dXN0IHdhbnQgdG8KK3J1biAicHByaW50LnBwcmludChldmFsKG9wZW4oJ3NvdXJjZS5neXAnKS5y
ZWFkKCkpKSIsIHdoaWNoIHdpbGwgc3RpbGwgc3RyaXAKK2NvbW1lbnRzIGJ1dCB3b24ndCBkbyBh
bGwgb2YgdGhlIG90aGVyIHRoaW5ncyBkb25lIHRvIHRoaXMgbW9kdWxlJ3Mgb3V0cHV0LgorCitU
aGUgc3BlY2lmaWMgZm9ybWF0dGluZyBvZiB0aGUgb3V0cHV0IGdlbmVyYXRlZCBieSB0aGlzIG1v
ZHVsZSBpcyBzdWJqZWN0Cit0byBjaGFuZ2UuCisiIiIKKworCitpbXBvcnQgZ3lwLmNvbW1vbgor
aW1wb3J0IGVycm5vCitpbXBvcnQgb3MKK2ltcG9ydCBwcHJpbnQKKworCisjIFRoZXNlIHZhcmlh
YmxlcyBzaG91bGQganVzdCBiZSBzcGl0IGJhY2sgb3V0IGFzIHZhcmlhYmxlIHJlZmVyZW5jZXMu
CitfZ2VuZXJhdG9yX2lkZW50aXR5X3ZhcmlhYmxlcyA9IFsKKyAgJ0VYRUNVVEFCTEVfUFJFRklY
JywKKyAgJ0VYRUNVVEFCTEVfU1VGRklYJywKKyAgJ0lOVEVSTUVESUFURV9ESVInLAorICAnUFJP
RFVDVF9ESVInLAorICAnUlVMRV9JTlBVVF9ST09UJywKKyAgJ1JVTEVfSU5QVVRfRVhUJywKKyAg
J1JVTEVfSU5QVVRfTkFNRScsCisgICdSVUxFX0lOUFVUX1BBVEgnLAorICAnU0hBUkVEX0lOVEVS
TUVESUFURV9ESVInLAorXQorCisjIGd5cGQgZG9lc24ndCBkZWZpbmUgYSBkZWZhdWx0IHZhbHVl
IGZvciBPUyBsaWtlIG1hbnkgb3RoZXIgZ2VuZXJhdG9yCisjIG1vZHVsZXMuICBTcGVjaWZ5ICIt
RCBPUz13aGF0ZXZlciIgb24gdGhlIGNvbW1hbmQgbGluZSB0byBwcm92aWRlIGEgdmFsdWUuCitn
ZW5lcmF0b3JfZGVmYXVsdF92YXJpYWJsZXMgPSB7Cit9CisKKyMgZ3lwZCBzdXBwb3J0cyBtdWx0
aXBsZSB0b29sc2V0cworZ2VuZXJhdG9yX3N1cHBvcnRzX211bHRpcGxlX3Rvb2xzZXRzID0gVHJ1
ZQorCisjIFRPRE8obWFyayk6IFRoaXMgYWx3YXlzIHVzZXMgPCwgd2hpY2ggaXNuJ3QgcmlnaHQu
ICBUaGUgaW5wdXQgbW9kdWxlIHNob3VsZAorIyBub3RpZnkgdGhlIGdlbmVyYXRvciB0byB0ZWxs
IGl0IHdoaWNoIHBoYXNlIGl0IGlzIG9wZXJhdGluZyBpbiwgYW5kIHRoaXMKKyMgbW9kdWxlIHNo
b3VsZCB1c2UgPCBmb3IgdGhlIGVhcmx5IHBoYXNlIGFuZCB0aGVuIHN3aXRjaCB0byA+IGZvciB0
aGUgbGF0ZQorIyBwaGFzZS4gIEJvbnVzIHBvaW50cyBmb3IgY2FycnlpbmcgQCBiYWNrIGludG8g
dGhlIG91dHB1dCB0b28uCitmb3IgdiBpbiBfZ2VuZXJhdG9yX2lkZW50aXR5X3ZhcmlhYmxlczoK
KyAgZ2VuZXJhdG9yX2RlZmF1bHRfdmFyaWFibGVzW3ZdID0gJzwoJXMpJyAlIHYKKworCitkZWYg
R2VuZXJhdGVPdXRwdXQodGFyZ2V0X2xpc3QsIHRhcmdldF9kaWN0cywgZGF0YSwgcGFyYW1zKToK
KyAgb3V0cHV0X2ZpbGVzID0ge30KKyAgZm9yIHF1YWxpZmllZF90YXJnZXQgaW4gdGFyZ2V0X2xp
c3Q6CisgICAgW2lucHV0X2ZpbGUsIHRhcmdldF0gPSBcCisgICAgICAgIGd5cC5jb21tb24uUGFy
c2VRdWFsaWZpZWRUYXJnZXQocXVhbGlmaWVkX3RhcmdldClbMDoyXQorCisgICAgaWYgaW5wdXRf
ZmlsZVstNDpdICE9ICcuZ3lwJzoKKyAgICAgIGNvbnRpbnVlCisgICAgaW5wdXRfZmlsZV9zdGVt
ID0gaW5wdXRfZmlsZVs6LTRdCisgICAgb3V0cHV0X2ZpbGUgPSBpbnB1dF9maWxlX3N0ZW0gKyBw
YXJhbXNbJ29wdGlvbnMnXS5zdWZmaXggKyAnLmd5cGQnCisKKyAgICBpZiBub3Qgb3V0cHV0X2Zp
bGUgaW4gb3V0cHV0X2ZpbGVzOgorICAgICAgb3V0cHV0X2ZpbGVzW291dHB1dF9maWxlXSA9IGlu
cHV0X2ZpbGUKKworICBmb3Igb3V0cHV0X2ZpbGUsIGlucHV0X2ZpbGUgaW4gb3V0cHV0X2ZpbGVz
Lml0ZXJpdGVtcygpOgorICAgIG91dHB1dCA9IG9wZW4ob3V0cHV0X2ZpbGUsICd3JykKKyAgICBw
cHJpbnQucHByaW50KGRhdGFbaW5wdXRfZmlsZV0sIG91dHB1dCkKKyAgICBvdXRwdXQuY2xvc2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9nZW5lcmF0b3Iv
Z3lwc2gucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIvZ3lwL2dlbmVyYXRvci9neXBz
aC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNDhiMDNmYTcyOTA4MTA1YTBmMzhhYzI3NWMxMDJiNDdiNzg0ZDE3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9nZW5l
cmF0b3IvZ3lwc2gucHkKQEAgLTAsMCArMSw1NyBAQAorIyEvdXNyL2Jpbi9weXRob24KKworIyBD
b3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiJneXBzaCBvdXRw
dXQgbW9kdWxlCisKK2d5cHNoIGlzIGEgR1lQIHNoZWxsLiAgSXQncyBub3QgcmVhbGx5IGEgZ2Vu
ZXJhdG9yIHBlciBzZS4gIEFsbCBpdCBkb2VzIGlzCitmaXJlIHVwIGFuIGludGVyYWN0aXZlIFB5
dGhvbiBzZXNzaW9uIHdpdGggYSBmZXcgbG9jYWwgdmFyaWFibGVzIHNldCB0byB0aGUKK3Zhcmlh
YmxlcyBwYXNzZWQgdG8gdGhlIGdlbmVyYXRvci4gIExpa2UgZ3lwZCwgaXQncyBpbnRlbmRlZCBh
cyBhIGRlYnVnZ2luZworYWlkLCB0byBmYWNpbGl0YXRlIHRoZSBleHBsb3JhdGlvbiBvZiAuZ3lw
IHN0cnVjdHVyZXMgYWZ0ZXIgYmVpbmcgcHJvY2Vzc2VkCitieSB0aGUgaW5wdXQgbW9kdWxlLgor
CitUaGUgZXhwZWN0ZWQgdXNhZ2UgaXMgImd5cCAtZiBneXBzaCAtRCBPUz1kZXNpcmVkX29zIi4K
KyIiIgorCisKK2ltcG9ydCBjb2RlCitpbXBvcnQgc3lzCisKKworIyBBbGwgb2YgdGhpcyBzdHVm
ZiBhYm91dCBnZW5lcmF0b3IgdmFyaWFibGVzIHdhcyBsb3ZpbmdseSByaXBwZWQgZnJvbSBneXBk
LnB5LgorIyBUaGF0IG1vZHVsZSBoYXMgYSBtdWNoIGJldHRlciBkZXNjcmlwdGlvbiBvZiB3aGF0
J3MgZ29pbmcgb24gYW5kIHdoeS4KK19nZW5lcmF0b3JfaWRlbnRpdHlfdmFyaWFibGVzID0gWwor
ICAnRVhFQ1VUQUJMRV9QUkVGSVgnLAorICAnRVhFQ1VUQUJMRV9TVUZGSVgnLAorICAnSU5URVJN
RURJQVRFX0RJUicsCisgICdQUk9EVUNUX0RJUicsCisgICdSVUxFX0lOUFVUX1JPT1QnLAorICAn
UlVMRV9JTlBVVF9FWFQnLAorICAnUlVMRV9JTlBVVF9OQU1FJywKKyAgJ1JVTEVfSU5QVVRfUEFU
SCcsCisgICdTSEFSRURfSU5URVJNRURJQVRFX0RJUicsCitdCisKK2dlbmVyYXRvcl9kZWZhdWx0
X3ZhcmlhYmxlcyA9IHsKK30KKworZm9yIHYgaW4gX2dlbmVyYXRvcl9pZGVudGl0eV92YXJpYWJs
ZXM6CisgIGdlbmVyYXRvcl9kZWZhdWx0X3ZhcmlhYmxlc1t2XSA9ICc8KCVzKScgJSB2CisKKwor
ZGVmIEdlbmVyYXRlT3V0cHV0KHRhcmdldF9saXN0LCB0YXJnZXRfZGljdHMsIGRhdGEsIHBhcmFt
cyk6CisgIGxvY2FscyA9IHsKKyAgICAgICAgJ3RhcmdldF9saXN0JzogIHRhcmdldF9saXN0LAor
ICAgICAgICAndGFyZ2V0X2RpY3RzJzogdGFyZ2V0X2RpY3RzLAorICAgICAgICAnZGF0YSc6ICAg
ICAgICAgZGF0YSwKKyAgICAgIH0KKworICAjIFVzZSBhIGJhbm5lciB0aGF0IGxvb2tzIGxpa2Ug
dGhlIHN0b2NrIFB5dGhvbiBvbmUgYW5kIGxpa2Ugd2hhdAorICAjIGNvZGUuaW50ZXJhY3QgdXNl
cyBieSBkZWZhdWx0LCBidXQgdGFjayBvbiBzb21ldGhpbmcgdG8gaW5kaWNhdGUgd2hhdAorICAj
IGxvY2FscyBhcmUgYXZhaWxhYmxlLCBhbmQgaWRlbnRpZnkgZ3lwc2guCisgIGJhbm5lcj0nUHl0
aG9uICVzIG9uICVzXG5sb2NhbHMua2V5cygpID0gJXNcbmd5cHNoJyAlIFwKKyAgICAgICAgIChz
eXMudmVyc2lvbiwgc3lzLnBsYXRmb3JtLCByZXByKHNvcnRlZChsb2NhbHMua2V5cygpKSkpCisK
KyAgY29kZS5pbnRlcmFjdChiYW5uZXIsIGxvY2FsPWxvY2FscykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC9weWxpYi9neXAvZ2VuZXJhdG9yL21ha2UucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvcHlsaWIvZ3lwL2dlbmVyYXRvci9tYWtlLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MmMw
ZmJmYWExMjM0YzU2ZGM2ZWNiM2Y1NjJiMWFmY2U0M2YyMWUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIvZ3lwL2dlbmVyYXRvci9tYWtlLnB5CkBAIC0wLDAg
KzEsMTQyMyBAQAorIyEvdXNyL2Jpbi9weXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorCisjIE5vdGVzOgorIworIyBUaGlzIGlzIGFsbCByb3VnaGx5
IGJhc2VkIG9uIHRoZSBNYWtlZmlsZSBzeXN0ZW0gdXNlZCBieSB0aGUgTGludXgKKyMga2VybmVs
LCBidXQgaXMgYSBub24tcmVjdXJzaXZlIG1ha2UgLS0gd2UgcHV0IHRoZSBlbnRpcmUgZGVwZW5k
ZW5jeQorIyBncmFwaCBpbiBmcm9udCBvZiBtYWtlIGFuZCBsZXQgaXQgZmlndXJlIGl0IG91dC4K
KyMKKyMgVGhlIGNvZGUgYmVsb3cgZ2VuZXJhdGVzIGEgc2VwYXJhdGUgLm1rIGZpbGUgZm9yIGVh
Y2ggdGFyZ2V0LCBidXQKKyMgYWxsIGFyZSBzb3VyY2VkIGJ5IHRoZSB0b3AtbGV2ZWwgTWFrZWZp
bGUuICBUaGlzIG1lYW5zIHRoYXQgYWxsCisjIHZhcmlhYmxlcyBpbiAubWstZmlsZXMgY2xvYmJl
ciBvbmUgYW5vdGhlci4gIEJlIGNhcmVmdWwgdG8gdXNlIDo9CisjIHdoZXJlIGFwcHJvcHJpYXRl
IGZvciBpbW1lZGlhdGUgZXZhbHVhdGlvbiwgYW5kIHNpbWlsYXJseSB0byB3YXRjaAorIyB0aGF0
IHlvdSdyZSBub3QgcmVseWluZyBvbiBhIHZhcmlhYmxlIHZhbHVlIHRvIGxhc3QgYmV3ZWVuIGRp
ZmZlcmVudAorIyAubWsgZmlsZXMuCisjCisjIFRPRE9zOgorIworIyBHbG9iYWwgc2V0dGluZ3Mg
YW5kIHV0aWxpdHkgZnVuY3Rpb25zIGFyZSBjdXJyZW50bHkgc3R1ZmZlZCBpbiB0aGUKKyMgdG9w
bGV2ZWwgTWFrZWZpbGUuICBJdCBtYXkgbWFrZSBzZW5zZSB0byBnZW5lcmF0ZSBzb21lIC5tayBm
aWxlcyBvbgorIyB0aGUgc2lkZSB0byBrZWVwIHRoZSB0aGUgZmlsZXMgcmVhZGFibGUuCisKK2lt
cG9ydCBneXAKK2ltcG9ydCBneXAuY29tbW9uCitpbXBvcnQgZ3lwLnN5c3RlbV90ZXN0CitpbXBv
cnQgb3MucGF0aAoraW1wb3J0IG9zCisKKyMgRGVidWdnaW5nLXJlbGF0ZWQgaW1wb3J0cyAtLSBy
ZW1vdmUgbWUgb25jZSB3ZSdyZSBzb2xpZC4KK2ltcG9ydCBjb2RlCitpbXBvcnQgcHByaW50CisK
K2dlbmVyYXRvcl9kZWZhdWx0X3ZhcmlhYmxlcyA9IHsKKyAgJ0VYRUNVVEFCTEVfUFJFRklYJzog
JycsCisgICdFWEVDVVRBQkxFX1NVRkZJWCc6ICcnLAorICAnT1MnOiAnbGludXgnLAorICAnU1RB
VElDX0xJQl9QUkVGSVgnOiAnbGliJywKKyAgJ1NIQVJFRF9MSUJfUFJFRklYJzogJ2xpYicsCisg
ICdTVEFUSUNfTElCX1NVRkZJWCc6ICcuYScsCisgICdTSEFSRURfTElCX1NVRkZJWCc6ICcuc28n
LAorICAnSU5URVJNRURJQVRFX0RJUic6ICckKG9iaikuJChUT09MU0VUKS9nZW5pJywKKyAgJ1NI
QVJFRF9JTlRFUk1FRElBVEVfRElSJzogJyQob2JqKS9nZW4nLAorICAnUFJPRFVDVF9ESVInOiAn
JChidWlsZGRpciknLAorICAnU0hBUkVEX0xJQl9ESVInOiAnJChidWlsZGRpcikvbGliLiQoVE9P
TFNFVCknLAorICAnTElCX0RJUic6ICckKG9iaikuJChUT09MU0VUKScsCisgICdSVUxFX0lOUFVU
X1JPT1QnOiAnJShJTlBVVF9ST09UKXMnLCAgIyBUaGlzIGdldHMgZXhwYW5kZWQgYnkgUHl0aG9u
LgorICAnUlVMRV9JTlBVVF9QQVRIJzogJyQoYWJzcGF0aCAkPCknLAorICAnUlVMRV9JTlBVVF9F
WFQnOiAnJChzdWZmaXggJDwpJywKKyAgJ1JVTEVfSU5QVVRfTkFNRSc6ICckKG5vdGRpciAkPCkn
LAorCisgICMgVGhpcyBhcHBlYXJzIHVudXNlZCAtLS0gPworICAnQ09ORklHVVJBVElPTl9OQU1F
JzogJyQoQlVJTERUWVBFKScsCit9CisKKyMgTWFrZSBzdXBwb3J0cyBtdWx0aXBsZSB0b29sc2V0
cworZ2VuZXJhdG9yX3N1cHBvcnRzX211bHRpcGxlX3Rvb2xzZXRzID0gVHJ1ZQorCitkZWYgZW5z
dXJlX2RpcmVjdG9yeV9leGlzdHMocGF0aCk6CisgIGRpciA9IG9zLnBhdGguZGlybmFtZShwYXRo
KQorICBpZiBkaXIgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyhkaXIpOgorICAgIG9zLm1ha2VkaXJz
KGRpcikKKworIyBIZWFkZXIgb2YgdG9wbGV2ZWwgTWFrZWZpbGUuCisjIFRoaXMgc2hvdWxkIGdv
IGludG8gdGhlIGJ1aWxkIHRyZWUsIGJ1dCBpdCdzIGVhc2llciB0byBrZWVwIGl0IGhlcmUgZm9y
IG5vdy4KK1NIQVJFRF9IRUFERVIgPSAoIiIiXAorIyBXZSBib3Jyb3cgaGVhdmlseSBmcm9tIHRo
ZSBrZXJuZWwgYnVpbGQgc2V0dXAsIHRob3VnaCB3ZSBhcmUgc2ltcGxlciBzaW5jZQorIyB3ZSBk
b24ndCBoYXZlIEtjb25maWcgdHdlYWtpbmcgc2V0dGluZ3Mgb24gdXMuCisKKyMgVGhlIGltcGxp
Y2l0IG1ha2UgcnVsZXMgaGF2ZSBpdCBsb29raW5nIGZvciBSQ1MgZmlsZXMsIGFtb25nIG90aGVy
IHRoaW5ncy4KKyMgV2UgaW5zdGVhZCBleHBsaWNpdGx5IHdyaXRlIGFsbCB0aGUgcnVsZXMgd2Ug
Y2FyZSBhYm91dC4KKyMgSXQncyBldmVuIHF1aWNrZXIgKHNhdmVzIH4yMDBtcykgdG8gcGFzcyAt
ciBvbiB0aGUgY29tbWFuZCBsaW5lLgorTUFLRUZMQUdTPS1yCisKKyMgVGhlIHNvdXJjZSBkaXJl
Y3RvcnkgdHJlZS4KK3NyY2RpciA6PSAlKHNyY2RpcilzCisKKyMgVGhlIG5hbWUgb2YgdGhlIGJ1
aWxkZGlyLgorYnVpbGRkaXJfbmFtZSA/PSAlKGJ1aWxkZGlyKXMKKworIyBUaGUgVj0xIGZsYWcg
b24gY29tbWFuZCBsaW5lIG1ha2VzIHVzIHZlcmJvc2VseSBwcmludCBjb21tYW5kIGxpbmVzLgor
aWZkZWYgVgorICBxdWlldD0KK2Vsc2UKKyAgcXVpZXQ9cXVpZXRfCitlbmRpZgorCisjIFNwZWNp
ZnkgQlVJTERUWVBFPVJlbGVhc2Ugb24gdGhlIGNvbW1hbmQgbGluZSBmb3IgYSByZWxlYXNlIGJ1
aWxkLgorQlVJTERUWVBFID89ICUoZGVmYXVsdF9jb25maWd1cmF0aW9uKXMKKworIyBEaXJlY3Rv
cnkgYWxsIG91ciBidWlsZCBvdXRwdXQgZ29lcyBpbnRvLgorIyBOb3RlIHRoYXQgdGhpcyBtdXN0
IGJlIHR3byBkaXJlY3RvcmllcyBiZW5lYXRoIHNyYy8gZm9yIHVuaXQgdGVzdHMgdG8gcGFzcywK
KyMgYXMgdGhleSByZWFjaCBpbnRvIHRoZSBzcmMvIGRpcmVjdG9yeSBmb3IgZGF0YSB3aXRoIHJl
bGF0aXZlIHBhdGhzLgorYnVpbGRkaXIgPz0gJChidWlsZGRpcl9uYW1lKS8kKEJVSUxEVFlQRSkK
K2Fic19idWlsZGRpciA6PSAkKGFic3BhdGggJChidWlsZGRpcikpCitkZXBzZGlyIDo9ICQoYnVp
bGRkaXIpLy5kZXBzCisKKyMgT2JqZWN0IG91dHB1dCBkaXJlY3RvcnkuCitvYmogOj0gJChidWls
ZGRpcikvb2JqCithYnNfb2JqIDo9ICQoYWJzcGF0aCAkKG9iaikpCisKKyMgV2UgYnVpbGQgdXAg
YSBsaXN0IG9mIGV2ZXJ5IHNpbmdsZSBvbmUgb2YgdGhlIHRhcmdldHMgc28gd2UgY2FuIHNsdXJw
IGluIHRoZQorIyBnZW5lcmF0ZWQgZGVwZW5kZW5jeSBydWxlIE1ha2VmaWxlcyBpbiBvbmUgcGFz
cy4KK2FsbF9kZXBzIDo9CisKKyMgQysrIGFwcHMgbmVlZCB0byBiZSBsaW5rZWQgd2l0aCBnKysu
ICBOb3Qgc3VyZSB3aGF0J3MgYXBwcm9wcmlhdGUuCisjCisjIE5vdGUsIHRoZSBmbG9jayBpcyB1
c2VkIHRvIHNlcmFsaXplIGxpbmtpbmcuIExpbmtpbmcgaXMgYSBtZW1vcnktaW50ZW5zaXZlCisj
IHByb2Nlc3Mgc28gcnVubmluZyBwYXJhbGxlbCBsaW5rcyBjYW4gb2Z0ZW4gbGVhZCB0byB0aHJh
c2hpbmcuICBUbyBkaXNhYmxlCisjIHRoZSBzZXJpYWxpemF0aW9uLCBvdmVycmlkZSBMSU5LIHZp
YSBhbiBlbnZyaW9ubWVudCB2YXJpYWJsZSBhcyBmb2xsb3dzOgorIworIyAgIGV4cG9ydCBMSU5L
PSIkKENYWCkiCisjCisjIFRoaXMgd2lsbCBhbGxvdyBtYWtlIHRvIGludm9rZSBOIGxpbmtlciBw
cm9jZXNzZXMgYXMgc3BlY2lmaWVkIGluIC1qTi4KK0xJTksgPz0gZmxvY2sgJChidWlsZGRpcikv
bGlua2VyLmxvY2sgJChDWFgpICUoTElOS19mbGFncylzCisKK0NDLnRhcmdldCA/PSAkKENDKQor
Q0ZMQUdTLnRhcmdldCA/PSAkKENGTEFHUykKK0NYWC50YXJnZXQgPz0gJChDWFgpCitDWFhGTEFH
Uy50YXJnZXQgPz0gJChDWFhGTEFHUykKK0xJTksudGFyZ2V0ID89ICQoTElOSykKK0xERkxBR1Mu
dGFyZ2V0ID89ICQoTERGTEFHUykKK0FSLnRhcmdldCA/PSAkKEFSKQorQVJGTEFHUy50YXJnZXQg
Pz0gJShBUkZMQUdTLnRhcmdldClzCisKKyMgTi5CLjogdGhlIGxvZ2ljIG9mIHdoaWNoIGNvbW1h
bmRzIHRvIHJ1biBzaG91bGQgbWF0Y2ggdGhlIGNvbXB1dGF0aW9uIGRvbmUKKyMgaW4gZ3lwJ3Mg
bWFrZS5weSB3aGVyZSBBUkZMQUdTLmhvc3QgZXRjLiBpcyBjb21wdXRlZC4KKyMgVE9ETyhldmFu
KTogbW92ZSBhbGwgY3Jvc3MtY29tcGlsYXRpb24gbG9naWMgdG8gZ3lwLXRpbWUgc28gd2UgZG9u
J3QgbmVlZAorIyB0byByZXBsaWNhdGUgdGhpcyBlbnZpcm9ubWVudCBmYWxsYmFjayBpbiBtYWtl
IGFzIHdlbGwuCitDQy5ob3N0ID89IGdjYworQ0ZMQUdTLmhvc3QgPz0KK0NYWC5ob3N0ID89IGcr
KworQ1hYRkxBR1MuaG9zdCA/PQorTElOSy5ob3N0ID89IGcrKworTERGTEFHUy5ob3N0ID89CitB
Ui5ob3N0ID89IGFyCitBUkZMQUdTLmhvc3QgOj0gJShBUkZMQUdTLmhvc3QpcworCisjIEZsYWdz
IHRvIG1ha2UgZ2NjIG91dHB1dCBkZXBlbmRlbmN5IGluZm8uICBOb3RlIHRoYXQgeW91IG5lZWQg
dG8gYmUKKyMgY2FyZWZ1bCBoZXJlIHRvIHVzZSB0aGUgZmxhZ3MgdGhhdCBjY2FjaGUgYW5kIGRp
c3RjYyBjYW4gdW5kZXJzdGFuZC4KKyMgV2Ugd3JpdGUgdG8gYSBkZXAgZmlsZSBvbiB0aGUgc2lk
ZSBmaXJzdCBhbmQgdGhlbiByZW5hbWUgYXQgdGhlIGVuZAorIyBzbyB3ZSBjYW4ndCBlbmQgdXAg
d2l0aCBhIGJyb2tlbiBkZXAgZmlsZS4KK2RlcGZpbGUgPSAkKGRlcHNkaXIpLyRALmQKK0RFUEZM
QUdTID0gLU1NRCAtTUYgJChkZXBmaWxlKS5yYXcKKworIyBXZSBoYXZlIHRvIGZpeHVwIHRoZSBk
ZXBzIG91dHB1dCBpbiBhIGZldyB3YXlzLgorIyAoMSkgdGhlIGZpbGUgb3V0cHV0IHNob3VsZCBt
ZW50aW9uIHRoZSBwcm9wZXIgLm8gZmlsZS4KKyMgY2NhY2hlIG9yIGRpc3RjYyBsb3NlIHRoZSBw
YXRoIHRvIHRoZSB0YXJnZXQsIHNvIHdlIGNvbnZlcnQgYSBydWxlIG9mCisjIHRoZSBmb3JtOgor
IyAgIGZvb2Jhci5vOiBERVAxIERFUDIKKyMgaW50bworIyAgIHBhdGgvdG8vZm9vYmFyLm86IERF
UDEgREVQMgorIyAoMikgd2Ugd2FudCBtaXNzaW5nIGZpbGVzIG5vdCB0byBjYXVzZSB1cyB0byBm
YWlsIHRvIGJ1aWxkLgorIyBXZSB3YW50IHRvIHJld3JpdGUKKyMgICBmb29iYXIubzogREVQMSBE
RVAyIFxcCisjICAgICAgICAgICAgICAgREVQMworIyB0bworIyAgIERFUDE6CisjICAgREVQMjoK
KyMgICBERVAzOgorIyBzbyBpZiB0aGUgZmlsZXMgYXJlIG1pc3NpbmcsIHRoZXkncmUganVzdCBj
b25zaWRlcmVkIHBob255IHJ1bGVzLgorIyBXZSBoYXZlIHRvIGRvIHNvbWUgcHJldHR5IGluc2Fu
ZSBlc2NhcGluZyB0byBnZXQgdGhvc2UgYmFja3NsYXNoZXMKKyMgYW5kIGRvbGxhciBzaWducyBw
YXN0IG1ha2UsIHRoZSBzaGVsbCwgYW5kIHNlZCBhdCB0aGUgc2FtZSB0aW1lLiIiIgorciIiIgor
ZGVmaW5lIGZpeHVwX2RlcAorIyBUaGUgZGVwZmlsZSBtYXkgbm90IGV4aXN0IGlmIHRoZSBpbnB1
dCBmaWxlIGRpZG4ndCBoYXZlIGFueSAjaW5jbHVkZXMuCit0b3VjaCAkKGRlcGZpbGUpLnJhdwor
IyBGaXh1cCBwYXRoIGFzIGluICgxKS4KK3NlZCAtZSAic3xeJChub3RkaXIgJEApfCRAfCIgJChk
ZXBmaWxlKS5yYXcgPj4gJChkZXBmaWxlKQorIyBBZGQgZXh0cmEgcnVsZXMgYXMgaW4gKDIpLgor
IyBXZSByZW1vdmUgc2xhc2hlcyBhbmQgcmVwbGFjZSBzcGFjZXMgd2l0aCBuZXcgbGluZXM7Cisj
IHJlbW92ZSBibGFuayBsaW5lczsKKyMgZGVsZXRlIHRoZSBmaXJzdCBsaW5lIGFuZCBhcHBlbmQg
YSBjb2xvbiB0byB0aGUgcmVtYWluaW5nIGxpbmVzLgorc2VkIC1lICdzfFxcfHwnIC1lICd5fCB8
XG58JyAkKGRlcGZpbGUpLnJhdyB8XAorICBncmVwIC12ICdeJCQnICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8XAorICBzZWQgLWUgMWQgLWUgJ3N8JCR8OnwnICAgICAgICAgICAgICAgICAg
ICAgXAorICAgID4+ICQoZGVwZmlsZSkKK3JtICQoZGVwZmlsZSkucmF3CitlbmRlZgorIiIiCisi
IiIKKyMgQ29tbWFuZCBkZWZpbml0aW9uczoKKyMgLSBjbWRfZm9vIGlzIHRoZSBhY3R1YWwgY29t
bWFuZCB0byBydW47CisjIC0gcXVpZXRfY21kX2ZvbyBpcyB0aGUgYnJpZWYtb3V0cHV0IHN1bW1h
cnkgb2YgdGhlIGNvbW1hbmQuCisKK3F1aWV0X2NtZF9jYyA9IENDKCQoVE9PTFNFVCkpICRACitj
bWRfY2MgPSAkKENDLiQoVE9PTFNFVCkpICQoR1lQX0NGTEFHUykgJChERVBGTEFHUykgJChDRkxB
R1MuJChUT09MU0VUKSkgLWMgLW8gJEAgJDwKKworcXVpZXRfY21kX2N4eCA9IENYWCgkKFRPT0xT
RVQpKSAkQAorY21kX2N4eCA9ICQoQ1hYLiQoVE9PTFNFVCkpICQoR1lQX0NYWEZMQUdTKSAkKERF
UEZMQUdTKSAkKENYWEZMQUdTLiQoVE9PTFNFVCkpIC1jIC1vICRAICQ8CisKK3F1aWV0X2NtZF9h
bGluayA9IEFSKCQoVE9PTFNFVCkpICRACitjbWRfYWxpbmsgPSBybSAtZiAkQCAmJiAkKEFSLiQo
VE9PTFNFVCkpICQoQVJGTEFHUy4kKFRPT0xTRVQpKSAkQCAkKGZpbHRlciAlJS5vLCReKQorCitx
dWlldF9jbWRfdG91Y2ggPSBUT1VDSCAkQAorY21kX3RvdWNoID0gdG91Y2ggJEAKKworcXVpZXRf
Y21kX2NvcHkgPSBDT1BZICRACisjIHNlbmQgc3RkZXJyIHRvIC9kZXYvbnVsbCB0byBpZ25vcmUg
bWVzc2FnZXMgd2hlbiBsaW5raW5nIGRpcmVjdG9yaWVzLgorY21kX2NvcHkgPSBsbiAtZiAkPCAk
QCAyPi9kZXYvbnVsbCB8fCBjcCAtYWYgJDwgJEAKKworIyBEdWUgdG8gY2lyY3VsYXIgZGVwZW5k
ZW5jaWVzIGJldHdlZW4gbGlicmFyaWVzIDooLCB3ZSB3cmFwIHRoZQorIyBzcGVjaWFsICJmaWd1
cmUgb3V0IGNpcmN1bGFyIGRlcGVuZGVuY2llcyIgZmxhZ3MgYXJvdW5kIHRoZSBlbnRpcmUKKyMg
aW5wdXQgbGlzdCBkdXJpbmcgbGlua2luZy4KK3F1aWV0X2NtZF9saW5rID0gTElOSygkKFRPT0xT
RVQpKSAkQAorY21kX2xpbmsgPSAkKExJTksuJChUT09MU0VUKSkgJChHWVBfTERGTEFHUykgJChM
REZMQUdTLiQoVE9PTFNFVCkpIC1vICRAIC1XbCwtLXN0YXJ0LWdyb3VwICQoZmlsdGVyLW91dCBG
T1JDRV9ET19DTUQsICReKSAtV2wsLS1lbmQtZ3JvdXAgJChMSUJTKQorCisjIFNoYXJlZC1vYmpl
Y3QgbGluayAoZm9yIGdlbmVyYXRpbmcgLnNvKS4KKyMgU2V0IFNPTkFNRSB0byB0aGUgbGlicmFy
eSBmaWxlbmFtZSBzbyBvdXIgYmluYXJpZXMgZG9uJ3QgcmVmZXJlbmNlIHRoZSBsb2NhbCwKKyMg
YWJzb2x1dGUgcGF0aHMgdXNlZCBvbiB0aGUgbGluayBjb21tYW5kLWxpbmUuCisjIFRPRE86IHBl
cmhhcHMgdGhpcyBjYW4gc2hhcmUgd2l0aCB0aGUgTElOSyBjb21tYW5kIGFib3ZlPworcXVpZXRf
Y21kX3NvbGluayA9IFNPTElOSygkKFRPT0xTRVQpKSAkQAorY21kX3NvbGluayA9ICQoTElOSy4k
KFRPT0xTRVQpKSAtc2hhcmVkICQoR1lQX0xERkxBR1MpICQoTERGTEFHUy4kKFRPT0xTRVQpKSAt
V2wsLXNvbmFtZT0kKEBGKSAtbyAkQCAtV2wsLS1zdGFydC1ncm91cCAkKGZpbHRlci1vdXQgRk9S
Q0VfRE9fQ01ELCAkXikgLVdsLC0tZW5kLWdyb3VwICQoTElCUykKKyIiIgorciIiIgorIyBEZWZp
bmUgYW4gZXNjYXBlX3F1b3RlcyBmdW5jdGlvbiB0byBlc2NhcGUgc2luZ2xlIHF1b3Rlcy4KKyMg
VGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHF1b3RlcyBwcm9wZXJseSBhcyBsb25nIGFzIHdlIGFs
d2F5cyB1c2UKKyMgdXNlIHNpbmdsZSBxdW90ZXMgYW5kIGVzY2FwZV9xdW90ZXMuCitlc2NhcGVf
cXVvdGVzID0gJChzdWJzdCAnLCdcJycsJCgxKSkKKyMgVGhpcyBjb21tZW50IGlzIGhlcmUganVz
dCB0byBpbmNsdWRlIGEgJyB0byB1bmNvbmZ1c2Ugc3ludGF4IGhpZ2hsaWdodGluZy4KKyMgRGVm
aW5lIGFuIGVzY2FwZV92YXJzIGZ1bmN0aW9uIHRvIGVzY2FwZSAnJCcgdmFyaWFibGUgc3ludGF4
LgorIyBUaGlzIGFsbG93cyB1cyB0byByZWFkL3dyaXRlIGNvbW1hbmQgbGluZXMgd2l0aCBzaGVs
bCB2YXJpYWJsZXMgKGUuZy4KKyMgJExEX0xJQlJBUllfUEFUSCksIHdpdGhvdXQgdHJpZ2dlcmlu
ZyBtYWtlIHN1YnN0aXR1dGlvbi4KK2VzY2FwZV92YXJzID0gJChzdWJzdCAkJCwkJCQkLCQoMSkp
CisjIEhlbHBlciB0aGF0IGV4cGFuZHMgdG8gYSBzaGVsbCBjb21tYW5kIHRvIGVjaG8gYSBzdHJp
bmcgZXhhY3RseSBhcyBpdCBpcyBpbgorIyBtYWtlLiBUaGlzIHVzZXMgcHJpbnRmIGluc3RlYWQg
b2YgZWNobyBiZWNhdXNlIHByaW50ZidzIGJlaGF2aW91ciB3aXRoIHJlc3BlY3QKKyMgdG8gZXNj
YXBlIHNlcXVlbmNlcyBpcyBtb3JlIHBvcnRhYmxlIHRoYW4gZWNobydzIGFjcm9zcyBkaWZmZXJl
bnQgc2hlbGxzCisjIChlLmcuLCBkYXNoLCBiYXNoKS4KK2V4YWN0X2VjaG8gPSBwcmludGYgJyUl
c1xuJyAnJChjYWxsIGVzY2FwZV9xdW90ZXMsJCgxKSknCisiIiIKKyIiIgorIyBIZWxwZXIgdG8g
Y29tcGFyZSB0aGUgY29tbWFuZCB3ZSdyZSBhYm91dCB0byBydW4gYWdhaW5zdCB0aGUgY29tbWFu
ZAorIyB3ZSBsb2dnZWQgdGhlIGxhc3QgdGltZSB3ZSByYW4gdGhlIGNvbW1hbmQuICBQcm9kdWNl
cyBhbiBlbXB0eQorIyBzdHJpbmcgKGZhbHNlKSB3aGVuIHRoZSBjb21tYW5kcyBtYXRjaC4KKyMg
VHJpY2t5IHBvaW50OiBNYWtlIGhhcyBubyBzdHJpbmctZXF1YWxpdHkgdGVzdCBmdW5jdGlvbi4K
KyMgVGhlIGtlcm5lbCB1c2VzIHRoZSBmb2xsb3dpbmcsIGJ1dCBpdCBzZWVtcyBsaWtlIGl0IHdv
dWxkIGhhdmUgZmFsc2UKKyMgcG9zaXRpdmVzLCB3aGVyZSBvbmUgc3RyaW5nIHJlb3JkZXJlZCBp
dHMgYXJndW1lbnRzLgorIyAgIGFyZ19jaGVjayA9ICQoc3RyaXAgJChmaWx0ZXItb3V0ICQoY21k
XyQoMSkpLCAkKGNtZF8kQCkpIFxcCisjICAgICAgICAgICAgICAgICAgICAgICAkKGZpbHRlci1v
dXQgJChjbWRfJEApLCAkKGNtZF8kKDEpKSkpCisjIFdlIGluc3RlYWQgc3Vic3RpdHV0ZSBlYWNo
IGZvciB0aGUgZW1wdHkgc3RyaW5nIGludG8gdGhlIG90aGVyLCBhbmQKKyMgc2F5IHRoZXkncmUg
ZXF1YWwgaWYgYm90aCBzdWJzdGl0dXRpb25zIHByb2R1Y2UgdGhlIGVtcHR5IHN0cmluZy4KK2Nv
bW1hbmRfY2hhbmdlZCA9ICQob3IgJChzdWJzdCAkKGNtZF8kKDEpKSwsJChjbWRfJEApKSxcXAor
ICAgICAgICAgICAgICAgICAgICAgICAkKHN1YnN0ICQoY21kXyRAKSwsJChjbWRfJCgxKSkpKQor
CisjIEhlbHBlciB0aGF0IGlzIG5vbi1lbXB0eSB3aGVuIGEgcHJlcmVxdWlzaXRlIGNoYW5nZXMu
CisjIE5vcm1hbGx5IG1ha2UgZG9lcyB0aGlzIGltcGxpY2l0bHksIGJ1dCB3ZSBmb3JjZSBydWxl
cyB0byBhbHdheXMgcnVuCisjIHNvIHdlIGNhbiBjaGVjayB0aGVpciBjb21tYW5kIGxpbmVzLgor
IyAgICQ/IC0tIG5ldyBwcmVyZXF1aXNpdGVzCisjICAgJHwgLS0gb3JkZXItb25seSBkZXBlbmRl
bmNpZXMKK3ByZXJlcV9jaGFuZ2VkID0gJChmaWx0ZXItb3V0ICR8LCQ/KQorCisjIGRvX2NtZDog
cnVuIGEgY29tbWFuZCB2aWEgdGhlIGFib3ZlIGNtZF9mb28gbmFtZXMsIGlmIG5lY2Vzc2FyeS4K
KyMgU2hvdWxkIGFsd2F5cyBydW4gZm9yIGEgZ2l2ZW4gdGFyZ2V0IHRvIGhhbmRsZSBjb21tYW5k
LWxpbmUgY2hhbmdlcy4KKyMgU2Vjb25kIGFyZ3VtZW50LCBpZiBub24temVybywgbWFrZXMgaXQg
ZG8gYXNtL0MvQysrIGRlcGVuZGVuY3kgbXVuZ2luZy4KK2RlZmluZSBkb19jbWQKKyQoaWYgJChv
ciAkKGNvbW1hbmRfY2hhbmdlZCksJChwcmVyZXFfY2hhbmdlZCkpLAorICBAJChjYWxsIGV4YWN0
X2VjaG8sICAkKCQocXVpZXQpY21kXyQoMSkpKQorICBAbWtkaXIgLXAgJChkaXIgJEApICQoZGly
ICQoZGVwZmlsZSkpCisgIEAkKGNtZF8kKDEpKQorICBAJChjYWxsIGV4YWN0X2VjaG8sJChjYWxs
IGVzY2FwZV92YXJzLGNtZF8kQCA6PSAkKGNtZF8kKDEpKSkpID4gJChkZXBmaWxlKQorICBAJChp
ZiAkKDIpLCQoZml4dXBfZGVwKSkKKykKK2VuZGVmCisKKyMgRGVjbGFyZSAiYWxsIiB0YXJnZXQg
Zmlyc3Qgc28gaXQgaXMgdGhlIGRlZmF1bHQsIGV2ZW4gdGhvdWdoIHdlIGRvbid0IGhhdmUgdGhl
CisjIGRlcHMgeWV0LgorLlBIT05ZOiBhbGwKK2FsbDoKKworIyBVc2UgRk9SQ0VfRE9fQ01EIHRv
IGZvcmNlIGEgdGFyZ2V0IHRvIHJ1bi4gIFNob3VsZCBiZSBjb3VwbGVkIHdpdGgKKyMgZG9fY21k
LgorLlBIT05ZOiBGT1JDRV9ET19DTUQKK0ZPUkNFX0RPX0NNRDoKKworIiIiKQorCitST09UX0hF
QURFUl9TVUZGSVhfUlVMRVMgPSAoIiIiXAorIyBTdWZmaXggcnVsZXMsIHB1dHRpbmcgYWxsIG91
dHB1dHMgaW50byAkKG9iaikuCiskKG9iaikuJChUT09MU0VUKS8lLm86ICQoc3JjZGlyKS8lLmMg
Rk9SQ0VfRE9fQ01ECisJQCQoY2FsbCBkb19jbWQsY2MsMSkKKyQob2JqKS4kKFRPT0xTRVQpLyUu
bzogJChzcmNkaXIpLyUucyBGT1JDRV9ET19DTUQKKwlAJChjYWxsIGRvX2NtZCxjYywxKQorJChv
YmopLiQoVE9PTFNFVCkvJS5vOiAkKHNyY2RpcikvJS5TIEZPUkNFX0RPX0NNRAorCUAkKGNhbGwg
ZG9fY21kLGNjLDEpCiskKG9iaikuJChUT09MU0VUKS8lLm86ICQoc3JjZGlyKS8lLmNwcCBGT1JD
RV9ET19DTUQKKwlAJChjYWxsIGRvX2NtZCxjeHgsMSkKKyQob2JqKS4kKFRPT0xTRVQpLyUubzog
JChzcmNkaXIpLyUuY2MgRk9SQ0VfRE9fQ01ECisJQCQoY2FsbCBkb19jbWQsY3h4LDEpCiskKG9i
aikuJChUT09MU0VUKS8lLm86ICQoc3JjZGlyKS8lLmN4eCBGT1JDRV9ET19DTUQKKwlAJChjYWxs
IGRvX2NtZCxjeHgsMSkKKworIyBUcnkgYnVpbGRpbmcgZnJvbSBnZW5lcmF0ZWQgc291cmNlLCB0
b28uCiskKG9iaikuJChUT09MU0VUKS8lLm86ICQob2JqKS4kKFRPT0xTRVQpLyUuYyBGT1JDRV9E
T19DTUQKKwlAJChjYWxsIGRvX2NtZCxjYywxKQorJChvYmopLiQoVE9PTFNFVCkvJS5vOiAkKG9i
aikuJChUT09MU0VUKS8lLnMgRk9SQ0VfRE9fQ01ECisJQCQoY2FsbCBkb19jbWQsY2MsMSkKKyQo
b2JqKS4kKFRPT0xTRVQpLyUubzogJChvYmopLiQoVE9PTFNFVCkvJS5TIEZPUkNFX0RPX0NNRAor
CUAkKGNhbGwgZG9fY21kLGNjLDEpCiskKG9iaikuJChUT09MU0VUKS8lLm86ICQob2JqKS4kKFRP
T0xTRVQpLyUuY2MgRk9SQ0VfRE9fQ01ECisJQCQoY2FsbCBkb19jbWQsY3h4LDEpCiskKG9iaiku
JChUT09MU0VUKS8lLm86ICQob2JqKS4kKFRPT0xTRVQpLyUuY3BwIEZPUkNFX0RPX0NNRAorCUAk
KGNhbGwgZG9fY21kLGN4eCwxKQorJChvYmopLiQoVE9PTFNFVCkvJS5vOiAkKG9iaikuJChUT09M
U0VUKS8lLmN4eCBGT1JDRV9ET19DTUQKKwlAJChjYWxsIGRvX2NtZCxjeHgsMSkKKworJChvYmop
LiQoVE9PTFNFVCkvJS5vOiAkKG9iaikvJS5jIEZPUkNFX0RPX0NNRAorCUAkKGNhbGwgZG9fY21k
LGNjLDEpCiskKG9iaikuJChUT09MU0VUKS8lLm86ICQob2JqKS8lLnMgRk9SQ0VfRE9fQ01ECisJ
QCQoY2FsbCBkb19jbWQsY2MsMSkKKyQob2JqKS4kKFRPT0xTRVQpLyUubzogJChvYmopLyUuUyBG
T1JDRV9ET19DTUQKKwlAJChjYWxsIGRvX2NtZCxjYywxKQorJChvYmopLiQoVE9PTFNFVCkvJS5v
OiAkKG9iaikvJS5jYyBGT1JDRV9ET19DTUQKKwlAJChjYWxsIGRvX2NtZCxjeHgsMSkKKyQob2Jq
KS4kKFRPT0xTRVQpLyUubzogJChvYmopLyUuY3BwIEZPUkNFX0RPX0NNRAorCUAkKGNhbGwgZG9f
Y21kLGN4eCwxKQorJChvYmopLiQoVE9PTFNFVCkvJS5vOiAkKG9iaikvJS5jeHggRk9SQ0VfRE9f
Q01ECisJQCQoY2FsbCBkb19jbWQsY3h4LDEpCisiIiIpCisKK1NIQVJFRF9IRUFERVJfU1VGRklY
X1JVTEVTX0NPTU1FTlQxID0gKCIiIlwKKyMgU3VmZml4IHJ1bGVzLCBwdXR0aW5nIGFsbCBvdXRw
dXRzIGludG8gJChvYmopLgorIiIiKQorCitTSEFSRURfSEVBREVSX1NVRkZJWF9SVUxFU19TUkNE
SVIgPSB7CisgICAgJy5jJzogKCIiIlwKKyQob2JqKS4kKFRPT0xTRVQpLyQoVEFSR0VUKS8lLm86
ICQoc3JjZGlyKS8lLmMgRk9SQ0VfRE9fQ01ECisJQCQoY2FsbCBkb19jbWQsY2MsMSkKKyIiIiks
CisgICAgJy5zJzogKCIiIlwKKyQob2JqKS4kKFRPT0xTRVQpLyQoVEFSR0VUKS8lLm86ICQoc3Jj
ZGlyKS8lLnMgRk9SQ0VfRE9fQ01ECisJQCQoY2FsbCBkb19jbWQsY2MsMSkKKyIiIiksCisgICAg
Jy5TJzogKCIiIlwKKyQob2JqKS4kKFRPT0xTRVQpLyQoVEFSR0VUKS8lLm86ICQoc3JjZGlyKS8l
LlMgRk9SQ0VfRE9fQ01ECisJQCQoY2FsbCBkb19jbWQsY2MsMSkKKyIiIiksCisgICAgJy5jcHAn
OiAoIiIiXAorJChvYmopLiQoVE9PTFNFVCkvJChUQVJHRVQpLyUubzogJChzcmNkaXIpLyUuY3Bw
IEZPUkNFX0RPX0NNRAorCUAkKGNhbGwgZG9fY21kLGN4eCwxKQorIiIiKSwKKyAgICAnLmNjJzog
KCIiIlwKKyQob2JqKS4kKFRPT0xTRVQpLyQoVEFSR0VUKS8lLm86ICQoc3JjZGlyKS8lLmNjIEZP
UkNFX0RPX0NNRAorCUAkKGNhbGwgZG9fY21kLGN4eCwxKQorIiIiKSwKKyAgICAnLmN4eCc6ICgi
IiJcCiskKG9iaikuJChUT09MU0VUKS8kKFRBUkdFVCkvJS5vOiAkKHNyY2RpcikvJS5jeHggRk9S
Q0VfRE9fQ01ECisJQCQoY2FsbCBkb19jbWQsY3h4LDEpCisiIiIpLAorfQorCitTSEFSRURfSEVB
REVSX1NVRkZJWF9SVUxFU19DT01NRU5UMiA9ICgiIiJcCisjIFRyeSBidWlsZGluZyBmcm9tIGdl
bmVyYXRlZCBzb3VyY2UsIHRvby4KKyIiIikKKworU0hBUkVEX0hFQURFUl9TVUZGSVhfUlVMRVNf
T0JKRElSMSA9IHsKKyAgICAnLmMnOiAoIiIiXAorJChvYmopLiQoVE9PTFNFVCkvJChUQVJHRVQp
LyUubzogJChvYmopLiQoVE9PTFNFVCkvJS5jIEZPUkNFX0RPX0NNRAorCUAkKGNhbGwgZG9fY21k
LGNjLDEpCisiIiIpLAorICAgICcuY2MnOiAoIiIiXAorJChvYmopLiQoVE9PTFNFVCkvJChUQVJH
RVQpLyUubzogJChvYmopLiQoVE9PTFNFVCkvJS5jYyBGT1JDRV9ET19DTUQKKwlAJChjYWxsIGRv
X2NtZCxjeHgsMSkKKyIiIiksCisgICAgJy5jcHAnOiAoIiIiXAorJChvYmopLiQoVE9PTFNFVCkv
JChUQVJHRVQpLyUubzogJChvYmopLiQoVE9PTFNFVCkvJS5jcHAgRk9SQ0VfRE9fQ01ECisJQCQo
Y2FsbCBkb19jbWQsY3h4LDEpCisiIiIpLAorfQorCitTSEFSRURfSEVBREVSX1NVRkZJWF9SVUxF
U19PQkpESVIyID0geworICAgICcuYyc6ICgiIiJcCiskKG9iaikuJChUT09MU0VUKS8kKFRBUkdF
VCkvJS5vOiAkKG9iaikvJS5jIEZPUkNFX0RPX0NNRAorCUAkKGNhbGwgZG9fY21kLGNjLDEpCisi
IiIpLAorICAgICcuY2MnOiAoIiIiXAorJChvYmopLiQoVE9PTFNFVCkvJChUQVJHRVQpLyUubzog
JChvYmopLyUuY2MgRk9SQ0VfRE9fQ01ECisJQCQoY2FsbCBkb19jbWQsY3h4LDEpCisiIiIpLAor
ICAgICcuY3BwJzogKCIiIlwKKyQob2JqKS4kKFRPT0xTRVQpLyQoVEFSR0VUKS8lLm86ICQob2Jq
KS8lLmNwcCBGT1JDRV9ET19DTUQKKwlAJChjYWxsIGRvX2NtZCxjeHgsMSkKKyIiIiksCit9CisK
K1NIQVJFRF9IRUFERVJfU1VGRklYX1JVTEVTID0gKAorICAgIFNIQVJFRF9IRUFERVJfU1VGRklY
X1JVTEVTX0NPTU1FTlQxICsKKyAgICAnJy5qb2luKFNIQVJFRF9IRUFERVJfU1VGRklYX1JVTEVT
X1NSQ0RJUi52YWx1ZXMoKSkgKworICAgIFNIQVJFRF9IRUFERVJfU1VGRklYX1JVTEVTX0NPTU1F
TlQyICsKKyAgICAnJy5qb2luKFNIQVJFRF9IRUFERVJfU1VGRklYX1JVTEVTX09CSkRJUjEudmFs
dWVzKCkpICsKKyAgICAnJy5qb2luKFNIQVJFRF9IRUFERVJfU1VGRklYX1JVTEVTX09CSkRJUjIu
dmFsdWVzKCkpCispCisKK1NIQVJFRF9GT09URVIgPSAiIiJcCisjICJhbGwiIGlzIGEgY29uY2F0
ZW5hdGlvbiBvZiB0aGUgImFsbCIgdGFyZ2V0cyBmcm9tIGFsbCB0aGUgaW5jbHVkZWQKKyMgc3Vi
LW1ha2VmaWxlcy4gVGhpcyBpcyBqdXN0IGhlcmUgdG8gY2xhcmlmeS4KK2FsbDoKKworIyBBZGQg
aW4gZGVwZW5kZW5jeS10cmFja2luZyBydWxlcy4gICQoYWxsX2RlcHMpIGlzIHRoZSBsaXN0IG9m
IGV2ZXJ5IHNpbmdsZQorIyB0YXJnZXQgaW4gb3VyIHRyZWUuICBGaXJzdCwgb25seSBjb25zaWRl
ciB0YXJnZXRzIHRoYXQgYWxyZWFkeSBoYXZlIGJlZW4KKyMgYnVpbHQsIGFzIHVuYnVpbHQgdGFy
Z2V0cyB3aWxsIGJlIGJ1aWx0IHJlZ2FyZGxlc3Mgb2YgZGVwZW5kZW5jeSBpbmZvOgorYWxsX2Rl
cHMgOj0gJCh3aWxkY2FyZCAkKHNvcnQgJChhbGxfZGVwcykpKQorIyBPZiB0aG9zZSwgb25seSBj
b25zaWRlciB0aGUgb25lcyB3aXRoIC5kIChkZXBlbmRlbmN5KSBpbmZvOgorZF9maWxlcyA6PSAk
KHdpbGRjYXJkICQoZm9yZWFjaCBmLCQoYWxsX2RlcHMpLCQoZGVwc2RpcikvJChmKS5kKSkKK2lm
bmVxICgkKGRfZmlsZXMpLCkKKyAgIyBSYXRoZXIgdGhhbiBpbmNsdWRlIGVhY2ggaW5kaXZpZHVh
bCAuZCBmaWxlLCBjb25jYXRlbmF0ZSB0aGVtIGludG8gYQorICAjIHNpbmdsZSBmaWxlIHdoaWNo
IG1ha2UgaXMgYWJsZSB0byBsb2FkIGZhc3Rlci4gIFdlIHNwbGl0IHRoaXMgaW50bworICAjIGNv
bW1hbmRzIHRoYXQgdGFrZSAxMDAwIGZpbGVzIGF0IGEgdGltZSB0byBhdm9pZCBvdmVyZmxvd2lu
ZyB0aGUKKyAgIyBjb21tYW5kIGxpbmUuCisgICQoc2hlbGwgY2F0ICQod29yZGxpc3QgMSwxMDAw
LCQoZF9maWxlcykpID4gJChkZXBzZGlyKS9hbGwuZGVwcykKKyUoZ2VuZXJhdGVfYWxsX2RlcHMp
cworICAjIG1ha2UgbG9va3MgZm9yIHdheXMgdG8gcmUtZ2VuZXJhdGUgaW5jbHVkZWQgbWFrZWZp
bGVzLCBidXQgaW4gb3VyIGNhc2UsIHdlCisgICMgZG9uJ3QgaGF2ZSBhIGRpcmVjdCB3YXkuIEV4
cGxpY2l0bHkgdGVsbGluZyBtYWtlIHRoYXQgaXQgaGFzIG5vdGhpbmcgdG8gZG8KKyAgIyBmb3Ig
dGhlbSBtYWtlcyBpdCBnbyBmYXN0ZXIuCisgICQoZGVwc2RpcikvYWxsLmRlcHM6IDsKKworICBp
bmNsdWRlICQoZGVwc2RpcikvYWxsLmRlcHMKK2VuZGlmCisiIiIKKworaGVhZGVyID0gIiIiXAor
IyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGd5cDsgZG8gbm90IGVkaXQuCisKKyIiIgorCisK
K2RlZiBDb21waWxhYmxlKGZpbGVuYW1lKToKKyAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIGZpbGUg
aXMgY29tcGlsYWJsZSAoc2hvdWxkIGJlIGluIE9CSlMpLiIiIgorICBmb3IgcmVzIGluIChmaWxl
bmFtZS5lbmRzd2l0aChlKSBmb3IgZQorICAgICAgICAgICAgIGluIFsnLmMnLCAnLmNjJywgJy5j
cHAnLCAnLmN4eCcsICcucycsICcuUyddKToKKyAgICBpZiByZXM6CisgICAgICByZXR1cm4gVHJ1
ZQorICByZXR1cm4gRmFsc2UKKworCitkZWYgTGlua2FibGUoZmlsZW5hbWUpOgorICAiIiJSZXR1
cm4gdHJ1ZSBpZiB0aGUgZmlsZSBpcyBsaW5rYWJsZSAoc2hvdWxkIGJlIG9uIHRoZSBsaW5rIGxp
bmUpLiIiIgorICByZXR1cm4gZmlsZW5hbWUuZW5kc3dpdGgoJy5vJykKKworCitkZWYgVGFyZ2V0
KGZpbGVuYW1lKToKKyAgIiIiVHJhbnNsYXRlIGEgY29tcGlsYWJsZSBmaWxlbmFtZSB0byBpdHMg
Lm8gdGFyZ2V0LiIiIgorICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMF0gKyAn
Lm8nCisKKworZGVmIEVzY2FwZVNoZWxsQXJndW1lbnQocyk6CisgICIiIlF1b3RlcyBhbiBhcmd1
bWVudCBzbyB0aGF0IGl0IHdpbGwgYmUgaW50ZXJwcmV0ZWQgbGl0ZXJhbGx5IGJ5IGEgUE9TSVgK
KyAgICAgc2hlbGwuIFRha2VuIGZyb20KKyAgICAgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1
ZXN0aW9ucy8zNTgxNy93aGF0cy10aGUtYmVzdC13YXktdG8tZXNjYXBlLW9zc3lzdGVtLWNhbGxz
LWluLXB5dGhvbgorICAgICAiIiIKKyAgcmV0dXJuICInIiArIHMucmVwbGFjZSgiJyIsICInXFwn
JyIpICsgIiciCisKKworZGVmIEVzY2FwZU1ha2VWYXJpYWJsZUV4cGFuc2lvbihzKToKKyAgIiIi
TWFrZSBoYXMgaXRzIG93biB2YXJpYWJsZSBleHBhbnNpb24gc3ludGF4IHVzaW5nICQuIFdlIG11
c3QgZXNjYXBlIGl0IGZvcgorICAgICBzdHJpbmcgdG8gYmUgaW50ZXJwcmV0ZWQgbGl0ZXJhbGx5
LiIiIgorICByZXR1cm4gcy5yZXBsYWNlKCckJywgJyQkJykKKworCitkZWYgRXNjYXBlQ3BwRGVm
aW5lKHMpOgorICAiIiJFc2NhcGVzIGEgQ1BQIGRlZmluZSBzbyB0aGF0IGl0IHdpbGwgcmVhY2gg
dGhlIGNvbXBpbGVyIHVuYWx0ZXJlZC4iIiIKKyAgcyA9IEVzY2FwZVNoZWxsQXJndW1lbnQocykK
KyAgcyA9IEVzY2FwZU1ha2VWYXJpYWJsZUV4cGFuc2lvbihzKQorICByZXR1cm4gcworCisKK2Rl
ZiBRdW90ZUlmTmVjZXNzYXJ5KHN0cmluZyk6CisgICIiIlRPRE86IFNob3VsZCB0aGlzIGlkZWFs
bHkgYmUgcmVwbGFjZWQgd2l0aCBvbmUgb3IgbW9yZSBvZiB0aGUgYWJvdmUKKyAgICAgZnVuY3Rp
b25zPyIiIgorICBpZiAnIicgaW4gc3RyaW5nOgorICAgIHN0cmluZyA9ICciJyArIHN0cmluZy5y
ZXBsYWNlKCciJywgJ1xcIicpICsgJyInCisgIHJldHVybiBzdHJpbmcKKworCitkZWYgU3RyaW5n
VG9NYWtlZmlsZVZhcmlhYmxlKHN0cmluZyk6CisgICIiIkNvbnZlcnQgYSBzdHJpbmcgdG8gYSB2
YWx1ZSB0aGF0IGlzIGFjY2VwdGFibGUgYXMgYSBtYWtlIHZhcmlhYmxlIG5hbWUuIiIiCisgICMg
VE9ETzogcmVwbGFjZSBvdGhlciBtZXRhY2hhcmFjdGVycyB0aGF0IHdlIGVuY291bnRlci4KKyAg
cmV0dXJuIHN0cmluZy5yZXBsYWNlKCcgJywgJ18nKQorCisKK3NyY2Rpcl9wcmVmaXggPSAnJwor
ZGVmIFNvdXJjZWlmeShwYXRoKToKKyAgIiIiQ29udmVydCBhIHBhdGggdG8gaXRzIHNvdXJjZSBk
aXJlY3RvcnkgZm9ybS4iIiIKKyAgaWYgJyQoJyBpbiBwYXRoOgorICAgIHJldHVybiBwYXRoCisg
IGlmIG9zLnBhdGguaXNhYnMocGF0aCk6CisgICAgcmV0dXJuIHBhdGgKKyAgcmV0dXJuIHNyY2Rp
cl9wcmVmaXggKyBwYXRoCisKKworIyBNYXAgZnJvbSBxdWFsaWZpZWQgdGFyZ2V0IHRvIHBhdGgg
dG8gb3V0cHV0LgordGFyZ2V0X291dHB1dHMgPSB7fQorIyBNYXAgZnJvbSBxdWFsaWZpZWQgdGFy
Z2V0IHRvIGEgbGlzdCBvZiBhbGwgbGlua2VyIGRlcGVuZGVuY2llcywKKyMgdHJhbnNpdGl2ZWx5
IGV4cGFuZGVkLgorIyBVc2VkIGluIGJ1aWxkaW5nIHNoYXJlZC1saWJyYXJ5LWJhc2VkIGV4ZWN1
dGFibGVzLgordGFyZ2V0X2xpbmtfZGVwcyA9IHt9CisKKworY2xhc3MgTWFrZWZpbGVXcml0ZXI6
CisgICIiIk1ha2VmaWxlV3JpdGVyIHBhY2thZ2VzIHVwIHRoZSB3cml0aW5nIG9mIG9uZSB0YXJn
ZXQtc3BlY2lmaWMgZm9vYmFyLm1rLgorCisgIEl0cyBvbmx5IHJlYWwgZW50cnkgcG9pbnQgaXMg
V3JpdGUoKSwgYW5kIGlzIG1vc3RseSB1c2VkIGZvciBuYW1lc3BhY2luZy4KKyAgIiIiCisKKyAg
ZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICMgS2VlcCB0cmFjayBvZiB0aGUgdG90YWwgbnVtYmVy
IG9mIG91dHB1dHMgZm9yIHRoaXMgbWFrZWZpbGUuCisgICAgc2VsZi5fbnVtX291dHB1dHMgPSAw
CisKKworICBkZWYgTnVtT3V0cHV0cyhzZWxmKToKKyAgICByZXR1cm4gc2VsZi5fbnVtX291dHB1
dHMKKworCisgIGRlZiBXcml0ZShzZWxmLCBxdWFsaWZpZWRfdGFyZ2V0LCBiYXNlX3BhdGgsIG91
dHB1dF9maWxlbmFtZSwgc3BlYywgY29uZmlncywKKyAgICAgICAgICAgIHBhcnRfb2ZfYWxsKToK
KyAgICAiIiJUaGUgbWFpbiBlbnRyeSBwb2ludDogd3JpdGVzIGEgLm1rIGZpbGUgZm9yIGEgc2lu
Z2xlIHRhcmdldC4KKworICAgIEFyZ3VtZW50czoKKyAgICAgIHF1YWxpZmllZF90YXJnZXQ6IHRh
cmdldCB3ZSdyZSBnZW5lcmF0aW5nCisgICAgICBiYXNlX3BhdGg6IHBhdGggcmVsYXRpdmUgdG8g
c291cmNlIHJvb3Qgd2UncmUgYnVpbGRpbmcgaW4sIHVzZWQgdG8gcmVzb2x2ZQorICAgICAgICAg
ICAgICAgICB0YXJnZXQtcmVsYXRpdmUgcGF0aHMKKyAgICAgIG91dHB1dF9maWxlbmFtZTogb3V0
cHV0IC5tayBmaWxlIG5hbWUgdG8gd3JpdGUKKyAgICAgIHNwZWMsIGNvbmZpZ3M6IGd5cCBpbmZv
CisgICAgICBwYXJ0X29mX2FsbDogZmxhZyBpbmRpY2F0aW5nIHRoaXMgdGFyZ2V0IGlzIHBhcnQg
b2YgJ2FsbCcKKyAgICAiIiIKKyAgICBlbnN1cmVfZGlyZWN0b3J5X2V4aXN0cyhvdXRwdXRfZmls
ZW5hbWUpCisKKyAgICBzZWxmLmZwID0gb3BlbihvdXRwdXRfZmlsZW5hbWUsICd3JykKKworICAg
IHNlbGYuZnAud3JpdGUoaGVhZGVyKQorCisgICAgc2VsZi5wYXRoID0gYmFzZV9wYXRoCisgICAg
c2VsZi50YXJnZXQgPSBzcGVjWyd0YXJnZXRfbmFtZSddCisgICAgc2VsZi50eXBlID0gc3BlY1sn
dHlwZSddCisgICAgc2VsZi50b29sc2V0ID0gc3BlY1sndG9vbHNldCddCisKKyAgICBkZXBzLCBs
aW5rX2RlcHMgPSBzZWxmLkNvbXB1dGVEZXBzKHNwZWMpCisKKyAgICAjIFNvbWUgb2YgdGhlIGdl
bmVyYXRpb24gYmVsb3cgY2FuIGFkZCBleHRyYSBvdXRwdXQsIHNvdXJjZXMsIG9yCisgICAgIyBs
aW5rIGRlcGVuZGVuY2llcy4gIEFsbCBvZiB0aGUgb3V0IHBhcmFtcyBvZiB0aGUgZnVuY3Rpb25z
IHRoYXQKKyAgICAjIGZvbGxvdyB1c2UgbmFtZXMgbGlrZSBleHRyYV9mb28uCisgICAgZXh0cmFf
b3V0cHV0cyA9IFtdCisgICAgZXh0cmFfc291cmNlcyA9IFtdCisgICAgZXh0cmFfbGlua19kZXBz
ID0gW10KKworICAgIHNlbGYub3V0cHV0ID0gc2VsZi5Db21wdXRlT3V0cHV0KHNwZWMpCisgICAg
c2VsZi5fSU5TVEFMTEFCTEVfVEFSR0VUUyA9ICgnZXhlY3V0YWJsZScsICdsb2FkYWJsZV9tb2R1
bGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYXJlZF9saWJyYXJ5JykK
KyAgICBpZiBzZWxmLnR5cGUgaW4gc2VsZi5fSU5TVEFMTEFCTEVfVEFSR0VUUzoKKyAgICAgIHNl
bGYuYWxpYXMgPSBvcy5wYXRoLmJhc2VuYW1lKHNlbGYub3V0cHV0KQorICAgICAgaW5zdGFsbF9w
YXRoID0gc2VsZi5fSW5zdGFsbGFibGVUYXJnZXRJbnN0YWxsUGF0aCgpCisgICAgZWxzZToKKyAg
ICAgIHNlbGYuYWxpYXMgPSBzZWxmLm91dHB1dAorICAgICAgaW5zdGFsbF9wYXRoID0gc2VsZi5v
dXRwdXQKKworICAgIHNlbGYuV3JpdGVMbigiVE9PTFNFVCA6PSAiICsgc2VsZi50b29sc2V0KQor
ICAgIHNlbGYuV3JpdGVMbigiVEFSR0VUIDo9ICIgKyBzZWxmLnRhcmdldCkKKworICAgICMgQWN0
aW9ucyBtdXN0IGNvbWUgZmlyc3QsIHNpbmNlIHRoZXkgY2FuIGdlbmVyYXRlIG1vcmUgT0JKcyBm
b3IgdXNlIGJlbG93LgorICAgIGlmICdhY3Rpb25zJyBpbiBzcGVjOgorICAgICAgc2VsZi5Xcml0
ZUFjdGlvbnMoc3BlY1snYWN0aW9ucyddLCBleHRyYV9zb3VyY2VzLCBleHRyYV9vdXRwdXRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgcGFydF9vZl9hbGwpCisKKyAgICAjIFJ1bGVzIG11c3Qg
YmUgZWFybHkgbGlrZSBhY3Rpb25zLgorICAgIGlmICdydWxlcycgaW4gc3BlYzoKKyAgICAgIHNl
bGYuV3JpdGVSdWxlcyhzcGVjWydydWxlcyddLCBleHRyYV9zb3VyY2VzLCBleHRyYV9vdXRwdXRz
LCBwYXJ0X29mX2FsbCkKKworICAgIGlmICdjb3BpZXMnIGluIHNwZWM6CisgICAgICBzZWxmLldy
aXRlQ29waWVzKHNwZWNbJ2NvcGllcyddLCBleHRyYV9vdXRwdXRzLCBwYXJ0X29mX2FsbCkKKwor
ICAgIGFsbF9zb3VyY2VzID0gc3BlYy5nZXQoJ3NvdXJjZXMnLCBbXSkgKyBleHRyYV9zb3VyY2Vz
CisgICAgaWYgYWxsX3NvdXJjZXM6CisgICAgICBzZWxmLldyaXRlU291cmNlcyhjb25maWdzLCBk
ZXBzLCBhbGxfc291cmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX291dHB1dHMs
IGV4dHJhX2xpbmtfZGVwcywgcGFydF9vZl9hbGwpCisgICAgICBzb3VyY2VzID0gZmlsdGVyKENv
bXBpbGFibGUsIGFsbF9zb3VyY2VzKQorICAgICAgaWYgc291cmNlczoKKyAgICAgICAgc2VsZi5X
cml0ZUxuKFNIQVJFRF9IRUFERVJfU1VGRklYX1JVTEVTX0NPTU1FTlQxKQorICAgICAgICBleHRl
bnNpb25zID0gc2V0KFtvcy5wYXRoLnNwbGl0ZXh0KHMpWzFdIGZvciBzIGluIHNvdXJjZXNdKQor
ICAgICAgICBmb3IgZXh0IGluIGV4dGVuc2lvbnM6CisgICAgICAgICAgaWYgZXh0IGluIFNIQVJF
RF9IRUFERVJfU1VGRklYX1JVTEVTX1NSQ0RJUjoKKyAgICAgICAgICAgIHNlbGYuV3JpdGVMbihT
SEFSRURfSEVBREVSX1NVRkZJWF9SVUxFU19TUkNESVJbZXh0XSkKKyAgICAgICAgc2VsZi5Xcml0
ZUxuKFNIQVJFRF9IRUFERVJfU1VGRklYX1JVTEVTX0NPTU1FTlQyKQorICAgICAgICBmb3IgZXh0
IGluIGV4dGVuc2lvbnM6CisgICAgICAgICAgaWYgZXh0IGluIFNIQVJFRF9IRUFERVJfU1VGRklY
X1JVTEVTX09CSkRJUjE6CisgICAgICAgICAgICBzZWxmLldyaXRlTG4oU0hBUkVEX0hFQURFUl9T
VUZGSVhfUlVMRVNfT0JKRElSMVtleHRdKQorICAgICAgICBmb3IgZXh0IGluIGV4dGVuc2lvbnM6
CisgICAgICAgICAgaWYgZXh0IGluIFNIQVJFRF9IRUFERVJfU1VGRklYX1JVTEVTX09CSkRJUjI6
CisgICAgICAgICAgICBzZWxmLldyaXRlTG4oU0hBUkVEX0hFQURFUl9TVUZGSVhfUlVMRVNfT0JK
RElSMltleHRdKQorICAgICAgICBzZWxmLldyaXRlTG4oJyMgRW5kIG9mIHRoaXMgc2V0IG9mIHN1
ZmZpeCBydWxlcycpCisKKworICAgIHNlbGYuV3JpdGVUYXJnZXQoc3BlYywgY29uZmlncywgZGVw
cywKKyAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2xpbmtfZGVwcyArIGxpbmtfZGVwcywgZXh0
cmFfb3V0cHV0cywgcGFydF9vZl9hbGwpCisKKyAgICAjIFVwZGF0ZSBnbG9iYWwgbGlzdCBvZiB0
YXJnZXQgb3V0cHV0cywgdXNlZCBpbiBkZXBlbmRlbmN5IHRyYWNraW5nLgorICAgIHRhcmdldF9v
dXRwdXRzW3F1YWxpZmllZF90YXJnZXRdID0gaW5zdGFsbF9wYXRoCisKKyAgICAjIFVwZGF0ZSBn
bG9iYWwgbGlzdCBvZiBsaW5rIGRlcGVuZGVuY2llcy4KKyAgICBpZiBzZWxmLnR5cGUgPT0gJ3N0
YXRpY19saWJyYXJ5JzoKKyAgICAgIHRhcmdldF9saW5rX2RlcHNbcXVhbGlmaWVkX3RhcmdldF0g
PSBbc2VsZi5vdXRwdXRdCisgICAgZWxpZiBzZWxmLnR5cGUgPT0gJ3NoYXJlZF9saWJyYXJ5JzoK
KyAgICAgICMgQW55b25lIHRoYXQgdXNlcyB1cyB0cmFuc2l0aXZlbHkgZGVwZW5kIG9uIGFsbCBv
ZiBvdXIgbGluaworICAgICAgIyBkZXBlbmRlbmNpZXMuCisgICAgICB0YXJnZXRfbGlua19kZXBz
W3F1YWxpZmllZF90YXJnZXRdID0gW3NlbGYub3V0cHV0XSArIGxpbmtfZGVwcworCisgICAgc2Vs
Zi5mcC5jbG9zZSgpCisKKworICBkZWYgV3JpdGVTdWJNYWtlKHNlbGYsIG91dHB1dF9maWxlbmFt
ZSwgbWFrZWZpbGVfcGF0aCwgdGFyZ2V0cywgYnVpbGRfZGlyKToKKyAgICAiIiJXcml0ZSBhICJz
dWItcHJvamVjdCIgTWFrZWZpbGUuCisKKyAgICBUaGlzIGlzIGEgc21hbGwsIHdyYXBwZXIgTWFr
ZWZpbGUgdGhhdCBjYWxscyB0aGUgdG9wLWxldmVsIE1ha2VmaWxlIHRvIGJ1aWxkCisgICAgdGhl
IHRhcmdldHMgZnJvbSBhIHNpbmdsZSBneXAgZmlsZSAoaS5lLiBhIHN1Yi1wcm9qZWN0KS4KKwor
ICAgIEFyZ3VtZW50czoKKyAgICAgIG91dHB1dF9maWxlbmFtZTogc3ViLXByb2plY3QgTWFrZWZp
bGUgbmFtZSB0byB3cml0ZQorICAgICAgbWFrZWZpbGVfcGF0aDogcGF0aCB0byB0aGUgdG9wLWxl
dmVsIE1ha2VmaWxlCisgICAgICB0YXJnZXRzOiBsaXN0IG9mICJhbGwiIHRhcmdldHMgZm9yIHRo
aXMgc3ViLXByb2plY3QKKyAgICAgIGJ1aWxkX2RpcjogYnVpbGQgb3V0cHV0IGRpcmVjdG9yeSwg
cmVsYXRpdmUgdG8gdGhlIHN1Yi1wcm9qZWN0CisgICAgIiIiCisgICAgZW5zdXJlX2RpcmVjdG9y
eV9leGlzdHMob3V0cHV0X2ZpbGVuYW1lKQorICAgIHNlbGYuZnAgPSBvcGVuKG91dHB1dF9maWxl
bmFtZSwgJ3cnKQorICAgIHNlbGYuZnAud3JpdGUoaGVhZGVyKQorICAgICMgRm9yIGNvbnNpc3Rl
bmN5IHdpdGggb3RoZXIgYnVpbGRlcnMsIHB1dCBzdWItcHJvamVjdCBidWlsZCBvdXRwdXQgaW4g
dGhlCisgICAgIyBzdWItcHJvamVjdCBkaXIgKHNlZSB0ZXN0L3N1YmRpcmVjdG9yeS9neXB0ZXN0
LXN1YmRpci1hbGwucHkpLgorICAgIHNlbGYuV3JpdGVMbignZXhwb3J0IGJ1aWxkZGlyX25hbWUg
Pz0gJXMnICUKKyAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShv
dXRwdXRfZmlsZW5hbWUpLCBidWlsZF9kaXIpKQorICAgIHNlbGYuV3JpdGVMbignLlBIT05ZOiBh
bGwnKQorICAgIHNlbGYuV3JpdGVMbignYWxsOicpCisgICAgaWYgbWFrZWZpbGVfcGF0aDoKKyAg
ICAgIG1ha2VmaWxlX3BhdGggPSAnIC1DICcgKyBtYWtlZmlsZV9wYXRoCisgICAgc2VsZi5Xcml0
ZUxuKCdcdCQoTUFLRSklcyAlcycgJSAobWFrZWZpbGVfcGF0aCwgJyAnLmpvaW4odGFyZ2V0cykp
KQorICAgIHNlbGYuZnAuY2xvc2UoKQorCisKKyAgZGVmIFdyaXRlQWN0aW9ucyhzZWxmLCBhY3Rp
b25zLCBleHRyYV9zb3VyY2VzLCBleHRyYV9vdXRwdXRzLCBwYXJ0X29mX2FsbCk6CisgICAgIiIi
V3JpdGUgTWFrZWZpbGUgY29kZSBmb3IgYW55ICdhY3Rpb25zJyBmcm9tIHRoZSBneXAgaW5wdXQu
CisKKyAgICBleHRyYV9zb3VyY2VzOiBhIGxpc3QgdGhhdCB3aWxsIGJlIGZpbGxlZCBpbiB3aXRo
IG5ld2x5IGdlbmVyYXRlZCBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICBmaWxlcywgaWYgYW55
CisgICAgZXh0cmFfb3V0cHV0czogYSBsaXN0IHRoYXQgd2lsbCBiZSBmaWxsZWQgaW4gd2l0aCBh
bnkgb3V0cHV0cyBvZiB0aGVzZQorICAgICAgICAgICAgICAgICAgIGFjdGlvbnMgKHVzZWQgdG8g
bWFrZSBvdGhlciBwaWVjZXMgZGVwZW5kZW50IG9uIHRoZXNlCisgICAgICAgICAgICAgICAgICAg
YWN0aW9ucykKKyAgICBwYXJ0X29mX2FsbDogZmxhZyBpbmRpY2F0aW5nIHRoaXMgdGFyZ2V0IGlz
IHBhcnQgb2YgJ2FsbCcKKyAgICAiIiIKKyAgICBmb3IgYWN0aW9uIGluIGFjdGlvbnM6CisgICAg
ICBuYW1lID0gc2VsZi50YXJnZXQgKyAnXycgKyBTdHJpbmdUb01ha2VmaWxlVmFyaWFibGUoYWN0
aW9uWydhY3Rpb25fbmFtZSddKQorICAgICAgc2VsZi5Xcml0ZUxuKCcjIyMgUnVsZXMgZm9yIGFj
dGlvbiAiJXMiOicgJSBhY3Rpb25bJ2FjdGlvbl9uYW1lJ10pCisgICAgICBpbnB1dHMgPSBhY3Rp
b25bJ2lucHV0cyddCisgICAgICBvdXRwdXRzID0gYWN0aW9uWydvdXRwdXRzJ10KKworICAgICAg
IyBCdWlsZCB1cCBhIGxpc3Qgb2Ygb3V0cHV0cy4KKyAgICAgICMgQ29sbGVjdCB0aGUgb3V0cHV0
IGRpcnMgd2UnbGwgbmVlZC4KKyAgICAgIGRpcnMgPSBzZXQoKQorICAgICAgZm9yIG91dCBpbiBv
dXRwdXRzOgorICAgICAgICBkaXIgPSBvcy5wYXRoLnNwbGl0KG91dClbMF0KKyAgICAgICAgaWYg
ZGlyOgorICAgICAgICAgIGRpcnMuYWRkKGRpcikKKyAgICAgIGlmIGludChhY3Rpb24uZ2V0KCdw
cm9jZXNzX291dHB1dHNfYXNfc291cmNlcycsIEZhbHNlKSk6CisgICAgICAgIGV4dHJhX3NvdXJj
ZXMgKz0gb3V0cHV0cworCisgICAgICAjIFdyaXRlIHRoZSBhY3R1YWwgY29tbWFuZC4KKyAgICAg
IGNvbW1hbmQgPSBneXAuY29tbW9uLkVuY29kZVBPU0lYU2hlbGxMaXN0KGFjdGlvblsnYWN0aW9u
J10pCisgICAgICBpZiAnbWVzc2FnZScgaW4gYWN0aW9uOgorICAgICAgICBzZWxmLldyaXRlTG4o
J3F1aWV0X2NtZF8lcyA9IEFDVElPTiAlcyAkQCcgJSAobmFtZSwgYWN0aW9uWydtZXNzYWdlJ10p
KQorICAgICAgZWxzZToKKyAgICAgICAgc2VsZi5Xcml0ZUxuKCdxdWlldF9jbWRfJXMgPSBBQ1RJ
T04gJXMgJEAnICUgKG5hbWUsIG5hbWUpKQorICAgICAgaWYgbGVuKGRpcnMpID4gMDoKKyAgICAg
ICAgY29tbWFuZCA9ICdta2RpciAtcCAlcycgJSAnICcuam9pbihkaXJzKSArICc7ICcgKyBjb21t
YW5kCisgICAgICAjIFNldCBMRF9MSUJSQVJZX1BBVEggaW4gY2FzZSB0aGUgYWN0aW9uIHJ1bnMg
YW4gZXhlY3V0YWJsZSBmcm9tIHRoaXMKKyAgICAgICMgYnVpbGQgd2hpY2ggbGlua3MgdG8gc2hh
cmVkIGxpYnMgZnJvbSB0aGlzIGJ1aWxkLgorICAgICAgaWYgc2VsZi5wYXRoOgorICAgICAgICBj
ZF9hY3Rpb24gPSAnY2QgJXM7ICcgJSBTb3VyY2VpZnkoc2VsZi5wYXRoKQorICAgICAgZWxzZToK
KyAgICAgICAgY2RfYWN0aW9uID0gJycKKyAgICAgICMgYWN0aW9ucyBydW4gb24gdGhlIGhvc3Qs
IHNvIHRoZXkgc2hvdWxkIGluIHRoZW9yeSBvbmx5IHVzZSBob3N0CisgICAgICAjIGxpYnJhcmll
cywgYnV0IHVudGlsIGV2ZXJ5dGhpbmcgaXMgbWFkZSBjcm9zcy1jb21waWxlIHNhZmUsIGFsc28g
dXNlCisgICAgICAjIHRhcmdldCBsaWJyYXJpZXMuCisgICAgICAjIFRPRE8ocGltYW4pOiB3aGVu
IGV2ZXJ5dGhpbmcgaXMgY3Jvc3MtY29tcGlsZSBzYWZlLCByZW1vdmUgbGliLnRhcmdldAorICAg
ICAgc2VsZi5Xcml0ZUxuKCdjbWRfJXMgPSBleHBvcnQgTERfTElCUkFSWV9QQVRIPSQoYnVpbGRk
aXIpL2xpYi5ob3N0OicKKyAgICAgICAgICAgICAgICAgICAnJChidWlsZGRpcikvbGliLnRhcmdl
dDokJExEX0xJQlJBUllfUEFUSDsgJXMlcycKKyAgICAgICAgICAgICAgICAgICAlIChuYW1lLCBj
ZF9hY3Rpb24sIGNvbW1hbmQpKQorICAgICAgc2VsZi5Xcml0ZUxuKCkKKyAgICAgIG91dHB1dHMg
PSBtYXAoc2VsZi5BYnNvbHV0aWZ5LCBvdXRwdXRzKQorICAgICAgIyBUaGUgbWFrZWZpbGUgcnVs
ZXMgYXJlIGFsbCByZWxhdGl2ZSB0byB0aGUgdG9wIGRpciwgYnV0IHRoZSBneXAgYWN0aW9ucwor
ICAgICAgIyBhcmUgZGVmaW5lZCByZWxhdGl2ZSB0byB0aGVpciBjb250YWluaW5nIGRpci4gIFRo
aXMgcmVwbGFjZXMgdGhlIG9iagorICAgICAgIyB2YXJpYWJsZSBmb3IgdGhlIGFjdGlvbiBydWxl
IHdpdGggYW4gYWJzb2x1dGUgdmVyc2lvbiBzbyB0aGF0IHRoZSBvdXRwdXQKKyAgICAgICMgZ29l
cyBpbiB0aGUgcmlnaHQgcGxhY2UuCisgICAgICAjIE9ubHkgd3JpdGUgdGhlICdvYmonIGFuZCAn
YnVpbGRkaXInIHJ1bGVzIGZvciB0aGUgInByaW1hcnkiIG91dHB1dCAoOjEpOworICAgICAgIyBp
dCdzIHN1cGVyZmx1b3VzIGZvciB0aGUgImV4dHJhIG91dHB1dHMiLCBhbmQgdGhpcyBhdm9pZHMg
YWNjaWRlbnRhbGx5CisgICAgICAjIHdyaXRpbmcgZHVwbGljYXRlIGR1bW15IHJ1bGVzIGZvciB0
aG9zZSBvdXRwdXRzLgorICAgICAgc2VsZi5Xcml0ZU1ha2VSdWxlKG91dHB1dHNbOjFdLCBbJ29i
aiA6PSAkKGFic19vYmopJ10pCisgICAgICBzZWxmLldyaXRlTWFrZVJ1bGUob3V0cHV0c1s6MV0s
IFsnYnVpbGRkaXIgOj0gJChhYnNfYnVpbGRkaXIpJ10pCisgICAgICBzZWxmLldyaXRlRG9DbWQo
b3V0cHV0cywgbWFwKFNvdXJjZWlmeSwgbWFwKHNlbGYuQWJzb2x1dGlmeSwgaW5wdXRzKSksCisg
ICAgICAgICAgICAgICAgICAgICAgcGFydF9vZl9hbGw9cGFydF9vZl9hbGwsIGNvbW1hbmQ9bmFt
ZSkKKworICAgICAgIyBTdHVmZiB0aGUgb3V0cHV0cyBpbiBhIHZhcmlhYmxlIHNvIHdlIGNhbiBy
ZWZlciB0byB0aGVtIGxhdGVyLgorICAgICAgb3V0cHV0c192YXJpYWJsZSA9ICdhY3Rpb25fJXNf
b3V0cHV0cycgJSBuYW1lCisgICAgICBzZWxmLldyaXRlTG4oJyVzIDo9ICVzJyAlIChvdXRwdXRz
X3ZhcmlhYmxlLCAnICcuam9pbihvdXRwdXRzKSkpCisgICAgICBleHRyYV9vdXRwdXRzLmFwcGVu
ZCgnJCglcyknICUgb3V0cHV0c192YXJpYWJsZSkKKyAgICAgIHNlbGYuV3JpdGVMbigpCisKKyAg
ICBzZWxmLldyaXRlTG4oKQorCisKKyAgZGVmIFdyaXRlUnVsZXMoc2VsZiwgcnVsZXMsIGV4dHJh
X3NvdXJjZXMsIGV4dHJhX291dHB1dHMsIHBhcnRfb2ZfYWxsKToKKyAgICAiIiJXcml0ZSBNYWtl
ZmlsZSBjb2RlIGZvciBhbnkgJ3J1bGVzJyBmcm9tIHRoZSBneXAgaW5wdXQuCisKKyAgICBleHRy
YV9zb3VyY2VzOiBhIGxpc3QgdGhhdCB3aWxsIGJlIGZpbGxlZCBpbiB3aXRoIG5ld2x5IGdlbmVy
YXRlZCBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICBmaWxlcywgaWYgYW55CisgICAgZXh0cmFf
b3V0cHV0czogYSBsaXN0IHRoYXQgd2lsbCBiZSBmaWxsZWQgaW4gd2l0aCBhbnkgb3V0cHV0cyBv
ZiB0aGVzZQorICAgICAgICAgICAgICAgICAgIHJ1bGVzICh1c2VkIHRvIG1ha2Ugb3RoZXIgcGll
Y2VzIGRlcGVuZGVudCBvbiB0aGVzZSBydWxlcykKKyAgICBwYXJ0X29mX2FsbDogZmxhZyBpbmRp
Y2F0aW5nIHRoaXMgdGFyZ2V0IGlzIHBhcnQgb2YgJ2FsbCcKKyAgICAiIiIKKyAgICBmb3IgcnVs
ZSBpbiBydWxlczoKKyAgICAgIG5hbWUgPSBzZWxmLnRhcmdldCArICdfJyArIFN0cmluZ1RvTWFr
ZWZpbGVWYXJpYWJsZShydWxlWydydWxlX25hbWUnXSkKKyAgICAgIGNvdW50ID0gMAorICAgICAg
c2VsZi5Xcml0ZUxuKCcjIyMgR2VuZXJhdGVkIGZvciBydWxlICVzOicgJSBuYW1lKQorCisgICAg
ICBhbGxfb3V0cHV0cyA9IFtdCisKKyAgICAgIGZvciBydWxlX3NvdXJjZSBpbiBydWxlLmdldCgn
cnVsZV9zb3VyY2VzJywgW10pOgorICAgICAgICBkaXJzID0gc2V0KCkKKyAgICAgICAgcnVsZV9z
b3VyY2VfYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHJ1bGVfc291cmNlKQorICAgICAgICAo
cnVsZV9zb3VyY2Vfcm9vdCwgcnVsZV9zb3VyY2VfZXh0KSA9IFwKKyAgICAgICAgICAgIG9zLnBh
dGguc3BsaXRleHQocnVsZV9zb3VyY2VfYmFzZW5hbWUpCisKKyAgICAgICAgb3V0cHV0cyA9IFtz
ZWxmLkV4cGFuZElucHV0Um9vdChvdXQsIHJ1bGVfc291cmNlX3Jvb3QpCisgICAgICAgICAgICAg
ICAgICAgZm9yIG91dCBpbiBydWxlWydvdXRwdXRzJ11dCisgICAgICAgIGZvciBvdXQgaW4gb3V0
cHV0czoKKyAgICAgICAgICBkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3V0KQorICAgICAgICAgIGlm
IGRpcjoKKyAgICAgICAgICAgIGRpcnMuYWRkKGRpcikKKyAgICAgICAgICBpZiBpbnQocnVsZS5n
ZXQoJ3Byb2Nlc3Nfb3V0cHV0c19hc19zb3VyY2VzJywgRmFsc2UpKToKKyAgICAgICAgICAgIGV4
dHJhX3NvdXJjZXMuYXBwZW5kKG91dCkKKyAgICAgICAgYWxsX291dHB1dHMgKz0gb3V0cHV0cwor
ICAgICAgICBpbnB1dHMgPSBtYXAoU291cmNlaWZ5LCBtYXAoc2VsZi5BYnNvbHV0aWZ5LCBbcnVs
ZV9zb3VyY2VdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUuZ2V0
KCdpbnB1dHMnLCBbXSkpKQorICAgICAgICBhY3Rpb25zID0gWyckKGNhbGwgZG9fY21kLCVzXyVk
KScgJSAobmFtZSwgY291bnQpXQorCisgICAgICAgIGlmIG5hbWUgPT0gJ3Jlc291cmNlc19ncml0
JzoKKyAgICAgICAgICAjIEhBQ0s6IFRoaXMgaXMgdWdseS4gIEdyaXQgaW50ZW50aW9uYWxseSBk
b2Vzbid0IHRvdWNoIHRoZQorICAgICAgICAgICMgdGltZXN0YW1wIG9mIGl0cyBvdXRwdXQgZmls
ZSB3aGVuIHRoZSBmaWxlIGRvZXNuJ3QgY2hhbmdlLAorICAgICAgICAgICMgd2hpY2ggaXMgZmlu
ZSBpbiBoYXNoLWJhc2VkIGRlcGVuZGVuY3kgc3lzdGVtcyBsaWtlIHNjb25zCisgICAgICAgICAg
IyBhbmQgZm9yZ2UsIGJ1dCBub3Qga29zaGVyIGluIHRoZSBtYWtlIHdvcmxkLiAgQWZ0ZXIgc29t
ZQorICAgICAgICAgICMgZGlzY3Vzc2lvbiwgaGFja2luZyBhcm91bmQgaXQgaGVyZSBzZWVtcyBs
aWtlIHRoZSBsZWFzdAorICAgICAgICAgICMgYW1vdW50IG9mIHBhaW4uCisgICAgICAgICAgYWN0
aW9ucyArPSBbJ0B0b3VjaCAtLW5vLWNyZWF0ZSAkQCddCisKKyAgICAgICAgIyBPbmx5IHdyaXRl
IHRoZSAnb2JqJyBhbmQgJ2J1aWxkZGlyJyBydWxlcyBmb3IgdGhlICJwcmltYXJ5IiBvdXRwdXQK
KyAgICAgICAgIyAoOjEpOyBpdCdzIHN1cGVyZmx1b3VzIGZvciB0aGUgImV4dHJhIG91dHB1dHMi
LCBhbmQgdGhpcyBhdm9pZHMKKyAgICAgICAgIyBhY2NpZGVudGFsbHkgd3JpdGluZyBkdXBsaWNh
dGUgZHVtbXkgcnVsZXMgZm9yIHRob3NlIG91dHB1dHMuCisgICAgICAgIHNlbGYuV3JpdGVNYWtl
UnVsZShvdXRwdXRzWzoxXSwgWydvYmogOj0gJChhYnNfb2JqKSddKQorICAgICAgICBzZWxmLldy
aXRlTWFrZVJ1bGUob3V0cHV0c1s6MV0sIFsnYnVpbGRkaXIgOj0gJChhYnNfYnVpbGRkaXIpJ10p
CisgICAgICAgIHNlbGYuV3JpdGVNYWtlUnVsZShvdXRwdXRzLCBpbnB1dHMgKyBbJ0ZPUkNFX0RP
X0NNRCddLCBhY3Rpb25zKQorICAgICAgICBzZWxmLldyaXRlTG4oJ2FsbF9kZXBzICs9ICVzJyAl
ICcgJy5qb2luKG91dHB1dHMpKQorICAgICAgICBzZWxmLl9udW1fb3V0cHV0cyArPSBsZW4ob3V0
cHV0cykKKworICAgICAgICBhY3Rpb24gPSBbc2VsZi5FeHBhbmRJbnB1dFJvb3QoYWMsIHJ1bGVf
c291cmNlX3Jvb3QpCisgICAgICAgICAgICAgICAgICBmb3IgYWMgaW4gcnVsZVsnYWN0aW9uJ11d
CisgICAgICAgIG1rZGlycyA9ICcnCisgICAgICAgIGlmIGxlbihkaXJzKSA+IDA6CisgICAgICAg
ICAgbWtkaXJzID0gJ21rZGlyIC1wICVzOyAnICUgJyAnLmpvaW4oZGlycykKKyAgICAgICAgaWYg
c2VsZi5wYXRoOgorICAgICAgICAgIGNkX2FjdGlvbiA9ICdjZCAlczsgJyAlIFNvdXJjZWlmeShz
ZWxmLnBhdGgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgY2RfYWN0aW9uID0gJycKKyAgICAg
ICAgIyBTZXQgTERfTElCUkFSWV9QQVRIIGluIGNhc2UgdGhlIHJ1bGUgcnVucyBhbiBleGVjdXRh
YmxlIGZyb20gdGhpcworICAgICAgICAjIGJ1aWxkIHdoaWNoIGxpbmtzIHRvIHNoYXJlZCBsaWJz
IGZyb20gdGhpcyBidWlsZC4KKyAgICAgICAgIyBydWxlcyBydW4gb24gdGhlIGhvc3QsIHNvIHRo
ZXkgc2hvdWxkIGluIHRoZW9yeSBvbmx5IHVzZSBob3N0CisgICAgICAgICMgbGlicmFyaWVzLCBi
dXQgdW50aWwgZXZlcnl0aGluZyBpcyBtYWRlIGNyb3NzLWNvbXBpbGUgc2FmZSwgYWxzbyB1c2UK
KyAgICAgICAgIyB0YXJnZXQgbGlicmFyaWVzLgorICAgICAgICAjIFRPRE8ocGltYW4pOiB3aGVu
IGV2ZXJ5dGhpbmcgaXMgY3Jvc3MtY29tcGlsZSBzYWZlLCByZW1vdmUgbGliLnRhcmdldAorICAg
ICAgICBzZWxmLldyaXRlTG4oCisgICAgICAgICAgICAiY21kXyUobmFtZSlzXyUoY291bnQpZCA9
IGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IgorICAgICAgICAgICAgICAiJChidWlsZGRpcikvbGli
Lmhvc3Q6JChidWlsZGRpcikvbGliLnRhcmdldDokJExEX0xJQlJBUllfUEFUSDsgIgorICAgICAg
ICAgICAgICAiJShjZF9hY3Rpb24pcyUobWtkaXJzKXMlKGFjdGlvbilzIiAlIHsKKyAgICAgICAg
ICAnYWN0aW9uJzogZ3lwLmNvbW1vbi5FbmNvZGVQT1NJWFNoZWxsTGlzdChhY3Rpb24pLAorICAg
ICAgICAgICdjZF9hY3Rpb24nOiBjZF9hY3Rpb24sCisgICAgICAgICAgJ2NvdW50JzogY291bnQs
CisgICAgICAgICAgJ21rZGlycyc6IG1rZGlycywKKyAgICAgICAgICAnbmFtZSc6IG5hbWUsCisg
ICAgICAgIH0pCisgICAgICAgIHNlbGYuV3JpdGVMbigKKyAgICAgICAgICAgICdxdWlldF9jbWRf
JShuYW1lKXNfJShjb3VudClkID0gUlVMRSAlKG5hbWUpc18lKGNvdW50KWQgJEAnICUgeworICAg
ICAgICAgICdjb3VudCc6IGNvdW50LAorICAgICAgICAgICduYW1lJzogbmFtZSwKKyAgICAgICAg
fSkKKyAgICAgICAgc2VsZi5Xcml0ZUxuKCkKKyAgICAgICAgY291bnQgKz0gMQorCisgICAgICBv
dXRwdXRzX3ZhcmlhYmxlID0gJ3J1bGVfJXNfb3V0cHV0cycgJSBuYW1lCisgICAgICBzZWxmLldy
aXRlTGlzdChhbGxfb3V0cHV0cywgb3V0cHV0c192YXJpYWJsZSkKKyAgICAgIGV4dHJhX291dHB1
dHMuYXBwZW5kKCckKCVzKScgJSBvdXRwdXRzX3ZhcmlhYmxlKQorCisgICAgICBzZWxmLldyaXRl
TG4oJyMjIyBGaW5pc2hlZCBnZW5lcmF0aW5nIGZvciBydWxlOiAlcycgJSBuYW1lKQorICAgICAg
c2VsZi5Xcml0ZUxuKCkKKyAgICBzZWxmLldyaXRlTG4oJyMjIyBGaW5pc2hlZCBnZW5lcmF0aW5n
IGZvciBhbGwgcnVsZXMnKQorICAgIHNlbGYuV3JpdGVMbignJykKKworCisgIGRlZiBXcml0ZUNv
cGllcyhzZWxmLCBjb3BpZXMsIGV4dHJhX291dHB1dHMsIHBhcnRfb2ZfYWxsKToKKyAgICAiIiJX
cml0ZSBNYWtlZmlsZSBjb2RlIGZvciBhbnkgJ2NvcGllcycgZnJvbSB0aGUgZ3lwIGlucHV0Lgor
CisgICAgZXh0cmFfb3V0cHV0czogYSBsaXN0IHRoYXQgd2lsbCBiZSBmaWxsZWQgaW4gd2l0aCBh
bnkgb3V0cHV0cyBvZiB0aGlzIGFjdGlvbgorICAgICAgICAgICAgICAgICAgICh1c2VkIHRvIG1h
a2Ugb3RoZXIgcGllY2VzIGRlcGVuZGVudCBvbiB0aGlzIGFjdGlvbikKKyAgICBwYXJ0X29mX2Fs
bDogZmxhZyBpbmRpY2F0aW5nIHRoaXMgdGFyZ2V0IGlzIHBhcnQgb2YgJ2FsbCcKKyAgICAiIiIK
KyAgICBzZWxmLldyaXRlTG4oJyMjIyBHZW5lcmF0ZWQgZm9yIGNvcHkgcnVsZS4nKQorCisgICAg
dmFyaWFibGUgPSBzZWxmLnRhcmdldCArICdfY29waWVzJworICAgIG91dHB1dHMgPSBbXQorICAg
IGZvciBjb3B5IGluIGNvcGllczoKKyAgICAgIGZvciBwYXRoIGluIGNvcHlbJ2ZpbGVzJ106Cisg
ICAgICAgIHBhdGggPSBTb3VyY2VpZnkoc2VsZi5BYnNvbHV0aWZ5KHBhdGgpKQorICAgICAgICBm
aWxlbmFtZSA9IG9zLnBhdGguc3BsaXQocGF0aClbMV0KKyAgICAgICAgb3V0cHV0ID0gU291cmNl
aWZ5KHNlbGYuQWJzb2x1dGlmeShvcy5wYXRoLmpvaW4oY29weVsnZGVzdGluYXRpb24nXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmls
ZW5hbWUpKSkKKyAgICAgICAgc2VsZi5Xcml0ZURvQ21kKFtvdXRwdXRdLCBbcGF0aF0sICdjb3B5
JywgcGFydF9vZl9hbGwpCisgICAgICAgIG91dHB1dHMuYXBwZW5kKG91dHB1dCkKKyAgICBzZWxm
LldyaXRlTG4oJyVzID0gJXMnICUgKHZhcmlhYmxlLCAnICcuam9pbihvdXRwdXRzKSkpCisgICAg
ZXh0cmFfb3V0cHV0cy5hcHBlbmQoJyQoJXMpJyAlIHZhcmlhYmxlKQorICAgIHNlbGYuV3JpdGVM
bigpCisKKworICBkZWYgV3JpdGVTb3VyY2VzKHNlbGYsIGNvbmZpZ3MsIGRlcHMsIHNvdXJjZXMs
CisgICAgICAgICAgICAgICAgICAgZXh0cmFfb3V0cHV0cywgZXh0cmFfbGlua19kZXBzLAorICAg
ICAgICAgICAgICAgICAgIHBhcnRfb2ZfYWxsKToKKyAgICAiIiJXcml0ZSBNYWtlZmlsZSBjb2Rl
IGZvciBhbnkgJ3NvdXJjZXMnIGZyb20gdGhlIGd5cCBpbnB1dC4KKyAgICBUaGVzZSBhcmUgc291
cmNlIGZpbGVzIG5lY2Vzc2FyeSB0byBidWlsZCB0aGUgY3VycmVudCB0YXJnZXQuCisKKyAgICBj
b25maWdzLCBkZXBzLCBzb3VyY2VzOiBpbnB1dCBmcm9tIGd5cC4KKyAgICBleHRyYV9vdXRwdXRz
OiBhIGxpc3Qgb2YgZXh0cmEgb3V0cHV0cyB0aGlzIGFjdGlvbiBzaG91bGQgYmUgZGVwZW5kZW50
IG9uOworICAgICAgICAgICAgICAgICAgIHVzZWQgdG8gc2VyaWFsaXplIGFjdGlvbi9ydWxlcyBi
ZWZvcmUgY29tcGlsYXRpb24KKyAgICBleHRyYV9saW5rX2RlcHM6IGEgbGlzdCB0aGF0IHdpbGwg
YmUgZmlsbGVkIGluIHdpdGggYW55IG91dHB1dHMgb2YKKyAgICAgICAgICAgICAgICAgICAgIGNv
bXBpbGF0aW9uICh0byBiZSB1c2VkIGluIGxpbmsgbGluZXMpCisgICAgcGFydF9vZl9hbGw6IGZs
YWcgaW5kaWNhdGluZyB0aGlzIHRhcmdldCBpcyBwYXJ0IG9mICdhbGwnCisgICAgIiIiCisKKyAg
ICAjIFdyaXRlIGNvbmZpZ3VyYXRpb24tc3BlY2lmaWMgdmFyaWFibGVzIGZvciBDRkxBR1MsIGV0
Yy4KKyAgICBmb3IgY29uZmlnbmFtZSBpbiBzb3J0ZWQoY29uZmlncy5rZXlzKCkpOgorICAgICAg
Y29uZmlnID0gY29uZmlnc1tjb25maWduYW1lXQorICAgICAgc2VsZi5Xcml0ZUxpc3QoY29uZmln
LmdldCgnZGVmaW5lcycpLCAnREVGU18lcycgJSBjb25maWduYW1lLCBwcmVmaXg9Jy1EJywKKyAg
ICAgICAgICBxdW90ZXI9RXNjYXBlQ3BwRGVmaW5lKQorICAgICAgc2VsZi5Xcml0ZUxuKCIjIEZs
YWdzIHBhc3NlZCB0byBib3RoIEMgYW5kIEMrKyBmaWxlcy4iKTsKKyAgICAgIHNlbGYuV3JpdGVM
aXN0KGNvbmZpZy5nZXQoJ2NmbGFncycpLCAnQ0ZMQUdTXyVzJyAlIGNvbmZpZ25hbWUpCisgICAg
ICBzZWxmLldyaXRlTG4oIiMgRmxhZ3MgcGFzc2VkIHRvIG9ubHkgQyAoYW5kIG5vdCBDKyspIGZp
bGVzLiIpOworICAgICAgc2VsZi5Xcml0ZUxpc3QoY29uZmlnLmdldCgnY2ZsYWdzX2MnKSwgJ0NG
TEFHU19DXyVzJyAlIGNvbmZpZ25hbWUpCisgICAgICBzZWxmLldyaXRlTG4oIiMgRmxhZ3MgcGFz
c2VkIHRvIG9ubHkgQysrIChhbmQgbm90IEMpIGZpbGVzLiIpOworICAgICAgc2VsZi5Xcml0ZUxp
c3QoY29uZmlnLmdldCgnY2ZsYWdzX2NjJyksICdDRkxBR1NfQ0NfJXMnICUgY29uZmlnbmFtZSkK
KyAgICAgIGluY2x1ZGVzID0gY29uZmlnLmdldCgnaW5jbHVkZV9kaXJzJykKKyAgICAgIGlmIGlu
Y2x1ZGVzOgorICAgICAgICBpbmNsdWRlcyA9IG1hcChTb3VyY2VpZnksIG1hcChzZWxmLkFic29s
dXRpZnksIGluY2x1ZGVzKSkKKyAgICAgIHNlbGYuV3JpdGVMaXN0KGluY2x1ZGVzLCAnSU5DU18l
cycgJSBjb25maWduYW1lLCBwcmVmaXg9Jy1JJykKKworICAgIGNvbXBpbGFibGUgPSBmaWx0ZXIo
Q29tcGlsYWJsZSwgc291cmNlcykKKyAgICBvYmpzID0gbWFwKHNlbGYuT2JqZWN0aWZ5LCBtYXAo
c2VsZi5BYnNvbHV0aWZ5LCBtYXAoVGFyZ2V0LCBjb21waWxhYmxlKSkpCisgICAgc2VsZi5Xcml0
ZUxpc3Qob2JqcywgJ09CSlMnKQorCisgICAgc2VsZi5Xcml0ZUxuKCcjIEFkZCB0byB0aGUgbGlz
dCBvZiBmaWxlcyB3ZSBzcGVjaWFsbHkgdHJhY2sgJworICAgICAgICAgICAgICAgICAnZGVwZW5k
ZW5jaWVzIGZvci4nKQorICAgIHNlbGYuV3JpdGVMbignYWxsX2RlcHMgKz0gJChPQkpTKScpCisg
ICAgc2VsZi5fbnVtX291dHB1dHMgKz0gbGVuKG9ianMpCisgICAgc2VsZi5Xcml0ZUxuKCkKKwor
ICAgICMgTWFrZSBzdXJlIG91ciBkZXBlbmRlbmNpZXMgYXJlIGJ1aWx0IGZpcnN0LgorICAgIGlm
IGRlcHM6CisgICAgICBzZWxmLldyaXRlTWFrZVJ1bGUoWyckKE9CSlMpJ10sIGRlcHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9ICdNYWtlIHN1cmUgb3VyIGRlcGVuZGVuY2ll
cyBhcmUgYnVpbHQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3Jl
IGFueSBvZiB1cy4nLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyX29ubHkgPSBUcnVl
KQorCisgICAgIyBNYWtlIHN1cmUgdGhlIGFjdGlvbnMgYW5kIHJ1bGVzIHJ1biBmaXJzdC4KKyAg
ICAjIElmIHRoZXkgZ2VuZXJhdGUgYW55IGV4dHJhIGhlYWRlcnMgZXRjLiwgdGhlIHBlci0ubyBm
aWxlIGRlcCB0cmFja2luZworICAgICMgd2lsbCBjYXRjaCB0aGUgcHJvcGVyIHJlYnVpbGRzLCBz
byBvcmRlciBvbmx5IGlzIHN0aWxsIG9rIGhlcmUuCisgICAgaWYgZXh0cmFfb3V0cHV0czoKKyAg
ICAgIHNlbGYuV3JpdGVNYWtlUnVsZShbJyQoT0JKUyknXSwgZXh0cmFfb3V0cHV0cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gJ01ha2Ugc3VyZSBvdXIgYWN0aW9ucy9ydWxl
cyBydW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIGFueSBv
ZiB1cy4nLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyX29ubHkgPSBUcnVlKQorCisg
ICAgaWYgb2JqczoKKyAgICAgIGV4dHJhX2xpbmtfZGVwcy5hcHBlbmQoJyQoT0JKUyknKQorICAg
ICAgc2VsZi5Xcml0ZUxuKCIiIlwKKyMgQ0ZMQUdTIGV0IGFsIG92ZXJyaWRlcyBtdXN0IGJlIHRh
cmdldC1sb2NhbC4KKyMgU2VlICJUYXJnZXQtc3BlY2lmaWMgVmFyaWFibGUgVmFsdWVzIiBpbiB0
aGUgR05VIE1ha2UgbWFudWFsLiIiIikKKyAgICAgIHNlbGYuV3JpdGVMbigiJChPQkpTKTogVE9P
TFNFVCA6PSAkKFRPT0xTRVQpIikKKyAgICAgIHNlbGYuV3JpdGVMbigiJChPQkpTKTogR1lQX0NG
TEFHUyA6PSAiCisgICAgICAgICAgICAgICAgICAgIiQoREVGU18kKEJVSUxEVFlQRSkpICIKKyAg
ICAgICAgICAgICAgICAgICAiJChJTkNTXyQoQlVJTERUWVBFKSkgIgorICAgICAgICAgICAgICAg
ICAgICIkKENGTEFHU18kKEJVSUxEVFlQRSkpICIKKyAgICAgICAgICAgICAgICAgICAiJChDRkxB
R1NfQ18kKEJVSUxEVFlQRSkpIikKKyAgICAgIHNlbGYuV3JpdGVMbigiJChPQkpTKTogR1lQX0NY
WEZMQUdTIDo9ICIKKyAgICAgICAgICAgICAgICAgICAiJChERUZTXyQoQlVJTERUWVBFKSkgIgor
ICAgICAgICAgICAgICAgICAgICIkKElOQ1NfJChCVUlMRFRZUEUpKSAiCisgICAgICAgICAgICAg
ICAgICAgIiQoQ0ZMQUdTXyQoQlVJTERUWVBFKSkgIgorICAgICAgICAgICAgICAgICAgICIkKENG
TEFHU19DQ18kKEJVSUxEVFlQRSkpIikKKworICAgICMgSWYgdGhlcmUgYXJlIGFueSBvYmplY3Qg
ZmlsZXMgaW4gb3VyIGlucHV0IGZpbGUgbGlzdCwgbGluayB0aGVtIGludG8gb3VyCisgICAgIyBv
dXRwdXQuCisgICAgZXh0cmFfbGlua19kZXBzICs9IGZpbHRlcihMaW5rYWJsZSwgc291cmNlcykK
KworICAgIHNlbGYuV3JpdGVMbigpCisKKworICBkZWYgQ29tcHV0ZU91dHB1dChzZWxmLCBzcGVj
KToKKyAgICAiIiJSZXR1cm4gdGhlICdvdXRwdXQnIChmdWxsIG91dHB1dCBwYXRoKSBvZiBhIGd5
cCBzcGVjLgorCisgICAgRS5nLiwgdGhlIGxvYWRhYmxlIG1vZHVsZSAnZm9vYmFyJyBpbiBkaXJl
Y3RvcnkgJ2Jheicgd2lsbCBwcm9kdWNlCisgICAgICAnJChvYmopL2Jhei9saWJmb29iYXIuc28n
CisgICAgIiIiCisgICAgb3V0cHV0ID0gTm9uZQorICAgIHRhcmdldCA9IHNwZWNbJ3RhcmdldF9u
YW1lJ10KKyAgICB0YXJnZXRfcHJlZml4ID0gJycKKyAgICB0YXJnZXRfZXh0ID0gJycKKyAgICBw
YXRoID0gb3MucGF0aC5qb2luKCckKG9iaikuJyArIHNlbGYudG9vbHNldCwgc2VsZi5wYXRoKQor
ICAgIGlmIHNlbGYudHlwZSA9PSAnc3RhdGljX2xpYnJhcnknOgorICAgICAgaWYgdGFyZ2V0Wzoz
XSA9PSAnbGliJzoKKyAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0WzM6XQorICAgICAgdGFyZ2V0X3By
ZWZpeCA9ICdsaWInCisgICAgICB0YXJnZXRfZXh0ID0gJy5hJworICAgIGVsaWYgc2VsZi50eXBl
IGluICgnbG9hZGFibGVfbW9kdWxlJywgJ3NoYXJlZF9saWJyYXJ5Jyk6CisgICAgICBpZiB0YXJn
ZXRbOjNdID09ICdsaWInOgorICAgICAgICB0YXJnZXQgPSB0YXJnZXRbMzpdCisgICAgICB0YXJn
ZXRfcHJlZml4ID0gJ2xpYicKKyAgICAgIHRhcmdldF9leHQgPSAnLnNvJworICAgIGVsaWYgc2Vs
Zi50eXBlID09ICdub25lJzoKKyAgICAgIHRhcmdldCA9ICclcy5zdGFtcCcgJSB0YXJnZXQKKyAg
ICBlbGlmIHNlbGYudHlwZSA9PSAnc2V0dGluZ3MnOgorICAgICAgcmV0dXJuIE5vbmUKKyAgICBl
bGlmIHNlbGYudHlwZSA9PSAnZXhlY3V0YWJsZSc6CisgICAgICBwYXRoID0gb3MucGF0aC5qb2lu
KCckKGJ1aWxkZGlyKScpCisgICAgZWxzZToKKyAgICAgIHByaW50ICgiRVJST1I6IFdoYXQgb3V0
cHV0IGZpbGUgc2hvdWxkIGJlIGdlbmVyYXRlZD8iLAorICAgICAgICAgICAgICJ0eXAiLCBzZWxm
LnR5cGUsICJ0YXJnZXQiLCB0YXJnZXQpCisKKyAgICBwYXRoID0gc3BlYy5nZXQoJ3Byb2R1Y3Rf
ZGlyJywgcGF0aCkKKyAgICB0YXJnZXRfcHJlZml4ID0gc3BlYy5nZXQoJ3Byb2R1Y3RfcHJlZml4
JywgdGFyZ2V0X3ByZWZpeCkKKyAgICB0YXJnZXQgPSBzcGVjLmdldCgncHJvZHVjdF9uYW1lJywg
dGFyZ2V0KQorICAgIHByb2R1Y3RfZXh0ID0gc3BlYy5nZXQoJ3Byb2R1Y3RfZXh0ZW5zaW9uJykK
KyAgICBpZiBwcm9kdWN0X2V4dDoKKyAgICAgIHRhcmdldF9leHQgPSAnLicgKyBwcm9kdWN0X2V4
dAorCisgICAgcmV0dXJuIG9zLnBhdGguam9pbihwYXRoLCB0YXJnZXRfcHJlZml4ICsgdGFyZ2V0
ICsgdGFyZ2V0X2V4dCkKKworCisgIGRlZiBDb21wdXRlRGVwcyhzZWxmLCBzcGVjKToKKyAgICAi
IiJDb21wdXRlIHRoZSBkZXBlbmRlbmNpZXMgb2YgYSBneXAgc3BlYy4KKworICAgIFJldHVybnMg
YSB0dXBsZSAoZGVwcywgbGlua19kZXBzKSwgd2hlcmUgZWFjaCBpcyBhIGxpc3Qgb2YKKyAgICBm
aWxlbmFtZXMgdGhhdCB3aWxsIG5lZWQgdG8gYmUgcHV0IGluIGZyb250IG9mIG1ha2UgZm9yIGVp
dGhlcgorICAgIGJ1aWxkaW5nIChkZXBzKSBvciBsaW5raW5nIChsaW5rX2RlcHMpLgorICAgICIi
IgorICAgIGRlcHMgPSBbXQorICAgIGxpbmtfZGVwcyA9IFtdCisgICAgaWYgJ2RlcGVuZGVuY2ll
cycgaW4gc3BlYzoKKyAgICAgIGRlcHMuZXh0ZW5kKFt0YXJnZXRfb3V0cHV0c1tkZXBdIGZvciBk
ZXAgaW4gc3BlY1snZGVwZW5kZW5jaWVzJ10KKyAgICAgICAgICAgICAgICAgICBpZiB0YXJnZXRf
b3V0cHV0c1tkZXBdXSkKKyAgICAgIGZvciBkZXAgaW4gc3BlY1snZGVwZW5kZW5jaWVzJ106Cisg
ICAgICAgIGlmIGRlcCBpbiB0YXJnZXRfbGlua19kZXBzOgorICAgICAgICAgIGxpbmtfZGVwcy5l
eHRlbmQodGFyZ2V0X2xpbmtfZGVwc1tkZXBdKQorICAgICAgZGVwcy5leHRlbmQobGlua19kZXBz
KQorICAgICAgIyBUT0RPOiBJdCBzZWVtcyB3ZSBuZWVkIHRvIHRyYW5zaXRpdmVseSBsaW5rIGlu
IGxpYnJhcmllcyAoZS5nLiAtbGZvbyk/CisgICAgICAjIFRoaXMgaGFjayBtYWtlcyBpdCB3b3Jr
OgorICAgICAgIyBsaW5rX2RlcHMuZXh0ZW5kKHNwZWMuZ2V0KCdsaWJyYXJpZXMnLCBbXSkpCisg
ICAgcmV0dXJuIChneXAuY29tbW9uLnVuaXF1ZXIoZGVwcyksIGd5cC5jb21tb24udW5pcXVlcihs
aW5rX2RlcHMpKQorCisKKyAgZGVmIFdyaXRlVGFyZ2V0KHNlbGYsIHNwZWMsIGNvbmZpZ3MsIGRl
cHMsIGxpbmtfZGVwcywgZXh0cmFfb3V0cHV0cywKKyAgICAgICAgICAgICAgICAgIHBhcnRfb2Zf
YWxsKToKKyAgICAiIiJXcml0ZSBNYWtlZmlsZSBjb2RlIHRvIHByb2R1Y2UgdGhlIGZpbmFsIHRh
cmdldCBvZiB0aGUgZ3lwIHNwZWMuCisKKyAgICBzcGVjLCBjb25maWdzOiBpbnB1dCBmcm9tIGd5
cC4KKyAgICBkZXBzLCBsaW5rX2RlcHM6IGRlcGVuZGVuY3kgbGlzdHM7IHNlZSBDb21wdXRlRGVw
cygpCisgICAgZXh0cmFfb3V0cHV0czogYW55IGV4dHJhIG91dHB1dHMgdGhhdCBvdXIgdGFyZ2V0
IHNob3VsZCBkZXBlbmQgb24KKyAgICBwYXJ0X29mX2FsbDogZmxhZyBpbmRpY2F0aW5nIHRoaXMg
dGFyZ2V0IGlzIHBhcnQgb2YgJ2FsbCcKKyAgICAiIiIKKworICAgIHNlbGYuV3JpdGVMbignIyMj
IFJ1bGVzIGZvciBmaW5hbCB0YXJnZXQuJykKKworICAgIGlmIGV4dHJhX291dHB1dHM6CisgICAg
ICBzZWxmLldyaXRlTWFrZVJ1bGUoW3NlbGYub3V0cHV0XSwgZXh0cmFfb3V0cHV0cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gJ0J1aWxkIG91ciBzcGVjaWFsIG91dHB1dHMg
Zmlyc3QuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcl9vbmx5ID0gVHJ1ZSkKKyAg
ICAgIHNlbGYuV3JpdGVNYWtlUnVsZShleHRyYV9vdXRwdXRzLCBkZXBzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1lbnQ9KCdQcmVzZXJ2ZSBvcmRlciBkZXBlbmRlbmN5IG9mICcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lhbCBvdXRwdXQgb24gZGVwcy4n
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcl9vbmx5ID0gVHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBtdWx0aXBsZV9vdXRwdXRfdHJpY2sgPSBGYWxzZSkKKworICAgIGlm
IHNlbGYudHlwZSBub3QgaW4gKCdzZXR0aW5ncycsICdub25lJyk6CisgICAgICBmb3IgY29uZmln
bmFtZSBpbiBzb3J0ZWQoY29uZmlncy5rZXlzKCkpOgorICAgICAgICBjb25maWcgPSBjb25maWdz
W2NvbmZpZ25hbWVdCisgICAgICAgIHNlbGYuV3JpdGVMaXN0KGNvbmZpZy5nZXQoJ2xkZmxhZ3Mn
KSwgJ0xERkxBR1NfJXMnICUgY29uZmlnbmFtZSkKKyAgICAgIGxpYnJhcmllcyA9IHNwZWMuZ2V0
KCdsaWJyYXJpZXMnKQorICAgICAgaWYgbGlicmFyaWVzOgorICAgICAgICAjIFJlbW92ZSBkdXBs
aWNhdGUgZW50cmllcworICAgICAgICBsaWJyYXJpZXMgPSBneXAuY29tbW9uLnVuaXF1ZXIobGli
cmFyaWVzKQorICAgICAgc2VsZi5Xcml0ZUxpc3QobGlicmFyaWVzLCAnTElCUycpCisgICAgICBz
ZWxmLldyaXRlTG4oJyVzOiBHWVBfTERGTEFHUyA6PSAkKExERkxBR1NfJChCVUlMRFRZUEUpKScg
JSBzZWxmLm91dHB1dCkKKyAgICAgIHNlbGYuV3JpdGVMbignJXM6IExJQlMgOj0gJChMSUJTKScg
JSBzZWxmLm91dHB1dCkKKworICAgIGlmIHNlbGYudHlwZSA9PSAnZXhlY3V0YWJsZSc6CisgICAg
ICBzZWxmLldyaXRlRG9DbWQoW3NlbGYub3V0cHV0XSwgbGlua19kZXBzLCAnbGluaycsIHBhcnRf
b2ZfYWxsKQorICAgIGVsaWYgc2VsZi50eXBlID09ICdzdGF0aWNfbGlicmFyeSc6CisgICAgICBz
ZWxmLldyaXRlRG9DbWQoW3NlbGYub3V0cHV0XSwgbGlua19kZXBzLCAnYWxpbmsnLCBwYXJ0X29m
X2FsbCkKKyAgICBlbGlmIHNlbGYudHlwZSBpbiAoJ2xvYWRhYmxlX21vZHVsZScsICdzaGFyZWRf
bGlicmFyeScpOgorICAgICAgc2VsZi5Xcml0ZURvQ21kKFtzZWxmLm91dHB1dF0sIGxpbmtfZGVw
cywgJ3NvbGluaycsIHBhcnRfb2ZfYWxsKQorICAgIGVsaWYgc2VsZi50eXBlID09ICdub25lJzoK
KyAgICAgICMgV3JpdGUgYSBzdGFtcCBsaW5lLgorICAgICAgc2VsZi5Xcml0ZURvQ21kKFtzZWxm
Lm91dHB1dF0sIGRlcHMsICd0b3VjaCcsIHBhcnRfb2ZfYWxsKQorICAgIGVsaWYgc2VsZi50eXBl
ID09ICdzZXR0aW5ncyc6CisgICAgICAjIE9ubHkgdXNlZCBmb3IgcGFzc2luZyBmbGFncyBhcm91
bmQuCisgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgIHByaW50ICJXQVJOSU5HOiBubyBvdXRw
dXQgZm9yIiwgc2VsZi50eXBlLCB0YXJnZXQKKworICAgICMgQWRkIGFuIGFsaWFzIGZvciBlYWNo
IHRhcmdldCAoaWYgdGhlcmUgYXJlIGFueSBvdXRwdXRzKS4KKyAgICAjIEluc3RhbGxhYmxlIHRh
cmdldCBhbGlhc2VzIGFyZSBjcmVhdGVkIGJlbG93LgorICAgIGlmICgoc2VsZi5vdXRwdXQgYW5k
IHNlbGYub3V0cHV0ICE9IHNlbGYudGFyZ2V0KSBhbmQKKyAgICAgICAgKHNlbGYudHlwZSBub3Qg
aW4gc2VsZi5fSU5TVEFMTEFCTEVfVEFSR0VUUykpOgorICAgICAgc2VsZi5Xcml0ZU1ha2VSdWxl
KFtzZWxmLnRhcmdldF0sIFtzZWxmLm91dHB1dF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbWVudD0nQWRkIHRhcmdldCBhbGlhcycsIHBob255ID0gVHJ1ZSkKKyAgICAgIGlmIHBhcnRf
b2ZfYWxsOgorICAgICAgICBzZWxmLldyaXRlTWFrZVJ1bGUoWydhbGwnXSwgW3NlbGYudGFyZ2V0
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSAnQWRkIHRhcmdldCBhbGlh
cyB0byAiYWxsIiB0YXJnZXQuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBob255ID0g
VHJ1ZSkKKworICAgICMgQWRkIHNwZWNpYWwtY2FzZSBydWxlcyBmb3Igb3VyIGluc3RhbGxhYmxl
IHRhcmdldHMuCisgICAgIyAxKSBUaGV5IG5lZWQgdG8gaW5zdGFsbCB0byB0aGUgYnVpbGQgZGly
IG9yICJwcm9kdWN0IiBkaXIuCisgICAgIyAyKSBUaGV5IGdldCBzaG9ydGN1dHMgZm9yIGJ1aWxk
aW5nIChlLmcuICJtYWtlIGNocm9tZSIpLgorICAgICMgMykgVGhleSBhcmUgcGFydCBvZiAibWFr
ZSBhbGwiLgorICAgIGlmIHNlbGYudHlwZSBpbiBzZWxmLl9JTlNUQUxMQUJMRV9UQVJHRVRTOgor
ICAgICAgaWYgc2VsZi50eXBlID09ICdzaGFyZWRfbGlicmFyeSc6CisgICAgICAgIGZpbGVfZGVz
YyA9ICdzaGFyZWQgbGlicmFyeScKKyAgICAgIGVsc2U6CisgICAgICAgIGZpbGVfZGVzYyA9ICdl
eGVjdXRhYmxlJworICAgICAgaW5zdGFsbF9wYXRoID0gc2VsZi5fSW5zdGFsbGFibGVUYXJnZXRJ
bnN0YWxsUGF0aCgpCisgICAgICBpbnN0YWxsYWJsZV9kZXBzID0gW3NlbGYub3V0cHV0XQorICAg
ICAgIyBQb2ludCB0aGUgdGFyZ2V0IGFsaWFzIHRvIHRoZSBmaW5hbCBiaW5hcnkgb3V0cHV0Lgor
ICAgICAgc2VsZi5Xcml0ZU1ha2VSdWxlKFtzZWxmLnRhcmdldF0sIFtpbnN0YWxsX3BhdGhdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQ9J0FkZCB0YXJnZXQgYWxpYXMnLCBwaG9u
eSA9IFRydWUpCisgICAgICBpZiBpbnN0YWxsX3BhdGggIT0gc2VsZi5vdXRwdXQ6CisgICAgICAg
IHNlbGYuV3JpdGVEb0NtZChbaW5zdGFsbF9wYXRoXSwgW3NlbGYub3V0cHV0XSwgJ2NvcHknLAor
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9ICdDb3B5IHRoaXMgdG8gdGhlICVzIG91
dHB1dCBwYXRoLicgJQorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9kZXNjLCBwYXJ0X29m
X2FsbD1wYXJ0X29mX2FsbCkKKyAgICAgICAgaW5zdGFsbGFibGVfZGVwcy5hcHBlbmQoaW5zdGFs
bF9wYXRoKQorICAgICAgaWYgc2VsZi5vdXRwdXQgIT0gc2VsZi5hbGlhcyBhbmQgc2VsZi5hbGlh
cyAhPSBzZWxmLnRhcmdldDoKKyAgICAgICAgc2VsZi5Xcml0ZU1ha2VSdWxlKFtzZWxmLmFsaWFz
XSwgaW5zdGFsbGFibGVfZGVwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQg
PSAnU2hvcnQgYWxpYXMgZm9yIGJ1aWxkaW5nIHRoaXMgJXMuJyAlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmaWxlX2Rlc2MsIHBob255ID0gVHJ1ZSkKKyAgICAgIGlmIHBhcnRfb2ZfYWxs
OgorICAgICAgICBzZWxmLldyaXRlTWFrZVJ1bGUoWydhbGwnXSwgW2luc3RhbGxfcGF0aF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gJ0FkZCAlcyB0byAiYWxsIiB0YXJn
ZXQuJyAlIGZpbGVfZGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBob255ID0gVHJ1
ZSkKKworCisgIGRlZiBXcml0ZUxpc3Qoc2VsZiwgbGlzdCwgdmFyaWFibGU9Tm9uZSwgcHJlZml4
PScnLCBxdW90ZXI9UXVvdGVJZk5lY2Vzc2FyeSk6CisgICAgIiIiV3JpdGUgYSB2YXJpYWJsZSBk
ZWZpbml0aW9uIHRoYXQgaXMgYSBsaXN0IG9mIHZhbHVlcy4KKworICAgIEUuZy4gV3JpdGVMaXN0
KFsnYScsJ2InXSwgJ2ZvbycsIHByZWZpeD0nYmxhaCcpIHdyaXRlcyBvdXQKKyAgICAgICAgIGZv
byA9IGJsYWhhIGJsYWhiCisgICAgYnV0IGluIGEgcHJldHR5LXByaW50ZWQgc3R5bGUuCisgICAg
IiIiCisgICAgc2VsZi5mcC53cml0ZSh2YXJpYWJsZSArICIgOj0gIikKKyAgICBpZiBsaXN0Ogor
ICAgICAgbGlzdCA9IFtxdW90ZXIocHJlZml4ICsgbCkgZm9yIGwgaW4gbGlzdF0KKyAgICAgIHNl
bGYuZnAud3JpdGUoIiBcXFxuXHQiLmpvaW4obGlzdCkpCisgICAgc2VsZi5mcC53cml0ZSgiXG5c
biIpCisKKworICBkZWYgV3JpdGVEb0NtZChzZWxmLCBvdXRwdXRzLCBpbnB1dHMsIGNvbW1hbmQs
IHBhcnRfb2ZfYWxsLCBjb21tZW50PU5vbmUpOgorICAgICIiIldyaXRlIGEgTWFrZWZpbGUgcnVs
ZSB0aGF0IHVzZXMgZG9fY21kLgorCisgICAgVGhpcyBtYWtlcyB0aGUgb3V0cHV0cyBkZXBlbmRl
bnQgb24gdGhlIGNvbW1hbmQgbGluZSB0aGF0IHdhcyBydW4sCisgICAgYXMgd2VsbCBhcyBzdXBw
b3J0IHRoZSBWPSBtYWtlIGNvbW1hbmQgbGluZSBmbGFnLgorICAgICIiIgorICAgIHNlbGYuV3Jp
dGVNYWtlUnVsZShvdXRwdXRzLCBpbnB1dHMsCisgICAgICAgICAgICAgICAgICAgICAgIGFjdGlv
bnMgPSBbJyQoY2FsbCBkb19jbWQsJXMpJyAlIGNvbW1hbmRdLAorICAgICAgICAgICAgICAgICAg
ICAgICBjb21tZW50ID0gY29tbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yY2UgPSBU
cnVlKQorICAgICMgQWRkIG91ciBvdXRwdXRzIHRvIHRoZSBsaXN0IG9mIHRhcmdldHMgd2UgcmVh
ZCBkZXBmaWxlcyBmcm9tLgorICAgIHNlbGYuV3JpdGVMbignYWxsX2RlcHMgKz0gJXMnICUgJyAn
LmpvaW4ob3V0cHV0cykpCisgICAgc2VsZi5fbnVtX291dHB1dHMgKz0gbGVuKG91dHB1dHMpCisK
KworICBkZWYgV3JpdGVNYWtlUnVsZShzZWxmLCBvdXRwdXRzLCBpbnB1dHMsIGFjdGlvbnM9Tm9u
ZSwgY29tbWVudD1Ob25lLAorICAgICAgICAgICAgICAgICAgICBvcmRlcl9vbmx5PUZhbHNlLCBm
b3JjZT1GYWxzZSwgcGhvbnk9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlX291
dHB1dF90cmljaz1UcnVlKToKKyAgICAiIiJXcml0ZSBhIE1ha2VmaWxlIHJ1bGUsIHdpdGggc29t
ZSBleHRyYSB0cmlja3MuCisKKyAgICBvdXRwdXRzOiBhIGxpc3Qgb2Ygb3V0cHV0cyBmb3IgdGhl
IHJ1bGUgKG5vdGU6IHRoaXMgaXMgbm90IGRpcmVjdGx5CisgICAgICAgICAgICAgc3VwcG9ydGVk
IGJ5IG1ha2U7IHNlZSBjb21tZW50cyBiZWxvdykKKyAgICBpbnB1dHM6IGEgbGlzdCBvZiBpbnB1
dHMgZm9yIHRoZSBydWxlCisgICAgYWN0aW9uczogYSBsaXN0IG9mIHNoZWxsIGNvbW1hbmRzIHRv
IHJ1biBmb3IgdGhlIHJ1bGUKKyAgICBjb21tZW50OiBhIGNvbW1lbnQgdG8gcHV0IGluIHRoZSBN
YWtlZmlsZSBhYm92ZSB0aGUgcnVsZSAoYWxzbyB1c2VmdWwKKyAgICAgICAgICAgICBmb3IgbWFr
aW5nIHRoaXMgUHl0aG9uIHNjcmlwdCdzIGNvZGUgc2VsZi1kb2N1bWVudGluZykKKyAgICBvcmRl
cl9vbmx5OiBpZiB0cnVlLCBtYWtlcyB0aGUgZGVwZW5kZW5jeSBvcmRlci1vbmx5CisgICAgZm9y
Y2U6IGlmIHRydWUsIGluY2x1ZGUgRk9SQ0VfRE9fQ01EIGFzIGFuIG9yZGVyLW9ubHkgZGVwCisg
ICAgcGhvbnk6IGlmIHRydWUsIHRoZSBydWxlIGRvZXMgbm90IGFjdHVhbGx5IGdlbmVyYXRlIHRo
ZSBuYW1lZCBvdXRwdXQsIHRoZQorICAgICAgICAgICBvdXRwdXQgaXMganVzdCBhIG5hbWUgdG8g
cnVuIHRoZSBydWxlCisgICAgbXVsdGlwbGVfb3V0cHV0X3RyaWNrOiBpZiB0cnVlICh0aGUgZGVm
YXVsdCksIHBlcmZvcm0gdHJpY2tzIHN1Y2ggYXMgZHVtbXkKKyAgICAgICAgICAgcnVsZXMgdG8g
YXZvaWQgcHJvYmxlbXMgd2l0aCBtdWx0aXBsZSBvdXRwdXRzLgorICAgICIiIgorICAgIGlmIGNv
bW1lbnQ6CisgICAgICBzZWxmLldyaXRlTG4oJyMgJyArIGNvbW1lbnQpCisgICAgaWYgcGhvbnk6
CisgICAgICBzZWxmLldyaXRlTG4oJy5QSE9OWTogJyArICcgJy5qb2luKG91dHB1dHMpKQorICAg
ICMgVE9ETyhldmFubSk6IGp1c3QgbWFrZSBvcmRlcl9vbmx5IGEgbGlzdCBvZiBkZXBzIGluc3Rl
YWQgb2YgdGhlc2UgaGFja3MuCisgICAgaWYgb3JkZXJfb25seToKKyAgICAgIG9yZGVyX2luc2Vy
dCA9ICd8ICcKKyAgICBlbHNlOgorICAgICAgb3JkZXJfaW5zZXJ0ID0gJycKKyAgICBpZiBmb3Jj
ZToKKyAgICAgIGZvcmNlX2FwcGVuZCA9ICcgRk9SQ0VfRE9fQ01EJworICAgIGVsc2U6CisgICAg
ICBmb3JjZV9hcHBlbmQgPSAnJworICAgIGlmIGFjdGlvbnM6CisgICAgICBzZWxmLldyaXRlTG4o
IiVzOiBUT09MU0VUIDo9ICQoVE9PTFNFVCkiICUgb3V0cHV0c1swXSkKKyAgICBzZWxmLldyaXRl
TG4oJyVzOiAlcyVzJXMnICUgKG91dHB1dHNbMF0sIG9yZGVyX2luc2VydCwgJyAnLmpvaW4oaW5w
dXRzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlX2FwcGVuZCkpCisg
ICAgaWYgYWN0aW9uczoKKyAgICAgIGZvciBhY3Rpb24gaW4gYWN0aW9uczoKKyAgICAgICAgc2Vs
Zi5Xcml0ZUxuKCdcdCVzJyAlIGFjdGlvbikKKyAgICBpZiBtdWx0aXBsZV9vdXRwdXRfdHJpY2sg
YW5kIGxlbihvdXRwdXRzKSA+IDE6CisgICAgICAjIElmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBv
dXRwdXQsIGEgcnVsZSBsaWtlCisgICAgICAjICAgZm9vIGJhcjogYmF6CisgICAgICAjIHRoYXQg
Zm9yICplYWNoKiBvdXRwdXQgd2UgbXVzdCBydW4gdGhlIGFjdGlvbiwgcG90ZW50aWFsbHkKKyAg
ICAgICMgaW4gcGFyYWxsZWwuICBUaGF0IGlzIG5vdCB3aGF0IHdlJ3JlIHRyeWluZyB0byB3cml0
ZSAtLSB3aGF0CisgICAgICAjIHdlIHdhbnQgaXMgdGhhdCB3ZSBydW4gdGhlIGFjdGlvbiBvbmNl
IGFuZCBpdCBnZW5lcmF0ZXMgYWxsCisgICAgICAjIHRoZSBmaWxlcy4KKyAgICAgICMgaHR0cDov
L3d3dy5nbnUub3JnL3NvZnR3YXJlL2hlbGxvL21hbnVhbC9hdXRvbWFrZS9NdWx0aXBsZS1PdXRw
dXRzLmh0bWwKKyAgICAgICMgZGlzY3Vzc2VzIHRoaXMgcHJvYmxlbSBhbmQgaGFzIHRoaXMgc29s
dXRpb246CisgICAgICAjIDEpIFdyaXRlIHRoZSBuYWl2ZSBydWxlIHRoYXQgd291bGQgcHJvZHVj
ZSBwYXJhbGxlbCBydW5zIG9mCisgICAgICAjIHRoZSBhY3Rpb24uCisgICAgICAjIDIpIE1ha2Ug
dGhlIG91dHB1dHMgc2VyYWxpemVkIG9uIGVhY2ggb3RoZXIsIHNvIHdlIHdvbid0IHN0YXJ0Cisg
ICAgICAjIGEgcGFyYWxsZWwgcnVuIHVudGlsIHRoZSBmaXJzdCBydW4gZmluaXNoZXMsIGF0IHdo
aWNoIHBvaW50CisgICAgICAjIHdlJ2xsIGhhdmUgZ2VuZXJhdGVkIGFsbCB0aGUgb3V0cHV0cyBh
bmQgd2UncmUgZG9uZS4KKyAgICAgIHNlbGYuV3JpdGVMbignJXM6ICVzJyAlICgnICcuam9pbihv
dXRwdXRzWzE6XSksIG91dHB1dHNbMF0pKQorICAgICAgIyBBZGQgYSBkdW1teSBjb21tYW5kIHRv
IHRoZSAiZXh0cmEgb3V0cHV0cyIgcnVsZSwgb3RoZXJ3aXNlIG1ha2Ugc2VlbXMgdG8KKyAgICAg
ICMgdGhpbmsgdGhlc2Ugb3V0cHV0cyBoYXZlbid0IChjb3VsZG4ndCBoYXZlPykgY2hhbmdlZCwg
YW5kIHRodXMgZG9lc24ndAorICAgICAgIyBmbGFnIHRoZW0gYXMgY2hhbmdlZCAoaS5lLiBpbmNs
dWRlIGluICckPycpIHdoZW4gZXZhbHVhdGluZyBkZXBlbmRlbnQKKyAgICAgICMgcnVsZXMsIHdo
aWNoIGluIHR1cm4gY2F1c2VzIGRvX2NtZCgpIHRvIHNraXAgcnVubmluZyBkZXBlbmRlbnQgY29t
bWFuZHMuCisgICAgICBzZWxmLldyaXRlTG4oJyVzOiA7JyAlICgnICcuam9pbihvdXRwdXRzWzE6
XSkpKQorICAgIHNlbGYuV3JpdGVMbigpCisKKworICBkZWYgV3JpdGVMbihzZWxmLCB0ZXh0PScn
KToKKyAgICBzZWxmLmZwLndyaXRlKHRleHQgKyAnXG4nKQorCisKKyAgZGVmIE9iamVjdGlmeShz
ZWxmLCBwYXRoKToKKyAgICAiIiJDb252ZXJ0IGEgcGF0aCB0byBpdHMgb3V0cHV0IGRpcmVjdG9y
eSBmb3JtLiIiIgorICAgIGlmICckKCcgaW4gcGF0aDoKKyAgICAgIHBhdGggPSBwYXRoLnJlcGxh
Y2UoJyQob2JqKS8nLCAnJChvYmopLiVzLyQoVEFSR0VUKS8nICUgc2VsZi50b29sc2V0KQorICAg
ICAgcmV0dXJuIHBhdGgKKyAgICByZXR1cm4gJyQob2JqKS4lcy8kKFRBUkdFVCkvJXMnICUgKHNl
bGYudG9vbHNldCwgcGF0aCkKKworICBkZWYgQWJzb2x1dGlmeShzZWxmLCBwYXRoKToKKyAgICAi
IiJDb252ZXJ0IGEgc3ViZGlyZWN0b3J5LXJlbGF0aXZlIHBhdGggaW50byBhIGJhc2UtcmVsYXRp
dmUgcGF0aC4KKyAgICBTa2lwcyBvdmVyIHBhdGhzIHRoYXQgY29udGFpbiB2YXJpYWJsZXMuIiIi
CisgICAgaWYgJyQoJyBpbiBwYXRoOgorICAgICAgcmV0dXJuIHBhdGgKKyAgICByZXR1cm4gb3Mu
cGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCBwYXRoKSkKKworCisgIGRlZiBG
aXh1cEFyZ1BhdGgoc2VsZiwgYXJnKToKKyAgICBpZiAnLycgaW4gYXJnIG9yICcuaC4nIGluIGFy
ZzoKKyAgICAgIHJldHVybiBzZWxmLkFic29sdXRpZnkoYXJnKQorICAgIHJldHVybiBhcmcKKwor
CisgIGRlZiBFeHBhbmRJbnB1dFJvb3Qoc2VsZiwgdGVtcGxhdGUsIGV4cGFuc2lvbik6CisgICAg
aWYgJyUoSU5QVVRfUk9PVClzJyBub3QgaW4gdGVtcGxhdGU6CisgICAgICByZXR1cm4gdGVtcGxh
dGUKKyAgICBwYXRoID0gdGVtcGxhdGUgJSB7ICdJTlBVVF9ST09UJzogZXhwYW5zaW9uIH0KKyAg
ICBpZiBub3Qgb3MucGF0aC5kaXJuYW1lKHBhdGgpOgorICAgICAgIyBJZiBpdCdzIGp1c3QgdGhl
IGZpbGUgbmFtZSwgdHVybiBpdCBpbnRvIGEgcGF0aCBzbyBGaXh1cEFyZ1BhdGgoKQorICAgICAg
IyB3aWxsIGtub3cgdG8gQWJzb2x1dGlmeSgpIGl0LgorICAgICAgcGF0aCA9IG9zLnBhdGguam9p
bignLicsIHBhdGgpCisgICAgcmV0dXJuIHBhdGgKKworCisgIGRlZiBfSW5zdGFsbGFibGVUYXJn
ZXRJbnN0YWxsUGF0aChzZWxmKToKKyAgICAiIiJSZXR1cm5zIHRoZSBsb2NhdGlvbiBvZiB0aGUg
ZmluYWwgb3V0cHV0IGZvciBhbiBpbnN0YWxsYWJsZSB0YXJnZXQuIiIiCisgICAgaWYgc2VsZi50
eXBlID09ICdzaGFyZWRfbGlicmFyeSc6CisgICAgICAjIEluc3RhbGwgYWxsIHNoYXJlZCBsaWJz
IGludG8gYSBjb21tb24gZGlyZWN0b3J5IChwZXIgdG9vbHNldCkgZm9yCisgICAgICAjIGNvbnZl
bmllbnQgYWNjZXNzIHdpdGggTERfTElCUkFSWV9QQVRILgorICAgICAgcmV0dXJuICckKGJ1aWxk
ZGlyKS9saWIuJXMvJXMnICUgKHNlbGYudG9vbHNldCwgc2VsZi5hbGlhcykKKyAgICByZXR1cm4g
JyQoYnVpbGRkaXIpLycgKyBzZWxmLmFsaWFzCisKKworZGVmIFdyaXRlQXV0b1JlZ2VuZXJhdGlv
blJ1bGUocGFyYW1zLCByb290X21ha2VmaWxlLCBtYWtlZmlsZV9uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnVpbGRfZmlsZXMpOgorICAiIiJXcml0ZSB0aGUgdGFyZ2V0IHRv
IHJlZ2VuZXJhdGUgdGhlIE1ha2VmaWxlLiIiIgorICBvcHRpb25zID0gcGFyYW1zWydvcHRpb25z
J10KKyAgYnVpbGRfZmlsZXNfYXJncyA9IFtneXAuY29tbW9uLlJlbGF0aXZlUGF0aChmaWxlbmFt
ZSwgb3B0aW9ucy50b3BsZXZlbF9kaXIpCisgICAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVu
YW1lIGluIHBhcmFtc1snYnVpbGRfZmlsZXNfYXJnJ11dCisgIGd5cF9iaW5hcnkgPSBneXAuY29t
bW9uLkZpeElmUmVsYXRpdmVQYXRoKHBhcmFtc1snZ3lwX2JpbmFyeSddLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnRvcGxldmVsX2RpcikKKyAg
aWYgbm90IGd5cF9iaW5hcnkuc3RhcnRzd2l0aChvcy5zZXApOgorICAgIGd5cF9iaW5hcnkgPSBv
cy5wYXRoLmpvaW4oJy4nLCBneXBfYmluYXJ5KQorICByb290X21ha2VmaWxlLndyaXRlKAorICAg
ICAgInF1aWV0X2NtZF9yZWdlbl9tYWtlZmlsZSA9IEFDVElPTiBSZWdlbmVyYXRpbmcgJEBcbiIK
KyAgICAgICJjbWRfcmVnZW5fbWFrZWZpbGUgPSAlKGNtZClzXG4iCisgICAgICAiJShtYWtlZmls
ZV9uYW1lKXM6ICUoZGVwcylzXG4iCisgICAgICAiXHQkKGNhbGwgZG9fY21kLHJlZ2VuX21ha2Vm
aWxlKVxuXG4iICUgeworICAgICAgICAgICdtYWtlZmlsZV9uYW1lJzogbWFrZWZpbGVfbmFtZSwK
KyAgICAgICAgICAnZGVwcyc6ICcgJy5qb2luKG1hcChTb3VyY2VpZnksIGJ1aWxkX2ZpbGVzKSks
CisgICAgICAgICAgJ2NtZCc6IGd5cC5jb21tb24uRW5jb2RlUE9TSVhTaGVsbExpc3QoCisgICAg
ICAgICAgICAgICAgICAgICBbZ3lwX2JpbmFyeSwgJy1mbWFrZSddICsKKyAgICAgICAgICAgICAg
ICAgICAgIGd5cC5SZWdlbmVyYXRlRmxhZ3Mob3B0aW9ucykgKworICAgICAgICAgICAgICAgICAg
ICAgYnVpbGRfZmlsZXNfYXJncyl9KQorCisKK2RlZiBSdW5TeXN0ZW1UZXN0cygpOgorICAiIiJS
dW4gdGVzdHMgYWdhaW5zdCB0aGUgc3lzdGVtIHRvIGNvbXB1dGUgZGVmYXVsdCBzZXR0aW5ncyBm
b3IgY29tbWFuZHMuCisKKyAgUmV0dXJuczoKKyAgICBkaWN0aW9uYXJ5IG9mIHNldHRpbmdzIG1h
dGNoaW5nIHRoZSBibG9jayBvZiBjb21tYW5kLWxpbmVzIHVzZWQgaW4KKyAgICBTSEFSRURfSEVB
REVSLiAgRS5nLiB0aGUgZGljdGlvbmFyeSB3aWxsIGNvbnRhaW4gYSBBUkZMQUdTLnRhcmdldAor
ICAgIGtleSBmb3IgdGhlIGRlZmF1bHQgQVJGTEFHUyBmb3IgdGhlIHRhcmdldCBhciBjb21tYW5k
LgorICAiIiIKKyAgIyBDb21wdXRlIGZsYWdzIHVzZWQgZm9yIGJ1aWxkaW5nIHN0YXRpYyBhcmNo
aXZlcy4KKyAgIyBOLkIuOiB0aGlzIGZhbGxiYWNrIGxvZ2ljIHNob3VsZCBtYXRjaCB0aGUgbG9n
aWMgaW4gU0hBUkVEX0hFQURFUi4KKyAgIyBTZWUgY29tbWVudCB0aGVyZSBmb3IgbW9yZSBkZXRh
aWxzLgorICBhcl90YXJnZXQgPSBvcy5lbnZpcm9uLmdldCgnQVIudGFyZ2V0Jywgb3MuZW52aXJv
bi5nZXQoJ0FSJywgJ2FyJykpCisgIGNjX3RhcmdldCA9IG9zLmVudmlyb24uZ2V0KCdDQy50YXJn
ZXQnLCBvcy5lbnZpcm9uLmdldCgnQ0MnLCAnY2MnKSkKKyAgYXJmbGFnc190YXJnZXQgPSAnY3Jz
JworICBpZiBneXAuc3lzdGVtX3Rlc3QuVGVzdEFyU3VwcG9ydHNUKGFyX2NvbW1hbmQ9YXJfdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjX2NvbW1hbmQ9Y2Nf
dGFyZ2V0KToKKyAgICBhcmZsYWdzX3RhcmdldCA9ICdjcnNUJworCisgIGFyX2hvc3QgPSBvcy5l
bnZpcm9uLmdldCgnQVIuaG9zdCcsICdhcicpCisgIGNjX2hvc3QgPSBvcy5lbnZpcm9uLmdldCgn
Q0MuaG9zdCcsICdnY2MnKQorICBhcmZsYWdzX2hvc3QgPSAnY3JzJworICAjIEl0IGZlZWxzIHJl
ZHVuZGFudCB0byBjb21wdXRlIHRoaXMgYWdhaW4gZ2l2ZW4gdGhhdCBtb3N0IGJ1aWxkcyBhcmVu
J3QKKyAgIyBjcm9zcy1jb21waWxlcywgYnV0IGR1ZSB0byBxdWlya3Mgb2YgaGlzdG9yeSBDQy5o
b3N0IGRlZmF1bHRzIHRvICdnY2MnCisgICMgd2hpbGUgQ0MudGFyZ2V0IGRlZmF1bHRzIHRvICdj
YycsIHNvIHRoZSBjb21tYW5kcyByZWFsbHkgYXJlIGRpZmZlcmVudAorICAjIGV2ZW4gdGhvdWdo
IHRoZXkncmUgbmVhcmx5IGd1YXJhbnRlZWQgdG8gcnVuIHRoZSBzYW1lIGNvZGUgdW5kZXJuZWF0
aC4KKyAgaWYgZ3lwLnN5c3RlbV90ZXN0LlRlc3RBclN1cHBvcnRzVChhcl9jb21tYW5kPWFyX2hv
c3QsIGNjX2NvbW1hbmQ9Y2NfaG9zdCk6CisgICAgYXJmbGFnc19ob3N0ID0gJ2Nyc1QnCisKKyAg
bGlua19mbGFncyA9ICcnCisgIGlmIGd5cC5zeXN0ZW1fdGVzdC5UZXN0TGlua2VyU3VwcG9ydHNU
aHJlYWRzKGNjX2NvbW1hbmQ9Y2NfdGFyZ2V0KToKKyAgICAjIE4uQi4gd2UgZG9uJ3QgdGVzdCBm
b3IgY3Jvc3MtY29tcGlsYXRpb247IGFzIGN1cnJlbnRseSB3cml0dGVuLCB3ZQorICAgICMgZG9u
J3QgZXZlbiB1c2UgZmxvY2sgd2hlbiBsaW5raW5nIGluIHRoZSBjcm9zcy1jb21waWxlIHNldHVw
IQorICAgICMgVE9ETyhldmFuKTogcmVmYWN0b3IgY3Jvc3MtY29tcGlsYXRpb24gc3VjaCB0aGF0
IHRoaXMgY29kZSBjYW4KKyAgICAjIGJlIHJldXNlZC4KKyAgICBsaW5rX2ZsYWdzID0gJy1XbCwt
LXRocmVhZHMgLS1XbCwtLXRocmVhZC1jb3VudD00JworCisgICMgVE9ETyhldmFuKTogY2FjaGUg
dGhpcyBvdXRwdXQuICAoQnV0IHRoZW4gd2UnbGwgbmVlZCB0byBhZGQgZXh0cmEKKyAgIyBmbGFn
cyB0byBneXAgdG8gZmx1c2ggdGhlIGNhY2hlLCB5dWshICBJdCdzIGZhc3QgZW5vdWdoIGZvciBu
b3cgdG8KKyAgIyBqdXN0IHJ1biBpdCBldmVyeSB0aW1lLikKKworICByZXR1cm4geyAnQVJGTEFH
Uy50YXJnZXQnOiBhcmZsYWdzX3RhcmdldCwKKyAgICAgICAgICAgJ0FSRkxBR1MuaG9zdCc6IGFy
ZmxhZ3NfaG9zdCwKKyAgICAgICAgICAgJ0xJTktfZmxhZ3MnOiBsaW5rX2ZsYWdzIH0KKworCitk
ZWYgR2VuZXJhdGVPdXRwdXQodGFyZ2V0X2xpc3QsIHRhcmdldF9kaWN0cywgZGF0YSwgcGFyYW1z
KToKKyAgb3B0aW9ucyA9IHBhcmFtc1snb3B0aW9ucyddCisgIGdlbmVyYXRvcl9mbGFncyA9IHBh
cmFtcy5nZXQoJ2dlbmVyYXRvcl9mbGFncycsIHt9KQorICBidWlsZGRpcl9uYW1lID0gZ2VuZXJh
dG9yX2ZsYWdzLmdldCgnb3V0cHV0X2RpcicsICdvdXQnKQorCisgIGRlZiBDYWxjdWxhdGVNYWtl
ZmlsZVBhdGgoYnVpbGRfZmlsZSwgYmFzZV9uYW1lKToKKyAgICAiIiJEZXRlcm1pbmUgd2hlcmUg
dG8gd3JpdGUgYSBNYWtlZmlsZSBmb3IgYSBnaXZlbiBneXAgZmlsZS4iIiIKKyAgICAjIFBhdGhz
IGluIGd5cCBmaWxlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIC5neXAgZmlsZSwgYnV0IHdlIHdhbnQK
KyAgICAjIHBhdGhzIHJlbGF0aXZlIHRvIHRoZSBzb3VyY2Ugcm9vdCBmb3IgdGhlIG1hc3RlciBt
YWtlZmlsZS4gIEdyYWIKKyAgICAjIHRoZSBwYXRoIG9mIHRoZSAuZ3lwIGZpbGUgYXMgdGhlIGJh
c2UgdG8gcmVsYXRpdml6ZSBhZ2FpbnN0LgorICAgICMgRS5nLiAiZm9vL2JhciIgd2hlbiB3ZSdy
ZSBjb25zdHJ1Y3RpbmcgdGFyZ2V0cyBmb3IgImZvby9iYXIvYmF6Lmd5cCIuCisgICAgYmFzZV9w
YXRoID0gZ3lwLmNvbW1vbi5SZWxhdGl2ZVBhdGgob3MucGF0aC5kaXJuYW1lKGJ1aWxkX2ZpbGUp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZGVwdGgp
CisgICAgIyBXZSB3cml0ZSB0aGUgZmlsZSBpbiB0aGUgYmFzZV9wYXRoIGRpcmVjdG9yeS4KKyAg
ICBvdXRwdXRfZmlsZSA9IG9zLnBhdGguam9pbihvcHRpb25zLmRlcHRoLCBiYXNlX3BhdGgsIGJh
c2VfbmFtZSkKKyAgICBpZiBvcHRpb25zLmdlbmVyYXRvcl9vdXRwdXQ6CisgICAgICBvdXRwdXRf
ZmlsZSA9IG9zLnBhdGguam9pbihvcHRpb25zLmdlbmVyYXRvcl9vdXRwdXQsIG91dHB1dF9maWxl
KQorICAgIGJhc2VfcGF0aCA9IGd5cC5jb21tb24uUmVsYXRpdmVQYXRoKG9zLnBhdGguZGlybmFt
ZShidWlsZF9maWxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cHRpb25zLnRvcGxldmVsX2RpcikKKyAgICByZXR1cm4gYmFzZV9wYXRoLCBvdXRwdXRfZmlsZQor
CisgICMgVE9ETzogIHNlYXJjaCBmb3IgdGhlIGZpcnN0IG5vbi0nRGVmYXVsdCcgdGFyZ2V0LiAg
VGhpcyBjYW4gZ28KKyAgIyBhd2F5IHdoZW4gd2UgYWRkIHZlcmlmaWNhdGlvbiB0aGF0IGFsbCB0
YXJnZXRzIGhhdmUgdGhlCisgICMgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLgorICBkZWZhdWx0
X2NvbmZpZ3VyYXRpb24gPSBOb25lCisgIHRvb2xzZXRzID0gc2V0KFt0YXJnZXRfZGljdHNbdGFy
Z2V0XVsndG9vbHNldCddIGZvciB0YXJnZXQgaW4gdGFyZ2V0X2xpc3RdKQorICBmb3IgdGFyZ2V0
IGluIHRhcmdldF9saXN0OgorICAgIHNwZWMgPSB0YXJnZXRfZGljdHNbdGFyZ2V0XQorICAgIGlm
IHNwZWNbJ2RlZmF1bHRfY29uZmlndXJhdGlvbiddICE9ICdEZWZhdWx0JzoKKyAgICAgIGRlZmF1
bHRfY29uZmlndXJhdGlvbiA9IHNwZWNbJ2RlZmF1bHRfY29uZmlndXJhdGlvbiddCisgICAgICBi
cmVhaworICBpZiBub3QgZGVmYXVsdF9jb25maWd1cmF0aW9uOgorICAgIGRlZmF1bHRfY29uZmln
dXJhdGlvbiA9ICdEZWZhdWx0JworCisgIHNyY2RpciA9ICcuJworICBtYWtlZmlsZV9uYW1lID0g
J01ha2VmaWxlJyArIG9wdGlvbnMuc3VmZml4CisgIG1ha2VmaWxlX3BhdGggPSBvcy5wYXRoLmpv
aW4ob3B0aW9ucy50b3BsZXZlbF9kaXIsIG1ha2VmaWxlX25hbWUpCisgIGlmIG9wdGlvbnMuZ2Vu
ZXJhdG9yX291dHB1dDoKKyAgICBnbG9iYWwgc3JjZGlyX3ByZWZpeAorICAgIG1ha2VmaWxlX3Bh
dGggPSBvcy5wYXRoLmpvaW4ob3B0aW9ucy5nZW5lcmF0b3Jfb3V0cHV0LCBtYWtlZmlsZV9wYXRo
KQorICAgIHNyY2RpciA9IGd5cC5jb21tb24uUmVsYXRpdmVQYXRoKHNyY2Rpciwgb3B0aW9ucy5n
ZW5lcmF0b3Jfb3V0cHV0KQorICAgIHNyY2Rpcl9wcmVmaXggPSAnJChzcmNkaXIpLycKKworICBo
ZWFkZXJfcGFyYW1zID0geworICAgICAgJ3NyY2Rpcic6IHNyY2RpciwKKyAgICAgICdidWlsZGRp
cic6IGJ1aWxkZGlyX25hbWUsCisgICAgICAnZGVmYXVsdF9jb25maWd1cmF0aW9uJzogZGVmYXVs
dF9jb25maWd1cmF0aW9uLAorICAgIH0KKyAgaGVhZGVyX3BhcmFtcy51cGRhdGUoUnVuU3lzdGVt
VGVzdHMoKSkKKworICBlbnN1cmVfZGlyZWN0b3J5X2V4aXN0cyhtYWtlZmlsZV9wYXRoKQorICBy
b290X21ha2VmaWxlID0gb3BlbihtYWtlZmlsZV9wYXRoLCAndycpCisgIHJvb3RfbWFrZWZpbGUu
d3JpdGUoU0hBUkVEX0hFQURFUiAlIGhlYWRlcl9wYXJhbXMpCisgIGZvciB0b29sc2V0IGluIHRv
b2xzZXRzOgorICAgIHJvb3RfbWFrZWZpbGUud3JpdGUoJ1RPT0xTRVQgOj0gJXNcbicgJSB0b29s
c2V0KQorICAgIHJvb3RfbWFrZWZpbGUud3JpdGUoUk9PVF9IRUFERVJfU1VGRklYX1JVTEVTKQor
CisgICMgRmluZCB0aGUgbGlzdCBvZiB0YXJnZXRzIHRoYXQgZGVyaXZlIGZyb20gdGhlIGd5cCBm
aWxlKHMpIGJlaW5nIGJ1aWx0LgorICBuZWVkZWRfdGFyZ2V0cyA9IHNldCgpCisgIGZvciBidWls
ZF9maWxlIGluIHBhcmFtc1snYnVpbGRfZmlsZXMnXToKKyAgICBmb3IgdGFyZ2V0IGluIGd5cC5j
b21tb24uQWxsVGFyZ2V0cyh0YXJnZXRfbGlzdCwgdGFyZ2V0X2RpY3RzLCBidWlsZF9maWxlKToK
KyAgICAgIG5lZWRlZF90YXJnZXRzLmFkZCh0YXJnZXQpCisKKyAgbnVtX291dHB1dHMgPSAwCisg
IGJ1aWxkX2ZpbGVzID0gc2V0KCkKKyAgaW5jbHVkZV9saXN0ID0gc2V0KCkKKyAgZm9yIHF1YWxp
ZmllZF90YXJnZXQgaW4gdGFyZ2V0X2xpc3Q6CisgICAgYnVpbGRfZmlsZSwgdGFyZ2V0LCB0b29s
c2V0ID0gZ3lwLmNvbW1vbi5QYXJzZVF1YWxpZmllZFRhcmdldCgKKyAgICAgICAgcXVhbGlmaWVk
X3RhcmdldCkKKyAgICBidWlsZF9maWxlcy5hZGQoZ3lwLmNvbW1vbi5SZWxhdGl2ZVBhdGgoYnVp
bGRfZmlsZSwgb3B0aW9ucy50b3BsZXZlbF9kaXIpKQorICAgIGluY2x1ZGVkX2ZpbGVzID0gZGF0
YVtidWlsZF9maWxlXVsnaW5jbHVkZWRfZmlsZXMnXQorICAgIGZvciBpbmNsdWRlZF9maWxlIGlu
IGluY2x1ZGVkX2ZpbGVzOgorICAgICAgIyBUaGUgaW5jbHVkZWRfZmlsZXMgZW50cmllcyBhcmUg
cmVsYXRpdmUgdG8gdGhlIGRpciBvZiB0aGUgYnVpbGQgZmlsZQorICAgICAgIyB0aGF0IGluY2x1
ZGVkIHRoZW0sIHNvIHdlIGhhdmUgdG8gdW5kbyB0aGF0IGFuZCB0aGVuIG1ha2UgdGhlbSByZWxh
dGl2ZQorICAgICAgIyB0byB0aGUgcm9vdCBkaXIuCisgICAgICByZWxhdGl2ZV9pbmNsdWRlX2Zp
bGUgPSBneXAuY29tbW9uLlJlbGF0aXZlUGF0aCgKKyAgICAgICAgICBneXAuY29tbW9uLlVucmVs
YXRpdmVQYXRoKGluY2x1ZGVkX2ZpbGUsIGJ1aWxkX2ZpbGUpLAorICAgICAgICAgIG9wdGlvbnMu
dG9wbGV2ZWxfZGlyKQorICAgICAgYWJzX2luY2x1ZGVfZmlsZSA9IG9zLnBhdGguYWJzcGF0aChy
ZWxhdGl2ZV9pbmNsdWRlX2ZpbGUpCisgICAgICAjIElmIHRoZSBpbmNsdWRlIGZpbGUgaXMgZnJv
bSB0aGUgfi8uZ3lwIGRpciwgd2Ugc2hvdWxkIHVzZSBhYnNvbHV0ZSBwYXRoCisgICAgICAjIHNv
IHRoYXQgcmVsb2NhdGluZyB0aGUgc3JjIGRpciBkb2Vzbid0IGJyZWFrIHRoZSBwYXRoLgorICAg
ICAgaWYgKHBhcmFtc1snaG9tZV9kb3RfZ3lwJ10gYW5kCisgICAgICAgICAgYWJzX2luY2x1ZGVf
ZmlsZS5zdGFydHN3aXRoKHBhcmFtc1snaG9tZV9kb3RfZ3lwJ10pKToKKyAgICAgICAgYnVpbGRf
ZmlsZXMuYWRkKGFic19pbmNsdWRlX2ZpbGUpCisgICAgICBlbHNlOgorICAgICAgICBidWlsZF9m
aWxlcy5hZGQocmVsYXRpdmVfaW5jbHVkZV9maWxlKQorCisgICAgYmFzZV9wYXRoLCBvdXRwdXRf
ZmlsZSA9IENhbGN1bGF0ZU1ha2VmaWxlUGF0aChidWlsZF9maWxlLAorICAgICAgICB0YXJnZXQg
KyAnLicgKyB0b29sc2V0ICsgb3B0aW9ucy5zdWZmaXggKyAnLm1rJykKKworICAgIHNwZWMgPSB0
YXJnZXRfZGljdHNbcXVhbGlmaWVkX3RhcmdldF0KKyAgICBjb25maWdzID0gc3BlY1snY29uZmln
dXJhdGlvbnMnXQorCisgICAgd3JpdGVyID0gTWFrZWZpbGVXcml0ZXIoKQorICAgIHdyaXRlci5X
cml0ZShxdWFsaWZpZWRfdGFyZ2V0LCBiYXNlX3BhdGgsIG91dHB1dF9maWxlLCBzcGVjLCBjb25m
aWdzLAorICAgICAgICAgICAgICAgICBwYXJ0X29mX2FsbD1xdWFsaWZpZWRfdGFyZ2V0IGluIG5l
ZWRlZF90YXJnZXRzKQorICAgIG51bV9vdXRwdXRzICs9IHdyaXRlci5OdW1PdXRwdXRzKCkKKwor
ICAgICMgT3VyIHJvb3RfbWFrZWZpbGUgbGl2ZXMgYXQgdGhlIHNvdXJjZSByb290LiAgQ29tcHV0
ZSB0aGUgcmVsYXRpdmUgcGF0aAorICAgICMgZnJvbSB0aGVyZSB0byB0aGUgb3V0cHV0X2ZpbGUg
Zm9yIGluY2x1ZGluZy4KKyAgICBta2ZpbGVfcmVsX3BhdGggPSBneXAuY29tbW9uLlJlbGF0aXZl
UGF0aChvdXRwdXRfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcy5wYXRoLmRpcm5hbWUobWFrZWZpbGVfcGF0aCkpCisgICAgaW5jbHVkZV9saXN0
LmFkZChta2ZpbGVfcmVsX3BhdGgpCisKKyAgIyBXcml0ZSBvdXQgcGVyLWd5cCAoc3ViLXByb2pl
Y3QpIE1ha2VmaWxlcy4KKyAgZGVwdGhfcmVsX3BhdGggPSBneXAuY29tbW9uLlJlbGF0aXZlUGF0
aChvcHRpb25zLmRlcHRoLCBvcy5nZXRjd2QoKSkKKyAgZm9yIGJ1aWxkX2ZpbGUgaW4gYnVpbGRf
ZmlsZXM6CisgICAgIyBUaGUgcGF0aHMgaW4gYnVpbGRfZmlsZXMgd2VyZSByZWxhdGl2aXplZCBh
Ym92ZSwgc28gdW5kbyB0aGF0IGJlZm9yZQorICAgICMgdGVzdGluZyBhZ2FpbnN0IHRoZSBub24t
cmVsYXRpdml6ZWQgaXRlbXMgaW4gdGFyZ2V0X2xpc3QgYW5kIGJlZm9yZQorICAgICMgY2FsY3Vs
YXRpbmcgdGhlIE1ha2VmaWxlIHBhdGguCisgICAgYnVpbGRfZmlsZSA9IG9zLnBhdGguam9pbihk
ZXB0aF9yZWxfcGF0aCwgYnVpbGRfZmlsZSkKKyAgICBneXBfdGFyZ2V0cyA9IFt0YXJnZXRfZGlj
dHNbdGFyZ2V0XVsndGFyZ2V0X25hbWUnXSBmb3IgdGFyZ2V0IGluIHRhcmdldF9saXN0CisgICAg
ICAgICAgICAgICAgICAgaWYgdGFyZ2V0LnN0YXJ0c3dpdGgoYnVpbGRfZmlsZSkgYW5kCisgICAg
ICAgICAgICAgICAgICAgdGFyZ2V0IGluIG5lZWRlZF90YXJnZXRzXQorICAgICMgT25seSBnZW5l
cmF0ZSBNYWtlZmlsZXMgZm9yIGd5cCBmaWxlcyB3aXRoIHRhcmdldHMuCisgICAgaWYgbm90IGd5
cF90YXJnZXRzOgorICAgICAgY29udGludWUKKyAgICBiYXNlX3BhdGgsIG91dHB1dF9maWxlID0g
Q2FsY3VsYXRlTWFrZWZpbGVQYXRoKGJ1aWxkX2ZpbGUsCisgICAgICAgIG9zLnBhdGguc3BsaXRl
eHQob3MucGF0aC5iYXNlbmFtZShidWlsZF9maWxlKSlbMF0gKyAnLk1ha2VmaWxlJykKKyAgICBt
YWtlZmlsZV9yZWxfcGF0aCA9IGd5cC5jb21tb24uUmVsYXRpdmVQYXRoKG9zLnBhdGguZGlybmFt
ZShtYWtlZmlsZV9wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9zLnBhdGguZGlybmFtZShvdXRwdXRfZmlsZSkpCisgICAgd3JpdGVyLldyaXRl
U3ViTWFrZShvdXRwdXRfZmlsZSwgbWFrZWZpbGVfcmVsX3BhdGgsIGd5cF90YXJnZXRzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgYnVpbGRkaXJfbmFtZSkKKworCisgICMgV3JpdGUgb3V0IHRo
ZSBzb3J0ZWQgbGlzdCBvZiBpbmNsdWRlcy4KKyAgcm9vdF9tYWtlZmlsZS53cml0ZSgnXG4nKQor
ICBmb3IgaW5jbHVkZV9maWxlIGluIHNvcnRlZChpbmNsdWRlX2xpc3QpOgorICAgICMgV2Ugd3Jh
cCBlYWNoIC5tayBpbmNsdWRlIGluIGFuIGlmIHN0YXRlbWVudCBzbyB1c2VycyBjYW4gdGVsbCBt
YWtlIHRvCisgICAgIyBub3QgbG9hZCBhIGZpbGUgYnkgc2V0dGluZyBOT19MT0FELiAgVGhlIGJl
bG93IG1ha2UgY29kZSBzYXlzLCBvbmx5CisgICAgIyBsb2FkIHRoZSAubWsgZmlsZSBpZiB0aGUg
Lm1rIGZpbGVuYW1lIGRvZXNuJ3Qgc3RhcnQgd2l0aCBhIHRva2VuIGluCisgICAgIyBOT19MT0FE
LgorICAgIHJvb3RfbWFrZWZpbGUud3JpdGUoCisgICAgICAgICJpZmVxICgkKHN0cmlwICQoZm9y
ZWFjaCBwcmVmaXgsJChOT19MT0FEKSxcXFxuIgorICAgICAgICAiICAgICQoZmluZHN0cmluZyAk
KGpvaW4gXiwkKHByZWZpeCkpLFxcXG4iCisgICAgICAgICIgICAgICAgICAgICAgICAgICQoam9p
biBeLCIgKyBpbmNsdWRlX2ZpbGUgKyAiKSkpKSwpXG4iKQorICAgIHJvb3RfbWFrZWZpbGUud3Jp
dGUoIiAgaW5jbHVkZSAiICsgaW5jbHVkZV9maWxlICsgIlxuIikKKyAgICByb290X21ha2VmaWxl
LndyaXRlKCJlbmRpZlxuIikKKyAgcm9vdF9tYWtlZmlsZS53cml0ZSgnXG4nKQorCisgIGlmIGdl
bmVyYXRvcl9mbGFncy5nZXQoJ2F1dG9fcmVnZW5lcmF0aW9uJywgVHJ1ZSk6CisgICAgV3JpdGVB
dXRvUmVnZW5lcmF0aW9uUnVsZShwYXJhbXMsIHJvb3RfbWFrZWZpbGUsIG1ha2VmaWxlX25hbWUs
IGJ1aWxkX2ZpbGVzKQorCisgICMgV3JpdGUgdGhlIHJ1bGUgdG8gbG9hZCBkZXBlbmRlbmNpZXMu
ICBXZSBiYXRjaCAxMDAwIGZpbGVzIGF0IGEgdGltZSB0bworICAjIGF2b2lkIG92ZXJmbG93aW5n
IHRoZSBjb21tYW5kIGxpbmUuCisgIGFsbF9kZXBzID0gIiIKKyAgZm9yIGkgaW4gcmFuZ2UoMTAw
MSwgbnVtX291dHB1dHMsIDEwMDApOgorICAgIGFsbF9kZXBzICs9ICgiIiIKKyAgaWZuZXEgKCQo
d29yZCAlKHN0YXJ0KWQsJChkX2ZpbGVzKSksKQorICAgICQoc2hlbGwgY2F0ICQod29yZGxpc3Qg
JShzdGFydClkLCUoZW5kKWQsJChkX2ZpbGVzKSkgPj4gJChkZXBzZGlyKS9hbGwuZGVwcykKKyAg
ZW5kaWYiIiIgJSB7ICdzdGFydCc6IGksICdlbmQnOiBpICsgOTk5IH0pCisKKyAgIyBBZGQgYSBj
aGVjayB0byBtYWtlIHN1cmUgd2UgdHJpZWQgdG8gcHJvY2VzcyBhbGwgdGhlIC5kIGZpbGVzLgor
ICBhbGxfZGVwcyArPSAiIiIKKyAgaWZuZXEgKCQod29yZCAlKGxhc3QpZCwkKGRfZmlsZXMpKSwp
CisgICAgJChlcnJvciBGb3VuZCB1bnByb2Nlc3NlZCBkZXBlbmRlbmN5IGZpbGVzIChneXAgZGlk
bid0IGdlbmVyYXRlIGVub3VnaCBydWxlcyEpKQorICBlbmRpZgorIiIiICUgeyAnbGFzdCc6ICgo
bnVtX291dHB1dHMgLyAxMDAwKSArIDEpICogMTAwMCArIDEgfQorCisgIHJvb3RfbWFrZWZpbGUu
d3JpdGUoU0hBUkVEX0ZPT1RFUiAlIHsgJ2dlbmVyYXRlX2FsbF9kZXBzJzogYWxsX2RlcHMgfSkK
KworICByb290X21ha2VmaWxlLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC9weWxpYi9neXAvZ2VuZXJhdG9yL21zdnMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
cHlsaWIvZ3lwL2dlbmVyYXRvci9tc3ZzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3MTUzZTY4Nzg0ZTdlYjEx
ZjVmZThkYTRlNjg0MjQ3NDg2YjI3Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvcHlsaWIvZ3lwL2dlbmVyYXRvci9tc3ZzLnB5CkBAIC0wLDAgKzEsMTU0MSBAQAor
IyEvdXNyL2Jpbi9weXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorCitpbXBvcnQgbnRwYXRoCitpbXBvcnQgcG9zaXhwYXRoCitpbXBvcnQgb3MKK2lt
cG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworaW1wb3J0IGd5cC5NU1ZT
TmV3IGFzIE1TVlNOZXcKK2ltcG9ydCBneXAuTVNWU1Byb2plY3QgYXMgTVNWU1Byb2plY3QKK2lt
cG9ydCBneXAuTVNWU1Rvb2xGaWxlIGFzIE1TVlNUb29sRmlsZQoraW1wb3J0IGd5cC5NU1ZTVXNl
ckZpbGUgYXMgTVNWU1VzZXJGaWxlCitpbXBvcnQgZ3lwLk1TVlNWZXJzaW9uIGFzIE1TVlNWZXJz
aW9uCitpbXBvcnQgZ3lwLk1TVlNTZXR0aW5ncyBhcyBNU1ZTU2V0dGluZ3MKK2ltcG9ydCBneXAu
Y29tbW9uCisKKworIyBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIHZhbGlkYXRpbmcgVmlzdWFsIFN0
dWRpbyBHVUlEcy4gIElmIHRoZSBHVUlECisjIGNvbnRhaW5zIGxvd2VyY2FzZSBoZXggbGV0dGVy
cywgTVNWUyB3aWxsIGJlIGZpbmUuIEhvd2V2ZXIsCisjIEluY3JlZGlCdWlsZCBCdWlsZENvbnNv
bGUgd2lsbCBwYXJzZSB0aGUgc29sdXRpb24gZmlsZSwgYnV0IHRoZW4KKyMgc2lsZW50bHkgc2tp
cCBidWlsZGluZyB0aGUgdGFyZ2V0IGNhdXNpbmcgaGFyZCB0byB0cmFjayBkb3duIGVycm9ycy4K
KyMgTm90ZSB0aGF0IHRoaXMgb25seSBoYXBwZW5zIHdpdGggdGhlIEJ1aWxkQ29uc29sZSwgYW5k
IGRvZXMgbm90IG9jY3VyCisjIGlmIEluY3JlZGlCdWlsZCBpcyBleGVjdXRlZCBmcm9tIGluc2lk
ZSBWaXN1YWwgU3R1ZGlvLiAgVGhpcyByZWdleAorIyB2YWxpZGF0ZXMgdGhhdCB0aGUgc3RyaW5n
IGxvb2tzIGxpa2UgYSBHVUlEIHdpdGggYWxsIHVwcGVyY2FzZSBoZXgKKyMgbGV0dGVycy4KK1ZB
TElEX01TVlNfR1VJRF9DSEFSUyA9IHJlLmNvbXBpbGUoJ15bQS1GMC05XC1dKyQnKQorCisKK2dl
bmVyYXRvcl9kZWZhdWx0X3ZhcmlhYmxlcyA9IHsKKyAgICAnRVhFQ1VUQUJMRV9QUkVGSVgnOiAn
JywKKyAgICAnRVhFQ1VUQUJMRV9TVUZGSVgnOiAnLmV4ZScsCisgICAgJ1NUQVRJQ19MSUJfUFJF
RklYJzogJycsCisgICAgJ1NIQVJFRF9MSUJfUFJFRklYJzogJycsCisgICAgJ1NUQVRJQ19MSUJf
U1VGRklYJzogJy5saWInLAorICAgICdTSEFSRURfTElCX1NVRkZJWCc6ICcuZGxsJywKKyAgICAn
SU5URVJNRURJQVRFX0RJUic6ICckKEludERpciknLAorICAgICdTSEFSRURfSU5URVJNRURJQVRF
X0RJUic6ICckKE91dERpcikvb2JqL2dsb2JhbF9pbnRlcm1lZGlhdGUnLAorICAgICdPUyc6ICd3
aW4nLAorICAgICdQUk9EVUNUX0RJUic6ICckKE91dERpciknLAorICAgICdMSUJfRElSJzogJyQo
T3V0RGlyKS9saWInLAorICAgICdSVUxFX0lOUFVUX1JPT1QnOiAnJChJbnB1dE5hbWUpJywKKyAg
ICAnUlVMRV9JTlBVVF9FWFQnOiAnJChJbnB1dEV4dCknLAorICAgICdSVUxFX0lOUFVUX05BTUUn
OiAnJChJbnB1dEZpbGVOYW1lKScsCisgICAgJ1JVTEVfSU5QVVRfUEFUSCc6ICckKElucHV0UGF0
aCknLAorICAgICdDT05GSUdVUkFUSU9OX05BTUUnOiAnJChDb25maWd1cmF0aW9uTmFtZSknLAor
fQorCisKKyMgVGhlIG1zdnMgc3BlY2lmaWMgc2VjdGlvbnMgdGhhdCBob2xkIHBhdGhzCitnZW5l
cmF0b3JfYWRkaXRpb25hbF9wYXRoX3NlY3Rpb25zID0gWworICAgICdtc3ZzX2N5Z3dpbl9kaXJz
JywKKyAgICAnbXN2c19wcm9wcycsCitdCisKK2dlbmVyYXRvcl9hZGRpdGlvbmFsX25vbl9jb25m
aWd1cmF0aW9uX2tleXMgPSBbCisgICAgJ21zdnNfY3lnd2luX2RpcnMnLAorICAgICdtc3ZzX2N5
Z3dpbl9zaGVsbCcsCitdCisKKyMgTGlzdCBvZiBwcmVjb21waWxlZCBoZWFkZXIgcmVsYXRlZCBr
ZXlzLgorcHJlY29tcF9rZXlzID0gWworICAgICdtc3ZzX3ByZWNvbXBpbGVkX2hlYWRlcicsCisg
ICAgJ21zdnNfcHJlY29tcGlsZWRfc291cmNlJywKK10KKworY2FjaGVkX3VzZXJuYW1lID0gTm9u
ZQorY2FjaGVkX2RvbWFpbiA9IE5vbmUKKworIyBUT0RPKGdzcGVuY2VyKTogU3dpdGNoIHRoZSBv
cy5lbnZpcm9uIGNhbGxzIHRvIGJlCisjIHdpbjMyYXBpLkdldERvbWFpbk5hbWUoKSBhbmQgd2lu
MzJhcGkuR2V0VXNlck5hbWUoKSBvbmNlIHRoZQorIyBweXRob24gdmVyc2lvbiBpbiBkZXBvdF90
b29scyBoYXMgYmVlbiB1cGRhdGVkIHRvIHdvcmsgb24gVmlzdGEKKyMgNjQtYml0LgorZGVmIF9H
ZXREb21haW5BbmRVc2VyTmFtZSgpOgorICBpZiBzeXMucGxhdGZvcm0gbm90IGluICgnd2luMzIn
LCAnY3lnd2luJyk6CisgICAgcmV0dXJuICgnRE9NQUlOJywgJ1VTRVJOQU1FJykKKyAgZ2xvYmFs
IGNhY2hlZF91c2VybmFtZQorICBnbG9iYWwgY2FjaGVkX2RvbWFpbgorICBpZiBub3QgY2FjaGVk
X2RvbWFpbiBvciBub3QgY2FjaGVkX3VzZXJuYW1lOgorICAgIGRvbWFpbiA9IG9zLmVudmlyb24u
Z2V0KCdVU0VSRE9NQUlOJykKKyAgICB1c2VybmFtZSA9IG9zLmVudmlyb24uZ2V0KCdVU0VSTkFN
RScpCisgICAgaWYgbm90IGRvbWFpbiBvciBub3QgdXNlcm5hbWU6CisgICAgICBjYWxsID0gc3Vi
cHJvY2Vzcy5Qb3BlbihbJ25ldCcsICdjb25maWcnLCAnV29ya3N0YXRpb24nXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgIGNv
bmZpZyA9IGNhbGwuY29tbXVuaWNhdGUoKVswXQorICAgICAgdXNlcm5hbWVfcmUgPSByZS5jb21w
aWxlKCdeVXNlciBuYW1lXHMrKFxTKyknLCByZS5NVUxUSUxJTkUpCisgICAgICB1c2VybmFtZV9t
YXRjaCA9IHVzZXJuYW1lX3JlLnNlYXJjaChjb25maWcpCisgICAgICBpZiB1c2VybmFtZV9tYXRj
aDoKKyAgICAgICAgdXNlcm5hbWUgPSB1c2VybmFtZV9tYXRjaC5ncm91cCgxKQorICAgICAgZG9t
YWluX3JlID0gcmUuY29tcGlsZSgnXkxvZ29uIGRvbWFpblxzKyhcUyspJywgcmUuTVVMVElMSU5F
KQorICAgICAgZG9tYWluX21hdGNoID0gZG9tYWluX3JlLnNlYXJjaChjb25maWcpCisgICAgICBp
ZiBkb21haW5fbWF0Y2g6CisgICAgICAgIGRvbWFpbiA9IGRvbWFpbl9tYXRjaC5ncm91cCgxKQor
ICAgIGNhY2hlZF9kb21haW4gPSBkb21haW4KKyAgICBjYWNoZWRfdXNlcm5hbWUgPSB1c2VybmFt
ZQorICByZXR1cm4gKGNhY2hlZF9kb21haW4sIGNhY2hlZF91c2VybmFtZSkKKworZml4cGF0aF9w
cmVmaXggPSBOb25lCisKKworZGVmIF9Ob3JtYWxpemVkU291cmNlKHNvdXJjZSk6CisgICIiIiBO
b3JtYWxpemUgdGhlIHBhdGguCisKKyAgQnV0IG5vdCBpZiB0aGF0IGdldHMgcmlkIG9mIGEgdmFy
aWFibGUsIGFzIHRoaXMgbWF5IGV4cGFuZCB0byBzb21ldGhpbmcKKyAgbGFyZ2VyIHRoYW4gb25l
IGRpcmVjdG9yeS4KKyAgIiIiCisgIG5vcm1hbGl6ZWQgPSBvcy5wYXRoLm5vcm1wYXRoKHNvdXJj
ZSkKKyAgaWYgc291cmNlLmNvdW50KCckJykgPT0gbm9ybWFsaXplZC5jb3VudCgnJCcpOgorICAg
IHNvdXJjZSA9IG5vcm1hbGl6ZWQKKyAgcmV0dXJuIHNvdXJjZQorCisKK2RlZiBfRml4UGF0aChw
YXRoKToKKyAgIiIiQ29udmVydCBwYXRocyB0byBhIGZvcm0gdGhhdCB3aWxsIG1ha2Ugc2Vuc2Ug
aW4gYSB2Y3Byb2ogZmlsZS4KKworICBBcmd1bWVudHM6CisgICAgcGF0aDogVGhlIHBhdGggdG8g
Y29udmVydCwgbWF5IGNvbnRhaW4gLyBldGMuCisgIFJldHVybnM6CisgICAgVGhlIHBhdGggd2l0
aCBhbGwgc2xhc2hlcyBtYWRlIGludG8gYmFja3NsYXNoZXMuCisgICIiIgorICBpZiBmaXhwYXRo
X3ByZWZpeCBhbmQgcGF0aCBhbmQgbm90IG9zLnBhdGguaXNhYnMocGF0aCkgYW5kIG5vdCBwYXRo
WzBdID09ICckJzoKKyAgICBwYXRoID0gb3MucGF0aC5qb2luKGZpeHBhdGhfcHJlZml4LCBwYXRo
KQorICBwYXRoID0gcGF0aC5yZXBsYWNlKCcvJywgJ1xcJykKKyAgcGF0aCA9IF9Ob3JtYWxpemVk
U291cmNlKHBhdGgpCisgIGlmIGxlbihwYXRoKSA+IDAgYW5kIHBhdGhbLTFdID09ICdcXCc6Cisg
ICAgcGF0aCA9IHBhdGhbOi0xXQorICByZXR1cm4gcGF0aAorCisKK2RlZiBfQ29udmVydFNvdXJj
ZXNUb0ZpbHRlckhpZXJhcmNoeShzb3VyY2VzLCBwcmVmaXg9Tm9uZSwgZXhjbHVkZWQ9Tm9uZSk6
CisgICIiIkNvbnZlcnRzIGEgbGlzdCBzcGxpdCBzb3VyY2UgZmlsZSBwYXRocyBpbnRvIGEgdmNw
cm9qIGZvbGRlciBoaWVyYXJjaHkuCisKKyAgQXJndW1lbnRzOgorICAgIHNvdXJjZXM6IEEgbGlz
dCBvZiBzb3VyY2UgZmlsZSBwYXRocyBzcGxpdC4KKyAgICBwcmVmaXg6IEEgbGlzdCBvZiBzb3Vy
Y2UgZmlsZSBwYXRoIGxheWVycyBtZWFudCB0byBhcHBseSB0byBlYWNoIG9mIHNvdXJjZXMuCisg
IFJldHVybnM6CisgICAgQSBoaWVyYXJjaHkgb2YgZmlsZW5hbWVzIGFuZCBNU1ZTUHJvamVjdC5G
aWx0ZXIgb2JqZWN0cyB0aGF0IG1hdGNoZXMgdGhlCisgICAgbGF5b3V0IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KKyAgICBGb3IgZXhhbXBsZToKKyAgICBfQ29udmVydFNvdXJjZXNUb0ZpbHRlckhpZXJh
cmNoeShbWydhJywgJ2JvYjEuYyddLCBbJ2InLCAnYm9iMi5jJ11dLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByZWZpeD1bJ2pvZSddKQorICAgIC0tPgorICAgIFtNU1ZT
UHJvamVjdC5GaWx0ZXIoJ2EnLCBjb250ZW50cz1bJ2pvZVxcYVxcYm9iMS5jJ10pLAorICAgICBN
U1ZTUHJvamVjdC5GaWx0ZXIoJ2InLCBjb250ZW50cz1bJ2pvZVxcYlxcYm9iMi5jJ10pXQorICAi
IiIKKyAgaWYgbm90IHByZWZpeDogcHJlZml4ID0gW10KKyAgcmVzdWx0ID0gW10KKyAgZXhjbHVk
ZWRfcmVzdWx0ID0gW10KKyAgZm9sZGVycyA9IGRpY3QoKQorICAjIEdhdGhlciBmaWxlcyBpbnRv
IHRoZSBmaW5hbCByZXN1bHQsIGV4Y2x1ZGVkLCBvciBmb2xkZXJzLgorICBmb3IgcyBpbiBzb3Vy
Y2VzOgorICAgIGlmIGxlbihzKSA9PSAxOgorICAgICAgZmlsZW5hbWUgPSBfTm9ybWFsaXplZFNv
dXJjZSgnXFwnLmpvaW4ocHJlZml4ICsgcykpCisgICAgICBpZiBmaWxlbmFtZSBpbiBleGNsdWRl
ZDoKKyAgICAgICAgZXhjbHVkZWRfcmVzdWx0LmFwcGVuZChmaWxlbmFtZSkKKyAgICAgIGVsc2U6
CisgICAgICAgIHJlc3VsdC5hcHBlbmQoZmlsZW5hbWUpCisgICAgZWxzZToKKyAgICAgIGlmIG5v
dCBmb2xkZXJzLmdldChzWzBdKToKKyAgICAgICAgZm9sZGVyc1tzWzBdXSA9IFtdCisgICAgICBm
b2xkZXJzW3NbMF1dLmFwcGVuZChzWzE6XSkKKyAgIyBBZGQgYSBmb2xkZXIgZm9yIGV4Y2x1ZGVk
IGZpbGVzLgorICBpZiBleGNsdWRlZF9yZXN1bHQ6CisgICAgZXhjbHVkZWRfZm9sZGVyID0gTVNW
U1Byb2plY3QuRmlsdGVyKCdfZXhjbHVkZWRfZmlsZXMnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZW50cz1leGNsdWRlZF9yZXN1bHQpCisgICAgcmVzdWx0
LmFwcGVuZChleGNsdWRlZF9mb2xkZXIpCisgICMgUG9wdWxhdGUgYWxsIHRoZSBmb2xkZXJzLgor
ICBmb3IgZiBpbiBmb2xkZXJzOgorICAgIGNvbnRlbnRzID0gX0NvbnZlcnRTb3VyY2VzVG9GaWx0
ZXJIaWVyYXJjaHkoZm9sZGVyc1tmXSwgcHJlZml4PXByZWZpeCArIFtmXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZWQ9ZXhjbHVkZWQpCisgICAgY29udGVudHMgPSBN
U1ZTUHJvamVjdC5GaWx0ZXIoZiwgY29udGVudHM9Y29udGVudHMpCisgICAgcmVzdWx0LmFwcGVu
ZChjb250ZW50cykKKworICByZXR1cm4gcmVzdWx0CisKKworZGVmIF9Ub29sQXBwZW5kKHRvb2xz
LCB0b29sX25hbWUsIHNldHRpbmcsIHZhbHVlLCBvbmx5X2lmX3Vuc2V0PUZhbHNlKToKKyAgaWYg
bm90IHZhbHVlOiByZXR1cm4KKyAgIyBUT0RPKGJyYWRuZWxzb24pOiB1Z2x5IGhhY2ssIGZpeCB0
aGlzIG1vcmUgZ2VuZXJhbGx5ISEhCisgIGlmICdEaXJlY3RvcmllcycgaW4gc2V0dGluZyBvciAn
RGVwZW5kZW5jaWVzJyBpbiBzZXR0aW5nOgorICAgIGlmIHR5cGUodmFsdWUpID09IHN0cjoKKyAg
ICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnLycsICdcXCcpCisgICAgZWxzZToKKyAgICAgIHZh
bHVlID0gW2kucmVwbGFjZSgnLycsICdcXCcpIGZvciBpIGluIHZhbHVlXQorICBpZiBub3QgdG9v
bHMuZ2V0KHRvb2xfbmFtZSk6CisgICAgdG9vbHNbdG9vbF9uYW1lXSA9IGRpY3QoKQorICB0b29s
ID0gdG9vbHNbdG9vbF9uYW1lXQorICBpZiB0b29sLmdldChzZXR0aW5nKToKKyAgICBpZiBvbmx5
X2lmX3Vuc2V0OiByZXR1cm4KKyAgICBpZiB0eXBlKHRvb2xbc2V0dGluZ10pID09IGxpc3Q6Cisg
ICAgICB0b29sW3NldHRpbmddICs9IHZhbHVlCisgICAgZWxzZToKKyAgICAgIHJhaXNlIFR5cGVF
cnJvcigKKyAgICAgICAgICAnQXBwZW5kaW5nICIlcyIgdG8gYSBub24tbGlzdCBzZXR0aW5nICIl
cyIgZm9yIHRvb2wgIiVzIiBpcyAnCisgICAgICAgICAgJ25vdCBhbGxvd2VkLCBwcmV2aW91cyB2
YWx1ZTogJXMnICUgKAorICAgICAgICAgICAgICB2YWx1ZSwgc2V0dGluZywgdG9vbF9uYW1lLCBz
dHIodG9vbFtzZXR0aW5nXSkpKQorICBlbHNlOgorICAgIHRvb2xbc2V0dGluZ10gPSB2YWx1ZQor
CisKK2RlZiBfQ29uZmlnUGxhdGZvcm0oY29uZmlnX2RhdGEpOgorICByZXR1cm4gY29uZmlnX2Rh
dGEuZ2V0KCdtc3ZzX2NvbmZpZ3VyYXRpb25fcGxhdGZvcm0nLCAnV2luMzInKQorCisKK2RlZiBf
Q29uZmlnQmFzZU5hbWUoY29uZmlnX25hbWUsIHBsYXRmb3JtX25hbWUpOgorICBpZiBjb25maWdf
bmFtZS5lbmRzd2l0aCgnXycgKyBwbGF0Zm9ybV9uYW1lKToKKyAgICByZXR1cm4gY29uZmlnX25h
bWVbMDotbGVuKHBsYXRmb3JtX25hbWUpLTFdCisgIGVsc2U6CisgICAgcmV0dXJuIGNvbmZpZ19u
YW1lCisKKworZGVmIF9Db25maWdGdWxsTmFtZShjb25maWdfbmFtZSwgY29uZmlnX2RhdGEpOgor
ICBwbGF0Zm9ybV9uYW1lID0gX0NvbmZpZ1BsYXRmb3JtKGNvbmZpZ19kYXRhKQorICByZXR1cm4g
JyVzfCVzJyAlIChfQ29uZmlnQmFzZU5hbWUoY29uZmlnX25hbWUsIHBsYXRmb3JtX25hbWUpLCBw
bGF0Zm9ybV9uYW1lKQorCisKK2RlZiBfQnVpbGRDb21tYW5kTGluZUZvclJ1bGVSYXcoc3BlYywg
Y21kLCBjeWd3aW5fc2hlbGwsIGhhc19pbnB1dF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBxdW90ZV9jbWQpOgorICBpZiBjeWd3aW5fc2hlbGw6CisgICAgIyBGaW5kIHBh
dGggdG8gY3lnd2luLgorICAgIGN5Z3dpbl9kaXIgPSBfRml4UGF0aChzcGVjLmdldCgnbXN2c19j
eWd3aW5fZGlycycsIFsnLiddKVswXSkKKyAgICAjIFByZXBhcmUgY29tbWFuZC4KKyAgICBkaXJl
Y3RfY21kID0gY21kCisgICAgZGlyZWN0X2NtZCA9IFtpLnJlcGxhY2UoJyQoSW50RGlyKScsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2BjeWdwYXRoIC1tICIke0lOVERJUn0iYCcpIGZv
ciBpIGluIGRpcmVjdF9jbWRdCisgICAgZGlyZWN0X2NtZCA9IFtpLnJlcGxhY2UoJyQoT3V0RGly
KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2BjeWdwYXRoIC1tICIke09VVERJUn0i
YCcpIGZvciBpIGluIGRpcmVjdF9jbWRdCisgICAgaWYgaGFzX2lucHV0X3BhdGg6CisgICAgICBk
aXJlY3RfY21kID0gW2kucmVwbGFjZSgnJChJbnB1dFBhdGgpJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdgY3lncGF0aCAtbSAiJHtJTlBVVFBBVEh9ImAnKQorICAgICAgICAgICAg
ICAgICAgICBmb3IgaSBpbiBkaXJlY3RfY21kXQorICAgIGRpcmVjdF9jbWQgPSBbJyIlcyInICUg
aSBmb3IgaSBpbiBkaXJlY3RfY21kXQorICAgIGRpcmVjdF9jbWQgPSBbaS5yZXBsYWNlKCciJywg
J1xcIicpIGZvciBpIGluIGRpcmVjdF9jbWRdCisgICAgI2RpcmVjdF9jbWQgPSBneXAuY29tbW9u
LkVuY29kZVBPU0lYU2hlbGxMaXN0KGRpcmVjdF9jbWQpCisgICAgZGlyZWN0X2NtZCA9ICcgJy5q
b2luKGRpcmVjdF9jbWQpCisgICAgIyBUT0RPKHF1b3RlKTogIHJlZ3VsYXJpemUgcXVvdGluZyBw
YXRoIG5hbWVzIHRocm91Z2hvdXQgdGhlIG1vZHVsZQorICAgIGNtZCA9ICgKKyAgICAgICdjYWxs
ICIkKFByb2plY3REaXIpJShjeWd3aW5fZGlyKXNcXHNldHVwX2Vudi5iYXQiICYmICcKKyAgICAg
ICdzZXQgQ1lHV0lOPW5vbnRzZWMmJiAnKQorICAgIGlmIGRpcmVjdF9jbWQuZmluZCgnTlVNQkVS
X09GX1BST0NFU1NPUlMnKSA+PSAwOgorICAgICAgY21kICs9ICdzZXQgL2EgTlVNQkVSX09GX1BS
T0NFU1NPUlNfUExVU18xPSUlTlVNQkVSX09GX1BST0NFU1NPUlMlJSsxJiYgJworICAgIGlmIGRp
cmVjdF9jbWQuZmluZCgnSU5URElSJykgPj0gMDoKKyAgICAgIGNtZCArPSAnc2V0IElOVERJUj0k
KEludERpcikmJiAnCisgICAgaWYgZGlyZWN0X2NtZC5maW5kKCdPVVRESVInKSA+PSAwOgorICAg
ICAgY21kICs9ICdzZXQgT1VURElSPSQoT3V0RGlyKSYmICcKKyAgICBpZiBoYXNfaW5wdXRfcGF0
aCBhbmQgZGlyZWN0X2NtZC5maW5kKCdJTlBVVFBBVEgnKSA+PSAwOgorICAgICAgY21kICs9ICdz
ZXQgSU5QVVRQQVRIPSQoSW5wdXRQYXRoKSAmJiAnCisgICAgY21kICs9ICgKKyAgICAgICdiYXNo
IC1jICIlKGNtZClzIicpCisgICAgY21kID0gY21kICUgeydjeWd3aW5fZGlyJzogY3lnd2luX2Rp
ciwKKyAgICAgICAgICAgICAgICAgJ2NtZCc6IGRpcmVjdF9jbWR9CisgICAgcmV0dXJuIGNtZAor
ICBlbHNlOgorICAgICMgQ29udmVydCBjYXQgLS0+IHR5cGUgdG8gbWltaWMgdW5peC4KKyAgICBp
ZiBjbWRbMF0gPT0gJ2NhdCc6CisgICAgICBjb21tYW5kID0gWyd0eXBlJ10KKyAgICBlbHNlOgor
ICAgICAgY29tbWFuZCA9IFtjbWRbMF0ucmVwbGFjZSgnLycsICdcXCcpXQorICAgICMgRml4IHRo
ZSBwYXRocworICAgICMgSWYgdGhlIGFyZ3VtZW50IHN0YXJ0cyB3aXRoIGEgc2xhc2gsIGl0J3Mg
cHJvYmFibHkgYSBjb21tYW5kIGxpbmUgc3dpdGNoCisgICAgYXJndW1lbnRzID0gW2kuc3RhcnRz
d2l0aCgnLycpIGFuZCBpIG9yIF9GaXhQYXRoKGkpIGZvciBpIGluIGNtZFsxOl1dCisgICAgaWYg
cXVvdGVfY21kOgorICAgICAgIyBTdXBwb3J0IGEgbW9kZSBmb3IgdXNpbmcgY21kIGRpcmVjdGx5
LgorICAgICAgIyBDb252ZXJ0IGFueSBwYXRocyB0byBuYXRpdmUgZm9ybSAoZmlyc3QgZWxlbWVu
dCBpcyB1c2VkIGRpcmVjdGx5KS4KKyAgICAgICMgVE9ETyhxdW90ZSk6ICByZWd1bGFyaXplIHF1
b3RpbmcgcGF0aCBuYW1lcyB0aHJvdWdob3V0IHRoZSBtb2R1bGUKKyAgICAgIGFyZ3VtZW50cyA9
IFsnIiVzIicgJSBpIGZvciBpIGluIGFyZ3VtZW50c10KKyAgICAjIENvbGxhcHNlIGludG8gYSBz
aW5nbGUgY29tbWFuZC4KKyAgICByZXR1cm4gJyAnLmpvaW4oY29tbWFuZCArIGFyZ3VtZW50cykK
KworCitkZWYgX0J1aWxkQ29tbWFuZExpbmVGb3JSdWxlKHNwZWMsIHJ1bGUsIGhhc19pbnB1dF9w
YXRoKToKKyAgIyBGaW5kIHBhdGggdG8gY3lnd2luLgorICBjeWd3aW5fZGlyID0gX0ZpeFBhdGgo
c3BlYy5nZXQoJ21zdnNfY3lnd2luX2RpcnMnLCBbJy4nXSlbMF0pCisKKyAgIyBDdXJyZW50bHkg
dGhpcyB3ZWlyZCBhcmd1bWVudCBtdW5naW5nIGlzIHVzZWQgdG8gZHVwbGljYXRlIHRoZSB3YXkg
YQorICAjIHB5dGhvbiBzY3JpcHQgd291bGQgbmVlZCB0byBiZSBydW4gYXMgcGFydCBvZiB0aGUg
Y2hyb21lIHRyZWUuCisgICMgRXZlbnR1YWxseSB3ZSBzaG91bGQgYWRkIHNvbWUgc29ydCBvZiBy
dWxlX2RlZmF1bHQgb3B0aW9uIHRvIHNldCB0aGlzCisgICMgcGVyIHByb2plY3QuIEZvciBub3cg
dGhlIGJlaGF2aW9yIGNocm9tZSBuZWVkcyBpcyB0aGUgZGVmYXVsdC4KKyAgbWNzID0gcnVsZS5n
ZXQoJ21zdnNfY3lnd2luX3NoZWxsJykKKyAgaWYgbWNzIGlzIE5vbmU6CisgICAgbWNzID0gaW50
KHNwZWMuZ2V0KCdtc3ZzX2N5Z3dpbl9zaGVsbCcsIDEpKQorICBlbGlmIGlzaW5zdGFuY2UobWNz
LCBzdHIpOgorICAgIG1jcyA9IGludChtY3MpCisgIHF1b3RlX2NtZCA9IGludChydWxlLmdldCgn
bXN2c19xdW90ZV9jbWQnLCAxKSkKKyAgcmV0dXJuIF9CdWlsZENvbW1hbmRMaW5lRm9yUnVsZVJh
dyhzcGVjLCBydWxlWydhY3Rpb24nXSwgbWNzLCBoYXNfaW5wdXRfcGF0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZV9jbWQpCisKKworZGVmIF9BZGRBY3Rpb25T
dGVwKGFjdGlvbnNfZGljdCwgaW5wdXRzLCBvdXRwdXRzLCBkZXNjcmlwdGlvbiwgY29tbWFuZCk6
CisgICIiIk1lcmdlIGFjdGlvbiBpbnRvIGFuIGV4aXN0aW5nIGxpc3Qgb2YgYWN0aW9ucy4KKwor
ICBDYXJlIG11c3QgYmUgdGFrZW4gc28gdGhhdCBhY3Rpb25zIHdoaWNoIGhhdmUgb3ZlcmxhcHBp
bmcgaW5wdXRzIGVpdGhlciBkb24ndAorICBnZXQgYXNzaWduZWQgdG8gdGhlIHNhbWUgaW5wdXQs
IG9yIGdldCBjb2xsYXBzZWQgaW50byBvbmUuCisKKyAgQXJndW1lbnRzOgorICAgIGFjdGlvbnNf
ZGljdDogZGljdGlvbmFyeSBrZXllZCBvbiBpbnB1dCBuYW1lLCB3aGljaCBtYXBzIHRvIGEgbGlz
dCBvZgorICAgICAgZGljdHMgZGVzY3JpYmluZyB0aGUgYWN0aW9ucyBhdHRhY2hlZCB0byB0aGF0
IGlucHV0IGZpbGUuCisgICAgaW5wdXRzOiBsaXN0IG9mIGlucHV0cworICAgIG91dHB1dHM6IGxp
c3Qgb2Ygb3V0cHV0cworICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiBvZiB0aGUgYWN0aW9u
CisgICAgY29tbWFuZDogY29tbWFuZCBsaW5lIHRvIGV4ZWN1dGUKKyAgIiIiCisgICMgUmVxdWly
ZSB0aGVyZSB0byBiZSBhdCBsZWFzdCBvbmUgaW5wdXQgKGNhbGwgc2l0ZXMgd2lsbCBlbnN1cmUg
dGhpcykuCisgIGFzc2VydCBpbnB1dHMKKworICBhY3Rpb24gPSB7CisgICAgICAnaW5wdXRzJzog
aW5wdXRzLAorICAgICAgJ291dHB1dHMnOiBvdXRwdXRzLAorICAgICAgJ2Rlc2NyaXB0aW9uJzog
ZGVzY3JpcHRpb24sCisgICAgICAnY29tbWFuZCc6IGNvbW1hbmQsCisgIH0KKworICAjIFBpY2sg
d2hlcmUgdG8gc3RpY2sgdGhpcyBhY3Rpb24uCisgICMgV2hpbGUgbGVzcyB0aGFuIG9wdGltYWwg
aW4gdGVybXMgb2YgYnVpbGQgdGltZSwgYXR0YWNoIHRoZW0gdG8gdGhlIGZpcnN0CisgICMgaW5w
dXQgZm9yIG5vdy4KKyAgY2hvc2VuX2lucHV0ID0gaW5wdXRzWzBdCisKKyAgIyBBZGQgaXQgdGhl
cmUuCisgIGlmIGNob3Nlbl9pbnB1dCBub3QgaW4gYWN0aW9uc19kaWN0OgorICAgIGFjdGlvbnNf
ZGljdFtjaG9zZW5faW5wdXRdID0gW10KKyAgYWN0aW9uc19kaWN0W2Nob3Nlbl9pbnB1dF0uYXBw
ZW5kKGFjdGlvbikKKworCitkZWYgX0FkZEN1c3RvbUJ1aWxkVG9vbEZvck1TVlMocCwgc3BlYywg
cHJpbWFyeV9pbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHMsIG91
dHB1dHMsIGRlc2NyaXB0aW9uLCBjbWQpOgorICAiIiJBZGQgYSBjdXN0b20gYnVpbGQgdG9vbCB0
byBleGVjdXRlIHNvbWV0aGluZy4KKworICBBcmd1bWVudHM6CisgICAgcDogdGhlIHRhcmdldCBw
cm9qZWN0CisgICAgc3BlYzogdGhlIHRhcmdldCBwcm9qZWN0IGRpY3QKKyAgICBwcmltYXJ5X2lu
cHV0OiBpbnB1dCBmaWxlIHRvIGF0dGFjaCB0aGUgYnVpbGQgdG9vbCB0bworICAgIGlucHV0czog
bGlzdCBvZiBpbnB1dHMKKyAgICBvdXRwdXRzOiBsaXN0IG9mIG91dHB1dHMKKyAgICBkZXNjcmlw
dGlvbjogZGVzY3JpcHRpb24gb2YgdGhlIGFjdGlvbgorICAgIGNtZDogY29tbWFuZCBsaW5lIHRv
IGV4ZWN1dGUKKyAgIiIiCisgIGlucHV0cyA9IFtfRml4UGF0aChpKSBmb3IgaSBpbiBpbnB1dHNd
CisgIG91dHB1dHMgPSBbX0ZpeFBhdGgoaSkgZm9yIGkgaW4gb3V0cHV0c10KKyAgdG9vbCA9IE1T
VlNQcm9qZWN0LlRvb2woCisgICAgICAnVkNDdXN0b21CdWlsZFRvb2wnLCB7CisgICAgICAnRGVz
Y3JpcHRpb24nOiBkZXNjcmlwdGlvbiwKKyAgICAgICdBZGRpdGlvbmFsRGVwZW5kZW5jaWVzJzog
JzsnLmpvaW4oaW5wdXRzKSwKKyAgICAgICdPdXRwdXRzJzogJzsnLmpvaW4ob3V0cHV0cyksCisg
ICAgICAnQ29tbWFuZExpbmUnOiBjbWQsCisgICAgICB9KQorICAjIEFkZCB0byB0aGUgcHJvcGVy
dGllcyBvZiBwcmltYXJ5IGlucHV0IGZvciBlYWNoIGNvbmZpZy4KKyAgZm9yIGNvbmZpZ19uYW1l
LCBjX2RhdGEgaW4gc3BlY1snY29uZmlndXJhdGlvbnMnXS5pdGVyaXRlbXMoKToKKyAgICBwLkFk
ZEZpbGVDb25maWcoX0ZpeFBhdGgocHJpbWFyeV9pbnB1dCksCisgICAgICAgICAgICAgICAgICAg
IF9Db25maWdGdWxsTmFtZShjb25maWdfbmFtZSwgY19kYXRhKSwgdG9vbHM9W3Rvb2xdKQorCisK
K2RlZiBfQWRkQWNjdW11bGF0ZWRBY3Rpb25zVG9NU1ZTKHAsIHNwZWMsIGFjdGlvbnNfZGljdCk6
CisgICIiIkFkZCBhY3Rpb25zIGFjY3VtdWxhdGVkIGludG8gYW4gYWN0aW9uc19kaWN0LCBtZXJn
aW5nIGFzIG5lZWRlZC4KKworICBBcmd1bWVudHM6CisgICAgcDogdGhlIHRhcmdldCBwcm9qZWN0
CisgICAgc3BlYzogdGhlIHRhcmdldCBwcm9qZWN0IGRpY3QKKyAgICBhY3Rpb25zX2RpY3Q6IGRp
Y3Rpb25hcnkga2V5ZWQgb24gaW5wdXQgbmFtZSwgd2hpY2ggbWFwcyB0byBhIGxpc3Qgb2YKKyAg
ICAgICAgZGljdHMgZGVzY3JpYmluZyB0aGUgYWN0aW9ucyBhdHRhY2hlZCB0byB0aGF0IGlucHV0
IGZpbGUuCisgICIiIgorICBmb3IgaW5wdXQgaW4gYWN0aW9uc19kaWN0OgorICAgIGlucHV0cyA9
IHNldCgpCisgICAgb3V0cHV0cyA9IHNldCgpCisgICAgZGVzY3JpcHRpb25zID0gW10KKyAgICBj
b21tYW5kcyA9IFtdCisgICAgZm9yIGFjdGlvbiBpbiBhY3Rpb25zX2RpY3RbaW5wdXRdOgorICAg
ICAgaW5wdXRzLnVwZGF0ZShzZXQoYWN0aW9uWydpbnB1dHMnXSkpCisgICAgICBvdXRwdXRzLnVw
ZGF0ZShzZXQoYWN0aW9uWydvdXRwdXRzJ10pKQorICAgICAgZGVzY3JpcHRpb25zLmFwcGVuZChh
Y3Rpb25bJ2Rlc2NyaXB0aW9uJ10pCisgICAgICBjb21tYW5kcy5hcHBlbmQoYWN0aW9uWydjb21t
YW5kJ10pCisgICAgIyBBZGQgdGhlIGN1c3RvbSBidWlsZCBzdGVwIGZvciBvbmUgaW5wdXQgZmls
ZS4KKyAgICBkZXNjcmlwdGlvbiA9ICcsIGFuZCBhbHNvICcuam9pbihkZXNjcmlwdGlvbnMpCisg
ICAgY29tbWFuZCA9ICdcclxuJy5qb2luKGNvbW1hbmRzKQorICAgIF9BZGRDdXN0b21CdWlsZFRv
b2xGb3JNU1ZTKHAsIHNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFy
eV9pbnB1dD1pbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM9aW5w
dXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dHM9b3V0cHV0cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQ9Y29tbWFuZCkKKworCitkZWYgX1J1bGVF
eHBhbmRQYXRoKHBhdGgsIGlucHV0X2ZpbGUpOgorICAiIiJHaXZlbiB0aGUgaW5wdXQgZmlsZSB0
byB3aGljaCBhIHJ1bGUgYXBwbGllZCwgc3RyaW5nIHN1YnN0aXR1dGUgYSBwYXRoLgorCisgIEFy
Z3VtZW50czoKKyAgICBwYXRoOiBhIHBhdGggdG8gc3RyaW5nIGV4cGFuZAorICAgIGlucHV0X2Zp
bGU6IHRoZSBmaWxlIHRvIHdoaWNoIHRoZSBydWxlIGFwcGxpZWQuCisgIFJldHVybnM6CisgICAg
VGhlIHN0cmluZyBzdWJzdGl0dXRlZCBwYXRoLgorICAiIiIKKyAgcGF0aCA9IHBhdGgucmVwbGFj
ZSgnJChJbnB1dE5hbWUpJywKKyAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLnNwbGl0ZXh0
KG9zLnBhdGguc3BsaXQoaW5wdXRfZmlsZSlbMV0pWzBdKQorICBwYXRoID0gcGF0aC5yZXBsYWNl
KCckKElucHV0RXh0KScsCisgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5zcGxpdGV4dChv
cy5wYXRoLnNwbGl0KGlucHV0X2ZpbGUpWzFdKVsxXSkKKyAgcGF0aCA9IHBhdGgucmVwbGFjZSgn
JChJbnB1dEZpbGVOYW1lKScsIG9zLnBhdGguc3BsaXQoaW5wdXRfZmlsZSlbMV0pCisgIHBhdGgg
PSBwYXRoLnJlcGxhY2UoJyQoSW5wdXRQYXRoKScsIGlucHV0X2ZpbGUpCisgIHJldHVybiBwYXRo
CisKKworZGVmIF9GaW5kUnVsZVRyaWdnZXJGaWxlcyhydWxlLCBzb3VyY2VzKToKKyAgIiIiRmlu
ZCB0aGUgbGlzdCBvZiBmaWxlcyB3aGljaCBhIHBhcnRpY3VsYXIgcnVsZSBhcHBsaWVzIHRvLgor
CisgIEFyZ3VtZW50czoKKyAgICBydWxlOiB0aGUgcnVsZSBpbiBxdWVzdGlvbgorICAgIHNvdXJj
ZXM6IHRoZSBzZXQgb2YgYWxsIGtub3duIHNvdXJjZSBmaWxlcyBmb3IgdGhpcyBwcm9qZWN0Cisg
IFJldHVybnM6CisgICAgVGhlIGxpc3Qgb2Ygc291cmNlcyB0aGF0IHRyaWdnZXIgYSBwYXJ0aWN1
bGFyIHJ1bGUuCisgICIiIgorICBydWxlX2V4dCA9IHJ1bGVbJ2V4dGVuc2lvbiddCisgIHJldHVy
biBbcyBmb3IgcyBpbiBzb3VyY2VzIGlmIHMuZW5kc3dpdGgoJy4nICsgcnVsZV9leHQpXQorCisK
K2RlZiBfUnVsZUlucHV0c0FuZE91dHB1dHMocnVsZSwgdHJpZ2dlcl9maWxlKToKKyAgIiIiRmlu
ZCB0aGUgaW5wdXRzIGFuZCBvdXRwdXRzIGdlbmVyYXRlZCBieSBhIHJ1bGUuCisKKyAgQXJndW1l
bnRzOgorICAgIHJ1bGU6IHRoZSBydWxlIGluIHF1ZXN0aW9uCisgICAgc291cmNlczogdGhlIHNl
dCBvZiBhbGwga25vd24gc291cmNlIGZpbGVzIGZvciB0aGlzIHByb2plY3QKKyAgUmV0dXJuczoK
KyAgICBUaGUgcGFpciBvZiAoaW5wdXRzLCBvdXRwdXRzKSBpbnZvbHZlZCBpbiB0aGlzIHJ1bGUu
CisgICIiIgorICByYXdfaW5wdXRzID0gW19GaXhQYXRoKGkpIGZvciBpIGluIHJ1bGUuZ2V0KCdp
bnB1dHMnLCBbXSldCisgIHJhd19vdXRwdXRzID0gW19GaXhQYXRoKGkpIGZvciBpIGluIHJ1bGUu
Z2V0KCdvdXRwdXRzJywgW10pXQorICBpbnB1dHMgPSBzZXQoKQorICBvdXRwdXRzID0gc2V0KCkK
KyAgaW5wdXRzLmFkZCh0cmlnZ2VyX2ZpbGUpCisgIGZvciBpIGluIHJhd19pbnB1dHM6CisgICAg
aW5wdXRzLmFkZChfUnVsZUV4cGFuZFBhdGgoaSwgdHJpZ2dlcl9maWxlKSkKKyAgZm9yIG8gaW4g
cmF3X291dHB1dHM6CisgICAgb3V0cHV0cy5hZGQoX1J1bGVFeHBhbmRQYXRoKG8sIHRyaWdnZXJf
ZmlsZSkpCisgIHJldHVybiAoaW5wdXRzLCBvdXRwdXRzKQorCisKK2RlZiBfR2VuZXJhdGVOYXRp
dmVSdWxlc0Zvck1TVlMocCwgcnVsZXMsIG91dHB1dF9kaXIsIHNwZWMsIG9wdGlvbnMpOgorICAi
IiJHZW5lcmF0ZSBhIG5hdGl2ZSBydWxlcyBmaWxlLgorCisgIEFyZ3VtZW50czoKKyAgICBwOiB0
aGUgdGFyZ2V0IHByb2plY3QKKyAgICBydWxlczogdGhlIHNldCBvZiBydWxlcyB0byBpbmNsdWRl
CisgICAgb3V0cHV0X2RpcjogdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgcHJvamVjdC9neXAg
cmVzaWRlcworICAgIHNwZWM6IHRoZSBwcm9qZWN0IGRpY3QKKyAgICBvcHRpb25zOiBnbG9iYWwg
Z2VuZXJhdG9yIG9wdGlvbnMKKyAgIiIiCisgIHJ1bGVzX2ZpbGVuYW1lID0gJyVzJXMucnVsZXMn
ICUgKHNwZWNbJ3RhcmdldF9uYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMuc3VmZml4KQorICBydWxlc19maWxlID0gTVNWU1Rvb2xGaWxlLldyaXRlcihv
cy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgcnVsZXNfZmlsZW5hbWUpKQorICBydWxlc19maWxlLkNy
ZWF0ZShzcGVjWyd0YXJnZXRfbmFtZSddKQorICAjIEFkZCBlYWNoIHJ1bGUuCisgIGZvciByIGlu
IHJ1bGVzOgorICAgIHJ1bGVfbmFtZSA9IHJbJ3J1bGVfbmFtZSddCisgICAgcnVsZV9leHQgPSBy
WydleHRlbnNpb24nXQorICAgIGlucHV0cyA9IFtfRml4UGF0aChpKSBmb3IgaSBpbiByLmdldCgn
aW5wdXRzJywgW10pXQorICAgIG91dHB1dHMgPSBbX0ZpeFBhdGgoaSkgZm9yIGkgaW4gci5nZXQo
J291dHB1dHMnLCBbXSldCisgICAgY21kID0gX0J1aWxkQ29tbWFuZExpbmVGb3JSdWxlKHNwZWMs
IHIsIGhhc19pbnB1dF9wYXRoPVRydWUpCisgICAgcnVsZXNfZmlsZS5BZGRDdXN0b21CdWlsZFJ1
bGUobmFtZT1ydWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVz
Y3JpcHRpb249ci5nZXQoJ21lc3NhZ2UnLCBydWxlX25hbWUpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM9W3J1bGVfZXh0XSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2RlcGVuZGVuY2llcz1pbnB1dHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0cz1vdXRwdXRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNtZD1jbWQpCisgICMgV3JpdGUgb3V0IHJ1bGVzIGZpbGUu
CisgIHJ1bGVzX2ZpbGUuV3JpdGUoKQorCisgICMgQWRkIHJ1bGVzIGZpbGUgdG8gcHJvamVjdC4K
KyAgcC5BZGRUb29sRmlsZShydWxlc19maWxlbmFtZSkKKworCitkZWYgX0N5Z3dpbmlmeShwYXRo
KToKKyAgcGF0aCA9IHBhdGgucmVwbGFjZSgnJChPdXREaXIpJywgJyQoT3V0RGlyQ3lnd2luKScp
CisgIHBhdGggPSBwYXRoLnJlcGxhY2UoJyQoSW50RGlyKScsICckKEludERpckN5Z3dpbiknKQor
ICByZXR1cm4gcGF0aAorCisKK2RlZiBfR2VuZXJhdGVFeHRlcm5hbFJ1bGVzKHJ1bGVzLCBvdXRw
dXRfZGlyLCBzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlcywgb3B0aW9u
cywgYWN0aW9uc190b19hZGQpOgorICAiIiJHZW5lcmF0ZSBhbiBleHRlcm5hbCBtYWtlZmlsZSB0
byBkbyBhIHNldCBvZiBydWxlcy4KKworICBBcmd1bWVudHM6CisgICAgcnVsZXM6IHRoZSBsaXN0
IG9mIHJ1bGVzIHRvIGluY2x1ZGUKKyAgICBvdXRwdXRfZGlyOiBwYXRoIGNvbnRhaW5pbmcgcHJv
amVjdCBhbmQgZ3lwIGZpbGVzCisgICAgc3BlYzogcHJvamVjdCBzcGVjaWZpY2F0aW9uIGRhdGEK
KyAgICBzb3VyY2VzOiBzZXQgb2Ygc291cmNlcyBrbm93bgorICAgIG9wdGlvbnM6IGdsb2JhbCBn
ZW5lcmF0b3Igb3B0aW9ucworICAiIiIKKyAgZmlsZW5hbWUgPSAnJXNfcnVsZXMlcy5taycgJSAo
c3BlY1sndGFyZ2V0X25hbWUnXSwgb3B0aW9ucy5zdWZmaXgpCisgIGZpbGUgPSBneXAuY29tbW9u
LldyaXRlT25EaWZmKG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBmaWxlbmFtZSkpCisgICMgRmlu
ZCBjeWd3aW4gc3R5bGUgdmVyc2lvbnMgb2Ygc29tZSBwYXRocy4KKyAgZmlsZS53cml0ZSgnT3V0
RGlyQ3lnd2luOj0kKHNoZWxsIGN5Z3BhdGggLXUgIiQoT3V0RGlyKSIpXG4nKQorICBmaWxlLndy
aXRlKCdJbnREaXJDeWd3aW46PSQoc2hlbGwgY3lncGF0aCAtdSAiJChJbnREaXIpIilcbicpCisg
ICMgR2F0aGVyIHN0dWZmIG5lZWRlZCB0byBlbWl0IGFsbDogdGFyZ2V0LgorICBhbGxfaW5wdXRz
ID0gc2V0KCkKKyAgYWxsX291dHB1dHMgPSBzZXQoKQorICBhbGxfb3V0cHV0X2RpcnMgPSBzZXQo
KQorICBmaXJzdF9vdXRwdXRzID0gW10KKyAgZm9yIHJ1bGUgaW4gcnVsZXM6CisgICAgdHJpZ2dl
cl9maWxlcyA9IF9GaW5kUnVsZVRyaWdnZXJGaWxlcyhydWxlLCBzb3VyY2VzKQorICAgIGZvciB0
ZiBpbiB0cmlnZ2VyX2ZpbGVzOgorICAgICAgaW5wdXRzLCBvdXRwdXRzID0gX1J1bGVJbnB1dHNB
bmRPdXRwdXRzKHJ1bGUsIHRmKQorICAgICAgYWxsX2lucHV0cy51cGRhdGUoc2V0KGlucHV0cykp
CisgICAgICBhbGxfb3V0cHV0cy51cGRhdGUoc2V0KG91dHB1dHMpKQorICAgICAgIyBPbmx5IHVz
ZSBvbmUgdGFyZ2V0IGZyb20gZWFjaCBydWxlIGFzIHRoZSBkZXBlbmRlbmN5IGZvcgorICAgICAg
IyAnYWxsJyBzbyB3ZSBkb24ndCB0cnkgdG8gYnVpbGQgZWFjaCBydWxlIG11bHRpcGxlIHRpbWVz
LgorICAgICAgZmlyc3Rfb3V0cHV0cy5hcHBlbmQobGlzdChvdXRwdXRzKVswXSkKKyAgICAgICMg
R2V0IHRoZSB1bmlxdWUgb3V0cHV0IGRpcmVjdG9yaWVzIGZvciB0aGlzIHJ1bGUuCisgICAgICBv
dXRwdXRfZGlycyA9IFtvcy5wYXRoLnNwbGl0KGkpWzBdIGZvciBpIGluIG91dHB1dHNdCisgICAg
ICBmb3Igb2QgaW4gb3V0cHV0X2RpcnM6CisgICAgICAgIGFsbF9vdXRwdXRfZGlycy5hZGQob2Qp
CisgIGZpcnN0X291dHB1dHNfY3lnID0gW19DeWd3aW5pZnkoaSkgZm9yIGkgaW4gZmlyc3Rfb3V0
cHV0c10KKyAgIyBXcml0ZSBvdXQgYWxsOiB0YXJnZXQsIGluY2x1ZGluZyBta2RpciBmb3IgZWFj
aCBvdXRwdXQgZGlyZWN0b3J5LgorICBmaWxlLndyaXRlKCdhbGw6ICVzXG4nICUgJyAnLmpvaW4o
Zmlyc3Rfb3V0cHV0c19jeWcpKQorICBmb3Igb2QgaW4gYWxsX291dHB1dF9kaXJzOgorICAgIGZp
bGUud3JpdGUoJ1x0bWtkaXIgLXAgJXNcbicgJSBvZCkKKyAgZmlsZS53cml0ZSgnXG4nKQorICAj
IERlZmluZSBob3cgZWFjaCBvdXRwdXQgaXMgZ2VuZXJhdGVkLgorICBmb3IgcnVsZSBpbiBydWxl
czoKKyAgICB0cmlnZ2VyX2ZpbGVzID0gX0ZpbmRSdWxlVHJpZ2dlckZpbGVzKHJ1bGUsIHNvdXJj
ZXMpCisgICAgZm9yIHRmIGluIHRyaWdnZXJfZmlsZXM6CisgICAgICAjIEdldCBhbGwgdGhlIGlu
cHV0cyBhbmQgb3V0cHV0cyBmb3IgdGhpcyBydWxlIGZvciB0aGlzIHRyaWdnZXIgZmlsZS4KKyAg
ICAgIGlucHV0cywgb3V0cHV0cyA9IF9SdWxlSW5wdXRzQW5kT3V0cHV0cyhydWxlLCB0ZikKKyAg
ICAgIGlucHV0cyA9IFtfQ3lnd2luaWZ5KGkpIGZvciBpIGluIGlucHV0c10KKyAgICAgIG91dHB1
dHMgPSBbX0N5Z3dpbmlmeShpKSBmb3IgaSBpbiBvdXRwdXRzXQorICAgICAgIyBQcmVwYXJlIHRo
ZSBjb21tYW5kIGxpbmUgZm9yIHRoaXMgcnVsZS4KKyAgICAgIGNtZCA9IFtfUnVsZUV4cGFuZFBh
dGgoYywgdGYpIGZvciBjIGluIHJ1bGVbJ2FjdGlvbiddXQorICAgICAgY21kID0gWyciJXMiJyAl
IGkgZm9yIGkgaW4gY21kXQorICAgICAgY21kID0gJyAnLmpvaW4oY21kKQorICAgICAgIyBBZGQg
aXQgdG8gdGhlIG1ha2VmaWxlLgorICAgICAgZmlsZS53cml0ZSgnJXM6ICVzXG4nICUgKCcgJy5q
b2luKG91dHB1dHMpLCAnICcuam9pbihpbnB1dHMpKSkKKyAgICAgIGZpbGUud3JpdGUoJ1x0JXNc
blxuJyAlIGNtZCkKKyAgIyBDbG9zZSB1cCB0aGUgZmlsZS4KKyAgZmlsZS5jbG9zZSgpCisKKyAg
IyBBZGQgbWFrZWZpbGUgdG8gbGlzdCBvZiBzb3VyY2VzLgorICBzb3VyY2VzLmFkZChmaWxlbmFt
ZSkKKyAgIyBBZGQgYSBidWlsZCBhY3Rpb24gdG8gY2FsbCBtYWtlZmlsZS4KKyAgY21kID0gWydt
YWtlJywKKyAgICAgICAgICdPdXREaXI9JChPdXREaXIpJywKKyAgICAgICAgICdJbnREaXI9JChJ
bnREaXIpJywKKyAgICAgICAgICctaicsICcke05VTUJFUl9PRl9QUk9DRVNTT1JTX1BMVVNfMX0n
LAorICAgICAgICAgJy1mJywgZmlsZW5hbWVdCisgIGNtZCA9IF9CdWlsZENvbW1hbmRMaW5lRm9y
UnVsZVJhdyhzcGVjLCBjbWQsIFRydWUsIEZhbHNlLCBUcnVlKQorICAjIEluc2VydCBtYWtlZmls
ZSBhcyAwJ3RoIGlucHV0LCBzbyBpdCBnZXRzIHRoZSBhY3Rpb24gYXR0YWNoZWQgdGhlcmUsCisg
ICMgYXMgdGhpcyBpcyBlYXNpZXIgdG8gdW5kZXJzdGFuZCBmcm9tIGluIHRoZSBJREUuCisgIGFs
bF9pbnB1dHMgPSBsaXN0KGFsbF9pbnB1dHMpCisgIGFsbF9pbnB1dHMuaW5zZXJ0KDAsIGZpbGVu
YW1lKQorICBfQWRkQWN0aW9uU3RlcChhY3Rpb25zX3RvX2FkZCwKKyAgICAgICAgICAgICAgICAg
aW5wdXRzPVtfRml4UGF0aChpKSBmb3IgaSBpbiBhbGxfaW5wdXRzXSwKKyAgICAgICAgICAgICAg
ICAgb3V0cHV0cz1bX0ZpeFBhdGgoaSkgZm9yIGkgaW4gYWxsX291dHB1dHNdLAorICAgICAgICAg
ICAgICAgICBkZXNjcmlwdGlvbj0nUnVubmluZyAlcycgJSBjbWQsCisgICAgICAgICAgICAgICAg
IGNvbW1hbmQ9Y21kKQorCisKK2RlZiBfRXNjYXBlRW52aXJvbm1lbnRWYXJpYWJsZUV4cGFuc2lv
bihzKToKKyAgIiIiRXNjYXBlcyBhbnkgJSBjaGFyYWN0ZXJzIHNvIHRoYXQgV2luZG93cy1zdHls
ZSBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgICBleHBhbnNpb25zIHdpbGwgbGVhdmUgdGhlbSBh
bG9uZS4KKyAgICAgU2VlIGh0dHA6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vVmlzdWFsU3R1ZGlv
L2ZlZWRiYWNrL2RldGFpbHMvMTA2MTI3L2NsLWQtbmFtZS10ZXh0LWNvbnRhaW5pbmctcGVyY2Vu
dGFnZS1jaGFyYWN0ZXJzLWRvZXNudC1jb21waWxlCisgICAgIHRvIHVuZGVyc3RhbmQgd2h5IHdl
IGhhdmUgdG8gZG8gdGhpcy4iIiIKKyAgcyA9IHMucmVwbGFjZSgnJScsICclJScpCisgIHJldHVy
biBzCisKKworcXVvdGVfcmVwbGFjZXJfcmVnZXggPSByZS5jb21waWxlKHInKFxcKikiJykKK2Rl
ZiBfRXNjYXBlQ29tbWFuZExpbmVBcmd1bWVudEZvck1TVlMocyk6CisgICIiIkVzY2FwZXMgYSBX
aW5kb3dzIGNvbW1hbmQtbGluZSBhcmd1bWVudCwgc28gdGhhdCB0aGUgV2luMzIKKyAgICAgQ29t
bWFuZExpbmVUb0FyZ3YgZnVuY3Rpb24gd2lsbCB0dXJuIHRoZSBlc2NhcGVkIHJlc3VsdCBiYWNr
IGludG8gdGhlCisgICAgIG9yaWdpbmFsIHN0cmluZy4gU2VlIGh0dHA6Ly9tc2RuLm1pY3Jvc29m
dC5jb20vZW4tdXMvbGlicmFyeS8xN3c1eWtmdC5hc3B4CisgICAgICgiUGFyc2luZyBDKysgQ29t
bWFuZC1MaW5lIEFyZ3VtZW50cyIpIHRvIHVuZGVyc3RhbmQgd2h5IHdlIGhhdmUgdG8gZG8KKyAg
ICAgdGhpcy4iIiIKKyAgZGVmIHJlcGxhY2UobWF0Y2gpOgorICAgICMgRm9yIGEgbGl0ZXJhbCBx
dW90ZSwgQ29tbWFuZExpbmVUb0FyZ3YgcmVxdWlyZXMgYW4gb2RkIG51bWJlciBvZgorICAgICMg
YmFja3NsYXNoZXMgcHJlY2VkaW5nIGl0LCBhbmQgaXQgcHJvZHVjZXMgaGFsZiBhcyBtYW55IGxp
dGVyYWwgYmFja3NsYXNoZXMKKyAgICAjIChyb3VuZGVkIGRvd24pLiBTbyB3ZSBuZWVkIHRvIHBy
b2R1Y2UgMm4rMSBiYWNrc2xhc2hlcy4KKyAgICByZXR1cm4gMiAqIG1hdGNoLmdyb3VwKDEpICsg
J1xcIicKKyAgIyBFc2NhcGUgYWxsIHF1b3RlcyBzbyB0aGF0IHRoZXkgYXJlIGludGVycHJldGVk
IGxpdGVyYWxseS4KKyAgcyA9IHF1b3RlX3JlcGxhY2VyX3JlZ2V4LnN1YihyZXBsYWNlLCBzKQor
ICAjIE5vdyBhZGQgdW5lc2NhcGVkIHF1b3RlcyBzbyB0aGF0IGFueSB3aGl0ZXNwYWNlIGlzIGlu
dGVycHJldGVkIGxpdGVyYWxseS4KKyAgcyA9ICciJyArIHMgKyAnIicKKyAgcmV0dXJuIHMKKwor
CitkZWxpbWl0ZXJzX3JlcGxhY2VyX3JlZ2V4ID0gcmUuY29tcGlsZShyJyhcXCopKFssO10rKScp
CitkZWYgX0VzY2FwZVZDUHJvakNvbW1hbmRMaW5lQXJnTGlzdEl0ZW0ocyk6CisgICIiIlRoZSBW
Q1Byb2ogZm9ybWF0IHN0b3JlcyBzdHJpbmcgbGlzdHMgaW4gYSBzaW5nbGUgc3RyaW5nIHVzaW5n
IGNvbW1hcyBhbmQKKyAgICAgc2VtaS1jb2xvbnMgYXMgc2VwYXJhdG9ycywgd2hpY2ggbXVzdCBi
ZSBxdW90ZWQgaWYgdGhleSBhcmUgdG8gYmUKKyAgICAgaW50ZXJwcmV0ZWQgbGl0ZXJhbGx5LiBI
b3dldmVyLCBjb21tYW5kLWxpbmUgYXJndW1lbnRzIG1heSBhbHJlYWR5IGhhdmUKKyAgICAgcXVv
dGVzLCBhbmQgdGhlIFZDUHJvaiBwYXJzZXIgaXMgaWdub3JhbnQgb2YgdGhlIGJhY2tzbGFzaCBl
c2NhcGluZworICAgICBjb252ZW50aW9uIHVzZWQgYnkgQ29tbWFuZExpbmVUb0FyZ3YsIHNvIHRo
ZSBjb21tYW5kLWxpbmUgcXVvdGVzIGFuZCB0aGUKKyAgICAgVkNQcm9qIHF1b3RlcyBtYXkgbm90
IGJlIHRoZSBzYW1lIHF1b3Rlcy4gU28gdG8gc3RvcmUgYSBnZW5lcmFsCisgICAgIGNvbW1hbmQt
bGluZSBhcmd1bWVudCBpbiBhIFZDUHJvaiBsaXN0LCB3ZSBuZWVkIHRvIHBhcnNlIHRoZSBleGlz
dGluZworICAgICBxdW90aW5nIGFjY29yZGluZyB0byBWQ1Byb2oncyBjb252ZW50aW9uIGFuZCBx
dW90ZSBhbnkgZGVsaW1pdGVycyB0aGF0IGFyZQorICAgICBub3QgYWxyZWFkeSBxdW90ZWQgYnkg
dGhhdCBjb252ZW50aW9uLiBUaGUgcXVvdGVzIHRoYXQgd2UgYWRkIHdpbGwgYWxzbyBiZQorICAg
ICBzZWVuIGJ5IENvbW1hbmRMaW5lVG9Bcmd2LCBzbyBpZiBiYWNrc2xhc2hlcyBwcmVjZWRlIHRo
ZW0gdGhlbiB3ZSBhbHNvIGhhdmUKKyAgICAgdG8gZXNjYXBlIHRob3NlIGJhY2tzbGFzaGVzIGFj
Y29yZGluZyB0byB0aGUgQ29tbWFuZExpbmVUb0FyZ3YKKyAgICAgY29udmVudGlvbi4iIiIKKyAg
ZGVmIHJlcGxhY2UobWF0Y2gpOgorICAgICMgRm9yIGEgbm9uLWxpdGVyYWwgcXVvdGUsIENvbW1h
bmRMaW5lVG9Bcmd2IHJlcXVpcmVzIGFuIGV2ZW4gbnVtYmVyIG9mCisgICAgIyBiYWNrc2xhc2hl
cyBwcmVjZWRpbmcgaXQsIGFuZCBpdCBwcm9kdWNlcyBoYWxmIGFzIG1hbnkgbGl0ZXJhbAorICAg
ICMgYmFja3NsYXNoZXMuIFNvIHdlIG5lZWQgdG8gcHJvZHVjZSAybiBiYWNrc2xhc2hlcy4KKyAg
ICByZXR1cm4gMiAqIG1hdGNoLmdyb3VwKDEpICsgJyInICsgbWF0Y2guZ3JvdXAoMikgKyAnIicK
KyAgbGlzdCA9IHMuc3BsaXQoJyInKQorICAjIFRoZSB1bnF1b3RlZCBzZWdtZW50cyBhcmUgYXQg
dGhlIGV2ZW4tbnVtYmVyZWQgaW5kaWNlcy4KKyAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGxpc3Qp
LCAyKToKKyAgICBsaXN0W2ldID0gZGVsaW1pdGVyc19yZXBsYWNlcl9yZWdleC5zdWIocmVwbGFj
ZSwgbGlzdFtpXSkKKyAgIyBDb25jYXRlbmF0ZSBiYWNrIGludG8gYSBzaW5nbGUgc3RyaW5nCisg
IHMgPSAnIicuam9pbihsaXN0KQorICBpZiBsZW4obGlzdCkgJSAyID09IDA6CisgICAgIyBTdHJp
bmcgZW5kcyB3aGlsZSBzdGlsbCBxdW90ZWQgYWNjb3JkaW5nIHRvIFZDUHJvaidzIGNvbnZlbnRp
b24uIFRoaXMKKyAgICAjIG1lYW5zIHRoZSBkZWxpbWl0ZXIgYW5kIHRoZSBuZXh0IGxpc3QgaXRl
bSB0aGF0IGZvbGxvdyB0aGlzIG9uZSBpbiB0aGUKKyAgICAjIC52Y3Byb2ogZmlsZSB3aWxsIGJl
IG1pc2ludGVycHJldGVkIGFzIHBhcnQgb2YgdGhpcyBpdGVtLiBUaGVyZSBpcyBub3RoaW5nCisg
ICAgIyB3ZSBjYW4gZG8gYWJvdXQgdGhpcy4gQWRkaW5nIGFuIGV4dHJhIHF1b3RlIHdvdWxkIGNv
cnJlY3QgdGhlIHByb2JsZW0gaW4KKyAgICAjIHRoZSBWQ1Byb2ogYnV0IGNhdXNlIHRoZSBzYW1l
IHByb2JsZW0gb24gdGhlIGZpbmFsIGNvbW1hbmQtbGluZS4gTW92aW5nCisgICAgIyB0aGUgaXRl
bSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0IGRvZXMgd29ya3MsIGJ1dCB0aGF0J3Mgb25seSBwb3Nz
aWJsZSBpZgorICAgICMgdGhlcmUncyBvbmx5IG9uZSBzdWNoIGl0ZW0uIExldCdzIGp1c3Qgd2Fy
biB0aGUgdXNlci4KKyAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAoJ1dhcm5pbmc6IE1TVlMgbWF5
IG1pc2ludGVycHJldCB0aGUgb2RkIG51bWJlciBvZiAnICsKKyAgICAgICAgJ3F1b3RlcyBpbiAn
ICsgcykKKyAgcmV0dXJuIHMKKworCitkZWYgX0VzY2FwZUNwcERlZmluZUZvck1TVlMocyk6Cisg
ICIiIkVzY2FwZXMgYSBDUFAgZGVmaW5lIHNvIHRoYXQgaXQgd2lsbCByZWFjaCB0aGUgY29tcGls
ZXIgdW5hbHRlcmVkLiIiIgorICBzID0gX0VzY2FwZUVudmlyb25tZW50VmFyaWFibGVFeHBhbnNp
b24ocykKKyAgcyA9IF9Fc2NhcGVDb21tYW5kTGluZUFyZ3VtZW50Rm9yTVNWUyhzKQorICBzID0g
X0VzY2FwZVZDUHJvakNvbW1hbmRMaW5lQXJnTGlzdEl0ZW0ocykKKyAgcmV0dXJuIHMKKworCitk
ZWYgX0dlbmVyYXRlUnVsZXNGb3JNU1ZTKHAsIG91dHB1dF9kaXIsIG9wdGlvbnMsIHNwZWMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXMsIGV4Y2x1ZGVkX3NvdXJjZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnNfdG9fYWRkKToKKyAgIiIiR2VuZXJhdGUgYWxs
IHRoZSBydWxlcyBmb3IgYSBwYXJ0aWN1bGFyIHByb2plY3QuCisKKyAgQXJndW1lbnRzOgorICAg
IG91dHB1dF9kaXI6IGRpcmVjdG9yeSB0byBlbWl0IHJ1bGVzIHRvCisgICAgb3B0aW9uczogZ2xv
YmFsIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSBnZW5lcmF0b3IKKyAgICBzcGVjOiB0aGUgc3BlY2lm
aWNhdGlvbiBmb3IgdGhpcyBwcm9qZWN0CisgICAgc291cmNlczogdGhlIHNldCBvZiBhbGwga25v
d24gc291cmNlIGZpbGVzIGluIHRoaXMgcHJvamVjdAorICAgIGV4Y2x1ZGVkX3NvdXJjZXM6IHRo
ZSBzZXQgb2Ygc291cmNlcyBleGNsdWRlZCBmcm9tIG5vcm1hbCBwcm9jZXNzaW5nCisgICAgYWN0
aW9uc190b19hZGQ6IGRlZmVycmVkIGxpc3Qgb2YgYWN0aW9ucyB0byBhZGQgaW4KKyAgIiIiCisg
IHJ1bGVzID0gc3BlYy5nZXQoJ3J1bGVzJywgW10pCisgIHJ1bGVzX25hdGl2ZSA9IFtyIGZvciBy
IGluIHJ1bGVzIGlmIG5vdCBpbnQoci5nZXQoJ21zdnNfZXh0ZXJuYWxfcnVsZScsIDApKV0KKyAg
cnVsZXNfZXh0ZXJuYWwgPSBbciBmb3IgciBpbiBydWxlcyBpZiBpbnQoci5nZXQoJ21zdnNfZXh0
ZXJuYWxfcnVsZScsIDApKV0KKworICAjIEhhbmRsZSBydWxlcyB0aGF0IHVzZSBhIG5hdGl2ZSBy
dWxlcyBmaWxlLgorICBpZiBydWxlc19uYXRpdmU6CisgICBfR2VuZXJhdGVOYXRpdmVSdWxlc0Zv
ck1TVlMocCwgcnVsZXNfbmF0aXZlLCBvdXRwdXRfZGlyLCBzcGVjLCBvcHRpb25zKQorCisgICMg
SGFuZGxlIGV4dGVybmFsIHJ1bGVzIChub24tbmF0aXZlIHJ1bGVzKS4KKyAgaWYgcnVsZXNfZXh0
ZXJuYWw6CisgICAgX0dlbmVyYXRlRXh0ZXJuYWxSdWxlcyhydWxlc19leHRlcm5hbCwgb3V0cHV0
X2Rpciwgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXMsIG9wdGlvbnMs
IGFjdGlvbnNfdG9fYWRkKQorICBfQWRqdXN0U291cmNlc0ZvclJ1bGVzKHJ1bGVzLCBzb3VyY2Vz
LCBleGNsdWRlZF9zb3VyY2VzKQorCisKK2RlZiBfQWRqdXN0U291cmNlc0ZvclJ1bGVzKHJ1bGVz
LCBzb3VyY2VzLCBleGNsdWRlZF9zb3VyY2VzKToKKyAgIyBBZGQgb3V0cHV0cyBnZW5lcmF0ZWQg
YnkgZWFjaCBydWxlIChpZiBhcHBsaWNhYmxlKS4KKyAgZm9yIHJ1bGUgaW4gcnVsZXM6CisgICAg
IyBEb25lIGlmIG5vdCBwcm9jZXNzaW5nIG91dHB1dHMgYXMgc291cmNlcy4KKyAgICBpZiBpbnQo
cnVsZS5nZXQoJ3Byb2Nlc3Nfb3V0cHV0c19hc19zb3VyY2VzJywgRmFsc2UpKToKKyAgICAgICMg
QWRkIGluIHRoZSBvdXRwdXRzIGZyb20gdGhpcyBydWxlLgorICAgICAgdHJpZ2dlcl9maWxlcyA9
IF9GaW5kUnVsZVRyaWdnZXJGaWxlcyhydWxlLCBzb3VyY2VzKQorICAgICAgZm9yIHRyaWdnZXJf
ZmlsZSBpbiB0cmlnZ2VyX2ZpbGVzOgorICAgICAgICBpbnB1dHMsIG91dHB1dHMgPSBfUnVsZUlu
cHV0c0FuZE91dHB1dHMocnVsZSwgdHJpZ2dlcl9maWxlKQorICAgICAgICBpbnB1dHMgPSBzZXQo
W19GaXhQYXRoKGkpIGZvciBpIGluIGlucHV0c10pCisgICAgICAgIG91dHB1dHMgPSBzZXQoW19G
aXhQYXRoKGkpIGZvciBpIGluIG91dHB1dHNdKQorICAgICAgICBpbnB1dHMucmVtb3ZlKF9GaXhQ
YXRoKHRyaWdnZXJfZmlsZSkpCisgICAgICAgIHNvdXJjZXMudXBkYXRlKGlucHV0cykKKyAgICAg
ICAgZXhjbHVkZWRfc291cmNlcy51cGRhdGUoaW5wdXRzKQorICAgICAgICBzb3VyY2VzLnVwZGF0
ZShvdXRwdXRzKQorCisKK2RlZiBfRmlsdGVyQWN0aW9uc0Zyb21FeGNsdWRlZChleGNsdWRlZF9z
b3VyY2VzLCBhY3Rpb25zX3RvX2FkZCk6CisgICIiIlRha2UgaW5wdXRzIHdpdGggYWN0aW9ucyBh
dHRhY2hlZCBvdXQgb2YgdGhlIGxpc3Qgb2YgZXhjbHVzaW9ucy4KKworICBBcmd1bWVudHM6Cisg
ICAgZXhjbHVkZWRfc291cmNlczogbGlzdCBvZiBzb3VyY2UgZmlsZXMgbm90IHRvIGJlIGJ1aWx0
LgorICAgIGFjdGlvbnNfdG9fYWRkOiBkaWN0IG9mIGFjdGlvbnMga2V5ZWQgb24gc291cmNlIGZp
bGUgdGhleSdyZSBhdHRhY2hlZCB0by4KKyAgUmV0dXJuczoKKyAgICBleGNsdWRlZF9zb3VyY2Vz
IHdpdGggZmlsZXMgdGhhdCBoYXZlIGFjdGlvbnMgYXR0YWNoZWQgcmVtb3ZlZC4KKyAgIiIiCisg
IG11c3Rfa2VlcCA9IHNldChbX0ZpeFBhdGgocykgZm9yIHMgaW4gYWN0aW9uc190b19hZGQua2V5
cygpXSkKKyAgcmV0dXJuIFtzIGZvciBzIGluIGV4Y2x1ZGVkX3NvdXJjZXMgaWYgcyBub3QgaW4g
bXVzdF9rZWVwXQorCisKK2RlZiBfR2V0RGVmYXVsdENvbmZpZ3VyYXRpb24oc3BlYyk6CisgIHJl
dHVybiBzcGVjWydjb25maWd1cmF0aW9ucyddW3NwZWNbJ2RlZmF1bHRfY29uZmlndXJhdGlvbidd
XQorCisKK2RlZiBfR2V0R3VpZE9mUHJvamVjdChwcm9qX3BhdGgsIHNwZWMpOgorICAiIiJHZXQg
dGhlIGd1aWQgZm9yIHRoZSBwcm9qZWN0CisKKyAgQXJndW1lbnRzOgorICAgIHByb2pfcGF0aDog
UGF0aCBvZiB0aGUgdmNwcm9qIGZpbGUgdG8gZ2VuZXJhdGUuCisgICAgc3BlYzogVGhlIHRhcmdl
dCBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHRhcmdldC4KKyAg
IiIiCisgICMgUGx1Y2sgb3V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCisgIGRlZmF1bHRf
Y29uZmlnID0gX0dldERlZmF1bHRDb25maWd1cmF0aW9uKHNwZWMpCisgICMgRGVjaWRlIHRoZSBn
dWlkIG9mIHRoZSBwcm9qZWN0LgorICBndWlkID0gZGVmYXVsdF9jb25maWcuZ2V0KCdtc3ZzX2d1
aWQnKQorICBpZiBndWlkOgorICAgIGlmIFZBTElEX01TVlNfR1VJRF9DSEFSUy5tYXRjaChndWlk
KSA9PSBOb25lOgorICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBNU1ZTIGd1aWQ6ICIl
cyIuICBNdXN0IG1hdGNoIHJlZ2V4OiAiJXMiLicgJQorICAgICAgICAgICAgICAgICAgICAgICAo
Z3VpZCwgVkFMSURfTVNWU19HVUlEX0NIQVJTLnBhdHRlcm4pKQorICAgIGd1aWQgPSAneyVzfScg
JSBndWlkCisgIGd1aWQgPSBndWlkIG9yIE1TVlNOZXcuTWFrZUd1aWQocHJval9wYXRoKQorICBy
ZXR1cm4gZ3VpZAorCisKK2RlZiBfR2VuZXJhdGVQcm9qZWN0KHByb2plY3QsIG9wdGlvbnMsIHZl
cnNpb24pOgorICAiIiJHZW5lcmF0ZXMgYSB2Y3Byb2ogZmlsZS4KKworICBBcmd1bWVudHM6Cisg
ICAgcHJvamVjdDogdGhlIE1TVlNQcm9qZWN0IG9iamVjdC4KKyAgICBvcHRpb25zOiBnbG9iYWwg
Z2VuZXJhdG9yIG9wdGlvbnMuCisgICAgdmVyc2lvbjogdGhlIE1TVlNWZXJzaW9uIG9iamVjdC4K
KyIiIgorICBkZWZhdWx0X2NvbmZpZyA9IF9HZXREZWZhdWx0Q29uZmlndXJhdGlvbihwcm9qZWN0
LnNwZWMpCisKKyAgIyBTa2lwIGVtaXR0aW5nIGFueXRoaW5nIGlmIHRvbGQgdG8gd2l0aCBtc3Zz
X2V4aXN0aW5nX3ZjcHJvaiBvcHRpb24uCisgIGlmIGRlZmF1bHRfY29uZmlnLmdldCgnbXN2c19l
eGlzdGluZ192Y3Byb2onKToKKyAgICByZXR1cm4KKworICBfR2VuZXJhdGVNU1ZTUHJvamVjdChw
cm9qZWN0LCBvcHRpb25zLCB2ZXJzaW9uKQorCisKK2RlZiBfR2VuZXJhdGVNU1ZTUHJvamVjdChw
cm9qZWN0LCBvcHRpb25zLCB2ZXJzaW9uKToKKyAgIiIiR2VuZXJhdGVzIGEgLnZjcHJvaiBmaWxl
LiAgSXQgbWF5IGNyZWF0ZSAucnVsZXMgYW5kIC51c2VyIGZpbGVzIHRvby4KKworICBBcmd1bWVu
dHM6CisgICAgcHJvamVjdDogVGhlIHByb2plY3Qgb2JqZWN0IHdlIHdpbGwgZ2VuZXJhdGUgdGhl
IGZpbGUgZm9yLgorICAgIG9wdGlvbnM6IEdsb2JhbCBvcHRpb25zIHBhc3NlZCB0byB0aGUgZ2Vu
ZXJhdG9yLgorICAgIHZlcnNpb246IFRoZSBWaXN1YWxTdHVkaW9WZXJzaW9uIG9iamVjdC4KKyAg
IiIiCisgIHNwZWMgPSBwcm9qZWN0LnNwZWMKKyAgdmNwcm9qX2RpciA9IG9zLnBhdGguZGlybmFt
ZShwcm9qZWN0LnBhdGgpCisgIGlmIHZjcHJval9kaXIgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyh2
Y3Byb2pfZGlyKToKKyAgICBvcy5tYWtlZGlycyh2Y3Byb2pfZGlyKQorCisgIHBsYXRmb3JtcyA9
IF9HZXRVbmlxdWVQbGF0Zm9ybXMoc3BlYykKKyAgcCA9IE1TVlNQcm9qZWN0LldyaXRlcihwcm9q
ZWN0LnBhdGgsIHZlcnNpb249dmVyc2lvbikKKyAgcC5DcmVhdGUoc3BlY1sndGFyZ2V0X25hbWUn
XSwgZ3VpZD1wcm9qZWN0Lmd1aWQsIHBsYXRmb3Jtcz1wbGF0Zm9ybXMpCisKKyAgIyBHZXQgZGly
ZWN0b3J5IHByb2plY3QgZmlsZSBpcyBpbi4KKyAgZ3lwX2RpciA9IG9zLnBhdGguc3BsaXQocHJv
amVjdC5wYXRoKVswXQorICBneXBfZmlsZSA9IHBvc2l4cGF0aC5zcGxpdChwcm9qZWN0LmJ1aWxk
X2ZpbGUpWzFdCisgIGd5cF9wYXRoID0gX05vcm1hbGl6ZWRTb3VyY2UoZ3lwX2ZpbGUpCisgIHJl
bGF0aXZlX3BhdGhfb2ZfZ3lwX2ZpbGUgPSBneXAuY29tbW9uLlJlbGF0aXZlUGF0aChneXBfcGF0
aCwgZ3lwX2RpcikKKworICBjb25maWdfdHlwZSA9IF9HZXRNU1ZTQ29uZmlndXJhdGlvblR5cGUo
c3BlYywgcHJvamVjdC5idWlsZF9maWxlKQorICBmb3IgY29uZmlnX25hbWUsIGNvbmZpZyBpbiBz
cGVjWydjb25maWd1cmF0aW9ucyddLml0ZXJpdGVtcygpOgorICAgIF9BZGRDb25maWd1cmF0aW9u
VG9NU1ZTUHJvamVjdChwLCBzcGVjLCBjb25maWdfdHlwZSwgY29uZmlnX25hbWUsIGNvbmZpZykK
KworICAjIFByZXBhcmUgbGlzdCBvZiBzb3VyY2VzIGFuZCBleGNsdWRlZCBzb3VyY2VzLgorICBz
b3VyY2VzLCBleGNsdWRlZF9zb3VyY2VzID0gX1ByZXBhcmVMaXN0T2ZTb3VyY2VzKHByb2plY3Qs
IHNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVsYXRpdmVfcGF0aF9vZl9neXBfZmlsZSkKKworICAjIEFkZCBydWxlcy4KKyAgYWN0aW9u
c190b19hZGQgPSB7fQorICBfR2VuZXJhdGVSdWxlc0Zvck1TVlMocCwgZ3lwX2Rpciwgb3B0aW9u
cywgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXMsIGV4Y2x1ZGVkX3NvdXJj
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zX3RvX2FkZCkKKyAgc291cmNlcywg
ZXhjbHVkZWRfc291cmNlcywgZXhjbHVkZWRfaWRsID0gKAorICAgICAgX0FkanVzdFNvdXJjZXNB
bmRDb252ZXJ0VG9GaWx0ZXJIaWVyYXJjaHkoCisgICAgICAgICAgc3BlYywgb3B0aW9ucywgZ3lw
X2Rpciwgc291cmNlcywgZXhjbHVkZWRfc291cmNlcykpCisKKyAgIyBBZGQgaW4gZmlsZXMuCisg
IHAuQWRkRmlsZXMoc291cmNlcykKKworICBfQWRkVG9vbEZpbGVzVG9NU1ZTKHAsIHNwZWMpCisg
IF9IYW5kbGVQcmVDb21waWxlSGVhZGVyU3R1YnMocCwgc3BlYykKKyAgX0FkZEFjdGlvbnMoYWN0
aW9uc190b19hZGQsIHNwZWMsIHJlbGF0aXZlX3BhdGhfb2ZfZ3lwX2ZpbGUpCisgIF9BZGRDb3Bp
ZXMoYWN0aW9uc190b19hZGQsIHNwZWMpCisgIF9Xcml0ZU1TVlNVc2VyRmlsZShwcm9qZWN0LnBh
dGgsIHZlcnNpb24sIHNwZWMpCisKKyAgIyBOT1RFOiB0aGlzIHN0YW56YSBtdXN0IGFwcGVhciBh
ZnRlciBhbGwgYWN0aW9ucyBoYXZlIGJlZW4gZGVjaWRlZC4KKyAgIyBEb24ndCBleGNsdWRlZCBz
b3VyY2VzIHdpdGggYWN0aW9ucyBhdHRhY2hlZCwgb3IgdGhleSB3b24ndCBydW4uCisgIGV4Y2x1
ZGVkX3NvdXJjZXMgPSBfRmlsdGVyQWN0aW9uc0Zyb21FeGNsdWRlZCgKKyAgICAgIGV4Y2x1ZGVk
X3NvdXJjZXMsIGFjdGlvbnNfdG9fYWRkKQorICBfRXhjbHVkZUZpbGVzRnJvbUJlaW5nQnVpbHQo
cCwgc3BlYywgZXhjbHVkZWRfc291cmNlcywgZXhjbHVkZWRfaWRsKQorICBfQWRkQWNjdW11bGF0
ZWRBY3Rpb25zVG9NU1ZTKHAsIHNwZWMsIGFjdGlvbnNfdG9fYWRkKQorCisgICMgV3JpdGUgaXQg
b3V0LgorICBwLldyaXRlKCkKKworCitkZWYgX0dldFVuaXF1ZVBsYXRmb3JtcyhzcGVjKToKKyAg
IiIiUmV0dXJuIHRoZSBsaXN0IG9mIHVuaXF1ZSBwbGF0Zm9ybXMgZm9yIHRoaXMgc3BlYywgZS5n
IFsnd2luMzInLCAuLi5dCisKKyAgQXJndW1lbnRzOgorICAgIHNwZWM6IFRoZSB0YXJnZXQgZGlj
dGlvbmFyeSBjb250YWluaW5nIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSB0YXJnZXQuCisgIFJldHVy
bnM6CisgICAgVGhlIE1TVlNVc2VyRmlsZSBvYmplY3QgY3JlYXRlZC4KKyAgIiIiCisgICMgR2F0
aGVyIGxpc3Qgb2YgdW5pcXVlIHBsYXRmb3Jtcy4KKyAgcGxhdGZvcm1zID0gc2V0KCkKKyAgZm9y
IGNvbmZpZ3VyYXRpb24gaW4gc3BlY1snY29uZmlndXJhdGlvbnMnXToKKyAgICBwbGF0Zm9ybXMu
YWRkKF9Db25maWdQbGF0Zm9ybShzcGVjWydjb25maWd1cmF0aW9ucyddW2NvbmZpZ3VyYXRpb25d
KSkKKyAgcGxhdGZvcm1zID0gbGlzdChwbGF0Zm9ybXMpCisgIHJldHVybiBwbGF0Zm9ybXMKKwor
CitkZWYgX0NyZWF0ZU1TVlNVc2VyRmlsZShwcm9qX3BhdGgsIHZlcnNpb24sIHNwZWMpOgorICAi
IiJHZW5lcmF0ZXMgYSAudXNlciBmaWxlIGZvciB0aGUgdXNlciBydW5uaW5nIHRoaXMgR3lwIHBy
b2dyYW0uCisKKyAgQXJndW1lbnRzOgorICAgIHByb2pfcGF0aDogVGhlIHBhdGggb2YgdGhlIHBy
b2plY3QgZmlsZSBiZWluZyBjcmVhdGVkLiAgVGhlIC51c2VyIGZpbGUKKyAgICAgICAgICAgICAg
IHNoYXJlcyB0aGUgc2FtZSBwYXRoICh3aXRoIGFuIGFwcHJvcHJpYXRlIHN1ZmZpeCkuCisgICAg
dmVyc2lvbjogVGhlIFZpc3VhbFN0dWRpb1ZlcnNpb24gb2JqZWN0LgorICAgIHNwZWM6IFRoZSB0
YXJnZXQgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSB0YXJnZXQu
CisgIFJldHVybnM6CisgICAgVGhlIE1TVlNVc2VyRmlsZSBvYmplY3QgY3JlYXRlZC4KKyAgIiIi
CisgIChkb21haW4sIHVzZXJuYW1lKSA9IF9HZXREb21haW5BbmRVc2VyTmFtZSgpCisgIHZjdXNl
cl9maWxlbmFtZSA9ICcuJy5qb2luKFtwcm9qX3BhdGgsIGRvbWFpbiwgdXNlcm5hbWUsICd1c2Vy
J10pCisgIHVzZXJfZmlsZSA9IE1TVlNVc2VyRmlsZS5Xcml0ZXIodmN1c2VyX2ZpbGVuYW1lLCB2
ZXJzaW9uPXZlcnNpb24pCisgIHVzZXJfZmlsZS5DcmVhdGUoc3BlY1sndGFyZ2V0X25hbWUnXSkK
KyAgcmV0dXJuIHVzZXJfZmlsZQorCisKK2RlZiBfR2V0TVNWU0NvbmZpZ3VyYXRpb25UeXBlKHNw
ZWMsIGJ1aWxkX2ZpbGUpOgorICAiIiJSZXR1cm5zIHRoZSBjb25maWd1cmF0aW9uIHR5cGUgZm9y
IHRoaXMgcHJvamVjdC4gIEl0J3MgYSBudW1iZXIgZGVmaW5lZAorICAgICBieSBNaWNyb3NvZnQu
ICBNYXkgcmFpc2UgYW4gZXhjZXB0aW9uLgorICBSZXR1cm5zOgorICAgIEFuIGludGVnZXIsIHRo
ZSBjb25maWd1cmF0aW9uIHR5cGUuCisgICIiIgorICB0cnk6CisgICAgY29uZmlnX3R5cGUgPSB7
CisgICAgICAgICdleGVjdXRhYmxlJzogJzEnLCAgIyAuZXhlCisgICAgICAgICdzaGFyZWRfbGli
cmFyeSc6ICcyJywgICMgLmRsbAorICAgICAgICAnbG9hZGFibGVfbW9kdWxlJzogJzInLCAgIyAu
ZGxsCisgICAgICAgICdzdGF0aWNfbGlicmFyeSc6ICc0JywgICMgLmxpYgorICAgICAgICAnbm9u
ZSc6ICcxMCcsICAjIFV0aWxpdHkgdHlwZQorICAgICAgICAnZHVtbXlfZXhlY3V0YWJsZSc6ICcx
JywgICMgLmV4ZQorICAgICAgICB9W3NwZWNbJ3R5cGUnXV0KKyAgZXhjZXB0IEtleUVycm9yLCBl
OgorICAgIGlmIHNwZWMuZ2V0KCd0eXBlJyk6CisgICAgICByYWlzZSBFeGNlcHRpb24oJ1Rhcmdl
dCB0eXBlICVzIGlzIG5vdCBhIHZhbGlkIHRhcmdldCB0eXBlIGZvciAnCisgICAgICAgICAgICAg
ICAgICAgICAgJ3RhcmdldCAlcyBpbiAlcy4nICUKKyAgICAgICAgICAgICAgICAgICAgICAoc3Bl
Y1sndHlwZSddLCBzcGVjWyd0YXJnZXRfbmFtZSddLCBidWlsZF9maWxlKSkKKyAgICBlbHNlOgor
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdNaXNzaW5nIHR5cGUgZmllbGQgZm9yIHRhcmdldCAlcyBp
biAlcy4nICUKKyAgICAgICAgICAgICAgICAgICAgICAoc3BlY1sndGFyZ2V0X25hbWUnXSwgYnVp
bGRfZmlsZSkpCisgIHJldHVybiBjb25maWdfdHlwZQorCisKK2RlZiBfQWRkQ29uZmlndXJhdGlv
blRvTVNWU1Byb2plY3QocCwgc3BlYywgY29uZmlnX3R5cGUsIGNvbmZpZ19uYW1lLCBjb25maWcp
OgorICAiIiJNYW55IHNldHRpbmdzIGluIGEgdmNwcm9qIGZpbGUgYXJlIHNwZWNpZmljIHRvIGEg
Y29uZmlndXJhdGlvbi4gIFRoaXMKKyAgICBmdW5jdGlvbiB0aGUgbWFpbiBwYXJ0IG9mIHRoZSB2
Y3Byb2ogZmlsZSB0aGF0J3MgY29uZmlndXJhdGlvbiBzcGVjaWZpYy4KKworICBBcmd1bWVudHM6
CisgICAgcDogVGhlIHRhcmdldCBwcm9qZWN0IGJlaW5nIGdlbmVyYXRlZC4KKyAgICBzcGVjOiBU
aGUgdGFyZ2V0IGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgcHJvcGVydGllcyBvZiB0aGUgdGFy
Z2V0LgorICAgIGNvbmZpZ190eXBlOiBUaGUgY29uZmlndXJhdGlvbiB0eXBlLCBhIG51bWJlciBh
cyBkZWZpbmVkIGJ5IE1pY3Jvc29mdC4KKyAgICBjb25maWdfbmFtZTogVGhlIG5hbWUgb2YgdGhl
IGNvbmZpZ3VyYXRpb24uCisgICAgY29uZmlnOiBUaGUgZGljdGlvbm5hcnkgdGhhdCBkZWZpbmVz
IHRoZSBzcGVjaWFsIHByb2Nlc3NpbmcgdG8gYmUgZG9uZQorICAgICAgICAgICAgZm9yIHRoaXMg
Y29uZmlndXJhdGlvbi4KKyAgIiIiCisgICMgR2V0IHRoZSBpbmZvcm1hdGlvbiBmb3IgdGhpcyBj
b25maWd1cmF0aW9uCisgIGluY2x1ZGVfZGlycywgcmVzb3VyY2VfaW5jbHVkZV9kaXJzID0gX0dl
dEluY2x1ZGVEaXJzKGNvbmZpZykKKyAgbGlicmFyaWVzID0gX0dldExpYnJhcmllcyhjb25maWcs
IHNwZWMpCisgIG91dF9maWxlLCB2Y190b29sID0gX0dldE91dHB1dEZpbGVQYXRoQW5kVG9vbChz
cGVjKQorICBkZWZpbmVzID0gX0dldERlZmluZXMoY29uZmlnKQorICBkZWZpbmVzID0gW19Fc2Nh
cGVDcHBEZWZpbmVGb3JNU1ZTKGQpIGZvciBkIGluIGRlZmluZXNdCisgIGRpc2FibGVkX3dhcm5p
bmdzID0gX0dldERpc2FibGVkV2FybmluZ3MoY29uZmlnKQorICBwcmVidWlsZCA9IGNvbmZpZy5n
ZXQoJ21zdnNfcHJlYnVpbGQnKQorICBwb3N0YnVpbGQgPSBjb25maWcuZ2V0KCdtc3ZzX3Bvc3Ri
dWlsZCcpCisgIGRlZl9maWxlID0gX0dldE1vZHVsZURlZmluaXRpb24oc3BlYykKKyAgcHJlY29t
cGlsZWRfaGVhZGVyID0gY29uZmlnLmdldCgnbXN2c19wcmVjb21waWxlZF9oZWFkZXInKQorCisg
ICMgUHJlcGFyZSB0aGUgbGlzdCBvZiB0b29scyBhcyBhIGRpY3Rpb25hcnkuCisgIHRvb2xzID0g
ZGljdCgpCisgICMgQWRkIGluIHVzZXIgc3BlY2lmaWVkIG1zdnNfc2V0dGluZ3MuCisgIG1zdnNf
c2V0dGluZ3MgPSBjb25maWcuZ2V0KCdtc3ZzX3NldHRpbmdzJywge30pCisgIE1TVlNTZXR0aW5n
cy5WYWxpZGF0ZU1TVlNTZXR0aW5ncyhtc3ZzX3NldHRpbmdzKQorICBmb3IgdG9vbCBpbiBtc3Zz
X3NldHRpbmdzOgorICAgIHNldHRpbmdzID0gY29uZmlnWydtc3ZzX3NldHRpbmdzJ11bdG9vbF0K
KyAgICBmb3Igc2V0dGluZyBpbiBzZXR0aW5nczoKKyAgICAgIF9Ub29sQXBwZW5kKHRvb2xzLCB0
b29sLCBzZXR0aW5nLCBzZXR0aW5nc1tzZXR0aW5nXSkKKyAgIyBBZGQgdGhlIGluZm9ybWF0aW9u
IHRvIHRoZSBhcHByb3ByaWF0ZSB0b29sCisgIF9Ub29sQXBwZW5kKHRvb2xzLCAnVkNDTENvbXBp
bGVyVG9vbCcsCisgICAgICAgICAgICAgICdBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzJywg
aW5jbHVkZV9kaXJzKQorICBfVG9vbEFwcGVuZCh0b29scywgJ1ZDUmVzb3VyY2VDb21waWxlclRv
b2wnLAorICAgICAgICAgICAgICAnQWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcycsIHJlc291
cmNlX2luY2x1ZGVfZGlycykKKyAgIyBBZGQgaW4gbGlicmFyaWVzLgorICBfVG9vbEFwcGVuZCh0
b29scywgJ1ZDTGlua2VyVG9vbCcsICdBZGRpdGlvbmFsRGVwZW5kZW5jaWVzJywgbGlicmFyaWVz
KQorICBpZiBvdXRfZmlsZToKKyAgICBfVG9vbEFwcGVuZCh0b29scywgdmNfdG9vbCwgJ091dHB1
dEZpbGUnLCBvdXRfZmlsZSwgb25seV9pZl91bnNldD1UcnVlKQorICAjIEFkZCBkZWZpbmVzLgor
ICBfVG9vbEFwcGVuZCh0b29scywgJ1ZDQ0xDb21waWxlclRvb2wnLCAnUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnMnLCBkZWZpbmVzKQorICBfVG9vbEFwcGVuZCh0b29scywgJ1ZDUmVzb3VyY2VDb21w
aWxlclRvb2wnLCAnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMnLAorICAgICAgICAgICAgICBkZWZp
bmVzKQorICAjIENoYW5nZSBwcm9ncmFtIGRhdGFiYXNlIGRpcmVjdG9yeSB0byBwcmV2ZW50IGNv
bGxpc2lvbnMuCisgIF9Ub29sQXBwZW5kKHRvb2xzLCAnVkNDTENvbXBpbGVyVG9vbCcsICdQcm9n
cmFtRGF0YUJhc2VGaWxlTmFtZScsCisgICAgICAgICAgICAgICckKEludERpcilcXCQoUHJvamVj
dE5hbWUpXFx2YzgwLnBkYicpCisgICMgQWRkIGRpc2FibGVkIHdhcm5pbmdzLgorICBfVG9vbEFw
cGVuZCh0b29scywgJ1ZDQ0xDb21waWxlclRvb2wnLAorICAgICAgICAgICAgICAnRGlzYWJsZVNw
ZWNpZmljV2FybmluZ3MnLCBkaXNhYmxlZF93YXJuaW5ncykKKyAgIyBBZGQgUHJlLWJ1aWxkLgor
ICBfVG9vbEFwcGVuZCh0b29scywgJ1ZDUHJlQnVpbGRFdmVudFRvb2wnLCAnQ29tbWFuZExpbmUn
LCBwcmVidWlsZCkKKyAgIyBBZGQgUG9zdC1idWlsZC4KKyAgX1Rvb2xBcHBlbmQodG9vbHMsICdW
Q1Bvc3RCdWlsZEV2ZW50VG9vbCcsICdDb21tYW5kTGluZScsIHBvc3RidWlsZCkKKyAgIyBUdXJu
IG9uIHByZWNvbXBpbGVkIGhlYWRlcnMgaWYgYXBwcm9wcmlhdGUuCisgIGlmIHByZWNvbXBpbGVk
X2hlYWRlcjoKKyAgICBwcmVjb21waWxlZF9oZWFkZXIgPSBvcy5wYXRoLnNwbGl0KHByZWNvbXBp
bGVkX2hlYWRlcilbMV0KKyAgICBfVG9vbEFwcGVuZCh0b29scywgJ1ZDQ0xDb21waWxlclRvb2wn
LCAnVXNlUHJlY29tcGlsZWRIZWFkZXInLCAnMicpCisgICAgX1Rvb2xBcHBlbmQodG9vbHMsICdW
Q0NMQ29tcGlsZXJUb29sJywKKyAgICAgICAgICAgICAgICAnUHJlY29tcGlsZWRIZWFkZXJUaHJv
dWdoJywgcHJlY29tcGlsZWRfaGVhZGVyKQorICAgIF9Ub29sQXBwZW5kKHRvb2xzLCAnVkNDTENv
bXBpbGVyVG9vbCcsCisgICAgICAgICAgICAgICAgJ0ZvcmNlZEluY2x1ZGVGaWxlcycsIHByZWNv
bXBpbGVkX2hlYWRlcikKKyAgIyBMb2FkYWJsZSBtb2R1bGVzIGRvbid0IGdlbmVyYXRlIGltcG9y
dCBsaWJyYXJpZXM7CisgICMgdGVsbCBkZXBlbmRlbnQgcHJvamVjdHMgdG8gbm90IGV4cGVjdCBv
bmUuCisgIGlmIHNwZWNbJ3R5cGUnXSA9PSAnbG9hZGFibGVfbW9kdWxlJzoKKyAgICBfVG9vbEFw
cGVuZCh0b29scywgJ1ZDTGlua2VyVG9vbCcsICdJZ25vcmVJbXBvcnRMaWJyYXJ5JywgJ3RydWUn
KQorICAjIFNldCB0aGUgbW9kdWxlIGRlZmluaXRpb24gZmlsZSBpZiBhbnkuCisgIGlmIGRlZl9m
aWxlOgorICAgICAgX1Rvb2xBcHBlbmQodG9vbHMsICdWQ0xpbmtlclRvb2wnLCAnTW9kdWxlRGVm
aW5pdGlvbkZpbGUnLCBkZWZfZmlsZSkKKworICBfQWRkQ29uZmlndXJhdGlvblRvTVNWUyhwLCBz
cGVjLCB0b29scywgY29uZmlnLCBjb25maWdfdHlwZSwgY29uZmlnX25hbWUpCisKKworZGVmIF9H
ZXRJbmNsdWRlRGlycyhjb25maWcpOgorICAiIiJSZXR1cm5zIHRoZSBsaXN0IG9mIGRpcmVjdG9y
aWVzIHRvIGJlIHVzZWQgZm9yICNpbmNsdWRlIGRpcmVjdGl2ZXMuCisKKyAgQXJndW1lbnRzOgor
ICAgIGNvbmZpZzogVGhlIGRpY3Rpb25uYXJ5IHRoYXQgZGVmaW5lcyB0aGUgc3BlY2lhbCBwcm9j
ZXNzaW5nIHRvIGJlIGRvbmUKKyAgICAgICAgICAgIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24uCisg
IFJldHVybnM6CisgICAgVGhlIGxpc3Qgb2YgZGlyZWN0b3J5IHBhdGhzLgorICAiIiIKKyAgIyBU
T0RPKGJyYWRuZWxzb24pOiBpbmNsdWRlX2RpcnMgc2hvdWxkIHJlYWxseSBiZSBmbGV4aWJsZSBl
bm91Z2ggbm90IHRvCisgICMgICAgICAgICAgICAgICAgICAgcmVxdWlyZSB0aGlzIHNvcnQgb2Yg
dGhpbmcuCisgIGluY2x1ZGVfZGlycyA9ICgKKyAgICAgIGNvbmZpZy5nZXQoJ2luY2x1ZGVfZGly
cycsIFtdKSArCisgICAgICBjb25maWcuZ2V0KCdtc3ZzX3N5c3RlbV9pbmNsdWRlX2RpcnMnLCBb
XSkpCisgIHJlc291cmNlX2luY2x1ZGVfZGlycyA9IGNvbmZpZy5nZXQoJ3Jlc291cmNlX2luY2x1
ZGVfZGlycycsIGluY2x1ZGVfZGlycykKKyAgaW5jbHVkZV9kaXJzID0gW19GaXhQYXRoKGkpIGZv
ciBpIGluIGluY2x1ZGVfZGlyc10KKyAgcmVzb3VyY2VfaW5jbHVkZV9kaXJzID0gW19GaXhQYXRo
KGkpIGZvciBpIGluIHJlc291cmNlX2luY2x1ZGVfZGlyc10KKyAgcmV0dXJuIGluY2x1ZGVfZGly
cywgcmVzb3VyY2VfaW5jbHVkZV9kaXJzCisKKworZGVmIF9HZXRMaWJyYXJpZXMoY29uZmlnLCBz
cGVjKToKKyAgIiIiUmV0dXJucyB0aGUgbGlzdCBvZiBsaWJyYXJpZXMgZm9yIHRoaXMgY29uZmln
dXJhdGlvbi4KKworICBBcmd1bWVudHM6CisgICAgY29uZmlnOiBUaGUgZGljdGlvbm5hcnkgdGhh
dCBkZWZpbmVzIHRoZSBzcGVjaWFsIHByb2Nlc3NpbmcgdG8gYmUgZG9uZQorICAgICAgICAgICAg
Zm9yIHRoaXMgY29uZmlndXJhdGlvbi4KKyAgICBzcGVjOiBUaGUgdGFyZ2V0IGRpY3Rpb25hcnkg
Y29udGFpbmluZyB0aGUgcHJvcGVydGllcyBvZiB0aGUgdGFyZ2V0LgorICBSZXR1cm5zOgorICAg
IFRoZSBsaXN0IG9mIGRpcmVjdG9yeSBwYXRocy4KKyAgIiIiCisgIGxpYnJhcmllcyA9IHNwZWMu
Z2V0KCdsaWJyYXJpZXMnLCBbXSkKKyAgIyBTdHJpcCBvdXQgLWwsIGFzIGl0IGlzIG5vdCB1c2Vk
IG9uIHdpbmRvd3MgKGJ1dCBpcyBuZWVkZWQgc28gd2UgY2FuIHBhc3MKKyAgIyBpbiBsaWJyYXJp
ZXMgdGhhdCBhcmUgYXNzdW1lZCB0byBiZSBpbiB0aGUgZGVmYXVsdCBsaWJyYXJ5IHBhdGgpLgor
ICByZXR1cm4gW3JlLnN1YignXihcLWwpJywgJycsIGxpYikgZm9yIGxpYiBpbiBsaWJyYXJpZXNd
CisKKworZGVmIF9HZXRPdXRwdXRGaWxlUGF0aEFuZFRvb2woc3BlYyk6CisgICIiIkZpZ3VyZXMg
b3V0IHRoZSBwYXRoIG9mIHRoZSBmaWxlIHRoaXMgc3BlYyB3aWxsIGNyZWF0ZSBhbmQgdGhlIG5h
bWUgb2YKKyAgICAgdGhlIFZDIHRvb2wgdGhhdCB3aWxsIGNyZWF0ZSBpdC4KKworICBBcmd1bWVu
dHM6CisgICAgc3BlYzogVGhlIHRhcmdldCBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIHByb3Bl
cnRpZXMgb2YgdGhlIHRhcmdldC4KKyAgUmV0dXJuczoKKyAgICBBIHBhaXIgb2YgKGZpbGUgcGF0
aCwgbmFtZSBvZiB0aGUgdG9vbCkKKyAgIiIiCisgICMgU2VsZWN0IGEgbmFtZSBmb3IgdGhlIG91
dHB1dCBmaWxlLgorICBvdXRfZmlsZSA9ICcnCisgIHZjX3Rvb2wgPSAnJworICBvdXRwdXRfZmls
ZV9tYXAgPSB7CisgICAgICAnZXhlY3V0YWJsZSc6ICgnVkNMaW5rZXJUb29sJywgJyQoT3V0RGly
KVxcJywgJy5leGUnKSwKKyAgICAgICdzaGFyZWRfbGlicmFyeSc6ICgnVkNMaW5rZXJUb29sJywg
JyQoT3V0RGlyKVxcJywgJy5kbGwnKSwKKyAgICAgICdsb2FkYWJsZV9tb2R1bGUnOiAoJ1ZDTGlu
a2VyVG9vbCcsICckKE91dERpcilcXCcsICcuZGxsJyksCisgICAgICAnc3RhdGljX2xpYnJhcnkn
OiAoJ1ZDTGlicmFyaWFuVG9vbCcsICckKE91dERpcilcXGxpYlxcJywgJy5saWInKSwKKyAgICAg
ICdkdW1teV9leGVjdXRhYmxlJzogKCdWQ0xpbmtlclRvb2wnLCAnJChJbnREaXIpXFwnLCAnLmp1
bmsnKSwKKyAgfQorICBvdXRwdXRfZmlsZV9wcm9wcyA9IG91dHB1dF9maWxlX21hcC5nZXQoc3Bl
Y1sndHlwZSddKQorICBpZiBvdXRwdXRfZmlsZV9wcm9wcyBhbmQgaW50KHNwZWMuZ2V0KCdtc3Zz
X2F1dG9fb3V0cHV0X2ZpbGUnLCAxKSk6CisgICAgdmNfdG9vbCwgb3V0X2Rpciwgc3VmZml4ID0g
b3V0cHV0X2ZpbGVfcHJvcHMKKyAgICBvdXRfZGlyID0gc3BlYy5nZXQoJ3Byb2R1Y3RfZGlyJywg
b3V0X2RpcikKKyAgICBwcm9kdWN0X2V4dGVuc2lvbiA9IHNwZWMuZ2V0KCdwcm9kdWN0X2V4dGVu
c2lvbicpCisgICAgaWYgcHJvZHVjdF9leHRlbnNpb246CisgICAgICBzdWZmaXggPSAnLicgKyBw
cm9kdWN0X2V4dGVuc2lvbgorICAgIHByZWZpeCA9IHNwZWMuZ2V0KCdwcm9kdWN0X3ByZWZpeCcs
ICcnKQorICAgIHByb2R1Y3RfbmFtZSA9IHNwZWMuZ2V0KCdwcm9kdWN0X25hbWUnLCAnJChQcm9q
ZWN0TmFtZSknKQorICAgIG91dF9maWxlID0gbnRwYXRoLmpvaW4ob3V0X2RpciwgcHJlZml4ICsg
cHJvZHVjdF9uYW1lICsgc3VmZml4KQorICByZXR1cm4gb3V0X2ZpbGUsIHZjX3Rvb2wKKworCitk
ZWYgX0dldERlZmluZXMoY29uZmlnKToKKyAgIiIiUmV0dXJucyB0aGUgbGlzdCBvZiBwcmVwcm9j
ZXNzb3IgZGVmaW5pdGlvbnMgZm9yIHRoaXMgY29uZmlndWF0aW9uLgorCisgIEFyZ3VtZW50czoK
KyAgICBjb25maWc6IFRoZSBkaWN0aW9ubmFyeSB0aGF0IGRlZmluZXMgdGhlIHNwZWNpYWwgcHJv
Y2Vzc2luZyB0byBiZSBkb25lCisgICAgICAgICAgICBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgor
ICBSZXR1cm5zOgorICAgIFRoZSBsaXN0IG9mIHByZXByb2Nlc3NvciBkZWZpbml0aW9ucy4KKyAg
IiIiCisgIGRlZmluZXMgPSBbXQorICBmb3IgZCBpbiBjb25maWcuZ2V0KCdkZWZpbmVzJywgW10p
OgorICAgIGlmIHR5cGUoZCkgPT0gbGlzdDoKKyAgICAgIGZkID0gJz0nLmpvaW4oW3N0cihkcGFy
dCkgZm9yIGRwYXJ0IGluIGRdKQorICAgIGVsc2U6CisgICAgICBmZCA9IHN0cihkKQorICAgIGRl
ZmluZXMuYXBwZW5kKGZkKQorICByZXR1cm4gZGVmaW5lcworCisKK2RlZiBfR2V0RGlzYWJsZWRX
YXJuaW5ncyhjb25maWcpOgorICByZXR1cm4gW3N0cihpKSBmb3IgaSBpbiBjb25maWcuZ2V0KCdt
c3ZzX2Rpc2FibGVkX3dhcm5pbmdzJywgW10pXQorCisKK2RlZiBfR2V0TW9kdWxlRGVmaW5pdGlv
bihzcGVjKToKKyAgZGVmX2ZpbGUgPSAiIgorICBpZiBzcGVjWyd0eXBlJ10gaW4gWydzaGFyZWRf
bGlicmFyeScsICdsb2FkYWJsZV9tb2R1bGUnXToKKyAgICBkZWZfZmlsZXMgPSBbcyBmb3IgcyBp
biBzcGVjLmdldCgnc291cmNlcycsIFtdKSBpZiBzLmVuZHN3aXRoKCcuZGVmJyldCisgICAgaWYg
bGVuKGRlZl9maWxlcykgPT0gMToKKyAgICAgIGRlZl9maWxlID0gX0ZpeFBhdGgoZGVmX2ZpbGVz
WzBdKQorICAgIGVsaWYgZGVmX2ZpbGVzOgorICAgICAgcmFpc2UgVmFsdWVFcnJvcignTXVsdGlw
bGUgbW9kdWxlIGRlZmluaXRpb24gZmlsZXMgaW4gb25lIHRhcmdldCwgJworICAgICAgICAgICAg
ICAgICAgICAgICAndGFyZ2V0ICVzIGxpc3RzIG11bHRpcGxlIC5kZWYgZmlsZXM6ICVzJyAlICgK
KyAgICAgICAgICBzcGVjWyd0YXJnZXRfbmFtZSddLCAnICcuam9pbihkZWZfZmlsZXMpKSkKKyAg
cmV0dXJuIGRlZl9maWxlCisKKworZGVmIF9Db252ZXJ0VG9vbHNUb0V4cGVjdGVkRm9ybSh0b29s
cyk6CisgICIiIiBDb252ZXJ0IHRoZSBjb250ZW50IG9mIHRoZSB0b29scyBhcnJheSB0byBhIGZv
cm0gZXhwZWN0ZWQgYnkKKyAgICAgIFZpc3VhbFN0dWRpby4KKworICBBcmd1bWVudHM6CisgICAg
dG9vbHM6IEEgZGljdGlvbm5hcnkgb2Ygc2V0dGluZ3M7IHRoZSB0b29sIG5hbWUgaXMgdGhlIGtl
eS4KKyAgUmV0dXJuczoKKyAgICBBIGxpc3Qgb2YgVG9vbCBvYmplY3RzLgorICAiIiIKKyAgdG9v
bF9saXN0ID0gW10KKyAgZm9yIHRvb2wsIHNldHRpbmdzIGluIHRvb2xzLml0ZXJpdGVtcygpOgor
ICAgICMgQ29sbGFwc2Ugc2V0dGluZ3Mgd2l0aCBsaXN0cy4KKyAgICBzZXR0aW5nc19maXhlZCA9
IHt9CisgICAgZm9yIHNldHRpbmcsIHZhbHVlIGluIHNldHRpbmdzLml0ZXJpdGVtcygpOgorICAg
ICAgaWYgdHlwZSh2YWx1ZSkgPT0gbGlzdDoKKyAgICAgICAgaWYgKCh0b29sID09ICdWQ0xpbmtl
clRvb2wnIGFuZAorICAgICAgICAgICAgIHNldHRpbmcgPT0gJ0FkZGl0aW9uYWxEZXBlbmRlbmNp
ZXMnKSBvcgorICAgICAgICAgICAgc2V0dGluZyA9PSAnQWRkaXRpb25hbE9wdGlvbnMnKToKKyAg
ICAgICAgICBzZXR0aW5nc19maXhlZFtzZXR0aW5nXSA9ICcgJy5qb2luKHZhbHVlKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgIHNldHRpbmdzX2ZpeGVkW3NldHRpbmddID0gJzsnLmpvaW4odmFs
dWUpCisgICAgICBlbHNlOgorICAgICAgICBzZXR0aW5nc19maXhlZFtzZXR0aW5nXSA9IHZhbHVl
CisgICAgIyBBZGQgaW4gdGhpcyB0b29sLgorICAgIHRvb2xfbGlzdC5hcHBlbmQoTVNWU1Byb2pl
Y3QuVG9vbCh0b29sLCBzZXR0aW5nc19maXhlZCkpCisgIHJldHVybiB0b29sX2xpc3QKKworCitk
ZWYgX0FkZENvbmZpZ3VyYXRpb25Ub01TVlMocCwgc3BlYywgdG9vbHMsIGNvbmZpZywgY29uZmln
X3R5cGUsIGNvbmZpZ19uYW1lKToKKyAgIiIiQWRkIHRvIHRoZSBwcm9qZWN0IGZpbGUgdGhlIGNv
bmZpZ3VyYXRpb24gc3BlY2lmaWVkIGJ5IGNvbmZpZy4KKworICBBcmd1bWVudHM6CisgICAgcDog
VGhlIHRhcmdldCBwcm9qZWN0IGJlaW5nIGdlbmVyYXRlZC4KKyAgICBzcGVjOiB0aGUgdGFyZ2V0
IHByb2plY3QgZGljdC4KKyAgICB0b29sczogQSBkaWN0aW9ubmFyeSBvZiBzZXR0aW5nczsgdGhl
IHRvb2wgbmFtZSBpcyB0aGUga2V5LgorICAgIGNvbmZpZzogVGhlIGRpY3Rpb25uYXJ5IHRoYXQg
ZGVmaW5lcyB0aGUgc3BlY2lhbCBwcm9jZXNzaW5nIHRvIGJlIGRvbmUKKyAgICAgICAgICAgIGZv
ciB0aGlzIGNvbmZpZ3VyYXRpb24uCisgICAgY29uZmlnX3R5cGU6IFRoZSBjb25maWd1cmF0aW9u
IHR5cGUsIGEgbnVtYmVyIGFzIGRlZmluZWQgYnkgTWljcm9zb2Z0LgorICAgIGNvbmZpZ19uYW1l
OiBUaGUgbmFtZSBvZiB0aGUgY29uZmlndXJhdGlvbi4KKyAgIiIiCisgIGF0dHJpYnV0ZXMgPSBf
R2V0TVNWU0F0dHJpYnV0ZXMoc3BlYywgY29uZmlnLCBjb25maWdfdHlwZSkKKyAgIyBBZGQgaW4g
dGhpcyBjb25maWd1cmF0aW9uLgorICB0b29sX2xpc3QgPSBfQ29udmVydFRvb2xzVG9FeHBlY3Rl
ZEZvcm0odG9vbHMpCisgIHAuQWRkQ29uZmlnKF9Db25maWdGdWxsTmFtZShjb25maWdfbmFtZSwg
Y29uZmlnKSwKKyAgICAgICAgICAgICAgYXR0cnM9YXR0cmlidXRlcywgdG9vbHM9dG9vbF9saXN0
KQorCitkZWYgX0dldE1TVlNBdHRyaWJ1dGVzKHNwZWMsIGNvbmZpZywgY29uZmlnX3R5cGUpOgor
ICAjIFByZXBhcmUgY29uZmlndXJhdGlvbiBhdHRyaWJ1dGVzLgorICBwcmVwYXJlZF9hdHRycyA9
IHt9CisgIHNvdXJjZV9hdHRycyA9IGNvbmZpZy5nZXQoJ21zdnNfY29uZmlndXJhdGlvbl9hdHRy
aWJ1dGVzJywge30pCisgIGZvciBhIGluIHNvdXJjZV9hdHRyczoKKyAgICBwcmVwYXJlZF9hdHRy
c1thXSA9IHNvdXJjZV9hdHRyc1thXQorICAjIEFkZCBwcm9wcyBmaWxlcy4KKyAgdnNwcm9wc19k
aXJzID0gY29uZmlnLmdldCgnbXN2c19wcm9wcycsIFtdKQorICB2c3Byb3BzX2RpcnMgPSBbX0Zp
eFBhdGgoaSkgZm9yIGkgaW4gdnNwcm9wc19kaXJzXQorICBpZiB2c3Byb3BzX2RpcnM6CisgICAg
cHJlcGFyZWRfYXR0cnNbJ0luaGVyaXRlZFByb3BlcnR5U2hlZXRzJ10gPSAnOycuam9pbih2c3By
b3BzX2RpcnMpCisgICMgU2V0IGNvbmZpZ3VyYXRpb24gdHlwZS4KKyAgcHJlcGFyZWRfYXR0cnNb
J0NvbmZpZ3VyYXRpb25UeXBlJ10gPSBjb25maWdfdHlwZQorICBpZiBub3QgcHJlcGFyZWRfYXR0
cnMuaGFzX2tleSgnT3V0cHV0RGlyZWN0b3J5Jyk6CisgICAgcHJlcGFyZWRfYXR0cnNbJ091dHB1
dERpcmVjdG9yeSddID0gJyQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uTmFtZSknCisgIGlm
IG5vdCBwcmVwYXJlZF9hdHRycy5oYXNfa2V5KCdJbnRlcm1lZGlhdGVEaXJlY3RvcnknKToKKyAg
ICBpbnRlcm1lZGlhdGUgPSAnJChDb25maWd1cmF0aW9uTmFtZSlcXG9ialxcJChQcm9qZWN0TmFt
ZSknCisgICAgcHJlcGFyZWRfYXR0cnNbJ0ludGVybWVkaWF0ZURpcmVjdG9yeSddID0gaW50ZXJt
ZWRpYXRlCisgIHJldHVybiBwcmVwYXJlZF9hdHRycworCitkZWYgX0FkZE5vcm1hbGl6ZWRTb3Vy
Y2VzKHNvdXJjZXNfc2V0LCBzb3VyY2VzX2FycmF5KToKKyAgc291cmNlcyA9IFtfTm9ybWFsaXpl
ZFNvdXJjZShzKSBmb3IgcyBpbiBzb3VyY2VzX2FycmF5XQorICBzb3VyY2VzX3NldC51cGRhdGUo
c2V0KHNvdXJjZXMpKQorCitkZWYgX1ByZXBhcmVMaXN0T2ZTb3VyY2VzKHByb2plY3QsIHNwZWMs
IHJlbGF0aXZlX3BhdGhfb2ZfZ3lwX2ZpbGUpOgorICAiIiJQcmVwYXJlIGxpc3Qgb2Ygc291cmNl
cyBhbmQgZXhjbHVkZWQgc291cmNlcy4KKworICBCZXNpZGVzIHRoZSBzb3VyY2VzIHNwZWNpZmll
ZCBkaXJlY3RseSBpbiB0aGUgc3BlYywgYWRkcyB0aGUgZ3lwIGZpbGUgc28KKyAgdGhhdCBhIGNo
YW5nZSB0byBpdCB3aWxsIGNhdXNlIGEgcmUtY29tcGlsZS4gQWxzbyBhZGRzIGFwcHJvcHJpYXRl
IHNvdXJjZXMKKyAgZm9yIGFjdGlvbnMgYW5kIGNvcGllcy4gQXNzdW1lcyBsYXRlciBzdGFnZSB3
aWxsIHVuLWV4Y2x1ZGUgZmlsZXMgd2hpY2gKKyAgaGF2ZSBjdXN0b20gYnVpbGQgc3RlcHMgYXR0
YWNoZWQuCisKKyAgQXJndW1lbnRzOgorICAgIHByb2plY3Q6IHRoZSBNU1ZTUHJvamVjdCBvYmpl
Y3QuCisgICAgc3BlYzogVGhlIHRhcmdldCBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIHByb3Bl
cnRpZXMgb2YgdGhlIHRhcmdldC4KKyAgICByZWxhdGl2ZV9wYXRoX29mX2d5cF9maWxlOiBUaGUg
cmVsYXRpdmUgcGF0aCBvZiB0aGUgZ3lwIGZpbGUuCisgIFJldHVybnM6CisgICAgQSBwYWlyIG9m
IChsaXN0IG9mIHNvdXJjZXMsIGxpc3Qgb2YgZXhjbHVkZWQgc291cmNlcykKKyAgIiIiCisgIHNv
dXJjZXMgPSBzZXQoKQorICBfQWRkTm9ybWFsaXplZFNvdXJjZXMoc291cmNlcywgc3BlYy5nZXQo
J3NvdXJjZXMnLCBbXSkpCisgIGV4Y2x1ZGVkX3NvdXJjZXMgPSBzZXQoKQorICAjIEFkZCBpbiB0
aGUgZ3lwIGZpbGUuCisgIHNvdXJjZXMuYWRkKHJlbGF0aXZlX3BhdGhfb2ZfZ3lwX2ZpbGUpCisK
KyAgIyBBZGQgaW4gJ2FjdGlvbicgaW5wdXRzIGFuZCBvdXRwdXRzLgorICBmb3IgYSBpbiBzcGVj
LmdldCgnYWN0aW9ucycsIFtdKToKKyAgICBpbnB1dHMgPSBhLmdldCgnaW5wdXRzJywgW10pCisg
ICAgaW5wdXRzID0gW19Ob3JtYWxpemVkU291cmNlKGkpIGZvciBpIGluIGlucHV0c10KKyAgICAj
IEFkZCBhbGwgaW5wdXRzIHRvIHNvdXJjZXMgYW5kIGV4Y2x1ZGVkIHNvdXJjZXMuCisgICAgaW5w
dXRzID0gc2V0KGlucHV0cykKKyAgICBzb3VyY2VzLnVwZGF0ZShpbnB1dHMpCisgICAgZXhjbHVk
ZWRfc291cmNlcy51cGRhdGUoaW5wdXRzKQorICAgIGlmIGludChhLmdldCgncHJvY2Vzc19vdXRw
dXRzX2FzX3NvdXJjZXMnLCBGYWxzZSkpOgorICAgICAgX0FkZE5vcm1hbGl6ZWRTb3VyY2VzKHNv
dXJjZXMsIGEuZ2V0KCdvdXRwdXRzJywgW10pKQorICAjIEFkZCBpbiAnY29waWVzJyBpbnB1dHMg
YW5kIG91dHB1dHMuCisgIGZvciBjcHkgaW4gc3BlYy5nZXQoJ2NvcGllcycsIFtdKToKKyAgICBf
QWRkTm9ybWFsaXplZFNvdXJjZXMoc291cmNlcywgY3B5LmdldCgnZmlsZXMnLCBbXSkpCisgIHJl
dHVybiAoc291cmNlcywgZXhjbHVkZWRfc291cmNlcykKKworCitkZWYgX0FkanVzdFNvdXJjZXNB
bmRDb252ZXJ0VG9GaWx0ZXJIaWVyYXJjaHkoCisgICAgc3BlYywgb3B0aW9ucywgZ3lwX2Rpciwg
c291cmNlcywgZXhjbHVkZWRfc291cmNlcyk6CisgICIiIkFkanVzdHMgdGhlIGxpc3Qgb2Ygc291
cmNlcyBhbmQgZXhjbHVkZWQgc291cmNlcy4KKyAgICAgQWxzbyBjb252ZXJ0cyB0aGUgc2V0cyB0
byBsaXN0cy4KKworICBBcmd1bWVudHM6CisgICAgc3BlYzogVGhlIHRhcmdldCBkaWN0aW9uYXJ5
IGNvbnRhaW5pbmcgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHRhcmdldC4KKyAgICBvcHRpb25zOiBH
bG9iYWwgZ2VuZXJhdG9yIG9wdGlvbnMuCisgICAgZ3lwX2RpcjogVGhlIHBhdGggdG8gdGhlIGd5
cCBmaWxlIGJlaW5nIHByb2Nlc3NlZC4KKyAgICBzb3VyY2VzOiBBIHNldCBvZiBzb3VyY2VzIHRv
IGJlIGluY2x1ZGVkIGZvciB0aGlzIHByb2plY3QuCisgICAgc291cmNlczogQSBzZXQgb2Ygc291
cmNlcyB0byBiZSBleGNsdWRlZCBmb3IgdGhpcyBwcm9qZWN0LgorICBSZXR1cm5zOgorICAgIEEg
dHJpbyBvZiAobGlzdCBvZiBzb3VyY2VzLCBsaXN0IG9mIGV4Y2x1ZGVkIHNvdXJjZXMsCisgICAg
ICAgICAgICAgICBwYXRoIG9mIGV4Y2x1ZGVkIElETCBmaWxlKQorICAiIiIKKyAgIyBFeGNsdWRl
IGV4Y2x1ZGVkIHNvdXJjZXMgY29taW5nIGludG8gdGhlIGdlbmVyYXRvci4KKyAgZXhjbHVkZWRf
c291cmNlcy51cGRhdGUoc2V0KHNwZWMuZ2V0KCdzb3VyY2VzX2V4Y2x1ZGVkJywgW10pKSkKKyAg
IyBBZGQgZXhjbHVkZWQgc291cmNlcyBpbnRvIHNvdXJjZXMgZm9yIGdvb2QgbWVhc3VyZS4KKyAg
c291cmNlcy51cGRhdGUoZXhjbHVkZWRfc291cmNlcykKKyAgIyBDb252ZXJ0IHRvIHByb3BlciB3
aW5kb3dzIGZvcm0uCisgICMgTk9URTogc291cmNlcyBnb2VzIGZyb20gYmVpbmcgYSBzZXQgdG8g
YSBsaXN0IGhlcmUuCisgICMgTk9URTogZXhjbHVkZWRfc291cmNlcyBnb2VzIGZyb20gYmVpbmcg
YSBzZXQgdG8gYSBsaXN0IGhlcmUuCisgIHNvdXJjZXMgPSBbX0ZpeFBhdGgoaSkgZm9yIGkgaW4g
c291cmNlc10KKyAgIyBDb252ZXJ0IHRvIHByb3BlciB3aW5kb3dzIGZvcm0uCisgIGV4Y2x1ZGVk
X3NvdXJjZXMgPSBbX0ZpeFBhdGgoaSkgZm9yIGkgaW4gZXhjbHVkZWRfc291cmNlc10KKworICBl
eGNsdWRlZF9pZGwgPSBfSWRsRmlsZXNIYW5kbGVkTm9uTmF0aXZlbHkoc3BlYywgc291cmNlcykK
KworICBwcmVjb21waWxlZF9yZWxhdGVkID0gX0dldFByZWNvbXBpbGVSZWxhdGVkRmlsZXMoc3Bl
YykKKyAgIyBGaW5kIHRoZSBleGNsdWRlZCBvbmVzLCBtaW51cyB0aGUgcHJlY29tcGlsZWQgaGVh
ZGVyIHJlbGF0ZWQgb25lcy4KKyAgZnVsbHlfZXhjbHVkZWQgPSBbaSBmb3IgaSBpbiBleGNsdWRl
ZF9zb3VyY2VzIGlmIGkgbm90IGluIHByZWNvbXBpbGVkX3JlbGF0ZWRdCisKKyAgIyBDb252ZXJ0
IHRvIGZvbGRlcnMgYW5kIHRoZSByaWdodCBzbGFzaGVzLgorICBzb3VyY2VzID0gW2kuc3BsaXQo
J1xcJykgZm9yIGkgaW4gc291cmNlc10KKyAgc291cmNlcyA9IF9Db252ZXJ0U291cmNlc1RvRmls
dGVySGllcmFyY2h5KHNvdXJjZXMsIGV4Y2x1ZGVkPWZ1bGx5X2V4Y2x1ZGVkKQorICAjIEFkZCBp
biBkdW1teSBmaWxlIGZvciB0eXBlIG5vbmUuCisgIGlmIHNwZWNbJ3R5cGUnXSA9PSAnZHVtbXlf
ZXhlY3V0YWJsZSc6CisgICAgIyBQdWxsIGluIGEgZHVtbXkgbWFpbiBzbyBpdCBjYW4gbGluayBz
dWNjZXNzZnVsbHkuCisgICAgZHVtbXlfcmVscGF0aCA9IGd5cC5jb21tb24uUmVsYXRpdmVQYXRo
KAorICAgICAgICBvcHRpb25zLmRlcHRoICsgJ1xcdG9vbHNcXGd5cFxcZ3lwX2R1bW15LmMnLCBn
eXBfZGlyKQorICAgIHNvdXJjZXMuYXBwZW5kKGR1bW15X3JlbHBhdGgpCisKKyAgcmV0dXJuIHNv
dXJjZXMsIGV4Y2x1ZGVkX3NvdXJjZXMsIGV4Y2x1ZGVkX2lkbAorCisKK2RlZiBfSWRsRmlsZXNI
YW5kbGVkTm9uTmF0aXZlbHkoc3BlYywgc291cmNlcyk6CisgICMgSWYgYW55IG5vbi1uYXRpdmUg
cnVsZXMgdXNlICdpZGwnIGFzIGFuIGV4dGVuc2lvbiBleGNsdWRlIGlkbCBmaWxlcy4KKyAgIyBH
YXRoZXIgYSBsaXN0IGhlcmUgdG8gdXNlIGxhdGVyLgorICB1c2luZ19pZGwgPSBGYWxzZQorICBm
b3IgcnVsZSBpbiBzcGVjLmdldCgncnVsZXMnLCBbXSk6CisgICAgaWYgcnVsZVsnZXh0ZW5zaW9u
J10gPT0gJ2lkbCcgYW5kIGludChydWxlLmdldCgnbXN2c19leHRlcm5hbF9ydWxlJywgMCkpOgor
ICAgICAgdXNpbmdfaWRsID0gVHJ1ZQorICAgICAgYnJlYWsKKyAgaWYgdXNpbmdfaWRsOgorICAg
IGV4Y2x1ZGVkX2lkbCA9IFtpIGZvciBpIGluIHNvdXJjZXMgaWYgaS5lbmRzd2l0aCgnLmlkbCcp
XQorICBlbHNlOgorICAgIGV4Y2x1ZGVkX2lkbCA9IFtdCisgIHJldHVybiBleGNsdWRlZF9pZGwK
KworCitkZWYgX0dldFByZWNvbXBpbGVSZWxhdGVkRmlsZXMoc3BlYyk6CisgICMgR2F0aGVyIGEg
bGlzdCBvZiBwcmVjb21waWxlZCBoZWFkZXIgcmVsYXRlZCBzb3VyY2VzLgorICBwcmVjb21waWxl
ZF9yZWxhdGVkID0gW10KKyAgZm9yIGNvbmZpZ19uYW1lLCBjb25maWcgaW4gc3BlY1snY29uZmln
dXJhdGlvbnMnXS5pdGVyaXRlbXMoKToKKyAgICBmb3IgayBpbiBwcmVjb21wX2tleXM6CisgICAg
ICBmID0gY29uZmlnLmdldChrKQorICAgICAgaWYgZjoKKyAgICAgICAgcHJlY29tcGlsZWRfcmVs
YXRlZC5hcHBlbmQoX0ZpeFBhdGgoZikpCisgIHJldHVybiBwcmVjb21waWxlZF9yZWxhdGVkCisK
KworZGVmIF9FeGNsdWRlRmlsZXNGcm9tQmVpbmdCdWlsdChwLCBzcGVjLCBleGNsdWRlZF9zb3Vy
Y2VzLCBleGNsdWRlZF9pZGwpOgorICBleGNsdXNpb25zID0gX0dldEV4Y2x1ZGVkRmlsZXNGcm9t
QnVpbGQoc3BlYywgZXhjbHVkZWRfc291cmNlcywgZXhjbHVkZWRfaWRsKQorICBmb3IgZmlsZV9u
YW1lLCBleGNsdWRlZF9jb25maWdzIGluIGV4Y2x1c2lvbnMuaXRlcml0ZW1zKCk6CisgICAgZm9y
IGNvbmZpZ19uYW1lLCBjb25maWcgaW4gZXhjbHVkZWRfY29uZmlnczoKKyAgICAgIHAuQWRkRmls
ZUNvbmZpZyhmaWxlX25hbWUsIF9Db25maWdGdWxsTmFtZShjb25maWdfbmFtZSwgY29uZmlnKSwK
KyAgICAgICAgICAgICAgICAgICAgICB7J0V4Y2x1ZGVkRnJvbUJ1aWxkJzogJ3RydWUnfSkKKwor
CitkZWYgX0dldEV4Y2x1ZGVkRmlsZXNGcm9tQnVpbGQoc3BlYywgZXhjbHVkZWRfc291cmNlcywg
ZXhjbHVkZWRfaWRsKToKKyAgZXhjbHVzaW9ucyA9IHt9CisgICMgRXhjbHVkZSBleGNsdWRlZCBz
b3VyY2VzIGZyb20gYmVpbmcgYnVpbHQuCisgIGZvciBmIGluIGV4Y2x1ZGVkX3NvdXJjZXM6Cisg
ICAgZXhjbHVkZWRfY29uZmlncyA9IFtdCisgICAgZm9yIGNvbmZpZ19uYW1lLCBjb25maWcgaW4g
c3BlY1snY29uZmlndXJhdGlvbnMnXS5pdGVyaXRlbXMoKToKKyAgICAgIHByZWNvbXBlZCA9IFtf
Rml4UGF0aChjb25maWcuZ2V0KGksICcnKSkgZm9yIGkgaW4gcHJlY29tcF9rZXlzXQorICAgICAg
IyBEb24ndCBkbyB0aGlzIGZvciBvbmVzIHRoYXQgYXJlIHByZWNvbXBpbGVkIGhlYWRlciByZWxh
dGVkLgorICAgICAgaWYgZiBub3QgaW4gcHJlY29tcGVkOgorICAgICAgICBleGNsdWRlZF9jb25m
aWdzLmFwcGVuZCgoY29uZmlnX25hbWUsIGNvbmZpZykpCisgICAgZXhjbHVzaW9uc1tmXSA9IGV4
Y2x1ZGVkX2NvbmZpZ3MKKyAgIyBJZiBhbnkgbm9uLW5hdGl2ZSBydWxlcyB1c2UgJ2lkbCcgYXMg
YW4gZXh0ZW5zaW9uIGV4Y2x1ZGUgaWRsIGZpbGVzLgorICAjIEV4Y2x1ZGUgdGhlbSBub3cuCisg
IGZvciBmIGluIGV4Y2x1ZGVkX2lkbDoKKyAgICBleGNsdWRlZF9jb25maWdzID0gW10KKyAgICBm
b3IgY29uZmlnX25hbWUsIGNvbmZpZyBpbiBzcGVjWydjb25maWd1cmF0aW9ucyddLml0ZXJpdGVt
cygpOgorICAgICAgZXhjbHVkZWRfY29uZmlncy5hcHBlbmQoKGNvbmZpZ19uYW1lLCBjb25maWcp
KQorICAgIGV4Y2x1c2lvbnNbZl0gPSBleGNsdWRlZF9jb25maWdzCisgIHJldHVybiBleGNsdXNp
b25zCisKK2RlZiBfQWRkVG9vbEZpbGVzVG9NU1ZTKHAsIHNwZWMpOgorICAjIEFkZCBpbiB0b29s
IGZpbGVzIChydWxlcykuCisgIHRvb2xfZmlsZXMgPSBzZXQoKQorICBmb3IgY29uZmlnX25hbWUs
IGNvbmZpZyBpbiBzcGVjWydjb25maWd1cmF0aW9ucyddLml0ZXJpdGVtcygpOgorICAgIGZvciBm
IGluIGNvbmZpZy5nZXQoJ21zdnNfdG9vbF9maWxlcycsIFtdKToKKyAgICAgIHRvb2xfZmlsZXMu
YWRkKGYpCisgIGZvciBmIGluIHRvb2xfZmlsZXM6CisgICAgcC5BZGRUb29sRmlsZShmKQorCisK
K2RlZiBfSGFuZGxlUHJlQ29tcGlsZUhlYWRlclN0dWJzKHAsIHNwZWMpOgorICAjIEhhbmRsZSBw
cmUtY29tcGlsZWQgaGVhZGVycyBzb3VyY2Ugc3R1YnMgc3BlY2lhbGx5LgorICBmb3IgY29uZmln
X25hbWUsIGNvbmZpZyBpbiBzcGVjWydjb25maWd1cmF0aW9ucyddLml0ZXJpdGVtcygpOgorICAg
IHNvdXJjZSA9IGNvbmZpZy5nZXQoJ21zdnNfcHJlY29tcGlsZWRfc291cmNlJykKKyAgICBpZiBz
b3VyY2U6CisgICAgICBzb3VyY2UgPSBfRml4UGF0aChzb3VyY2UpCisgICAgICAjIFVzZVByZWNv
bXBpbGVkSGVhZGVyPTEgZm9yIGlmIHVzaW5nIHByZWNvbXBpbGVkIGhlYWRlcnMuCisgICAgICB0
b29sID0gTVNWU1Byb2plY3QuVG9vbCgnVkNDTENvbXBpbGVyVG9vbCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7J1VzZVByZWNvbXBpbGVkSGVhZGVyJzogJzEnfSkKKyAgICAgIHAu
QWRkRmlsZUNvbmZpZyhzb3VyY2UsIF9Db25maWdGdWxsTmFtZShjb25maWdfbmFtZSwgY29uZmln
KSwKKyAgICAgICAgICAgICAgICAgICAgICB7fSwgdG9vbHM9W3Rvb2xdKQorCisKK2RlZiBfQWRk
QWN0aW9ucyhhY3Rpb25zX3RvX2FkZCwgc3BlYywgcmVsYXRpdmVfcGF0aF9vZl9neXBfZmlsZSk6
CisgICMgQWRkIGFjdGlvbnMuCisgIGFjdGlvbnMgPSBzcGVjLmdldCgnYWN0aW9ucycsIFtdKQor
ICBmb3IgYSBpbiBhY3Rpb25zOgorICAgIGNtZCA9IF9CdWlsZENvbW1hbmRMaW5lRm9yUnVsZShz
cGVjLCBhLCBoYXNfaW5wdXRfcGF0aD1GYWxzZSkKKyAgICAjIEF0dGFjaCBhY3Rpb25zIHRvIHRo
ZSBneXAgZmlsZSBpZiBub3RoaW5nIGVsc2UgaXMgdGhlcmUuCisgICAgaW5wdXRzID0gYS5nZXQo
J2lucHV0cycpIG9yIFtyZWxhdGl2ZV9wYXRoX29mX2d5cF9maWxlXQorICAgICMgQWRkIHRoZSBh
Y3Rpb24uCisgICAgX0FkZEFjdGlvblN0ZXAoYWN0aW9uc190b19hZGQsCisgICAgICAgICAgICAg
ICAgICAgaW5wdXRzPWlucHV0cywKKyAgICAgICAgICAgICAgICAgICBvdXRwdXRzPWEuZ2V0KCdv
dXRwdXRzJywgW10pLAorICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPWEuZ2V0KCdtZXNz
YWdlJywgYVsnYWN0aW9uX25hbWUnXSksCisgICAgICAgICAgICAgICAgICAgY29tbWFuZD1jbWQp
CisKKworZGVmIF9Xcml0ZU1TVlNVc2VyRmlsZShwcm9qZWN0X3BhdGgsIHZlcnNpb24sIHNwZWMp
OgorICAjIEFkZCBydW5fYXMgYW5kIHRlc3QgdGFyZ2V0cy4KKyAgaWYgJ3J1bl9hcycgaW4gc3Bl
YzoKKyAgICBydW5fYXMgPSBzcGVjWydydW5fYXMnXQorICAgIGFjdGlvbiA9IHJ1bl9hcy5nZXQo
J2FjdGlvbicsIFtdKQorICAgIGVudmlyb25tZW50ID0gcnVuX2FzLmdldCgnZW52aXJvbm1lbnQn
LCBbXSkKKyAgICB3b3JraW5nX2RpcmVjdG9yeSA9IHJ1bl9hcy5nZXQoJ3dvcmtpbmdfZGlyZWN0
b3J5JywgJy4nKQorICBlbGlmIGludChzcGVjLmdldCgndGVzdCcsIDApKToKKyAgICBhY3Rpb24g
PSBbJyQoVGFyZ2V0UGF0aCknLCAnLS1ndGVzdF9wcmludF90aW1lJ10KKyAgICBlbnZpcm9ubWVu
dCA9IFtdCisgICAgd29ya2luZ19kaXJlY3RvcnkgPSAnLicKKyAgZWxzZToKKyAgICByZXR1cm4g
ICMgTm90aGluZyB0byBhZGQKKyAgIyBXcml0ZSBvdXQgdGhlIHVzZXIgZmlsZS4KKyAgdXNlcl9m
aWxlID0gX0NyZWF0ZU1TVlNVc2VyRmlsZShwcm9qZWN0X3BhdGgsIHZlcnNpb24sIHNwZWMpCisg
IGZvciBjb25maWdfbmFtZSwgY19kYXRhIGluIHNwZWNbJ2NvbmZpZ3VyYXRpb25zJ10uaXRlcml0
ZW1zKCk6CisgICAgdXNlcl9maWxlLkFkZERlYnVnU2V0dGluZ3MoX0NvbmZpZ0Z1bGxOYW1lKGNv
bmZpZ19uYW1lLCBjX2RhdGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlv
biwgZW52aXJvbm1lbnQsIHdvcmtpbmdfZGlyZWN0b3J5KQorICB1c2VyX2ZpbGUuV3JpdGUoKQor
CisKK2RlZiBfQWRkQ29waWVzKGFjdGlvbnNfdG9fYWRkLCBzcGVjKToKKyAgY29waWVzID0gX0dl
dENvcGllcyhzcGVjKQorICBmb3IgaW5wdXRzLCBvdXRwdXRzLCBjbWQsIGRlc2NyaXB0aW9uIGlu
IGNvcGllczoKKyAgICBfQWRkQWN0aW9uU3RlcChhY3Rpb25zX3RvX2FkZCwgaW5wdXRzPWlucHV0
cywgb3V0cHV0cz1vdXRwdXRzLAorICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPWRlc2Ny
aXB0aW9uLCBjb21tYW5kPWNtZCkKKworCitkZWYgX0dldENvcGllcyhzcGVjKToKKyAgY29waWVz
ID0gW10KKyAgIyBBZGQgY29waWVzLgorICBmb3IgY3B5IGluIHNwZWMuZ2V0KCdjb3BpZXMnLCBb
XSk6CisgICAgZm9yIHNyYyBpbiBjcHkuZ2V0KCdmaWxlcycsIFtdKToKKyAgICAgIGRzdCA9IG9z
LnBhdGguam9pbihjcHlbJ2Rlc3RpbmF0aW9uJ10sIG9zLnBhdGguYmFzZW5hbWUoc3JjKSkKKyAg
ICAgICMgX0FkZEN1c3RvbUJ1aWxkVG9vbEZvck1TVlMoKSB3aWxsIGNhbGwgX0ZpeFBhdGgoKSBv
biB0aGUgaW5wdXRzIGFuZAorICAgICAgIyBvdXRwdXRzLCBzbyBkbyB0aGUgc2FtZSBmb3Igb3Vy
IGdlbmVyYXRlZCBjb21tYW5kIGxpbmUuCisgICAgICBpZiBzcmMuZW5kc3dpdGgoJy8nKToKKyAg
ICAgICAgc3JjX2JhcmUgPSBzcmNbOi0xXQorICAgICAgICBiYXNlX2RpciA9IHBvc2l4cGF0aC5z
cGxpdChzcmNfYmFyZSlbMF0KKyAgICAgICAgb3V0ZXJfZGlyID0gcG9zaXhwYXRoLnNwbGl0KHNy
Y19iYXJlKVsxXQorICAgICAgICBjbWQgPSAnY2QgIiVzIiAmJiB4Y29weSAvZSAvZiAveSAiJXMi
ICIlc1xcJXNcXCInICUgKAorICAgICAgICAgICAgX0ZpeFBhdGgoYmFzZV9kaXIpLCBvdXRlcl9k
aXIsIF9GaXhQYXRoKGRzdCksIG91dGVyX2RpcikKKyAgICAgICAgY29waWVzLmFwcGVuZCgoW3Ny
Y10sIFsnZHVtbXlfY29waWVzJywgZHN0XSwgY21kLAorICAgICAgICAgICAgICAgICAgICAgICAn
Q29weWluZyAlcyB0byAlcycgJSAoc3JjLCBkc3QpKSkKKyAgICAgIGVsc2U6CisgICAgICAgIGNt
ZCA9ICdta2RpciAiJXMiIDI+bnVsICYgc2V0IEVSUk9STEVWRUw9MCAmIGNvcHkgL1kgIiVzIiAi
JXMiJyAlICgKKyAgICAgICAgICAgIF9GaXhQYXRoKGNweVsnZGVzdGluYXRpb24nXSksIF9GaXhQ
YXRoKHNyYyksIF9GaXhQYXRoKGRzdCkpCisgICAgICAgIGNvcGllcy5hcHBlbmQoKFtzcmNdLCBb
ZHN0XSwgY21kLCAnQ29weWluZyAlcyB0byAlcycgJSAoc3JjLCBkc3QpKSkKKyAgcmV0dXJuIGNv
cGllcworCisKK2RlZiBfR2V0UGF0aERpY3Qocm9vdCwgcGF0aCk6CisgIGlmIHBhdGggPT0gJyc6
CisgICAgcmV0dXJuIHJvb3QKKyAgcGFyZW50LCBmb2xkZXIgPSBvcy5wYXRoLnNwbGl0KHBhdGgp
CisgIHBhcmVudF9kaWN0ID0gX0dldFBhdGhEaWN0KHJvb3QsIHBhcmVudCkKKyAgaWYgZm9sZGVy
IG5vdCBpbiBwYXJlbnRfZGljdDoKKyAgICBwYXJlbnRfZGljdFtmb2xkZXJdID0gZGljdCgpCisg
IHJldHVybiBwYXJlbnRfZGljdFtmb2xkZXJdCisKKworZGVmIF9EaWN0c1RvRm9sZGVycyhiYXNl
X3BhdGgsIGJ1Y2tldCwgZmxhdCk6CisgICMgQ29udmVydCB0byBmb2xkZXJzIHJlY3Vyc2l2ZWx5
LgorICBjaGlsZHJlbiA9IFtdCisgIGZvciBmb2xkZXIsIGNvbnRlbnRzIGluIGJ1Y2tldC5pdGVy
aXRlbXMoKToKKyAgICBpZiB0eXBlKGNvbnRlbnRzKSA9PSBkaWN0OgorICAgICAgZm9sZGVyX2No
aWxkcmVuID0gX0RpY3RzVG9Gb2xkZXJzKG9zLnBhdGguam9pbihiYXNlX3BhdGgsIGZvbGRlciks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMsIGZsYXQp
CisgICAgICBpZiBmbGF0OgorICAgICAgICBjaGlsZHJlbiArPSBmb2xkZXJfY2hpbGRyZW4KKyAg
ICAgIGVsc2U6CisgICAgICAgIGZvbGRlcl9jaGlsZHJlbiA9IE1TVlNOZXcuTVNWU0ZvbGRlcihv
cy5wYXRoLmpvaW4oYmFzZV9wYXRoLCBmb2xkZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmFtZT0nKCcgKyBmb2xkZXIgKyAnKScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyaWVzPWZvbGRlcl9jaGlsZHJl
bikKKyAgICAgICAgY2hpbGRyZW4uYXBwZW5kKGZvbGRlcl9jaGlsZHJlbikKKyAgICBlbHNlOgor
ICAgICAgY2hpbGRyZW4uYXBwZW5kKGNvbnRlbnRzKQorICByZXR1cm4gY2hpbGRyZW4KKworCitk
ZWYgX0NvbGxhcHNlU2luZ2xlcyhwYXJlbnQsIG5vZGUpOgorICAjIFJlY3Vyc2l2ZWx5IGV4cGxv
cmVyIHRoZSB0cmVlIG9mIGRpY3RzIGxvb2tpbmcgZm9yIHByb2plY3RzIHdoaWNoIGFyZQorICAj
IHRoZSBzb2xlIGl0ZW0gaW4gYSBmb2xkZXIgd2hpY2ggaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhl
IHByb2plY3QuIEJyaW5nCisgICMgc3VjaCBwcm9qZWN0cyB1cCBvbmUgbGV2ZWwuCisgIGlmICh0
eXBlKG5vZGUpID09IGRpY3QgYW5kCisgICAgICBsZW4obm9kZSkgPT0gMSBhbmQKKyAgICAgIG5v
ZGUua2V5cygpWzBdID09IHBhcmVudCArICcudmNwcm9qJyk6CisgICAgcmV0dXJuIG5vZGVbbm9k
ZS5rZXlzKClbMF1dCisgIGlmIHR5cGUobm9kZSkgIT0gZGljdDoKKyAgICByZXR1cm4gbm9kZQor
ICBmb3IgY2hpbGQgaW4gbm9kZS5rZXlzKCk6CisgICAgbm9kZVtjaGlsZF0gPSBfQ29sbGFwc2VT
aW5nbGVzKGNoaWxkLCBub2RlW2NoaWxkXSkKKyAgcmV0dXJuIG5vZGUKKworCitkZWYgX0dhdGhl
clNvbHV0aW9uRm9sZGVycyhzbG5fcHJvamVjdHMsIHByb2plY3Rfb2JqZWN0cywgZmxhdCk6Cisg
IHJvb3QgPSB7fQorICAjIENvbnZlcnQgaW50byBhIHRyZWUgb2YgZGljdHMgb24gcGF0aC4KKyAg
Zm9yIHAgaW4gc2xuX3Byb2plY3RzOgorICAgIGd5cF9maWxlLCB0YXJnZXQgPSBneXAuY29tbW9u
LlBhcnNlUXVhbGlmaWVkVGFyZ2V0KHApWzA6Ml0KKyAgICBneXBfZGlyID0gb3MucGF0aC5kaXJu
YW1lKGd5cF9maWxlKQorICAgIHBhdGhfZGljdCA9IF9HZXRQYXRoRGljdChyb290LCBneXBfZGly
KQorICAgIHBhdGhfZGljdFt0YXJnZXQgKyAnLnZjcHJvaiddID0gcHJvamVjdF9vYmplY3RzW3Bd
CisgICMgV2FsayBkb3duIGZyb20gdGhlIHRvcCB1bnRpbCB3ZSBoaXQgYSBmb2xkZXIgdGhhdCBo
YXMgbW9yZSB0aGFuIG9uZSBlbnRyeS4KKyAgIyBJbiBwcmFjdGljZSwgdGhpcyBzdHJpcHMgdGhl
IHRvcC1sZXZlbCAic3JjLyIgZGlyIGZyb20gdGhlIGhpZXJhcmNoeSBpbgorICAjIHRoZSBzb2x1
dGlvbi4KKyAgd2hpbGUgbGVuKHJvb3QpID09IDEgYW5kIHR5cGUocm9vdFtyb290LmtleXMoKVsw
XV0pID09IGRpY3Q6CisgICAgcm9vdCA9IHJvb3Rbcm9vdC5rZXlzKClbMF1dCisgICMgQ29sbGFw
c2Ugc2luZ2xlcy4KKyAgcm9vdCA9IF9Db2xsYXBzZVNpbmdsZXMoJycsIHJvb3QpCisgICMgTWVy
Z2UgYnVja2V0cyB1bnRpbCBldmVyeXRoaW5nIGlzIGEgcm9vdCBlbnRyeS4KKyAgcmV0dXJuIF9E
aWN0c1RvRm9sZGVycygnJywgcm9vdCwgZmxhdCkKKworCitkZWYgX0dldFBhdGhPZlByb2plY3Qo
cXVhbGlmaWVkX3RhcmdldCwgc3BlYywgb3B0aW9ucywgbXN2c192ZXJzaW9uKToKKyAgZGVmYXVs
dF9jb25maWcgPSBfR2V0RGVmYXVsdENvbmZpZ3VyYXRpb24oc3BlYykKKyAgcHJval9maWxlbmFt
ZSA9IGRlZmF1bHRfY29uZmlnLmdldCgnbXN2c19leGlzdGluZ192Y3Byb2onKQorICBpZiBub3Qg
cHJval9maWxlbmFtZToKKyAgICBwcm9qX2ZpbGVuYW1lID0gKHNwZWNbJ3RhcmdldF9uYW1lJ10g
KyBvcHRpb25zLnN1ZmZpeCArCisgICAgICAgIG1zdnNfdmVyc2lvbi5Qcm9qZWN0RXh0ZW5zaW9u
KCkpCisKKyAgYnVpbGRfZmlsZSA9IGd5cC5jb21tb24uQnVpbGRGaWxlKHF1YWxpZmllZF90YXJn
ZXQpCisgIHByb2pfcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KGJ1aWxkX2ZpbGUp
WzBdLCBwcm9qX2ZpbGVuYW1lKQorICBmaXhwYXRoX3ByZWZpeCA9IE5vbmUKKyAgaWYgb3B0aW9u
cy5nZW5lcmF0b3Jfb3V0cHV0OgorICAgIHByb2plY3REaXJQYXRoID0gb3MucGF0aC5kaXJuYW1l
KG9zLnBhdGguYWJzcGF0aChwcm9qX3BhdGgpKQorICAgIHByb2pfcGF0aCA9IG9zLnBhdGguam9p
bihvcHRpb25zLmdlbmVyYXRvcl9vdXRwdXQsIHByb2pfcGF0aCkKKyAgICBmaXhwYXRoX3ByZWZp
eCA9IGd5cC5jb21tb24uUmVsYXRpdmVQYXRoKHByb2plY3REaXJQYXRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHByb2pfcGF0
aCkpCisgIHJldHVybiBwcm9qX3BhdGgsIGZpeHBhdGhfcHJlZml4CisKKworZGVmIF9HZXRQbGF0
Zm9ybU92ZXJyaWRlc09mUHJvamVjdChzcGVjKToKKyAgIyBQcmVwYXJlIGEgZGljdCBpbmRpY2F0
aW5nIHdoaWNoIHByb2plY3QgY29uZmlndXJhdGlvbnMgYXJlIHVzZWQgZm9yIHdoaWNoCisgICMg
c29sdXRpb24gY29uZmlndXJhdGlvbnMgZm9yIHRoaXMgdGFyZ2V0LgorICBjb25maWdfcGxhdGZv
cm1fb3ZlcnJpZGVzID0ge30KKyAgZm9yIGNvbmZpZ19uYW1lLCBjIGluIHNwZWNbJ2NvbmZpZ3Vy
YXRpb25zJ10uaXRlcml0ZW1zKCk6CisgICAgY29uZmlnX2Z1bGxuYW1lID0gX0NvbmZpZ0Z1bGxO
YW1lKGNvbmZpZ19uYW1lLCBjKQorICAgIHBsYXRmb3JtID0gYy5nZXQoJ21zdnNfdGFyZ2V0X3Bs
YXRmb3JtJywgX0NvbmZpZ1BsYXRmb3JtKGMpKQorICAgIGZpeGVkX2NvbmZpZ19mdWxsbmFtZSA9
ICclc3wlcycgJSAoCisgICAgICAgIF9Db25maWdCYXNlTmFtZShjb25maWdfbmFtZSwgX0NvbmZp
Z1BsYXRmb3JtKGMpKSwgcGxhdGZvcm0pCisgICAgY29uZmlnX3BsYXRmb3JtX292ZXJyaWRlc1tj
b25maWdfZnVsbG5hbWVdID0gZml4ZWRfY29uZmlnX2Z1bGxuYW1lCisgIHJldHVybiBjb25maWdf
cGxhdGZvcm1fb3ZlcnJpZGVzCisKKworZGVmIF9DcmVhdGVQcm9qZWN0T2JqZWN0cyh0YXJnZXRf
bGlzdCwgdGFyZ2V0X2RpY3RzLCBvcHRpb25zLCBtc3ZzX3ZlcnNpb24pOgorICAiIiJDcmVhdGUg
YSBNU1ZTUHJvamVjdCBvYmplY3QgZm9yIHRoZSB0YXJnZXRzIGZvdW5kIGluIHRhcmdldCBsaXN0
LgorCisgIEFyZ3VtZW50czoKKyAgICB0YXJnZXRfbGlzdDogdGhlIGxpc3Qgb2YgdGFyZ2V0cyB0
byBnZW5lcmF0ZSBwcm9qZWN0IG9iamVjdHMgZm9yLgorICAgIHRhcmdldF9kaWN0czogdGhlIGRp
Y3Rpb25hcnkgb2Ygc3BlY2lmaWNhdGlvbnMuCisgICAgb3B0aW9uczogZ2xvYmFsIGdlbmVyYXRv
ciBvcHRpb25zLgorICAgIHZlcnNpb246IHRoZSBNU1ZTVmVyc2lvbiBvYmplY3QuCisgIFJldHVy
bnM6CisgICAgQSBzZXQgb2YgY3JlYXRlZCBwcm9qZWN0cywga2V5ZWQgYnkgdGFyZ2V0LgorICAi
IiIKKyAgZ2xvYmFsIGZpeHBhdGhfcHJlZml4CisgICMgR2VuZXJhdGUgZWFjaCBwcm9qZWN0Lgor
ICBwcm9qZWN0cyA9IHt9CisgIGZvciBxdWFsaWZpZWRfdGFyZ2V0IGluIHRhcmdldF9saXN0Ogor
ICAgIHNwZWMgPSB0YXJnZXRfZGljdHNbcXVhbGlmaWVkX3RhcmdldF0KKyAgICBpZiBzcGVjWyd0
b29sc2V0J10gIT0gJ3RhcmdldCc6CisgICAgICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAg
J011bHRpcGxlIHRvb2xzZXRzIG5vdCBzdXBwb3J0ZWQgaW4gbXN2cyBidWlsZCAodGFyZ2V0ICVz
KScgJQorICAgICAgICAgIHF1YWxpZmllZF90YXJnZXQpCisgICAgcHJval9wYXRoLCBmaXhwYXRo
X3ByZWZpeCA9IF9HZXRQYXRoT2ZQcm9qZWN0KHF1YWxpZmllZF90YXJnZXQsIHNwZWMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMsIG1z
dnNfdmVyc2lvbikKKyAgICBndWlkID0gX0dldEd1aWRPZlByb2plY3QocHJval9wYXRoLCBzcGVj
KQorICAgIG92ZXJyaWRlcyA9IF9HZXRQbGF0Zm9ybU92ZXJyaWRlc09mUHJvamVjdChzcGVjKQor
ICAgIGJ1aWxkX2ZpbGUgPSBneXAuY29tbW9uLkJ1aWxkRmlsZShxdWFsaWZpZWRfdGFyZ2V0KQor
ICAgICMgQ3JlYXRlIG9iamVjdCBmb3IgdGhpcyBwcm9qZWN0LgorICAgIG9iaiA9IE1TVlNOZXcu
TVNWU1Byb2plY3QoCisgICAgICAgIF9GaXhQYXRoKHByb2pfcGF0aCksCisgICAgICAgIG5hbWU9
c3BlY1sndGFyZ2V0X25hbWUnXSwKKyAgICAgICAgZ3VpZD1ndWlkLAorICAgICAgICBzcGVjPXNw
ZWMsCisgICAgICAgIGJ1aWxkX2ZpbGU9YnVpbGRfZmlsZSwKKyAgICAgICAgY29uZmlnX3BsYXRm
b3JtX292ZXJyaWRlcz1vdmVycmlkZXMsCisgICAgICAgIGZpeHBhdGhfcHJlZml4PWZpeHBhdGhf
cHJlZml4KQorICAgIHByb2plY3RzW3F1YWxpZmllZF90YXJnZXRdID0gb2JqCisgICMgU2V0IGFs
bCB0aGUgZGVwZW5kZW5jaWVzCisgIGZvciBwcm9qZWN0IGluIHByb2plY3RzLnZhbHVlcygpOgor
ICAgIGRlcHMgPSBwcm9qZWN0LnNwZWMuZ2V0KCdkZXBlbmRlbmNpZXMnLCBbXSkKKyAgICBkZXBz
ID0gW3Byb2plY3RzW2RdIGZvciBkIGluIGRlcHNdCisgICAgcHJvamVjdC5zZXRfZGVwZW5kZW5j
aWVzKGRlcHMpCisgIHJldHVybiBwcm9qZWN0cworCisKK2RlZiBDYWxjdWxhdGVWYXJpYWJsZXMo
ZGVmYXVsdF92YXJpYWJsZXMsIHBhcmFtcyk6CisgICIiIkdlbmVyYXRlZCB2YXJpYWJsZXMgdGhh
dCByZXF1aXJlIHBhcmFtcyB0byBiZSBrbm93bi4iIiIKKworICBnZW5lcmF0b3JfZmxhZ3MgPSBw
YXJhbXMuZ2V0KCdnZW5lcmF0b3JfZmxhZ3MnLCB7fSkKKworICAjIFNlbGVjdCBwcm9qZWN0IGZp
bGUgZm9ybWF0IHZlcnNpb24gKGlmIHVuc2V0LCBkZWZhdWx0IHRvIGF1dG8gZGV0ZWN0aW5nKS4K
KyAgbXN2c192ZXJzaW9uID0gXAorICAgIE1TVlNWZXJzaW9uLlNlbGVjdFZpc3VhbFN0dWRpb1Zl
cnNpb24oZ2VuZXJhdG9yX2ZsYWdzLmdldCgnbXN2c192ZXJzaW9uJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nKSkK
KyAgIyBTdGFzaCBtc3ZzX3ZlcnNpb24gZm9yIGxhdGVyIChzbyB3ZSBkb24ndCBoYXZlIHRvIHBy
b2JlIHRoZSBzeXN0ZW0gdHdpY2UpLgorICBwYXJhbXNbJ21zdnNfdmVyc2lvbiddID0gbXN2c192
ZXJzaW9uCisKKyAgIyBTZXQgYSB2YXJpYWJsZSBzbyBjb25kaXRpb25zIGNhbiBiZSBiYXNlZCBv
biBtc3ZzX3ZlcnNpb24uCisgIGRlZmF1bHRfdmFyaWFibGVzWydNU1ZTX1ZFUlNJT04nXSA9IG1z
dnNfdmVyc2lvbi5TaG9ydE5hbWUoKQorCisgICMgVG8gZGV0ZXJtaW5lIHByb2Nlc3NvciB3b3Jk
IHNpemUgb24gV2luZG93cywgaW4gYWRkaXRpb24gdG8gY2hlY2tpbmcKKyAgIyBQUk9DRVNTT1Jf
QVJDSElURUNUVVJFICh3aGljaCByZWZsZWN0cyB0aGUgd29yZCBzaXplIG9mIHRoZSBjdXJyZW50
CisgICMgcHJvY2VzcyksIGl0IGlzIGFsc28gbmVjZXNzYXJ5IHRvIGNoZWNrIFBST0NFU1NPUl9B
UkNJVEVXNjQzMiAod2hpY2gKKyAgIyBjb250YWlucyB0aGUgYWN0dWFsIHdvcmQgc2l6ZSBvZiB0
aGUgc3lzdGVtIHdoZW4gcnVubmluZyB0aHJ1IFdPVzY0KS4KKyAgaWYgKG9zLmVudmlyb24uZ2V0
KCdQUk9DRVNTT1JfQVJDSElURUNUVVJFJywgJycpLmZpbmQoJzY0JykgPj0gMCBvcgorICAgICAg
b3MuZW52aXJvbi5nZXQoJ1BST0NFU1NPUl9BUkNISVRFVzY0MzInLCAnJykuZmluZCgnNjQnKSA+
PSAwKToKKyAgICBkZWZhdWx0X3ZhcmlhYmxlc1snTVNWU19PU19CSVRTJ10gPSA2NAorICBlbHNl
OgorICAgIGRlZmF1bHRfdmFyaWFibGVzWydNU1ZTX09TX0JJVFMnXSA9IDMyCisKKworZGVmIEdl
bmVyYXRlT3V0cHV0KHRhcmdldF9saXN0LCB0YXJnZXRfZGljdHMsIGRhdGEsIHBhcmFtcyk6Cisg
ICIiIkdlbmVyYXRlIC5zbG4gYW5kIC52Y3Byb2ogZmlsZXMuCisKKyAgVGhpcyBpcyB0aGUgZW50
cnkgcG9pbnQgZm9yIHRoaXMgZ2VuZXJhdG9yLgorICBBcmd1bWVudHM6CisgICAgdGFyZ2V0X2xp
c3Q6IExpc3Qgb2YgdGFyZ2V0IHBhaXJzOiAnYmFzZS9iYXNlLmd5cDpiYXNlJy4KKyAgICB0YXJn
ZXRfZGljdHM6IERpY3Qgb2YgdGFyZ2V0IHByb3BlcnRpZXMga2V5ZWQgb24gdGFyZ2V0IHBhaXIu
CisgICAgZGF0YTogRGljdGlvbmFyeSBjb250YWluaW5nIHBlciAuZ3lwIGRhdGEuCisgICIiIgor
ICBnbG9iYWwgZml4cGF0aF9wcmVmaXgKKworICBvcHRpb25zID0gcGFyYW1zWydvcHRpb25zJ10K
KyAgZ2VuZXJhdG9yX2ZsYWdzID0gcGFyYW1zLmdldCgnZ2VuZXJhdG9yX2ZsYWdzJywge30pCisK
KyAgIyBHZXQgdGhlIHByb2plY3QgZmlsZSBmb3JtYXQgdmVyc2lvbiBiYWNrIG91dCBvZiB3aGVy
ZSB3ZSBzdGFzaGVkIGl0IGluCisgICMgR2VuZXJhdG9yQ2FsY3VsYXRlZFZhcmlhYmxlcy4KKyAg
bXN2c192ZXJzaW9uID0gcGFyYW1zWydtc3ZzX3ZlcnNpb24nXQorCisgICMgUHJlcGFyZSB0aGUg
c2V0IG9mIGNvbmZpZ3VyYXRpb25zLgorICBjb25maWdzID0gc2V0KCkKKyAgZm9yIHF1YWxpZmll
ZF90YXJnZXQgaW4gdGFyZ2V0X2xpc3Q6CisgICAgc3BlYyA9IHRhcmdldF9kaWN0c1txdWFsaWZp
ZWRfdGFyZ2V0XQorICAgIGZvciBjb25maWdfbmFtZSwgY29uZmlnIGluIHNwZWNbJ2NvbmZpZ3Vy
YXRpb25zJ10uaXRlcml0ZW1zKCk6CisgICAgICBjb25maWdzLmFkZChfQ29uZmlnRnVsbE5hbWUo
Y29uZmlnX25hbWUsIGNvbmZpZykpCisgIGNvbmZpZ3MgPSBsaXN0KGNvbmZpZ3MpCisKKyAgIyBG
aWd1cmUgb3V0IGFsbCB0aGUgcHJvamVjdHMgdGhhdCB3aWxsIGJlIGdlbmVyYXRlZCBhbmQgdGhl
aXIgZ3VpZHMKKyAgcHJvamVjdF9vYmplY3RzID0gX0NyZWF0ZVByb2plY3RPYmplY3RzKHRhcmdl
dF9saXN0LCB0YXJnZXRfZGljdHMsIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtc3ZzX3ZlcnNpb24pCisKKyAgIyBHZW5lcmF0ZSBlYWNoIHByb2pl
Y3QuCisgIGZvciBwcm9qZWN0IGluIHByb2plY3Rfb2JqZWN0cy52YWx1ZXMoKToKKyAgICBmaXhw
YXRoX3ByZWZpeCA9IHByb2plY3QuZml4cGF0aF9wcmVmaXgKKyAgICBfR2VuZXJhdGVQcm9qZWN0
KHByb2plY3QsIG9wdGlvbnMsIG1zdnNfdmVyc2lvbikKKyAgZml4cGF0aF9wcmVmaXggPSBOb25l
CisKKyAgZm9yIGJ1aWxkX2ZpbGUgaW4gZGF0YS5rZXlzKCk6CisgICAgIyBWYWxpZGF0ZSBidWls
ZF9maWxlIGV4dGVuc2lvbgorICAgIGlmIGJ1aWxkX2ZpbGVbLTQ6XSAhPSAnLmd5cCc6CisgICAg
ICBjb250aW51ZQorICAgIHNsbl9wYXRoID0gYnVpbGRfZmlsZVs6LTRdICsgb3B0aW9ucy5zdWZm
aXggKyAnLnNsbicKKyAgICBpZiBvcHRpb25zLmdlbmVyYXRvcl9vdXRwdXQ6CisgICAgICBzbG5f
cGF0aCA9IG9zLnBhdGguam9pbihvcHRpb25zLmdlbmVyYXRvcl9vdXRwdXQsIHNsbl9wYXRoKQor
ICAgICMgR2V0IHByb2plY3RzIGluIHRoZSBzb2x1dGlvbiwgYW5kIHRoZWlyIGRlcGVuZGVudHMu
CisgICAgc2xuX3Byb2plY3RzID0gZ3lwLmNvbW1vbi5CdWlsZEZpbGVUYXJnZXRzKHRhcmdldF9s
aXN0LCBidWlsZF9maWxlKQorICAgIHNsbl9wcm9qZWN0cyArPSBneXAuY29tbW9uLkRlZXBEZXBl
bmRlbmN5VGFyZ2V0cyh0YXJnZXRfZGljdHMsIHNsbl9wcm9qZWN0cykKKyAgICAjIENyZWF0ZSBm
b2xkZXIgaGllcmFyY2h5LgorICAgIHJvb3RfZW50cmllcyA9IF9HYXRoZXJTb2x1dGlvbkZvbGRl
cnMoCisgICAgICAgIHNsbl9wcm9qZWN0cywgcHJvamVjdF9vYmplY3RzLCBmbGF0PW1zdnNfdmVy
c2lvbi5GbGF0U29sdXRpb24oKSkKKyAgICAjIENyZWF0ZSBzb2x1dGlvbi4KKyAgICBzbG4gPSBN
U1ZTTmV3Lk1TVlNTb2x1dGlvbihzbG5fcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbnRyaWVzPXJvb3RfZW50cmllcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXJpYW50cz1jb25maWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnNp
dGVQcm9wZXJ0aWVzPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNp
b249bXN2c192ZXJzaW9uKQorICAgIHNsbi5Xcml0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvcHlsaWIvZ3lwL2dlbmVyYXRvci9zY29ucy5weSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC9weWxpYi9neXAvZ2VuZXJhdG9yL3Njb25zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3M2Y5ZTA0
N2RlZGRhNzMyNzY2MWVmODM5YzIwZmQ2YTgyOGRjYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIvZ3lwL2dlbmVyYXRvci9zY29ucy5weQpAQCAtMCwwICsx
LDEwNDUgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKworaW1wb3J0IGd5cAoraW1wb3J0IGd5cC5jb21tb24KK2ltcG9y
dCBneXAuU0NvbnMgYXMgU0NvbnMKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgcHByaW50CitpbXBv
cnQgcmUKKworCisjIFRPRE86ICByZW1vdmUgd2hlbiB3ZSBkZWxldGUgdGhlIGxhc3QgV3JpdGVM
aXN0KCkgY2FsbCBpbiB0aGlzIG1vZHVsZQorV3JpdGVMaXN0ID0gU0NvbnMuV3JpdGVMaXN0CisK
KworZ2VuZXJhdG9yX2RlZmF1bHRfdmFyaWFibGVzID0geworICAgICdFWEVDVVRBQkxFX1BSRUZJ
WCc6ICcnLAorICAgICdFWEVDVVRBQkxFX1NVRkZJWCc6ICcnLAorICAgICdTVEFUSUNfTElCX1BS
RUZJWCc6ICcke0xJQlBSRUZJWH0nLAorICAgICdTSEFSRURfTElCX1BSRUZJWCc6ICcke1NITElC
UFJFRklYfScsCisgICAgJ1NUQVRJQ19MSUJfU1VGRklYJzogJyR7TElCU1VGRklYfScsCisgICAg
J1NIQVJFRF9MSUJfU1VGRklYJzogJyR7U0hMSUJTVUZGSVh9JywKKyAgICAnSU5URVJNRURJQVRF
X0RJUic6ICcke0lOVEVSTUVESUFURV9ESVJ9JywKKyAgICAnU0hBUkVEX0lOVEVSTUVESUFURV9E
SVInOiAnJHtTSEFSRURfSU5URVJNRURJQVRFX0RJUn0nLAorICAgICdPUyc6ICdsaW51eCcsCisg
ICAgJ1BST0RVQ1RfRElSJzogJyRUT1BfQlVJTERESVInLAorICAgICdTSEFSRURfTElCX0RJUic6
ICckTElCX0RJUicsCisgICAgJ0xJQl9ESVInOiAnJExJQl9ESVInLAorICAgICdSVUxFX0lOUFVU
X1JPT1QnOiAnJHtTT1VSQ0UuZmlsZWJhc2V9JywKKyAgICAnUlVMRV9JTlBVVF9FWFQnOiAnJHtT
T1VSQ0Uuc3VmZml4fScsCisgICAgJ1JVTEVfSU5QVVRfTkFNRSc6ICcke1NPVVJDRS5maWxlfScs
CisgICAgJ1JVTEVfSU5QVVRfUEFUSCc6ICcke1NPVVJDRS5hYnNwYXRofScsCisgICAgJ0NPTkZJ
R1VSQVRJT05fTkFNRSc6ICcke0NPTkZJR19OQU1FfScsCit9CisKKyMgVGVsbCBHWVAgaG93IHRv
IHByb2Nlc3MgdGhlIGlucHV0IGZvciB1cy4KK2dlbmVyYXRvcl9oYW5kbGVzX3ZhcmlhbnRzID0g
VHJ1ZQorZ2VuZXJhdG9yX3dhbnRzX2Fic29sdXRlX2J1aWxkX2ZpbGVfcGF0aHMgPSBUcnVlCisK
KworZGVmIEZpeFBhdGgocGF0aCwgcHJlZml4KToKKyAgaWYgbm90IG9zLnBhdGguaXNhYnMocGF0
aCkgYW5kIG5vdCBwYXRoWzBdID09ICckJzoKKyAgICBwYXRoID0gcHJlZml4ICsgcGF0aAorICBy
ZXR1cm4gcGF0aAorCisKK2hlYWRlciA9ICIiIlwKKyMgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZDsg
ZG8gbm90IGVkaXQuCisiIiIKKworCitfYWxpYXNfdGVtcGxhdGUgPSAiIiIKK2lmIEdldE9wdGlv
bigndmVyYm9zZScpOgorICBfYWN0aW9uID0gQWN0aW9uKFslKGFjdGlvbilzXSkKK2Vsc2U6Cisg
IF9hY3Rpb24gPSBBY3Rpb24oWyUoYWN0aW9uKXNdLCAlKG1lc3NhZ2UpcykKK19vdXRwdXRzID0g
ZW52LkFsaWFzKAorICBbJ18lKHRhcmdldF9uYW1lKXNfYWN0aW9uJ10sCisgICUoaW5wdXRzKXMs
CisgIF9hY3Rpb24KKykKK2Vudi5BbHdheXNCdWlsZChfb3V0cHV0cykKKyIiIgorCitfcnVuX2Fz
X3RlbXBsYXRlID0gIiIiCitpZiBHZXRPcHRpb24oJ3ZlcmJvc2UnKToKKyAgX2FjdGlvbiA9IEFj
dGlvbihbJShhY3Rpb24pc10pCitlbHNlOgorICBfYWN0aW9uID0gQWN0aW9uKFslKGFjdGlvbilz
XSwgJShtZXNzYWdlKXMpCisiIiIKKworX3J1bl9hc190ZW1wbGF0ZV9zdWZmaXggPSAiIiIKK19y
dW5fYXNfdGFyZ2V0ID0gZW52LkFsaWFzKCdydW5fJSh0YXJnZXRfbmFtZSlzJywgdGFyZ2V0X2Zp
bGVzLCBfYWN0aW9uKQorZW52LlJlcXVpcmVzKF9ydW5fYXNfdGFyZ2V0LCBbCisgICAgQWxpYXMo
JyUodGFyZ2V0X25hbWUpcycpLAorXSkKK2Vudi5BbHdheXNCdWlsZChfcnVuX2FzX3RhcmdldCkK
KyIiIgorCitfY29tbWFuZF90ZW1wbGF0ZSA9ICIiIgoraWYgR2V0T3B0aW9uKCd2ZXJib3NlJyk6
CisgIF9hY3Rpb24gPSBBY3Rpb24oWyUoYWN0aW9uKXNdKQorZWxzZToKKyAgX2FjdGlvbiA9IEFj
dGlvbihbJShhY3Rpb24pc10sICUobWVzc2FnZSlzKQorX291dHB1dHMgPSBlbnYuQ29tbWFuZCgK
KyAgJShvdXRwdXRzKXMsCisgICUoaW5wdXRzKXMsCisgIF9hY3Rpb24KKykKKyIiIgorCisjIFRo
aXMgaXMgY29waWVkIGZyb20gdGhlIGRlZmF1bHQgU0NvbnMgYWN0aW9uLCB1cGRhdGVkIHRvIGhh
bmRsZSBzeW1saW5rcy4KK19jb3B5X2FjdGlvbl90ZW1wbGF0ZSA9ICIiIgoraW1wb3J0IHNodXRp
bAoraW1wb3J0IFNDb25zLkFjdGlvbgorCitkZWYgX2NvcHlfZmlsZXNfb3JfZGlyc19vcl9zeW1s
aW5rcyhkZXN0LCBzcmMpOgorICBTQ29ucy5Ob2RlLkZTLmludmFsaWRhdGVfbm9kZV9tZW1vcyhk
ZXN0KQorICBpZiBTQ29ucy5VdGlsLmlzX0xpc3Qoc3JjKSBhbmQgb3MucGF0aC5pc2RpcihkZXN0
KToKKyAgICBmb3IgZmlsZSBpbiBzcmM6CisgICAgICBzaHV0aWwuY29weTIoZmlsZSwgZGVzdCkK
KyAgICByZXR1cm4gMAorICBlbGlmIG9zLnBhdGguaXNsaW5rKHNyYyk6CisgICAgbGlua3RvID0g
b3MucmVhZGxpbmsoc3JjKQorICAgIG9zLnN5bWxpbmsobGlua3RvLCBkZXN0KQorICAgIHJldHVy
biAwCisgIGVsaWYgb3MucGF0aC5pc2ZpbGUoc3JjKToKKyAgICByZXR1cm4gc2h1dGlsLmNvcHky
KHNyYywgZGVzdCkKKyAgZWxzZToKKyAgICByZXR1cm4gc2h1dGlsLmNvcHl0cmVlKHNyYywgZGVz
dCwgMSkKKworZGVmIF9jb3B5X2ZpbGVzX29yX2RpcnNfb3Jfc3ltbGlua3Nfc3RyKGRlc3QsIHNy
Yyk6CisgIHJldHVybiAnQ29weWluZyAlcyB0byAlcyAuLi4nICUgKHNyYywgZGVzdCkKKworR1lQ
Q29weSA9IFNDb25zLkFjdGlvbi5BY3Rpb25GYWN0b3J5KF9jb3B5X2ZpbGVzX29yX2RpcnNfb3Jf
c3ltbGlua3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvcHlfZmls
ZXNfb3JfZGlyc19vcl9zeW1saW5rc19zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udmVydD1zdHIpCisiIiIKKworX3J1bGVfdGVtcGxhdGUgPSAiIiIKKyUobmFt
ZSlzX2FkZGl0aW9uYWxfaW5wdXRzID0gJShpbnB1dHMpcworJShuYW1lKXNfb3V0cHV0cyA9ICUo
b3V0cHV0cylzCitkZWYgJShuYW1lKXNfZW1pdHRlcih0YXJnZXQsIHNvdXJjZSwgZW52KToKKyAg
cmV0dXJuICglKG5hbWUpc19vdXRwdXRzLCBzb3VyY2UgKyAlKG5hbWUpc19hZGRpdGlvbmFsX2lu
cHV0cykKK2lmIEdldE9wdGlvbigndmVyYm9zZScpOgorICAlKG5hbWUpc19hY3Rpb24gPSBBY3Rp
b24oWyUoYWN0aW9uKXNdKQorZWxzZToKKyAgJShuYW1lKXNfYWN0aW9uID0gQWN0aW9uKFslKGFj
dGlvbilzXSwgJShtZXNzYWdlKXMpCitlbnZbJ0JVSUxERVJTJ11bJyUobmFtZSlzJ10gPSBCdWls
ZGVyKGFjdGlvbj0lKG5hbWUpc19hY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVtaXR0ZXI9JShuYW1lKXNfZW1pdHRlcikKKworX291dHB1dHMgPSBbXQorX3By
b2Nlc3NlZF9pbnB1dF9maWxlcyA9IFtdCitmb3IgaW5maWxlIGluIGlucHV0X2ZpbGVzOgorICBp
ZiAodHlwZShpbmZpbGUpID09IHR5cGUoJycpCisgICAgICBhbmQgbm90IG9zLnBhdGguaXNhYnMo
aW5maWxlKQorICAgICAgYW5kIG5vdCBpbmZpbGVbMF0gPT0gJyQnKToKKyAgICBpbmZpbGUgPSAl
KHNyY19kaXIpciArIGluZmlsZQorICBpZiBzdHIoaW5maWxlKS5lbmRzd2l0aCgnLiUoZXh0ZW5z
aW9uKXMnKToKKyAgICBfZ2VuZXJhdGVkID0gZW52LiUobmFtZSlzKGluZmlsZSkKKyAgICBlbnYu
UHJlY2lvdXMoX2dlbmVyYXRlZCkKKyAgICBfb3V0cHV0cy5hcHBlbmQoX2dlbmVyYXRlZCkKKyAg
ICAlKHByb2Nlc3Nfb3V0cHV0c19hc19zb3VyY2VzX2xpbmUpcworICBlbHNlOgorICAgIF9wcm9j
ZXNzZWRfaW5wdXRfZmlsZXMuYXBwZW5kKGluZmlsZSkKK3ByZXJlcXVpc2l0ZXMuZXh0ZW5kKF9v
dXRwdXRzKQoraW5wdXRfZmlsZXMgPSBfcHJvY2Vzc2VkX2lucHV0X2ZpbGVzCisiIiIKKworX3Nw
YXduX2hhY2sgPSAiIiIKK2ltcG9ydCByZQoraW1wb3J0IFNDb25zLlBsYXRmb3JtLnBvc2l4Citu
ZWVkc19zaGVsbCA9IHJlLmNvbXBpbGUoJ1siXFwnPjwhXiZdJykKK2RlZiBneXBfc3Bhd24oc2gs
IGVzY2FwZSwgY21kLCBhcmdzLCBlbnYpOgorICBkZWYgc3RyaXBfc2NvbnNfcXVvdGVzKGFyZyk6
CisgICAgaWYgYXJnWzBdID09ICciJyBhbmQgYXJnWy0xXSA9PSAnIic6CisgICAgICByZXR1cm4g
YXJnWzE6LTFdCisgICAgcmV0dXJuIGFyZworICBzdHJpcHBlZF9hcmdzID0gW3N0cmlwX3Njb25z
X3F1b3RlcyhhKSBmb3IgYSBpbiBhcmdzXQorICBpZiBuZWVkc19zaGVsbC5zZWFyY2goJyAnLmpv
aW4oc3RyaXBwZWRfYXJncykpOgorICAgIHJldHVybiBTQ29ucy5QbGF0Zm9ybS5wb3NpeC5leGVj
X3NwYXdudnBlKFtzaCwgJy1jJywgJyAnLmpvaW4oYXJncyldLCBlbnYpCisgIGVsc2U6CisgICAg
cmV0dXJuIFNDb25zLlBsYXRmb3JtLnBvc2l4LmV4ZWNfc3Bhd252cGUoc3RyaXBwZWRfYXJncywg
ZW52KQorIiIiCisKKworZGVmIEVzY2FwZVNoZWxsQXJndW1lbnQocyk6CisgICIiIlF1b3RlcyBh
biBhcmd1bWVudCBzbyB0aGF0IGl0IHdpbGwgYmUgaW50ZXJwcmV0ZWQgbGl0ZXJhbGx5IGJ5IGEg
UE9TSVgKKyAgICAgc2hlbGwuIFRha2VuIGZyb20KKyAgICAgaHR0cDovL3N0YWNrb3ZlcmZsb3cu
Y29tL3F1ZXN0aW9ucy8zNTgxNy93aGF0cy10aGUtYmVzdC13YXktdG8tZXNjYXBlLW9zc3lzdGVt
LWNhbGxzLWluLXB5dGhvbgorICAgICAiIiIKKyAgcmV0dXJuICInIiArIHMucmVwbGFjZSgiJyIs
ICInXFwnJyIpICsgIiciCisKKworZGVmIEludmVydE5haXZlU0NvbnNRdW90aW5nKHMpOgorICAi
IiJTQ29ucyB0cmllcyB0byAiaGVscCIgd2l0aCBxdW90aW5nIGJ5IG5haXZlbHkgcHV0dGluZyBk
b3VibGUtcXVvdGVzIGFyb3VuZAorICAgICBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGNvbnRhaW5p
bmcgc3BhY2Ugb3IgdGFiLCB3aGljaCBpcyBicm9rZW4gZm9yIGFsbAorICAgICBidXQgdHJpdmlh
bCBjYXNlcywgc28gd2UgdW5kbyBpdC4gKFNlZSBxdW90ZV9zcGFjZXMoKSBpbiBTdWJzdC5weSki
IiIKKyAgaWYgJyAnIGluIHMgb3IgJ1x0JyBpbiBzOgorICAgICMgVGhlbiBTQ29ucyB3aWxsIHB1
dCBkb3VibGUtcXVvdGVzIGFyb3VuZCB0aGlzLCBzbyBhZGQgb3VyIG93biBxdW90ZXMKKyAgICAj
IHRvIGNsb3NlIGl0cyBxdW90ZXMgYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kLgorICAgIHMgPSAn
IicgKyBzICsgJyInCisgIHJldHVybiBzCisKKworZGVmIEVzY2FwZVNDb25zVmFyaWFibGVFeHBh
bnNpb24ocyk6CisgICIiIlNDb25zIGhhcyBpdHMgb3duIHZhcmlhYmxlIGV4cGFuc2lvbiBzeW50
YXggdXNpbmcgJC4gV2UgbXVzdCBlc2NhcGUgaXQgZm9yCisgICAgc3RyaW5ncyB0byBiZSBpbnRl
cnByZXRlZCBsaXRlcmFsbHkuIEZvciBzb21lIHJlYXNvbiB0aGlzIHJlcXVpcmVzIGZvdXIKKyAg
ICBkb2xsYXIgc2lnbnMsIG5vdCB0d28sIGV2ZW4gd2l0aG91dCB0aGUgc2hlbGwgaW52b2x2ZWQu
IiIiCisgIHJldHVybiBzLnJlcGxhY2UoJyQnLCAnJCQkJCcpCisKKworZGVmIEVzY2FwZUNwcERl
ZmluZShzKToKKyAgIiIiRXNjYXBlcyBhIENQUCBkZWZpbmUgc28gdGhhdCBpdCB3aWxsIHJlYWNo
IHRoZSBjb21waWxlciB1bmFsdGVyZWQuIiIiCisgIHMgPSBFc2NhcGVTaGVsbEFyZ3VtZW50KHMp
CisgIHMgPSBJbnZlcnROYWl2ZVNDb25zUXVvdGluZyhzKQorICBzID0gRXNjYXBlU0NvbnNWYXJp
YWJsZUV4cGFuc2lvbihzKQorICByZXR1cm4gcworCisKK2RlZiBHZW5lcmF0ZUNvbmZpZyhmcCwg
Y29uZmlnLCBpbmRlbnQ9JycsIHNyY19kaXI9JycpOgorICAiIiIKKyAgR2VuZXJhdGVzIFNDb25z
IGRpY3Rpb25hcnkgaXRlbXMgZm9yIGEgZ3lwIGNvbmZpZ3VyYXRpb24uCisKKyAgVGhpcyBwcm92
aWRlcyB0aGUgbWFpbiB0cmFuc2xhdGlvbiBiZXR3ZWVuIHRoZSAobG93ZXItY2FzZSkgZ3lwIHNl
dHRpbmdzCisgIGtleXdvcmRzIGFuZCB0aGUgKHVwcGVyLWNhc2UpIFNDb25zIGNvbnN0cnVjdGlv
biB2YXJpYWJsZXMuCisgICIiIgorICB2YXJfbWFwcGluZyA9IHsKKyAgICAgICdBU0ZMQUdTJyA6
ICdhc2ZsYWdzJywKKyAgICAgICdDQ0ZMQUdTJyA6ICdjZmxhZ3MnLAorICAgICAgJ0NGTEFHUycg
OiAnY2ZsYWdzX2MnLAorICAgICAgJ0NYWEZMQUdTJyA6ICdjZmxhZ3NfY2MnLAorICAgICAgJ0NQ
UERFRklORVMnIDogJ2RlZmluZXMnLAorICAgICAgJ0NQUFBBVEgnIDogJ2luY2x1ZGVfZGlycycs
CisgICAgICAjIEFkZCB0aGUgbGRmbGFncyB2YWx1ZSB0byAkTElOS0ZMQUdTLCBidXQgbm90ICRT
SExJTktGTEFHUy4KKyAgICAgICMgU0NvbnMgZGVmaW5lcyAkU0hMSU5LRkxBR1MgdG8gaW5jb3Jw
b3JhdGUgJExJTktGTEFHUywgc28KKyAgICAgICMgbGlzdGluZyBib3RoIGhlcmUgd291bGQgY2Fz
ZSAnbGRmbGFncycgdG8gZ2V0IGFwcGVuZGVkIHRvCisgICAgICAjIGJvdGgsIGFuZCB0aGVuIGhh
dmUgaXQgc2hvdyB1cCB0d2ljZSBvbiB0aGUgY29tbWFuZCBsaW5lLgorICAgICAgJ0xJTktGTEFH
UycgOiAnbGRmbGFncycsCisgIH0KKyAgcG9zdGFtYmxlPSdcbiVzXSxcbicgJSBpbmRlbnQKKyAg
Zm9yIHNjb25zX3ZhciBpbiBzb3J0ZWQodmFyX21hcHBpbmcua2V5cygpKToKKyAgICAgIGd5cF92
YXIgPSB2YXJfbWFwcGluZ1tzY29uc192YXJdCisgICAgICB2YWx1ZSA9IGNvbmZpZy5nZXQoZ3lw
X3ZhcikKKyAgICAgIGlmIHZhbHVlOgorICAgICAgICBpZiBneXBfdmFyIGluICgnZGVmaW5lcycs
KToKKyAgICAgICAgICB2YWx1ZSA9IFtFc2NhcGVDcHBEZWZpbmUodikgZm9yIHYgaW4gdmFsdWVd
CisgICAgICAgIGlmIGd5cF92YXIgaW4gKCdpbmNsdWRlX2RpcnMnLCk6CisgICAgICAgICAgaWYg
c3JjX2RpciBhbmQgbm90IHNyY19kaXIuZW5kc3dpdGgoJy8nKToKKyAgICAgICAgICAgIHNyY19k
aXIgKz0gJy8nCisgICAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgICBmb3IgdiBpbiB2YWx1
ZToKKyAgICAgICAgICAgIHYgPSBGaXhQYXRoKHYsIHNyY19kaXIpCisgICAgICAgICAgICAjIEZv
cmNlIFNDb25zIHRvIGV2YWx1YXRlIHRoZSBDUFBQQVRIIGRpcmVjdG9yaWVzIGF0CisgICAgICAg
ICAgICAjIFNDb25zY3JpcHQtcmVhZCB0aW1lLCBzbyBkZWxheWVkIGV2YWx1YXRpb24gb2YgJFNS
Q19ESVIKKyAgICAgICAgICAgICMgZG9lc24ndCBwb2ludCBpdCB0byB0aGUgLS1nZW5lcmF0b3It
b3V0cHV0PSBkaXJlY3RvcnkuCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdlbnYuRGlyKCVy
KScgJSB2KQorICAgICAgICAgIHZhbHVlID0gcmVzdWx0CisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgdmFsdWUgPSBtYXAocmVwciwgdmFsdWUpCisgICAgICAgIFdyaXRlTGlzdChmcCwKKyAgICAg
ICAgICAgICAgICAgIHZhbHVlLAorICAgICAgICAgICAgICAgICAgcHJlZml4PWluZGVudCwKKyAg
ICAgICAgICAgICAgICAgIHByZWFtYmxlPSclcyVzID0gW1xuICAgICcgJSAoaW5kZW50LCBzY29u
c192YXIpLAorICAgICAgICAgICAgICAgICAgcG9zdGFtYmxlPXBvc3RhbWJsZSkKKworCitkZWYg
R2VuZXJhdGVTQ29uc2NyaXB0KG91dHB1dF9maWxlbmFtZSwgc3BlYywgYnVpbGRfZmlsZSwgYnVp
bGRfZmlsZV9kYXRhKToKKyAgIiIiCisgIEdlbmVyYXRlcyBhIFNDb25zY3JpcHQgZmlsZSBmb3Ig
YSBzcGVjaWZpYyB0YXJnZXQuCisKKyAgVGhpcyBnZW5lcmF0ZXMgYSBTQ29uc2NyaXB0IGZpbGUg
c3VpdGFibGUgZm9yIGJ1aWxkaW5nIGFueSBvciBhbGwgb2YKKyAgdGhlIHRhcmdldCdzIGNvbmZp
Z3VyYXRpb25zLgorCisgIEEgU0NvbnNjcmlwdCBmaWxlIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUg
dGltZXMgdG8gZ2VuZXJhdGUgdGFyZ2V0cyBmb3IKKyAgbXVsdGlwbGUgY29uZmlndXJhdGlvbnMu
ICBDb25zZXF1ZW50bHksIGl0IG5lZWRzIHRvIGJlIHJlYWR5IHRvIGJ1aWxkCisgIHRoZSB0YXJn
ZXQgZm9yIGFueSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbiwgYW5kIHRoZXJlZm9yZSBjb250YWlu
cworICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2V0dGluZ3MgZm9yIGFsbCBjb25maWd1cmF0aW9u
cyAoZ2VuZXJhdGVkIGludG8KKyAgdGhlIFNDb25zY3JpcHQgZmlsZSBhdCBneXAgY29uZmlndXJh
dGlvbiB0aW1lKSBhcyB3ZWxsIGFzIGxvZ2ljIGZvcgorICBzZWxlY3RpbmcgKGF0IFNDb25zIGJ1
aWxkIHRpbWUpIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGJlaW5nIGJ1aWx0LgorCisgIFRo
ZSBnZW5lcmFsIG91dGxpbmUgb2YgYSBnZW5lcmF0ZWQgU0NvbnNjcmlwdCBmaWxlIGlzOgorCisg
ICAgLS0gIEhlYWRlcgorCisgICAgLS0gIEltcG9ydCAnZW52Jy4gIFRoaXMgY29udGFpbnMgYSAk
Q09ORklHX05BTUUgY29uc3RydWN0aW9uCisgICAgICAgIHZhcmlhYmxlIHRoYXQgc3BlY2lmaWVz
IHdoYXQgY29uZmlndXJhdGlvbiB0byBidWlsZAorICAgICAgICAoZS5nLiBEZWJ1ZywgUmVsZWFz
ZSkuCisKKyAgICAtLSAgQ29uZmlndXJhdGlvbnMuICBUaGlzIGlzIGEgZGljdGlvbmFyeSB3aXRo
IHNldHRpbmdzIGZvcgorICAgICAgICB0aGUgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIChEZWJ1
ZywgUmVsZWFzZSkgdW5kZXIgd2hpY2ggdGhpcworICAgICAgICB0YXJnZXQgY2FuIGJlIGJ1aWx0
LiAgVGhlIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeSBhcmUgdGhlbXNlbHZlcworICAgICAgICBk
aWN0aW9uYXJpZXMgc3BlY2lmeWluZyB3aGF0IGNvbnN0cnVjdGlvbiB2YXJpYWJsZXMgc2hvdWxk
IGFkZGVkCisgICAgICAgIHRvIHRoZSBsb2NhbCBjb3B5IG9mIHRoZSBpbXBvcnRlZCBjb25zdHJ1
Y3Rpb24gZW52aXJvbm1lbnQKKyAgICAgICAgKEFwcGVuZCksIHNob3VsZCBiZSByZW1vdmVkIChG
aWx0ZXJPdXQpLCBhbmQgc2hvdWxkIG91dHJpZ2h0CisgICAgICAgIHJlcGxhY2UgdGhlIGltcG9y
dGVkIHZhbHVlcyAoUmVwbGFjZSkuCisKKyAgICAtLSAgQ2xvbmUgdGhlIGltcG9ydGVkIGNvbnN0
cnVjdGlvbiBlbnZpcm9ubWVudCBhbmQgdXBkYXRlCisgICAgICAgIHdpdGggdGhlIHByb3BlciBj
b25maWd1cmF0aW9uIHNldHRpbmdzLgorCisgICAgLS0gIEluaXRpYWxpemUgdGhlIGxpc3RzIG9m
IHRoZSB0YXJnZXRzJyBpbnB1dCBmaWxlcyBhbmQgcHJlcmVxdWlzaXRlcy4KKworICAgIC0tICBU
YXJnZXQtc3BlY2lmaWMgYWN0aW9ucyBhbmQgcnVsZXMuICBUaGVzZSBjb21lIGFmdGVyIHRoZQor
ICAgICAgICBpbnB1dCBmaWxlIGFuZCBwcmVyZXF1aXNpdGUgaW5pdGlhbGl6YXRpb25zIGJlY2F1
c2UgdGhlCisgICAgICAgIG91dHB1dHMgb2YgdGhlIGFjdGlvbnMgYW5kIHJ1bGVzIG1heSBhZmZl
Y3QgdGhlIGlucHV0IGZpbGUKKyAgICAgICAgbGlzdCAocHJvY2Vzc19vdXRwdXRzX2FzX3NvdXJj
ZXMpIGFuZCBnZXQgYWRkZWQgdG8gdGhlIGxpc3Qgb2YKKyAgICAgICAgcHJlcmVxdWlzaXRlcyAo
c28gdGhhdCB0aGV5J3JlIGd1YXJhbnRlZWQgdG8gYmUgZXhlY3V0ZWQgYmVmb3JlCisgICAgICAg
IGJ1aWxkaW5nIHRoZSB0YXJnZXQpLgorCisgICAgLS0gIENhbGwgdGhlIEJ1aWxkZXIgZm9yIHRo
ZSB0YXJnZXQgaXRzZWxmLgorCisgICAgLS0gIEFycmFuZ2UgZm9yIGFueSBjb3BpZXMgdG8gYmUg
bWFkZSBpbnRvIGluc3RhbGxhdGlvbiBkaXJlY3Rvcmllcy4KKworICAgIC0tICBTZXQgdXAgdGhl
IHtuYW1lfSBBbGlhcyAocGhvbnkgTm9kZSkgZm9yIHRoZSB0YXJnZXQgYXMgdGhlCisgICAgICAg
IHByaW1hcnkgaGFuZGxlIGZvciBidWlsZGluZyBhbGwgb2YgdGhlIHRhcmdldCdzIHBpZWNlcy4K
KworICAgIC0tICBVc2UgZW52LlJlcXVpcmUoKSB0byBtYWtlIHN1cmUgdGhlIHByZXJlcXVpc2l0
ZXMgKGV4cGxpY2l0bHkKKyAgICAgICAgc3BlY2lmaWVkLCBidXQgYWxzbyBpbmNsdWRpbmcgdGhl
IGFjdGlvbnMgYW5kIHJ1bGVzKSBhcmUgYnVpbHQKKyAgICAgICAgYmVmb3JlIHRoZSB0YXJnZXQg
aXRzZWxmLgorCisgICAgLS0gIFJldHVybiB0aGUge25hbWV9IEFsaWFzIHRvIHRoZSBjYWxsaW5n
IFNDb25zdHJ1Y3QgZmlsZQorICAgICAgICBzbyBpdCBjYW4gYmUgYWRkZWQgdG8gdGhlIGxpc3Qg
b2YgZGVmYXVsdCB0YXJnZXRzLgorICAiIiIKKyAgc2NvbnNfdGFyZ2V0ID0gU0NvbnMuVGFyZ2V0
KHNwZWMpCisKKyAgZ3lwX2RpciA9IG9zLnBhdGguZGlybmFtZShvdXRwdXRfZmlsZW5hbWUpCisg
IGlmIG5vdCBneXBfZGlyOgorICAgICAgZ3lwX2RpciA9ICcuJworICBneXBfZGlyID0gb3MucGF0
aC5hYnNwYXRoKGd5cF9kaXIpCisKKyAgb3V0cHV0X2RpciA9IG9zLnBhdGguZGlybmFtZShvdXRw
dXRfZmlsZW5hbWUpCisgIHNyY19kaXIgPSBidWlsZF9maWxlX2RhdGFbJ19ERVBUSCddCisgIHNy
Y19kaXJfcmVsID0gZ3lwLmNvbW1vbi5SZWxhdGl2ZVBhdGgoc3JjX2Rpciwgb3V0cHV0X2RpcikK
KyAgc3ViZGlyID0gZ3lwLmNvbW1vbi5SZWxhdGl2ZVBhdGgob3MucGF0aC5kaXJuYW1lKGJ1aWxk
X2ZpbGUpLCBzcmNfZGlyKQorICBzcmNfc3ViZGlyID0gJyRTUkNfRElSLycgKyBzdWJkaXIKKyAg
c3JjX3N1YmRpcl8gPSBzcmNfc3ViZGlyICsgJy8nCisKKyAgY29tcG9uZW50X25hbWUgPSBvcy5w
YXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoYnVpbGRfZmlsZSkpWzBdCisgIHRhcmdldF9u
YW1lID0gc3BlY1sndGFyZ2V0X25hbWUnXQorCisgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhneXBf
ZGlyKToKKyAgICBvcy5tYWtlZGlycyhneXBfZGlyKQorICBmcCA9IG9wZW4ob3V0cHV0X2ZpbGVu
YW1lLCAndycpCisgIGZwLndyaXRlKGhlYWRlcikKKworICBmcC53cml0ZSgnXG5pbXBvcnQgb3Nc
bicpCisgIGZwLndyaXRlKCdcbkltcG9ydCgiZW52IilcbicpCisKKyAgIworICBmcC53cml0ZSgn
XG4nKQorICBmcC53cml0ZSgnZW52ID0gZW52LkNsb25lKENPTVBPTkVOVF9OQU1FPSVzLFxuJyAl
IHJlcHIoY29tcG9uZW50X25hbWUpKQorICBmcC53cml0ZSgnICAgICAgICAgICAgICAgIFRBUkdF
VF9OQU1FPSVzKVxuJyAlIHJlcHIodGFyZ2V0X25hbWUpKQorCisgICMKKyAgZm9yIGNvbmZpZyBp
biBzcGVjWydjb25maWd1cmF0aW9ucyddLml0ZXJ2YWx1ZXMoKToKKyAgICBpZiBjb25maWcuZ2V0
KCdzY29uc19saW5lX2xlbmd0aCcpOgorICAgICAgZnAud3JpdGUoX3NwYXduX2hhY2spCisgICAg
ICBicmVhaworCisgICMKKyAgaW5kZW50ID0gJyAnICogMTIKKyAgZnAud3JpdGUoJ1xuJykKKyAg
ZnAud3JpdGUoJ2NvbmZpZ3VyYXRpb25zID0ge1xuJykKKyAgZm9yIGNvbmZpZ19uYW1lLCBjb25m
aWcgaW4gc3BlY1snY29uZmlndXJhdGlvbnMnXS5pdGVyaXRlbXMoKToKKyAgICBmcC53cml0ZSgn
ICAgIFwnJXNcJyA6IHtcbicgJSBjb25maWdfbmFtZSkKKworICAgIGZwLndyaXRlKCcgICAgICAg
IFwnQXBwZW5kXCcgOiBkaWN0KFxuJykKKyAgICBHZW5lcmF0ZUNvbmZpZyhmcCwgY29uZmlnLCBp
bmRlbnQsIHNyY19zdWJkaXIpCisgICAgbGlicmFyaWVzID0gc3BlYy5nZXQoJ2xpYnJhcmllcycp
CisgICAgaWYgbGlicmFyaWVzOgorICAgICAgV3JpdGVMaXN0KGZwLAorICAgICAgICAgICAgICAg
IG1hcChyZXByLCBsaWJyYXJpZXMpLAorICAgICAgICAgICAgICAgIHByZWZpeD1pbmRlbnQsCisg
ICAgICAgICAgICAgICAgcHJlYW1ibGU9JyVzTElCUyA9IFtcbiAgICAnICUgaW5kZW50LAorICAg
ICAgICAgICAgICAgIHBvc3RhbWJsZT0nXG4lc10sXG4nICUgaW5kZW50KQorICAgIGZwLndyaXRl
KCcgICAgICAgICksXG4nKQorCisgICAgZnAud3JpdGUoJyAgICAgICAgXCdGaWx0ZXJPdXRcJyA6
IGRpY3QoXG4nICkKKyAgICBmb3Iga2V5LCB2YXIgaW4gY29uZmlnLmdldCgnc2NvbnNfcmVtb3Zl
Jywge30pLml0ZXJpdGVtcygpOgorICAgICAgZnAud3JpdGUoJyAgICAgICAgICAgICAlcyA9ICVz
LFxuJyAlIChrZXksIHJlcHIodmFyKSkpCisgICAgZnAud3JpdGUoJyAgICAgICAgKSxcbicpCisK
KyAgICBmcC53cml0ZSgnICAgICAgICBcJ1JlcGxhY2VcJyA6IGRpY3QoXG4nICkKKyAgICBzY29u
c19zZXR0aW5ncyA9IGNvbmZpZy5nZXQoJ3Njb25zX3ZhcmlhYmxlX3NldHRpbmdzJywge30pCisg
ICAgZm9yIGtleSBpbiBzb3J0ZWQoc2NvbnNfc2V0dGluZ3Mua2V5cygpKToKKyAgICAgIHZhbCA9
IHBwcmludC5wZm9ybWF0KHNjb25zX3NldHRpbmdzW2tleV0pCisgICAgICBmcC53cml0ZSgnICAg
ICAgICAgICAgICVzID0gJXMsXG4nICUgKGtleSwgdmFsKSkKKyAgICBpZiAnYysrJyBpbiBzcGVj
LmdldCgnbGlua19sYW5ndWFnZXMnLCBbXSk6CisgICAgICBmcC53cml0ZSgnICAgICAgICAgICAg
ICVzID0gJXMsXG4nICUgKCdMSU5LJywgcmVwcignJENYWCcpKSkKKyAgICBpZiBjb25maWcuZ2V0
KCdzY29uc19saW5lX2xlbmd0aCcpOgorICAgICAgZnAud3JpdGUoJyAgICAgICAgICAgICBTUEFX
TiA9IGd5cF9zcGF3bixcbicpCisgICAgZnAud3JpdGUoJyAgICAgICAgKSxcbicpCisKKyAgICBm
cC53cml0ZSgnICAgICAgICBcJ0ltcG9ydEV4dGVybmFsXCcgOiBbXG4nICkKKyAgICBmb3IgdmFy
IGluIGNvbmZpZy5nZXQoJ3Njb25zX2ltcG9ydF92YXJpYWJsZXMnLCBbXSk6CisgICAgICBmcC53
cml0ZSgnICAgICAgICAgICAgICVzLFxuJyAlIHJlcHIodmFyKSkKKyAgICBmcC53cml0ZSgnICAg
ICAgICBdLFxuJykKKworICAgIGZwLndyaXRlKCcgICAgICAgIFwnUHJvcGFnYXRlRXh0ZXJuYWxc
JyA6IFtcbicgKQorICAgIGZvciB2YXIgaW4gY29uZmlnLmdldCgnc2NvbnNfcHJvcGFnYXRlX3Zh
cmlhYmxlcycsIFtdKToKKyAgICAgIGZwLndyaXRlKCcgICAgICAgICAgICAgJXMsXG4nICUgcmVw
cih2YXIpKQorICAgIGZwLndyaXRlKCcgICAgICAgIF0sXG4nKQorCisgICAgZnAud3JpdGUoJyAg
ICB9LFxuJykKKyAgZnAud3JpdGUoJ31cbicpCisKKyAgZnAud3JpdGUoJ1xuJworICAgICAgICAg
ICAnY29uZmlnID0gY29uZmlndXJhdGlvbnNbZW52W1wnQ09ORklHX05BTUVcJ11dXG4nCisgICAg
ICAgICAgICdlbnYuQXBwZW5kKCoqY29uZmlnW1wnQXBwZW5kXCddKVxuJworICAgICAgICAgICAn
ZW52LkZpbHRlck91dCgqKmNvbmZpZ1tcJ0ZpbHRlck91dFwnXSlcbicKKyAgICAgICAgICAgJ2Vu
di5SZXBsYWNlKCoqY29uZmlnW1wnUmVwbGFjZVwnXSlcbicpCisKKyAgZnAud3JpdGUoJ1xuJwor
ICAgICAgICAgICAnIyBTY29ucyBmb3JjZXMgLWZQSUMgZm9yIFNIQ0NGTEFHUyBvbiBzb21lIHBs
YXRmb3Jtcy5cbicKKyAgICAgICAgICAgJyMgRGlzYWJsZSB0aGF0IHNvIHdlIGNhbiBjb250cm9s
IGl0IGZyb20gY2ZsYWdzIGluIGd5cC5cbicKKyAgICAgICAgICAgJyMgTm90ZSB0aGF0IFNjb25z
IGl0c2VsZiBpcyBpbmNvbnNpc3RlbnQgd2l0aCBpdHMgLWZQSUNcbicKKyAgICAgICAgICAgJyMg
c2V0dGluZy4gU0hDQ0ZMQUdTIGZvcmNlcyAtZlBJQywgYW5kIFNIQ0ZMQUdTIGRvZXMgbm90Llxu
JworICAgICAgICAgICAnIyBUaGlzIHdpbGwgbWFrZSBTSENDRkxBR1MgY29uc2lzdGVudCB3aXRo
IFNIQ0ZMQUdTLlxuJworICAgICAgICAgICAnZW52W1wnU0hDQ0ZMQUdTXCddID0gW1wnJENDRkxB
R1NcJ11cbicpCisKKyAgZnAud3JpdGUoJ1xuJworICAgICAgICAgICAnZm9yIF92YXIgaW4gY29u
ZmlnW1wnSW1wb3J0RXh0ZXJuYWxcJ106XG4nCisgICAgICAgICAgICcgIGlmIF92YXIgaW4gQVJH
VU1FTlRTOlxuJworICAgICAgICAgICAnICAgIGVudltfdmFyXSA9IEFSR1VNRU5UU1tfdmFyXVxu
JworICAgICAgICAgICAnICBlbGlmIF92YXIgaW4gb3MuZW52aXJvbjpcbicKKyAgICAgICAgICAg
JyAgICBlbnZbX3Zhcl0gPSBvcy5lbnZpcm9uW192YXJdXG4nCisgICAgICAgICAgICdmb3IgX3Zh
ciBpbiBjb25maWdbXCdQcm9wYWdhdGVFeHRlcm5hbFwnXTpcbicKKyAgICAgICAgICAgJyAgaWYg
X3ZhciBpbiBBUkdVTUVOVFM6XG4nCisgICAgICAgICAgICcgICAgZW52W192YXJdID0gQVJHVU1F
TlRTW192YXJdXG4nCisgICAgICAgICAgICcgIGVsaWYgX3ZhciBpbiBvcy5lbnZpcm9uOlxuJwor
ICAgICAgICAgICAnICAgIGVudltcJ0VOVlwnXVtfdmFyXSA9IG9zLmVudmlyb25bX3Zhcl1cbicp
CisKKyAgZnAud3JpdGUoJ1xuJworICAgICAgICAgICAiZW52WydFTlYnXVsnTERfTElCUkFSWV9Q
QVRIJ10gPSBlbnYuc3Vic3QoJyRMSUJfRElSJylcbiIpCisKKyAgIworICAjZnAud3JpdGUoIlxu
aWYgZW52Lmhhc19rZXkoJ0NQUFBBVEgnKTpcbiIpCisgICNmcC53cml0ZSgiICBlbnZbJ0NQUFBB
VEgnXSA9IG1hcChlbnYuRGlyLCBlbnZbJ0NQUFBBVEgnXSlcbiIpCisKKyAgdmFyaWFudHMgPSBz
cGVjLmdldCgndmFyaWFudHMnLCB7fSkKKyAgZm9yIHNldHRpbmcgaW4gc29ydGVkKHZhcmlhbnRz
LmtleXMoKSk6CisgICAgaWZfZm10ID0gJ2lmIEFSR1VNRU5UUy5nZXQoJXMpIG5vdCBpbiAoTm9u
ZSwgXCcwXCcpOlxuJworICAgIGZwLndyaXRlKCdcbicpCisgICAgZnAud3JpdGUoaWZfZm10ICUg
cmVwcihzZXR0aW5nLnVwcGVyKCkpKQorICAgIGZwLndyaXRlKCcgIGVudi5BcHBlbmRVbmlxdWUo
XG4nKQorICAgIEdlbmVyYXRlQ29uZmlnKGZwLCB2YXJpYW50c1tzZXR0aW5nXSwgaW5kZW50LCBz
cmNfc3ViZGlyKQorICAgIGZwLndyaXRlKCcgIClcbicpCisKKyAgIworICBzY29uc190YXJnZXQu
d3JpdGVfaW5wdXRfZmlsZXMoZnApCisKKyAgZnAud3JpdGUoJ1xuJykKKyAgZnAud3JpdGUoJ3Rh
cmdldF9maWxlcyA9IFtdXG4nKQorICBwcmVyZXF1aXNpdGVzID0gc3BlYy5nZXQoJ3Njb25zX3By
ZXJlcXVpc2l0ZXMnLCBbXSkKKyAgZnAud3JpdGUoJ3ByZXJlcXVpc2l0ZXMgPSAlc1xuJyAlIHBw
cmludC5wZm9ybWF0KHByZXJlcXVpc2l0ZXMpKQorCisgIGFjdGlvbnMgPSBzcGVjLmdldCgnYWN0
aW9ucycsIFtdKQorICBmb3IgYWN0aW9uIGluIGFjdGlvbnM6CisgICAgYSA9IFsnY2QnLCBzcmNf
c3ViZGlyLCAnJiYnXSArIGFjdGlvblsnYWN0aW9uJ10KKyAgICBtZXNzYWdlID0gYWN0aW9uLmdl
dCgnbWVzc2FnZScpCisgICAgaWYgbWVzc2FnZToKKyAgICAgIG1lc3NhZ2UgPSByZXByKG1lc3Nh
Z2UpCisgICAgaW5wdXRzID0gW0ZpeFBhdGgoZiwgc3JjX3N1YmRpcl8pIGZvciBmIGluIGFjdGlv
bi5nZXQoJ2lucHV0cycsIFtdKV0KKyAgICBvdXRwdXRzID0gW0ZpeFBhdGgoZiwgc3JjX3N1YmRp
cl8pIGZvciBmIGluIGFjdGlvbi5nZXQoJ291dHB1dHMnLCBbXSldCisgICAgaWYgb3V0cHV0czoK
KyAgICAgIHRlbXBsYXRlID0gX2NvbW1hbmRfdGVtcGxhdGUKKyAgICBlbHNlOgorICAgICAgdGVt
cGxhdGUgPSBfYWxpYXNfdGVtcGxhdGUKKyAgICBmcC53cml0ZSh0ZW1wbGF0ZSAlIHsKKyAgICAg
ICAgICAgICAgICAgJ2lucHV0cycgOiBwcHJpbnQucGZvcm1hdChpbnB1dHMpLAorICAgICAgICAg
ICAgICAgICAnb3V0cHV0cycgOiBwcHJpbnQucGZvcm1hdChvdXRwdXRzKSwKKyAgICAgICAgICAg
ICAgICAgJ2FjdGlvbicgOiBwcHJpbnQucGZvcm1hdChhKSwKKyAgICAgICAgICAgICAgICAgJ21l
c3NhZ2UnIDogbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogdGFyZ2V0
X25hbWUsCisgICAgICAgICAgICAgfSkKKyAgICBpZiBpbnQoYWN0aW9uLmdldCgncHJvY2Vzc19v
dXRwdXRzX2FzX3NvdXJjZXMnLCAwKSk6CisgICAgICBmcC53cml0ZSgnaW5wdXRfZmlsZXMuZXh0
ZW5kKF9vdXRwdXRzKVxuJykKKyAgICBmcC53cml0ZSgncHJlcmVxdWlzaXRlcy5leHRlbmQoX291
dHB1dHMpXG4nKQorICAgIGZwLndyaXRlKCd0YXJnZXRfZmlsZXMuZXh0ZW5kKF9vdXRwdXRzKVxu
JykKKworICBydWxlcyA9IHNwZWMuZ2V0KCdydWxlcycsIFtdKQorICBmb3IgcnVsZSBpbiBydWxl
czoKKyAgICBuYW1lID0gcnVsZVsncnVsZV9uYW1lJ10KKyAgICBhID0gWydjZCcsIHNyY19zdWJk
aXIsICcmJiddICsgcnVsZVsnYWN0aW9uJ10KKyAgICBtZXNzYWdlID0gcnVsZS5nZXQoJ21lc3Nh
Z2UnKQorICAgIGlmIG1lc3NhZ2U6CisgICAgICAgIG1lc3NhZ2UgPSByZXByKG1lc3NhZ2UpCisg
ICAgaWYgaW50KHJ1bGUuZ2V0KCdwcm9jZXNzX291dHB1dHNfYXNfc291cmNlcycsIDApKToKKyAg
ICAgIHBvYXNfbGluZSA9ICdfcHJvY2Vzc2VkX2lucHV0X2ZpbGVzLmV4dGVuZChfZ2VuZXJhdGVk
KScKKyAgICBlbHNlOgorICAgICAgcG9hc19saW5lID0gJ19wcm9jZXNzZWRfaW5wdXRfZmlsZXMu
YXBwZW5kKGluZmlsZSknCisgICAgaW5wdXRzID0gW0ZpeFBhdGgoZiwgc3JjX3N1YmRpcl8pIGZv
ciBmIGluIHJ1bGUuZ2V0KCdpbnB1dHMnLCBbXSldCisgICAgb3V0cHV0cyA9IFtGaXhQYXRoKGYs
IHNyY19zdWJkaXJfKSBmb3IgZiBpbiBydWxlLmdldCgnb3V0cHV0cycsIFtdKV0KKyAgICBmcC53
cml0ZShfcnVsZV90ZW1wbGF0ZSAlIHsKKyAgICAgICAgICAgICAgICAgJ2lucHV0cycgOiBwcHJp
bnQucGZvcm1hdChpbnB1dHMpLAorICAgICAgICAgICAgICAgICAnb3V0cHV0cycgOiBwcHJpbnQu
cGZvcm1hdChvdXRwdXRzKSwKKyAgICAgICAgICAgICAgICAgJ2FjdGlvbicgOiBwcHJpbnQucGZv
cm1hdChhKSwKKyAgICAgICAgICAgICAgICAgJ2V4dGVuc2lvbicgOiBydWxlWydleHRlbnNpb24n
XSwKKyAgICAgICAgICAgICAgICAgJ25hbWUnIDogbmFtZSwKKyAgICAgICAgICAgICAgICAgJ21l
c3NhZ2UnIDogbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgJ3Byb2Nlc3Nfb3V0cHV0c19hc19z
b3VyY2VzX2xpbmUnIDogcG9hc19saW5lLAorICAgICAgICAgICAgICAgICAnc3JjX2RpcicgOiBz
cmNfc3ViZGlyXywKKyAgICAgICAgICAgICB9KQorCisgIHNjb25zX3RhcmdldC53cml0ZV90YXJn
ZXQoZnAsIHNyY19zdWJkaXIpCisKKyAgY29waWVzID0gc3BlYy5nZXQoJ2NvcGllcycsIFtdKQor
ICBpZiBjb3BpZXM6CisgICAgZnAud3JpdGUoX2NvcHlfYWN0aW9uX3RlbXBsYXRlKQorICBmb3Ig
Y29weSBpbiBjb3BpZXM6CisgICAgZGVzdGRpciA9IE5vbmUKKyAgICBmaWxlcyA9IE5vbmUKKyAg
ICB0cnk6CisgICAgICBkZXN0ZGlyID0gY29weVsnZGVzdGluYXRpb24nXQorICAgIGV4Y2VwdCBL
ZXlFcnJvciwgZToKKyAgICAgIGd5cC5jb21tb24uRXhjZXB0aW9uQXBwZW5kKAorICAgICAgICBl
LAorICAgICAgICAiUmVxdWlyZWQgJ2Rlc3RpbmF0aW9uJyBrZXkgbWlzc2luZyBmb3IgJ2NvcGll
cycgaW4gJXMuIiAlIGJ1aWxkX2ZpbGUpCisgICAgICByYWlzZQorICAgIHRyeToKKyAgICAgIGZp
bGVzID0gY29weVsnZmlsZXMnXQorICAgIGV4Y2VwdCBLZXlFcnJvciwgZToKKyAgICAgIGd5cC5j
b21tb24uRXhjZXB0aW9uQXBwZW5kKAorICAgICAgICBlLCAiUmVxdWlyZWQgJ2ZpbGVzJyBrZXkg
bWlzc2luZyBmb3IgJ2NvcGllcycgaW4gJXMuIiAlIGJ1aWxkX2ZpbGUpCisgICAgICByYWlzZQor
ICAgIGlmIG5vdCBmaWxlczoKKyAgICAgICMgVE9ETzogIHNob3VsZCBwcm9iYWJseSBhZGQgYSAo
c3VwcHJlc3NpYmxlKSB3YXJuaW5nOworICAgICAgIyBhIG51bGwgZmlsZSBsaXN0IG1heSBiZSB1
bmludGVudGlvbmFsLgorICAgICAgY29udGludWUKKyAgICBpZiBub3QgZGVzdGRpcjoKKyAgICAg
IHJhaXNlIEV4Y2VwdGlvbigKKyAgICAgICAgIlJlcXVpcmVkICdkZXN0aW5hdGlvbicga2V5IGlz
IGVtcHR5IGZvciAnY29waWVzJyBpbiAlcy4iICUgYnVpbGRfZmlsZSkKKworICAgIGZtdCA9ICgn
XG4nCisgICAgICAgICAgICdfb3V0cHV0cyA9IGVudi5Db21tYW5kKCVzLFxuJworICAgICAgICAg
ICAnICAgICVzLFxuJworICAgICAgICAgICAnICAgIEdZUENvcHkoXCckVEFSR0VUXCcsIFwnJFNP
VVJDRVwnKSlcbicpCisgICAgZm9yIGYgaW4gY29weVsnZmlsZXMnXToKKyAgICAgICMgUmVtb3Zl
IHRyYWlsaW5nIHNlcGFyYXRvcnMgc28gYmFzZW5hbWUoKSBhY3RzIGxpa2UgVW5peCBiYXNlbmFt
ZSBhbmQKKyAgICAgICMgYWx3YXlzIHJldHVybnMgdGhlIGxhc3QgZWxlbWVudCwgd2hldGhlciBh
IGZpbGUgb3IgZGlyLiBXaXRob3V0IHRoaXMsCisgICAgICAjIG9ubHkgdGhlIGNvbnRlbnRzLCBu
b3QgdGhlIGRpcmVjdG9yeSBpdHNlbGYsIGFyZSBjb3BpZWQgKGFuZCBub3RoaW5nCisgICAgICAj
IG1pZ2h0IGJlIGNvcGllZCBpZiBkZXN0IGFscmVhZHkgZXhpc3RzLCBzaW5jZSBzY29ucyB0aGlu
a3Mgbm90aGluZyBuZWVkcworICAgICAgIyB0byBiZSBkb25lKS4KKyAgICAgIGRlc3QgPSBvcy5w
YXRoLmpvaW4oZGVzdGRpciwgb3MucGF0aC5iYXNlbmFtZShmLnJzdHJpcChvcy5zZXApKSkKKyAg
ICAgIGYgPSBGaXhQYXRoKGYsIHNyY19zdWJkaXJfKQorICAgICAgZGVzdCA9IEZpeFBhdGgoZGVz
dCwgc3JjX3N1YmRpcl8pCisgICAgICBmcC53cml0ZShmbXQgJSAocmVwcihkZXN0KSwgcmVwcihm
KSkpCisgICAgICBmcC53cml0ZSgndGFyZ2V0X2ZpbGVzLmV4dGVuZChfb3V0cHV0cylcbicpCisK
KyAgcnVuX2FzID0gc3BlYy5nZXQoJ3J1bl9hcycpCisgIGlmIHJ1bl9hczoKKyAgICBhY3Rpb24g
PSBydW5fYXMuZ2V0KCdhY3Rpb24nLCBbXSkKKyAgICB3b3JraW5nX2RpcmVjdG9yeSA9IHJ1bl9h
cy5nZXQoJ3dvcmtpbmdfZGlyZWN0b3J5JykKKyAgICBpZiBub3Qgd29ya2luZ19kaXJlY3Rvcnk6
CisgICAgICB3b3JraW5nX2RpcmVjdG9yeSA9IGd5cF9kaXIKKyAgICBlbHNlOgorICAgICAgaWYg
bm90IG9zLnBhdGguaXNhYnMod29ya2luZ19kaXJlY3RvcnkpOgorICAgICAgICB3b3JraW5nX2Rp
cmVjdG9yeSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGd5cF9kaXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2lu
Z19kaXJlY3RvcnkpKQorICAgIGlmIHJ1bl9hcy5nZXQoJ2Vudmlyb25tZW50Jyk6CisgICAgICBm
b3IgKGtleSwgdmFsKSBpbiBydW5fYXMuZ2V0KCdlbnZpcm9ubWVudCcpLml0ZXJpdGVtcygpOgor
ICAgICAgICBhY3Rpb24gPSBbJyVzPSIlcyInICUgKGtleSwgdmFsKV0gKyBhY3Rpb24KKyAgICBh
Y3Rpb24gPSBbJ2NkJywgJyIlcyInICUgd29ya2luZ19kaXJlY3RvcnksICcmJiddICsgYWN0aW9u
CisgICAgZnAud3JpdGUoX3J1bl9hc190ZW1wbGF0ZSAlIHsKKyAgICAgICdhY3Rpb24nIDogcHBy
aW50LnBmb3JtYXQoYWN0aW9uKSwKKyAgICAgICdtZXNzYWdlJyA6IHJ1bl9hcy5nZXQoJ21lc3Nh
Z2UnLCAnJyksCisgICAgfSkKKworICBmbXQgPSAiXG5neXBfdGFyZ2V0ID0gZW52LkFsaWFzKCcl
cycsIHRhcmdldF9maWxlcylcbiIKKyAgZnAud3JpdGUoZm10ICUgdGFyZ2V0X25hbWUpCisKKyAg
ZGVwZW5kZW5jaWVzID0gc3BlYy5nZXQoJ3Njb25zX2RlcGVuZGVuY2llcycsIFtdKQorICBpZiBk
ZXBlbmRlbmNpZXM6CisgICAgV3JpdGVMaXN0KGZwLCBkZXBlbmRlbmNpZXMsIHByZWFtYmxlPSdk
ZXBlbmRlbmNpZXMgPSBbXG4gICAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cG9zdGFtYmxlPSdcbl1cbicpCisgICAgZnAud3JpdGUoJ2Vudi5SZXF1aXJlcyh0YXJnZXRfZmls
ZXMsIGRlcGVuZGVuY2llcylcbicpCisgICAgZnAud3JpdGUoJ2Vudi5SZXF1aXJlcyhneXBfdGFy
Z2V0LCBkZXBlbmRlbmNpZXMpXG4nKQorICAgIGZwLndyaXRlKCdmb3IgcHJlcmVxdWlzaXRlIGlu
IHByZXJlcXVpc2l0ZXM6XG4nKQorICAgIGZwLndyaXRlKCcgIGVudi5SZXF1aXJlcyhwcmVyZXF1
aXNpdGUsIGRlcGVuZGVuY2llcylcbicpCisgIGZwLndyaXRlKCdlbnYuUmVxdWlyZXMoZ3lwX3Rh
cmdldCwgcHJlcmVxdWlzaXRlcylcbicpCisKKyAgaWYgcnVuX2FzOgorICAgIGZwLndyaXRlKF9y
dW5fYXNfdGVtcGxhdGVfc3VmZml4ICUgeworICAgICAgJ3RhcmdldF9uYW1lJzogdGFyZ2V0X25h
bWUsCisgICAgfSkKKworICBmcC53cml0ZSgnUmV0dXJuKCJneXBfdGFyZ2V0IilcbicpCisKKyAg
ZnAuY2xvc2UoKQorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRFTVBMQVRFIEJFR0lOCisK
K193cmFwcGVyX3RlbXBsYXRlID0gIiIiXAorCitfX2RvY19fID0gJycnCitXcmFwcGVyIGNvbmZp
Z3VyYXRpb24gZm9yIGJ1aWxkaW5nIHRoaXMgZW50aXJlICJzb2x1dGlvbiwiCitpbmNsdWRpbmcg
YWxsIHRoZSBzcGVjaWZpYyB0YXJnZXRzIGluIHZhcmlvdXMgKi5zY29ucyBmaWxlcy4KKycnJwor
CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworaW1wb3J0IFNDb25zLkVudmlyb25tZW50CitpbXBv
cnQgU0NvbnMuVXRpbAorCitkZWYgR2V0UHJvY2Vzc29yQ291bnQoKToKKyAgJycnCisgIERldGVj
dHMgdGhlIG51bWJlciBvZiBDUFVzIG9uIHRoZSBzeXN0ZW0uIEFkYXB0ZWQgZm9ybToKKyAgaHR0
cDovL2NvZGVsaWJlcmF0ZXMuYmxvZ3Nwb3QuY29tLzIwMDgvMDUvZGV0ZWN0aW5nLWNwdXNjb3Jl
cy1pbi1weXRob24uaHRtbAorICAnJycKKyAgIyBMaW51eCwgVW5peCBhbmQgTWFjIE9TIFg6Cisg
IGlmIGhhc2F0dHIob3MsICdzeXNjb25mJyk6CisgICAgaWYgb3Muc3lzY29uZl9uYW1lcy5oYXNf
a2V5KCdTQ19OUFJPQ0VTU09SU19PTkxOJyk6CisgICAgICAjIExpbnV4IGFuZCBVbml4IG9yIE1h
YyBPUyBYIHdpdGggcHl0aG9uID49IDIuNToKKyAgICAgIHJldHVybiBvcy5zeXNjb25mKCdTQ19O
UFJPQ0VTU09SU19PTkxOJykKKyAgICBlbHNlOiAgIyBNYWMgT1MgWCB3aXRoIFB5dGhvbiA8IDIu
NToKKyAgICAgIHJldHVybiBpbnQob3MucG9wZW4yKCJzeXNjdGwgLW4gaHcubmNwdSIpWzFdLnJl
YWQoKSkKKyAgIyBXaW5kb3dzOgorICBpZiBvcy5lbnZpcm9uLmhhc19rZXkoJ05VTUJFUl9PRl9Q
Uk9DRVNTT1JTJyk6CisgICAgcmV0dXJuIG1heChpbnQob3MuZW52aXJvbi5nZXQoJ05VTUJFUl9P
Rl9QUk9DRVNTT1JTJywgJzEnKSksIDEpCisgIHJldHVybiAxICAjIERlZmF1bHQKKworIyBTdXBw
b3J0IFBST0dSRVNTPSB0byBzaG93IHByb2dyZXNzIGluIGRpZmZlcmVudCB3YXlzLgorcCA9IEFS
R1VNRU5UUy5nZXQoJ1BST0dSRVNTJykKK2lmIHAgPT0gJ3NwaW5uZXInOgorICBQcm9ncmVzcyhb
Jy9cXHInLCAnfFxccicsICdcXFxcXFxyJywgJy1cXHInXSwKKyAgICAgICAgICAgaW50ZXJ2YWw9
NSwKKyAgICAgICAgICAgZmlsZT1vcGVuKCcvZGV2L3R0eScsICd3JykpCitlbGlmIHAgPT0gJ25h
bWUnOgorICBQcm9ncmVzcygnJFRBUkdFVFxccicsIG92ZXJ3cml0ZT1UcnVlLCBmaWxlPW9wZW4o
Jy9kZXYvdHR5JywgJ3cnKSkKKworIyBTZXQgdGhlIGRlZmF1bHQgLWogdmFsdWUgYmFzZWQgb24g
dGhlIG51bWJlciBvZiBwcm9jZXNzb3JzLgorU2V0T3B0aW9uKCdudW1fam9icycsIEdldFByb2Nl
c3NvckNvdW50KCkgKyAxKQorCisjIEhhdmUgU0NvbnMgdXNlIGl0cyBjYWNoZWQgZGVwZW5kZW5j
eSBpbmZvcm1hdGlvbi4KK1NldE9wdGlvbignaW1wbGljaXRfY2FjaGUnLCAxKQorCisjIE9ubHkg
cmUtY2FsY3VsYXRlIE1ENSBjaGVja3N1bXMgaWYgYSB0aW1lc3RhbXAgaGFzIGNoYW5nZWQuCitE
ZWNpZGVyKCdNRDUtdGltZXN0YW1wJykKKworIyBTaW5jZSB3ZSBzZXQgdGhlIC1qIHZhbHVlIGJ5
IGRlZmF1bHQsIHN1cHByZXNzIFNDb25zIHdhcm5pbmdzIGFib3V0IGJlaW5nCisjIHVuYWJsZSB0
byBzdXBwb3J0IHBhcmFsbGVsIGJ1aWxkIG9uIHZlcnNpb25zIG9mIFB5dGhvbiB3aXRoIG5vIHRo
cmVhZGluZy4KK2RlZmF1bHRfd2FybmluZ3MgPSBbJ25vLW5vLXBhcmFsbGVsLXN1cHBvcnQnXQor
U2V0T3B0aW9uKCd3YXJuJywgZGVmYXVsdF93YXJuaW5ncyArIEdldE9wdGlvbignd2FybicpKQor
CitBZGRPcHRpb24oJy0tbW9kZScsIG5hcmdzPTEsIGRlc3Q9J2NvbmZfbGlzdCcsIGRlZmF1bHQ9
W10sCisgICAgICAgICAgYWN0aW9uPSdhcHBlbmQnLCBoZWxwPSdDb25maWd1cmF0aW9uIHRvIGJ1
aWxkLicpCisKK0FkZE9wdGlvbignLS12ZXJib3NlJywgZGVzdD0ndmVyYm9zZScsIGRlZmF1bHQ9
RmFsc2UsCisgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgaGVscD0nVmVyYm9zZSBjb21t
YW5kLWxpbmUgb3V0cHV0LicpCisKKworIworc2NvbnNjcmlwdF9maWxlX21hcCA9ICUoc2NvbnNj
cmlwdF9maWxlcylzCisKK2NsYXNzIExvYWRUYXJnZXQ6CisgICcnJworICBDbGFzcyBmb3IgZGVj
aWRpbmcgaWYgYSBnaXZlbiB0YXJnZXQgc2NvbnNjcmlwdCBpcyB0byBiZSBpbmNsdWRlZAorICBi
YXNlZCBvbiBhIGxpc3Qgb2YgaW5jbHVkZWQgdGFyZ2V0IG5hbWVzLCBvcHRpb25hbGx5IHByZWZp
eGVkIHdpdGggJy0nCisgIHRvIGV4Y2x1ZGUgYSB0YXJnZXQgbmFtZS4KKyAgJycnCisgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2FkKToKKyAgICAnJycKKyAgICBJbml0aWFsaXplIGEgY2xhc3Mgd2l0
aCBhIGxpc3Qgb2YgbmFtZXMgZm9yIHBvc3NpYmxlIGxvYWRpbmcuCisKKyAgICBBcmd1bWVudHM6
CisgICAgICBsb2FkOiAgbGlzdCBvZiBlbGVtZW50cyBpbiB0aGUgTE9BRD0gc3BlY2lmaWNhdGlv
bgorICAgICcnJworICAgIHNlbGYuaW5jbHVkZWQgPSBzZXQoW2MgZm9yIGMgaW4gbG9hZCBpZiBu
b3QgYy5zdGFydHN3aXRoKCctJyldKQorICAgIHNlbGYuZXhjbHVkZWQgPSBzZXQoW2NbMTpdIGZv
ciBjIGluIGxvYWQgaWYgYy5zdGFydHN3aXRoKCctJyldKQorCisgICAgaWYgbm90IHNlbGYuaW5j
bHVkZWQ6CisgICAgICBzZWxmLmluY2x1ZGVkID0gc2V0KFsnYWxsJ10pCisKKyAgZGVmIF9fY2Fs
bF9fKHNlbGYsIHRhcmdldCk6CisgICAgJycnCisgICAgUmV0dXJucyBUcnVlIGlmIHRoZSBzcGVj
aWZpZWQgdGFyZ2V0J3Mgc2NvbnNjcmlwdCBmaWxlIHNob3VsZCBiZQorICAgIGxvYWRlZCwgYmFz
ZWQgb24gdGhlIGluaXRpYWxpemVkIGluY2x1ZGVkIGFuZCBleGNsdWRlZCBsaXN0cy4KKyAgICAn
JycKKyAgICByZXR1cm4gKHRhcmdldCBpbiBzZWxmLmluY2x1ZGVkIG9yCisgICAgICAgICAgICAo
J2FsbCcgaW4gc2VsZi5pbmNsdWRlZCBhbmQgbm90IHRhcmdldCBpbiBzZWxmLmV4Y2x1ZGVkKSkK
KworaWYgJ0xPQUQnIGluIEFSR1VNRU5UUzoKKyAgbG9hZCA9IEFSR1VNRU5UU1snTE9BRCddLnNw
bGl0KCcsJykKK2Vsc2U6CisgIGxvYWQgPSBbXQorbG9hZF90YXJnZXQgPSBMb2FkVGFyZ2V0KGxv
YWQpCisKK3Njb25zY3JpcHRfZmlsZXMgPSBbXQorZm9yIHRhcmdldCwgc2NvbnNjcmlwdCBpbiBz
Y29uc2NyaXB0X2ZpbGVfbWFwLml0ZXJpdGVtcygpOgorICBpZiBsb2FkX3RhcmdldCh0YXJnZXQp
OgorICAgIHNjb25zY3JpcHRfZmlsZXMuYXBwZW5kKHNjb25zY3JpcHQpCisKKwordGFyZ2V0X2Fs
aWFzX2xpc3Q9IFtdCisKK2NvbmZfbGlzdCA9IEdldE9wdGlvbignY29uZl9saXN0JykKK2lmIGNv
bmZfbGlzdDoKKyAgICAjIEluIGNhc2UgdGhlIHNhbWUgLS1tb2RlPSB2YWx1ZSB3YXMgc3BlY2lm
aWVkIG11bHRpcGxlIHRpbWVzLgorICAgIGNvbmZfbGlzdCA9IGxpc3Qoc2V0KGNvbmZfbGlzdCkp
CitlbHNlOgorICAgIGNvbmZfbGlzdCA9IFslKGRlZmF1bHRfY29uZmlndXJhdGlvbilyXQorCitz
Y29uc2J1aWxkX2RpciA9IERpciglKHNjb25zYnVpbGRfZGlyKXMpCisKKworZGVmIEZpbHRlck91
dChzZWxmLCAqKmt3KToKKyAga3cgPSBTQ29ucy5FbnZpcm9ubWVudC5jb3B5X25vbl9yZXNlcnZl
ZF9rZXl3b3JkcyhrdykKKyAgZm9yIGtleSwgdmFsIGluIGt3Lml0ZW1zKCk6CisgICAgZW52dmFs
ID0gc2VsZi5nZXQoa2V5LCBOb25lKQorICAgIGlmIGVudnZhbCBpcyBOb25lOgorICAgICAgIyBO
byBleGlzdGluZyB2YXJpYWJsZSBpbiB0aGUgZW52aXJvbm1lbnQsIHNvIG5vdGhpbmcgdG8gZGVs
ZXRlLgorICAgICAgY29udGludWUKKworICAgIGZvciB2cmVtb3ZlIGluIHZhbDoKKyAgICAgICMg
VXNlIHdoaWxlIG5vdCBpZiwgc28gd2UgY2FuIGhhbmRsZSBkdXBsaWNhdGVzLgorICAgICAgd2hp
bGUgdnJlbW92ZSBpbiBlbnZ2YWw6CisgICAgICAgIGVudnZhbC5yZW1vdmUodnJlbW92ZSkKKwor
ICAgIHNlbGZba2V5XSA9IGVudnZhbAorCisgICAgIyBUT0RPKHNnayk6IFNDb25zLkVudmlyb25t
ZW50LkFwcGVuZCgpIGhhcyBtdWNoIG1vcmUgbG9naWMgdG8gZGVhbAorICAgICMgd2l0aCB2YXJp
b3VzIHR5cGVzIG9mIHZhbHVlcy4gIFdlIHNob3VsZCBoYW5kbGUgYWxsIHRob3NlIGNhc2VzIGlu
IGhlcmUKKyAgICAjIHRvby4gIChJZiB2YXJpYWJsZSBpcyBhIGRpY3QsIGV0Yy4pCisKKworbm9u
X2NvbXBpbGFibGVfc3VmZml4ZXMgPSB7CisgICAgJ0xJTlVYJyA6IHNldChbCisgICAgICAgICcu
YmRpYycsCisgICAgICAgICcuY3NzJywKKyAgICAgICAgJy5kYXQnLAorICAgICAgICAnLmZyYWdt
ZW50JywKKyAgICAgICAgJy5ncGVyZicsCisgICAgICAgICcuaCcsCisgICAgICAgICcuaGgnLAor
ICAgICAgICAnLmhwcCcsCisgICAgICAgICcuaHRtbCcsCisgICAgICAgICcuaHh4JywKKyAgICAg
ICAgJy5pZGwnLAorICAgICAgICAnLmluJywKKyAgICAgICAgJy5pbjAnLAorICAgICAgICAnLmlu
MScsCisgICAgICAgICcuanMnLAorICAgICAgICAnLm1rJywKKyAgICAgICAgJy5yYycsCisgICAg
ICAgICcuc2lncycsCisgICAgICAgICcnLAorICAgIF0pLAorICAgICdXSU5ET1dTJyA6IHNldChb
CisgICAgICAgICcuaCcsCisgICAgICAgICcuaGgnLAorICAgICAgICAnLmhwcCcsCisgICAgICAg
ICcuZGF0JywKKyAgICAgICAgJy5pZGwnLAorICAgICAgICAnLmluJywKKyAgICAgICAgJy5pbjAn
LAorICAgICAgICAnLmluMScsCisgICAgXSksCit9CisKK2RlZiBjb21waWxhYmxlKGVudiwgZmls
ZSk6CisgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoc3RyKGZpbGUpKQorICBpZiBleHQg
aW4gbm9uX2NvbXBpbGFibGVfc3VmZml4ZXNbZW52WydUQVJHRVRfUExBVEZPUk0nXV06CisgICAg
cmV0dXJuIEZhbHNlCisgIHJldHVybiBUcnVlCisKK2RlZiBjb21waWxhYmxlX2ZpbGVzKGVudiwg
c291cmNlcyk6CisgIHJldHVybiBbeCBmb3IgeCBpbiBzb3VyY2VzIGlmIGNvbXBpbGFibGUoZW52
LCB4KV0KKworZGVmIEd5cFByb2dyYW0oZW52LCB0YXJnZXQsIHNvdXJjZSwgKmFyZ3MsICoqa3cp
OgorICBzb3VyY2UgPSBjb21waWxhYmxlX2ZpbGVzKGVudiwgc291cmNlKQorICByZXN1bHQgPSBl
bnYuUHJvZ3JhbSh0YXJnZXQsIHNvdXJjZSwgKmFyZ3MsICoqa3cpCisgIGlmIGVudi5nZXQoJ0lO
Q1JFTUVOVEFMJyk6CisgICAgZW52LlByZWNpb3VzKHJlc3VsdCkKKyAgcmV0dXJuIHJlc3VsdAor
CitkZWYgR3lwVGVzdFByb2dyYW0oZW52LCB0YXJnZXQsIHNvdXJjZSwgKmFyZ3MsICoqa3cpOgor
ICBzb3VyY2UgPSBjb21waWxhYmxlX2ZpbGVzKGVudiwgc291cmNlKQorICByZXN1bHQgPSBlbnYu
UHJvZ3JhbSh0YXJnZXQsIHNvdXJjZSwgKmFyZ3MsICoqa3cpCisgIGlmIGVudi5nZXQoJ0lOQ1JF
TUVOVEFMJyk6CisgICAgZW52LlByZWNpb3VzKCpyZXN1bHQpCisgIHJldHVybiByZXN1bHQKKwor
ZGVmIEd5cExpYnJhcnkoZW52LCB0YXJnZXQsIHNvdXJjZSwgKmFyZ3MsICoqa3cpOgorICBzb3Vy
Y2UgPSBjb21waWxhYmxlX2ZpbGVzKGVudiwgc291cmNlKQorICByZXN1bHQgPSBlbnYuTGlicmFy
eSh0YXJnZXQsIHNvdXJjZSwgKmFyZ3MsICoqa3cpCisgIHJldHVybiByZXN1bHQKKworZGVmIEd5
cExvYWRhYmxlTW9kdWxlKGVudiwgdGFyZ2V0LCBzb3VyY2UsICphcmdzLCAqKmt3KToKKyAgc291
cmNlID0gY29tcGlsYWJsZV9maWxlcyhlbnYsIHNvdXJjZSkKKyAgcmVzdWx0ID0gZW52LkxvYWRh
YmxlTW9kdWxlKHRhcmdldCwgc291cmNlLCAqYXJncywgKiprdykKKyAgcmV0dXJuIHJlc3VsdAor
CitkZWYgR3lwU3RhdGljTGlicmFyeShlbnYsIHRhcmdldCwgc291cmNlLCAqYXJncywgKiprdyk6
CisgIHNvdXJjZSA9IGNvbXBpbGFibGVfZmlsZXMoZW52LCBzb3VyY2UpCisgIHJlc3VsdCA9IGVu
di5TdGF0aWNMaWJyYXJ5KHRhcmdldCwgc291cmNlLCAqYXJncywgKiprdykKKyAgcmV0dXJuIHJl
c3VsdAorCitkZWYgR3lwU2hhcmVkTGlicmFyeShlbnYsIHRhcmdldCwgc291cmNlLCAqYXJncywg
Kiprdyk6CisgIHNvdXJjZSA9IGNvbXBpbGFibGVfZmlsZXMoZW52LCBzb3VyY2UpCisgIHJlc3Vs
dCA9IGVudi5TaGFyZWRMaWJyYXJ5KHRhcmdldCwgc291cmNlLCAqYXJncywgKiprdykKKyAgaWYg
ZW52LmdldCgnSU5DUkVNRU5UQUwnKToKKyAgICBlbnYuUHJlY2lvdXMocmVzdWx0KQorICByZXR1
cm4gcmVzdWx0CisKK2RlZiBhZGRfZ3lwX21ldGhvZHMoZW52KToKKyAgZW52LkFkZE1ldGhvZChH
eXBQcm9ncmFtKQorICBlbnYuQWRkTWV0aG9kKEd5cFRlc3RQcm9ncmFtKQorICBlbnYuQWRkTWV0
aG9kKEd5cExpYnJhcnkpCisgIGVudi5BZGRNZXRob2QoR3lwTG9hZGFibGVNb2R1bGUpCisgIGVu
di5BZGRNZXRob2QoR3lwU3RhdGljTGlicmFyeSkKKyAgZW52LkFkZE1ldGhvZChHeXBTaGFyZWRM
aWJyYXJ5KQorCisgIGVudi5BZGRNZXRob2QoRmlsdGVyT3V0KQorCisgIGVudi5BZGRNZXRob2Qo
Y29tcGlsYWJsZSkKKworCitiYXNlX2VudiA9IEVudmlyb25tZW50KAorICAgIHRvb2xzID0gJShz
Y29uc190b29scylzLAorICAgIElOVEVSTUVESUFURV9ESVI9JyRPQkpfRElSLyR7Q09NUE9ORU5U
X05BTUV9L18ke1RBUkdFVF9OQU1FfV9pbnRlcm1lZGlhdGUnLAorICAgIExJQl9ESVI9JyRUT1Bf
QlVJTERESVIvbGliJywKKyAgICBPQkpfRElSPSckVE9QX0JVSUxERElSL29iaicsCisgICAgU0NP
TlNCVUlMRF9ESVI9c2NvbnNidWlsZF9kaXIuYWJzcGF0aCwKKyAgICBTSEFSRURfSU5URVJNRURJ
QVRFX0RJUj0nJE9CSl9ESVIvX2dsb2JhbF9pbnRlcm1lZGlhdGUnLAorICAgIFNSQ19ESVI9RGly
KCUoc3JjX2RpcilyKSwKKyAgICBUQVJHRVRfUExBVEZPUk09J0xJTlVYJywKKyAgICBUT1BfQlVJ
TERESVI9JyRTQ09OU0JVSUxEX0RJUi8kQ09ORklHX05BTUUnLAorICAgIExJQlBBVEg9WyckTElC
X0RJUiddLAorKQorCitpZiBub3QgR2V0T3B0aW9uKCd2ZXJib3NlJyk6CisgIGJhc2VfZW52LlNl
dERlZmF1bHQoCisgICAgICBBUkNPTVNUUj0nQ3JlYXRpbmcgbGlicmFyeSAkVEFSR0VUJywKKyAg
ICAgIEFTQ09NU1RSPSdBc3NlbWJsaW5nICRUQVJHRVQnLAorICAgICAgQ0NDT01TVFI9J0NvbXBp
bGluZyAkVEFSR0VUJywKKyAgICAgIENPTkNBVFNPVVJDRUNPTVNUUj0nQ29uY2F0U291cmNlICRU
QVJHRVQnLAorICAgICAgQ1hYQ09NU1RSPSdDb21waWxpbmcgJFRBUkdFVCcsCisgICAgICBMRE1P
RFVMRUNPTVNUUj0nQnVpbGRpbmcgbG9hZGFibGUgbW9kdWxlICRUQVJHRVQnLAorICAgICAgTElO
S0NPTVNUUj0nTGlua2luZyAkVEFSR0VUJywKKyAgICAgIE1BTklGRVNUQ09NU1RSPSdVcGRhdGlu
ZyBtYW5pZmVzdCBmb3IgJFRBUkdFVCcsCisgICAgICBNSURMQ09NU1RSPSdDb21waWxpbmcgSURM
ICRUQVJHRVQnLAorICAgICAgUENIQ09NU1RSPSdQcmVjb21waWxpbmcgJFRBUkdFVCcsCisgICAg
ICBSQU5MSUJDT01TVFI9J0luZGV4aW5nICRUQVJHRVQnLAorICAgICAgUkNDT01TVFI9J0NvbXBp
bGluZyByZXNvdXJjZSAkVEFSR0VUJywKKyAgICAgIFNIQ0NDT01TVFI9J0NvbXBpbGluZyAkVEFS
R0VUJywKKyAgICAgIFNIQ1hYQ09NU1RSPSdDb21waWxpbmcgJFRBUkdFVCcsCisgICAgICBTSExJ
TktDT01TVFI9J0xpbmtpbmcgJFRBUkdFVCcsCisgICAgICBTSE1BTklGRVNUQ09NU1RSPSdVcGRh
dGluZyBtYW5pZmVzdCBmb3IgJFRBUkdFVCcsCisgICkKKworYWRkX2d5cF9tZXRob2RzKGJhc2Vf
ZW52KQorCitmb3IgY29uZiBpbiBjb25mX2xpc3Q6CisgIGVudiA9IGJhc2VfZW52LkNsb25lKENP
TkZJR19OQU1FPWNvbmYpCisgIFNDb25zaWduRmlsZShlbnYuRmlsZSgnJFRPUF9CVUlMRERJUi8u
c2NvbnNpZ24nKS5hYnNwYXRoKQorICBmb3Igc2NvbnNjcmlwdCBpbiBzY29uc2NyaXB0X2ZpbGVz
OgorICAgIHRhcmdldF9hbGlhcyA9IGVudi5TQ29uc2NyaXB0KHNjb25zY3JpcHQsIGV4cG9ydHM9
WydlbnYnXSkKKyAgICBpZiB0YXJnZXRfYWxpYXM6CisgICAgICB0YXJnZXRfYWxpYXNfbGlzdC5l
eHRlbmQodGFyZ2V0X2FsaWFzKQorCitEZWZhdWx0KEFsaWFzKCdhbGwnLCB0YXJnZXRfYWxpYXNf
bGlzdCkpCisKK2hlbHBfZm10ID0gJycnCitVc2FnZTogaGFtbWVyIFtTQ09OU19PUFRJT05TXSBb
VkFSSUFCTEVTXSBbVEFSR0VUXSAuLi4KKworTG9jYWwgY29tbWFuZC1saW5lIGJ1aWxkIG9wdGlv
bnM6CisgIC0tbW9kZT1DT05GSUcgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiB0byBidWlsZDoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbW9kZT1EZWJ1ZyBbZGVmYXVsdF0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbW9kZT1SZWxlYXNlCisgIC0tdmVyYm9zZSAg
ICAgICAgICAgICAgICAgUHJpbnQgYWN0dWFsIGV4ZWN1dGVkIGNvbW1hbmQgbGluZXMuCisKK1N1
cHBvcnRlZCBjb21tYW5kLWxpbmUgYnVpbGQgdmFyaWFibGVzOgorICBMT0FEPVttb2R1bGUsLi4u
XSAgICAgICAgIENvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbXBvbmVudHMgdG8gbG9hZCBpbiB0
aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgZ3JhcGggKCctJyBw
cmVmaXggZXhjbHVkZXMpCisgIFBST0dSRVNTPXR5cGUgICAgICAgICAgICAgRGlzcGxheSBhIHBy
b2dyZXNzIGluZGljYXRvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICBw
cmludCBlYWNoIGV2YWx1YXRlZCB0YXJnZXQgbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3Bpbm5lcjogIHByaW50IGEgc3Bpbm5lciBldmVyeSA1IHRhcmdldHMKKworVGhlIGZv
bGxvd2luZyBUQVJHRVQgbmFtZXMgY2FuIGFsc28gYmUgdXNlZCBhcyBMT0FEPSBtb2R1bGUgbmFt
ZXM6CisKKyUlcworJycnCisKK2lmIEdldE9wdGlvbignaGVscCcpOgorICBkZWYgY29sdW1uYXJf
dGV4dChpdGVtcywgd2lkdGg9NzgsIGluZGVudD0yLCBzZXA9Mik6CisgICAgcmVzdWx0ID0gW10K
KyAgICBjb2x3aWR0aCA9IG1heChtYXAobGVuLCBpdGVtcykpICsgc2VwCisgICAgY29scyA9ICh3
aWR0aCAtIGluZGVudCkgLyBjb2x3aWR0aAorICAgIGlmIGNvbHMgPCAxOgorICAgICAgY29scyA9
IDEKKyAgICByb3dzID0gKGxlbihpdGVtcykgKyBjb2xzIC0gMSkgLyBjb2xzCisgICAgaW5kZW50
ID0gJyUlKnMnICUlIChpbmRlbnQsICcnKQorICAgIHNlcCA9IGluZGVudAorICAgIGZvciByb3cg
aW4geHJhbmdlKDAsIHJvd3MpOgorICAgICAgcmVzdWx0LmFwcGVuZChzZXApCisgICAgICBmb3Ig
aSBpbiB4cmFuZ2Uocm93LCBsZW4oaXRlbXMpLCByb3dzKToKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnJSUtKnMnICUlIChjb2x3aWR0aCwgaXRlbXNbaV0pKQorICAgICAgc2VwID0gJ1xcbicgKyBp
bmRlbnQKKyAgICByZXN1bHQuYXBwZW5kKCdcXG4nKQorICAgIHJldHVybiAnJy5qb2luKHJlc3Vs
dCkKKworICBsb2FkX2xpc3QgPSBzZXQoc2NvbnNjcmlwdF9maWxlX21hcC5rZXlzKCkpCisgIHRh
cmdldF9hbGlhc2VzID0gc2V0KG1hcChzdHIsIHRhcmdldF9hbGlhc19saXN0KSkKKworICBjb21t
b24gPSBsb2FkX2xpc3QgYW5kIHRhcmdldF9hbGlhc2VzCisgIGxvYWRfb25seSA9IGxvYWRfbGlz
dCAtIGNvbW1vbgorICB0YXJnZXRfb25seSA9IHRhcmdldF9hbGlhc2VzIC0gY29tbW9uCisgIGhl
bHBfdGV4dCA9IFtoZWxwX2ZtdCAlJSBjb2x1bW5hcl90ZXh0KHNvcnRlZChsaXN0KGNvbW1vbikp
KV0KKyAgaWYgdGFyZ2V0X29ubHk6CisgICAgZm10ID0gIlRoZSBmb2xsb3dpbmcgYXJlIGFkZGl0
aW9uYWwgVEFSR0VUIG5hbWVzOlxcblxcbiUlc1xcbiIKKyAgICBoZWxwX3RleHQuYXBwZW5kKGZt
dCAlJSBjb2x1bW5hcl90ZXh0KHNvcnRlZChsaXN0KHRhcmdldF9vbmx5KSkpKQorICBpZiBsb2Fk
X29ubHk6CisgICAgZm10ID0gIlRoZSBmb2xsb3dpbmcgYXJlIGFkZGl0aW9uYWwgTE9BRD0gbW9k
dWxlIG5hbWVzOlxcblxcbiUlc1xcbiIKKyAgICBoZWxwX3RleHQuYXBwZW5kKGZtdCAlJSBjb2x1
bW5hcl90ZXh0KHNvcnRlZChsaXN0KGxvYWRfb25seSkpKSkKKyAgSGVscCgnJy5qb2luKGhlbHBf
dGV4dCkpCisiIiIKKworIyBURU1QTEFURSBFTkQKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwor
ZGVmIEdlbmVyYXRlU0NvbnNjcmlwdFdyYXBwZXIoYnVpbGRfZmlsZSwgYnVpbGRfZmlsZV9kYXRh
LCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGVuYW1lLCBz
Y29uc2NyaXB0X2ZpbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9j
b25maWd1cmF0aW9uKToKKyAgIiIiCisgIEdlbmVyYXRlcyB0aGUgIndyYXBwZXIiIFNDb25zY3Jp
cHQgZmlsZSAoYW5hbG9nb3VzIHRvIHRoZSBWaXN1YWwgU3R1ZGlvCisgIHNvbHV0aW9uKSB0aGF0
IGNhbGxzIGFsbCB0aGUgaW5kaXZpZHVhbCB0YXJnZXQgU0NvbnNjcmlwdCBmaWxlcy4KKyAgIiIi
CisgIG91dHB1dF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3V0cHV0X2ZpbGVuYW1lKQorICBzcmNf
ZGlyID0gYnVpbGRfZmlsZV9kYXRhWydfREVQVEgnXQorICBzcmNfZGlyX3JlbCA9IGd5cC5jb21t
b24uUmVsYXRpdmVQYXRoKHNyY19kaXIsIG91dHB1dF9kaXIpCisgIGlmIG5vdCBzcmNfZGlyX3Jl
bDoKKyAgICBzcmNfZGlyX3JlbCA9ICcuJworICBzY29uc19zZXR0aW5ncyA9IGJ1aWxkX2ZpbGVf
ZGF0YS5nZXQoJ3Njb25zX3NldHRpbmdzJywge30pCisgIHNjb25zYnVpbGRfZGlyID0gc2NvbnNf
c2V0dGluZ3MuZ2V0KCdzY29uc2J1aWxkX2RpcicsICcjJykKKyAgc2NvbnNfdG9vbHMgPSBzY29u
c19zZXR0aW5ncy5nZXQoJ3Rvb2xzJywgWydkZWZhdWx0J10pCisKKyAgc2NvbnNjcmlwdF9maWxl
X2xpbmVzID0gWydkaWN0KCddCisgIGZvciB0YXJnZXQgaW4gc29ydGVkKHNjb25zY3JpcHRfZmls
ZXMua2V5cygpKToKKyAgICBzY29uc2NyaXB0ID0gc2NvbnNjcmlwdF9maWxlc1t0YXJnZXRdCisg
ICAgc2NvbnNjcmlwdF9maWxlX2xpbmVzLmFwcGVuZCgnICAgICVzID0gJXIsJyAlICh0YXJnZXQs
IHNjb25zY3JpcHQpKQorICBzY29uc2NyaXB0X2ZpbGVfbGluZXMuYXBwZW5kKCcpJykKKworICBm
cCA9IG9wZW4ob3V0cHV0X2ZpbGVuYW1lLCAndycpCisgIGZwLndyaXRlKGhlYWRlcikKKyAgZnAu
d3JpdGUoX3dyYXBwZXJfdGVtcGxhdGUgJSB7CisgICAgICAgICAgICAgICAnZGVmYXVsdF9jb25m
aWd1cmF0aW9uJyA6IGRlZmF1bHRfY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICduYW1l
JyA6IG5hbWUsCisgICAgICAgICAgICAgICAnc2NvbnNfdG9vbHMnIDogcmVwcihzY29uc190b29s
cyksCisgICAgICAgICAgICAgICAnc2NvbnNidWlsZF9kaXInIDogcmVwcihzY29uc2J1aWxkX2Rp
ciksCisgICAgICAgICAgICAgICAnc2NvbnNjcmlwdF9maWxlcycgOiAnXG4nLmpvaW4oc2NvbnNj
cmlwdF9maWxlX2xpbmVzKSwKKyAgICAgICAgICAgICAgICdzcmNfZGlyJyA6IHNyY19kaXJfcmVs
LAorICAgICAgICAgICB9KQorICBmcC5jbG9zZSgpCisKKyAgIyBHZW5lcmF0ZSB0aGUgU0NvbnN0
cnVjdCBmaWxlIHRoYXQgaW52b2tlcyB0aGUgd3JhcHBlciBTQ29uc2NyaXB0LgorICBkaXIsIGZu
YW1lID0gb3MucGF0aC5zcGxpdChvdXRwdXRfZmlsZW5hbWUpCisgIFNDb25zdHJ1Y3QgPSBvcy5w
YXRoLmpvaW4oZGlyLCAnU0NvbnN0cnVjdCcpCisgIGZwID0gb3BlbihTQ29uc3RydWN0LCAndycp
CisgIGZwLndyaXRlKGhlYWRlcikKKyAgZnAud3JpdGUoJ1NDb25zY3JpcHQoJXMpXG4nICUgcmVw
cihmbmFtZSkpCisgIGZwLmNsb3NlKCkKKworCitkZWYgVGFyZ2V0RmlsZW5hbWUodGFyZ2V0LCBi
dWlsZF9maWxlPU5vbmUsIG91dHB1dF9zdWZmaXg9JycpOgorICAiIiJSZXR1cm5zIHRoZSAuc2Nv
bnMgZmlsZSBuYW1lIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldC4KKyAgIiIiCisgIGlmIGJ1aWxk
X2ZpbGUgaXMgTm9uZToKKyAgICBidWlsZF9maWxlLCB0YXJnZXQgPSBneXAuY29tbW9uLlBhcnNl
UXVhbGlmaWVkVGFyZ2V0KHRhcmdldClbOjJdCisgIG91dHB1dF9maWxlID0gb3MucGF0aC5qb2lu
KG9zLnBhdGguZGlybmFtZShidWlsZF9maWxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGFyZ2V0ICsgb3V0cHV0X3N1ZmZpeCArICcuc2NvbnMnKQorICByZXR1cm4gb3V0cHV0X2Zp
bGUKKworCitkZWYgR2VuZXJhdGVPdXRwdXQodGFyZ2V0X2xpc3QsIHRhcmdldF9kaWN0cywgZGF0
YSwgcGFyYW1zKToKKyAgIiIiCisgIEdlbmVyYXRlcyBhbGwgdGhlIG91dHB1dCBmaWxlcyBmb3Ig
dGhlIHNwZWNpZmllZCB0YXJnZXRzLgorICAiIiIKKyAgb3B0aW9ucyA9IHBhcmFtc1snb3B0aW9u
cyddCisKKyAgaWYgb3B0aW9ucy5nZW5lcmF0b3Jfb3V0cHV0OgorICAgIGRlZiBvdXRwdXRfcGF0
aChmaWxlbmFtZSk6CisgICAgICByZXR1cm4gZmlsZW5hbWUucmVwbGFjZShwYXJhbXNbJ2N3ZCdd
LCBvcHRpb25zLmdlbmVyYXRvcl9vdXRwdXQpCisgIGVsc2U6CisgICAgZGVmIG91dHB1dF9wYXRo
KGZpbGVuYW1lKToKKyAgICAgIHJldHVybiBmaWxlbmFtZQorCisgIGRlZmF1bHRfY29uZmlndXJh
dGlvbiA9IE5vbmUKKworICBmb3IgcXVhbGlmaWVkX3RhcmdldCBpbiB0YXJnZXRfbGlzdDoKKyAg
ICBzcGVjID0gdGFyZ2V0X2RpY3RzW3F1YWxpZmllZF90YXJnZXRdCisgICAgaWYgc3BlY1sndG9v
bHNldCddICE9ICd0YXJnZXQnOgorICAgICAgcmFpc2UgRXhjZXB0aW9uKAorICAgICAgICAgICdN
dWx0aXBsZSB0b29sc2V0cyBub3Qgc3VwcG9ydGVkIGluIHNjb25zIGJ1aWxkICh0YXJnZXQgJXMp
JyAlCisgICAgICAgICAgcXVhbGlmaWVkX3RhcmdldCkKKyAgICBzY29uc190YXJnZXQgPSBTQ29u
cy5UYXJnZXQoc3BlYykKKyAgICBpZiBzY29uc190YXJnZXQuaXNfaWdub3JlZDoKKyAgICAgIGNv
bnRpbnVlCisKKyAgICAjIFRPRE86ICBhc3N1bWVzIHRoZSBkZWZhdWx0X2NvbmZpZ3VyYXRpb24g
b2YgdGhlIGZpcnN0IHRhcmdldAorICAgICMgbm9uLURlZmF1bHQgdGFyZ2V0IGlzIHRoZSBjb3Jy
ZWN0IGRlZmF1bHQgZm9yIGFsbCB0YXJnZXRzLgorICAgICMgTmVlZCBhIGJldHRlciBtb2RlbCBm
b3IgaGFuZGxlIHZhcmlhdGlvbiBiZXR3ZWVuIHRhcmdldHMuCisgICAgaWYgKG5vdCBkZWZhdWx0
X2NvbmZpZ3VyYXRpb24gYW5kCisgICAgICAgIHNwZWNbJ2RlZmF1bHRfY29uZmlndXJhdGlvbidd
ICE9ICdEZWZhdWx0Jyk6CisgICAgICBkZWZhdWx0X2NvbmZpZ3VyYXRpb24gPSBzcGVjWydkZWZh
dWx0X2NvbmZpZ3VyYXRpb24nXQorCisgICAgYnVpbGRfZmlsZSwgdGFyZ2V0ID0gZ3lwLmNvbW1v
bi5QYXJzZVF1YWxpZmllZFRhcmdldChxdWFsaWZpZWRfdGFyZ2V0KVs6Ml0KKyAgICBvdXRwdXRf
ZmlsZSA9IFRhcmdldEZpbGVuYW1lKHRhcmdldCwgYnVpbGRfZmlsZSwgb3B0aW9ucy5zdWZmaXgp
CisgICAgaWYgb3B0aW9ucy5nZW5lcmF0b3Jfb3V0cHV0OgorICAgICAgb3V0cHV0X2ZpbGUgPSBv
dXRwdXRfcGF0aChvdXRwdXRfZmlsZSkKKworICAgIGlmIG5vdCBzcGVjLmhhc19rZXkoJ2xpYnJh
cmllcycpOgorICAgICAgc3BlY1snbGlicmFyaWVzJ10gPSBbXQorCisgICAgIyBBZGQgZGVwZW5k
ZW50IHN0YXRpYyBsaWJyYXJ5IHRhcmdldHMgdG8gdGhlICdsaWJyYXJpZXMnIHZhbHVlLgorICAg
IGRlcHMgPSBzcGVjLmdldCgnZGVwZW5kZW5jaWVzJywgW10pCisgICAgc3BlY1snc2NvbnNfZGVw
ZW5kZW5jaWVzJ10gPSBbXQorICAgIGZvciBkIGluIGRlcHM6CisgICAgICB0ZCA9IHRhcmdldF9k
aWN0c1tkXQorICAgICAgdGFyZ2V0X25hbWUgPSB0ZFsndGFyZ2V0X25hbWUnXQorICAgICAgc3Bl
Y1snc2NvbnNfZGVwZW5kZW5jaWVzJ10uYXBwZW5kKCJBbGlhcygnJXMnKSIgJSB0YXJnZXRfbmFt
ZSkKKyAgICAgIGlmIHRkWyd0eXBlJ10gaW4gKCdzdGF0aWNfbGlicmFyeScsICdzaGFyZWRfbGli
cmFyeScpOgorICAgICAgICBsaWJuYW1lID0gdGQuZ2V0KCdwcm9kdWN0X25hbWUnLCB0YXJnZXRf
bmFtZSkKKyAgICAgICAgc3BlY1snbGlicmFyaWVzJ10uYXBwZW5kKCdsaWInICsgbGlibmFtZSkK
KyAgICAgIGlmIHRkWyd0eXBlJ10gPT0gJ2xvYWRhYmxlX21vZHVsZSc6CisgICAgICAgIHByZXJl
cXMgPSBzcGVjLmdldCgnc2NvbnNfcHJlcmVxdWlzaXRlcycsIFtdKQorICAgICAgICAjIFRPRE86
ICBwYXJhbWV0ZXJpemUgd2l0aCA8KFNIQVJFRF9MSUJSQVJZXyopIHZhcmlhYmxlcz8KKyAgICAg
ICAgdGRfdGFyZ2V0ID0gU0NvbnMuVGFyZ2V0KHRkKQorICAgICAgICB0ZF90YXJnZXQudGFyZ2V0
X3ByZWZpeCA9ICcke1NITElCUFJFRklYfScKKyAgICAgICAgdGRfdGFyZ2V0LnRhcmdldF9zdWZm
aXggPSAnJHtTSExJQlNVRkZJWH0nCisKKyAgICBHZW5lcmF0ZVNDb25zY3JpcHQob3V0cHV0X2Zp
bGUsIHNwZWMsIGJ1aWxkX2ZpbGUsIGRhdGFbYnVpbGRfZmlsZV0pCisKKyAgaWYgbm90IGRlZmF1
bHRfY29uZmlndXJhdGlvbjoKKyAgICBkZWZhdWx0X2NvbmZpZ3VyYXRpb24gPSAnRGVmYXVsdCcK
KworICBmb3IgYnVpbGRfZmlsZSBpbiBzb3J0ZWQoZGF0YS5rZXlzKCkpOgorICAgIHBhdGgsIGV4
dCA9IG9zLnBhdGguc3BsaXRleHQoYnVpbGRfZmlsZSkKKyAgICBpZiBleHQgIT0gJy5neXAnOgor
ICAgICAgY29udGludWUKKyAgICBvdXRwdXRfZGlyLCBiYXNlbmFtZSA9IG9zLnBhdGguc3BsaXQo
cGF0aCkKKyAgICBvdXRwdXRfZmlsZW5hbWUgID0gcGF0aCArICdfbWFpbicgKyBvcHRpb25zLnN1
ZmZpeCArICcuc2NvbnMnCisKKyAgICBhbGxfdGFyZ2V0cyA9IGd5cC5jb21tb24uQWxsVGFyZ2V0
cyh0YXJnZXRfbGlzdCwgdGFyZ2V0X2RpY3RzLCBidWlsZF9maWxlKQorICAgIHNjb25zY3JpcHRf
ZmlsZXMgPSB7fQorICAgIGZvciB0IGluIGFsbF90YXJnZXRzOgorICAgICAgc2NvbnNfdGFyZ2V0
ID0gU0NvbnMuVGFyZ2V0KHRhcmdldF9kaWN0c1t0XSkKKyAgICAgIGlmIHNjb25zX3RhcmdldC5p
c19pZ25vcmVkOgorICAgICAgICBjb250aW51ZQorICAgICAgYmYsIHRhcmdldCA9IGd5cC5jb21t
b24uUGFyc2VRdWFsaWZpZWRUYXJnZXQodClbOjJdCisgICAgICB0YXJnZXRfZmlsZW5hbWUgPSBU
YXJnZXRGaWxlbmFtZSh0YXJnZXQsIGJmLCBvcHRpb25zLnN1ZmZpeCkKKyAgICAgIHRwYXRoID0g
Z3lwLmNvbW1vbi5SZWxhdGl2ZVBhdGgodGFyZ2V0X2ZpbGVuYW1lLCBvdXRwdXRfZGlyKQorICAg
ICAgc2NvbnNjcmlwdF9maWxlc1t0YXJnZXRdID0gdHBhdGgKKworICAgIG91dHB1dF9maWxlbmFt
ZSA9IG91dHB1dF9wYXRoKG91dHB1dF9maWxlbmFtZSkKKyAgICBpZiBzY29uc2NyaXB0X2ZpbGVz
OgorICAgICAgR2VuZXJhdGVTQ29uc2NyaXB0V3JhcHBlcihidWlsZF9maWxlLCBkYXRhW2J1aWxk
X2ZpbGVdLCBiYXNlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0
X2ZpbGVuYW1lLCBzY29uc2NyaXB0X2ZpbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0X2NvbmZpZ3VyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvcHlsaWIvZ3lwL2dlbmVyYXRvci94Y29kZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC9weWxpYi9neXAvZ2VuZXJhdG9yL3hjb2RlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3Y2U1YjBmM2IzOWVk
Yjk0YzZhYzA2NWUzZjdkNDA2ZDYxMzk2ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvcHlsaWIvZ3lwL2dlbmVyYXRvci94Y29kZS5weQpAQCAtMCwwICsxLDEyMDEg
QEAKKyMhL3Vzci9iaW4vcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKworaW1wb3J0IGZpbGVjbXAKK2ltcG9ydCBneXAuY29tbW9uCitpbXBvcnQg
Z3lwLnhjb2RlcHJval9maWxlCitpbXBvcnQgZXJybm8KK2ltcG9ydCBvcworaW1wb3J0IHBvc2l4
cGF0aAoraW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0
IHRlbXBmaWxlCisKKworIyBQcm9qZWN0IGZpbGVzIGdlbmVyYXRlZCBieSB0aGlzIG1vZHVsZSB3
aWxsIHVzZSBfaW50ZXJtZWRpYXRlX3ZhciBhcyBhCisjIGN1c3RvbSBYY29kZSBzZXR0aW5nIHdo
b3NlIHZhbHVlIGlzIGEgRGVyaXZlZFNvdXJjZXMtbGlrZSBkaXJlY3RvcnkgdGhhdCdzCisjIHBy
b2plY3Qtc3BlY2lmaWMgYW5kIGNvbmZpZ3VyYXRpb24tc3BlY2lmaWMuICBUaGUgbm9ybWFsIGNo
b2ljZSwKKyMgREVSSVZFRF9GSUxFX0RJUiwgaXMgdGFyZ2V0LXNwZWNpZmljLCB3aGljaCBpcyB0
aG91Z2h0IHRvIGJlIHRvbyByZXN0cmljdGl2ZQorIyBhcyBpdCBpcyBsaWtlbHkgdGhhdCBtdWx0
aXBsZSB0YXJnZXRzIHdpdGhpbiBhIHNpbmdsZSBwcm9qZWN0IGZpbGUgd2lsbCB3YW50CisjIHRv
IGFjY2VzcyB0aGUgc2FtZSBzZXQgb2YgZ2VuZXJhdGVkIGZpbGVzLiAgVGhlIG90aGVyIG9wdGlv
biwKKyMgUFJPSkVDVF9ERVJJVkVEX0ZJTEVfRElSLCBpcyB1bnN1aXRhYmxlIGJlY2F1c2Ugd2hp
bGUgaXQgaXMgcHJvamVjdC1zcGVjaWZpYywKKyMgaXQgaXMgbm90IGNvbmZpZ3VyYXRpb24tc3Bl
Y2lmaWMuICBJTlRFUk1FRElBVEVfRElSIGlzIGRlZmluZWQgYXMKKyMgJChQUk9KRUNUX0RFUklW
RURfRklMRV9ESVIpLyQoQ09ORklHVVJBVElPTikuCitfaW50ZXJtZWRpYXRlX3ZhciA9ICdJTlRF
Uk1FRElBVEVfRElSJworCisjIFNIQVJFRF9JTlRFUk1FRElBVEVfRElSIGlzIHRoZSBzYW1lLCBl
eGNlcHQgdGhhdCBpdCBpcyBzaGFyZWQgYW1vbmcgYWxsCisjIHRhcmdldHMgdGhhdCBzaGFyZSB0
aGUgc2FtZSBCVUlMVF9QUk9EVUNUU19ESVIuCitfc2hhcmVkX2ludGVybWVkaWF0ZV92YXIgPSAn
U0hBUkVEX0lOVEVSTUVESUFURV9ESVInCisKK19saWJyYXJ5X3NlYXJjaF9wYXRoc192YXIgPSAn
TElCUkFSWV9TRUFSQ0hfUEFUSFMnCisKK2dlbmVyYXRvcl9kZWZhdWx0X3ZhcmlhYmxlcyA9IHsK
KyAgJ0VYRUNVVEFCTEVfUFJFRklYJzogJycsCisgICdFWEVDVVRBQkxFX1NVRkZJWCc6ICcnLAor
ICAnU1RBVElDX0xJQl9QUkVGSVgnOiAnbGliJywKKyAgJ1NIQVJFRF9MSUJfUFJFRklYJzogJ2xp
YicsCisgICdTVEFUSUNfTElCX1NVRkZJWCc6ICcuYScsCisgICdTSEFSRURfTElCX1NVRkZJWCc6
ICcuZHlsaWInLAorICAjIElOVEVSTUVESUFURV9ESVIgaXMgYSBwbGFjZSBmb3IgdGFyZ2V0cyB0
byBidWlsZCB1cCBpbnRlcm1lZGlhdGUgcHJvZHVjdHMuCisgICMgSXQgaXMgc3BlY2lmaWMgdG8g
ZWFjaCBidWlsZCBlbnZpcm9ubWVudC4gIEl0IGlzIG9ubHkgZ3VhcmFudGVlZCB0byBleGlzdAor
ICAjIGFuZCBiZSBjb25zdGFudCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYSBwcm9qZWN0LCBjb3Jy
ZXNwb25kaW5nIHRvIGEgc2luZ2xlCisgICMgaW5wdXQgZmlsZS4gIFNvbWUgYnVpbGQgZW52aXJv
bm1lbnRzIG1heSBhbGxvdyB0aGVpciBpbnRlcm1lZGlhdGUgZGlyZWN0b3J5CisgICMgdG8gYmUg
c2hhcmVkIG9uIGEgd2lkZXIgc2NhbGUsIGJ1dCB0aGlzIGlzIG5vdCBndWFyYW50ZWVkLgorICAn
SU5URVJNRURJQVRFX0RJUic6ICckKCVzKScgJSBfaW50ZXJtZWRpYXRlX3ZhciwKKyAgJ09TJzog
J21hYycsCisgICdQUk9EVUNUX0RJUic6ICckKEJVSUxUX1BST0RVQ1RTX0RJUiknLAorICAnTElC
X0RJUic6ICckKEJVSUxUX1BST0RVQ1RTX0RJUiknLAorICAnUlVMRV9JTlBVVF9ST09UJzogJyQo
SU5QVVRfRklMRV9CQVNFKScsCisgICdSVUxFX0lOUFVUX0VYVCc6ICckKElOUFVUX0ZJTEVfU1VG
RklYKScsCisgICdSVUxFX0lOUFVUX05BTUUnOiAnJChJTlBVVF9GSUxFX05BTUUpJywKKyAgJ1JV
TEVfSU5QVVRfUEFUSCc6ICckKElOUFVUX0ZJTEVfUEFUSCknLAorICAnU0hBUkVEX0lOVEVSTUVE
SUFURV9ESVInOiAnJCglcyknICUgX3NoYXJlZF9pbnRlcm1lZGlhdGVfdmFyLAorICAnQ09ORklH
VVJBVElPTl9OQU1FJzogJyQoQ09ORklHVVJBVElPTiknLAorfQorCisjIFRoZSBYY29kZS1zcGVj
aWZpYyBzZWN0aW9ucyB0aGF0IGhvbGQgcGF0aHMuCitnZW5lcmF0b3JfYWRkaXRpb25hbF9wYXRo
X3NlY3Rpb25zID0gWworICAnbWFjX2J1bmRsZV9yZXNvdXJjZXMnLAorICAnbWFjX2ZyYW1ld29y
a19oZWFkZXJzJywKKyAgJ21hY19mcmFtZXdvcmtfcHJpdmF0ZV9oZWFkZXJzJywKKyAgIyAnbWFj
X2ZyYW1ld29ya19kaXJzJywgaW5wdXQgYWxyZWFkeSBoYW5kbGVzIF9kaXJzIGVuZGluZ3MuCitd
CisKKyMgVGhlIFhjb2RlLXNwZWNpZmljIGtleXMgdGhhdCBleGlzdCBvbiB0YXJnZXRzIGFuZCBh
cmVuJ3QgbW92ZWQgZG93biB0bworIyBjb25maWd1cmF0aW9ucy4KK2dlbmVyYXRvcl9hZGRpdGlv
bmFsX25vbl9jb25maWd1cmF0aW9uX2tleXMgPSBbCisgICdtYWNfYnVuZGxlJywKKyAgJ21hY19i
dW5kbGVfcmVzb3VyY2VzJywKKyAgJ21hY19mcmFtZXdvcmtfaGVhZGVycycsCisgICdtYWNfZnJh
bWV3b3JrX3ByaXZhdGVfaGVhZGVycycsCisgICd4Y29kZV9jcmVhdGVfZGVwZW5kZW50c190ZXN0
X3J1bm5lcicsCitdCisKKyMgV2Ugd2FudCB0byBsZXQgYW55IHJ1bGVzIGFwcGx5IHRvIGZpbGVz
IHRoYXQgYXJlIHJlc291cmNlcyBhbHNvLgorZ2VuZXJhdG9yX2V4dHJhX3NvdXJjZXNfZm9yX3J1
bGVzID0gWworICAnbWFjX2J1bmRsZV9yZXNvdXJjZXMnLAorICAnbWFjX2ZyYW1ld29ya19oZWFk
ZXJzJywKKyAgJ21hY19mcmFtZXdvcmtfcHJpdmF0ZV9oZWFkZXJzJywKK10KKworIyBYY29kZSdz
IHN0YW5kYXJkIHNldCBvZiBsaWJyYXJ5IGRpcmVjdG9yaWVzLCB3aGljaCBkb24ndCBuZWVkIHRv
IGJlIGR1cGxpY2F0ZWQKKyMgaW4gTElCUkFSWV9TRUFSQ0hfUEFUSFMuIFRoaXMgbGlzdCBpcyBu
b3QgZXhoYXVzdGl2ZSwgYnV0IHRoYXQncyBva2F5LgoreGNvZGVfc3RhbmRhcmRfbGlicmFyeV9k
aXJzID0gZnJvemVuc2V0KFsKKyAgJyQoU0RLUk9PVCkvdXNyL2xpYicsCisgICckKFNES1JPT1Qp
L3Vzci9sb2NhbC9saWInLAorXSkKKworZGVmIENyZWF0ZVhDQ29uZmlndXJhdGlvbkxpc3QoY29u
ZmlndXJhdGlvbl9uYW1lcyk6CisgIHhjY2wgPSBneXAueGNvZGVwcm9qX2ZpbGUuWENDb25maWd1
cmF0aW9uTGlzdCh7J2J1aWxkQ29uZmlndXJhdGlvbnMnOiBbXX0pCisgIGlmIGxlbihjb25maWd1
cmF0aW9uX25hbWVzKSA9PSAwOgorICAgIGNvbmZpZ3VyYXRpb25fbmFtZXMgPSBbJ0RlZmF1bHQn
XQorICBmb3IgY29uZmlndXJhdGlvbl9uYW1lIGluIGNvbmZpZ3VyYXRpb25fbmFtZXM6CisgICAg
eGNiYyA9IGd5cC54Y29kZXByb2pfZmlsZS5YQ0J1aWxkQ29uZmlndXJhdGlvbih7CisgICAgICAg
ICduYW1lJzogY29uZmlndXJhdGlvbl9uYW1lfSkKKyAgICB4Y2NsLkFwcGVuZFByb3BlcnR5KCdi
dWlsZENvbmZpZ3VyYXRpb25zJywgeGNiYykKKyAgeGNjbC5TZXRQcm9wZXJ0eSgnZGVmYXVsdENv
bmZpZ3VyYXRpb25OYW1lJywgY29uZmlndXJhdGlvbl9uYW1lc1swXSkKKyAgcmV0dXJuIHhjY2wK
KworCitjbGFzcyBYY29kZVByb2plY3Qob2JqZWN0KToKKyAgZGVmIF9faW5pdF9fKHNlbGYsIGd5
cF9wYXRoLCBwYXRoLCBidWlsZF9maWxlX2RpY3QpOgorICAgIHNlbGYuZ3lwX3BhdGggPSBneXBf
cGF0aAorICAgIHNlbGYucGF0aCA9IHBhdGgKKyAgICBzZWxmLnByb2plY3QgPSBneXAueGNvZGVw
cm9qX2ZpbGUuUEJYUHJvamVjdChwYXRoPXBhdGgpCisgICAgcHJvamVjdERpclBhdGggPSBneXAu
Y29tbW9uLlJlbGF0aXZlUGF0aCgKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmRp
cm5hbWUob3MucGF0aC5hYnNwYXRoKHNlbGYuZ3lwX3BhdGgpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBvcy5wYXRoLmRpcm5hbWUocGF0aCkgb3IgJy4nKQorICAgIHNlbGYucHJvamVjdC5T
ZXRQcm9wZXJ0eSgncHJvamVjdERpclBhdGgnLCBwcm9qZWN0RGlyUGF0aCkKKyAgICBzZWxmLnBy
b2plY3RfZmlsZSA9IFwKKyAgICAgICAgZ3lwLnhjb2RlcHJval9maWxlLlhDUHJvamVjdEZpbGUo
eydyb290T2JqZWN0Jzogc2VsZi5wcm9qZWN0fSkKKyAgICBzZWxmLmJ1aWxkX2ZpbGVfZGljdCA9
IGJ1aWxkX2ZpbGVfZGljdAorCisgICAgIyBUT0RPKG1hcmspOiBhZGQgZGVzdHJ1Y3RvciB0aGF0
IGNsZWFucyB1cCBzZWxmLnBhdGggaWYgY3JlYXRlZF9kaXIgaXMKKyAgICAjIFRydWUgYW5kIHRo
aW5ncyBkaWRuJ3QgY29tcGxldGUgc3VjY2Vzc2Z1bGx5LiAgT3IgZG8gc29tZXRoaW5nIGV2ZW4K
KyAgICAjIGJldHRlciB3aXRoICJ0cnkiPworICAgIHNlbGYuY3JlYXRlZF9kaXIgPSBGYWxzZQor
ICAgIHRyeToKKyAgICAgIG9zLm1ha2VkaXJzKHNlbGYucGF0aCkKKyAgICAgIHNlbGYuY3JlYXRl
ZF9kaXIgPSBUcnVlCisgICAgZXhjZXB0IE9TRXJyb3IsIGU6CisgICAgICBpZiBlLmVycm5vICE9
IGVycm5vLkVFWElTVDoKKyAgICAgICAgcmFpc2UKKworICBkZWYgRmluYWxpemUxKHNlbGYsIHhj
b2RlX3RhcmdldHMsIHNlcmlhbGl6ZV9hbGxfdGVzdHMpOgorICAgICMgQ29sbGVjdCBhIGxpc3Qg
b2YgYWxsIG9mIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIG5hbWVzIHVzZWQgYnkgdGhlCisgICAg
IyB2YXJpb3VzIHRhcmdldHMgaW4gdGhlIGZpbGUuICBJdCBpcyB2ZXJ5IGhlYXZpbHkgYWR2aXNl
ZCB0byBrZWVwIGVhY2gKKyAgICAjIHRhcmdldCBpbiBhbiBlbnRpcmUgcHJvamVjdCAoZXZlbiBh
Y3Jvc3MgbXVsdGlwbGUgcHJvamVjdCBmaWxlcykgdXNpbmcKKyAgICAjIHRoZSBzYW1lIHNldCBv
ZiBjb25maWd1cmF0aW9uIG5hbWVzLgorICAgIGNvbmZpZ3VyYXRpb25zID0gW10KKyAgICBmb3Ig
eGN0IGluIHNlbGYucHJvamVjdC5HZXRQcm9wZXJ0eSgndGFyZ2V0cycpOgorICAgICAgeGNjbCA9
IHhjdC5HZXRQcm9wZXJ0eSgnYnVpbGRDb25maWd1cmF0aW9uTGlzdCcpCisgICAgICB4Y2JjcyA9
IHhjY2wuR2V0UHJvcGVydHkoJ2J1aWxkQ29uZmlndXJhdGlvbnMnKQorICAgICAgZm9yIHhjYmMg
aW4geGNiY3M6CisgICAgICAgIG5hbWUgPSB4Y2JjLkdldFByb3BlcnR5KCduYW1lJykKKyAgICAg
ICAgaWYgbmFtZSBub3QgaW4gY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgY29uZmlndXJhdGlv
bnMuYXBwZW5kKG5hbWUpCisKKyAgICAjIFJlcGxhY2UgdGhlIFhDQ29uZmlndXJhdGlvbkxpc3Qg
YXR0YWNoZWQgdG8gdGhlIFBCWFByb2plY3Qgb2JqZWN0IHdpdGgKKyAgICAjIGEgbmV3IG9uZSBz
cGVjaWZ5aW5nIGFsbCBvZiB0aGUgY29uZmlndXJhdGlvbiBuYW1lcyB1c2VkIGJ5IHRoZSB2YXJp
b3VzCisgICAgIyB0YXJnZXRzLgorICAgIHRyeToKKyAgICAgIHhjY2wgPSBDcmVhdGVYQ0NvbmZp
Z3VyYXRpb25MaXN0KGNvbmZpZ3VyYXRpb25zKQorICAgICAgc2VsZi5wcm9qZWN0LlNldFByb3Bl
cnR5KCdidWlsZENvbmZpZ3VyYXRpb25MaXN0JywgeGNjbCkKKyAgICBleGNlcHQ6CisgICAgICBp
bXBvcnQgc3lzCisgICAgICBzeXMuc3RkZXJyLndyaXRlKCJQcm9ibGVtIHdpdGggZ3lwIGZpbGUg
JXNcbiIgJSBzZWxmLmd5cF9wYXRoKQorICAgICAgcmFpc2UKKworICAgICMgVGhlIG5lZWQgZm9y
IHRoaXMgc2V0dGluZyBpcyBleHBsYWluZWQgYWJvdmUgd2hlcmUgX2ludGVybWVkaWF0ZV92YXIg
aXMKKyAgICAjIGRlZmluZWQuICBUaGUgY29tbWVudHMgYmVsb3cgYWJvdXQgd2FudGluZyB0byBh
dm9pZCBwcm9qZWN0LXdpZGUgYnVpbGQKKyAgICAjIHNldHRpbmdzIGFwcGx5IGhlcmUgdG9vLCBi
dXQgdGhpcyBuZWVkcyB0byBiZSBzZXQgb24gYSBwcm9qZWN0LXdpZGUgYmFzaXMKKyAgICAjIHNv
IHRoYXQgZmlsZXMgcmVsYXRpdmUgdG8gdGhlIF9pbnRlcm1lZGlhdGVfdmFyIHNldHRpbmcgY2Fu
IGJlIGRpc3BsYXllZAorICAgICMgcHJvcGVybHkgaW4gdGhlIFhjb2RlIFVJLgorICAgICMKKyAg
ICAjIE5vdGUgdGhhdCBmb3IgY29uZmlndXJhdGlvbi1yZWxhdGl2ZSBmaWxlcyBzdWNoIGFzIGFu
eXRoaW5nIHJlbGF0aXZlIHRvCisgICAgIyBfaW50ZXJtZWRpYXRlX3ZhciwgZm9yIHRoZSBwdXJw
b3NlcyBvZiBVSSB0cmVlIHZpZXcgZGlzcGxheSwgWGNvZGUgd2lsbAorICAgICMgb25seSByZXNv
bHZlIHRoZSBjb25maWd1cmF0aW9uIG5hbWUgb25jZSwgd2hlbiB0aGUgcHJvamVjdCBmaWxlIGlz
CisgICAgIyBvcGVuZWQuICBJZiB0aGUgYWN0aXZlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMgY2hh
bmdlZCwgdGhlIHByb2plY3QgZmlsZQorICAgICMgbXVzdCBiZSBjbG9zZWQgYW5kIHJlb3BlbmVk
IGlmIGl0IGlzIGRlc2lyZWQgZm9yIHRoZSB0cmVlIHZpZXcgdG8gdXBkYXRlLgorICAgICMgVGhp
cyBpcyBmaWxlZCBhcyBBcHBsZSByYWRhciA2NTg4MzkxLgorICAgIHhjY2wuU2V0QnVpbGRTZXR0
aW5nKF9pbnRlcm1lZGlhdGVfdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICckKFBST0pF
Q1RfREVSSVZFRF9GSUxFX0RJUikvJChDT05GSUdVUkFUSU9OKScpCisgICAgeGNjbC5TZXRCdWls
ZFNldHRpbmcoX3NoYXJlZF9pbnRlcm1lZGlhdGVfdmFyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICckKFNZTVJPT1QpL0Rlcml2ZWRTb3VyY2VzLyQoQ09ORklHVVJBVElPTiknKQorCisgICAg
IyBTZXQgdXNlci1zcGVjaWZpZWQgcHJvamVjdC13aWRlIGJ1aWxkIHNldHRpbmdzIGFuZCBjb25m
aWcgZmlsZXMuICBUaGlzCisgICAgIyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHZlcnkgc3Bhcmlu
Z2x5LiAgUmVhbGx5LCBhbG1vc3QgZXZlcnl0aGluZyBzaG91bGQKKyAgICAjIGdvIGludG8gdGFy
Z2V0LXNwZWNpZmljIGJ1aWxkIHNldHRpbmdzIHNlY3Rpb25zLiAgVGhlIHByb2plY3Qtd2lkZQor
ICAgICMgc2V0dGluZ3MgYXJlIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBjYXNlcyB3aGVy
ZSBYY29kZSBhdHRlbXB0cyB0bworICAgICMgcmVzb2x2ZSB2YXJpYWJsZSByZWZlcmVuY2VzIGlu
IGEgcHJvamVjdCBjb250ZXh0IGFzIG9wcG9zZWQgdG8gYSB0YXJnZXQKKyAgICAjIGNvbnRleHQs
IHN1Y2ggYXMgd2hlbiByZXNvbHZpbmcgc291cmNlVHJlZSByZWZlcmVuY2VzIHdoaWxlIGJ1aWxk
aW5nIHVwCisgICAgIyB0aGUgdHJlZSB0cmVlIHZpZXcgZm9yIFVJIGRpc3BsYXkuCisgICAgIyBB
bnkgdmFsdWVzIHNldCBnbG9iYWxseSBhcmUgYXBwbGllZCB0byBhbGwgY29uZmlndXJhdGlvbnMs
IHRoZW4gYW55CisgICAgIyBwZXItY29uZmlndXJhdGlvbiB2YWx1ZXMgYXJlIGFwcGxpZWQuCisg
ICAgZm9yIHhjaywgeGN2IGluIHNlbGYuYnVpbGRfZmlsZV9kaWN0LmdldCgneGNvZGVfc2V0dGlu
Z3MnLCB7fSkuaXRlcml0ZW1zKCk6CisgICAgICB4Y2NsLlNldEJ1aWxkU2V0dGluZyh4Y2ssIHhj
dikKKyAgICBpZiAneGNvZGVfY29uZmlnX2ZpbGUnIGluIHNlbGYuYnVpbGRfZmlsZV9kaWN0Ogor
ICAgICAgY29uZmlnX3JlZiA9IHNlbGYucHJvamVjdC5BZGRPckdldEZpbGVJblJvb3RHcm91cCgK
KyAgICAgICAgICBzZWxmLmJ1aWxkX2ZpbGVfZGljdFsneGNvZGVfY29uZmlnX2ZpbGUnXSkKKyAg
ICAgIHhjY2wuU2V0QmFzZUNvbmZpZ3VyYXRpb24oY29uZmlnX3JlZikKKyAgICBidWlsZF9maWxl
X2NvbmZpZ3VyYXRpb25zID0gc2VsZi5idWlsZF9maWxlX2RpY3QuZ2V0KCdjb25maWd1cmF0aW9u
cycsIHt9KQorICAgIGlmIGJ1aWxkX2ZpbGVfY29uZmlndXJhdGlvbnM6CisgICAgICBmb3IgY29u
ZmlnX25hbWUgaW4gY29uZmlndXJhdGlvbnM6CisgICAgICAgIGJ1aWxkX2ZpbGVfY29uZmlndXJh
dGlvbl9uYW1lZCA9IFwKKyAgICAgICAgICAgIGJ1aWxkX2ZpbGVfY29uZmlndXJhdGlvbnMuZ2V0
KGNvbmZpZ19uYW1lLCB7fSkKKyAgICAgICAgaWYgYnVpbGRfZmlsZV9jb25maWd1cmF0aW9uX25h
bWVkOgorICAgICAgICAgIHhjYyA9IHhjY2wuQ29uZmlndXJhdGlvbk5hbWVkKGNvbmZpZ19uYW1l
KQorICAgICAgICAgIGZvciB4Y2ssIHhjdiBpbiBidWlsZF9maWxlX2NvbmZpZ3VyYXRpb25fbmFt
ZWQuZ2V0KCd4Y29kZV9zZXR0aW5ncycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30pLml0ZXJpdGVtcygpOgorICAgICAgICAg
ICAgeGNjLlNldEJ1aWxkU2V0dGluZyh4Y2ssIHhjdikKKyAgICAgICAgICBpZiAneGNvZGVfY29u
ZmlnX2ZpbGUnIGluIGJ1aWxkX2ZpbGVfY29uZmlndXJhdGlvbl9uYW1lZDoKKyAgICAgICAgICAg
IGNvbmZpZ19yZWYgPSBzZWxmLnByb2plY3QuQWRkT3JHZXRGaWxlSW5Sb290R3JvdXAoCisgICAg
ICAgICAgICAgICAgYnVpbGRfZmlsZV9jb25maWd1cmF0aW9uc1tjb25maWdfbmFtZV1bJ3hjb2Rl
X2NvbmZpZ19maWxlJ10pCisgICAgICAgICAgICB4Y2MuU2V0QmFzZUNvbmZpZ3VyYXRpb24oY29u
ZmlnX3JlZikKKworICAgICMgU29ydCB0aGUgdGFyZ2V0cyBiYXNlZCBvbiBob3cgdGhleSBhcHBl
YXJlZCBpbiB0aGUgaW5wdXQuCisgICAgIyBUT0RPKG1hcmspOiBMaWtlIGEgbG90IG9mIG90aGVy
IHRoaW5ncyBoZXJlLCB0aGlzIGFzc3VtZXMgaW50ZXJuYWwKKyAgICAjIGtub3dsZWRnZSBvZiBQ
QlhQcm9qZWN0IC0gaW4gdGhpcyBjYXNlLCBvZiBpdHMgInRhcmdldHMiIHByb3BlcnR5LgorCisg
ICAgIyBvcmRpbmFyeV90YXJnZXRzIGFyZSBvcmRpbmFyeSB0YXJnZXRzIHRoYXQgYXJlIGFscmVh
ZHkgaW4gdGhlIHByb2plY3QKKyAgICAjIGZpbGUuIHJ1bl90ZXN0X3RhcmdldHMgYXJlIHRoZSB0
YXJnZXRzIHRoYXQgcnVuIHVuaXR0ZXN0cyBhbmQgc2hvdWxkIGJlCisgICAgIyB1c2VkIGZvciB0
aGUgUnVuIEFsbCBUZXN0cyB0YXJnZXQuICBzdXBwb3J0X3RhcmdldHMgYXJlIHRoZSBhY3Rpb24v
cnVsZQorICAgICMgdGFyZ2V0cyB1c2VkIGJ5IEdZUCBmaWxlIHRhcmdldHMsIGp1c3Qga2VwdCBm
b3IgdGhlIGFzc2VydCBjaGVjay4KKyAgICBvcmRpbmFyeV90YXJnZXRzID0gW10KKyAgICBydW5f
dGVzdF90YXJnZXRzID0gW10KKyAgICBzdXBwb3J0X3RhcmdldHMgPSBbXQorCisgICAgIyB0YXJn
ZXRzIGlzIGZ1bGwgbGlzdCBvZiB0YXJnZXRzIGluIHRoZSBwcm9qZWN0LgorICAgIHRhcmdldHMg
PSBbXQorCisgICAgIyBkb2VzIHRoZSBpdCBkZWZpbmUgaXQncyBvd24gImFsbCI/CisgICAgaGFz
X2N1c3RvbV9hbGwgPSBGYWxzZQorCisgICAgIyB0YXJnZXRzX2Zvcl9hbGwgaXMgdGhlIGxpc3Qg
b2Ygb3JkaW5hcnlfdGFyZ2V0cyB0aGF0IHNob3VsZCBiZSBsaXN0ZWQKKyAgICAjIGluIHRoaXMg
cHJvamVjdCdzICJBbGwiIHRhcmdldC4gIEl0IGluY2x1ZGVzIGVhY2ggbm9uX3J1bnRlc3RfdGFy
Z2V0CisgICAgIyB0aGF0IGRvZXMgbm90IGhhdmUgc3VwcHJlc3Nfd2lsZGNhcmQgc2V0LgorICAg
IHRhcmdldHNfZm9yX2FsbCA9IFtdCisKKyAgICBmb3IgdGFyZ2V0IGluIHNlbGYuYnVpbGRfZmls
ZV9kaWN0Wyd0YXJnZXRzJ106CisgICAgICB0YXJnZXRfbmFtZSA9IHRhcmdldFsndGFyZ2V0X25h
bWUnXQorICAgICAgdG9vbHNldCA9IHRhcmdldFsndG9vbHNldCddCisgICAgICBxdWFsaWZpZWRf
dGFyZ2V0ID0gZ3lwLmNvbW1vbi5RdWFsaWZpZWRUYXJnZXQoc2VsZi5neXBfcGF0aCwgdGFyZ2V0
X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdG9vbHNldCkKKyAgICAgIHhjb2RlX3RhcmdldCA9IHhjb2RlX3RhcmdldHNbcXVhbGlmaWVk
X3RhcmdldF0KKyAgICAgICMgTWFrZSBzdXJlIHRoYXQgdGhlIHRhcmdldCBiZWluZyBhZGRlZCB0
byB0aGUgc29ydGVkIGxpc3QgaXMgYWxyZWFkeSBpbgorICAgICAgIyB0aGUgdW5zb3J0ZWQgbGlz
dC4KKyAgICAgIGFzc2VydCB4Y29kZV90YXJnZXQgaW4gc2VsZi5wcm9qZWN0Ll9wcm9wZXJ0aWVz
Wyd0YXJnZXRzJ10KKyAgICAgIHRhcmdldHMuYXBwZW5kKHhjb2RlX3RhcmdldCkKKyAgICAgIG9y
ZGluYXJ5X3RhcmdldHMuYXBwZW5kKHhjb2RlX3RhcmdldCkKKyAgICAgIGlmIHhjb2RlX3Rhcmdl
dC5zdXBwb3J0X3RhcmdldDoKKyAgICAgICAgc3VwcG9ydF90YXJnZXRzLmFwcGVuZCh4Y29kZV90
YXJnZXQuc3VwcG9ydF90YXJnZXQpCisgICAgICAgIHRhcmdldHMuYXBwZW5kKHhjb2RlX3Rhcmdl
dC5zdXBwb3J0X3RhcmdldCkKKworICAgICAgaWYgbm90IGludCh0YXJnZXQuZ2V0KCdzdXBwcmVz
c193aWxkY2FyZCcsIEZhbHNlKSk6CisgICAgICAgIHRhcmdldHNfZm9yX2FsbC5hcHBlbmQoeGNv
ZGVfdGFyZ2V0KQorCisgICAgICBpZiB0YXJnZXRfbmFtZS5sb3dlcigpID09ICdhbGwnOgorICAg
ICAgICBoYXNfY3VzdG9tX2FsbCA9IFRydWU7CisKKyAgICAgICMgSWYgdGhpcyB0YXJnZXQgaGFz
IGEgJ3J1bl9hcycgYXR0cmlidXRlLCBhZGQgaXRzIHRhcmdldCB0byB0aGUKKyAgICAgICMgdGFy
Z2V0cywgYW5kIGFkZCBpdCB0byB0aGUgdGVzdCB0YXJnZXRzLgorICAgICAgaWYgdGFyZ2V0Lmdl
dCgncnVuX2FzJyk6CisgICAgICAgICMgTWFrZSBhIHRhcmdldCB0byBydW4gc29tZXRoaW5nLiAg
SXQgc2hvdWxkIGhhdmUgb25lCisgICAgICAgICMgZGVwZW5kZW5jeSwgdGhlIHBhcmVudCB4Y29k
ZSB0YXJnZXQuCisgICAgICAgIHhjY2wgPSBDcmVhdGVYQ0NvbmZpZ3VyYXRpb25MaXN0KGNvbmZp
Z3VyYXRpb25zKQorICAgICAgICBydW5fdGFyZ2V0ID0gZ3lwLnhjb2RlcHJval9maWxlLlBCWEFn
Z3JlZ2F0ZVRhcmdldCh7CisgICAgICAgICAgICAgICduYW1lJzogICAgICAgICAgICAgICAgICAg
J1J1biAnICsgdGFyZ2V0X25hbWUsCisgICAgICAgICAgICAgICdwcm9kdWN0TmFtZSc6ICAgICAg
ICAgICAgeGNvZGVfdGFyZ2V0LkdldFByb3BlcnR5KCdwcm9kdWN0TmFtZScpLAorICAgICAgICAg
ICAgICAnYnVpbGRDb25maWd1cmF0aW9uTGlzdCc6IHhjY2wsCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgcGFyZW50PXNlbGYucHJvamVjdCkKKyAgICAgICAgcnVuX3RhcmdldC5BZGREZXBl
bmRlbmN5KHhjb2RlX3RhcmdldCkKKworICAgICAgICBjb21tYW5kID0gdGFyZ2V0WydydW5fYXMn
XQorICAgICAgICBzY3JpcHQgPSAnJworICAgICAgICBpZiBjb21tYW5kLmdldCgnd29ya2luZ19k
aXJlY3RvcnknKToKKyAgICAgICAgICBzY3JpcHQgPSBzY3JpcHQgKyAnY2QgIiVzIlxuJyAlIFwK
KyAgICAgICAgICAgICAgICAgICBneXAueGNvZGVwcm9qX2ZpbGUuQ29udmVydFZhcmlhYmxlc1Rv
U2hlbGxTeW50YXgoCisgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuZ2V0KCd3b3JraW5n
X2RpcmVjdG9yeScpKQorCisgICAgICAgIGlmIGNvbW1hbmQuZ2V0KCdlbnZpcm9ubWVudCcpOgor
ICAgICAgICAgIHNjcmlwdCA9IHNjcmlwdCArICJcbiIuam9pbigKKyAgICAgICAgICAgIFsnZXhw
b3J0ICVzPSIlcyInICUKKyAgICAgICAgICAgICAoa2V5LCBneXAueGNvZGVwcm9qX2ZpbGUuQ29u
dmVydFZhcmlhYmxlc1RvU2hlbGxTeW50YXgodmFsKSkKKyAgICAgICAgICAgICBmb3IgKGtleSwg
dmFsKSBpbiBjb21tYW5kLmdldCgnZW52aXJvbm1lbnQnKS5pdGVyaXRlbXMoKV0pICsgIlxuIgor
CisgICAgICAgICMgU29tZSB0ZXN0IGVuZCB1cCB1c2luZyBzb2NrZXRzLCBmaWxlcyBvbiBkaXNr
LCBldGMuIGFuZCBjYW4gZ2V0CisgICAgICAgICMgY29uZnVzZWQgaWYgbW9yZSB0aGVuIG9uZSB0
ZXN0IHJ1bnMgYXQgYSB0aW1lLiAgVGhlIGdlbmVyYXRvcgorICAgICAgICAjIGZsYWcgJ3hjb2Rl
X3NlcmlhbGl6ZV9hbGxfdGVzdF9ydW5zJyBjb250cm9scyB0aGUgZm9yY2luZyBvZiBhbGwKKyAg
ICAgICAgIyB0ZXN0cyBzZXJpYWxseS4gIEl0IGRlZmF1bHRzIHRvIFRydWUuICBUbyBnZXQgc2Vy
aWFsIHJ1bnMgdGhpcworICAgICAgICAjIGxpdHRsZSBiaXQgb2YgcHl0aG9uIGRvZXMgdGhlIHNh
bWUgYXMgdGhlIGxpbnV4IGZsb2NrIHV0aWxpdHkgdG8KKyAgICAgICAgIyBtYWtlIHN1cmUgb25s
eSBvbmUgcnVucyBhdCBhIHRpbWUuCisgICAgICAgIGNvbW1hbmRfcHJlZml4ID0gJycKKyAgICAg
ICAgaWYgc2VyaWFsaXplX2FsbF90ZXN0czoKKyAgICAgICAgICBjb21tYW5kX3ByZWZpeCA9IFwK
KyIiInB5dGhvbiAtYyAiaW1wb3J0IGZjbnRsLCBzdWJwcm9jZXNzLCBzeXMKK2ZpbGUgPSBvcGVu
KCckVE1QRElSL0dZUF9zZXJpYWxpemVfdGVzdF9ydW5zJywgJ2EnKQorZmNudGwuZmxvY2soZmls
ZS5maWxlbm8oKSwgZmNudGwuTE9DS19FWCkKK3N5cy5leGl0KHN1YnByb2Nlc3MuY2FsbChzeXMu
YXJndlsxOl0pKSIgIiIiCisKKyAgICAgICAgIyBJZiB3ZSB3ZXJlIHVuYWJsZSB0byBleGVjIGZv
ciBzb21lIHJlYXNvbiwgd2Ugd2FudCB0byBleGl0CisgICAgICAgICMgd2l0aCBhbiBlcnJvciwg
YW5kIGZpeHVwIHZhcmlhYmxlIHJlZmVyZW5jZXMgdG8gYmUgc2hlbGwKKyAgICAgICAgIyBzeW50
YXggaW5zdGVhZCBvZiB4Y29kZSBzeW50YXguCisgICAgICAgIHNjcmlwdCA9IHNjcmlwdCArICdl
eGVjICcgKyBjb21tYW5kX3ByZWZpeCArICclc1xuZXhpdCAxXG4nICUgXAorICAgICAgICAgICAg
ICAgICBneXAueGNvZGVwcm9qX2ZpbGUuQ29udmVydFZhcmlhYmxlc1RvU2hlbGxTeW50YXgoCisg
ICAgICAgICAgICAgICAgICAgICBneXAuY29tbW9uLkVuY29kZVBPU0lYU2hlbGxMaXN0KGNvbW1h
bmQuZ2V0KCdhY3Rpb24nKSkpCisKKyAgICAgICAgc3NicCA9IGd5cC54Y29kZXByb2pfZmlsZS5Q
QlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2UoeworICAgICAgICAgICAgICAnc2hlbGxTY3JpcHQnOiAg
ICAgIHNjcmlwdCwKKyAgICAgICAgICAgICAgJ3Nob3dFbnZWYXJzSW5Mb2cnOiAwLAorICAgICAg
ICAgICAgfSkKKyAgICAgICAgcnVuX3RhcmdldC5BcHBlbmRQcm9wZXJ0eSgnYnVpbGRQaGFzZXMn
LCBzc2JwKQorCisgICAgICAgICMgQWRkIHRoZSBydW4gdGFyZ2V0IHRvIHRoZSBwcm9qZWN0IGZp
bGUuCisgICAgICAgIHRhcmdldHMuYXBwZW5kKHJ1bl90YXJnZXQpCisgICAgICAgIHJ1bl90ZXN0
X3RhcmdldHMuYXBwZW5kKHJ1bl90YXJnZXQpCisgICAgICAgIHhjb2RlX3RhcmdldC50ZXN0X3J1
bm5lciA9IHJ1bl90YXJnZXQKKworCisgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgbGlzdCBvZiB0
YXJnZXRzIGJlaW5nIHJlcGxhY2VkIGlzIHRoZSBzYW1lIGxlbmd0aCBhcworICAgICMgdGhlIG9u
ZSByZXBsYWNpbmcgaXQsIGJ1dCBhbGxvdyBmb3IgdGhlIGFkZGVkIHRlc3QgcnVubmVyIHRhcmdl
dHMuCisgICAgYXNzZXJ0IGxlbihzZWxmLnByb2plY3QuX3Byb3BlcnRpZXNbJ3RhcmdldHMnXSkg
PT0gXAorICAgICAgbGVuKG9yZGluYXJ5X3RhcmdldHMpICsgbGVuKHN1cHBvcnRfdGFyZ2V0cykK
KworICAgIHNlbGYucHJvamVjdC5fcHJvcGVydGllc1sndGFyZ2V0cyddID0gdGFyZ2V0cworCisg
ICAgIyBHZXQgcmlkIG9mIHVubmVjZXNzYXJ5IGxldmVscyBvZiBkZXB0aCBpbiBncm91cHMgbGlr
ZSB0aGUgU291cmNlIGdyb3VwLgorICAgIHNlbGYucHJvamVjdC5Sb290R3JvdXBzVGFrZU92ZXJP
bmx5Q2hpbGRyZW4oVHJ1ZSkKKworICAgICMgU29ydCB0aGUgZ3JvdXBzIG5pY2VseS4gIERvIHRo
aXMgYWZ0ZXIgc29ydGluZyB0aGUgdGFyZ2V0cywgYmVjYXVzZSB0aGUKKyAgICAjIFByb2R1Y3Rz
IGdyb3VwIGlzIHNvcnRlZCBiYXNlZCBvbiB0aGUgb3JkZXIgb2YgdGhlIHRhcmdldHMuCisgICAg
c2VsZi5wcm9qZWN0LlNvcnRHcm91cHMoKQorCisgICAgIyBDcmVhdGUgYW4gIkFsbCIgdGFyZ2V0
IGlmIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZSB0YXJnZXQgaW4gdGhpcyBwcm9qZWN0CisgICAgIyBm
aWxlIGFuZCB0aGUgcHJvamVjdCBkaWRuJ3QgZGVmaW5lIGl0cyBvd24gIkFsbCIgdGFyZ2V0LiAg
UHV0IGEgZ2VuZXJhdGVkCisgICAgIyAiQWxsIiB0YXJnZXQgZmlyc3Qgc28gdGhhdCBwZW9wbGUg
b3BlbmluZyB1cCB0aGUgcHJvamVjdCBmb3IgdGhlIGZpcnN0CisgICAgIyB0aW1lIHdpbGwgYnVp
bGQgZXZlcnl0aGluZyBieSBkZWZhdWx0LgorICAgIGlmIGxlbih0YXJnZXRzX2Zvcl9hbGwpID4g
MSBhbmQgbm90IGhhc19jdXN0b21fYWxsOgorICAgICAgeGNjbCA9IENyZWF0ZVhDQ29uZmlndXJh
dGlvbkxpc3QoY29uZmlndXJhdGlvbnMpCisgICAgICBhbGxfdGFyZ2V0ID0gZ3lwLnhjb2RlcHJv
al9maWxlLlBCWEFnZ3JlZ2F0ZVRhcmdldCgKKyAgICAgICAgICB7CisgICAgICAgICAgICAnYnVp
bGRDb25maWd1cmF0aW9uTGlzdCc6IHhjY2wsCisgICAgICAgICAgICAnbmFtZSc6ICAgICAgICAg
ICAgICAgICAgICdBbGwnLAorICAgICAgICAgIH0sCisgICAgICAgICAgcGFyZW50PXNlbGYucHJv
amVjdCkKKworICAgICAgZm9yIHRhcmdldCBpbiB0YXJnZXRzX2Zvcl9hbGw6CisgICAgICAgIGFs
bF90YXJnZXQuQWRkRGVwZW5kZW5jeSh0YXJnZXQpCisKKyAgICAgICMgVE9ETyhtYXJrKTogVGhp
cyBpcyBldmlsIGJlY2F1c2UgaXQgcmVsaWVzIG9uIGludGVybmFsIGtub3dsZWRnZSBvZgorICAg
ICAgIyBQQlhQcm9qZWN0Ll9wcm9wZXJ0aWVzLiAgSXQncyBpbXBvcnRhbnQgdG8gZ2V0IHRoZSAi
QWxsIiB0YXJnZXQgZmlyc3QsCisgICAgICAjIHRob3VnaC4KKyAgICAgIHNlbGYucHJvamVjdC5f
cHJvcGVydGllc1sndGFyZ2V0cyddLmluc2VydCgwLCBhbGxfdGFyZ2V0KQorCisgICAgIyBUaGUg
c2FtZSwgYnV0IGZvciBydW5fdGVzdF90YXJnZXRzLgorICAgIGlmIGxlbihydW5fdGVzdF90YXJn
ZXRzKSA+IDE6CisgICAgICB4Y2NsID0gQ3JlYXRlWENDb25maWd1cmF0aW9uTGlzdChjb25maWd1
cmF0aW9ucykKKyAgICAgIHJ1bl9hbGxfdGVzdHNfdGFyZ2V0ID0gZ3lwLnhjb2RlcHJval9maWxl
LlBCWEFnZ3JlZ2F0ZVRhcmdldCgKKyAgICAgICAgICB7CisgICAgICAgICAgICAnYnVpbGRDb25m
aWd1cmF0aW9uTGlzdCc6IHhjY2wsCisgICAgICAgICAgICAnbmFtZSc6ICAgICAgICAgICAgICAg
ICAgICdSdW4gQWxsIFRlc3RzJywKKyAgICAgICAgICB9LAorICAgICAgICAgIHBhcmVudD1zZWxm
LnByb2plY3QpCisgICAgICBmb3IgcnVuX3Rlc3RfdGFyZ2V0IGluIHJ1bl90ZXN0X3RhcmdldHM6
CisgICAgICAgIHJ1bl9hbGxfdGVzdHNfdGFyZ2V0LkFkZERlcGVuZGVuY3kocnVuX3Rlc3RfdGFy
Z2V0KQorCisgICAgICAjIEluc2VydCBhZnRlciB0aGUgIkFsbCIgdGFyZ2V0LCB3aGljaCBtdXN0
IGV4aXN0IGlmIHRoZXJlIGlzIG1vcmUgdGhhbgorICAgICAgIyBvbmUgcnVuX3Rlc3RfdGFyZ2V0
LgorICAgICAgc2VsZi5wcm9qZWN0Ll9wcm9wZXJ0aWVzWyd0YXJnZXRzJ10uaW5zZXJ0KDEsIHJ1
bl9hbGxfdGVzdHNfdGFyZ2V0KQorCisgIGRlZiBGaW5hbGl6ZTIoc2VsZiwgeGNvZGVfdGFyZ2V0
cywgeGNvZGVfdGFyZ2V0X3RvX3RhcmdldF9kaWN0KToKKyAgICAjIEZpbmFsaXplMiBuZWVkcyB0
byBoYXBwZW4gaW4gYSBzZXBhcmF0ZSBzdGVwIGJlY2F1c2UgdGhlIHByb2Nlc3Mgb2YKKyAgICAj
IHVwZGF0aW5nIHJlZmVyZW5jZXMgdG8gb3RoZXIgcHJvamVjdHMgZGVwZW5kcyBvbiB0aGUgb3Jk
ZXJpbmcgb2YgdGFyZ2V0cworICAgICMgd2l0aGluIHJlbW90ZSBwcm9qZWN0IGZpbGVzLiAgRmlu
YWxpemUxIGlzIHJlc3BvbnNpYmxlIGZvciBzb3J0aW5nIGR1dHksCisgICAgIyBhbmQgb25jZSBh
bGwgcHJvamVjdCBmaWxlcyBhcmUgc29ydGVkLCBGaW5hbGl6ZTIgY2FuIGNvbWUgaW4gYW5kIHVw
ZGF0ZQorICAgICMgdGhlc2UgcmVmZXJlbmNlcy4KKworICAgICMgVG8gc3VwcG9ydCBtYWtpbmcg
YSAidGVzdCBydW5uZXIiIHRhcmdldCB0aGF0IHdpbGwgcnVuIGFsbCB0aGUgdGVzdHMKKyAgICAj
IHRoYXQgYXJlIGRpcmVjdCBkZXBlbmRlbnRzIG9mIGFueSBnaXZlbiB0YXJnZXQsIHdlIGxvb2sg
Zm9yCisgICAgIyB4Y29kZV9jcmVhdGVfZGVwZW5kZW50c190ZXN0X3J1bm5lciBiZWluZyBzZXQg
b24gYW4gQWdncmVnYXRlIHRhcmdldCwKKyAgICAjIGFuZCBnZW5lcmF0ZSBhIHNlY29uZCB0YXJn
ZXQgdGhhdCB3aWxsIHJ1biB0aGUgdGVzdHMgcnVubmVycyBmb3VuZCB1bmRlcgorICAgICMgdGhl
IG1hcmtlZCB0YXJnZXQuCisgICAgZm9yIGJmX3RndCBpbiBzZWxmLmJ1aWxkX2ZpbGVfZGljdFsn
dGFyZ2V0cyddOgorICAgICAgaWYgaW50KGJmX3RndC5nZXQoJ3hjb2RlX2NyZWF0ZV9kZXBlbmRl
bnRzX3Rlc3RfcnVubmVyJywgMCkpOgorICAgICAgICB0Z3RfbmFtZSA9IGJmX3RndFsndGFyZ2V0
X25hbWUnXQorICAgICAgICB0b29sc2V0ID0gYmZfdGd0Wyd0b29sc2V0J10KKyAgICAgICAgcXVh
bGlmaWVkX3RhcmdldCA9IGd5cC5jb21tb24uUXVhbGlmaWVkVGFyZ2V0KHNlbGYuZ3lwX3BhdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
Z3RfbmFtZSwgdG9vbHNldCkKKyAgICAgICAgeGNvZGVfdGFyZ2V0ID0geGNvZGVfdGFyZ2V0c1tx
dWFsaWZpZWRfdGFyZ2V0XQorICAgICAgICBpZiBpc2luc3RhbmNlKHhjb2RlX3RhcmdldCwgZ3lw
Lnhjb2RlcHJval9maWxlLlBCWEFnZ3JlZ2F0ZVRhcmdldCk6CisgICAgICAgICAgIyBDb2xsZWN0
IGFsbCB0aGUgcnVuIHRlc3QgdGFyZ2V0cy4KKyAgICAgICAgICBhbGxfcnVuX3Rlc3RzID0gW10K
KyAgICAgICAgICBwYnh0ZHMgPSB4Y29kZV90YXJnZXQuR2V0UHJvcGVydHkoJ2RlcGVuZGVuY2ll
cycpCisgICAgICAgICAgZm9yIHBieHRkIGluIHBieHRkczoKKyAgICAgICAgICAgIHBieGNpcCA9
IHBieHRkLkdldFByb3BlcnR5KCd0YXJnZXRQcm94eScpCisgICAgICAgICAgICBkZXBlbmRlbmN5
X3hjdCA9IHBieGNpcC5HZXRQcm9wZXJ0eSgncmVtb3RlR2xvYmFsSURTdHJpbmcnKQorICAgICAg
ICAgICAgaWYgaGFzYXR0cihkZXBlbmRlbmN5X3hjdCwgJ3Rlc3RfcnVubmVyJyk6CisgICAgICAg
ICAgICAgIGFsbF9ydW5fdGVzdHMuYXBwZW5kKGRlcGVuZGVuY3lfeGN0LnRlc3RfcnVubmVyKQor
CisgICAgICAgICAgIyBEaXJlY3RseSBkZXBlbmQgb24gYWxsIHRoZSBydW5uZXJzIGFzIHRoZXkg
ZGVwZW5kIG9uIHRoZSB0YXJnZXQKKyAgICAgICAgICAjIHRoYXQgYnVpbGRzIHRoZW0uCisgICAg
ICAgICAgaWYgbGVuKGFsbF9ydW5fdGVzdHMpID4gMDoKKyAgICAgICAgICAgIHJ1bl9hbGxfdGFy
Z2V0ID0gZ3lwLnhjb2RlcHJval9maWxlLlBCWEFnZ3JlZ2F0ZVRhcmdldCh7CisgICAgICAgICAg
ICAgICAgICAnbmFtZSc6ICAgICAgICAnUnVuICVzIFRlc3RzJyAlIHRndF9uYW1lLAorICAgICAg
ICAgICAgICAgICAgJ3Byb2R1Y3ROYW1lJzogdGd0X25hbWUsCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi5wcm9qZWN0KQorICAgICAgICAgICAgZm9yIHJ1
bl90ZXN0X3RhcmdldCBpbiBhbGxfcnVuX3Rlc3RzOgorICAgICAgICAgICAgICBydW5fYWxsX3Rh
cmdldC5BZGREZXBlbmRlbmN5KHJ1bl90ZXN0X3RhcmdldCkKKworICAgICAgICAgICAgIyBJbnNl
cnQgdGhlIHRlc3QgcnVubmVyIGFmdGVyIHRoZSByZWxhdGVkIHRhcmdldC4KKyAgICAgICAgICAg
IGlkeCA9IHNlbGYucHJvamVjdC5fcHJvcGVydGllc1sndGFyZ2V0cyddLmluZGV4KHhjb2RlX3Rh
cmdldCkKKyAgICAgICAgICAgIHNlbGYucHJvamVjdC5fcHJvcGVydGllc1sndGFyZ2V0cyddLmlu
c2VydChpZHggKyAxLCBydW5fYWxsX3RhcmdldCkKKworICAgICMgVXBkYXRlIGFsbCByZWZlcmVu
Y2VzIHRvIG90aGVyIHByb2plY3RzLCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbGlzdHMgb2YKKyAg
ICAjIHJlbW90ZSBwcm9kdWN0cyBhcmUgY29tcGxldGUuICBPdGhlcndpc2UsIFhjb2RlIHdpbGwg
ZmlsbCB0aGVtIGluIHdoZW4KKyAgICAjIGl0IG9wZW5zIHRoZSBwcm9qZWN0IGZpbGUsIHdoaWNo
IHdpbGwgcmVzdWx0IGluIHVubmVjZXNzYXJ5IGRpZmZzLgorICAgICMgVE9ETyhtYXJrKTogVGhp
cyBpcyBldmlsIGJlY2F1c2UgaXQgcmVsaWVzIG9uIGludGVybmFsIGtub3dsZWRnZSBvZgorICAg
ICMgUEJYUHJvamVjdC5fb3RoZXJfcGJ4cHJvamVjdHMuCisgICAgZm9yIG90aGVyX3BieHByb2pl
Y3QgaW4gc2VsZi5wcm9qZWN0Ll9vdGhlcl9wYnhwcm9qZWN0cy5rZXlzKCk6CisgICAgICBzZWxm
LnByb2plY3QuQWRkT3JHZXRQcm9qZWN0UmVmZXJlbmNlKG90aGVyX3BieHByb2plY3QpCisKKyAg
ICBzZWxmLnByb2plY3QuU29ydFJlbW90ZVByb2R1Y3RSZWZlcmVuY2VzKCkKKworICAgICMgR2l2
ZSBldmVyeXRoaW5nIGFuIElELgorICAgIHNlbGYucHJvamVjdF9maWxlLkNvbXB1dGVJRHMoKQor
CisgICAgIyBNYWtlIHN1cmUgdGhhdCBubyB0d28gb2JqZWN0cyBpbiB0aGUgcHJvamVjdCBmaWxl
IGhhdmUgdGhlIHNhbWUgSUQuICBJZgorICAgICMgbXVsdGlwbGUgb2JqZWN0cyB3aW5kIHVwIHdp
dGggdGhlIHNhbWUgSUQsIHVwb24gbG9hZGluZyB0aGUgZmlsZSwgWGNvZGUKKyAgICAjIHdpbGwg
b25seSByZWNvZ25pemUgb25lIG9iamVjdCAodGhlIGxhc3Qgb25lIGluIHRoZSBmaWxlPykgYW5k
IHRoZQorICAgICMgcmVzdWx0cyBhcmUgdW5wcmVkaWN0YWJsZS4KKyAgICBzZWxmLnByb2plY3Rf
ZmlsZS5FbnN1cmVOb0lEQ29sbGlzaW9ucygpCisKKyAgZGVmIFdyaXRlKHNlbGYpOgorICAgICMg
V3JpdGUgdGhlIHByb2plY3QgZmlsZSB0byBhIHRlbXBvcmFyeSBsb2NhdGlvbiBmaXJzdC4gIFhj
b2RlIHdhdGNoZXMgZm9yCisgICAgIyBjaGFuZ2VzIHRvIHRoZSBwcm9qZWN0IGZpbGUgYW5kIHBy
ZXNlbnRzIGEgVUkgc2hlZXQgb2ZmZXJpbmcgdG8gcmVsb2FkCisgICAgIyB0aGUgcHJvamVjdCB3
aGVuIGl0IGRvZXMgY2hhbmdlLiAgSG93ZXZlciwgaW4gc29tZSBjYXNlcywgZXNwZWNpYWxseSB3
aGVuCisgICAgIyBtdWx0aXBsZSBwcm9qZWN0cyBhcmUgb3BlbiBvciB3aGVuIFhjb2RlIGlzIGJ1
c3ksIHRoaW5ncyBkb24ndCB3b3JrIHNvCisgICAgIyBzZWFtbGVzc2x5LiAgU29tZXRpbWVzLCBY
Y29kZSBpcyBhYmxlIHRvIGRldGVjdCB0aGF0IGEgcHJvamVjdCBmaWxlIGhhcworICAgICMgY2hh
bmdlZCBidXQgY2FuJ3QgdW5sb2FkIGl0IGJlY2F1c2Ugc29tZXRoaW5nIGVsc2UgaXMgcmVmZXJl
bmNpbmcgaXQuCisgICAgIyBUbyBtaXRpZ2F0ZSB0aGlzIHByb2JsZW0sIGFuZCB0byBhdm9pZCBl
dmVuIGhhdmluZyBYY29kZSBwcmVzZW50IHRoZSBVSQorICAgICMgc2hlZXQgd2hlbiBhbiBvcGVu
IHByb2plY3QgaXMgcmV3cml0dGVuIGZvciBpbmNvbnNlcXVlbnRpYWwgY2hhbmdlcywgdGhlCisg
ICAgIyBwcm9qZWN0IGZpbGUgaXMgd3JpdHRlbiB0byBhIHRlbXBvcmFyeSBmaWxlIGluIHRoZSB4
Y29kZXByb2ogZGlyZWN0b3J5CisgICAgIyBmaXJzdC4gIFRoZSBuZXcgdGVtcG9yYXJ5IGZpbGUg
aXMgdGhlbiBjb21wYXJlZCB0byB0aGUgZXhpc3RpbmcgcHJvamVjdAorICAgICMgZmlsZSwgaWYg
YW55LiAgSWYgdGhleSBkaWZmZXIsIHRoZSBuZXcgZmlsZSByZXBsYWNlcyB0aGUgb2xkOyBvdGhl
cndpc2UsCisgICAgIyB0aGUgbmV3IHByb2plY3QgZmlsZSBpcyBzaW1wbHkgZGVsZXRlZC4gIFhj
b2RlIHByb3Blcmx5IGRldGVjdHMgYSBmaWxlCisgICAgIyBiZWluZyByZW5hbWVkIG92ZXIgYW4g
b3BlbiBwcm9qZWN0IGZpbGUgYXMgYSBjaGFuZ2UgYW5kIHNvIGl0IHJlbWFpbnMKKyAgICAjIGFi
bGUgdG8gcHJlc2VudCB0aGUgInByb2plY3QgZmlsZSBjaGFuZ2VkIiBzaGVldCB1bmRlciB0aGlz
IHN5c3RlbS4KKyAgICAjIFdyaXRpbmcgdG8gYSB0ZW1wb3JhcnkgZmlsZSBmaXJzdCBhbHNvIGF2
b2lkcyB0aGUgcG9zc2libGUgcHJvYmxlbSBvZgorICAgICMgWGNvZGUgcmVyZWFkaW5nIGFuIGlu
Y29tcGxldGUgcHJvamVjdCBmaWxlLgorICAgIChvdXRwdXRfZmQsIG5ld19wYnhwcm9qX3BhdGgp
ID0gXAorICAgICAgICB0ZW1wZmlsZS5ta3N0ZW1wKHN1ZmZpeD0nLnRtcCcsIHByZWZpeD0ncHJv
amVjdC5wYnhwcm9qLmd5cC4nLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRpcj1zZWxmLnBh
dGgpCisKKyAgICB0cnk6CisgICAgICBvdXRwdXRfZmlsZSA9IG9zLmZkb3BlbihvdXRwdXRfZmQs
ICd3YicpCisKKyAgICAgIHNlbGYucHJvamVjdF9maWxlLlByaW50KG91dHB1dF9maWxlKQorICAg
ICAgb3V0cHV0X2ZpbGUuY2xvc2UoKQorCisgICAgICBwYnhwcm9qX3BhdGggPSBvcy5wYXRoLmpv
aW4oc2VsZi5wYXRoLCAncHJvamVjdC5wYnhwcm9qJykKKworICAgICAgc2FtZSA9IEZhbHNlCisg
ICAgICB0cnk6CisgICAgICAgIHNhbWUgPSBmaWxlY21wLmNtcChwYnhwcm9qX3BhdGgsIG5ld19w
Ynhwcm9qX3BhdGgsIEZhbHNlKQorICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6CisgICAgICAgIGlm
IGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgIHJhaXNlCisKKyAgICAgIGlmIHNh
bWU6CisgICAgICAgICMgVGhlIG5ldyBmaWxlIGlzIGlkZW50aWNhbCB0byB0aGUgb2xkIG9uZSwg
anVzdCBnZXQgcmlkIG9mIHRoZSBuZXcKKyAgICAgICAgIyBvbmUuCisgICAgICAgIG9zLnVubGlu
ayhuZXdfcGJ4cHJval9wYXRoKQorICAgICAgZWxzZToKKyAgICAgICAgIyBUaGUgbmV3IGZpbGUg
aXMgZGlmZmVyZW50IGZyb20gdGhlIG9sZCBvbmUsIG9yIHRoZXJlIGlzIG5vIG9sZCBvbmUuCisg
ICAgICAgICMgUmVuYW1lIHRoZSBuZXcgZmlsZSB0byB0aGUgcGVybWFuZW50IG5hbWUuCisgICAg
ICAgICMKKyAgICAgICAgIyB0ZW1wZmlsZS5ta3N0ZW1wIHVzZXMgYW4gb3Zlcmx5IHJlc3RyaWN0
aXZlIG1vZGUsIHJlc3VsdGluZyBpbiBhCisgICAgICAgICMgZmlsZSB0aGF0IGNhbiBvbmx5IGJl
IHJlYWQgYnkgdGhlIG93bmVyLCByZWdhcmRsZXNzIG9mIHRoZSB1bWFzay4KKyAgICAgICAgIyBU
aGVyZSdzIG5vIHJlYXNvbiB0byBub3QgcmVzcGVjdCB0aGUgdW1hc2sgaGVyZSwgd2hpY2ggbWVh
bnMgdGhhdAorICAgICAgICAjIGFuIGV4dHJhIGhvb3AgaXMgcmVxdWlyZWQgdG8gZmV0Y2ggaXQg
YW5kIHJlc2V0IHRoZSBuZXcgZmlsZSdzIG1vZGUuCisgICAgICAgICMKKyAgICAgICAgIyBObyB3
YXkgdG8gZ2V0IHRoZSB1bWFzayB3aXRob3V0IHNldHRpbmcgYSBuZXcgb25lPyAgU2V0IGEgc2Fm
ZSBvbmUKKyAgICAgICAgIyBhbmQgdGhlbiBzZXQgaXQgYmFjayB0byB0aGUgb2xkIHZhbHVlLgor
ICAgICAgICB1bWFzayA9IG9zLnVtYXNrKDA3NykKKyAgICAgICAgb3MudW1hc2sodW1hc2spCisK
KyAgICAgICAgb3MuY2htb2QobmV3X3BieHByb2pfcGF0aCwgMDY2NiAmIH51bWFzaykKKyAgICAg
ICAgb3MucmVuYW1lKG5ld19wYnhwcm9qX3BhdGgsIHBieHByb2pfcGF0aCkKKworICAgIGV4Y2Vw
dCBFeGNlcHRpb246CisgICAgICAjIERvbid0IGxlYXZlIHR1cmRzIGJlaGluZC4gIEluIGZhY3Qs
IGlmIHRoaXMgY29kZSB3YXMgcmVzcG9uc2libGUgZm9yCisgICAgICAjIGNyZWF0aW5nIHRoZSB4
Y29kZXByb2ogZGlyZWN0b3J5LCBnZXQgcmlkIG9mIHRoYXQgdG9vLgorICAgICAgb3MudW5saW5r
KG5ld19wYnhwcm9qX3BhdGgpCisgICAgICBpZiBzZWxmLmNyZWF0ZWRfZGlyOgorICAgICAgICBz
aHV0aWwucm10cmVlKHNlbGYucGF0aCwgVHJ1ZSkKKyAgICAgIHJhaXNlCisKKworY2FjaGVkX3hj
b2RlX3ZlcnNpb24gPSBOb25lCitkZWYgSW5zdGFsbGVkWGNvZGVWZXJzaW9uKCk6CisgICIiIkZl
dGNoZXMgdGhlIGluc3RhbGxlZCB2ZXJzaW9uIG9mIFhjb2RlLCByZXR1cm5zIGVtcHR5IHN0cmlu
ZyBpZiBpdCBpcworICB1bmFibGUgdG8gZmlndXJlIGl0IG91dC4iIiIKKworICBnbG9iYWwgY2Fj
aGVkX3hjb2RlX3ZlcnNpb24KKyAgaWYgbm90IGNhY2hlZF94Y29kZV92ZXJzaW9uIGlzIE5vbmU6
CisgICAgcmV0dXJuIGNhY2hlZF94Y29kZV92ZXJzaW9uCisKKyAgIyBEZWZhdWx0IHRvIGFuIGVt
cHR5IHN0cmluZworICBjYWNoZWRfeGNvZGVfdmVyc2lvbiA9ICcnCisKKyAgIyBDb2xsZWN0IHRo
ZSB4Y29kZWJ1aWxkJ3MgdmVyc2lvbiBpbmZvcm1hdGlvbi4KKyAgdHJ5OgorICAgIGltcG9ydCBz
dWJwcm9jZXNzCisgICAgY21kID0gWycvdXNyL2Jpbi94Y29kZWJ1aWxkJywgJy12ZXJzaW9uJ10K
KyAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUp
CisgICAgeGNvZGVidWlsZF92ZXJzaW9uX2luZm8gPSBwcm9jLmNvbW11bmljYXRlKClbMF0KKyAg
ICAjIEFueSBlcnJvciwgcmV0dXJuIGVtcHR5IHN0cmluZworICAgIGlmIHByb2MucmV0dXJuY29k
ZToKKyAgICAgIHhjb2RlYnVpbGRfdmVyc2lvbl9pbmZvID0gJycKKyAgZXhjZXB0IE9TRXJyb3I6
CisgICAgIyBXZSBmYWlsZWQgdG8gbGF1bmNoIHRoZSB0b29sCisgICAgeGNvZGVidWlsZF92ZXJz
aW9uX2luZm8gPSAnJworCisgICMgUHVsbCBvdXQgdGhlIFhjb2RlIHZlcnNpb24gaXRzZWxmLgor
ICBtYXRjaF9saW5lID0gcmUuc2VhcmNoKCdeWGNvZGUgKC4qKSQnLCB4Y29kZWJ1aWxkX3ZlcnNp
b25faW5mbywgcmUuTVVMVElMSU5FKQorICBpZiBtYXRjaF9saW5lOgorICAgIGNhY2hlZF94Y29k
ZV92ZXJzaW9uID0gbWF0Y2hfbGluZS5ncm91cCgxKQorICAjIERvbmUhCisgIHJldHVybiBjYWNo
ZWRfeGNvZGVfdmVyc2lvbgorCisKK2RlZiBBZGRTb3VyY2VUb1RhcmdldChzb3VyY2UsIHBieHAs
IHhjdCk6CisgICMgVE9ETyhtYXJrKTogUGVyaGFwcyBzb3VyY2VfZXh0ZW5zaW9ucyBhbmQgbGli
cmFyeV9leHRlbnNpb25zIGNhbiBiZSBtYWRlIGEKKyAgIyBsaXR0bGUgYml0IGZhbmNpZXIuCisg
IHNvdXJjZV9leHRlbnNpb25zID0gWydjJywgJ2NjJywgJ2NwcCcsICdjeHgnLCAnbScsICdtbScs
ICdzJ10KKworICAjIC5vIGlzIGNvbmNlcHR1YWxseSBtb3JlIG9mIGEgInNvdXJjZSIgdGhhbiBh
ICJsaWJyYXJ5LCIgYnV0IFhjb2RlIHRoaW5rcworICAjIG9mICJzb3VyY2VzIiBhcyB0aGluZ3Mg
dG8gY29tcGlsZSBhbmQgImxpYnJhcmllcyIgKG9yICJmcmFtZXdvcmtzIikgYXMKKyAgIyB0aGlu
Z3MgdG8gbGluayB3aXRoLiBBZGRpbmcgYW4gb2JqZWN0IGZpbGUgdG8gYW4gWGNvZGUgdGFyZ2V0
J3MgZnJhbWV3b3JrcworICAjIHBoYXNlIHdvcmtzIHByb3Blcmx5LgorICBsaWJyYXJ5X2V4dGVu
c2lvbnMgPSBbJ2EnLCAnZHlsaWInLCAnZnJhbWV3b3JrJywgJ28nXQorCisgIGJhc2VuYW1lID0g
cG9zaXhwYXRoLmJhc2VuYW1lKHNvdXJjZSkKKyAgKHJvb3QsIGV4dCkgPSBwb3NpeHBhdGguc3Bs
aXRleHQoYmFzZW5hbWUpCisgIGlmIGV4dCAhPSAnJzoKKyAgICBleHQgPSBleHRbMTpdLmxvd2Vy
KCkKKworICBpZiBleHQgaW4gc291cmNlX2V4dGVuc2lvbnM6CisgICAgeGN0LlNvdXJjZXNQaGFz
ZSgpLkFkZEZpbGUoc291cmNlKQorICBlbGlmIGV4dCBpbiBsaWJyYXJ5X2V4dGVuc2lvbnM6Cisg
ICAgeGN0LkZyYW1ld29ya3NQaGFzZSgpLkFkZEZpbGUoc291cmNlKQorICBlbHNlOgorICAgICMg
RmlsZXMgdGhhdCBhcmVuJ3QgYWRkZWQgdG8gYSBzb3VyY2VzIG9yIGZyYW1ld29ya3MgYnVpbGQg
cGhhc2UgY2FuIHN0aWxsCisgICAgIyBnbyBpbnRvIHRoZSBwcm9qZWN0IGZpbGUsIGp1c3Qgbm90
IGFzIHBhcnQgb2YgYSBidWlsZCBwaGFzZS4KKyAgICBwYnhwLkFkZE9yR2V0RmlsZUluUm9vdEdy
b3VwKHNvdXJjZSkKKworCitkZWYgQWRkUmVzb3VyY2VUb1RhcmdldChyZXNvdXJjZSwgcGJ4cCwg
eGN0KToKKyAgIyBUT0RPKG1hcmspOiBDb21iaW5lIHdpdGggQWRkU291cmNlVG9UYXJnZXQgYWJv
dmU/ICBPciBqdXN0IGlubGluZSB0aGlzIGNhbGwKKyAgIyB3aGVyZSBpdCdzIHVzZWQuCisgIHhj
dC5SZXNvdXJjZXNQaGFzZSgpLkFkZEZpbGUocmVzb3VyY2UpCisKKworZGVmIEFkZEhlYWRlclRv
VGFyZ2V0KGhlYWRlciwgcGJ4cCwgeGN0LCBpc19wdWJsaWMpOgorICAjIFRPRE8obWFyayk6IENv
bWJpbmUgd2l0aCBBZGRTb3VyY2VUb1RhcmdldCBhYm92ZT8gIE9yIGp1c3QgaW5saW5lIHRoaXMg
Y2FsbAorICAjIHdoZXJlIGl0J3MgdXNlZC4KKyAgc2V0dGluZ3MgPSAne0FUVFJJQlVURVMgPSAo
JXMsICk7IH0nICUgKCdQcml2YXRlJywgJ1B1YmxpYycpW2lzX3B1YmxpY10KKyAgeGN0LkhlYWRl
cnNQaGFzZSgpLkFkZEZpbGUoaGVhZGVyLCBzZXR0aW5ncykKKworCitfeGNvZGVfdmFyaWFibGVf
cmUgPSByZS5jb21waWxlKCcoXCRcKCguKj8pXCkpJykKK2RlZiBFeHBhbmRYY29kZVZhcmlhYmxl
cyhzdHJpbmcsIGV4cGFuc2lvbnMpOgorICAiIiJFeHBhbmRzIFhjb2RlLXN0eWxlICQoVkFSSUFC
TEVTKSBpbiBzdHJpbmcgcGVyIHRoZSBleHBhbnNpb25zIGRpY3QuCisKKyAgSW4gc29tZSByYXJl
IGNhc2VzLCBpdCBpcyBhcHByb3ByaWF0ZSB0byBleHBhbmQgWGNvZGUgdmFyaWFibGVzIHdoZW4g
YQorICBwcm9qZWN0IGZpbGUgaXMgZ2VuZXJhdGVkLiAgRm9yIGFueSBzdWJzdHJpbmcgJChWQVIp
IGluIHN0cmluZywgaWYgVkFSIGlzIGEKKyAga2V5IGluIHRoZSBleHBhbnNpb25zIGRpY3QsICQo
VkFSKSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggZXhwYW5zaW9uc1tWQVJdLgorICBBbnkgJChWQVIp
IHN1YnN0cmluZyBpbiBzdHJpbmcgZm9yIHdoaWNoIFZBUiBpcyBub3QgYSBrZXkgaW4gdGhlIGV4
cGFuc2lvbnMKKyAgZGljdCB3aWxsIHJlbWFpbiBpbiB0aGUgcmV0dXJuZWQgc3RyaW5nLgorICAi
IiIKKworICBtYXRjaGVzID0gX3hjb2RlX3ZhcmlhYmxlX3JlLmZpbmRhbGwoc3RyaW5nKQorICBp
ZiBtYXRjaGVzID09IE5vbmU6CisgICAgcmV0dXJuIHN0cmluZworCisgIG1hdGNoZXMucmV2ZXJz
ZSgpCisgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgorICAgICh0b19yZXBsYWNlLCB2YXJpYWJsZSkg
PSBtYXRjaAorICAgIGlmIG5vdCB2YXJpYWJsZSBpbiBleHBhbnNpb25zOgorICAgICAgY29udGlu
dWUKKworICAgIHJlcGxhY2VtZW50ID0gZXhwYW5zaW9uc1t2YXJpYWJsZV0KKyAgICBzdHJpbmcg
PSByZS5zdWIocmUuZXNjYXBlKHRvX3JlcGxhY2UpLCByZXBsYWNlbWVudCwgc3RyaW5nKQorCisg
IHJldHVybiBzdHJpbmcKKworCitkZWYgRXNjYXBlWENvZGVBcmd1bWVudChzKToKKyAgIiIiV2Ug
bXVzdCBlc2NhcGUgdGhlIGFyZ3VtZW50cyB0aGF0IHdlIGdpdmUgdG8gWENvZGUgc28gdGhhdCBp
dCBrbm93cyBub3QgdG8KKyAgICAgc3BsaXQgb24gc3BhY2VzIGFuZCB0byByZXNwZWN0IGJhY2tz
bGFzaCBhbmQgcXVvdGUgbGl0ZXJhbHMuIiIiCisgIHMgPSBzLnJlcGxhY2UoJ1xcJywgJ1xcXFwn
KQorICBzID0gcy5yZXBsYWNlKCciJywgJ1xcIicpCisgIHJldHVybiAnIicgKyBzICsgJyInCisK
KworZGVmIEdlbmVyYXRlT3V0cHV0KHRhcmdldF9saXN0LCB0YXJnZXRfZGljdHMsIGRhdGEsIHBh
cmFtcyk6CisgIG9wdGlvbnMgPSBwYXJhbXNbJ29wdGlvbnMnXQorICBnZW5lcmF0b3JfZmxhZ3Mg
PSBwYXJhbXMuZ2V0KCdnZW5lcmF0b3JfZmxhZ3MnLCB7fSkKKyAgcGFyYWxsZWxfYnVpbGRzID0g
Z2VuZXJhdG9yX2ZsYWdzLmdldCgneGNvZGVfcGFyYWxsZWxfYnVpbGRzJywgVHJ1ZSkKKyAgc2Vy
aWFsaXplX2FsbF90ZXN0cyA9IFwKKyAgICAgIGdlbmVyYXRvcl9mbGFncy5nZXQoJ3hjb2RlX3Nl
cmlhbGl6ZV9hbGxfdGVzdF9ydW5zJywgVHJ1ZSkKKyAgcHJvamVjdF92ZXJzaW9uID0gZ2VuZXJh
dG9yX2ZsYWdzLmdldCgneGNvZGVfcHJvamVjdF92ZXJzaW9uJywgTm9uZSkKKyAgc2tpcF9leGNs
dWRlZF9maWxlcyA9IFwKKyAgICAgIG5vdCBnZW5lcmF0b3JfZmxhZ3MuZ2V0KCd4Y29kZV9saXN0
X2V4Y2x1ZGVkX2ZpbGVzJywgVHJ1ZSkKKyAgeGNvZGVfcHJvamVjdHMgPSB7fQorICBmb3IgYnVp
bGRfZmlsZSwgYnVpbGRfZmlsZV9kaWN0IGluIGRhdGEuaXRlcml0ZW1zKCk6CisgICAgKGJ1aWxk
X2ZpbGVfcm9vdCwgYnVpbGRfZmlsZV9leHQpID0gb3MucGF0aC5zcGxpdGV4dChidWlsZF9maWxl
KQorICAgIGlmIGJ1aWxkX2ZpbGVfZXh0ICE9ICcuZ3lwJzoKKyAgICAgIGNvbnRpbnVlCisgICAg
eGNvZGVwcm9qX3BhdGggPSBidWlsZF9maWxlX3Jvb3QgKyBvcHRpb25zLnN1ZmZpeCArICcueGNv
ZGVwcm9qJworICAgIGlmIG9wdGlvbnMuZ2VuZXJhdG9yX291dHB1dDoKKyAgICAgIHhjb2RlcHJv
al9wYXRoID0gb3MucGF0aC5qb2luKG9wdGlvbnMuZ2VuZXJhdG9yX291dHB1dCwgeGNvZGVwcm9q
X3BhdGgpCisgICAgeGNwID0gWGNvZGVQcm9qZWN0KGJ1aWxkX2ZpbGUsIHhjb2RlcHJval9wYXRo
LCBidWlsZF9maWxlX2RpY3QpCisgICAgeGNvZGVfcHJvamVjdHNbYnVpbGRfZmlsZV0gPSB4Y3AK
KyAgICBwYnhwID0geGNwLnByb2plY3QKKworICAgIGlmIHBhcmFsbGVsX2J1aWxkczoKKyAgICAg
IHBieHAuU2V0UHJvcGVydHkoJ2F0dHJpYnV0ZXMnLAorICAgICAgICAgICAgICAgICAgICAgICB7
J0J1aWxkSW5kZXBlbmRlbnRUYXJnZXRzSW5QYXJhbGxlbCc6ICdZRVMnfSkKKyAgICBpZiBwcm9q
ZWN0X3ZlcnNpb246CisgICAgICB4Y3AucHJvamVjdF9maWxlLlNldFhjb2RlVmVyc2lvbihwcm9q
ZWN0X3ZlcnNpb24pCisKKyAgICBtYWluX2dyb3VwID0gcGJ4cC5HZXRQcm9wZXJ0eSgnbWFpbkdy
b3VwJykKKyAgICBidWlsZF9ncm91cCA9IGd5cC54Y29kZXByb2pfZmlsZS5QQlhHcm91cCh7J25h
bWUnOiAnQnVpbGQnfSkKKyAgICBtYWluX2dyb3VwLkFwcGVuZENoaWxkKGJ1aWxkX2dyb3VwKQor
ICAgIGZvciBpbmNsdWRlZF9maWxlIGluIGJ1aWxkX2ZpbGVfZGljdFsnaW5jbHVkZWRfZmlsZXMn
XToKKyAgICAgIGJ1aWxkX2dyb3VwLkFkZE9yR2V0RmlsZUJ5UGF0aChpbmNsdWRlZF9maWxlLCBG
YWxzZSkKKworICB4Y29kZV90YXJnZXRzID0ge30KKyAgeGNvZGVfdGFyZ2V0X3RvX3RhcmdldF9k
aWN0ID0ge30KKyAgZm9yIHF1YWxpZmllZF90YXJnZXQgaW4gdGFyZ2V0X2xpc3Q6CisgICAgW2J1
aWxkX2ZpbGUsIHRhcmdldF9uYW1lLCB0b29sc2V0XSA9IFwKKyAgICAgICAgZ3lwLmNvbW1vbi5Q
YXJzZVF1YWxpZmllZFRhcmdldChxdWFsaWZpZWRfdGFyZ2V0KQorCisgICAgc3BlYyA9IHRhcmdl
dF9kaWN0c1txdWFsaWZpZWRfdGFyZ2V0XQorICAgIGlmIHNwZWNbJ3Rvb2xzZXQnXSAhPSAndGFy
Z2V0JzoKKyAgICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAgICAgICAnTXVsdGlwbGUgdG9vbHNl
dHMgbm90IHN1cHBvcnRlZCBpbiB4Y29kZSBidWlsZCAodGFyZ2V0ICVzKScgJQorICAgICAgICAg
IHF1YWxpZmllZF90YXJnZXQpCisgICAgY29uZmlndXJhdGlvbl9uYW1lcyA9IFtzcGVjWydkZWZh
dWx0X2NvbmZpZ3VyYXRpb24nXV0KKyAgICBmb3IgY29uZmlndXJhdGlvbl9uYW1lIGluIHNvcnRl
ZChzcGVjWydjb25maWd1cmF0aW9ucyddLmtleXMoKSk6CisgICAgICBpZiBjb25maWd1cmF0aW9u
X25hbWUgbm90IGluIGNvbmZpZ3VyYXRpb25fbmFtZXM6CisgICAgICAgIGNvbmZpZ3VyYXRpb25f
bmFtZXMuYXBwZW5kKGNvbmZpZ3VyYXRpb25fbmFtZSkKKyAgICB4Y3AgPSB4Y29kZV9wcm9qZWN0
c1tidWlsZF9maWxlXQorICAgIHBieHAgPSB4Y3AucHJvamVjdAorCisgICAgIyBTZXQgdXAgdGhl
IGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgdGFyZ2V0IGFjY29yZGluZyB0byB0aGUgbGlzdCBvZiBu
YW1lcworICAgICMgc3VwcGxpZWQuCisgICAgeGNjbCA9IENyZWF0ZVhDQ29uZmlndXJhdGlvbkxp
c3QoY29uZmlndXJhdGlvbl9uYW1lcykKKworICAgICMgQ3JlYXRlIGFuIFhDVGFyZ2V0IHN1YmNs
YXNzIG9iamVjdCBmb3IgdGhlIHRhcmdldC4gVGhlIHR5cGUgd2l0aAorICAgICMgIitidW5kbGUi
IGFwcGVuZGVkIHdpbGwgYmUgdXNlZCBpZiB0aGUgdGFyZ2V0IGhhcyAibWFjX2J1bmRsZSIgc2V0
LgorICAgICMgbG9hZGFibGVfbW9kdWxlcyBub3QgaW4gYSBtYWNfYnVuZGxlIGFyZSBtYXBwZWQg
dG8KKyAgICAjIGNvbS5nb29nbGVjb2RlLmd5cC54Y29kZS5idW5kbGUsIGEgcHNldWRvLXR5cGUg
dGhhdCB4Y29kZS5weSBpbnRlcnByZXRzCisgICAgIyB0byBjcmVhdGUgYSBzaW5nbGUtZmlsZSBt
aF9idW5kbGUuCisgICAgX3R5cGVzID0geworICAgICAgJ2V4ZWN1dGFibGUnOiAgICAgICAgICAg
ICAnY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sJywKKyAgICAgICdsb2FkYWJsZV9tb2R1bGUn
OiAgICAgICAgJ2NvbS5nb29nbGVjb2RlLmd5cC54Y29kZS5idW5kbGUnLAorICAgICAgJ3NoYXJl
ZF9saWJyYXJ5JzogICAgICAgICAnY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LmR5bmFt
aWMnLAorICAgICAgJ3N0YXRpY19saWJyYXJ5JzogICAgICAgICAnY29tLmFwcGxlLnByb2R1Y3Qt
dHlwZS5saWJyYXJ5LnN0YXRpYycsCisgICAgICAnZXhlY3V0YWJsZStidW5kbGUnOiAgICAgICdj
b20uYXBwbGUucHJvZHVjdC10eXBlLmFwcGxpY2F0aW9uJywKKyAgICAgICdsb2FkYWJsZV9tb2R1
bGUrYnVuZGxlJzogJ2NvbS5hcHBsZS5wcm9kdWN0LXR5cGUuYnVuZGxlJywKKyAgICAgICdzaGFy
ZWRfbGlicmFyeStidW5kbGUnOiAgJ2NvbS5hcHBsZS5wcm9kdWN0LXR5cGUuZnJhbWV3b3JrJywK
KyAgICB9CisKKyAgICB0YXJnZXRfcHJvcGVydGllcyA9IHsKKyAgICAgICdidWlsZENvbmZpZ3Vy
YXRpb25MaXN0JzogeGNjbCwKKyAgICAgICduYW1lJzogICAgICAgICAgICAgICAgICAgdGFyZ2V0
X25hbWUsCisgICAgfQorCisgICAgdHlwZSA9IHNwZWNbJ3R5cGUnXQorICAgIGlzX2J1bmRsZSA9
IGludChzcGVjLmdldCgnbWFjX2J1bmRsZScsIDApKQorICAgIGlmIHR5cGUgIT0gJ25vbmUnOgor
ICAgICAgdHlwZV9idW5kbGVfa2V5ID0gdHlwZQorICAgICAgaWYgaXNfYnVuZGxlOgorICAgICAg
ICB0eXBlX2J1bmRsZV9rZXkgKz0gJytidW5kbGUnCisgICAgICB4Y3RhcmdldF90eXBlID0gZ3lw
Lnhjb2RlcHJval9maWxlLlBCWE5hdGl2ZVRhcmdldAorICAgICAgdHJ5OgorICAgICAgICB0YXJn
ZXRfcHJvcGVydGllc1sncHJvZHVjdFR5cGUnXSA9IF90eXBlc1t0eXBlX2J1bmRsZV9rZXldCisg
ICAgICBleGNlcHQgS2V5RXJyb3IsIGU6CisgICAgICAgIGd5cC5jb21tb24uRXhjZXB0aW9uQXBw
ZW5kKGUsICItLSB1bmtub3duIHByb2R1Y3QgdHlwZSB3aGlsZSAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ3cml0aW5nIHRhcmdldCAlcyIgJSB0YXJnZXRfbmFtZSkKKyAg
ICAgICAgcmFpc2UKKyAgICBlbHNlOgorICAgICAgeGN0YXJnZXRfdHlwZSA9IGd5cC54Y29kZXBy
b2pfZmlsZS5QQlhBZ2dyZWdhdGVUYXJnZXQKKworICAgIHRhcmdldF9wcm9kdWN0X25hbWUgPSBz
cGVjLmdldCgncHJvZHVjdF9uYW1lJykKKyAgICBpZiB0YXJnZXRfcHJvZHVjdF9uYW1lIGlzIG5v
dCBOb25lOgorICAgICAgdGFyZ2V0X3Byb3BlcnRpZXNbJ3Byb2R1Y3ROYW1lJ10gPSB0YXJnZXRf
cHJvZHVjdF9uYW1lCisKKyAgICB4Y3QgPSB4Y3RhcmdldF90eXBlKHRhcmdldF9wcm9wZXJ0aWVz
LCBwYXJlbnQ9cGJ4cCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlX291dGRpcj1zcGVj
LmdldCgncHJvZHVjdF9kaXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlX3ByZWZp
eD1zcGVjLmdldCgncHJvZHVjdF9wcmVmaXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZv
cmNlX2V4dGVuc2lvbj1zcGVjLmdldCgncHJvZHVjdF9leHRlbnNpb24nKSkKKyAgICBwYnhwLkFw
cGVuZFByb3BlcnR5KCd0YXJnZXRzJywgeGN0KQorICAgIHhjb2RlX3RhcmdldHNbcXVhbGlmaWVk
X3RhcmdldF0gPSB4Y3QKKyAgICB4Y29kZV90YXJnZXRfdG9fdGFyZ2V0X2RpY3RbeGN0XSA9IHNw
ZWMKKworICAgIHNwZWNfYWN0aW9ucyA9IHNwZWMuZ2V0KCdhY3Rpb25zJywgW10pCisgICAgc3Bl
Y19ydWxlcyA9IHNwZWMuZ2V0KCdydWxlcycsIFtdKQorCisgICAgIyBYY29kZSBoYXMgc29tZSAi
aXNzdWVzIiB3aXRoIGNoZWNraW5nIGRlcGVuZGVuY2llcyBmb3IgdGhlICJDb21waWxlCisgICAg
IyBzb3VyY2VzIiBzdGVwIHdpdGggYW55IHNvdXJjZSBmaWxlcy9oZWFkZXJzIGdlbmVyYXRlZCBi
eSBhY3Rpb25zL3J1bGVzLgorICAgICMgVG8gd29yayBhcm91bmQgdGhpcywgaWYgYSB0YXJnZXQg
aXMgYnVpbGRpbmcgYW55dGhpbmcgZGlyZWN0bHkgKG5vdAorICAgICMgdHlwZSAibm9uZSIpLCB0
aGVuIGEgc2Vjb25kIHRhcmdldCBhcyB1c2VkIHRvIHJ1biB0aGUgR1lQIGFjdGlvbnMvcnVsZXMK
KyAgICAjIGFuZCBpcyBtYWRlIGEgZGVwZW5kZW5jeSBvZiB0aGlzIHRhcmdldC4gIFRoaXMgd2F5
IHRoZSB3b3JrIGlzIGRvbmUKKyAgICAjIGJlZm9yZSB0aGUgZGVwZW5kZW5jeSBjaGVja3MgZm9y
IHdoYXQgc2hvdWxkIGJlIHJlY29tcGlsZWQuCisgICAgc3VwcG9ydF94Y3QgPSBOb25lCisgICAg
aWYgdHlwZSAhPSAnbm9uZScgYW5kIChzcGVjX2FjdGlvbnMgb3Igc3BlY19ydWxlcyk6CisgICAg
ICBzdXBwb3J0X3hjY2wgPSBDcmVhdGVYQ0NvbmZpZ3VyYXRpb25MaXN0KGNvbmZpZ3VyYXRpb25f
bmFtZXMpOworICAgICAgc3VwcG9ydF90YXJnZXRfcHJvcGVydGllcyA9IHsKKyAgICAgICAgJ2J1
aWxkQ29uZmlndXJhdGlvbkxpc3QnOiBzdXBwb3J0X3hjY2wsCisgICAgICAgICduYW1lJzogICAg
ICAgICAgICAgICAgICAgdGFyZ2V0X25hbWUgKyAnIFN1cHBvcnQnLAorICAgICAgfQorICAgICAg
aWYgdGFyZ2V0X3Byb2R1Y3RfbmFtZToKKyAgICAgICAgc3VwcG9ydF90YXJnZXRfcHJvcGVydGll
c1sncHJvZHVjdE5hbWUnXSA9IFwKKyAgICAgICAgICAgIHRhcmdldF9wcm9kdWN0X25hbWUgKyAn
IFN1cHBvcnQnCisgICAgICBzdXBwb3J0X3hjdCA9IFwKKyAgICAgICAgICBneXAueGNvZGVwcm9q
X2ZpbGUuUEJYQWdncmVnYXRlVGFyZ2V0KHN1cHBvcnRfdGFyZ2V0X3Byb3BlcnRpZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGJ4cCkK
KyAgICAgIHBieHAuQXBwZW5kUHJvcGVydHkoJ3RhcmdldHMnLCBzdXBwb3J0X3hjdCkKKyAgICAg
IHhjdC5BZGREZXBlbmRlbmN5KHN1cHBvcnRfeGN0KQorICAgICMgSGFuZyB0aGUgc3VwcG9ydCB0
YXJnZXQgb2ZmIHRoZSBtYWluIHRhcmdldCBzbyBpdCBjYW4gYmUgdGVzdGVkL2ZvdW5kCisgICAg
IyBieSB0aGUgZ2VuZXJhdG9yIGR1cmluZyBGaW5hbGl6ZS4KKyAgICB4Y3Quc3VwcG9ydF90YXJn
ZXQgPSBzdXBwb3J0X3hjdAorCisgICAgcHJlYnVpbGRfaW5kZXggPSAwCisKKyAgICAjIEFkZCBj
dXN0b20gc2hlbGwgc2NyaXB0IHBoYXNlcyBmb3IgImFjdGlvbnMiIHNlY3Rpb25zLgorICAgIGZv
ciBhY3Rpb24gaW4gc3BlY19hY3Rpb25zOgorICAgICAgIyBUaGVyZSdzIG5vIG5lZWQgdG8gd3Jp
dGUgYW55dGhpbmcgaW50byB0aGUgc2NyaXB0IHRvIGVuc3VyZSB0aGF0IHRoZQorICAgICAgIyBv
dXRwdXQgZGlyZWN0b3JpZXMgYWxyZWFkeSBleGlzdCwgYmVjYXVzZSBYY29kZSB3aWxsIGxvb2sg
YXQgdGhlCisgICAgICAjIGRlY2xhcmVkIG91dHB1dHMgYW5kIGF1dG9tYXRpY2FsbHkgZW5zdXJl
IHRoYXQgdGhleSBleGlzdCBmb3IgdXMuCisKKyAgICAgICMgRG8gd2UgaGF2ZSBhIG1lc3NhZ2Ug
dG8gcHJpbnQgd2hlbiB0aGlzIGFjdGlvbiBydW5zPworICAgICAgbWVzc2FnZSA9IGFjdGlvbi5n
ZXQoJ21lc3NhZ2UnKQorICAgICAgaWYgbWVzc2FnZToKKyAgICAgICAgbWVzc2FnZSA9ICdlY2hv
IG5vdGU6ICcgKyBneXAuY29tbW9uLkVuY29kZVBPU0lYU2hlbGxBcmd1bWVudChtZXNzYWdlKQor
ICAgICAgZWxzZToKKyAgICAgICAgbWVzc2FnZSA9ICcnCisKKyAgICAgICMgVHVybiB0aGUgbGlz
dCBpbnRvIGEgc3RyaW5nIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBhIHNoZWxsLgorICAgICAgYWN0
aW9uX3N0cmluZyA9IGd5cC5jb21tb24uRW5jb2RlUE9TSVhTaGVsbExpc3QoYWN0aW9uWydhY3Rp
b24nXSkKKworICAgICAgIyBDb252ZXJ0IFhjb2RlLXR5cGUgdmFyaWFibGUgcmVmZXJlbmNlcyB0
byBzaC1jb21wYXRpYmxlIGVudmlyb25tZW50CisgICAgICAjIHZhcmlhYmxlIHJlZmVyZW5jZXMu
CisgICAgICBtZXNzYWdlX3NoID0gZ3lwLnhjb2RlcHJval9maWxlLkNvbnZlcnRWYXJpYWJsZXNU
b1NoZWxsU3ludGF4KG1lc3NhZ2UpCisgICAgICBhY3Rpb25fc3RyaW5nX3NoID0gZ3lwLnhjb2Rl
cHJval9maWxlLkNvbnZlcnRWYXJpYWJsZXNUb1NoZWxsU3ludGF4KAorICAgICAgICBhY3Rpb25f
c3RyaW5nKQorCisgICAgICBzY3JpcHQgPSAnJworICAgICAgIyBJbmNsdWRlIHRoZSBvcHRpb25h
bCBtZXNzYWdlCisgICAgICBpZiBtZXNzYWdlX3NoOgorICAgICAgICBzY3JpcHQgKz0gbWVzc2Fn
ZV9zaCArICdcbicKKyAgICAgICMgQmUgc3VyZSB0aGUgc2NyaXB0IHJ1bnMgaW4gZXhlYywgYW5k
IHRoYXQgaWYgZXhlYyBmYWlscywgdGhlIHNjcmlwdAorICAgICAgIyBleGl0cyBzaWduYWxsaW5n
IGFuIGVycm9yLgorICAgICAgc2NyaXB0ICs9ICdleGVjICcgKyBhY3Rpb25fc3RyaW5nX3NoICsg
J1xuZXhpdCAxXG4nCisgICAgICBzc2JwID0gZ3lwLnhjb2RlcHJval9maWxlLlBCWFNoZWxsU2Ny
aXB0QnVpbGRQaGFzZSh7CisgICAgICAgICAgICAnaW5wdXRQYXRocyc6IGFjdGlvblsnaW5wdXRz
J10sCisgICAgICAgICAgICAnbmFtZSc6ICdBY3Rpb24gIicgKyBhY3Rpb25bJ2FjdGlvbl9uYW1l
J10gKyAnIicsCisgICAgICAgICAgICAnb3V0cHV0UGF0aHMnOiBhY3Rpb25bJ291dHB1dHMnXSwK
KyAgICAgICAgICAgICdzaGVsbFNjcmlwdCc6IHNjcmlwdCwKKyAgICAgICAgICAgICdzaG93RW52
VmFyc0luTG9nJzogMCwKKyAgICAgICAgICB9KQorCisgICAgICBpZiBzdXBwb3J0X3hjdDoKKyAg
ICAgICAgc3VwcG9ydF94Y3QuQXBwZW5kUHJvcGVydHkoJ2J1aWxkUGhhc2VzJywgc3NicCkKKyAg
ICAgIGVsc2U6CisgICAgICAgICMgVE9ETyhtYXJrKTogdGhpcyBhc3N1bWVzIHRvbyBtdWNoIGtu
b3dsZWRnZSBvZiB0aGUgaW50ZXJuYWxzIG9mCisgICAgICAgICMgeGNvZGVwcm9qX2ZpbGU7IHNv
bWUgb2YgdGhlc2Ugc21hcnRzIHNob3VsZCBtb3ZlIGludG8geGNvZGVwcm9qX2ZpbGUKKyAgICAg
ICAgIyBpdHNlbGYuCisgICAgICAgIHhjdC5fcHJvcGVydGllc1snYnVpbGRQaGFzZXMnXS5pbnNl
cnQocHJlYnVpbGRfaW5kZXgsIHNzYnApCisgICAgICAgIHByZWJ1aWxkX2luZGV4ID0gcHJlYnVp
bGRfaW5kZXggKyAxCisKKyAgICAgICMgVE9ETyhtYXJrKTogU2hvdWxkIHZlcmlmeSB0aGF0IGF0
IG1vc3Qgb25lIG9mIHRoZXNlIGlzIHNwZWNpZmllZC4KKyAgICAgIGlmIGludChhY3Rpb24uZ2V0
KCdwcm9jZXNzX291dHB1dHNfYXNfc291cmNlcycsIEZhbHNlKSk6CisgICAgICAgIGZvciBvdXRw
dXQgaW4gYWN0aW9uWydvdXRwdXRzJ106CisgICAgICAgICAgQWRkU291cmNlVG9UYXJnZXQob3V0
cHV0LCBwYnhwLCB4Y3QpCisKKyAgICAgIGlmIGludChhY3Rpb24uZ2V0KCdwcm9jZXNzX291dHB1
dHNfYXNfbWFjX2J1bmRsZV9yZXNvdXJjZXMnLCBGYWxzZSkpOgorICAgICAgICBmb3Igb3V0cHV0
IGluIGFjdGlvblsnb3V0cHV0cyddOgorICAgICAgICAgIEFkZFJlc291cmNlVG9UYXJnZXQob3V0
cHV0LCBwYnhwLCB4Y3QpCisKKyAgICAjIHRndF9tYWNfYnVuZGxlX3Jlc291cmNlcyBob2xkcyB0
aGUgbGlzdCBvZiBidW5kbGUgcmVzb3VyY2VzIHNvCisgICAgIyB0aGUgcnVsZSBwcm9jZXNzaW5n
IGNhbiBjaGVjayBhZ2FpbnN0IGl0LgorICAgIGlmIGlzX2J1bmRsZToKKyAgICAgIHRndF9tYWNf
YnVuZGxlX3Jlc291cmNlcyA9IHNwZWMuZ2V0KCdtYWNfYnVuZGxlX3Jlc291cmNlcycsIFtdKQor
ICAgIGVsc2U6CisgICAgICB0Z3RfbWFjX2J1bmRsZV9yZXNvdXJjZXMgPSBbXQorCisgICAgIyBB
ZGQgY3VzdG9tIHNoZWxsIHNjcmlwdCBwaGFzZXMgZHJpdmluZyAibWFrZSIgZm9yICJydWxlcyIg
c2VjdGlvbnMuCisgICAgIworICAgICMgWGNvZGUncyBidWlsdC1pbiBydWxlIHN1cHBvcnQgaXMg
YWxtb3N0IHBvd2VyZnVsIGVub3VnaCB0byB1c2UgZGlyZWN0bHksCisgICAgIyBidXQgdGhlcmUg
YXJlIGEgZmV3IHNpZ25pZmljYW50IGRlZmljaWVuY2llcyB0aGF0IHJlbmRlciB0aGVtIHVudXNh
YmxlLgorICAgICMgVGhlcmUgYXJlIHdvcmthcm91bmRzIGZvciBzb21lIG9mIGl0cyBpbmFkZXF1
YWNpZXMsIGJ1dCBpbiBhZ2dyZWdhdGUsCisgICAgIyB0aGUgd29ya2Fyb3VuZHMgYWRkZWQgY29t
cGxleGl0eSB0byB0aGUgZ2VuZXJhdG9yLCBhbmQgc29tZSB3b3JrYXJvdW5kcworICAgICMgYWN0
dWFsbHkgcmVxdWlyZSBpbnB1dCBmaWxlcyB0byBiZSBjcmFmdGVkIG1vcmUgY2FyZWZ1bGx5IHRo
YW4gSSdkIGxpa2UuCisgICAgIyBDb25zZXF1ZW50bHksIHVudGlsIFhjb2RlIHJ1bGVzIGFyZSBt
YWRlIG1vcmUgY2FwYWJsZSwgInJ1bGVzIiBpbnB1dAorICAgICMgc2VjdGlvbnMgd2lsbCBiZSBo
YW5kbGVkIGluIFhjb2RlIG91dHB1dCBieSBzaGVsbCBzY3JpcHQgYnVpbGQgcGhhc2VzCisgICAg
IyBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGNvbXBpbGF0aW9uIHBoYXNlLgorICAgICMKKyAgICAj
IFRoZSBmb2xsb3dpbmcgcHJvYmxlbXMgd2l0aCBYY29kZSBydWxlcyB3ZXJlIGZvdW5kLiAgVGhl
IG51bWJlcnMgYXJlCisgICAgIyBBcHBsZSByYWRhciBJRHMuICBJIGhvcGUgdGhhdCB0aGVzZSBz
aG9ydGNvbWluZ3MgYXJlIGFkZHJlc3NlZCwgSSByZWFsbHkKKyAgICAjIGxpa2VkIGhhdmluZyB0
aGUgcnVsZXMgaGFuZGxlZCBkaXJlY3RseSBpbiBYY29kZSBkdXJpbmcgdGhlIHBlcmlvZCB0aGF0
CisgICAgIyBJIHdhcyBwcm90b3R5cGluZyB0aGlzLgorICAgICMKKyAgICAjIDY1ODg2MDAgWGNv
ZGUgY29tcGlsZXMgY3VzdG9tIHNjcmlwdCBydWxlIG91dHB1dHMgdG9vIHNvb24sIGNvbXBpbGF0
aW9uCisgICAgIyAgICAgICAgIGZhaWxzLiAgVGhpcyBvY2N1cnMgd2hlbiBydWxlIG91dHB1dHMg
ZnJvbSBkaXN0aW5jdCBpbnB1dHMgYXJlCisgICAgIyAgICAgICAgIGludGVyZGVwZW5kZW50LiAg
VGhlIG9ubHkgd29ya2Fyb3VuZCBpcyB0byBwdXQgcnVsZXMgYW5kIHRoZWlyCisgICAgIyAgICAg
ICAgIGlucHV0cyBpbiBhIHNlcGFyYXRlIHRhcmdldCBmcm9tIHRoZSBvbmUgdGhhdCBjb21waWxl
cyB0aGUgcnVsZQorICAgICMgICAgICAgICBvdXRwdXRzLiAgVGhpcyByZXF1aXJlcyBpbnB1dCBm
aWxlIGNvb3BlcmF0aW9uIGFuZCBpdCBtZWFucyB0aGF0CisgICAgIyAgICAgICAgIHByb2Nlc3Nf
b3V0cHV0c19hc19zb3VyY2VzIGlzIHVudXNhYmxlLgorICAgICMgNjU4NDkzMiBOZWVkIHRvIGRl
Y2xhcmUgdGhhdCBjdXN0b20gcnVsZSBvdXRwdXRzIHNob3VsZCBiZSBleGNsdWRlZCBmcm9tCisg
ICAgIyAgICAgICAgIGNvbXBpbGF0aW9uLiAgQSBwb3NzaWJsZSB3b3JrYXJvdW5kIGlzIHRvIGxp
ZSB0byBYY29kZSBhYm91dCBhCisgICAgIyAgICAgICAgIHJ1bGUncyBvdXRwdXQsIGdpdmluZyBp
dCBhIGR1bW15IGZpbGUgaXQgZG9lc24ndCBrbm93IGhvdyB0bworICAgICMgICAgICAgICBjb21w
aWxlLiAgVGhlIHJ1bGUgYWN0aW9uIHNjcmlwdCB3b3VsZCBuZWVkIHRvIHRvdWNoIHRoZSBkdW1t
eS4KKyAgICAjIDY1ODQ4MzkgSSBuZWVkIGEgd2F5IHRvIGRlY2xhcmUgYWRkaXRpb25hbCBpbnB1
dHMgdG8gYSBjdXN0b20gcnVsZS4KKyAgICAjICAgICAgICAgQSBwb3NzaWJsZSB3b3JrYXJvdW5k
IGlzIGEgc2hlbGwgc2NyaXB0IHBoYXNlIHByaW9yIHRvCisgICAgIyAgICAgICAgIGNvbXBpbGF0
aW9uIHRoYXQgdG91Y2hlcyBhIHJ1bGUncyBwcmltYXJ5IGlucHV0IGZpbGVzIGlmIGFueQorICAg
ICMgICAgICAgICB3b3VsZC1iZSBhZGRpdGlvbmFsIGlucHV0cyBhcmUgbmV3ZXIgdGhhbiB0aGUg
b3V0cHV0LiAgTW9kaWZ5aW5nCisgICAgIyAgICAgICAgIHRoZSBzb3VyY2UgdHJlZSAtIGV2ZW4g
anVzdCBtb2RpZmljYXRpb24gdGltZXMgLSBmZWVscyBkaXJ0eS4KKyAgICAjIDY1NjQyNDAgWGNv
ZGUgImN1c3RvbSBzY3JpcHQiIGJ1aWxkIHJ1bGVzIGFsd2F5cyBkdW1wIGFsbCBlbnZpcm9ubWVu
dAorICAgICMgICAgICAgICB2YXJpYWJsZXMuICBUaGlzIGlzIGEgbG93LXByaW9yb3R5IHByb2Js
ZW0gYW5kIGlzIG5vdCBhCisgICAgIyAgICAgICAgIHNob3ctc3RvcHBlci4KKyAgICBydWxlc19i
eV9leHQgPSB7fQorICAgIGZvciBydWxlIGluIHNwZWNfcnVsZXM6CisgICAgICBydWxlc19ieV9l
eHRbcnVsZVsnZXh0ZW5zaW9uJ11dID0gcnVsZQorCisgICAgICAjIEZpcnN0LCBzb21lIGRlZmlu
aXRpb25zOgorICAgICAgIworICAgICAgIyBBICJydWxlIHNvdXJjZSIgaXMgYSBmaWxlIHRoYXQg
d2FzIGxpc3RlZCBpbiBhIHRhcmdldCdzICJzb3VyY2VzIgorICAgICAgIyBsaXN0IGFuZCB3aWxs
IGhhdmUgYSBydWxlIGFwcGxpZWQgdG8gaXQgb24gdGhlIGJhc2lzIG9mIG1hdGNoaW5nIHRoZQor
ICAgICAgIyBydWxlJ3MgImV4dGVuc2lvbnMiIGF0dHJpYnV0ZS4gIFJ1bGUgc291cmNlcyBhcmUg
ZGlyZWN0IGlucHV0cyB0bworICAgICAgIyBydWxlcy4KKyAgICAgICMKKyAgICAgICMgUnVsZSBk
ZWZpbml0aW9ucyBtYXkgc3BlY2lmeSBhZGRpdGlvbmFsIGlucHV0cyBpbiB0aGVpciAiaW5wdXRz
IgorICAgICAgIyBhdHRyaWJ1dGUuICBUaGVzZSBhZGRpdGlvbmFsIGlucHV0cyBhcmUgdXNlZCBm
b3IgZGVwZW5kZW5jeSB0cmFja2luZworICAgICAgIyBwdXJwb3Nlcy4KKyAgICAgICMKKyAgICAg
ICMgQSAiY29uY3JldGUgb3V0cHV0IiBpcyBhIHJ1bGUgb3V0cHV0IHdpdGggaW5wdXQtZGVwZW5k
ZW50IHZhcmlhYmxlcworICAgICAgIyByZXNvbHZlZC4gIEZvciBleGFtcGxlLCBnaXZlbiBhIHJ1
bGUgd2l0aDoKKyAgICAgICMgICAnZXh0ZW5zaW9uJzogJ2V4dCcsICdvdXRwdXRzJzogWyckKElO
UFVUX0ZJTEVfQkFTRSkuY2MnXSwKKyAgICAgICMgaWYgdGhlIHRhcmdldCdzICJzb3VyY2VzIiBs
aXN0IGNvbnRhaW5lZCAib25lLmV4dCIgYW5kICJ0d28uZXh0IiwKKyAgICAgICMgdGhlICJjb25j
cmV0ZSBvdXRwdXQiIGZvciBydWxlIGlucHV0ICJ0d28uZXh0IiB3b3VsZCBiZSAidHdvLmNjIi4g
IElmCisgICAgICAjIGEgcnVsZSBzcGVjaWZpZXMgbXVsdGlwbGUgb3V0cHV0cywgZWFjaCBpbnB1
dCBmaWxlIHRoYXQgdGhlIHJ1bGUgaXMKKyAgICAgICMgYXBwbGllZCB0byB3aWxsIGhhdmUgdGhl
IHNhbWUgbnVtYmVyIG9mIGNvbmNyZXRlIG91dHB1dHMuCisgICAgICAjCisgICAgICAjIElmIGFu
eSBjb25jcmV0ZSBvdXRwdXRzIGFyZSBvdXRkYXRlZCBvciBtaXNzaW5nIHJlbGF0aXZlIHRvIHRo
ZWlyCisgICAgICAjIGNvcnJlc3BvbmRpbmcgcnVsZV9zb3VyY2Ugb3IgdG8gYW55IHNwZWNpZmll
ZCBhZGRpdGlvbmFsIGlucHV0LCB0aGUKKyAgICAgICMgcnVsZSBhY3Rpb24gbXVzdCBiZSBwZXJm
b3JtZWQgdG8gZ2VuZXJhdGUgdGhlIGNvbmNyZXRlIG91dHB1dHMuCisKKyAgICAgICMgY29uY3Jl
dGVfb3V0cHV0c19ieV9ydWxlX3NvdXJjZSB3aWxsIGhhdmUgYW4gaXRlbSBhdCB0aGUgc2FtZSBp
bmRleAorICAgICAgIyBhcyB0aGUgcnVsZVsncnVsZV9zb3VyY2VzJ10gdGhhdCBpdCBjb3JyZXNw
b25kcyB0by4gIEVhY2ggaXRlbSBpcyBhCisgICAgICAjIGxpc3Qgb2YgYWxsIG9mIHRoZSBjb25j
cmV0ZSBvdXRwdXRzIGZvciB0aGUgcnVsZV9zb3VyY2UuCisgICAgICBjb25jcmV0ZV9vdXRwdXRz
X2J5X3J1bGVfc291cmNlID0gW10KKworICAgICAgIyBjb25jcmV0ZV9vdXRwdXRzX2FsbCBpcyBh
IGZsYXQgbGlzdCBvZiBhbGwgY29uY3JldGUgb3V0cHV0cyB0aGF0IHRoaXMKKyAgICAgICMgcnVs
ZSBpcyBhYmxlIHRvIHByb2R1Y2UsIGdpdmVuIHRoZSBrbm93biBzZXQgb2YgaW5wdXQgZmlsZXMK
KyAgICAgICMgKHJ1bGVfc291cmNlcykgdGhhdCBhcHBseSB0byBpdC4KKyAgICAgIGNvbmNyZXRl
X291dHB1dHNfYWxsID0gW10KKworICAgICAgIyBtZXNzYWdlcyAmIGFjdGlvbnMgYXJlIGtleWVk
IGJ5IHRoZSBzYW1lIGluZGljZXMgYXMgcnVsZVsncnVsZV9zb3VyY2VzJ10KKyAgICAgICMgYW5k
IGNvbmNyZXRlX291dHB1dHNfYnlfcnVsZV9zb3VyY2UuICBUaGV5IGNvbnRhaW4gdGhlIG1lc3Nh
Z2UgYW5kCisgICAgICAjIGFjdGlvbiB0byBwZXJmb3JtIGFmdGVyIHJlc29sdmluZyBpbnB1dC1k
ZXBlbmRlbnQgdmFyaWFibGVzLiAgVGhlCisgICAgICAjIG1lc3NhZ2UgaXMgb3B0aW9uYWwsIGlu
IHdoaWNoIGNhc2UgTm9uZSBpcyBzdG9yZWQgZm9yIGVhY2ggcnVsZSBzb3VyY2UuCisgICAgICBt
ZXNzYWdlcyA9IFtdCisgICAgICBhY3Rpb25zID0gW10KKworICAgICAgZm9yIHJ1bGVfc291cmNl
IGluIHJ1bGUuZ2V0KCdydWxlX3NvdXJjZXMnLCBbXSk6CisgICAgICAgIHJ1bGVfc291cmNlX2Jh
c2VuYW1lID0gcG9zaXhwYXRoLmJhc2VuYW1lKHJ1bGVfc291cmNlKQorICAgICAgICAocnVsZV9z
b3VyY2Vfcm9vdCwgcnVsZV9zb3VyY2VfZXh0KSA9IFwKKyAgICAgICAgICAgIHBvc2l4cGF0aC5z
cGxpdGV4dChydWxlX3NvdXJjZV9iYXNlbmFtZSkKKworICAgICAgICAjIFRoZXNlIGFyZSB0aGUg
c2FtZSB2YXJpYWJsZSBuYW1lcyB0aGF0IFhjb2RlIHVzZXMgZm9yIGl0cyBvd24gbmF0aXZlCisg
ICAgICAgICMgcnVsZSBzdXBwb3J0LiAgQmVjYXVzZSBYY29kZSdzIHJ1bGUgZW5naW5lIGlzIG5v
dCBiZWluZyB1c2VkLCB0aGV5CisgICAgICAgICMgbmVlZCB0byBiZSBleHBhbmRlZCBhcyB0aGV5
IGFyZSB3cml0dGVuIHRvIHRoZSBtYWtlZmlsZS4KKyAgICAgICAgcnVsZV9pbnB1dF9kaWN0ID0g
eworICAgICAgICAgICdJTlBVVF9GSUxFX0JBU0UnOiAgIHJ1bGVfc291cmNlX3Jvb3QsCisgICAg
ICAgICAgJ0lOUFVUX0ZJTEVfU1VGRklYJzogcnVsZV9zb3VyY2VfZXh0LAorICAgICAgICAgICdJ
TlBVVF9GSUxFX05BTUUnOiAgIHJ1bGVfc291cmNlX2Jhc2VuYW1lLAorICAgICAgICAgICdJTlBV
VF9GSUxFX1BBVEgnOiAgIHJ1bGVfc291cmNlLAorICAgICAgICB9CisKKyAgICAgICAgY29uY3Jl
dGVfb3V0cHV0c19mb3JfdGhpc19ydWxlX3NvdXJjZSA9IFtdCisgICAgICAgIGZvciBvdXRwdXQg
aW4gcnVsZS5nZXQoJ291dHB1dHMnLCBbXSk6CisgICAgICAgICAgIyBGb3J0dW5hdGVseSwgWGNv
ZGUgYW5kIG1ha2UgYm90aCB1c2UgJChWQVIpIGZvcm1hdCBmb3IgdGhlaXIKKyAgICAgICAgICAj
IHZhcmlhYmxlcywgc28gdGhlIGV4cGFuc2lvbiBpcyB0aGUgb25seSB0cmFuc2Zvcm1hdGlvbiBu
ZWNlc3NhcnkuCisgICAgICAgICAgIyBBbnkgcmVtYW5pbmcgJChWQVIpLXR5cGUgdmFyaWFibGVz
IGluIHRoZSBzdHJpbmcgY2FuIGJlIGdpdmVuCisgICAgICAgICAgIyBkaXJlY3RseSB0byBtYWtl
LCB3aGljaCB3aWxsIHBpY2sgdXAgdGhlIGNvcnJlY3Qgc2V0dGluZ3MgZnJvbQorICAgICAgICAg
ICMgd2hhdCBYY29kZSBwdXRzIGludG8gdGhlIGVudmlyb25tZW50LgorICAgICAgICAgIGNvbmNy
ZXRlX291dHB1dCA9IEV4cGFuZFhjb2RlVmFyaWFibGVzKG91dHB1dCwgcnVsZV9pbnB1dF9kaWN0
KQorICAgICAgICAgIGNvbmNyZXRlX291dHB1dHNfZm9yX3RoaXNfcnVsZV9zb3VyY2UuYXBwZW5k
KGNvbmNyZXRlX291dHB1dCkKKworICAgICAgICAgICMgQWRkIGFsbCBjb25jcmV0ZSBvdXRwdXRz
IHRvIHRoZSBwcm9qZWN0LgorICAgICAgICAgIHBieHAuQWRkT3JHZXRGaWxlSW5Sb290R3JvdXAo
Y29uY3JldGVfb3V0cHV0KQorCisgICAgICAgIGNvbmNyZXRlX291dHB1dHNfYnlfcnVsZV9zb3Vy
Y2UuYXBwZW5kKCBcCisgICAgICAgICAgICBjb25jcmV0ZV9vdXRwdXRzX2Zvcl90aGlzX3J1bGVf
c291cmNlKQorICAgICAgICBjb25jcmV0ZV9vdXRwdXRzX2FsbC5leHRlbmQoY29uY3JldGVfb3V0
cHV0c19mb3JfdGhpc19ydWxlX3NvdXJjZSkKKworICAgICAgICAjIFRPRE8obWFyayk6IFNob3Vs
ZCB2ZXJpZnkgdGhhdCBhdCBtb3N0IG9uZSBvZiB0aGVzZSBpcyBzcGVjaWZpZWQuCisgICAgICAg
IGlmIGludChydWxlLmdldCgncHJvY2Vzc19vdXRwdXRzX2FzX3NvdXJjZXMnLCBGYWxzZSkpOgor
ICAgICAgICAgIGZvciBvdXRwdXQgaW4gY29uY3JldGVfb3V0cHV0c19mb3JfdGhpc19ydWxlX3Nv
dXJjZToKKyAgICAgICAgICAgIEFkZFNvdXJjZVRvVGFyZ2V0KG91dHB1dCwgcGJ4cCwgeGN0KQor
CisgICAgICAgICMgSWYgdGhlIGZpbGUgY2FtZSBmcm9tIHRoZSBtYWNfYnVuZGxlX3Jlc291cmNl
cyBsaXN0IG9yIGlmIHRoZSBydWxlCisgICAgICAgICMgaXMgbWFya2VkIHRvIHByb2Nlc3Mgb3V0
cHV0cyBhcyBidW5kbGUgcmVzb3VyY2UsIGRvIHNvLgorICAgICAgICB3YXNfbWFjX2J1bmRsZV9y
ZXNvdXJjZSA9IHJ1bGVfc291cmNlIGluIHRndF9tYWNfYnVuZGxlX3Jlc291cmNlcworICAgICAg
ICBpZiB3YXNfbWFjX2J1bmRsZV9yZXNvdXJjZSBvciBcCisgICAgICAgICAgICBpbnQocnVsZS5n
ZXQoJ3Byb2Nlc3Nfb3V0cHV0c19hc19tYWNfYnVuZGxlX3Jlc291cmNlcycsIEZhbHNlKSk6Cisg
ICAgICAgICAgZm9yIG91dHB1dCBpbiBjb25jcmV0ZV9vdXRwdXRzX2Zvcl90aGlzX3J1bGVfc291
cmNlOgorICAgICAgICAgICAgQWRkUmVzb3VyY2VUb1RhcmdldChvdXRwdXQsIHBieHAsIHhjdCkK
KworICAgICAgICAjIERvIHdlIGhhdmUgYSBtZXNzYWdlIHRvIHByaW50IHdoZW4gdGhpcyBydWxl
IHJ1bnM/CisgICAgICAgIG1lc3NhZ2UgPSBydWxlLmdldCgnbWVzc2FnZScpCisgICAgICAgIGlm
IG1lc3NhZ2U6CisgICAgICAgICAgbWVzc2FnZSA9IGd5cC5jb21tb24uRW5jb2RlUE9TSVhTaGVs
bEFyZ3VtZW50KG1lc3NhZ2UpCisgICAgICAgICAgbWVzc2FnZSA9IEV4cGFuZFhjb2RlVmFyaWFi
bGVzKG1lc3NhZ2UsIHJ1bGVfaW5wdXRfZGljdCkKKyAgICAgICAgbWVzc2FnZXMuYXBwZW5kKG1l
c3NhZ2UpCisKKyAgICAgICAgIyBUdXJuIHRoZSBsaXN0IGludG8gYSBzdHJpbmcgdGhhdCBjYW4g
YmUgcGFzc2VkIHRvIGEgc2hlbGwuCisgICAgICAgIGFjdGlvbl9zdHJpbmcgPSBneXAuY29tbW9u
LkVuY29kZVBPU0lYU2hlbGxMaXN0KHJ1bGVbJ2FjdGlvbiddKQorCisgICAgICAgIGFjdGlvbiA9
IEV4cGFuZFhjb2RlVmFyaWFibGVzKGFjdGlvbl9zdHJpbmcsIHJ1bGVfaW5wdXRfZGljdCkKKyAg
ICAgICAgYWN0aW9ucy5hcHBlbmQoYWN0aW9uKQorCisgICAgICBpZiBsZW4oY29uY3JldGVfb3V0
cHV0c19hbGwpID4gMDoKKyAgICAgICAgIyBUT0RPKG1hcmspOiBUaGVyZSdzIGEgcG9zc2liaWx0
eSBmb3IgY29sbGlzaW9uIGhlcmUuICBDb25zaWRlcgorICAgICAgICAjIHRhcmdldCAidCIgcnVs
ZSAiQV9yIiBhbmQgdGFyZ2V0ICJ0X0EiIHJ1bGUgInIiLgorICAgICAgICBtYWtlZmlsZV9uYW1l
ID0gJyVzXyVzLm1ha2UnICUgKHRhcmdldF9uYW1lLCBydWxlWydydWxlX25hbWUnXSkKKyAgICAg
ICAgbWFrZWZpbGVfcGF0aCA9IG9zLnBhdGguam9pbih4Y29kZV9wcm9qZWN0c1tidWlsZF9maWxl
XS5wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VmaWxlX25h
bWUpCisgICAgICAgICMgVE9ETyhtYXJrKTogdHJ5L2Nsb3NlPyAgV3JpdGUgdG8gYSB0ZW1wb3Jh
cnkgZmlsZSBhbmQgc3dhcCBpdCBvbmx5CisgICAgICAgICMgaWYgaXQncyBnb3QgY2hhbmdlcz8K
KyAgICAgICAgbWFrZWZpbGUgPSBvcGVuKG1ha2VmaWxlX3BhdGgsICd3YicpCisKKyAgICAgICAg
IyBtYWtlIHdpbGwgYnVpbGQgdGhlIGZpcnN0IHRhcmdldCBpbiB0aGUgbWFrZWZpbGUgYnkgZGVm
YXVsdC4gIEJ5CisgICAgICAgICMgY29udmVudGlvbiwgaXQncyBjYWxsZWQgImFsbCIuICBMaXN0
IGFsbCAob3IgYXQgbGVhc3Qgb25lKQorICAgICAgICAjIGNvbmNyZXRlIG91dHB1dCBmb3IgZWFj
aCBydWxlIHNvdXJjZSBhcyBhIHByZXJlcXVpc2l0ZSBvZiB0aGUgImFsbCIKKyAgICAgICAgIyB0
YXJnZXQuCisgICAgICAgIG1ha2VmaWxlLndyaXRlKCdhbGw6IFxcXG4nKQorICAgICAgICBmb3Ig
Y29uY3JldGVfb3V0cHV0X2luZGV4IGluIFwKKyAgICAgICAgICAgIHhyYW5nZSgwLCBsZW4oY29u
Y3JldGVfb3V0cHV0c19ieV9ydWxlX3NvdXJjZSkpOgorICAgICAgICAgICMgT25seSBsaXN0IHRo
ZSBmaXJzdCAoaW5kZXggWzBdKSBjb25jcmV0ZSBvdXRwdXQgb2YgZWFjaCBpbnB1dAorICAgICAg
ICAgICMgaW4gdGhlICJhbGwiIHRhcmdldC4gIE90aGVyd2lzZSwgYSBwYXJhbGxlbCBtYWtlICgt
aiA+IDEpIHdvdWxkCisgICAgICAgICAgIyBhdHRlbXB0IHRvIHByb2Nlc3MgZWFjaCBpbnB1dCBt
dWx0aXBsZSB0aW1lcyBzaW11bHRhbmVvdXNseS4KKyAgICAgICAgICAjIE90aGVyd2lzZSwgImFs
bCIgY291bGQganVzdCBjb250YWluIHRoZSBlbnRpcmUgbGlzdCBvZgorICAgICAgICAgICMgY29u
Y3JldGVfb3V0cHV0c19hbGwuCisgICAgICAgICAgY29uY3JldGVfb3V0cHV0ID0gXAorICAgICAg
ICAgICAgICBjb25jcmV0ZV9vdXRwdXRzX2J5X3J1bGVfc291cmNlW2NvbmNyZXRlX291dHB1dF9p
bmRleF1bMF0KKyAgICAgICAgICBpZiBjb25jcmV0ZV9vdXRwdXRfaW5kZXggPT0gbGVuKGNvbmNy
ZXRlX291dHB1dHNfYnlfcnVsZV9zb3VyY2UpIC0gMToKKyAgICAgICAgICAgIGVvbCA9ICcnCisg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVvbCA9ICcgXFwnCisgICAgICAgICAgbWFrZWZp
bGUud3JpdGUoJyAgICAlcyVzXG4nICUgKGNvbmNyZXRlX291dHB1dCwgZW9sKSkKKworICAgICAg
ICBmb3IgKHJ1bGVfc291cmNlLCBjb25jcmV0ZV9vdXRwdXRzLCBtZXNzYWdlLCBhY3Rpb24pIGlu
IFwKKyAgICAgICAgICAgIHppcChydWxlWydydWxlX3NvdXJjZXMnXSwgY29uY3JldGVfb3V0cHV0
c19ieV9ydWxlX3NvdXJjZSwKKyAgICAgICAgICAgICAgICBtZXNzYWdlcywgYWN0aW9ucyk6Cisg
ICAgICAgICAgbWFrZWZpbGUud3JpdGUoJ1xuJykKKworICAgICAgICAgICMgQWRkIGEgcnVsZSB0
aGF0IGRlY2xhcmVzIGl0IGNhbiBidWlsZCBlYWNoIGNvbmNyZXRlIG91dHB1dCBvZiBhCisgICAg
ICAgICAgIyBydWxlIHNvdXJjZS4gIENvbGxlY3QgdGhlIG5hbWVzIG9mIHRoZSBkaXJlY3Rvcmll
cyB0aGF0IGFyZQorICAgICAgICAgICMgcmVxdWlyZWQuCisgICAgICAgICAgY29uY3JldGVfb3V0
cHV0X2RpcnMgPSBbXQorICAgICAgICAgIGZvciBjb25jcmV0ZV9vdXRwdXRfaW5kZXggaW4geHJh
bmdlKDAsIGxlbihjb25jcmV0ZV9vdXRwdXRzKSk6CisgICAgICAgICAgICBjb25jcmV0ZV9vdXRw
dXQgPSBjb25jcmV0ZV9vdXRwdXRzW2NvbmNyZXRlX291dHB1dF9pbmRleF0KKyAgICAgICAgICAg
IGlmIGNvbmNyZXRlX291dHB1dF9pbmRleCA9PSAwOgorICAgICAgICAgICAgICBib2wgPSAnJwor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgYm9sID0gJyAgICAnCisgICAgICAgICAg
ICBtYWtlZmlsZS53cml0ZSgnJXMlcyBcXFxuJyAlIChib2wsIGNvbmNyZXRlX291dHB1dCkpCisK
KyAgICAgICAgICAgIGNvbmNyZXRlX291dHB1dF9kaXIgPSBwb3NpeHBhdGguZGlybmFtZShjb25j
cmV0ZV9vdXRwdXQpCisgICAgICAgICAgICBpZiAoY29uY3JldGVfb3V0cHV0X2RpciBhbmQKKyAg
ICAgICAgICAgICAgICBjb25jcmV0ZV9vdXRwdXRfZGlyIG5vdCBpbiBjb25jcmV0ZV9vdXRwdXRf
ZGlycyk6CisgICAgICAgICAgICAgIGNvbmNyZXRlX291dHB1dF9kaXJzLmFwcGVuZChjb25jcmV0
ZV9vdXRwdXRfZGlyKQorCisgICAgICAgICAgbWFrZWZpbGUud3JpdGUoJyAgICA6IFxcXG4nKQor
CisgICAgICAgICAgIyBUaGUgcHJlcmVxdWlzaXRlcyBmb3IgdGhpcyBydWxlIGFyZSB0aGUgcnVs
ZSBzb3VyY2UgaXRzZWxmIGFuZAorICAgICAgICAgICMgdGhlIHNldCBvZiBhZGRpdGlvbmFsIHJ1
bGUgaW5wdXRzLCBpZiBhbnkuCisgICAgICAgICAgcHJlcmVxdWlzaXRlcyA9IFtydWxlX3NvdXJj
ZV0KKyAgICAgICAgICBwcmVyZXF1aXNpdGVzLmV4dGVuZChydWxlLmdldCgnaW5wdXRzJywgW10p
KQorICAgICAgICAgIGZvciBwcmVyZXF1aXNpdGVfaW5kZXggaW4geHJhbmdlKDAsIGxlbihwcmVy
ZXF1aXNpdGVzKSk6CisgICAgICAgICAgICBwcmVyZXF1aXNpdGUgPSBwcmVyZXF1aXNpdGVzW3By
ZXJlcXVpc2l0ZV9pbmRleF0KKyAgICAgICAgICAgIGlmIHByZXJlcXVpc2l0ZV9pbmRleCA9PSBs
ZW4ocHJlcmVxdWlzaXRlcykgLSAxOgorICAgICAgICAgICAgICBlb2wgPSAnJworICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgZW9sID0gJyBcXCcKKyAgICAgICAgICAgIG1ha2VmaWxl
LndyaXRlKCcgICAgJXMlc1xuJyAlIChwcmVyZXF1aXNpdGUsIGVvbCkpCisKKyAgICAgICAgICAj
IE1ha2Ugc3VyZSB0aGF0IG91dHB1dCBkaXJlY3RvcmllcyBleGlzdCBiZWZvcmUgZXhlY3V0aW5n
IHRoZSBydWxlCisgICAgICAgICAgIyBhY3Rpb24uCisgICAgICAgICAgaWYgbGVuKGNvbmNyZXRl
X291dHB1dF9kaXJzKSA+IDA6CisgICAgICAgICAgICBtYWtlZmlsZS53cml0ZSgnXHRAbWtkaXIg
LXAgIiVzIlxuJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnIiAiJy5qb2luKGNvbmNy
ZXRlX291dHB1dF9kaXJzKSkKKworICAgICAgICAgICMgVGhlIHJ1bGUgbWVzc2FnZSBhbmQgYWN0
aW9uIGhhdmUgYWxyZWFkeSBoYWQgdGhlIG5lY2Vzc2FyeSB2YXJpYWJsZQorICAgICAgICAgICMg
c3Vic3RpdHV0aW9ucyBwZXJmb3JtZWQuCisgICAgICAgICAgaWYgbWVzc2FnZToKKyAgICAgICAg
ICAgICMgTWFyayBpdCB3aXRoIG5vdGU6IHNvIFhjb2RlIHBpY2tzIGl0IHVwIGluIGJ1aWxkIG91
dHB1dC4KKyAgICAgICAgICAgIG1ha2VmaWxlLndyaXRlKCdcdEBlY2hvIG5vdGU6ICVzXG4nICUg
bWVzc2FnZSkKKyAgICAgICAgICBtYWtlZmlsZS53cml0ZSgnXHQlc1xuJyAlIGFjdGlvbikKKwor
ICAgICAgICBtYWtlZmlsZS5jbG9zZSgpCisKKyAgICAgICAgIyBJdCBtaWdodCBiZSBuaWNlIHRv
IGVuc3VyZSB0aGF0IG5lZWRlZCBvdXRwdXQgZGlyZWN0b3JpZXMgZXhpc3QKKyAgICAgICAgIyBo
ZXJlIHJhdGhlciB0aGFuIGluIGVhY2ggdGFyZ2V0IGluIHRoZSBNYWtlZmlsZSwgYnV0IHRoYXQg
d291bGRuJ3QKKyAgICAgICAgIyB3b3JrIGlmIHRoZXJlIGV2ZXIgd2FzIGEgY29uY3JldGUgb3V0
cHV0IHRoYXQgaGFkIGFuIGlucHV0LWRlcGVuZGVudAorICAgICAgICAjIHZhcmlhYmxlIGFueXdo
ZXJlIG90aGVyIHRoYW4gaW4gdGhlIGxlYWYgcG9zaXRpb24uCisKKyAgICAgICAgIyBEb24ndCBk
ZWNsYXJlIGFueSBpbnB1dFBhdGhzIG9yIG91dHB1dFBhdGhzLiAgSWYgdGhleSdyZSBwcmVzZW50
LAorICAgICAgICAjIFhjb2RlIHdpbGwgcHJvdmlkZSBhIHNsaWdodCBvcHRpbWl6YXRpb24gYnkg
b25seSBydW5uaW5nIHRoZSBzY3JpcHQKKyAgICAgICAgIyBwaGFzZSBpZiBhbnkgb3V0cHV0IGlz
IG1pc3Npbmcgb3Igb3V0ZGF0ZWQgcmVsYXRpdmUgdG8gYW55IGlucHV0LgorICAgICAgICAjIFVu
Zm9ydHVuYXRlbHksIGl0IHdpbGwgYWxzbyBhc3N1bWUgdGhhdCBhbGwgb3V0cHV0cyBhcmUgdG91
Y2hlZCBieQorICAgICAgICAjIHRoZSBzY3JpcHQsIGFuZCBpZiB0aGUgb3V0cHV0cyBzZXJ2ZSBh
cyBmaWxlcyBpbiBhIGNvbXBpbGF0aW9uCisgICAgICAgICMgcGhhc2UsIHRoZXkgd2lsbCBiZSB1
bmNvbmRpdGlvbmFsbHkgcmVidWlsdC4gIFNpbmNlIG1ha2UgbWlnaHQgbm90CisgICAgICAgICMg
cmVidWlsZCBldmVyeXRoaW5nIHRoYXQgY291bGQgYmUgZGVjbGFyZWQgaGVyZSBhcyBhbiBvdXRw
dXQsIHRoaXMKKyAgICAgICAgIyBleHRyYSBjb21waWxhdGlvbiBhY3Rpdml0eSBpcyB1bm5lY2Vz
c2FyeS4gIFdpdGggaW5wdXRQYXRocyBhbmQKKyAgICAgICAgIyBvdXRwdXRQYXRocyBub3Qgc3Vw
cGxpZWQsIG1ha2Ugd2lsbCBhbHdheXMgYmUgY2FsbGVkLCBidXQgaXQga25vd3MKKyAgICAgICAg
IyBlbm91Z2ggdG8gbm90IGRvIGFueXRoaW5nIHdoZW4gZXZlcnl0aGluZyBpcyB1cC10by1kYXRl
LgorCisgICAgICAgICMgVG8gaGVscCBzcGVlZCB0aGluZ3MgdXAsIHBhc3MgLWogQ09VTlQgdG8g
bWFrZSBzbyBpdCBkb2VzIHNvbWUgd29yaworICAgICAgICAjIGluIHBhcmFsbGVsLiAgRG9uJ3Qg
dXNlIG5jcHVzIGJlY2F1c2UgWGNvZGUgd2lsbCBidWlsZCBuY3B1cyB0YXJnZXRzCisgICAgICAg
ICMgaW4gcGFyYWxsZWwgYW5kIGlmIGVhY2ggdGFyZ2V0IGhhcHBlbnMgdG8gaGF2ZSBhIHJ1bGVz
IHN0ZXAsIHRoZXJlCisgICAgICAgICMgd291bGQgYmUgbmNwdXNeMiB0aGluZ3MgZ29pbmcuICBX
aXRoIGEgbWFjaGluZSB0aGF0IGhhcyAyIHF1YWQtY29yZQorICAgICAgICAjIFhlb25zLCBhIGJ1
aWxkIGNhbiBxdWlja2x5IHJ1biBvdXQgb2YgcHJvY2Vzc2VzIGJhc2VkIG9uCisgICAgICAgICMg
c2NoZWR1bGluZy9vdGhlciB0YXNrcywgYW5kIHJhbmRvbWx5IGZhaWxpbmcgYnVpbGRzIGFyZSBu
byBnb29kLgorICAgICAgICBzY3JpcHQgPSBcCisiIiJKT0JfQ09VTlQ9IiQoL3Vzci9zYmluL3N5
c2N0bCAtbiBody5uY3B1KSIKK2lmIFsgIiR7Sk9CX0NPVU5UfSIgLWd0IDQgXTsgdGhlbgorICBK
T0JfQ09VTlQ9NAorZmkKK2V4ZWMgIiR7REVWRUxPUEVSX0JJTl9ESVJ9L21ha2UiIC1mICIke1BS
T0pFQ1RfRklMRV9QQVRIfS8lcyIgLWogIiR7Sk9CX0NPVU5UfSIKK2V4aXQgMQorIiIiICUgbWFr
ZWZpbGVfbmFtZQorICAgICAgICBzc2JwID0gZ3lwLnhjb2RlcHJval9maWxlLlBCWFNoZWxsU2Ny
aXB0QnVpbGRQaGFzZSh7CisgICAgICAgICAgICAgICduYW1lJzogJ1J1bGUgIicgKyBydWxlWydy
dWxlX25hbWUnXSArICciJywKKyAgICAgICAgICAgICAgJ3NoZWxsU2NyaXB0Jzogc2NyaXB0LAor
ICAgICAgICAgICAgICAnc2hvd0VudlZhcnNJbkxvZyc6IDAsCisgICAgICAgICAgICB9KQorCisg
ICAgICAgIGlmIHN1cHBvcnRfeGN0OgorICAgICAgICAgIHN1cHBvcnRfeGN0LkFwcGVuZFByb3Bl
cnR5KCdidWlsZFBoYXNlcycsIHNzYnApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgIyBUT0RP
KG1hcmspOiB0aGlzIGFzc3VtZXMgdG9vIG11Y2gga25vd2xlZGdlIG9mIHRoZSBpbnRlcm5hbHMg
b2YKKyAgICAgICAgICAjIHhjb2RlcHJval9maWxlOyBzb21lIG9mIHRoZXNlIHNtYXJ0cyBzaG91
bGQgbW92ZSBpbnRvIHhjb2RlcHJval9maWxlCisgICAgICAgICAgIyBpdHNlbGYuCisgICAgICAg
ICAgeGN0Ll9wcm9wZXJ0aWVzWydidWlsZFBoYXNlcyddLmluc2VydChwcmVidWlsZF9pbmRleCwg
c3NicCkKKyAgICAgICAgICBwcmVidWlsZF9pbmRleCA9IHByZWJ1aWxkX2luZGV4ICsgMQorCisg
ICAgICAjIEV4dHJhIHJ1bGUgaW5wdXRzIGFsc28gZ28gaW50byB0aGUgcHJvamVjdCBmaWxlLiAg
Q29uY3JldGUgb3V0cHV0cyB3ZXJlCisgICAgICAjIGFscmVhZHkgYWRkZWQgd2hlbiB0aGV5IHdl
cmUgY29tcHV0ZWQuCisgICAgICBncm91cHMgPSBbJ2lucHV0cycsICdpbnB1dHNfZXhjbHVkZWQn
XQorICAgICAgaWYgc2tpcF9leGNsdWRlZF9maWxlczoKKyAgICAgICAgZ3JvdXBzID0gW3ggZm9y
IHggaW4gZ3JvdXBzIGlmIG5vdCB4LmVuZHN3aXRoKCdfZXhjbHVkZWQnKV0KKyAgICAgIGZvciBn
cm91cCBpbiBncm91cHM6CisgICAgICAgIGZvciBpdGVtIGluIHJ1bGUuZ2V0KGdyb3VwLCBbXSk6
CisgICAgICAgICAgcGJ4cC5BZGRPckdldEZpbGVJblJvb3RHcm91cChpdGVtKQorCisgICAgIyBB
ZGQgInNvdXJjZXMiLgorICAgIGZvciBzb3VyY2UgaW4gc3BlYy5nZXQoJ3NvdXJjZXMnLCBbXSk6
CisgICAgICAoc291cmNlX3Jvb3QsIHNvdXJjZV9leHRlbnNpb24pID0gcG9zaXhwYXRoLnNwbGl0
ZXh0KHNvdXJjZSkKKyAgICAgIGlmIHNvdXJjZV9leHRlbnNpb25bMTpdIG5vdCBpbiBydWxlc19i
eV9leHQ6CisgICAgICAgICMgQWRkU291cmNlVG9UYXJnZXQgd2lsbCBhZGQgdGhlIGZpbGUgdG8g
YSByb290IGdyb3VwIGlmIGl0J3Mgbm90CisgICAgICAgICMgYWxyZWFkeSB0aGVyZS4KKyAgICAg
ICAgQWRkU291cmNlVG9UYXJnZXQoc291cmNlLCBwYnhwLCB4Y3QpCisgICAgICBlbHNlOgorICAg
ICAgICBwYnhwLkFkZE9yR2V0RmlsZUluUm9vdEdyb3VwKHNvdXJjZSkKKworICAgICMgQWRkICJt
YWNfYnVuZGxlX3Jlc291cmNlcyIsICJtYWNfZnJhbWV3b3JrX2hlYWRlcnMiLCBhbmQKKyAgICAj
ICJtYWNfZnJhbWV3b3JrX3ByaXZhdGVfaGVhZGVycyIgaWYgaXQncyBhIGJ1bmRsZSBvZiBhbnkg
dHlwZS4KKyAgICBpZiBpc19idW5kbGU6CisgICAgICBmb3IgcmVzb3VyY2UgaW4gdGd0X21hY19i
dW5kbGVfcmVzb3VyY2VzOgorICAgICAgICAocmVzb3VyY2Vfcm9vdCwgcmVzb3VyY2VfZXh0ZW5z
aW9uKSA9IHBvc2l4cGF0aC5zcGxpdGV4dChyZXNvdXJjZSkKKyAgICAgICAgaWYgcmVzb3VyY2Vf
ZXh0ZW5zaW9uWzE6XSBub3QgaW4gcnVsZXNfYnlfZXh0OgorICAgICAgICAgIEFkZFJlc291cmNl
VG9UYXJnZXQocmVzb3VyY2UsIHBieHAsIHhjdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICBw
YnhwLkFkZE9yR2V0RmlsZUluUm9vdEdyb3VwKHJlc291cmNlKQorCisgICAgICBmb3IgaGVhZGVy
IGluIHNwZWMuZ2V0KCdtYWNfZnJhbWV3b3JrX2hlYWRlcnMnLCBbXSk6CisgICAgICAgIEFkZEhl
YWRlclRvVGFyZ2V0KGhlYWRlciwgcGJ4cCwgeGN0LCBUcnVlKQorCisgICAgICBmb3IgaGVhZGVy
IGluIHNwZWMuZ2V0KCdtYWNfZnJhbWV3b3JrX3ByaXZhdGVfaGVhZGVycycsIFtdKToKKyAgICAg
ICAgQWRkSGVhZGVyVG9UYXJnZXQoaGVhZGVyLCBwYnhwLCB4Y3QsIEZhbHNlKQorCisgICAgIyBB
ZGQgImNvcGllcyIuCisgICAgZm9yIGNvcHlfZ3JvdXAgaW4gc3BlYy5nZXQoJ2NvcGllcycsIFtd
KToKKyAgICAgIHBieGNwID0gZ3lwLnhjb2RlcHJval9maWxlLlBCWENvcHlGaWxlc0J1aWxkUGhh
c2UoeworICAgICAgICAgICAgJ25hbWUnOiAnQ29weSB0byAnICsgY29weV9ncm91cFsnZGVzdGlu
YXRpb24nXQorICAgICAgICAgIH0sCisgICAgICAgICAgcGFyZW50PXhjdCkKKyAgICAgIGRlc3Qg
PSBjb3B5X2dyb3VwWydkZXN0aW5hdGlvbiddCisgICAgICBpZiBkZXN0WzBdIG5vdCBpbiAoJy8n
LCAnJCcpOgorICAgICAgICAjIFJlbGF0aXZlIHBhdGhzIGFyZSByZWxhdGl2ZSB0byAkKFNSQ1JP
T1QpLgorICAgICAgICBkZXN0ID0gJyQoU1JDUk9PVCkvJyArIGRlc3QKKyAgICAgIHBieGNwLlNl
dERlc3RpbmF0aW9uKGRlc3QpCisKKyAgICAgICMgVE9ETyhtYXJrKTogVGhlIHVzdWFsIGNvbW1l
bnQgYWJvdXQgdGhpcyBrbm93aW5nIHRvbyBtdWNoIGFib3V0CisgICAgICAjIGd5cC54Y29kZXBy
b2pfZmlsZSBpbnRlcm5hbHMgYXBwbGllcy4KKyAgICAgIHhjdC5fcHJvcGVydGllc1snYnVpbGRQ
aGFzZXMnXS5pbnNlcnQocHJlYnVpbGRfaW5kZXgsIHBieGNwKQorCisgICAgICBmb3IgZmlsZSBp
biBjb3B5X2dyb3VwWydmaWxlcyddOgorICAgICAgICBwYnhjcC5BZGRGaWxlKGZpbGUpCisKKyAg
ICAjIEV4Y2x1ZGVkIGZpbGVzIGNhbiBhbHNvIGdvIGludG8gdGhlIHByb2plY3QgZmlsZS4KKyAg
ICBpZiBub3Qgc2tpcF9leGNsdWRlZF9maWxlczoKKyAgICAgIGZvciBrZXkgaW4gWydzb3VyY2Vz
JywgJ21hY19idW5kbGVfcmVzb3VyY2VzJywgJ21hY19mcmFtZXdvcmtfaGVhZGVycycsCisgICAg
ICAgICAgICAgICAgICAnbWFjX2ZyYW1ld29ya19wcml2YXRlX2hlYWRlcnMnXToKKyAgICAgICAg
ZXhjbHVkZWRfa2V5ID0ga2V5ICsgJ19leGNsdWRlZCcKKyAgICAgICAgZm9yIGl0ZW0gaW4gc3Bl
Yy5nZXQoZXhjbHVkZWRfa2V5LCBbXSk6CisgICAgICAgICAgcGJ4cC5BZGRPckdldEZpbGVJblJv
b3RHcm91cChpdGVtKQorCisgICAgIyBTbyBjYW4gImlucHV0cyIgYW5kICJvdXRwdXRzIiBzZWN0
aW9ucyBvZiAiYWN0aW9ucyIgZ3JvdXBzLgorICAgIGdyb3VwcyA9IFsnaW5wdXRzJywgJ2lucHV0
c19leGNsdWRlZCcsICdvdXRwdXRzJywgJ291dHB1dHNfZXhjbHVkZWQnXQorICAgIGlmIHNraXBf
ZXhjbHVkZWRfZmlsZXM6CisgICAgICBncm91cHMgPSBbeCBmb3IgeCBpbiBncm91cHMgaWYgbm90
IHguZW5kc3dpdGgoJ19leGNsdWRlZCcpXQorICAgIGZvciBhY3Rpb24gaW4gc3BlYy5nZXQoJ2Fj
dGlvbnMnLCBbXSk6CisgICAgICBmb3IgZ3JvdXAgaW4gZ3JvdXBzOgorICAgICAgICBmb3IgaXRl
bSBpbiBhY3Rpb24uZ2V0KGdyb3VwLCBbXSk6CisgICAgICAgICAgIyBFeGNsdWRlIGFueXRoaW5n
IGluIEJVSUxUX1BST0RVQ1RTX0RJUi4gIFRoZXkncmUgcHJvZHVjdHMsIG5vdAorICAgICAgICAg
ICMgc291cmNlcy4KKyAgICAgICAgICBpZiBub3QgaXRlbS5zdGFydHN3aXRoKCckKEJVSUxUX1BS
T0RVQ1RTX0RJUikvJyk6CisgICAgICAgICAgICBwYnhwLkFkZE9yR2V0RmlsZUluUm9vdEdyb3Vw
KGl0ZW0pCisKKyAgICBmb3IgcG9zdGJ1aWxkIGluIHNwZWMuZ2V0KCdwb3N0YnVpbGRzJywgW10p
OgorICAgICAgYWN0aW9uX3N0cmluZ19zaCA9IGd5cC5jb21tb24uRW5jb2RlUE9TSVhTaGVsbExp
c3QocG9zdGJ1aWxkWydhY3Rpb24nXSkKKyAgICAgIHNjcmlwdCA9ICdleGVjICcgKyBhY3Rpb25f
c3RyaW5nX3NoICsgJ1xuZXhpdCAxXG4nCisKKyAgICAgICMgTWFrZSB0aGUgcG9zdGJ1aWxkIHN0
ZXAgZGVwZW5kIG9uIHRoZSBvdXRwdXQgb2YgbGQgb3IgYXIgZnJvbSB0aGlzCisgICAgICAjIHRh
cmdldC4gQXBwYXJlbnRseSBwdXR0aW5nIHRoZSBzY3JpcHQgc3RlcCBhZnRlciB0aGUgbGluayBz
dGVwIGlzbid0CisgICAgICAjIHN1ZmZpY2llbnQgdG8gZW5zdXJlIHByb3BlciBvcmRlcmluZyBp
biBhbGwgY2FzZXMuIFdpdGggYW4gaW5wdXQKKyAgICAgICMgZGVjbGFyZWQgYnV0IG5vIG91dHB1
dHMsIHRoZSBzY3JpcHQgc3RlcCBzaG91bGQgcnVuIGV2ZXJ5IHRpbWUsIGFzCisgICAgICAjIGRl
c2lyZWQuCisgICAgICBzc2JwID0gZ3lwLnhjb2RlcHJval9maWxlLlBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZSh7CisgICAgICAgICAgICAnaW5wdXRQYXRocyc6IFsnJChCVUlMVF9QUk9EVUNUU19E
SVIpLyQoRVhFQ1VUQUJMRV9QQVRIKSddLAorICAgICAgICAgICAgJ25hbWUnOiAnUG9zdGJ1aWxk
ICInICsgcG9zdGJ1aWxkWydwb3N0YnVpbGRfbmFtZSddICsgJyInLAorICAgICAgICAgICAgJ3No
ZWxsU2NyaXB0Jzogc2NyaXB0LAorICAgICAgICAgICAgJ3Nob3dFbnZWYXJzSW5Mb2cnOiAwLAor
ICAgICAgICAgIH0pCisgICAgICB4Y3QuQXBwZW5kUHJvcGVydHkoJ2J1aWxkUGhhc2VzJywgc3Ni
cCkKKworICAgICMgQWRkIGRlcGVuZGVuY2llcyBiZWZvcmUgbGlicmFyaWVzLCBiZWNhdXNlIGFk
ZGluZyBhIGRlcGVuZGVuY3kgbWF5IGltcGx5CisgICAgIyBhZGRpbmcgYSBsaWJyYXJ5LiAgSXQn
cyBwcmVmZXJhYmxlIHRvIGtlZXAgZGVwZW5kZW5jaWVzIGxpc3RlZCBmaXJzdAorICAgICMgZHVy
aW5nIGEgbGluayBwaGFzZSBzbyB0aGF0IHRoZXkgY2FuIG92ZXJyaWRlIHN5bWJvbHMgdGhhdCB3
b3VsZAorICAgICMgb3RoZXJ3aXNlIGJlIHByb3ZpZGVkIGJ5IGxpYnJhcmllcywgd2hpY2ggd2ls
bCB1c3VhbGx5IGluY2x1ZGUgc3lzdGVtCisgICAgIyBsaWJyYXJpZXMuICBPbiBzb21lIHN5c3Rl
bXMsIGxkIGlzIGZpbmlja3kgYW5kIGV2ZW4gcmVxdWlyZXMgdGhlCisgICAgIyBsaWJyYXJpZXMg
dG8gYmUgb3JkZXJlZCBpbiBzdWNoIGEgd2F5IHRoYXQgdW5yZXNvbHZlZCBzeW1ib2xzIGluCisg
ICAgIyBlYXJsaWVyLWxpc3RlZCBsaWJyYXJpZXMgbWF5IG9ubHkgYmUgcmVzb2x2ZWQgYnkgbGF0
ZXItbGlzdGVkIGxpYnJhcmllcy4KKyAgICAjIFRoZSBNYWMgbGlua2VyIGRvZXNuJ3Qgd29yayB0
aGF0IHdheSwgYnV0IG90aGVyIHBsYXRmb3JtcyBkbywgYW5kIHNvCisgICAgIyB0aGVpciBsaW5r
ZXIgaW52b2NhdGlvbnMgbmVlZCB0byBiZSBjb25zdHJ1Y3RlZCBpbiB0aGlzIHdheS4gIFRoZXJl
J3MKKyAgICAjIG5vIGNvbXBlbGxpbmcgcmVhc29uIGZvciBYY29kZSdzIGxpbmtlciBpbnZvY2F0
aW9ucyB0byBkaWZmZXIuCisKKyAgICBpZiAnZGVwZW5kZW5jaWVzJyBpbiBzcGVjOgorICAgICAg
Zm9yIGRlcGVuZGVuY3kgaW4gc3BlY1snZGVwZW5kZW5jaWVzJ106CisgICAgICAgIHhjdC5BZGRE
ZXBlbmRlbmN5KHhjb2RlX3RhcmdldHNbZGVwZW5kZW5jeV0pCisgICAgICAgICMgVGhlIHN1cHBv
cnQgcHJvamVjdCBhbHNvIGdldHMgdGhlIGRlcGVuZGVuY2llcyAoaW4gY2FzZSB0aGV5IGFyZQor
ICAgICAgICAjIG5lZWRlZCBmb3IgdGhlIGFjdGlvbnMvcnVsZXMgdG8gd29yaykuCisgICAgICAg
IGlmIHN1cHBvcnRfeGN0OgorICAgICAgICAgIHN1cHBvcnRfeGN0LkFkZERlcGVuZGVuY3koeGNv
ZGVfdGFyZ2V0c1tkZXBlbmRlbmN5XSkKKworICAgIGlmICdsaWJyYXJpZXMnIGluIHNwZWM6Cisg
ICAgICBmb3IgbGlicmFyeSBpbiBzcGVjWydsaWJyYXJpZXMnXToKKyAgICAgICAgeGN0LkZyYW1l
d29ya3NQaGFzZSgpLkFkZEZpbGUobGlicmFyeSkKKyAgICAgICAgIyBBZGQgdGhlIGxpYnJhcnkn
cyBkaXJlY3RvcnkgdG8gTElCUkFSWV9TRUFSQ0hfUEFUSFMgaWYgbmVjZXNzYXJ5LgorICAgICAg
ICAjIEkgd2lzaCBYY29kZSBoYW5kbGVkIHRoaXMgYXV0b21hdGljYWxseS4KKyAgICAgICAgbGli
cmFyeV9kaXIgPSBwb3NpeHBhdGguZGlybmFtZShsaWJyYXJ5KQorICAgICAgICBpZiBsaWJyYXJ5
X2RpciBub3QgaW4geGNvZGVfc3RhbmRhcmRfbGlicmFyeV9kaXJzIGFuZCAoCisgICAgICAgICAg
ICBub3QgeGN0Lkhhc0J1aWxkU2V0dGluZyhfbGlicmFyeV9zZWFyY2hfcGF0aHNfdmFyKSBvcgor
ICAgICAgICAgICAgbGlicmFyeV9kaXIgbm90IGluIHhjdC5HZXRCdWlsZFNldHRpbmcoX2xpYnJh
cnlfc2VhcmNoX3BhdGhzX3ZhcikpOgorICAgICAgICAgIHhjdC5BcHBlbmRCdWlsZFNldHRpbmco
X2xpYnJhcnlfc2VhcmNoX3BhdGhzX3ZhciwgbGlicmFyeV9kaXIpCisKKyAgICBmb3IgY29uZmln
dXJhdGlvbl9uYW1lIGluIGNvbmZpZ3VyYXRpb25fbmFtZXM6CisgICAgICBjb25maWd1cmF0aW9u
ID0gc3BlY1snY29uZmlndXJhdGlvbnMnXVtjb25maWd1cmF0aW9uX25hbWVdCisgICAgICB4Y2Jj
ID0geGN0LkNvbmZpZ3VyYXRpb25OYW1lZChjb25maWd1cmF0aW9uX25hbWUpCisgICAgICBmb3Ig
aW5jbHVkZV9kaXIgaW4gY29uZmlndXJhdGlvbi5nZXQoJ21hY19mcmFtZXdvcmtfZGlycycsIFtd
KToKKyAgICAgICAgeGNiYy5BcHBlbmRCdWlsZFNldHRpbmcoJ0ZSQU1FV09SS19TRUFSQ0hfUEFU
SFMnLCBpbmNsdWRlX2RpcikKKyAgICAgIGZvciBpbmNsdWRlX2RpciBpbiBjb25maWd1cmF0aW9u
LmdldCgnaW5jbHVkZV9kaXJzJywgW10pOgorICAgICAgICB4Y2JjLkFwcGVuZEJ1aWxkU2V0dGlu
ZygnSEVBREVSX1NFQVJDSF9QQVRIUycsIGluY2x1ZGVfZGlyKQorICAgICAgaWYgJ2RlZmluZXMn
IGluIGNvbmZpZ3VyYXRpb246CisgICAgICAgIGZvciBkZWZpbmUgaW4gY29uZmlndXJhdGlvblsn
ZGVmaW5lcyddOgorICAgICAgICAgIHNldF9kZWZpbmUgPSBFc2NhcGVYQ29kZUFyZ3VtZW50KGRl
ZmluZSkKKyAgICAgICAgICB4Y2JjLkFwcGVuZEJ1aWxkU2V0dGluZygnR0NDX1BSRVBST0NFU1NP
Ul9ERUZJTklUSU9OUycsIHNldF9kZWZpbmUpCisgICAgICBpZiAneGNvZGVfc2V0dGluZ3MnIGlu
IGNvbmZpZ3VyYXRpb246CisgICAgICAgIGZvciB4Y2ssIHhjdiBpbiBjb25maWd1cmF0aW9uWyd4
Y29kZV9zZXR0aW5ncyddLml0ZXJpdGVtcygpOgorICAgICAgICAgIHhjYmMuU2V0QnVpbGRTZXR0
aW5nKHhjaywgeGN2KQorICAgICAgaWYgJ3hjb2RlX2NvbmZpZ19maWxlJyBpbiBjb25maWd1cmF0
aW9uOgorICAgICAgICBjb25maWdfcmVmID0gcGJ4cC5BZGRPckdldEZpbGVJblJvb3RHcm91cCgK
KyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25bJ3hjb2RlX2NvbmZpZ19maWxlJ10pCisgICAgICAg
IHhjYmMuU2V0QmFzZUNvbmZpZ3VyYXRpb24oY29uZmlnX3JlZikKKworICBidWlsZF9maWxlcyA9
IFtdCisgIGZvciBidWlsZF9maWxlLCBidWlsZF9maWxlX2RpY3QgaW4gZGF0YS5pdGVyaXRlbXMo
KToKKyAgICBpZiBidWlsZF9maWxlLmVuZHN3aXRoKCcuZ3lwJyk6CisgICAgICBidWlsZF9maWxl
cy5hcHBlbmQoYnVpbGRfZmlsZSkKKworICBmb3IgYnVpbGRfZmlsZSBpbiBidWlsZF9maWxlczoK
KyAgICB4Y29kZV9wcm9qZWN0c1tidWlsZF9maWxlXS5GaW5hbGl6ZTEoeGNvZGVfdGFyZ2V0cywg
c2VyaWFsaXplX2FsbF90ZXN0cykKKworICBmb3IgYnVpbGRfZmlsZSBpbiBidWlsZF9maWxlczoK
KyAgICB4Y29kZV9wcm9qZWN0c1tidWlsZF9maWxlXS5GaW5hbGl6ZTIoeGNvZGVfdGFyZ2V0cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNvZGVfdGFyZ2V0X3Rv
X3RhcmdldF9kaWN0KQorCisgIGZvciBidWlsZF9maWxlIGluIGJ1aWxkX2ZpbGVzOgorICAgIHhj
b2RlX3Byb2plY3RzW2J1aWxkX2ZpbGVdLldyaXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC9weWxpYi9neXAvaW5wdXQucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHls
aWIvZ3lwL2lucHV0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0ZTI0NjY1NDU2YzBmYTUyMzNlZGY1Y2M2NWNl
ZTQ3ODhiNTNmZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHls
aWIvZ3lwL2lucHV0LnB5CkBAIC0wLDAgKzEsMjI1MCBAQAorIyEvdXNyL2Jpbi9weXRob24KKwor
IyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCitmcm9tIGNvbXBp
bGVyLmFzdCBpbXBvcnQgQ29uc3QKK2Zyb20gY29tcGlsZXIuYXN0IGltcG9ydCBEaWN0Citmcm9t
IGNvbXBpbGVyLmFzdCBpbXBvcnQgRGlzY2FyZAorZnJvbSBjb21waWxlci5hc3QgaW1wb3J0IExp
c3QKK2Zyb20gY29tcGlsZXIuYXN0IGltcG9ydCBNb2R1bGUKK2Zyb20gY29tcGlsZXIuYXN0IGlt
cG9ydCBOb2RlCitmcm9tIGNvbXBpbGVyLmFzdCBpbXBvcnQgU3RtdAoraW1wb3J0IGNvbXBpbGVy
CitpbXBvcnQgY29weQoraW1wb3J0IGd5cC5jb21tb24KK2ltcG9ydCBvcHRwYXJzZQoraW1wb3J0
IG9zLnBhdGgKK2ltcG9ydCByZQoraW1wb3J0IHNobGV4CitpbXBvcnQgc3VicHJvY2VzcworaW1w
b3J0IHN5cworCisKKyMgQSBsaXN0IG9mIHR5cGVzIHRoYXQgYXJlIHRyZWF0ZWQgYXMgbGlua2Fi
bGUuCitsaW5rYWJsZV90eXBlcyA9IFsnZXhlY3V0YWJsZScsICdzaGFyZWRfbGlicmFyeScsICds
b2FkYWJsZV9tb2R1bGUnXQorCisjIEEgbGlzdCBvZiBzZWN0aW9ucyB0aGF0IGNvbnRhaW4gbGlu
a3MgdG8gb3RoZXIgdGFyZ2V0cy4KK2RlcGVuZGVuY3lfc2VjdGlvbnMgPSBbJ2RlcGVuZGVuY2ll
cycsICdleHBvcnRfZGVwZW5kZW50X3NldHRpbmdzJ10KKworIyBiYXNlX3BhdGhfc2VjdGlvbnMg
aXMgYSBsaXN0IG9mIHNlY3Rpb25zIGRlZmluZWQgYnkgR1lQIHRoYXQgY29udGFpbgorIyBwYXRo
bmFtZXMuICBUaGUgZ2VuZXJhdG9ycyBjYW4gcHJvdmlkZSBtb3JlIGtleXMsIHRoZSB0d28gbGlz
dHMgYXJlIG1lcmdlZAorIyBpbnRvIHBhdGhfc2VjdGlvbnMsIGJ1dCB5b3Ugc2hvdWxkIGNhbGwg
SXNQYXRoU2VjdGlvbiBpbnN0ZWFkIG9mIHVzaW5nIGVpdGhlcgorIyBsaXN0IGRpcmVjdGx5Lgor
YmFzZV9wYXRoX3NlY3Rpb25zID0gWworICAnZGVzdGluYXRpb24nLAorICAnZmlsZXMnLAorICAn
aW5jbHVkZV9kaXJzJywKKyAgJ2lucHV0cycsCisgICdsaWJyYXJpZXMnLAorICAnb3V0cHV0cycs
CisgICdzb3VyY2VzJywKK10KK3BhdGhfc2VjdGlvbnMgPSBbXQorCisKK2RlZiBJc1BhdGhTZWN0
aW9uKHNlY3Rpb24pOgorICAjIElmIHNlY3Rpb24gZW5kcyBpbiBvbmUgb2YgdGhlc2UgY2hhcmFj
dGVycywgaXQncyBhcHBsaWVkIHRvIGEgc2VjdGlvbgorICAjIHdpdGhvdXQgdGhlIHRyYWlsaW5n
IGNoYXJhY3RlcnMuICAnLycgaXMgbm90YWJseSBhYnNlbnQgZnJvbSB0aGlzIGxpc3QsCisgICMg
YmVjYXVzZSB0aGVyZSdzIG5vIHdheSBmb3IgYSByZWd1bGFyIGV4cHJlc3Npb24gdG8gYmUgdHJl
YXRlZCBhcyBhIHBhdGguCisgIHdoaWxlIHNlY3Rpb25bLTE6XSBpbiAoJz0nLCAnKycsICc/Jywg
JyEnKToKKyAgICBzZWN0aW9uID0gc2VjdGlvblswOi0xXQorCisgIGlmIHNlY3Rpb24gaW4gcGF0
aF9zZWN0aW9ucyBvciBcCisgICAgIHNlY3Rpb24uZW5kc3dpdGgoJ19kaXInKSBvciBzZWN0aW9u
LmVuZHN3aXRoKCdfZGlycycpIG9yIFwKKyAgICAgc2VjdGlvbi5lbmRzd2l0aCgnX2ZpbGUnKSBv
ciBzZWN0aW9uLmVuZHN3aXRoKCdfZmlsZXMnKSBvciBcCisgICAgIHNlY3Rpb24uZW5kc3dpdGgo
J19wYXRoJykgb3Igc2VjdGlvbi5lbmRzd2l0aCgnX3BhdGhzJyk6CisgICAgcmV0dXJuIFRydWUK
KyAgcmV0dXJuIEZhbHNlCisKKworIyBiYXNlX25vbl9jb25maWd1cmFpdG9uX2tleXMgaXMgYSBs
aXN0IG9mIGtleSBuYW1lcyB0aGF0IGJlbG9uZyBpbiB0aGUgdGFyZ2V0CisjIGl0c2VsZiBhbmQg
c2hvdWxkIG5vdCBiZSBwcm9wYWdhdGVkIGludG8gaXRzIGNvbmZpZ3VyYXRpb25zLiAgSXQgaXMg
bWVyZ2VkCisjIHdpdGggYSBsaXN0IHRoYXQgY2FuIGNvbWUgZnJvbSB0aGUgZ2VuZXJhdG9yIHRv
CisjIGNyZWF0ZSBub25fY29uZmlndXJhdGlvbl9rZXlzLgorYmFzZV9ub25fY29uZmlndXJhdGlv
bl9rZXlzID0gWworICAjIFNlY3Rpb25zIHRoYXQgbXVzdCBleGlzdCBpbnNpZGUgdGFyZ2V0cyBh
bmQgbm90IGNvbmZpZ3VyYXRpb25zLgorICAnYWN0aW9ucycsCisgICdjb25maWd1cmF0aW9ucycs
CisgICdjb3BpZXMnLAorICAnZGVmYXVsdF9jb25maWd1cmF0aW9uJywKKyAgJ2RlcGVuZGVuY2ll
cycsCisgICdkZXBlbmRlbmNpZXNfb3JpZ2luYWwnLAorICAnbGlua19sYW5ndWFnZXMnLAorICAn
bGlicmFyaWVzJywKKyAgJ3Bvc3RidWlsZHMnLAorICAncHJvZHVjdF9kaXInLAorICAncHJvZHVj
dF9leHRlbnNpb24nLAorICAncHJvZHVjdF9uYW1lJywKKyAgJ3Byb2R1Y3RfcHJlZml4JywKKyAg
J3J1bGVzJywKKyAgJ3J1bl9hcycsCisgICdzb3VyY2VzJywKKyAgJ3N1cHByZXNzX3dpbGRjYXJk
JywKKyAgJ3RhcmdldF9uYW1lJywKKyAgJ3Rvb2xzZXQnLAorICAndG9vbHNldHMnLAorICAndHlw
ZScsCisgICd2YXJpYW50cycsCisKKyAgIyBTZWN0aW9ucyB0aGF0IGNhbiBiZSBmb3VuZCBpbnNp
ZGUgdGFyZ2V0cyBvciBjb25maWd1cmF0aW9ucywgYnV0IHRoYXQKKyAgIyBzaG91bGQgbm90IGJl
IHByb3BhZ2F0ZWQgZnJvbSB0YXJnZXRzIGludG8gdGhlaXIgY29uZmlndXJhdGlvbnMuCisgICd2
YXJpYWJsZXMnLAorXQorbm9uX2NvbmZpZ3VyYXRpb25fa2V5cyA9IFtdCisKKyMgS2V5cyB0aGF0
IGRvIG5vdCBiZWxvbmcgaW5zaWRlIGEgY29uZmlndXJhdGlvbiBkaWN0aW9uYXJ5LgoraW52YWxp
ZF9jb25maWd1cmF0aW9uX2tleXMgPSBbCisgICdhY3Rpb25zJywKKyAgJ2FsbF9kZXBlbmRlbnRf
c2V0dGluZ3MnLAorICAnY29uZmlndXJhdGlvbnMnLAorICAnZGVwZW5kZW5jaWVzJywKKyAgJ2Rp
cmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnLAorICAnbGlicmFyaWVzJywKKyAgJ2xpbmtfc2V0dGlu
Z3MnLAorICAnc291cmNlcycsCisgICd0YXJnZXRfbmFtZScsCisgICd0eXBlJywKK10KKworIyBD
b250cm9scyBob3cgdGhlIGdlbmVyYXRvciB3YW50IHRoZSBidWlsZCBmaWxlIHBhdGhzLgorYWJz
b2x1dGVfYnVpbGRfZmlsZV9wYXRocyA9IEZhbHNlCisKKyMgQ29udHJvbHMgd2hldGhlciBvciBu
b3QgdGhlIGdlbmVyYXRvciBzdXBwb3J0cyBtdWx0aXBsZSB0b29sc2V0cy4KK211bHRpcGxlX3Rv
b2xzZXRzID0gRmFsc2UKKworCitkZWYgR2V0SW5jbHVkZWRCdWlsZEZpbGVzKGJ1aWxkX2ZpbGVf
cGF0aCwgYXV4X2RhdGEsIGluY2x1ZGVkPU5vbmUpOgorICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFs
bCBidWlsZCBmaWxlcyBpbmNsdWRlZCBpbnRvIGJ1aWxkX2ZpbGVfcGF0aC4KKworICBUaGUgcmV0
dXJuZWQgbGlzdCB3aWxsIGNvbnRhaW4gYnVpbGRfZmlsZV9wYXRoIGFzIHdlbGwgYXMgYWxsIG90
aGVyIGZpbGVzCisgIHRoYXQgaXQgaW5jbHVkZWQsIGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVj
dGx5LiAgTm90ZSB0aGF0IHRoZSBsaXN0IG1heQorICBjb250YWluIGZpbGVzIHRoYXQgd2VyZSBp
bmNsdWRlZCBpbnRvIGEgY29uZGl0aW9uYWwgc2VjdGlvbiB0aGF0IGV2YWx1YXRlZAorICB0byBm
YWxzZSBhbmQgd2FzIG5vdCBtZXJnZWQgaW50byBidWlsZF9maWxlX3BhdGgncyBkaWN0LgorCisg
IGF1eF9kYXRhIGlzIGEgZGljdCBjb250YWluaW5nIGEga2V5IGZvciBlYWNoIGJ1aWxkIGZpbGUg
b3IgaW5jbHVkZWQgYnVpbGQKKyAgZmlsZS4gIFRob3NlIGtleXMgcHJvdmlkZSBhY2Nlc3MgdG8g
ZGljdHMgd2hvc2UgImluY2x1ZGVkIiBrZXlzIGNvbnRhaW4KKyAgbGlzdHMgb2YgYWxsIG90aGVy
IGZpbGVzIGluY2x1ZGVkIGJ5IHRoZSBidWlsZCBmaWxlLgorCisgIGluY2x1ZGVkIHNob3VsZCBi
ZSBsZWZ0IGF0IGl0cyBkZWZhdWx0IE5vbmUgdmFsdWUgYnkgZXh0ZXJuYWwgY2FsbGVycy4gIEl0
CisgIGlzIHVzZWQgZm9yIHJlY3Vyc2lvbi4KKworICBUaGUgcmV0dXJuZWQgbGlzdCB3aWxsIG5v
dCBjb250YWluIGFueSBkdXBsaWNhdGUgZW50cmllcy4gIEVhY2ggYnVpbGQgZmlsZQorICBpbiB0
aGUgbGlzdCB3aWxsIGJlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyAgIiIi
CisKKyAgaWYgaW5jbHVkZWQgPT0gTm9uZToKKyAgICBpbmNsdWRlZCA9IFtdCisKKyAgaWYgYnVp
bGRfZmlsZV9wYXRoIGluIGluY2x1ZGVkOgorICAgIHJldHVybiBpbmNsdWRlZAorCisgIGluY2x1
ZGVkLmFwcGVuZChidWlsZF9maWxlX3BhdGgpCisKKyAgZm9yIGluY2x1ZGVkX2J1aWxkX2ZpbGUg
aW4gYXV4X2RhdGFbYnVpbGRfZmlsZV9wYXRoXS5nZXQoJ2luY2x1ZGVkJywgW10pOgorICAgIEdl
dEluY2x1ZGVkQnVpbGRGaWxlcyhpbmNsdWRlZF9idWlsZF9maWxlLCBhdXhfZGF0YSwgaW5jbHVk
ZWQpCisKKyAgcmV0dXJuIGluY2x1ZGVkCisKKworZGVmIENoZWNrZWRFdmFsKGZpbGVfY29udGVu
dHMpOgorICAiIiJSZXR1cm4gdGhlIGV2YWwgb2YgYSBneXAgZmlsZS4KKworICBUaGUgZ3lwIGZp
bGUgaXMgcmVzdHJpY3RlZCB0byBkaWN0aW9uYXJpZXMgYW5kIGxpc3RzIG9ubHksIGFuZAorICBy
ZXBlYXRlZCBrZXlzIGFyZSBub3QgYWxsb3dlZC4KKworICBOb3RlIHRoYXQgdGhpcyBpcyBzbG93
ZXIgdGhhbiBldmFsKCkgaXMuCisgICIiIgorCisgIGFzdCA9IGNvbXBpbGVyLnBhcnNlKGZpbGVf
Y29udGVudHMpCisgIGFzc2VydCBpc2luc3RhbmNlKGFzdCwgTW9kdWxlKQorICBjMSA9IGFzdC5n
ZXRDaGlsZHJlbigpCisgIGFzc2VydCBjMVswXSBpcyBOb25lCisgIGFzc2VydCBpc2luc3RhbmNl
KGMxWzFdLCBTdG10KQorICBjMiA9IGMxWzFdLmdldENoaWxkcmVuKCkKKyAgYXNzZXJ0IGlzaW5z
dGFuY2UoYzJbMF0sIERpc2NhcmQpCisgIGMzID0gYzJbMF0uZ2V0Q2hpbGRyZW4oKQorICBhc3Nl
cnQgbGVuKGMzKSA9PSAxCisgIHJldHVybiBDaGVja05vZGUoYzNbMF0sIFtdKQorCisKK2RlZiBD
aGVja05vZGUobm9kZSwga2V5cGF0aCk6CisgIGlmIGlzaW5zdGFuY2Uobm9kZSwgRGljdCk6Cisg
ICAgYyA9IG5vZGUuZ2V0Q2hpbGRyZW4oKQorICAgIGRpY3QgPSB7fQorICAgIGZvciBuIGluIHJh
bmdlKDAsIGxlbihjKSwgMik6CisgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjW25dLCBDb25zdCkK
KyAgICAgIGtleSA9IGNbbl0uZ2V0Q2hpbGRyZW4oKVswXQorICAgICAgaWYga2V5IGluIGRpY3Q6
CisgICAgICAgIHJhaXNlIEtleUVycm9yLCAiS2V5ICciICsga2V5ICsgIicgcmVwZWF0ZWQgYXQg
bGV2ZWwgIiArIFwKKyAgICAgICAgICAgICAgcmVwcihsZW4oa2V5cGF0aCkgKyAxKSArICIgd2l0
aCBrZXkgcGF0aCAnIiArIFwKKyAgICAgICAgICAgICAgJy4nLmpvaW4oa2V5cGF0aCkgKyAiJyIK
KyAgICAgIGtwID0gbGlzdChrZXlwYXRoKSAgIyBNYWtlIGEgY29weSBvZiB0aGUgbGlzdCBmb3Ig
ZGVzY2VuZGluZyB0aGlzIG5vZGUuCisgICAgICBrcC5hcHBlbmQoa2V5KQorICAgICAgZGljdFtr
ZXldID0gQ2hlY2tOb2RlKGNbbiArIDFdLCBrcCkKKyAgICByZXR1cm4gZGljdAorICBlbGlmIGlz
aW5zdGFuY2Uobm9kZSwgTGlzdCk6CisgICAgYyA9IG5vZGUuZ2V0Q2hpbGRyZW4oKQorICAgIGNo
aWxkcmVuID0gW10KKyAgICBmb3IgaW5kZXgsIGNoaWxkIGluIGVudW1lcmF0ZShjKToKKyAgICAg
IGtwID0gbGlzdChrZXlwYXRoKSAgIyBDb3B5IGxpc3QuCisgICAgICBrcC5hcHBlbmQocmVwcihp
bmRleCkpCisgICAgICBjaGlsZHJlbi5hcHBlbmQoQ2hlY2tOb2RlKGNoaWxkLCBrcCkpCisgICAg
cmV0dXJuIGNoaWxkcmVuCisgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBDb25zdCk6CisgICAgcmV0
dXJuIG5vZGUuZ2V0Q2hpbGRyZW4oKVswXQorICBlbHNlOgorICAgIHJhaXNlIFR5cGVFcnJvciwg
IlVua25vd24gQVNUIG5vZGUgYXQga2V5IHBhdGggJyIgKyAnLicuam9pbihrZXlwYXRoKSArIFwK
KyAgICAgICAgICInOiAiICsgcmVwcihub2RlKQorCisKK2RlZiBMb2FkT25lQnVpbGRGaWxlKGJ1
aWxkX2ZpbGVfcGF0aCwgZGF0YSwgYXV4X2RhdGEsIHZhcmlhYmxlcywgaW5jbHVkZXMsCisgICAg
ICAgICAgICAgICAgICAgICBpc190YXJnZXQsIGNoZWNrKToKKyAgaWYgYnVpbGRfZmlsZV9wYXRo
IGluIGRhdGE6CisgICAgcmV0dXJuIGRhdGFbYnVpbGRfZmlsZV9wYXRoXQorCisgIGlmIG9zLnBh
dGguZXhpc3RzKGJ1aWxkX2ZpbGVfcGF0aCk6CisgICAgYnVpbGRfZmlsZV9jb250ZW50cyA9IG9w
ZW4oYnVpbGRfZmlsZV9wYXRoKS5yZWFkKCkKKyAgZWxzZToKKyAgICByYWlzZSBFeGNlcHRpb24o
IiVzIG5vdCBmb3VuZCAoY3dkOiAlcykiICUgKGJ1aWxkX2ZpbGVfcGF0aCwgb3MuZ2V0Y3dkKCkp
KQorCisgIGJ1aWxkX2ZpbGVfZGF0YSA9IE5vbmUKKyAgdHJ5OgorICAgIGlmIGNoZWNrOgorICAg
ICAgYnVpbGRfZmlsZV9kYXRhID0gQ2hlY2tlZEV2YWwoYnVpbGRfZmlsZV9jb250ZW50cykKKyAg
ICBlbHNlOgorICAgICAgYnVpbGRfZmlsZV9kYXRhID0gZXZhbChidWlsZF9maWxlX2NvbnRlbnRz
LCB7J19fYnVpbHRpbnNfXyc6IE5vbmV9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
b25lKQorICBleGNlcHQgU3ludGF4RXJyb3IsIGU6CisgICAgZS5maWxlbmFtZSA9IGJ1aWxkX2Zp
bGVfcGF0aAorICAgIHJhaXNlCisgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CisgICAgZ3lwLmNvbW1v
bi5FeGNlcHRpb25BcHBlbmQoZSwgJ3doaWxlIHJlYWRpbmcgJyArIGJ1aWxkX2ZpbGVfcGF0aCkK
KyAgICByYWlzZQorCisgIGRhdGFbYnVpbGRfZmlsZV9wYXRoXSA9IGJ1aWxkX2ZpbGVfZGF0YQor
ICBhdXhfZGF0YVtidWlsZF9maWxlX3BhdGhdID0ge30KKworICAjIFNjYW4gZm9yIGluY2x1ZGVz
IGFuZCBtZXJnZSB0aGVtIGluLgorICB0cnk6CisgICAgaWYgaXNfdGFyZ2V0OgorICAgICAgTG9h
ZEJ1aWxkRmlsZUluY2x1ZGVzSW50b0RpY3QoYnVpbGRfZmlsZV9kYXRhLCBidWlsZF9maWxlX3Bh
dGgsIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXhfZGF0YSwg
dmFyaWFibGVzLCBpbmNsdWRlcywgY2hlY2spCisgICAgZWxzZToKKyAgICAgIExvYWRCdWlsZEZp
bGVJbmNsdWRlc0ludG9EaWN0KGJ1aWxkX2ZpbGVfZGF0YSwgYnVpbGRfZmlsZV9wYXRoLCBkYXRh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV4X2RhdGEsIHZhcmlhYmxl
cywgTm9uZSwgY2hlY2spCisgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CisgICAgZ3lwLmNvbW1vbi5F
eGNlcHRpb25BcHBlbmQoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2hpbGUg
cmVhZGluZyBpbmNsdWRlcyBvZiAnICsgYnVpbGRfZmlsZV9wYXRoKQorICAgIHJhaXNlCisKKyAg
cmV0dXJuIGJ1aWxkX2ZpbGVfZGF0YQorCisKK2RlZiBMb2FkQnVpbGRGaWxlSW5jbHVkZXNJbnRv
RGljdChzdWJkaWN0LCBzdWJkaWN0X3BhdGgsIGRhdGEsIGF1eF9kYXRhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcywgaW5jbHVkZXMsIGNoZWNrKToKKyAgaW5j
bHVkZXNfbGlzdCA9IFtdCisgIGlmIGluY2x1ZGVzICE9IE5vbmU6CisgICAgaW5jbHVkZXNfbGlz
dC5leHRlbmQoaW5jbHVkZXMpCisgIGlmICdpbmNsdWRlcycgaW4gc3ViZGljdDoKKyAgICBmb3Ig
aW5jbHVkZSBpbiBzdWJkaWN0WydpbmNsdWRlcyddOgorICAgICAgIyAiaW5jbHVkZSIgaXMgc3Bl
Y2lmaWVkIHJlbGF0aXZlIHRvIHN1YmRpY3RfcGF0aCwgc28gY29tcHV0ZSB0aGUgcmVhbAorICAg
ICAgIyBwYXRoIHRvIGluY2x1ZGUgYnkgYXBwZW5kaW5nIHRoZSBwcm92aWRlZCAiaW5jbHVkZSIg
dG8gdGhlIGRpcmVjdG9yeQorICAgICAgIyBpbiB3aGljaCBzdWJkaWN0X3BhdGggcmVzaWRlcy4K
KyAgICAgIHJlbGF0aXZlX2luY2x1ZGUgPSBcCisgICAgICAgICAgb3MucGF0aC5ub3JtcGF0aChv
cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN1YmRpY3RfcGF0aCksIGluY2x1ZGUpKQorICAg
ICAgaW5jbHVkZXNfbGlzdC5hcHBlbmQocmVsYXRpdmVfaW5jbHVkZSkKKyAgICAjIFVuaG9vayB0
aGUgaW5jbHVkZXMgbGlzdCwgaXQncyBubyBsb25nZXIgbmVlZGVkLgorICAgIGRlbCBzdWJkaWN0
WydpbmNsdWRlcyddCisKKyAgIyBNZXJnZSBpbiB0aGUgaW5jbHVkZWQgZmlsZXMuCisgIGZvciBp
bmNsdWRlIGluIGluY2x1ZGVzX2xpc3Q6CisgICAgaWYgbm90ICdpbmNsdWRlZCcgaW4gYXV4X2Rh
dGFbc3ViZGljdF9wYXRoXToKKyAgICAgIGF1eF9kYXRhW3N1YmRpY3RfcGF0aF1bJ2luY2x1ZGVk
J10gPSBbXQorICAgIGF1eF9kYXRhW3N1YmRpY3RfcGF0aF1bJ2luY2x1ZGVkJ10uYXBwZW5kKGlu
Y2x1ZGUpCisKKyAgICBneXAuRGVidWdPdXRwdXQoZ3lwLkRFQlVHX0lOQ0xVREVTLCAiTG9hZGlu
ZyBJbmNsdWRlZCBGaWxlOiAnJXMnIiAlIGluY2x1ZGUpCisKKyAgICBNZXJnZURpY3RzKHN1YmRp
Y3QsCisgICAgICAgICAgICAgICBMb2FkT25lQnVpbGRGaWxlKGluY2x1ZGUsIGRhdGEsIGF1eF9k
YXRhLCB2YXJpYWJsZXMsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZh
bHNlLCBjaGVjayksCisgICAgICAgICAgICAgICBzdWJkaWN0X3BhdGgsIGluY2x1ZGUpCisKKyAg
IyBSZWN1cnNlIGludG8gc3ViZGljdGlvbmFyaWVzLgorICBmb3IgaywgdiBpbiBzdWJkaWN0Lml0
ZXJpdGVtcygpOgorICAgIGlmIHYuX19jbGFzc19fID09IGRpY3Q6CisgICAgICBMb2FkQnVpbGRG
aWxlSW5jbHVkZXNJbnRvRGljdCh2LCBzdWJkaWN0X3BhdGgsIGRhdGEsIGF1eF9kYXRhLCB2YXJp
YWJsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBjaGVjaykK
KyAgICBlbGlmIHYuX19jbGFzc19fID09IGxpc3Q6CisgICAgICBMb2FkQnVpbGRGaWxlSW5jbHVk
ZXNJbnRvTGlzdCh2LCBzdWJkaWN0X3BhdGgsIGRhdGEsIGF1eF9kYXRhLCB2YXJpYWJsZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVjaykKKworCisjIFRoaXMgcmVj
dXJzZXMgaW50byBsaXN0cyBzbyB0aGF0IGl0IGNhbiBsb29rIGZvciBkaWN0cy4KK2RlZiBMb2Fk
QnVpbGRGaWxlSW5jbHVkZXNJbnRvTGlzdChzdWJsaXN0LCBzdWJsaXN0X3BhdGgsIGRhdGEsIGF1
eF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcywgY2hl
Y2spOgorICBmb3IgaXRlbSBpbiBzdWJsaXN0OgorICAgIGlmIGl0ZW0uX19jbGFzc19fID09IGRp
Y3Q6CisgICAgICBMb2FkQnVpbGRGaWxlSW5jbHVkZXNJbnRvRGljdChpdGVtLCBzdWJsaXN0X3Bh
dGgsIGRhdGEsIGF1eF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyaWFibGVzLCBOb25lLCBjaGVjaykKKyAgICBlbGlmIGl0ZW0uX19jbGFzc19fID09IGxpc3Q6
CisgICAgICBMb2FkQnVpbGRGaWxlSW5jbHVkZXNJbnRvTGlzdChpdGVtLCBzdWJsaXN0X3BhdGgs
IGRhdGEsIGF1eF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFy
aWFibGVzLCBjaGVjaykKKworIyBQcm9jZXNzZXMgdG9vbHNldHMgaW4gYWxsIHRoZSB0YXJnZXRz
LiBUaGlzIHJlY3Vyc2VzIGludG8gY29uZGl0aW9uIGVudHJpZXMKKyMgc2luY2UgdGhleSBjYW4g
Y29udGFpbiB0b29sc2V0cyBhcyB3ZWxsLgorZGVmIFByb2Nlc3NUb29sc2V0c0luRGljdChkYXRh
KToKKyAgaWYgJ3RhcmdldHMnIGluIGRhdGE6CisgICAgdGFyZ2V0X2xpc3QgPSBkYXRhWyd0YXJn
ZXRzJ10KKyAgICBuZXdfdGFyZ2V0X2xpc3QgPSBbXQorICAgIGZvciB0YXJnZXQgaW4gdGFyZ2V0
X2xpc3Q6CisgICAgICBnbG9iYWwgbXVsdGlwbGVfdG9vbHNldHMKKyAgICAgIGlmIG11bHRpcGxl
X3Rvb2xzZXRzOgorICAgICAgICB0b29sc2V0cyA9IHRhcmdldC5nZXQoJ3Rvb2xzZXRzJywgWyd0
YXJnZXQnXSkKKyAgICAgIGVsc2U6CisgICAgICAgIHRvb2xzZXRzID0gWyd0YXJnZXQnXQorICAg
ICAgaWYgbGVuKHRvb2xzZXRzKSA+IDA6CisgICAgICAgICMgT3B0aW1pemF0aW9uOiBvbmx5IGRv
IGNvcGllcyBpZiBtb3JlIHRoYW4gb25lIHRvb2xzZXQgaXMgc3BlY2lmaWVkLgorICAgICAgICBm
b3IgYnVpbGQgaW4gdG9vbHNldHNbMTpdOgorICAgICAgICAgIG5ld190YXJnZXQgPSBjb3B5LmRl
ZXBjb3B5KHRhcmdldCkKKyAgICAgICAgICBuZXdfdGFyZ2V0Wyd0b29sc2V0J10gPSBidWlsZAor
ICAgICAgICAgIG5ld190YXJnZXRfbGlzdC5hcHBlbmQobmV3X3RhcmdldCkKKyAgICAgICAgdGFy
Z2V0Wyd0b29sc2V0J10gPSB0b29sc2V0c1swXQorICAgICAgICBuZXdfdGFyZ2V0X2xpc3QuYXBw
ZW5kKHRhcmdldCkKKyAgICBkYXRhWyd0YXJnZXRzJ10gPSBuZXdfdGFyZ2V0X2xpc3QKKyAgaWYg
J2NvbmRpdGlvbnMnIGluIGRhdGE6CisgICAgZm9yIGNvbmRpdGlvbiBpbiBkYXRhWydjb25kaXRp
b25zJ106CisgICAgICBpZiBpc2luc3RhbmNlKGNvbmRpdGlvbiwgbGlzdCk6CisgICAgICAgIGZv
ciBjb25kaXRpb25fZGljdCBpbiBjb25kaXRpb25bMTpdOgorICAgICAgICAgIFByb2Nlc3NUb29s
c2V0c0luRGljdChjb25kaXRpb25fZGljdCkKKworCisjIFRPRE8obWFyayk6IEkgZG9uJ3QgbG92
ZSB0aGlzIG5hbWUuICBJdCBqdXN0IG1lYW5zIHRoYXQgaXQncyBnb2luZyB0byBsb2FkCisjIGEg
YnVpbGQgZmlsZSB0aGF0IGNvbnRhaW5zIHRhcmdldHMgYW5kIGlzIGV4cGVjdGVkIHRvIHByb3Zp
ZGUgYSB0YXJnZXRzIGRpY3QKKyMgdGhhdCBjb250YWlucyB0aGUgdGFyZ2V0cy4uLgorZGVmIExv
YWRUYXJnZXRCdWlsZEZpbGUoYnVpbGRfZmlsZV9wYXRoLCBkYXRhLCBhdXhfZGF0YSwgdmFyaWFi
bGVzLCBpbmNsdWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoLCBjaGVjayk6Cisg
IGdsb2JhbCBhYnNvbHV0ZV9idWlsZF9maWxlX3BhdGhzCisKKyAgIyBJZiBkZXB0aCBpcyBzZXQs
IHByZWRlZmluZSB0aGUgREVQVEggdmFyaWFibGUgdG8gYmUgYSByZWxhdGl2ZSBwYXRoIGZyb20K
KyAgIyB0aGlzIGJ1aWxkIGZpbGUncyBkaXJlY3RvcnkgdG8gdGhlIGRpcmVjdG9yeSBpZGVudGlm
aWVkIGJ5IGRlcHRoLgorICBpZiBkZXB0aDoKKyAgICAjIFRPRE8oZGdsYXprb3YpIFRoZSBiYWNr
c2xhc2gvZm9yd2FyZC1zbGFzaCByZXBsYWNlbWVudCBhdCB0aGUgZW5kIGlzIGEKKyAgICAjIHRl
bXBvcmFyeSBtZWFzdXJlLiBUaGlzIHNob3VsZCByZWFsbHkgYmUgYWRkcmVzc2VkIGJ5IGtlZXBp
bmcgYWxsIHBhdGhzCisgICAgIyBpbiBQT1NJWCB1bnRpbCBhY3R1YWwgcHJvamVjdCBnZW5lcmF0
aW9uLgorICAgIGQgPSBneXAuY29tbW9uLlJlbGF0aXZlUGF0aChkZXB0aCwgb3MucGF0aC5kaXJu
YW1lKGJ1aWxkX2ZpbGVfcGF0aCkpCisgICAgaWYgZCA9PSAnJzoKKyAgICAgIHZhcmlhYmxlc1sn
REVQVEgnXSA9ICcuJworICAgIGVsc2U6CisgICAgICB2YXJpYWJsZXNbJ0RFUFRIJ10gPSBkLnJl
cGxhY2UoJ1xcJywgJy8nKQorCisgICMgSWYgdGhlIGdlbmVyYXRvciBuZWVkcyBhYnNvbHVlIHBh
dGhzLCB0aGVuIGRvIHNvLgorICBpZiBhYnNvbHV0ZV9idWlsZF9maWxlX3BhdGhzOgorICAgIGJ1
aWxkX2ZpbGVfcGF0aCA9IG9zLnBhdGguYWJzcGF0aChidWlsZF9maWxlX3BhdGgpCisKKyAgaWYg
YnVpbGRfZmlsZV9wYXRoIGluIGRhdGFbJ3RhcmdldF9idWlsZF9maWxlcyddOgorICAgICMgQWxy
ZWFkeSBsb2FkZWQuCisgICAgcmV0dXJuCisgIGRhdGFbJ3RhcmdldF9idWlsZF9maWxlcyddLmFk
ZChidWlsZF9maWxlX3BhdGgpCisKKyAgZ3lwLkRlYnVnT3V0cHV0KGd5cC5ERUJVR19JTkNMVURF
UywKKyAgICAgICAgICAgICAgICAgICJMb2FkaW5nIFRhcmdldCBCdWlsZCBGaWxlICclcyciICUg
YnVpbGRfZmlsZV9wYXRoKQorCisgIGJ1aWxkX2ZpbGVfZGF0YSA9IExvYWRPbmVCdWlsZEZpbGUo
YnVpbGRfZmlsZV9wYXRoLCBkYXRhLCBhdXhfZGF0YSwgdmFyaWFibGVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzLCBUcnVlLCBjaGVjaykKKworICAjIFN0
b3JlIERFUFRIIGZvciBsYXRlciB1c2UgaW4gZ2VuZXJhdG9ycy4KKyAgYnVpbGRfZmlsZV9kYXRh
WydfREVQVEgnXSA9IGRlcHRoCisKKyAgIyBTZXQgdXAgdGhlIGluY2x1ZGVkX2ZpbGVzIGtleSBp
bmRpY2F0aW5nIHdoaWNoIC5neXAgZmlsZXMgY29udHJpYnV0ZWQgdG8KKyAgIyB0aGlzIHRhcmdl
dCBkaWN0LgorICBpZiAnaW5jbHVkZWRfZmlsZXMnIGluIGJ1aWxkX2ZpbGVfZGF0YToKKyAgICBy
YWlzZSBLZXlFcnJvciwgYnVpbGRfZmlsZV9wYXRoICsgJyBtdXN0IG5vdCBjb250YWluIGluY2x1
ZGVkX2ZpbGVzIGtleScKKworICBpbmNsdWRlZCA9IEdldEluY2x1ZGVkQnVpbGRGaWxlcyhidWls
ZF9maWxlX3BhdGgsIGF1eF9kYXRhKQorICBidWlsZF9maWxlX2RhdGFbJ2luY2x1ZGVkX2ZpbGVz
J10gPSBbXQorICBmb3IgaW5jbHVkZWRfZmlsZSBpbiBpbmNsdWRlZDoKKyAgICAjIGluY2x1ZGVk
X2ZpbGUgaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBidXQgaXQgbmVlZHMg
dG8KKyAgICAjIGJlIG1hZGUgcmVsYXRpdmUgdG8gYnVpbGRfZmlsZV9wYXRoJ3MgZGlyZWN0b3J5
LgorICAgIGluY2x1ZGVkX3JlbGF0aXZlID0gXAorICAgICAgICBneXAuY29tbW9uLlJlbGF0aXZl
UGF0aChpbmNsdWRlZF9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5w
YXRoLmRpcm5hbWUoYnVpbGRfZmlsZV9wYXRoKSkKKyAgICBidWlsZF9maWxlX2RhdGFbJ2luY2x1
ZGVkX2ZpbGVzJ10uYXBwZW5kKGluY2x1ZGVkX3JlbGF0aXZlKQorCisgIFByb2Nlc3NUb29sc2V0
c0luRGljdChidWlsZF9maWxlX2RhdGEpCisKKyAgIyBBcHBseSAicHJlIi8iZWFybHkiIHZhcmlh
YmxlIGV4cGFuc2lvbnMgYW5kIGNvbmRpdGlvbiBldmFsdWF0aW9ucy4KKyAgUHJvY2Vzc1Zhcmlh
Ymxlc0FuZENvbmRpdGlvbnNJbkRpY3QoYnVpbGRfZmlsZV9kYXRhLCBGYWxzZSwgdmFyaWFibGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9maWxlX3BhdGgp
CisKKyAgIyBMb29rIGF0IGVhY2ggcHJvamVjdCdzIHRhcmdldF9kZWZhdWx0cyBkaWN0LCBhbmQg
bWVyZ2Ugc2V0dGluZ3MgaW50bworICAjIHRhcmdldHMuCisgIGlmICd0YXJnZXRfZGVmYXVsdHMn
IGluIGJ1aWxkX2ZpbGVfZGF0YToKKyAgICBpbmRleCA9IDAKKyAgICBpZiAndGFyZ2V0cycgaW4g
YnVpbGRfZmlsZV9kYXRhOgorICAgICAgd2hpbGUgaW5kZXggPCBsZW4oYnVpbGRfZmlsZV9kYXRh
Wyd0YXJnZXRzJ10pOgorICAgICAgICAjIFRoaXMgcHJvY2VkdXJlIG5lZWRzIHRvIGdpdmUgdGhl
IGltcHJlc3Npb24gdGhhdCB0YXJnZXRfZGVmYXVsdHMgaXMKKyAgICAgICAgIyB1c2VkIGFzIGRl
ZmF1bHRzLCBhbmQgdGhlIGluZGl2aWR1YWwgdGFyZ2V0cyBpbmhlcml0IGZyb20gdGhhdC4KKyAg
ICAgICAgIyBUaGUgaW5kaXZpZHVhbCB0YXJnZXRzIG5lZWQgdG8gYmUgbWVyZ2VkIGludG8gdGhl
IGRlZmF1bHRzLiAgTWFrZQorICAgICAgICAjIGEgZGVlcCBjb3B5IG9mIHRoZSBkZWZhdWx0cyBm
b3IgZWFjaCB0YXJnZXQsIG1lcmdlIHRoZSB0YXJnZXQgZGljdAorICAgICAgICAjIGFzIGZvdW5k
IGluIHRoZSBpbnB1dCBmaWxlIGludG8gdGhhdCBjb3B5LCBhbmQgdGhlbiBob29rIHVwIHRoZQor
ICAgICAgICAjIGNvcHkgd2l0aCB0aGUgdGFyZ2V0LXNwZWNpZmljIGRhdGEgbWVyZ2VkIGludG8g
aXQgYXMgdGhlIHJlcGxhY2VtZW50CisgICAgICAgICMgdGFyZ2V0IGRpY3QuCisgICAgICAgIG9s
ZF90YXJnZXRfZGljdCA9IGJ1aWxkX2ZpbGVfZGF0YVsndGFyZ2V0cyddW2luZGV4XQorICAgICAg
ICBuZXdfdGFyZ2V0X2RpY3QgPSBjb3B5LmRlZXBjb3B5KGJ1aWxkX2ZpbGVfZGF0YVsndGFyZ2V0
X2RlZmF1bHRzJ10pCisgICAgICAgIE1lcmdlRGljdHMobmV3X3RhcmdldF9kaWN0LCBvbGRfdGFy
Z2V0X2RpY3QsCisgICAgICAgICAgICAgICAgICAgYnVpbGRfZmlsZV9wYXRoLCBidWlsZF9maWxl
X3BhdGgpCisgICAgICAgIGJ1aWxkX2ZpbGVfZGF0YVsndGFyZ2V0cyddW2luZGV4XSA9IG5ld190
YXJnZXRfZGljdAorICAgICAgICBpbmRleCA9IGluZGV4ICsgMQorICAgIGVsc2U6CisgICAgICBy
YWlzZSBFeGNlcHRpb24sIFwKKyAgICAgICAgICAgICJVbmFibGUgdG8gZmluZCB0YXJnZXRzIGlu
IGJ1aWxkIGZpbGUgJXMiICUgYnVpbGRfZmlsZV9wYXRoCisKKyAgICAjIE5vIGxvbmdlciBuZWVk
ZWQuCisgICAgZGVsIGJ1aWxkX2ZpbGVfZGF0YVsndGFyZ2V0X2RlZmF1bHRzJ10KKworICAjIExv
b2sgZm9yIGRlcGVuZGVuY2llcy4gIFRoaXMgbWVhbnMgdGhhdCBkZXBlbmRlbmN5IHJlc29sdXRp
b24gb2NjdXJzCisgICMgYWZ0ZXIgInByZSIgY29uZGl0aW9uYWxzIGFuZCB2YXJpYWJsZSBleHBh
bnNpb24sIGJ1dCBiZWZvcmUgInBvc3QiIC0KKyAgIyBpbiBvdGhlciB3b3JkcywgeW91IGNhbid0
IHB1dCBhICJkZXBlbmRlbmNpZXMiIHNlY3Rpb24gaW5zaWRlIGEgInBvc3QiCisgICMgY29uZGl0
aW9uYWwgd2l0aGluIGEgdGFyZ2V0LgorCisgIGlmICd0YXJnZXRzJyBpbiBidWlsZF9maWxlX2Rh
dGE6CisgICAgZm9yIHRhcmdldF9kaWN0IGluIGJ1aWxkX2ZpbGVfZGF0YVsndGFyZ2V0cyddOgor
ICAgICAgaWYgJ2RlcGVuZGVuY2llcycgbm90IGluIHRhcmdldF9kaWN0OgorICAgICAgICBjb250
aW51ZQorICAgICAgZm9yIGRlcGVuZGVuY3kgaW4gdGFyZ2V0X2RpY3RbJ2RlcGVuZGVuY2llcydd
OgorICAgICAgICBvdGhlcl9idWlsZF9maWxlID0gXAorICAgICAgICAgICAgZ3lwLmNvbW1vbi5S
ZXNvbHZlVGFyZ2V0KGJ1aWxkX2ZpbGVfcGF0aCwgZGVwZW5kZW5jeSwgTm9uZSlbMF0KKyAgICAg
ICAgdHJ5OgorICAgICAgICAgIExvYWRUYXJnZXRCdWlsZEZpbGUob3RoZXJfYnVpbGRfZmlsZSwg
ZGF0YSwgYXV4X2RhdGEsIHZhcmlhYmxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluY2x1ZGVzLCBkZXB0aCwgY2hlY2spCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Cisg
ICAgICAgICAgZ3lwLmNvbW1vbi5FeGNlcHRpb25BcHBlbmQoCisgICAgICAgICAgICBlLCAnd2hp
bGUgbG9hZGluZyBkZXBlbmRlbmNpZXMgb2YgJXMnICUgYnVpbGRfZmlsZV9wYXRoKQorICAgICAg
ICAgIHJhaXNlCisKKyAgcmV0dXJuIGRhdGEKKworCisjIExvb2sgZm9yIHRoZSBicmFja2V0IHRo
YXQgbWF0Y2hlcyB0aGUgZmlyc3QgYnJhY2tldCBzZWVuIGluIGEKKyMgc3RyaW5nLCBhbmQgcmV0
dXJuIHRoZSBzdGFydCBhbmQgZW5kIGFzIGEgdHVwbGUuICBGb3IgZXhhbXBsZSwgaWYKKyMgdGhl
IGlucHV0IGlzIHNvbWV0aGluZyBsaWtlICI8KGZvbyA8KGJhcikpIGJsYWgiLCB0aGVuIGl0IHdv
dWxkCisjIHJldHVybiAoMSwgMTMpLCBpbmRpY2F0aW5nIHRoZSBlbnRpcmUgc3RyaW5nIGV4Y2Vw
dCBmb3IgdGhlIGxlYWRpbmcKKyMgIjwiIGFuZCB0cmFpbGluZyAiIGJsYWgiLgorZGVmIEZpbmRF
bmNsb3NpbmdCcmFja2V0R3JvdXAoaW5wdXQpOgorICBicmFja2V0cyA9IHsgJ30nOiAneycsCisg
ICAgICAgICAgICAgICAnXSc6ICdbJywKKyAgICAgICAgICAgICAgICcpJzogJygnLCB9CisgIHN0
YWNrID0gW10KKyAgY291bnQgPSAwCisgIHN0YXJ0ID0gLTEKKyAgZm9yIGNoYXIgaW4gaW5wdXQ6
CisgICAgaWYgY2hhciBpbiBicmFja2V0cy52YWx1ZXMoKToKKyAgICAgIHN0YWNrLmFwcGVuZChj
aGFyKQorICAgICAgaWYgc3RhcnQgPT0gLTE6CisgICAgICAgIHN0YXJ0ID0gY291bnQKKyAgICBp
ZiBjaGFyIGluIGJyYWNrZXRzLmtleXMoKToKKyAgICAgIHRyeToKKyAgICAgICAgbGFzdF9icmFj
a2V0ID0gc3RhY2sucG9wKCkKKyAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICByZXR1
cm4gKC0xLCAtMSkKKyAgICAgIGlmIGxhc3RfYnJhY2tldCAhPSBicmFja2V0c1tjaGFyXToKKyAg
ICAgICAgcmV0dXJuICgtMSwgLTEpCisgICAgICBpZiBsZW4oc3RhY2spID09IDA6CisgICAgICAg
IHJldHVybiAoc3RhcnQsIGNvdW50ICsgMSkKKyAgICBjb3VudCA9IGNvdW50ICsgMQorICByZXR1
cm4gKC0xLCAtMSkKKworCitjYW5vbmljYWxfaW50X3JlID0gcmUuY29tcGlsZSgnXigwfC0/WzEt
OV1bMC05XSopJCcpCisKKworZGVmIElzU3RyQ2Fub25pY2FsSW50KHN0cmluZyk6CisgICIiIlJl
dHVybnMgVHJ1ZSBpZiB8c3RyaW5nfCBpcyBpbiBpdHMgY2Fub25pY2FsIGludGVnZXIgZm9ybS4K
KworICBUaGUgY2Fub25pY2FsIGZvcm0gaXMgc3VjaCB0aGF0IHN0cihpbnQoc3RyaW5nKSkgPT0g
c3RyaW5nLgorICAiIiIKKyAgaWYgbm90IGlzaW5zdGFuY2Uoc3RyaW5nLCBzdHIpIG9yIG5vdCBj
YW5vbmljYWxfaW50X3JlLm1hdGNoKHN0cmluZyk6CisgICAgcmV0dXJuIEZhbHNlCisKKyAgcmV0
dXJuIFRydWUKKworCitlYXJseV92YXJpYWJsZV9yZSA9IHJlLmNvbXBpbGUoJyg/UDxyZXBsYWNl
Pig/UDx0eXBlPjwoKCE/QD8pfFx8KT8pJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdcKCg/UDxpc19hcnJheT5ccypcWz8pJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcoP1A8Y29udGVudD4uKj8pKFxdPylcKSknKQorbGF0ZV92YXJpYWJsZV9yZSA9IHJlLmNvbXBp
bGUoJyg/UDxyZXBsYWNlPig/UDx0eXBlPj4oKCE/QD8pfFx8KT8pJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1woKD9QPGlzX2FycmF5PlxzKlxbPyknCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnKD9QPGNvbnRlbnQ+Lio/KShcXT8pXCkpJykKKworIyBHbG9iYWwgY2Fj
aGUgb2YgcmVzdWx0cyBmcm9tIHJ1bm5pbmcgY29tbWFuZHMgc28gdGhleSBkb24ndCBoYXZlIHRv
IGJlIHJ1bgorIyBtb3JlIHRoZW4gb25jZS4KK2NhY2hlZF9jb21tYW5kX3Jlc3VsdHMgPSB7fQor
CisKK2RlZiBGaXh1cFBsYXRmb3JtQ29tbWFuZChjbWQpOgorICBpZiBzeXMucGxhdGZvcm0gPT0g
J3dpbjMyJzoKKyAgICBpZiB0eXBlKGNtZCkgPT0gbGlzdDoKKyAgICAgIGNtZCA9IFtyZS5zdWIo
J15jYXQgJywgJ3R5cGUgJywgY21kWzBdKV0gKyBjbWRbMTpdCisgICAgZWxzZToKKyAgICAgIGNt
ZCA9IHJlLnN1YignXmNhdCAnLCAndHlwZSAnLCBjbWQpCisgIHJldHVybiBjbWQKKworCitkZWYg
RXhwYW5kVmFyaWFibGVzKGlucHV0LCBpc19sYXRlLCB2YXJpYWJsZXMsIGJ1aWxkX2ZpbGUpOgor
ICAjIExvb2sgZm9yIHRoZSBwYXR0ZXJuIHRoYXQgZ2V0cyBleHBhbmRlZCBpbnRvIHZhcmlhYmxl
cworICBpZiBub3QgaXNfbGF0ZToKKyAgICB2YXJpYWJsZV9yZSA9IGVhcmx5X3ZhcmlhYmxlX3Jl
CisgICAgZXhwYW5zaW9uX3N5bWJvbCA9ICc8JworICBlbHNlOgorICAgIHZhcmlhYmxlX3JlID0g
bGF0ZV92YXJpYWJsZV9yZQorICAgIGV4cGFuc2lvbl9zeW1ib2wgPSAnPicKKworICBpbnB1dF9z
dHIgPSBzdHIoaW5wdXQpCisgICMgRG8gYSBxdWljayBzY2FuIHRvIGRldGVybWluZSBpZiBhbiBl
eHBlbnNpdmUgcmVnZXggc2VhcmNoIGlzIHdhcnJhbnRlZC4KKyAgaWYgZXhwYW5zaW9uX3N5bWJv
bCBpbiBpbnB1dF9zdHI6CisgICAgIyBHZXQgdGhlIGVudGlyZSBsaXN0IG9mIG1hdGNoZXMgYXMg
YSBsaXN0IG9mIE1hdGNoT2JqZWN0IGluc3RhbmNlcy4KKyAgICAjICh1c2luZyBmaW5kYWxsIGhl
cmUgd291bGQgcmV0dXJuIHN0cmluZ3MgaW5zdGVhZCBvZiBNYXRjaE9iamVjdHMpLgorICAgIG1h
dGNoZXMgPSBbbWF0Y2ggZm9yIG1hdGNoIGluIHZhcmlhYmxlX3JlLmZpbmRpdGVyKGlucHV0X3N0
cildCisgIGVsc2U6CisgICAgbWF0Y2hlcyA9IE5vbmUKKworICBvdXRwdXQgPSBpbnB1dF9zdHIK
KyAgaWYgbWF0Y2hlczoKKyAgICAjIFJldmVyc2UgdGhlIGxpc3Qgb2YgbWF0Y2hlcyBzbyB0aGF0
IHJlcGxhY2VtZW50cyBhcmUgZG9uZSByaWdodC10by1sZWZ0LgorICAgICMgVGhhdCBlbnN1cmVz
IHRoYXQgZWFybGllciByZXBsYWNlbWVudHMgd29uJ3QgbWVzcyB1cCB0aGUgc3RyaW5nIGluIGEK
KyAgICAjIHdheSB0aGF0IGNhdXNlcyBsYXRlciBjYWxscyB0byBmaW5kIHRoZSBlYXJsaWVyIHN1
YnN0aXR1dGVkIHRleHQgaW5zdGVhZAorICAgICMgb2Ygd2hhdCdzIGludGVuZGVkIGZvciByZXBs
YWNlbWVudC4KKyAgICBtYXRjaGVzLnJldmVyc2UoKQorICAgIGZvciBtYXRjaF9ncm91cCBpbiBt
YXRjaGVzOgorICAgICAgbWF0Y2ggPSBtYXRjaF9ncm91cC5ncm91cGRpY3QoKQorICAgICAgZ3lw
LkRlYnVnT3V0cHV0KGd5cC5ERUJVR19WQVJJQUJMRVMsCisgICAgICAgICAgICAgICAgICAgICAg
Ik1hdGNoZXM6ICVzIiAlIHJlcHIobWF0Y2gpKQorICAgICAgIyBtYXRjaFsncmVwbGFjZSddIGlz
IHRoZSBzdWJzdHJpbmcgdG8gbG9vayBmb3IsIG1hdGNoWyd0eXBlJ10KKyAgICAgICMgaXMgdGhl
IGNoYXJhY3RlciBjb2RlIGZvciB0aGUgcmVwbGFjZW1lbnQgdHlwZSAoPCA+IDwhID4hIDx8ID58
IDxACisgICAgICAjID5AIDwhQCA+IUApLCBtYXRjaFsnaXNfYXJyYXknXSBjb250YWlucyBhICdb
JyBmb3IgY29tbWFuZAorICAgICAgIyBhcnJheXMsIGFuZCBtYXRjaFsnY29udGVudCddIGlzIHRo
ZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSAoPCA+KQorICAgICAgIyBvciBjb21tYW5kIHRvIHJ1biAo
PCEgPiEpLgorCisgICAgICAjIHJ1bl9jb21tYW5kIGlzIHRydWUgaWYgYSAhIHZhcmlhbnQgaXMg
dXNlZC4KKyAgICAgIHJ1bl9jb21tYW5kID0gJyEnIGluIG1hdGNoWyd0eXBlJ10KKworICAgICAg
IyBmaWxlX2xpc3QgaXMgdHJ1ZSBpZiBhIHwgdmFyaWFudCBpcyB1c2VkLgorICAgICAgZmlsZV9s
aXN0ID0gJ3wnIGluIG1hdGNoWyd0eXBlJ10KKworICAgICAgIyBDYXB0dXJlIHRoZXNlIG5vdyBz
byB3ZSBjYW4gYWRqdXN0IHRoZW0gbGF0ZXIuCisgICAgICByZXBsYWNlX3N0YXJ0ID0gbWF0Y2hf
Z3JvdXAuc3RhcnQoJ3JlcGxhY2UnKQorICAgICAgcmVwbGFjZV9lbmQgPSBtYXRjaF9ncm91cC5l
bmQoJ3JlcGxhY2UnKQorCisgICAgICAjIEZpbmQgdGhlIGVuZGluZyBwYXJlbiwgYW5kIHJlLWV2
YWx1YXRlIHRoZSBjb250YWluZWQgc3RyaW5nLgorICAgICAgKGNfc3RhcnQsIGNfZW5kKSA9IEZp
bmRFbmNsb3NpbmdCcmFja2V0R3JvdXAoaW5wdXRfc3RyW3JlcGxhY2Vfc3RhcnQ6XSkKKworICAg
ICAgIyBBZGp1c3QgdGhlIHJlcGxhY2VtZW50IHJhbmdlIHRvIG1hdGNoIHRoZSBlbnRpcmUgY29t
bWFuZAorICAgICAgIyBmb3VuZCBieSBGaW5kRW5jbG9zaW5nQnJhY2tldEdyb3VwIChzaW5jZSB0
aGUgdmFyaWFibGVfcmUKKyAgICAgICMgcHJvYmFibHkgZG9lc24ndCBtYXRjaCB0aGUgZW50aXJl
IGNvbW1hbmQgaWYgaXQgY29udGFpbmVkCisgICAgICAjIG5lc3RlZCB2YXJpYWJsZXMpLgorICAg
ICAgcmVwbGFjZV9lbmQgPSByZXBsYWNlX3N0YXJ0ICsgY19lbmQKKworICAgICAgIyBGaW5kIHRo
ZSAicmVhbCIgcmVwbGFjZW1lbnQsIG1hdGNoaW5nIHRoZSBhcHByb3ByaWF0ZSBjbG9zaW5nCisg
ICAgICAjIHBhcmVuLCBhbmQgYWRqdXN0IHRoZSByZXBsYWNlbWVudCBzdGFydCBhbmQgZW5kLgor
ICAgICAgcmVwbGFjZW1lbnQgPSBpbnB1dF9zdHJbcmVwbGFjZV9zdGFydDpyZXBsYWNlX2VuZF0K
KworICAgICAgIyBGaWd1cmUgb3V0IHdoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSB2YXJpYWJsZSBw
YXJlbnMgYXJlLgorICAgICAgY29udGVudHNfc3RhcnQgPSByZXBsYWNlX3N0YXJ0ICsgY19zdGFy
dCArIDEKKyAgICAgIGNvbnRlbnRzX2VuZCA9IHJlcGxhY2VfZW5kIC0gMQorICAgICAgY29udGVu
dHMgPSBpbnB1dF9zdHJbY29udGVudHNfc3RhcnQ6Y29udGVudHNfZW5kXQorCisgICAgICAjIERv
IGZpbHRlciBzdWJzdGl0dXRpb24gbm93IGZvciA8fCgpLgorICAgICAgIyBBZG1pdHRlZGx5LCB0
aGlzIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBldmFsdWF0aW9uIG9yZGVyIGluIG90aGVyCisgICAg
ICAjIGNvbnRleHRzLiBIb3dldmVyLCBzaW5jZSBmaWx0cmF0aW9uIGhhcyBubyBjaGFuY2UgdG8g
cnVuIG9uIDx8KCksCisgICAgICAjIHRoaXMgc2VlbXMgbGlrZSB0aGUgb25seSBvYnZpb3VzIHdh
eSB0byBnaXZlIHRoZW0gYWNjZXNzIHRvIGZpbHRlcnMuCisgICAgICBpZiBmaWxlX2xpc3Q6Cisg
ICAgICAgIHByb2Nlc3NlZF92YXJpYWJsZXMgPSBjb3B5LmRlZXBjb3B5KHZhcmlhYmxlcykKKyAg
ICAgICAgUHJvY2Vzc0xpc3RGaWx0ZXJzSW5EaWN0KGNvbnRlbnRzLCBwcm9jZXNzZWRfdmFyaWFi
bGVzKQorICAgICAgICAjIFJlY3Vyc2UgdG8gZXhwYW5kIHZhcmlhYmxlcyBpbiB0aGUgY29udGVu
dHMKKyAgICAgICAgY29udGVudHMgPSBFeHBhbmRWYXJpYWJsZXMoY29udGVudHMsIGlzX2xhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZF92YXJpYWJsZXMs
IGJ1aWxkX2ZpbGUpCisgICAgICBlbHNlOgorICAgICAgICAjIFJlY3Vyc2UgdG8gZXhwYW5kIHZh
cmlhYmxlcyBpbiB0aGUgY29udGVudHMKKyAgICAgICAgY29udGVudHMgPSBFeHBhbmRWYXJpYWJs
ZXMoY29udGVudHMsIGlzX2xhdGUsIHZhcmlhYmxlcywgYnVpbGRfZmlsZSkKKworICAgICAgIyBT
dHJpcCBvZmYgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIHNvIHRoYXQgdmFyaWFibGUgbWF0
Y2hlcyBhcmUKKyAgICAgICMgc2ltcGxlciBiZWxvdyAoYW5kIGJlY2F1c2UgdGhleSBhcmUgcmFy
ZWx5IG5lZWRlZCkuCisgICAgICBjb250ZW50cyA9IGNvbnRlbnRzLnN0cmlwKCkKKworICAgICAg
IyBleHBhbmRfdG9fbGlzdCBpcyB0cnVlIGlmIGFuIEAgdmFyaWFudCBpcyB1c2VkLiAgSW4gdGhh
dCBjYXNlLAorICAgICAgIyB0aGUgZXhwYW5zaW9uIHNob3VsZCByZXN1bHQgaW4gYSBsaXN0LiAg
Tm90ZSB0aGF0IHRoZSBjYWxsZXIKKyAgICAgICMgaXMgdG8gYmUgZXhwZWN0aW5nIGEgbGlzdCBp
biByZXR1cm4sIGFuZCBub3QgYWxsIGNhbGxlcnMgZG8KKyAgICAgICMgYmVjYXVzZSBub3QgYWxs
IGFyZSB3b3JraW5nIGluIGxpc3QgY29udGV4dC4gIEFsc28sIGZvciBsaXN0CisgICAgICAjIGV4
cGFuc2lvbnMsIHRoZXJlIGNhbiBiZSBubyBvdGhlciB0ZXh0IGJlc2lkZXMgdGhlIHZhcmlhYmxl
CisgICAgICAjIGV4cGFuc2lvbiBpbiB0aGUgaW5wdXQgc3RyaW5nLgorICAgICAgZXhwYW5kX3Rv
X2xpc3QgPSAnQCcgaW4gbWF0Y2hbJ3R5cGUnXSBhbmQgaW5wdXRfc3RyID09IHJlcGxhY2VtZW50
CisKKyAgICAgIGlmIHJ1bl9jb21tYW5kIG9yIGZpbGVfbGlzdDoKKyAgICAgICAgIyBGaW5kIHRo
ZSBidWlsZCBmaWxlJ3MgZGlyZWN0b3J5LCBzbyBjb21tYW5kcyBjYW4gYmUgcnVuIG9yIGZpbGUg
bGlzdHMKKyAgICAgICAgIyBnZW5lcmF0ZWQgcmVsYXRpdmUgdG8gaXQuCisgICAgICAgIGJ1aWxk
X2ZpbGVfZGlyID0gb3MucGF0aC5kaXJuYW1lKGJ1aWxkX2ZpbGUpCisgICAgICAgIGlmIGJ1aWxk
X2ZpbGVfZGlyID09ICcnOgorICAgICAgICAgICMgSWYgYnVpbGRfZmlsZSBpcyBqdXN0IGEgbGVh
ZiBmaWxlbmFtZSBpbmRpY2F0aW5nIGEgZmlsZSBpbiB0aGUKKyAgICAgICAgICAjIGN1cnJlbnQg
ZGlyZWN0b3J5LCBidWlsZF9maWxlX2RpciBtaWdodCBiZSBhbiBlbXB0eSBzdHJpbmcuICBTZXQK
KyAgICAgICAgICAjIGl0IHRvIE5vbmUgdG8gc2lnbmFsIHRvIHN1YnByb2Nlc3MuUG9wZW4gdGhh
dCBpdCBzaG91bGQgcnVuIHRoZQorICAgICAgICAgICMgY29tbWFuZCBpbiB0aGUgY3VycmVudCBk
aXJlY3RvcnkuCisgICAgICAgICAgYnVpbGRfZmlsZV9kaXIgPSBOb25lCisKKyAgICAgICMgU3Vw
cG9ydCA8fChsaXN0ZmlsZS50eHQgLi4uKSB3aGljaCBnZW5lcmF0ZXMgYSBmaWxlCisgICAgICAj
IGNvbnRhaW5pbmcgaXRlbXMgZnJvbSBhIGd5cCBsaXN0LCBnZW5lcmF0ZWQgYXQgZ3lwIHRpbWUu
CisgICAgICAjIFRoaXMgd29ya3MgYXJvdW5kIGFjdGlvbnMvcnVsZXMgd2hpY2ggaGF2ZSBtb3Jl
IGlucHV0cyB0aGFuIHdpbGwKKyAgICAgICMgZml0IG9uIHRoZSBjb21tYW5kIGxpbmUuCisgICAg
ICBpZiBmaWxlX2xpc3Q6CisgICAgICAgIGlmIHR5cGUoY29udGVudHMpID09IGxpc3Q6CisgICAg
ICAgICAgY29udGVudHNfbGlzdCA9IGNvbnRlbnRzCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
Y29udGVudHNfbGlzdCA9IGNvbnRlbnRzLnNwbGl0KCcgJykKKyAgICAgICAgcmVwbGFjZW1lbnQg
PSBjb250ZW50c19saXN0WzBdCisgICAgICAgIHBhdGggPSByZXBsYWNlbWVudAorICAgICAgICBp
ZiBub3Qgb3MucGF0aC5pc2FicyhwYXRoKToKKyAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2lu
KGJ1aWxkX2ZpbGVfZGlyLCBwYXRoKQorICAgICAgICBmID0gZ3lwLmNvbW1vbi5Xcml0ZU9uRGlm
ZihwYXRoKQorICAgICAgICBmb3IgaSBpbiBjb250ZW50c19saXN0WzE6XToKKyAgICAgICAgICBm
LndyaXRlKCclc1xuJyAlIGkpCisgICAgICAgIGYuY2xvc2UoKQorCisgICAgICBlbGlmIHJ1bl9j
b21tYW5kOgorICAgICAgICB1c2Vfc2hlbGwgPSBUcnVlCisgICAgICAgIGlmIG1hdGNoWydpc19h
cnJheSddOgorICAgICAgICAgIGNvbnRlbnRzID0gZXZhbChjb250ZW50cykKKyAgICAgICAgICB1
c2Vfc2hlbGwgPSBGYWxzZQorCisgICAgICAgICMgQ2hlY2sgZm9yIGEgY2FjaGVkIHZhbHVlIHRv
IGF2b2lkIGV4ZWN1dGluZyBjb21tYW5kcywgb3IgZ2VuZXJhdGluZworICAgICAgICAjIGZpbGUg
bGlzdHMgbW9yZSB0aGFuIG9uY2UuCisgICAgICAgICMgVE9ETyhodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvZ3lwL2lzc3Vlcy9kZXRhaWw/aWQ9MTEyKTogSXQgaXMKKyAgICAgICAgIyBwb3NzaWJs
ZSB0aGF0IHRoZSBjb21tYW5kIGJlaW5nIGludm9rZWQgZGVwZW5kcyBvbiB0aGUgY3VycmVudAor
ICAgICAgICAjIGRpcmVjdG9yeS4gRm9yIHRoYXQgY2FzZSB0aGUgc3ludGF4IG5lZWRzIHRvIGJl
IGV4dGVuZGVkIHNvIHRoYXQgdGhlCisgICAgICAgICMgZGlyZWN0b3J5IGlzIGFsc28gdXNlZCBp
biBjYWNoZV9rZXkgKGl0IGJlY29tZXMgYSB0dXBsZSkuCisgICAgICAgICMgVE9ETyhodHRwOi8v
Y29kZS5nb29nbGUuY29tL3AvZ3lwL2lzc3Vlcy9kZXRhaWw/aWQ9MTExKTogSW4gdGhlb3J5LAor
ICAgICAgICAjIHNvbWVvbmUgY291bGQgYXV0aG9yIGEgc2V0IG9mIEdZUCBmaWxlcyB3aGVyZSBl
YWNoIHRpbWUgdGhlIGNvbW1hbmQKKyAgICAgICAgIyBpcyBpbnZva2VkIGl0IHByb2R1Y2VzIGRp
ZmZlcmVudCBvdXRwdXQgYnkgZGVzaWduLiBXaGVuIHRoZSBuZWVkCisgICAgICAgICMgYXJpc2Vz
LCB0aGUgc3ludGF4IHNob3VsZCBiZSBleHRlbmRlZCB0byBzdXBwb3J0IG5vIGNhY2hpbmcgb2Zm
IGEKKyAgICAgICAgIyBjb21tYW5kJ3Mgb3V0cHV0IHNvIGl0IGlzIHJ1biBldmVyeSB0aW1lLgor
ICAgICAgICBjYWNoZV9rZXkgPSBzdHIoY29udGVudHMpCisgICAgICAgIGNhY2hlZF92YWx1ZSA9
IGNhY2hlZF9jb21tYW5kX3Jlc3VsdHMuZ2V0KGNhY2hlX2tleSwgTm9uZSkKKyAgICAgICAgaWYg
Y2FjaGVkX3ZhbHVlIGlzIE5vbmU6CisgICAgICAgICAgZ3lwLkRlYnVnT3V0cHV0KGd5cC5ERUJV
R19WQVJJQUJMRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeGVjdXRpbmcgY29tbWFu
ZCAnJXMnIGluIGRpcmVjdG9yeSAnJXMnIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgIChj
b250ZW50cyxidWlsZF9maWxlX2RpcikpCisKKyAgICAgICAgICAjIEZpeCB1cCBjb21tYW5kIHdp
dGggcGxhdGZvcm0gc3BlY2lmaWMgd29ya2Fyb3VuZHMuCisgICAgICAgICAgY29udGVudHMgPSBG
aXh1cFBsYXRmb3JtQ29tbWFuZChjb250ZW50cykKKyAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Q
b3Blbihjb250ZW50cywgc2hlbGw9dXNlX3NoZWxsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3dkPWJ1aWxkX2ZpbGVfZGlyKQorCisgICAgICAgICAgKHBfc3Rkb3V0LCBwX3N0ZGVycikg
PSBwLmNvbW11bmljYXRlKCcnKQorCisgICAgICAgICAgaWYgcC53YWl0KCkgIT0gMCBvciBwX3N0
ZGVycjoKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUocF9zdGRlcnIpCisgICAgICAgICAg
ICAjIFNpbXVsYXRlIGNoZWNrX2NhbGwgYmVoYXZpb3IsIHNpbmNlIGNoZWNrX2NhbGwgb25seSBl
eGlzdHMKKyAgICAgICAgICAgICMgaW4gcHl0aG9uIDIuNSBhbmQgbGF0ZXIuCisgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oIkNhbGwgdG8gJyVzJyByZXR1cm5lZCBleGl0IHN0YXR1cyAlZC4i
ICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGVudHMsIHAucmV0dXJuY29kZSkp
CisgICAgICAgICAgcmVwbGFjZW1lbnQgPSBwX3N0ZG91dC5yc3RyaXAoKQorCisgICAgICAgICAg
Y2FjaGVkX2NvbW1hbmRfcmVzdWx0c1tjYWNoZV9rZXldID0gcmVwbGFjZW1lbnQKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICBneXAuRGVidWdPdXRwdXQoZ3lwLkRFQlVHX1ZBUklBQkxFUywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkhhZCBjYWNoZSB2YWx1ZSBmb3IgY29tbWFuZCAnJXMn
IGluIGRpcmVjdG9yeSAnJXMnIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250ZW50
cyxidWlsZF9maWxlX2RpcikpCisgICAgICAgICAgcmVwbGFjZW1lbnQgPSBjYWNoZWRfdmFsdWUK
KworICAgICAgZWxzZToKKyAgICAgICAgaWYgbm90IGNvbnRlbnRzIGluIHZhcmlhYmxlczoKKyAg
ICAgICAgICByYWlzZSBLZXlFcnJvciwgJ1VuZGVmaW5lZCB2YXJpYWJsZSAnICsgY29udGVudHMg
KyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgaW4gJyArIGJ1aWxkX2ZpbGUKKyAgICAg
ICAgcmVwbGFjZW1lbnQgPSB2YXJpYWJsZXNbY29udGVudHNdCisKKyAgICAgIGlmIGlzaW5zdGFu
Y2UocmVwbGFjZW1lbnQsIGxpc3QpOgorICAgICAgICBmb3IgaXRlbSBpbiByZXBsYWNlbWVudDoK
KyAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpdGVtLCBzdHIpIGFuZCBub3QgaXNpbnN0YW5j
ZShpdGVtLCBpbnQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yLCAnVmFyaWFibGUgJyAr
IGNvbnRlbnRzICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIG11c3QgZXhwYW5k
IHRvIGEgc3RyaW5nIG9yIGxpc3Qgb2Ygc3RyaW5nczsgJyArIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2xpc3QgY29udGFpbnMgYSAnICsgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpdGVtLl9fY2xhc3NfXy5fX25hbWVfXworICAgICAgICAjIFJ1biB0aHJvdWdoIHRo
ZSBsaXN0IGFuZCBoYW5kbGUgdmFyaWFibGUgZXhwYW5zaW9ucyBpbiBpdC4gIFNpbmNlCisgICAg
ICAgICMgdGhlIGxpc3QgaXMgZ3VhcmFudGVlZCBub3QgdG8gY29udGFpbiBkaWN0cywgdGhpcyB3
b24ndCBkbyBhbnl0aGluZworICAgICAgICAjIHdpdGggY29uZGl0aW9ucyBzZWN0aW9ucy4KKyAg
ICAgICAgUHJvY2Vzc1ZhcmlhYmxlc0FuZENvbmRpdGlvbnNJbkxpc3QocmVwbGFjZW1lbnQsIGlz
X2xhdGUsIHZhcmlhYmxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnVpbGRfZmlsZSkKKyAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UocmVwbGFjZW1lbnQs
IHN0cikgYW5kIFwKKyAgICAgICAgICAgbm90IGlzaW5zdGFuY2UocmVwbGFjZW1lbnQsIGludCk6
CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IsICdWYXJpYWJsZSAnICsgY29udGVudHMgKyBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgbXVzdCBleHBhbmQgdG8gYSBzdHJpbmcg
b3IgbGlzdCBvZiBzdHJpbmdzOyAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
Zm91bmQgYSAnICsgcmVwbGFjZW1lbnQuX19jbGFzc19fLl9fbmFtZV9fCisKKyAgICAgIGlmIGV4
cGFuZF90b19saXN0OgorICAgICAgICAjIEV4cGFuZGluZyBpbiBsaXN0IGNvbnRleHQuICBJdCdz
IGd1YXJhbnRlZWQgdGhhdCB0aGVyZSdzIG9ubHkgb25lCisgICAgICAgICMgcmVwbGFjZW1lbnQg
dG8gZG8gaW4gfGlucHV0X3N0cnwgYW5kIHRoYXQgaXQncyB0aGlzIHJlcGxhY2VtZW50LiAgU2Vl
CisgICAgICAgICMgYWJvdmUuCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVwbGFjZW1lbnQsIGxp
c3QpOgorICAgICAgICAgICMgSWYgaXQncyBhbHJlYWR5IGEgbGlzdCwgbWFrZSBhIGNvcHkuCisg
ICAgICAgICAgb3V0cHV0ID0gcmVwbGFjZW1lbnRbOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAjIFNwbGl0IGl0IHRoZSBzYW1lIHdheSBzaCB3b3VsZCBzcGxpdCBhcmd1bWVudHMuCisgICAg
ICAgICAgb3V0cHV0ID0gc2hsZXguc3BsaXQoc3RyKHJlcGxhY2VtZW50KSkKKyAgICAgIGVsc2U6
CisgICAgICAgICMgRXhwYW5kaW5nIGluIHN0cmluZyBjb250ZXh0LgorICAgICAgICBlbmNvZGVk
X3JlcGxhY2VtZW50ID0gJycKKyAgICAgICAgaWYgaXNpbnN0YW5jZShyZXBsYWNlbWVudCwgbGlz
dCk6CisgICAgICAgICAgIyBXaGVuIGV4cGFuZGluZyBhIGxpc3QgaW50byBzdHJpbmcgY29udGV4
dCwgdHVybiB0aGUgbGlzdCBpdGVtcworICAgICAgICAgICMgaW50byBhIHN0cmluZyBpbiBhIHdh
eSB0aGF0IHdpbGwgd29yayB3aXRoIGEgc3VicHJvY2VzcyBjYWxsLgorICAgICAgICAgICMKKyAg
ICAgICAgICAjIFRPRE8obWFyayk6IFRoaXMgaXNuJ3QgY29tcGxldGVseSBjb3JyZWN0LiAgVGhp
cyBzaG91bGQKKyAgICAgICAgICAjIGNhbGwgYSBnZW5lcmF0b3ItcHJvdmlkZWQgZnVuY3Rpb24g
dGhhdCBvYnNlcnZlcyB0aGUKKyAgICAgICAgICAjIHByb3BlciBsaXN0LXRvLWFyZ3VtZW50IHF1
b3RpbmcgcnVsZXMgb24gYSBzcGVjaWZpYworICAgICAgICAgICMgcGxhdGZvcm0gaW5zdGVhZCBv
ZiBqdXN0IGNhbGxpbmcgdGhlIFBPU0lYIGVuY29kaW5nCisgICAgICAgICAgIyByb3V0aW5lLgor
ICAgICAgICAgIGVuY29kZWRfcmVwbGFjZW1lbnQgPSBneXAuY29tbW9uLkVuY29kZVBPU0lYU2hl
bGxMaXN0KHJlcGxhY2VtZW50KQorICAgICAgICBlbHNlOgorICAgICAgICAgIGVuY29kZWRfcmVw
bGFjZW1lbnQgPSByZXBsYWNlbWVudAorCisgICAgICAgIG91dHB1dCA9IG91dHB1dFs6cmVwbGFj
ZV9zdGFydF0gKyBzdHIoZW5jb2RlZF9yZXBsYWNlbWVudCkgKyBcCisgICAgICAgICAgICAgICAg
IG91dHB1dFtyZXBsYWNlX2VuZDpdCisgICAgICAjIFByZXBhcmUgZm9yIHRoZSBuZXh0IG1hdGNo
IGl0ZXJhdGlvbi4KKyAgICAgIGlucHV0X3N0ciA9IG91dHB1dAorCisgICAgIyBMb29rIGZvciBt
b3JlIG1hdGNoZXMgbm93IHRoYXQgd2UndmUgcmVwbGFjZWQgc29tZSwgdG8gZGVhbCB3aXRoCisg
ICAgIyBleHBhbmRpbmcgbG9jYWwgdmFyaWFibGVzICh2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUg
c2FtZQorICAgICMgdmFyaWFibGVzIGJsb2NrIGFzIHRoaXMgb25lKS4KKyAgICBneXAuRGVidWdP
dXRwdXQoZ3lwLkRFQlVHX1ZBUklBQkxFUywKKyAgICAgICAgICAgICAgICAgICAgIkZvdW5kIG91
dHB1dCAlcywgcmVjdXJzaW5nLiIgJSByZXByKG91dHB1dCkpCisgICAgaWYgaXNpbnN0YW5jZShv
dXRwdXQsIGxpc3QpOgorICAgICAgbmV3X291dHB1dCA9IFtdCisgICAgICBmb3IgaXRlbSBpbiBv
dXRwdXQ6CisgICAgICAgIG5ld19vdXRwdXQuYXBwZW5kKEV4cGFuZFZhcmlhYmxlcyhpdGVtLCBp
c19sYXRlLCB2YXJpYWJsZXMsIGJ1aWxkX2ZpbGUpKQorICAgICAgb3V0cHV0ID0gbmV3X291dHB1
dAorICAgIGVsc2U6CisgICAgICBvdXRwdXQgPSBFeHBhbmRWYXJpYWJsZXMob3V0cHV0LCBpc19s
YXRlLCB2YXJpYWJsZXMsIGJ1aWxkX2ZpbGUpCisKKyAgIyBDb252ZXJ0IGFsbCBzdHJpbmdzIHRo
YXQgYXJlIGNhbm9uaWNhbGx5LXJlcHJlc2VudGVkIGludGVnZXJzIGludG8gaW50ZWdlcnMuCisg
IGlmIGlzaW5zdGFuY2Uob3V0cHV0LCBsaXN0KToKKyAgICBmb3IgaW5kZXggaW4geHJhbmdlKDAs
IGxlbihvdXRwdXQpKToKKyAgICAgIGlmIElzU3RyQ2Fub25pY2FsSW50KG91dHB1dFtpbmRleF0p
OgorICAgICAgICBvdXRwdXRbaW5kZXhdID0gaW50KG91dHB1dFtpbmRleF0pCisgIGVsaWYgSXNT
dHJDYW5vbmljYWxJbnQob3V0cHV0KToKKyAgICBvdXRwdXQgPSBpbnQob3V0cHV0KQorCisgIGd5
cC5EZWJ1Z091dHB1dChneXAuREVCVUdfVkFSSUFCTEVTLAorICAgICAgICAgICAgICAgICAgIkV4
cGFuZGluZyAlcyB0byAlcyIgJSAocmVwcihpbnB1dCksIHJlcHIob3V0cHV0KSkpCisgIHJldHVy
biBvdXRwdXQKKworCitkZWYgUHJvY2Vzc0NvbmRpdGlvbnNJbkRpY3QodGhlX2RpY3QsIGlzX2xh
dGUsIHZhcmlhYmxlcywgYnVpbGRfZmlsZSk6CisgICMgUHJvY2VzcyBhICdjb25kaXRpb25zJyBv
ciAndGFyZ2V0X2NvbmRpdGlvbnMnIHNlY3Rpb24gaW4gdGhlX2RpY3QsCisgICMgZGVwZW5kaW5n
IG9uIGlzX2xhdGUuICBJZiBpc19sYXRlIGlzIEZhbHNlLCAnY29uZGl0aW9ucycgaXMgdXNlZC4K
KyAgIworICAjIEVhY2ggaXRlbSBpbiBhIGNvbmRpdGlvbnMgbGlzdCBjb25zaXN0cyBvZiBjb25k
X2V4cHIsIGEgc3RyaW5nIGV4cHJlc3Npb24KKyAgIyBldmFsdWF0ZWQgYXMgdGhlIGNvbmRpdGlv
biwgYW5kIHRydWVfZGljdCwgYSBkaWN0IHRoYXQgd2lsbCBiZSBtZXJnZWQgaW50bworICAjIHRo
ZV9kaWN0IGlmIGNvbmRfZXhwciBldmFsdWF0ZXMgdG8gdHJ1ZS4gIE9wdGlvbmFsbHksIGEgdGhp
cmQgaXRlbSwKKyAgIyBmYWxzZV9kaWN0LCBtYXkgYmUgcHJlc2VudC4gIGZhbHNlX2RpY3QgaXMg
bWVyZ2VkIGludG8gdGhlX2RpY3QgaWYKKyAgIyBjb25kX2V4cHIgZXZhbHVhdGVzIHRvIGZhbHNl
LgorICAjCisgICMgQW55IGRpY3QgbWVyZ2VkIGludG8gdGhlX2RpY3Qgd2lsbCBiZSByZWN1cnNp
dmVseSBwcm9jZXNzZWQgZm9yIG5lc3RlZAorICAjIGNvbmRpdGlvbmFscyBhbmQgb3RoZXIgZXhw
YW5zaW9ucywgYWxzbyBhY2NvcmRpbmcgdG8gaXNfbGF0ZSwgaW1tZWRpYXRlbHkKKyAgIyBwcmlv
ciB0byBiZWluZyBtZXJnZWQuCisKKyAgaWYgbm90IGlzX2xhdGU6CisgICAgY29uZGl0aW9uc19r
ZXkgPSAnY29uZGl0aW9ucycKKyAgZWxzZToKKyAgICBjb25kaXRpb25zX2tleSA9ICd0YXJnZXRf
Y29uZGl0aW9ucycKKworICBpZiBub3QgY29uZGl0aW9uc19rZXkgaW4gdGhlX2RpY3Q6CisgICAg
cmV0dXJuCisKKyAgY29uZGl0aW9uc19saXN0ID0gdGhlX2RpY3RbY29uZGl0aW9uc19rZXldCisg
ICMgVW5ob29rIHRoZSBjb25kaXRpb25zIGxpc3QsIGl0J3Mgbm8gbG9uZ2VyIG5lZWRlZC4KKyAg
ZGVsIHRoZV9kaWN0W2NvbmRpdGlvbnNfa2V5XQorCisgIGZvciBjb25kaXRpb24gaW4gY29uZGl0
aW9uc19saXN0OgorICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbmRpdGlvbiwgbGlzdCk6CisgICAg
ICByYWlzZSBUeXBlRXJyb3IsIGNvbmRpdGlvbnNfa2V5ICsgJyBtdXN0IGJlIGEgbGlzdCcKKyAg
ICBpZiBsZW4oY29uZGl0aW9uKSAhPSAyIGFuZCBsZW4oY29uZGl0aW9uKSAhPSAzOgorICAgICAg
IyBJdCdzIHBvc3NpYmxlIHRoYXQgY29uZGl0aW9uWzBdIHdvbid0IHdvcmsgaW4gd2hpY2ggY2Fz
ZSB0aGlzCisgICAgICAjIGF0dGVtcHQgd2lsbCByYWlzZSBpdHMgb3duIEluZGV4RXJyb3IuICBU
aGF0J3MgcHJvYmFibHkgZmluZS4KKyAgICAgIHJhaXNlIEluZGV4RXJyb3IsIGNvbmRpdGlvbnNf
a2V5ICsgJyAnICsgY29uZGl0aW9uWzBdICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgJyBt
dXN0IGJlIGxlbmd0aCAyIG9yIDMsIG5vdCAnICsgc3RyKGxlbihjb25kaXRpb24pKQorCisgICAg
W2NvbmRfZXhwciwgdHJ1ZV9kaWN0XSA9IGNvbmRpdGlvblswOjJdCisgICAgZmFsc2VfZGljdCA9
IE5vbmUKKyAgICBpZiBsZW4oY29uZGl0aW9uKSA9PSAzOgorICAgICAgZmFsc2VfZGljdCA9IGNv
bmRpdGlvblsyXQorCisgICAgIyBEbyBleHBhbnNpb25zIG9uIHRoZSBjb25kaXRpb24gaXRzZWxm
LiAgU2luY2UgdGhlIGNvbmRpdG9uIGNhbiBuYXR1cmFsbHkKKyAgICAjIGNvbnRhaW4gdmFyaWFi
bGUgcmVmZXJlbmNlcyB3aXRob3V0IG5lZWRpbmcgdG8gcmVzb3J0IHRvIEdZUCBleHBhbnNpb24K
KyAgICAjIHN5bnRheCwgdGhpcyBpcyBvZiBkdWJpb3VzIHZhbHVlIGZvciB2YXJpYWJsZXMsIGJ1
dCBzb21lb25lIG1pZ2h0IHdhbnQgdG8KKyAgICAjIHVzZSBhIGNvbW1hbmQgZXhwYW5zaW9uIGRp
cmVjdGx5IGluc2lkZSBhIGNvbmRpdGlvbi4KKyAgICBjb25kX2V4cHJfZXhwYW5kZWQgPSBFeHBh
bmRWYXJpYWJsZXMoY29uZF9leHByLCBpc19sYXRlLCB2YXJpYWJsZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX2ZpbGUpCisgICAgaWYgbm90IGlzaW5z
dGFuY2UoY29uZF9leHByX2V4cGFuZGVkLCBzdHIpIGFuZCBcCisgICAgICAgbm90IGlzaW5zdGFu
Y2UoY29uZF9leHByX2V4cGFuZGVkLCBpbnQpOgorICAgICAgcmFpc2UgVmFsdWVFcnJvciwgXAor
ICAgICAgICAgICAgJ1ZhcmlhYmxlIGV4cGFuc2lvbiBpbiB0aGlzIGNvbnRleHQgcGVybWl0cyBz
dHIgYW5kIGludCAnICsgXAorICAgICAgICAgICAgJ29ubHksIGZvdW5kICcgKyBleHBhbmRlZC5f
X2NsYXNzX18uX19uYW1lX18KKworICAgIHRyeToKKyAgICAgIGFzdF9jb2RlID0gY29tcGlsZShj
b25kX2V4cHJfZXhwYW5kZWQsICc8c3RyaW5nPicsICdldmFsJykKKworICAgICAgaWYgZXZhbChh
c3RfY29kZSwgeydfX2J1aWx0aW5zX18nOiBOb25lfSwgdmFyaWFibGVzKToKKyAgICAgICAgbWVy
Z2VfZGljdCA9IHRydWVfZGljdAorICAgICAgZWxzZToKKyAgICAgICAgbWVyZ2VfZGljdCA9IGZh
bHNlX2RpY3QKKyAgICBleGNlcHQgU3ludGF4RXJyb3IsIGU6CisgICAgICBzeW50YXhfZXJyb3Ig
PSBTeW50YXhFcnJvcignJXMgd2hpbGUgZXZhbHVhdGluZyBjb25kaXRpb24gXCclc1wnIGluICVz
ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdCBjaGFyYWN0ZXIgJWQuJyAl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyKGUuYXJnc1swXSksIGUudGV4
dCwgYnVpbGRfZmlsZSwgZS5vZmZzZXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZS5maWxlbmFtZSwgZS5saW5lbm8sIGUub2Zmc2V0LCBlLnRleHQpCisgICAgICByYWlzZSBz
eW50YXhfZXJyb3IKKyAgICBleGNlcHQgTmFtZUVycm9yLCBlOgorICAgICAgZ3lwLmNvbW1vbi5F
eGNlcHRpb25BcHBlbmQoZSwgJ3doaWxlIGV2YWx1YXRpbmcgY29uZGl0aW9uIFwnJXNcJyBpbiAl
cycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRfZXhwcl9leHBhbmRl
ZCwgYnVpbGRfZmlsZSkpCisgICAgICByYWlzZQorCisgICAgaWYgbWVyZ2VfZGljdCAhPSBOb25l
OgorICAgICAgIyBFeHBhbmQgdmFyaWFibGVzIGFuZCBuZXN0ZWQgY29uZGl0aW5hbHMgaW4gdGhl
IG1lcmdlX2RpY3QgYmVmb3JlCisgICAgICAjIG1lcmdpbmcgaXQuCisgICAgICBQcm9jZXNzVmFy
aWFibGVzQW5kQ29uZGl0aW9uc0luRGljdChtZXJnZV9kaWN0LCBpc19sYXRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLCBidWlsZF9maWxlKQor
CisgICAgICBNZXJnZURpY3RzKHRoZV9kaWN0LCBtZXJnZV9kaWN0LCBidWlsZF9maWxlLCBidWls
ZF9maWxlKQorCisKK2RlZiBMb2FkQXV0b21hdGljVmFyaWFibGVzRnJvbURpY3QodmFyaWFibGVz
LCB0aGVfZGljdCk6CisgICMgQW55IGtleXMgd2l0aCBwbGFpbiBzdHJpbmcgdmFsdWVzIGluIHRo
ZV9kaWN0IGJlY29tZSBhdXRvbWF0aWMgdmFyaWFibGVzLgorICAjIFRoZSB2YXJpYWJsZSBuYW1l
IGlzIHRoZSBrZXkgbmFtZSB3aXRoIGEgIl8iIGNoYXJhY3RlciBwcmVwZW5kZWQuCisgIGZvciBr
ZXksIHZhbHVlIGluIHRoZV9kaWN0Lml0ZXJpdGVtcygpOgorICAgIGlmIGlzaW5zdGFuY2UodmFs
dWUsIHN0cikgb3IgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KSBvciBcCisgICAgICAgaXNpbnN0YW5j
ZSh2YWx1ZSwgbGlzdCk6CisgICAgICB2YXJpYWJsZXNbJ18nICsga2V5XSA9IHZhbHVlCisKKwor
ZGVmIExvYWRWYXJpYWJsZXNGcm9tVmFyaWFibGVzRGljdCh2YXJpYWJsZXMsIHRoZV9kaWN0LCB0
aGVfZGljdF9rZXkpOgorICAjIEFueSBrZXlzIGluIHRoZV9kaWN0J3MgInZhcmlhYmxlcyIgZGlj
dCwgaWYgaXQgaGFzIG9uZSwgYmVjb21lcyBhCisgICMgdmFyaWFibGUuICBUaGUgdmFyaWFibGUg
bmFtZSBpcyB0aGUga2V5IG5hbWUgaW4gdGhlICJ2YXJpYWJsZXMiIGRpY3QuCisgICMgVmFyaWFi
bGVzIHRoYXQgZW5kIHdpdGggdGhlICUgY2hhcmFjdGVyIGFyZSBzZXQgb25seSBpZiB0aGV5IGFy
ZSB1bnNldCBpbgorICAjIHRoZSB2YXJpYWJsZXMgZGljdC4gIHRoZV9kaWN0X2tleSBpcyB0aGUg
bmFtZSBvZiB0aGUga2V5IHRoYXQgYWNjZXNzZXMKKyAgIyB0aGVfZGljdCBpbiB0aGVfZGljdCdz
IHBhcmVudCBkaWN0LiAgSWYgdGhlX2RpY3QncyBwYXJlbnQgaXMgbm90IGEgZGljdAorICAjIChp
dCBjb3VsZCBiZSBhIGxpc3Qgb3IgaXQgY291bGQgYmUgcGFyZW50bGVzcyBiZWNhdXNlIGl0IGlz
IGEgcm9vdCBkaWN0KSwKKyAgIyB0aGVfZGljdF9rZXkgd2lsbCBiZSBOb25lLgorICBmb3Iga2V5
LCB2YWx1ZSBpbiB0aGVfZGljdC5nZXQoJ3ZhcmlhYmxlcycsIHt9KS5pdGVyaXRlbXMoKToKKyAg
ICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKSBhbmQgbm90IGlzaW5zdGFuY2UodmFsdWUs
IGludCkgYW5kIFwKKyAgICAgICBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgbGlzdCk6CisgICAgICBj
b250aW51ZQorCisgICAgaWYga2V5LmVuZHN3aXRoKCclJyk6CisgICAgICB2YXJpYWJsZV9uYW1l
ID0ga2V5WzotMV0KKyAgICAgIGlmIHZhcmlhYmxlX25hbWUgaW4gdmFyaWFibGVzOgorICAgICAg
ICAjIElmIHRoZSB2YXJpYWJsZSBpcyBhbHJlYWR5IHNldCwgZG9uJ3Qgc2V0IGl0LgorICAgICAg
ICBjb250aW51ZQorICAgICAgaWYgdGhlX2RpY3Rfa2V5IGlzICd2YXJpYWJsZXMnIGFuZCB2YXJp
YWJsZV9uYW1lIGluIHRoZV9kaWN0OgorICAgICAgICAjIElmIHRoZSB2YXJpYWJsZSBpcyBzZXQg
d2l0aG91dCBhICUgaW4gdGhlX2RpY3QsIGFuZCB0aGVfZGljdCBpcyBhCisgICAgICAgICMgdmFy
aWFibGVzIGRpY3QgKG1ha2luZyB8dmFyaWFibGVzfCBhIHZhcmFpYmxlcyBzdWItZGljdCBvZiBh
CisgICAgICAgICMgdmFyaWFibGVzIGRpY3QpLCB1c2UgdGhlX2RpY3QncyBkZWZpbml0aW9uLgor
ICAgICAgICB2YWx1ZSA9IHRoZV9kaWN0W3ZhcmlhYmxlX25hbWVdCisgICAgZWxzZToKKyAgICAg
IHZhcmlhYmxlX25hbWUgPSBrZXkKKworICAgIHZhcmlhYmxlc1t2YXJpYWJsZV9uYW1lXSA9IHZh
bHVlCisKKworZGVmIFByb2Nlc3NWYXJpYWJsZXNBbmRDb25kaXRpb25zSW5EaWN0KHRoZV9kaWN0
LCBpc19sYXRlLCB2YXJpYWJsZXNfaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnVpbGRfZmlsZSwgdGhlX2RpY3Rfa2V5PU5vbmUpOgorICAiIiJIYW5kbGUgYWxs
IHZhcmlhYmxlIGFuZCBjb21tYW5kIGV4cGFuc2lvbiBhbmQgY29uZGl0aW9uYWwgZXZhbHVhdGlv
bi4KKworICBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBwdWJsaWMgZW50cnkgcG9pbnQgZm9yIGFsbCB2
YXJpYWJsZSBleHBhbnNpb25zIGFuZAorICBjb25kaXRpb25hbCBldmFsdWF0aW9ucy4gIFRoZSB2
YXJpYWJsZXNfaW4gZGljdGlvbmFyeSB3aWxsIG5vdCBiZSBtb2RpZmllZAorICBieSB0aGlzIGZ1
bmN0aW9uLgorICAiIiIKKworICAjIE1ha2UgYSBjb3B5IG9mIHRoZSB2YXJpYWJsZXNfaW4gZGlj
dCB0aGF0IGNhbiBiZSBtb2RpZmllZCBkdXJpbmcgdGhlCisgICMgbG9hZGluZyBvZiBhdXRvbWF0
aWNzIGFuZCB0aGUgbG9hZGluZyBvZiB0aGUgdmFyaWFibGVzIGRpY3QuCisgIHZhcmlhYmxlcyA9
IHZhcmlhYmxlc19pbi5jb3B5KCkKKyAgTG9hZEF1dG9tYXRpY1ZhcmlhYmxlc0Zyb21EaWN0KHZh
cmlhYmxlcywgdGhlX2RpY3QpCisKKyAgaWYgJ3ZhcmlhYmxlcycgaW4gdGhlX2RpY3Q6CisgICAg
IyBNYWtlIHN1cmUgYWxsIHRoZSBsb2NhbCB2YXJpYWJsZXMgYXJlIGFkZGVkIHRvIHRoZSB2YXJp
YWJsZXMKKyAgICAjIGxpc3QgYmVmb3JlIHdlIHByb2Nlc3MgdGhlbSBzbyB0aGF0IHlvdSBjYW4g
cmVmZXJlbmNlIG9uZQorICAgICMgdmFyaWFibGUgZnJvbSBhbm90aGVyLiAgVGhleSB3aWxsIGJl
IGZ1bGx5IGV4cGFuZGVkIGJ5IHJlY3Vyc2lvbgorICAgICMgaW4gRXhwYW5kVmFyaWFibGVzLgor
ICAgIGZvciBrZXksIHZhbHVlIGluIHRoZV9kaWN0Wyd2YXJpYWJsZXMnXS5pdGVyaXRlbXMoKToK
KyAgICAgIHZhcmlhYmxlc1trZXldID0gdmFsdWUKKworICAgICMgSGFuZGxlIHRoZSBhc3NvY2lh
dGVkIHZhcmlhYmxlcyBkaWN0IGZpcnN0LCBzbyB0aGF0IGFueSB2YXJpYWJsZQorICAgICMgcmVm
ZXJlbmNlcyB3aXRoaW4gY2FuIGJlIHJlc29sdmVkIHByaW9yIHRvIHVzaW5nIHRoZW0gYXMgdmFy
aWFibGVzLgorICAgICMgUGFzcyBhIGNvcHkgb2YgdGhlIHZhcmlhYmxlcyBkaWN0IHRvIGF2b2lk
IGhhdmluZyBpdCBiZSB0YWludGVkLgorICAgICMgT3RoZXJ3aXNlLCBpdCB3b3VsZCBoYXZlIGV4
dHJhIGF1dG9tYXRpY3MgYWRkZWQgZm9yIGV2ZXJ5dGhpbmcgdGhhdAorICAgICMgc2hvdWxkIGp1
c3QgYmUgYW4gb3JkaW5hcnkgdmFyaWFibGUgaW4gdGhpcyBzY29wZS4KKyAgICBQcm9jZXNzVmFy
aWFibGVzQW5kQ29uZGl0aW9uc0luRGljdCh0aGVfZGljdFsndmFyaWFibGVzJ10sIGlzX2xhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLCBidWls
ZF9maWxlLCAndmFyaWFibGVzJykKKworICBMb2FkVmFyaWFibGVzRnJvbVZhcmlhYmxlc0RpY3Qo
dmFyaWFibGVzLCB0aGVfZGljdCwgdGhlX2RpY3Rfa2V5KQorCisgIGZvciBrZXksIHZhbHVlIGlu
IHRoZV9kaWN0Lml0ZXJpdGVtcygpOgorICAgICMgU2tpcCAidmFyaWFibGVzIiwgd2hpY2ggd2Fz
IGFscmVhZHkgcHJvY2Vzc2VkIGlmIHByZXNlbnQuCisgICAgaWYga2V5ICE9ICd2YXJpYWJsZXMn
IGFuZCBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgZXhwYW5kZWQgPSBFeHBhbmRWYXJp
YWJsZXModmFsdWUsIGlzX2xhdGUsIHZhcmlhYmxlcywgYnVpbGRfZmlsZSkKKyAgICAgIGlmIG5v
dCBpc2luc3RhbmNlKGV4cGFuZGVkLCBzdHIpIGFuZCBub3QgaXNpbnN0YW5jZShleHBhbmRlZCwg
aW50KToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgXAorICAgICAgICAgICAgICAnVmFyaWFi
bGUgZXhwYW5zaW9uIGluIHRoaXMgY29udGV4dCBwZXJtaXRzIHN0ciBhbmQgaW50ICcgKyBcCisg
ICAgICAgICAgICAgICdvbmx5LCBmb3VuZCAnICsgZXhwYW5kZWQuX19jbGFzc19fLl9fbmFtZV9f
ICsgJyBmb3IgJyArIGtleQorICAgICAgdGhlX2RpY3Rba2V5XSA9IGV4cGFuZGVkCisKKyAgIyBW
YXJpYWJsZSBleHBhbnNpb24gbWF5IGhhdmUgcmVzdWx0ZWQgaW4gY2hhbmdlcyB0byBhdXRvbWF0
aWNzLiAgUmVsb2FkLgorICAjIFRPRE8obWFyayk6IE9wdGltaXphdGlvbjogb25seSByZWxvYWQg
aWYgbm8gY2hhbmdlcyB3ZXJlIG1hZGUuCisgIHZhcmlhYmxlcyA9IHZhcmlhYmxlc19pbi5jb3B5
KCkKKyAgTG9hZEF1dG9tYXRpY1ZhcmlhYmxlc0Zyb21EaWN0KHZhcmlhYmxlcywgdGhlX2RpY3Qp
CisgIExvYWRWYXJpYWJsZXNGcm9tVmFyaWFibGVzRGljdCh2YXJpYWJsZXMsIHRoZV9kaWN0LCB0
aGVfZGljdF9rZXkpCisKKyAgIyBQcm9jZXNzIGNvbmRpdGlvbnMgaW4gdGhpcyBkaWN0LiAgVGhp
cyBpcyBkb25lIGFmdGVyIHZhcmlhYmxlIGV4cGFuc2lvbgorICAjIHNvIHRoYXQgY29uZGl0aW9u
cyBtYXkgdGFrZSBhZHZhbnRhZ2Ugb2YgZXhwYW5kZWQgdmFyaWFibGVzLiAgRm9yIGV4YW1wbGUs
CisgICMgaWYgdGhlX2RpY3QgY29udGFpbnM6CisgICMgICB7J3R5cGUnOiAgICAgICAnPChsaWJy
YXJ5X3R5cGUpJywKKyAgIyAgICAnY29uZGl0aW9ucyc6IFtbJ190eXBlPT0ic3RhdGljX2xpYnJh
cnkiJywgeyAuLi4gfV1dfSwKKyAgIyBfdHlwZSwgYXMgdXNlZCBpbiB0aGUgY29uZGl0aW9uLCB3
aWxsIG9ubHkgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZgorICAjIGxpYnJhcnlfdHlwZSBpZiB2YXJp
YWJsZSBleHBhbnNpb24gaXMgcGVyZm9ybWVkIGJlZm9yZSBjb25kaXRpb24KKyAgIyBwcm9jZXNz
aW5nLiAgSG93ZXZlciwgY29uZGl0aW9uIHByb2Nlc3Npbmcgc2hvdWxkIG9jY3VyIHByaW9yIHRv
IHJlY3Vyc2lvbgorICAjIHNvIHRoYXQgdmFyaWFibGVzIChib3RoIGF1dG9tYXRpYyBhbmQgInZh
cmlhYmxlcyIgZGljdCB0eXBlKSBtYXkgYmUKKyAgIyBhZGp1c3RlZCBieSBjb25kaXRpb25zIHNl
Y3Rpb25zLCBtZXJnZWQgaW50byB0aGVfZGljdCwgYW5kIGhhdmUgdGhlCisgICMgaW50ZW5kZWQg
aW1wYWN0IG9uIGNvbnRhaW5lZCBkaWN0cy4KKyAgIworICAjIFRoaXMgYXJyYW5nZW1lbnQgbWVh
bnMgdGhhdCBhICJjb25kaXRpb25zIiBzZWN0aW9uIGNvbnRhaW5pbmcgYSAidmFyaWFibGVzIgor
ICAjIHNlY3Rpb24gd2lsbCBvbmx5IGhhdmUgdGhvc2UgdmFyaWFibGVzIGVmZmVjdGl2ZSBpbiBz
dWJkaWN0cywgbm90IGluCisgICMgdGhlX2RpY3QuICBUaGUgd29ya2Fyb3VuZCBpcyB0byBwdXQg
YSAiY29uZGl0aW9ucyIgc2VjdGlvbiB3aXRoaW4gYQorICAjICJ2YXJpYWJsZXMiIHNlY3Rpb24u
ICBGb3IgZXhhbXBsZToKKyAgIyAgIHsnY29uZGl0aW9ucyc6IFtbJ29zPT0ibWFjIicsIHsndmFy
aWFibGVzJzogeydkZWZpbmUnOiAnSVNfTUFDJ319XV0sCisgICMgICAgJ2RlZmluZXMnOiAgICBb
JzwoZGVmaW5lKSddLAorICAjICAgICdteV9zdWJkaWN0JzogeydkZWZpbmVzJzogWyc8KGRlZmlu
ZSknXX19LAorICAjIHdpbGwgbm90IHJlc3VsdCBpbiAiSVNfTUFDIiBiZWluZyBhcHBlbmRlZCB0
byB0aGUgImRlZmluZXMiIGxpc3QgaW4gdGhlCisgICMgY3VycmVudCBzY29wZSBidXQgd291bGQg
cmVzdWx0IGluIGl0IGJlaW5nIGFwcGVuZGVkIHRvIHRoZSAiZGVmaW5lcyIgbGlzdAorICAjIHdp
dGhpbiAibXlfc3ViZGljdCIuICBCeSBjb21wYXJpc29uOgorICAjICAgeyd2YXJpYWJsZXMnOiB7
J2NvbmRpdGlvbnMnOiBbWydvcz09Im1hYyInLCB7J2RlZmluZSc6ICdJU19NQUMnfV1dfSwKKyAg
IyAgICAnZGVmaW5lcyc6ICAgIFsnPChkZWZpbmUpJ10sCisgICMgICAgJ215X3N1YmRpY3QnOiB7
J2RlZmluZXMnOiBbJzwoZGVmaW5lKSddfX0sCisgICMgd2lsbCBhcHBlbmQgIklTX01BQyIgdG8g
Ym90aCAiZGVmaW5lcyIgbGlzdHMuCisKKyAgIyBFdmFsdWF0ZSBjb25kaXRpb25zIHNlY3Rpb25z
LCBhbGxvd2luZyB2YXJpYWJsZSBleHBhbnNpb25zIHdpdGhpbiB0aGVtCisgICMgYXMgd2VsbCBh
cyBuZXN0ZWQgY29uZGl0aW9uYWxzLiAgVGhpcyB3aWxsIHByb2Nlc3MgYSAnY29uZGl0aW9ucycg
b3IKKyAgIyAndGFyZ2V0X2NvbmRpdGlvbnMnIHNlY3Rpb24sIHBlcmZvcm0gYXBwcm9wcmlhdGUg
bWVyZ2luZyBhbmQgcmVjdXJzaXZlCisgICMgY29uZGl0aW9uYWwgYW5kIHZhcmlhYmxlIHByb2Nl
c3NpbmcsIGFuZCB0aGVuIHJlbW92ZSB0aGUgY29uZGl0aW9ucyBzZWN0aW9uCisgICMgZnJvbSB0
aGVfZGljdCBpZiBpdCBpcyBwcmVzZW50LgorICBQcm9jZXNzQ29uZGl0aW9uc0luRGljdCh0aGVf
ZGljdCwgaXNfbGF0ZSwgdmFyaWFibGVzLCBidWlsZF9maWxlKQorCisgICMgQ29uZGl0aW9uYWwg
cHJvY2Vzc2luZyBtYXkgaGF2ZSByZXN1bHRlZCBpbiBjaGFuZ2VzIHRvIGF1dG9tYXRpY3Mgb3Ig
dGhlCisgICMgdmFyaWFibGVzIGRpY3QuICBSZWxvYWQuCisgIHZhcmlhYmxlcyA9IHZhcmlhYmxl
c19pbi5jb3B5KCkKKyAgTG9hZEF1dG9tYXRpY1ZhcmlhYmxlc0Zyb21EaWN0KHZhcmlhYmxlcywg
dGhlX2RpY3QpCisgIExvYWRWYXJpYWJsZXNGcm9tVmFyaWFibGVzRGljdCh2YXJpYWJsZXMsIHRo
ZV9kaWN0LCB0aGVfZGljdF9rZXkpCisKKyAgIyBSZWN1cnNlIGludG8gY2hpbGQgZGljdHMsIG9y
IHByb2Nlc3MgY2hpbGQgbGlzdHMgd2hpY2ggbWF5IHJlc3VsdCBpbgorICAjIGZ1cnRoZXIgcmVj
dXJzaW9uIGludG8gZGVzY2VuZGFudCBkaWN0cy4KKyAgZm9yIGtleSwgdmFsdWUgaW4gdGhlX2Rp
Y3QuaXRlcml0ZW1zKCk6CisgICAgIyBTa2lwICJ2YXJpYWJsZXMiIGFuZCBzdHJpbmcgdmFsdWVz
LCB3aGljaCB3ZXJlIGFscmVhZHkgcHJvY2Vzc2VkIGlmCisgICAgIyBwcmVzZW50LgorICAgIGlm
IGtleSA9PSAndmFyaWFibGVzJyBvciBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgY29u
dGludWUKKyAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBkaWN0KToKKyAgICAgICMgUGFzcyBhIGNv
cHkgb2YgdGhlIHZhcmlhYmxlcyBkaWN0IHNvIHRoYXQgc3ViZGljdHMgY2FuJ3QgaW5mbHVlbmNl
CisgICAgICAjIHBhcmVudHMuCisgICAgICBQcm9jZXNzVmFyaWFibGVzQW5kQ29uZGl0aW9uc0lu
RGljdCh2YWx1ZSwgaXNfbGF0ZSwgdmFyaWFibGVzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnVpbGRfZmlsZSwga2V5KQorICAgIGVsaWYgaXNpbnN0YW5jZSh2
YWx1ZSwgbGlzdCk6CisgICAgICAjIFRoZSBsaXN0IGl0c2VsZiBjYW4ndCBpbmZsdWVuY2UgdGhl
IHZhcmlhYmxlcyBkaWN0LCBhbmQKKyAgICAgICMgUHJvY2Vzc1ZhcmlhYmxlc0FuZENvbmRpdGlv
bnNJbkxpc3Qgd2lsbCBtYWtlIGNvcGllcyBvZiB0aGUgdmFyaWFibGVzCisgICAgICAjIGRpY3Qg
aWYgaXQgbmVlZHMgdG8gcGFzcyBpdCB0byBzb21ldGhpbmcgdGhhdCBjYW4gaW5mbHVlbmNlIGl0
LiAgTm8KKyAgICAgICMgY29weSBpcyBuZWNlc3NhcnkgaGVyZS4KKyAgICAgIFByb2Nlc3NWYXJp
YWJsZXNBbmRDb25kaXRpb25zSW5MaXN0KHZhbHVlLCBpc19sYXRlLCB2YXJpYWJsZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9maWxlKQorICAgIGVs
aWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGludCk6CisgICAgICByYWlzZSBUeXBlRXJyb3IsICdV
bmtub3duIHR5cGUgJyArIHZhbHVlLl9fY2xhc3NfXy5fX25hbWVfXyArIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgJyBmb3IgJyArIGtleQorCisKK2RlZiBQcm9jZXNzVmFyaWFibGVzQW5kQ29u
ZGl0aW9uc0luTGlzdCh0aGVfbGlzdCwgaXNfbGF0ZSwgdmFyaWFibGVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX2ZpbGUpOgorICAjIEl0ZXJhdGUgdXNp
bmcgYW4gaW5kZXggc28gdGhhdCBuZXcgdmFsdWVzIGNhbiBiZSBhc3NpZ25lZCBpbnRvIHRoZV9s
aXN0LgorICBpbmRleCA9IDAKKyAgd2hpbGUgaW5kZXggPCBsZW4odGhlX2xpc3QpOgorICAgIGl0
ZW0gPSB0aGVfbGlzdFtpbmRleF0KKyAgICBpZiBpc2luc3RhbmNlKGl0ZW0sIGRpY3QpOgorICAg
ICAgIyBNYWtlIGEgY29weSBvZiB0aGUgdmFyaWFibGVzIGRpY3Qgc28gdGhhdCBpdCB3b24ndCBp
bmZsdWVuY2UgYW55dGhpbmcKKyAgICAgICMgb3V0c2lkZSBvZiBpdHMgb3duIHNjb3BlLgorICAg
ICAgUHJvY2Vzc1ZhcmlhYmxlc0FuZENvbmRpdGlvbnNJbkRpY3QoaXRlbSwgaXNfbGF0ZSwgdmFy
aWFibGVzLCBidWlsZF9maWxlKQorICAgIGVsaWYgaXNpbnN0YW5jZShpdGVtLCBsaXN0KToKKyAg
ICAgIFByb2Nlc3NWYXJpYWJsZXNBbmRDb25kaXRpb25zSW5MaXN0KGl0ZW0sIGlzX2xhdGUsIHZh
cmlhYmxlcywgYnVpbGRfZmlsZSkKKyAgICBlbGlmIGlzaW5zdGFuY2UoaXRlbSwgc3RyKToKKyAg
ICAgIGV4cGFuZGVkID0gRXhwYW5kVmFyaWFibGVzKGl0ZW0sIGlzX2xhdGUsIHZhcmlhYmxlcywg
YnVpbGRfZmlsZSkKKyAgICAgIGlmIGlzaW5zdGFuY2UoZXhwYW5kZWQsIHN0cikgb3IgaXNpbnN0
YW5jZShleHBhbmRlZCwgaW50KToKKyAgICAgICAgdGhlX2xpc3RbaW5kZXhdID0gZXhwYW5kZWQK
KyAgICAgIGVsaWYgaXNpbnN0YW5jZShleHBhbmRlZCwgbGlzdCk6CisgICAgICAgIGRlbCB0aGVf
bGlzdFtpbmRleF0KKyAgICAgICAgZm9yIGV4cGFuZGVkX2l0ZW0gaW4gZXhwYW5kZWQ6CisgICAg
ICAgICAgdGhlX2xpc3QuaW5zZXJ0KGluZGV4LCBleHBhbmRlZF9pdGVtKQorICAgICAgICAgIGlu
ZGV4ID0gaW5kZXggKyAxCisKKyAgICAgICAgIyBpbmRleCBub3cgaWRlbnRpZmllcyB0aGUgbmV4
dCBpdGVtIHRvIGV4YW1pbmUuICBDb250aW51ZSByaWdodCBub3cKKyAgICAgICAgIyB3aXRob3V0
IGZhbGxpbmcgaW50byB0aGUgaW5kZXggaW5jcmVtZW50IGJlbG93LgorICAgICAgICBjb250aW51
ZQorICAgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgXAorICAgICAgICAgICAg
ICAnVmFyaWFibGUgZXhwYW5zaW9uIGluIHRoaXMgY29udGV4dCBwZXJtaXRzIHN0cmluZ3MgYW5k
ICcgKyBcCisgICAgICAgICAgICAgICdsaXN0cyBvbmx5LCBmb3VuZCAnICsgZXhwYW5kZWQuX19j
bGFzc19fLl9fbmFtZV9fICsgJyBhdCAnICsgXAorICAgICAgICAgICAgICBpbmRleAorICAgIGVs
aWYgbm90IGlzaW5zdGFuY2UoaXRlbSwgaW50KToKKyAgICAgIHJhaXNlIFR5cGVFcnJvciwgJ1Vu
a25vd24gdHlwZSAnICsgaXRlbS5fX2NsYXNzX18uX19uYW1lX18gKyBcCisgICAgICAgICAgICAg
ICAgICAgICAgICcgYXQgaW5kZXggJyArIGluZGV4CisgICAgaW5kZXggPSBpbmRleCArIDEKKwor
CitkZWYgQnVpbGRUYXJnZXRzRGljdChkYXRhKToKKyAgIiIiQnVpbGRzIGEgZGljdCBtYXBwaW5n
IGZ1bGx5LXF1YWxpZmllZCB0YXJnZXQgbmFtZXMgdG8gdGhlaXIgdGFyZ2V0IGRpY3RzLgorCisg
IHxkYXRhfCBpcyBhIGRpY3QgbWFwcGluZyBsb2FkZWQgYnVpbGQgZmlsZXMgYnkgcGF0aG5hbWUg
cmVsYXRpdmUgdG8gdGhlCisgIGN1cnJlbnQgZGlyZWN0b3J5LiAgVmFsdWVzIGluIHxkYXRhfCBh
cmUgYnVpbGQgZmlsZSBjb250ZW50cy4gIEZvciBlYWNoCisgIHxkYXRhfCB2YWx1ZSB3aXRoIGEg
InRhcmdldHMiIGtleSwgdGhlIHZhbHVlIG9mIHRoZSAidGFyZ2V0cyIga2V5IGlzIHRha2VuCisg
IGFzIGEgbGlzdCBjb250YWluaW5nIHRhcmdldCBkaWN0cy4gIEVhY2ggdGFyZ2V0J3MgZnVsbHkt
cXVhbGlmaWVkIG5hbWUgaXMKKyAgY29uc3RydWN0ZWQgZnJvbSB0aGUgcGF0aG5hbWUgb2YgdGhl
IGJ1aWxkIGZpbGUgKHxkYXRhfCBrZXkpIGFuZCBpdHMKKyAgInRhcmdldF9uYW1lIiBwcm9wZXJ0
eS4gIFRoZXNlIGZ1bGx5LXF1YWxpZmllZCBuYW1lcyBhcmUgdXNlZCBhcyB0aGUga2V5cworICBp
biB0aGUgcmV0dXJuZWQgZGljdC4gIFRoZXNlIGtleXMgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIHRh
cmdldCBkaWN0cywKKyAgdGhlIGRpY3RzIGluIHRoZSAidGFyZ2V0cyIgbGlzdHMuCisgICIiIgor
CisgIHRhcmdldHMgPSB7fQorICBmb3IgYnVpbGRfZmlsZSBpbiBkYXRhWyd0YXJnZXRfYnVpbGRf
ZmlsZXMnXToKKyAgICBmb3IgdGFyZ2V0IGluIGRhdGFbYnVpbGRfZmlsZV0uZ2V0KCd0YXJnZXRz
JywgW10pOgorICAgICAgdGFyZ2V0X25hbWUgPSBneXAuY29tbW9uLlF1YWxpZmllZFRhcmdldChi
dWlsZF9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0YXJnZXRbJ3RhcmdldF9uYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRhcmdldFsndG9vbHNldCddKQorICAgICAgaWYgdGFyZ2V0X25hbWUg
aW4gdGFyZ2V0czoKKyAgICAgICAgcmFpc2UgS2V5RXJyb3IsICdEdXBsaWNhdGUgdGFyZ2V0IGRl
ZmluaXRpb25zIGZvciAnICsgdGFyZ2V0X25hbWUKKyAgICAgIHRhcmdldHNbdGFyZ2V0X25hbWVd
ID0gdGFyZ2V0CisKKyAgcmV0dXJuIHRhcmdldHMKKworCitkZWYgUXVhbGlmeURlcGVuZGVuY2ll
cyh0YXJnZXRzKToKKyAgIiIiTWFrZSBkZXBlbmRlbmN5IGxpbmtzIGZ1bGx5LXF1YWxpZmllZCBy
ZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisKKyAgfHRhcmdldHN8IGlzIGEgZGlj
dCBtYXBwaW5nIGZ1bGx5LXF1YWxpZmllZCB0YXJnZXQgbmFtZXMgdG8gdGhlaXIgdGFyZ2V0Cisg
IGRpY3RzLiAgRm9yIGVhY2ggdGFyZ2V0IGluIHRoaXMgZGljdCwga2V5cyBrbm93biB0byBjb250
YWluIGRlcGVuZGVuY3kKKyAgbGlua3MgYXJlIGV4YW1pbmVkLCBhbmQgYW55IGRlcGVuZGVuY2ll
cyByZWZlcmVuY2VkIHdpbGwgYmUgcmV3cml0dGVuCisgIHNvIHRoYXQgdGhleSBhcmUgZnVsbHkt
cXVhbGlmaWVkIGFuZCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgIEFsbCBy
ZXdyaXR0ZW4gZGVwZW5kZW5jaWVzIGFyZSBzdWl0YWJsZSBmb3IgdXNlIGFzIGtleXMgdG8gfHRh
cmdldHN8IG9yIGEKKyAgc2ltaWxhciBkaWN0LgorICAiIiIKKworICBmb3IgdGFyZ2V0LCB0YXJn
ZXRfZGljdCBpbiB0YXJnZXRzLml0ZXJpdGVtcygpOgorICAgIHRhcmdldF9idWlsZF9maWxlID0g
Z3lwLmNvbW1vbi5CdWlsZEZpbGUodGFyZ2V0KQorICAgIHRvb2xzZXQgPSB0YXJnZXRfZGljdFsn
dG9vbHNldCddCisgICAgZm9yIGRlcGVuZGVuY3lfa2V5IGluIGRlcGVuZGVuY3lfc2VjdGlvbnM6
CisgICAgICBkZXBlbmRlbmNpZXMgPSB0YXJnZXRfZGljdC5nZXQoZGVwZW5kZW5jeV9rZXksIFtd
KQorICAgICAgZm9yIGluZGV4IGluIHhyYW5nZSgwLCBsZW4oZGVwZW5kZW5jaWVzKSk6CisgICAg
ICAgIGRlcF9maWxlLCBkZXBfdGFyZ2V0LCBkZXBfdG9vbHNldCA9IGd5cC5jb21tb24uUmVzb2x2
ZVRhcmdldCgKKyAgICAgICAgICAgIHRhcmdldF9idWlsZF9maWxlLCBkZXBlbmRlbmNpZXNbaW5k
ZXhdLCB0b29sc2V0KQorICAgICAgICBnbG9iYWwgbXVsdGlwbGVfdG9vbHNldHMKKyAgICAgICAg
aWYgbm90IG11bHRpcGxlX3Rvb2xzZXRzOgorICAgICAgICAgICMgSWdub3JlIHRvb2xzZXQgc3Bl
Y2lmaWNhdGlvbiBpbiB0aGUgZGVwZW5kZW5jeSBpZiBpdCBpcyBzcGVjaWZpZWQuCisgICAgICAg
ICAgZGVwX3Rvb2xzZXQgPSB0b29sc2V0CisgICAgICAgIGRlcGVuZGVuY3kgPSBneXAuY29tbW9u
LlF1YWxpZmllZFRhcmdldChkZXBfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlcF90YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXBfdG9vbHNldCkKKyAgICAgICAgZGVwZW5kZW5jaWVz
W2luZGV4XSA9IGRlcGVuZGVuY3kKKworICAgICAgICAjIE1ha2Ugc3VyZSBhbnl0aGluZyBhcHBl
YXJpbmcgaW4gYSBsaXN0IG90aGVyIHRoYW4gImRlcGVuZGVuY2llcyIgYWxzbworICAgICAgICAj
IGFwcGVhcnMgaW4gdGhlICJkZXBlbmRlbmNpZXMiIGxpc3QuCisgICAgICAgIGlmIGRlcGVuZGVu
Y3lfa2V5ICE9ICdkZXBlbmRlbmNpZXMnIGFuZCBcCisgICAgICAgICAgIGRlcGVuZGVuY3kgbm90
IGluIHRhcmdldF9kaWN0WydkZXBlbmRlbmNpZXMnXToKKyAgICAgICAgICByYWlzZSBLZXlFcnJv
ciwgJ0ZvdW5kICcgKyBkZXBlbmRlbmN5ICsgJyBpbiAnICsgZGVwZW5kZW5jeV9rZXkgKyBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICcgb2YgJyArIHRhcmdldCArICcsIGJ1dCBub3QgaW4g
ZGVwZW5kZW5jaWVzJworCisKK2RlZiBFeHBhbmRXaWxkY2FyZERlcGVuZGVuY2llcyh0YXJnZXRz
LCBkYXRhKToKKyAgIiIiRXhwYW5kcyBkZXBlbmRlbmNpZXMgc3BlY2lmaWVkIGFzIGJ1aWxkX2Zp
bGU6Ki4KKworICBGb3IgZWFjaCB0YXJnZXQgaW4gfHRhcmdldHN8LCBleGFtaW5lcyBzZWN0aW9u
cyBjb250YWluaW5nIGxpbmtzIHRvIG90aGVyCisgIHRhcmdldHMuICBJZiBhbnkgc3VjaCBzZWN0
aW9uIGNvbnRhaW5zIGEgbGluayBvZiB0aGUgZm9ybSBidWlsZF9maWxlOiosIGl0CisgIGlzIHRh
a2VuIGFzIGEgd2lsZGNhcmQgbGluaywgYW5kIGlzIGV4cGFuZGVkIHRvIGxpc3QgZWFjaCB0YXJn
ZXQgaW4KKyAgYnVpbGRfZmlsZS4gIFRoZSB8ZGF0YXwgZGljdCBwcm92aWRlcyBhY2Nlc3MgdG8g
YnVpbGQgZmlsZSBkaWN0cy4KKworICBBbnkgdGFyZ2V0IHRoYXQgZG9lcyBub3Qgd2lzaCB0byBi
ZSBpbmNsdWRlZCBieSB3aWxkY2FyZCBjYW4gcHJvdmlkZSBhbgorICBvcHRpb25hbCAic3VwcHJl
c3Nfd2lsZGNhcmQiIGtleSBpbiBpdHMgdGFyZ2V0IGRpY3QuICBXaGVuIHByZXNlbnQgYW5kCisg
IHRydWUsIGEgd2lsZGNhcmQgZGVwZW5kZW5jeSBsaW5rIHdpbGwgbm90IGluY2x1ZGUgc3VjaCB0
YXJnZXRzLgorCisgIEFsbCBkZXBlbmRlbmN5IG5hbWVzLCBpbmNsdWRpbmcgdGhlIGtleXMgdG8g
fHRhcmdldHN8IGFuZCB0aGUgdmFsdWVzIGluIGVhY2gKKyAgZGVwZW5kZW5jeSBsaXN0LCBtdXN0
IGJlIHF1YWxpZmllZCB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLgorICAiIiIKKworICBm
b3IgdGFyZ2V0LCB0YXJnZXRfZGljdCBpbiB0YXJnZXRzLml0ZXJpdGVtcygpOgorICAgIHRvb2xz
ZXQgPSB0YXJnZXRfZGljdFsndG9vbHNldCddCisgICAgdGFyZ2V0X2J1aWxkX2ZpbGUgPSBneXAu
Y29tbW9uLkJ1aWxkRmlsZSh0YXJnZXQpCisgICAgZm9yIGRlcGVuZGVuY3lfa2V5IGluIGRlcGVu
ZGVuY3lfc2VjdGlvbnM6CisgICAgICBkZXBlbmRlbmNpZXMgPSB0YXJnZXRfZGljdC5nZXQoZGVw
ZW5kZW5jeV9rZXksIFtdKQorCisgICAgICAjIExvb3AgdGhpcyB3YXkgaW5zdGVhZCBvZiAiZm9y
IGRlcGVuZGVuY3kgaW4iIG9yICJmb3IgaW5kZXggaW4geHJhbmdlIgorICAgICAgIyBiZWNhdXNl
IHRoZSBkZXBlbmRlbmNpZXMgbGlzdCB3aWxsIGJlIG1vZGlmaWVkIHdpdGhpbiB0aGUgbG9vcCBi
b2R5LgorICAgICAgaW5kZXggPSAwCisgICAgICB3aGlsZSBpbmRleCA8IGxlbihkZXBlbmRlbmNp
ZXMpOgorICAgICAgICAoZGVwZW5kZW5jeV9idWlsZF9maWxlLCBkZXBlbmRlbmN5X3RhcmdldCwg
ZGVwZW5kZW5jeV90b29sc2V0KSA9IFwKKyAgICAgICAgICAgIGd5cC5jb21tb24uUGFyc2VRdWFs
aWZpZWRUYXJnZXQoZGVwZW5kZW5jaWVzW2luZGV4XSkKKyAgICAgICAgaWYgZGVwZW5kZW5jeV90
YXJnZXQgIT0gJyonIGFuZCBkZXBlbmRlbmN5X3Rvb2xzZXQgIT0gJyonOgorICAgICAgICAgICMg
Tm90IGEgd2lsZGNhcmQuICBLZWVwIGl0IG1vdmluZy4KKyAgICAgICAgICBpbmRleCA9IGluZGV4
ICsgMQorICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgaWYgZGVwZW5kZW5jeV9idWlsZF9m
aWxlID09IHRhcmdldF9idWlsZF9maWxlOgorICAgICAgICAgICMgSXQncyBhbiBlcnJvciBmb3Ig
YSB0YXJnZXQgdG8gZGVwZW5kIG9uIGFsbCBvdGhlciB0YXJnZXRzIGluCisgICAgICAgICAgIyB0
aGUgc2FtZSBmaWxlLCBiZWNhdXNlIGEgdGFyZ2V0IGNhbm5vdCBkZXBlbmQgb24gaXRzZWxmLgor
ICAgICAgICAgIHJhaXNlIEtleUVycm9yLCAnRm91bmQgd2lsZGNhcmQgaW4gJyArIGRlcGVuZGVu
Y3lfa2V5ICsgJyBvZiAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgKyAn
IHJlZmVycmluZyB0byBzYW1lIGJ1aWxkIGZpbGUnCisKKyAgICAgICAgIyBUYWtlIHRoZSB3aWxk
Y2FyZCBvdXQgYW5kIGFkanVzdCB0aGUgaW5kZXggc28gdGhhdCB0aGUgbmV4dAorICAgICAgICAj
IGRlcGVuZGVuY3kgaW4gdGhlIGxpc3Qgd2lsbCBiZSBwcm9jZXNzZWQgdGhlIG5leHQgdGltZSB0
aHJvdWdoIHRoZQorICAgICAgICAjIGxvb3AuCisgICAgICAgIGRlbCBkZXBlbmRlbmNpZXNbaW5k
ZXhdCisgICAgICAgIGluZGV4ID0gaW5kZXggLSAxCisKKyAgICAgICAgIyBMb29wIHRocm91Z2gg
dGhlIHRhcmdldHMgaW4gdGhlIG90aGVyIGJ1aWxkIGZpbGUsIGFkZGluZyB0aGVtIHRvCisgICAg
ICAgICMgdGhpcyB0YXJnZXQncyBsaXN0IG9mIGRlcGVuZGVuY2llcyBpbiBwbGFjZSBvZiB0aGUg
cmVtb3ZlZAorICAgICAgICAjIHdpbGRjYXJkLgorICAgICAgICBkZXBlbmRlbmN5X3RhcmdldF9k
aWN0cyA9IGRhdGFbZGVwZW5kZW5jeV9idWlsZF9maWxlXVsndGFyZ2V0cyddCisgICAgICAgIGZv
ciBkZXBlbmRlbmN5X3RhcmdldF9kaWN0IGluIGRlcGVuZGVuY3lfdGFyZ2V0X2RpY3RzOgorICAg
ICAgICAgIGlmIGludChkZXBlbmRlbmN5X3RhcmdldF9kaWN0LmdldCgnc3VwcHJlc3Nfd2lsZGNh
cmQnLCBGYWxzZSkpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICBkZXBlbmRlbmN5
X3RhcmdldF9uYW1lID0gZGVwZW5kZW5jeV90YXJnZXRfZGljdFsndGFyZ2V0X25hbWUnXQorICAg
ICAgICAgIGlmIChkZXBlbmRlbmN5X3RhcmdldCAhPSAnKicgYW5kCisgICAgICAgICAgICAgIGRl
cGVuZGVuY3lfdGFyZ2V0ICE9IGRlcGVuZGVuY3lfdGFyZ2V0X25hbWUpOgorICAgICAgICAgICAg
Y29udGludWUKKyAgICAgICAgICBkZXBlbmRlbmN5X3RhcmdldF90b29sc2V0ID0gZGVwZW5kZW5j
eV90YXJnZXRfZGljdFsndG9vbHNldCddCisgICAgICAgICAgaWYgKGRlcGVuZGVuY3lfdG9vbHNl
dCAhPSAnKicgYW5kCisgICAgICAgICAgICAgIGRlcGVuZGVuY3lfdG9vbHNldCAhPSBkZXBlbmRl
bmN5X3RhcmdldF90b29sc2V0KToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgZGVw
ZW5kZW5jeSA9IGd5cC5jb21tb24uUXVhbGlmaWVkVGFyZ2V0KGRlcGVuZGVuY3lfYnVpbGRfZmls
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVw
ZW5kZW5jeV90YXJnZXRfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVwZW5kZW5jeV90YXJnZXRfdG9vbHNldCkKKyAgICAgICAgICBpbmRl
eCA9IGluZGV4ICsgMQorICAgICAgICAgIGRlcGVuZGVuY2llcy5pbnNlcnQoaW5kZXgsIGRlcGVu
ZGVuY3kpCisKKyAgICAgICAgaW5kZXggPSBpbmRleCArIDEKKworCitjbGFzcyBEZXBlbmRlbmN5
R3JhcGhOb2RlKG9iamVjdCk6CisgICIiIgorCisgIEF0dHJpYnV0ZXM6CisgICAgcmVmOiBBIHJl
ZmVyZW5jZSB0byBhbiBvYmplY3QgdGhhdCB0aGlzIERlcGVuZGVuY3lHcmFwaE5vZGUgcmVwcmVz
ZW50cy4KKyAgICBkZXBlbmRlbmNpZXM6IExpc3Qgb2YgRGVwZW5kZW5jeUdyYXBoTm9kZXMgb24g
d2hpY2ggdGhpcyBvbmUgZGVwZW5kcy4KKyAgICBkZXBlbmRlbnRzOiBMaXN0IG9mIERlcGVuZGVu
Y3lHcmFwaE5vZGVzIHRoYXQgZGVwZW5kIG9uIHRoaXMgb25lLgorICAiIiIKKworICBjbGFzcyBD
aXJjdWxhckV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKworICBkZWYgX19pbml0X18o
c2VsZiwgcmVmKToKKyAgICBzZWxmLnJlZiA9IHJlZgorICAgIHNlbGYuZGVwZW5kZW5jaWVzID0g
W10KKyAgICBzZWxmLmRlcGVuZGVudHMgPSBbXQorCisgIGRlZiBGbGF0dGVuVG9MaXN0KHNlbGYp
OgorICAgICMgZmxhdF9saXN0IGlzIHRoZSBzb3J0ZWQgbGlzdCBvZiBkZXBlbmRlbmNpZXMgLSBh
Y3R1YWxseSwgdGhlIGxpc3QgaXRlbXMKKyAgICAjIGFyZSB0aGUgInJlZiIgYXR0cmlidXRlcyBv
ZiBEZXBlbmRlbmN5R3JhcGhOb2Rlcy4gIEV2ZXJ5IHRhcmdldCB3aWxsCisgICAgIyBhcHBlYXIg
aW4gZmxhdF9saXN0IGFmdGVyIGFsbCBvZiBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgYmVmb3JlIGFs
bCBvZiBpdHMKKyAgICAjIGRlcGVuZGVudHMuCisgICAgZmxhdF9saXN0ID0gW10KKworICAgICMg
aW5fZGVncmVlX3plcm9zIGlzIHRoZSBsaXN0IG9mIERlcGVuZGVuY3lHcmFwaE5vZGVzIHRoYXQg
aGF2ZSBubworICAgICMgZGVwZW5kZW5jaWVzIG5vdCBpbiBmbGF0X2xpc3QuICBJbml0aWFsbHks
IGl0IGlzIGEgY29weSBvZiB0aGUgY2hpbGRyZW4KKyAgICAjIG9mIHRoaXMgbm9kZSwgYmVjYXVz
ZSB3aGVuIHRoZSBncmFwaCB3YXMgYnVpbHQsIG5vZGVzIHdpdGggbm8KKyAgICAjIGRlcGVuZGVu
Y2llcyB3ZXJlIG1hZGUgaW1wbGljaXQgZGVwZW5kZW50cyBvZiB0aGUgcm9vdCBub2RlLgorICAg
IGluX2RlZ3JlZV96ZXJvcyA9IHNlbGYuZGVwZW5kZW50c1s6XQorCisgICAgd2hpbGUgaW5fZGVn
cmVlX3plcm9zOgorICAgICAgIyBOb2RlcyBpbiBpbl9kZWdyZWVfemVyb3MgaGF2ZSBubyBkZXBl
bmRlbmNpZXMgbm90IGluIGZsYXRfbGlzdCwgc28gdGhleQorICAgICAgIyBjYW4gYmUgYXBwZW5k
ZWQgdG8gZmxhdF9saXN0LiAgVGFrZSB0aGVzZSBub2RlcyBvdXQgb2YgaW5fZGVncmVlX3plcm9z
CisgICAgICAjIGFzIHdvcmsgcHJvZ3Jlc3Nlcywgc28gdGhhdCB0aGUgbmV4dCBub2RlIHRvIHBy
b2Nlc3MgZnJvbSB0aGUgbGlzdCBjYW4KKyAgICAgICMgYWx3YXlzIGJlIGFjY2Vzc2VkIGF0IGEg
Y29uc2lzdGVudCBwb3NpdGlvbi4KKyAgICAgIG5vZGUgPSBpbl9kZWdyZWVfemVyb3MucG9wKDAp
CisgICAgICBmbGF0X2xpc3QuYXBwZW5kKG5vZGUucmVmKQorCisgICAgICAjIExvb2sgYXQgZGVw
ZW5kZW50cyBvZiB0aGUgbm9kZSBqdXN0IGFkZGVkIHRvIGZsYXRfbGlzdC4gIFNvbWUgb2YgdGhl
bQorICAgICAgIyBtYXkgbm93IGJlbG9uZyBpbiBpbl9kZWdyZWVfemVyb3MuCisgICAgICBmb3Ig
bm9kZV9kZXBlbmRlbnQgaW4gbm9kZS5kZXBlbmRlbnRzOgorICAgICAgICBpc19pbl9kZWdyZWVf
emVybyA9IFRydWUKKyAgICAgICAgZm9yIG5vZGVfZGVwZW5kZW50X2RlcGVuZGVuY3kgaW4gbm9k
ZV9kZXBlbmRlbnQuZGVwZW5kZW5jaWVzOgorICAgICAgICAgIGlmIG5vdCBub2RlX2RlcGVuZGVu
dF9kZXBlbmRlbmN5LnJlZiBpbiBmbGF0X2xpc3Q6CisgICAgICAgICAgICAjIFRoZSBkZXBlbmRl
bnQgb25lIG9yIG1vcmUgZGVwZW5kZW5jaWVzIG5vdCBpbiBmbGF0X2xpc3QuICBUaGVyZQorICAg
ICAgICAgICAgIyB3aWxsIGJlIG1vcmUgY2hhbmNlcyB0byBhZGQgaXQgdG8gZmxhdF9saXN0IHdo
ZW4gZXhhbWluaW5nCisgICAgICAgICAgICAjIGl0IGFnYWluIGFzIGEgZGVwZW5kZW50IG9mIHRo
b3NlIG90aGVyIGRlcGVuZGVuY2llcywgcHJvdmlkZWQKKyAgICAgICAgICAgICMgdGhhdCB0aGVy
ZSBhcmUgbm8gY3ljbGVzLgorICAgICAgICAgICAgaXNfaW5fZGVncmVlX3plcm8gPSBGYWxzZQor
ICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBpZiBpc19pbl9kZWdyZWVfemVybzoKKyAgICAg
ICAgICAjIEFsbCBvZiB0aGUgZGVwZW5kZW50J3MgZGVwZW5kZW5jaWVzIGFyZSBhbHJlYWR5IGlu
IGZsYXRfbGlzdC4gIEFkZAorICAgICAgICAgICMgaXQgdG8gaW5fZGVncmVlX3plcm9zIHdoZXJl
IGl0IHdpbGwgYmUgcHJvY2Vzc2VkIGluIGEgZnV0dXJlCisgICAgICAgICAgIyBpdGVyYXRpb24g
b2YgdGhlIG91dGVyIGxvb3AuCisgICAgICAgICAgaW5fZGVncmVlX3plcm9zLmFwcGVuZChub2Rl
X2RlcGVuZGVudCkKKworICAgIHJldHVybiBmbGF0X2xpc3QKKworICBkZWYgRGlyZWN0RGVwZW5k
ZW5jaWVzKHNlbGYsIGRlcGVuZGVuY2llcz1Ob25lKToKKyAgICAiIiJSZXR1cm5zIGEgbGlzdCBv
ZiBqdXN0IGRpcmVjdCBkZXBlbmRlbmNpZXMuIiIiCisgICAgaWYgZGVwZW5kZW5jaWVzID09IE5v
bmU6CisgICAgICBkZXBlbmRlbmNpZXMgPSBbXQorCisgICAgZm9yIGRlcGVuZGVuY3kgaW4gc2Vs
Zi5kZXBlbmRlbmNpZXM6CisgICAgICAjIENoZWNrIGZvciBOb25lLCBjb3JyZXNwb25kaW5nIHRv
IHRoZSByb290IG5vZGUuCisgICAgICBpZiBkZXBlbmRlbmN5LnJlZiAhPSBOb25lIGFuZCBkZXBl
bmRlbmN5LnJlZiBub3QgaW4gZGVwZW5kZW5jaWVzOgorICAgICAgICBkZXBlbmRlbmNpZXMuYXBw
ZW5kKGRlcGVuZGVuY3kucmVmKQorCisgICAgcmV0dXJuIGRlcGVuZGVuY2llcworCisgIGRlZiBf
QWRkSW1wb3J0ZWREZXBlbmRlbmNpZXMoc2VsZiwgdGFyZ2V0cywgZGVwZW5kZW5jaWVzPU5vbmUp
OgorICAgICIiIkdpdmVuIGEgbGlzdCBvZiBkaXJlY3QgZGVwZW5kZW5jaWVzLCBhZGRzIGluZGly
ZWN0IGRlcGVuZGVuY2llcyB0aGF0CisgICAgb3RoZXIgZGVwZW5kZW5jaWVzIGhhdmUgZGVjbGFy
ZWQgdG8gZXhwb3J0IHRoZWlyIHNldHRpbmdzLgorCisgICAgVGhpcyBtZXRob2QgZG9lcyBub3Qg
b3BlcmF0ZSBvbiBzZWxmLiAgUmF0aGVyLCBpdCBvcGVyYXRlcyBvbiB0aGUgbGlzdAorICAgIG9m
IGRlcGVuZGVuY2llcyBpbiB0aGUgfGRlcGVuZGVuY2llc3wgYXJndW1lbnQuICBGb3IgZWFjaCBk
ZXBlbmRlbmN5IGluCisgICAgdGhhdCBsaXN0LCBpZiBhbnkgZGVjbGFyZXMgdGhhdCBpdCBleHBv
cnRzIHRoZSBzZXR0aW5ncyBvZiBvbmUgb2YgaXRzCisgICAgb3duIGRlcGVuZGVuY2llcywgdGhv
c2UgZGVwZW5kZW5jaWVzIHdob3NlIHNldHRpbmdzIGFyZSAicGFzc2VkIHRocm91Z2giCisgICAg
YXJlIGFkZGVkIHRvIHRoZSBsaXN0LiAgQXMgbmV3IGl0ZW1zIGFyZSBhZGRlZCB0byB0aGUgbGlz
dCwgdGhleSB0b28gd2lsbAorICAgIGJlIHByb2Nlc3NlZCwgc28gaXQgaXMgcG9zc2libGUgdG8g
aW1wb3J0IHNldHRpbmdzIHRocm91Z2ggbXVsdGlwbGUgbGV2ZWxzCisgICAgb2YgZGVwZW5kZW5j
aWVzLgorCisgICAgVGhpcyBtZXRob2QgaXMgbm90IHRlcnJpYmx5IHVzZWZ1bCBvbiBpdHMgb3du
LCBpdCBkZXBlbmRzIG9uIGJlaW5nCisgICAgInByaW1lZCIgd2l0aCBhIGxpc3Qgb2YgZGlyZWN0
IGRlcGVuZGVuY2llcyBzdWNoIGFzIG9uZSBwcm92aWRlZCBieQorICAgIERpcmVjdERlcGVuZGVu
Y2llcy4gIERpcmVjdEFuZEltcG9ydGVkRGVwZW5kZW5jaWVzIGlzIGludGVuZGVkIHRvIGJlIHRo
ZQorICAgIHB1YmxpYyBlbnRyeSBwb2ludC4KKyAgICAiIiIKKworICAgIGlmIGRlcGVuZGVuY2ll
cyA9PSBOb25lOgorICAgICAgZGVwZW5kZW5jaWVzID0gW10KKworICAgIGluZGV4ID0gMAorICAg
IHdoaWxlIGluZGV4IDwgbGVuKGRlcGVuZGVuY2llcyk6CisgICAgICBkZXBlbmRlbmN5ID0gZGVw
ZW5kZW5jaWVzW2luZGV4XQorICAgICAgZGVwZW5kZW5jeV9kaWN0ID0gdGFyZ2V0c1tkZXBlbmRl
bmN5XQorICAgICAgIyBBZGQgYW55IGRlcGVuZGVuY2llcyB3aG9zZSBzZXR0aW5ncyBzaG91bGQg
YmUgaW1wb3J0ZWQgdG8gdGhlIGxpc3QKKyAgICAgICMgaWYgbm90IGFscmVhZHkgcHJlc2VudC4g
IE5ld2x5LWFkZGVkIGl0ZW1zIHdpbGwgYmUgY2hlY2tlZCBmb3IKKyAgICAgICMgdGhlaXIgb3du
IGltcG9ydHMgd2hlbiB0aGUgbGlzdCBpdGVyYXRpb24gcmVhY2hlcyB0aGVtLgorICAgICAgIyBS
YXRoZXIgdGhhbiBzaW1wbHkgYXBwZW5kaW5nIG5ldyBpdGVtcywgaW5zZXJ0IHRoZW0gYWZ0ZXIg
dGhlCisgICAgICAjIGRlcGVuZGVuY3kgdGhhdCBleHBvcnRlZCB0aGVtLiAgVGhpcyBpcyBkb25l
IHRvIG1vcmUgY2xvc2VseSBtYXRjaAorICAgICAgIyB0aGUgZGVwdGgtZmlyc3QgbWV0aG9kIHVz
ZWQgYnkgRGVlcERlcGVuZGVuY2llcy4KKyAgICAgIGFkZF9pbmRleCA9IDEKKyAgICAgIGZvciBp
bXBvcnRlZF9kZXBlbmRlbmN5IGluIFwKKyAgICAgICAgICBkZXBlbmRlbmN5X2RpY3QuZ2V0KCdl
eHBvcnRfZGVwZW5kZW50X3NldHRpbmdzJywgW10pOgorICAgICAgICBpZiBpbXBvcnRlZF9kZXBl
bmRlbmN5IG5vdCBpbiBkZXBlbmRlbmNpZXM6CisgICAgICAgICAgZGVwZW5kZW5jaWVzLmluc2Vy
dChpbmRleCArIGFkZF9pbmRleCwgaW1wb3J0ZWRfZGVwZW5kZW5jeSkKKyAgICAgICAgICBhZGRf
aW5kZXggPSBhZGRfaW5kZXggKyAxCisgICAgICBpbmRleCA9IGluZGV4ICsgMQorCisgICAgcmV0
dXJuIGRlcGVuZGVuY2llcworCisgIGRlZiBEaXJlY3RBbmRJbXBvcnRlZERlcGVuZGVuY2llcyhz
ZWxmLCB0YXJnZXRzLCBkZXBlbmRlbmNpZXM9Tm9uZSk6CisgICAgIiIiUmV0dXJucyBhIGxpc3Qg
b2YgYSB0YXJnZXQncyBkaXJlY3QgZGVwZW5kZW5jaWVzIGFuZCBhbGwgaW5kaXJlY3QKKyAgICBk
ZXBlbmRlbmNpZXMgdGhhdCBhIGRlcGVuZGVuY3kgaGFzIGFkdmVydGlzZWQgc2V0dGluZ3Mgc2hv
dWxkIGJlIGV4cG9ydGVkCisgICAgdGhyb3VnaCB0aGUgZGVwZW5kZW5jeSBmb3IuCisgICAgIiIi
CisKKyAgICBkZXBlbmRlbmNpZXMgPSBzZWxmLkRpcmVjdERlcGVuZGVuY2llcyhkZXBlbmRlbmNp
ZXMpCisgICAgcmV0dXJuIHNlbGYuX0FkZEltcG9ydGVkRGVwZW5kZW5jaWVzKHRhcmdldHMsIGRl
cGVuZGVuY2llcykKKworICBkZWYgRGVlcERlcGVuZGVuY2llcyhzZWxmLCBkZXBlbmRlbmNpZXM9
Tm9uZSk6CisgICAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgYWxsIG9mIGEgdGFyZ2V0J3MgZGVwZW5k
ZW5jaWVzLCByZWN1cnNpdmVseS4iIiIKKyAgICBpZiBkZXBlbmRlbmNpZXMgPT0gTm9uZToKKyAg
ICAgIGRlcGVuZGVuY2llcyA9IFtdCisKKyAgICBmb3IgZGVwZW5kZW5jeSBpbiBzZWxmLmRlcGVu
ZGVuY2llczoKKyAgICAgICMgQ2hlY2sgZm9yIE5vbmUsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJv
b3Qgbm9kZS4KKyAgICAgIGlmIGRlcGVuZGVuY3kucmVmICE9IE5vbmUgYW5kIGRlcGVuZGVuY3ku
cmVmIG5vdCBpbiBkZXBlbmRlbmNpZXM6CisgICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoZGVw
ZW5kZW5jeS5yZWYpCisgICAgICAgIGRlcGVuZGVuY3kuRGVlcERlcGVuZGVuY2llcyhkZXBlbmRl
bmNpZXMpCisKKyAgICByZXR1cm4gZGVwZW5kZW5jaWVzCisKKyAgZGVmIExpbmtEZXBlbmRlbmNp
ZXMoc2VsZiwgdGFyZ2V0cywgZGVwZW5kZW5jaWVzPU5vbmUsIGluaXRpYWw9VHJ1ZSk6CisgICAg
IiIiUmV0dXJucyBhIGxpc3Qgb2YgZGVwZW5kZW5jeSB0YXJnZXRzIHRoYXQgYXJlIGxpbmtlZCBp
bnRvIHRoaXMgdGFyZ2V0LgorCisgICAgVGhpcyBmdW5jdGlvbiBoYXMgYSBzcGxpdCBwZXJzb25h
bGl0eSwgZGVwZW5kaW5nIG9uIHRoZSBzZXR0aW5nIG9mCisgICAgfGluaXRpYWx8LiAgT3V0c2lk
ZSBjYWxsZXJzIHNob3VsZCBhbHdheXMgbGVhdmUgfGluaXRpYWx8IGF0IGl0cyBkZWZhdWx0Cisg
ICAgc2V0dGluZy4KKworICAgIFdoZW4gYWRkaW5nIGEgdGFyZ2V0IHRvIHRoZSBsaXN0IG9mIGRl
cGVuZGVuY2llcywgdGhpcyBmdW5jdGlvbiB3aWxsCisgICAgcmVjdXJzZSBpbnRvIGl0c2VsZiB3
aXRoIHxpbml0aWFsfCBzZXQgdG8gRmFsc2UsIHRvIGNvbGxlY3QgZGVwZW5lZGVuY2llcworICAg
IHRoYXQgYXJlIGxpbmtlZCBpbnRvIHRoZSBsaW5rYWJsZSB0YXJnZXQgZm9yIHdoaWNoIHRoZSBs
aXN0IGlzIGJlaW5nIGJ1aWx0LgorICAgICIiIgorICAgIGlmIGRlcGVuZGVuY2llcyA9PSBOb25l
OgorICAgICAgZGVwZW5kZW5jaWVzID0gW10KKworICAgICMgQ2hlY2sgZm9yIE5vbmUsIGNvcnJl
c3BvbmRpbmcgdG8gdGhlIHJvb3Qgbm9kZS4KKyAgICBpZiBzZWxmLnJlZiA9PSBOb25lOgorICAg
ICAgcmV0dXJuIGRlcGVuZGVuY2llcworCisgICAgIyBJdCdzIGtpbmQgb2Ygc3Vja3kgdGhhdCB8
dGFyZ2V0c3wgaGFzIHRvIGJlIHBhc3NlZCBpbnRvIHRoaXMgZnVuY3Rpb24sCisgICAgIyBidXQg
dGhhdCdzIHByZXNlbnRseSB0aGUgZWFzaWVzdCB3YXkgdG8gYWNjZXNzIHRoZSB0YXJnZXQgZGlj
dHMgc28gdGhhdAorICAgICMgdGhpcyBmdW5jdGlvbiBjYW4gZmluZCB0YXJnZXQgdHlwZXMuCisK
KyAgICBpZiBub3QgJ3RhcmdldF9uYW1lJyBpbiB0YXJnZXRzW3NlbGYucmVmXToKKyAgICAgIHJh
aXNlIEV4Y2VwdGlvbigiTWlzc2luZyAndGFyZ2V0X25hbWUnIGZpZWxkIGluIHRhcmdldC4iKQor
CisgICAgdHJ5OgorICAgICAgdGFyZ2V0X3R5cGUgPSB0YXJnZXRzW3NlbGYucmVmXVsndHlwZSdd
CisgICAgZXhjZXB0IEtleUVycm9yLCBlOgorICAgICAgcmFpc2UgRXhjZXB0aW9uKCJNaXNzaW5n
ICd0eXBlJyBmaWVsZCBpbiB0YXJnZXQgJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICB0YXJn
ZXRzW3NlbGYucmVmXVsndGFyZ2V0X25hbWUnXSkKKworICAgIGlzX2xpbmthYmxlID0gdGFyZ2V0
X3R5cGUgaW4gbGlua2FibGVfdHlwZXMKKworICAgIGlmIGluaXRpYWwgYW5kIG5vdCBpc19saW5r
YWJsZToKKyAgICAgICMgSWYgdGhpcyBpcyB0aGUgZmlyc3QgdGFyZ2V0IGJlaW5nIGV4YW1pbmVk
IGFuZCBpdCdzIG5vdCBsaW5rYWJsZSwKKyAgICAgICMgcmV0dXJuIGFuIGVtcHR5IGxpc3Qgb2Yg
bGluayBkZXBlbmRlbmNpZXMsIGJlY2F1c2UgdGhlIGxpbmsKKyAgICAgICMgZGVwZW5kZW5jaWVz
IGFyZSBpbnRlbmRlZCB0byBhcHBseSB0byB0aGUgdGFyZ2V0IGl0c2VsZiAoaW5pdGlhbCBpcwor
ICAgICAgIyBUcnVlKSBhbmQgdGhpcyB0YXJnZXQgd29uJ3QgYmUgbGlua2VkLgorICAgICAgcmV0
dXJuIGRlcGVuZGVuY2llcworCisgICAgIyBFeGVjdXRhYmxlcyBhbmQgbG9hZGFibGUgbW9kdWxl
cyBhcmUgYWxyZWFkeSBmdWxseSBhbmQgZmluYWxseSBsaW5rZWQuCisgICAgIyBOb3RoaW5nIGVs
c2UgY2FuIGJlIGEgbGluayBkZXBlbmRlbmN5IG9mIHRoZW0sIHRoZXJlIGNhbiBvbmx5IGJlCisg
ICAgIyBkZXBlbmRlbmNpZXMgaW4gdGhlIHNlbnNlIHRoYXQgYSBkZXBlbmRlbnQgdGFyZ2V0IG1p
Z2h0IHJ1biBhbgorICAgICMgZXhlY3V0YWJsZSBvciBsb2FkIHRoZSBsb2FkYWJsZV9tb2R1bGUu
CisgICAgaWYgbm90IGluaXRpYWwgYW5kIHRhcmdldF90eXBlIGluICgnZXhlY3V0YWJsZScsICds
b2FkYWJsZV9tb2R1bGUnKToKKyAgICAgIHJldHVybiBkZXBlbmRlbmNpZXMKKworICAgICMgVGhl
IHRhcmdldCBpcyBsaW5rYWJsZSwgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIGxpbmsgZGVwZW5kZW5j
aWVzLgorICAgIGlmIHNlbGYucmVmIG5vdCBpbiBkZXBlbmRlbmNpZXM6CisgICAgICBpZiB0YXJn
ZXRfdHlwZSAhPSAnbm9uZSc6CisgICAgICAgICMgU3BlY2lhbCBjYXNlOiAibm9uZSIgdHlwZSB0
YXJnZXRzIGRvbid0IHByb2R1Y2UgYW55IGxpbmthYmxlIHByb2R1Y3RzCisgICAgICAgICMgYW5k
IHNob3VsZG4ndCBiZSBleHBvc2VkIGFzIGxpbmsgZGVwZW5kZW5jaWVzLCBhbHRob3VnaCBkZXBl
bmRlbmNpZXMKKyAgICAgICAgIyBvZiAibm9uZSIgdHlwZSB0YXJnZXRzIG1heSBzdGlsbCBiZSBs
aW5rIGRlcGVuZGVuY2llcy4KKyAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChzZWxmLnJlZikK
KyAgICAgIGlmIGluaXRpYWwgb3Igbm90IGlzX2xpbmthYmxlOgorICAgICAgICAjIElmIHRoaXMg
aXMgYSBzdWJzZXF1ZW50IHRhcmdldCBhbmQgaXQncyBsaW5rYWJsZSwgZG9uJ3QgbG9vayBhbnkK
KyAgICAgICAgIyBmdXJ0aGVyIGZvciBsaW5rYWJsZSBkZXBlbmRlbmNpZXMsIGFzIHRoZXknbGwg
YWxyZWFkeSBiZSBsaW5rZWQgaW50bworICAgICAgICAjIHRoaXMgdGFyZ2V0IGxpbmthYmxlLiAg
QWx3YXlzIGxvb2sgYXQgZGVwZW5kZW5jaWVzIG9mIHRoZSBpbml0aWFsCisgICAgICAgICMgdGFy
Z2V0LCBhbmQgYWx3YXlzIGxvb2sgYXQgZGVwZW5kZW5jaWVzIG9mIG5vbi1saW5rYWJsZXMuCisg
ICAgICAgIGZvciBkZXBlbmRlbmN5IGluIHNlbGYuZGVwZW5kZW5jaWVzOgorICAgICAgICAgIGRl
cGVuZGVuY3kuTGlua0RlcGVuZGVuY2llcyh0YXJnZXRzLCBkZXBlbmRlbmNpZXMsIEZhbHNlKQor
CisgICAgcmV0dXJuIGRlcGVuZGVuY2llcworCisKK2RlZiBCdWlsZERlcGVuZGVuY3lMaXN0KHRh
cmdldHMpOgorICAjIENyZWF0ZSBhIERlcGVuZGVuY3lHcmFwaE5vZGUgZm9yIGVhY2ggdGFyZ2V0
LiAgUHV0IGl0IGludG8gYSBkaWN0IGZvciBlYXN5CisgICMgYWNjZXNzLgorICBkZXBlbmRlbmN5
X25vZGVzID0ge30KKyAgZm9yIHRhcmdldCwgc3BlYyBpbiB0YXJnZXRzLml0ZXJpdGVtcygpOgor
ICAgIGlmIG5vdCB0YXJnZXQgaW4gZGVwZW5kZW5jeV9ub2RlczoKKyAgICAgIGRlcGVuZGVuY3lf
bm9kZXNbdGFyZ2V0XSA9IERlcGVuZGVuY3lHcmFwaE5vZGUodGFyZ2V0KQorCisgICMgU2V0IHVw
IHRoZSBkZXBlbmRlbmN5IGxpbmtzLiAgVGFyZ2V0cyB0aGF0IGhhdmUgbm8gZGVwZW5kZW5jaWVz
IGFyZSB0cmVhdGVkCisgICMgYXMgZGVwZW5kZW50IG9uIHJvb3Rfbm9kZS4KKyAgcm9vdF9ub2Rl
ID0gRGVwZW5kZW5jeUdyYXBoTm9kZShOb25lKQorICBmb3IgdGFyZ2V0LCBzcGVjIGluIHRhcmdl
dHMuaXRlcml0ZW1zKCk6CisgICAgdGFyZ2V0X25vZGUgPSBkZXBlbmRlbmN5X25vZGVzW3Rhcmdl
dF0KKyAgICB0YXJnZXRfYnVpbGRfZmlsZSA9IGd5cC5jb21tb24uQnVpbGRGaWxlKHRhcmdldCkK
KyAgICBpZiBub3QgJ2RlcGVuZGVuY2llcycgaW4gc3BlYyBvciBsZW4oc3BlY1snZGVwZW5kZW5j
aWVzJ10pID09IDA6CisgICAgICB0YXJnZXRfbm9kZS5kZXBlbmRlbmNpZXMgPSBbcm9vdF9ub2Rl
XQorICAgICAgcm9vdF9ub2RlLmRlcGVuZGVudHMuYXBwZW5kKHRhcmdldF9ub2RlKQorICAgIGVs
c2U6CisgICAgICBkZXBlbmRlbmNpZXMgPSBzcGVjWydkZXBlbmRlbmNpZXMnXQorICAgICAgZm9y
IGluZGV4IGluIHhyYW5nZSgwLCBsZW4oZGVwZW5kZW5jaWVzKSk6CisgICAgICAgIHRyeToKKyAg
ICAgICAgICBkZXBlbmRlbmN5ID0gZGVwZW5kZW5jaWVzW2luZGV4XQorICAgICAgICAgIGRlcGVu
ZGVuY3lfbm9kZSA9IGRlcGVuZGVuY3lfbm9kZXNbZGVwZW5kZW5jeV0KKyAgICAgICAgICB0YXJn
ZXRfbm9kZS5kZXBlbmRlbmNpZXMuYXBwZW5kKGRlcGVuZGVuY3lfbm9kZSkKKyAgICAgICAgICBk
ZXBlbmRlbmN5X25vZGUuZGVwZW5kZW50cy5hcHBlbmQodGFyZ2V0X25vZGUpCisgICAgICAgIGV4
Y2VwdCBLZXlFcnJvciwgZToKKyAgICAgICAgICBneXAuY29tbW9uLkV4Y2VwdGlvbkFwcGVuZChl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aGlsZSB0cnlpbmcgdG8g
bG9hZCB0YXJnZXQgJXMnICUgdGFyZ2V0KQorICAgICAgICAgIHJhaXNlCisKKyAgZmxhdF9saXN0
ID0gcm9vdF9ub2RlLkZsYXR0ZW5Ub0xpc3QoKQorCisgICMgSWYgdGhlcmUncyBhbnl0aGluZyBs
ZWZ0IHVudmlzaXRlZCwgdGhlcmUgbXVzdCBiZSBhIGNpcmN1bGFyIGRlcGVuZGVuY3kKKyAgIyAo
Y3ljbGUpLiAgSWYgeW91IG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3Mgd3JvbmcsIGxvb2sgZm9y
IGVsZW1lbnRzIG9mCisgICMgdGFyZ2V0cyB0aGF0IGFyZSBub3QgaW4gZmxhdF9saXN0LgorICBp
ZiBsZW4oZmxhdF9saXN0KSAhPSBsZW4odGFyZ2V0cyk6CisgICAgcmFpc2UgRGVwZW5kZW5jeUdy
YXBoTm9kZS5DaXJjdWxhckV4Y2VwdGlvbiwgXAorICAgICAgICAnU29tZSB0YXJnZXRzIG5vdCBy
ZWFjaGFibGUsIGN5Y2xlIGluIGRlcGVuZGVuY3kgZ3JhcGggZGV0ZWN0ZWQnCisKKyAgcmV0dXJu
IFtkZXBlbmRlbmN5X25vZGVzLCBmbGF0X2xpc3RdCisKKworZGVmIFZlcmlmeU5vR1lQRmlsZUNp
cmN1bGFyRGVwZW5kZW5jaWVzKHRhcmdldHMpOgorICAjIENyZWF0ZSBhIERlcGVuZGVuY3lHcmFw
aE5vZGUgZm9yIGVhY2ggZ3lwIGZpbGUgY29udGFpbmluZyBhIHRhcmdldC4gIFB1dAorICAjIGl0
IGludG8gYSBkaWN0IGZvciBlYXN5IGFjY2Vzcy4KKyAgZGVwZW5kZW5jeV9ub2RlcyA9IHt9Cisg
IGZvciB0YXJnZXQgaW4gdGFyZ2V0cy5pdGVya2V5cygpOgorICAgIGJ1aWxkX2ZpbGUgPSBneXAu
Y29tbW9uLkJ1aWxkRmlsZSh0YXJnZXQpCisgICAgaWYgbm90IGJ1aWxkX2ZpbGUgaW4gZGVwZW5k
ZW5jeV9ub2RlczoKKyAgICAgIGRlcGVuZGVuY3lfbm9kZXNbYnVpbGRfZmlsZV0gPSBEZXBlbmRl
bmN5R3JhcGhOb2RlKGJ1aWxkX2ZpbGUpCisKKyAgIyBTZXQgdXAgdGhlIGRlcGVuZGVuY3kgbGlu
a3MuCisgIGZvciB0YXJnZXQsIHNwZWMgaW4gdGFyZ2V0cy5pdGVyaXRlbXMoKToKKyAgICBidWls
ZF9maWxlID0gZ3lwLmNvbW1vbi5CdWlsZEZpbGUodGFyZ2V0KQorICAgIGJ1aWxkX2ZpbGVfbm9k
ZSA9IGRlcGVuZGVuY3lfbm9kZXNbYnVpbGRfZmlsZV0KKyAgICB0YXJnZXRfZGVwZW5kZW5jaWVz
ID0gc3BlYy5nZXQoJ2RlcGVuZGVuY2llcycsIFtdKQorICAgIGZvciBkZXBlbmRlbmN5IGluIHRh
cmdldF9kZXBlbmRlbmNpZXM6CisgICAgICB0cnk6CisgICAgICAgIGRlcGVuZGVuY3lfYnVpbGRf
ZmlsZSA9IGd5cC5jb21tb24uQnVpbGRGaWxlKGRlcGVuZGVuY3kpCisgICAgICAgIGlmIGRlcGVu
ZGVuY3lfYnVpbGRfZmlsZSA9PSBidWlsZF9maWxlOgorICAgICAgICAgICMgQSAuZ3lwIGZpbGUg
aXMgYWxsb3dlZCB0byByZWZlciBiYWNrIHRvIGl0c2VsZi4KKyAgICAgICAgICBjb250aW51ZQor
ICAgICAgICBkZXBlbmRlbmN5X25vZGUgPSBkZXBlbmRlbmN5X25vZGVzW2RlcGVuZGVuY3lfYnVp
bGRfZmlsZV0KKyAgICAgICAgaWYgZGVwZW5kZW5jeV9ub2RlIG5vdCBpbiBidWlsZF9maWxlX25v
ZGUuZGVwZW5kZW5jaWVzOgorICAgICAgICAgIGJ1aWxkX2ZpbGVfbm9kZS5kZXBlbmRlbmNpZXMu
YXBwZW5kKGRlcGVuZGVuY3lfbm9kZSkKKyAgICAgICAgICBkZXBlbmRlbmN5X25vZGUuZGVwZW5k
ZW50cy5hcHBlbmQoYnVpbGRfZmlsZV9ub2RlKQorICAgICAgZXhjZXB0IEtleUVycm9yLCBlOgor
ICAgICAgICBneXAuY29tbW9uLkV4Y2VwdGlvbkFwcGVuZCgKKyAgICAgICAgICAgIGUsICd3aGls
ZSBjb21wdXRpbmcgZGVwZW5kZW5jaWVzIG9mIC5neXAgZmlsZSAlcycgJSBidWlsZF9maWxlKQor
ICAgICAgICByYWlzZQorCisgICMgRmlsZXMgdGhhdCBoYXZlIG5vIGRlcGVuZGVuY2llcyBhcmUg
dHJlYXRlZCBhcyBkZXBlbmRlbnQgb24gcm9vdF9ub2RlLgorICByb290X25vZGUgPSBEZXBlbmRl
bmN5R3JhcGhOb2RlKE5vbmUpCisgIGZvciBidWlsZF9maWxlX25vZGUgaW4gZGVwZW5kZW5jeV9u
b2Rlcy5pdGVydmFsdWVzKCk6CisgICAgaWYgbGVuKGJ1aWxkX2ZpbGVfbm9kZS5kZXBlbmRlbmNp
ZXMpID09IDA6CisgICAgICBidWlsZF9maWxlX25vZGUuZGVwZW5kZW5jaWVzLmFwcGVuZChyb290
X25vZGUpCisgICAgICByb290X25vZGUuZGVwZW5kZW50cy5hcHBlbmQoYnVpbGRfZmlsZV9ub2Rl
KQorCisgIGZsYXRfbGlzdCA9IHJvb3Rfbm9kZS5GbGF0dGVuVG9MaXN0KCkKKworICAjIElmIHRo
ZXJlJ3MgYW55dGhpbmcgbGVmdCB1bnZpc2l0ZWQsIHRoZXJlIG11c3QgYmUgYSBjaXJjdWxhciBk
ZXBlbmRlbmN5CisgICMgKGN5Y2xlKS4KKyAgaWYgbGVuKGZsYXRfbGlzdCkgIT0gbGVuKGRlcGVu
ZGVuY3lfbm9kZXMpOgorICAgIGJhZF9maWxlcyA9IFtdCisgICAgZm9yIGZpbGUgaW4gZGVwZW5k
ZW5jeV9ub2Rlcy5pdGVya2V5cygpOgorICAgICAgaWYgbm90IGZpbGUgaW4gZmxhdF9saXN0Ogor
ICAgICAgICBiYWRfZmlsZXMuYXBwZW5kKGZpbGUpCisgICAgcmFpc2UgRGVwZW5kZW5jeUdyYXBo
Tm9kZS5DaXJjdWxhckV4Y2VwdGlvbiwgXAorICAgICAgICAnU29tZSBmaWxlcyBub3QgcmVhY2hh
YmxlLCBjeWNsZSBpbiAuZ3lwIGZpbGUgZGVwZW5kZW5jeSBncmFwaCAnICsgXAorICAgICAgICAn
ZGV0ZWN0ZWQgaW52b2x2aW5nIHNvbWUgb3IgYWxsIG9mOiAnICsgXAorICAgICAgICAnICcuam9p
bihiYWRfZmlsZXMpCisKKworZGVmIERvRGVwZW5kZW50U2V0dGluZ3Moa2V5LCBmbGF0X2xpc3Qs
IHRhcmdldHMsIGRlcGVuZGVuY3lfbm9kZXMpOgorICAjIGtleSBzaG91bGQgYmUgb25lIG9mIGFs
bF9kZXBlbmRlbnRfc2V0dGluZ3MsIGRpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MsCisgICMgb3Ig
bGlua19zZXR0aW5ncy4KKworICBmb3IgdGFyZ2V0IGluIGZsYXRfbGlzdDoKKyAgICB0YXJnZXRf
ZGljdCA9IHRhcmdldHNbdGFyZ2V0XQorICAgIGJ1aWxkX2ZpbGUgPSBneXAuY29tbW9uLkJ1aWxk
RmlsZSh0YXJnZXQpCisKKyAgICBpZiBrZXkgPT0gJ2FsbF9kZXBlbmRlbnRfc2V0dGluZ3MnOgor
ICAgICAgZGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jeV9ub2Rlc1t0YXJnZXRdLkRlZXBEZXBlbmRl
bmNpZXMoKQorICAgIGVsaWYga2V5ID09ICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzoKKyAg
ICAgIGRlcGVuZGVuY2llcyA9IFwKKyAgICAgICAgICBkZXBlbmRlbmN5X25vZGVzW3RhcmdldF0u
RGlyZWN0QW5kSW1wb3J0ZWREZXBlbmRlbmNpZXModGFyZ2V0cykKKyAgICBlbGlmIGtleSA9PSAn
bGlua19zZXR0aW5ncyc6CisgICAgICBkZXBlbmRlbmNpZXMgPSBkZXBlbmRlbmN5X25vZGVzW3Rh
cmdldF0uTGlua0RlcGVuZGVuY2llcyh0YXJnZXRzKQorICAgIGVsc2U6CisgICAgICByYWlzZSBL
ZXlFcnJvciwgIkRvRGVwZW5kZW50U2V0dGluZ3MgZG9lc24ndCBrbm93IGhvdyB0byBkZXRlcm1p
bmUgIiArIFwKKyAgICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzIGZvciAnICsga2V5
CisKKyAgICBmb3IgZGVwZW5kZW5jeSBpbiBkZXBlbmRlbmNpZXM6CisgICAgICBkZXBlbmRlbmN5
X2RpY3QgPSB0YXJnZXRzW2RlcGVuZGVuY3ldCisgICAgICBpZiBub3Qga2V5IGluIGRlcGVuZGVu
Y3lfZGljdDoKKyAgICAgICAgY29udGludWUKKyAgICAgIGRlcGVuZGVuY3lfYnVpbGRfZmlsZSA9
IGd5cC5jb21tb24uQnVpbGRGaWxlKGRlcGVuZGVuY3kpCisgICAgICBNZXJnZURpY3RzKHRhcmdl
dF9kaWN0LCBkZXBlbmRlbmN5X2RpY3Rba2V5XSwKKyAgICAgICAgICAgICAgICAgYnVpbGRfZmls
ZSwgZGVwZW5kZW5jeV9idWlsZF9maWxlKQorCisKK2RlZiBBZGp1c3RTdGF0aWNMaWJyYXJ5RGVw
ZW5kZW5jaWVzKGZsYXRfbGlzdCwgdGFyZ2V0cywgZGVwZW5kZW5jeV9ub2Rlcyk6CisgICMgUmVj
b21wdXRlIHRhcmdldCAiZGVwZW5kZW5jaWVzIiBwcm9wZXJ0aWVzLiAgRm9yIGVhY2ggc3RhdGlj
IGxpYnJhcnkKKyAgIyB0YXJnZXQsIHJlbW92ZSAiZGVwZW5kZW5jaWVzIiBlbnRyaWVzIHJlZmVy
cmluZyB0byBvdGhlciBzdGF0aWMgbGlicmFyaWVzLAorICAjIHVubGVzcyB0aGUgZGVwZW5kZW5j
eSBoYXMgdGhlICJoYXJkX2RlcGVuZGVuY3kiIGF0dHJpYnV0ZSBzZXQuICBGb3IgZWFjaAorICAj
IGxpbmthYmxlIHRhcmdldCwgYWRkIGEgImRlcGVuZGVuY2llcyIgZW50cnkgcmVmZXJyaW5nIHRv
IGFsbCBvZiB0aGUKKyAgIyB0YXJnZXQncyBjb21wdXRlZCBsaXN0IG9mIGxpbmsgZGVwZW5kZW5j
aWVzIChpbmNsdWRpbmcgc3RhdGljIGxpYnJhcmllcworICAjIGlmIG5vIHN1Y2ggZW50cnkgaXMg
YWxyZWFkeSBwcmVzZW50LgorICBmb3IgdGFyZ2V0IGluIGZsYXRfbGlzdDoKKyAgICB0YXJnZXRf
ZGljdCA9IHRhcmdldHNbdGFyZ2V0XQorICAgIHRhcmdldF90eXBlID0gdGFyZ2V0X2RpY3RbJ3R5
cGUnXQorCisgICAgaWYgdGFyZ2V0X3R5cGUgPT0gJ3N0YXRpY19saWJyYXJ5JzoKKyAgICAgIGlm
IG5vdCAnZGVwZW5kZW5jaWVzJyBpbiB0YXJnZXRfZGljdDoKKyAgICAgICAgY29udGludWUKKwor
ICAgICAgdGFyZ2V0X2RpY3RbJ2RlcGVuZGVuY2llc19vcmlnaW5hbCddID0gdGFyZ2V0X2RpY3Qu
Z2V0KAorICAgICAgICAgICdkZXBlbmRlbmNpZXMnLCBbXSlbOl0KKworICAgICAgaW5kZXggPSAw
CisgICAgICB3aGlsZSBpbmRleCA8IGxlbih0YXJnZXRfZGljdFsnZGVwZW5kZW5jaWVzJ10pOgor
ICAgICAgICBkZXBlbmRlbmN5ID0gdGFyZ2V0X2RpY3RbJ2RlcGVuZGVuY2llcyddW2luZGV4XQor
ICAgICAgICBkZXBlbmRlbmN5X2RpY3QgPSB0YXJnZXRzW2RlcGVuZGVuY3ldCisgICAgICAgIGlm
IGRlcGVuZGVuY3lfZGljdFsndHlwZSddID09ICdzdGF0aWNfbGlicmFyeScgYW5kIFwKKyAgICAg
ICAgICAgKG5vdCAnaGFyZF9kZXBlbmRlbmN5JyBpbiBkZXBlbmRlbmN5X2RpY3Qgb3IgXAorICAg
ICAgICAgICAgbm90IGRlcGVuZGVuY3lfZGljdFsnaGFyZF9kZXBlbmRlbmN5J10pOgorICAgICAg
ICAgICMgQSBzdGF0aWMgbGlicmFyeSBzaG91bGQgbm90IGRlcGVuZCBvbiBhbm90aGVyIHN0YXRp
YyBsaWJyYXJ5IHVubGVzcworICAgICAgICAgICMgdGhlIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlw
IGlzICJoYXJkLCIgd2hpY2ggc2hvdWxkIG9ubHkgYmUgZG9uZQorICAgICAgICAgICMgd2hlbiBh
IGRlcGVuZGVudCByZWxpZXMgb24gc29tZSBzaWRlIGVmZmVjdCBvdGhlciB0aGFuIGp1c3QgdGhl
CisgICAgICAgICAgIyBidWlsZCBwcm9kdWN0LCBsaWtlIGEgcnVsZSBvciBhY3Rpb24gb3V0cHV0
LiAgVGFrZSB0aGUgZGVwZW5kZW5jeQorICAgICAgICAgICMgb3V0IG9mIHRoZSBsaXN0LCBhbmQg
ZG9uJ3QgaW5jcmVtZW50IGluZGV4IGJlY2F1c2UgdGhlIG5leHQKKyAgICAgICAgICAjIGRlcGVu
ZGVuY3kgdG8gYW5hbHl6ZSB3aWxsIHNoaWZ0IGludG8gdGhlIGluZGV4IGZvcm1lcmx5IG9jY3Vw
aWVkCisgICAgICAgICAgIyBieSB0aGUgb25lIGJlaW5nIHJlbW92ZWQuCisgICAgICAgICAgZGVs
IHRhcmdldF9kaWN0WydkZXBlbmRlbmNpZXMnXVtpbmRleF0KKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICBpbmRleCA9IGluZGV4ICsgMQorCisgICAgICAjIElmIHRoZSBkZXBlbmRlbmNpZXMgbGlz
dCBpcyBlbXB0eSwgaXQncyBub3QgbmVlZGVkLCBzbyB1bmhvb2sgaXQuCisgICAgICBpZiBsZW4o
dGFyZ2V0X2RpY3RbJ2RlcGVuZGVuY2llcyddKSA9PSAwOgorICAgICAgICBkZWwgdGFyZ2V0X2Rp
Y3RbJ2RlcGVuZGVuY2llcyddCisKKyAgICBlbGlmIHRhcmdldF90eXBlIGluIGxpbmthYmxlX3R5
cGVzOgorICAgICAgIyBHZXQgYSBsaXN0IG9mIGRlcGVuZGVuY3kgdGFyZ2V0cyB0aGF0IHNob3Vs
ZCBiZSBsaW5rZWQgaW50byB0aGlzCisgICAgICAjIHRhcmdldC4gIEFkZCB0aGVtIHRvIHRoZSBk
ZXBlbmRlbmNpZXMgbGlzdCBpZiB0aGV5J3JlIG5vdCBhbHJlYWR5CisgICAgICAjIHByZXNlbnQu
CisKKyAgICAgIGxpbmtfZGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jeV9ub2Rlc1t0YXJnZXRdLkxp
bmtEZXBlbmRlbmNpZXModGFyZ2V0cykKKyAgICAgIGZvciBkZXBlbmRlbmN5IGluIGxpbmtfZGVw
ZW5kZW5jaWVzOgorICAgICAgICBpZiBkZXBlbmRlbmN5ID09IHRhcmdldDoKKyAgICAgICAgICBj
b250aW51ZQorICAgICAgICBpZiBub3QgJ2RlcGVuZGVuY2llcycgaW4gdGFyZ2V0X2RpY3Q6Cisg
ICAgICAgICAgdGFyZ2V0X2RpY3RbJ2RlcGVuZGVuY2llcyddID0gW10KKyAgICAgICAgaWYgbm90
IGRlcGVuZGVuY3kgaW4gdGFyZ2V0X2RpY3RbJ2RlcGVuZGVuY2llcyddOgorICAgICAgICAgIHRh
cmdldF9kaWN0WydkZXBlbmRlbmNpZXMnXS5hcHBlbmQoZGVwZW5kZW5jeSkKKworIyBJbml0aWFs
aXplIHRoaXMgaGVyZSB0byBzcGVlZCB1cCBNYWtlUGF0aFJlbGF0aXZlLgorZXhjZXB0aW9uX3Jl
ID0gcmUuY29tcGlsZShyJycnWyInXT9bLS8kPD5dJycnKQorCisKK2RlZiBNYWtlUGF0aFJlbGF0
aXZlKHRvX2ZpbGUsIGZyb19maWxlLCBpdGVtKToKKyAgIyBJZiBpdGVtIGlzIGEgcmVsYXRpdmUg
cGF0aCwgaXQncyByZWxhdGl2ZSB0byB0aGUgYnVpbGQgZmlsZSBkaWN0IHRoYXQgaXQncworICAj
IGNvbWluZyBmcm9tLiAgRml4IGl0IHVwIHRvIG1ha2UgaXQgcmVsYXRpdmUgdG8gdGhlIGJ1aWxk
IGZpbGUgZGljdCB0aGF0CisgICMgaXQncyBnb2luZyBpbnRvLgorICAjIEV4Y2VwdGlvbjogYW55
IHxpdGVtfCB0aGF0IGJlZ2lucyB3aXRoIHRoZXNlIHNwZWNpYWwgY2hhcmFjdGVycyBpcworICAj
IHJldHVybmVkIHdpdGhvdXQgbW9kaWZpY2F0aW9uLgorICAjICAgLyAgIFVzZWQgd2hlbiBhIHBh
dGggaXMgYWxyZWFkeSBhYnNvbHV0ZSAoc2hvcnRjdXQgb3B0aW1pemF0aW9uOworICAjICAgICAg
IHN1Y2ggcGF0aHMgd291bGQgYmUgcmV0dXJuZWQgYXMgYWJzb2x1dGUgYW55d2F5KQorICAjICAg
JCAgIFVzZWQgZm9yIGJ1aWxkIGVudmlyb25tZW50IHZhcmlhYmxlcworICAjICAgLSAgIFVzZWQg
Zm9yIHNvbWUgYnVpbGQgZW52aXJvbm1lbnQgZmxhZ3MgKHN1Y2ggYXMgLWxhcHItMSBpbiBhCisg
ICMgICAgICAgImxpYnJhcmllcyIgc2VjdGlvbikKKyAgIyAgIDwgICBVc2VkIGZvciBvdXIgb3du
IHZhcmlhYmxlIGFuZCBjb21tYW5kIGV4cGFuc2lvbnMgKHNlZSBFeHBhbmRWYXJpYWJsZXMpCisg
ICMgICA+ICAgVXNlZCBmb3Igb3VyIG93biB2YXJpYWJsZSBhbmQgY29tbWFuZCBleHBhbnNpb25z
IChzZWUgRXhwYW5kVmFyaWFibGVzKQorICAjCisgICMgICAiLycgVXNlZCB3aGVuIGEgdmFsdWUg
aXMgcXVvdGVkLiAgSWYgdGhlc2UgYXJlIHByZXNlbnQsIHRoZW4gd2UKKyAgIyAgICAgICBjaGVj
ayB0aGUgc2Vjb25kIGNoYXJhY3RlciBpbnN0ZWFkLgorICAjCisgIGlmIHRvX2ZpbGUgPT0gZnJv
X2ZpbGUgb3IgZXhjZXB0aW9uX3JlLm1hdGNoKGl0ZW0pOgorICAgIHJldHVybiBpdGVtCisgIGVs
c2U6CisgICAgIyBUT0RPKGRnbGF6a292KSBUaGUgYmFja3NsYXNoL2ZvcndhcmQtc2xhc2ggcmVw
bGFjZW1lbnQgYXQgdGhlIGVuZCBpcyBhCisgICAgIyB0ZW1wb3JhcnkgbWVhc3VyZS4gVGhpcyBz
aG91bGQgcmVhbGx5IGJlIGFkZHJlc3NlZCBieSBrZWVwaW5nIGFsbCBwYXRocworICAgICMgaW4g
UE9TSVggdW50aWwgYWN0dWFsIHByb2plY3QgZ2VuZXJhdGlvbi4KKyAgICByZXQgPSBvcy5wYXRo
Lm5vcm1wYXRoKG9zLnBhdGguam9pbigKKyAgICAgICAgZ3lwLmNvbW1vbi5SZWxhdGl2ZVBhdGgo
b3MucGF0aC5kaXJuYW1lKGZyb19maWxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3MucGF0aC5kaXJuYW1lKHRvX2ZpbGUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaXRlbSkpLnJlcGxhY2UoJ1xcJywgJy8nKQorICAgIGlmIGl0ZW1bLTFdID09ICcvJzoK
KyAgICAgIHJldCArPSAnLycKKyAgICByZXR1cm4gcmV0CisKK2RlZiBNZXJnZUxpc3RzKHRvLCBm
cm8sIHRvX2ZpbGUsIGZyb19maWxlLCBpc19wYXRocz1GYWxzZSwgYXBwZW5kPVRydWUpOgorICBw
cmVwZW5kX2luZGV4ID0gMAorCisgIGZvciBpdGVtIGluIGZybzoKKyAgICBzaW5nbGV0b24gPSBG
YWxzZQorICAgIGlmIGlzaW5zdGFuY2UoaXRlbSwgc3RyKSBvciBpc2luc3RhbmNlKGl0ZW0sIGlu
dCk6CisgICAgICAjIFRoZSBjaGVhcCBhbmQgZWFzeSBjYXNlLgorICAgICAgaWYgaXNfcGF0aHM6
CisgICAgICAgIHRvX2l0ZW0gPSBNYWtlUGF0aFJlbGF0aXZlKHRvX2ZpbGUsIGZyb19maWxlLCBp
dGVtKQorICAgICAgZWxzZToKKyAgICAgICAgdG9faXRlbSA9IGl0ZW0KKworICAgICAgaWYgbm90
IGlzaW5zdGFuY2UoaXRlbSwgc3RyKSBvciBub3QgaXRlbS5zdGFydHN3aXRoKCctJyk6CisgICAg
ICAgICMgQW55IHN0cmluZyB0aGF0IGRvZXNuJ3QgYmVnaW4gd2l0aCBhICItIiBpcyBhIHNpbmds
ZXRvbiAtIGl0IGNhbgorICAgICAgICAjIG9ubHkgYXBwZWFyIG9uY2UgaW4gYSBsaXN0LCB0byBi
ZSBlbmZvcmNlZCBieSB0aGUgbGlzdCBtZXJnZSBhcHBlbmQKKyAgICAgICAgIyBvciBwcmVwZW5k
LgorICAgICAgICBzaW5nbGV0b24gPSBUcnVlCisgICAgZWxpZiBpc2luc3RhbmNlKGl0ZW0sIGRp
Y3QpOgorICAgICAgIyBNYWtlIGEgY29weSBvZiB0aGUgZGljdGlvbmFyeSwgY29udGludWluZyB0
byBsb29rIGZvciBwYXRocyB0byBmaXguCisgICAgICAjIFRoZSBvdGhlciBpbnRlbGxpZ2VudCBh
c3BlY3RzIG9mIG1lcmdlIHByb2Nlc3Npbmcgd29uJ3QgYXBwbHkgYmVjYXVzZQorICAgICAgIyBp
dGVtIGlzIGJlaW5nIG1lcmdlZCBpbnRvIGFuIGVtcHR5IGRpY3QuCisgICAgICB0b19pdGVtID0g
e30KKyAgICAgIE1lcmdlRGljdHModG9faXRlbSwgaXRlbSwgdG9fZmlsZSwgZnJvX2ZpbGUpCisg
ICAgZWxpZiBpc2luc3RhbmNlKGl0ZW0sIGxpc3QpOgorICAgICAgIyBSZWN1cnNlLCBtYWtpbmcg
YSBjb3B5IG9mIHRoZSBsaXN0LiAgSWYgdGhlIGxpc3QgY29udGFpbnMgYW55CisgICAgICAjIGRl
c2NlbmRhbnQgZGljdHMsIHBhdGggZml4aW5nIHdpbGwgb2NjdXIuICBOb3RlIHRoYXQgaGVyZSwg
Y3VzdG9tCisgICAgICAjIHZhbHVlcyBmb3IgaXNfcGF0aHMgYW5kIGFwcGVuZCBhcmUgZHJvcHBl
ZDsgdGhvc2UgYXJlIG9ubHkgdG8gYmUKKyAgICAgICMgYXBwbGllZCB0byB8dG98IGFuZCB8ZnJv
fCwgbm90IHN1Ymxpc3RzIG9mIHxmcm98LiAgYXBwZW5kIHNob3VsZG4ndAorICAgICAgIyBtYXR0
ZXIgYW55d2F5IGJlY2F1c2UgdGhlIG5ldyB8dG9faXRlbXwgbGlzdCBpcyBlbXB0eS4KKyAgICAg
IHRvX2l0ZW0gPSBbXQorICAgICAgTWVyZ2VMaXN0cyh0b19pdGVtLCBpdGVtLCB0b19maWxlLCBm
cm9fZmlsZSkKKyAgICBlbHNlOgorICAgICAgcmFpc2UgVHlwZUVycm9yLCBcCisgICAgICAgICAg
J0F0dGVtcHQgdG8gbWVyZ2UgbGlzdCBpdGVtIG9mIHVuc3VwcG9ydGVkIHR5cGUgJyArIFwKKyAg
ICAgICAgICBpdGVtLl9fY2xhc3NfXy5fX25hbWVfXworCisgICAgaWYgYXBwZW5kOgorICAgICAg
IyBJZiBhcHBlbmRpbmcgYSBzaW5nbGV0b24gdGhhdCdzIGFscmVhZHkgaW4gdGhlIGxpc3QsIGRv
bid0IGFwcGVuZC4KKyAgICAgICMgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGVhcmxpZXN0IG9jY3Vy
cmVuY2Ugb2YgdGhlIGl0ZW0gd2lsbCBzdGF5IHB1dC4KKyAgICAgIGlmIG5vdCBzaW5nbGV0b24g
b3Igbm90IHRvX2l0ZW0gaW4gdG86CisgICAgICAgIHRvLmFwcGVuZCh0b19pdGVtKQorICAgIGVs
c2U6CisgICAgICAjIElmIHByZXBlbmRpbmcgYSBzaW5nbGV0b24gdGhhdCdzIGFscmVhZHkgaW4g
dGhlIGxpc3QsIHJlbW92ZSB0aGUKKyAgICAgICMgZXhpc3RpbmcgaW5zdGFuY2UgYW5kIHByb2Nl
ZWQgd2l0aCB0aGUgcHJlcGVuZC4gIFRoaXMgZW5zdXJlcyB0aGF0IHRoZQorICAgICAgIyBpdGVt
IGFwcGVhcnMgYXQgdGhlIGVhcmxpZXN0IHBvc3NpYmxlIHBvc2l0aW9uIGluIHRoZSBsaXN0Lgor
ICAgICAgd2hpbGUgc2luZ2xldG9uIGFuZCB0b19pdGVtIGluIHRvOgorICAgICAgICB0by5yZW1v
dmUodG9faXRlbSkKKworICAgICAgIyBEb24ndCBqdXN0IGluc2VydCBldmVyeXRoaW5nIGF0IGlu
ZGV4IDAuICBUaGF0IHdvdWxkIHByZXBlbmQgdGhlIG5ldworICAgICAgIyBpdGVtcyB0byB0aGUg
bGlzdCBpbiByZXZlcnNlIG9yZGVyLCB3aGljaCB3b3VsZCBiZSBhbiB1bndlbGNvbWUKKyAgICAg
ICMgc3VycHJpc2UuCisgICAgICB0by5pbnNlcnQocHJlcGVuZF9pbmRleCwgdG9faXRlbSkKKyAg
ICAgIHByZXBlbmRfaW5kZXggPSBwcmVwZW5kX2luZGV4ICsgMQorCisKK2RlZiBNZXJnZURpY3Rz
KHRvLCBmcm8sIHRvX2ZpbGUsIGZyb19maWxlKToKKyAgIyBJIHdhbnRlZCB0byBuYW1lIHRoZSBw
YXJhbWV0ZXIgImZyb20iIGJ1dCBpdCdzIGEgUHl0aG9uIGtleXdvcmQuLi4KKyAgZm9yIGssIHYg
aW4gZnJvLml0ZXJpdGVtcygpOgorICAgICMgSXQgd291bGQgYmUgbmljZSB0byBkbyAiaWYgbm90
IGsgaW4gdG86IHRvW2tdID0gdiIgYnV0IHRoYXQgd291bGRuJ3QgZ2l2ZQorICAgICMgY29weSBz
ZW1hbnRpY3MuICBTb21ldGhpbmcgZWxzZSBtYXkgd2FudCB0byBtZXJnZSBmcm9tIHRoZSB8ZnJv
fCBkaWN0CisgICAgIyBsYXRlciwgYW5kIGhhdmluZyB0aGUgc2FtZSBkaWN0IHJlZiBwb2ludGVk
IHRvIHR3aWNlIGluIHRoZSB0cmVlIGlzbid0CisgICAgIyB3aGF0IGFueW9uZSB3YW50cyBjb25z
aWRlcmluZyB0aGF0IHRoZSBkaWN0cyBtYXkgc3Vic2VxdWVudGx5IGJlCisgICAgIyBtb2RpZmll
ZC4KKyAgICBpZiBrIGluIHRvOgorICAgICAgYmFkX21lcmdlID0gRmFsc2UKKyAgICAgIGlmIGlz
aW5zdGFuY2Uodiwgc3RyKSBvciBpc2luc3RhbmNlKHYsIGludCk6CisgICAgICAgIGlmIG5vdCAo
aXNpbnN0YW5jZSh0b1trXSwgc3RyKSBvciBpc2luc3RhbmNlKHRvW2tdLCBpbnQpKToKKyAgICAg
ICAgICBiYWRfbWVyZ2UgPSBUcnVlCisgICAgICBlbGlmIHYuX19jbGFzc19fICE9IHRvW2tdLl9f
Y2xhc3NfXzoKKyAgICAgICAgYmFkX21lcmdlID0gVHJ1ZQorCisgICAgICBpZiBiYWRfbWVyZ2U6
CisgICAgICAgIHJhaXNlIFR5cGVFcnJvciwgXAorICAgICAgICAgICAgJ0F0dGVtcHQgdG8gbWVy
Z2UgZGljdCB2YWx1ZSBvZiB0eXBlICcgKyB2Ll9fY2xhc3NfXy5fX25hbWVfXyArIFwKKyAgICAg
ICAgICAgICcgaW50byBpbmNvbXBhdGlibGUgdHlwZSAnICsgdG9ba10uX19jbGFzc19fLl9fbmFt
ZV9fICsgXAorICAgICAgICAgICAgJyBmb3Iga2V5ICcgKyBrCisgICAgaWYgaXNpbnN0YW5jZSh2
LCBzdHIpIG9yIGlzaW5zdGFuY2UodiwgaW50KToKKyAgICAgICMgT3ZlcndyaXRlIHRoZSBleGlz
dGluZyB2YWx1ZSwgaWYgYW55LiAgQ2hlYXAgYW5kIGVhc3kuCisgICAgICBpc19wYXRoID0gSXNQ
YXRoU2VjdGlvbihrKQorICAgICAgaWYgaXNfcGF0aDoKKyAgICAgICAgdG9ba10gPSBNYWtlUGF0
aFJlbGF0aXZlKHRvX2ZpbGUsIGZyb19maWxlLCB2KQorICAgICAgZWxzZToKKyAgICAgICAgdG9b
a10gPSB2CisgICAgZWxpZiBpc2luc3RhbmNlKHYsIGRpY3QpOgorICAgICAgIyBSZWN1cnNlLCBn
dWFyYW50ZWVpbmcgY29waWVzIHdpbGwgYmUgbWFkZSBvZiBvYmplY3RzIHRoYXQgcmVxdWlyZSBp
dC4KKyAgICAgIGlmIG5vdCBrIGluIHRvOgorICAgICAgICB0b1trXSA9IHt9CisgICAgICBNZXJn
ZURpY3RzKHRvW2tdLCB2LCB0b19maWxlLCBmcm9fZmlsZSkKKyAgICBlbGlmIGlzaW5zdGFuY2Uo
diwgbGlzdCk6CisgICAgICAjIExpc3RzIGluIGRpY3RzIGNhbiBiZSBtZXJnZWQgd2l0aCBkaWZm
ZXJlbnQgcG9saWNpZXMsIGRlcGVuZGluZyBvbgorICAgICAgIyBob3cgdGhlIGtleSBpbiB0aGUg
ImZyb20iIGRpY3QgKGssIHRoZSBmcm9tLWtleSkgaXMgd3JpdHRlbi4KKyAgICAgICMKKyAgICAg
ICMgSWYgdGhlIGZyb20ta2V5IGhhcyAgICAgICAgICAuLi50aGUgdG8tbGlzdCB3aWxsIGhhdmUg
dGhpcyBhY3Rpb24KKyAgICAgICMgdGhpcyBjaGFyYWN0ZXIgYXBwZW5kZWQ6Li4uICAgICBhcHBs
aWVkIHdoZW4gcmVjZWl2aW5nIHRoZSBmcm9tLWxpc3Q6CisgICAgICAjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAgcmVwbGFjZQorICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICsgIHByZXBlbmQKKyAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICBzZXQsIG9u
bHkgaWYgdG8tbGlzdCBkb2VzIG5vdCB5ZXQgZXhpc3QKKyAgICAgICMgICAgICAgICAgICAgICAg
ICAgICAgKG5vbmUpICBhcHBlbmQKKyAgICAgICMKKyAgICAgICMgVGhpcyBsb2dpYyBpcyBsaXN0
LXNwZWNpZmljLCBidXQgc2luY2UgaXQgcmVsaWVzIG9uIHRoZSBhc3NvY2lhdGVkCisgICAgICAj
IGRpY3Qga2V5LCBpdCdzIGNoZWNrZWQgaW4gdGhpcyBkaWN0LW9yaWVudGVkIGZ1bmN0aW9uLgor
ICAgICAgZXh0ID0ga1stMV0KKyAgICAgIGFwcGVuZCA9IFRydWUKKyAgICAgIGlmIGV4dCA9PSAn
PSc6CisgICAgICAgIGxpc3RfYmFzZSA9IGtbOi0xXQorICAgICAgICBsaXN0c19pbmNvbXBhdGli
bGUgPSBbbGlzdF9iYXNlLCBsaXN0X2Jhc2UgKyAnPyddCisgICAgICAgIHRvW2xpc3RfYmFzZV0g
PSBbXQorICAgICAgZWxpZiBleHQgPT0gJysnOgorICAgICAgICBsaXN0X2Jhc2UgPSBrWzotMV0K
KyAgICAgICAgbGlzdHNfaW5jb21wYXRpYmxlID0gW2xpc3RfYmFzZSArICc9JywgbGlzdF9iYXNl
ICsgJz8nXQorICAgICAgICBhcHBlbmQgPSBGYWxzZQorICAgICAgZWxpZiBleHQgPT0gJz8nOgor
ICAgICAgICBsaXN0X2Jhc2UgPSBrWzotMV0KKyAgICAgICAgbGlzdHNfaW5jb21wYXRpYmxlID0g
W2xpc3RfYmFzZSwgbGlzdF9iYXNlICsgJz0nLCBsaXN0X2Jhc2UgKyAnKyddCisgICAgICBlbHNl
OgorICAgICAgICBsaXN0X2Jhc2UgPSBrCisgICAgICAgIGxpc3RzX2luY29tcGF0aWJsZSA9IFts
aXN0X2Jhc2UgKyAnPScsIGxpc3RfYmFzZSArICc/J10KKworICAgICAgIyBTb21lIGNvbWJpbmF0
aW9ucyBvZiBtZXJnZSBwb2xpY2llcyBhcHBlYXJpbmcgdG9nZXRoZXIgYXJlIG1lYW5pbmdsZXNz
LgorICAgICAgIyBJdCdzIHN0dXBpZCB0byByZXBsYWNlIGFuZCBhcHBlbmQgc2ltdWx0YW5lb3Vz
bHksIGZvciBleGFtcGxlLiAgQXBwZW5kCisgICAgICAjIGFuZCBwcmVwZW5kIGFyZSB0aGUgb25s
eSBwb2xpY2llcyB0aGF0IGNhbiBjb2V4aXN0LgorICAgICAgZm9yIGxpc3RfaW5jb21wYXRpYmxl
IGluIGxpc3RzX2luY29tcGF0aWJsZToKKyAgICAgICAgaWYgbGlzdF9pbmNvbXBhdGlibGUgaW4g
ZnJvOgorICAgICAgICAgIHJhaXNlIEtleUVycm9yLCAnSW5jb21wYXRpYmxlIGxpc3QgcG9saWNp
ZXMgJyArIGsgKyAnIGFuZCAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2lu
Y29tcGF0aWJsZQorCisgICAgICBpZiBsaXN0X2Jhc2UgaW4gdG86CisgICAgICAgIGlmIGV4dCA9
PSAnPyc6CisgICAgICAgICAgIyBJZiB0aGUga2V5IGVuZHMgaW4gIj8iLCB0aGUgbGlzdCB3aWxs
IG9ubHkgYmUgbWVyZ2VkIGlmIGl0IGRvZXNuJ3QKKyAgICAgICAgICAjIGFscmVhZHkgZXhpc3Qu
CisgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodG9bbGlzdF9i
YXNlXSwgbGlzdCk6CisgICAgICAgICAgIyBUaGlzIG1heSBub3QgaGF2ZSBiZWVuIGNoZWNrZWQg
YWJvdmUgaWYgbWVyZ2luZyBpbiBhIGxpc3Qgd2l0aCBhbgorICAgICAgICAgICMgZXh0ZW5zaW9u
IGNoYXJhY3Rlci4KKyAgICAgICAgICByYWlzZSBUeXBlRXJyb3IsIFwKKyAgICAgICAgICAgICAg
J0F0dGVtcHQgdG8gbWVyZ2UgZGljdCB2YWx1ZSBvZiB0eXBlICcgKyB2Ll9fY2xhc3NfXy5fX25h
bWVfXyArIFwKKyAgICAgICAgICAgICAgJyBpbnRvIGluY29tcGF0aWJsZSB0eXBlICcgKyB0b1ts
aXN0X2Jhc2VdLl9fY2xhc3NfXy5fX25hbWVfXyArIFwKKyAgICAgICAgICAgICAgJyBmb3Iga2V5
ICcgKyBsaXN0X2Jhc2UgKyAnKCcgKyBrICsgJyknCisgICAgICBlbHNlOgorICAgICAgICB0b1ts
aXN0X2Jhc2VdID0gW10KKworICAgICAgIyBDYWxsIE1lcmdlTGlzdHMsIHdoaWNoIHdpbGwgbWFr
ZSBjb3BpZXMgb2Ygb2JqZWN0cyB0aGF0IHJlcXVpcmUgaXQuCisgICAgICAjIE1lcmdlTGlzdHMg
Y2FuIHJlY3Vyc2UgYmFjayBpbnRvIE1lcmdlRGljdHMsIGFsdGhvdWdoIHRoaXMgd2lsbCBiZQor
ICAgICAgIyB0byBtYWtlIGNvcGllcyBvZiBkaWN0cyAod2l0aCBwYXRocyBmaXhlZCksIHRoZXJl
IHdpbGwgYmUgbm8KKyAgICAgICMgc3Vic2VxdWVudCBkaWN0ICJtZXJnaW5nIiBvbmNlIGVudGVy
aW5nIGEgbGlzdCBiZWNhdXNlIGxpc3RzIGFyZQorICAgICAgIyBhbHdheXMgcmVwbGFjZWQsIGFw
cGVuZGVkIHRvLCBvciBwcmVwZW5kZWQgdG8uCisgICAgICBpc19wYXRocyA9IElzUGF0aFNlY3Rp
b24obGlzdF9iYXNlKQorICAgICAgTWVyZ2VMaXN0cyh0b1tsaXN0X2Jhc2VdLCB2LCB0b19maWxl
LCBmcm9fZmlsZSwgaXNfcGF0aHMsIGFwcGVuZCkKKyAgICBlbHNlOgorICAgICAgcmFpc2UgVHlw
ZUVycm9yLCBcCisgICAgICAgICAgJ0F0dGVtcHQgdG8gbWVyZ2UgZGljdCB2YWx1ZSBvZiB1bnN1
cHBvcnRlZCB0eXBlICcgKyBcCisgICAgICAgICAgdi5fX2NsYXNzX18uX19uYW1lX18gKyAnIGZv
ciBrZXkgJyArIGsKKworCitkZWYgTWVyZ2VDb25maWdXaXRoSW5oZXJpdGFuY2UobmV3X2NvbmZp
Z3VyYXRpb25fZGljdCwgYnVpbGRfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0YXJnZXRfZGljdCwgY29uZmlndXJhdGlvbiwgdmlzaXRlZCk6CisgICMgU2tpcCBpZiBwcmV2
aW91c2x5IHZpc3RlZC4KKyAgaWYgY29uZmlndXJhdGlvbiBpbiB2aXNpdGVkOgorICAgIHJldHVy
bgorCisgICMgTG9vayBhdCB0aGlzIGNvbmZpZ3VyYXRpb24uCisgIGNvbmZpZ3VyYXRpb25fZGlj
dCA9IHRhcmdldF9kaWN0Wydjb25maWd1cmF0aW9ucyddW2NvbmZpZ3VyYXRpb25dCisKKyAgIyBN
ZXJnZSBpbiBwYXJlbnRzLgorICBmb3IgcGFyZW50IGluIGNvbmZpZ3VyYXRpb25fZGljdC5nZXQo
J2luaGVyaXRfZnJvbScsIFtdKToKKyAgICBNZXJnZUNvbmZpZ1dpdGhJbmhlcml0YW5jZShuZXdf
Y29uZmlndXJhdGlvbl9kaWN0LCBidWlsZF9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhcmdldF9kaWN0LCBwYXJlbnQsIHZpc2l0ZWQgKyBbY29uZmlndXJhdGlvbl0pCisK
KyAgIyBNZXJnZSBpdCBpbnRvIHRoZSBuZXcgY29uZmlnLgorICBNZXJnZURpY3RzKG5ld19jb25m
aWd1cmF0aW9uX2RpY3QsIGNvbmZpZ3VyYXRpb25fZGljdCwKKyAgICAgICAgICAgICBidWlsZF9m
aWxlLCBidWlsZF9maWxlKQorCisgICMgRHJvcCBhYnN0cmFjdC4KKyAgaWYgJ2Fic3RyYWN0JyBp
biBuZXdfY29uZmlndXJhdGlvbl9kaWN0OgorICAgIGRlbCBuZXdfY29uZmlndXJhdGlvbl9kaWN0
WydhYnN0cmFjdCddCisKKworZGVmIFNldFVwQ29uZmlndXJhdGlvbnModGFyZ2V0LCB0YXJnZXRf
ZGljdCk6CisgIGdsb2JhbCBub25fY29uZmlndXJhdGlvbl9rZXlzCisgICMga2V5X3N1ZmZpeGVz
IGlzIGEgbGlzdCBvZiBrZXkgc3VmZml4ZXMgdGhhdCBtaWdodCBhcHBlYXIgb24ga2V5IG5hbWVz
LgorICAjIFRoZXNlIHN1ZmZpeGVzIGFyZSBoYW5kbGVkIGluIGNvbmRpdGlvbmFsIGV2YWx1YXRp
b25zIChmb3IgPSwgKywgYW5kID8pCisgICMgYW5kIHJ1bGVzL2V4Y2x1ZGUgcHJvY2Vzc2luZyAo
Zm9yICEgYW5kIC8pLiAgS2V5cyB3aXRoIHRoZXNlIHN1ZmZpeGVzCisgICMgc2hvdWxkIGJlIHRy
ZWF0ZWQgdGhlIHNhbWUgYXMga2V5cyB3aXRob3V0LgorICBrZXlfc3VmZml4ZXMgPSBbJz0nLCAn
KycsICc/JywgJyEnLCAnLyddCisKKyAgYnVpbGRfZmlsZSA9IGd5cC5jb21tb24uQnVpbGRGaWxl
KHRhcmdldCkKKworICAjIFByb3ZpZGUgYSBzaW5nbGUgY29uZmlndXJhdGlvbiBieSBkZWZhdWx0
IGlmIG5vbmUgZXhpc3RzLgorICAjIFRPRE8obWFyayk6IFNpZ25hbCBhbiBlcnJvciBpZiBkZWZh
dWx0X2NvbmZpZ3VyYXRpb25zIGV4aXN0cyBidXQKKyAgIyBjb25maWd1cmF0aW9ucyBkb2VzIG5v
dC4KKyAgaWYgbm90ICdjb25maWd1cmF0aW9ucycgaW4gdGFyZ2V0X2RpY3Q6CisgICAgdGFyZ2V0
X2RpY3RbJ2NvbmZpZ3VyYXRpb25zJ10gPSB7J0RlZmF1bHQnOiB7fX0KKyAgaWYgbm90ICdkZWZh
dWx0X2NvbmZpZ3VyYXRpb24nIGluIHRhcmdldF9kaWN0OgorICAgIGNvbmNyZXRlID0gW2kgZm9y
IGkgaW4gdGFyZ2V0X2RpY3RbJ2NvbmZpZ3VyYXRpb25zJ10ua2V5cygpCisgICAgICAgICAgICAg
ICAgaWYgbm90IHRhcmdldF9kaWN0Wydjb25maWd1cmF0aW9ucyddW2ldLmdldCgnYWJzdHJhY3Qn
KV0KKyAgICB0YXJnZXRfZGljdFsnZGVmYXVsdF9jb25maWd1cmF0aW9uJ10gPSBzb3J0ZWQoY29u
Y3JldGUpWzBdCisKKyAgZm9yIGNvbmZpZ3VyYXRpb24gaW4gdGFyZ2V0X2RpY3RbJ2NvbmZpZ3Vy
YXRpb25zJ10ua2V5cygpOgorICAgIG9sZF9jb25maWd1cmF0aW9uX2RpY3QgPSB0YXJnZXRfZGlj
dFsnY29uZmlndXJhdGlvbnMnXVtjb25maWd1cmF0aW9uXQorICAgICMgU2tpcCBhYnN0cmFjdCBj
b25maWd1cmF0aW9ucyAoc2F2ZXMgd29yayBvbmx5KS4KKyAgICBpZiBvbGRfY29uZmlndXJhdGlv
bl9kaWN0LmdldCgnYWJzdHJhY3QnKToKKyAgICAgIGNvbnRpbnVlCisgICAgIyBDb25maWd1cmF0
aW9ucyBpbmhlcml0IChtb3N0KSBzZXR0aW5ncyBmcm9tIHRoZSBlbmNsb3NpbmcgdGFyZ2V0IHNj
b3BlLgorICAgICMgR2V0IHRoZSBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXAgcmlnaHQgYnkgbWFr
aW5nIGEgY29weSBvZiB0aGUgdGFyZ2V0CisgICAgIyBkaWN0LgorICAgIG5ld19jb25maWd1cmF0
aW9uX2RpY3QgPSBjb3B5LmRlZXBjb3B5KHRhcmdldF9kaWN0KQorCisgICAgIyBUYWtlIG91dCB0
aGUgYml0cyB0aGF0IGRvbid0IGJlbG9uZyBpbiBhICJjb25maWd1cmF0aW9ucyIgc2VjdGlvbi4K
KyAgICAjIFNpbmNlIGNvbmZpZ3VyYXRpb24gc2V0dXAgaXMgZG9uZSBiZWZvcmUgY29uZGl0aW9u
YWwsIGV4Y2x1ZGUsIGFuZCBydWxlcworICAgICMgcHJvY2Vzc2luZywgYmUgY2FyZWZ1bCB3aXRo
IGhhbmRsaW5nIG9mIHRoZSBzdWZmaXggY2hhcmFjdGVycyB1c2VkIGluCisgICAgIyB0aG9zZSBw
aGFzZXMuCisgICAgZGVsZXRlX2tleXMgPSBbXQorICAgIGZvciBrZXkgaW4gbmV3X2NvbmZpZ3Vy
YXRpb25fZGljdDoKKyAgICAgIGtleV9leHQgPSBrZXlbLTE6XQorICAgICAgaWYga2V5X2V4dCBp
biBrZXlfc3VmZml4ZXM6CisgICAgICAgIGtleV9iYXNlID0ga2V5WzotMV0KKyAgICAgIGVsc2U6
CisgICAgICAgIGtleV9iYXNlID0ga2V5CisgICAgICBpZiBrZXlfYmFzZSBpbiBub25fY29uZmln
dXJhdGlvbl9rZXlzOgorICAgICAgICBkZWxldGVfa2V5cy5hcHBlbmQoa2V5KQorCisgICAgZm9y
IGtleSBpbiBkZWxldGVfa2V5czoKKyAgICAgIGRlbCBuZXdfY29uZmlndXJhdGlvbl9kaWN0W2tl
eV0KKworICAgICMgTWVyZ2UgaW4gY29uZmlndXJhdGlvbiAod2l0aCBhbGwgaXRzIHBhcmVudHMg
Zmlyc3QpLgorICAgIE1lcmdlQ29uZmlnV2l0aEluaGVyaXRhbmNlKG5ld19jb25maWd1cmF0aW9u
X2RpY3QsIGJ1aWxkX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0
X2RpY3QsIGNvbmZpZ3VyYXRpb24sIFtdKQorCisgICAgIyBQdXQgdGhlIG5ldyByZXN1bHQgYmFj
ayBpbnRvIHRoZSB0YXJnZXQgZGljdCBhcyBhIGNvbmZpZ3VyYXRpb24uCisgICAgdGFyZ2V0X2Rp
Y3RbJ2NvbmZpZ3VyYXRpb25zJ11bY29uZmlndXJhdGlvbl0gPSBuZXdfY29uZmlndXJhdGlvbl9k
aWN0CisKKyAgIyBOb3cgZHJvcCBhbGwgdGhlIGFic3RyYWN0IG9uZXMuCisgIGZvciBjb25maWd1
cmF0aW9uIGluIHRhcmdldF9kaWN0Wydjb25maWd1cmF0aW9ucyddLmtleXMoKToKKyAgICBvbGRf
Y29uZmlndXJhdGlvbl9kaWN0ID0gdGFyZ2V0X2RpY3RbJ2NvbmZpZ3VyYXRpb25zJ11bY29uZmln
dXJhdGlvbl0KKyAgICBpZiBvbGRfY29uZmlndXJhdGlvbl9kaWN0LmdldCgnYWJzdHJhY3QnKToK
KyAgICAgIGRlbCB0YXJnZXRfZGljdFsnY29uZmlndXJhdGlvbnMnXVtjb25maWd1cmF0aW9uXQor
CisgICMgTm93IHRoYXQgYWxsIG9mIHRoZSB0YXJnZXQncyBjb25maWd1cmF0aW9ucyBoYXZlIGJl
ZW4gYnVpbHQsIGdvIHRocm91Z2gKKyAgIyB0aGUgdGFyZ2V0IGRpY3QncyBrZXlzIGFuZCByZW1v
dmUgZXZlcnl0aGluZyB0aGF0J3MgYmVlbiBtb3ZlZCBpbnRvIGEKKyAgIyAiY29uZmlndXJhdGlv
bnMiIHNlY3Rpb24uCisgIGRlbGV0ZV9rZXlzID0gW10KKyAgZm9yIGtleSBpbiB0YXJnZXRfZGlj
dDoKKyAgICBrZXlfZXh0ID0ga2V5Wy0xOl0KKyAgICBpZiBrZXlfZXh0IGluIGtleV9zdWZmaXhl
czoKKyAgICAgIGtleV9iYXNlID0ga2V5WzotMV0KKyAgICBlbHNlOgorICAgICAga2V5X2Jhc2Ug
PSBrZXkKKyAgICBpZiBub3Qga2V5X2Jhc2UgaW4gbm9uX2NvbmZpZ3VyYXRpb25fa2V5czoKKyAg
ICAgIGRlbGV0ZV9rZXlzLmFwcGVuZChrZXkpCisgIGZvciBrZXkgaW4gZGVsZXRlX2tleXM6Cisg
ICAgZGVsIHRhcmdldF9kaWN0W2tleV0KKworICAjIENoZWNrIHRoZSBjb25maWd1cmF0aW9ucyB0
byBzZWUgaWYgdGhleSBjb250YWluIGludmFsaWQga2V5cy4KKyAgZm9yIGNvbmZpZ3VyYXRpb24g
aW4gdGFyZ2V0X2RpY3RbJ2NvbmZpZ3VyYXRpb25zJ10ua2V5cygpOgorICAgIGNvbmZpZ3VyYXRp
b25fZGljdCA9IHRhcmdldF9kaWN0Wydjb25maWd1cmF0aW9ucyddW2NvbmZpZ3VyYXRpb25dCisg
ICAgZm9yIGtleSBpbiBjb25maWd1cmF0aW9uX2RpY3Qua2V5cygpOgorICAgICAgaWYga2V5IGlu
IGludmFsaWRfY29uZmlndXJhdGlvbl9rZXlzOgorICAgICAgICByYWlzZSBLZXlFcnJvciwgKCcl
cyBub3QgYWxsb3dlZCBpbiB0aGUgJXMgY29uZmlndXJhdGlvbiwgZm91bmQgaW4gJworICAgICAg
ICAgICAgICAgICAgICAgICAgICd0YXJnZXQgJXMnICUgKGtleSwgY29uZmlndXJhdGlvbiwgdGFy
Z2V0KSkKKworCisKK2RlZiBQcm9jZXNzTGlzdEZpbHRlcnNJbkRpY3QobmFtZSwgdGhlX2RpY3Qp
OgorICAiIiJQcm9jZXNzIHJlZ3VsYXIgZXhwcmVzc2lvbiBhbmQgZXhjbHVzaW9uLWJhc2VkIGZp
bHRlcnMgb24gbGlzdHMuCisKKyAgQW4gZXhjbHVzaW9uIGxpc3QgaXMgaW4gYSBkaWN0IGtleSBu
YW1lZCB3aXRoIGEgdHJhaWxpbmcgIiEiLCBsaWtlCisgICJzb3VyY2VzISIuICBFdmVyeSBpdGVt
IGluIHN1Y2ggYSBsaXN0IGlzIHJlbW92ZWQgZnJvbSB0aGUgYXNzb2NpYXRlZAorICBtYWluIGxp
c3QsIHdoaWNoIGluIHRoaXMgZXhhbXBsZSwgd291bGQgYmUgInNvdXJjZXMiLiAgUmVtb3ZlZCBp
dGVtcyBhcmUKKyAgcGxhY2VkIGludG8gYSAic291cmNlc19leGNsdWRlZCIgbGlzdCBpbiB0aGUg
ZGljdC4KKworICBSZWd1bGFyIGV4cHJlc3Npb24gKHJlZ2V4KSBmaWx0ZXJzIGFyZSBjb250YWlu
ZWQgaW4gZGljdCBrZXlzIG5hbWVkIHdpdGggYQorICB0cmFpbGluZyAiLyIsIHN1Y2ggYXMgInNv
dXJjZXMvIiB0byBvcGVyYXRlIG9uIHRoZSAic291cmNlcyIgbGlzdC4gIFJlZ2V4CisgIGZpbHRl
cnMgaW4gYSBkaWN0IHRha2UgdGhlIGZvcm06CisgICAgJ3NvdXJjZXMvJzogWyBbJ2V4Y2x1ZGUn
LCAnXyhsaW51eHxtYWN8d2luKVxcLmNjJCddIF0sCisgICAgICAgICAgICAgICAgICBbJ2luY2x1
ZGUnLCAnX21hY1xcLmNjJCddIF0sCisgIFRoZSBmaXJzdCBmaWx0ZXIgc2F5cyB0byBleGNsdWRl
IGFsbCBmaWxlcyBlbmRpbmcgaW4gX2xpbnV4LmNjLCBfbWFjLmNjLCBhbmQKKyAgX3dpbi5jYy4g
IFRoZSBzZWNvbmQgZmlsdGVyIHRoZW4gaW5jbHVkZXMgYWxsIGZpbGVzIGVuZGluZyBpbiBfbWFj
LmNjIHRoYXQKKyAgYXJlIG5vdyBvciB3ZXJlIG9uY2UgaW4gdGhlICJzb3VyY2VzIiBsaXN0LiAg
SXRlbXMgbWF0Y2hpbmcgYW4gImV4Y2x1ZGUiCisgIGZpbHRlciBhcmUgc3ViamVjdCB0byB0aGUg
c2FtZSBwcm9jZXNzaW5nIGFzIHdvdWxkIG9jY3VyIGlmIHRoZXkgd2VyZSBsaXN0ZWQKKyAgYnkg
bmFtZSBpbiBhbiBleGNsdXNpb24gbGlzdCAoZW5kaW5nIGluICIhIikuICBJdGVtcyBtYXRjaGlu
ZyBhbiAiaW5jbHVkZSIKKyAgZmlsdGVyIGFyZSBicm91Z2h0IGJhY2sgaW50byB0aGUgbWFpbiBs
aXN0IGlmIHByZXZpb3VzbHkgZXhjbHVkZWQgYnkgYW4KKyAgZXhjbHVzaW9uIGxpc3Qgb3IgZXhj
bHVzaW9uIHJlZ2V4IGZpbHRlci4gIFN1YnNlcXVlbnQgbWF0Y2hpbmcgImV4Y2x1ZGUiCisgIHBh
dHRlcm5zIGNhbiBzdGlsbCBjYXVzZSBpdGVtcyB0byBiZSBleGNsdWRlZCBhZnRlciBtYXRjaGlu
ZyBhbiAiaW5jbHVkZSIuCisgICIiIgorCisgICMgTG9vayB0aHJvdWdoIHRoZSBkaWN0aW9uYXJ5
IGZvciBhbnkgbGlzdHMgd2hvc2Uga2V5cyBlbmQgaW4gIiEiIG9yICIvIi4KKyAgIyBUaGVzZSBh
cmUgbGlzdHMgdGhhdCB3aWxsIGJlIHRyZWF0ZWQgYXMgZXhjbHVkZSBsaXN0cyBhbmQgcmVndWxh
cgorICAjIGV4cHJlc3Npb24tYmFzZWQgZXhjbHVkZS9pbmNsdWRlIGxpc3RzLiAgQ29sbGVjdCB0
aGUgbGlzdHMgdGhhdCBhcmUKKyAgIyBuZWVkZWQgZmlyc3QsIGxvb2tpbmcgZm9yIHRoZSBsaXN0
cyB0aGF0IHRoZXkgb3BlcmF0ZSBvbiwgYW5kIGFzc2VtYmxlCisgICMgdGhlbiBpbnRvIHxsaXN0
c3wuICBUaGlzIGlzIGRvbmUgaW4gYSBzZXBhcmF0ZSBsb29wIHVwIGZyb250LCBiZWNhdXNlCisg
ICMgdGhlIF9pbmNsdWRlZCBhbmQgX2V4Y2x1ZGVkIGtleXMgbmVlZCB0byBiZSBhZGRlZCB0byB0
aGVfZGljdCwgYW5kIHRoYXQKKyAgIyBjYW4ndCBiZSBkb25lIHdoaWxlIGl0ZXJhdGluZyB0aHJv
dWdoIGl0LgorCisgIGxpc3RzID0gW10KKyAgZGVsX2xpc3RzID0gW10KKyAgZm9yIGtleSwgdmFs
dWUgaW4gdGhlX2RpY3QuaXRlcml0ZW1zKCk6CisgICAgb3BlcmF0aW9uID0ga2V5Wy0xXQorICAg
IGlmIG9wZXJhdGlvbiAhPSAnIScgYW5kIG9wZXJhdGlvbiAhPSAnLyc6CisgICAgICBjb250aW51
ZQorCisgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgorICAgICAgcmFpc2UgVmFs
dWVFcnJvciwgbmFtZSArICcga2V5ICcgKyBrZXkgKyAnIG11c3QgYmUgbGlzdCwgbm90ICcgKyBc
CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5fX2NsYXNzX18uX19uYW1lX18KKworICAg
IGxpc3Rfa2V5ID0ga2V5WzotMV0KKyAgICBpZiBsaXN0X2tleSBub3QgaW4gdGhlX2RpY3Q6Cisg
ICAgICAjIFRoaXMgaGFwcGVucyB3aGVuIHRoZXJlJ3MgYSBsaXN0IGxpa2UgInNvdXJjZXMhIiBi
dXQgbm8gY29ycmVzcG9uZGluZworICAgICAgIyAic291cmNlcyIgbGlzdC4gIFNpbmNlIHRoZXJl
J3Mgbm90aGluZyBmb3IgaXQgdG8gb3BlcmF0ZSBvbiwgcXVldWUgdXAKKyAgICAgICMgdGhlICJz
b3VyY2VzISIgbGlzdCBmb3IgZGVsZXRpb24gbm93LgorICAgICAgZGVsX2xpc3RzLmFwcGVuZChr
ZXkpCisgICAgICBjb250aW51ZQorCisgICAgaWYgbm90IGlzaW5zdGFuY2UodGhlX2RpY3RbbGlz
dF9rZXldLCBsaXN0KToKKyAgICAgIHJhaXNlIFZhbHVlRXJyb3IsIG5hbWUgKyAnIGtleSAnICsg
bGlzdF9rZXkgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAnIG11c3QgYmUgbGlzdCwgbm90
ICcgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5fX2NsYXNzX18uX19uYW1lX18g
KyAnIHdoZW4gYXBwbHlpbmcgJyArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsnISc6ICdl
eGNsdXNpb24nLCAnLyc6ICdyZWdleCd9W29wZXJhdGlvbl0KKworICAgIGlmIG5vdCBsaXN0X2tl
eSBpbiBsaXN0czoKKyAgICAgIGxpc3RzLmFwcGVuZChsaXN0X2tleSkKKworICAjIERlbGV0ZSB0
aGUgbGlzdHMgdGhhdCBhcmUga25vd24gdG8gYmUgdW5uZWVkZWQgYXQgdGhpcyBwb2ludC4KKyAg
Zm9yIGRlbF9saXN0IGluIGRlbF9saXN0czoKKyAgICBkZWwgdGhlX2RpY3RbZGVsX2xpc3RdCisK
KyAgZm9yIGxpc3Rfa2V5IGluIGxpc3RzOgorICAgIHRoZV9saXN0ID0gdGhlX2RpY3RbbGlzdF9r
ZXldCisKKyAgICAjIEluaXRpYWxpemUgdGhlIGxpc3RfYWN0aW9ucyBsaXN0LCB3aGljaCBpcyBw
YXJhbGxlbCB0byB0aGVfbGlzdC4gIEVhY2gKKyAgICAjIGl0ZW0gaW4gbGlzdF9hY3Rpb25zIGlk
ZW50aWZpZXMgd2hldGhlciB0aGUgY29ycmVzcG9uZGluZyBpdGVtIGluCisgICAgIyB0aGVfbGlz
dCBzaG91bGQgYmUgZXhjbHVkZWQsIHVuY29uZGl0aW9uYWxseSBwcmVzZXJ2ZWQgKGluY2x1ZGVk
KSwgb3IKKyAgICAjIHdoZXRoZXIgbm8gZXhjbHVzaW9uIG9yIGluY2x1c2lvbiBoYXMgYmVlbiBh
cHBsaWVkLiAgSXRlbXMgZm9yIHdoaWNoCisgICAgIyBubyBleGNsdXNpb24gb3IgaW5jbHVzaW9u
IGhhcyBiZWVuIGFwcGxpZWQgKHlldCkgaGF2ZSB2YWx1ZSAtMSwgaXRlbXMKKyAgICAjIGV4Y2x1
ZGVkIGhhdmUgdmFsdWUgMCwgYW5kIGl0ZW1zIGluY2x1ZGVkIGhhdmUgdmFsdWUgMS4gIEluY2x1
ZGVzIGFuZAorICAgICMgZXhjbHVkZXMgb3ZlcnJpZGUgcHJldmlvdXMgYWN0aW9ucy4gIEFsbCBp
dGVtcyBpbiBsaXN0X2FjdGlvbnMgYXJlCisgICAgIyBpbml0aWFsaXplZCB0byAtMSBiZWNhdXNl
IG5vIGV4Y2x1ZGVzIG9yIGluY2x1ZGVzIGhhdmUgYmVlbiBwcm9jZXNzZWQKKyAgICAjIHlldC4K
KyAgICBsaXN0X2FjdGlvbnMgPSBsaXN0KCgtMSwpICogbGVuKHRoZV9saXN0KSkKKworICAgIGV4
Y2x1ZGVfa2V5ID0gbGlzdF9rZXkgKyAnIScKKyAgICBpZiBleGNsdWRlX2tleSBpbiB0aGVfZGlj
dDoKKyAgICAgIGZvciBleGNsdWRlX2l0ZW0gaW4gdGhlX2RpY3RbZXhjbHVkZV9rZXldOgorICAg
ICAgICBmb3IgaW5kZXggaW4geHJhbmdlKDAsIGxlbih0aGVfbGlzdCkpOgorICAgICAgICAgIGlm
IGV4Y2x1ZGVfaXRlbSA9PSB0aGVfbGlzdFtpbmRleF06CisgICAgICAgICAgICAjIFRoaXMgaXRl
bSBtYXRjaGVzIHRoZSBleGNsdWRlX2l0ZW0sIHNvIHNldCBpdHMgYWN0aW9uIHRvIDAKKyAgICAg
ICAgICAgICMgKGV4Y2x1ZGUpLgorICAgICAgICAgICAgbGlzdF9hY3Rpb25zW2luZGV4XSA9IDAK
KworICAgICAgIyBUaGUgIndoYXRldmVyISIgbGlzdCBpcyBubyBsb25nZXIgbmVlZGVkLCBkdW1w
IGl0LgorICAgICAgZGVsIHRoZV9kaWN0W2V4Y2x1ZGVfa2V5XQorCisgICAgcmVnZXhfa2V5ID0g
bGlzdF9rZXkgKyAnLycKKyAgICBpZiByZWdleF9rZXkgaW4gdGhlX2RpY3Q6CisgICAgICBmb3Ig
cmVnZXhfaXRlbSBpbiB0aGVfZGljdFtyZWdleF9rZXldOgorICAgICAgICBbYWN0aW9uLCBwYXR0
ZXJuXSA9IHJlZ2V4X2l0ZW0KKyAgICAgICAgcGF0dGVybl9yZSA9IHJlLmNvbXBpbGUocGF0dGVy
bikKKworICAgICAgICBmb3IgaW5kZXggaW4geHJhbmdlKDAsIGxlbih0aGVfbGlzdCkpOgorICAg
ICAgICAgIGxpc3RfaXRlbSA9IHRoZV9saXN0W2luZGV4XQorICAgICAgICAgIGlmIHBhdHRlcm5f
cmUuc2VhcmNoKGxpc3RfaXRlbSk6CisgICAgICAgICAgICAjIFJlZ3VsYXIgZXhwcmVzc2lvbiBt
YXRjaC4KKworICAgICAgICAgICAgaWYgYWN0aW9uID09ICdleGNsdWRlJzoKKyAgICAgICAgICAg
ICAgIyBUaGlzIGl0ZW0gbWF0Y2hlcyBhbiBleGNsdWRlIHJlZ2V4LCBzbyBzZXQgaXRzIHZhbHVl
IHRvIDAKKyAgICAgICAgICAgICAgIyAoZXhjbHVkZSkuCisgICAgICAgICAgICAgIGxpc3RfYWN0
aW9uc1tpbmRleF0gPSAwCisgICAgICAgICAgICBlbGlmIGFjdGlvbiA9PSAnaW5jbHVkZSc6Cisg
ICAgICAgICAgICAgICMgVGhpcyBpdGVtIG1hdGNoZXMgYW4gaW5jbHVkZSByZWdleCwgc28gc2V0
IGl0cyB2YWx1ZSB0byAxCisgICAgICAgICAgICAgICMgKGluY2x1ZGUpLgorICAgICAgICAgICAg
ICBsaXN0X2FjdGlvbnNbaW5kZXhdID0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgIyBUaGlzIGlzIGFuIGFjdGlvbiB0aGF0IGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UuCisgICAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IsICdVbnJlY29nbml6ZWQgYWN0aW9uICcgKyBhY3Rp
b24gKyAnIGluICcgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgKyAn
IGtleSAnICsga2V5CisKKyAgICAgICMgVGhlICJ3aGF0ZXZlci8iIGxpc3QgaXMgbm8gbG9uZ2Vy
IG5lZWRlZCwgZHVtcCBpdC4KKyAgICAgIGRlbCB0aGVfZGljdFtyZWdleF9rZXldCisKKyAgICAj
IEFkZCBleGNsdWRlZCBpdGVtcyB0byB0aGUgZXhjbHVkZWQgbGlzdC4KKyAgICAjCisgICAgIyBO
b3RlIHRoYXQgZXhjbHVkZV9rZXkgKCJzb3VyY2VzISIpIGlzIGRpZmZlcmVudCBmcm9tIGV4Y2x1
ZGVkX2tleQorICAgICMgKCJzb3VyY2VzX2V4Y2x1ZGVkIikuICBUaGUgZXhjbHVkZV9rZXkgbGlz
dCBpcyBpbnB1dCBhbmQgaXQgd2FzIGFscmVhZHkKKyAgICAjIHByb2Nlc3NlZCBhbmQgZGVsZXRl
ZDsgdGhlIGV4Y2x1ZGVkX2tleSBsaXN0IGlzIG91dHB1dCBhbmQgaXQncyBhYm91dAorICAgICMg
dG8gYmUgY3JlYXRlZC4KKyAgICBleGNsdWRlZF9rZXkgPSBsaXN0X2tleSArICdfZXhjbHVkZWQn
CisgICAgaWYgZXhjbHVkZWRfa2V5IGluIHRoZV9kaWN0OgorICAgICAgcmFpc2UgS2V5RXJyb3Is
IFwKKyAgICAgICAgICBuYW1lICsgJyBrZXkgJyArIGV4Y2x1ZGVkX2tleSArICcgbXVzdCBub3Qg
YmUgcHJlc2VudCBwcmlvciAnICsgXAorICAgICAgICAgICcgdG8gYXBwbHlpbmcgZXhjbHVzaW9u
L3JlZ2V4IGZpbHRlcnMgZm9yICcgKyBsaXN0X2tleQorCisgICAgZXhjbHVkZWRfbGlzdCA9IFtd
CisKKyAgICAjIEdvIGJhY2t3YXJkcyB0aHJvdWdoIHRoZSBsaXN0X2FjdGlvbnMgbGlzdCBzbyB0
aGF0IGFzIGl0ZW1zIGFyZSBkZWxldGVkLAorICAgICMgdGhlIGluZGljZXMgb2YgaXRlbXMgdGhh
dCBoYXZlbid0IGJlZW4gc2VlbiB5ZXQgZG9uJ3Qgc2hpZnQuICBUaGF0IG1lYW5zCisgICAgIyB0
aGF0IHRoaW5ncyBuZWVkIHRvIGJlIHByZXBlbmRlZCB0byBleGNsdWRlZF9saXN0IHRvIG1haW50
YWluIHRoZW0gaW4gdGhlCisgICAgIyBzYW1lIG9yZGVyIHRoYXQgdGhleSBleGlzdGVkIGluIHRo
ZV9saXN0LgorICAgIGZvciBpbmRleCBpbiB4cmFuZ2UobGVuKGxpc3RfYWN0aW9ucykgLSAxLCAt
MSwgLTEpOgorICAgICAgaWYgbGlzdF9hY3Rpb25zW2luZGV4XSA9PSAwOgorICAgICAgICAjIER1
bXAgYW55dGhpbmcgd2l0aCBhY3Rpb24gMCAoZXhjbHVkZSkuICBLZWVwIGFueXRoaW5nIHdpdGgg
YWN0aW9uIDEKKyAgICAgICAgIyAoaW5jbHVkZSkgb3IgLTEgKG5vIGluY2x1ZGUgb3IgZXhjbHVk
ZSBzZWVuIGZvciB0aGUgaXRlbSkuCisgICAgICAgIGV4Y2x1ZGVkX2xpc3QuaW5zZXJ0KDAsIHRo
ZV9saXN0W2luZGV4XSkKKyAgICAgICAgZGVsIHRoZV9saXN0W2luZGV4XQorCisgICAgIyBJZiBh
bnl0aGluZyB3YXMgZXhjbHVkZWQsIHB1dCB0aGUgZXhjbHVkZWQgbGlzdCBpbnRvIHRoZV9kaWN0
IGF0CisgICAgIyBleGNsdWRlZF9rZXkuCisgICAgaWYgbGVuKGV4Y2x1ZGVkX2xpc3QpID4gMDoK
KyAgICAgIHRoZV9kaWN0W2V4Y2x1ZGVkX2tleV0gPSBleGNsdWRlZF9saXN0CisKKyAgIyBOb3cg
cmVjdXJzZSBpbnRvIHN1YmRpY3RzIGFuZCBsaXN0cyB0aGF0IG1heSBjb250YWluIGRpY3RzLgor
ICBmb3Iga2V5LCB2YWx1ZSBpbiB0aGVfZGljdC5pdGVyaXRlbXMoKToKKyAgICBpZiBpc2luc3Rh
bmNlKHZhbHVlLCBkaWN0KToKKyAgICAgIFByb2Nlc3NMaXN0RmlsdGVyc0luRGljdChrZXksIHZh
bHVlKQorICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgbGlzdCk6CisgICAgICBQcm9jZXNzTGlz
dEZpbHRlcnNJbkxpc3Qoa2V5LCB2YWx1ZSkKKworCitkZWYgUHJvY2Vzc0xpc3RGaWx0ZXJzSW5M
aXN0KG5hbWUsIHRoZV9saXN0KToKKyAgZm9yIGl0ZW0gaW4gdGhlX2xpc3Q6CisgICAgaWYgaXNp
bnN0YW5jZShpdGVtLCBkaWN0KToKKyAgICAgIFByb2Nlc3NMaXN0RmlsdGVyc0luRGljdChuYW1l
LCBpdGVtKQorICAgIGVsaWYgaXNpbnN0YW5jZShpdGVtLCBsaXN0KToKKyAgICAgIFByb2Nlc3NM
aXN0RmlsdGVyc0luTGlzdChuYW1lLCBpdGVtKQorCisKK2RlZiBWYWxpZGF0ZVJ1bGVzSW5UYXJn
ZXQodGFyZ2V0LCB0YXJnZXRfZGljdCwgZXh0cmFfc291cmNlc19mb3JfcnVsZXMpOgorICAiIiJF
bnN1cmVzIHRoYXQgdGhlIHJ1bGVzIHNlY3Rpb25zIGluIHRhcmdldF9kaWN0IGFyZSB2YWxpZCBh
bmQgY29uc2lzdGVudCwKKyAgYW5kIGRldGVybWluZXMgd2hpY2ggc291cmNlcyB0aGV5IGFwcGx5
IHRvLgorCisgIEFyZ3VtZW50czoKKyAgICB0YXJnZXQ6IHN0cmluZywgbmFtZSBvZiB0YXJnZXQu
CisgICAgdGFyZ2V0X2RpY3Q6IGRpY3QsIHRhcmdldCBzcGVjIGNvbnRhaW5pbmcgInJ1bGVzIiBh
bmQgInNvdXJjZXMiIGxpc3RzLgorICAgIGV4dHJhX3NvdXJjZXNfZm9yX3J1bGVzOiBhIGxpc3Qg
b2Yga2V5cyB0byBzY2FuIGZvciBydWxlIG1hdGNoZXMgaW4KKyAgICAgICAgYWRkaXRpb24gdG8g
J3NvdXJjZXMnLgorICAiIiIKKworICAjIERpY3RzIHRvIG1hcCBiZXR3ZWVuIHZhbHVlcyBmb3Vu
ZCBpbiBydWxlcycgJ3J1bGVfbmFtZScgYW5kICdleHRlbnNpb24nCisgICMga2V5cyBhbmQgdGhl
IHJ1bGUgZGljdHMgdGhlbXNlbHZlcy4KKyAgcnVsZV9uYW1lcyA9IHt9CisgIHJ1bGVfZXh0ZW5z
aW9ucyA9IHt9CisKKyAgcnVsZXMgPSB0YXJnZXRfZGljdC5nZXQoJ3J1bGVzJywgW10pCisgIGZv
ciBydWxlIGluIHJ1bGVzOgorICAgICMgTWFrZSBzdXJlIHRoYXQgdGhlcmUncyBubyBjb25mbGlj
dCBhbW9uZyBydWxlIG5hbWVzIGFuZCBleHRlbnNpb25zLgorICAgIHJ1bGVfbmFtZSA9IHJ1bGVb
J3J1bGVfbmFtZSddCisgICAgaWYgcnVsZV9uYW1lIGluIHJ1bGVfbmFtZXM6CisgICAgICByYWlz
ZSBLZXlFcnJvciwgJ3J1bGUgJXMgZXhpc3RzIGluIGR1cGxpY2F0ZSwgdGFyZ2V0ICVzJyAlIFwK
KyAgICAgICAgICAgICAgICAgICAgICAocnVsZV9uYW1lLCB0YXJnZXQpCisgICAgcnVsZV9uYW1l
c1tydWxlX25hbWVdID0gcnVsZQorCisgICAgcnVsZV9leHRlbnNpb24gPSBydWxlWydleHRlbnNp
b24nXQorICAgIGlmIHJ1bGVfZXh0ZW5zaW9uIGluIHJ1bGVfZXh0ZW5zaW9uczoKKyAgICAgIHJh
aXNlIEtleUVycm9yLCAoJ2V4dGVuc2lvbiAlcyBhc3NvY2lhdGVkIHdpdGggbXVsdGlwbGUgcnVs
ZXMsICcgKworICAgICAgICAgICAgICAgICAgICAgICAndGFyZ2V0ICVzIHJ1bGVzICVzIGFuZCAl
cycpICUgXAorICAgICAgICAgICAgICAgICAgICAgIChydWxlX2V4dGVuc2lvbiwgdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICBydWxlX2V4dGVuc2lvbnNbcnVsZV9leHRlbnNpb25dWydy
dWxlX25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgcnVsZV9uYW1lKQorICAgIHJ1bGVf
ZXh0ZW5zaW9uc1tydWxlX2V4dGVuc2lvbl0gPSBydWxlCisKKyAgICAjIE1ha2Ugc3VyZSBydWxl
X3NvdXJjZXMgaXNuJ3QgYWxyZWFkeSB0aGVyZS4gIEl0J3MgZ29pbmcgdG8gYmUKKyAgICAjIGNy
ZWF0ZWQgYmVsb3cgaWYgbmVlZGVkLgorICAgIGlmICdydWxlX3NvdXJjZXMnIGluIHJ1bGU6Cisg
ICAgICByYWlzZSBLZXlFcnJvciwgXAorICAgICAgICAgICAgJ3J1bGVfc291cmNlcyBtdXN0IG5v
dCBleGlzdCBpbiBpbnB1dCwgdGFyZ2V0ICVzIHJ1bGUgJXMnICUgXAorICAgICAgICAgICAgKHRh
cmdldCwgcnVsZV9uYW1lKQorICAgIGV4dGVuc2lvbiA9IHJ1bGVbJ2V4dGVuc2lvbiddCisKKyAg
ICBydWxlX3NvdXJjZXMgPSBbXQorICAgIHNvdXJjZV9rZXlzID0gWydzb3VyY2VzJ10KKyAgICBz
b3VyY2Vfa2V5cy5leHRlbmQoZXh0cmFfc291cmNlc19mb3JfcnVsZXMpCisgICAgZm9yIHNvdXJj
ZV9rZXkgaW4gc291cmNlX2tleXM6CisgICAgICBmb3Igc291cmNlIGluIHRhcmdldF9kaWN0Lmdl
dChzb3VyY2Vfa2V5LCBbXSk6CisgICAgICAgIChzb3VyY2Vfcm9vdCwgc291cmNlX2V4dGVuc2lv
bikgPSBvcy5wYXRoLnNwbGl0ZXh0KHNvdXJjZSkKKyAgICAgICAgaWYgc291cmNlX2V4dGVuc2lv
bi5zdGFydHN3aXRoKCcuJyk6CisgICAgICAgICAgc291cmNlX2V4dGVuc2lvbiA9IHNvdXJjZV9l
eHRlbnNpb25bMTpdCisgICAgICAgIGlmIHNvdXJjZV9leHRlbnNpb24gPT0gZXh0ZW5zaW9uOgor
ICAgICAgICAgIHJ1bGVfc291cmNlcy5hcHBlbmQoc291cmNlKQorCisgICAgaWYgbGVuKHJ1bGVf
c291cmNlcykgPiAwOgorICAgICAgcnVsZVsncnVsZV9zb3VyY2VzJ10gPSBydWxlX3NvdXJjZXMK
KworCitkZWYgVmFsaWRhdGVBY3Rpb25zSW5UYXJnZXQodGFyZ2V0LCB0YXJnZXRfZGljdCwgYnVp
bGRfZmlsZSk6CisgICcnJ1ZhbGlkYXRlcyB0aGUgaW5wdXRzIHRvIHRoZSBhY3Rpb25zIGluIGEg
dGFyZ2V0LicnJworICB0YXJnZXRfbmFtZSA9IHRhcmdldF9kaWN0LmdldCgndGFyZ2V0X25hbWUn
KQorICBhY3Rpb25zID0gdGFyZ2V0X2RpY3QuZ2V0KCdhY3Rpb25zJywgW10pCisgIGZvciBhY3Rp
b24gaW4gYWN0aW9uczoKKyAgICBhY3Rpb25fbmFtZSA9IGFjdGlvbi5nZXQoJ2FjdGlvbl9uYW1l
JykKKyAgICBpZiBub3QgYWN0aW9uX25hbWU6CisgICAgICByYWlzZSBFeGNlcHRpb24oIkFub255
bW91cyBhY3Rpb24gaW4gdGFyZ2V0ICVzLiAgIgorICAgICAgICAgICAgICAgICAgICAgICJBbiBh
Y3Rpb24gbXVzdCBoYXZlIGFuICdhY3Rpb25fbmFtZScgZmllbGQuIiAlCisgICAgICAgICAgICAg
ICAgICAgICAgdGFyZ2V0X25hbWUpCisgICAgaW5wdXRzID0gYWN0aW9uLmdldCgnaW5wdXRzJywg
W10pCisKKworZGVmIFZhbGlkYXRlUnVuQXNJblRhcmdldCh0YXJnZXQsIHRhcmdldF9kaWN0LCBi
dWlsZF9maWxlKToKKyAgdGFyZ2V0X25hbWUgPSB0YXJnZXRfZGljdC5nZXQoJ3RhcmdldF9uYW1l
JykKKyAgcnVuX2FzID0gdGFyZ2V0X2RpY3QuZ2V0KCdydW5fYXMnKQorICBpZiBub3QgcnVuX2Fz
OgorICAgIHJldHVybgorICBpZiBub3QgaXNpbnN0YW5jZShydW5fYXMsIGRpY3QpOgorICAgIHJh
aXNlIEV4Y2VwdGlvbigiVGhlICdydW5fYXMnIGluIHRhcmdldCAlcyBmcm9tIGZpbGUgJXMgc2hv
dWxkIGJlIGEgIgorICAgICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS4iICUKKyAgICAgICAg
ICAgICAgICAgICAgKHRhcmdldF9uYW1lLCBidWlsZF9maWxlKSkKKyAgYWN0aW9uID0gcnVuX2Fz
LmdldCgnYWN0aW9uJykKKyAgaWYgbm90IGFjdGlvbjoKKyAgICByYWlzZSBFeGNlcHRpb24oIlRo
ZSAncnVuX2FzJyBpbiB0YXJnZXQgJXMgZnJvbSBmaWxlICVzIG11c3QgaGF2ZSBhbiAiCisgICAg
ICAgICAgICAgICAgICAgICInYWN0aW9uJyBzZWN0aW9uLiIgJQorICAgICAgICAgICAgICAgICAg
ICAodGFyZ2V0X25hbWUsIGJ1aWxkX2ZpbGUpKQorICBpZiBub3QgaXNpbnN0YW5jZShhY3Rpb24s
IGxpc3QpOgorICAgIHJhaXNlIEV4Y2VwdGlvbigiVGhlICdhY3Rpb24nIGZvciAncnVuX2FzJyBp
biB0YXJnZXQgJXMgZnJvbSBmaWxlICVzICIKKyAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUg
YSBsaXN0LiIgJQorICAgICAgICAgICAgICAgICAgICAodGFyZ2V0X25hbWUsIGJ1aWxkX2ZpbGUp
KQorICB3b3JraW5nX2RpcmVjdG9yeSA9IHJ1bl9hcy5nZXQoJ3dvcmtpbmdfZGlyZWN0b3J5JykK
KyAgaWYgd29ya2luZ19kaXJlY3RvcnkgYW5kIG5vdCBpc2luc3RhbmNlKHdvcmtpbmdfZGlyZWN0
b3J5LCBzdHIpOgorICAgIHJhaXNlIEV4Y2VwdGlvbigiVGhlICd3b3JraW5nX2RpcmVjdG9yeScg
Zm9yICdydW5fYXMnIGluIHRhcmdldCAlcyAiCisgICAgICAgICAgICAgICAgICAgICJpbiBmaWxl
ICVzIHNob3VsZCBiZSBhIHN0cmluZy4iICUKKyAgICAgICAgICAgICAgICAgICAgKHRhcmdldF9u
YW1lLCBidWlsZF9maWxlKSkKKyAgZW52aXJvbm1lbnQgPSBydW5fYXMuZ2V0KCdlbnZpcm9ubWVu
dCcpCisgIGlmIGVudmlyb25tZW50IGFuZCBub3QgaXNpbnN0YW5jZShlbnZpcm9ubWVudCwgZGlj
dCk6CisgICAgcmFpc2UgRXhjZXB0aW9uKCJUaGUgJ2Vudmlyb25tZW50JyBmb3IgJ3J1bl9hcycg
aW4gdGFyZ2V0ICVzICIKKyAgICAgICAgICAgICAgICAgICAgImluIGZpbGUgJXMgc2hvdWxkIGJl
IGEgZGljdGlvbmFyeS4iICUKKyAgICAgICAgICAgICAgICAgICAgKHRhcmdldF9uYW1lLCBidWls
ZF9maWxlKSkKKworCitkZWYgVHVybkludEludG9TdHJJbkRpY3QodGhlX2RpY3QpOgorICAiIiJH
aXZlbiBkaWN0IHRoZV9kaWN0LCByZWN1cnNpdmVseSBjb252ZXJ0cyBhbGwgaW50ZWdlcnMgaW50
byBzdHJpbmdzLgorICAiIiIKKyAgIyBVc2UgaXRlbXMgaW5zdGVhZCBvZiBpdGVyaXRlbXMgYmVj
YXVzZSB0aGVyZSdzIG5vIG5lZWQgdG8gdHJ5IHRvIGxvb2sgYXQKKyAgIyByZWluc2VydGVkIGtl
eXMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgdmFsdWVzLgorICBmb3IgaywgdiBpbiB0aGVfZGljdC5p
dGVtcygpOgorICAgIGlmIGlzaW5zdGFuY2UodiwgaW50KToKKyAgICAgIHYgPSBzdHIodikKKyAg
ICAgIHRoZV9kaWN0W2tdID0gdgorICAgIGVsaWYgaXNpbnN0YW5jZSh2LCBkaWN0KToKKyAgICAg
IFR1cm5JbnRJbnRvU3RySW5EaWN0KHYpCisgICAgZWxpZiBpc2luc3RhbmNlKHYsIGxpc3QpOgor
ICAgICAgVHVybkludEludG9TdHJJbkxpc3QodikKKworICAgIGlmIGlzaW5zdGFuY2UoaywgaW50
KToKKyAgICAgIHRoZV9kaWN0W3N0cihrKV0gPSB2CisgICAgICBkZWwgdGhlX2RpY3Rba10KKwor
CitkZWYgVHVybkludEludG9TdHJJbkxpc3QodGhlX2xpc3QpOgorICAiIiJHaXZlbiBsaXN0IHRo
ZV9saXN0LCByZWN1cnNpdmVseSBjb252ZXJ0cyBhbGwgaW50ZWdlcnMgaW50byBzdHJpbmdzLgor
ICAiIiIKKyAgZm9yIGluZGV4IGluIHhyYW5nZSgwLCBsZW4odGhlX2xpc3QpKToKKyAgICBpdGVt
ID0gdGhlX2xpc3RbaW5kZXhdCisgICAgaWYgaXNpbnN0YW5jZShpdGVtLCBpbnQpOgorICAgICAg
dGhlX2xpc3RbaW5kZXhdID0gc3RyKGl0ZW0pCisgICAgZWxpZiBpc2luc3RhbmNlKGl0ZW0sIGRp
Y3QpOgorICAgICAgVHVybkludEludG9TdHJJbkRpY3QoaXRlbSkKKyAgICBlbGlmIGlzaW5zdGFu
Y2UoaXRlbSwgbGlzdCk6CisgICAgICBUdXJuSW50SW50b1N0ckluTGlzdChpdGVtKQorCisKK2Rl
ZiBWZXJpZnlOb0NvbGxpZGluZ1RhcmdldHModGFyZ2V0cyk6CisgICIiIlZlcmlmeSB0aGF0IG5v
IHR3byB0YXJnZXRzIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBzaGFyZSB0aGUgc2FtZSBuYW1lLgor
CisgIEFyZ3VtZW50czoKKyAgICB0YXJnZXRzOiBBIGxpc3Qgb2YgdGFyZ2V0cyBpbiB0aGUgZm9y
bSAncGF0aC90by9maWxlLmd5cDp0YXJnZXRfbmFtZScuCisgICIiIgorICAjIEtlZXAgYSBkaWN0
IGdvaW5nIGZyb20gJ3N1YmRpcmVjdG9yeTp0YXJnZXRfbmFtZScgdG8gJ2Zvby5neXAnLgorICB1
c2VkID0ge30KKyAgZm9yIHRhcmdldCBpbiB0YXJnZXRzOgorICAgICMgU2VwYXJhdGUgb3V0ICdw
YXRoL3RvL2ZpbGUuZ3lwLCAndGFyZ2V0X25hbWUnIGZyb20KKyAgICAjICdwYXRoL3RvL2ZpbGUu
Z3lwOnRhcmdldF9uYW1lJy4KKyAgICBwYXRoLCBuYW1lID0gdGFyZ2V0LnNwbGl0KCc6JykKKyAg
ICAjIFNlcGFyYXRlIG91dCAncGF0aC90bycsICdmaWxlLmd5cCcgZnJvbSAncGF0aC90by9maWxl
Lmd5cCcuCisgICAgc3ViZGlyLCBneXAgPSBvcy5wYXRoLnNwbGl0KHBhdGgpCisgICAgIyBVc2Ug
Jy4nIGZvciB0aGUgY3VycmVudCBkaXJlY3RvcnkgJycsIHNvIHRoYXQgdGhlIGVycm9yIG1lc3Nh
Z2VzIG1ha2UKKyAgICAjIG1vcmUgc2Vuc2UuCisgICAgaWYgbm90IHN1YmRpcjoKKyAgICAgIHN1
YmRpciA9ICcuJworICAgICMgUHJlcGFyZSBhIGtleSBsaWtlICdwYXRoL3RvOnRhcmdldF9uYW1l
Jy4KKyAgICBrZXkgPSBzdWJkaXIgKyAnOicgKyBuYW1lCisgICAgaWYga2V5IGluIHVzZWQ6Cisg
ICAgICAjIENvbXBsYWluIGlmIHRoaXMgdGFyZ2V0IGlzIGFscmVhZHkgdXNlZC4KKyAgICAgIHJh
aXNlIEV4Y2VwdGlvbignRHVwbGljYXRlIHRhcmdldCBuYW1lICIlcyIgaW4gZGlyZWN0b3J5ICIl
cyIgdXNlZCBib3RoICcKKyAgICAgICAgICAgICAgICAgICAgICAnaW4gIiVzIiBhbmQgIiVzIi4n
ICUgKG5hbWUsIHN1YmRpciwgZ3lwLCB1c2VkW2tleV0pKQorICAgIHVzZWRba2V5XSA9IGd5cAor
CisKK2RlZiBMb2FkKGJ1aWxkX2ZpbGVzLCB2YXJpYWJsZXMsIGluY2x1ZGVzLCBkZXB0aCwgZ2Vu
ZXJhdG9yX2lucHV0X2luZm8sIGNoZWNrLAorICAgICAgICAgY2lyY3VsYXJfY2hlY2spOgorICAj
IFNldCB1cCBwYXRoX3NlY3Rpb25zIGFuZCBub25fY29uZmlndXJhdGlvbl9rZXlzIHdpdGggdGhl
IGRlZmF1bHQgZGF0YSBwbHVzCisgICMgdGhlIGdlbmVyYXRvci1zcGVjaWZjIGRhdGEuCisgIGds
b2JhbCBwYXRoX3NlY3Rpb25zCisgIHBhdGhfc2VjdGlvbnMgPSBiYXNlX3BhdGhfc2VjdGlvbnNb
Ol0KKyAgcGF0aF9zZWN0aW9ucy5leHRlbmQoZ2VuZXJhdG9yX2lucHV0X2luZm9bJ3BhdGhfc2Vj
dGlvbnMnXSkKKworICBnbG9iYWwgbm9uX2NvbmZpZ3VyYXRpb25fa2V5cworICBub25fY29uZmln
dXJhdGlvbl9rZXlzID0gYmFzZV9ub25fY29uZmlndXJhdGlvbl9rZXlzWzpdCisgIG5vbl9jb25m
aWd1cmF0aW9uX2tleXMuZXh0ZW5kKGdlbmVyYXRvcl9pbnB1dF9pbmZvWydub25fY29uZmlndXJh
dGlvbl9rZXlzJ10pCisKKyAgIyBUT0RPKG1hcmspIGhhbmRsZSB2YXJpYW50cyBpZiB0aGUgZ2Vu
ZXJhdG9yIGRvZXNuJ3Qgd2FudCB0aGVtIGRpcmVjdGx5LgorICBnZW5lcmF0b3JfaGFuZGxlc192
YXJpYW50cyA9IFwKKyAgICAgIGdlbmVyYXRvcl9pbnB1dF9pbmZvWydnZW5lcmF0b3JfaGFuZGxl
c192YXJpYW50cyddCisKKyAgZ2xvYmFsIGFic29sdXRlX2J1aWxkX2ZpbGVfcGF0aHMKKyAgYWJz
b2x1dGVfYnVpbGRfZmlsZV9wYXRocyA9IFwKKyAgICAgIGdlbmVyYXRvcl9pbnB1dF9pbmZvWydn
ZW5lcmF0b3Jfd2FudHNfYWJzb2x1dGVfYnVpbGRfZmlsZV9wYXRocyddCisKKyAgZ2xvYmFsIG11
bHRpcGxlX3Rvb2xzZXRzCisgIG11bHRpcGxlX3Rvb2xzZXRzID0gZ2VuZXJhdG9yX2lucHV0X2lu
Zm9bCisgICAgICAnZ2VuZXJhdG9yX3N1cHBvcnRzX211bHRpcGxlX3Rvb2xzZXRzJ10KKworICAj
IEEgZ2VuZXJhdG9yIGNhbiBoYXZlIG90aGVyIGxpc3RzIChpbiBhZGRpdGlvbiB0byBzb3VyY2Vz
KSBiZSBwcm9jZXNzZWQKKyAgIyBmb3IgcnVsZXMuCisgIGV4dHJhX3NvdXJjZXNfZm9yX3J1bGVz
ID0gZ2VuZXJhdG9yX2lucHV0X2luZm9bJ2V4dHJhX3NvdXJjZXNfZm9yX3J1bGVzJ10KKworICAj
IExvYWQgYnVpbGQgZmlsZXMuICBUaGlzIGxvYWRzIGV2ZXJ5IHRhcmdldC1jb250YWluaW5nIGJ1
aWxkIGZpbGUgaW50bworICAjIHRoZSB8ZGF0YXwgZGljdGlvbmFyeSBzdWNoIHRoYXQgdGhlIGtl
eXMgdG8gfGRhdGF8IGFyZSBidWlsZCBmaWxlIG5hbWVzLAorICAjIGFuZCB0aGUgdmFsdWVzIGFy
ZSB0aGUgZW50aXJlIGJ1aWxkIGZpbGUgY29udGVudHMgYWZ0ZXIgImVhcmx5IiBvciAicHJlIgor
ICAjIHByb2Nlc3NpbmcgaGFzIGJlZW4gZG9uZSBhbmQgaW5jbHVkZXMgaGF2ZSBiZWVuIHJlc29s
dmVkLgorICAjIE5PVEU6IGRhdGEgY29udGFpbnMgYm90aCAidGFyZ2V0IiBmaWxlcyAoLmd5cCkg
YW5kICJpbmNsdWRlcyIgKC5neXBpKSwgYXMKKyAgIyB3ZWxsIGFzIG1ldGEtZGF0YSAoZS5nLiAn
aW5jbHVkZWRfZmlsZXMnIGtleSkuICd0YXJnZXRfYnVpbGRfZmlsZXMnIGtlZXBzCisgICMgdHJh
Y2sgb2YgdGhlIGtleXMgY29ycmVzcG9uZGluZyB0byAidGFyZ2V0IiBmaWxlcy4KKyAgZGF0YSA9
IHsndGFyZ2V0X2J1aWxkX2ZpbGVzJzogc2V0KCl9CisgIGF1eF9kYXRhID0ge30KKyAgZm9yIGJ1
aWxkX2ZpbGUgaW4gYnVpbGRfZmlsZXM6CisgICAgIyBOb3JtYWxpemUgcGF0aHMgZXZlcnl3aGVy
ZS4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgcGF0aHMgd2lsbCBiZQorICAgICMgdXNlZCBh
cyBrZXlzIHRvIHRoZSBkYXRhIGRpY3QgYW5kIGZvciByZWZlcmVuY2VzIGJldHdlZW4gaW5wdXQg
ZmlsZXMuCisgICAgYnVpbGRfZmlsZSA9IG9zLnBhdGgubm9ybXBhdGgoYnVpbGRfZmlsZSkKKyAg
ICB0cnk6CisgICAgICBMb2FkVGFyZ2V0QnVpbGRGaWxlKGJ1aWxkX2ZpbGUsIGRhdGEsIGF1eF9k
YXRhLCB2YXJpYWJsZXMsIGluY2x1ZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0
aCwgY2hlY2spCisgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAgICAgIGd5cC5jb21tb24uRXhj
ZXB0aW9uQXBwZW5kKGUsICd3aGlsZSB0cnlpbmcgdG8gbG9hZCAlcycgJSBidWlsZF9maWxlKQor
ICAgICAgcmFpc2UKKworICAjIEJ1aWxkIGEgZGljdCB0byBhY2Nlc3MgZWFjaCB0YXJnZXQncyBz
dWJkaWN0IGJ5IHF1YWxpZmllZCBuYW1lLgorICB0YXJnZXRzID0gQnVpbGRUYXJnZXRzRGljdChk
YXRhKQorCisgICMgRnVsbHkgcXVhbGlmeSBhbGwgZGVwZW5kZW5jeSBsaW5rcy4KKyAgUXVhbGlm
eURlcGVuZGVuY2llcyh0YXJnZXRzKQorCisgICMgRXhwYW5kIGRlcGVuZGVuY2llcyBzcGVjaWZp
ZWQgYXMgYnVpbGRfZmlsZToqLgorICBFeHBhbmRXaWxkY2FyZERlcGVuZGVuY2llcyh0YXJnZXRz
LCBkYXRhKQorCisgIGlmIGNpcmN1bGFyX2NoZWNrOgorICAgICMgTWFrZSBzdXJlIHRoYXQgYW55
IHRhcmdldHMgaW4gYS5neXAgZG9uJ3QgY29udGFpbiBkZXBlbmRlbmNpZXMgaW4gb3RoZXIKKyAg
ICAjIC5neXAgZmlsZXMgdGhhdCBmdXJ0aGVyIGRlcGVuZCBvbiBhLmd5cC4KKyAgICBWZXJpZnlO
b0dZUEZpbGVDaXJjdWxhckRlcGVuZGVuY2llcyh0YXJnZXRzKQorCisgIFtkZXBlbmRlbmN5X25v
ZGVzLCBmbGF0X2xpc3RdID0gQnVpbGREZXBlbmRlbmN5TGlzdCh0YXJnZXRzKQorCisgICMgQ2hl
Y2sgdGhhdCBubyB0d28gdGFyZ2V0cyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgaGF2ZSB0aGUgc2Ft
ZSBuYW1lLgorICBWZXJpZnlOb0NvbGxpZGluZ1RhcmdldHMoZmxhdF9saXN0KQorICAKKworICAj
IEhhbmRsZSBkZXBlbmRlbnQgc2V0dGluZ3Mgb2YgdmFyaW91cyB0eXBlcy4KKyAgZm9yIHNldHRp
bmdzX3R5cGUgaW4gWydhbGxfZGVwZW5kZW50X3NldHRpbmdzJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdsaW5rX3NldHRpbmdzJ106CisgICAgRG9EZXBlbmRlbnRTZXR0aW5ncyhzZXR0aW5nc190
eXBlLCBmbGF0X2xpc3QsIHRhcmdldHMsIGRlcGVuZGVuY3lfbm9kZXMpCisKKyAgICAjIFRha2Ug
b3V0IHRoZSBkZXBlbmRlbnQgc2V0dGluZ3Mgbm93IHRoYXQgdGhleSd2ZSBiZWVuIHB1Ymxpc2hl
ZCB0byBhbGwKKyAgICAjIG9mIHRoZSB0YXJnZXRzIHRoYXQgcmVxdWlyZSB0aGVtLgorICAgIGZv
ciB0YXJnZXQgaW4gZmxhdF9saXN0OgorICAgICAgaWYgc2V0dGluZ3NfdHlwZSBpbiB0YXJnZXRz
W3RhcmdldF06CisgICAgICAgIGRlbCB0YXJnZXRzW3RhcmdldF1bc2V0dGluZ3NfdHlwZV0KKwor
ICAjIE1ha2Ugc3VyZSBzdGF0aWMgbGlicmFyaWVzIGRvbid0IGRlY2xhcmUgZGVwZW5kZW5jaWVz
IG9uIG90aGVyIHN0YXRpYworICAjIGxpYnJhcmllcywgYnV0IHRoYXQgbGlua2FibGVzIGRlcGVu
ZCBvbiBhbGwgdW5saW5rZWQgc3RhdGljIGxpYnJhcmllcworICAjIHRoYXQgdGhleSBuZWVkIHNv
IHRoYXQgdGhlaXIgbGluayBzdGVwcyB3aWxsIGJlIGNvcnJlY3QuCisgIEFkanVzdFN0YXRpY0xp
YnJhcnlEZXBlbmRlbmNpZXMoZmxhdF9saXN0LCB0YXJnZXRzLCBkZXBlbmRlbmN5X25vZGVzKQor
CisgICMgQXBwbHkgInBvc3QiLyJsYXRlIi8idGFyZ2V0IiB2YXJpYWJsZSBleHBhbnNpb25zIGFu
ZCBjb25kaXRpb24gZXZhbHVhdGlvbnMuCisgIGZvciB0YXJnZXQgaW4gZmxhdF9saXN0OgorICAg
IHRhcmdldF9kaWN0ID0gdGFyZ2V0c1t0YXJnZXRdCisgICAgYnVpbGRfZmlsZSA9IGd5cC5jb21t
b24uQnVpbGRGaWxlKHRhcmdldCkKKyAgICBQcm9jZXNzVmFyaWFibGVzQW5kQ29uZGl0aW9uc0lu
RGljdCh0YXJnZXRfZGljdCwgVHJ1ZSwgdmFyaWFibGVzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkX2ZpbGUpCisKKyAgIyBNb3ZlIGV2ZXJ5dGhpbmcgdGhh
dCBjYW4gZ28gaW50byBhICJjb25maWd1cmF0aW9ucyIgc2VjdGlvbiBpbnRvIG9uZS4KKyAgZm9y
IHRhcmdldCBpbiBmbGF0X2xpc3Q6CisgICAgdGFyZ2V0X2RpY3QgPSB0YXJnZXRzW3RhcmdldF0K
KyAgICBTZXRVcENvbmZpZ3VyYXRpb25zKHRhcmdldCwgdGFyZ2V0X2RpY3QpCisKKyAgIyBBcHBs
eSBleGNsdWRlICghKSBhbmQgcmVnZXggKC8pIGxpc3QgZmlsdGVycy4KKyAgZm9yIHRhcmdldCBp
biBmbGF0X2xpc3Q6CisgICAgdGFyZ2V0X2RpY3QgPSB0YXJnZXRzW3RhcmdldF0KKyAgICBQcm9j
ZXNzTGlzdEZpbHRlcnNJbkRpY3QodGFyZ2V0LCB0YXJnZXRfZGljdCkKKworICAjIE1ha2Ugc3Vy
ZSB0aGF0IHRoZSBydWxlcyBtYWtlIHNlbnNlLCBhbmQgYnVpbGQgdXAgcnVsZV9zb3VyY2VzIGxp
c3RzIGFzCisgICMgbmVlZGVkLiAgTm90IGFsbCBnZW5lcmF0b3JzIHdpbGwgbmVlZCB0byB1c2Ug
dGhlIHJ1bGVfc291cmNlcyBsaXN0cywgYnV0CisgICMgc29tZSBtYXksIGFuZCBpdCBzZWVtcyBi
ZXN0IHRvIGJ1aWxkIHRoZSBsaXN0IGluIGEgY29tbW9uIHNwb3QuCisgICMgQWxzbyB2YWxpZGF0
ZSBhY3Rpb25zIGFuZCBydW5fYXMgZWxlbWVudHMgaW4gdGFyZ2V0cy4KKyAgZm9yIHRhcmdldCBp
biBmbGF0X2xpc3Q6CisgICAgdGFyZ2V0X2RpY3QgPSB0YXJnZXRzW3RhcmdldF0KKyAgICBidWls
ZF9maWxlID0gZ3lwLmNvbW1vbi5CdWlsZEZpbGUodGFyZ2V0KQorICAgIFZhbGlkYXRlUnVsZXNJ
blRhcmdldCh0YXJnZXQsIHRhcmdldF9kaWN0LCBleHRyYV9zb3VyY2VzX2Zvcl9ydWxlcykKKyAg
ICBWYWxpZGF0ZVJ1bkFzSW5UYXJnZXQodGFyZ2V0LCB0YXJnZXRfZGljdCwgYnVpbGRfZmlsZSkK
KyAgICBWYWxpZGF0ZUFjdGlvbnNJblRhcmdldCh0YXJnZXQsIHRhcmdldF9kaWN0LCBidWlsZF9m
aWxlKQorCisgICMgR2VuZXJhdG9ycyBtaWdodCBub3QgZXhwZWN0IGludHMuICBUdXJuIHRoZW0g
aW50byBzdHJzLgorICBUdXJuSW50SW50b1N0ckluRGljdChkYXRhKQorCisgICMgVE9ETyhtYXJr
KTogUmV0dXJuIHxkYXRhfCBmb3Igbm93IGJlY2F1c2UgdGhlIGdlbmVyYXRvciBuZWVkcyBhIGxp
c3Qgb2YKKyAgIyBidWlsZCBmaWxlcyB0aGF0IGNhbWUgaW4uICBJbiB0aGUgZnV0dXJlLCBtYXli
ZSBpdCBzaG91bGQganVzdCBhY2NlcHQKKyAgIyBhIGxpc3QsIGFuZCBub3QgdGhlIHdob2xlIGRh
dGEgZGljdC4KKyAgcmV0dXJuIFtmbGF0X2xpc3QsIHRhcmdldHMsIGRhdGFdCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIvZ3lwL3N5c3RlbV90ZXN0LnB5IGIvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9zeXN0ZW1fdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWEy
ZDkzZGM4MTQzNzMwYzlmZDYyOTNkYjNmOTE0NTU1NDdlODZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC9zeXN0ZW1fdGVzdC5weQpAQCAtMCwwICsx
LDcwIEBACisjIS91c3IvYmluL3B5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKK2ltcG9ydCBvcworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgc2h1
dGlsCitpbXBvcnQgc3VicHJvY2VzcworCitkZWYgVGVzdENvbW1hbmRzKGNvbW1hbmRzLCBmaWxl
cz17fSwgZW52PXt9KToKKyAgIiIiUnVuIGNvbW1hbmRzIGluIGEgdGVtcG9yYXJ5IGRpcmVjdG9y
eSwgcmV0dXJuaW5nIHRydWUgaWYgdGhleSBhbGwgc3VjY2VlZC4KKyAgUmV0dXJuIGZhbHNlIG9u
IGZhaWx1cmVzIG9yIGlmIGFueSBjb21tYW5kcyBwcm9kdWNlIG91dHB1dC4KKworICBBcmd1bWVu
dHM6CisgICAgY29tbWFuZHM6IGFuIGFycmF5IG9mIHNoZWxsLWludGVycHJldGFibGUgY29tbWFu
ZHMsIGUuZy4gWydscyAtbCcsICdwd2QnXQorICAgICAgICAgICAgICBlYWNoIHdpbGwgYmUgZXhw
YW5kZWQgd2l0aCBQeXRob24gJS1leHBhbnNpb24gdXNpbmcgZW52IGZpcnN0LgorICAgIGZpbGVz
OiBhIGRpY3Rpb25hcnkgbWFwcGluZyBmaWxlbmFtZSB0byBjb250ZW50czsKKyAgICAgICAgICAg
ZmlsZXMgd2lsbCBiZSBjcmVhdGVkIGluIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGJlZm9yZSBy
dW5uaW5nCisgICAgICAgICAgIHRoZSBjb21tYW5kLgorICAgIGVudjogYSBkaWN0aW9uYXJ5IG9m
IHN0cmluZ3MgdG8gZXhwYW5kIGNvbW1hbmRzIHdpdGguCisgICIiIgorICB0ZW1wZGlyID0gdGVt
cGZpbGUubWtkdGVtcCgpCisgIHRyeToKKyAgICBmb3IgbmFtZSwgY29udGVudHMgaW4gZmlsZXMu
aXRlbXMoKToKKyAgICAgIGYgPSBvcGVuKG9zLnBhdGguam9pbih0ZW1wZGlyLCBuYW1lKSwgJ3di
JykKKyAgICAgIGYud3JpdGUoY29udGVudHMpCisgICAgICBmLmNsb3NlKCkKKyAgICBmb3IgY29t
bWFuZCBpbiBjb21tYW5kczoKKyAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQg
JSBlbnYsIHNoZWxsPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9
c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1
YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXRlbXBk
aXIpCisgICAgICBvdXRwdXQgPSBwcm9jLmNvbW11bmljYXRlKClbMF0KKyAgICAgIGlmIHByb2Mu
cmV0dXJuY29kZSAhPSAwIG9yIG91dHB1dDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0
dXJuIFRydWUKKyAgZmluYWxseToKKyAgICBzaHV0aWwucm10cmVlKHRlbXBkaXIpCisgIHJldHVy
biBGYWxzZQorCisKK2RlZiBUZXN0QXJTdXBwb3J0c1QoYXJfY29tbWFuZD0nYXInLCBjY19jb21t
YW5kPSdjYycpOgorICAiIiJUZXN0IHdoZXRoZXIgJ2FyJyBzdXBwb3J0cyB0aGUgJ1QnIGZsYWcu
IiIiCisgIHJldHVybiBUZXN0Q29tbWFuZHMoWyclKGNjKXMgLWMgdGVzdC5jJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgJyUoYXIpcyBjcnNUIHRlc3QuYSB0ZXN0Lm8nLAorICAgICAgICAgICAg
ICAgICAgICAgICAnJShjYylzIHRlc3QuYSddLAorICAgICAgICAgICAgICAgICAgICAgIGZpbGVz
PXsndGVzdC5jJzogJ2ludCBtYWluKCl7fSd9LAorICAgICAgICAgICAgICAgICAgICAgIGVudj17
J2FyJzogYXJfY29tbWFuZCwgJ2NjJzogY2NfY29tbWFuZH0pCisKKworZGVmIFRlc3RMaW5rZXJT
dXBwb3J0c1RocmVhZHMoY2NfY29tbWFuZD0nY2MnKToKKyAgIiIiVGVzdCB3aGV0aGVyIHRoZSBs
aW5rZXIgc3VwcG9ydHMgdGhlIC0tdGhyZWFkcyBmbGFnLiIiIgorICByZXR1cm4gVGVzdENvbW1h
bmRzKFsnJShjYylzIC1XbCwtLXRocmVhZHMgdGVzdC5jJ10sCisgICAgICAgICAgICAgICAgICAg
ICAgZmlsZXM9eyd0ZXN0LmMnOiAnaW50IG1haW4oKXt9J30sCisgICAgICAgICAgICAgICAgICAg
ICAgZW52PXsnY2MnOiBjY19jb21tYW5kfSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgorICAjIFJ1biB0aGUgdmFyaW91cyB0ZXN0IGZ1bmN0aW9ucyBhbmQgcHJpbnQgdGhlIHJlc3Vs
dHMuCisgIGRlZiBSdW5UZXN0KGRlc2NyaXB0aW9uLCBmdW5jdGlvbiwgKiprd2FyZ3MpOgorICAg
IHByaW50ICJUZXN0aW5nICIgKyBkZXNjcmlwdGlvbiArICc6JywKKyAgICBpZiBmdW5jdGlvbigq
Kmt3YXJncyk6CisgICAgICBwcmludCAnb2snCisgICAgZWxzZToKKyAgICAgIHByaW50ICdmYWls
JworICBSdW5UZXN0KCJhciAnVCcgZmxhZyIsIFRlc3RBclN1cHBvcnRzVCkKKyAgUnVuVGVzdCgi
YXIgJ1QnIGZsYWcgd2l0aCBjY2FjaGUiLCBUZXN0QXJTdXBwb3J0c1QsIGNjX2NvbW1hbmQ9J2Nj
YWNoZSBjYycpCisgIFJ1blRlc3QoImxkIC0tdGhyZWFkcyIsIFRlc3RMaW5rZXJTdXBwb3J0c1Ro
cmVhZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHlsaWIvZ3lwL3hjb2Rl
cHJval9maWxlLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC94Y29kZXByb2pf
ZmlsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mY2Y5YWJmZTQ3M2Y0OTk0YWIxNGQ3YjQyMGM2YjNiMGFlMDc4
OGI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3B5bGliL2d5cC94
Y29kZXByb2pfZmlsZS5weQpAQCAtMCwwICsxLDI4NDAgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisK
KyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiWGNvZGUg
cHJvamVjdCBmaWxlIGdlbmVyYXRvci4KKworVGhpcyBtb2R1bGUgaXMgYm90aCBhbiBYY29kZSBw
cm9qZWN0IGZpbGUgZ2VuZXJhdG9yIGFuZCBhIGRvY3VtZW50YXRpb24gb2YgdGhlCitYY29kZSBw
cm9qZWN0IGZpbGUgZm9ybWF0LiAgS25vd2xlZGdlIG9mIHRoZSBwcm9qZWN0IGZpbGUgZm9ybWF0
IHdhcyBnYWluZWQKK2Jhc2VkIG9uIGV4dGVuc2l2ZSBleHBlcmllbmNlIHdpdGggWGNvZGUsIGFu
ZCBieSBtYWtpbmcgY2hhbmdlcyB0byBwcm9qZWN0cyBpbgorWGNvZGUuYXBwIGFuZCBvYnNlcnZp
bmcgdGhlIHJlc3VsdGFudCBjaGFuZ2VzIGluIHRoZSBhc3NvY2lhdGVkIHByb2plY3QgZmlsZXMu
CisKK1hDT0RFIFBST0pFQ1QgRklMRVMKKworVGhlIGdlbmVyYXRvciB0YXJnZXRzIHRoZSBmaWxl
IGZvcm1hdCBhcyB3cml0dGVuIGJ5IFhjb2RlIDMuMSAoc3BlY2lmaWNhbGx5LAorMy4xLjIpLCBi
dXQgcGFzdCBleHBlcmllbmNlIGhhcyB0YXVnaHQgdGhhdCB0aGUgZm9ybWF0IGhhcyBub3QgY2hh
bmdlZAorc2lnbmlmaWNhbnRseSBpbiB0aGUgcGFzdCBzZXZlcmFsIHllYXJzLCBhbmQgZnV0dXJl
IHZlcnNpb25zIG9mIFhjb2RlIGFyZSBhYmxlCit0byByZWFkIG9sZGVyIHByb2plY3QgZmlsZXMu
CisKK1hjb2RlIHByb2plY3QgZmlsZXMgYXJlICJidW5kbGVkIjogdGhlIHByb2plY3QgImZpbGUi
IGZyb20gYW4gZW5kLXVzZXIncworcGVyc3BlY3RpdmUgaXMgYWN0dWFsbHkgYSBkaXJlY3Rvcnkg
d2l0aCBhbiAiLnhjb2RlcHJvaiIgZXh0ZW5zaW9uLiAgVGhlCitwcm9qZWN0IGZpbGUgZnJvbSB0
aGlzIG1vZHVsZSdzIHBlcnNwZWN0aXZlIGlzIGFjdHVhbGx5IGEgZmlsZSBpbnNpZGUgdGhpcwor
ZGlyZWN0b3J5LCBhbHdheXMgbmFtZWQgInByb2plY3QucGJ4cHJvaiIuICBUaGlzIGZpbGUgY29u
dGFpbnMgYSBjb21wbGV0ZQorZGVzY3JpcHRpb24gb2YgdGhlIHByb2plY3QgYW5kIGlzIGFsbCB0
aGF0IGlzIG5lZWRlZCB0byB1c2UgdGhlIHhjb2RlcHJvai4KK090aGVyIGZpbGVzIGNvbnRhaW5l
ZCBpbiB0aGUgeGNvZGVwcm9qIGRpcmVjdG9yeSBhcmUgc2ltcGx5IHVzZWQgdG8gc3RvcmUKK3Bl
ci11c2VyIHNldHRpbmdzLCBzdWNoIGFzIHRoZSBzdGF0ZSBvZiB2YXJpb3VzIFVJIGVsZW1lbnRz
IGluIHRoZSBYY29kZQorYXBwbGljYXRpb24uCisKK1RoZSBwcm9qZWN0LnBieHByb2ogZmlsZSBp
cyBhIHByb3BlcnR5IGxpc3QsIHN0b3JlZCBpbiBhIGZvcm1hdCBhbG1vc3QKK2lkZW50aWNhbCB0
byB0aGUgTmVYVHN0ZXAgcHJvcGVydHkgbGlzdCBmb3JtYXQuICBUaGUgZmlsZSBpcyBhYmxlIHRv
IGNhcnJ5CitVbmljb2RlIGRhdGEsIGFuZCBpcyBlbmNvZGVkIGluIFVURi04LiAgVGhlIHJvb3Qg
ZWxlbWVudCBpbiB0aGUgcHJvcGVydHkgbGlzdAoraXMgYSBkaWN0aW9uYXJ5IHRoYXQgY29udGFp
bnMgc2V2ZXJhbCBwcm9wZXJ0aWVzIG9mIG1pbmltYWwgaW50ZXJlc3QsIGFuZCB0d28KK3Byb3Bl
cnRpZXMgb2YgaW1tZW5zZSBpbnRlcmVzdC4gIFRoZSBtb3N0IGltcG9ydGFudCBwcm9wZXJ0eSBp
cyBhIGRpY3Rpb25hcnkKK25hbWVkICJvYmplY3RzIi4gIFRoZSBlbnRpcmUgc3RydWN0dXJlIG9m
IHRoZSBwcm9qZWN0IGlzIHJlcHJlc2VudGVkIGJ5IHRoZQorY2hpbGRyZW4gb2YgdGhpcyBwcm9w
ZXJ0eS4gIFRoZSBvYmplY3RzIGRpY3Rpb25hcnkgaXMga2V5ZWQgYnkgdW5pcXVlIDk2LWJpdAor
dmFsdWVzIHJlcHJlc2VudGVkIGJ5IDI0IHVwcGVyY2FzZSBoZXhhZGVjaW1hbCBjaGFyYWN0ZXJz
LiAgRWFjaCB2YWx1ZSBpbiB0aGUKK29iamVjdHMgZGljdGlvbmFyeSBpcyBpdHNlbGYgYSBkaWN0
aW9uYXJ5LCBkZXNjcmliaW5nIGFuIGluZGl2aWR1YWwgb2JqZWN0LgorCitFYWNoIG9iamVjdCBp
biB0aGUgZGljdGlvbmFyeSBpcyBhIG1lbWJlciBvZiBhIGNsYXNzLCB3aGljaCBpcyBpZGVudGlm
aWVkIGJ5Cit0aGUgImlzYSIgcHJvcGVydHkgb2YgZWFjaCBvYmplY3QuICBBIHZhcmlldHkgb2Yg
Y2xhc3NlcyBhcmUgcmVwcmVzZW50ZWQgaW4gYQorcHJvamVjdCBmaWxlLiAgT2JqZWN0cyBjYW4g
cmVmZXIgdG8gb3RoZXIgb2JqZWN0cyBieSBJRCwgdXNpbmcgdGhlIDI0LWNoYXJhY3RlcgoraGV4
YWRlY2ltYWwgb2JqZWN0IGtleS4gIEEgcHJvamVjdCdzIG9iamVjdHMgZm9ybSBhIHRyZWUsIHdp
dGggYSByb290IG9iamVjdAorb2YgY2xhc3MgUEJYUHJvamVjdCBhdCB0aGUgcm9vdC4gIEFzIGFu
IGV4YW1wbGUsIHRoZSBQQlhQcm9qZWN0IG9iamVjdCBzZXJ2ZXMKK2FzIHBhcmVudCB0byBhbiBY
Q0NvbmZpZ3VyYXRpb25MaXN0IG9iamVjdCBkZWZpbmluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlv
bnMKK3VzZWQgaW4gdGhlIHByb2plY3QsIGEgUEJYR3JvdXAgb2JqZWN0IHNlcnZpbmcgYXMgYSBj
b250YWluZXIgZm9yIGFsbCBmaWxlcworcmVmZXJlbmNlZCBpbiB0aGUgcHJvamVjdCwgYW5kIGEg
bGlzdCBvZiB0YXJnZXQgb2JqZWN0cywgZWFjaCBvZiB3aGljaCBkZWZpbmVzCithIHRhcmdldCBp
biB0aGUgcHJvamVjdC4gIFRoZXJlIGFyZSBzZXZlcmFsIGRpZmZlcmVudCB0eXBlcyBvZiB0YXJn
ZXQgb2JqZWN0LAorc3VjaCBhcyBQQlhOYXRpdmVUYXJnZXQgYW5kIFBCWEFnZ3JlZ2F0ZVRhcmdl
dC4gIEluIHRoaXMgbW9kdWxlLCB0aGlzCityZWxhdGlvbnNoaXAgaXMgZXhwcmVzc2VkIGJ5IGhh
dmluZyBlYWNoIHRhcmdldCB0eXBlIGRlcml2ZSBmcm9tIGFuIGFic3RyYWN0CitiYXNlIG5hbWVk
IFhDVGFyZ2V0LgorCitUaGUgcHJvamVjdC5wYnhwcm9qIGZpbGUncyByb290IGRpY3Rpb25hcnkg
YWxzbyBjb250YWlucyBhIHByb3BlcnR5LCBzaWJsaW5nIHRvCit0aGUgIm9iamVjdHMiIGRpY3Rp
b25hcnksIG5hbWVkICJyb290T2JqZWN0Ii4gIFRoZSB2YWx1ZSBvZiByb290T2JqZWN0IGlzIGEK
KzI0LWNoYXJhY3RlciBvYmplY3Qga2V5IHJlZmVycmluZyB0byB0aGUgcm9vdCBQQlhQcm9qZWN0
IG9iamVjdCBpbiB0aGUKK29iamVjdHMgZGljdGlvbmFyeS4KKworSW4gWGNvZGUsIGV2ZXJ5IGZp
bGUgdXNlZCBhcyBpbnB1dCB0byBhIHRhcmdldCBvciBwcm9kdWNlZCBhcyBhIGZpbmFsIHByb2R1
Y3QKK29mIGEgdGFyZ2V0IG11c3QgYXBwZWFyIHNvbWV3aGVyZSBpbiB0aGUgaGllcmFyY2h5IHJv
b3RlZCBhdCB0aGUgUEJYR3JvdXAKK29iamVjdCByZWZlcmVuY2VkIGJ5IHRoZSBQQlhQcm9qZWN0
J3MgbWFpbkdyb3VwIHByb3BlcnR5LiAgQSBQQlhHcm91cCBpcworZ2VuZXJhbGx5IHJlcHJlc2Vu
dGVkIGFzIGEgZm9sZGVyIGluIHRoZSBYY29kZSBhcHBsaWNhdGlvbi4gIFBCWEdyb3VwcyBjYW4K
K2NvbnRhaW4gb3RoZXIgUEJYR3JvdXBzIGFzIHdlbGwgYXMgUEJYRmlsZVJlZmVyZW5jZXMsIHdo
aWNoIGFyZSBwb2ludGVycyB0bworYWN0dWFsIGZpbGVzLgorCitFYWNoIFhDVGFyZ2V0IGNvbnRh
aW5zIGEgbGlzdCBvZiBidWlsZCBwaGFzZXMsIHJlcHJlc2VudGVkIGluIHRoaXMgbW9kdWxlIGJ5
Cit0aGUgYWJzdHJhY3QgYmFzZSBYQ0J1aWxkUGhhc2UuICBFeGFtcGxlcyBvZiBjb25jcmV0ZSBY
Q0J1aWxkUGhhc2UgZGVyaXZhdGlvbnMKK2FyZSBQQlhTb3VyY2VzQnVpbGRQaGFzZSBhbmQgUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2UsIHdoaWNoIGNvcnJlc3BvbmQgdG8gdGhlCisiQ29tcGlsZSBT
b3VyY2VzIiBhbmQgIkxpbmsgQmluYXJ5IFdpdGggTGlicmFyaWVzIiBwaGFzZXMgZGlzcGxheWVk
IGluIHRoZQorWGNvZGUgYXBwbGljYXRpb24uICBGaWxlcyB1c2VkIGFzIGlucHV0IHRvIHRoZXNl
IHBoYXNlcyAoZm9yIGV4YW1wbGUsIHNvdXJjZQorZmlsZXMgaW4gdGhlIGZvcm1lciBjYXNlIGFu
ZCBsaWJyYXJpZXMgYW5kIGZyYW1ld29ya3MgaW4gdGhlIGxhdHRlcikgYXJlCityZXByZXNlbnRl
ZCBieSBQQlhCdWlsZEZpbGUgb2JqZWN0cywgcmVmZXJlbmNlZCBieSBlbGVtZW50cyBvZiAiZmls
ZXMiIGxpc3RzCitpbiBYQ1RhcmdldCBvYmplY3RzLiAgRWFjaCBQQlhCdWlsZEZpbGUgb2JqZWN0
IHJlZmVycyB0byBhIFBCWEJ1aWxkRmlsZQorb2JqZWN0IGFzIGEgIndlYWsiIHJlZmVyZW5jZTog
aXQgZG9lcyBub3QgIm93biIgdGhlIFBCWEJ1aWxkRmlsZSwgd2hpY2ggaXMKK293bmVkIGJ5IHRo
ZSByb290IG9iamVjdCdzIG1haW5Hcm91cCBvciBhIGRlc2NlbmRhbnQgZ3JvdXAuICBJbiBtb3N0
IGNhc2VzLCB0aGUKK2xheWVyIG9mIGluZGlyZWN0aW9uIGJldHdlZW4gYW4gWENCdWlsZFBoYXNl
IGFuZCBhIFBCWEZpbGVSZWZlcmVuY2UgdmlhIGEKK1BCWEJ1aWxkRmlsZSBhcHBlYXJzIGV4dHJh
bmVvdXMsIGJ1dCB0aGVyZSdzIGFjdHVhbGx5IG9uZSByZWFzb24gZm9yIHRoaXM6CitmaWxlLXNw
ZWNpZmljIGNvbXBpbGVyIGZsYWdzIGFyZSBhZGRlZCB0byB0aGUgUEJYQnVpbGRGaWxlIG9iamVj
dCBzbyBhcyB0bworYWxsb3cgYSBzaW5nbGUgZmlsZSB0byBiZSBhIG1lbWJlciBvZiBtdWx0aXBs
ZSB0YXJnZXRzIHdoaWxlIGhhdmluZyBkaXN0aW5jdAorY29tcGlsZXIgZmxhZ3MgZm9yIGVhY2gu
ICBUaGVzZSBmbGFncyBjYW4gYmUgbW9kaWZpZWQgaW4gdGhlIFhjb2RlIGFwcGxjaWF0aW9uCitp
biB0aGUgIkJ1aWxkIiB0YWIgb2YgYSBGaWxlIEluZm8gd2luZG93LgorCitXaGVuIGEgcHJvamVj
dCBpcyBvcGVuIGluIHRoZSBYY29kZSBhcHBsaWNhdGlvbiwgWGNvZGUgd2lsbCByZXdyaXRlIGl0
LiAgQXMKK3N1Y2gsIHRoaXMgbW9kdWxlIGlzIGNhcmVmdWwgdG8gYWRoZXJlIHRvIHRoZSBmb3Jt
YXR0aW5nIHVzZWQgYnkgWGNvZGUsIHRvCithdm9pZCBpbnNpZ25pZmljYW50IGNoYW5nZXMgYXBw
ZWFyaW5nIGluIHRoZSBmaWxlIHdoZW4gaXQgaXMgdXNlZCBpbiB0aGUKK1hjb2RlIGFwcGxpY2F0
aW9uLiAgVGhpcyB3aWxsIGtlZXAgdmVyc2lvbiBjb250cm9sIHJlcG9zaXRvcmllcyBoYXBweSwg
YW5kCittYWtlcyBpdCBwb3NzaWJsZSB0byBjb21wYXJlIGEgcHJvamVjdCBmaWxlIHVzZWQgaW4g
WGNvZGUgdG8gb25lIGdlbmVyYXRlZCBieQordGhpcyBtb2R1bGUgdG8gZGV0ZXJtaW5lIGlmIGFu
eSBzaWduaWZpY2FudCBjaGFuZ2VzIHdlcmUgbWFkZSBpbiB0aGUKK2FwcGxpY2F0aW9uLgorCitY
Y29kZSBoYXMgaXRzIG93biB3YXkgb2YgYXNzaWduaW5nIDI0LWNoYXJhY3RlciBpZGVudGlmaWVy
cyB0byBlYWNoIG9iamVjdCwKK3doaWNoIGlzIG5vdCBkdXBsaWNhdGVkIGhlcmUuICBCZWNhdXNl
IHRoZSBpZGVudGlmaWVyIG9ubHkgaXMgb25seSBnZW5lcmF0ZWQKK29uY2UsIHdoZW4gYW4gb2Jq
ZWN0IGlzIGNyZWF0ZWQsIGFuZCBpcyB0aGVuIGxlZnQgdW5jaGFuZ2VkLCB0aGVyZSBpcyBubyBu
ZWVkCit0byBhdHRlbXB0IHRvIGR1cGxpY2F0ZSBYY29kZSdzIGJlaGF2aW9yIGluIHRoaXMgYXJl
YS4gIFRoZSBnZW5lcmF0b3IgaXMgZnJlZQordG8gc2VsZWN0IGFueSBpZGVudGlmaWVyLCBldmVu
IGF0IHJhbmRvbSwgdG8gcmVmZXIgdG8gdGhlIG9iamVjdHMgaXQgY3JlYXRlcywKK2FuZCBYY29k
ZSB3aWxsIHJldGFpbiB0aG9zZSBpZGVudGlmaWVycyBhbmQgdXNlIHRoZW0gd2hlbiBzdWJzZXF1
ZW50bHkKK3Jld3JpdGluZyB0aGUgcHJvamVjdCBmaWxlLiAgSG93ZXZlciwgdGhlIGdlbmVyYXRv
ciB3b3VsZCBjaG9vc2UgbmV3IHJhbmRvbQoraWRlbnRpZmllcnMgZWFjaCB0aW1lIHRoZSBwcm9q
ZWN0IGZpbGVzIGFyZSBnZW5lcmF0ZWQsIGxlYWRpbmcgdG8gZGlmZmljdWx0aWVzCitjb21wYXJp
bmcgInVzZWQiIHByb2plY3QgZmlsZXMgdG8gInByaXN0aW5lIiBvbmVzIHByb2R1Y2VkIGJ5IHRo
aXMgbW9kdWxlLAorYW5kIGNhdXNpbmcgdGhlIGFwcGVhcmFuY2Ugb2YgY2hhbmdlcyBhcyBldmVy
eSBvYmplY3QgaWRlbnRpZmllciBpcyBjaGFuZ2VkCit3aGVuIHVwZGF0ZWQgcHJvamVjdHMgYXJl
IGNoZWNrZWQgaW4gdG8gYSB2ZXJzaW9uIGNvbnRyb2wgcmVwb3NpdG9yeS4gIFRvCittaXRpZ2F0
ZSB0aGlzIHByb2JsZW0sIHRoaXMgbW9kdWxlIGNob29zZXMgaWRlbnRpZmllcnMgaW4gYSBtb3Jl
IGRldGVybWluaXN0aWMKK3dheSwgYnkgaGFzaGluZyBhIGRlc2NyaXB0aW9uIG9mIGVhY2ggb2Jq
ZWN0IGFzIHdlbGwgYXMgaXRzIHBhcmVudCBhbmQgYW5jZXN0b3IKK29iamVjdHMuICBUaGlzIHN0
cmF0ZWd5IHNob3VsZCByZXN1bHQgaW4gbWluaW1hbCAic2hpZnQiIGluIElEcyBhcyBzdWNjZXNz
aXZlCitnZW5lcmF0aW9ucyBvZiBwcm9qZWN0IGZpbGVzIGFyZSBwcm9kdWNlZC4KKworVEhJUyBN
T0RVTEUKKworVGhpcyBtb2R1bGUgaW50cm9kdWNlcyBzZXZlcmFsIGNsYXNzZXMsIGFsbCBkZXJp
dmVkIGZyb20gdGhlIFhDT2JqZWN0IGNsYXNzLgorTmVhcmx5IGFsbCBvZiB0aGUgImJyYWlucyIg
YXJlIGJ1aWx0IGludG8gdGhlIFhDT2JqZWN0IGNsYXNzLCB3aGljaCB1bmRlcnN0YW5kcworaG93
IHRvIGNyZWF0ZSBhbmQgbW9kaWZ5IG9iamVjdHMsIG1haW50YWluIHRoZSBwcm9wZXIgdHJlZSBz
dHJ1Y3R1cmUsIGNvbXB1dGUKK2lkZW50aWZpZXJzLCBhbmQgcHJpbnQgb2JqZWN0cy4gIEZvciB0
aGUgbW9zdCBwYXJ0LCBjbGFzc2VzIGRlcml2ZWQgZnJvbQorWENPYmplY3QgbmVlZCBvbmx5IHBy
b3ZpZGUgYSBfc2NoZW1hIGNsYXNzIG9iamVjdCwgYSBkaWN0aW9uYXJ5IHRoYXQKK2V4cHJlc3Nl
cyB3aGF0IHByb3BlcnRpZXMgb2JqZWN0cyBvZiB0aGUgY2xhc3MgbWF5IGNvbnRhaW4uCisKK0dp
dmVuIHRoaXMgc3RydWN0dXJlLCBpdCdzIHBvc3NpYmxlIHRvIGJ1aWxkIGEgbWluaW1hbCBwcm9q
ZWN0IGZpbGUgYnkgY3JlYXRpbmcKK29iamVjdHMgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGVzIGFu
ZCBtYWtpbmcgdGhlIHByb3BlciBjb25uZWN0aW9uczoKKworICBjb25maWdfbGlzdCA9IFhDQ29u
ZmlndXJhdGlvbkxpc3QoKQorICBncm91cCA9IFBCWEdyb3VwKCkKKyAgcHJvamVjdCA9IFBCWFBy
b2plY3QoeydidWlsZENvbmZpZ3VyYXRpb25MaXN0JzogY29uZmlnX2xpc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAnbWFpbkdyb3VwJzogZ3JvdXB9KQorCitXaXRoIHRoZSBwcm9qZWN0IG9i
amVjdCBzZXQgdXAsIGl0IGNhbiBiZSBhZGRlZCB0byBhbiBYQ1Byb2plY3RGaWxlIG9iamVjdC4K
K1hDUHJvamVjdEZpbGUgaXMgYSBwc2V1ZG8tY2xhc3MgaW4gdGhlIHNlbnNlIHRoYXQgaXQgaXMg
YSBjb25jcmV0ZSBYQ09iamVjdAorc3ViY2xhc3MgdGhhdCBkb2VzIG5vdCBhY3R1YWxseSBjb3Jy
ZXNwb25kIHRvIGEgY2xhc3MgdHlwZSBmb3VuZCBpbiBhIHByb2plY3QKK2ZpbGUuICBSYXRoZXIs
IGl0IGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBwcm9qZWN0IGZpbGUncyByb290IGRpY3Rpb25h
cnkuCitQcmludGluZyBhbiBYQ1Byb2plY3RGaWxlIHdpbGwgcHJpbnQgdGhlIGVudGlyZSBwcm9q
ZWN0IGZpbGUsIGluY2x1ZGluZyB0aGUKK2Z1bGwgIm9iamVjdHMiIGRpY3Rpb25hcnkuCisKKyAg
cHJvamVjdF9maWxlID0gWENQcm9qZWN0RmlsZSh7J3Jvb3RPYmplY3QnOiBwcm9qZWN0fSkKKyAg
cHJvamVjdF9maWxlLkNvbXB1dGVJRHMoKQorICBwcm9qZWN0X2ZpbGUuUHJpbnQoKQorCitYY29k
ZSBwcm9qZWN0IGZpbGVzIGFyZSBhbHdheXMgZW5jb2RlZCBpbiBVVEYtOC4gIFRoaXMgbW9kdWxl
IHdpbGwgYWNjZXB0CitzdHJpbmdzIG9mIGVpdGhlciB0aGUgc3RyIGNsYXNzIG9yIHRoZSB1bmlj
b2RlIGNsYXNzLiAgU3RyaW5ncyBvZiBjbGFzcyBzdHIKK2FyZSBhc3N1bWVkIHRvIGFscmVhZHkg
YmUgZW5jb2RlZCBpbiBVVEYtOC4gIE9idmlvdXNseSwgaWYgeW91J3JlIGp1c3QgdXNpbmcKK0FT
Q0lJLCB5b3Ugd29uJ3QgZW5jb3VudGVyIGRpZmZpY3VsdGllcyBiZWNhdXNlIEFTQ0lJIGlzIGEg
VVRGLTggc3Vic2V0LgorU3RyaW5ncyBvZiBjbGFzcyB1bmljb2RlIGFyZSBoYW5kbGVkIHByb3Bl
cmx5IGFuZCBlbmNvZGVkIGluIFVURi04IHdoZW4KK2EgcHJvamVjdCBmaWxlIGlzIG91dHB1dC4K
KyIiIgorCitpbXBvcnQgZ3lwLmNvbW1vbgoraW1wb3J0IHBvc2l4cGF0aAoraW1wb3J0IHJlCitp
bXBvcnQgc3RydWN0CitpbXBvcnQgc3lzCisKKyMgaGFzaGxpYiBpcyBzdXBwbGllZCBhcyBvZiBQ
eXRob24gMi41IGFzIHRoZSByZXBsYWNlbWVudCBpbnRlcmZhY2UgZm9yIHNoYQorIyBhbmQgb3Ro
ZXIgc2VjdXJlIGhhc2hlcy4gIEluIDIuNiwgc2hhIGlzIGRlcHJlY2F0ZWQuICBJbXBvcnQgaGFz
aGxpYiBpZgorIyBhdmFpbGFibGUsIGF2b2lkaW5nIGEgZGVwcmVjYXRpb24gd2FybmluZyB1bmRl
ciAyLjYuICBJbXBvcnQgc2hhIG90aGVyd2lzZSwKKyMgcHJlc2VydmluZyAyLjQgY29tcGF0aWJp
bGl0eS4KK3RyeToKKyAgaW1wb3J0IGhhc2hsaWIKKyAgX25ld19zaGExID0gaGFzaGxpYi5zaGEx
CitleGNlcHQgSW1wb3J0RXJyb3I6CisgIGltcG9ydCBzaGEKKyAgX25ld19zaGExID0gc2hhLm5l
dworCisKKyMgU2VlIFhDT2JqZWN0Ll9FbmNvZGVTdHJpbmcuICBUaGlzIHBhdHRlcm4gaXMgdXNl
ZCB0byBkZXRlcm1pbmUgd2hlbiBhIHN0cmluZworIyBjYW4gYmUgcHJpbnRlZCB1bnF1b3RlZC4g
IFN0cmluZ3MgdGhhdCBtYXRjaCB0aGlzIHBhdHRlcm4gbWF5IGJlIHByaW50ZWQKKyMgdW5xdW90
ZWQuICBTdHJpbmdzIHRoYXQgZG8gbm90IG1hdGNoIG11c3QgYmUgcXVvdGVkIGFuZCBtYXkgYmUg
ZnVydGhlcgorIyB0cmFuc2Zvcm1lZCB0byBiZSBwcm9wZXJseSBlbmNvZGVkLiAgTm90ZSB0aGF0
IHRoaXMgZXhwcmVzc2lvbiBtYXRjaGVzIHRoZQorIyBjaGFyYWN0ZXJzIGxpc3RlZCB3aXRoICIr
IiwgZm9yIDEgb3IgbW9yZSBvY2N1cnJlbmNlczogaWYgYSBzdHJpbmcgaXMgZW1wdHksCisjIGl0
IG11c3Qgbm90IG1hdGNoIHRoaXMgcGF0dGVybiwgYmVjYXVzZSBpdCBuZWVkcyB0byBiZSBlbmNv
ZGVkIGFzICIiLgorX3VucXVvdGVkID0gcmUuY29tcGlsZSgnXltBLVphLXowLTkkLi9fXSskJykK
KworIyBTdHJpbmdzIHRoYXQgbWF0Y2ggdGhpcyBwYXR0ZXJuIGFyZSBxdW90ZWQgcmVnYXJkbGVz
cyBvZiB3aGF0IF91bnF1b3RlZCBzYXlzLgorIyBPZGRseSwgWGNvZGUgd2lsbCBxdW90ZSBhbnkg
c3RyaW5nIHdpdGggYSBydW4gb2YgdGhyZWUgb3IgbW9yZSB1bmRlcnNjb3Jlcy4KK19xdW90ZWQg
PSByZS5jb21waWxlKCdfX18nKQorCisjIFRoaXMgcGF0dGVybiBzaG91bGQgbWF0Y2ggYW55IGNo
YXJhY3RlciB0aGF0IG5lZWRzIHRvIGJlIGVzY2FwZWQgYnkKKyMgWENPYmplY3QuX0VuY29kZVN0
cmluZy4gIFNlZSB0aGF0IGZ1bmN0aW9uLgorX2VzY2FwZWQgPSByZS5jb21waWxlKCdbXFxcXCJd
fFteIC1+XScpCisKKworIyBVc2VkIGJ5IFNvdXJjZVRyZWVBbmRQYXRoRnJvbVBhdGgKK19wYXRo
X2xlYWRpbmdfdmFyaWFibGUgPSByZS5jb21waWxlKCdeXCRcKCguKj8pXCkoLyguKikpPyQnKQor
CitkZWYgU291cmNlVHJlZUFuZFBhdGhGcm9tUGF0aChpbnB1dF9wYXRoKToKKyAgIiIiR2l2ZW4g
aW5wdXRfcGF0aCwgcmV0dXJucyBhIHR1cGxlIHdpdGggc291cmNlVHJlZSBhbmQgcGF0aCB2YWx1
ZXMuCisKKyAgRXhhbXBsZXM6CisgICAgaW5wdXRfcGF0aCAgICAgKHNvdXJjZV90cmVlLCBvdXRw
dXRfcGF0aCkKKyAgICAnJChWQVIpL3BhdGgnICAoJ1ZBUicsICdwYXRoJykKKyAgICAnJChWQVIp
JyAgICAgICAoJ1ZBUicsIE5vbmUpCisgICAgJ3BhdGgnICAgICAgICAgKE5vbmUsICdwYXRoJykK
KyAgIiIiCisKKyAgc291cmNlX2dyb3VwX21hdGNoID0gX3BhdGhfbGVhZGluZ192YXJpYWJsZS5t
YXRjaChpbnB1dF9wYXRoKQorICBpZiBzb3VyY2VfZ3JvdXBfbWF0Y2g6CisgICAgc291cmNlX3Ry
ZWUgPSBzb3VyY2VfZ3JvdXBfbWF0Y2guZ3JvdXAoMSkKKyAgICBvdXRwdXRfcGF0aCA9IHNvdXJj
ZV9ncm91cF9tYXRjaC5ncm91cCgzKSAgIyBUaGlzIG1heSBiZSBOb25lLgorICBlbHNlOgorICAg
IHNvdXJjZV90cmVlID0gTm9uZQorICAgIG91dHB1dF9wYXRoID0gaW5wdXRfcGF0aAorCisgIHJl
dHVybiAoc291cmNlX3RyZWUsIG91dHB1dF9wYXRoKQorCitkZWYgQ29udmVydFZhcmlhYmxlc1Rv
U2hlbGxTeW50YXgoaW5wdXRfc3RyaW5nKToKKyAgcmV0dXJuIHJlLnN1YignXCRcKCguKj8pXCkn
LCAnJHtcXDF9JywgaW5wdXRfc3RyaW5nKQorCitjbGFzcyBYQ09iamVjdChvYmplY3QpOgorICAi
IiJUaGUgYWJzdHJhY3QgYmFzZSBvZiBhbGwgY2xhc3MgdHlwZXMgdXNlZCBpbiBYY29kZSBwcm9q
ZWN0IGZpbGVzLgorCisgIENsYXNzIHZhcmlhYmxlczoKKyAgICBfc2NoZW1hOiBBIGRpY3Rpb25h
cnkgZGVmaW5pbmcgdGhlIHByb3BlcnRpZXMgb2YgdGhpcyBjbGFzcy4gIFRoZSBrZXlzIHRvCisg
ICAgICAgICAgICAgX3NjaGVtYSBhcmUgc3RyaW5nIHByb3BlcnR5IGtleXMgYXMgdXNlZCBpbiBw
cm9qZWN0IGZpbGVzLiAgVmFsdWVzCisgICAgICAgICAgICAgYXJlIGEgbGlzdCBvZiBmb3VyIG9y
IGZpdmUgZWxlbWVudHM6CisgICAgICAgICAgICAgWyBpc19saXN0LCBwcm9wZXJ0eV90eXBlLCBp
c19zdHJvbmcsIGlzX3JlcXVpcmVkLCBkZWZhdWx0IF0KKyAgICAgICAgICAgICBpc19saXN0OiBU
cnVlIGlmIHRoZSBwcm9wZXJ0eSBkZXNjcmliZWQgaXMgYSBsaXN0LCBhcyBvcHBvc2VkCisgICAg
ICAgICAgICAgICAgICAgICAgdG8gYSBzaW5nbGUgZWxlbWVudC4KKyAgICAgICAgICAgICBwcm9w
ZXJ0eV90eXBlOiBUaGUgdHlwZSB0byB1c2UgYXMgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBpZiBpc19saXN0IGlzIFRydWUsIHRoZSB0
eXBlIHRvIHVzZSBmb3IgZWFjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQg
b2YgdGhlIHZhbHVlJ3MgbGlzdC4gIHByb3BlcnR5X3R5cGUgbXVzdAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJlIGFuIFhDT2JqZWN0IHN1YmNsYXNzLCBvciBvbmUgb2YgdGhlIGJ1aWx0
LWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMgc3RyLCBpbnQsIG9yIGRpY3Qu
CisgICAgICAgICAgICAgaXNfc3Ryb25nOiBJZiBwcm9wZXJ0eV90eXBlIGlzIGFuIFhDT2JqZWN0
IHN1YmNsYXNzLCBpc19zdHJvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIFRydWUgdG8g
YXNzZXJ0IHRoYXQgdGhpcyBjbGFzcyAib3ducywiIG9yIHNlcnZlcworICAgICAgICAgICAgICAg
ICAgICAgICAgYXMgcGFyZW50LCB0byB0aGUgcHJvcGVydHkgdmFsdWUgKG9yLCBpZiBpc19saXN0
IGlzCisgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLCB2YWx1ZXMpLiAgaXNfc3Ryb25nIG11
c3QgYmUgRmFsc2UgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5X3R5cGUgaXMg
bm90IGFuIFhDT2JqZWN0IHN1YmNsYXNzLgorICAgICAgICAgICAgIGlzX3JlcXVpcmVkOiBUcnVl
IGlmIHRoZSBwcm9wZXJ0eSBpcyByZXF1aXJlZCBmb3IgdGhlIGNsYXNzLgorICAgICAgICAgICAg
ICAgICAgICAgICAgICBOb3RlIHRoYXQgaXNfcmVxdWlyZWQgYmVpbmcgVHJ1ZSBkb2VzIG5vdCBw
cmVjbHVkZQorICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBlbXB0eSBzdHJpbmcgKCIiLCBp
biB0aGUgY2FzZSBvZiBwcm9wZXJ0eV90eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cikgb3IgbGlzdCAoW10sIGluIHRoZSBjYXNlIG9mIGlzX2xpc3QgVHJ1ZSkgZnJvbQorICAgICAg
ICAgICAgICAgICAgICAgICAgICBiZWluZyBzZXQgZm9yIHRoZSBwcm9wZXJ0eS4KKyAgICAgICAg
ICAgICBkZWZhdWx0OiBPcHRpb25hbC4gIElmIGlzX3JlcXVyaWVkIGlzIFRydWUsIGRlZmF1bHQg
bWF5IGJlIHNldAorICAgICAgICAgICAgICAgICAgICAgIHRvIHByb3ZpZGUgYSBkZWZhdWx0IHZh
bHVlIGZvciBvYmplY3RzIHRoYXQgZG8gbm90IHN1cHBseQorICAgICAgICAgICAgICAgICAgICAg
IHRoZWlyIG93biB2YWx1ZS4gIElmIGlzX3JlcXVpcmVkIGlzIFRydWUgYW5kIGRlZmF1bHQKKyAg
ICAgICAgICAgICAgICAgICAgICBpcyBub3QgcHJvdmlkZWQsIHVzZXJzIG9mIHRoZSBjbGFzcyBt
dXN0IHN1cHBseSB0aGVpciBvd24KKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBmb3IgdGhl
IHByb3BlcnR5LgorICAgICAgICAgICAgIE5vdGUgdGhhdCBhbHRob3VnaCB0aGUgdmFsdWVzIG9m
IHRoZSBhcnJheSBhcmUgZXhwcmVzc2VkIGluCisgICAgICAgICAgICAgYm9vbGVhbiB0ZXJtcywg
c3ViY2xhc3NlcyBwcm92aWRlIHZhbHVlcyBhcyBpbnRlZ2VycyB0byBjb25zZXJ2ZQorICAgICAg
ICAgICAgIGhvcml6b250YWwgc3BhY2UuCisgICAgX3Nob3VsZF9wcmludF9zaW5nbGVfbGluZTog
RmFsc2UgaW4gWENPYmplY3QuICBTdWJjbGFzc2VzIHdob3NlIG9iamVjdHMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgd3JpdHRlbiB0byB0aGUgcHJvamVjdCBmaWxl
IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0ZSBzaW5nbGUt
bGluZSBmb3JtYXQsIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQlhG
aWxlUmVmZXJlbmNlIGFuZCBQQlhCdWlsZEZpbGUsIHNob3VsZAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldCB0aGlzIHRvIFRydWUuCisgICAgX2VuY29kZV90cmFuc2Zvcm1zOiBV
c2VkIGJ5IF9FbmNvZGVTdHJpbmcgdG8gZW5jb2RlIHVucHJpbnRhYmxlIGNoYXJhY3RlcnMuCisg
ICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW5kZXggaW50byB0aGlzIGxpc3QgaXMgdGhlIG9y
ZGluYWwgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgdG8gdHJhbnNm
b3JtOyBlYWNoIHZhbHVlIGlzIGEgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB1c2Vk
IHRvIHJlcHJlc2VudCB0aGUgY2hhcmFjdGVyIGluIHRoZSBvdXRwdXQuICBYQ09iamVjdAorICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgYW4gX2VuY29kZV90cmFuc2Zvcm1zIGxpc3Qg
c3VpdGFibGUgZm9yIG1vc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIFhDT2JqZWN0IHN1YmNs
YXNzZXMuCisgICAgX2FsdGVybmF0ZV9lbmNvZGVfdHJhbnNmb3JtczogUHJvdmlkZWQgZm9yIHN1
YmNsYXNzZXMgdGhhdCB3aXNoIHRvIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoZSBhbHRlcm5hdGUgZW5jb2RpbmcgcnVsZXMuICBYY29kZSBzZWVtcworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHVzZSB0aGVzZSBydWxlcyB3aGVuIHByaW50aW5n
IG9iamVjdHMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUtbGlu
ZSBmb3JtYXQuICBTdWJjbGFzc2VzIHRoYXQgZGVzaXJlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcyBiZWhhdmlvciBzaG91bGQgc2V0IF9lbmNvZGVfdHJhbnNmb3Jtcwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIF9hbHRlcm5hdGVfZW5jb2RlX3Ry
YW5zZm9ybXMuCisgICAgX2hhc2hhYmxlczogQSBsaXN0IG9mIFhDT2JqZWN0IHN1YmNsYXNzZXMg
dGhhdCBjYW4gYmUgaGFzaGVkIGJ5IENvbXB1dGVJRHMKKyAgICAgICAgICAgICAgICB0byBjb25z
dHJ1Y3QgdGhpcyBvYmplY3QncyBJRC4gIE1vc3QgY2xhc3NlcyB0aGF0IG5lZWQgY3VzdG9tCisg
ICAgICAgICAgICAgICAgaGFzaGluZyBiZWhhdmlvciBzaG91bGQgZG8gaXQgYnkgb3ZlcnJpZGlu
ZyBIYXNoYWJsZXMsCisgICAgICAgICAgICAgICAgYnV0IGluIHNvbWUgY2FzZXMgYW4gb2JqZWN0
J3MgcGFyZW50IG1heSB3aXNoIHRvIHB1c2ggYQorICAgICAgICAgICAgICAgIGhhc2hhYmxlIHZh
bHVlIGludG8gaXRzIGNoaWxkLCBhbmQgaXQgY2FuIGRvIHNvIGJ5IGFwcGVuZGluZworICAgICAg
ICAgICAgICAgIHRvIF9oYXNoYWJsZXMuCisgIEF0dHJpYnVlczoKKyAgICBpZDogVGhlIG9iamVj
dCdzIGlkZW50aWZpZXIsIGEgMjQtY2hhcmFjdGVyIHVwcGVyY2FzZSBoZXhhZGVjaW1hbCBzdHJp
bmcuCisgICAgICAgIFVzdWFsbHksIG9iamVjdHMgYmVpbmcgY3JlYXRlZCBzaG91bGQgbm90IHNl
dCBpZCB1bnRpbCB0aGUgZW50aXJlCisgICAgICAgIHByb2plY3QgZmlsZSBzdHJ1Y3R1cmUgaXMg
YnVpbHQuICBBdCB0aGF0IHBvaW50LCBVcGRhdGVJRHMoKSBzaG91bGQKKyAgICAgICAgYmUgY2Fs
bGVkIG9uIHRoZSByb290IG9iamVjdCB0byBhc3NpZ24gZGV0ZXJtaW5pc3RpYyB2YWx1ZXMgZm9y
IGlkIHRvCisgICAgICAgIGVhY2ggb2JqZWN0IGluIHRoZSB0cmVlLgorICAgIHBhcmVudDogVGhl
IG9iamVjdCdzIHBhcmVudC4gIFRoaXMgaXMgc2V0IGJ5IGEgcGFyZW50IFhDT2JqZWN0IHdoZW4g
YSBjaGlsZAorICAgICAgICAgICAgb2JqZWN0IGlzIGFkZGVkIHRvIGl0LgorICAgIF9wcm9wZXJ0
aWVzOiBUaGUgb2JqZWN0J3MgcHJvcGVydHkgZGljdGlvbmFyeS4gIEFuIG9iamVjdCdzIHByb3Bl
cnRpZXMgYXJlCisgICAgICAgICAgICAgICAgIGRlc2NyaWJlZCBieSBpdHMgY2xhc3MnIF9zY2hl
bWEgdmFyaWFibGUuCisgICIiIgorCisgIF9zY2hlbWEgPSB7fQorICBfc2hvdWxkX3ByaW50X3Np
bmdsZV9saW5lID0gRmFsc2UKKworICAjIFNlZSBfRW5jb2RlU3RyaW5nLgorICBfZW5jb2RlX3Ry
YW5zZm9ybXMgPSBbXQorICBpID0gMAorICB3aGlsZSBpIDwgb3JkKCcgJyk6CisgICAgX2VuY29k
ZV90cmFuc2Zvcm1zLmFwcGVuZCgnXFxVJTA0eCcgJSBpKQorICAgIGkgPSBpICsgMQorICBfZW5j
b2RlX3RyYW5zZm9ybXNbN10gPSAnXFxhJworICBfZW5jb2RlX3RyYW5zZm9ybXNbOF0gPSAnXFxi
JworICBfZW5jb2RlX3RyYW5zZm9ybXNbOV0gPSAnXFx0JworICBfZW5jb2RlX3RyYW5zZm9ybXNb
MTBdID0gJ1xcbicKKyAgX2VuY29kZV90cmFuc2Zvcm1zWzExXSA9ICdcXHYnCisgIF9lbmNvZGVf
dHJhbnNmb3Jtc1sxMl0gPSAnXFxmJworICBfZW5jb2RlX3RyYW5zZm9ybXNbMTNdID0gJ1xcbicK
KworICBfYWx0ZXJuYXRlX2VuY29kZV90cmFuc2Zvcm1zID0gbGlzdChfZW5jb2RlX3RyYW5zZm9y
bXMpCisgIF9hbHRlcm5hdGVfZW5jb2RlX3RyYW5zZm9ybXNbOV0gPSBjaHIoOSkKKyAgX2FsdGVy
bmF0ZV9lbmNvZGVfdHJhbnNmb3Jtc1sxMF0gPSBjaHIoMTApCisgIF9hbHRlcm5hdGVfZW5jb2Rl
X3RyYW5zZm9ybXNbMTFdID0gY2hyKDExKQorCisgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9wZXJ0
aWVzPU5vbmUsIGlkPU5vbmUsIHBhcmVudD1Ob25lKToKKyAgICBzZWxmLmlkID0gaWQKKyAgICBz
ZWxmLnBhcmVudCA9IHBhcmVudAorICAgIHNlbGYuX3Byb3BlcnRpZXMgPSB7fQorICAgIHNlbGYu
X2hhc2hhYmxlcyA9IFtdCisgICAgc2VsZi5fU2V0RGVmYXVsdHNGcm9tU2NoZW1hKCkKKyAgICBz
ZWxmLlVwZGF0ZVByb3BlcnRpZXMocHJvcGVydGllcykKKworICBkZWYgX19yZXByX18oc2VsZik6
CisgICAgdHJ5OgorICAgICAgbmFtZSA9IHNlbGYuTmFtZSgpCisgICAgZXhjZXB0IE5vdEltcGxl
bWVudGVkRXJyb3I6CisgICAgICByZXR1cm4gJzwlcyBhdCAweCV4PicgJSAoc2VsZi5fX2NsYXNz
X18uX19uYW1lX18sIGlkKHNlbGYpKQorICAgIHJldHVybiAnPCVzICVyIGF0IDB4JXg+JyAlIChz
ZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSwgaWQoc2VsZikpCisKKyAgZGVmIENvcHkoc2Vs
Zik6CisgICAgIiIiTWFrZSBhIGNvcHkgb2YgdGhpcyBvYmplY3QuCisKKyAgICBUaGUgbmV3IG9i
amVjdCB3aWxsIGhhdmUgaXRzIG93biBjb3B5IG9mIGxpc3RzIGFuZCBkaWN0cy4gIEFueSBYQ09i
amVjdAorICAgIG9iamVjdHMgb3duZWQgYnkgdGhpcyBvYmplY3QgKG1hcmtlZCAic3Ryb25nIikg
d2lsbCBiZSBjb3BpZWQgaW4gdGhlCisgICAgbmV3IG9iamVjdCwgZXZlbiB0aG9zZSBmb3VuZCBp
biBsaXN0cy4gIElmIHRoaXMgb2JqZWN0IGhhcyBhbnkgd2VhaworICAgIHJlZmVyZW5jZXMgdG8g
b3RoZXIgWENPYmplY3RzLCB0aGUgc2FtZSByZWZlcmVuY2VzIGFyZSBhZGRlZCB0byB0aGUgbmV3
CisgICAgb2JqZWN0IHdpdGhvdXQgbWFraW5nIGEgY29weS4KKyAgICAiIiIKKworICAgIHRoYXQg
PSBzZWxmLl9fY2xhc3NfXyhpZD1zZWxmLmlkLCBwYXJlbnQ9c2VsZi5wYXJlbnQpCisgICAgZm9y
IGtleSwgdmFsdWUgaW4gc2VsZi5fcHJvcGVydGllcy5pdGVyaXRlbXMoKToKKyAgICAgIGlzX3N0
cm9uZyA9IHNlbGYuX3NjaGVtYVtrZXldWzJdCisKKyAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUs
IFhDT2JqZWN0KToKKyAgICAgICAgaWYgaXNfc3Ryb25nOgorICAgICAgICAgIG5ld192YWx1ZSA9
IHZhbHVlLkNvcHkoKQorICAgICAgICAgIG5ld192YWx1ZS5wYXJlbnQgPSB0aGF0CisgICAgICAg
ICAgdGhhdC5fcHJvcGVydGllc1trZXldID0gbmV3X3ZhbHVlCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgdGhhdC5fcHJvcGVydGllc1trZXldID0gdmFsdWUKKyAgICAgIGVsaWYgaXNpbnN0YW5j
ZSh2YWx1ZSwgc3RyKSBvciBpc2luc3RhbmNlKHZhbHVlLCB1bmljb2RlKSBvciBcCisgICAgICAg
ICAgIGlzaW5zdGFuY2UodmFsdWUsIGludCk6CisgICAgICAgIHRoYXQuX3Byb3BlcnRpZXNba2V5
XSA9IHZhbHVlCisgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgorICAgICAgICBp
ZiBpc19zdHJvbmc6CisgICAgICAgICAgIyBJZiBpc19zdHJvbmcgaXMgVHJ1ZSwgZWFjaCBlbGVt
ZW50IGlzIGFuIFhDT2JqZWN0LCBzbyBpdCdzIHNhZmUgdG8KKyAgICAgICAgICAjIGNhbGwgQ29w
eS4KKyAgICAgICAgICB0aGF0Ll9wcm9wZXJ0aWVzW2tleV0gPSBbXQorICAgICAgICAgIGZvciBp
dGVtIGluIHZhbHVlOgorICAgICAgICAgICAgbmV3X2l0ZW0gPSBpdGVtLkNvcHkoKQorICAgICAg
ICAgICAgbmV3X2l0ZW0ucGFyZW50ID0gdGhhdAorICAgICAgICAgICAgdGhhdC5fcHJvcGVydGll
c1trZXldLmFwcGVuZChuZXdfaXRlbSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICB0aGF0Ll9w
cm9wZXJ0aWVzW2tleV0gPSB2YWx1ZVs6XQorICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBk
aWN0KToKKyAgICAgICAgIyBkaWN0cyBhcmUgbmV2ZXIgc3Ryb25nLgorICAgICAgICBpZiBpc19z
dHJvbmc6CisgICAgICAgICAgcmFpc2UgVHlwZUVycm9yLCAnU3Ryb25nIGRpY3QgZm9yIGtleSAn
ICsga2V5ICsgJyBpbiAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2Ns
YXNzX18uX19uYW1lX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICB0aGF0Ll9wcm9wZXJ0aWVz
W2tleV0gPSB2YWx1ZS5jb3B5KCkKKyAgICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFR5cGVFcnJv
ciwgJ1VuZXhwZWN0ZWQgdHlwZSAnICsgdmFsdWUuX19jbGFzc19fLl9fbmFtZV9fICsgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICcgZm9yIGtleSAnICsga2V5ICsgJyBpbiAnICsgc2VsZi5f
X2NsYXNzX18uX19uYW1lX18KKworICAgIHJldHVybiB0aGF0CisKKyAgZGVmIE5hbWUoc2VsZik6
CisgICAgIiIiUmV0dXJuIHRoZSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gYW4gb2JqZWN0LgorCisg
ICAgTm90IGFsbCBvYmplY3RzIG5lY2Vzc2FyaWx5IG5lZWQgdG8gYmUgbmFtZWFibGUsIGFuZCBu
b3QgYWxsIHRoYXQgZG8gaGF2ZQorICAgIGEgIm5hbWUiIHByb3BlcnR5LiAgT3ZlcnJpZGUgYXMg
bmVlZGVkLgorICAgICIiIgorCisgICAgIyBJZiB0aGUgc2NoZW1hIGluZGljYXRlcyB0aGF0ICJu
YW1lIiBpcyByZXF1aXJlZCwgdHJ5IHRvIGFjY2VzcyB0aGUKKyAgICAjIHByb3BlcnR5IGV2ZW4g
aWYgaXQgZG9lc24ndCBleGlzdC4gIFRoaXMgd2lsbCByZXN1bHQgaW4gYSBLZXlFcnJvcgorICAg
ICMgYmVpbmcgcmFpc2VkIGZvciB0aGUgcHJvcGVydHkgdGhhdCBzaG91bGQgYmUgcHJlc2VudCwg
d2hpY2ggc2VlbXMgbW9yZQorICAgICMgYXBwcm9wcmlhdGUgdGhhbiBOb3RJbXBsZW1lbnRlZEVy
cm9yIGluIHRoaXMgY2FzZS4KKyAgICBpZiAnbmFtZScgaW4gc2VsZi5fcHJvcGVydGllcyBvciBc
CisgICAgICAgICgnbmFtZScgaW4gc2VsZi5fc2NoZW1hIGFuZCBzZWxmLl9zY2hlbWFbJ25hbWUn
XVszXSk6CisgICAgICByZXR1cm4gc2VsZi5fcHJvcGVydGllc1snbmFtZSddCisKKyAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yLCBcCisgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1l
X18gKyAnIG11c3QgaW1wbGVtZW50IE5hbWUnCisKKyAgZGVmIENvbW1lbnQoc2VsZik6CisgICAg
IiIiUmV0dXJuIGEgY29tbWVudCBzdHJpbmcgZm9yIHRoZSBvYmplY3QuCisKKyAgICBNb3N0IG9i
amVjdHMganVzdCB1c2UgdGhlaXIgbmFtZSBhcyB0aGUgY29tbWVudCwgYnV0IFBCWFByb2plY3Qg
dXNlcworICAgIGRpZmZlcmVudCB2YWx1ZXMuCisKKyAgICBUaGUgcmV0dXJuZWQgY29tbWVudCBp
cyBub3QgZXNjYXBlZCBhbmQgZG9lcyBub3QgaGF2ZSBhbnkgY29tbWVudCBtYXJrZXIKKyAgICBz
dHJpbmdzIGFwcGxpZWQgdG8gaXQuCisgICAgIiIiCisKKyAgICByZXR1cm4gc2VsZi5OYW1lKCkK
KworICBkZWYgSGFzaGFibGVzKHNlbGYpOgorICAgIGhhc2hhYmxlcyA9IFtzZWxmLl9fY2xhc3Nf
Xy5fX25hbWVfX10KKworICAgIG5hbWUgPSBzZWxmLk5hbWUoKQorICAgIGlmIG5hbWUgIT0gTm9u
ZToKKyAgICAgIGhhc2hhYmxlcy5hcHBlbmQobmFtZSkKKworICAgIGhhc2hhYmxlcy5leHRlbmQo
c2VsZi5faGFzaGFibGVzKQorCisgICAgcmV0dXJuIGhhc2hhYmxlcworCisgIGRlZiBDb21wdXRl
SURzKHNlbGYsIHJlY3Vyc2l2ZT1UcnVlLCBvdmVyd3JpdGU9VHJ1ZSwgaGFzaD1Ob25lKToKKyAg
ICAiIiJTZXQgImlkIiBwcm9wZXJ0aWVzIGRldGVybWluaXN0aWNhbGx5LgorCisgICAgQW4gb2Jq
ZWN0J3MgImlkIiBwcm9wZXJ0eSBpcyBzZXQgYmFzZWQgb24gYSBoYXNoIG9mIGl0cyBjbGFzcyB0
eXBlIGFuZAorICAgIG5hbWUsIGFzIHdlbGwgYXMgdGhlIGNsYXNzIHR5cGUgYW5kIG5hbWUgb2Yg
YWxsIGFuY2VzdG9yIG9iamVjdHMuICBBcworICAgIHN1Y2gsIGl0IGlzIG9ubHkgYWR2aXNhYmxl
IHRvIGNhbGwgQ29tcHV0ZUlEcyBvbmNlIGFuIGVudGlyZSBwcm9qZWN0IGZpbGUKKyAgICB0cmVl
IGlzIGJ1aWx0LgorCisgICAgSWYgcmVjdXJzaXZlIGlzIFRydWUsIHJlY3Vyc2UgaW50byBhbGwg
ZGVzY2VuZGFudCBvYmplY3RzIGFuZCB1cGRhdGUgdGhlaXIKKyAgICBoYXNoZXMuCisKKyAgICBJ
ZiBvdmVyd3JpdGUgaXMgVHJ1ZSwgYW55IGV4aXN0aW5nIHZhbHVlIHNldCBpbiB0aGUgImlkIiBw
cm9wZXJ0eSB3aWxsIGJlCisgICAgcmVwbGFjZWQuCisgICAgIiIiCisKKyAgICBkZWYgX0hhc2hV
cGRhdGUoaGFzaCwgZGF0YSk6CisgICAgICAiIiJVcGRhdGUgaGFzaCB3aXRoIGRhdGEncyBsZW5n
dGggYW5kIGNvbnRlbnRzLgorCisgICAgICBJZiB0aGUgaGFzaCB3ZXJlIHVwZGF0ZWQgb25seSB3
aXRoIHRoZSB2YWx1ZSBvZiBkYXRhLCBpdCB3b3VsZCBiZQorICAgICAgcG9zc2libGUgZm9yIGNs
b3ducyB0byBpbmR1Y2UgY29sbGlzaW9ucyBieSBtYW5pcHVsYXRpbmcgdGhlIG5hbWVzIG9mCisg
ICAgICB0aGVpciBvYmplY3RzLiAgQnkgYWRkaW5nIHRoZSBsZW5ndGgsIGl0J3MgZXhjZWVkaW5n
bHkgbGVzcyBsaWtlbHkgdGhhdAorICAgICAgSUQgY29sbGlzaW9ucyB3aWxsIGJlIGVuY291bnRl
cmVkLCBpbnRlbnRpb25hbGx5IG9yIG5vdC4KKyAgICAgICIiIgorCisgICAgICBoYXNoLnVwZGF0
ZShzdHJ1Y3QucGFjaygnPmknLCBsZW4oZGF0YSkpKQorICAgICAgaGFzaC51cGRhdGUoZGF0YSkK
KworICAgIGlmIGhhc2ggPT0gTm9uZToKKyAgICAgIGhhc2ggPSBfbmV3X3NoYTEoKQorCisgICAg
aGFzaGFibGVzID0gc2VsZi5IYXNoYWJsZXMoKQorICAgIGFzc2VydCBsZW4oaGFzaGFibGVzKSA+
IDAKKyAgICBmb3IgaGFzaGFibGUgaW4gaGFzaGFibGVzOgorICAgICAgX0hhc2hVcGRhdGUoaGFz
aCwgaGFzaGFibGUpCisKKyAgICBpZiByZWN1cnNpdmU6CisgICAgICBmb3IgY2hpbGQgaW4gc2Vs
Zi5DaGlsZHJlbigpOgorICAgICAgICBjaGlsZC5Db21wdXRlSURzKHJlY3Vyc2l2ZSwgb3Zlcndy
aXRlLCBoYXNoLmNvcHkoKSkKKworICAgIGlmIG92ZXJ3cml0ZSBvciBzZWxmLmlkID09IE5vbmU6
CisgICAgICAjIFhjb2RlIElEcyBhcmUgb25seSA5NiBiaXRzICgyNCBoZXggY2hhcmFjdGVycyks
IGJ1dCBhIFNIQS0xIGRpZ2VzdCBpcworICAgICAgIyBpcyAxNjAgYml0cy4gIEluc3RlYWQgb2Yg
dGhyb3dpbmcgb3V0IDY0IGJpdHMgb2YgdGhlIGRpZ2VzdCwgeG9yIHRoZW0KKyAgICAgICMgaW50
byB0aGUgcG9ydGlvbiB0aGF0IGdldHMgdXNlZC4KKyAgICAgIGFzc2VydCBoYXNoLmRpZ2VzdF9z
aXplICUgNCA9PSAwCisgICAgICBkaWdlc3RfaW50X2NvdW50ID0gaGFzaC5kaWdlc3Rfc2l6ZSAv
IDQKKyAgICAgIGRpZ2VzdF9pbnRzID0gc3RydWN0LnVucGFjaygnPicgKyAnSScgKiBkaWdlc3Rf
aW50X2NvdW50LCBoYXNoLmRpZ2VzdCgpKQorICAgICAgaWRfaW50cyA9IFswLCAwLCAwXQorICAg
ICAgZm9yIGluZGV4IGluIHhyYW5nZSgwLCBkaWdlc3RfaW50X2NvdW50KToKKyAgICAgICAgaWRf
aW50c1tpbmRleCAlIDNdIF49IGRpZ2VzdF9pbnRzW2luZGV4XQorICAgICAgc2VsZi5pZCA9ICcl
MDhYJTA4WCUwOFgnICUgdHVwbGUoaWRfaW50cykKKworICBkZWYgRW5zdXJlTm9JRENvbGxpc2lv
bnMoc2VsZik6CisgICAgIiIiVmVyaWZpZXMgdGhhdCBubyB0d28gb2JqZWN0cyBoYXZlIHRoZSBz
YW1lIElELiAgQ2hlY2tzIGFsbCBkZXNjZW5kYW50cy4KKyAgICAiIiIKKworICAgIGlkcyA9IHt9
CisgICAgZGVzY2VuZGFudHMgPSBzZWxmLkRlc2NlbmRhbnRzKCkKKyAgICBmb3IgZGVzY2VuZGFu
dCBpbiBkZXNjZW5kYW50czoKKyAgICAgIGlmIGRlc2NlbmRhbnQuaWQgaW4gaWRzOgorICAgICAg
ICBvdGhlciA9IGlkc1tkZXNjZW5kYW50LmlkXQorICAgICAgICByYWlzZSBLZXlFcnJvciwgXAor
ICAgICAgICAgICAgICAnRHVwbGljYXRlIElEICVzLCBvYmplY3RzICIlcyIgYW5kICIlcyIgaW4g
IiVzIicgJSBcCisgICAgICAgICAgICAgIChkZXNjZW5kYW50LmlkLCBzdHIoZGVzY2VuZGFudC5f
cHJvcGVydGllcyksCisgICAgICAgICAgICAgICBzdHIob3RoZXIuX3Byb3BlcnRpZXMpLCBzZWxm
Ll9wcm9wZXJ0aWVzWydyb290T2JqZWN0J10uTmFtZSgpKQorICAgICAgaWRzW2Rlc2NlbmRhbnQu
aWRdID0gZGVzY2VuZGFudAorCisgIGRlZiBDaGlsZHJlbihzZWxmKToKKyAgICAiIiJSZXR1cm5z
IGEgbGlzdCBvZiBhbGwgb2YgdGhpcyBvYmplY3QncyBvd25lZCAoc3Ryb25nKSBjaGlsZHJlbi4i
IiIKKworICAgIGNoaWxkcmVuID0gW10KKyAgICBmb3IgcHJvcGVydHksIGF0dHJpYnV0ZXMgaW4g
c2VsZi5fc2NoZW1hLml0ZXJpdGVtcygpOgorICAgICAgKGlzX2xpc3QsIHByb3BlcnR5X3R5cGUs
IGlzX3N0cm9uZykgPSBhdHRyaWJ1dGVzWzA6M10KKyAgICAgIGlmIGlzX3N0cm9uZyBhbmQgcHJv
cGVydHkgaW4gc2VsZi5fcHJvcGVydGllczoKKyAgICAgICAgaWYgbm90IGlzX2xpc3Q6CisgICAg
ICAgICAgY2hpbGRyZW4uYXBwZW5kKHNlbGYuX3Byb3BlcnRpZXNbcHJvcGVydHldKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgIGNoaWxkcmVuLmV4dGVuZChzZWxmLl9wcm9wZXJ0aWVzW3Byb3Bl
cnR5XSkKKyAgICByZXR1cm4gY2hpbGRyZW4KKworICBkZWYgRGVzY2VuZGFudHMoc2VsZik6Cisg
ICAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgYWxsIG9mIHRoaXMgb2JqZWN0J3MgZGVzY2VuZGFudHMs
IGluY2x1ZGluZyB0aGlzCisgICAgb2JqZWN0LgorICAgICIiIgorCisgICAgY2hpbGRyZW4gPSBz
ZWxmLkNoaWxkcmVuKCkKKyAgICBkZXNjZW5kYW50cyA9IFtzZWxmXQorICAgIGZvciBjaGlsZCBp
biBjaGlsZHJlbjoKKyAgICAgIGRlc2NlbmRhbnRzLmV4dGVuZChjaGlsZC5EZXNjZW5kYW50cygp
KQorICAgIHJldHVybiBkZXNjZW5kYW50cworCisgIGRlZiBQQlhQcm9qZWN0QW5jZXN0b3Ioc2Vs
Zik6CisgICAgIyBUaGUgYmFzZSBjYXNlIGZvciByZWN1cnNpb24gaXMgZGVmaW5lZCBhdCBQQlhQ
cm9qZWN0LlBCWFByb2plY3RBbmNlc3Rvci4KKyAgICBpZiBzZWxmLnBhcmVudDoKKyAgICAgIHJl
dHVybiBzZWxmLnBhcmVudC5QQlhQcm9qZWN0QW5jZXN0b3IoKQorICAgIHJldHVybiBOb25lCisK
KyAgZGVmIF9FbmNvZGVDb21tZW50KHNlbGYsIGNvbW1lbnQpOgorICAgICIiIkVuY29kZXMgYSBj
b21tZW50IHRvIGJlIHBsYWNlZCBpbiB0aGUgcHJvamVjdCBmaWxlIG91dHB1dCwgbWltaWNpbmcK
KyAgICBYY29kZSBiZWhhdmlvci4KKyAgICAiIiIKKworICAgICMgVGhpcyBtaW1pY3MgWGNvZGUg
YmVoYXZpb3IgYnkgd3JhcHBpbmcgdGhlIGNvbW1lbnQgaW4gIi8qIiBhbmQgIiovIi4gIElmCisg
ICAgIyB0aGUgc3RyaW5nIGFscmVhZHkgY29udGFpbnMgYSAiKi8iLCBpdCBpcyB0dXJuZWQgaW50
byAiKCopLyIuICBUaGlzIGtlZXBzCisgICAgIyB0aGUgZmlsZSB3cml0ZXIgZnJvbSBvdXRwdXR0
aW5nIHNvbWV0aGluZyB0aGF0IHdvdWxkIGJlIHRyZWF0ZWQgYXMgdGhlCisgICAgIyBlbmQgb2Yg
YSBjb21tZW50IGluIHRoZSBtaWRkbGUgb2Ygc29tZXRoaW5nIGludGVuZGVkIHRvIGJlIGVudGly
ZWx5IGEKKyAgICAjIGNvbW1lbnQuCisKKyAgICByZXR1cm4gJy8qICcgKyBjb21tZW50LnJlcGxh
Y2UoJyovJywgJygqKS8nKSArICcgKi8nCisKKyAgZGVmIF9FbmNvZGVUcmFuc2Zvcm0oc2VsZiwg
bWF0Y2gpOgorICAgICMgVGhpcyBmdW5jdGlvbiB3b3JrcyBjbG9zZWx5IHdpdGggX0VuY29kZVN0
cmluZy4gIEl0IHdpbGwgb25seSBiZSBjYWxsZWQKKyAgICAjIGJ5IHJlLnN1YiB3aXRoIG1hdGNo
Lmdyb3VwKDApIGNvbnRhaW5pbmcgYSBjaGFyYWN0ZXIgbWF0Y2hlZCBieSB0aGUKKyAgICAjIHRo
ZSBfZXNjYXBlZCBleHByZXNzaW9uLgorICAgIGNoYXIgPSBtYXRjaC5ncm91cCgwKQorCisgICAg
IyBCYWNrc2xhc2hlcyAoXCkgYW5kIHF1b3RhdGlvbiBtYXJrcyAoIikgYXJlIGFsd2F5cyByZXBs
YWNlZCB3aXRoIGEKKyAgICAjIGJhY2tzbGFzaC1lc2NhcGVkIHZlcnNpb24gb2YgdGhlIHNhbWUu
ICBFdmVyeXRoaW5nIGVsc2UgZ2V0cyBpdHMKKyAgICAjIHJlcGxhY2VtZW50IGZyb20gdGhlIGNs
YXNzJyBfZW5jb2RlX3RyYW5zZm9ybXMgYXJyYXkuCisgICAgaWYgY2hhciA9PSAnXFwnOgorICAg
ICAgcmV0dXJuICdcXFxcJworICAgIGlmIGNoYXIgPT0gJyInOgorICAgICAgcmV0dXJuICdcXCIn
CisgICAgcmV0dXJuIHNlbGYuX2VuY29kZV90cmFuc2Zvcm1zW29yZChjaGFyKV0KKworICBkZWYg
X0VuY29kZVN0cmluZyhzZWxmLCB2YWx1ZSk6CisgICAgIiIiRW5jb2RlcyBhIHN0cmluZyB0byBi
ZSBwbGFjZWQgaW4gdGhlIHByb2plY3QgZmlsZSBvdXRwdXQsIG1pbWljaW5nCisgICAgWGNvZGUg
YmVoYXZpb3IuCisgICAgIiIiCisKKyAgICAjIFVzZSBxdW90YXRpb24gbWFya3Mgd2hlbiBhbnkg
Y2hhcmFjdGVyIG91dHNpZGUgb2YgdGhlIHJhbmdlIEEtWiwgYS16LCAwLTksCisgICAgIyAkIChk
b2xsYXIgc2lnbiksIC4gKHBlcmlvZCksIGFuZCBfICh1bmRlcnNjb3JlKSBpcyBwcmVzZW50LiAg
QWxzbyB1c2UKKyAgICAjIHF1b3RhdGlvbiBtYXJrcyB0byByZXByZXNlbnQgZW1wdHkgc3RyaW5n
cy4KKyAgICAjCisgICAgIyBFc2NhcGUgIiAoZG91YmxlLXF1b3RlKSBhbmQgXCAoYmFja3NsYXNo
KSBieSBwcmVjZWRpbmcgdGhlbSB3aXRoIGEKKyAgICAjIGJhY2tzbGFzaC4KKyAgICAjCisgICAg
IyBTb21lIGNoYXJhY3RlcnMgYmVsb3cgdGhlIHByaW50YWJsZSBBU0NJSSByYW5nZSBhcmUgZW5j
b2RlZCBzcGVjaWFsbHk6CisgICAgIyAgICAgNyBeRyBCRUwgaXMgZW5jb2RlZCBhcyAiXGEiCisg
ICAgIyAgICAgOCBeSCBCUyAgaXMgZW5jb2RlZCBhcyAiXGIiCisgICAgIyAgICAxMSBeSyBWVCAg
aXMgZW5jb2RlZCBhcyAiXHYiCisgICAgIyAgICAxMiBeTCBOUCAgaXMgZW5jb2RlZCBhcyAiXGYi
CisgICAgIyAgIDEyNyBePyBERUwgaXMgcGFzc2VkIHRocm91Z2ggYXMtaXMgd2l0aG91dCBlc2Nh
cGluZworICAgICMgIC0gSW4gUEJYRmlsZVJlZmVyZW5jZSBhbmQgUEJYQnVpbGRGaWxlIG9iamVj
dHM6CisgICAgIyAgICAgOSBeSSBIVCAgaXMgcGFzc2VkIHRocm91Z2ggYXMtaXMgd2l0aG91dCBl
c2NhcGluZworICAgICMgICAgMTAgXkogTkwgIGlzIHBhc3NlZCB0aHJvdWdoIGFzLWlzIHdpdGhv
dXQgZXNjYXBpbmcKKyAgICAjICAgIDEzIF5NIENSICBpcyBwYXNzZWQgdGhyb3VnaCBhcy1pcyB3
aXRob3V0IGVzY2FwaW5nCisgICAgIyAgLSBJbiBvdGhlciBvYmplY3RzOgorICAgICMgICAgIDkg
XkkgSFQgIGlzIGVuY29kZWQgYXMgIlx0IgorICAgICMgICAgMTAgXkogTkwgIGlzIGVuY29kZWQg
YXMgIlxuIgorICAgICMgICAgMTMgXk0gQ1IgIGlzIGVuY29kZWQgYXMgIlxuIiByZW5kZXJpbmcg
aXQgaW5kaXN0aW5ndWlzaGFibGUgZnJvbQorICAgICMgICAgICAgICAgICAgIDEwIF5KIE5MCisg
ICAgIyBBbGwgb3RoZXIgbm9ucHJpbnRhYmxlIGNoYXJhY3RlcnMgd2l0aGluIHRoZSBBU0NJSSBy
YW5nZSAoMCB0aHJvdWdoIDEyNworICAgICMgaW5jbHVzaXZlKSBhcmUgZW5jb2RlZCBhcyAiXFUw
MDFmIiByZWZlcnJpbmcgdG8gdGhlIFVuaWNvZGUgY29kZSBwb2ludCBpbgorICAgICMgaGV4YWRl
Y2ltYWwuICBGb3IgZXhhbXBsZSwgY2hhcmFjdGVyIDE0ICheTiBTTykgaXMgZW5jb2RlZCBhcyAi
XFUwMDBlIi4KKyAgICAjIENoYXJhY3RlcnMgYWJvdmUgdGhlIEFTQ0lJIHJhbmdlIGFyZSBwYXNz
ZWQgdGhyb3VnaCB0byB0aGUgb3V0cHV0IGVuY29kZWQKKyAgICAjIGFzIFVURi04IHdpdGhvdXQg
YW55IGVzY2FwaW5nLiAgVGhlc2UgbWFwcGluZ3MgYXJlIGNvbnRhaW5lZCBpbiB0aGUKKyAgICAj
IGNsYXNzJyBfZW5jb2RlX3RyYW5zZm9ybXMgbGlzdC4KKworICAgIGlmIF91bnF1b3RlZC5zZWFy
Y2godmFsdWUpIGFuZCBub3QgX3F1b3RlZC5zZWFyY2godmFsdWUpOgorICAgICAgcmV0dXJuIHZh
bHVlCisKKyAgICByZXR1cm4gJyInICsgX2VzY2FwZWQuc3ViKHNlbGYuX0VuY29kZVRyYW5zZm9y
bSwgdmFsdWUpICsgJyInCisKKyAgZGVmIF9YQ1ByaW50KHNlbGYsIGZpbGUsIHRhYnMsIGxpbmUp
OgorICAgIGZpbGUud3JpdGUoJ1x0JyAqIHRhYnMgKyBsaW5lKQorCisgIGRlZiBfWENQcmludGFi
bGVWYWx1ZShzZWxmLCB0YWJzLCB2YWx1ZSwgZmxhdHRlbl9saXN0PUZhbHNlKToKKyAgICAiIiJS
ZXR1cm5zIGEgcmVwcmVzZW50YXRpb24gb2YgdmFsdWUgdGhhdCBtYXkgYmUgcHJpbnRlZCBpbiBh
IHByb2plY3QgZmlsZSwKKyAgICBtaW1pY2luZyBYY29kZSdzIGJlaGF2aW9yLgorCisgICAgX1hD
UHJpbnRhYmxlVmFsdWUgY2FuIGhhbmRsZSBzdHIgYW5kIGludCB2YWx1ZXMsIFhDT2JqZWN0cyAo
d2hpY2ggYXJlCisgICAgbWFkZSBwcmludGFibGUgYnkgcmV0dXJuaW5nIHRoZWlyIGlkIHByb3Bl
cnR5KSwgYW5kIGxpc3QgYW5kIGRpY3Qgb2JqZWN0cworICAgIGNvbXBvc2VkIG9mIGFueSBvZiB0
aGUgYWJvdmUgdHlwZXMuICBXaGVuIHByaW50aW5nIGEgbGlzdCBvciBkaWN0LCBhbmQKKyAgICBf
c2hvdWxkX3ByaW50X3NpbmdsZV9saW5lIGlzIEZhbHNlLCB0aGUgdGFicyBwYXJhbWV0ZXIgaXMg
dXNlZCB0byBkZXRlcm1pbmUKKyAgICBob3cgbXVjaCB0byBpbmRlbnQgdGhlIGxpbmVzIGNvcnJl
c3BvbmRpbmcgdG8gdGhlIGl0ZW1zIGluIHRoZSBsaXN0IG9yCisgICAgZGljdC4KKworICAgIElm
IGZsYXR0ZW5fbGlzdCBpcyBUcnVlLCBzaW5nbGUtZWxlbWVudCBsaXN0cyB3aWxsIGJlIHRyYW5z
Zm9ybWVkIGludG8KKyAgICBzdHJpbmdzLgorICAgICIiIgorCisgICAgcHJpbnRhYmxlID0gJycK
KyAgICBjb21tZW50ID0gTm9uZQorCisgICAgaWYgc2VsZi5fc2hvdWxkX3ByaW50X3NpbmdsZV9s
aW5lOgorICAgICAgc2VwID0gJyAnCisgICAgICBlbGVtZW50X3RhYnMgPSAnJworICAgICAgZW5k
X3RhYnMgPSAnJworICAgIGVsc2U6CisgICAgICBzZXAgPSAnXG4nCisgICAgICBlbGVtZW50X3Rh
YnMgPSAnXHQnICogKHRhYnMgKyAxKQorICAgICAgZW5kX3RhYnMgPSAnXHQnICogdGFicworCisg
ICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgWENPYmplY3QpOgorICAgICAgcHJpbnRhYmxlICs9IHZh
bHVlLmlkCisgICAgICBjb21tZW50ID0gdmFsdWUuQ29tbWVudCgpCisgICAgZWxpZiBpc2luc3Rh
bmNlKHZhbHVlLCBzdHIpOgorICAgICAgcHJpbnRhYmxlICs9IHNlbGYuX0VuY29kZVN0cmluZyh2
YWx1ZSkKKyAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHVuaWNvZGUpOgorICAgICAgcHJpbnRh
YmxlICs9IHNlbGYuX0VuY29kZVN0cmluZyh2YWx1ZS5lbmNvZGUoJ3V0Zi04JykpCisgICAgZWxp
ZiBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgorICAgICAgcHJpbnRhYmxlICs9IHN0cih2YWx1ZSkK
KyAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgorICAgICAgaWYgZmxhdHRlbl9saXN0
IGFuZCBsZW4odmFsdWUpIDw9IDE6CisgICAgICAgIGlmIGxlbih2YWx1ZSkgPT0gMDoKKyAgICAg
ICAgICBwcmludGFibGUgKz0gc2VsZi5fRW5jb2RlU3RyaW5nKCcnKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgIHByaW50YWJsZSArPSBzZWxmLl9FbmNvZGVTdHJpbmcodmFsdWVbMF0pCisgICAg
ICBlbHNlOgorICAgICAgICBwcmludGFibGUgPSAnKCcgKyBzZXAKKyAgICAgICAgZm9yIGl0ZW0g
aW4gdmFsdWU6CisgICAgICAgICAgcHJpbnRhYmxlICs9IGVsZW1lbnRfdGFicyArIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fWENQcmludGFibGVWYWx1ZSh0YWJzICsgMSwgaXRlbSwg
ZmxhdHRlbl9saXN0KSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJywnICsgc2VwCisgICAg
ICAgIHByaW50YWJsZSArPSBlbmRfdGFicyArICcpJworICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1
ZSwgZGljdCk6CisgICAgICBwcmludGFibGUgPSAneycgKyBzZXAKKyAgICAgIGZvciBpdGVtX2tl
eSwgaXRlbV92YWx1ZSBpbiBzb3J0ZWQodmFsdWUuaXRlcml0ZW1zKCkpOgorICAgICAgICBwcmlu
dGFibGUgKz0gZWxlbWVudF90YWJzICsgXAorICAgICAgICAgICAgc2VsZi5fWENQcmludGFibGVW
YWx1ZSh0YWJzICsgMSwgaXRlbV9rZXksIGZsYXR0ZW5fbGlzdCkgKyAnID0gJyArIFwKKyAgICAg
ICAgICAgIHNlbGYuX1hDUHJpbnRhYmxlVmFsdWUodGFicyArIDEsIGl0ZW1fdmFsdWUsIGZsYXR0
ZW5fbGlzdCkgKyAnOycgKyBcCisgICAgICAgICAgICBzZXAKKyAgICAgIHByaW50YWJsZSArPSBl
bmRfdGFicyArICd9JworICAgIGVsc2U6CisgICAgICByYWlzZSBUeXBlRXJyb3IsICJDYW4ndCBt
YWtlICIgKyB2YWx1ZS5fX2NsYXNzX18uX19uYW1lX18gKyAnIHByaW50YWJsZScKKworICAgIGlm
IGNvbW1lbnQgIT0gTm9uZToKKyAgICAgIHByaW50YWJsZSArPSAnICcgKyBzZWxmLl9FbmNvZGVD
b21tZW50KGNvbW1lbnQpCisKKyAgICByZXR1cm4gcHJpbnRhYmxlCisKKyAgZGVmIF9YQ0tWUHJp
bnQoc2VsZiwgZmlsZSwgdGFicywga2V5LCB2YWx1ZSk6CisgICAgIiIiUHJpbnRzIGEga2V5IGFu
ZCB2YWx1ZSwgbWVtYmVycyBvZiBhbiBYQ09iamVjdCdzIF9wcm9wZXJ0aWVzIGRpY3Rpb25hcnks
CisgICAgdG8gZmlsZS4KKworICAgIHRhYnMgaXMgYW4gaW50IGlkZW50aWZ5aW5nIHRoZSBpbmRl
bnRhdGlvbiBsZXZlbC4gIElmIHRoZSBjbGFzcycKKyAgICBfc2hvdWxkX3ByaW50X3NpbmdsZV9s
aW5lIHZhcmlhYmxlIGlzIFRydWUsIHRhYnMgaXMgaWdub3JlZCBhbmQgdGhlCisgICAga2V5LXZh
bHVlIHBhaXIgd2lsbCBiZSBmb2xsb3dlZCBieSBhIHNwYWNlIGluc2VhZCBvZiBhIG5ld2xpbmUu
CisgICAgIiIiCisKKyAgICBpZiBzZWxmLl9zaG91bGRfcHJpbnRfc2luZ2xlX2xpbmU6CisgICAg
ICBwcmludGFibGUgPSAnJworICAgICAgYWZ0ZXJfa3YgPSAnICcKKyAgICBlbHNlOgorICAgICAg
cHJpbnRhYmxlID0gJ1x0JyAqIHRhYnMKKyAgICAgIGFmdGVyX2t2ID0gJ1xuJworCisgICAgIyBY
Y29kZSB1c3VhbGx5IHByaW50cyByZW1vdGVHbG9iYWxJRFN0cmluZyB2YWx1ZXMgaW4gUEJYQ29u
dGFpbmVySXRlbVByb3h5CisgICAgIyBvYmplY3RzIHdpdGhvdXQgY29tbWVudHMuICBTb21ldGlt
ZXMgaXQgcHJpbnRzIHRoZW0gd2l0aCBjb21tZW50cywgYnV0CisgICAgIyB0aGUgbWFqb3JpdHkg
b2YgdGhlIHRpbWUsIGl0IGRvZXNuJ3QuICBUbyBhdm9pZCB1bm5lY2Vzc2FyeSBjaGFuZ2VzIHRv
CisgICAgIyB0aGUgcHJvamVjdCBmaWxlIGFmdGVyIFhjb2RlIG9wZW5zIGl0LCBkb24ndCB3cml0
ZSBjb21tZW50cyBmb3IKKyAgICAjIHJlbW90ZUdsb2JhbElEU3RyaW5nLiAgVGhpcyBpcyBhIHN1
Y2t5IGhhY2sgYW5kIGl0IHdvdWxkIGNlcnRhaW5seSBiZQorICAgICMgY2xlYW5lciB0byBleHRl
bmQgdGhlIHNjaGVtYSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCBhIGNvbW1lbnQgc2hvdWxk
CisgICAgIyBiZSBwcmludGVkLCBidXQgc2luY2UgdGhpcyBpcyB0aGUgb25seSBjYXNlIHdoZXJl
IHRoZSBwcm9ibGVtIG9jY3VycyBhbmQKKyAgICAjIFhjb2RlIGl0c2VsZiBjYW4ndCBzZWVtIHRv
IG1ha2UgdXAgaXRzIG1pbmQsIHRoZSBoYWNrIHdpbGwgc3VmZmljZS4KKyAgICAjCisgICAgIyBB
bHNvIHNlZSBQQlhDb250YWluZXJJdGVtUHJveHkuX3NjaGVtYVsncmVtb3RlR2xvYmFsSURTdHJp
bmcnXS4KKyAgICBpZiBrZXkgPT0gJ3JlbW90ZUdsb2JhbElEU3RyaW5nJyBhbmQgaXNpbnN0YW5j
ZShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBCWENvbnRhaW5lckl0ZW1Qcm94eSk6CisgICAgICB2YWx1ZV90b19wcmludCA9IHZhbHVl
LmlkCisgICAgZWxzZToKKyAgICAgIHZhbHVlX3RvX3ByaW50ID0gdmFsdWUKKworICAgICMgUEJY
QnVpbGRGaWxlJ3Mgc2V0dGluZ3MgcHJvcGVydHkgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIG91dHB1
dCBhcyBhIGRpY3QsCisgICAgIyBidXQgYSBoYWNrIGhlcmUgaGFzIGl0IHJlcHJlc2VudGVkIGFz
IGEgc3RyaW5nLiBBcnJhbmdlIHRvIHN0cmlwIG9mZiB0aGUKKyAgICAjIHF1b3RlcyBzbyB0aGF0
IGl0IHNob3dzIHVwIGluIHRoZSBvdXRwdXQgYXMgZXhwZWN0ZWQuCisgICAgaWYga2V5ID09ICdz
ZXR0aW5ncycgYW5kIGlzaW5zdGFuY2Uoc2VsZiwgUEJYQnVpbGRGaWxlKToKKyAgICAgIHN0cmlw
X3ZhbHVlX3F1b3RlcyA9IFRydWUKKyAgICBlbHNlOgorICAgICAgc3RyaXBfdmFsdWVfcXVvdGVz
ID0gRmFsc2UKKworICAgICMgSW4gYW5vdGhlciBvbmUtb2ZmLCBsZXQncyBzZXQgZmxhdHRlbl9s
aXN0IG9uIGJ1aWxkU2V0dGluZ3MgcHJvcGVydGllcworICAgICMgb2YgWENCdWlsZENvbmZpZ3Vy
YXRpb24gb2JqZWN0cywgYmVjYXVzZSB0aGF0J3MgaG93IFhjb2RlIHRyZWF0cyB0aGVtLgorICAg
IGlmIGtleSA9PSAnYnVpbGRTZXR0aW5ncycgYW5kIGlzaW5zdGFuY2Uoc2VsZiwgWENCdWlsZENv
bmZpZ3VyYXRpb24pOgorICAgICAgZmxhdHRlbl9saXN0ID0gVHJ1ZQorICAgIGVsc2U6CisgICAg
ICBmbGF0dGVuX2xpc3QgPSBGYWxzZQorCisgICAgdHJ5OgorICAgICAgcHJpbnRhYmxlX2tleSA9
IHNlbGYuX1hDUHJpbnRhYmxlVmFsdWUodGFicywga2V5LCBmbGF0dGVuX2xpc3QpCisgICAgICBw
cmludGFibGVfdmFsdWUgPSBzZWxmLl9YQ1ByaW50YWJsZVZhbHVlKHRhYnMsIHZhbHVlX3RvX3By
aW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGF0
dGVuX2xpc3QpCisgICAgICBpZiBzdHJpcF92YWx1ZV9xdW90ZXMgYW5kIGxlbihwcmludGFibGVf
dmFsdWUpID4gMSBhbmQgXAorICAgICAgICAgIHByaW50YWJsZV92YWx1ZVswXSA9PSAnIicgYW5k
IHByaW50YWJsZV92YWx1ZVstMV0gPT0gJyInOgorICAgICAgICBwcmludGFibGVfdmFsdWUgPSBw
cmludGFibGVfdmFsdWVbMTotMV0KKyAgICAgIHByaW50YWJsZSArPSBwcmludGFibGVfa2V5ICsg
JyA9ICcgKyBwcmludGFibGVfdmFsdWUgKyAnOycgKyBhZnRlcl9rdgorICAgIGV4Y2VwdCBUeXBl
RXJyb3IsIGU6CisgICAgICBneXAuY29tbW9uLkV4Y2VwdGlvbkFwcGVuZChlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3doaWxlIHByaW50aW5nIGtleSAiJXMiJyAlIGtleSkK
KyAgICAgIHJhaXNlCisKKyAgICBzZWxmLl9YQ1ByaW50KGZpbGUsIDAsIHByaW50YWJsZSkKKwor
ICBkZWYgUHJpbnQoc2VsZiwgZmlsZT1zeXMuc3Rkb3V0KToKKyAgICAiIiJQcmludHMgYSByZXBy
ZW50YXRpb24gb2YgdGhpcyBvYmplY3QgdG8gZmlsZSwgYWRoZXJpbmcgdG8gWGNvZGUgb3V0cHV0
CisgICAgZm9ybWF0dGluZy4KKyAgICAiIiIKKworICAgIHNlbGYuVmVyaWZ5SGFzUmVxdWlyZWRQ
cm9wZXJ0aWVzKCkKKworICAgIGlmIHNlbGYuX3Nob3VsZF9wcmludF9zaW5nbGVfbGluZToKKyAg
ICAgICMgV2hlbiBwcmludGluZyBhbiBvYmplY3QgaW4gYSBzaW5nbGUgbGluZSwgWGNvZGUgZG9l
c24ndCBwdXQgYW55IHNwYWNlCisgICAgICAjIGJldHdlZW4gdGhlIGJlZ2lubmluZyBvZiBhIGRp
Y3Rpb25hcnkgKG9yIHByZXN1bWFibHkgYSBsaXN0KSBhbmQgdGhlCisgICAgICAjIGZpcnN0IGNv
bnRhaW5lZCBpdGVtLCBzbyB5b3Ugd2luZCB1cCB3aXRoIHNuaXBwZXRzIGxpa2UKKyAgICAgICMg
ICAuLi5DREVGID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVSZWYgPSAwMTIzLi4uCisg
ICAgICAjIElmIGl0IHdlcmUgbWUsIEkgd291bGQgaGF2ZSBwdXQgYSBzcGFjZSBpbiB0aGVyZSBh
ZnRlciB0aGUgb3BlbmluZworICAgICAgIyBjdXJseSwgYnV0IEkgZ3Vlc3MgdGhpcyBpcyBqdXN0
IGFub3RoZXIgb25lIG9mIHRob3NlIGluY29uc2lzdGVuY2llcworICAgICAgIyBiZXR3ZWVuIGhv
dyBYY29kZSBwcmludHMgUEJYRmlsZVJlZmVyZW5jZSBhbmQgUEJYQnVpbGRGaWxlIG9iamVjdHMg
YXMKKyAgICAgICMgY29tcGFyZWQgdG8gb3RoZXIgb2JqZWN0cy4gIE1pbWljIFhjb2RlJ3MgYmVo
YXZpb3IgaGVyZSBieSB1c2luZyBhbgorICAgICAgIyBlbXB0eSBzdHJpbmcgZm9yIHNlcC4KKyAg
ICAgIHNlcCA9ICcnCisgICAgICBlbmRfdGFicyA9IDAKKyAgICBlbHNlOgorICAgICAgc2VwID0g
J1xuJworICAgICAgZW5kX3RhYnMgPSAyCisKKyAgICAjIFN0YXJ0IHRoZSBvYmplY3QuICBGb3Ig
ZXhhbXBsZSwgJ1x0XHRQQlhQcm9qZWN0ID0ge1xuJy4KKyAgICBzZWxmLl9YQ1ByaW50KGZpbGUs
IDIsIHNlbGYuX1hDUHJpbnRhYmxlVmFsdWUoMiwgc2VsZikgKyAnID0geycgKyBzZXApCisKKyAg
ICAjICJpc2EiIGlzbid0IGluIHRoZSBfcHJvcGVydGllcyBkaWN0aW9uYXJ5LCBpdCdzIGFuIGlu
dHJpbnNpYyBwcm9wZXJ0eQorICAgICMgb2YgdGhlIGNsYXNzIHdoaWNoIHRoZSBvYmplY3QgYmVs
b25ncyB0by4gIFhjb2RlIGFsd2F5cyBvdXRwdXRzICJpc2EiCisgICAgIyBhcyB0aGUgZmlyc3Qg
ZWxlbWVudCBvZiBhbiBvYmplY3QgZGljdGlvbmFyeS4KKyAgICBzZWxmLl9YQ0tWUHJpbnQoZmls
ZSwgMywgJ2lzYScsIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKQorCisgICAgIyBUaGUgcmVtYWlu
aW5nIGVsZW1lbnRzIG9mIGFuIG9iamVjdCBkaWN0aW9uYXJ5IGFyZSBzb3J0ZWQgYWxwaGFiZXRp
Y2FsbHkuCisgICAgZm9yIHByb3BlcnR5LCB2YWx1ZSBpbiBzb3J0ZWQoc2VsZi5fcHJvcGVydGll
cy5pdGVyaXRlbXMoKSk6CisgICAgICBzZWxmLl9YQ0tWUHJpbnQoZmlsZSwgMywgcHJvcGVydHks
IHZhbHVlKQorCisgICAgIyBFbmQgdGhlIG9iamVjdC4KKyAgICBzZWxmLl9YQ1ByaW50KGZpbGUs
IGVuZF90YWJzLCAnfTtcbicpCisKKyAgZGVmIFVwZGF0ZVByb3BlcnRpZXMoc2VsZiwgcHJvcGVy
dGllcywgZG9fY29weT1GYWxzZSk6CisgICAgIiIiTWVyZ2UgdGhlIHN1cHBsaWVkIHByb3BlcnRp
ZXMgaW50byB0aGUgX3Byb3BlcnRpZXMgZGljdGlvbmFyeS4KKworICAgIFRoZSBpbnB1dCBwcm9w
ZXJ0aWVzIG11c3QgYWRoZXJlIHRvIHRoZSBjbGFzcyBzY2hlbWEgb3IgYSBLZXlFcnJvciBvcgor
ICAgIFR5cGVFcnJvciBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuICBJZiBhZGRpbmcgYW4gb2Jq
ZWN0IG9mIGFuIFhDT2JqZWN0CisgICAgc3ViY2xhc3MgYW5kIHRoZSBzY2hlbWEgaW5kaWNhdGVz
IGEgc3Ryb25nIHJlbGF0aW9uc2hpcCwgdGhlIG9iamVjdCdzCisgICAgcGFyZW50IHdpbGwgYmUg
c2V0IHRvIHRoaXMgb2JqZWN0LgorCisgICAgSWYgZG9fY29weSBpcyBUcnVlLCB0aGVuIGxpc3Rz
LCBkaWN0cywgc3Ryb25nLW93bmVkIFhDT2JqZWN0cywgYW5kCisgICAgc3Ryb25nLW93bmVkIFhD
T2JqZWN0cyBpbiBsaXN0cyB3aWxsIGJlIGNvcGllZCBpbnN0ZWFkIG9mIGhhdmluZyB0aGVpcgor
ICAgIHJlZmVyZW5jZXMgYWRkZWQuCisgICAgIiIiCisKKyAgICBpZiBwcm9wZXJ0aWVzID09IE5v
bmU6CisgICAgICByZXR1cm4KKworICAgIGZvciBwcm9wZXJ0eSwgdmFsdWUgaW4gcHJvcGVydGll
cy5pdGVyaXRlbXMoKToKKyAgICAgICMgTWFrZSBzdXJlIHRoZSBwcm9wZXJ0eSBpcyBpbiB0aGUg
c2NoZW1hLgorICAgICAgaWYgbm90IHByb3BlcnR5IGluIHNlbGYuX3NjaGVtYToKKyAgICAgICAg
cmFpc2UgS2V5RXJyb3IsIHByb3BlcnR5ICsgJyBub3QgaW4gJyArIHNlbGYuX19jbGFzc19fLl9f
bmFtZV9fCisKKyAgICAgICMgTWFrZSBzdXJlIHRoZSBwcm9wZXJ0eSBjb25mb3JtcyB0byB0aGUg
c2NoZW1hLgorICAgICAgKGlzX2xpc3QsIHByb3BlcnR5X3R5cGUsIGlzX3N0cm9uZykgPSBzZWxm
Ll9zY2hlbWFbcHJvcGVydHldWzA6M10KKyAgICAgIGlmIGlzX2xpc3Q6CisgICAgICAgIGlmIHZh
bHVlLl9fY2xhc3NfXyAhPSBsaXN0OgorICAgICAgICAgIHJhaXNlIFR5cGVFcnJvciwgXAorICAg
ICAgICAgICAgICAgIHByb3BlcnR5ICsgJyBvZiAnICsgc2VsZi5fX2NsYXNzX18uX19uYW1lX18g
KyBcCisgICAgICAgICAgICAgICAgJyBtdXN0IGJlIGxpc3QsIG5vdCAnICsgdmFsdWUuX19jbGFz
c19fLl9fbmFtZV9fCisgICAgICAgIGZvciBpdGVtIGluIHZhbHVlOgorICAgICAgICAgIGlmIG5v
dCBpc2luc3RhbmNlKGl0ZW0sIHByb3BlcnR5X3R5cGUpIGFuZCBcCisgICAgICAgICAgICAgbm90
IChpdGVtLl9fY2xhc3NfXyA9PSB1bmljb2RlIGFuZCBwcm9wZXJ0eV90eXBlID09IHN0cik6Cisg
ICAgICAgICAgICAjIEFjY2VwdCB1bmljb2RlIHdoZXJlIHN0ciBpcyBzcGVjaWZpZWQuICBzdHIg
aXMgdHJlYXRlZCBhcworICAgICAgICAgICAgIyBVVEYtOC1lbmNvZGVkLgorICAgICAgICAgICAg
cmFpc2UgVHlwZUVycm9yLCBcCisgICAgICAgICAgICAgICAgICAnaXRlbSBvZiAnICsgcHJvcGVy
dHkgKyAnIG9mICcgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXyArIFwKKyAgICAgICAgICAgICAg
ICAgICcgbXVzdCBiZSAnICsgcHJvcGVydHlfdHlwZS5fX25hbWVfXyArICcsIG5vdCAnICsgXAor
ICAgICAgICAgICAgICAgICAgaXRlbS5fX2NsYXNzX18uX19uYW1lX18KKyAgICAgIGVsaWYgbm90
IGlzaW5zdGFuY2UodmFsdWUsIHByb3BlcnR5X3R5cGUpIGFuZCBcCisgICAgICAgICAgIG5vdCAo
dmFsdWUuX19jbGFzc19fID09IHVuaWNvZGUgYW5kIHByb3BlcnR5X3R5cGUgPT0gc3RyKToKKyAg
ICAgICAgIyBBY2NlcHQgdW5pY29kZSB3aGVyZSBzdHIgaXMgc3BlY2lmaWVkLiAgc3RyIGlzIHRy
ZWF0ZWQgYXMKKyAgICAgICAgIyBVVEYtOC1lbmNvZGVkLgorICAgICAgICByYWlzZSBUeXBlRXJy
b3IsIFwKKyAgICAgICAgICAgICAgcHJvcGVydHkgKyAnIG9mICcgKyBzZWxmLl9fY2xhc3NfXy5f
X25hbWVfXyArICcgbXVzdCBiZSAnICsgXAorICAgICAgICAgICAgICBwcm9wZXJ0eV90eXBlLl9f
bmFtZV9fICsgJywgbm90ICcgKyB2YWx1ZS5fX2NsYXNzX18uX19uYW1lX18KKworICAgICAgIyBD
aGVja3MgcGFzc2VkLCBwZXJmb3JtIHRoZSBhc3NpZ25tZW50LgorICAgICAgaWYgZG9fY29weToK
KyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgWENPYmplY3QpOgorICAgICAgICAgIGlmIGlz
X3N0cm9uZzoKKyAgICAgICAgICAgIHNlbGYuX3Byb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWUu
Q29weSgpCisgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3Byb3BlcnRpZXNbcHJv
cGVydHldID0gdmFsdWUKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpIG9yIGlz
aW5zdGFuY2UodmFsdWUsIHVuaWNvZGUpIG9yIFwKKyAgICAgICAgICAgICBpc2luc3RhbmNlKHZh
bHVlLCBpbnQpOgorICAgICAgICAgIHNlbGYuX3Byb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWUK
KyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBsaXN0KToKKyAgICAgICAgICBpZiBpc19z
dHJvbmc6CisgICAgICAgICAgICAjIElmIGlzX3N0cm9uZyBpcyBUcnVlLCBlYWNoIGVsZW1lbnQg
aXMgYW4gWENPYmplY3QsIHNvIGl0J3Mgc2FmZQorICAgICAgICAgICAgIyB0byBjYWxsIENvcHku
CisgICAgICAgICAgICBzZWxmLl9wcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IFtdCisgICAgICAgICAg
ICBmb3IgaXRlbSBpbiB2YWx1ZToKKyAgICAgICAgICAgICAgc2VsZi5fcHJvcGVydGllc1twcm9w
ZXJ0eV0uYXBwZW5kKGl0ZW0uQ29weSgpKQorICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICBz
ZWxmLl9wcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbHVlWzpdCisgICAgICAgIGVsaWYgaXNpbnN0
YW5jZSh2YWx1ZSwgZGljdCk6CisgICAgICAgICAgc2VsZi5fcHJvcGVydGllc1twcm9wZXJ0eV0g
PSB2YWx1ZS5jb3B5KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICByYWlzZSBUeXBlRXJyb3Is
ICJEb24ndCBrbm93IGhvdyB0byBjb3B5IGEgIiArIFwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbHVlLl9fY2xhc3NfXy5fX25hbWVfXyArICcgb2JqZWN0IGZvciAnICsgXAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkgKyAnIGluICcgKyBzZWxmLl9fY2xhc3NfXy5f
X25hbWVfXworICAgICAgZWxzZToKKyAgICAgICAgc2VsZi5fcHJvcGVydGllc1twcm9wZXJ0eV0g
PSB2YWx1ZQorCisgICAgICAjIFNldCB1cCB0aGUgY2hpbGQncyBiYWNrLXJlZmVyZW5jZSB0byB0
aGlzIG9iamVjdC4gIERvbid0IHVzZSB8dmFsdWV8CisgICAgICAjIGFueSBtb3JlIGJlY2F1c2Ug
aXQgbWF5IG5vdCBiZSByaWdodCBpZiBkb19jb3B5IGlzIHRydWUuCisgICAgICBpZiBpc19zdHJv
bmc6CisgICAgICAgIGlmIG5vdCBpc19saXN0OgorICAgICAgICAgIHNlbGYuX3Byb3BlcnRpZXNb
cHJvcGVydHldLnBhcmVudCA9IHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICBmb3IgaXRl
bSBpbiBzZWxmLl9wcm9wZXJ0aWVzW3Byb3BlcnR5XToKKyAgICAgICAgICAgIGl0ZW0ucGFyZW50
ID0gc2VsZgorCisgIGRlZiBIYXNQcm9wZXJ0eShzZWxmLCBrZXkpOgorICAgIHJldHVybiBrZXkg
aW4gc2VsZi5fcHJvcGVydGllcworCisgIGRlZiBHZXRQcm9wZXJ0eShzZWxmLCBrZXkpOgorICAg
IHJldHVybiBzZWxmLl9wcm9wZXJ0aWVzW2tleV0KKworICBkZWYgU2V0UHJvcGVydHkoc2VsZiwg
a2V5LCB2YWx1ZSk6CisgICAgc2VsZi5VcGRhdGVQcm9wZXJ0aWVzKHtrZXk6IHZhbHVlfSkKKwor
ICBkZWYgRGVsUHJvcGVydHkoc2VsZiwga2V5KToKKyAgICBpZiBrZXkgaW4gc2VsZi5fcHJvcGVy
dGllczoKKyAgICAgIGRlbCBzZWxmLl9wcm9wZXJ0aWVzW2tleV0KKworICBkZWYgQXBwZW5kUHJv
cGVydHkoc2VsZiwga2V5LCB2YWx1ZSk6CisgICAgIyBUT0RPKG1hcmspOiBTdXBwb3J0IEV4dGVu
ZFByb3BlcnR5IHRvbyAoYW5kIG1ha2UgdGhpcyBjYWxsIHRoYXQpPworCisgICAgIyBTY2hlbWEg
dmFsaWRhdGlvbi4KKyAgICBpZiBub3Qga2V5IGluIHNlbGYuX3NjaGVtYToKKyAgICAgIHJhaXNl
IEtleUVycm9yLCBrZXkgKyAnIG5vdCBpbiAnICsgc2VsZi5fX2NsYXNzX18uX19uYW1lX18KKwor
ICAgIChpc19saXN0LCBwcm9wZXJ0eV90eXBlLCBpc19zdHJvbmcpID0gc2VsZi5fc2NoZW1hW2tl
eV1bMDozXQorICAgIGlmIG5vdCBpc19saXN0OgorICAgICAgcmFpc2UgVHlwZUVycm9yLCBrZXkg
KyAnIG9mICcgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXyArICcgbXVzdCBiZSBsaXN0JworICAg
IGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBwcm9wZXJ0eV90eXBlKToKKyAgICAgIHJhaXNlIFR5
cGVFcnJvciwgJ2l0ZW0gb2YgJyArIGtleSArICcgb2YgJyArIHNlbGYuX19jbGFzc19fLl9fbmFt
ZV9fICsgXAorICAgICAgICAgICAgICAgICAgICAgICAnIG11c3QgYmUgJyArIHByb3BlcnR5X3R5
cGUuX19uYW1lX18gKyAnLCBub3QgJyArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUu
X19jbGFzc19fLl9fbmFtZV9fCisKKyAgICAjIElmIHRoZSBwcm9wZXJ0eSBkb2Vzbid0IGV4aXN0
IHlldCwgY3JlYXRlIGEgbmV3IGVtcHR5IGxpc3QgdG8gcmVjZWl2ZSB0aGUKKyAgICAjIGl0ZW0u
CisgICAgaWYgbm90IGtleSBpbiBzZWxmLl9wcm9wZXJ0aWVzOgorICAgICAgc2VsZi5fcHJvcGVy
dGllc1trZXldID0gW10KKworICAgICMgU2V0IHVwIHRoZSBvd25lcnNoaXAgbGluay4KKyAgICBp
ZiBpc19zdHJvbmc6CisgICAgICB2YWx1ZS5wYXJlbnQgPSBzZWxmCisKKyAgICAjIFN0b3JlIHRo
ZSBpdGVtLgorICAgIHNlbGYuX3Byb3BlcnRpZXNba2V5XS5hcHBlbmQodmFsdWUpCisKKyAgZGVm
IFZlcmlmeUhhc1JlcXVpcmVkUHJvcGVydGllcyhzZWxmKToKKyAgICAiIiJFbnN1cmUgdGhhdCBh
bGwgcHJvcGVydGllcyBpZGVudGlmaWVkIGFzIHJlcXVpcmVkIGJ5IHRoZSBzY2hlbWEgYXJlCisg
ICAgc2V0LgorICAgICIiIgorCisgICAgIyBUT0RPKG1hcmspOiBBIHN0cm9uZ2VyIHZlcmlmaWNh
dGlvbiBtZWNoYW5pc20gaXMgbmVlZGVkLiAgU29tZQorICAgICMgc3ViY2xhc3NlcyBuZWVkIHRv
IHBlcmZvcm0gdmFsaWRhdGlvbiBiZXlvbmQgd2hhdCB0aGUgc2NoZW1hIGNhbiBlbmZvcmNlLgor
ICAgIGZvciBwcm9wZXJ0eSwgYXR0cmlidXRlcyBpbiBzZWxmLl9zY2hlbWEuaXRlcml0ZW1zKCk6
CisgICAgICAoaXNfbGlzdCwgcHJvcGVydHlfdHlwZSwgaXNfc3Ryb25nLCBpc19yZXF1aXJlZCkg
PSBhdHRyaWJ1dGVzWzA6NF0KKyAgICAgIGlmIGlzX3JlcXVpcmVkIGFuZCBub3QgcHJvcGVydHkg
aW4gc2VsZi5fcHJvcGVydGllczoKKyAgICAgICAgcmFpc2UgS2V5RXJyb3IsIHNlbGYuX19jbGFz
c19fLl9fbmFtZV9fICsgJyByZXF1aXJlcyAnICsgcHJvcGVydHkKKworICBkZWYgX1NldERlZmF1
bHRzRnJvbVNjaGVtYShzZWxmKToKKyAgICAiIiJBc3NpZ24gb2JqZWN0IGRlZmF1bHQgdmFsdWVz
IGFjY29yZGluZyB0byB0aGUgc2NoZW1hLiAgVGhpcyB3aWxsIG5vdAorICAgIG92ZXJ3cml0ZSBw
cm9wZXJ0aWVzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gc2V0LiIiIgorCisgICAgZGVmYXVsdHMg
PSB7fQorICAgIGZvciBwcm9wZXJ0eSwgYXR0cmlidXRlcyBpbiBzZWxmLl9zY2hlbWEuaXRlcml0
ZW1zKCk6CisgICAgICAoaXNfbGlzdCwgcHJvcGVydHlfdHlwZSwgaXNfc3Ryb25nLCBpc19yZXF1
aXJlZCkgPSBhdHRyaWJ1dGVzWzA6NF0KKyAgICAgIGlmIGlzX3JlcXVpcmVkIGFuZCBsZW4oYXR0
cmlidXRlcykgPj0gNSBhbmQgXAorICAgICAgICAgIG5vdCBwcm9wZXJ0eSBpbiBzZWxmLl9wcm9w
ZXJ0aWVzOgorICAgICAgICBkZWZhdWx0ID0gYXR0cmlidXRlc1s0XQorCisgICAgICAgIGRlZmF1
bHRzW3Byb3BlcnR5XSA9IGRlZmF1bHQKKworICAgIGlmIGxlbihkZWZhdWx0cykgPiAwOgorICAg
ICAgIyBVc2UgZG9fY29weT1UcnVlIHNvIHRoYXQgZWFjaCBuZXcgb2JqZWN0IGdldHMgaXRzIG93
biBjb3B5IG9mIHN0cm9uZworICAgICAgIyBvYmplY3RzLCBsaXN0cywgYW5kIGRpY3RzLgorICAg
ICAgc2VsZi5VcGRhdGVQcm9wZXJ0aWVzKGRlZmF1bHRzLCBkb19jb3B5PVRydWUpCisKKworY2xh
c3MgWENIaWVyYXJjaGljYWxFbGVtZW50KFhDT2JqZWN0KToKKyAgIiIiQWJzdHJhY3QgYmFzZSBm
b3IgUEJYR3JvdXAgYW5kIFBCWEZpbGVSZWZlcmVuY2UuICBOb3QgcmVwcmVzZW50ZWQgaW4gYQor
ICBwcm9qZWN0IGZpbGUuIiIiCisKKyAgIyBUT0RPKG1hcmspOiBEbyBuYW1lIGFuZCBwYXRoIGJl
bG9uZyBoZXJlPyAgUHJvYmFibHkgc28uCisgICMgSWYgcGF0aCBpcyBzZXQgYW5kIG5hbWUgaXMg
bm90LCBuYW1lIG1heSBoYXZlIGEgZGVmYXVsdCB2YWx1ZS4gIE5hbWUgd2lsbAorICAjIGJlIHNl
dCB0byB0aGUgYmFzZW5hbWUgb2YgcGF0aCwgaWYgdGhlIGJhc2VuYW1lIG9mIHBhdGggaXMgZGlm
ZmVyZW50IGZyb20KKyAgIyB0aGUgZnVsbCB2YWx1ZSBvZiBwYXRoLiAgSWYgcGF0aCBpcyBhbHJl
YWR5IGp1c3QgYSBsZWFmIG5hbWUsIG5hbWUgd2lsbAorICAjIG5vdCBiZSBzZXQuCisgIF9zY2hl
bWEgPSBYQ09iamVjdC5fc2NoZW1hLmNvcHkoKQorICBfc2NoZW1hLnVwZGF0ZSh7CisgICAgJ2Nv
bW1lbnRzJzogICAgICAgWzAsIHN0ciwgMCwgMF0sCisgICAgJ2ZpbGVFbmNvZGluZyc6ICAgWzAs
IHN0ciwgMCwgMF0sCisgICAgJ2luY2x1ZGVJbkluZGV4JzogWzAsIGludCwgMCwgMF0sCisgICAg
J2luZGVudFdpZHRoJzogICAgWzAsIGludCwgMCwgMF0sCisgICAgJ2xpbmVFbmRpbmcnOiAgICAg
WzAsIGludCwgMCwgMF0sCisgICAgJ3NvdXJjZVRyZWUnOiAgICAgWzAsIHN0ciwgMCwgMSwgJzxn
cm91cD4nXSwKKyAgICAndGFiV2lkdGgnOiAgICAgICBbMCwgaW50LCAwLCAwXSwKKyAgICAndXNl
c1RhYnMnOiAgICAgICBbMCwgaW50LCAwLCAwXSwKKyAgICAnd3JhcHNMaW5lcyc6ICAgICBbMCwg
aW50LCAwLCAwXSwKKyAgfSkKKworICBkZWYgX19pbml0X18oc2VsZiwgcHJvcGVydGllcz1Ob25l
LCBpZD1Ob25lLCBwYXJlbnQ9Tm9uZSk6CisgICAgIyBzdXBlcgorICAgIFhDT2JqZWN0Ll9faW5p
dF9fKHNlbGYsIHByb3BlcnRpZXMsIGlkLCBwYXJlbnQpCisgICAgaWYgJ3BhdGgnIGluIHNlbGYu
X3Byb3BlcnRpZXMgYW5kIG5vdCAnbmFtZScgaW4gc2VsZi5fcHJvcGVydGllczoKKyAgICAgIHBh
dGggPSBzZWxmLl9wcm9wZXJ0aWVzWydwYXRoJ10KKyAgICAgIG5hbWUgPSBwb3NpeHBhdGguYmFz
ZW5hbWUocGF0aCkKKyAgICAgIGlmIG5hbWUgIT0gJycgYW5kIHBhdGggIT0gbmFtZToKKyAgICAg
ICAgc2VsZi5TZXRQcm9wZXJ0eSgnbmFtZScsIG5hbWUpCisKKyAgICBpZiAncGF0aCcgaW4gc2Vs
Zi5fcHJvcGVydGllcyBhbmQgXAorICAgICAgICAobm90ICdzb3VyY2VUcmVlJyBpbiBzZWxmLl9w
cm9wZXJ0aWVzIG9yIFwKKyAgICAgICAgIHNlbGYuX3Byb3BlcnRpZXNbJ3NvdXJjZVRyZWUnXSA9
PSAnPGdyb3VwPicpOgorICAgICAgIyBJZiB0aGUgcGF0aG5hbWUgYmVnaW5zIHdpdGggYW4gWGNv
ZGUgdmFyaWFibGUgbGlrZSAiJChTREtST09UKS8iLCB0YWtlCisgICAgICAjIHRoZSB2YXJpYWJs
ZSBvdXQgYW5kIG1ha2UgdGhlIHBhdGggYmUgcmVsYXRpdmUgdG8gdGhhdCB2YXJpYWJsZSBieQor
ICAgICAgIyBhc3NpZ25pbmcgdGhlIHZhcmlhYmxlIG5hbWUgYXMgdGhlIHNvdXJjZVRyZWUuCisg
ICAgICAoc291cmNlX3RyZWUsIHBhdGgpID0gU291cmNlVHJlZUFuZFBhdGhGcm9tUGF0aChzZWxm
Ll9wcm9wZXJ0aWVzWydwYXRoJ10pCisgICAgICBpZiBzb3VyY2VfdHJlZSAhPSBOb25lOgorICAg
ICAgICBzZWxmLl9wcm9wZXJ0aWVzWydzb3VyY2VUcmVlJ10gPSBzb3VyY2VfdHJlZQorICAgICAg
aWYgcGF0aCAhPSBOb25lOgorICAgICAgICBzZWxmLl9wcm9wZXJ0aWVzWydwYXRoJ10gPSBwYXRo
CisgICAgICBpZiBzb3VyY2VfdHJlZSAhPSBOb25lIGFuZCBwYXRoID09IE5vbmUgYW5kIFwKKyAg
ICAgICAgIG5vdCAnbmFtZScgaW4gc2VsZi5fcHJvcGVydGllczoKKyAgICAgICAgIyBUaGUgcGF0
aCB3YXMgb2YgdGhlIGZvcm0gIiQoU0RLUk9PVCkiIHdpdGggbm8gcGF0aCBmb2xsb3dpbmcgaXQu
CisgICAgICAgICMgVGhpcyBvYmplY3QgaXMgbm93IHJlbGF0aXZlIHRvIHRoYXQgdmFyaWFibGUs
IHNvIGl0IGhhcyBubyBwYXRoCisgICAgICAgICMgYXR0cmlidXRlIG9mIGl0cyBvd24uICBJdCBk
b2VzLCBob3dldmVyLCBrZWVwIGEgbmFtZS4KKyAgICAgICAgZGVsIHNlbGYuX3Byb3BlcnRpZXNb
J3BhdGgnXQorICAgICAgICBzZWxmLl9wcm9wZXJ0aWVzWyduYW1lJ10gPSBzb3VyY2VfdHJlZQor
CisgIGRlZiBOYW1lKHNlbGYpOgorICAgIGlmICduYW1lJyBpbiBzZWxmLl9wcm9wZXJ0aWVzOgor
ICAgICAgcmV0dXJuIHNlbGYuX3Byb3BlcnRpZXNbJ25hbWUnXQorICAgIGVsaWYgJ3BhdGgnIGlu
IHNlbGYuX3Byb3BlcnRpZXM6CisgICAgICByZXR1cm4gc2VsZi5fcHJvcGVydGllc1sncGF0aCdd
CisgICAgZWxzZToKKyAgICAgICMgVGhpcyBoYXBwZW5zIGluIHRoZSBjYXNlIG9mIHRoZSByb290
IFBCWEdyb3VwLgorICAgICAgcmV0dXJuIE5vbmUKKworICBkZWYgSGFzaGFibGVzKHNlbGYpOgor
ICAgICIiIkN1c3RvbSBoYXNoYWJsZXMgZm9yIFhDSGllcmFyY2hpY2FsRWxlbWVudHMuCisKKyAg
ICBYQ0hpZXJhcmNoaWNhbEVsZW1lbnRzIGFyZSBzcGVjaWFsLiAgR2VuZXJhbGx5LCB0aGVpciBo
YXNoZXMgc2hvdWxkbid0CisgICAgY2hhbmdlIGlmIHRoZSBwYXRocyBkb24ndCBjaGFuZ2UuICBU
aGUgbm9ybWFsIFhDT2JqZWN0IGltcGxlbWVudGF0aW9uIG9mCisgICAgSGFzaGFibGVzIGFkZHMg
YSBoYXNoYWJsZSBmb3IgZWFjaCBvYmplY3QsIHdoaWNoIG1lYW5zIHRoYXQgaWYKKyAgICB0aGUg
aGllcmFyY2hpY2FsIHN0cnVjdHVyZSBjaGFuZ2VzIChwb3NzaWJseSBkdWUgdG8gY2hhbmdlcyBj
YXVzZWQgd2hlbgorICAgIFRha2VPdmVyT25seUNoaWxkIHJ1bnMgYW5kIGVuY291bnRlcnMgc2xp
Z2h0IGNoYW5nZXMgaW4gdGhlIGhpZXJhcmNoeSksCisgICAgdGhlIGhhc2hlcyB3aWxsIGNoYW5n
ZS4gIEZvciBleGFtcGxlLCBpZiBhIHByb2plY3QgZmlsZSBpbml0aWFsbHkgY29udGFpbnMKKyAg
ICBhL2IvZjEgYW5kIGEvYiBiZWNvbWVzIGNvbGxhcHNlZCBpbnRvIGEvYiwgZjEgd2lsbCBoYXZl
IGEgc2luZ2xlIHBhcmVudAorICAgIGEvYi4gIElmIHNvbWVvbmUgbGF0ZXIgYWRkcyBhL2YyIHRv
IHRoZSBwcm9qZWN0IGZpbGUsIGEvYiBjYW4gbm8gbG9uZ2VyIGJlCisgICAgY29sbGFwc2VkLCBh
bmQgZjEgd2luZHMgdXAgd2l0aCBwYXJlbnQgYiBhbmQgZ3JhbmRwYXJlbnQgYS4gIFRoYXQgd291
bGQKKyAgICBiZSBzdWZmaWNpZW50IHRvIGNoYW5nZSBmMSdzIGhhc2guCisKKyAgICBUbyBjb3Vu
dGVyYWN0IHRoaXMgcHJvYmxlbSwgaGFzaGFibGVzIGZvciBhbGwgWENIaWVyYXJjaGljYWxFbGVt
ZW50cyBleGNlcHQKKyAgICBmb3IgdGhlIG1haW4gZ3JvdXAgKHdoaWNoIGhhcyBuZWl0aGVyIGEg
bmFtZSBub3IgYSBwYXRoKSBhcmUgdGFrZW4gdG8gYmUKKyAgICBqdXN0IHRoZSBzZXQgb2YgcGF0
aCBjb21wb25lbnRzLiAgQmVjYXVzZSBoYXNoYWJsZXMgYXJlIGluaGVyaXRlZCBmcm9tCisgICAg
cGFyZW50cywgdGhpcyBwcm92aWRlcyBhc3N1cmFuY2UgdGhhdCBhL2IvZjEgaGFzIHRoZSBzYW1l
IHNldCBvZiBoYXNoYWJsZXMKKyAgICB3aGV0aGVyIGl0cyBwYXJlbnQgaXMgYiBvciBhL2IuCisK
KyAgICBUaGUgbWFpbiBncm91cCBpcyBhIHNwZWNpYWwgY2FzZS4gIEFzIGl0IGlzIHBlcm1pdHRl
ZCB0byBoYXZlIG5vIG5hbWUgb3IKKyAgICBwYXRoLCBpdCBpcyBwZXJtaXR0ZWQgdG8gdXNlIHRo
ZSBzdGFuZGFyZCBYQ09iamVjdCBoYXNoIG1lY2hhbmlzbS4gIFRoaXMKKyAgICBpcyBub3QgY29u
c2lkZXJlZCBhIHByb2JsZW0gYmVjYXVzZSB0aGVyZSBjYW4gYmUgb25seSBvbmUgbWFpbiBncm91
cC4KKyAgICAiIiIKKworICAgIGlmIHNlbGYgPT0gc2VsZi5QQlhQcm9qZWN0QW5jZXN0b3IoKS5f
cHJvcGVydGllc1snbWFpbkdyb3VwJ106CisgICAgICAjIHN1cGVyCisgICAgICByZXR1cm4gWENP
YmplY3QuSGFzaGFibGVzKHNlbGYpCisKKyAgICBoYXNoYWJsZXMgPSBbXQorCisgICAgIyBQdXQg
dGhlIG5hbWUgaW4gZmlyc3QsIGVuc3VyaW5nIHRoYXQgaWYgVGFrZU92ZXJPbmx5Q2hpbGQgY29s
bGFwc2VzCisgICAgIyBjaGlsZHJlbiBpbnRvIGEgdG9wLWxldmVsIGdyb3VwIGxpa2UgIlNvdXJj
ZSIsIHRoZSBuYW1lIGFsd2F5cyBnb2VzCisgICAgIyBpbnRvIHRoZSBsaXN0IG9mIGhhc2hhYmxl
cyB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggcGF0aCBjb21wb25lbnRzLgorICAgIGlmICduYW1l
JyBpbiBzZWxmLl9wcm9wZXJ0aWVzOgorICAgICAgIyBNYWtlIGl0IGxlc3MgbGlrZWx5IGZvciBw
ZW9wbGUgdG8gbWFuaXB1bGF0ZSBoYXNoZXMgYnkgZm9sbG93aW5nIHRoZQorICAgICAgIyBwYXR0
ZXJuIG9mIGFsd2F5cyBwdXNoaW5nIGFuIG9iamVjdCB0eXBlIHZhbHVlIG9udG8gdGhlIGxpc3Qg
Zmlyc3QuCisgICAgICBoYXNoYWJsZXMuYXBwZW5kKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fICsg
Jy5uYW1lJykKKyAgICAgIGhhc2hhYmxlcy5hcHBlbmQoc2VsZi5fcHJvcGVydGllc1snbmFtZSdd
KQorCisgICAgIyBOT1RFOiBUaGlzIHN0aWxsIGhhcyB0aGUgcHJvYmxlbSB0aGF0IGlmIGFuIGFi
c29sdXRlIHBhdGggaXMgZW5jb3VudGVyZWQsCisgICAgIyBpbmNsdWRpbmcgcGF0aHMgd2l0aCBh
IHNvdXJjZVRyZWUsIHRoZXknbGwgc3RpbGwgaW5oZXJpdCB0aGVpciBwYXJlbnRzJworICAgICMg
aGFzaGFibGVzLCBldmVuIHRob3VnaCB0aGUgcGF0aHMgYXJlbid0IHJlbGF0aXZlIHRvIHRoZWly
IHBhcmVudHMuICBUaGlzCisgICAgIyBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgbXVjaCBvZiBhIHBy
b2JsZW0gaW4gcHJhY3RpY2UuCisgICAgcGF0aCA9IHNlbGYuUGF0aEZyb21Tb3VyY2VUcmVlQW5k
UGF0aCgpCisgICAgaWYgcGF0aCAhPSBOb25lOgorICAgICAgY29tcG9uZW50cyA9IHBhdGguc3Bs
aXQocG9zaXhwYXRoLnNlcCkKKyAgICAgIGZvciBjb21wb25lbnQgaW4gY29tcG9uZW50czoKKyAg
ICAgICAgaGFzaGFibGVzLmFwcGVuZChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXyArICcucGF0aCcp
CisgICAgICAgIGhhc2hhYmxlcy5hcHBlbmQoY29tcG9uZW50KQorCisgICAgaGFzaGFibGVzLmV4
dGVuZChzZWxmLl9oYXNoYWJsZXMpCisKKyAgICByZXR1cm4gaGFzaGFibGVzCisKKyAgZGVmIENv
bXBhcmUoc2VsZiwgb3RoZXIpOgorICAgICMgQWxsb3cgY29tcGFyaXNvbiBvZiB0aGVzZSB0eXBl
cy4gIFBCWEdyb3VwIGhhcyB0aGUgaGlnaGVzdCBzb3J0IHJhbms7CisgICAgIyBQQlhWYXJpYW50
R3JvdXAgaXMgdHJlYXRlZCBhcyBlcXVhbCB0byBQQlhGaWxlUmVmZXJlbmNlLgorICAgIHZhbGlk
X2NsYXNzX3R5cGVzID0geworICAgICAgUEJYRmlsZVJlZmVyZW5jZTogJ2ZpbGUnLAorICAgICAg
UEJYR3JvdXA6ICAgICAgICAgJ2dyb3VwJywKKyAgICAgIFBCWFZhcmlhbnRHcm91cDogICdmaWxl
JywKKyAgICB9CisgICAgc2VsZl90eXBlID0gdmFsaWRfY2xhc3NfdHlwZXNbc2VsZi5fX2NsYXNz
X19dCisgICAgb3RoZXJfdHlwZSA9IHZhbGlkX2NsYXNzX3R5cGVzW290aGVyLl9fY2xhc3NfX10K
KworICAgIGlmIHNlbGZfdHlwZSA9PSBvdGhlcl90eXBlOgorICAgICAgIyBJZiB0aGUgdHdvIG9i
amVjdHMgYXJlIG9mIHRoZSBzYW1lIHNvcnQgcmFuaywgY29tcGFyZSB0aGVpciBuYW1lcy4KKyAg
ICAgIHJldHVybiBjbXAoc2VsZi5OYW1lKCksIG90aGVyLk5hbWUoKSkKKworICAgICMgT3RoZXJ3
aXNlLCBzb3J0IGdyb3VwcyBiZWZvcmUgZXZlcnl0aGluZyBlbHNlLgorICAgIGlmIHNlbGZfdHlw
ZSA9PSAnZ3JvdXAnOgorICAgICAgcmV0dXJuIC0xCisgICAgcmV0dXJuIDEKKworICBkZWYgQ29t
cGFyZVJvb3RHcm91cChzZWxmLCBvdGhlcik6CisgICAgIyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBi
ZSB1c2VkIG9ubHkgdG8gY29tcGFyZSBkaXJlY3QgY2hpbGRyZW4gb2YgdGhlCisgICAgIyBjb250
YWluaW5nIFBCWFByb2plY3QncyBtYWluR3JvdXAuICBUaGVzZSBncm91cHMgc2hvdWxkIGFwcGVh
ciBpbiB0aGUKKyAgICAjIGxpc3RlZCBvcmRlci4KKyAgICAjIFRPRE8obWFyayk6ICJCdWlsZCIg
aXMgdXNlZCBieSBneXAuZ2VuZXJhdG9yLnhjb2RlLCBwZXJoYXBzIHRoZQorICAgICMgZ2VuZXJh
dG9yIHNob3VsZCBoYXZlIGEgd2F5IG9mIGluZmx1ZW5jaW5nIHRoaXMgbGlzdCByYXRoZXIgdGhh
biBoYXZpbmcKKyAgICAjIHRvIGhhcmRjb2RlIGZvciB0aGUgZ2VuZXJhdG9yIGhlcmUuCisgICAg
b3JkZXIgPSBbJ1NvdXJjZScsICdJbnRlcm1lZGlhdGVzJywgJ1Byb2plY3RzJywgJ0ZyYW1ld29y
a3MnLCAnUHJvZHVjdHMnLAorICAgICAgICAgICAgICdCdWlsZCddCisKKyAgICAjIElmIHRoZSBn
cm91cHMgYXJlbid0IGluIHRoZSBsaXN0ZWQgb3JkZXIsIGRvIGEgbmFtZSBjb21wYXJpc29uLgor
ICAgICMgT3RoZXJ3aXNlLCBncm91cHMgaW4gdGhlIGxpc3RlZCBvcmRlciBzaG91bGQgY29tZSBi
ZWZvcmUgdGhvc2UgdGhhdAorICAgICMgYXJlbid0LgorICAgIHNlbGZfbmFtZSA9IHNlbGYuTmFt
ZSgpCisgICAgb3RoZXJfbmFtZSA9IG90aGVyLk5hbWUoKQorICAgIHNlbGZfaW4gPSBpc2luc3Rh
bmNlKHNlbGYsIFBCWEdyb3VwKSBhbmQgc2VsZl9uYW1lIGluIG9yZGVyCisgICAgb3RoZXJfaW4g
PSBpc2luc3RhbmNlKHNlbGYsIFBCWEdyb3VwKSBhbmQgb3RoZXJfbmFtZSBpbiBvcmRlcgorICAg
IGlmIG5vdCBzZWxmX2luIGFuZCBub3Qgb3RoZXJfaW46CisgICAgICByZXR1cm4gc2VsZi5Db21w
YXJlKG90aGVyKQorICAgIGlmIHNlbGZfbmFtZSBpbiBvcmRlciBhbmQgbm90IG90aGVyX25hbWUg
aW4gb3JkZXI6CisgICAgICByZXR1cm4gLTEKKyAgICBpZiBvdGhlcl9uYW1lIGluIG9yZGVyIGFu
ZCBub3Qgc2VsZl9uYW1lIGluIG9yZGVyOgorICAgICAgcmV0dXJuIDEKKworICAgICMgSWYgYm90
aCBncm91cHMgYXJlIGluIHRoZSBsaXN0ZWQgb3JkZXIsIGdvIGJ5IHRoZSBkZWZpbmVkIG9yZGVy
LgorICAgIHNlbGZfaW5kZXggPSBvcmRlci5pbmRleChzZWxmX25hbWUpCisgICAgb3RoZXJfaW5k
ZXggPSBvcmRlci5pbmRleChvdGhlcl9uYW1lKQorICAgIGlmIHNlbGZfaW5kZXggPCBvdGhlcl9p
bmRleDoKKyAgICAgIHJldHVybiAtMQorICAgIGlmIHNlbGZfaW5kZXggPiBvdGhlcl9pbmRleDoK
KyAgICAgIHJldHVybiAxCisgICAgcmV0dXJuIDAKKworICBkZWYgUGF0aEZyb21Tb3VyY2VUcmVl
QW5kUGF0aChzZWxmKToKKyAgICAjIFR1cm4gdGhlIG9iamVjdCdzIHNvdXJjZVRyZWUgYW5kIHBh
dGggcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIGZsYXQKKyAgICAjIHN0cmluZyBvZiBhIGZvcm0g
Y29tcGFyYWJsZSB0byB0aGUgcGF0aCBwYXJhbWV0ZXIuICBJZiB0aGVyZSdzIGEKKyAgICAjIHNv
dXJjZVRyZWUgcHJvcGVydHkgb3RoZXIgdGhhbiAiPGdyb3VwPiIsIHdyYXAgaXQgaW4gJCguLi4p
IGZvciB0aGUKKyAgICAjIGNvbXBhcmlzb24uCisgICAgY29tcG9uZW50cyA9IFtdCisgICAgaWYg
c2VsZi5fcHJvcGVydGllc1snc291cmNlVHJlZSddICE9ICc8Z3JvdXA+JzoKKyAgICAgIGNvbXBv
bmVudHMuYXBwZW5kKCckKCcgKyBzZWxmLl9wcm9wZXJ0aWVzWydzb3VyY2VUcmVlJ10gKyAnKScp
CisgICAgaWYgJ3BhdGgnIGluIHNlbGYuX3Byb3BlcnRpZXM6CisgICAgICBjb21wb25lbnRzLmFw
cGVuZChzZWxmLl9wcm9wZXJ0aWVzWydwYXRoJ10pCisKKyAgICBpZiBsZW4oY29tcG9uZW50cykg
PiAwOgorICAgICAgcmV0dXJuIHBvc2l4cGF0aC5qb2luKCpjb21wb25lbnRzKQorCisgICAgcmV0
dXJuIE5vbmUKKworICBkZWYgRnVsbFBhdGgoc2VsZik6CisgICAgIyBSZXR1cm5zIGEgZnVsbCBw
YXRoIHRvIHNlbGYgcmVsYXRpdmUgdG8gdGhlIHByb2plY3QgZmlsZSwgb3IgcmVsYXRpdmUKKyAg
ICAjIHRvIHNvbWUgb3RoZXIgc291cmNlIHRyZWUuICBTdGFydCB3aXRoIHNlbGYsIGFuZCB3YWxr
IHVwIHRoZSBjaGFpbiBvZgorICAgICMgcGFyZW50cyBwcmVwZW5kaW5nIHRoZWlyIHBhdGhzLCBp
ZiBhbnksIHVudGlsIG5vIG1vcmUgcGFyZW50cyBhcmUKKyAgICAjIGF2YWlsYWJsZSAocHJvamVj
dC1yZWxhdGl2ZSBwYXRoKSBvciB1bnRpbCBhIHBhdGggcmVsYXRpdmUgdG8gc29tZQorICAgICMg
c291cmNlIHRyZWUgaXMgZm91bmQuCisgICAgeGNoZSA9IHNlbGYKKyAgICBwYXRoID0gTm9uZQor
ICAgIHdoaWxlIGlzaW5zdGFuY2UoeGNoZSwgWENIaWVyYXJjaGljYWxFbGVtZW50KSBhbmQgXAor
ICAgICAgICAgIChwYXRoID09IE5vbmUgb3IgXAorICAgICAgICAgICAobm90IHBhdGguc3RhcnRz
d2l0aCgnLycpIGFuZCBub3QgcGF0aC5zdGFydHN3aXRoKCckJykpKToKKyAgICAgIHRoaXNfcGF0
aCA9IHhjaGUuUGF0aEZyb21Tb3VyY2VUcmVlQW5kUGF0aCgpCisgICAgICBpZiB0aGlzX3BhdGgg
IT0gTm9uZSBhbmQgcGF0aCAhPSBOb25lOgorICAgICAgICBwYXRoID0gcG9zaXhwYXRoLmpvaW4o
dGhpc19wYXRoLCBwYXRoKQorICAgICAgZWxpZiB0aGlzX3BhdGggIT0gTm9uZToKKyAgICAgICAg
cGF0aCA9IHRoaXNfcGF0aAorICAgICAgeGNoZSA9IHhjaGUucGFyZW50CisKKyAgICByZXR1cm4g
cGF0aAorCisKK2NsYXNzIFBCWEdyb3VwKFhDSGllcmFyY2hpY2FsRWxlbWVudCk6CisgICIiIgor
ICBBdHRyaWJ1dGVzOgorICAgIF9jaGlsZHJlbl9ieV9wYXRoOiBNYXBzIHBhdGhuYW1lcyBvZiBj
aGlsZHJlbiBvZiB0aGlzIFBCWEdyb3VwIHRvIHRoZQorICAgICAgYWN0dWFsIGNoaWxkIFhDSGll
cmFyY2hpY2FsRWxlbWVudCBvYmplY3RzLgorICAgIF92YXJpYW50X2NoaWxkcmVuX2J5X25hbWVf
YW5kX3BhdGg6IE1hcHMgKG5hbWUsIHBhdGgpIHR1cGxlcyBvZgorICAgICAgUEJYVmFyaWFudEdy
b3VwIGNoaWxkcmVuIHRvIHRoZSBhY3R1YWwgY2hpbGQgUEJYVmFyaWFudEdyb3VwIG9iamVjdHMu
CisgICIiIgorCisgIF9zY2hlbWEgPSBYQ0hpZXJhcmNoaWNhbEVsZW1lbnQuX3NjaGVtYS5jb3B5
KCkKKyAgX3NjaGVtYS51cGRhdGUoeworICAgICdjaGlsZHJlbic6IFsxLCBYQ0hpZXJhcmNoaWNh
bEVsZW1lbnQsIDEsIDEsIFtdXSwKKyAgICAnbmFtZSc6ICAgICBbMCwgc3RyLCAgICAgICAgICAg
ICAgICAgICAwLCAwXSwKKyAgICAncGF0aCc6ICAgICBbMCwgc3RyLCAgICAgICAgICAgICAgICAg
ICAwLCAwXSwKKyAgfSkKKworICBkZWYgX19pbml0X18oc2VsZiwgcHJvcGVydGllcz1Ob25lLCBp
ZD1Ob25lLCBwYXJlbnQ9Tm9uZSk6CisgICAgIyBzdXBlcgorICAgIFhDSGllcmFyY2hpY2FsRWxl
bWVudC5fX2luaXRfXyhzZWxmLCBwcm9wZXJ0aWVzLCBpZCwgcGFyZW50KQorICAgIHNlbGYuX2No
aWxkcmVuX2J5X3BhdGggPSB7fQorICAgIHNlbGYuX3ZhcmlhbnRfY2hpbGRyZW5fYnlfbmFtZV9h
bmRfcGF0aCA9IHt9CisgICAgZm9yIGNoaWxkIGluIHNlbGYuX3Byb3BlcnRpZXMuZ2V0KCdjaGls
ZHJlbicsIFtdKToKKyAgICAgIHNlbGYuX0FkZENoaWxkVG9EaWN0cyhjaGlsZCkKKworICBkZWYg
X0FkZENoaWxkVG9EaWN0cyhzZWxmLCBjaGlsZCk6CisgICAgIyBTZXRzIHVwIHRoaXMgUEJYR3Jv
dXAgb2JqZWN0J3MgZGljdHMgdG8gcmVmZXJlbmNlIHRoZSBjaGlsZCBwcm9wZXJseS4KKyAgICBj
aGlsZF9wYXRoID0gY2hpbGQuUGF0aEZyb21Tb3VyY2VUcmVlQW5kUGF0aCgpCisgICAgaWYgY2hp
bGRfcGF0aDoKKyAgICAgIGlmIGNoaWxkX3BhdGggaW4gc2VsZi5fY2hpbGRyZW5fYnlfcGF0aDoK
KyAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgJ0ZvdW5kIG11bHRpcGxlIGNoaWxkcmVuIHdpdGgg
cGF0aCAnICsgY2hpbGRfcGF0aAorICAgICAgc2VsZi5fY2hpbGRyZW5fYnlfcGF0aFtjaGlsZF9w
YXRoXSA9IGNoaWxkCisKKyAgICBpZiBpc2luc3RhbmNlKGNoaWxkLCBQQlhWYXJpYW50R3JvdXAp
OgorICAgICAgY2hpbGRfbmFtZSA9IGNoaWxkLl9wcm9wZXJ0aWVzLmdldCgnbmFtZScsIE5vbmUp
CisgICAgICBrZXkgPSAoY2hpbGRfbmFtZSwgY2hpbGRfcGF0aCkKKyAgICAgIGlmIGtleSBpbiBz
ZWxmLl92YXJpYW50X2NoaWxkcmVuX2J5X25hbWVfYW5kX3BhdGg6CisgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IsICdGb3VuZCBtdWx0aXBsZSBQQlhWYXJpYW50R3JvdXAgY2hpbGRyZW4gd2l0aCAn
ICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAnbmFtZSAnICsgc3RyKGNoaWxkX25hbWUp
ICsgJyBhbmQgcGF0aCAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoY2hpbGRf
cGF0aCkKKyAgICAgIHNlbGYuX3ZhcmlhbnRfY2hpbGRyZW5fYnlfbmFtZV9hbmRfcGF0aFtrZXld
ID0gY2hpbGQKKworICBkZWYgQXBwZW5kQ2hpbGQoc2VsZiwgY2hpbGQpOgorICAgICMgQ2FsbGVy
cyBzaG91bGQgdXNlIHRoaXMgaW5zdGVhZCBvZiBjYWxsaW5nCisgICAgIyBBcHBlbmRQcm9wZXJ0
eSgnY2hpbGRyZW4nLCBjaGlsZCkgZGlyZWN0bHkgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uCisgICAg
IyBtYWludGFpbnMgdGhlIGdyb3VwJ3MgZGljdHMuCisgICAgc2VsZi5BcHBlbmRQcm9wZXJ0eSgn
Y2hpbGRyZW4nLCBjaGlsZCkKKyAgICBzZWxmLl9BZGRDaGlsZFRvRGljdHMoY2hpbGQpCisKKyAg
ZGVmIEdldENoaWxkQnlOYW1lKHNlbGYsIG5hbWUpOgorICAgICMgVGhpcyBpcyBub3QgY3VycmVu
dGx5IG9wdGltaXplZCB3aXRoIGEgZGljdCBhcyBHZXRDaGlsZEJ5UGF0aCBpcyBiZWNhdXNlCisg
ICAgIyBpdCBoYXMgZmV3IGNhbGxlcnMuICBNb3N0IGNhbGxlcnMgcHJvYmFibHkgd2FudCBHZXRD
aGlsZEJ5UGF0aC4gIFRoaXMKKyAgICAjIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZnVsIHRvIGdldCBj
aGlsZHJlbiB0aGF0IGhhdmUgbmFtZXMgYnV0IG5vIHBhdGhzLAorICAgICMgd2hpY2ggaXMgcmFy
ZS4gIFRoZSBjaGlsZHJlbiBvZiB0aGUgbWFpbiBncm91cCAoIlNvdXJjZSIsICJQcm9kdWN0cyIs
CisgICAgIyBldGMuKSBpcyBwcmV0dHkgbXVjaCB0aGUgb25seSBjYXNlIHdoZXJlIHRoaXMgbGlr
ZWx5IHRvIGNvbWUgdXAuCisgICAgIworICAgICMgVE9ETyhtYXJrKTogTWF5YmUgdGhpcyBzaG91
bGQgcmFpc2UgYW4gZXJyb3IgaWYgbW9yZSB0aGFuIG9uZSBjaGlsZCBpcworICAgICMgcHJlc2Vu
dCB3aXRoIHRoZSBzYW1lIG5hbWUuCisgICAgaWYgbm90ICdjaGlsZHJlbicgaW4gc2VsZi5fcHJv
cGVydGllczoKKyAgICAgIHJldHVybiBOb25lCisKKyAgICBmb3IgY2hpbGQgaW4gc2VsZi5fcHJv
cGVydGllc1snY2hpbGRyZW4nXToKKyAgICAgIGlmIGNoaWxkLk5hbWUoKSA9PSBuYW1lOgorICAg
ICAgICByZXR1cm4gY2hpbGQKKworICAgIHJldHVybiBOb25lCisKKyAgZGVmIEdldENoaWxkQnlQ
YXRoKHNlbGYsIHBhdGgpOgorICAgIGlmIG5vdCBwYXRoOgorICAgICAgcmV0dXJuIE5vbmUKKwor
ICAgIGlmIHBhdGggaW4gc2VsZi5fY2hpbGRyZW5fYnlfcGF0aDoKKyAgICAgIHJldHVybiBzZWxm
Ll9jaGlsZHJlbl9ieV9wYXRoW3BhdGhdCisKKyAgICByZXR1cm4gTm9uZQorCisgIGRlZiBHZXRD
aGlsZEJ5UmVtb3RlT2JqZWN0KHNlbGYsIHJlbW90ZV9vYmplY3QpOgorICAgICMgVGhpcyBtZXRo
b2QgaXMgYSBsaXR0bGUgYml0IGVzb3RlcmljLiAgR2l2ZW4gYSByZW1vdGVfb2JqZWN0LCB3aGlj
aAorICAgICMgc2hvdWxkIGJlIGEgUEJYRmlsZVJlZmVyZW5jZSBpbiBhbm90aGVyIHByb2plY3Qg
ZmlsZSwgdGhpcyBtZXRob2Qgd2lsbAorICAgICMgcmV0dXJuIHRoaXMgZ3JvdXAncyBQQlhSZWZl
cmVuY2VQcm94eSBvYmplY3Qgc2VydmluZyBhcyBhIGxvY2FsIHByb3h5CisgICAgIyBmb3IgdGhl
IHJlbW90ZSBQQlhGaWxlUmVmZXJlbmNlLgorICAgICMKKyAgICAjIFRoaXMgZnVuY3Rpb24gbWln
aHQgYmVuZWZpdCBmcm9tIGEgZGljdCBvcHRpbWl6YXRpb24gYXMgR2V0Q2hpbGRCeVBhdGgKKyAg
ICAjIGZvciBzb21lIHdvcmtsb2FkcywgYnV0IHByb2ZpbGluZyBzaG93cyB0aGF0IGl0J3Mgbm90
IGN1cnJlbnRseSBhCisgICAgIyBwcm9ibGVtLgorICAgIGlmIG5vdCAnY2hpbGRyZW4nIGluIHNl
bGYuX3Byb3BlcnRpZXM6CisgICAgICByZXR1cm4gTm9uZQorCisgICAgZm9yIGNoaWxkIGluIHNl
bGYuX3Byb3BlcnRpZXNbJ2NoaWxkcmVuJ106CisgICAgICBpZiBub3QgaXNpbnN0YW5jZShjaGls
ZCwgUEJYUmVmZXJlbmNlUHJveHkpOgorICAgICAgICBjb250aW51ZQorCisgICAgICBjb250YWlu
ZXJfcHJveHkgPSBjaGlsZC5fcHJvcGVydGllc1sncmVtb3RlUmVmJ10KKyAgICAgIGlmIGNvbnRh
aW5lcl9wcm94eS5fcHJvcGVydGllc1sncmVtb3RlR2xvYmFsSURTdHJpbmcnXSA9PSByZW1vdGVf
b2JqZWN0OgorICAgICAgICByZXR1cm4gY2hpbGQKKworICAgIHJldHVybiBOb25lCisKKyAgZGVm
IEFkZE9yR2V0RmlsZUJ5UGF0aChzZWxmLCBwYXRoLCBoaWVyYXJjaGljYWwpOgorICAgICIiIlJl
dHVybnMgYW4gZXhpc3Rpbmcgb3IgbmV3IGZpbGUgcmVmZXJlbmNlIGNvcnJlc3BvbmRpbmcgdG8g
cGF0aC4KKworICAgIElmIGhpZXJhcmNoaWNhbCBpcyBUcnVlLCB0aGlzIG1ldGhvZCB3aWxsIGNy
ZWF0ZSBvciB1c2UgdGhlIG5lY2Vzc2FyeQorICAgIGhpZXJhcmNoaWNhbCBncm91cCBzdHJ1Y3R1
cmUgY29ycmVzcG9uZGluZyB0byBwYXRoLiAgT3RoZXJ3aXNlLCBpdCB3aWxsCisgICAgbG9vayBp
biBhbmQgY3JlYXRlIGFuIGl0ZW0gaW4gdGhlIGN1cnJlbnQgZ3JvdXAgb25seS4KKworICAgIElm
IGFuIGV4aXN0aW5nIG1hdGNoaW5nIHJlZmVyZW5jZSBpcyBmb3VuZCwgaXQgaXMgcmV0dXJuZWQs
IG90aGVyd2lzZSwgYQorICAgIG5ldyBvbmUgd2lsbCBiZSBjcmVhdGVkLCBhZGRlZCB0byB0aGUg
Y29ycmVjdCBncm91cCwgYW5kIHJldHVybmVkLgorCisgICAgSWYgcGF0aCBpZGVudGlmaWVzIGEg
ZGlyZWN0b3J5IGJ5IHZpcnR1ZSBvZiBjYXJyeWluZyBhIHRyYWlsaW5nIHNsYXNoLAorICAgIHRo
aXMgbWV0aG9kIHJldHVybnMgYSBQQlhGaWxlUmVmZXJlbmNlIG9mICJmb2xkZXIiIHR5cGUuICBJ
ZiBwYXRoCisgICAgaWRlbnRpZmllcyBhIHZhcmlhbnQsIGJ5IHZpcnR1ZSBvZiBpdCBpZGVudGlm
eWluZyBhIGZpbGUgaW5zaWRlIGEgZGlyZWN0b3J5CisgICAgd2l0aCBhbiAiLmxwcm9qIiBleHRl
bnNpb24sIHRoaXMgbWV0aG9kIHJldHVybnMgYSBQQlhWYXJpYW50R3JvdXAKKyAgICBjb250YWlu
aW5nIHRoZSB2YXJpYW50IG5hbWVkIGJ5IHBhdGgsIGFuZCBwb3NzaWJseSBvdGhlciB2YXJpYW50
cy4gIEZvcgorICAgIGFsbCBvdGhlciBwYXRocywgYSAibm9ybWFsIiBQQlhGaWxlUmVmZXJlbmNl
IHdpbGwgYmUgcmV0dXJuZWQuCisgICAgIiIiCisKKyAgICAjIEFkZGluZyBvciBnZXR0aW5nIGEg
ZGlyZWN0b3J5PyAgRGlyZWN0b3JpZXMgZW5kIHdpdGggYSB0cmFpbGluZyBzbGFzaC4KKyAgICBp
c19kaXIgPSBGYWxzZQorICAgIGlmIHBhdGguZW5kc3dpdGgoJy8nKToKKyAgICAgIGlzX2RpciA9
IFRydWUKKyAgICBub3JtcGF0aCA9IHBvc2l4cGF0aC5ub3JtcGF0aChwYXRoKQorICAgIGlmIGlz
X2RpcjoKKyAgICAgIG5vcm1wYXRoID0gcGF0aCArICcvJworICAgIGVsc2U6CisgICAgICBub3Jt
cGF0aCA9IHBhdGgKKworICAgICMgQWRkaW5nIG9yIGdldHRpbmcgYSB2YXJpYW50PyAgVmFyaWFu
dHMgYXJlIGZpbGVzIGluc2lkZSBkaXJlY3RvcmllcworICAgICMgd2l0aCBhbiAiLmxwcm9qIiBl
eHRlbnNpb24uICBYY29kZSB1c2VzIHZhcmlhbnRzIGZvciBsb2NhbGl6YXRpb24uICBGb3IKKyAg
ICAjIGEgdmFyaWFudCBwYXRoL3RvL0xhbmd1YWdlLmxwcm9qL01haW5NZW51Lm5pYiwgcHV0IGEg
dmFyaWFudCBncm91cCBuYW1lZAorICAgICMgTWFpbk1lbnUubmliIGluc2lkZSBwYXRoL3RvLCBh
bmQgZ2l2ZSBpdCBhIHZhcmlhbnQgbmFtZWQgTGFuZ3VhZ2UuICBJbgorICAgICMgdGhpcyBleGFt
cGxlLCBncmFuZHBhcmVudCB3b3VsZCBiZSBzZXQgdG8gcGF0aC90byBhbmQgcGFyZW50X3Jvb3Qg
d291bGQKKyAgICAjIGJlIHNldCB0byBMYW5ndWFnZS4KKyAgICB2YXJpYW50X25hbWUgPSBOb25l
CisgICAgcGFyZW50ID0gcG9zaXhwYXRoLmRpcm5hbWUocGF0aCkKKyAgICBncmFuZHBhcmVudCA9
IHBvc2l4cGF0aC5kaXJuYW1lKHBhcmVudCkKKyAgICBwYXJlbnRfYmFzZW5hbWUgPSBwb3NpeHBh
dGguYmFzZW5hbWUocGFyZW50KQorICAgIChwYXJlbnRfcm9vdCwgcGFyZW50X2V4dCkgPSBwb3Np
eHBhdGguc3BsaXRleHQocGFyZW50X2Jhc2VuYW1lKQorICAgIGlmIHBhcmVudF9leHQgPT0gJy5s
cHJvaic6CisgICAgICB2YXJpYW50X25hbWUgPSBwYXJlbnRfcm9vdAorICAgIGlmIGdyYW5kcGFy
ZW50ID09ICcnOgorICAgICAgZ3JhbmRwYXJlbnQgPSBOb25lCisKKyAgICAjIFB1dHRpbmcgYSBk
aXJlY3RvcnkgaW5zaWRlIGEgdmFyaWFudCBncm91cCBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRl
ZC4KKyAgICBhc3NlcnQgbm90IGlzX2RpciBvciB2YXJpYW50X25hbWUgPT0gTm9uZQorCisgICAg
cGF0aF9zcGxpdCA9IHBhdGguc3BsaXQocG9zaXhwYXRoLnNlcCkKKyAgICBpZiBsZW4ocGF0aF9z
cGxpdCkgPT0gMSBvciBcCisgICAgICAgKChpc19kaXIgb3IgdmFyaWFudF9uYW1lICE9IE5vbmUp
IGFuZCBsZW4ocGF0aF9zcGxpdCkgPT0gMikgb3IgXAorICAgICAgIG5vdCBoaWVyYXJjaGljYWw6
CisgICAgICAjIFRoZSBQQlhGaWxlUmVmZXJlbmNlIG9yIFBCWFZhcmlhbnRHcm91cCB3aWxsIGJl
IGFkZGVkIHRvIG9yIGdvdHRlbiBmcm9tCisgICAgICAjIHRoaXMgUEJYR3JvdXAsIG5vIHJlY3Vy
c2lvbiBuZWNlc3NhcnkuCisgICAgICBpZiB2YXJpYW50X25hbWUgPT0gTm9uZToKKyAgICAgICAg
IyBBZGQgb3IgZ2V0IGEgUEJYRmlsZVJlZmVyZW5jZS4KKyAgICAgICAgZmlsZV9yZWYgPSBzZWxm
LkdldENoaWxkQnlQYXRoKG5vcm1wYXRoKQorICAgICAgICBpZiBmaWxlX3JlZiAhPSBOb25lOgor
ICAgICAgICAgIGFzc2VydCBmaWxlX3JlZi5fX2NsYXNzX18gPT0gUEJYRmlsZVJlZmVyZW5jZQor
ICAgICAgICBlbHNlOgorICAgICAgICAgIGZpbGVfcmVmID0gUEJYRmlsZVJlZmVyZW5jZSh7J3Bh
dGgnOiBwYXRofSkKKyAgICAgICAgICBzZWxmLkFwcGVuZENoaWxkKGZpbGVfcmVmKQorICAgICAg
ZWxzZToKKyAgICAgICAgIyBBZGQgb3IgZ2V0IGEgUEJYVmFyaWFudEdyb3VwLiAgVGhlIHZhcmlh
bnQgZ3JvdXAgbmFtZSBpcyB0aGUgc2FtZQorICAgICAgICAjIGFzIHRoZSBiYXNlbmFtZSAoTWFp
bk1lbnUubmliIGluIHRoZSBleGFtcGxlIGFib3ZlKS4gIGdyYW5kcGFyZW50CisgICAgICAgICMg
c3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSB2YXJpYW50IGdyb3VwIGl0c2VsZiwgYW5kIHBhdGhf
c3BsaXRbLTI6XQorICAgICAgICAjIGlzIHRoZSBwYXRoIG9mIHRoZSBzcGVjaWZpYyB2YXJpYW50
IHJlbGF0aXZlIHRvIGl0cyBncm91cC4KKyAgICAgICAgdmFyaWFudF9ncm91cF9uYW1lID0gcG9z
aXhwYXRoLmJhc2VuYW1lKHBhdGgpCisgICAgICAgIHZhcmlhbnRfZ3JvdXBfcmVmID0gc2VsZi5B
ZGRPckdldFZhcmlhbnRHcm91cEJ5TmFtZUFuZFBhdGgoCisgICAgICAgICAgICB2YXJpYW50X2dy
b3VwX25hbWUsIGdyYW5kcGFyZW50KQorICAgICAgICB2YXJpYW50X3BhdGggPSBwb3NpeHBhdGgu
c2VwLmpvaW4ocGF0aF9zcGxpdFstMjpdKQorICAgICAgICB2YXJpYW50X3JlZiA9IHZhcmlhbnRf
Z3JvdXBfcmVmLkdldENoaWxkQnlQYXRoKHZhcmlhbnRfcGF0aCkKKyAgICAgICAgaWYgdmFyaWFu
dF9yZWYgIT0gTm9uZToKKyAgICAgICAgICBhc3NlcnQgdmFyaWFudF9yZWYuX19jbGFzc19fID09
IFBCWEZpbGVSZWZlcmVuY2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICB2YXJpYW50X3JlZiA9
IFBCWEZpbGVSZWZlcmVuY2UoeyduYW1lJzogdmFyaWFudF9uYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiB2YXJpYW50X3BhdGh9KQorICAgICAg
ICAgIHZhcmlhbnRfZ3JvdXBfcmVmLkFwcGVuZENoaWxkKHZhcmlhbnRfcmVmKQorICAgICAgICAj
IFRoZSBjYWxsZXIgaXMgaW50ZXJlc3RlZCBpbiB0aGUgdmFyaWFudCBncm91cCwgbm90IHRoZSBz
cGVjaWZpYworICAgICAgICAjIHZhcmlhbnQgZmlsZS4KKyAgICAgICAgZmlsZV9yZWYgPSB2YXJp
YW50X2dyb3VwX3JlZgorICAgICAgcmV0dXJuIGZpbGVfcmVmCisgICAgZWxzZToKKyAgICAgICMg
SGllcmFyY2hpY2FsIHJlY3Vyc2lvbi4gIEFkZCBvciBnZXQgYSBQQlhHcm91cCBjb3JyZXNwb25k
aW5nIHRvIHRoZQorICAgICAgIyBvdXRlcm1vc3QgcGF0aCBjb21wb25lbnQsIGFuZCB0aGVuIHJl
Y3Vyc2UgaW50byBpdCwgY2hvcHBpbmcgb2ZmIHRoYXQKKyAgICAgICMgcGF0aCBjb21wb25lbnQu
CisgICAgICBuZXh0X2RpciA9IHBhdGhfc3BsaXRbMF0KKyAgICAgIGdyb3VwX3JlZiA9IHNlbGYu
R2V0Q2hpbGRCeVBhdGgobmV4dF9kaXIpCisgICAgICBpZiBncm91cF9yZWYgIT0gTm9uZToKKyAg
ICAgICAgYXNzZXJ0IGdyb3VwX3JlZi5fX2NsYXNzX18gPT0gUEJYR3JvdXAKKyAgICAgIGVsc2U6
CisgICAgICAgIGdyb3VwX3JlZiA9IFBCWEdyb3VwKHsncGF0aCc6IG5leHRfZGlyfSkKKyAgICAg
ICAgc2VsZi5BcHBlbmRDaGlsZChncm91cF9yZWYpCisgICAgICByZXR1cm4gZ3JvdXBfcmVmLkFk
ZE9yR2V0RmlsZUJ5UGF0aChwb3NpeHBhdGguc2VwLmpvaW4ocGF0aF9zcGxpdFsxOl0pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGllcmFyY2hpY2FsKQorCisg
IGRlZiBBZGRPckdldFZhcmlhbnRHcm91cEJ5TmFtZUFuZFBhdGgoc2VsZiwgbmFtZSwgcGF0aCk6
CisgICAgIiIiUmV0dXJucyBhbiBleGlzdGluZyBvciBuZXcgUEJYVmFyaWFudEdyb3VwIGZvciBu
YW1lIGFuZCBwYXRoLgorCisgICAgSWYgYSBQQlhWYXJpYW50R3JvdXAgaWRlbnRpZmllZCBieSB0
aGUgbmFtZSBhbmQgcGF0aCBhcmd1bWVudHMgaXMgYWxyZWFkeQorICAgIHByZXNlbnQgYXMgYSBj
aGlsZCBvZiB0aGlzIG9iamVjdCwgaXQgaXMgcmV0dXJuZWQuICBPdGhlcndpc2UsIGEgbmV3Cisg
ICAgUEJYVmFyaWFudEdyb3VwIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVydGllcyBpcyBjcmVhdGVk
LCBhZGRlZCBhcyBhIGNoaWxkLAorICAgIGFuZCByZXR1cm5lZC4KKworICAgIFRoaXMgbWV0aG9k
IHdpbGwgZ2VuZXJhbGx5IGJlIGNhbGxlZCBieSBBZGRPckdldEZpbGVCeVBhdGgsIHdoaWNoIGtu
b3dzCisgICAgd2hlbiB0byBjcmVhdGUgYSB2YXJpYW50IGdyb3VwIGJhc2VkIG9uIHRoZSBzdHJ1
Y3R1cmUgb2YgdGhlIHBhdGhuYW1lcworICAgIHBhc3NlZCB0byBpdC4KKyAgICAiIiIKKworICAg
IGtleSA9IChuYW1lLCBwYXRoKQorICAgIGlmIGtleSBpbiBzZWxmLl92YXJpYW50X2NoaWxkcmVu
X2J5X25hbWVfYW5kX3BhdGg6CisgICAgICB2YXJpYW50X2dyb3VwX3JlZiA9IHNlbGYuX3Zhcmlh
bnRfY2hpbGRyZW5fYnlfbmFtZV9hbmRfcGF0aFtrZXldCisgICAgICBhc3NlcnQgdmFyaWFudF9n
cm91cF9yZWYuX19jbGFzc19fID09IFBCWFZhcmlhbnRHcm91cAorICAgICAgcmV0dXJuIHZhcmlh
bnRfZ3JvdXBfcmVmCisKKyAgICB2YXJpYW50X2dyb3VwX3Byb3BlcnRpZXMgPSB7J25hbWUnOiBu
YW1lfQorICAgIGlmIHBhdGggIT0gTm9uZToKKyAgICAgIHZhcmlhbnRfZ3JvdXBfcHJvcGVydGll
c1sncGF0aCddID0gcGF0aAorICAgIHZhcmlhbnRfZ3JvdXBfcmVmID0gUEJYVmFyaWFudEdyb3Vw
KHZhcmlhbnRfZ3JvdXBfcHJvcGVydGllcykKKyAgICBzZWxmLkFwcGVuZENoaWxkKHZhcmlhbnRf
Z3JvdXBfcmVmKQorCisgICAgcmV0dXJuIHZhcmlhbnRfZ3JvdXBfcmVmCisKKyAgZGVmIFRha2VP
dmVyT25seUNoaWxkKHNlbGYsIHJlY3Vyc2U9RmFsc2UpOgorICAgICIiIklmIHRoaXMgUEJYR3Jv
dXAgaGFzIG9ubHkgb25lIGNoaWxkIGFuZCBpdCdzIGFsc28gYSBQQlhHcm91cCwgdGFrZQorICAg
IGl0IG92ZXIgYnkgbWFraW5nIGFsbCBvZiBpdHMgY2hpbGRyZW4gdGhpcyBvYmplY3QncyBjaGls
ZHJlbi4KKworICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjb250aW51ZSB0byB0YWtlIG92ZXIgb25s
eSBjaGlsZHJlbiB3aGVuIHRob3NlIGNoaWxkcmVuCisgICAgYXJlIGdyb3Vwcy4gIElmIHRoZXJl
IGFyZSB0aHJlZSBQQlhHcm91cHMgcmVwcmVzZW50aW5nIGEsIGIsIGFuZCBjLCB3aXRoCisgICAg
YyBpbnNpZGUgYiBhbmQgYiBpbnNpZGUgYSwgYW5kIGEgYW5kIGIgaGF2ZSBubyBvdGhlciBjaGls
ZHJlbiwgdGhpcyB3aWxsCisgICAgcmVzdWx0IGluIGEgdGFraW5nIG92ZXIgYm90aCBiIGFuZCBj
LCBmb3JtaW5nIGEgUEJYR3JvdXAgZm9yIGEvYi9jLgorCisgICAgSWYgcmVjdXJzZSBpcyBUcnVl
LCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmVjdXJzZSBpbnRvIGNoaWxkcmVuIGFuZCBhc2sgdGhlbQor
ICAgIHRvIGNvbGxhcHNlIHRoZW1zZWx2ZXMgYnkgdGFraW5nIG92ZXIgb25seSBjaGlsZHJlbiBh
cyB3ZWxsLiAgQXNzdW1pbmcKKyAgICBhbiBleGFtcGxlIGhpZXJhcmNoeSB3aXRoIGZpbGVzIGF0
IGEvYi9jL2QxLCBhL2IvYy9kMiwgYW5kIGEvYi9jL2QzL2UvZgorICAgIChkMSwgZDIsIGFuZCBm
IGFyZSBmaWxlcywgdGhlIHJlc3QgYXJlIGdyb3VwcyksIHJlY3Vyc2lvbiB3aWxsIHJlc3VsdCBp
bgorICAgIGEgZ3JvdXAgZm9yIGEvYi9jIGNvbnRhaW5pbmcgYSBncm91cCBmb3IgZDMvZS4KKyAg
ICAiIiIKKworICAgICMgQXQgdGhpcyBzdGFnZSwgY2hlY2sgdGhhdCBjaGlsZCBjbGFzcyB0eXBl
cyBhcmUgUEJYR3JvdXAgZXhhY3RseSwKKyAgICAjIGluc3RlYWQgb2YgdXNpbmcgaXNpbnN0YW5j
ZS4gIFRoZSBvbmx5IHN1YmNsYXNzIG9mIFBCWEdyb3VwLAorICAgICMgUEJYVmFyaWFudEdyb3Vw
LCBzaG91bGQgbm90IHBhcnRpY2lwYXRlIGluIHJlcGFyZW50aW5nIGluIHRoZSBzYW1lIHdheToK
KyAgICAjIHJlcGFyZW50aW5nIGJ5IG1lcmdpbmcgZGlmZmVyZW50IG9iamVjdCB0eXBlcyB3b3Vs
ZCBiZSB3cm9uZy4KKyAgICB3aGlsZSBsZW4oc2VsZi5fcHJvcGVydGllc1snY2hpbGRyZW4nXSkg
PT0gMSBhbmQgXAorICAgICAgICAgIHNlbGYuX3Byb3BlcnRpZXNbJ2NoaWxkcmVuJ11bMF0uX19j
bGFzc19fID09IFBCWEdyb3VwOgorICAgICAgIyBMb29wIHRvIHRha2Ugb3ZlciB0aGUgaW5uZXJt
b3N0IG9ubHktY2hpbGQgZ3JvdXAgcG9zc2libGUuCisKKyAgICAgIGNoaWxkID0gc2VsZi5fcHJv
cGVydGllc1snY2hpbGRyZW4nXVswXQorCisgICAgICAjIEFzc3VtZSB0aGUgY2hpbGQncyBwcm9w
ZXJ0aWVzLCBpbmNsdWRpbmcgaXRzIGNoaWxkcmVuLiAgU2F2ZSBhIGNvcHkKKyAgICAgICMgb2Yg
dGhpcyBvYmplY3QncyBvbGQgcHJvcGVydGllcywgYmVjYXVzZSB0aGV5J2xsIHN0aWxsIGJlIG5l
ZWRlZC4KKyAgICAgICMgVGhpcyBvYmplY3QgcmV0YWlucyBpdHMgZXhpc3RpbmcgaWQgYW5kIHBh
cmVudCBhdHRyaWJ1dGVzLgorICAgICAgb2xkX3Byb3BlcnRpZXMgPSBzZWxmLl9wcm9wZXJ0aWVz
CisgICAgICBzZWxmLl9wcm9wZXJ0aWVzID0gY2hpbGQuX3Byb3BlcnRpZXMKKyAgICAgIHNlbGYu
X2NoaWxkcmVuX2J5X3BhdGggPSBjaGlsZC5fY2hpbGRyZW5fYnlfcGF0aAorCisgICAgICBpZiBu
b3QgJ3NvdXJjZVRyZWUnIGluIHNlbGYuX3Byb3BlcnRpZXMgb3IgXAorICAgICAgICAgc2VsZi5f
cHJvcGVydGllc1snc291cmNlVHJlZSddID09ICc8Z3JvdXA+JzoKKyAgICAgICAgIyBUaGUgY2hp
bGQgd2FzIHJlbGF0aXZlIHRvIGl0cyBwYXJlbnQuICBGaXggdXAgdGhlIHBhdGguICBOb3RlIHRo
YXQKKyAgICAgICAgIyBjaGlsZHJlbiB3aXRoIGEgc291cmNlVHJlZSBvdGhlciB0aGFuICI8Z3Jv
dXA+IiBhcmUgbm90IHJlbGF0aXZlIHRvCisgICAgICAgICMgdGhlaXIgcGFyZW50cywgc28gbm8g
cGF0aCBmaXgtdXAgaXMgbmVlZGVkIGluIHRoYXQgY2FzZS4KKyAgICAgICAgaWYgJ3BhdGgnIGlu
IG9sZF9wcm9wZXJ0aWVzOgorICAgICAgICAgIGlmICdwYXRoJyBpbiBzZWxmLl9wcm9wZXJ0aWVz
OgorICAgICAgICAgICAgIyBCb3RoIHRoZSBvcmlnaW5hbCBwYXJlbnQgYW5kIGNoaWxkIGhhdmUg
cGF0aHMgc2V0LgorICAgICAgICAgICAgc2VsZi5fcHJvcGVydGllc1sncGF0aCddID0gcG9zaXhw
YXRoLmpvaW4ob2xkX3Byb3BlcnRpZXNbJ3BhdGgnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Byb3BlcnRpZXNbJ3BhdGgnXSkK
KyAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBPbmx5IHRoZSBvcmlnaW5hbCBwYXJlbnQg
aGFzIGEgcGF0aCwgdXNlIGl0LgorICAgICAgICAgICAgc2VsZi5fcHJvcGVydGllc1sncGF0aCdd
ID0gb2xkX3Byb3BlcnRpZXNbJ3BhdGgnXQorICAgICAgICBpZiAnc291cmNlVHJlZScgaW4gb2xk
X3Byb3BlcnRpZXM6CisgICAgICAgICAgIyBUaGUgb3JpZ2luYWwgcGFyZW50IGhhZCBhIHNvdXJj
ZVRyZWUgc2V0LCB1c2UgaXQuCisgICAgICAgICAgc2VsZi5fcHJvcGVydGllc1snc291cmNlVHJl
ZSddID0gb2xkX3Byb3BlcnRpZXNbJ3NvdXJjZVRyZWUnXQorCisgICAgICAjIElmIHRoZSBvcmln
aW5hbCBwYXJlbnQgaGFkIGEgbmFtZSBzZXQsIGtlZXAgdXNpbmcgaXQuICBJZiB0aGUgb3JpZ2lu
YWwKKyAgICAgICMgcGFyZW50IGRpZG4ndCBoYXZlIGEgbmFtZSBidXQgdGhlIGNoaWxkIGRpZCwg
bGV0IHRoZSBjaGlsZCdzIG5hbWUKKyAgICAgICMgbGl2ZSBvbi4gIElmIHRoZSBuYW1lIGF0dHJp
YnV0ZSBzZWVtcyB1bm5lY2Vzc2FyeSBub3csIGdldCByaWQgb2YgaXQuCisgICAgICBpZiAnbmFt
ZScgaW4gb2xkX3Byb3BlcnRpZXMgYW5kIG9sZF9wcm9wZXJ0aWVzWyduYW1lJ10gIT0gTm9uZSBh
bmQgXAorICAgICAgICAgb2xkX3Byb3BlcnRpZXNbJ25hbWUnXSAhPSBzZWxmLk5hbWUoKToKKyAg
ICAgICAgc2VsZi5fcHJvcGVydGllc1snbmFtZSddID0gb2xkX3Byb3BlcnRpZXNbJ25hbWUnXQor
ICAgICAgaWYgJ25hbWUnIGluIHNlbGYuX3Byb3BlcnRpZXMgYW5kICdwYXRoJyBpbiBzZWxmLl9w
cm9wZXJ0aWVzIGFuZCBcCisgICAgICAgICBzZWxmLl9wcm9wZXJ0aWVzWyduYW1lJ10gPT0gc2Vs
Zi5fcHJvcGVydGllc1sncGF0aCddOgorICAgICAgICBkZWwgc2VsZi5fcHJvcGVydGllc1snbmFt
ZSddCisKKyAgICAgICMgTm90aWZ5IGFsbCBjaGlsZHJlbiBvZiB0aGVpciBuZXcgcGFyZW50Lgor
ICAgICAgZm9yIGNoaWxkIGluIHNlbGYuX3Byb3BlcnRpZXNbJ2NoaWxkcmVuJ106CisgICAgICAg
IGNoaWxkLnBhcmVudCA9IHNlbGYKKworICAgICMgSWYgYXNrZWQgdG8gcmVjdXJzZSwgcmVjdXJz
ZS4KKyAgICBpZiByZWN1cnNlOgorICAgICAgZm9yIGNoaWxkIGluIHNlbGYuX3Byb3BlcnRpZXNb
J2NoaWxkcmVuJ106CisgICAgICAgIGlmIGNoaWxkLl9fY2xhc3NfXyA9PSBQQlhHcm91cDoKKyAg
ICAgICAgICBjaGlsZC5UYWtlT3Zlck9ubHlDaGlsZChyZWN1cnNlKQorCisgIGRlZiBTb3J0R3Jv
dXAoc2VsZik6CisgICAgc2VsZi5fcHJvcGVydGllc1snY2hpbGRyZW4nXSA9IFwKKyAgICAgICAg
c29ydGVkKHNlbGYuX3Byb3BlcnRpZXNbJ2NoaWxkcmVuJ10sIGNtcD1sYW1iZGEgeCx5OiB4LkNv
bXBhcmUoeSkpCisKKyAgICAjIFJlY3Vyc2UuCisgICAgZm9yIGNoaWxkIGluIHNlbGYuX3Byb3Bl
cnRpZXNbJ2NoaWxkcmVuJ106CisgICAgICBpZiBpc2luc3RhbmNlKGNoaWxkLCBQQlhHcm91cCk6
CisgICAgICAgIGNoaWxkLlNvcnRHcm91cCgpCisKKworY2xhc3MgWENGaWxlTGlrZUVsZW1lbnQo
WENIaWVyYXJjaGljYWxFbGVtZW50KToKKyAgIyBBYnN0cmFjdCBiYXNlIGZvciBvYmplY3RzIHRo
YXQgY2FuIGJlIHVzZWQgYXMgdGhlIGZpbGVSZWYgcHJvcGVydHkgb2YKKyAgIyBQQlhCdWlsZEZp
bGUuCisKKyAgZGVmIFBhdGhIYXNoYWJsZXMoc2VsZik6CisgICAgIyBBIFBCWEJ1aWxkRmlsZSB0
aGF0IHJlZmVycyB0byB0aGlzIG9iamVjdCB3aWxsIGNhbGwgdGhpcyBtZXRob2QgdG8KKyAgICAj
IG9idGFpbiBhZGRpdGlvbmFsIGhhc2hhYmxlcyBzcGVjaWZpYyB0byB0aGlzIFhDRmlsZUxpa2VF
bGVtZW50LiAgRG9uJ3QKKyAgICAjIGp1c3QgdXNlIHRoaXMgb2JqZWN0J3MgaGFzaGFibGVzLCB0
aGV5J3JlIG5vdCBzcGVjaWZpYyBhbmQgdW5pcXVlIGVub3VnaAorICAgICMgb24gdGhlaXIgb3du
ICh3aXRob3V0IGFjY2VzcyB0byB0aGUgcGFyZW50IGhhc2hhYmxlcy4pICBJbnN0ZWFkLCBwcm92
aWRlCisgICAgIyBoYXNoYWJsZXMgdGhhdCBpZGVudGlmeSB0aGlzIG9iamVjdCBieSBwYXRoIGJ5
IGdldHRpbmcgaXRzIGhhc2hhYmxlcyBhcworICAgICMgd2VsbCBhcyB0aGUgaGFzaGFibGVzIG9m
IGFuY2VzdG9yIFhDSGllcmFyY2hpY2FsRWxlbWVudCBvYmplY3RzLgorCisgICAgaGFzaGFibGVz
ID0gW10KKyAgICB4Y2hlID0gc2VsZgorICAgIHdoaWxlIHhjaGUgIT0gTm9uZSBhbmQgaXNpbnN0
YW5jZSh4Y2hlLCBYQ0hpZXJhcmNoaWNhbEVsZW1lbnQpOgorICAgICAgeGNoZV9oYXNoYWJsZXMg
PSB4Y2hlLkhhc2hhYmxlcygpCisgICAgICBmb3IgaW5kZXggaW4geHJhbmdlKDAsIGxlbih4Y2hl
X2hhc2hhYmxlcykpOgorICAgICAgICBoYXNoYWJsZXMuaW5zZXJ0KGluZGV4LCB4Y2hlX2hhc2hh
Ymxlc1tpbmRleF0pCisgICAgICB4Y2hlID0geGNoZS5wYXJlbnQKKyAgICByZXR1cm4gaGFzaGFi
bGVzCisKKworY2xhc3MgWENDb250YWluZXJQb3J0YWwoWENPYmplY3QpOgorICAjIEFic3RyYWN0
IGJhc2UgZm9yIG9iamVjdHMgdGhhdCBjYW4gYmUgdXNlZCBhcyB0aGUgY29udGFpbmVyUG9ydGFs
IHByb3BlcnR5CisgICMgb2YgUEJYQ29udGFpbmVySXRlbVByb3h5LgorICBwYXNzCisKKworY2xh
c3MgWENSZW1vdGVPYmplY3QoWENPYmplY3QpOgorICAjIEFic3RyYWN0IGJhc2UgZm9yIG9iamVj
dHMgdGhhdCBjYW4gYmUgdXNlZCBhcyB0aGUgcmVtb3RlR2xvYmFsSURTdHJpbmcKKyAgIyBwcm9w
ZXJ0eSBvZiBQQlhDb250YWluZXJJdGVtUHJveHkuCisgIHBhc3MKKworCitjbGFzcyBQQlhGaWxl
UmVmZXJlbmNlKFhDRmlsZUxpa2VFbGVtZW50LCBYQ0NvbnRhaW5lclBvcnRhbCwgWENSZW1vdGVP
YmplY3QpOgorICBfc2NoZW1hID0gWENGaWxlTGlrZUVsZW1lbnQuX3NjaGVtYS5jb3B5KCkKKyAg
X3NjaGVtYS51cGRhdGUoeworICAgICdleHBsaWNpdEZpbGVUeXBlJzogIFswLCBzdHIsIDAsIDBd
LAorICAgICdsYXN0S25vd25GaWxlVHlwZSc6IFswLCBzdHIsIDAsIDBdLAorICAgICduYW1lJzog
ICAgICAgICAgICAgIFswLCBzdHIsIDAsIDBdLAorICAgICdwYXRoJzogICAgICAgICAgICAgIFsw
LCBzdHIsIDAsIDFdLAorICB9KQorCisgICMgV2VpcmQgb3V0cHV0IHJ1bGVzIGZvciBQQlhGaWxl
UmVmZXJlbmNlLgorICBfc2hvdWxkX3ByaW50X3NpbmdsZV9saW5lID0gVHJ1ZQorICAjIHN1cGVy
CisgIF9lbmNvZGVfdHJhbnNmb3JtcyA9IFhDRmlsZUxpa2VFbGVtZW50Ll9hbHRlcm5hdGVfZW5j
b2RlX3RyYW5zZm9ybXMKKworICBkZWYgX19pbml0X18oc2VsZiwgcHJvcGVydGllcz1Ob25lLCBp
ZD1Ob25lLCBwYXJlbnQ9Tm9uZSk6CisgICAgIyBzdXBlcgorICAgIFhDRmlsZUxpa2VFbGVtZW50
Ll9faW5pdF9fKHNlbGYsIHByb3BlcnRpZXMsIGlkLCBwYXJlbnQpCisgICAgaWYgJ3BhdGgnIGlu
IHNlbGYuX3Byb3BlcnRpZXMgYW5kIHNlbGYuX3Byb3BlcnRpZXNbJ3BhdGgnXS5lbmRzd2l0aCgn
LycpOgorICAgICAgc2VsZi5fcHJvcGVydGllc1sncGF0aCddID0gc2VsZi5fcHJvcGVydGllc1sn
cGF0aCddWzotMV0KKyAgICAgIGlzX2RpciA9IFRydWUKKyAgICBlbHNlOgorICAgICAgaXNfZGly
ID0gRmFsc2UKKworICAgIGlmICdwYXRoJyBpbiBzZWxmLl9wcm9wZXJ0aWVzIGFuZCBcCisgICAg
ICAgIG5vdCAnbGFzdEtub3duRmlsZVR5cGUnIGluIHNlbGYuX3Byb3BlcnRpZXMgYW5kIFwKKyAg
ICAgICAgbm90ICdleHBsaWNpdEZpbGVUeXBlJyBpbiBzZWxmLl9wcm9wZXJ0aWVzOgorICAgICAg
IyBUT0RPKG1hcmspOiBUaGlzIGlzIHRoZSByZXBsYWNlbWVudCBmb3IgYSByZXBsYWNlbWVudCBm
b3IgYSBxdWljayBoYWNrLgorICAgICAgIyBJdCBpcyBubyBsb25nZXIgaW5jcmVkaWJseSBzdWNr
eSwgYnV0IHRoaXMgbGlzdCBuZWVkcyB0byBiZSBleHRlbmRlZC4KKyAgICAgIGV4dGVuc2lvbl9t
YXAgPSB7CisgICAgICAgICdhJzogICAgICAgICAnYXJjaGl2ZS5hcicsCisgICAgICAgICdhcHAn
OiAgICAgICAnd3JhcHBlci5hcHBsaWNhdGlvbicsCisgICAgICAgICdiZGljJzogICAgICAnZmls
ZScsCisgICAgICAgICdidW5kbGUnOiAgICAnd3JhcHBlci5jZmJ1bmRsZScsCisgICAgICAgICdj
JzogICAgICAgICAnc291cmNlY29kZS5jLmMnLAorICAgICAgICAnY2MnOiAgICAgICAgJ3NvdXJj
ZWNvZGUuY3BwLmNwcCcsCisgICAgICAgICdjcHAnOiAgICAgICAnc291cmNlY29kZS5jcHAuY3Bw
JywKKyAgICAgICAgJ2Nzcyc6ICAgICAgICd0ZXh0LmNzcycsCisgICAgICAgICdjeHgnOiAgICAg
ICAnc291cmNlY29kZS5jcHAuY3BwJywKKyAgICAgICAgJ2R5bGliJzogICAgICdjb21waWxlZC5t
YWNoLW8uZHlsaWInLAorICAgICAgICAnZnJhbWV3b3JrJzogJ3dyYXBwZXIuZnJhbWV3b3JrJywK
KyAgICAgICAgJ2gnOiAgICAgICAgICdzb3VyY2Vjb2RlLmMuaCcsCisgICAgICAgICdoeHgnOiAg
ICAgICAnc291cmNlY29kZS5jcHAuaCcsCisgICAgICAgICdpY25zJzogICAgICAnaW1hZ2UuaWNu
cycsCisgICAgICAgICdqYXZhJzogICAgICAnc291cmNlY29kZS5qYXZhJywKKyAgICAgICAgJ2pz
JzogICAgICAgICdzb3VyY2Vjb2RlLmphdmFzY3JpcHQnLAorICAgICAgICAnbSc6ICAgICAgICAg
J3NvdXJjZWNvZGUuYy5vYmpjJywKKyAgICAgICAgJ21tJzogICAgICAgICdzb3VyY2Vjb2RlLmNw
cC5vYmpjcHAnLAorICAgICAgICAnbmliJzogICAgICAgJ3dyYXBwZXIubmliJywKKyAgICAgICAg
J28nOiAgICAgICAgICdjb21waWxlZC5tYWNoLW8ub2JqZmlsZScsCisgICAgICAgICdwZGYnOiAg
ICAgICAnaW1hZ2UucGRmJywKKyAgICAgICAgJ3BsJzogICAgICAgICd0ZXh0LnNjcmlwdC5wZXJs
JywKKyAgICAgICAgJ3BsaXN0JzogICAgICd0ZXh0LnBsaXN0LnhtbCcsCisgICAgICAgICdwbSc6
ICAgICAgICAndGV4dC5zY3JpcHQucGVybCcsCisgICAgICAgICdwbmcnOiAgICAgICAnaW1hZ2Uu
cG5nJywKKyAgICAgICAgJ3B5JzogICAgICAgICd0ZXh0LnNjcmlwdC5weXRob24nLAorICAgICAg
ICAncic6ICAgICAgICAgJ3NvdXJjZWNvZGUucmV6JywKKyAgICAgICAgJ3Jleic6ICAgICAgICdz
b3VyY2Vjb2RlLnJleicsCisgICAgICAgICdzJzogICAgICAgICAnc291cmNlY29kZS5hc20nLAor
ICAgICAgICAnc3RyaW5ncyc6ICAgJ3RleHQucGxpc3Quc3RyaW5ncycsCisgICAgICAgICd0dGYn
OiAgICAgICAnZmlsZScsCisgICAgICAgICd4Y2NvbmZpZyc6ICAndGV4dC54Y2NvbmZpZycsCisg
ICAgICAgICd4aWInOiAgICAgICAnZmlsZS54aWInLAorICAgICAgICAneSc6ICAgICAgICAgJ3Nv
dXJjZWNvZGUueWFjYycsCisgICAgICB9CisKKyAgICAgIGlmIGlzX2RpcjoKKyAgICAgICAgZmls
ZV90eXBlID0gJ2ZvbGRlcicKKyAgICAgIGVsc2U6CisgICAgICAgIGJhc2VuYW1lID0gcG9zaXhw
YXRoLmJhc2VuYW1lKHNlbGYuX3Byb3BlcnRpZXNbJ3BhdGgnXSkKKyAgICAgICAgKHJvb3QsIGV4
dCkgPSBwb3NpeHBhdGguc3BsaXRleHQoYmFzZW5hbWUpCisgICAgICAgICMgQ2hlY2sgdGhlIG1h
cCB1c2luZyBhIGxvd2VyY2FzZSBleHRlbnNpb24uCisgICAgICAgICMgVE9ETyhtYXJrKTogTWF5
YmUgaXQgc2hvdWxkIHRyeSB3aXRoIHRoZSBvcmlnaW5hbCBjYXNlIGZpcnN0IGFuZCBmYWxsCisg
ICAgICAgICMgYmFjayB0byBsb3dlcmNhc2UsIGluIGNhc2UgdGhlcmUgYXJlIGFueSBpbnN0YW5j
ZXMgd2hlcmUgY2FzZQorICAgICAgICAjIG1hdHRlcnMuICBUaGVyZSBjdXJyZW50bHkgYXJlbid0
LgorICAgICAgICBpZiBleHQgIT0gJyc6CisgICAgICAgICAgZXh0ID0gZXh0WzE6XS5sb3dlcigp
CisKKyAgICAgICAgIyBUT0RPKG1hcmspOiAidGV4dCIgaXMgdGhlIGRlZmF1bHQgdmFsdWUsIGJ1
dCAiZmlsZSIgaXMgYXBwcm9wcmlhdGUKKyAgICAgICAgIyBmb3IgdW5yZWNvZ25pemVkIGZpbGVz
IG5vdCBjb250YWluaW5nIHRleHQuICBYY29kZSBzZWVtcyB0byBjaG9vc2UKKyAgICAgICAgIyBi
YXNlZCBvbiBjb250ZW50LgorICAgICAgICBmaWxlX3R5cGUgPSBleHRlbnNpb25fbWFwLmdldChl
eHQsICd0ZXh0JykKKworICAgICAgc2VsZi5fcHJvcGVydGllc1snbGFzdEtub3duRmlsZVR5cGUn
XSA9IGZpbGVfdHlwZQorCisKK2NsYXNzIFBCWFZhcmlhbnRHcm91cChQQlhHcm91cCwgWENGaWxl
TGlrZUVsZW1lbnQpOgorICAiIiJQQlhWYXJpYW50R3JvdXAgaXMgdXNlZCBieSBYY29kZSB0byBy
ZXByZXNlbnQgbG9jYWxpemF0aW9ucy4iIiIKKyAgIyBObyBhZGRpdGlvbnMgdG8gdGhlIHNjaGVt
YSByZWxhdGl2ZSB0byBQQlhHcm91cC4KKyAgcGFzcworCisKKyMgUEJYUmVmZXJlbmNlUHJveHkg
aXMgYWxzbyBhbiBYQ0ZpbGVMaWtlRWxlbWVudCBzdWJjbGFzcy4gIEl0IGlzIGRlZmluZWQgYmVs
b3cKKyMgYmVjYXVzZSBpdCB1c2VzIFBCWENvbnRhaW5lckl0ZW1Qcm94eSwgZGVmaW5lZCBiZWxv
dy4KKworCitjbGFzcyBYQ0J1aWxkQ29uZmlndXJhdGlvbihYQ09iamVjdCk6CisgIF9zY2hlbWEg
PSBYQ09iamVjdC5fc2NoZW1hLmNvcHkoKQorICBfc2NoZW1hLnVwZGF0ZSh7CisgICAgJ2Jhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlJzogWzAsIFBCWEZpbGVSZWZlcmVuY2UsIDAsIDBdLAorICAg
ICdidWlsZFNldHRpbmdzJzogICAgICAgICAgICAgIFswLCBkaWN0LCAwLCAxLCB7fV0sCisgICAg
J25hbWUnOiAgICAgICAgICAgICAgICAgICAgICAgWzAsIHN0ciwgIDAsIDFdLAorICB9KQorCisg
IGRlZiBIYXNCdWlsZFNldHRpbmcoc2VsZiwga2V5KToKKyAgICByZXR1cm4ga2V5IGluIHNlbGYu
X3Byb3BlcnRpZXNbJ2J1aWxkU2V0dGluZ3MnXQorCisgIGRlZiBHZXRCdWlsZFNldHRpbmcoc2Vs
Ziwga2V5KToKKyAgICByZXR1cm4gc2VsZi5fcHJvcGVydGllc1snYnVpbGRTZXR0aW5ncyddW2tl
eV0KKworICBkZWYgU2V0QnVpbGRTZXR0aW5nKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICMgVE9E
TyhtYXJrKTogSWYgYSBsaXN0LCBjb3B5PworICAgIHNlbGYuX3Byb3BlcnRpZXNbJ2J1aWxkU2V0
dGluZ3MnXVtrZXldID0gdmFsdWUKKworICBkZWYgQXBwZW5kQnVpbGRTZXR0aW5nKHNlbGYsIGtl
eSwgdmFsdWUpOgorICAgIGlmIG5vdCBrZXkgaW4gc2VsZi5fcHJvcGVydGllc1snYnVpbGRTZXR0
aW5ncyddOgorICAgICAgc2VsZi5fcHJvcGVydGllc1snYnVpbGRTZXR0aW5ncyddW2tleV0gPSBb
XQorICAgIHNlbGYuX3Byb3BlcnRpZXNbJ2J1aWxkU2V0dGluZ3MnXVtrZXldLmFwcGVuZCh2YWx1
ZSkKKworICBkZWYgRGVsQnVpbGRTZXR0aW5nKHNlbGYsIGtleSk6CisgICAgaWYga2V5IGluIHNl
bGYuX3Byb3BlcnRpZXNbJ2J1aWxkU2V0dGluZ3MnXToKKyAgICAgIGRlbCBzZWxmLl9wcm9wZXJ0
aWVzWydidWlsZFNldHRpbmdzJ11ba2V5XQorCisgIGRlZiBTZXRCYXNlQ29uZmlndXJhdGlvbihz
ZWxmLCB2YWx1ZSk6CisgICAgc2VsZi5fcHJvcGVydGllc1snYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UnXSA9IHZhbHVlCisKK2NsYXNzIFhDQ29uZmlndXJhdGlvbkxpc3QoWENPYmplY3QpOgor
ICAjIF9jb25maWdzIGlzIHRoZSBkZWZhdWx0IGxpc3Qgb2YgY29uZmlndXJhdGlvbnMuCisgIF9j
b25maWdzID0gWyBYQ0J1aWxkQ29uZmlndXJhdGlvbih7J25hbWUnOiAnRGVidWcnfSksCisgICAg
ICAgICAgICAgICBYQ0J1aWxkQ29uZmlndXJhdGlvbih7J25hbWUnOiAnUmVsZWFzZSd9KSBdCisK
KyAgX3NjaGVtYSA9IFhDT2JqZWN0Ll9zY2hlbWEuY29weSgpCisgIF9zY2hlbWEudXBkYXRlKHsK
KyAgICAnYnVpbGRDb25maWd1cmF0aW9ucyc6ICAgICAgICAgICBbMSwgWENCdWlsZENvbmZpZ3Vy
YXRpb24sIDEsIDEsIF9jb25maWdzXSwKKyAgICAnZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2li
bGUnOiBbMCwgaW50LCAgICAgICAgICAgICAgICAgIDAsIDEsIDFdLAorICAgICdkZWZhdWx0Q29u
ZmlndXJhdGlvbk5hbWUnOiAgICAgIFswLCBzdHIsICAgICAgICAgICAgICAgICAgMCwgMSwgJ1Jl
bGVhc2UnXSwKKyAgfSkKKworICBkZWYgTmFtZShzZWxmKToKKyAgICByZXR1cm4gJ0J1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgJyArIFwKKyAgICAgICAgICAgc2VsZi5wYXJlbnQuX19jbGFz
c19fLl9fbmFtZV9fICsgJyAiJyArIHNlbGYucGFyZW50Lk5hbWUoKSArICciJworCisgIGRlZiBD
b25maWd1cmF0aW9uTmFtZWQoc2VsZiwgbmFtZSk6CisgICAgIiIiQ29udmVuaWVuY2UgYWNjZXNz
b3IgdG8gb2J0YWluIGFuIFhDQnVpbGRDb25maWd1cmF0aW9uIGJ5IG5hbWUuIiIiCisgICAgZm9y
IGNvbmZpZ3VyYXRpb24gaW4gc2VsZi5fcHJvcGVydGllc1snYnVpbGRDb25maWd1cmF0aW9ucydd
OgorICAgICAgaWYgY29uZmlndXJhdGlvbi5fcHJvcGVydGllc1snbmFtZSddID09IG5hbWU6Cisg
ICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uCisKKyAgICByYWlzZSBLZXlFcnJvciwgbmFtZQor
CisgIGRlZiBEZWZhdWx0Q29uZmlndXJhdGlvbihzZWxmKToKKyAgICAiIiJDb252ZW5pZW5jZSBh
Y2Nlc3NvciB0byBvYnRhaW4gdGhlIGRlZmF1bHQgWENCdWlsZENvbmZpZ3VyYXRpb24uIiIiCisg
ICAgcmV0dXJuIHNlbGYuQ29uZmlndXJhdGlvbk5hbWVkKHNlbGYuX3Byb3BlcnRpZXNbJ2RlZmF1
bHRDb25maWd1cmF0aW9uTmFtZSddKQorCisgIGRlZiBIYXNCdWlsZFNldHRpbmcoc2VsZiwga2V5
KToKKyAgICAiIiJEZXRlcm1pbmVzIHRoZSBzdGF0ZSBvZiBhIGJ1aWxkIHNldHRpbmcgaW4gYWxs
IFhDQnVpbGRDb25maWd1cmF0aW9uCisgICAgY2hpbGQgb2JqZWN0cy4KKworICAgIElmIGFsbCBj
aGlsZCBvYmplY3RzIGhhdmUga2V5IGluIHRoZWlyIGJ1aWxkIHNldHRpbmdzLCBhbmQgdGhlIHZh
bHVlIGlzIHRoZQorICAgIHNhbWUgaW4gYWxsIGNoaWxkIG9iamVjdHMsIHJldHVybnMgMS4KKwor
ICAgIElmIG5vIGNoaWxkIG9iamVjdHMgaGF2ZSB0aGUga2V5IGluIHRoZWlyIGJ1aWxkIHNldHRp
bmdzLCByZXR1cm5zIDAuCisKKyAgICBJZiBzb21lLCBidXQgbm90IGFsbCwgY2hpbGQgb2JqZWN0
cyBoYXZlIHRoZSBrZXkgaW4gdGhlaXIgYnVpbGQgc2V0dGluZ3MsCisgICAgb3IgaWYgYW55IGNo
aWxkcmVuIGhhdmUgZGlmZmVyZW50IHZhbHVlcyBmb3IgdGhlIGtleSwgcmV0dXJucyAtMS4KKyAg
ICAiIiIKKworICAgIGhhcyA9IE5vbmUKKyAgICB2YWx1ZSA9IE5vbmUKKyAgICBmb3IgY29uZmln
dXJhdGlvbiBpbiBzZWxmLl9wcm9wZXJ0aWVzWydidWlsZENvbmZpZ3VyYXRpb25zJ106CisgICAg
ICBjb25maWd1cmF0aW9uX2hhcyA9IGNvbmZpZ3VyYXRpb24uSGFzQnVpbGRTZXR0aW5nKGtleSkK
KyAgICAgIGlmIGhhcyA9PSBOb25lOgorICAgICAgICBoYXMgPSBjb25maWd1cmF0aW9uX2hhcwor
ICAgICAgZWxpZiBoYXMgIT0gY29uZmlndXJhdGlvbl9oYXM6CisgICAgICAgIHJldHVybiAtMQor
CisgICAgICBpZiBjb25maWd1cmF0aW9uX2hhczoKKyAgICAgICAgY29uZmlndXJhdGlvbl92YWx1
ZSA9IGNvbmZpZ3VyYXRpb24uR2V0QnVpbGRTZXR0aW5nKGtleSkKKyAgICAgICAgaWYgdmFsdWUg
PT0gTm9uZToKKyAgICAgICAgICB2YWx1ZSA9IGNvbmZpZ3VyYXRpb25fdmFsdWUKKyAgICAgICAg
ZWxpZiB2YWx1ZSAhPSBjb25maWd1cmF0aW9uX3ZhbHVlOgorICAgICAgICAgIHJldHVybiAtMQor
CisgICAgaWYgbm90IGhhczoKKyAgICAgIHJldHVybiAwCisKKyAgICByZXR1cm4gMQorCisgIGRl
ZiBHZXRCdWlsZFNldHRpbmcoc2VsZiwga2V5KToKKyAgICAiIiJHZXRzIHRoZSBidWlsZCBzZXR0
aW5nIGZvciBrZXkuCisKKyAgICBBbGwgY2hpbGQgWENDb25maWd1cmF0aW9uIG9iamVjdHMgbXVz
dCBoYXZlIHRoZSBzYW1lIHZhbHVlIHNldCBmb3IgdGhlCisgICAgc2V0dGluZywgb3IgYSBWYWx1
ZUVycm9yIHdpbGwgYmUgcmFpc2VkLgorICAgICIiIgorCisgICAgIyBUT0RPKG1hcmspOiBUaGlz
IGlzIHdyb25nIGZvciBidWlsZCBzZXR0aW5ncyB0aGF0IGFyZSBsaXN0cy4gIFRoZSBsaXN0Cisg
ICAgIyBjb250ZW50cyBzaG91bGQgYmUgY29tcGFyZWQgKGFuZCBhIGxpc3QgY29weSByZXR1cm5l
ZD8pCisKKyAgICB2YWx1ZSA9IE5vbmUKKyAgICBmb3IgY29uZmlndXJhdGlvbiBpbiBzZWxmLl9w
cm9wZXJ0aWVzWydidWlsZENvbmZpZ3VyYXRpb25zJ106CisgICAgICBjb25maWd1cmF0aW9uX3Zh
bHVlID0gY29uZmlndXJhdGlvbi5HZXRCdWlsZFNldHRpbmcoa2V5KQorICAgICAgaWYgdmFsdWUg
PT0gTm9uZToKKyAgICAgICAgdmFsdWUgPSBjb25maWd1cmF0aW9uX3ZhbHVlCisgICAgICBlbHNl
OgorICAgICAgICBpZiB2YWx1ZSAhPSBjb25maWd1cmF0aW9uX3ZhbHVlOgorICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IsICdWYXJpYW50IHZhbHVlcyBmb3IgJyArIGtleQorCisgICAgcmV0dXJu
IHZhbHVlCisKKyAgZGVmIFNldEJ1aWxkU2V0dGluZyhzZWxmLCBrZXksIHZhbHVlKToKKyAgICAi
IiJTZXRzIHRoZSBidWlsZCBzZXR0aW5nIGZvciBrZXkgdG8gdmFsdWUgaW4gYWxsIGNoaWxkCisg
ICAgWENCdWlsZENvbmZpZ3VyYXRpb24gb2JqZWN0cy4KKyAgICAiIiIKKworICAgIGZvciBjb25m
aWd1cmF0aW9uIGluIHNlbGYuX3Byb3BlcnRpZXNbJ2J1aWxkQ29uZmlndXJhdGlvbnMnXToKKyAg
ICAgIGNvbmZpZ3VyYXRpb24uU2V0QnVpbGRTZXR0aW5nKGtleSwgdmFsdWUpCisKKyAgZGVmIEFw
cGVuZEJ1aWxkU2V0dGluZyhzZWxmLCBrZXksIHZhbHVlKToKKyAgICAiIiJBcHBlbmRzIHZhbHVl
IHRvIHRoZSBidWlsZCBzZXR0aW5nIGZvciBrZXksIHdoaWNoIGlzIHRyZWF0ZWQgYXMgYSBsaXN0
LAorICAgIGluIGFsbCBjaGlsZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBvYmplY3RzLgorICAgICIi
IgorCisgICAgZm9yIGNvbmZpZ3VyYXRpb24gaW4gc2VsZi5fcHJvcGVydGllc1snYnVpbGRDb25m
aWd1cmF0aW9ucyddOgorICAgICAgY29uZmlndXJhdGlvbi5BcHBlbmRCdWlsZFNldHRpbmcoa2V5
LCB2YWx1ZSkKKworICBkZWYgRGVsQnVpbGRTZXR0aW5nKHNlbGYsIGtleSk6CisgICAgIiIiRGVs
ZXRlcyB0aGUgYnVpbGQgc2V0dGluZyBrZXkgZnJvbSBhbGwgY2hpbGQgWENCdWlsZENvbmZpZ3Vy
YXRpb24KKyAgICBvYmplY3RzLgorICAgICIiIgorCisgICAgZm9yIGNvbmZpZ3VyYXRpb24gaW4g
c2VsZi5fcHJvcGVydGllc1snYnVpbGRDb25maWd1cmF0aW9ucyddOgorICAgICAgY29uZmlndXJh
dGlvbi5EZWxCdWlsZFNldHRpbmcoa2V5KQorCisgIGRlZiBTZXRCYXNlQ29uZmlndXJhdGlvbihz
ZWxmLCB2YWx1ZSk6CisgICAgIiIiU2V0cyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBpbiBhbGwg
Y2hpbGQgWENCdWlsZENvbmZpZ3VyYXRpb24gb2JqZWN0cy4KKyAgICAiIiIKKworICAgIGZvciBj
b25maWd1cmF0aW9uIGluIHNlbGYuX3Byb3BlcnRpZXNbJ2J1aWxkQ29uZmlndXJhdGlvbnMnXToK
KyAgICAgIGNvbmZpZ3VyYXRpb24uU2V0QmFzZUNvbmZpZ3VyYXRpb24odmFsdWUpCisKKworY2xh
c3MgUEJYQnVpbGRGaWxlKFhDT2JqZWN0KToKKyAgX3NjaGVtYSA9IFhDT2JqZWN0Ll9zY2hlbWEu
Y29weSgpCisgIF9zY2hlbWEudXBkYXRlKHsKKyAgICAnZmlsZVJlZic6ICBbMCwgWENGaWxlTGlr
ZUVsZW1lbnQsIDAsIDFdLAorICAgICdzZXR0aW5ncyc6IFswLCBzdHIsICAgICAgICAgICAgICAg
MCwgMF0sICAjIGhhY2ssIGl0J3MgYSBkaWN0CisgIH0pCisKKyAgIyBXZWlyZCBvdXRwdXQgcnVs
ZXMgZm9yIFBCWEJ1aWxkRmlsZS4KKyAgX3Nob3VsZF9wcmludF9zaW5nbGVfbGluZSA9IFRydWUK
KyAgX2VuY29kZV90cmFuc2Zvcm1zID0gWENPYmplY3QuX2FsdGVybmF0ZV9lbmNvZGVfdHJhbnNm
b3JtcworCisgIGRlZiBOYW1lKHNlbGYpOgorICAgICMgRXhhbXBsZTogIm1haW4uY2MgaW4gU291
cmNlcyIKKyAgICByZXR1cm4gc2VsZi5fcHJvcGVydGllc1snZmlsZVJlZiddLk5hbWUoKSArICcg
aW4gJyArIHNlbGYucGFyZW50Lk5hbWUoKQorCisgIGRlZiBIYXNoYWJsZXMoc2VsZik6CisgICAg
IyBzdXBlcgorICAgIGhhc2hhYmxlcyA9IFhDT2JqZWN0Lkhhc2hhYmxlcyhzZWxmKQorCisgICAg
IyBJdCBpcyBub3Qgc3VmZmljaWVudCB0byBqdXN0IHJlbHkgb24gTmFtZSgpIHRvIGdldCB0aGUK
KyAgICAjIFhDRmlsZUxpa2VFbGVtZW50J3MgbmFtZSwgYmVjYXVzZSB0aGF0IGlzIG5vdCBhIGNv
bXBsZXRlIHBhdGhuYW1lLgorICAgICMgUGF0aEhhc2hhYmxlcyByZXR1cm5zIGhhc2hhYmxlcyB1
bmlxdWUgZW5vdWdoIHRoYXQgbm8gdHdvCisgICAgIyBQQlhCdWlsZEZpbGVzIHNob3VsZCB3aW5k
IHVwIHdpdGggdGhlIHNhbWUgc2V0IG9mIGhhc2hhYmxlcywgdW5sZXNzCisgICAgIyBzb21lb25l
IGFkZHMgdGhlIHNhbWUgZmlsZSBtdWx0aXBsZSB0aW1lcyB0byB0aGUgc2FtZSB0YXJnZXQuICBU
aGF0CisgICAgIyB3b3VsZCBiZSBjb25zaWRlcmVkIGludmFsaWQgYW55d2F5LgorICAgIGhhc2hh
Ymxlcy5leHRlbmQoc2VsZi5fcHJvcGVydGllc1snZmlsZVJlZiddLlBhdGhIYXNoYWJsZXMoKSkK
KworICAgIHJldHVybiBoYXNoYWJsZXMKKworCitjbGFzcyBYQ0J1aWxkUGhhc2UoWENPYmplY3Qp
OgorICAiIiJBYnN0cmFjdCBiYXNlIGZvciBidWlsZCBwaGFzZSBjbGFzc2VzLiAgTm90IHJlcHJl
c2VudGVkIGluIGEgcHJvamVjdAorICBmaWxlLgorCisgIEF0dHJpYnV0ZXM6CisgICAgX2ZpbGVz
X2J5X3BhdGg6IEEgZGljdCBtYXBwaW5nIGVhY2ggcGF0aCBvZiBhIGNoaWxkIGluIHRoZSBmaWxl
cyBsaXN0IGJ5CisgICAgICBwYXRoIChrZXlzKSB0byB0aGUgY29ycmVzcG9uZGluZyBQQlhCdWls
ZEZpbGUgY2hpbGRyZW4gKHZhbHVlcykuCisgICAgX2ZpbGVzX2J5X3hjZmlsZWxpa2VlbGVtZW50
OiBBIGRpY3QgbWFwcGluZyBlYWNoIFhDRmlsZUxpa2VFbGVtZW50IChrZXlzKQorICAgICAgdG8g
dGhlIGNvcnJlc3BvbmRpbmcgUEJYQnVpbGRGaWxlIGNoaWxkcmVuICh2YWx1ZXMpLgorICAiIiIK
KworICAjIFRPRE8obWFyayk6IFNvbWUgYnVpbGQgcGhhc2UgdHlwZXMsIGxpa2UgUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlLCBkb24ndAorICAjIGFjdHVhbGx5IGhhdmUgYSAiZmlsZXMiIGxpc3Qu
ICBYQ0J1aWxkUGhhc2Ugc2hvdWxkIG5vdCBoYXZlICJmaWxlcyIgYnV0CisgICMgYW5vdGhlciBh
YnN0cmFjdCBzdWJjbGFzcyBvZiBpdCBzaG91bGQgcHJvdmlkZSB0aGlzLCBhbmQgY29uY3JldGUg
YnVpbGQKKyAgIyBwaGFzZSB0eXBlcyB0aGF0IGRvIGhhdmUgImZpbGVzIiBsaXN0cyBzaG91bGQg
YmUgZGVyaXZlZCBmcm9tIHRoYXQgbmV3CisgICMgYWJzdHJhY3Qgc3ViY2xhc3MuICBYQ0J1aWxk
UGhhc2Ugc2hvdWxkIG9ubHkgcHJvdmlkZSBidWlsZEFjdGlvbk1hc2sgYW5kCisgICMgcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZywgYW5kIG5vdCBmaWxlcyBvciB0aGUgdmFyaW91
cworICAjIGZpbGUtcmVsYXRlZCBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzLgorCisgIF9zY2hlbWEg
PSBYQ09iamVjdC5fc2NoZW1hLmNvcHkoKQorICBfc2NoZW1hLnVwZGF0ZSh7CisgICAgJ2J1aWxk
QWN0aW9uTWFzayc6ICAgICAgICAgICAgICAgICAgICBbMCwgaW50LCAgICAgICAgICAwLCAxLCAw
eDdmZmZmZmZmXSwKKyAgICAnZmlsZXMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsx
LCBQQlhCdWlsZEZpbGUsIDEsIDEsIFtdXSwKKyAgICAncnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyc6IFswLCBpbnQsICAgICAgICAgIDAsIDEsIDBdLAorICB9KQorCisgIGRlZiBf
X2luaXRfXyhzZWxmLCBwcm9wZXJ0aWVzPU5vbmUsIGlkPU5vbmUsIHBhcmVudD1Ob25lKToKKyAg
ICAjIHN1cGVyCisgICAgWENPYmplY3QuX19pbml0X18oc2VsZiwgcHJvcGVydGllcywgaWQsIHBh
cmVudCkKKworICAgIHNlbGYuX2ZpbGVzX2J5X3BhdGggPSB7fQorICAgIHNlbGYuX2ZpbGVzX2J5
X3hjZmlsZWxpa2VlbGVtZW50ID0ge30KKyAgICBmb3IgcGJ4YnVpbGRmaWxlIGluIHNlbGYuX3By
b3BlcnRpZXMuZ2V0KCdmaWxlcycsIFtdKToKKyAgICAgIHNlbGYuX0FkZEJ1aWxkRmlsZVRvRGlj
dHMocGJ4YnVpbGRmaWxlKQorCisgIGRlZiBGaWxlR3JvdXAoc2VsZiwgcGF0aCk6CisgICAgIyBT
dWJjbGFzc2VzIG11c3Qgb3ZlcnJpZGUgdGhpcyBieSByZXR1cm5pbmcgYSB0d28tZWxlbWVudCB0
dXBsZS4gIFRoZQorICAgICMgZmlyc3QgaXRlbSBpbiB0aGUgdHVwbGUgc2hvdWxkIGJlIHRoZSBQ
QlhHcm91cCB0byB3aGljaCAicGF0aCIgc2hvdWxkIGJlCisgICAgIyBhZGRlZCwgZWl0aGVyIGFz
IGEgY2hpbGQgb3IgZGVlcGVyIGRlc2NlbmRhbnQuICBUaGUgc2Vjb25kIGl0ZW0gc2hvdWxkCisg
ICAgIyBiZSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGZpbGVzIHNob3VsZCBiZSBhZGRl
ZCBpbnRvIGhpZXJhcmNoaWNhbAorICAgICMgZ3JvdXBzIG9yIG9uZSBzaW5nbGUgZmxhdCBncm91
cC4KKyAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCBcCisgICAgICAgICAgc2VsZi5fX2Ns
YXNzX18uX19uYW1lX18gKyAnIG11c3QgaW1wbGVtZW50IEZpbGVHcm91cCcKKworICBkZWYgX0Fk
ZFBhdGhUb0RpY3Qoc2VsZiwgcGJ4YnVpbGRmaWxlLCBwYXRoKToKKyAgICAiIiJBZGRzIHBhdGgg
dG8gdGhlIGRpY3QgdHJhY2tpbmcgcGF0aHMgYmVsb25naW5nIHRvIHRoaXMgYnVpbGQgcGhhc2Uu
CisKKyAgICBJZiB0aGUgcGF0aCBpcyBhbHJlYWR5IGEgbWVtYmVyIG9mIHRoaXMgYnVpbGQgcGhh
c2UsIHJhaXNlcyBhbiBleGNlcHRpb24uCisgICAgIiIiCisKKyAgICBpZiBwYXRoIGluIHNlbGYu
X2ZpbGVzX2J5X3BhdGg6CisgICAgICByYWlzZSBWYWx1ZUVycm9yLCAnRm91bmQgbXVsdGlwbGUg
YnVpbGQgZmlsZXMgd2l0aCBwYXRoICcgKyBwYXRoCisgICAgc2VsZi5fZmlsZXNfYnlfcGF0aFtw
YXRoXSA9IHBieGJ1aWxkZmlsZQorCisgIGRlZiBfQWRkQnVpbGRGaWxlVG9EaWN0cyhzZWxmLCBw
YnhidWlsZGZpbGUsIHBhdGg9Tm9uZSk6CisgICAgIiIiTWFpbnRhaW5zIHRoZSBfZmlsZXNfYnlf
cGF0aCBhbmQgX2ZpbGVzX2J5X3hjZmlsZWxpa2VlbGVtZW50IGRpY3RzLgorCisgICAgSWYgcGF0
aCBpcyBzcGVjaWZpZWQsIHRoZW4gaXQgaXMgdGhlIHBhdGggdGhhdCBpcyBiZWluZyBhZGRlZCB0
byB0aGUKKyAgICBwaGFzZSwgYW5kIHBieGJ1aWxkZmlsZSBtdXN0IGNvbnRhaW4gZWl0aGVyIGEg
UEJYRmlsZVJlZmVyZW5jZSBkaXJlY3RseQorICAgIHJlZmVyZW5jaW5nIHRoYXQgcGF0aCwgb3Ig
aXQgbXVzdCBjb250YWluIGEgUEJYVmFyaWFudEdyb3VwIHRoYXQgaXRzZWxmCisgICAgY29udGFp
bnMgYSBQQlhGaWxlUmVmZXJlbmNlIHJlZmVyZW5jaW5nIHRoZSBwYXRoLgorCisgICAgSWYgcGF0
aCBpcyBub3Qgc3BlY2lmaWVkLCBlaXRoZXIgdGhlIFBCWEZpbGVSZWZlcmVuY2UncyBwYXRoIG9y
IHRoZSBwYXRocworICAgIG9mIGFsbCBjaGlsZHJlbiBvZiB0aGUgUEJYVmFyaWFudEdyb3VwIGFy
ZSB0YWtlbiBhcyBiZWluZyBhZGRlZCB0byB0aGUKKyAgICBwaGFzZS4KKworICAgIElmIHRoZSBw
YXRoIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgcGhhc2UsIHJhaXNlcyBhbiBleGNlcHRpb24u
CisKKyAgICBJZiB0aGUgUEJYRmlsZVJlZmVyZW5jZSBvciBQQlhWYXJpYW50R3JvdXAgcmVmZXJl
bmNlZCBieSBwYnhidWlsZGZpbGUKKyAgICBhcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBwaGFz
ZSwgcmVmZXJlbmNlZCBieSBhIGRpZmZlcmVudCBQQlhCdWlsZEZpbGUKKyAgICBvYmplY3QsIHJh
aXNlcyBhbiBleGNlcHRpb24uICBUaGlzIGRvZXMgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVu
CisgICAgYSBQQlhGaWxlUmVmZXJlbmNlIG9yIFBCWFZhcmlhbnRHcm91cCByZWFwcGVhciBhbmQg
YXJlIHJlZmVyZW5jZWQgYnkgdGhlCisgICAgc2FtZSBQQlhCdWlsZEZpbGUgdGhhdCBoYXMgYWxy
ZWFkeSBpbnRyb2R1Y2VkIHRoZW0sIGJlY2F1c2UgaW4gdGhlIGNhc2UKKyAgICBvZiBQQlhWYXJp
YW50R3JvdXAgb2JqZWN0cywgdGhleSBtYXkgY29ycmVzcG9uZCB0byBtdWx0aXBsZSBwYXRocyB0
aGF0IGFyZQorICAgIG5vdCBhbGwgYWRkZWQgc2ltdWx0YW5lb3VzbHkuICBXaGVuIHRoaXMgc2l0
dWF0aW9uIG9jY3VycywgdGhlIHBhdGggbmVlZHMKKyAgICB0byBiZSBhZGRlZCB0byBfZmlsZXNf
YnlfcGF0aCwgYnV0IG5vdGhpbmcgbmVlZHMgdG8gY2hhbmdlIGluCisgICAgX2ZpbGVzX2J5X3hj
ZmlsZWxpa2VlbGVtZW50LCBhbmQgdGhlIGNhbGxlciBzaG91bGQgaGF2ZSBhdm9pZGVkIGFkZGlu
ZworICAgIHRoZSBQQlhCdWlsZEZpbGUgaWYgaXQgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBs
aXN0IG9mIGNoaWxkcmVuLgorICAgICIiIgorCisgICAgeGNmaWxlbGlrZWVsZW1lbnQgPSBwYnhi
dWlsZGZpbGUuX3Byb3BlcnRpZXNbJ2ZpbGVSZWYnXQorCisgICAgcGF0aHMgPSBbXQorICAgIGlm
IHBhdGggIT0gTm9uZToKKyAgICAgICMgSXQncyBiZXN0IHdoZW4gdGhlIGNhbGxlciBwcm92aWRl
cyB0aGUgcGF0aC4KKyAgICAgIGlmIGlzaW5zdGFuY2UoeGNmaWxlbGlrZWVsZW1lbnQsIFBCWFZh
cmlhbnRHcm91cCk6CisgICAgICAgIHBhdGhzLmFwcGVuZChwYXRoKQorICAgIGVsc2U6CisgICAg
ICAjIElmIHRoZSBjYWxsZXIgZGlkbid0IHByb3ZpZGUgYSBwYXRoLCB0aGVyZSBjYW4gYmUgZWl0
aGVyIG11bHRpcGxlCisgICAgICAjIHBhdGhzIChQQlhWYXJpYW50R3JvdXApIG9yIG9uZS4KKyAg
ICAgIGlmIGlzaW5zdGFuY2UoeGNmaWxlbGlrZWVsZW1lbnQsIFBCWFZhcmlhbnRHcm91cCk6Cisg
ICAgICAgIGZvciB2YXJpYW50IGluIHhjZmlsZWxpa2VlbGVtZW50Ll9wcm9wZXJ0aWVzWydjaGls
ZHJlbiddOgorICAgICAgICAgIHBhdGhzLmFwcGVuZCh2YXJpYW50LkZ1bGxQYXRoKCkpCisgICAg
ICBlbHNlOgorICAgICAgICBwYXRocy5hcHBlbmQoeGNmaWxlbGlrZWVsZW1lbnQuRnVsbFBhdGgo
KSkKKworICAgICMgQWRkIHRoZSBwYXRocyBmaXJzdCwgYmVjYXVzZSBpZiBzb21ldGhpbmcncyBn
b2luZyB0byByYWlzZSwgdGhlCisgICAgIyBtZXNzYWdlcyBwcm92aWRlZCBieSBfQWRkUGF0aFRv
RGljdCBhcmUgbW9yZSB1c2VmdWwgb3dpbmcgdG8gaXRzCisgICAgIyBoYXZpbmcgYWNjZXNzIHRv
IGEgcmVhbCBwYXRobmFtZSBhbmQgbm90IGp1c3QgYW4gb2JqZWN0J3MgTmFtZSgpLgorICAgIGZv
ciBhX3BhdGggaW4gcGF0aHM6CisgICAgICBzZWxmLl9BZGRQYXRoVG9EaWN0KHBieGJ1aWxkZmls
ZSwgYV9wYXRoKQorCisgICAgIyBJZiBhbm90aGVyIFBCWEJ1aWxkRmlsZSByZWZlcmVuY2VzIHRo
aXMgWENGaWxlTGlrZUVsZW1lbnQsIHRoZXJlJ3MgYQorICAgICMgcHJvYmxlbS4KKyAgICBpZiB4
Y2ZpbGVsaWtlZWxlbWVudCBpbiBzZWxmLl9maWxlc19ieV94Y2ZpbGVsaWtlZWxlbWVudCBhbmQg
XAorICAgICAgIHNlbGYuX2ZpbGVzX2J5X3hjZmlsZWxpa2VlbGVtZW50W3hjZmlsZWxpa2VlbGVt
ZW50XSAhPSBwYnhidWlsZGZpbGU6CisgICAgICByYWlzZSBWYWx1ZUVycm9yLCAnRm91bmQgbXVs
dGlwbGUgYnVpbGQgZmlsZXMgZm9yICcgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICB4Y2Zp
bGVsaWtlZWxlbWVudC5OYW1lKCkKKyAgICBzZWxmLl9maWxlc19ieV94Y2ZpbGVsaWtlZWxlbWVu
dFt4Y2ZpbGVsaWtlZWxlbWVudF0gPSBwYnhidWlsZGZpbGUKKworICBkZWYgQXBwZW5kQnVpbGRG
aWxlKHNlbGYsIHBieGJ1aWxkZmlsZSwgcGF0aD1Ob25lKToKKyAgICAjIENhbGxlcnMgc2hvdWxk
IHVzZSB0aGlzIGluc3RlYWQgb2YgY2FsbGluZworICAgICMgQXBwZW5kUHJvcGVydHkoJ2ZpbGVz
JywgcGJ4YnVpbGRmaWxlKSBkaXJlY3RseSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24KKyAgICAjIG1h
aW50YWlucyB0aGUgb2JqZWN0J3MgZGljdHMuICBCZXR0ZXIgeWV0LCBjYWxsZXJzIGNhbiBqdXN0
IGNhbGwgQWRkRmlsZQorICAgICMgd2l0aCBhIHBhdGhuYW1lIGFuZCBub3Qgd29ycnkgYWJvdXQg
YnVpbGRpbmcgdGhlaXIgb3duIFBCWEJ1aWxkRmlsZQorICAgICMgb2JqZWN0cy4KKyAgICBzZWxm
LkFwcGVuZFByb3BlcnR5KCdmaWxlcycsIHBieGJ1aWxkZmlsZSkKKyAgICBzZWxmLl9BZGRCdWls
ZEZpbGVUb0RpY3RzKHBieGJ1aWxkZmlsZSwgcGF0aCkKKworICBkZWYgQWRkRmlsZShzZWxmLCBw
YXRoLCBzZXR0aW5ncz1Ob25lKToKKyAgICAoZmlsZV9ncm91cCwgaGllcmFyY2hpY2FsKSA9IHNl
bGYuRmlsZUdyb3VwKHBhdGgpCisgICAgZmlsZV9yZWYgPSBmaWxlX2dyb3VwLkFkZE9yR2V0Rmls
ZUJ5UGF0aChwYXRoLCBoaWVyYXJjaGljYWwpCisKKyAgICBpZiBmaWxlX3JlZiBpbiBzZWxmLl9m
aWxlc19ieV94Y2ZpbGVsaWtlZWxlbWVudCBhbmQgXAorICAgICAgIGlzaW5zdGFuY2UoZmlsZV9y
ZWYsIFBCWFZhcmlhbnRHcm91cCk6CisgICAgICAjIFRoZXJlJ3MgYWxyZWFkeSBhIFBCWEJ1aWxk
RmlsZSBpbiB0aGlzIHBoYXNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgICAgICAjIFBCWFZhcmlh
bnRHcm91cC4gIHBhdGgganVzdCBwcm92aWRlcyBhIG5ldyB2YXJpYW50IHRoYXQgYmVsb25ncyB0
bworICAgICAgIyB0aGUgZ3JvdXAuICBBZGQgdGhlIHBhdGggdG8gdGhlIGRpY3QuCisgICAgICBw
YnhidWlsZGZpbGUgPSBzZWxmLl9maWxlc19ieV94Y2ZpbGVsaWtlZWxlbWVudFtmaWxlX3JlZl0K
KyAgICAgIHNlbGYuX0FkZEJ1aWxkRmlsZVRvRGljdHMocGJ4YnVpbGRmaWxlLCBwYXRoKQorICAg
IGVsc2U6CisgICAgICAjIEFkZCBhIG5ldyBQQlhCdWlsZEZpbGUgdG8gZ2V0IGZpbGVfcmVmIGlu
dG8gdGhlIHBoYXNlLgorICAgICAgaWYgc2V0dGluZ3MgaXMgTm9uZToKKyAgICAgICAgcGJ4YnVp
bGRmaWxlID0gUEJYQnVpbGRGaWxlKHsnZmlsZVJlZic6IGZpbGVfcmVmfSkKKyAgICAgIGVsc2U6
CisgICAgICAgIHBieGJ1aWxkZmlsZSA9IFBCWEJ1aWxkRmlsZSh7J2ZpbGVSZWYnOiBmaWxlX3Jl
ZiwgJ3NldHRpbmdzJzogc2V0dGluZ3N9KQorICAgICAgc2VsZi5BcHBlbmRCdWlsZEZpbGUocGJ4
YnVpbGRmaWxlLCBwYXRoKQorCisKK2NsYXNzIFBCWEhlYWRlcnNCdWlsZFBoYXNlKFhDQnVpbGRQ
aGFzZSk6CisgICMgTm8gYWRkaXRpb25zIHRvIHRoZSBzY2hlbWEgcmVsYXRpdmUgdG8gWENCdWls
ZFBoYXNlLgorCisgIGRlZiBOYW1lKHNlbGYpOgorICAgIHJldHVybiAnSGVhZGVycycKKworICBk
ZWYgRmlsZUdyb3VwKHNlbGYsIHBhdGgpOgorICAgIHJldHVybiBzZWxmLlBCWFByb2plY3RBbmNl
c3RvcigpLlJvb3RHcm91cEZvclBhdGgocGF0aCkKKworCitjbGFzcyBQQlhSZXNvdXJjZXNCdWls
ZFBoYXNlKFhDQnVpbGRQaGFzZSk6CisgICMgTm8gYWRkaXRpb25zIHRvIHRoZSBzY2hlbWEgcmVs
YXRpdmUgdG8gWENCdWlsZFBoYXNlLgorCisgIGRlZiBOYW1lKHNlbGYpOgorICAgIHJldHVybiAn
UmVzb3VyY2VzJworCisgIGRlZiBGaWxlR3JvdXAoc2VsZiwgcGF0aCk6CisgICAgcmV0dXJuIHNl
bGYuUEJYUHJvamVjdEFuY2VzdG9yKCkuUm9vdEdyb3VwRm9yUGF0aChwYXRoKQorCisKK2NsYXNz
IFBCWFNvdXJjZXNCdWlsZFBoYXNlKFhDQnVpbGRQaGFzZSk6CisgICMgTm8gYWRkaXRpb25zIHRv
IHRoZSBzY2hlbWEgcmVsYXRpdmUgdG8gWENCdWlsZFBoYXNlLgorCisgIGRlZiBOYW1lKHNlbGYp
OgorICAgIHJldHVybiAnU291cmNlcycKKworICBkZWYgRmlsZUdyb3VwKHNlbGYsIHBhdGgpOgor
ICAgIHJldHVybiBzZWxmLlBCWFByb2plY3RBbmNlc3RvcigpLlJvb3RHcm91cEZvclBhdGgocGF0
aCkKKworCitjbGFzcyBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZShYQ0J1aWxkUGhhc2UpOgorICAj
IE5vIGFkZGl0aW9ucyB0byB0aGUgc2NoZW1hIHJlbGF0aXZlIHRvIFhDQnVpbGRQaGFzZS4KKwor
ICBkZWYgTmFtZShzZWxmKToKKyAgICByZXR1cm4gJ0ZyYW1ld29ya3MnCisKKyAgZGVmIEZpbGVH
cm91cChzZWxmLCBwYXRoKToKKyAgICAocm9vdCwgZXh0KSA9IHBvc2l4cGF0aC5zcGxpdGV4dChw
YXRoKQorICAgIGlmIGV4dCAhPSAnJzoKKyAgICAgIGV4dCA9IGV4dFsxOl0ubG93ZXIoKQorICAg
IGlmIGV4dCA9PSAnbyc6CisgICAgICAjIC5vIGZpbGVzIGFyZSBhZGRlZCB0byBYY29kZSBGcmFt
ZXdvcmtzIHBoYXNlcywgYnV0IGNvbmNlcHR1YWxseSBhcmVuJ3QKKyAgICAgICMgZnJhbWV3b3Jr
cywgdGhleSdyZSBtb3JlIGxpa2Ugc291cmNlcyBvciBpbnRlcm1lZGlhdGVzLiBSZWRpcmVjdCB0
aGVtCisgICAgICAjIHRvIHNob3cgdXAgaW4gb25lIG9mIHRob3NlIG90aGVyIGdyb3Vwcy4KKyAg
ICAgIHJldHVybiBzZWxmLlBCWFByb2plY3RBbmNlc3RvcigpLlJvb3RHcm91cEZvclBhdGgocGF0
aCkKKyAgICBlbHNlOgorICAgICAgcmV0dXJuIChzZWxmLlBCWFByb2plY3RBbmNlc3RvcigpLkZy
YW1ld29ya3NHcm91cCgpLCBGYWxzZSkKKworCitjbGFzcyBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2UoWENCdWlsZFBoYXNlKToKKyAgX3NjaGVtYSA9IFhDQnVpbGRQaGFzZS5fc2NoZW1hLmNvcHko
KQorICBfc2NoZW1hLnVwZGF0ZSh7CisgICAgJ2lucHV0UGF0aHMnOiAgICAgICBbMSwgc3RyLCAw
LCAxLCBbXV0sCisgICAgJ25hbWUnOiAgICAgICAgICAgICBbMCwgc3RyLCAwLCAwXSwKKyAgICAn
b3V0cHV0UGF0aHMnOiAgICAgIFsxLCBzdHIsIDAsIDEsIFtdXSwKKyAgICAnc2hlbGxQYXRoJzog
ICAgICAgIFswLCBzdHIsIDAsIDEsICcvYmluL3NoJ10sCisgICAgJ3NoZWxsU2NyaXB0JzogICAg
ICBbMCwgc3RyLCAwLCAxXSwKKyAgICAnc2hvd0VudlZhcnNJbkxvZyc6IFswLCBpbnQsIDAsIDBd
LAorICB9KQorCisgIGRlZiBOYW1lKHNlbGYpOgorICAgIGlmICduYW1lJyBpbiBzZWxmLl9wcm9w
ZXJ0aWVzOgorICAgICAgcmV0dXJuIHNlbGYuX3Byb3BlcnRpZXNbJ25hbWUnXQorCisgICAgcmV0
dXJuICdTaGVsbFNjcmlwdCcKKworCitjbGFzcyBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlKFhDQnVp
bGRQaGFzZSk6CisgIF9zY2hlbWEgPSBYQ0J1aWxkUGhhc2UuX3NjaGVtYS5jb3B5KCkKKyAgX3Nj
aGVtYS51cGRhdGUoeworICAgICdkc3RQYXRoJzogICAgICAgICAgWzAsIHN0ciwgMCwgMV0sCisg
ICAgJ2RzdFN1YmZvbGRlclNwZWMnOiBbMCwgaW50LCAwLCAxXSwKKyAgICAnbmFtZSc6ICAgICAg
ICAgICAgIFswLCBzdHIsIDAsIDBdLAorICB9KQorCisgICMgcGF0aF90cmVlX3JlIG1hdGNoZXMg
IiQoRElSKS9wYXRoIiBvciBqdXN0ICIkKERJUikiLiAgTWF0Y2ggZ3JvdXAgMSBpcworICAjICJE
SVIiLCBtYXRjaCBncm91cCAzIGlzICJwYXRoIiBvciBOb25lLgorICBwYXRoX3RyZWVfcmUgPSBy
ZS5jb21waWxlKCdeXFwkXFwoKC4qKVxcKSgvKC4qKXwpJCcpCisKKyAgIyBwYXRoX3RyZWVfdG9f
c3ViZm9sZGVyIG1hcHMgbmFtZXMgb2YgWGNvZGUgdmFyaWFibGVzIHRvIHRoZSBhc3NvY2lhdGVk
CisgICMgZHN0U3ViZm9sZGVyU3BlYyBwcm9wZXJ0eSB2YWx1ZSB1c2VkIGluIGEgUEJYQ29weUZp
bGVzQnVpbGRQaGFzZSBvYmplY3QuCisgIHBhdGhfdHJlZV90b19zdWJmb2xkZXIgPSB7CisgICAg
J0JVSUxUX1BST0RVQ1RTX0RJUic6IDE2LCAgIyBQcm9kdWN0cyBEaXJlY3RvcnkKKyAgICAjIE90
aGVyIHR5cGVzIHRoYXQgY2FuIGJlIGNob3NlbiB2aWEgdGhlIFhjb2RlIFVJLgorICAgICMgVE9E
TyhtYXJrKTogTWFwIFhjb2RlIHZhcmlhYmxlIG5hbWVzIHRvIHRoZXNlLgorICAgICMgOiAxLCAg
IyBXcmFwcGVyCisgICAgIyA6IDYsICAjIEV4ZWN1dGFibGVzOiA2CisgICAgIyA6IDcsICAjIFJl
c291cmNlcworICAgICMgOiAxNSwgICMgSmF2YSBSZXNvdXJjZXMKKyAgICAjIDogMTAsICAjIEZy
YW1ld29ya3MKKyAgICAjIDogMTEsICAjIFNoYXJlZCBGcmFtZXdvcmtzCisgICAgIyA6IDEyLCAg
IyBTaGFyZWQgU3VwcG9ydAorICAgICMgOiAxMywgICMgUGx1Z0lucworICB9CisKKyAgZGVmIE5h
bWUoc2VsZik6CisgICAgaWYgJ25hbWUnIGluIHNlbGYuX3Byb3BlcnRpZXM6CisgICAgICByZXR1
cm4gc2VsZi5fcHJvcGVydGllc1snbmFtZSddCisKKyAgICByZXR1cm4gJ0NvcHlGaWxlcycKKwor
ICBkZWYgRmlsZUdyb3VwKHNlbGYsIHBhdGgpOgorICAgIHJldHVybiBzZWxmLlBCWFByb2plY3RB
bmNlc3RvcigpLlJvb3RHcm91cEZvclBhdGgocGF0aCkKKworICBkZWYgU2V0RGVzdGluYXRpb24o
c2VsZiwgcGF0aCk6CisgICAgIiIiU2V0IHRoZSBkc3RTdWJmb2xkZXJTcGVjIGFuZCBkc3RQYXRo
IHByb3BlcnRpZXMgZnJvbSBwYXRoLgorCisgICAgcGF0aCBtYXkgYmUgc3BlY2lmaWVkIGluIHRo
ZSBzYW1lIG5vdGF0aW9uIHVzZWQgZm9yIFhDSGllcmFyY2hpY2FsRWxlbWVudHMsCisgICAgc3Bl
Y2lmaWNhbGx5LCAiJChESVIpL3BhdGgiLgorICAgICIiIgorCisgICAgcGF0aF90cmVlX21hdGNo
ID0gc2VsZi5wYXRoX3RyZWVfcmUuc2VhcmNoKHBhdGgpCisgICAgaWYgcGF0aF90cmVlX21hdGNo
OgorICAgICAgIyBFdmVyeXRoaW5nIGVsc2UgbmVlZHMgdG8gYmUgcmVsYXRpdmUgdG8gYW4gWGNv
ZGUgdmFyaWFibGUuCisgICAgICBwYXRoX3RyZWUgPSBwYXRoX3RyZWVfbWF0Y2guZ3JvdXAoMSkK
KyAgICAgIHJlbGF0aXZlX3BhdGggPSBwYXRoX3RyZWVfbWF0Y2guZ3JvdXAoMykKKworICAgICAg
aWYgcGF0aF90cmVlIGluIHNlbGYucGF0aF90cmVlX3RvX3N1YmZvbGRlcjoKKyAgICAgICAgc3Vi
Zm9sZGVyID0gc2VsZi5wYXRoX3RyZWVfdG9fc3ViZm9sZGVyW3BhdGhfdHJlZV0KKyAgICAgICAg
aWYgcmVsYXRpdmVfcGF0aCA9PSBOb25lOgorICAgICAgICAgIHJlbGF0aXZlX3BhdGggPSAnJwor
ICAgICAgZWxzZToKKyAgICAgICAgIyBUaGUgcGF0aCBzdGFydHMgd2l0aCBhbiB1bnJlY29nbml6
ZWQgWGNvZGUgdmFyaWFibGUKKyAgICAgICAgIyBuYW1lIGxpa2UgJChTUkNST09UKS4gIFhjb2Rl
IHdpbGwgc3RpbGwgaGFuZGxlIHRoaXMKKyAgICAgICAgIyBhcyBhbiAiYWJzb2x1dGUgcGF0aCIg
dGhhdCBzdGFydHMgd2l0aCB0aGUgdmFyaWFibGUuCisgICAgICAgIHN1YmZvbGRlciA9IDAKKyAg
ICAgICAgcmVsYXRpdmVfcGF0aCA9IHBhdGgKKyAgICBlbGlmIHBhdGguc3RhcnRzd2l0aCgnLycp
OgorICAgICAgIyBTcGVjaWFsIGNhc2UuICBBYnNvbHV0ZSBwYXRocyBhcmUgaW4gZHN0U3ViZm9s
ZGVyU3BlYyAwLgorICAgICAgc3ViZm9sZGVyID0gMAorICAgICAgcmVsYXRpdmVfcGF0aCA9IHBh
dGhbMTpdCisgICAgZWxzZToKKyAgICAgIHJhaXNlIFZhbHVlRXJyb3IsICdDYW5cJ3QgdXNlIHBh
dGggJXMgaW4gYSAlcycgJSBcCisgICAgICAgICAgICAgICAgICAgICAgICAocGF0aCwgc2VsZi5f
X2NsYXNzX18uX19uYW1lX18pCisKKyAgICBzZWxmLl9wcm9wZXJ0aWVzWydkc3RQYXRoJ10gPSBy
ZWxhdGl2ZV9wYXRoCisgICAgc2VsZi5fcHJvcGVydGllc1snZHN0U3ViZm9sZGVyU3BlYyddID0g
c3ViZm9sZGVyCisKKworY2xhc3MgUEJYQnVpbGRSdWxlKFhDT2JqZWN0KToKKyAgX3NjaGVtYSA9
IFhDT2JqZWN0Ll9zY2hlbWEuY29weSgpCisgIF9zY2hlbWEudXBkYXRlKHsKKyAgICAnY29tcGls
ZXJTcGVjJzogWzAsIHN0ciwgMCwgMV0sCisgICAgJ2ZpbGVQYXR0ZXJucyc6IFswLCBzdHIsIDAs
IDBdLAorICAgICdmaWxlVHlwZSc6ICAgICBbMCwgc3RyLCAwLCAxXSwKKyAgICAnaXNFZGl0YWJs
ZSc6ICAgWzAsIGludCwgMCwgMSwgMV0sCisgICAgJ291dHB1dEZpbGVzJzogIFsxLCBzdHIsIDAs
IDEsIFtdXSwKKyAgICAnc2NyaXB0JzogICAgICAgWzAsIHN0ciwgMCwgMF0sCisgIH0pCisKKyAg
ZGVmIE5hbWUoc2VsZik6CisgICAgIyBOb3QgdmVyeSBpbnNwaXJlZCwgYnV0IGl0J3Mgd2hhdCBY
Y29kZSB1c2VzLgorICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXworCisgIGRlZiBI
YXNoYWJsZXMoc2VsZik6CisgICAgIyBzdXBlcgorICAgIGhhc2hhYmxlcyA9IFhDT2JqZWN0Lkhh
c2hhYmxlcyhzZWxmKQorCisgICAgIyBVc2UgdGhlIGhhc2hhYmxlcyBvZiB0aGUgd2VhayBvYmpl
Y3RzIHRoYXQgdGhpcyBvYmplY3QgcmVmZXJzIHRvLgorICAgIGhhc2hhYmxlcy5hcHBlbmQoc2Vs
Zi5fcHJvcGVydGllc1snZmlsZVR5cGUnXSkKKyAgICBpZiAnZmlsZVBhdHRlcm5zJyBpbiBzZWxm
Ll9wcm9wZXJ0aWVzOgorICAgICAgaGFzaGFibGVzLmFwcGVuZChzZWxmLl9wcm9wZXJ0aWVzWydm
aWxlUGF0dGVybnMnXSkKKyAgICByZXR1cm4gaGFzaGFibGVzCisKKworY2xhc3MgUEJYQ29udGFp
bmVySXRlbVByb3h5KFhDT2JqZWN0KToKKyAgIyBXaGVuIHJlZmVyZW5jaW5nIGFuIGl0ZW0gaW4g
dGhpcyBwcm9qZWN0IGZpbGUsIGNvbnRhaW5lclBvcnRhbCBpcyB0aGUKKyAgIyBQQlhQcm9qZWN0
IHJvb3Qgb2JqZWN0IG9mIHRoaXMgcHJvamVjdCBmaWxlLiAgV2hlbiByZWZlcmVuY2luZyBhbiBp
dGVtIGluCisgICMgYW5vdGhlciBwcm9qZWN0IGZpbGUsIGNvbnRhaW5lclBvcnRhbCBpcyBhIFBC
WEZpbGVSZWZlcmVuY2UgaWRlbnRpZnlpbmcKKyAgIyB0aGUgb3RoZXIgcHJvamVjdCBmaWxlLgor
ICAjCisgICMgV2hlbiBzZXJ2aW5nIGFzIGEgcHJveHkgdG8gYW4gWENUYXJnZXQgKGluIHRoaXMg
cHJvamVjdCBmaWxlIG9yIGFub3RoZXIpLAorICAjIHByb3h5VHlwZSBpcyAxLiAgV2hlbiBzZXJ2
aW5nIGFzIGEgcHJveHkgdG8gYSBQQlhGaWxlUmVmZXJlbmNlIChpbiBhbm90aGVyCisgICMgcHJv
amVjdCBmaWxlKSwgcHJveHlUeXBlIGlzIDIuICBUeXBlIDIgaXMgdXNlZCBmb3IgcmVmZXJlbmNl
cyB0byB0aGUKKyAgIyBwcm9kdWNzIG9mIHRoZSBvdGhlciBwcm9qZWN0IGZpbGUncyB0YXJnZXRz
LgorICAjCisgICMgWGNvZGUgaXMgd2VpcmQgYWJvdXQgcmVtb3RlR2xvYmFsSURTdHJpbmcuICBV
c3VhbGx5LCBpdCdzIHByaW50ZWQgd2l0aG91dAorICAjIGEgY29tbWVudCwgaW5kaWNhdGluZyB0
aGF0IGl0J3MgdHJhY2tlZCBpbnRlcm5hbGx5IHNpbXBseSBhcyBhIHN0cmluZywgYnV0CisgICMg
c29tZXRpbWVzIGl0J3MgcHJpbnRlZCB3aXRoIGEgY29tbWVudCAodXN1YWxseSB3aGVuIHRoZSBv
YmplY3QgaXMgaW5pdGlhbGx5CisgICMgY3JlYXRlZCksIGluZGljYXRpbmcgdGhhdCBpdCdzIHRy
YWNrZWQgYXMgYSBwcm9qZWN0IGZpbGUgb2JqZWN0IGF0IGxlYXN0CisgICMgc29tZXRpbWVzLiAg
VGhpcyBtb2R1bGUgYWx3YXlzIHRyYWNrcyBpdCBhcyBhbiBvYmplY3QsIGJ1dCBjb250YWlucyBh
IGhhY2sKKyAgIyB0byBwcmV2ZW50IGl0IGZyb20gcHJpbnRpbmcgdGhlIGNvbW1lbnQgaW4gdGhl
IHByb2plY3QgZmlsZSBvdXRwdXQuICBTZWUKKyAgIyBfWENLVlByaW50LgorICBfc2NoZW1hID0g
WENPYmplY3QuX3NjaGVtYS5jb3B5KCkKKyAgX3NjaGVtYS51cGRhdGUoeworICAgICdjb250YWlu
ZXJQb3J0YWwnOiAgICAgIFswLCBYQ0NvbnRhaW5lclBvcnRhbCwgMCwgMV0sCisgICAgJ3Byb3h5
VHlwZSc6ICAgICAgICAgICAgWzAsIGludCwgICAgICAgICAgICAgICAwLCAxXSwKKyAgICAncmVt
b3RlR2xvYmFsSURTdHJpbmcnOiBbMCwgWENSZW1vdGVPYmplY3QsICAgIDAsIDFdLAorICAgICdy
ZW1vdGVJbmZvJzogICAgICAgICAgIFswLCBzdHIsICAgICAgICAgICAgICAgMCwgMV0sCisgIH0p
CisKKyAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgIHByb3BzID0gc2VsZi5fcHJvcGVydGllcwor
ICAgIG5hbWUgPSAnJXMuZ3lwOiVzJyAlIChwcm9wc1snY29udGFpbmVyUG9ydGFsJ10uTmFtZSgp
LCBwcm9wc1sncmVtb3RlSW5mbyddKQorICAgIHJldHVybiAnPCVzICVyIGF0IDB4JXg+JyAlIChz
ZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSwgaWQoc2VsZikpCisKKyAgZGVmIE5hbWUoc2Vs
Zik6CisgICAgIyBBZG1pdHRlZGx5IG5vdCB0aGUgYmVzdCBuYW1lLCBidXQgaXQncyB3aGF0IFhj
b2RlIHVzZXMuCisgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fCisKKyAgZGVmIEhh
c2hhYmxlcyhzZWxmKToKKyAgICAjIHN1cGVyCisgICAgaGFzaGFibGVzID0gWENPYmplY3QuSGFz
aGFibGVzKHNlbGYpCisKKyAgICAjIFVzZSB0aGUgaGFzaGFibGVzIG9mIHRoZSB3ZWFrIG9iamVj
dHMgdGhhdCB0aGlzIG9iamVjdCByZWZlcnMgdG8uCisgICAgaGFzaGFibGVzLmV4dGVuZChzZWxm
Ll9wcm9wZXJ0aWVzWydjb250YWluZXJQb3J0YWwnXS5IYXNoYWJsZXMoKSkKKyAgICBoYXNoYWJs
ZXMuZXh0ZW5kKHNlbGYuX3Byb3BlcnRpZXNbJ3JlbW90ZUdsb2JhbElEU3RyaW5nJ10uSGFzaGFi
bGVzKCkpCisgICAgcmV0dXJuIGhhc2hhYmxlcworCisKK2NsYXNzIFBCWFRhcmdldERlcGVuZGVu
Y3koWENPYmplY3QpOgorICAjIFRoZSAidGFyZ2V0IiBwcm9wZXJ0eSBhY2NlcHRzIGFuIFhDVGFy
Z2V0IG9iamVjdCwgYW5kIG9idmlvdXNseSBub3QKKyAgIyBOb25lVHlwZS4gIEJ1dCBYQ1Rhcmdl
dCBpcyBkZWZpbmVkIGJlbG93LCBzbyBpdCBjYW4ndCBiZSBwdXQgaW50byB0aGUKKyAgIyBzY2hl
bWEgeWV0LiAgVGhlIGRlZmluaXRpb24gb2YgUEJYVGFyZ2V0RGVwZW5kZW5jeSBjYW4ndCBiZSBt
b3ZlZCBiZWxvdworICAjIFhDVGFyZ2V0IGJlY2F1c2UgWENUYXJnZXQncyBvd24gc2NoZW1hIHJl
ZmVyZW5jZXMgUEJYVGFyZ2V0RGVwZW5kZW5jeS4KKyAgIyBQeXRob24gZG9lc24ndCBkZWFsIHdl
bGwgd2l0aCB0aGlzIGNpcmN1bGFyIHJlbGF0aW9uc2hpcCwgYW5kIGRvZXNuJ3QgaGF2ZQorICAj
IGEgcmVhbCB3YXkgdG8gZG8gZm9yd2FyZCBkZWNsYXJhdGlvbnMuICBUbyB3b3JrIGFyb3VuZCwg
dGhlIHR5cGUgb2YKKyAgIyB0aGUgInRhcmdldCIgcHJvcGVydHkgaXMgcmVzZXQgYmVsb3csIGFm
dGVyIFhDVGFyZ2V0IGlzIGRlZmluZWQuCisgICMKKyAgIyBBdCBsZWFzdCBvbmUgb2YgIm5hbWUi
IGFuZCAidGFyZ2V0IiBpcyByZXF1aXJlZC4KKyAgX3NjaGVtYSA9IFhDT2JqZWN0Ll9zY2hlbWEu
Y29weSgpCisgIF9zY2hlbWEudXBkYXRlKHsKKyAgICAnbmFtZSc6ICAgICAgICBbMCwgc3RyLCAg
ICAgICAgICAgICAgICAgICAwLCAwXSwKKyAgICAndGFyZ2V0JzogICAgICBbMCwgTm9uZS5fX2Ns
YXNzX18sICAgICAgICAwLCAwXSwKKyAgICAndGFyZ2V0UHJveHknOiBbMCwgUEJYQ29udGFpbmVy
SXRlbVByb3h5LCAxLCAxXSwKKyAgfSkKKworICBkZWYgX19yZXByX18oc2VsZik6CisgICAgbmFt
ZSA9IHNlbGYuX3Byb3BlcnRpZXMuZ2V0KCduYW1lJykgb3Igc2VsZi5fcHJvcGVydGllc1sndGFy
Z2V0J10uTmFtZSgpCisgICAgcmV0dXJuICc8JXMgJXIgYXQgMHgleD4nICUgKHNlbGYuX19jbGFz
c19fLl9fbmFtZV9fLCBuYW1lLCBpZChzZWxmKSkKKworICBkZWYgTmFtZShzZWxmKToKKyAgICAj
IEFkbWl0dGVkbHkgbm90IHRoZSBiZXN0IG5hbWUsIGJ1dCBpdCdzIHdoYXQgWGNvZGUgdXNlcy4K
KyAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18uX19uYW1lX18KKworICBkZWYgSGFzaGFibGVzKHNl
bGYpOgorICAgICMgc3VwZXIKKyAgICBoYXNoYWJsZXMgPSBYQ09iamVjdC5IYXNoYWJsZXMoc2Vs
ZikKKworICAgICMgVXNlIHRoZSBoYXNoYWJsZXMgb2YgdGhlIHdlYWsgb2JqZWN0cyB0aGF0IHRo
aXMgb2JqZWN0IHJlZmVycyB0by4KKyAgICBoYXNoYWJsZXMuZXh0ZW5kKHNlbGYuX3Byb3BlcnRp
ZXNbJ3RhcmdldFByb3h5J10uSGFzaGFibGVzKCkpCisgICAgcmV0dXJuIGhhc2hhYmxlcworCisK
K2NsYXNzIFBCWFJlZmVyZW5jZVByb3h5KFhDRmlsZUxpa2VFbGVtZW50KToKKyAgX3NjaGVtYSA9
IFhDRmlsZUxpa2VFbGVtZW50Ll9zY2hlbWEuY29weSgpCisgIF9zY2hlbWEudXBkYXRlKHsKKyAg
ICAnZmlsZVR5cGUnOiAgWzAsIHN0ciwgICAgICAgICAgICAgICAgICAgMCwgMV0sCisgICAgJ3Bh
dGgnOiAgICAgIFswLCBzdHIsICAgICAgICAgICAgICAgICAgIDAsIDFdLAorICAgICdyZW1vdGVS
ZWYnOiBbMCwgUEJYQ29udGFpbmVySXRlbVByb3h5LCAxLCAxXSwKKyAgfSkKKworCitjbGFzcyBY
Q1RhcmdldChYQ1JlbW90ZU9iamVjdCk6CisgICMgQW4gWENUYXJnZXQgaXMgcmVhbGx5IGp1c3Qg
YW4gWENPYmplY3QsIHRoZSBYQ1JlbW90ZU9iamVjdCB0aGluZyBpcyBqdXN0CisgICMgdG8gYWxs
b3cgUEJYUHJvamVjdCB0byBiZSB1c2VkIGluIHRoZSByZW1vdGVHbG9iYWxJRFN0cmluZyBwcm9w
ZXJ0eSBvZgorICAjIFBCWENvbnRhaW5lckl0ZW1Qcm94eS4KKyAgIworICAjIFNldHRpbmcgYSAi
bmFtZSIgcHJvcGVydHkgYXQgaW5zdGFudGlhdGlvbiBtYXkgYWxzbyBhZmZlY3QgInByb2R1Y3RO
YW1lIiwKKyAgIyB3aGljaCBtYXkgaW4gdHVybiBhZmZlY3QgdGhlICJQUk9EVUNUX05BTUUiIGJ1
aWxkIHNldHRpbmcgaW4gY2hpbGRyZW4gb2YKKyAgIyAiYnVpbGRDb25maWd1cmF0aW9uTGlzdCIu
ICBTZWUgX19pbml0X18gYmVsb3cuCisgIF9zY2hlbWEgPSBYQ1JlbW90ZU9iamVjdC5fc2NoZW1h
LmNvcHkoKQorICBfc2NoZW1hLnVwZGF0ZSh7CisgICAgJ2J1aWxkQ29uZmlndXJhdGlvbkxpc3Qn
OiBbMCwgWENDb25maWd1cmF0aW9uTGlzdCwgMSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBYQ0NvbmZpZ3VyYXRpb25MaXN0KCldLAorICAgICdidWlsZFBoYXNlcyc6ICAgICAg
ICAgICAgWzEsIFhDQnVpbGRQaGFzZSwgICAgICAgIDEsIDEsIFtdXSwKKyAgICAnZGVwZW5kZW5j
aWVzJzogICAgICAgICAgIFsxLCBQQlhUYXJnZXREZXBlbmRlbmN5LCAxLCAxLCBbXV0sCisgICAg
J25hbWUnOiAgICAgICAgICAgICAgICAgICBbMCwgc3RyLCAgICAgICAgICAgICAgICAgMCwgMV0s
CisgICAgJ3Byb2R1Y3ROYW1lJzogICAgICAgICAgICBbMCwgc3RyLCAgICAgICAgICAgICAgICAg
MCwgMV0sCisgIH0pCisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3BlcnRpZXM9Tm9uZSwgaWQ9
Tm9uZSwgcGFyZW50PU5vbmUsCisgICAgICAgICAgICAgICBmb3JjZV9vdXRkaXI9Tm9uZSwgZm9y
Y2VfcHJlZml4PU5vbmUsIGZvcmNlX2V4dGVuc2lvbj1Ob25lKToKKyAgICAjIHN1cGVyCisgICAg
WENSZW1vdGVPYmplY3QuX19pbml0X18oc2VsZiwgcHJvcGVydGllcywgaWQsIHBhcmVudCkKKwor
ICAgICMgU2V0IHVwIGFkZGl0aW9uYWwgZGVmYXVsdHMgbm90IGV4cHJlc3NlZCBpbiB0aGUgc2No
ZW1hLiAgSWYgYSAibmFtZSIKKyAgICAjIHByb3BlcnR5IHdhcyBzdXBwbGllZCwgc2V0ICJwcm9k
dWN0TmFtZSIgaWYgaXQgaXMgbm90IHByZXNlbnQuICBBbHNvIHNldAorICAgICMgdGhlICJQUk9E
VUNUX05BTUUiIGJ1aWxkIHNldHRpbmcgaW4gZWFjaCBjb25maWd1cmF0aW9uLCBidXQgb25seSBp
ZgorICAgICMgdGhlIHNldHRpbmcgaXMgbm90IHByZXNlbnQgaW4gYW55IGJ1aWxkIGNvbmZpZ3Vy
YXRpb24uCisgICAgaWYgJ25hbWUnIGluIHNlbGYuX3Byb3BlcnRpZXM6CisgICAgICBpZiBub3Qg
J3Byb2R1Y3ROYW1lJyBpbiBzZWxmLl9wcm9wZXJ0aWVzOgorICAgICAgICBzZWxmLlNldFByb3Bl
cnR5KCdwcm9kdWN0TmFtZScsIHNlbGYuX3Byb3BlcnRpZXNbJ25hbWUnXSkKKworICAgIGlmICdw
cm9kdWN0TmFtZScgaW4gc2VsZi5fcHJvcGVydGllczoKKyAgICAgIGlmICdidWlsZENvbmZpZ3Vy
YXRpb25MaXN0JyBpbiBzZWxmLl9wcm9wZXJ0aWVzOgorICAgICAgICBjb25maWdzID0gc2VsZi5f
cHJvcGVydGllc1snYnVpbGRDb25maWd1cmF0aW9uTGlzdCddCisgICAgICAgIGlmIGNvbmZpZ3Mu
SGFzQnVpbGRTZXR0aW5nKCdQUk9EVUNUX05BTUUnKSA9PSAwOgorICAgICAgICAgIGNvbmZpZ3Mu
U2V0QnVpbGRTZXR0aW5nKCdQUk9EVUNUX05BTUUnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3Byb3BlcnRpZXNbJ3Byb2R1Y3ROYW1lJ10pCisKKyAgZGVmIEFkZERl
cGVuZGVuY3koc2VsZiwgb3RoZXIpOgorICAgIHBieHByb2plY3QgPSBzZWxmLlBCWFByb2plY3RB
bmNlc3RvcigpCisgICAgb3RoZXJfcGJ4cHJvamVjdCA9IG90aGVyLlBCWFByb2plY3RBbmNlc3Rv
cigpCisgICAgaWYgcGJ4cHJvamVjdCA9PSBvdGhlcl9wYnhwcm9qZWN0OgorICAgICAgIyBUaGUg
ZWFzeSBjYXNlLiAgQWRkIGEgZGVwZW5kZW5jeSB0byBhbm90aGVyIHRhcmdldCBpbiB0aGUgc2Ft
ZQorICAgICAgIyBwcm9qZWN0IGZpbGUuCisgICAgICBjb250YWluZXIgPSBQQlhDb250YWluZXJJ
dGVtUHJveHkoeydjb250YWluZXJQb3J0YWwnOiAgICAgIHBieHByb2plY3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm94eVR5cGUnOiAgICAgICAgICAgIDEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZW1vdGVHbG9iYWxJ
RFN0cmluZyc6IG90aGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncmVtb3RlSW5mbyc6ICAgICAgICAgICBvdGhlci5OYW1lKCl9KQorICAgICAgZGVwZW5kZW5j
eSA9IFBCWFRhcmdldERlcGVuZGVuY3koeyd0YXJnZXQnOiAgICAgIG90aGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YXJnZXRQcm94eSc6IGNvbnRhaW5lcn0p
CisgICAgICBzZWxmLkFwcGVuZFByb3BlcnR5KCdkZXBlbmRlbmNpZXMnLCBkZXBlbmRlbmN5KQor
ICAgIGVsc2U6CisgICAgICAjIFRoZSBoYXJkIGNhc2UuICBBZGQgYSBkZXBlbmRlbmN5IHRvIGEg
dGFyZ2V0IGluIGEgZGlmZmVyZW50IHByb2plY3QKKyAgICAgICMgZmlsZS4gIEFjdHVhbGx5LCB0
aGlzIGNhc2UgaXNuJ3QgcmVhbGx5IHNvIGhhcmQuCisgICAgICBvdGhlcl9wcm9qZWN0X3JlZiA9
IFwKKyAgICAgICAgICBwYnhwcm9qZWN0LkFkZE9yR2V0UHJvamVjdFJlZmVyZW5jZShvdGhlcl9w
Ynhwcm9qZWN0KVsxXQorICAgICAgY29udGFpbmVyID0gUEJYQ29udGFpbmVySXRlbVByb3h5KHsK
KyAgICAgICAgICAgICdjb250YWluZXJQb3J0YWwnOiAgICAgIG90aGVyX3Byb2plY3RfcmVmLAor
ICAgICAgICAgICAgJ3Byb3h5VHlwZSc6ICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICdyZW1v
dGVHbG9iYWxJRFN0cmluZyc6IG90aGVyLAorICAgICAgICAgICAgJ3JlbW90ZUluZm8nOiAgICAg
ICAgICAgb3RoZXIuTmFtZSgpLAorICAgICAgICAgIH0pCisgICAgICBkZXBlbmRlbmN5ID0gUEJY
VGFyZ2V0RGVwZW5kZW5jeSh7J25hbWUnOiAgICAgICAgb3RoZXIuTmFtZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YXJnZXRQcm94eSc6IGNvbnRhaW5lcn0p
CisgICAgICBzZWxmLkFwcGVuZFByb3BlcnR5KCdkZXBlbmRlbmNpZXMnLCBkZXBlbmRlbmN5KQor
CisgICMgUHJveHkgYWxsIG9mIHRoZXNlIHRocm91Z2ggdG8gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdC4KKworICBkZWYgQ29uZmlndXJhdGlvbk5hbWVkKHNlbGYsIG5hbWUpOgorICAgIHJl
dHVybiBzZWxmLl9wcm9wZXJ0aWVzWydidWlsZENvbmZpZ3VyYXRpb25MaXN0J10uQ29uZmlndXJh
dGlvbk5hbWVkKG5hbWUpCisKKyAgZGVmIERlZmF1bHRDb25maWd1cmF0aW9uKHNlbGYpOgorICAg
IHJldHVybiBzZWxmLl9wcm9wZXJ0aWVzWydidWlsZENvbmZpZ3VyYXRpb25MaXN0J10uRGVmYXVs
dENvbmZpZ3VyYXRpb24oKQorCisgIGRlZiBIYXNCdWlsZFNldHRpbmcoc2VsZiwga2V5KToKKyAg
ICByZXR1cm4gc2VsZi5fcHJvcGVydGllc1snYnVpbGRDb25maWd1cmF0aW9uTGlzdCddLkhhc0J1
aWxkU2V0dGluZyhrZXkpCisKKyAgZGVmIEdldEJ1aWxkU2V0dGluZyhzZWxmLCBrZXkpOgorICAg
IHJldHVybiBzZWxmLl9wcm9wZXJ0aWVzWydidWlsZENvbmZpZ3VyYXRpb25MaXN0J10uR2V0QnVp
bGRTZXR0aW5nKGtleSkKKworICBkZWYgU2V0QnVpbGRTZXR0aW5nKHNlbGYsIGtleSwgdmFsdWUp
OgorICAgIHJldHVybiBzZWxmLl9wcm9wZXJ0aWVzWydidWlsZENvbmZpZ3VyYXRpb25MaXN0J10u
U2V0QnVpbGRTZXR0aW5nKGtleSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKQorCisgIGRlZiBBcHBl
bmRCdWlsZFNldHRpbmcoc2VsZiwga2V5LCB2YWx1ZSk6CisgICAgcmV0dXJuIHNlbGYuX3Byb3Bl
cnRpZXNbJ2J1aWxkQ29uZmlndXJhdGlvbkxpc3QnXS5BcHBlbmRCdWlsZFNldHRpbmcoa2V5LCBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFsdWUpCisKKyAgZGVmIERlbEJ1aWxkU2V0dGluZyhzZWxmLCBr
ZXkpOgorICAgIHJldHVybiBzZWxmLl9wcm9wZXJ0aWVzWydidWlsZENvbmZpZ3VyYXRpb25MaXN0
J10uRGVsQnVpbGRTZXR0aW5nKGtleSkKKworCisjIFJlZGVmaW5lIHRoZSB0eXBlIG9mIHRoZSAi
dGFyZ2V0IiBwcm9wZXJ0eS4gIFNlZSBQQlhUYXJnZXREZXBlbmRlbmN5Ll9zY2hlbWEKKyMgYWJv
dmUuCitQQlhUYXJnZXREZXBlbmRlbmN5Ll9zY2hlbWFbJ3RhcmdldCddWzFdID0gWENUYXJnZXQK
KworCitjbGFzcyBQQlhOYXRpdmVUYXJnZXQoWENUYXJnZXQpOgorICAjIGJ1aWxkUGhhc2VzIGlz
IG92ZXJyaWRkZW4gaW4gdGhlIHNjaGVtYSB0byBiZSBhYmxlIHRvIHNldCBkZWZhdWx0cy4KKyAg
IworICAjIE5PVEU6IENvbnRyYXJ5IHRvIG1vc3Qgb2JqZWN0cywgaXQgaXMgYWR2aXNhYmxlIHRv
IHNldCBwYXJlbnQgd2hlbgorICAjIGNvbnN0cnVjdGluZyBQQlhOYXRpdmVUYXJnZXQuICBBIHBh
cmVudCBvZiBhbiBYQ1RhcmdldCBtdXN0IGJlIGEgUEJYUHJvamVjdAorICAjIG9iamVjdC4gIEEg
cGFyZW50IHJlZmVyZW5jZSBpcyByZXF1aXJlZCBmb3IgYSBQQlhOYXRpdmVUYXJnZXQgZHVyaW5n
CisgICMgY29uc3RydWN0aW9uIHRvIGJlIGFibGUgdG8gc2V0IHVwIHRoZSB0YXJnZXQgZGVmYXVs
dHMgZm9yIHByb2R1Y3RSZWZlcmVuY2UsCisgICMgYmVjYXVzZSBhIFBCWEJ1aWxkRmlsZSBvYmpl
Y3QgbXVzdCBiZSBjcmVhdGVkIGZvciB0aGUgdGFyZ2V0IGFuZCBpdCBtdXN0CisgICMgYmUgYWRk
ZWQgdG8gdGhlIFBCWFByb2plY3QncyBtYWluR3JvdXAgaGllcmFyY2h5LgorICBfc2NoZW1hID0g
WENUYXJnZXQuX3NjaGVtYS5jb3B5KCkKKyAgX3NjaGVtYS51cGRhdGUoeworICAgICdidWlsZFBo
YXNlcyc6ICAgICAgWzEsIFhDQnVpbGRQaGFzZSwgICAgIDEsIDEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgW1BCWFNvdXJjZXNCdWlsZFBoYXNlKCksIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNl
KCldXSwKKyAgICAnYnVpbGRSdWxlcyc6ICAgICAgIFsxLCBQQlhCdWlsZFJ1bGUsICAgICAxLCAx
LCBbXV0sCisgICAgJ3Byb2R1Y3RSZWZlcmVuY2UnOiBbMCwgUEJYRmlsZVJlZmVyZW5jZSwgMCwg
MV0sCisgICAgJ3Byb2R1Y3RUeXBlJzogICAgICBbMCwgc3RyLCAgICAgICAgICAgICAgMCwgMV0s
CisgIH0pCisKKyAgIyBNYXBwaW5nIGZyb20gWGNvZGUgcHJvZHVjdC10eXBlcyB0byBzZXR0aW5n
cy4gIFRoZSBzZXR0aW5ncyBhcmU6CisgICMgIGZpbGV0eXBlIDogdXNlZCBmb3IgZXhwbGljaXRG
aWxlVHlwZSBpbiB0aGUgcHJvamVjdCBmaWxlCisgICMgIHByZWZpeCA6IHRoZSBwcmVmaXggZm9y
IHRoZSBmaWxlIG5hbWUKKyAgIyAgc3VmZml4IDogdGhlIHN1ZmZpeCBmb3IgdGhlIGZpbGVuIGFt
ZQorICBfcHJvZHVjdF9maWxldHlwZXMgPSB7CisgICAgJ2NvbS5hcHBsZS5wcm9kdWN0LXR5cGUu
YXBwbGljYXRpb24nOiAgICAgWyd3cmFwcGVyLmFwcGxpY2F0aW9uJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsICcuYXBwJ10sCisgICAgJ2NvbS5h
cHBsZS5wcm9kdWN0LXR5cGUuYnVuZGxlJzogICAgICAgICAgWyd3cmFwcGVyLmNmYnVuZGxlJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsICcuYnVu
ZGxlJ10sCisgICAgJ2NvbS5hcHBsZS5wcm9kdWN0LXR5cGUuZnJhbWV3b3JrJzogICAgICAgWyd3
cmFwcGVyLmZyYW1ld29yaycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcnLCAnLmZyYW1ld29yayddLAorICAgICdjb20uYXBwbGUucHJvZHVjdC10eXBl
LmxpYnJhcnkuZHluYW1pYyc6IFsnY29tcGlsZWQubWFjaC1vLmR5bGliJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpYicsICcuZHlsaWInXSwKKyAg
ICAnY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LnN0YXRpYyc6ICBbJ2FyY2hpdmUuYXIn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGliJywg
Jy5hJ10sCisgICAgJ2NvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCc6ICAgICAgICAgICAgWydj
b21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcnLCAnJ10sCisgICAgJ2NvbS5nb29nbGVjb2RlLmd5cC54Y29k
ZS5idW5kbGUnOiAgICAgICAgWydjb21waWxlZC5tYWNoLW8uZHlsaWInLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgJy5zbyddLAorICB9CisKKyAg
ZGVmIF9faW5pdF9fKHNlbGYsIHByb3BlcnRpZXM9Tm9uZSwgaWQ9Tm9uZSwgcGFyZW50PU5vbmUs
CisgICAgICAgICAgICAgICBmb3JjZV9vdXRkaXI9Tm9uZSwgZm9yY2VfcHJlZml4PU5vbmUsIGZv
cmNlX2V4dGVuc2lvbj1Ob25lKToKKyAgICAjIHN1cGVyCisgICAgWENUYXJnZXQuX19pbml0X18o
c2VsZiwgcHJvcGVydGllcywgaWQsIHBhcmVudCkKKworICAgIGlmICdwcm9kdWN0TmFtZScgaW4g
c2VsZi5fcHJvcGVydGllcyBhbmQgXAorICAgICAgICdwcm9kdWN0VHlwZScgaW4gc2VsZi5fcHJv
cGVydGllcyBhbmQgXAorICAgICAgIG5vdCAncHJvZHVjdFJlZmVyZW5jZScgaW4gc2VsZi5fcHJv
cGVydGllcyBhbmQgXAorICAgICAgIHNlbGYuX3Byb3BlcnRpZXNbJ3Byb2R1Y3RUeXBlJ10gaW4g
c2VsZi5fcHJvZHVjdF9maWxldHlwZXM6CisgICAgICBwcm9kdWN0c19ncm91cCA9IE5vbmUKKyAg
ICAgIHBieHByb2plY3QgPSBzZWxmLlBCWFByb2plY3RBbmNlc3RvcigpCisgICAgICBpZiBwYnhw
cm9qZWN0ICE9IE5vbmU6CisgICAgICAgIHByb2R1Y3RzX2dyb3VwID0gcGJ4cHJvamVjdC5Qcm9k
dWN0c0dyb3VwKCkKKworICAgICAgaWYgcHJvZHVjdHNfZ3JvdXAgIT0gTm9uZToKKyAgICAgICAg
KGZpbGV0eXBlLCBwcmVmaXgsIHN1ZmZpeCkgPSBcCisgICAgICAgICAgICBzZWxmLl9wcm9kdWN0
X2ZpbGV0eXBlc1tzZWxmLl9wcm9wZXJ0aWVzWydwcm9kdWN0VHlwZSddXQorICAgICAgICAjIFhj
b2RlIGRvZXMgbm90IGhhdmUgYSBkaXN0aW5jdCB0eXBlIGZvciBsb2FkYWJsZSBtb2R1bGVzIHRo
YXQgYXJlCisgICAgICAgICMgcHVyZSBCU0QgdGFyZ2V0cyAobm90IGluIGEgYnVuZGxlIHdyYXBw
ZXIpLiBHWVAgYWxsb3dzIHN1Y2ggbW9kdWxlcworICAgICAgICAjIHRvIGJlIHNwZWNpZmllZCBi
eSBzZXR0aW5nIGEgdGFyZ2V0IHR5cGUgdG8gbG9hZGFibGVfbW9kdWxlIHdpdGhvdXQKKyAgICAg
ICAgIyBoYXZpbmcgbWFjX2J1bmRsZSBzZXQuIFRoZXNlIGFyZSBtYXBwZWQgdG8gdGhlIHBzZXVk
by1wcm9kdWN0IHR5cGUKKyAgICAgICAgIyBjb20uZ29vZ2xlY29kZS5neXAueGNvZGUuYnVuZGxl
LgorICAgICAgICAjCisgICAgICAgICMgQnkgcGlja2luZyB1cCB0aGlzIHNwZWNpYWwgdHlwZSBh
bmQgY29udmVydGluZyBpdCB0byBhIGR5bmFtaWMKKyAgICAgICAgIyBsaWJyYXJ5IChjb20uYXBw
bGUucHJvZHVjdC10eXBlLmxpYnJhcnkuZHluYW1pYykgd2l0aCBmaXgtdXBzLAorICAgICAgICAj
IHNpbmdsZS1maWxlIGxvYWRhYmxlIG1vZHVsZXMgY2FuIGJlIHByb2R1Y2VkLgorICAgICAgICAj
CisgICAgICAgICMgTUFDSF9PX1RZUEUgaXMgY2hhbmdlZCB0byBtaF9idW5kbGUgdG8gcHJvZHVj
ZSB0aGUgcHJvcGVyIGZpbGUgdHlwZQorICAgICAgICAjIChhcyBvcHBvc2VkIHRvIG1oX2R5bGli
KS4gSW4gb3JkZXIgZm9yIGxpbmtpbmcgdG8gc3VjY2VlZCwKKyAgICAgICAgIyBEWUxJQl9DVVJS
RU5UX1ZFUlNJT04gYW5kIERZTElCX0NPTVBBVElCSUxJVFlfVkVSU0lPTiBtdXN0IGJlCisgICAg
ICAgICMgY2xlYXJlZC4gVGhleSBhcmUgbWVhbmluZ2xlc3MgZm9yIHR5cGUgbWhfYnVuZGxlLgor
ICAgICAgICAjCisgICAgICAgICMgRmluYWxseSwgdGhlIC5zbyBleHRlbnNpb24gaXMgZm9yY2li
bHkgYXBwbGllZCBvdmVyIHRoZSBkZWZhdWx0CisgICAgICAgICMgKC5keWxpYiksIHVubGVzcyBh
bm90aGVyIGZvcmNlZCBleHRlbnNpb24gaXMgYWxyZWFkeSBzZWxlY3RlZC4KKyAgICAgICAgIyAu
ZHlsaWIgaXMgcGxhaW5seSB3cm9uZywgYW5kIC5idW5kbGUgaXMgdXNlZCBieSBsb2FkYWJsZV9t
b2R1bGVzIGluCisgICAgICAgICMgYnVuZGxlIHdyYXBwZXJzIChjb20uYXBwbGUucHJvZHVjdC10
eXBlLmJ1bmRsZSkuIC5zbyBzZWVtcyBhbiBvZGQKKyAgICAgICAgIyBjaG9pY2UgYmVjYXVzZSBp
dCdzIHVzZWQgYXMgdGhlIGV4dGVuc2lvbiBvbiBtYW55IG90aGVyIHN5c3RlbXMgdGhhdAorICAg
ICAgICAjIGRvbid0IGRpc3Rpbmd1aXNoIGJldHdlZW4gbGlua2FibGUgc2hhcmVkIGxpYnJhcmll
cyBhbmQgbm9uLWxpbmthYmxlCisgICAgICAgICMgbG9hZGFibGUgbW9kdWxlcywgYnV0IHRoZXJl
J3MgcHJlY2VkZW50OiBQeXRob24gbG9hZGFibGUgbW9kdWxlcyBvbgorICAgICAgICAjIE1hYyBP
UyBYIHVzZSBhbiAuc28gZXh0ZW5zaW9uLgorICAgICAgICBpZiBzZWxmLl9wcm9wZXJ0aWVzWydw
cm9kdWN0VHlwZSddID09ICdjb20uZ29vZ2xlY29kZS5neXAueGNvZGUuYnVuZGxlJzoKKyAgICAg
ICAgICBzZWxmLl9wcm9wZXJ0aWVzWydwcm9kdWN0VHlwZSddID0gXAorICAgICAgICAgICAgICAn
Y29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LmR5bmFtaWMnCisgICAgICAgICAgc2VsZi5T
ZXRCdWlsZFNldHRpbmcoJ01BQ0hfT19UWVBFJywgJ21oX2J1bmRsZScpCisgICAgICAgICAgc2Vs
Zi5TZXRCdWlsZFNldHRpbmcoJ0RZTElCX0NVUlJFTlRfVkVSU0lPTicsICcnKQorICAgICAgICAg
IHNlbGYuU2V0QnVpbGRTZXR0aW5nKCdEWUxJQl9DT01QQVRJQklMSVRZX1ZFUlNJT04nLCAnJykK
KyAgICAgICAgICBpZiBmb3JjZV9leHRlbnNpb24gPT0gTm9uZToKKyAgICAgICAgICAgIGZvcmNl
X2V4dGVuc2lvbiA9IHN1ZmZpeFsxOl0KKworICAgICAgICBpZiBmb3JjZV9leHRlbnNpb24gaXMg
bm90IE5vbmU6CisgICAgICAgICAgIyBJZiBpdCdzIGEgd3JhcHBlciAoYnVuZGxlKSwgc2V0IFdS
QVBQRVJfRVhURU5TSU9OLgorICAgICAgICAgIGlmIGZpbGV0eXBlLnN0YXJ0c3dpdGgoJ3dyYXBw
ZXIuJyk6CisgICAgICAgICAgICBzZWxmLlNldEJ1aWxkU2V0dGluZygnV1JBUFBFUl9FWFRFTlNJ
T04nLCBmb3JjZV9leHRlbnNpb24pCisgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgRXh0
ZW5zaW9uIG92ZXJyaWRlLgorICAgICAgICAgICAgc3VmZml4ID0gJy4nICsgZm9yY2VfZXh0ZW5z
aW9uCisgICAgICAgICAgICBzZWxmLlNldEJ1aWxkU2V0dGluZygnRVhFQ1VUQUJMRV9FWFRFTlNJ
T04nLCBmb3JjZV9leHRlbnNpb24pCisKKyAgICAgICAgICBpZiBmaWxldHlwZS5zdGFydHN3aXRo
KCdjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZScpOgorICAgICAgICAgICAgcHJvZHVjdF9uYW1l
ID0gc2VsZi5fcHJvcGVydGllc1sncHJvZHVjdE5hbWUnXQorICAgICAgICAgICAgcHJvZHVjdF9u
YW1lICs9IHN1ZmZpeAorICAgICAgICAgICAgc3VmZml4ID0gJycKKyAgICAgICAgICAgIHNlbGYu
U2V0UHJvcGVydHkoJ3Byb2R1Y3ROYW1lJywgcHJvZHVjdF9uYW1lKQorICAgICAgICAgICAgc2Vs
Zi5TZXRCdWlsZFNldHRpbmcoJ1BST0RVQ1RfTkFNRScsIHByb2R1Y3RfbmFtZSkKKworICAgICAg
ICAjIFhjb2RlIGhhbmRsZXMgbW9zdCBwcmVmaXhlcyBiYXNlZCBvbiB0aGUgdGFyZ2V0IHR5cGUs
IGhvd2V2ZXIgdGhlcmUKKyAgICAgICAgIyBhcmUgZXhjZXB0aW9ucy4gIElmIGEgIkJTRCBEeW5h
bWljIExpYnJhcnkiIHRhcmdldCBpcyBhZGRlZCBpbiB0aGUKKyAgICAgICAgIyBYY29kZSBVSSwg
WGNvZGUgc2V0cyBFWEVDVVRBQkxFX1BSRUZJWC4gIFRoaXMgY2hlY2sgZHVwbGljYXRlcyB0aGF0
CisgICAgICAgICMgYmVoYXZpb3IuCisgICAgICAgIGlmIGZvcmNlX3ByZWZpeCBpcyBub3QgTm9u
ZToKKyAgICAgICAgICBwcmVmaXggPSBmb3JjZV9wcmVmaXgKKyAgICAgICAgaWYgZmlsZXR5cGUu
c3RhcnRzd2l0aCgnd3JhcHBlci4nKToKKyAgICAgICAgICBzZWxmLlNldEJ1aWxkU2V0dGluZygn
V1JBUFBFUl9QUkVGSVgnLCBwcmVmaXgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgc2VsZi5T
ZXRCdWlsZFNldHRpbmcoJ0VYRUNVVEFCTEVfUFJFRklYJywgcHJlZml4KQorCisgICAgICAgIGlm
IGZvcmNlX291dGRpciBpcyBub3QgTm9uZToKKyAgICAgICAgICBzZWxmLlNldEJ1aWxkU2V0dGlu
ZygnVEFSR0VUX0JVSUxEX0RJUicsIGZvcmNlX291dGRpcikKKworICAgICAgICAjIFRPRE8odHZs
KTogUmVtb3ZlIHRoZSBiZWxvdyBoYWNrLgorICAgICAgICAjICAgIGh0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9neXAvaXNzdWVzL2RldGFpbD9pZD0xMjIKKworICAgICAgICAjIFNvbWUgdGFyZ2V0
cyBpbmNsdWRlIHRoZSBwcmVmaXggaW4gdGhlIHRhcmdldF9uYW1lLiAgVGhlc2UgdGFyZ2V0cwor
ICAgICAgICAjIHJlYWxseSBzaG91bGQganVzdCBhZGQgYSBwcm9kdWN0X25hbWUgc2V0dGluZyB0
aGF0IGRvZXNuJ3QgaW5jbHVkZQorICAgICAgICAjIHRoZSBwcmVmaXguICBGb3IgZXhhbXBsZToK
KyAgICAgICAgIyAgdGFyZ2V0X25hbWUgPSAnbGliZXZlbnQnLCBwcm9kdWN0X25hbWUgPSAnZXZl
bnQnCisgICAgICAgICMgVGhpcyBjaGVjayBjbGVhbnMgdXAgZm9yIHRoZW0uCisgICAgICAgIHBy
b2R1Y3RfbmFtZSA9IHNlbGYuX3Byb3BlcnRpZXNbJ3Byb2R1Y3ROYW1lJ10KKyAgICAgICAgcHJl
Zml4X2xlbiA9IGxlbihwcmVmaXgpCisgICAgICAgIGlmIHByZWZpeF9sZW4gYW5kIChwcm9kdWN0
X25hbWVbOnByZWZpeF9sZW5dID09IHByZWZpeCk6CisgICAgICAgICAgcHJvZHVjdF9uYW1lID0g
cHJvZHVjdF9uYW1lW3ByZWZpeF9sZW46XQorICAgICAgICAgIHNlbGYuU2V0UHJvcGVydHkoJ3By
b2R1Y3ROYW1lJywgcHJvZHVjdF9uYW1lKQorICAgICAgICAgIHNlbGYuU2V0QnVpbGRTZXR0aW5n
KCdQUk9EVUNUX05BTUUnLCBwcm9kdWN0X25hbWUpCisKKyAgICAgICAgcmVmX3Byb3BzID0gewor
ICAgICAgICAgICdleHBsaWNpdEZpbGVUeXBlJzogZmlsZXR5cGUsCisgICAgICAgICAgJ2luY2x1
ZGVJbkluZGV4JzogICAwLAorICAgICAgICAgICdwYXRoJzogICAgICAgICAgICAgcHJlZml4ICsg
cHJvZHVjdF9uYW1lICsgc3VmZml4LAorICAgICAgICAgICdzb3VyY2VUcmVlJzogICAgICAgJ0JV
SUxUX1BST0RVQ1RTX0RJUicsCisgICAgICAgIH0KKyAgICAgICAgZmlsZV9yZWYgPSBQQlhGaWxl
UmVmZXJlbmNlKHJlZl9wcm9wcykKKyAgICAgICAgcHJvZHVjdHNfZ3JvdXAuQXBwZW5kQ2hpbGQo
ZmlsZV9yZWYpCisgICAgICAgIHNlbGYuU2V0UHJvcGVydHkoJ3Byb2R1Y3RSZWZlcmVuY2UnLCBm
aWxlX3JlZikKKworICBkZWYgR2V0QnVpbGRQaGFzZUJ5VHlwZShzZWxmLCB0eXBlKToKKyAgICBp
ZiBub3QgJ2J1aWxkUGhhc2VzJyBpbiBzZWxmLl9wcm9wZXJ0aWVzOgorICAgICAgcmV0dXJuIE5v
bmUKKworICAgIHRoZV9waGFzZSA9IE5vbmUKKyAgICBmb3IgcGhhc2UgaW4gc2VsZi5fcHJvcGVy
dGllc1snYnVpbGRQaGFzZXMnXToKKyAgICAgIGlmIGlzaW5zdGFuY2UocGhhc2UsIHR5cGUpOgor
ICAgICAgICAjIFNvbWUgcGhhc2VzIG1heSBiZSBwcmVzZW50IGluIG11bHRpcGxlcyBpbiBhIHdl
bGwtZm9ybWVkIHByb2plY3QgZmlsZSwKKyAgICAgICAgIyBidXQgcGhhc2VzIGxpa2UgUEJYU291
cmNlc0J1aWxkUGhhc2UgbWF5IG9ubHkgYmUgcHJlc2VudCBzaW5nbHksIGFuZAorICAgICAgICAj
IHRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgYXMgYW4gYWlkIHRvIEdldEJ1aWxkUGhhc2VCeVR5
cGUuICBMb29wCisgICAgICAgICMgb3ZlciB0aGUgZW50aXJlIGxpc3Qgb2YgcGhhc2VzIGFuZCBh
c3NlcnQgaWYgbW9yZSB0aGFuIG9uZSBvZiB0aGUKKyAgICAgICAgIyBkZXNpcmVkIHR5cGUgaXMg
Zm91bmQuCisgICAgICAgIGFzc2VydCB0aGVfcGhhc2UgPT0gTm9uZQorICAgICAgICB0aGVfcGhh
c2UgPSBwaGFzZQorCisgICAgcmV0dXJuIHRoZV9waGFzZQorCisgIGRlZiBIZWFkZXJzUGhhc2Uo
c2VsZik6CisgICAgaGVhZGVyc19waGFzZSA9IHNlbGYuR2V0QnVpbGRQaGFzZUJ5VHlwZShQQlhI
ZWFkZXJzQnVpbGRQaGFzZSkKKyAgICBpZiBoZWFkZXJzX3BoYXNlID09IE5vbmU6CisgICAgICBo
ZWFkZXJzX3BoYXNlID0gUEJYSGVhZGVyc0J1aWxkUGhhc2UoKQorCisgICAgICAjIFRoZSBoZWFk
ZXJzIHBoYXNlIHNob3VsZCBjb21lIGJlZm9yZSB0aGUgcmVzb3VyY2VzLCBzb3VyY2VzLCBhbmQK
KyAgICAgICMgZnJhbWV3b3JrcyBwaGFzZXMsIGlmIGFueS4KKyAgICAgIGluc2VydF9hdCA9IGxl
bihzZWxmLl9wcm9wZXJ0aWVzWydidWlsZFBoYXNlcyddKQorICAgICAgZm9yIGluZGV4IGluIHhy
YW5nZSgwLCBsZW4oc2VsZi5fcHJvcGVydGllc1snYnVpbGRQaGFzZXMnXSkpOgorICAgICAgICBw
aGFzZSA9IHNlbGYuX3Byb3BlcnRpZXNbJ2J1aWxkUGhhc2VzJ11baW5kZXhdCisgICAgICAgIGlm
IGlzaW5zdGFuY2UocGhhc2UsIFBCWFJlc291cmNlc0J1aWxkUGhhc2UpIG9yIFwKKyAgICAgICAg
ICAgaXNpbnN0YW5jZShwaGFzZSwgUEJYU291cmNlc0J1aWxkUGhhc2UpIG9yIFwKKyAgICAgICAg
ICAgaXNpbnN0YW5jZShwaGFzZSwgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2UpOgorICAgICAgICAg
IGluc2VydF9hdCA9IGluZGV4CisgICAgICAgICAgYnJlYWsKKworICAgICAgc2VsZi5fcHJvcGVy
dGllc1snYnVpbGRQaGFzZXMnXS5pbnNlcnQoaW5zZXJ0X2F0LCBoZWFkZXJzX3BoYXNlKQorICAg
ICAgaGVhZGVyc19waGFzZS5wYXJlbnQgPSBzZWxmCisKKyAgICByZXR1cm4gaGVhZGVyc19waGFz
ZQorCisgIGRlZiBSZXNvdXJjZXNQaGFzZShzZWxmKToKKyAgICByZXNvdXJjZXNfcGhhc2UgPSBz
ZWxmLkdldEJ1aWxkUGhhc2VCeVR5cGUoUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSkKKyAgICBpZiBy
ZXNvdXJjZXNfcGhhc2UgPT0gTm9uZToKKyAgICAgIHJlc291cmNlc19waGFzZSA9IFBCWFJlc291
cmNlc0J1aWxkUGhhc2UoKQorCisgICAgICAjIFRoZSByZXNvdXJjZXMgcGhhc2Ugc2hvdWxkIGNv
bWUgYmVmb3JlIHRoZSBzb3VyY2VzIGFuZCBmcmFtZXdvcmtzCisgICAgICAjIHBoYXNlcywgaWYg
YW55LgorICAgICAgaW5zZXJ0X2F0ID0gbGVuKHNlbGYuX3Byb3BlcnRpZXNbJ2J1aWxkUGhhc2Vz
J10pCisgICAgICBmb3IgaW5kZXggaW4geHJhbmdlKDAsIGxlbihzZWxmLl9wcm9wZXJ0aWVzWydi
dWlsZFBoYXNlcyddKSk6CisgICAgICAgIHBoYXNlID0gc2VsZi5fcHJvcGVydGllc1snYnVpbGRQ
aGFzZXMnXVtpbmRleF0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShwaGFzZSwgUEJYU291cmNlc0J1
aWxkUGhhc2UpIG9yIFwKKyAgICAgICAgICAgaXNpbnN0YW5jZShwaGFzZSwgUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2UpOgorICAgICAgICAgIGluc2VydF9hdCA9IGluZGV4CisgICAgICAgICAgYnJl
YWsKKworICAgICAgc2VsZi5fcHJvcGVydGllc1snYnVpbGRQaGFzZXMnXS5pbnNlcnQoaW5zZXJ0
X2F0LCByZXNvdXJjZXNfcGhhc2UpCisgICAgICByZXNvdXJjZXNfcGhhc2UucGFyZW50ID0gc2Vs
ZgorCisgICAgcmV0dXJuIHJlc291cmNlc19waGFzZQorCisgIGRlZiBTb3VyY2VzUGhhc2Uoc2Vs
Zik6CisgICAgc291cmNlc19waGFzZSA9IHNlbGYuR2V0QnVpbGRQaGFzZUJ5VHlwZShQQlhTb3Vy
Y2VzQnVpbGRQaGFzZSkKKyAgICBpZiBzb3VyY2VzX3BoYXNlID09IE5vbmU6CisgICAgICBzb3Vy
Y2VzX3BoYXNlID0gUEJYU291cmNlc0J1aWxkUGhhc2UoKQorICAgICAgc2VsZi5BcHBlbmRQcm9w
ZXJ0eSgnYnVpbGRQaGFzZXMnLCBzb3VyY2VzX3BoYXNlKQorCisgICAgcmV0dXJuIHNvdXJjZXNf
cGhhc2UKKworICBkZWYgRnJhbWV3b3Jrc1BoYXNlKHNlbGYpOgorICAgIGZyYW1ld29ya3NfcGhh
c2UgPSBzZWxmLkdldEJ1aWxkUGhhc2VCeVR5cGUoUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2UpCisg
ICAgaWYgZnJhbWV3b3Jrc19waGFzZSA9PSBOb25lOgorICAgICAgZnJhbWV3b3Jrc19waGFzZSA9
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlKCkKKyAgICAgIHNlbGYuQXBwZW5kUHJvcGVydHkoJ2J1
aWxkUGhhc2VzJywgZnJhbWV3b3Jrc19waGFzZSkKKworICAgIHJldHVybiBmcmFtZXdvcmtzX3Bo
YXNlCisKKyAgZGVmIEFkZERlcGVuZGVuY3koc2VsZiwgb3RoZXIpOgorICAgICMgc3VwZXIKKyAg
ICBYQ1RhcmdldC5BZGREZXBlbmRlbmN5KHNlbGYsIG90aGVyKQorCisgICAgc3RhdGljX2xpYnJh
cnlfdHlwZSA9ICdjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljJworICAgIHNo
YXJlZF9saWJyYXJ5X3R5cGUgPSAnY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LmR5bmFt
aWMnCisgICAgZnJhbWV3b3JrX3R5cGUgPSAnY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5mcmFtZXdv
cmsnCisgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgUEJYTmF0aXZlVGFyZ2V0KSBhbmQgXAorICAg
ICAgICdwcm9kdWN0VHlwZScgaW4gc2VsZi5fcHJvcGVydGllcyBhbmQgXAorICAgICAgIHNlbGYu
X3Byb3BlcnRpZXNbJ3Byb2R1Y3RUeXBlJ10gIT0gc3RhdGljX2xpYnJhcnlfdHlwZSBhbmQgXAor
ICAgICAgICdwcm9kdWN0VHlwZScgaW4gb3RoZXIuX3Byb3BlcnRpZXMgYW5kIFwKKyAgICAgICAo
b3RoZXIuX3Byb3BlcnRpZXNbJ3Byb2R1Y3RUeXBlJ10gPT0gc3RhdGljX2xpYnJhcnlfdHlwZSBv
ciBcCisgICAgICAgICgob3RoZXIuX3Byb3BlcnRpZXNbJ3Byb2R1Y3RUeXBlJ10gPT0gc2hhcmVk
X2xpYnJhcnlfdHlwZSBvciBcCisgICAgICAgICAgb3RoZXIuX3Byb3BlcnRpZXNbJ3Byb2R1Y3RU
eXBlJ10gPT0gZnJhbWV3b3JrX3R5cGUpIGFuZCBcCisgICAgICAgICAoKG5vdCBvdGhlci5IYXNC
dWlsZFNldHRpbmcoJ01BQ0hfT19UWVBFJykpIG9yCisgICAgICAgICAgb3RoZXIuR2V0QnVpbGRT
ZXR0aW5nKCdNQUNIX09fVFlQRScpICE9ICdtaF9idW5kbGUnKSkpOgorCisgICAgICBmaWxlX3Jl
ZiA9IG90aGVyLkdldFByb3BlcnR5KCdwcm9kdWN0UmVmZXJlbmNlJykKKworICAgICAgcGJ4cHJv
amVjdCA9IHNlbGYuUEJYUHJvamVjdEFuY2VzdG9yKCkKKyAgICAgIG90aGVyX3BieHByb2plY3Qg
PSBvdGhlci5QQlhQcm9qZWN0QW5jZXN0b3IoKQorICAgICAgaWYgcGJ4cHJvamVjdCAhPSBvdGhl
cl9wYnhwcm9qZWN0OgorICAgICAgICBvdGhlcl9wcm9qZWN0X3Byb2R1Y3RfZ3JvdXAgPSBcCisg
ICAgICAgICAgICBwYnhwcm9qZWN0LkFkZE9yR2V0UHJvamVjdFJlZmVyZW5jZShvdGhlcl9wYnhw
cm9qZWN0KVswXQorICAgICAgICBmaWxlX3JlZiA9IG90aGVyX3Byb2plY3RfcHJvZHVjdF9ncm91
cC5HZXRDaGlsZEJ5UmVtb3RlT2JqZWN0KGZpbGVfcmVmKQorCisgICAgICBzZWxmLkZyYW1ld29y
a3NQaGFzZSgpLkFwcGVuZFByb3BlcnR5KCdmaWxlcycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBCWEJ1aWxkRmlsZSh7J2ZpbGVSZWYnOiBmaWxlX3JlZn0p
KQorCisKK2NsYXNzIFBCWEFnZ3JlZ2F0ZVRhcmdldChYQ1RhcmdldCk6CisgIHBhc3MKKworCitj
bGFzcyBQQlhQcm9qZWN0KFhDQ29udGFpbmVyUG9ydGFsKToKKyAgIyBBIFBCWFByb2plY3QgaXMg
cmVhbGx5IGp1c3QgYW4gWENPYmplY3QsIHRoZSBYQ0NvbnRhaW5lclBvcnRhbCB0aGluZyBpcwor
ICAjIGp1c3QgdG8gYWxsb3cgUEJYUHJvamVjdCB0byBiZSB1c2VkIGluIHRoZSBjb250YWluZXJQ
b3J0YWwgcHJvcGVydHkgb2YKKyAgIyBQQlhDb250YWluZXJJdGVtUHJveHkuCisgICIiIgorCisg
IEF0dHJpYnV0ZXM6CisgICAgcGF0aDogInNhbXBsZS54Y29kZXByb2oiLiAgVE9ETyhtYXJrKSBE
b2N1bWVudCBtZSEKKyAgICBfb3RoZXJfcGJ4cHJvamVjdHM6IEEgZGljdGlvbmFyeSwga2V5ZWQg
Ynkgb3RoZXIgUEJYUHJvamVjdCBvYmplY3RzLiAgRWFjaAorICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgaXMgYSByZWZlcmVuY2UgdG8gdGhlIGRpY3QgaW4gdGhlCisgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9qZWN0UmVmZXJlbmNlcyBsaXN0IGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5
ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIFBCWFByb2plY3QuCisgICIiIgorCisgIF9zY2hl
bWEgPSBYQ0NvbnRhaW5lclBvcnRhbC5fc2NoZW1hLmNvcHkoKQorICBfc2NoZW1hLnVwZGF0ZSh7
CisgICAgJ2F0dHJpYnV0ZXMnOiAgICAgICAgICAgICBbMCwgZGljdCwgICAgICAgICAgICAgICAg
MCwgMF0sCisgICAgJ2J1aWxkQ29uZmlndXJhdGlvbkxpc3QnOiBbMCwgWENDb25maWd1cmF0aW9u
TGlzdCwgMSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYQ0NvbmZpZ3VyYXRp
b25MaXN0KCldLAorICAgICdjb21wYXRpYmlsaXR5VmVyc2lvbic6ICAgWzAsIHN0ciwgICAgICAg
ICAgICAgICAgIDAsIDEsICdYY29kZSAzLjEnXSwKKyAgICAnaGFzU2Nhbm5lZEZvckVuY29kaW5n
cyc6IFswLCBpbnQsICAgICAgICAgICAgICAgICAwLCAxLCAxXSwKKyAgICAnbWFpbkdyb3VwJzog
ICAgICAgICAgICAgIFswLCBQQlhHcm91cCwgICAgICAgICAgICAxLCAxLCBQQlhHcm91cCgpXSwK
KyAgICAncHJvamVjdERpclBhdGgnOiAgICAgICAgIFswLCBzdHIsICAgICAgICAgICAgICAgICAw
LCAxLCAnJ10sCisgICAgJ3Byb2plY3RSZWZlcmVuY2VzJzogICAgICBbMSwgZGljdCwgICAgICAg
ICAgICAgICAgMCwgMF0sCisgICAgJ3Byb2plY3RSb290JzogICAgICAgICAgICBbMCwgc3RyLCAg
ICAgICAgICAgICAgICAgMCwgMSwgJyddLAorICAgICd0YXJnZXRzJzogICAgICAgICAgICAgICAg
WzEsIFhDVGFyZ2V0LCAgICAgICAgICAgIDEsIDEsIFtdXSwKKyAgfSkKKworICBkZWYgX19pbml0
X18oc2VsZiwgcHJvcGVydGllcz1Ob25lLCBpZD1Ob25lLCBwYXJlbnQ9Tm9uZSwgcGF0aD1Ob25l
KToKKyAgICBzZWxmLnBhdGggPSBwYXRoCisgICAgc2VsZi5fb3RoZXJfcGJ4cHJvamVjdHMgPSB7
fQorICAgICMgc3VwZXIKKyAgICByZXR1cm4gWENDb250YWluZXJQb3J0YWwuX19pbml0X18oc2Vs
ZiwgcHJvcGVydGllcywgaWQsIHBhcmVudCkKKworICBkZWYgTmFtZShzZWxmKToKKyAgICBuYW1l
ID0gc2VsZi5wYXRoCisgICAgaWYgbmFtZVstMTA6XSA9PSAnLnhjb2RlcHJvaic6CisgICAgICBu
YW1lID0gbmFtZVs6LTEwXQorICAgIHJldHVybiBwb3NpeHBhdGguYmFzZW5hbWUobmFtZSkKKwor
ICBkZWYgUGF0aChzZWxmKToKKyAgICByZXR1cm4gc2VsZi5wYXRoCisKKyAgZGVmIENvbW1lbnQo
c2VsZik6CisgICAgcmV0dXJuICdQcm9qZWN0IG9iamVjdCcKKworICBkZWYgQ2hpbGRyZW4oc2Vs
Zik6CisgICAgIyBzdXBlcgorICAgIGNoaWxkcmVuID0gWENDb250YWluZXJQb3J0YWwuQ2hpbGRy
ZW4oc2VsZikKKworICAgICMgQWRkIGNoaWxkcmVuIHRoYXQgdGhlIHNjaGVtYSBkb2Vzbid0IGtu
b3cgYWJvdXQuICBNYXliZSB0aGVyZSdzIGEgbW9yZQorICAgICMgZWxlZ2FudCB3YXkgYXJvdW5k
IHRoaXMsIGJ1dCB0aGlzIGlzIHRoZSBvbmx5IGNhc2Ugd2hlcmUgd2UgbmVlZCB0byBvd24KKyAg
ICAjIG9iamVjdHMgaW4gYSBkaWN0aW9uYXJ5ICh0aGF0IGlzIGl0c2VsZiBpbiBhIGxpc3QpLCBh
bmQgdGhyZWUgbGluZXMgZm9yCisgICAgIyBhIG9uZS1vZmYgaXNuJ3QgdGhhdCBiaWcgYSBkZWFs
LgorICAgIGlmICdwcm9qZWN0UmVmZXJlbmNlcycgaW4gc2VsZi5fcHJvcGVydGllczoKKyAgICAg
IGZvciByZWZlcmVuY2UgaW4gc2VsZi5fcHJvcGVydGllc1sncHJvamVjdFJlZmVyZW5jZXMnXToK
KyAgICAgICAgY2hpbGRyZW4uYXBwZW5kKHJlZmVyZW5jZVsnUHJvZHVjdEdyb3VwJ10pCisKKyAg
ICByZXR1cm4gY2hpbGRyZW4KKworICBkZWYgUEJYUHJvamVjdEFuY2VzdG9yKHNlbGYpOgorICAg
IHJldHVybiBzZWxmCisKKyAgZGVmIF9Hcm91cEJ5TmFtZShzZWxmLCBuYW1lKToKKyAgICBpZiBu
b3QgJ21haW5Hcm91cCcgaW4gc2VsZi5fcHJvcGVydGllczoKKyAgICAgIHNlbGYuU2V0UHJvcGVy
dHkoJ21haW5Hcm91cCcsIFBCWEdyb3VwKCkpCisKKyAgICBtYWluX2dyb3VwID0gc2VsZi5fcHJv
cGVydGllc1snbWFpbkdyb3VwJ10KKyAgICBncm91cCA9IG1haW5fZ3JvdXAuR2V0Q2hpbGRCeU5h
bWUobmFtZSkKKyAgICBpZiBncm91cCA9PSBOb25lOgorICAgICAgZ3JvdXAgPSBQQlhHcm91cCh7
J25hbWUnOiBuYW1lfSkKKyAgICAgIG1haW5fZ3JvdXAuQXBwZW5kQ2hpbGQoZ3JvdXApCisKKyAg
ICByZXR1cm4gZ3JvdXAKKworICAjIFNvdXJjZUdyb3VwIGFuZCBQcm9kdWN0c0dyb3VwIGFyZSBj
cmVhdGVkIGJ5IGRlZmF1bHQgaW4gWGNvZGUncyBvd24KKyAgIyB0ZW1wbGF0ZXMuCisgIGRlZiBT
b3VyY2VHcm91cChzZWxmKToKKyAgICByZXR1cm4gc2VsZi5fR3JvdXBCeU5hbWUoJ1NvdXJjZScp
CisKKyAgZGVmIFByb2R1Y3RzR3JvdXAoc2VsZik6CisgICAgcmV0dXJuIHNlbGYuX0dyb3VwQnlO
YW1lKCdQcm9kdWN0cycpCisKKyAgIyBJbnRlcm1lZGlhdGVzR3JvdXAgaXMgdXNlZCB0byBjb2xs
ZWN0IHNvdXJjZS1saWtlIGZpbGVzIHRoYXQgYXJlIGdlbmVyYXRlZAorICAjIGJ5IHJ1bGVzIG9y
IHNjcmlwdCBwaGFzZXMgYW5kIGFyZSBwbGFjZWQgaW4gaW50ZXJtZWRpYXRlIGRpcmVjdG9yaWVz
IHN1Y2gKKyAgIyBhcyBEZXJpdmVkU291cmNlcy4KKyAgZGVmIEludGVybWVkaWF0ZXNHcm91cChz
ZWxmKToKKyAgICByZXR1cm4gc2VsZi5fR3JvdXBCeU5hbWUoJ0ludGVybWVkaWF0ZXMnKQorCisg
ICMgRnJhbWV3b3Jrc0dyb3VwIGFuZCBQcm9qZWN0c0dyb3VwIGFyZSB0b3AtbGV2ZWwgZ3JvdXBz
IHVzZWQgdG8gY29sbGVjdAorICAjIGZyYW1ld29ya3MgYW5kIHByb2plY3RzLgorICBkZWYgRnJh
bWV3b3Jrc0dyb3VwKHNlbGYpOgorICAgIHJldHVybiBzZWxmLl9Hcm91cEJ5TmFtZSgnRnJhbWV3
b3JrcycpCisKKyAgZGVmIFByb2plY3RzR3JvdXAoc2VsZik6CisgICAgcmV0dXJuIHNlbGYuX0dy
b3VwQnlOYW1lKCdQcm9qZWN0cycpCisKKyAgZGVmIFJvb3RHcm91cEZvclBhdGgoc2VsZiwgcGF0
aCk6CisgICAgIiIiUmV0dXJucyBhIFBCWEdyb3VwIGNoaWxkIG9mIHRoaXMgb2JqZWN0IHRvIHdo
aWNoIHBhdGggc2hvdWxkIGJlIGFkZGVkLgorCisgICAgVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQg
dG8gY2hvb3NlIGJldHdlZW4gU291cmNlR3JvdXAgYW5kCisgICAgSW50ZXJtZWRpYXRlc0dyb3Vw
IG9uIHRoZSBiYXNpcyBvZiB3aGV0aGVyIHBhdGggaXMgcHJlc2VudCBpbiBhIHNvdXJjZQorICAg
IGRpcmVjdG9yeSBvciBhbiBpbnRlcm1lZGlhdGVzIGRpcmVjdG9yeS4gIEZvciB0aGUgcHVycG9z
ZXMgb2YgdGhpcworICAgIGRldGVybWluYXRpb24sIGFueSBwYXRoIGxvY2F0ZWQgd2l0aGluIGEg
ZGVyaXZlZCBmaWxlIGRpcmVjdG9yeSBzdWNoIGFzCisgICAgUFJPSkVDVF9ERVJJVkVEX0ZJTEVf
RElSIGlzIHRyZWF0ZWQgYXMgYmVpbmcgaW4gYW4gaW50ZXJtZWRpYXRlcworICAgIGRpcmVjdG9y
eS4KKworICAgIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhIHR3by1lbGVtZW50IHR1cGxlLiAgVGhl
IGZpcnN0IGVsZW1lbnQgaXMgdGhlCisgICAgUEJYR3JvdXAsIGFuZCB0aGUgc2Vjb25kIGVsZW1l
bnQgc3BlY2lmaWVzIHdoZXRoZXIgdGhhdCBncm91cCBzaG91bGQgYmUKKyAgICBvcmdhbml6ZWQg
aGllcmFyY2hpY2FsbHkgKFRydWUpIG9yIGFzIGEgc2luZ2xlIGZsYXQgbGlzdCAoRmFsc2UpLgor
ICAgICIiIgorCisgICAgIyBUT0RPKG1hcmspOiBtYWtlIHRoaXMgYSBjbGFzcyB2YXJpYWJsZSBh
bmQgYmluZCB0byBzZWxmIG9uIGNhbGw/CisgICAgIyBBbHNvLCB0aGlzIGxpc3QgaXMgbm93aGVy
ZSBuZWFyIGV4aGF1c3RpdmUuCisgICAgIyBJTlRFUk1FRElBVEVfRElSIGFuZCBTSEFSRURfSU5U
RVJNRURJQVRFX0RJUiBhcmUgdXNlZCBieQorICAgICMgZ3lwLmdlbmVyYXRvci54Y29kZS4gIFRo
ZXJlIHNob3VsZCBwcm9iYWJseSBiZSBzb21lIHdheSBmb3IgdGhhdCBtb2R1bGUKKyAgICAjIHRv
IHB1c2ggdGhlIG5hbWVzIGluLCByYXRoZXIgdGhhbiBoYXZpbmcgdG8gaGFyZC1jb2RlIHRoZW0g
aGVyZS4KKyAgICBzb3VyY2VfdHJlZV9ncm91cHMgPSB7CisgICAgICAnREVSSVZFRF9GSUxFX0RJ
Uic6ICAgICAgICAgKHNlbGYuSW50ZXJtZWRpYXRlc0dyb3VwLCBUcnVlKSwKKyAgICAgICdJTlRF
Uk1FRElBVEVfRElSJzogICAgICAgICAoc2VsZi5JbnRlcm1lZGlhdGVzR3JvdXAsIFRydWUpLAor
ICAgICAgJ1BST0pFQ1RfREVSSVZFRF9GSUxFX0RJUic6IChzZWxmLkludGVybWVkaWF0ZXNHcm91
cCwgVHJ1ZSksCisgICAgICAnU0hBUkVEX0lOVEVSTUVESUFURV9ESVInOiAgKHNlbGYuSW50ZXJt
ZWRpYXRlc0dyb3VwLCBUcnVlKSwKKyAgICB9CisKKyAgICAoc291cmNlX3RyZWUsIHBhdGgpID0g
U291cmNlVHJlZUFuZFBhdGhGcm9tUGF0aChwYXRoKQorICAgIGlmIHNvdXJjZV90cmVlICE9IE5v
bmUgYW5kIHNvdXJjZV90cmVlIGluIHNvdXJjZV90cmVlX2dyb3VwczoKKyAgICAgIChncm91cF9m
dW5jLCBoaWVyYXJjaGljYWwpID0gc291cmNlX3RyZWVfZ3JvdXBzW3NvdXJjZV90cmVlXQorICAg
ICAgZ3JvdXAgPSBncm91cF9mdW5jKCkKKyAgICAgIHJldHVybiAoZ3JvdXAsIGhpZXJhcmNoaWNh
bCkKKworICAgICMgVE9ETyhtYXJrKTogbWFrZSBhZGRpdGlvbmFsIGNob2ljZXMgYmFzZWQgb24g
ZmlsZSBleHRlbnNpb24uCisKKyAgICByZXR1cm4gKHNlbGYuU291cmNlR3JvdXAoKSwgVHJ1ZSkK
KworICBkZWYgQWRkT3JHZXRGaWxlSW5Sb290R3JvdXAoc2VsZiwgcGF0aCk6CisgICAgIiIiUmV0
dXJucyBhIFBCWEZpbGVSZWZlcmVuY2UgY29ycmVzcG9uZGluZyB0byBwYXRoIGluIHRoZSBjb3Jy
ZWN0IGdyb3VwCisgICAgYWNjb3JkaW5nIHRvIFJvb3RHcm91cEZvclBhdGgncyBoZXVyaXN0aWNz
LgorCisgICAgSWYgYW4gZXhpc3RpbmcgUEJYRmlsZVJlZmVyZW5jZSBmb3IgcGF0aCBleGlzdHMs
IGl0IHdpbGwgYmUgcmV0dXJuZWQuCisgICAgT3RoZXJ3aXNlLCBvbmUgd2lsbCBiZSBjcmVhdGVk
IGFuZCByZXR1cm5lZC4KKyAgICAiIiIKKworICAgIChncm91cCwgaGllcmFyY2hpY2FsKSA9IHNl
bGYuUm9vdEdyb3VwRm9yUGF0aChwYXRoKQorICAgIHJldHVybiBncm91cC5BZGRPckdldEZpbGVC
eVBhdGgocGF0aCwgaGllcmFyY2hpY2FsKQorCisgIGRlZiBSb290R3JvdXBzVGFrZU92ZXJPbmx5
Q2hpbGRyZW4oc2VsZiwgcmVjdXJzZT1GYWxzZSk6CisgICAgIiIiQ2FsbHMgVGFrZU92ZXJPbmx5
Q2hpbGQgZm9yIGFsbCBncm91cHMgaW4gdGhlIG1haW4gZ3JvdXAuIiIiCisKKyAgICBmb3IgZ3Jv
dXAgaW4gc2VsZi5fcHJvcGVydGllc1snbWFpbkdyb3VwJ10uX3Byb3BlcnRpZXNbJ2NoaWxkcmVu
J106CisgICAgICBpZiBpc2luc3RhbmNlKGdyb3VwLCBQQlhHcm91cCk6CisgICAgICAgIGdyb3Vw
LlRha2VPdmVyT25seUNoaWxkKHJlY3Vyc2UpCisKKyAgZGVmIFNvcnRHcm91cHMoc2VsZik6Cisg
ICAgIyBTb3J0IHRoZSBjaGlsZHJlbiBvZiB0aGUgbWFpbkdyb3VwIChsaWtlICJTb3VyY2UiIGFu
ZCAiUHJvZHVjdHMiKQorICAgICMgYWNjb3JkaW5nIHRvIHRoZWlyIGRlZmluZWQgb3JkZXIuCisg
ICAgc2VsZi5fcHJvcGVydGllc1snbWFpbkdyb3VwJ10uX3Byb3BlcnRpZXNbJ2NoaWxkcmVuJ10g
PSBcCisgICAgICAgIHNvcnRlZChzZWxmLl9wcm9wZXJ0aWVzWydtYWluR3JvdXAnXS5fcHJvcGVy
dGllc1snY2hpbGRyZW4nXSwKKyAgICAgICAgICAgICAgIGNtcD1sYW1iZGEgeCx5OiB4LkNvbXBh
cmVSb290R3JvdXAoeSkpCisKKyAgICAjIFNvcnQgZXZlcnl0aGluZyBlbHNlIGJ5IHB1dHRpbmcg
Z3JvdXAgYmVmb3JlIGZpbGVzLCBhbmQgZ29pbmcKKyAgICAjIGFscGhhYmV0aWNhbGx5IGJ5IG5h
bWUgd2l0aGluIHNlY3Rpb25zIG9mIGdyb3VwcyBhbmQgZmlsZXMuICBTb3J0R3JvdXAKKyAgICAj
IGlzIHJlY3Vyc2l2ZS4KKyAgICBmb3IgZ3JvdXAgaW4gc2VsZi5fcHJvcGVydGllc1snbWFpbkdy
b3VwJ10uX3Byb3BlcnRpZXNbJ2NoaWxkcmVuJ106CisgICAgICBpZiBub3QgaXNpbnN0YW5jZShn
cm91cCwgUEJYR3JvdXApOgorICAgICAgICBjb250aW51ZQorCisgICAgICBpZiBncm91cC5OYW1l
KCkgPT0gJ1Byb2R1Y3RzJzoKKyAgICAgICAgIyBUaGUgUHJvZHVjdHMgZ3JvdXAgaXMgYSBzcGVj
aWFsIGNhc2UuICBJbnN0ZWFkIG9mIHNvcnRpbmcKKyAgICAgICAgIyBhbHBoYWJldGljYWxseSwg
c29ydCB0aGluZ3MgaW4gdGhlIG9yZGVyIG9mIHRoZSB0YXJnZXRzIHRoYXQKKyAgICAgICAgIyBw
cm9kdWNlIHRoZSBwcm9kdWN0cy4gIFRvIGRvIHRoaXMsIGp1c3QgYnVpbGQgdXAgYSBuZXcgbGlz
dCBvZgorICAgICAgICAjIHByb2R1Y3RzIGJhc2VkIG9uIHRoZSB0YXJnZXRzLgorICAgICAgICBw
cm9kdWN0cyA9IFtdCisgICAgICAgIGZvciB0YXJnZXQgaW4gc2VsZi5fcHJvcGVydGllc1sndGFy
Z2V0cyddOgorICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRhcmdldCwgUEJYTmF0aXZlVGFy
Z2V0KToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgcHJvZHVjdCA9IHRhcmdldC5f
cHJvcGVydGllc1sncHJvZHVjdFJlZmVyZW5jZSddCisgICAgICAgICAgIyBNYWtlIHN1cmUgdGhh
dCB0aGUgcHJvZHVjdCBpcyBhbHJlYWR5IGluIHRoZSBwcm9kdWN0cyBncm91cC4KKyAgICAgICAg
ICBhc3NlcnQgcHJvZHVjdCBpbiBncm91cC5fcHJvcGVydGllc1snY2hpbGRyZW4nXQorICAgICAg
ICAgIHByb2R1Y3RzLmFwcGVuZChwcm9kdWN0KQorCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQg
dGhpcyBwcm9jZXNzIGRvZXNuJ3QgbWlzcyBhbnl0aGluZyB0aGF0IHdhcyBhbHJlYWR5CisgICAg
ICAgICMgaW4gdGhlIHByb2R1Y3RzIGdyb3VwLgorICAgICAgICBhc3NlcnQgbGVuKHByb2R1Y3Rz
KSA9PSBsZW4oZ3JvdXAuX3Byb3BlcnRpZXNbJ2NoaWxkcmVuJ10pCisgICAgICAgIGdyb3VwLl9w
cm9wZXJ0aWVzWydjaGlsZHJlbiddID0gcHJvZHVjdHMKKyAgICAgIGVsc2U6CisgICAgICAgIGdy
b3VwLlNvcnRHcm91cCgpCisKKyAgZGVmIEFkZE9yR2V0UHJvamVjdFJlZmVyZW5jZShzZWxmLCBv
dGhlcl9wYnhwcm9qZWN0KToKKyAgICAiIiJBZGQgYSByZWZlcmVuY2UgdG8gYW5vdGhlciBwcm9q
ZWN0IGZpbGUgKHZpYSBQQlhQcm9qZWN0IG9iamVjdCkgdG8gdGhpcworICAgIG9uZS4KKworICAg
IFJldHVybnMgW1Byb2R1Y3RHcm91cCwgUHJvamVjdFJlZl0uICBQcm9kdWN0R3JvdXAgaXMgYSBQ
QlhHcm91cCBvYmplY3QgaW4KKyAgICB0aGlzIHByb2plY3QgZmlsZSB0aGF0IGNvbnRhaW5zIGEg
UEJYUmVmZXJlbmNlUHJveHkgb2JqZWN0IGZvciBlYWNoCisgICAgcHJvZHVjdCBvZiBlYWNoIFBC
WE5hdGl2ZVRhcmdldCBpbiB0aGUgb3RoZXIgcHJvamVjdCBmaWxlLiAgUHJvamVjdFJlZiBpcwor
ICAgIGEgUEJYRmlsZVJlZmVyZW5jZSB0byB0aGUgb3RoZXIgcHJvamVjdCBmaWxlLgorCisgICAg
SWYgdGhpcyBwcm9qZWN0IGZpbGUgYWxyZWFkeSByZWZlcmVuY2VzIHRoZSBvdGhlciBwcm9qZWN0
IGZpbGUsIHRoZQorICAgIGV4aXN0aW5nIFByb2R1Y3RHcm91cCBhbmQgUHJvamVjdFJlZiBhcmUg
cmV0dXJuZWQuICBUaGUgUHJvZHVjdEdyb3VwIHdpbGwKKyAgICBzdGlsbCBiZSB1cGRhdGVkIGlm
IG5lY2Vzc2FyeS4KKyAgICAiIiIKKworICAgIGlmIG5vdCAncHJvamVjdFJlZmVyZW5jZXMnIGlu
IHNlbGYuX3Byb3BlcnRpZXM6CisgICAgICBzZWxmLl9wcm9wZXJ0aWVzWydwcm9qZWN0UmVmZXJl
bmNlcyddID0gW10KKworICAgIHByb2R1Y3RfZ3JvdXAgPSBOb25lCisgICAgcHJvamVjdF9yZWYg
PSBOb25lCisKKyAgICBpZiBub3Qgb3RoZXJfcGJ4cHJvamVjdCBpbiBzZWxmLl9vdGhlcl9wYnhw
cm9qZWN0czoKKyAgICAgICMgVGhpcyBwcm9qZWN0IGZpbGUgaXNuJ3QgeWV0IGxpbmtlZCB0byB0
aGUgb3RoZXIgb25lLiAgRXN0YWJsaXNoIHRoZQorICAgICAgIyBsaW5rLgorICAgICAgcHJvZHVj
dF9ncm91cCA9IFBCWEdyb3VwKHsnbmFtZSc6ICdQcm9kdWN0cyd9KQorCisgICAgICAjIFByb2R1
Y3RHcm91cCBpcyBzdHJvbmcuCisgICAgICBwcm9kdWN0X2dyb3VwLnBhcmVudCA9IHNlbGYKKwor
ICAgICAgIyBUaGVyZSdzIG5vdGhpbmcgdW5pcXVlIGFib3V0IHRoaXMgUEJYR3JvdXAsIGFuZCBp
ZiBsZWZ0IGFsb25lLCBpdCB3aWxsCisgICAgICAjIHdpbmQgdXAgd2l0aCB0aGUgc2FtZSBzZXQg
b2YgaGFzaGFibGVzIGFzIGFsbCBvdGhlciBQQlhHcm91cCBvYmplY3RzCisgICAgICAjIG93bmVk
IGJ5IHRoZSBwcm9qZWN0UmVmZXJlbmNlcyBsaXN0LiAgQWRkIHRoZSBoYXNoYWJsZXMgb2YgdGhl
CisgICAgICAjIHJlbW90ZSBQQlhQcm9qZWN0IHRoYXQgaXQncyByZWxhdGVkIHRvLgorICAgICAg
cHJvZHVjdF9ncm91cC5faGFzaGFibGVzLmV4dGVuZChvdGhlcl9wYnhwcm9qZWN0Lkhhc2hhYmxl
cygpKQorCisgICAgICAjIFRoZSBvdGhlciBwcm9qZWN0IHJlcG9ydHMgaXRzIHBhdGggYXMgcmVs
YXRpdmUgdG8gdGhlIHNhbWUgZGlyZWN0b3J5CisgICAgICAjIHRoYXQgdGhpcyBwcm9qZWN0J3Mg
cGF0aCBpcyByZWxhdGl2ZSB0by4gIFRoZSBvdGhlciBwcm9qZWN0J3MgcGF0aAorICAgICAgIyBp
cyBub3QgbmVjZXNzYXJpbHkgYWxyZWFkeSByZWxhdGl2ZSB0byB0aGlzIHByb2plY3QuICBGaWd1
cmUgb3V0IHRoZQorICAgICAgIyBwYXRobmFtZSB0aGF0IHRoaXMgcHJvamVjdCBuZWVkcyB0byB1
c2UgdG8gcmVmZXIgdG8gdGhlIG90aGVyIG9uZS4KKyAgICAgIHRoaXNfcGF0aCA9IHBvc2l4cGF0
aC5kaXJuYW1lKHNlbGYuUGF0aCgpKQorICAgICAgcHJvamVjdERpclBhdGggPSBzZWxmLkdldFBy
b3BlcnR5KCdwcm9qZWN0RGlyUGF0aCcpCisgICAgICBpZiBwcm9qZWN0RGlyUGF0aDoKKyAgICAg
ICAgaWYgcG9zaXhwYXRoLmlzYWJzKHByb2plY3REaXJQYXRoWzBdKToKKyAgICAgICAgICB0aGlz
X3BhdGggPSBwcm9qZWN0RGlyUGF0aAorICAgICAgICBlbHNlOgorICAgICAgICAgIHRoaXNfcGF0
aCA9IHBvc2l4cGF0aC5qb2luKHRoaXNfcGF0aCwgcHJvamVjdERpclBhdGgpCisgICAgICBvdGhl
cl9wYXRoID0gZ3lwLmNvbW1vbi5SZWxhdGl2ZVBhdGgob3RoZXJfcGJ4cHJvamVjdC5QYXRoKCks
IHRoaXNfcGF0aCkKKworICAgICAgIyBQcm9qZWN0UmVmIGlzIHdlYWsgKGl0J3Mgb3duZWQgYnkg
dGhlIG1haW5Hcm91cCBoaWVyYXJjaHkpLgorICAgICAgcHJvamVjdF9yZWYgPSBQQlhGaWxlUmVm
ZXJlbmNlKHsKKyAgICAgICAgICAgICdsYXN0S25vd25GaWxlVHlwZSc6ICd3cmFwcGVyLnBiLXBy
b2plY3QnLAorICAgICAgICAgICAgJ3BhdGgnOiAgICAgICAgICAgICAgb3RoZXJfcGF0aCwKKyAg
ICAgICAgICAgICdzb3VyY2VUcmVlJzogICAgICAgICdTT1VSQ0VfUk9PVCcsCisgICAgICAgICAg
fSkKKyAgICAgIHNlbGYuUHJvamVjdHNHcm91cCgpLkFwcGVuZENoaWxkKHByb2plY3RfcmVmKQor
CisgICAgICByZWZfZGljdCA9IHsnUHJvZHVjdEdyb3VwJzogcHJvZHVjdF9ncm91cCwgJ1Byb2pl
Y3RSZWYnOiBwcm9qZWN0X3JlZn0KKyAgICAgIHNlbGYuX290aGVyX3BieHByb2plY3RzW290aGVy
X3BieHByb2plY3RdID0gcmVmX2RpY3QKKyAgICAgIHNlbGYuQXBwZW5kUHJvcGVydHkoJ3Byb2pl
Y3RSZWZlcmVuY2VzJywgcmVmX2RpY3QpCisKKyAgICAgICMgWGNvZGUgc2VlbXMgdG8gc29ydCB0
aGlzIGxpc3QgY2FzZS1pbnNlbnNpdGl2ZWx5CisgICAgICBzZWxmLl9wcm9wZXJ0aWVzWydwcm9q
ZWN0UmVmZXJlbmNlcyddID0gXAorICAgICAgICAgIHNvcnRlZChzZWxmLl9wcm9wZXJ0aWVzWydw
cm9qZWN0UmVmZXJlbmNlcyddLCBjbXA9bGFtYmRhIHgseToKKyAgICAgICAgICAgICAgICAgY21w
KHhbJ1Byb2plY3RSZWYnXS5OYW1lKCkubG93ZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgIHlb
J1Byb2plY3RSZWYnXS5OYW1lKCkubG93ZXIoKSkpCisgICAgZWxzZToKKyAgICAgICMgVGhlIGxp
bmsgYWxyZWFkeSBleGlzdHMuICBQdWxsIG91dCB0aGUgcmVsZXZudCBkYXRhLgorICAgICAgcHJv
amVjdF9yZWZfZGljdCA9IHNlbGYuX290aGVyX3BieHByb2plY3RzW290aGVyX3BieHByb2plY3Rd
CisgICAgICBwcm9kdWN0X2dyb3VwID0gcHJvamVjdF9yZWZfZGljdFsnUHJvZHVjdEdyb3VwJ10K
KyAgICAgIHByb2plY3RfcmVmID0gcHJvamVjdF9yZWZfZGljdFsnUHJvamVjdFJlZiddCisKKyAg
ICBzZWxmLl9TZXRVcFByb2R1Y3RSZWZlcmVuY2VzKG90aGVyX3BieHByb2plY3QsIHByb2R1Y3Rf
Z3JvdXAsIHByb2plY3RfcmVmKQorCisgICAgcmV0dXJuIFtwcm9kdWN0X2dyb3VwLCBwcm9qZWN0
X3JlZl0KKworICBkZWYgX1NldFVwUHJvZHVjdFJlZmVyZW5jZXMoc2VsZiwgb3RoZXJfcGJ4cHJv
amVjdCwgcHJvZHVjdF9ncm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2pl
Y3RfcmVmKToKKyAgICAjIFRPRE8obWFyayk6IFRoaXMgb25seSBhZGRzIHJlZmVyZW5jZXMgdG8g
cHJvZHVjdHMgaW4gb3RoZXJfcGJ4cHJvamVjdAorICAgICMgd2hlbiB0aGV5IGRvbid0IGV4aXN0
IGluIHRoaXMgcGJ4cHJvamVjdC4gIFBlcmhhcHMgaXQgc2hvdWxkIGFsc28KKyAgICAjIHJlbW92
ZSByZWZlcmVuY2VzIGZyb20gdGhpcyBwYnhwcm9qZWN0IHRoYXQgYXJlIG5vIGxvbmdlciBwcmVz
ZW50IGluCisgICAgIyBvdGhlcl9wYnhwcm9qZWN0LiAgUGVyaGFwcyBpdCBzaG91bGQgdXBkYXRl
IHZhcmlvdXMgcHJvcGVydGllcyBpZiB0aGV5CisgICAgIyBjaGFuZ2UuCisgICAgZm9yIHRhcmdl
dCBpbiBvdGhlcl9wYnhwcm9qZWN0Ll9wcm9wZXJ0aWVzWyd0YXJnZXRzJ106CisgICAgICBpZiBu
b3QgaXNpbnN0YW5jZSh0YXJnZXQsIFBCWE5hdGl2ZVRhcmdldCk6CisgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgIG90aGVyX2ZpbGVyZWYgPSB0YXJnZXQuX3Byb3BlcnRpZXNbJ3Byb2R1Y3RSZWZl
cmVuY2UnXQorICAgICAgaWYgcHJvZHVjdF9ncm91cC5HZXRDaGlsZEJ5UmVtb3RlT2JqZWN0KG90
aGVyX2ZpbGVyZWYpID09IE5vbmU6CisgICAgICAgICMgWGNvZGUgc2V0cyByZW1vdGVJbmZvIHRv
IHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgYW5kIG5vdCB0aGUgbmFtZQorICAgICAgICAjIG9mIGl0
cyBwcm9kdWN0LCBkZXNwaXRlIHRoaXMgcHJveHkgYmVpbmcgYSByZWZlcmVuY2UgdG8gdGhlIHBy
b2R1Y3QuCisgICAgICAgIGNvbnRhaW5lcl9pdGVtID0gUEJYQ29udGFpbmVySXRlbVByb3h5KHsK
KyAgICAgICAgICAgICAgJ2NvbnRhaW5lclBvcnRhbCc6ICAgICAgcHJvamVjdF9yZWYsCisgICAg
ICAgICAgICAgICdwcm94eVR5cGUnOiAgICAgICAgICAgIDIsCisgICAgICAgICAgICAgICdyZW1v
dGVHbG9iYWxJRFN0cmluZyc6IG90aGVyX2ZpbGVyZWYsCisgICAgICAgICAgICAgICdyZW1vdGVJ
bmZvJzogICAgICAgICAgIHRhcmdldC5OYW1lKCkKKyAgICAgICAgICAgIH0pCisgICAgICAgICMg
VE9ETyhtYXJrKTogRG9lcyBzb3VyY2VUcmVlIGdldCBjb3BpZWQgc3RyYWlnaHQgb3ZlciBmcm9t
IHRoZSBvdGhlcgorICAgICAgICAjIHByb2plY3Q/ICBDYW4gdGhlIG90aGVyIHByb2plY3QgZXZl
ciBoYXZlIGxhc3RLbm93bkZpbGVUeXBlIGhlcmUKKyAgICAgICAgIyBpbnN0ZWFkIG9mIGV4cGxp
Y2l0RmlsZVR5cGU/ICAoVXNlIGl0IGlmIHNvPykgIENhbiBwYXRoIGV2ZXIgYmUKKyAgICAgICAg
IyB1bnNldD8gIChJIGRvbid0IHRoaW5rIHNvLikgIENhbiBvdGhlcl9maWxlcmVmIGhhdmUgbmFt
ZSBzZXQsIGFuZAorICAgICAgICAjIGRvZXMgaXQgaW1wYWN0IHRoZSBQQlhSZWZlcmVuY2VQcm94
eSBpZiBzbz8gIFRoZXNlIGFyZSB0aGUgcXVlc3Rpb25zCisgICAgICAgICMgdGhhdCBwZXJoYXBz
IHdpbGwgYmUgYW5zd2VyZWQgb25lIGRheS4KKyAgICAgICAgcmVmZXJlbmNlX3Byb3h5ID0gUEJY
UmVmZXJlbmNlUHJveHkoeworICAgICAgICAgICAgICAnZmlsZVR5cGUnOiAgIG90aGVyX2ZpbGVy
ZWYuX3Byb3BlcnRpZXNbJ2V4cGxpY2l0RmlsZVR5cGUnXSwKKyAgICAgICAgICAgICAgJ3BhdGgn
OiAgICAgICBvdGhlcl9maWxlcmVmLl9wcm9wZXJ0aWVzWydwYXRoJ10sCisgICAgICAgICAgICAg
ICdzb3VyY2VUcmVlJzogb3RoZXJfZmlsZXJlZi5fcHJvcGVydGllc1snc291cmNlVHJlZSddLAor
ICAgICAgICAgICAgICAncmVtb3RlUmVmJzogIGNvbnRhaW5lcl9pdGVtLAorICAgICAgICAgICAg
fSkKKworICAgICAgICBwcm9kdWN0X2dyb3VwLkFwcGVuZENoaWxkKHJlZmVyZW5jZV9wcm94eSkK
KworICBkZWYgU29ydFJlbW90ZVByb2R1Y3RSZWZlcmVuY2VzKHNlbGYpOgorICAgICMgRm9yIGVh
Y2ggcmVtb3RlIHByb2plY3QgZmlsZSwgc29ydCB0aGUgYXNzb2NpYXRlZCBQcm9kdWN0R3JvdXAg
aW4gdGhlCisgICAgIyBzYW1lIG9yZGVyIHRoYXQgdGhlIHRhcmdldHMgYXJlIHNvcnRlZCBpbiB0
aGUgcmVtb3RlIHByb2plY3QgZmlsZS4gIFRoaXMKKyAgICAjIGlzIHRoZSBzb3J0IG9yZGVyIHVz
ZWQgYnkgWGNvZGUuCisKKyAgICBkZWYgQ29tcGFyZVByb2R1Y3RzKHgsIHksIHJlbW90ZV9wcm9k
dWN0cyk6CisgICAgICAjIHggYW5kIHkgYXJlIFBCWFJlZmVyZW5jZVByb3h5IG9iamVjdHMuICBH
byB0aHJvdWdoIHRoZWlyIGFzc29jaWF0ZWQKKyAgICAgICMgUEJYQ29udGFpbmVySXRlbSB0byBn
ZXQgdGhlIHJlbW90ZSBQQlhGaWxlUmVmZXJlbmNlLCB3aGljaCB3aWxsIGJlCisgICAgICAjIHBy
ZXNlbnQgaW4gdGhlIHJlbW90ZV9wcm9kdWN0cyBsaXN0LgorICAgICAgeF9yZW1vdGUgPSB4Ll9w
cm9wZXJ0aWVzWydyZW1vdGVSZWYnXS5fcHJvcGVydGllc1sncmVtb3RlR2xvYmFsSURTdHJpbmcn
XQorICAgICAgeV9yZW1vdGUgPSB5Ll9wcm9wZXJ0aWVzWydyZW1vdGVSZWYnXS5fcHJvcGVydGll
c1sncmVtb3RlR2xvYmFsSURTdHJpbmcnXQorICAgICAgeF9pbmRleCA9IHJlbW90ZV9wcm9kdWN0
cy5pbmRleCh4X3JlbW90ZSkKKyAgICAgIHlfaW5kZXggPSByZW1vdGVfcHJvZHVjdHMuaW5kZXgo
eV9yZW1vdGUpCisKKyAgICAgICMgVXNlIHRoZSBvcmRlciBvZiBlYWNoIHJlbW90ZSBQQlhGaWxl
UmVmZXJlbmNlIGluIHJlbW90ZV9wcm9kdWN0cyB0bworICAgICAgIyBkZXRlcm1pbmUgdGhlIHNv
cnQgb3JkZXIuCisgICAgICByZXR1cm4gY21wKHhfaW5kZXgsIHlfaW5kZXgpCisKKyAgICBmb3Ig
b3RoZXJfcGJ4cHJvamVjdCwgcmVmX2RpY3QgaW4gc2VsZi5fb3RoZXJfcGJ4cHJvamVjdHMuaXRl
cml0ZW1zKCk6CisgICAgICAjIEJ1aWxkIHVwIGEgbGlzdCBvZiBwcm9kdWN0cyBpbiB0aGUgcmVt
b3RlIHByb2plY3QgZmlsZSwgb3JkZXJlZCB0aGUKKyAgICAgICMgc2FtZSBhcyB0aGUgdGFyZ2V0
cyB0aGF0IHByb2R1Y2UgdGhlbS4KKyAgICAgIHJlbW90ZV9wcm9kdWN0cyA9IFtdCisgICAgICBm
b3IgdGFyZ2V0IGluIG90aGVyX3BieHByb2plY3QuX3Byb3BlcnRpZXNbJ3RhcmdldHMnXToKKyAg
ICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGFyZ2V0LCBQQlhOYXRpdmVUYXJnZXQpOgorICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgIHJlbW90ZV9wcm9kdWN0cy5hcHBlbmQodGFyZ2V0Ll9wcm9w
ZXJ0aWVzWydwcm9kdWN0UmVmZXJlbmNlJ10pCisKKyAgICAgICMgU29ydCB0aGUgUEJYUmVmZXJl
bmNlUHJveHkgY2hpbGRyZW4gYWNjb3JkaW5nIHRvIHRoZSBsaXN0IG9mIHJlbW90ZQorICAgICAg
IyBwcm9kdWN0cy4KKyAgICAgIHByb2R1Y3RfZ3JvdXAgPSByZWZfZGljdFsnUHJvZHVjdEdyb3Vw
J10KKyAgICAgIHByb2R1Y3RfZ3JvdXAuX3Byb3BlcnRpZXNbJ2NoaWxkcmVuJ10gPSBzb3J0ZWQo
CisgICAgICAgICAgcHJvZHVjdF9ncm91cC5fcHJvcGVydGllc1snY2hpbGRyZW4nXSwKKyAgICAg
ICAgICBjbXA9bGFtYmRhIHgsIHk6IENvbXBhcmVQcm9kdWN0cyh4LCB5LCByZW1vdGVfcHJvZHVj
dHMpKQorCisKK2NsYXNzIFhDUHJvamVjdEZpbGUoWENPYmplY3QpOgorICBfc2NoZW1hID0gWENP
YmplY3QuX3NjaGVtYS5jb3B5KCkKKyAgX3NjaGVtYS51cGRhdGUoeworICAgICdhcmNoaXZlVmVy
c2lvbic6IFswLCBpbnQsICAgICAgICAwLCAxLCAxXSwKKyAgICAnY2xhc3Nlcyc6ICAgICAgICBb
MCwgZGljdCwgICAgICAgMCwgMSwge31dLAorICAgICdvYmplY3RWZXJzaW9uJzogIFswLCBpbnQs
ICAgICAgICAwLCAxLCA0NV0sCisgICAgJ3Jvb3RPYmplY3QnOiAgICAgWzAsIFBCWFByb2plY3Qs
IDEsIDFdLAorICB9KQorCisgIGRlZiBTZXRYY29kZVZlcnNpb24oc2VsZiwgdmVyc2lvbik6Cisg
ICAgdmVyc2lvbl90b19vYmplY3RfdmVyc2lvbiA9IHsKKyAgICAgICcyLjQnOiA0NSwKKyAgICAg
ICczLjAnOiA0NSwKKyAgICAgICczLjEnOiA0NSwKKyAgICAgICczLjInOiA0NiwKKyAgICB9Cisg
ICAgaWYgbm90IHZlcnNpb24gaW4gdmVyc2lvbl90b19vYmplY3RfdmVyc2lvbjoKKyAgICAgIHN1
cHBvcnRlZF9zdHIgPSAnLCAnLmpvaW4oc29ydGVkKHZlcnNpb25fdG9fb2JqZWN0X3ZlcnNpb24u
a2V5cygpKSkKKyAgICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAgICAgICAnVW5zdXBwb3J0ZWQg
WGNvZGUgdmVyc2lvbiAlcyAoc3VwcG9ydGVkOiAlcyknICUKKyAgICAgICAgICAoIHZlcnNpb24s
IHN1cHBvcnRlZF9zdHIgKSApCisgICAgY29tcGF0aWJpbGl0eV92ZXJzaW9uID0gJ1hjb2RlICVz
JyAlIHZlcnNpb24KKyAgICBzZWxmLl9wcm9wZXJ0aWVzWydyb290T2JqZWN0J10uU2V0UHJvcGVy
dHkoJ2NvbXBhdGliaWxpdHlWZXJzaW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eV92ZXJzaW9uKQorICAgIHNlbGYuU2V0UHJv
cGVydHkoJ29iamVjdFZlcnNpb24nLCB2ZXJzaW9uX3RvX29iamVjdF92ZXJzaW9uW3ZlcnNpb25d
KTsKKworICBkZWYgQ29tcHV0ZUlEcyhzZWxmLCByZWN1cnNpdmU9VHJ1ZSwgb3ZlcndyaXRlPVRy
dWUsIGhhc2g9Tm9uZSk6CisgICAgIyBBbHRob3VnaCBYQ1Byb2plY3RGaWxlIGlzIGltcGxlbWVu
dGVkIGhlcmUgYXMgYW4gWENPYmplY3QsIGl0J3Mgbm90IGEKKyAgICAjIHByb3BlciBvYmplY3Qg
aW4gdGhlIFhjb2RlIHNlbnNlLCBhbmQgaXQgY2VydGFpbmx5IGRvZXNuJ3QgaGF2ZSBpdHMgb3du
CisgICAgIyBJRC4gIFBhc3MgdGhyb3VnaCBhbiBhdHRlbXB0IHRvIHVwZGF0ZSBJRHMgdG8gdGhl
IHJlYWwgcm9vdCBvYmplY3QuCisgICAgaWYgcmVjdXJzaXZlOgorICAgICAgc2VsZi5fcHJvcGVy
dGllc1sncm9vdE9iamVjdCddLkNvbXB1dGVJRHMocmVjdXJzaXZlLCBvdmVyd3JpdGUsIGhhc2gp
CisKKyAgZGVmIFByaW50KHNlbGYsIGZpbGU9c3lzLnN0ZG91dCk6CisgICAgc2VsZi5WZXJpZnlI
YXNSZXF1aXJlZFByb3BlcnRpZXMoKQorCisgICAgIyBBZGQgdGhlIHNwZWNpYWwgIm9iamVjdHMi
IHByb3BlcnR5LCB3aGljaCB3aWxsIGJlIGNhdWdodCBhbmQgaGFuZGxlZAorICAgICMgc2VwYXJh
dGVseSBkdXJpbmcgcHJpbnRpbmcuICBUaGlzIHN0cnVjdHVyZSBhbGxvd3MgYSBmYWlybHkgc3Rh
bmRhcmQKKyAgICAjIGxvb3AgZG8gdGhlIG5vcm1hbCBwcmludGluZy4KKyAgICBzZWxmLl9wcm9w
ZXJ0aWVzWydvYmplY3RzJ10gPSB7fQorICAgIHNlbGYuX1hDUHJpbnQoZmlsZSwgMCwgJy8vICEk
KlVURjgqJCFcbicpCisgICAgaWYgc2VsZi5fc2hvdWxkX3ByaW50X3NpbmdsZV9saW5lOgorICAg
ICAgc2VsZi5fWENQcmludChmaWxlLCAwLCAneyAnKQorICAgIGVsc2U6CisgICAgICBzZWxmLl9Y
Q1ByaW50KGZpbGUsIDAsICd7XG4nKQorICAgIGZvciBwcm9wZXJ0eSwgdmFsdWUgaW4gc29ydGVk
KHNlbGYuX3Byb3BlcnRpZXMuaXRlcml0ZW1zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY21wPWxhbWJkYSB4LCB5OiBjbXAoeCwgeSkpOgorICAgICAgaWYgcHJvcGVydHkg
PT0gJ29iamVjdHMnOgorICAgICAgICBzZWxmLl9QcmludE9iamVjdHMoZmlsZSkKKyAgICAgIGVs
c2U6CisgICAgICAgIHNlbGYuX1hDS1ZQcmludChmaWxlLCAxLCBwcm9wZXJ0eSwgdmFsdWUpCisg
ICAgc2VsZi5fWENQcmludChmaWxlLCAwLCAnfVxuJykKKyAgICBkZWwgc2VsZi5fcHJvcGVydGll
c1snb2JqZWN0cyddCisKKyAgZGVmIF9QcmludE9iamVjdHMoc2VsZiwgZmlsZSk6CisgICAgaWYg
c2VsZi5fc2hvdWxkX3ByaW50X3NpbmdsZV9saW5lOgorICAgICAgc2VsZi5fWENQcmludChmaWxl
LCAwLCAnb2JqZWN0cyA9IHsnKQorICAgIGVsc2U6CisgICAgICBzZWxmLl9YQ1ByaW50KGZpbGUs
IDEsICdvYmplY3RzID0ge1xuJykKKworICAgIG9iamVjdHNfYnlfY2xhc3MgPSB7fQorICAgIGZv
ciBvYmplY3QgaW4gc2VsZi5EZXNjZW5kYW50cygpOgorICAgICAgaWYgb2JqZWN0ID09IHNlbGY6
CisgICAgICAgIGNvbnRpbnVlCisgICAgICBjbGFzc19uYW1lID0gb2JqZWN0Ll9fY2xhc3NfXy5f
X25hbWVfXworICAgICAgaWYgbm90IGNsYXNzX25hbWUgaW4gb2JqZWN0c19ieV9jbGFzczoKKyAg
ICAgICAgb2JqZWN0c19ieV9jbGFzc1tjbGFzc19uYW1lXSA9IFtdCisgICAgICBvYmplY3RzX2J5
X2NsYXNzW2NsYXNzX25hbWVdLmFwcGVuZChvYmplY3QpCisKKyAgICBmb3IgY2xhc3NfbmFtZSBp
biBzb3J0ZWQob2JqZWN0c19ieV9jbGFzcyk6CisgICAgICBzZWxmLl9YQ1ByaW50KGZpbGUsIDAs
ICdcbicpCisgICAgICBzZWxmLl9YQ1ByaW50KGZpbGUsIDAsICcvKiBCZWdpbiAnICsgY2xhc3Nf
bmFtZSArICcgc2VjdGlvbiAqL1xuJykKKyAgICAgIGZvciBvYmplY3QgaW4gc29ydGVkKG9iamVj
dHNfYnlfY2xhc3NbY2xhc3NfbmFtZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXA9
bGFtYmRhIHgsIHk6IGNtcCh4LmlkLCB5LmlkKSk6CisgICAgICAgIG9iamVjdC5QcmludChmaWxl
KQorICAgICAgc2VsZi5fWENQcmludChmaWxlLCAwLCAnLyogRW5kICcgKyBjbGFzc19uYW1lICsg
JyBzZWN0aW9uICovXG4nKQorCisgICAgaWYgc2VsZi5fc2hvdWxkX3ByaW50X3NpbmdsZV9saW5l
OgorICAgICAgc2VsZi5fWENQcmludChmaWxlLCAwLCAnfTsgJykKKyAgICBlbHNlOgorICAgICAg
c2VsZi5fWENQcmludChmaWxlLCAxLCAnfTtcbicpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvcHlsaWIvZ3lwL3htbF9maXgucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvcHls
aWIvZ3lwL3htbF9maXgucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBmNzgyZDI4MzI4MTY0NDYzZDM5NmI5ODgz
ZTc0NjVhMmYyNmJiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9w
eWxpYi9neXAveG1sX2ZpeC5weQpAQCAtMCwwICsxLDcwIEBACisjIS91c3IvYmluL3B5dGhvbgor
IyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiJBcHBsaWVz
IGEgZml4IHRvIENSIExGIFRBQiBoYW5kbGluZyBpbiB4bWwuZG9tLgorCitGaXhlcyB0aGlzOiBo
dHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD03NjI5Mwor
V29ya2luZyBhcm91bmQgdGhpczogaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTU3NTIKK1RP
RE8oYnJhZG5lbHNvbik6IENvbnNpZGVyIGRyb3BwaW5nIHRoaXMgd2hlbiB3ZSBkcm9wIFhQIHN1
cHBvcnQuCisiIiIKKworCitpbXBvcnQgeG1sLmRvbS5taW5pZG9tCisKKworZGVmIF9SZXBsYWNl
bWVudF93cml0ZV9kYXRhKHdyaXRlciwgZGF0YSwgaXNfYXR0cmliPUZhbHNlKToKKyAgIiIiV3Jp
dGVzIGRhdGFjaGFycyB0byB3cml0ZXIuIiIiCisgIGRhdGEgPSBkYXRhLnJlcGxhY2UoIiYiLCAi
JmFtcDsiKS5yZXBsYWNlKCI8IiwgIiZsdDsiKQorICBkYXRhID0gZGF0YS5yZXBsYWNlKCJcIiIs
ICImcXVvdDsiKS5yZXBsYWNlKCI+IiwgIiZndDsiKQorICBpZiBpc19hdHRyaWI6CisgICAgZGF0
YSA9IGRhdGEucmVwbGFjZSgKKyAgICAgICAgIlxyIiwgIiYjeEQ7IikucmVwbGFjZSgKKyAgICAg
ICAgIlxuIiwgIiYjeEE7IikucmVwbGFjZSgKKyAgICAgICAgIlx0IiwgIiYjeDk7IikKKyAgd3Jp
dGVyLndyaXRlKGRhdGEpCisKKworZGVmIF9SZXBsYWNlbWVudF93cml0ZXhtbChzZWxmLCB3cml0
ZXIsIGluZGVudD0iIiwgYWRkaW5kZW50PSIiLCBuZXdsPSIiKToKKyAgIyBpbmRlbnQgPSBjdXJy
ZW50IGluZGVudGF0aW9uCisgICMgYWRkaW5kZW50ID0gaW5kZW50YXRpb24gdG8gYWRkIHRvIGhp
Z2hlciBsZXZlbHMKKyAgIyBuZXdsID0gbmV3bGluZSBzdHJpbmcKKyAgd3JpdGVyLndyaXRlKGlu
ZGVudCsiPCIgKyBzZWxmLnRhZ05hbWUpCisKKyAgYXR0cnMgPSBzZWxmLl9nZXRfYXR0cmlidXRl
cygpCisgIGFfbmFtZXMgPSBhdHRycy5rZXlzKCkKKyAgYV9uYW1lcy5zb3J0KCkKKworICBmb3Ig
YV9uYW1lIGluIGFfbmFtZXM6CisgICAgd3JpdGVyLndyaXRlKCIgJXM9XCIiICUgYV9uYW1lKQor
ICAgIF9SZXBsYWNlbWVudF93cml0ZV9kYXRhKHdyaXRlciwgYXR0cnNbYV9uYW1lXS52YWx1ZSwg
aXNfYXR0cmliPVRydWUpCisgICAgd3JpdGVyLndyaXRlKCJcIiIpCisgIGlmIHNlbGYuY2hpbGRO
b2RlczoKKyAgICB3cml0ZXIud3JpdGUoIj4lcyIgJSBuZXdsKQorICAgIGZvciBub2RlIGluIHNl
bGYuY2hpbGROb2RlczoKKyAgICAgIG5vZGUud3JpdGV4bWwod3JpdGVyLCBpbmRlbnQgKyBhZGRp
bmRlbnQsIGFkZGluZGVudCwgbmV3bCkKKyAgICB3cml0ZXIud3JpdGUoIiVzPC8lcz4lcyIgJSAo
aW5kZW50LCBzZWxmLnRhZ05hbWUsIG5ld2wpKQorICBlbHNlOgorICAgIHdyaXRlci53cml0ZSgi
Lz4lcyIgJSBuZXdsKQorCisKK2NsYXNzIFhtbEZpeChvYmplY3QpOgorICAiIiJPYmplY3QgdG8g
bWFuYWdlIHRlbXBvcmFyeSBwYXRjaGluZyBvZiB4bWwuZG9tLm1pbmlkb20uIiIiCisKKyAgZGVm
IF9faW5pdF9fKHNlbGYpOgorICAgICMgUHJlc2VydmUgY3VycmVudCB4bWwuZG9tLm1pbmlkb20g
ZnVuY3Rpb25zLgorICAgIHNlbGYud3JpdGVfZGF0YSA9IHhtbC5kb20ubWluaWRvbS5fd3JpdGVf
ZGF0YQorICAgIHNlbGYud3JpdGV4bWwgPSB4bWwuZG9tLm1pbmlkb20uRWxlbWVudC53cml0ZXht
bAorICAgICMgSW5qZWN0IHJlcGxhY2VtZW50IHZlcnNpb25zIG9mIGEgZnVuY3Rpb24gYW5kIGEg
bWV0aG9kLgorICAgIHhtbC5kb20ubWluaWRvbS5fd3JpdGVfZGF0YSA9IF9SZXBsYWNlbWVudF93
cml0ZV9kYXRhCisgICAgeG1sLmRvbS5taW5pZG9tLkVsZW1lbnQud3JpdGV4bWwgPSBfUmVwbGFj
ZW1lbnRfd3JpdGV4bWwKKworICBkZWYgQ2xlYW51cChzZWxmKToKKyAgICBpZiBzZWxmLndyaXRl
X2RhdGE6CisgICAgICB4bWwuZG9tLm1pbmlkb20uX3dyaXRlX2RhdGEgPSBzZWxmLndyaXRlX2Rh
dGEKKyAgICAgIHhtbC5kb20ubWluaWRvbS5FbGVtZW50LndyaXRleG1sID0gc2VsZi53cml0ZXht
bAorICAgICAgc2VsZi53cml0ZV9kYXRhID0gTm9uZQorCisgIGRlZiBfX2RlbF9fKHNlbGYpOgor
ICAgIHNlbGYuQ2xlYW51cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvc2Ft
cGxlcy9zYW1wbGVzIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3NhbXBsZXMvc2FtcGxlcwpuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MDRiNjE4OTk4NzQ3ZGU2MjI0YWI0NGNhNmUzZmNlYmRiMTIzZTYxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3NhbXBsZXMvc2FtcGxlcwpAQCAtMCww
ICsxLDgxIEBACisjIS91c3IvYmluL3B5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc2h1dGlsCitpbXBv
cnQgc3lzCisKKworZ3lwcyA9IFsKKyAgICAnYXBwL2FwcC5neXAnLAorICAgICdiYXNlL2Jhc2Uu
Z3lwJywKKyAgICAnYnVpbGQvdGVtcF9neXAvZ29vZ2xldXJsLmd5cCcsCisgICAgJ2J1aWxkL2Fs
bC5neXAnLAorICAgICdidWlsZC9jb21tb24uZ3lwaScsCisgICAgJ2J1aWxkL2V4dGVybmFsX2Nv
ZGUuZ3lwaScsCisgICAgJ2Nocm9tZS90ZXN0L3NlY3VyaXR5X3Rlc3RzL3NlY3VyaXR5X3Rlc3Rz
Lmd5cCcsCisgICAgJ2Nocm9tZS90aGlyZF9wYXJ0eS9odW5zcGVsbC9odW5zcGVsbC5neXAnLAor
ICAgICdjaHJvbWUvY2hyb21lLmd5cCcsCisgICAgJ21lZGlhL21lZGlhLmd5cCcsCisgICAgJ25l
dC9uZXQuZ3lwJywKKyAgICAncHJpbnRpbmcvcHJpbnRpbmcuZ3lwJywKKyAgICAnc2RjaC9zZGNo
Lmd5cCcsCisgICAgJ3NraWEvc2tpYS5neXAnLAorICAgICd0ZXN0aW5nL2dtb2NrLmd5cCcsCisg
ICAgJ3Rlc3RpbmcvZ3Rlc3QuZ3lwJywKKyAgICAndGhpcmRfcGFydHkvYnppcDIvYnppcDIuZ3lw
JywKKyAgICAndGhpcmRfcGFydHkvaWN1MzgvaWN1MzguZ3lwJywKKyAgICAndGhpcmRfcGFydHkv
bGliZXZlbnQvbGliZXZlbnQuZ3lwJywKKyAgICAndGhpcmRfcGFydHkvbGlianBlZy9saWJqcGVn
Lmd5cCcsCisgICAgJ3RoaXJkX3BhcnR5L2xpYnBuZy9saWJwbmcuZ3lwJywKKyAgICAndGhpcmRf
cGFydHkvbGlieG1sL2xpYnhtbC5neXAnLAorICAgICd0aGlyZF9wYXJ0eS9saWJ4c2x0L2xpYnhz
bHQuZ3lwJywKKyAgICAndGhpcmRfcGFydHkvbHptYV9zZGsvbHptYV9zZGsuZ3lwJywKKyAgICAn
dGhpcmRfcGFydHkvbW9kcF9iNjQvbW9kcF9iNjQuZ3lwJywKKyAgICAndGhpcmRfcGFydHkvbnBh
cGkvbnBhcGkuZ3lwJywKKyAgICAndGhpcmRfcGFydHkvc3FsaXRlL3NxbGl0ZS5neXAnLAorICAg
ICd0aGlyZF9wYXJ0eS96bGliL3psaWIuZ3lwJywKKyAgICAndjgvdG9vbHMvZ3lwL3Y4Lmd5cCcs
CisgICAgJ3dlYmtpdC9hY3RpdmV4X3NoaW0vYWN0aXZleF9zaGltLmd5cCcsCisgICAgJ3dlYmtp
dC9hY3RpdmV4X3NoaW1fZGxsL2FjdGl2ZXhfc2hpbV9kbGwuZ3lwJywKKyAgICAnd2Via2l0L2J1
aWxkL2FjdGlvbl9jc3Nwcm9wZXJ0eW5hbWVzLnB5JywKKyAgICAnd2Via2l0L2J1aWxkL2FjdGlv
bl9jc3N2YWx1ZWtleXdvcmRzLnB5JywKKyAgICAnd2Via2l0L2J1aWxkL2FjdGlvbl9qc2NvbmZp
Zy5weScsCisgICAgJ3dlYmtpdC9idWlsZC9hY3Rpb25fbWFrZW5hbWVzLnB5JywKKyAgICAnd2Vi
a2l0L2J1aWxkL2FjdGlvbl9tYWtldG9rZW5pemVyLnB5JywKKyAgICAnd2Via2l0L2J1aWxkL2Fj
dGlvbl91c2VyYWdlbnRzdHlsZXNoZWV0cy5weScsCisgICAgJ3dlYmtpdC9idWlsZC9ydWxlX2Jp
bmRpbmcucHknLAorICAgICd3ZWJraXQvYnVpbGQvcnVsZV9iaXNvbi5weScsCisgICAgJ3dlYmtp
dC9idWlsZC9ydWxlX2dwZXJmLnB5JywKKyAgICAnd2Via2l0L3Rvb2xzL3Rlc3Rfc2hlbGwvdGVz
dF9zaGVsbC5neXAnLAorICAgICd3ZWJraXQvd2Via2l0Lmd5cCcsCitdCisKKworZGVmIE1haW4o
YXJndik6CisgIGlmIGxlbihhcmd2KSAhPSAzIG9yIGFyZ3ZbMV0gbm90IGluIFsncHVzaCcsICdw
dWxsJ106CisgICAgcHJpbnQgJ1VzYWdlOiAlcyBwdXNoL3B1bGwgUEFUSF9UT19DSFJPTUUnICUg
YXJndlswXQorICAgIHJldHVybiAxCisKKyAgcGF0aF90b19jaHJvbWUgPSBhcmd2WzJdCisKKyAg
Zm9yIGcgaW4gZ3lwczoKKyAgICBjaHJvbWVfZmlsZSA9IG9zLnBhdGguam9pbihwYXRoX3RvX2No
cm9tZSwgZykKKyAgICBsb2NhbF9maWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShh
cmd2WzBdKSwgb3MucGF0aC5zcGxpdChnKVsxXSkKKyAgICBpZiBhcmd2WzFdID09ICdwdXNoJzoK
KyAgICAgIHByaW50ICdDb3B5aW5nICVzIHRvICVzJyAlIChsb2NhbF9maWxlLCBjaHJvbWVfZmls
ZSkKKyAgICAgIHNodXRpbC5jb3B5ZmlsZShsb2NhbF9maWxlLCBjaHJvbWVfZmlsZSkKKyAgICBl
bGlmIGFyZ3ZbMV0gPT0gJ3B1bGwnOgorICAgICAgcHJpbnQgJ0NvcHlpbmcgJXMgdG8gJXMnICUg
KGNocm9tZV9maWxlLCBsb2NhbF9maWxlKQorICAgICAgc2h1dGlsLmNvcHlmaWxlKGNocm9tZV9m
aWxlLCBsb2NhbF9maWxlKQorICAgIGVsc2U6CisgICAgICBhc3NlcnQgRmFsc2UKKworICByZXR1
cm4gMAorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIHN5cy5leGl0KE1haW4oc3lz
LmFyZ3YpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3NhbXBsZXMvc2FtcGxl
cy5iYXQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvc2FtcGxlcy9zYW1wbGVzLmJhdApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NzhkOWM5MGYwNjA2NjQ4NGZmYWIyYzU0YzM1YThlZWU5YTI4NDUyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3NhbXBsZXMvc2FtcGxlcy5iYXQKQEAgLTAs
MCArMSw1IEBACitAcmVtIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLg0KK0ByZW0gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KK0ByZW0gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4NCisNCitAcHl0aG9uICV+ZHAwL3NhbXBsZXMgJSoNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvc2V0dXAucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvc2V0dXAu
cHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWQyYjQxYTNjMzAwYTM2ZDg3NmJkZGIyZTUzZTFkMmExZTE4ZTlkYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC9zZXR1cC5weQpAQCAtMCww
ICsxLDI2IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCitmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBzZXR1
cAorZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5pbnN0YWxsIGltcG9ydCBpbnN0YWxsCitmcm9tIGRp
c3R1dGlscy5jb21tYW5kLmluc3RhbGxfbGliIGltcG9ydCBpbnN0YWxsX2xpYgorZnJvbSBkaXN0
dXRpbHMuY29tbWFuZC5pbnN0YWxsX3NjcmlwdHMgaW1wb3J0IGluc3RhbGxfc2NyaXB0cworCitz
ZXR1cCgKKyAgbmFtZT0nZ3lwJywKKyAgdmVyc2lvbj0nMC4xJywKKyAgZGVzY3JpcHRpb249J0dl
bmVyYXRlIFlvdXIgUHJvamVjdHMnLAorICBhdXRob3I9J0Nocm9taXVtIEF1dGhvcnMnLAorICBh
dXRob3JfZW1haWw9J2Nocm9taXVtLWRldkBnb29nbGVncm91cHMuY29tJywKKyAgdXJsPSdodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvZ3lwJywKKyAgcGFja2FnZV9kaXIgPSB7Jyc6ICdweWxpYid9
LAorICBwYWNrYWdlcz1bJ2d5cCcsICdneXAuZ2VuZXJhdG9yJ10sCisKKyAgc2NyaXB0cyA9IFsn
Z3lwJ10sCisgIGNtZGNsYXNzID0geydpbnN0YWxsJzogaW5zdGFsbCwKKyAgICAgICAgICAgICAg
J2luc3RhbGxfbGliJzogaW5zdGFsbF9saWIsCisgICAgICAgICAgICAgICdpbnN0YWxsX3Njcmlw
dHMnOiBpbnN0YWxsX3NjcmlwdHN9LAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvYWN0aW9ucy1iYXJlL2d5cHRlc3QtYmFyZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2FjdGlvbnMtYmFyZS9neXB0ZXN0LWJhcmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjBjMTA5
MzhkMWRmY2MxZTJlOGQ3MzJiOTFlYmE3MTM1ZGMyMjAyMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMtYmFyZS9neXB0ZXN0LWJhcmUucHkKQEAg
LTAsMCArMSwyMyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyBhY3Rpb25zIHdoaWNo
IGFyZSBub3QgZGVwZW5kZWQgb24gYnkgb3RoZXIgdGFyZ2V0cyBnZXQgZXhlY3V0ZWQuCisiIiIK
KworaW1wb3J0IFRlc3RHeXAKKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5cCgpCisKK3Rlc3QucnVu
X2d5cCgnYmFyZS5neXAnLCBjaGRpcj0nc3JjJykKK3Rlc3QucmVsb2NhdGUoJ3NyYycsICdyZWxv
Y2F0ZS9zcmMnKQordGVzdC5idWlsZCgnYmFyZS5neXAnLCBjaGRpcj0ncmVsb2NhdGUvc3JjJykK
KworZmlsZV9jb250ZW50ID0gJ0hlbGxvIGZyb20gYmFyZS5weVxuJworCit0ZXN0LmJ1aWx0X2Zp
bGVfbXVzdF9tYXRjaCgnb3V0LnR4dCcsIGZpbGVfY29udGVudCwgY2hkaXI9J3JlbG9jYXRlL3Ny
YycpCisKK3Rlc3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2FjdGlvbnMtYmFyZS9zcmMvYmFyZS5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9hY3Rpb25zLWJhcmUvc3JjL2JhcmUuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkMjhmMDk5ZDQ0Nzg5
YTMyNTQ2MDBjYzk2MTgyM2Q2MjliMjc0NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zLWJhcmUvc3JjL2JhcmUuZ3lwCkBAIC0wLDAgKzEsMjUg
QEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAn
dGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnYmFyZScsCisgICAgICAn
dHlwZSc6ICdub25lJywKKyAgICAgICdhY3Rpb25zJzogWworICAgICAgICB7CisgICAgICAgICAg
J2FjdGlvbl9uYW1lJzogJ2FjdGlvbjEnLAorICAgICAgICAgICdpbnB1dHMnOiBbCisgICAgICAg
ICAgICAnYmFyZS5weScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAg
ICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9vdXQudHh0JywKKyAgICAgICAgICBdLAorICAgICAg
ICAgICdhY3Rpb24nOiBbJ3B5dGhvbicsICdiYXJlLnB5JywgJzwoUFJPRFVDVF9ESVIpL291dC50
eHQnXSwKKyAgICAgICAgICAnbXN2c19jeWd3aW5fc2hlbGwnOiAwLAorICAgICAgICB9LAorICAg
ICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvYWN0aW9ucy1iYXJlL3NyYy9iYXJlLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvYWN0aW9ucy1iYXJlL3NyYy9iYXJlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3MDQ1MGVhMzM4NGQ2MmFh
YzAxMWU3NjA4NDI3NGRkOTdmMGVkMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9hY3Rpb25zLWJhcmUvc3JjL2JhcmUucHkKQEAgLTAsMCArMSwxMSBAQAor
IyEvdXNyL2Jpbi9weXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorCitpbXBvcnQgc3lzCisKK2YgPSBvcGVuKHN5cy5hcmd2WzFdLCAnd2InKQorZi53
cml0ZSgnSGVsbG8gZnJvbSBiYXJlLnB5XG4nKQorZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zLW11bHRpcGxlL2d5cHRlc3QtYWxsLnB5IGIv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy1tdWx0aXBsZS9neXB0ZXN0LWFsbC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43Yjk0ZmVmNDA4ODhmYzAzMWZkZTYyYzk0ODVjNDYzYWRkMDU2MzZkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy1tdWx0
aXBsZS9neXB0ZXN0LWFsbC5weQpAQCAtMCwwICsxLDQyIEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKworIyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIK
K1ZlcmlmaWVzIHR3byBhY3Rpb25zIGNhbiBiZSBhdHRhY2hlZCB0byB0aGUgc2FtZSBpbnB1dCBm
aWxlcy4KKyIiIgorCitpbXBvcnQgVGVzdEd5cAorCit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lwKCkK
KwordGVzdC5ydW5fZ3lwKCdhY3Rpb25zLmd5cCcsIGNoZGlyPSdzcmMnKQorCit0ZXN0LnJlbG9j
YXRlKCdzcmMnLCAncmVsb2NhdGUvc3JjJykKKworIyBUZXN0IHRoYXQgdHdvIGFjdGlvbnMgY2Fu
IGJlIGF0dGFjaGVkIHRvIHRoZSBzYW1lIGlucHV0cy4KK3Rlc3QuYnVpbGQoJ2FjdGlvbnMuZ3lw
JywgdGVzdC5BTEwsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQordGVzdC5tdXN0X2NvbnRhaW4oJ3Jl
bG9jYXRlL3NyYy9vdXRwdXQxLnR4dCcsICdoZWxsbyB0aGVyZScpCit0ZXN0Lm11c3RfY29udGFp
bigncmVsb2NhdGUvc3JjL291dHB1dDIudHh0JywgJ2hlbGxvIHRoZXJlJykKK3Rlc3QubXVzdF9j
b250YWluKCdyZWxvY2F0ZS9zcmMvb3V0cHV0My50eHQnLCAnaGVsbG8gdGhlcmUnKQordGVzdC5t
dXN0X2NvbnRhaW4oJ3JlbG9jYXRlL3NyYy9vdXRwdXQ0LnR4dCcsICdoZWxsbyB0aGVyZScpCisK
KyMgVGVzdCB0aGF0IHByb2Nlc3Nfb3V0cHV0c19hc19zb3VyY2VzIHdvcmtzIGluIGNvbmp1Y3Rp
b24gd2l0aCBtZXJnZWQKKyMgYWN0aW9ucy4KK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoCisg
ICAgJ211bHRpcGxlX2FjdGlvbl9zb3VyY2VfZmlsdGVyJywKKyAgICBjaGRpcj0ncmVsb2NhdGUv
c3JjJywKKyAgICBzdGRvdXQ9KAorICAgICAgICAne1xuJworICAgICAgICAnYmFyXG4nCisgICAg
ICAgICdjYXJcbicKKyAgICAgICAgJ2RhclxuJworICAgICAgICAnZWFyXG4nCisgICAgICAgICd9
XG4nCisgICAgKSwKKykKKworCit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zLW11bHRpcGxlL3NyYy9hY3Rpb25zLmd5cCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMtbXVsdGlwbGUvc3JjL2FjdGlvbnMuZ3lw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIzOGRmNDVmZGEzYmRkODU5Nzc2NTdhNmRhYmJjZjVmN2FhNzQ2ZTUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zLW11bHRp
cGxlL3NyYy9hY3Rpb25zLmd5cApAQCAtMCwwICsxLDE2NSBAQAorIyBDb3B5cmlnaHQgKGMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICd2YXJpYWJsZXMnOiB7CisgICAgIyBI
YXZlIGEgbG9uZyBzdHJpbmcgc28gdGhhdCBhY3Rpb25zIHdpbGwgZXhjZWVkIHhwIDUxMiBjaGFy
YWN0ZXIKKyAgICAjIGNvbW1hbmQgbGltaXQgb24geHAuCisgICAgJ2xvbmdfc3RyaW5nJzoKKyAg
ICAgICAgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OScKKyAgICAgICAgJ2Fi
Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OScKKyAgICAgICAgJ2FiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OScKKyAgICAgICAgJ2FiY2RlZmdoaWprbG1ub3BxcnN0
dXZ3eHl6MDEyMzQ1Njc4OScKKyAgICAgICAgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEy
MzQ1Njc4OScKKyAgICAgICAgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OScK
KyAgICAgICAgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OScKKyAgICAgICAg
J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OScKKyAgICAgICAgJ2FiY2RlZmdo
aWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OScKKyAgICAgICAgJ2FiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6MDEyMzQ1Njc4OScKKyAgICAgICAgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6
MDEyMzQ1Njc4OScKKyAgfSwKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9u
YW1lJzogJ211bHRpcGxlX2FjdGlvbl90YXJnZXQnLAorICAgICAgJ3R5cGUnOiAnbm9uZScsCisg
ICAgICAnYWN0aW9ucyc6IFsKKyAgICAgICAgeworICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdh
Y3Rpb24xJywKKyAgICAgICAgICAnaW5wdXRzJzogWworICAgICAgICAgICAgJ2NvcHkucHknLAor
ICAgICAgICAgICAgJ2lucHV0LnR4dCcsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0
cyc6IFsKKyAgICAgICAgICAgICdvdXRwdXQxLnR4dCcsCisgICAgICAgICAgXSwKKyAgICAgICAg
ICAnYWN0aW9uJzogWworICAgICAgICAgICAgJ3B5dGhvbicsICc8QChfaW5wdXRzKScsICc8KF9v
dXRwdXRzKScsICc8KGxvbmdfc3RyaW5nKScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAjIEFs
bG93cyB0aGUgdGVzdCB0byBydW4gd2l0aG91dCBoZXJtZXRpYyBjeWd3aW4gb24gd2luZG93cy4K
KyAgICAgICAgICAnbXN2c19jeWd3aW5fc2hlbGwnOiAwLAorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ2FjdGlvbjInLAorICAgICAgICAgICdpbnB1dHMn
OiBbCisgICAgICAgICAgICAnY29weS5weScsCisgICAgICAgICAgICAnaW5wdXQudHh0JywKKyAg
ICAgICAgICBdLAorICAgICAgICAgICdvdXRwdXRzJzogWworICAgICAgICAgICAgJ291dHB1dDIu
dHh0JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdhY3Rpb24nOiBbCisgICAgICAgICAgICAn
cHl0aG9uJywgJzxAKF9pbnB1dHMpJywgJzwoX291dHB1dHMpJywgJzwobG9uZ19zdHJpbmcpJywK
KyAgICAgICAgICBdLAorICAgICAgICAgICMgQWxsb3dzIHRoZSB0ZXN0IHRvIHJ1biB3aXRob3V0
IGhlcm1ldGljIGN5Z3dpbiBvbiB3aW5kb3dzLgorICAgICAgICAgICdtc3ZzX2N5Z3dpbl9zaGVs
bCc6IDAsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAnYWN0aW9uX25hbWUnOiAn
YWN0aW9uMycsCisgICAgICAgICAgJ2lucHV0cyc6IFsKKyAgICAgICAgICAgICdjb3B5LnB5JywK
KyAgICAgICAgICAgICdpbnB1dC50eHQnLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ291dHB1
dHMnOiBbCisgICAgICAgICAgICAnb3V0cHV0My50eHQnLAorICAgICAgICAgIF0sCisgICAgICAg
ICAgJ2FjdGlvbic6IFsKKyAgICAgICAgICAgICdweXRob24nLCAnPEAoX2lucHV0cyknLCAnPChf
b3V0cHV0cyknLCAnPChsb25nX3N0cmluZyknLAorICAgICAgICAgIF0sCisgICAgICAgICAgIyBB
bGxvd3MgdGhlIHRlc3QgdG8gcnVuIHdpdGhvdXQgaGVybWV0aWMgY3lnd2luIG9uIHdpbmRvd3Mu
CisgICAgICAgICAgJ21zdnNfY3lnd2luX3NoZWxsJzogMCwKKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdhY3Rpb240JywKKyAgICAgICAgICAnaW5wdXRz
JzogWworICAgICAgICAgICAgJ2NvcHkucHknLAorICAgICAgICAgICAgJ2lucHV0LnR4dCcsCisg
ICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAgICAgICAgICdvdXRwdXQ0
LnR4dCcsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnYWN0aW9uJzogWworICAgICAgICAgICAg
J3B5dGhvbicsICc8QChfaW5wdXRzKScsICc8KF9vdXRwdXRzKScsICc8KGxvbmdfc3RyaW5nKScs
CisgICAgICAgICAgXSwKKyAgICAgICAgICAjIEFsbG93cyB0aGUgdGVzdCB0byBydW4gd2l0aG91
dCBoZXJtZXRpYyBjeWd3aW4gb24gd2luZG93cy4KKyAgICAgICAgICAnbXN2c19jeWd3aW5fc2hl
bGwnOiAwLAorICAgICAgICB9LAorICAgICAgXSwKKyAgICB9LAorICAgIHsKKyAgICAgICd0YXJn
ZXRfbmFtZSc6ICdtdWx0aXBsZV9hY3Rpb25fc291cmNlX2ZpbHRlcicsCisgICAgICAndHlwZSc6
ICdleGVjdXRhYmxlJywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAnbWFpbi5jJywKKyAg
ICAgICAgIyBUT0RPKGJyYWRuZWxzb24pOiBhZGQgZm9vLmMgaGVyZSBvbmNlIHRoaXMgaXNzdWUg
aXMgZml4ZWQ6CisgICAgICAgICMgICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9neXAvaXNz
dWVzL2RldGFpbD9pZD0xNzUKKyAgICAgIF0sCisgICAgICAnYWN0aW9ucyc6IFsKKyAgICAgICAg
eworICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdhY3Rpb24xJywKKyAgICAgICAgICAnaW5wdXRz
JzogWworICAgICAgICAgICAgJ2Zvby5jJywKKyAgICAgICAgICAgICdmaWx0ZXIucHknLAorICAg
ICAgICAgIF0sCisgICAgICAgICAgJ291dHB1dHMnOiBbCisgICAgICAgICAgICAnb3V0cHV0MS5j
JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdwcm9jZXNzX291dHB1dHNfYXNfc291cmNlcyc6
IDEsCisgICAgICAgICAgJ2FjdGlvbic6IFsKKyAgICAgICAgICAgICdweXRob24nLCAnZmlsdGVy
LnB5JywgJ2ZvbycsICdiYXInLCAnZm9vLmMnLCAnPChfb3V0cHV0cyknLAorICAgICAgICAgIF0s
CisgICAgICAgICAgIyBBbGxvd3MgdGhlIHRlc3QgdG8gcnVuIHdpdGhvdXQgaGVybWV0aWMgY3ln
d2luIG9uIHdpbmRvd3MuCisgICAgICAgICAgJ21zdnNfY3lnd2luX3NoZWxsJzogMCwKKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdhY3Rpb24yJywKKyAg
ICAgICAgICAnaW5wdXRzJzogWworICAgICAgICAgICAgJ2Zvby5jJywKKyAgICAgICAgICAgICdm
aWx0ZXIucHknLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ291dHB1dHMnOiBbCisgICAgICAg
ICAgICAnb3V0cHV0Mi5jJywKKyAgICAgICAgICBdLAorICAgICAgICAgICdwcm9jZXNzX291dHB1
dHNfYXNfc291cmNlcyc6IDEsCisgICAgICAgICAgJ2FjdGlvbic6IFsKKyAgICAgICAgICAgICdw
eXRob24nLCAnZmlsdGVyLnB5JywgJ2ZvbycsICdjYXInLCAnZm9vLmMnLCAnPChfb3V0cHV0cykn
LAorICAgICAgICAgIF0sCisgICAgICAgICAgIyBBbGxvd3MgdGhlIHRlc3QgdG8gcnVuIHdpdGhv
dXQgaGVybWV0aWMgY3lnd2luIG9uIHdpbmRvd3MuCisgICAgICAgICAgJ21zdnNfY3lnd2luX3No
ZWxsJzogMCwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICdhY3Rpb25fbmFtZSc6
ICdhY3Rpb24zJywKKyAgICAgICAgICAnaW5wdXRzJzogWworICAgICAgICAgICAgJ2Zvby5jJywK
KyAgICAgICAgICAgICdmaWx0ZXIucHknLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ291dHB1
dHMnOiBbCisgICAgICAgICAgICAnb3V0cHV0My5jJywKKyAgICAgICAgICBdLAorICAgICAgICAg
ICdwcm9jZXNzX291dHB1dHNfYXNfc291cmNlcyc6IDEsCisgICAgICAgICAgJ2FjdGlvbic6IFsK
KyAgICAgICAgICAgICdweXRob24nLCAnZmlsdGVyLnB5JywgJ2ZvbycsICdkYXInLCAnZm9vLmMn
LCAnPChfb3V0cHV0cyknLAorICAgICAgICAgIF0sCisgICAgICAgICAgIyBBbGxvd3MgdGhlIHRl
c3QgdG8gcnVuIHdpdGhvdXQgaGVybWV0aWMgY3lnd2luIG9uIHdpbmRvd3MuCisgICAgICAgICAg
J21zdnNfY3lnd2luX3NoZWxsJzogMCwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg
ICdhY3Rpb25fbmFtZSc6ICdhY3Rpb240JywKKyAgICAgICAgICAnaW5wdXRzJzogWworICAgICAg
ICAgICAgJ2Zvby5jJywKKyAgICAgICAgICAgICdmaWx0ZXIucHknLAorICAgICAgICAgIF0sCisg
ICAgICAgICAgJ291dHB1dHMnOiBbCisgICAgICAgICAgICAnb3V0cHV0NC5jJywKKyAgICAgICAg
ICBdLAorICAgICAgICAgICdwcm9jZXNzX291dHB1dHNfYXNfc291cmNlcyc6IDEsCisgICAgICAg
ICAgJ2FjdGlvbic6IFsKKyAgICAgICAgICAgICdweXRob24nLCAnZmlsdGVyLnB5JywgJ2Zvbycs
ICdlYXInLCAnZm9vLmMnLCAnPChfb3V0cHV0cyknLAorICAgICAgICAgIF0sCisgICAgICAgICAg
IyBBbGxvd3MgdGhlIHRlc3QgdG8gcnVuIHdpdGhvdXQgaGVybWV0aWMgY3lnd2luIG9uIHdpbmRv
d3MuCisgICAgICAgICAgJ21zdnNfY3lnd2luX3NoZWxsJzogMCwKKyAgICAgICAgfSwKKyAgICAg
IF0sCisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2FjdGlvbnMtbXVsdGlwbGUvc3JjL2NvcHkucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9hY3Rpb25zLW11bHRpcGxlL3NyYy9jb3B5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiYTI5MTEwZDg5
OWI2YjZmYTg1YTZiNGEzNzE1NWVhNmQ4ZmIzNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zLW11bHRpcGxlL3NyYy9jb3B5LnB5CkBAIC0wLDAg
KzEsOSBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKworaW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworCitzaHV0aWwuY29w
eWZpbGUoc3lzLmFyZ3ZbMV0sIHN5cy5hcmd2WzJdKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy1tdWx0aXBsZS9zcmMvZmlsdGVyLnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy1tdWx0aXBsZS9zcmMvZmlsdGVyLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQwYTBhOTUwYjU5YmUzNjgyMWNmNmRhMWY3YWQ2MThlNTJlNzE4MjgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zLW11bHRpcGxlL3NyYy9m
aWx0ZXIucHkKQEAgLTAsMCArMSwxMiBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0
IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworCitpbXBvcnQgc3lzCisKK2RhdGEg
PSBvcGVuKHN5cy5hcmd2WzNdLCAncicpLnJlYWQoKQorZmggPSBvcGVuKHN5cy5hcmd2WzRdLCAn
dycpCitmaC53cml0ZShkYXRhLnJlcGxhY2Uoc3lzLmFyZ3ZbMV0sIHN5cy5hcmd2WzJdKSkKK2Zo
LmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMt
bXVsdGlwbGUvc3JjL2Zvby5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy1t
dWx0aXBsZS9zcmMvZm9vLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNjNGVmN2YyNmZjNDc5Mzc2ZjI1MTE2NDhl
ZDViYzFjYTBkZDU3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2FjdGlvbnMtbXVsdGlwbGUvc3JjL2Zvby5jCkBAIC0wLDAgKzEsMTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgKi8KKworI2luY2x1
ZGUgPHN0ZGlvLmg+CisKK3ZvaWQgZm9vKHZvaWQpIHsKKyAgcHJpbnRmKCJmb29cbiIpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy1tdWx0aXBsZS9z
cmMvaW5wdXQudHh0IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy1tdWx0aXBs
ZS9zcmMvaW5wdXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3YzdkYTNjNjRlODZjMzI3MGYyNjM5YTEzNzll
NjdlMTQ4OTFiNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9hY3Rpb25zLW11bHRpcGxlL3NyYy9pbnB1dC50eHQKQEAgLTAsMCArMSBAQAoraGVsbG8gdGhl
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMtbXVsdGlw
bGUvc3JjL21haW4uYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMtbXVsdGlw
bGUvc3JjL21haW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTQyMGI5MDM0MzY5ZjYwYTgzMzcyZjc1ZTIxNTg5
YzFhYThmNWE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
YWN0aW9ucy1tdWx0aXBsZS9zcmMvbWFpbi5jCkBAIC0wLDAgKzEsMjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgKi8KKworI2luY2x1ZGUg
PHN0ZGlvLmg+CisKK3ZvaWQgYmFyKHZvaWQpOwordm9pZCBjYXIodm9pZCk7Cit2b2lkIGRhcih2
b2lkKTsKK3ZvaWQgZWFyKHZvaWQpOworCitpbnQgbWFpbigpIHsKKyAgcHJpbnRmKCJ7XG4iKTsK
KyAgYmFyKCk7CisgIGNhcigpOworICBkYXIoKTsKKyAgZWFyKCk7CisgIHByaW50ZigifVxuIik7
CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
YWN0aW9ucy1zdWJkaXIvZ3lwdGVzdC1hY3Rpb24ucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9hY3Rpb25zLXN1YmRpci9neXB0ZXN0LWFjdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWNmZWYx
ODkzZDU2ZjE3ZGJhYTM1YmJlNTlkZGMwZGQxZGI0NjhmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy1zdWJkaXIvZ3lwdGVzdC1hY3Rpb24ucHkK
QEAgLTAsMCArMSwyNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChj
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitUZXN0IGFjdGlvbnMgdGhhdCBv
dXRwdXQgdG8gUFJPRFVDVF9ESVIuCisiIiIKKworaW1wb3J0IFRlc3RHeXAKKworIyBUT0RPIGZp
eCB0aGlzIGZvciB4Y29kZTogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2d5cC9pc3N1ZXMvZGV0
YWlsP2lkPTg4Cit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lwKGZvcm1hdHM9WycheGNvZGUnXSkKKwor
dGVzdC5ydW5fZ3lwKCdub25lLmd5cCcsIGNoZGlyPSdzcmMnKQorCit0ZXN0LmJ1aWxkKCdub25l
Lmd5cCcsIHRlc3QuQUxMLCBjaGRpcj0nc3JjJykKKworZmlsZV9jb250ZW50ID0gJ0hlbGxvIGZy
b20gbWFrZS1maWxlLnB5XG4nCitzdWJkaXJfZmlsZV9jb250ZW50ID0gJ0hlbGxvIGZyb20gbWFr
ZS1zdWJkaXItZmlsZS5weVxuJworCit0ZXN0LmJ1aWx0X2ZpbGVfbXVzdF9tYXRjaCgnZmlsZS5v
dXQnLCBmaWxlX2NvbnRlbnQsIGNoZGlyPSdzcmMnKQordGVzdC5idWlsdF9maWxlX211c3RfbWF0
Y2goJ3N1YmRpcl9maWxlLm91dCcsIHN1YmRpcl9maWxlX2NvbnRlbnQsIGNoZGlyPSdzcmMnKQor
Cit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9hY3Rpb25zLXN1YmRpci9zcmMvbWFrZS1maWxlLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvYWN0aW9ucy1zdWJkaXIvc3JjL21ha2UtZmlsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NGU1NTgx
MWQyMzNiMDY2MDkwYzNkNGU0ZTdmODYyZjNiOGJhMTI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy1zdWJkaXIvc3JjL21ha2UtZmlsZS5weQpA
QCAtMCwwICsxLDExIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
IyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCitpbXBvcnQgc3lzCisKK2NvbnRlbnRzID0g
J0hlbGxvIGZyb20gbWFrZS1maWxlLnB5XG4nCisKK29wZW4oc3lzLmFyZ3ZbMV0sICd3YicpLndy
aXRlKGNvbnRlbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0
aW9ucy1zdWJkaXIvc3JjL25vbmUuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0
aW9ucy1zdWJkaXIvc3JjL25vbmUuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzZjhkMjVhNTNlNDRhZWY5YjA0
Mzk5NDVhODliODk4NjM4ZmI4MDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9hY3Rpb25zLXN1YmRpci9zcmMvbm9uZS5neXAKQEAgLTAsMCArMSwzMSBAQAor
IyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICd0YXJn
ZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdmaWxlJywKKyAgICAgICd0eXBl
JzogJ25vbmUnLAorICAgICAgJ21zdnNfY3lnd2luX3NoZWxsJzogMCwKKyAgICAgICdhY3Rpb25z
JzogWworICAgICAgICB7CisgICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ21ha2UtZmlsZScsCisg
ICAgICAgICAgJ2lucHV0cyc6IFsKKyAgICAgICAgICAgICdtYWtlLWZpbGUucHknLAorICAgICAg
ICAgIF0sCisgICAgICAgICAgJ291dHB1dHMnOiBbCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJ
UikvZmlsZS5vdXQnLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ2FjdGlvbic6IFsKKyAgICAg
ICAgICAgICdweXRob24nLCAnPChfaW5wdXRzKScsICc8QChfb3V0cHV0cyknLAorICAgICAgICAg
IF0sCisgICAgICAgICAgJ3Byb2Nlc3Nfb3V0cHV0c19hc19zb3VyY2VzJzogMSwKKyAgICAgICAg
fQorICAgICAgXSwKKyAgICAgICdkZXBlbmRlbmNpZXMnOiBbCisgICAgICAgICdzdWJkaXIvc3Vi
ZGlyLmd5cDpzdWJkaXJfZmlsZScsCisgICAgICBdLAorICAgIH0sCisgIF0sCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zLXN1YmRpci9zcmMvc3ViZGly
L21ha2Utc3ViZGlyLWZpbGUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25z
LXN1YmRpci9zcmMvc3ViZGlyL21ha2Utc3ViZGlyLWZpbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODBjZTE5
YWUwZWEwYjcwOGIzZDNjNjVkOTdkMDE3MDlmYmU3NzYzOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMtc3ViZGlyL3NyYy9zdWJkaXIvbWFrZS1z
dWJkaXItZmlsZS5weQpAQCAtMCwwICsxLDExIEBACisjIS91c3IvYmluL2VudiBweXRob24KKwor
IyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCitpbXBvcnQgc3lz
CisKK2NvbnRlbnRzID0gJ0hlbGxvIGZyb20gbWFrZS1zdWJkaXItZmlsZS5weVxuJworCitvcGVu
KHN5cy5hcmd2WzFdLCAnd2InKS53cml0ZShjb250ZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMtc3ViZGlyL3NyYy9zdWJkaXIvc3ViZGlyLmd5cCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMtc3ViZGlyL3NyYy9zdWJkaXIvc3Vi
ZGlyLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMzE1ZDRlYjgzZmVmYzNmZGFkZGQzZmNkNjViNTY3M2YxOGU5
Y2ZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9u
cy1zdWJkaXIvc3JjL3N1YmRpci9zdWJkaXIuZ3lwCkBAIC0wLDAgKzEsMjggQEAKKyMgQ29weXJp
Z2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsK
KyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnc3ViZGlyX2ZpbGUnLAorICAgICAgJ3R5cGUn
OiAnbm9uZScsCisgICAgICAnbXN2c19jeWd3aW5fc2hlbGwnOiAwLAorICAgICAgJ2FjdGlvbnMn
OiBbCisgICAgICAgIHsKKyAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnbWFrZS1zdWJkaXItZmls
ZScsCisgICAgICAgICAgJ2lucHV0cyc6IFsKKyAgICAgICAgICAgICdtYWtlLXN1YmRpci1maWxl
LnB5JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdvdXRwdXRzJzogWworICAgICAgICAgICAg
JzwoUFJPRFVDVF9ESVIpL3N1YmRpcl9maWxlLm91dCcsCisgICAgICAgICAgXSwKKyAgICAgICAg
ICAnYWN0aW9uJzogWworICAgICAgICAgICAgJ3B5dGhvbicsICc8KF9pbnB1dHMpJywgJzxAKF9v
dXRwdXRzKScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAncHJvY2Vzc19vdXRwdXRzX2FzX3Nv
dXJjZXMnOiAxLAorICAgICAgICB9CisgICAgICBdLAorICAgIH0sCisgIF0sCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zL2d5cHRlc3QtYWxsLnB5IGIv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy9neXB0ZXN0LWFsbC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZGIzOGQ1MmNjOWRiNGJkMTVmMGU1OWJmNDUxYTg4Njg5NmNiNGJkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy9neXB0ZXN0LWFsbC5w
eQpAQCAtMCwwICsxLDk0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQg
KGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmaWVzIHNpbXBsZSBh
Y3Rpb25zIHdoZW4gdXNpbmcgYW4gZXhwbGljaXQgYnVpbGQgdGFyZ2V0IG9mICdhbGwnLgorIiIi
CisKK2ltcG9ydCBnbG9iCitpbXBvcnQgb3MKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0
R3lwLlRlc3RHeXAoKQorCit0ZXN0LnJ1bl9neXAoJ2FjdGlvbnMuZ3lwJywgY2hkaXI9J3NyYycp
CisKK3Rlc3QucmVsb2NhdGUoJ3NyYycsICdyZWxvY2F0ZS9zcmMnKQorCisjIFRlc3QgdGhhdCBh
biAiYWx3YXlzIHJ1biIgYWN0aW9uIGluY3JlYXNlcyBhIGNvdW50ZXIgb24gbXVsdGlwbGUgaW52
b2NhdGlvbnMsCisjIGFuZCB0aGF0IGEgZGVwZW5kZW50IGFjdGlvbiB1cGRhdGVzIGluIHN0ZXAu
Cit0ZXN0LmJ1aWxkKCdhY3Rpb25zLmd5cCcsIHRlc3QuQUxMLCBjaGRpcj0ncmVsb2NhdGUvc3Jj
JykKK3Rlc3QubXVzdF9tYXRjaCgncmVsb2NhdGUvc3JjL3N1YmRpcjEvYWN0aW9ucy1vdXQvYWN0
aW9uLWNvdW50ZXIudHh0JywgJzEnKQordGVzdC5tdXN0X21hdGNoKCdyZWxvY2F0ZS9zcmMvc3Vi
ZGlyMS9hY3Rpb25zLW91dC9hY3Rpb24tY291bnRlcl8yLnR4dCcsICcxJykKK3Rlc3QuYnVpbGQo
J2FjdGlvbnMuZ3lwJywgdGVzdC5BTEwsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQordGVzdC5tdXN0
X21hdGNoKCdyZWxvY2F0ZS9zcmMvc3ViZGlyMS9hY3Rpb25zLW91dC9hY3Rpb24tY291bnRlci50
eHQnLCAnMicpCit0ZXN0Lm11c3RfbWF0Y2goJ3JlbG9jYXRlL3NyYy9zdWJkaXIxL2FjdGlvbnMt
b3V0L2FjdGlvbi1jb3VudGVyXzIudHh0JywgJzInKQorCisjIFRoZSAiYWx3YXlzIHJ1biIgYWN0
aW9uIG9ubHkgY291bnRzIHRvIDIsIGJ1dCB0aGUgZGVwZW5kZW50IHRhcmdldCB3aWxsIGNvdW50
CisjIGZvcmV2ZXIgaWYgaXQncyBhbGxvd2VkIHRvIHJ1bi4gVGhpcyB2ZXJpZmllcyB0aGF0IHRo
ZSBkZXBlbmRlbnQgdGFyZ2V0IG9ubHkKKyMgcnVucyB3aGVuIHRoZSAiYWx3YXlzIHJ1biIgYWN0
aW9uIGdlbmVyYXRlcyBuZXcgb3V0cHV0LCBub3QganVzdCBiZWNhdXNlIHRoZQorIyAiYWx3YXlz
IHJ1biIgcmFuLgordGVzdC5idWlsZCgnYWN0aW9ucy5neXAnLCB0ZXN0LkFMTCwgY2hkaXI9J3Jl
bG9jYXRlL3NyYycpCit0ZXN0Lm11c3RfbWF0Y2goJ3JlbG9jYXRlL3NyYy9zdWJkaXIxL2FjdGlv
bnMtb3V0L2FjdGlvbi1jb3VudGVyLnR4dCcsICcyJykKK3Rlc3QubXVzdF9tYXRjaCgncmVsb2Nh
dGUvc3JjL3N1YmRpcjEvYWN0aW9ucy1vdXQvYWN0aW9uLWNvdW50ZXJfMi50eHQnLCAnMicpCisK
K2V4cGVjdCA9ICIiIlwKK0hlbGxvIGZyb20gcHJvZ3JhbS5jCitIZWxsbyBmcm9tIG1ha2UtcHJv
ZzEucHkKK0hlbGxvIGZyb20gbWFrZS1wcm9nMi5weQorIiIiCisKK2lmIHRlc3QuZm9ybWF0ID09
ICd4Y29kZSc6CisgIGNoZGlyID0gJ3JlbG9jYXRlL3NyYy9zdWJkaXIxJworZWxzZToKKyAgY2hk
aXIgPSAncmVsb2NhdGUvc3JjJwordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgncHJvZ3JhbScs
IGNoZGlyPWNoZGlyLCBzdGRvdXQ9ZXhwZWN0KQorCisKK3Rlc3QubXVzdF9tYXRjaCgncmVsb2Nh
dGUvc3JjL3N1YmRpcjIvZmlsZS5vdXQnLCAiSGVsbG8gZnJvbSBtYWtlLWZpbGUucHlcbiIpCisK
KworZXhwZWN0ID0gIkhlbGxvIGZyb20gZ2VuZXJhdGVfbWFpbi5weVxuIgorCitpZiB0ZXN0LmZv
cm1hdCA9PSAneGNvZGUnOgorICBjaGRpciA9ICdyZWxvY2F0ZS9zcmMvc3ViZGlyMycKK2Vsc2U6
CisgIGNoZGlyID0gJ3JlbG9jYXRlL3NyYycKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ251
bGxfaW5wdXQnLCBjaGRpcj1jaGRpciwgc3Rkb3V0PWV4cGVjdCkKKworCisjIENsZWFuIG91dCBm
aWxlcyB3aGljaCBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWQgaWYgdGVzdC5BTEwgd2FzIHJ1bi4KK2Rl
ZiBjbGVhbl9kZXBfZmlsZXMoKToKKyAgZm9yIGZpbGUgaW4gKGdsb2IuZ2xvYigncmVsb2NhdGUv
c3JjL2RlcF8qLnR4dCcpICsKKyAgICAgICAgICAgICAgIGdsb2IuZ2xvYigncmVsb2NhdGUvc3Jj
L2RlcHNfYWxsX2RvbmVfKi50eHQnKSk6CisgICAgaWYgb3MucGF0aC5leGlzdHMoZmlsZSk6Cisg
ICAgICBvcy5yZW1vdmUoZmlsZSkKKworIyBDb25maXJtIG91ciBjbGVhbi4KK2NsZWFuX2RlcF9m
aWxlcygpCit0ZXN0Lm11c3Rfbm90X2V4aXN0KCdyZWxvY2F0ZS9zcmMvZGVwXzEudHh0JykKK3Rl
c3QubXVzdF9ub3RfZXhpc3QoJ3JlbG9jYXRlL3NyYy9kZXBzX2FsbF9kb25lX2ZpcnN0XzEyMy50
eHQnKQorCisjIE1ha2Ugc3VyZSBhbGwgZGVwcyBmaW5pc2ggYmVmb3JlIGFuIGFjdGlvbiBpcyBy
dW4gb24gYSAnTm9uZScgdGFyZ2V0LgorIyBJZiB1c2luZyB0aGUgTWFrZSBidWlsZGVyLCBhZGQg
LWogdG8gbWFrZSB0aGluZ3MgbW9yZSBkaWZmaWN1bHQuCithcmd1bWVudHMgPSBbXQoraWYgdGVz
dC5mb3JtYXQgPT0gJ21ha2UnOgorICBhcmd1bWVudHMgPSBbJy1qJ10KK3Rlc3QuYnVpbGQoJ2Fj
dGlvbnMuZ3lwJywgJ2FjdGlvbl93aXRoX2RlcGVuZGVuY2llc18xMjMnLCBjaGRpcj0ncmVsb2Nh
dGUvc3JjJywKKyAgICAgICAgICAgYXJndW1lbnRzPWFyZ3VtZW50cykKK3Rlc3QubXVzdF9leGlz
dCgncmVsb2NhdGUvc3JjL2RlcHNfYWxsX2RvbmVfZmlyc3RfMTIzLnR4dCcpCisKKyMgVHJ5IGFn
YWluIHdpdGggYSB0YXJnZXQgdGhhdCBoYXMgZGVwcyBpbiByZXZlcnNlLiAgT3V0cHV0IGZpbGVz
IGZyb20KKyMgcHJldmlvdXMgdGVzdHMgZGVsZXRlZC4gIENvbmZpcm0gdGhpcyBleGVjdXRpb24g
ZGlkIE5PVCBydW4gdGhlIEFMTAorIyB0YXJnZXQgd2hpY2ggd291bGQgbWVzcyB1cCBvdXIgZGVw
IHRlc3RzLgorY2xlYW5fZGVwX2ZpbGVzKCkKK3Rlc3QuYnVpbGQoJ2FjdGlvbnMuZ3lwJywgJ2Fj
dGlvbl93aXRoX2RlcGVuZGVuY2llc18zMjEnLCBjaGRpcj0ncmVsb2NhdGUvc3JjJywKKyAgICAg
ICAgICAgYXJndW1lbnRzPWFyZ3VtZW50cykKK3Rlc3QubXVzdF9leGlzdCgncmVsb2NhdGUvc3Jj
L2RlcHNfYWxsX2RvbmVfZmlyc3RfMzIxLnR4dCcpCit0ZXN0Lm11c3Rfbm90X2V4aXN0KCdyZWxv
Y2F0ZS9zcmMvZGVwc19hbGxfZG9uZV9maXJzdF8xMjMudHh0JykKKworCit0ZXN0LnBhc3NfdGVz
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zL2d5cHRl
c3QtZGVmYXVsdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMvZ3lwdGVz
dC1kZWZhdWx0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4Nzc4NjdiMWY4MjYyMjk2ZDg1ZDc1MGJjY2ZkYTg5
NDc4ZTEyNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9h
Y3Rpb25zL2d5cHRlc3QtZGVmYXVsdC5weQpAQCAtMCwwICsxLDYxIEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
CisiIiIKK1ZlcmlmaWVzIHNpbXBsZSBhY3Rpb25zIHdoZW4gdXNpbmcgdGhlIGRlZmF1bHQgYnVp
bGQgdGFyZ2V0LgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RH
eXAoKQorCit0ZXN0LnJ1bl9neXAoJ2FjdGlvbnMuZ3lwJywgY2hkaXI9J3NyYycpCisKK3Rlc3Qu
cmVsb2NhdGUoJ3NyYycsICdyZWxvY2F0ZS9zcmMnKQorCisjIFRlc3QgdGhhdCBhbiAiYWx3YXlz
IHJ1biIgYWN0aW9uIGluY3JlYXNlcyBhIGNvdW50ZXIgb24gbXVsdGlwbGUgaW52b2NhdGlvbnMs
CisjIGFuZCB0aGF0IGEgZGVwZW5kZW50IGFjdGlvbiB1cGRhdGVzIGluIHN0ZXAuCit0ZXN0LmJ1
aWxkKCdhY3Rpb25zLmd5cCcsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQordGVzdC5tdXN0X21hdGNo
KCdyZWxvY2F0ZS9zcmMvc3ViZGlyMS9hY3Rpb25zLW91dC9hY3Rpb24tY291bnRlci50eHQnLCAn
MScpCit0ZXN0Lm11c3RfbWF0Y2goJ3JlbG9jYXRlL3NyYy9zdWJkaXIxL2FjdGlvbnMtb3V0L2Fj
dGlvbi1jb3VudGVyXzIudHh0JywgJzEnKQordGVzdC5idWlsZCgnYWN0aW9ucy5neXAnLCBjaGRp
cj0ncmVsb2NhdGUvc3JjJykKK3Rlc3QubXVzdF9tYXRjaCgncmVsb2NhdGUvc3JjL3N1YmRpcjEv
YWN0aW9ucy1vdXQvYWN0aW9uLWNvdW50ZXIudHh0JywgJzInKQordGVzdC5tdXN0X21hdGNoKCdy
ZWxvY2F0ZS9zcmMvc3ViZGlyMS9hY3Rpb25zLW91dC9hY3Rpb24tY291bnRlcl8yLnR4dCcsICcy
JykKKworIyBUaGUgImFsd2F5cyBydW4iIGFjdGlvbiBvbmx5IGNvdW50cyB0byAyLCBidXQgdGhl
IGRlcGVuZGVudCB0YXJnZXQgd2lsbCBjb3VudAorIyBmb3JldmVyIGlmIGl0J3MgYWxsb3dlZCB0
byBydW4uIFRoaXMgdmVyaWZpZXMgdGhhdCB0aGUgZGVwZW5kZW50IHRhcmdldCBvbmx5CisjIHJ1
bnMgd2hlbiB0aGUgImFsd2F5cyBydW4iIGFjdGlvbiBnZW5lcmF0ZXMgbmV3IG91dHB1dCwgbm90
IGp1c3QgYmVjYXVzZSB0aGUKKyMgImFsd2F5cyBydW4iIHJhbi4KK3Rlc3QuYnVpbGQoJ2FjdGlv
bnMuZ3lwJywgdGVzdC5BTEwsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQordGVzdC5tdXN0X21hdGNo
KCdyZWxvY2F0ZS9zcmMvc3ViZGlyMS9hY3Rpb25zLW91dC9hY3Rpb24tY291bnRlci50eHQnLCAn
MicpCit0ZXN0Lm11c3RfbWF0Y2goJ3JlbG9jYXRlL3NyYy9zdWJkaXIxL2FjdGlvbnMtb3V0L2Fj
dGlvbi1jb3VudGVyXzIudHh0JywgJzInKQorCitleHBlY3QgPSAiIiJcCitIZWxsbyBmcm9tIHBy
b2dyYW0uYworSGVsbG8gZnJvbSBtYWtlLXByb2cxLnB5CitIZWxsbyBmcm9tIG1ha2UtcHJvZzIu
cHkKKyIiIgorCitpZiB0ZXN0LmZvcm1hdCA9PSAneGNvZGUnOgorICBjaGRpciA9ICdyZWxvY2F0
ZS9zcmMvc3ViZGlyMScKK2Vsc2U6CisgIGNoZGlyID0gJ3JlbG9jYXRlL3NyYycKK3Rlc3QucnVu
X2J1aWx0X2V4ZWN1dGFibGUoJ3Byb2dyYW0nLCBjaGRpcj1jaGRpciwgc3Rkb3V0PWV4cGVjdCkK
KworCit0ZXN0Lm11c3RfbWF0Y2goJ3JlbG9jYXRlL3NyYy9zdWJkaXIyL2ZpbGUub3V0JywgIkhl
bGxvIGZyb20gbWFrZS1maWxlLnB5XG4iKQorCisKK2V4cGVjdCA9ICJIZWxsbyBmcm9tIGdlbmVy
YXRlX21haW4ucHlcbiIKKworaWYgdGVzdC5mb3JtYXQgPT0gJ3hjb2RlJzoKKyAgY2hkaXIgPSAn
cmVsb2NhdGUvc3JjL3N1YmRpcjMnCitlbHNlOgorICBjaGRpciA9ICdyZWxvY2F0ZS9zcmMnCit0
ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdudWxsX2lucHV0JywgY2hkaXI9Y2hkaXIsIHN0ZG91
dD1leHBlY3QpCisKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy9neXB0ZXN0LWVycm9ycy5weSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L2FjdGlvbnMvZ3lwdGVzdC1lcnJvcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E0MTQ4
N2JiZGVhYzk3NmI1MmE1ZTNkZDc3ZjA2MzUxNmVhMWE1YwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMvZ3lwdGVzdC1lcnJvcnMucHkKQEAgLTAs
MCArMSwyNCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uDQorCisjIENvcHlyaWdodCAoYykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisNCisiIiINCitWZXJpZmllcyBiZWhhdmlvciBmb3Ig
ZGlmZmVyZW50IGFjdGlvbiBjb25maWd1cmF0aW9uIGVycm9yczoNCitleGl0IHN0YXR1cyBvZiAx
LCBhbmQgdGhlIGV4cGVjdGVkIGVycm9yIG1lc3NhZ2UgbXVzdCBiZSBpbiBzdGRlcnIuDQorIiIi
DQorDQoraW1wb3J0IFRlc3RHeXANCisNCit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lwKCkNCisNCisN
Cit0ZXN0LnJ1bl9neXAoJ2FjdGlvbl9taXNzaW5nX25hbWUuZ3lwJywgY2hkaXI9J3NyYycsIHN0
YXR1cz0xLCBzdGRlcnI9Tm9uZSkNCitleHBlY3QgPSBbDQorICAiQW5vbnltb3VzIGFjdGlvbiBp
biB0YXJnZXQgYnJva2VuX2FjdGlvbnMyLiAgQW4gYWN0aW9uIG11c3QgaGF2ZSBhbiAnYWN0aW9u
X25hbWUnIGZpZWxkLiIsDQorXQ0KK3Rlc3QubXVzdF9jb250YWluX2FsbF9saW5lcyh0ZXN0LnN0
ZGVycigpLCBleHBlY3QpDQorDQorDQordGVzdC5wYXNzX3Rlc3QoKQ0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMvc3JjL2FjdGlvbl9taXNzaW5nX25hbWUu
Z3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy9zcmMvYWN0aW9uX21pc3Np
bmdfbmFtZS5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA0MjRjMzVhMTE1MDI5MmJlZWZlMTUzZTczM2YwN2E5
ZWE4NThlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Fj
dGlvbnMvc3JjL2FjdGlvbl9taXNzaW5nX25hbWUuZ3lwCkBAIC0wLDAgKzEsMjQgQEAKKyMgQ29w
eXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6
IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnYnJva2VuX2FjdGlvbnMyJywKKyAgICAg
ICd0eXBlJzogJ25vbmUnLAorICAgICAgJ2FjdGlvbnMnOiBbCisgICAgICAgIHsKKyAgICAgICAg
ICAnaW5wdXRzJzogWworICAgICAgICAgICAgJ25vX25hbWUuaW5wdXQnLAorICAgICAgICAgIF0s
CisgICAgICAgICAgJ2FjdGlvbic6IFsKKyAgICAgICAgICAgICdweXRob24nLAorICAgICAgICAg
ICAgJy1jJywKKyAgICAgICAgICAgICdwcmludCBcJ21pc3NpbmcgbmFtZVwnJywKKyAgICAgICAg
ICBdLAorICAgICAgICB9LAorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy9zcmMvYWN0aW9ucy5neXAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zL3NyYy9hY3Rpb25zLmd5cApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41ZDJkYjE5NTVlMmRiMWQ4YzRlYWI4YzM4ZWYwNTYwMzQwZDA3YWIxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy9zcmMvYWN0aW9ucy5neXAK
QEAgLTAsMCArMSwxMTQgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAn
cHVsbF9pbl9hbGxfYWN0aW9ucycsCisgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICdkZXBl
bmRlbmNpZXMnOiBbCisgICAgICAgICdzdWJkaXIxL2V4ZWN1dGFibGUuZ3lwOionLAorICAgICAg
ICAnc3ViZGlyMi9ub25lLmd5cDoqJywKKyAgICAgICAgJ3N1YmRpcjMvbnVsbF9pbnB1dC5neXA6
KicsCisgICAgICBdLAorICAgIH0sCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2RlcGVu
ZF9vbl9hbHdheXNfcnVuX2FjdGlvbicsCisgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICdk
ZXBlbmRlbmNpZXMnOiBbICdzdWJkaXIxL2V4ZWN1dGFibGUuZ3lwOmNvdW50ZXInIF0sCisgICAg
ICAnYWN0aW9ucyc6IFsKKyAgICAgICAgeworICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICd1c2Vf
YWx3YXlzX3J1bl9vdXRwdXQnLAorICAgICAgICAgICdpbnB1dHMnOiBbCisgICAgICAgICAgICAn
c3ViZGlyMS9hY3Rpb25zLW91dC9hY3Rpb24tY291bnRlci50eHQnLAorICAgICAgICAgICAgJ3N1
YmRpcjEvY291bnRlci5weScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0cyc6IFsK
KyAgICAgICAgICAgICdzdWJkaXIxL2FjdGlvbnMtb3V0L2FjdGlvbi1jb3VudGVyXzIudHh0JywK
KyAgICAgICAgICBdLAorICAgICAgICAgICdhY3Rpb24nOiBbCisgICAgICAgICAgICAncHl0aG9u
JywgJ3N1YmRpcjEvY291bnRlci5weScsICc8KF9vdXRwdXRzKScsCisgICAgICAgICAgXSwKKyAg
ICAgICAgICAjIEFsbG93cyB0aGUgdGVzdCB0byBydW4gd2l0aG91dCBoZXJtZXRpYyBjeWd3aW4g
b24gd2luZG93cy4KKyAgICAgICAgICAnbXN2c19jeWd3aW5fc2hlbGwnOiAwLAorICAgICAgICB9
LAorICAgICAgXSwKKyAgICB9LAorCisgICAgIyBUaHJlZSBkZXBzIHdoaWNoIGRvbid0IGZpbmlz
aCBpbW1lZGlhdGVseS4KKyAgICAjIEVhY2ggb25lIGhhcyBhIHNtYWxsIGRlbGF5IHRoZW4gY3Jl
YXRlcyBhIGZpbGUuCisgICAgIyBEZWxheXMgYXJlIDEuMCwgMS4xLCBhbmQgMi4wIHNlY29uZHMu
CisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2RlcF8xJywKKyAgICAgICd0eXBlJzogJ25v
bmUnLAorICAgICAgJ2FjdGlvbnMnOiBbeworICAgICAgICAnaW5wdXRzJzogWyAnYWN0aW9ucy5n
eXAnIF0sCisgICAgICAgICdvdXRwdXRzJzogWyAnZGVwXzEudHh0JyBdLAorICAgICAgICAnYWN0
aW9uX25hbWUnOiAnZGVwXzEnLAorICAgICAgICAnYWN0aW9uJzogWyAncHl0aG9uJywgJy1jJywK
KyAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCB0aW1lOyB0aW1lLnNsZWVwKDEpOyBvcGVuKFwn
ZGVwXzEudHh0XCcsIFwnd1wnKScgXSwKKyAgICAgICAgIyBBbGxvd3MgdGhlIHRlc3QgdG8gcnVu
IHdpdGhvdXQgaGVybWV0aWMgY3lnd2luIG9uIHdpbmRvd3MuCisgICAgICAgICdtc3ZzX2N5Z3dp
bl9zaGVsbCc6IDAsCisgICAgICB9XSwKKyAgICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFt
ZSc6ICdkZXBfMicsCisgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICdhY3Rpb25zJzogW3sK
KyAgICAgICAgJ2lucHV0cyc6IFsgJ2FjdGlvbnMuZ3lwJyBdLAorICAgICAgICAnb3V0cHV0cyc6
IFsgJ2RlcF8yLnR4dCcgXSwKKyAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ2RlcF8yJywKKyAgICAg
ICAgJ2FjdGlvbic6IFsgJ3B5dGhvbicsICctYycsCisgICAgICAgICAgICAgICAgICAgICdpbXBv
cnQgdGltZTsgdGltZS5zbGVlcCgxLjEpOyBvcGVuKFwnZGVwXzIudHh0XCcsIFwnd1wnKScgXSwK
KyAgICAgICAgIyBBbGxvd3MgdGhlIHRlc3QgdG8gcnVuIHdpdGhvdXQgaGVybWV0aWMgY3lnd2lu
IG9uIHdpbmRvd3MuCisgICAgICAgICdtc3ZzX2N5Z3dpbl9zaGVsbCc6IDAsCisgICAgICB9XSwK
KyAgICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdkZXBfMycsCisgICAgICAndHlw
ZSc6ICdub25lJywKKyAgICAgICdhY3Rpb25zJzogW3sKKyAgICAgICAgJ2lucHV0cyc6IFsgJ2Fj
dGlvbnMuZ3lwJyBdLAorICAgICAgICAnb3V0cHV0cyc6IFsgJ2RlcF8zLnR4dCcgXSwKKyAgICAg
ICAgJ2FjdGlvbl9uYW1lJzogJ2RlcF8zJywKKyAgICAgICAgJ2FjdGlvbic6IFsgJ3B5dGhvbics
ICctYycsCisgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgdGltZTsgdGltZS5zbGVlcCgyLjAp
OyBvcGVuKFwnZGVwXzMudHh0XCcsIFwnd1wnKScgXSwKKyAgICAgICAgIyBBbGxvd3MgdGhlIHRl
c3QgdG8gcnVuIHdpdGhvdXQgaGVybWV0aWMgY3lnd2luIG9uIHdpbmRvd3MuCisgICAgICAgICdt
c3ZzX2N5Z3dpbl9zaGVsbCc6IDAsCisgICAgICB9XSwKKyAgICB9LAorCisgICAgIyBBbiBhY3Rp
b24gd2hpY2ggYXNzdW1lcyB0aGUgZGVwcyBoYXZlIGNvbXBsZXRlZC4KKyAgICAjIERvZXMgTk9U
IGxpc3QgdGhlIG91dHB1dCBmaWxlcyBvZiBpdCdzIGRlcHMgYXMgaW5wdXRzLgorICAgICMgT24g
c3VjY2VzcyBjcmVhdGUgdGhlIGZpbGUgZGVwc19hbGxfZG9uZV9maXJzdC50eHQuCisgICAgewor
ICAgICAgJ3RhcmdldF9uYW1lJzogJ2FjdGlvbl93aXRoX2RlcGVuZGVuY2llc18xMjMnLAorICAg
ICAgJ3R5cGUnOiAnbm9uZScsCisgICAgICAnZGVwZW5kZW5jaWVzJzogWyAnZGVwXzEnLCAnZGVw
XzInLCAnZGVwXzMnIF0sCisgICAgICAnYWN0aW9ucyc6IFt7CisgICAgICAgICdpbnB1dHMnOiBb
ICdhY3Rpb25zLmd5cCcgXSwKKyAgICAgICAgJ291dHB1dHMnOiBbICdkZXBzX2FsbF9kb25lX2Zp
cnN0XzEyMy50eHQnIF0sCisgICAgICAgICdhY3Rpb25fbmFtZSc6ICdhY3Rpb25fd2l0aF9kZXBl
bmRlbmNpZXNfMTIzJywKKyAgICAgICAgJ2FjdGlvbic6IFsgJ3B5dGhvbicsICdjb25maXJtLWRl
cC1maWxlcy5weScsICc8KF9vdXRwdXRzKScgXSwKKyAgICAgICAgIyBBbGxvd3MgdGhlIHRlc3Qg
dG8gcnVuIHdpdGhvdXQgaGVybWV0aWMgY3lnd2luIG9uIHdpbmRvd3MuCisgICAgICAgICdtc3Zz
X2N5Z3dpbl9zaGVsbCc6IDAsCisgICAgICB9XSwKKyAgICB9LAorICAgICMgU2FtZSBhcyBhYm92
ZSBidXQgd2l0aCBkZXBzIGluIHJldmVyc2UuCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzog
J2FjdGlvbl93aXRoX2RlcGVuZGVuY2llc18zMjEnLAorICAgICAgJ3R5cGUnOiAnbm9uZScsCisg
ICAgICAnZGVwZW5kZW5jaWVzJzogWyAnZGVwXzMnLCAnZGVwXzInLCAnZGVwXzEnIF0sCisgICAg
ICAnYWN0aW9ucyc6IFt7CisgICAgICAgICdpbnB1dHMnOiBbICdhY3Rpb25zLmd5cCcgXSwKKyAg
ICAgICAgJ291dHB1dHMnOiBbICdkZXBzX2FsbF9kb25lX2ZpcnN0XzMyMS50eHQnIF0sCisgICAg
ICAgICdhY3Rpb25fbmFtZSc6ICdhY3Rpb25fd2l0aF9kZXBlbmRlbmNpZXNfMzIxJywKKyAgICAg
ICAgJ2FjdGlvbic6IFsgJ3B5dGhvbicsICdjb25maXJtLWRlcC1maWxlcy5weScsICc8KF9vdXRw
dXRzKScgXSwKKyAgICAgICAgIyBBbGxvd3MgdGhlIHRlc3QgdG8gcnVuIHdpdGhvdXQgaGVybWV0
aWMgY3lnd2luIG9uIHdpbmRvd3MuCisgICAgICAgICdtc3ZzX2N5Z3dpbl9zaGVsbCc6IDAsCisg
ICAgICB9XSwKKyAgICB9LAorCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9hY3Rpb25zL3NyYy9jb25maXJtLWRlcC1maWxlcy5weSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMvc3JjL2NvbmZpcm0tZGVwLWZpbGVzLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM0ZWZlMjhmMTgzMjA3ZjZlYmI3ODdlYTBmZjUwY2QzMjM1YWZkYTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zL3NyYy9jb25maXJtLWRl
cC1maWxlcy5weQpAQCAtMCwwICsxLDE2IEBACisjIS91c3IvYmluL3B5dGhvbgorCisjIENvbmZp
cm0gcHJlc2VuY2Ugb2YgZmlsZXMgZ2VuZXJhdGVkIGJ5IG91ciB0YXJnZXRzIHdlIGRlcGVuZCBv
bi4KKyMgSWYgdGhleSBleGlzdCwgY3JlYXRlIGEgbmV3IGZpbGUuCisjCisjIE5vdGUgdGFyZ2V0
J3MgaW5wdXQgZmlsZXMgYXJlIGV4cGxpY2l0bHkgTk9UIGRlZmluZWQgaW4gdGhlIGd5cCBmaWxl
CisjIHNvIHRoZXkgY2FuJ3QgZWFzaWx5IGJlIHBhc3NlZCB0byB0aGlzIHNjcmlwdCBhcyBhcmdz
LgorCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworb3V0ZmlsZSA9IHN5cy5hcmd2WzFdICAjIEV4
YW1wbGUgdmFsdWUgd2UgZXhwZWN0OiBkZXBzX2FsbF9kb25lX2ZpcnN0XzEyMy50eHQKK2lmIChv
cy5wYXRoLmV4aXN0cygiZGVwXzEudHh0IikgYW5kCisgICAgb3MucGF0aC5leGlzdHMoImRlcF8y
LnR4dCIpIGFuZAorICAgIG9zLnBhdGguZXhpc3RzKCJkZXBfMy50eHQiKSk6CisgIG9wZW4ob3V0
ZmlsZSwgInciKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9u
cy9zcmMvc3ViZGlyMS9jb3VudGVyLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0
aW9ucy9zcmMvc3ViZGlyMS9jb3VudGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2MTJkN2QyYmZiMzViZDVl
YTk3ODc5OGYyYmYzYzE1YmE3MjE3ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9hY3Rpb25zL3NyYy9zdWJkaXIxL2NvdW50ZXIucHkKQEAgLTAsMCArMSw0
NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKKworb3V0cHV0ID0g
c3lzLmFyZ3ZbMV0KK3BlcnNpc3RvdXRwdXQgPSAiJXMucGVyc2lzdCIgJSBzeXMuYXJndlsxXQor
Citjb3VudCA9IDAKK3RyeToKKyAgY291bnQgPSBvcGVuKHBlcnNpc3RvdXRwdXQsICdyJykucmVh
ZCgpCitleGNlcHQ6CisgIHBhc3MKK2NvdW50ID0gaW50KGNvdW50KSArIDEKKworaWYgbGVuKHN5
cy5hcmd2KSA+IDI6CisgIG1heF9jb3VudCA9IGludChzeXMuYXJndlsyXSkKKyAgaWYgY291bnQg
PiBtYXhfY291bnQ6CisgICAgY291bnQgPSBtYXhfY291bnQKKworb2xkY291bnQgPSAwCit0cnk6
CisgIG9sZGNvdW50ID0gb3BlbihvdXRwdXQsICdyJykucmVhZCgpCitleGNlcHQ6CisgIHBhc3MK
KworIyBTYXZlIHRoZSBjb3VudCBpbiBhIGZpbGUgdGhhdCBpcyB1bmRlY2xhcmVkLCBhbmQgdGh1
cyBoaWRkZW4sIHRvIGd5cC4gV2UgbmVlZAorIyB0byBkbyB0aGlzIGJlY2F1c2UsIHByaW9yIHRv
IHJ1bm5pbmcgY29tbWFuZHMsIHNjb25zIGRlbGV0ZXMgYW55IGRlY2xhcmVkCisjIG91dHB1dHMs
IHNvIHdlIHdvdWxkIGxvc2Ugb3VyIGNvdW50IGlmIHdlIGp1c3Qgd3JvdGUgdG8gdGhlIGdpdmVu
IG91dHB1dCBmaWxlLgorIyAoVGhlIG90aGVyIG9wdGlvbiBpcyB0byB1c2UgUHJlY2lvdXMoKSBp
biB0aGUgc2NvbnMgZ2VuZXJhdG9yLCBidXQgdGhhdCBzZWVtcworIyB0b28gaGVhdnktaGFuZGVk
IGp1c3QgdG8gc3VwcG9ydCB0aGlzIHNvbWV3aGF0IHVucmVhbGlzdGljIHRlc3QgY2FzZSwgYW5k
CisjIG1pZ2h0IGxlYWQgdG8gdW5pbnRlbmRlZCBzaWRlLWVmZmVjdHMpLgorb3BlbihwZXJzaXN0
b3V0cHV0LCAndycpLndyaXRlKCclZCcgJSAoY291bnQpKQorCisjIE9ubHkgd3JpdGUgdGhlIGdp
dmVuIG91dHB1dCBmaWxlIGlmIHRoZSBjb3VudCBoYXMgY2hhbmdlZC4KK2lmIGludChvbGRjb3Vu
dCkgIT0gY291bnQ6CisgIG9wZW4ob3V0cHV0LCAndycpLndyaXRlKCclZCcgJSAoY291bnQpKQor
ICAjIFNsZWVwIHNvIHRoZSBuZXh0IHJ1biBjaGFuZ2VzIHRoZSBmaWxlIHRpbWUgc3VmZmljaWVu
dGx5IHRvIG1ha2UgdGhlIGJ1aWxkCisgICMgZGV0ZWN0IHRoZSBmaWxlIGFzIGNoYW5nZWQuCisg
IHRpbWUuc2xlZXAoMSkKKworc3lzLmV4aXQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L2FjdGlvbnMvc3JjL3N1YmRpcjEvZXhlY3V0YWJsZS5neXAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zL3NyYy9zdWJkaXIxL2V4ZWN1dGFibGUuZ3lwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZhMWNlNGY5MWUwZmFhYjU2NjdhYmRmYTc0NmJiYjIxY2M2N2RlYjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zL3NyYy9zdWJk
aXIxL2V4ZWN1dGFibGUuZ3lwCkBAIC0wLDAgKzEsNzQgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAg
ICAndGFyZ2V0X25hbWUnOiAncHJvZ3JhbScsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywK
KyAgICAgICdtc3ZzX2N5Z3dpbl9zaGVsbCc6IDAsCisgICAgICAnc291cmNlcyc6IFsKKyAgICAg
ICAgJ3Byb2dyYW0uYycsCisgICAgICBdLAorICAgICAgJ2FjdGlvbnMnOiBbCisgICAgICAgIHsK
KyAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnbWFrZS1wcm9nMScsCisgICAgICAgICAgJ2lucHV0
cyc6IFsKKyAgICAgICAgICAgICdtYWtlLXByb2cxLnB5JywKKyAgICAgICAgICBdLAorICAgICAg
ICAgICdvdXRwdXRzJzogWworICAgICAgICAgICAgJzwoSU5URVJNRURJQVRFX0RJUikvcHJvZzEu
YycsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnYWN0aW9uJzogWworICAgICAgICAgICAgJ3B5
dGhvbicsICc8KF9pbnB1dHMpJywgJzxAKF9vdXRwdXRzKScsCisgICAgICAgICAgXSwKKyAgICAg
ICAgICAncHJvY2Vzc19vdXRwdXRzX2FzX3NvdXJjZXMnOiAxLAorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ21ha2UtcHJvZzInLAorICAgICAgICAgICdp
bnB1dHMnOiBbCisgICAgICAgICAgICAnbWFrZS1wcm9nMi5weScsCisgICAgICAgICAgXSwKKyAg
ICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAgICAgICAgICdhY3Rpb25zLW91dC9wcm9nMi5jJywK
KyAgICAgICAgICBdLAorICAgICAgICAgICdhY3Rpb24nOiBbCisgICAgICAgICAgICAncHl0aG9u
JywgJzwoX2lucHV0cyknLCAnPEAoX291dHB1dHMpJywKKyAgICAgICAgICBdLAorICAgICAgICAg
ICdwcm9jZXNzX291dHB1dHNfYXNfc291cmNlcyc6IDEsCisgICAgICAgICAgIyBBbGxvd3MgdGhl
IHRlc3QgdG8gcnVuIHdpdGhvdXQgaGVybWV0aWMgY3lnd2luIG9uIHdpbmRvd3MuCisgICAgICAg
ICAgJ21zdnNfY3lnd2luX3NoZWxsJzogMCwKKyAgICAgICAgfSwKKyAgICAgIF0sCisgICAgfSwK
KyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnY291bnRlcicsCisgICAgICAndHlwZSc6ICdu
b25lJywKKyAgICAgICdhY3Rpb25zJzogWworICAgICAgICB7CisgICAgICAgICAgIyBUaGlzIGFj
dGlvbiBzaG91bGQgYWx3YXlzIHJ1biwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCBpdCdz
CisgICAgICAgICAgIyBpbnB1dHMgb3IgdGhlIGNvbW1hbmQtbGluZSBjaGFuZ2UuIFdlIGRvIHRo
aXMgYnkgY3JlYXRpbmcgYSBkdW1teQorICAgICAgICAgICMgZmlyc3Qgb3V0cHV0LCB3aGljaCBp
cyBhbHdheXMgbWlzc2luZywgdGh1cyBjYXVzaW5nIHRoZSBidWlsZCB0bworICAgICAgICAgICMg
YWx3YXlzIHRyeSB0byByZWNyZWF0ZSBpdC4gQWN0dWFsIG91dHB1dCBmaWxlcyBzaG91bGQgYmUg
bGlzdGVkCisgICAgICAgICAgIyBhZnRlciB0aGUgZHVtbXkgb25lLCBhbmQgZGVwZW5kZW50IHRh
cmdldHMgc2hvdWxkIGxpc3QgdGhlIHJlYWwKKyAgICAgICAgICAjIG91dHB1dChzKSBpbiB0aGVp
ciBpbnB1dHMKKyAgICAgICAgICAjIChzZWUgJy4uL2FjdGlvbnMuZ3lwOmRlcGVuZF9vbl9hbHdh
eXNfcnVuX2FjdGlvbicpLgorICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdhY3Rpb25fY291bnRl
cicsCisgICAgICAgICAgJ2lucHV0cyc6IFsKKyAgICAgICAgICAgICdjb3VudGVyLnB5JywKKyAg
ICAgICAgICBdLAorICAgICAgICAgICdvdXRwdXRzJzogWworICAgICAgICAgICAgJ2FjdGlvbnMt
b3V0L2FjdGlvbi1jb3VudGVyLnR4dC5hbHdheXMnLAorICAgICAgICAgICAgJ2FjdGlvbnMtb3V0
L2FjdGlvbi1jb3VudGVyLnR4dCcsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnYWN0aW9uJzog
WworICAgICAgICAgICAgJ3B5dGhvbicsICc8KF9pbnB1dHMpJywgJ2FjdGlvbnMtb3V0L2FjdGlv
bi1jb3VudGVyLnR4dCcsICcyJywKKyAgICAgICAgICBdLAorICAgICAgICAgICMgQWxsb3dzIHRo
ZSB0ZXN0IHRvIHJ1biB3aXRob3V0IGhlcm1ldGljIGN5Z3dpbiBvbiB3aW5kb3dzLgorICAgICAg
ICAgICdtc3ZzX2N5Z3dpbl9zaGVsbCc6IDAsCisgICAgICAgIH0sCisgICAgICBdLAorICAgIH0s
CisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25z
L3NyYy9zdWJkaXIxL21ha2UtcHJvZzEucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9h
Y3Rpb25zL3NyYy9zdWJkaXIxL21ha2UtcHJvZzEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2VhMWQ4YTJkNDg3
MDgzZWYwZjkyYzA5NGRiNDhkZmU2OTUyY2IxZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMvc3JjL3N1YmRpcjEvbWFrZS1wcm9nMS5weQpAQCAt
MCwwICsxLDIwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCitpbXBvcnQgc3lzCisKK2NvbnRlbnRzID0gciIi
IgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK3ZvaWQgcHJvZzEodm9pZCkKK3sKKyAgcHJpbnRmKCJI
ZWxsbyBmcm9tIG1ha2UtcHJvZzEucHlcbiIpOworfQorIiIiCisKK29wZW4oc3lzLmFyZ3ZbMV0s
ICd3Jykud3JpdGUoY29udGVudHMpCisKK3N5cy5leGl0KDApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zL3NyYy9zdWJkaXIxL21ha2UtcHJvZzIucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zL3NyYy9zdWJkaXIxL21ha2UtcHJvZzIu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGJmZTQ5NzNjMjRjMTUyZWFkMTRmNzg5ZjBiNDhmZjU4YmJiNzMwOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMvc3Jj
L3N1YmRpcjEvbWFrZS1wcm9nMi5weQpAQCAtMCwwICsxLDIwIEBACisjIS91c3IvYmluL2VudiBw
eXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCitp
bXBvcnQgc3lzCisKK2NvbnRlbnRzID0gciIiIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK3ZvaWQg
cHJvZzIodm9pZCkKK3sKKyAgcHJpbnRmKCJIZWxsbyBmcm9tIG1ha2UtcHJvZzIucHlcbiIpOwor
fQorIiIiCisKK29wZW4oc3lzLmFyZ3ZbMV0sICd3Jykud3JpdGUoY29udGVudHMpCisKK3N5cy5l
eGl0KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zL3Ny
Yy9zdWJkaXIxL3Byb2dyYW0uYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FjdGlvbnMv
c3JjL3N1YmRpcjEvcHJvZ3JhbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1ZjY2MWQ5MDViZWUyNGUyY2E0Zjc2
MzQzYmY1N2YzMzk3NmIxNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9hY3Rpb25zL3NyYy9zdWJkaXIxL3Byb2dyYW0uYwpAQCAtMCwwICsxLDEyIEBACisj
aW5jbHVkZSA8c3RkaW8uaD4NCisNCitleHRlcm4gdm9pZCBwcm9nMSh2b2lkKTsNCitleHRlcm4g
dm9pZCBwcm9nMih2b2lkKTsNCisNCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0K
K3sNCisgIHByaW50ZigiSGVsbG8gZnJvbSBwcm9ncmFtLmNcbiIpOw0KKyAgcHJvZzEoKTsNCisg
IHByb2cyKCk7DQorICByZXR1cm4gMDsNCit9DQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvYWN0aW9ucy9zcmMvc3ViZGlyMi9tYWtlLWZpbGUucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zL3NyYy9zdWJkaXIyL21ha2UtZmlsZS5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZmYwNjUzMTQ0NzQ1YTk4MzdhYzRkM2U2YjEwOTY1NTY2NTU1N2M3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy9zcmMvc3ViZGlyMi9t
YWtlLWZpbGUucHkKQEAgLTAsMCArMSwxMSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMg
Q29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworaW1wb3J0IHN5cwor
Citjb250ZW50cyA9ICJIZWxsbyBmcm9tIG1ha2UtZmlsZS5weVxuIgorCitvcGVuKHN5cy5hcmd2
WzFdLCAnd2InKS53cml0ZShjb250ZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2FjdGlvbnMvc3JjL3N1YmRpcjIvbm9uZS5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9hY3Rpb25zL3NyYy9zdWJkaXIyL25vbmUuZ3lwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjYWE5
N2Q1NWM5MGUwZjZiMjg3MWQ0YWY1ODNiMGFlYWM0NWNhZTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zL3NyYy9zdWJkaXIyL25vbmUuZ3lwCkBA
IC0wLDAgKzEsMzMgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnZmls
ZScsCisgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICdtc3ZzX2N5Z3dpbl9zaGVsbCc6IDAs
CisgICAgICAnYWN0aW9ucyc6IFsKKyAgICAgICAgeworICAgICAgICAgICdhY3Rpb25fbmFtZSc6
ICdtYWtlLWZpbGUnLAorICAgICAgICAgICdpbnB1dHMnOiBbCisgICAgICAgICAgICAnbWFrZS1m
aWxlLnB5JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdvdXRwdXRzJzogWworICAgICAgICAg
ICAgJ2ZpbGUub3V0JywKKyAgICAgICAgICAgICMgVE9ETzogIGVuaGFuY2UgdGVzdGluZyBpbmZy
YXN0cnVjdHVyZSB0byB0ZXN0IHRoaXMKKyAgICAgICAgICAgICMgd2l0aG91dCBoYXZpbmcgdG8g
aGFyZC1jb2RlIHRoZSBpbnRlcm1lZGlhdGUgZGlyIHBhdGhzLgorICAgICAgICAgICAgIyc8KElO
VEVSTUVESUFURV9ESVIpL2ZpbGUub3V0JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdhY3Rp
b24nOiBbCisgICAgICAgICAgICAncHl0aG9uJywgJzwoX2lucHV0cyknLCAnPEAoX291dHB1dHMp
JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdwcm9jZXNzX291dHB1dHNfYXNfc291cmNlcyc6
IDEsCisgICAgICAgICAgIyBBbGxvd3MgdGhlIHRlc3QgdG8gcnVuIHdpdGhvdXQgaGVybWV0aWMg
Y3lnd2luIG9uIHdpbmRvd3MuCisgICAgICAgICAgJ21zdnNfY3lnd2luX3NoZWxsJzogMCwKKyAg
ICAgICAgfQorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy9zcmMvc3ViZGlyMy9nZW5lcmF0ZV9tYWluLnB5IGIv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy9zcmMvc3ViZGlyMy9nZW5lcmF0ZV9t
YWluLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI5MGIzYWE2ZDE5MDRkNzNlZmU5MTU3MTdjYmMxNmVjNjY0OTIz
MjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25z
L3NyYy9zdWJkaXIzL2dlbmVyYXRlX21haW4ucHkKQEAgLTAsMCArMSwyMSBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworaW1wb3J0IHN5cworCitjb250ZW50cyA9ICIiIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisK
K2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIHByaW50ZigiSGVsbG8gZnJv
bSBnZW5lcmF0ZV9tYWluLnB5XFxuIik7CisgIHJldHVybiAwOworfQorIiIiCisKK29wZW4oc3lz
LmFyZ3ZbMV0sICd3Jykud3JpdGUoY29udGVudHMpCisKK3N5cy5leGl0KDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hY3Rpb25zL3NyYy9zdWJkaXIzL251bGxfaW5w
dXQuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWN0aW9ucy9zcmMvc3ViZGlyMy9u
dWxsX2lucHV0Lmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjBiZWE1ZmRiNDBiODE4MTQxY2Y3MmVmOWNhMDYy
NDdmMGE2MGU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
YWN0aW9ucy9zcmMvc3ViZGlyMy9udWxsX2lucHV0Lmd5cApAQCAtMCwwICsxLDI5IEBACisjIENv
cHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldHMn
OiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ251bGxfaW5wdXQnLAorICAgICAgJ3R5
cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAnbXN2c19jeWd3aW5fc2hlbGwnOiAwLAorICAgICAg
J2FjdGlvbnMnOiBbCisgICAgICAgIHsKKyAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnZ2VuZXJh
dGVfbWFpbicsCisgICAgICAgICAgJ3Byb2Nlc3Nfb3V0cHV0c19hc19zb3VyY2VzJzogMSwKKyAg
ICAgICAgICAnaW5wdXRzJzogW10sCisgICAgICAgICAgJ291dHB1dHMnOiBbCisgICAgICAgICAg
ICAnPChJTlRFUk1FRElBVEVfRElSKS9tYWluLmMnLAorICAgICAgICAgIF0sCisgICAgICAgICAg
J2FjdGlvbic6IFsKKyAgICAgICAgICAgICMgVE9ETzogIHdlIGNhbid0IGp1c3QgdXNlIDwoX291
dHB1dHMpIGhlcmU/IQorICAgICAgICAgICAgJ3B5dGhvbicsICdnZW5lcmF0ZV9tYWluLnB5Jywg
JzwoSU5URVJNRURJQVRFX0RJUikvbWFpbi5jJywKKyAgICAgICAgICBdLAorICAgICAgICAgICMg
QWxsb3dzIHRoZSB0ZXN0IHRvIHJ1biB3aXRob3V0IGhlcm1ldGljIGN5Z3dpbiBvbiB3aW5kb3dz
LgorICAgICAgICAgICdtc3ZzX2N5Z3dpbl9zaGVsbCc6IDAsCisgICAgICAgIH0sCisgICAgICBd
LAorICAgIH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9hZGRpdGlvbmFsLXRhcmdldHMvZ3lwdGVzdC1hZGRpdGlvbmFsLnB5IGIvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvYWRkaXRpb25hbC10YXJnZXRzL2d5cHRlc3QtYWRkaXRpb25hbC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wMmU3ZDdhNDFjYzExMzZjMTAzOGZhYjE0MTJiZjY3OGQ2YmFmYzc2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYWRkaXRpb25hbC10YXJn
ZXRzL2d5cHRlc3QtYWRkaXRpb25hbC5weQpAQCAtMCwwICsxLDU1IEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
CisiIiIKK1ZlcmlmaWVzIHNpbXBsZSBhY3Rpb25zIHdoZW4gdXNpbmcgYW4gZXhwbGljaXQgYnVp
bGQgdGFyZ2V0IG9mICdhbGwnLgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0
R3lwLlRlc3RHeXAoKQorCit0ZXN0LnJ1bl9neXAoJ2FsbC5neXAnLCBjaGRpcj0nc3JjJykKK3Rl
c3QucmVsb2NhdGUoJ3NyYycsICdyZWxvY2F0ZS9zcmMnKQorCisjIEJ1aWxkIGFsbC4KK3Rlc3Qu
YnVpbGQoJ2FsbC5neXAnLCBjaGRpcj0ncmVsb2NhdGUvc3JjJykKKworaWYgdGVzdC5mb3JtYXQ9
PSd4Y29kZSc6CisgIGNoZGlyID0gJ3JlbG9jYXRlL3NyYy9kaXIxJworZWxzZToKKyAgY2hkaXIg
PSAncmVsb2NhdGUvc3JjJworCisjIE91dHB1dCBpcyBhcyBleHBlY3RlZC4KK2ZpbGVfY29udGVu
dCA9ICdIZWxsbyBmcm9tIGVtaXQucHlcbicKK3Rlc3QuYnVpbHRfZmlsZV9tdXN0X21hdGNoKCdv
dXQyLnR4dCcsIGZpbGVfY29udGVudCwgY2hkaXI9Y2hkaXIpCisKK3Rlc3QuYnVpbHRfZmlsZV9t
dXN0X25vdF9leGlzdCgnb3V0LnR4dCcsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQordGVzdC5idWls
dF9maWxlX211c3Rfbm90X2V4aXN0KCdmb29saWIxJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlPXRlc3QuU0hBUkVEX0xJQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGRpcj1jaGRpcikKKworIyBUT0RPKG1tb3NzKSBNYWtlIGNvbnNpc3RlbnQgd2l0aCBz
Y29ucywgd2l0aCAnZGlyMScgYmVmb3JlICdvdXQvRGVmYXVsdCc/CitpZiB0ZXN0LmZvcm1hdCA9
PSAnbWFrZSc6CisgIGNoZGlyPSdyZWxvY2F0ZS9zcmMnCitlbHNlOgorICBjaGRpcj0ncmVsb2Nh
dGUvc3JjL2RpcjEnCisKKyMgQnVpbGQgdGhlIGFjdGlvbiBleHBsaWNpdGx5LgordGVzdC5idWls
ZCgnYWN0aW9ucy5neXAnLCAnYWN0aW9uMV90YXJnZXQnLCBjaGRpcj1jaGRpcikKKworIyBDaGVj
ayB0aGF0IHRoaW5ncyBnb3QgcnVuLgorZmlsZV9jb250ZW50ID0gJ0hlbGxvIGZyb20gZW1pdC5w
eVxuJwordGVzdC5idWlsdF9maWxlX211c3RfZXhpc3QoJ291dC50eHQnLCBjaGRpcj1jaGRpcikK
KworIyBCdWlsZCB0aGUgc2hhcmVkIGxpYnJhcnkgZXhwbGljaXRseS4KK3Rlc3QuYnVpbGQoJ2Fj
dGlvbnMuZ3lwJywgJ2Zvb2xpYjEnLCBjaGRpcj1jaGRpcikKKwordGVzdC5idWlsdF9maWxlX211
c3RfZXhpc3QoJ2Zvb2xpYjEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT10ZXN0
LlNIQVJFRF9MSUIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGRpcj1jaGRpcikKKwor
dGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
YWRkaXRpb25hbC10YXJnZXRzL3NyYy9hbGwuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvYWRkaXRpb25hbC10YXJnZXRzL3NyYy9hbGwuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxYzgzMDgwYWFm
ZmVmNDhjODliZTkwNGQyMTBiOTU1NjQ2MzM1ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9hZGRpdGlvbmFsLXRhcmdldHMvc3JjL2FsbC5neXAKQEAgLTAs
MCArMSwxMyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Cit7CisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdhbGxfdGFy
Z2V0cycsCisgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICdkZXBlbmRlbmNpZXMnOiBbJ2Rp
cjEvYWN0aW9ucy5neXA6KiddLAorICAgIH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9hZGRpdGlvbmFsLXRhcmdldHMvc3JjL2RpcjEvYWN0aW9ucy5n
eXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hZGRpdGlvbmFsLXRhcmdldHMvc3JjL2Rp
cjEvYWN0aW9ucy5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA4OWM4MDkxMzFjYjk3ZWZhMDU1MGZkMzk5MWJl
OWQ2ZWMxMTNhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2FkZGl0aW9uYWwtdGFyZ2V0cy9zcmMvZGlyMS9hY3Rpb25zLmd5cApAQCAtMCwwICsxLDU2IEBA
CisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3Rh
cmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2FjdGlvbjFfdGFyZ2V0JywK
KyAgICAgICd0eXBlJzogJ25vbmUnLAorICAgICAgJ3N1cHByZXNzX3dpbGRjYXJkJzogMSwKKyAg
ICAgICdhY3Rpb25zJzogWworICAgICAgICB7CisgICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ2Fj
dGlvbjEnLAorICAgICAgICAgICdpbnB1dHMnOiBbCisgICAgICAgICAgICAnZW1pdC5weScsCisg
ICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAgICAgICAgICc8KFBST0RV
Q1RfRElSKS9vdXQudHh0JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdhY3Rpb24nOiBbJ3B5
dGhvbicsICdlbWl0LnB5JywgJzwoUFJPRFVDVF9ESVIpL291dC50eHQnXSwKKyAgICAgICAgICAn
bXN2c19jeWd3aW5fc2hlbGwnOiAwLAorICAgICAgICB9LAorICAgICAgXSwKKyAgICB9LAorICAg
IHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdhY3Rpb24yX3RhcmdldCcsCisgICAgICAndHlwZSc6
ICdub25lJywKKyAgICAgICdhY3Rpb25zJzogWworICAgICAgICB7CisgICAgICAgICAgJ2FjdGlv
bl9uYW1lJzogJ2FjdGlvbjInLAorICAgICAgICAgICdpbnB1dHMnOiBbCisgICAgICAgICAgICAn
ZW1pdC5weScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAgICAg
ICAgICc8KFBST0RVQ1RfRElSKS9vdXQyLnR4dCcsCisgICAgICAgICAgXSwKKyAgICAgICAgICAn
YWN0aW9uJzogWydweXRob24nLCAnZW1pdC5weScsICc8KFBST0RVQ1RfRElSKS9vdXQyLnR4dCdd
LAorICAgICAgICAgICdtc3ZzX2N5Z3dpbl9zaGVsbCc6IDAsCisgICAgICAgIH0sCisgICAgICBd
LAorICAgIH0sCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2Zvb2xpYjEnLAorICAgICAg
J3R5cGUnOiAnc2hhcmVkX2xpYnJhcnknLAorICAgICAgJ3N1cHByZXNzX3dpbGRjYXJkJzogMSwK
KyAgICAgICdzb3VyY2VzJzogWydsaWIxLmMnXSwKKyAgICB9LAorICBdLAorICAnY29uZGl0aW9u
cyc6IFsKKyAgICBbJ09TPT0ibGludXgiJywgeworICAgICAgJ3RhcmdldF9kZWZhdWx0cyc6IHsK
KyAgICAgICAgJ2NmbGFncyc6IFsnLWZQSUMnXSwKKyAgICAgIH0sCisgICAgfV0sCisgIF0sCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hZGRpdGlvbmFsLXRhcmdl
dHMvc3JjL2RpcjEvZW1pdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FkZGl0aW9u
YWwtdGFyZ2V0cy9zcmMvZGlyMS9lbWl0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2MzhjNDNiNWVkYjM4MjE1
MTA3YzVlZWNhNmIwNTE4ZWI2YjY5ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9hZGRpdGlvbmFsLXRhcmdldHMvc3JjL2RpcjEvZW1pdC5weQpAQCAtMCww
ICsxLDExIEBACisjIS91c3IvYmluL3B5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKK2ltcG9ydCBzeXMKKworZiA9IG9wZW4oc3lzLmFyZ3ZbMV0s
ICd3YicpCitmLndyaXRlKCdIZWxsbyBmcm9tIGVtaXQucHlcbicpCitmLmNsb3NlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2FkZGl0aW9uYWwtdGFyZ2V0cy9zcmMv
ZGlyMS9saWIxLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hZGRpdGlvbmFsLXRhcmdl
dHMvc3JjL2RpcjEvbGliMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmNGNiMTBmNzk2ZTI5ODU4ZTljOTg5YWJj
NTAzNTdkNGJlYzE5ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9hZGRpdGlvbmFsLXRhcmdldHMvc3JjL2RpcjEvbGliMS5jCkBAIC0wLDAgKzEsNiBAQAor
I2lmZGVmIF9XSU4zMgorX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZW5kaWYKK2ludCBmdW5jMSh2
b2lkKSB7CisgIHJldHVybiA0MjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2Fzc2VtYmx5L2d5cHRlc3QtYXNzZW1ibHkucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9hc3NlbWJseS9neXB0ZXN0LWFzc2VtYmx5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwZDBhMDYy
ZjlhZDE5YWZkNTcyMjYyMTQxYzU1OWIyYjUxYWEzMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hc3NlbWJseS9neXB0ZXN0LWFzc2VtYmx5LnB5CkBAIC0w
LDAgKzEsMzEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgorVmVyaWZpZXMgdGhhdCAuaHBwIGZpbGVz
IGFyZSBpZ25vcmVkIHdoZW4gaW5jbHVkZWQgaW4gdGhlIHNvdXJjZSBsaXN0IG9uIGFsbAorcGxh
dGZvcm1zLgorIiIiCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBUZXN0R3lwCisKKyMgVE9ETyhicmFk
bmVsc29uKTogZ2V0IHRoaXMgd29ya2luZyBmb3Igd2luZG93cy4KK3Rlc3QgPSBUZXN0R3lwLlRl
c3RHeXAoZm9ybWF0cz1bJ21ha2UnLCAnc2NvbnMnLCAneGNvZGUnXSkKKwordGVzdC5ydW5fZ3lw
KCdhc3NlbWJseS5neXAnLCBjaGRpcj0nc3JjJykKKwordGVzdC5yZWxvY2F0ZSgnc3JjJywgJ3Jl
bG9jYXRlL3NyYycpCisKK3Rlc3QuYnVpbGQoJ2Fzc2VtYmx5Lmd5cCcsIHRlc3QuQUxMLCBjaGRp
cj0ncmVsb2NhdGUvc3JjJykKKworZXhwZWN0ID0gIiIiXAorSGVsbG8gZnJvbSBwcm9ncmFtLmMK
K0dvdCA0Mi4KKyIiIgordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgncHJvZ3JhbScsIGNoZGly
PSdyZWxvY2F0ZS9zcmMnLCBzdGRvdXQ9ZXhwZWN0KQorCisKK3Rlc3QucGFzc190ZXN0KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Fzc2VtYmx5L3NyYy9hcy5iYXQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hc3NlbWJseS9zcmMvYXMuYmF0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBhNDczODJjYjc0Yjc2NjE4ZDgyNmJhNTcyYzU1ZjU0NmI1NWIzNTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hc3NlbWJseS9zcmMvYXMuYmF0CkBA
IC0wLDAgKzEsNCBAQAorQGVjaG8gb2ZmCis6OiBNb2NrIHdpbmRvd3MgYXNzZW1ibGVyLgorY2wg
L2MgJTEgL0ZvIiUyIgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9h
c3NlbWJseS9zcmMvYXNzZW1ibHkuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYXNz
ZW1ibHkvc3JjL2Fzc2VtYmx5Lmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzJkZDVlYzBjMGZlYjNkYTBkZjNi
MzllNGY0ZGQzNzkzOGU4NjBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvYXNzZW1ibHkvc3JjL2Fzc2VtYmx5Lmd5cApAQCAtMCwwICsxLDU5IEBACisjIENv
cHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldF9k
ZWZhdWx0cyc6IHsKKyAgICAnY29uZGl0aW9ucyc6IFsKKyAgICAgIFsnT1M9PSJ3aW4iJywgewor
ICAgICAgICAnZGVmaW5lcyc6IFsnUExBVEZPUk1fV0lOJ10sCisgICAgICB9XSwKKyAgICAgIFsn
T1M9PSJtYWMiJywgeworICAgICAgICAnZGVmaW5lcyc6IFsnUExBVEZPUk1fTUFDJ10sCisgICAg
ICB9XSwKKyAgICAgIFsnT1M9PSJsaW51eCInLCB7CisgICAgICAgICdkZWZpbmVzJzogWydQTEFU
Rk9STV9MSU5VWCddLAorICAgICAgfV0sCisgICAgXSwKKyAgfSwKKyAgJ3RhcmdldHMnOiBbCisg
ICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ3Byb2dyYW0nLAorICAgICAgJ3R5cGUnOiAnZXhl
Y3V0YWJsZScsCisgICAgICAnZGVwZW5kZW5jaWVzJzogWydsaWIxJ10sCisgICAgICAnc291cmNl
cyc6IFsKKyAgICAgICAgJ3Byb2dyYW0uYycsCisgICAgICBdLAorICAgIH0sCisgICAgeworICAg
ICAgJ3RhcmdldF9uYW1lJzogJ2xpYjEnLAorICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnkn
LAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdsaWIxLlMnLAorICAgICAgXSwKKyAgICB9
LAorICBdLAorICAnY29uZGl0aW9ucyc6IFsKKyAgICBbJ09TPT0id2luIicsIHsKKyAgICAgICd0
YXJnZXRfZGVmYXVsdHMnOiB7CisgICAgICAgICdydWxlcyc6IFsKKyAgICAgICAgICB7CisgICAg
ICAgICAgICAncnVsZV9uYW1lJzogJ2Fzc2VtYmxlcicsCisgICAgICAgICAgICAnbXN2c19jeWd3
aW5fc2hlbGwnOiAwLAorICAgICAgICAgICAgJ2V4dGVuc2lvbic6ICdTJywKKyAgICAgICAgICAg
ICdpbnB1dHMnOiBbCisgICAgICAgICAgICAgICdhcy5iYXQnLAorICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICdvdXRwdXRzJzogWworICAgICAgICAgICAgICAnPChJTlRFUk1FRElBVEVfRElS
KS88KFJVTEVfSU5QVVRfUk9PVCkub2JqJywKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAn
YWN0aW9uJzoKKyAgICAgICAgICAgICAgWydhcy5iYXQnLCAnbGliMS5jJywgJzwoX291dHB1dHMp
J10sCisgICAgICAgICAgICAnbWVzc2FnZSc6ICdCdWlsZGluZyBhc3NlbWJseSBmaWxlIDwoUlVM
RV9JTlBVVF9QQVRIKScsCisgICAgICAgICAgICAncHJvY2Vzc19vdXRwdXRzX2FzX3NvdXJjZXMn
OiAxLAorICAgICAgICAgIH0sCisgICAgICAgIF0sCisgICAgICB9LAorICAgIH0sXSwKKyAgXSwK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Fzc2VtYmx5L3NyYy9s
aWIxLlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hc3NlbWJseS9zcmMvbGliMS5TCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU3MTAyYmYyNDljNGRkOTg4ODY5YjFhMDViZDNkYTZiNzUyMjk5ODMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hc3NlbWJseS9zcmMvbGli
MS5TCkBAIC0wLDAgKzEsMTAgQEAKKyNpZiBQTEFURk9STV9XSU5ET1dTIHx8IFBMQVRGT1JNX01B
QworIyBkZWZpbmUgSURFTlRJRklFUihuKSAgXyMjbgorI2Vsc2UgLyogTGludXggKi8KKyMgZGVm
aW5lIElERU5USUZJRVIobikgIG4KKyNlbmRpZgorCisuZ2xvYmwgSURFTlRJRklFUihsaWIxX2Z1
bmN0aW9uKQorSURFTlRJRklFUihsaWIxX2Z1bmN0aW9uKToKKyAgbW92bCAkNDIsICVlYXgKKyAg
cmV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9hc3NlbWJseS9zcmMv
bGliMS5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYXNzZW1ibHkvc3JjL2xpYjEuYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iZTIxZWNkNWY2YTc2NTMyN2NmNDU1NDZlMDMyZjYwMmFkMmEyMGQyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYXNzZW1ibHkvc3JjL2xp
YjEuYwpAQCAtMCwwICsxLDMgQEAKK2ludCBsaWIxX2Z1bmN0aW9uKHZvaWQpIHsKKyAgcmV0dXJu
IDQyOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYXNzZW1ibHkv
c3JjL3Byb2dyYW0uYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Fzc2VtYmx5L3NyYy9w
cm9ncmFtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWNjZTNiMGJiYmU3MDQ0YWMwOWQ2NjQ5MGVkNjQ4MjNiOTNi
NjgyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Fzc2Vt
Ymx5L3NyYy9wcm9ncmFtLmMKQEAgLTAsMCArMSwxMiBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisK
K2V4dGVybiBpbnQgbGliMV9mdW5jdGlvbih2b2lkKTsKKworaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKmFyZ3ZbXSkKK3sKKyAgZnByaW50ZihzdGRvdXQsICJIZWxsbyBmcm9tIHByb2dyYW0uY1xu
Iik7CisgIGZmbHVzaChzdGRvdXQpOworICBmcHJpbnRmKHN0ZG91dCwgIkdvdCAlZC5cbiIsIGxp
YjFfZnVuY3Rpb24oKSk7CisgIGZmbHVzaChzdGRvdXQpOworICByZXR1cm4gMDsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL2d5cHRlc3QtYWxsLnB5
IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVpbGRkaXIvZ3lwdGVzdC1hbGwucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzI0ZDdmYzczZDkzNTE0MGVjMWM4NjQ5ZDAxM2E4OWUyZDZlZGNmNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL2d5cHRlc3Qt
YWxsLnB5CkBAIC0wLDAgKzEsNzcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHly
aWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgorVmVyaWZ5IHRoZSBz
ZXR0aW5ncyB0aGF0IGNhdXNlIGEgc2V0IG9mIHByb2dyYW1zIHRvIGJlIGNyZWF0ZWQgaW4KK2Eg
c3BlY2lmaWMgYnVpbGQgZGlyZWN0b3J5LCBhbmQgdGhhdCBubyBpbnRlcm1lZGlhdGUgYnVpbHQg
ZmlsZXMKK2dldCBjcmVhdGVkIG91dHNpZGUgb2YgdGhhdCBidWlsZCBkaXJlY3RvcnkgaGllcmFy
Y2h5IGV2ZW4gd2hlbgorcmVmZXJyZWQgdG8gd2l0aCBkZWVwbHktbmVzdGVkIC4uLy4uLy4uIHBh
dGhzLgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCisKKyMgVE9ETyhtbW9zcyk6IE1ha2Ugb25seSBz
dXBwb3J0cyAodGhlb3JldGljYWxseSkgYSBzaW5nbGUsIGdsb2JhbCBidWlsZAorIyBkaXJlY3Rv
cnkgKHRocm91Z2ggR1lQX0dFTkVSQVRPUl9GTEFHUyAnb3V0cHV0X2RpcicpLCByYXRoZXIgdGhh
bgorIyBneXAtZmlsZS1zcGVjaWZpYyBzZXR0aW5ncyAoZS5nLiB0aGUgc3R1ZmYgaW4gYnVpbGRk
aXIuZ3lwaSkgdGhhdCB0aGUgb3RoZXIKKyMgZ2VuZXJhdG9ycyBzdXBwb3J0LCBzbyB0aGlzIGRv
ZXNuJ3Qgd29yayB5ZXQgZm9yIG1ha2UuCisjIFRPRE8obW1vc3MpIE1ha2UgYWxzbyBoYXMgdGhl
IGlzc3VlIHRoYXQgdGhlIHRvcC1sZXZlbCBNYWtlZmlsZSBpcyB3cml0dGVuIHRvCisjIHRoZSAi
LS1kZXB0aCIgbG9jYXRpb24sIHdoaWNoIGlzIG9uZSBsZXZlbCBhYm92ZSAnc3JjJywgYnV0IHRo
ZW4gdGhpcyB0ZXN0CisjIG1vdmVzICdzcmMnIHNvbWV3aGVyZSBlbHNlLCBsZWF2aW5nIHRoZSBN
YWtlZmlsZSBiZWhpbmQsIHNvIG1ha2UgY2FuJ3QgZmluZAorIyBpdHMgc291cmNlcy4gSSdtIG5v
dCBzdXJlIGlmIG1ha2UgaXMgd3JvbmcgZm9yIHdyaXRpbmcgb3V0c2lkZSB0aGUgY3VycmVudAor
IyBkaXJlY3RvcnksIG9yIGlmIHRoZSB0ZXN0IGlzIHdyb25nIGZvciBhc3N1bWluZyBldmVyeXRo
aW5nIGdlbmVyYXRlZCBpcyB1bmRlcgorIyB0aGUgY3VycmVudCBkaXJlY3RvcnkuCit0ZXN0ID0g
VGVzdEd5cC5UZXN0R3lwKGZvcm1hdHM9WychbWFrZSddKQorCit0ZXN0LnJ1bl9neXAoJ3Byb2cx
Lmd5cCcsICctLWRlcHRoPS4uJywgY2hkaXI9J3NyYycpCisKK3Rlc3QucmVsb2NhdGUoJ3NyYycs
ICdyZWxvY2F0ZS9zcmMnKQorCit0ZXN0LnN1YmRpcigncmVsb2NhdGUvYnVpbGRkaXInKQorCisj
IE1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgYnVpbHQgLi4vLi4vZXRjLiBmaWxlcyBvbmx5IGdldCBw
dXQgdW5kZXIgYnVpbGRkaXIsCisjIGJ5IG1ha2luZyBhbGwgb2YgcmVsb2NhdGUgcmVhZC1vbmx5
IGFuZCB0aGVuIG1ha2luZyBvbmx5IGJ1aWxkZGlyIHdyaXRhYmxlLgordGVzdC53cml0YWJsZSgn
cmVsb2NhdGUnLCBGYWxzZSkKK3Rlc3Qud3JpdGFibGUoJ3JlbG9jYXRlL2J1aWxkZGlyJywgVHJ1
ZSkKKworIyBTdXBwcmVzcyB0aGUgdGVzdCBpbmZyYXN0cnVjdHVyZSdzIHNldHRpbmcgU1lNUk9P
VCBvbiB0aGUgY29tbWFuZCBsaW5lLgordGVzdC5idWlsZCgncHJvZzEuZ3lwJywgdGVzdC5BTEws
IFNZTVJPT1Q9Tm9uZSwgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKK2V4cGVjdDEgPSAiIiJcCitI
ZWxsbyBmcm9tIHByb2cxLmMKK0hlbGxvIGZyb20gZnVuYzEuYworIiIiCisKK2V4cGVjdDIgPSAi
IiJcCitIZWxsbyBmcm9tIHN1YmRpcjIvcHJvZzIuYworSGVsbG8gZnJvbSBmdW5jMi5jCisiIiIK
KworZXhwZWN0MyA9ICIiIlwKK0hlbGxvIGZyb20gc3ViZGlyMi9zdWJkaXIzL3Byb2czLmMKK0hl
bGxvIGZyb20gZnVuYzMuYworIiIiCisKK2V4cGVjdDQgPSAiIiJcCitIZWxsbyBmcm9tIHN1YmRp
cjIvc3ViZGlyMy9zdWJkaXI0L3Byb2c0LmMKK0hlbGxvIGZyb20gZnVuYzQuYworIiIiCisKK2V4
cGVjdDUgPSAiIiJcCitIZWxsbyBmcm9tIHN1YmRpcjIvc3ViZGlyMy9zdWJkaXI0L3N1YmRpcjUv
cHJvZzUuYworSGVsbG8gZnJvbSBmdW5jNS5jCisiIiIKKworZGVmIHJ1bl9idWlsZGRpcihwcm9n
LCBleHBlY3QpOgorICBkaXIgPSAncmVsb2NhdGUvYnVpbGRkaXIvRGVmYXVsdC8nCisgIHRlc3Qu
cnVuKHByb2dyYW09dGVzdC53b3JrcGF0aChkaXIgKyBwcm9nKSwgc3Rkb3V0PWV4cGVjdCkKKwor
cnVuX2J1aWxkZGlyKCdwcm9nMScsIGV4cGVjdDEpCitydW5fYnVpbGRkaXIoJ3Byb2cyJywgZXhw
ZWN0MikKK3J1bl9idWlsZGRpcigncHJvZzMnLCBleHBlY3QzKQorcnVuX2J1aWxkZGlyKCdwcm9n
NCcsIGV4cGVjdDQpCitydW5fYnVpbGRkaXIoJ3Byb2c1JywgZXhwZWN0NSkKKwordGVzdC5wYXNz
X3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVpbGRkaXIv
Z3lwdGVzdC1kZWZhdWx0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVpbGRkaXIv
Z3lwdGVzdC1kZWZhdWx0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNzFkMTU5NzkyNDZmZDg4MTYxZmVmMjQx
ZDNmZTM5NDUwMTc4N2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9idWlsZGRpci9neXB0ZXN0LWRlZmF1bHQucHkKQEAgLTAsMCArMSw3NyBAQAorIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKworIiIiCitWZXJpZnkgdGhlIHNldHRpbmdzIHRoYXQgY2F1c2UgYSBzZXQgb2YgcHJv
Z3JhbXMgdG8gYmUgY3JlYXRlZCBpbgorYSBzcGVjaWZpYyBidWlsZCBkaXJlY3RvcnksIGFuZCB0
aGF0IG5vIGludGVybWVkaWF0ZSBidWlsdCBmaWxlcworZ2V0IGNyZWF0ZWQgb3V0c2lkZSBvZiB0
aGF0IGJ1aWxkIGRpcmVjdG9yeSBoaWVyYXJjaHkgZXZlbiB3aGVuCityZWZlcnJlZCB0byB3aXRo
IGRlZXBseS1uZXN0ZWQgLi4vLi4vLi4gcGF0aHMuCisiIiIKKworaW1wb3J0IFRlc3RHeXAKKwor
IyBUT0RPKG1tb3NzKTogTWFrZSBvbmx5IHN1cHBvcnRzICh0aGVvcmV0aWNhbGx5KSBhIHNpbmds
ZSwgZ2xvYmFsIGJ1aWxkCisjIGRpcmVjdG9yeSAodGhyb3VnaCBHWVBfR0VORVJBVE9SX0ZMQUdT
ICdvdXRwdXRfZGlyJyksIHJhdGhlciB0aGFuCisjIGd5cC1maWxlLXNwZWNpZmljIHNldHRpbmdz
IChlLmcuIHRoZSBzdHVmZiBpbiBidWlsZGRpci5neXBpKSB0aGF0IHRoZSBvdGhlcgorIyBnZW5l
cmF0b3JzIHN1cHBvcnQsIHNvIHRoaXMgZG9lc24ndCB3b3JrIHlldCBmb3IgbWFrZS4KKyMgVE9E
TyhtbW9zcykgTWFrZSBhbHNvIGhhcyB0aGUgaXNzdWUgdGhhdCB0aGUgdG9wLWxldmVsIE1ha2Vm
aWxlIGlzIHdyaXR0ZW4gdG8KKyMgdGhlICItLWRlcHRoIiBsb2NhdGlvbiwgd2hpY2ggaXMgb25l
IGxldmVsIGFib3ZlICdzcmMnLCBidXQgdGhlbiB0aGlzIHRlc3QKKyMgbW92ZXMgJ3NyYycgc29t
ZXdoZXJlIGVsc2UsIGxlYXZpbmcgdGhlIE1ha2VmaWxlIGJlaGluZCwgc28gbWFrZSBjYW4ndCBm
aW5kCisjIGl0cyBzb3VyY2VzLiBJJ20gbm90IHN1cmUgaWYgbWFrZSBpcyB3cm9uZyBmb3Igd3Jp
dGluZyBvdXRzaWRlIHRoZSBjdXJyZW50CisjIGRpcmVjdG9yeSwgb3IgaWYgdGhlIHRlc3QgaXMg
d3JvbmcgZm9yIGFzc3VtaW5nIGV2ZXJ5dGhpbmcgZ2VuZXJhdGVkIGlzIHVuZGVyCisjIHRoZSBj
dXJyZW50IGRpcmVjdG9yeS4KK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoZm9ybWF0cz1bJyFtYWtl
J10pCisKK3Rlc3QucnVuX2d5cCgncHJvZzEuZ3lwJywgJy0tZGVwdGg9Li4nLCBjaGRpcj0nc3Jj
JykKKwordGVzdC5yZWxvY2F0ZSgnc3JjJywgJ3JlbG9jYXRlL3NyYycpCisKK3Rlc3Quc3ViZGly
KCdyZWxvY2F0ZS9idWlsZGRpcicpCisKKyMgTWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBidWlsdCAu
Li8uLi9ldGMuIGZpbGVzIG9ubHkgZ2V0IHB1dCB1bmRlciBidWlsZGRpciwKKyMgYnkgbWFraW5n
IGFsbCBvZiByZWxvY2F0ZSByZWFkLW9ubHkgYW5kIHRoZW4gbWFraW5nIG9ubHkgYnVpbGRkaXIg
d3JpdGFibGUuCit0ZXN0LndyaXRhYmxlKCdyZWxvY2F0ZScsIEZhbHNlKQordGVzdC53cml0YWJs
ZSgncmVsb2NhdGUvYnVpbGRkaXInLCBUcnVlKQorCisjIFN1cHByZXNzIHRoZSB0ZXN0IGluZnJh
c3RydWN0dXJlJ3Mgc2V0dGluZyBTWU1ST09UIG9uIHRoZSBjb21tYW5kIGxpbmUuCit0ZXN0LmJ1
aWxkKCdwcm9nMS5neXAnLCBTWU1ST09UPU5vbmUsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQorCitl
eHBlY3QxID0gIiIiXAorSGVsbG8gZnJvbSBwcm9nMS5jCitIZWxsbyBmcm9tIGZ1bmMxLmMKKyIi
IgorCitleHBlY3QyID0gIiIiXAorSGVsbG8gZnJvbSBzdWJkaXIyL3Byb2cyLmMKK0hlbGxvIGZy
b20gZnVuYzIuYworIiIiCisKK2V4cGVjdDMgPSAiIiJcCitIZWxsbyBmcm9tIHN1YmRpcjIvc3Vi
ZGlyMy9wcm9nMy5jCitIZWxsbyBmcm9tIGZ1bmMzLmMKKyIiIgorCitleHBlY3Q0ID0gIiIiXAor
SGVsbG8gZnJvbSBzdWJkaXIyL3N1YmRpcjMvc3ViZGlyNC9wcm9nNC5jCitIZWxsbyBmcm9tIGZ1
bmM0LmMKKyIiIgorCitleHBlY3Q1ID0gIiIiXAorSGVsbG8gZnJvbSBzdWJkaXIyL3N1YmRpcjMv
c3ViZGlyNC9zdWJkaXI1L3Byb2c1LmMKK0hlbGxvIGZyb20gZnVuYzUuYworIiIiCisKK2RlZiBy
dW5fYnVpbGRkaXIocHJvZywgZXhwZWN0KToKKyAgZGlyID0gJ3JlbG9jYXRlL2J1aWxkZGlyL0Rl
ZmF1bHQvJworICB0ZXN0LnJ1bihwcm9ncmFtPXRlc3Qud29ya3BhdGgoZGlyICsgcHJvZyksIHN0
ZG91dD1leHBlY3QpCisKK3J1bl9idWlsZGRpcigncHJvZzEnLCBleHBlY3QxKQorcnVuX2J1aWxk
ZGlyKCdwcm9nMicsIGV4cGVjdDIpCitydW5fYnVpbGRkaXIoJ3Byb2czJywgZXhwZWN0MykKK3J1
bl9idWlsZGRpcigncHJvZzQnLCBleHBlY3Q0KQorcnVuX2J1aWxkZGlyKCdwcm9nNScsIGV4cGVj
dDUpCisKK3Rlc3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2J1aWxkZGlyL3NyYy9idWlsZGRpci5neXBpIGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvYnVpbGRkaXIvc3JjL2J1aWxkZGlyLmd5cGkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTNjNjE0NzViNTc5
YzYxMzJhZTljMjY4M2E1MzljNmFjZTZjYTdlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL3NyYy9idWlsZGRpci5neXBpCkBAIC0wLDAgKzEs
MjEgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworewor
ICAndGFyZ2V0X2RlZmF1bHRzJzogeworICAgICdjb25maWd1cmF0aW9ucyc6IHsKKyAgICAgICdE
ZWZhdWx0JzogeworICAgICAgICAnbXN2c19jb25maWd1cmF0aW9uX2F0dHJpYnV0ZXMnOiB7Cisg
ICAgICAgICAgJ091dHB1dERpcmVjdG9yeSc6ICc8KERFUFRIKVxcYnVpbGRkaXJcRGVmYXVsdCcs
CisgICAgICAgIH0sCisgICAgICB9LAorICAgIH0sCisgIH0sCisgICdzY29uc19zZXR0aW5ncyc6
IHsKKyAgICAnc2NvbnNidWlsZF9kaXInOiAnPChERVBUSCkvYnVpbGRkaXInLAorICB9LAorICAn
eGNvZGVfc2V0dGluZ3MnOiB7CisgICAgJ1NZTVJPT1QnOiAnPChERVBUSCkvYnVpbGRkaXInLAor
ICB9LAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVpbGRkaXIv
c3JjL2Z1bmMxLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvZnVu
YzEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iOGU2YTA2OTUxYzk4NzIyNTk5MTI4ZTBjM2ZiYWQ0OWUzZDE2ZDY4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVpbGRkaXIv
c3JjL2Z1bmMxLmMKQEAgLTAsMCArMSw2IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKwordm9pZCBm
dW5jMSh2b2lkKQoreworICBwcmludGYoIkhlbGxvIGZyb20gZnVuYzEuY1xuIik7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvZnVuYzIuYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL3NyYy9mdW5jMi5jCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE0YWFiYWM0NzVhZDJmNTUwNDU5NDMwOWM4MzczYThiNDhiNzc2ODIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvZnVuYzIuYwpA
QCAtMCwwICsxLDYgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCit2b2lkIGZ1bmMyKHZvaWQpCit7
CisgIHByaW50ZigiSGVsbG8gZnJvbSBmdW5jMi5jXG4iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL3NyYy9mdW5jMy5jIGIvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvYnVpbGRkaXIvc3JjL2Z1bmMzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I0ZWRlYWU2
ZGRiZmM4MzY0YWZiYjIwZWY5OWU0MDJjYjU1NWI0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL3NyYy9mdW5jMy5jCkBAIC0wLDAgKzEsNiBA
QAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK3ZvaWQgZnVuYzModm9pZCkKK3sKKyAgcHJpbnRmKCJI
ZWxsbyBmcm9tIGZ1bmMzLmNcbiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvYnVpbGRkaXIvc3JjL2Z1bmM0LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9idWlsZGRpci9zcmMvZnVuYzQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzI4OTFiNzlhOTk5YzgzNWFlZDNl
MzQyNzlmYTJmYmMxOTI0NGJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvYnVpbGRkaXIvc3JjL2Z1bmM0LmMKQEAgLTAsMCArMSw2IEBACisjaW5jbHVkZSA8
c3RkaW8uaD4KKwordm9pZCBmdW5jNCh2b2lkKQoreworICBwcmludGYoIkhlbGxvIGZyb20gZnVu
YzQuY1xuIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWls
ZGRpci9zcmMvZnVuYzUuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL3Ny
Yy9mdW5jNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZmRmYWJiYmVkODU4ZWZlZTAxOTljYzk4Yjg0NzU1NmNk
OTQyZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWls
ZGRpci9zcmMvZnVuYzUuYwpAQCAtMCwwICsxLDYgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCit2
b2lkIGZ1bmM1KHZvaWQpCit7CisgIHByaW50ZigiSGVsbG8gZnJvbSBmdW5jNS5jXG4iKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL3NyYy9wcm9n
MS5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVpbGRkaXIvc3JjL3Byb2cxLmMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjc0Y2E3NDdiNzY5NTcxNWRlZjM3NjJlZTdlOGI4YjYwODA0NGVhYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL3NyYy9wcm9n
MS5jCkBAIC0wLDAgKzEsMTAgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCitleHRlcm4gdm9pZCBm
dW5jMSh2b2lkKTsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgcHJp
bnRmKCJIZWxsbyBmcm9tIHByb2cxLmNcbiIpOworICBmdW5jMSgpOworICByZXR1cm4gMDsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL3NyYy9wcm9n
MS5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvcHJvZzEuZ3lw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjViOTZmMDM1ZWM3MDdjMWViYTIzZGQxZTdjMmRkMTQxZmEwODUwNzgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMv
cHJvZzEuZ3lwCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKworeworICAnaW5jbHVkZXMnOiBbCisgICAgJ2J1aWxkZGlyLmd5cGkn
LAorICBdLAorICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAncHVs
bF9pbl9hbGwnLAorICAgICAgJ3R5cGUnOiAnbm9uZScsCisgICAgICAnZGVwZW5kZW5jaWVzJzog
WworICAgICAgICAncHJvZzEnLAorICAgICAgICAnc3ViZGlyMi9wcm9nMi5neXA6cHJvZzInLAor
ICAgICAgICAnc3ViZGlyMi9zdWJkaXIzL3Byb2czLmd5cDpwcm9nMycsCisgICAgICAgICdzdWJk
aXIyL3N1YmRpcjMvc3ViZGlyNC9wcm9nNC5neXA6cHJvZzQnLAorICAgICAgICAnc3ViZGlyMi9z
dWJkaXIzL3N1YmRpcjQvc3ViZGlyNS9wcm9nNS5neXA6cHJvZzUnLAorICAgICAgXSwKKyAgICB9
LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdwcm9nMScsCisgICAgICAndHlwZSc6ICdl
eGVjdXRhYmxlJywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAncHJvZzEuYycsCisgICAg
ICAgICdmdW5jMS5jJywKKyAgICAgIF0sCisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL3NyYy9zdWJkaXIyL3Byb2cyLmMgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvc3ViZGlyMi9wcm9nMi5jCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJiZGY0ZjA2MDNkNjJiMjdjZDIwNDVlMzM3NDRkZTE5OGVmM2I5NmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvc3Vi
ZGlyMi9wcm9nMi5jCkBAIC0wLDAgKzEsMTAgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCitleHRl
cm4gdm9pZCBmdW5jMih2b2lkKTsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK
K3sKKyAgcHJpbnRmKCJIZWxsbyBmcm9tIHN1YmRpcjIvcHJvZzIuY1xuIik7CisgIGZ1bmMyKCk7
CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
YnVpbGRkaXIvc3JjL3N1YmRpcjIvcHJvZzIuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvYnVpbGRkaXIvc3JjL3N1YmRpcjIvcHJvZzIuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2Mjk5YjY0NmQy
MTE2MzA3OGMzNzU3YmZiYWUzNmQwZmFjOGZmYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvc3ViZGlyMi9wcm9nMi5neXAKQEAgLTAs
MCArMSwxOSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Cit7CisgICdpbmNsdWRlcyc6IFsKKyAgICAnLi4vYnVpbGRkaXIuZ3lwaScsCisgIF0sCisgICd0
YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdwcm9nMicsCisgICAgICAn
dHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAncHJvZzIu
YycsCisgICAgICAgICcuLi9mdW5jMi5jJywKKyAgICAgIF0sCisgICAgfSwKKyAgXSwKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL3NyYy9zdWJkaXIy
L3N1YmRpcjMvcHJvZzMuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL3Ny
Yy9zdWJkaXIyL3N1YmRpcjMvcHJvZzMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGM1MzBiMjNmNWFlNTRiZjcx
M2JlNTRmYzMyZDM3NzFkN2I0MGE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvYnVpbGRkaXIvc3JjL3N1YmRpcjIvc3ViZGlyMy9wcm9nMy5jCkBAIC0wLDAg
KzEsMTAgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCitleHRlcm4gdm9pZCBmdW5jMyh2b2lkKTsK
KworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgcHJpbnRmKCJIZWxsbyBm
cm9tIHN1YmRpcjIvc3ViZGlyMy9wcm9nMy5jXG4iKTsKKyAgZnVuYzMoKTsKKyAgcmV0dXJuIDA7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMv
c3ViZGlyMi9zdWJkaXIzL3Byb2czLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1
aWxkZGlyL3NyYy9zdWJkaXIyL3N1YmRpcjMvcHJvZzMuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZGY0M2M3
YmRlOTJmMTc2N2RiODhhYjQ4NzJmMTczY2IzNDUzZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvc3ViZGlyMi9zdWJkaXIzL3Byb2cz
Lmd5cApAQCAtMCwwICsxLDE5IEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisKK3sKKyAgJ2luY2x1ZGVzJzogWworICAgICcuLi8uLi9idWlsZGRpci5neXBp
JywKKyAgXSwKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ3By
b2czJywKKyAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAorICAgICAgJ3NvdXJjZXMnOiBbCisg
ICAgICAgICdwcm9nMy5jJywKKyAgICAgICAgJy4uLy4uL2Z1bmMzLmMnLAorICAgICAgXSwKKyAg
ICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVp
bGRkaXIvc3JjL3N1YmRpcjIvc3ViZGlyMy9zdWJkaXI0L3Byb2c0LmMgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvc3ViZGlyMi9zdWJkaXIzL3N1YmRpcjQvcHJvZzQu
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kY2JhOWE5ZDRhZTY4ZDI5MDE5ZjFmNjIyNjFiNmYwMzEyNGYyNDU2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVpbGRkaXIvc3Jj
L3N1YmRpcjIvc3ViZGlyMy9zdWJkaXI0L3Byb2c0LmMKQEAgLTAsMCArMSwxMCBAQAorI2luY2x1
ZGUgPHN0ZGlvLmg+CisKK2V4dGVybiB2b2lkIGZ1bmM0KHZvaWQpOworCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhciAqYXJndltdKQoreworICBwcmludGYoIkhlbGxvIGZyb20gc3ViZGlyMi9zdWJk
aXIzL3N1YmRpcjQvcHJvZzQuY1xuIik7CisgIGZ1bmM0KCk7CisgIHJldHVybiAwOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVpbGRkaXIvc3JjL3N1YmRpcjIv
c3ViZGlyMy9zdWJkaXI0L3Byb2c0Lmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1
aWxkZGlyL3NyYy9zdWJkaXIyL3N1YmRpcjMvc3ViZGlyNC9wcm9nNC5neXAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODYyYThhMThjZDcwZjhkNjlkNDEwNjRlNTk1MDdhNzFkZmI3OGMyMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL3NyYy9zdWJkaXIyL3N1YmRp
cjMvc3ViZGlyNC9wcm9nNC5neXAKQEAgLTAsMCArMSwxOSBAQAorIyBDb3B5cmlnaHQgKGMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICdpbmNsdWRlcyc6IFsKKyAgICAnLi4v
Li4vLi4vYnVpbGRkaXIuZ3lwaScsCisgIF0sCisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAg
ICd0YXJnZXRfbmFtZSc6ICdwcm9nNCcsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAg
ICAgICdzb3VyY2VzJzogWworICAgICAgICAncHJvZzQuYycsCisgICAgICAgICcuLi8uLi8uLi9m
dW5jNC5jJywKKyAgICAgIF0sCisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2J1aWxkZGlyL3NyYy9zdWJkaXIyL3N1YmRpcjMvc3ViZGlyNC9z
dWJkaXI1L3Byb2c1LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMv
c3ViZGlyMi9zdWJkaXIzL3N1YmRpcjQvc3ViZGlyNS9wcm9nNS5jCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5MTMy
ZTU3NjMyN2QzNTAwMmI1ZTI1MDNiMDdmM2NiNGIzYzg5YTcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMvc3ViZGlyMi9zdWJkaXIzL3N1
YmRpcjQvc3ViZGlyNS9wcm9nNS5jCkBAIC0wLDAgKzEsMTAgQEAKKyNpbmNsdWRlIDxzdGRpby5o
PgorCitleHRlcm4gdm9pZCBmdW5jNSh2b2lkKTsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg
KmFyZ3ZbXSkKK3sKKyAgcHJpbnRmKCJIZWxsbyBmcm9tIHN1YmRpcjIvc3ViZGlyMy9zdWJkaXI0
L3N1YmRpcjUvcHJvZzUuY1xuIik7CisgIGZ1bmM1KCk7CisgIHJldHVybiAwOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvYnVpbGRkaXIvc3JjL3N1YmRpcjIvc3Vi
ZGlyMy9zdWJkaXI0L3N1YmRpcjUvcHJvZzUuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvYnVpbGRkaXIvc3JjL3N1YmRpcjIvc3ViZGlyMy9zdWJkaXI0L3N1YmRpcjUvcHJvZzUuZ3lw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZlMWM5Y2JmNTBmNDlhYjNiZmNkNmNhMGEyMWI1NmE3Mzc2ZmU5ZjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9idWlsZGRpci9zcmMv
c3ViZGlyMi9zdWJkaXIzL3N1YmRpcjQvc3ViZGlyNS9wcm9nNS5neXAKQEAgLTAsMCArMSwxOSBA
QAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICdp
bmNsdWRlcyc6IFsKKyAgICAnLi4vLi4vLi4vLi4vYnVpbGRkaXIuZ3lwaScsCisgIF0sCisgICd0
YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdwcm9nNScsCisgICAgICAn
dHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAncHJvZzUu
YycsCisgICAgICAgICcuLi8uLi8uLi8uLi9mdW5jNS5jJywKKyAgICAgIF0sCisgICAgfSwKKyAg
XSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NmbGFncy9jZmxh
Z3MuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NmbGFncy9jZmxhZ3MuYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMWUyNDUyMDcwYzc2NzI5MzM2Njg2NjNhMmJiMWMyYjQ4ODI4OTg1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY2ZsYWdzL2NmbGFncy5jCkBAIC0w
LDAgKzEsMTUgQEAKKy8qIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4gKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICph
cmd2W10pCit7CisjaWZkZWYgX19PUFRJTUlaRV9fCisgIHByaW50ZigiVXNpbmcgYW4gb3B0aW1p
emF0aW9uIGZsYWdcbiIpOworI2Vsc2UKKyAgcHJpbnRmKCJVc2luZyBubyBvcHRpbWl6YXRpb24g
ZmxhZ1xuIik7CisjZW5kaWYKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9jZmxhZ3MvY2ZsYWdzLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2NmbGFncy9jZmxhZ3MuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMDNmYjE2Nzk0YmMyNDhiYWU1
YWJhYzYwMDk2ZmUzMzBkZTkxNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9jZmxhZ3MvY2ZsYWdzLmd5cApAQCAtMCwwICsxLDE2IEBACisjIENvcHlyaWdo
dCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldHMnOiBbCisg
ICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2NmbGFncycsCisgICAgICAndHlwZSc6ICdleGVj
dXRhYmxlJywKKyAgICAgICdvcHQnOiAnLU9zJywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAg
ICAnY2ZsYWdzLmMnLAorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY2ZsYWdzL2d5cHRlc3QtY2ZsYWdzLnB5IGIvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvY2ZsYWdzL2d5cHRlc3QtY2ZsYWdzLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFjYzQyNGEyYzQzODNjYzZhMjNiZmViYmJiNjhhZjI3MTI0MjBiNWIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jZmxhZ3MvZ3lwdGVzdC1jZmxhZ3MucHkK
QEAgLTAsMCArMSw2NSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChj
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyBidWlsZCBvZiBh
biBleGVjdXRhYmxlIHdpdGggQysrIGRlZmluZSBzcGVjaWZpZWQgYnkgYSBneXAgZGVmaW5lLCBh
bmQKK3RoZSB1c2Ugb2YgdGhlIGVudmlyb25tZW50IGR1cmluZyByZWdlbmVyYXRpb24gd2hlbiB0
aGUgZ3lwIGZpbGUgY2hhbmdlcy4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBUZXN0R3lwCisK
K2Vudl9zdGFjayA9IFtdCisKKworZGVmIFB1c2hFbnYoKToKKyAgZW52X2NvcHkgPSBvcy5lbnZp
cm9uLmNvcHkoKQorICBlbnZfc3RhY2suYXBwZW5kKGVudl9jb3B5KQorCitkZWYgUG9wRW52KCk6
CisgIG9zLmVuaXJvbj1lbnZfc3RhY2sucG9wKCkKKworIyBSZWdlbmVyYXRpbmcgYnVpbGQgZmls
ZXMgd2hlbiBhIGd5cCBmaWxlIGNoYW5nZXMgaXMgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkCisj
IGJ5IHRoZSBtYWtlIGdlbmVyYXRvci4KK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoZm9ybWF0cz1b
J21ha2UnXSkKKwordHJ5OgorICBQdXNoRW52KCkKKyAgb3MuZW52aXJvblsnQ0ZMQUdTJ10gPSAn
LU8wJworICB0ZXN0LnJ1bl9neXAoJ2NmbGFncy5neXAnKQorZmluYWxseToKKyAgIyBXZSBjbGVh
ciB0aGUgZW52aXJvbiBhZnRlciBjYWxsaW5nIGd5cC4gIFdoZW4gdGhlIGF1dG8tcmVnZW5lcmF0
aW9uIGhhcHBlbnMsCisgICMgdGhlIHNhbWUgZGVmaW5lIHNob3VsZCBiZSByZXVzZWQgYW55d2F5
LiAgUmVzZXQgdG8gZW1wdHkgc3RyaW5nIGZpcnN0IGluCisgICMgY2FzZSB0aGUgcGxhdGZvcm0g
ZG9lc24ndCBzdXBwb3J0IHVuc2V0ZW52LgorICBQb3BFbnYoKQorCit0ZXN0LmJ1aWxkKCdjZmxh
Z3MuZ3lwJykKKworZXhwZWN0ID0gIiIiXAorVXNpbmcgbm8gb3B0aW1pemF0aW9uIGZsYWcKKyIi
IgordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgnY2ZsYWdzJywgc3Rkb3V0PWV4cGVjdCkKKwor
dGVzdC5zbGVlcCgpCisKK3RyeToKKyAgUHVzaEVudigpCisgIG9zLmVudmlyb25bJ0NGTEFHUydd
ID0gJy1PMicKKyAgdGVzdC5ydW5fZ3lwKCdjZmxhZ3MuZ3lwJykKK2ZpbmFsbHk6CisgICMgV2Ug
Y2xlYXIgdGhlIGVudmlyb24gYWZ0ZXIgY2FsbGluZyBneXAuICBXaGVuIHRoZSBhdXRvLXJlZ2Vu
ZXJhdGlvbiBoYXBwZW5zLAorICAjIHRoZSBzYW1lIGRlZmluZSBzaG91bGQgYmUgcmV1c2VkIGFu
eXdheS4gIFJlc2V0IHRvIGVtcHR5IHN0cmluZyBmaXJzdCBpbgorICAjIGNhc2UgdGhlIHBsYXRm
b3JtIGRvZXNuJ3Qgc3VwcG9ydCB1bnNldGVudi4KKyAgUG9wRW52KCkKKwordGVzdC5idWlsZCgn
Y2ZsYWdzLmd5cCcpCisKK2V4cGVjdCA9ICIiIlwKK1VzaW5nIGFuIG9wdGltaXphdGlvbiBmbGFn
CisiIiIKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ2NmbGFncycsIHN0ZG91dD1leHBlY3Qp
CisKK3Rlc3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2NvbXBpbGFibGUvZ3lwdGVzdC1oZWFkZXJzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvY29tcGlsYWJsZS9neXB0ZXN0LWhlYWRlcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTE3NjAyMTZm
YmI1NWYxZjMwYzNjZTEyMTEyMmRkYWM1YWI3MmEwNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbXBpbGFibGUvZ3lwdGVzdC1oZWFkZXJzLnB5CkBAIC0w
LDAgKzEsMjkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgorVmVyaWZpZXMgdGhhdCAuaHBwIGZpbGVz
IGFyZSBpZ25vcmVkIHdoZW4gaW5jbHVkZWQgaW4gdGhlIHNvdXJjZSBsaXN0IG9uIGFsbAorcGxh
dGZvcm1zLgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAo
KQorCit0ZXN0LnJ1bl9neXAoJ2hlYWRlcnMuZ3lwJywgY2hkaXI9J3NyYycpCisKK3Rlc3QucmVs
b2NhdGUoJ3NyYycsICdyZWxvY2F0ZS9zcmMnKQorCit0ZXN0LmJ1aWxkKCdoZWFkZXJzLmd5cCcs
IHRlc3QuQUxMLCBjaGRpcj0ncmVsb2NhdGUvc3JjJykKKworZXhwZWN0ID0gIiIiXAorSGVsbG8g
ZnJvbSBwcm9ncmFtLmMKK0hlbGxvIGZyb20gbGliMS5jCisiIiIKK3Rlc3QucnVuX2J1aWx0X2V4
ZWN1dGFibGUoJ3Byb2dyYW0nLCBjaGRpcj0ncmVsb2NhdGUvc3JjJywgc3Rkb3V0PWV4cGVjdCkK
KworCit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9jb21waWxhYmxlL3NyYy9oZWFkZXJzLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2NvbXBpbGFibGUvc3JjL2hlYWRlcnMuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2YzJhODg1N2JlOTQw
MjljNGUyZTY5YTI4NGI0ZTQ2MDc0ODkxZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9jb21waWxhYmxlL3NyYy9oZWFkZXJzLmd5cApAQCAtMCwwICsxLDI2
IEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAg
J3RhcmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ3Byb2dyYW0nLAorICAg
ICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAnZGVwZW5kZW5jaWVzJzogWworICAgICAg
ICAnbGliMScKKyAgICAgIF0sCisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ3Byb2dyYW0u
Y3BwJywKKyAgICAgIF0sCisgICAgfSwKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnbGli
MScsCisgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCisgICAgICAnc291cmNlcyc6IFsK
KyAgICAgICAgJ2xpYjEuaHBwJywKKyAgICAgICAgJ2xpYjEuY3BwJywKKyAgICAgIF0sCisgICAg
fSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbXBp
bGFibGUvc3JjL2xpYjEuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29tcGlsYWJs
ZS9zcmMvbGliMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFiYzMxYTQwYjg2ZmE3ZDE5NDQ3YmI0MjM1M2Qx
OWUwYzhmODJhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2NvbXBpbGFibGUvc3JjL2xpYjEuY3BwCkBAIC0wLDAgKzEsNyBAQAorI2luY2x1ZGUgPHN0ZGlv
Lmg+CisjaW5jbHVkZSAibGliMS5ocHAiCisKK3ZvaWQgbGliMV9mdW5jdGlvbih2b2lkKSB7Cisg
IGZwcmludGYoc3Rkb3V0LCAiSGVsbG8gZnJvbSBsaWIxLmNcbiIpOworICBmZmx1c2goc3Rkb3V0
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbXBpbGFibGUv
c3JjL2xpYjEuaHBwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29tcGlsYWJsZS9zcmMv
bGliMS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJlNjNlOGFjZGJkNzA0MDAwNWI2NDgwNWJlMmM3YjBjNzE4
ODUxZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbXBp
bGFibGUvc3JjL2xpYjEuaHBwCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfbGliMV9ocHAKKyNk
ZWZpbmUgX2xpYjFfaHBwCisKK2V4dGVybiB2b2lkIGxpYjFfZnVuY3Rpb24odm9pZCk7CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29tcGlsYWJsZS9z
cmMvcHJvZ3JhbS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb21waWxhYmxlL3Ny
Yy9wcm9ncmFtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTQyMGJhZDQzMTBiMGM2NjE5NDNmOThiYmUxMTU4
NzExNzVkODNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
Y29tcGlsYWJsZS9zcmMvcHJvZ3JhbS5jcHAKQEAgLTAsMCArMSw5IEBACisjaW5jbHVkZSA8c3Rk
aW8uaD4KKyNpbmNsdWRlICJsaWIxLmhwcCIKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy
Z3ZbXSkgeworICBmcHJpbnRmKHN0ZG91dCwgIkhlbGxvIGZyb20gcHJvZ3JhbS5jXG4iKTsKKyAg
ZmZsdXNoKHN0ZG91dCk7CisgIGxpYjFfZnVuY3Rpb24oKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9iYXNpY3Mv
Y29uZmlndXJhdGlvbnMuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRp
b25zL2Jhc2ljcy9jb25maWd1cmF0aW9ucy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjMWY5MDAxNjllYjAxNmU0
NjFhNTIxMDFhNGY1MDM3Zjc2YTU2NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9iYXNpY3MvY29uZmlndXJhdGlvbnMuYwpAQCAt
MCwwICsxLDE1IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKworaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKmFyZ3ZbXSkKK3sKKyNpZmRlZiBGT08KKyAgcHJpbnRmKCJGb28gY29uZmlndXJhdGlvblxu
Iik7CisjZW5kaWYKKyNpZmRlZiBERUJVRworICBwcmludGYoIkRlYnVnIGNvbmZpZ3VyYXRpb25c
biIpOworI2VuZGlmCisjaWZkZWYgUkVMRUFTRQorICBwcmludGYoIlJlbGVhc2UgY29uZmlndXJh
dGlvblxuIik7CisjZW5kaWYKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9iYXNpY3MvY29uZmlndXJhdGlvbnMuZ3lw
IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMvYmFzaWNzL2NvbmZp
Z3VyYXRpb25zLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2YxZDhkNWM3ZmUwOTliYmYzM2Y3YzhlYTE3YjRm
YjY3MjAzOWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
Y29uZmlndXJhdGlvbnMvYmFzaWNzL2NvbmZpZ3VyYXRpb25zLmd5cApAQCAtMCwwICsxLDMyIEBA
CisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3Rh
cmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2NvbmZpZ3VyYXRpb25zJywK
KyAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAg
ICdjb25maWd1cmF0aW9ucy5jJywKKyAgICAgIF0sCisgICAgICAnY29uZmlndXJhdGlvbnMnOiB7
CisgICAgICAgICdEZWJ1Zyc6IHsKKyAgICAgICAgICAnZGVmaW5lcyc6IFsKKyAgICAgICAgICAg
ICdERUJVRycsCisgICAgICAgICAgXSwKKyAgICAgICAgfSwKKyAgICAgICAgJ1JlbGVhc2UnOiB7
CisgICAgICAgICAgJ2RlZmluZXMnOiBbCisgICAgICAgICAgICAnUkVMRUFTRScsCisgICAgICAg
ICAgXSwKKyAgICAgICAgfSwKKyAgICAgICAgJ0Zvbyc6IHsKKyAgICAgICAgICAnZGVmaW5lcyc6
IFsKKyAgICAgICAgICAgICdGT08nLAorICAgICAgICAgIF0sCisgICAgICAgIH0sCisgICAgICB9
CisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2NvbmZpZ3VyYXRpb25zL2Jhc2ljcy9neXB0ZXN0LWNvbmZpZ3VyYXRpb25zLnB5IGIvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMvYmFzaWNzL2d5cHRlc3QtY29uZmln
dXJhdGlvbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdjZDJlODdkMjI0MzdhNmE1OWE5MzBkNTYwNTI1MWM4
Nzk0ZDUzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Nv
bmZpZ3VyYXRpb25zL2Jhc2ljcy9neXB0ZXN0LWNvbmZpZ3VyYXRpb25zLnB5CkBAIC0wLDAgKzEs
MjkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgorVmVyaWZpZXMgYnVpbGQgb2YgYW4gZXhlY3V0YWJs
ZSBpbiB0aHJlZSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMuCisiIiIKKworaW1wb3J0IFRlc3RH
eXAKKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5cCgpCisKK3Rlc3QucnVuX2d5cCgnY29uZmlndXJh
dGlvbnMuZ3lwJykKKwordGVzdC5zZXRfY29uZmlndXJhdGlvbignUmVsZWFzZScpCit0ZXN0LmJ1
aWxkKCdjb25maWd1cmF0aW9ucy5neXAnKQordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgnY29u
ZmlndXJhdGlvbnMnLCBzdGRvdXQ9IlJlbGVhc2UgY29uZmlndXJhdGlvblxuIikKKwordGVzdC5z
ZXRfY29uZmlndXJhdGlvbignRGVidWcnKQordGVzdC5idWlsZCgnY29uZmlndXJhdGlvbnMuZ3lw
JykKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ2NvbmZpZ3VyYXRpb25zJywgc3Rkb3V0PSJE
ZWJ1ZyBjb25maWd1cmF0aW9uXG4iKQorCit0ZXN0LnNldF9jb25maWd1cmF0aW9uKCdGb28nKQor
dGVzdC5idWlsZCgnY29uZmlndXJhdGlvbnMuZ3lwJykKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFi
bGUoJ2NvbmZpZ3VyYXRpb25zJywgc3Rkb3V0PSJGb28gY29uZmlndXJhdGlvblxuIikKKwordGVz
dC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29u
ZmlndXJhdGlvbnMvaW5oZXJpdGFuY2UvY29uZmlndXJhdGlvbnMuYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL2luaGVyaXRhbmNlL2NvbmZpZ3VyYXRpb25zLmMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmQ1NTY1ZWViNTQwNDg0NGZhNDFmNmRmOTg3OTI4N2ZhZTljYzRiYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25z
L2luaGVyaXRhbmNlL2NvbmZpZ3VyYXRpb25zLmMKQEAgLTAsMCArMSwyMSBAQAorI2luY2x1ZGUg
PHN0ZGlvLmg+CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisjaWZkZWYg
QkFTRQorICBwcmludGYoIkJhc2UgY29uZmlndXJhdGlvblxuIik7CisjZW5kaWYKKyNpZmRlZiBD
T01NT04KKyAgcHJpbnRmKCJDb21tb24gY29uZmlndXJhdGlvblxuIik7CisjZW5kaWYKKyNpZmRl
ZiBDT01NT04yCisgIHByaW50ZigiQ29tbW9uMiBjb25maWd1cmF0aW9uXG4iKTsKKyNlbmRpZgor
I2lmZGVmIERFQlVHCisgIHByaW50ZigiRGVidWcgY29uZmlndXJhdGlvblxuIik7CisjZW5kaWYK
KyNpZmRlZiBSRUxFQVNFCisgIHByaW50ZigiUmVsZWFzZSBjb25maWd1cmF0aW9uXG4iKTsKKyNl
bmRpZgorICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2NvbmZpZ3VyYXRpb25zL2luaGVyaXRhbmNlL2NvbmZpZ3VyYXRpb25zLmd5cCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL2luaGVyaXRhbmNlL2NvbmZpZ3Vy
YXRpb25zLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDQxMzc2YjRkMWIyYjc2ZjljNGZhZTlmYzhiYzc3ZTJi
YTE4MDFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29u
ZmlndXJhdGlvbnMvaW5oZXJpdGFuY2UvY29uZmlndXJhdGlvbnMuZ3lwCkBAIC0wLDAgKzEsNDAg
QEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAn
dGFyZ2V0X2RlZmF1bHRzJzogeworICAgICdjb25maWd1cmF0aW9ucyc6IHsKKyAgICAgICdCYXNl
JzogeworICAgICAgICAgJ2Fic3RyYWN0JzogMSwKKyAgICAgICAgICdkZWZpbmVzJzogWydCQVNF
J10sCisgICAgICB9LAorICAgICAgJ0NvbW1vbic6IHsKKyAgICAgICAgICdhYnN0cmFjdCc6IDEs
CisgICAgICAgICAnaW5oZXJpdF9mcm9tJzogWydCYXNlJ10sCisgICAgICAgICAnZGVmaW5lcyc6
IFsnQ09NTU9OJ10sCisgICAgICB9LAorICAgICAgJ0NvbW1vbjInOiB7CisgICAgICAgICAnYWJz
dHJhY3QnOiAxLAorICAgICAgICAgJ2RlZmluZXMnOiBbJ0NPTU1PTjInXSwKKyAgICAgIH0sCisg
ICAgICAnRGVidWcnOiB7CisgICAgICAgICdpbmhlcml0X2Zyb20nOiBbJ0NvbW1vbicsICdDb21t
b24yJ10sCisgICAgICAgICdkZWZpbmVzJzogWydERUJVRyddLAorICAgICAgfSwKKyAgICAgICdS
ZWxlYXNlJzogeworICAgICAgICAnaW5oZXJpdF9mcm9tJzogWydDb21tb24nLCAnQ29tbW9uMidd
LAorICAgICAgICAnZGVmaW5lcyc6IFsnUkVMRUFTRSddLAorICAgICAgfSwKKyAgICB9LAorICB9
LAorICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnY29uZmlndXJh
dGlvbnMnLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAnc291cmNlcyc6IFsK
KyAgICAgICAgJ2NvbmZpZ3VyYXRpb25zLmMnLAorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMvaW5o
ZXJpdGFuY2UvZ3lwdGVzdC1pbmhlcml0YW5jZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2NvbmZpZ3VyYXRpb25zL2luaGVyaXRhbmNlL2d5cHRlc3QtaW5oZXJpdGFuY2UucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjJjNzNhMzc1NGQ5ODI0NTE4OWYwM2E4ODNiNWM2Njk1OGI3MzNlOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL2lu
aGVyaXRhbmNlL2d5cHRlc3QtaW5oZXJpdGFuY2UucHkKQEAgLTAsMCArMSwzMyBAQAorIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKworIiIiCitWZXJpZmllcyBidWlsZCBvZiBhbiBleGVjdXRhYmxlIGluIHRocmVlIGRp
ZmZlcmVudCBjb25maWd1cmF0aW9ucy4KKyIiIgorCitpbXBvcnQgVGVzdEd5cAorCit0ZXN0ID0g
VGVzdEd5cC5UZXN0R3lwKCkKKwordGVzdC5ydW5fZ3lwKCdjb25maWd1cmF0aW9ucy5neXAnKQor
Cit0ZXN0LnNldF9jb25maWd1cmF0aW9uKCdSZWxlYXNlJykKK3Rlc3QuYnVpbGQoJ2NvbmZpZ3Vy
YXRpb25zLmd5cCcpCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdjb25maWd1cmF0aW9ucycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0oJ0Jhc2UgY29uZmlndXJhdGlvblxu
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb21tb24gY29uZmlndXJhdGlv
blxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb21tb24yIGNvbmZpZ3Vy
YXRpb25cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVsZWFzZSBjb25m
aWd1cmF0aW9uXG4nKSkKKwordGVzdC5zZXRfY29uZmlndXJhdGlvbignRGVidWcnKQordGVzdC5i
dWlsZCgnY29uZmlndXJhdGlvbnMuZ3lwJykKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ2Nv
bmZpZ3VyYXRpb25zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSgnQmFzZSBj
b25maWd1cmF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbW1v
biBjb25maWd1cmF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Nv
bW1vbjIgY29uZmlndXJhdGlvblxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdEZWJ1ZyBjb25maWd1cmF0aW9uXG4nKSkKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMvaW52YWxpZC9hY3Rp
b25zLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL2ludmFs
aWQvYWN0aW9ucy5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTZlNDIwODllYmFmM2M3NmEzODY4MWIwZDg5MzEz
ZmQzMTQyMGFlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2NvbmZpZ3VyYXRpb25zL2ludmFsaWQvYWN0aW9ucy5neXAKQEAgLTAsMCArMSwxOCBAQAorIyBD
b3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICd0YXJnZXRz
JzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdjb25maWd1cmF0aW9ucycsCisgICAg
ICAndHlwZSc6ICdub25lJywKKyAgICAgICdjb25maWd1cmF0aW9ucyc6IHsKKyAgICAgICAgJ0Rl
YnVnJzogeworICAgICAgICAgICdhY3Rpb25zJzogWworICAgICAgICAgIF0sCisgICAgICAgIH0s
CisgICAgICB9CisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL2ludmFsaWQvYWxsX2RlcGVuZGVudF9zZXR0aW5ncy5n
eXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9pbnZhbGlkL2Fs
bF9kZXBlbmRlbnRfc2V0dGluZ3MuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxNmEyNDVkZjU0NjhjNmZmZDQx
Y2YxNDJkMDMwYTMzODkyZTk2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9pbnZhbGlkL2FsbF9kZXBlbmRlbnRfc2V0dGluZ3Mu
Z3lwCkBAIC0wLDAgKzEsMTggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUn
OiAnY29uZmlndXJhdGlvbnMnLAorICAgICAgJ3R5cGUnOiAnbm9uZScsCisgICAgICAnY29uZmln
dXJhdGlvbnMnOiB7CisgICAgICAgICdEZWJ1Zyc6IHsKKyAgICAgICAgICAnYWxsX2RlcGVuZGVu
dF9zZXR0aW5ncyc6IFsKKyAgICAgICAgICBdLAorICAgICAgICB9LAorICAgICAgfQorICAgIH0s
CisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1
cmF0aW9ucy9pbnZhbGlkL2NvbmZpZ3VyYXRpb25zLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2NvbmZpZ3VyYXRpb25zL2ludmFsaWQvY29uZmlndXJhdGlvbnMuZ3lwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJjZmM5NjAwNDk4ZWM4NDYwM2VkM2Q0YzA4NzFmN2YxODhiODhiMDEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9pbnZhbGlk
L2NvbmZpZ3VyYXRpb25zLmd5cApAQCAtMCwwICsxLDE4IEBACisjIENvcHlyaWdodCAoYykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAg
ICAgJ3RhcmdldF9uYW1lJzogJ2NvbmZpZ3VyYXRpb25zJywKKyAgICAgICd0eXBlJzogJ25vbmUn
LAorICAgICAgJ2NvbmZpZ3VyYXRpb25zJzogeworICAgICAgICAnRGVidWcnOiB7CisgICAgICAg
ICAgJ2NvbmZpZ3VyYXRpb25zJzogWworICAgICAgICAgIF0sCisgICAgICAgIH0sCisgICAgICB9
CisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2NvbmZpZ3VyYXRpb25zL2ludmFsaWQvZGVwZW5kZW5jaWVzLmd5cCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL2ludmFsaWQvZGVwZW5kZW5jaWVzLmd5cApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NDYzM2YzZjExMTMzNzE0MWIzYTI5NzFjOWMyNTU1MmRkODczMDgzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMvaW52
YWxpZC9kZXBlbmRlbmNpZXMuZ3lwCkBAIC0wLDAgKzEsMTggQEAKKyMgQ29weXJpZ2h0IChjKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7Cisg
ICAgICAndGFyZ2V0X25hbWUnOiAnY29uZmlndXJhdGlvbnMnLAorICAgICAgJ3R5cGUnOiAnbm9u
ZScsCisgICAgICAnY29uZmlndXJhdGlvbnMnOiB7CisgICAgICAgICdEZWJ1Zyc6IHsKKyAgICAg
ICAgICAnZGVwZW5kZW5jaWVzJzogWworICAgICAgICAgIF0sCisgICAgICAgIH0sCisgICAgICB9
CisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2NvbmZpZ3VyYXRpb25zL2ludmFsaWQvZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncy5neXAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9pbnZhbGlkL2RpcmVjdF9k
ZXBlbmRlbnRfc2V0dGluZ3MuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhMGYyZTk1ZWE3MTM4OWMyOGQ4Yjdk
MTQ2NmM0MzM4ODNjYmQ1MmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9jb25maWd1cmF0aW9ucy9pbnZhbGlkL2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3Mu
Z3lwCkBAIC0wLDAgKzEsMTggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUn
OiAnY29uZmlndXJhdGlvbnMnLAorICAgICAgJ3R5cGUnOiAnbm9uZScsCisgICAgICAnY29uZmln
dXJhdGlvbnMnOiB7CisgICAgICAgICdEZWJ1Zyc6IHsKKyAgICAgICAgICAnZGlyZWN0X2RlcGVu
ZGVudF9zZXR0aW5ncyc6IFsKKyAgICAgICAgICBdLAorICAgICAgICB9LAorICAgICAgfQorICAg
IH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25m
aWd1cmF0aW9ucy9pbnZhbGlkL2d5cHRlc3QtY29uZmlndXJhdGlvbnMucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9pbnZhbGlkL2d5cHRlc3QtY29uZmlndXJh
dGlvbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc2Y2RlZGIwYzAwOThkNjMxZDQ0NGY2MjQ0ZGI5ODdkYjI4
YWM5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZp
Z3VyYXRpb25zL2ludmFsaWQvZ3lwdGVzdC1jb25maWd1cmF0aW9ucy5weQpAQCAtMCwwICsxLDM4
IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmaWVzIGJ1aWxkIG9mIGFuIGV4ZWN1dGFibGUg
aW4gdGhyZWUgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zLgorIiIiCisKK2ltcG9ydCBUZXN0R3lw
CisKKyMgS2V5cyB0aGF0IGRvIG5vdCBiZWxvbmcgaW5zaWRlIGEgY29uZmlndXJhdGlvbiBkaWN0
aW9uYXJ5LgoraW52YWxpZF9jb25maWd1cmF0aW9uX2tleXMgPSBbCisgICdhY3Rpb25zJywKKyAg
J2FsbF9kZXBlbmRlbnRfc2V0dGluZ3MnLAorICAnY29uZmlndXJhdGlvbnMnLAorICAnZGVwZW5k
ZW5jaWVzJywKKyAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnLAorICAnbGlicmFyaWVzJywK
KyAgJ2xpbmtfc2V0dGluZ3MnLAorICAnc291cmNlcycsCisgICd0YXJnZXRfbmFtZScsCisgICd0
eXBlJywKK10KKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5cCgpCisKK2lmIHRlc3QuZm9ybWF0ID09
ICdzY29ucyc6CisgIHRlc3Quc2tpcF90ZXN0KCdUT0RPOiBodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvZ3lwL2lzc3Vlcy9kZXRhaWw/aWQ9MTc2XG4nKQorCitmb3IgdGVzdF9rZXkgaW4gaW52YWxp
ZF9jb25maWd1cmF0aW9uX2tleXM6CisgIHRlc3QucnVuX2d5cCgnJXMuZ3lwJyAlIHRlc3Rfa2V5
LCBzdGF0dXM9MSwgc3RkZXJyPU5vbmUpCisgIGV4cGVjdCA9IFsnJXMgbm90IGFsbG93ZWQgaW4g
dGhlIERlYnVnIGNvbmZpZ3VyYXRpb24sIGZvdW5kIGluIHRhcmdldCAnCisgICAgICAgICAgICAn
JXMuZ3lwOmNvbmZpZ3VyYXRpb25zI3RhcmdldCcgJSAodGVzdF9rZXksIHRlc3Rfa2V5KV0KKyAg
dGVzdC5tdXN0X2NvbnRhaW5fYWxsX2xpbmVzKHRlc3Quc3RkZXJyKCksIGV4cGVjdCkKKwordGVz
dC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29u
ZmlndXJhdGlvbnMvaW52YWxpZC9saWJyYXJpZXMuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvY29uZmlndXJhdGlvbnMvaW52YWxpZC9saWJyYXJpZXMuZ3lwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0
MDE0ZWQ0MDY1ZGMwODI2NTUyZjllYzM1OGZiNmY4ZmExZDBjYjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9pbnZhbGlkL2xpYnJh
cmllcy5neXAKQEAgLTAsMCArMSwxOCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorCit7CisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRf
bmFtZSc6ICdjb25maWd1cmF0aW9ucycsCisgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICdj
b25maWd1cmF0aW9ucyc6IHsKKyAgICAgICAgJ0RlYnVnJzogeworICAgICAgICAgICdsaWJyYXJp
ZXMnOiBbCisgICAgICAgICAgXSwKKyAgICAgICAgfSwKKyAgICAgIH0KKyAgICB9LAorICBdLAor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMv
aW52YWxpZC9saW5rX3NldHRpbmdzLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Nv
bmZpZ3VyYXRpb25zL2ludmFsaWQvbGlua19zZXR0aW5ncy5neXAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYwZTFj
NDZmNWM5OGMyNmJkYTkyNTE0MjMzNmE1ZDc5NWY4MjllNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL2ludmFsaWQvbGlua19zZXR0
aW5ncy5neXAKQEAgLTAsMCArMSwxOCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorCit7CisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRf
bmFtZSc6ICdjb25maWd1cmF0aW9ucycsCisgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICdj
b25maWd1cmF0aW9ucyc6IHsKKyAgICAgICAgJ0RlYnVnJzogeworICAgICAgICAgICdsaW5rX3Nl
dHRpbmdzJzogWworICAgICAgICAgIF0sCisgICAgICAgIH0sCisgICAgICB9CisgICAgfSwKKyAg
XSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRp
b25zL2ludmFsaWQvc291cmNlcy5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25m
aWd1cmF0aW9ucy9pbnZhbGlkL3NvdXJjZXMuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzOGNjYTAzODE4OTY3
OGJiY2U4NWI4NzkzZDBiM2I0OTI2YWE5ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9pbnZhbGlkL3NvdXJjZXMuZ3lwCkBAIC0w
LDAgKzEsMTggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnY29uZmln
dXJhdGlvbnMnLAorICAgICAgJ3R5cGUnOiAnbm9uZScsCisgICAgICAnY29uZmlndXJhdGlvbnMn
OiB7CisgICAgICAgICdEZWJ1Zyc6IHsKKyAgICAgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAg
ICBdLAorICAgICAgICB9LAorICAgICAgfQorICAgIH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9pbnZhbGlkL3RhcmdldF9u
YW1lLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL2ludmFs
aWQvdGFyZ2V0X25hbWUuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzYmFhZDk1ZDYwMDY5ZjRkNjNhYzg2YjAy
NDE1ZTc4Njc5ZGQ2NTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9jb25maWd1cmF0aW9ucy9pbnZhbGlkL3RhcmdldF9uYW1lLmd5cApAQCAtMCwwICsxLDE4
IEBACisjIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAg
J3RhcmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2NvbmZpZ3VyYXRpb25z
JywKKyAgICAgICd0eXBlJzogJ25vbmUnLAorICAgICAgJ2NvbmZpZ3VyYXRpb25zJzogeworICAg
ICAgICAnRGVidWcnOiB7CisgICAgICAgICAgJ3RhcmdldF9uYW1lJzogWworICAgICAgICAgIF0s
CisgICAgICAgIH0sCisgICAgICB9CisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL2ludmFsaWQvdHlwZS5neXAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy9pbnZhbGlkL3R5cGUuZ3lw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJjNTU4OThiODllMDYzMzI3MDkxMmViYzYzNmI2ZmVmMTM4YjBlMWEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9u
cy9pbnZhbGlkL3R5cGUuZ3lwCkBAIC0wLDAgKzEsMTggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAg
ICAndGFyZ2V0X25hbWUnOiAnY29uZmlndXJhdGlvbnMnLAorICAgICAgJ3R5cGUnOiAnbm9uZScs
CisgICAgICAnY29uZmlndXJhdGlvbnMnOiB7CisgICAgICAgICdEZWJ1Zyc6IHsKKyAgICAgICAg
ICAndHlwZSc6IFsKKyAgICAgICAgICBdLAorICAgICAgICB9LAorICAgICAgfQorICAgIH0sCisg
IF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0
aW9ucy90YXJnZXRfcGxhdGZvcm0vY29uZmlndXJhdGlvbnMuZ3lwIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMvdGFyZ2V0X3BsYXRmb3JtL2NvbmZpZ3VyYXRpb25z
Lmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMTU0MjlmNGU1ZDdlYjMzNDIzNjlmZTBmOTM5YTM4ZWMxY2Q4ZmJm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29uZmlndXJh
dGlvbnMvdGFyZ2V0X3BsYXRmb3JtL2NvbmZpZ3VyYXRpb25zLmd5cApAQCAtMCwwICsxLDU4IEBA
CisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3Rh
cmdldF9kZWZhdWx0cyc6IHsKKyAgICAnY29uZmlndXJhdGlvbnMnOiB7CisgICAgICAnRGVidWdf
V2luMzInOiB7CisgICAgICAgICdtc3ZzX2NvbmZpZ3VyYXRpb25fcGxhdGZvcm0nOiAnV2luMzIn
LAorICAgICAgfSwKKyAgICAgICdEZWJ1Z194NjQnOiB7CisgICAgICAgICdtc3ZzX2NvbmZpZ3Vy
YXRpb25fcGxhdGZvcm0nOiAneDY0JywKKyAgICAgIH0sCisgICAgfSwKKyAgfSwKKyAgJ3Rhcmdl
dHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2xlZnQnLAorICAgICAgJ3R5cGUn
OiAnc3RhdGljX2xpYnJhcnknLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdsZWZ0LmMn
LAorICAgICAgXSwKKyAgICAgICdjb25maWd1cmF0aW9ucyc6IHsKKyAgICAgICAgJ0RlYnVnX1dp
bjMyJzogeworICAgICAgICAgICdtc3ZzX3RhcmdldF9wbGF0Zm9ybSc6ICd4NjQnLAorICAgICAg
ICB9LAorICAgICAgfSwKKyAgICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdyaWdo
dCcsCisgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCisgICAgICAnc291cmNlcyc6IFsK
KyAgICAgICAgJ3JpZ2h0LmMnLAorICAgICAgXSwKKyAgICB9LAorICAgIHsKKyAgICAgICd0YXJn
ZXRfbmFtZSc6ICdmcm9udF9sZWZ0JywKKyAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAorICAg
ICAgJ2RlcGVuZGVuY2llcyc6IFsnbGVmdCddLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAg
ICdmcm9udC5jJywKKyAgICAgIF0sCisgICAgICAnY29uZmlndXJhdGlvbnMnOiB7CisgICAgICAg
ICdEZWJ1Z19XaW4zMic6IHsKKyAgICAgICAgICAnbXN2c190YXJnZXRfcGxhdGZvcm0nOiAneDY0
JywKKyAgICAgICAgfSwKKyAgICAgIH0sCisgICAgfSwKKyAgICB7CisgICAgICAndGFyZ2V0X25h
bWUnOiAnZnJvbnRfcmlnaHQnLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAn
ZGVwZW5kZW5jaWVzJzogWydyaWdodCddLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdm
cm9udC5jJywKKyAgICAgIF0sCisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL3RhcmdldF9wbGF0Zm9ybS9mcm9udC5j
IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMvdGFyZ2V0X3BsYXRm
b3JtL2Zyb250LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJiMWQwYWEzYjkyMzRjM2YxM2M3MDk5OWE3NWUzYWUz
OTEyNjkzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Nv
bmZpZ3VyYXRpb25zL3RhcmdldF9wbGF0Zm9ybS9mcm9udC5jCkBAIC0wLDAgKzEsOCBAQAorI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisKK2NvbnN0IGNoYXIgKm1lc3NhZ2Uodm9pZCk7CisKK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgcHJpbnRmKCIlc1xuIiwgbWVzc2FnZSgpKTsK
KyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9j
b25maWd1cmF0aW9ucy90YXJnZXRfcGxhdGZvcm0vZ3lwdGVzdC10YXJnZXRfcGxhdGZvcm0ucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy90YXJnZXRfcGxhdGZv
cm0vZ3lwdGVzdC10YXJnZXRfcGxhdGZvcm0ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWU0ZTllNWEyZGZmZTIx
NDliOGMzMWQwOGYxMDE2YTRhOTllNDAxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL3RhcmdldF9wbGF0Zm9ybS9neXB0ZXN0LXRh
cmdldF9wbGF0Zm9ybS5weQpAQCAtMCwwICsxLDQwIEBACisjIS91c3IvYmluL2VudiBweXRob24K
KworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1Rl
c3RzIHRoZSBtc3ZzIHNwZWNpZmljIG1zdnNfdGFyZ2V0X3BsYXRmb3JtIG9wdGlvbi4KKyIiIgor
CitpbXBvcnQgVGVzdEd5cAoraW1wb3J0IFRlc3RDb21tb24KKworCitkZWYgUnVuWDY0KGV4ZSwg
c3Rkb3V0KToKKyAgdHJ5OgorICAgIHRlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoZXhlLCBzdGRv
dXQ9c3Rkb3V0KQorICBleGNlcHQgV2luZG93c0Vycm9yLCBlOgorICAgICMgQXNzdW1lIHRoZSBl
eGUgaXMgNjQtYml0IGlmIGl0IGNhbid0IGxvYWQgb24gMzItYml0IHN5c3RlbXMuCisgICAgIyBC
b3RoIHZlcnNpb25zIG9mIHRoZSBlcnJvciBhcmUgcmVxdWlyZWQgYmVjYXVzZSBkaWZmZXJlbnQg
dmVyc2lvbnMKKyAgICAjIG9mIHB5dGhvbiBzZWVtIHRvIHJldHVybiBkaWZmZXJlbnQgZXJyb3Jz
IGZvciBpbnZhbGlkIGV4ZSB0eXBlLgorICAgIGlmIGUuZXJybm8gIT0gMTkzIGFuZCAnW0Vycm9y
IDE5M10nIG5vdCBpbiBzdHIoZSk6CisgICAgICByYWlzZQorCisKK3Rlc3QgPSBUZXN0R3lwLlRl
c3RHeXAoZm9ybWF0cz1bJ21zdnMnXSkKKwordGVzdC5ydW5fZ3lwKCdjb25maWd1cmF0aW9ucy5n
eXAnKQorCit0ZXN0LnNldF9jb25maWd1cmF0aW9uKCdEZWJ1Z3x4NjQnKQordGVzdC5idWlsZCgn
Y29uZmlndXJhdGlvbnMuZ3lwJywgcmVidWlsZD1UcnVlKQorUnVuWDY0KCdmcm9udF9sZWZ0Jywg
c3Rkb3V0PSgnbGVmdFxuJykpCitSdW5YNjQoJ2Zyb250X3JpZ2h0Jywgc3Rkb3V0PSgncmlnaHRc
bicpKQorCit0ZXN0LnNldF9jb25maWd1cmF0aW9uKCdEZWJ1Z3xXaW4zMicpCit0ZXN0LmJ1aWxk
KCdjb25maWd1cmF0aW9ucy5neXAnLCByZWJ1aWxkPVRydWUpCitSdW5YNjQoJ2Zyb250X2xlZnQn
LCBzdGRvdXQ9KCdsZWZ0XG4nKSkKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ2Zyb250X3Jp
Z2h0Jywgc3Rkb3V0PSgncmlnaHRcbicpKQorCit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy90YXJnZXRfcGxhdGZv
cm0vbGVmdC5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMvdGFy
Z2V0X3BsYXRmb3JtL2xlZnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xY2UyZWExMjI3MjE4ZjhmMzU3NzRiNmZj
YjljMGJmNTY5N2NlZWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvY29uZmlndXJhdGlvbnMvdGFyZ2V0X3BsYXRmb3JtL2xlZnQuYwpAQCAtMCwwICsxLDMg
QEAKK2NvbnN0IGNoYXIgKm1lc3NhZ2Uodm9pZCkgeworICByZXR1cm4gImxlZnQiOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMvdGFyZ2V0
X3BsYXRmb3JtL3JpZ2h0LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0
aW9ucy90YXJnZXRfcGxhdGZvcm0vcmlnaHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTU3ODQ5MmZlNDA3ZDM3
YzI0NGVlOTFhZDZlM2IwZDM4MmY0N2I3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMvdGFyZ2V0X3BsYXRmb3JtL3JpZ2h0LmMKQEAg
LTAsMCArMSwzIEBACitjb25zdCBjaGFyICptZXNzYWdlKHZvaWQpIHsKKyAgcmV0dXJuICJyaWdo
dCI7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0
aW9ucy94NjQvY29uZmlndXJhdGlvbnMuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Nv
bmZpZ3VyYXRpb25zL3g2NC9jb25maWd1cmF0aW9ucy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyYzk3ZTMxZGE2
ZjIyMTUxZjA0MDhmMWEyMzVkY2EwZmRlNzBlYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9jb25maWd1cmF0aW9ucy94NjQvY29uZmlndXJhdGlvbnMuYwpA
QCAtMCwwICsxLDEyIEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKworaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKmFyZ3ZbXSkgeworICBpZiAoc2l6ZW9mKHZvaWQqKSA9PSA0KSB7CisgICAgcHJpbnRm
KCJSdW5uaW5nIFdpbjMyXG4iKTsKKyAgfSBlbHNlIGlmIChzaXplb2Yodm9pZCopID09IDgpIHsK
KyAgICBwcmludGYoIlJ1bm5pbmcgeDY0XG4iKTsKKyAgfSBlbHNlIHsKKyAgICBwcmludGYoIlVu
ZXhwZWN0ZWQgcGxhdGZvcm1cbiIpOworICB9CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29uZmlndXJhdGlvbnMveDY0L2NvbmZpZ3VyYXRp
b25zLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL3g2NC9j
b25maWd1cmF0aW9ucy5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZmZmEzNzU4Yjg3MjU4NTQ1YmU2YTkzZDQw
MGUyYzk3Y2YzYzQzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2NvbmZpZ3VyYXRpb25zL3g2NC9jb25maWd1cmF0aW9ucy5neXAKQEAgLTAsMCArMSwyNiBA
QAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICd0
YXJnZXRfZGVmYXVsdHMnOiB7CisgICAgJ2NvbmZpZ3VyYXRpb25zJzogeworICAgICAgJ0RlYnVn
JzogeworICAgICAgICAnbXN2c19jb25maWd1cmF0aW9uX3BsYXRmb3JtJzogJ1dpbjMyJywKKyAg
ICAgIH0sCisgICAgICAnRGVidWdfeDY0JzogeworICAgICAgICAnaW5oZXJpdF9mcm9tJzogWydE
ZWJ1ZyddLAorICAgICAgICAnbXN2c19jb25maWd1cmF0aW9uX3BsYXRmb3JtJzogJ3g2NCcsCisg
ICAgICB9LAorICAgIH0sCisgIH0sCisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJn
ZXRfbmFtZSc6ICdjb25maWd1cmF0aW9ucycsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywK
KyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAnY29uZmlndXJhdGlvbnMuYycsCisgICAgICBd
LAorICAgIH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9jb25maWd1cmF0aW9ucy94NjQvZ3lwdGVzdC14ODYucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9jb25maWd1cmF0aW9ucy94NjQvZ3lwdGVzdC14ODYucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjU0
ZWE2ZmJjMGQyZTlkNjc5ODAzNjdiNTlhNjA5YmY5YTZmZmE4NwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvbmZpZ3VyYXRpb25zL3g2NC9neXB0ZXN0LXg4
Ni5weQpAQCAtMCwwICsxLDI5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmln
aHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmaWVzIGJ1aWxk
IG9mIGFuIGV4ZWN1dGFibGUgaW4gdGhyZWUgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zLgorIiIi
CisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoZm9ybWF0cz1bJ21z
dnMnXSkKKwordGVzdC5ydW5fZ3lwKCdjb25maWd1cmF0aW9ucy5neXAnKQorCitmb3IgcGxhdGZv
cm0gaW4gWydXaW4zMicsICd4NjQnXToKKyAgdGVzdC5zZXRfY29uZmlndXJhdGlvbignRGVidWd8
JXMnICUgcGxhdGZvcm0pCisgIHRlc3QuYnVpbGQoJ2NvbmZpZ3VyYXRpb25zLmd5cCcsIHJlYnVp
bGQ9VHJ1ZSkKKyAgdHJ5OgorICAgIHRlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ2NvbmZpZ3Vy
YXRpb25zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0oJ1J1bm5pbmcg
JXNcbicgJSBwbGF0Zm9ybSkpCisgIGV4Y2VwdCBXaW5kb3dzRXJyb3IsIGU6CisgICAgIyBBc3N1
bWUgdGhlIGV4ZSBpcyA2NC1iaXQgaWYgaXQgY2FuJ3QgbG9hZCBvbiAzMi1iaXQgc3lzdGVtcy4K
KyAgICBpZiBwbGF0Zm9ybSA9PSAneDY0JyBhbmQgKGUuZXJybm8gPT0gMTkzIG9yICdbRXJyb3Ig
MTkzXScgaW4gc3RyKGUpKToKKyAgICAgIGNvbnRpbnVlCisgICAgcmFpc2UKKwordGVzdC5wYXNz
X3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzLWxp
bmsvZ3lwdGVzdC1jb3BpZXMtbGluay5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Nv
cGllcy1saW5rL2d5cHRlc3QtY29waWVzLWxpbmsucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU3YjYwMjVjZGQ1
MmM5MTExODIyOGY4MzM5NGNlZTVlNDgzNjljZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2NvcGllcy1saW5rL2d5cHRlc3QtY29waWVzLWxpbmsucHkKQEAg
LTAsMCArMSwyMSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyBmaWxlIGNvcGllcyB1
c2luZyB0aGUgYnVpbGQgdG9vbCBkZWZhdWx0LgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rl
c3QgPSBUZXN0R3lwLlRlc3RHeXAoKQorCit0ZXN0LnJ1bl9neXAoJ2NvcGllcy1saW5rLmd5cCcs
IGNoZGlyPSdzcmMnKQorCit0ZXN0LnJlbG9jYXRlKCdzcmMnLCAncmVsb2NhdGUvc3JjJykKKwor
dGVzdC5idWlsZCgnY29waWVzLWxpbmsuZ3lwJywgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKK3Rl
c3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Nv
cGllcy1saW5rL3NyYy9jb3BpZXMtbGluay5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9jb3BpZXMtbGluay9zcmMvY29waWVzLWxpbmsuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkMjUzMGE2ZWY2
ZWU3NzRmYzRiMmIwZWY5MGE3Yzc3ZTczOTc2NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9jb3BpZXMtbGluay9zcmMvY29waWVzLWxpbmsuZ3lwCkBAIC0w
LDAgKzEsNjEgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnZnVuYzEn
LAorICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAorICAgICAgJ3NvdXJjZXMnOiBbJ2Z1
bmMxLmMnXSwKKyAgICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdjbG9uZV9mdW5j
MScsCisgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICdkZXBlbmRlbmNpZXMnOiBbJ2Z1bmMx
J10sCisgICAgICAnYWN0aW9ucyc6IFsKKyAgICAgICAgeworICAgICAgICAgICdhY3Rpb25fbmFt
ZSc6ICdjbG9uaW5nIGxpYnJhcnknLAorICAgICAgICAgICdpbnB1dHMnOiBbCisgICAgICAgICAg
ICAnPChMSUJfRElSKS88KFNUQVRJQ19MSUJfUFJFRklYKWZ1bmMxPChTVEFUSUNfTElCX1NVRkZJ
WCknCisgICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0cyc6IFsnPChQUk9EVUNUX0RJUikv
YWx0ZXJuYXRlLycKKyAgICAgICAgICAgICAgICAgICAgICAnPChTVEFUSUNfTElCX1BSRUZJWClj
bG9uZWQ8KFNUQVRJQ19MSUJfU1VGRklYKSddLAorICAgICAgICAgICdkZXN0aW5hdGlvbic6ICc8
KFBST0RVQ1RfRElSKScsCisgICAgICAgICAgJ2FjdGlvbic6IFsncHl0aG9uJywgJ2NvcHkucHkn
LCAnPEAoX2lucHV0cyknLCAnPEAoX291dHB1dHMpJ10sCisgICAgICAgICAgJ21zdnNfY3lnd2lu
X3NoZWxsJzogMCwKKyAgICAgICAgfSwKKyAgICAgIF0sCisgICAgfSwKKyAgICB7CisgICAgICAn
dGFyZ2V0X25hbWUnOiAnY29weV9jbG9uZWQnLAorICAgICAgJ3R5cGUnOiAnbm9uZScsCisgICAg
ICAnZGVwZW5kZW5jaWVzJzogWydjbG9uZV9mdW5jMSddLAorICAgICAgJ2NvcGllcyc6IFsKKyAg
ICAgICAgeworICAgICAgICAgICdkZXN0aW5hdGlvbic6ICc8KExJQl9ESVIpJywKKyAgICAgICAg
ICAnZmlsZXMnOiBbCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvYWx0ZXJuYXRlLycKKyAg
ICAgICAgICAgICc8KFNUQVRJQ19MSUJfUFJFRklYKWNsb25lZDwoU1RBVElDX0xJQl9TVUZGSVgp
JywKKyAgICAgICAgICBdLAorICAgICAgICB9LAorICAgICAgXSwKKyAgICB9LAorICAgIHsKKyAg
ICAgICd0YXJnZXRfbmFtZSc6ICd1c2VfY2xvbmVkJywKKyAgICAgICd0eXBlJzogJ2V4ZWN1dGFi
bGUnLAorICAgICAgJ3NvdXJjZXMnOiBbJ21haW4uYyddLAorICAgICAgJ2RlcGVuZGVuY2llcyc6
IFsnY29weV9jbG9uZWQnXSwKKyAgICAgICdsaW5rX3NldHRpbmdzJzogeworICAgICAgICAnY29u
ZGl0aW9ucyc6IFsKKyAgICAgICAgICBbJ09TPT0id2luIicsIHsKKyAgICAgICAgICAgICdsaWJy
YXJpZXMnOiBbJy1sIjwoTElCX0RJUikvY2xvbmVkLmxpYiInXSwKKyAgICAgICAgICB9LCB7Cisg
ICAgICAgICAgICAnbGlicmFyaWVzJzogWyctbGNsb25lZCddLAorICAgICAgICAgICAgJ2xkZmxh
Z3MnOiBbJy1MIDwoTElCX0RJUiknXSwKKyAgICAgICAgICB9XSwKKyAgICAgICAgXSwKKyAgICAg
IH0sCisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2NvcGllcy1saW5rL3NyYy9jb3B5LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
Y29waWVzLWxpbmsvc3JjL2NvcHkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFkZDg3MThhMjQ4MWMyZTNhZTM1
YzBkZjIzZTI3ZWZiZjY0OWFkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2NvcGllcy1saW5rL3NyYy9jb3B5LnB5CkBAIC0wLDAgKzEsMjEgQEAKKyMhL3Vz
ci9iaW4vcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworaW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworCisKK2RlZiBtYWluKGFyZ3YpOgorICBp
ZiBsZW4oYXJndikgIT0gMzoKKyAgICBwcmludCAnVVNBR0U6IGNvcHkucHkgPHNyYz4gPGRzdD4n
CisgICAgcmV0dXJuIDEKKworICBzaHV0aWwuY29weShhcmd2WzFdLCBhcmd2WzJdKQorICByZXR1
cm4gMAorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIHN5cy5leGl0KG1haW4oc3lz
LmFyZ3YpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzLWxp
bmsvc3JjL2Z1bmMxLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb3BpZXMtbGluay9z
cmMvZnVuYzEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2VjY2RkNjZkZjYyOTAzNjY1NDVlZGYxOWZlYzgzMTY1
MzIzNjEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29w
aWVzLWxpbmsvc3JjL2Z1bmMxLmMKQEAgLTAsMCArMSw1IEBACisjaW5jbHVkZSA8c3RkaW8uaD4K
Kwordm9pZCBmdW5jMSh2b2lkKSB7CisgIHByaW50ZigiaGVsbG8gZnJvbSBmdW5jMVxuIik7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb3BpZXMtbGluay9zcmMv
bWFpbi5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzLWxpbmsvc3JjL21haW4u
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41NmZkMmYwNGFkNDQzYWVlMzYyMTcxOWQ5NTNhMWNiNzE5MDQ2ZTc4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzLWxpbmsv
c3JjL21haW4uYwpAQCAtMCwwICsxLDkgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCitleHRlcm4g
dm9pZCBmdW5jMSh2b2lkKTsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewor
ICBwcmludGYoImhlbGxvIGZyb20gbGluazFcbiIpOworICBmdW5jMSgpOworICByZXR1cm4gMDsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvcGllcy9neXB0ZXN0
LWFsbC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvcGllcy9neXB0ZXN0LWFsbC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44NTQyYWI3YjkyY2NhNzJkODM2NjFlMzlmZmQxN2VmZGZkNjcyYjBhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzL2d5cHRl
c3QtYWxsLnB5CkBAIC0wLDAgKzEsNDAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENv
cHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgorVmVyaWZpZXMg
ZmlsZSBjb3BpZXMgdXNpbmcgYW4gZXhwbGljaXQgYnVpbGQgdGFyZ2V0IG9mICdhbGwnLgorIiIi
CisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoKQorCit0ZXN0LnJ1
bl9neXAoJ2NvcGllcy5neXAnLCBjaGRpcj0nc3JjJykKKwordGVzdC5yZWxvY2F0ZSgnc3JjJywg
J3JlbG9jYXRlL3NyYycpCisKK3Rlc3QuYnVpbGQoJ2NvcGllcy5neXAnLCB0ZXN0LkFMTCwgY2hk
aXI9J3JlbG9jYXRlL3NyYycpCisKK3Rlc3QubXVzdF9tYXRjaChbJ3JlbG9jYXRlJywgJ3NyYycs
ICdjb3BpZXMtb3V0JywgJ2ZpbGUxJ10sICdmaWxlMSBjb250ZW50c1xuJykKKwordGVzdC5idWls
dF9maWxlX211c3RfbWF0Y2goJ2NvcGllcy1vdXQvZmlsZTInLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2ZpbGUyIGNvbnRlbnRzXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hkaXI9J3JlbG9jYXRlL3NyYycpCisKK3Rlc3QuYnVpbHRfZmlsZV9tdXN0X21hdGNoKCdjb3Bp
ZXMtb3V0L2RpcmVjdG9yeS9maWxlMycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmls
ZTMgY29udGVudHNcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGRpcj0ncmVsb2Nh
dGUvc3JjJykKK3Rlc3QuYnVpbHRfZmlsZV9tdXN0X21hdGNoKCdjb3BpZXMtb3V0L2RpcmVjdG9y
eS9maWxlNCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTQgY29udGVudHNcbics
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGRpcj0ncmVsb2NhdGUvc3JjJykKK3Rlc3Qu
YnVpbHRfZmlsZV9tdXN0X21hdGNoKCdjb3BpZXMtb3V0L2RpcmVjdG9yeS9zdWJkaXIvZmlsZTUn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU1IGNvbnRlbnRzXG4nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hkaXI9J3JlbG9jYXRlL3NyYycpCit0ZXN0LmJ1aWx0X2Zp
bGVfbXVzdF9tYXRjaCgnY29waWVzLW91dC9zdWJkaXIvZmlsZTYnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2ZpbGU2IGNvbnRlbnRzXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKK3Rlc3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvcGllcy9neXB0ZXN0LWRlZmF1bHQucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb3BpZXMvZ3lwdGVzdC1kZWZhdWx0LnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE1ZDFiZjljM2M0MDk1NzYwZWQ2YzAzMmY0YTJiMDQ2OWM3Y2QzNDcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb3BpZXMvZ3lwdGVzdC1kZWZh
dWx0LnB5CkBAIC0wLDAgKzEsNDAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHly
aWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgorVmVyaWZpZXMgZmls
ZSBjb3BpZXMgdXNpbmcgdGhlIGJ1aWxkIHRvb2wgZGVmYXVsdC4KKyIiIgorCitpbXBvcnQgVGVz
dEd5cAorCit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lwKCkKKwordGVzdC5ydW5fZ3lwKCdjb3BpZXMu
Z3lwJywgY2hkaXI9J3NyYycpCisKK3Rlc3QucmVsb2NhdGUoJ3NyYycsICdyZWxvY2F0ZS9zcmMn
KQorCit0ZXN0LmJ1aWxkKCdjb3BpZXMuZ3lwJywgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKK3Rl
c3QubXVzdF9tYXRjaChbJ3JlbG9jYXRlJywgJ3NyYycsICdjb3BpZXMtb3V0JywgJ2ZpbGUxJ10s
ICdmaWxlMSBjb250ZW50c1xuJykKKwordGVzdC5idWlsdF9maWxlX211c3RfbWF0Y2goJ2NvcGll
cy1vdXQvZmlsZTInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGUyIGNvbnRlbnRz
XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisK
K3Rlc3QuYnVpbHRfZmlsZV9tdXN0X21hdGNoKCdjb3BpZXMtb3V0L2RpcmVjdG9yeS9maWxlMycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTMgY29udGVudHNcbicsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGRpcj0ncmVsb2NhdGUvc3JjJykKK3Rlc3QuYnVpbHRfZmls
ZV9tdXN0X21hdGNoKCdjb3BpZXMtb3V0L2RpcmVjdG9yeS9maWxlNCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnZmlsZTQgY29udGVudHNcbicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGRpcj0ncmVsb2NhdGUvc3JjJykKK3Rlc3QuYnVpbHRfZmlsZV9tdXN0X21hdGNoKCdj
b3BpZXMtb3V0L2RpcmVjdG9yeS9zdWJkaXIvZmlsZTUnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2ZpbGU1IGNvbnRlbnRzXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hk
aXI9J3JlbG9jYXRlL3NyYycpCit0ZXN0LmJ1aWx0X2ZpbGVfbXVzdF9tYXRjaCgnY29waWVzLW91
dC9zdWJkaXIvZmlsZTYnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU2IGNvbnRl
bnRzXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkaXI9J3JlbG9jYXRlL3NyYycp
CisKK3Rlc3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2NvcGllcy9zcmMvY29waWVzLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Nv
cGllcy9zcmMvY29waWVzLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTJlMGNhYmNhNTQzMTM2MTNjMjI4Mjhm
MjFiYWE5NTUwMDY1NmI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvY29waWVzL3NyYy9jb3BpZXMuZ3lwCkBAIC0wLDAgKzEsNzAgQEAKKyMgQ29weXJpZ2h0
IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAg
ICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnY29waWVzMScsCisgICAgICAndHlwZSc6ICdub25l
JywKKyAgICAgICdjb3BpZXMnOiBbCisgICAgICAgIHsKKyAgICAgICAgICAnZGVzdGluYXRpb24n
OiAnY29waWVzLW91dCcsCisgICAgICAgICAgJ2ZpbGVzJzogWworICAgICAgICAgICAgJ2ZpbGUx
JywKKyAgICAgICAgICBdLAorICAgICAgICB9LAorICAgICAgXSwKKyAgICB9LAorICAgIHsKKyAg
ICAgICd0YXJnZXRfbmFtZSc6ICdjb3BpZXMyJywKKyAgICAgICd0eXBlJzogJ25vbmUnLAorICAg
ICAgJ2NvcGllcyc6IFsKKyAgICAgICAgeworICAgICAgICAgICdkZXN0aW5hdGlvbic6ICc8KFBS
T0RVQ1RfRElSKS9jb3BpZXMtb3V0JywKKyAgICAgICAgICAnZmlsZXMnOiBbCisgICAgICAgICAg
ICAnZmlsZTInLAorICAgICAgICAgIF0sCisgICAgICAgIH0sCisgICAgICBdLAorICAgIH0sCisg
ICAgIyBDb3B5IGEgZGlyZWN0b3J5IHRyZWUuCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzog
J2NvcGllc19yZWN1cnNpdmUnLAorICAgICAgJ3R5cGUnOiAnbm9uZScsCisgICAgICAnY29waWVz
JzogWworICAgICAgICB7CisgICAgICAgICAgJ2Rlc3RpbmF0aW9uJzogJzwoUFJPRFVDVF9ESVIp
L2NvcGllcy1vdXQnLAorICAgICAgICAgICdmaWxlcyc6IFsKKyAgICAgICAgICAgICdkaXJlY3Rv
cnkvJywKKyAgICAgICAgICBdLAorICAgICAgICB9LAorICAgICAgXSwKKyAgICB9LAorICAgICMg
Q29weSBhIGRpcmVjdG9yeSBmcm9tIGRlZXBlciBpbiB0aGUgdHJlZSAodGhpcyBzaG91bGQgbm90
IHJlcHJvZHVjZSB0aGUKKyAgICAjIGVudGlyZSBkaXJlY3RvcnkgcGF0aCBpbiB0aGUgZGVzdGlu
YXRpb24sIG9ubHkgdGhlIGZpbmFsIGRpcmVjdG9yeSkuCisgICAgeworICAgICAgJ3RhcmdldF9u
YW1lJzogJ2NvcGllc19yZWN1cnNpdmVfZGVwdGgnLAorICAgICAgJ3R5cGUnOiAnbm9uZScsCisg
ICAgICAnY29waWVzJzogWworICAgICAgICB7CisgICAgICAgICAgJ2Rlc3RpbmF0aW9uJzogJzwo
UFJPRFVDVF9ESVIpL2NvcGllcy1vdXQnLAorICAgICAgICAgICdmaWxlcyc6IFsKKyAgICAgICAg
ICAgICdwYXJlbnRkaXIvc3ViZGlyLycsCisgICAgICAgICAgXSwKKyAgICAgICAgfSwKKyAgICAg
IF0sCisgICAgfSwKKyAgICAjIFZlcmlmeSB0aGF0IGEgbnVsbCAnZmlsZXMnIGxpc3QgZG9lc24n
dCBnYWcgdGhlIGdlbmVyYXRvcnMuCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2NvcGll
c19udWxsJywKKyAgICAgICd0eXBlJzogJ25vbmUnLAorICAgICAgJ2NvcGllcyc6IFsKKyAgICAg
ICAgeworICAgICAgICAgICdkZXN0aW5hdGlvbic6ICc8KFBST0RVQ1RfRElSKS9jb3BpZXMtbnVs
bCcsCisgICAgICAgICAgJ2ZpbGVzJzogW10sCisgICAgICAgIH0sCisgICAgICBdLAorICAgIH0s
CisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb3BpZXMv
c3JjL2RpcmVjdG9yeS9maWxlMyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvcGllcy9z
cmMvZGlyZWN0b3J5L2ZpbGUzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzZjE2ZjM1MjIwNjU3OGEwNTJmZDg3MjY0
YTlkNjdiODFhMDAxOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9jb3BpZXMvc3JjL2RpcmVjdG9yeS9maWxlMwpAQCAtMCwwICsxIEBACitmaWxlMyBjb250
ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzL3NyYy9k
aXJlY3RvcnkvZmlsZTQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jb3BpZXMvc3JjL2Rp
cmVjdG9yeS9maWxlNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjcyNzBhMDg0N2NjNmQwODQwZTViOGFmOGZkOTNl
YzRiNTE5OTg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
Y29waWVzL3NyYy9kaXJlY3RvcnkvZmlsZTQKQEAgLTAsMCArMSBAQAorZmlsZTQgY29udGVudHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvcGllcy9zcmMvZGlyZWN0
b3J5L3N1YmRpci9maWxlNSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvcGllcy9zcmMv
ZGlyZWN0b3J5L3N1YmRpci9maWxlNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWY0NzE4NmJkMjE5NzI5YWViNzdi
NDYxNjA1NWJiMzdmYTI3OWY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvY29waWVzL3NyYy9kaXJlY3Rvcnkvc3ViZGlyL2ZpbGU1CkBAIC0wLDAgKzEgQEAK
K2ZpbGU1IGNvbnRlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9j
b3BpZXMvc3JjL2ZpbGUxIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzL3NyYy9m
aWxlMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44NGQ1NWM1NzU5Y2Y2Yjk1NGUxNmM1NDUyN2NhOTRhZjRjMWJjZTY5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzL3Ny
Yy9maWxlMQpAQCAtMCwwICsxIEBACitmaWxlMSBjb250ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvY29waWVzL3NyYy9maWxlMiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2NvcGllcy9zcmMvZmlsZTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYxYjhhZTM1ZGI0NjFhZGFj
ODMyNWRjN2E3MDE0NGMxZWZiMWNjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L2NvcGllcy9zcmMvZmlsZTIKQEAgLTAsMCArMSBAQAorZmlsZTIgY29udGVu
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvcGllcy9zcmMvcGFy
ZW50ZGlyL3N1YmRpci9maWxlNiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2NvcGllcy9z
cmMvcGFyZW50ZGlyL3N1YmRpci9maWxlNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWQ1NzU3MzQ4Njc3MmMyYWNj
OTM0MTdmZGU5YmZjOWFlMjkzZGUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvY29waWVzL3NyYy9wYXJlbnRkaXIvc3ViZGlyL2ZpbGU2CkBAIC0wLDAgKzEg
QEAKK2ZpbGU2IGNvbnRlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9jeHhmbGFncy9jeHhmbGFncy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2N4eGZs
YWdzL2N4eGZsYWdzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZTI0NTIwNzBjNzY3MjkzMzY2ODY2M2EyYmIx
YzJiNDg4Mjg5ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9jeHhmbGFncy9jeHhmbGFncy5jYwpAQCAtMCwwICsxLDE1IEBACisvKiBDb3B5cmlnaHQgKGMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworI2lmZGVmIF9fT1BUSU1JWkVf
XworICBwcmludGYoIlVzaW5nIGFuIG9wdGltaXphdGlvbiBmbGFnXG4iKTsKKyNlbHNlCisgIHBy
aW50ZigiVXNpbmcgbm8gb3B0aW1pemF0aW9uIGZsYWdcbiIpOworI2VuZGlmCisgIHJldHVybiAw
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY3h4ZmxhZ3MvY3h4
ZmxhZ3MuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvY3h4ZmxhZ3MvY3h4ZmxhZ3Mu
Z3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI0ZDg4M2FhZWQ2MGMyN2IwNjJmNzJjMjc2MDVjZmRhNThiYWI2MGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9jeHhmbGFncy9j
eHhmbGFncy5neXAKQEAgLTAsMCArMSwxNiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorCit7CisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJn
ZXRfbmFtZSc6ICdjeHhmbGFncycsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAg
ICdvcHQnOiAnLU9zJywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAnY3h4ZmxhZ3MuY2Mn
LAorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvY3h4ZmxhZ3MvZ3lwdGVzdC1jeHhmbGFncy5weSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L2N4eGZsYWdzL2d5cHRlc3QtY3h4ZmxhZ3MucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU1
YTZkOTQ3NGE2NWEwYzJjMjg4ZWY0YzhhYTJiODBlM2VmMTMwMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2N4eGZsYWdzL2d5cHRlc3QtY3h4ZmxhZ3MucHkK
QEAgLTAsMCArMSw2NSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChj
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyBidWlsZCBvZiBh
biBleGVjdXRhYmxlIHdpdGggQysrIGRlZmluZSBzcGVjaWZpZWQgYnkgYSBneXAgZGVmaW5lLCBh
bmQKK3RoZSB1c2Ugb2YgdGhlIGVudmlyb25tZW50IGR1cmluZyByZWdlbmVyYXRpb24gd2hlbiB0
aGUgZ3lwIGZpbGUgY2hhbmdlcy4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBUZXN0R3lwCisK
K2Vudl9zdGFjayA9IFtdCisKKworZGVmIFB1c2hFbnYoKToKKyAgZW52X2NvcHkgPSBvcy5lbnZp
cm9uLmNvcHkoKQorICBlbnZfc3RhY2suYXBwZW5kKGVudl9jb3B5KQorCitkZWYgUG9wRW52KCk6
CisgIG9zLmVuaXJvbj1lbnZfc3RhY2sucG9wKCkKKworIyBSZWdlbmVyYXRpbmcgYnVpbGQgZmls
ZXMgd2hlbiBhIGd5cCBmaWxlIGNoYW5nZXMgaXMgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkCisj
IGJ5IHRoZSBtYWtlIGdlbmVyYXRvci4KK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoZm9ybWF0cz1b
J21ha2UnXSkKKwordHJ5OgorICBQdXNoRW52KCkKKyAgb3MuZW52aXJvblsnQ1hYRkxBR1MnXSA9
ICctTzAnCisgIHRlc3QucnVuX2d5cCgnY3h4ZmxhZ3MuZ3lwJykKK2ZpbmFsbHk6CisgICMgV2Ug
Y2xlYXIgdGhlIGVudmlyb24gYWZ0ZXIgY2FsbGluZyBneXAuICBXaGVuIHRoZSBhdXRvLXJlZ2Vu
ZXJhdGlvbiBoYXBwZW5zLAorICAjIHRoZSBzYW1lIGRlZmluZSBzaG91bGQgYmUgcmV1c2VkIGFu
eXdheS4gIFJlc2V0IHRvIGVtcHR5IHN0cmluZyBmaXJzdCBpbgorICAjIGNhc2UgdGhlIHBsYXRm
b3JtIGRvZXNuJ3Qgc3VwcG9ydCB1bnNldGVudi4KKyAgUG9wRW52KCkKKwordGVzdC5idWlsZCgn
Y3h4ZmxhZ3MuZ3lwJykKKworZXhwZWN0ID0gIiIiXAorVXNpbmcgbm8gb3B0aW1pemF0aW9uIGZs
YWcKKyIiIgordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgnY3h4ZmxhZ3MnLCBzdGRvdXQ9ZXhw
ZWN0KQorCit0ZXN0LnNsZWVwKCkKKwordHJ5OgorICBQdXNoRW52KCkKKyAgb3MuZW52aXJvblsn
Q1hYRkxBR1MnXSA9ICctTzInCisgIHRlc3QucnVuX2d5cCgnY3h4ZmxhZ3MuZ3lwJykKK2ZpbmFs
bHk6CisgICMgV2UgY2xlYXIgdGhlIGVudmlyb24gYWZ0ZXIgY2FsbGluZyBneXAuICBXaGVuIHRo
ZSBhdXRvLXJlZ2VuZXJhdGlvbiBoYXBwZW5zLAorICAjIHRoZSBzYW1lIGRlZmluZSBzaG91bGQg
YmUgcmV1c2VkIGFueXdheS4gIFJlc2V0IHRvIGVtcHR5IHN0cmluZyBmaXJzdCBpbgorICAjIGNh
c2UgdGhlIHBsYXRmb3JtIGRvZXNuJ3Qgc3VwcG9ydCB1bnNldGVudi4KKyAgUG9wRW52KCkKKwor
dGVzdC5idWlsZCgnY3h4ZmxhZ3MuZ3lwJykKKworZXhwZWN0ID0gIiIiXAorVXNpbmcgYW4gb3B0
aW1pemF0aW9uIGZsYWcKKyIiIgordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgnY3h4ZmxhZ3Mn
LCBzdGRvdXQ9ZXhwZWN0KQorCit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9kZWZpbmVzLWVzY2FwaW5nL2RlZmluZXMtZXNjYXBpbmcuYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlZmluZXMtZXNjYXBpbmcvZGVmaW5lcy1lc2Nh
cGluZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ0MDc1NzIyMmU5ZmUzMzM1OWQyZjZlZTQ4MjY5NDU0ODBhNWZm
YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZWZpbmVz
LWVzY2FwaW5nL2RlZmluZXMtZXNjYXBpbmcuYwpAQCAtMCwwICsxLDExIEBACisvKiBDb3B5cmln
aHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuICovCisKKyNpbmNsdWRlIDxzdGRp
by5oPgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICBwcmludGYoVEVT
VF9GT1JNQVQsIFRFU1RfQVJHUyk7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVmaW5lcy1lc2NhcGluZy9kZWZpbmVzLWVzY2FwaW5nLmd5
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlZmluZXMtZXNjYXBpbmcvZGVmaW5lcy1l
c2NhcGluZy5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYwZjNmZGU0MWZkY2RhYTU2OTljOGY0MmY0YTUzMzQ5
N2QxZWU3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2Rl
ZmluZXMtZXNjYXBpbmcvZGVmaW5lcy1lc2NhcGluZy5neXAKQEAgLTAsMCArMSwxOSBAQAorIyBD
b3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICd0YXJnZXRz
JzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdkZWZpbmVzX2VzY2FwaW5nJywKKyAg
ICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdk
ZWZpbmVzLWVzY2FwaW5nLmMnLAorICAgICAgXSwKKyAgICAgICdkZWZpbmVzJzogWworICAgICAg
ICAnVEVTVF9GT1JNQVQ9IjwodGVzdF9mb3JtYXQpIicsCisgICAgICAgICdURVNUX0FSR1M9PCh0
ZXN0X2FyZ3MpJywKKyAgICAgIF0sCisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlZmluZXMtZXNjYXBpbmcvZ3lwdGVzdC1kZWZpbmVzLWVz
Y2FwaW5nLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVmaW5lcy1lc2NhcGluZy9n
eXB0ZXN0LWRlZmluZXMtZXNjYXBpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjk1NzRiM2IzMjdhYzljNGNi
MTBiMzY5ZjBkZjMwM2EwZmViMzE3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L2RlZmluZXMtZXNjYXBpbmcvZ3lwdGVzdC1kZWZpbmVzLWVzY2FwaW5nLnB5
CkBAIC0wLDAgKzEsMTgyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQg
KGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmaWVzIGJ1aWxkIG9m
IGFuIGV4ZWN1dGFibGUgd2l0aCBDKysgZGVmaW5lIHNwZWNpZmllZCBieSBhIGd5cCBkZWZpbmUg
dXNpbmcKK3ZhcmlvdXMgc3BlY2lhbCBjaGFyYWN0ZXJzIHN1Y2ggYXMgcXVvdGVzLCBjb21tYXMs
IGV0Yy4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lw
LlRlc3RHeXAoKQorCisjIFRlc3RzIHN0cmluZyBsaXRlcmFscywgcGVyY2VudHMsIGFuZCBiYWNr
c2xhc2ggZXNjYXBlcy4KK3RyeToKKyAgb3MuZW52aXJvblsnR1lQX0RFRklORVMnXSA9ICgKKyAg
ICAgIHIiIiJ0ZXN0X2Zvcm1hdD0nXG4lc1xuJyAiIiIKKyAgICAgIHIiIiJ0ZXN0X2FyZ3M9JyJT
aW1wbGUgdGVzdCBvZiAlcyB3aXRoIGEgbGl0ZXJhbCInIiIiKQorICB0ZXN0LnJ1bl9neXAoJ2Rl
ZmluZXMtZXNjYXBpbmcuZ3lwJykKK2ZpbmFsbHk6CisgIGRlbCBvcy5lbnZpcm9uWydHWVBfREVG
SU5FUyddCisKK3Rlc3QuYnVpbGQoJ2RlZmluZXMtZXNjYXBpbmcuZ3lwJykKKworZXhwZWN0ID0g
IiIiCitTaW1wbGUgdGVzdCBvZiAlcyB3aXRoIGEgbGl0ZXJhbAorIiIiCit0ZXN0LnJ1bl9idWls
dF9leGVjdXRhYmxlKCdkZWZpbmVzX2VzY2FwaW5nJywgc3Rkb3V0PWV4cGVjdCkKKworCisjIFRl
c3QgbXVsdGlwbGUgY29tbWEtYW5kLXNwYWNlLXNlcGFyYXRlZCBzdHJpbmcgbGl0ZXJhbHMuCit0
cnk6CisgIG9zLmVudmlyb25bJ0dZUF9ERUZJTkVTJ10gPSBcCisgICAgICByIiIidGVzdF9mb3Jt
YXQ9J1xuJXMgYW5kICVzXG4nIHRlc3RfYXJncz0nImZvbyIsICJiYXIiJyIiIgorICB0ZXN0LnJ1
bl9neXAoJ2RlZmluZXMtZXNjYXBpbmcuZ3lwJykKK2ZpbmFsbHk6CisgIGRlbCBvcy5lbnZpcm9u
WydHWVBfREVGSU5FUyddCisKK3Rlc3Quc2xlZXAoKQordGVzdC50b3VjaCgnZGVmaW5lcy1lc2Nh
cGluZy5jJykKK3Rlc3QuYnVpbGQoJ2RlZmluZXMtZXNjYXBpbmcuZ3lwJykKKworZXhwZWN0ID0g
IiIiCitmb28gYW5kIGJhcgorIiIiCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdkZWZpbmVz
X2VzY2FwaW5nJywgc3Rkb3V0PWV4cGVjdCkKKworCisjIFRlc3Qgc3RyaW5nIGxpdGVyYWxzIGNv
bnRhaW5pbmcgcXVvdGVzLgordHJ5OgorICBvcy5lbnZpcm9uWydHWVBfREVGSU5FUyddID0gKAor
ICAgICAgciIiInRlc3RfZm9ybWF0PSdcbiVzICVzICVzICVzICVzXG4nICIiIgorICAgICAgciIi
InRlc3RfYXJncz0nIlwiVGhlc2UsXCIiLCIiIgorICAgICAgICAgICAgICAgIHIiIiIgIlwid29y
ZHMsXCIiLCIiIgorICAgICAgICAgICAgICAgIHIiIiIgIlwiYXJlLFwiIiwiIiIKKyAgICAgICAg
ICAgICAgICByIiIiICJcImluLFwiIiwiIiIKKyAgICAgICAgICAgICAgICByIiIiICJcInF1b3Rl
cy5cIiInIiIiKQorICB0ZXN0LnJ1bl9neXAoJ2RlZmluZXMtZXNjYXBpbmcuZ3lwJykKK2ZpbmFs
bHk6CisgIGRlbCBvcy5lbnZpcm9uWydHWVBfREVGSU5FUyddCisKK3Rlc3Quc2xlZXAoKQordGVz
dC50b3VjaCgnZGVmaW5lcy1lc2NhcGluZy5jJykKK3Rlc3QuYnVpbGQoJ2RlZmluZXMtZXNjYXBp
bmcuZ3lwJykKKworZXhwZWN0ID0gIiIiCisiVGhlc2UsIiAid29yZHMsIiAiYXJlLCIgImluLCIg
InF1b3Rlcy4iCisiIiIKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ2RlZmluZXNfZXNjYXBp
bmcnLCBzdGRvdXQ9ZXhwZWN0KQorCisKKyMgVGVzdCBzdHJpbmcgbGl0ZXJhbHMgY29udGFpbmlu
ZyBzaW5nbGUgcXVvdGVzLgordHJ5OgorICBvcy5lbnZpcm9uWydHWVBfREVGSU5FUyddID0gKAor
ICAgICAgciIiInRlc3RfZm9ybWF0PSdcbiVzICVzICVzICVzICVzXG4nICIiIgorICAgICAgciIi
InRlc3RfYXJncz0iXCInVGhlc2UsJ1wiLCIiIgorICAgICAgICAgICAgICAgIHIiIiIgXCInd29y
ZHMsJ1wiLCIiIgorICAgICAgICAgICAgICAgIHIiIiIgXCInYXJlLCdcIiwiIiIKKyAgICAgICAg
ICAgICAgICByIiIiIFwiJ2luLCdcIiwiIiIKKyAgICAgICAgICAgICAgICByIiIiIFwiJ3F1b3Rl
cy4nXCIiICIiIikKKyAgdGVzdC5ydW5fZ3lwKCdkZWZpbmVzLWVzY2FwaW5nLmd5cCcpCitmaW5h
bGx5OgorICBkZWwgb3MuZW52aXJvblsnR1lQX0RFRklORVMnXQorCit0ZXN0LnNsZWVwKCkKK3Rl
c3QudG91Y2goJ2RlZmluZXMtZXNjYXBpbmcuYycpCit0ZXN0LmJ1aWxkKCdkZWZpbmVzLWVzY2Fw
aW5nLmd5cCcpCisKK2V4cGVjdCA9ICIiIgorJ1RoZXNlLCcgJ3dvcmRzLCcgJ2FyZSwnICdpbiwn
ICdxdW90ZXMuJworIiIiCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdkZWZpbmVzX2VzY2Fw
aW5nJywgc3Rkb3V0PWV4cGVjdCkKKworCisjIFRlc3Qgc3RyaW5nIGxpdGVyYWxzIGNvbnRhaW5p
bmcgZGlmZmVyZW50IG51bWJlcnMgb2YgYmFja3NsYXNoZXMgYmVmb3JlIHF1b3RlcworIyAodG8g
ZXhlcmNpc2UgV2luZG93cycgcXVvdGluZyBiZWhhdmlvdXIpLgordHJ5OgorICBvcy5lbnZpcm9u
WydHWVBfREVGSU5FUyddID0gKAorICAgICAgciIiInRlc3RfZm9ybWF0PSdcbiVzXG4lc1xuJXNc
bicgIiIiCisgICAgICByIiIidGVzdF9hcmdzPSciXFxcIjEgdmlzaWJsZSBzbGFzaFxcXCIiLCIi
IgorICAgICAgICAgICAgICAgIHIiIiIgIlxcXFxcIjIgdmlzaWJsZSBzbGFzaGVzXFxcXFwiIiwi
IiIKKyAgICAgICAgICAgICAgICByIiIiICJcXFxcXFxcIjMgdmlzaWJsZSBzbGFzaGVzXFxcXFxc
XCIiJyIiIikKKyAgdGVzdC5ydW5fZ3lwKCdkZWZpbmVzLWVzY2FwaW5nLmd5cCcpCitmaW5hbGx5
OgorICBkZWwgb3MuZW52aXJvblsnR1lQX0RFRklORVMnXQorCit0ZXN0LnNsZWVwKCkKK3Rlc3Qu
dG91Y2goJ2RlZmluZXMtZXNjYXBpbmcuYycpCit0ZXN0LmJ1aWxkKCdkZWZpbmVzLWVzY2FwaW5n
Lmd5cCcpCisKK2V4cGVjdCA9IHIiIiIKK1wiMSB2aXNpYmxlIHNsYXNoXCIKK1xcIjIgdmlzaWJs
ZSBzbGFzaGVzXFwiCitcXFwiMyB2aXNpYmxlIHNsYXNoZXNcXFwiCisiIiIKK3Rlc3QucnVuX2J1
aWx0X2V4ZWN1dGFibGUoJ2RlZmluZXNfZXNjYXBpbmcnLCBzdGRvdXQ9ZXhwZWN0KQorCisKKyMg
VGVzdCB0aGF0IHZhcmlvdXMgc2Nhcnkgc2VxdWVuY2VzIGFyZSBwYXNzZWQgdW5mZXR0ZXJlZC4K
K3RyeToKKyAgb3MuZW52aXJvblsnR1lQX0RFRklORVMnXSA9ICgKKyAgICAgIHIiIiJ0ZXN0X2Zv
cm1hdD0nXG4lc1xuJyAiIiIKKyAgICAgIHIiIiJ0ZXN0X2FyZ3M9JyIkZm9vLCAmcXVvdDsgYGZv
b2A7IiciIiIpCisgIHRlc3QucnVuX2d5cCgnZGVmaW5lcy1lc2NhcGluZy5neXAnKQorZmluYWxs
eToKKyAgZGVsIG9zLmVudmlyb25bJ0dZUF9ERUZJTkVTJ10KKwordGVzdC5zbGVlcCgpCit0ZXN0
LnRvdWNoKCdkZWZpbmVzLWVzY2FwaW5nLmMnKQordGVzdC5idWlsZCgnZGVmaW5lcy1lc2NhcGlu
Zy5neXAnKQorCitleHBlY3QgPSAiIiIKKyRmb28sICZxdW90OyBgZm9vYDsKKyIiIgordGVzdC5y
dW5fYnVpbHRfZXhlY3V0YWJsZSgnZGVmaW5lc19lc2NhcGluZycsIHN0ZG91dD1leHBlY3QpCisK
KworIyBWaXN1YWxTdHVkaW8gMjAxMCBjYW4ndCBoYW5kbGUgcGFzc2luZyAlUEFUSCUKK2lmIG5v
dCAodGVzdC5mb3JtYXQgPT0gJ21zdnMnIGFuZCB0ZXN0LnVzZXNfbXNidWlsZCk6CisgIHRyeToK
KyAgICBvcy5lbnZpcm9uWydHWVBfREVGSU5FUyddID0gKAorICAgICAgICAiIiJ0ZXN0X2Zvcm1h
dD0nJXMnICIiIgorICAgICAgICAiIiJ0ZXN0X2FyZ3M9JyIlUEFUSCUiJyIiIikKKyAgICB0ZXN0
LnJ1bl9neXAoJ2RlZmluZXMtZXNjYXBpbmcuZ3lwJykKKyAgZmluYWxseToKKyAgICBkZWwgb3Mu
ZW52aXJvblsnR1lQX0RFRklORVMnXQorCisgIHRlc3Quc2xlZXAoKQorICB0ZXN0LnRvdWNoKCdk
ZWZpbmVzLWVzY2FwaW5nLmMnKQorICB0ZXN0LmJ1aWxkKCdkZWZpbmVzLWVzY2FwaW5nLmd5cCcp
CisKKyAgZXhwZWN0ID0gIiVQQVRIJSIKKyAgdGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgnZGVm
aW5lc19lc2NhcGluZycsIHN0ZG91dD1leHBlY3QpCisKKworIyBUZXN0IGNvbW1hcyBhbmQgc2Vt
aS1jb2xvbnMgcHJlY2VkZWQgYnkgYmFja3NsYXNoZXMgKHRvIGV4ZXJjaXNlIFdpbmRvd3MnCisj
IHF1b3RpbmcgYmVoYXZpb3VyKS4KK3RyeToKKyAgb3MuZW52aXJvblsnR1lQX0RFRklORVMnXSA9
ICgKKyAgICAgIHIiIiJ0ZXN0X2Zvcm1hdD0nXG4lc1xuJXNcbicgIiIiCisgICAgICByIiIidGVz
dF9hcmdzPSciXFwsIFxcXFw7IiwiIiIKKyAgICAgICAgICAgICAgICAjIFNhbWUgdGhpbmcgYWdh
aW4sIGJ1dCBlbmNsb3NlZCBpbiB2aXNpYmxlIHF1b3Rlcy4KKyAgICAgICAgICAgICAgICByIiIi
ICJcIlxcLCBcXFxcO1wiIiciIiIpCisgIHRlc3QucnVuX2d5cCgnZGVmaW5lcy1lc2NhcGluZy5n
eXAnKQorZmluYWxseToKKyAgZGVsIG9zLmVudmlyb25bJ0dZUF9ERUZJTkVTJ10KKwordGVzdC5z
bGVlcCgpCit0ZXN0LnRvdWNoKCdkZWZpbmVzLWVzY2FwaW5nLmMnKQordGVzdC5idWlsZCgnZGVm
aW5lcy1lc2NhcGluZy5neXAnKQorCitleHBlY3QgPSByIiIiCitcLCBcXDsKKyJcLCBcXDsiCisi
IiIKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ2RlZmluZXNfZXNjYXBpbmcnLCBzdGRvdXQ9
ZXhwZWN0KQorCisjIFdlIGRlbGliZXJhdGVseSBkbyBub3QgdGVzdCBoYXZpbmcgYW4gb2RkIG51
bWJlciBvZiBxdW90ZXMgaW4gYSBzdHJpbmcKKyMgbGl0ZXJhbCBiZWNhdXNlIHRoYXQgaXNuJ3Qg
ZmVhc2libGUgaW4gTVNWUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2RlZmluZXMvZGVmaW5lcy1lbnYuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVm
aW5lcy9kZWZpbmVzLWVudi5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc4MTU0NmFlMDg3MWMxYjUwM2VmODQx
Y2I3ZjZiNmIwMDk3YmU1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2RlZmluZXMvZGVmaW5lcy1lbnYuZ3lwCkBAIC0wLDAgKzEsMjIgQEAKKyMgQ29weXJp
Z2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndmFyaWFibGVzJzog
eworICAgICd2YWx1ZSUnOiAnNScsCisgIH0sCisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAg
ICd0YXJnZXRfbmFtZSc6ICdkZWZpbmVzJywKKyAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAor
ICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdkZWZpbmVzLmMnLAorICAgICAgXSwKKyAgICAg
ICdkZWZpbmVzJzogWworICAgICAgICAnVkFMVUU9PCh2YWx1ZSknLAorICAgICAgXSwKKyAgICB9
LAorICBdLAorfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZWZp
bmVzL2RlZmluZXMuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlZmluZXMvZGVmaW5l
cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjMzNjU3YWMyYzViYTY3ZjBmZjYwMmFiNDY0Nzg4MDkyMWJhMTkxYzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZWZpbmVzL2Rl
ZmluZXMuYwpAQCAtMCwwICsxLDE0IEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhciAqYXJndltdKQoreworI2lmZGVmIEZPTworICBwcmludGYoIkZPTyBpcyBkZWZp
bmVkXG4iKTsKKyNlbmRpZgorICBwcmludGYoIlZBTFVFIGlzICVkXG4iLCBWQUxVRSk7CisgIHJl
dHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVmaW5l
cy9kZWZpbmVzLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlZmluZXMvZGVmaW5l
cy5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2RiNjZlNTRjY2E3ZTQzZGJjYTEyNDExMGQ0OWI1NmRkODYxYWRh
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlZmluZXMv
ZGVmaW5lcy5neXAKQEAgLTAsMCArMSwzNiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorCit7CisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJn
ZXRfbmFtZSc6ICdkZWZpbmVzJywKKyAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAorICAgICAg
J3NvdXJjZXMnOiBbCisgICAgICAgICdkZWZpbmVzLmMnLAorICAgICAgXSwKKyAgICAgICdkZWZp
bmVzJzogWworICAgICAgICAnRk9PJywKKyAgICAgICAgJ1ZBTFVFPTEnLAorICAgICAgXSwKKyAg
ICB9LAorICBdLAorICAnY29uZGl0aW9ucyc6IFsKKyAgICBbJ09TPT0iZmFrZW9zIicsIHsKKyAg
ICAgICd0YXJnZXRzJzogWworICAgICAgICB7CisgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2Zh
a2Vvc3Byb2dyYW0nLAorICAgICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAorICAgICAgICAg
ICdzb3VyY2VzJzogWworICAgICAgICAgICAgJ2RlZmluZXMuYycsCisgICAgICAgICAgXSwKKyAg
ICAgICAgICAnZGVmaW5lcyc6IFsKKyAgICAgICAgICAgICdGT08nLAorICAgICAgICAgICAgJ1ZB
TFVFPTEnLAorICAgICAgICAgIF0sCisgICAgICAgIH0sCisgICAgICBdLAorICAgIH1dLAorICBd
LAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVmaW5lcy9neXB0
ZXN0LWRlZmluZS1vdmVycmlkZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlZmlu
ZXMvZ3lwdGVzdC1kZWZpbmUtb3ZlcnJpZGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJlMzI1YWYyY2U3Y2E1
MjNkZTU5NGQ1MDU0N2M1ZmM0MzI2Y2ZhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2RlZmluZXMvZ3lwdGVzdC1kZWZpbmUtb3ZlcnJpZGUucHkKQEAgLTAs
MCArMSwzNCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyB0aGF0IGEgZGVmYXVsdCBn
eXAgZGVmaW5lIGNhbiBiZSBvdmVycmlkZGVuLgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IFRl
c3RHeXAKKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5cCgpCisKKyMgQ29tbWFuZC1saW5lIGRlZmlu
ZQordGVzdC5ydW5fZ3lwKCdkZWZpbmVzLmd5cCcsICctRCcsICdPUz1mYWtlb3MnKQordGVzdC5i
dWlsZCgnZGVmaW5lcy5neXAnKQordGVzdC5idWlsdF9maWxlX211c3RfZXhpc3QoJ2Zha2Vvc3By
b2dyYW0nLCB0eXBlPXRlc3QuRVhFQ1VUQUJMRSkKKyMgQ2xlYW4gdXAgdGhlIGV4ZSBzbyBzdWJz
ZXF1ZW50IHRlc3RzIGRvbid0IGZpbmQgYW4gb2xkIGV4ZS4KK29zLnJlbW92ZSh0ZXN0LmJ1aWx0
X2ZpbGVfcGF0aCgnZmFrZW9zcHJvZ3JhbScsIHR5cGU9dGVzdC5FWEVDVVRBQkxFKSkKKworIyBX
aXRob3V0ICJPUyIgb3ZlcnJpZGUsIGZva2Vvc3Byb2dyYW0gc2hvdWxkbid0IGJlIGJ1aWx0Lgor
dGVzdC5ydW5fZ3lwKCdkZWZpbmVzLmd5cCcpCit0ZXN0LmJ1aWxkKCdkZWZpbmVzLmd5cCcpCit0
ZXN0LmJ1aWx0X2ZpbGVfbXVzdF9ub3RfZXhpc3QoJ2Zha2Vvc3Byb2dyYW0nLCB0eXBlPXRlc3Qu
RVhFQ1VUQUJMRSkKKworIyBFbnZpcm9ubWVudCBkZWZpbmUKK29zLmVudmlyb25bJ0dZUF9ERUZJ
TkVTJ10gPSAnT1M9ZmFrZW9zJwordGVzdC5ydW5fZ3lwKCdkZWZpbmVzLmd5cCcpCit0ZXN0LmJ1
aWxkKCdkZWZpbmVzLmd5cCcpCit0ZXN0LmJ1aWx0X2ZpbGVfbXVzdF9leGlzdCgnZmFrZW9zcHJv
Z3JhbScsIHR5cGU9dGVzdC5FWEVDVVRBQkxFKQorCit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZWZpbmVzL2d5cHRlc3QtZGVmaW5lcy1l
bnYtcmVneXAucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZWZpbmVzL2d5cHRlc3Qt
ZGVmaW5lcy1lbnYtcmVneXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBjOWJhNzgwZDE1ZDllOTI5OTQwZmEx
ZjJhZDc2NDQ0N2I3MjQ3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2RlZmluZXMvZ3lwdGVzdC1kZWZpbmVzLWVudi1yZWd5cC5weQpAQCAtMCwwICsxLDQ5
IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmaWVzIGJ1aWxkIG9mIGFuIGV4ZWN1dGFibGUg
d2l0aCBDKysgZGVmaW5lIHNwZWNpZmllZCBieSBhIGd5cCBkZWZpbmUsIGFuZAordGhlIHVzZSBv
ZiB0aGUgZW52aXJvbm1lbnQgZHVyaW5nIHJlZ2VuZXJhdGlvbiB3aGVuIHRoZSBneXAgZmlsZSBj
aGFuZ2VzLgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IFRlc3RHeXAKKworIyBSZWdlbmVyYXRp
bmcgYnVpbGQgZmlsZXMgd2hlbiBhIGd5cCBmaWxlIGNoYW5nZXMgaXMgY3VycmVudGx5IG9ubHkg
c3VwcG9ydGVkCisjIGJ5IHRoZSBtYWtlIGdlbmVyYXRvci4KK3Rlc3QgPSBUZXN0R3lwLlRlc3RH
eXAoZm9ybWF0cz1bJ21ha2UnXSkKKwordHJ5OgorICBvcy5lbnZpcm9uWydHWVBfREVGSU5FUydd
ID0gJ3ZhbHVlPTUwJworICB0ZXN0LnJ1bl9neXAoJ2RlZmluZXMuZ3lwJykKK2ZpbmFsbHk6Cisg
ICMgV2UgY2xlYXIgdGhlIGVudmlyb24gYWZ0ZXIgY2FsbGluZyBneXAuICBXaGVuIHRoZSBhdXRv
LXJlZ2VuZXJhdGlvbiBoYXBwZW5zLAorICAjIHRoZSBzYW1lIGRlZmluZSBzaG91bGQgYmUgcmV1
c2VkIGFueXdheS4gIFJlc2V0IHRvIGVtcHR5IHN0cmluZyBmaXJzdCBpbgorICAjIGNhc2UgdGhl
IHBsYXRmb3JtIGRvZXNuJ3Qgc3VwcG9ydCB1bnNldGVudi4KKyAgb3MuZW52aXJvblsnR1lQX0RF
RklORVMnXSA9ICcnCisgIGRlbCBvcy5lbnZpcm9uWydHWVBfREVGSU5FUyddCisKK3Rlc3QuYnVp
bGQoJ2RlZmluZXMuZ3lwJykKKworZXhwZWN0ID0gIiIiXAorRk9PIGlzIGRlZmluZWQKK1ZBTFVF
IGlzIDEKKyIiIgordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgnZGVmaW5lcycsIHN0ZG91dD1l
eHBlY3QpCisKKyMgU2xlZXAgc28gdGhhdCB0aGUgY2hhbmdlZCBneXAgZmlsZSB3aWxsIGhhdmUg
YSBuZXdlciB0aW1lc3RhbXAgdGhhbiB0aGUKKyMgcHJldmlvdXNseSBnZW5lcmF0ZWQgYnVpbGQg
ZmlsZXMuCit0ZXN0LnNsZWVwKCkKK3Rlc3Qud3JpdGUoJ2RlZmluZXMuZ3lwJywgdGVzdC5yZWFk
KCdkZWZpbmVzLWVudi5neXAnKSkKKwordGVzdC5idWlsZCgnZGVmaW5lcy5neXAnLCB0ZXN0LkFM
TCkKKworZXhwZWN0ID0gIiIiXAorVkFMVUUgaXMgNTAKKyIiIgordGVzdC5ydW5fYnVpbHRfZXhl
Y3V0YWJsZSgnZGVmaW5lcycsIHN0ZG91dD1leHBlY3QpCisKK3Rlc3QucGFzc190ZXN0KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlZmluZXMvZ3lwdGVzdC1kZWZp
bmVzLWVudi5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlZmluZXMvZ3lwdGVzdC1k
ZWZpbmVzLWVudi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjRlNzE3NWE2ZDRkN2FkMDBkZjBlYWFmMTYzZTY3
YmIyNGEzYmFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
ZGVmaW5lcy9neXB0ZXN0LWRlZmluZXMtZW52LnB5CkBAIC0wLDAgKzEsODUgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisKKyIiIgorVmVyaWZpZXMgYnVpbGQgb2YgYW4gZXhlY3V0YWJsZSB3aXRoIEMrKyBkZWZp
bmUgc3BlY2lmaWVkIGJ5IGEgZ3lwIGRlZmluZS4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBU
ZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoKQorCisjIFdpdGggdGhlIHZhbHVlIG9u
bHkgZ2l2ZW4gaW4gZW52aXJvbm1lbnQsIGl0IHNob3VsZCBiZSB1c2VkLgordHJ5OgorICBvcy5l
bnZpcm9uWydHWVBfREVGSU5FUyddID0gJ3ZhbHVlPTEwJworICB0ZXN0LnJ1bl9neXAoJ2RlZmlu
ZXMtZW52Lmd5cCcpCitmaW5hbGx5OgorICBkZWwgb3MuZW52aXJvblsnR1lQX0RFRklORVMnXQor
Cit0ZXN0LmJ1aWxkKCdkZWZpbmVzLWVudi5neXAnKQorCitleHBlY3QgPSAiIiJcCitWQUxVRSBp
cyAxMAorIiIiCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdkZWZpbmVzJywgc3Rkb3V0PWV4
cGVjdCkKKworCisjIFdpdGggdGhlIHZhbHVlIGdpdmVuIGluIGJvdGggY29tbWFuZCBsaW5lIGFu
ZCBlbnZpcm9ubWVudCwKKyMgY29tbWFuZCBsaW5lIHNob3VsZCB0YWtlIHByZWNlZGVuY2UuCit0
cnk6CisgIG9zLmVudmlyb25bJ0dZUF9ERUZJTkVTJ10gPSAndmFsdWU9MjAnCisgIHRlc3QucnVu
X2d5cCgnZGVmaW5lcy1lbnYuZ3lwJywgJy1EdmFsdWU9MjUnKQorZmluYWxseToKKyAgZGVsIG9z
LmVudmlyb25bJ0dZUF9ERUZJTkVTJ10KKwordGVzdC5zbGVlcCgpCit0ZXN0LnRvdWNoKCdkZWZp
bmVzLmMnKQordGVzdC5idWlsZCgnZGVmaW5lcy1lbnYuZ3lwJykKKworZXhwZWN0ID0gIiIiXAor
VkFMVUUgaXMgMjUKKyIiIgordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgnZGVmaW5lcycsIHN0
ZG91dD1leHBlY3QpCisKKworIyBXaXRoIHRoZSB2YWx1ZSBvbmx5IGdpdmVuIGluIGVudmlyb25t
ZW50LCBpdCBzaG91bGQgYmUgaWdub3JlZCBpZgorIyAtLWlnbm9yZS1lbnZpcm9ubWVudCBpcyBz
cGVjaWZpZWQuCit0cnk6CisgIG9zLmVudmlyb25bJ0dZUF9ERUZJTkVTJ10gPSAndmFsdWU9MzAn
CisgIHRlc3QucnVuX2d5cCgnZGVmaW5lcy1lbnYuZ3lwJywgJy0taWdub3JlLWVudmlyb25tZW50
JykKK2ZpbmFsbHk6CisgIGRlbCBvcy5lbnZpcm9uWydHWVBfREVGSU5FUyddCisKK3Rlc3Quc2xl
ZXAoKQordGVzdC50b3VjaCgnZGVmaW5lcy5jJykKK3Rlc3QuYnVpbGQoJ2RlZmluZXMtZW52Lmd5
cCcpCisKK2V4cGVjdCA9ICIiIlwKK1ZBTFVFIGlzIDUKKyIiIgordGVzdC5ydW5fYnVpbHRfZXhl
Y3V0YWJsZSgnZGVmaW5lcycsIHN0ZG91dD1leHBlY3QpCisKKworIyBXaXRoIHRoZSB2YWx1ZSBn
aXZlbiBpbiBib3RoIGNvbW1hbmQgbGluZSBhbmQgZW52aXJvbm1lbnQsIGFuZAorIyAtLWlnbm9y
ZS1lbnZpcm9ubWVudCBhbHNvIHNwZWNpZmllZCwgY29tbWFuZCBsaW5lIHNob3VsZCBzdGlsbCBi
ZSB1c2VkLgordHJ5OgorICBvcy5lbnZpcm9uWydHWVBfREVGSU5FUyddID0gJ3ZhbHVlPTQwJwor
ICB0ZXN0LnJ1bl9neXAoJ2RlZmluZXMtZW52Lmd5cCcsICctLWlnbm9yZS1lbnZpcm9ubWVudCcs
ICctRHZhbHVlPTQ1JykKK2ZpbmFsbHk6CisgIGRlbCBvcy5lbnZpcm9uWydHWVBfREVGSU5FUydd
CisKK3Rlc3Quc2xlZXAoKQordGVzdC50b3VjaCgnZGVmaW5lcy5jJykKK3Rlc3QuYnVpbGQoJ2Rl
ZmluZXMtZW52Lmd5cCcpCisKK2V4cGVjdCA9ICIiIlwKK1ZBTFVFIGlzIDQ1CisiIiIKK3Rlc3Qu
cnVuX2J1aWx0X2V4ZWN1dGFibGUoJ2RlZmluZXMnLCBzdGRvdXQ9ZXhwZWN0KQorCisKK3Rlc3Qu
cGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlZmlu
ZXMvZ3lwdGVzdC1kZWZpbmVzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVmaW5l
cy9neXB0ZXN0LWRlZmluZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTIxYTYxNzZmYjQyYjFjZDQ1YzgxMzlm
ZTQ2ZjNkMTFjMjA0YmQ4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2RlZmluZXMvZ3lwdGVzdC1kZWZpbmVzLnB5CkBAIC0wLDAgKzEsMjUgQEAKKyMhL3Vz
ci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisKKyIiIgorVmVyaWZpZXMgYnVpbGQgb2YgYW4gZXhlY3V0YWJsZSB3aXRoIEMrKyBk
ZWZpbmVzLgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAo
KQorCit0ZXN0LnJ1bl9neXAoJ2RlZmluZXMuZ3lwJykKKwordGVzdC5idWlsZCgnZGVmaW5lcy5n
eXAnKQorCitleHBlY3QgPSAiIiJcCitGT08gaXMgZGVmaW5lZAorVkFMVUUgaXMgMQorIiIiCit0
ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdkZWZpbmVzJywgc3Rkb3V0PWV4cGVjdCkKKwordGVz
dC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVw
ZW5kZW5jaWVzL2EuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlcGVuZGVuY2llcy9h
LmMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2JiYTExMWQyNGVlZmQ4M2Y0OTU1ZmIwMTBjZTgzYmE2ZTlkODgzYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlcGVuZGVuY2ll
cy9hLmMKQEAgLTAsMCArMSw5IEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuICovCisKK2V4dGVybiBpbnQgZnVuY0IoKTsKKworaW50IGZ1bmNBKCkgewor
ICByZXR1cm4gZnVuY0IoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2RlcGVuZGVuY2llcy9iL2IuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlcGVu
ZGVuY2llcy9iL2IuYwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWU3NzFiY2M3N2IwYmQ5ZTM4ZjEzODM5MTdjMjBj
NjQ1NjYzOWNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
ZGVwZW5kZW5jaWVzL2IvYi5jCkBAIC0wLDAgKzEsMyBAQAoraW50IGZ1bmNCKCkgeworICByZXR1
cm4gMjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlcGVuZGVu
Y2llcy9iL2IuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVwZW5kZW5jaWVzL2Iv
Yi5neXAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjA5ZTFmZjEzYzk5NjI1NzAxZTlmMjhjNGQ5N2JjYjE0ZmIzN2E5
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlcGVuZGVu
Y2llcy9iL2IuZ3lwCkBAIC0wLDAgKzEsMTUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFy
Z2V0X25hbWUnOiAnYicsCisgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCisgICAgICAn
c291cmNlcyc6IFsKKyAgICAgICAgJ2IuYycsCisgICAgICBdLAorICAgIH0sCisgIF0sCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZXBlbmRlbmNpZXMvYy9jLmMg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZXBlbmRlbmNpZXMvYy9jLmMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDk0OWRhZjNlZTFmZTE5N2U2MWYyMDEzYzI3YTg3MDRiYzA4OWM2ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlcGVuZGVuY2llcy9jL2MuYwpAQCAt
MCwwICsxLDQgQEAKK2ludCBmdW5jQygpIHsKKyAgcmV0dXJuIDMKKyAgLy8gSW50ZW50aW9uYWwg
c3ludGF4IGVycm9yLiBUaGlzIGZpbGUgc2hvdWxkIG5ldmVyIGJlIGNvbXBpbGVkLCBzbyB0aGlz
CisgIC8vIHNob3VsZG4ndCBiZSBhIHByb2JsZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9kZXBlbmRlbmNpZXMvYy9jLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2RlcGVuZGVuY2llcy9jL2MuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhYmViZWE5ZWZiZjQxZjY1
NWFmMjU3MTU0ZTI1ZDc3NmYyYzI2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9kZXBlbmRlbmNpZXMvYy9jLmd5cApAQCAtMCwwICsxLDIyIEBACisjIENv
cHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldHMn
OiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2NfdW51c2VkJywKKyAgICAgICd0eXBl
JzogJ3N0YXRpY19saWJyYXJ5JywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAnYy5jJywK
KyAgICAgIF0sCisgICAgfSwKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnZCcsCisgICAg
ICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAg
J2QuYycsCisgICAgICBdLAorICAgIH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9kZXBlbmRlbmNpZXMvYy9kLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9kZXBlbmRlbmNpZXMvYy9kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU0NjVmYzFhZjdkMGMyMmVl
YzMwMzZmZDlmNmNiNzYxZTY2YzFmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L2RlcGVuZGVuY2llcy9jL2QuYwpAQCAtMCwwICsxLDMgQEAKK2ludCBmdW5j
RCgpIHsKKyAgcmV0dXJuIDQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9kZXBlbmRlbmNpZXMvZXh0cmFfdGFyZ2V0cy5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9kZXBlbmRlbmNpZXMvZXh0cmFfdGFyZ2V0cy5neXAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFhMjZk
ZTQyMjgxYmFkZGUyMTc3ZGNmYTA3ZWFiYjY2ZjBjNjc2NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlcGVuZGVuY2llcy9leHRyYV90YXJnZXRzLmd5cApA
QCAtMCwwICsxLDE4IEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2En
LAorICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAorICAgICAgJ3NvdXJjZXMnOiBbCisg
ICAgICAgICdhLmMnLAorICAgICAgXSwKKyAgICAgICMgVGhpcyBvbmx5IGRlcGVuZHMgb24gdGhl
ICJkIiB0YXJnZXQ7IG90aGVyIHRhcmdldHMgaW4gYy5neXAKKyAgICAgICMgc2hvdWxkIG5vdCBi
ZWNvbWUgcGFydCBvZiB0aGUgYnVpbGQgKHVubGlrZSB3aXRoICdjL2MuZ3lwOionKS4KKyAgICAg
ICdkZXBlbmRlbmNpZXMnOiBbJ2MvYy5neXA6ZCddLAorICAgIH0sCisgIF0sCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZXBlbmRlbmNpZXMvZ3lwdGVzdC1leHRy
YS10YXJnZXRzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVwZW5kZW5jaWVzL2d5
cHRlc3QtZXh0cmEtdGFyZ2V0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzUyZjc0NDVkNTFmNDZmOGRjZDVk
NjkzMDg4MGQ5YWJhNWZkZjdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvZGVwZW5kZW5jaWVzL2d5cHRlc3QtZXh0cmEtdGFyZ2V0cy5weQpAQCAtMCwwICsx
LDIxIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmeSB0aGF0IGRlcGVuZGVuY2llcyBkb24n
dCBwdWxsIHVudXNlZCB0YXJnZXRzIGludG8gdGhlIGJ1aWxkLgorIiIiCisKK2ltcG9ydCBUZXN0
R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoKQorCit0ZXN0LnJ1bl9neXAoJ2V4dHJhX3Rh
cmdldHMuZ3lwJykKKworIyBUaGlzIHNob3VsZCBmYWlsIGlmIGl0IHRyaWVzIHRvIGJ1aWxkICdj
X3VudXNlZCcgc2luY2UgJ2MvYy5jJyBoYXMgYSBzeW50YXgKKyMgZXJyb3IgYW5kIHdvbid0IGNv
bXBpbGUuCit0ZXN0LmJ1aWxkKCdleHRyYV90YXJnZXRzLmd5cCcsIHRlc3QuQUxMKQorCit0ZXN0
LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZXBl
bmRlbmNpZXMvZ3lwdGVzdC1saWItb25seS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2RlcGVuZGVuY2llcy9neXB0ZXN0LWxpYi1vbmx5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5MGQ4OGZlODcx
ZjdiMTliOTIwNjIyZmQ4OGQ0YTVjNjZlNjViNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9kZXBlbmRlbmNpZXMvZ3lwdGVzdC1saWItb25seS5weQpAQCAt
MCwwICsxLDMzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmeSB0aGF0IGEgbGluayB0aW1l
IG9ubHkgZGVwZW5kZW5jeSB3aWxsIGdldCBwdWxsZWQgaW50byB0aGUgc2V0IG9mIGJ1aWx0Cit0
YXJnZXRzLCBldmVuIGlmIG5vIGV4ZWN1dGFibGUgdXNlcyBpdC4KKyIiIgorCitpbXBvcnQgVGVz
dEd5cAorCit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lwKCkKKwordGVzdC5ydW5fZ3lwKCdsaWJfb25s
eS5neXAnKQorCit0ZXN0LmJ1aWxkKCdsaWJfb25seS5neXAnLCB0ZXN0LkFMTCkKKworIyBNYWtl
IGRvZXNuJ3QgcHV0IHN0YXRpYyBsaWJzIGluIGEgY29tbW9uICdsaWInIGRpcmVjdG9yeSwgbGlr
ZSBpdCBkb2VzIHdpdGgKKyMgc2hhcmVkIGxpYnMsIHNvIGNoZWNrIGluIHRoZSBvYmogcGF0aCBj
b3JyZXNwb25kaW5nIHRvIHRoZSBzb3VyY2UgcGF0aC4KK3Rlc3QuYnVpbHRfZmlsZV9tdXN0X2V4
aXN0KCdhJywgdHlwZT10ZXN0LlNUQVRJQ19MSUIsIGxpYmRpcj0nb2JqLnRhcmdldCcpCisKKyMg
VE9ETyhicmFkbmVsc29uL21hcmspOgorIyBPbiBsaW51eCBhbmQgd2luZG93cyBhIGxpYnJhcnkg
dGFyZ2V0IHdpbGwgYXQgbGVhc3QgcHVsbCBpdHMgbGluayBkZXBlbmRlbmNpZXMKKyMgaW50byB0
aGUgZ2VuZXJhdGVkIHNsbi9fbWFpbi5zY29ucywgc2luY2Ugbm90IGRvaW5nIHNvIGNvbmZ1c2Vz
IHVzZXJzLgorIyBUaGlzIGlzIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQgb24gbWFjLCB3aGlj
aCBoYXMgdGhlIG9wcG9zaXRlIGJlaGF2aW9yLgoraWYgdGVzdC5mb3JtYXQgPT0gJ3hjb2RlJzoK
KyAgdGVzdC5idWlsdF9maWxlX211c3Rfbm90X2V4aXN0KCdiJywgdHlwZT10ZXN0LlNUQVRJQ19M
SUIpCitlbHNlOgorICB0ZXN0LmJ1aWx0X2ZpbGVfbXVzdF9leGlzdCgnYicsIHR5cGU9dGVzdC5T
VEFUSUNfTElCLCBsaWJkaXI9J29iai50YXJnZXQvYicpCisKK3Rlc3QucGFzc190ZXN0KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlcGVuZGVuY2llcy9saWJfb25s
eS5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZXBlbmRlbmNpZXMvbGliX29ubHku
Z3lwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY2Yzg0ZGVhNjRmZmI4OTliOGExMWRlMWQ1MTU0YWVjNjZmNjk1ZjAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZXBlbmRlbmNp
ZXMvbGliX29ubHkuZ3lwCkBAIC0wLDAgKzEsMTYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAn
dGFyZ2V0X25hbWUnOiAnYScsCisgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCisgICAg
ICAnc291cmNlcyc6IFsKKyAgICAgICAgJ2EuYycsCisgICAgICBdLAorICAgICAgJ2RlcGVuZGVu
Y2llcyc6IFsnYi9iLmd5cDpiJ10sCisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2RlcGVuZGVuY3ktY29weS9neXB0ZXN0LWNvcHkucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZXBlbmRlbmN5LWNvcHkvZ3lwdGVzdC1jb3B5LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjViYTdjNzNkNDEzMjdhZjk3ODIyNjIyNGEwZDEzYzEzMGY2OTM3NzYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZXBlbmRlbmN5LWNv
cHkvZ3lwdGVzdC1jb3B5LnB5CkBAIC0wLDAgKzEsMjYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgor
VmVyaWZpZXMgZGVwZW5kZW5jaWVzIGRvIHRoZSBjb3B5IHN0ZXAuCisiIiIKKworaW1wb3J0IFRl
c3RHeXAKKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5cCgpCisKK3Rlc3QucnVuX2d5cCgnY29waWVz
Lmd5cCcsIGNoZGlyPSdzcmMnKQorCit0ZXN0LmJ1aWxkKCdjb3BpZXMuZ3lwJywgJ3Byb2oyJywg
Y2hkaXI9J3NyYycpCisKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ3Byb2oxJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hkaXI9J3NyYycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZG91dD0iSGVsbG8gZnJvbSBmaWxlMS5jXG4iKQordGVzdC5ydW5fYnVpbHRfZXhlY3V0
YWJsZSgncHJvajInLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjaGRpcj0nc3JjJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSJIZWxsbyBmcm9tIGZpbGUyLmNcbiIpCisK
K3Rlc3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2RlcGVuZGVuY3ktY29weS9zcmMvY29waWVzLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2RlcGVuZGVuY3ktY29weS9zcmMvY29waWVzLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTc2YjE4Nzg3
YmVhM2JkNjlmMmRmY2ZjZjg5ODQyZDIyZDAyMDhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVwZW5kZW5jeS1jb3B5L3NyYy9jb3BpZXMuZ3lwCkBAIC0w
LDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAncHJvajEn
LAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAnc291cmNlcyc6IFsKKyAgICAg
ICAgJ2ZpbGUxLmMnLAorICAgICAgXSwKKyAgICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFt
ZSc6ICdwcm9qMicsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICdzb3VyY2Vz
JzogWworICAgICAgICAnZmlsZTIuYycsCisgICAgICBdLAorICAgICAgJ2RlcGVuZGVuY2llcyc6
IFsKKyAgICAgICAgJ3Byb2oxJywKKyAgICAgIF0KKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVwZW5kZW5jeS1jb3B5L3NyYy9maWxlMS5j
IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVwZW5kZW5jeS1jb3B5L3NyYy9maWxlMS5j
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNjYWY1ZDYzNDU3Mzc1MTAyMDQ1YjlkNjY5OTQ1MDEwYmZjMTk3ZTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9kZXBlbmRlbmN5LWNv
cHkvc3JjL2ZpbGUxLmMKQEAgLTAsMCArMSw3IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKworaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgcHJpbnRmKCJIZWxsbyBmcm9tIGZp
bGUxLmNcbiIpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2RlcGVuZGVuY3ktY29weS9zcmMvZmlsZTIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2RlcGVuZGVuY3ktY29weS9zcmMvZmlsZTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDQ1Y2Mw
MTJkNzAzZTY5YTNiMmQxZGU3NzIzYzEyZDFiZjY3ZWFkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZGVwZW5kZW5jeS1jb3B5L3NyYy9maWxlMi5jCkBAIC0w
LDAgKzEsNyBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
ICphcmd2W10pCit7CisgIHByaW50ZigiSGVsbG8gZnJvbSBmaWxlMi5jXG4iKTsKKyAgcmV0dXJu
IDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9leGNsdXNpb24v
ZXhjbHVzaW9uLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2V4Y2x1c2lvbi9leGNs
dXNpb24uZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyMzJkYWJhZWY5MzMxODFhYmY0NjRkZWEyMDEzNzBhMzcx
YmIzNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9leGNs
dXNpb24vZXhjbHVzaW9uLmd5cApAQCAtMCwwICsxLDIzIEBACisjIENvcHlyaWdodCAoYykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAg
ICAgJ3RhcmdldF9uYW1lJzogJ2hlbGxvJywKKyAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAor
ICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdoZWxsby5jJywKKyAgICAgICAgJ2JvZ3VzLmMn
LAorICAgICAgICAnYWxzby9ub3QvcmVhbC5jJywKKyAgICAgICAgJ2Fsc28vbm90L3JlYWwyLmMn
LAorICAgICAgXSwKKyAgICAgICdzb3VyY2VzISc6IFsKKyAgICAgICAgJ2JvZ3VzLmMnLAorICAg
ICAgICAnYWxzby9ub3QvcmVhbC5jJywKKyAgICAgICAgJ2Fsc28vbm90L3JlYWwyLmMnLAorICAg
ICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvZXhjbHVzaW9uL2d5cHRlc3QtZXhjbHVzaW9uLnB5IGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvZXhjbHVzaW9uL2d5cHRlc3QtZXhjbHVzaW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmYzMy
YmY4NzFhMjJhYzU3OWZkMzZiNTk3ZTA2MTVkZjdhNWVmMGYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9leGNsdXNpb24vZ3lwdGVzdC1leGNsdXNpb24ucHkK
QEAgLTAsMCArMSwyMiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChj
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyB0aGF0IGV4Y2x1
c2lvbnMgKGUuZy4gc291cmNlcyEpIGFyZSByZXNwZWN0ZWQuICBFeGNsdWRlZCBzb3VyY2VzCit0
aGF0IGRvIG5vdCBleGlzdCBzaG91bGQgbm90IHByZXZlbnQgdGhlIGJ1aWxkIGZyb20gc3VjY2Vl
ZGluZy4KKyIiIgorCitpbXBvcnQgVGVzdEd5cAorCit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lwKCkK
KwordGVzdC5ydW5fZ3lwKCdleGNsdXNpb24uZ3lwJykKK3Rlc3QuYnVpbGQoJ2V4Y2x1c2lvbi5n
eXAnKQorCisjIGV4ZWN1dGFibGVzCit0ZXN0LmJ1aWx0X2ZpbGVfbXVzdF9leGlzdCgnaGVsbG8n
ICsgdGVzdC5fZXhlLCB0ZXN0LkVYRUNVVEFCTEUsIGJhcmU9VHJ1ZSkKKwordGVzdC5wYXNzX3Rl
c3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZXhjbHVzaW9uL2hl
bGxvLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9leGNsdXNpb24vaGVsbG8uYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMGU4ZDU0MTZkYzAxYThlZjk0MzRhNTUwMjcwNDkxYmZjMTNlNWIxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZXhjbHVzaW9uL2hlbGxvLmMK
QEAgLTAsMCArMSwxNSBAQAorLyogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLiAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKworaW50IGZ1bmMxKHZvaWQpIHsKKyAg
cmV0dXJuIDQyOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisgIHBy
aW50ZigiSGVsbG8sIHdvcmxkIVxuIik7CisgIHByaW50ZigiJWRcbiIsIGZ1bmMxKCkpOworICBy
ZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVy
YXRvci1vdXRwdXQvYWN0aW9ucy9hY3Rpb25zLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2dlbmVyYXRvci1vdXRwdXQvYWN0aW9ucy9hY3Rpb25zLmd5cApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGVk
NTlhZmYzZTM0ZjBlNDYxMzdiMWFiZGRiZmUwNTU4ZTZkMjI2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9hY3Rpb25zL2FjdGlv
bnMuZ3lwCkBAIC0wLDAgKzEsMTYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25h
bWUnOiAncHVsbF9pbl9hbGxfYWN0aW9ucycsCisgICAgICAndHlwZSc6ICdub25lJywKKyAgICAg
ICdkZXBlbmRlbmNpZXMnOiBbCisgICAgICAgICdzdWJkaXIxL2V4ZWN1dGFibGUuZ3lwOionLAor
ICAgICAgICAnc3ViZGlyMi9ub25lLmd5cDoqJywKKyAgICAgIF0sCisgICAgfSwKKyAgXSwKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQv
YWN0aW9ucy9zdWJkaXIxL2FjdGlvbnMtb3V0L1JFQURNRS50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2FjdGlvbnMvc3ViZGlyMS9hY3Rpb25zLW91dC9S
RUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiMDUyYzlhMjQ1NDYzMTAzZmY2YzQ1Yjg2YWU5ZTkzZDVj
YzQyNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5l
cmF0b3Itb3V0cHV0L2FjdGlvbnMvc3ViZGlyMS9hY3Rpb25zLW91dC9SRUFETUUudHh0CkBAIC0w
LDAgKzEsNCBAQAorQSBwbGFjZS1ob2xkZXIgZm9yIHRoaXMgWGNvZGUgYnVpbGQgb3V0cHV0IGRp
cmVjdG9yeSwgc28gdGhhdCB0aGUNCit0ZXN0IHNjcmlwdCBjYW4gdmVyaWZ5IHRoYXQgLnhjb2Rl
cHJvaiBmaWxlcyBhcmUgbm90IGNyZWF0ZWQgaW4NCit0aGVpciBub3JtYWwgbG9jYXRpb24gYnkg
bWFraW5nIHRoZSBzcmMvIHJlYWQtb25seSwgYW5kIHRoZW4NCitzZWxlY3RpdmVseSBtYWtpbmcg
dGhpcyBidWlsZCBkaXJlY3Rvcnkgd3JpdGFibGUuDQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9hY3Rpb25zL3N1YmRpcjEvZXhlY3V0YWJs
ZS5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2FjdGlv
bnMvc3ViZGlyMS9leGVjdXRhYmxlLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmRkNjBhMWZiNzlmMzIxNzYw
ZmUzMDBiZWZkNzZkMTQ5NjY0ZWYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9hY3Rpb25zL3N1YmRpcjEvZXhlY3V0YWJsZS5n
eXAKQEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorCit7CisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6
ICdwcm9ncmFtJywKKyAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAorICAgICAgJ21zdnNfY3ln
d2luX3NoZWxsJzogMCwKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAncHJvZ3JhbS5jJywK
KyAgICAgIF0sCisgICAgICAnYWN0aW9ucyc6IFsKKyAgICAgICAgeworICAgICAgICAgICdhY3Rp
b25fbmFtZSc6ICdtYWtlLXByb2cxJywKKyAgICAgICAgICAnaW5wdXRzJzogWworICAgICAgICAg
ICAgJ21ha2UtcHJvZzEucHknLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ291dHB1dHMnOiBb
CisgICAgICAgICAgICAnPChJTlRFUk1FRElBVEVfRElSKS9wcm9nMS5jJywKKyAgICAgICAgICBd
LAorICAgICAgICAgICdhY3Rpb24nOiBbCisgICAgICAgICAgICAncHl0aG9uJywgJzwoX2lucHV0
cyknLCAnPEAoX291dHB1dHMpJywKKyAgICAgICAgICBdLAorICAgICAgICAgICdwcm9jZXNzX291
dHB1dHNfYXNfc291cmNlcyc6IDEsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAn
YWN0aW9uX25hbWUnOiAnbWFrZS1wcm9nMicsCisgICAgICAgICAgJ2lucHV0cyc6IFsKKyAgICAg
ICAgICAgICdtYWtlLXByb2cyLnB5JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdvdXRwdXRz
JzogWworICAgICAgICAgICAgJ2FjdGlvbnMtb3V0L3Byb2cyLmMnLAorICAgICAgICAgIF0sCisg
ICAgICAgICAgJ2FjdGlvbic6IFsKKyAgICAgICAgICAgICdweXRob24nLCAnPChfaW5wdXRzKScs
ICc8QChfb3V0cHV0cyknLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ3Byb2Nlc3Nfb3V0cHV0
c19hc19zb3VyY2VzJzogMSwKKyAgICAgICAgfSwKKyAgICAgIF0sCisgICAgfSwKKyAgXSwKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQv
YWN0aW9ucy9zdWJkaXIxL21ha2UtcHJvZzEucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9nZW5lcmF0b3Itb3V0cHV0L2FjdGlvbnMvc3ViZGlyMS9tYWtlLXByb2cxLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdlYTFkOGEyZDQ4NzA4M2VmMGY5MmMwOTRkYjQ4ZGZlNjk1MmNiMWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2FjdGlv
bnMvc3ViZGlyMS9tYWtlLXByb2cxLnB5CkBAIC0wLDAgKzEsMjAgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisK
K2ltcG9ydCBzeXMKKworY29udGVudHMgPSByIiIiCisjaW5jbHVkZSA8c3RkaW8uaD4KKwordm9p
ZCBwcm9nMSh2b2lkKQoreworICBwcmludGYoIkhlbGxvIGZyb20gbWFrZS1wcm9nMS5weVxuIik7
Cit9CisiIiIKKworb3BlbihzeXMuYXJndlsxXSwgJ3cnKS53cml0ZShjb250ZW50cykKKworc3lz
LmV4aXQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRv
ci1vdXRwdXQvYWN0aW9ucy9zdWJkaXIxL21ha2UtcHJvZzIucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2FjdGlvbnMvc3ViZGlyMS9tYWtlLXByb2cyLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBiZmU0OTczYzI0YzE1MmVhZDE0Zjc4OWYwYjQ4ZmY1OGJiYjczMDgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0
cHV0L2FjdGlvbnMvc3ViZGlyMS9tYWtlLXByb2cyLnB5CkBAIC0wLDAgKzEsMjAgQEAKKyMhL3Vz
ci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisKK2ltcG9ydCBzeXMKKworY29udGVudHMgPSByIiIiCisjaW5jbHVkZSA8c3RkaW8u
aD4KKwordm9pZCBwcm9nMih2b2lkKQoreworICBwcmludGYoIkhlbGxvIGZyb20gbWFrZS1wcm9n
Mi5weVxuIik7Cit9CisiIiIKKworb3BlbihzeXMuYXJndlsxXSwgJ3cnKS53cml0ZShjb250ZW50
cykKKworc3lzLmV4aXQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2dlbmVyYXRvci1vdXRwdXQvYWN0aW9ucy9zdWJkaXIxL3Byb2dyYW0uYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvYWN0aW9ucy9zdWJkaXIxL3Byb2dyYW0u
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNWY2NjFkOTA1YmVlMjRlMmNhNGY3NjM0M2JmNTdmMzM5NzZiMTRjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91
dHB1dC9hY3Rpb25zL3N1YmRpcjEvcHJvZ3JhbS5jCkBAIC0wLDAgKzEsMTIgQEAKKyNpbmNsdWRl
IDxzdGRpby5oPg0KKw0KK2V4dGVybiB2b2lkIHByb2cxKHZvaWQpOw0KK2V4dGVybiB2b2lkIHBy
b2cyKHZvaWQpOw0KKw0KK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQorew0KKyAg
cHJpbnRmKCJIZWxsbyBmcm9tIHByb2dyYW0uY1xuIik7DQorICBwcm9nMSgpOw0KKyAgcHJvZzIo
KTsNCisgIHJldHVybiAwOw0KK30NCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9nZW5lcmF0b3Itb3V0cHV0L2FjdGlvbnMvc3ViZGlyMi9hY3Rpb25zLW91dC9SRUFETUUu
dHh0IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9hY3Rpb25z
L3N1YmRpcjIvYWN0aW9ucy1vdXQvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjA1MmM5YTI0NTQ2
MzEwM2ZmNmM0NWI4NmFlOWU5M2Q1Y2M0MjYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9hY3Rpb25zL3N1YmRpcjIvYWN0aW9u
cy1vdXQvUkVBRE1FLnR4dApAQCAtMCwwICsxLDQgQEAKK0EgcGxhY2UtaG9sZGVyIGZvciB0aGlz
IFhjb2RlIGJ1aWxkIG91dHB1dCBkaXJlY3RvcnksIHNvIHRoYXQgdGhlDQordGVzdCBzY3JpcHQg
Y2FuIHZlcmlmeSB0aGF0IC54Y29kZXByb2ogZmlsZXMgYXJlIG5vdCBjcmVhdGVkIGluDQordGhl
aXIgbm9ybWFsIGxvY2F0aW9uIGJ5IG1ha2luZyB0aGUgc3JjLyByZWFkLW9ubHksIGFuZCB0aGVu
DQorc2VsZWN0aXZlbHkgbWFraW5nIHRoaXMgYnVpbGQgZGlyZWN0b3J5IHdyaXRhYmxlLg0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvYWN0
aW9ucy9zdWJkaXIyL21ha2UtZmlsZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dl
bmVyYXRvci1vdXRwdXQvYWN0aW9ucy9zdWJkaXIyL21ha2UtZmlsZS5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZmYwNjUzMTQ0NzQ1YTk4MzdhYzRkM2U2YjEwOTY1NTY2NTU1N2M3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9hY3Rpb25zL3N1
YmRpcjIvbWFrZS1maWxlLnB5CkBAIC0wLDAgKzEsMTEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK2ltcG9y
dCBzeXMKKworY29udGVudHMgPSAiSGVsbG8gZnJvbSBtYWtlLWZpbGUucHlcbiIKKworb3Blbihz
eXMuYXJndlsxXSwgJ3diJykud3JpdGUoY29udGVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2FjdGlvbnMvc3ViZGlyMi9ub25lLmd5
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvYWN0aW9ucy9z
dWJkaXIyL25vbmUuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5OGY1Mjc1M2QwZmZlOWRjNzhlNTkwZWIwNWMy
NTlkNjI0ZTFlMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9nZW5lcmF0b3Itb3V0cHV0L2FjdGlvbnMvc3ViZGlyMi9ub25lLmd5cApAQCAtMCwwICsxLDMx
IEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAg
J3RhcmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2ZpbGUnLAorICAgICAg
J3R5cGUnOiAnbm9uZScsCisgICAgICAnbXN2c19jeWd3aW5fc2hlbGwnOiAwLAorICAgICAgJ2Fj
dGlvbnMnOiBbCisgICAgICAgIHsKKyAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnbWFrZS1maWxl
JywKKyAgICAgICAgICAnaW5wdXRzJzogWworICAgICAgICAgICAgJ21ha2UtZmlsZS5weScsCisg
ICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAgICAgICAgICdhY3Rpb25z
LW91dC9maWxlLm91dCcsCisgICAgICAgICAgICAjIFRPRE86ICBlbmhhbmNlIHRlc3RpbmcgaW5m
cmFzdHJ1Y3R1cmUgdG8gdGVzdCB0aGlzCisgICAgICAgICAgICAjIHdpdGhvdXQgaGF2aW5nIHRv
IGhhcmQtY29kZSB0aGUgaW50ZXJtZWRpYXRlIGRpciBwYXRocy4KKyAgICAgICAgICAgICMnPChJ
TlRFUk1FRElBVEVfRElSKS9maWxlLm91dCcsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnYWN0
aW9uJzogWworICAgICAgICAgICAgJ3B5dGhvbicsICc8KF9pbnB1dHMpJywgJzxAKF9vdXRwdXRz
KScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAncHJvY2Vzc19vdXRwdXRzX2FzX3NvdXJjZXMn
OiAxLAorICAgICAgICB9CisgICAgICBdLAorICAgIH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2NvcGllcy9jb3BpZXMt
b3V0L1JFQURNRS50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0
cHV0L2NvcGllcy9jb3BpZXMtb3V0L1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBlZjg4NjE5MzE0
ODUzNWRlMjI2ZGNmMTIwNWU2M2FjYjA0YTMxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvY29waWVzL2NvcGllcy1vdXQvUkVB
RE1FLnR4dApAQCAtMCwwICsxLDQgQEAKK0EgcGxhY2UtaG9sZGVyIGZvciB0aGlzIFhjb2RlIGJ1
aWxkIG91dHB1dCBkaXJlY3RvcnksIHNvIHRoYXQgdGhlCit0ZXN0IHNjcmlwdCBjYW4gdmVyaWZ5
IHRoYXQgLnhjb2RlcHJvaiBmaWxlcyBhcmUgbm90IGNyZWF0ZWQgaW4KK3RoZWlyIG5vcm1hbCBs
b2NhdGlvbiBieSBtYWtpbmcgdGhlIHNyYy8gcmVhZC1vbmx5LCBhbmQgdGhlbgorc2VsZWN0aXZl
bHkgbWFraW5nIHRoaXMgYnVpbGQgZGlyZWN0b3J5IHdyaXRhYmxlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9jb3BpZXMvY29waWVzLmd5
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvY29waWVzL2Nv
cGllcy5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDc5YTNkOWI2ZThiMGRlNTNjNDU5MTBhZGExMTcxMDIxMjMy
OWYzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVy
YXRvci1vdXRwdXQvY29waWVzL2NvcGllcy5neXAKQEAgLTAsMCArMSw1MCBAQAorIyBDb3B5cmln
aHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICd0YXJnZXRzJzogWwor
ICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdwdWxsX2luX3N1YmRpcicsCisgICAgICAndHlw
ZSc6ICdub25lJywKKyAgICAgICdkZXBlbmRlbmNpZXMnOiBbCisgICAgICAgICdzdWJkaXIvc3Vi
ZGlyLmd5cDoqJywKKyAgICAgIF0sCisgICAgfSwKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUn
OiAnY29waWVzMScsCisgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICdjb3BpZXMnOiBbCisg
ICAgICAgIHsKKyAgICAgICAgICAnZGVzdGluYXRpb24nOiAnY29waWVzLW91dCcsCisgICAgICAg
ICAgJ2ZpbGVzJzogWworICAgICAgICAgICAgJ2ZpbGUxJywKKyAgICAgICAgICBdLAorICAgICAg
ICB9LAorICAgICAgXSwKKyAgICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdjb3Bp
ZXMyJywKKyAgICAgICd0eXBlJzogJ25vbmUnLAorICAgICAgJ2NvcGllcyc6IFsKKyAgICAgICAg
eworICAgICAgICAgICdkZXN0aW5hdGlvbic6ICc8KFBST0RVQ1RfRElSKS9jb3BpZXMtb3V0JywK
KyAgICAgICAgICAnZmlsZXMnOiBbCisgICAgICAgICAgICAnZmlsZTInLAorICAgICAgICAgIF0s
CisgICAgICAgIH0sCisgICAgICBdLAorICAgIH0sCisgICAgIyBWZXJpZnkgdGhhdCBhIG51bGwg
J2ZpbGVzJyBsaXN0IGRvZXNuJ3QgZ2FnIHRoZSBnZW5lcmF0b3JzLgorICAgIHsKKyAgICAgICd0
YXJnZXRfbmFtZSc6ICdjb3BpZXNfbnVsbCcsCisgICAgICAndHlwZSc6ICdub25lJywKKyAgICAg
ICdjb3BpZXMnOiBbCisgICAgICAgIHsKKyAgICAgICAgICAnZGVzdGluYXRpb24nOiAnPChQUk9E
VUNUX0RJUikvY29waWVzLW51bGwnLAorICAgICAgICAgICdmaWxlcyc6IFtdLAorICAgICAgICB9
LAorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9jb3BpZXMvZmlsZTEgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2NvcGllcy9maWxlMQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NGQ1NWM1NzU5Y2Y2Yjk1NGUxNmM1NDUyN2NhOTRhZjRjMWJjZTY5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9jb3BpZXMvZmls
ZTEKQEAgLTAsMCArMSBAQAorZmlsZTEgY29udGVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvY29waWVzL2ZpbGUyIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9jb3BpZXMvZmlsZTIKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWYxYjhhZTM1ZGI0NjFhZGFjODMyNWRjN2E3MDE0NGMxZWZiMWNjMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvY29waWVz
L2ZpbGUyCkBAIC0wLDAgKzEgQEAKK2ZpbGUyIGNvbnRlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2NvcGllcy9zdWJkaXIvY29waWVz
LW91dC9SRUFETUUudHh0IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91
dHB1dC9jb3BpZXMvc3ViZGlyL2NvcGllcy1vdXQvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGVm
ODg2MTkzMTQ4NTM1ZGUyMjZkY2YxMjA1ZTYzYWNiMDRhMzE2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9jb3BpZXMvc3ViZGly
L2NvcGllcy1vdXQvUkVBRE1FLnR4dApAQCAtMCwwICsxLDQgQEAKK0EgcGxhY2UtaG9sZGVyIGZv
ciB0aGlzIFhjb2RlIGJ1aWxkIG91dHB1dCBkaXJlY3RvcnksIHNvIHRoYXQgdGhlCit0ZXN0IHNj
cmlwdCBjYW4gdmVyaWZ5IHRoYXQgLnhjb2RlcHJvaiBmaWxlcyBhcmUgbm90IGNyZWF0ZWQgaW4K
K3RoZWlyIG5vcm1hbCBsb2NhdGlvbiBieSBtYWtpbmcgdGhlIHNyYy8gcmVhZC1vbmx5LCBhbmQg
dGhlbgorc2VsZWN0aXZlbHkgbWFraW5nIHRoaXMgYnVpbGQgZGlyZWN0b3J5IHdyaXRhYmxlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9j
b3BpZXMvc3ViZGlyL2ZpbGUzIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9y
LW91dHB1dC9jb3BpZXMvc3ViZGlyL2ZpbGUzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzZjE2ZjM1MjIwNjU3OGEw
NTJmZDg3MjY0YTlkNjdiODFhMDAxOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2NvcGllcy9zdWJkaXIvZmlsZTMKQEAgLTAs
MCArMSBAQAorZmlsZTMgY29udGVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvY29waWVzL3N1YmRpci9maWxlNCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvY29waWVzL3N1YmRpci9maWxlNApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZjcyNzBhMDg0N2NjNmQwODQwZTViOGFmOGZkOTNlYzRiNTE5OTg2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9j
b3BpZXMvc3ViZGlyL2ZpbGU0CkBAIC0wLDAgKzEgQEAKK2ZpbGU0IGNvbnRlbnRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2NvcGllcy9z
dWJkaXIvc3ViZGlyLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1v
dXRwdXQvY29waWVzL3N1YmRpci9zdWJkaXIuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMDMxZDI4M2FlNDUy
YmQ0NGU0ZjM4ZTUxNWMyY2U0NDdkZGI0ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2NvcGllcy9zdWJkaXIvc3ViZGlyLmd5
cApAQCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzog
J2NvcGllczMnLAorICAgICAgJ3R5cGUnOiAnbm9uZScsCisgICAgICAnY29waWVzJzogWworICAg
ICAgICB7CisgICAgICAgICAgJ2Rlc3RpbmF0aW9uJzogJ2NvcGllcy1vdXQnLAorICAgICAgICAg
ICdmaWxlcyc6IFsKKyAgICAgICAgICAgICdmaWxlMycsCisgICAgICAgICAgXSwKKyAgICAgICAg
fSwKKyAgICAgIF0sCisgICAgfSwKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnY29waWVz
NCcsCisgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICdjb3BpZXMnOiBbCisgICAgICAgIHsK
KyAgICAgICAgICAnZGVzdGluYXRpb24nOiAnPChQUk9EVUNUX0RJUikvY29waWVzLW91dCcsCisg
ICAgICAgICAgJ2ZpbGVzJzogWworICAgICAgICAgICAgJ2ZpbGU0JywKKyAgICAgICAgICBdLAor
ICAgICAgICB9LAorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9neXB0ZXN0LWFjdGlvbnMucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2d5cHRlc3QtYWN0
aW9ucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43M2FjNWFlOTZkNTEwN2ViYjcxZDUyZTZlZjEzNzdkYjQyZDJk
YWQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJh
dG9yLW91dHB1dC9neXB0ZXN0LWFjdGlvbnMucHkKQEAgLTAsMCArMSw1NyBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworIiIiCitWZXJpZmllcyAtLWdlbmVyYXRvci1vdXRwdXQ9IGJlaGF2aW9yIHdoZW4gdXNp
bmcgYWN0aW9ucy4KKyIiIgorCitpbXBvcnQgVGVzdEd5cAorCit0ZXN0ID0gVGVzdEd5cC5UZXN0
R3lwKCkKKworIyBBbGwgdGhlIGdlbmVyYXRlZCBmaWxlcyBzaG91bGQgZ28gdW5kZXIgJ2d5cGZp
bGVzJy4gVGhlIHNvdXJjZSBkaXJlY3RvcnkKKyMgKCdhY3Rpb25zJykgc2hvdWxkIGJlIHVudG91
Y2hlZC4KK3Rlc3Qud3JpdGFibGUodGVzdC53b3JrcGF0aCgnYWN0aW9ucycpLCBGYWxzZSkKK3Rl
c3QucnVuX2d5cCgnYWN0aW9ucy5neXAnLAorICAgICAgICAgICAgICctLWdlbmVyYXRvci1vdXRw
dXQ9JyArIHRlc3Qud29ya3BhdGgoJ2d5cGZpbGVzJyksCisgICAgICAgICAgICAgY2hkaXI9J2Fj
dGlvbnMnKQorCit0ZXN0LndyaXRhYmxlKHRlc3Qud29ya3BhdGgoJ2FjdGlvbnMnKSwgVHJ1ZSkK
KwordGVzdC5yZWxvY2F0ZSgnYWN0aW9ucycsICdyZWxvY2F0ZS9hY3Rpb25zJykKK3Rlc3QucmVs
b2NhdGUoJ2d5cGZpbGVzJywgJ3JlbG9jYXRlL2d5cGZpbGVzJykKKwordGVzdC53cml0YWJsZSh0
ZXN0LndvcmtwYXRoKCdyZWxvY2F0ZS9hY3Rpb25zJyksIEZhbHNlKQorCisjIFNvbWUgb2YgdGhl
IGFjdGlvbiBvdXRwdXRzIHVzZSAicHVyZSIgcmVsYXRpdmUgcGF0aHMgKGkuZS4gd2l0aG91dCBw
cmVmaXhlcworIyBsaWtlIDwoSU5URVJNRURJQVRFX0RJUikgb3IgPChQUk9HUkFNX0RJUikpLiBF
dmVuIHRob3VnaCB3ZSBhcmUgYnVpbGRpbmcgdW5kZXIKKyMgJ2d5cGZpbGVzJywgc3VjaCBvdXRw
dXRzIHdpbGwgc3RpbGwgYmUgY3JlYXRlZCByZWxhdGl2ZSB0byB0aGUgb3JpZ2luYWwgLmd5cAor
IyBzb3VyY2VzLiBQcm9qZWN0cyBwcm9iYWJseSB3b3VsZG4ndCBub3JtYWxseSBkbyB0aGlzLCBz
aW5jZSBpdCBraW5kIG9mIGRlZmVhdHMKKyMgdGhlIHB1cnBvc2Ugb2YgJy0tZ2VuZXJhdG9yLW91
dHB1dCcsIGJ1dCBpdCBpcyBzdXBwb3J0ZWQgYmVoYXZpb3VyLgordGVzdC53cml0YWJsZSh0ZXN0
LndvcmtwYXRoKCdyZWxvY2F0ZS9hY3Rpb25zL2J1aWxkJyksIFRydWUpCit0ZXN0LndyaXRhYmxl
KHRlc3Qud29ya3BhdGgoJ3JlbG9jYXRlL2FjdGlvbnMvc3ViZGlyMS9idWlsZCcpLCBUcnVlKQor
dGVzdC53cml0YWJsZSh0ZXN0LndvcmtwYXRoKCdyZWxvY2F0ZS9hY3Rpb25zL3N1YmRpcjEvYWN0
aW9ucy1vdXQnKSwgVHJ1ZSkKK3Rlc3Qud3JpdGFibGUodGVzdC53b3JrcGF0aCgncmVsb2NhdGUv
YWN0aW9ucy9zdWJkaXIyL2J1aWxkJyksIFRydWUpCit0ZXN0LndyaXRhYmxlKHRlc3Qud29ya3Bh
dGgoJ3JlbG9jYXRlL2FjdGlvbnMvc3ViZGlyMi9hY3Rpb25zLW91dCcpLCBUcnVlKQorCit0ZXN0
LmJ1aWxkKCdhY3Rpb25zLmd5cCcsIHRlc3QuQUxMLCBjaGRpcj0ncmVsb2NhdGUvZ3lwZmlsZXMn
KQorCitleHBlY3QgPSAiIiJcCitIZWxsbyBmcm9tIHByb2dyYW0uYworSGVsbG8gZnJvbSBtYWtl
LXByb2cxLnB5CitIZWxsbyBmcm9tIG1ha2UtcHJvZzIucHkKKyIiIgorCitpZiB0ZXN0LmZvcm1h
dCA9PSAneGNvZGUnOgorICBjaGRpciA9ICdyZWxvY2F0ZS9hY3Rpb25zL3N1YmRpcjEnCitlbHNl
OgorICBjaGRpciA9ICdyZWxvY2F0ZS9neXBmaWxlcycKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFi
bGUoJ3Byb2dyYW0nLCBjaGRpcj1jaGRpciwgc3Rkb3V0PWV4cGVjdCkKKwordGVzdC5tdXN0X21h
dGNoKCdyZWxvY2F0ZS9hY3Rpb25zL3N1YmRpcjIvYWN0aW9ucy1vdXQvZmlsZS5vdXQnLAorICAg
ICAgICAgICAgICAgICJIZWxsbyBmcm9tIG1ha2UtZmlsZS5weVxuIikKKwordGVzdC5wYXNzX3Rl
c3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91
dHB1dC9neXB0ZXN0LWNvcGllcy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVy
YXRvci1vdXRwdXQvZ3lwdGVzdC1jb3BpZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDE0YjdjMzcxN2RiNWUx
YmRhMGQ3N2YxZjk2NTMzNGRlYzQxOWVkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvZ3lwdGVzdC1jb3BpZXMucHkKQEAgLTAs
MCArMSw1NyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyBmaWxlIGNvcGllcyB1c2lu
ZyBhbiBleHBsaWNpdCBidWlsZCB0YXJnZXQgb2YgJ2FsbCcuCisiIiIKKworaW1wb3J0IFRlc3RH
eXAKKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5cCgpCisKK3Rlc3Qud3JpdGFibGUodGVzdC53b3Jr
cGF0aCgnY29waWVzJyksIEZhbHNlKQorCit0ZXN0LnJ1bl9neXAoJ2NvcGllcy5neXAnLAorICAg
ICAgICAgICAgICctLWdlbmVyYXRvci1vdXRwdXQ9JyArIHRlc3Qud29ya3BhdGgoJ2d5cGZpbGVz
JyksCisgICAgICAgICAgICAgY2hkaXI9J2NvcGllcycpCisKK3Rlc3Qud3JpdGFibGUodGVzdC53
b3JrcGF0aCgnY29waWVzJyksIFRydWUpCisKK3Rlc3QucmVsb2NhdGUoJ2NvcGllcycsICdyZWxv
Y2F0ZS9jb3BpZXMnKQordGVzdC5yZWxvY2F0ZSgnZ3lwZmlsZXMnLCAncmVsb2NhdGUvZ3lwZmls
ZXMnKQorCit0ZXN0LndyaXRhYmxlKHRlc3Qud29ya3BhdGgoJ3JlbG9jYXRlL2NvcGllcycpLCBG
YWxzZSkKKwordGVzdC53cml0YWJsZSh0ZXN0LndvcmtwYXRoKCdyZWxvY2F0ZS9jb3BpZXMvYnVp
bGQnKSwgVHJ1ZSkKK3Rlc3Qud3JpdGFibGUodGVzdC53b3JrcGF0aCgncmVsb2NhdGUvY29waWVz
L2NvcGllcy1vdXQnKSwgVHJ1ZSkKK3Rlc3Qud3JpdGFibGUodGVzdC53b3JrcGF0aCgncmVsb2Nh
dGUvY29waWVzL3N1YmRpci9idWlsZCcpLCBUcnVlKQordGVzdC53cml0YWJsZSh0ZXN0Lndvcmtw
YXRoKCdyZWxvY2F0ZS9jb3BpZXMvc3ViZGlyL2NvcGllcy1vdXQnKSwgVHJ1ZSkKKwordGVzdC5i
dWlsZCgnY29waWVzLmd5cCcsIHRlc3QuQUxMLCBjaGRpcj0ncmVsb2NhdGUvZ3lwZmlsZXMnKQor
Cit0ZXN0Lm11c3RfbWF0Y2goWydyZWxvY2F0ZScsICdjb3BpZXMnLCAnY29waWVzLW91dCcsICdm
aWxlMSddLAorICAgICAgICAgICAgICAgICJmaWxlMSBjb250ZW50c1xuIikKKworaWYgdGVzdC5m
b3JtYXQgPT0gJ3hjb2RlJzoKKyAgY2hkaXIgPSAncmVsb2NhdGUvY29waWVzL2J1aWxkJworZWxp
ZiB0ZXN0LmZvcm1hdCA9PSAnbWFrZSc6CisgIGNoZGlyID0gJ3JlbG9jYXRlL2d5cGZpbGVzL291
dCcKK2Vsc2U6CisgIGNoZGlyID0gJ3JlbG9jYXRlL2d5cGZpbGVzJwordGVzdC5tdXN0X21hdGNo
KFtjaGRpciwgJ0RlZmF1bHQnLCAnY29waWVzLW91dCcsICdmaWxlMiddLCAiZmlsZTIgY29udGVu
dHNcbiIpCisKK3Rlc3QubXVzdF9tYXRjaChbJ3JlbG9jYXRlJywgJ2NvcGllcycsICdzdWJkaXIn
LCAnY29waWVzLW91dCcsICdmaWxlMyddLAorICAgICAgICAgICAgICAgICJmaWxlMyBjb250ZW50
c1xuIikKKworaWYgdGVzdC5mb3JtYXQgPT0gJ3hjb2RlJzoKKyAgY2hkaXIgPSAncmVsb2NhdGUv
Y29waWVzL3N1YmRpci9idWlsZCcKK2VsaWYgdGVzdC5mb3JtYXQgPT0gJ21ha2UnOgorICBjaGRp
ciA9ICdyZWxvY2F0ZS9neXBmaWxlcy9vdXQnCitlbHNlOgorICBjaGRpciA9ICdyZWxvY2F0ZS9n
eXBmaWxlcycKK3Rlc3QubXVzdF9tYXRjaChbY2hkaXIsICdEZWZhdWx0JywgJ2NvcGllcy1vdXQn
LCAnZmlsZTQnXSwgImZpbGU0IGNvbnRlbnRzXG4iKQorCit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2d5cHRl
c3QtcmVsb2NhdGUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0
cHV0L2d5cHRlc3QtcmVsb2NhdGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQxYzJiZDZiY2RjYzVlZDhlMDBi
MGY5M2M2NDQ4MTJlZWQ3YmQ4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvZ3lwdGVzdC1yZWxvY2F0ZS5weQpAQCAtMCwwICsx
LDU5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmaWVzIHRoYXQgYSBwcm9qZWN0IGhpZXJh
cmNoeSBjcmVhdGVkIHdpdGggdGhlIC0tZ2VuZXJhdG9yLW91dHB1dD0KK29wdGlvbiBjYW4gYmUg
YnVpbHQgZXZlbiB3aGVuIGl0J3MgcmVsb2NhdGVkIHRvIGEgZGlmZmVyZW50IHBhdGguCisiIiIK
KworaW1wb3J0IFRlc3RHeXAKKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5cCgpCisKK3Rlc3Qud3Jp
dGFibGUodGVzdC53b3JrcGF0aCgnc3JjJyksIEZhbHNlKQorCit0ZXN0LnJ1bl9neXAoJ3Byb2cx
Lmd5cCcsCisgICAgICAgICAgICAgJy1Ec2V0X3N5bXJvb3Q9MScsCisgICAgICAgICAgICAgJy0t
Z2VuZXJhdG9yLW91dHB1dD0nICsgdGVzdC53b3JrcGF0aCgnZ3lwZmlsZXMnKSwKKyAgICAgICAg
ICAgICBjaGRpcj0nc3JjJykKKwordGVzdC53cml0YWJsZSh0ZXN0LndvcmtwYXRoKCdzcmMnKSwg
VHJ1ZSkKKwordGVzdC5yZWxvY2F0ZSgnc3JjJywgJ3JlbG9jYXRlL3NyYycpCit0ZXN0LnJlbG9j
YXRlKCdneXBmaWxlcycsICdyZWxvY2F0ZS9neXBmaWxlcycpCisKK3Rlc3Qud3JpdGFibGUodGVz
dC53b3JrcGF0aCgncmVsb2NhdGUvc3JjJyksIEZhbHNlKQorCit0ZXN0LndyaXRhYmxlKHRlc3Qu
d29ya3BhdGgoJ3JlbG9jYXRlL3NyYy9idWlsZCcpLCBUcnVlKQordGVzdC53cml0YWJsZSh0ZXN0
LndvcmtwYXRoKCdyZWxvY2F0ZS9zcmMvc3ViZGlyMi9idWlsZCcpLCBUcnVlKQordGVzdC53cml0
YWJsZSh0ZXN0LndvcmtwYXRoKCdyZWxvY2F0ZS9zcmMvc3ViZGlyMy9idWlsZCcpLCBUcnVlKQor
Cit0ZXN0LmJ1aWxkKCdwcm9nMS5neXAnLCB0ZXN0LkFMTCwgY2hkaXI9J3JlbG9jYXRlL2d5cGZp
bGVzJykKKworY2hkaXIgPSAncmVsb2NhdGUvZ3lwZmlsZXMnCisKK2V4cGVjdCA9ICIiIlwKK0hl
bGxvIGZyb20gJXMKK0hlbGxvIGZyb20gaW5jLmgKK0hlbGxvIGZyb20gaW5jMS9pbmNsdWRlMS5o
CitIZWxsbyBmcm9tIGluYzIvaW5jbHVkZTIuaAorSGVsbG8gZnJvbSBpbmMzL2luY2x1ZGUzLmgK
K0hlbGxvIGZyb20gc3ViZGlyMi9kZWVwZXIvZGVlcGVyLmgKKyIiIgorCitpZiB0ZXN0LmZvcm1h
dCA9PSAneGNvZGUnOgorICBjaGRpciA9ICdyZWxvY2F0ZS9zcmMnCit0ZXN0LnJ1bl9idWlsdF9l
eGVjdXRhYmxlKCdwcm9nMScsIGNoZGlyPWNoZGlyLCBzdGRvdXQ9ZXhwZWN0ICUgJ3Byb2cxLmMn
KQorCitpZiB0ZXN0LmZvcm1hdCA9PSAneGNvZGUnOgorICBjaGRpciA9ICdyZWxvY2F0ZS9zcmMv
c3ViZGlyMicKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ3Byb2cyJywgY2hkaXI9Y2hkaXIs
IHN0ZG91dD1leHBlY3QgJSAncHJvZzIuYycpCisKK2lmIHRlc3QuZm9ybWF0ID09ICd4Y29kZSc6
CisgIGNoZGlyID0gJ3JlbG9jYXRlL3NyYy9zdWJkaXIzJwordGVzdC5ydW5fYnVpbHRfZXhlY3V0
YWJsZSgncHJvZzMnLCBjaGRpcj1jaGRpciwgc3Rkb3V0PWV4cGVjdCAlICdwcm9nMy5jJykKKwor
dGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
Z2VuZXJhdG9yLW91dHB1dC9neXB0ZXN0LXJ1bGVzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9neXB0ZXN0LXJ1bGVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1YjY3
NGZmYTdlNGJhNGUwMTIxZWFmNjBmYzczN2I1ZGY2YTM4N2EKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L2d5cHRlc3QtcnVsZXMu
cHkKQEAgLTAsMCArMSw1OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0
IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyAtLWdlbmVy
YXRvci1vdXRwdXQ9IGJlaGF2aW9yIHdoZW4gdXNpbmcgcnVsZXMuCisiIiIKKworaW1wb3J0IFRl
c3RHeXAKKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5cCgpCisKK3Rlc3Qud3JpdGFibGUodGVzdC53
b3JrcGF0aCgncnVsZXMnKSwgRmFsc2UpCisKK3Rlc3QucnVuX2d5cCgncnVsZXMuZ3lwJywKKyAg
ICAgICAgICAgICAnLS1nZW5lcmF0b3Itb3V0cHV0PScgKyB0ZXN0LndvcmtwYXRoKCdneXBmaWxl
cycpLAorICAgICAgICAgICAgIGNoZGlyPSdydWxlcycpCisKK3Rlc3Qud3JpdGFibGUodGVzdC53
b3JrcGF0aCgncnVsZXMnKSwgVHJ1ZSkKKwordGVzdC5yZWxvY2F0ZSgncnVsZXMnLCAncmVsb2Nh
dGUvcnVsZXMnKQordGVzdC5yZWxvY2F0ZSgnZ3lwZmlsZXMnLCAncmVsb2NhdGUvZ3lwZmlsZXMn
KQorCit0ZXN0LndyaXRhYmxlKHRlc3Qud29ya3BhdGgoJ3JlbG9jYXRlL3J1bGVzJyksIEZhbHNl
KQorCit0ZXN0LndyaXRhYmxlKHRlc3Qud29ya3BhdGgoJ3JlbG9jYXRlL3J1bGVzL2J1aWxkJyks
IFRydWUpCit0ZXN0LndyaXRhYmxlKHRlc3Qud29ya3BhdGgoJ3JlbG9jYXRlL3J1bGVzL3N1YmRp
cjEvYnVpbGQnKSwgVHJ1ZSkKK3Rlc3Qud3JpdGFibGUodGVzdC53b3JrcGF0aCgncmVsb2NhdGUv
cnVsZXMvc3ViZGlyMi9idWlsZCcpLCBUcnVlKQordGVzdC53cml0YWJsZSh0ZXN0LndvcmtwYXRo
KCdyZWxvY2F0ZS9ydWxlcy9zdWJkaXIyL3J1bGVzLW91dCcpLCBUcnVlKQorCit0ZXN0LmJ1aWxk
KCdydWxlcy5neXAnLCB0ZXN0LkFMTCwgY2hkaXI9J3JlbG9jYXRlL2d5cGZpbGVzJykKKworZXhw
ZWN0ID0gIiIiXAorSGVsbG8gZnJvbSBwcm9ncmFtLmMKK0hlbGxvIGZyb20gZnVuY3Rpb24xLmlu
MQorSGVsbG8gZnJvbSBmdW5jdGlvbjIuaW4xCitIZWxsbyBmcm9tIGRlZmluZTMuaW4wCitIZWxs
byBmcm9tIGRlZmluZTQuaW4wCisiIiIKKworaWYgdGVzdC5mb3JtYXQgPT0gJ3hjb2RlJzoKKyAg
Y2hkaXIgPSAncmVsb2NhdGUvcnVsZXMvc3ViZGlyMScKK2Vsc2U6CisgIGNoZGlyID0gJ3JlbG9j
YXRlL2d5cGZpbGVzJwordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgncHJvZ3JhbScsIGNoZGly
PWNoZGlyLCBzdGRvdXQ9ZXhwZWN0KQorCit0ZXN0Lm11c3RfbWF0Y2goJ3JlbG9jYXRlL3J1bGVz
L3N1YmRpcjIvcnVsZXMtb3V0L2ZpbGUxLm91dCcsCisgICAgICAgICAgICAgICAgIkhlbGxvIGZy
b20gZmlsZTEuaW4wXG4iKQordGVzdC5tdXN0X21hdGNoKCdyZWxvY2F0ZS9ydWxlcy9zdWJkaXIy
L3J1bGVzLW91dC9maWxlMi5vdXQnLAorICAgICAgICAgICAgICAgICJIZWxsbyBmcm9tIGZpbGUy
LmluMFxuIikKK3Rlc3QubXVzdF9tYXRjaCgncmVsb2NhdGUvcnVsZXMvc3ViZGlyMi9ydWxlcy1v
dXQvZmlsZTMub3V0JywKKyAgICAgICAgICAgICAgICAiSGVsbG8gZnJvbSBmaWxlMy5pbjFcbiIp
Cit0ZXN0Lm11c3RfbWF0Y2goJ3JlbG9jYXRlL3J1bGVzL3N1YmRpcjIvcnVsZXMtb3V0L2ZpbGU0
Lm91dCcsCisgICAgICAgICAgICAgICAgIkhlbGxvIGZyb20gZmlsZTQuaW4xXG4iKQorCit0ZXN0
LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5l
cmF0b3Itb3V0cHV0L2d5cHRlc3Qtc3ViZGlyMi1kZWVwLnB5IGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9neXB0ZXN0LXN1YmRpcjItZGVlcC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYTFiNDcyZWIxYzczNDA0NWNhMDdhNWIyN2NjYzU4MzgxNWY1NjJhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9neXB0
ZXN0LXN1YmRpcjItZGVlcC5weQpAQCAtMCwwICsxLDM2IEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIK
K1ZlcmlmaWVzIGJ1aWxkaW5nIGEgdGFyZ2V0IGZyb20gYSAuZ3lwIGZpbGUgYSBmZXcgc3ViZGly
ZWN0b3JpZXMKK2RlZXAgd2hlbiB0aGUgLS1nZW5lcmF0b3Itb3V0cHV0PSBvcHRpb24gaXMgdXNl
ZCB0byBwdXQgdGhlIGJ1aWxkCitjb25maWd1cmF0aW9uIGZpbGVzIGluIGEgc2VwYXJhdGUgZGly
ZWN0b3J5IHRyZWUuCisiIiIKKworaW1wb3J0IFRlc3RHeXAKKwordGVzdCA9IFRlc3RHeXAuVGVz
dEd5cCgpCisKK3Rlc3Qud3JpdGFibGUodGVzdC53b3JrcGF0aCgnc3JjJyksIEZhbHNlKQorCit0
ZXN0LndyaXRhYmxlKHRlc3Qud29ya3BhdGgoJ3NyYy9zdWJkaXIyL2RlZXBlci9idWlsZCcpLCBU
cnVlKQorCit0ZXN0LnJ1bl9neXAoJ2RlZXBlci5neXAnLAorICAgICAgICAgICAgICctRHNldF9z
eW1yb290PTEnLAorICAgICAgICAgICAgICctLWdlbmVyYXRvci1vdXRwdXQ9JyArIHRlc3Qud29y
a3BhdGgoJ2d5cGZpbGVzJyksCisgICAgICAgICAgICAgY2hkaXI9J3NyYy9zdWJkaXIyL2RlZXBl
cicpCisKK3Rlc3QuYnVpbGQoJ2RlZXBlci5neXAnLCB0ZXN0LkFMTCwgY2hkaXI9J2d5cGZpbGVz
JykKKworY2hkaXIgPSAnZ3lwZmlsZXMnCisKK2lmIHRlc3QuZm9ybWF0ID09ICd4Y29kZSc6Cisg
IGNoZGlyID0gJ3NyYy9zdWJkaXIyL2RlZXBlcicKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUo
J2RlZXBlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZGlyPWNoZGlyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9IkhlbGxvIGZyb20gZGVlcGVyLmNcbiIpCisKK3Rl
c3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dl
bmVyYXRvci1vdXRwdXQvZ3lwdGVzdC10b3AtYWxsLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9neXB0ZXN0LXRvcC1hbGwucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAy
Y2ViMjc5Nzg4YmQxNDcwYmQyYjE0OTdhOTg5ODZmYjQ1NmUyOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvZ3lwdGVzdC10b3At
YWxsLnB5CkBAIC0wLDAgKzEsNTMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHly
aWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgorVmVyaWZpZXMgYnVp
bGRpbmcgYSBwcm9qZWN0IGhpZXJhcmNoeSBjcmVhdGVkIHdoZW4gdGhlIC0tZ2VuZXJhdG9yLW91
dHB1dD0KK29wdGlvbiBpcyB1c2VkIHRvIHB1dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmaWxl
cyBpbiBhIHNlcGFyYXRlCitkaXJlY3RvcnkgdHJlZS4KKyIiIgorCitpbXBvcnQgVGVzdEd5cAor
Cit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lwKCkKKwordGVzdC53cml0YWJsZSh0ZXN0LndvcmtwYXRo
KCdzcmMnKSwgRmFsc2UpCisKK3Rlc3QucnVuX2d5cCgncHJvZzEuZ3lwJywKKyAgICAgICAgICAg
ICAnLURzZXRfc3ltcm9vdD0xJywKKyAgICAgICAgICAgICAnLS1nZW5lcmF0b3Itb3V0cHV0PScg
KyB0ZXN0LndvcmtwYXRoKCdneXBmaWxlcycpLAorICAgICAgICAgICAgIGNoZGlyPSdzcmMnKQor
Cit0ZXN0LndyaXRhYmxlKHRlc3Qud29ya3BhdGgoJ3NyYy9idWlsZCcpLCBUcnVlKQordGVzdC53
cml0YWJsZSh0ZXN0LndvcmtwYXRoKCdzcmMvc3ViZGlyMi9idWlsZCcpLCBUcnVlKQordGVzdC53
cml0YWJsZSh0ZXN0LndvcmtwYXRoKCdzcmMvc3ViZGlyMy9idWlsZCcpLCBUcnVlKQorCit0ZXN0
LmJ1aWxkKCdwcm9nMS5neXAnLCB0ZXN0LkFMTCwgY2hkaXI9J2d5cGZpbGVzJykKKworY2hkaXIg
PSAnZ3lwZmlsZXMnCisKK2V4cGVjdCA9ICIiIlwKK0hlbGxvIGZyb20gJXMKK0hlbGxvIGZyb20g
aW5jLmgKK0hlbGxvIGZyb20gaW5jMS9pbmNsdWRlMS5oCitIZWxsbyBmcm9tIGluYzIvaW5jbHVk
ZTIuaAorSGVsbG8gZnJvbSBpbmMzL2luY2x1ZGUzLmgKK0hlbGxvIGZyb20gc3ViZGlyMi9kZWVw
ZXIvZGVlcGVyLmgKKyIiIgorCitpZiB0ZXN0LmZvcm1hdCA9PSAneGNvZGUnOgorICBjaGRpciA9
ICdzcmMnCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdwcm9nMScsIGNoZGlyPWNoZGlyLCBz
dGRvdXQ9ZXhwZWN0ICUgJ3Byb2cxLmMnKQorCitpZiB0ZXN0LmZvcm1hdCA9PSAneGNvZGUnOgor
ICBjaGRpciA9ICdzcmMvc3ViZGlyMicKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ3Byb2cy
JywgY2hkaXI9Y2hkaXIsIHN0ZG91dD1leHBlY3QgJSAncHJvZzIuYycpCisKK2lmIHRlc3QuZm9y
bWF0ID09ICd4Y29kZSc6CisgIGNoZGlyID0gJ3NyYy9zdWJkaXIzJwordGVzdC5ydW5fYnVpbHRf
ZXhlY3V0YWJsZSgncHJvZzMnLCBjaGRpcj1jaGRpciwgc3Rkb3V0PWV4cGVjdCAlICdwcm9nMy5j
JykKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxlcy9jb3B5LWZpbGUucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3J1bGVzL2NvcHktZmlsZS5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45MzhjMzM2YWRiMDFlNTAwZmJhYjUxYTk2ZGVkMzM4MjdhNDM2MDU3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxl
cy9jb3B5LWZpbGUucHkKQEAgLTAsMCArMSwxMiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisK
KyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworaW1wb3J0IHN5
cworCitjb250ZW50cyA9IG9wZW4oc3lzLmFyZ3ZbMV0sICdyJykucmVhZCgpCitvcGVuKHN5cy5h
cmd2WzJdLCAnd2InKS53cml0ZShjb250ZW50cykKKworc3lzLmV4aXQoMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvcnVsZXMvcnVsZXMu
Z3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxlcy9y
dWxlcy5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGRlZDU5YWZmM2UzNGYwZTQ2MTM3YjFhYmRkYmZlMDU1OGU2
ZDIyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVy
YXRvci1vdXRwdXQvcnVsZXMvcnVsZXMuZ3lwCkBAIC0wLDAgKzEsMTYgQEAKKyMgQ29weXJpZ2h0
IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAg
ICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAncHVsbF9pbl9hbGxfYWN0aW9ucycsCisgICAgICAn
dHlwZSc6ICdub25lJywKKyAgICAgICdkZXBlbmRlbmNpZXMnOiBbCisgICAgICAgICdzdWJkaXIx
L2V4ZWN1dGFibGUuZ3lwOionLAorICAgICAgICAnc3ViZGlyMi9ub25lLmd5cDoqJywKKyAgICAg
IF0sCisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2dlbmVyYXRvci1vdXRwdXQvcnVsZXMvc3ViZGlyMS9kZWZpbmUzLmluMCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvcnVsZXMvc3ViZGlyMS9kZWZpbmUz
LmluMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jYzI5YzY0M2YzOTdjZTQ5NjM5NWY0ZjRmOTU2MzI1YjI5YzNlM2Vj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9y
LW91dHB1dC9ydWxlcy9zdWJkaXIxL2RlZmluZTMuaW4wCkBAIC0wLDAgKzEgQEAKKyNkZWZpbmUg
U1RSSU5HMyAiSGVsbG8gZnJvbSBkZWZpbmUzLmluMFxuIgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxlcy9zdWJkaXIxL2RlZmluZTQu
aW4wIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxlcy9z
dWJkaXIxL2RlZmluZTQuaW4wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5YjA0NjdiMzI4N2YxNjViOTYzNDQzNWQ0
OTExMjA2YWE4ZmM4MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9nZW5lcmF0b3Itb3V0cHV0L3J1bGVzL3N1YmRpcjEvZGVmaW5lNC5pbjAKQEAgLTAsMCAr
MSBAQAorI2RlZmluZSBTVFJJTkc0ICJIZWxsbyBmcm9tIGRlZmluZTQuaW4wXG4iCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3J1bGVzL3N1
YmRpcjEvZXhlY3V0YWJsZS5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0
b3Itb3V0cHV0L3J1bGVzL3N1YmRpcjEvZXhlY3V0YWJsZS5neXAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZkODlh
MGQ1MjNkZGM0OTgyMGM5NjdkMjMxN2E2MGM3Yzk0ZTdiMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvcnVsZXMvc3ViZGlyMS9l
eGVjdXRhYmxlLmd5cApAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAgICAgJ3Rh
cmdldF9uYW1lJzogJ3Byb2dyYW0nLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAg
ICAnbXN2c19jeWd3aW5fc2hlbGwnOiAwLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdw
cm9ncmFtLmMnLAorICAgICAgICAnZnVuY3Rpb24xLmluMScsCisgICAgICAgICdmdW5jdGlvbjIu
aW4xJywKKyAgICAgICAgJ2RlZmluZTMuaW4wJywKKyAgICAgICAgJ2RlZmluZTQuaW4wJywKKyAg
ICAgIF0sCisgICAgICAnaW5jbHVkZV9kaXJzJzogWworICAgICAgICAnPChJTlRFUk1FRElBVEVf
RElSKScsCisgICAgICBdLAorICAgICAgJ3J1bGVzJzogWworICAgICAgICB7CisgICAgICAgICAg
J3J1bGVfbmFtZSc6ICdjb3B5X2ZpbGVfMCcsCisgICAgICAgICAgJ2V4dGVuc2lvbic6ICdpbjAn
LAorICAgICAgICAgICdpbnB1dHMnOiBbCisgICAgICAgICAgICAnLi4vY29weS1maWxlLnB5JywK
KyAgICAgICAgICBdLAorICAgICAgICAgICdvdXRwdXRzJzogWworICAgICAgICAgICAgIyBUT0RP
OiAgZml4IFNDb25zIGFuZCBNYWtlIHRvIHN1cHBvcnQgZ2VuZXJhdGVkIGZpbGVzIG5vdAorICAg
ICAgICAgICAgIyBpbiBhIHZhcmlhYmxlLW5hbWVkIHBhdGggbGlrZSA8KElOVEVSTUVESUFURV9E
SVIpCisgICAgICAgICAgICAjJzwoUlVMRV9JTlBVVF9ST09UKS5jJywKKyAgICAgICAgICAgICc8
KElOVEVSTUVESUFURV9ESVIpLzwoUlVMRV9JTlBVVF9ST09UKS5oJywKKyAgICAgICAgICBdLAor
ICAgICAgICAgICdhY3Rpb24nOiBbCisgICAgICAgICAgICAncHl0aG9uJywgJzwoX2lucHV0cykn
LCAnPChSVUxFX0lOUFVUX1BBVEgpJywgJzxAKF9vdXRwdXRzKScsCisgICAgICAgICAgXSwKKyAg
ICAgICAgICAncHJvY2Vzc19vdXRwdXRzX2FzX3NvdXJjZXMnOiAwLAorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgJ3J1bGVfbmFtZSc6ICdjb3B5X2ZpbGVfMScsCisgICAgICAgICAg
J2V4dGVuc2lvbic6ICdpbjEnLAorICAgICAgICAgICdpbnB1dHMnOiBbCisgICAgICAgICAgICAn
Li4vY29weS1maWxlLnB5JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdvdXRwdXRzJzogWwor
ICAgICAgICAgICAgIyBUT0RPOiAgZml4IFNDb25zIGFuZCBNYWtlIHRvIHN1cHBvcnQgZ2VuZXJh
dGVkIGZpbGVzIG5vdAorICAgICAgICAgICAgIyBpbiBhIHZhcmlhYmxlLW5hbWVkIHBhdGggbGlr
ZSA8KElOVEVSTUVESUFURV9ESVIpCisgICAgICAgICAgICAjJzwoUlVMRV9JTlBVVF9ST09UKS5j
JywKKyAgICAgICAgICAgICc8KElOVEVSTUVESUFURV9ESVIpLzwoUlVMRV9JTlBVVF9ST09UKS5j
JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdhY3Rpb24nOiBbCisgICAgICAgICAgICAncHl0
aG9uJywgJzwoX2lucHV0cyknLCAnPChSVUxFX0lOUFVUX1BBVEgpJywgJzxAKF9vdXRwdXRzKScs
CisgICAgICAgICAgXSwKKyAgICAgICAgICAncHJvY2Vzc19vdXRwdXRzX2FzX3NvdXJjZXMnOiAx
LAorICAgICAgICB9LAorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxlcy9zdWJkaXIxL2Z1
bmN0aW9uMS5pbjEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0
L3J1bGVzL3N1YmRpcjEvZnVuY3Rpb24xLmluMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDVlN2NhMTZiYjI3MzU1
OTU2M2FlZjEwOWZhYzk3Njg5MWJmNjVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxlcy9zdWJkaXIxL2Z1bmN0aW9uMS5p
bjEKQEAgLTAsMCArMSw2IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKwordm9pZCBmdW5jdGlvbjEo
dm9pZCkKK3sKKyAgcHJpbnRmKCJIZWxsbyBmcm9tIGZ1bmN0aW9uMS5pbjFcbiIpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxl
cy9zdWJkaXIxL2Z1bmN0aW9uMi5pbjEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5l
cmF0b3Itb3V0cHV0L3J1bGVzL3N1YmRpcjEvZnVuY3Rpb24yLmluMQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmFk
NDNmOWNmNDViMjViODM0MzdjNGM2YjFjNzY0ZmY2MmVjM2FlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxlcy9zdWJkaXIx
L2Z1bmN0aW9uMi5pbjEKQEAgLTAsMCArMSw2IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKwordm9p
ZCBmdW5jdGlvbjIodm9pZCkKK3sKKyAgcHJpbnRmKCJIZWxsbyBmcm9tIGZ1bmN0aW9uMi5pbjFc
biIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9y
LW91dHB1dC9ydWxlcy9zdWJkaXIxL3Byb2dyYW0uYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2dlbmVyYXRvci1vdXRwdXQvcnVsZXMvc3ViZGlyMS9wcm9ncmFtLmMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjdmZDMxZWQ0ZTdiMDk3ZTgzMDcyZDMwNDhhODM4MTFmODM5N2JkZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvcnVsZXMvc3Vi
ZGlyMS9wcm9ncmFtLmMKQEAgLTAsMCArMSwxOCBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5j
bHVkZSAiZGVmaW5lMy5oIgorI2luY2x1ZGUgImRlZmluZTQuaCIKKworZXh0ZXJuIHZvaWQgZnVu
Y3Rpb24xKHZvaWQpOworZXh0ZXJuIHZvaWQgZnVuY3Rpb24yKHZvaWQpOworZXh0ZXJuIHZvaWQg
ZnVuY3Rpb24zKHZvaWQpOworZXh0ZXJuIHZvaWQgZnVuY3Rpb240KHZvaWQpOworCitpbnQgbWFp
bihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICBwcmludGYoIkhlbGxvIGZyb20gcHJvZ3Jh
bS5jXG4iKTsKKyAgZnVuY3Rpb24xKCk7CisgIGZ1bmN0aW9uMigpOworICBwcmludGYoIiVzIiwg
U1RSSU5HMyk7CisgIHByaW50ZigiJXMiLCBTVFJJTkc0KTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3J1bGVz
L3N1YmRpcjIvZmlsZTEuaW4wIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9y
LW91dHB1dC9ydWxlcy9zdWJkaXIyL2ZpbGUxLmluMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWNhNjRmNGNlMGZi
ODgzNDQ2ZGQ3M2M2MTUyM2NkOTM4NjAwZGJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxlcy9zdWJkaXIyL2ZpbGUxLmlu
MApAQCAtMCwwICsxIEBACitIZWxsbyBmcm9tIGZpbGUxLmluMApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxlcy9zdWJkaXIyL2ZpbGUy
LmluMCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvcnVsZXMv
c3ViZGlyMi9maWxlMi5pbjAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODBhMjgxYTJhOWExOWQwMzhhZWMzYTIyN2E0
ZDcyNzA3MWY2ZTZkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2dlbmVyYXRvci1vdXRwdXQvcnVsZXMvc3ViZGlyMi9maWxlMi5pbjAKQEAgLTAsMCArMSBA
QAorSGVsbG8gZnJvbSBmaWxlMi5pbjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvcnVsZXMvc3ViZGlyMi9maWxlMy5pbjEgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3J1bGVzL3N1YmRpcjIvZmlsZTMu
aW4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYwYWUyZTc5MzExMzZkNjNlOGE2YjQzODA1ZTkxNWE3MmFjOTRlZDUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3It
b3V0cHV0L3J1bGVzL3N1YmRpcjIvZmlsZTMuaW4xCkBAIC0wLDAgKzEgQEAKK0hlbGxvIGZyb20g
ZmlsZTMuaW4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0
b3Itb3V0cHV0L3J1bGVzL3N1YmRpcjIvZmlsZTQuaW4xIGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxlcy9zdWJkaXIyL2ZpbGU0LmluMQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YTNjMzA3MjBlN2FmMGIxZTQzMGRiNjVjMDEwMmIxZDlhZGNiYjcwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxlcy9z
dWJkaXIyL2ZpbGU0LmluMQpAQCAtMCwwICsxIEBACitIZWxsbyBmcm9tIGZpbGU0LmluMQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxl
cy9zdWJkaXIyL25vbmUuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9y
LW91dHB1dC9ydWxlcy9zdWJkaXIyL25vbmUuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NGNiZDljYjc1ZjZj
OTA0YWViOTdjZmE0YzVmOWIwMDU2OTZiZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3J1bGVzL3N1YmRpcjIvbm9uZS5neXAK
QEAgLTAsMCArMSw0OSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorCit7CisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdm
aWxlcycsCisgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICdtc3ZzX2N5Z3dpbl9zaGVsbCc6
IDAsCisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ2ZpbGUxLmluMCcsCisgICAgICAgICdm
aWxlMi5pbjAnLAorICAgICAgICAnZmlsZTMuaW4xJywKKyAgICAgICAgJ2ZpbGU0LmluMScsCisg
ICAgICBdLAorICAgICAgJ3J1bGVzJzogWworICAgICAgICB7CisgICAgICAgICAgJ3J1bGVfbmFt
ZSc6ICdjb3B5X2ZpbGVfMCcsCisgICAgICAgICAgJ2V4dGVuc2lvbic6ICdpbjAnLAorICAgICAg
ICAgICdpbnB1dHMnOiBbCisgICAgICAgICAgICAnLi4vY29weS1maWxlLnB5JywKKyAgICAgICAg
ICBdLAorICAgICAgICAgICdvdXRwdXRzJzogWworICAgICAgICAgICAgJ3J1bGVzLW91dC88KFJV
TEVfSU5QVVRfUk9PVCkub3V0JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdhY3Rpb24nOiBb
CisgICAgICAgICAgICAncHl0aG9uJywgJzwoX2lucHV0cyknLCAnPChSVUxFX0lOUFVUX1BBVEgp
JywgJzxAKF9vdXRwdXRzKScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAncHJvY2Vzc19vdXRw
dXRzX2FzX3NvdXJjZXMnOiAwLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgJ3J1
bGVfbmFtZSc6ICdjb3B5X2ZpbGVfMScsCisgICAgICAgICAgJ2V4dGVuc2lvbic6ICdpbjEnLAor
ICAgICAgICAgICdpbnB1dHMnOiBbCisgICAgICAgICAgICAnLi4vY29weS1maWxlLnB5JywKKyAg
ICAgICAgICBdLAorICAgICAgICAgICdvdXRwdXRzJzogWworICAgICAgICAgICAgJ3J1bGVzLW91
dC88KFJVTEVfSU5QVVRfUk9PVCkub3V0JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdhY3Rp
b24nOiBbCisgICAgICAgICAgICAncHl0aG9uJywgJzwoX2lucHV0cyknLCAnPChSVUxFX0lOUFVU
X1BBVEgpJywgJzxAKF9vdXRwdXRzKScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAncHJvY2Vz
c19vdXRwdXRzX2FzX3NvdXJjZXMnOiAxLAorICAgICAgICB9LAorICAgICAgXSwKKyAgICB9LAor
ICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9y
LW91dHB1dC9ydWxlcy9zdWJkaXIyL3J1bGVzLW91dC9SRUFETUUudHh0IGIvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9ydWxlcy9zdWJkaXIyL3J1bGVzLW91dC9S
RUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiMDUyYzlhMjQ1NDYzMTAzZmY2YzQ1Yjg2YWU5ZTkzZDVj
YzQyNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5l
cmF0b3Itb3V0cHV0L3J1bGVzL3N1YmRpcjIvcnVsZXMtb3V0L1JFQURNRS50eHQKQEAgLTAsMCAr
MSw0IEBACitBIHBsYWNlLWhvbGRlciBmb3IgdGhpcyBYY29kZSBidWlsZCBvdXRwdXQgZGlyZWN0
b3J5LCBzbyB0aGF0IHRoZQ0KK3Rlc3Qgc2NyaXB0IGNhbiB2ZXJpZnkgdGhhdCAueGNvZGVwcm9q
IGZpbGVzIGFyZSBub3QgY3JlYXRlZCBpbg0KK3RoZWlyIG5vcm1hbCBsb2NhdGlvbiBieSBtYWtp
bmcgdGhlIHNyYy8gcmVhZC1vbmx5LCBhbmQgdGhlbg0KK3NlbGVjdGl2ZWx5IG1ha2luZyB0aGlz
IGJ1aWxkIGRpcmVjdG9yeSB3cml0YWJsZS4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3NyYy9pbmMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvc3JjL2luYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3YWExYTVh
NzQ0M2ZiZDJhYTc0YTNhZDkxODcwNWUyNDlkMjBkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3NyYy9pbmMuaApAQCAtMCww
ICsxIEBACisjZGVmaW5lIElOQ19TVFJJTkcgICAgICAiaW5jLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3NyYy9pbmMxL2luY2x1ZGUx
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3NyYy9pbmMx
L2luY2x1ZGUxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ1OTA2NWZjOTBhNzIxNTQwMzY2NTQxN2YwYjU5YjY0
YmQ1NDk0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dl
bmVyYXRvci1vdXRwdXQvc3JjL2luYzEvaW5jbHVkZTEuaApAQCAtMCwwICsxIEBACisjZGVmaW5l
IElOQ0xVREUxX1NUUklORyAiaW5jMS9pbmNsdWRlMS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9zcmMvcHJvZzEuYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvc3JjL3Byb2cxLmMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjU2ZjgxZDVmZTVkNzkzNDdhNDgwOTFkZjIwZDA4OGNmNjdkYzJhMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvc3JjL3By
b2cxLmMKQEAgLTAsMCArMSwxOCBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJp
bmMuaCIKKyNpbmNsdWRlICJpbmNsdWRlMS5oIgorI2luY2x1ZGUgImluY2x1ZGUyLmgiCisjaW5j
bHVkZSAiaW5jbHVkZTMuaCIKKyNpbmNsdWRlICJkZWVwZXIuaCIKKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgcHJpbnRmKCJIZWxsbyBmcm9tIHByb2cxLmNcbiIpOwor
ICBwcmludGYoIkhlbGxvIGZyb20gJXNcbiIsIElOQ19TVFJJTkcpOworICBwcmludGYoIkhlbGxv
IGZyb20gJXNcbiIsIElOQ0xVREUxX1NUUklORyk7CisgIHByaW50ZigiSGVsbG8gZnJvbSAlc1xu
IiwgSU5DTFVERTJfU1RSSU5HKTsKKyAgcHJpbnRmKCJIZWxsbyBmcm9tICVzXG4iLCBJTkNMVURF
M19TVFJJTkcpOworICBwcmludGYoIkhlbGxvIGZyb20gJXNcbiIsIERFRVBFUl9TVFJJTkcpOwor
ICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dl
bmVyYXRvci1vdXRwdXQvc3JjL3Byb2cxLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2dlbmVyYXRvci1vdXRwdXQvc3JjL3Byb2cxLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTBlNmZiMGE3ZWRk
NzFhMTk4OWNkZDQyNWRiOGIyNzQ1NGZmZmJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9zcmMvcHJvZzEuZ3lwCkBAIC0wLDAg
KzEsMjggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKwor
eworICAnaW5jbHVkZXMnOiBbCisgICAgJ3N5bXJvb3QuZ3lwaScsCisgIF0sCisgICd0YXJnZXRz
JzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdwcm9nMScsCisgICAgICAndHlwZSc6
ICdleGVjdXRhYmxlJywKKyAgICAgICdkZXBlbmRlbmNpZXMnOiBbCisgICAgICAgICdzdWJkaXIy
L3Byb2cyLmd5cDpwcm9nMicsCisgICAgICBdLAorICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKKyAg
ICAgICAgJy4nLAorICAgICAgICAnaW5jMScsCisgICAgICAgICdzdWJkaXIyL2luYzInLAorICAg
ICAgICAnc3ViZGlyMy9pbmMzJywKKyAgICAgICAgJ3N1YmRpcjIvZGVlcGVyJywKKyAgICAgIF0s
CisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ3Byb2cxLmMnLAorICAgICAgXSwKKyAgICB9
LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJh
dG9yLW91dHB1dC9zcmMvc3ViZGlyMi9kZWVwZXIvZGVlcGVyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3NyYy9zdWJkaXIyL2RlZXBlci9kZWVwZXIuYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NmM0OWQxZjc4Yjk3ODlkMDAyZGQ5MTIzN2NiNDViYzU0MmVjNjZiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1
dC9zcmMvc3ViZGlyMi9kZWVwZXIvZGVlcGVyLmMKQEAgLTAsMCArMSw3IEBACisjaW5jbHVkZSA8
c3RkaW8uaD4KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgcHJpbnRm
KCJIZWxsbyBmcm9tIGRlZXBlci5jXG4iKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3NyYy9zdWJkaXIyL2Rl
ZXBlci9kZWVwZXIuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91
dHB1dC9zcmMvc3ViZGlyMi9kZWVwZXIvZGVlcGVyLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjQ4NzcwODcy
Mzc3MDk0Y2Q1NzBhMzY4YWQ3ODRjMTFiZTBlMDM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9zcmMvc3ViZGlyMi9kZWVwZXIv
ZGVlcGVyLmd5cApAQCAtMCwwICsxLDE4IEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ2luY2x1ZGVzJzogWworICAgICcuLi8uLi9zeW1yb290
Lmd5cGknLAorICBdLAorICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUn
OiAnZGVlcGVyJywKKyAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAorICAgICAgJ3NvdXJjZXMn
OiBbCisgICAgICAgICdkZWVwZXIuYycsCisgICAgICBdLAorICAgIH0sCisgIF0sCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3NyYy9z
dWJkaXIyL2RlZXBlci9kZWVwZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVy
YXRvci1vdXRwdXQvc3JjL3N1YmRpcjIvZGVlcGVyL2RlZXBlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2NDg0
YTBmZTU4NjY2YzdlNGVkN2Q3NDJhNDEwZGFjNGY3NmYzM2EKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3NyYy9zdWJkaXIyL2Rl
ZXBlci9kZWVwZXIuaApAQCAtMCwwICsxIEBACisjZGVmaW5lIERFRVBFUl9TVFJJTkcgICAic3Vi
ZGlyMi9kZWVwZXIvZGVlcGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9nZW5lcmF0b3Itb3V0cHV0L3NyYy9zdWJkaXIyL2luYzIvaW5jbHVkZTIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvc3JjL3N1YmRpcjIvaW5jMi9p
bmNsdWRlMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjY2ZhNWRlYTc5ZmVhM2Q1MjI5NTQ0NzE3ZWNjNjczYzAw
NTk3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5l
cmF0b3Itb3V0cHV0L3NyYy9zdWJkaXIyL2luYzIvaW5jbHVkZTIuaApAQCAtMCwwICsxIEBACisj
ZGVmaW5lIElOQ0xVREUyX1NUUklORyAiaW5jMi9pbmNsdWRlMi5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9zcmMvc3ViZGlyMi9wcm9n
Mi5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9zcmMvc3Vi
ZGlyMi9wcm9nMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4ZDZjODRkMTExYzBkODYzNzRjMWVmOTUxOTAxYzA5
OWMzOWNiMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9n
ZW5lcmF0b3Itb3V0cHV0L3NyYy9zdWJkaXIyL3Byb2cyLmMKQEAgLTAsMCArMSwxOCBAQAorI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJpbmMuaCIKKyNpbmNsdWRlICJpbmNsdWRlMS5o
IgorI2luY2x1ZGUgImluY2x1ZGUyLmgiCisjaW5jbHVkZSAiaW5jbHVkZTMuaCIKKyNpbmNsdWRl
ICJkZWVwZXIuaCIKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgcHJp
bnRmKCJIZWxsbyBmcm9tIHByb2cyLmNcbiIpOworICBwcmludGYoIkhlbGxvIGZyb20gJXNcbiIs
IElOQ19TVFJJTkcpOworICBwcmludGYoIkhlbGxvIGZyb20gJXNcbiIsIElOQ0xVREUxX1NUUklO
Ryk7CisgIHByaW50ZigiSGVsbG8gZnJvbSAlc1xuIiwgSU5DTFVERTJfU1RSSU5HKTsKKyAgcHJp
bnRmKCJIZWxsbyBmcm9tICVzXG4iLCBJTkNMVURFM19TVFJJTkcpOworICBwcmludGYoIkhlbGxv
IGZyb20gJXNcbiIsIERFRVBFUl9TVFJJTkcpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvc3JjL3N1YmRpcjIv
cHJvZzIuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9z
cmMvc3ViZGlyMi9wcm9nMi5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzE3NmVkOGJlNzRlZjFmNzk2MzY2YTll
YTY3YThiMjFmNzc0OTc5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvc3JjL3N1YmRpcjIvcHJvZzIuZ3lwCkBAIC0wLDAgKzEs
MjggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworewor
ICAnaW5jbHVkZXMnOiBbCisgICAgJy4uL3N5bXJvb3QuZ3lwaScsCisgIF0sCisgICd0YXJnZXRz
JzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdwcm9nMicsCisgICAgICAndHlwZSc6
ICdleGVjdXRhYmxlJywKKyAgICAgICdpbmNsdWRlX2RpcnMnOiBbCisgICAgICAgICcuLicsCisg
ICAgICAgICcuLi9pbmMxJywKKyAgICAgICAgJ2luYzInLAorICAgICAgICAnLi4vc3ViZGlyMy9p
bmMzJywKKyAgICAgICAgJ2RlZXBlcicsCisgICAgICBdLAorICAgICAgJ2RlcGVuZGVuY2llcyc6
IFsKKyAgICAgICAgJy4uL3N1YmRpcjMvcHJvZzMuZ3lwOnByb2czJywKKyAgICAgIF0sCisgICAg
ICAnc291cmNlcyc6IFsKKyAgICAgICAgJ3Byb2cyLmMnLAorICAgICAgXSwKKyAgICB9LAorICBd
LAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91
dHB1dC9zcmMvc3ViZGlyMy9pbmMzL2luY2x1ZGUzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9nZW5lcmF0b3Itb3V0cHV0L3NyYy9zdWJkaXIzL2luYzMvaW5jbHVkZTMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iZjUzYmYxZjAwNzBkOWE2Y2NjZGVlNGE0N2M3MzYxMDNhZmM4NjMwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9zcmMv
c3ViZGlyMy9pbmMzL2luY2x1ZGUzLmgKQEAgLTAsMCArMSBAQAorI2RlZmluZSBJTkNMVURFM19T
VFJJTkcgImluYzMvaW5jbHVkZTMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvc3JjL3N1YmRpcjMvcHJvZzMuYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvc3JjL3N1YmRpcjMvcHJvZzMuYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ODQ4YjQ1YWJkNGU3MjU4MjE1YWJhZjA4MzdkNTBkNDBhMWNiMTIzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9yLW91dHB1dC9z
cmMvc3ViZGlyMy9wcm9nMy5jCkBAIC0wLDAgKzEsMTggQEAKKyNpbmNsdWRlIDxzdGRpby5oPgor
CisjaW5jbHVkZSAiaW5jLmgiCisjaW5jbHVkZSAiaW5jbHVkZTEuaCIKKyNpbmNsdWRlICJpbmNs
dWRlMi5oIgorI2luY2x1ZGUgImluY2x1ZGUzLmgiCisjaW5jbHVkZSAiZGVlcGVyLmgiCisKK2lu
dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIHByaW50ZigiSGVsbG8gZnJvbSBw
cm9nMy5jXG4iKTsKKyAgcHJpbnRmKCJIZWxsbyBmcm9tICVzXG4iLCBJTkNfU1RSSU5HKTsKKyAg
cHJpbnRmKCJIZWxsbyBmcm9tICVzXG4iLCBJTkNMVURFMV9TVFJJTkcpOworICBwcmludGYoIkhl
bGxvIGZyb20gJXNcbiIsIElOQ0xVREUyX1NUUklORyk7CisgIHByaW50ZigiSGVsbG8gZnJvbSAl
c1xuIiwgSU5DTFVERTNfU1RSSU5HKTsKKyAgcHJpbnRmKCJIZWxsbyBmcm9tICVzXG4iLCBERUVQ
RVJfU1RSSU5HKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9nZW5lcmF0b3Itb3V0cHV0L3NyYy9zdWJkaXIzL3Byb2czLmd5cCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvc3JjL3N1YmRpcjMvcHJvZzMu
Z3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQ2YzVlMDAwYTI3MjQ3MmU2N2JmNDQzMjU1OTM0MGRmOGFmMjExMmEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9nZW5lcmF0b3It
b3V0cHV0L3NyYy9zdWJkaXIzL3Byb2czLmd5cApAQCAtMCwwICsxLDI1IEBACisjIENvcHlyaWdo
dCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ2luY2x1ZGVzJzogWwor
ICAgICcuLi9zeW1yb290Lmd5cGknLAorICBdLAorICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAg
ICAndGFyZ2V0X25hbWUnOiAncHJvZzMnLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisg
ICAgICAnaW5jbHVkZV9kaXJzJzogWworICAgICAgICAnLi4nLAorICAgICAgICAnLi4vaW5jMScs
CisgICAgICAgICcuLi9zdWJkaXIyL2luYzInLAorICAgICAgICAnaW5jMycsCisgICAgICAgICcu
Li9zdWJkaXIyL2RlZXBlcicsCisgICAgICBdLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAg
ICdwcm9nMy5jJywKKyAgICAgIF0sCisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvc3JjL3N5bXJvb3QuZ3lwaSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2dlbmVyYXRvci1vdXRwdXQvc3JjL3N5bXJvb3Qu
Z3lwaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MTk5MTY0MjdjOWYxMzRiODEwNzlkZTRkMzM4Y2I4MWJiNGJiZWIy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvZ2VuZXJhdG9y
LW91dHB1dC9zcmMvc3ltcm9vdC5neXBpCkBAIC0wLDAgKzEsMTYgQEAKKyMgQ29weXJpZ2h0IChj
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndmFyaWFibGVzJzogeworICAg
ICdzZXRfc3ltcm9vdCUnOiAwLAorICB9LAorICAnY29uZGl0aW9ucyc6IFsKKyAgICBbJ3NldF9z
eW1yb290ID09IDEnLCB7CisgICAgICAneGNvZGVfc2V0dGluZ3MnOiB7CisgICAgICAgICdTWU1S
T09UJzogJzwoREVQVEgpL2J1aWxkJywKKyAgICAgIH0sCisgICAgfV0sCisgIF0sCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9oZWxsby9neXB0ZXN0LWFsbC5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2hlbGxvL2d5cHRlc3QtYWxsLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjllY2ZmNTU2ZWQ5ODNiZDlkMDFjMjM2Y2MzMGI0NzY5NDgwOGU4YjEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9oZWxsby9neXB0ZXN0LWFsbC5weQpA
QCAtMCwwICsxLDI0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
IyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmaWVzIHNpbXBsZXN0LXBv
c3NpYmxlIGJ1aWxkIG9mIGEgIkhlbGxvLCB3b3JsZCEiIHByb2dyYW0KK3VzaW5nIGFuIGV4cGxp
Y2l0IGJ1aWxkIHRhcmdldCBvZiAnYWxsJy4KKyIiIgorCitpbXBvcnQgVGVzdEd5cAorCit0ZXN0
ID0gVGVzdEd5cC5UZXN0R3lwKCkKKwordGVzdC5ydW5fZ3lwKCdoZWxsby5neXAnKQorCit0ZXN0
LmJ1aWxkKCdoZWxsby5neXAnLCB0ZXN0LkFMTCkKKwordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJs
ZSgnaGVsbG8nLCBzdGRvdXQ9IkhlbGxvLCB3b3JsZCFcbiIpCisKK3Rlc3QudXBfdG9fZGF0ZSgn
aGVsbG8uZ3lwJywgdGVzdC5BTEwpCisKK3Rlc3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2hlbGxvL2d5cHRlc3QtZGVmYXVsdC5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2hlbGxvL2d5cHRlc3QtZGVmYXVsdC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NmZmZmIzZWE0N2Q4Y2Q1Y2M3NTJiOWQzMjZhZGJjNjMyNGIwZDg4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaGVsbG8vZ3lwdGVzdC1kZWZhdWx0LnB5
CkBAIC0wLDAgKzEsMjQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAo
YykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgorVmVyaWZpZXMgc2ltcGxlc3Qt
cG9zc2libGUgYnVpbGQgb2YgYSAiSGVsbG8sIHdvcmxkISIgcHJvZ3JhbQordXNpbmcgdGhlIGRl
ZmF1bHQgYnVpbGQgdGFyZ2V0LgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0
R3lwLlRlc3RHeXAoKQorCit0ZXN0LnJ1bl9neXAoJ2hlbGxvLmd5cCcpCisKK3Rlc3QuYnVpbGQo
J2hlbGxvLmd5cCcpCisKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ2hlbGxvJywgc3Rkb3V0
PSJIZWxsbywgd29ybGQhXG4iKQorCit0ZXN0LnVwX3RvX2RhdGUoJ2hlbGxvLmd5cCcsIHRlc3Qu
REVGQVVMVCkKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvaGVsbG8vZ3lwdGVzdC1kaXNhYmxlLXJlZ3lwLnB5IGIvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvaGVsbG8vZ3lwdGVzdC1kaXNhYmxlLXJlZ3lwLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFlNGIzMDY2NzQ4NjJjM2UxM2NjNTYyMDkxMDYwNTM4ZDdiZWQ5MDQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9oZWxsby9neXB0ZXN0LWRpc2FibGUtcmVn
eXAucHkKQEAgLTAsMCArMSwzMiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJp
Z2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyB0aGF0
IE1ha2VmaWxlcyBkb24ndCBnZXQgcmVidWlsdCB3aGVuIGEgc291cmNlIGd5cCBmaWxlIGNoYW5n
ZXMgYW5kCit0aGUgZGlzYWJsZV9yZWdlbmVyYXRpb24gZ2VuZXJhdG9yIGZsYWcgaXMgc2V0Lgor
IiIiCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoKQorCit0ZXN0
LnJ1bl9neXAoJ2hlbGxvLmd5cCcsICctR2F1dG9fcmVnZW5lcmF0aW9uPTAnKQorCit0ZXN0LmJ1
aWxkKCdoZWxsby5neXAnLCB0ZXN0LkFMTCkKKwordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgn
aGVsbG8nLCBzdGRvdXQ9IkhlbGxvLCB3b3JsZCFcbiIpCisKKyMgU2xlZXAgc28gdGhhdCB0aGUg
Y2hhbmdlZCBneXAgZmlsZSB3aWxsIGhhdmUgYSBuZXdlciB0aW1lc3RhbXAgdGhhbiB0aGUKKyMg
cHJldmlvdXNseSBnZW5lcmF0ZWQgYnVpbGQgZmlsZXMuCit0ZXN0LnNsZWVwKCkKK3Rlc3Qud3Jp
dGUoJ2hlbGxvLmd5cCcsIHRlc3QucmVhZCgnaGVsbG8yLmd5cCcpKQorCit0ZXN0LmJ1aWxkKCdo
ZWxsby5neXAnLCB0ZXN0LkFMTCkKKworIyBTaG91bGQgc3RpbGwgYmUgdGhlIG9sZCBleGVjdXRh
YmxlLCBhcyByZWdlbmVyYXRpb24gd2FzIGRpc2FibGVkLgordGVzdC5ydW5fYnVpbHRfZXhlY3V0
YWJsZSgnaGVsbG8nLCBzdGRvdXQ9IkhlbGxvLCB3b3JsZCFcbiIpCisKK3Rlc3QucGFzc190ZXN0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2hlbGxvL2d5cHRlc3Qt
cmVneXAucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9oZWxsby9neXB0ZXN0LXJlZ3lw
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgyN2M3MjM1Y2U0NTE5YTNjM2VkZTY1ODFiNzBlYjcwZGM0MmEyYTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9oZWxsby9neXB0
ZXN0LXJlZ3lwLnB5CkBAIC0wLDAgKzEsMzIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisj
IENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgorVmVyaWZp
ZXMgdGhhdCBNYWtlZmlsZXMgZ2V0IHJlYnVpbHQgd2hlbiBhIHNvdXJjZSBneXAgZmlsZSBjaGFu
Z2VzLgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCisKKyMgUmVnZW5lcmF0aW5nIGJ1aWxkIGZpbGVz
IHdoZW4gYSBneXAgZmlsZSBjaGFuZ2VzIGlzIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZAorIyBi
eSB0aGUgbWFrZSBnZW5lcmF0b3IuCit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lwKGZvcm1hdHM9Wydt
YWtlJ10pCisKK3Rlc3QucnVuX2d5cCgnaGVsbG8uZ3lwJykKKwordGVzdC5idWlsZCgnaGVsbG8u
Z3lwJywgdGVzdC5BTEwpCisKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ2hlbGxvJywgc3Rk
b3V0PSJIZWxsbywgd29ybGQhXG4iKQorCisjIFNsZWVwIHNvIHRoYXQgdGhlIGNoYW5nZWQgZ3lw
IGZpbGUgd2lsbCBoYXZlIGEgbmV3ZXIgdGltZXN0YW1wIHRoYW4gdGhlCisjIHByZXZpb3VzbHkg
Z2VuZXJhdGVkIGJ1aWxkIGZpbGVzLgordGVzdC5zbGVlcCgpCit0ZXN0LndyaXRlKCdoZWxsby5n
eXAnLCB0ZXN0LnJlYWQoJ2hlbGxvMi5neXAnKSkKKwordGVzdC5idWlsZCgnaGVsbG8uZ3lwJywg
dGVzdC5BTEwpCisKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ2hlbGxvJywgc3Rkb3V0PSJI
ZWxsbywgdHdvIVxuIikKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvaGVsbG8vZ3lwdGVzdC10YXJnZXQucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9oZWxsby9neXB0ZXN0LXRhcmdldC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjBhMmEz
M2RiMWFjNzNhZjM5YmIyOGQyYWNiNzgxYjQ4NGZjMDIzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaGVsbG8vZ3lwdGVzdC10YXJnZXQucHkKQEAgLTAsMCAr
MSwyNCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyBzaW1wbGVzdC1wb3NzaWJsZSBi
dWlsZCBvZiBhICJIZWxsbywgd29ybGQhIiBwcm9ncmFtCit1c2luZyBhbiBleHBsaWNpdCBidWls
ZCB0YXJnZXQgb2YgJ2hlbGxvJy4KKyIiIgorCitpbXBvcnQgVGVzdEd5cAorCit0ZXN0ID0gVGVz
dEd5cC5UZXN0R3lwKCkKKwordGVzdC5ydW5fZ3lwKCdoZWxsby5neXAnKQorCit0ZXN0LmJ1aWxk
KCdoZWxsby5neXAnLCAnaGVsbG8nKQorCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdoZWxs
bycsIHN0ZG91dD0iSGVsbG8sIHdvcmxkIVxuIikKKwordGVzdC51cF90b19kYXRlKCdoZWxsby5n
eXAnLCAnaGVsbG8nKQorCit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9oZWxsby9oZWxsby5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvaGVsbG8vaGVsbG8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGJlY2MwNDkyYzZhYTJhYjJhNzdkMjk4MDFi
ZjNlYWUyY2ZjZWYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvaGVsbG8vaGVsbG8uYwpAQCAtMCwwICsxLDExIEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCitpbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICBwcmludGYoIkhlbGxvLCB3b3JsZCFc
biIpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L2hlbGxvL2hlbGxvLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2hlbGxvL2hl
bGxvLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xOTc0ZDUxY2NkMTkzNGNmYzA4NDFmMjZlNzExODQ0OGIyZmIx
Yzk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaGVsbG8v
aGVsbG8uZ3lwCkBAIC0wLDAgKzEsMTUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0
X25hbWUnOiAnaGVsbG8nLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAnc291
cmNlcyc6IFsKKyAgICAgICAgJ2hlbGxvLmMnLAorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaGVsbG8vaGVsbG8yLmMgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9oZWxsby9oZWxsbzIuYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWVm
M2ZiZDVjZmJmN2QwYWE5YTJlNjYwZjg3NzRmYzliM2I0ZDlkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaGVsbG8vaGVsbG8yLmMKQEAgLTAsMCArMSwxMSBA
QAorLyogQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLiAqLworCisj
aW5jbHVkZSA8c3RkaW8uaD4KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sK
KyAgcHJpbnRmKCJIZWxsbywgdHdvIVxuIik7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaGVsbG8vaGVsbG8yLmd5cCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2hlbGxvL2hlbGxvMi5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjViMDhjYWYzY2Fk
MGViZTBiZmM1ZWNlZmYyNDc5OTY2NTJlMTEzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2hlbGxvL2hlbGxvMi5neXAKQEAgLTAsMCArMSwxNSBAQAorIyBD
b3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICd0YXJnZXRz
JzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdoZWxsbycsCisgICAgICAndHlwZSc6
ICdleGVjdXRhYmxlJywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAnaGVsbG8yLmMnLAor
ICAgICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvaG9tZV9kb3RfZ3lwL2d5cHRlc3QtaG9tZS1pbmNsdWRlcy1yZWd5cC5weSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2hvbWVfZG90X2d5cC9neXB0ZXN0LWhvbWUtaW5jbHVk
ZXMtcmVneXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJiOWYzMDE4MGYyOWJkODNiMTVjZGYxYmNiNjQwNzBl
NTVjNzBmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2hv
bWVfZG90X2d5cC9neXB0ZXN0LWhvbWUtaW5jbHVkZXMtcmVneXAucHkKQEAgLTAsMCArMSw0NCBA
QAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyBpbmNsdXNpb24gb2YgJEhPTUUvLmd5cC9p
bmNsdWRlcy5neXBpIHdvcmtzIHByb3Blcmx5IHdpdGggcmVsb2NhdGlvbgorYW5kIHdpdGggcmVn
ZW5lcmF0aW9uLgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IFRlc3RHeXAKKworIyBSZWdlbmVy
YXRpbmcgYnVpbGQgZmlsZXMgd2hlbiBhIGd5cCBmaWxlIGNoYW5nZXMgaXMgY3VycmVudGx5IG9u
bHkgc3VwcG9ydGVkCisjIGJ5IHRoZSBtYWtlIGdlbmVyYXRvci4KK3Rlc3QgPSBUZXN0R3lwLlRl
c3RHeXAoZm9ybWF0cz1bJ21ha2UnXSkKKworb3MuZW52aXJvblsnSE9NRSddID0gb3MucGF0aC5h
YnNwYXRoKCdob21lJykKKwordGVzdC5ydW5fZ3lwKCdhbGwuZ3lwJywgY2hkaXI9J3NyYycpCisK
KyMgQWZ0ZXIgcmVsb2NhdGluZywgd2Ugc2hvdWxkIHN0aWxsIGJlIGFibGUgdG8gYnVpbGQgKGJ1
aWxkIGZpbGUgc2hvdWxkbid0CisjIGNvbnRhaW4gcmVsYXRpdmUgcmVmZXJlbmNlIHRvIH4vLmd5
cC9pbmNsdWRlcy5neXBpKQordGVzdC5yZWxvY2F0ZSgnc3JjJywgJ3JlbG9jYXRlL3NyYycpCisK
K3Rlc3QuYnVpbGQoJ2FsbC5neXAnLCB0ZXN0LkFMTCwgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisK
K3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ3ByaW50Zm9vJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hkaXI9J3JlbG9jYXRlL3NyYycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZG91dD0iRk9PIGlzIGZyb21ob21lXG4iKTsKKworIyBCdWlsZGluZyBzaG91bGQgbm90aWNl
IGFueSBjaGFuZ2VzIHRvIH4vLmd5cC9pbmNsdWRlcy5neXBpIGFuZCByZWd5cC4KK3Rlc3Quc2xl
ZXAoKQorCit0ZXN0LndyaXRlKCdob21lLy5neXAvaW5jbHVkZS5neXBpJywgdGVzdC5yZWFkKCdo
b21lMi8uZ3lwL2luY2x1ZGUuZ3lwaScpKQorCit0ZXN0LmJ1aWxkKCdhbGwuZ3lwJywgdGVzdC5B
TEwsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQorCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdw
cmludGZvbycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZGlyPSdyZWxvY2F0ZS9zcmMn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9IkZPTyBpcyBmcm9taG9tZTJcbiIp
OworCit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9ob21lX2RvdF9neXAvZ3lwdGVzdC1ob21lLWluY2x1ZGVzLnB5IGIvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvaG9tZV9kb3RfZ3lwL2d5cHRlc3QtaG9tZS1pbmNsdWRlcy5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YTBlOTY1MWZjZGIxNzMyZDM5MGNlM2ZkZWMwOGYzYmEwZGZjMzc0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaG9tZV9kb3RfZ3lwL2d5cHRl
c3QtaG9tZS1pbmNsdWRlcy5weQpAQCAtMCwwICsxLDMwIEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIK
K1ZlcmlmaWVzIGluY2x1c2lvbiBvZiAkSE9NRS8uZ3lwL2luY2x1ZGVzLmd5cGkgd29ya3MuCisi
IiIKKworaW1wb3J0IG9zCitpbXBvcnQgVGVzdEd5cAorCit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lw
KCkKKworb3MuZW52aXJvblsnSE9NRSddID0gb3MucGF0aC5hYnNwYXRoKCdob21lJykKKwordGVz
dC5ydW5fZ3lwKCdhbGwuZ3lwJywgY2hkaXI9J3NyYycpCisKKyMgQWZ0ZXIgcmVsb2NhdGluZywg
d2Ugc2hvdWxkIHN0aWxsIGJlIGFibGUgdG8gYnVpbGQgKGJ1aWxkIGZpbGUgc2hvdWxkbid0Cisj
IGNvbnRhaW4gcmVsYXRpdmUgcmVmZXJlbmNlIHRvIH4vLmd5cC9pbmNsdWRlcy5neXBpKQordGVz
dC5yZWxvY2F0ZSgnc3JjJywgJ3JlbG9jYXRlL3NyYycpCisKK3Rlc3QuYnVpbGQoJ2FsbC5neXAn
LCB0ZXN0LkFMTCwgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1
dGFibGUoJ3ByaW50Zm9vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkaXI9J3JlbG9j
YXRlL3NyYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0iRk9PIGlzIGZyb21o
b21lXG4iKTsKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvaG9tZV9kb3RfZ3lwL2hvbWUvLmd5cC9pbmNsdWRlLmd5cGkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9ob21lX2RvdF9neXAvaG9tZS8uZ3lwL2luY2x1ZGUuZ3lwaQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mY2ZiMzliZWZkODQxYzBlZjhkYjc0NzJlNDFmZTE3YTM5NDkyZjIxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaG9tZV9kb3RfZ3lwL2hv
bWUvLmd5cC9pbmNsdWRlLmd5cGkKQEAgLTAsMCArMSw1IEBACit7CisgICd2YXJpYWJsZXMnOiB7
CisgICAgJ2Zvbyc6ICciZnJvbWhvbWUiJywKKyAgfSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2hvbWVfZG90X2d5cC9ob21lMi8uZ3lwL2luY2x1ZGUuZ3lwaSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2hvbWVfZG90X2d5cC9ob21lMi8uZ3lwL2luY2x1
ZGUuZ3lwaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMGQ4NGIzMWFkNTBhNGU3YmIyZDNlMjgzNjdjNzIyZjU1NDY1
MGIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaG9tZV9k
b3RfZ3lwL2hvbWUyLy5neXAvaW5jbHVkZS5neXBpCkBAIC0wLDAgKzEsNSBAQAoreworICAndmFy
aWFibGVzJzogeworICAgICdmb28nOiAnImZyb21ob21lMiInLAorICB9LAorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaG9tZV9kb3RfZ3lwL3NyYy9hbGwuZ3lwIGIv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaG9tZV9kb3RfZ3lwL3NyYy9hbGwuZ3lwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE0YjZhZWEyODU5OTNmMWI3NTIyY2ZlMWZkMjY3YjU4MTQzNDQ3YTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ob21lX2RvdF9neXAvc3JjL2Fs
bC5neXAKQEAgLTAsMCArMSwyMiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorCit7CisgICd2YXJpYWJsZXMnOiB7CisgICAgJ2ZvbyUnOiAnImZyb21kZWZh
dWx0IicsCisgIH0sCisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6
ICdwcmludGZvbycsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICdzb3VyY2Vz
JzogWworICAgICAgICAncHJpbnRmb28uYycsCisgICAgICBdLAorICAgICAgJ2RlZmluZXMnOiBb
CisgICAgICAgICdGT089PChmb28pJywKKyAgICAgIF0sCisgICAgfSwKKyAgXSwKK30KKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaG9tZV9kb3RfZ3lwL3NyYy9wcmlu
dGZvby5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaG9tZV9kb3RfZ3lwL3NyYy9wcmlu
dGZvby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjkyZDJjYmFjYjdiZGJhMzk0YjNlNWQ4MGM2YjdhMzA0OTg3ZGI3
MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ob21lX2Rv
dF9neXAvc3JjL3ByaW50Zm9vLmMKQEAgLTAsMCArMSw3IEBACisjaW5jbHVkZSA8c3RkaW8uaD4K
KworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgcHJpbnRmKCJGT08gaXMg
JXNcbiIsIEZPTyk7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvaW5jbHVkZV9kaXJzL2d5cHRlc3QtYWxsLnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvaW5jbHVkZV9kaXJzL2d5cHRlc3QtYWxsLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0YTEz
MzhkNDkzNjhiMDFlNGZkMGM2M2M3NThjNDUwZDE4YWQzZmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9pbmNsdWRlX2RpcnMvZ3lwdGVzdC1hbGwucHkKQEAg
LTAsMCArMSw0NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyB1c2Ugb2YgaW5jbHVk
ZV9kaXJzIHdoZW4gdXNpbmcgYW4gZXhwbGljaXQgYnVpbGQgdGFyZ2V0IG9mICdhbGwnLgorIiIi
CisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoKQorCitpZiB0ZXN0
LmZvcm1hdCA9PSAnc2NvbnMnOgorICB0ZXN0LnNraXBfdGVzdCgnVE9ETzogaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9wL2d5cC9pc3N1ZXMvZGV0YWlsP2lkPTE3NlxuJykKKwordGVzdC5ydW5fZ3lw
KCdpbmNsdWRlcy5neXAnLCBjaGRpcj0nc3JjJykKKwordGVzdC5yZWxvY2F0ZSgnc3JjJywgJ3Jl
bG9jYXRlL3NyYycpCisKK3Rlc3QuYnVpbGQoJ2luY2x1ZGVzLmd5cCcsIHRlc3QuQUxMLCBjaGRp
cj0ncmVsb2NhdGUvc3JjJykKKworZXhwZWN0ID0gIiIiXAorSGVsbG8gZnJvbSBpbmNsdWRlcy5j
CitIZWxsbyBmcm9tIGluYy5oCitIZWxsbyBmcm9tIGluY2x1ZGUxLmgKK0hlbGxvIGZyb20gc3Vi
ZGlyL2luYzIvaW5jbHVkZTIuaAorSGVsbG8gZnJvbSBzaGFkb3cyL3NoYWRvdy5oCisiIiIKK3Rl
c3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ2luY2x1ZGVzJywgc3Rkb3V0PWV4cGVjdCwgY2hkaXI9
J3JlbG9jYXRlL3NyYycpCisKK2lmIHRlc3QuZm9ybWF0ID09ICd4Y29kZSc6CisgIGNoZGlyPSdy
ZWxvY2F0ZS9zcmMvc3ViZGlyJworZWxzZToKKyAgY2hkaXI9J3JlbG9jYXRlL3NyYycKKworZXhw
ZWN0ID0gIiIiXAorSGVsbG8gZnJvbSBzdWJkaXIvc3ViZGlyX2luY2x1ZGVzLmMKK0hlbGxvIGZy
b20gc3ViZGlyL2luYy5oCitIZWxsbyBmcm9tIGluY2x1ZGUxLmgKK0hlbGxvIGZyb20gc3ViZGly
L2luYzIvaW5jbHVkZTIuaAorIiIiCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdzdWJkaXJf
aW5jbHVkZXMnLCBzdGRvdXQ9ZXhwZWN0LCBjaGRpcj1jaGRpcikKKwordGVzdC5wYXNzX3Rlc3Qo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaW5jbHVkZV9kaXJzL2d5
cHRlc3QtZGVmYXVsdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2luY2x1ZGVfZGly
cy9neXB0ZXN0LWRlZmF1bHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJhY2QxZjk2MjUyYmM5ODE0ODlmYTg4
MWU3NjcxNjc5YmM2ODU1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2luY2x1ZGVfZGlycy9neXB0ZXN0LWRlZmF1bHQucHkKQEAgLTAsMCArMSw0NiBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyB1c2Ugb2YgaW5jbHVkZV9kaXJzIHdoZW4gdXNp
bmcgdGhlIGRlZmF1bHQgYnVpbGQgdGFyZ2V0LgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rl
c3QgPSBUZXN0R3lwLlRlc3RHeXAoKQorCitpZiB0ZXN0LmZvcm1hdCA9PSAnc2NvbnMnOgorICB0
ZXN0LnNraXBfdGVzdCgnVE9ETzogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2d5cC9pc3N1ZXMv
ZGV0YWlsP2lkPTE3NlxuJykKKwordGVzdC5ydW5fZ3lwKCdpbmNsdWRlcy5neXAnLCBjaGRpcj0n
c3JjJykKKwordGVzdC5yZWxvY2F0ZSgnc3JjJywgJ3JlbG9jYXRlL3NyYycpCisKK3Rlc3QuYnVp
bGQoJ2luY2x1ZGVzLmd5cCcsIHRlc3QuQUxMLCBjaGRpcj0ncmVsb2NhdGUvc3JjJykKKworZXhw
ZWN0ID0gIiIiXAorSGVsbG8gZnJvbSBpbmNsdWRlcy5jCitIZWxsbyBmcm9tIGluYy5oCitIZWxs
byBmcm9tIGluY2x1ZGUxLmgKK0hlbGxvIGZyb20gc3ViZGlyL2luYzIvaW5jbHVkZTIuaAorSGVs
bG8gZnJvbSBzaGFkb3cyL3NoYWRvdy5oCisiIiIKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUo
J2luY2x1ZGVzJywgc3Rkb3V0PWV4cGVjdCwgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKK2lmIHRl
c3QuZm9ybWF0ID09ICd4Y29kZSc6CisgIGNoZGlyPSdyZWxvY2F0ZS9zcmMvc3ViZGlyJworZWxz
ZToKKyAgY2hkaXI9J3JlbG9jYXRlL3NyYycKKworZXhwZWN0ID0gIiIiXAorSGVsbG8gZnJvbSBz
dWJkaXIvc3ViZGlyX2luY2x1ZGVzLmMKK0hlbGxvIGZyb20gc3ViZGlyL2luYy5oCitIZWxsbyBm
cm9tIGluY2x1ZGUxLmgKK0hlbGxvIGZyb20gc3ViZGlyL2luYzIvaW5jbHVkZTIuaAorIiIiCit0
ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdzdWJkaXJfaW5jbHVkZXMnLCBzdGRvdXQ9ZXhwZWN0
LCBjaGRpcj1jaGRpcikKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvaW5jbHVkZV9kaXJzL3NyYy9pbmMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L2luY2x1ZGVfZGlycy9zcmMvaW5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM5OGQ2OTE1
ZjlhNzJjNTM2NjAzNDQ2ODNlMTBmMTlhN2M0NWFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2luY2x1ZGVfZGlycy9zcmMvaW5jLmgKQEAgLTAsMCArMSBA
QAorI2RlZmluZSBJTkNfU1RSSU5HICJpbmMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L2luY2x1ZGVfZGlycy9zcmMvaW5jMS9pbmNsdWRlMS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvaW5jbHVkZV9kaXJzL3NyYy9pbmMxL2luY2x1ZGUxLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDMzNTZiNWY0N2E1N2M3NzMwOTQ1YzE3NDIyZWM5MmUxYzlkYzRhNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2luY2x1ZGVfZGlycy9zcmMvaW5j
MS9pbmNsdWRlMS5oCkBAIC0wLDAgKzEgQEAKKyNkZWZpbmUgSU5DTFVERTFfU1RSSU5HICJpbmNs
dWRlMS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaW5jbHVkZV9k
aXJzL3NyYy9pbmNsdWRlcy5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaW5jbHVkZV9k
aXJzL3NyYy9pbmNsdWRlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyYWZiZDNlZDhjZWI0MGE2NTI5NGQ1MzM2
ZGEwZDA1NDFhYWNiMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9pbmNsdWRlX2RpcnMvc3JjL2luY2x1ZGVzLmMKQEAgLTAsMCArMSwxOSBAQAorI2luY2x1
ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJpbmMuaCIKKyNpbmNsdWRlICJpbmNsdWRlMS5oIgor
I2luY2x1ZGUgImluY2x1ZGUyLmgiCisjaW5jbHVkZSAic2hhZG93LmgiCisKK2ludCBtYWluKGlu
dCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIHByaW50ZigiSGVsbG8gZnJvbSBpbmNsdWRlcy5j
XG4iKTsKKyAgcHJpbnRmKCJIZWxsbyBmcm9tICVzXG4iLCBJTkNfU1RSSU5HKTsKKyAgcHJpbnRm
KCJIZWxsbyBmcm9tICVzXG4iLCBJTkNMVURFMV9TVFJJTkcpOworICBwcmludGYoIkhlbGxvIGZy
b20gJXNcbiIsIElOQ0xVREUyX1NUUklORyk7CisgIC8qIFRlc3QgdGhhdCBpbmNsdWRlX2RpcnMg
aGFwcGVuIGZpcnN0OiBUaGUgZ3lwIGZpbGUgaGFzIGEgLUlzaGFkb3cxCisgICAgIGNmbGFnIGFu
ZCBhbiBpbmNsdWRlX2RpciBvZiBzaGFkb3cyLiAgSW5jbHVkaW5nIHNoYWRvdy5oIHNob3VsZCBn
ZXQKKyAgICAgdGhlIHNoYWRvdy5oIGZyb20gdGhlIGluY2x1ZGVfZGlyLiAqLworICBwcmludGYo
IkhlbGxvIGZyb20gJXNcbiIsIFNIQURPV19TVFJJTkcpOworICByZXR1cm4gMDsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2luY2x1ZGVfZGlycy9zcmMvaW5jbHVk
ZXMuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaW5jbHVkZV9kaXJzL3NyYy9pbmNs
dWRlcy5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU5MjY5MDIwOGFhZDJjNDU3ZGZlZWFiOGE0MTE5ZTA3NTE1
YTI3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2luY2x1
ZGVfZGlycy9zcmMvaW5jbHVkZXMuZ3lwCkBAIC0wLDAgKzEsMjcgQEAKKyMgQ29weXJpZ2h0IChj
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7
CisgICAgICAndGFyZ2V0X25hbWUnOiAnaW5jbHVkZXMnLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0
YWJsZScsCisgICAgICAnZGVwZW5kZW5jaWVzJzogWworICAgICAgICAnc3ViZGlyL3N1YmRpcl9p
bmNsdWRlcy5neXA6c3ViZGlyX2luY2x1ZGVzJywKKyAgICAgIF0sCisgICAgICAnY2ZsYWdzJzog
WworICAgICAgICAnLUlzaGFkb3cxJywKKyAgICAgIF0sCisgICAgICAnaW5jbHVkZV9kaXJzJzog
WworICAgICAgICAnLicsCisgICAgICAgICdpbmMxJywKKyAgICAgICAgJ3NoYWRvdzInLAorICAg
ICAgICAnc3ViZGlyL2luYzInLAorICAgICAgXSwKKyAgICAgICdzb3VyY2VzJzogWworICAgICAg
ICAnaW5jbHVkZXMuYycsCisgICAgICBdLAorICAgIH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9pbmNsdWRlX2RpcnMvc3JjL3NoYWRvdzEvc2hhZG93
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9pbmNsdWRlX2RpcnMvc3JjL3NoYWRvdzEv
c2hhZG93LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODBmNmRlMjBiODZjNzU1ZGZmNGY5YjkzODE3NzM2ZDI2ZTdj
MWNmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2luY2x1
ZGVfZGlycy9zcmMvc2hhZG93MS9zaGFkb3cuaApAQCAtMCwwICsxIEBACisjZGVmaW5lIFNIQURP
V19TVFJJTkcgInNoYWRvdzEvc2hhZG93LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9pbmNsdWRlX2RpcnMvc3JjL3NoYWRvdzIvc2hhZG93LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9pbmNsdWRlX2RpcnMvc3JjL3NoYWRvdzIvc2hhZG93LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmFkNWNjZDA4NTYxNTQ1MjFlNTBmMDE3M2Q0ZDgwNjc5NTM1NmJhMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2luY2x1ZGVfZGlycy9zcmMvc2hh
ZG93Mi9zaGFkb3cuaApAQCAtMCwwICsxIEBACisjZGVmaW5lIFNIQURPV19TVFJJTkcgInNoYWRv
dzIvc2hhZG93LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9pbmNs
dWRlX2RpcnMvc3JjL3N1YmRpci9pbmMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2lu
Y2x1ZGVfZGlycy9zcmMvc3ViZGlyL2luYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhNjhkN2IzNmFkNzFlYWUx
ODQ0ZWVlMzUzMjA2ZmMzZWNmOWM1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC9pbmNsdWRlX2RpcnMvc3JjL3N1YmRpci9pbmMuaApAQCAtMCwwICsxIEBA
CisjZGVmaW5lIElOQ19TVFJJTkcgInN1YmRpci9pbmMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L2luY2x1ZGVfZGlycy9zcmMvc3ViZGlyL2luYzIvaW5jbHVkZTIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2luY2x1ZGVfZGlycy9zcmMvc3ViZGlyL2lu
YzIvaW5jbHVkZTIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjE1NzdlZmZiZGZmZDQ4NWM2MDYyOWIzMWFjNDUx
NmNhNWNmNjQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
aW5jbHVkZV9kaXJzL3NyYy9zdWJkaXIvaW5jMi9pbmNsdWRlMi5oCkBAIC0wLDAgKzEgQEAKKyNk
ZWZpbmUgSU5DTFVERTJfU1RSSU5HICJzdWJkaXIvaW5jMi9pbmNsdWRlMi5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaW5jbHVkZV9kaXJzL3NyYy9zdWJkaXIvc3Vi
ZGlyX2luY2x1ZGVzLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9pbmNsdWRlX2RpcnMv
c3JjL3N1YmRpci9zdWJkaXJfaW5jbHVkZXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjdmNjgyMjA1OGVhZmYz
Y2ViYjAwNWJmMWZhYWI4OTQ2NjY1MGZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvaW5jbHVkZV9kaXJzL3NyYy9zdWJkaXIvc3ViZGlyX2luY2x1ZGVzLmMK
QEAgLTAsMCArMSwxNCBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJpbmMuaCIK
KyNpbmNsdWRlICJpbmNsdWRlMS5oIgorI2luY2x1ZGUgImluY2x1ZGUyLmgiCisKK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIHByaW50ZigiSGVsbG8gZnJvbSBzdWJkaXIv
c3ViZGlyX2luY2x1ZGVzLmNcbiIpOworICBwcmludGYoIkhlbGxvIGZyb20gJXNcbiIsIElOQ19T
VFJJTkcpOworICBwcmludGYoIkhlbGxvIGZyb20gJXNcbiIsIElOQ0xVREUxX1NUUklORyk7Cisg
IHByaW50ZigiSGVsbG8gZnJvbSAlc1xuIiwgSU5DTFVERTJfU1RSSU5HKTsKKyAgcmV0dXJuIDA7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9pbmNsdWRlX2RpcnMv
c3JjL3N1YmRpci9zdWJkaXJfaW5jbHVkZXMuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvaW5jbHVkZV9kaXJzL3NyYy9zdWJkaXIvc3ViZGlyX2luY2x1ZGVzLmd5cApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yNTdkMDUyYzNjOTIwYzI3NmVhNzUwMzZjZTM1YTZkZDVjNWQwMmI4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvaW5jbHVkZV9kaXJzL3NyYy9zdWJkaXIv
c3ViZGlyX2luY2x1ZGVzLmd5cApAQCAtMCwwICsxLDIwIEBACisjIENvcHlyaWdodCAoYykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAg
ICAgJ3RhcmdldF9uYW1lJzogJ3N1YmRpcl9pbmNsdWRlcycsCisgICAgICAndHlwZSc6ICdleGVj
dXRhYmxlJywKKyAgICAgICdpbmNsdWRlX2RpcnMnOiBbCisgICAgICAgICcuJywKKyAgICAgICAg
Jy4uL2luYzEnLAorICAgICAgICAnaW5jMicsCisgICAgICBdLAorICAgICAgJ3NvdXJjZXMnOiBb
CisgICAgICAgICdzdWJkaXJfaW5jbHVkZXMuYycsCisgICAgICBdLAorICAgIH0sCisgIF0sCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9saWIvUkVBRE1FLnR4dCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpYi9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIz
ZDcyNDU3NGU2Mzc3MGQzYzY3YmViNWI1NDEyOTBiMWUwNTNmNWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9saWIvUkVBRE1FLnR4dApAQCAtMCwwICsxLDE3
IEBACitTdXBwb3J0aW5nIG1vZHVsZXMgZm9yIEdZUCB0ZXN0aW5nLgorCisgICAgVGVzdENtZC5w
eQorICAgIFRlc3RDb21tb24ucHkKKworICAgICAgICBNb2R1bGVzIGZvciBnZW5lcmljIHRlc3Rp
bmcgb2YgY29tbWFuZC1saW5lIHV0aWxpdGllcywKKyAgICAgICAgc3BlY2lmaWNhbGx5IGluY2x1
ZGluZyB0aGUgYWJpbGl0eSB0byBjb3B5IGEgdGVzdCBjb25maWd1cmF0aW9uCisgICAgICAgIHRv
IHRlbXBvcmFyeSBkaXJlY3RvcmllcyAod2l0aCBkZWZhdWx0IGNsZWFudXAgb24gZXhpdCkgYXMg
cGFydAorICAgICAgICBvZiBydW5uaW5nIHRlc3Qgc2NyaXB0cyB0aGF0IGludm9rZSBjb21tYW5k
cywgY29tcGFyZSBhY3R1YWwKKyAgICAgICAgYWdhaW5zdCBleHBlY3RlZCBvdXRwdXQsIGV0Yy4K
KworICAgICAgICBPdXIgY29waWVzIG9mIHRoZXNlIGNvbWUgZnJvbSB0aGUgU0NvbnMgcHJvamVj
dCwKKyAgICAgICAgaHR0cDovL3d3dy5zY29ucy5vcmcvLgorCisgICAgVGVzdEd5cC5weQorCisg
ICAgICAgIE1vZHVsZXMgZm9yIEdZUC1zcGVjaWZpYyB0ZXN0cywgb2YgY291cnNlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbGliL1Rlc3RDbWQucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9saWIvVGVzdENtZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjljMWQwNWY3
YzcxMTllMGU2MjFkNDM4MDgwYmViZTU4MjA2YzBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvbGliL1Rlc3RDbWQucHkKQEAgLTAsMCArMSwxNTkxIEBACisi
IiIKK1Rlc3RDbWQucHk6ICBhIHRlc3RpbmcgZnJhbWV3b3JrIGZvciBjb21tYW5kcyBhbmQgc2Ny
aXB0cy4KKworVGhlIFRlc3RDbWQgbW9kdWxlIHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciBwb3J0
YWJsZSBhdXRvbWF0ZWQgdGVzdGluZworb2YgZXhlY3V0YWJsZSBjb21tYW5kcyBhbmQgc2NyaXB0
cyAoaW4gYW55IGxhbmd1YWdlLCBub3QganVzdCBQeXRob24pLAorZXNwZWNpYWxseSBjb21tYW5k
cyBhbmQgc2NyaXB0cyB0aGF0IHJlcXVpcmUgZmlsZSBzeXN0ZW0gaW50ZXJhY3Rpb24uCisKK0lu
IGFkZGl0aW9uIHRvIHJ1bm5pbmcgdGVzdHMgYW5kIGV2YWx1YXRpbmcgY29uZGl0aW9ucywgdGhl
IFRlc3RDbWQKK21vZHVsZSBtYW5hZ2VzIGFuZCBjbGVhbnMgdXAgb25lIG9yIG1vcmUgdGVtcG9y
YXJ5IHdvcmtzcGFjZQorZGlyZWN0b3JpZXMsIGFuZCBwcm92aWRlcyBtZXRob2RzIGZvciBjcmVh
dGluZyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgaW4KK3Rob3NlIHdvcmtzcGFjZSBkaXJlY3Rvcmll
cyBmcm9tIGluLWxpbmUgZGF0YSwgaGVyZS1kb2N1bWVudHMpLCBhbGxvd2luZwordGVzdHMgdG8g
YmUgY29tcGxldGVseSBzZWxmLWNvbnRhaW5lZC4KKworQSBUZXN0Q21kIGVudmlyb25tZW50IG9i
amVjdCBpcyBjcmVhdGVkIHZpYSB0aGUgdXN1YWwgaW52b2NhdGlvbjoKKworICAgIGltcG9ydCBU
ZXN0Q21kCisgICAgdGVzdCA9IFRlc3RDbWQuVGVzdENtZCgpCisKK1RoZXJlIGFyZSBhIGJ1bmNo
IG9mIGtleXdvcmQgYXJndW1lbnRzIGF2YWlsYWJsZSBhdCBpbnN0YW50aWF0aW9uOgorCisgICAg
dGVzdCA9IFRlc3RDbWQuVGVzdENtZChkZXNjcmlwdGlvbiA9ICdzdHJpbmcnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvZ3JhbSA9ICdwcm9ncmFtX29yX3NjcmlwdF90b190ZXN0JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycHJldGVyID0gJ3NjcmlwdF9pbnRlcnBy
ZXRlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrZGlyID0gJ3ByZWZpeCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXIgPSAnc3ViZGlyJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZlcmJvc2UgPSBCb29sZWFuLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2ggPSBkZWZhdWx0X21hdGNoX2Z1bmN0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlmZiA9IGRlZmF1bHRfZGlmZl9mdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbWJpbmUgPSBCb29sZWFuKQorCitUaGVyZSBhcmUgYSBidW5jaCBvZiBtZXRo
b2RzIHRoYXQgbGV0IHlvdSBkbyBkaWZmZXJlbnQgdGhpbmdzOgorCisgICAgdGVzdC52ZXJib3Nl
X3NldCgxKQorCisgICAgdGVzdC5kZXNjcmlwdGlvbl9zZXQoJ3N0cmluZycpCisKKyAgICB0ZXN0
LnByb2dyYW1fc2V0KCdwcm9ncmFtX29yX3NjcmlwdF90b190ZXN0JykKKworICAgIHRlc3QuaW50
ZXJwcmV0ZXJfc2V0KCdzY3JpcHRfaW50ZXJwcmV0ZXInKQorICAgIHRlc3QuaW50ZXJwcmV0ZXJf
c2V0KFsnc2NyaXB0X2ludGVycHJldGVyJywgJ2FyZyddKQorCisgICAgdGVzdC53b3JrZGlyX3Nl
dCgncHJlZml4JykKKyAgICB0ZXN0LndvcmtkaXJfc2V0KCcnKQorCisgICAgdGVzdC53b3JrcGF0
aCgnZmlsZScpCisgICAgdGVzdC53b3JrcGF0aCgnc3ViZGlyJywgJ2ZpbGUnKQorCisgICAgdGVz
dC5zdWJkaXIoJ3N1YmRpcicsIC4uLikKKworICAgIHRlc3Qucm1kaXIoJ3N1YmRpcicsIC4uLikK
KworICAgIHRlc3Qud3JpdGUoJ2ZpbGUnLCAiY29udGVudHNcbiIpCisgICAgdGVzdC53cml0ZShb
J3N1YmRpcicsICdmaWxlJ10sICJjb250ZW50c1xuIikKKworICAgIHRlc3QucmVhZCgnZmlsZScp
CisgICAgdGVzdC5yZWFkKFsnc3ViZGlyJywgJ2ZpbGUnXSkKKyAgICB0ZXN0LnJlYWQoJ2ZpbGUn
LCBtb2RlKQorICAgIHRlc3QucmVhZChbJ3N1YmRpcicsICdmaWxlJ10sIG1vZGUpCisKKyAgICB0
ZXN0LndyaXRhYmxlKCdkaXInLCAxKQorICAgIHRlc3Qud3JpdGFibGUoJ2RpcicsIE5vbmUpCisK
KyAgICB0ZXN0LnByZXNlcnZlKGNvbmRpdGlvbiwgLi4uKQorCisgICAgdGVzdC5jbGVhbnVwKGNv
bmRpdGlvbikKKworICAgIHRlc3QuY29tbWFuZF9hcmdzKHByb2dyYW0gPSAncHJvZ3JhbV9vcl9z
Y3JpcHRfdG9fcnVuJywKKyAgICAgICAgICAgICAgICAgICAgICBpbnRlcnByZXRlciA9ICdzY3Jp
cHRfaW50ZXJwcmV0ZXInLAorICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyA9ICdhcmd1
bWVudHMgdG8gcGFzcyB0byBwcm9ncmFtJykKKworICAgIHRlc3QucnVuKHByb2dyYW0gPSAncHJv
Z3JhbV9vcl9zY3JpcHRfdG9fcnVuJywKKyAgICAgICAgICAgICBpbnRlcnByZXRlciA9ICdzY3Jp
cHRfaW50ZXJwcmV0ZXInLAorICAgICAgICAgICAgIGFyZ3VtZW50cyA9ICdhcmd1bWVudHMgdG8g
cGFzcyB0byBwcm9ncmFtJywKKyAgICAgICAgICAgICBjaGRpciA9ICdkaXJlY3RvcnlfdG9fY2hk
aXJfdG8nLAorICAgICAgICAgICAgIHN0ZGluID0gJ2lucHV0IHRvIGZlZWQgdG8gdGhlIHByb2dy
YW1cbicpCisgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzID0gVHJ1ZSkKKworICAgIHAg
PSB0ZXN0LnN0YXJ0KHByb2dyYW0gPSAncHJvZ3JhbV9vcl9zY3JpcHRfdG9fcnVuJywKKyAgICAg
ICAgICAgICAgICAgICBpbnRlcnByZXRlciA9ICdzY3JpcHRfaW50ZXJwcmV0ZXInLAorICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50cyA9ICdhcmd1bWVudHMgdG8gcGFzcyB0byBwcm9ncmFtJywK
KyAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXMgPSBOb25lKQorCisgICAgdGVz
dC5maW5pc2goc2VsZiwgcCkKKworICAgIHRlc3QucGFzc190ZXN0KCkKKyAgICB0ZXN0LnBhc3Nf
dGVzdChjb25kaXRpb24pCisgICAgdGVzdC5wYXNzX3Rlc3QoY29uZGl0aW9uLCBmdW5jdGlvbikK
KworICAgIHRlc3QuZmFpbF90ZXN0KCkKKyAgICB0ZXN0LmZhaWxfdGVzdChjb25kaXRpb24pCisg
ICAgdGVzdC5mYWlsX3Rlc3QoY29uZGl0aW9uLCBmdW5jdGlvbikKKyAgICB0ZXN0LmZhaWxfdGVz
dChjb25kaXRpb24sIGZ1bmN0aW9uLCBza2lwKQorCisgICAgdGVzdC5ub19yZXN1bHQoKQorICAg
IHRlc3Qubm9fcmVzdWx0KGNvbmRpdGlvbikKKyAgICB0ZXN0Lm5vX3Jlc3VsdChjb25kaXRpb24s
IGZ1bmN0aW9uKQorICAgIHRlc3Qubm9fcmVzdWx0KGNvbmRpdGlvbiwgZnVuY3Rpb24sIHNraXAp
CisKKyAgICB0ZXN0LnN0ZG91dCgpCisgICAgdGVzdC5zdGRvdXQocnVuKQorCisgICAgdGVzdC5z
dGRlcnIoKQorICAgIHRlc3Quc3RkZXJyKHJ1bikKKworICAgIHRlc3Quc3ltbGluayh0YXJnZXQs
IGxpbmspCisKKyAgICB0ZXN0LmJhbm5lcihzdHJpbmcpCisgICAgdGVzdC5iYW5uZXIoc3RyaW5n
LCB3aWR0aCkKKworICAgIHRlc3QuZGlmZihhY3R1YWwsIGV4cGVjdGVkKQorCisgICAgdGVzdC5t
YXRjaChhY3R1YWwsIGV4cGVjdGVkKQorCisgICAgdGVzdC5tYXRjaF9leGFjdCgiYWN0dWFsIDFc
bmFjdHVhbCAyXG4iLCAiZXhwZWN0ZWQgMVxuZXhwZWN0ZWQgMlxuIikKKyAgICB0ZXN0Lm1hdGNo
X2V4YWN0KFsiYWN0dWFsIDFcbiIsICJhY3R1YWwgMlxuIl0sCisgICAgICAgICAgICAgICAgICAg
ICBbImV4cGVjdGVkIDFcbiIsICJleHBlY3RlZCAyXG4iXSkKKworICAgIHRlc3QubWF0Y2hfcmUo
ImFjdHVhbCAxXG5hY3R1YWwgMlxuIiwgcmVnZXhfc3RyaW5nKQorICAgIHRlc3QubWF0Y2hfcmUo
WyJhY3R1YWwgMVxuIiwgImFjdHVhbCAyXG4iXSwgbGlzdF9vZl9yZWdleGVzKQorCisgICAgdGVz
dC5tYXRjaF9yZV9kb3RhbGwoImFjdHVhbCAxXG5hY3R1YWwgMlxuIiwgcmVnZXhfc3RyaW5nKQor
ICAgIHRlc3QubWF0Y2hfcmVfZG90YWxsKFsiYWN0dWFsIDFcbiIsICJhY3R1YWwgMlxuIl0sIGxp
c3Rfb2ZfcmVnZXhlcykKKworICAgIHRlc3QudGVtcGRpcigpCisgICAgdGVzdC50ZW1wZGlyKCd0
ZW1wb3JhcnktZGlyZWN0b3J5JykKKworICAgIHRlc3Quc2xlZXAoKQorICAgIHRlc3Quc2xlZXAo
c2Vjb25kcykKKworICAgIHRlc3Qud2hlcmVfaXMoJ2ZvbycpCisgICAgdGVzdC53aGVyZV9pcygn
Zm9vJywgJ1BBVEgxOlBBVEgyJykKKyAgICB0ZXN0LndoZXJlX2lzKCdmb28nLCAnUEFUSDE7UEFU
SDInLCAnLnN1ZmZpeDM7LnN1ZmZpeDQnKQorCisgICAgdGVzdC51bmxpbmsoJ2ZpbGUnKQorICAg
IHRlc3QudW5saW5rKCdzdWJkaXInLCAnZmlsZScpCisKK1RoZSBUZXN0Q21kIG1vZHVsZSBwcm92
aWRlcyBwYXNzX3Rlc3QoKSwgZmFpbF90ZXN0KCksIGFuZCBub19yZXN1bHQoKQordW5ib3VuZCBm
dW5jdGlvbnMgdGhhdCByZXBvcnQgdGVzdCByZXN1bHRzIGZvciB1c2Ugd2l0aCB0aGUgQWVnaXMg
Y2hhbmdlCittYW5hZ2VtZW50IHN5c3RlbS4gIFRoZXNlIG1ldGhvZHMgdGVybWluYXRlIHRoZSB0
ZXN0IGltbWVkaWF0ZWx5LAorcmVwb3J0aW5nIFBBU1NFRCwgRkFJTEVELCBvciBOTyBSRVNVTFQg
cmVzcGVjdGl2ZWx5LCBhbmQgZXhpdGluZyB3aXRoCitzdGF0dXMgMCAoc3VjY2VzcyksIDEgb3Ig
MiByZXNwZWN0aXZlbHkuICBUaGlzIGFsbG93cyBmb3IgYSBkaXN0aW5jdGlvbgorYmV0d2VlbiBh
biBhY3R1YWwgZmFpbGVkIHRlc3QgYW5kIGEgdGVzdCB0aGF0IGNvdWxkIG5vdCBiZSBwcm9wZXJs
eQorZXZhbHVhdGVkIGJlY2F1c2Ugb2YgYW4gZXh0ZXJuYWwgY29uZGl0aW9uIChzdWNoIGFzIGEg
ZnVsbCBmaWxlIHN5c3RlbQorb3IgaW5jb3JyZWN0IHBlcm1pc3Npb25zKS4KKworICAgIGltcG9y
dCBUZXN0Q21kCisKKyAgICBUZXN0Q21kLnBhc3NfdGVzdCgpCisgICAgVGVzdENtZC5wYXNzX3Rl
c3QoY29uZGl0aW9uKQorICAgIFRlc3RDbWQucGFzc190ZXN0KGNvbmRpdGlvbiwgZnVuY3Rpb24p
CisKKyAgICBUZXN0Q21kLmZhaWxfdGVzdCgpCisgICAgVGVzdENtZC5mYWlsX3Rlc3QoY29uZGl0
aW9uKQorICAgIFRlc3RDbWQuZmFpbF90ZXN0KGNvbmRpdGlvbiwgZnVuY3Rpb24pCisgICAgVGVz
dENtZC5mYWlsX3Rlc3QoY29uZGl0aW9uLCBmdW5jdGlvbiwgc2tpcCkKKworICAgIFRlc3RDbWQu
bm9fcmVzdWx0KCkKKyAgICBUZXN0Q21kLm5vX3Jlc3VsdChjb25kaXRpb24pCisgICAgVGVzdENt
ZC5ub19yZXN1bHQoY29uZGl0aW9uLCBmdW5jdGlvbikKKyAgICBUZXN0Q21kLm5vX3Jlc3VsdChj
b25kaXRpb24sIGZ1bmN0aW9uLCBza2lwKQorCitUaGUgVGVzdENtZCBtb2R1bGUgYWxzbyBwcm92
aWRlcyB1bmJvdW5kIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZSBtYXRjaGluZworaW4gdGhlIHNhbWUg
d2F5IGFzIHRoZSBtYXRjaF8qKCkgbWV0aG9kcyBkZXNjcmliZWQgYWJvdmUuCisKKyAgICBpbXBv
cnQgVGVzdENtZAorCisgICAgdGVzdCA9IFRlc3RDbWQuVGVzdENtZChtYXRjaCA9IFRlc3RDbWQu
bWF0Y2hfZXhhY3QpCisKKyAgICB0ZXN0ID0gVGVzdENtZC5UZXN0Q21kKG1hdGNoID0gVGVzdENt
ZC5tYXRjaF9yZSkKKworICAgIHRlc3QgPSBUZXN0Q21kLlRlc3RDbWQobWF0Y2ggPSBUZXN0Q21k
Lm1hdGNoX3JlX2RvdGFsbCkKKworVGhlIFRlc3RDbWQgbW9kdWxlIHByb3ZpZGVzIHVuYm91bmQg
ZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHRoZQorImRpZmYiIGFyZ3VtZW50IHRvIFRl
c3RDbWQuVGVzdENtZCBpbnN0YW50aWF0aW9uOgorCisgICAgaW1wb3J0IFRlc3RDbWQKKworICAg
IHRlc3QgPSBUZXN0Q21kLlRlc3RDbWQobWF0Y2ggPSBUZXN0Q21kLm1hdGNoX3JlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlmZiA9IFRlc3RDbWQuZGlmZl9yZSkKKworICAgIHRlc3Qg
PSBUZXN0Q21kLlRlc3RDbWQoZGlmZiA9IFRlc3RDbWQuc2ltcGxlX2RpZmYpCisKK1RoZSAiZGlm
ZiIgYXJndW1lbnQgY2FuIGFsc28gYmUgdXNlZCB3aXRoIHN0YW5kYXJkIGRpZmZsaWIgZnVuY3Rp
b25zOgorCisgICAgaW1wb3J0IGRpZmZsaWIKKworICAgIHRlc3QgPSBUZXN0Q21kLlRlc3RDbWQo
ZGlmZiA9IGRpZmZsaWIuY29udGV4dF9kaWZmKQorCisgICAgdGVzdCA9IFRlc3RDbWQuVGVzdENt
ZChkaWZmID0gZGlmZmxpYi51bmlmaWVkX2RpZmYpCisKK0xhc3RseSwgdGhlIHdoZXJlX2lzKCkg
bWV0aG9kIGFsc28gZXhpc3RzIGluIGFuIHVuYm91bmQgZnVuY3Rpb24KK3ZlcnNpb24uCisKKyAg
ICBpbXBvcnQgVGVzdENtZAorCisgICAgVGVzdENtZC53aGVyZV9pcygnZm9vJykKKyAgICBUZXN0
Q21kLndoZXJlX2lzKCdmb28nLCAnUEFUSDE6UEFUSDInKQorICAgIFRlc3RDbWQud2hlcmVfaXMo
J2ZvbycsICdQQVRIMTtQQVRIMicsICcuc3VmZml4Mzsuc3VmZml4NCcpCisiIiIKKworIyBDb3B5
cmlnaHQgMjAwMC0yMDEwIFN0ZXZlbiBLbmlnaHQKKyMgVGhpcyBtb2R1bGUgaXMgZnJlZSBzb2Z0
d2FyZSwgYW5kIHlvdSBtYXkgcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5k
ZXIgdGhlIHNhbWUgdGVybXMgYXMgUHl0aG9uIGl0c2VsZiwgc28gbG9uZyBhcyB0aGlzIGNvcHly
aWdodCBtZXNzYWdlCisjIGFuZCBkaXNjbGFpbWVyIGFyZSByZXRhaW5lZCBpbiB0aGVpciBvcmln
aW5hbCBmb3JtLgorIworIyBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBU
TyBBTlkgUEFSVFkgRk9SIERJUkVDVCwgSU5ESVJFQ1QsCisjIFNQRUNJQUwsIElOQ0lERU5UQUws
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRI
SVMgQ09ERSwgRVZFTiBJRiBUSEUgQVVUSE9SIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0gKKyMgREFNQUdFLgorIworIyBUSEUgQVVUSE9SIFNQRUNJRklDQUxMWSBE
SVNDTEFJTVMgQU5ZIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQQorIyBQQVJUSUNVTEFSIFBVUlBPU0UuICBUSEUgQ09ERSBQUk9WSURFRCBIRVJFVU5ERVIg
SVMgT04gQU4gIkFTIElTIiBCQVNJUywKKyMgQU5EIFRIRVJFIElTIE5PIE9CTElHQVRJT04gV0hB
VFNPRVZFUiBUTyBQUk9WSURFIE1BSU5URU5BTkNFLAorIyBTVVBQT1JULCBVUERBVEVTLCBFTkhB
TkNFTUVOVFMsIE9SIE1PRElGSUNBVElPTlMuCisKK19fYXV0aG9yX18gPSAiU3RldmVuIEtuaWdo
dCA8a25pZ2h0IGF0IGJhbGRtdCBkb3QgY29tPiIKK19fcmV2aXNpb25fXyA9ICJUZXN0Q21kLnB5
IDAuMzcuRDAwMSAyMDEwLzAxLzExIDE2OjU1OjUwIGtuaWdodCIKK19fdmVyc2lvbl9fID0gIjAu
MzciCisKK2ltcG9ydCBlcnJubworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHJl
CitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3RhdAoraW1wb3J0IHN0cmluZworaW1wb3J0IHN5cwor
aW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGltZQoraW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHR5
cGVzCitpbXBvcnQgVXNlckxpc3QKKworX19hbGxfXyA9IFsKKyAgICAnZGlmZl9yZScsCisgICAg
J2ZhaWxfdGVzdCcsCisgICAgJ25vX3Jlc3VsdCcsCisgICAgJ3Bhc3NfdGVzdCcsCisgICAgJ21h
dGNoX2V4YWN0JywKKyAgICAnbWF0Y2hfcmUnLAorICAgICdtYXRjaF9yZV9kb3RhbGwnLAorICAg
ICdweXRob25fZXhlY3V0YWJsZScsCisgICAgJ1Rlc3RDbWQnCitdCisKK3RyeToKKyAgICBpbXBv
cnQgZGlmZmxpYgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF9fYWxsX18uYXBwZW5kKCdzaW1w
bGVfZGlmZicpCisKK2RlZiBpc19MaXN0KGUpOgorICAgIHJldHVybiB0eXBlKGUpIGlzIHR5cGVz
Lkxpc3RUeXBlIFwKKyAgICAgICAgb3IgaXNpbnN0YW5jZShlLCBVc2VyTGlzdC5Vc2VyTGlzdCkK
KwordHJ5OgorICAgIGZyb20gVXNlclN0cmluZyBpbXBvcnQgVXNlclN0cmluZworZXhjZXB0IElt
cG9ydEVycm9yOgorICAgIGNsYXNzIFVzZXJTdHJpbmc6CisgICAgICAgIHBhc3MKKworaWYgaGFz
YXR0cih0eXBlcywgJ1VuaWNvZGVUeXBlJyk6CisgICAgZGVmIGlzX1N0cmluZyhlKToKKyAgICAg
ICAgcmV0dXJuIHR5cGUoZSkgaXMgdHlwZXMuU3RyaW5nVHlwZSBcCisgICAgICAgICAgICBvciB0
eXBlKGUpIGlzIHR5cGVzLlVuaWNvZGVUeXBlIFwKKyAgICAgICAgICAgIG9yIGlzaW5zdGFuY2Uo
ZSwgVXNlclN0cmluZykKK2Vsc2U6CisgICAgZGVmIGlzX1N0cmluZyhlKToKKyAgICAgICAgcmV0
dXJuIHR5cGUoZSkgaXMgdHlwZXMuU3RyaW5nVHlwZSBvciBpc2luc3RhbmNlKGUsIFVzZXJTdHJp
bmcpCisKK3RlbXBmaWxlLnRlbXBsYXRlID0gJ3Rlc3RjbWQuJworaWYgb3MubmFtZSBpbiAoJ3Bv
c2l4JywgJ250Jyk6CisgICAgdGVtcGZpbGUudGVtcGxhdGUgPSAndGVzdGNtZC4nICsgc3RyKG9z
LmdldHBpZCgpKSArICcuJworZWxzZToKKyAgICB0ZW1wZmlsZS50ZW1wbGF0ZSA9ICd0ZXN0Y21k
LicKKworcmVfc3BhY2UgPSByZS5jb21waWxlKCdccycpCisKK19DbGVhbnVwID0gW10KKworX2No
YWluX3RvX2V4aXRmdW5jID0gTm9uZQorCitkZWYgX2NsZWFuKCk6CisgICAgZ2xvYmFsIF9DbGVh
bnVwCisgICAgY2xlYW5saXN0ID0gZmlsdGVyKE5vbmUsIF9DbGVhbnVwKQorICAgIGRlbCBfQ2xl
YW51cFs6XQorICAgIGNsZWFubGlzdC5yZXZlcnNlKCkKKyAgICBmb3IgdGVzdCBpbiBjbGVhbmxp
c3Q6CisgICAgICAgIHRlc3QuY2xlYW51cCgpCisgICAgaWYgX2NoYWluX3RvX2V4aXRmdW5jOgor
ICAgICAgICBfY2hhaW5fdG9fZXhpdGZ1bmMoKQorCit0cnk6CisgICAgaW1wb3J0IGF0ZXhpdAor
ZXhjZXB0IEltcG9ydEVycm9yOgorICAgICMgVE9ETygxLjUpOiBhdGV4aXQgcmVxdWlyZXMgcHl0
aG9uIDIuMCwgc28gY2hhaW4gc3lzLmV4aXRmdW5jCisgICAgdHJ5OgorICAgICAgICBfY2hhaW5f
dG9fZXhpdGZ1bmMgPSBzeXMuZXhpdGZ1bmMKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Cisg
ICAgICAgIHBhc3MKKyAgICBzeXMuZXhpdGZ1bmMgPSBfY2xlYW4KK2Vsc2U6CisgICAgYXRleGl0
LnJlZ2lzdGVyKF9jbGVhbikKKwordHJ5OgorICAgIHppcAorZXhjZXB0IE5hbWVFcnJvcjoKKyAg
ICBkZWYgemlwKCpsaXN0cyk6CisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIGZvciBpIGlu
IHhyYW5nZShtaW4obWFwKGxlbiwgbGlzdHMpKSk6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KHR1cGxlKG1hcChsYW1iZGEgbCwgaT1pOiBsW2ldLCBsaXN0cykpKQorICAgICAgICByZXR1cm4g
cmVzdWx0CisKK2NsYXNzIENvbGxlY3RvcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdG9wKToK
KyAgICAgICAgc2VsZi5lbnRyaWVzID0gW3RvcF0KKyAgICBkZWYgX19jYWxsX18oc2VsZiwgYXJn
LCBkaXJuYW1lLCBuYW1lcyk6CisgICAgICAgIHBhdGhqb2luID0gbGFtYmRhIG4sIGQ9ZGlybmFt
ZTogb3MucGF0aC5qb2luKGQsIG4pCisgICAgICAgIHNlbGYuZW50cmllcy5leHRlbmQobWFwKHBh
dGhqb2luLCBuYW1lcykpCisKK2RlZiBfY2FsbGVyKHRibGlzdCwgc2tpcCk6CisgICAgc3RyaW5n
ID0gIiIKKyAgICBhcnIgPSBbXQorICAgIGZvciBmaWxlLCBsaW5lLCBuYW1lLCB0ZXh0IGluIHRi
bGlzdDoKKyAgICAgICAgaWYgZmlsZVstMTA6XSA9PSAiVGVzdENtZC5weSI6CisgICAgICAgICAg
ICAgICAgYnJlYWsKKyAgICAgICAgYXJyID0gWyhmaWxlLCBsaW5lLCBuYW1lLCB0ZXh0KV0gKyBh
cnIKKyAgICBhdGZyb20gPSAiYXQiCisgICAgZm9yIGZpbGUsIGxpbmUsIG5hbWUsIHRleHQgaW4g
YXJyW3NraXA6XToKKyAgICAgICAgaWYgbmFtZSBpbiAoIj8iLCAiPG1vZHVsZT4iKToKKyAgICAg
ICAgICAgIG5hbWUgPSAiIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbmFtZSA9ICIgKCIg
KyBuYW1lICsgIikiCisgICAgICAgIHN0cmluZyA9IHN0cmluZyArICgiJXMgbGluZSAlZCBvZiAl
cyVzXG4iICUgKGF0ZnJvbSwgbGluZSwgZmlsZSwgbmFtZSkpCisgICAgICAgIGF0ZnJvbSA9ICJc
dGZyb20iCisgICAgcmV0dXJuIHN0cmluZworCitkZWYgZmFpbF90ZXN0KHNlbGYgPSBOb25lLCBj
b25kaXRpb24gPSAxLCBmdW5jdGlvbiA9IE5vbmUsIHNraXAgPSAwKToKKyAgICAiIiJDYXVzZSB0
aGUgdGVzdCB0byBmYWlsLgorCisgICAgQnkgZGVmYXVsdCwgdGhlIGZhaWxfdGVzdCgpIG1ldGhv
ZCByZXBvcnRzIHRoYXQgdGhlIHRlc3QgRkFJTEVECisgICAgYW5kIGV4aXRzIHdpdGggYSBzdGF0
dXMgb2YgMS4gIElmIGEgY29uZGl0aW9uIGFyZ3VtZW50IGlzIHN1cHBsaWVkLAorICAgIHRoZSB0
ZXN0IGZhaWxzIG9ubHkgaWYgdGhlIGNvbmRpdGlvbiBpcyB0cnVlLgorICAgICIiIgorICAgIGlm
IG5vdCBjb25kaXRpb246CisgICAgICAgIHJldHVybgorICAgIGlmIG5vdCBmdW5jdGlvbiBpcyBO
b25lOgorICAgICAgICBmdW5jdGlvbigpCisgICAgb2YgPSAiIgorICAgIGRlc2MgPSAiIgorICAg
IHNlcCA9ICIgIgorICAgIGlmIG5vdCBzZWxmIGlzIE5vbmU6CisgICAgICAgIGlmIHNlbGYucHJv
Z3JhbToKKyAgICAgICAgICAgIG9mID0gIiBvZiAiICsgc2VsZi5wcm9ncmFtCisgICAgICAgICAg
ICBzZXAgPSAiXG5cdCIKKyAgICAgICAgaWYgc2VsZi5kZXNjcmlwdGlvbjoKKyAgICAgICAgICAg
IGRlc2MgPSAiIFsiICsgc2VsZi5kZXNjcmlwdGlvbiArICJdIgorICAgICAgICAgICAgc2VwID0g
IlxuXHQiCisKKyAgICBhdCA9IF9jYWxsZXIodHJhY2ViYWNrLmV4dHJhY3Rfc3RhY2soKSwgc2tp
cCkKKyAgICBzeXMuc3RkZXJyLndyaXRlKCJGQUlMRUQgdGVzdCIgKyBvZiArIGRlc2MgKyBzZXAg
KyBhdCkKKworICAgIHN5cy5leGl0KDEpCisKK2RlZiBub19yZXN1bHQoc2VsZiA9IE5vbmUsIGNv
bmRpdGlvbiA9IDEsIGZ1bmN0aW9uID0gTm9uZSwgc2tpcCA9IDApOgorICAgICIiIkNhdXNlcyBh
IHRlc3QgdG8gZXhpdCB3aXRoIG5vIHZhbGlkIHJlc3VsdC4KKworICAgIEJ5IGRlZmF1bHQsIHRo
ZSBub19yZXN1bHQoKSBtZXRob2QgcmVwb3J0cyBOTyBSRVNVTFQgZm9yIHRoZSB0ZXN0CisgICAg
YW5kIGV4aXRzIHdpdGggYSBzdGF0dXMgb2YgMi4gIElmIGEgY29uZGl0aW9uIGFyZ3VtZW50IGlz
IHN1cHBsaWVkLAorICAgIHRoZSB0ZXN0IGZhaWxzIG9ubHkgaWYgdGhlIGNvbmRpdGlvbiBpcyB0
cnVlLgorICAgICIiIgorICAgIGlmIG5vdCBjb25kaXRpb246CisgICAgICAgIHJldHVybgorICAg
IGlmIG5vdCBmdW5jdGlvbiBpcyBOb25lOgorICAgICAgICBmdW5jdGlvbigpCisgICAgb2YgPSAi
IgorICAgIGRlc2MgPSAiIgorICAgIHNlcCA9ICIgIgorICAgIGlmIG5vdCBzZWxmIGlzIE5vbmU6
CisgICAgICAgIGlmIHNlbGYucHJvZ3JhbToKKyAgICAgICAgICAgIG9mID0gIiBvZiAiICsgc2Vs
Zi5wcm9ncmFtCisgICAgICAgICAgICBzZXAgPSAiXG5cdCIKKyAgICAgICAgaWYgc2VsZi5kZXNj
cmlwdGlvbjoKKyAgICAgICAgICAgIGRlc2MgPSAiIFsiICsgc2VsZi5kZXNjcmlwdGlvbiArICJd
IgorICAgICAgICAgICAgc2VwID0gIlxuXHQiCisKKyAgICBhdCA9IF9jYWxsZXIodHJhY2ViYWNr
LmV4dHJhY3Rfc3RhY2soKSwgc2tpcCkKKyAgICBzeXMuc3RkZXJyLndyaXRlKCJOTyBSRVNVTFQg
Zm9yIHRlc3QiICsgb2YgKyBkZXNjICsgc2VwICsgYXQpCisKKyAgICBzeXMuZXhpdCgyKQorCitk
ZWYgcGFzc190ZXN0KHNlbGYgPSBOb25lLCBjb25kaXRpb24gPSAxLCBmdW5jdGlvbiA9IE5vbmUp
OgorICAgICIiIkNhdXNlcyBhIHRlc3QgdG8gcGFzcy4KKworICAgIEJ5IGRlZmF1bHQsIHRoZSBw
YXNzX3Rlc3QoKSBtZXRob2QgcmVwb3J0cyBQQVNTRUQgZm9yIHRoZSB0ZXN0CisgICAgYW5kIGV4
aXRzIHdpdGggYSBzdGF0dXMgb2YgMC4gIElmIGEgY29uZGl0aW9uIGFyZ3VtZW50IGlzIHN1cHBs
aWVkLAorICAgIHRoZSB0ZXN0IHBhc3NlcyBvbmx5IGlmIHRoZSBjb25kaXRpb24gaXMgdHJ1ZS4K
KyAgICAiIiIKKyAgICBpZiBub3QgY29uZGl0aW9uOgorICAgICAgICByZXR1cm4KKyAgICBpZiBu
b3QgZnVuY3Rpb24gaXMgTm9uZToKKyAgICAgICAgZnVuY3Rpb24oKQorICAgIHN5cy5zdGRlcnIu
d3JpdGUoIlBBU1NFRFxuIikKKyAgICBzeXMuZXhpdCgwKQorCitkZWYgbWF0Y2hfZXhhY3QobGlu
ZXMgPSBOb25lLCBtYXRjaGVzID0gTm9uZSk6CisgICAgIiIiCisgICAgIiIiCisgICAgaWYgbm90
IGlzX0xpc3QobGluZXMpOgorICAgICAgICBsaW5lcyA9IHN0cmluZy5zcGxpdChsaW5lcywgIlxu
IikKKyAgICBpZiBub3QgaXNfTGlzdChtYXRjaGVzKToKKyAgICAgICAgbWF0Y2hlcyA9IHN0cmlu
Zy5zcGxpdChtYXRjaGVzLCAiXG4iKQorICAgIGlmIGxlbihsaW5lcykgIT0gbGVuKG1hdGNoZXMp
OgorICAgICAgICByZXR1cm4KKyAgICBmb3IgaSBpbiByYW5nZShsZW4obGluZXMpKToKKyAgICAg
ICAgaWYgbGluZXNbaV0gIT0gbWF0Y2hlc1tpXToKKyAgICAgICAgICAgIHJldHVybgorICAgIHJl
dHVybiAxCisKK2RlZiBtYXRjaF9yZShsaW5lcyA9IE5vbmUsIHJlcyA9IE5vbmUpOgorICAgICIi
IgorICAgICIiIgorICAgIGlmIG5vdCBpc19MaXN0KGxpbmVzKToKKyAgICAgICAgbGluZXMgPSBz
dHJpbmcuc3BsaXQobGluZXMsICJcbiIpCisgICAgaWYgbm90IGlzX0xpc3QocmVzKToKKyAgICAg
ICAgcmVzID0gc3RyaW5nLnNwbGl0KHJlcywgIlxuIikKKyAgICBpZiBsZW4obGluZXMpICE9IGxl
bihyZXMpOgorICAgICAgICByZXR1cm4KKyAgICBmb3IgaSBpbiByYW5nZShsZW4obGluZXMpKToK
KyAgICAgICAgcyA9ICJeIiArIHJlc1tpXSArICIkIgorICAgICAgICB0cnk6CisgICAgICAgICAg
ICBleHByID0gcmUuY29tcGlsZShzKQorICAgICAgICBleGNlcHQgcmUuZXJyb3IsIGU6CisgICAg
ICAgICAgICBtc2cgPSAiUmVndWxhciBleHByZXNzaW9uIGVycm9yIGluICVzOiAlcyIKKyAgICAg
ICAgICAgIHJhaXNlIHJlLmVycm9yLCBtc2cgJSAocmVwcihzKSwgZVswXSkKKyAgICAgICAgaWYg
bm90IGV4cHIuc2VhcmNoKGxpbmVzW2ldKToKKyAgICAgICAgICAgIHJldHVybgorICAgIHJldHVy
biAxCisKK2RlZiBtYXRjaF9yZV9kb3RhbGwobGluZXMgPSBOb25lLCByZXMgPSBOb25lKToKKyAg
ICAiIiIKKyAgICAiIiIKKyAgICBpZiBub3QgdHlwZShsaW5lcykgaXMgdHlwZSgiIik6CisgICAg
ICAgIGxpbmVzID0gc3RyaW5nLmpvaW4obGluZXMsICJcbiIpCisgICAgaWYgbm90IHR5cGUocmVz
KSBpcyB0eXBlKCIiKToKKyAgICAgICAgcmVzID0gc3RyaW5nLmpvaW4ocmVzLCAiXG4iKQorICAg
IHMgPSAiXiIgKyByZXMgKyAiJCIKKyAgICB0cnk6CisgICAgICAgIGV4cHIgPSByZS5jb21waWxl
KHMsIHJlLkRPVEFMTCkKKyAgICBleGNlcHQgcmUuZXJyb3IsIGU6CisgICAgICAgIG1zZyA9ICJS
ZWd1bGFyIGV4cHJlc3Npb24gZXJyb3IgaW4gJXM6ICVzIgorICAgICAgICByYWlzZSByZS5lcnJv
ciwgbXNnICUgKHJlcHIocyksIGVbMF0pCisgICAgaWYgZXhwci5tYXRjaChsaW5lcyk6CisgICAg
ICAgIHJldHVybiAxCisKK3RyeToKKyAgICBpbXBvcnQgZGlmZmxpYgorZXhjZXB0IEltcG9ydEVy
cm9yOgorICAgIHBhc3MKK2Vsc2U6CisgICAgZGVmIHNpbXBsZV9kaWZmKGEsIGIsIGZyb21maWxl
PScnLCB0b2ZpbGU9JycsCisgICAgICAgICAgICAgICAgICAgIGZyb21maWxlZGF0ZT0nJywgdG9m
aWxlZGF0ZT0nJywgbj0zLCBsaW5ldGVybT0nXG4nKToKKyAgICAgICAgIiIiCisgICAgICAgIEEg
ZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBjYWxsaW5nIHNpZ25hdHVyZSBhcyBkaWZmbGliLmNvbnRl
eHRfZGlmZgorICAgICAgICAoZGlmZiAtYykgYW5kIGRpZmZsaWIudW5pZmllZF9kaWZmIChkaWZm
IC11KSBidXQgd2hpY2ggcHJpbnRzCisgICAgICAgIG91dHB1dCBsaWtlIHRoZSBzaW1wbGUsIHVu
YWRvcm5lZCAnZGlmZiIgY29tbWFuZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNtID0gZGlmZmxp
Yi5TZXF1ZW5jZU1hdGNoZXIoTm9uZSwgYSwgYikKKyAgICAgICAgZGVmIGNvbW1hKHgxLCB4Mik6
CisgICAgICAgICAgICByZXR1cm4geDErMSA9PSB4MiBhbmQgc3RyKHgyKSBvciAnJXMsJXMnICUg
KHgxKzEsIHgyKQorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICBmb3Igb3AsIGExLCBhMiwg
YjEsIGIyIGluIHNtLmdldF9vcGNvZGVzKCk6CisgICAgICAgICAgICBpZiBvcCA9PSAnZGVsZXRl
JzoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIlc2QlZCIgJSAoY29tbWEoYTEsIGEy
KSwgYjEpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5leHRlbmQobWFwKGxhbWJkYSBsOiAnPCAn
ICsgbCwgYVthMTphMl0pKQorICAgICAgICAgICAgZWxpZiBvcCA9PSAnaW5zZXJ0JzoKKyAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIlZGElcyIgJSAoYTEsIGNvbW1hKGIxLCBiMikpKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC5leHRlbmQobWFwKGxhbWJkYSBsOiAnPiAnICsgbCwgYlti
MTpiMl0pKQorICAgICAgICAgICAgZWxpZiBvcCA9PSAncmVwbGFjZSc6CisgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiJXNjJXMiICUgKGNvbW1hKGExLCBhMiksIGNvbW1hKGIxLCBiMikp
KQorICAgICAgICAgICAgICAgIHJlc3VsdC5leHRlbmQobWFwKGxhbWJkYSBsOiAnPCAnICsgbCwg
YVthMTphMl0pKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJy0tLScpCisgICAgICAg
ICAgICAgICAgcmVzdWx0LmV4dGVuZChtYXAobGFtYmRhIGw6ICc+ICcgKyBsLCBiW2IxOmIyXSkp
CisgICAgICAgIHJldHVybiByZXN1bHQKKworZGVmIGRpZmZfcmUoYSwgYiwgZnJvbWZpbGU9Jycs
IHRvZmlsZT0nJywKKyAgICAgICAgICAgICAgICBmcm9tZmlsZWRhdGU9JycsIHRvZmlsZWRhdGU9
JycsIG49MywgbGluZXRlcm09J1xuJyk6CisgICAgIiIiCisgICAgQSBzaW1wbGUgImRpZmYiIG9m
IHR3byBzZXRzIG9mIGxpbmVzIHdoZW4gdGhlIGV4cGVjdGVkIGxpbmVzCisgICAgYXJlIHJlZ3Vs
YXIgZXhwcmVzc2lvbnMuICBUaGlzIGlzIGEgcmVhbGx5IGR1bWIgdGhpbmcgdGhhdAorICAgIGp1
c3QgY29tcGFyZXMgZWFjaCBsaW5lIGluIHR1cm4sIHNvIGl0IGRvZXNuJ3QgbG9vayBmb3IKKyAg
ICBjaHVua3Mgb2YgbWF0Y2hpbmcgbGluZXMgYW5kIHRoZSBsaWtlLS1idXQgYXQgbGVhc3QgaXQg
bGV0cworICAgIHlvdSBrbm93IGV4YWN0bHkgd2hpY2ggbGluZSBmaXJzdCBkaWRuJ3QgY29tcGFy
ZSBjb3JyZWN0bC4uLgorICAgICIiIgorICAgIHJlc3VsdCA9IFtdCisgICAgZGlmZiA9IGxlbihh
KSAtIGxlbihiKQorICAgIGlmIGRpZmYgPCAwOgorICAgICAgICBhID0gYSArIFsnJ10qKC1kaWZm
KQorICAgIGVsaWYgZGlmZiA+IDA6CisgICAgICAgIGIgPSBiICsgWycnXSpkaWZmCisgICAgaSA9
IDAKKyAgICBmb3IgYWxpbmUsIGJsaW5lIGluIHppcChhLCBiKToKKyAgICAgICAgcyA9ICJeIiAr
IGFsaW5lICsgIiQiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV4cHIgPSByZS5jb21waWxl
KHMpCisgICAgICAgIGV4Y2VwdCByZS5lcnJvciwgZToKKyAgICAgICAgICAgIG1zZyA9ICJSZWd1
bGFyIGV4cHJlc3Npb24gZXJyb3IgaW4gJXM6ICVzIgorICAgICAgICAgICAgcmFpc2UgcmUuZXJy
b3IsIG1zZyAlIChyZXByKHMpLCBlWzBdKQorICAgICAgICBpZiBub3QgZXhwci5zZWFyY2goYmxp
bmUpOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiJXNjJXMiICUgKGkrMSwgaSsxKSkKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzwgJyArIHJlcHIoYVtpXSkpCisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCctLS0nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnPiAnICsgcmVw
cihiW2ldKSkKKyAgICAgICAgaSA9IGkrMQorICAgIHJldHVybiByZXN1bHQKKworaWYgb3MubmFt
ZSA9PSAnamF2YSc6CisKKyAgICBweXRob25fZXhlY3V0YWJsZSA9IG9zLnBhdGguam9pbihzeXMu
cHJlZml4LCAnanl0aG9uJykKKworZWxzZToKKworICAgIHB5dGhvbl9leGVjdXRhYmxlID0gc3lz
LmV4ZWN1dGFibGUKKworaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisKKyAgICBkZWZhdWx0
X3NsZWVwX3NlY29uZHMgPSAyCisKKyAgICBkZWYgd2hlcmVfaXMoZmlsZSwgcGF0aD1Ob25lLCBw
YXRoZXh0PU5vbmUpOgorICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICBwYXRo
ID0gb3MuZW52aXJvblsnUEFUSCddCisgICAgICAgIGlmIGlzX1N0cmluZyhwYXRoKToKKyAgICAg
ICAgICAgIHBhdGggPSBzdHJpbmcuc3BsaXQocGF0aCwgb3MucGF0aHNlcCkKKyAgICAgICAgaWYg
cGF0aGV4dCBpcyBOb25lOgorICAgICAgICAgICAgcGF0aGV4dCA9IG9zLmVudmlyb25bJ1BBVEhF
WFQnXQorICAgICAgICBpZiBpc19TdHJpbmcocGF0aGV4dCk6CisgICAgICAgICAgICBwYXRoZXh0
ID0gc3RyaW5nLnNwbGl0KHBhdGhleHQsIG9zLnBhdGhzZXApCisgICAgICAgIGZvciBleHQgaW4g
cGF0aGV4dDoKKyAgICAgICAgICAgIGlmIHN0cmluZy5sb3dlcihleHQpID09IHN0cmluZy5sb3dl
cihmaWxlWy1sZW4oZXh0KTpdKToKKyAgICAgICAgICAgICAgICBwYXRoZXh0ID0gWycnXQorICAg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGZvciBkaXIgaW4gcGF0aDoKKyAgICAgICAgICAg
IGYgPSBvcy5wYXRoLmpvaW4oZGlyLCBmaWxlKQorICAgICAgICAgICAgZm9yIGV4dCBpbiBwYXRo
ZXh0OgorICAgICAgICAgICAgICAgIGZleHQgPSBmICsgZXh0CisgICAgICAgICAgICAgICAgaWYg
b3MucGF0aC5pc2ZpbGUoZmV4dCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmZXh0Cisg
ICAgICAgIHJldHVybiBOb25lCisKK2Vsc2U6CisKKyAgICBkZWYgd2hlcmVfaXMoZmlsZSwgcGF0
aD1Ob25lLCBwYXRoZXh0PU5vbmUpOgorICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAg
ICAgICBwYXRoID0gb3MuZW52aXJvblsnUEFUSCddCisgICAgICAgIGlmIGlzX1N0cmluZyhwYXRo
KToKKyAgICAgICAgICAgIHBhdGggPSBzdHJpbmcuc3BsaXQocGF0aCwgb3MucGF0aHNlcCkKKyAg
ICAgICAgZm9yIGRpciBpbiBwYXRoOgorICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihkaXIs
IGZpbGUpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmKToKKyAgICAgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHN0ID0gb3Muc3RhdChmKQorICAgICAgICAgICAg
ICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgICAgIGlmIHN0YXQuU19JTU9ERShzdFtzdGF0LlNUX01PREVdKSAmIDAxMTE6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWZh
dWx0X3NsZWVwX3NlY29uZHMgPSAxCisKKworCit0cnk6CisgICAgaW1wb3J0IHN1YnByb2Nlc3MK
K2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAjIFRoZSBzdWJwcm9jZXNzIG1vZHVsZSBkb2Vzbid0
IGV4aXN0IGluIHRoaXMgdmVyc2lvbiBvZiBQeXRob24sCisgICAgIyBzbyB3ZSdyZSBnb2luZyB0
byBjb2JibGUgdXAgc29tZXRoaW5nIHRoYXQgbG9va3MganVzdCBlbm91Z2gKKyAgICAjIGxpa2Ug
aXRzIEFQSSBmb3Igb3VyIHB1cnBvc2VzIGJlbG93LgorICAgIGltcG9ydCBuZXcKKworICAgIHN1
YnByb2Nlc3MgPSBuZXcubW9kdWxlKCdzdWJwcm9jZXNzJykKKworICAgIHN1YnByb2Nlc3MuUElQ
RSA9ICdQSVBFJworICAgIHN1YnByb2Nlc3MuU1RET1VUID0gJ1NURE9VVCcKKyAgICBzdWJwcm9j
ZXNzLm1zd2luZG93cyA9IChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJykKKworICAgIHRyeToKKyAg
ICAgICAgaW1wb3J0IHBvcGVuMgorICAgICAgICBwb3BlbjIuUG9wZW4zCisgICAgZXhjZXB0IEF0
dHJpYnV0ZUVycm9yOgorICAgICAgICBjbGFzcyBQb3BlbjM6CisgICAgICAgICAgICB1bml2ZXJz
YWxfbmV3bGluZXMgPSAxCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29tbWFuZCwg
Kiprdyk6CisgICAgICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgYW5kIGNv
bW1hbmRbMF0gPT0gJyInOgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kID0gJyInICsgY29t
bWFuZCArICciJworICAgICAgICAgICAgICAgIChzdGRpbiwgc3Rkb3V0LCBzdGRlcnIpID0gb3Mu
cG9wZW4zKCcgJyArIGNvbW1hbmQpCisgICAgICAgICAgICAgICAgc2VsZi5zdGRpbiA9IHN0ZGlu
CisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBzdGRvdXQKKyAgICAgICAgICAgICAgICBz
ZWxmLnN0ZGVyciA9IHN0ZGVycgorICAgICAgICAgICAgZGVmIGNsb3NlX291dHB1dChzZWxmKToK
KyAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dC5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2Vs
Zi5yZXN1bHRjb2RlID0gc2VsZi5zdGRlcnIuY2xvc2UoKQorICAgICAgICAgICAgZGVmIHdhaXQo
c2VsZik6CisgICAgICAgICAgICAgICAgcmVzdWx0Y29kZSA9IHNlbGYucmVzdWx0Y29kZQorICAg
ICAgICAgICAgICAgIGlmIG9zLldJRkVYSVRFRChyZXN1bHRjb2RlKToKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG9zLldFWElUU1RBVFVTKHJlc3VsdGNvZGUpCisgICAgICAgICAgICAgICAg
ZWxpZiBvcy5XSUZTSUdOQUxFRChyZXN1bHRjb2RlKToKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG9zLldURVJNU0lHKHJlc3VsdGNvZGUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGVsc2U6CisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHBvcGVuMi5Qb3BlbjQKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgor
ICAgICAgICAgICAgIyBBIGNyaWJiZWQgUG9wZW40IGNsYXNzLCB3aXRoIHNvbWUgcmV0cm9maXR0
ZWQgY29kZSBmcm9tCisgICAgICAgICAgICAjIHRoZSBQeXRob24gMS41IFBvcGVuMyBjbGFzcyBt
ZXRob2RzIHRvIGRvIGNlcnRhaW4gdGhpbmdzCisgICAgICAgICAgICAjIGJ5IGhhbmQuCisgICAg
ICAgICAgICBjbGFzcyBQb3BlbjQocG9wZW4yLlBvcGVuMyk6CisgICAgICAgICAgICAgICAgY2hp
bGRlcnIgPSBOb25lCisKKyAgICAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY21kLCBi
dWZzaXplPS0xKToKKyAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUgPSBvcy5w
aXBlKCkKKyAgICAgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUgPSBvcy5waXBlKCkK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5waWQgPSBvcy5mb3JrKCkKKyAgICAgICAgICAgICAg
ICAgICAgaWYgc2VsZi5waWQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hpbGQK
KyAgICAgICAgICAgICAgICAgICAgICAgIG9zLmR1cDIocDJjcmVhZCwgMCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG9zLmR1cDIoYzJwd3JpdGUsIDEpCisgICAgICAgICAgICAgICAgICAgICAg
ICBvcy5kdXAyKGMycHdyaXRlLCAyKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4g
cmFuZ2UoMywgcG9wZW4yLk1BWEZEKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0OiBwYXNzCisgICAgICAgICAgICAgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZXhlY3ZwKGNtZFswXSwgY21kKQor
ICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcy5fZXhpdCgxKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBTaG91bGRuJ3QgY29t
ZSBoZXJlLCBJIGd1ZXNzCisgICAgICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdCgxKQorICAg
ICAgICAgICAgICAgICAgICBvcy5jbG9zZShwMmNyZWFkKQorICAgICAgICAgICAgICAgICAgICBz
ZWxmLnRvY2hpbGQgPSBvcy5mZG9wZW4ocDJjd3JpdGUsICd3JywgYnVmc2l6ZSkKKyAgICAgICAg
ICAgICAgICAgICAgb3MuY2xvc2UoYzJwd3JpdGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
ZnJvbWNoaWxkID0gb3MuZmRvcGVuKGMycHJlYWQsICdyJywgYnVmc2l6ZSkKKyAgICAgICAgICAg
ICAgICAgICAgcG9wZW4yLl9hY3RpdmUuYXBwZW5kKHNlbGYpCisKKyAgICAgICAgICAgIHBvcGVu
Mi5Qb3BlbjQgPSBQb3BlbjQKKworICAgICAgICBjbGFzcyBQb3BlbjMocG9wZW4yLlBvcGVuMywg
cG9wZW4yLlBvcGVuNCk6CisgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXMgPSAxCisgICAg
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29tbWFuZCwgKiprdyk6CisgICAgICAgICAgICAg
ICAgaWYga3cuZ2V0KCdzdGRlcnInKSA9PSAnU1RET1VUJzoKKyAgICAgICAgICAgICAgICAgICAg
YXBwbHkocG9wZW4yLlBvcGVuNC5fX2luaXRfXywgKHNlbGYsIGNvbW1hbmQsIDEpKQorICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGFwcGx5KHBvcGVuMi5Qb3BlbjMu
X19pbml0X18sIChzZWxmLCBjb21tYW5kLCAxKSkKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGlu
ID0gc2VsZi50b2NoaWxkCisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBzZWxmLmZyb21j
aGlsZAorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyID0gc2VsZi5jaGlsZGVycgorICAgICAg
ICAgICAgZGVmIHdhaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICAgICAgICAgIHJlc3Vs
dGNvZGUgPSBhcHBseShwb3BlbjIuUG9wZW4zLndhaXQsIChzZWxmLCkrYXJncywga3cpCisgICAg
ICAgICAgICAgICAgaWYgb3MuV0lGRVhJVEVEKHJlc3VsdGNvZGUpOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gb3MuV0VYSVRTVEFUVVMocmVzdWx0Y29kZSkKKyAgICAgICAgICAgICAgICBl
bGlmIG9zLldJRlNJR05BTEVEKHJlc3VsdGNvZGUpOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gb3MuV1RFUk1TSUcocmVzdWx0Y29kZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgc3VicHJvY2Vzcy5Qb3BlbiA9IFBvcGVu
MworCisKKworIyBGcm9tIEpvc2lhaCBDYXJsc29uLAorIyBBU1BOIDogUHl0aG9uIENvb2tib29r
IDogTW9kdWxlIHRvIGFsbG93IEFzeW5jaHJvbm91cyBzdWJwcm9jZXNzIHVzZSBvbiBXaW5kb3dz
IGFuZCBQb3NpeCBwbGF0Zm9ybXMKKyMgaHR0cDovL2FzcG4uYWN0aXZlc3RhdGUuY29tL0FTUE4v
Q29va2Jvb2svUHl0aG9uL1JlY2lwZS80NDA1NTQKKworUElQRSA9IHN1YnByb2Nlc3MuUElQRQor
CitpZiBzdWJwcm9jZXNzLm1zd2luZG93czoKKyAgICBmcm9tIHdpbjMyZmlsZSBpbXBvcnQgUmVh
ZEZpbGUsIFdyaXRlRmlsZQorICAgIGZyb20gd2luMzJwaXBlIGltcG9ydCBQZWVrTmFtZWRQaXBl
CisgICAgaW1wb3J0IG1zdmNydAorZWxzZToKKyAgICBpbXBvcnQgc2VsZWN0CisgICAgaW1wb3J0
IGZjbnRsCisKKyAgICB0cnk6ICAgICAgICAgICAgICAgICAgICBmY250bC5GX0dFVEZMCisgICAg
ZXhjZXB0IEF0dHJpYnV0ZUVycm9yOiAgZmNudGwuRl9HRVRGTCA9IDMKKworICAgIHRyeTogICAg
ICAgICAgICAgICAgICAgIGZjbnRsLkZfU0VURkwKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6
ICBmY250bC5GX1NFVEZMID0gNAorCitjbGFzcyBQb3BlbihzdWJwcm9jZXNzLlBvcGVuKToKKyAg
ICBkZWYgcmVjdihzZWxmLCBtYXhzaXplPU5vbmUpOgorICAgICAgICByZXR1cm4gc2VsZi5fcmVj
dignc3Rkb3V0JywgbWF4c2l6ZSkKKworICAgIGRlZiByZWN2X2VycihzZWxmLCBtYXhzaXplPU5v
bmUpOgorICAgICAgICByZXR1cm4gc2VsZi5fcmVjdignc3RkZXJyJywgbWF4c2l6ZSkKKworICAg
IGRlZiBzZW5kX3JlY3Yoc2VsZiwgaW5wdXQ9JycsIG1heHNpemU9Tm9uZSk6CisgICAgICAgIHJl
dHVybiBzZWxmLnNlbmQoaW5wdXQpLCBzZWxmLnJlY3YobWF4c2l6ZSksIHNlbGYucmVjdl9lcnIo
bWF4c2l6ZSkKKworICAgIGRlZiBnZXRfY29ubl9tYXhzaXplKHNlbGYsIHdoaWNoLCBtYXhzaXpl
KToKKyAgICAgICAgaWYgbWF4c2l6ZSBpcyBOb25lOgorICAgICAgICAgICAgbWF4c2l6ZSA9IDEw
MjQKKyAgICAgICAgZWxpZiBtYXhzaXplIDwgMToKKyAgICAgICAgICAgIG1heHNpemUgPSAxCisg
ICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsIHdoaWNoKSwgbWF4c2l6ZQorCisgICAgZGVmIF9j
bG9zZShzZWxmLCB3aGljaCk6CisgICAgICAgIGdldGF0dHIoc2VsZiwgd2hpY2gpLmNsb3NlKCkK
KyAgICAgICAgc2V0YXR0cihzZWxmLCB3aGljaCwgTm9uZSkKKworICAgIGlmIHN1YnByb2Nlc3Mu
bXN3aW5kb3dzOgorICAgICAgICBkZWYgc2VuZChzZWxmLCBpbnB1dCk6CisgICAgICAgICAgICBp
ZiBub3Qgc2VsZi5zdGRpbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgeCA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHNlbGYu
c3RkaW4uZmlsZW5vKCkpCisgICAgICAgICAgICAgICAgKGVyckNvZGUsIHdyaXR0ZW4pID0gV3Jp
dGVGaWxlKHgsIGlucHV0KQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX2Nsb3NlKCdzdGRpbicpCisgICAgICAgICAgICBleGNlcHQg
KHN1YnByb2Nlc3MucHl3aW50eXBlcy5lcnJvciwgRXhjZXB0aW9uKSwgd2h5OgorICAgICAgICAg
ICAgICAgIGlmIHdoeVswXSBpbiAoMTA5LCBlcnJuby5FU0hVVERPV04pOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5fY2xvc2UoJ3N0ZGluJykKKyAgICAgICAgICAgICAgICByYWlz
ZQorCisgICAgICAgICAgICByZXR1cm4gd3JpdHRlbgorCisgICAgICAgIGRlZiBfcmVjdihzZWxm
LCB3aGljaCwgbWF4c2l6ZSk6CisgICAgICAgICAgICBjb25uLCBtYXhzaXplID0gc2VsZi5nZXRf
Y29ubl9tYXhzaXplKHdoaWNoLCBtYXhzaXplKQorICAgICAgICAgICAgaWYgY29ubiBpcyBOb25l
OgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICAgICB4ID0gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoY29ubi5maWxlbm8oKSkKKyAgICAg
ICAgICAgICAgICAocmVhZCwgbkF2YWlsLCBuTWVzc2FnZSkgPSBQZWVrTmFtZWRQaXBlKHgsIDAp
CisgICAgICAgICAgICAgICAgaWYgbWF4c2l6ZSA8IG5BdmFpbDoKKyAgICAgICAgICAgICAgICAg
ICAgbkF2YWlsID0gbWF4c2l6ZQorICAgICAgICAgICAgICAgIGlmIG5BdmFpbCA+IDA6CisgICAg
ICAgICAgICAgICAgICAgIChlcnJDb2RlLCByZWFkKSA9IFJlYWRGaWxlKHgsIG5BdmFpbCwgTm9u
ZSkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVy
biBzZWxmLl9jbG9zZSh3aGljaCkKKyAgICAgICAgICAgIGV4Y2VwdCAoc3VicHJvY2Vzcy5weXdp
bnR5cGVzLmVycm9yLCBFeGNlcHRpb24pLCB3aHk6CisgICAgICAgICAgICAgICAgaWYgd2h5WzBd
IGluICgxMDksIGVycm5vLkVTSFVURE9XTik6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBz
ZWxmLl9jbG9zZSh3aGljaCkKKyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgICAgICAj
aWYgc2VsZi51bml2ZXJzYWxfbmV3bGluZXM6CisgICAgICAgICAgICAjICAgIHJlYWQgPSBzZWxm
Ll90cmFuc2xhdGVfbmV3bGluZXMocmVhZCkKKyAgICAgICAgICAgIHJldHVybiByZWFkCisKKyAg
ICBlbHNlOgorICAgICAgICBkZWYgc2VuZChzZWxmLCBpbnB1dCk6CisgICAgICAgICAgICBpZiBu
b3Qgc2VsZi5zdGRpbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAg
ICBpZiBub3Qgc2VsZWN0LnNlbGVjdChbXSwgW3NlbGYuc3RkaW5dLCBbXSwgMClbMV06CisgICAg
ICAgICAgICAgICAgcmV0dXJuIDAKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg
IHdyaXR0ZW4gPSBvcy53cml0ZShzZWxmLnN0ZGluLmZpbGVubygpLCBpbnB1dCkKKyAgICAgICAg
ICAgIGV4Y2VwdCBPU0Vycm9yLCB3aHk6CisgICAgICAgICAgICAgICAgaWYgd2h5WzBdID09IGVy
cm5vLkVQSVBFOiAjYnJva2VuIHBpcGUKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X2Nsb3NlKCdzdGRpbicpCisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgcmV0
dXJuIHdyaXR0ZW4KKworICAgICAgICBkZWYgX3JlY3Yoc2VsZiwgd2hpY2gsIG1heHNpemUpOgor
ICAgICAgICAgICAgY29ubiwgbWF4c2l6ZSA9IHNlbGYuZ2V0X2Nvbm5fbWF4c2l6ZSh3aGljaCwg
bWF4c2l6ZSkKKyAgICAgICAgICAgIGlmIGNvbm4gaXMgTm9uZToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZmxhZ3MgPSBm
Y250bC5mY250bChjb25uLCBmY250bC5GX0dFVEZMKQorICAgICAgICAgICAgZXhjZXB0IFR5cGVF
cnJvcjoKKyAgICAgICAgICAgICAgICBmbGFncyA9IE5vbmUKKyAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgaWYgbm90IGNvbm4uY2xvc2VkOgorICAgICAgICAgICAgICAgICAgICBm
Y250bC5mY250bChjb25uLCBmY250bC5GX1NFVEZMLCBmbGFnc3wgb3MuT19OT05CTE9DSykKKwor
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxlY3Quc2VsZWN0KFtj
b25uXSwgW10sIFtdLCAwKVswXToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnCisKKyAg
ICAgICAgICAgICAgICByID0gY29ubi5yZWFkKG1heHNpemUpCisgICAgICAgICAgICAgICAgaWYg
bm90IHI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbG9zZSh3aGljaCkKKwor
ICAgICAgICAgICAgICAgICNpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lczoKKyAgICAgICAgICAg
ICAgICAjICAgIHIgPSBzZWxmLl90cmFuc2xhdGVfbmV3bGluZXMocikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBpZiBub3Qg
Y29ubi5jbG9zZWQgYW5kIG5vdCBmbGFncyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBm
Y250bC5mY250bChjb25uLCBmY250bC5GX1NFVEZMLCBmbGFncykKKworZGlzY29ubmVjdF9tZXNz
YWdlID0gIk90aGVyIGVuZCBkaXNjb25uZWN0ZWQhIgorCitkZWYgcmVjdl9zb21lKHAsIHQ9LjEs
IGU9MSwgdHI9NSwgc3RkZXJyPTApOgorICAgIGlmIHRyIDwgMToKKyAgICAgICAgdHIgPSAxCisg
ICAgeCA9IHRpbWUudGltZSgpK3QKKyAgICB5ID0gW10KKyAgICByID0gJycKKyAgICBwciA9IHAu
cmVjdgorICAgIGlmIHN0ZGVycjoKKyAgICAgICAgcHIgPSBwLnJlY3ZfZXJyCisgICAgd2hpbGUg
dGltZS50aW1lKCkgPCB4IG9yIHI6CisgICAgICAgIHIgPSBwcigpCisgICAgICAgIGlmIHIgaXMg
Tm9uZToKKyAgICAgICAgICAgIGlmIGU6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KGRpc2Nvbm5lY3RfbWVzc2FnZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
YnJlYWsKKyAgICAgICAgZWxpZiByOgorICAgICAgICAgICAgeS5hcHBlbmQocikKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHRpbWUuc2xlZXAobWF4KCh4LXRpbWUudGltZSgpKS90ciwgMCkp
CisgICAgcmV0dXJuICcnLmpvaW4oeSkKKworIyBUT0RPKDMuMDogIHJld3JpdGUgdG8gdXNlIG1l
bW9yeXZpZXcoKQorZGVmIHNlbmRfYWxsKHAsIGRhdGEpOgorICAgIHdoaWxlIGxlbihkYXRhKToK
KyAgICAgICAgc2VudCA9IHAuc2VuZChkYXRhKQorICAgICAgICBpZiBzZW50IGlzIE5vbmU6Cisg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oZGlzY29ubmVjdF9tZXNzYWdlKQorICAgICAgICBk
YXRhID0gYnVmZmVyKGRhdGEsIHNlbnQpCisKKworCit0cnk6CisgICAgb2JqZWN0CitleGNlcHQg
TmFtZUVycm9yOgorICAgIGNsYXNzIG9iamVjdDoKKyAgICAgICAgcGFzcworCisKKworY2xhc3Mg
VGVzdENtZChvYmplY3QpOgorICAgICIiIkNsYXNzIFRlc3RDbWQKKyAgICAiIiIKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBkZXNjcmlwdGlvbiA9IE5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgIHByb2dyYW0gPSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnByZXRlciA9
IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgIHdvcmtkaXIgPSBOb25lLAorICAgICAgICAg
ICAgICAgICAgICAgICBzdWJkaXIgPSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICB2ZXJi
b3NlID0gTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBOb25lLAorICAgICAg
ICAgICAgICAgICAgICAgICBkaWZmID0gTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29t
YmluZSA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcyA9IDEp
OgorICAgICAgICBzZWxmLl9jd2QgPSBvcy5nZXRjd2QoKQorICAgICAgICBzZWxmLmRlc2NyaXB0
aW9uX3NldChkZXNjcmlwdGlvbikKKyAgICAgICAgc2VsZi5wcm9ncmFtX3NldChwcm9ncmFtKQor
ICAgICAgICBzZWxmLmludGVycHJldGVyX3NldChpbnRlcnByZXRlcikKKyAgICAgICAgaWYgdmVy
Ym9zZSBpcyBOb25lOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHZlcmJvc2Ug
PSBtYXgoIDAsIGludChvcy5lbnZpcm9uLmdldCgnVEVTVENNRF9WRVJCT1NFJywgMCkpICkKKyAg
ICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHZlcmJvc2UgPSAw
CisgICAgICAgIHNlbGYudmVyYm9zZV9zZXQodmVyYm9zZSkKKyAgICAgICAgc2VsZi5jb21iaW5l
ID0gY29tYmluZQorICAgICAgICBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyA9IHVuaXZlcnNhbF9u
ZXdsaW5lcworICAgICAgICBpZiBub3QgbWF0Y2ggaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYu
bWF0Y2hfZnVuY3Rpb24gPSBtYXRjaAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5t
YXRjaF9mdW5jdGlvbiA9IG1hdGNoX3JlCisgICAgICAgIGlmIG5vdCBkaWZmIGlzIE5vbmU6Cisg
ICAgICAgICAgICBzZWxmLmRpZmZfZnVuY3Rpb24gPSBkaWZmCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGlmZmxpYgorICAgICAgICAgICAgZXhjZXB0
IE5hbWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIHNlbGYuZGlmZl9mdW5jdGlvbiA9IHNpbXBsZV9kaWZmCisgICAgICAgICAg
ICAgICAgI3NlbGYuZGlmZl9mdW5jdGlvbiA9IGRpZmZsaWIuY29udGV4dF9kaWZmCisgICAgICAg
ICAgICAgICAgI3NlbGYuZGlmZl9mdW5jdGlvbiA9IGRpZmZsaWIudW5pZmllZF9kaWZmCisgICAg
ICAgIHNlbGYuX2Rpcmxpc3QgPSBbXQorICAgICAgICBzZWxmLl9wcmVzZXJ2ZSA9IHsncGFzc190
ZXN0JzogMCwgJ2ZhaWxfdGVzdCc6IDAsICdub19yZXN1bHQnOiAwfQorICAgICAgICBpZiBvcy5l
bnZpcm9uLmhhc19rZXkoJ1BSRVNFUlZFJykgYW5kIG5vdCBvcy5lbnZpcm9uWydQUkVTRVJWRSdd
IGlzICcnOgorICAgICAgICAgICAgc2VsZi5fcHJlc2VydmVbJ3Bhc3NfdGVzdCddID0gb3MuZW52
aXJvblsnUFJFU0VSVkUnXQorICAgICAgICAgICAgc2VsZi5fcHJlc2VydmVbJ2ZhaWxfdGVzdCdd
ID0gb3MuZW52aXJvblsnUFJFU0VSVkUnXQorICAgICAgICAgICAgc2VsZi5fcHJlc2VydmVbJ25v
X3Jlc3VsdCddID0gb3MuZW52aXJvblsnUFJFU0VSVkUnXQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX3ByZXNlcnZlWydwYXNzX3Rlc3QnXSA9
IG9zLmVudmlyb25bJ1BSRVNFUlZFX1BBU1MnXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9y
OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg
ICBzZWxmLl9wcmVzZXJ2ZVsnZmFpbF90ZXN0J10gPSBvcy5lbnZpcm9uWydQUkVTRVJWRV9GQUlM
J10KKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisg
ICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJlc2VydmVbJ25vX3Jlc3Vs
dCddID0gb3MuZW52aXJvblsnUFJFU0VSVkVfTk9fUkVTVUxUJ10KKyAgICAgICAgICAgIGV4Y2Vw
dCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuX3N0ZG91dCA9
IFtdCisgICAgICAgIHNlbGYuX3N0ZGVyciA9IFtdCisgICAgICAgIHNlbGYuc3RhdHVzID0gTm9u
ZQorICAgICAgICBzZWxmLmNvbmRpdGlvbiA9ICdub19yZXN1bHQnCisgICAgICAgIHNlbGYud29y
a2Rpcl9zZXQod29ya2RpcikKKyAgICAgICAgc2VsZi5zdWJkaXIoc3ViZGlyKQorCisgICAgZGVm
IF9fZGVsX18oc2VsZik6CisgICAgICAgIHNlbGYuY2xlYW51cCgpCisKKyAgICBkZWYgX19yZXBy
X18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXgiICUgaWQoc2VsZikKKworICAgIGJhbm5lcl9j
aGFyID0gJz0nCisgICAgYmFubmVyX3dpZHRoID0gODAKKworICAgIGRlZiBiYW5uZXIoc2VsZiwg
cywgd2lkdGg9Tm9uZSk6CisgICAgICAgIGlmIHdpZHRoIGlzIE5vbmU6CisgICAgICAgICAgICB3
aWR0aCA9IHNlbGYuYmFubmVyX3dpZHRoCisgICAgICAgIHJldHVybiBzICsgc2VsZi5iYW5uZXJf
Y2hhciAqICh3aWR0aCAtIGxlbihzKSkKKworICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKwor
ICAgICAgICBkZWYgZXNjYXBlKHNlbGYsIGFyZyk6CisgICAgICAgICAgICAiZXNjYXBlIHNoZWxs
IHNwZWNpYWwgY2hhcmFjdGVycyIKKyAgICAgICAgICAgIHNsYXNoID0gJ1xcJworICAgICAgICAg
ICAgc3BlY2lhbCA9ICciJCcKKworICAgICAgICAgICAgYXJnID0gc3RyaW5nLnJlcGxhY2UoYXJn
LCBzbGFzaCwgc2xhc2grc2xhc2gpCisgICAgICAgICAgICBmb3IgYyBpbiBzcGVjaWFsOgorICAg
ICAgICAgICAgICAgIGFyZyA9IHN0cmluZy5yZXBsYWNlKGFyZywgYywgc2xhc2grYykKKworICAg
ICAgICAgICAgaWYgcmVfc3BhY2Uuc2VhcmNoKGFyZyk6CisgICAgICAgICAgICAgICAgYXJnID0g
JyInICsgYXJnICsgJyInCisgICAgICAgICAgICByZXR1cm4gYXJnCisKKyAgICBlbHNlOgorCisg
ICAgICAgICMgV2luZG93cyBkb2VzIG5vdCBhbGxvdyBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gZmls
ZSBuYW1lcworICAgICAgICAjIGFueXdheSwgc28gbm8gbmVlZCBmb3IgYW4gZXNjYXBlIGZ1bmN0
aW9uLCB3ZSB3aWxsIGp1c3QgcXVvdGUKKyAgICAgICAgIyB0aGUgYXJnLgorICAgICAgICBkZWYg
ZXNjYXBlKHNlbGYsIGFyZyk6CisgICAgICAgICAgICBpZiByZV9zcGFjZS5zZWFyY2goYXJnKToK
KyAgICAgICAgICAgICAgICBhcmcgPSAnIicgKyBhcmcgKyAnIicKKyAgICAgICAgICAgIHJldHVy
biBhcmcKKworICAgIGRlZiBjYW5vbmljYWxpemUoc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIGlz
X0xpc3QocGF0aCk6CisgICAgICAgICAgICBwYXRoID0gYXBwbHkob3MucGF0aC5qb2luLCB0dXBs
ZShwYXRoKSkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNhYnMocGF0aCk6CisgICAgICAgICAg
ICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYud29ya2RpciwgcGF0aCkKKyAgICAgICAgcmV0dXJu
IHBhdGgKKworICAgIGRlZiBjaG1vZChzZWxmLCBwYXRoLCBtb2RlKToKKyAgICAgICAgIiIiQ2hh
bmdlcyBwZXJtaXNzaW9ucyBvbiB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgZGlyZWN0b3J5CisgICAg
ICAgIHBhdGggbmFtZS4iIiIKKyAgICAgICAgcGF0aCA9IHNlbGYuY2Fub25pY2FsaXplKHBhdGgp
CisgICAgICAgIG9zLmNobW9kKHBhdGgsIG1vZGUpCisKKyAgICBkZWYgY2xlYW51cChzZWxmLCBj
b25kaXRpb24gPSBOb25lKToKKyAgICAgICAgIiIiUmVtb3ZlcyBhbnkgdGVtcG9yYXJ5IHdvcmtp
bmcgZGlyZWN0b3JpZXMgZm9yIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgVGVzdENtZCBlbnZpcm9u
bWVudC4gIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQUkVTRVJWRSB3YXMKKyAgICAgICAg
c2V0IHdoZW4gdGhlIFRlc3RDbWQgZW52aXJvbm1lbnQgd2FzIGNyZWF0ZWQsIHRlbXBvcmFyeSB3
b3JraW5nCisgICAgICAgIGRpcmVjdG9yaWVzIGFyZSBub3QgcmVtb3ZlZC4gIElmIGFueSBvZiB0
aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgICAgICAgIFBSRVNFUlZFX1BBU1MsIFBSRVNFUlZF
X0ZBSUwsIG9yIFBSRVNFUlZFX05PX1JFU1VMVCB3ZXJlIHNldAorICAgICAgICB3aGVuIHRoZSBU
ZXN0Q21kIGVudmlyb25tZW50IHdhcyBjcmVhdGVkLCB0aGVuIHRlbXBvcmFyeSB3b3JraW5nCisg
ICAgICAgIGRpcmVjdG9yaWVzIGFyZSBub3QgcmVtb3ZlZCBpZiB0aGUgdGVzdCBwYXNzZWQsIGZh
aWxlZCwgb3IgaGFkCisgICAgICAgIG5vIHJlc3VsdCwgcmVzcGVjdGl2ZWx5LiAgVGVtcG9yYXJ5
IHdvcmtpbmcgZGlyZWN0b3JpZXMgYXJlIGFsc28KKyAgICAgICAgcHJlc2VydmVkIGZvciBjb25k
aXRpb25zIHNwZWNpZmllZCB2aWEgdGhlIHByZXNlcnZlIG1ldGhvZC4KKworICAgICAgICBUeXBp
Y2FsbHksIHRoaXMgbWV0aG9kIGlzIG5vdCBjYWxsZWQgZGlyZWN0bHksIGJ1dCBpcyB1c2VkIHdo
ZW4KKyAgICAgICAgdGhlIHNjcmlwdCBleGl0cyB0byBjbGVhbiB1cCB0ZW1wb3Jhcnkgd29ya2lu
ZyBkaXJlY3RvcmllcyBhcworICAgICAgICBhcHByb3ByaWF0ZSBmb3IgdGhlIGV4aXQgc3RhdHVz
LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IHNlbGYuX2Rpcmxpc3Q6CisgICAgICAgICAg
ICByZXR1cm4KKyAgICAgICAgb3MuY2hkaXIoc2VsZi5fY3dkKQorICAgICAgICBzZWxmLndvcmtk
aXIgPSBOb25lCisgICAgICAgIGlmIGNvbmRpdGlvbiBpcyBOb25lOgorICAgICAgICAgICAgY29u
ZGl0aW9uID0gc2VsZi5jb25kaXRpb24KKyAgICAgICAgaWYgc2VsZi5fcHJlc2VydmVbY29uZGl0
aW9uXToKKyAgICAgICAgICAgIGZvciBkaXIgaW4gc2VsZi5fZGlybGlzdDoKKyAgICAgICAgICAg
ICAgICBwcmludCAiUHJlc2VydmVkIGRpcmVjdG9yeSIsIGRpcgorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgbGlzdCA9IHNlbGYuX2Rpcmxpc3RbOl0KKyAgICAgICAgICAgIGxpc3QucmV2ZXJz
ZSgpCisgICAgICAgICAgICBmb3IgZGlyIGluIGxpc3Q6CisgICAgICAgICAgICAgICAgc2VsZi53
cml0YWJsZShkaXIsIDEpCisgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkaXIsIGlnbm9y
ZV9lcnJvcnMgPSAxKQorICAgICAgICAgICAgc2VsZi5fZGlybGlzdCA9IFtdCisKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgZ2xvYmFsIF9DbGVhbnVwCisgICAgICAgICAgICBfQ2xlYW51cC5y
ZW1vdmUoc2VsZikKKyAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6
CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgY29tbWFuZF9hcmdzKHNlbGYsIHByb2dyYW0g
PSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXIgPSBOb25lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzID0gTm9uZSk6CisgICAgICAgIGlm
IHByb2dyYW06CisgICAgICAgICAgICBpZiB0eXBlKHByb2dyYW0pID09IHR5cGUoJycpIGFuZCBu
b3Qgb3MucGF0aC5pc2Ficyhwcm9ncmFtKToKKyAgICAgICAgICAgICAgICBwcm9ncmFtID0gb3Mu
cGF0aC5qb2luKHNlbGYuX2N3ZCwgcHJvZ3JhbSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHByb2dyYW0gPSBzZWxmLnByb2dyYW0KKyAgICAgICAgICAgIGlmIG5vdCBpbnRlcnByZXRlcjoK
KyAgICAgICAgICAgICAgICBpbnRlcnByZXRlciA9IHNlbGYuaW50ZXJwcmV0ZXIKKyAgICAgICAg
aWYgbm90IHR5cGUocHJvZ3JhbSkgaW4gW3R5cGUoW10pLCB0eXBlKCgpKV06CisgICAgICAgICAg
ICBwcm9ncmFtID0gW3Byb2dyYW1dCisgICAgICAgIGNtZCA9IGxpc3QocHJvZ3JhbSkKKyAgICAg
ICAgaWYgaW50ZXJwcmV0ZXI6CisgICAgICAgICAgICBpZiBub3QgdHlwZShpbnRlcnByZXRlcikg
aW4gW3R5cGUoW10pLCB0eXBlKCgpKV06CisgICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXIgPSBb
aW50ZXJwcmV0ZXJdCisgICAgICAgICAgICBjbWQgPSBsaXN0KGludGVycHJldGVyKSArIGNtZAor
ICAgICAgICBpZiBhcmd1bWVudHM6CisgICAgICAgICAgICBpZiB0eXBlKGFyZ3VtZW50cykgPT0g
dHlwZSgnJyk6CisgICAgICAgICAgICAgICAgYXJndW1lbnRzID0gc3RyaW5nLnNwbGl0KGFyZ3Vt
ZW50cykKKyAgICAgICAgICAgIGNtZC5leHRlbmQoYXJndW1lbnRzKQorICAgICAgICByZXR1cm4g
Y21kCisKKyAgICBkZWYgZGVzY3JpcHRpb25fc2V0KHNlbGYsIGRlc2NyaXB0aW9uKToKKyAgICAg
ICAgIiIiU2V0IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZnVuY3Rpb25hbGl0eSBiZWluZyB0ZXN0
ZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24K
KworICAgIHRyeToKKyAgICAgICAgZGlmZmxpYgorICAgIGV4Y2VwdCBOYW1lRXJyb3I6CisgICAg
ICAgIGRlZiBkaWZmKHNlbGYsIGEsIGIsIG5hbWUsICphcmdzLCAqKmt3KToKKyAgICAgICAgICAg
IHByaW50IHNlbGYuYmFubmVyKCdFeHBlY3RlZCAlcycgJSBuYW1lKQorICAgICAgICAgICAgcHJp
bnQgYQorICAgICAgICAgICAgcHJpbnQgc2VsZi5iYW5uZXIoJ0FjdHVhbCAlcycgJSBuYW1lKQor
ICAgICAgICAgICAgcHJpbnQgYgorICAgIGVsc2U6CisgICAgICAgIGRlZiBkaWZmKHNlbGYsIGEs
IGIsIG5hbWUsICphcmdzLCAqKmt3KToKKyAgICAgICAgICAgIHByaW50IHNlbGYuYmFubmVyKG5h
bWUpCisgICAgICAgICAgICBhcmdzID0gKGEuc3BsaXRsaW5lcygpLCBiLnNwbGl0bGluZXMoKSkg
KyBhcmdzCisgICAgICAgICAgICBsaW5lcyA9IGFwcGx5KHNlbGYuZGlmZl9mdW5jdGlvbiwgYXJn
cywga3cpCisgICAgICAgICAgICBmb3IgbCBpbiBsaW5lczoKKyAgICAgICAgICAgICAgICBwcmlu
dCBsCisKKyAgICBkZWYgZmFpbF90ZXN0KHNlbGYsIGNvbmRpdGlvbiA9IDEsIGZ1bmN0aW9uID0g
Tm9uZSwgc2tpcCA9IDApOgorICAgICAgICAiIiJDYXVzZSB0aGUgdGVzdCB0byBmYWlsLgorICAg
ICAgICAiIiIKKyAgICAgICAgaWYgbm90IGNvbmRpdGlvbjoKKyAgICAgICAgICAgIHJldHVybgor
ICAgICAgICBzZWxmLmNvbmRpdGlvbiA9ICdmYWlsX3Rlc3QnCisgICAgICAgIGZhaWxfdGVzdChz
ZWxmID0gc2VsZiwKKyAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbiwKKyAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICBz
a2lwID0gc2tpcCkKKworICAgIGRlZiBpbnRlcnByZXRlcl9zZXQoc2VsZiwgaW50ZXJwcmV0ZXIp
OgorICAgICAgICAiIiJTZXQgdGhlIHByb2dyYW0gdG8gYmUgdXNlZCB0byBpbnRlcnByZXQgdGhl
IHByb2dyYW0KKyAgICAgICAgdW5kZXIgdGVzdCBhcyBhIHNjcmlwdC4KKyAgICAgICAgIiIiCisg
ICAgICAgIHNlbGYuaW50ZXJwcmV0ZXIgPSBpbnRlcnByZXRlcgorCisgICAgZGVmIG1hdGNoKHNl
bGYsIGxpbmVzLCBtYXRjaGVzKToKKyAgICAgICAgIiIiQ29tcGFyZSBhY3R1YWwgYW5kIGV4cGVj
dGVkIGZpbGUgY29udGVudHMuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5tYXRj
aF9mdW5jdGlvbihsaW5lcywgbWF0Y2hlcykKKworICAgIGRlZiBtYXRjaF9leGFjdChzZWxmLCBs
aW5lcywgbWF0Y2hlcyk6CisgICAgICAgICIiIkNvbXBhcmUgYWN0dWFsIGFuZCBleHBlY3RlZCBm
aWxlIGNvbnRlbnRzLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIG1hdGNoX2V4YWN0KGxp
bmVzLCBtYXRjaGVzKQorCisgICAgZGVmIG1hdGNoX3JlKHNlbGYsIGxpbmVzLCByZXMpOgorICAg
ICAgICAiIiJDb21wYXJlIGFjdHVhbCBhbmQgZXhwZWN0ZWQgZmlsZSBjb250ZW50cy4KKyAgICAg
ICAgIiIiCisgICAgICAgIHJldHVybiBtYXRjaF9yZShsaW5lcywgcmVzKQorCisgICAgZGVmIG1h
dGNoX3JlX2RvdGFsbChzZWxmLCBsaW5lcywgcmVzKToKKyAgICAgICAgIiIiQ29tcGFyZSBhY3R1
YWwgYW5kIGV4cGVjdGVkIGZpbGUgY29udGVudHMuCisgICAgICAgICIiIgorICAgICAgICByZXR1
cm4gbWF0Y2hfcmVfZG90YWxsKGxpbmVzLCByZXMpCisKKyAgICBkZWYgbm9fcmVzdWx0KHNlbGYs
IGNvbmRpdGlvbiA9IDEsIGZ1bmN0aW9uID0gTm9uZSwgc2tpcCA9IDApOgorICAgICAgICAiIiJS
ZXBvcnQgdGhhdCB0aGUgdGVzdCBjb3VsZCBub3QgYmUgcnVuLgorICAgICAgICAiIiIKKyAgICAg
ICAgaWYgbm90IGNvbmRpdGlvbjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmNv
bmRpdGlvbiA9ICdub19yZXN1bHQnCisgICAgICAgIG5vX3Jlc3VsdChzZWxmID0gc2VsZiwKKyAg
ICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbiwKKyAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uID0gZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICBza2lwID0gc2tpcCkKKwor
ICAgIGRlZiBwYXNzX3Rlc3Qoc2VsZiwgY29uZGl0aW9uID0gMSwgZnVuY3Rpb24gPSBOb25lKToK
KyAgICAgICAgIiIiQ2F1c2UgdGhlIHRlc3QgdG8gcGFzcy4KKyAgICAgICAgIiIiCisgICAgICAg
IGlmIG5vdCBjb25kaXRpb246CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5jb25k
aXRpb24gPSAncGFzc190ZXN0JworICAgICAgICBwYXNzX3Rlc3Qoc2VsZiA9IHNlbGYsIGNvbmRp
dGlvbiA9IGNvbmRpdGlvbiwgZnVuY3Rpb24gPSBmdW5jdGlvbikKKworICAgIGRlZiBwcmVzZXJ2
ZShzZWxmLCAqY29uZGl0aW9ucyk6CisgICAgICAgICIiIkFycmFuZ2UgZm9yIHRoZSB0ZW1wb3Jh
cnkgd29ya2luZyBkaXJlY3RvcmllcyBmb3IgdGhlCisgICAgICAgIHNwZWNpZmllZCBUZXN0Q21k
IGVudmlyb25tZW50IHRvIGJlIHByZXNlcnZlZCBmb3Igb25lIG9yIG1vcmUKKyAgICAgICAgY29u
ZGl0aW9ucy4gIElmIG5vIGNvbmRpdGlvbnMgYXJlIHNwZWNpZmllZCwgYXJyYW5nZXMgZm9yCisg
ICAgICAgIHRoZSB0ZW1wb3Jhcnkgd29ya2luZyBkaXJlY3RvcmllcyB0byBiZSBwcmVzZXJ2ZWQg
Zm9yIGFsbAorICAgICAgICBjb25kaXRpb25zLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgY29u
ZGl0aW9ucyBpcyAoKToKKyAgICAgICAgICAgIGNvbmRpdGlvbnMgPSAoJ3Bhc3NfdGVzdCcsICdm
YWlsX3Rlc3QnLCAnbm9fcmVzdWx0JykKKyAgICAgICAgZm9yIGNvbmQgaW4gY29uZGl0aW9uczoK
KyAgICAgICAgICAgIHNlbGYuX3ByZXNlcnZlW2NvbmRdID0gMQorCisgICAgZGVmIHByb2dyYW1f
c2V0KHNlbGYsIHByb2dyYW0pOgorICAgICAgICAiIiJTZXQgdGhlIGV4ZWN1dGFibGUgcHJvZ3Jh
bSBvciBzY3JpcHQgdG8gYmUgdGVzdGVkLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgcHJvZ3Jh
bSBhbmQgbm90IG9zLnBhdGguaXNhYnMocHJvZ3JhbSk6CisgICAgICAgICAgICBwcm9ncmFtID0g
b3MucGF0aC5qb2luKHNlbGYuX2N3ZCwgcHJvZ3JhbSkKKyAgICAgICAgc2VsZi5wcm9ncmFtID0g
cHJvZ3JhbQorCisgICAgZGVmIHJlYWQoc2VsZiwgZmlsZSwgbW9kZSA9ICdyYicpOgorICAgICAg
ICAiIiJSZWFkcyBhbmQgcmV0dXJucyB0aGUgY29udGVudHMgb2YgdGhlIHNwZWNpZmllZCBmaWxl
IG5hbWUuCisgICAgICAgIFRoZSBmaWxlIG5hbWUgbWF5IGJlIGEgbGlzdCwgaW4gd2hpY2ggY2Fz
ZSB0aGUgZWxlbWVudHMgYXJlCisgICAgICAgIGNvbmNhdGVuYXRlZCB3aXRoIHRoZSBvcy5wYXRo
LmpvaW4oKSBtZXRob2QuICBUaGUgZmlsZSBpcworICAgICAgICBhc3N1bWVkIHRvIGJlIHVuZGVy
IHRoZSB0ZW1wb3Jhcnkgd29ya2luZyBkaXJlY3RvcnkgdW5sZXNzIGl0CisgICAgICAgIGlzIGFu
IGFic29sdXRlIHBhdGggbmFtZS4gIFRoZSBJL08gbW9kZSBmb3IgdGhlIGZpbGUgbWF5CisgICAg
ICAgIGJlIHNwZWNpZmllZDsgaXQgbXVzdCBiZWdpbiB3aXRoIGFuICdyJy4gIFRoZSBkZWZhdWx0
IGlzCisgICAgICAgICdyYicgKGJpbmFyeSByZWFkKS4KKyAgICAgICAgIiIiCisgICAgICAgIGZp
bGUgPSBzZWxmLmNhbm9uaWNhbGl6ZShmaWxlKQorICAgICAgICBpZiBtb2RlWzBdICE9ICdyJzoK
KyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IsICJtb2RlIG11c3QgYmVnaW4gd2l0aCAncici
CisgICAgICAgIHJldHVybiBvcGVuKGZpbGUsIG1vZGUpLnJlYWQoKQorCisgICAgZGVmIHJtZGly
KHNlbGYsIGRpcik6CisgICAgICAgICIiIlJlbW92ZXMgdGhlIHNwZWNpZmllZCBkaXIgbmFtZS4K
KyAgICAgICAgVGhlIGRpciBuYW1lIG1heSBiZSBhIGxpc3QsIGluIHdoaWNoIGNhc2UgdGhlIGVs
ZW1lbnRzIGFyZQorICAgICAgICBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgb3MucGF0aC5qb2luKCkg
bWV0aG9kLiAgVGhlIGRpciBpcworICAgICAgICBhc3N1bWVkIHRvIGJlIHVuZGVyIHRoZSB0ZW1w
b3Jhcnkgd29ya2luZyBkaXJlY3RvcnkgdW5sZXNzIGl0CisgICAgICAgIGlzIGFuIGFic29sdXRl
IHBhdGggbmFtZS4KKyAgICAgICAgVGhlIGRpciBtdXN0IGJlIGVtcHR5LgorICAgICAgICAiIiIK
KyAgICAgICAgZGlyID0gc2VsZi5jYW5vbmljYWxpemUoZGlyKQorICAgICAgICBvcy5ybWRpcihk
aXIpCisKKyAgICBkZWYgc3RhcnQoc2VsZiwgcHJvZ3JhbSA9IE5vbmUsCisgICAgICAgICAgICAg
ICAgICAgIGludGVycHJldGVyID0gTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRz
ID0gTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzID0gTm9uZSwK
KyAgICAgICAgICAgICAgICAgICAgKiprdyk6CisgICAgICAgICIiIgorICAgICAgICBTdGFydHMg
YSBwcm9ncmFtIG9yIHNjcmlwdCBmb3IgdGhlIHRlc3QgZW52aXJvbm1lbnQuCisKKyAgICAgICAg
VGhlIHNwZWNpZmllZCBwcm9ncmFtIHdpbGwgaGF2ZSB0aGUgb3JpZ2luYWwgZGlyZWN0b3J5Cisg
ICAgICAgIHByZXBlbmRlZCB1bmxlc3MgaXQgaXMgZW5jbG9zZWQgaW4gYSBbbGlzdF0uCisgICAg
ICAgICIiIgorICAgICAgICBjbWQgPSBzZWxmLmNvbW1hbmRfYXJncyhwcm9ncmFtLCBpbnRlcnBy
ZXRlciwgYXJndW1lbnRzKQorICAgICAgICBjbWRfc3RyaW5nID0gc3RyaW5nLmpvaW4obWFwKHNl
bGYuZXNjYXBlLCBjbWQpLCAnICcpCisgICAgICAgIGlmIHNlbGYudmVyYm9zZToKKyAgICAgICAg
ICAgIHN5cy5zdGRlcnIud3JpdGUoY21kX3N0cmluZyArICJcbiIpCisgICAgICAgIGlmIHVuaXZl
cnNhbF9uZXdsaW5lcyBpcyBOb25lOgorICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzID0g
c2VsZi51bml2ZXJzYWxfbmV3bGluZXMKKworICAgICAgICAjIE9uIFdpbmRvd3MsIGlmIHdlIG1h
a2Ugc3RkaW4gYSBwaXBlIHdoZW4gd2UgcGxhbiB0byBzZW5kIAorICAgICAgICAjIG5vIGlucHV0
LCBhbmQgdGhlIHRlc3QgcHJvZ3JhbSBleGl0cyBiZWZvcmUKKyAgICAgICAgIyBQb3BlbiBjYWxs
cyBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUsIHRoYXQgY2FsbCB3aWxsIGZhaWwuCisgICAgICAgICMg
U28gZG9uJ3QgdXNlIGEgcGlwZSBmb3Igc3RkaW4gaWYgd2UgZG9uJ3QgbmVlZCBvbmUuCisgICAg
ICAgIHN0ZGluID0ga3cuZ2V0KCdzdGRpbicsIE5vbmUpCisgICAgICAgIGlmIHN0ZGluIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgc3RkaW4gPSBzdWJwcm9jZXNzLlBJUEUKKworICAgICAgICBj
b21iaW5lID0ga3cuZ2V0KCdjb21iaW5lJywgc2VsZi5jb21iaW5lKQorICAgICAgICBpZiBjb21i
aW5lOgorICAgICAgICAgICAgc3RkZXJyX3ZhbHVlID0gc3VicHJvY2Vzcy5TVERPVVQKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHN0ZGVycl92YWx1ZSA9IHN1YnByb2Nlc3MuUElQRQorCisg
ICAgICAgIHJldHVybiBQb3BlbihjbWQsCisgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdGRp
biwKKyAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAg
ICAgICAgICAgICAgICBzdGRlcnI9c3RkZXJyX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAg
dW5pdmVyc2FsX25ld2xpbmVzPXVuaXZlcnNhbF9uZXdsaW5lcykKKworICAgIGRlZiBmaW5pc2go
c2VsZiwgcG9wZW4sICoqa3cpOgorICAgICAgICAiIiIKKyAgICAgICAgRmluaXNoZXMgYW5kIHdh
aXRzIGZvciB0aGUgcHJvY2VzcyBiZWluZyBydW4gdW5kZXIgY29udHJvbCBvZgorICAgICAgICB0
aGUgc3BlY2lmaWVkIHBvcGVuIGFyZ3VtZW50LCByZWNvcmRpbmcgdGhlIGV4aXQgc3RhdHVzLAor
ICAgICAgICBzdGFuZGFyZCBvdXRwdXQgYW5kIGVycm9yIG91dHB1dC4KKyAgICAgICAgIiIiCisg
ICAgICAgIHBvcGVuLnN0ZGluLmNsb3NlKCkKKyAgICAgICAgc2VsZi5zdGF0dXMgPSBwb3Blbi53
YWl0KCkKKyAgICAgICAgaWYgbm90IHNlbGYuc3RhdHVzOgorICAgICAgICAgICAgc2VsZi5zdGF0
dXMgPSAwCisgICAgICAgIHNlbGYuX3N0ZG91dC5hcHBlbmQocG9wZW4uc3Rkb3V0LnJlYWQoKSkK
KyAgICAgICAgaWYgcG9wZW4uc3RkZXJyOgorICAgICAgICAgICAgc3RkZXJyID0gcG9wZW4uc3Rk
ZXJyLnJlYWQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3RkZXJyID0gJycKKyAgICAg
ICAgc2VsZi5fc3RkZXJyLmFwcGVuZChzdGRlcnIpCisKKyAgICBkZWYgcnVuKHNlbGYsIHByb2dy
YW0gPSBOb25lLAorICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXIgPSBOb25lLAorICAgICAg
ICAgICAgICAgICAgYXJndW1lbnRzID0gTm9uZSwKKyAgICAgICAgICAgICAgICAgIGNoZGlyID0g
Tm9uZSwKKyAgICAgICAgICAgICAgICAgIHN0ZGluID0gTm9uZSwKKyAgICAgICAgICAgICAgICAg
IHVuaXZlcnNhbF9uZXdsaW5lcyA9IE5vbmUpOgorICAgICAgICAiIiJSdW5zIGEgdGVzdCBvZiB0
aGUgcHJvZ3JhbSBvciBzY3JpcHQgZm9yIHRoZSB0ZXN0CisgICAgICAgIGVudmlyb25tZW50LiAg
U3RhbmRhcmQgb3V0cHV0IGFuZCBlcnJvciBvdXRwdXQgYXJlIHNhdmVkIGZvcgorICAgICAgICBm
dXR1cmUgcmV0cmlldmFsIHZpYSB0aGUgc3Rkb3V0KCkgYW5kIHN0ZGVycigpIG1ldGhvZHMuCisK
KyAgICAgICAgVGhlIHNwZWNpZmllZCBwcm9ncmFtIHdpbGwgaGF2ZSB0aGUgb3JpZ2luYWwgZGly
ZWN0b3J5CisgICAgICAgIHByZXBlbmRlZCB1bmxlc3MgaXQgaXMgZW5jbG9zZWQgaW4gYSBbbGlz
dF0uCisgICAgICAgICIiIgorICAgICAgICBpZiBjaGRpcjoKKyAgICAgICAgICAgIG9sZGN3ZCA9
IG9zLmdldGN3ZCgpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2FicyhjaGRpcik6Cisg
ICAgICAgICAgICAgICAgY2hkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3JrcGF0aChjaGRpcikp
CisgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVy
ci53cml0ZSgiY2hkaXIoIiArIGNoZGlyICsgIilcbiIpCisgICAgICAgICAgICBvcy5jaGRpcihj
aGRpcikKKyAgICAgICAgcCA9IHNlbGYuc3RhcnQocHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJwcmV0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzLAorICAgICAgICAgICAgICAg
ICAgICAgICBzdGRpbj1zdGRpbikKKyAgICAgICAgaWYgc3RkaW46CisgICAgICAgICAgICBpZiBp
c19MaXN0KHN0ZGluKToKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzdGRpbjoKKyAgICAg
ICAgICAgICAgICAgICAgcC5zdGRpbi53cml0ZShsaW5lKQorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBwLnN0ZGluLndyaXRlKHN0ZGluKQorICAgICAgICAgICAgcC5zdGRpbi5j
bG9zZSgpCisKKyAgICAgICAgb3V0ID0gcC5zdGRvdXQucmVhZCgpCisgICAgICAgIGlmIHAuc3Rk
ZXJyIGlzIE5vbmU6CisgICAgICAgICAgICBlcnIgPSAnJworICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgZXJyID0gcC5zdGRlcnIucmVhZCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNs
b3NlX291dHB1dCA9IHAuY2xvc2Vfb3V0cHV0CisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJv
cjoKKyAgICAgICAgICAgIHAuc3Rkb3V0LmNsb3NlKCkKKyAgICAgICAgICAgIGlmIG5vdCBwLnN0
ZGVyciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHAuc3RkZXJyLmNsb3NlKCkKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGNsb3NlX291dHB1dCgpCisKKyAgICAgICAgc2VsZi5fc3Rkb3V0
LmFwcGVuZChvdXQpCisgICAgICAgIHNlbGYuX3N0ZGVyci5hcHBlbmQoZXJyKQorCisgICAgICAg
IHNlbGYuc3RhdHVzID0gcC53YWl0KCkKKyAgICAgICAgaWYgbm90IHNlbGYuc3RhdHVzOgorICAg
ICAgICAgICAgc2VsZi5zdGF0dXMgPSAwCisKKyAgICAgICAgaWYgY2hkaXI6CisgICAgICAgICAg
ICBvcy5jaGRpcihvbGRjd2QpCisgICAgICAgIGlmIHNlbGYudmVyYm9zZSA+PSAyOgorICAgICAg
ICAgICAgd3JpdGUgPSBzeXMuc3Rkb3V0LndyaXRlCisgICAgICAgICAgICB3cml0ZSgnPT09PT09
PT09PT09IFNUQVRVUzogJWRcbicgJSBzZWxmLnN0YXR1cykKKyAgICAgICAgICAgIG91dCA9IHNl
bGYuc3Rkb3V0KCkKKyAgICAgICAgICAgIGlmIG91dCBvciBzZWxmLnZlcmJvc2UgPj0gMzoKKyAg
ICAgICAgICAgICAgICB3cml0ZSgnPT09PT09PT09PT09IEJFR0lOIFNURE9VVCAobGVuPSVkKTpc
bicgJSBsZW4ob3V0KSkKKyAgICAgICAgICAgICAgICB3cml0ZShvdXQpCisgICAgICAgICAgICAg
ICAgd3JpdGUoJz09PT09PT09PT09PSBFTkQgU1RET1VUXG4nKQorICAgICAgICAgICAgZXJyID0g
c2VsZi5zdGRlcnIoKQorICAgICAgICAgICAgaWYgZXJyIG9yIHNlbGYudmVyYm9zZSA+PSAzOgor
ICAgICAgICAgICAgICAgIHdyaXRlKCc9PT09PT09PT09PT0gQkVHSU4gU1RERVJSIChsZW49JWQp
XG4nICUgbGVuKGVycikpCisgICAgICAgICAgICAgICAgd3JpdGUoZXJyKQorICAgICAgICAgICAg
ICAgIHdyaXRlKCc9PT09PT09PT09PT0gRU5EIFNUREVSUlxuJykKKworICAgIGRlZiBzbGVlcChz
ZWxmLCBzZWNvbmRzID0gZGVmYXVsdF9zbGVlcF9zZWNvbmRzKToKKyAgICAgICAgIiIiU2xlZXBz
IGF0IGxlYXN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNlY29uZHMuICBJZiBubworICAgICAg
ICBudW1iZXIgaXMgc3BlY2lmaWVkLCBzbGVlcHMgYXQgbGVhc3QgdGhlIG1pbmltdW0gbnVtYmVy
IG9mCisgICAgICAgIHNlY29uZHMgbmVjZXNzYXJ5IHRvIGFkdmFuY2UgZmlsZSB0aW1lIHN0YW1w
cyBvbiB0aGUgY3VycmVudAorICAgICAgICBzeXN0ZW0uICBTbGVlcGluZyBtb3JlIHNlY29uZHMg
aXMgYWxsIHJpZ2h0LgorICAgICAgICAiIiIKKyAgICAgICAgdGltZS5zbGVlcChzZWNvbmRzKQor
CisgICAgZGVmIHN0ZGVycihzZWxmLCBydW4gPSBOb25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0
aGUgZXJyb3Igb3V0cHV0IGZyb20gdGhlIHNwZWNpZmllZCBydW4gbnVtYmVyLgorICAgICAgICBJ
ZiB0aGVyZSBpcyBubyBzcGVjaWZpZWQgcnVuIG51bWJlciwgdGhlbiByZXR1cm5zIHRoZSBlcnJv
cgorICAgICAgICBvdXRwdXQgb2YgdGhlIGxhc3QgcnVuLiAgSWYgdGhlIHJ1biBudW1iZXIgaXMg
bGVzcyB0aGFuIHplcm8sCisgICAgICAgIHRoZW4gcmV0dXJucyB0aGUgZXJyb3Igb3V0cHV0IGZy
b20gdGhhdCBtYW55IHJ1bnMgYmFjayBmcm9tIHRoZQorICAgICAgICBjdXJyZW50IHJ1bi4KKyAg
ICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBydW46CisgICAgICAgICAgICBydW4gPSBsZW4oc2Vs
Zi5fc3RkZXJyKQorICAgICAgICBlbGlmIHJ1biA8IDA6CisgICAgICAgICAgICBydW4gPSBsZW4o
c2VsZi5fc3RkZXJyKSArIHJ1bgorICAgICAgICBydW4gPSBydW4gLSAxCisgICAgICAgIHJldHVy
biBzZWxmLl9zdGRlcnJbcnVuXQorCisgICAgZGVmIHN0ZG91dChzZWxmLCBydW4gPSBOb25lKToK
KyAgICAgICAgIiIiUmV0dXJucyB0aGUgc3RhbmRhcmQgb3V0cHV0IGZyb20gdGhlIHNwZWNpZmll
ZCBydW4gbnVtYmVyLgorICAgICAgICBJZiB0aGVyZSBpcyBubyBzcGVjaWZpZWQgcnVuIG51bWJl
ciwgdGhlbiByZXR1cm5zIHRoZSBzdGFuZGFyZAorICAgICAgICBvdXRwdXQgb2YgdGhlIGxhc3Qg
cnVuLiAgSWYgdGhlIHJ1biBudW1iZXIgaXMgbGVzcyB0aGFuIHplcm8sCisgICAgICAgIHRoZW4g
cmV0dXJucyB0aGUgc3RhbmRhcmQgb3V0cHV0IGZyb20gdGhhdCBtYW55IHJ1bnMgYmFjayBmcm9t
CisgICAgICAgIHRoZSBjdXJyZW50IHJ1bi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBy
dW46CisgICAgICAgICAgICBydW4gPSBsZW4oc2VsZi5fc3Rkb3V0KQorICAgICAgICBlbGlmIHJ1
biA8IDA6CisgICAgICAgICAgICBydW4gPSBsZW4oc2VsZi5fc3Rkb3V0KSArIHJ1bgorICAgICAg
ICBydW4gPSBydW4gLSAxCisgICAgICAgIHJldHVybiBzZWxmLl9zdGRvdXRbcnVuXQorCisgICAg
ZGVmIHN1YmRpcihzZWxmLCAqc3ViZGlycyk6CisgICAgICAgICIiIkNyZWF0ZSBuZXcgc3ViZGly
ZWN0b3JpZXMgdW5kZXIgdGhlIHRlbXBvcmFyeSB3b3JraW5nCisgICAgICAgIGRpcmVjdG9yeSwg
b25lIGZvciBlYWNoIGFyZ3VtZW50LiAgQW4gYXJndW1lbnQgbWF5IGJlIGEgbGlzdCwKKyAgICAg
ICAgaW4gd2hpY2ggY2FzZSB0aGUgbGlzdCBlbGVtZW50cyBhcmUgY29uY2F0ZW5hdGVkIHVzaW5n
IHRoZQorICAgICAgICBvcy5wYXRoLmpvaW4oKSBtZXRob2QuICBTdWJkaXJlY3RvcmllcyBtdWx0
aXBsZSBsZXZlbHMgZGVlcAorICAgICAgICBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcgYSBzZXBhcmF0
ZSBhcmd1bWVudCBmb3IgZWFjaCBsZXZlbDoKKworICAgICAgICAgICAgICAgIHRlc3Quc3ViZGly
KCdzdWInLCBbJ3N1YicsICdkaXInXSwgWydzdWInLCAnZGlyJywgJ2VjdG9yeSddKQorCisgICAg
ICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBzdWJkaXJlY3RvcmllcyBhY3R1YWxseSBjcmVhdGVk
LgorICAgICAgICAiIiIKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIGZvciBzdWIgaW4gc3Vi
ZGlyczoKKyAgICAgICAgICAgIGlmIHN1YiBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisgICAgICAgICAgICBpZiBpc19MaXN0KHN1Yik6CisgICAgICAgICAgICAgICAgc3ViID0g
YXBwbHkob3MucGF0aC5qb2luLCB0dXBsZShzdWIpKQorICAgICAgICAgICAgbmV3ID0gb3MucGF0
aC5qb2luKHNlbGYud29ya2Rpciwgc3ViKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgIG9zLm1rZGlyKG5ldykKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAg
ICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY291bnQgPSBj
b3VudCArIDEKKyAgICAgICAgcmV0dXJuIGNvdW50CisKKyAgICBkZWYgc3ltbGluayhzZWxmLCB0
YXJnZXQsIGxpbmspOgorICAgICAgICAiIiJDcmVhdGVzIGEgc3ltbGluayB0byB0aGUgc3BlY2lm
aWVkIHRhcmdldC4KKyAgICAgICAgVGhlIGxpbmsgbmFtZSBtYXkgYmUgYSBsaXN0LCBpbiB3aGlj
aCBjYXNlIHRoZSBlbGVtZW50cyBhcmUKKyAgICAgICAgY29uY2F0ZW5hdGVkIHdpdGggdGhlIG9z
LnBhdGguam9pbigpIG1ldGhvZC4gIFRoZSBsaW5rIGlzCisgICAgICAgIGFzc3VtZWQgdG8gYmUg
dW5kZXIgdGhlIHRlbXBvcmFyeSB3b3JraW5nIGRpcmVjdG9yeSB1bmxlc3MgaXQKKyAgICAgICAg
aXMgYW4gYWJzb2x1dGUgcGF0aCBuYW1lLiBUaGUgdGFyZ2V0IGlzICpub3QqIGFzc3VtZWQgdG8g
YmUKKyAgICAgICAgdW5kZXIgdGhlIHRlbXBvcmFyeSB3b3JraW5nIGRpcmVjdG9yeS4KKyAgICAg
ICAgIiIiCisgICAgICAgIGxpbmsgPSBzZWxmLmNhbm9uaWNhbGl6ZShsaW5rKQorICAgICAgICBv
cy5zeW1saW5rKHRhcmdldCwgbGluaykKKworICAgIGRlZiB0ZW1wZGlyKHNlbGYsIHBhdGg9Tm9u
ZSk6CisgICAgICAgICIiIkNyZWF0ZXMgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LgorICAgICAgICBB
IHVuaXF1ZSBkaXJlY3RvcnkgbmFtZSBpcyBnZW5lcmF0ZWQgaWYgbm8gcGF0aCBuYW1lIGlzIHNw
ZWNpZmllZC4KKyAgICAgICAgVGhlIGRpcmVjdG9yeSBpcyBjcmVhdGVkLCBhbmQgd2lsbCBiZSBy
ZW1vdmVkIHdoZW4gdGhlIFRlc3RDbWQKKyAgICAgICAgb2JqZWN0IGlzIGRlc3Ryb3llZC4KKyAg
ICAgICAgIiIiCisgICAgICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICAgICBwYXRoID0gdGVtcGZpbGUubWt0ZW1wKHByZWZpeD10ZW1wZmlsZS50ZW1w
bGF0ZSkKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgcGF0
aCA9IHRlbXBmaWxlLm1rdGVtcCgpCisgICAgICAgIG9zLm1rZGlyKHBhdGgpCisKKyAgICAgICAg
IyBTeW1saW5rcyBpbiB0aGUgcGF0aCB3aWxsIHJlcG9ydCB0aGluZ3MKKyAgICAgICAgIyBkaWZm
ZXJlbnRseSBmcm9tIG9zLmdldGN3ZCgpLCBzbyBjaGRpciB0aGVyZQorICAgICAgICAjIGFuZCBi
YWNrIHRvIGZldGNoIHRoZSBjYW5vbmljYWwgcGF0aC4KKyAgICAgICAgY3dkID0gb3MuZ2V0Y3dk
KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuY2hkaXIocGF0aCkKKyAgICAgICAgICAg
IHBhdGggPSBvcy5nZXRjd2QoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2hk
aXIoY3dkKQorCisgICAgICAgICMgVXBwZXJjYXNlIHRoZSBkcml2ZSBsZXR0ZXIgc2luY2UgdGhl
IGNhc2Ugb2YgZHJpdmUKKyAgICAgICAgIyBsZXR0ZXJzIGlzIHByZXR0eSBtdWNoIHJhbmRvbSBv
biB3aW4zMjoKKyAgICAgICAgZHJpdmUscmVzdCA9IG9zLnBhdGguc3BsaXRkcml2ZShwYXRoKQor
ICAgICAgICBpZiBkcml2ZToKKyAgICAgICAgICAgIHBhdGggPSBzdHJpbmcudXBwZXIoZHJpdmUp
ICsgcmVzdAorCisgICAgICAgICMKKyAgICAgICAgc2VsZi5fZGlybGlzdC5hcHBlbmQocGF0aCkK
KyAgICAgICAgZ2xvYmFsIF9DbGVhbnVwCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF9DbGVh
bnVwLmluZGV4KHNlbGYpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAg
X0NsZWFudXAuYXBwZW5kKHNlbGYpCisKKyAgICAgICAgcmV0dXJuIHBhdGgKKworICAgIGRlZiB0
b3VjaChzZWxmLCBwYXRoLCBtdGltZT1Ob25lKToKKyAgICAgICAgIiIiVXBkYXRlcyB0aGUgbW9k
aWZpY2F0aW9uIHRpbWUgb24gdGhlIHNwZWNpZmllZCBmaWxlIG9yCisgICAgICAgIGRpcmVjdG9y
eSBwYXRoIG5hbWUuICBUaGUgZGVmYXVsdCBpcyB0byB1cGRhdGUgdG8gdGhlCisgICAgICAgIGN1
cnJlbnQgdGltZSBpZiBubyBleHBsaWNpdCBtb2RpZmljYXRpb24gdGltZSBpcyBzcGVjaWZpZWQu
CisgICAgICAgICIiIgorICAgICAgICBwYXRoID0gc2VsZi5jYW5vbmljYWxpemUocGF0aCkKKyAg
ICAgICAgYXRpbWUgPSBvcy5wYXRoLmdldGF0aW1lKHBhdGgpCisgICAgICAgIGlmIG10aW1lIGlz
IE5vbmU6CisgICAgICAgICAgICBtdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIG9zLnV0aW1l
KHBhdGgsIChhdGltZSwgbXRpbWUpKQorCisgICAgZGVmIHVubGluayhzZWxmLCBmaWxlKToKKyAg
ICAgICAgIiIiVW5saW5rcyB0aGUgc3BlY2lmaWVkIGZpbGUgbmFtZS4KKyAgICAgICAgVGhlIGZp
bGUgbmFtZSBtYXkgYmUgYSBsaXN0LCBpbiB3aGljaCBjYXNlIHRoZSBlbGVtZW50cyBhcmUKKyAg
ICAgICAgY29uY2F0ZW5hdGVkIHdpdGggdGhlIG9zLnBhdGguam9pbigpIG1ldGhvZC4gIFRoZSBm
aWxlIGlzCisgICAgICAgIGFzc3VtZWQgdG8gYmUgdW5kZXIgdGhlIHRlbXBvcmFyeSB3b3JraW5n
IGRpcmVjdG9yeSB1bmxlc3MgaXQKKyAgICAgICAgaXMgYW4gYWJzb2x1dGUgcGF0aCBuYW1lLgor
ICAgICAgICAiIiIKKyAgICAgICAgZmlsZSA9IHNlbGYuY2Fub25pY2FsaXplKGZpbGUpCisgICAg
ICAgIG9zLnVubGluayhmaWxlKQorCisgICAgZGVmIHZlcmJvc2Vfc2V0KHNlbGYsIHZlcmJvc2Up
OgorICAgICAgICAiIiJTZXQgdGhlIHZlcmJvc2UgbGV2ZWwuCisgICAgICAgICIiIgorICAgICAg
ICBzZWxmLnZlcmJvc2UgPSB2ZXJib3NlCisKKyAgICBkZWYgd2hlcmVfaXMoc2VsZiwgZmlsZSwg
cGF0aD1Ob25lLCBwYXRoZXh0PU5vbmUpOgorICAgICAgICAiIiJGaW5kIGFuIGV4ZWN1dGFibGUg
ZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGlzX0xpc3QoZmlsZSk6CisgICAgICAgICAg
ICBmaWxlID0gYXBwbHkob3MucGF0aC5qb2luLCB0dXBsZShmaWxlKSkKKyAgICAgICAgaWYgbm90
IG9zLnBhdGguaXNhYnMoZmlsZSk6CisgICAgICAgICAgICBmaWxlID0gd2hlcmVfaXMoZmlsZSwg
cGF0aCwgcGF0aGV4dCkKKyAgICAgICAgcmV0dXJuIGZpbGUKKworICAgIGRlZiB3b3JrZGlyX3Nl
dChzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiQ3JlYXRlcyBhIHRlbXBvcmFyeSB3b3JraW5nIGRp
cmVjdG9yeSB3aXRoIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgcGF0aCBuYW1lLiAgSWYgdGhlIHBh
dGggaXMgYSBudWxsIHN0cmluZyAoJycpLCBhIHVuaXF1ZQorICAgICAgICBkaXJlY3RvcnkgbmFt
ZSBpcyBjcmVhdGVkLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgKHBhdGggIT0gTm9uZSk6Cisg
ICAgICAgICAgICBpZiBwYXRoID09ICcnOgorICAgICAgICAgICAgICAgIHBhdGggPSBOb25lCisg
ICAgICAgICAgICBwYXRoID0gc2VsZi50ZW1wZGlyKHBhdGgpCisgICAgICAgIHNlbGYud29ya2Rp
ciA9IHBhdGgKKworICAgIGRlZiB3b3JrcGF0aChzZWxmLCAqYXJncyk6CisgICAgICAgICIiIlJl
dHVybnMgdGhlIGFic29sdXRlIHBhdGggbmFtZSB0byBhIHN1YmRpcmVjdG9yeSBvciBmaWxlCisg
ICAgICAgIHdpdGhpbiB0aGUgY3VycmVudCB0ZW1wb3Jhcnkgd29ya2luZyBkaXJlY3RvcnkuICBD
b25jYXRlbmF0ZXMKKyAgICAgICAgdGhlIHRlbXBvcmFyeSB3b3JraW5nIGRpcmVjdG9yeSBuYW1l
IHdpdGggdGhlIHNwZWNpZmllZAorICAgICAgICBhcmd1bWVudHMgdXNpbmcgdGhlIG9zLnBhdGgu
am9pbigpIG1ldGhvZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBhcHBseShvcy5wYXRo
LmpvaW4sIChzZWxmLndvcmtkaXIsKSArIHR1cGxlKGFyZ3MpKQorCisgICAgZGVmIHJlYWRhYmxl
KHNlbGYsIHRvcCwgcmVhZD0xKToKKyAgICAgICAgIiIiTWFrZSB0aGUgc3BlY2lmaWVkIGRpcmVj
dG9yeSB0cmVlIHJlYWRhYmxlIChyZWFkID09IDEpCisgICAgICAgIG9yIG5vdCAocmVhZCA9PSBO
b25lKS4KKworICAgICAgICBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IG9uIFdpbmRvd3Mgc3lz
dGVtcywgd2hpY2ggdXNlIGEKKyAgICAgICAgY29tcGxldGVseSBkaWZmZXJlbnQgbWVjaGFuaXNt
IHRvIGNvbnRyb2wgZmlsZSByZWFkYWJpbGl0eS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYg
c3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBp
ZiByZWFkOgorICAgICAgICAgICAgZGVmIGRvX2NobW9kKGZuYW1lKToKKyAgICAgICAgICAgICAg
ICB0cnk6IHN0ID0gb3Muc3RhdChmbmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJv
cjogcGFzcworICAgICAgICAgICAgICAgIGVsc2U6IG9zLmNobW9kKGZuYW1lLCBzdGF0LlNfSU1P
REUoc3Rbc3RhdC5TVF9NT0RFXXxzdGF0LlNfSVJFQUQpKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgZGVmIGRvX2NobW9kKGZuYW1lKToKKyAgICAgICAgICAgICAgICB0cnk6IHN0ID0gb3Mu
c3RhdChmbmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjogcGFzcworICAgICAg
ICAgICAgICAgIGVsc2U6IG9zLmNobW9kKGZuYW1lLCBzdGF0LlNfSU1PREUoc3Rbc3RhdC5TVF9N
T0RFXSZ+c3RhdC5TX0lSRUFEKSkKKworICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZSh0b3ApOgor
ICAgICAgICAgICAgIyBJZiBpdCdzIGEgZmlsZSwgdGhhdCdzIGVhc3ksIGp1c3QgY2htb2QgaXQu
CisgICAgICAgICAgICBkb19jaG1vZCh0b3ApCisgICAgICAgIGVsaWYgcmVhZDoKKyAgICAgICAg
ICAgICMgSXQncyBhIGRpcmVjdG9yeSBhbmQgd2UncmUgdHJ5aW5nIHRvIHR1cm4gb24gcmVhZAor
ICAgICAgICAgICAgIyBwZXJtaXNzaW9uLCBzbyBpdCdzIGFsc28gcHJldHR5IGVhc3ksIGp1c3Qg
Y2htb2QgdGhlCisgICAgICAgICAgICAjIGRpcmVjdG9yeSBhbmQgdGhlbiBjaG1vZCBldmVyeSBl
bnRyeSBvbiBvdXIgd2FsayBkb3duIHRoZQorICAgICAgICAgICAgIyB0cmVlLiAgQmVjYXVzZSBv
cy5wYXRoLndhbGsoKSBpcyB0b3AtZG93biwgd2UnbGwgZW5hYmxlCisgICAgICAgICAgICAjIHJl
YWQgcGVybWlzc2lvbiBvbiBhbnkgZGlyZWN0b3JpZXMgdGhhdCBoYXZlIGl0IGRpc2FibGVkCisg
ICAgICAgICAgICAjIGJlZm9yZSBvcy5wYXRoLndhbGsoKSB0cmllcyB0byBsaXN0IHRoZWlyIGNv
bnRlbnRzLgorICAgICAgICAgICAgZG9fY2htb2QodG9wKQorCisgICAgICAgICAgICBkZWYgY2ht
b2RfZW50cmllcyhhcmcsIGRpcm5hbWUsIG5hbWVzLCBkb19jaG1vZD1kb19jaG1vZCk6CisgICAg
ICAgICAgICAgICAgZm9yIG4gaW4gbmFtZXM6CisgICAgICAgICAgICAgICAgICAgIGRvX2NobW9k
KG9zLnBhdGguam9pbihkaXJuYW1lLCBuKSkKKworICAgICAgICAgICAgb3MucGF0aC53YWxrKHRv
cCwgY2htb2RfZW50cmllcywgTm9uZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgSXQn
cyBhIGRpcmVjdG9yeSBhbmQgd2UncmUgdHJ5aW5nIHRvIHR1cm4gb2ZmIHJlYWQKKyAgICAgICAg
ICAgICMgcGVybWlzc2lvbiwgd2hpY2ggbWVhbnMgd2UgaGF2ZSB0byBjaG1vZCB0aGUgZGlyZWN0
b3JlaXMKKyAgICAgICAgICAgICMgaW4gdGhlIHRyZWUgYm90dG9tLXVwLCBsZXN0IGRpc2FibGlu
ZyByZWFkIHBlcm1pc3Npb24gZnJvbQorICAgICAgICAgICAgIyB0aGUgdG9wIGRvd24gZ2V0IGlu
IHRoZSB3YXkgb2YgYmVpbmcgYWJsZSB0byBnZXQgYXQgbG93ZXIKKyAgICAgICAgICAgICMgcGFy
dHMgb2YgdGhlIHRyZWUuICBCdXQgb3MucGF0aC53YWxrKCkgdmlzaXRzIHRoaW5ncyB0b3AKKyAg
ICAgICAgICAgICMgZG93biwgc28gd2UganVzdCB1c2UgYW4gb2JqZWN0IHRvIGNvbGxlY3QgYSBs
aXN0IG9mIGFsbAorICAgICAgICAgICAgIyBvZiB0aGUgZW50cmllcyBpbiB0aGUgdHJlZSwgcmV2
ZXJzZSB0aGUgbGlzdCwgYW5kIHRoZW4KKyAgICAgICAgICAgICMgY2htb2QgdGhlIHJldmVyc2Vk
IChib3R0b20tdXApIGxpc3QuCisgICAgICAgICAgICBjb2wgPSBDb2xsZWN0b3IodG9wKQorICAg
ICAgICAgICAgb3MucGF0aC53YWxrKHRvcCwgY29sLCBOb25lKQorICAgICAgICAgICAgY29sLmVu
dHJpZXMucmV2ZXJzZSgpCisgICAgICAgICAgICBmb3IgZCBpbiBjb2wuZW50cmllczogZG9fY2ht
b2QoZCkKKworICAgIGRlZiB3cml0YWJsZShzZWxmLCB0b3AsIHdyaXRlPTEpOgorICAgICAgICAi
IiJNYWtlIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IHRyZWUgd3JpdGFibGUgKHdyaXRlID09IDEp
CisgICAgICAgIG9yIG5vdCAod3JpdGUgPT0gTm9uZSkuCisgICAgICAgICIiIgorCisgICAgICAg
IGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorCisgICAgICAgICAgICBpZiB3cml0ZToKKyAg
ICAgICAgICAgICAgICBkZWYgZG9fY2htb2QoZm5hbWUpOgorICAgICAgICAgICAgICAgICAgICB0
cnk6IG9zLmNobW9kKGZuYW1lLCBzdGF0LlNfSVdSSVRFKQorICAgICAgICAgICAgICAgICAgICBl
eGNlcHQgT1NFcnJvcjogcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBk
ZWYgZG9fY2htb2QoZm5hbWUpOgorICAgICAgICAgICAgICAgICAgICB0cnk6IG9zLmNobW9kKGZu
YW1lLCBzdGF0LlNfSVJFQUQpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiBw
YXNzCisKKyAgICAgICAgZWxzZToKKworICAgICAgICAgICAgaWYgd3JpdGU6CisgICAgICAgICAg
ICAgICAgZGVmIGRvX2NobW9kKGZuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OiBzdCA9
IG9zLnN0YXQoZm5hbWUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiBwYXNz
CisgICAgICAgICAgICAgICAgICAgIGVsc2U6IG9zLmNobW9kKGZuYW1lLCBzdGF0LlNfSU1PREUo
c3Rbc3RhdC5TVF9NT0RFXXwwMjAwKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgZGVmIGRvX2NobW9kKGZuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OiBzdCA9IG9z
LnN0YXQoZm5hbWUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiBwYXNzCisg
ICAgICAgICAgICAgICAgICAgIGVsc2U6IG9zLmNobW9kKGZuYW1lLCBzdGF0LlNfSU1PREUoc3Rb
c3RhdC5TVF9NT0RFXSZ+MDIwMCkpCisKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUodG9wKToK
KyAgICAgICAgICAgIGRvX2NobW9kKHRvcCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNv
bCA9IENvbGxlY3Rvcih0b3ApCisgICAgICAgICAgICBvcy5wYXRoLndhbGsodG9wLCBjb2wsIE5v
bmUpCisgICAgICAgICAgICBmb3IgZCBpbiBjb2wuZW50cmllczogZG9fY2htb2QoZCkKKworICAg
IGRlZiBleGVjdXRhYmxlKHNlbGYsIHRvcCwgZXhlY3V0ZT0xKToKKyAgICAgICAgIiIiTWFrZSB0
aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSB0cmVlIGV4ZWN1dGFibGUgKGV4ZWN1dGUgPT0gMSkKKyAg
ICAgICAgb3Igbm90IChleGVjdXRlID09IE5vbmUpLgorCisgICAgICAgIFRoaXMgbWV0aG9kIGhh
cyBubyBlZmZlY3Qgb24gV2luZG93cyBzeXN0ZW1zLCB3aGljaCB1c2UgYQorICAgICAgICBjb21w
bGV0ZWx5IGRpZmZlcmVudCBtZWNoYW5pc20gdG8gY29udHJvbCBmaWxlIGV4ZWN1dGFiaWxpdHku
CisgICAgICAgICIiIgorCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgZXhlY3V0ZToKKyAgICAgICAgICAgIGRlZiBk
b19jaG1vZChmbmFtZSk6CisgICAgICAgICAgICAgICAgdHJ5OiBzdCA9IG9zLnN0YXQoZm5hbWUp
CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6IHBhc3MKKyAgICAgICAgICAgICAgICBl
bHNlOiBvcy5jaG1vZChmbmFtZSwgc3RhdC5TX0lNT0RFKHN0W3N0YXQuU1RfTU9ERV18c3RhdC5T
X0lFWEVDKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRlZiBkb19jaG1vZChmbmFtZSk6
CisgICAgICAgICAgICAgICAgdHJ5OiBzdCA9IG9zLnN0YXQoZm5hbWUpCisgICAgICAgICAgICAg
ICAgZXhjZXB0IE9TRXJyb3I6IHBhc3MKKyAgICAgICAgICAgICAgICBlbHNlOiBvcy5jaG1vZChm
bmFtZSwgc3RhdC5TX0lNT0RFKHN0W3N0YXQuU1RfTU9ERV0mfnN0YXQuU19JRVhFQykpCisKKyAg
ICAgICAgaWYgb3MucGF0aC5pc2ZpbGUodG9wKToKKyAgICAgICAgICAgICMgSWYgaXQncyBhIGZp
bGUsIHRoYXQncyBlYXN5LCBqdXN0IGNobW9kIGl0LgorICAgICAgICAgICAgZG9fY2htb2QodG9w
KQorICAgICAgICBlbGlmIGV4ZWN1dGU6CisgICAgICAgICAgICAjIEl0J3MgYSBkaXJlY3Rvcnkg
YW5kIHdlJ3JlIHRyeWluZyB0byB0dXJuIG9uIGV4ZWN1dGUKKyAgICAgICAgICAgICMgcGVybWlz
c2lvbiwgc28gaXQncyBhbHNvIHByZXR0eSBlYXN5LCBqdXN0IGNobW9kIHRoZQorICAgICAgICAg
ICAgIyBkaXJlY3RvcnkgYW5kIHRoZW4gY2htb2QgZXZlcnkgZW50cnkgb24gb3VyIHdhbGsgZG93
biB0aGUKKyAgICAgICAgICAgICMgdHJlZS4gIEJlY2F1c2Ugb3MucGF0aC53YWxrKCkgaXMgdG9w
LWRvd24sIHdlJ2xsIGVuYWJsZQorICAgICAgICAgICAgIyBleGVjdXRlIHBlcm1pc3Npb24gb24g
YW55IGRpcmVjdG9yaWVzIHRoYXQgaGF2ZSBpdCBkaXNhYmxlZAorICAgICAgICAgICAgIyBiZWZv
cmUgb3MucGF0aC53YWxrKCkgdHJpZXMgdG8gbGlzdCB0aGVpciBjb250ZW50cy4KKyAgICAgICAg
ICAgIGRvX2NobW9kKHRvcCkKKworICAgICAgICAgICAgZGVmIGNobW9kX2VudHJpZXMoYXJnLCBk
aXJuYW1lLCBuYW1lcywgZG9fY2htb2Q9ZG9fY2htb2QpOgorICAgICAgICAgICAgICAgIGZvciBu
IGluIG5hbWVzOgorICAgICAgICAgICAgICAgICAgICBkb19jaG1vZChvcy5wYXRoLmpvaW4oZGly
bmFtZSwgbikpCisKKyAgICAgICAgICAgIG9zLnBhdGgud2Fsayh0b3AsIGNobW9kX2VudHJpZXMs
IE5vbmUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEl0J3MgYSBkaXJlY3RvcnkgYW5k
IHdlJ3JlIHRyeWluZyB0byB0dXJuIG9mZiBleGVjdXRlCisgICAgICAgICAgICAjIHBlcm1pc3Np
b24sIHdoaWNoIG1lYW5zIHdlIGhhdmUgdG8gY2htb2QgdGhlIGRpcmVjdG9yaWVzCisgICAgICAg
ICAgICAjIGluIHRoZSB0cmVlIGJvdHRvbS11cCwgbGVzdCBkaXNhYmxpbmcgZXhlY3V0ZSBwZXJt
aXNzaW9uIGZyb20KKyAgICAgICAgICAgICMgdGhlIHRvcCBkb3duIGdldCBpbiB0aGUgd2F5IG9m
IGJlaW5nIGFibGUgdG8gZ2V0IGF0IGxvd2VyCisgICAgICAgICAgICAjIHBhcnRzIG9mIHRoZSB0
cmVlLiAgQnV0IG9zLnBhdGgud2FsaygpIHZpc2l0cyB0aGluZ3MgdG9wCisgICAgICAgICAgICAj
IGRvd24sIHNvIHdlIGp1c3QgdXNlIGFuIG9iamVjdCB0byBjb2xsZWN0IGEgbGlzdCBvZiBhbGwK
KyAgICAgICAgICAgICMgb2YgdGhlIGVudHJpZXMgaW4gdGhlIHRyZWUsIHJldmVyc2UgdGhlIGxp
c3QsIGFuZCB0aGVuCisgICAgICAgICAgICAjIGNobW9kIHRoZSByZXZlcnNlZCAoYm90dG9tLXVw
KSBsaXN0LgorICAgICAgICAgICAgY29sID0gQ29sbGVjdG9yKHRvcCkKKyAgICAgICAgICAgIG9z
LnBhdGgud2Fsayh0b3AsIGNvbCwgTm9uZSkKKyAgICAgICAgICAgIGNvbC5lbnRyaWVzLnJldmVy
c2UoKQorICAgICAgICAgICAgZm9yIGQgaW4gY29sLmVudHJpZXM6IGRvX2NobW9kKGQpCisKKyAg
ICBkZWYgd3JpdGUoc2VsZiwgZmlsZSwgY29udGVudCwgbW9kZSA9ICd3YicpOgorICAgICAgICAi
IiJXcml0ZXMgdGhlIHNwZWNpZmllZCBjb250ZW50IHRleHQgKHNlY29uZCBhcmd1bWVudCkgdG8g
dGhlCisgICAgICAgIHNwZWNpZmllZCBmaWxlIG5hbWUgKGZpcnN0IGFyZ3VtZW50KS4gIFRoZSBm
aWxlIG5hbWUgbWF5IGJlCisgICAgICAgIGEgbGlzdCwgaW4gd2hpY2ggY2FzZSB0aGUgZWxlbWVu
dHMgYXJlIGNvbmNhdGVuYXRlZCB3aXRoIHRoZQorICAgICAgICBvcy5wYXRoLmpvaW4oKSBtZXRo
b2QuICBUaGUgZmlsZSBpcyBjcmVhdGVkIHVuZGVyIHRoZSB0ZW1wb3JhcnkKKyAgICAgICAgd29y
a2luZyBkaXJlY3RvcnkuICBBbnkgc3ViZGlyZWN0b3JpZXMgaW4gdGhlIHBhdGggbXVzdCBhbHJl
YWR5CisgICAgICAgIGV4aXN0LiAgVGhlIEkvTyBtb2RlIGZvciB0aGUgZmlsZSBtYXkgYmUgc3Bl
Y2lmaWVkOyBpdCBtdXN0CisgICAgICAgIGJlZ2luIHdpdGggYSAndycuICBUaGUgZGVmYXVsdCBp
cyAnd2InIChiaW5hcnkgd3JpdGUpLgorICAgICAgICAiIiIKKyAgICAgICAgZmlsZSA9IHNlbGYu
Y2Fub25pY2FsaXplKGZpbGUpCisgICAgICAgIGlmIG1vZGVbMF0gIT0gJ3cnOgorICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvciwgIm1vZGUgbXVzdCBiZWdpbiB3aXRoICd3JyIKKyAgICAgICAg
b3BlbihmaWxlLCBtb2RlKS53cml0ZShjb250ZW50KQorCisjIExvY2FsIFZhcmlhYmxlczoKKyMg
dGFiLXdpZHRoOjQKKyMgaW5kZW50LXRhYnMtbW9kZTpuaWwKKyMgRW5kOgorIyB2aW06IHNldCBl
eHBhbmR0YWIgdGFic3RvcD00IHNoaWZ0d2lkdGg9NDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2xpYi9UZXN0Q29tbW9uLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvbGliL1Rlc3RDb21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFhNzE4NWEyZmZlYjIzZGIxMmFi
MmM4NjM0MGZmMTRmZGY4ZjEwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L2xpYi9UZXN0Q29tbW9uLnB5CkBAIC0wLDAgKzEsNTgxIEBACisiIiIKK1Rlc3RD
b21tb24ucHk6ICBhIHRlc3RpbmcgZnJhbWV3b3JrIGZvciBjb21tYW5kcyBhbmQgc2NyaXB0cwor
ICAgICAgICAgICAgICAgIHdpdGggY29tbW9ubHkgdXNlZnVsIGVycm9yIGhhbmRsaW5nCisKK1Ro
ZSBUZXN0Q29tbW9uIG1vZHVsZSBwcm92aWRlcyBhIHNpbXBsZSwgaGlnaC1sZXZlbCBpbnRlcmZh
Y2UgZm9yIHdyaXRpbmcKK3Rlc3RzIG9mIGV4ZWN1dGFibGUgY29tbWFuZHMgYW5kIHNjcmlwdHMs
IGVzcGVjaWFsbHkgY29tbWFuZHMgYW5kIHNjcmlwdHMKK3RoYXQgaW50ZXJhY3Qgd2l0aCB0aGUg
ZmlsZSBzeXN0ZW0uICBBbGwgbWV0aG9kcyB0aHJvdyBleGNlcHRpb25zIGFuZAorZXhpdCBvbiBm
YWlsdXJlLCB3aXRoIHVzZWZ1bCBlcnJvciBtZXNzYWdlcy4gIFRoaXMgbWFrZXMgYSBudW1iZXIg
b2YKK2V4cGxpY2l0IGNoZWNrcyB1bm5lY2Vzc2FyeSwgbWFraW5nIHRoZSB0ZXN0IHNjcmlwdHMg
dGhlbXNlbHZlcyBzaW1wbGVyCit0byB3cml0ZSBhbmQgZWFzaWVyIHRvIHJlYWQuCisKK1RoZSBU
ZXN0Q29tbW9uIGNsYXNzIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIFRlc3RDbWQgY2xhc3MuICBJbiBl
c3NlbmNlLAorVGVzdENvbW1vbiBpcyBhIHdyYXBwZXIgdGhhdCBoYW5kbGVzIGNvbW1vbiBUZXN0
Q21kIGVycm9yIGNvbmRpdGlvbnMgaW4KK3VzZWZ1bCB3YXlzLiAgWW91IGNhbiB1c2UgVGVzdENv
bW1vbiBkaXJlY3RseSwgb3Igc3ViY2xhc3MgaXQgZm9yIHlvdXIKK3Byb2dyYW0gYW5kIGFkZCBh
ZGRpdGlvbmFsIChvciBvdmVycmlkZSkgbWV0aG9kcyB0byB0YWlsb3IgaXQgdG8geW91cgorcHJv
Z3JhbSdzIHNwZWNpZmljIG5lZWRzLiAgQWx0ZXJuYXRpdmVseSwgdGhlIFRlc3RDb21tb24gY2xh
c3Mgc2VydmVzCithcyBhIHVzZWZ1bCBleGFtcGxlIG9mIGhvdyB0byBkZWZpbmUgeW91ciBvd24g
VGVzdENtZCBzdWJjbGFzcy4KKworQXMgYSBzdWJjbGFzcyBvZiBUZXN0Q21kLCBUZXN0Q29tbW9u
IHByb3ZpZGVzIGFjY2VzcyB0byBhbGwgb2YgdGhlCit2YXJpYWJsZXMgYW5kIG1ldGhvZHMgZnJv
bSB0aGUgVGVzdENtZCBtb2R1bGUuICBDb25zZXF1ZW50bHksIHlvdSBjYW4KK3VzZSBhbnkgdmFy
aWFibGUgb3IgbWV0aG9kIGRvY3VtZW50ZWQgaW4gdGhlIFRlc3RDbWQgbW9kdWxlIHdpdGhvdXQK
K2hhdmluZyB0byBleHBsaWNpdGx5IGltcG9ydCBUZXN0Q21kLgorCitBIFRlc3RDb21tb24gZW52
aXJvbm1lbnQgb2JqZWN0IGlzIGNyZWF0ZWQgdmlhIHRoZSB1c3VhbCBpbnZvY2F0aW9uOgorCisg
ICAgaW1wb3J0IFRlc3RDb21tb24KKyAgICB0ZXN0ID0gVGVzdENvbW1vbi5UZXN0Q29tbW9uKCkK
KworWW91IGNhbiB1c2UgYWxsIG9mIHRoZSBUZXN0Q21kIGtleXdvcmQgYXJndW1lbnRzIHdoZW4g
aW5zdGFudGlhdGluZyBhCitUZXN0Q29tbW9uIG9iamVjdDsgc2VlIHRoZSBUZXN0Q21kIGRvY3Vt
ZW50YXRpb24gZm9yIGRldGFpbHMuCisKK0hlcmUgaXMgYW4gb3ZlcnZpZXcgb2YgdGhlIG1ldGhv
ZHMgYW5kIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlCitwcm92aWRlZCBieSB0aGUgVGVzdENv
bW1vbiBjbGFzczoKKworICAgIHRlc3QubXVzdF9iZV93cml0YWJsZSgnZmlsZTEnLCBbJ2ZpbGUy
JywgLi4uXSkKKworICAgIHRlc3QubXVzdF9jb250YWluKCdmaWxlJywgJ3JlcXVpcmVkIHRleHRc
bicpCisKKyAgICB0ZXN0Lm11c3RfY29udGFpbl9hbGxfbGluZXMob3V0cHV0LCBsaW5lcywgWyd0
aXRsZScsIGZpbmRdKQorCisgICAgdGVzdC5tdXN0X2NvbnRhaW5fYW55X2xpbmUob3V0cHV0LCBs
aW5lcywgWyd0aXRsZScsIGZpbmRdKQorCisgICAgdGVzdC5tdXN0X2V4aXN0KCdmaWxlMScsIFsn
ZmlsZTInLCAuLi5dKQorCisgICAgdGVzdC5tdXN0X21hdGNoKCdmaWxlJywgImV4cGVjdGVkIGNv
bnRlbnRzXG4iKQorCisgICAgdGVzdC5tdXN0X25vdF9iZV93cml0YWJsZSgnZmlsZTEnLCBbJ2Zp
bGUyJywgLi4uXSkKKworICAgIHRlc3QubXVzdF9ub3RfY29udGFpbignZmlsZScsICdiYW5uZWQg
dGV4dFxuJykKKworICAgIHRlc3QubXVzdF9ub3RfY29udGFpbl9hbnlfbGluZShvdXRwdXQsIGxp
bmVzLCBbJ3RpdGxlJywgZmluZF0pCisKKyAgICB0ZXN0Lm11c3Rfbm90X2V4aXN0KCdmaWxlMScs
IFsnZmlsZTInLCAuLi5dKQorCisgICAgdGVzdC5ydW4ob3B0aW9ucyA9ICJvcHRpb25zIHRvIGJl
IHByZXBlbmRlZCB0byBhcmd1bWVudHMiLAorICAgICAgICAgICAgIHN0ZG91dCA9ICJleHBlY3Rl
ZCBzdGFuZGFyZCBvdXRwdXQgZnJvbSB0aGUgcHJvZ3JhbSIsCisgICAgICAgICAgICAgc3RkZXJy
ID0gImV4cGVjdGVkIGVycm9yIG91dHB1dCBmcm9tIHRoZSBwcm9ncmFtIiwKKyAgICAgICAgICAg
ICBzdGF0dXMgPSBleHBlY3RlZF9zdGF0dXMsCisgICAgICAgICAgICAgbWF0Y2ggPSBtYXRjaF9m
dW5jdGlvbikKKworVGhlIFRlc3RDb21tb24gbW9kdWxlIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxv
d2luZyB2YXJpYWJsZXMKKworICAgIFRlc3RDb21tb24ucHl0aG9uX2V4ZWN1dGFibGUKKyAgICBU
ZXN0Q29tbW9uLmV4ZV9zdWZmaXgKKyAgICBUZXN0Q29tbW9uLm9ial9zdWZmaXgKKyAgICBUZXN0
Q29tbW9uLnNob2JqX3ByZWZpeAorICAgIFRlc3RDb21tb24uc2hvYmpfc3VmZml4CisgICAgVGVz
dENvbW1vbi5saWJfcHJlZml4CisgICAgVGVzdENvbW1vbi5saWJfc3VmZml4CisgICAgVGVzdENv
bW1vbi5kbGxfcHJlZml4CisgICAgVGVzdENvbW1vbi5kbGxfc3VmZml4CisKKyIiIgorCisjIENv
cHlyaWdodCAyMDAwLTIwMTAgU3RldmVuIEtuaWdodAorIyBUaGlzIG1vZHVsZSBpcyBmcmVlIHNv
ZnR3YXJlLCBhbmQgeW91IG1heSByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1
bmRlciB0aGUgc2FtZSB0ZXJtcyBhcyBQeXRob24gaXRzZWxmLCBzbyBsb25nIGFzIHRoaXMgY29w
eXJpZ2h0IG1lc3NhZ2UKKyMgYW5kIGRpc2NsYWltZXIgYXJlIHJldGFpbmVkIGluIHRoZWlyIG9y
aWdpbmFsIGZvcm0uCisjCisjIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxF
IFRPIEFOWSBQQVJUWSBGT1IgRElSRUNULCBJTkRJUkVDVCwKKyMgU1BFQ0lBTCwgSU5DSURFTlRB
TCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcgT1VUIE9GIFRIRSBVU0UgT0YKKyMg
VEhJUyBDT0RFLCBFVkVOIElGIFRIRSBBVVRIT1IgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSAorIyBEQU1BR0UuCisjCisjIFRIRSBBVVRIT1IgU1BFQ0lGSUNBTExZ
IERJU0NMQUlNUyBBTlkgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBCisjIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBDT0RFIFBST1ZJREVEIEhFUkVVTkRF
UiBJUyBPTiBBTiAiQVMgSVMiIEJBU0lTLAorIyBBTkQgVEhFUkUgSVMgTk8gT0JMSUdBVElPTiBX
SEFUU09FVkVSIFRPIFBST1ZJREUgTUFJTlRFTkFOQ0UsCisjIFNVUFBPUlQsIFVQREFURVMsIEVO
SEFOQ0VNRU5UUywgT1IgTU9ESUZJQ0FUSU9OUy4KKworX19hdXRob3JfXyA9ICJTdGV2ZW4gS25p
Z2h0IDxrbmlnaHQgYXQgYmFsZG10IGRvdCBjb20+IgorX19yZXZpc2lvbl9fID0gIlRlc3RDb21t
b24ucHkgMC4zNy5EMDAxIDIwMTAvMDEvMTEgMTY6NTU6NTAga25pZ2h0IgorX192ZXJzaW9uX18g
PSAiMC4zNyIKKworaW1wb3J0IGNvcHkKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2ltcG9y
dCBzdGF0CitpbXBvcnQgc3RyaW5nCitpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCBV
c2VyTGlzdAorCitmcm9tIFRlc3RDbWQgaW1wb3J0ICoKK2Zyb20gVGVzdENtZCBpbXBvcnQgX19h
bGxfXworCitfX2FsbF9fLmV4dGVuZChbICdUZXN0Q29tbW9uJywKKyAgICAgICAgICAgICAgICAg
J2V4ZV9zdWZmaXgnLAorICAgICAgICAgICAgICAgICAnb2JqX3N1ZmZpeCcsCisgICAgICAgICAg
ICAgICAgICdzaG9ial9wcmVmaXgnLAorICAgICAgICAgICAgICAgICAnc2hvYmpfc3VmZml4JywK
KyAgICAgICAgICAgICAgICAgJ2xpYl9wcmVmaXgnLAorICAgICAgICAgICAgICAgICAnbGliX3N1
ZmZpeCcsCisgICAgICAgICAgICAgICAgICdkbGxfcHJlZml4JywKKyAgICAgICAgICAgICAgICAg
J2RsbF9zdWZmaXgnLAorICAgICAgICAgICAgICAgXSkKKworIyBWYXJpYWJsZXMgdGhhdCBkZXNj
cmliZSB0aGUgcHJlZml4ZXMgYW5kIHN1ZmZpeGVzIG9uIHRoaXMgc3lzdGVtLgoraWYgc3lzLnBs
YXRmb3JtID09ICd3aW4zMic6CisgICAgZXhlX3N1ZmZpeCAgID0gJy5leGUnCisgICAgb2JqX3N1
ZmZpeCAgID0gJy5vYmonCisgICAgc2hvYmpfc3VmZml4ID0gJy5vYmonCisgICAgc2hvYmpfcHJl
Zml4ID0gJycKKyAgICBsaWJfcHJlZml4ICAgPSAnJworICAgIGxpYl9zdWZmaXggICA9ICcubGli
JworICAgIGRsbF9wcmVmaXggICA9ICcnCisgICAgZGxsX3N1ZmZpeCAgID0gJy5kbGwnCitlbGlm
IHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJzoKKyAgICBleGVfc3VmZml4ICAgPSAnLmV4ZScKKyAg
ICBvYmpfc3VmZml4ICAgPSAnLm8nCisgICAgc2hvYmpfc3VmZml4ID0gJy5vcycKKyAgICBzaG9i
al9wcmVmaXggPSAnJworICAgIGxpYl9wcmVmaXggICA9ICdsaWInCisgICAgbGliX3N1ZmZpeCAg
ID0gJy5hJworICAgIGRsbF9wcmVmaXggICA9ICcnCisgICAgZGxsX3N1ZmZpeCAgID0gJy5kbGwn
CitlbGlmIHN0cmluZy5maW5kKHN5cy5wbGF0Zm9ybSwgJ2lyaXgnKSAhPSAtMToKKyAgICBleGVf
c3VmZml4ICAgPSAnJworICAgIG9ial9zdWZmaXggICA9ICcubycKKyAgICBzaG9ial9zdWZmaXgg
PSAnLm8nCisgICAgc2hvYmpfcHJlZml4ID0gJycKKyAgICBsaWJfcHJlZml4ICAgPSAnbGliJwor
ICAgIGxpYl9zdWZmaXggICA9ICcuYScKKyAgICBkbGxfcHJlZml4ICAgPSAnbGliJworICAgIGRs
bF9zdWZmaXggICA9ICcuc28nCitlbGlmIHN0cmluZy5maW5kKHN5cy5wbGF0Zm9ybSwgJ2Rhcndp
bicpICE9IC0xOgorICAgIGV4ZV9zdWZmaXggICA9ICcnCisgICAgb2JqX3N1ZmZpeCAgID0gJy5v
JworICAgIHNob2JqX3N1ZmZpeCA9ICcub3MnCisgICAgc2hvYmpfcHJlZml4ID0gJycKKyAgICBs
aWJfcHJlZml4ICAgPSAnbGliJworICAgIGxpYl9zdWZmaXggICA9ICcuYScKKyAgICBkbGxfcHJl
Zml4ICAgPSAnbGliJworICAgIGRsbF9zdWZmaXggICA9ICcuZHlsaWInCitlbGlmIHN0cmluZy5m
aW5kKHN5cy5wbGF0Zm9ybSwgJ3N1bm9zJykgIT0gLTE6CisgICAgZXhlX3N1ZmZpeCAgID0gJycK
KyAgICBvYmpfc3VmZml4ICAgPSAnLm8nCisgICAgc2hvYmpfc3VmZml4ID0gJy5vcycKKyAgICBz
aG9ial9wcmVmaXggPSAnc29fJworICAgIGxpYl9wcmVmaXggICA9ICdsaWInCisgICAgbGliX3N1
ZmZpeCAgID0gJy5hJworICAgIGRsbF9wcmVmaXggICA9ICdsaWInCisgICAgZGxsX3N1ZmZpeCAg
ID0gJy5keWxpYicKK2Vsc2U6CisgICAgZXhlX3N1ZmZpeCAgID0gJycKKyAgICBvYmpfc3VmZml4
ICAgPSAnLm8nCisgICAgc2hvYmpfc3VmZml4ID0gJy5vcycKKyAgICBzaG9ial9wcmVmaXggPSAn
JworICAgIGxpYl9wcmVmaXggICA9ICdsaWInCisgICAgbGliX3N1ZmZpeCAgID0gJy5hJworICAg
IGRsbF9wcmVmaXggICA9ICdsaWInCisgICAgZGxsX3N1ZmZpeCAgID0gJy5zbycKKworZGVmIGlz
X0xpc3QoZSk6CisgICAgcmV0dXJuIHR5cGUoZSkgaXMgdHlwZXMuTGlzdFR5cGUgXAorICAgICAg
ICBvciBpc2luc3RhbmNlKGUsIFVzZXJMaXN0LlVzZXJMaXN0KQorCitkZWYgaXNfd3JpdGFibGUo
Zik6CisgICAgbW9kZSA9IG9zLnN0YXQoZilbc3RhdC5TVF9NT0RFXQorICAgIHJldHVybiBtb2Rl
ICYgc3RhdC5TX0lXVVNSCisKK2RlZiBzZXBhcmF0ZV9maWxlcyhmbGlzdCk6CisgICAgZXhpc3Rp
bmcgPSBbXQorICAgIG1pc3NpbmcgPSBbXQorICAgIGZvciBmIGluIGZsaXN0OgorICAgICAgICBp
ZiBvcy5wYXRoLmV4aXN0cyhmKToKKyAgICAgICAgICAgIGV4aXN0aW5nLmFwcGVuZChmKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoZikKKyAgICByZXR1cm4gZXhp
c3RpbmcsIG1pc3NpbmcKKworaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgIGRlZiBfZmFpbGVk
KHNlbGYsIHN0YXR1cyA9IDApOgorICAgICAgICBpZiBzZWxmLnN0YXR1cyBpcyBOb25lIG9yIHN0
YXR1cyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIF9z
dGF0dXMoc2VsZikgIT0gc3RhdHVzCisgICAgZGVmIF9zdGF0dXMoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLnN0YXR1cworZWxpZiBvcy5uYW1lID09ICdudCc6CisgICAgZGVmIF9mYWlsZWQo
c2VsZiwgc3RhdHVzID0gMCk6CisgICAgICAgIHJldHVybiBub3QgKHNlbGYuc3RhdHVzIGlzIE5v
bmUgb3Igc3RhdHVzIGlzIE5vbmUpIGFuZCBcCisgICAgICAgICAgICAgICBzZWxmLnN0YXR1cyAh
PSBzdGF0dXMKKyAgICBkZWYgX3N0YXR1cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc3Rh
dHVzCisKK2NsYXNzIFRlc3RDb21tb24oVGVzdENtZCk6CisKKyAgICAjIEFkZGl0aW9uYWwgbWV0
aG9kcyBmcm9tIHRoZSBQZXJsIFRlc3Q6OkNtZDo6Q29tbW9uIG1vZHVsZQorICAgICMgdGhhdCB3
ZSBtYXkgd2lzaCB0byBhZGQgaW4gdGhlIGZ1dHVyZToKKyAgICAjCisgICAgIyAgJHRlc3QtPnN1
YmRpcignc3ViZGlyJywgLi4uKTsKKyAgICAjCisgICAgIyAgJHRlc3QtPmNvcHkoJ3NyY19maWxl
JywgJ2RzdF9maWxlJyk7CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiprdyk6CisgICAgICAg
ICIiIkluaXRpYWxpemUgYSBuZXcgVGVzdENvbW1vbiBpbnN0YW5jZS4gIFRoaXMgaW52b2x2ZXMg
anVzdAorICAgICAgICBjYWxsaW5nIHRoZSBiYXNlIGNsYXNzIGluaXRpYWxpemF0aW9uLCBhbmQg
dGhlbiBjaGFuZ2luZyBkaXJlY3RvcnkKKyAgICAgICAgdG8gdGhlIHdvcmtkaXIuCisgICAgICAg
ICIiIgorICAgICAgICBhcHBseShUZXN0Q21kLl9faW5pdF9fLCBbc2VsZl0sIGt3KQorICAgICAg
ICBvcy5jaGRpcihzZWxmLndvcmtkaXIpCisKKyAgICBkZWYgbXVzdF9iZV93cml0YWJsZShzZWxm
LCAqZmlsZXMpOgorICAgICAgICAiIiJFbnN1cmVzIHRoYXQgdGhlIHNwZWNpZmllZCBmaWxlKHMp
IGV4aXN0IGFuZCBhcmUgd3JpdGFibGUuCisgICAgICAgIEFuIGluZGl2aWR1YWwgZmlsZSBjYW4g
YmUgc3BlY2lmaWVkIGFzIGEgbGlzdCBvZiBkaXJlY3RvcnkgbmFtZXMsCisgICAgICAgIGluIHdo
aWNoIGNhc2UgdGhlIHBhdGhuYW1lIHdpbGwgYmUgY29uc3RydWN0ZWQgYnkgY29uY2F0ZW5hdGlu
ZworICAgICAgICB0aGVtLiAgRXhpdHMgRkFJTEVEIGlmIGFueSBvZiB0aGUgZmlsZXMgZG9lcyBu
b3QgZXhpc3Qgb3IgaXMKKyAgICAgICAgbm90IHdyaXRhYmxlLgorICAgICAgICAiIiIKKyAgICAg
ICAgZmlsZXMgPSBtYXAobGFtYmRhIHg6IGlzX0xpc3QoeCkgYW5kIGFwcGx5KG9zLnBhdGguam9p
biwgeCkgb3IgeCwgZmlsZXMpCisgICAgICAgIGV4aXN0aW5nLCBtaXNzaW5nID0gc2VwYXJhdGVf
ZmlsZXMoZmlsZXMpCisgICAgICAgIHVud3JpdGFibGUgPSBmaWx0ZXIobGFtYmRhIHgsIGl3PWlz
X3dyaXRhYmxlOiBub3QgaXcoeCksIGV4aXN0aW5nKQorICAgICAgICBpZiBtaXNzaW5nOgorICAg
ICAgICAgICAgcHJpbnQgIk1pc3NpbmcgZmlsZXM6IGAlcyciICUgc3RyaW5nLmpvaW4obWlzc2lu
ZywgIicsIGAiKQorICAgICAgICBpZiB1bndyaXRhYmxlOgorICAgICAgICAgICAgcHJpbnQgIlVu
d3JpdGFibGUgZmlsZXM6IGAlcyciICUgc3RyaW5nLmpvaW4odW53cml0YWJsZSwgIicsIGAiKQor
ICAgICAgICBzZWxmLmZhaWxfdGVzdChtaXNzaW5nICsgdW53cml0YWJsZSkKKworICAgIGRlZiBt
dXN0X2NvbnRhaW4oc2VsZiwgZmlsZSwgcmVxdWlyZWQsIG1vZGUgPSAncmInKToKKyAgICAgICAg
IiIiRW5zdXJlcyB0aGF0IHRoZSBzcGVjaWZpZWQgZmlsZSBjb250YWlucyB0aGUgcmVxdWlyZWQg
dGV4dC4KKyAgICAgICAgIiIiCisgICAgICAgIGZpbGVfY29udGVudHMgPSBzZWxmLnJlYWQoZmls
ZSwgbW9kZSkKKyAgICAgICAgY29udGFpbnMgPSAoc3RyaW5nLmZpbmQoZmlsZV9jb250ZW50cywg
cmVxdWlyZWQpICE9IC0xKQorICAgICAgICBpZiBub3QgY29udGFpbnM6CisgICAgICAgICAgICBw
cmludCAiRmlsZSBgJXMnIGRvZXMgbm90IGNvbnRhaW4gcmVxdWlyZWQgc3RyaW5nLiIgJSBmaWxl
CisgICAgICAgICAgICBwcmludCBzZWxmLmJhbm5lcignUmVxdWlyZWQgc3RyaW5nICcpCisgICAg
ICAgICAgICBwcmludCByZXF1aXJlZAorICAgICAgICAgICAgcHJpbnQgc2VsZi5iYW5uZXIoJyVz
IGNvbnRlbnRzICcgJSBmaWxlKQorICAgICAgICAgICAgcHJpbnQgZmlsZV9jb250ZW50cworICAg
ICAgICAgICAgc2VsZi5mYWlsX3Rlc3Qobm90IGNvbnRhaW5zKQorCisgICAgZGVmIG11c3RfY29u
dGFpbl9hbGxfbGluZXMoc2VsZiwgb3V0cHV0LCBsaW5lcywgdGl0bGU9Tm9uZSwgZmluZD1Ob25l
KToKKyAgICAgICAgIiIiRW5zdXJlcyB0aGF0IHRoZSBzcGVjaWZpZWQgb3V0cHV0IHN0cmluZyAo
Zmlyc3QgYXJndW1lbnQpCisgICAgICAgIGNvbnRhaW5zIGFsbCBvZiB0aGUgc3BlY2lmaWVkIGxp
bmVzIChzZWNvbmQgYXJndW1lbnQpLgorCisgICAgICAgIEFuIG9wdGlvbmFsIHRoaXJkIGFyZ3Vt
ZW50IGNhbiBiZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSB0eXBlCisgICAgICAgIG9mIG91dHB1dCBi
ZWluZyBzZWFyY2hlZCwgYW5kIG9ubHkgc2hvd3MgdXAgaW4gZmFpbHVyZSBvdXRwdXQuCisKKyAg
ICAgICAgQW4gb3B0aW9uYWwgZm91cnRoIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHN1cHBseSBh
IGRpZmZlcmVudAorICAgICAgICBmdW5jdGlvbiwgb2YgdGhlIGZvcm0gImZpbmQobGluZSwgb3V0
cHV0KSwgdG8gdXNlIHdoZW4gc2VhcmNoaW5nCisgICAgICAgIGZvciBsaW5lcyBpbiB0aGUgb3V0
cHV0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZmluZCBpcyBOb25lOgorICAgICAgICAgICAg
ZmluZCA9IGxhbWJkYSBvLCBsOiBzdHJpbmcuZmluZChvLCBsKSAhPSAtMQorICAgICAgICBtaXNz
aW5nID0gW10KKyAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICBpZiBub3Qg
ZmluZChvdXRwdXQsIGxpbmUpOgorICAgICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKGxpbmUp
CisKKyAgICAgICAgaWYgbWlzc2luZzoKKyAgICAgICAgICAgIGlmIHRpdGxlIGlzIE5vbmU6Cisg
ICAgICAgICAgICAgICAgdGl0bGUgPSAnb3V0cHV0JworICAgICAgICAgICAgc3lzLnN0ZG91dC53
cml0ZSgiTWlzc2luZyBleHBlY3RlZCBsaW5lcyBmcm9tICVzOlxuIiAlIHRpdGxlKQorICAgICAg
ICAgICAgZm9yIGxpbmUgaW4gbWlzc2luZzoKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0Lndy
aXRlKCcgICAgJyArIHJlcHIobGluZSkgKyAnXG4nKQorICAgICAgICAgICAgc3lzLnN0ZG91dC53
cml0ZShzZWxmLmJhbm5lcih0aXRsZSArICcgJykpCisgICAgICAgICAgICBzeXMuc3Rkb3V0Lndy
aXRlKG91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuZmFpbF90ZXN0KCkKKworICAgIGRlZiBtdXN0
X2NvbnRhaW5fYW55X2xpbmUoc2VsZiwgb3V0cHV0LCBsaW5lcywgdGl0bGU9Tm9uZSwgZmluZD1O
b25lKToKKyAgICAgICAgIiIiRW5zdXJlcyB0aGF0IHRoZSBzcGVjaWZpZWQgb3V0cHV0IHN0cmlu
ZyAoZmlyc3QgYXJndW1lbnQpCisgICAgICAgIGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBvZiB0aGUg
c3BlY2lmaWVkIGxpbmVzIChzZWNvbmQgYXJndW1lbnQpLgorCisgICAgICAgIEFuIG9wdGlvbmFs
IHRoaXJkIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSB0eXBlCisgICAgICAg
IG9mIG91dHB1dCBiZWluZyBzZWFyY2hlZCwgYW5kIG9ubHkgc2hvd3MgdXAgaW4gZmFpbHVyZSBv
dXRwdXQuCisKKyAgICAgICAgQW4gb3B0aW9uYWwgZm91cnRoIGFyZ3VtZW50IGNhbiBiZSB1c2Vk
IHRvIHN1cHBseSBhIGRpZmZlcmVudAorICAgICAgICBmdW5jdGlvbiwgb2YgdGhlIGZvcm0gImZp
bmQobGluZSwgb3V0cHV0KSwgdG8gdXNlIHdoZW4gc2VhcmNoaW5nCisgICAgICAgIGZvciBsaW5l
cyBpbiB0aGUgb3V0cHV0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZmluZCBpcyBOb25lOgor
ICAgICAgICAgICAgZmluZCA9IGxhbWJkYSBvLCBsOiBzdHJpbmcuZmluZChvLCBsKSAhPSAtMQor
ICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgIGlmIGZpbmQob3V0cHV0LCBs
aW5lKToKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiB0aXRsZSBpcyBOb25l
OgorICAgICAgICAgICAgdGl0bGUgPSAnb3V0cHV0JworICAgICAgICBzeXMuc3Rkb3V0LndyaXRl
KCJNaXNzaW5nIGFueSBleHBlY3RlZCBsaW5lIGZyb20gJXM6XG4iICUgdGl0bGUpCisgICAgICAg
IGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnICAgICcg
KyByZXByKGxpbmUpICsgJ1xuJykKKyAgICAgICAgc3lzLnN0ZG91dC53cml0ZShzZWxmLmJhbm5l
cih0aXRsZSArICcgJykpCisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUob3V0cHV0KQorICAgICAg
ICBzZWxmLmZhaWxfdGVzdCgpCisKKyAgICBkZWYgbXVzdF9jb250YWluX2xpbmVzKHNlbGYsIGxp
bmVzLCBvdXRwdXQsIHRpdGxlPU5vbmUpOgorICAgICAgICAjIERlcHJlY2F0ZWQ7IHJldGFpbiBm
b3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisgICAgICAgIHJldHVybiBzZWxmLm11c3RfY29u
dGFpbl9hbGxfbGluZXMob3V0cHV0LCBsaW5lcywgdGl0bGUpCisKKyAgICBkZWYgbXVzdF9leGlz
dChzZWxmLCAqZmlsZXMpOgorICAgICAgICAiIiJFbnN1cmVzIHRoYXQgdGhlIHNwZWNpZmllZCBm
aWxlKHMpIG11c3QgZXhpc3QuICBBbiBpbmRpdmlkdWFsCisgICAgICAgIGZpbGUgYmUgc3BlY2lm
aWVkIGFzIGEgbGlzdCBvZiBkaXJlY3RvcnkgbmFtZXMsIGluIHdoaWNoIGNhc2UgdGhlCisgICAg
ICAgIHBhdGhuYW1lIHdpbGwgYmUgY29uc3RydWN0ZWQgYnkgY29uY2F0ZW5hdGluZyB0aGVtLiAg
RXhpdHMgRkFJTEVECisgICAgICAgIGlmIGFueSBvZiB0aGUgZmlsZXMgZG9lcyBub3QgZXhpc3Qu
CisgICAgICAgICIiIgorICAgICAgICBmaWxlcyA9IG1hcChsYW1iZGEgeDogaXNfTGlzdCh4KSBh
bmQgYXBwbHkob3MucGF0aC5qb2luLCB4KSBvciB4LCBmaWxlcykKKyAgICAgICAgbWlzc2luZyA9
IGZpbHRlcihsYW1iZGEgeDogbm90IG9zLnBhdGguZXhpc3RzKHgpLCBmaWxlcykKKyAgICAgICAg
aWYgbWlzc2luZzoKKyAgICAgICAgICAgIHByaW50ICJNaXNzaW5nIGZpbGVzOiBgJXMnIiAlIHN0
cmluZy5qb2luKG1pc3NpbmcsICInLCBgIikKKyAgICAgICAgICAgIHNlbGYuZmFpbF90ZXN0KG1p
c3NpbmcpCisKKyAgICBkZWYgbXVzdF9tYXRjaChzZWxmLCBmaWxlLCBleHBlY3QsIG1vZGUgPSAn
cmInKToKKyAgICAgICAgIiIiTWF0Y2hlcyB0aGUgY29udGVudHMgb2YgdGhlIHNwZWNpZmllZCBm
aWxlIChmaXJzdCBhcmd1bWVudCkKKyAgICAgICAgYWdhaW5zdCB0aGUgZXhwZWN0ZWQgY29udGVu
dHMgKHNlY29uZCBhcmd1bWVudCkuICBUaGUgZXhwZWN0ZWQKKyAgICAgICAgY29udGVudHMgYXJl
IGEgbGlzdCBvZiBsaW5lcyBvciBhIHN0cmluZyB3aGljaCB3aWxsIGJlIHNwbGl0CisgICAgICAg
IG9uIG5ld2xpbmVzLgorICAgICAgICAiIiIKKyAgICAgICAgZmlsZV9jb250ZW50cyA9IHNlbGYu
cmVhZChmaWxlLCBtb2RlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmZhaWxfdGVz
dChub3Qgc2VsZi5tYXRjaChmaWxlX2NvbnRlbnRzLCBleHBlY3QpKQorICAgICAgICBleGNlcHQg
S2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQ6Cisg
ICAgICAgICAgICBwcmludCAiVW5leHBlY3RlZCBjb250ZW50cyBvZiBgJXMnIiAlIGZpbGUKKyAg
ICAgICAgICAgIHNlbGYuZGlmZihleHBlY3QsIGZpbGVfY29udGVudHMsICdjb250ZW50cyAnKQor
ICAgICAgICAgICAgcmFpc2UKKworICAgIGRlZiBtdXN0X25vdF9jb250YWluKHNlbGYsIGZpbGUs
IGJhbm5lZCwgbW9kZSA9ICdyYicpOgorICAgICAgICAiIiJFbnN1cmVzIHRoYXQgdGhlIHNwZWNp
ZmllZCBmaWxlIGRvZXNuJ3QgY29udGFpbiB0aGUgYmFubmVkIHRleHQuCisgICAgICAgICIiIgor
ICAgICAgICBmaWxlX2NvbnRlbnRzID0gc2VsZi5yZWFkKGZpbGUsIG1vZGUpCisgICAgICAgIGNv
bnRhaW5zID0gKHN0cmluZy5maW5kKGZpbGVfY29udGVudHMsIGJhbm5lZCkgIT0gLTEpCisgICAg
ICAgIGlmIGNvbnRhaW5zOgorICAgICAgICAgICAgcHJpbnQgIkZpbGUgYCVzJyBjb250YWlucyBi
YW5uZWQgc3RyaW5nLiIgJSBmaWxlCisgICAgICAgICAgICBwcmludCBzZWxmLmJhbm5lcignQmFu
bmVkIHN0cmluZyAnKQorICAgICAgICAgICAgcHJpbnQgYmFubmVkCisgICAgICAgICAgICBwcmlu
dCBzZWxmLmJhbm5lcignJXMgY29udGVudHMgJyAlIGZpbGUpCisgICAgICAgICAgICBwcmludCBm
aWxlX2NvbnRlbnRzCisgICAgICAgICAgICBzZWxmLmZhaWxfdGVzdChjb250YWlucykKKworICAg
IGRlZiBtdXN0X25vdF9jb250YWluX2FueV9saW5lKHNlbGYsIG91dHB1dCwgbGluZXMsIHRpdGxl
PU5vbmUsIGZpbmQ9Tm9uZSk6CisgICAgICAgICIiIkVuc3VyZXMgdGhhdCB0aGUgc3BlY2lmaWVk
IG91dHB1dCBzdHJpbmcgKGZpcnN0IGFyZ3VtZW50KQorICAgICAgICBkb2VzIG5vdCBjb250YWlu
IGFueSBvZiB0aGUgc3BlY2lmaWVkIGxpbmVzIChzZWNvbmQgYXJndW1lbnQpLgorCisgICAgICAg
IEFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSB0
eXBlCisgICAgICAgIG9mIG91dHB1dCBiZWluZyBzZWFyY2hlZCwgYW5kIG9ubHkgc2hvd3MgdXAg
aW4gZmFpbHVyZSBvdXRwdXQuCisKKyAgICAgICAgQW4gb3B0aW9uYWwgZm91cnRoIGFyZ3VtZW50
IGNhbiBiZSB1c2VkIHRvIHN1cHBseSBhIGRpZmZlcmVudAorICAgICAgICBmdW5jdGlvbiwgb2Yg
dGhlIGZvcm0gImZpbmQobGluZSwgb3V0cHV0KSwgdG8gdXNlIHdoZW4gc2VhcmNoaW5nCisgICAg
ICAgIGZvciBsaW5lcyBpbiB0aGUgb3V0cHV0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZmlu
ZCBpcyBOb25lOgorICAgICAgICAgICAgZmluZCA9IGxhbWJkYSBvLCBsOiBzdHJpbmcuZmluZChv
LCBsKSAhPSAtMQorICAgICAgICB1bmV4cGVjdGVkID0gW10KKyAgICAgICAgZm9yIGxpbmUgaW4g
bGluZXM6CisgICAgICAgICAgICBpZiBmaW5kKG91dHB1dCwgbGluZSk6CisgICAgICAgICAgICAg
ICAgdW5leHBlY3RlZC5hcHBlbmQobGluZSkKKworICAgICAgICBpZiB1bmV4cGVjdGVkOgorICAg
ICAgICAgICAgaWYgdGl0bGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0aXRsZSA9ICdvdXRw
dXQnCisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJVbmV4cGVjdGVkIGxpbmVzIGluICVz
OlxuIiAlIHRpdGxlKQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gdW5leHBlY3RlZDoKKyAgICAg
ICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcgICAgJyArIHJlcHIobGluZSkgKyAnXG4nKQor
ICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShzZWxmLmJhbm5lcih0aXRsZSArICcgJykpCisg
ICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKG91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuZmFp
bF90ZXN0KCkKKworICAgIGRlZiBtdXN0X25vdF9jb250YWluX2xpbmVzKHNlbGYsIGxpbmVzLCBv
dXRwdXQsIHRpdGxlPU5vbmUpOgorICAgICAgICByZXR1cm4gc2VsZi5tdXN0X25vdF9jb250YWlu
X2FueV9saW5lKG91dHB1dCwgbGluZXMsIHRpdGxlKQorCisgICAgZGVmIG11c3Rfbm90X2V4aXN0
KHNlbGYsICpmaWxlcyk6CisgICAgICAgICIiIkVuc3VyZXMgdGhhdCB0aGUgc3BlY2lmaWVkIGZp
bGUocykgbXVzdCBub3QgZXhpc3QuCisgICAgICAgIEFuIGluZGl2aWR1YWwgZmlsZSBiZSBzcGVj
aWZpZWQgYXMgYSBsaXN0IG9mIGRpcmVjdG9yeSBuYW1lcywgaW4KKyAgICAgICAgd2hpY2ggY2Fz
ZSB0aGUgcGF0aG5hbWUgd2lsbCBiZSBjb25zdHJ1Y3RlZCBieSBjb25jYXRlbmF0aW5nIHRoZW0u
CisgICAgICAgIEV4aXRzIEZBSUxFRCBpZiBhbnkgb2YgdGhlIGZpbGVzIGV4aXN0cy4KKyAgICAg
ICAgIiIiCisgICAgICAgIGZpbGVzID0gbWFwKGxhbWJkYSB4OiBpc19MaXN0KHgpIGFuZCBhcHBs
eShvcy5wYXRoLmpvaW4sIHgpIG9yIHgsIGZpbGVzKQorICAgICAgICBleGlzdGluZyA9IGZpbHRl
cihvcy5wYXRoLmV4aXN0cywgZmlsZXMpCisgICAgICAgIGlmIGV4aXN0aW5nOgorICAgICAgICAg
ICAgcHJpbnQgIlVuZXhwZWN0ZWQgZmlsZXMgZXhpc3Q6IGAlcyciICUgc3RyaW5nLmpvaW4oZXhp
c3RpbmcsICInLCBgIikKKyAgICAgICAgICAgIHNlbGYuZmFpbF90ZXN0KGV4aXN0aW5nKQorCisK
KyAgICBkZWYgbXVzdF9ub3RfYmVfd3JpdGFibGUoc2VsZiwgKmZpbGVzKToKKyAgICAgICAgIiIi
RW5zdXJlcyB0aGF0IHRoZSBzcGVjaWZpZWQgZmlsZShzKSBleGlzdCBhbmQgYXJlIG5vdCB3cml0
YWJsZS4KKyAgICAgICAgQW4gaW5kaXZpZHVhbCBmaWxlIGNhbiBiZSBzcGVjaWZpZWQgYXMgYSBs
aXN0IG9mIGRpcmVjdG9yeSBuYW1lcywKKyAgICAgICAgaW4gd2hpY2ggY2FzZSB0aGUgcGF0aG5h
bWUgd2lsbCBiZSBjb25zdHJ1Y3RlZCBieSBjb25jYXRlbmF0aW5nCisgICAgICAgIHRoZW0uICBF
eGl0cyBGQUlMRUQgaWYgYW55IG9mIHRoZSBmaWxlcyBkb2VzIG5vdCBleGlzdCBvciBpcworICAg
ICAgICB3cml0YWJsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGZpbGVzID0gbWFwKGxhbWJkYSB4
OiBpc19MaXN0KHgpIGFuZCBhcHBseShvcy5wYXRoLmpvaW4sIHgpIG9yIHgsIGZpbGVzKQorICAg
ICAgICBleGlzdGluZywgbWlzc2luZyA9IHNlcGFyYXRlX2ZpbGVzKGZpbGVzKQorICAgICAgICB3
cml0YWJsZSA9IGZpbHRlcihpc193cml0YWJsZSwgZXhpc3RpbmcpCisgICAgICAgIGlmIG1pc3Np
bmc6CisgICAgICAgICAgICBwcmludCAiTWlzc2luZyBmaWxlczogYCVzJyIgJSBzdHJpbmcuam9p
bihtaXNzaW5nLCAiJywgYCIpCisgICAgICAgIGlmIHdyaXRhYmxlOgorICAgICAgICAgICAgcHJp
bnQgIldyaXRhYmxlIGZpbGVzOiBgJXMnIiAlIHN0cmluZy5qb2luKHdyaXRhYmxlLCAiJywgYCIp
CisgICAgICAgIHNlbGYuZmFpbF90ZXN0KG1pc3NpbmcgKyB3cml0YWJsZSkKKworICAgIGRlZiBf
Y29tcGxldGUoc2VsZiwgYWN0dWFsX3N0ZG91dCwgZXhwZWN0ZWRfc3Rkb3V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgYWN0dWFsX3N0ZGVyciwgZXhwZWN0ZWRfc3RkZXJyLCBzdGF0dXMsIG1h
dGNoKToKKyAgICAgICAgIiIiCisgICAgICAgIFBvc3QtcHJvY2Vzc2VzIHJ1bm5pbmcgYSBzdWJj
b21tYW5kLCBjaGVja2luZyBmb3IgZmFpbHVyZQorICAgICAgICBzdGF0dXMgYW5kIGRpc3BsYXlp
bmcgb3V0cHV0IGFwcHJvcHJpYXRlbHkuCisgICAgICAgICIiIgorICAgICAgICBpZiBfZmFpbGVk
KHNlbGYsIHN0YXR1cyk6CisgICAgICAgICAgICBleHBlY3QgPSAnJworICAgICAgICAgICAgaWYg
c3RhdHVzICE9IDA6CisgICAgICAgICAgICAgICAgZXhwZWN0ID0gIiAoZXhwZWN0ZWQgJXMpIiAl
IHN0cihzdGF0dXMpCisgICAgICAgICAgICBwcmludCAiJXMgcmV0dXJuZWQgJXMlcyIgJSAoc2Vs
Zi5wcm9ncmFtLCBzdHIoX3N0YXR1cyhzZWxmKSksIGV4cGVjdCkKKyAgICAgICAgICAgIHByaW50
IHNlbGYuYmFubmVyKCdTVERPVVQgJykKKyAgICAgICAgICAgIHByaW50IGFjdHVhbF9zdGRvdXQK
KyAgICAgICAgICAgIHByaW50IHNlbGYuYmFubmVyKCdTVERFUlIgJykKKyAgICAgICAgICAgIHBy
aW50IGFjdHVhbF9zdGRlcnIKKyAgICAgICAgICAgIHNlbGYuZmFpbF90ZXN0KCkKKyAgICAgICAg
aWYgbm90IGV4cGVjdGVkX3N0ZG91dCBpcyBOb25lIGFuZCBub3QgbWF0Y2goYWN0dWFsX3N0ZG91
dCwgZXhwZWN0ZWRfc3Rkb3V0KToKKyAgICAgICAgICAgIHNlbGYuZGlmZihleHBlY3RlZF9zdGRv
dXQsIGFjdHVhbF9zdGRvdXQsICdTVERPVVQgJykKKyAgICAgICAgICAgIGlmIGFjdHVhbF9zdGRl
cnI6CisgICAgICAgICAgICAgICAgcHJpbnQgc2VsZi5iYW5uZXIoJ1NUREVSUiAnKQorICAgICAg
ICAgICAgICAgIHByaW50IGFjdHVhbF9zdGRlcnIKKyAgICAgICAgICAgIHNlbGYuZmFpbF90ZXN0
KCkKKyAgICAgICAgaWYgbm90IGV4cGVjdGVkX3N0ZGVyciBpcyBOb25lIGFuZCBub3QgbWF0Y2go
YWN0dWFsX3N0ZGVyciwgZXhwZWN0ZWRfc3RkZXJyKToKKyAgICAgICAgICAgIHByaW50IHNlbGYu
YmFubmVyKCdTVERPVVQgJykKKyAgICAgICAgICAgIHByaW50IGFjdHVhbF9zdGRvdXQKKyAgICAg
ICAgICAgIHNlbGYuZGlmZihleHBlY3RlZF9zdGRlcnIsIGFjdHVhbF9zdGRlcnIsICdTVERFUlIg
JykKKyAgICAgICAgICAgIHNlbGYuZmFpbF90ZXN0KCkKKworICAgIGRlZiBzdGFydChzZWxmLCBw
cm9ncmFtID0gTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXIgPSBOb25lLAor
ICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgPSBOb25lLAorICAgICAgICAgICAgICAgICAg
ICB1bml2ZXJzYWxfbmV3bGluZXMgPSBOb25lLAorICAgICAgICAgICAgICAgICAgICAqKmt3KToK
KyAgICAgICAgIiIiCisgICAgICAgIFN0YXJ0cyBhIHByb2dyYW0gb3Igc2NyaXB0IGZvciB0aGUg
dGVzdCBlbnZpcm9ubWVudC4KKworICAgICAgICBUaGlzIGhhbmRsZXMgdGhlICJvcHRpb25zIiBr
ZXl3b3JkIGFyZ3VtZW50IGFuZCBleGNlcHRpb25zLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgb3B0aW9ucyA9IGt3WydvcHRpb25zJ10KKyAgICAgICAgICAgIGRlbCBr
d1snb3B0aW9ucyddCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHBhc3MK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIG9wdGlvbnM6CisgICAgICAgICAgICAgICAg
aWYgYXJndW1lbnRzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyA9IG9w
dGlvbnMKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBhcmd1bWVu
dHMgPSBvcHRpb25zICsgIiAiICsgYXJndW1lbnRzCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IHJldHVybiBhcHBseShUZXN0Q21kLnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgIChz
ZWxmLCBwcm9ncmFtLCBpbnRlcnByZXRlciwgYXJndW1lbnRzLCB1bml2ZXJzYWxfbmV3bGluZXMp
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGt3KQorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJ
bnRlcnJ1cHQ6CisgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBl
OgorICAgICAgICAgICAgcHJpbnQgc2VsZi5iYW5uZXIoJ1NURE9VVCAnKQorICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgIHByaW50IHNlbGYuc3Rkb3V0KCkKKyAgICAgICAgICAgIGV4
Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHByaW50
IHNlbGYuYmFubmVyKCdTVERFUlIgJykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg
ICBwcmludCBzZWxmLnN0ZGVycigpCisgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAg
ICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBjbWRfYXJncyA9IHNlbGYuY29tbWFuZF9h
cmdzKHByb2dyYW0sIGludGVycHJldGVyLCBhcmd1bWVudHMpCisgICAgICAgICAgICBzeXMuc3Rk
ZXJyLndyaXRlKCdFeGNlcHRpb24gdHJ5aW5nIHRvIGV4ZWN1dGU6ICVzXG4nICUgY21kX2FyZ3Mp
CisgICAgICAgICAgICByYWlzZSBlCisKKyAgICBkZWYgZmluaXNoKHNlbGYsIHBvcGVuLCBzdGRv
dXQgPSBOb25lLCBzdGRlcnIgPSAnJywgc3RhdHVzID0gMCwgKiprdyk6CisgICAgICAgICIiIgor
ICAgICAgICBGaW5pc2hlcyBhbmQgd2FpdHMgZm9yIHRoZSBwcm9jZXNzIGJlaW5nIHJ1biB1bmRl
ciBjb250cm9sIG9mCisgICAgICAgIHRoZSBzcGVjaWZpZWQgcG9wZW4gYXJndW1lbnQuICBBZGRp
dGlvbmFsIGFyZ3VtZW50cyBhcmUgc2ltaWxhcgorICAgICAgICB0byB0aG9zZSBvZiB0aGUgcnVu
KCkgbWV0aG9kOgorCisgICAgICAgICAgICAgICAgc3Rkb3V0ICBUaGUgZXhwZWN0ZWQgc3RhbmRh
cmQgb3V0cHV0IGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21tYW5kLiAgQSB2
YWx1ZSBvZiBOb25lIG1lYW5zCisgICAgICAgICAgICAgICAgICAgICAgICBkb24ndCB0ZXN0IHN0
YW5kYXJkIG91dHB1dC4KKworICAgICAgICAgICAgICAgIHN0ZGVyciAgVGhlIGV4cGVjdGVkIGVy
cm9yIG91dHB1dCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29tbWFuZC4gIEEg
dmFsdWUgb2YgTm9uZSBtZWFucworICAgICAgICAgICAgICAgICAgICAgICAgZG9uJ3QgdGVzdCBl
cnJvciBvdXRwdXQuCisKKyAgICAgICAgICAgICAgICBzdGF0dXMgIFRoZSBleHBlY3RlZCBleGl0
IHN0YXR1cyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZC4gIEEgdmFs
dWUgb2YgTm9uZSBtZWFucyBkb24ndAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCBleGl0
IHN0YXR1cy4KKyAgICAgICAgIiIiCisgICAgICAgIGFwcGx5KFRlc3RDbWQuZmluaXNoLCAoc2Vs
ZiwgcG9wZW4sKSwga3cpCisgICAgICAgIG1hdGNoID0ga3cuZ2V0KCdtYXRjaCcsIHNlbGYubWF0
Y2gpCisgICAgICAgIHNlbGYuX2NvbXBsZXRlKHNlbGYuc3Rkb3V0KCksIHN0ZG91dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIoKSwgc3RkZXJyLCBzdGF0dXMsIG1hdGNoKQor
CisgICAgZGVmIHJ1bihzZWxmLCBvcHRpb25zID0gTm9uZSwgYXJndW1lbnRzID0gTm9uZSwKKyAg
ICAgICAgICAgICAgICAgIHN0ZG91dCA9IE5vbmUsIHN0ZGVyciA9ICcnLCBzdGF0dXMgPSAwLCAq
Kmt3KToKKyAgICAgICAgIiIiUnVucyB0aGUgcHJvZ3JhbSB1bmRlciB0ZXN0LCBjaGVja2luZyB0
aGF0IHRoZSB0ZXN0IHN1Y2NlZWRlZC4KKworICAgICAgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUg
c2FtZSBhcyB0aGUgYmFzZSBUZXN0Q21kLnJ1bigpIG1ldGhvZCwKKyAgICAgICAgd2l0aCB0aGUg
YWRkaXRpb24gb2Y6CisKKyAgICAgICAgICAgICAgICBvcHRpb25zIEV4dHJhIG9wdGlvbnMgdGhh
dCBnZXQgYXBwZW5kZWQgdG8gdGhlIGJlZ2lubmluZworICAgICAgICAgICAgICAgICAgICAgICAg
b2YgdGhlIGFyZ3VtZW50cy4KKworICAgICAgICAgICAgICAgIHN0ZG91dCAgVGhlIGV4cGVjdGVk
IHN0YW5kYXJkIG91dHB1dCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29tbWFu
ZC4gIEEgdmFsdWUgb2YgTm9uZSBtZWFucworICAgICAgICAgICAgICAgICAgICAgICAgZG9uJ3Qg
dGVzdCBzdGFuZGFyZCBvdXRwdXQuCisKKyAgICAgICAgICAgICAgICBzdGRlcnIgIFRoZSBleHBl
Y3RlZCBlcnJvciBvdXRwdXQgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbW1h
bmQuICBBIHZhbHVlIG9mIE5vbmUgbWVhbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbid0
IHRlc3QgZXJyb3Igb3V0cHV0LgorCisgICAgICAgICAgICAgICAgc3RhdHVzICBUaGUgZXhwZWN0
ZWQgZXhpdCBzdGF0dXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQu
ICBBIHZhbHVlIG9mIE5vbmUgbWVhbnMgZG9uJ3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3QgZXhpdCBzdGF0dXMuCisKKyAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyBleHBlY3RzIGEgc3Vj
Y2Vzc2Z1bCBleGl0IChzdGF0dXMgPSAwKSwgZG9lcworICAgICAgICBub3QgdGVzdCBzdGFuZGFy
ZCBvdXRwdXQgKHN0ZG91dCA9IE5vbmUpLCBhbmQgZXhwZWN0cyB0aGF0IGVycm9yCisgICAgICAg
IG91dHB1dCBpcyBlbXB0eSAoc3RkZXJyID0gIiIpLgorICAgICAgICAiIiIKKyAgICAgICAgaWYg
b3B0aW9uczoKKyAgICAgICAgICAgIGlmIGFyZ3VtZW50cyBpcyBOb25lOgorICAgICAgICAgICAg
ICAgIGFyZ3VtZW50cyA9IG9wdGlvbnMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgYXJndW1lbnRzID0gb3B0aW9ucyArICIgIiArIGFyZ3VtZW50cworICAgICAgICBrd1snYXJn
dW1lbnRzJ10gPSBhcmd1bWVudHMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbWF0Y2ggPSBr
d1snbWF0Y2gnXQorICAgICAgICAgICAgZGVsIGt3WydtYXRjaCddCisgICAgICAgIGV4Y2VwdCBL
ZXlFcnJvcjoKKyAgICAgICAgICAgIG1hdGNoID0gc2VsZi5tYXRjaAorICAgICAgICBhcHBseShU
ZXN0Q21kLnJ1biwgW3NlbGZdLCBrdykKKyAgICAgICAgc2VsZi5fY29tcGxldGUoc2VsZi5zdGRv
dXQoKSwgc3Rkb3V0LAorICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVycigpLCBzdGRl
cnIsIHN0YXR1cywgbWF0Y2gpCisKKyAgICBkZWYgc2tpcF90ZXN0KHNlbGYsIG1lc3NhZ2U9IlNr
aXBwaW5nIHRlc3QuXG4iKToKKyAgICAgICAgIiIiU2tpcHMgYSB0ZXN0LgorCisgICAgICAgIFBy
b3BlciB0ZXN0LXNraXBwaW5nIGJlaGF2aW9yIGlzIGRlcGVuZGVudCBvbiB0aGUgZXh0ZXJuYWwK
KyAgICAgICAgVEVTVENPTU1PTl9QQVNTX1NLSVBTIGVudmlyb25tZW50IHZhcmlhYmxlLiAgSWYg
c2V0LCB3ZSB0cmVhdAorICAgICAgICB0aGUgc2tpcCBhcyBhIFBBU1MgKGV4aXQgMCksIGFuZCBv
dGhlcndpc2UgdHJlYXQgaXQgYXMgTk8gUkVTVUxULgorICAgICAgICBJbiBlaXRoZXIgY2FzZSwg
d2UgcHJpbnQgdGhlIHNwZWNpZmllZCBtZXNzYWdlIGFzIGFuIGluZGljYXRpb24KKyAgICAgICAg
dGhhdCB0aGUgc3Vic3RhbmNlIG9mIHRoZSB0ZXN0IHdhcyBza2lwcGVkLgorCisgICAgICAgIChU
aGlzIHdhcyBvcmlnaW5hbGx5IGFkZGVkIHRvIHN1cHBvcnQgZGV2ZWxvcG1lbnQgdW5kZXIgQWVn
aXMuCisgICAgICAgIFRlY2huaWNhbGx5LCBza2lwcGluZyBhIHRlc3QgaXMgYSBOTyBSRVNVTFQs
IGJ1dCBBZWdpcyB3b3VsZAorICAgICAgICB0cmVhdCB0aGF0IGFzIGEgdGVzdCBmYWlsdXJlIGFu
ZCBwcmV2ZW50IHRoZSBjaGFuZ2UgZnJvbSBnb2luZyB0bworICAgICAgICB0aGUgbmV4dCBzdGVw
LiAgU2luY2Ugd2UgZGRuJ3Qgd2FudCB0byBmb3JjZSBhbnlvbmUgdXNpbmcgQWVnaXMKKyAgICAg
ICAgdG8gaGF2ZSB0byBpbnN0YWxsIGFic29sdXRlbHkgZXZlcnkgdG9vbCB1c2VkIGJ5IHRoZSB0
ZXN0cywgd2UKKyAgICAgICAgd291bGQgYWN0dWFsbHkgcmVwb3J0IHRvIEFlZ2lzIHRoYXQgYSBz
a2lwcGVkIHRlc3QgaGFzIFBBU1NFRAorICAgICAgICBzbyB0aGF0IHRoZSB3b3JrZmxvdyBpc24n
dCBoZWxkIHVwLikKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG1lc3NhZ2U6CisgICAgICAgICAg
ICBzeXMuc3Rkb3V0LndyaXRlKG1lc3NhZ2UpCisgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNo
KCkKKyAgICAgICAgcGFzc19za2lwcyA9IG9zLmVudmlyb24uZ2V0KCdURVNUQ09NTU9OX1BBU1Nf
U0tJUFMnKQorICAgICAgICBpZiBwYXNzX3NraXBzIGluIFtOb25lLCAwLCAnMCddOgorICAgICAg
ICAgICAgIyBza2lwPTEgbWVhbnMgc2tpcCB0aGlzIGZ1bmN0aW9uIHdoZW4gc2hvd2luZyB3aGVy
ZSB0aGlzCisgICAgICAgICAgICAjIHJlc3VsdCBjYW1lIGZyb20uICBUaGV5IG9ubHkgY2FyZSBh
Ym91dCB0aGUgbGluZSB3aGVyZSB0aGUKKyAgICAgICAgICAgICMgc2NyaXB0IGNhbGxlZCB0ZXN0
LnNraXBfdGVzdCgpLCBub3QgdGhlIGxpbmUgbnVtYmVyIHdoZXJlCisgICAgICAgICAgICAjIHdl
IGNhbGwgdGVzdC5ub19yZXN1bHQoKS4KKyAgICAgICAgICAgIHNlbGYubm9fcmVzdWx0KHNraXA9
MSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgV2UncmUgdW5kZXIgdGhlIGRldmVsb3Bt
ZW50IGRpcmVjdG9yeSBmb3IgdGhpcyBjaGFuZ2UsCisgICAgICAgICAgICAjIHNvIHRoaXMgaXMg
YW4gQWVnaXMgaW52b2NhdGlvbjsgcGFzcyB0aGUgdGVzdCAoZXhpdCAwKS4KKyAgICAgICAgICAg
IHNlbGYucGFzc190ZXN0KCkKKworIyBMb2NhbCBWYXJpYWJsZXM6CisjIHRhYi13aWR0aDo0Cisj
IGluZGVudC10YWJzLW1vZGU6bmlsCisjIEVuZDoKKyMgdmltOiBzZXQgZXhwYW5kdGFiIHRhYnN0
b3A9NCBzaGlmdHdpZHRoPTQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9saWIvVGVzdEd5cC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpYi9UZXN0R3lw
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzMjI4ZDJmYTYyODBmM2RmODg5NTFhMDdmYTcxMDZlNzc3NWQxYzkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9saWIvVGVzdEd5
cC5weQpAQCAtMCwwICsxLDcyNCBAQAorIyEvdXNyL2Jpbi9weXRob24KKworIyBDb3B5cmlnaHQg
KGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1Rlc3RHeXAucHk6ICBhIHRl
c3RpbmcgZnJhbWV3b3JrIGZvciBHWVAgaW50ZWdyYXRpb24gdGVzdHMuCisiIiIKKworaW1wb3J0
IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdGF0CitpbXBvcnQgc3lzCisK
K2ltcG9ydCBUZXN0Q29tbW9uCitmcm9tIFRlc3RDb21tb24gaW1wb3J0IF9fYWxsX18KKworX19h
bGxfXy5leHRlbmQoWworICAnVGVzdEd5cCcsCitdKQorCisKK2NsYXNzIFRlc3RHeXBCYXNlKFRl
c3RDb21tb24uVGVzdENvbW1vbik6CisgICIiIgorICBDbGFzcyBmb3IgY29udHJvbGxpbmcgZW5k
LXRvLWVuZCB0ZXN0cyBvZiBneXAgZ2VuZXJhdG9ycy4KKworICBJbnN0YW50aWF0aW5nIHRoaXMg
Y2xhc3Mgd2lsbCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGFuZAorICBhcnJhbmdlIGZv
ciBpdHMgZGVzdHJ1Y3Rpb24gKHZpYSB0aGUgVGVzdENtZCBzdXBlcmNsYXNzKSBhbmQKKyAgY29w
eSBhbGwgb2YgdGhlIG5vbi1neXB0ZXN0IGZpbGVzIGluIHRoZSBkaXJlY3RvcnkgaGllcmFyY2h5
IG9mIHRoZQorICBleGVjdXRpbmcgc2NyaXB0LgorCisgIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGlz
IHRvIHRlc3QgdGhlICdneXAnIG9yICdneXAuYmF0JyBmaWxlIGluIHRoZQorICBjdXJyZW50IGRp
cmVjdG9yeS4gIEFuIGFsdGVybmF0aXZlIG1heSBiZSBzcGVjaWZpZWQgZXhwbGljaXRseSBvbgor
ICBpbnN0YW50aWF0aW9uLCBvciBieSBzZXR0aW5nIHRoZSBURVNUR1lQX0dZUCBlbnZpcm9ubWVu
dCB2YXJpYWJsZS4KKworICBUaGlzIGNsYXNzIHNob3VsZCBiZSBzdWJjbGFzc2VkIGZvciBlYWNo
IHN1cHBvcnRlZCBneXAgZ2VuZXJhdG9yCisgIChmb3JtYXQpLiAgVmFyaW91cyBhYnN0cmFjdCBt
ZXRob2RzIGJlbG93IGRlZmluZSBjYWxsaW5nIHNpZ25hdHVyZXMKKyAgdXNlZCBieSB0aGUgdGVz
dCBzY3JpcHRzIHRvIGludm9rZSBidWlsZHMgb24gdGhlIGdlbmVyYXRlZCBidWlsZAorICBjb25m
aWd1cmF0aW9uIGFuZCB0byBydW4gZXhlY3V0YWJsZXMgZ2VuZXJhdGVkIGJ5IHRob3NlIGJ1aWxk
cy4KKyAgIiIiCisKKyAgYnVpbGRfdG9vbCA9IE5vbmUKKyAgYnVpbGRfdG9vbF9saXN0ID0gW10K
KworICBfZXhlID0gVGVzdENvbW1vbi5leGVfc3VmZml4CisgIF9vYmogPSBUZXN0Q29tbW9uLm9i
al9zdWZmaXgKKyAgc2hvYmpfID0gVGVzdENvbW1vbi5zaG9ial9wcmVmaXgKKyAgX3Nob2JqID0g
VGVzdENvbW1vbi5zaG9ial9zdWZmaXgKKyAgbGliXyA9IFRlc3RDb21tb24ubGliX3ByZWZpeAor
ICBfbGliID0gVGVzdENvbW1vbi5saWJfc3VmZml4CisgIGRsbF8gPSBUZXN0Q29tbW9uLmRsbF9w
cmVmaXgKKyAgX2RsbCA9IFRlc3RDb21tb24uZGxsX3N1ZmZpeAorCisgICMgQ29uc3RhbnRzIHRv
IHJlcHJlc2VudCBkaWZmZXJlbnQgdGFyZ2V0cy4KKyAgQUxMID0gJ19fYWxsX18nCisgIERFRkFV
TFQgPSAnX19kZWZhdWx0X18nCisKKyAgIyBDb25zdGFudHMgZm9yIGRpZmZlcmVudCB0YXJnZXQg
dHlwZXMuCisgIEVYRUNVVEFCTEUgPSAnX19leGVjdXRhYmxlX18nCisgIFNUQVRJQ19MSUIgPSAn
X19zdGF0aWNfbGliX18nCisgIFNIQVJFRF9MSUIgPSAnX19zaGFyZWRfbGliX18nCisKKyAgZGVm
IF9faW5pdF9fKHNlbGYsIGd5cD1Ob25lLCAqYXJncywgKiprdyk6CisgICAgc2VsZi5vcmlnaW5f
Y3dkID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSkpCisKKyAg
ICBpZiBub3QgZ3lwOgorICAgICAgZ3lwID0gb3MuZW52aXJvbi5nZXQoJ1RFU1RHWVBfR1lQJykK
KyAgICAgIGlmIG5vdCBneXA6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgor
ICAgICAgICAgIGd5cCA9ICdneXAuYmF0JworICAgICAgICBlbHNlOgorICAgICAgICAgIGd5cCA9
ICdneXAnCisgICAgc2VsZi5neXAgPSBvcy5wYXRoLmFic3BhdGgoZ3lwKQorCisgICAgc2VsZi5p
bml0aWFsaXplX2J1aWxkX3Rvb2woKQorCisgICAgaWYgbm90IGt3Lmhhc19rZXkoJ21hdGNoJyk6
CisgICAgICBrd1snbWF0Y2gnXSA9IFRlc3RDb21tb24ubWF0Y2hfZXhhY3QKKworICAgIGlmIG5v
dCBrdy5oYXNfa2V5KCd3b3JrZGlyJyk6CisgICAgICAjIERlZmF1bHQgYmVoYXZpb3I6ICB0aGUg
bnVsbCBzdHJpbmcgY2F1c2VzIFRlc3RDbWQgdG8gY3JlYXRlCisgICAgICAjIGEgdGVtcG9yYXJ5
IGRpcmVjdG9yeSBmb3IgdXMuCisgICAgICBrd1snd29ya2RpciddID0gJycKKworICAgIGZvcm1h
dHMgPSBrdy5nZXQoJ2Zvcm1hdHMnLCBbXSkKKyAgICBpZiBrdy5oYXNfa2V5KCdmb3JtYXRzJyk6
CisgICAgICBkZWwga3dbJ2Zvcm1hdHMnXQorCisgICAgc3VwZXIoVGVzdEd5cEJhc2UsIHNlbGYp
Ll9faW5pdF9fKCphcmdzLCAqKmt3KQorCisgICAgZXhjbHVkZWRfZm9ybWF0cyA9IHNldChbZiBm
b3IgZiBpbiBmb3JtYXRzIGlmIGZbMF0gPT0gJyEnXSkKKyAgICBpbmNsdWRlZF9mb3JtYXRzID0g
c2V0KGZvcm1hdHMpIC0gZXhjbHVkZWRfZm9ybWF0cworICAgIGlmICgnIScrc2VsZi5mb3JtYXQg
aW4gZXhjbHVkZWRfZm9ybWF0cyBvcgorICAgICAgICBpbmNsdWRlZF9mb3JtYXRzIGFuZCBzZWxm
LmZvcm1hdCBub3QgaW4gaW5jbHVkZWRfZm9ybWF0cyk6CisgICAgICBtc2cgPSAnSW52YWxpZCB0
ZXN0IGZvciAlciBmb3JtYXQ7IHNraXBwaW5nIHRlc3QuXG4nCisgICAgICBzZWxmLnNraXBfdGVz
dChtc2cgJSBzZWxmLmZvcm1hdCkKKworICAgIHNlbGYuY29weV90ZXN0X2NvbmZpZ3VyYXRpb24o
c2VsZi5vcmlnaW5fY3dkLCBzZWxmLndvcmtkaXIpCisgICAgc2VsZi5zZXRfY29uZmlndXJhdGlv
bihOb25lKQorCisgIGRlZiBidWlsdF9maWxlX211c3RfZXhpc3Qoc2VsZiwgbmFtZSwgdHlwZT1O
b25lLCAqKmt3KToKKyAgICAiIiIKKyAgICBGYWlscyB0aGUgdGVzdCBpZiB0aGUgc3BlY2lmaWVk
IGJ1aWx0IGZpbGUgbmFtZSBkb2VzIG5vdCBleGlzdC4KKyAgICAiIiIKKyAgICByZXR1cm4gc2Vs
Zi5tdXN0X2V4aXN0KHNlbGYuYnVpbHRfZmlsZV9wYXRoKG5hbWUsIHR5cGUsICoqa3cpKQorCisg
IGRlZiBidWlsdF9maWxlX211c3Rfbm90X2V4aXN0KHNlbGYsIG5hbWUsIHR5cGU9Tm9uZSwgKipr
dyk6CisgICAgIiIiCisgICAgRmFpbHMgdGhlIHRlc3QgaWYgdGhlIHNwZWNpZmllZCBidWlsdCBm
aWxlIG5hbWUgZXhpc3RzLgorICAgICIiIgorICAgIHJldHVybiBzZWxmLm11c3Rfbm90X2V4aXN0
KHNlbGYuYnVpbHRfZmlsZV9wYXRoKG5hbWUsIHR5cGUsICoqa3cpKQorCisgIGRlZiBidWlsdF9m
aWxlX211c3RfbWF0Y2goc2VsZiwgbmFtZSwgY29udGVudHMsICoqa3cpOgorICAgICIiIgorICAg
IEZhaWxzIHRoZSB0ZXN0IGlmIHRoZSBjb250ZW50cyBvZiB0aGUgc3BlY2lmaWVkIGJ1aWx0IGZp
bGUgbmFtZQorICAgIGRvIG5vdCBtYXRjaCB0aGUgc3BlY2lmaWVkIGNvbnRlbnRzLgorICAgICIi
IgorICAgIHJldHVybiBzZWxmLm11c3RfbWF0Y2goc2VsZi5idWlsdF9maWxlX3BhdGgobmFtZSwg
KiprdyksIGNvbnRlbnRzKQorCisgIGRlZiBidWlsdF9maWxlX211c3Rfbm90X21hdGNoKHNlbGYs
IG5hbWUsIGNvbnRlbnRzLCAqKmt3KToKKyAgICAiIiIKKyAgICBGYWlscyB0aGUgdGVzdCBpZiB0
aGUgY29udGVudHMgb2YgdGhlIHNwZWNpZmllZCBidWlsdCBmaWxlIG5hbWUKKyAgICBtYXRjaCB0
aGUgc3BlY2lmaWVkIGNvbnRlbnRzLgorICAgICIiIgorICAgIHJldHVybiBzZWxmLm11c3Rfbm90
X21hdGNoKHNlbGYuYnVpbHRfZmlsZV9wYXRoKG5hbWUsICoqa3cpLCBjb250ZW50cykKKworICBk
ZWYgY29weV90ZXN0X2NvbmZpZ3VyYXRpb24oc2VsZiwgc291cmNlX2RpciwgZGVzdF9kaXIpOgor
ICAgICIiIgorICAgIENvcGllcyB0aGUgdGVzdCBjb25maWd1cmF0aW9uIGZyb20gdGhlIHNwZWNp
ZmllZCBzb3VyY2VfZGlyCisgICAgKHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIHRlc3Qgc2Ny
aXB0IGxpdmVzKSB0byB0aGUKKyAgICBzcGVjaWZpZWQgZGVzdF9kaXIgKGEgdGVtcG9yYXJ5IHdv
cmtpbmcgZGlyZWN0b3J5KS4KKworICAgIFRoaXMgaWdub3JlcyBhbGwgZmlsZXMgYW5kIGRpcmVj
dG9yaWVzIHRoYXQgYmVnaW4gd2l0aAorICAgIHRoZSBzdHJpbmcgJ2d5cHRlc3QnLCBhbmQgYWxs
ICcuc3ZuJyBzdWJkaXJlY3Rvcmllcy4KKyAgICAiIiIKKyAgICBmb3Igcm9vdCwgZGlycywgZmls
ZXMgaW4gb3Mud2Fsayhzb3VyY2VfZGlyKToKKyAgICAgIGlmICcuc3ZuJyBpbiBkaXJzOgorICAg
ICAgICBkaXJzLnJlbW92ZSgnLnN2bicpCisgICAgICBkaXJzID0gWyBkIGZvciBkIGluIGRpcnMg
aWYgbm90IGQuc3RhcnRzd2l0aCgnZ3lwdGVzdCcpIF0KKyAgICAgIGZpbGVzID0gWyBmIGZvciBm
IGluIGZpbGVzIGlmIG5vdCBmLnN0YXJ0c3dpdGgoJ2d5cHRlc3QnKSBdCisgICAgICBmb3IgZGly
bmFtZSBpbiBkaXJzOgorICAgICAgICBzb3VyY2UgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZGlybmFt
ZSkKKyAgICAgICAgZGVzdGluYXRpb24gPSBzb3VyY2UucmVwbGFjZShzb3VyY2VfZGlyLCBkZXN0
X2RpcikKKyAgICAgICAgb3MubWtkaXIoZGVzdGluYXRpb24pCisgICAgICAgIGlmIHN5cy5wbGF0
Zm9ybSAhPSAnd2luMzInOgorICAgICAgICAgIHNodXRpbC5jb3B5c3RhdChzb3VyY2UsIGRlc3Rp
bmF0aW9uKQorICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzOgorICAgICAgICBzb3VyY2UgPSBv
cy5wYXRoLmpvaW4ocm9vdCwgZmlsZW5hbWUpCisgICAgICAgIGRlc3RpbmF0aW9uID0gc291cmNl
LnJlcGxhY2Uoc291cmNlX2RpciwgZGVzdF9kaXIpCisgICAgICAgIHNodXRpbC5jb3B5Mihzb3Vy
Y2UsIGRlc3RpbmF0aW9uKQorCisgIGRlZiBpbml0aWFsaXplX2J1aWxkX3Rvb2woc2VsZik6Cisg
ICAgIiIiCisgICAgSW5pdGlhbGl6ZXMgdGhlIC5idWlsZF90b29sIGF0dHJpYnV0ZS4KKworICAg
IFNlYXJjaGVzIHRoZSAuYnVpbGRfdG9vbF9saXN0IGZvciBhbiBleGVjdXRhYmxlIG5hbWUgb24g
dGhlIHVzZXIncworICAgICRQQVRILiAgVGhlIGZpcnN0IHRvb2wgb24gdGhlIGxpc3QgaXMgdXNl
ZCBhcy1pcyBpZiBub3RoaW5nIGlzIGZvdW5kCisgICAgb24gdGhlIGN1cnJlbnQgJFBBVEguCisg
ICAgIiIiCisgICAgZm9yIGJ1aWxkX3Rvb2wgaW4gc2VsZi5idWlsZF90b29sX2xpc3Q6CisgICAg
ICBpZiBub3QgYnVpbGRfdG9vbDoKKyAgICAgICAgY29udGludWUKKyAgICAgIGlmIG9zLnBhdGgu
aXNhYnMoYnVpbGRfdG9vbCk6CisgICAgICAgIHNlbGYuYnVpbGRfdG9vbCA9IGJ1aWxkX3Rvb2wK
KyAgICAgICAgcmV0dXJuCisgICAgICBidWlsZF90b29sID0gc2VsZi53aGVyZV9pcyhidWlsZF90
b29sKQorICAgICAgaWYgYnVpbGRfdG9vbDoKKyAgICAgICAgc2VsZi5idWlsZF90b29sID0gYnVp
bGRfdG9vbAorICAgICAgICByZXR1cm4KKworICAgIGlmIHNlbGYuYnVpbGRfdG9vbF9saXN0Ogor
ICAgICAgc2VsZi5idWlsZF90b29sID0gc2VsZi5idWlsZF90b29sX2xpc3RbMF0KKworICBkZWYg
cmVsb2NhdGUoc2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6CisgICAgIiIiCisgICAgUmVuYW1l
cyAocmVsb2NhdGVzKSB0aGUgc3BlY2lmaWVkIHNvdXJjZSAodXN1YWxseSBhIGRpcmVjdG9yeSkK
KyAgICB0byB0aGUgc3BlY2lmaWVkIGRlc3RpbmF0aW9uLCBjcmVhdGluZyB0aGUgZGVzdGluYXRp
b24gZGlyZWN0b3J5CisgICAgZmlyc3QgaWYgbmVjZXNzYXJ5LgorCisgICAgTm90ZTogIERvbid0
IHVzZSB0aGlzIGFzIGEgZ2VuZXJpYyAicmVuYW1lIiBvcGVyYXRpb24uICBJbiB0aGUKKyAgICBm
dXR1cmUsICJyZWxvY2F0aW5nIiBwYXJ0cyBvZiBhIEdZUCB0cmVlIG1heSBhZmZlY3QgdGhlIHN0
YXRlIG9mCisgICAgdGhlIHRlc3QgdG8gbW9kaWZ5IHRoZSBiZWhhdmlvciBvZiBsYXRlciBtZXRo
b2QgY2FsbHMuCisgICAgIiIiCisgICAgZGVzdGluYXRpb25fZGlyID0gb3MucGF0aC5kaXJuYW1l
KGRlc3RpbmF0aW9uKQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkZXN0aW5hdGlvbl9kaXIp
OgorICAgICAgc2VsZi5zdWJkaXIoZGVzdGluYXRpb25fZGlyKQorICAgIG9zLnJlbmFtZShzb3Vy
Y2UsIGRlc3RpbmF0aW9uKQorCisgIGRlZiByZXBvcnRfbm90X3VwX3RvX2RhdGUoc2VsZik6Cisg
ICAgIiIiCisgICAgUmVwb3J0cyB0aGF0IGEgYnVpbGQgaXMgbm90IHVwLXRvLWRhdGUuCisKKyAg
ICBUaGlzIHByb3ZpZGVzIGNvbW1vbiByZXBvcnRpbmcgZm9yIGZvcm1hdHMgdGhhdCBoYXZlIGNv
bXBsaWNhdGVkCisgICAgY29uZGl0aW9ucyBmb3IgY2hlY2tpbmcgd2hldGhlciBhIGJ1aWxkIGlz
IHVwLXRvLWRhdGUuICBGb3JtYXRzCisgICAgdGhhdCBleHBlY3QgZXhhY3Qgb3V0cHV0IGZyb20g
dGhlIGNvbW1hbmQgKG1ha2UsIHNjb25zKSBjYW4KKyAgICBqdXN0IHNldCBzdGRvdXQ9IHdoZW4g
dGhleSBjYWxsIHRoZSBydW5fYnVpbGQoKSBtZXRob2QuCisgICAgIiIiCisgICAgcHJpbnQgIkJ1
aWxkIGlzIG5vdCB1cC10by1kYXRlOiIKKyAgICBwcmludCBzZWxmLmJhbm5lcignU1RET1VUICcp
CisgICAgcHJpbnQgc2VsZi5zdGRvdXQoKQorICAgIHN0ZGVyciA9IHNlbGYuc3RkZXJyKCkKKyAg
ICBpZiBzdGRlcnI6CisgICAgICBwcmludCBzZWxmLmJhbm5lcignU1RERVJSICcpCisgICAgICBw
cmludCBzdGRlcnIKKworICBkZWYgcnVuX2d5cChzZWxmLCBneXBfZmlsZSwgKmFyZ3MsICoqa3cp
OgorICAgICIiIgorICAgIFJ1bnMgZ3lwIGFnYWluc3QgdGhlIHNwZWNpZmllZCBneXBfZmlsZSB3
aXRoIHRoZSBzcGVjaWZpZWQgYXJncy4KKyAgICAiIiIKKyAgICAjIFRPRE86ICAtLWRlcHRoPS4g
d29ya3MgYXJvdW5kIENocm9taXVtLXNwZWNpZmljIHRyZWUgY2xpbWJpbmcuCisgICAgYXJncyA9
ICgnLS1kZXB0aD0uJywgJy0tZm9ybWF0PScrc2VsZi5mb3JtYXQsIGd5cF9maWxlKSArIGFyZ3MK
KyAgICByZXR1cm4gc2VsZi5ydW4ocHJvZ3JhbT1zZWxmLmd5cCwgYXJndW1lbnRzPWFyZ3MsICoq
a3cpCisKKyAgZGVmIHJ1bihzZWxmLCAqYXJncywgKiprdyk6CisgICAgIiIiCisgICAgRXhlY3V0
ZXMgYSBwcm9ncmFtIGJ5IGNhbGxpbmcgdGhlIHN1cGVyY2xhc3MgLnJ1bigpIG1ldGhvZC4KKwor
ICAgIFRoaXMgZXhpc3RzIHRvIHByb3ZpZGUgYSBjb21tb24gcGxhY2UgdG8gZmlsdGVyIG91dCBr
ZXl3b3JkCisgICAgYXJndW1lbnRzIGltcGxlbWVudGVkIGluIHRoaXMgbGF5ZXIsIHdpdGhvdXQg
aGF2aW5nIHRvIHVwZGF0ZQorICAgIHRoZSB0b29sLXNwZWNpZmljIHN1YmNsYXNzZXMgb3IgY2x1
dHRlciB0aGUgdGVzdHMgdGhlbXNlbHZlcworICAgIHdpdGggcGxhdGZvcm0tc3BlY2lmaWMgY29k
ZS4KKyAgICAiIiIKKyAgICBpZiBrdy5oYXNfa2V5KCdTWU1ST09UJyk6CisgICAgICBkZWwga3db
J1NZTVJPT1QnXQorICAgIHN1cGVyKFRlc3RHeXBCYXNlLCBzZWxmKS5ydW4oKmFyZ3MsICoqa3cp
CisKKyAgZGVmIHNldF9jb25maWd1cmF0aW9uKHNlbGYsIGNvbmZpZ3VyYXRpb24pOgorICAgICIi
IgorICAgIFNldHMgdGhlIGNvbmZpZ3VyYXRpb24sIHRvIGJlIHVzZWQgZm9yIGludm9raW5nIHRo
ZSBidWlsZAorICAgIHRvb2wgYW5kIHRlc3RpbmcgcG90ZW50aWFsIGJ1aWx0IG91dHB1dC4KKyAg
ICAiIiIKKyAgICBzZWxmLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uCisKKyAgZGVmIGNv
bmZpZ3VyYXRpb25fZGlybmFtZShzZWxmKToKKyAgICBpZiBzZWxmLmNvbmZpZ3VyYXRpb246Cisg
ICAgICByZXR1cm4gc2VsZi5jb25maWd1cmF0aW9uLnNwbGl0KCd8JylbMF0KKyAgICBlbHNlOgor
ICAgICAgcmV0dXJuICdEZWZhdWx0JworCisgIGRlZiBjb25maWd1cmF0aW9uX2J1aWxkbmFtZShz
ZWxmKToKKyAgICBpZiBzZWxmLmNvbmZpZ3VyYXRpb246CisgICAgICByZXR1cm4gc2VsZi5jb25m
aWd1cmF0aW9uCisgICAgZWxzZToKKyAgICAgIHJldHVybiAnRGVmYXVsdCcKKworICAjCisgICMg
QWJzdHJhY3QgbWV0aG9kcyB0byBiZSBkZWZpbmVkIGJ5IGZvcm1hdC1zcGVjaWZpYyBzdWJjbGFz
c2VzLgorICAjCisKKyAgZGVmIGJ1aWxkKHNlbGYsIGd5cF9maWxlLCB0YXJnZXQ9Tm9uZSwgKipr
dyk6CisgICAgIiIiCisgICAgUnVucyBhIGJ1aWxkIG9mIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IGFn
YWluc3QgdGhlIGNvbmZpZ3VyYXRpb24KKyAgICBnZW5lcmF0ZWQgZnJvbSB0aGUgc3BlY2lmaWVk
IGd5cF9maWxlLgorCisgICAgQSAndGFyZ2V0JyBhcmd1bWVudCBvZiBOb25lIG9yIHRoZSBzcGVj
aWFsIHZhbHVlIFRlc3RHeXAuREVGQVVMVAorICAgIHNwZWNpZmllcyB0aGUgZGVmYXVsdCBhcmd1
bWVudCBmb3IgdGhlIHVuZGVybHlpbmcgYnVpbGQgdG9vbC4KKyAgICBBICd0YXJnZXQnIGFyZ3Vt
ZW50IG9mIFRlc3RHeXAuQUxMIHNwZWNpZmllcyB0aGUgJ2FsbCcgdGFyZ2V0CisgICAgKGlmIGFu
eSkgb2YgdGhlIHVuZGVybHlpbmcgYnVpbGQgdG9vbC4KKyAgICAiIiIKKyAgICByYWlzZSBOb3RJ
bXBsZW1lbnRlZEVycm9yCisKKyAgZGVmIGJ1aWx0X2ZpbGVfcGF0aChzZWxmLCBuYW1lLCB0eXBl
PU5vbmUsICoqa3cpOgorICAgICIiIgorICAgIFJldHVybnMgYSBwYXRoIHRvIHRoZSBzcGVjaWZp
ZWQgZmlsZSBuYW1lLCBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuCisgICAgIiIiCisgICAgcmFpc2Ug
Tm90SW1wbGVtZW50ZWRFcnJvcgorCisgIGRlZiBidWlsdF9maWxlX2Jhc2VuYW1lKHNlbGYsIG5h
bWUsIHR5cGU9Tm9uZSwgKiprdyk6CisgICAgIiIiCisgICAgUmV0dXJucyB0aGUgYmFzZSBuYW1l
IG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBuYW1lLCBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuCisKKyAg
ICBBIGJhcmU9VHJ1ZSBrZXl3b3JkIGFyZ3VtZW50IHNwZWNpZmllcyB0aGF0IHByZWZpeGVzIGFu
ZCBzdWZmaXhlcyBzaG91bGRuJ3QKKyAgICBiZSBhcHBsaWVkLgorICAgICIiIgorICAgIGlmIG5v
dCBrdy5nZXQoJ2JhcmUnKToKKyAgICAgIGlmIHR5cGUgPT0gc2VsZi5FWEVDVVRBQkxFOgorICAg
ICAgICBuYW1lID0gbmFtZSArIHNlbGYuX2V4ZQorICAgICAgZWxpZiB0eXBlID09IHNlbGYuU1RB
VElDX0xJQjoKKyAgICAgICAgbmFtZSA9IHNlbGYubGliXyArIG5hbWUgKyBzZWxmLl9saWIKKyAg
ICAgIGVsaWYgdHlwZSA9PSBzZWxmLlNIQVJFRF9MSUI6CisgICAgICAgIG5hbWUgPSBzZWxmLmRs
bF8gKyBuYW1lICsgc2VsZi5fZGxsCisgICAgcmV0dXJuIG5hbWUKKworICBkZWYgcnVuX2J1aWx0
X2V4ZWN1dGFibGUoc2VsZiwgbmFtZSwgKmFyZ3MsICoqa3cpOgorICAgICIiIgorICAgIFJ1bnMg
YW4gZXhlY3V0YWJsZSBwcm9ncmFtIGJ1aWx0IGZyb20gYSBneXAtZ2VuZXJhdGVkIGNvbmZpZ3Vy
YXRpb24uCisKKyAgICBUaGUgc3BlY2lmaWVkIG5hbWUgc2hvdWxkIGJlIGluZGVwZW5kZW50IG9m
IGFueSBwYXJ0aWN1bGFyIGdlbmVyYXRvci4KKyAgICBTdWJjbGFzc2VzIHNob3VsZCBmaW5kIHRo
ZSBvdXRwdXQgZXhlY3V0YWJsZSBpbiB0aGUgYXBwcm9wcmlhdGUKKyAgICBvdXRwdXQgYnVpbGQg
ZGlyZWN0b3J5LCB0YWNrIG9uIGFueSBuZWNlc3NhcnkgZXhlY3V0YWJsZSBzdWZmaXgsIGV0Yy4K
KyAgICAiIiIKKyAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgZGVmIHVwX3RvX2Rh
dGUoc2VsZiwgZ3lwX2ZpbGUsIHRhcmdldD1Ob25lLCAqKmt3KToKKyAgICAiIiIKKyAgICBWZXJp
ZmllcyB0aGF0IGEgYnVpbGQgb2YgdGhlIHNwZWNpZmllZCB0YXJnZXQgaXMgdXAgdG8gZGF0ZS4K
KworICAgIFRoZSBzdWJjbGFzcyBzaG91bGQgaW1wbGVtZW50IHRoaXMgYnkgY2FsbGluZyBidWls
ZCgpCisgICAgKG9yIGEgcmVhc29uYWJsZSBlcXVpdmFsZW50KSwgY2hlY2tpbmcgd2hhdGV2ZXIg
Y29uZGl0aW9ucworICAgIHdpbGwgdGVsbCBpdCB0aGUgYnVpbGQgd2FzIGFuICJ1cCB0byBkYXRl
IiBudWxsIGJ1aWxkLCBhbmQKKyAgICBmYWlsaW5nIGlmIGl0IGlzbid0LgorICAgICIiIgorICAg
IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworCitjbGFzcyBUZXN0R3lwR3lwZChUZXN0R3lw
QmFzZSk6CisgICIiIgorICBTdWJjbGFzcyBmb3IgdGVzdGluZyB0aGUgR1lQICdneXBkJyBnZW5l
cmF0b3IgKHNwaXQgb3V0IHRoZQorICBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSBhcyBwcmV0dHkt
cHJpbnRlZCBQeXRob24pLgorICAiIiIKKyAgZm9ybWF0ID0gJ2d5cGQnCisKKworY2xhc3MgVGVz
dEd5cE1ha2UoVGVzdEd5cEJhc2UpOgorICAiIiIKKyAgU3ViY2xhc3MgZm9yIHRlc3RpbmcgdGhl
IEdZUCBNYWtlIGdlbmVyYXRvci4KKyAgIiIiCisgIGZvcm1hdCA9ICdtYWtlJworICBidWlsZF90
b29sX2xpc3QgPSBbJ21ha2UnXQorICBBTEwgPSAnYWxsJworICBkZWYgYnVpbGQoc2VsZiwgZ3lw
X2ZpbGUsIHRhcmdldD1Ob25lLCAqKmt3KToKKyAgICAiIiIKKyAgICBSdW5zIGEgTWFrZSBidWls
ZCB1c2luZyB0aGUgTWFrZWZpbGVzIGdlbmVyYXRlZCBmcm9tIHRoZSBzcGVjaWZpZWQKKyAgICBn
eXBfZmlsZS4KKyAgICAiIiIKKyAgICBhcmd1bWVudHMgPSBrdy5nZXQoJ2FyZ3VtZW50cycsIFtd
KVs6XQorICAgIGlmIHNlbGYuY29uZmlndXJhdGlvbjoKKyAgICAgIGFyZ3VtZW50cy5hcHBlbmQo
J0JVSUxEVFlQRT0nICsgc2VsZi5jb25maWd1cmF0aW9uKQorICAgIGlmIHRhcmdldCBub3QgaW4g
KE5vbmUsIHNlbGYuREVGQVVMVCk6CisgICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCkKKyAg
ICAjIFN1Yi1kaXJlY3RvcnkgYnVpbGRzIHByb3ZpZGUgcGVyLWd5cCBNYWtlZmlsZXMgKGkuZS4K
KyAgICAjIE1ha2VmaWxlLmd5cF9maWxlbmFtZSksIHNvIHVzZSB0aGF0IGlmIHRoZXJlIGlzIG5v
IE1ha2VmaWxlLgorICAgIGNoZGlyID0ga3cuZ2V0KCdjaGRpcicsICcnKQorICAgIGlmIG5vdCBv
cy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oY2hkaXIsICdNYWtlZmlsZScpKToKKyAgICAgIHBy
aW50ICJOTyBNYWtlZmlsZSBpbiAiICsgb3MucGF0aC5qb2luKGNoZGlyLCAnTWFrZWZpbGUnKQor
ICAgICAgYXJndW1lbnRzLmluc2VydCgwLCAnLWYnKQorICAgICAgYXJndW1lbnRzLmluc2VydCgx
LCBvcy5wYXRoLnNwbGl0ZXh0KGd5cF9maWxlKVswXSArICcuTWFrZWZpbGUnKQorICAgIGt3Wydh
cmd1bWVudHMnXSA9IGFyZ3VtZW50cworICAgIHJldHVybiBzZWxmLnJ1bihwcm9ncmFtPXNlbGYu
YnVpbGRfdG9vbCwgKiprdykKKyAgZGVmIHVwX3RvX2RhdGUoc2VsZiwgZ3lwX2ZpbGUsIHRhcmdl
dD1Ob25lLCAqKmt3KToKKyAgICAiIiIKKyAgICBWZXJpZmllcyB0aGF0IGEgYnVpbGQgb2YgdGhl
IHNwZWNpZmllZCBNYWtlIHRhcmdldCBpcyB1cCB0byBkYXRlLgorICAgICIiIgorICAgIGlmIHRh
cmdldCBpbiAoTm9uZSwgc2VsZi5ERUZBVUxUKToKKyAgICAgIG1lc3NhZ2VfdGFyZ2V0ID0gJ2Fs
bCcKKyAgICBlbHNlOgorICAgICAgbWVzc2FnZV90YXJnZXQgPSB0YXJnZXQKKyAgICBrd1snc3Rk
b3V0J10gPSAibWFrZTogTm90aGluZyB0byBiZSBkb25lIGZvciBgJXMnLlxuIiAlIG1lc3NhZ2Vf
dGFyZ2V0CisgICAgcmV0dXJuIHNlbGYuYnVpbGQoZ3lwX2ZpbGUsIHRhcmdldCwgKiprdykKKyAg
ZGVmIHJ1bl9idWlsdF9leGVjdXRhYmxlKHNlbGYsIG5hbWUsICphcmdzLCAqKmt3KToKKyAgICAi
IiIKKyAgICBSdW5zIGFuIGV4ZWN1dGFibGUgYnVpbHQgYnkgTWFrZS4KKyAgICAiIiIKKyAgICBj
b25maWd1cmF0aW9uID0gc2VsZi5jb25maWd1cmF0aW9uX2Rpcm5hbWUoKQorICAgIGxpYmRpciA9
IG9zLnBhdGguam9pbignb3V0JywgY29uZmlndXJhdGlvbiwgJ2xpYicpCisgICAgIyBUT0RPKHBp
bWFuKTogd2hlbiBldmVyeXRoaW5nIGlzIGNyb3NzLWNvbXBpbGUgc2FmZSwgcmVtb3ZlIGxpYi50
YXJnZXQKKyAgICBvcy5lbnZpcm9uWydMRF9MSUJSQVJZX1BBVEgnXSA9IGxpYmRpciArICcuaG9z
dDonICsgbGliZGlyICsgJy50YXJnZXQnCisgICAgIyBFbmNsb3NpbmcgdGhlIG5hbWUgaW4gYSBs
aXN0IGF2b2lkcyBwcmVwZW5kaW5nIHRoZSBvcmlnaW5hbCBkaXIuCisgICAgcHJvZ3JhbSA9IFtz
ZWxmLmJ1aWx0X2ZpbGVfcGF0aChuYW1lLCB0eXBlPXNlbGYuRVhFQ1VUQUJMRSwgKiprdyldCisg
ICAgcmV0dXJuIHNlbGYucnVuKHByb2dyYW09cHJvZ3JhbSwgKmFyZ3MsICoqa3cpCisgIGRlZiBi
dWlsdF9maWxlX3BhdGgoc2VsZiwgbmFtZSwgdHlwZT1Ob25lLCAqKmt3KToKKyAgICAiIiIKKyAg
ICBSZXR1cm5zIGEgcGF0aCB0byB0aGUgc3BlY2lmaWVkIGZpbGUgbmFtZSwgb2YgdGhlIHNwZWNp
ZmllZCB0eXBlLAorICAgIGFzIGJ1aWx0IGJ5IE1ha2UuCisKKyAgICBCdWlsdCBmaWxlcyBhcmUg
aW4gdGhlIHN1YmRpcmVjdG9yeSAnb3V0L3tjb25maWd1cmF0aW9ufScuCisgICAgVGhlIGRlZmF1
bHQgaXMgJ291dC9EZWZhdWx0Jy4KKworICAgIEEgY2hkaXI9IGtleXdvcmQgYXJndW1lbnQgc3Bl
Y2lmaWVzIHRoZSBzb3VyY2UgZGlyZWN0b3J5CisgICAgcmVsYXRpdmUgdG8gd2hpY2ggIHRoZSBv
dXRwdXQgc3ViZGlyZWN0b3J5IGNhbiBiZSBmb3VuZC4KKworICAgICJ0eXBlIiB2YWx1ZXMgb2Yg
U1RBVElDX0xJQiBvciBTSEFSRURfTElCIGFwcGVuZCB0aGUgbmVjZXNzYXJ5CisgICAgcHJlZml4
ZXMgYW5kIHN1ZmZpeGVzIHRvIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgbGlicmFyeSBiYXNlIG5h
bWUuCisKKyAgICBBIGxpYmRpcj0ga2V5d29yZCBhcmd1bWVudCBzcGVjaWZpZXMgYSBsaWJyYXJ5
IHN1YmRpcmVjdG9yeSBvdGhlcgorICAgIHRoYW4gdGhlIGRlZmF1bHQgJ29iai50YXJnZXQnLgor
ICAgICIiIgorICAgIHJlc3VsdCA9IFtdCisgICAgY2hkaXIgPSBrdy5nZXQoJ2NoZGlyJykKKyAg
ICBpZiBjaGRpcjoKKyAgICAgIHJlc3VsdC5hcHBlbmQoY2hkaXIpCisgICAgY29uZmlndXJhdGlv
biA9IHNlbGYuY29uZmlndXJhdGlvbl9kaXJuYW1lKCkKKyAgICByZXN1bHQuZXh0ZW5kKFsnb3V0
JywgY29uZmlndXJhdGlvbl0pCisgICAgaWYgdHlwZSA9PSBzZWxmLlNUQVRJQ19MSUI6CisgICAg
ICByZXN1bHQuYXBwZW5kKGt3LmdldCgnbGliZGlyJywgJ29iai50YXJnZXQnKSkKKyAgICBlbGlm
IHR5cGUgPT0gc2VsZi5TSEFSRURfTElCOgorICAgICAgcmVzdWx0LmFwcGVuZChrdy5nZXQoJ2xp
YmRpcicsICdsaWIudGFyZ2V0JykpCisgICAgcmVzdWx0LmFwcGVuZChzZWxmLmJ1aWx0X2ZpbGVf
YmFzZW5hbWUobmFtZSwgdHlwZSwgKiprdykpCisgICAgcmV0dXJuIHNlbGYud29ya3BhdGgoKnJl
c3VsdCkKKworCitjbGFzcyBUZXN0R3lwTVNWUyhUZXN0R3lwQmFzZSk6CisgICIiIgorICBTdWJj
bGFzcyBmb3IgdGVzdGluZyB0aGUgR1lQIFZpc3VhbCBTdHVkaW8gZ2VuZXJhdG9yLgorICAiIiIK
KyAgZm9ybWF0ID0gJ21zdnMnCisKKyAgdSA9IHInPT09IEJ1aWxkOiAoXGQrKSBzdWNjZWVkZWQs
IDAgZmFpbGVkLCAoXGQrKSB1cC10by1kYXRlLCAwIHNraXBwZWQgPT09JworICB1cF90b19kYXRl
X3JlID0gcmUuY29tcGlsZSh1LCByZS5NKQorCisgICMgSW5pdGlhbCBOb25lIGVsZW1lbnQgd2ls
bCBpbmRpY2F0ZSB0byBvdXIgLmluaXRpYWxpemVfYnVpbGRfdG9vbCgpCisgICMgbWV0aG9kIGJl
bG93IHRoYXQgJ2RldmVudicgd2FzIG5vdCBmb3VuZCBvbiAlUEFUSCUuCisgICMKKyAgIyBOb3Rl
OiAgd2UgbXVzdCB1c2UgZGV2ZW52LmNvbSB0byBiZSBhYmxlIHRvIGNhcHR1cmUgYnVpbGQgb3V0
cHV0LgorICAjIERpcmVjdGx5IGV4ZWN1dGluZyBkZXZlbnYuZXhlIG9ubHkgc2VuZHMgb3V0cHV0
IHRvIEJ1aWxkTG9nLmh0bS4KKyAgYnVpbGRfdG9vbF9saXN0ID0gW05vbmUsICdkZXZlbnYuY29t
J10KKworICBkZWYgaW5pdGlhbGl6ZV9idWlsZF90b29sKHNlbGYpOgorICAgICIiIiBJbml0aWFs
aXplcyB0aGUgVmlzdWFsIFN0dWRpbyAuYnVpbGRfdG9vbCBhbmQgLnVzZXNfbXNidWlsZCBwYXJh
bWV0ZXJzLgorCisgICAgV2UgdXNlIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgR1lQX01TVlNfVkVS
U0lPTi4gIElmIG5vdCBzcGVjaWZpZWQsIHdlCisgICAgc2VhcmNoICVQQVRIJSBhbmQgJVBBVEhF
WFQlIGZvciBhIGRldmVudi57ZXhlLGJhdCwuLi59IGV4ZWN1dGFibGUuCisgICAgRmFpbGluZyB0
aGF0LCB3ZSBzZWFyY2ggZm9yIGxpa2VseSBkZXBsb3ltZW50IHBhdGhzLgorICAgICIiIgorICAg
IHN1cGVyKFRlc3RHeXBNU1ZTLCBzZWxmKS5pbml0aWFsaXplX2J1aWxkX3Rvb2woKQorICAgIHBv
c3NpYmxlX3Jvb3RzID0gWydDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KScsICdDOlxcUHJvZ3JhbSBG
aWxlcyddCisgICAgcG9zc2libGVfcGF0aHMgPSB7CisgICAgICAgICcyMDEwJzogcidNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpbyAxMC4wXENvbW1vbjdcSURFXGRldmVudi5jb20nLAorICAgICAgICAn
MjAwOCc6IHInTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gOS4wXENvbW1vbjdcSURFXGRldmVudi5j
b20nLAorICAgICAgICAnMjAwNSc6IHInTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gOFxDb21tb243
XElERVxkZXZlbnYuY29tJ30KKyAgICBtc3ZzX3ZlcnNpb24gPSBvcy5lbnZpcm9uLmdldCgnR1lQ
X01TVlNfVkVSU0lPTicsICdhdXRvJykKKyAgICBpZiBtc3ZzX3ZlcnNpb24gaW4gcG9zc2libGVf
cGF0aHM6CisgICAgICAjIENoZWNrIHRoYXQgdGhlIHBhdGggdG8gdGhlIHNwZWNpZmllZCBHWVBf
TVNWU19WRVJTSU9OIGV4aXN0cy4KKyAgICAgIHBhdGggPSBwb3NzaWJsZV9wYXRoc1ttc3ZzX3Zl
cnNpb25dCisgICAgICBmb3IgciBpbiBwb3NzaWJsZV9yb290czoKKyAgICAgICAgYnQgPSBvcy5w
YXRoLmpvaW4ociwgcGF0aCkKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoYnQpOgorICAgICAg
ICAgIHNlbGYuYnVpbGRfdG9vbCA9IGJ0CisgICAgICAgICAgc2VsZi51c2VzX21zYnVpbGQgPSBt
c3ZzX3ZlcnNpb24gPj0gJzIwMTAnCisgICAgICAgICAgcmV0dXJuCisgICAgICBlbHNlOgorICAg
ICAgICBwcmludCAoJ1dhcm5pbmc6IEVudmlyb25tZW50IHZhcmlhYmxlIEdZUF9NU1ZTX1ZFUlNJ
T04gc3BlY2lmaWVzICIlcyIgJworICAgICAgICAgICAgICAgJ2J1dCBjb3JyZXNwb25kaW5nICIl
cyIgd2FzIG5vdCBmb3VuZC4nICUgKG1zdnNfdmVyc2lvbiwgcGF0aCkpCisgICAgaWYgc2VsZi5i
dWlsZF90b29sOgorICAgICAgIyBXZSBmb3VuZCAnZGV2ZW52JyBvbiB0aGUgcGF0aCwgdXNlIHRo
YXQgYW5kIHRyeSB0byBndWVzcyB0aGUgdmVyc2lvbi4KKyAgICAgIGZvciB2ZXJzaW9uLCBwYXRo
IGluIHBvc3NpYmxlX3BhdGhzLml0ZXJpdGVtcygpOgorICAgICAgICBpZiBzZWxmLmJ1aWxkX3Rv
b2wuZmluZChwYXRoKSA+PSAwOgorICAgICAgICAgIHNlbGYudXNlc19tc2J1aWxkID0gdmVyc2lv
biA+PSAnMjAxMCcKKyAgICAgICAgICByZXR1cm4KKyAgICAgIGVsc2U6CisgICAgICAgICMgSWYg
bm90LCBhc3N1bWUgbm90IE1TQnVpbGQuCisgICAgICAgIHNlbGYudXNlc19tc2J1aWxkID0gRmFs
c2UKKyAgICAgIHJldHVybgorICAgICMgTmVpdGhlciBHWVBfTVNWU19WRVJTSU9OIG5vciB0aGUg
cGF0aCBoZWxwIHVzIG91dC4gIEl0ZXJhdGUgdGhyb3VnaAorICAgICMgdGhlIGNob2ljZXMgbG9v
a2luZyBmb3IgYSBtYXRjaC4KKyAgICBmb3IgdmVyc2lvbiwgcGF0aCBpbiBwb3NzaWJsZV9wYXRo
cy5pdGVyaXRlbXMoKToKKyAgICAgIGZvciByIGluIHBvc3NpYmxlX3Jvb3RzOgorICAgICAgICBi
dCA9IG9zLnBhdGguam9pbihyLCBwYXRoKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhidCk6
CisgICAgICAgICAgc2VsZi5idWlsZF90b29sID0gYnQKKyAgICAgICAgICBzZWxmLnVzZXNfbXNi
dWlsZCA9IG1zdnNfdmVyc2lvbiA+PSAnMjAxMCcKKyAgICAgICAgICByZXR1cm4KKyAgICBwcmlu
dCAnRXJyb3I6IGNvdWxkIG5vdCBmaW5kIGRldmVudicKKyAgICBzeXMuZXhpdCgxKQorICBkZWYg
YnVpbGQoc2VsZiwgZ3lwX2ZpbGUsIHRhcmdldD1Ob25lLCByZWJ1aWxkPUZhbHNlLCAqKmt3KToK
KyAgICAiIiIKKyAgICBSdW5zIGEgVmlzdWFsIFN0dWRpbyBidWlsZCB1c2luZyB0aGUgY29uZmln
dXJhdGlvbiBnZW5lcmF0ZWQKKyAgICBmcm9tIHRoZSBzcGVjaWZpZWQgZ3lwX2ZpbGUuCisgICAg
IiIiCisgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuY29uZmlndXJhdGlvbl9idWlsZG5hbWUoKQor
ICAgIGlmIHJlYnVpbGQ6CisgICAgICBidWlsZCA9ICcvUmVidWlsZCcKKyAgICBlbHNlOgorICAg
ICAgYnVpbGQgPSAnL0J1aWxkJworICAgIGFyZ3VtZW50cyA9IGt3LmdldCgnYXJndW1lbnRzJywg
W10pWzpdCisgICAgYXJndW1lbnRzLmV4dGVuZChbZ3lwX2ZpbGUucmVwbGFjZSgnLmd5cCcsICcu
c2xuJyksCisgICAgICAgICAgICAgICAgICAgICAgYnVpbGQsIGNvbmZpZ3VyYXRpb25dKQorICAg
ICMgTm90ZTogIHRoZSBWaXN1YWwgU3R1ZGlvIGdlbmVyYXRvciBkb2Vzbid0IGFkZCBhbiBleHBs
aWNpdCAnYWxsJworICAgICMgdGFyZ2V0LCBzbyB3ZSBqdXN0IHRyZWF0IGl0IHRoZSBzYW1lIGFz
IHRoZSBkZWZhdWx0LgorICAgIGlmIHRhcmdldCBub3QgaW4gKE5vbmUsIHNlbGYuQUxMLCBzZWxm
LkRFRkFVTFQpOgorICAgICAgYXJndW1lbnRzLmV4dGVuZChbJy9Qcm9qZWN0JywgdGFyZ2V0XSkK
KyAgICBpZiBzZWxmLmNvbmZpZ3VyYXRpb246CisgICAgICBhcmd1bWVudHMuZXh0ZW5kKFsnL1By
b2plY3RDb25maWcnLCBzZWxmLmNvbmZpZ3VyYXRpb25dKQorICAgIGt3Wydhcmd1bWVudHMnXSA9
IGFyZ3VtZW50cworICAgIHJldHVybiBzZWxmLnJ1bihwcm9ncmFtPXNlbGYuYnVpbGRfdG9vbCwg
KiprdykKKyAgZGVmIHVwX3RvX2RhdGUoc2VsZiwgZ3lwX2ZpbGUsIHRhcmdldD1Ob25lLCAqKmt3
KToKKyAgICAiIiIKKyAgICBWZXJpZmllcyB0aGF0IGEgYnVpbGQgb2YgdGhlIHNwZWNpZmllZCBW
aXN1YWwgU3R1ZGlvIHRhcmdldCBpcyB1cCB0byBkYXRlLgorICAgICIiIgorICAgIHJlc3VsdCA9
IHNlbGYuYnVpbGQoZ3lwX2ZpbGUsIHRhcmdldCwgKiprdykKKyAgICBpZiBub3QgcmVzdWx0Ogor
ICAgICAgc3Rkb3V0ID0gc2VsZi5zdGRvdXQoKQorICAgICAgbSA9IHNlbGYudXBfdG9fZGF0ZV9y
ZS5zZWFyY2goc3Rkb3V0KQorICAgICAgdXBfdG9fZGF0ZSA9IEZhbHNlCisgICAgICBpZiBtOgor
ICAgICAgICBzdWNjZWVkZWQgPSBtLmdyb3VwKDEpCisgICAgICAgIHVwX3RvX2RhdGUgPSBtLmdy
b3VwKDIpCisgICAgICAgIHVwX3RvX2RhdGUgPSBzdWNjZWVkZWQgPT0gJzAnIGFuZCB1cF90b19k
YXRlID09ICcxJworICAgICAgICAjIEZpZ3VyaW5nIG91dCBpZiB0aGUgYnVpbGQgaXMgdXAgdG8g
ZGF0ZSBjaGFuZ2VkIHdpdGggVlMyMDEwLgorICAgICAgICAjIEZvciBidWlsZHMgdGhhdCBzaG91
bGQgYmUgdXAgdG8gZGF0ZSwgSSBzb21ldGltZXMgZ2V0CisgICAgICAgICMgIjEgc3VjY2VlZGVk
IGFuZCAwIHVwIHRvIGRhdGUiLiAgQXMgYW4gYWQtaG9jIG1lYXN1cmUsIHdlIGNoZWNrCisgICAg
ICAgICMgdGhpcyBhbmQgYWxzbyB2ZXJpZnkgdGhhdCB0aCBudW1iZXIgb2Ygb3V0cHV0IGxpbmVz
IGlzIHNtYWxsLgorICAgICAgICAjIEkgZG9uJ3Qga25vdyBpZiB0aGlzIGlzIGNhdXNlZCBieSBW
UyBpdHNlbGYgb3IgaXMgZHVlIHRvCisgICAgICAgICMgaW50ZXJhY3Rpb24gd2l0aCB2aXJ1cyBj
aGVja2Vycy4KKyAgICAgICAgaWYgc2VsZi51c2VzX21zYnVpbGQgYW5kIChzdWNjZWVkZWQgPT0g
JzEnIGFuZAorICAgICAgICAgICAgIHVwX3RvX2RhdGUgPT0gJzAnIGFuZAorICAgICAgICAgICAg
IHN0ZG91dC5jb3VudCgnXG4nKSA8PSA2KToKKyAgICAgICAgICB1cF90b19kYXRlID0gVHJ1ZQor
ICAgICAgaWYgbm90IHVwX3RvX2RhdGU6CisgICAgICAgIHNlbGYucmVwb3J0X25vdF91cF90b19k
YXRlKCkKKyAgICAgICAgc2VsZi5mYWlsX3Rlc3QoKQorICAgIHJldHVybiByZXN1bHQKKyAgZGVm
IHJ1bl9idWlsdF9leGVjdXRhYmxlKHNlbGYsIG5hbWUsICphcmdzLCAqKmt3KToKKyAgICAiIiIK
KyAgICBSdW5zIGFuIGV4ZWN1dGFibGUgYnVpbHQgYnkgVmlzdWFsIFN0dWRpby4KKyAgICAiIiIK
KyAgICBjb25maWd1cmF0aW9uID0gc2VsZi5jb25maWd1cmF0aW9uX2Rpcm5hbWUoKQorICAgICMg
RW5jbG9zaW5nIHRoZSBuYW1lIGluIGEgbGlzdCBhdm9pZHMgcHJlcGVuZGluZyB0aGUgb3JpZ2lu
YWwgZGlyLgorICAgIHByb2dyYW0gPSBbc2VsZi5idWlsdF9maWxlX3BhdGgobmFtZSwgdHlwZT1z
ZWxmLkVYRUNVVEFCTEUsICoqa3cpXQorICAgIHJldHVybiBzZWxmLnJ1bihwcm9ncmFtPXByb2dy
YW0sICphcmdzLCAqKmt3KQorICBkZWYgYnVpbHRfZmlsZV9wYXRoKHNlbGYsIG5hbWUsIHR5cGU9
Tm9uZSwgKiprdyk6CisgICAgIiIiCisgICAgUmV0dXJucyBhIHBhdGggdG8gdGhlIHNwZWNpZmll
ZCBmaWxlIG5hbWUsIG9mIHRoZSBzcGVjaWZpZWQgdHlwZSwKKyAgICBhcyBidWlsdCBieSBWaXN1
YWwgU3R1ZGlvLgorCisgICAgQnVpbHQgZmlsZXMgYXJlIGluIGEgc3ViZGlyZWN0b3J5IHRoYXQg
bWF0Y2hlcyB0aGUgY29uZmlndXJhdGlvbgorICAgIG5hbWUuICBUaGUgZGVmYXVsdCBpcyAnRGVm
YXVsdCcuCisKKyAgICBBIGNoZGlyPSBrZXl3b3JkIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgc291
cmNlIGRpcmVjdG9yeQorICAgIHJlbGF0aXZlIHRvIHdoaWNoICB0aGUgb3V0cHV0IHN1YmRpcmVj
dG9yeSBjYW4gYmUgZm91bmQuCisKKyAgICAidHlwZSIgdmFsdWVzIG9mIFNUQVRJQ19MSUIgb3Ig
U0hBUkVEX0xJQiBhcHBlbmQgdGhlIG5lY2Vzc2FyeQorICAgIHByZWZpeGVzIGFuZCBzdWZmaXhl
cyB0byBhIHBsYXRmb3JtLWluZGVwZW5kZW50IGxpYnJhcnkgYmFzZSBuYW1lLgorICAgICIiIgor
ICAgIHJlc3VsdCA9IFtdCisgICAgY2hkaXIgPSBrdy5nZXQoJ2NoZGlyJykKKyAgICBpZiBjaGRp
cjoKKyAgICAgIHJlc3VsdC5hcHBlbmQoY2hkaXIpCisgICAgcmVzdWx0LmFwcGVuZChzZWxmLmNv
bmZpZ3VyYXRpb25fZGlybmFtZSgpKQorICAgIGlmIHR5cGUgPT0gc2VsZi5TVEFUSUNfTElCOgor
ICAgICAgcmVzdWx0LmFwcGVuZCgnbGliJykKKyAgICByZXN1bHQuYXBwZW5kKHNlbGYuYnVpbHRf
ZmlsZV9iYXNlbmFtZShuYW1lLCB0eXBlLCAqKmt3KSkKKyAgICByZXR1cm4gc2VsZi53b3JrcGF0
aCgqcmVzdWx0KQorCisKK2NsYXNzIFRlc3RHeXBTQ29ucyhUZXN0R3lwQmFzZSk6CisgICIiIgor
ICBTdWJjbGFzcyBmb3IgdGVzdGluZyB0aGUgR1lQIFNDb25zIGdlbmVyYXRvci4KKyAgIiIiCisg
IGZvcm1hdCA9ICdzY29ucycKKyAgYnVpbGRfdG9vbF9saXN0ID0gWydzY29ucycsICdzY29ucy5w
eSddCisgIEFMTCA9ICdhbGwnCisgIGRlZiBidWlsZChzZWxmLCBneXBfZmlsZSwgdGFyZ2V0PU5v
bmUsICoqa3cpOgorICAgICIiIgorICAgIFJ1bnMgYSBzY29ucyBidWlsZCB1c2luZyB0aGUgU0Nv
bnMgY29uZmlndXJhdGlvbiBnZW5lcmF0ZWQgZnJvbSB0aGUKKyAgICBzcGVjaWZpZWQgZ3lwX2Zp
bGUuCisgICAgIiIiCisgICAgYXJndW1lbnRzID0ga3cuZ2V0KCdhcmd1bWVudHMnLCBbXSlbOl0K
KyAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKGd5cF9maWxlKQorICAgIGlmIGRpcm5hbWU6
CisgICAgICBhcmd1bWVudHMuZXh0ZW5kKFsnLUMnLCBkaXJuYW1lXSkKKyAgICBpZiBzZWxmLmNv
bmZpZ3VyYXRpb246CisgICAgICBhcmd1bWVudHMuYXBwZW5kKCctLW1vZGU9JyArIHNlbGYuY29u
ZmlndXJhdGlvbikKKyAgICBpZiB0YXJnZXQgbm90IGluIChOb25lLCBzZWxmLkRFRkFVTFQpOgor
ICAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpCisgICAga3dbJ2FyZ3VtZW50cyddID0gYXJn
dW1lbnRzCisgICAgcmV0dXJuIHNlbGYucnVuKHByb2dyYW09c2VsZi5idWlsZF90b29sLCAqKmt3
KQorICBkZWYgdXBfdG9fZGF0ZShzZWxmLCBneXBfZmlsZSwgdGFyZ2V0PU5vbmUsICoqa3cpOgor
ICAgICIiIgorICAgIFZlcmlmaWVzIHRoYXQgYSBidWlsZCBvZiB0aGUgc3BlY2lmaWVkIFNDb25z
IHRhcmdldCBpcyB1cCB0byBkYXRlLgorICAgICIiIgorICAgIGlmIHRhcmdldCBpbiAoTm9uZSwg
c2VsZi5ERUZBVUxUKToKKyAgICAgIHVwX3RvX2RhdGVfdGFyZ2V0cyA9ICdhbGwnCisgICAgZWxz
ZToKKyAgICAgIHVwX3RvX2RhdGVfdGFyZ2V0cyA9IHRhcmdldAorICAgIHVwX3RvX2RhdGVfbGlu
ZXMgPSBbXQorICAgIGZvciBhcmcgaW4gdXBfdG9fZGF0ZV90YXJnZXRzLnNwbGl0KCk6CisgICAg
ICB1cF90b19kYXRlX2xpbmVzLmFwcGVuZCgic2NvbnM6IGAlcycgaXMgdXAgdG8gZGF0ZS5cbiIg
JSBhcmcpCisgICAga3dbJ3N0ZG91dCddID0gJycuam9pbih1cF90b19kYXRlX2xpbmVzKQorICAg
IGFyZ3VtZW50cyA9IGt3LmdldCgnYXJndW1lbnRzJywgW10pWzpdCisgICAgYXJndW1lbnRzLmFw
cGVuZCgnLVEnKQorICAgIGt3Wydhcmd1bWVudHMnXSA9IGFyZ3VtZW50cworICAgIHJldHVybiBz
ZWxmLmJ1aWxkKGd5cF9maWxlLCB0YXJnZXQsICoqa3cpCisgIGRlZiBydW5fYnVpbHRfZXhlY3V0
YWJsZShzZWxmLCBuYW1lLCAqYXJncywgKiprdyk6CisgICAgIiIiCisgICAgUnVucyBhbiBleGVj
dXRhYmxlIGJ1aWx0IGJ5IHNjb25zLgorICAgICIiIgorICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxm
LmNvbmZpZ3VyYXRpb25fZGlybmFtZSgpCisgICAgb3MuZW52aXJvblsnTERfTElCUkFSWV9QQVRI
J10gPSBvcy5wYXRoLmpvaW4oY29uZmlndXJhdGlvbiwgJ2xpYicpCisgICAgIyBFbmNsb3Npbmcg
dGhlIG5hbWUgaW4gYSBsaXN0IGF2b2lkcyBwcmVwZW5kaW5nIHRoZSBvcmlnaW5hbCBkaXIuCisg
ICAgcHJvZ3JhbSA9IFtzZWxmLmJ1aWx0X2ZpbGVfcGF0aChuYW1lLCB0eXBlPXNlbGYuRVhFQ1VU
QUJMRSwgKiprdyldCisgICAgcmV0dXJuIHNlbGYucnVuKHByb2dyYW09cHJvZ3JhbSwgKmFyZ3Ms
ICoqa3cpCisgIGRlZiBidWlsdF9maWxlX3BhdGgoc2VsZiwgbmFtZSwgdHlwZT1Ob25lLCAqKmt3
KToKKyAgICAiIiIKKyAgICBSZXR1cm5zIGEgcGF0aCB0byB0aGUgc3BlY2lmaWVkIGZpbGUgbmFt
ZSwgb2YgdGhlIHNwZWNpZmllZCB0eXBlLAorICAgIGFzIGJ1aWx0IGJ5IFNjb25zLgorCisgICAg
QnVpbHQgZmlsZXMgYXJlIGluIGEgc3ViZGlyZWN0b3J5IHRoYXQgbWF0Y2hlcyB0aGUgY29uZmln
dXJhdGlvbgorICAgIG5hbWUuICBUaGUgZGVmYXVsdCBpcyAnRGVmYXVsdCcuCisKKyAgICBBIGNo
ZGlyPSBrZXl3b3JkIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgc291cmNlIGRpcmVjdG9yeQorICAg
IHJlbGF0aXZlIHRvIHdoaWNoICB0aGUgb3V0cHV0IHN1YmRpcmVjdG9yeSBjYW4gYmUgZm91bmQu
CisKKyAgICAidHlwZSIgdmFsdWVzIG9mIFNUQVRJQ19MSUIgb3IgU0hBUkVEX0xJQiBhcHBlbmQg
dGhlIG5lY2Vzc2FyeQorICAgIHByZWZpeGVzIGFuZCBzdWZmaXhlcyB0byBhIHBsYXRmb3JtLWlu
ZGVwZW5kZW50IGxpYnJhcnkgYmFzZSBuYW1lLgorICAgICIiIgorICAgIHJlc3VsdCA9IFtdCisg
ICAgY2hkaXIgPSBrdy5nZXQoJ2NoZGlyJykKKyAgICBpZiBjaGRpcjoKKyAgICAgIHJlc3VsdC5h
cHBlbmQoY2hkaXIpCisgICAgcmVzdWx0LmFwcGVuZChzZWxmLmNvbmZpZ3VyYXRpb25fZGlybmFt
ZSgpKQorICAgIGlmIHR5cGUgaW4gKHNlbGYuU1RBVElDX0xJQiwgc2VsZi5TSEFSRURfTElCKToK
KyAgICAgIHJlc3VsdC5hcHBlbmQoJ2xpYicpCisgICAgcmVzdWx0LmFwcGVuZChzZWxmLmJ1aWx0
X2ZpbGVfYmFzZW5hbWUobmFtZSwgdHlwZSwgKiprdykpCisgICAgcmV0dXJuIHNlbGYud29ya3Bh
dGgoKnJlc3VsdCkKKworCitjbGFzcyBUZXN0R3lwWGNvZGUoVGVzdEd5cEJhc2UpOgorICAiIiIK
KyAgU3ViY2xhc3MgZm9yIHRlc3RpbmcgdGhlIEdZUCBYY29kZSBnZW5lcmF0b3IuCisgICIiIgor
ICBmb3JtYXQgPSAneGNvZGUnCisgIGJ1aWxkX3Rvb2xfbGlzdCA9IFsneGNvZGVidWlsZCddCisK
KyAgcGhhc2Vfc2NyaXB0X2V4ZWN1dGlvbiA9ICgiXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlBoYXNlU2NyaXB0RXhlY3V0aW9uIC9cXFMrL1NjcmlwdC1bMC05QS1GXStcXC5zaFxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgY2QgL1xcUytcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIC9iaW4vc2ggLWMgL1xcUysvU2NyaXB0LVswLTlBLUZd
K1xcLnNoXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihtYWtlOiBOb3RoaW5nIHRv
IGJlIGRvbmUgZm9yIGBhbGwnXFwuXG4pPyIpCisKKyAgc3RyaXBfdXBfdG9fZGF0ZV9leHByZXNz
aW9ucyA9IFsKKyAgICAjIFZhcmlvdXMgYWN0aW9ucyBvciBydWxlcyBjYW4gcnVuIGV2ZW4gd2hl
biB0aGUgb3ZlcmFsbCBidWlsZCB0YXJnZXQKKyAgICAjIGlzIHVwIHRvIGRhdGUuICBTdHJpcCB0
aG9zZSBwaGFzZXMnIEdZUC1nZW5lcmF0ZWQgb3V0cHV0LgorICAgIHJlLmNvbXBpbGUocGhhc2Vf
c2NyaXB0X2V4ZWN1dGlvbiwgcmUuUyksCisKKyAgICAjIFRoZSBtZXNzYWdlIGZyb20gZGlzdGNj
X3B1bXAgY2FuIHRyYWlsIHRoZSAiQlVJTEQgU1VDQ0VFREVEIgorICAgICMgbWVzc2FnZSwgc28g
c3RyaXAgdGhhdCwgdG9vLgorICAgIHJlLmNvbXBpbGUoJ19fX19fX19fX19TaHV0dGluZyBkb3du
IGRpc3RjYy1wdW1wIGluY2x1ZGUgc2VydmVyXG4nLCByZS5TKSwKKyAgXQorCisgIHVwX3RvX2Rh
dGVfZW5kaW5ncyA9ICgKKyAgICAnQ2hlY2tpbmcgRGVwZW5kZW5jaWVzLi4uXG4qKiBCVUlMRCBT
VUNDRUVERUQgKipcbicsICMgWGNvZGUgMy4wLzMuMQorICAgICdDaGVjayBkZXBlbmRlbmNpZXNc
bioqIEJVSUxEIFNVQ0NFRURFRCAqKlxuXG4nLCAgICAgIyBYY29kZSAzLjIKKyAgKQorCisgIGRl
ZiBidWlsZChzZWxmLCBneXBfZmlsZSwgdGFyZ2V0PU5vbmUsICoqa3cpOgorICAgICIiIgorICAg
IFJ1bnMgYW4geGNvZGVidWlsZCB1c2luZyB0aGUgLnhjb2RlcHJvaiBnZW5lcmF0ZWQgZnJvbSB0
aGUgc3BlY2lmaWVkCisgICAgZ3lwX2ZpbGUuCisgICAgIiIiCisgICAgIyBCZSBzdXJlIHdlJ3Jl
IHdvcmtpbmcgd2l0aCBhIGNvcHkgb2YgJ2FyZ3VtZW50cycgc2luY2Ugd2UgbW9kaWZ5IGl0Lgor
ICAgICMgVGhlIGNhbGxlciBtYXkgbm90IGJlIGV4cGVjdGluZyBpdCB0byBiZSBtb2RpZmllZC4K
KyAgICBhcmd1bWVudHMgPSBrdy5nZXQoJ2FyZ3VtZW50cycsIFtdKVs6XQorICAgIGFyZ3VtZW50
cy5leHRlbmQoWyctcHJvamVjdCcsIGd5cF9maWxlLnJlcGxhY2UoJy5neXAnLCAnLnhjb2RlcHJv
aicpXSkKKyAgICBpZiB0YXJnZXQgPT0gc2VsZi5BTEw6CisgICAgICBhcmd1bWVudHMuYXBwZW5k
KCctYWxsdGFyZ2V0cycsKQorICAgIGVsaWYgdGFyZ2V0IG5vdCBpbiAoTm9uZSwgc2VsZi5ERUZB
VUxUKToKKyAgICAgIGFyZ3VtZW50cy5leHRlbmQoWyctdGFyZ2V0JywgdGFyZ2V0XSkKKyAgICBp
ZiBzZWxmLmNvbmZpZ3VyYXRpb246CisgICAgICBhcmd1bWVudHMuZXh0ZW5kKFsnLWNvbmZpZ3Vy
YXRpb24nLCBzZWxmLmNvbmZpZ3VyYXRpb25dKQorICAgIHN5bXJvb3QgPSBrdy5nZXQoJ1NZTVJP
T1QnLCAnJFNSQ1JPT1QvYnVpbGQnKQorICAgIGlmIHN5bXJvb3Q6CisgICAgICBhcmd1bWVudHMu
YXBwZW5kKCdTWU1ST09UPScrc3ltcm9vdCkKKyAgICBrd1snYXJndW1lbnRzJ10gPSBhcmd1bWVu
dHMKKyAgICByZXR1cm4gc2VsZi5ydW4ocHJvZ3JhbT1zZWxmLmJ1aWxkX3Rvb2wsICoqa3cpCisg
IGRlZiB1cF90b19kYXRlKHNlbGYsIGd5cF9maWxlLCB0YXJnZXQ9Tm9uZSwgKiprdyk6CisgICAg
IiIiCisgICAgVmVyaWZpZXMgdGhhdCBhIGJ1aWxkIG9mIHRoZSBzcGVjaWZpZWQgWGNvZGUgdGFy
Z2V0IGlzIHVwIHRvIGRhdGUuCisgICAgIiIiCisgICAgcmVzdWx0ID0gc2VsZi5idWlsZChneXBf
ZmlsZSwgdGFyZ2V0LCAqKmt3KQorICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICBvdXRwdXQgPSBz
ZWxmLnN0ZG91dCgpCisgICAgICBmb3IgZXhwcmVzc2lvbiBpbiBzZWxmLnN0cmlwX3VwX3RvX2Rh
dGVfZXhwcmVzc2lvbnM6CisgICAgICAgIG91dHB1dCA9IGV4cHJlc3Npb24uc3ViKCcnLCBvdXRw
dXQpCisgICAgICBpZiBub3Qgb3V0cHV0LmVuZHN3aXRoKHNlbGYudXBfdG9fZGF0ZV9lbmRpbmdz
KToKKyAgICAgICAgc2VsZi5yZXBvcnRfbm90X3VwX3RvX2RhdGUoKQorICAgICAgICBzZWxmLmZh
aWxfdGVzdCgpCisgICAgcmV0dXJuIHJlc3VsdAorICBkZWYgcnVuX2J1aWx0X2V4ZWN1dGFibGUo
c2VsZiwgbmFtZSwgKmFyZ3MsICoqa3cpOgorICAgICIiIgorICAgIFJ1bnMgYW4gZXhlY3V0YWJs
ZSBidWlsdCBieSB4Y29kZWJ1aWxkLgorICAgICIiIgorICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxm
LmNvbmZpZ3VyYXRpb25fZGlybmFtZSgpCisgICAgb3MuZW52aXJvblsnRFlMRF9MSUJSQVJZX1BB
VEgnXSA9IG9zLnBhdGguam9pbignYnVpbGQnLCBjb25maWd1cmF0aW9uKQorICAgICMgRW5jbG9z
aW5nIHRoZSBuYW1lIGluIGEgbGlzdCBhdm9pZHMgcHJlcGVuZGluZyB0aGUgb3JpZ2luYWwgZGly
LgorICAgIHByb2dyYW0gPSBbc2VsZi5idWlsdF9maWxlX3BhdGgobmFtZSwgdHlwZT1zZWxmLkVY
RUNVVEFCTEUsICoqa3cpXQorICAgIHJldHVybiBzZWxmLnJ1bihwcm9ncmFtPXByb2dyYW0sICph
cmdzLCAqKmt3KQorICBkZWYgYnVpbHRfZmlsZV9wYXRoKHNlbGYsIG5hbWUsIHR5cGU9Tm9uZSwg
Kiprdyk6CisgICAgIiIiCisgICAgUmV0dXJucyBhIHBhdGggdG8gdGhlIHNwZWNpZmllZCBmaWxl
IG5hbWUsIG9mIHRoZSBzcGVjaWZpZWQgdHlwZSwKKyAgICBhcyBidWlsdCBieSBYY29kZS4KKwor
ICAgIEJ1aWx0IGZpbGVzIGFyZSBpbiB0aGUgc3ViZGlyZWN0b3J5ICdidWlsZC97Y29uZmlndXJh
dGlvbn0nLgorICAgIFRoZSBkZWZhdWx0IGlzICdidWlsZC9EZWZhdWx0Jy4KKworICAgIEEgY2hk
aXI9IGtleXdvcmQgYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBzb3VyY2UgZGlyZWN0b3J5CisgICAg
cmVsYXRpdmUgdG8gd2hpY2ggIHRoZSBvdXRwdXQgc3ViZGlyZWN0b3J5IGNhbiBiZSBmb3VuZC4K
KworICAgICJ0eXBlIiB2YWx1ZXMgb2YgU1RBVElDX0xJQiBvciBTSEFSRURfTElCIGFwcGVuZCB0
aGUgbmVjZXNzYXJ5CisgICAgcHJlZml4ZXMgYW5kIHN1ZmZpeGVzIHRvIGEgcGxhdGZvcm0taW5k
ZXBlbmRlbnQgbGlicmFyeSBiYXNlIG5hbWUuCisgICAgIiIiCisgICAgcmVzdWx0ID0gW10KKyAg
ICBjaGRpciA9IGt3LmdldCgnY2hkaXInKQorICAgIGlmIGNoZGlyOgorICAgICAgcmVzdWx0LmFw
cGVuZChjaGRpcikKKyAgICBjb25maWd1cmF0aW9uID0gc2VsZi5jb25maWd1cmF0aW9uX2Rpcm5h
bWUoKQorICAgIHJlc3VsdC5leHRlbmQoWydidWlsZCcsIGNvbmZpZ3VyYXRpb25dKQorICAgIHJl
c3VsdC5hcHBlbmQoc2VsZi5idWlsdF9maWxlX2Jhc2VuYW1lKG5hbWUsIHR5cGUsICoqa3cpKQor
ICAgIHJldHVybiBzZWxmLndvcmtwYXRoKCpyZXN1bHQpCisKKworZm9ybWF0X2NsYXNzX2xpc3Qg
PSBbCisgIFRlc3RHeXBHeXBkLAorICBUZXN0R3lwTWFrZSwKKyAgVGVzdEd5cE1TVlMsCisgIFRl
c3RHeXBTQ29ucywKKyAgVGVzdEd5cFhjb2RlLAorXQorCitkZWYgVGVzdEd5cCgqYXJncywgKipr
dyk6CisgICIiIgorICBSZXR1cm5zIGFuIGFwcHJvcHJpYXRlIFRlc3RHeXAqIGluc3RhbmNlIGZv
ciBhIHNwZWNpZmllZCBHWVAgZm9ybWF0LgorICAiIiIKKyAgZm9ybWF0ID0ga3cuZ2V0KCdmb3Jt
YXQnKQorICBpZiBmb3JtYXQ6CisgICAgZGVsIGt3Wydmb3JtYXQnXQorICBlbHNlOgorICAgIGZv
cm1hdCA9IG9zLmVudmlyb24uZ2V0KCdURVNUR1lQX0ZPUk1BVCcpCisgIGZvciBmb3JtYXRfY2xh
c3MgaW4gZm9ybWF0X2NsYXNzX2xpc3Q6CisgICAgaWYgZm9ybWF0ID09IGZvcm1hdF9jbGFzcy5m
b3JtYXQ6CisgICAgICByZXR1cm4gZm9ybWF0X2NsYXNzKCphcmdzLCAqKmt3KQorICByYWlzZSBF
eGNlcHRpb24sICJ1bmtub3duIGZvcm1hdCAlciIgJSBmb3JtYXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpYnJhcnkvZ3lwdGVzdC1zaGFyZWQtb2JqLWluc3RhbGwt
cGF0aC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpYnJhcnkvZ3lwdGVzdC1zaGFy
ZWQtb2JqLWluc3RhbGwtcGF0aC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2YxYTI4NDU4ZjI4NjE5MmQ4Yzg3
YjdlMDE3NWYzNmJmMDIxY2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvbGlicmFyeS9neXB0ZXN0LXNoYXJlZC1vYmotaW5zdGFsbC1wYXRoLnB5CkBAIC0w
LDAgKzEsMzcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgorVmVyaWZpZXMgdGhhdCAuc28gZmlsZXMg
dGhhdCBhcmUgb3JkZXIgb25seSBkZXBlbmRlbmNpZXMgYXJlIHNwZWNpZmllZCBieQordGhlaXIg
aW5zdGFsbCBsb2NhdGlvbiByYXRoZXIgdGhhbiBieSB0aGVpciBhbGlhcy4KKyIiIgorCisjIFB5
dGhvbiAyLjUgbmVlZHMgdGhpcyBmb3IgdGhlIHdpdGggc3RhdGVtZW50LgorZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAorCitpbXBvcnQgb3MKK2ltcG9ydCBUZXN0R3lwCisK
K3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoZm9ybWF0cz1bJ21ha2UnXSkKKwordGVzdC5ydW5fZ3lw
KCdzaGFyZWRfZGVwZW5kZW5jeS5neXAnLAorICAgICAgICAgICAgIGNoZGlyPSdzcmMnKQordGVz
dC5yZWxvY2F0ZSgnc3JjJywgJ3JlbG9jYXRlL3NyYycpCisKK3Rlc3QuYnVpbGQoJ3NoYXJlZF9k
ZXBlbmRlbmN5Lmd5cCcsIHRlc3QuQUxMLCBjaGRpcj0ncmVsb2NhdGUvc3JjJykKKword2l0aCBv
cGVuKCdyZWxvY2F0ZS9zcmMvTWFrZWZpbGUnKSBhcyBtYWtlZmlsZToKKyAgbWFrZV9jb250ZW50
cyA9IG1ha2VmaWxlLnJlYWQoKQorCisjIElmIHdlIHJlbW92ZSB0aGUgY29kZSB0byBnZW5lcmF0
ZSBsaWIxLCBNYWtlIHNob3VsZCBzdGlsbCBiZSBhYmxlCisjIHRvIGJ1aWxkIGxpYjIgc2luY2Ug
bGliMS5zbyBhbHJlYWR5IGV4aXN0cy4KK21ha2VfY29udGVudHMgPSBtYWtlX2NvbnRlbnRzLnJl
cGxhY2UoJ2luY2x1ZGUgbGliMS50YXJnZXQubWsnLCAnJykKK3dpdGggb3BlbigncmVsb2NhdGUv
c3JjL01ha2VmaWxlJywgJ3cnKSBhcyBtYWtlZmlsZToKKyAgbWFrZWZpbGUud3JpdGUobWFrZV9j
b250ZW50cykKKwordGVzdC5idWlsZCgnc2hhcmVkX2RlcGVuZGVuY3kuZ3lwJywgdGVzdC5BTEws
IGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQorCit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9saWJyYXJ5L2d5cHRlc3Qtc2hhcmVkLnB5IGIvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbGlicmFyeS9neXB0ZXN0LXNoYXJlZC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMWQyOTg1ZDkxOWJmMWI0MmNiMjFkZWE4ODY1ZTgxZTk4YTcwYTI4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbGlicmFyeS9neXB0ZXN0LXNoYXJl
ZC5weQpAQCAtMCwwICsxLDg0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmln
aHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmaWVzIHNpbXBs
ZSBidWlsZCBvZiBhICJIZWxsbywgd29ybGQhIiBwcm9ncmFtIHdpdGggc2hhcmVkIGxpYnJhcmll
cywKK2luY2x1ZGluZyB2ZXJpZnlpbmcgdGhhdCBsaWJyYXJpZXMgYXJlIHJlYnVpbHQgY29ycmVj
dGx5IHdoZW4gZnVuY3Rpb25zCittb3ZlIGJldHdlZW4gbGlicmFyaWVzLgorIiIiCisKK2ltcG9y
dCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoKQorCit0ZXN0LnJ1bl9neXAoJ2xp
YnJhcnkuZ3lwJywKKyAgICAgICAgICAgICAnLURsaWJyYXJ5PXNoYXJlZF9saWJyYXJ5JywKKyAg
ICAgICAgICAgICAnLURtb3ZlYWJsZV9mdW5jdGlvbj1saWIxJywKKyAgICAgICAgICAgICBjaGRp
cj0nc3JjJykKKwordGVzdC5yZWxvY2F0ZSgnc3JjJywgJ3JlbG9jYXRlL3NyYycpCisKK3Rlc3Qu
YnVpbGQoJ2xpYnJhcnkuZ3lwJywgdGVzdC5BTEwsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQorCitl
eHBlY3QgPSAiIiJcCitIZWxsbyBmcm9tIHByb2dyYW0uYworSGVsbG8gZnJvbSBsaWIxLmMKK0hl
bGxvIGZyb20gbGliMi5jCitIZWxsbyBmcm9tIGxpYjFfbW92ZWFibGUuYworIiIiCit0ZXN0LnJ1
bl9idWlsdF9leGVjdXRhYmxlKCdwcm9ncmFtJywgY2hkaXI9J3JlbG9jYXRlL3NyYycsIHN0ZG91
dD1leHBlY3QpCisKKwordGVzdC5ydW5fZ3lwKCdsaWJyYXJ5Lmd5cCcsCisgICAgICAgICAgICAg
Jy1EbGlicmFyeT1zaGFyZWRfbGlicmFyeScsCisgICAgICAgICAgICAgJy1EbW92ZWFibGVfZnVu
Y3Rpb249bGliMicsCisgICAgICAgICAgICAgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKKyMgVXBk
YXRlIHByb2dyYW0uYyB0byBmb3JjZSBhIHJlYnVpbGQuCit0ZXN0LnNsZWVwKCkKK2NvbnRlbnRz
ID0gdGVzdC5yZWFkKCdyZWxvY2F0ZS9zcmMvcHJvZ3JhbS5jJykKK2NvbnRlbnRzID0gY29udGVu
dHMucmVwbGFjZSgnSGVsbG8nLCAnSGVsbG8gYWdhaW4nKQordGVzdC53cml0ZSgncmVsb2NhdGUv
c3JjL3Byb2dyYW0uYycsIGNvbnRlbnRzKQorCit0ZXN0LmJ1aWxkKCdsaWJyYXJ5Lmd5cCcsIHRl
c3QuQUxMLCBjaGRpcj0ncmVsb2NhdGUvc3JjJykKKworZXhwZWN0ID0gIiIiXAorSGVsbG8gYWdh
aW4gZnJvbSBwcm9ncmFtLmMKK0hlbGxvIGZyb20gbGliMS5jCitIZWxsbyBmcm9tIGxpYjIuYwor
SGVsbG8gZnJvbSBsaWIyX21vdmVhYmxlLmMKKyIiIgordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJs
ZSgncHJvZ3JhbScsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnLCBzdGRvdXQ9ZXhwZWN0KQorCisKK3Rl
c3QucnVuX2d5cCgnbGlicmFyeS5neXAnLAorICAgICAgICAgICAgICctRGxpYnJhcnk9c2hhcmVk
X2xpYnJhcnknLAorICAgICAgICAgICAgICctRG1vdmVhYmxlX2Z1bmN0aW9uPWxpYjEnLAorICAg
ICAgICAgICAgIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQorCisjIFVwZGF0ZSBwcm9ncmFtLmMgdG8g
Zm9yY2UgYSByZWJ1aWxkLgordGVzdC5zbGVlcCgpCitjb250ZW50cyA9IHRlc3QucmVhZCgncmVs
b2NhdGUvc3JjL3Byb2dyYW0uYycpCitjb250ZW50cyA9IGNvbnRlbnRzLnJlcGxhY2UoJ2FnYWlu
JywgJ2FnYWluIGFnYWluJykKK3Rlc3Qud3JpdGUoJ3JlbG9jYXRlL3NyYy9wcm9ncmFtLmMnLCBj
b250ZW50cykKKworIyBUT0RPKHNnayk6ICB3ZSBoYXZlIHRvIGZvcmNlIGEgcmVidWlsZCBvZiBs
aWIyIHNvIHRoYXQgaXQgd2VlZHMgb3V0CisjIHRoZSAibW92ZWQiIG1vZHVsZS4gIFRoaXMgc2hv
dWxkIGJlIGRvbmUgaW4gZ3lwIGJ5IGFkZGluZyBhIGRlcGVuZGVuY3kKKyMgb24gdGhlIGdlbmVy
YXRlZCAudmNwcm9qIGZpbGUgaXRzZWxmLgordGVzdC50b3VjaCgncmVsb2NhdGUvc3JjL2xpYjIu
YycpCisKK3Rlc3QuYnVpbGQoJ2xpYnJhcnkuZ3lwJywgdGVzdC5BTEwsIGNoZGlyPSdyZWxvY2F0
ZS9zcmMnKQorCitleHBlY3QgPSAiIiJcCitIZWxsbyBhZ2FpbiBhZ2FpbiBmcm9tIHByb2dyYW0u
YworSGVsbG8gZnJvbSBsaWIxLmMKK0hlbGxvIGZyb20gbGliMi5jCitIZWxsbyBmcm9tIGxpYjFf
bW92ZWFibGUuYworIiIiCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdwcm9ncmFtJywgY2hk
aXI9J3JlbG9jYXRlL3NyYycsIHN0ZG91dD1leHBlY3QpCisKKwordGVzdC5wYXNzX3Rlc3QoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbGlicmFyeS9neXB0ZXN0LXN0
YXRpYy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpYnJhcnkvZ3lwdGVzdC1zdGF0
aWMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGJjNzFjNDk2MmExNjljNGU4NmQ1ZmEyMDAwYjE2M2QyMTFjMTdl
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpYnJhcnkv
Z3lwdGVzdC1zdGF0aWMucHkKQEAgLTAsMCArMSw4NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitW
ZXJpZmllcyBzaW1wbGUgYnVpbGQgb2YgYSAiSGVsbG8sIHdvcmxkISIgcHJvZ3JhbSB3aXRoIHN0
YXRpYyBsaWJyYXJpZXMsCitpbmNsdWRpbmcgdmVyaWZ5aW5nIHRoYXQgbGlicmFyaWVzIGFyZSBy
ZWJ1aWx0IGNvcnJlY3RseSB3aGVuIGZ1bmN0aW9ucworbW92ZSBiZXR3ZWVuIGxpYnJhcmllcy4K
KyIiIgorCitpbXBvcnQgVGVzdEd5cAorCit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lwKCkKKwordGVz
dC5ydW5fZ3lwKCdsaWJyYXJ5Lmd5cCcsCisgICAgICAgICAgICAgJy1EbGlicmFyeT1zdGF0aWNf
bGlicmFyeScsCisgICAgICAgICAgICAgJy1EbW92ZWFibGVfZnVuY3Rpb249bGliMScsCisgICAg
ICAgICAgICAgY2hkaXI9J3NyYycpCisKK3Rlc3QucmVsb2NhdGUoJ3NyYycsICdyZWxvY2F0ZS9z
cmMnKQorCit0ZXN0LmJ1aWxkKCdsaWJyYXJ5Lmd5cCcsIHRlc3QuQUxMLCBjaGRpcj0ncmVsb2Nh
dGUvc3JjJykKKworZXhwZWN0ID0gIiIiXAorSGVsbG8gZnJvbSBwcm9ncmFtLmMKK0hlbGxvIGZy
b20gbGliMS5jCitIZWxsbyBmcm9tIGxpYjIuYworSGVsbG8gZnJvbSBsaWIxX21vdmVhYmxlLmMK
KyIiIgordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgncHJvZ3JhbScsIGNoZGlyPSdyZWxvY2F0
ZS9zcmMnLCBzdGRvdXQ9ZXhwZWN0KQorCisKK3Rlc3QucnVuX2d5cCgnbGlicmFyeS5neXAnLAor
ICAgICAgICAgICAgICctRGxpYnJhcnk9c3RhdGljX2xpYnJhcnknLAorICAgICAgICAgICAgICct
RG1vdmVhYmxlX2Z1bmN0aW9uPWxpYjInLAorICAgICAgICAgICAgIGNoZGlyPSdyZWxvY2F0ZS9z
cmMnKQorCisjIFVwZGF0ZSBwcm9ncmFtLmMgdG8gZm9yY2UgYSByZWJ1aWxkLgordGVzdC5zbGVl
cCgpCitjb250ZW50cyA9IHRlc3QucmVhZCgncmVsb2NhdGUvc3JjL3Byb2dyYW0uYycpCitjb250
ZW50cyA9IGNvbnRlbnRzLnJlcGxhY2UoJ0hlbGxvJywgJ0hlbGxvIGFnYWluJykKK3Rlc3Qud3Jp
dGUoJ3JlbG9jYXRlL3NyYy9wcm9ncmFtLmMnLCBjb250ZW50cykKKwordGVzdC5idWlsZCgnbGli
cmFyeS5neXAnLCB0ZXN0LkFMTCwgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKK2V4cGVjdCA9ICIi
IlwKK0hlbGxvIGFnYWluIGZyb20gcHJvZ3JhbS5jCitIZWxsbyBmcm9tIGxpYjEuYworSGVsbG8g
ZnJvbSBsaWIyLmMKK0hlbGxvIGZyb20gbGliMl9tb3ZlYWJsZS5jCisiIiIKK3Rlc3QucnVuX2J1
aWx0X2V4ZWN1dGFibGUoJ3Byb2dyYW0nLCBjaGRpcj0ncmVsb2NhdGUvc3JjJywgc3Rkb3V0PWV4
cGVjdCkKKworCit0ZXN0LnJ1bl9neXAoJ2xpYnJhcnkuZ3lwJywKKyAgICAgICAgICAgICAnLURs
aWJyYXJ5PXN0YXRpY19saWJyYXJ5JywKKyAgICAgICAgICAgICAnLURtb3ZlYWJsZV9mdW5jdGlv
bj1saWIxJywKKyAgICAgICAgICAgICBjaGRpcj0ncmVsb2NhdGUvc3JjJykKKworIyBVcGRhdGUg
cHJvZ3JhbS5jIGFuZCBsaWIyLmMgdG8gZm9yY2UgYSByZWJ1aWxkLgordGVzdC5zbGVlcCgpCitj
b250ZW50cyA9IHRlc3QucmVhZCgncmVsb2NhdGUvc3JjL3Byb2dyYW0uYycpCitjb250ZW50cyA9
IGNvbnRlbnRzLnJlcGxhY2UoJ2FnYWluJywgJ2FnYWluIGFnYWluJykKK3Rlc3Qud3JpdGUoJ3Jl
bG9jYXRlL3NyYy9wcm9ncmFtLmMnLCBjb250ZW50cykKKworIyBUT0RPKHNnayk6ICB3ZSBoYXZl
IHRvIGZvcmNlIGEgcmVidWlsZCBvZiBsaWIyIHNvIHRoYXQgaXQgd2VlZHMgb3V0CisjIHRoZSAi
bW92ZWQiIG1vZHVsZS4gIFRoaXMgc2hvdWxkIGJlIGRvbmUgaW4gZ3lwIGJ5IGFkZGluZyBhIGRl
cGVuZGVuY3kKKyMgb24gdGhlIGdlbmVyYXRlZCAudmNwcm9qIGZpbGUgaXRzZWxmLgordGVzdC50
b3VjaCgncmVsb2NhdGUvc3JjL2xpYjIuYycpCisKK3Rlc3QuYnVpbGQoJ2xpYnJhcnkuZ3lwJywg
dGVzdC5BTEwsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQorCitleHBlY3QgPSAiIiJcCitIZWxsbyBh
Z2FpbiBhZ2FpbiBmcm9tIHByb2dyYW0uYworSGVsbG8gZnJvbSBsaWIxLmMKK0hlbGxvIGZyb20g
bGliMi5jCitIZWxsbyBmcm9tIGxpYjFfbW92ZWFibGUuYworIiIiCit0ZXN0LnJ1bl9idWlsdF9l
eGVjdXRhYmxlKCdwcm9ncmFtJywgY2hkaXI9J3JlbG9jYXRlL3NyYycsIHN0ZG91dD1leHBlY3Qp
CisKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvbGlicmFyeS9zcmMvbGliMS5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbGli
cmFyeS9zcmMvbGliMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4NjZiMWI4NDVmZjYxMmQ1NWQyYzJlMWFhMWMw
OTFiZGVjODAxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9saWJyYXJ5L3NyYy9saWIxLmMKQEAgLTAsMCArMSwxMCBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+
CisKKyNpZmRlZiBfV0lOMzIKK19fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2VuZGlmCit2b2lkIGxp
YjFfZnVuY3Rpb24odm9pZCkKK3sKKyAgZnByaW50ZihzdGRvdXQsICJIZWxsbyBmcm9tIGxpYjEu
Y1xuIik7CisgIGZmbHVzaChzdGRvdXQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvbGlicmFyeS9zcmMvbGliMV9tb3ZlYWJsZS5jIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvbGlicmFyeS9zcmMvbGliMV9tb3ZlYWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkM2Nj
MWQ5YWFiMjY3ZTcxYjQ5MTE4MDU1YjBiMzUwYTExYjA2ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9saWJyYXJ5L3NyYy9saWIxX21vdmVhYmxlLmMKQEAg
LTAsMCArMSwxMCBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpZmRlZiBfV0lOMzIKK19fZGVj
bHNwZWMoZGxsZXhwb3J0KQorI2VuZGlmCit2b2lkIG1vdmVhYmxlX2Z1bmN0aW9uKHZvaWQpCit7
CisgIGZwcmludGYoc3Rkb3V0LCAiSGVsbG8gZnJvbSBsaWIxX21vdmVhYmxlLmNcbiIpOworICBm
Zmx1c2goc3Rkb3V0KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L2xpYnJhcnkvc3JjL2xpYjIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpYnJhcnkv
c3JjL2xpYjIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWRkYTcyNjUzMGZjMmFkZjI1YTQ1MDYyZTMwM2MzYTA2
Y2I4ZWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbGli
cmFyeS9zcmMvbGliMi5jCkBAIC0wLDAgKzEsMTAgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCisj
aWZkZWYgX1dJTjMyCitfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyNlbmRpZgordm9pZCBsaWIyX2Z1
bmN0aW9uKHZvaWQpCit7CisgIGZwcmludGYoc3Rkb3V0LCAiSGVsbG8gZnJvbSBsaWIyLmNcbiIp
OworICBmZmx1c2goc3Rkb3V0KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2xpYnJhcnkvc3JjL2xpYjJfbW92ZWFibGUuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2xpYnJhcnkvc3JjL2xpYjJfbW92ZWFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjQ1MDcxZDFl
Yjg2M2UwZTYxYjAwNmE3ZmJiMWI4NDlmOGQxMjljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvbGlicmFyeS9zcmMvbGliMl9tb3ZlYWJsZS5jCkBAIC0wLDAg
KzEsMTAgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaWZkZWYgX1dJTjMyCitfX2RlY2xzcGVj
KGRsbGV4cG9ydCkKKyNlbmRpZgordm9pZCBtb3ZlYWJsZV9mdW5jdGlvbih2b2lkKQoreworICBm
cHJpbnRmKHN0ZG91dCwgIkhlbGxvIGZyb20gbGliMl9tb3ZlYWJsZS5jXG4iKTsKKyAgZmZsdXNo
KHN0ZG91dCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9saWJy
YXJ5L3NyYy9saWJyYXJ5Lmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpYnJhcnkv
c3JjL2xpYnJhcnkuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMzU1MTY0MjYwMzczYTg5OGQ4Y2M4YWRhZTdh
MmIwMjkzNTY5NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9saWJyYXJ5L3NyYy9saWJyYXJ5Lmd5cApAQCAtMCwwICsxLDU4IEBACisjIENvcHlyaWdodCAo
YykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3ZhcmlhYmxlcyc6IHsKKyAg
ICAnbW92ZWFibGVfZnVuY3Rpb24lJzogMCwKKyAgfSwKKyAgJ3RhcmdldHMnOiBbCisgICAgewor
ICAgICAgJ3RhcmdldF9uYW1lJzogJ3Byb2dyYW0nLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJs
ZScsCisgICAgICAnZGVwZW5kZW5jaWVzJzogWworICAgICAgICAnbGliMScsCisgICAgICAgICds
aWIyJywKKyAgICAgIF0sCisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ3Byb2dyYW0uYycs
CisgICAgICBdLAorICAgIH0sCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2xpYjEnLAor
ICAgICAgJ3R5cGUnOiAnPChsaWJyYXJ5KScsCisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAg
J2xpYjEuYycsCisgICAgICBdLAorICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgIFsnbW92
ZWFibGVfZnVuY3Rpb249PSJsaWIxIicsIHsKKyAgICAgICAgICAnc291cmNlcyc6IFsKKyAgICAg
ICAgICAgICdsaWIxX21vdmVhYmxlLmMnLAorICAgICAgICAgIF0sCisgICAgICAgIH1dLAorICAg
ICAgXSwKKyAgICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdsaWIyJywKKyAgICAg
ICd0eXBlJzogJzwobGlicmFyeSknLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdsaWIy
LmMnLAorICAgICAgXSwKKyAgICAgICdjb25kaXRpb25zJzogWworICAgICAgICBbJ21vdmVhYmxl
X2Z1bmN0aW9uPT0ibGliMiInLCB7CisgICAgICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICAg
ICAnbGliMl9tb3ZlYWJsZS5jJywKKyAgICAgICAgICBdLAorICAgICAgICB9XSwKKyAgICAgIF0s
CisgICAgfSwKKyAgXSwKKyAgJ2NvbmRpdGlvbnMnOiBbCisgICAgWydPUz09ImxpbnV4IicsIHsK
KyAgICAgICd0YXJnZXRfZGVmYXVsdHMnOiB7CisgICAgICAgICMgU3VwcG9ydCA2NC1iaXQgc2hh
cmVkIGxpYnMgKGFsc28gd29ya3MgZmluZSBmb3IgMzItYml0KS4KKyAgICAgICAgJ2NmbGFncyc6
IFsnLWZQSUMnXSwKKyAgICAgIH0sCisgICAgfV0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9saWJyYXJ5L3NyYy9wcm9ncmFtLmMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9saWJyYXJ5L3NyYy9wcm9ncmFtLmMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc3MTJj
Y2VkNDI5YzBhOTgzMDZjOTBkOGFmM2UyYzM5NjBlOWZlNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpYnJhcnkvc3JjL3Byb2dyYW0uYwpAQCAtMCwwICsx
LDE1IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKworZXh0ZXJuIHZvaWQgbGliMV9mdW5jdGlvbih2
b2lkKTsKK2V4dGVybiB2b2lkIGxpYjJfZnVuY3Rpb24odm9pZCk7CitleHRlcm4gdm9pZCBtb3Zl
YWJsZV9mdW5jdGlvbih2b2lkKTsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK
K3sKKyAgZnByaW50ZihzdGRvdXQsICJIZWxsbyBmcm9tIHByb2dyYW0uY1xuIik7CisgIGZmbHVz
aChzdGRvdXQpOworICBsaWIxX2Z1bmN0aW9uKCk7CisgIGxpYjJfZnVuY3Rpb24oKTsKKyAgbW92
ZWFibGVfZnVuY3Rpb24oKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9saWJyYXJ5L3NyYy9zaGFyZWRfZGVwZW5kZW5jeS5neXAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9saWJyYXJ5L3NyYy9zaGFyZWRfZGVwZW5kZW5jeS5neXAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2QyOWY1ZGU1OTg1NTFlZjczMGExM2Q2MzUxYTg3ZGQyODU2ZTU0YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpYnJhcnkvc3JjL3No
YXJlZF9kZXBlbmRlbmN5Lmd5cApAQCAtMCwwICsxLDMzIEBACisjIENvcHlyaWdodCAoYykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAg
ICAgJ3RhcmdldF9uYW1lJzogJ2xpYjEnLAorICAgICAgJ3R5cGUnOiAnc2hhcmVkX2xpYnJhcnkn
LAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdsaWIxLmMnLAorICAgICAgXSwKKyAgICB9
LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdsaWIyJywKKyAgICAgICd0eXBlJzogJ3No
YXJlZF9saWJyYXJ5JywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAnbGliMi5jJywKKyAg
ICAgIF0sCisgICAgICAnZGVwZW5kZW5jaWVzJzogWworICAgICAgICAnbGliMScsCisgICAgICBd
LAorICAgIH0sCisgIF0sCisgICdjb25kaXRpb25zJzogWworICAgIFsnT1M9PSJsaW51eCInLCB7
CisgICAgICAndGFyZ2V0X2RlZmF1bHRzJzogeworICAgICAgICAjIFN1cHBvcnQgNjQtYml0IHNo
YXJlZCBsaWJzIChhbHNvIHdvcmtzIGZpbmUgZm9yIDMyLWJpdCkuCisgICAgICAgICdjZmxhZ3Mn
OiBbJy1mUElDJ10sCisgICAgICB9LAorICAgIH1dLAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbGluay1vYmplY3RzL2Jhc2UuYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L2xpbmstb2JqZWN0cy9iYXNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJjMjlhMWIx
ODdlNmMwOGM0OTVmNDdhMWYxZjk4YmY2ZWQ1M2VkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpbmstb2JqZWN0cy9iYXNlLmMKQEAgLTAsMCArMSw2IEBA
Cit2b2lkIGV4dHJhKCk7CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICBl
eHRyYSgpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2xpbmstb2JqZWN0cy9leHRyYS5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
bGluay1vYmplY3RzL2V4dHJhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ3ZWUwOWIxMDc5YTYxNDYxOTg5MDdj
ZjBkZTg1Y2Q3Y2Q4ZjgwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L2xpbmstb2JqZWN0cy9leHRyYS5jCkBAIC0wLDAgKzEsNSBAQAorI2luY2x1ZGUgPHN0
ZGlvLmg+CisKK3ZvaWQgZXh0cmEoKSB7CisgIHByaW50ZigiUEFTU1xuIik7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9saW5rLW9iamVjdHMvZ3lwdGVzdC1hbGwu
cHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9saW5rLW9iamVjdHMvZ3lwdGVzdC1hbGwu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjU4YTM5NjNkMzc1MWZiODlmZDY4ZTY4MTE3MWIzNGY5ZGMzYmI1Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpbmstb2JqZWN0
cy9neXB0ZXN0LWFsbC5weQpAQCAtMCwwICsxLDI1IEBACisjIS91c3IvYmluL2VudiBweXRob24K
KworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1B1
dCBhbiBvYmplY3QgZmlsZSBvbiB0aGUgc291cmNlcyBsaXN0LgorRXhwZWN0IHRoZSByZXN1bHQg
dG8gbGluayBvay4KKyIiIgorCitpbXBvcnQgVGVzdEd5cAorCisjIEN1cnJlbnRseSBvbmx5IHdv
cmtzIHVuZGVyIHRoZSBtYWtlIGJ1aWxkLgordGVzdCA9IFRlc3RHeXAuVGVzdEd5cChmb3JtYXRz
PVsnbWFrZSddKQorCit0ZXN0LnJ1bl9neXAoJ2xpbmstb2JqZWN0cy5neXAnKQorCit0ZXN0LmJ1
aWxkKCdsaW5rLW9iamVjdHMuZ3lwJywgdGVzdC5BTEwpCisKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1
dGFibGUoJ2xpbmstb2JqZWN0cycsIHN0ZG91dD0iUEFTU1xuIikKKwordGVzdC51cF90b19kYXRl
KCdsaW5rLW9iamVjdHMuZ3lwJywgdGVzdC5BTEwpCisKK3Rlc3QucGFzc190ZXN0KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpbmstb2JqZWN0cy9saW5rLW9iamVj
dHMuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbGluay1vYmplY3RzL2xpbmstb2Jq
ZWN0cy5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI3Mjg1NTUzMWFlNjFmNDkzZGQ3ZGRkYWRjMWQ0ZDExN2Zh
NjViZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L2xpbmst
b2JqZWN0cy9saW5rLW9iamVjdHMuZ3lwCkBAIC0wLDAgKzEsMjQgQEAKKyMgQ29weXJpZ2h0IChj
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7
CisgICAgICAndGFyZ2V0X25hbWUnOiAnbGluay1vYmplY3RzJywKKyAgICAgICd0eXBlJzogJ2V4
ZWN1dGFibGUnLAorICAgICAgJ2FjdGlvbnMnOiBbCisgICAgICAgIHsKKyAgICAgICAgICAnYWN0
aW9uX25hbWUnOiAnYnVpbGQgZXh0cmEgb2JqZWN0JywKKyAgICAgICAgICAnaW5wdXRzJzogWydl
eHRyYS5jJ10sCisgICAgICAgICAgJ291dHB1dHMnOiBbJ2V4dHJhLm8nXSwKKyAgICAgICAgICAn
YWN0aW9uJzogWydnY2MnLCAnLW8nLCAnZXh0cmEubycsICctYycsICdleHRyYS5jJ10sCisgICAg
ICAgICAgJ3Byb2Nlc3Nfb3V0cHV0c19hc19zb3VyY2VzJzogMSwKKyAgICAgICAgfSwKKyAgICAg
IF0sCisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ2Jhc2UuYycsCisgICAgICBdLAorICAg
IH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tYWtl
L2RlcGVuZGVuY2llcy5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tYWtlL2RlcGVu
ZGVuY2llcy5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJiZWUyNGZjZWZkOWZiZjM2Y2FiMzJmOGQwMjUzNDU0
YWVkM2RkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21h
a2UvZGVwZW5kZW5jaWVzLmd5cApAQCAtMCwwICsxLDE1IEBACisjIENvcHlyaWdodCAoYykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAg
ICAgJ3RhcmdldF9uYW1lJzogJ21haW4nLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisg
ICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ21haW4uY2MnLAorICAgICAgXSwKKyAgICB9LAor
ICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbWFrZS9neXB0
ZXN0LWRlcGVuZGVuY2llcy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21ha2UvZ3lw
dGVzdC1kZXBlbmRlbmNpZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZjZmQwZTgxOWM2MGZjNmE2NzA4MTZh
MTExNTgyNDRkNjdhZDNlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L21ha2UvZ3lwdGVzdC1kZXBlbmRlbmNpZXMucHkKQEAgLTAsMCArMSwzMSBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKworIiIiCitWZXJpZmllcyB0aGF0IC5kIGZpbGVzIGFuZCBhbGwuZGVwcyBhcmUg
cHJvcGVybHkgZ2VuZXJhdGVkLgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IFRlc3RHeXAKKwor
IyAuZCBmaWxlcyBhcmUgb25seSB1c2VkIGJ5IHRoZSBtYWtlIGJ1aWxkLgordGVzdCA9IFRlc3RH
eXAuVGVzdEd5cChmb3JtYXRzPVsnbWFrZSddKQorCit0ZXN0LnJ1bl9neXAoJ2RlcGVuZGVuY2ll
cy5neXAnKQorCit0ZXN0LmJ1aWxkKCdkZXBlbmRlbmNpZXMuZ3lwJywgdGVzdC5BTEwpCisKK2Rl
cHNfZmlsZSA9IHRlc3QuYnVpbHRfZmlsZV9wYXRoKCIuZGVwcy9vdXQvRGVmYXVsdC9vYmoudGFy
Z2V0L21haW4vbWFpbi5vLmQiKQordGVzdC5tdXN0X2NvbnRhaW4oZGVwc19maWxlLCAibWFpbi5o
IikKKworIyBCdWlsZCBhIHNlY29uZCB0aW1lIHRvIG1ha2Ugc3VyZSB3ZSBnZW5lcmF0ZSBhbGwu
ZGVwcy4KK3Rlc3QuYnVpbGQoJ2RlcGVuZGVuY2llcy5neXAnLCB0ZXN0LkFMTCkKKworYWxsX2Rl
cHNfZmlsZSA9IHRlc3QuYnVpbHRfZmlsZV9wYXRoKCIuZGVwcy9hbGwuZGVwcyIpCit0ZXN0Lm11
c3RfY29udGFpbihhbGxfZGVwc19maWxlLCAibWFpbi5oIikKK3Rlc3QubXVzdF9jb250YWluKGFs
bF9kZXBzX2ZpbGUsICJjbWRfIikKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbWFrZS9neXB0ZXN0LW5vbG9hZC5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L21ha2UvZ3lwdGVzdC1ub2xvYWQucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY1
MTAzMzE1Y2ZjYzFjYTJlZjY1MTllNjViZWMxZWQ4Y2NkMjczMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21ha2UvZ3lwdGVzdC1ub2xvYWQucHkKQEAgLTAs
MCArMSw1NyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitUZXN0cyB0aGUgdXNlIG9mIHRoZSBOT19M
T0FEIGZsYWcgd2hpY2ggbWFrZXMgbG9hZGluZyBzdWIgLm1rIGZpbGVzCitvcHRpb25hbC4KKyIi
IgorCisjIFB5dGhvbiAyLjUgbmVlZHMgdGhpcyBmb3IgdGhlIHdpdGggc3RhdGVtZW50LgorZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAorCitpbXBvcnQgb3MKK2ltcG9ydCBU
ZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoZm9ybWF0cz1bJ21ha2UnXSkKKwordGVz
dC5ydW5fZ3lwKCdhbGwuZ3lwJywgY2hkaXI9J25vbG9hZCcpCisKK3Rlc3QucmVsb2NhdGUoJ25v
bG9hZCcsICdyZWxvY2F0ZS9ub2xvYWQnKQorCit0ZXN0LmJ1aWxkKCdidWlsZC9hbGwuZ3lwJywg
dGVzdC5BTEwsIGNoZGlyPSdyZWxvY2F0ZS9ub2xvYWQnKQordGVzdC5ydW5fYnVpbHRfZXhlY3V0
YWJsZSgnZXhlJywgY2hkaXI9J3JlbG9jYXRlL25vbG9hZCcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZG91dD0nSGVsbG8gZnJvbSBzaGFyZWQuYy5cbicpCisKKyMgSnVzdCBzYW5pdHkg
dGVzdCB0aGF0IE5PX0xPQUQ9bGliIGRvZXNuJ3QgYnJlYWsgYW55dGhpbmcuCit0ZXN0LmJ1aWxk
KCdidWlsZC9hbGwuZ3lwJywgdGVzdC5BTEwsIGNoZGlyPSdyZWxvY2F0ZS9ub2xvYWQnLAorICAg
ICAgICAgICBhcmd1bWVudHM9WydOT19MT0FEPWxpYiddKQordGVzdC5ydW5fYnVpbHRfZXhlY3V0
YWJsZSgnZXhlJywgY2hkaXI9J3JlbG9jYXRlL25vbG9hZCcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZG91dD0nSGVsbG8gZnJvbSBzaGFyZWQuYy5cbicpCit0ZXN0LmJ1aWxkKCdidWls
ZC9hbGwuZ3lwJywgdGVzdC5BTEwsIGNoZGlyPSdyZWxvY2F0ZS9ub2xvYWQnLAorICAgICAgICAg
ICBhcmd1bWVudHM9WydOT19MT0FEPXonXSkKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ2V4
ZScsIGNoZGlyPSdyZWxvY2F0ZS9ub2xvYWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGRvdXQ9J0hlbGxvIGZyb20gc2hhcmVkLmMuXG4nKQorCisjIE1ha2Ugc3VyZSB3ZSBjYW4gcmVi
dWlsZCB3aXRob3V0IHJlbG9hZGluZyB0aGUgc3ViIC5tayBmaWxlLgord2l0aCBvcGVuKCdyZWxv
Y2F0ZS9ub2xvYWQvbWFpbi5jJywgJ2EnKSBhcyBzcmNfZmlsZToKKyAgc3JjX2ZpbGUud3JpdGUo
IlxuIikKK3Rlc3QuYnVpbGQoJ2J1aWxkL2FsbC5neXAnLCB0ZXN0LkFMTCwgY2hkaXI9J3JlbG9j
YXRlL25vbG9hZCcsCisgICAgICAgICAgIGFyZ3VtZW50cz1bJ05PX0xPQUQ9bGliJ10pCit0ZXN0
LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdleGUnLCBjaGRpcj0ncmVsb2NhdGUvbm9sb2FkJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSdIZWxsbyBmcm9tIHNoYXJlZC5jLlxuJykK
KworIyBDaGFuZ2Ugc2hhcmVkLmMsIGJ1dCB2ZXJpZnkgdGhhdCBpdCBkb2Vzbid0IGdldCByZWJ1
aWxkIGlmIHdlIGRvbid0IGxvYWQgaXQuCit3aXRoIG9wZW4oJ3JlbG9jYXRlL25vbG9hZC9saWIv
c2hhcmVkLmMnLCAndycpIGFzIHNoYXJlZF9maWxlOgorICBzaGFyZWRfZmlsZS53cml0ZSgKKyAg
ICAgICcjaW5jbHVkZSAic2hhcmVkLmgiXG4nCisgICAgICAnY29uc3QgY2hhciBrU2hhcmVkU3Ry
W10gPSAibW9kaWZpZWQiO1xuJworICApCit0ZXN0LmJ1aWxkKCdidWlsZC9hbGwuZ3lwJywgdGVz
dC5BTEwsIGNoZGlyPSdyZWxvY2F0ZS9ub2xvYWQnLAorICAgICAgICAgICBhcmd1bWVudHM9WydO
T19MT0FEPWxpYiddKQordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgnZXhlJywgY2hkaXI9J3Jl
bG9jYXRlL25vbG9hZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0nSGVsbG8g
ZnJvbSBzaGFyZWQuYy5cbicpCisKK3Rlc3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21ha2UvbWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L21ha2UvbWFpbi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGFjNmU0NmFlMDcwNmQyNDJkZTRiOTZh
MzFhNWJlYWFmMjI3ZTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvbWFrZS9tYWluLmNjCkBAIC0wLDAgKzEsMTIgQEAKKy8qIENvcHlyaWdodCAoYykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICog
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4gKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNp
bmNsdWRlICJtYWluLmgiCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAg
cHJpbnRmKCJoZWxsbyB3b3JsZFxuIik7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbWFrZS9tYWluLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9tYWtlL21haW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3
NzVhZDhjMmU0OGM1MzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9t
YWtlL25vbG9hZC9hbGwuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbWFrZS9ub2xv
YWQvYWxsLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjE3YTllOTdjOTQ5MjlkZDhmNmUyZGIzYzJmM2IyNzA1
ZDA2ZDU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbWFr
ZS9ub2xvYWQvYWxsLmd5cApAQCAtMCwwICsxLDE4IEBACisjIENvcHlyaWdodCAoYykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAgICAg
J3RhcmdldF9uYW1lJzogJ2V4ZScsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAg
ICdzb3VyY2VzJzogWworICAgICAgICAnbWFpbi5jJywKKyAgICAgIF0sCisgICAgICAnZGVwZW5k
ZW5jaWVzJzogWworICAgICAgICAnbGliL3NoYXJlZC5neXA6c2hhcmVkJywKKyAgICAgIF0sCisg
ICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21h
a2Uvbm9sb2FkL2xpYi9zaGFyZWQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21ha2Uv
bm9sb2FkL2xpYi9zaGFyZWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTc3NmM1YWNmYWI2ZDE2YmMxZWMzNTI5
N2U2MTQwYTc2ODhjMTk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvbWFrZS9ub2xvYWQvbGliL3NoYXJlZC5jCkBAIC0wLDAgKzEsMyBAQAorI2luY2x1ZGUg
InNoYXJlZC5oIgorCitjb25zdCBjaGFyIGtTaGFyZWRTdHJbXSA9ICJzaGFyZWQuYyI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tYWtlL25vbG9hZC9saWIvc2hhcmVk
Lmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21ha2Uvbm9sb2FkL2xpYi9zaGFyZWQu
Z3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhhODg0MWIzYTA2ZTgyZmQ5ZmQyYjhiNDE5NjQxYTA4MjNiMDU2NDEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tYWtlL25vbG9h
ZC9saWIvc2hhcmVkLmd5cApAQCAtMCwwICsxLDE2IEBACisjIENvcHlyaWdodCAoYykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAgICAg
J3RhcmdldF9uYW1lJzogJ3NoYXJlZCcsCisgICAgICAndHlwZSc6ICdzaGFyZWRfbGlicmFyeScs
CisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ3NoYXJlZC5jJywKKyAgICAgICAgJ3NoYXJl
ZC5oJywKKyAgICAgIF0sCisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L21ha2Uvbm9sb2FkL2xpYi9zaGFyZWQuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L21ha2Uvbm9sb2FkL2xpYi9zaGFyZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjFkYTc1
MzhiZjA4YmY1NGIxZmEzNWNkNmYyYmYwNGMxN2Q2MWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbWFrZS9ub2xvYWQvbGliL3NoYXJlZC5oCkBAIC0wLDAg
KzEgQEAKK2V4dGVybiBjb25zdCBjaGFyIGtTaGFyZWRTdHJbXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21ha2Uvbm9sb2FkL21haW4uYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L21ha2Uvbm9sb2FkL21haW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmQzYzUyYzJkNDdj
NjQzN2M1M2ZkMjIwODdjMzZkZjg5MzA2YTJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvbWFrZS9ub2xvYWQvbWFpbi5jCkBAIC0wLDAgKzEsOSBAQAorI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJsaWIvc2hhcmVkLmgiCisKK2ludCBtYWluKGlu
dCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIHByaW50ZigiSGVsbG8gZnJvbSAlcy5cbiIsIGtT
aGFyZWRTdHIpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L21vZHVsZS9neXB0ZXN0LWRlZmF1bHQucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9tb2R1bGUvZ3lwdGVzdC1kZWZhdWx0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiMWM5YjZhODUz
ZjNjYzBmYjdhODhlODE5YTU5NmJhOGJkMjg3YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9tb2R1bGUvZ3lwdGVzdC1kZWZhdWx0LnB5CkBAIC0wLDAgKzEs
MjggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgorVmVyaWZpZXMgc2ltcGxlIGJ1aWxkIG9mIGEgIkhl
bGxvLCB3b3JsZCEiIHByb2dyYW0gd2l0aCBsb2FkYWJsZSBtb2R1bGVzLiBUaGUKK2RlZmF1bHQg
Zm9yIGFsbCBwbGF0Zm9ybXMgc2hvdWxkIGJlIHRvIG91dHB1dCB0aGUgbG9hZGFibGUgbW9kdWxl
cyB0byB0aGUgc2FtZQorcGF0aCBhcyB0aGUgZXhlY3V0YWJsZS4KKyIiIgorCitpbXBvcnQgVGVz
dEd5cAorCit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lwKCkKKwordGVzdC5ydW5fZ3lwKCdtb2R1bGUu
Z3lwJywgY2hkaXI9J3NyYycpCisKK3Rlc3QuYnVpbGQoJ21vZHVsZS5neXAnLCB0ZXN0LkFMTCwg
Y2hkaXI9J3NyYycpCisKK2V4cGVjdCA9ICIiIlwKK0hlbGxvIGZyb20gcHJvZ3JhbS5jCitIZWxs
byBmcm9tIGxpYjEuYworSGVsbG8gZnJvbSBsaWIyLmMKKyIiIgordGVzdC5ydW5fYnVpbHRfZXhl
Y3V0YWJsZSgncHJvZ3JhbScsIGNoZGlyPSdzcmMnLCBzdGRvdXQ9ZXhwZWN0KQorCit0ZXN0LnBh
c3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tb2R1bGUv
c3JjL2xpYjEuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21vZHVsZS9zcmMvbGliMS5j
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhkZTBlOTRiZWU3MDUwODQ4NTIwMmRmM2Y2MjhjMDBiNjcwZGY4MDgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tb2R1bGUvc3JjL2xp
YjEuYwpAQCAtMCwwICsxLDEwIEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2lmZGVmIF9XSU4z
MgorX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZW5kaWYKK3ZvaWQgbW9kdWxlX21haW4odm9pZCkK
K3sKKyAgZnByaW50ZihzdGRvdXQsICJIZWxsbyBmcm9tIGxpYjEuY1xuIik7CisgIGZmbHVzaChz
dGRvdXQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbW9kdWxl
L3NyYy9saWIyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tb2R1bGUvc3JjL2xpYjIu
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNjYzOTZkYzkxY2MzZjZkOTRmNjAwNTRlMjdmZWQwYTEzZDFiMjIxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbW9kdWxlL3NyYy9s
aWIyLmMKQEAgLTAsMCArMSwxMCBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpZmRlZiBfV0lO
MzIKK19fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2VuZGlmCit2b2lkIG1vZHVsZV9tYWluKHZvaWQp
Cit7CisgIGZwcmludGYoc3Rkb3V0LCAiSGVsbG8gZnJvbSBsaWIyLmNcbiIpOworICBmZmx1c2go
c3Rkb3V0KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21vZHVs
ZS9zcmMvbW9kdWxlLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21vZHVsZS9zcmMv
bW9kdWxlLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjQzYzMwMjMwNzQyMDQ3ZmQ0ZDQ4ZmE4MWRmZGNmNDk2
MjEyNWE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbW9k
dWxlL3NyYy9tb2R1bGUuZ3lwCkBAIC0wLDAgKzEsNTUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0X2RlZmF1bHRzJzogeworICAg
ICdjb25kaXRpb25zJzogWworICAgICAgWydPUz09IndpbiInLCB7CisgICAgICAgICdkZWZpbmVz
JzogWydQTEFURk9STV9XSU4nXSwKKyAgICAgIH1dLAorICAgICAgWydPUz09Im1hYyInLCB7Cisg
ICAgICAgICdkZWZpbmVzJzogWydQTEFURk9STV9NQUMnXSwKKyAgICAgIH1dLAorICAgICAgWydP
Uz09ImxpbnV4IicsIHsKKyAgICAgICAgJ2RlZmluZXMnOiBbJ1BMQVRGT1JNX0xJTlVYJ10sCisg
ICAgICAgICMgU3VwcG9ydCA2NC1iaXQgc2hhcmVkIGxpYnMgKGFsc28gd29ya3MgZmluZSBmb3Ig
MzItYml0KS4KKyAgICAgICAgJ2NmbGFncyc6IFsnLWZQSUMnXSwKKyAgICAgICAgJ2xkZmxhZ3Mn
OiBbJy1sZGwnXSwKKyAgICAgIH1dLAorICAgIF0sCisgIH0sCisgICd0YXJnZXRzJzogWworICAg
IHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdwcm9ncmFtJywKKyAgICAgICd0eXBlJzogJ2V4ZWN1
dGFibGUnLAorICAgICAgJ2RlcGVuZGVuY2llcyc6IFsKKyAgICAgICAgJ2xpYjEnLAorICAgICAg
ICAnbGliMicsCisgICAgICBdLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdwcm9ncmFt
LmMnLAorICAgICAgXSwKKyAgICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdsaWIx
JywKKyAgICAgICd0eXBlJzogJ2xvYWRhYmxlX21vZHVsZScsCisgICAgICAncHJvZHVjdF9uYW1l
JzogJ2xpYjEnLAorICAgICAgJ3Byb2R1Y3RfcHJlZml4JzogJycsCisgICAgICAneGNvZGVfc2V0
dGluZ3MnOiB7J09USEVSX0xERkxBR1MnOiBbJy1keW5hbWljbGliJ10sICdNQUNIX09fVFlQRSc6
ICcnfSwKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAnbGliMS5jJywKKyAgICAgIF0sCisg
ICAgfSwKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnbGliMicsCisgICAgICAncHJvZHVj
dF9uYW1lJzogJ2xpYjInLAorICAgICAgJ3Byb2R1Y3RfcHJlZml4JzogJycsCisgICAgICAndHlw
ZSc6ICdsb2FkYWJsZV9tb2R1bGUnLAorICAgICAgJ3hjb2RlX3NldHRpbmdzJzogeydPVEhFUl9M
REZMQUdTJzogWyctZHluYW1pY2xpYiddLCAnTUFDSF9PX1RZUEUnOiAnJ30sCisgICAgICAnc291
cmNlcyc6IFsKKyAgICAgICAgJ2xpYjIuYycsCisgICAgICBdLAorICAgIH0sCisgIF0sCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tb2R1bGUvc3JjL3Byb2dyYW0u
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21vZHVsZS9zcmMvcHJvZ3JhbS5jCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIyZjMzMjA5MTc2MDFkMjgwNGI3NWVlZTYyOGIzMmZkNWI5NDU0ZjkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tb2R1bGUvc3JjL3Byb2dyYW0u
YwpAQCAtMCwwICsxLDExMSBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGli
Lmg+CisKKyNpZiBkZWZpbmVkKFBMQVRGT1JNX1dJTikKKyNpbmNsdWRlIDx3aW5kb3dzLmg+Cisj
ZWxpZiBkZWZpbmVkKFBMQVRGT1JNX01BQykgfHwgZGVmaW5lZChQTEFURk9STV9MSU5VWCkKKyNp
bmNsdWRlIDxkbGZjbi5oPgorI2luY2x1ZGUgPGxpYmdlbi5oPgorI2luY2x1ZGUgPHN0cmluZy5o
PgorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2RlZmluZSBNQVhfUEFUSCBQQVRIX01BWAorI2Vu
ZGlmCisKKyNpZiBkZWZpbmVkKFBMQVRGT1JNX1dJTikKKyNkZWZpbmUgTU9EVUxFX1NVRkZJWCAi
LmRsbCIKKyNlbGlmIGRlZmluZWQoUExBVEZPUk1fTUFDKQorI2RlZmluZSBNT0RVTEVfU1VGRklY
ICIuc28iCisjZWxpZiBkZWZpbmVkKFBMQVRGT1JNX0xJTlVYKQorI2RlZmluZSBNT0RVTEVfU1VG
RklYICIuc28iCisjZW5kaWYKKwordHlwZWRlZiB2b2lkICgqbW9kdWxlX3N5bWJvbCkodm9pZCk7
CitjaGFyIGJpbl9wYXRoW01BWF9QQVRIICsgMV07CisKKwordm9pZCBDYWxsTW9kdWxlKGNvbnN0
IGNoYXIqIG1vZHVsZSkgeworICBjaGFyIG1vZHVsZV9wYXRoW01BWF9QQVRIICsgMV07CisgIGNv
bnN0IGNoYXIqIG1vZHVsZV9mdW5jdGlvbiA9ICJtb2R1bGVfbWFpbiI7CisgIG1vZHVsZV9zeW1i
b2wgZnVuY3B0cjsKKyNpZiBkZWZpbmVkKFBMQVRGT1JNX1dJTikKKyAgSE1PRFVMRSBkbDsKKyAg
Y2hhciBkcml2ZVtfTUFYX0RSSVZFXTsKKyAgY2hhciBkaXJbX01BWF9ESVJdOworCisgIGlmIChf
c3BsaXRwYXRoX3MoYmluX3BhdGgsIGRyaXZlLCBfTUFYX0RSSVZFLCBkaXIsIF9NQVhfRElSLAor
ICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCBOVUxMLCAwKSkgeworICAgIGZwcmludGYoc3Rk
ZXJyLCAiRmFpbGVkIHRvIHNwbGl0IGV4ZWN1dGFibGUgcGF0aC5cbiIpOworICAgIHJldHVybjsK
KyAgfQorICBpZiAoX21ha2VwYXRoX3MobW9kdWxlX3BhdGgsIE1BWF9QQVRILCBkcml2ZSwgZGly
LCBtb2R1bGUsIE1PRFVMRV9TVUZGSVgpKSB7CisgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQg
dG8gY2FsY3VsYXRlIG1vZHVsZSBwYXRoLlxuIik7CisgICAgcmV0dXJuOworICB9CisKKyAgZGwg
PSBMb2FkTGlicmFyeShtb2R1bGVfcGF0aCk7CisgIGlmICghZGwpIHsKKyAgICBmcHJpbnRmKHN0
ZGVyciwgIkZhaWxlZCB0byBvcGVuIG1vZHVsZTogJXNcbiIsIG1vZHVsZV9wYXRoKTsKKyAgICBy
ZXR1cm47CisgIH0KKworICBmdW5jcHRyID0gKG1vZHVsZV9zeW1ib2wpIEdldFByb2NBZGRyZXNz
KGRsLCBtb2R1bGVfZnVuY3Rpb24pOworICBpZiAoIWZ1bmNwdHIpIHsKKyAgICBmcHJpbnRmKHN0
ZGVyciwgIkZhaWxlZCB0byBmaW5kIHN5bWJvbDogJXNcbiIsIG1vZHVsZV9mdW5jdGlvbik7Cisg
ICAgcmV0dXJuOworICB9CisgIGZ1bmNwdHIoKTsKKworICBGcmVlTGlicmFyeShkbCk7CisjZWxp
ZiBkZWZpbmVkKFBMQVRGT1JNX01BQykgfHwgZGVmaW5lZChQTEFURk9STV9MSU5VWCkKKyAgdm9p
ZCogZGw7CisgIGNoYXIqIHBhdGhfY29weSA9IHN0cmR1cChiaW5fcGF0aCk7CisgIGNoYXIqIGJp
bl9kaXIgPSBkaXJuYW1lKHBhdGhfY29weSk7CisgIGludCBwYXRoX3NpemUgPSBzbnByaW50Ziht
b2R1bGVfcGF0aCwgTUFYX1BBVEgsICIlcy8lcyVzIiwgYmluX2RpciwgbW9kdWxlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTU9EVUxFX1NVRkZJWCk7CisgIGZyZWUocGF0aF9jb3B5KTsK
KyAgaWYgKHBhdGhfc2l6ZSA8IDAgfHwgcGF0aF9zaXplID4gTUFYX1BBVEgpIHsKKyAgICBmcHJp
bnRmKHN0ZGVyciwgIkZhaWxlZCB0byBjYWxjdWxhdGUgbW9kdWxlIHBhdGguXG4iKTsKKyAgICBy
ZXR1cm47CisgIH0KKyAgbW9kdWxlX3BhdGhbcGF0aF9zaXplXSA9IDA7CisKKyAgZGwgPSBkbG9w
ZW4obW9kdWxlX3BhdGgsIFJUTERfTEFaWSk7CisgIGlmICghZGwpIHsKKyAgICBmcHJpbnRmKHN0
ZGVyciwgIkZhaWxlZCB0byBvcGVuIG1vZHVsZTogJXNcbiIsIG1vZHVsZV9wYXRoKTsKKyAgICBy
ZXR1cm47CisgIH0KKworICBmdW5jcHRyID0gZGxzeW0oZGwsIG1vZHVsZV9mdW5jdGlvbik7Cisg
IGlmICghZnVuY3B0cikgeworICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGZpbmQgc3lt
Ym9sOiAlc1xuIiwgbW9kdWxlX2Z1bmN0aW9uKTsKKyAgICByZXR1cm47CisgIH0KKyAgZnVuY3B0
cigpOworCisgIGRsY2xvc2UoZGwpOworI2VuZGlmCit9CisKK2ludCBtYWluKGludCBhcmdjLCBj
aGFyICphcmd2W10pCit7CisgIGZwcmludGYoc3Rkb3V0LCAiSGVsbG8gZnJvbSBwcm9ncmFtLmNc
biIpOworICBmZmx1c2goc3Rkb3V0KTsKKworI2lmIGRlZmluZWQoUExBVEZPUk1fV0lOKQorICBp
ZiAoIUdldE1vZHVsZUZpbGVOYW1lKE5VTEwsIGJpbl9wYXRoLCBNQVhfUEFUSCkpIHsKKyAgICBm
cHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBkZXRlcm1pbmUgZXhlY3V0YWJsZSBwYXRoLlxuIik7
CisgICAgcmV0dXJuOworICB9CisjZWxpZiBkZWZpbmVkKFBMQVRGT1JNX01BQykgfHwgZGVmaW5l
ZChQTEFURk9STV9MSU5VWCkKKyAgLy8gVXNpbmcgYXJndlswXSBzaG91bGQgYmUgT0sgaGVyZSBz
aW5jZSB3ZSBjb250cm9sIGhvdyB0aGUgdGVzdHMgcnVuLCBhbmQKKyAgLy8gY2FuIGF2b2lkIGV4
ZWMgYW5kIHN1Y2ggaXNzdWVzIHRoYXQgbWFrZSBpdCB1bnJlbGlhYmxlLgorICBpZiAoIXJlYWxw
YXRoKGFyZ3ZbMF0sIGJpbl9wYXRoKSkgeworICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRv
IGRldGVybWluZSBleGVjdXRhYmxlIHBhdGggKCVzKS5cbiIsIGFyZ3ZbMF0pOworICAgIHJldHVy
bjsKKyAgfQorI2VuZGlmCisKKyAgQ2FsbE1vZHVsZSgibGliMSIpOworICBDYWxsTW9kdWxlKCJs
aWIyIik7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvbXN2cy9leHByZXNzL2Jhc2UvYmFzZS5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9tc3ZzL2V4cHJlc3MvYmFzZS9iYXNlLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2M5ZmM2ZDgxZjFl
OWVlNDg3ZDdkNzZjMjk0MGFjM2FkMTMyY2VhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvbXN2cy9leHByZXNzL2Jhc2UvYmFzZS5neXAKQEAgLTAsMCArMSwy
MiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7Cisg
ICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdhJywKKyAgICAgICd0
eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAnYS5j
JywKKyAgICAgIF0sCisgICAgfSwKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnYicsCisg
ICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCisgICAgICAnc291cmNlcyc6IFsKKyAgICAg
ICAgJ2IuYycsCisgICAgICBdLAorICAgIH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9tc3ZzL2V4cHJlc3MvZXhwcmVzcy5neXAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9tc3ZzL2V4cHJlc3MvZXhwcmVzcy5neXAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTE3
YWJlMmNjMGIxNzA4MzQxOGI1MmU2MTVjNzRiOTllMWY5Y2MxNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21zdnMvZXhwcmVzcy9leHByZXNzLmd5cApAQCAt
MCwwICsxLDE5IEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2V4cHJl
c3MnLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAnZGVwZW5kZW5jaWVzJzog
WworICAgICAgICAnYmFzZS9iYXNlLmd5cDphJywKKyAgICAgICAgJ2Jhc2UvYmFzZS5neXA6Yics
CisgICAgICBdLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdtYWluLmMnLAorICAgICAg
XSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvbXN2cy9leHByZXNzL2d5cHRlc3QtZXhwcmVzcy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L21zdnMvZXhwcmVzcy9neXB0ZXN0LWV4cHJlc3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRjMDZm
NjY0YWU3NTE1ZjFjYTcxYzA4ZDczZTA3NWM1YTBkNmY3YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21zdnMvZXhwcmVzcy9neXB0ZXN0LWV4cHJlc3MucHkK
QEAgLTAsMCArMSwyOSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChj
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyB0aGF0IGZsYXQg
c29sdXRpb25zIGdldCBnZW5lcmF0ZWQgZm9yIEV4cHJlc3MgdmVyc2lvbnMgb2YKK1Zpc3VhbCBT
dHVkaW8uCisiIiIKKworaW1wb3J0IFRlc3RHeXAKKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5cChm
b3JtYXRzPVsnbXN2cyddKQorCit0ZXN0LnJ1bl9neXAoJ2V4cHJlc3MuZ3lwJywgJy1HJywgJ21z
dnNfdmVyc2lvbj0yMDA1JykKK3Rlc3QubXVzdF9jb250YWluKCdleHByZXNzLnNsbicsICcoYmFz
ZSknKQorCit0ZXN0LnJ1bl9neXAoJ2V4cHJlc3MuZ3lwJywgJy1HJywgJ21zdnNfdmVyc2lvbj0y
MDA4JykKK3Rlc3QubXVzdF9jb250YWluKCdleHByZXNzLnNsbicsICcoYmFzZSknKQorCit0ZXN0
LnJ1bl9neXAoJ2V4cHJlc3MuZ3lwJywgJy1HJywgJ21zdnNfdmVyc2lvbj0yMDA1ZScpCit0ZXN0
Lm11c3Rfbm90X2NvbnRhaW4oJ2V4cHJlc3Muc2xuJywgJyhiYXNlKScpCisKK3Rlc3QucnVuX2d5
cCgnZXhwcmVzcy5neXAnLCAnLUcnLCAnbXN2c192ZXJzaW9uPTIwMDhlJykKK3Rlc3QubXVzdF9u
b3RfY29udGFpbignZXhwcmVzcy5zbG4nLCAnKGJhc2UpJykKKworCit0ZXN0LnBhc3NfdGVzdCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tc3ZzL3ByZWNvbXBpbGVk
L2d5cHRlc3QtYWxsLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbXN2cy9wcmVjb21w
aWxlZC9neXB0ZXN0LWFsbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGQ1NjZhZmUwZWIyY2FmZDQ0OTIwNmY0
NDc2NzM4ZDUyYzhlMjFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvbXN2cy9wcmVjb21waWxlZC9neXB0ZXN0LWFsbC5weQpAQCAtMCwwICsxLDIzIEBACisj
IS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmaWVzIHRoYXQgcHJlY29tcGlsZWQgaGVhZGVycyBjYW4g
YmUgc3BlY2lmaWVkLgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRl
c3RHeXAoZm9ybWF0cz1bJ21zdnMnXSkKKwordGVzdC5ydW5fZ3lwKCdoZWxsby5neXAnKQorCit0
ZXN0LmJ1aWxkKCdoZWxsby5neXAnLCAnaGVsbG8nKQorCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRh
YmxlKCdoZWxsbycsIHN0ZG91dD0iSGVsbG8sIHdvcmxkIVxuSGVsbG8sIHR3byFcbiIpCisKK3Rl
c3QudXBfdG9fZGF0ZSgnaGVsbG8uZ3lwJywgdGVzdC5BTEwpCisKK3Rlc3QucGFzc190ZXN0KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21zdnMvcHJlY29tcGlsZWQv
aGVsbG8uYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21zdnMvcHJlY29tcGlsZWQvaGVs
bG8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMWFiYmI5ZTUxNzZiY2FhM2MxNGI2YWE1ZjFjOWZlMjQ1NTkwMjk5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbXN2cy9wcmVj
b21waWxlZC9oZWxsby5jCkBAIC0wLDAgKzEsMTQgQEAKKy8qIENvcHlyaWdodCAoYykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4gKi8KKworLy8gTm90ZSB0aGUgYWJzY2VuY2Ugb2YgYSBz
dGRpby5oIGluY2x1ZGUuICBUaGlzIHdpbGwgYmUgaW5zZXJ0ZWQgYmVjYXVzZSBvZiB0aGUKKy8v
IHByZWNvbXBpbGVkIGhlYWRlci4KKworZXh0ZXJuIGludCBoZWxsbzIoKTsKKworaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworICBwcmludGYoIkhlbGxvLCB3b3JsZCFcbiIpOwor
ICBoZWxsbzIoKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9tc3ZzL3ByZWNvbXBpbGVkL2hlbGxvLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L21zdnMvcHJlY29tcGlsZWQvaGVsbG8uZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5NTMzZWZk
ODUxYzA4ODFiNmViOGI1Nzk1NmRiODEyY2IzNmEyYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tc3ZzL3ByZWNvbXBpbGVkL2hlbGxvLmd5cApAQCAtMCww
ICsxLDE5IEBACisjIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisK
K3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2hlbGxvJywK
KyAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAg
ICdoZWxsby5jJywKKyAgICAgICAgJ2hlbGxvMi5jJywKKyAgICAgICAgJ3ByZWNvbXAuYycsCisg
ICAgICBdLAorICAgICAgJ21zdnNfcHJlY29tcGlsZWRfaGVhZGVyJzogJ3N0ZGlvLmgnLAorICAg
ICAgJ21zdnNfcHJlY29tcGlsZWRfc291cmNlJzogJ3ByZWNvbXAuYycsCisgICAgfSwKKyAgXSwK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L21zdnMvcHJlY29tcGls
ZWQvaGVsbG8yLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tc3ZzL3ByZWNvbXBpbGVk
L2hlbGxvMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2ZDUzMTExZmI4MGQ1MTYzNzY5YmE3YTYxMmVlMjU4MDZi
YTkwYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tc3Zz
L3ByZWNvbXBpbGVkL2hlbGxvMi5jCkBAIC0wLDAgKzEsMTMgQEAKKy8qIENvcHlyaWdodCAoYykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
ICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4gKi8KKworLy8gVW5saWtlIGhlbGxvLmMsIHRo
aXMgZmlsZSBzcGVjaWZpZXMgdGhlIGhlYWRlcnMuCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+Cisj
aW5jbHVkZSA8c3RkaW8uaD4KKworaW50IGhlbGxvMigpIHsKKyAgcHJpbnRmKCJIZWxsbywgdHdv
IVxuIik7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvbXN2cy9wcmVjb21waWxlZC9wcmVjb21wLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9tc3ZzL3ByZWNvbXBpbGVkL3ByZWNvbXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTdjNjFhMzZiYTQ3
NmU1YTA5MTg4MGZmY2Q4ODVmNTAwNGFlY2RlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvbXN2cy9wcmVjb21waWxlZC9wcmVjb21wLmMKQEAgLTAsMCArMSw4
IEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuICovCisK
Ky8vIFRoZSBwcmVjb21waWxlZCBoZWFkZXIgZG9lcyBub3QgaGF2ZSB0byBiZSB0aGUgZmlyc3Qg
b25lIGluIHRoZSBmaWxlLgorCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHN0ZGlv
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tdWx0aXBsZS10YXJn
ZXRzL2d5cHRlc3QtYWxsLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbXVsdGlwbGUt
dGFyZ2V0cy9neXB0ZXN0LWFsbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjE1N2M0ZjgyYTAxNGYyYjk4YjVm
MTg1Yjg1ZTBlYmNjOTBiYTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvbXVsdGlwbGUtdGFyZ2V0cy9neXB0ZXN0LWFsbC5weQpAQCAtMCwwICsxLDM1IEBA
CisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorCisiIiIKKyIiIgorCitpbXBvcnQgVGVzdEd5cAorCit0ZXN0ID0gVGVz
dEd5cC5UZXN0R3lwKCkKKwordGVzdC5ydW5fZ3lwKCdtdWx0aXBsZS5neXAnLCBjaGRpcj0nc3Jj
JykKKwordGVzdC5yZWxvY2F0ZSgnc3JjJywgJ3JlbG9jYXRlL3NyYycpCisKKyMgVE9ETyhzZ2sp
OiAgcmVtb3ZlIHN0ZGVycj1Ob25lIHdoZW4gdGhlIC0tZ2VuZXJhdG9yLW91dHB1dD0gc3VwcG9y
dAorIyBnZXRzIHJpZCBvZiB0aGUgc2NvbnMgd2FybmluZwordGVzdC5idWlsZCgnbXVsdGlwbGUu
Z3lwJywgdGVzdC5BTEwsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnLCBzdGRlcnI9Tm9uZSkKKworZXhw
ZWN0MSA9ICIiIlwKK2hlbGxvIGZyb20gcHJvZzEuYworaGVsbG8gZnJvbSBjb21tb24uYworIiIi
CisKK2V4cGVjdDIgPSAiIiJcCitoZWxsbyBmcm9tIHByb2cyLmMKK2hlbGxvIGZyb20gY29tbW9u
LmMKKyIiIgorCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdwcm9nMScsIHN0ZG91dD1leHBl
Y3QxLCBjaGRpcj0ncmVsb2NhdGUvc3JjJykKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ3By
b2cyJywgc3Rkb3V0PWV4cGVjdDIsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQorCit0ZXN0LnBhc3Nf
dGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tdWx0aXBsZS10
YXJnZXRzL2d5cHRlc3QtZGVmYXVsdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L211
bHRpcGxlLXRhcmdldHMvZ3lwdGVzdC1kZWZhdWx0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNTA3MmQyMzA1
MjA4ZTg2MzMxOWEyZGQyY2M3N2ZmMWY3OWEzYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9tdWx0aXBsZS10YXJnZXRzL2d5cHRlc3QtZGVmYXVsdC5weQpA
QCAtMCwwICsxLDM1IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
IyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKKyIiIgorCitpbXBvcnQgVGVzdEd5
cAorCit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lwKCkKKwordGVzdC5ydW5fZ3lwKCdtdWx0aXBsZS5n
eXAnLCBjaGRpcj0nc3JjJykKKwordGVzdC5yZWxvY2F0ZSgnc3JjJywgJ3JlbG9jYXRlL3NyYycp
CisKKyMgVE9ETyhzZ2spOiAgcmVtb3ZlIHN0ZGVycj1Ob25lIHdoZW4gdGhlIC0tZ2VuZXJhdG9y
LW91dHB1dD0gc3VwcG9ydAorIyBnZXRzIHJpZCBvZiB0aGUgc2NvbnMgd2FybmluZwordGVzdC5i
dWlsZCgnbXVsdGlwbGUuZ3lwJywgY2hkaXI9J3JlbG9jYXRlL3NyYycsIHN0ZGVycj1Ob25lKQor
CitleHBlY3QxID0gIiIiXAoraGVsbG8gZnJvbSBwcm9nMS5jCitoZWxsbyBmcm9tIGNvbW1vbi5j
CisiIiIKKworZXhwZWN0MiA9ICIiIlwKK2hlbGxvIGZyb20gcHJvZzIuYworaGVsbG8gZnJvbSBj
b21tb24uYworIiIiCisKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ3Byb2cxJywgc3Rkb3V0
PWV4cGVjdDEsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJs
ZSgncHJvZzInLCBzdGRvdXQ9ZXhwZWN0MiwgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKK3Rlc3Qu
cGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L211bHRp
cGxlLXRhcmdldHMvc3JjL2NvbW1vbi5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbXVs
dGlwbGUtdGFyZ2V0cy9zcmMvY29tbW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjFkZjdjMTQzMTQ2NGJmZWU3
NmEyYmQwOGFmZjc4NGRlMjgyODZkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L211bHRpcGxlLXRhcmdldHMvc3JjL2NvbW1vbi5jCkBAIC0wLDAgKzEsNyBA
QAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK3ZvaWQgY29tbW9uKHZvaWQpCit7CisgIHByaW50Zigi
aGVsbG8gZnJvbSBjb21tb24uY1xuIik7CisgIHJldHVybjsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L211bHRpcGxlLXRhcmdldHMvc3JjL211bHRpcGxlLmd5cCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L211bHRpcGxlLXRhcmdldHMvc3JjL211bHRpcGxl
Lmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZGI0ZWEzMGNkMGIyOWJlZDhmYzA0MjcyZmQzNmY2NWQxNDgyODIx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbXVsdGlwbGUt
dGFyZ2V0cy9zcmMvbXVsdGlwbGUuZ3lwCkBAIC0wLDAgKzEsMjQgQEAKKyMgQ29weXJpZ2h0IChj
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7
CisgICAgICAndGFyZ2V0X25hbWUnOiAncHJvZzEnLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJs
ZScsCisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ3Byb2cxLmMnLAorICAgICAgICAnY29t
bW9uLmMnLAorICAgICAgXSwKKyAgICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdw
cm9nMicsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICdzb3VyY2VzJzogWwor
ICAgICAgICAncHJvZzIuYycsCisgICAgICAgICdjb21tb24uYycsCisgICAgICBdLAorICAgIH0s
CisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tdWx0aXBs
ZS10YXJnZXRzL3NyYy9wcm9nMS5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvbXVsdGlw
bGUtdGFyZ2V0cy9zcmMvcHJvZzEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTVmOGFmMWQwNDU0NzNlN2MzMGFh
ZmJmMTJhY2NiZDRiZDJiZjMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvbXVsdGlwbGUtdGFyZ2V0cy9zcmMvcHJvZzEuYwpAQCAtMCwwICsxLDEwIEBACisj
aW5jbHVkZSA8c3RkaW8uaD4KKworZXh0ZXJuIHZvaWQgY29tbW9uKHZvaWQpOworCitpbnQgbWFp
bihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICBwcmludGYoImhlbGxvIGZyb20gcHJvZzEu
Y1xuIik7CisgIGNvbW1vbigpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L211bHRpcGxlLXRhcmdldHMvc3JjL3Byb2cyLmMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9tdWx0aXBsZS10YXJnZXRzL3NyYy9wcm9nMi5jCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc2MDU5MGViNjhhYWFkMjVkZTI2MDYwYjFjNDg1ZjdmM2UzN2Y1MjMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9tdWx0aXBsZS10YXJnZXRzL3NyYy9w
cm9nMi5jCkBAIC0wLDAgKzEsMTAgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCitleHRlcm4gdm9p
ZCBjb21tb24odm9pZCk7CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7Cisg
IHByaW50ZigiaGVsbG8gZnJvbSBwcm9nMi5jXG4iKTsKKyAgY29tbW9uKCk7CisgIHJldHVybiAw
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvbm8tb3V0cHV0L2d5
cHRlc3Qtbm8tb3V0cHV0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvbm8tb3V0cHV0
L2d5cHRlc3Qtbm8tb3V0cHV0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MzEyNDFjNTg5MzBkYzEzYjI4NjA3
MTY5NGY2MzQ3ZDQyM2M1YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9uby1vdXRwdXQvZ3lwdGVzdC1uby1vdXRwdXQucHkKQEAgLTAsMCArMSwxOSBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllZCB0aGluZ3MgZG9uJ3QgZXhwbG9kZSB3aGVuIHRo
ZXJlIGFyZSB0YXJnZXRzIHdpdGhvdXQgb3V0cHV0cy4KKyIiIgorCitpbXBvcnQgVGVzdEd5cAor
Cit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lwKCkKKwordGVzdC5ydW5fZ3lwKCdub291dHB1dC5neXAn
LCBjaGRpcj0nc3JjJykKK3Rlc3QucmVsb2NhdGUoJ3NyYycsICdyZWxvY2F0ZS9zcmMnKQordGVz
dC5idWlsZCgnbm9vdXRwdXQuZ3lwJywgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKK3Rlc3QucGFz
c190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L25vLW91dHB1
dC9zcmMvbm9vdXRwdXQuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvbm8tb3V0cHV0
L3NyYy9ub291dHB1dC5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQwMTI0ZWZjMWVlZTkwYjdmYzBiNGJhMTVi
YjIxYWRiZjgwMGQzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L25vLW91dHB1dC9zcmMvbm9vdXRwdXQuZ3lwCkBAIC0wLDAgKzEsMTcgQEAKKyMgQ29weXJp
Z2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsK
KyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnbm9fb3V0cHV0JywKKyAgICAgICd0eXBlJzog
J25vbmUnLAorICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOiB7CisgICAgICAgICdk
ZWZpbmVzJzogWworICAgICAgICAgICdOQURBJywKKyAgICAgICAgXSwKKyAgICAgIH0sCisgICAg
fSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Byb2R1
Y3QvZ3lwdGVzdC1wcm9kdWN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcHJvZHVj
dC9neXB0ZXN0LXByb2R1Y3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk3OTBmMzBkYTU1MjJhODdlYzZiZDU3
Y2E1YTdhMzJjYjkxYjVlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L3Byb2R1Y3QvZ3lwdGVzdC1wcm9kdWN0LnB5CkBAIC0wLDAgKzEsNDMgQEAKKyMhL3Vz
ci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisKKyIiIgorVmVyaWZpZXMgc2ltcGxlc3QtcG9zc2libGUgYnVpbGQgb2YgYSAiSGVs
bG8sIHdvcmxkISIgcHJvZ3JhbQordXNpbmcgdGhlIGRlZmF1bHQgYnVpbGQgdGFyZ2V0LgorIiIi
CisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoKQorCit0ZXN0LnJ1
bl9neXAoJ3Byb2R1Y3QuZ3lwJykKK3Rlc3QuYnVpbGQoJ3Byb2R1Y3QuZ3lwJykKKworIyBleGVj
dXRhYmxlcwordGVzdC5idWlsdF9maWxlX211c3RfZXhpc3QoJ2FsdDEnICsgdGVzdC5fZXhlLCB0
ZXN0LkVYRUNVVEFCTEUsIGJhcmU9VHJ1ZSkKK3Rlc3QuYnVpbHRfZmlsZV9tdXN0X2V4aXN0KCdo
ZWxsbzIuc3R1ZmYnLCB0ZXN0LkVYRUNVVEFCTEUsIGJhcmU9VHJ1ZSkKK3Rlc3QuYnVpbHRfZmls
ZV9tdXN0X2V4aXN0KCd5b2FsdDMuc3R1ZmYnLCB0ZXN0LkVYRUNVVEFCTEUsIGJhcmU9VHJ1ZSkK
KworIyBzaGFyZWQgbGlicmFyaWVzCit0ZXN0LmJ1aWx0X2ZpbGVfbXVzdF9leGlzdCh0ZXN0LmRs
bF8gKyAnYWx0NCcgKyB0ZXN0Ll9kbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
LlNIQVJFRF9MSUIsIGJhcmU9VHJ1ZSkKK3Rlc3QuYnVpbHRfZmlsZV9tdXN0X2V4aXN0KHRlc3Qu
ZGxsXyArICdoZWxsbzUuc3R1ZmYnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC5T
SEFSRURfTElCLCBiYXJlPVRydWUpCit0ZXN0LmJ1aWx0X2ZpbGVfbXVzdF9leGlzdCgneW9hbHQ2
LnN0dWZmJywgdGVzdC5TSEFSRURfTElCLCBiYXJlPVRydWUpCisKKyMgc3RhdGljIGxpYnJhcmll
cwordGVzdC5idWlsdF9maWxlX211c3RfZXhpc3QodGVzdC5saWJfICsgJ2FsdDcnICsgdGVzdC5f
bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC5TVEFUSUNfTElCLCBiYXJlPVRy
dWUpCit0ZXN0LmJ1aWx0X2ZpbGVfbXVzdF9leGlzdCh0ZXN0LmxpYl8gKyAnaGVsbG84LnN0dWZm
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QuU1RBVElDX0xJQiwgYmFyZT1UcnVl
KQordGVzdC5idWlsdF9maWxlX211c3RfZXhpc3QoJ3lvYWx0OS5zdHVmZicsIHRlc3QuU1RBVElD
X0xJQiwgYmFyZT1UcnVlKQorCisjIGFsdGVybmF0ZSBwcm9kdWN0X2RpcgordGVzdC5idWlsdF9m
aWxlX211c3RfZXhpc3QoJ2JvYi95b2FsdDEwLnN0dWZmJywgdGVzdC5FWEVDVVRBQkxFLCBiYXJl
PVRydWUpCit0ZXN0LmJ1aWx0X2ZpbGVfbXVzdF9leGlzdCgnYm9iL3lvYWx0MTEuc3R1ZmYnLCB0
ZXN0LkVYRUNVVEFCTEUsIGJhcmU9VHJ1ZSkKK3Rlc3QuYnVpbHRfZmlsZV9tdXN0X2V4aXN0KCdi
b2IveW9hbHQxMi5zdHVmZicsIHRlc3QuRVhFQ1VUQUJMRSwgYmFyZT1UcnVlKQorCit0ZXN0LnBh
c3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9wcm9kdWN0
L2hlbGxvLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9wcm9kdWN0L2hlbGxvLmMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTQ3OThmM2U3NTFkMGE5NGQ1NTU2MTk4YjQ4NjFkNGQzYjQzMmIwYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Byb2R1Y3QvaGVsbG8uYwpA
QCAtMCwwICsxLDE1IEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCitpbnQgZnVuYzEodm9pZCkgeworICBy
ZXR1cm4gNDI7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgcHJp
bnRmKCJIZWxsbywgd29ybGQhXG4iKTsKKyAgcHJpbnRmKCIlZFxuIiwgZnVuYzEoKSk7CisgIHJl
dHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcHJvZHVj
dC9wcm9kdWN0Lmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Byb2R1Y3QvcHJvZHVj
dC5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzI1ZWFhYWNiNTFiNTE2YzA4YTY0MzQxODMyYjI1MGZlYWE3NWM0
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Byb2R1Y3Qv
cHJvZHVjdC5neXAKQEAgLTAsMCArMSwxMjggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFy
Z2V0X25hbWUnOiAnaGVsbG8xJywKKyAgICAgICdwcm9kdWN0X25hbWUnOiAnYWx0MScsCisgICAg
ICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAnaGVs
bG8uYycsCisgICAgICBdLAorICAgIH0sCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2hl
bGxvMicsCisgICAgICAncHJvZHVjdF9leHRlbnNpb24nOiAnc3R1ZmYnLAorICAgICAgJ3R5cGUn
OiAnZXhlY3V0YWJsZScsCisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ2hlbGxvLmMnLAor
ICAgICAgXSwKKyAgICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdoZWxsbzMnLAor
ICAgICAgJ3Byb2R1Y3RfbmFtZSc6ICdhbHQzJywKKyAgICAgICdwcm9kdWN0X2V4dGVuc2lvbic6
ICdzdHVmZicsCisgICAgICAncHJvZHVjdF9wcmVmaXgnOiAneW8nLAorICAgICAgJ3R5cGUnOiAn
ZXhlY3V0YWJsZScsCisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ2hlbGxvLmMnLAorICAg
ICAgXSwKKyAgICB9LAorCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2hlbGxvNCcsCisg
ICAgICAncHJvZHVjdF9uYW1lJzogJ2FsdDQnLAorICAgICAgJ3R5cGUnOiAnc2hhcmVkX2xpYnJh
cnknLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdoZWxsby5jJywKKyAgICAgIF0sCisg
ICAgfSwKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAnaGVsbG81JywKKyAgICAgICdwcm9k
dWN0X2V4dGVuc2lvbic6ICdzdHVmZicsCisgICAgICAndHlwZSc6ICdzaGFyZWRfbGlicmFyeScs
CisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ2hlbGxvLmMnLAorICAgICAgXSwKKyAgICB9
LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdoZWxsbzYnLAorICAgICAgJ3Byb2R1Y3Rf
bmFtZSc6ICdhbHQ2JywKKyAgICAgICdwcm9kdWN0X2V4dGVuc2lvbic6ICdzdHVmZicsCisgICAg
ICAncHJvZHVjdF9wcmVmaXgnOiAneW8nLAorICAgICAgJ3R5cGUnOiAnc2hhcmVkX2xpYnJhcnkn
LAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdoZWxsby5jJywKKyAgICAgIF0sCisgICAg
fSwKKworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdoZWxsbzcnLAorICAgICAgJ3Byb2R1
Y3RfbmFtZSc6ICdhbHQ3JywKKyAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKKyAgICAg
ICdzb3VyY2VzJzogWworICAgICAgICAnaGVsbG8uYycsCisgICAgICBdLAorICAgIH0sCisgICAg
eworICAgICAgJ3RhcmdldF9uYW1lJzogJ2hlbGxvOCcsCisgICAgICAncHJvZHVjdF9leHRlbnNp
b24nOiAnc3R1ZmYnLAorICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAorICAgICAgJ3Nv
dXJjZXMnOiBbCisgICAgICAgICdoZWxsby5jJywKKyAgICAgIF0sCisgICAgfSwKKyAgICB7Cisg
ICAgICAndGFyZ2V0X25hbWUnOiAnaGVsbG85JywKKyAgICAgICdwcm9kdWN0X25hbWUnOiAnYWx0
OScsCisgICAgICAncHJvZHVjdF9leHRlbnNpb24nOiAnc3R1ZmYnLAorICAgICAgJ3Byb2R1Y3Rf
cHJlZml4JzogJ3lvJywKKyAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKKyAgICAgICdz
b3VyY2VzJzogWworICAgICAgICAnaGVsbG8uYycsCisgICAgICBdLAorICAgIH0sCisgICAgewor
ICAgICAgJ3RhcmdldF9uYW1lJzogJ2hlbGxvMTAnLAorICAgICAgJ3Byb2R1Y3RfbmFtZSc6ICdh
bHQxMCcsCisgICAgICAncHJvZHVjdF9leHRlbnNpb24nOiAnc3R1ZmYnLAorICAgICAgJ3Byb2R1
Y3RfcHJlZml4JzogJ3lvJywKKyAgICAgICdwcm9kdWN0X2Rpcic6ICc8KFBST0RVQ1RfRElSKS9i
b2InLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAnc291cmNlcyc6IFsKKyAg
ICAgICAgJ2hlbGxvLmMnLAorICAgICAgXSwKKyAgICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRf
bmFtZSc6ICdoZWxsbzExJywKKyAgICAgICdwcm9kdWN0X25hbWUnOiAnYWx0MTEnLAorICAgICAg
J3Byb2R1Y3RfZXh0ZW5zaW9uJzogJ3N0dWZmJywKKyAgICAgICdwcm9kdWN0X3ByZWZpeCc6ICd5
bycsCisgICAgICAncHJvZHVjdF9kaXInOiAnPChQUk9EVUNUX0RJUikvYm9iJywKKyAgICAgICd0
eXBlJzogJ3NoYXJlZF9saWJyYXJ5JywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAnaGVs
bG8uYycsCisgICAgICBdLAorICAgIH0sCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2hl
bGxvMTInLAorICAgICAgJ3Byb2R1Y3RfbmFtZSc6ICdhbHQxMicsCisgICAgICAncHJvZHVjdF9l
eHRlbnNpb24nOiAnc3R1ZmYnLAorICAgICAgJ3Byb2R1Y3RfcHJlZml4JzogJ3lvJywKKyAgICAg
ICdwcm9kdWN0X2Rpcic6ICc8KFBST0RVQ1RfRElSKS9ib2InLAorICAgICAgJ3R5cGUnOiAnc3Rh
dGljX2xpYnJhcnknLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdoZWxsby5jJywKKyAg
ICAgIF0sCisgICAgfSwKKyAgXSwKKyAgJ2NvbmRpdGlvbnMnOiBbCisgICAgWydPUz09ImxpbnV4
IicsIHsKKyAgICAgICd0YXJnZXRfZGVmYXVsdHMnOiB7CisgICAgICAgICdjZmxhZ3MnOiBbJy1m
UElDJ10sCisgICAgICB9LAorICAgIH1dLAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMtcmVidWlsZC9neXB0ZXN0LWFsbC5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzLXJlYnVpbGQvZ3lwdGVzdC1hbGwucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWMxYzc0NjYxMjk3ZGU5MGYyMTExMDc3ZTUyOTE2ZmJmYWVkMzE0ZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzLXJlYnVpbGQvZ3lwdGVzdC1h
bGwucHkKQEAgLTAsMCArMSw3MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJp
Z2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyB0aGF0
IGEgcnVsZSB0aGF0IGdlbmVyYXRlcyBtdWx0aXBsZSBvdXRwdXRzIHJlYnVpbGRzCitjb3JyZWN0
bHkgd2hlbiB0aGUgaW5wdXRzIGNoYW5nZS4KKyIiIgorCitpbXBvcnQgVGVzdEd5cAorCit0ZXN0
ID0gVGVzdEd5cC5UZXN0R3lwKCkKKwordGVzdC5ydW5fZ3lwKCdzYW1lX3RhcmdldC5neXAnLCBj
aGRpcj0nc3JjJykKKwordGVzdC5yZWxvY2F0ZSgnc3JjJywgJ3JlbG9jYXRlL3NyYycpCisKKwor
dGVzdC5idWlsZCgnc2FtZV90YXJnZXQuZ3lwJywgdGVzdC5BTEwsIGNoZGlyPSdyZWxvY2F0ZS9z
cmMnKQorCitleHBlY3QgPSAiIiJcCitIZWxsbyBmcm9tIG1haW4uYworSGVsbG8gZnJvbSBwcm9n
MS5pbiEKK0hlbGxvIGZyb20gcHJvZzIuaW4hCisiIiIKKwordGVzdC5ydW5fYnVpbHRfZXhlY3V0
YWJsZSgncHJvZ3JhbScsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnLCBzdGRvdXQ9ZXhwZWN0KQorCit0
ZXN0LnVwX3RvX2RhdGUoJ3NhbWVfdGFyZ2V0Lmd5cCcsICdwcm9ncmFtJywgY2hkaXI9J3JlbG9j
YXRlL3NyYycpCisKKwordGVzdC5zbGVlcCgpCitjb250ZW50cyA9IHRlc3QucmVhZChbJ3JlbG9j
YXRlJywgJ3NyYycsICdwcm9nMS5pbiddKQorY29udGVudHMgPSBjb250ZW50cy5yZXBsYWNlKCch
JywgJyBBR0FJTiEnKQordGVzdC53cml0ZShbJ3JlbG9jYXRlJywgJ3NyYycsICdwcm9nMS5pbidd
LCBjb250ZW50cykKKwordGVzdC5idWlsZCgnc2FtZV90YXJnZXQuZ3lwJywgdGVzdC5BTEwsIGNo
ZGlyPSdyZWxvY2F0ZS9zcmMnKQorCitleHBlY3QgPSAiIiJcCitIZWxsbyBmcm9tIG1haW4uYwor
SGVsbG8gZnJvbSBwcm9nMS5pbiBBR0FJTiEKK0hlbGxvIGZyb20gcHJvZzIuaW4hCisiIiIKKwor
dGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgncHJvZ3JhbScsIGNoZGlyPSdyZWxvY2F0ZS9zcmMn
LCBzdGRvdXQ9ZXhwZWN0KQorCit0ZXN0LnVwX3RvX2RhdGUoJ3NhbWVfdGFyZ2V0Lmd5cCcsICdw
cm9ncmFtJywgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKKwordGVzdC5zbGVlcCgpCitjb250ZW50
cyA9IHRlc3QucmVhZChbJ3JlbG9jYXRlJywgJ3NyYycsICdwcm9nMi5pbiddKQorY29udGVudHMg
PSBjb250ZW50cy5yZXBsYWNlKCchJywgJyBBR0FJTiEnKQordGVzdC53cml0ZShbJ3JlbG9jYXRl
JywgJ3NyYycsICdwcm9nMi5pbiddLCBjb250ZW50cykKKwordGVzdC5idWlsZCgnc2FtZV90YXJn
ZXQuZ3lwJywgdGVzdC5BTEwsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQorCitleHBlY3QgPSAiIiJc
CitIZWxsbyBmcm9tIG1haW4uYworSGVsbG8gZnJvbSBwcm9nMS5pbiBBR0FJTiEKK0hlbGxvIGZy
b20gcHJvZzIuaW4gQUdBSU4hCisiIiIKKwordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgncHJv
Z3JhbScsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnLCBzdGRvdXQ9ZXhwZWN0KQorCit0ZXN0LnVwX3Rv
X2RhdGUoJ3NhbWVfdGFyZ2V0Lmd5cCcsICdwcm9ncmFtJywgY2hkaXI9J3JlbG9jYXRlL3NyYycp
CisKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvcnVsZXMtcmVidWlsZC9neXB0ZXN0LWRlZmF1bHQucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9ydWxlcy1yZWJ1aWxkL2d5cHRlc3QtZGVmYXVsdC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
NDQ0MGQxNTcxN2Q3MGYwNzI1MjEyMmJiNjNhZjZiYmViMjk5N2U0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMtcmVidWlsZC9neXB0ZXN0LWRlZmF1
bHQucHkKQEAgLTAsMCArMSw3MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJp
Z2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyB0aGF0
IGEgcnVsZSB0aGF0IGdlbmVyYXRlcyBtdWx0aXBsZSBvdXRwdXRzIHJlYnVpbGRzCitjb3JyZWN0
bHkgd2hlbiB0aGUgaW5wdXRzIGNoYW5nZS4KKyIiIgorCitpbXBvcnQgVGVzdEd5cAorCit0ZXN0
ID0gVGVzdEd5cC5UZXN0R3lwKCkKKwordGVzdC5ydW5fZ3lwKCdzYW1lX3RhcmdldC5neXAnLCBj
aGRpcj0nc3JjJykKKwordGVzdC5yZWxvY2F0ZSgnc3JjJywgJ3JlbG9jYXRlL3NyYycpCisKKwor
dGVzdC5idWlsZCgnc2FtZV90YXJnZXQuZ3lwJywgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKK2V4
cGVjdCA9ICIiIlwKK0hlbGxvIGZyb20gbWFpbi5jCitIZWxsbyBmcm9tIHByb2cxLmluIQorSGVs
bG8gZnJvbSBwcm9nMi5pbiEKKyIiIgorCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdwcm9n
cmFtJywgY2hkaXI9J3JlbG9jYXRlL3NyYycsIHN0ZG91dD1leHBlY3QpCisKK3Rlc3QudXBfdG9f
ZGF0ZSgnc2FtZV90YXJnZXQuZ3lwJywgJ3Byb2dyYW0nLCBjaGRpcj0ncmVsb2NhdGUvc3JjJykK
KworCit0ZXN0LnNsZWVwKCkKK2NvbnRlbnRzID0gdGVzdC5yZWFkKFsncmVsb2NhdGUnLCAnc3Jj
JywgJ3Byb2cxLmluJ10pCitjb250ZW50cyA9IGNvbnRlbnRzLnJlcGxhY2UoJyEnLCAnIEFHQUlO
IScpCit0ZXN0LndyaXRlKFsncmVsb2NhdGUnLCAnc3JjJywgJ3Byb2cxLmluJ10sIGNvbnRlbnRz
KQorCit0ZXN0LmJ1aWxkKCdzYW1lX3RhcmdldC5neXAnLCBjaGRpcj0ncmVsb2NhdGUvc3JjJykK
KworZXhwZWN0ID0gIiIiXAorSGVsbG8gZnJvbSBtYWluLmMKK0hlbGxvIGZyb20gcHJvZzEuaW4g
QUdBSU4hCitIZWxsbyBmcm9tIHByb2cyLmluIQorIiIiCisKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1
dGFibGUoJ3Byb2dyYW0nLCBjaGRpcj0ncmVsb2NhdGUvc3JjJywgc3Rkb3V0PWV4cGVjdCkKKwor
dGVzdC51cF90b19kYXRlKCdzYW1lX3RhcmdldC5neXAnLCAncHJvZ3JhbScsIGNoZGlyPSdyZWxv
Y2F0ZS9zcmMnKQorCisKK3Rlc3Quc2xlZXAoKQorY29udGVudHMgPSB0ZXN0LnJlYWQoWydyZWxv
Y2F0ZScsICdzcmMnLCAncHJvZzIuaW4nXSkKK2NvbnRlbnRzID0gY29udGVudHMucmVwbGFjZSgn
IScsICcgQUdBSU4hJykKK3Rlc3Qud3JpdGUoWydyZWxvY2F0ZScsICdzcmMnLCAncHJvZzIuaW4n
XSwgY29udGVudHMpCisKK3Rlc3QuYnVpbGQoJ3NhbWVfdGFyZ2V0Lmd5cCcsIGNoZGlyPSdyZWxv
Y2F0ZS9zcmMnKQorCitleHBlY3QgPSAiIiJcCitIZWxsbyBmcm9tIG1haW4uYworSGVsbG8gZnJv
bSBwcm9nMS5pbiBBR0FJTiEKK0hlbGxvIGZyb20gcHJvZzIuaW4gQUdBSU4hCisiIiIKKwordGVz
dC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgncHJvZ3JhbScsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnLCBz
dGRvdXQ9ZXhwZWN0KQorCit0ZXN0LnVwX3RvX2RhdGUoJ3NhbWVfdGFyZ2V0Lmd5cCcsICdwcm9n
cmFtJywgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMtcmVidWlsZC9zcmMvbWFpbi5j
IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMtcmVidWlsZC9zcmMvbWFpbi5jCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJkYzVlYzg3NWVhZmVlYzU3MzJlMWE1NzUzZjA0NWNhYWEwMDUyMDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy1yZWJ1aWxkL3Ny
Yy9tYWluLmMKQEAgLTAsMCArMSwxMiBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2V4dGVybiB2
b2lkIHByb2cxKHZvaWQpOworZXh0ZXJuIHZvaWQgcHJvZzIodm9pZCk7CisKK2ludCBtYWluKGlu
dCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIHByaW50ZigiSGVsbG8gZnJvbSBtYWluLmNcbiIp
OworICBwcm9nMSgpOworICBwcm9nMigpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzLXJlYnVpbGQvc3JjL21ha2Utc291cmNlcy5w
eSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzLXJlYnVpbGQvc3JjL21ha2Utc291
cmNlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZmNlNTU4YjIyNWUxMjIyNGE0YTM0NTc0NWZlZjc5OTJiNzRi
YmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMt
cmVidWlsZC9zcmMvbWFrZS1zb3VyY2VzLnB5CkBAIC0wLDAgKzEsMTUgQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgoraW1wb3J0IHN5cworCithc3NlcnQgbGVuKHN5cy5hcmd2KSA9PSA0LCBzeXMu
YXJndgorCisoaW5fZmlsZSwgY19maWxlLCBoX2ZpbGUpID0gc3lzLmFyZ3ZbMTpdCisKK2RlZiB3
cml0ZV9maWxlKGZpbGVuYW1lLCBjb250ZW50cyk6CisgIG9wZW4oZmlsZW5hbWUsICd3YicpLndy
aXRlKGNvbnRlbnRzKQorCit3cml0ZV9maWxlKGNfZmlsZSwgb3Blbihpbl9maWxlLCAncmInKS5y
ZWFkKCkpCisKK3dyaXRlX2ZpbGUoaF9maWxlLCAnI2RlZmluZSBOQU1FICIlcyJcbicgJSBpbl9m
aWxlKQorCitzeXMuZXhpdCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvcnVsZXMtcmVidWlsZC9zcmMvcHJvZzEuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9ydWxlcy1yZWJ1aWxkL3NyYy9wcm9nMS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTFiMDBlZjFlNmE2MDYx
NDUyMTVjM2U0MjRkMmM3NjNmYmMwOTQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvcnVsZXMtcmVidWlsZC9zcmMvcHJvZzEuaW4KQEAgLTAsMCArMSw3IEBA
CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlICJwcm9nMS5oIgorCit2b2lkIHByb2cxKHZv
aWQpCit7CisgIHByaW50ZigiSGVsbG8gZnJvbSAlcyFcbiIsIE5BTUUpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMtcmVidWlsZC9zcmMvcHJvZzIuaW4g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy1yZWJ1aWxkL3NyYy9wcm9nMi5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YmZhYzUxMDRjOWNhMjU0YmZhM2RiMjJmOWQ4NzkyZDA0MTUzNDJiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMtcmVidWlsZC9z
cmMvcHJvZzIuaW4KQEAgLTAsMCArMSw3IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRl
ICJwcm9nMi5oIgorCit2b2lkIHByb2cyKHZvaWQpCit7CisgIHByaW50ZigiSGVsbG8gZnJvbSAl
cyFcbiIsIE5BTUUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
cnVsZXMtcmVidWlsZC9zcmMvc2FtZV90YXJnZXQuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvcnVsZXMtcmVidWlsZC9zcmMvc2FtZV90YXJnZXQuZ3lwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYmE1
NjA1NmQyNjU1ZmU0YWY2NTdmZjBmYTZjMGEzYWVjY2M3NTAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy1yZWJ1aWxkL3NyYy9zYW1lX3RhcmdldC5n
eXAKQEAgLTAsMCArMSwzMSBAQAoreworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFy
Z2V0X25hbWUnOiAncHJvZ3JhbScsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAg
ICdtc3ZzX2N5Z3dpbl9zaGVsbCc6IDAsCisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ21h
aW4uYycsCisgICAgICAgICdwcm9nMS5pbicsCisgICAgICAgICdwcm9nMi5pbicsCisgICAgICBd
LAorICAgICAgJ3J1bGVzJzogWworICAgICAgICB7CisgICAgICAgICAgJ3J1bGVfbmFtZSc6ICdt
YWtlX3NvdXJjZXMnLAorICAgICAgICAgICdleHRlbnNpb24nOiAnaW4nLAorICAgICAgICAgICdp
bnB1dHMnOiBbCisgICAgICAgICAgICAnbWFrZS1zb3VyY2VzLnB5JywKKyAgICAgICAgICBdLAor
ICAgICAgICAgICdvdXRwdXRzJzogWworICAgICAgICAgICAgJzwoSU5URVJNRURJQVRFX0RJUikv
PChSVUxFX0lOUFVUX1JPT1QpLmMnLAorICAgICAgICAgICAgJzwoSU5URVJNRURJQVRFX0RJUikv
PChSVUxFX0lOUFVUX1JPT1QpLmgnLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ2FjdGlvbic6
IFsKKyAgICAgICAgICAgICdweXRob24nLCAnPChfaW5wdXRzKScsICc8KFJVTEVfSU5QVVRfTkFN
RSknLCAnPEAoX291dHB1dHMpJywKKyAgICAgICAgICBdLAorICAgICAgICAgICdwcm9jZXNzX291
dHB1dHNfYXNfc291cmNlcyc6IDEsCisgICAgICAgIH0sCisgICAgICBdLAorICAgIH0sCisgIF0s
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9neXB0ZXN0
LWFsbC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzL2d5cHRlc3QtYWxsLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhNjlkNjA0MDE0YzhiMTcyZmFiNDQ5N2Q1MDUxYjY1ZThiYWMxMmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9neXB0ZXN0
LWFsbC5weQpAQCAtMCwwICsxLDUwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5
cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmaWVzIHNp
bXBsZSBydWxlcyB3aGVuIHVzaW5nIGFuIGV4cGxpY2l0IGJ1aWxkIHRhcmdldCBvZiAnYWxsJy4K
KyIiIgorCitpbXBvcnQgVGVzdEd5cAorCit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lwKCkKKwordGVz
dC5ydW5fZ3lwKCdhY3Rpb25zLmd5cCcsIGNoZGlyPSdzcmMnKQorCit0ZXN0LnJlbG9jYXRlKCdz
cmMnLCAncmVsb2NhdGUvc3JjJykKKwordGVzdC5idWlsZCgnYWN0aW9ucy5neXAnLCB0ZXN0LkFM
TCwgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKK2V4cGVjdCA9ICIiIlwKK0hlbGxvIGZyb20gcHJv
Z3JhbS5jCitIZWxsbyBmcm9tIGZ1bmN0aW9uMS5pbgorSGVsbG8gZnJvbSBmdW5jdGlvbjIuaW4K
KyIiIgorCitpZiB0ZXN0LmZvcm1hdCA9PSAneGNvZGUnOgorICBjaGRpciA9ICdyZWxvY2F0ZS9z
cmMvc3ViZGlyMScKK2Vsc2U6CisgIGNoZGlyID0gJ3JlbG9jYXRlL3NyYycKK3Rlc3QucnVuX2J1
aWx0X2V4ZWN1dGFibGUoJ3Byb2dyYW0nLCBjaGRpcj1jaGRpciwgc3Rkb3V0PWV4cGVjdCkKKwor
ZXhwZWN0ID0gIiIiXAorSGVsbG8gZnJvbSBwcm9ncmFtLmMKK0hlbGxvIGZyb20gZnVuY3Rpb24z
LmluCisiIiIKKworaWYgdGVzdC5mb3JtYXQgPT0gJ3hjb2RlJzoKKyAgY2hkaXIgPSAncmVsb2Nh
dGUvc3JjL3N1YmRpcjMnCitlbHNlOgorICBjaGRpciA9ICdyZWxvY2F0ZS9zcmMnCit0ZXN0LnJ1
bl9idWlsdF9leGVjdXRhYmxlKCdwcm9ncmFtMicsIGNoZGlyPWNoZGlyLCBzdGRvdXQ9ZXhwZWN0
KQorCit0ZXN0Lm11c3RfbWF0Y2goJ3JlbG9jYXRlL3NyYy9zdWJkaXIyL2ZpbGUxLm91dCcsICJI
ZWxsbyBmcm9tIGZpbGUxLmluXG4iKQordGVzdC5tdXN0X21hdGNoKCdyZWxvY2F0ZS9zcmMvc3Vi
ZGlyMi9maWxlMi5vdXQnLCAiSGVsbG8gZnJvbSBmaWxlMi5pblxuIikKKwordGVzdC5tdXN0X21h
dGNoKCdyZWxvY2F0ZS9zcmMvc3ViZGlyMi9maWxlMS5vdXQyJywgIkhlbGxvIGZyb20gZmlsZTEu
aW5cbiIpCit0ZXN0Lm11c3RfbWF0Y2goJ3JlbG9jYXRlL3NyYy9zdWJkaXIyL2ZpbGUyLm91dDIn
LCAiSGVsbG8gZnJvbSBmaWxlMi5pblxuIikKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMvZ3lwdGVzdC1kZWZhdWx0LnB5IGIv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMvZ3lwdGVzdC1kZWZhdWx0LnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVmNWZjNjFmZDliOGQyZjhiMzA3OTgyNzdlYTljNTZiYTljZjMwYmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9neXB0ZXN0LWRlZmF1
bHQucHkKQEAgLTAsMCArMSw1MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJp
Z2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyBzaW1w
bGUgcnVsZXMgd2hlbiB1c2luZyBhbiBleHBsaWNpdCBidWlsZCB0YXJnZXQgb2YgJ2FsbCcuCisi
IiIKKworaW1wb3J0IFRlc3RHeXAKKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5cCgpCisKK3Rlc3Qu
cnVuX2d5cCgnYWN0aW9ucy5neXAnLCBjaGRpcj0nc3JjJykKKwordGVzdC5yZWxvY2F0ZSgnc3Jj
JywgJ3JlbG9jYXRlL3NyYycpCisKK3Rlc3QuYnVpbGQoJ2FjdGlvbnMuZ3lwJywgY2hkaXI9J3Jl
bG9jYXRlL3NyYycpCisKK2V4cGVjdCA9ICIiIlwKK0hlbGxvIGZyb20gcHJvZ3JhbS5jCitIZWxs
byBmcm9tIGZ1bmN0aW9uMS5pbgorSGVsbG8gZnJvbSBmdW5jdGlvbjIuaW4KKyIiIgorCitpZiB0
ZXN0LmZvcm1hdCA9PSAneGNvZGUnOgorICBjaGRpciA9ICdyZWxvY2F0ZS9zcmMvc3ViZGlyMScK
K2Vsc2U6CisgIGNoZGlyID0gJ3JlbG9jYXRlL3NyYycKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFi
bGUoJ3Byb2dyYW0nLCBjaGRpcj1jaGRpciwgc3Rkb3V0PWV4cGVjdCkKKworZXhwZWN0ID0gIiIi
XAorSGVsbG8gZnJvbSBwcm9ncmFtLmMKK0hlbGxvIGZyb20gZnVuY3Rpb24zLmluCisiIiIKKwor
aWYgdGVzdC5mb3JtYXQgPT0gJ3hjb2RlJzoKKyAgY2hkaXIgPSAncmVsb2NhdGUvc3JjL3N1YmRp
cjMnCitlbHNlOgorICBjaGRpciA9ICdyZWxvY2F0ZS9zcmMnCit0ZXN0LnJ1bl9idWlsdF9leGVj
dXRhYmxlKCdwcm9ncmFtMicsIGNoZGlyPWNoZGlyLCBzdGRvdXQ9ZXhwZWN0KQorCit0ZXN0Lm11
c3RfbWF0Y2goJ3JlbG9jYXRlL3NyYy9zdWJkaXIyL2ZpbGUxLm91dCcsICJIZWxsbyBmcm9tIGZp
bGUxLmluXG4iKQordGVzdC5tdXN0X21hdGNoKCdyZWxvY2F0ZS9zcmMvc3ViZGlyMi9maWxlMi5v
dXQnLCAiSGVsbG8gZnJvbSBmaWxlMi5pblxuIikKKwordGVzdC5tdXN0X21hdGNoKCdyZWxvY2F0
ZS9zcmMvc3ViZGlyMi9maWxlMS5vdXQyJywgIkhlbGxvIGZyb20gZmlsZTEuaW5cbiIpCit0ZXN0
Lm11c3RfbWF0Y2goJ3JlbG9jYXRlL3NyYy9zdWJkaXIyL2ZpbGUyLm91dDInLCAiSGVsbG8gZnJv
bSBmaWxlMi5pblxuIikKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMvc3JjL2FjdGlvbnMuZ3lwIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvcnVsZXMvc3JjL2FjdGlvbnMuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1YzMyY2Y2YzJi
ZDcwODlkMTNkYTMzYmUwZDNhNWY2ZDljYTA1OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9zcmMvYWN0aW9ucy5neXAKQEAgLTAsMCArMSwxOSBA
QAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICd0
YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdwdWxsX2luX2FsbF9hY3Rp
b25zJywKKyAgICAgICd0eXBlJzogJ25vbmUnLAorICAgICAgJ2RlcGVuZGVuY2llcyc6IFsKKyAg
ICAgICAgJ3N1YmRpcjEvZXhlY3V0YWJsZS5neXA6KicsCisgICAgICAgICdzdWJkaXIyL25ldmVy
X3VzZWQuZ3lwOionLAorICAgICAgICAnc3ViZGlyMi9ub19pbnB1dHMuZ3lwOionLAorICAgICAg
ICAnc3ViZGlyMi9ub25lLmd5cDoqJywKKyAgICAgICAgJ3N1YmRpcjMvZXhlY3V0YWJsZTIuZ3lw
OionLAorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvcnVsZXMvc3JjL2NvcHktZmlsZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L3J1bGVzL3NyYy9jb3B5LWZpbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE1ZmVhZTFmMjFl
ZWQ0ZGJkMDE0YWZhOWM1MTkxN2ZiNWVjZmU1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzL3NyYy9jb3B5LWZpbGUucHkKQEAgLTAsMCArMSwxMSBA
QAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KK2ltcG9ydCBzeXMKKworY29udGVudHMgPSBvcGVuKHN5cy5hcmd2WzFd
LCAncicpLnJlYWQoKQorb3BlbihzeXMuYXJndlsyXSwgJ3diJykud3JpdGUoY29udGVudHMpCisK
K3N5cy5leGl0KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxl
cy9zcmMvc3ViZGlyMS9leGVjdXRhYmxlLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L3J1bGVzL3NyYy9zdWJkaXIxL2V4ZWN1dGFibGUuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwMjg1Nzc4OWQ1
OWFjY2VhZGQ2MTUzY2FmZjdlM2MxOTY3NjYzZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9zcmMvc3ViZGlyMS9leGVjdXRhYmxlLmd5cApAQCAt
MCwwICsxLDM3IEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ3Byb2dy
YW0nLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAnbXN2c19jeWd3aW5fc2hl
bGwnOiAwLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdwcm9ncmFtLmMnLAorICAgICAg
ICAnZnVuY3Rpb24xLmluJywKKyAgICAgICAgJ2Z1bmN0aW9uMi5pbicsCisgICAgICBdLAorICAg
ICAgJ3J1bGVzJzogWworICAgICAgICB7CisgICAgICAgICAgJ3J1bGVfbmFtZSc6ICdjb3B5X2Zp
bGUnLAorICAgICAgICAgICdleHRlbnNpb24nOiAnaW4nLAorICAgICAgICAgICdpbnB1dHMnOiBb
CisgICAgICAgICAgICAnLi4vY29weS1maWxlLnB5JywKKyAgICAgICAgICBdLAorICAgICAgICAg
ICdvdXRwdXRzJzogWworICAgICAgICAgICAgIyBUT0RPOiAgZml4IFNDb25zIGFuZCBNYWtlIHRv
IHN1cHBvcnQgZ2VuZXJhdGVkIGZpbGVzIG5vdAorICAgICAgICAgICAgIyBpbiBhIHZhcmlhYmxl
LW5hbWVkIHBhdGggbGlrZSA8KElOVEVSTUVESUFURV9ESVIpCisgICAgICAgICAgICAjJzwoUlVM
RV9JTlBVVF9ST09UKS5jJywKKyAgICAgICAgICAgICc8KElOVEVSTUVESUFURV9ESVIpLzwoUlVM
RV9JTlBVVF9ST09UKS5jJywKKyAgICAgICAgICBdLAorICAgICAgICAgICdhY3Rpb24nOiBbCisg
ICAgICAgICAgICAncHl0aG9uJywgJzwoX2lucHV0cyknLCAnPChSVUxFX0lOUFVUX1BBVEgpJywg
JzxAKF9vdXRwdXRzKScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAncHJvY2Vzc19vdXRwdXRz
X2FzX3NvdXJjZXMnOiAxLAorICAgICAgICB9LAorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMvc3JjL3N1YmRpcjEv
ZnVuY3Rpb24xLmluIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMvc3JjL3N1YmRp
cjEvZnVuY3Rpb24xLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwZmYyODk0OWI5YWY1ODBjZmU2ODM4YmQyZGQ0
ZjVmZDJmNzUzMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9ydWxlcy9zcmMvc3ViZGlyMS9mdW5jdGlvbjEuaW4KQEAgLTAsMCArMSw2IEBACisjaW5jbHVk
ZSA8c3RkaW8uaD4KKwordm9pZCBmdW5jdGlvbjEodm9pZCkKK3sKKyAgcHJpbnRmKCJIZWxsbyBm
cm9tIGZ1bmN0aW9uMS5pblxuIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9ydWxlcy9zcmMvc3ViZGlyMS9mdW5jdGlvbjIuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9ydWxlcy9zcmMvc3ViZGlyMS9mdW5jdGlvbjIuaW4KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZj
ZmMwM2ZkYjkxZWE5ZTkxNWFkNTM1MWMzNmVmZTE0M2YxYzJhYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzL3NyYy9zdWJkaXIxL2Z1bmN0aW9uMi5p
bgpAQCAtMCwwICsxLDYgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCit2b2lkIGZ1bmN0aW9uMih2
b2lkKQoreworICBwcmludGYoIkhlbGxvIGZyb20gZnVuY3Rpb24yLmluXG4iKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzL3NyYy9zdWJkaXIxL3Byb2dy
YW0uYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzL3NyYy9zdWJkaXIxL3Byb2dy
YW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNThkN2Y5OWVmMDJlNzI4OWZiMzZiYjk1NDkzZTg0OWMwYWU5NTk5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMvc3Jj
L3N1YmRpcjEvcHJvZ3JhbS5jCkBAIC0wLDAgKzEsMTIgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgor
CitleHRlcm4gdm9pZCBmdW5jdGlvbjEodm9pZCk7CitleHRlcm4gdm9pZCBmdW5jdGlvbjIodm9p
ZCk7CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIHByaW50ZigiSGVs
bG8gZnJvbSBwcm9ncmFtLmNcbiIpOworICBmdW5jdGlvbjEoKTsKKyAgZnVuY3Rpb24yKCk7Cisg
IHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVs
ZXMvc3JjL3N1YmRpcjIvZmlsZTEuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxl
cy9zcmMvc3ViZGlyMi9maWxlMS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmFjM2FkMzg5ZDBmMzIzYmJlZTVj
MGUzMjdhMWVhYzQyOTI4MWFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvcnVsZXMvc3JjL3N1YmRpcjIvZmlsZTEuaW4KQEAgLTAsMCArMSBAQAorSGVsbG8g
ZnJvbSBmaWxlMS5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVs
ZXMvc3JjL3N1YmRpcjIvZmlsZTIuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxl
cy9zcmMvc3ViZGlyMi9maWxlMi5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjgzZDhlY2VjZTU3NTZkNTFmNmJj
MWUyOGVhM2Q3YjdjYjlmZmE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvcnVsZXMvc3JjL3N1YmRpcjIvZmlsZTIuaW4KQEAgLTAsMCArMSBAQAorSGVsbG8g
ZnJvbSBmaWxlMi5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVs
ZXMvc3JjL3N1YmRpcjIvbmV2ZXJfdXNlZC5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9ydWxlcy9zcmMvc3ViZGlyMi9uZXZlcl91c2VkLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2Y2ZjU1Mzcx
MGNkZDY3MDFhYmUwYTA3NDYyODU4NGZiMjMyODU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMvc3JjL3N1YmRpcjIvbmV2ZXJfdXNlZC5neXAKQEAg
LTAsMCArMSwzMSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorCisjIFRlc3QgdGhhdCB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBhIHJ1bGUgdGhhdCBkb2Vz
bid0IGFwcGx5IHRvIGFueXRoaW5nLgoreworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAn
dGFyZ2V0X25hbWUnOiAnZmlsZXNfbm9faW5wdXQyJywKKyAgICAgICd0eXBlJzogJ25vbmUnLAor
ICAgICAgJ21zdnNfY3lnd2luX3NoZWxsJzogMCwKKyAgICAgICdzb3VyY2VzJzogWworICAgICAg
ICAnZmlsZTEuaW4nLAorICAgICAgICAnZmlsZTIuaW4nLAorICAgICAgXSwKKyAgICAgICdydWxl
cyc6IFsKKyAgICAgICAgeworICAgICAgICAgICdydWxlX25hbWUnOiAnY29weV9maWxlMycsCisg
ICAgICAgICAgJ2V4dGVuc2lvbic6ICdpbjInLAorICAgICAgICAgICdvdXRwdXRzJzogWworICAg
ICAgICAgICAgJzwoUlVMRV9JTlBVVF9ST09UKS5vdXQzJywKKyAgICAgICAgICBdLAorICAgICAg
ICAgICdhY3Rpb24nOiBbCisgICAgICAgICAgICAncHl0aG9uJywgJy4uL2NvcHktZmlsZS5weScs
ICc8KFJVTEVfSU5QVVRfUEFUSCknLCAnPEAoX291dHB1dHMpJywKKyAgICAgICAgICBdLAorICAg
ICAgICAgICdwcm9jZXNzX291dHB1dHNfYXNfc291cmNlcyc6IDEsCisgICAgICAgIH0sCisgICAg
ICBdLAorICAgIH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9ydWxlcy9zcmMvc3ViZGlyMi9ub19pbnB1dHMuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvcnVsZXMvc3JjL3N1YmRpcjIvbm9faW5wdXRzLmd5cApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjFh
MWEzZmY2NzRhYzQ1MjQ0MTAwNDAzZjkwYzIxMmMwMjhhNzQyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMvc3JjL3N1YmRpcjIvbm9faW5wdXRzLmd5
cApAQCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisKKyMgVGVzdCB0aGF0IHRoZSBjYXNlIHdoZXJlIHRoZXJlIGFyZSBubyBpbnB1dHMg
KG90aGVyIHRoYW4gdGhlCisjIGZpbGUgdGhlIHJ1bGUgYXBwbGllcyB0bykuCit7CisgICd0YXJn
ZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdmaWxlc19ub19pbnB1dCcsCisg
ICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICdtc3ZzX2N5Z3dpbl9zaGVsbCc6IDAsCisgICAg
ICAnc291cmNlcyc6IFsKKyAgICAgICAgJ2ZpbGUxLmluJywKKyAgICAgICAgJ2ZpbGUyLmluJywK
KyAgICAgIF0sCisgICAgICAncnVsZXMnOiBbCisgICAgICAgIHsKKyAgICAgICAgICAncnVsZV9u
YW1lJzogJ2NvcHlfZmlsZTInLAorICAgICAgICAgICdleHRlbnNpb24nOiAnaW4nLAorICAgICAg
ICAgICdvdXRwdXRzJzogWworICAgICAgICAgICAgJzwoUlVMRV9JTlBVVF9ST09UKS5vdXQyJywK
KyAgICAgICAgICBdLAorICAgICAgICAgICdhY3Rpb24nOiBbCisgICAgICAgICAgICAncHl0aG9u
JywgJy4uL2NvcHktZmlsZS5weScsICc8KFJVTEVfSU5QVVRfUEFUSCknLCAnPEAoX291dHB1dHMp
JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdwcm9jZXNzX291dHB1dHNfYXNfc291cmNlcyc6
IDEsCisgICAgICAgIH0sCisgICAgICBdLAorICAgIH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9zcmMvc3ViZGlyMi9ub25lLmd5cCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzL3NyYy9zdWJkaXIyL25vbmUuZ3lwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM4YmNkYWJkZjY2MTZlOTFmNjc2ZWU0NzgwZTc2NGRlZTlmMTYzMTYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9zcmMvc3ViZGlyMi9u
b25lLmd5cApAQCAtMCwwICsxLDMzIEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9u
YW1lJzogJ2ZpbGVzJywKKyAgICAgICd0eXBlJzogJ25vbmUnLAorICAgICAgJ21zdnNfY3lnd2lu
X3NoZWxsJzogMCwKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAnZmlsZTEuaW4nLAorICAg
ICAgICAnZmlsZTIuaW4nLAorICAgICAgXSwKKyAgICAgICdydWxlcyc6IFsKKyAgICAgICAgewor
ICAgICAgICAgICdydWxlX25hbWUnOiAnY29weV9maWxlJywKKyAgICAgICAgICAnZXh0ZW5zaW9u
JzogJ2luJywKKyAgICAgICAgICAnaW5wdXRzJzogWworICAgICAgICAgICAgJy4uL2NvcHktZmls
ZS5weScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAgICAgICAg
ICc8KFJVTEVfSU5QVVRfUk9PVCkub3V0JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdhY3Rp
b24nOiBbCisgICAgICAgICAgICAncHl0aG9uJywgJzwoX2lucHV0cyknLCAnPChSVUxFX0lOUFVU
X1BBVEgpJywgJzxAKF9vdXRwdXRzKScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAncHJvY2Vz
c19vdXRwdXRzX2FzX3NvdXJjZXMnOiAxLAorICAgICAgICB9LAorICAgICAgXSwKKyAgICB9LAor
ICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVsZXMvc3Jj
L3N1YmRpcjMvZXhlY3V0YWJsZTIuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvcnVs
ZXMvc3JjL3N1YmRpcjMvZXhlY3V0YWJsZTIuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyYTUyOGZjN2JlYTE4
NmRjOWJmOGQ5MTM2YjM3MGEyMWJjMjU5MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9zcmMvc3ViZGlyMy9leGVjdXRhYmxlMi5neXAKQEAgLTAs
MCArMSwzNyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
CisjIFRoaXMgb25lIHRlc3RzIHRoYXQgcnVsZXMgYXJlIHByb3Blcmx5IHdyaXR0ZW4gaWYgZXh0
ZW5zaW9ucyBhcmUgZGlmZmVyZW50CisjIGJldHdlZW4gdGhlIHRhcmdldCdzIHNvdXJjZXMgKHBy
b2dyYW0uYykgYW5kIHRoZSBnZW5lcmF0ZWQgZmlsZXMKKyMgKGZ1bmN0aW9uMy5jYykKKworewor
ICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAncHJvZ3JhbTInLAor
ICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAnbXN2c19jeWd3aW5fc2hlbGwnOiAw
LAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdwcm9ncmFtLmMnLAorICAgICAgICAnZnVu
Y3Rpb24zLmluJywKKyAgICAgIF0sCisgICAgICAncnVsZXMnOiBbCisgICAgICAgIHsKKyAgICAg
ICAgICAncnVsZV9uYW1lJzogJ2NvcHlfZmlsZScsCisgICAgICAgICAgJ2V4dGVuc2lvbic6ICdp
bicsCisgICAgICAgICAgJ2lucHV0cyc6IFsKKyAgICAgICAgICAgICcuLi9jb3B5LWZpbGUucHkn
LAorICAgICAgICAgIF0sCisgICAgICAgICAgJ291dHB1dHMnOiBbCisgICAgICAgICAgICAnPChT
SEFSRURfSU5URVJNRURJQVRFX0RJUikvPChSVUxFX0lOUFVUX1JPT1QpLmNjJywKKyAgICAgICAg
ICBdLAorICAgICAgICAgICdhY3Rpb24nOiBbCisgICAgICAgICAgICAncHl0aG9uJywgJzwoX2lu
cHV0cyknLCAnPChSVUxFX0lOUFVUX1BBVEgpJywgJzxAKF9vdXRwdXRzKScsCisgICAgICAgICAg
XSwKKyAgICAgICAgICAncHJvY2Vzc19vdXRwdXRzX2FzX3NvdXJjZXMnOiAxLAorICAgICAgICB9
LAorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvcnVsZXMvc3JjL3N1YmRpcjMvZnVuY3Rpb24zLmluIGIvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvcnVsZXMvc3JjL3N1YmRpcjMvZnVuY3Rpb24zLmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk5ZjQ2YWIwNWU2ZWM0YjE4MmVhYTU5ZDA1MjY0ZDY3ZjJjNzczYTEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9ydWxlcy9zcmMvc3ViZGlyMy9mdW5jdGlv
bjMuaW4KQEAgLTAsMCArMSw2IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKworZXh0ZXJuICJDIiB2
b2lkIGZ1bmN0aW9uMyh2b2lkKQoreworICBwcmludGYoIkhlbGxvIGZyb20gZnVuY3Rpb24zLmlu
XG4iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzL3Ny
Yy9zdWJkaXIzL3Byb2dyYW0uYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3J1bGVzL3Ny
Yy9zdWJkaXIzL3Byb2dyYW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGY2YzUwOTEyY2ZjMmY2NmE5YzA4NjYy
YzkxM2Q4ZGZlNjM4MDJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvcnVsZXMvc3JjL3N1YmRpcjMvcHJvZ3JhbS5jCkBAIC0wLDAgKzEsMTAgQEAKKyNpbmNs
dWRlIDxzdGRpby5oPgorCitleHRlcm4gdm9pZCBmdW5jdGlvbjModm9pZCk7CisKK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIHByaW50ZigiSGVsbG8gZnJvbSBwcm9ncmFt
LmNcbiIpOworICBmdW5jdGlvbjMoKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zYW1lLWd5cC1uYW1lL2d5cHRlc3QtYWxsLnB5IGIvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1neXAtbmFtZS9neXB0ZXN0LWFsbC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NjQ1Njg4NWVkMjIzZjY4ZTM2OGVlM2JiMDU1M2UwNGI5NzEzMmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1neXAtbmFtZS9neXB0
ZXN0LWFsbC5weQpAQCAtMCwwICsxLDM0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBD
b3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK0J1aWxkIGEg
Lmd5cCB0aGF0IGRlcGVuZHMgb24gMiBneXAgZmlsZXMgd2l0aCB0aGUgc2FtZSBuYW1lLgorIiIi
CisKK2ltcG9ydCBUZXN0R3lwCisKKyMgVGhpcyBjYXVzZXMgYSBwcm9ibGVtIG9uIFhDb2RlIChk
dXBsaWNhdGUgSUQpLgorIyBTZWUgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2d5cC9pc3N1ZXMv
ZGV0YWlsP2lkPTExNAordGVzdCA9IFRlc3RHeXAuVGVzdEd5cChmb3JtYXRzPVsnbXN2cycsICdz
Y29ucycsICdtYWtlJ10pCisKK3Rlc3QucnVuX2d5cCgnYWxsLmd5cCcsIGNoZGlyPSdzcmMnKQor
Cit0ZXN0LnJlbG9jYXRlKCdzcmMnLCAncmVsb2NhdGUvc3JjJykKKwordGVzdC5idWlsZCgnYWxs
Lmd5cCcsIHRlc3QuQUxMLCBjaGRpcj0ncmVsb2NhdGUvc3JjJykKKworZXhwZWN0MSA9ICIiIlwK
K0hlbGxvIGZyb20gbWFpbjEuY2MKKyIiIgorCitleHBlY3QyID0gIiIiXAorSGVsbG8gZnJvbSBt
YWluMi5jYworIiIiCisKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ3Byb2dyYW0xJywgY2hk
aXI9J3JlbG9jYXRlL3NyYycsIHN0ZG91dD1leHBlY3QxKQordGVzdC5ydW5fYnVpbHRfZXhlY3V0
YWJsZSgncHJvZ3JhbTInLCBjaGRpcj0ncmVsb2NhdGUvc3JjJywgc3Rkb3V0PWV4cGVjdDIpCisK
K3Rlc3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L3NhbWUtZ3lwLW5hbWUvZ3lwdGVzdC1kZWZhdWx0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3Qvc2FtZS1neXAtbmFtZS9neXB0ZXN0LWRlZmF1bHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzEwMzFm
ODZiZDE5MzZlZGUyZmViNzc1NDM3MDYxZDY5ZTZjOTQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NhbWUtZ3lwLW5hbWUvZ3lwdGVzdC1kZWZhdWx0LnB5
CkBAIC0wLDAgKzEsMzQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAo
YykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgorQnVpbGQgYSAuZ3lwIHRoYXQg
ZGVwZW5kcyBvbiAyIGd5cCBmaWxlcyB3aXRoIHRoZSBzYW1lIG5hbWUuCisiIiIKKworaW1wb3J0
IFRlc3RHeXAKKworIyBUaGlzIGNhdXNlcyBhIHByb2JsZW0gb24gWENvZGUgKGR1cGxpY2F0ZSBJ
RCkuCisjIFNlZSBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ3lwL2lzc3Vlcy9kZXRhaWw/aWQ9
MTE0Cit0ZXN0ID0gVGVzdEd5cC5UZXN0R3lwKGZvcm1hdHM9Wydtc3ZzJywgJ3Njb25zJywgJ21h
a2UnXSkKKwordGVzdC5ydW5fZ3lwKCdhbGwuZ3lwJywgY2hkaXI9J3NyYycpCisKK3Rlc3QucmVs
b2NhdGUoJ3NyYycsICdyZWxvY2F0ZS9zcmMnKQorCit0ZXN0LmJ1aWxkKCdhbGwuZ3lwJywgY2hk
aXI9J3JlbG9jYXRlL3NyYycpCisKK2V4cGVjdDEgPSAiIiJcCitIZWxsbyBmcm9tIG1haW4xLmNj
CisiIiIKKworZXhwZWN0MiA9ICIiIlwKK0hlbGxvIGZyb20gbWFpbjIuY2MKKyIiIgorCit0ZXN0
LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdwcm9ncmFtMScsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnLCBz
dGRvdXQ9ZXhwZWN0MSkKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ3Byb2dyYW0yJywgY2hk
aXI9J3JlbG9jYXRlL3NyYycsIHN0ZG91dD1leHBlY3QyKQorCit0ZXN0LnBhc3NfdGVzdCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zYW1lLWd5cC1uYW1lL3NyYy9h
bGwuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1neXAtbmFtZS9zcmMvYWxs
Lmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMjlmMDJlYTg0NWM3NzIwOTEwYjU4MTA3NmZjNjY5YjI4MDRiYzYw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1neXAt
bmFtZS9zcmMvYWxsLmd5cApAQCAtMCwwICsxLDE2IEBACisjIENvcHlyaWdodCAoYykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAgICAg
J3RhcmdldF9uYW1lJzogJ2FsbF9leGVzJywKKyAgICAgICd0eXBlJzogJ25vbmUnLAorICAgICAg
J2RlcGVuZGVuY2llcyc6IFsKKyAgICAgICAgJ3N1YmRpcjEvZXhlY3V0YWJsZS5neXA6KicsCisg
ICAgICAgICdzdWJkaXIyL2V4ZWN1dGFibGUuZ3lwOionLAorICAgICAgXSwKKyAgICB9LAorICBd
LAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1neXAtbmFt
ZS9zcmMvc3ViZGlyMS9leGVjdXRhYmxlLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L3NhbWUtZ3lwLW5hbWUvc3JjL3N1YmRpcjEvZXhlY3V0YWJsZS5neXAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI0
ODNiNGM2OTY2NmQwODJiNTkzZDQwZjIyZThiNzNjMmRkOWZhZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NhbWUtZ3lwLW5hbWUvc3JjL3N1YmRpcjEvZXhl
Y3V0YWJsZS5neXAKQEAgLTAsMCArMSwxNSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorCit7CisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJn
ZXRfbmFtZSc6ICdwcm9ncmFtMScsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAg
ICdzb3VyY2VzJzogWworICAgICAgICAnbWFpbjEuY2MnLAorICAgICAgXSwKKyAgICB9LAorICBd
LAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1neXAtbmFt
ZS9zcmMvc3ViZGlyMS9tYWluMS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NhbWUt
Z3lwLW5hbWUvc3JjL3N1YmRpcjEvbWFpbjEuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY0NTU1ODMyNGQ3MjBm
MDliMDEwOTk2NTI4YmI4M2E4NDIzZGMyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC90ZXN0L3NhbWUtZ3lwLW5hbWUvc3JjL3N1YmRpcjEvbWFpbjEuY2MKQEAgLTAs
MCArMSw2IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKworaW50IG1haW4oKSB7CisgIHByaW50Zigi
SGVsbG8gZnJvbSBtYWluMS5jY1xuIik7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1neXAtbmFtZS9zcmMvc3ViZGlyMi9leGVjdXRh
YmxlLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NhbWUtZ3lwLW5hbWUvc3JjL3N1
YmRpcjIvZXhlY3V0YWJsZS5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM1MzcwMTNlYjE4MTVlNDBmOGQ4Zjkx
NjEzYzhmZjkxYWFkOTVlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L3NhbWUtZ3lwLW5hbWUvc3JjL3N1YmRpcjIvZXhlY3V0YWJsZS5neXAKQEAgLTAsMCAr
MSwxNSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7
CisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdwcm9ncmFtMics
CisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAg
ICAnbWFpbjIuY2MnLAorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1neXAtbmFtZS9zcmMvc3ViZGlyMi9tYWluMi5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NhbWUtZ3lwLW5hbWUvc3JjL3N1YmRpcjIv
bWFpbjIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM3MjRkZWUzNWZlMDAwNzZlMGIzZjc4ZDVlMThkMDU4MzIy
NGFmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NhbWUt
Z3lwLW5hbWUvc3JjL3N1YmRpcjIvbWFpbjIuY2MKQEAgLTAsMCArMSw2IEBACisjaW5jbHVkZSA8
c3RkaW8uaD4KKworaW50IG1haW4oKSB7CisgIHByaW50ZigiSGVsbG8gZnJvbSBtYWluMi5jY1xu
Iik7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3Qvc2FtZS1uYW1lL2d5cHRlc3QtYWxsLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
c2FtZS1uYW1lL2d5cHRlc3QtYWxsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMjE1MDI3YzJhZThhYzVmYTdi
MmFmZjVmN2M4YTUyOWJmNGVlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9zYW1lLW5hbWUvZ3lwdGVzdC1hbGwucHkKQEAgLTAsMCArMSwzNCBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKworIiIiCitCdWlsZCBhIC5neXAgd2l0aCB0d28gdGFyZ2V0cyB0aGF0IHNoYXJl
IGEgY29tbW9uIC5jIHNvdXJjZSBmaWxlLgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3Qg
PSBUZXN0R3lwLlRlc3RHeXAoKQorCit0ZXN0LnJ1bl9neXAoJ2FsbC5neXAnLCBjaGRpcj0nc3Jj
JykKKwordGVzdC5yZWxvY2F0ZSgnc3JjJywgJ3JlbG9jYXRlL3NyYycpCisKK3Rlc3QuYnVpbGQo
J2FsbC5neXAnLCB0ZXN0LkFMTCwgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKK2V4cGVjdDEgPSAi
IiJcCitIZWxsbyBmcm9tIHByb2cxLmMKK0hlbGxvIHByb2cxIGZyb20gZnVuYy5jCisiIiIKKwor
ZXhwZWN0MiA9ICIiIlwKK0hlbGxvIGZyb20gcHJvZzIuYworSGVsbG8gcHJvZzIgZnJvbSBmdW5j
LmMKKyIiIgorCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdwcm9nMScsIGNoZGlyPSdyZWxv
Y2F0ZS9zcmMnLCBzdGRvdXQ9ZXhwZWN0MSkKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ3By
b2cyJywgY2hkaXI9J3JlbG9jYXRlL3NyYycsIHN0ZG91dD1leHBlY3QyKQorCit0ZXN0LnBhc3Nf
dGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zYW1lLW5hbWUv
Z3lwdGVzdC1kZWZhdWx0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1uYW1l
L2d5cHRlc3QtZGVmYXVsdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODc1N2MyNjk3MTU2NGIxNzI5ZTRhYjFm
NzdkM2FlNjQxOGFiYWJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3Qvc2FtZS1uYW1lL2d5cHRlc3QtZGVmYXVsdC5weQpAQCAtMCwwICsxLDM0IEBACisjIS91
c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorCisiIiIKK0J1aWxkIGEgLmd5cCB3aXRoIHR3byB0YXJnZXRzIHRoYXQgc2hhcmUg
YSBjb21tb24gLmMgc291cmNlIGZpbGUuCisiIiIKKworaW1wb3J0IFRlc3RHeXAKKwordGVzdCA9
IFRlc3RHeXAuVGVzdEd5cCgpCisKK3Rlc3QucnVuX2d5cCgnYWxsLmd5cCcsIGNoZGlyPSdzcmMn
KQorCit0ZXN0LnJlbG9jYXRlKCdzcmMnLCAncmVsb2NhdGUvc3JjJykKKwordGVzdC5idWlsZCgn
YWxsLmd5cCcsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQorCitleHBlY3QxID0gIiIiXAorSGVsbG8g
ZnJvbSBwcm9nMS5jCitIZWxsbyBwcm9nMSBmcm9tIGZ1bmMuYworIiIiCisKK2V4cGVjdDIgPSAi
IiJcCitIZWxsbyBmcm9tIHByb2cyLmMKK0hlbGxvIHByb2cyIGZyb20gZnVuYy5jCisiIiIKKwor
dGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgncHJvZzEnLCBjaGRpcj0ncmVsb2NhdGUvc3JjJywg
c3Rkb3V0PWV4cGVjdDEpCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdwcm9nMicsIGNoZGly
PSdyZWxvY2F0ZS9zcmMnLCBzdGRvdXQ9ZXhwZWN0MikKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1uYW1lL3NyYy9hbGwuZ3lw
IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1uYW1lL3NyYy9hbGwuZ3lwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ0ZTEwNDk4MjFiMGE0NWQ0MTNlYTUxNzcyZGEyMDhiZjkyMTM5OWEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zYW1lLW5hbWUvc3JjL2FsbC5n
eXAKQEAgLTAsMCArMSwzOCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorCit7CisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6
ICdwcm9nMScsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICdkZWZpbmVzJzog
WworICAgICAgICAnUFJPRz0icHJvZzEiJywKKyAgICAgIF0sCisgICAgICAnc291cmNlcyc6IFsK
KyAgICAgICAgJ3Byb2cxLmMnLAorICAgICAgICAnZnVuYy5jJywKKyAgICAgICAgIyBVbmNvbW1l
bnQgdG8gdGVzdCBzYW1lLW5hbWVkIGZpbGVzIGluIGRpZmZlcmVudCBkaXJlY3RvcmllcywKKyAg
ICAgICAgIyB3aGljaCBWaXN1YWwgU3R1ZGlvIGRvZXNuJ3Qgc3VwcG9ydC4KKyAgICAgICAgIydz
dWJkaXIxL2Z1bmMuYycsCisgICAgICAgICMnc3ViZGlyMi9mdW5jLmMnLAorICAgICAgXSwKKyAg
ICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdwcm9nMicsCisgICAgICAndHlwZSc6
ICdleGVjdXRhYmxlJywKKyAgICAgICdkZWZpbmVzJzogWworICAgICAgICAnUFJPRz0icHJvZzIi
JywKKyAgICAgIF0sCisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ3Byb2cyLmMnLAorICAg
ICAgICAnZnVuYy5jJywKKyAgICAgICAgIyBVbmNvbW1lbnQgdG8gdGVzdCBzYW1lLW5hbWVkIGZp
bGVzIGluIGRpZmZlcmVudCBkaXJlY3RvcmllcywKKyAgICAgICAgIyB3aGljaCBWaXN1YWwgU3R1
ZGlvIGRvZXNuJ3Qgc3VwcG9ydC4KKyAgICAgICAgIydzdWJkaXIxL2Z1bmMuYycsCisgICAgICAg
ICMnc3ViZGlyMi9mdW5jLmMnLAorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1uYW1lL3NyYy9mdW5jLmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zYW1lLW5hbWUvc3JjL2Z1bmMuYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
MDY5YzY5MmE2OWM5MTZlNDNlZDVkMGU5ZTZhMTgyY2U3NmQzNDBlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1uYW1lL3NyYy9mdW5jLmMKQEAgLTAs
MCArMSw2IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKwordm9pZCBmdW5jKHZvaWQpCit7CisgIHBy
aW50ZigiSGVsbG8gJXMgZnJvbSBmdW5jLmNcbiIsIFBST0cpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1uYW1lL3NyYy9wcm9nMS5jIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS1uYW1lL3NyYy9wcm9nMS5jCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4OTQw
ZmVkYzNhZjBiNTFkN2EwYTI3YmE3NWMxOTRiNjEyYjczZDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zYW1lLW5hbWUvc3JjL3Byb2cxLmMKQEAgLTAsMCAr
MSwxNiBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2V4dGVybiB2b2lkIGZ1bmModm9pZCk7CisK
K2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIHByaW50ZigiSGVsbG8gZnJv
bSBwcm9nMS5jXG4iKTsKKyAgZnVuYygpOworICAvKgorICAgKiBVbmNvbW1lbnQgdG8gdGVzdCBz
YW1lLW5hbWVkIGZpbGVzIGluIGRpZmZlcmVudCBkaXJlY3RvcmllcywKKyAgICogd2hpY2ggVmlz
dWFsIFN0dWRpbyBkb2Vzbid0IHN1cHBvcnQuCisgIHN1YmRpcjFfZnVuYygpOworICBzdWJkaXIy
X2Z1bmMoKTsKKyAgICovCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3Qvc2FtZS1uYW1lL3NyYy9wcm9nMi5jIGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3Qvc2FtZS1uYW1lL3NyYy9wcm9nMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NjA1YzJiZDk5NTAz
YjljMGM2N2Y3MTkyZmQ1NDU4MDYyMmRiODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9zYW1lLW5hbWUvc3JjL3Byb2cyLmMKQEAgLTAsMCArMSwxNiBAQAor
I2luY2x1ZGUgPHN0ZGlvLmg+CisKK2V4dGVybiB2b2lkIGZ1bmModm9pZCk7CisKK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIHByaW50ZigiSGVsbG8gZnJvbSBwcm9nMi5j
XG4iKTsKKyAgZnVuYygpOworICAvKgorICAgKiBVbmNvbW1lbnQgdG8gdGVzdCBzYW1lLW5hbWVk
IGZpbGVzIGluIGRpZmZlcmVudCBkaXJlY3RvcmllcywKKyAgICogd2hpY2ggVmlzdWFsIFN0dWRp
byBkb2Vzbid0IHN1cHBvcnQuCisgIHN1YmRpcjFfZnVuYygpOworICBzdWJkaXIyX2Z1bmMoKTsK
KyAgICovCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3Qvc2FtZS1uYW1lL3NyYy9zdWJkaXIxL2Z1bmMuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L3NhbWUtbmFtZS9zcmMvc3ViZGlyMS9mdW5jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjczNDUwZDEw
NWVmMzAxYTQxODg2YjQ3MWYyZWRlZWQ1ZjRmYjAzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NhbWUtbmFtZS9zcmMvc3ViZGlyMS9mdW5jLmMKQEAgLTAs
MCArMSw2IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKwordm9pZCBzdWJkaXIxX2Z1bmModm9pZCkK
K3sKKyAgcHJpbnRmKCJIZWxsbyAlcyBmcm9tIHN1YmRpcjEvZnVuYy5jXG4iLCBQUk9HKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NhbWUtbmFtZS9zcmMvc3Vi
ZGlyMi9mdW5jLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zYW1lLW5hbWUvc3JjL3N1
YmRpcjIvZnVuYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyNDhiNTcyMGUwYzkyZWQyOGMyNTMxNjZlY2FlZjA1
ZDYxNmZiNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9z
YW1lLW5hbWUvc3JjL3N1YmRpcjIvZnVuYy5jCkBAIC0wLDAgKzEsNiBAQAorI2luY2x1ZGUgPHN0
ZGlvLmg+CisKK3ZvaWQgc3ViZGlyMl9mdW5jKHZvaWQpCit7CisgIHByaW50ZigiSGVsbG8gJXMg
ZnJvbSBzdWJkaXIyL2Z1bmMuY1xuIiwgUFJPRyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC9zYW1lLXRhcmdldC1uYW1lL2d5cHRlc3Qtc2FtZS10YXJnZXQtbmFt
ZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NhbWUtdGFyZ2V0LW5hbWUvZ3lwdGVz
dC1zYW1lLXRhcmdldC1uYW1lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmZTU1NDBmMzEyMjNmMzU3YjNkMDQ1
NTI4N2JmNjYxZDZmOWRhYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9zYW1lLXRhcmdldC1uYW1lL2d5cHRlc3Qtc2FtZS10YXJnZXQtbmFtZS5weQpAQCAt
MCwwICsxLDE4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK0NoZWNrIHRoYXQgZHVwbGljYXRlIHRh
cmdldHMgaW4gYSBkaXJlY3RvcnkgZ2l2ZXMgYW4gZXJyb3IuCisiIiIKKworaW1wb3J0IFRlc3RH
eXAKKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5cCgpCisKKyMgUmVxdWlyZSB0aGF0IGd5cCBmaWxl
cyB3aXRoIGR1cGxpY2F0ZSB0YXJnZXRzIHNwaXQgb3V0IGFuIGVycm9yLgordGVzdC5ydW5fZ3lw
KCdhbGwuZ3lwJywgY2hkaXI9J3NyYycsIHN0YXR1cz0xLCBzdGRlcnI9Tm9uZSkKKwordGVzdC5w
YXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2FtZS10
YXJnZXQtbmFtZS9zcmMvYWxsLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NhbWUt
dGFyZ2V0LW5hbWUvc3JjL2FsbC5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWMxNjk3NmRhNmFmMTRhMjI3NTEz
M2VjNGQyOTI3MGNmNzJhNGZlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L3NhbWUtdGFyZ2V0LW5hbWUvc3JjL2FsbC5neXAKQEAgLTAsMCArMSwxNiBAQAor
IyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICd0YXJn
ZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdhbGxfZXhlcycsCisgICAgICAn
dHlwZSc6ICdub25lJywKKyAgICAgICdkZXBlbmRlbmNpZXMnOiBbCisgICAgICAgICdleGVjdXRh
YmxlMS5neXA6KicsCisgICAgICAgICdleGVjdXRhYmxlMi5neXA6KicsCisgICAgICBdLAorICAg
IH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zYW1l
LXRhcmdldC1uYW1lL3NyYy9leGVjdXRhYmxlMS5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC9zYW1lLXRhcmdldC1uYW1lL3NyYy9leGVjdXRhYmxlMS5neXAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M0
OTJjMWIzNzU2MDNjMWMwYTg4ZTA3ODYxNmVlMGExMjAyMjJiZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NhbWUtdGFyZ2V0LW5hbWUvc3JjL2V4ZWN1dGFi
bGUxLmd5cApAQCAtMCwwICsxLDE1IEBACisjIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisKK3sKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9u
YW1lJzogJ3Byb2dyYW0nLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAnc291
cmNlcyc6IFsKKyAgICAgICAgJ21haW4xLmNjJywKKyAgICAgIF0sCisgICAgfSwKKyAgXSwKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NhbWUtdGFyZ2V0LW5hbWUv
c3JjL2V4ZWN1dGFibGUyLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3NhbWUtdGFy
Z2V0LW5hbWUvc3JjL2V4ZWN1dGFibGUyLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWU4NGE2MWM2NzliZjVm
OTllZTgzMjk1ZGU4ODA5YTRmMDQxZWVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3Qvc2FtZS10YXJnZXQtbmFtZS9zcmMvZXhlY3V0YWJsZTIuZ3lwCkBAIC0w
LDAgKzEsMTUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAncHJvZ3Jh
bScsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICdzb3VyY2VzJzogWworICAg
ICAgICAnbWFpbjIuY2MnLAorICAgICAgXSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2NvbnNfdG9vbHMvZ3lwdGVzdC10b29scy5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Njb25zX3Rvb2xzL2d5cHRlc3QtdG9vbHMucHkK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTk3ZjVlNjMxOGZmZGIwZDhiOWJiNzM3MDM3ZTQzYmEyYjAyYzk3OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Njb25zX3Rvb2xzL2d5
cHRlc3QtdG9vbHMucHkKQEAgLTAsMCArMSwyNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisK
KyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJp
ZmllcyB0aGF0IGEgc2NvbnMgYnVpbGQgcGlja3MgdXAgdG9vbHMgbW9kdWxlcyBzcGVjaWZpZWQK
K3ZpYSAnc2NvbnNfdG9vbHMnIGluIHRoZSAnc2NvbnNfc2V0dGluZ3MnIGRpY3Rpb25hcnkuCisi
IiIKKworaW1wb3J0IFRlc3RHeXAKKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5cCgpCisKK3Rlc3Qu
cnVuX2d5cCgndG9vbHMuZ3lwJykKKwordGVzdC5idWlsZCgndG9vbHMuZ3lwJywgdGVzdC5BTEwp
CisKK2lmIHRlc3QuZm9ybWF0ID09ICdzY29ucyc6CisgIGV4cGVjdCA9ICJIZWxsbywgd29ybGQh
XG4iCitlbHNlOgorICBleHBlY3QgPSAiIgordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgndG9v
bHMnLCBzdGRvdXQ9ZXhwZWN0KQorCit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zY29uc190b29scy9zaXRlX3Njb25zL3NpdGVfdG9vbHMv
dGhpc190b29sLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2NvbnNfdG9vbHMvc2l0
ZV9zY29ucy9zaXRlX3Rvb2xzL3RoaXNfdG9vbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGM4OTQ3NmQ3YzRk
YjQwMTAzZWYwM2E0MjY4ZGE1YzM1NjhlODZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3Qvc2NvbnNfdG9vbHMvc2l0ZV9zY29ucy9zaXRlX3Rvb2xzL3RoaXNf
dG9vbC5weQpAQCAtMCwwICsxLDEwIEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisKKyMgU0NvbnMgInRvb2wiIG1vZHVsZSB0aGF0IHNpbXBseSBzZXRzIGEg
LUQgdmFsdWUuCitkZWYgZ2VuZXJhdGUoZW52KToKKyAgZW52WydDUFBERUZJTkVTJ10gPSBbJ1RI
SVNfVE9PTCddCisKK2RlZiBleGlzdHMoZW52KToKKyAgcGFzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2NvbnNfdG9vbHMvdG9vbHMuYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L3Njb25zX3Rvb2xzL3Rvb2xzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhkYzBlMzFlZjQ3
MjBlMWZkNjAzODMwYzZjMGNiYmE4MTk0ZGJmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L3Njb25zX3Rvb2xzL3Rvb2xzLmMKQEAgLTAsMCArMSwxMyBAQAor
LyogQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLiAqLworCisjaW5j
bHVkZSA8c3RkaW8uaD4KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyNp
ZmRlZiBUSElTX1RPT0wKKyAgcHJpbnRmKCJIZWxsbywgd29ybGQhXG4iKTsKKyNlbmRpZgorICBy
ZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Njb25z
X3Rvb2xzL3Rvb2xzLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Njb25zX3Rvb2xz
L3Rvb2xzLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzZiYTNmMjI0NzIyOTU1YWI4N2IxNWExYmZiMzRlZGZk
NzAyMWE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2Nv
bnNfdG9vbHMvdG9vbHMuZ3lwCkBAIC0wLDAgKzEsMTggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAg
ICAndGFyZ2V0X25hbWUnOiAndG9vbHMnLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisg
ICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ3Rvb2xzLmMnLAorICAgICAgXSwKKyAgICB9LAor
ICBdLAorICAnc2NvbnNfc2V0dGluZ3MnOiB7CisgICAgJ3Rvb2xzJzogWydkZWZhdWx0JywgJ3Ro
aXNfdG9vbCddLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3Qvc2libGluZy9neXB0ZXN0LWFsbC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Np
YmxpbmcvZ3lwdGVzdC1hbGwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA0YzJkNDg2MTE3YjA2MmRhMmJlMWQy
MmQ3NjE1ZjRjNDFiMzE4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L3NpYmxpbmcvZ3lwdGVzdC1hbGwucHkKQEAgLTAsMCArMSwzOSBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworIiIiCisiIiIKKworaW1wb3J0IFRlc3RHeXAKKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5
cCgpCisKK3Rlc3QucnVuX2d5cCgnYnVpbGQvYWxsLmd5cCcsIGNoZGlyPSdzcmMnKQorCit0ZXN0
LmJ1aWxkKCdidWlsZC9hbGwuZ3lwJywgdGVzdC5BTEwsIGNoZGlyPSdzcmMnKQorCitjaGRpciA9
ICdzcmMvYnVpbGQnCisKKyMgVGhlIHRvcC1sZXZlbCBNYWtlZmlsZSBpcyBpbiB0aGUgZGlyZWN0
b3J5IHdoZXJlIGd5cCB3YXMgcnVuLgorIyBUT0RPKG1tb3NzKSBTaG91bGQgdGhlIE1ha2VmaWxl
IGdvIGluIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIHBhc3NlZCBpbiAuZ3lwCisjIGZpbGU/IFdoYXQg
YWJvdXQgd2hlbiBwYXNzaW5nIGluIG11bHRpcGxlIC5neXAgZmlsZXM/IFdvdWxkIHN1Yi1wcm9q
ZWN0CisjIE1ha2VmaWxlcyAoc2VlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNDAw
MDggY29tbWVudHMpIHNvbHZlIHRoaXM/CitpZiB0ZXN0LmZvcm1hdCA9PSAnbWFrZSc6CisgIGNo
ZGlyID0gJ3NyYycKKworaWYgdGVzdC5mb3JtYXQgPT0gJ3hjb2RlJzoKKyAgY2hkaXIgPSAnc3Jj
L3Byb2cxJwordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgncHJvZzEnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGRpcj1jaGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
b3V0PSJIZWxsbyBmcm9tIHByb2cxLmNcbiIpCisKK2lmIHRlc3QuZm9ybWF0ID09ICd4Y29kZSc6
CisgIGNoZGlyID0gJ3NyYy9wcm9nMicKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ3Byb2cy
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkaXI9Y2hkaXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZG91dD0iSGVsbG8gZnJvbSBwcm9nMi5jXG4iKQorCit0ZXN0LnBhc3Nf
dGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zaWJsaW5nL2d5
cHRlc3QtcmVsb2NhdGUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zaWJsaW5nL2d5
cHRlc3QtcmVsb2NhdGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc2NTQ1ZmE2NDEyYWIwNzY4NDUyYzk1ZTM5
OTg4NTg3MDRkOThiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L3NpYmxpbmcvZ3lwdGVzdC1yZWxvY2F0ZS5weQpAQCAtMCwwICsxLDQxIEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorCisiIiIKKyIiIgorCitpbXBvcnQgVGVzdEd5cAorCit0ZXN0ID0gVGVzdEd5cC5UZXN0
R3lwKCkKKwordGVzdC5ydW5fZ3lwKCdidWlsZC9hbGwuZ3lwJywgY2hkaXI9J3NyYycpCisKK3Rl
c3QucmVsb2NhdGUoJ3NyYycsICdyZWxvY2F0ZS9zcmMnKQorCit0ZXN0LmJ1aWxkKCdidWlsZC9h
bGwuZ3lwJywgdGVzdC5BTEwsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQorCitjaGRpciA9ICdyZWxv
Y2F0ZS9zcmMvYnVpbGQnCisKKyMgVGhlIHRvcC1sZXZlbCBNYWtlZmlsZSBpcyBpbiB0aGUgZGly
ZWN0b3J5IHdoZXJlIGd5cCB3YXMgcnVuLgorIyBUT0RPKG1tb3NzKSBTaG91bGQgdGhlIE1ha2Vm
aWxlIGdvIGluIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIHBhc3NlZCBpbiAuZ3lwCisjIGZpbGU/IFdo
YXQgYWJvdXQgd2hlbiBwYXNzaW5nIGluIG11bHRpcGxlIC5neXAgZmlsZXM/IFdvdWxkIHN1Yi1w
cm9qZWN0CisjIE1ha2VmaWxlcyAoc2VlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8z
NDAwMDggY29tbWVudHMpIHNvbHZlIHRoaXM/CitpZiB0ZXN0LmZvcm1hdCA9PSAnbWFrZSc6Cisg
IGNoZGlyID0gJ3JlbG9jYXRlL3NyYycKKworaWYgdGVzdC5mb3JtYXQgPT0gJ3hjb2RlJzoKKyAg
Y2hkaXIgPSAncmVsb2NhdGUvc3JjL3Byb2cxJwordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgn
cHJvZzEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjaGRpcj1jaGRpciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3Rkb3V0PSJIZWxsbyBmcm9tIHByb2cxLmNcbiIpCisKK2lmIHRl
c3QuZm9ybWF0ID09ICd4Y29kZSc6CisgIGNoZGlyID0gJ3JlbG9jYXRlL3NyYy9wcm9nMicKK3Rl
c3QucnVuX2J1aWx0X2V4ZWN1dGFibGUoJ3Byb2cyJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hkaXI9Y2hkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0iSGVsbG8g
ZnJvbSBwcm9nMi5jXG4iKQorCit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdGVzdC9zaWJsaW5nL3NyYy9wcm9nMS9wcm9nMS5jIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3Qvc2libGluZy9zcmMvcHJvZzEvcHJvZzEuYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NjFhZThhMzhlNzViODNkMzVkZWJkOWEzNTUzNjg1MTJkNDJmY2M5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2libGluZy9zcmMvcHJvZzEvcHJvZzEuYwpA
QCAtMCwwICsxLDcgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCitpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqYXJndltdKQoreworICBwcmludGYoIkhlbGxvIGZyb20gcHJvZzEuY1xuIik7CisgIHJl
dHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2libGlu
Zy9zcmMvcHJvZzEvcHJvZzEuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2libGlu
Zy9zcmMvcHJvZzEvcHJvZzEuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiZTM4Yjk3YWQzMWYwNmIyZGFhZmZl
Yzc2ZmI5MTZmMzYzMzE4NDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9zaWJsaW5nL3NyYy9wcm9nMS9wcm9nMS5neXAKQEAgLTAsMCArMSwxNSBAQAorIyBD
b3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICd0YXJnZXRz
JzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdwcm9nMScsCisgICAgICAndHlwZSc6
ICdleGVjdXRhYmxlJywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAncHJvZzEuYycsCisg
ICAgICBdLAorICAgIH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC9zaWJsaW5nL3NyYy9wcm9nMi9wcm9nMi5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3Qvc2libGluZy9zcmMvcHJvZzIvcHJvZzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjM1YWU4YzFjZTQz
YTU5MjU0NDVlMGVhNWY0YTk4NzE3MGVlZmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3lwL3Rlc3Qvc2libGluZy9zcmMvcHJvZzIvcHJvZzIuYwpAQCAtMCwwICsxLDcg
QEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd
KQoreworICBwcmludGYoIkhlbGxvIGZyb20gcHJvZzIuY1xuIik7CisgIHJldHVybiAwOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2libGluZy9zcmMvcHJvZzIv
cHJvZzIuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc2libGluZy9zcmMvcHJvZzIv
cHJvZzIuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5MzQ1NDgzNjkyYjZjNDYyOWM5ZTA4YzQwM2M1NTNlMzc3
Njg1N2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zaWJs
aW5nL3NyYy9wcm9nMi9wcm9nMi5neXAKQEAgLTAsMCArMSwxNSBAQAorIyBDb3B5cmlnaHQgKGMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
IyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICd0YXJnZXRzJzogWworICAgIHsK
KyAgICAgICd0YXJnZXRfbmFtZSc6ICdwcm9nMicsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxl
JywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAncHJvZzIuYycsCisgICAgICBdLAorICAg
IH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zbWFs
bC9neXB0ZXN0LXNtYWxsLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc21hbGwvZ3lw
dGVzdC1zbWFsbC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODI5OWIzYTdkMWM5YTdiZTc2MDAxNmZjNTZmYzll
OGMxYmZlNGVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
c21hbGwvZ3lwdGVzdC1zbWFsbC5weQpAQCAtMCwwICsxLDQ5IEBACisjIS91c3IvYmluL2VudiBw
eXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisi
IiIKK1J1bnMgc21hbGwgdGVzdHMuCisiIiIKKworaW1wb3J0IGltcAoraW1wb3J0IG9zCitpbXBv
cnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0IFRlc3RHeXAKKworCit0ZXN0ID0gVGVz
dEd5cC5UZXN0R3lwKCkKKworIyBBZGQgcHlsaWIvZ3lwIHRvIHRoZSBpbXBvcnQgcGF0aCAoc28g
dGVzdHMgY2FuIGltcG9ydCB0aGVpciBkZXBlbmRlbmNpZXMpLgorc3lzLnBhdGguYXBwZW5kKG9z
LnBhdGguam9pbih0ZXN0Ll9jd2QsICdweWxpYicsICdneXAnKSkKKworIyBBZGQgbmV3IHRlc3Qg
c3VpdGVzIGhlcmUuCitmaWxlc190b190ZXN0ID0gWworICAgICdweWxpYi9neXAvTVNWU1NldHRp
bmdzX3Rlc3QucHknLAorICAgICdweWxpYi9neXAvZWFzeV94bWxfdGVzdC5weScsCitdCisKKyMg
Q29sbGVjdCBhbGwgdGhlIHN1aXRlcyBmcm9tIHRoZSBhYm92ZSBmaWxlcy4KK3N1aXRlcyA9IFtd
Citmb3IgZmlsZW5hbWUgaW4gZmlsZXNfdG9fdGVzdDoKKyAgIyBDYXJ2ZSB0aGUgbW9kdWxlIG5h
bWUgb3V0IG9mIHRoZSBwYXRoLgorICBuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLnNw
bGl0KGZpbGVuYW1lKVsxXSlbMF0KKyAgIyBGaW5kIHRoZSBjb21wbGV0ZSBtb2R1bGUgcGF0aC4K
KyAgZnVsbF9maWxlbmFtZSA9IG9zLnBhdGguam9pbih0ZXN0Ll9jd2QsIGZpbGVuYW1lKQorICAj
IExvYWQgdGhlIG1vZHVsZS4KKyAgbW9kdWxlID0gaW1wLmxvYWRfc291cmNlKG5hbWUsIGZ1bGxf
ZmlsZW5hbWUpCisgICMgQWRkIGl0IHRvIHRoZSBsaXN0IG9mIHRlc3Qgc3VpdGVzLgorICBzdWl0
ZXMuYXBwZW5kKHVuaXR0ZXN0LmRlZmF1bHRUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUo
bW9kdWxlKSkKKyMgQ3JlYXRlIGNvbWJpbmVkIHN1aXRlLgorYWxsX3Rlc3RzID0gdW5pdHRlc3Qu
VGVzdFN1aXRlKHN1aXRlcykKKworIyBSdW4gYWxsIHRoZSB0ZXN0cy4KK3Jlc3VsdCA9IHVuaXR0
ZXN0LlRleHRUZXN0UnVubmVyKHZlcmJvc2l0eT0yKS5ydW4oYWxsX3Rlc3RzKQoraWYgcmVzdWx0
LmZhaWx1cmVzIG9yIHJlc3VsdC5lcnJvcnM6CisgIHRlc3QuZmFpbF90ZXN0KCkKKwordGVzdC5w
YXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc3ViZGly
ZWN0b3J5L2d5cHRlc3QtU1lNUk9PVC1hbGwucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9zdWJkaXJlY3RvcnkvZ3lwdGVzdC1TWU1ST09ULWFsbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzUwOTA0
MWFlYzliYWFmY2NiZjFkMzM3MDQzOGI1ZDQwNGQ0YjBmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc3ViZGlyZWN0b3J5L2d5cHRlc3QtU1lNUk9PVC1hbGwu
cHkKQEAgLTAsMCArMSwzNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0
IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyBidWlsZGlu
ZyBhIHRhcmdldCBhbmQgYSBzdWJzaWRpYXJ5IGRlcGVuZGVudCB0YXJnZXQgZnJvbSBhCisuZ3lw
IGZpbGUgaW4gYSBzdWJkaXJlY3RvcnksIHdpdGhvdXQgc3BlY2lmeWluZyBhbiBleHBsaWNpdCBv
dXRwdXQgYnVpbGQKK2RpcmVjdG9yeSwgYW5kIHVzaW5nIHRoZSBnZW5lcmF0ZWQgc29sdXRpb24g
b3IgcHJvamVjdCBmaWxlIGF0IHRoZSB0b3AKK29mIHRoZSB0cmVlIGFzIHRoZSBlbnRyeSBwb2lu
dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorVGhlIGNvbmZpZ3VyYXRpb24g
c2V0cyB0aGUgWGNvZGUgU1lNUk9PVCB2YXJpYWJsZSBhbmQgdXNlcyAtLWRlcHRoPQordG8gbWFr
ZSBYY29kZSBiZWhhdmUgbGlrZSB0aGUgb3RoZXIgYnVpbGQgdG9vbHMtLXRoYXQgaXMsIHB1dCBh
bGwKK2J1aWx0IHRhcmdldHMgaW4gYSBzaW5nbGUgb3V0cHV0IGJ1aWxkIGRpcmVjdG9yeSBhdCB0
aGUgdG9wIG9mIHRoZSB0cmVlLgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0
R3lwLlRlc3RHeXAoKQorCit0ZXN0LnJ1bl9neXAoJ3Byb2cxLmd5cCcsICctRHNldF9zeW1yb290
PTEnLCAnLS1kZXB0aD0uJywgY2hkaXI9J3NyYycpCisKK3Rlc3QucmVsb2NhdGUoJ3NyYycsICdy
ZWxvY2F0ZS9zcmMnKQorCisjIFN1cHByZXNzIHRoZSB0ZXN0IGluZnJhc3RydWN0dXJlJ3Mgc2V0
dGluZyBTWU1ST09UIG9uIHRoZSBjb21tYW5kIGxpbmUuCit0ZXN0LmJ1aWxkKCdwcm9nMS5neXAn
LCB0ZXN0LkFMTCwgU1lNUk9PVD1Ob25lLCBjaGRpcj0ncmVsb2NhdGUvc3JjJykKKwordGVzdC5y
dW5fYnVpbHRfZXhlY3V0YWJsZSgncHJvZzEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGRvdXQ9IkhlbGxvIGZyb20gcHJvZzEuY1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hkaXI9J3JlbG9jYXRlL3NyYycpCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdwcm9nMics
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0iSGVsbG8gZnJvbSBwcm9nMi5jXG4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjaGRpcj0ncmVsb2NhdGUvc3JjJykKKwordGVz
dC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc3Vi
ZGlyZWN0b3J5L2d5cHRlc3QtU1lNUk9PVC1kZWZhdWx0LnB5IGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3Qvc3ViZGlyZWN0b3J5L2d5cHRlc3QtU1lNUk9PVC1kZWZhdWx0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM2NGFlN2RhMzljNzNkYmViZWFkMjExNjNmODc0YzBlMDA5NGQ2OGEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zdWJkaXJlY3RvcnkvZ3lwdGVzdC1T
WU1ST09ULWRlZmF1bHQucHkKQEAgLTAsMCArMSwzNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitW
ZXJpZmllcyBidWlsZGluZyBhIHRhcmdldCBhbmQgYSBzdWJzaWRpYXJ5IGRlcGVuZGVudCB0YXJn
ZXQgZnJvbSBhCisuZ3lwIGZpbGUgaW4gYSBzdWJkaXJlY3RvcnksIHdpdGhvdXQgc3BlY2lmeWlu
ZyBhbiBleHBsaWNpdCBvdXRwdXQgYnVpbGQKK2RpcmVjdG9yeSwgYW5kIHVzaW5nIHRoZSBnZW5l
cmF0ZWQgc29sdXRpb24gb3IgcHJvamVjdCBmaWxlIGF0IHRoZSB0b3AKK29mIHRoZSB0cmVlIGFz
IHRoZSBlbnRyeSBwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorVGhl
IGNvbmZpZ3VyYXRpb24gc2V0cyB0aGUgWGNvZGUgU1lNUk9PVCB2YXJpYWJsZSBhbmQgdXNlcyAt
LWRlcHRoPQordG8gbWFrZSBYY29kZSBiZWhhdmUgbGlrZSB0aGUgb3RoZXIgYnVpbGQgdG9vbHMt
LXRoYXQgaXMsIHB1dCBhbGwKK2J1aWx0IHRhcmdldHMgaW4gYSBzaW5nbGUgb3V0cHV0IGJ1aWxk
IGRpcmVjdG9yeSBhdCB0aGUgdG9wIG9mIHRoZSB0cmVlLgorIiIiCisKK2ltcG9ydCBUZXN0R3lw
CisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoKQorCit0ZXN0LnJ1bl9neXAoJ3Byb2cxLmd5cCcs
ICctRHNldF9zeW1yb290PTEnLCAnLS1kZXB0aD0uJywgY2hkaXI9J3NyYycpCisKK3Rlc3QucmVs
b2NhdGUoJ3NyYycsICdyZWxvY2F0ZS9zcmMnKQorCisjIFN1cHByZXNzIHRoZSB0ZXN0IGluZnJh
c3RydWN0dXJlJ3Mgc2V0dGluZyBTWU1ST09UIG9uIHRoZSBjb21tYW5kIGxpbmUuCit0ZXN0LmJ1
aWxkKCdwcm9nMS5neXAnLCBTWU1ST09UPU5vbmUsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQorCit0
ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdwcm9nMScsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZG91dD0iSGVsbG8gZnJvbSBwcm9nMS5jXG4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGRpcj0ncmVsb2NhdGUvc3JjJykKKwordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgn
cHJvZzInLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9IkhlbGxvIGZyb20gcHJv
ZzIuY1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkaXI9J3JlbG9jYXRlL3NyYycp
CisKK3Rlc3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L3N1YmRpcmVjdG9yeS9neXB0ZXN0LXN1YmRpci1hbGwucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9zdWJkaXJlY3RvcnkvZ3lwdGVzdC1zdWJkaXItYWxsLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZiYWVmMzIyY2NjM2EwYmE1YWQzYjZmYzNkNTNkODUxNGNkMTlhZTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zdWJkaXJlY3RvcnkvZ3lwdGVzdC1zdWJk
aXItYWxsLnB5CkBAIC0wLDAgKzEsMzMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENv
cHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgorVmVyaWZpZXMg
YnVpbGRpbmcgYSBzdWJzaWRpYXJ5IGRlcGVuZGVudCB0YXJnZXQgZnJvbSBhIC5neXAgZmlsZSBp
biBhCitzdWJkaXJlY3RvcnksIHdpdGhvdXQgc3BlY2lmeWluZyBhbiBleHBsaWNpdCBvdXRwdXQg
YnVpbGQgZGlyZWN0b3J5LAorYW5kIHVzaW5nIHRoZSBzdWJkaXJlY3RvcnkncyBzb2x1dGlvbiBv
ciBwcm9qZWN0IGZpbGUgYXMgdGhlIGVudHJ5IHBvaW50LgorIiIiCisKK2ltcG9ydCBUZXN0R3lw
CitpbXBvcnQgZXJybm8KKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5cCgpCisKK3Rlc3QucnVuX2d5
cCgncHJvZzEuZ3lwJywgY2hkaXI9J3NyYycpCisKK3Rlc3QucmVsb2NhdGUoJ3NyYycsICdyZWxv
Y2F0ZS9zcmMnKQorCitjaGRpciA9ICdyZWxvY2F0ZS9zcmMvc3ViZGlyJwordGFyZ2V0ID0gdGVz
dC5BTEwKKwordGVzdC5idWlsZCgncHJvZzIuZ3lwJywgdGFyZ2V0LCBjaGRpcj1jaGRpcikKKwor
dGVzdC5idWlsdF9maWxlX211c3Rfbm90X2V4aXN0KCdwcm9nMScsIHR5cGU9dGVzdC5FWEVDVVRB
QkxFLCBjaGRpcj1jaGRpcikKKwordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgncHJvZzInLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGRpcj1jaGRpciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3Rkb3V0PSJIZWxsbyBmcm9tIHByb2cyLmNcbiIpCisKK3Rlc3QucGFzc190ZXN0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3N1YmRpcmVjdG9yeS9n
eXB0ZXN0LXN1YmRpci1kZWZhdWx0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc3Vi
ZGlyZWN0b3J5L2d5cHRlc3Qtc3ViZGlyLWRlZmF1bHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM3MmVhMmEz
ZmY0OTE2ZDdiNzdmNWQ1M2I3MDU1MzZiNTIzM2ZmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3N1YmRpcmVjdG9yeS9neXB0ZXN0LXN1YmRpci1kZWZhdWx0
LnB5CkBAIC0wLDAgKzEsMzIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdo
dCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIiIgorVmVyaWZpZXMgYnVpbGRp
bmcgYSBzdWJzaWRpYXJ5IGRlcGVuZGVudCB0YXJnZXQgZnJvbSBhIC5neXAgZmlsZSBpbiBhCitz
dWJkaXJlY3RvcnksIHdpdGhvdXQgc3BlY2lmeWluZyBhbiBleHBsaWNpdCBvdXRwdXQgYnVpbGQg
ZGlyZWN0b3J5LAorYW5kIHVzaW5nIHRoZSBzdWJkaXJlY3RvcnkncyBzb2x1dGlvbiBvciBwcm9q
ZWN0IGZpbGUgYXMgdGhlIGVudHJ5IHBvaW50LgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCitpbXBv
cnQgZXJybm8KKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5cCgpCisKK3Rlc3QucnVuX2d5cCgncHJv
ZzEuZ3lwJywgY2hkaXI9J3NyYycpCisKK3Rlc3QucmVsb2NhdGUoJ3NyYycsICdyZWxvY2F0ZS9z
cmMnKQorCitjaGRpciA9ICdyZWxvY2F0ZS9zcmMvc3ViZGlyJworCit0ZXN0LmJ1aWxkKCdwcm9n
Mi5neXAnLCBjaGRpcj1jaGRpcikKKwordGVzdC5idWlsdF9maWxlX211c3Rfbm90X2V4aXN0KCdw
cm9nMScsIHR5cGU9dGVzdC5FWEVDVVRBQkxFLCBjaGRpcj1jaGRpcikKKwordGVzdC5ydW5fYnVp
bHRfZXhlY3V0YWJsZSgncHJvZzInLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjaGRpcj1j
aGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSJIZWxsbyBmcm9tIHByb2cy
LmNcbiIpCisKK3Rlc3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L3N1YmRpcmVjdG9yeS9neXB0ZXN0LXN1YmRpcjItZGVlcC5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L3N1YmRpcmVjdG9yeS9neXB0ZXN0LXN1YmRpcjItZGVlcC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ODU0ODk4MmY4YzVkNGQwOWQwNGY2ODc2Mjc4NzkyOTgwMzhmMjI1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc3ViZGlyZWN0b3J5L2d5
cHRlc3Qtc3ViZGlyMi1kZWVwLnB5CkBAIC0wLDAgKzEsMjUgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIi
IgorVmVyaWZpZXMgYnVpbGRpbmcgYSBwcm9qZWN0IHJvb3RlZCBzZXZlcmFsIGxheWVycyB1bmRl
ciBzcmNfZGlyIHdvcmtzLgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lw
LlRlc3RHeXAoKQorCit0ZXN0LnJ1bl9neXAoJ3Byb2czLmd5cCcsIGNoZGlyPSdzcmMvc3ViZGly
L3N1YmRpcjInKQorCit0ZXN0LnJlbG9jYXRlKCdzcmMnLCAncmVsb2NhdGUvc3JjJykKKwordGVz
dC5idWlsZCgncHJvZzMuZ3lwJywgdGVzdC5BTEwsIGNoZGlyPSdyZWxvY2F0ZS9zcmMvc3ViZGly
L3N1YmRpcjInKQorCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdwcm9nMycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoZGlyPSdyZWxvY2F0ZS9zcmMvc3ViZGlyL3N1YmRpcjInLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9IkhlbGxvIGZyb20gcHJvZzMuY1xuIikK
KwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3Qvc3ViZGlyZWN0b3J5L2d5cHRlc3QtdG9wLWFsbC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L3N1YmRpcmVjdG9yeS9neXB0ZXN0LXRvcC1hbGwucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI5YTQx
YjRkMWYzYjVlNjVmM2UwZGZiMTdlYjU2YTFiMTkxN2EzNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3N1YmRpcmVjdG9yeS9neXB0ZXN0LXRvcC1hbGwucHkK
QEAgLTAsMCArMSw0MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChj
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitWZXJpZmllcyBidWlsZGluZyBh
IHRhcmdldCBhbmQgYSBzdWJzaWRpYXJ5IGRlcGVuZGVudCB0YXJnZXQgZnJvbSBhCisuZ3lwIGZp
bGUgaW4gYSBzdWJkaXJlY3RvcnksIHdpdGhvdXQgc3BlY2lmeWluZyBhbiBleHBsaWNpdCBvdXRw
dXQgYnVpbGQKK2RpcmVjdG9yeSwgYW5kIHVzaW5nIHRoZSBnZW5lcmF0ZWQgc29sdXRpb24gb3Ig
cHJvamVjdCBmaWxlIGF0IHRoZSB0b3AKK29mIHRoZSB0cmVlIGFzIHRoZSBlbnRyeSBwb2ludC4K
KworVGhlcmUgaXMgYSBkaWZmZXJlbmNlIGhlcmUgaW4gdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2Yg
dGhlIHVuZGVybHlpbmcKK2J1aWxkIHRvb2xzLiAgU3BlY2lmaWNhbGx5LCB3aGVuIGJ1aWxkaW5n
IHRoZSBlbnRpcmUgInNvbHV0aW9uIiwgWGNvZGUKK3B1dHMgdGhlIG91dHB1dCBvZiBlYWNoIHBy
b2plY3QgcmVsYXRpdmUgdG8gdGhlIC54Y29kZXByb2ogZGlyZWN0b3J5LAord2hpbGUgVmlzdWFs
IFN0dWRpbyAoYW5kIG91ciBpbXBsZW1lbnRhdGlvbnMgb2YgU0NvbnMgYW5kIE1ha2UpIHB1dCBp
dAoraW4gYSBidWlsZCBkaXJlY3RvcnkgcmVsYXRpdmUgdG8gdGhlICJzb2x1dGlvbiItLXRoYXQg
aXMsIHRoZSBlbnRyeS1wb2ludAorZnJvbSB3aGljaCB5b3UgYnVpbHQgdGhlIGVudGlyZSB0cmVl
LgorIiIiCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoKQorCit0
ZXN0LnJ1bl9neXAoJ3Byb2cxLmd5cCcsIGNoZGlyPSdzcmMnKQorCit0ZXN0LnJlbG9jYXRlKCdz
cmMnLCAncmVsb2NhdGUvc3JjJykKKwordGVzdC5idWlsZCgncHJvZzEuZ3lwJywgdGVzdC5BTEws
IGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQorCit0ZXN0LnJ1bl9idWlsdF9leGVjdXRhYmxlKCdwcm9n
MScsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0iSGVsbG8gZnJvbSBwcm9nMS5j
XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjaGRpcj0ncmVsb2NhdGUvc3JjJykKKwor
aWYgdGVzdC5mb3JtYXQgPT0gJ3hjb2RlJzoKKyAgY2hkaXIgPSAncmVsb2NhdGUvc3JjL3N1YmRp
cicKK2Vsc2U6CisgIGNoZGlyID0gJ3JlbG9jYXRlL3NyYycKK3Rlc3QucnVuX2J1aWx0X2V4ZWN1
dGFibGUoJ3Byb2cyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkaXI9Y2hkaXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0iSGVsbG8gZnJvbSBwcm9nMi5jXG4iKQor
Cit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC9zdWJkaXJlY3RvcnkvZ3lwdGVzdC10b3AtZGVmYXVsdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L3N1YmRpcmVjdG9yeS9neXB0ZXN0LXRvcC1kZWZhdWx0LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFjNWY2MGRiY2NiZGVkOGI4Mjc3Y2U5N2MwZTdhNmM4NDg4ZjRjOTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zdWJkaXJlY3RvcnkvZ3lwdGVzdC10b3At
ZGVmYXVsdC5weQpAQCAtMCwwICsxLDQzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBD
b3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmaWVz
IGJ1aWxkaW5nIGEgdGFyZ2V0IGFuZCBhIHN1YnNpZGlhcnkgZGVwZW5kZW50IHRhcmdldCBmcm9t
IGEKKy5neXAgZmlsZSBpbiBhIHN1YmRpcmVjdG9yeSwgd2l0aG91dCBzcGVjaWZ5aW5nIGFuIGV4
cGxpY2l0IG91dHB1dCBidWlsZAorZGlyZWN0b3J5LCBhbmQgdXNpbmcgdGhlIGdlbmVyYXRlZCBz
b2x1dGlvbiBvciBwcm9qZWN0IGZpbGUgYXQgdGhlIHRvcAorb2YgdGhlIHRyZWUgYXMgdGhlIGVu
dHJ5IHBvaW50LgorCitUaGVyZSBpcyBhIGRpZmZlcmVuY2UgaGVyZSBpbiB0aGUgZGVmYXVsdCBi
ZWhhdmlvciBvZiB0aGUgdW5kZXJseWluZworYnVpbGQgdG9vbHMuICBTcGVjaWZpY2FsbHksIHdo
ZW4gYnVpbGRpbmcgdGhlIGVudGlyZSAic29sdXRpb24iLCBYY29kZQorcHV0cyB0aGUgb3V0cHV0
IG9mIGVhY2ggcHJvamVjdCByZWxhdGl2ZSB0byB0aGUgLnhjb2RlcHJvaiBkaXJlY3RvcnksCit3
aGlsZSBWaXN1YWwgU3R1ZGlvIChhbmQgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBTQ29ucyBhbmQg
TWFrZSkgcHV0IGl0CitpbiBhIGJ1aWxkIGRpcmVjdG9yeSByZWxhdGl2ZSB0byB0aGUgInNvbHV0
aW9uIi0tdGhhdCBpcywgdGhlIGVudHJ5LXBvaW50Citmcm9tIHdoaWNoIHlvdSBidWlsdCB0aGUg
ZW50aXJlIHRyZWUuCisiIiIKKworaW1wb3J0IFRlc3RHeXAKKwordGVzdCA9IFRlc3RHeXAuVGVz
dEd5cCgpCisKK3Rlc3QucnVuX2d5cCgncHJvZzEuZ3lwJywgY2hkaXI9J3NyYycpCisKK3Rlc3Qu
cmVsb2NhdGUoJ3NyYycsICdyZWxvY2F0ZS9zcmMnKQorCit0ZXN0LmJ1aWxkKCdwcm9nMS5neXAn
LCBjaGRpcj0ncmVsb2NhdGUvc3JjJykKKwordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgncHJv
ZzEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9IkhlbGxvIGZyb20gcHJvZzEu
Y1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisK
K2lmIHRlc3QuZm9ybWF0ID09ICd4Y29kZSc6CisgIGNoZGlyID0gJ3JlbG9jYXRlL3NyYy9zdWJk
aXInCitlbHNlOgorICBjaGRpciA9ICdyZWxvY2F0ZS9zcmMnCit0ZXN0LnJ1bl9idWlsdF9leGVj
dXRhYmxlKCdwcm9nMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZGlyPWNoZGlyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9IkhlbGxvIGZyb20gcHJvZzIuY1xuIikK
KwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3Qvc3ViZGlyZWN0b3J5L3NyYy9wcm9nMS5jIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
c3ViZGlyZWN0b3J5L3NyYy9wcm9nMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2MWFlOGEzOGU3NWI4M2QzNWRl
YmQ5YTM1NTM2ODUxMmQ0MmZjYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9zdWJkaXJlY3Rvcnkvc3JjL3Byb2cxLmMKQEAgLTAsMCArMSw3IEBACisjaW5j
bHVkZSA8c3RkaW8uaD4KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAg
cHJpbnRmKCJIZWxsbyBmcm9tIHByb2cxLmNcbiIpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3N1YmRpcmVjdG9yeS9zcmMvcHJvZzEuZ3lw
IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc3ViZGlyZWN0b3J5L3NyYy9wcm9nMS5neXAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmFhNjZjZTdkN2YxZmM4ZTcyODZmNmI3NGUzYTU0NWM4MzdkZTc0OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3N1YmRpcmVjdG9yeS9z
cmMvcHJvZzEuZ3lwCkBAIC0wLDAgKzEsMjEgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKworeworICAnaW5jbHVkZXMnOiBbCisgICAgJ3N5bXJvb3QuZ3lw
aScsCisgIF0sCisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdw
cm9nMScsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICdkZXBlbmRlbmNpZXMn
OiBbCisgICAgICAgICdzdWJkaXIvcHJvZzIuZ3lwOnByb2cyJywKKyAgICAgIF0sCisgICAgICAn
c291cmNlcyc6IFsKKyAgICAgICAgJ3Byb2cxLmMnLAorICAgICAgXSwKKyAgICB9LAorICBdLAor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qvc3ViZGlyZWN0b3J5L3Ny
Yy9zdWJkaXIvcHJvZzIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3N1YmRpcmVjdG9y
eS9zcmMvc3ViZGlyL3Byb2cyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYzNWFlOGMxY2U0M2E1OTI1NDQ1ZTBl
YTVmNGE5ODcxNzBlZWZlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L3N1YmRpcmVjdG9yeS9zcmMvc3ViZGlyL3Byb2cyLmMKQEAgLTAsMCArMSw3IEBACisj
aW5jbHVkZSA8c3RkaW8uaD4KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sK
KyAgcHJpbnRmKCJIZWxsbyBmcm9tIHByb2cyLmNcbiIpOworICByZXR1cm4gMDsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3N1YmRpcmVjdG9yeS9zcmMvc3ViZGly
L3Byb2cyLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3N1YmRpcmVjdG9yeS9zcmMv
c3ViZGlyL3Byb2cyLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmNkMzVmN2Y4MWVmZjQ0Yjc1Zjk4Njc5MWEz
N2NmNTc5MWI4Mzk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3Qvc3ViZGlyZWN0b3J5L3NyYy9zdWJkaXIvcHJvZzIuZ3lwCkBAIC0wLDAgKzEsMTggQEAKKyMg
Q29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAnaW5jbHVk
ZXMnOiBbCisgICAgJy4uL3N5bXJvb3QuZ3lwaScsCisgIF0sCisgICd0YXJnZXRzJzogWworICAg
IHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdwcm9nMicsCisgICAgICAndHlwZSc6ICdleGVjdXRh
YmxlJywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAncHJvZzIuYycsCisgICAgICBdLAor
ICAgIH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9z
dWJkaXJlY3Rvcnkvc3JjL3N1YmRpci9zdWJkaXIyL3Byb2czLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9neXAvdGVzdC9zdWJkaXJlY3Rvcnkvc3JjL3N1YmRpci9zdWJkaXIyL3Byb2czLmMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2NmYjBmYTk0ODIyMjY4NTM1YmUyOGE0MmUxMGY2OWZiNDBhMWUwMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3N1YmRpcmVjdG9yeS9zcmMvc3Vi
ZGlyL3N1YmRpcjIvcHJvZzMuYwpAQCAtMCwwICsxLDcgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICBwcmludGYoIkhlbGxvIGZy
b20gcHJvZzMuY1xuIik7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3Qvc3ViZGlyZWN0b3J5L3NyYy9zdWJkaXIvc3ViZGlyMi9wcm9nMy5neXAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC9zdWJkaXJlY3Rvcnkvc3JjL3N1YmRpci9zdWJk
aXIyL3Byb2czLmd5cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDlmYjU5MTEzN2JhZTgwY2E3MjNiYWEwNWNkMGFm
ZTY1MGNiZDdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
c3ViZGlyZWN0b3J5L3NyYy9zdWJkaXIvc3ViZGlyMi9wcm9nMy5neXAKQEAgLTAsMCArMSwxOCBA
QAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICdp
bmNsdWRlcyc6IFsKKyAgICAnLi4vLi4vc3ltcm9vdC5neXBpJywKKyAgXSwKKyAgJ3RhcmdldHMn
OiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ3Byb2czJywKKyAgICAgICd0eXBlJzog
J2V4ZWN1dGFibGUnLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdwcm9nMy5jJywKKyAg
ICAgIF0sCisgICAgfSwKKyAgXSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L3N1YmRpcmVjdG9yeS9zcmMvc3ltcm9vdC5neXBpIGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3Qvc3ViZGlyZWN0b3J5L3NyYy9zeW1yb290Lmd5cGkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE5OTE2
NDI3YzlmMTM0YjgxMDc5ZGU0ZDMzOGNiODFiYjRiYmViMgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3N1YmRpcmVjdG9yeS9zcmMvc3ltcm9vdC5neXBpCkBA
IC0wLDAgKzEsMTYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworeworICAndmFyaWFibGVzJzogeworICAgICdzZXRfc3ltcm9vdCUnOiAwLAorICB9LAor
ICAnY29uZGl0aW9ucyc6IFsKKyAgICBbJ3NldF9zeW1yb290ID09IDEnLCB7CisgICAgICAneGNv
ZGVfc2V0dGluZ3MnOiB7CisgICAgICAgICdTWU1ST09UJzogJzwoREVQVEgpL2J1aWxkJywKKyAg
ICAgIH0sCisgICAgfV0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
eXAvdGVzdC90b29sc2V0cy9neXB0ZXN0LXRvb2xzZXRzLnB5IGIvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvdG9vbHNldHMvZ3lwdGVzdC10b29sc2V0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTczN2Y4
M2QwYTE2NGNiMDA5NTUzYWM2YzhkMWU0MDU0ODk1OTYxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdG9vbHNldHMvZ3lwdGVzdC10b29sc2V0cy5weQpAQCAt
MCwwICsxLDIzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmaWVzIHRoYXQgdG9vbHNldHMg
YXJlIGNvcnJlY3RseSBhcHBsaWVkCisiIiIKKworaW1wb3J0IFRlc3RHeXAKKworIyBNdWx0aXBs
ZSB0b29sc2V0cyBhcmUgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIGJ5IHRoZSBtYWtlIGdlbmVy
YXRvci4KK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoZm9ybWF0cz1bJ21ha2UnXSkKKwordGVzdC5y
dW5fZ3lwKCd0b29sc2V0cy5neXAnKQorCit0ZXN0LmJ1aWxkKCd0b29sc2V0cy5neXAnLCB0ZXN0
LkFMTCkKKwordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgnaG9zdC1tYWluJywgc3Rkb3V0PSJI
b3N0XG4iKQordGVzdC5ydW5fYnVpbHRfZXhlY3V0YWJsZSgndGFyZ2V0LW1haW4nLCBzdGRvdXQ9
IlRhcmdldFxuIikKKwordGVzdC5wYXNzX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvdG9vbHNldHMvbWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L3Rvb2xzZXRzL21haW4uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGYzNTNhZTU0ZjQxN2EyNzRlY2MzMTU4
ZThkODUxM2UyZmUxNThjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L3Rvb2xzZXRzL21haW4uY2MKQEAgLTAsMCArMSwxMSBAQAorLyogQ29weXJpZ2h0IChj
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLiAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4K
KworY29uc3QgY2hhciAqR2V0VG9vbHNldCgpOworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
YXJndltdKSB7CisgIHByaW50ZigiJXNcbiIsIEdldFRvb2xzZXQoKSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC90b29sc2V0cy90b29sc2V0cy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Rvb2xzZXRzL3Rvb2xzZXRzLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0
NWZhMDI5Y2I3YzAzYjg5MmZjMzYzZmFmNjJlMmFkODIzZGM5YWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC90b29sc2V0cy90b29sc2V0cy5jYwpAQCAtMCww
ICsxLDExIEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
ICovCisKK2NvbnN0IGNoYXIgKkdldFRvb2xzZXQoKSB7CisjaWZkZWYgVEFSR0VUCisgIHJldHVy
biAiVGFyZ2V0IjsKKyNlbHNlCisgIHJldHVybiAiSG9zdCI7CisjZW5kaWYKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Rvb2xzZXRzL3Rvb2xzZXRzLmd5cCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Rvb2xzZXRzL3Rvb2xzZXRzLmd5cApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lNDFiOTI4ZGU2OWJiYzk4MTc5YjZhZDNlYjFiNTc1NDMxZWMyYzI0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdG9vbHNldHMvdG9vbHNldHMuZ3lwCkBA
IC0wLDAgKzEsMzggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworeworICAndGFyZ2V0X2RlZmF1bHRzJzogeworICAgICd0YXJnZXRfY29uZGl0aW9ucyc6
IFsKKyAgICAgIFsnX3Rvb2xzZXQ9PSJ0YXJnZXQiJywgeydkZWZpbmVzJzogWydUQVJHRVQnXX1d
CisgICAgXQorICB9LAorICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUn
OiAndG9vbHNldHMnLAorICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAorICAgICAgJ3Rv
b2xzZXRzJzogWyd0YXJnZXQnLCAnaG9zdCddLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAg
ICd0b29sc2V0cy5jYycsCisgICAgICBdLAorICAgIH0sCisgICAgeworICAgICAgJ3RhcmdldF9u
YW1lJzogJ2hvc3QtbWFpbicsCisgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICd0
b29sc2V0cyc6IFsnaG9zdCddLAorICAgICAgJ2RlcGVuZGVuY2llcyc6IFsndG9vbHNldHMnXSwK
KyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAnbWFpbi5jYycsCisgICAgICBdLAorICAgIH0s
CisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ3RhcmdldC1tYWluJywKKyAgICAgICd0eXBl
JzogJ2V4ZWN1dGFibGUnLAorICAgICAgJ2RlcGVuZGVuY2llcyc6IFsndG9vbHNldHMnXSwKKyAg
ICAgICdzb3VyY2VzJzogWworICAgICAgICAnbWFpbi5jYycsCisgICAgICBdLAorICAgIH0sCisg
IF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC90b3BsZXZlbC1k
aXIvZ3lwdGVzdC10b3BsZXZlbC1kaXIucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC90
b3BsZXZlbC1kaXIvZ3lwdGVzdC10b3BsZXZlbC1kaXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE5ODZjZGFh
NTBiODlhM2I2OGJjZTIwMWQyZDhhZjA3MWJmYmIxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3RvcGxldmVsLWRpci9neXB0ZXN0LXRvcGxldmVsLWRpci5w
eQpAQCAtMCwwICsxLDMxIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQg
KGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1ZlcmlmaWVzIGJ1aWxkaW5n
IGEgc3Vic2lkaWFyeSBkZXBlbmRlbnQgdGFyZ2V0IGZyb20gYSAuZ3lwIGZpbGUgaW4gYQorc3Vi
ZGlyZWN0b3J5LCB3aXRob3V0IHNwZWNpZnlpbmcgYW4gZXhwbGljaXQgb3V0cHV0IGJ1aWxkIGRp
cmVjdG9yeSwKK2FuZCB1c2luZyB0aGUgc3ViZGlyZWN0b3J5J3Mgc29sdXRpb24gb3IgcHJvamVj
dCBmaWxlIGFzIHRoZSBlbnRyeSBwb2ludC4KKyIiIgorCitpbXBvcnQgVGVzdEd5cAoraW1wb3J0
IGVycm5vCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoZm9ybWF0cz1bJ21ha2UnXSkKKworIyBX
ZSB3YW50IG91ciBNYWtlZmlsZSB0byBiZSBvbmUgZGlyIHVwIGZyb20gbWFpbi5neXAuCit0ZXN0
LnJ1bl9neXAoJ21haW4uZ3lwJywgJy0tdG9wbGV2ZWwtZGlyPS4uJywgY2hkaXI9J3NyYy9zdWIx
JykKKwordG9wbGV2ZWxfZGlyID0gJ3NyYycKKwordGVzdC5idWlsZCgnYWxsJywgY2hkaXI9dG9w
bGV2ZWxfZGlyKQorCit0ZXN0LmJ1aWx0X2ZpbGVfbXVzdF9leGlzdCgncHJvZzEnLCB0eXBlPXRl
c3QuRVhFQ1VUQUJMRSwgY2hkaXI9dG9wbGV2ZWxfZGlyKQorCit0ZXN0LnJ1bl9idWlsdF9leGVj
dXRhYmxlKCdwcm9nMScsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZGlyPXRvcGxldmVs
X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSJIZWxsbyBmcm9tIHByb2cx
LmNcbiIpCisKK3Rlc3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L3RvcGxldmVsLWRpci9zcmMvc3ViMS9tYWluLmd5cCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L3RvcGxldmVsLWRpci9zcmMvc3ViMS9tYWluLmd5cApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MzIxOTAxMGU0OGRhYzI0M2E1OTU5YzI1Y2RlZTllNDgzNWUyYWRhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdG9wbGV2ZWwtZGlyL3NyYy9zdWIxL21haW4u
Z3lwCkBAIC0wLDAgKzEsMTggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUn
OiAncHJvZzEnLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAnZGVwZW5kZW5j
aWVzJzogWworICAgICAgICAnPChERVBUSCkvLi4vc3ViMi9wcm9nMi5neXA6cHJvZzInLAorICAg
ICAgXSwKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAncHJvZzEuYycsCisgICAgICBdLAor
ICAgIH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC90
b3BsZXZlbC1kaXIvc3JjL3N1YjEvcHJvZzEuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0
L3RvcGxldmVsLWRpci9zcmMvc3ViMS9wcm9nMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2MWFlOGEzOGU3NWI4
M2QzNWRlYmQ5YTM1NTM2ODUxMmQ0MmZjYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC90b3BsZXZlbC1kaXIvc3JjL3N1YjEvcHJvZzEuYwpAQCAtMCwwICsx
LDcgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn
dltdKQoreworICBwcmludGYoIkhlbGxvIGZyb20gcHJvZzEuY1xuIik7CisgIHJldHVybiAwOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdG9wbGV2ZWwtZGlyL3Ny
Yy9zdWIyL3Byb2cyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC90b3BsZXZlbC1kaXIv
c3JjL3N1YjIvcHJvZzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjM1YWU4YzFjZTQzYTU5MjU0NDVlMGVhNWY0
YTk4NzE3MGVlZmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvdG9wbGV2ZWwtZGlyL3NyYy9zdWIyL3Byb2cyLmMKQEAgLTAsMCArMSw3IEBACisjaW5jbHVk
ZSA8c3RkaW8uaD4KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgcHJp
bnRmKCJIZWxsbyBmcm9tIHByb2cyLmNcbiIpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3RvcGxldmVsLWRpci9zcmMvc3ViMi9wcm9nMi5n
eXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC90b3BsZXZlbC1kaXIvc3JjL3N1YjIvcHJv
ZzIuZ3lwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU5MzQ1NDgzNjkyYjZjNDYyOWM5ZTA4YzQwM2M1NTNlMzc3Njg1
N2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC90b3BsZXZl
bC1kaXIvc3JjL3N1YjIvcHJvZzIuZ3lwCkBAIC0wLDAgKzEsMTUgQEAKKyMgQ29weXJpZ2h0IChj
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAndGFyZ2V0cyc6IFsKKyAgICB7
CisgICAgICAndGFyZ2V0X25hbWUnOiAncHJvZzInLAorICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJs
ZScsCisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ3Byb2cyLmMnLAorICAgICAgXSwKKyAg
ICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFy
aWFibGVzL2NvbW1hbmRzL2NvbW1hbmRzLXJlcGVhdGVkLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L3ZhcmlhYmxlcy9jb21tYW5kcy9jb21tYW5kcy1yZXBlYXRlZC5neXAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODIyYWU0ZjA1ZDQ2YjdiNmMwOTczZGY2ZDhlZTAxMzMyNzZiNzhhMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhYmxlcy9jb21tYW5kcy9j
b21tYW5kcy1yZXBlYXRlZC5neXAKQEAgLTAsMCArMSwxMjggQEAKKyMgQ29weXJpZ2h0IChjKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIyBUaGlzIGlzIGEgc2ltcGxlIHRlc3QgZmls
ZSB0byBtYWtlIHN1cmUgdGhhdCB2YXJpYWJsZSBzdWJzdGl0dXRpb24KKyMgaGFwcGVucyBjb3Jy
ZWN0bHkuICBSdW4gInJ1bl90ZXN0cy5weSIgdXNpbmcgcHl0aG9uIHRvIGdlbmVyYXRlIHRoZQor
IyBvdXRwdXQgZnJvbSB0aGlzIGd5cCBmaWxlLgorCit7CisgICd2YXJpYWJsZXMnOiB7CisgICAg
J3BpJzogJ2ltcG9ydCBtYXRoOyBwcmludCBtYXRoLnBpJywKKyAgICAndGhpcmRfbGV0dGVycyc6
ICI8KG90aGVyX2xldHRlcnMpSElKSyIsCisgICAgJ2xldHRlcnNfbGlzdCc6ICdBQkNEJywKKyAg
ICAnb3RoZXJfbGV0dGVycyc6ICc8KGxldHRlcnNfbGlzdClFRkcnLAorICAgICdjaGVja19pbmNs
dWRlZCc6ICc8KGluY2x1ZGVkX3ZhcmlhYmxlKScsCisgICAgJ2NoZWNrX2xpc3RzJzogWworICAg
ICAgJzwoaW5jbHVkZWRfdmFyaWFibGUpJywKKyAgICAgICc8KHRoaXJkX2xldHRlcnMpJywKKyAg
ICBdLAorICAgICdjaGVja19pbnQnOiA1LAorICAgICdjaGVja19zdHJfaW50JzogJzYnLAorICAg
ICdjaGVja19saXN0X2ludCc6IFsKKyAgICAgIDcsCisgICAgICAnOCcsCisgICAgICA5LAorICAg
IF0sCisgICAgJ25vdF9pbnRfMSc6ICcgMTAnLAorICAgICdub3RfaW50XzInOiAnMTEgJywKKyAg
ICAnbm90X2ludF8zJzogJzAxMicsCisgICAgJ25vdF9pbnRfNCc6ICcxMy4wJywKKyAgICAnbm90
X2ludF81JzogJysxNCcsCisgICAgJ25lZ2F0aXZlX2ludCc6ICctMTUnLAorICAgICd6ZXJvX2lu
dCc6ICcwJywKKyAgfSwKKyAgJ2luY2x1ZGVzJzogWworICAgICdjb21tYW5kcy5neXBpJywKKyAg
XSwKKyAgJ3RhcmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ2ZvbycsCisg
ICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICd2YXJpYWJsZXMnOiB7CisgICAgICAgICd2YXIx
JzogJzwhKFsicHl0aG9uIiwgIi1jIiwgIjwocGkpIl0pJywKKyAgICAgICAgJ3ZhcjInOiAnPCEo
cHl0aG9uIC1jICJwcmludCBcJzwhKHB5dGhvbiAtYyAiPChwaSkiKSA8KGxldHRlcnNfbGlzdClc
JyIpJywKKyAgICAgICAgJ3ZhcjMnOiAnPCEocHl0aG9uIC1jICJwcmludCBcJzwobGV0dGVyc19s
aXN0KVwnIiknLAorICAgICAgICAndmFyNCc6ICc8KDwhKHB5dGhvbiAtYyAicHJpbnQgXCdsZXR0
ZXJzX2xpc3RcJyIpKScsCisgICAgICAgICd2YXI1JzogJ2xldHRlcnNfJywKKyAgICAgICAgJ3Zh
cjYnOiAnbGlzdCcsCisgICAgICAgICd2YXI3JzogJzwoY2hlY2tfaW50KScsCisgICAgICAgICd2
YXI4JzogJzwoY2hlY2tfaW50KWJsYWgnLAorICAgICAgICAndmFyOSc6ICc8KGNoZWNrX3N0cl9p
bnQpJywKKyAgICAgICAgJ3ZhcjEwJzogJzwoY2hlY2tfbGlzdF9pbnQpJywKKyAgICAgICAgJ3Zh
cjExJzogWyc8QChjaGVja19saXN0X2ludCknXSwKKyAgICAgICAgJ3ZhcjEyJzogJzwobm90X2lu
dF8xKScsCisgICAgICAgICd2YXIxMyc6ICc8KG5vdF9pbnRfMiknLAorICAgICAgICAndmFyMTQn
OiAnPChub3RfaW50XzMpJywKKyAgICAgICAgJ3ZhcjE1JzogJzwobm90X2ludF80KScsCisgICAg
ICAgICd2YXIxNic6ICc8KG5vdF9pbnRfNSknLAorICAgICAgICAndmFyMTcnOiAnPChuZWdhdGl2
ZV9pbnQpJywKKyAgICAgICAgJ3ZhcjE4JzogJzwoemVyb19pbnQpJywKKyAgICAgICAgIyBBIHNl
Y29uZCBzZXQgd2l0aCBkaWZmZXJlbnQgbmFtZXMgdG8gbWFrZSBzdXJlIHRoZXkgb25seSBleGVj
dXRlIHRoZQorICAgICAgICAjIGNvbW1hbmRzIG9uY2UuCisgICAgICAgICd2YXIxcHJpbWUnOiAn
PCEoWyJweXRob24iLCAiLWMiLCAiPChwaSkiXSknLAorICAgICAgICAndmFyMnByaW1lJzogJzwh
KHB5dGhvbiAtYyAicHJpbnQgXCc8IShweXRob24gLWMgIjwocGkpIikgPChsZXR0ZXJzX2xpc3Qp
XCciKScsCisgICAgICAgICd2YXIzcHJpbWUnOiAnPCEocHl0aG9uIC1jICJwcmludCBcJzwobGV0
dGVyc19saXN0KVwnIiknLAorICAgICAgICAndmFyNHByaW1lJzogJzwoPCEocHl0aG9uIC1jICJw
cmludCBcJ2xldHRlcnNfbGlzdFwnIikpJywKKyAgICAgIH0sCisgICAgICAnYWN0aW9ucyc6IFsK
KyAgICAgICAgeworICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICd0ZXN0X2FjdGlvbicsCisgICAg
ICAgICAgJ3ZhcmlhYmxlcyc6IHsKKyAgICAgICAgICAgICd2YXI3JzogJzwhKGVjaG8gPCh2YXI1
KTwodmFyNikpJywKKyAgICAgICAgICB9LAorICAgICAgICAgICdpbnB1dHMnIDogWworICAgICAg
ICAgICAgJzwodmFyMiknLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ291dHB1dHMnOiBbCisg
ICAgICAgICAgICAnPCh2YXI0KScsCisgICAgICAgICAgICAnPCh2YXI3KScsCisgICAgICAgICAg
XSwKKyAgICAgICAgICAnYWN0aW9uJzogWworICAgICAgICAgICAgJ2VjaG8nLAorICAgICAgICAg
ICAgJzwoX2lucHV0cyknLAorICAgICAgICAgICAgJzwoX291dHB1dHMpJywKKyAgICAgICAgICBd
LAorICAgICAgICB9LAorICAgICAgICAjIEFnYWluIHdpdGggdGhlIHNhbWUgdmFycyB0byBtYWtl
IHN1cmUgdGhlIHJpZ2h0IHRoaW5ncyBoYXBwZW5lZC4KKyAgICAgICAgeworICAgICAgICAgICdh
Y3Rpb25fbmFtZSc6ICd0ZXN0X2FjdGlvbl9wcmltZScsCisgICAgICAgICAgJ3ZhcmlhYmxlcyc6
IHsKKyAgICAgICAgICAgICd2YXI3JzogJzwhKGVjaG8gPCh2YXI1KTwodmFyNikpJywKKyAgICAg
ICAgICB9LAorICAgICAgICAgICdpbnB1dHMnIDogWworICAgICAgICAgICAgJzwodmFyMiknLAor
ICAgICAgICAgIF0sCisgICAgICAgICAgJ291dHB1dHMnOiBbCisgICAgICAgICAgICAnPCh2YXI0
KScsCisgICAgICAgICAgICAnPCh2YXI3KScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnYWN0
aW9uJzogWworICAgICAgICAgICAgJ2VjaG8nLAorICAgICAgICAgICAgJzwoX2lucHV0cyknLAor
ICAgICAgICAgICAgJzwoX291dHB1dHMpJywKKyAgICAgICAgICBdLAorICAgICAgICB9LAorICAg
ICAgICAjIEFuZCBvbmUgbW9yZSB0aW1lIHdpdGggdGhlIG90aGVyIHZhcnMuLi4KKyAgICAgICAg
eworICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICd0ZXN0X2FjdGlvbl9wcmltZV9wcmltZScsCisg
ICAgICAgICAgJ3ZhcmlhYmxlcyc6IHsKKyAgICAgICAgICAgICd2YXI3JzogJzwhKGVjaG8gPCh2
YXI1KTwodmFyNikpJywKKyAgICAgICAgICB9LAorICAgICAgICAgICdpbnB1dHMnIDogWworICAg
ICAgICAgICAgJzwodmFyMnByaW1lKScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0
cyc6IFsKKyAgICAgICAgICAgICc8KHZhcjRwcmltZSknLAorICAgICAgICAgICAgJzwodmFyNykn
LAorICAgICAgICAgIF0sCisgICAgICAgICAgJ2FjdGlvbic6IFsKKyAgICAgICAgICAgICdlY2hv
JywKKyAgICAgICAgICAgICc8KF9pbnB1dHMpJywKKyAgICAgICAgICAgICc8KF9vdXRwdXRzKScs
CisgICAgICAgICAgXSwKKyAgICAgICAgfSwKKyAgICAgIF0sCisgICAgfSwKKyAgXSwKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhYmxlcy9jb21tYW5kcy9j
b21tYW5kcy1yZXBlYXRlZC5neXAuc3Rkb3V0IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
dmFyaWFibGVzL2NvbW1hbmRzL2NvbW1hbmRzLXJlcGVhdGVkLmd5cC5zdGRvdXQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmNiZTc5N2ZkNDc2MTNhNjNiMWU4M2Q1NDI2Mjc5Njc2MzdiNTIzMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhYmxlcy9jb21tYW5kcy9jb21t
YW5kcy1yZXBlYXRlZC5neXAuc3Rkb3V0CkBAIC0wLDAgKzEsNDA1IEBACitHRU5FUkFMOiBydW5u
aW5nIHdpdGggdGhlc2Ugb3B0aW9uczoKK0dFTkVSQUw6ICAgY2hlY2s6IE5vbmUKK0dFTkVSQUw6
ICAgY2lyY3VsYXJfY2hlY2s6IFRydWUKK0dFTkVSQUw6ICAgZGVidWc6IFsndmFyaWFibGVzJywg
J2dlbmVyYWwnXQorR0VORVJBTDogICBkZWZpbmVzOiBOb25lCitHRU5FUkFMOiAgIGRlcHRoOiAn
LicKK0dFTkVSQUw6ICAgZm9ybWF0czogWydneXBkJ10KK0dFTkVSQUw6ICAgZ2VuZXJhdG9yX2Zs
YWdzOiBbXQorR0VORVJBTDogICBnZW5lcmF0b3Jfb3V0cHV0OiBOb25lCitHRU5FUkFMOiAgIGlu
Y2x1ZGVzOiBOb25lCitHRU5FUkFMOiAgIG1zdnNfdmVyc2lvbjogTm9uZQorR0VORVJBTDogICBz
dWZmaXg6ICcnCitHRU5FUkFMOiAgIHRvcGxldmVsX2RpcjogTm9uZQorR0VORVJBTDogICB1c2Vf
ZW52aXJvbm1lbnQ6IFRydWUKK0dFTkVSQUw6IGNtZGxpbmVfZGVmYXVsdF92YXJpYWJsZXM6IHt9
CitHRU5FUkFMOiBnZW5lcmF0b3JfZmxhZ3M6IHt9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnMCcg
dG8gMAorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzExICcgdG8gJzExICcKK1ZBUklBQkxFUzogRXhw
YW5kaW5nICcrMTQnIHRvICcrMTQnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnLTE1JyB0byAtMTUK
K1ZBUklBQkxFUzogRXhwYW5kaW5nICcgMTAnIHRvICcgMTAnCitWQVJJQUJMRVM6IE1hdGNoZXM6
IHsnY29udGVudCc6ICdsZXR0ZXJzX2xpc3QnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcs
ICdyZXBsYWNlJzogJzwobGV0dGVyc19saXN0KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbGV0
dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ0FC
Q0RFRkcnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnQUJDREVGRycgdG8gJ0FC
Q0RFRkcnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChsZXR0ZXJzX2xpc3QpRUZHJyB0byAnQUJD
REVGRycKK1ZBUklBQkxFUzogRXhwYW5kaW5nICcwMTInIHRvICcwMTInCitWQVJJQUJMRVM6IE1h
dGNoZXM6IHsnY29udGVudCc6ICdvdGhlcl9sZXR0ZXJzJywgJ2lzX2FycmF5JzogJycsICd0eXBl
JzogJzwnLCAncmVwbGFjZSc6ICc8KG90aGVyX2xldHRlcnMpJ30KK1ZBUklBQkxFUzogRXhwYW5k
aW5nICdvdGhlcl9sZXR0ZXJzJyB0byAnb3RoZXJfbGV0dGVycycKK1ZBUklBQkxFUzogRm91bmQg
b3V0cHV0ICc8KGxldHRlcnNfbGlzdClFRkdISUpLJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBN
YXRjaGVzOiB7J2NvbnRlbnQnOiAnbGV0dGVyc19saXN0JywgJ2lzX2FycmF5JzogJycsICd0eXBl
JzogJzwnLCAncmVwbGFjZSc6ICc8KGxldHRlcnNfbGlzdCknfQorVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJ2xldHRlcnNfbGlzdCcgdG8gJ2xldHRlcnNfbGlzdCcKK1ZBUklBQkxFUzogRm91bmQgb3V0
cHV0ICdBQkNERUZHSElKSycsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNE
RUZHSElKSycgdG8gJ0FCQ0RFRkdISUpLJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwobGV0dGVy
c19saXN0KUVGR0hJSksnIHRvICdBQkNERUZHSElKSycKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8
KG90aGVyX2xldHRlcnMpSElKSycgdG8gJ0FCQ0RFRkdISUpLJworVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJ1hZWicgdG8gJ1hZWicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNEJyB0byAnQUJDRCcK
K1ZBUklBQkxFUzogRXhwYW5kaW5nICcxMy4wJyB0byAnMTMuMCcKK1ZBUklBQkxFUzogRXhwYW5k
aW5nICdpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5waScgdG8gJ2ltcG9ydCBtYXRoOyBwcmludCBt
YXRoLnBpJworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnaW5jbHVkZWRfdmFyaWFi
bGUnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwoaW5jbHVkZWRf
dmFyaWFibGUpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdpbmNsdWRlZF92YXJpYWJsZScgdG8g
J2luY2x1ZGVkX3ZhcmlhYmxlJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ1hZWicsIHJlY3Vy
c2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdYWVonIHRvICdYWVonCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnPChpbmNsdWRlZF92YXJpYWJsZSknIHRvICdYWVonCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnNicgdG8gNgorVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnaW5jbHVkZWRf
dmFyaWFibGUnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwoaW5j
bHVkZWRfdmFyaWFibGUpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdpbmNsdWRlZF92YXJpYWJs
ZScgdG8gJ2luY2x1ZGVkX3ZhcmlhYmxlJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ1hZWics
IHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdYWVonIHRvICdYWVonCitWQVJJQUJM
RVM6IEV4cGFuZGluZyAnPChpbmNsdWRlZF92YXJpYWJsZSknIHRvICdYWVonCitWQVJJQUJMRVM6
IE1hdGNoZXM6IHsnY29udGVudCc6ICd0aGlyZF9sZXR0ZXJzJywgJ2lzX2FycmF5JzogJycsICd0
eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8KHRoaXJkX2xldHRlcnMpJ30KK1ZBUklBQkxFUzogRXhw
YW5kaW5nICd0aGlyZF9sZXR0ZXJzJyB0byAndGhpcmRfbGV0dGVycycKK1ZBUklBQkxFUzogRm91
bmQgb3V0cHV0ICc8KG90aGVyX2xldHRlcnMpSElKSycsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzog
TWF0Y2hlczogeydjb250ZW50JzogJ290aGVyX2xldHRlcnMnLCAnaXNfYXJyYXknOiAnJywgJ3R5
cGUnOiAnPCcsICdyZXBsYWNlJzogJzwob3RoZXJfbGV0dGVycyknfQorVkFSSUFCTEVTOiBFeHBh
bmRpbmcgJ290aGVyX2xldHRlcnMnIHRvICdvdGhlcl9sZXR0ZXJzJworVkFSSUFCTEVTOiBGb3Vu
ZCBvdXRwdXQgJzwobGV0dGVyc19saXN0KUVGR0hJSksnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6
IE1hdGNoZXM6IHsnY29udGVudCc6ICdsZXR0ZXJzX2xpc3QnLCAnaXNfYXJyYXknOiAnJywgJ3R5
cGUnOiAnPCcsICdyZXBsYWNlJzogJzwobGV0dGVyc19saXN0KSd9CitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnbGV0dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBGb3VuZCBv
dXRwdXQgJ0FCQ0RFRkdISUpLJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ0FC
Q0RFRkdISUpLJyB0byAnQUJDREVGR0hJSksnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChsZXR0
ZXJzX2xpc3QpRUZHSElKSycgdG8gJ0FCQ0RFRkdISUpLJworVkFSSUFCTEVTOiBFeHBhbmRpbmcg
Jzwob3RoZXJfbGV0dGVycylISUpLJyB0byAnQUJDREVGR0hJSksnCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnPCh0aGlyZF9sZXR0ZXJzKScgdG8gJ0FCQ0RFRkdISUpLJworVkFSSUFCTEVTOiBFeHBh
bmRpbmcgJzgnIHRvIDgKK1ZBUklBQkxFUzogRXhwYW5kaW5nICcuJyB0byAnLicKK1ZBUklBQkxF
UzogTWF0Y2hlczogeydjb250ZW50JzogJ2xldHRlcnNfbGlzdCcsICdpc19hcnJheSc6ICcnLCAn
dHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChsZXR0ZXJzX2xpc3QpJ30KK1ZBUklBQkxFUzogRXhw
YW5kaW5nICdsZXR0ZXJzX2xpc3QnIHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IE1hdGNo
ZXM6IHsnY29udGVudCc6ICdweXRob24gLWMgInByaW50IFwnPCEocHl0aG9uIC1jICI8KHBpJywg
J2lzX2FycmF5JzogJycsICd0eXBlJzogJzwhJywgJ3JlcGxhY2UnOiAnPCEocHl0aG9uIC1jICJw
cmludCBcJzwhKHB5dGhvbiAtYyAiPChwaSknfQorVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRl
bnQnOiAncHl0aG9uIC1jICI8KHBpJywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwhJywgJ3Jl
cGxhY2UnOiAnPCEocHl0aG9uIC1jICI8KHBpKSd9CitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29u
dGVudCc6ICdwaScsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChw
aSknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3BpJyB0byAncGknCitWQVJJQUJMRVM6IEZvdW5k
IG91dHB1dCAncHl0aG9uIC1jICJpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5waSInLCByZWN1cnNp
bmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAncHl0aG9uIC1jICJpbXBvcnQgbWF0aDsgcHJpbnQg
bWF0aC5waSInIHRvICdweXRob24gLWMgImltcG9ydCBtYXRoOyBwcmludCBtYXRoLnBpIicKK1ZB
UklBQkxFUzogRXhwYW5kaW5nICdweXRob24gLWMgIjwocGkpIicgdG8gJ3B5dGhvbiAtYyAiaW1w
b3J0IG1hdGg7IHByaW50IG1hdGgucGkiJworVkFSSUFCTEVTOiBFeGVjdXRpbmcgY29tbWFuZCAn
cHl0aG9uIC1jICJpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5waSInIGluIGRpcmVjdG9yeSAnTm9u
ZScKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICdweXRob24gLWMgInByaW50IFwnMy4xNDE1OTI2
NTM1OSBBQkNEXCciJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3B5dGhvbiAt
YyAicHJpbnQgXCczLjE0MTU5MjY1MzU5IEFCQ0RcJyInIHRvICdweXRob24gLWMgInByaW50IFwn
My4xNDE1OTI2NTM1OSBBQkNEXCciJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3B5dGhvbiAtYyAi
cHJpbnQgXCc8IShweXRob24gLWMgIjwocGkpIikgQUJDRFwnIicgdG8gJ3B5dGhvbiAtYyAicHJp
bnQgXCczLjE0MTU5MjY1MzU5IEFCQ0RcJyInCitWQVJJQUJMRVM6IEV4ZWN1dGluZyBjb21tYW5k
ICdweXRob24gLWMgInByaW50ICczLjE0MTU5MjY1MzU5IEFCQ0QnIicgaW4gZGlyZWN0b3J5ICdO
b25lJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJzMuMTQxNTkyNjUzNTkgQUJDRCcsIHJlY3Vy
c2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICczLjE0MTU5MjY1MzU5IEFCQ0QnIHRvICczLjE0
MTU5MjY1MzU5IEFCQ0QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPCEocHl0aG9uIC1jICJwcmlu
dCBcJzwhKHB5dGhvbiAtYyAiPChwaSkiKSA8KGxldHRlcnNfbGlzdClcJyIpJyB0byAnMy4xNDE1
OTI2NTM1OSBBQkNEJworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnInB5dGhvbiIs
ICItYyIsICI8KHBpJywgJ2lzX2FycmF5JzogJ1snLCAndHlwZSc6ICc8IScsICdyZXBsYWNlJzog
JzwhKFsicHl0aG9uIiwgIi1jIiwgIjwocGkpJ30KK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250
ZW50JzogJ3BpJywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8KHBp
KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAncGknIHRvICdwaScKK1ZBUklBQkxFUzogRm91bmQg
b3V0cHV0ICdbInB5dGhvbiIsICItYyIsICJpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5waSJdJywg
cmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ1sicHl0aG9uIiwgIi1jIiwgImltcG9y
dCBtYXRoOyBwcmludCBtYXRoLnBpIl0nIHRvICdbInB5dGhvbiIsICItYyIsICJpbXBvcnQgbWF0
aDsgcHJpbnQgbWF0aC5waSJdJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ1sicHl0aG9uIiwgIi1j
IiwgIjwocGkpIl0nIHRvICdbInB5dGhvbiIsICItYyIsICJpbXBvcnQgbWF0aDsgcHJpbnQgbWF0
aC5waSJdJworVkFSSUFCTEVTOiBFeGVjdXRpbmcgY29tbWFuZCAnWydweXRob24nLCAnLWMnLCAn
aW1wb3J0IG1hdGg7IHByaW50IG1hdGgucGknXScgaW4gZGlyZWN0b3J5ICdOb25lJworVkFSSUFC
TEVTOiBGb3VuZCBvdXRwdXQgJzMuMTQxNTkyNjUzNTknLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6
IEV4cGFuZGluZyAnMy4xNDE1OTI2NTM1OScgdG8gJzMuMTQxNTkyNjUzNTknCitWQVJJQUJMRVM6
IEV4cGFuZGluZyAnPCEoWyJweXRob24iLCAiLWMiLCAiPChwaSkiXSknIHRvICczLjE0MTU5MjY1
MzU5JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2xldHRlcnNfJyB0byAnbGV0dGVyc18nCitWQVJJ
QUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICc8IShweXRob24gLWMgInByaW50IFwnbGV0dGVy
c19saXN0XCciJywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8KDwh
KHB5dGhvbiAtYyAicHJpbnQgXCdsZXR0ZXJzX2xpc3RcJyIpJ30KK1ZBUklBQkxFUzogTWF0Y2hl
czogeydjb250ZW50JzogJ3B5dGhvbiAtYyAicHJpbnQgXCdsZXR0ZXJzX2xpc3RcJyInLCAnaXNf
YXJyYXknOiAnJywgJ3R5cGUnOiAnPCEnLCAncmVwbGFjZSc6ICc8IShweXRob24gLWMgInByaW50
IFwnbGV0dGVyc19saXN0XCciKSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAncHl0aG9uIC1jICJw
cmludCBcJ2xldHRlcnNfbGlzdFwnIicgdG8gJ3B5dGhvbiAtYyAicHJpbnQgXCdsZXR0ZXJzX2xp
c3RcJyInCitWQVJJQUJMRVM6IEV4ZWN1dGluZyBjb21tYW5kICdweXRob24gLWMgInByaW50ICds
ZXR0ZXJzX2xpc3QnIicgaW4gZGlyZWN0b3J5ICdOb25lJworVkFSSUFCTEVTOiBGb3VuZCBvdXRw
dXQgJ2xldHRlcnNfbGlzdCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdsZXR0
ZXJzX2xpc3QnIHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPCEocHl0
aG9uIC1jICJwcmludCBcJ2xldHRlcnNfbGlzdFwnIiknIHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJ
QUJMRVM6IEZvdW5kIG91dHB1dCAnQUJDRCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5k
aW5nICdBQkNEJyB0byAnQUJDRCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KDwhKHB5dGhvbiAt
YyAicHJpbnQgXCdsZXR0ZXJzX2xpc3RcJyIpKScgdG8gJ0FCQ0QnCitWQVJJQUJMRVM6IE1hdGNo
ZXM6IHsnY29udGVudCc6ICdjaGVja19pbnQnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcs
ICdyZXBsYWNlJzogJzwoY2hlY2tfaW50KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnY2hlY2tf
aW50JyB0byAnY2hlY2tfaW50JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJzUnLCByZWN1cnNp
bmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnNScgdG8gNQorVkFSSUFCTEVTOiBFeHBhbmRpbmcg
JzwoY2hlY2tfaW50KScgdG8gNQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2xpc3QnIHRvICdsaXN0
JworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnInB5dGhvbiIsICItYyIsICI8KHBp
JywgJ2lzX2FycmF5JzogJ1snLCAndHlwZSc6ICc8IScsICdyZXBsYWNlJzogJzwhKFsicHl0aG9u
IiwgIi1jIiwgIjwocGkpJ30KK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3BpJywg
J2lzX2FycmF5JzogJycsICd0eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8KHBpKSd9CitWQVJJQUJM
RVM6IEV4cGFuZGluZyAncGknIHRvICdwaScKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICdbInB5
dGhvbiIsICItYyIsICJpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5waSJdJywgcmVjdXJzaW5nLgor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJ1sicHl0aG9uIiwgIi1jIiwgImltcG9ydCBtYXRoOyBwcmlu
dCBtYXRoLnBpIl0nIHRvICdbInB5dGhvbiIsICItYyIsICJpbXBvcnQgbWF0aDsgcHJpbnQgbWF0
aC5waSJdJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ1sicHl0aG9uIiwgIi1jIiwgIjwocGkpIl0n
IHRvICdbInB5dGhvbiIsICItYyIsICJpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5waSJdJworVkFS
SUFCTEVTOiBIYWQgY2FjaGUgdmFsdWUgZm9yIGNvbW1hbmQgJ1sncHl0aG9uJywgJy1jJywgJ2lt
cG9ydCBtYXRoOyBwcmludCBtYXRoLnBpJ10nIGluIGRpcmVjdG9yeSAnTm9uZScKK1ZBUklBQkxF
UzogRm91bmQgb3V0cHV0ICczLjE0MTU5MjY1MzU5JywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBF
eHBhbmRpbmcgJzMuMTQxNTkyNjUzNTknIHRvICczLjE0MTU5MjY1MzU5JworVkFSSUFCTEVTOiBF
eHBhbmRpbmcgJzwhKFsicHl0aG9uIiwgIi1jIiwgIjwocGkpIl0pJyB0byAnMy4xNDE1OTI2NTM1
OScKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3B5dGhvbiAtYyAicHJpbnQgXCc8
KGxldHRlcnNfbGlzdCcsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8IScsICdyZXBsYWNlJzog
JzwhKHB5dGhvbiAtYyAicHJpbnQgXCc8KGxldHRlcnNfbGlzdCknfQorVkFSSUFCTEVTOiBNYXRj
aGVzOiB7J2NvbnRlbnQnOiAnbGV0dGVyc19saXN0JywgJ2lzX2FycmF5JzogJycsICd0eXBlJzog
JzwnLCAncmVwbGFjZSc6ICc8KGxldHRlcnNfbGlzdCknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcg
J2xldHRlcnNfbGlzdCcgdG8gJ2xldHRlcnNfbGlzdCcKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0
ICdweXRob24gLWMgInByaW50IFwnQUJDRFwnIicsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhw
YW5kaW5nICdweXRob24gLWMgInByaW50IFwnQUJDRFwnIicgdG8gJ3B5dGhvbiAtYyAicHJpbnQg
XCdBQkNEXCciJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3B5dGhvbiAtYyAicHJpbnQgXCc8KGxl
dHRlcnNfbGlzdClcJyInIHRvICdweXRob24gLWMgInByaW50IFwnQUJDRFwnIicKK1ZBUklBQkxF
UzogRXhlY3V0aW5nIGNvbW1hbmQgJ3B5dGhvbiAtYyAicHJpbnQgJ0FCQ0QnIicgaW4gZGlyZWN0
b3J5ICdOb25lJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ0FCQ0QnLCByZWN1cnNpbmcuCitW
QVJJQUJMRVM6IEV4cGFuZGluZyAnQUJDRCcgdG8gJ0FCQ0QnCitWQVJJQUJMRVM6IEV4cGFuZGlu
ZyAnPCEocHl0aG9uIC1jICJwcmludCBcJzwobGV0dGVyc19saXN0KVwnIiknIHRvICdBQkNEJwor
VkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnbGV0dGVyc19saXN0JywgJ2lzX2FycmF5
JzogJycsICd0eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8KGxldHRlcnNfbGlzdCknfQorVkFSSUFC
TEVTOiBFeHBhbmRpbmcgJ2xldHRlcnNfbGlzdCcgdG8gJ2xldHRlcnNfbGlzdCcKK1ZBUklBQkxF
UzogTWF0Y2hlczogeydjb250ZW50JzogJ3B5dGhvbiAtYyAicHJpbnQgXCc8IShweXRob24gLWMg
IjwocGknLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCEnLCAncmVwbGFjZSc6ICc8IShweXRo
b24gLWMgInByaW50IFwnPCEocHl0aG9uIC1jICI8KHBpKSd9CitWQVJJQUJMRVM6IE1hdGNoZXM6
IHsnY29udGVudCc6ICdweXRob24gLWMgIjwocGknLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAn
PCEnLCAncmVwbGFjZSc6ICc8IShweXRob24gLWMgIjwocGkpJ30KK1ZBUklBQkxFUzogTWF0Y2hl
czogeydjb250ZW50JzogJ3BpJywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwnLCAncmVwbGFj
ZSc6ICc8KHBpKSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAncGknIHRvICdwaScKK1ZBUklBQkxF
UzogRm91bmQgb3V0cHV0ICdweXRob24gLWMgImltcG9ydCBtYXRoOyBwcmludCBtYXRoLnBpIics
IHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdweXRob24gLWMgImltcG9ydCBtYXRo
OyBwcmludCBtYXRoLnBpIicgdG8gJ3B5dGhvbiAtYyAiaW1wb3J0IG1hdGg7IHByaW50IG1hdGgu
cGkiJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3B5dGhvbiAtYyAiPChwaSkiJyB0byAncHl0aG9u
IC1jICJpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5waSInCitWQVJJQUJMRVM6IEhhZCBjYWNoZSB2
YWx1ZSBmb3IgY29tbWFuZCAncHl0aG9uIC1jICJpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5waSIn
IGluIGRpcmVjdG9yeSAnTm9uZScKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICdweXRob24gLWMg
InByaW50IFwnMy4xNDE1OTI2NTM1OSBBQkNEXCciJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBF
eHBhbmRpbmcgJ3B5dGhvbiAtYyAicHJpbnQgXCczLjE0MTU5MjY1MzU5IEFCQ0RcJyInIHRvICdw
eXRob24gLWMgInByaW50IFwnMy4xNDE1OTI2NTM1OSBBQkNEXCciJworVkFSSUFCTEVTOiBFeHBh
bmRpbmcgJ3B5dGhvbiAtYyAicHJpbnQgXCc8IShweXRob24gLWMgIjwocGkpIikgQUJDRFwnIicg
dG8gJ3B5dGhvbiAtYyAicHJpbnQgXCczLjE0MTU5MjY1MzU5IEFCQ0RcJyInCitWQVJJQUJMRVM6
IEhhZCBjYWNoZSB2YWx1ZSBmb3IgY29tbWFuZCAncHl0aG9uIC1jICJwcmludCAnMy4xNDE1OTI2
NTM1OSBBQkNEJyInIGluIGRpcmVjdG9yeSAnTm9uZScKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0
ICczLjE0MTU5MjY1MzU5IEFCQ0QnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAn
My4xNDE1OTI2NTM1OSBBQkNEJyB0byAnMy4xNDE1OTI2NTM1OSBBQkNEJworVkFSSUFCTEVTOiBF
eHBhbmRpbmcgJzwhKHB5dGhvbiAtYyAicHJpbnQgXCc8IShweXRob24gLWMgIjwocGkpIikgPChs
ZXR0ZXJzX2xpc3QpXCciKScgdG8gJzMuMTQxNTkyNjUzNTkgQUJDRCcKK1ZBUklBQkxFUzogTWF0
Y2hlczogeydjb250ZW50JzogJ2NoZWNrX3N0cl9pbnQnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUn
OiAnPCcsICdyZXBsYWNlJzogJzwoY2hlY2tfc3RyX2ludCknfQorVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJ2NoZWNrX3N0cl9pbnQnIHRvICdjaGVja19zdHJfaW50JworVkFSSUFCTEVTOiBGb3VuZCBv
dXRwdXQgJzYnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnNicgdG8gNgorVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJzwoY2hlY2tfc3RyX2ludCknIHRvIDYKK1ZBUklBQkxFUzogTWF0
Y2hlczogeydjb250ZW50JzogJ2NoZWNrX2ludCcsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8
JywgJ3JlcGxhY2UnOiAnPChjaGVja19pbnQpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdjaGVj
a19pbnQnIHRvICdjaGVja19pbnQnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnNWJsYWgnLCBy
ZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnNWJsYWgnIHRvICc1YmxhaCcKK1ZBUklB
QkxFUzogRXhwYW5kaW5nICc8KGNoZWNrX2ludClibGFoJyB0byAnNWJsYWgnCitWQVJJQUJMRVM6
IE1hdGNoZXM6IHsnY29udGVudCc6ICc8IShweXRob24gLWMgInByaW50IFwnbGV0dGVyc19saXN0
XCciJywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8KDwhKHB5dGhv
biAtYyAicHJpbnQgXCdsZXR0ZXJzX2xpc3RcJyIpJ30KK1ZBUklBQkxFUzogTWF0Y2hlczogeydj
b250ZW50JzogJ3B5dGhvbiAtYyAicHJpbnQgXCdsZXR0ZXJzX2xpc3RcJyInLCAnaXNfYXJyYXkn
OiAnJywgJ3R5cGUnOiAnPCEnLCAncmVwbGFjZSc6ICc8IShweXRob24gLWMgInByaW50IFwnbGV0
dGVyc19saXN0XCciKSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAncHl0aG9uIC1jICJwcmludCBc
J2xldHRlcnNfbGlzdFwnIicgdG8gJ3B5dGhvbiAtYyAicHJpbnQgXCdsZXR0ZXJzX2xpc3RcJyIn
CitWQVJJQUJMRVM6IEhhZCBjYWNoZSB2YWx1ZSBmb3IgY29tbWFuZCAncHl0aG9uIC1jICJwcmlu
dCAnbGV0dGVyc19saXN0JyInIGluIGRpcmVjdG9yeSAnTm9uZScKK1ZBUklBQkxFUzogRm91bmQg
b3V0cHV0ICdsZXR0ZXJzX2xpc3QnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAn
bGV0dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwh
KHB5dGhvbiAtYyAicHJpbnQgXCdsZXR0ZXJzX2xpc3RcJyIpJyB0byAnbGV0dGVyc19saXN0Jwor
VkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ0FCQ0QnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnQUJDRCcgdG8gJ0FCQ0QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPCg8IShweXRo
b24gLWMgInByaW50IFwnbGV0dGVyc19saXN0XCciKSknIHRvICdBQkNEJworVkFSSUFCTEVTOiBN
YXRjaGVzOiB7J2NvbnRlbnQnOiAncHl0aG9uIC1jICJwcmludCBcJzwobGV0dGVyc19saXN0Jywg
J2lzX2FycmF5JzogJycsICd0eXBlJzogJzwhJywgJ3JlcGxhY2UnOiAnPCEocHl0aG9uIC1jICJw
cmludCBcJzwobGV0dGVyc19saXN0KSd9CitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6
ICdsZXR0ZXJzX2xpc3QnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzog
JzwobGV0dGVyc19saXN0KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbGV0dGVyc19saXN0JyB0
byAnbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ3B5dGhvbiAtYyAicHJp
bnQgXCdBQkNEXCciJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3B5dGhvbiAt
YyAicHJpbnQgXCdBQkNEXCciJyB0byAncHl0aG9uIC1jICJwcmludCBcJ0FCQ0RcJyInCitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAncHl0aG9uIC1jICJwcmludCBcJzwobGV0dGVyc19saXN0KVwnIicg
dG8gJ3B5dGhvbiAtYyAicHJpbnQgXCdBQkNEXCciJworVkFSSUFCTEVTOiBIYWQgY2FjaGUgdmFs
dWUgZm9yIGNvbW1hbmQgJ3B5dGhvbiAtYyAicHJpbnQgJ0FCQ0QnIicgaW4gZGlyZWN0b3J5ICdO
b25lJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ0FCQ0QnLCByZWN1cnNpbmcuCitWQVJJQUJM
RVM6IEV4cGFuZGluZyAnQUJDRCcgdG8gJ0FCQ0QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPCEo
cHl0aG9uIC1jICJwcmludCBcJzwobGV0dGVyc19saXN0KVwnIiknIHRvICdBQkNEJworVkFSSUFC
TEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnbm90X2ludF80JywgJ2lzX2FycmF5JzogJycsICd0
eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8KG5vdF9pbnRfNCknfQorVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJ25vdF9pbnRfNCcgdG8gJ25vdF9pbnRfNCcKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICcx
My4wJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzEzLjAnIHRvICcxMy4wJwor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwobm90X2ludF80KScgdG8gJzEzLjAnCitWQVJJQUJMRVM6
IE1hdGNoZXM6IHsnY29udGVudCc6ICdub3RfaW50XzMnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUn
OiAnPCcsICdyZXBsYWNlJzogJzwobm90X2ludF8zKSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAn
bm90X2ludF8zJyB0byAnbm90X2ludF8zJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJzAxMics
IHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICcwMTInIHRvICcwMTInCitWQVJJQUJM
RVM6IEV4cGFuZGluZyAnPChub3RfaW50XzMpJyB0byAnMDEyJworVkFSSUFCTEVTOiBNYXRjaGVz
OiB7J2NvbnRlbnQnOiAnbmVnYXRpdmVfaW50JywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwn
LCAncmVwbGFjZSc6ICc8KG5lZ2F0aXZlX2ludCknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ25l
Z2F0aXZlX2ludCcgdG8gJ25lZ2F0aXZlX2ludCcKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICct
MTUnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnLTE1JyB0byAtMTUKK1ZBUklB
QkxFUzogRXhwYW5kaW5nICc8KG5lZ2F0aXZlX2ludCknIHRvIC0xNQorVkFSSUFCTEVTOiBNYXRj
aGVzOiB7J2NvbnRlbnQnOiAnbm90X2ludF81JywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwn
LCAncmVwbGFjZSc6ICc8KG5vdF9pbnRfNSknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ25vdF9p
bnRfNScgdG8gJ25vdF9pbnRfNScKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICcrMTQnLCByZWN1
cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnKzE0JyB0byAnKzE0JworVkFSSUFCTEVTOiBF
eHBhbmRpbmcgJzwobm90X2ludF81KScgdG8gJysxNCcKK1ZBUklBQkxFUzogTWF0Y2hlczogeydj
b250ZW50JzogJ2NoZWNrX2xpc3RfaW50JywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwnLCAn
cmVwbGFjZSc6ICc8KGNoZWNrX2xpc3RfaW50KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnY2hl
Y2tfbGlzdF9pbnQnIHRvICdjaGVja19saXN0X2ludCcKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0
ICc3IDggOScsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICc3IDggOScgdG8gJzcg
OCA5JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwoY2hlY2tfbGlzdF9pbnQpJyB0byAnNyA4IDkn
CitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdub3RfaW50XzInLCAnaXNfYXJyYXkn
OiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwobm90X2ludF8yKSd9CitWQVJJQUJMRVM6
IEV4cGFuZGluZyAnbm90X2ludF8yJyB0byAnbm90X2ludF8yJworVkFSSUFCTEVTOiBGb3VuZCBv
dXRwdXQgJzExICcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICcxMSAnIHRvICcx
MSAnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChub3RfaW50XzIpJyB0byAnMTEgJworVkFSSUFC
TEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnbm90X2ludF8xJywgJ2lzX2FycmF5JzogJycsICd0
eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8KG5vdF9pbnRfMSknfQorVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJ25vdF9pbnRfMScgdG8gJ25vdF9pbnRfMScKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICcg
MTAnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnIDEwJyB0byAnIDEwJworVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJzwobm90X2ludF8xKScgdG8gJyAxMCcKK1ZBUklBQkxFUzogTWF0
Y2hlczogeydjb250ZW50JzogJ3plcm9faW50JywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwn
LCAncmVwbGFjZSc6ICc8KHplcm9faW50KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnemVyb19p
bnQnIHRvICd6ZXJvX2ludCcKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICcwJywgcmVjdXJzaW5n
LgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzAnIHRvIDAKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8
KHplcm9faW50KScgdG8gMAorVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnY2hlY2tf
bGlzdF9pbnQnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPEAnLCAncmVwbGFjZSc6ICc8QChj
aGVja19saXN0X2ludCknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2NoZWNrX2xpc3RfaW50JyB0
byAnY2hlY2tfbGlzdF9pbnQnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCBbNywgOCwgOV0sIHJl
Y3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nIDcgdG8gNworVkFSSUFCTEVTOiBFeHBhbmRp
bmcgOCB0byA4CitWQVJJQUJMRVM6IEV4cGFuZGluZyA5IHRvIDkKK1ZBUklBQkxFUzogRXhwYW5k
aW5nICc8QChjaGVja19saXN0X2ludCknIHRvIFs3LCA4LCA5XQorVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJ2ZvbycgdG8gJ2ZvbycKK1ZBUklBQkxFUzogRXhwYW5kaW5nICd0YXJnZXQnIHRvICd0YXJn
ZXQnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbm9uZScgdG8gJ25vbmUnCitWQVJJQUJMRVM6IE1h
dGNoZXM6IHsnY29udGVudCc6ICd2YXI2JywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwnLCAn
cmVwbGFjZSc6ICc8KHZhcjYpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICd2YXI2JyB0byAndmFy
NicKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ2VjaG8gPCh2YXI1JywgJ2lzX2Fy
cmF5JzogJycsICd0eXBlJzogJzwhJywgJ3JlcGxhY2UnOiAnPCEoZWNobyA8KHZhcjUpJ30KK1ZB
UklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3ZhcjUnLCAnaXNfYXJyYXknOiAnJywgJ3R5
cGUnOiAnPCcsICdyZXBsYWNlJzogJzwodmFyNSknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3Zh
cjUnIHRvICd2YXI1JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ2VjaG8gbGV0dGVyc19saXN0
JywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2VjaG8gbGV0dGVyc19saXN0JyB0
byAnZWNobyBsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnZWNobyA8KHZhcjUp
bGlzdCcgdG8gJ2VjaG8gbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBFeGVjdXRpbmcgY29tbWFu
ZCAnZWNobyBsZXR0ZXJzX2xpc3QnIGluIGRpcmVjdG9yeSAnTm9uZScKK1ZBUklBQkxFUzogRm91
bmQgb3V0cHV0ICdsZXR0ZXJzX2xpc3QnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGlu
ZyAnbGV0dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBFeHBhbmRpbmcg
JzwhKGVjaG8gPCh2YXI1KTwodmFyNikpJyB0byAnbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBF
eHBhbmRpbmcgJ3Rlc3RfYWN0aW9uJyB0byAndGVzdF9hY3Rpb24nCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnZWNobycgdG8gJ2VjaG8nCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdf
aW5wdXRzJywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8KF9pbnB1
dHMpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdfaW5wdXRzJyB0byAnX2lucHV0cycKK1ZBUklB
QkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3ZhcjInLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUn
OiAnPCcsICdyZXBsYWNlJzogJzwodmFyMiknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3ZhcjIn
IHRvICd2YXIyJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJzMuMTQxNTkyNjUzNTkgQUJDRCcs
IHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICczLjE0MTU5MjY1MzU5IEFCQ0QnIHRv
ICczLjE0MTU5MjY1MzU5IEFCQ0QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPCh2YXIyKScgdG8g
JzMuMTQxNTkyNjUzNTkgQUJDRCcKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICciMy4xNDE1OTI2
NTM1OSBBQkNEIicsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICciMy4xNDE1OTI2
NTM1OSBBQkNEIicgdG8gJyIzLjE0MTU5MjY1MzU5IEFCQ0QiJworVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJzwoX2lucHV0cyknIHRvICciMy4xNDE1OTI2NTM1OSBBQkNEIicKK1ZBUklBQkxFUzogTWF0
Y2hlczogeydjb250ZW50JzogJ19vdXRwdXRzJywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwn
LCAncmVwbGFjZSc6ICc8KF9vdXRwdXRzKSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnX291dHB1
dHMnIHRvICdfb3V0cHV0cycKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3ZhcjQn
LCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwodmFyNCknfQorVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJ3ZhcjQnIHRvICd2YXI0JworVkFSSUFCTEVTOiBGb3VuZCBvdXRw
dXQgJ0FCQ0QnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnQUJDRCcgdG8gJ0FC
Q0QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPCh2YXI0KScgdG8gJ0FCQ0QnCitWQVJJQUJMRVM6
IE1hdGNoZXM6IHsnY29udGVudCc6ICd2YXI3JywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwn
LCAncmVwbGFjZSc6ICc8KHZhcjcpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICd2YXI3JyB0byAn
dmFyNycKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICdsZXR0ZXJzX2xpc3QnLCByZWN1cnNpbmcu
CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbGV0dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0Jwor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwodmFyNyknIHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJM
RVM6IEZvdW5kIG91dHB1dCAnQUJDRCBsZXR0ZXJzX2xpc3QnLCByZWN1cnNpbmcuCitWQVJJQUJM
RVM6IEV4cGFuZGluZyAnQUJDRCBsZXR0ZXJzX2xpc3QnIHRvICdBQkNEIGxldHRlcnNfbGlzdCcK
K1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KF9vdXRwdXRzKScgdG8gJ0FCQ0QgbGV0dGVyc19saXN0
JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzMuMTQxNTkyNjUzNTkgQUJDRCcgdG8gJzMuMTQxNTky
NjUzNTkgQUJDRCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNEJyB0byAnQUJDRCcKK1ZBUklB
QkxFUzogRXhwYW5kaW5nICdsZXR0ZXJzX2xpc3QnIHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJM
RVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICd2YXI2JywgJ2lzX2FycmF5JzogJycsICd0eXBlJzog
JzwnLCAncmVwbGFjZSc6ICc8KHZhcjYpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICd2YXI2JyB0
byAndmFyNicKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ2VjaG8gPCh2YXI1Jywg
J2lzX2FycmF5JzogJycsICd0eXBlJzogJzwhJywgJ3JlcGxhY2UnOiAnPCEoZWNobyA8KHZhcjUp
J30KK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3ZhcjUnLCAnaXNfYXJyYXknOiAn
JywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwodmFyNSknfQorVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJ3ZhcjUnIHRvICd2YXI1JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ2VjaG8gbGV0dGVy
c19saXN0JywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2VjaG8gbGV0dGVyc19s
aXN0JyB0byAnZWNobyBsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnZWNobyA8
KHZhcjUpbGlzdCcgdG8gJ2VjaG8gbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBIYWQgY2FjaGUg
dmFsdWUgZm9yIGNvbW1hbmQgJ2VjaG8gbGV0dGVyc19saXN0JyBpbiBkaXJlY3RvcnkgJ05vbmUn
CitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnbGV0dGVyc19saXN0JywgcmVjdXJzaW5nLgorVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJ2xldHRlcnNfbGlzdCcgdG8gJ2xldHRlcnNfbGlzdCcKK1ZBUklB
QkxFUzogRXhwYW5kaW5nICc8IShlY2hvIDwodmFyNSk8KHZhcjYpKScgdG8gJ2xldHRlcnNfbGlz
dCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICd0ZXN0X2FjdGlvbl9wcmltZScgdG8gJ3Rlc3RfYWN0
aW9uX3ByaW1lJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2VjaG8nIHRvICdlY2hvJworVkFSSUFC
TEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnX2lucHV0cycsICdpc19hcnJheSc6ICcnLCAndHlw
ZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChfaW5wdXRzKSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAn
X2lucHV0cycgdG8gJ19pbnB1dHMnCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICd2
YXIyJywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8KHZhcjIpJ30K
K1ZBUklBQkxFUzogRXhwYW5kaW5nICd2YXIyJyB0byAndmFyMicKK1ZBUklBQkxFUzogRm91bmQg
b3V0cHV0ICczLjE0MTU5MjY1MzU5IEFCQ0QnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnMy4xNDE1OTI2NTM1OSBBQkNEJyB0byAnMy4xNDE1OTI2NTM1OSBBQkNEJworVkFSSUFC
TEVTOiBFeHBhbmRpbmcgJzwodmFyMiknIHRvICczLjE0MTU5MjY1MzU5IEFCQ0QnCitWQVJJQUJM
RVM6IEZvdW5kIG91dHB1dCAnIjMuMTQxNTkyNjUzNTkgQUJDRCInLCByZWN1cnNpbmcuCitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAnIjMuMTQxNTkyNjUzNTkgQUJDRCInIHRvICciMy4xNDE1OTI2NTM1
OSBBQkNEIicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KF9pbnB1dHMpJyB0byAnIjMuMTQxNTky
NjUzNTkgQUJDRCInCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdfb3V0cHV0cycs
ICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChfb3V0cHV0cyknfQor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJ19vdXRwdXRzJyB0byAnX291dHB1dHMnCitWQVJJQUJMRVM6
IE1hdGNoZXM6IHsnY29udGVudCc6ICd2YXI0JywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwn
LCAncmVwbGFjZSc6ICc8KHZhcjQpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICd2YXI0JyB0byAn
dmFyNCcKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICdBQkNEJywgcmVjdXJzaW5nLgorVkFSSUFC
TEVTOiBFeHBhbmRpbmcgJ0FCQ0QnIHRvICdBQkNEJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwo
dmFyNCknIHRvICdBQkNEJworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAndmFyNycs
ICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPCh2YXI3KSd9CitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAndmFyNycgdG8gJ3ZhcjcnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1
dCAnbGV0dGVyc19saXN0JywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2xldHRl
cnNfbGlzdCcgdG8gJ2xldHRlcnNfbGlzdCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KHZhcjcp
JyB0byAnbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ0FCQ0QgbGV0dGVy
c19saXN0JywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ0FCQ0QgbGV0dGVyc19s
aXN0JyB0byAnQUJDRCBsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChfb3V0
cHV0cyknIHRvICdBQkNEIGxldHRlcnNfbGlzdCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICczLjE0
MTU5MjY1MzU5IEFCQ0QnIHRvICczLjE0MTU5MjY1MzU5IEFCQ0QnCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnQUJDRCcgdG8gJ0FCQ0QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbGV0dGVyc19saXN0
JyB0byAnbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAndmFy
NicsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPCh2YXI2KSd9CitW
QVJJQUJMRVM6IEV4cGFuZGluZyAndmFyNicgdG8gJ3ZhcjYnCitWQVJJQUJMRVM6IE1hdGNoZXM6
IHsnY29udGVudCc6ICdlY2hvIDwodmFyNScsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8IScs
ICdyZXBsYWNlJzogJzwhKGVjaG8gPCh2YXI1KSd9CitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29u
dGVudCc6ICd2YXI1JywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8
KHZhcjUpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICd2YXI1JyB0byAndmFyNScKK1ZBUklBQkxF
UzogRm91bmQgb3V0cHV0ICdlY2hvIGxldHRlcnNfbGlzdCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxF
UzogRXhwYW5kaW5nICdlY2hvIGxldHRlcnNfbGlzdCcgdG8gJ2VjaG8gbGV0dGVyc19saXN0Jwor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2VjaG8gPCh2YXI1KWxpc3QnIHRvICdlY2hvIGxldHRlcnNf
bGlzdCcKK1ZBUklBQkxFUzogSGFkIGNhY2hlIHZhbHVlIGZvciBjb21tYW5kICdlY2hvIGxldHRl
cnNfbGlzdCcgaW4gZGlyZWN0b3J5ICdOb25lJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ2xl
dHRlcnNfbGlzdCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdsZXR0ZXJzX2xp
c3QnIHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPCEoZWNobyA8KHZh
cjUpPCh2YXI2KSknIHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAndGVz
dF9hY3Rpb25fcHJpbWVfcHJpbWUnIHRvICd0ZXN0X2FjdGlvbl9wcmltZV9wcmltZScKK1ZBUklB
QkxFUzogRXhwYW5kaW5nICdlY2hvJyB0byAnZWNobycKK1ZBUklBQkxFUzogTWF0Y2hlczogeydj
b250ZW50JzogJ19pbnB1dHMnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNl
JzogJzwoX2lucHV0cyknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ19pbnB1dHMnIHRvICdfaW5w
dXRzJworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAndmFyMnByaW1lJywgJ2lzX2Fy
cmF5JzogJycsICd0eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8KHZhcjJwcmltZSknfQorVkFSSUFC
TEVTOiBFeHBhbmRpbmcgJ3ZhcjJwcmltZScgdG8gJ3ZhcjJwcmltZScKK1ZBUklBQkxFUzogRm91
bmQgb3V0cHV0ICczLjE0MTU5MjY1MzU5IEFCQ0QnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnMy4xNDE1OTI2NTM1OSBBQkNEJyB0byAnMy4xNDE1OTI2NTM1OSBBQkNEJworVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJzwodmFyMnByaW1lKScgdG8gJzMuMTQxNTkyNjUzNTkgQUJDRCcK
K1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICciMy4xNDE1OTI2NTM1OSBBQkNEIicsIHJlY3Vyc2lu
Zy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICciMy4xNDE1OTI2NTM1OSBBQkNEIicgdG8gJyIzLjE0
MTU5MjY1MzU5IEFCQ0QiJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwoX2lucHV0cyknIHRvICci
My4xNDE1OTI2NTM1OSBBQkNEIicKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ19v
dXRwdXRzJywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8KF9vdXRw
dXRzKSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnX291dHB1dHMnIHRvICdfb3V0cHV0cycKK1ZB
UklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3ZhcjRwcmltZScsICdpc19hcnJheSc6ICcn
LCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPCh2YXI0cHJpbWUpJ30KK1ZBUklBQkxFUzogRXhw
YW5kaW5nICd2YXI0cHJpbWUnIHRvICd2YXI0cHJpbWUnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1
dCAnQUJDRCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNEJyB0byAnQUJD
RCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KHZhcjRwcmltZSknIHRvICdBQkNEJworVkFSSUFC
TEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAndmFyNycsICdpc19hcnJheSc6ICcnLCAndHlwZSc6
ICc8JywgJ3JlcGxhY2UnOiAnPCh2YXI3KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAndmFyNycg
dG8gJ3ZhcjcnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnbGV0dGVyc19saXN0JywgcmVjdXJz
aW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2xldHRlcnNfbGlzdCcgdG8gJ2xldHRlcnNfbGlz
dCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KHZhcjcpJyB0byAnbGV0dGVyc19saXN0JworVkFS
SUFCTEVTOiBGb3VuZCBvdXRwdXQgJ0FCQ0QgbGV0dGVyc19saXN0JywgcmVjdXJzaW5nLgorVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJ0FCQ0QgbGV0dGVyc19saXN0JyB0byAnQUJDRCBsZXR0ZXJzX2xp
c3QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChfb3V0cHV0cyknIHRvICdBQkNEIGxldHRlcnNf
bGlzdCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICczLjE0MTU5MjY1MzU5IEFCQ0QnIHRvICczLjE0
MTU5MjY1MzU5IEFCQ0QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnQUJDRCcgdG8gJ0FCQ0QnCitW
QVJJQUJMRVM6IEV4cGFuZGluZyAnbGV0dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0JworVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJ2R1bW15JyB0byAnZHVtbXknCitWQVJJQUJMRVM6IEV4cGFuZGlu
ZyAndGFyZ2V0JyB0byAndGFyZ2V0JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ25vbmUnIHRvICdu
b25lJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2NvbW1hbmRzLXJlcGVhdGVkLmd5cCcgdG8gJ2Nv
bW1hbmRzLXJlcGVhdGVkLmd5cCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdjb21tYW5kcy5neXBp
JyB0byAnY29tbWFuZHMuZ3lwaScKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdkdW1teScgdG8gJ2R1
bW15JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3RhcmdldCcgdG8gJ3RhcmdldCcKK1ZBUklBQkxF
UzogRXhwYW5kaW5nICdub25lJyB0byAnbm9uZScKK1ZBUklBQkxFUzogRXhwYW5kaW5nICczLjE0
MTU5MjY1MzU5IEFCQ0QnIHRvICczLjE0MTU5MjY1MzU5IEFCQ0QnCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnMy4xNDE1OTI2NTM1OScgdG8gJzMuMTQxNTkyNjUzNTknCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnbGV0dGVyc18nIHRvICdsZXR0ZXJzXycKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNE
JyB0byAnQUJDRCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdsaXN0JyB0byAnbGlzdCcKK1ZBUklB
QkxFUzogRXhwYW5kaW5nICczLjE0MTU5MjY1MzU5JyB0byAnMy4xNDE1OTI2NTM1OScKK1ZBUklB
QkxFUzogRXhwYW5kaW5nICdBQkNEJyB0byAnQUJDRCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICcz
LjE0MTU5MjY1MzU5IEFCQ0QnIHRvICczLjE0MTU5MjY1MzU5IEFCQ0QnCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnNWJsYWgnIHRvICc1YmxhaCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNEJyB0
byAnQUJDRCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNEJyB0byAnQUJDRCcKK1ZBUklBQkxF
UzogRXhwYW5kaW5nICcxMy4wJyB0byAnMTMuMCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICcwMTIn
IHRvICcwMTInCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnKzE0JyB0byAnKzE0JworVkFSSUFCTEVT
OiBFeHBhbmRpbmcgJzcgOCA5JyB0byAnNyA4IDknCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnMTEg
JyB0byAnMTEgJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJyAxMCcgdG8gJyAxMCcKK1ZBUklBQkxF
UzogRXhwYW5kaW5nICdmb28nIHRvICdmb28nCitWQVJJQUJMRVM6IEV4cGFuZGluZyAndGFyZ2V0
JyB0byAndGFyZ2V0JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ25vbmUnIHRvICdub25lJworVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJ2xldHRlcnNfbGlzdCcgdG8gJ2xldHRlcnNfbGlzdCcKK1ZBUklB
QkxFUzogRXhwYW5kaW5nICd0ZXN0X2FjdGlvbicgdG8gJ3Rlc3RfYWN0aW9uJworVkFSSUFCTEVT
OiBFeHBhbmRpbmcgJ2VjaG8nIHRvICdlY2hvJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJyIzLjE0
MTU5MjY1MzU5IEFCQ0QiJyB0byAnIjMuMTQxNTkyNjUzNTkgQUJDRCInCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnQUJDRCBsZXR0ZXJzX2xpc3QnIHRvICdBQkNEIGxldHRlcnNfbGlzdCcKK1ZBUklB
QkxFUzogRXhwYW5kaW5nICczLjE0MTU5MjY1MzU5IEFCQ0QnIHRvICczLjE0MTU5MjY1MzU5IEFC
Q0QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnQUJDRCcgdG8gJ0FCQ0QnCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnbGV0dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBFeHBh
bmRpbmcgJ2xldHRlcnNfbGlzdCcgdG8gJ2xldHRlcnNfbGlzdCcKK1ZBUklBQkxFUzogRXhwYW5k
aW5nICd0ZXN0X2FjdGlvbl9wcmltZScgdG8gJ3Rlc3RfYWN0aW9uX3ByaW1lJworVkFSSUFCTEVT
OiBFeHBhbmRpbmcgJ2VjaG8nIHRvICdlY2hvJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJyIzLjE0
MTU5MjY1MzU5IEFCQ0QiJyB0byAnIjMuMTQxNTkyNjUzNTkgQUJDRCInCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnQUJDRCBsZXR0ZXJzX2xpc3QnIHRvICdBQkNEIGxldHRlcnNfbGlzdCcKK1ZBUklB
QkxFUzogRXhwYW5kaW5nICczLjE0MTU5MjY1MzU5IEFCQ0QnIHRvICczLjE0MTU5MjY1MzU5IEFC
Q0QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnQUJDRCcgdG8gJ0FCQ0QnCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnbGV0dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBFeHBh
bmRpbmcgJ2xldHRlcnNfbGlzdCcgdG8gJ2xldHRlcnNfbGlzdCcKK1ZBUklBQkxFUzogRXhwYW5k
aW5nICd0ZXN0X2FjdGlvbl9wcmltZV9wcmltZScgdG8gJ3Rlc3RfYWN0aW9uX3ByaW1lX3ByaW1l
JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2VjaG8nIHRvICdlY2hvJworVkFSSUFCTEVTOiBFeHBh
bmRpbmcgJyIzLjE0MTU5MjY1MzU5IEFCQ0QiJyB0byAnIjMuMTQxNTkyNjUzNTkgQUJDRCInCitW
QVJJQUJMRVM6IEV4cGFuZGluZyAnQUJDRCBsZXR0ZXJzX2xpc3QnIHRvICdBQkNEIGxldHRlcnNf
bGlzdCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICczLjE0MTU5MjY1MzU5IEFCQ0QnIHRvICczLjE0
MTU5MjY1MzU5IEFCQ0QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnQUJDRCcgdG8gJ0FCQ0QnCitW
QVJJQUJMRVM6IEV4cGFuZGluZyAnbGV0dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0JwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2NvbW1hbmRzL2Nv
bW1hbmRzLXJlcGVhdGVkLmd5cGQuZ29sZGVuIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3Qv
dmFyaWFibGVzL2NvbW1hbmRzL2NvbW1hbmRzLXJlcGVhdGVkLmd5cGQuZ29sZGVuCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk2NjE1YjY2MzE0YzQ0OGJlY2IwMDI5ZGMxZDIzZjdjMTA4OTc2YTAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYWJsZXMvY29tbWFuZHMvY29t
bWFuZHMtcmVwZWF0ZWQuZ3lwZC5nb2xkZW4KQEAgLTAsMCArMSw3MiBAQAoreydfREVQVEgnOiAn
LicsCisgJ2luY2x1ZGVkX2ZpbGVzJzogWydjb21tYW5kcy1yZXBlYXRlZC5neXAnLCAnY29tbWFu
ZHMuZ3lwaSddLAorICd0YXJnZXRzJzogW3snYWN0aW9ucyc6IFt7J2FjdGlvbic6IFsnZWNobycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciMy4xNDE1OTI2NTM1OSBB
QkNEIicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBQkNEIGxldHRl
cnNfbGlzdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ3Rl
c3RfYWN0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnB1dHMnOiBbJzMuMTQx
NTkyNjUzNTkgQUJDRCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ291dHB1dHMnOiBb
J0FCQ0QnLCAnbGV0dGVyc19saXN0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFy
aWFibGVzJzogeyd2YXI3JzogJ2xldHRlcnNfbGlzdCd9fSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgeydhY3Rpb24nOiBbJ2VjaG8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnIjMuMTQxNTkyNjUzNTkgQUJDRCInLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnQUJDRCBsZXR0ZXJzX2xpc3QnXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdhY3Rpb25fbmFtZSc6ICd0ZXN0X2FjdGlvbl9wcmltZScsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnaW5wdXRzJzogWyczLjE0MTU5MjY1MzU5IEFCQ0QnXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdvdXRwdXRzJzogWydBQkNEJywgJ2xldHRlcnNfbGlzdCddLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcyc6IHsndmFyNyc6ICdsZXR0ZXJz
X2xpc3QnfX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsnYWN0aW9uJzogWydlY2hvJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyIzLjE0MTU5MjY1MzU5IEFC
Q0QiJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FCQ0QgbGV0dGVy
c19saXN0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAndGVz
dF9hY3Rpb25fcHJpbWVfcHJpbWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lucHV0
cyc6IFsnMy4xNDE1OTI2NTM1OSBBQkNEJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAn
b3V0cHV0cyc6IFsnQUJDRCcsICdsZXR0ZXJzX2xpc3QnXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd2YXJpYWJsZXMnOiB7J3ZhcjcnOiAnbGV0dGVyc19saXN0J319XSwKKyAgICAgICAg
ICAgICAgJ2NvbmZpZ3VyYXRpb25zJzogeydEZWZhdWx0Jzoge319LAorICAgICAgICAgICAgICAn
ZGVmYXVsdF9jb25maWd1cmF0aW9uJzogJ0RlZmF1bHQnLAorICAgICAgICAgICAgICAndGFyZ2V0
X25hbWUnOiAnZm9vJywKKyAgICAgICAgICAgICAgJ3Rvb2xzZXQnOiAndGFyZ2V0JywKKyAgICAg
ICAgICAgICAgJ3R5cGUnOiAnbm9uZScsCisgICAgICAgICAgICAgICd2YXJpYWJsZXMnOiB7J3Zh
cjEnOiAnMy4xNDE1OTI2NTM1OScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhcjEw
JzogJzcgOCA5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFyMTEnOiBbJzcnLCAn
OCcsICc5J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhcjEyJzogJyAxMCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhcjEzJzogJzExICcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3ZhcjE0JzogJzAxMicsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3ZhcjE1JzogJzEzLjAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YXIxNic6
ICcrMTQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YXIxNyc6ICctMTUnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd2YXIxOCc6ICcwJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAndmFyMXByaW1lJzogJzMuMTQxNTkyNjUzNTknLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd2YXIyJzogJzMuMTQxNTkyNjUzNTkgQUJDRCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3ZhcjJwcmltZSc6ICczLjE0MTU5MjY1MzU5IEFCQ0QnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd2YXIzJzogJ0FCQ0QnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd2YXIzcHJpbWUnOiAnQUJDRCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3ZhcjQnOiAnQUJDRCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhcjRwcmlt
ZSc6ICdBQkNEJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFyNSc6ICdsZXR0ZXJz
XycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhcjYnOiAnbGlzdCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3ZhcjcnOiAnNScsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3ZhcjgnOiAnNWJsYWgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YXI5
JzogJzYnfX0sCisgICAgICAgICAgICAgeydjb25maWd1cmF0aW9ucyc6IHsnRGVmYXVsdCc6IHt9
fSwKKyAgICAgICAgICAgICAgJ2RlZmF1bHRfY29uZmlndXJhdGlvbic6ICdEZWZhdWx0JywKKyAg
ICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2R1bW15JywKKyAgICAgICAgICAgICAgJ3Rvb2xz
ZXQnOiAndGFyZ2V0JywKKyAgICAgICAgICAgICAgJ3R5cGUnOiAnbm9uZSd9XSwKKyAndmFyaWFi
bGVzJzogeydjaGVja19pbmNsdWRlZCc6ICdYWVonLAorICAgICAgICAgICAgICAgJ2NoZWNrX2lu
dCc6ICc1JywKKyAgICAgICAgICAgICAgICdjaGVja19saXN0X2ludCc6IFsnNycsICc4JywgJzkn
XSwKKyAgICAgICAgICAgICAgICdjaGVja19saXN0cyc6IFsnWFlaJywgJ0FCQ0RFRkdISUpLJ10s
CisgICAgICAgICAgICAgICAnY2hlY2tfc3RyX2ludCc6ICc2JywKKyAgICAgICAgICAgICAgICdp
bmNsdWRlZF92YXJpYWJsZSc6ICdYWVonLAorICAgICAgICAgICAgICAgJ2xldHRlcnNfbGlzdCc6
ICdBQkNEJywKKyAgICAgICAgICAgICAgICduZWdhdGl2ZV9pbnQnOiAnLTE1JywKKyAgICAgICAg
ICAgICAgICdub3RfaW50XzEnOiAnIDEwJywKKyAgICAgICAgICAgICAgICdub3RfaW50XzInOiAn
MTEgJywKKyAgICAgICAgICAgICAgICdub3RfaW50XzMnOiAnMDEyJywKKyAgICAgICAgICAgICAg
ICdub3RfaW50XzQnOiAnMTMuMCcsCisgICAgICAgICAgICAgICAnbm90X2ludF81JzogJysxNCcs
CisgICAgICAgICAgICAgICAnb3RoZXJfbGV0dGVycyc6ICdBQkNERUZHJywKKyAgICAgICAgICAg
ICAgICdwaSc6ICdpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5waScsCisgICAgICAgICAgICAgICAn
dGhpcmRfbGV0dGVycyc6ICdBQkNERUZHSElKSycsCisgICAgICAgICAgICAgICAnemVyb19pbnQn
OiAnMCd9fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFyaWFibGVz
L2NvbW1hbmRzL2NvbW1hbmRzLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3Zhcmlh
Ymxlcy9jb21tYW5kcy9jb21tYW5kcy5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTEzZTRhMjc5ZmQyMTdhNjE0
ZDhmYmNiODcxMDc0MmUxNWE3MDIxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L3ZhcmlhYmxlcy9jb21tYW5kcy9jb21tYW5kcy5neXAKQEAgLTAsMCArMSw4
NCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjIFRo
aXMgaXMgYSBzaW1wbGUgdGVzdCBmaWxlIHRvIG1ha2Ugc3VyZSB0aGF0IHZhcmlhYmxlIHN1YnN0
aXR1dGlvbgorIyBoYXBwZW5zIGNvcnJlY3RseS4gIFJ1biAicnVuX3Rlc3RzLnB5IiB1c2luZyBw
eXRob24gdG8gZ2VuZXJhdGUgdGhlCisjIG91dHB1dCBmcm9tIHRoaXMgZ3lwIGZpbGUuCisKK3sK
KyAgJ3ZhcmlhYmxlcyc6IHsKKyAgICAncGknOiAnaW1wb3J0IG1hdGg7IHByaW50IG1hdGgucGkn
LAorICAgICd0aGlyZF9sZXR0ZXJzJzogIjwob3RoZXJfbGV0dGVycylISUpLIiwKKyAgICAnbGV0
dGVyc19saXN0JzogJ0FCQ0QnLAorICAgICdvdGhlcl9sZXR0ZXJzJzogJzwobGV0dGVyc19saXN0
KUVGRycsCisgICAgJ2NoZWNrX2luY2x1ZGVkJzogJzwoaW5jbHVkZWRfdmFyaWFibGUpJywKKyAg
ICAnY2hlY2tfbGlzdHMnOiBbCisgICAgICAnPChpbmNsdWRlZF92YXJpYWJsZSknLAorICAgICAg
JzwodGhpcmRfbGV0dGVycyknLAorICAgIF0sCisgICAgJ2NoZWNrX2ludCc6IDUsCisgICAgJ2No
ZWNrX3N0cl9pbnQnOiAnNicsCisgICAgJ2NoZWNrX2xpc3RfaW50JzogWworICAgICAgNywKKyAg
ICAgICc4JywKKyAgICAgIDksCisgICAgXSwKKyAgICAnbm90X2ludF8xJzogJyAxMCcsCisgICAg
J25vdF9pbnRfMic6ICcxMSAnLAorICAgICdub3RfaW50XzMnOiAnMDEyJywKKyAgICAnbm90X2lu
dF80JzogJzEzLjAnLAorICAgICdub3RfaW50XzUnOiAnKzE0JywKKyAgICAnbmVnYXRpdmVfaW50
JzogJy0xNScsCisgICAgJ3plcm9faW50JzogJzAnLAorICB9LAorICAnaW5jbHVkZXMnOiBbCisg
ICAgJ2NvbW1hbmRzLmd5cGknLAorICBdLAorICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAn
dGFyZ2V0X25hbWUnOiAnZm9vJywKKyAgICAgICd0eXBlJzogJ25vbmUnLAorICAgICAgJ3Zhcmlh
Ymxlcyc6IHsKKyAgICAgICAgJ3ZhcjEnOiAnPCEoWyJweXRob24iLCAiLWMiLCAiPChwaSkiXSkn
LAorICAgICAgICAndmFyMic6ICc8IShweXRob24gLWMgInByaW50IFwnPCEocHl0aG9uIC1jICI8
KHBpKSIpIDwobGV0dGVyc19saXN0KVwnIiknLAorICAgICAgICAndmFyMyc6ICc8IShweXRob24g
LWMgInByaW50IFwnPChsZXR0ZXJzX2xpc3QpXCciKScsCisgICAgICAgICd2YXI0JzogJzwoPCEo
cHl0aG9uIC1jICJwcmludCBcJ2xldHRlcnNfbGlzdFwnIikpJywKKyAgICAgICAgJ3ZhcjUnOiAn
bGV0dGVyc18nLAorICAgICAgICAndmFyNic6ICdsaXN0JywKKyAgICAgICAgJ3ZhcjcnOiAnPChj
aGVja19pbnQpJywKKyAgICAgICAgJ3ZhcjgnOiAnPChjaGVja19pbnQpYmxhaCcsCisgICAgICAg
ICd2YXI5JzogJzwoY2hlY2tfc3RyX2ludCknLAorICAgICAgICAndmFyMTAnOiAnPChjaGVja19s
aXN0X2ludCknLAorICAgICAgICAndmFyMTEnOiBbJzxAKGNoZWNrX2xpc3RfaW50KSddLAorICAg
ICAgICAndmFyMTInOiAnPChub3RfaW50XzEpJywKKyAgICAgICAgJ3ZhcjEzJzogJzwobm90X2lu
dF8yKScsCisgICAgICAgICd2YXIxNCc6ICc8KG5vdF9pbnRfMyknLAorICAgICAgICAndmFyMTUn
OiAnPChub3RfaW50XzQpJywKKyAgICAgICAgJ3ZhcjE2JzogJzwobm90X2ludF81KScsCisgICAg
ICAgICd2YXIxNyc6ICc8KG5lZ2F0aXZlX2ludCknLAorICAgICAgICAndmFyMTgnOiAnPCh6ZXJv
X2ludCknLAorICAgICAgfSwKKyAgICAgICdhY3Rpb25zJzogWworICAgICAgICB7CisgICAgICAg
ICAgJ2FjdGlvbl9uYW1lJzogJ3Rlc3RfYWN0aW9uJywKKyAgICAgICAgICAndmFyaWFibGVzJzog
eworICAgICAgICAgICAgJ3ZhcjcnOiAnPCEoZWNobyA8KHZhcjUpPCh2YXI2KSknLAorICAgICAg
ICAgIH0sCisgICAgICAgICAgJ2lucHV0cycgOiBbCisgICAgICAgICAgICAnPCh2YXIyKScsCisg
ICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAgICAgICAgICc8KHZhcjQp
JywKKyAgICAgICAgICAgICc8KHZhcjcpJywKKyAgICAgICAgICBdLAorICAgICAgICAgICdhY3Rp
b24nOiBbCisgICAgICAgICAgICAnZWNobycsCisgICAgICAgICAgICAnPChfaW5wdXRzKScsCisg
ICAgICAgICAgICAnPChfb3V0cHV0cyknLAorICAgICAgICAgIF0sCisgICAgICAgIH0sCisgICAg
ICBdLAorICAgIH0sCisgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAv
dGVzdC92YXJpYWJsZXMvY29tbWFuZHMvY29tbWFuZHMuZ3lwLmlnbm9yZS1lbnYuc3Rkb3V0IGIv
U291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2NvbW1hbmRzL2NvbW1hbmRzLmd5
cC5pZ25vcmUtZW52LnN0ZG91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjdkZjc5MGQ1ZDNkM2RiNmY2MjE5MTQ4
OTA2ZjI5MDRkZWJmOGM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lw
L3Rlc3QvdmFyaWFibGVzL2NvbW1hbmRzL2NvbW1hbmRzLmd5cC5pZ25vcmUtZW52LnN0ZG91dApA
QCAtMCwwICsxLDI1NCBAQAorR0VORVJBTDogcnVubmluZyB3aXRoIHRoZXNlIG9wdGlvbnM6CitH
RU5FUkFMOiAgIGNoZWNrOiBOb25lCitHRU5FUkFMOiAgIGNpcmN1bGFyX2NoZWNrOiBUcnVlCitH
RU5FUkFMOiAgIGRlYnVnOiBbJ3ZhcmlhYmxlcycsICdnZW5lcmFsJ10KK0dFTkVSQUw6ICAgZGVm
aW5lczogTm9uZQorR0VORVJBTDogICBkZXB0aDogJy4nCitHRU5FUkFMOiAgIGZvcm1hdHM6IFsn
Z3lwZCddCitHRU5FUkFMOiAgIGdlbmVyYXRvcl9mbGFnczogW10KK0dFTkVSQUw6ICAgZ2VuZXJh
dG9yX291dHB1dDogTm9uZQorR0VORVJBTDogICBpbmNsdWRlczogTm9uZQorR0VORVJBTDogICBt
c3ZzX3ZlcnNpb246IE5vbmUKK0dFTkVSQUw6ICAgc3VmZml4OiAnJworR0VORVJBTDogICB0b3Bs
ZXZlbF9kaXI6IE5vbmUKK0dFTkVSQUw6ICAgdXNlX2Vudmlyb25tZW50OiBGYWxzZQorR0VORVJB
TDogY21kbGluZV9kZWZhdWx0X3ZhcmlhYmxlczoge30KK0dFTkVSQUw6IGdlbmVyYXRvcl9mbGFn
czoge30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICcwJyB0byAwCitWQVJJQUJMRVM6IEV4cGFuZGlu
ZyAnMTEgJyB0byAnMTEgJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJysxNCcgdG8gJysxNCcKK1ZB
UklBQkxFUzogRXhwYW5kaW5nICctMTUnIHRvIC0xNQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJyAx
MCcgdG8gJyAxMCcKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ2xldHRlcnNfbGlz
dCcsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChsZXR0ZXJzX2xp
c3QpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdsZXR0ZXJzX2xpc3QnIHRvICdsZXR0ZXJzX2xp
c3QnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnQUJDREVGRycsIHJlY3Vyc2luZy4KK1ZBUklB
QkxFUzogRXhwYW5kaW5nICdBQkNERUZHJyB0byAnQUJDREVGRycKK1ZBUklBQkxFUzogRXhwYW5k
aW5nICc8KGxldHRlcnNfbGlzdClFRkcnIHRvICdBQkNERUZHJworVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJzAxMicgdG8gJzAxMicKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ290aGVy
X2xldHRlcnMnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwob3Ro
ZXJfbGV0dGVycyknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ290aGVyX2xldHRlcnMnIHRvICdv
dGhlcl9sZXR0ZXJzJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJzwobGV0dGVyc19saXN0KUVG
R0hJSksnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdsZXR0
ZXJzX2xpc3QnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwobGV0
dGVyc19saXN0KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbGV0dGVyc19saXN0JyB0byAnbGV0
dGVyc19saXN0JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ0FCQ0RFRkdISUpLJywgcmVjdXJz
aW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ0FCQ0RFRkdISUpLJyB0byAnQUJDREVGR0hJSksn
CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChsZXR0ZXJzX2xpc3QpRUZHSElKSycgdG8gJ0FCQ0RF
RkdISUpLJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwob3RoZXJfbGV0dGVycylISUpLJyB0byAn
QUJDREVGR0hJSksnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnWFlaJyB0byAnWFlaJworVkFSSUFC
TEVTOiBFeHBhbmRpbmcgJ0FCQ0QnIHRvICdBQkNEJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzEz
LjAnIHRvICcxMy4wJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2ltcG9ydCBtYXRoOyBwcmludCBt
YXRoLnBpJyB0byAnaW1wb3J0IG1hdGg7IHByaW50IG1hdGgucGknCitWQVJJQUJMRVM6IE1hdGNo
ZXM6IHsnY29udGVudCc6ICdpbmNsdWRlZF92YXJpYWJsZScsICdpc19hcnJheSc6ICcnLCAndHlw
ZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChpbmNsdWRlZF92YXJpYWJsZSknfQorVkFSSUFCTEVTOiBF
eHBhbmRpbmcgJ2luY2x1ZGVkX3ZhcmlhYmxlJyB0byAnaW5jbHVkZWRfdmFyaWFibGUnCitWQVJJ
QUJMRVM6IEZvdW5kIG91dHB1dCAnWFlaJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJ1hZWicgdG8gJ1hZWicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KGluY2x1ZGVkX3Zhcmlh
YmxlKScgdG8gJ1hZWicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc2JyB0byA2CitWQVJJQUJMRVM6
IE1hdGNoZXM6IHsnY29udGVudCc6ICdpbmNsdWRlZF92YXJpYWJsZScsICdpc19hcnJheSc6ICcn
LCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChpbmNsdWRlZF92YXJpYWJsZSknfQorVkFSSUFC
TEVTOiBFeHBhbmRpbmcgJ2luY2x1ZGVkX3ZhcmlhYmxlJyB0byAnaW5jbHVkZWRfdmFyaWFibGUn
CitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnWFlaJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBF
eHBhbmRpbmcgJ1hZWicgdG8gJ1hZWicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KGluY2x1ZGVk
X3ZhcmlhYmxlKScgdG8gJ1hZWicKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3Ro
aXJkX2xldHRlcnMnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwo
dGhpcmRfbGV0dGVycyknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3RoaXJkX2xldHRlcnMnIHRv
ICd0aGlyZF9sZXR0ZXJzJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJzwob3RoZXJfbGV0dGVy
cylISUpLJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnb3Ro
ZXJfbGV0dGVycycsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChv
dGhlcl9sZXR0ZXJzKSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnb3RoZXJfbGV0dGVycycgdG8g
J290aGVyX2xldHRlcnMnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnPChsZXR0ZXJzX2xpc3Qp
RUZHSElKSycsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ2xl
dHRlcnNfbGlzdCcsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChs
ZXR0ZXJzX2xpc3QpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdsZXR0ZXJzX2xpc3QnIHRvICds
ZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnQUJDREVGR0hJSksnLCByZWN1
cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnQUJDREVGR0hJSksnIHRvICdBQkNERUZHSElK
SycKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KGxldHRlcnNfbGlzdClFRkdISUpLJyB0byAnQUJD
REVGR0hJSksnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChvdGhlcl9sZXR0ZXJzKUhJSksnIHRv
ICdBQkNERUZHSElKSycKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KHRoaXJkX2xldHRlcnMpJyB0
byAnQUJDREVGR0hJSksnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnOCcgdG8gOAorVkFSSUFCTEVT
OiBFeHBhbmRpbmcgJy4nIHRvICcuJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2xldHRlcnNfJyB0
byAnbGV0dGVyc18nCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICc8IShweXRob24g
LWMgInByaW50IFwnbGV0dGVyc19saXN0XCciJywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwn
LCAncmVwbGFjZSc6ICc8KDwhKHB5dGhvbiAtYyAicHJpbnQgXCdsZXR0ZXJzX2xpc3RcJyIpJ30K
K1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3B5dGhvbiAtYyAicHJpbnQgXCdsZXR0
ZXJzX2xpc3RcJyInLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCEnLCAncmVwbGFjZSc6ICc8
IShweXRob24gLWMgInByaW50IFwnbGV0dGVyc19saXN0XCciKSd9CitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAncHl0aG9uIC1jICJwcmludCBcJ2xldHRlcnNfbGlzdFwnIicgdG8gJ3B5dGhvbiAtYyAi
cHJpbnQgXCdsZXR0ZXJzX2xpc3RcJyInCitWQVJJQUJMRVM6IEV4ZWN1dGluZyBjb21tYW5kICdw
eXRob24gLWMgInByaW50ICdsZXR0ZXJzX2xpc3QnIicgaW4gZGlyZWN0b3J5ICdOb25lJworVkFS
SUFCTEVTOiBGb3VuZCBvdXRwdXQgJ2xldHRlcnNfbGlzdCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxF
UzogRXhwYW5kaW5nICdsZXR0ZXJzX2xpc3QnIHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6
IEV4cGFuZGluZyAnPCEocHl0aG9uIC1jICJwcmludCBcJ2xldHRlcnNfbGlzdFwnIiknIHRvICds
ZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnQUJDRCcsIHJlY3Vyc2luZy4K
K1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNEJyB0byAnQUJDRCcKK1ZBUklBQkxFUzogRXhwYW5k
aW5nICc8KDwhKHB5dGhvbiAtYyAicHJpbnQgXCdsZXR0ZXJzX2xpc3RcJyIpKScgdG8gJ0FCQ0Qn
CitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdjaGVja19pbnQnLCAnaXNfYXJyYXkn
OiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwoY2hlY2tfaW50KSd9CitWQVJJQUJMRVM6
IEV4cGFuZGluZyAnY2hlY2tfaW50JyB0byAnY2hlY2tfaW50JworVkFSSUFCTEVTOiBGb3VuZCBv
dXRwdXQgJzUnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnNScgdG8gNQorVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJzwoY2hlY2tfaW50KScgdG8gNQorVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJ2xpc3QnIHRvICdsaXN0JworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnInB5
dGhvbiIsICItYyIsICI8KHBpJywgJ2lzX2FycmF5JzogJ1snLCAndHlwZSc6ICc8IScsICdyZXBs
YWNlJzogJzwhKFsicHl0aG9uIiwgIi1jIiwgIjwocGkpJ30KK1ZBUklBQkxFUzogTWF0Y2hlczog
eydjb250ZW50JzogJ3BpJywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwnLCAncmVwbGFjZSc6
ICc8KHBpKSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAncGknIHRvICdwaScKK1ZBUklBQkxFUzog
Rm91bmQgb3V0cHV0ICdbInB5dGhvbiIsICItYyIsICJpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5w
aSJdJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ1sicHl0aG9uIiwgIi1jIiwg
ImltcG9ydCBtYXRoOyBwcmludCBtYXRoLnBpIl0nIHRvICdbInB5dGhvbiIsICItYyIsICJpbXBv
cnQgbWF0aDsgcHJpbnQgbWF0aC5waSJdJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ1sicHl0aG9u
IiwgIi1jIiwgIjwocGkpIl0nIHRvICdbInB5dGhvbiIsICItYyIsICJpbXBvcnQgbWF0aDsgcHJp
bnQgbWF0aC5waSJdJworVkFSSUFCTEVTOiBFeGVjdXRpbmcgY29tbWFuZCAnWydweXRob24nLCAn
LWMnLCAnaW1wb3J0IG1hdGg7IHByaW50IG1hdGgucGknXScgaW4gZGlyZWN0b3J5ICdOb25lJwor
VkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJzMuMTQxNTkyNjUzNTknLCByZWN1cnNpbmcuCitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAnMy4xNDE1OTI2NTM1OScgdG8gJzMuMTQxNTkyNjUzNTknCitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAnPCEoWyJweXRob24iLCAiLWMiLCAiPChwaSkiXSknIHRvICczLjE0
MTU5MjY1MzU5JworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAncHl0aG9uIC1jICJw
cmludCBcJzwobGV0dGVyc19saXN0JywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwhJywgJ3Jl
cGxhY2UnOiAnPCEocHl0aG9uIC1jICJwcmludCBcJzwobGV0dGVyc19saXN0KSd9CitWQVJJQUJM
RVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdsZXR0ZXJzX2xpc3QnLCAnaXNfYXJyYXknOiAnJywg
J3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwobGV0dGVyc19saXN0KSd9CitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnbGV0dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBGb3Vu
ZCBvdXRwdXQgJ3B5dGhvbiAtYyAicHJpbnQgXCdBQkNEXCciJywgcmVjdXJzaW5nLgorVkFSSUFC
TEVTOiBFeHBhbmRpbmcgJ3B5dGhvbiAtYyAicHJpbnQgXCdBQkNEXCciJyB0byAncHl0aG9uIC1j
ICJwcmludCBcJ0FCQ0RcJyInCitWQVJJQUJMRVM6IEV4cGFuZGluZyAncHl0aG9uIC1jICJwcmlu
dCBcJzwobGV0dGVyc19saXN0KVwnIicgdG8gJ3B5dGhvbiAtYyAicHJpbnQgXCdBQkNEXCciJwor
VkFSSUFCTEVTOiBFeGVjdXRpbmcgY29tbWFuZCAncHl0aG9uIC1jICJwcmludCAnQUJDRCciJyBp
biBkaXJlY3RvcnkgJ05vbmUnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnQUJDRCcsIHJlY3Vy
c2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNEJyB0byAnQUJDRCcKK1ZBUklBQkxFUzog
RXhwYW5kaW5nICc8IShweXRob24gLWMgInByaW50IFwnPChsZXR0ZXJzX2xpc3QpXCciKScgdG8g
J0FCQ0QnCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdsZXR0ZXJzX2xpc3QnLCAn
aXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwobGV0dGVyc19saXN0KSd9
CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbGV0dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0Jwor
VkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAncHl0aG9uIC1jICJwcmludCBcJzwhKHB5
dGhvbiAtYyAiPChwaScsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8IScsICdyZXBsYWNlJzog
JzwhKHB5dGhvbiAtYyAicHJpbnQgXCc8IShweXRob24gLWMgIjwocGkpJ30KK1ZBUklBQkxFUzog
TWF0Y2hlczogeydjb250ZW50JzogJ3B5dGhvbiAtYyAiPChwaScsICdpc19hcnJheSc6ICcnLCAn
dHlwZSc6ICc8IScsICdyZXBsYWNlJzogJzwhKHB5dGhvbiAtYyAiPChwaSknfQorVkFSSUFCTEVT
OiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAncGknLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcs
ICdyZXBsYWNlJzogJzwocGkpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdwaScgdG8gJ3BpJwor
VkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ3B5dGhvbiAtYyAiaW1wb3J0IG1hdGg7IHByaW50IG1h
dGgucGkiJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3B5dGhvbiAtYyAiaW1w
b3J0IG1hdGg7IHByaW50IG1hdGgucGkiJyB0byAncHl0aG9uIC1jICJpbXBvcnQgbWF0aDsgcHJp
bnQgbWF0aC5waSInCitWQVJJQUJMRVM6IEV4cGFuZGluZyAncHl0aG9uIC1jICI8KHBpKSInIHRv
ICdweXRob24gLWMgImltcG9ydCBtYXRoOyBwcmludCBtYXRoLnBpIicKK1ZBUklBQkxFUzogRXhl
Y3V0aW5nIGNvbW1hbmQgJ3B5dGhvbiAtYyAiaW1wb3J0IG1hdGg7IHByaW50IG1hdGgucGkiJyBp
biBkaXJlY3RvcnkgJ05vbmUnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAncHl0aG9uIC1jICJw
cmludCBcJzMuMTQxNTkyNjUzNTkgQUJDRFwnIicsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhw
YW5kaW5nICdweXRob24gLWMgInByaW50IFwnMy4xNDE1OTI2NTM1OSBBQkNEXCciJyB0byAncHl0
aG9uIC1jICJwcmludCBcJzMuMTQxNTkyNjUzNTkgQUJDRFwnIicKK1ZBUklBQkxFUzogRXhwYW5k
aW5nICdweXRob24gLWMgInByaW50IFwnPCEocHl0aG9uIC1jICI8KHBpKSIpIEFCQ0RcJyInIHRv
ICdweXRob24gLWMgInByaW50IFwnMy4xNDE1OTI2NTM1OSBBQkNEXCciJworVkFSSUFCTEVTOiBF
eGVjdXRpbmcgY29tbWFuZCAncHl0aG9uIC1jICJwcmludCAnMy4xNDE1OTI2NTM1OSBBQkNEJyIn
IGluIGRpcmVjdG9yeSAnTm9uZScKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICczLjE0MTU5MjY1
MzU5IEFCQ0QnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnMy4xNDE1OTI2NTM1
OSBBQkNEJyB0byAnMy4xNDE1OTI2NTM1OSBBQkNEJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwh
KHB5dGhvbiAtYyAicHJpbnQgXCc8IShweXRob24gLWMgIjwocGkpIikgPChsZXR0ZXJzX2xpc3Qp
XCciKScgdG8gJzMuMTQxNTkyNjUzNTkgQUJDRCcKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250
ZW50JzogJ2NoZWNrX3N0cl9pbnQnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBs
YWNlJzogJzwoY2hlY2tfc3RyX2ludCknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2NoZWNrX3N0
cl9pbnQnIHRvICdjaGVja19zdHJfaW50JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJzYnLCBy
ZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnNicgdG8gNgorVkFSSUFCTEVTOiBFeHBh
bmRpbmcgJzwoY2hlY2tfc3RyX2ludCknIHRvIDYKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250
ZW50JzogJ2NoZWNrX2ludCcsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2Un
OiAnPChjaGVja19pbnQpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdjaGVja19pbnQnIHRvICdj
aGVja19pbnQnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnNWJsYWgnLCByZWN1cnNpbmcuCitW
QVJJQUJMRVM6IEV4cGFuZGluZyAnNWJsYWgnIHRvICc1YmxhaCcKK1ZBUklBQkxFUzogRXhwYW5k
aW5nICc8KGNoZWNrX2ludClibGFoJyB0byAnNWJsYWgnCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsn
Y29udGVudCc6ICdub3RfaW50XzQnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBs
YWNlJzogJzwobm90X2ludF80KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbm90X2ludF80JyB0
byAnbm90X2ludF80JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJzEzLjAnLCByZWN1cnNpbmcu
CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnMTMuMCcgdG8gJzEzLjAnCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnPChub3RfaW50XzQpJyB0byAnMTMuMCcKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250
ZW50JzogJ25vdF9pbnRfMycsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2Un
OiAnPChub3RfaW50XzMpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdub3RfaW50XzMnIHRvICdu
b3RfaW50XzMnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnMDEyJywgcmVjdXJzaW5nLgorVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJzAxMicgdG8gJzAxMicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8
KG5vdF9pbnRfMyknIHRvICcwMTInCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdu
ZWdhdGl2ZV9pbnQnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwo
bmVnYXRpdmVfaW50KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbmVnYXRpdmVfaW50JyB0byAn
bmVnYXRpdmVfaW50JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJy0xNScsIHJlY3Vyc2luZy4K
K1ZBUklBQkxFUzogRXhwYW5kaW5nICctMTUnIHRvIC0xNQorVkFSSUFCTEVTOiBFeHBhbmRpbmcg
JzwobmVnYXRpdmVfaW50KScgdG8gLTE1CitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6
ICdub3RfaW50XzUnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwo
bm90X2ludF81KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbm90X2ludF81JyB0byAnbm90X2lu
dF81JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJysxNCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxF
UzogRXhwYW5kaW5nICcrMTQnIHRvICcrMTQnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChub3Rf
aW50XzUpJyB0byAnKzE0JworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnY2hlY2tf
bGlzdF9pbnQnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwoY2hl
Y2tfbGlzdF9pbnQpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdjaGVja19saXN0X2ludCcgdG8g
J2NoZWNrX2xpc3RfaW50JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJzcgOCA5JywgcmVjdXJz
aW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzcgOCA5JyB0byAnNyA4IDknCitWQVJJQUJMRVM6
IEV4cGFuZGluZyAnPChjaGVja19saXN0X2ludCknIHRvICc3IDggOScKK1ZBUklBQkxFUzogTWF0
Y2hlczogeydjb250ZW50JzogJ25vdF9pbnRfMicsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8
JywgJ3JlcGxhY2UnOiAnPChub3RfaW50XzIpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdub3Rf
aW50XzInIHRvICdub3RfaW50XzInCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnMTEgJywgcmVj
dXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzExICcgdG8gJzExICcKK1ZBUklBQkxFUzog
RXhwYW5kaW5nICc8KG5vdF9pbnRfMiknIHRvICcxMSAnCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsn
Y29udGVudCc6ICdub3RfaW50XzEnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBs
YWNlJzogJzwobm90X2ludF8xKSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbm90X2ludF8xJyB0
byAnbm90X2ludF8xJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJyAxMCcsIHJlY3Vyc2luZy4K
K1ZBUklBQkxFUzogRXhwYW5kaW5nICcgMTAnIHRvICcgMTAnCitWQVJJQUJMRVM6IEV4cGFuZGlu
ZyAnPChub3RfaW50XzEpJyB0byAnIDEwJworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQn
OiAnemVyb19pbnQnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwo
emVyb19pbnQpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICd6ZXJvX2ludCcgdG8gJ3plcm9faW50
JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJzAnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnMCcgdG8gMAorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwoemVyb19pbnQpJyB0byAw
CitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdjaGVja19saXN0X2ludCcsICdpc19h
cnJheSc6ICcnLCAndHlwZSc6ICc8QCcsICdyZXBsYWNlJzogJzxAKGNoZWNrX2xpc3RfaW50KSd9
CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnY2hlY2tfbGlzdF9pbnQnIHRvICdjaGVja19saXN0X2lu
dCcKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0IFs3LCA4LCA5XSwgcmVjdXJzaW5nLgorVkFSSUFC
TEVTOiBFeHBhbmRpbmcgNyB0byA3CitWQVJJQUJMRVM6IEV4cGFuZGluZyA4IHRvIDgKK1ZBUklB
QkxFUzogRXhwYW5kaW5nIDkgdG8gOQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzxAKGNoZWNrX2xp
c3RfaW50KScgdG8gWzcsIDgsIDldCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnZm9vJyB0byAnZm9v
JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3RhcmdldCcgdG8gJ3RhcmdldCcKK1ZBUklBQkxFUzog
RXhwYW5kaW5nICdub25lJyB0byAnbm9uZScKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50
JzogJ3ZhcjYnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwodmFy
NiknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3ZhcjYnIHRvICd2YXI2JworVkFSSUFCTEVTOiBN
YXRjaGVzOiB7J2NvbnRlbnQnOiAnZWNobyA8KHZhcjUnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUn
OiAnPCEnLCAncmVwbGFjZSc6ICc8IShlY2hvIDwodmFyNSknfQorVkFSSUFCTEVTOiBNYXRjaGVz
OiB7J2NvbnRlbnQnOiAndmFyNScsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxh
Y2UnOiAnPCh2YXI1KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAndmFyNScgdG8gJ3ZhcjUnCitW
QVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnZWNobyBsZXR0ZXJzX2xpc3QnLCByZWN1cnNpbmcuCitW
QVJJQUJMRVM6IEV4cGFuZGluZyAnZWNobyBsZXR0ZXJzX2xpc3QnIHRvICdlY2hvIGxldHRlcnNf
bGlzdCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdlY2hvIDwodmFyNSlsaXN0JyB0byAnZWNobyBs
ZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4ZWN1dGluZyBjb21tYW5kICdlY2hvIGxldHRlcnNf
bGlzdCcgaW4gZGlyZWN0b3J5ICdOb25lJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ2xldHRl
cnNfbGlzdCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdsZXR0ZXJzX2xpc3Qn
IHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPCEoZWNobyA8KHZhcjUp
PCh2YXI2KSknIHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAndGVzdF9h
Y3Rpb24nIHRvICd0ZXN0X2FjdGlvbicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdlY2hvJyB0byAn
ZWNobycKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ19pbnB1dHMnLCAnaXNfYXJy
YXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwoX2lucHV0cyknfQorVkFSSUFCTEVT
OiBFeHBhbmRpbmcgJ19pbnB1dHMnIHRvICdfaW5wdXRzJworVkFSSUFCTEVTOiBNYXRjaGVzOiB7
J2NvbnRlbnQnOiAndmFyMicsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2Un
OiAnPCh2YXIyKSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAndmFyMicgdG8gJ3ZhcjInCitWQVJJ
QUJMRVM6IEZvdW5kIG91dHB1dCAnMy4xNDE1OTI2NTM1OSBBQkNEJywgcmVjdXJzaW5nLgorVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJzMuMTQxNTkyNjUzNTkgQUJDRCcgdG8gJzMuMTQxNTkyNjUzNTkg
QUJDRCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KHZhcjIpJyB0byAnMy4xNDE1OTI2NTM1OSBB
QkNEJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJyIzLjE0MTU5MjY1MzU5IEFCQ0QiJywgcmVj
dXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJyIzLjE0MTU5MjY1MzU5IEFCQ0QiJyB0byAn
IjMuMTQxNTkyNjUzNTkgQUJDRCInCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChfaW5wdXRzKScg
dG8gJyIzLjE0MTU5MjY1MzU5IEFCQ0QiJworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQn
OiAnX291dHB1dHMnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwo
X291dHB1dHMpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdfb3V0cHV0cycgdG8gJ19vdXRwdXRz
JworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAndmFyNCcsICdpc19hcnJheSc6ICcn
LCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPCh2YXI0KSd9CitWQVJJQUJMRVM6IEV4cGFuZGlu
ZyAndmFyNCcgdG8gJ3ZhcjQnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnQUJDRCcsIHJlY3Vy
c2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNEJyB0byAnQUJDRCcKK1ZBUklBQkxFUzog
RXhwYW5kaW5nICc8KHZhcjQpJyB0byAnQUJDRCcKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250
ZW50JzogJ3ZhcjcnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwo
dmFyNyknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3ZhcjcnIHRvICd2YXI3JworVkFSSUFCTEVT
OiBGb3VuZCBvdXRwdXQgJ2xldHRlcnNfbGlzdCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhw
YW5kaW5nICdsZXR0ZXJzX2xpc3QnIHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnPCh2YXI3KScgdG8gJ2xldHRlcnNfbGlzdCcKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0
ICdBQkNEIGxldHRlcnNfbGlzdCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdB
QkNEIGxldHRlcnNfbGlzdCcgdG8gJ0FCQ0QgbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBFeHBh
bmRpbmcgJzwoX291dHB1dHMpJyB0byAnQUJDRCBsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnMy4xNDE1OTI2NTM1OSBBQkNEJyB0byAnMy4xNDE1OTI2NTM1OSBBQkNEJworVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJ0FCQ0QnIHRvICdBQkNEJworVkFSSUFCTEVTOiBFeHBhbmRpbmcg
J2xldHRlcnNfbGlzdCcgdG8gJ2xldHRlcnNfbGlzdCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdk
dW1teScgdG8gJ2R1bW15JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3RhcmdldCcgdG8gJ3Rhcmdl
dCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdub25lJyB0byAnbm9uZScKK1ZBUklBQkxFUzogRXhw
YW5kaW5nICdjb21tYW5kcy5neXAnIHRvICdjb21tYW5kcy5neXAnCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnY29tbWFuZHMuZ3lwaScgdG8gJ2NvbW1hbmRzLmd5cGknCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnZHVtbXknIHRvICdkdW1teScKK1ZBUklBQkxFUzogRXhwYW5kaW5nICd0YXJnZXQnIHRv
ICd0YXJnZXQnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbm9uZScgdG8gJ25vbmUnCitWQVJJQUJM
RVM6IEV4cGFuZGluZyAnbGV0dGVyc18nIHRvICdsZXR0ZXJzXycKK1ZBUklBQkxFUzogRXhwYW5k
aW5nICdBQkNEJyB0byAnQUJDRCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdsaXN0JyB0byAnbGlz
dCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICczLjE0MTU5MjY1MzU5JyB0byAnMy4xNDE1OTI2NTM1
OScKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNEJyB0byAnQUJDRCcKK1ZBUklBQkxFUzogRXhw
YW5kaW5nICczLjE0MTU5MjY1MzU5IEFCQ0QnIHRvICczLjE0MTU5MjY1MzU5IEFCQ0QnCitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAnNWJsYWgnIHRvICc1YmxhaCcKK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICcxMy4wJyB0byAnMTMuMCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICcwMTInIHRvICcwMTInCitW
QVJJQUJMRVM6IEV4cGFuZGluZyAnKzE0JyB0byAnKzE0JworVkFSSUFCTEVTOiBFeHBhbmRpbmcg
JzcgOCA5JyB0byAnNyA4IDknCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnMTEgJyB0byAnMTEgJwor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJyAxMCcgdG8gJyAxMCcKK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICdmb28nIHRvICdmb28nCitWQVJJQUJMRVM6IEV4cGFuZGluZyAndGFyZ2V0JyB0byAndGFyZ2V0
JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ25vbmUnIHRvICdub25lJworVkFSSUFCTEVTOiBFeHBh
bmRpbmcgJ2xldHRlcnNfbGlzdCcgdG8gJ2xldHRlcnNfbGlzdCcKK1ZBUklBQkxFUzogRXhwYW5k
aW5nICd0ZXN0X2FjdGlvbicgdG8gJ3Rlc3RfYWN0aW9uJworVkFSSUFCTEVTOiBFeHBhbmRpbmcg
J2VjaG8nIHRvICdlY2hvJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJyIzLjE0MTU5MjY1MzU5IEFC
Q0QiJyB0byAnIjMuMTQxNTkyNjUzNTkgQUJDRCInCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnQUJD
RCBsZXR0ZXJzX2xpc3QnIHRvICdBQkNEIGxldHRlcnNfbGlzdCcKK1ZBUklBQkxFUzogRXhwYW5k
aW5nICczLjE0MTU5MjY1MzU5IEFCQ0QnIHRvICczLjE0MTU5MjY1MzU5IEFCQ0QnCitWQVJJQUJM
RVM6IEV4cGFuZGluZyAnQUJDRCcgdG8gJ0FCQ0QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbGV0
dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0JwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2NvbW1hbmRzL2NvbW1hbmRzLmd5cC5zdGRvdXQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYWJsZXMvY29tbWFuZHMvY29tbWFuZHMuZ3lwLnN0
ZG91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZGI1ZjY0ZDViYmM2NTZiNzQ2MWM3ODM3NzhiYmQ3MDBjNjc2YWNj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFyaWFibGVz
L2NvbW1hbmRzL2NvbW1hbmRzLmd5cC5zdGRvdXQKQEAgLTAsMCArMSwyNTQgQEAKK0dFTkVSQUw6
IHJ1bm5pbmcgd2l0aCB0aGVzZSBvcHRpb25zOgorR0VORVJBTDogICBjaGVjazogTm9uZQorR0VO
RVJBTDogICBjaXJjdWxhcl9jaGVjazogVHJ1ZQorR0VORVJBTDogICBkZWJ1ZzogWyd2YXJpYWJs
ZXMnLCAnZ2VuZXJhbCddCitHRU5FUkFMOiAgIGRlZmluZXM6IE5vbmUKK0dFTkVSQUw6ICAgZGVw
dGg6ICcuJworR0VORVJBTDogICBmb3JtYXRzOiBbJ2d5cGQnXQorR0VORVJBTDogICBnZW5lcmF0
b3JfZmxhZ3M6IFtdCitHRU5FUkFMOiAgIGdlbmVyYXRvcl9vdXRwdXQ6IE5vbmUKK0dFTkVSQUw6
ICAgaW5jbHVkZXM6IE5vbmUKK0dFTkVSQUw6ICAgbXN2c192ZXJzaW9uOiBOb25lCitHRU5FUkFM
OiAgIHN1ZmZpeDogJycKK0dFTkVSQUw6ICAgdG9wbGV2ZWxfZGlyOiBOb25lCitHRU5FUkFMOiAg
IHVzZV9lbnZpcm9ubWVudDogVHJ1ZQorR0VORVJBTDogY21kbGluZV9kZWZhdWx0X3ZhcmlhYmxl
czoge30KK0dFTkVSQUw6IGdlbmVyYXRvcl9mbGFnczoge30KK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICcwJyB0byAwCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnMTEgJyB0byAnMTEgJworVkFSSUFCTEVT
OiBFeHBhbmRpbmcgJysxNCcgdG8gJysxNCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICctMTUnIHRv
IC0xNQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJyAxMCcgdG8gJyAxMCcKK1ZBUklBQkxFUzogTWF0
Y2hlczogeydjb250ZW50JzogJ2xldHRlcnNfbGlzdCcsICdpc19hcnJheSc6ICcnLCAndHlwZSc6
ICc8JywgJ3JlcGxhY2UnOiAnPChsZXR0ZXJzX2xpc3QpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICdsZXR0ZXJzX2xpc3QnIHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1
dCAnQUJDREVGRycsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNERUZHJyB0
byAnQUJDREVGRycKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KGxldHRlcnNfbGlzdClFRkcnIHRv
ICdBQkNERUZHJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzAxMicgdG8gJzAxMicKK1ZBUklBQkxF
UzogTWF0Y2hlczogeydjb250ZW50JzogJ290aGVyX2xldHRlcnMnLCAnaXNfYXJyYXknOiAnJywg
J3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwob3RoZXJfbGV0dGVycyknfQorVkFSSUFCTEVTOiBF
eHBhbmRpbmcgJ290aGVyX2xldHRlcnMnIHRvICdvdGhlcl9sZXR0ZXJzJworVkFSSUFCTEVTOiBG
b3VuZCBvdXRwdXQgJzwobGV0dGVyc19saXN0KUVGR0hJSksnLCByZWN1cnNpbmcuCitWQVJJQUJM
RVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdsZXR0ZXJzX2xpc3QnLCAnaXNfYXJyYXknOiAnJywg
J3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwobGV0dGVyc19saXN0KSd9CitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnbGV0dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBGb3Vu
ZCBvdXRwdXQgJ0FCQ0RFRkdISUpLJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcg
J0FCQ0RFRkdISUpLJyB0byAnQUJDREVGR0hJSksnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChs
ZXR0ZXJzX2xpc3QpRUZHSElKSycgdG8gJ0FCQ0RFRkdISUpLJworVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJzwob3RoZXJfbGV0dGVycylISUpLJyB0byAnQUJDREVGR0hJSksnCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnWFlaJyB0byAnWFlaJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ0FCQ0QnIHRvICdB
QkNEJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzEzLjAnIHRvICcxMy4wJworVkFSSUFCTEVTOiBF
eHBhbmRpbmcgJ2ltcG9ydCBtYXRoOyBwcmludCBtYXRoLnBpJyB0byAnaW1wb3J0IG1hdGg7IHBy
aW50IG1hdGgucGknCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdpbmNsdWRlZF92
YXJpYWJsZScsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChpbmNs
dWRlZF92YXJpYWJsZSknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2luY2x1ZGVkX3ZhcmlhYmxl
JyB0byAnaW5jbHVkZWRfdmFyaWFibGUnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnWFlaJywg
cmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ1hZWicgdG8gJ1hZWicKK1ZBUklBQkxF
UzogRXhwYW5kaW5nICc8KGluY2x1ZGVkX3ZhcmlhYmxlKScgdG8gJ1hZWicKK1ZBUklBQkxFUzog
RXhwYW5kaW5nICc2JyB0byA2CitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdpbmNs
dWRlZF92YXJpYWJsZScsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAn
PChpbmNsdWRlZF92YXJpYWJsZSknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2luY2x1ZGVkX3Zh
cmlhYmxlJyB0byAnaW5jbHVkZWRfdmFyaWFibGUnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAn
WFlaJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ1hZWicgdG8gJ1hZWicKK1ZB
UklBQkxFUzogRXhwYW5kaW5nICc8KGluY2x1ZGVkX3ZhcmlhYmxlKScgdG8gJ1hZWicKK1ZBUklB
QkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3RoaXJkX2xldHRlcnMnLCAnaXNfYXJyYXknOiAn
JywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwodGhpcmRfbGV0dGVycyknfQorVkFSSUFCTEVT
OiBFeHBhbmRpbmcgJ3RoaXJkX2xldHRlcnMnIHRvICd0aGlyZF9sZXR0ZXJzJworVkFSSUFCTEVT
OiBGb3VuZCBvdXRwdXQgJzwob3RoZXJfbGV0dGVycylISUpLJywgcmVjdXJzaW5nLgorVkFSSUFC
TEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnb3RoZXJfbGV0dGVycycsICdpc19hcnJheSc6ICcn
LCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChvdGhlcl9sZXR0ZXJzKSd9CitWQVJJQUJMRVM6
IEV4cGFuZGluZyAnb3RoZXJfbGV0dGVycycgdG8gJ290aGVyX2xldHRlcnMnCitWQVJJQUJMRVM6
IEZvdW5kIG91dHB1dCAnPChsZXR0ZXJzX2xpc3QpRUZHSElKSycsIHJlY3Vyc2luZy4KK1ZBUklB
QkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ2xldHRlcnNfbGlzdCcsICdpc19hcnJheSc6ICcn
LCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChsZXR0ZXJzX2xpc3QpJ30KK1ZBUklBQkxFUzog
RXhwYW5kaW5nICdsZXR0ZXJzX2xpc3QnIHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEZv
dW5kIG91dHB1dCAnQUJDREVGR0hJSksnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGlu
ZyAnQUJDREVGR0hJSksnIHRvICdBQkNERUZHSElKSycKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8
KGxldHRlcnNfbGlzdClFRkdISUpLJyB0byAnQUJDREVGR0hJSksnCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnPChvdGhlcl9sZXR0ZXJzKUhJSksnIHRvICdBQkNERUZHSElKSycKK1ZBUklBQkxFUzog
RXhwYW5kaW5nICc8KHRoaXJkX2xldHRlcnMpJyB0byAnQUJDREVGR0hJSksnCitWQVJJQUJMRVM6
IEV4cGFuZGluZyAnOCcgdG8gOAorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJy4nIHRvICcuJworVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJ2xldHRlcnNfJyB0byAnbGV0dGVyc18nCitWQVJJQUJMRVM6IE1h
dGNoZXM6IHsnY29udGVudCc6ICc8IShweXRob24gLWMgInByaW50IFwnbGV0dGVyc19saXN0XCci
JywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8KDwhKHB5dGhvbiAt
YyAicHJpbnQgXCdsZXR0ZXJzX2xpc3RcJyIpJ30KK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250
ZW50JzogJ3B5dGhvbiAtYyAicHJpbnQgXCdsZXR0ZXJzX2xpc3RcJyInLCAnaXNfYXJyYXknOiAn
JywgJ3R5cGUnOiAnPCEnLCAncmVwbGFjZSc6ICc8IShweXRob24gLWMgInByaW50IFwnbGV0dGVy
c19saXN0XCciKSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAncHl0aG9uIC1jICJwcmludCBcJ2xl
dHRlcnNfbGlzdFwnIicgdG8gJ3B5dGhvbiAtYyAicHJpbnQgXCdsZXR0ZXJzX2xpc3RcJyInCitW
QVJJQUJMRVM6IEV4ZWN1dGluZyBjb21tYW5kICdweXRob24gLWMgInByaW50ICdsZXR0ZXJzX2xp
c3QnIicgaW4gZGlyZWN0b3J5ICdOb25lJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ2xldHRl
cnNfbGlzdCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdsZXR0ZXJzX2xpc3Qn
IHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPCEocHl0aG9uIC1jICJw
cmludCBcJ2xldHRlcnNfbGlzdFwnIiknIHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEZv
dW5kIG91dHB1dCAnQUJDRCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNE
JyB0byAnQUJDRCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KDwhKHB5dGhvbiAtYyAicHJpbnQg
XCdsZXR0ZXJzX2xpc3RcJyIpKScgdG8gJ0FCQ0QnCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29u
dGVudCc6ICdjaGVja19pbnQnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNl
JzogJzwoY2hlY2tfaW50KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnY2hlY2tfaW50JyB0byAn
Y2hlY2tfaW50JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJzUnLCByZWN1cnNpbmcuCitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAnNScgdG8gNQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwoY2hlY2tf
aW50KScgdG8gNQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2xpc3QnIHRvICdsaXN0JworVkFSSUFC
TEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnInB5dGhvbiIsICItYyIsICI8KHBpJywgJ2lzX2Fy
cmF5JzogJ1snLCAndHlwZSc6ICc8IScsICdyZXBsYWNlJzogJzwhKFsicHl0aG9uIiwgIi1jIiwg
IjwocGkpJ30KK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3BpJywgJ2lzX2FycmF5
JzogJycsICd0eXBlJzogJzwnLCAncmVwbGFjZSc6ICc8KHBpKSd9CitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAncGknIHRvICdwaScKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICdbInB5dGhvbiIsICIt
YyIsICJpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5waSJdJywgcmVjdXJzaW5nLgorVkFSSUFCTEVT
OiBFeHBhbmRpbmcgJ1sicHl0aG9uIiwgIi1jIiwgImltcG9ydCBtYXRoOyBwcmludCBtYXRoLnBp
Il0nIHRvICdbInB5dGhvbiIsICItYyIsICJpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5waSJdJwor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJ1sicHl0aG9uIiwgIi1jIiwgIjwocGkpIl0nIHRvICdbInB5
dGhvbiIsICItYyIsICJpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5waSJdJworVkFSSUFCTEVTOiBF
eGVjdXRpbmcgY29tbWFuZCAnWydweXRob24nLCAnLWMnLCAnaW1wb3J0IG1hdGg7IHByaW50IG1h
dGgucGknXScgaW4gZGlyZWN0b3J5ICdOb25lJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJzMu
MTQxNTkyNjUzNTknLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnMy4xNDE1OTI2
NTM1OScgdG8gJzMuMTQxNTkyNjUzNTknCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPCEoWyJweXRo
b24iLCAiLWMiLCAiPChwaSkiXSknIHRvICczLjE0MTU5MjY1MzU5JworVkFSSUFCTEVTOiBNYXRj
aGVzOiB7J2NvbnRlbnQnOiAncHl0aG9uIC1jICJwcmludCBcJzwobGV0dGVyc19saXN0JywgJ2lz
X2FycmF5JzogJycsICd0eXBlJzogJzwhJywgJ3JlcGxhY2UnOiAnPCEocHl0aG9uIC1jICJwcmlu
dCBcJzwobGV0dGVyc19saXN0KSd9CitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICds
ZXR0ZXJzX2xpc3QnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwo
bGV0dGVyc19saXN0KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbGV0dGVyc19saXN0JyB0byAn
bGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ3B5dGhvbiAtYyAicHJpbnQg
XCdBQkNEXCciJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3B5dGhvbiAtYyAi
cHJpbnQgXCdBQkNEXCciJyB0byAncHl0aG9uIC1jICJwcmludCBcJ0FCQ0RcJyInCitWQVJJQUJM
RVM6IEV4cGFuZGluZyAncHl0aG9uIC1jICJwcmludCBcJzwobGV0dGVyc19saXN0KVwnIicgdG8g
J3B5dGhvbiAtYyAicHJpbnQgXCdBQkNEXCciJworVkFSSUFCTEVTOiBFeGVjdXRpbmcgY29tbWFu
ZCAncHl0aG9uIC1jICJwcmludCAnQUJDRCciJyBpbiBkaXJlY3RvcnkgJ05vbmUnCitWQVJJQUJM
RVM6IEZvdW5kIG91dHB1dCAnQUJDRCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICdBQkNEJyB0byAnQUJDRCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8IShweXRob24gLWMgInBy
aW50IFwnPChsZXR0ZXJzX2xpc3QpXCciKScgdG8gJ0FCQ0QnCitWQVJJQUJMRVM6IE1hdGNoZXM6
IHsnY29udGVudCc6ICdsZXR0ZXJzX2xpc3QnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcs
ICdyZXBsYWNlJzogJzwobGV0dGVyc19saXN0KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbGV0
dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRl
bnQnOiAncHl0aG9uIC1jICJwcmludCBcJzwhKHB5dGhvbiAtYyAiPChwaScsICdpc19hcnJheSc6
ICcnLCAndHlwZSc6ICc8IScsICdyZXBsYWNlJzogJzwhKHB5dGhvbiAtYyAicHJpbnQgXCc8IShw
eXRob24gLWMgIjwocGkpJ30KK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3B5dGhv
biAtYyAiPChwaScsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8IScsICdyZXBsYWNlJzogJzwh
KHB5dGhvbiAtYyAiPChwaSknfQorVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAncGkn
LCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwocGkpJ30KK1ZBUklB
QkxFUzogRXhwYW5kaW5nICdwaScgdG8gJ3BpJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ3B5
dGhvbiAtYyAiaW1wb3J0IG1hdGg7IHByaW50IG1hdGgucGkiJywgcmVjdXJzaW5nLgorVkFSSUFC
TEVTOiBFeHBhbmRpbmcgJ3B5dGhvbiAtYyAiaW1wb3J0IG1hdGg7IHByaW50IG1hdGgucGkiJyB0
byAncHl0aG9uIC1jICJpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5waSInCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAncHl0aG9uIC1jICI8KHBpKSInIHRvICdweXRob24gLWMgImltcG9ydCBtYXRoOyBw
cmludCBtYXRoLnBpIicKK1ZBUklBQkxFUzogRXhlY3V0aW5nIGNvbW1hbmQgJ3B5dGhvbiAtYyAi
aW1wb3J0IG1hdGg7IHByaW50IG1hdGgucGkiJyBpbiBkaXJlY3RvcnkgJ05vbmUnCitWQVJJQUJM
RVM6IEZvdW5kIG91dHB1dCAncHl0aG9uIC1jICJwcmludCBcJzMuMTQxNTkyNjUzNTkgQUJDRFwn
IicsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdweXRob24gLWMgInByaW50IFwn
My4xNDE1OTI2NTM1OSBBQkNEXCciJyB0byAncHl0aG9uIC1jICJwcmludCBcJzMuMTQxNTkyNjUz
NTkgQUJDRFwnIicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdweXRob24gLWMgInByaW50IFwnPCEo
cHl0aG9uIC1jICI8KHBpKSIpIEFCQ0RcJyInIHRvICdweXRob24gLWMgInByaW50IFwnMy4xNDE1
OTI2NTM1OSBBQkNEXCciJworVkFSSUFCTEVTOiBFeGVjdXRpbmcgY29tbWFuZCAncHl0aG9uIC1j
ICJwcmludCAnMy4xNDE1OTI2NTM1OSBBQkNEJyInIGluIGRpcmVjdG9yeSAnTm9uZScKK1ZBUklB
QkxFUzogRm91bmQgb3V0cHV0ICczLjE0MTU5MjY1MzU5IEFCQ0QnLCByZWN1cnNpbmcuCitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAnMy4xNDE1OTI2NTM1OSBBQkNEJyB0byAnMy4xNDE1OTI2NTM1OSBB
QkNEJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwhKHB5dGhvbiAtYyAicHJpbnQgXCc8IShweXRo
b24gLWMgIjwocGkpIikgPChsZXR0ZXJzX2xpc3QpXCciKScgdG8gJzMuMTQxNTkyNjUzNTkgQUJD
RCcKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ2NoZWNrX3N0cl9pbnQnLCAnaXNf
YXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwoY2hlY2tfc3RyX2ludCknfQor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2NoZWNrX3N0cl9pbnQnIHRvICdjaGVja19zdHJfaW50Jwor
VkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJzYnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnNicgdG8gNgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwoY2hlY2tfc3RyX2ludCknIHRv
IDYKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ2NoZWNrX2ludCcsICdpc19hcnJh
eSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChjaGVja19pbnQpJ30KK1ZBUklBQkxF
UzogRXhwYW5kaW5nICdjaGVja19pbnQnIHRvICdjaGVja19pbnQnCitWQVJJQUJMRVM6IEZvdW5k
IG91dHB1dCAnNWJsYWgnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnNWJsYWgn
IHRvICc1YmxhaCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KGNoZWNrX2ludClibGFoJyB0byAn
NWJsYWgnCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdub3RfaW50XzQnLCAnaXNf
YXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwobm90X2ludF80KSd9CitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAnbm90X2ludF80JyB0byAnbm90X2ludF80JworVkFSSUFCTEVTOiBG
b3VuZCBvdXRwdXQgJzEzLjAnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnMTMu
MCcgdG8gJzEzLjAnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChub3RfaW50XzQpJyB0byAnMTMu
MCcKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ25vdF9pbnRfMycsICdpc19hcnJh
eSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChub3RfaW50XzMpJ30KK1ZBUklBQkxF
UzogRXhwYW5kaW5nICdub3RfaW50XzMnIHRvICdub3RfaW50XzMnCitWQVJJQUJMRVM6IEZvdW5k
IG91dHB1dCAnMDEyJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzAxMicgdG8g
JzAxMicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KG5vdF9pbnRfMyknIHRvICcwMTInCitWQVJJ
QUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICduZWdhdGl2ZV9pbnQnLCAnaXNfYXJyYXknOiAn
JywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwobmVnYXRpdmVfaW50KSd9CitWQVJJQUJMRVM6
IEV4cGFuZGluZyAnbmVnYXRpdmVfaW50JyB0byAnbmVnYXRpdmVfaW50JworVkFSSUFCTEVTOiBG
b3VuZCBvdXRwdXQgJy0xNScsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICctMTUn
IHRvIC0xNQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwobmVnYXRpdmVfaW50KScgdG8gLTE1CitW
QVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdub3RfaW50XzUnLCAnaXNfYXJyYXknOiAn
JywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwobm90X2ludF81KSd9CitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnbm90X2ludF81JyB0byAnbm90X2ludF81JworVkFSSUFCTEVTOiBGb3VuZCBvdXRw
dXQgJysxNCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICcrMTQnIHRvICcrMTQn
CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChub3RfaW50XzUpJyB0byAnKzE0JworVkFSSUFCTEVT
OiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnY2hlY2tfbGlzdF9pbnQnLCAnaXNfYXJyYXknOiAnJywg
J3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwoY2hlY2tfbGlzdF9pbnQpJ30KK1ZBUklBQkxFUzog
RXhwYW5kaW5nICdjaGVja19saXN0X2ludCcgdG8gJ2NoZWNrX2xpc3RfaW50JworVkFSSUFCTEVT
OiBGb3VuZCBvdXRwdXQgJzcgOCA5JywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcg
JzcgOCA5JyB0byAnNyA4IDknCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChjaGVja19saXN0X2lu
dCknIHRvICc3IDggOScKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ25vdF9pbnRf
MicsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChub3RfaW50XzIp
J30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdub3RfaW50XzInIHRvICdub3RfaW50XzInCitWQVJJ
QUJMRVM6IEZvdW5kIG91dHB1dCAnMTEgJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJzExICcgdG8gJzExICcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KG5vdF9pbnRfMiknIHRv
ICcxMSAnCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdub3RfaW50XzEnLCAnaXNf
YXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwobm90X2ludF8xKSd9CitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAnbm90X2ludF8xJyB0byAnbm90X2ludF8xJworVkFSSUFCTEVTOiBG
b3VuZCBvdXRwdXQgJyAxMCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICcgMTAn
IHRvICcgMTAnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChub3RfaW50XzEpJyB0byAnIDEwJwor
VkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnemVyb19pbnQnLCAnaXNfYXJyYXknOiAn
JywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwoemVyb19pbnQpJ30KK1ZBUklBQkxFUzogRXhw
YW5kaW5nICd6ZXJvX2ludCcgdG8gJ3plcm9faW50JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQg
JzAnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnMCcgdG8gMAorVkFSSUFCTEVT
OiBFeHBhbmRpbmcgJzwoemVyb19pbnQpJyB0byAwCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29u
dGVudCc6ICdjaGVja19saXN0X2ludCcsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8QCcsICdy
ZXBsYWNlJzogJzxAKGNoZWNrX2xpc3RfaW50KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnY2hl
Y2tfbGlzdF9pbnQnIHRvICdjaGVja19saXN0X2ludCcKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0
IFs3LCA4LCA5XSwgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgNyB0byA3CitWQVJJ
QUJMRVM6IEV4cGFuZGluZyA4IHRvIDgKK1ZBUklBQkxFUzogRXhwYW5kaW5nIDkgdG8gOQorVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJzxAKGNoZWNrX2xpc3RfaW50KScgdG8gWzcsIDgsIDldCitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAnZm9vJyB0byAnZm9vJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3Rh
cmdldCcgdG8gJ3RhcmdldCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdub25lJyB0byAnbm9uZScK
K1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3ZhcjYnLCAnaXNfYXJyYXknOiAnJywg
J3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwodmFyNiknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcg
J3ZhcjYnIHRvICd2YXI2JworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnZWNobyA8
KHZhcjUnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCEnLCAncmVwbGFjZSc6ICc8IShlY2hv
IDwodmFyNSknfQorVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAndmFyNScsICdpc19h
cnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPCh2YXI1KSd9CitWQVJJQUJMRVM6
IEV4cGFuZGluZyAndmFyNScgdG8gJ3ZhcjUnCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnZWNo
byBsZXR0ZXJzX2xpc3QnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnZWNobyBs
ZXR0ZXJzX2xpc3QnIHRvICdlY2hvIGxldHRlcnNfbGlzdCcKK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICdlY2hvIDwodmFyNSlsaXN0JyB0byAnZWNobyBsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4
ZWN1dGluZyBjb21tYW5kICdlY2hvIGxldHRlcnNfbGlzdCcgaW4gZGlyZWN0b3J5ICdOb25lJwor
VkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ2xldHRlcnNfbGlzdCcsIHJlY3Vyc2luZy4KK1ZBUklB
QkxFUzogRXhwYW5kaW5nICdsZXR0ZXJzX2xpc3QnIHRvICdsZXR0ZXJzX2xpc3QnCitWQVJJQUJM
RVM6IEV4cGFuZGluZyAnPCEoZWNobyA8KHZhcjUpPCh2YXI2KSknIHRvICdsZXR0ZXJzX2xpc3Qn
CitWQVJJQUJMRVM6IEV4cGFuZGluZyAndGVzdF9hY3Rpb24nIHRvICd0ZXN0X2FjdGlvbicKK1ZB
UklBQkxFUzogRXhwYW5kaW5nICdlY2hvJyB0byAnZWNobycKK1ZBUklBQkxFUzogTWF0Y2hlczog
eydjb250ZW50JzogJ19pbnB1dHMnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBs
YWNlJzogJzwoX2lucHV0cyknfQorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ19pbnB1dHMnIHRvICdf
aW5wdXRzJworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAndmFyMicsICdpc19hcnJh
eSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPCh2YXIyKSd9CitWQVJJQUJMRVM6IEV4
cGFuZGluZyAndmFyMicgdG8gJ3ZhcjInCitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnMy4xNDE1
OTI2NTM1OSBBQkNEJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzMuMTQxNTky
NjUzNTkgQUJDRCcgdG8gJzMuMTQxNTkyNjUzNTkgQUJDRCcKK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICc8KHZhcjIpJyB0byAnMy4xNDE1OTI2NTM1OSBBQkNEJworVkFSSUFCTEVTOiBGb3VuZCBvdXRw
dXQgJyIzLjE0MTU5MjY1MzU5IEFCQ0QiJywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJyIzLjE0MTU5MjY1MzU5IEFCQ0QiJyB0byAnIjMuMTQxNTkyNjUzNTkgQUJDRCInCitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAnPChfaW5wdXRzKScgdG8gJyIzLjE0MTU5MjY1MzU5IEFCQ0QiJwor
VkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnX291dHB1dHMnLCAnaXNfYXJyYXknOiAn
JywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwoX291dHB1dHMpJ30KK1ZBUklBQkxFUzogRXhw
YW5kaW5nICdfb3V0cHV0cycgdG8gJ19vdXRwdXRzJworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2Nv
bnRlbnQnOiAndmFyNCcsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAn
PCh2YXI0KSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAndmFyNCcgdG8gJ3ZhcjQnCitWQVJJQUJM
RVM6IEZvdW5kIG91dHB1dCAnQUJDRCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICdBQkNEJyB0byAnQUJDRCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KHZhcjQpJyB0byAnQUJD
RCcKK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3ZhcjcnLCAnaXNfYXJyYXknOiAn
JywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwodmFyNyknfQorVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJ3ZhcjcnIHRvICd2YXI3JworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ2xldHRlcnNfbGlz
dCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdsZXR0ZXJzX2xpc3QnIHRvICds
ZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPCh2YXI3KScgdG8gJ2xldHRlcnNf
bGlzdCcKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICdBQkNEIGxldHRlcnNfbGlzdCcsIHJlY3Vy
c2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNEIGxldHRlcnNfbGlzdCcgdG8gJ0FCQ0Qg
bGV0dGVyc19saXN0JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwoX291dHB1dHMpJyB0byAnQUJD
RCBsZXR0ZXJzX2xpc3QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnMy4xNDE1OTI2NTM1OSBBQkNE
JyB0byAnMy4xNDE1OTI2NTM1OSBBQkNEJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ0FCQ0QnIHRv
ICdBQkNEJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2xldHRlcnNfbGlzdCcgdG8gJ2xldHRlcnNf
bGlzdCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdkdW1teScgdG8gJ2R1bW15JworVkFSSUFCTEVT
OiBFeHBhbmRpbmcgJ3RhcmdldCcgdG8gJ3RhcmdldCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdu
b25lJyB0byAnbm9uZScKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdjb21tYW5kcy5neXAnIHRvICdj
b21tYW5kcy5neXAnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnY29tbWFuZHMuZ3lwaScgdG8gJ2Nv
bW1hbmRzLmd5cGknCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnZHVtbXknIHRvICdkdW1teScKK1ZB
UklBQkxFUzogRXhwYW5kaW5nICd0YXJnZXQnIHRvICd0YXJnZXQnCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnbm9uZScgdG8gJ25vbmUnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbGV0dGVyc18nIHRv
ICdsZXR0ZXJzXycKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdBQkNEJyB0byAnQUJDRCcKK1ZBUklB
QkxFUzogRXhwYW5kaW5nICdsaXN0JyB0byAnbGlzdCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICcz
LjE0MTU5MjY1MzU5JyB0byAnMy4xNDE1OTI2NTM1OScKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdB
QkNEJyB0byAnQUJDRCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICczLjE0MTU5MjY1MzU5IEFCQ0Qn
IHRvICczLjE0MTU5MjY1MzU5IEFCQ0QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnNWJsYWgnIHRv
ICc1YmxhaCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICcxMy4wJyB0byAnMTMuMCcKK1ZBUklBQkxF
UzogRXhwYW5kaW5nICcwMTInIHRvICcwMTInCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnKzE0JyB0
byAnKzE0JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzcgOCA5JyB0byAnNyA4IDknCitWQVJJQUJM
RVM6IEV4cGFuZGluZyAnMTEgJyB0byAnMTEgJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJyAxMCcg
dG8gJyAxMCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdmb28nIHRvICdmb28nCitWQVJJQUJMRVM6
IEV4cGFuZGluZyAndGFyZ2V0JyB0byAndGFyZ2V0JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ25v
bmUnIHRvICdub25lJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2xldHRlcnNfbGlzdCcgdG8gJ2xl
dHRlcnNfbGlzdCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICd0ZXN0X2FjdGlvbicgdG8gJ3Rlc3Rf
YWN0aW9uJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2VjaG8nIHRvICdlY2hvJworVkFSSUFCTEVT
OiBFeHBhbmRpbmcgJyIzLjE0MTU5MjY1MzU5IEFCQ0QiJyB0byAnIjMuMTQxNTkyNjUzNTkgQUJD
RCInCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnQUJDRCBsZXR0ZXJzX2xpc3QnIHRvICdBQkNEIGxl
dHRlcnNfbGlzdCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICczLjE0MTU5MjY1MzU5IEFCQ0QnIHRv
ICczLjE0MTU5MjY1MzU5IEFCQ0QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnQUJDRCcgdG8gJ0FC
Q0QnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbGV0dGVyc19saXN0JyB0byAnbGV0dGVyc19saXN0
JwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2NvbW1h
bmRzL2NvbW1hbmRzLmd5cGQuZ29sZGVuIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFy
aWFibGVzL2NvbW1hbmRzL2NvbW1hbmRzLmd5cGQuZ29sZGVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5YWFmMDIw
MmRlODc2NTg5MmQyODkyNzg5OTRlNTlhNzY5YTE3NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYWJsZXMvY29tbWFuZHMvY29tbWFuZHMuZ3lwZC5n
b2xkZW4KQEAgLTAsMCArMSw1NCBAQAoreydfREVQVEgnOiAnLicsCisgJ2luY2x1ZGVkX2ZpbGVz
JzogWydjb21tYW5kcy5neXAnLCAnY29tbWFuZHMuZ3lwaSddLAorICd0YXJnZXRzJzogW3snYWN0
aW9ucyc6IFt7J2FjdGlvbic6IFsnZWNobycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICciMy4xNDE1OTI2NTM1OSBBQkNEIicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdBQkNEIGxldHRlcnNfbGlzdCddLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ3Rlc3RfYWN0aW9uJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdpbnB1dHMnOiBbJzMuMTQxNTkyNjUzNTkgQUJDRCddLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ291dHB1dHMnOiBbJ0FCQ0QnLCAnbGV0dGVyc19saXN0J10sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzJzogeyd2YXI3JzogJ2xldHRlcnNfbGlz
dCd9fV0sCisgICAgICAgICAgICAgICdjb25maWd1cmF0aW9ucyc6IHsnRGVmYXVsdCc6IHt9fSwK
KyAgICAgICAgICAgICAgJ2RlZmF1bHRfY29uZmlndXJhdGlvbic6ICdEZWZhdWx0JywKKyAgICAg
ICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2ZvbycsCisgICAgICAgICAgICAgICd0b29sc2V0Jzog
J3RhcmdldCcsCisgICAgICAgICAgICAgICd0eXBlJzogJ25vbmUnLAorICAgICAgICAgICAgICAn
dmFyaWFibGVzJzogeyd2YXIxJzogJzMuMTQxNTkyNjUzNTknLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd2YXIxMCc6ICc3IDggOScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3ZhcjExJzogWyc3JywgJzgnLCAnOSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2
YXIxMic6ICcgMTAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YXIxMyc6ICcxMSAn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YXIxNCc6ICcwMTInLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd2YXIxNSc6ICcxMy4wJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAndmFyMTYnOiAnKzE0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFy
MTcnOiAnLTE1JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFyMTgnOiAnMCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhcjInOiAnMy4xNDE1OTI2NTM1OSBBQkNEJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFyMyc6ICdBQkNEJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAndmFyNCc6ICdBQkNEJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndmFyNSc6ICdsZXR0ZXJzXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Zh
cjYnOiAnbGlzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhcjcnOiAnNScsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhcjgnOiAnNWJsYWgnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd2YXI5JzogJzYnfX0sCisgICAgICAgICAgICAgeydjb25maWd1cmF0
aW9ucyc6IHsnRGVmYXVsdCc6IHt9fSwKKyAgICAgICAgICAgICAgJ2RlZmF1bHRfY29uZmlndXJh
dGlvbic6ICdEZWZhdWx0JywKKyAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2R1bW15JywK
KyAgICAgICAgICAgICAgJ3Rvb2xzZXQnOiAndGFyZ2V0JywKKyAgICAgICAgICAgICAgJ3R5cGUn
OiAnbm9uZSd9XSwKKyAndmFyaWFibGVzJzogeydjaGVja19pbmNsdWRlZCc6ICdYWVonLAorICAg
ICAgICAgICAgICAgJ2NoZWNrX2ludCc6ICc1JywKKyAgICAgICAgICAgICAgICdjaGVja19saXN0
X2ludCc6IFsnNycsICc4JywgJzknXSwKKyAgICAgICAgICAgICAgICdjaGVja19saXN0cyc6IFsn
WFlaJywgJ0FCQ0RFRkdISUpLJ10sCisgICAgICAgICAgICAgICAnY2hlY2tfc3RyX2ludCc6ICc2
JywKKyAgICAgICAgICAgICAgICdpbmNsdWRlZF92YXJpYWJsZSc6ICdYWVonLAorICAgICAgICAg
ICAgICAgJ2xldHRlcnNfbGlzdCc6ICdBQkNEJywKKyAgICAgICAgICAgICAgICduZWdhdGl2ZV9p
bnQnOiAnLTE1JywKKyAgICAgICAgICAgICAgICdub3RfaW50XzEnOiAnIDEwJywKKyAgICAgICAg
ICAgICAgICdub3RfaW50XzInOiAnMTEgJywKKyAgICAgICAgICAgICAgICdub3RfaW50XzMnOiAn
MDEyJywKKyAgICAgICAgICAgICAgICdub3RfaW50XzQnOiAnMTMuMCcsCisgICAgICAgICAgICAg
ICAnbm90X2ludF81JzogJysxNCcsCisgICAgICAgICAgICAgICAnb3RoZXJfbGV0dGVycyc6ICdB
QkNERUZHJywKKyAgICAgICAgICAgICAgICdwaSc6ICdpbXBvcnQgbWF0aDsgcHJpbnQgbWF0aC5w
aScsCisgICAgICAgICAgICAgICAndGhpcmRfbGV0dGVycyc6ICdBQkNERUZHSElKSycsCisgICAg
ICAgICAgICAgICAnemVyb19pbnQnOiAnMCd9fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2NvbW1hbmRzL2NvbW1hbmRzLmd5cGkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdGVzdC92YXJpYWJsZXMvY29tbWFuZHMvY29tbWFuZHMuZ3lwaQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42YjIyNDk3MTU5MzcxZmZiZjlmODg3OWYyNjEwMTA0ODVkOGNkZjczCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2NvbW1hbmRzL2Nv
bW1hbmRzLmd5cGkKQEAgLTAsMCArMSwxNiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorCisjIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCBmcm9tIGNvbW1hbmRz
Lmd5cCB0byB0ZXN0IGV2YWx1YXRpb24gb3JkZXIgb2YgaW5jbHVkZXMuCit7CisgICd2YXJpYWJs
ZXMnOiB7CisgICAgJ2luY2x1ZGVkX3ZhcmlhYmxlJzogJ1hZWicsCisgIH0sCisgICd0YXJnZXRz
JzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdkdW1teScsCisgICAgICAndHlwZSc6
ICdub25lJywKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvdmFyaWFibGVzL2NvbW1hbmRzL2d5cHRlc3QtY29tbWFuZHMtaWdub3JlLWVudi5w
eSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhYmxlcy9jb21tYW5kcy9neXB0ZXN0
LWNvbW1hbmRzLWlnbm9yZS1lbnYucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNjZTFiNThmOGRhYjQ3NTNhYjU1
ZTNiYTQyZGZjY2RiY2JiZDdiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L3ZhcmlhYmxlcy9jb21tYW5kcy9neXB0ZXN0LWNvbW1hbmRzLWlnbm9yZS1lbnYu
cHkKQEAgLTAsMCArMSw1MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0
IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIiIiCitUZXN0IHRoYXQgZW52aXJv
bm1lbnQgdmFyaWFibGVzIGFyZSBpZ25vcmVkIHdoZW4gLS1pZ25vcmUtZW52aXJvbm1lbnQgaXMK
K3NwZWNpZmllZC4KKyIiIgorCitpbXBvcnQgb3MKKworaW1wb3J0IFRlc3RHeXAKKworb3MuZW52
aXJvblsnR1lQX0RFRklORVMnXSA9ICdGT089QkFSJworb3MuZW52aXJvblsnR1lQX0dFTkVSQVRP
UlMnXSA9ICdmb28nCitvcy5lbnZpcm9uWydHWVBfR0VORVJBVE9SX0ZMQUdTJ10gPSAnZ2VuZmxh
Zz1mb28nCitvcy5lbnZpcm9uWydHWVBfR0VORVJBVE9SX09VVFBVVCddID0gJ3NvbWVkaXInCisK
K3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAoZm9ybWF0PSdneXBkJykKKworZXhwZWN0ID0gdGVzdC5y
ZWFkKCdjb21tYW5kcy5neXAuaWdub3JlLWVudi5zdGRvdXQnKS5yZXBsYWNlKCdccicsICcnKQor
CisjIFNldCAkSE9NRSBzbyB0aGF0IGd5cCBkb2Vzbid0IHJlYWQgdGhlIHVzZXIncyBhY3R1YWwK
KyMgfi8uZ3lwL2luY2x1ZGUuZ3lwaSBmaWxlLCB3aGljaCBtYXkgY29udGFpbiB2YXJpYWJsZXMK
KyMgYW5kIG90aGVyIHNldHRpbmdzIHRoYXQgd291bGQgY2hhbmdlIHRoZSBvdXRwdXQuCitvcy5l
bnZpcm9uWydIT01FJ10gPSB0ZXN0LndvcmtwYXRoKCkKKwordGVzdC5ydW5fZ3lwKCdjb21tYW5k
cy5neXAnLAorICAgICAgICAgICAgICctLWRlYnVnJywgJ3ZhcmlhYmxlcycsICctLWRlYnVnJywg
J2dlbmVyYWwnLAorICAgICAgICAgICAgICctLWlnbm9yZS1lbnZpcm9ubWVudCcsCisgICAgICAg
ICAgICAgc3Rkb3V0PWV4cGVjdCkKKworIyBWZXJpZnkgdGhlIGNvbW1hbmRzLmd5cGQgYWdhaW5z
dCB0aGUgY2hlY2tlZC1pbiBleHBlY3RlZCBjb250ZW50cy4KKyMKKyMgTm9ybWFsbHksIHdlIHNo
b3VsZCBjYW5vbmljYWxpemUgbGluZSBlbmRpbmdzIGluIHRoZSBleHBlY3RlZAorIyBjb250ZW50
cyBmaWxlIHNldHRpbmcgdGhlIFN1YnZlcnNpb24gc3ZuOmVvbC1zdHlsZSB0byBuYXRpdmUsCisj
IGJ1dCB0aGF0IHdvdWxkIHN0aWxsIGZhaWwgaWYgbXVsdGlwbGUgc3lzdGVtcyBhcmUgc2hhcmlu
ZyBhIHNpbmdsZQorIyB3b3Jrc3BhY2Ugb24gYSBuZXR3b3JrLW1vdW50ZWQgZmlsZSBzeXN0ZW0u
ICBDb25zZXF1ZW50bHksIHdlCisjIG1hc3NhZ2UgdGhlIFdpbmRvd3MgbGluZSBlbmRpbmdzICgn
XHJcbicpIGluIHRoZSBvdXRwdXQgdG8gdGhlCisjIGNoZWNrZWQtaW4gVU5JWCBlbmRpbmdzICgn
XG4nKS4KKworY29udGVudHMgPSB0ZXN0LnJlYWQoJ2NvbW1hbmRzLmd5cGQnKS5yZXBsYWNlKCdc
cicsICcnKQorZXhwZWN0ID0gdGVzdC5yZWFkKCdjb21tYW5kcy5neXBkLmdvbGRlbicpLnJlcGxh
Y2UoJ1xyJywgJycpCitpZiBub3QgdGVzdC5tYXRjaChjb250ZW50cywgZXhwZWN0KToKKyAgcHJp
bnQgIlVuZXhwZWN0ZWQgY29udGVudHMgb2YgYGNvbW1hbmRzLmd5cGQnIgorICB0ZXN0LmRpZmYo
ZXhwZWN0LCBjb250ZW50cywgJ2NvbW1hbmRzLmd5cGQgJykKKyAgdGVzdC5mYWlsX3Rlc3QoKQor
Cit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC92YXJpYWJsZXMvY29tbWFuZHMvZ3lwdGVzdC1jb21tYW5kcy1yZXBlYXRlZC5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhYmxlcy9jb21tYW5kcy9neXB0ZXN0LWNvbW1hbmRz
LXJlcGVhdGVkLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwMDlhZmVhYTE4OTg4YWNhYzY1YTgxYzYzYWJjNDIw
YWYwNjc0ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92
YXJpYWJsZXMvY29tbWFuZHMvZ3lwdGVzdC1jb21tYW5kcy1yZXBlYXRlZC5weQpAQCAtMCwwICsx
LDQ1IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1Rlc3QgdmFyaWFibGUgZXhwYW5zaW9uIG9mICc8
ISgpJyBzeW50YXggY29tbWFuZHMgd2hlcmUgdGhleSBhcmUgZXZhbHVhdGVkCittb3JlIHRoZW4g
b25jZS4uCisiIiIKKworaW1wb3J0IG9zCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0
R3lwLlRlc3RHeXAoZm9ybWF0PSdneXBkJykKKworZXhwZWN0ID0gdGVzdC5yZWFkKCdjb21tYW5k
cy1yZXBlYXRlZC5neXAuc3Rkb3V0JykucmVwbGFjZSgnXHInLCAnJykKKworIyBTZXQgJEhPTUUg
c28gdGhhdCBneXAgZG9lc24ndCByZWFkIHRoZSB1c2VyJ3MgYWN0dWFsCisjIH4vLmd5cC9pbmNs
dWRlLmd5cGkgZmlsZSwgd2hpY2ggbWF5IGNvbnRhaW4gdmFyaWFibGVzCisjIGFuZCBvdGhlciBz
ZXR0aW5ncyB0aGF0IHdvdWxkIGNoYW5nZSB0aGUgb3V0cHV0Lgorb3MuZW52aXJvblsnSE9NRSdd
ID0gdGVzdC53b3JrcGF0aCgpCisKK3Rlc3QucnVuX2d5cCgnY29tbWFuZHMtcmVwZWF0ZWQuZ3lw
JywKKyAgICAgICAgICAgICAnLS1kZWJ1ZycsICd2YXJpYWJsZXMnLCAnLS1kZWJ1ZycsICdnZW5l
cmFsJywKKyAgICAgICAgICAgICBzdGRvdXQ9ZXhwZWN0KQorCisjIFZlcmlmeSB0aGUgY29tbWFu
ZHMtcmVwZWF0ZWQuZ3lwZCBhZ2FpbnN0IHRoZSBjaGVja2VkLWluIGV4cGVjdGVkIGNvbnRlbnRz
LgorIworIyBOb3JtYWxseSwgd2Ugc2hvdWxkIGNhbm9uaWNhbGl6ZSBsaW5lIGVuZGluZ3MgaW4g
dGhlIGV4cGVjdGVkCisjIGNvbnRlbnRzIGZpbGUgc2V0dGluZyB0aGUgU3VidmVyc2lvbiBzdm46
ZW9sLXN0eWxlIHRvIG5hdGl2ZSwKKyMgYnV0IHRoYXQgd291bGQgc3RpbGwgZmFpbCBpZiBtdWx0
aXBsZSBzeXN0ZW1zIGFyZSBzaGFyaW5nIGEgc2luZ2xlCisjIHdvcmtzcGFjZSBvbiBhIG5ldHdv
cmstbW91bnRlZCBmaWxlIHN5c3RlbS4gIENvbnNlcXVlbnRseSwgd2UKKyMgbWFzc2FnZSB0aGUg
V2luZG93cyBsaW5lIGVuZGluZ3MgKCdcclxuJykgaW4gdGhlIG91dHB1dCB0byB0aGUKKyMgY2hl
Y2tlZC1pbiBVTklYIGVuZGluZ3MgKCdcbicpLgorCitjb250ZW50cyA9IHRlc3QucmVhZCgnY29t
bWFuZHMtcmVwZWF0ZWQuZ3lwZCcpLnJlcGxhY2UoJ1xyJywgJycpCitleHBlY3QgPSB0ZXN0LnJl
YWQoJ2NvbW1hbmRzLXJlcGVhdGVkLmd5cGQuZ29sZGVuJykucmVwbGFjZSgnXHInLCAnJykKK2lm
IG5vdCB0ZXN0Lm1hdGNoKGNvbnRlbnRzLCBleHBlY3QpOgorICBwcmludCAiVW5leHBlY3RlZCBj
b250ZW50cyBvZiBgY29tbWFuZHMtcmVwZWF0ZWQuZ3lwZCciCisgIHRlc3QuZGlmZihleHBlY3Qs
IGNvbnRlbnRzLCAnY29tbWFuZHMtcmVwZWF0ZWQuZ3lwZCAnKQorICB0ZXN0LmZhaWxfdGVzdCgp
CisKK3Rlc3QucGFzc190ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
ZXN0L3ZhcmlhYmxlcy9jb21tYW5kcy9neXB0ZXN0LWNvbW1hbmRzLnB5IGIvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2NvbW1hbmRzL2d5cHRlc3QtY29tbWFuZHMucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGRjMTU0NzY2MGIzZDk5OWVjNzM1NDQ5NGRjNWUyZjA3ODliZTk3YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhYmxlcy9jb21tYW5k
cy9neXB0ZXN0LWNvbW1hbmRzLnB5CkBAIC0wLDAgKzEsNDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyIi
IgorVGVzdCB2YXJpYWJsZSBleHBhbnNpb24gb2YgJzwhKCknIHN5bnRheCBjb21tYW5kcy4KKyIi
IgorCitpbXBvcnQgb3MKKworaW1wb3J0IFRlc3RHeXAKKwordGVzdCA9IFRlc3RHeXAuVGVzdEd5
cChmb3JtYXQ9J2d5cGQnKQorCitleHBlY3QgPSB0ZXN0LnJlYWQoJ2NvbW1hbmRzLmd5cC5zdGRv
dXQnKS5yZXBsYWNlKCdccicsICcnKQorCisjIFNldCAkSE9NRSBzbyB0aGF0IGd5cCBkb2Vzbid0
IHJlYWQgdGhlIHVzZXIncyBhY3R1YWwKKyMgfi8uZ3lwL2luY2x1ZGUuZ3lwaSBmaWxlLCB3aGlj
aCBtYXkgY29udGFpbiB2YXJpYWJsZXMKKyMgYW5kIG90aGVyIHNldHRpbmdzIHRoYXQgd291bGQg
Y2hhbmdlIHRoZSBvdXRwdXQuCitvcy5lbnZpcm9uWydIT01FJ10gPSB0ZXN0LndvcmtwYXRoKCkK
KwordGVzdC5ydW5fZ3lwKCdjb21tYW5kcy5neXAnLAorICAgICAgICAgICAgICctLWRlYnVnJywg
J3ZhcmlhYmxlcycsICctLWRlYnVnJywgJ2dlbmVyYWwnLAorICAgICAgICAgICAgIHN0ZG91dD1l
eHBlY3QpCisKKyMgVmVyaWZ5IHRoZSBjb21tYW5kcy5neXBkIGFnYWluc3QgdGhlIGNoZWNrZWQt
aW4gZXhwZWN0ZWQgY29udGVudHMuCisjCisjIE5vcm1hbGx5LCB3ZSBzaG91bGQgY2Fub25pY2Fs
aXplIGxpbmUgZW5kaW5ncyBpbiB0aGUgZXhwZWN0ZWQKKyMgY29udGVudHMgZmlsZSBzZXR0aW5n
IHRoZSBTdWJ2ZXJzaW9uIHN2bjplb2wtc3R5bGUgdG8gbmF0aXZlLAorIyBidXQgdGhhdCB3b3Vs
ZCBzdGlsbCBmYWlsIGlmIG11bHRpcGxlIHN5c3RlbXMgYXJlIHNoYXJpbmcgYSBzaW5nbGUKKyMg
d29ya3NwYWNlIG9uIGEgbmV0d29yay1tb3VudGVkIGZpbGUgc3lzdGVtLiAgQ29uc2VxdWVudGx5
LCB3ZQorIyBtYXNzYWdlIHRoZSBXaW5kb3dzIGxpbmUgZW5kaW5ncyAoJ1xyXG4nKSBpbiB0aGUg
b3V0cHV0IHRvIHRoZQorIyBjaGVja2VkLWluIFVOSVggZW5kaW5ncyAoJ1xuJykuCisKK2NvbnRl
bnRzID0gdGVzdC5yZWFkKCdjb21tYW5kcy5neXBkJykucmVwbGFjZSgnXHInLCAnJykKK2V4cGVj
dCA9IHRlc3QucmVhZCgnY29tbWFuZHMuZ3lwZC5nb2xkZW4nKS5yZXBsYWNlKCdccicsICcnKQor
aWYgbm90IHRlc3QubWF0Y2goY29udGVudHMsIGV4cGVjdCk6CisgIHByaW50ICJVbmV4cGVjdGVk
IGNvbnRlbnRzIG9mIGBjb21tYW5kcy5neXBkJyIKKyAgdGVzdC5kaWZmKGV4cGVjdCwgY29udGVu
dHMsICdjb21tYW5kcy5neXBkICcpCisgIHRlc3QuZmFpbF90ZXN0KCkKKwordGVzdC5wYXNzX3Rl
c3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2Nv
bW1hbmRzL3VwZGF0ZV9nb2xkZW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYWJs
ZXMvY29tbWFuZHMvdXBkYXRlX2dvbGRlbgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGRhNTU4YTI4ZWU3ZWI4MGRj
YTFhMDI5NDRiMzVhYWZlMjc4YWIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2NvbW1hbmRzL3VwZGF0ZV9nb2xkZW4KQEAgLTAsMCArMSwx
MSBAQAorIyEvYmluL2Jhc2gKKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorCitweXRob24gLi4vLi4vLi4vZ3lwIC0tZGVidWcgdmFyaWFibGVzIC0tZGVidWcg
Z2VuZXJhbCAtLWZvcm1hdCBneXBkIC0tZGVwdGggLiBjb21tYW5kcy5neXAgPiBjb21tYW5kcy5n
eXAuc3Rkb3V0CitweXRob24gLi4vLi4vLi4vZ3lwIC0taWdub3JlLWVudmlyb25tZW50IC0tZGVi
dWcgdmFyaWFibGVzIC0tZGVidWcgZ2VuZXJhbCAtLWZvcm1hdCBneXBkIC0tZGVwdGggLiBjb21t
YW5kcy5neXAgPiBjb21tYW5kcy5neXAuaWdub3JlLWVudi5zdGRvdXQKK2NwIC1mIGNvbW1hbmRz
Lmd5cGQgY29tbWFuZHMuZ3lwZC5nb2xkZW4KK3B5dGhvbiAuLi8uLi8uLi9neXAgLS1kZWJ1ZyB2
YXJpYWJsZXMgLS1kZWJ1ZyBnZW5lcmFsIC0tZm9ybWF0IGd5cGQgLS1kZXB0aCAuIGNvbW1hbmRz
LXJlcGVhdGVkLmd5cCA+IGNvbW1hbmRzLXJlcGVhdGVkLmd5cC5zdGRvdXQKK2NwIC1mIGNvbW1h
bmRzLXJlcGVhdGVkLmd5cGQgY29tbWFuZHMtcmVwZWF0ZWQuZ3lwZC5nb2xkZW4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhYmxlcy9maWxlbGlzdC9maWxlbGlz
dC5neXAuc3Rkb3V0IGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2ZpbGVs
aXN0L2ZpbGVsaXN0Lmd5cC5zdGRvdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU0MTI2N2E5MzIyYTM5MzFjYTEy
NTUzZjU2YzNmZmEzMTU0NGRhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L3ZhcmlhYmxlcy9maWxlbGlzdC9maWxlbGlzdC5neXAuc3Rkb3V0CkBAIC0wLDAg
KzEsMTc0IEBACitHRU5FUkFMOiBydW5uaW5nIHdpdGggdGhlc2Ugb3B0aW9uczoKK0dFTkVSQUw6
ICAgY2hlY2s6IE5vbmUKK0dFTkVSQUw6ICAgY2lyY3VsYXJfY2hlY2s6IFRydWUKK0dFTkVSQUw6
ICAgZGVidWc6IFsndmFyaWFibGVzJywgJ2dlbmVyYWwnXQorR0VORVJBTDogICBkZWZpbmVzOiBO
b25lCitHRU5FUkFMOiAgIGRlcHRoOiAnLicKK0dFTkVSQUw6ICAgZm9ybWF0czogWydneXBkJ10K
K0dFTkVSQUw6ICAgZ2VuZXJhdG9yX2ZsYWdzOiBbXQorR0VORVJBTDogICBnZW5lcmF0b3Jfb3V0
cHV0OiBOb25lCitHRU5FUkFMOiAgIGluY2x1ZGVzOiBOb25lCitHRU5FUkFMOiAgIG1zdnNfdmVy
c2lvbjogTm9uZQorR0VORVJBTDogICBzdWZmaXg6ICcnCitHRU5FUkFMOiAgIHRvcGxldmVsX2Rp
cjogTm9uZQorR0VORVJBTDogICB1c2VfZW52aXJvbm1lbnQ6IFRydWUKK0dFTkVSQUw6IGNtZGxp
bmVfZGVmYXVsdF92YXJpYWJsZXM6IHt9CitHRU5FUkFMOiBnZW5lcmF0b3JfZmxhZ3M6IHt9CitW
QVJJQUJMRVM6IEV4cGFuZGluZyAnZXhjbHVkZScgdG8gJ2V4Y2x1ZGUnCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnU2NoLionIHRvICdTY2guKicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdpbmNsdWRl
JyB0byAnaW5jbHVkZScKK1ZBUklBQkxFUzogRXhwYW5kaW5nICcuKmR0JyB0byAnLipkdCcKK1ZB
UklBQkxFUzogRXhwYW5kaW5nICdleGNsdWRlJyB0byAnZXhjbHVkZScKK1ZBUklBQkxFUzogRXhw
YW5kaW5nICdKZXIuKicgdG8gJ0plci4qJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ0pvaG4nIHRv
ICdKb2huJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ0phY29iJyB0byAnSmFjb2InCitWQVJJQUJM
RVM6IEV4cGFuZGluZyAnQXN0b3InIHRvICdBc3RvcicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdK
aW5nbGVoZWltZXInIHRvICdKaW5nbGVoZWltZXInCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnSmVy
b21lJyB0byAnSmVyb21lJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ1NjaG1pZHQnIHRvICdTY2ht
aWR0JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ1NjaHVsdHonIHRvICdTY2h1bHR6JworVkFSSUFC
TEVTOiBFeHBhbmRpbmcgJ0FzdG9yJyB0byAnQXN0b3InCitWQVJJQUJMRVM6IEV4cGFuZGluZyAn
LicgdG8gJy4nCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICduYW1lcy50eHQgPEAo
bmFtZXMnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPHwnLCAncmVwbGFjZSc6ICc8fChuYW1l
cy50eHQgPEAobmFtZXMpJ30KK1ZBUklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ25hbWVz
JywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzxAJywgJ3JlcGxhY2UnOiAnPEAobmFtZXMpJ30K
K1ZBUklBQkxFUzogRXhwYW5kaW5nICduYW1lcycgdG8gJ25hbWVzJworVkFSSUFCTEVTOiBFeHBh
bmRpbmcgJ0pvaG4nIHRvICdKb2huJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ0phY29iJyB0byAn
SmFjb2InCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnSmluZ2xlaGVpbWVyJyB0byAnSmluZ2xlaGVp
bWVyJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ1NjaG1pZHQnIHRvICdTY2htaWR0JworVkFSSUFC
TEVTOiBGb3VuZCBvdXRwdXQgJ25hbWVzLnR4dCBKb2huIEphY29iIEppbmdsZWhlaW1lciBTY2ht
aWR0JywgcmVjdXJzaW5nLgorVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ25hbWVzLnR4dCBKb2huIEph
Y29iIEppbmdsZWhlaW1lciBTY2htaWR0JyB0byAnbmFtZXMudHh0IEpvaG4gSmFjb2IgSmluZ2xl
aGVpbWVyIFNjaG1pZHQnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbmFtZXMudHh0IDxAKG5hbWVz
KScgdG8gJ25hbWVzLnR4dCBKb2huIEphY29iIEppbmdsZWhlaW1lciBTY2htaWR0JworVkFSSUFC
TEVTOiBGb3VuZCBvdXRwdXQgJ25hbWVzLnR4dCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhw
YW5kaW5nICduYW1lcy50eHQnIHRvICduYW1lcy50eHQnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAn
PHwobmFtZXMudHh0IDxAKG5hbWVzKSknIHRvICduYW1lcy50eHQnCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnZm9vJyB0byAnZm9vJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3RhcmdldCcgdG8gJ3Rh
cmdldCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdub25lJyB0byAnbm9uZScKK1ZBUklBQkxFUzog
RXhwYW5kaW5nICd0ZXN0X2FjdGlvbicgdG8gJ3Rlc3RfYWN0aW9uJworVkFSSUFCTEVTOiBFeHBh
bmRpbmcgJ3B5dGhvbicgdG8gJ3B5dGhvbicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdkdW1teS5w
eScgdG8gJ2R1bW15LnB5JworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnbmFtZXNf
bGlzdGZpbGUnLCAnaXNfYXJyYXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwobmFt
ZXNfbGlzdGZpbGUpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5nICduYW1lc19saXN0ZmlsZScgdG8g
J25hbWVzX2xpc3RmaWxlJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ25hbWVzLnR4dCcsIHJl
Y3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICduYW1lcy50eHQnIHRvICduYW1lcy50eHQn
CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnPChuYW1lc19saXN0ZmlsZSknIHRvICduYW1lcy50eHQn
CitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICduYW1lc19saXN0ZmlsZScsICdpc19h
cnJheSc6ICcnLCAndHlwZSc6ICc8JywgJ3JlcGxhY2UnOiAnPChuYW1lc19saXN0ZmlsZSknfQor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJ25hbWVzX2xpc3RmaWxlJyB0byAnbmFtZXNfbGlzdGZpbGUn
CitWQVJJQUJMRVM6IEZvdW5kIG91dHB1dCAnbmFtZXMudHh0JywgcmVjdXJzaW5nLgorVkFSSUFC
TEVTOiBFeHBhbmRpbmcgJ25hbWVzLnR4dCcgdG8gJ25hbWVzLnR4dCcKK1ZBUklBQkxFUzogRXhw
YW5kaW5nICc8KG5hbWVzX2xpc3RmaWxlKScgdG8gJ25hbWVzLnR4dCcKK1ZBUklBQkxFUzogTWF0
Y2hlczogeydjb250ZW50JzogJ2NhdCA8KG5hbWVzX2xpc3RmaWxlJywgJ2lzX2FycmF5JzogJycs
ICd0eXBlJzogJzwhQCcsICdyZXBsYWNlJzogJzwhQChjYXQgPChuYW1lc19saXN0ZmlsZSknfQor
VkFSSUFCTEVTOiBNYXRjaGVzOiB7J2NvbnRlbnQnOiAnbmFtZXNfbGlzdGZpbGUnLCAnaXNfYXJy
YXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwobmFtZXNfbGlzdGZpbGUpJ30KK1ZB
UklBQkxFUzogRXhwYW5kaW5nICduYW1lc19saXN0ZmlsZScgdG8gJ25hbWVzX2xpc3RmaWxlJwor
VkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ2NhdCBuYW1lcy50eHQnLCByZWN1cnNpbmcuCitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAnY2F0IG5hbWVzLnR4dCcgdG8gJ2NhdCBuYW1lcy50eHQnCitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAnY2F0IDwobmFtZXNfbGlzdGZpbGUpJyB0byAnY2F0IG5hbWVzLnR4
dCcKK1ZBUklBQkxFUzogRXhlY3V0aW5nIGNvbW1hbmQgJ2NhdCBuYW1lcy50eHQnIGluIGRpcmVj
dG9yeSAnc3JjJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgWydKb2huJywgJ0phY29iJywgJ0pp
bmdsZWhlaW1lcicsICdTY2htaWR0J10sIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICdKb2huJyB0byAnSm9obicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdKYWNvYicgdG8gJ0phY29i
JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ0ppbmdsZWhlaW1lcicgdG8gJ0ppbmdsZWhlaW1lcicK
K1ZBUklBQkxFUzogRXhwYW5kaW5nICdTY2htaWR0JyB0byAnU2NobWlkdCcKK1ZBUklBQkxFUzog
RXhwYW5kaW5nICc8IUAoY2F0IDwobmFtZXNfbGlzdGZpbGUpKScgdG8gWydKb2huJywgJ0phY29i
JywgJ0ppbmdsZWhlaW1lcicsICdTY2htaWR0J10KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdkdW1t
eV9mb28nIHRvICdkdW1teV9mb28nCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsnY29udGVudCc6ICdz
b3VyY2VzLnR4dCA8QChfc291cmNlcycsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8fCcsICdy
ZXBsYWNlJzogJzx8KHNvdXJjZXMudHh0IDxAKF9zb3VyY2VzKSd9CitWQVJJQUJMRVM6IE1hdGNo
ZXM6IHsnY29udGVudCc6ICdfc291cmNlcycsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8QCcs
ICdyZXBsYWNlJzogJzxAKF9zb3VyY2VzKSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnX3NvdXJj
ZXMnIHRvICdfc291cmNlcycKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdKb2huJyB0byAnSm9obicK
K1ZBUklBQkxFUzogRXhwYW5kaW5nICdKYWNvYicgdG8gJ0phY29iJworVkFSSUFCTEVTOiBFeHBh
bmRpbmcgJ0ppbmdsZWhlaW1lcicgdG8gJ0ppbmdsZWhlaW1lcicKK1ZBUklBQkxFUzogRXhwYW5k
aW5nICdTY2htaWR0JyB0byAnU2NobWlkdCcKK1ZBUklBQkxFUzogRm91bmQgb3V0cHV0ICdzb3Vy
Y2VzLnR4dCBKb2huIEphY29iIEppbmdsZWhlaW1lciBTY2htaWR0JywgcmVjdXJzaW5nLgorVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJ3NvdXJjZXMudHh0IEpvaG4gSmFjb2IgSmluZ2xlaGVpbWVyIFNj
aG1pZHQnIHRvICdzb3VyY2VzLnR4dCBKb2huIEphY29iIEppbmdsZWhlaW1lciBTY2htaWR0Jwor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3NvdXJjZXMudHh0IDxAKF9zb3VyY2VzKScgdG8gJ3NvdXJj
ZXMudHh0IEpvaG4gSmFjb2IgSmluZ2xlaGVpbWVyIFNjaG1pZHQnCitWQVJJQUJMRVM6IEZvdW5k
IG91dHB1dCAnc291cmNlcy50eHQnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAn
c291cmNlcy50eHQnIHRvICdzb3VyY2VzLnR4dCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8fChz
b3VyY2VzLnR4dCA8QChfc291cmNlcykpJyB0byAnc291cmNlcy50eHQnCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnYmFyJyB0byAnYmFyJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3RhcmdldCcgdG8g
J3RhcmdldCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdub25lJyB0byAnbm9uZScKK1ZBUklBQkxF
UzogRXhwYW5kaW5nICdleGNsdWRlJyB0byAnZXhjbHVkZScKK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICdTY2guKicgdG8gJ1NjaC4qJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2luY2x1ZGUnIHRvICdp
bmNsdWRlJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJy4qZHQnIHRvICcuKmR0JworVkFSSUFCTEVT
OiBFeHBhbmRpbmcgJ2V4Y2x1ZGUnIHRvICdleGNsdWRlJworVkFSSUFCTEVTOiBFeHBhbmRpbmcg
J0plci4qJyB0byAnSmVyLionCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnQXN0b3InIHRvICdBc3Rv
cicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICd0ZXN0X2FjdGlvbicgdG8gJ3Rlc3RfYWN0aW9uJwor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3B5dGhvbicgdG8gJ3B5dGhvbicKK1ZBUklBQkxFUzogRXhw
YW5kaW5nICdkdW1teS5weScgdG8gJ2R1bW15LnB5JworVkFSSUFCTEVTOiBNYXRjaGVzOiB7J2Nv
bnRlbnQnOiAnc291cmNlc19saXN0ZmlsZScsICdpc19hcnJheSc6ICcnLCAndHlwZSc6ICc8Jywg
J3JlcGxhY2UnOiAnPChzb3VyY2VzX2xpc3RmaWxlKSd9CitWQVJJQUJMRVM6IEV4cGFuZGluZyAn
c291cmNlc19saXN0ZmlsZScgdG8gJ3NvdXJjZXNfbGlzdGZpbGUnCitWQVJJQUJMRVM6IEZvdW5k
IG91dHB1dCAnc291cmNlcy50eHQnLCByZWN1cnNpbmcuCitWQVJJQUJMRVM6IEV4cGFuZGluZyAn
c291cmNlcy50eHQnIHRvICdzb3VyY2VzLnR4dCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8KHNv
dXJjZXNfbGlzdGZpbGUpJyB0byAnc291cmNlcy50eHQnCitWQVJJQUJMRVM6IE1hdGNoZXM6IHsn
Y29udGVudCc6ICdzb3VyY2VzX2xpc3RmaWxlJywgJ2lzX2FycmF5JzogJycsICd0eXBlJzogJzwn
LCAncmVwbGFjZSc6ICc8KHNvdXJjZXNfbGlzdGZpbGUpJ30KK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICdzb3VyY2VzX2xpc3RmaWxlJyB0byAnc291cmNlc19saXN0ZmlsZScKK1ZBUklBQkxFUzogRm91
bmQgb3V0cHV0ICdzb3VyY2VzLnR4dCcsIHJlY3Vyc2luZy4KK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICdzb3VyY2VzLnR4dCcgdG8gJ3NvdXJjZXMudHh0JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJzwo
c291cmNlc19saXN0ZmlsZSknIHRvICdzb3VyY2VzLnR4dCcKK1ZBUklBQkxFUzogTWF0Y2hlczog
eydjb250ZW50JzogJ2NhdCA8KHNvdXJjZXNfbGlzdGZpbGUnLCAnaXNfYXJyYXknOiAnJywgJ3R5
cGUnOiAnPCFAJywgJ3JlcGxhY2UnOiAnPCFAKGNhdCA8KHNvdXJjZXNfbGlzdGZpbGUpJ30KK1ZB
UklBQkxFUzogTWF0Y2hlczogeydjb250ZW50JzogJ3NvdXJjZXNfbGlzdGZpbGUnLCAnaXNfYXJy
YXknOiAnJywgJ3R5cGUnOiAnPCcsICdyZXBsYWNlJzogJzwoc291cmNlc19saXN0ZmlsZSknfQor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3NvdXJjZXNfbGlzdGZpbGUnIHRvICdzb3VyY2VzX2xpc3Rm
aWxlJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgJ2NhdCBzb3VyY2VzLnR4dCcsIHJlY3Vyc2lu
Zy4KK1ZBUklBQkxFUzogRXhwYW5kaW5nICdjYXQgc291cmNlcy50eHQnIHRvICdjYXQgc291cmNl
cy50eHQnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnY2F0IDwoc291cmNlc19saXN0ZmlsZSknIHRv
ICdjYXQgc291cmNlcy50eHQnCitWQVJJQUJMRVM6IEV4ZWN1dGluZyBjb21tYW5kICdjYXQgc291
cmNlcy50eHQnIGluIGRpcmVjdG9yeSAnc3JjJworVkFSSUFCTEVTOiBGb3VuZCBvdXRwdXQgWydK
b2huJywgJ0phY29iJywgJ0ppbmdsZWhlaW1lcicsICdTY2htaWR0J10sIHJlY3Vyc2luZy4KK1ZB
UklBQkxFUzogRXhwYW5kaW5nICdKb2huJyB0byAnSm9obicKK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICdKYWNvYicgdG8gJ0phY29iJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ0ppbmdsZWhlaW1lcicg
dG8gJ0ppbmdsZWhlaW1lcicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdTY2htaWR0JyB0byAnU2No
bWlkdCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICc8IUAoY2F0IDwoc291cmNlc19saXN0ZmlsZSkp
JyB0byBbJ0pvaG4nLCAnSmFjb2InLCAnSmluZ2xlaGVpbWVyJywgJ1NjaG1pZHQnXQorVkFSSUFC
TEVTOiBFeHBhbmRpbmcgJ2R1bW15X2ZvbycgdG8gJ2R1bW15X2ZvbycKK1ZBUklBQkxFUzogRXhw
YW5kaW5nICdKb2huJyB0byAnSm9obicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdKYWNvYicgdG8g
J0phY29iJworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ0FzdG9yJyB0byAnQXN0b3InCitWQVJJQUJM
RVM6IEV4cGFuZGluZyAnSmluZ2xlaGVpbWVyJyB0byAnSmluZ2xlaGVpbWVyJworVkFSSUFCTEVT
OiBFeHBhbmRpbmcgJ0plcm9tZScgdG8gJ0plcm9tZScKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdT
Y2htaWR0JyB0byAnU2NobWlkdCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdTY2h1bHR6JyB0byAn
U2NodWx0eicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdmaWxlbGlzdC5neXAnIHRvICdmaWxlbGlz
dC5neXAnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbmFtZXMudHh0JyB0byAnbmFtZXMudHh0Jwor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2ZvbycgdG8gJ2ZvbycKK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICd0YXJnZXQnIHRvICd0YXJnZXQnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbm9uZScgdG8gJ25v
bmUnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAndGVzdF9hY3Rpb24nIHRvICd0ZXN0X2FjdGlvbicK
K1ZBUklBQkxFUzogRXhwYW5kaW5nICdweXRob24nIHRvICdweXRob24nCitWQVJJQUJMRVM6IEV4
cGFuZGluZyAnZHVtbXkucHknIHRvICdkdW1teS5weScKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdu
YW1lcy50eHQnIHRvICduYW1lcy50eHQnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnbmFtZXMudHh0
JyB0byAnbmFtZXMudHh0JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ0pvaG4nIHRvICdKb2huJwor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJ0phY29iJyB0byAnSmFjb2InCitWQVJJQUJMRVM6IEV4cGFu
ZGluZyAnSmluZ2xlaGVpbWVyJyB0byAnSmluZ2xlaGVpbWVyJworVkFSSUFCTEVTOiBFeHBhbmRp
bmcgJ1NjaG1pZHQnIHRvICdTY2htaWR0JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2R1bW15X2Zv
bycgdG8gJ2R1bW15X2ZvbycKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdzb3VyY2VzLnR4dCcgdG8g
J3NvdXJjZXMudHh0JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ2JhcicgdG8gJ2JhcicKK1ZBUklB
QkxFUzogRXhwYW5kaW5nICd0YXJnZXQnIHRvICd0YXJnZXQnCitWQVJJQUJMRVM6IEV4cGFuZGlu
ZyAnbm9uZScgdG8gJ25vbmUnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnZXhjbHVkZScgdG8gJ2V4
Y2x1ZGUnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnU2NoLionIHRvICdTY2guKicKK1ZBUklBQkxF
UzogRXhwYW5kaW5nICdpbmNsdWRlJyB0byAnaW5jbHVkZScKK1ZBUklBQkxFUzogRXhwYW5kaW5n
ICcuKmR0JyB0byAnLipkdCcKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdleGNsdWRlJyB0byAnZXhj
bHVkZScKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdKZXIuKicgdG8gJ0plci4qJworVkFSSUFCTEVT
OiBFeHBhbmRpbmcgJ0FzdG9yJyB0byAnQXN0b3InCitWQVJJQUJMRVM6IEV4cGFuZGluZyAndGVz
dF9hY3Rpb24nIHRvICd0ZXN0X2FjdGlvbicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdweXRob24n
IHRvICdweXRob24nCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnZHVtbXkucHknIHRvICdkdW1teS5w
eScKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdzb3VyY2VzLnR4dCcgdG8gJ3NvdXJjZXMudHh0Jwor
VkFSSUFCTEVTOiBFeHBhbmRpbmcgJ3NvdXJjZXMudHh0JyB0byAnc291cmNlcy50eHQnCitWQVJJ
QUJMRVM6IEV4cGFuZGluZyAnSm9obicgdG8gJ0pvaG4nCitWQVJJQUJMRVM6IEV4cGFuZGluZyAn
SmFjb2InIHRvICdKYWNvYicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdKaW5nbGVoZWltZXInIHRv
ICdKaW5nbGVoZWltZXInCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnU2NobWlkdCcgdG8gJ1NjaG1p
ZHQnCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnZHVtbXlfZm9vJyB0byAnZHVtbXlfZm9vJworVkFS
SUFCTEVTOiBFeHBhbmRpbmcgJ0pvaG4nIHRvICdKb2huJworVkFSSUFCTEVTOiBFeHBhbmRpbmcg
J0phY29iJyB0byAnSmFjb2InCitWQVJJQUJMRVM6IEV4cGFuZGluZyAnQXN0b3InIHRvICdBc3Rv
cicKK1ZBUklBQkxFUzogRXhwYW5kaW5nICdKaW5nbGVoZWltZXInIHRvICdKaW5nbGVoZWltZXIn
CitWQVJJQUJMRVM6IEV4cGFuZGluZyAnSmVyb21lJyB0byAnSmVyb21lJworVkFSSUFCTEVTOiBF
eHBhbmRpbmcgJ1NjaG1pZHQnIHRvICdTY2htaWR0JworVkFSSUFCTEVTOiBFeHBhbmRpbmcgJ1Nj
aHVsdHonIHRvICdTY2h1bHR6JwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rl
c3QvdmFyaWFibGVzL2ZpbGVsaXN0L2ZpbGVsaXN0Lmd5cGQuZ29sZGVuIGIvU291cmNlL1RoaXJk
UGFydHkvZ3lwL3Rlc3QvdmFyaWFibGVzL2ZpbGVsaXN0L2ZpbGVsaXN0Lmd5cGQuZ29sZGVuCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA5ZDkxMTYwNDdlY2I4ZjQzZGIxM2ZhOTAwYTdlZjk5MGRjYzhjYTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYWJsZXMvZmlsZWxp
c3QvZmlsZWxpc3QuZ3lwZC5nb2xkZW4KQEAgLTAsMCArMSw0MyBAQAoreydfREVQVEgnOiAnLics
CisgJ2luY2x1ZGVkX2ZpbGVzJzogWydmaWxlbGlzdC5neXAnXSwKKyAndGFyZ2V0cyc6IFt7J2Fj
dGlvbnMnOiBbeydhY3Rpb24nOiBbJ3B5dGhvbicsICdkdW1teS5weScsICduYW1lcy50eHQnXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICd0ZXN0X2FjdGlvbics
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5wdXRzJzogWyduYW1lcy50eHQnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSm9obicsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdKYWNvYicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdKaW5nbGVoZWltZXInLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnU2NobWlkdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ291
dHB1dHMnOiBbJ2R1bW15X2ZvbyddfV0sCisgICAgICAgICAgICAgICdjb25maWd1cmF0aW9ucyc6
IHsnRGVmYXVsdCc6IHt9fSwKKyAgICAgICAgICAgICAgJ2RlZmF1bHRfY29uZmlndXJhdGlvbic6
ICdEZWZhdWx0JywKKyAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2ZvbycsCisgICAgICAg
ICAgICAgICd0b29sc2V0JzogJ3RhcmdldCcsCisgICAgICAgICAgICAgICd0eXBlJzogJ25vbmUn
LAorICAgICAgICAgICAgICAndmFyaWFibGVzJzogeyduYW1lc19saXN0ZmlsZSc6ICduYW1lcy50
eHQnfX0sCisgICAgICAgICAgICAgeydhY3Rpb25zJzogW3snYWN0aW9uJzogWydweXRob24nLCAn
ZHVtbXkucHknLCAnc291cmNlcy50eHQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdh
Y3Rpb25fbmFtZSc6ICd0ZXN0X2FjdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAn
aW5wdXRzJzogWydzb3VyY2VzLnR4dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdKb2huJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ph
Y29iJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ppbmdsZWhlaW1l
cicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTY2htaWR0J10sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0cHV0cyc6IFsnZHVtbXlfZm9vJ119XSwKKyAg
ICAgICAgICAgICAgJ2NvbmZpZ3VyYXRpb25zJzogeydEZWZhdWx0Jzoge319LAorICAgICAgICAg
ICAgICAnZGVmYXVsdF9jb25maWd1cmF0aW9uJzogJ0RlZmF1bHQnLAorICAgICAgICAgICAgICAn
c291cmNlcyc6IFsnSm9obicsICdKYWNvYicsICdKaW5nbGVoZWltZXInLCAnU2NobWlkdCddLAor
ICAgICAgICAgICAgICAnc291cmNlc19leGNsdWRlZCc6IFsnQXN0b3InLCAnSmVyb21lJywgJ1Nj
aHVsdHonXSwKKyAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2JhcicsCisgICAgICAgICAg
ICAgICd0b29sc2V0JzogJ3RhcmdldCcsCisgICAgICAgICAgICAgICd0eXBlJzogJ25vbmUnLAor
ICAgICAgICAgICAgICAndmFyaWFibGVzJzogeydzb3VyY2VzX2xpc3RmaWxlJzogJ3NvdXJjZXMu
dHh0J319XSwKKyAndmFyaWFibGVzJzogeyduYW1lcyc6IFsnSm9obicsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0phY29iJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQXN0b3InLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICdKaW5nbGVoZWltZXInLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICdKZXJvbWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTY2htaWR0JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAnU2NodWx0eiddLAorICAgICAgICAgICAgICAgJ25h
bWVzISc6IFsnQXN0b3InXSwKKyAgICAgICAgICAgICAgICduYW1lcy8nOiBbWydleGNsdWRlJywg
J1NjaC4qJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsnaW5jbHVkZScsICcuKmR0J10s
CisgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdKZXIuKiddXX19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYWJsZXMvZmlsZWxpc3QvZ3lw
dGVzdC1maWxlbGlzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhYmxlcy9m
aWxlbGlzdC9neXB0ZXN0LWZpbGVsaXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmYjBkOWE5MzMxOWEyYTU2
OTM0MWQ1MGNlYjdkM2U5MmY1OWUzZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9neXAvdGVzdC92YXJpYWJsZXMvZmlsZWxpc3QvZ3lwdGVzdC1maWxlbGlzdC5weQpAQCAt
MCwwICsxLDU1IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisiIiIKK1Rlc3QgdmFyaWFibGUgZXhwYW5zaW9u
IG9mICc8fChsaXN0LnR4dCAuLi4pJyBzeW50YXggY29tbWFuZHMuCisiIiIKKworaW1wb3J0IG9z
CitpbXBvcnQgc3lzCisKK2ltcG9ydCBUZXN0R3lwCisKK3Rlc3QgPSBUZXN0R3lwLlRlc3RHeXAo
Zm9ybWF0PSdneXBkJykKKworZXhwZWN0ID0gdGVzdC5yZWFkKCdmaWxlbGlzdC5neXAuc3Rkb3V0
JykKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICBleHBlY3QgPSBleHBlY3QucmVwbGFj
ZSgnLycsIHInXFwnKS5yZXBsYWNlKCdccicsICcnKQorCisjIFNldCAkSE9NRSBzbyB0aGF0IGd5
cCBkb2Vzbid0IHJlYWQgdGhlIHVzZXIncyBhY3R1YWwKKyMgfi8uZ3lwL2luY2x1ZGUuZ3lwaSBm
aWxlLCB3aGljaCBtYXkgY29udGFpbiB2YXJpYWJsZXMKKyMgYW5kIG90aGVyIHNldHRpbmdzIHRo
YXQgd291bGQgY2hhbmdlIHRoZSBvdXRwdXQuCitvcy5lbnZpcm9uWydIT01FJ10gPSB0ZXN0Lndv
cmtwYXRoKCkKKwordGVzdC5ydW5fZ3lwKCdzcmMvZmlsZWxpc3QuZ3lwJywKKyAgICAgICAgICAg
ICAnLS1kZWJ1ZycsICd2YXJpYWJsZXMnLCAnLS1kZWJ1ZycsICdnZW5lcmFsJywKKyAgICAgICAg
ICAgICBzdGRvdXQ9ZXhwZWN0KQorCisjIFZlcmlmeSB0aGUgZmlsZWxpc3QuZ3lwZCBhZ2FpbnN0
IHRoZSBjaGVja2VkLWluIGV4cGVjdGVkIGNvbnRlbnRzLgorIworIyBOb3JtYWxseSwgd2Ugc2hv
dWxkIGNhbm9uaWNhbGl6ZSBsaW5lIGVuZGluZ3MgaW4gdGhlIGV4cGVjdGVkCisjIGNvbnRlbnRz
IGZpbGUgc2V0dGluZyB0aGUgU3VidmVyc2lvbiBzdm46ZW9sLXN0eWxlIHRvIG5hdGl2ZSwKKyMg
YnV0IHRoYXQgd291bGQgc3RpbGwgZmFpbCBpZiBtdWx0aXBsZSBzeXN0ZW1zIGFyZSBzaGFyaW5n
IGEgc2luZ2xlCisjIHdvcmtzcGFjZSBvbiBhIG5ldHdvcmstbW91bnRlZCBmaWxlIHN5c3RlbS4g
IENvbnNlcXVlbnRseSwgd2UKKyMgbWFzc2FnZSB0aGUgV2luZG93cyBsaW5lIGVuZGluZ3MgKCdc
clxuJykgaW4gdGhlIG91dHB1dCB0byB0aGUKKyMgY2hlY2tlZC1pbiBVTklYIGVuZGluZ3MgKCdc
bicpLgorCitjb250ZW50cyA9IHRlc3QucmVhZCgnc3JjL2ZpbGVsaXN0Lmd5cGQnKS5yZXBsYWNl
KAorICAgICdccicsICcnKS5yZXBsYWNlKCdcXFxcJywgJy8nKQorZXhwZWN0ID0gdGVzdC5yZWFk
KCdmaWxlbGlzdC5neXBkLmdvbGRlbicpLnJlcGxhY2UoJ1xyJywgJycpCitpZiBub3QgdGVzdC5t
YXRjaChjb250ZW50cywgZXhwZWN0KToKKyAgcHJpbnQgIlVuZXhwZWN0ZWQgY29udGVudHMgb2Yg
YHNyYy9maWxlbGlzdC5neXBkJyIKKyAgdGVzdC5kaWZmKGV4cGVjdCwgY29udGVudHMsICdzcmMv
ZmlsZWxpc3QuZ3lwZCAnKQorICB0ZXN0LmZhaWxfdGVzdCgpCisKK2NvbnRlbnRzID0gdGVzdC5y
ZWFkKCdzcmMvbmFtZXMudHh0JykKK2V4cGVjdCA9ICdKb2huXG5KYWNvYlxuSmluZ2xlaGVpbWVy
XG5TY2htaWR0XG4nCitpZiBub3QgdGVzdC5tYXRjaChjb250ZW50cywgZXhwZWN0KToKKyAgcHJp
bnQgIlVuZXhwZWN0ZWQgY29udGVudHMgb2YgYHNyYy9uYW1lcy50eHQnIgorICB0ZXN0LmRpZmYo
ZXhwZWN0LCBjb250ZW50cywgJ3NyYy9uYW1lcy50eHQgJykKKyAgdGVzdC5mYWlsX3Rlc3QoKQor
Cit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC92YXJpYWJsZXMvZmlsZWxpc3Qvc3JjL2ZpbGVsaXN0Lmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d5cC90ZXN0L3ZhcmlhYmxlcy9maWxlbGlzdC9zcmMvZmlsZWxpc3QuZ3lwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRmNDhlYjNlNGE2Y2E4MjJjYzA3MTA4NWQzYzkyOTAyYzgwYTYxMmYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYWJsZXMvZmlsZWxpc3Qvc3JjL2Zp
bGVsaXN0Lmd5cApAQCAtMCwwICsxLDkzIEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKKyMgVGhpcyBpcyBhIHRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgPHwo
Zm9vLnR4dCBhIGIgYykgZ2VuZXJhdGVzCisjIGEgcHJlLWNhbGN1bGF0ZWQgZmlsZSBsaXN0IGF0
IGd5cCB0aW1lIGFuZCByZXR1cm5zIGZvby50eHQuCisjIFRoaXMgZmVhdHVyZSBpcyB1c2VmdWwg
dG8gd29yayBhcm91bmQgbGltaXRzIGluIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHRoYXQKKyMg
Y2FuIGJlIHBhc3NlZCB0byBydWxlL2FjdGlvbi4KKworeworICAndmFyaWFibGVzJzogeworICAg
ICduYW1lcyc6IFsKKyAgICAgICdKb2huJywKKyAgICAgICdKYWNvYicsCisgICAgICAnQXN0b3In
LAorICAgICAgJ0ppbmdsZWhlaW1lcicsCisgICAgICAnSmVyb21lJywKKyAgICAgICdTY2htaWR0
JywKKyAgICAgICdTY2h1bHR6JywKKyAgICBdLAorICAgICduYW1lcyEnOiBbCisgICAgICAnQXN0
b3InLAorICAgIF0sCisgICAgJ25hbWVzLyc6IFsKKyAgICAgIFsnZXhjbHVkZScsICdTY2guKidd
LAorICAgICAgWydpbmNsdWRlJywgJy4qZHQnXSwKKyAgICAgIFsnZXhjbHVkZScsICdKZXIuKidd
LAorICAgIF0sCisgIH0sCisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFt
ZSc6ICdmb28nLAorICAgICAgJ3R5cGUnOiAnbm9uZScsCisgICAgICAndmFyaWFibGVzJzogewor
ICAgICAgICAnbmFtZXNfbGlzdGZpbGUnOiAnPHwobmFtZXMudHh0IDxAKG5hbWVzKSknLAorICAg
ICAgfSwKKyAgICAgICdhY3Rpb25zJzogWworICAgICAgICB7CisgICAgICAgICAgJ2FjdGlvbl9u
YW1lJzogJ3Rlc3RfYWN0aW9uJywKKyAgICAgICAgICAnaW5wdXRzJyA6IFsKKyAgICAgICAgICAg
ICc8KG5hbWVzX2xpc3RmaWxlKScsCisgICAgICAgICAgICAnPCFAKGNhdCA8KG5hbWVzX2xpc3Rm
aWxlKSknLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ291dHB1dHMnOiBbCisgICAgICAgICAg
ICAnZHVtbXlfZm9vJywKKyAgICAgICAgICBdLAorICAgICAgICAgICdhY3Rpb24nOiBbCisgICAg
ICAgICAgICAncHl0aG9uJywgJ2R1bW15LnB5JywgJzwobmFtZXNfbGlzdGZpbGUpJywKKyAgICAg
ICAgICBdLAorICAgICAgICB9LAorICAgICAgXSwKKyAgICB9LAorICAgIHsKKyAgICAgICd0YXJn
ZXRfbmFtZSc6ICdiYXInLAorICAgICAgJ3R5cGUnOiAnbm9uZScsCisgICAgICAnc291cmNlcyc6
IFsKKyAgICAgICAgJ0pvaG4nLAorICAgICAgICAnSmFjb2InLAorICAgICAgICAnQXN0b3InLAor
ICAgICAgICAnSmluZ2xlaGVpbWVyJywKKyAgICAgICAgJ0plcm9tZScsCisgICAgICAgICdTY2ht
aWR0JywKKyAgICAgICAgJ1NjaHVsdHonLAorICAgICAgXSwKKyAgICAgICdzb3VyY2VzISc6IFsK
KyAgICAgICAgJ0FzdG9yJywKKyAgICAgIF0sCisgICAgICAnc291cmNlcy8nOiBbCisgICAgICAg
IFsnZXhjbHVkZScsICdTY2guKiddLAorICAgICAgICBbJ2luY2x1ZGUnLCAnLipkdCddLAorICAg
ICAgICBbJ2V4Y2x1ZGUnLCAnSmVyLionXSwKKyAgICAgIF0sCisgICAgICAndmFyaWFibGVzJzog
eworICAgICAgICAnc291cmNlc19saXN0ZmlsZSc6ICc8fChzb3VyY2VzLnR4dCA8QChfc291cmNl
cykpJywKKyAgICAgIH0sCisgICAgICAnYWN0aW9ucyc6IFsKKyAgICAgICAgeworICAgICAgICAg
ICdhY3Rpb25fbmFtZSc6ICd0ZXN0X2FjdGlvbicsCisgICAgICAgICAgJ2lucHV0cycgOiBbCisg
ICAgICAgICAgICAnPChzb3VyY2VzX2xpc3RmaWxlKScsCisgICAgICAgICAgICAnPCFAKGNhdCA8
KHNvdXJjZXNfbGlzdGZpbGUpKScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0cyc6
IFsKKyAgICAgICAgICAgICdkdW1teV9mb28nLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ2Fj
dGlvbic6IFsKKyAgICAgICAgICAgICdweXRob24nLCAnZHVtbXkucHknLCAnPChzb3VyY2VzX2xp
c3RmaWxlKScsCisgICAgICAgICAgXSwKKyAgICAgICAgfSwKKyAgICAgIF0sCisgICAgfSwKKyAg
XSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhYmxlcy9m
aWxlbGlzdC91cGRhdGVfZ29sZGVuIGIvU291cmNlL1RoaXJkUGFydHkvZ3lwL3Rlc3QvdmFyaWFi
bGVzL2ZpbGVsaXN0L3VwZGF0ZV9nb2xkZW4KbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRkNDg5YTM0MjMyMTM1OWE4
YjU0NDVkMGU2YzlkZDBiMmQzOWY1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d5cC90ZXN0L3ZhcmlhYmxlcy9maWxlbGlzdC91cGRhdGVfZ29sZGVuCkBAIC0wLDAgKzEs
OCBAQAorIyEvYmluL2Jhc2gKKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorCitweXRob24gLi4vLi4vLi4vZ3lwIC0tZGVidWcgdmFyaWFibGVzIC0tZGVidWcg
Z2VuZXJhbCAtLWZvcm1hdCBneXBkIC0tZGVwdGggLiBzcmMvZmlsZWxpc3QuZ3lwID4gZmlsZWxp
c3QuZ3lwLnN0ZG91dAorY3AgLWYgc3JjL2ZpbGVsaXN0Lmd5cGQgZmlsZWxpc3QuZ3lwZC5nb2xk
ZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhbnRzL2d5cHRl
c3QtdmFyaWFudHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYW50cy9neXB0
ZXN0LXZhcmlhbnRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlMjQ1NWY2NjNmOTRlZjVhYjI2MTYwNmYxNTYz
MGQyMTlhNjY0NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVz
dC92YXJpYW50cy9neXB0ZXN0LXZhcmlhbnRzLnB5CkBAIC0wLDAgKzEsNDUgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisKKyIiIgorVmVyaWZ5IGhhbmRsaW5nIG9mIGJ1aWxkIHZhcmlhbnRzLgorCitUT0RPOiAg
UmlnaHQgbm93LCBvbmx5IHRoZSBTQ29ucyBnZW5lcmF0b3Igc3VwcG9ydHMgdGhpcywgc28gdGhl
Cit0ZXN0IGNhc2UgaXMgU0NvbnMtc3BlY2lmaWMuICBJbiBwYXJ0aWN1bGFyLCBpdCByZWxpc2Ug
b24gU0NvbnMnCithYmlsaXR5IHRvIHJlYnVpbGQgaW4gcmVzcG9uc2UgdG8gY2hhbmdlcyBvbiB0
aGUgY29tbWFuZCBsaW5lLiAgSXQKK21heSBiZSBzaW1wbGVyIHRvIGp1c3QgZHJvcCB0aGlzIGZl
YXR1cmUgaWYgdGhlIG90aGVyIGdlbmVyYXRvcnMKK2Nhbid0IGJlIG1hZGUgdG8gYmVoYXZlIHRo
ZSBzYW1lIHdheS4KKyIiIgorCitpbXBvcnQgVGVzdEd5cAorCit0ZXN0ID0gVGVzdEd5cC5UZXN0
R3lwKGZvcm1hdHM9WydzY29ucyddKQorCit0ZXN0LnJ1bl9neXAoJ3ZhcmlhbnRzLmd5cCcsIGNo
ZGlyPSdzcmMnKQorCit0ZXN0LnJlbG9jYXRlKCdzcmMnLCAncmVsb2NhdGUvc3JjJykKKwordGVz
dC5idWlsZCgndmFyaWFudHMuZ3lwJywgY2hkaXI9J3JlbG9jYXRlL3NyYycpCisKK3Rlc3QucnVu
X2J1aWx0X2V4ZWN1dGFibGUoJ3ZhcmlhbnRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hkaXI9J3JlbG9jYXRlL3NyYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0i
SGVsbG8sIHdvcmxkIVxuIikKKwordGVzdC5zbGVlcCgpCit0ZXN0LmJ1aWxkKCd2YXJpYW50cy5n
eXAnLCAnVkFSSUFOVDE9MScsIGNoZGlyPSdyZWxvY2F0ZS9zcmMnKQorCit0ZXN0LnJ1bl9idWls
dF9leGVjdXRhYmxlKCd2YXJpYW50cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZGly
PSdyZWxvY2F0ZS9zcmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9IkhlbGxv
IGZyb20gVkFSSUFOVDFcbiIpCisKK3Rlc3Quc2xlZXAoKQordGVzdC5idWlsZCgndmFyaWFudHMu
Z3lwJywgJ1ZBUklBTlQyPTEnLCBjaGRpcj0ncmVsb2NhdGUvc3JjJykKKwordGVzdC5ydW5fYnVp
bHRfZXhlY3V0YWJsZSgndmFyaWFudHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjaGRp
cj0ncmVsb2NhdGUvc3JjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSJIZWxs
byBmcm9tIFZBUklBTlQyXG4iKQorCit0ZXN0LnBhc3NfdGVzdCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYW50cy9zcmMvdmFyaWFudHMuYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhbnRzL3NyYy92YXJpYW50cy5jCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMw
MThlNDBkZjJjYjViOTVjODYwZDYxYTk5YTc3N2Y3NmYxZjQ4ZTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdGVzdC92YXJpYW50cy9zcmMvdmFyaWFudHMuYwpAQCAt
MCwwICsxLDEzIEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKworaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKmFyZ3ZbXSkKK3sKKyNpZiBkZWZpbmVkKFZBUklBTlQxKQorICBwcmludGYoIkhlbGxvIGZy
b20gVkFSSUFOVDFcbiIpOworI2VsaWYgIGRlZmluZWQoVkFSSUFOVDIpCisgIHByaW50ZigiSGVs
bG8gZnJvbSBWQVJJQU5UMlxuIik7CisjZWxzZQorICBwcmludGYoIkhlbGxvLCB3b3JsZCFcbiIp
OworI2VuZGlmCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3lwL3Rlc3QvdmFyaWFudHMvc3JjL3ZhcmlhbnRzLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5
cC90ZXN0L3ZhcmlhbnRzL3NyYy92YXJpYW50cy5neXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDMwNWNhNzQ3MzE4
OGQ1Yzk4ZjgyMGRhZTFmNzc4NDAxNDUyODk4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90ZXN0L3ZhcmlhbnRzL3NyYy92YXJpYW50cy5neXAKQEAgLTAsMCArMSwy
NyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7Cisg
ICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICd2YXJpYW50cycsCisg
ICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAn
dmFyaWFudHMuYycsCisgICAgICBdLAorICAgICAgJ3ZhcmlhbnRzJzogeworICAgICAgICAndmFy
aWFudDEnIDogeworICAgICAgICAgICdkZWZpbmVzJzogWworICAgICAgICAgICAgJ1ZBUklBTlQx
JywKKyAgICAgICAgICBdLAorICAgICAgICB9LAorICAgICAgICAndmFyaWFudDInIDogeworICAg
ICAgICAgICdkZWZpbmVzJzogWworICAgICAgICAgICAgJ1ZBUklBTlQyJywKKyAgICAgICAgICBd
LAorICAgICAgICB9LAorICAgICAgfSwKKyAgICB9LAorICBdLAorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3lwL3Rvb2xzL1JFQURNRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90
b29scy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzEyZTRlZmJiN2EwNjI4MGYzM2ZmZDY5OWFhYWE5NTE4
ODJhOTQzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90b29scy9S
RUFETUUKQEAgLTAsMCArMSwxNSBAQAorcHJldHR5X3ZjcHJvajoKKyAgVXNhZ2U6IHByZXR0eV92
Y3Byb2oucHkgImM6XHBhdGhcdG9cdmNwcm9qLnZjcHJvaiIgW2tleTE9dmFsdWUxXSBba2V5Mj12
YWx1ZTJdCisKKyAgVGhleSBrZXkvdmFsdWUgcGFpciBhcmUgdXNlZCB0byByZXNvbHZlIHZzcHJv
cHMgbmFtZS4KKworICBGb3IgZXhhbXBsZSwgaWYgSSB3YW50IHRvIGRpZmYgdGhlIGJhc2UudmNw
cm9qIHByb2plY3Q6CisKKyAgcHJldHR5X3ZjcHJvai5weSB6OlxkZXZcc3JjLWNocm9tZVxzcmNc
YmFzZVxidWlsZFxiYXNlLnZjcHJvaiAiJChTb2x1dGlvbkRpcik9ejpcZGV2XHNyYy1jaHJvbWVc
c3JjXGNocm9tZVxcIiAiJChDSFJPTUlVTV9CVUlMRCk9IiAiJChDSFJPTUVfQlVJTERfVFlQRSk9
IiA+IG9yaWduYWwudHh0CisgIHByZXR0eV92Y3Byb2oucHkgejpcZGV2XHNyYy1jaHJvbWVcc3Jj
XGJhc2VcYmFzZV9neXAudmNwcm9qICIkKFNvbHV0aW9uRGlyKT16OlxkZXZcc3JjLWNocm9tZVxz
cmNcY2hyb21lXFwiICIkKENIUk9NSVVNX0JVSUxEKT0iICIkKENIUk9NRV9CVUlMRF9UWVBFKT0i
ID4gZ3lwLnR4dAorCisgIEFuZCB5b3UgY2FuIHVzZSB5b3VyIGZhdm9yaXRlIGRpZmYgdG9vbCB0
byBzZWUgdGhlIGNoYW5nZXMuCisKKyAgTm90ZTogSW4gdGhlIGNhc2Ugb2YgYmFzZS52Y3Byb2os
IHRoZSBvcmlnaW5hbCB2Y3Byb2ogaXMgb25lIGxldmVsIHVwIHRoZSBnZW5lcmF0ZWQgb25lLgor
ICAgICAgICBJIHN1Z2dlc3QgeW91IGRvIGEgc2VhcmNoIGFuZCByZXBsYWNlIGZvciAnIi4uXCcg
YW5kIHJlcGxhY2UgaXQgd2l0aCAnIicgaW4gb3JpZ2luYWwudHh0CisgICAgICAgIGJlZm9yZSB5
b3UgcGVyZm9ybSB0aGUgZGlmZi4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdG9vbHMvcHJldHR5X2d5cC5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d5cC90b29scy9wcmV0dHlfZ3lwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0Yzc5MDEyZWUx
YWI4OTdkY2VlMmFkNGI5NTg2NThiNTFkYzBiYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9neXAvdG9vbHMvcHJldHR5X2d5cC5weQpAQCAtMCwwICsxLDE0MiBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uDQorIyBDb3B5cmlnaHQgKGMpIDIwMDkgVGhlIENocm9taXVtIEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorIyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLg0KKw0KKyMgVGhpcyBmaWxlIHByZXR0eS1wcmludHMgdGhlIGNv
bnRlbnRzIG9mIGEgR1lQIGZpbGUuDQorDQoraW1wb3J0IHN5cw0KK2ltcG9ydCByZQ0KKw0KK2lu
cHV0ID0gW10NCitpZiBsZW4oc3lzLmFyZ3YpID4gMToNCisgIGlucHV0X2ZpbGUgPSBvcGVuKHN5
cy5hcmd2WzFdKQ0KKyAgaW5wdXQgPSBpbnB1dF9maWxlLnJlYWQoKS5zcGxpdGxpbmVzKCkNCisg
IGlucHV0X2ZpbGUuY2xvc2UoKQ0KK2Vsc2U6DQorICBpbnB1dCA9IHN5cy5zdGRpbi5yZWFkKCku
c3BsaXRsaW5lcygpDQorDQorIyBUaGlzIGlzIHVzZWQgdG8gcmVtb3ZlIGNvbW1lbnRzIHdoZW4g
d2UncmUgY291bnRpbmcgYnJhY2VzLg0KK2NvbW1lbnRfcmUgPSByZS5jb21waWxlKHInXHMqIy4q
JykNCisNCisjIFRoaXMgaXMgdXNlZCB0byByZW1vdmUgcXVvdGVkIHN0cmluZ3Mgd2hlbiB3ZSdy
ZSBjb3VudGluZyBicmFjZXMuDQorIyBJdCB0YWtlcyBpbnRvIGFjY291bnQgcXVvdGVkIHF1b3Rl
cywgYW5kIG1ha2VzIHN1cmUgdGhhdCB0aGUgcXVvdGVzDQorIyBtYXRjaC4NCisjIE5PVEU6IEl0
IGRvZXMgbm90IGhhbmRsZSBxdW90ZXMgdGhhdCBzcGFuIG1vcmUgdGhhbiBvbmUgbGluZSwgb3IN
CisjIGNhc2VzIHdoZXJlIGFuIGVzY2FwZWQgcXVvdGUgaXMgcHJlY2VlZGVkIGJ5IGFuIGVzY2Fw
ZWQgYmFja3NsYXNoLg0KK3F1b3RlX3JlX3N0ciA9IHInKD9QPHE+W1wnIl0pKC4qPykoPzwhW15c
XF1bXFxdKSg/UD1xKScNCitxdW90ZV9yZSA9IHJlLmNvbXBpbGUocXVvdGVfcmVfc3RyKQ0KKw0K
K2RlZiBjb21tZW50X3JlcGxhY2UobWF0Y2hvYmopOg0KKyAgcmV0dXJuIG1hdGNob2JqLmdyb3Vw
KDEpICsgbWF0Y2hvYmouZ3JvdXAoMikgKyAnIycgKiBsZW4obWF0Y2hvYmouZ3JvdXAoMykpDQor
DQorZGVmIG1hc2tfY29tbWVudHMoaW5wdXQpOg0KKyAgIyBUaGlzIGlzIHVzZWQgdG8gbWFzayB0
aGUgcXVvdGVkIHN0cmluZ3Mgc28gd2Ugc2tpcCBicmFjZXMgaW5zaWRlDQorICAjIHF1b3RlZCBz
dHJpbmdzLg0KKyAgc2VhcmNoX3JlID0gcmUuY29tcGlsZShyJyguKj8pKCMpKC4qKScpDQorICBy
ZXR1cm4gW3NlYXJjaF9yZS5zdWIoY29tbWVudF9yZXBsYWNlLCBsaW5lKSBmb3IgbGluZSBpbiBp
bnB1dF0NCisNCitkZWYgcXVvdGVfcmVwbGFjZShtYXRjaG9iaik6DQorICByZXR1cm4gIiVzJXMl
cyVzIiAlIChtYXRjaG9iai5ncm91cCgxKSwNCisgICAgICAgICAgICAgICAgICAgICAgIG1hdGNo
b2JqLmdyb3VwKDIpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgJ3gnKmxlbihtYXRjaG9iai5n
cm91cCgzKSksDQorICAgICAgICAgICAgICAgICAgICAgICBtYXRjaG9iai5ncm91cCgyKSkNCisN
CitkZWYgbWFza19xdW90ZXMoaW5wdXQpOg0KKyAgIyBUaGlzIGlzIHVzZWQgdG8gbWFzayB0aGUg
cXVvdGVkIHN0cmluZ3Mgc28gd2Ugc2tpcCBicmFjZXMgaW5zaWRlDQorICAjIHF1b3RlZCBzdHJp
bmdzLg0KKyAgc2VhcmNoX3JlID0gcmUuY29tcGlsZShyJyguKj8pJyArIHF1b3RlX3JlX3N0cikN
CisgIHJldHVybiBbc2VhcmNoX3JlLnN1YihxdW90ZV9yZXBsYWNlLCBsaW5lKSBmb3IgbGluZSBp
biBpbnB1dF0NCisNCitkZWYgZG9fc3BsaXQoaW5wdXQsIG1hc2tlZF9pbnB1dCwgc2VhcmNoX3Jl
KToNCisgIG91dHB1dCA9IFtdDQorICBtYXNrX291dHB1dCA9IFtdDQorICBmb3IgKGxpbmUsIG1h
c2tlZF9saW5lKSBpbiB6aXAoaW5wdXQsIG1hc2tlZF9pbnB1dCk6DQorICAgIG0gPSBzZWFyY2hf
cmUubWF0Y2gobWFza2VkX2xpbmUpDQorICAgIHdoaWxlIG06DQorICAgICAgc3BsaXQgPSBsZW4o
bS5ncm91cCgxKSkNCisgICAgICBsaW5lID0gbGluZVs6c3BsaXRdICsgcidcbicgKyBsaW5lW3Nw
bGl0Ol0NCisgICAgICBtYXNrZWRfbGluZSA9IG1hc2tlZF9saW5lWzpzcGxpdF0gKyByJ1xuJyAr
IG1hc2tlZF9saW5lW3NwbGl0Ol0NCisgICAgICBtID0gc2VhcmNoX3JlLm1hdGNoKG1hc2tlZF9s
aW5lKQ0KKyAgICBvdXRwdXQuZXh0ZW5kKGxpbmUuc3BsaXQocidcbicpKQ0KKyAgICBtYXNrX291
dHB1dC5leHRlbmQobWFza2VkX2xpbmUuc3BsaXQocidcbicpKQ0KKyAgcmV0dXJuIChvdXRwdXQs
IG1hc2tfb3V0cHV0KQ0KKw0KKyMgVGhpcyBtYXNrcyBvdXQgdGhlIHF1b3RlcyBhbmQgY29tbWVu
dHMsIGFuZCB0aGVuIHNwbGl0cyBhcHByb3ByaWF0ZQ0KKyMgbGluZXMgKGxpbmVzIHRoYXQgbWF0
Y2hlIHRoZSBkb3VibGVfKl9icmFjZSByZSdzIGFib3ZlKSBiZWZvcmUNCisjIGluZGVudGluZyB0
aGVtIGJlbG93Lg0KK2RlZiBzcGxpdF9kb3VibGVfYnJhY2VzKGlucHV0KToNCisgICMgVGhlc2Ug
YXJlIHVzZWQgdG8gc3BsaXQgbGluZXMgd2hpY2ggaGF2ZSBtdWx0aXBsZSBicmFjZXMgb24gdGhl
bSwgc28NCisgICMgdGhhdCB0aGUgaW5kZW50YXRpb24gbG9va3MgcHJldHRpZXIgd2hlbiBhbGwg
bGFpZCBvdXQgKGUuZy4gY2xvc2luZw0KKyAgIyBicmFjZXMgbWFrZSBhIG5pY2UgZGlhZ29uYWwg
bGluZSkuDQorICBkb3VibGVfb3Blbl9icmFjZV9yZSA9IHJlLmNvbXBpbGUocicoLio/W1xbXHtc
KCxdKShccyopKFtcW1x7XChdKScpDQorICBkb3VibGVfY2xvc2VfYnJhY2VfcmUgPSByZS5jb21w
aWxlKHInKC4qP1tcXVx9XCldLD8pKFxzKikoW1xdXH1cKV0pJykNCisNCisgIG1hc2tlZF9pbnB1
dCA9IG1hc2tfcXVvdGVzKGlucHV0KQ0KKyAgbWFza2VkX2lucHV0ID0gbWFza19jb21tZW50cyht
YXNrZWRfaW5wdXQpDQorDQorICAob3V0cHV0LCBtYXNrX291dHB1dCkgPSBkb19zcGxpdChpbnB1
dCwgbWFza2VkX2lucHV0LCBkb3VibGVfb3Blbl9icmFjZV9yZSkNCisgIChvdXRwdXQsIG1hc2tf
b3V0cHV0KSA9IGRvX3NwbGl0KG91dHB1dCwgbWFza19vdXRwdXQsIGRvdWJsZV9jbG9zZV9icmFj
ZV9yZSkNCisNCisgIHJldHVybiBvdXRwdXQNCisNCisjIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhl
IG51bWJlciBvZiBicmFjZXMgb24gYSBnaXZlbiBsaW5lIGFuZCByZXR1cm5zDQorIyB0aGUgcmVz
dWx0LiAgSXQgc3RhcnRzIGF0IHplcm8gYW5kIHN1YnRyYWN0cyBmb3IgY2xvc2VkIGJyYWNlcywg
YW5kDQorIyBhZGRzIGZvciBvcGVuIGJyYWNlcy4NCitkZWYgY291bnRfYnJhY2VzKGxpbmUpOg0K
KyAgb3Blbl9icmFjZXMgPSBbJ1snLCAnKCcsICd7J10NCisgIGNsb3NlX2JyYWNlcyA9IFsnXScs
ICcpJywgJ30nXQ0KKyAgY2xvc2luZ19wcmVmaXhfcmUgPSByZS5jb21waWxlKHInKC4qP1teXHNc
XVx9XCldKy4qPykoW1xdXH1cKV0sPylccyokJykNCisgIGNudCA9IDANCisgIHN0cmlwbGluZSA9
IGNvbW1lbnRfcmUuc3ViKHInJywgbGluZSkNCisgIHN0cmlwbGluZSA9IHF1b3RlX3JlLnN1Yihy
IicnIiwgc3RyaXBsaW5lKQ0KKyAgZm9yIGNoYXIgaW4gc3RyaXBsaW5lOg0KKyAgICBmb3IgYnJh
Y2UgaW4gb3Blbl9icmFjZXM6DQorICAgICAgaWYgY2hhciA9PSBicmFjZToNCisgICAgICAgIGNu
dCArPSAxDQorICAgIGZvciBicmFjZSBpbiBjbG9zZV9icmFjZXM6DQorICAgICAgaWYgY2hhciA9
PSBicmFjZToNCisgICAgICAgIGNudCAtPSAxDQorDQorICBhZnRlciA9IEZhbHNlDQorICBpZiBj
bnQgPiAwOg0KKyAgICBhZnRlciA9IFRydWUNCisNCisgICMgVGhpcyBjYXRjaGVzIHRoZSBzcGVj
aWFsIGNhc2Ugb2YgYSBjbG9zaW5nIGJyYWNlIGhhdmluZyBzb21ldGhpbmcNCisgICMgb3RoZXIg
dGhhbiBqdXN0IHdoaXRlc3BhY2UgYWhlYWQgb2YgaXQgLS0gd2UgZG9uJ3Qgd2FudCB0bw0KKyAg
IyB1bmluZGVudCB0aGF0IHVudGlsIGFmdGVyIHRoaXMgbGluZSBpcyBwcmludGVkIHNvIGl0IHN0
YXlzIHdpdGgNCisgICMgdGhlIHByZXZpb3VzIGluZGVudGF0aW9uIGxldmVsLg0KKyAgaWYgY250
IDwgMCBhbmQgY2xvc2luZ19wcmVmaXhfcmUubWF0Y2goc3RyaXBsaW5lKToNCisgICAgYWZ0ZXIg
PSBUcnVlDQorICByZXR1cm4gKGNudCwgYWZ0ZXIpDQorDQorIyBUaGlzIGRvZXMgdGhlIG1haW4g
d29yayBvZiBpbmRlbnRpbmcgdGhlIGlucHV0IGJhc2VkIG9uIHRoZSBicmFjZSBjb3VudHMuDQor
ZGVmIHByZXR0eXByaW50X2lucHV0KGxpbmVzKToNCisgIGluZGVudCA9IDANCisgIGJhc2ljX29m
ZnNldCA9IDINCisgIGxhc3RfbGluZSA9ICIiDQorICBmb3IgbGluZSBpbiBsaW5lczoNCisgICAg
aWYgY29tbWVudF9yZS5tYXRjaChsaW5lKToNCisgICAgICBwcmludCBsaW5lDQorICAgIGVsc2U6
DQorICAgICAgbGluZSA9IGxpbmUuc3RyaXAoJ1xyXG5cdCAnKSAgIyBPdGhlcndpc2UgZG9lc24n
dCBzdHJpcCBcciBvbiBVbml4Lg0KKyAgICAgIGlmIGxlbihsaW5lKSA+IDA6DQorICAgICAgICAo
YnJhY2VfZGlmZiwgYWZ0ZXIpID0gY291bnRfYnJhY2VzKGxpbmUpDQorICAgICAgICBpZiBicmFj
ZV9kaWZmICE9IDA6DQorICAgICAgICAgIGlmIGFmdGVyOg0KKyAgICAgICAgICAgIHByaW50ICIg
IiAqIChiYXNpY19vZmZzZXQgKiBpbmRlbnQpICsgbGluZQ0KKyAgICAgICAgICAgIGluZGVudCAr
PSBicmFjZV9kaWZmDQorICAgICAgICAgIGVsc2U6DQorICAgICAgICAgICAgaW5kZW50ICs9IGJy
YWNlX2RpZmYNCisgICAgICAgICAgICBwcmludCAiICIgKiAoYmFzaWNfb2Zmc2V0ICogaW5kZW50
KSArIGxpbmUNCisgICAgICAgIGVsc2U6DQorICAgICAgICAgIHByaW50ICIgIiAqIChiYXNpY19v
ZmZzZXQgKiBpbmRlbnQpICsgbGluZQ0KKyAgICAgIGVsc2U6DQorICAgICAgICBwcmludCAiIg0K
KyAgICAgIGxhc3RfbGluZSA9IGxpbmUNCisNCisjIFNwbGl0IHVwIHRoZSBkb3VibGUgYnJhY2Vz
Lg0KK2xpbmVzID0gc3BsaXRfZG91YmxlX2JyYWNlcyhpbnB1dCkNCisNCisjIEluZGVudCBhbmQg
cHJpbnQgdGhlIG91dHB1dC4NCitwcmV0dHlwcmludF9pbnB1dChsaW5lcykNCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9neXAvdG9vbHMvcHJldHR5X3Nsbi5weSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d5cC90b29scy9wcmV0dHlfc2xuLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3NDFmZmYxNzc2MDFl
MjIwOTRmZGQ0MjJlNzg5YjEzZTc3NWQ5MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9neXAvdG9vbHMvcHJldHR5X3Nsbi5weQpAQCAtMCwwICsxLDE2NyBAQAorIyEvdXNy
L2Jpbi9weXRob24yLjUKKworIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorCisiIiJQcmludHMgdGhlIGluZm9ybWF0aW9uIGluIGEgc2xuIGZpbGUgaW4gYSBkaWZm
YWJsZSB3YXkuCisKKyAgIEl0IGZpcnN0IG91dHB1dHMgZWFjaCBwcm9qZWN0cyBpbiBhbHBoYWJl
dGljYWwgb3JkZXIgd2l0aCB0aGVpcgorICAgZGVwZW5kZW5jaWVzLgorCisgICBUaGVuIGl0IG91
dHB1dHMgYSBwb3NzaWJsZSBidWlsZCBvcmRlci4KKyIiIgorCitfX2F1dGhvcl9fID0gJ25zeWx2
YWluIChOaWNvbGFzIFN5bHZhaW4pJworCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5
cworaW1wb3J0IHByZXR0eV92Y3Byb2oKKworZGVmIEJ1aWxkUHJvamVjdChwcm9qZWN0LCBidWls
dCwgcHJvamVjdHMsIGRlcHMpOgorICAjIGlmIGFsbCBkZXBlbmRlbmNpZXMgYXJlIGRvbmUsIHdl
IGNhbiBidWlsZCBpdCwgb3RoZXJ3aXNlIHdlIHRyeSB0byBidWlsZCB0aGUKKyAgIyBkZXBlbmRl
bmN5LgorICAjIFRoaXMgaXMgbm90IGluZmluaXRlLXJlY3Vyc2lvbiBwcm9vZi4KKyAgZm9yIGRl
cCBpbiBkZXBzW3Byb2plY3RdOgorICAgIGlmIGRlcCBub3QgaW4gYnVpbHQ6CisgICAgICBCdWls
ZFByb2plY3QoZGVwLCBidWlsdCwgcHJvamVjdHMsIGRlcHMpCisgIHByaW50IHByb2plY3QKKyAg
YnVpbHQuYXBwZW5kKHByb2plY3QpCisKK2RlZiBQYXJzZVNvbHV0aW9uKHNvbHV0aW9uX2ZpbGUp
OgorICAjIEFsbCBwcm9qZWN0cywgdGhlaXIgY2xzaWQgYW5kIHBhdGhzLgorICBwcm9qZWN0cyA9
IGRpY3QoKQorCisgICMgQSBsaXN0IG9mIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggYSBw
cm9qZWN0LgorICBkZXBlbmRlbmNpZXMgPSBkaWN0KCkKKworICAjIFJlZ3VsYXIgZXhwcmVzc2lv
bnMgdGhhdCBtYXRjaGVzIHRoZSBTTE4gZm9ybWF0LgorICAjIFRoZSBmaXJzdCBsaW5lIG9mIGEg
cHJvamVjdCBkZWZpbml0aW9uLgorICBiZWdpbl9wcm9qZWN0ID0gcmUuY29tcGlsZSgoJ15Qcm9q
ZWN0XCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0MicKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd9IlwpID0gIiguKikiLCAiKC4qKSIsICIoLiopIiQnKSkKKyAg
IyBUaGUgbGFzdCBsaW5lIG9mIGEgcHJvamVjdCBkZWZpbml0aW9uLgorICBlbmRfcHJvamVjdCA9
IHJlLmNvbXBpbGUoJ15FbmRQcm9qZWN0JCcpCisgICMgVGhlIGZpcnN0IGxpbmUgb2YgYSBkZXBl
bmRlbmN5IGxpc3QuCisgIGJlZ2luX2RlcCA9IHJlLmNvbXBpbGUoJ1Byb2plY3RTZWN0aW9uXChQ
cm9qZWN0RGVwZW5kZW5jaWVzXCkgPSBwb3N0UHJvamVjdCQnKQorICAjIFRoZSBsYXN0IGxpbmUg
b2YgYSBkZXBlbmRlbmN5IGxpc3QuCisgIGVuZF9kZXAgPSByZS5jb21waWxlKCdFbmRQcm9qZWN0
U2VjdGlvbiQnKQorICAjIEEgbGluZSBkZXNjcmliaW5nIGEgZGVwZW5kZW5jeS4KKyAgZGVwX2xp
bmUgPSByZS5jb21waWxlKCcgKih7Lip9KSA9ICh7Lip9KSQnKQorCisgIGluX2RlcHMgPSBGYWxz
ZQorICBzb2x1dGlvbiA9IG9wZW4oc29sdXRpb25fZmlsZSkKKyAgZm9yIGxpbmUgaW4gc29sdXRp
b246CisgICAgcmVzdWx0cyA9IGJlZ2luX3Byb2plY3Quc2VhcmNoKGxpbmUpCisgICAgaWYgcmVz
dWx0czoKKyAgICAgICMgSGFjayB0byByZW1vdmUgaWN1IGJlY2F1c2UgdGhlIGRpZmYgaXMgdG9v
IGRpZmZlcmVudC4KKyAgICAgIGlmIHJlc3VsdHMuZ3JvdXAoMSkuZmluZCgnaWN1JykgIT0gLTE6
CisgICAgICAgIGNvbnRpbnVlCisgICAgICAjIFdlIHJlbW92ZSAiX2d5cCIgZnJvbSB0aGUgbmFt
ZXMgYmVjYXVzZSBpdCBoZWxwcyB0byBkaWZmIHRoZW0uCisgICAgICBjdXJyZW50X3Byb2plY3Qg
PSByZXN1bHRzLmdyb3VwKDEpLnJlcGxhY2UoJ19neXAnLCAnJykKKyAgICAgIHByb2plY3RzW2N1
cnJlbnRfcHJvamVjdF0gPSBbcmVzdWx0cy5ncm91cCgyKS5yZXBsYWNlKCdfZ3lwJywgJycpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLmdyb3VwKDMpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLmdyb3VwKDIpXQorICAgICAg
ZGVwZW5kZW5jaWVzW2N1cnJlbnRfcHJvamVjdF0gPSBbXQorICAgICAgY29udGludWUKKworICAg
IHJlc3VsdHMgPSBlbmRfcHJvamVjdC5zZWFyY2gobGluZSkKKyAgICBpZiByZXN1bHRzOgorICAg
ICAgY3VycmVudF9wcm9qZWN0ID0gTm9uZQorICAgICAgY29udGludWUKKworICAgIHJlc3VsdHMg
PSBiZWdpbl9kZXAuc2VhcmNoKGxpbmUpCisgICAgaWYgcmVzdWx0czoKKyAgICAgIGluX2RlcHMg
PSBUcnVlCisgICAgICBjb250aW51ZQorCisgICAgcmVzdWx0cyA9IGVuZF9kZXAuc2VhcmNoKGxp
bmUpCisgICAgaWYgcmVzdWx0czoKKyAgICAgIGluX2RlcHMgPSBGYWxzZQorICAgICAgY29udGlu
dWUKKworICAgIHJlc3VsdHMgPSBkZXBfbGluZS5zZWFyY2gobGluZSkKKyAgICBpZiByZXN1bHRz
IGFuZCBpbl9kZXBzIGFuZCBjdXJyZW50X3Byb2plY3Q6CisgICAgICBkZXBlbmRlbmNpZXNbY3Vy
cmVudF9wcm9qZWN0XS5hcHBlbmQocmVzdWx0cy5ncm91cCgxKSkKKyAgICAgIGNvbnRpbnVlCisK
KyAgIyBDaGFuZ2UgYWxsIGRlcGVuZGVuY2llcyBjbHNpZCB0byBuYW1lIGluc3RlYWQuCisgIGZv
ciBwcm9qZWN0IGluIGRlcGVuZGVuY2llczoKKyAgICAjIEZvciBlYWNoIGRlcGVuZGVuY2llcyBp
biB0aGlzIHByb2plY3QKKyAgICBuZXdfZGVwX2FycmF5ID0gW10KKyAgICBmb3IgZGVwIGluIGRl
cGVuZGVuY2llc1twcm9qZWN0XToKKyAgICAgICMgTG9vayBmb3IgdGhlIHByb2plY3QgbmFtZSBt
YXRjaGluZyB0aGlzIGNsZGlzCisgICAgICBmb3IgcHJvamVjdF9pbmZvIGluIHByb2plY3RzOgor
ICAgICAgICBpZiBwcm9qZWN0c1twcm9qZWN0X2luZm9dWzFdID09IGRlcDoKKyAgICAgICAgICBu
ZXdfZGVwX2FycmF5LmFwcGVuZChwcm9qZWN0X2luZm8pCisgICAgZGVwZW5kZW5jaWVzW3Byb2pl
Y3RdID0gc29ydGVkKG5ld19kZXBfYXJyYXkpCisKKyAgcmV0dXJuIChwcm9qZWN0cywgZGVwZW5k
ZW5jaWVzKQorCitkZWYgUHJpbnREZXBlbmRlbmNpZXMocHJvamVjdHMsIGRlcHMpOgorICBwcmlu
dCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorICBwcmludCAiRGVw
ZW5kZW5jaWVzIGZvciBhbGwgcHJvamVjdHMiCisgIHByaW50ICItLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0iCisgIHByaW50ICItLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLS0iCisKKyAgZm9yIChwcm9qZWN0LCBkZXBfbGlzdCkgaW4gc29ydGVkKGRl
cHMuaXRlbXMoKSk6CisgICAgcHJpbnQgIlByb2plY3QgOiAlcyIgJSBwcm9qZWN0CisgICAgcHJp
bnQgIlBhdGggOiAlcyIgJSBwcm9qZWN0c1twcm9qZWN0XVswXQorICAgIGlmIGRlcF9saXN0Ogor
ICAgICAgZm9yIGRlcCBpbiBkZXBfbGlzdDoKKyAgICAgICAgcHJpbnQgIiAgLSAlcyIgJSBkZXAK
KyAgICBwcmludCAiIgorCisgIHByaW50ICItLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLS0iCisKK2RlZiBQcmludEJ1aWxkT3JkZXIocHJvamVjdHMsIGRlcHMpOgorICBwcmlu
dCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorICBwcmludCAiQnVp
bGQgb3JkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorICBwcmludCAiLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorICBwcmludCAiLS0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC0tIgorCisgIGJ1aWx0ID0gW10KKyAgZm9yIChwcm9qZWN0
LCBkZXBfbGlzdCkgaW4gc29ydGVkKGRlcHMuaXRlbXMoKSk6CisgICAgaWYgcHJvamVjdCBub3Qg
aW4gYnVpbHQ6CisgICAgICBCdWlsZFByb2plY3QocHJvamVjdCwgYnVpbHQsIHByb2plY3RzLCBk
ZXBzKQorCisgIHByaW50ICItLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0i
CisKK2RlZiBQcmludFZDUHJvaihwcm9qZWN0cyk6CisKKyAgZm9yIHByb2plY3QgaW4gcHJvamVj
dHM6CisgICAgcHJpbnQgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisg
ICAgcHJpbnQgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisgICAgcHJp
bnQgcHJvamVjdAorICAgIHByaW50IHByb2plY3QKKyAgICBwcmludCBwcm9qZWN0CisgICAgcHJp
bnQgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisgICAgcHJpbnQgIi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisKKyAgICBwcm9qZWN0X3BhdGgg
PSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShzeXMuYXJndlsx
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9q
ZWN0c1twcm9qZWN0XVsyXSkpCisKKyAgICBwcmV0dHkgPSBwcmV0dHlfdmNwcm9qCisgICAgYXJn
diA9IFsgJycsCisgICAgICAgICAgICAgcHJvamVjdF9wYXRoLAorICAgICAgICAgICAgICckKFNv
bHV0aW9uRGlyKT0lc1xcJyAlIG9zLnBhdGguZGlybmFtZShzeXMuYXJndlsxXSksCisgICAgICAg
ICAgIF0KKyAgICBhcmd2LmV4dGVuZChzeXMuYXJndlszOl0pCisgICAgcHJldHR5Lm1haW4oYXJn
dikKKworZGVmIG1haW4oKToKKyAgIyBjaGVjayBpZiB3ZSBoYXZlIGV4YWN0bHkgMSBwYXJhbWV0
ZXIuCisgIGlmIGxlbihzeXMuYXJndikgPCAyOgorICAgIHByaW50ICdVc2FnZTogJXMgImM6XFxw
YXRoXFx0b1xccHJvamVjdC5zbG4iJyAlIHN5cy5hcmd2WzBdCisgICAgcmV0dXJuCisKKyAgKHBy
b2plY3RzLCBkZXBzKSA9IFBhcnNlU29sdXRpb24oc3lzLmFyZ3ZbMV0pCisgIFByaW50RGVwZW5k
ZW5jaWVzKHByb2plY3RzLCBkZXBzKQorICBQcmludEJ1aWxkT3JkZXIocHJvamVjdHMsIGRlcHMp
CisKKyAgaWYgJy0tcmVjdXJzaXZlJyBpbiBzeXMuYXJndjoKKyAgICBQcmludFZDUHJvaihwcm9q
ZWN0cykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgbWFpbigpCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d5cC90b29scy9wcmV0dHlfdmNwcm9qLnB5IGIvU291cmNl
L1RoaXJkUGFydHkvZ3lwL3Rvb2xzL3ByZXR0eV92Y3Byb2oucHkKbmV3IGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkyYTM5
ZjdjZjNkMmQyODRhZGViZjY1NzRmNDE0YTVkYjE4Y2VlZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d5cC90b29scy9wcmV0dHlfdmNwcm9qLnB5CkBAIC0wLDAgKzEsMzE2
IEBACisjIS91c3IvYmluL3B5dGhvbjIuNQorCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKKyIiIk1ha2UgdGhlIGZvcm1hdCBvZiBhIHZjcHJvaiByZWFsbHkg
cHJldHR5LgorCisgICBUaGlzIHNjcmlwdCBub3JtYWxpemUgYW5kIHNvcnQgYW4geG1sLiBJdCBh
bHNvIGZldGNoZXMgYWxsIHRoZSBwcm9wZXJ0aWVzCisgICBpbnNpZGUgbGlua2VkIHZzcHJvcHMg
YW5kIGluY2x1ZGUgdGhlbSBleHBsaWNpdGx5IGluIHRoZSB2Y3Byb2ouCisKKyAgIEl0IG91dHB1
dHMgdGhlIHJlc3VsdGluZyB4bWwgdG8gc3Rkb3V0LgorIiIiCisKK19fYXV0aG9yX18gPSAnbnN5
bHZhaW4gKE5pY29sYXMgU3lsdmFpbiknCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitmcm9t
IHhtbC5kb20ubWluaWRvbSBpbXBvcnQgcGFyc2UKK2Zyb20geG1sLmRvbS5taW5pZG9tIGltcG9y
dCBOb2RlCisKK1JFUExBQ0VNRU5UUyA9IGRpY3QoKQorQVJHVU1FTlRTID0gTm9uZQorCitjbGFz
cyBDbXBUdXBsZToKKyAgIiIiQ29tcGFyZSBmdW5jdGlvbiBiZXR3ZWVuIDIgdHVwbGUuIiIiCisg
IGRlZiBfX2NhbGxfXyhzZWxmLCB4LCB5KToKKyAgICAoa2V5MSwgdmFsdWUxKSA9IHgKKyAgICAo
a2V5MiwgdmFsdWUyKSA9IHkKKyAgICByZXR1cm4gY21wKGtleTEsIGtleTIpCisKK2NsYXNzIENt
cE5vZGU6CisgICIiIkNvbXBhcmUgZnVuY3Rpb24gYmV0d2VlbiAyIHhtbCBub2Rlcy4iIiIKKwor
ICBkZWYgZ2V0X3N0cmluZyhzZWxmLCBub2RlKToKKyAgICBub2RlX3N0cmluZyA9ICJub2RlIgor
ICAgIG5vZGVfc3RyaW5nICs9IG5vZGUubm9kZU5hbWUKKyAgICBpZiBub2RlLm5vZGVWYWx1ZToK
KyAgICAgIG5vZGVfc3RyaW5nICs9IG5vZGUubm9kZVZhbHVlCisKKyAgICBpZiBub2RlLmF0dHJp
YnV0ZXM6CisgICAgICAjIFdlIGZpcnN0IHNvcnQgYnkgbmFtZSwgaWYgcHJlc2VudC4KKyAgICAg
IG5vZGVfc3RyaW5nICs9IG5vZGUuZ2V0QXR0cmlidXRlKCJOYW1lIikKKworICAgICAgYWxsX25v
ZGVzID0gW10KKyAgICAgIGZvciAobmFtZSwgdmFsdWUpIGluIG5vZGUuYXR0cmlidXRlcy5pdGVt
cygpOgorICAgICAgICBhbGxfbm9kZXMuYXBwZW5kKChuYW1lLCB2YWx1ZSkpCisKKyAgICAgIGFs
bF9ub2Rlcy5zb3J0KENtcFR1cGxlKCkpCisgICAgICBmb3IgKG5hbWUsIHZhbHVlKSBpbiBhbGxf
bm9kZXM6CisgICAgICAgIG5vZGVfc3RyaW5nICs9IG5hbWUKKyAgICAgICAgbm9kZV9zdHJpbmcg
Kz0gdmFsdWUKKworICAgIHJldHVybiBub2RlX3N0cmluZworCisgIGRlZiBfX2NhbGxfXyhzZWxm
LCB4LCB5KToKKyAgICByZXR1cm4gY21wKHNlbGYuZ2V0X3N0cmluZyh4KSwgc2VsZi5nZXRfc3Ry
aW5nKHkpKQorCitkZWYgUHJldHR5UHJpbnROb2RlKG5vZGUsIGluZGVudD0wKToKKyAgaWYgbm9k
ZS5ub2RlVHlwZSA9PSBOb2RlLlRFWFRfTk9ERToKKyAgICBpZiBub2RlLmRhdGEuc3RyaXAoKToK
KyAgICAgIHByaW50ICclcyVzJyAlICgnICcqaW5kZW50LCBub2RlLmRhdGEuc3RyaXAoKSkKKyAg
ICByZXR1cm4KKworICBpZiBub2RlLmNoaWxkTm9kZXM6CisgICAgbm9kZS5ub3JtYWxpemUoKQor
ICAjIEdldCB0aGUgbnVtYmVyIG9mIGF0dHJpYnV0ZXMKKyAgYXR0cl9jb3VudCA9IDAKKyAgaWYg
bm9kZS5hdHRyaWJ1dGVzOgorICAgIGF0dHJfY291bnQgPSBub2RlLmF0dHJpYnV0ZXMubGVuZ3Ro
CisKKyAgIyBQcmludCB0aGUgbWFpbiB0YWcKKyAgaWYgYXR0cl9jb3VudCA9PSAwOgorICAgIHBy
aW50ICclczwlcz4nICUgKCcgJyppbmRlbnQsIG5vZGUubm9kZU5hbWUpCisgIGVsc2U6CisgICAg
cHJpbnQgJyVzPCVzJyAlICgnICcqaW5kZW50LCBub2RlLm5vZGVOYW1lKQorCisgICAgYWxsX2F0
dHJpYnV0ZXMgPSBbXQorICAgIGZvciAobmFtZSwgdmFsdWUpIGluIG5vZGUuYXR0cmlidXRlcy5p
dGVtcygpOgorICAgICAgYWxsX2F0dHJpYnV0ZXMuYXBwZW5kKChuYW1lLCB2YWx1ZSkpCisgICAg
ICBhbGxfYXR0cmlidXRlcy5zb3J0KENtcFR1cGxlKCkpCisgICAgZm9yIChuYW1lLCB2YWx1ZSkg
aW4gYWxsX2F0dHJpYnV0ZXM6CisgICAgICBwcmludCAnJXMgICVzPSIlcyInICUgKCcgJyppbmRl
bnQsIG5hbWUsIHZhbHVlKQorICAgIHByaW50ICclcz4nICUgKCcgJyppbmRlbnQpCisgIGlmIG5v
ZGUubm9kZVZhbHVlOgorICAgIHByaW50ICclcyAgJXMnICUgKCcgJyppbmRlbnQsIG5vZGUubm9k
ZVZhbHVlKQorCisgIGZvciBzdWJfbm9kZSBpbiBub2RlLmNoaWxkTm9kZXM6CisgICAgUHJldHR5
UHJpbnROb2RlKHN1Yl9ub2RlLCBpbmRlbnQ9aW5kZW50KzIpCisgIHByaW50ICclczwvJXM+JyAl
ICgnICcqaW5kZW50LCBub2RlLm5vZGVOYW1lKQorCitkZWYgRmxhdHRlbkZpbHRlcihub2RlKToK
KyAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZSBub2RlIGFuZCBzdWIgbm9kZXMuIiIiCisg
IG5vZGVfbGlzdCA9IFtdCisKKyAgaWYgKG5vZGUuYXR0cmlidXRlcyBhbmQKKyAgICAgIG5vZGUu
Z2V0QXR0cmlidXRlKCdOYW1lJykgPT0gJ19leGNsdWRlZF9maWxlcycpOgorICAgICAgIyBXZSBk
b24ndCBhZGQgdGhlICJfZXhjbHVkZWRfZmlsZXMiIGZpbHRlci4KKyAgICByZXR1cm4gW10KKwor
ICBmb3IgY3VycmVudCBpbiBub2RlLmNoaWxkTm9kZXM6CisgICAgaWYgY3VycmVudC5ub2RlTmFt
ZSA9PSAnRmlsdGVyJzoKKyAgICAgIG5vZGVfbGlzdC5leHRlbmQoRmxhdHRlbkZpbHRlcihjdXJy
ZW50KSkKKyAgICBlbHNlOgorICAgICAgbm9kZV9saXN0LmFwcGVuZChjdXJyZW50KQorCisgIHJl
dHVybiBub2RlX2xpc3QKKworZGVmIEZpeEZpbGVuYW1lcyhmaWxlbmFtZXMsIGN1cnJlbnRfZGly
ZWN0b3J5KToKKyAgbmV3X2xpc3QgPSBbXQorICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgor
ICAgIGlmIGZpbGVuYW1lOgorICAgICAgZm9yIGtleSBpbiBSRVBMQUNFTUVOVFM6CisgICAgICAg
IGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZShrZXksIFJFUExBQ0VNRU5UU1trZXldKQorICAg
ICAgb3MuY2hkaXIoY3VycmVudF9kaXJlY3RvcnkpCisgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1l
LnN0cmlwKCciXCcgJykKKyAgICAgIGlmIGZpbGVuYW1lLnN0YXJ0c3dpdGgoJyQnKToKKyAgICAg
ICAgbmV3X2xpc3QuYXBwZW5kKGZpbGVuYW1lKQorICAgICAgZWxzZToKKyAgICAgICAgbmV3X2xp
c3QuYXBwZW5kKG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSkpCisgIHJldHVybiBuZXdfbGlzdAor
CitkZWYgQWJzb2x1dGVOb2RlKG5vZGUpOgorICAjIE1ha2UgYWxsIHRoZSBwcm9wZXJ0aWVzIHdl
IGtub3cgYWJvdXQgaW4gdGhpcyBub2RlIGFic29sdXRlLgorICBpZiBub2RlLmF0dHJpYnV0ZXM6
CisgICAgZm9yIChuYW1lLCB2YWx1ZSkgaW4gbm9kZS5hdHRyaWJ1dGVzLml0ZW1zKCk6CisgICAg
ICBpZiBuYW1lIGluIFsnSW5oZXJpdGVkUHJvcGVydHlTaGVldHMnLCAnUmVsYXRpdmVQYXRoJywK
KyAgICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzJywKKyAgICAg
ICAgICAgICAgICAgICdJbnRlcm1lZGlhdGVEaXJlY3RvcnknLCAnT3V0cHV0RGlyZWN0b3J5JywK
KyAgICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzJ106CisgICAg
ICAgICMgV2Ugd2FudCB0byBmaXggdXAgdGhlc2UgcGF0aHMKKyAgICAgICAgcGF0aF9saXN0ID0g
dmFsdWUuc3BsaXQoJzsnKQorICAgICAgICBuZXdfbGlzdCA9IEZpeEZpbGVuYW1lcyhwYXRoX2xp
c3QsIG9zLnBhdGguZGlybmFtZShBUkdVTUVOVFNbMV0pKQorICAgICAgICBub2RlLnNldEF0dHJp
YnV0ZShuYW1lLCAnOycuam9pbihuZXdfbGlzdCkpCisgICAgICBpZiBub3QgdmFsdWU6CisgICAg
ICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpCisKK2RlZiBDbGVhbnVwVmNwcm9qKG5vZGUp
OgorICAjIEZvciBlYWNoIHN1YiBub2RlLCB3ZSBjYWxsIHJlY3Vyc2l2ZWx5IHRoaXMgZnVuY3Rp
b24uCisgIGZvciBzdWJfbm9kZSBpbiBub2RlLmNoaWxkTm9kZXM6CisgICAgQWJzb2x1dGVOb2Rl
KHN1Yl9ub2RlKQorICAgIENsZWFudXBWY3Byb2ooc3ViX25vZGUpCisKKyAgIyBOb3JtYWxpemUg
dGhlIG5vZGUsIGFuZCByZW1vdmUgYWxsIGV4dHJhbm91cyB3aGl0ZXNwYWNlcy4KKyAgZm9yIHN1
Yl9ub2RlIGluIG5vZGUuY2hpbGROb2RlczoKKyAgICBpZiBzdWJfbm9kZS5ub2RlVHlwZSA9PSBO
b2RlLlRFWFRfTk9ERToKKyAgICAgICAgc3ViX25vZGUuZGF0YSA9IHN1Yl9ub2RlLmRhdGEucmVw
bGFjZSgiXHIiLCAiIikKKyAgICAgICAgc3ViX25vZGUuZGF0YSA9IHN1Yl9ub2RlLmRhdGEucmVw
bGFjZSgiXG4iLCAiIikKKyAgICAgICAgc3ViX25vZGUuZGF0YSA9IHN1Yl9ub2RlLmRhdGEucnN0
cmlwKCkKKworICAjIEZpeCBhbGwgdGhlIHNlbWljb2xvbiBzZXBhcmF0ZWQgYXR0cmlidXRlcyB0
byBiZSBzb3J0ZWQsIGFuZCB3ZSBhbHNvCisgICMgcmVtb3ZlIHRoZSBkdXBzLgorICBpZiBub2Rl
LmF0dHJpYnV0ZXM6CisgICAgZm9yIChuYW1lLCB2YWx1ZSkgaW4gbm9kZS5hdHRyaWJ1dGVzLml0
ZW1zKCk6CisgICAgICBzb3J0ZWRfbGlzdCA9IHNvcnRlZCh2YWx1ZS5zcGxpdCgnOycpKQorICAg
ICAgdW5pcXVlX2xpc3QgPSBbXQorICAgICAgW3VuaXF1ZV9saXN0LmFwcGVuZChpKSBmb3IgaSBp
biBzb3J0ZWRfbGlzdCBpZiBub3QgdW5pcXVlX2xpc3QuY291bnQoaSldCisgICAgICBub2RlLnNl
dEF0dHJpYnV0ZShuYW1lLCAnOycuam9pbih1bmlxdWVfbGlzdCkpCisgICAgICBpZiBub3QgdmFs
dWU6CisgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpCisKKyAgaWYgbm9kZS5jaGls
ZE5vZGVzOgorICAgIG5vZGUubm9ybWFsaXplKCkKKworICAjIEZvciBlYWNoIG5vZGUsIHRha2Ug
YSBjb3B5LCBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIGxpc3QuCisgIG5vZGVfYXJyYXkgPSBbXQor
ICB3aGlsZSBub2RlLmNoaWxkTm9kZXMgYW5kIG5vZGUuY2hpbGROb2Rlc1swXToKKyAgICAjIFRh
a2UgYSBjb3B5IG9mIHRoZSBub2RlIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgbGlzdC4KKyAgICBj
dXJyZW50ID0gbm9kZS5jaGlsZE5vZGVzWzBdCisgICAgbm9kZS5yZW1vdmVDaGlsZChjdXJyZW50
KQorCisgICAgIyBJZiB0aGUgY2hpbGQgaXMgYSBmaWx0ZXIsIHdlIHdhbnQgdG8gYXBwZW5kIGFs
bCBpdHMgY2hpbGRyZW4KKyAgICAjIHRvIHRoaXMgc2FtZSBsaXN0LgorICAgIGlmIGN1cnJlbnQu
bm9kZU5hbWUgPT0gJ0ZpbHRlcic6CisgICAgICBub2RlX2FycmF5LmV4dGVuZChGbGF0dGVuRmls
dGVyKGN1cnJlbnQpKQorICAgIGVsc2U6CisgICAgICBub2RlX2FycmF5LmFwcGVuZChjdXJyZW50
KQorCisKKyAgIyBTb3J0IHRoZSBsaXN0LgorICBub2RlX2FycmF5LnNvcnQoQ21wTm9kZSgpKQor
CisgICMgSW5zZXJ0IHRoZSBub2RlcyBpbiB0aGUgY29ycmVjdCBvcmRlci4KKyAgZm9yIG5ld19u
b2RlIGluIG5vZGVfYXJyYXk6CisgICAgIyBCdXQgZG9uJ3QgYXBwZW5kIGVtcHR5IHRvb2wgbm9k
ZS4KKyAgICBpZiBuZXdfbm9kZS5ub2RlTmFtZSA9PSAnVG9vbCc6CisgICAgICBpZiBuZXdfbm9k
ZS5hdHRyaWJ1dGVzIGFuZCBuZXdfbm9kZS5hdHRyaWJ1dGVzLmxlbmd0aCA9PSAxOgorICAgICAg
ICAjIFRoaXMgb25lIHdhcyBlbXB0eS4KKyAgICAgICAgY29udGludWUKKyAgICBpZiBuZXdfbm9k
ZS5ub2RlTmFtZSA9PSAnVXNlck1hY3JvJzoKKyAgICAgIGNvbnRpbnVlCisgICAgbm9kZS5hcHBl
bmRDaGlsZChuZXdfbm9kZSkKKworZGVmIEdldENvbmZpZ3VhdGlvbk5vZGVzKHZjcHJvaik6Cisg
ICNUT0RPKG5zeWx2YWluKTogRmluZCBhIGJldHRlciB3YXkgdG8gbmF2aWdhdGUgdGhlIHhtbC4K
KyAgbm9kZXMgPSBbXQorICBmb3Igbm9kZSBpbiB2Y3Byb2ouY2hpbGROb2RlczoKKyAgICBpZiBu
b2RlLm5vZGVOYW1lID09ICJDb25maWd1cmF0aW9ucyI6CisgICAgICBmb3Igc3ViX25vZGUgaW4g
bm9kZS5jaGlsZE5vZGVzOgorICAgICAgICBpZiBzdWJfbm9kZS5ub2RlTmFtZSA9PSAiQ29uZmln
dXJhdGlvbiI6CisgICAgICAgICAgbm9kZXMuYXBwZW5kKHN1Yl9ub2RlKQorCisgIHJldHVybiBu
b2RlcworCitkZWYgR2V0Q2hpbGRyZW5Wc3Byb3BzKGZpbGVuYW1lKToKKyAgZG9tID0gcGFyc2Uo
ZmlsZW5hbWUpCisgIGlmIGRvbS5kb2N1bWVudEVsZW1lbnQuYXR0cmlidXRlczoKKyAgICB2c3By
b3BzID0gZG9tLmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ0luaGVyaXRlZFByb3BlcnR5
U2hlZXRzJykKKyAgICByZXR1cm4gRml4RmlsZW5hbWVzKHZzcHJvcHMuc3BsaXQoJzsnKSwgb3Mu
cGF0aC5kaXJuYW1lKGZpbGVuYW1lKSkKKyAgcmV0dXJuIFtdCisKK2RlZiBTZWVrVG9Ob2RlKG5v
ZGUxLCBjaGlsZDIpOgorICAjIEEgdGV4dCBub2RlIGRvZXMgbm90IGhhdmUgcHJvcGVydGllcy4K
KyAgaWYgY2hpbGQyLm5vZGVUeXBlID09IE5vZGUuVEVYVF9OT0RFOgorICAgIHJldHVybiBOb25l
CisKKyAgIyBHZXQgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgbm9kZS4KKyAgY3VycmVudF9uYW1l
ID0gY2hpbGQyLmdldEF0dHJpYnV0ZSgiTmFtZSIpCisgIGlmIG5vdCBjdXJyZW50X25hbWU6Cisg
ICAgIyBUaGVyZSBpcyBubyBuYW1lLiBXZSBkb24ndCBrbm93IGhvdyB0byBtZXJnZS4KKyAgICBy
ZXR1cm4gTm9uZQorCisgICMgTG9vayB0aHJvdWdoIGFsbCB0aGUgbm9kZXMgdG8gZmluZCBhIG1h
dGNoLgorICBmb3Igc3ViX25vZGUgaW4gbm9kZTEuY2hpbGROb2RlczoKKyAgICBpZiBzdWJfbm9k
ZS5ub2RlTmFtZSA9PSBjaGlsZDIubm9kZU5hbWU6CisgICAgICBuYW1lID0gc3ViX25vZGUuZ2V0
QXR0cmlidXRlKCJOYW1lIikKKyAgICAgIGlmIG5hbWUgPT0gY3VycmVudF9uYW1lOgorICAgICAg
ICByZXR1cm4gc3ViX25vZGUKKworICAjIE5vIG1hdGNoLiBXZSBnaXZlIHVwLgorICByZXR1cm4g
Tm9uZQorCitkZWYgTWVyZ2VBdHRyaWJ1dGVzKG5vZGUxLCBub2RlMik6CisgICMgTm8gYXR0cmli
dXRlcyB0byBtZXJnZT8KKyAgaWYgbm90IG5vZGUyLmF0dHJpYnV0ZXM6CisgICAgcmV0dXJuCisK
KyAgZm9yIChuYW1lLCB2YWx1ZTIpIGluIG5vZGUyLmF0dHJpYnV0ZXMuaXRlbXMoKToKKyAgICAj
IERvbid0IG1lcmdlIHRoZSAnTmFtZScgYXR0cmlidXRlLgorICAgIGlmIG5hbWUgPT0gJ05hbWUn
OgorICAgICAgY29udGludWUKKyAgICB2YWx1ZTEgPSBub2RlMS5nZXRBdHRyaWJ1dGUobmFtZSkK
KyAgICBpZiB2YWx1ZTE6CisgICAgICAjIFRoZSBhdHRyaWJ1dGUgZXhpc3QgaW4gdGhlIG1haW4g
bm9kZS4gSWYgaXQncyBlcXVhbCwgd2UgbGVhdmUgaXQKKyAgICAgICMgdW50b3VjaGVkLCBvdGhl
cndpc2Ugd2UgY29uY2F0ZW5hdGUgaXQuCisgICAgICBpZiB2YWx1ZTEgIT0gdmFsdWUyOgorICAg
ICAgICBub2RlMS5zZXRBdHRyaWJ1dGUobmFtZSwgJzsnLmpvaW4oW3ZhbHVlMSwgdmFsdWUyXSkp
CisgICAgZWxzZToKKyAgICAgICMgVGhlIGF0dHJpYnV0ZSBkb2VzIG50byBleGlzdCBpbiB0aGUg
bWFpbiBub2RlLiBXZSBhcHBlbmQgdGhpcyBvbmUuCisgICAgICBub2RlMS5zZXRBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUyKQorCisgICAgIyBJZiB0aGUgYXR0cmlidXRlIHdhcyBhIHByb3BlcnR5IHNo
ZWV0IGF0dHJpYnV0ZXMsIHdlIHJlbW92ZSBpdCwgc2luY2UKKyAgICAjIHRoZXkgYXJlIHVzZWxl
c3MuCisgICAgaWYgbmFtZSA9PSAnSW5oZXJpdGVkUHJvcGVydHlTaGVldHMnOgorICAgICAgbm9k
ZTEucmVtb3ZlQXR0cmlidXRlKG5hbWUpCisKK2RlZiBNZXJnZVByb3BlcnRpZXMobm9kZTEsIG5v
ZGUyKToKKyAgTWVyZ2VBdHRyaWJ1dGVzKG5vZGUxLCBub2RlMikKKyAgZm9yIGNoaWxkMiBpbiBu
b2RlMi5jaGlsZE5vZGVzOgorICAgIGNoaWxkMSA9IFNlZWtUb05vZGUobm9kZTEsIGNoaWxkMikK
KyAgICBpZiBjaGlsZDE6CisgICAgICBNZXJnZVByb3BlcnRpZXMoY2hpbGQxLCBjaGlsZDIpCisg
ICAgZWxzZToKKyAgICAgIG5vZGUxLmFwcGVuZENoaWxkKGNoaWxkMi5jbG9uZU5vZGUoVHJ1ZSkp
CisKK2RlZiBtYWluKGFyZ3YpOgorICBnbG9iYWwgUkVQTEFDRU1FTlRTCisgIGdsb2JhbCBBUkdV
TUVOVFMKKyAgQVJHVU1FTlRTID0gYXJndgorICAiIiJNYWluIGZ1bmN0aW9uIG9mIHRoaXMgdmNw
cm9qIHByZXR0aWZpZXIuIiIiCisKKyAgIyBjaGVjayBpZiB3ZSBoYXZlIGV4YWN0bHkgMSBwYXJh
bWV0ZXIuCisgIGlmIGxlbihhcmd2KSA8IDI6CisgICAgcHJpbnQgKCdVc2FnZTogJXMgImM6XFxw
YXRoXFx0b1xcdmNwcm9qLnZjcHJvaiIgW2tleTE9dmFsdWUxXSAnCisgICAgICAgICAgICdba2V5
Mj12YWx1ZTJdJyAlIGFyZ3ZbMF0pCisgICAgcmV0dXJuCisKKyAgIyBQYXJzZSB0aGUga2V5cwor
ICBmb3IgaSBpbiByYW5nZSgyLCBsZW4oYXJndikpOgorICAgIChrZXksIHZhbHVlKSA9IGFyZ3Zb
aV0uc3BsaXQoJz0nKQorICAgIFJFUExBQ0VNRU5UU1trZXldID0gdmFsdWUKKworICAjIE9wZW4g
dGhlIHZjcHJvaiBhbmQgcGFyc2UgdGhlIHhtbC4KKyAgZG9tID0gcGFyc2UoYXJndlsxXSkKKwor
ICAjIEZpcnN0IHRoaW5nIHdlIG5lZWQgdG8gZG8gaXMgZmluZCB0aGUgQ29uZmlndXJhdGlvbiBO
b2RlIGFuZCBtZXJnZSB0aGVtCisgICMgd2l0aCB0aGUgdnNwcm9wcyB0aGV5IGluY2x1ZGUuCisg
IGZvciBjb25maWd1cmF0aW9uX25vZGUgaW4gR2V0Q29uZmlndWF0aW9uTm9kZXMoZG9tLmRvY3Vt
ZW50RWxlbWVudCk6CisgICAgIyBHZXQgdGhlIHByb3BlcnR5IHNoZWV0cyBhc3NvY2lhdGVkIHdp
dGggdGhpcyBjb25maWd1cmF0aW9uLgorICAgIHZzcHJvcHMgPSBjb25maWd1cmF0aW9uX25vZGUu
Z2V0QXR0cmlidXRlKCdJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cycpCisKKyAgICAjIEZpeCB0aGUg
ZmlsZW5hbWVzIHRvIGJlIGFic29sdXRlLgorICAgIHZzcHJvcHNfbGlzdCA9IEZpeEZpbGVuYW1l
cyh2c3Byb3BzLnN0cmlwKCkuc3BsaXQoJzsnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3MucGF0aC5kaXJuYW1lKGFyZ3ZbMV0pKQorCisgICAgIyBFeHRlbmQgdGhlIGxpc3Qg
b2YgdnNwcm9wcyB3aXRoIGFsbCB2c3Byb3BzIGNvbnRhaW5lZCBpbiB0aGUgY3VycmVudAorICAg
ICMgdnNwcm9wcy4KKyAgICBmb3IgY3VycmVudF92c3Byb3BzIGluIHZzcHJvcHNfbGlzdDoKKyAg
ICAgdnNwcm9wc19saXN0LmV4dGVuZChHZXRDaGlsZHJlblZzcHJvcHMoY3VycmVudF92c3Byb3Bz
KSkKKworICAgICMgTm93IHRoYXQgd2UgaGF2ZSBhbGwgdGhlIHZzcHJvcHMsIHdlIG5lZWQgdG8g
bWVyZ2UgdGhlbS4KKyAgICBmb3IgY3VycmVudF92c3Byb3BzIGluIHZzcHJvcHNfbGlzdDoKKyAg
ICAgIE1lcmdlUHJvcGVydGllcyhjb25maWd1cmF0aW9uX25vZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgcGFyc2UoY3VycmVudF92c3Byb3BzKS5kb2N1bWVudEVsZW1lbnQpCisKKyAgIyBOb3cg
dGhhdCBldmVyeXRoaW5nIGlzIG1lcmdlZCwgd2UgbmVlZCB0byBjbGVhbnVwIHRoZSB4bWwuCisg
IENsZWFudXBWY3Byb2ooZG9tLmRvY3VtZW50RWxlbWVudCkKKworICAjIEZpbmFsbHksIHdlIHVz
ZSB0aGUgcHJldHQgeG1sIGZ1bmN0aW9uIHRvIHByaW50IHRoZSB2Y3Byb2ogYmFjayB0byB0aGUK
KyAgIyB1c2VyLgorICAjcHJpbnQgZG9tLnRvcHJldHR5eG1sKG5ld2w9IlxuIikKKyAgUHJldHR5
UHJpbnROb2RlKGRvbS5kb2N1bWVudEVsZW1lbnQpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6CisgIG1haW4oc3lzLmFyZ3YpCg==
</data>
<flag name="review"
          id="78803"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>