<?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>211504</bug_id>
          
          <creation_ts>2020-05-06 05:25:14 -0700</creation_ts>
          <short_desc>Delete code for QueueStatusServer</short_desc>
          <delta_ts>2020-07-17 12:25: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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211638</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=214492</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>213296</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Aakash Jain">aakash_jain</reporter>
          <assigned_to name="Aakash Jain">aakash_jain</assigned_to>
          <cc>ap</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1649551</commentid>
    <comment_count>0</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-05-06 05:25:14 -0700</bug_when>
    <thetext>Delete code for QueueStatusServer which was server side code for old EWS. We have decommissioned old EWS in favor of new EWS (https://ews-build.webkit.org)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649552</commentid>
    <comment_count>1</comment_count>
      <attachid>398602</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-05-06 05:30:22 -0700</bug_when>
    <thetext>Created attachment 398602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649553</commentid>
    <comment_count>2</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-05-06 05:39:44 -0700</bug_when>
    <thetext>Seems like svn-apply can&apos;t handle this patch since it changes/deletes svn properties (inside QueueStatusServer).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649594</commentid>
    <comment_count>3</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-05-06 07:30:48 -0700</bug_when>
    <thetext>Committed r261227: &lt;https://trac.webkit.org/changeset/261227&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649595</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-06 07:31:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/62929856&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398602</attachid>
            <date>2020-05-06 05:30:22 -0700</date>
            <delta_ts>2020-05-06 06:52:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211504-20200506083020.patch</filename>
            <type>text/plain</type>
            <size>216077</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MTIyMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDIwLTA1LTA2ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBEZWxldGUgY29kZSBmb3IgUXVldWVTdGF0dXNTZXJ2ZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTUwNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUXVldWVTdGF0dXNTZXJ2
ZXI6IFJlbW92ZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBz
LnB5OgorICAgICAgICAoQ2hlY2tQYXRjaFJlbGV2YW5jZSk6IFJlbW92ZWQgUXVldWVTdGF0dXNT
ZXJ2ZXIuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrcGF0Y2hy
ZWxldmFuY2UucHk6CisgICAgICAgIChDaGVja1BhdGNoUmVsZXZhbmNlKTogUmVtb3ZlZCBRdWV1
ZVN0YXR1c1NlcnZlci4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3Rh
dHVzc2VydmVyLnB5OiBSZW1vdmVkIGltcGxlbWVudGF0aW9uIG9mIG1vc3QgbWV0aG9kcy4gV2ls
bCBkZWxldGUgaXQgY29tcGxldGVseQorICAgICAgICBpbiBzdWJzZXF1ZW50IHBhdGNoIGFsb25n
LXdpdGggYWxsIGl0cyBjYWxsZXJzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9zdGF0dXNzZXJ2ZXJfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90ZXN0L21haW4ucHk6CisKIDIwMjAtMDUtMDUgIFJvc3MgS2lyc2xpbmcgIDxy
b3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IElu
dGwuTG9jYWxlCkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9fX2luaXRfXy5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9fX2luaXRfXy5weQkocmV2aXNpb24g
MjYxMTk5KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvX19pbml0X18ucHkJKG5vbmV4aXN0
ZW50KQpAQCAtMSArMCwwIEBACi0jIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMg
ZGlyZWN0b3J5IGZvciBtb2R1bGUgZmlsZXMKSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVy
L2FwcC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2FwcC55YW1s
CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9hcHAueWFtbAko
bm9uZXhpc3RlbnQpCkBAIC0xLDIwICswLDAgQEAKLWFwcGxpY2F0aW9uOiB3ZWJraXQtcXVldWVz
Ci12ZXJzaW9uOiAxCi1ydW50aW1lOiBweXRob24yNwotdGhyZWFkc2FmZTogZmFsc2UKLWFwaV92
ZXJzaW9uOiAxCi0KLWJ1aWx0aW5zOgotLSBkYXRhc3RvcmVfYWRtaW46IG9uCi0tIHJlbW90ZV9h
cGk6IG9uCi0KLWhhbmRsZXJzOgotLSB1cmw6IC9zdHlsZXNoZWV0cwotICBzdGF0aWNfZGlyOiBz
dHlsZXNoZWV0cwotCi0tIHVybDogL3JvYm90cy50eHQKLSAgc3RhdGljX2ZpbGVzOiByb2JvdHMu
dHh0Ci0gIHVwbG9hZDogcm9ib3RzLnR4dAotCi0tIHVybDogLy4qCi0gIHNjcmlwdDogbWFpbi5w
eQpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvY29uZmlnL19faW5pdF9fLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2NvbmZpZy9fX2luaXRfXy5weQkocmV2
aXNpb24gMjYxMTk5KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvY29uZmlnL19faW5pdF9f
LnB5CShub25leGlzdGVudCkKQEAgLTEgKzAsMCBAQAotIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRv
IHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCkluZGV4OiBUb29scy9RdWV1
ZVN0YXR1c1NlcnZlci9jb25maWcvY2hhcnRzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVl
U3RhdHVzU2VydmVyL2NvbmZpZy9jaGFydHMucHkJKHJldmlzaW9uIDI2MTE5OSkKKysrIFRvb2xz
L1F1ZXVlU3RhdHVzU2VydmVyL2NvbmZpZy9jaGFydHMucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw2
MSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotcGF0Y2hfbG9nX2xpbWl0ID0gNTAwCi0KLSMg
QWxsIHVuaXRzIGFyZSByZXByZXNlbnRlZCBudW1lcmljYWxseSBhcyBzZWNvbmRzLgotb25lX21p
bnV0ZSA9IDYwLjAKLW9uZV9ob3VyID0gb25lX21pbnV0ZSAqIDYwLjAKLW9uZV9kYXkgPSBvbmVf
aG91ciAqIDI0LjAKLW9uZV9tb250aCA9IG9uZV9kYXkgKiAzMC4wCi0KLSMgSG93IGZhciBiYWNr
IHRvIHZpZXcgdGhlIGhpc3RvcnksIHNwZWNpZmllZCBpbiBzZWNvbmRzLgotdmlld19yYW5nZV9j
aG9pY2VzID0gWwotICAgIHsibmFtZSI6ICIxIGRheSIsICJ2aWV3X3JhbmdlIjogb25lX2RheX0s
Ci0gICAgeyJuYW1lIjogIjEgd2VlayIsICJ2aWV3X3JhbmdlIjogb25lX2RheSAqIDd9LAotICAg
IHsibmFtZSI6ICIxIG1vbnRoIiwgInZpZXdfcmFuZ2UiOiBvbmVfbW9udGh9LAotXQotCi1kZWZh
dWx0X3ZpZXdfcmFuZ2UgPSBvbmVfZGF5Ci0KLV90aW1lX3VuaXRzID0gWwotICAgICModGhyZXNo
b2xkLCB0aW1lIHVuaXQsIG5hbWUpCi0gICAgKDAsIG9uZV9ob3VyLCAiaG91cnMiKSwKLSAgICAo
NCAqIG9uZV9kYXksIG9uZV9kYXksICJkYXlzIiksCi0gICAgKDMgKiBvbmVfbW9udGgsIG9uZV9t
b250aCwgIm1vbnRocyIpLAotXQotCi0KLWRlZiBnZXRfdGltZV91bml0KHZpZXdfcmFuZ2UpOgot
ICAgIGN1cnJlbnRfdGhyZXNob2xkLCBjdXJyZW50X3RpbWVfdW5pdCwgY3VycmVudF9uYW1lID0g
X3RpbWVfdW5pdHNbMF0KLSAgICBmb3IgdGhyZXNob2xkLCB0aW1lX3VuaXQsIG5hbWUgaW4gX3Rp
bWVfdW5pdHNbMTpdOgotICAgICAgICBpZiB2aWV3X3JhbmdlID49IHRocmVzaG9sZDoKLSAgICAg
ICAgICAgIGN1cnJlbnRfdGltZV91bml0LCBjdXJyZW50X25hbWUgPSB0aW1lX3VuaXQsIG5hbWUK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgcmV0dXJuIGN1cnJlbnRfdGlt
ZV91bml0LCBjdXJyZW50X25hbWUKSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2NvbmZp
Zy9sb2dnaW5nLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2NvbmZp
Zy9sb2dnaW5nLnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZl
ci9jb25maWcvbG9nZ2luZy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDMwICswLDAgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi0jIFNwZWNpZmllZCBpbiBzZWNvbmRzCi1xdWV1ZV9sb2dfZHVyYXRpb24g
PSA2MCAqIDYwCkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9jb25maWcvbWVzc2FnZXMu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvY29uZmlnL21lc3NhZ2Vz
LnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9jb25maWcv
bWVzc2FnZXMucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNCArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotIyBUaGVzZSBtdXN0IGJlIGluIHN5bmMgd2l0aCB3ZWJraXQtcGF0Y2gncyBBYnN0cmFjdFF1
ZXVlLgotc2tpcF9zdGF0dXMgPSAiU2tpcCIKLXBhc3Nfc3RhdHVzID0gIlBhc3MiCi1mYWlsX3N0
YXR1cyA9ICJGYWlsIgotZXJyb3Jfc3RhdHVzID0gIkVycm9yIgpJbmRleDogVG9vbHMvUXVldWVT
dGF0dXNTZXJ2ZXIvY29uZmlnL3F1ZXVlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9RdWV1ZVN0
YXR1c1NlcnZlci9jb25maWcvcXVldWVzLnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9R
dWV1ZVN0YXR1c1NlcnZlci9jb25maWcvcXVldWVzLnB5CShub25leGlzdGVudCkKQEAgLTEsMzkg
KzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gZGF0ZXRpbWUgaW1wb3J0IHRpbWVk
ZWx0YQotCi0jIEV2ZW50dWFsbHkgdGhlIGxpc3Qgb2YgcXVldWVzIG1heSBiZSBzdG9yZWQgaW4g
dGhlIGRhdGEgc3RvcmUuCi1hbGxfcXVldWVfbmFtZXMgPSBbCi0gICAgImNvbW1pdC1xdWV1ZSIs
Ci1dCi0KLSMgSWYgdGhlIHBhdGNoIGlzIHN0aWxsIGFjdGl2ZSBhZnRlciB0aGlzIG11Y2ggdGlt
ZSwgdGhlbiBhIGJvdCBtdXN0IGhhdmUgZnJvemVuIG9yIHJlYm9vdGVkLAotIyBhbmQgZHJvcHBl
ZCB0aGUgcGF0Y2ggb24gdGhlIGZsb29yLiBXZSB3aWxsIGlnbm9yZSB0aGUgbG9jayBpbiB0aGlz
IGNhc2UsIGFuZCBsZXQgYW5vdGhlciBib3QgcGljayB1cC4KLXdvcmtfaXRlbV9sb2NrX3RpbWVv
dXQgPSB0aW1lZGVsdGEobWludXRlcz0xODApCkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZl
ci9jb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvY29uZmlnCShy
ZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9jb25maWcJKG5vbmV4
aXN0ZW50KQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvY29u
ZmlnCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmlnbm9yZQojIyAtMSArMCwwICMjCi0qLnB5YwpJ
bmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvY3Jvbi55YW1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1F1ZXVlU3RhdHVzU2VydmVyL2Nyb24ueWFtbAkocmV2aXNpb24gMjYxMTk5KQorKysgVG9v
bHMvUXVldWVTdGF0dXNTZXJ2ZXIvY3Jvbi55YW1sCShub25leGlzdGVudCkKQEAgLTEsOCArMCww
IEBACi1jcm9uOgotLSBkZXNjcmlwdGlvbjogY29sbGVjdCB0aGUgZ2FyYmFnZQotICB1cmw6IC9n
YwotICBzY2hlZHVsZTogZXZlcnkgNCBob3VycwotCi0tIGRlc2NyaXB0aW9uOiBTeW5jIG5ldyBx
dWV1ZSBsb2dzIHVwIHdpdGggdW5jaGFuZ2luZyBkYXRhCi0gIHVybDogL3N5bmMtcXVldWUtbG9n
cwotICBzY2hlZHVsZTogZXZlcnkgMTAgbWludXRlcwpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNT
ZXJ2ZXIvZmlsdGVycy9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9RdWV1ZVN0YXR1
c1NlcnZlci9maWx0ZXJzL19faW5pdF9fLnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9R
dWV1ZVN0YXR1c1NlcnZlci9maWx0ZXJzL19faW5pdF9fLnB5CShub25leGlzdGVudCkKQEAgLTEg
KzAsMCBAQAotIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBm
b3IgbW9kdWxlIGZpbGVzCkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9maWx0ZXJzL3dl
YmtpdF9leHRyYXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvZmls
dGVycy93ZWJraXRfZXh0cmFzLnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0
YXR1c1NlcnZlci9maWx0ZXJzL3dlYmtpdF9leHRyYXMucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw3
NSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jIAotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIyAKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgcmUKLQotZnJvbSBkamFuZ28u
dGVtcGxhdGUuZGVmYXVsdGZpbHRlcnMgaW1wb3J0IHN0cmluZ2ZpbHRlcgotZnJvbSBnb29nbGUu
YXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwCi0KLXJlZ2lzdGVyID0gd2ViYXBwLnRlbXBsYXRl
LmNyZWF0ZV90ZW1wbGF0ZV9yZWdpc3RlcigpCi0KLWJ1Z19yZWdleHAgPSByZS5jb21waWxlKHIi
YnVnICg/UDxidWdfaWQ+XGQrKSIpCi1wYXRjaF9yZWdleHAgPSByZS5jb21waWxlKHIicGF0Y2gg
KD9QPHBhdGNoX2lkPlxkKykiKQotCi0KLUByZWdpc3Rlci5maWx0ZXIKLUBzdHJpbmdmaWx0ZXIK
LWRlZiB3ZWJraXRfbGlua2lmeSh2YWx1ZSk6Ci0gICAgdmFsdWUgPSBidWdfcmVnZXhwLnN1Yihy
JzxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZy9iL1xnPGJ1Z19pZD4iPmJ1ZyBcZzxidWdfaWQ+
PC9hPicsIHZhbHVlKQotICAgIHZhbHVlID0gcGF0Y2hfcmVnZXhwLnN1YihyJzxhIGhyZWY9Imh0
dHBzOi8vYnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPVxnPHBhdGNoX2lkPiZhY3Rp
b249cHJldHR5cGF0Y2giPnBhdGNoIFxnPHBhdGNoX2lkPjwvYT4nLCB2YWx1ZSkKLSAgICByZXR1
cm4gdmFsdWUKLQotCi1AcmVnaXN0ZXIuZmlsdGVyCi1Ac3RyaW5nZmlsdGVyCi1kZWYgd2Via2l0
X2J1Z19pZCh2YWx1ZSk6Ci0gICAgcmV0dXJuICc8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmcv
Yi8lcyI+JXM8L2E+JyAlICh2YWx1ZSwgdmFsdWUpCi0KLQotQHJlZ2lzdGVyLmZpbHRlcgotQHN0
cmluZ2ZpbHRlcgotZGVmIHdlYmtpdF9hdHRhY2htZW50X2lkKHZhbHVlKToKLSAgICByZXR1cm4g
JzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPSVzJmFj
dGlvbj1wcmV0dHlwYXRjaCI+JXM8L2E+JyAlICh2YWx1ZSwgdmFsdWUpCi0KLQotQHJlZ2lzdGVy
LmZpbHRlcgotQHN0cmluZ2ZpbHRlcgotZGVmIHJlc3VsdHNfbGluayhzdGF0dXNfaWQpOgotICAg
IHJldHVybiAnPGEgaHJlZj0iL3Jlc3VsdHMvJXMiPnJlc3VsdHM8L2E+JyAlIHN0YXR1c19pZAot
Ci0KLUByZWdpc3Rlci5maWx0ZXIKLUBzdHJpbmdmaWx0ZXIKLWRlZiBxdWV1ZV9zdGF0dXNfbGlu
ayhxdWV1ZV9uYW1lLCB0ZXh0KToKLSAgICByZXR1cm4gJzxhIGhyZWY9Ii9xdWV1ZS1zdGF0dXMv
JXMiPiVzPC9hPicgJSAocXVldWVfbmFtZSwgdGV4dCkKLQotCi1AcmVnaXN0ZXIuZmlsdGVyCi1A
c3RyaW5nZmlsdGVyCi1kZWYgcXVldWVfY2hhcnRzX2xpbmsocXVldWVfbmFtZSwgdGV4dCk6Ci0g
ICAgcmV0dXJuICc8YSBocmVmPSIvcXVldWUtY2hhcnRzLyVzIj4lczwvYT4nICUgKHF1ZXVlX25h
bWUsIHRleHQpCkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9maWx0ZXJzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2ZpbHRlcnMJKHJldmlzaW9uIDI2MTE5OSkK
KysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2ZpbHRlcnMJKG5vbmV4aXN0ZW50KQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvZmlsdGVycwpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkRlbGV0ZWQ6IHN2bjppZ25vcmUKIyMgLTEgKzAsMCAjIwotKi5weWMKSW5kZXg6IFRvb2xzL1F1
ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL19faW5pdF9fLnB5CShyZXZpc2lvbiAyNjExOTkp
CisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9fX2luaXRfXy5weQkobm9uZXhp
c3RlbnQpCkBAIC0xLDMgKzAsMCBAQAotIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0
aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCi0KLWZyb20gaGFuZGxlcnMudXBkYXRlYmFz
ZSBpbXBvcnQgVXBkYXRlQmFzZQpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxl
cnMvYWN0aXZlYm90cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9o
YW5kbGVycy9hY3RpdmVib3RzLnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0
YXR1c1NlcnZlci9oYW5kbGVycy9hY3RpdmVib3RzLnB5CShub25leGlzdGVudCkKQEAgLTEsNTYg
KzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBkYXRldGltZQotaW1wb3J0IGl0ZXJ0
b29scwotaW1wb3J0IG9wZXJhdG9yCi0KLWZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0
IHdlYmFwcAotZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBsYXRl
Ci0KLWZyb20gbW9kZWwucXVldWVzIGltcG9ydCBRdWV1ZQotZnJvbSBtb2RlbCBpbXBvcnQgcXVl
dWVzdGF0dXMKLQotCi1jbGFzcyBBY3RpdmVCb3RzKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6Ci0g
ICAgZGVmIGdldChzZWxmKToKLSAgICAgICAgIyAyMDAwIGlzIHRoZSBHQUUgcmVjb3JkIGZldGNo
IGxpbWl0LgotICAgICAgICByZWNlbnRfc3RhdHVzZXMgPSBxdWV1ZXN0YXR1cy5RdWV1ZVN0YXR1
cy5hbGwoKS5vcmRlcigiLWRhdGUiKS5mZXRjaCg1MDApCi0gICAgICAgIHF1ZXVlX25hbWVfdG9f
bGFzdF9zdGF0dXMgPSB7fQotICAgICAgICBmb3Igc3RhdHVzIGluIHJlY2VudF9zdGF0dXNlczoK
LSAgICAgICAgICAgIGxhc3Rfc3RhdHVzID0gcXVldWVfbmFtZV90b19sYXN0X3N0YXR1cy5nZXQo
c3RhdHVzLmJvdF9pZCkKLSAgICAgICAgICAgIGlmIG5vdCBsYXN0X3N0YXR1cyBvciBzdGF0dXMu
ZGF0ZSA+IGxhc3Rfc3RhdHVzLmRhdGU6Ci0gICAgICAgICAgICAgICAgcXVldWVfbmFtZV90b19s
YXN0X3N0YXR1c1tzdGF0dXMuYm90X2lkXSA9IHN0YXR1cwotCi0gICAgICAgIHNvcnRlZF9ieV9i
b3RfaWQgPSBzb3J0ZWQocXVldWVfbmFtZV90b19sYXN0X3N0YXR1cy52YWx1ZXMoKSwga2V5PW9w
ZXJhdG9yLmF0dHJnZXR0ZXIoJ2JvdF9pZCcpKQotICAgICAgICAjIFNvcnRlZCBpcyBzdGFibGUs
IHNvIHRoaXMgd2lsbCBiZSBzb3J0ZWQgYnkgYm90X2lkLCBncm91cHBlZCBieSBzb3J0ZWQgcXVl
dWVfbmFtZS4KLSAgICAgICAgc29ydGVkX2J5X3F1ZXVlX25hbWUgPSBzb3J0ZWQoc29ydGVkX2J5
X2JvdF9pZCwga2V5PW9wZXJhdG9yLmF0dHJnZXR0ZXIoJ3F1ZXVlX25hbWUnKSkKLSAgICAgICAg
dGVtcGxhdGVfdmFsdWVzID0gewotICAgICAgICAgICAgImxhc3Rfc3RhdHVzZXMiOiBzb3J0ZWRf
YnlfcXVldWVfbmFtZSwKLSAgICAgICAgfQotICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0
ZSh0ZW1wbGF0ZS5yZW5kZXIoInRlbXBsYXRlcy9hY3RpdmVib3RzLmh0bWwiLCB0ZW1wbGF0ZV92
YWx1ZXMpKQpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvZ2MucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvZ2MucHkJKHJldmlz
aW9uIDI2MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL2djLnB5CShu
b25leGlzdGVudCkKQEAgLTEsNDQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIyAKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMg
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBn
b29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwCi0KLWZyb20gbW9kZWwucXVldWVzdGF0
dXMgaW1wb3J0IFF1ZXVlU3RhdHVzCi0KLQotY2xhc3MgR0Mod2ViYXBwLlJlcXVlc3RIYW5kbGVy
KToKLSAgICBkZWYgZ2V0KHNlbGYpOgotICAgICAgICBzdGF0dXNlcyA9IFF1ZXVlU3RhdHVzLmFs
bCgpLm9yZGVyKCItZGF0ZSIpCi0gICAgICAgIHNlZW5fcXVldWVzID0gc2V0KCkKLSAgICAgICAg
Zm9yIHN0YXR1cyBpbiBzdGF0dXNlczoKLSAgICAgICAgICAgIGlmIHN0YXR1cy5hY3RpdmVfcGF0
Y2hfaWQgb3Igc3RhdHVzLmFjdGl2ZV9idWdfaWQ6Ci0gICAgICAgICAgICAgICAgY29udGludWUK
LSAgICAgICAgICAgIGlmIHN0YXR1cy5xdWV1ZV9uYW1lIGluIHNlZW5fcXVldWVzOgotICAgICAg
ICAgICAgICAgIHN0YXR1cy5kZWxldGUoKQotICAgICAgICAgICAgc2Vlbl9xdWV1ZXMuYWRkKHN0
YXR1cy5xdWV1ZV9uYW1lKQotICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgiRG9uZSEi
KQpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvbmV4dHBhdGNoLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL25leHRwYXRjaC5w
eQkocmV2aXNpb24gMjYxMTk5KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMv
bmV4dHBhdGNoLnB5CShub25leGlzdGVudCkKQEAgLTEsNjEgKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLWZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCi0KLWZyb20gZ29vZ2xlLmFwcGVu
Z2luZS5leHQgaW1wb3J0IGRiCi1mcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJh
cHAKLQotZnJvbSBsb2dnZXJzLnJlY29yZHBhdGNoZXZlbnQgaW1wb3J0IFJlY29yZFBhdGNoRXZl
bnQKLWZyb20gbW9kZWwucXVldWVzIGltcG9ydCBRdWV1ZQotCi0KLWNsYXNzIE5leHRQYXRjaCh3
ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgotICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5
IGJlIGEgcG9zdCwgb3IgYW4gZXhwbGljdCBsb2NrX3BhdGNoCi0gICAgIyBzaW5jZSBHRVQgcmVx
dWVzdHMgc2hvdWxkbid0IHJlYWxseSBtb2RpZnkgdGhlIGRhdGFzdG9yZS4KLSAgICBkZWYgZ2V0
KHNlbGYsIHF1ZXVlX25hbWUpOgotICAgICAgICBxdWV1ZSA9IFF1ZXVlLnF1ZXVlX3dpdGhfbmFt
ZShxdWV1ZV9uYW1lKQotICAgICAgICBpZiBub3QgcXVldWU6Ci0gICAgICAgICAgICBzZWxmLmVy
cm9yKDQwNCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICAjIEZJWE1FOiBQYXRjaCBhc3Np
Z25tZW50IHNob3VsZCBwcm9iYWJseSBtb3ZlIGludG8gUXVldWUuCi0gICAgICAgIHBhdGNoX2lk
ID0gZGIucnVuX2luX3RyYW5zYWN0aW9uKHNlbGYuX2Fzc2lnbl9wYXRjaCwgcXVldWUuYWN0aXZl
X3dvcmtfaXRlbXMoKS5rZXkoKSwgcXVldWUud29ya19pdGVtcygpLml0ZW1faWRzKQotICAgICAg
ICBpZiBub3QgcGF0Y2hfaWQ6Ci0gICAgICAgICAgICBzZWxmLmVycm9yKDQwNCkKLSAgICAgICAg
ICAgIHJldHVybgotICAgICAgICBSZWNvcmRQYXRjaEV2ZW50LnN0YXJ0ZWQocGF0Y2hfaWQsIHF1
ZXVlX25hbWUpCi0gICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKHBhdGNoX2lkKQotCi0g
ICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfYXNzaWduX3BhdGNoKGtleSwgd29ya19pdGVtX2lk
cyk6Ci0gICAgICAgIG5vdyA9IGRhdGV0aW1lLnV0Y25vdygpCi0gICAgICAgIGFjdGl2ZV93b3Jr
X2l0ZW1zID0gZGIuZ2V0KGtleSkKLSAgICAgICAgYWN0aXZlX3dvcmtfaXRlbXMuZGVhY3RpdmF0
ZV9leHBpcmVkKG5vdykKLSAgICAgICAgbmV4dF9pdGVtID0gYWN0aXZlX3dvcmtfaXRlbXMubmV4
dF9pdGVtKHdvcmtfaXRlbV9pZHMsIG5vdykKLSAgICAgICAgYWN0aXZlX3dvcmtfaXRlbXMucHV0
KCkKLSAgICAgICAgcmV0dXJuIG5leHRfaXRlbQpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2
ZXIvaGFuZGxlcnMvcGF0Y2gucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2
ZXIvaGFuZGxlcnMvcGF0Y2gucHkJKHJldmlzaW9uIDI2MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3Rh
dHVzU2VydmVyL2hhbmRsZXJzL3BhdGNoLnB5CShub25leGlzdGVudCkKQEAgLTEsNTQgKzAsMCBA
QAotIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIyAKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMgCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQg
d2ViYXBwCi1mcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0LndlYmFwcCBpbXBvcnQgdGVtcGxhdGUK
LQotZnJvbSBtb2RlbC5xdWV1ZXN0YXR1cyBpbXBvcnQgUXVldWVTdGF0dXMKLQotCi1jbGFzcyBQ
YXRjaCh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgotICAgIGRlZiBnZXQoc2VsZiwgYXR0YWNobWVu
dF9pZF9zdHJpbmcsIHF1ZXVlX25hbWU9Tm9uZSk6Ci0gICAgICAgIGF0dGFjaG1lbnRfaWQgPSBp
bnQoYXR0YWNobWVudF9pZF9zdHJpbmcpCi0gICAgICAgIHN0YXR1c2VzID0gUXVldWVTdGF0dXMu
YWxsKCkuZmlsdGVyKCJhY3RpdmVfcGF0Y2hfaWQgPSIsIGF0dGFjaG1lbnRfaWQpLm9yZGVyKCIt
ZGF0ZSIpCi0KLSAgICAgICAgYnVnX2lkID0gTm9uZQotICAgICAgICBxdWV1ZV9zdGF0dXMgPSB7
fQotICAgICAgICBmb3Igc3RhdHVzIGluIHN0YXR1c2VzOgotICAgICAgICAgICAgYnVnX2lkID0g
c3RhdHVzLmFjdGl2ZV9idWdfaWQgIyBTaG91bGQgYmUgdGhlIHNhbWUgZm9yIGV2ZXJ5IHN0YXR1
cy4KLSAgICAgICAgICAgIGlmIHN0YXR1cy5xdWV1ZV9uYW1lID09IHF1ZXVlX25hbWUgb3IgcXVl
dWVfbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHBlcl9xdWV1ZV9zdGF0dXNlcyA9IHF1
ZXVlX3N0YXR1cy5nZXQoc3RhdHVzLnF1ZXVlX25hbWUsIFtdKQotICAgICAgICAgICAgICAgIHBl
cl9xdWV1ZV9zdGF0dXNlcy5hcHBlbmQoc3RhdHVzKQotICAgICAgICAgICAgICAgIHF1ZXVlX3N0
YXR1c1tzdGF0dXMucXVldWVfbmFtZV0gPSBwZXJfcXVldWVfc3RhdHVzZXMKLSAgICAgICAgcXVl
dWVfc3RhdHVzID0gc29ydGVkKHF1ZXVlX3N0YXR1cy5pdGVtcygpKQotICAgICAgICB0ZW1wbGF0
ZV92YWx1ZXMgPSB7Ci0gICAgICAgICAgICAiYXR0YWNobWVudF9pZCIgOiBhdHRhY2htZW50X2lk
LAotICAgICAgICAgICAgImJ1Z19pZCIgOiBidWdfaWQsCi0gICAgICAgICAgICAicXVldWVfc3Rh
dHVzIiA6IHF1ZXVlX3N0YXR1cywKLSAgICAgICAgfQotICAgICAgICBzZWxmLnJlc3BvbnNlLm91
dC53cml0ZSh0ZW1wbGF0ZS5yZW5kZXIoInRlbXBsYXRlcy9wYXRjaC5odG1sIiwgdGVtcGxhdGVf
dmFsdWVzKSkKSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3BhdGNoc3Rh
dHVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3Bh
dGNoc3RhdHVzLnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZl
ci9oYW5kbGVycy9wYXRjaHN0YXR1cy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDQwICswLDAgQEAK
LSMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMgCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9u
LgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jIAotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdl
YmFwcAotCi1mcm9tIG1vZGVsLnF1ZXVlc3RhdHVzIGltcG9ydCBRdWV1ZVN0YXR1cwotCi0KLWNs
YXNzIFBhdGNoU3RhdHVzKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6Ci0gICAgZGVmIGdldChzZWxm
LCBxdWV1ZV9uYW1lLCBhdHRhY2htZW50X2lkKToKLSAgICAgICAgc3RhdHVzZXMgPSBRdWV1ZVN0
YXR1cy5hbGwoKS5maWx0ZXIoJ3F1ZXVlX25hbWUgPScsIHF1ZXVlX25hbWUpLmZpbHRlcignYWN0
aXZlX3BhdGNoX2lkID0nLCBpbnQoYXR0YWNobWVudF9pZCkpLm9yZGVyKCctZGF0ZScpLmZldGNo
KDEpCi0gICAgICAgIGlmIG5vdCBzdGF0dXNlczoKLSAgICAgICAgICAgIHNlbGYuZXJyb3IoNDA0
KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKHN0
YXR1c2VzWzBdLm1lc3NhZ2UpCkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVy
cy9wcm9jZXNzaW5ndGltZXNqc29uLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL2hhbmRsZXJzL3Byb2Nlc3Npbmd0aW1lc2pzb24ucHkJKHJldmlzaW9uIDI2MTE5OSkK
KysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3Byb2Nlc3Npbmd0aW1lc2pzb24u
cHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
IyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKLSMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBkYXRldGltZQotCi1mcm9tIGdvb2dsZS5hcHBlbmdp
bmUuZXh0IGltcG9ydCB3ZWJhcHAKLWZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQud2ViYXBwIGlt
cG9ydCB0ZW1wbGF0ZQotCi1mcm9tIG1vZGVsLnBhdGNobG9nIGltcG9ydCBQYXRjaExvZwotCi0j
IEZhbGwgYmFjayB0byBzaW1wbGVqc29uLCBiZWNhdXNlIHdlIGFyZSBzdGlsbCBvbiBQeXRob24g
Mi41LgotdHJ5OgotICAgIGltcG9ydCBqc29uCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgaW1w
b3J0IHNpbXBsZWpzb24gYXMganNvbgotCi0KLWNsYXNzIFByb2Nlc3NpbmdUaW1lc0pTT04od2Vi
YXBwLlJlcXVlc3RIYW5kbGVyKToKLSAgICBkZWYgX3Jlc3VsdEZyb21GaW5hbFN0YXR1cyhzZWxm
LCBzdGF0dXNfbWVzc2FnZSwgcXVldWVfbmFtZSk6Ci0gICAgICAgIGlmIHN0YXR1c19tZXNzYWdl
ID09ICJQYXNzIjoKLSAgICAgICAgICAgIHJldHVybiAicGFzcyIKLSAgICAgICAgZWxpZiBzdGF0
dXNfbWVzc2FnZSA9PSAiRmFpbCI6Ci0gICAgICAgICAgICByZXR1cm4gImZhaWwiCi0gICAgICAg
IGVsaWYgImRpZCBub3QgcHJvY2VzcyBwYXRjaCIgaW4gc3RhdHVzX21lc3NhZ2U6Ci0gICAgICAg
ICAgICByZXR1cm4gIm5vdCBwcm9jZXNzZWQiCi0gICAgICAgIGVsaWYgc3RhdHVzX21lc3NhZ2Ug
PT0gIkVycm9yOiAiICsgcXVldWVfbmFtZSArICIgdW5hYmxlIHRvIGFwcGx5IHBhdGNoLiI6Ci0g
ICAgICAgICAgICByZXR1cm4gImNvdWxkIG5vdCBhcHBseSIKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHJldHVybiAiaW50ZXJuYWwgZXJyb3IiCi0KLSAgICBkZWYgX2ZldGNoX3BhdGNoX2xv
ZyhzZWxmLCBzdGFydF9kYXRlLCBlbmRfZGF0ZSk6Ci0gICAgICAgIGFsbF9lbnRyaWVzID0gUGF0
Y2hMb2cuYWxsKCkuZmlsdGVyKCdkYXRlID4nLCBzdGFydF9kYXRlKS5maWx0ZXIoJ2RhdGUgPCcs
IGVuZF9kYXRlKS5mZXRjaChsaW1pdD1Ob25lKQotICAgICAgICByZXN1bHQgPSB7fQotICAgICAg
ICBmb3IgZW50cnkgaW4gYWxsX2VudHJpZXM6Ci0gICAgICAgICAgICByZXN1bHQuc2V0ZGVmYXVs
dChlbnRyeS5hdHRhY2htZW50X2lkLCB7fSkKLSAgICAgICAgICAgIHJlc3VsdFtlbnRyeS5hdHRh
Y2htZW50X2lkXVtlbnRyeS5xdWV1ZV9uYW1lXSA9IHsKLSAgICAgICAgICAgICAgICAiZGF0ZSI6
IGVudHJ5LmRhdGUsCi0gICAgICAgICAgICAgICAgIndhaXRfZHVyYXRpb24iOiBlbnRyeS53YWl0
X2R1cmF0aW9uLAotICAgICAgICAgICAgICAgICJwcm9jZXNzX2R1cmF0aW9uIjogZW50cnkucHJv
Y2Vzc19kdXJhdGlvbiwKLSAgICAgICAgICAgICAgICAicmV0cnlfY291bnQiOiBlbnRyeS5yZXRy
eV9jb3VudCwKLSAgICAgICAgICAgICAgICAicmVzb2x1dGlvbiI6IHNlbGYuX3Jlc3VsdEZyb21G
aW5hbFN0YXR1cyhlbnRyeS5sYXRlc3RfbWVzc2FnZSwgZW50cnkucXVldWVfbmFtZSkgaWYgZW50
cnkuZmluaXNoZWQgZWxzZSAiaW4gcHJvZ3Jlc3MiCi0gICAgICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiByZXN1bHQKLQotICAgIGRlZiBnZXQoc2VsZiwgc3RhcnRfeWVhciwgc3RhcnRfbW9udGgs
IHN0YXJ0X2RheSwgc3RhcnRfaG91ciwgc3RhcnRfbWludXRlLCBzdGFydF9zZWNvbmQsIGVuZF95
ZWFyLCBlbmRfbW9udGgsIGVuZF9kYXksIGVuZF9ob3VyLCBlbmRfbWludXRlLCBlbmRfc2Vjb25k
KToKLSAgICAgICAgc2VsZi5yZXNwb25zZS5oZWFkZXJzWyJBY2Nlc3MtQ29udHJvbC1BbGxvdy1P
cmlnaW4iXSA9ICIqIgotICAgICAgICBzZWxmLnJlc3BvbnNlLmhlYWRlcnNbJ0NvbnRlbnQtVHlw
ZSddID0gJ2FwcGxpY2F0aW9uL2pzb24nCi0KLSAgICAgICAgcGF0Y2hfbG9nID0gc2VsZi5fZmV0
Y2hfcGF0Y2hfbG9nKGRhdGV0aW1lLmRhdGV0aW1lKGludChzdGFydF95ZWFyKSwgaW50KHN0YXJ0
X21vbnRoKSwgaW50KHN0YXJ0X2RheSksIGludChzdGFydF9ob3VyKSwgaW50KHN0YXJ0X21pbnV0
ZSksIGludChzdGFydF9zZWNvbmQpKSwKLSAgICAgICAgICAgIGRhdGV0aW1lLmRhdGV0aW1lKGlu
dChlbmRfeWVhciksIGludChlbmRfbW9udGgpLCBpbnQoZW5kX2RheSksIGludChlbmRfaG91ciks
IGludChlbmRfbWludXRlKSwgaW50KGVuZF9zZWNvbmQpKSkKLSAgICAgICAgZHRoYW5kbGVyID0g
bGFtYmRhIG9iajogKG9iai5pc29mb3JtYXQoKSArICJaIikgaWYgaXNpbnN0YW5jZShvYmosIGRh
dGV0aW1lLmRhdGV0aW1lKSBvciBpc2luc3RhbmNlKG9iaiwgZGF0ZXRpbWUuZGF0ZSkgZWxzZSBO
b25lCi0gICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKGpzb24uZHVtcHMocGF0Y2hfbG9n
LCBkZWZhdWx0PWR0aGFuZGxlcikpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9RdWV1ZVN0
YXR1c1NlcnZlci9oYW5kbGVycy9wcm9jZXNzaW5ndGltZXNqc29uLnB5Cl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9xdWV1
ZWNoYXJ0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVy
cy9xdWV1ZWNoYXJ0cy5weQkocmV2aXNpb24gMjYxMTk5KQorKysgVG9vbHMvUXVldWVTdGF0dXNT
ZXJ2ZXIvaGFuZGxlcnMvcXVldWVjaGFydHMucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNTEgKzAs
MCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBjYWxlbmRhcgotZnJvbSBkYXRldGltZSBp
bXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBpdGVydG9vbHMKLWZyb20gdGltZSBpbXBvcnQgdGltZQot
Ci1mcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJhcHAKLWZyb20gZ29vZ2xlLmFw
cGVuZ2luZS5leHQud2ViYXBwIGltcG9ydCB0ZW1wbGF0ZQotCi1mcm9tIGNvbmZpZyBpbXBvcnQg
bG9nZ2luZywgY2hhcnRzCi1mcm9tIG1vZGVsLnBhdGNobG9nIGltcG9ydCBQYXRjaExvZwotZnJv
bSBtb2RlbC5xdWV1ZXMgaW1wb3J0IFF1ZXVlCi1mcm9tIG1vZGVsLnF1ZXVlbG9nIGltcG9ydCBR
dWV1ZUxvZwotCi0KLWNsYXNzIFF1ZXVlQ2hhcnRzKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6Ci0g
ICAgZGVmIGdldChzZWxmLCBxdWV1ZV9uYW1lKToKLSAgICAgICAgcXVldWVfbmFtZSA9IHF1ZXVl
X25hbWUubG93ZXIoKQotICAgICAgICBpZiBub3QgUXVldWUucXVldWVfd2l0aF9uYW1lKHF1ZXVl
X25hbWUpOgotICAgICAgICAgICAgc2VsZi5lcnJvcig0MDQpCi0gICAgICAgICAgICByZXR1cm4K
LQotICAgICAgICB0aW1lc3RhbXAgPSBzZWxmLl9nZXRfdGltZXN0YW1wKCkKLSAgICAgICAgdmll
d19yYW5nZSA9IHNlbGYuX2dldF92aWV3X3JhbmdlKCkKLSAgICAgICAgdGltZV91bml0LCB0aW1l
X3VuaXRfbmFtZSA9IGNoYXJ0cy5nZXRfdGltZV91bml0KHZpZXdfcmFuZ2UpCi0KLSAgICAgICAg
YWxsX3F1ZXVlX25hbWVzID0gbWFwKFF1ZXVlLm5hbWUsIFF1ZXVlLmFsbCgpKQotCi0gICAgICAg
IHRlbXBsYXRlX3ZhbHVlcyA9IHsKLSAgICAgICAgICAgICJhbGxfcXVldWVfbmFtZXMiOiBhbGxf
cXVldWVfbmFtZXMsCi0gICAgICAgICAgICAicGF0Y2hfZGF0YSI6IHNlbGYuX2dldF9wYXRjaF9k
YXRhKHF1ZXVlX25hbWUsIHRpbWVzdGFtcCwgdmlld19yYW5nZSksCi0gICAgICAgICAgICAicXVl
dWVfZGF0YSI6IHNlbGYuX2dldF9xdWV1ZV9kYXRhKHF1ZXVlX25hbWUsIHRpbWVzdGFtcCwgdmll
d19yYW5nZSksCi0gICAgICAgICAgICAicXVldWVfbmFtZSI6IHF1ZXVlX25hbWUsCi0gICAgICAg
ICAgICAic2Vjb25kc19hZ29fbWluIjogMCwKLSAgICAgICAgICAgICJzZWNvbmRzX2Fnb19tYXgi
OiB2aWV3X3JhbmdlLAotICAgICAgICAgICAgInRpbWVfdW5pdF9uYW1lIjogdGltZV91bml0X25h
bWUsCi0gICAgICAgICAgICAidGltZV91bml0IjogdGltZV91bml0LAotICAgICAgICAgICAgInRp
bWVzdGFtcCI6IHRpbWVzdGFtcCwKLSAgICAgICAgICAgICJ2aWV3X3JhbmdlIjogdmlld19yYW5n
ZSwKLSAgICAgICAgICAgICJ2aWV3X3JhbmdlX2Nob2ljZXMiOiBjaGFydHMudmlld19yYW5nZV9j
aG9pY2VzLAotICAgICAgICB9Ci0gICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKHRlbXBs
YXRlLnJlbmRlcigidGVtcGxhdGVzL3F1ZXVlY2hhcnRzLmh0bWwiLCB0ZW1wbGF0ZV92YWx1ZXMp
KQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9nZXRfbWluX21lZF9tYXgoY2xzLCB2YWx1
ZXMsIGRlZmF1bHRzPSgwLCAwLCAwKSk6Ci0gICAgICAgIGlmIG5vdCB2YWx1ZXM6Ci0gICAgICAg
ICAgICByZXR1cm4gZGVmYXVsdHMKLSAgICAgICAgbGVuZ3RoID0gbGVuKHZhbHVlcykKLSAgICAg
ICAgc29ydGVkX3ZhbHVlcyA9IHNvcnRlZCh2YWx1ZXMpCi0gICAgICAgIHJldHVybiBzb3J0ZWRf
dmFsdWVzWzBdLCBzb3J0ZWRfdmFsdWVzW2xlbmd0aCAvIDJdLCBzb3J0ZWRfdmFsdWVzW2xlbmd0
aCAtIDFdCi0KLSAgICBkZWYgX2dldF9wYXRjaF9kYXRhKHNlbGYsIHF1ZXVlX25hbWUsIHRpbWVz
dGFtcCwgdmlld19yYW5nZSk6Ci0gICAgICAgIHBhdGNoX2xvZ3MgPSBzZWxmLl9nZXRfcGF0Y2hf
bG9ncyhxdWV1ZV9uYW1lLCB0aW1lc3RhbXAsIHZpZXdfcmFuZ2UpCi0gICAgICAgIHBhdGNoX2Rh
dGEgPSBbXQotICAgICAgICBmb3IgcGF0Y2hfbG9nIGluIHBhdGNoX2xvZ3M6Ci0gICAgICAgICAg
ICBpZiBwYXRjaF9sb2cucHJvY2Vzc19kdXJhdGlvbiBhbmQgcGF0Y2hfbG9nLndhaXRfZHVyYXRp
b246Ci0gICAgICAgICAgICAgICAgcGF0Y2hfbG9nX3RpbWVzdGFtcCA9IGNhbGVuZGFyLnRpbWVn
bShwYXRjaF9sb2cuZGF0ZS51dGN0aW1ldHVwbGUoKSkKLSAgICAgICAgICAgICAgICBwYXRjaF9k
YXRhLmFwcGVuZCh7Ci0gICAgICAgICAgICAgICAgICAgICJhdHRhY2htZW50X2lkIjogcGF0Y2hf
bG9nLmF0dGFjaG1lbnRfaWQsCi0gICAgICAgICAgICAgICAgICAgICJzZWNvbmRzX2FnbyI6IHRp
bWVzdGFtcCAtIHBhdGNoX2xvZ190aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgICAgICJwcm9j
ZXNzX2R1cmF0aW9uIjogcGF0Y2hfbG9nLnByb2Nlc3NfZHVyYXRpb24gLyBjaGFydHMub25lX21p
bnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgInJldHJ5X2NvdW50IjogcGF0Y2hfbG9nLnJldHJ5
X2NvdW50LAotICAgICAgICAgICAgICAgICAgICAic3RhdHVzX3VwZGF0ZV9jb3VudCI6IHBhdGNo
X2xvZy5zdGF0dXNfdXBkYXRlX2NvdW50LAotICAgICAgICAgICAgICAgICAgICAid2FpdF9kdXJh
dGlvbiI6IHBhdGNoX2xvZy53YWl0X2R1cmF0aW9uIC8gY2hhcnRzLm9uZV9taW51dGUsCi0gICAg
ICAgICAgICAgICB9KQotICAgICAgICByZXR1cm4gcGF0Y2hfZGF0YQotCi0gICAgZGVmIF9nZXRf
cGF0Y2hfbG9ncyhzZWxmLCBxdWV1ZV9uYW1lLCB0aW1lc3RhbXAsIHZpZXdfcmFuZ2UpOgotICAg
ICAgICBwYXRjaF9sb2dfcXVlcnkgPSBQYXRjaExvZy5hbGwoKQotICAgICAgICBwYXRjaF9sb2df
cXVlcnkgPSBwYXRjaF9sb2dfcXVlcnkuZmlsdGVyKCJxdWV1ZV9uYW1lID0iLCBxdWV1ZV9uYW1l
KQotICAgICAgICBwYXRjaF9sb2dfcXVlcnkgPSBwYXRjaF9sb2dfcXVlcnkuZmlsdGVyKCJkYXRl
ID49IiwgZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXAgLSB2aWV3X3JhbmdlKSkK
LSAgICAgICAgcGF0Y2hfbG9nX3F1ZXJ5ID0gcGF0Y2hfbG9nX3F1ZXJ5LmZpbHRlcigiZGF0ZSA8
PSIsIGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodGltZXN0YW1wKSkKLSAgICAgICAgcGF0Y2hf
bG9nX3F1ZXJ5ID0gcGF0Y2hfbG9nX3F1ZXJ5Lm9yZGVyKCJkYXRlIikKLSAgICAgICAgcmV0dXJu
IHBhdGNoX2xvZ19xdWVyeS5ydW4obGltaXQ9Y2hhcnRzLnBhdGNoX2xvZ19saW1pdCkKLQotICAg
IGRlZiBfZ2V0X3F1ZXVlX2RhdGEoc2VsZiwgcXVldWVfbmFtZSwgdGltZXN0YW1wLCB2aWV3X3Jh
bmdlKToKLSAgICAgICAgcXVldWVfbG9ncyA9IHNlbGYuX2dldF9xdWV1ZV9sb2dzKHF1ZXVlX25h
bWUsIHRpbWVzdGFtcCwgdmlld19yYW5nZSkKLSAgICAgICAgcXVldWVfZGF0YSA9IFtdCi0gICAg
ICAgIGZvciBxdWV1ZV9sb2cgaW4gcXVldWVfbG9nczoKLSAgICAgICAgICAgIHF1ZXVlX2xvZ190
aW1lc3RhbXAgPSBjYWxlbmRhci50aW1lZ20ocXVldWVfbG9nLmRhdGUudXRjdGltZXR1cGxlKCkp
Ci0gICAgICAgICAgICBwX21pbiwgcF9tZWQsIHBfbWF4ID0gc2VsZi5fZ2V0X21pbl9tZWRfbWF4
KHF1ZXVlX2xvZy5wYXRjaF9wcm9jZXNzX2R1cmF0aW9ucykKLSAgICAgICAgICAgIHdfbWluLCB3
X21lZCwgd19tYXggPSBzZWxmLl9nZXRfbWluX21lZF9tYXgocXVldWVfbG9nLnBhdGNoX3dhaXRf
ZHVyYXRpb25zKQotICAgICAgICAgICAgcXVldWVfZGF0YS5hcHBlbmQoewotICAgICAgICAgICAg
ICAgICJib3RzX3NlZW4iOiBsZW4ocXVldWVfbG9nLmJvdF9pZHNfc2VlbiksCi0gICAgICAgICAg
ICAgICAgInNlY29uZHNfYWdvIjogdGltZXN0YW1wIC0gcXVldWVfbG9nX3RpbWVzdGFtcCwKLSAg
ICAgICAgICAgICAgICAicGF0Y2hfcHJvY2Vzc2luZ19taW4iOiBwX21pbiwKLSAgICAgICAgICAg
ICAgICAicGF0Y2hfcHJvY2Vzc2luZ19tZWQiOiBwX21lZCwKLSAgICAgICAgICAgICAgICAicGF0
Y2hfcHJvY2Vzc2luZ19tYXgiOiBwX21heCwKLSAgICAgICAgICAgICAgICAicGF0Y2hfcmV0cnlf
Y291bnQiOiBxdWV1ZV9sb2cucGF0Y2hfcmV0cnlfY291bnQsCi0gICAgICAgICAgICAgICAgInBh
dGNoX3dhaXRpbmdfbWluIjogd19taW4sCi0gICAgICAgICAgICAgICAgInBhdGNoX3dhaXRpbmdf
bWVkIjogd19tZWQsCi0gICAgICAgICAgICAgICAgInBhdGNoX3dhaXRpbmdfbWF4Ijogd19tYXgs
Ci0gICAgICAgICAgICAgICAgInBhdGNoZXNfY29tcGxldGVkIjogbGVuKHF1ZXVlX2xvZy5wYXRj
aF9wcm9jZXNzX2R1cmF0aW9ucyksCi0gICAgICAgICAgICAgICAgInBhdGNoZXNfd2FpdGluZyI6
IHF1ZXVlX2xvZy5tYXhfcGF0Y2hlc193YWl0aW5nLAotICAgICAgICAgICAgICAgICJzdGF0dXNf
dXBkYXRlX2NvdW50IjogcXVldWVfbG9nLnN0YXR1c191cGRhdGVfY291bnQsCi0gICAgICAgICAg
ICB9KQotICAgICAgICByZXR1cm4gcXVldWVfZGF0YQotCi0gICAgZGVmIF9nZXRfcXVldWVfbG9n
cyhzZWxmLCBxdWV1ZV9uYW1lLCB0aW1lc3RhbXAsIHZpZXdfcmFuZ2UpOgotICAgICAgICBxdWV1
ZV9sb2dzID0gW10KLSAgICAgICAgY3VycmVudF90aW1lc3RhbXAgPSB0aW1lc3RhbXAgLSB2aWV3
X3JhbmdlCi0gICAgICAgIHdoaWxlIGN1cnJlbnRfdGltZXN0YW1wIDw9IHRpbWVzdGFtcDoKLSAg
ICAgICAgICAgIHF1ZXVlX2xvZ3MuYXBwZW5kKFF1ZXVlTG9nLmdldF9hdChxdWV1ZV9uYW1lLCBs
b2dnaW5nLnF1ZXVlX2xvZ19kdXJhdGlvbiwgY3VycmVudF90aW1lc3RhbXApKQotICAgICAgICAg
ICAgY3VycmVudF90aW1lc3RhbXAgKz0gbG9nZ2luZy5xdWV1ZV9sb2dfZHVyYXRpb24KLSAgICAg
ICAgcmV0dXJuIHF1ZXVlX2xvZ3MKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfZ2V0X3Rp
bWVfdW5pdChjbHMsIHZpZXdfcmFuZ2UpOgotICAgICAgICBpZiB2aWV3X3JhbmdlID4gY2hhcnRz
Lm9uZV9kYXkgKiAyOgotICAgICAgICAgICAgcmV0dXJuIAotCi0gICAgZGVmIF9nZXRfdGltZXN0
YW1wKHNlbGYpOgotICAgICAgICB0aW1lc3RhbXAgPSBzZWxmLnJlcXVlc3QuZ2V0KCJ0aW1lc3Rh
bXAiKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gaW50KHRpbWVzdGFtcCkKLSAg
ICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gaW50KHRpbWUoKSkK
LQotICAgIGRlZiBfZ2V0X3ZpZXdfcmFuZ2Uoc2VsZik6Ci0gICAgICAgIHZpZXdfcmFuZ2UgPSBz
ZWxmLnJlcXVlc3QuZ2V0KCJ2aWV3X3JhbmdlIikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
cmV0dXJuIGludCh2aWV3X3JhbmdlKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAg
ICAgICAgIHJldHVybiBjaGFydHMuZGVmYXVsdF92aWV3X3JhbmdlCkluZGV4OiBUb29scy9RdWV1
ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9xdWV1ZWxlbmd0aGpzb24ucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvcXVldWVsZW5ndGhqc29uLnB5CShyZXZp
c2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9xdWV1ZWxl
bmd0aGpzb24ucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw0OSArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKLSMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1w
b3J0IHdlYmFwcAotCi1mcm9tIG1vZGVsLnF1ZXVlcyBpbXBvcnQgUXVldWUKLQotIyBGYWxsIGJh
Y2sgdG8gc2ltcGxlanNvbiwgYmVjYXVzZSB3ZSBhcmUgc3RpbGwgb24gUHl0aG9uIDIuNS4KLXRy
eToKLSAgICBpbXBvcnQganNvbgotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGltcG9ydCBzaW1w
bGVqc29uIGFzIGpzb24KLQotCi1jbGFzcyBRdWV1ZUxlbmd0aEpTT04od2ViYXBwLlJlcXVlc3RI
YW5kbGVyKToKLSAgICBkZWYgZ2V0KHNlbGYsIHF1ZXVlX25hbWUpOgotICAgICAgICBzZWxmLnJl
c3BvbnNlLmhlYWRlcnNbIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiJdID0gIioiCi0KLSAg
ICAgICAgcXVldWVfbmFtZSA9IHF1ZXVlX25hbWUubG93ZXIoKQotICAgICAgICBxdWV1ZSA9IFF1
ZXVlLnF1ZXVlX3dpdGhfbmFtZShxdWV1ZV9uYW1lKQotICAgICAgICBpZiBub3QgcXVldWU6Ci0g
ICAgICAgICAgICBzZWxmLmVycm9yKDQwNCkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAg
IHNlbGYucmVzcG9uc2UuaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSAnYXBwbGljYXRpb24vanNv
bicKLQotICAgICAgICBzdGF0dXMgPSB7Ci0gICAgICAgICAgICAicXVldWVfbGVuZ3RoIjogbGVu
KHF1ZXVlLndvcmtfaXRlbXMoKS5pdGVtX2lkcykKLSAgICAgICAgfQotICAgICAgICBzZWxmLnJl
c3BvbnNlLm91dC53cml0ZShqc29uLmR1bXBzKHN0YXR1cykpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9xdWV1ZWxlbmd0aGpzb24ucHkKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLUxGClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hh
bmRsZXJzL3F1ZXVlc3RhdHVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2Vy
dmVyL2hhbmRsZXJzL3F1ZXVlc3RhdHVzLnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9R
dWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9xdWV1ZXN0YXR1cy5weQkobm9uZXhpc3RlbnQpCkBA
IC0xLDExNyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGRhdGV0aW1lCi1pbXBv
cnQgaXRlcnRvb2xzCi0KLWZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAot
ZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCi0KLWZyb20g
bW9kZWwucXVldWVzIGltcG9ydCBRdWV1ZQotZnJvbSBtb2RlbCBpbXBvcnQgcXVldWVzdGF0dXMK
LQotCi1jbGFzcyBRdWV1ZVN0YXR1cyh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgotICAgIGRlZiBf
cm93c19mb3Jfd29ya19pdGVtcyhzZWxmLCBxdWV1ZSk6Ci0gICAgICAgIHF1ZXVlZF9pdGVtcyA9
IHF1ZXVlLndvcmtfaXRlbXMoKQotICAgICAgICBhY3RpdmVfaXRlbXMgPSBxdWV1ZS5hY3RpdmVf
d29ya19pdGVtcygpCi0gICAgICAgIGlmIG5vdCBxdWV1ZWRfaXRlbXM6Ci0gICAgICAgICAgICBy
ZXR1cm4gW10KLSAgICAgICAgcm93cyA9IFtdCi0gICAgICAgIGZvciBpdGVtX2lkIGluIHF1ZXVl
ZF9pdGVtcy5pdGVtX2lkczoKLSAgICAgICAgICAgIHJvd3MuYXBwZW5kKHsKLSAgICAgICAgICAg
ICAgICAiYXR0YWNobWVudF9pZCI6IGl0ZW1faWQsCi0gICAgICAgICAgICAgICAgImJ1Z19pZCI6
IDEsCi0gICAgICAgICAgICAgICAgImxvY2tfdGltZSI6IGFjdGl2ZV9pdGVtcyBhbmQgYWN0aXZl
X2l0ZW1zLnRpbWVfZm9yX2l0ZW0oaXRlbV9pZCksCi0gICAgICAgICAgICB9KQotICAgICAgICBy
ZXR1cm4gcm93cwotCi0gICAgZGVmIF9ncm91cGluZ19rZXlfZm9yX3N0YXR1cyhzZWxmLCBzdGF0
dXMpOgotICAgICAgICByZXR1cm4gIiVzLSVzIiAlIChzdGF0dXMuYWN0aXZlX3BhdGNoX2lkLCBz
dGF0dXMuYm90X2lkKQotCi0gICAgZGVmIF9idWlsZF9zdGF0dXNfZ3JvdXBzKHNlbGYsIHN0YXR1
c2VzKToKLSAgICAgICAgcmV0dXJuIFtsaXN0KGdyb3VwKSBmb3Iga2V5LCBncm91cCBpbiBpdGVy
dG9vbHMuZ3JvdXBieShzdGF0dXNlcywgc2VsZi5fZ3JvdXBpbmdfa2V5X2Zvcl9zdGF0dXMpXQot
Ci0gICAgZGVmIF9mZXRjaF9zdGF0dXNlcyhzZWxmLCBxdWV1ZSwgYm90X2lkKToKLSAgICAgICAg
c3RhdHVzZXMgPSBxdWV1ZXN0YXR1cy5RdWV1ZVN0YXR1cy5hbGwoKQotICAgICAgICBzdGF0dXNl
cy5maWx0ZXIoInF1ZXVlX25hbWUgPSIsIHF1ZXVlLm5hbWUoKSkKLSAgICAgICAgaWYgYm90X2lk
OgotICAgICAgICAgICAgc3RhdHVzZXMuZmlsdGVyKCJib3RfaWQgPSIsIGJvdF9pZCkKLSAgICAg
ICAgcmV0dXJuIHN0YXR1c2VzLm9yZGVyKCItZGF0ZSIpLmZldGNoKDUwKQotCi0gICAgZGVmIF9m
ZXRjaF9sYXN0X21lc3NhZ2VfbWF0Y2hpbmcoc2VsZiwgcXVldWUsIGJvdF9pZCwgbWVzc2FnZSk6
Ci0gICAgICAgIHN0YXR1c2VzID0gcXVldWVzdGF0dXMuUXVldWVTdGF0dXMuYWxsKCkKLSAgICAg
ICAgc3RhdHVzZXMuZmlsdGVyKCJxdWV1ZV9uYW1lID0iLCBxdWV1ZS5uYW1lKCkpCi0gICAgICAg
IGlmIGJvdF9pZDoKLSAgICAgICAgICAgIHN0YXR1c2VzLmZpbHRlcigiYm90X2lkID0iLCBib3Rf
aWQpCi0gICAgICAgIHN0YXR1c2VzLmZpbHRlcigibWVzc2FnZSA9IiwgbWVzc2FnZSkKLSAgICAg
ICAgcmV0dXJuIHN0YXR1c2VzLm9yZGVyKCItZGF0ZSIpLmdldCgpCi0KLSAgICBkZWYgX2ZldGNo
X3RyYWlsaW5nX2RheXNfcGFzc19jb3VudChzZWxmLCBxdWV1ZSwgYm90X2lkLCBkYXlzKToKLSAg
ICAgICAgc3RhdHVzZXMgPSBxdWV1ZXN0YXR1cy5RdWV1ZVN0YXR1cy5hbGwoKQotICAgICAgICBz
dGF0dXNlcy5maWx0ZXIoInF1ZXVlX25hbWUgPSIsIHF1ZXVlLm5hbWUoKSkKLSAgICAgICAgZGF5
c19hZ28gPSBkYXRldGltZS5kYXRldGltZS5ub3coKSAtIGRhdGV0aW1lLnRpbWVkZWx0YShkYXlz
PWRheXMpCi0gICAgICAgIHN0YXR1c2VzLmZpbHRlcigiZGF0ZSA+IiwgZGF5c19hZ28pCi0gICAg
ICAgIGlmIGJvdF9pZDoKLSAgICAgICAgICAgIHN0YXR1c2VzLmZpbHRlcigiYm90X2lkID0iLCBi
b3RfaWQpCi0gICAgICAgIHN0YXR1c2VzLmZpbHRlcigibWVzc2FnZSA9IiwgIlBhc3MiKQotICAg
ICAgICByZXR1cm4gc3RhdHVzZXMuY291bnQoKQotCi0gICAgZGVmIF9mZXRjaF90cmFpbGluZ19k
YXlzX3Bhc3NfY291bnRfc3RyaW5nKHNlbGYsIHF1ZXVlLCBib3RfaWQsIGRheXMpOgotICAgICAg
ICBzdGF0dXNfY291bnQgPSBzZWxmLl9mZXRjaF90cmFpbGluZ19kYXlzX3Bhc3NfY291bnQocXVl
dWUsIGJvdF9pZCwgZGF5cykKLSAgICAgICAgIyBHUUwgaGFzIGEgcmVzdWx0IGxpbWl0IG9mIDEw
MDAsIHNvIHdlIHJldHVybiBhIHNwZWNpYWwgc3RyaW5nIHRvIGluZGljYXRlIHdlIGhpdCB0aGF0
IGxpbWl0LgotICAgICAgICBpZiBzdGF0dXNfY291bnQgPT0gMTAwMDoKLSAgICAgICAgICAgIHN0
YXR1c19jb3VudCA9ICIxMDAwKyIKLSAgICAgICAgcmV0dXJuIHN0cihzdGF0dXNfY291bnQpCi0K
LSAgICBkZWYgX3BhZ2VfdGl0bGUoc2VsZiwgcXVldWUsIGJvdF9pZCk6Ci0gICAgICAgIHRpdGxl
ID0gIiVzIE1lc3NhZ2VzIiAlIHF1ZXVlLmRpc3BsYXlfbmFtZSgpCi0gICAgICAgIGlmIGJvdF9p
ZDoKLSAgICAgICAgICAgIHRpdGxlICs9ICIgZnJvbSBcIiVzXCIiICUgKGJvdF9pZCkKLSAgICAg
ICAgcmV0dXJuIHRpdGxlCi0KLSAgICBkZWYgZ2V0KHNlbGYsIHF1ZXVlX25hbWUsIGJvdF9pZD1O
b25lKToKLSAgICAgICAgcXVldWVfbmFtZSA9IHF1ZXVlX25hbWUubG93ZXIoKQotICAgICAgICBx
dWV1ZSA9IFF1ZXVlLnF1ZXVlX3dpdGhfbmFtZShxdWV1ZV9uYW1lKQotICAgICAgICBpZiBub3Qg
cXVldWU6Ci0gICAgICAgICAgICBzZWxmLmVycm9yKDQwNCkKLSAgICAgICAgICAgIHJldHVybgot
Ci0gICAgICAgIHN0YXR1c2VzID0gc2VsZi5fZmV0Y2hfc3RhdHVzZXMocXVldWUsIGJvdF9pZCkK
LSAgICAgICAgdGVtcGxhdGVfdmFsdWVzID0gewotICAgICAgICAgICAgInF1ZXVlX25hbWUiOiBx
dWV1ZV9uYW1lLAotICAgICAgICAgICAgInBhZ2VfdGl0bGUiOiBzZWxmLl9wYWdlX3RpdGxlKHF1
ZXVlLCBib3RfaWQpLAotICAgICAgICAgICAgIndvcmtfaXRlbV9yb3dzIjogc2VsZi5fcm93c19m
b3Jfd29ya19pdGVtcyhxdWV1ZSksCi0gICAgICAgICAgICAic3RhdHVzX2dyb3VwcyI6IHNlbGYu
X2J1aWxkX3N0YXR1c19ncm91cHMoc3RhdHVzZXMpLAotICAgICAgICAgICAgImJvdF9pZCI6IGJv
dF9pZCwKLSAgICAgICAgICAgICJsYXN0X3Bhc3MiOiBzZWxmLl9mZXRjaF9sYXN0X21lc3NhZ2Vf
bWF0Y2hpbmcocXVldWUsIGJvdF9pZCwgIlBhc3MiKSwKLSAgICAgICAgICAgICJsYXN0X2Jvb3Qi
OiBzZWxmLl9mZXRjaF9sYXN0X21lc3NhZ2VfbWF0Y2hpbmcocXVldWUsIGJvdF9pZCwgIlN0YXJ0
aW5nIFF1ZXVlIiksCi0gICAgICAgICAgICAidHJhaWxpbmdfbW9udGhfcGFzc19jb3VudCI6IHNl
bGYuX2ZldGNoX3RyYWlsaW5nX2RheXNfcGFzc19jb3VudF9zdHJpbmcocXVldWUsIGJvdF9pZCwg
MzApLAotICAgICAgICAgICAgInRyYWlsaW5nX3dlZWtfcGFzc19jb3VudCI6IHNlbGYuX2ZldGNo
X3RyYWlsaW5nX2RheXNfcGFzc19jb3VudF9zdHJpbmcocXVldWUsIGJvdF9pZCwgNyksCi0gICAg
ICAgIH0KLSAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUodGVtcGxhdGUucmVuZGVyKCJ0
ZW1wbGF0ZXMvcXVldWVzdGF0dXMuaHRtbCIsIHRlbXBsYXRlX3ZhbHVlcykpCkluZGV4OiBUb29s
cy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9xdWV1ZXN0YXR1c191bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9xdWV1ZXN0YXR1c191
bml0dGVzdC5weQkocmV2aXNpb24gMjYxMTk5KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIv
aGFuZGxlcnMvcXVldWVzdGF0dXNfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MiAr
MCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBSZXNlYXJjaCBpbiBNb3Rpb24gTHRk
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB1bml0dGVzdAotCi1m
cm9tIGhhbmRsZXJzLnF1ZXVlc3RhdHVzIGltcG9ydCBRdWV1ZVN0YXR1cwotZnJvbSBtb2RlbC5x
dWV1ZXMgaW1wb3J0IFF1ZXVlCi0KLQotY2xhc3MgTW9ja1N0YXR1cyhvYmplY3QpOgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwYXRjaF9pZCwgYm90X2lkKToKLSAgICAgICAgc2VsZi5hY3RpdmVf
cGF0Y2hfaWQgPSBwYXRjaF9pZAotICAgICAgICBzZWxmLmJvdF9pZCA9IGJvdF9pZAotCi0KLWNs
YXNzIFF1ZXVlU3RhdHVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfYnVp
bGRfc3RhdHVzX2dyb3VwcyhzZWxmKToKLSAgICAgICAgcXVldWVfc3RhdHVzID0gUXVldWVTdGF0
dXMoKQotICAgICAgICBzdGF0dXNlcyA9IFsKLSAgICAgICAgICAgIE1vY2tTdGF0dXMoMSwgImZv
byIpLAotICAgICAgICAgICAgTW9ja1N0YXR1cygxLCAiZm9vIiksCi0gICAgICAgICAgICBNb2Nr
U3RhdHVzKDIsICJmb28iKSwKLSAgICAgICAgICAgIE1vY2tTdGF0dXMoMSwgImZvbyIpLAotICAg
ICAgICAgICAgTW9ja1N0YXR1cygxLCAiYmFyIiksCi0gICAgICAgICAgICBNb2NrU3RhdHVzKDEs
ICJmb28iKSwKLSAgICAgICAgXQotICAgICAgICBncm91cHMgPSBxdWV1ZV9zdGF0dXMuX2J1aWxk
X3N0YXR1c19ncm91cHMoc3RhdHVzZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdy
b3VwcyksIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXBzWzBdLCBzdGF0dXNlc1sw
OjJdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3Vwc1sxXSwgc3RhdHVzZXNbMjozXSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cHNbMl0sIHN0YXR1c2VzWzM6NF0pCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXBzWzNdLCBzdGF0dXNlc1s0OjVdKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGdyb3Vwc1s0XSwgc3RhdHVzZXNbNTo2XSkKLQotCi1pZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQpJbmRleDogVG9vbHMvUXVldWVT
dGF0dXNTZXJ2ZXIvaGFuZGxlcnMvcXVldWVzdGF0dXNqc29uLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3F1ZXVlc3RhdHVzanNvbi5weQkocmV2aXNp
b24gMjYxMTk5KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvcXVldWVzdGF0
dXNqc29uLnB5CShub25leGlzdGVudCkKQEAgLTEsMTIwICswLDAgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotIyBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQg
aXRlcnRvb2xzCi0KLWZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAotZnJv
bSBnb29nbGUuYXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCi0KLWZyb20gbW9k
ZWwucGF0Y2hsb2cgaW1wb3J0IFBhdGNoTG9nCi1mcm9tIG1vZGVsLnF1ZXVlcyBpbXBvcnQgUXVl
dWUKLWZyb20gbW9kZWwucXVldWVzdGF0dXMgaW1wb3J0IFF1ZXVlU3RhdHVzCi0KLSMgRmFsbCBi
YWNrIHRvIHNpbXBsZWpzb24sIGJlY2F1c2Ugd2UgYXJlIHN0aWxsIG9uIFB5dGhvbiAyLjUuCi10
cnk6Ci0gICAgaW1wb3J0IGpzb24KLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBpbXBvcnQgc2lt
cGxlanNvbiBhcyBqc29uCi0KLQotY2xhc3MgUXVldWVTdGF0dXNKU09OKHdlYmFwcC5SZXF1ZXN0
SGFuZGxlcik6Ci0gICAgZGVmIF9yb3dzX2Zvcl93b3JrX2l0ZW1zKHNlbGYsIHF1ZXVlKToKLSAg
ICAgICAgcXVldWVkX2l0ZW1zID0gcXVldWUud29ya19pdGVtcygpCi0gICAgICAgIGFjdGl2ZV9p
dGVtcyA9IHF1ZXVlLmFjdGl2ZV93b3JrX2l0ZW1zKCkKLSAgICAgICAgaWYgbm90IHF1ZXVlZF9p
dGVtczoKLSAgICAgICAgICAgIHJldHVybiBbXQotCi0gICAgICAgIHJvd3MgPSBbXQotICAgICAg
ICBmb3IgaXRlbV9pZCBpbiBxdWV1ZWRfaXRlbXMuaXRlbV9pZHM6Ci0gICAgICAgICAgICBwYXRj
aFN0YXR1c1F1ZXJ5ID0gUXVldWVTdGF0dXMuYWxsKCkuZmlsdGVyKCdxdWV1ZV9uYW1lID0nLCBx
dWV1ZS5uYW1lKCkpLmZpbHRlcignYWN0aXZlX3BhdGNoX2lkID0nLCBpdGVtX2lkKS5vcmRlcign
LWRhdGUnKQotICAgICAgICAgICAgc3RhdHVzZXMgPSBwYXRjaFN0YXR1c1F1ZXJ5LmZldGNoKDEp
Ci0gICAgICAgICAgICBtZXNzYWdlID0gTm9uZQotICAgICAgICAgICAgbWVzc2FnZV90aW1lID0g
Tm9uZQotICAgICAgICAgICAgYnVnX2lkID0gTm9uZQotICAgICAgICAgICAgcmVzdWx0c191cmwg
PSBOb25lCi0gICAgICAgICAgICBpZiBzdGF0dXNlczoKLSAgICAgICAgICAgICAgICBtZXNzYWdl
ID0gc3RhdHVzZXNbMF0ubWVzc2FnZQotICAgICAgICAgICAgICAgIG1lc3NhZ2VfdGltZSA9IHN0
YXR1c2VzWzBdLmRhdGUKLSAgICAgICAgICAgICAgICBidWdfaWQgPSBzdGF0dXNlc1swXS5hY3Rp
dmVfYnVnX2lkCi0gICAgICAgICAgICAgICAgcmVzdWx0c191cmwgPSBzZWxmLnJlcXVlc3QuaG9z
dF91cmwgKyAiL3Jlc3VsdHMvIiArIHN0cihzdGF0dXNlc1swXS5rZXkoKS5pZCgpKSBpZiBzdGF0
dXNlc1swXS5yZXN1bHRzX2ZpbGUgZWxzZSBOb25lCi0KLSAgICAgICAgICAgIHJvdyA9IHsKLSAg
ICAgICAgICAgICAgICAiYXR0YWNobWVudF9pZCI6IGl0ZW1faWQsCi0gICAgICAgICAgICAgICAg
ImJ1Z19pZCI6IGJ1Z19pZCwKLSAgICAgICAgICAgICAgICAiYWN0aXZlIjogYWN0aXZlX2l0ZW1z
IGFuZCBhY3RpdmVfaXRlbXMudGltZV9mb3JfaXRlbShpdGVtX2lkKSAhPSBOb25lLAotICAgICAg
ICAgICAgICAgICJhY3RpdmVfc2luY2UiOiBhY3RpdmVfaXRlbXMgYW5kIGFjdGl2ZV9pdGVtcy50
aW1lX2Zvcl9pdGVtKGl0ZW1faWQpLAotICAgICAgICAgICAgICAgICJsYXRlc3RfbWVzc2FnZSI6
IG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgImxhdGVzdF9tZXNzYWdlX3RpbWUiOiBtZXNzYWdl
X3RpbWUsCi0gICAgICAgICAgICAgICAgInN0YXR1c19wYWdlIjogc2VsZi5yZXF1ZXN0Lmhvc3Rf
dXJsICsgIi9wYXRjaC8iICsgc3RyKGl0ZW1faWQpLAotICAgICAgICAgICAgICAgICJsYXRlc3Rf
cmVzdWx0cyI6IHJlc3VsdHNfdXJsLAotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwYXRj
aF9sb2cgPSBQYXRjaExvZy5sb29rdXBfaWZfZXhpc3RzKGl0ZW1faWQsIHF1ZXVlLm5hbWUoKSkK
LSAgICAgICAgICAgIGlmIHBhdGNoX2xvZyBhbmQgcGF0Y2hfbG9nLnJldHJ5X2NvdW50OgotICAg
ICAgICAgICAgICAgIHJvd1sicmV0cnlfY291bnQiXSA9IHBhdGNoX2xvZy5yZXRyeV9jb3VudAot
Ci0gICAgICAgICAgICByb3dzLmFwcGVuZChyb3cpCi0gICAgICAgIHJldHVybiByb3dzCi0KLSAg
ICBkZWYgX2JvdHMoc2VsZiwgcXVldWUpOgotICAgICAgICAjIEZpcnN0LCBjb2xsZWN0IGFsbCBi
b3RzIHRoYXQgZXZlciBzZXJ2ZWQgdGhpcyBxdWV1ZS4KLSAgICAgICAgYm90X2lkX3N0YXR1c2Vz
ID0gUXVldWVTdGF0dXMuYWxsKHByb2plY3Rpb249Wydib3RfaWQnXSwgZGlzdGluY3Q9VHJ1ZSku
ZmlsdGVyKCdxdWV1ZV9uYW1lID0nLCBxdWV1ZS5uYW1lKCkpLm9yZGVyKCctZGF0ZScpLmZldGNo
KDUwMCkKLSAgICAgICAgYm90X2lkcyA9IGxpc3QoZW50cnkuYm90X2lkIGZvciBlbnRyeSBpbiBi
b3RfaWRfc3RhdHVzZXMpCi0gICAgICAgIHJlc3VsdCA9IFtdCi0gICAgICAgIGZvciBib3RfaWQg
aW4gYm90X2lkczoKLSAgICAgICAgICAgIHN0YXR1cyA9IFF1ZXVlU3RhdHVzLmFsbCgpLmZpbHRl
cignYm90X2lkID0nLCBib3RfaWQpLm9yZGVyKCctZGF0ZScpLmdldCgpCi0KLSAgICAgICAgICAg
IGlmIHN0YXR1cy5xdWV1ZV9uYW1lICE9IHF1ZXVlLm5hbWUoKToKLSAgICAgICAgICAgICAgICAj
IFRoZSBib3QgZ290IHJlLXB1cnBvc2VkLCBhbmQgaXMgc2VydmluZyBhIGRpZmZlcmVudCBxdWV1
ZSBub3cuCi0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCh7Ci0gICAgICAgICAgICAgICAgImJvdF9pZCI6IGJvdF9pZCwKLSAgICAgICAgICAgICAg
ICAic3RhdHVzX3BhZ2UiOiBzZWxmLnJlcXVlc3QuaG9zdF91cmwgKyAiL3F1ZXVlLXN0YXR1cy8i
ICsgcXVldWUubmFtZSgpICsgIi9ib3RzLyIgKyBib3RfaWQsCi0gICAgICAgICAgICAgICAgImxh
dGVzdF9tZXNzYWdlIjogc3RhdHVzLm1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgImxhdGVzdF9t
ZXNzYWdlX3RpbWUiOiBzdGF0dXMuZGF0ZSwKLSAgICAgICAgICAgICAgICAibGF0ZXN0X21lc3Nh
Z2VfYnVnX2lkIjogc3RhdHVzLmFjdGl2ZV9idWdfaWQsCi0gICAgICAgICAgICAgICAgImxhdGVz
dF9tZXNzYWdlX3BhdGNoX2lkIjogc3RhdHVzLmFjdGl2ZV9wYXRjaF9pZCwKLSAgICAgICAgICAg
ICAgICAibGF0ZXN0X291dHB1dCI6IHNlbGYucmVxdWVzdC5ob3N0X3VybCArICIvcmVzdWx0cy8i
ICsgc3RyKHN0YXR1cy5rZXkoKS5pZCgpKSBpZiBzdGF0dXMucmVzdWx0c19maWxlIGVsc2UgTm9u
ZSwKLSAgICAgICAgICAgIH0pCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBnZXQo
c2VsZiwgcXVldWVfbmFtZSk6Ci0gICAgICAgIHNlbGYucmVzcG9uc2UuaGVhZGVyc1siQWNjZXNz
LUNvbnRyb2wtQWxsb3ctT3JpZ2luIl0gPSAiKiIKLQotICAgICAgICBxdWV1ZV9uYW1lID0gcXVl
dWVfbmFtZS5sb3dlcigpCi0gICAgICAgIHF1ZXVlID0gUXVldWUucXVldWVfd2l0aF9uYW1lKHF1
ZXVlX25hbWUpCi0gICAgICAgIGlmIG5vdCBxdWV1ZToKLSAgICAgICAgICAgIHNlbGYuZXJyb3Io
NDA0KQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgc2VsZi5yZXNwb25zZS5oZWFkZXJz
WydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uJwotCi0gICAgICAgIHN0YXR1cyA9
IHsKLSAgICAgICAgICAgICJzdGF0dXNfcGFnZSI6IHNlbGYucmVxdWVzdC5ob3N0X3VybCArICIv
cXVldWUtc3RhdHVzLyIgKyBxdWV1ZV9uYW1lLAotICAgICAgICAgICAgImNoYXJ0c19wYWdlIjog
c2VsZi5yZXF1ZXN0Lmhvc3RfdXJsICsgIi9xdWV1ZS1jaGFydHMvIiArIHF1ZXVlX25hbWUsCi0g
ICAgICAgICAgICAicXVldWUiOiBzZWxmLl9yb3dzX2Zvcl93b3JrX2l0ZW1zKHF1ZXVlKSwKLSAg
ICAgICAgICAgICJib3RzIjogc2VsZi5fYm90cyhxdWV1ZSksCi0gICAgICAgIH0KLSAgICAgICAg
ZHRoYW5kbGVyID0gbGFtYmRhIG9iajogb2JqLmlzb2Zvcm1hdCgpICsgIloiIGlmIGlzaW5zdGFu
Y2Uob2JqLCBkYXRldGltZS5kYXRldGltZSkgb3IgaXNpbnN0YW5jZShvYmosIGRhdGV0aW1lLmRh
dGUpIGVsc2UgTm9uZQotICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZShqc29uLmR1bXBz
KHN0YXR1cywgZGVmYXVsdD1kdGhhbmRsZXIpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMv
UXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvcXVldWVzdGF0dXNqc29uLnB5Cl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9y
ZWNlbnRzdGF0dXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFu
ZGxlcnMvcmVjZW50c3RhdHVzLnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0
YXR1c1NlcnZlci9oYW5kbGVycy9yZWNlbnRzdGF0dXMucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw5
NCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jIAotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIyAKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgZGF0ZXRpbWUKLQotZnJvbSBn
b29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwCi1mcm9tIGdvb2dsZS5hcHBlbmdpbmUu
ZXh0LndlYmFwcCBpbXBvcnQgdGVtcGxhdGUKLQotZnJvbSBtb2RlbC5xdWV1ZXMgaW1wb3J0IFF1
ZXVlCi1mcm9tIG1vZGVsLnF1ZXVlc3RhdHVzIGltcG9ydCBRdWV1ZVN0YXR1cwotZnJvbSBtb2Rl
bC53b3JraXRlbXMgaW1wb3J0IFdvcmtJdGVtcwotCi0KLWNsYXNzIFF1ZXVlQnViYmxlKG9iamVj
dCk6Ci0gICAgIiIiVmlldyBzdXBwb3J0IGNsYXNzIGZvciByZWNlbnRzdGF0dXMuaHRtbCIiIgot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWV1ZSk6Ci0gICAgICAgIHNlbGYuX3F1ZXVlID0gcXVl
dWUKLSAgICAgICAgc2VsZi5fd29ya19pdGVtcyA9IHF1ZXVlLndvcmtfaXRlbXMoKQotICAgICAg
ICBzZWxmLl9sYXN0X3N0YXR1cyA9IFF1ZXVlU3RhdHVzLmFsbCgpLmZpbHRlcigicXVldWVfbmFt
ZSA9IiwgcXVldWUubmFtZSgpKS5vcmRlcigiLWRhdGUiKS5nZXQoKQotCi0gICAgIyBGSVhNRTog
bmFtZSBhbmQgZGlzcGxheV9uYW1lIHNob3VsZCBiZSByZXBsYWNlZCBieSBhIC5xdWV1ZSgpIGFj
Y2Vzc29yLgotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fcXVldWUu
bmFtZSgpCi0KLSAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gc2Vs
Zi5fcXVldWUuZGlzcGxheV9uYW1lKCkKLQotICAgIGRlZiBfbGFzdF9zdGF0dXNfZGF0ZShzZWxm
KToKLSAgICAgICAgaWYgbm90IHNlbGYuX2xhc3Rfc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJu
IE5vbmUKLSAgICAgICAgcmV0dXJuIHNlbGYuX2xhc3Rfc3RhdHVzLmRhdGUKLQotICAgIGRlZiBs
YXN0X2hlYXJkX2Zyb20oc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl93b3JrX2l0ZW1zOgot
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xhc3Rfc3RhdHVzX2RhdGUoKQotICAgICAgICByZXR1
cm4gbWF4KHNlbGYuX2xhc3Rfc3RhdHVzX2RhdGUoKSwgc2VsZi5fd29ya19pdGVtcy5kYXRlKQot
Ci0gICAgZGVmIGlzX2FsaXZlKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5sYXN0X2hlYXJk
X2Zyb20oKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gc2VsZi5s
YXN0X2hlYXJkX2Zyb20oKSA+IChkYXRldGltZS5kYXRldGltZS5ub3coKSAtIGRhdGV0aW1lLnRp
bWVkZWx0YShtaW51dGVzPTMwKSkKLQotICAgIGRlZiBzdGF0dXNfY2xhc3Moc2VsZik6Ci0gICAg
ICAgIGlmIG5vdCBzZWxmLmlzX2FsaXZlKCk6Ci0gICAgICAgICAgICByZXR1cm4gImRlYWQiCi0g
ICAgICAgIGlmIHNlbGYucGVuZGluZ19pdGVtc19jb3VudCgpID4gMToKLSAgICAgICAgICAgIHJl
dHVybiAiYmVoaW5kIgotICAgICAgICByZXR1cm4gImFsaXZlIgotCi0gICAgZGVmIHN0YXR1c190
ZXh0KHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5fd29ya19pdGVtczoKLSAgICAgICAgICAg
IHJldHVybiAiT2ZmbGluZSIKLSAgICAgICAgaWYgbm90IHNlbGYuX3dvcmtfaXRlbXMuaXRlbV9p
ZHM6Ci0gICAgICAgICAgICByZXR1cm4gIklkbGUiCi0gICAgICAgIHJldHVybiBzZWxmLl9sYXN0
X3N0YXR1cy5tZXNzYWdlCi0KLSAgICBkZWYgcGVuZGluZ19pdGVtc19jb3VudChzZWxmKToKLSAg
ICAgICAgaWYgbm90IHNlbGYuX3dvcmtfaXRlbXM6Ci0gICAgICAgICAgICByZXR1cm4gMAotICAg
ICAgICByZXR1cm4gbGVuKHNlbGYuX3dvcmtfaXRlbXMuaXRlbV9pZHMpCi0KLQotY2xhc3MgUXVl
dWVzT3ZlcnZpZXcod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKLQotICAgIGRlZiBnZXQoc2VsZik6
Ci0gICAgICAgIHRlbXBsYXRlX3ZhbHVlcyA9IHsKLSAgICAgICAgICAgICJxdWV1ZXMiOiBbUXVl
dWVCdWJibGUocXVldWUpIGZvciBxdWV1ZSBpbiBRdWV1ZS5hbGwoKV0sCi0gICAgICAgIH0KLSAg
ICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUodGVtcGxhdGUucmVuZGVyKCJ0ZW1wbGF0ZXMv
cmVjZW50c3RhdHVzLmh0bWwiLCB0ZW1wbGF0ZV92YWx1ZXMpKQpJbmRleDogVG9vbHMvUXVldWVT
dGF0dXNTZXJ2ZXIvaGFuZGxlcnMvcmVsZWFzZWxvY2sucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
UXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvcmVsZWFzZWxvY2sucHkJKHJldmlzaW9uIDI2MTE5
OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3JlbGVhc2Vsb2NrLnB5CShu
b25leGlzdGVudCkKQEAgLTEsNTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBh
cmUKLSMgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mCi0jIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMKLSMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3QKLSMgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IK
LSMgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRgotIyBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTAot
IyBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSMgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SCi0jIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQot
ZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwLCBkYgotZnJvbSBnb29nbGUu
YXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCi0KLWZyb20gY29uZmlnLnF1ZXVl
cyBpbXBvcnQgd29ya19pdGVtX2xvY2tfdGltZW91dAotZnJvbSBoYW5kbGVycy51cGRhdGViYXNl
IGltcG9ydCBVcGRhdGVCYXNlCi1mcm9tIG1vZGVsLnF1ZXVlcyBpbXBvcnQgUXVldWUKLQotCi1j
bGFzcyBSZWxlYXNlTG9jayhVcGRhdGVCYXNlKToKLSAgICBkZWYgZ2V0KHNlbGYpOgotICAgICAg
ICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSh0ZW1wbGF0ZS5yZW5kZXIoInRlbXBsYXRlcy9yZWxl
YXNlbG9jay5odG1sIiwgeyJ0aW1lb3V0Ijogd29ya19pdGVtX2xvY2tfdGltZW91dH0pKQotCi0g
ICAgZGVmIHBvc3Qoc2VsZik6Ci0gICAgICAgIHF1ZXVlX25hbWUgPSBzZWxmLnJlcXVlc3QuZ2V0
KCJxdWV1ZV9uYW1lIikKLSAgICAgICAgIyBGSVhNRTogVGhpcyBxdWV1ZSBsb29rdXAgc2hvdWxk
IGJlIHNoYXJlZCBiZXR3ZWVuIGhhbmRsZXJzLgotICAgICAgICBxdWV1ZSA9IFF1ZXVlLnF1ZXVl
X3dpdGhfbmFtZShxdWV1ZV9uYW1lKQotICAgICAgICBpZiBub3QgcXVldWU6Ci0gICAgICAgICAg
ICBzZWxmLmVycm9yKDQwNCkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGF0dGFjaG1l
bnRfaWQgPSBzZWxmLl9pbnRfZnJvbV9yZXF1ZXN0KCJhdHRhY2htZW50X2lkIikKLSAgICAgICAg
cXVldWUuYWN0aXZlX3dvcmtfaXRlbXMoKS5leHBpcmVfaXRlbShhdHRhY2htZW50X2lkKQotCi0g
ICAgICAgICMgUmVsZWFzZUxvY2sgaXMgdXNlZCB3aGVuIGEgcXVldWUgbmVpdGhlciBzdWNjZWVk
ZWQgbm9yIGZhaWxlZCwgc28gaXQgc2lsZW50bHkgcmVsZWFzZXMgdGhlIHBhdGNoLgotICAgICAg
ICAjIExldCdzIHRyeSBvdGhlciBwYXRjaGVzIGJlZm9yZSByZXRyeWluZyB0aGlzIG9uZSwgaW4g
dGhlIGludGVyZXN0IG9mIGZhaXJuZXNzLCBhbmQgYWxzbyBiZWNhdXNlCi0gICAgICAgICMgYW5v
dGhlciBwYXRjaCBjb3VsZCBiZSBwb3N0ZWQgdG8gYWRkcmVzcyBxdWV1ZSBwcm9ibGVtcy4KLSAg
ICAgICAgcXVldWUud29ya19pdGVtcygpLm1vdmVfdG9fZW5kKGF0dGFjaG1lbnRfaWQpCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9yZWxlYXNl
bG9jay5weQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwot
TEYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvUXVldWVTdGF0
dXNTZXJ2ZXIvaGFuZGxlcnMvcmVsZWFzZXBhdGNoLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1
ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3JlbGVhc2VwYXRjaC5weQkocmV2aXNpb24gMjYxMTk5
KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvcmVsZWFzZXBhdGNoLnB5CShu
b25leGlzdGVudCkKQEAgLTEsNjAgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gZ29v
Z2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcCwgZGIKLWZyb20gZ29vZ2xlLmFwcGVuZ2lu
ZS5leHQud2ViYXBwIGltcG9ydCB0ZW1wbGF0ZQotCi1mcm9tIGhhbmRsZXJzLnVwZGF0ZWJhc2Ug
aW1wb3J0IFVwZGF0ZUJhc2UKLWZyb20gbG9nZ2Vycy5yZWNvcmRwYXRjaGV2ZW50IGltcG9ydCBS
ZWNvcmRQYXRjaEV2ZW50Ci1mcm9tIG1vZGVsLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1lbnQK
LWZyb20gbW9kZWwucXVldWVzIGltcG9ydCBRdWV1ZQotCi0KLWNsYXNzIFJlbGVhc2VQYXRjaChV
cGRhdGVCYXNlKToKLSAgICBkZWYgZ2V0KHNlbGYpOgotICAgICAgICBzZWxmLnJlc3BvbnNlLm91
dC53cml0ZSh0ZW1wbGF0ZS5yZW5kZXIoInRlbXBsYXRlcy9yZWxlYXNlcGF0Y2guaHRtbCIsIE5v
bmUpKQotCi0gICAgZGVmIHBvc3Qoc2VsZik6Ci0gICAgICAgIHF1ZXVlX25hbWUgPSBzZWxmLnJl
cXVlc3QuZ2V0KCJxdWV1ZV9uYW1lIikKLSAgICAgICAgIyBGSVhNRTogVGhpcyBxdWV1ZSBsb29r
dXAgc2hvdWxkIGJlIHNoYXJlZCBiZXR3ZWVuIGhhbmRsZXJzLgotICAgICAgICBxdWV1ZSA9IFF1
ZXVlLnF1ZXVlX3dpdGhfbmFtZShxdWV1ZV9uYW1lKQotICAgICAgICBpZiBub3QgcXVldWU6Ci0g
ICAgICAgICAgICBzZWxmLmVycm9yKDQwNCkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAg
IGF0dGFjaG1lbnRfaWQgPSBzZWxmLl9pbnRfZnJvbV9yZXF1ZXN0KCJhdHRhY2htZW50X2lkIikK
LSAgICAgICAgYXR0YWNobWVudCA9IEF0dGFjaG1lbnQoYXR0YWNobWVudF9pZCkKLSAgICAgICAg
bGFzdF9zdGF0dXMgPSBhdHRhY2htZW50LnN0YXR1c19mb3JfcXVldWUocXVldWUpCi0KLSAgICAg
ICAgIyBJZGVhbGx5IHdlIHNob3VsZCB1c2UgYSB0cmFuc2FjdGlvbiBmb3IgdGhlIGNhbGxzIHRv
Ci0gICAgICAgICMgV29ya0l0ZW1zIGFuZCBBY3RpdmVXb3JrSXRlbXMuCi0KLSAgICAgICAgcXVl
dWUud29ya19pdGVtcygpLnJlbW92ZV93b3JrX2l0ZW0oYXR0YWNobWVudF9pZCkKLSAgICAgICAg
UmVjb3JkUGF0Y2hFdmVudC5zdG9wcGVkKGF0dGFjaG1lbnRfaWQsIHF1ZXVlX25hbWUsIGxhc3Rf
c3RhdHVzLm1lc3NhZ2UpCi0KLSAgICAgICAgcXVldWUuYWN0aXZlX3dvcmtfaXRlbXMoKS5leHBp
cmVfaXRlbShhdHRhY2htZW50X2lkKQpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFu
ZGxlcnMvc2hvd3Jlc3VsdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2
ZXIvaGFuZGxlcnMvc2hvd3Jlc3VsdHMucHkJKHJldmlzaW9uIDI2MTE5OSkKKysrIFRvb2xzL1F1
ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3Nob3dyZXN1bHRzLnB5CShub25leGlzdGVudCkKQEAg
LTEsNDEgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIyAK
LSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
IyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMgCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBnb29nbGUuYXBwZW5naW5l
LmV4dCBpbXBvcnQgd2ViYXBwCi0KLWZyb20gbW9kZWwucXVldWVzdGF0dXMgaW1wb3J0IFF1ZXVl
U3RhdHVzCi0KLQotY2xhc3MgU2hvd1Jlc3VsdHMod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKLSAg
ICBkZWYgZ2V0KHNlbGYsIHN0YXR1c19pZCk6Ci0gICAgICAgIHN0YXR1cyA9IFF1ZXVlU3RhdHVz
LmdldF9ieV9pZChpbnQoc3RhdHVzX2lkKSkKLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAg
ICAgICAgIHNlbGYuZXJyb3IoNDA0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYu
cmVzcG9uc2UuaGVhZGVyc1siQ29udGVudC1UeXBlIl0gPSAidGV4dC9wbGFpbjsgY2hhcnNldD11
dGYtOCIKLSAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUoc3RhdHVzLnJlc3VsdHNfZmls
ZSkKSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3N0YXR1c2J1YmJsZS5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9zdGF0dXNi
dWJibGUucHkJKHJldmlzaW9uIDI2MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hh
bmRsZXJzL3N0YXR1c2J1YmJsZS5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDIyOCArMCwwIEBACi0j
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jIAotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIyAKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgb3BlcmF0b3IKLQotZnJvbSBnb29nbGUuYXBwZW5naW5l
LmV4dCBpbXBvcnQgd2ViYXBwCi1mcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0LndlYmFwcCBpbXBv
cnQgdGVtcGxhdGUKLQotZnJvbSBtb2RlbC5hdHRhY2htZW50IGltcG9ydCBBdHRhY2htZW50Ci1m
cm9tIG1vZGVsLmFjdGl2ZXdvcmtpdGVtcyBpbXBvcnQgQWN0aXZlV29ya0l0ZW1zCi1mcm9tIG1v
ZGVsLnBhdGNobG9nIGltcG9ydCBQYXRjaExvZwotZnJvbSBtb2RlbC5xdWV1ZXMgaW1wb3J0IFF1
ZXVlCi1mcm9tIG1vZGVsLnF1ZXVlc3RhdHVzIGltcG9ydCBRdWV1ZVN0YXR1cwotZnJvbSBtb2Rl
bC53b3JraXRlbXMgaW1wb3J0IFdvcmtJdGVtcwotZnJvbSBzZXRzIGltcG9ydCBTZXQKLQotcHJv
Z3Jlc3Nfc3RhdHVzZXMgPSBTZXQoWwotICAgICJTdGFydGVkIHByb2Nlc3NpbmcgcGF0Y2giLAot
ICAgICJDbGVhbmVkIHdvcmtpbmcgZGlyZWN0b3J5IiwKLSAgICAiVXBkYXRlZCB3b3JraW5nIGRp
cmVjdG9yeSIsCi0gICAgIkNoZWNrZWQgcmVsZXZhbmNlIG9mIHBhdGNoIiwKLSAgICAiQXBwbGll
ZCBwYXRjaCIsCi0gICAgIkJ1aWx0IHBhdGNoIiwKLSAgICAiV2F0Y2hsaXN0IGFwcGxpZWQiLAot
ICAgICJTdHlsZSBjaGVja2VkIiwKLSAgICAiQ2hhbmdlTG9nIHZhbGlkYXRlZCIsCi0gICAgIkJ1
aWx0IHBhdGNoIiwKLSAgICAiQWJsZSB0byBidWlsZCB3aXRob3V0IHBhdGNoIiwKLSAgICAiUGFz
c2VkIHRlc3RzIiwKLSAgICAiQWJsZSB0byBwYXNzIHRlc3RzIHdpdGhvdXQgcGF0Y2giLAotICAg
ICJMYW5kZWQgcGF0Y2giCi1dKQotCi1jbGFzcyBTdGF0dXNCdWJibGUod2ViYXBwLlJlcXVlc3RI
YW5kbGVyKToKLSAgICBkZWYgX2lzb190aW1lKHNlbGYsIHRpbWUpOgotICAgICAgICByZXR1cm4g
IltbIiArIHRpbWUuaXNvZm9ybWF0KCkgKyAiWl1dIgotCi0gICAgIyBxdWV1ZV9wb3NpdGlvbiBp
bmNsdWRlcyBpdGVtcyB0aGF0IGFyZSBhbHJlYWR5IGFjdGl2ZSwgc28gaXQncyBtaXNsZWFkaW5n
LgotICAgICMgRm9yIGEgcXVldWUgdGhhdCBoYXMgOCBib3RzLCBiZWluZyAjOSBpbiB0aGUgcXVl
dWUgYWN0dWFsbHkgbWVhbnMgYmVpbmcgIzEuCi0gICAgZGVmIF9yZWFsX3F1ZXVlX3Bvc2l0aW9u
KHNlbGYsIHF1ZXVlLCBxdWV1ZV9wb3NpdGlvbik6Ci0gICAgICAgIGFjdGl2ZV93b3JrX2l0ZW1z
ID0gcXVldWUuYWN0aXZlX3dvcmtfaXRlbXMoKS5pdGVtX2lkcwotICAgICAgICBpZiBhY3RpdmVf
d29ya19pdGVtczoKLSAgICAgICAgICAgIHJldHVybiBxdWV1ZV9wb3NpdGlvbiAtIGxlbihhY3Rp
dmVfd29ya19pdGVtcykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBxdWV1ZV9w
b3NpdGlvbgotCi0gICAgZGVmIF9sYXRlc3RfcmVzdWx0YXRpdmVfc3RhdHVzKHNlbGYsIHN0YXR1
c2VzKToKLSAgICAgICAgZm9yIHN0YXR1cyBpbiBzdGF0dXNlczoKLSAgICAgICAgICAgIGlmIG5v
dCBzdGF0dXMubWVzc2FnZSBpbiBwcm9ncmVzc19zdGF0dXNlczoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RhdHVzCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgX2J1aWxkX21lc3Nh
Z2VfZm9yX3Byb3Zpc2lvbmFsX2ZhaWx1cmUoc2VsZiwgcXVldWUsIGF0dGFjaG1lbnQsIHF1ZXVl
X3Bvc2l0aW9uLCBzdGF0dXNlcyk6Ci0gICAgICAgIHBhdGNoX2xvZyA9IFBhdGNoTG9nLmxvb2t1
cF9pZl9leGlzdHMoYXR0YWNobWVudC5pZCwgcXVldWUubmFtZSgpKQotICAgICAgICBpZiBub3Qg
cGF0Y2hfbG9nOgotICAgICAgICAgICAgcmV0dXJuICJJbnRlcm5hbCBlcnJvci4gTm8gUGF0Y2hM
b2cgZW50cnkgaW4gZGF0YWJhc2UuIgotCi0gICAgICAgIGlzX2FjdGl2ZSA9IGF0dGFjaG1lbnQu
aWQgaW4gcXVldWUuYWN0aXZlX3dvcmtfaXRlbXMoKS5pdGVtX2lkcwotICAgICAgICB0cnlfY291
bnQgPSBwYXRjaF9sb2cucmV0cnlfY291bnQgKyAobm90IGlzX2FjdGl2ZSkgICMgcmV0cnlfY291
bnQgaXMgdXBkYXRlZCB3aGVuIGEgbmV3IGF0dGVtcHQgc3RhcnRzLgotICAgICAgICBsYXRlc3Rf
cmVzdWx0YXRpdmVfc3RhdHVzID0gc2VsZi5fbGF0ZXN0X3Jlc3VsdGF0aXZlX3N0YXR1cyhzdGF0
dXNlcykKLSAgICAgICAgdHJlZV9pc19yZWQgPSBsYXRlc3RfcmVzdWx0YXRpdmVfc3RhdHVzLm1l
c3NhZ2UgPT0gIlVuYWJsZSB0byBwYXNzIHRlc3RzIHdpdGhvdXQgcGF0Y2ggKHRyZWUgaXMgcmVk
PykiIG9yIGxhdGVzdF9yZXN1bHRhdGl2ZV9zdGF0dXMubWVzc2FnZSA9PSAiVW5hYmxlIHRvIGJ1
aWxkIHdpdGhvdXQgcGF0Y2giCi0KLSAgICAgICAgbWVzc2FnZSA9IGxhdGVzdF9yZXN1bHRhdGl2
ZV9zdGF0dXMubWVzc2FnZSArICIuIgotICAgICAgICBpZiBpc19hY3RpdmU6Ci0gICAgICAgICAg
ICBpZiB0cmVlX2lzX3JlZDoKLSAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICJcblxuVHJ5aW5n
IGFnYWluIG5vdy4iCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
Kz0gIlxuXG5UaGlzIHJlc3VsdCBpcyBub3QgZmluYWwsIGFzIHRoZSBpc3N1ZSBjb3VsZCBiZSBh
IHByZS1leGlzdGluZyBvbmUuIFRyeWluZyB0byBkZXRlcm1pbmUgdGhhdCBub3cuIgotICAgICAg
ICAgICAgICAgIGlmIHRyeV9jb3VudCA9PSAxOgotICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
ICs9ICJcblxuUHJldmlvdXNseSBjb21wbGV0ZWQgYSByb3VuZCBvZiB0ZXN0aW5nLCBidXQgY291
bGRuJ3QgYXJyaXZlIGF0IGEgZGVmaW5pdGl2ZSBjb25jbHVzaW9uLiIKLSAgICAgICAgICAgICAg
ICBlbGlmIHRyeV9jb3VudCA+IDE6Ci0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxu
XG5QcmV2aW91c2x5IGNvbXBsZXRlZCAiICsgc3RyKHRyeV9jb3VudCkgKyAiIHJvdW5kcyBvZiB0
ZXN0aW5nLCBidXQgY291bGRuJ3QgYXJyaXZlIGF0IGEgZGVmaW5pdGl2ZSBjb25jbHVzaW9uLiIK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlYWxfcXVldWVfcG9zaXRpb24gPSBzZWxmLl9y
ZWFsX3F1ZXVlX3Bvc2l0aW9uKHF1ZXVlLCBxdWV1ZV9wb3NpdGlvbikKLSAgICAgICAgICAgIGlm
IHRyZWVfaXNfcmVkOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuXG5XaWxsIHRyeSBh
Z2FpbiwgY3VycmVudGx5ICMiICsgc3RyKHJlYWxfcXVldWVfcG9zaXRpb24pICsgIiBpbiBxdWV1
ZS4iCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuXG5U
aGlzIHJlc3VsdCBpcyBub3QgZmluYWwsIGFzIHRoZSBpc3N1ZSBjYW4gYmUgYSBwcmUtZXhpc3Rp
bmcgb25lLiAiCi0gICAgICAgICAgICAgICAgaWYgdHJ5X2NvdW50ID09IDE6Ci0gICAgICAgICAg
ICAgICAgICAgIG1lc3NhZ2UgKz0gIkNvbXBsZXRlZCBvbmUgcm91bmQgIgotICAgICAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIkNvbXBsZXRlZCAiICsg
c3RyKHRyeV9jb3VudCkgKyAiIHJvdW5kcyAiCi0gICAgICAgICAgICAgICAgbWVzc2FnZSArPSAi
b2YgdGVzdGluZyB0cnlpbmcgdG8gZGV0ZXJtaW5lIHRoYXQsIGJ1dCBjb3VsZG4ndCBhcnJpdmUg
YXQgYSBkZWZpbml0aXZlIGNvbmNsdXNpb24geWV0LlxuXG5XaWxsIHRyeSBhZ2FpbiwgY3VycmVu
dGx5ICMiICsgc3RyKHJlYWxfcXVldWVfcG9zaXRpb24pICsgIiBpbiBxdWV1ZS4iCi0gICAgICAg
IG1lc3NhZ2UgKz0gIlxuXG5QbGVhc2UgY2xpY2sgdGhlIGJ1YmJsZSBmb3IgZGV0YWlsZWQgcmVz
dWx0cy5cblxuIiArIHNlbGYuX2lzb190aW1lKHN0YXR1c2VzWzBdLmRhdGUpCi0gICAgICAgIHJl
dHVybiBtZXNzYWdlCi0KLSAgICBkZWYgX2J1aWxkX2J1YmJsZShzZWxmLCBxdWV1ZSwgYXR0YWNo
bWVudCwgcXVldWVfcG9zaXRpb24pOgotICAgICAgICBidWJibGUgPSB7Ci0gICAgICAgICAgICAi
bmFtZSI6IHF1ZXVlLnNob3J0X25hbWUoKS5sb3dlcigpLAotICAgICAgICAgICAgImF0dGFjaG1l
bnRfaWQiOiBhdHRhY2htZW50LmlkLAotICAgICAgICAgICAgInF1ZXVlX25hbWUiOiBxdWV1ZS5u
YW1lKCksCi0gICAgICAgIH0KLSAgICAgICAgIyAxMCByZWNlbnQgc3RhdHVzZXMgaXMgZW5vdWdo
IHRvIGFsd2F5cyBpbmNsdWRlIGEgcmVzdWx0YXRpdmUgb25lLCBpZiB0aGVyZSB3ZXJlIGFueSBh
dCBhbGwuCi0gICAgICAgIHN0YXR1c2VzID0gUXVldWVTdGF0dXMuYWxsKCkuZmlsdGVyKCdxdWV1
ZV9uYW1lID0nLCBxdWV1ZS5uYW1lKCkpLmZpbHRlcignYWN0aXZlX3BhdGNoX2lkID0nLCBhdHRh
Y2htZW50LmlkKS5vcmRlcignLWRhdGUnKS5mZXRjaChsaW1pdD0xMCkKLSAgICAgICAgaWYgbm90
IHN0YXR1c2VzOgotICAgICAgICAgICAgYnViYmxlWyJoYWRfcmVzdWx0YXRpdmVfc3RhdHVzX290
aGVyX3RoYW5fZmFpbHVyZV90b19hcHBseSJdID0gRmFsc2UKLSAgICAgICAgICAgIGlmIGF0dGFj
aG1lbnQuaWQgaW4gcXVldWUuYWN0aXZlX3dvcmtfaXRlbXMoKS5pdGVtX2lkczoKLSAgICAgICAg
ICAgICAgICBidWJibGVbInN0YXRlIl0gPSAic3RhcnRlZCIKLSAgICAgICAgICAgICAgICBidWJi
bGVbImRldGFpbHNfbWVzc2FnZSJdID0gIlN0YXJ0ZWQgcHJvY2Vzc2luZywgbm8gb3V0cHV0IHll
dC5cblxuIiArIHNlbGYuX2lzb190aW1lKHF1ZXVlLmFjdGl2ZV93b3JrX2l0ZW1zKCkudGltZV9m
b3JfaXRlbShhdHRhY2htZW50LmlkKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgcmVhbF9xdWV1ZV9wb3NpdGlvbiA9IHNlbGYuX3JlYWxfcXVldWVfcG9zaXRpb24ocXVldWUs
IHF1ZXVlX3Bvc2l0aW9uKQotICAgICAgICAgICAgICAgIGJ1YmJsZVsic3RhdGUiXSA9ICJub25l
IgotICAgICAgICAgICAgICAgIGJ1YmJsZVsiZGV0YWlsc19tZXNzYWdlIl0gPSAiV2FpdGluZyBp
biBxdWV1ZSwgcHJvY2Vzc2luZyBoYXMgbm90IHN0YXJ0ZWQgeWV0LlxuXG5Qb3NpdGlvbiBpbiBx
dWV1ZTogIiArIHN0cihyZWFsX3F1ZXVlX3Bvc2l0aW9uKQotICAgICAgICAgICAgICAgIGJ1YmJs
ZVsicXVldWVfcG9zaXRpb24iXSA9IHJlYWxfcXVldWVfcG9zaXRpb24KLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIGxhdGVzdF9yZXN1bHRhdGl2ZV9zdGF0dXMgPSBzZWxmLl9sYXRlc3RfcmVz
dWx0YXRpdmVfc3RhdHVzKHN0YXR1c2VzKQotICAgICAgICAgICAgYnViYmxlWyJoYWRfcmVzdWx0
YXRpdmVfc3RhdHVzX290aGVyX3RoYW5fZmFpbHVyZV90b19hcHBseSJdID0gYW55KG1hcChsYW1i
ZGEgc3RhdHVzOgotICAgICAgICAgICAgICAgIGxhdGVzdF9yZXN1bHRhdGl2ZV9zdGF0dXMgYW5k
IGxhdGVzdF9yZXN1bHRhdGl2ZV9zdGF0dXMubWVzc2FnZSAhPSAiRXJyb3I6ICIgKyBxdWV1ZS5u
YW1lKCkgKyAiIHVuYWJsZSB0byBhcHBseSBwYXRjaC4iLAotICAgICAgICAgICAgICAgIHN0YXR1
c2VzKSkKLSAgICAgICAgICAgIGlmIG5vdCBsYXRlc3RfcmVzdWx0YXRpdmVfc3RhdHVzOgotICAg
ICAgICAgICAgICAgIGJ1YmJsZVsic3RhdGUiXSA9ICJzdGFydGVkIgotICAgICAgICAgICAgICAg
IGJ1YmJsZVsiZGV0YWlsc19tZXNzYWdlIl0gPSAoIlJlY2VudCBtZXNzYWdlczpcblxuIgotICAg
ICAgICAgICAgICAgICAgICArICJcbiIuam9pbihbc3RhdHVzLm1lc3NhZ2UgZm9yIHN0YXR1cyBp
biBzdGF0dXNlc10pICsgIlxuXG4iICsgc2VsZi5faXNvX3RpbWUoc3RhdHVzZXNbMF0uZGF0ZSkp
Ci0gICAgICAgICAgICBlbGlmIHN0YXR1c2VzWzBdLm1lc3NhZ2UgPT0gIlBhc3MiOgotICAgICAg
ICAgICAgICAgIGJ1YmJsZVsic3RhdGUiXSA9ICJwYXNzIgotICAgICAgICAgICAgICAgIGJ1YmJs
ZVsiZGV0YWlsc19tZXNzYWdlIl0gPSAiUGFzc1xuXG4iICsgc2VsZi5faXNvX3RpbWUoc3RhdHVz
ZXNbMF0uZGF0ZSkKLSAgICAgICAgICAgIGVsaWYgc3RhdHVzZXNbMF0ubWVzc2FnZSA9PSAiRmFp
bCI6Ci0gICAgICAgICAgICAgICAgYnViYmxlWyJzdGF0ZSJdID0gImZhaWwiCi0gICAgICAgICAg
ICAgICAgbWVzc2FnZV90b19kaXNwbGF5ID0gc3RhdHVzZXNbMV0ubWVzc2FnZSBpZiBsZW4oc3Rh
dHVzZXMpID4gMSBlbHNlIHN0YXR1c2VzWzBdLm1lc3NhZ2UKLSAgICAgICAgICAgICAgICBidWJi
bGVbImRldGFpbHNfbWVzc2FnZSJdID0gbWVzc2FnZV90b19kaXNwbGF5ICsgIlxuXG4iICsgc2Vs
Zi5faXNvX3RpbWUoc3RhdHVzZXNbMF0uZGF0ZSkKLSAgICAgICAgICAgIGVsaWYgImRpZCBub3Qg
cHJvY2VzcyBwYXRjaCIgaW4gc3RhdHVzZXNbMF0ubWVzc2FnZToKLSAgICAgICAgICAgICAgICBi
dWJibGVbInN0YXRlIl0gPSAibm9uZSIKLSAgICAgICAgICAgICAgICBidWJibGVbImRldGFpbHNf
bWVzc2FnZSJdID0gIlRoZSBwYXRjaCBpcyBubyBsb25nZXIgZWxpZ2libGUgZm9yIHByb2Nlc3Np
bmcuIgotCi0gICAgICAgICAgICAgICAgaWYgIkJ1ZyBpcyBhbHJlYWR5IGNsb3NlZCIgaW4gc3Rh
dHVzZXNbMF0ubWVzc2FnZToKLSAgICAgICAgICAgICAgICAgICAgYnViYmxlWyJkZXRhaWxzX21l
c3NhZ2UiXSArPSAiIEJ1ZyB3YXMgYWxyZWFkeSBjbG9zZWQgd2hlbiBFV1MgYXR0ZW1wdGVkIHRv
IHByb2Nlc3MgaXQuIgotICAgICAgICAgICAgICAgIGVsaWYgIlBhdGNoIGlzIG1hcmtlZCByLSIg
aW4gc3RhdHVzZXNbMF0ubWVzc2FnZToKLSAgICAgICAgICAgICAgICAgICAgYnViYmxlWyJkZXRh
aWxzX21lc3NhZ2UiXSArPSAiIFBhdGNoIHdhcyBhbHJlYWR5IG1hcmtlZCByLSB3aGVuIEVXUyBh
dHRlbXB0ZWQgdG8gcHJvY2VzcyBpdC4iCi0gICAgICAgICAgICAgICAgZWxpZiAiUGF0Y2ggaXMg
b2Jzb2xldGUiIGluIHN0YXR1c2VzWzBdLm1lc3NhZ2U6Ci0gICAgICAgICAgICAgICAgICAgIGJ1
YmJsZVsiZGV0YWlsc19tZXNzYWdlIl0gKz0gIiBQYXRjaCB3YXMgb2Jzb2xldGUgd2hlbiBFV1Mg
YXR0ZW1wdGVkIHRvIHByb2Nlc3MgaXQuIgotICAgICAgICAgICAgICAgIGVsaWYgIk5vIHBhdGNo
IGNvbW1pdHRlciBmb3VuZCIgaW4gc3RhdHVzZXNbMF0ubWVzc2FnZToKLSAgICAgICAgICAgICAg
ICAgICAgYnViYmxlWyJkZXRhaWxzX21lc3NhZ2UiXSArPSAiIFBhdGNoIHdhcyBub3QgYXV0aG9y
aXplZCBieSBhIGNvbW1taXR0ZXIuIgotCi0gICAgICAgICAgICAgICAgaWYgbGVuKHN0YXR1c2Vz
KSA+IDE6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGxlbihzdGF0dXNlcykgPT0gMjoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1YmJsZVsiZGV0YWlsc19tZXNzYWdlIl0gKz0gIlxuT25lIG1l
c3NhZ2Ugd2FzIGxvZ2dlZCB3aGlsZSB0aGUgcGF0Y2ggd2FzIHN0aWxsIGVsaWdpYmxlOlxuXG4i
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBidWJi
bGVbImRldGFpbHNfbWVzc2FnZSJdICs9ICJcblNvbWUgbWVzc2FnZXMgd2VyZSBsb2dnZWQgd2hp
bGUgdGhlIHBhdGNoIHdhcyBzdGlsbCBlbGlnaWJsZTpcblxuIgotICAgICAgICAgICAgICAgICAg
ICBidWJibGVbImRldGFpbHNfbWVzc2FnZSJdICs9ICJcbiIuam9pbihbc3RhdHVzLm1lc3NhZ2Ug
Zm9yIHN0YXR1cyBpbiBzdGF0dXNlc1sxOl1dKSArICJcblxuIiArIHNlbGYuX2lzb190aW1lKHN0
YXR1c2VzWzBdLmRhdGUpCi0gICAgICAgICAgICBlbGlmIHN0YXR1c2VzWzBdLm1lc3NhZ2UgPT0g
IkVycm9yOiAiICsgcXVldWUubmFtZSgpICsgIiB1bmFibGUgdG8gYXBwbHkgcGF0Y2guIjoKLSAg
ICAgICAgICAgICAgICBidWJibGVbInN0YXRlIl0gPSAiZmFpbCIKLSAgICAgICAgICAgICAgICBt
ZXNzYWdlX3RvX2Rpc3BsYXkgPSBzdGF0dXNlc1sxXS5tZXNzYWdlIGlmIGxlbihzdGF0dXNlcykg
PiAxIGVsc2Ugc3RhdHVzZXNbMF0ubWVzc2FnZQotICAgICAgICAgICAgICAgIGJ1YmJsZVsiZGV0
YWlsc19tZXNzYWdlIl0gPSBtZXNzYWdlX3RvX2Rpc3BsYXkgKyAiXG5cbiIgKyBzZWxmLl9pc29f
dGltZShzdGF0dXNlc1swXS5kYXRlKQotICAgICAgICAgICAgICAgIGJ1YmJsZVsiZmFpbGVkX3Rv
X2FwcGx5Il0gPSBUcnVlCi0gICAgICAgICAgICBlbGlmIHN0YXR1c2VzWzBdLm1lc3NhZ2Uuc3Rh
cnRzd2l0aCgiRXJyb3I6ICIpOgotICAgICAgICAgICAgICAgIGJ1YmJsZVsic3RhdGUiXSA9ICJl
cnJvciIKLSAgICAgICAgICAgICAgICBidWJibGVbImRldGFpbHNfbWVzc2FnZSJdID0gIlxuIi5q
b2luKFtzdGF0dXMubWVzc2FnZSBmb3Igc3RhdHVzIGluIHN0YXR1c2VzXSkgKyAiXG5cbiIgKyBz
ZWxmLl9pc29fdGltZShzdGF0dXNlc1swXS5kYXRlKQotICAgICAgICAgICAgZWxpZiBxdWV1ZV9w
b3NpdGlvbjoKLSAgICAgICAgICAgICAgICBidWJibGVbInN0YXRlIl0gPSAicHJvdmlzaW9uYWwt
ZmFpbCIKLSAgICAgICAgICAgICAgICBidWJibGVbImRldGFpbHNfbWVzc2FnZSJdID0gc2VsZi5f
YnVpbGRfbWVzc2FnZV9mb3JfcHJvdmlzaW9uYWxfZmFpbHVyZShxdWV1ZSwgYXR0YWNobWVudCwg
cXVldWVfcG9zaXRpb24sIHN0YXR1c2VzKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBidWJibGVbInN0YXRlIl0gPSAiZXJyb3IiCi0gICAgICAgICAgICAgICAgYnViYmxlWyJk
ZXRhaWxzX21lc3NhZ2UiXSA9ICgiSW50ZXJuYWwgZXJyb3IuIExhdGVzdCBzdGF0dXMgaW1wbGll
cyB0aGF0IHRoZSBwYXRjaCBzaG91bGQgYmUgaW4gcXVldWUsIGJ1dCBpdCBpcyBub3QuIFJlY2Vu
dCBtZXNzYWdlczpcblxuIgotICAgICAgICAgICAgICAgICAgICArICJcbiIuam9pbihbc3RhdHVz
Lm1lc3NhZ2UgZm9yIHN0YXR1cyBpbiBzdGF0dXNlc10pICsgIlxuXG4iICsgc2VsZi5faXNvX3Rp
bWUoc3RhdHVzZXNbMF0uZGF0ZSkpCi0KLSAgICAgICAgaWYgImRldGFpbHNfbWVzc2FnZSIgaW4g
YnViYmxlOgotICAgICAgICAgICAgYnViYmxlWyJkZXRhaWxzX21lc3NhZ2UiXSA9IHF1ZXVlLmRp
c3BsYXlfbmFtZSgpICsgIlxuXG4iICsgYnViYmxlWyJkZXRhaWxzX21lc3NhZ2UiXQotCi0gICAg
ICAgIHJldHVybiBidWJibGUKLQotICAgIGRlZiBfc2hvdWxkX3Nob3dfYnViYmxlX2ZvcihzZWxm
LCBhdHRhY2htZW50LCBxdWV1ZSk6Ci0gICAgICAgICMgQW55IHBlbmRpbmcgcXVldWUgaXMgc2hv
d24uCi0gICAgICAgIGlmIGF0dGFjaG1lbnQucG9zaXRpb25faW5fcXVldWUocXVldWUpOgotICAg
ICAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICAgICBpZiBub3QgcXVldWUuaXNfZXdzKCk6Ci0g
ICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBzdGF0dXMgPSBhdHRhY2htZW50LnN0
YXR1c19mb3JfcXVldWUocXVldWUpCi0gICAgICAgIHJldHVybiBib29sKHN0YXR1cyBhbmQgbm90
IHN0YXR1cy5kaWRfc2tpcCgpKQotCi0gICAgZGVmIF9idWlsZF9idWJibGVzX2Zvcl9hdHRhY2ht
ZW50KHNlbGYsIGF0dGFjaG1lbnQpOgotICAgICAgICBzaG93X3N1Ym1pdF90b19ld3MgPSBUcnVl
Ci0gICAgICAgIGJ1YmJsZXMgPSBbXQotICAgICAgICBmb3IgcXVldWUgaW4gUXVldWUuYWxsKCk6
Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fc2hvdWxkX3Nob3dfYnViYmxlX2ZvcihhdHRhY2ht
ZW50LCBxdWV1ZSk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHF1ZXVl
X3Bvc2l0aW9uID0gYXR0YWNobWVudC5wb3NpdGlvbl9pbl9xdWV1ZShxdWV1ZSkKLSAgICAgICAg
ICAgIGJ1YmJsZSA9IHNlbGYuX2J1aWxkX2J1YmJsZShxdWV1ZSwgYXR0YWNobWVudCwgcXVldWVf
cG9zaXRpb24pCi0gICAgICAgICAgICBpZiBidWJibGU6Ci0gICAgICAgICAgICAgICAgYnViYmxl
cy5hcHBlbmQoYnViYmxlKQotICAgICAgICAgICAgIyBJZiBhdCBsZWFzdCBvbmUgRVdTIHF1ZXVl
IGhhcyBzdGF0dXMsIHdlIGRvbid0IHNob3cgdGhlIHN1Ym1pdC10by1ld3MgYnV0dG9uLgotICAg
ICAgICAgICAgaWYgcXVldWUuaXNfZXdzKCk6Ci0gICAgICAgICAgICAgICAgc2hvd19zdWJtaXRf
dG9fZXdzID0gRmFsc2UKLQotICAgICAgICBmYWlsZWRfdG9fYXBwbHkgPSBhbnkobWFwKGxhbWJk
YSBidWJibGU6ICJmYWlsZWRfdG9fYXBwbHkiIGluIGJ1YmJsZSwgYnViYmxlcykpCi0gICAgICAg
IGhhZF9yZXN1bHRhdGl2ZV9zdGF0dXNfb3RoZXJfdGhhbl9mYWlsdXJlX3RvX2FwcGx5ID0gYW55
KG1hcChsYW1iZGEgYnViYmxlOiBidWJibGVbImhhZF9yZXN1bHRhdGl2ZV9zdGF0dXNfb3RoZXJf
dGhhbl9mYWlsdXJlX3RvX2FwcGx5Il0sIGJ1YmJsZXMpKQotCi0gICAgICAgIHJldHVybiAoYnVi
Ymxlcywgc2hvd19zdWJtaXRfdG9fZXdzLCBmYWlsZWRfdG9fYXBwbHkgYW5kIG5vdCBoYWRfcmVz
dWx0YXRpdmVfc3RhdHVzX290aGVyX3RoYW5fZmFpbHVyZV90b19hcHBseSkKLQotICAgIGRlZiBn
ZXQoc2VsZiwgYXR0YWNobWVudF9pZF9zdHJpbmcpOgotICAgICAgICBhdHRhY2htZW50X2lkID0g
aW50KGF0dGFjaG1lbnRfaWRfc3RyaW5nKQotICAgICAgICBhdHRhY2htZW50ID0gQXR0YWNobWVu
dChhdHRhY2htZW50X2lkKQotICAgICAgICBidWJibGVzLCBzaG93X3N1Ym1pdF90b19ld3MsIHNo
b3dfZmFpbHVyZV90b19hcHBseSA9IHNlbGYuX2J1aWxkX2J1YmJsZXNfZm9yX2F0dGFjaG1lbnQo
YXR0YWNobWVudCkKLQotICAgICAgICB0ZW1wbGF0ZV92YWx1ZXMgPSB7Ci0gICAgICAgICAgICAi
YnViYmxlcyI6IGJ1YmJsZXMsCi0gICAgICAgICAgICAiYXR0YWNobWVudF9pZCI6IGF0dGFjaG1l
bnRfaWQsCi0gICAgICAgICAgICAic2hvd19zdWJtaXRfdG9fZXdzIjogRmFsc2UsICAjIERpc2Fi
bGVkIFN1Ym1pdCB0byBvbGQgRVdTIGJ1dHRvbiBmb3Igbm93LgotICAgICAgICAgICAgInNob3df
ZmFpbHVyZV90b19hcHBseSI6IHNob3dfZmFpbHVyZV90b19hcHBseSwKLSAgICAgICAgfQotICAg
ICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSh0ZW1wbGF0ZS5yZW5kZXIoInRlbXBsYXRlcy9z
dGF0dXNidWJibGUuaHRtbCIsIHRlbXBsYXRlX3ZhbHVlcykpCkluZGV4OiBUb29scy9RdWV1ZVN0
YXR1c1NlcnZlci9oYW5kbGVycy9zdGF0dXNidWJibGVfdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvc3RhdHVzYnViYmxlX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVy
cy9zdGF0dXNidWJibGVfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MiArMCwwIEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24u
Ci0jICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBSZXNlYXJjaCBpbiBNb3Rpb24gTHRkLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB1bml0dGVzdAotCi0KLWZyb20g
aGFuZGxlcnMuc3RhdHVzYnViYmxlIGltcG9ydCBTdGF0dXNCdWJibGUKLWZyb20gbW9kZWwucXVl
dWVzIGltcG9ydCBRdWV1ZQotCi0KLWNsYXNzIE1vY2tBdHRhY2htZW50KG9iamVjdCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLmlkID0gMQotCi0gICAgZGVmIHN0YXR1
c19mb3JfcXVldWUoc2VsZiwgcXVldWUpOgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVm
IHBvc2l0aW9uX2luX3F1ZXVlKHNlbGYsIHF1ZXVlKToKLSAgICAgICAgcmV0dXJuIDEKLQotCi1j
bGFzcyBTdGF0dXNCdWJibGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9i
dWlsZF9idWJibGUoc2VsZik6Ci0gICAgICAgIGJ1YmJsZSA9IFN0YXR1c0J1YmJsZSgpCi0gICAg
ICAgIHF1ZXVlID0gUXVldWUoIm1hYy1ld3MiKQotICAgICAgICBhdHRhY2htZW50ID0gTW9ja0F0
dGFjaG1lbnQoKQotICAgICAgICBidWJibGVfZGljdCA9IGJ1YmJsZS5fYnVpbGRfYnViYmxlKHF1
ZXVlLCBhdHRhY2htZW50LCAxKQotICAgICAgICAjIEZJWE1FOiBhc3NlcnREaWN0RXF1YWwgKGlu
IFB5dGhvbiAyLjcpIHdvdWxkIGJlIGJldHRlciB0byB1c2UgaGVyZS4KLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWJibGVfZGljdFsibmFtZSJdLCAibWFjIikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChidWJibGVfZGljdFsiYXR0YWNobWVudF9pZCJdLCAxKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1YmJsZV9kaWN0WyJxdWV1ZV9wb3NpdGlvbiJdLCAxKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1YmJsZV9kaWN0WyJzdGF0ZSJdLCAibm9uZSIpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYnViYmxlX2RpY3RbInN0YXR1cyJdLCBOb25lKQotCi0KLWlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCkluZGV4OiBUb29scy9RdWV1ZVN0
YXR1c1NlcnZlci9oYW5kbGVycy9zdWJtaXR0b2V3cy5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9R
dWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9zdWJtaXR0b2V3cy5weQkocmV2aXNpb24gMjYxMTk5
KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvc3VibWl0dG9ld3MucHkJKG5v
bmV4aXN0ZW50KQpAQCAtMSw2NSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBnb29n
bGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwLCBkYgotZnJvbSBnb29nbGUuYXBwZW5naW5l
LmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCi0KLWZyb20gaGFuZGxlcnMudXBkYXRlYmFzZSBp
bXBvcnQgVXBkYXRlQmFzZQotZnJvbSBsb2dnZXJzLnJlY29yZHBhdGNoZXZlbnQgaW1wb3J0IFJl
Y29yZFBhdGNoRXZlbnQKLWZyb20gbW9kZWwuYXR0YWNobWVudCBpbXBvcnQgQXR0YWNobWVudAot
ZnJvbSBtb2RlbC5xdWV1ZXMgaW1wb3J0IFF1ZXVlCi0KLQotY2xhc3MgU3VibWl0VG9FV1MoVXBk
YXRlQmFzZSk6Ci0gICAgZGVmIGdldChzZWxmKToKLSAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQu
d3JpdGUodGVtcGxhdGUucmVuZGVyKCJ0ZW1wbGF0ZXMvc3VibWl0dG9ld3MuaHRtbCIsIE5vbmUp
KQotCi0gICAgZGVmIF9zaG91bGRfYWRkX3RvX2V3c19xdWV1ZShzZWxmLCBxdWV1ZSwgYXR0YWNo
bWVudCk6Ci0gICAgICAgICMgVGhpcyBhc3NlcnQoKSBpcyBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSdy
ZSBub3Qgc3VibWl0dGluZyB0byB0aGUgY29tbWl0LXF1ZXVlLgotICAgICAgICAjIFRoZSBjb21t
aXQtcXVldWUgY2xpZW50cyBjaGVjayBlYWNoIHBhdGNoIGFueXdheSwgYnV0IHRoZXJlIGlzIG5v
IHNlbnNlCi0gICAgICAgICMgaW4gYWRkaW5nIHRoaW5ncyB0byB0aGUgY29tbWl0LXF1ZXVlIHdo
ZW4gdGhleSB3b24ndCBiZSBwcm9jZXNzZWQgYnkgaXQuCi0gICAgICAgIGFzc2VydChxdWV1ZS5p
c19ld3MoKSkKLSAgICAgICAgbGF0ZXN0X3N0YXR1cyA9IGF0dGFjaG1lbnQuc3RhdHVzX2Zvcl9x
dWV1ZShxdWV1ZSkKLSAgICAgICAgIyBUaGUgZmVlZGVyIHF1ZXVlIG9ubHkgc3VibWl0cyBlYWNo
IHBhdGNoIG9uY2Ugbm9ybWFsbHksIGJ1dCBpdCBsb3NlcyBpdHMgbWVtb3J5Ci0gICAgICAgICMg
d2hlbiByZXN0YXJ0ZWQuIFdlIGRvIG5vdCB3YW50IHRvIHJlLWFkZCBhbGwgcGF0Y2hlcyBpZiB0
aGF0IGhhcHBlbnMuCi0gICAgICAgICMgSW4gdGhlIGZ1dHVyZSB3ZSBtaWdodCBhZGQgYSAiZm9y
Y2UiIGJ1dHRvbiB0byBhbGxvdyB0aGUgdXNlciB0byByZXRyeSBwYXRjaGVzCi0gICAgICAgICMg
dGhhdCB3ZXJlIHByZXZpb3VzbHkgc3VibWl0dGVkLgotICAgICAgICByZXR1cm4gbm90IGxhdGVz
dF9zdGF0dXMKLQotICAgIGRlZiBfYWRkX2F0dGFjaG1lbnRfdG9fZXdzX3F1ZXVlcyhzZWxmLCBh
dHRhY2htZW50KToKLSAgICAgICAgZm9yIHF1ZXVlIGluIFF1ZXVlLmFsbF9ld3MoKTogICMgYWxs
X2V3cygpIGN1cnJlbnRseSBpbmNsdWRlcyB0aGUgc3R5bGUtcXVldWUKLSAgICAgICAgICAgIGlm
IHNlbGYuX3Nob3VsZF9hZGRfdG9fZXdzX3F1ZXVlKHF1ZXVlLCBhdHRhY2htZW50KToKLSAgICAg
ICAgICAgICAgICBxdWV1ZS53b3JrX2l0ZW1zKCkuYWRkX3dvcmtfaXRlbShhdHRhY2htZW50Lmlk
KQotICAgICAgICAgICAgICAgIFJlY29yZFBhdGNoRXZlbnQuYWRkZWQoYXR0YWNobWVudC5pZCwg
cXVldWUubmFtZSgpKQotCi0gICAgZGVmIHBvc3Qoc2VsZik6Ci0gICAgICAgIGF0dGFjaG1lbnRf
aWQgPSBzZWxmLl9pbnRfZnJvbV9yZXF1ZXN0KCJhdHRhY2htZW50X2lkIikKLSAgICAgICAgYXR0
YWNobWVudCA9IEF0dGFjaG1lbnQoYXR0YWNobWVudF9pZCkKLSAgICAgICAgc2VsZi5fYWRkX2F0
dGFjaG1lbnRfdG9fZXdzX3F1ZXVlcyhhdHRhY2htZW50KQotICAgICAgICBpZiBzZWxmLnJlcXVl
c3QuZ2V0KCJuZXh0X2FjdGlvbiIpID09ICJyZXR1cm5fdG9fYnViYmxlcyI6Ci0gICAgICAgICAg
ICBzZWxmLnJlZGlyZWN0KCIvc3RhdHVzLWJ1YmJsZS8lcyIgJSBhdHRhY2htZW50X2lkKQpJbmRl
eDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvc3ZucmV2aXNpb24ucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvc3ZucmV2aXNpb24ucHkJ
KHJldmlzaW9uIDI2MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3N2
bnJldmlzaW9uLnB5CShub25leGlzdGVudCkKQEAgLTEsNDAgKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIyAKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSMgCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwCi0KLWltcG9y
dCBtb2RlbAotCi0KLWNsYXNzIFNWTlJldmlzaW9uKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6Ci0g
ICAgZGVmIGdldChzZWxmLCBzdm5fcmV2aXNpb25fbnVtYmVyKToKLSAgICAgICAgc3ZuX3Jldmlz
aW9ucyA9IG1vZGVsLlNWTlJldmlzaW9uLmFsbCgpLmZpbHRlcignbnVtYmVyID0nLCBpbnQoc3Zu
X3JldmlzaW9uX251bWJlcikpLm9yZGVyKCctZGF0ZScpLmZldGNoKDEpCi0gICAgICAgIGlmIG5v
dCBzdm5fcmV2aXNpb25zOgotICAgICAgICAgICAgc2VsZi5lcnJvcig0MDQpCi0gICAgICAgICAg
ICByZXR1cm4KLSAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUoc3ZuX3JldmlzaW9uc1sw
XS50b194bWwoKSkKSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3N5bmNx
dWV1ZWxvZ3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxl
cnMvc3luY3F1ZXVlbG9ncy5weQkocmV2aXNpb24gMjYxMTk5KQorKysgVG9vbHMvUXVldWVTdGF0
dXNTZXJ2ZXIvaGFuZGxlcnMvc3luY3F1ZXVlbG9ncy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDQy
ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0
cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGlt
cG9ydCB3ZWJhcHAKLQotZnJvbSBjb25maWcucXVldWVzIGltcG9ydCBhbGxfcXVldWVfbmFtZXMK
LWZyb20gY29uZmlnLmxvZ2dpbmcgaW1wb3J0IHF1ZXVlX2xvZ19kdXJhdGlvbgotZnJvbSBtb2Rl
bC5xdWV1ZWxvZyBpbXBvcnQgUXVldWVMb2cKLQotCi1jbGFzcyBTeW5jUXVldWVMb2dzKHdlYmFw
cC5SZXF1ZXN0SGFuZGxlcik6Ci0gICAgZGVmIGdldChzZWxmKToKLSAgICAgICAgZm9yIHF1ZXVl
X25hbWUgaW4gYWxsX3F1ZXVlX25hbWVzOgotICAgICAgICAgICAgcXVldWVfbG9nID0gUXVldWVM
b2cuZ2V0X2N1cnJlbnQocXVldWVfbmFtZSwgcXVldWVfbG9nX2R1cmF0aW9uKQotICAgICAgICAg
ICAgaWYgcXVldWVfbG9nLnVwZGF0ZV9tYXhfcGF0Y2hlc193YWl0aW5nKCk6Ci0gICAgICAgICAg
ICAgICAgcXVldWVfbG9nLnB1dCgpCi0gICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKCJE
b25lISIpCkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy91cGRhdGViYXNl
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3VwZGF0
ZWJhc2UucHkJKHJldmlzaW9uIDI2MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hh
bmRsZXJzL3VwZGF0ZWJhc2UucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MSArMCwwIEBACi0jIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jIAotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIyAKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi1mcm9tIGdvb2dsZS5hcHBlbmdpbmUuYXBpIGltcG9ydCB1c2Vycwot
ZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwLCBkYgotCi0KLWNsYXNzIFVw
ZGF0ZUJhc2Uod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKLSAgICBkZWYgX2ludF9mcm9tX3JlcXVl
c3Qoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHN0cmluZ192YWx1ZSA9IHNlbGYucmVxdWVzdC5nZXQo
bmFtZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW50X3ZhbHVlID0gaW50KHN0cmluZ192
YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBpbnRfdmFsdWUKLSAgICAgICAgZXhjZXB0IFZhbHVl
RXJyb3IgYXMgVHlwZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICByZXR1cm4gTm9u
ZQpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvdXBkYXRlc3RhdHVzLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3VwZGF0ZXN0
YXR1cy5weQkocmV2aXNpb24gMjYxMTk5KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFu
ZGxlcnMvdXBkYXRlc3RhdHVzLnB5CShub25leGlzdGVudCkKQEAgLTEsNzAgKzAsMCBAQAotIyBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIyAKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMgCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotZnJvbSBnb29nbGUuYXBwZW5naW5lLmFwaSBpbXBvcnQgdXNlcnMK
LWZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcCwgZGIKLWZyb20gZ29vZ2xl
LmFwcGVuZ2luZS5leHQud2ViYXBwIGltcG9ydCB0ZW1wbGF0ZQotCi1mcm9tIGhhbmRsZXJzLnVw
ZGF0ZWJhc2UgaW1wb3J0IFVwZGF0ZUJhc2UKLWZyb20gbG9nZ2Vycy5yZWNvcmRib3RldmVudCBp
bXBvcnQgUmVjb3JkQm90RXZlbnQKLWZyb20gbG9nZ2Vycy5yZWNvcmRwYXRjaGV2ZW50IGltcG9y
dCBSZWNvcmRQYXRjaEV2ZW50Ci1mcm9tIG1vZGVsLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1l
bnQKLWZyb20gbW9kZWwucXVldWVzdGF0dXMgaW1wb3J0IFF1ZXVlU3RhdHVzCi0KLQotY2xhc3Mg
VXBkYXRlU3RhdHVzKFVwZGF0ZUJhc2UpOgotICAgIGRlZiBnZXQoc2VsZik6Ci0gICAgICAgIHNl
bGYucmVzcG9uc2Uub3V0LndyaXRlKHRlbXBsYXRlLnJlbmRlcigidGVtcGxhdGVzL3VwZGF0ZXN0
YXR1cy5odG1sIiwgTm9uZSkpCi0KLSAgICBkZWYgX3F1ZXVlX3N0YXR1c19mcm9tX3JlcXVlc3Qo
c2VsZik6Ci0gICAgICAgIHF1ZXVlX3N0YXR1cyA9IFF1ZXVlU3RhdHVzKCkKLQotICAgICAgICAj
IEZJWE1FOiBJIHRoaW5rIHRoaXMgY2FuIGJlIHJlbW92ZWQsIG5vIG9uZSB1c2VzIGl0LgotICAg
ICAgICBpZiB1c2Vycy5nZXRfY3VycmVudF91c2VyKCk6Ci0gICAgICAgICAgICBxdWV1ZV9zdGF0
dXMuYXV0aG9yID0gdXNlcnMuZ2V0X2N1cnJlbnRfdXNlcigpCi0KLSAgICAgICAgYnVnX2lkID0g
c2VsZi5faW50X2Zyb21fcmVxdWVzdCgiYnVnX2lkIikKLSAgICAgICAgcGF0Y2hfaWQgPSBzZWxm
Ll9pbnRfZnJvbV9yZXF1ZXN0KCJwYXRjaF9pZCIpCi0gICAgICAgIHF1ZXVlX25hbWUgPSBzZWxm
LnJlcXVlc3QuZ2V0KCJxdWV1ZV9uYW1lIikKLSAgICAgICAgYm90X2lkID0gc2VsZi5yZXF1ZXN0
LmdldCgiYm90X2lkIikKLSAgICAgICAgcXVldWVfc3RhdHVzLnF1ZXVlX25hbWUgPSBxdWV1ZV9u
YW1lCi0gICAgICAgIHF1ZXVlX3N0YXR1cy5ib3RfaWQgPSBib3RfaWQKLSAgICAgICAgcXVldWVf
c3RhdHVzLmFjdGl2ZV9idWdfaWQgPSBidWdfaWQKLSAgICAgICAgcXVldWVfc3RhdHVzLmFjdGl2
ZV9wYXRjaF9pZCA9IHBhdGNoX2lkCi0gICAgICAgIHF1ZXVlX3N0YXR1cy5tZXNzYWdlID0gc2Vs
Zi5yZXF1ZXN0LmdldCgic3RhdHVzIikKLSAgICAgICAgcmVzdWx0c19maWxlID0gc2VsZi5yZXF1
ZXN0LmdldCgicmVzdWx0c19maWxlIikKLSAgICAgICAgcXVldWVfc3RhdHVzLnJlc3VsdHNfZmls
ZSA9IGRiLkJsb2Ioc3RyKHJlc3VsdHNfZmlsZSkpCi0gICAgICAgIHJldHVybiBxdWV1ZV9zdGF0
dXMKLQotICAgIGRlZiBwb3N0KHNlbGYpOgotICAgICAgICBxdWV1ZV9zdGF0dXMgPSBzZWxmLl9x
dWV1ZV9zdGF0dXNfZnJvbV9yZXF1ZXN0KCkKLSAgICAgICAgcXVldWVfc3RhdHVzLnB1dCgpCi0g
ICAgICAgIFJlY29yZEJvdEV2ZW50LnJlY29yZF9hY3Rpdml0eShxdWV1ZV9zdGF0dXMucXVldWVf
bmFtZSwgcXVldWVfc3RhdHVzLmJvdF9pZCkKLSAgICAgICAgaWYgcXVldWVfc3RhdHVzLmFjdGl2
ZV9wYXRjaF9pZDoKLSAgICAgICAgICAgIFJlY29yZFBhdGNoRXZlbnQudXBkYXRlZChxdWV1ZV9z
dGF0dXMuYWN0aXZlX3BhdGNoX2lkLCBxdWV1ZV9zdGF0dXMucXVldWVfbmFtZSwgcXVldWVfc3Rh
dHVzLm1lc3NhZ2UsIHF1ZXVlX3N0YXR1cy5ib3RfaWQpCi0gICAgICAgIHNlbGYucmVzcG9uc2Uu
b3V0LndyaXRlKHF1ZXVlX3N0YXR1cy5rZXkoKS5pZCgpKQpJbmRleDogVG9vbHMvUXVldWVTdGF0
dXNTZXJ2ZXIvaGFuZGxlcnMvdXBkYXRlc3ZucmV2aXNpb24ucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvdXBkYXRlc3ZucmV2aXNpb24ucHkJKHJldmlz
aW9uIDI2MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3VwZGF0ZXN2
bnJldmlzaW9uLnB5CShub25leGlzdGVudCkKQEAgLTEsNTMgKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIyAKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSMgCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwLCBkYgotZnJv
bSBnb29nbGUuYXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCi0KLWltcG9ydCBo
YW5kbGVycwotaW1wb3J0IG1vZGVsCi0KLQotY2xhc3MgVXBkYXRlU1ZOUmV2aXNpb24oaGFuZGxl
cnMuVXBkYXRlQmFzZSk6Ci0gICAgZGVmIGdldChzZWxmKToKLSAgICAgICAgc2VsZi5yZXNwb25z
ZS5vdXQud3JpdGUodGVtcGxhdGUucmVuZGVyKCJ0ZW1wbGF0ZXMvdXBkYXRlc3ZucmV2aXNpb24u
aHRtbCIsIE5vbmUpKQotCi0gICAgZGVmIHBvc3Qoc2VsZik6Ci0gICAgICAgIHN2bl9yZXZpc2lv
bl9udW1iZXIgPSBzZWxmLl9pbnRfZnJvbV9yZXF1ZXN0KCJudW1iZXIiKQotCi0gICAgICAgIHN2
bl9yZXZpc2lvbnMgPSBtb2RlbC5TVk5SZXZpc2lvbi5hbGwoKS5maWx0ZXIoJ251bWJlciA9Jywg
c3ZuX3JldmlzaW9uX251bWJlcikub3JkZXIoJy1kYXRlJykuZmV0Y2goMSkKLSAgICAgICAgc3Zu
X3JldmlzaW9uID0gTm9uZQotICAgICAgICBpZiBzdm5fcmV2aXNpb25zOgotICAgICAgICAgICAg
c3ZuX3JldmlzaW9uID0gc3ZuX3JldmlzaW9uc1swXQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgc3ZuX3JldmlzaW9uID0gbW9kZWwuU1ZOUmV2aXNpb24oKQotICAgICAgICAgICAgc3ZuX3Jl
dmlzaW9uLm51bWJlciA9IHN2bl9yZXZpc2lvbl9udW1iZXIKLSAgICAgICAgc3ZuX3JldmlzaW9u
LmJyb2tlbl9ib3RzLmFwcGVuZChzZWxmLnJlcXVlc3QuZ2V0KCJicm9rZW5fYm90IikpCi0gICAg
ICAgIHN2bl9yZXZpc2lvbi5wdXQoKQotCi0gICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRl
KHN2bl9yZXZpc2lvbi5rZXkoKS5pZCgpKQpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIv
aGFuZGxlcnMvdXBkYXRld29ya2l0ZW1zLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3Rh
dHVzU2VydmVyL2hhbmRsZXJzL3VwZGF0ZXdvcmtpdGVtcy5weQkocmV2aXNpb24gMjYxMTk5KQor
KysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvdXBkYXRld29ya2l0ZW1zLnB5CShu
b25leGlzdGVudCkKQEAgLTEsNzcgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0j
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gZ29vZ2xl
LmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcCwgZGIKLWZyb20gZ29vZ2xlLmFwcGVuZ2luZS5l
eHQud2ViYXBwIGltcG9ydCB0ZW1wbGF0ZQotCi1mcm9tIGhhbmRsZXJzLnVwZGF0ZWJhc2UgaW1w
b3J0IFVwZGF0ZUJhc2UKLWZyb20gbG9nZ2Vycy5yZWNvcmRwYXRjaGV2ZW50IGltcG9ydCBSZWNv
cmRQYXRjaEV2ZW50Ci1mcm9tIG1vZGVsLnF1ZXVlcyBpbXBvcnQgUXVldWUKLWZyb20gbW9kZWwu
d29ya2l0ZW1zIGltcG9ydCBXb3JrSXRlbXMKLQotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRp
bWUKLQotCi1jbGFzcyBVcGRhdGVXb3JrSXRlbXMoVXBkYXRlQmFzZSk6Ci0gICAgZGVmIGdldChz
ZWxmKToKLSAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUodGVtcGxhdGUucmVuZGVyKCJ0
ZW1wbGF0ZXMvdXBkYXRld29ya2l0ZW1zLmh0bWwiLCBOb25lKSkKLQotICAgIGRlZiBfcGFyc2Vf
d29ya19pdGVtc19zdHJpbmcoc2VsZiwgaXRlbXNfc3RyaW5nKToKLSAgICAgICAgaXRlbV9zdHJp
bmdzID0gaXRlbXNfc3RyaW5nLnNwbGl0KCIgIikgaWYgaXRlbXNfc3RyaW5nIGVsc2UgW10KLSAg
ICAgICAgcmV0dXJuIG1hcChpbnQsIGl0ZW1fc3RyaW5ncykKLQotICAgIGRlZiBfd29ya19pdGVt
c19mcm9tX3JlcXVlc3Qoc2VsZik6Ci0gICAgICAgIGhpZ2hfcHJpb3JpdHlfaXRlbXNfc3RyaW5n
ID0gc2VsZi5yZXF1ZXN0LmdldCgiaGlnaF9wcmlvcml0eV93b3JrX2l0ZW1zIikKLSAgICAgICAg
aXRlbXNfc3RyaW5nID0gc2VsZi5yZXF1ZXN0LmdldCgid29ya19pdGVtcyIpCi0gICAgICAgIGhp
Z2hfcHJpb3JpdHlfd29ya19pdGVtcyA9IHNlbGYuX3BhcnNlX3dvcmtfaXRlbXNfc3RyaW5nKGhp
Z2hfcHJpb3JpdHlfaXRlbXNfc3RyaW5nKQotICAgICAgICB3b3JrX2l0ZW1zID0gc2VsZi5fcGFy
c2Vfd29ya19pdGVtc19zdHJpbmcoaXRlbXNfc3RyaW5nKQotICAgICAgICByZXR1cm4gaGlnaF9w
cmlvcml0eV93b3JrX2l0ZW1zLCB3b3JrX2l0ZW1zCi0KLSAgICBkZWYgX3F1ZXVlX2Zyb21fcmVx
dWVzdChzZWxmKToKLSAgICAgICAgcXVldWVfbmFtZSA9IHNlbGYucmVxdWVzdC5nZXQoInF1ZXVl
X25hbWUiKQotICAgICAgICBxdWV1ZSA9IFF1ZXVlLnF1ZXVlX3dpdGhfbmFtZShxdWV1ZV9uYW1l
KQotICAgICAgICBpZiBub3QgcXVldWU6Ci0gICAgICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53
cml0ZSgiXCIlc1wiIGlzIG5vdCBpbiBxdWV1ZXMgJXMiICUgKHF1ZXVlX25hbWUsIFF1ZXVlLmFs
bCgpKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBxdWV1ZQotCi0g
ICAgZGVmIHBvc3Qoc2VsZik6Ci0gICAgICAgIHF1ZXVlID0gc2VsZi5fcXVldWVfZnJvbV9yZXF1
ZXN0KCkKLSAgICAgICAgaWYgbm90IHF1ZXVlOgotICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5z
ZXRfc3RhdHVzKDUwMCkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGhpZ2hfcHJpb3Jp
dHlfaXRlbXMsIGl0ZW1zID0gc2VsZi5fd29ya19pdGVtc19mcm9tX3JlcXVlc3QoKQotCi0gICAg
ICAgICMgQWRkIGl0ZW1zIHRoYXQgYXJlIG5vdCBjdXJyZW50bHkgaW4gdGhlIHdvcmsgcXVldWUu
IE5ldmVyIHJlbW92ZSBhbnkgaXRlbXMsCi0gICAgICAgICMgYXMgdGhhdCBzaG91bGQgYmUgZG9u
ZSBieSB0aGUgcXVldWUsIGZlZWRlciBvbmx5IGFkZHMgdGhlbS4KLSAgICAgICAgYWRkZWRfaXRl
bXMgPSBxdWV1ZS53b3JrX2l0ZW1zKCkuYWRkX3dvcmtfaXRlbXMoaGlnaF9wcmlvcml0eV9pdGVt
cywgaXRlbXMpCi0KLSAgICAgICAgZm9yIHdvcmtfaXRlbSBpbiBhZGRlZF9pdGVtczoKLSAgICAg
ICAgICAgIFJlY29yZFBhdGNoRXZlbnQuYWRkZWQod29ya19pdGVtLCBxdWV1ZS5uYW1lKCkpCklu
ZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycwkocmV2aXNpb24gMjYxMTk5KQorKysgVG9vbHMv
UXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMJKG5vbmV4aXN0ZW50KQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVk
OiBzdm46aWdub3JlCiMjIC0xICswLDAgIyMKLSoucHljCkluZGV4OiBUb29scy9RdWV1ZVN0YXR1
c1NlcnZlci9pbmRleC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVy
L2luZGV4LnlhbWwJKHJldmlzaW9uIDI2MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVy
L2luZGV4LnlhbWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw5NyArMCwwIEBACi1pbmRleGVzOgotCi0j
IFRoaXMgaW5kZXgueWFtbCBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgd2hlbmV2ZXIgdGhlIGRl
dl9hcHBzZXJ2ZXIKLSMgZGV0ZWN0cyB0aGF0IGEgbmV3IHR5cGUgb2YgcXVlcnkgaXMgcnVuLiAg
SWYgeW91IHdhbnQgdG8gbWFuYWdlIHRoZQotIyBpbmRleC55YW1sIGZpbGUgbWFudWFsbHksIHJl
bW92ZSB0aGUgYWJvdmUgbWFya2VyIGxpbmUgKHRoZSBsaW5lCi0jIHNheWluZyAiIyBBVVRPR0VO
RVJBVEVEIikuICBJZiB5b3Ugd2FudCB0byBtYW5hZ2Ugc29tZSBpbmRleGVzCi0jIG1hbnVhbGx5
LCBtb3ZlIHRoZW0gYWJvdmUgdGhlIG1hcmtlciBsaW5lLiAgVGhlIGluZGV4LnlhbWwgZmlsZSBp
cwotIyBhdXRvbWF0aWNhbGx5IHVwbG9hZGVkIHRvIHRoZSBhZG1pbiBjb25zb2xlIHdoZW4geW91
IG5leHQgZGVwbG95Ci0jIHlvdXIgYXBwbGljYXRpb24gdXNpbmcgYXBwY2ZnLnB5LgotCi0tIGtp
bmQ6IFBhdGNoTG9nCi0gIHByb3BlcnRpZXM6Ci0gIC0gbmFtZTogcXVldWVfbmFtZQotICAtIG5h
bWU6IGRhdGUKLQotLSBraW5kOiBRdWV1ZVN0YXR1cwotICBwcm9wZXJ0aWVzOgotICAtIG5hbWU6
IGFjdGl2ZV9wYXRjaF9pZAotICAtIG5hbWU6IGRhdGUKLSAgICBkaXJlY3Rpb246IGRlc2MKLQot
LSBraW5kOiBRdWV1ZVN0YXR1cwotICBwcm9wZXJ0aWVzOgotICAtIG5hbWU6IGFjdGl2ZV9wYXRj
aF9pZAotICAtIG5hbWU6IHF1ZXVlX25hbWUKLSAgLSBuYW1lOiBkYXRlCi0gICAgZGlyZWN0aW9u
OiBkZXNjCi0KLS0ga2luZDogUXVldWVTdGF0dXMKLSAgcHJvcGVydGllczoKLSAgLSBuYW1lOiBi
b3RfaWQKLSAgLSBuYW1lOiBkYXRlCi0gICAgZGlyZWN0aW9uOiBkZXNjCi0KLS0ga2luZDogUXVl
dWVTdGF0dXMKLSAgcHJvcGVydGllczoKLSAgLSBuYW1lOiBib3RfaWQKLSAgLSBuYW1lOiBtZXNz
YWdlCi0gIC0gbmFtZTogcXVldWVfbmFtZQotICAtIG5hbWU6IGRhdGUKLSAgICBkaXJlY3Rpb246
IGRlc2MKLQotLSBraW5kOiBRdWV1ZVN0YXR1cwotICBwcm9wZXJ0aWVzOgotICAtIG5hbWU6IGJv
dF9pZAotICAtIG5hbWU6IG1lc3NhZ2UKLSAgLSBuYW1lOiBxdWV1ZV9uYW1lCi0gIC0gbmFtZTog
ZGF0ZQotCi0tIGtpbmQ6IFF1ZXVlU3RhdHVzCi0gIHByb3BlcnRpZXM6Ci0gIC0gbmFtZTogcXVl
dWVfbmFtZQotICAtIG5hbWU6IGRhdGUKLSAgICBkaXJlY3Rpb246IGRlc2MKLSAgLSBuYW1lOiBi
b3RfaWQKLQotLSBraW5kOiBRdWV1ZVN0YXR1cwotICBwcm9wZXJ0aWVzOgotICAtIG5hbWU6IGJv
dF9pZAotICAtIG5hbWU6IHF1ZXVlX25hbWUKLSAgLSBuYW1lOiBkYXRlCi0gICAgZGlyZWN0aW9u
OiBkZXNjCi0KLS0ga2luZDogUXVldWVTdGF0dXMKLSAgcHJvcGVydGllczoKLSAgLSBuYW1lOiBt
ZXNzYWdlCi0gIC0gbmFtZTogcXVldWVfbmFtZQotICAtIG5hbWU6IGRhdGUKLQotLSBraW5kOiBR
dWV1ZVN0YXR1cwotICBwcm9wZXJ0aWVzOgotICAtIG5hbWU6IG1lc3NhZ2UKLSAgLSBuYW1lOiBx
dWV1ZV9uYW1lCi0gIC0gbmFtZTogZGF0ZQotICAgIGRpcmVjdGlvbjogZGVzYwotCi0tIGtpbmQ6
IFF1ZXVlU3RhdHVzCi0gIHByb3BlcnRpZXM6Ci0gIC0gbmFtZTogcXVldWVfbmFtZQotICAtIG5h
bWU6IGRhdGUKLQotLSBraW5kOiBRdWV1ZVN0YXR1cwotICBwcm9wZXJ0aWVzOgotICAtIG5hbWU6
IHF1ZXVlX25hbWUKLSAgLSBuYW1lOiBkYXRlCi0gICAgZGlyZWN0aW9uOiBkZXNjCi0KLS0ga2lu
ZDogUXVldWVTdGF0dXMKLSAgcHJvcGVydGllczoKLSAgLSBuYW1lOiBxdWV1ZV9uYW1lCi0gIC0g
bmFtZTogYm90X2lkCi0KLS0ga2luZDogU1ZOUmV2aXNpb24KLSAgcHJvcGVydGllczoKLSAgLSBu
YW1lOiBudW1iZXIKLSAgLSBuYW1lOiBkYXRlCi0gICAgZGlyZWN0aW9uOiBkZXNjCkluZGV4OiBU
b29scy9RdWV1ZVN0YXR1c1NlcnZlci9sb2dnZXJzL19faW5pdF9fLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2xvZ2dlcnMvX19pbml0X18ucHkJKHJldmlzaW9uIDI2
MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2xvZ2dlcnMvX19pbml0X18ucHkJKG5v
bmV4aXN0ZW50KQpAQCAtMSArMCwwIEBACi0jIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNo
IHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGUgZmlsZXMKSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL2xvZ2dlcnMvcmVjb3JkYm90ZXZlbnQucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVl
dWVTdGF0dXNTZXJ2ZXIvbG9nZ2Vycy9yZWNvcmRib3RldmVudC5weQkocmV2aXNpb24gMjYxMTk5
KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbG9nZ2Vycy9yZWNvcmRib3RldmVudC5weQko
bm9uZXhpc3RlbnQpCkBAIC0xLDM5ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIGNv
bmZpZy5sb2dnaW5nIGltcG9ydCBxdWV1ZV9sb2dfZHVyYXRpb24KLWZyb20gbW9kZWwucXVldWVs
b2cgaW1wb3J0IFF1ZXVlTG9nCi0KLQotY2xhc3MgUmVjb3JkQm90RXZlbnQob2JqZWN0KToKLSAg
ICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcmVjb3JkX2FjdGl2aXR5KGNscywgcXVldWVfbmFtZSwg
Ym90X2lkKToKLSAgICAgICAgcXVldWVfbG9nID0gUXVldWVMb2cuZ2V0X2N1cnJlbnQocXVldWVf
bmFtZSwgcXVldWVfbG9nX2R1cmF0aW9uKQotICAgICAgICBpZiBxdWV1ZV9sb2cgYW5kIGJvdF9p
ZCBub3QgaW4gcXVldWVfbG9nLmJvdF9pZHNfc2VlbjoKLSAgICAgICAgICAgIHF1ZXVlX2xvZy5i
b3RfaWRzX3NlZW4uYXBwZW5kKGJvdF9pZCkKLSAgICAgICAgICAgIHF1ZXVlX2xvZy5wdXQoKQpJ
bmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbG9nZ2Vycy9yZWNvcmRwYXRjaGV2ZW50LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2xvZ2dlcnMvcmVjb3JkcGF0
Y2hldmVudC5weQkocmV2aXNpb24gMjYxMTk5KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIv
bG9nZ2Vycy9yZWNvcmRwYXRjaGV2ZW50LnB5CShub25leGlzdGVudCkKQEAgLTEsMTEwICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24u
Ci0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIGNvbmZpZy5sb2dnaW5nIGltcG9ydCBxdWV1ZV9sb2df
ZHVyYXRpb24KLWZyb20gbW9kZWwucGF0Y2hsb2cgaW1wb3J0IFBhdGNoTG9nCi1mcm9tIG1vZGVs
LnF1ZXVlbG9nIGltcG9ydCBRdWV1ZUxvZwotZnJvbSBtb2RlbC53YXJuaW5nbG9nIGltcG9ydCBX
YXJuaW5nTG9nCi0KLQotY2xhc3MgUmVjb3JkUGF0Y2hFdmVudChvYmplY3QpOgotICAgIEBjbGFz
c21ldGhvZAotICAgIGRlZiBhZGRlZChjbHMsIGF0dGFjaG1lbnRfaWQsIHF1ZXVlX25hbWUpOgot
ICAgICAgICBQYXRjaExvZy5sb29rdXAoYXR0YWNobWVudF9pZCwgcXVldWVfbmFtZSkKLSAgICAg
ICAgcXVldWVfbG9nID0gUXVldWVMb2cuZ2V0X2N1cnJlbnQocXVldWVfbmFtZSwgcXVldWVfbG9n
X2R1cmF0aW9uKQotICAgICAgICBpZiBxdWV1ZV9sb2cudXBkYXRlX21heF9wYXRjaGVzX3dhaXRp
bmcoKToKLSAgICAgICAgICAgIHF1ZXVlX2xvZy5wdXQoKQotCi0gICAgQGNsYXNzbWV0aG9kCi0g
ICAgZGVmIHN0YXJ0ZWQoY2xzLCBhdHRhY2htZW50X2lkLCBxdWV1ZV9uYW1lLCBib3RfaWQ9Tm9u
ZSk6Ci0gICAgICAgIHBhdGNoX2xvZyA9IFBhdGNoTG9nLmxvb2t1cF9pZl9leGlzdHMoYXR0YWNo
bWVudF9pZCwgcXVldWVfbmFtZSkKLSAgICAgICAgaWYgbm90IHBhdGNoX2xvZzoKLSAgICAgICAg
ICAgIFdhcm5pbmdMb2cucmVjb3JkKCJwYXRjaGxvZyBtaXNzaW5nIiwgIkluIHN0YXJ0ZWQgZXZl
bnQuIiwgYXR0YWNobWVudF9pZCwgcXVldWVfbmFtZSwgYm90X2lkKQotICAgICAgICAgICAgcmV0
dXJuCi0KLSAgICAgICAgaWYgYm90X2lkOgotICAgICAgICAgICAgcGF0Y2hfbG9nLmJvdF9pZCA9
IGJvdF9pZAotCi0gICAgICAgICMgQW4gZXhpc3Rpbmcgd2FpdF9kdXJhdGlvbiBpbXBsaWVzIHRo
ZSBwYXRjaCBoYWQgYmVlbiBzdGFydGVkIHByZXZpb3VzbHkgYW5kIGlzCi0gICAgICAgICMgYmVp
bmcgcGlja2VkIHVwIGFnYWluIGJlY2F1c2UgaXQgaGFkIGV4cGlyZWQsIG9yIHdhcyByZWxlYXNl
ZC4KLSAgICAgICAgaWYgcGF0Y2hfbG9nLndhaXRfZHVyYXRpb24gaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICBwYXRjaF9sb2cucmV0cnlfY291bnQgKz0gMQotICAgICAgICAgICAgcGF0Y2hfbG9n
LnB1dCgpCi0KLSAgICAgICAgICAgIHF1ZXVlX2xvZyA9IFF1ZXVlTG9nLmdldF9jdXJyZW50KHF1
ZXVlX25hbWUsIHF1ZXVlX2xvZ19kdXJhdGlvbikKLSAgICAgICAgICAgIHF1ZXVlX2xvZy5wYXRj
aF9yZXRyeV9jb3VudCArPSAxCi0gICAgICAgICAgICBxdWV1ZV9sb2cucHV0KCkKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHBhdGNoX2xvZy5jYWxjdWxhdGVfd2FpdF9kdXJhdGlvbigpCi0g
ICAgICAgICAgICBwYXRjaF9sb2cucHV0KCkKLQotICAgICAgICAgICAgcXVldWVfbG9nID0gUXVl
dWVMb2cuZ2V0X2N1cnJlbnQocXVldWVfbmFtZSwgcXVldWVfbG9nX2R1cmF0aW9uKQotICAgICAg
ICAgICAgcXVldWVfbG9nLnBhdGNoX3dhaXRfZHVyYXRpb25zLmFwcGVuZChwYXRjaF9sb2cud2Fp
dF9kdXJhdGlvbikKLSAgICAgICAgICAgIHF1ZXVlX2xvZy5wdXQoKQotCi0gICAgQGNsYXNzbWV0
aG9kCi0gICAgZGVmIHN0b3BwZWQoY2xzLCBhdHRhY2htZW50X2lkLCBxdWV1ZV9uYW1lLCBzdGF0
dXNfbWVzc2FnZSwgYm90X2lkPU5vbmUpOgotICAgICAgICBwYXRjaF9sb2cgPSBQYXRjaExvZy5s
b29rdXBfaWZfZXhpc3RzKGF0dGFjaG1lbnRfaWQsIHF1ZXVlX25hbWUpCi0gICAgICAgIGlmIG5v
dCBwYXRjaF9sb2c6Ci0gICAgICAgICAgICBXYXJuaW5nTG9nLnJlY29yZCgicGF0Y2hsb2cgbWlz
c2luZyIsICJJbiBzdG9wcGVkIGV2ZW50LiIsIGF0dGFjaG1lbnRfaWQsIHF1ZXVlX25hbWUsIGJv
dF9pZCkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGlmIHBhdGNoX2xvZy53YWl0X2R1
cmF0aW9uIGlzIE5vbmU6Ci0gICAgICAgICAgICBXYXJuaW5nTG9nLnJlY29yZCgicGF0Y2hsb2cg
d2FpdCBkdXJhdGlvbiBtaXNzaW5nIiwgIkluIHN0b3BwZWQgZXZlbnQuIiwgYXR0YWNobWVudF9p
ZCwgcXVldWVfbmFtZSwgYm90X2lkKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYg
bm90IHBhdGNoX2xvZy5maW5pc2hlZDoKLSAgICAgICAgICAgIGlmIGJvdF9pZDoKLSAgICAgICAg
ICAgICAgICBwYXRjaF9sb2cuYm90X2lkID0gYm90X2lkCi0gICAgICAgICAgICBwYXRjaF9sb2cu
ZmluaXNoZWQgPSBUcnVlCi0gICAgICAgICAgICBwYXRjaF9sb2cuY2FsY3VsYXRlX3Byb2Nlc3Nf
ZHVyYXRpb24oKQotICAgICAgICAgICAgcGF0Y2hfbG9nLmxhdGVzdF9tZXNzYWdlID0gc3RhdHVz
X21lc3NhZ2UKLSAgICAgICAgICAgIHBhdGNoX2xvZy5wdXQoKQotCi0gICAgICAgICAgICBxdWV1
ZV9sb2cgPSBRdWV1ZUxvZy5nZXRfY3VycmVudChxdWV1ZV9uYW1lLCBxdWV1ZV9sb2dfZHVyYXRp
b24pCi0gICAgICAgICAgICBxdWV1ZV9sb2cucGF0Y2hfcHJvY2Vzc19kdXJhdGlvbnMuYXBwZW5k
KHBhdGNoX2xvZy5wcm9jZXNzX2R1cmF0aW9uKQotICAgICAgICAgICAgcXVldWVfbG9nLnB1dCgp
Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdXBkYXRlZChjbHMsIGF0dGFjaG1lbnRfaWQs
IHF1ZXVlX25hbWUsIHN0YXR1c19tZXNzYWdlLCBib3RfaWQ9Tm9uZSk6Ci0gICAgICAgIHBhdGNo
X2xvZyA9IFBhdGNoTG9nLmxvb2t1cF9pZl9leGlzdHMoYXR0YWNobWVudF9pZCwgcXVldWVfbmFt
ZSkKLSAgICAgICAgaWYgbm90IHBhdGNoX2xvZzoKLSAgICAgICAgICAgIFdhcm5pbmdMb2cucmVj
b3JkKCJwYXRjaGxvZyBtaXNzaW5nIiwgIkluIHVwZGF0ZWQgZXZlbnQuIiwgYXR0YWNobWVudF9p
ZCwgcXVldWVfbmFtZSwgYm90X2lkKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYg
Ym90X2lkOgotICAgICAgICAgICAgcGF0Y2hfbG9nLmJvdF9pZCA9IGJvdF9pZAotICAgICAgICBw
YXRjaF9sb2cuc3RhdHVzX3VwZGF0ZV9jb3VudCArPSAxCi0gICAgICAgIHBhdGNoX2xvZy5sYXRl
c3RfbWVzc2FnZSA9IHN0YXR1c19tZXNzYWdlCi0gICAgICAgIHBhdGNoX2xvZy5wdXQoKQotCi0g
ICAgICAgIHF1ZXVlX2xvZyA9IFF1ZXVlTG9nLmdldF9jdXJyZW50KHF1ZXVlX25hbWUsIHF1ZXVl
X2xvZ19kdXJhdGlvbikKLSAgICAgICAgcXVldWVfbG9nLnN0YXR1c191cGRhdGVfY291bnQgKz0g
MQotICAgICAgICBxdWV1ZV9sb2cucHV0KCkKLQpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2
ZXIvbG9nZ2Vycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9sb2dnZXJz
CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9sb2dnZXJzCShu
b25leGlzdGVudCkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVy
L2xvZ2dlcnMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46aWdub3JlCiMjIC0xICswLDAgIyMKLSou
cHljCkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9tYWluLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21haW4ucHkJKHJldmlzaW9uIDI2MTE5OSkKKysrIFRv
b2xzL1F1ZXVlU3RhdHVzU2VydmVyL21haW4ucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw5NCArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jIAotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIyAKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jIFJlcXVlc3QgYSBtb2Rlcm4gRGphbmdvCi1mcm9tIGdv
b2dsZS5hcHBlbmdpbmUuZGlzdCBpbXBvcnQgdXNlX2xpYnJhcnkKLXVzZV9saWJyYXJ5KCdkamFu
Z28nLCAnMS4yJykgICMgTXVzdCBhZ3JlZSB3aXRoIF9faW5pdC5weV9fCi0KLWZyb20gZ29vZ2xl
LmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAotZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dC53
ZWJhcHAudXRpbCBpbXBvcnQgcnVuX3dzZ2lfYXBwCi0KLWZyb20gaGFuZGxlcnMuYWN0aXZlYm90
cyBpbXBvcnQgQWN0aXZlQm90cwotZnJvbSBoYW5kbGVycy5nYyBpbXBvcnQgR0MKLWZyb20gaGFu
ZGxlcnMubmV4dHBhdGNoIGltcG9ydCBOZXh0UGF0Y2gKLWZyb20gaGFuZGxlcnMucGF0Y2ggaW1w
b3J0IFBhdGNoCi1mcm9tIGhhbmRsZXJzLnBhdGNoc3RhdHVzIGltcG9ydCBQYXRjaFN0YXR1cwot
ZnJvbSBoYW5kbGVycy5wcm9jZXNzaW5ndGltZXNqc29uIGltcG9ydCBQcm9jZXNzaW5nVGltZXNK
U09OCi1mcm9tIGhhbmRsZXJzLnF1ZXVlY2hhcnRzIGltcG9ydCBRdWV1ZUNoYXJ0cwotZnJvbSBo
YW5kbGVycy5xdWV1ZWxlbmd0aGpzb24gaW1wb3J0IFF1ZXVlTGVuZ3RoSlNPTgotZnJvbSBoYW5k
bGVycy5xdWV1ZXN0YXR1cyBpbXBvcnQgUXVldWVTdGF0dXMKLWZyb20gaGFuZGxlcnMucXVldWVz
dGF0dXNqc29uIGltcG9ydCBRdWV1ZVN0YXR1c0pTT04KLWZyb20gaGFuZGxlcnMucmVjZW50c3Rh
dHVzIGltcG9ydCBRdWV1ZXNPdmVydmlldwotZnJvbSBoYW5kbGVycy5yZWxlYXNlcGF0Y2ggaW1w
b3J0IFJlbGVhc2VQYXRjaAotZnJvbSBoYW5kbGVycy5yZWxlYXNlbG9jayBpbXBvcnQgUmVsZWFz
ZUxvY2sKLWZyb20gaGFuZGxlcnMuc2hvd3Jlc3VsdHMgaW1wb3J0IFNob3dSZXN1bHRzCi1mcm9t
IGhhbmRsZXJzLnN0YXR1c2J1YmJsZSBpbXBvcnQgU3RhdHVzQnViYmxlCi1mcm9tIGhhbmRsZXJz
LnN1Ym1pdHRvZXdzIGltcG9ydCBTdWJtaXRUb0VXUwotZnJvbSBoYW5kbGVycy5zdm5yZXZpc2lv
biBpbXBvcnQgU1ZOUmV2aXNpb24KLWZyb20gaGFuZGxlcnMuc3luY3F1ZXVlbG9ncyBpbXBvcnQg
U3luY1F1ZXVlTG9ncwotZnJvbSBoYW5kbGVycy51cGRhdGVzdGF0dXMgaW1wb3J0IFVwZGF0ZVN0
YXR1cwotZnJvbSBoYW5kbGVycy51cGRhdGVzdm5yZXZpc2lvbiBpbXBvcnQgVXBkYXRlU1ZOUmV2
aXNpb24KLWZyb20gaGFuZGxlcnMudXBkYXRld29ya2l0ZW1zIGltcG9ydCBVcGRhdGVXb3JrSXRl
bXMKLQotCi13ZWJhcHAudGVtcGxhdGUucmVnaXN0ZXJfdGVtcGxhdGVfbGlicmFyeSgnZmlsdGVy
cy53ZWJraXRfZXh0cmFzJykKLQotcm91dGVzID0gWwotICAgICgnLycsIFF1ZXVlc092ZXJ2aWV3
KSwKLSAgICAoJy9nYycsIEdDKSwKLSAgICAoJy9zeW5jLXF1ZXVlLWxvZ3MnLCBTeW5jUXVldWVM
b2dzKSwKLSAgICAocicvcGF0Y2gtc3RhdHVzLyguKikvKC4qKScsIFBhdGNoU3RhdHVzKSwKLSAg
ICAocicvcGF0Y2gvKC4qKS8oLiopJywgUGF0Y2gpLAotICAgIChyJy9wYXRjaC8oLiopJywgUGF0
Y2gpLAotICAgICgnL3N1Ym1pdC10by1ld3MnLCBTdWJtaXRUb0VXUyksCi0gICAgKHInL3Jlc3Vs
dHMvKC4qKScsIFNob3dSZXN1bHRzKSwKLSAgICAocicvc3RhdHVzLWJ1YmJsZS8oLiopJywgU3Rh
dHVzQnViYmxlKSwKLSAgICAocicvc3ZuLXJldmlzaW9uLyguKiknLCBTVk5SZXZpc2lvbiksCi0g
ICAgKHInL3F1ZXVlLWNoYXJ0cy8oLiopJywgUXVldWVDaGFydHMpLAotICAgIChyJy9xdWV1ZS1s
ZW5ndGgtanNvbi8oLiopJywgUXVldWVMZW5ndGhKU09OKSwKLSAgICAocicvcXVldWUtc3RhdHVz
LyguKikvYm90cy8oLiopJywgUXVldWVTdGF0dXMpLAotICAgIChyJy9xdWV1ZS1zdGF0dXMvKC4q
KScsIFF1ZXVlU3RhdHVzKSwKLSAgICAocicvcXVldWUtc3RhdHVzLWpzb24vKC4qKScsIFF1ZXVl
U3RhdHVzSlNPTiksCi0gICAgKHInL25leHQtcGF0Y2gvKC4qKScsIE5leHRQYXRjaCksCi0gICAg
KCcvcmVsZWFzZS1wYXRjaCcsIFJlbGVhc2VQYXRjaCksCi0gICAgKCcvcmVsZWFzZS1sb2NrJywg
UmVsZWFzZUxvY2spLAotICAgICgnL3VwZGF0ZS1zdGF0dXMnLCBVcGRhdGVTdGF0dXMpLAotICAg
ICgnL3VwZGF0ZS13b3JrLWl0ZW1zJywgVXBkYXRlV29ya0l0ZW1zKSwKLSAgICAoJy91cGRhdGUt
c3ZuLXJldmlzaW9uJywgVXBkYXRlU1ZOUmV2aXNpb24pLAotICAgICgnL2FjdGl2ZS1ib3RzJywg
QWN0aXZlQm90cyksCi0gICAgKHInL3Byb2Nlc3NpbmctdGltZXMtanNvbi8oXGQrKVwtKFxkKylc
LShcZCspXC0oXGQrKVwtKFxkKylcLShcZCspXC0oXGQrKVwtKFxkKylcLShcZCspXC0oXGQrKVwt
KFxkKylcLShcZCspJywgUHJvY2Vzc2luZ1RpbWVzSlNPTiksCi1dCi0KLWFwcGxpY2F0aW9uID0g
d2ViYXBwLldTR0lBcHBsaWNhdGlvbihyb3V0ZXMsIGRlYnVnPVRydWUpCi0KLWRlZiBtYWluKCk6
Ci0gICAgcnVuX3dzZ2lfYXBwKGFwcGxpY2F0aW9uKQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWlu
X18iOgotICAgIG1haW4oKQpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvX19p
bml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvX19p
bml0X18ucHkJKHJldmlzaW9uIDI2MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21v
ZGVsL19faW5pdF9fLnB5CShub25leGlzdGVudCkKQEAgLTEsMyArMCwwIEBACi0jIFJlcXVpcmVk
IGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGUgZmlsZXMKLQot
ZnJvbSBtb2RlbC5zdm5yZXZpc2lvbiBpbXBvcnQgU1ZOUmV2aXNpb24KSW5kZXg6IFRvb2xzL1F1
ZXVlU3RhdHVzU2VydmVyL21vZGVsL2FjdGl2ZXdvcmtpdGVtcy5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9RdWV1ZVN0YXR1c1NlcnZlci9tb2RlbC9hY3RpdmV3b3JraXRlbXMucHkJKHJldmlzaW9u
IDI2MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL2FjdGl2ZXdvcmtpdGVt
cy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDEwMCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
ZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgZGIKLQotZnJvbSBkYXRldGltZSBpbXBv
cnQgdGltZWRlbHRhLCBkYXRldGltZQotaW1wb3J0IHRpbWUKLQotZnJvbSBjb25maWcucXVldWVz
IGltcG9ydCB3b3JrX2l0ZW1fbG9ja190aW1lb3V0Ci1mcm9tIG1vZGVsLnF1ZXVlcHJvcGVydHlt
aXhpbiBpbXBvcnQgUXVldWVQcm9wZXJ0eU1peGluCi0KLQotY2xhc3MgQWN0aXZlV29ya0l0ZW1z
KGRiLk1vZGVsLCBRdWV1ZVByb3BlcnR5TWl4aW4pOgotICAgIHF1ZXVlX25hbWUgPSBkYi5TdHJp
bmdQcm9wZXJ0eSgpCi0gICAgaXRlbV9pZHMgPSBkYi5MaXN0UHJvcGVydHkoaW50KQotICAgIGl0
ZW1fZGF0ZXMgPSBkYi5MaXN0UHJvcGVydHkoZmxvYXQpCi0gICAgZGF0ZSA9IGRiLkRhdGVUaW1l
UHJvcGVydHkoYXV0b19ub3dfYWRkPVRydWUpCi0KLSAgICAjIFRoZSBpZC9kYXRlIHBhaXJzIHNo
b3VsZCBwcm9iYWJseSBqdXN0IGJlIHRoZWlyIG93biBjbGFzcy4KLSAgICBkZWYgX2l0ZW1fdGlt
ZV9wYWlycyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHppcChzZWxmLml0ZW1faWRzLCBzZWxmLml0
ZW1fZGF0ZXMpCi0KLSAgICBkZWYgX3NldF9pdGVtX3RpbWVfcGFpcnMoc2VsZiwgcGFpcnMpOgot
ICAgICAgICBpZiBwYWlyczoKLSAgICAgICAgICAgICMgVGhlICogb3BlcmF0b3IgcmFpc2VzIG9u
IGFuIGVtcHR5IGxpc3QuCi0gICAgICAgICAgICAjIGRiLk1vZGVsIGRvZXMgbm90IHR1cGxlcywg
d2UgaGF2ZSB0byBtYWtlIGxpc3RzLgotICAgICAgICAgICAgc2VsZi5pdGVtX2lkcywgc2VsZi5p
dGVtX2RhdGVzID0gbWFwKGxpc3QsIHppcCgqcGFpcnMpKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgc2VsZi5pdGVtX2lkcyA9IFtdCi0gICAgICAgICAgICBzZWxmLml0ZW1fZGF0ZXMgPSBb
XQotCi0gICAgZGVmIF9hcHBlbmRfaXRlbV90aW1lX3BhaXIoc2VsZiwgcGFpcik6Ci0gICAgICAg
IHNlbGYuaXRlbV9pZHMuYXBwZW5kKHBhaXJbMF0pCi0gICAgICAgIHNlbGYuaXRlbV9kYXRlcy5h
cHBlbmQocGFpclsxXSkKLQotICAgIGRlZiBfcmVtb3ZlX2l0ZW0oc2VsZiwgaXRlbV9pZCk6Ci0g
ICAgICAgIG5vbmV4cGlyZWRfcGFpcnMgPSBbcGFpciBmb3IgcGFpciBpbiBzZWxmLl9pdGVtX3Rp
bWVfcGFpcnMoKSBpZiBwYWlyWzBdICE9IGl0ZW1faWRdCi0gICAgICAgIHNlbGYuX3NldF9pdGVt
X3RpbWVfcGFpcnMobm9uZXhwaXJlZF9wYWlycykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRl
ZiBrZXlfZm9yX3F1ZXVlKGNscywgcXVldWVfbmFtZSk6Ci0gICAgICAgIHJldHVybiAiYWN0aXZl
LXdvcmstaXRlbXMtJXMiICUgKHF1ZXVlX25hbWUpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgbG9va3VwX2J5X3F1ZXVlKGNscywgcXVldWVfbmFtZSk6Ci0gICAgICAgIHJldHVybiBjbHMu
Z2V0X29yX2luc2VydChrZXlfbmFtZT1jbHMua2V5X2Zvcl9xdWV1ZShxdWV1ZV9uYW1lKSwgcXVl
dWVfbmFtZT1xdWV1ZV9uYW1lKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfZXhwaXJl
X2l0ZW0oa2V5LCBpdGVtX2lkKToKLSAgICAgICAgYWN0aXZlX3dvcmtfaXRlbXMgPSBkYi5nZXQo
a2V5KQotICAgICAgICBhY3RpdmVfd29ya19pdGVtcy5fcmVtb3ZlX2l0ZW0oaXRlbV9pZCkKLSAg
ICAgICAgYWN0aXZlX3dvcmtfaXRlbXMucHV0KCkKLQotICAgIGRlZiBleHBpcmVfaXRlbShzZWxm
LCBpdGVtX2lkKToKLSAgICAgICAgcmV0dXJuIGRiLnJ1bl9pbl90cmFuc2FjdGlvbihzZWxmLl9l
eHBpcmVfaXRlbSwgc2VsZi5rZXkoKSwgaXRlbV9pZCkKLQotICAgIGRlZiBkZWFjdGl2YXRlX2V4
cGlyZWQoc2VsZiwgbm93KToKLSAgICAgICAgIyBJZiB0aGUgcGF0Y2ggaXMgc3RpbGwgYWN0aXZl
IGFmdGVyIHRoaXMgbXVjaCB0aW1lLCB0aGVuIGEgYm90IG11c3QgaGF2ZSBmcm96ZW4gb3IgcmVi
b290ZWQsCi0gICAgICAgICMgYW5kIGRyb3BwZWQgdGhlIHBhdGNoIG9uIHRoZSBmbG9vci4gTGV0
IGFub3RoZXIgYm90IHBpY2sgaXQgdXAuCi0gICAgICAgIGN1dG9mZl90aW1lID0gdGltZS5ta3Rp
bWUoKG5vdyAtIHdvcmtfaXRlbV9sb2NrX3RpbWVvdXQpLnRpbWV0dXBsZSgpKQotICAgICAgICBu
b25leHBpcmVkX3BhaXJzID0gW3BhaXIgZm9yIHBhaXIgaW4gc2VsZi5faXRlbV90aW1lX3BhaXJz
KCkgaWYgcGFpclsxXSA+IGN1dG9mZl90aW1lXQotICAgICAgICBzZWxmLl9zZXRfaXRlbV90aW1l
X3BhaXJzKG5vbmV4cGlyZWRfcGFpcnMpCi0KLSAgICBkZWYgbmV4dF9pdGVtKHNlbGYsIHdvcmtf
aXRlbV9pZHMsIG5vdyk6Ci0gICAgICAgIGZvciBpdGVtX2lkIGluIHdvcmtfaXRlbV9pZHM6Ci0g
ICAgICAgICAgICBpZiBpdGVtX2lkIG5vdCBpbiBzZWxmLml0ZW1faWRzOgotICAgICAgICAgICAg
ICAgIHNlbGYuX2FwcGVuZF9pdGVtX3RpbWVfcGFpcihbaXRlbV9pZCwgdGltZS5ta3RpbWUobm93
LnRpbWV0dXBsZSgpKV0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1faWQKLSAgICAgICAg
cmV0dXJuIE5vbmUKLQotICAgIGRlZiB0aW1lX2Zvcl9pdGVtKHNlbGYsIGl0ZW1faWQpOgotICAg
ICAgICBmb3IgYWN0aXZlX2l0ZW1faWQsIHRpbWUgaW4gc2VsZi5faXRlbV90aW1lX3BhaXJzKCk6
Ci0gICAgICAgICAgICBpZiBhY3RpdmVfaXRlbV9pZCA9PSBpdGVtX2lkOgotICAgICAgICAgICAg
ICAgIHJldHVybiBkYXRldGltZS5mcm9tdGltZXN0YW1wKHRpbWUpCi0gICAgICAgIHJldHVybiBO
b25lCkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9tb2RlbC9hY3RpdmV3b3JraXRlbXNf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwv
YWN0aXZld29ya2l0ZW1zX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9R
dWV1ZVN0YXR1c1NlcnZlci9tb2RlbC9hY3RpdmV3b3JraXRlbXNfdW5pdHRlc3QucHkJKG5vbmV4
aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSMgbWV0OgotIwotIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBSZXNl
YXJjaCBpbiBNb3Rpb24gTHRkLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWlt
cG9ydCB1bml0dGVzdAotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKLWZyb20gZ29vZ2xl
LmFwcGVuZ2luZS5leHQgaW1wb3J0IHRlc3RiZWQKLQotZnJvbSBtb2RlbC5hY3RpdmV3b3JraXRl
bXMgaW1wb3J0IEFjdGl2ZVdvcmtJdGVtcwotCi0KLWNsYXNzIEFjdGl2ZVdvcmtJdGVtc1Rlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxm
LnRlc3RiZWQgPSB0ZXN0YmVkLlRlc3RiZWQoKQotICAgICAgICBzZWxmLnRlc3RiZWQuYWN0aXZh
dGUoKQotICAgICAgICBzZWxmLnRlc3RiZWQuaW5pdF9kYXRhc3RvcmVfdjNfc3R1YigpCi0gICAg
ICAgIHNlbGYudGVzdGJlZC5pbml0X21lbWNhY2hlX3N0dWIoKQotCi0gICAgZGVmIHRlYXJEb3du
KHNlbGYpOgotICAgICAgICBzZWxmLnRlc3RiZWQuZGVhY3RpdmF0ZSgpCi0KLSAgICBkZWYgdGVz
dF9iYXNpYyhzZWxmKToKLSAgICAgICAgaXRlbXMgPSBBY3RpdmVXb3JrSXRlbXMubG9va3VwX2J5
X3F1ZXVlKCJ0ZXN0LXF1ZXVlIikKLSAgICAgICAgcXVldWVkX2l0ZW1zID0gWzEsIDJdCi0gICAg
ICAgICMgZGIuTW9kZWwgb25seSBzdG9yZXMgZGF0ZXMgdG8gc2Vjb25kIHJlc29sdXRpb24sIHNv
IHdlIHVzZSBhbiBleHBsaWNpdCBkYXRldGltZSB3aXRob3V0IG1pbGxpc2Vjb25kcy4KLSAgICAg
ICAgdGltZSA9IGRhdGV0aW1lKDIwMTEsIDQsIDE4LCAxOCwgNTAsIDQ0KQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGl0ZW1zLm5leHRfaXRlbShxdWV1ZWRfaXRlbXMsIHRpbWUpLCAxKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW1zLm5leHRfaXRlbShbMV0sIHRpbWUpLCBOb25lKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW1zLm5leHRfaXRlbShbXSwgdGltZSksIE5vbmUp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVtcy50aW1lX2Zvcl9pdGVtKDEpLCB0aW1l
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW1zLnRpbWVfZm9yX2l0ZW0oMiksIE5vbmUp
Ci0KLSAgICAgICAgaXRlbXMuZXhwaXJlX2l0ZW0oMSkKLSAgICAgICAgIyBleHBpcmVfaXRlbSB1
c2VzIGEgdHJhbnNhY3Rpb24gc28gaXQgZG9lc24ndCB0YWtlIGVmZmVjdCBvbiB0aGUgY3VycmVu
dCBvYmplY3QuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXRlbXMudGltZV9mb3JfaXRlbSgx
KSwgdGltZSkKLSAgICAgICAgIyBJZiB3ZSBsb29rIHVwIHRoZSBzYXZlZCBvYmplY3QsIHdlIHNl
ZSBpdCdzIGJlZW4gdXBkYXRlZC4KLSAgICAgICAgaXRlbXMgPSBBY3RpdmVXb3JrSXRlbXMubG9v
a3VwX2J5X3F1ZXVlKCJ0ZXN0LXF1ZXVlIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVt
cy50aW1lX2Zvcl9pdGVtKDEpLCBOb25lKQpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIv
bW9kZWwvYXR0YWNobWVudC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9RdWV1ZVN0YXR1c1NlcnZl
ci9tb2RlbC9hdHRhY2htZW50LnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0
YXR1c1NlcnZlci9tb2RlbC9hdHRhY2htZW50LnB5CShub25leGlzdGVudCkKQEAgLTEsOTIgKzAs
MCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIyAKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMgCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHJlCi0KLWZyb20gbW9kZWwucXVldWVz
IGltcG9ydCBRdWV1ZQotZnJvbSBtb2RlbC5xdWV1ZXN0YXR1cyBpbXBvcnQgUXVldWVTdGF0dXMK
LWZyb20gbW9kZWwud29ya2l0ZW1zIGltcG9ydCBXb3JrSXRlbXMKLQotCi1jbGFzcyBBdHRhY2ht
ZW50KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGF0dGFjaG1lbnRfaWQpOgotICAg
ICAgICBzZWxmLmlkID0gYXR0YWNobWVudF9pZAotICAgICAgICBzZWxmLl9zdW1tYXJ5ID0gTm9u
ZQotICAgICAgICBzZWxmLl9jYWNoZWRfcXVldWVfcG9zaXRpb25zID0gTm9uZQotCi0gICAgZGVm
IHN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX3N1bW1hcnk6Ci0gICAgICAgICAgICBy
ZXR1cm4gc2VsZi5fc3VtbWFyeQotICAgICAgICBzZWxmLl9zdW1tYXJ5ID0gc2VsZi5fZmV0Y2hf
c3VtbWFyeSgpCi0gICAgICAgIHJldHVybiBzZWxmLl9zdW1tYXJ5Ci0KLSAgICBkZWYgcG9zaXRp
b25faW5fcXVldWUoc2VsZiwgcXVldWUpOgotICAgICAgICByZXR1cm4gc2VsZi5fcXVldWVfcG9z
aXRpb25zKCkuZ2V0KHF1ZXVlLm5hbWUoKSkKLQotICAgIGRlZiBzdGF0dXNfZm9yX3F1ZXVlKHNl
bGYsIHF1ZXVlKToKLSAgICAgICAgIyBzdW1tYXJ5KCkgaXMgYSBob3JyaWJsZSBBUEkgYW5kIHNo
b3VsZCBiZSBraWxsZWQuCi0gICAgICAgIHF1ZXVlX3N1bW1hcnkgPSBzZWxmLnN1bW1hcnkoKS5n
ZXQocXVldWUubmFtZV93aXRoX3VuZGVyc2NvcmVzKCkpCi0gICAgICAgIGlmIG5vdCBxdWV1ZV9z
dW1tYXJ5OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHF1ZXVlX3N1
bW1hcnkuZ2V0KCJzdGF0dXMiKQotCi0gICAgZGVmIGJ1Z19pZChzZWxmKToKLSAgICAgICAgcmV0
dXJuIHNlbGYuc3VtbWFyeSgpLmdldCgiYnVnX2lkIikKLQotICAgIGRlZiBfcXVldWVfcG9zaXRp
b25zKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9jYWNoZWRfcXVldWVfcG9zaXRpb25zOgotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX2NhY2hlZF9xdWV1ZV9wb3NpdGlvbnMKLSAgICAgICAgIyBG
SVhNRTogU2hvdWxkIHdlIGJlIG1lbS1jYWNoaW5nIHRoaXM/Ci0gICAgICAgIHNlbGYuX2NhY2hl
ZF9xdWV1ZV9wb3NpdGlvbnMgPSBzZWxmLl9jYWxjdWxhdGVfcXVldWVfcG9zaXRpb25zKCkKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX2NhY2hlZF9xdWV1ZV9wb3NpdGlvbnMKLQotICAgIGRlZiBfY2Fs
Y3VsYXRlX3F1ZXVlX3Bvc2l0aW9ucyhzZWxmKToKLSAgICAgICAgIyBXZSBkb24ndCBrbm93IGhv
dyBtYW55IHJvd3MgdGhlcmUgYXJlIGluIHRoZSB0YWJsZSAoYXMgdGhlcmUgY2FuIGJlIHN0YWxl
IHJvd3MKLSAgICAgICAgIyBmcm9tIHF1ZXVlcyB0aGF0IHdlIG5vIGxvbmdlciBoYXZlKSwgYnV0
IGl0J3MgY2VydGFpbmx5IGZld2VyIHRoYXQgMTAwMC4KLSAgICAgICAgYWxsX3dvcmtfaXRlbXMg
PSBXb3JrSXRlbXMuYWxsKCkuZmV0Y2gobGltaXQ9MTAwMCkKLSAgICAgICAgcmV0dXJuIGRpY3Qo
WyhpdGVtcy5xdWV1ZS5uYW1lKCksIGl0ZW1zLmRpc3BsYXlfcG9zaXRpb25fZm9yX2F0dGFjaG1l
bnQoc2VsZi5pZCkpIGZvciBpdGVtcyBpbiBhbGxfd29ya19pdGVtcyBpZiBpdGVtcy5xdWV1ZV0p
Ci0KLSAgICAjIEZJWE1FOiBUaGlzIGlzIGNvbnRyb2xsZXIvdmlldyBjb2RlIGFuZCBkb2VzIG5v
dCBiZWxvbmcgaW4gYSBtb2RlbC4KLSAgICBkZWYgX2ZldGNoX3N1bW1hcnkoc2VsZik6Ci0gICAg
ICAgIHN1bW1hcnkgPSB7ICJhdHRhY2htZW50X2lkIiA6IHNlbGYuaWQgfQotCi0gICAgICAgIGZp
cnN0X3N0YXR1cyA9IFF1ZXVlU3RhdHVzLmFsbCgpLmZpbHRlcignYWN0aXZlX3BhdGNoX2lkID0n
LCBzZWxmLmlkKS5nZXQoKQotICAgICAgICBpZiBub3QgZmlyc3Rfc3RhdHVzOgotICAgICAgICAg
ICAgIyBXZSBkb24ndCBoYXZlIGFueSByZWNvcmQgb2YgdGhpcyBhdHRhY2htZW50LgotICAgICAg
ICAgICAgcmV0dXJuIHN1bW1hcnkKLSAgICAgICAgc3VtbWFyeVsiYnVnX2lkIl0gPSBmaXJzdF9z
dGF0dXMuYWN0aXZlX2J1Z19pZAotCi0gICAgICAgIGZvciBxdWV1ZSBpbiBRdWV1ZS5hbGwoKToK
LSAgICAgICAgICAgIHN1bW1hcnlbcXVldWUubmFtZV93aXRoX3VuZGVyc2NvcmVzKCldID0gTm9u
ZQotICAgICAgICAgICAgc3RhdHVzID0gUXVldWVTdGF0dXMuYWxsKCkuZmlsdGVyKCdxdWV1ZV9u
YW1lID0nLCBxdWV1ZS5uYW1lKCkpLmZpbHRlcignYWN0aXZlX3BhdGNoX2lkID0nLCBzZWxmLmlk
KS5vcmRlcignLWRhdGUnKS5nZXQoKQotICAgICAgICAgICAgaWYgc3RhdHVzOgotICAgICAgICAg
ICAgICAgICMgc3VtbWFyeSgpIGlzIGEgaG9ycmlibGUgQVBJIGFuZCBzaG91bGQgYmUga2lsbGVk
LgotICAgICAgICAgICAgICAgIHN1bW1hcnlbcXVldWUubmFtZV93aXRoX3VuZGVyc2NvcmVzKCld
ID0gewotICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzLAotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHN1bW1hcnkKSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2Vy
dmVyL21vZGVsL3BhdGNobG9nLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2Vy
dmVyL21vZGVsL3BhdGNobG9nLnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0
YXR1c1NlcnZlci9tb2RlbC9wYXRjaGxvZy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDcxICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQotCi1m
cm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCBkYgotCi0KLWNsYXNzIFBhdGNoTG9nKGRi
Lk1vZGVsKToKLSAgICBhdHRhY2htZW50X2lkID0gZGIuSW50ZWdlclByb3BlcnR5KCkKLSAgICBx
dWV1ZV9uYW1lID0gZGIuU3RyaW5nUHJvcGVydHkoKQotICAgIGRhdGUgPSBkYi5EYXRlVGltZVBy
b3BlcnR5KGF1dG9fbm93X2FkZD1UcnVlKQotICAgIGJvdF9pZCA9IGRiLlN0cmluZ1Byb3BlcnR5
KCkKLSAgICByZXRyeV9jb3VudCA9IGRiLkludGVnZXJQcm9wZXJ0eShkZWZhdWx0PTApCi0gICAg
c3RhdHVzX3VwZGF0ZV9jb3VudCA9IGRiLkludGVnZXJQcm9wZXJ0eShkZWZhdWx0PTApCi0gICAg
ZmluaXNoZWQgPSBkYi5Cb29sZWFuUHJvcGVydHkoZGVmYXVsdD1GYWxzZSkKLSAgICB3YWl0X2R1
cmF0aW9uID0gZGIuSW50ZWdlclByb3BlcnR5KCkKLSAgICBwcm9jZXNzX2R1cmF0aW9uID0gZGIu
SW50ZWdlclByb3BlcnR5KCkKLSAgICBsYXRlc3RfbWVzc2FnZSA9IGRiLlN0cmluZ1Byb3BlcnR5
KG11bHRpbGluZT1UcnVlKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGxvb2t1cChjbHMs
IGF0dGFjaG1lbnRfaWQsIHF1ZXVlX25hbWUpOgotICAgICAgICBrZXkgPSBjbHMuX2dlbmVyYXRl
X2tleShhdHRhY2htZW50X2lkLCBxdWV1ZV9uYW1lKQotICAgICAgICByZXR1cm4gY2xzLmdldF9v
cl9pbnNlcnQoa2V5LCBhdHRhY2htZW50X2lkPWF0dGFjaG1lbnRfaWQsIHF1ZXVlX25hbWU9cXVl
dWVfbmFtZSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBsb29rdXBfaWZfZXhpc3RzKGNs
cywgYXR0YWNobWVudF9pZCwgcXVldWVfbmFtZSk6Ci0gICAgICAgIGtleSA9IGNscy5fZ2VuZXJh
dGVfa2V5KGF0dGFjaG1lbnRfaWQsIHF1ZXVlX25hbWUpCi0gICAgICAgIHJldHVybiBjbHMuZ2V0
X2J5X2tleV9uYW1lKGtleSkKLQotICAgIGRlZiBjYWxjdWxhdGVfd2FpdF9kdXJhdGlvbihzZWxm
KToKLSAgICAgICAgdGltZV9kZWx0YSA9IGRhdGV0aW1lLnV0Y25vdygpIC0gc2VsZi5kYXRlCi0g
ICAgICAgIHNlbGYud2FpdF9kdXJhdGlvbiA9IGludChzZWxmLl90aW1lX2RlbHRhX3RvX3NlY29u
ZHModGltZV9kZWx0YSkpCi0KLSAgICBkZWYgY2FsY3VsYXRlX3Byb2Nlc3NfZHVyYXRpb24oc2Vs
Zik6Ci0gICAgICAgIHRpbWVfZGVsdGEgPSBkYXRldGltZS51dGNub3coKSAtIHNlbGYuZGF0ZQot
ICAgICAgICBzZWxmLnByb2Nlc3NfZHVyYXRpb24gPSBpbnQoc2VsZi5fdGltZV9kZWx0YV90b19z
ZWNvbmRzKHRpbWVfZGVsdGEpKSAtIChzZWxmLndhaXRfZHVyYXRpb24gb3IgMCkKLQotICAgIEBj
bGFzc21ldGhvZAotICAgIGRlZiBfZ2VuZXJhdGVfa2V5KGNscywgYXR0YWNobWVudF9pZCwgcXVl
dWVfbmFtZSk6Ci0gICAgICAgIHJldHVybiAiJXMtJXMiICUgKGF0dGFjaG1lbnRfaWQsIHF1ZXVl
X25hbWUpCi0KLSAgICAjIE5lZWRlZCB0byBzdXBwb3J0IFB5dGhvbiAyLjUncyBsYWNrIG9mIHRp
bWVkZWx0YS50b3RhbF9zZWNvbmRzKCkuCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF90aW1l
X2RlbHRhX3RvX3NlY29uZHMoY2xzLCB0aW1lX2RlbHRhKToKLSAgICAgICAgcmV0dXJuIHRpbWVf
ZGVsdGEuc2Vjb25kcyArIHRpbWVfZGVsdGEuZGF5cyAqIDI0ICogMzYwMApJbmRleDogVG9vbHMv
UXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvcXVldWVsb2cucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
UXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvcXVldWVsb2cucHkJKHJldmlzaW9uIDI2MTE5OSkKKysr
IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVlbG9nLnB5CShub25leGlzdGVudCkK
QEAgLTEsODggKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0Ogot
IwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gdGltZSBpbXBvcnQgdGlt
ZQotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKLQotZnJvbSBnb29nbGUuYXBwZW5naW5l
LmV4dCBpbXBvcnQgZGIKLQotZnJvbSBtb2RlbC53b3JraXRlbXMgaW1wb3J0IFdvcmtJdGVtcwot
ZnJvbSBtb2RlbC5hY3RpdmV3b3JraXRlbXMgaW1wb3J0IEFjdGl2ZVdvcmtJdGVtcwotCi0KLWNs
YXNzIFF1ZXVlTG9nKGRiLk1vZGVsKToKLSAgICBkYXRlID0gZGIuRGF0ZVRpbWVQcm9wZXJ0eSgp
Ci0gICAgIyBkdXJhdGlvbiBzcGVjaWZpZXMgaW4gc2Vjb25kcyB0aGUgdGltZSBwZXJpb2QgdGhl
c2UgbG9nIHZhbHVlcyBhcHBseSB0by4KLSAgICBkdXJhdGlvbiA9IGRiLkludGVnZXJQcm9wZXJ0
eSgpCi0gICAgcXVldWVfbmFtZSA9IGRiLlN0cmluZ1Byb3BlcnR5KCkKLSAgICBib3RfaWRzX3Nl
ZW4gPSBkYi5TdHJpbmdMaXN0UHJvcGVydHkoKQotICAgIG1heF9wYXRjaGVzX3dhaXRpbmcgPSBk
Yi5JbnRlZ2VyUHJvcGVydHkoZGVmYXVsdD0wKQotICAgIHBhdGNoX3dhaXRfZHVyYXRpb25zID0g
ZGIuTGlzdFByb3BlcnR5KGludCkKLSAgICBwYXRjaF9wcm9jZXNzX2R1cmF0aW9ucyA9IGRiLkxp
c3RQcm9wZXJ0eShpbnQpCi0gICAgcGF0Y2hfcmV0cnlfY291bnQgPSBkYi5JbnRlZ2VyUHJvcGVy
dHkoZGVmYXVsdD0wKQotICAgIHN0YXR1c191cGRhdGVfY291bnQgPSBkYi5JbnRlZ2VyUHJvcGVy
dHkoZGVmYXVsdD0wKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBjcmVhdGVfa2V5KHF1
ZXVlX25hbWUsIGR1cmF0aW9uLCB0aW1lc3RhbXApOgotICAgICAgICByZXR1cm4gIiVzLSVzLSVz
IiAlIChxdWV1ZV9uYW1lLCBkdXJhdGlvbiwgdGltZXN0YW1wKQotCi0gICAgQGNsYXNzbWV0aG9k
Ci0gICAgZGVmIGdldF9hdChjbHMsIHF1ZXVlX25hbWUsIGR1cmF0aW9uLCB0aW1lc3RhbXApOgot
ICAgICAgICB0aW1lc3RhbXAgPSBpbnQodGltZXN0YW1wIC8gZHVyYXRpb24pICogZHVyYXRpb24K
LSAgICAgICAgZGF0ZSA9IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodGltZXN0YW1wKQotICAg
ICAgICBrZXkgPSBjbHMuY3JlYXRlX2tleShxdWV1ZV9uYW1lLCBkdXJhdGlvbiwgdGltZXN0YW1w
KQotICAgICAgICByZXR1cm4gY2xzLmdldF9vcl9jcmVhdGUoa2V5LCBkYXRlPWRhdGUsIGR1cmF0
aW9uPWR1cmF0aW9uLCBxdWV1ZV9uYW1lPXF1ZXVlX25hbWUpCi0KLSAgICBAY2xhc3NtZXRob2QK
LSAgICBkZWYgZ2V0X2N1cnJlbnQoY2xzLCBxdWV1ZV9uYW1lLCBkdXJhdGlvbik6Ci0gICAgICAg
IHJldHVybiBjbHMuZ2V0X2F0KHF1ZXVlX25hbWUsIGR1cmF0aW9uLCB0aW1lKCkpCi0KLSAgICAj
IFRoaXMgaXMgdG8gcHJldmVudCBwYWdlIHJlcXVlc3RzIGZyb20gZ2VuZXJhdGluZyBsb3RzIG9m
IHJvd3MgaW4gdGhlIGRhdGFiYXNlLgotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBnZXRfb3Jf
Y3JlYXRlKGNscywga2V5X25hbWUsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIGRiLnJ1bl9p
bl90cmFuc2FjdGlvbihjbHMuX2dldF9vcl9jcmVhdGVfdHhuLCBrZXlfbmFtZSwgKiprd2FyZ3Mp
Ci0KLSAgICBkZWYgdXBkYXRlX21heF9wYXRjaGVzX3dhaXRpbmcoc2VsZik6Ci0gICAgICAgIHBh
dGNoZXNfd2FpdGluZyA9IHNlbGYuX2dldF9wYXRjaGVzX3dhaXRpbmcoc2VsZi5xdWV1ZV9uYW1l
KQotICAgICAgICBpZiBwYXRjaGVzX3dhaXRpbmcgPiBzZWxmLm1heF9wYXRjaGVzX3dhaXRpbmc6
Ci0gICAgICAgICAgICBzZWxmLm1heF9wYXRjaGVzX3dhaXRpbmcgPSBwYXRjaGVzX3dhaXRpbmcK
LSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIF9nZXRfb3JfY3JlYXRlX3R4bihjbHMsIGtleV9uYW1lLCAqKmt3
YXJncyk6Ci0gICAgICAgIGVudGl0eSA9IGNscy5nZXRfYnlfa2V5X25hbWUoa2V5X25hbWUsIHBh
cmVudD1rd2FyZ3MuZ2V0KCdwYXJlbnQnKSkKLSAgICAgICAgaWYgZW50aXR5IGlzIE5vbmU6Ci0g
ICAgICAgICAgICBlbnRpdHkgPSBjbHMoa2V5X25hbWU9a2V5X25hbWUsICoqa3dhcmdzKQotICAg
ICAgICByZXR1cm4gZW50aXR5Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX2dldF9wYXRj
aGVzX3dhaXRpbmcoY2xzLCBxdWV1ZV9uYW1lKToKLSAgICAgICAgd29ya19pdGVtcyA9IFdvcmtJ
dGVtcy5sb29rdXBfYnlfcXVldWUocXVldWVfbmFtZSkKLSAgICAgICAgYWN0aXZlX3dvcmtfaXRl
bXMgPSBBY3RpdmVXb3JrSXRlbXMubG9va3VwX2J5X3F1ZXVlKHF1ZXVlX25hbWUpCi0gICAgICAg
IHJldHVybiBsZW4oc2V0KHdvcmtfaXRlbXMuaXRlbV9pZHMpIC0gc2V0KGFjdGl2ZV93b3JrX2l0
ZW1zLml0ZW1faWRzKSkKSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVl
cHJvcGVydHltaXhpbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9t
b2RlbC9xdWV1ZXByb3BlcnR5bWl4aW4ucHkJKHJldmlzaW9uIDI2MTE5OSkKKysrIFRvb2xzL1F1
ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVlcHJvcGVydHltaXhpbi5weQkobm9uZXhpc3RlbnQp
CkBAIC0xLDM5ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoK
LSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLWNsYXNzIFF1ZXVlUHJvcGVy
dHlNaXhpbihvYmplY3QpOgotICAgIGRlZiBfcXVldWVfZ2V0dGVyKHNlbGYpOgotICAgICAgICAj
IEltcG9ydCBhdCBydW50aW1lIHRvIGF2b2lkIGNpcmN1bGFyIGltcG9ydHMKLSAgICAgICAgZnJv
bSBtb2RlbC5xdWV1ZXMgaW1wb3J0IFF1ZXVlCi0gICAgICAgIHJldHVybiBRdWV1ZS5xdWV1ZV93
aXRoX25hbWUoc2VsZi5xdWV1ZV9uYW1lKQotCi0gICAgZGVmIF9xdWV1ZV9zZXR0ZXIoc2VsZiwg
cXVldWUpOgotICAgICAgICBzZWxmLnF1ZXVlX25hbWUgPSBxdWV1ZS5uYW1lKCkgaWYgcXVldWUg
ZWxzZSBOb25lCi0KLSAgICBxdWV1ZSA9IHByb3BlcnR5KF9xdWV1ZV9nZXR0ZXIsIF9xdWV1ZV9z
ZXR0ZXIpCkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9tb2RlbC9xdWV1ZXByb3BlcnR5
bWl4aW5fdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIv
bW9kZWwvcXVldWVwcm9wZXJ0eW1peGluX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjExOTkpCisr
KyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9tb2RlbC9xdWV1ZXByb3BlcnR5bWl4aW5fdW5pdHRl
c3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBSZXNlYXJjaCBpbiBNb3Rpb24gTHRkLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIG1vZGVsLnF1ZXVlcHJvcGVydHltaXhp
biBpbXBvcnQgUXVldWVQcm9wZXJ0eU1peGluCi1mcm9tIG1vZGVsLnF1ZXVlcyBpbXBvcnQgUXVl
dWUKLQotCi1jbGFzcyBPYmplY3RXaXRoUXVldWVOYW1lKFF1ZXVlUHJvcGVydHlNaXhpbik6Ci0g
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLnF1ZXVlX25hbWUgPSBOb25lCi0K
LQotY2xhc3MgUXVldWVQcm9wZXJ0eU1peGluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg
ZGVmIHRlc3RfcXVldWVfcHJvcGVydHkoc2VsZik6Ci0gICAgICAgIHRlc3Rfb2JqZWN0ID0gT2Jq
ZWN0V2l0aFF1ZXVlTmFtZSgpCi0gICAgICAgIG1hY19ld3MgPSBRdWV1ZSgibWFjLWV3cyIpCi0g
ICAgICAgIHRlc3Rfb2JqZWN0LnF1ZXVlID0gbWFjX2V3cwotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHRlc3Rfb2JqZWN0LnF1ZXVlLm5hbWUoKSwgIm1hYy1ld3MiKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHRlc3Rfb2JqZWN0LnF1ZXVlX25hbWUsICJtYWMtZXdzIikKLSAgICAgICAgdGVz
dF9vYmplY3QucXVldWUgPSBOb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9vYmpl
Y3QucXVldWVfbmFtZSwgTm9uZSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAg
IHVuaXR0ZXN0Lm1haW4oKQpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvcXVl
dWVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVl
cy5weQkocmV2aXNpb24gMjYxMTk5KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwv
cXVldWVzLnB5CShub25leGlzdGVudCkKQEAgLTEsOTkgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIyAKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMgCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotCi1pbXBvcnQgcmUKLQotZnJvbSBjb25maWcucXVldWVzIGltcG9ydCBhbGxfcXVldWVf
bmFtZXMKLWZyb20gbW9kZWwuYWN0aXZld29ya2l0ZW1zIGltcG9ydCBBY3RpdmVXb3JrSXRlbXMK
LWZyb20gbW9kZWwud29ya2l0ZW1zIGltcG9ydCBXb3JrSXRlbXMKLQotCi1jbGFzcyBRdWV1ZShv
YmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgYXNzZXJ0KG5h
bWUgaW4gYWxsX3F1ZXVlX25hbWVzKQotICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQotCi0gICAg
QGNsYXNzbWV0aG9kCi0gICAgZGVmIHF1ZXVlX3dpdGhfbmFtZShjbHMsIHF1ZXVlX25hbWUpOgot
ICAgICAgICBpZiBxdWV1ZV9uYW1lIG5vdCBpbiBhbGxfcXVldWVfbmFtZXM6Ci0gICAgICAgICAg
ICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gUXVldWUocXVldWVfbmFtZSkKLQotICAgIEBj
bGFzc21ldGhvZAotICAgIGRlZiBhbGwoY2xzKToKLSAgICAgICAgcmV0dXJuIFtRdWV1ZShuYW1l
KSBmb3IgbmFtZSBpbiBhbGxfcXVldWVfbmFtZXNdCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgYWxsX2V3cyhjbHMpOgotICAgICAgICByZXR1cm4gW3F1ZXVlIGZvciBxdWV1ZSBpbiBjbHMu
YWxsKCkgaWYgcXVldWUuaXNfZXdzKCldCi0KLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAg
cmV0dXJuIHNlbGYuX25hbWUKLQotICAgIGRlZiB3b3JrX2l0ZW1zKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gV29ya0l0ZW1zLmxvb2t1cF9ieV9xdWV1ZShzZWxmLl9uYW1lKQotCi0gICAgIyBGSVhN
RTogYWN0aXZlX3dvcmtfaXRlbXMgaXMgYSBiYWQgbmFtZSBmb3IgdGhpcyBsb2NrLXRhYmxlLgot
ICAgIGRlZiBhY3RpdmVfd29ya19pdGVtcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIEFjdGl2ZVdv
cmtJdGVtcy5sb29rdXBfYnlfcXVldWUoc2VsZi5fbmFtZSkKLQotICAgIGRlZiBfY2FwaXRhbGl6
ZV9hZnRlcl9kYXNoKHNlbGYsIHN0cmluZyk6Ci0gICAgICAgIHJldHVybiAiLSIuam9pbihbd29y
ZFswXS51cHBlcigpICsgd29yZFsxOl0gZm9yIHdvcmQgaW4gc3RyaW5nLnNwbGl0KCItIildKQot
Ci0gICAgIyBGb3IgdXNlIGluIHN0YXR1cyBidWJibGVzIG9yIHRhYmxlIGhlYWRlcnMKLSAgICBk
ZWYgc2hvcnRfbmFtZShzZWxmKToKLSAgICAgICAgc2hvcnRfbmFtZSA9IHNlbGYuX25hbWUucmVw
bGFjZSgiLWV3cyIsICIiKQotICAgICAgICBzaG9ydF9uYW1lID0gc2hvcnRfbmFtZS5yZXBsYWNl
KCItcXVldWUiLCAiIikKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NhcGl0YWxpemVfYWZ0ZXJfZGFz
aChzaG9ydF9uYW1lLmNhcGl0YWxpemUoKSkKLQotICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6
Ci0gICAgICAgIGRpc3BsYXlfbmFtZSA9IHNlbGYuX25hbWUucmVwbGFjZSgiLSIsICIgIikKLSAg
ICAgICAgZGlzcGxheV9uYW1lID0gZGlzcGxheV9uYW1lLnRpdGxlKCkKLSAgICAgICAgZGlzcGxh
eV9uYW1lID0gZGlzcGxheV9uYW1lLnJlcGxhY2UoIldrMiIsICJXSzIiKQotICAgICAgICBkaXNw
bGF5X25hbWUgPSBkaXNwbGF5X25hbWUucmVwbGFjZSgiRXdzIiwgIkVXUyIpCi0gICAgICAgIGRp
c3BsYXlfbmFtZSA9IGRpc3BsYXlfbmFtZS5yZXBsYWNlKCJJb3MiLCAiaU9TIikKLSAgICAgICAg
ZGlzcGxheV9uYW1lID0gZGlzcGxheV9uYW1lLnJlcGxhY2UoIkpzY09ubHkiLCAiSlNDT25seSIp
Ci0gICAgICAgIGRpc3BsYXlfbmFtZSA9IGRpc3BsYXlfbmFtZS5yZXBsYWNlKCJKc2MiLCAiSlND
IikKLSAgICAgICAgZGlzcGxheV9uYW1lID0gZGlzcGxheV9uYW1lLnJlcGxhY2UoIldwZSIsICJX
UEUiKQotICAgICAgICBkaXNwbGF5X25hbWUgPSBkaXNwbGF5X25hbWUucmVwbGFjZSgiR3RrIiwg
IkdUSyIpCi0gICAgICAgIGRpc3BsYXlfbmFtZSA9IGRpc3BsYXlfbmFtZS5yZXBsYWNlKCJXaW5j
YWlybyIsICJXaW5DYWlybyIpCi0gICAgICAgIHJldHVybiBkaXNwbGF5X25hbWUKLQotICAgIF9k
YXNoX3JlZ2V4cCA9IHJlLmNvbXBpbGUoIi0iKQotCi0gICAgZGVmIG5hbWVfd2l0aF91bmRlcnNj
b3JlcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2Rhc2hfcmVnZXhwLnN1YigiXyIsIHNl
bGYuX25hbWUpCi0KLSAgICBkZWYgaXNfZXdzKHNlbGYpOgotICAgICAgICAjIE5vdGU6IFRoZSBz
dHlsZS1xdWV1ZSBpcyBqdXN0IGxpa2UgYW4gRVdTIGluIHRoYXQgaXQgaGFzIGFuIEVXUwotICAg
ICAgICAjIGJ1YmJsZSwgYW5kIGl0IHdvcmtzIG9mZiBvZiB0aGUgcj8gcGF0Y2hlcy4gIElmIGF0
IHNvbWUgbGF0ZXIKLSAgICAgICAgIyBwb2ludCBjb2RlIHdhbnRzIHRvIG5vdCB0cmVhdCB0aGUg
c3R5bGUtcXVldWUgYXMgYW4gRVdTCi0gICAgICAgICMgKGUuZy4gZXhwZWN0aW5nIGlzX2V3cygp
IHF1ZXVlcyB0byBoYXZlIGJ1aWxkIHJlc3VsdHM/KQotICAgICAgICAjIHRoZW4gd2Ugc2hvdWxk
IGZpeCBhbGwgY2FsbGVycyBhbmQgY2hhbmdlIHRoaXMgY2hlY2suCi0gICAgICAgIHJldHVybiBz
ZWxmLl9uYW1lLmVuZHN3aXRoKCItZXdzIikgb3Igc2VsZi5fbmFtZSA9PSAic3R5bGUtcXVldWUi
CkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9tb2RlbC9xdWV1ZXNfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvcXVldWVzX3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9tb2Rl
bC9xdWV1ZXNfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw3NyArMCwwIEBACi0jIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBSZXNlYXJjaCBpbiBNb3Rpb24gTHRkLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB1bml0dGVzdAotCi0KLWZyb20gbW9kZWwu
cXVldWVzIGltcG9ydCBRdWV1ZQotCi0KLWNsYXNzIFF1ZXVlVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6Ci0gICAgZGVmIHRlc3RfaXNfZXdzKHNlbGYpOgotICAgICAgICBtYWNfZXdzID0gUXVldWUo
Im1hYy1ld3MiKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWFjX2V3cy5pc19ld3MoKSkKLQot
ICAgIGRlZiB0ZXN0X3F1ZXVlX3dpdGhfbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChRdWV1ZS5xdWV1ZV93aXRoX25hbWUoImJvZ3VzIiksIE5vbmUpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoUXVldWUucXVldWVfd2l0aF9uYW1lKCJtYWMtZXdzIikubmFtZSgpLCAibWFj
LWV3cyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBRdWV1ZSwg
KCJib2d1cyIpKQotCi0gICAgZGVmIF9hc3NlcnRfc2hvcnRfbmFtZShzZWxmLCBxdWV1ZV9uYW1l
LCBzaG9ydF9uYW1lKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChRdWV1ZShxdWV1ZV9uYW1l
KS5zaG9ydF9uYW1lKCksIHNob3J0X25hbWUpCi0KLSAgICBkZWYgdGVzdF9zaG9ydF9uYW1lKHNl
bGYpOgotICAgICAgICBzZWxmLl9hc3NlcnRfc2hvcnRfbmFtZSgibWFjLWV3cyIsICJNYWMiKQot
ICAgICAgICBzZWxmLl9hc3NlcnRfc2hvcnRfbmFtZSgiY29tbWl0LXF1ZXVlIiwgIkNvbW1pdCIp
Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9zaG9ydF9uYW1lKCJzdHlsZS1xdWV1ZSIsICJTdHlsZSIp
Ci0KLSAgICBkZWYgX2Fzc2VydF9kaXNwbGF5X25hbWUoc2VsZiwgcXVldWVfbmFtZSwgc2hvcnRf
bmFtZSk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUXVldWUocXVldWVfbmFtZSkuZGlzcGxh
eV9uYW1lKCksIHNob3J0X25hbWUpCi0KLSAgICBkZWYgdGVzdF9kaXNwbGF5X25hbWUoc2VsZik6
Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9kaXNwbGF5X25hbWUoIm1hYy1ld3MiLCAiTWFjIEVXUyIp
Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9kaXNwbGF5X25hbWUoImNvbW1pdC1xdWV1ZSIsICJDb21t
aXQgUXVldWUiKQotICAgICAgICBzZWxmLl9hc3NlcnRfZGlzcGxheV9uYW1lKCJzdHlsZS1xdWV1
ZSIsICJTdHlsZSBRdWV1ZSIpCi0KLSAgICBkZWYgX2Fzc2VydF9uYW1lX3dpdGhfdW5kZXJzY29y
ZXMoc2VsZiwgcXVldWVfbmFtZSwgc2hvcnRfbmFtZSk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoUXVldWUocXVldWVfbmFtZSkubmFtZV93aXRoX3VuZGVyc2NvcmVzKCksIHNob3J0X25hbWUp
Ci0KLSAgICBkZWYgdGVzdF9uYW1lX3dpdGhfdW5kZXJzY29yZXMoc2VsZik6Ci0gICAgICAgIHNl
bGYuX2Fzc2VydF9uYW1lX3dpdGhfdW5kZXJzY29yZXMoIm1hYy1ld3MiLCAibWFjX2V3cyIpCi0g
ICAgICAgIHNlbGYuX2Fzc2VydF9uYW1lX3dpdGhfdW5kZXJzY29yZXMoImNvbW1pdC1xdWV1ZSIs
ICJjb21taXRfcXVldWUiKQotCi0gICAgZGVmIHRlc3Rfc3R5bGVfcXVldWVfaXNfZXdzKHNlbGYp
OgotICAgICAgICAjIEZvciBub3cgd2UgdHJlYXQgdGhlIHN0eWxlLXF1ZXVlIGFzIGFuIEVXUyBz
aW5jZSBtb3N0IHVzZXJzIHdvdWxkCi0gICAgICAgICMgZGVzY3JpYmUgaXQgYXMgc3VjaC4gIElm
IGlzX2V3cygpIGV2ZXIgbmVlZHMgdG8gbWVhbiAiYnVpbGRzIHRoZSBwYXRjaCIKLSAgICAgICAg
IyBvciBzaW1pbGFyLCB0aGVuIHdlIHdpbGwgbmVlZCB0byBhZGp1c3QgYWxsIGNhbGxlcnMuCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShRdWV1ZSgic3R5bGUtcXVldWUiKS5pc19ld3MoKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKCJzdHlsZS1xdWV1ZSIgaW4gbWFwKFF1ZXVlLm5hbWUsIFF1
ZXVlLmFsbF9ld3MoKSkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0
dGVzdC5tYWluKCkKSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVlc3Rh
dHVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVl
c3RhdHVzLnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9t
b2RlbC9xdWV1ZXN0YXR1cy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDQ2ICswLDAgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMgCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jIAotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLWZyb20gY29uZmlnIGltcG9ydCBtZXNzYWdlcwotZnJvbSBnb29nbGUuYXBw
ZW5naW5lLmV4dCBpbXBvcnQgZGIKLWZyb20gbW9kZWwucXVldWVwcm9wZXJ0eW1peGluIGltcG9y
dCBRdWV1ZVByb3BlcnR5TWl4aW4KLQotCi1jbGFzcyBRdWV1ZVN0YXR1cyhkYi5Nb2RlbCwgUXVl
dWVQcm9wZXJ0eU1peGluKToKLSAgICBhdXRob3IgPSBkYi5Vc2VyUHJvcGVydHkoKQotICAgIHF1
ZXVlX25hbWUgPSBkYi5TdHJpbmdQcm9wZXJ0eSgpCi0gICAgYm90X2lkID0gZGIuU3RyaW5nUHJv
cGVydHkoKQotICAgIGFjdGl2ZV9idWdfaWQgPSBkYi5JbnRlZ2VyUHJvcGVydHkoKQotICAgIGFj
dGl2ZV9wYXRjaF9pZCA9IGRiLkludGVnZXJQcm9wZXJ0eSgpCi0gICAgbWVzc2FnZSA9IGRiLlN0
cmluZ1Byb3BlcnR5KG11bHRpbGluZT1UcnVlKQotICAgIGRhdGUgPSBkYi5EYXRlVGltZVByb3Bl
cnR5KGF1dG9fbm93X2FkZD1UcnVlKQotICAgIHJlc3VsdHNfZmlsZSA9IGRiLkJsb2JQcm9wZXJ0
eSgpCi0KLSAgICBkZWYgZGlkX3NraXAoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLm1lc3Nh
Z2UgPT0gbWVzc2FnZXMuc2tpcF9zdGF0dXMKSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVy
L21vZGVsL3N2bnJldmlzaW9uLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2Vy
dmVyL21vZGVsL3N2bnJldmlzaW9uLnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1
ZVN0YXR1c1NlcnZlci9tb2RlbC9zdm5yZXZpc2lvbi5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDM1
ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMgCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jIAotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQg
aW1wb3J0IGRiCi0KLQotY2xhc3MgU1ZOUmV2aXNpb24oZGIuTW9kZWwpOgotICAgIG51bWJlciA9
IGRiLkludGVnZXJQcm9wZXJ0eSgpCi0gICAgYnJva2VuX2JvdHMgPSBkYi5TdHJpbmdMaXN0UHJv
cGVydHkoZGVmYXVsdD1bXSkKLSAgICBkYXRlID0gZGIuRGF0ZVRpbWVQcm9wZXJ0eShhdXRvX25v
d19hZGQ9VHJ1ZSkKSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3dhcm5pbmds
b2cucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvd2Fybmlu
Z2xvZy5weQkocmV2aXNpb24gMjYxMTk5KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9k
ZWwvd2FybmluZ2xvZy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDQ3ICswLDAgQEAKLSMgQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1mcm9tIHRpbWUgaW1wb3J0IHRpbWUKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IGRh
dGV0aW1lCi0KLWZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IGRiCi0KLQotY2xhc3Mg
V2FybmluZ0xvZyhkYi5Nb2RlbCk6Ci0gICAgZGF0ZSA9IGRiLkRhdGVUaW1lUHJvcGVydHkoYXV0
b19ub3dfYWRkPVRydWUpCi0gICAgZXZlbnQgPSBkYi5TdHJpbmdQcm9wZXJ0eSgpCi0gICAgbWVz
c2FnZSA9IGRiLlN0cmluZ1Byb3BlcnR5KCkKLSAgICBhdHRhY2htZW50X2lkID0gZGIuSW50ZWdl
clByb3BlcnR5KCkKLSAgICBxdWV1ZV9uYW1lID0gZGIuU3RyaW5nUHJvcGVydHkoKQotICAgIGJv
dF9pZCA9IGRiLlN0cmluZ1Byb3BlcnR5KCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBy
ZWNvcmQoY2xzLCBldmVudCwgbWVzc2FnZT1Ob25lLCBhdHRhY2htZW50X2lkPU5vbmUsIHF1ZXVl
X25hbWU9Tm9uZSwgYm90X2lkPU5vbmUpOgotICAgICAgICBlbnRpdHkgPSBjbHMoZXZlbnQ9ZXZl
bnQsIG1lc3NhZ2U9bWVzc2FnZSwgcXVldWVfbmFtZT1xdWV1ZV9uYW1lLCBib3RfaWQ9Ym90X2lk
LCBhdHRhY2htZW50X2lkPWF0dGFjaG1lbnRfaWQpCi0gICAgICAgIGVudGl0eS5wdXQoKQotICAg
ICAgICByZXR1cm4gZW50aXR5CkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9tb2RlbC93
b3JraXRlbXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwv
d29ya2l0ZW1zLnB5CShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZl
ci9tb2RlbC93b3JraXRlbXMucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDIgKzAsMCBAQAotIyBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLWZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IGRiCi0KLWZyb20g
bW9kZWwucXVldWVwcm9wZXJ0eW1peGluIGltcG9ydCBRdWV1ZVByb3BlcnR5TWl4aW4KLQotCi1j
bGFzcyBXb3JrSXRlbXMoZGIuTW9kZWwsIFF1ZXVlUHJvcGVydHlNaXhpbik6Ci0gICAgcXVldWVf
bmFtZSA9IGRiLlN0cmluZ1Byb3BlcnR5KCkKLSAgICBpdGVtX2lkcyA9IGRiLkxpc3RQcm9wZXJ0
eShpbnQpCi0gICAgZGF0ZSA9IGRiLkRhdGVUaW1lUHJvcGVydHkoYXV0b19ub3dfYWRkPVRydWUp
Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYga2V5X2Zvcl9xdWV1ZShjbHMsIHF1ZXVlX25h
bWUpOgotICAgICAgICByZXR1cm4gIndvcmstaXRlbXMtJXMiICUgKHF1ZXVlX25hbWUpCi0KLSAg
ICBAY2xhc3NtZXRob2QKLSAgICBkZWYgbG9va3VwX2J5X3F1ZXVlKGNscywgcXVldWVfbmFtZSk6
Ci0gICAgICAgIHJldHVybiBjbHMuZ2V0X29yX2luc2VydChrZXlfbmFtZT1jbHMua2V5X2Zvcl9x
dWV1ZShxdWV1ZV9uYW1lKSwgcXVldWVfbmFtZT1xdWV1ZV9uYW1lKQotCi0gICAgZGVmIGRpc3Bs
YXlfcG9zaXRpb25fZm9yX2F0dGFjaG1lbnQoc2VsZiwgYXR0YWNobWVudF9pZCk6Ci0gICAgICAg
ICIiIlJldHVybnMgYSAxLWJhc2VkIGluZGV4IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBvc2l0aW9u
Ci0gICAgICAgIG9mIHRoZSBhdHRhY2htZW50X2lkIGluIHRoZSBxdWV1ZS4gIElmIHRoZSBhdHRh
Y2htZW50IGlzCi0gICAgICAgIG5vdCBpbiB0aGlzIHF1ZXVlLCB0aGlzIHJldHVybnMgTm9uZSIi
IgotICAgICAgICBpZiBhdHRhY2htZW50X2lkIGluIHNlbGYuaXRlbV9pZHM6Ci0gICAgICAgICAg
ICByZXR1cm4gc2VsZi5pdGVtX2lkcy5pbmRleChhdHRhY2htZW50X2lkKSArIDEKLSAgICAgICAg
cmV0dXJuIE5vbmUKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX3VuZ3VhcmRlZF9hZGQo
a2V5LCBoaWdoX3ByaW9yaXR5X2l0ZW1zLCBpdGVtcyk6Ci0gICAgICAgIHdvcmtfaXRlbXMgPSBk
Yi5nZXQoa2V5KQotICAgICAgICBhZGRlZF9pdGVtcyA9IFtdCi0gICAgICAgIGZvciBpdGVtIGlu
IGhpZ2hfcHJpb3JpdHlfaXRlbXNbOjotMV06Ci0gICAgICAgICAgICBpZiBpdGVtIGluIHdvcmtf
aXRlbXMuaXRlbV9pZHM6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHdv
cmtfaXRlbXMuaXRlbV9pZHMuaW5zZXJ0KDAsIGl0ZW0pCi0gICAgICAgICAgICBhZGRlZF9pdGVt
cy5pbnNlcnQoMCwgaXRlbSkKLSAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAgICAg
ICBpZiBpdGVtIGluIHdvcmtfaXRlbXMuaXRlbV9pZHM6Ci0gICAgICAgICAgICAgICAgY29udGlu
dWUKLSAgICAgICAgICAgIHdvcmtfaXRlbXMuaXRlbV9pZHMuYXBwZW5kKGl0ZW0pCi0gICAgICAg
ICAgICBhZGRlZF9pdGVtcy5hcHBlbmQoaXRlbSkKLSAgICAgICAgd29ya19pdGVtcy5wdXQoKQot
ICAgICAgICByZXR1cm4gYWRkZWRfaXRlbXMKLQotICAgICMgQmVjYXVzZSB0aGlzIHVzZXMgLmtl
eSgpIHNlbGYuaXNfc2F2ZWQoKSBtdXN0IGJlIFRydWUgb3IgdGhpcyB3aWxsIHRocm93IE5vdFNh
dmVkRXJyb3IuCi0gICAgZGVmIGFkZF93b3JrX2l0ZW0oc2VsZiwgYXR0YWNobWVudF9pZCk6Ci0g
ICAgICAgIGRiLnJ1bl9pbl90cmFuc2FjdGlvbihzZWxmLl91bmd1YXJkZWRfYWRkLCBzZWxmLmtl
eSgpLCBbXSwgW2F0dGFjaG1lbnRfaWRdKQotCi0gICAgZGVmIGFkZF93b3JrX2l0ZW1zKHNlbGYs
IGhpZ2hfcHJpb3JpdHlfaXRlbXMsIGl0ZW1zKToKLSAgICAgICAgcmV0dXJuIGRiLnJ1bl9pbl90
cmFuc2FjdGlvbihzZWxmLl91bmd1YXJkZWRfYWRkLCBzZWxmLmtleSgpLCBoaWdoX3ByaW9yaXR5
X2l0ZW1zLCBpdGVtcykKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX3VuZ3VhcmRlZF9y
ZW1vdmUoa2V5LCBhdHRhY2htZW50X2lkKToKLSAgICAgICAgd29ya19pdGVtcyA9IGRiLmdldChr
ZXkpCi0gICAgICAgIGlmIGF0dGFjaG1lbnRfaWQgaW4gd29ya19pdGVtcy5pdGVtX2lkczoKLSAg
ICAgICAgICAgICMgV2Ugc2hvdWxkIG5ldmVyIGhhdmUgbW9yZSB0aGFuIG9uZSBlbnRyeSBmb3Ig
YSB3b3JrIGl0ZW0sIHNvIHdlIG9ubHkgbmVlZCByZW1vdmUgdGhlIGZpcnN0LgotICAgICAgICAg
ICAgd29ya19pdGVtcy5pdGVtX2lkcy5yZW1vdmUoYXR0YWNobWVudF9pZCkKLSAgICAgICAgd29y
a19pdGVtcy5wdXQoKQotCi0gICAgIyBCZWNhdXNlIHRoaXMgdXNlcyAua2V5KCkgc2VsZi5pc19z
YXZlZCgpIG11c3QgYmUgVHJ1ZSBvciB0aGlzIHdpbGwgdGhyb3cgTm90U2F2ZWRFcnJvci4KLSAg
ICBkZWYgcmVtb3ZlX3dvcmtfaXRlbShzZWxmLCBhdHRhY2htZW50X2lkKToKLSAgICAgICAgZGIu
cnVuX2luX3RyYW5zYWN0aW9uKHNlbGYuX3VuZ3VhcmRlZF9yZW1vdmUsIHNlbGYua2V5KCksIGF0
dGFjaG1lbnRfaWQpCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF91bmd1YXJkZWRfbW92
ZV90b19lbmQoa2V5LCBhdHRhY2htZW50X2lkKToKLSAgICAgICAgd29ya19pdGVtcyA9IGRiLmdl
dChrZXkpCi0gICAgICAgIGlmIGF0dGFjaG1lbnRfaWQgaW4gd29ya19pdGVtcy5pdGVtX2lkczoK
LSAgICAgICAgICAgICMgV2Ugc2hvdWxkIG5ldmVyIGhhdmUgbW9yZSB0aGFuIG9uZSBlbnRyeSBm
b3IgYSB3b3JrIGl0ZW0sIHNvIHdlIG9ubHkgbmVlZCByZW1vdmUgdGhlIGZpcnN0LgotICAgICAg
ICAgICAgd29ya19pdGVtcy5pdGVtX2lkcy5yZW1vdmUoYXR0YWNobWVudF9pZCkKLSAgICAgICAg
ICAgIHdvcmtfaXRlbXMuaXRlbV9pZHMuYXBwZW5kKGF0dGFjaG1lbnRfaWQpCi0gICAgICAgIHdv
cmtfaXRlbXMucHV0KCkKLQotICAgIGRlZiBtb3ZlX3RvX2VuZChzZWxmLCBhdHRhY2htZW50X2lk
KToKLSAgICAgICAgZGIucnVuX2luX3RyYW5zYWN0aW9uKHNlbGYuX3VuZ3VhcmRlZF9tb3ZlX3Rv
X2VuZCwgc2VsZi5rZXkoKSwgYXR0YWNobWVudF9pZCkKSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL21vZGVsL3dvcmtpdGVtc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9R
dWV1ZVN0YXR1c1NlcnZlci9tb2RlbC93b3JraXRlbXNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2
MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3dvcmtpdGVtc191bml0dGVz
dC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDQ1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIFJlc2VhcmNoIGluIE1vdGlvbiBMdGQuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotZnJvbSBtb2RlbC53b3JraXRlbXMgaW1wb3J0
IFdvcmtJdGVtcwotCi0KLWNsYXNzIFdvcmtJdGVtc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgot
ICAgIGRlZiB0ZXN0X2Rpc3BsYXlfcG9zaXRpb25fZm9yX2F0dGFjaG1lbnQoc2VsZik6Ci0gICAg
ICAgIGl0ZW1zID0gV29ya0l0ZW1zKCkKLSAgICAgICAgaXRlbXMuaXRlbV9pZHMgPSBbMCwgMSwg
Ml0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVtcy5kaXNwbGF5X3Bvc2l0aW9uX2Zvcl9h
dHRhY2htZW50KDApLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW1zLmRpc3BsYXlf
cG9zaXRpb25fZm9yX2F0dGFjaG1lbnQoMSksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
aXRlbXMuZGlzcGxheV9wb3NpdGlvbl9mb3JfYXR0YWNobWVudCgzKSwgTm9uZSkKLQotCi1pZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQpJbmRleDogVG9vbHMv
UXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNT
ZXJ2ZXIvbW9kZWwJKHJldmlzaW9uIDI2MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVy
L21vZGVsCShub25leGlzdGVudCkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1F1ZXVlU3Rh
dHVzU2VydmVyL21vZGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmlnbm9yZQojIyAtMSArMCww
ICMjCi0qLnB5YwpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvcm9ib3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9yb2JvdHMudHh0CShyZXZpc2lvbiAy
NjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9yb2JvdHMudHh0CShub25leGlzdGVu
dCkKQEAgLTEsMiArMCwwIEBACi1Vc2VyLWFnZW50OiAqCi1EaXNhbGxvdzogLwoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvcm9ib3RzLnR4dApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMj
Ci10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xz
L1F1ZXVlU3RhdHVzU2VydmVyL3N0eWxlc2hlZXRzL2NoYXJ0cy5jc3MKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvc3R5bGVzaGVldHMvY2hhcnRzLmNzcwkocmV2aXNpb24g
MjYxMTk5KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvc3R5bGVzaGVldHMvY2hhcnRzLmNz
cwkobm9uZXhpc3RlbnQpCkBAIC0xLDggKzAsMCBAQAotLmNoYXJ0IHsKLSAgICBtYXJnaW4tYm90
dG9tOiA0MHB4OwotICAgIGhlaWdodDogMjAwcHg7Ci19Ci0KLS5jaG9pY2VzIHsKLSAgICBmb250
LXNpemU6IDAuNzVlbTsKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBUb29s
cy9RdWV1ZVN0YXR1c1NlcnZlci9zdHlsZXNoZWV0cy9jb21tb24uY3NzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3N0eWxlc2hlZXRzL2NvbW1vbi5jc3MJKHJldmlzaW9u
IDI2MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3N0eWxlc2hlZXRzL2NvbW1vbi5j
c3MJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDQgKzAsMCBAQAotYm9keSB7Ci0gIGZvbnQtZmFtaWx5
OiBWZXJkYW5hLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Ci0gIHdpZHRoOiA2MDBweDsKLSAgcGFk
ZGluZzogMHB4OwotICBjb2xvcjogIzQ0NDsKLX0KLWgxIHsKLSAgYmFja2dyb3VuZC1jb2xvcjog
I0VFRTsKLSAgY29sb3I6ICM0NDQ7Ci0gIGZvbnQtc2l6ZTogMTRwdDsKLSAgZm9udC1zdHlsZTog
aXRhbGljOwotICBtYXJnaW46IDBweDsKLSAgcGFkZGluZzogNXB4OwotfQotaDIgewotICBiYWNr
Z3JvdW5kLWNvbG9yOiAjQUFBOwotICBjb2xvcjogd2hpdGU7Ci0gIGZvbnQtd2VpZ2h0OiBib2xk
OwotICBmb250LXNpemU6IDlwdDsKLSAgbWFyZ2luOiAwcHg7Ci0gIHBhZGRpbmc6IDVweDsKLX0K
LXVsIHsKLSAgbWFyZ2luOiAwcHg7Ci0gIHBhZGRpbmc6IDBweDsKLSAgbGlzdC1zdHlsZTogbm9u
ZTsKLX0KLWxpIHsKLSAgcGFkZGluZzogNXB4OwotfQotdGFibGUgewotICBib3JkZXItc3BhY2lu
ZzogMHB4OwotfQotdGggewotICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUFBOwotICBjb2xvcjogd2hp
dGU7Ci0gIHBhZGRpbmc6IDVweDsKLSAgd2lkdGg6IDEwMHB4OwotICBmb250LXNpemU6IDlwdDsK
LX0KLXRkIHsKLSAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotdHI6aG92ZXIsIGxpOmhvdmVyIHsK
LSAgYmFja2dyb3VuZC1jb2xvcjogI0VFRTsKLX0KLQotLnN0YXR1cy1ncm91cCB7Ci0gIGZvbnQt
c2l6ZTogOTAlOwotfQotCi0uc3RhdHVzLWJ1ZyB7Ci0gIGZvbnQtd2VpZ2h0OiBib2xkOwotfQot
Ci0uc3RhdHVzLWdyb3VwIHVsIHsKLSAgZm9udC1zaXplOiA5MCU7Ci19Ci0KLS5zdGF0dXMtZ3Jv
dXAgdWwgbGkgewotICBwYWRkaW5nOiAycHggMCAycHggN3B4OwotICBvdmVyZmxvdzogaGlkZGVu
OwotfQotCi0uc3RhdHVzLWdyb3VwIHVsIGxpOmhvdmVyIHsKLSAgYmFja2dyb3VuZDogI2RkZDsK
LX0KLQotLnN0YXR1cy1kYXRlIHsKLSAgY29sb3I6ICNBQUE7Ci0gIGZsb2F0OiByaWdodDsKLSAg
Zm9udC1zaXplOiA4cHQ7Ci19Ci0KLS5zdGF0dXMtYm90IHsKLSAgY29sb3I6ICNBQUE7Ci0gIGZs
b2F0OiBsZWZ0OwotICBmb250LXNpemU6IDExcHQ7Ci19Ci0KLS5xdWV1ZV9idWJibGUgewotICAg
IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwotICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Ci0gICAg
Ym9yZGVyLXJhZGl1czogMTBweDsKLSAgICBwYWRkaW5nOiA1cHg7Ci19Ci0ucXVldWVfbmFtZSB7
Ci0gICAgZmxvYXQ6bGVmdDsKLX0KLS5sYXN0X2hlYXJkX2Zyb20gewotICAgIGZsb2F0OiByaWdo
dDsKLX0KLS5zdGF0dXNfdGV4dCB7Ci0gICAgY2xlYXI6IGJvdGg7Ci19Ci0uYWxpdmUgewotICAg
IGJhY2tncm91bmQtY29sb3I6ICM4RkRGNUY7Ci19Ci0uYmVoaW5kIHsKLSAgICBiYWNrZ3JvdW5k
LWNvbG9yOiAjRkZGQzZDOwotfQotLmRlYWQgewotICAgIGJhY2tncm91bmQtY29sb3I6ICNFOTgw
ODA7Ci19CkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9zdHlsZXNoZWV0cy9tYWluLmNz
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9zdHlsZXNoZWV0cy9tYWlu
LmNzcwkocmV2aXNpb24gMjYxMTk5KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvc3R5bGVz
aGVldHMvbWFpbi5jc3MJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNiArMCwwIEBACi1ib2R5IHsKLSAg
Zm9udC1mYW1pbHk6IFZlcmRhbmEsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKLX0KLQotI2N1cnJl
bnRfc3RhdHVzIHsKLSAgICBwYWRkaW5nOiA1cHg7Ci0gICAgZm9udC1zaXplOiBsYXJnZXI7Ci19
Ci0KLSNsYXN0X3N0YXR1c19kYXRlIHsKLSAgICBmb250LXNpemU6IHNtYWxsOwotfQotCi0ucmVj
ZW50X3N0YXR1cyB7Ci0gICAgcGFkZGluZy1sZWZ0OiAxMHB4OwotfQotCi0jcmVjZW50X3N0YXR1
c190YWJsZSB7Ci0gICAgZm9udC1zaXplOiBzbWFsbDsKLSAgICBtYXJnaW46IDEwcHg7Ci19Ci0K
LSNmb290ZXIgewotICAgIGZvbnQtc2l6ZTogc21hbGw7Ci0gICAgcGFkZGluZy10b3A6IDEwcHg7
Ci19CkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvYWN0aXZlYm90cy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRlcy9hY3Rp
dmVib3RzLmh0bWwJKHJldmlzaW9uIDI2MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVy
L3RlbXBsYXRlcy9hY3RpdmVib3RzLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzMyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+V2ViS2l0IFF1ZXVlczwv
dGl0bGU+Ci08bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3R5
bGVzaGVldHMvY29tbW9uLmNzcyIgLz4KLTxzdHlsZT4KLS8qIE92ZXJyaWRlIHRoZSBnZW5lcmlj
IHRhYmxlIHN0eWxlcyBmcm9tIGNvbW1vbi5jc3MgKi8KLXRkIHsKLSAgdGV4dC1hbGlnbjogbGVm
dDsKLX0KLTwvc3R5bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLTxoMT5XZWJLaXQgUXVldWVzPC9oMT4K
LTx0YWJsZT4KLSAgICA8dGhlYWQ+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0aD5Cb3Q8
L3RoPjx0aD5RdWV1ZTwvdGg+PHRoPkxhc3QgTWVzc2FnZTwvdGg+PHRoPlRpbWU8L3RoPgotICAg
ICAgICA8L3RyPgotICAgIDwvdGhlYWQ+Ci0gICAgPHRib2R5PgotICAgICAgICB7JSBmb3Igc3Rh
dHVzIGluIGxhc3Rfc3RhdHVzZXMgJX0KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPjxh
IGhyZWY9Ii9xdWV1ZS1zdGF0dXMve3tzdGF0dXMucXVldWVfbmFtZX19L2JvdHMve3tzdGF0dXMu
Ym90X2lkfX0iPnt7IHN0YXR1cy5ib3RfaWQgfX08L2E+PC90ZD4KLSAgICAgICAgICAgIDx0ZD48
YSBocmVmPSIvcXVldWUtc3RhdHVzL3t7c3RhdHVzLnF1ZXVlX25hbWV9fSI+e3sgc3RhdHVzLnF1
ZXVlX25hbWUgfX08L2E+PC90ZD4KLSAgICAgICAgICAgIDx0ZD57eyBzdGF0dXMubWVzc2FnZXxm
b3JjZV9lc2NhcGV8dXJsaXplfHdlYmtpdF9saW5raWZ5fHNhZmUgfX08L3RkPgotICAgICAgICAg
ICAgPHRkPnt7IHN0YXR1cy5kYXRlfHRpbWVzaW5jZSB9fSBhZ288L3RkPgotICAgICAgICA8L3Ry
PgotICAgICAgICB7JSBlbmRmb3IgJX0KLSAgICA8L3Rib2R5PgotPC90YWJsZT4KLTwvYm9keT4K
LTwvaHRtbD4KSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRlcy9pbmNsdWRl
cy9zaW5nbGVxdWV1ZXN0YXR1cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL3RlbXBsYXRlcy9pbmNsdWRlcy9zaW5nbGVxdWV1ZXN0YXR1cy5odG1sCShyZXZpc2lv
biAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvaW5jbHVkZXMv
c2luZ2xlcXVldWVzdGF0dXMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDkgKzAsMCBAQAotPHNw
YW4gY2xhc3M9InN0YXR1cy1kYXRlIj57eyBzdGF0dXMuZGF0ZXx0aW1lc2luY2UgfX0gYWdvCi17
JSBpZiBzdGF0dXMuYm90X2lkICV9Ci0oPGEgaHJlZj0iL3F1ZXVlLXN0YXR1cy97e3N0YXR1cy5x
dWV1ZV9uYW1lfX0vYm90cy97e3N0YXR1cy5ib3RfaWR9fSI+e3sgc3RhdHVzLmJvdF9pZCB9fTwv
YT4pCi17JSBlbmRpZiAlfQotPC9zcGFuPgotPHNwYW4gY2xhc3M9InN0YXR1cy1tZXNzYWdlIj57
eyBzdGF0dXMubWVzc2FnZXxmb3JjZV9lc2NhcGV8dXJsaXplfHdlYmtpdF9saW5raWZ5fHNhZmUg
fX08L3NwYW4+Ci17JSBpZiBzdGF0dXMucmVzdWx0c19maWxlICV9Ci0gICAgPHNwYW4gY2xhc3M9
InN0YXR1cy1yZXN1bHRzIj5be3sgc3RhdHVzLmtleS5pZHxyZXN1bHRzX2xpbmt8c2FmZSB9fV08
L3NwYW4+Ci17JSBlbmRpZiAlfQpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvdGVtcGxh
dGVzL3BhdGNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvdGVt
cGxhdGVzL3BhdGNoLmh0bWwJKHJldmlzaW9uIDI2MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL3RlbXBsYXRlcy9wYXRjaC5odG1sCShub25leGlzdGVudCkKQEAgLTEsMzAgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPlBhdGNoIFN0YXR1czwv
dGl0bGU+Ci08bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3R5
bGVzaGVldHMvY29tbW9uLmNzcyIgLz4KLTwvaGVhZD4KLTxib2R5PgotPGgxPgotICBQYXRjaCB7
eyBhdHRhY2htZW50X2lkfGZvcmNlX2VzY2FwZXx3ZWJraXRfYXR0YWNobWVudF9pZHxzYWZlIH19
IChCdWcge3sgYnVnX2lkfGZvcmNlX2VzY2FwZXx3ZWJraXRfYnVnX2lkfHNhZmUgfX0pCi08L2gx
PgoteyUgaWYgcXVldWVfc3RhdHVzfGxlbmd0aCA9PSAwICV9Ci08cD5XYWl0aW5nIGluIFF1ZXVl
LCBQcm9jZXNzaW5nIGhhcyBub3Qgc3RhcnRlZCB5ZXQuPC9wPgoteyUgZW5kaWYgJX0KLXslIGZv
ciBxdWV1ZV9uYW1lLCBzdGF0dXNlcyBpbiBxdWV1ZV9zdGF0dXMgJX0KLTxkaXYgY2xhc3M9InN0
YXR1cy1kZXRhaWxzIj4KLSAgPGgyPnt7IHF1ZXVlX25hbWUgfX08L2gyPgotICA8dWw+eyUgZm9y
IHN0YXR1cyBpbiBzdGF0dXNlcyAlfQotICAgIDxsaT4KLSAgICAgIDxzcGFuIGNsYXNzPSJzdGF0
dXMtYm90Ij57eyBzdGF0dXMuYm90X2lkIH19Jm5ic3A8L3NwYW4+Ci0gICAgICA8c3BhbiBjbGFz
cz0ic3RhdHVzLW1lc3NhZ2UiPnt7IHN0YXR1cy5tZXNzYWdlfGZvcmNlX2VzY2FwZXx1cmxpemV8
d2Via2l0X2xpbmtpZnl8c2FmZSB9fTwvc3Bhbj57JSBpZiBzdGF0dXMucmVzdWx0c19maWxlICV9
Ci0gICAgICA8c3BhbiBjbGFzcz0ic3RhdHVzLXJlc3VsdHMiPlt7eyBzdGF0dXMua2V5LmlkfHJl
c3VsdHNfbGlua3xzYWZlIH19XTwvc3Bhbj57JSBlbmRpZiAlfQotICAgICAgPHNwYW4gY2xhc3M9
InN0YXR1cy1kYXRlIj57eyBzdGF0dXMuZGF0ZXx0aW1lc2luY2UgfX0gYWdvPC9zcGFuPgotICAg
IDwvbGk+eyUgZW5kZm9yICV9Ci0gIDwvdWw+Ci08L2Rpdj57JSBlbmRmb3IgJX0KLXslIGlmIHF1
ZXVlX3N0YXR1c3xsZW5ndGggPD0gMSAlfQotPGJyPgotPGEgaHJlZj0iL3BhdGNoL3t7IGF0dGFj
aG1lbnRfaWQgfX0iPkFsbCBFV1MgUXVldWVzPC9hPgoteyUgZW5kaWYgJX0KLTwvaHRtbD4KSW5k
ZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRlcy9xdWV1ZWNoYXJ0cy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRlcy9xdWV1ZWNoYXJ0
cy5odG1sCShyZXZpc2lvbiAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1w
bGF0ZXMvcXVldWVjaGFydHMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDI4NCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8dGl0bGU+e3sgcXVl
dWVfbmFtZSB9fSBDaGFydHM8L3RpdGxlPgotICAgICAgICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3R5bGVzaGVldHMvbWFpbi5jc3MiIC8+Ci0gICAgICAg
IDxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9zdHlsZXNoZWV0
cy9jaGFydHMuY3NzIiAvPgotICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KLSAgICAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICAgICAgZ29vZ2xlLmxvYWQoJ3Zp
c3VhbGl6YXRpb24nLCAnMS4wJywgeydwYWNrYWdlcyc6Wydjb3JlY2hhcnQnXX0pOwotICAgICAg
ICAgICAgZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGZ1bmN0aW9uICgpIHsKLQotICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uIHNlY29uZHNUb1N0cmluZyhzZWNvbmRzKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBvbmVTZWNvbmQgPSAxOwotICAgICAgICAgICAgICAgICAgICB2YXIgb25lTWlu
dXRlID0gNjA7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBvbmVIb3VyID0gb25lTWludXRlICog
NjA7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBvbmVEYXkgPSBvbmVIb3VyICogMjQ7Ci0gICAg
ICAgICAgICAgICAgICAgIHZhciBvbmVZZWFyID0gb25lRGF5ICogMzY1LjI1OwotICAgICAgICAg
ICAgICAgICAgICB2YXIgdW5pdEFycmF5ID0gWwotICAgICAgICAgICAgICAgICAgICAgICAgW29u
ZVllYXIsICJ5ZWFyIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbb25lRGF5LCAiZGF5Il0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBbb25lSG91ciwgImhvdXIiXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFtvbmVNaW51dGUsICJtaW51dGUiXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFtvbmVTZWNvbmQsICJzZWNvbmQiXSwKLSAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAg
ICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9ICIiOwotICAgICAgICAgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHVuaXRBcnJheS5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHVuaXQgPSB1bml0QXJyYXlbaV1bMF07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoc2Vjb25kcyA+PSB1bml0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdCAhPT0gIiIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0ICs9ICIgIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIG5hbWUgPSB1bml0QXJyYXlbaV1bMV07Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIG51bWJlciA9IE1hdGguZmxvb3Ioc2Vjb25kcy91bml0KTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gbnVtYmVyICsgIiAiICsgbmFtZSAr
IChudW1iZXIgPiAxID8gInMiIDogIiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
Y29uZHMgJT0gdW5pdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSAiIikgewotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICIwIHNlY29uZHMiOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgdmFyIGRhdGEsIGNoYXJ0LCBvcHRpb25zOwotCi0gICAgICAg
ICAgICAgICAgdmFyIHRpbWVTdHJpbmcgPSBuZXcgRGF0ZSh7eyB0aW1lc3RhbXAgfX0gKiAxMDAw
KS50b1N0cmluZygpOwotICAgICAgICAgICAgICAgIHZhciB0aW1lc3RhbXBEaXYgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGltZXN0YW1wIik7Ci0gICAgICAgICAgICAgICAgdGltZXN0YW1w
RGl2LmlubmVySFRNTCA9ICJWaWV3aW5nIGZyb20gIiArIHRpbWVTdHJpbmc7Ci0KLSAgICAgICAg
ICAgICAgICBvcHRpb25zID0gewotICAgICAgICAgICAgICAgICAgICBsZWdlbmQ6IHtwb3NpdGlv
bjogInRvcCJ9LAotICAgICAgICAgICAgICAgICAgICBoQXhpczogewotICAgICAgICAgICAgICAg
ICAgICAgICAgdGl0bGU6ICJ7eyB0aW1lX3VuaXRfbmFtZXxjYXBmaXJzdCB9fSBBZ28iLAotICAg
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAtMSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHZpZXdXaW5kb3c6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IHt7IHNl
Y29uZHNfYWdvX21pbiB9fSAvIHt7IHRpbWVfdW5pdCB9fSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXg6IHt7IHNlY29uZHNfYWdvX21heCB9fSAvIHt7IHRpbWVfdW5pdCB9fSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICBncmlkbGlu
ZXM6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudDogOSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHZBeGlzOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2aWV3V2luZG93OiB7bWluOiAw
IH0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIGxpbmVXaWR0
aDogMywKLSAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAgLy8gQ0hBUlQgMQot
ICAgICAgICAgICAgICAgIG9wdGlvbnMuY29sb3JzID0gWyJncmVlbiIsICJyZWQiLCAib3Jhbmdl
Il07Ci0gICAgICAgICAgICAgICAgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRh
VGFibGUoKTsKLSAgICAgICAgICAgICAgICBkYXRhLmFkZENvbHVtbigibnVtYmVyIiwgIjx0aW1l
PiIpOwotICAgICAgICAgICAgICAgIGRhdGEuYWRkQ29sdW1uKCJudW1iZXIiLCAiUGF0Y2hlcyBD
b21wbGV0ZWQiKTsKLSAgICAgICAgICAgICAgICBkYXRhLmFkZENvbHVtbih7dHlwZTogInN0cmlu
ZyIsIHJvbGU6ICJ0b29sdGlwIn0pOwotICAgICAgICAgICAgICAgIGRhdGEuYWRkQ29sdW1uKCJu
dW1iZXIiLCAiUGF0Y2hlcyBXYWl0aW5nIik7Ci0gICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1
bW4oe3R5cGU6ICJzdHJpbmciLCByb2xlOiAidG9vbHRpcCJ9KTsKLSAgICAgICAgICAgICAgICBk
YXRhLmFkZENvbHVtbigibnVtYmVyIiwgIkJvdHMgKHZpc2libGUgdG8gc2VydmVyKSIpOwotICAg
ICAgICAgICAgICAgIGRhdGEuYWRkQ29sdW1uKHt0eXBlOiAic3RyaW5nIiwgcm9sZTogInRvb2x0
aXAifSk7Ci0gICAgICAgICAgICAgICAgZGF0YS5hZGRSb3dzKFsKLSAgICAgICAgICAgICAgICAg
ICAgeyUgZm9yIHF1ZXVlX2RhdHVtIGluIHF1ZXVlX2RhdGEgJX0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBxdWV1ZV9kYXR1bS5zZWNv
bmRzX2FnbyB9fSAvIHt7IHRpbWVfdW5pdCB9fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7eyBxdWV1ZV9kYXR1bS5wYXRjaGVzX2NvbXBsZXRlZCB9fSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiUGF0Y2hlcyBDb21wbGV0ZWQ6ICIgKyB7eyBxdWV1ZV9kYXR1bS5wYXRjaGVz
X2NvbXBsZXRlZCB9fSArICJcbiIgKyBzZWNvbmRzVG9TdHJpbmcoe3sgcXVldWVfZGF0dW0uc2Vj
b25kc19hZ28gfX0pICsgIiBhZ28iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHF1
ZXVlX2RhdHVtLnBhdGNoZXNfd2FpdGluZyB9fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiUGF0Y2hlcyBXYWl0aW5nOiAiICsge3sgcXVldWVfZGF0dW0ucGF0Y2hlc193YWl0aW5nIH19
ICsgIlxuIiArIHNlY29uZHNUb1N0cmluZyh7eyBxdWV1ZV9kYXR1bS5zZWNvbmRzX2FnbyB9fSkg
KyAiIGFnbyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcXVldWVfZGF0dW0uYm90
c19zZWVuIH19LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb3RzICh2aXNpYmxlIHRv
IHNlcnZlcik6ICIgKyB7eyBxdWV1ZV9kYXR1bS5ib3RzX3NlZW4gfX0gKyAiXG4iICsgc2Vjb25k
c1RvU3RyaW5nKHt7IHF1ZXVlX2RhdHVtLnNlY29uZHNfYWdvIH19KSArICIgYWdvIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIHslIGVuZGZvciAlfQot
ICAgICAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgICAgIGNoYXJ0ID0gbmV3IGdvb2dsZS52
aXN1YWxpemF0aW9uLkxpbmVDaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhcnQxJykp
OwotICAgICAgICAgICAgICAgIGNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBDSEFSVCAyCi0gICAgICAgICAgICAgICAgb3B0aW9ucy5jb2xvcnMgPSBbImJs
dWUiLCAicHVycGxlIl07Ci0gICAgICAgICAgICAgICAgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFs
aXphdGlvbi5EYXRhVGFibGUoKTsKLSAgICAgICAgICAgICAgICBkYXRhLmFkZENvbHVtbigibnVt
YmVyIiwgIjx0aW1lPiIpOwotICAgICAgICAgICAgICAgIGRhdGEuYWRkQ29sdW1uKCJudW1iZXIi
LCAiU3RhdHVzIFVwZGF0ZXMiKTsKLSAgICAgICAgICAgICAgICBkYXRhLmFkZENvbHVtbih7dHlw
ZTogInN0cmluZyIsIHJvbGU6ICJ0b29sdGlwIn0pOwotICAgICAgICAgICAgICAgIGRhdGEuYWRk
Q29sdW1uKCJudW1iZXIiLCAiUGF0Y2ggUmV0cmllcyIpOwotICAgICAgICAgICAgICAgIGRhdGEu
YWRkQ29sdW1uKHt0eXBlOiAic3RyaW5nIiwgcm9sZTogInRvb2x0aXAifSk7Ci0gICAgICAgICAg
ICAgICAgZGF0YS5hZGRSb3dzKFsKLSAgICAgICAgICAgICAgICAgICAgeyUgZm9yIHF1ZXVlX2Rh
dHVtIGluIHF1ZXVlX2RhdGEgJX0KLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7eyBxdWV1ZV9kYXR1bS5zZWNvbmRzX2FnbyB9fSAvIHt7IHRp
bWVfdW5pdCB9fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBxdWV1ZV9kYXR1bS5z
dGF0dXNfdXBkYXRlX2NvdW50IH19LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdGF0
dXMgVXBkYXRlczogIiArIHt7IHF1ZXVlX2RhdHVtLnN0YXR1c191cGRhdGVfY291bnQgfX0gKyAi
XG4iICsgc2Vjb25kc1RvU3RyaW5nKHt7IHF1ZXVlX2RhdHVtLnNlY29uZHNfYWdvIH19KSArICIg
YWdvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBxdWV1ZV9kYXR1bS5wYXRjaF9y
ZXRyeV9jb3VudCB9fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGF0Y2ggUmV0cmll
czogIiArIHt7IHF1ZXVlX2RhdHVtLnBhdGNoX3JldHJ5X2NvdW50IH19ICsgIlxuIiArIHNlY29u
ZHNUb1N0cmluZyh7eyBxdWV1ZV9kYXR1bS5zZWNvbmRzX2FnbyB9fSkgKyAiIGFnbyIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB7JSBlbmRmb3IgJX0K
LSAgICAgICAgICAgICAgICBdKTsKLSAgICAgICAgICAgICAgICBjaGFydCA9IG5ldyBnb29nbGUu
dmlzdWFsaXphdGlvbi5MaW5lQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0Micp
KTsKLSAgICAgICAgICAgICAgICBjaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwotCi0gICAgICAg
ICAgICAgICAgLy8gQ0hBUlQgMwotICAgICAgICAgICAgICAgIG9wdGlvbnMuY29sb3JzID0gWyJi
cm93biJdOwotICAgICAgICAgICAgICAgIG9wdGlvbnMudkF4aXMudGl0bGUgPSAiTWludXRlcyI7
Ci0gICAgICAgICAgICAgICAgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFi
bGUoKTsKLSAgICAgICAgICAgICAgICBkYXRhLmFkZENvbHVtbigibnVtYmVyIiwgIjx0aW1lPiIp
OwotICAgICAgICAgICAgICAgIGRhdGEuYWRkQ29sdW1uKCJudW1iZXIiLCAiUGF0Y2ggUHJvY2Vz
c2luZyBUaW1lcyIpOwotICAgICAgICAgICAgICAgIGRhdGEuYWRkQ29sdW1uKHt0eXBlOiAic3Ry
aW5nIiwgcm9sZTogInRvb2x0aXAifSk7Ci0gICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1bW4o
e3R5cGU6ICJudW1iZXIiLCByb2xlOiAiaW50ZXJ2YWwifSk7Ci0gICAgICAgICAgICAgICAgZGF0
YS5hZGRDb2x1bW4oe3R5cGU6ICJudW1iZXIiLCByb2xlOiAiaW50ZXJ2YWwifSk7Ci0gICAgICAg
ICAgICAgICAgZGF0YS5hZGRSb3dzKFsKLSAgICAgICAgICAgICAgICAgICAgeyUgZm9yIHF1ZXVl
X2RhdHVtIGluIHF1ZXVlX2RhdGEgJX0KLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7eyBxdWV1ZV9kYXR1bS5zZWNvbmRzX2FnbyB9fSAvIHt7
IHRpbWVfdW5pdCB9fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBxdWV1ZV9kYXR1
bS5wYXRjaF9wcm9jZXNzaW5nX21lZCB9fSAvIDYwLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJQYXRjaCBQcm9jZXNzaW5nIFRpbWVzXG5NYXg6ICIgKyBzZWNvbmRzVG9TdHJpbmcoe3sg
cXVldWVfZGF0dW0ucGF0Y2hfcHJvY2Vzc2luZ19tYXggfX0pICsgIlxuTWVkaWFuOiAiICsgc2Vj
b25kc1RvU3RyaW5nKHt7IHF1ZXVlX2RhdHVtLnBhdGNoX3Byb2Nlc3NpbmdfbWVkIH19KSArICJc
bk1pbjogIiArIHNlY29uZHNUb1N0cmluZyh7eyBxdWV1ZV9kYXR1bS5wYXRjaF9wcm9jZXNzaW5n
X21pbiB9fSkgKyAiXG4iICsgc2Vjb25kc1RvU3RyaW5nKHt7IHF1ZXVlX2RhdHVtLnNlY29uZHNf
YWdvIH19KSArICIgYWdvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBxdWV1ZV9k
YXR1bS5wYXRjaF9wcm9jZXNzaW5nX21pbiB9fSAvIDYwLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHt7IHF1ZXVlX2RhdHVtLnBhdGNoX3Byb2Nlc3NpbmdfbWF4IH19IC8gNjAsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB7JSBlbmRmb3IgJX0K
LSAgICAgICAgICAgICAgICBdKTsKLSAgICAgICAgICAgICAgICBjaGFydCA9IG5ldyBnb29nbGUu
dmlzdWFsaXphdGlvbi5MaW5lQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0Mycp
KTsKLSAgICAgICAgICAgICAgICBjaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwotCi0gICAgICAg
ICAgICAgICAgLy8gQ0hBUlQgNAotICAgICAgICAgICAgICAgIG9wdGlvbnMuY29sb3JzID0gWyJy
ZWQiXTsKLSAgICAgICAgICAgICAgICBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRh
dGFUYWJsZSgpOwotICAgICAgICAgICAgICAgIGRhdGEuYWRkQ29sdW1uKCJudW1iZXIiLCAiPHRp
bWU+Iik7Ci0gICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1bW4oIm51bWJlciIsICJQYXRjaCBX
YWl0aW5nIFRpbWVzIik7Ci0gICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICJz
dHJpbmciLCByb2xlOiAidG9vbHRpcCJ9KTsKLSAgICAgICAgICAgICAgICBkYXRhLmFkZENvbHVt
bih7dHlwZTogIm51bWJlciIsIHJvbGU6ICJpbnRlcnZhbCJ9KTsKLSAgICAgICAgICAgICAgICBk
YXRhLmFkZENvbHVtbih7dHlwZTogIm51bWJlciIsIHJvbGU6ICJpbnRlcnZhbCJ9KTsKLSAgICAg
ICAgICAgICAgICBkYXRhLmFkZFJvd3MoWwotICAgICAgICAgICAgICAgICAgICB7JSBmb3IgcXVl
dWVfZGF0dW0gaW4gcXVldWVfZGF0YSAlfQotICAgICAgICAgICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLnNlY29uZHNfYWdvIH19IC8g
e3sgdGltZV91bml0IH19LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHF1ZXVlX2Rh
dHVtLnBhdGNoX3dhaXRpbmdfbWVkIH19IC8gNjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlBhdGNoIFdhaXRpbmcgVGltZXNcbk1heDogIiArIHNlY29uZHNUb1N0cmluZyh7eyBxdWV1
ZV9kYXR1bS5wYXRjaF93YWl0aW5nX21heCB9fSkgKyAiXG5NZWRpYW46ICIgKyBzZWNvbmRzVG9T
dHJpbmcoe3sgcXVldWVfZGF0dW0ucGF0Y2hfd2FpdGluZ19tZWQgfX0pICsgIlxuTWluOiAiICsg
c2Vjb25kc1RvU3RyaW5nKHt7IHF1ZXVlX2RhdHVtLnBhdGNoX3dhaXRpbmdfbWluIH19KSArICJc
biIgKyBzZWNvbmRzVG9TdHJpbmcoe3sgcXVldWVfZGF0dW0uc2Vjb25kc19hZ28gfX0pICsgIiBh
Z28iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLnBhdGNoX3dh
aXRpbmdfbWluIH19IC8gNjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcXVldWVf
ZGF0dW0ucGF0Y2hfd2FpdGluZ19tYXggfX0gLyA2MCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICAgICAgICAgIHslIGVuZGZvciAlfQotICAgICAgICAgICAgICAgIF0p
OwotICAgICAgICAgICAgICAgIGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkxpbmVD
aGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhcnQ0JykpOwotICAgICAgICAgICAgICAg
IGNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7Ci0KLSAgICAgICAgICAgICAgICBmdW5jdGlvbiBw
b3N0UGF0Y2hMaW5rIChzZWxlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVj
dGlvbi5sZW5ndGggPiAwICYmIHNlbGVjdGlvblswXS5yb3cgIT09IHVuZGVmaW5lZCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGF0dGFjaG1lbnRJZEFycmF5ID0gW3slIGZvciBwYXRj
aF9kYXR1bSBpbiBwYXRjaF9kYXRhICV9e3sgcGF0Y2hfZGF0dW0uYXR0YWNobWVudF9pZCB9fSwg
eyUgZW5kZm9yICV9XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdHRhY2htZW50SWQg
PSBhdHRhY2htZW50SWRBcnJheVtzZWxlY3Rpb25bMF0ucm93XTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBhVGFnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlbGVjdGVkUGF0Y2gi
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFUYWcuaW5uZXJIVE1MID0gYVRhZy5ocmVmID0g
Ii8vIiArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgIi9wYXRjaC8iICsgYXR0YWNobWVudElkOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgLy8gQ0hBUlQgNQotICAgICAgICAgICAgICAgIG9wdGlvbnMuY29sb3JzID0gWyJicm93biIs
ICJyZWQiXTsKLSAgICAgICAgICAgICAgICBvcHRpb25zLmhBeGlzLnRpdGxlID0gInt7IHRpbWVf
dW5pdF9uYW1lfGNhcGZpcnN0IH19IEFnbyI7Ci0gICAgICAgICAgICAgICAgb3B0aW9ucy5oQXhp
cy52aWV3V2luZG93Lm1pbiA9IHt7IHNlY29uZHNfYWdvX21pbiB9fSAvIHt7IHRpbWVfdW5pdCB9
fTsKLSAgICAgICAgICAgICAgICBvcHRpb25zLmhBeGlzLnZpZXdXaW5kb3cubWF4ID0ge3sgc2Vj
b25kc19hZ29fbWF4IH19IC8ge3sgdGltZV91bml0IH19OwotICAgICAgICAgICAgICAgIGRlbGV0
ZSBvcHRpb25zLmxpbmVXaWR0aDsKLSAgICAgICAgICAgICAgICBkYXRhID0gbmV3IGdvb2dsZS52
aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwotICAgICAgICAgICAgICAgIGRhdGEuYWRkQ29sdW1u
KCJudW1iZXIiLCAiPHRpbWU+Iik7Ci0gICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1bW4oIm51
bWJlciIsICJQcm9jZXNzIER1cmF0aW9uIik7Ci0gICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1
bW4oe3R5cGU6ICJzdHJpbmciLCByb2xlOiAidG9vbHRpcCJ9KTsKLSAgICAgICAgICAgICAgICBk
YXRhLmFkZENvbHVtbigibnVtYmVyIiwgIldhaXQgRHVyYXRpb24iKTsKLSAgICAgICAgICAgICAg
ICBkYXRhLmFkZENvbHVtbih7dHlwZTogInN0cmluZyIsIHJvbGU6ICJ0b29sdGlwIn0pOwotICAg
ICAgICAgICAgICAgIGRhdGEuYWRkUm93cyhbCi0gICAgICAgICAgICAgICAgICAgIHslIGZvciBw
YXRjaF9kYXR1bSBpbiBwYXRjaF9kYXRhICV9Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcGF0Y2hfZGF0dW0uc2Vjb25kc19hZ28gfX0g
LyB7eyB0aW1lX3VuaXQgfX0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcGF0Y2hf
ZGF0dW0ucHJvY2Vzc19kdXJhdGlvbiB9fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
UGF0Y2gge3sgcGF0Y2hfZGF0dW0uYXR0YWNobWVudF9pZCB9fVxuIiArIHNlY29uZHNUb1N0cmlu
Zyh7eyBwYXRjaF9kYXR1bS5zZWNvbmRzX2FnbyB9fSkgKyAiIGFnbyIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAge3sgcGF0Y2hfZGF0dW0ud2FpdF9kdXJhdGlvbiB9fSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiUGF0Y2gge3sgcGF0Y2hfZGF0dW0uYXR0YWNobWVudF9pZCB9
fVxuIiArIHNlY29uZHNUb1N0cmluZyh7eyBwYXRjaF9kYXR1bS5zZWNvbmRzX2FnbyB9fSkgKyAi
IGFnbyIsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB7
JSBlbmRmb3IgJX0KLSAgICAgICAgICAgICAgICBdKTsKLSAgICAgICAgICAgICAgICBjaGFydCA9
IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5TY2F0dGVyQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NoYXJ0NScpKTsKLSAgICAgICAgICAgICAgICB2YXIgY2hhcnQ1ID0gY2hhcnQ7Ci0g
ICAgICAgICAgICAgICAgZ29vZ2xlLnZpc3VhbGl6YXRpb24uZXZlbnRzLmFkZExpc3RlbmVyKGNo
YXJ0LCAic2VsZWN0IiwgZnVuY3Rpb24gKCkge3Bvc3RQYXRjaExpbmsoY2hhcnQ1LmdldFNlbGVj
dGlvbigpKTt9KTsKLSAgICAgICAgICAgICAgICBjaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwot
Ci0gICAgICAgICAgICAgICAgLy8gQ0hBUlQgNgotICAgICAgICAgICAgICAgIG9wdGlvbnMuY29s
b3JzID0gWyJibHVlIiwgInB1cnBsZSJdOwotICAgICAgICAgICAgICAgIGRlbGV0ZSBvcHRpb25z
LnZBeGlzLnRpdGxlOwotICAgICAgICAgICAgICAgIGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6
YXRpb24uRGF0YVRhYmxlKCk7Ci0gICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1bW4oIm51bWJl
ciIsICI8dGltZT4iKTsKLSAgICAgICAgICAgICAgICBkYXRhLmFkZENvbHVtbigibnVtYmVyIiwg
IlN0YXR1cyBVcGRhdGVzIik7Ci0gICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1bW4oe3R5cGU6
ICJzdHJpbmciLCByb2xlOiAidG9vbHRpcCJ9KTsKLSAgICAgICAgICAgICAgICBkYXRhLmFkZENv
bHVtbigibnVtYmVyIiwgIlJldHJpZXMiKTsKLSAgICAgICAgICAgICAgICBkYXRhLmFkZENvbHVt
bih7dHlwZTogInN0cmluZyIsIHJvbGU6ICJ0b29sdGlwIn0pOwotICAgICAgICAgICAgICAgIGRh
dGEuYWRkUm93cyhbCi0gICAgICAgICAgICAgICAgICAgIHslIGZvciBwYXRjaF9kYXR1bSBpbiBw
YXRjaF9kYXRhICV9Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAge3sgcGF0Y2hfZGF0dW0uc2Vjb25kc19hZ28gfX0gLyB7eyB0aW1lX3VuaXQg
fX0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcGF0Y2hfZGF0dW0uc3RhdHVzX3Vw
ZGF0ZV9jb3VudCB9fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGF0Y2gge3sgcGF0
Y2hfZGF0dW0uYXR0YWNobWVudF9pZCB9fVxuIiArIHNlY29uZHNUb1N0cmluZyh7eyBwYXRjaF9k
YXR1bS5zZWNvbmRzX2FnbyB9fSkgKyAiIGFnbyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAge3sgcGF0Y2hfZGF0dW0ucmV0cnlfY291bnQgfX0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlBhdGNoIHt7IHBhdGNoX2RhdHVtLmF0dGFjaG1lbnRfaWQgfX1cbiIgKyBzZWNvbmRz
VG9TdHJpbmcoe3sgcGF0Y2hfZGF0dW0uc2Vjb25kc19hZ28gfX0pICsgIiBhZ28iLAotICAgICAg
ICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgeyUgZW5kZm9yICV9Ci0g
ICAgICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICAgICAgY2hhcnQgPSBuZXcgZ29vZ2xlLnZp
c3VhbGl6YXRpb24uU2NhdHRlckNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydDYn
KSk7Ci0gICAgICAgICAgICAgICAgdmFyIGNoYXJ0NiA9IGNoYXJ0OwotICAgICAgICAgICAgICAg
IGdvb2dsZS52aXN1YWxpemF0aW9uLmV2ZW50cy5hZGRMaXN0ZW5lcihjaGFydCwgInNlbGVjdCIs
IGZ1bmN0aW9uICgpIHtwb3N0UGF0Y2hMaW5rKGNoYXJ0Ni5nZXRTZWxlY3Rpb24oKSk7fSk7Ci0g
ICAgICAgICAgICAgICAgY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKLSAgICAgICAgICAgIH0p
OwotCi0gICAgICAgICAgICBmdW5jdGlvbiBzZXRVUkxQYXJhbWV0ZXIgKHBhcmFtZXRlck5hbWUs
IG5ld1ZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHNwbGl0OwotICAgICAgICAgICAgICAg
IHNwbGl0ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoIj8iKTsKLSAgICAgICAgICAgICAg
ICB2YXIgdXJsLCBwYXJhbWV0ZXJBcnJheTsKLSAgICAgICAgICAgICAgICB1cmwgPSBzcGxpdFsw
XTsKLSAgICAgICAgICAgICAgICBpZiAoc3BsaXQubGVuZ3RoID4gMSkgewotICAgICAgICAgICAg
ICAgICAgICBwYXJhbWV0ZXJBcnJheSA9IHNwbGl0WzFdLnNwbGl0KCImIik7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyQXJyYXkgPSBbXTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdmFyIHNldFBhcmFtZXRlciA9IGZh
bHNlOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1ldGVyQXJyYXku
bGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRQYXJhbWV0ZXJO
YW1lID0gZGVjb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlckFycmF5W2ldLnNwbGl0KCI9IilbMF0p
OwotICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhcmFtZXRlck5hbWUgPT09IHBhcmFt
ZXRlck5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlckFycmF5W2ldID0g
ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlck5hbWUpICsgIj0iICsgZW5jb2RlVVJJQ29tcG9u
ZW50KG5ld1ZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhcmFtZXRlciA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIXNldFBhcmFtZXRlcikg
ewotICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJBcnJheS5wdXNoKGVuY29kZVVSSUNvbXBv
bmVudChwYXJhbWV0ZXJOYW1lKSArICI9IiArIGVuY29kZVVSSUNvbXBvbmVudChuZXdWYWx1ZSkp
OwotICAgICAgICAgICAgICAgIH1jb25zb2xlLmxvZyhwYXJhbWV0ZXJBcnJheSk7Ci0gICAgICAg
ICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmwgKyAiPyIgKyBwYXJhbWV0ZXJBcnJh
eS5qb2luKCImIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvaGVh
ZD4KLQotICAgIDxib2R5PgotICAgICAgICA8ZGl2IGNsYXNzPSJjaG9pY2VzIj4KLSAgICAgICAg
ICAgIHslIGZvciBzaW5nbGVfcXVldWVfbmFtZSBpbiBhbGxfcXVldWVfbmFtZXMgJX0KLSAgICAg
ICAgICAgICAgICB7JSBpZiBzaW5nbGVfcXVldWVfbmFtZSA9PSBxdWV1ZV9uYW1lICV9Ci0gICAg
ICAgICAgICAgICAgICAgIHt7IHF1ZXVlX25hbWUgfX0KLSAgICAgICAgICAgICAgICB7JSBlbHNl
ICV9Ci0gICAgICAgICAgICAgICAgICAgIHt7IHNpbmdsZV9xdWV1ZV9uYW1lfGZvcmNlX2VzY2Fw
ZXxxdWV1ZV9jaGFydHNfbGluazpzaW5nbGVfcXVldWVfbmFtZXxzYWZlIH19Ci0gICAgICAgICAg
ICAgICAgeyUgZW5kaWYgJX0KLSAgICAgICAgICAgICAgICB7JSBpZiBub3QgZm9ybG9vcC5sYXN0
ICV9IHwgeyUgZW5kaWYgJX0KLSAgICAgICAgICAgIHslIGVuZGZvciAlfQotICAgICAgICA8L2Rp
dj4KLSAgICAgICAgPGgxPnt7IHF1ZXVlX25hbWUgfX0gQ2hhcnRzPC9oMT4KLSAgICAgICAgPGRp
dj5be3sgcXVldWVfbmFtZXxmb3JjZV9lc2NhcGV8cXVldWVfc3RhdHVzX2xpbms6InN0YXR1cyJ8
c2FmZSB9fV08L2Rpdj4KLSAgICAgICAgPGRpdiBpZD0idGltZXN0YW1wIj48L2Rpdj4KLSAgICAg
ICAgPGRpdiBjbGFzcz0iY2hvaWNlcyI+Vmlld2luZyByYW5nZToKLSAgICAgICAgICAgIHslIGZv
ciB2aWV3X3JhbmdlX2Nob2ljZSBpbiB2aWV3X3JhbmdlX2Nob2ljZXMgJX0KLSAgICAgICAgICAg
ICAgICB7JSBpZiB2aWV3X3JhbmdlX2Nob2ljZS52aWV3X3JhbmdlID09IHZpZXdfcmFuZ2UgJX0K
LSAgICAgICAgICAgICAgICAgICAge3sgdmlld19yYW5nZV9jaG9pY2UubmFtZSB9fQotICAgICAg
ICAgICAgICAgIHslIGVsc2UgJX0KLSAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNj
cmlwdDpzZXRVUkxQYXJhbWV0ZXIoJ3ZpZXdfcmFuZ2UnLCB7eyB2aWV3X3JhbmdlX2Nob2ljZS52
aWV3X3JhbmdlIH19KSI+e3sgdmlld19yYW5nZV9jaG9pY2UubmFtZSB9fTwvYT4KLSAgICAgICAg
ICAgICAgICB7JSBlbmRpZiAlfQotICAgICAgICAgICAgICAgIHslIGlmIG5vdCBmb3Jsb29wLmxh
c3QgJX0gfCB7JSBlbmRpZiAlfQotICAgICAgICAgICAgeyUgZW5kZm9yICV9Ci0gICAgICAgIDwv
ZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJjaGFydCIgaWQ9ImNoYXJ0MSI+PC9kaXY+Ci0gICAg
ICAgIDxkaXYgY2xhc3M9ImNoYXJ0IiBpZD0iY2hhcnQyIj48L2Rpdj4KLSAgICAgICAgPGRpdiBj
bGFzcz0iY2hhcnQiIGlkPSJjaGFydDMiPjwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJjaGFy
dCIgaWQ9ImNoYXJ0NCI+PC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImNoYXJ0IiBpZD0iY2hh
cnQ1Ij48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0iY2hhcnQiIGlkPSJjaGFydDYiPjwvZGl2
PgotICAgICAgICBTZWxlY3RlZCBwYXRjaDogPGEgaWQ9InNlbGVjdGVkUGF0Y2giPihOb25lKTwv
ZGl2PgotICAgIDwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVy
L3RlbXBsYXRlcy9xdWV1ZXN0YXR1cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3Rh
dHVzU2VydmVyL3RlbXBsYXRlcy9xdWV1ZXN0YXR1cy5odG1sCShyZXZpc2lvbiAyNjExOTkpCisr
KyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvcXVldWVzdGF0dXMuaHRtbAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDc5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTx0aXRsZT57eyBwYWdlX3RpdGxlIH19PC90aXRsZT4KLTxsaW5rIHR5cGU9InRleHQvY3Nz
IiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9zdHlsZXNoZWV0cy9jb21tb24uY3NzIiAvPgotPC9o
ZWFkPgotPGJvZHk+Ci08aDE+e3sgcGFnZV90aXRsZSB9fTwvaDE+Ci0KLTxoMz5TdW1tYXJ5PC9o
Mz4KLTxkaXY+Ci08ZGl2Plt7eyBxdWV1ZV9uYW1lfGZvcmNlX2VzY2FwZXxxdWV1ZV9jaGFydHNf
bGluazoiY2hhcnRzInxzYWZlIH19XTwvZGl2PgotTGFzdCBQYXNzOiB7JSBpZiBsYXN0X3Bhc3Mg
JX17eyBsYXN0X3Bhc3MuZGF0ZXx0aW1lc2luY2UgfX0gYWdveyUgZWxzZSAlfW5ldmVyeyUgZW5k
aWYgJX0KLXslIGlmIG5vdCBib3RfaWQgYW5kIGxhc3RfcGFzcy5ib3RfaWQgJX0KLWJ5IDxhIGhy
ZWY9Ii9xdWV1ZS1zdGF0dXMve3tsYXN0X3Bhc3MucXVldWVfbmFtZX19L2JvdHMve3tsYXN0X3Bh
c3MuYm90X2lkfX0iPnt7IGxhc3RfcGFzcy5ib3RfaWQgfX08L2E+Ci17JSBlbmRpZiAlfQotPC9k
aXY+Ci08ZGl2PgotTGFzdCBCb290OiB7JSBpZiBsYXN0X2Jvb3QgJX17eyBsYXN0X2Jvb3QuZGF0
ZXx0aW1lc2luY2UgfX0gYWdveyUgZWxzZSAlfW5ldmVyeyUgZW5kaWYgJX0KLXslIGlmIG5vdCBi
b3RfaWQgYW5kIGxhc3RfYm9vdC5ib3RfaWQgJX0KLWJ5IDxhIGhyZWY9Ii9xdWV1ZS1zdGF0dXMv
e3tsYXN0X2Jvb3QucXVldWVfbmFtZX19L2JvdHMve3tsYXN0X2Jvb3QuYm90X2lkfX0iPnt7IGxh
c3RfYm9vdC5ib3RfaWQgfX08L2E+Ci17JSBlbmRpZiAlfQotPC9kaXY+Ci08ZGl2PjctZGF5ICJQ
YXNzIiBjb3VudDoge3sgdHJhaWxpbmdfd2Vla19wYXNzX2NvdW50IH19PC9kaXY+Ci08ZGl2PjMw
LWRheSAiUGFzcyIgY291bnQ6IHt7IHRyYWlsaW5nX21vbnRoX3Bhc3NfY291bnQgfX08L2Rpdj4K
LQotPGgzPlJlY2VudCBTdGF0dXM8L2gzPgotCi08ZGl2IGNsYXNzPSJzdGF0dXMtZGV0YWlscyI+
Ci0gIDx1bD4KLSAgICB7JSBmb3Igc3RhdHVzX2dyb3VwIGluIHN0YXR1c19ncm91cHMgJX0KLSAg
ICAgICAgeyUgd2l0aCBzdGF0dXNfZ3JvdXAuMCBhcyB0aXRsZV9zdGF0dXMgJX0KLSAgICAgICAg
ICAgIDxsaSBjbGFzcz0ic3RhdHVzLWdyb3VwIj4KLSAgICAgICAgICAgICAgICB7JSBpZiB0aXRs
ZV9zdGF0dXMuYWN0aXZlX2J1Z19pZCAlfQotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFz
cz0ic3RhdHVzLWJ1ZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICBQYXRjaCB7eyB0aXRsZV9z
dGF0dXMuYWN0aXZlX3BhdGNoX2lkfGZvcmNlX2VzY2FwZXx3ZWJraXRfYXR0YWNobWVudF9pZHxz
YWZlIH19IGZyb20gYnVnCi0gICAgICAgICAgICAgICAgICAgICAgICB7eyB0aXRsZV9zdGF0dXMu
YWN0aXZlX2J1Z19pZHxmb3JjZV9lc2NhcGV8d2Via2l0X2J1Z19pZHxzYWZlIH19OgotICAgICAg
ICAgICAgICAgICAgICA8L3NwYW4+Ci0gICAgICAgICAgICAgICAgeyUgZW5kaWYgJX0KLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICB7JSBpZmVxdWFsIHN0YXR1c19ncm91cHxsZW5n
dGggMSAlfQotICAgICAgICAgICAgICAgICAgICB7JSB3aXRoIHRpdGxlX3N0YXR1cyBhcyBzdGF0
dXMgJX0KLSAgICAgICAgICAgICAgICAgICAgICAgIHslIGluY2x1ZGUgJ2luY2x1ZGVzL3Npbmds
ZXF1ZXVlc3RhdHVzLmh0bWwnICV9Ci0gICAgICAgICAgICAgICAgICAgIHslIGVuZHdpdGggJX0K
LSAgICAgICAgICAgICAgICB7JSBlbHNlICV9Ci0gICAgICAgICAgICAgICAgICAgIDx1bD4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIHslIGZvciBzdGF0dXMgaW4gc3RhdHVzX2dyb3VwICV9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJzdGF0dXMiPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7JSBpbmNsdWRlICdpbmNsdWRlcy9zaW5nbGVxdWV1ZXN0
YXR1cy5odG1sJyAlfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB7JSBlbmRmb3IgJX0KLSAgICAgICAgICAgICAgICAgICAgPC91bD4K
LSAgICAgICAgICAgICAgICB7JSBlbmRpZmVxdWFsICV9Ci0gICAgICAgICAgICA8L2xpPgotICAg
ICAgICB7JSBlbmR3aXRoICV9Ci0gICAgeyUgZW5kZm9yICV9Ci0gIDwvdWw+Ci08L2Rpdj4KLQot
PGgzPlBhdGNoZXMgaW4gcXVldWU8L2gzPgotPHRhYmxlPgotICAgIDx0cj48dGg+UG9zaXRpb248
L3RoPjx0aD5QYXRjaDwvdGg+PHRoPkxvY2sgQWNxdWlyZWQ8L3RoPjwvdHI+Ci0gICAgeyUgZm9y
IHJvdyBpbiB3b3JrX2l0ZW1fcm93cyAlfQotICAgIDx0cj4KLSAgICAgICAgPHRkPiN7eyBmb3Js
b29wLmNvdW50ZXIgfX08L3RkPgotICAgICAgICA8dGQ+Ci0gICAgICAgICAge3sgcm93LmF0dGFj
aG1lbnRfaWR8Zm9yY2VfZXNjYXBlfHdlYmtpdF9hdHRhY2htZW50X2lkfHNhZmUgfX0KLSAgICAg
ICAgPC90ZD4KLSAgICAgICAgPHRkPgotICAgICAgICAgICAgeyUgaWYgcm93LmxvY2tfdGltZSAl
fQotICAgICAgICAgICAgICAgIHt7IHJvdy5sb2NrX3RpbWV8dGltZXNpbmNlIH19IGFnbwotICAg
ICAgICAgICAgeyUgZW5kaWYgJX0KLSAgICAgICAgPC90ZD4KLSAgICA8L3RyPgotICAgIHslIGVu
ZGZvciAlfQotPC90YWJsZT4KLQotPC9ib2R5PgotPC9odG1sPgpJbmRleDogVG9vbHMvUXVldWVT
dGF0dXNTZXJ2ZXIvdGVtcGxhdGVzL3JlY2VudHN0YXR1cy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1F1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRlcy9yZWNlbnRzdGF0dXMuaHRtbAkocmV2aXNp
b24gMjYxMTk5KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvdGVtcGxhdGVzL3JlY2VudHN0
YXR1cy5odG1sCShub25leGlzdGVudCkKQEAgLTEsMjkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPldlYktpdCBRdWV1ZSBTdGF0dXM8L3RpdGxlPgotPGxp
bmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL3N0eWxlc2hlZXRzL2Nv
bW1vbi5jc3MiIC8+Ci08L2hlYWQ+Ci08Ym9keT4KLTxoMT5XZWJLaXQgUXVldWUgU3RhdHVzPC9o
MT4KLXslIGZvciBxdWV1ZSBpbiBxdWV1ZXMgJX0KLTxkaXYgY2xhc3M9InF1ZXVlX2J1YmJsZSB7
eyBxdWV1ZS5zdGF0dXNfY2xhc3MgfX0iPgotICAgIDxkaXYgY2xhc3M9InF1ZXVlX25hbWUiPgot
ICAgICAgICA8YSBocmVmPSIvcXVldWUtc3RhdHVzL3t7IHF1ZXVlLm5hbWUgfX0iPgotICAgICAg
ICB7eyBxdWV1ZS5kaXNwbGF5X25hbWUgfX0KLSAgICAgICAgPC9hPgotICAgIDwvZGl2PgotICAg
IHslIGlmIHF1ZXVlLmxhc3RfaGVhcmRfZnJvbSAlfQotICAgIDxkaXYgY2xhc3M9Imxhc3RfaGVh
cmRfZnJvbSI+e3sgcXVldWUubGFzdF9oZWFyZF9mcm9tfHRpbWVzaW5jZSB9fSBhZ288L2Rpdj4K
LSAgICB7JSBlbmRpZiAlfQotICAgIDxkaXYgY2xhc3M9InN0YXR1c190ZXh0Ij4KLSAgICAgICAg
U3RhdHVzOiB7eyBxdWV1ZS5zdGF0dXNfdGV4dHxmb3JjZV9lc2NhcGV8dXJsaXplfHdlYmtpdF9s
aW5raWZ5fHNhZmUgfX0KLSAgICA8L2Rpdj4KLSAgICA8ZGl2PgotICAgICAgICB7eyBxdWV1ZS5w
ZW5kaW5nX2l0ZW1zX2NvdW50IH19IHBlbmRpbmcKLSAgICA8L2Rpdj4KLTwvZGl2PgoteyUgZW5k
Zm9yICV9Ci08YSBocmVmPScvYWN0aXZlLWJvdHMnPkxpc3Qgb2YgYWxsIGFjdGl2ZSBib3RzPC9h
Pjxicj4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3Rl
bXBsYXRlcy9yZWxlYXNlbG9jay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL3RlbXBsYXRlcy9yZWxlYXNlbG9jay5odG1sCShyZXZpc2lvbiAyNjExOTkpCisrKyBU
b29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvcmVsZWFzZWxvY2suaHRtbAkobm9uZXhp
c3RlbnQpCkBAIC0xLDYgKzAsMCBAQAotPGZvcm0gbmFtZT0icmVsZWFzZV9sb2NrIiBlbmN0eXBl
PSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9InBvc3QiPgotPHA+UmVsZWFzZSBxdWV1ZSBs
b2NrLjwvcD4KLTxwPk9ubHkgdXNlIHRoaXMgd2hlbiBhIHBhdGNoIGlzIGxvY2tlZCBlcnJvbmVv
dXNseSwgYW5kIHRoZXJlIGlzIG5vIGJvdCBwcm9jZXNzaW5nIGl0LgotUGF0Y2hlcyBhcmUgYWxz
byB1bmxvY2tlZCBhdXRvbWF0aWNhbGx5IGFmdGVyIGEgc2hvcnQgdGltZW91dCAoY3VycmVudGx5
IHNldCB0byB7eyB0aW1lb3V0IH19KSwgc28gdGhpcyBpcyByYXJlbHkgbmVjZXNzYXJ5LjwvcD4K
LVBhdGNoIHRvIHVubG9jazogPGlucHV0IG5hbWU9ImF0dGFjaG1lbnRfaWQiIHBsYWNlaG9sZGVy
PSJwYXRjaCBpZCBpbiBCdWd6aWxsYSI+IGZyb20gPGlucHV0IG5hbWU9InF1ZXVlX25hbWUiIHBs
YWNlaG9sZGVyPSJxdWV1ZSBuYW1lIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iUmVsZWFz
ZSBsb2NrIHRvIHJlLXJ1biI+PC9kaXY+Ci08L2Zvcm0+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBU
b29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvcmVsZWFzZWxvY2suaHRtbApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotdGV4dC9odG1sClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVy
L3RlbXBsYXRlcy9yZWxlYXNlcGF0Y2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9RdWV1ZVN0
YXR1c1NlcnZlci90ZW1wbGF0ZXMvcmVsZWFzZXBhdGNoLmh0bWwJKHJldmlzaW9uIDI2MTE5OSkK
KysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRlcy9yZWxlYXNlcGF0Y2guaHRtbAko
bm9uZXhpc3RlbnQpCkBAIC0xLDMgKzAsMCBAQAotPGZvcm0gbmFtZT0icmVsZWFzZV9wYXRjaCIg
ZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJwb3N0Ij4KLVBhdGNoIHRvIHJl
bGVhc2U6IDxpbnB1dCBuYW1lPSJhdHRhY2htZW50X2lkIj4gZnJvbSA8aW5wdXQgbmFtZT0icXVl
dWVfbmFtZSI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlJlbGVhc2UgbG9ja3MgYW5kIHJl
bW92ZSBmcm9tIHF1ZXVlIj48L2Rpdj4KLTwvZm9ybT4KSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL3RlbXBsYXRlcy9zdGF0dXNidWJibGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9R
dWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvc3RhdHVzYnViYmxlLmh0bWwJKHJldmlzaW9uIDI2
MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRlcy9zdGF0dXNidWJibGUu
aHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDExNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci08c3R5bGU+Ci1ib2R5IHsKLSAgICBmb250LWZhbWlseTogVmVyZGFuYSwg
c2Fucy1zZXJpZjsKLSAgICBtYXJnaW46IDBweDsKLSAgICBwYWRkaW5nOiAwcHg7Ci19Ci0jYnVi
YmxlQ29udGFpbmVyIHsKLSAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci0gICAgd2hpdGUtc3Bh
Y2U6IG5vd3JhcDsKLX0KLS5zdGF0dXMgewotICAgIGRpc3BsYXk6IGJsb2NrOwotICAgIGZsb2F0
OiBsZWZ0OwotICAgIG1hcmdpbjogMXB4OwotICAgIHBhZGRpbmc6IDFweCAycHg7Ci0gICAgLW1v
ei1ib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7Ci0g
ICAgYm9yZGVyLXJhZGl1czogNXB4OwotICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMSwgMSwg
MSwgMC4zKTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKLSAgICBmb250LXNpemU6IDEx
cHg7Ci0gICAgY3Vyc29yOiBwb2ludGVyOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAg
ICBjb2xvcjogYmxhY2s7Ci19Ci0uc3RhdHVzOmhvdmVyIHsKLSAgICBib3JkZXItY29sb3I6IHJn
YmEoMSwgMSwgMSwgMC43KTsKLX0KLS5wYXNzIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEZE
RjVGOwotfQotLmZhaWwgewotICAgIGJhY2tncm91bmQtY29sb3I6ICNFOTgwODA7Ci19Ci0uc3Rh
cnRlZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI0UxRjVGRjsKLX0KLS5wcm92aXNpb25hbC1m
YWlsIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZBRjA1OwotfQotLmVycm9yIHsKLSAgYmFj
a2dyb3VuZC1jb2xvcjogI0UwQjBGRjsKLX0KLS5xdWV1ZV9wb3NpdGlvbiB7Ci0gICAgZm9udC1z
aXplOiA5cHg7Ci19Ci1mb3JtIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLX0KLTwvc3R5bGU+Ci08
c2NyaXB0Pgotd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihlKSB7
Ci0gIGlmIChlLmRhdGEgPT09ICdjb250YWluZXJNZXRyaWNzJykgewotICAgIHZhciBwYXJlbnRD
b250YWluZXIgPSBidWJibGVDb250YWluZXIucGFyZW50RWxlbWVudDsKLSAgICB2YXIgb3JpZ2lu
YWxXaWR0aCA9IHBhcmVudENvbnRhaW5lci5zdHlsZS53aWR0aDsKLSAgICBwYXJlbnRDb250YWlu
ZXIuc3R5bGUud2lkdGggPSAiMTAwMHB4IjsKLSAgICB2YXIgY2xpZW50UmVjdCA9IGJ1YmJsZUNv
bnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICBwYXJlbnRDb250YWluZXIuc3R5
bGUud2lkdGggPSBvcmlnaW5hbFdpZHRoOwotICAgIGUuc291cmNlLnBvc3RNZXNzYWdlKHsnd2lk
dGgnOiBNYXRoLmNlaWwoY2xpZW50UmVjdC53aWR0aCksICdoZWlnaHQnOiBNYXRoLmNlaWwoY2xp
ZW50UmVjdC5oZWlnaHQpfSwgZS5vcmlnaW4pOwotICB9IGVsc2UKLSAgICBjb25zb2xlLmxvZygi
VW5rbm93biBwb3N0TWVzc2FnZTogIiArIGUuZGF0YSk7Ci19LCBmYWxzZSk7Ci08L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iYnViYmxlQ29udGFpbmVyIj4KLSAgeyUgaWYgc2hv
d19mYWlsdXJlX3RvX2FwcGx5ICV9Ci0gIDxhIGNsYXNzPSJzdGF0dXMgZmFpbCIgdGFyZ2V0PSJf
dG9wIgotICAgICAgaHJlZj0iL3BhdGNoL3t7IGF0dGFjaG1lbnRfaWQgfX0iCi0gICAgICB0aXRs
ZT0iTm9uZSBvZiB0aGUgcXVldWVzIGNvdWxkIGFwcGx5IHRoZSBwYXRjaCIKLSAgPgotICAgIHBh
dGNoIGRvZXMgbm90IGFwcGx5IHRvIHRydW5rIG9mIHJlcG9zaXRvcnkKLSAgPC9hPgotICB7JSBl
bHNlICV9Ci0gIHslIGZvciBidWJibGUgaW4gYnViYmxlcyAlfQotICA8YSBjbGFzcz0ic3RhdHVz
IHt7IGJ1YmJsZS5zdGF0ZSB9fSIgdGFyZ2V0PSJfdG9wIgotICAgICAgaHJlZj0iL3BhdGNoL3t7
IGJ1YmJsZS5hdHRhY2htZW50X2lkIH19L3t7IGJ1YmJsZS5xdWV1ZV9uYW1lIH19IgotICB7JSBp
ZiBidWJibGUuZGV0YWlsc19tZXNzYWdlICV9Ci0gICAgICB0aXRsZT0ie3sgYnViYmxlLmRldGFp
bHNfbWVzc2FnZSB9fSIKLSAgeyUgZW5kaWYgJX0KLSAgPgotICAgIHt7IGJ1YmJsZS5uYW1lIH19
Ci0gICAgeyUgaWYgYnViYmxlLnF1ZXVlX3Bvc2l0aW9uICV9Ci0gICAgPHNwYW4gY2xhc3M9InF1
ZXVlX3Bvc2l0aW9uIj4je3sgYnViYmxlLnF1ZXVlX3Bvc2l0aW9uIH19PC9zcGFuPgotICAgIHsl
IGVuZGlmICV9Ci0gIDwvYT4KLSAgeyUgZW5kZm9yICV9Ci0gIHslIGVuZGlmICV9Ci0KLXslIGlm
IHNob3dfc3VibWl0X3RvX2V3cyAlfQotICA8Zm9ybSBuYW1lPSJzdWJtaXRfdG9fZXdzIiBtZXRo
b2Q9IlBPU1QiIGFjdGlvbj0iL3N1Ym1pdC10by1ld3MiPgotICAgIDxpbnB1dCB0eXBlPSJoaWRk
ZW4iIG5hbWU9ImF0dGFjaG1lbnRfaWQiIHZhbHVlPSJ7eyBhdHRhY2htZW50X2lkIH19Ij4KLSAg
ICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJuZXh0X2FjdGlvbiIgdmFsdWU9InJldHVybl90
b19idWJibGVzIj4KLSAgICA8aW5wdXQgY2xhc3M9InN0YXR1cyIgdHlwZT0ic3VibWl0IiB2YWx1
ZT0iU3VibWl0IHRvIG9sZCBFV1MiPgotICA8L2Zvcm0+Ci17JSBlbmRpZiAlfQotCi08c2NyaXB0
PgotLy8gQ29udmVydCBmcm9tIFVUQyBkYXRlcyB0byBsb2NhbC4KLXZhciBidWJibGVzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgic3RhdHVzIikKLWZvciAodmFyIGkgPSAwOyBp
IDwgYnViYmxlcy5sZW5ndGg7ICsraSkgewotICAgIHZhciBidWJibGUgPSBidWJibGVzW2ldOwot
ICAgIGlmIChidWJibGUuaGFzQXR0cmlidXRlKCJ0aXRsZSIpKSB7Ci0gICAgICAgIHZhciBuZXdU
aXRsZSA9IGJ1YmJsZS5nZXRBdHRyaWJ1dGUoInRpdGxlIikucmVwbGFjZSgvXFtcWyguKylcXVxd
LywgZnVuY3Rpb24obWF0Y2gsIGlzb0RhdGVTdHJpbmcpIHsKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgRGF0ZShpc29EYXRlU3RyaW5nKS50b1N0cmluZygpOwotICAgICAgICB9KTsKLSAgICAgICAg
YnViYmxlLnNldEF0dHJpYnV0ZSgidGl0bGUiLCBuZXdUaXRsZSk7Ci0gICAgfQotfQotPC9zY3Jp
cHQ+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2Vy
dmVyL3RlbXBsYXRlcy9zdWJtaXR0b2V3cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVl
U3RhdHVzU2VydmVyL3RlbXBsYXRlcy9zdWJtaXR0b2V3cy5odG1sCShyZXZpc2lvbiAyNjExOTkp
CisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvc3VibWl0dG9ld3MuaHRtbAko
bm9uZXhpc3RlbnQpCkBAIC0xLDMgKzAsMCBAQAotPGZvcm0gbmFtZT0ic3VibWl0X3RvX2V3cyIg
bWV0aG9kPSJQT1NUIj4KLUF0dGFjaG1lbnQgaWQgb2YgcGF0Y2ggdG8gc3VibWl0OiA8aW5wdXQg
bmFtZT0iYXR0YWNobWVudF9pZCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCBm
b3IgRVdTIFByb2Nlc3NpbmciPgotPC9mb3JtPgpJbmRleDogVG9vbHMvUXVldWVTdGF0dXNTZXJ2
ZXIvdGVtcGxhdGVzL3VwZGF0ZXN0YXR1cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVl
U3RhdHVzU2VydmVyL3RlbXBsYXRlcy91cGRhdGVzdGF0dXMuaHRtbAkocmV2aXNpb24gMjYxMTk5
KQorKysgVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvdGVtcGxhdGVzL3VwZGF0ZXN0YXR1cy5odG1s
CShub25leGlzdGVudCkKQEAgLTEsMjEgKzAsMCBAQAotPGZvcm0gbmFtZT0idXBkYXRlX3N0YXR1
cyIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJwb3N0Ij4KLVVwZGF0ZSBz
dGF0dXMgZm9yIGEgcXVldWU6IDxpbnB1dCBuYW1lPSJxdWV1ZV9uYW1lIj4KLSA8ZGl2PgotICAg
ICBCb3QgSWQ6Ci0gICAgPGlucHV0IG5hbWU9ImJvdF9pZCI+Ci0gPC9kaXY+Ci0gPGRpdj4KLSAg
ICAgQWN0aXZlIEJ1ZyBJZDoKLSAgICA8aW5wdXQgbmFtZT0iYnVnX2lkIj4KLSA8L2Rpdj4KLSA8
ZGl2PgotICAgICBBY3RpdmUgUGF0Y2ggSWQ6Ci0gICAgPGlucHV0IG5hbWU9InBhdGNoX2lkIj4K
LSA8L2Rpdj4KLSAgPGRpdj4KLSAgICAgIFN0YXR1cyBUZXh0Ojxicj4KLSAgICAgIDx0ZXh0YXJl
YSBuYW1lPSJzdGF0dXMiIHJvd3M9IjMiIGNvbHM9IjYwIj48L3RleHRhcmVhPgotICA8L2Rpdj4K
LSAgPGRpdj5SZXN1bHRzIGZpbGU6IDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJyZXN1bHRzX2Zp
bGUiPjwvZGl2PgotICA8ZGl2PjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJBZGQgU3RhdHVz
Ij48L2Rpdj4KLTwvZm9ybT4KSW5kZXg6IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRl
cy91cGRhdGVzdm5yZXZpc2lvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL3RlbXBsYXRlcy91cGRhdGVzdm5yZXZpc2lvbi5odG1sCShyZXZpc2lvbiAyNjExOTkp
CisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvdXBkYXRlc3ZucmV2aXNpb24u
aHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDggKzAsMCBAQAotPGZvcm0gbmFtZT0idXBkYXRlX3N2
bl9yZXZpc2lvbiIgbWV0aG9kPSJwb3N0Ij4KLVVwZGF0ZSBhbiBTVk4gcmV2aXNpb246IDxpbnB1
dCBuYW1lPSJudW1iZXIiPgotICA8ZGl2PgotICAgICBCcm9rZW4gQm90OgotICAgIDxpbnB1dCBu
YW1lPSJicm9rZW5fYm90Ij4KLSAgPC9kaXY+Ci0gIDxkaXY+PGlucHV0IHR5cGU9InN1Ym1pdCIg
dmFsdWU9IlVwZGF0ZSI+PC9kaXY+Ci08L2Zvcm0+CkluZGV4OiBUb29scy9RdWV1ZVN0YXR1c1Nl
cnZlci90ZW1wbGF0ZXMvdXBkYXRld29ya2l0ZW1zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
UXVldWVTdGF0dXNTZXJ2ZXIvdGVtcGxhdGVzL3VwZGF0ZXdvcmtpdGVtcy5odG1sCShyZXZpc2lv
biAyNjExOTkpCisrKyBUb29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvdXBkYXRld29y
a2l0ZW1zLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw4ICswLDAgQEAKLTxmb3JtIG5hbWU9InVw
ZGF0ZV93b3JrX2l0ZW1zIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9InBv
c3QiPgotVXBkYXRlIHdvcmsgaXRlbXMgZm9yIGEgcXVldWU6IDxpbnB1dCBuYW1lPSJxdWV1ZV9u
YW1lIj4KLSA8ZGl2PgotICAgICBXb3JrIGl0ZW1zOiA8aW5wdXQgbmFtZT0id29ya19pdGVtcyI+
Ci0gICAgIEhpZ2ggcHJpb3JpdHkgd29yayBpdGVtczogPGlucHV0IG5hbWU9ImhpZ2hfcHJpb3Jp
dHlfd29ya19pdGVtcyI+Ci0gPC9kaXY+Ci0gPGRpdj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1
ZT0iVXBkYXRlIFdvcmsgSXRlbXMiPjwvZGl2PgotPC9mb3JtPgpJbmRleDogVG9vbHMvUXVldWVT
dGF0dXNTZXJ2ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIJKHJldmlz
aW9uIDI2MTE5OSkKKysrIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyCShub25leGlzdGVudCkKClBy
b3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOmlnbm9yZQojIyAtMSArMCwwICMjCi0qLnB5YwpJbmRleDogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weQkocmV2aXNpb24gMjYxMTk5KQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yOTUsNyArMjk1LDYgQEAgY2xhc3MgQ2hlY2tQYXRjaFJlbGV2YW5jZShidWlsZHN0ZXAuQnVp
bAogCiAgICAgd2Via2l0cHlfcGF0aHMgPSBbCiAgICAgICAgICdUb29scy9TY3JpcHRzL3dlYmtp
dHB5LycsCi0gICAgICAgICdUb29scy9RdWV1ZVN0YXR1c1NlcnZlci8nLAogICAgIF0KIAogICAg
IGdyb3VwX3RvX3BhdGhzX21hcHBpbmcgPSB7CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXIucHkJKHJldmlzaW9uIDI2MTE5OSkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXIucHkJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDEzICsyOSw5IEBACiAjCiAjIFRoaXMgdGhlIGNsaWVudCBkZXNpZ25l
ZCB0byB0YWxrIHRvIFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyLgogCi1pbXBvcnQgbG9nZ2luZwog
aW1wb3J0IHN5cwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcudXJscyBpbXBvcnQgc3Rh
dHVzc2VydmVyX2RlZmF1bHRfaG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0Lm5ldHdvcmt0
cmFuc2FjdGlvbiBpbXBvcnQgTmV0d29ya1RyYW5zYWN0aW9uCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCi1mcm9tIHdlYmtpdHB5LnRo
aXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAogCiBpZiBzeXMudmVy
c2lvbl9pbmZvID4gKDMsIDApOgogICAgIGZyb20gdXJsbGliLmVycm9yIGltcG9ydCBIVFRQRXJy
b3IKQEAgLTQzLDE2ICszOSwxMCBAQCBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgogZWxz
ZToKICAgICBmcm9tIHVybGxpYjIgaW1wb3J0IEhUVFBFcnJvciwgUmVxdWVzdCwgdXJsb3Blbgog
Ci1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KIAogY2xhc3MgU3RhdHVzU2Vy
dmVyOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PXN0YXR1c3NlcnZlcl9kZWZhdWx0X2hv
c3QsIGJyb3dzZXI9Tm9uZSwgYm90X2lkPU5vbmUpOgogICAgICAgICBzZWxmLnNldF9ob3N0KGhv
c3QpCi0gICAgICAgIHNlbGYuX2FwaV9rZXkgPSAnJwotICAgICAgICBmcm9tIHdlYmtpdHB5LnRo
aXJkcGFydHkuYXV0b2luc3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIKLSAgICAgICAg
c2VsZi5fYnJvd3NlciA9IGJyb3dzZXIgb3IgQnJvd3NlcigpCi0gICAgICAgIHNlbGYuX2Jyb3dz
ZXIuc2V0X2hhbmRsZV9yb2JvdHMoRmFsc2UpCiAgICAgICAgIHNlbGYuc2V0X2JvdF9pZChib3Rf
aWQpCiAKICAgICBkZWYgc2V0X2hvc3Qoc2VsZiwgaG9zdCk6CkBAIC02MywxMjggKzUzLDMxIEBA
IGNsYXNzIFN0YXR1c1NlcnZlcjoKICAgICAgICAgc2VsZi5ib3RfaWQgPSBib3RfaWQKIAogICAg
IGRlZiByZXN1bHRzX3VybF9mb3Jfc3RhdHVzKHNlbGYsIHN0YXR1c19pZCk6Ci0gICAgICAgIHJl
dHVybiAne30vcmVzdWx0cy97fScuZm9ybWF0KHNlbGYudXJsLCBzdGF0dXNfaWQpCi0KLSAgICBk
ZWYgX2FkZF9wYXRjaChzZWxmLCBwYXRjaCk6Ci0gICAgICAgIGlmIG5vdCBwYXRjaDoKLSAgICAg
ICAgICAgIHJldHVybgotICAgICAgICBpZiBwYXRjaC5idWdfaWQoKToKLSAgICAgICAgICAgIHNl
bGYuX2Jyb3dzZXJbImJ1Z19pZCJdID0gdW5pY29kZShwYXRjaC5idWdfaWQoKSkKLSAgICAgICAg
aWYgcGF0Y2guaWQoKToKLSAgICAgICAgICAgIHNlbGYuX2Jyb3dzZXJbInBhdGNoX2lkIl0gPSB1
bmljb2RlKHBhdGNoLmlkKCkpCi0KLSAgICBkZWYgX2FkZF9yZXN1bHRzX2ZpbGUoc2VsZiwgcmVz
dWx0c19maWxlKToKLSAgICAgICAgaWYgbm90IHJlc3VsdHNfZmlsZToKLSAgICAgICAgICAgIHJl
dHVybgotICAgICAgICBzZWxmLl9icm93c2VyLmFkZF9maWxlKHJlc3VsdHNfZmlsZSwgInRleHQv
cGxhaW4iLCAicmVzdWx0cy50eHQiLCAncmVzdWx0c19maWxlJykKLQotICAgICMgNTAwIGlzIHRo
ZSBBcHBFbmdpbmUgbGltaXQgZm9yIFRFWFQgZmllbGRzICh3aGljaCBtb3N0IG9mIG91ciBmaWVs
ZHMgYXJlKS4KLSAgICAjIEV4Y2VlZGluZyB0aGUgbGltaXQgd2lsbCByZXN1bHQgaW4gYSA1MDAg
ZXJyb3IgZnJvbSB0aGUgc2VydmVyLgotICAgIGRlZiBfc2V0X2ZpZWxkKHNlbGYsIGZpZWxkX25h
bWUsIHZhbHVlLCBsaW1pdD01MDApOgotICAgICAgICBpZiBsZW4odmFsdWUpID4gbGltaXQ6Ci0g
ICAgICAgICAgICBfbG9nLndhcm4oIkF0dGVtcHRlZCB0byBzZXQgJXMgdG8gdmFsdWUgZXhjZWVk
aW5nICVzIGNoYXJhY3RlcnMsIHRydW5jYXRpbmcuIiAlIChmaWVsZF9uYW1lLCBsaW1pdCkpCi0g
ICAgICAgIHNlbGYuX2Jyb3dzZXJbZmllbGRfbmFtZV0gPSB2YWx1ZVs6bGltaXRdCi0KLSAgICBk
ZWYgX3Bvc3Rfc3RhdHVzX3RvX3NlcnZlcihzZWxmLCBxdWV1ZV9uYW1lLCBzdGF0dXMsIHBhdGNo
LCByZXN1bHRzX2ZpbGUpOgotICAgICAgICBpZiByZXN1bHRzX2ZpbGU6Ci0gICAgICAgICAgICAj
IFdlIG1pZ2h0IG5lZWQgdG8gcmUtd2luZCB0aGUgZmlsZSBpZiB3ZSd2ZSBhbHJlYWR5IHRyaWVk
IHRvIHBvc3QgaXQuCi0gICAgICAgICAgICByZXN1bHRzX2ZpbGUuc2VlaygwKQotCi0gICAgICAg
IHVwZGF0ZV9zdGF0dXNfdXJsID0gJ3t9L3VwZGF0ZS1zdGF0dXMnLmZvcm1hdChzZWxmLnVybCkK
LSAgICAgICAgc2VsZi5fYnJvd3Nlci5vcGVuKHVwZGF0ZV9zdGF0dXNfdXJsKQotICAgICAgICBz
ZWxmLl9icm93c2VyLnNlbGVjdF9mb3JtKG5hbWU9InVwZGF0ZV9zdGF0dXMiKQotICAgICAgICBz
ZWxmLl9icm93c2VyWyJxdWV1ZV9uYW1lIl0gPSBxdWV1ZV9uYW1lCi0gICAgICAgIGlmIHNlbGYu
Ym90X2lkOgotICAgICAgICAgICAgc2VsZi5fYnJvd3NlclsiYm90X2lkIl0gPSBzZWxmLmJvdF9p
ZAotICAgICAgICBzZWxmLl9hZGRfcGF0Y2gocGF0Y2gpCi0gICAgICAgIHNlbGYuX3NldF9maWVs
ZCgic3RhdHVzIiwgc3RhdHVzLCBsaW1pdD01MDApCi0gICAgICAgIHNlbGYuX2FkZF9yZXN1bHRz
X2ZpbGUocmVzdWx0c19maWxlKQotICAgICAgICByZXR1cm4gc2VsZi5fYnJvd3Nlci5zdWJtaXQo
KS5yZWFkKCkgICMgVGhpcyBpcyB0aGUgaWQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgc3RhdHVzIG9i
amVjdC4KLQotICAgIGRlZiBfcG9zdF9zdm5fcmV2aXNpb25fdG9fc2VydmVyKHNlbGYsIHN2bl9y
ZXZpc2lvbl9udW1iZXIsIGJyb2tlbl9ib3QpOgotICAgICAgICB1cGRhdGVfc3ZuX3JldmlzaW9u
X3VybCA9ICd7fS91cGRhdGUtc3ZuLXJldmlzaW9uJy5mb3JtYXQoc2VsZi51cmwpCi0gICAgICAg
IHNlbGYuX2Jyb3dzZXIub3Blbih1cGRhdGVfc3ZuX3JldmlzaW9uX3VybCkKLSAgICAgICAgc2Vs
Zi5fYnJvd3Nlci5zZWxlY3RfZm9ybShuYW1lPSJ1cGRhdGVfc3ZuX3JldmlzaW9uIikKLSAgICAg
ICAgc2VsZi5fYnJvd3NlclsibnVtYmVyIl0gPSB1bmljb2RlKHN2bl9yZXZpc2lvbl9udW1iZXIp
Ci0gICAgICAgIHNlbGYuX2Jyb3dzZXJbImJyb2tlbl9ib3QiXSA9IGJyb2tlbl9ib3QKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX2Jyb3dzZXIuc3VibWl0KCkucmVhZCgpCi0KLSAgICBkZWYgX3Bvc3Rf
d29ya19pdGVtc190b19zZXJ2ZXIoc2VsZiwgcXVldWVfbmFtZSwgaGlnaF9wcmlvcml0eV93b3Jr
X2l0ZW1zLCB3b3JrX2l0ZW1zKToKLSAgICAgICAgdXBkYXRlX3dvcmtfaXRlbXNfdXJsID0gJ3t9
L3VwZGF0ZS13b3JrLWl0ZW1zJy5mb3JtYXQoc2VsZi51cmwpCi0gICAgICAgIHNlbGYuX2Jyb3dz
ZXIub3Blbih1cGRhdGVfd29ya19pdGVtc191cmwpCi0gICAgICAgIHNlbGYuX2Jyb3dzZXIuc2Vs
ZWN0X2Zvcm0obmFtZT0idXBkYXRlX3dvcmtfaXRlbXMiKQotICAgICAgICBzZWxmLl9icm93c2Vy
WyJxdWV1ZV9uYW1lIl0gPSBxdWV1ZV9uYW1lCi0gICAgICAgIHdvcmtfaXRlbXMgPSBtYXAodW5p
Y29kZSwgd29ya19pdGVtcykgICMgLmpvaW4gZXhwZWN0cyBzdHJpbmdzCi0gICAgICAgIHNlbGYu
X2Jyb3dzZXJbIndvcmtfaXRlbXMiXSA9ICIgIi5qb2luKHdvcmtfaXRlbXMpCi0gICAgICAgIGhp
Z2hfcHJpb3JpdHlfd29ya19pdGVtcyA9IG1hcCh1bmljb2RlLCBoaWdoX3ByaW9yaXR5X3dvcmtf
aXRlbXMpCi0gICAgICAgIHNlbGYuX2Jyb3dzZXJbImhpZ2hfcHJpb3JpdHlfd29ya19pdGVtcyJd
ID0gIiAiLmpvaW4oaGlnaF9wcmlvcml0eV93b3JrX2l0ZW1zKQotICAgICAgICByZXR1cm4gc2Vs
Zi5fYnJvd3Nlci5zdWJtaXQoKS5yZWFkKCkKLQotICAgIGRlZiBfcG9zdF93b3JrX2l0ZW1fdG9f
ZXdzKHNlbGYsIGF0dGFjaG1lbnRfaWQpOgotICAgICAgICBzdWJtaXRfdG9fZXdzX3VybCA9ICd7
fS9zdWJtaXQtdG8tZXdzJy5mb3JtYXQoc2VsZi51cmwpCi0gICAgICAgIHNlbGYuX2Jyb3dzZXIu
b3BlbihzdWJtaXRfdG9fZXdzX3VybCkKLSAgICAgICAgc2VsZi5fYnJvd3Nlci5zZWxlY3RfZm9y
bShuYW1lPSJzdWJtaXRfdG9fZXdzIikKLSAgICAgICAgc2VsZi5fYnJvd3NlclsiYXR0YWNobWVu
dF9pZCJdID0gdW5pY29kZShhdHRhY2htZW50X2lkKQotICAgICAgICBzZWxmLl9icm93c2VyLnN1
Ym1pdCgpCisgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgc3VibWl0X3RvX2V3cyhzZWxm
LCBhdHRhY2htZW50X2lkKToKLSAgICAgICAgX2xvZy5pbmZvKCJTdWJtaXR0aW5nIGF0dGFjaG1l
bnQgJXMgdG8gb2xkIEVXUyBxdWV1ZXMiICUgYXR0YWNobWVudF9pZCkKLSAgICAgICAgcmV0dXJu
IE5ldHdvcmtUcmFuc2FjdGlvbigpLnJ1bihsYW1iZGE6IHNlbGYuX3Bvc3Rfd29ya19pdGVtX3Rv
X2V3cyhhdHRhY2htZW50X2lkKSkKKyAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBuZXh0
X3dvcmtfaXRlbShzZWxmLCBxdWV1ZV9uYW1lKToKLSAgICAgICAgX2xvZy5pbmZvKCJGZXRjaGlu
ZyBuZXh0IHdvcmsgaXRlbSBmb3IgJXMiICUgcXVldWVfbmFtZSkKLSAgICAgICAgbmV4dF9wYXRj
aF91cmwgPSAne30vbmV4dC1wYXRjaC97fScuZm9ybWF0KHNlbGYudXJsLCBxdWV1ZV9uYW1lKQot
ICAgICAgICByZXR1cm4gc2VsZi5fZmV0Y2hfdXJsKG5leHRfcGF0Y2hfdXJsKQotCi0gICAgZGVm
IF9wb3N0X3JlbGVhc2Vfd29ya19pdGVtKHNlbGYsIHF1ZXVlX25hbWUsIHBhdGNoKToKLSAgICAg
ICAgcmVsZWFzZV9wYXRjaF91cmwgPSAne30vcmVsZWFzZS1wYXRjaCcuZm9ybWF0KHNlbGYudXJs
KQotICAgICAgICBzZWxmLl9icm93c2VyLm9wZW4ocmVsZWFzZV9wYXRjaF91cmwpCi0gICAgICAg
IHNlbGYuX2Jyb3dzZXIuc2VsZWN0X2Zvcm0obmFtZT0icmVsZWFzZV9wYXRjaCIpCi0gICAgICAg
IHNlbGYuX2Jyb3dzZXJbInF1ZXVlX25hbWUiXSA9IHF1ZXVlX25hbWUKLSAgICAgICAgc2VsZi5f
YnJvd3NlclsiYXR0YWNobWVudF9pZCJdID0gdW5pY29kZShwYXRjaC5pZCgpKQotICAgICAgICBz
ZWxmLl9icm93c2VyLnN1Ym1pdCgpCisgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgcmVs
ZWFzZV93b3JrX2l0ZW0oc2VsZiwgcXVldWVfbmFtZSwgcGF0Y2gpOgotICAgICAgICBfbG9nLmlu
Zm8oIlJlbGVhc2luZyB3b3JrIGl0ZW0gJXMgZnJvbSAlcyIgJSAocGF0Y2guaWQoKSwgcXVldWVf
bmFtZSkpCi0gICAgICAgIHJldHVybiBOZXR3b3JrVHJhbnNhY3Rpb24oY29udmVydF80MDRfdG9f
Tm9uZT1UcnVlKS5ydW4obGFtYmRhOiBzZWxmLl9wb3N0X3JlbGVhc2Vfd29ya19pdGVtKHF1ZXVl
X25hbWUsIHBhdGNoKSkKLQotICAgIGRlZiBfcG9zdF9yZWxlYXNlX2xvY2soc2VsZiwgcXVldWVf
bmFtZSwgcGF0Y2gpOgotICAgICAgICByZWxlYXNlX2xvY2tfdXJsID0gJ3t9L3JlbGVhc2UtbG9j
aycuZm9ybWF0KHNlbGYudXJsKQotICAgICAgICBzZWxmLl9icm93c2VyLm9wZW4ocmVsZWFzZV9s
b2NrX3VybCkKLSAgICAgICAgc2VsZi5fYnJvd3Nlci5zZWxlY3RfZm9ybShuYW1lPSJyZWxlYXNl
X2xvY2siKQotICAgICAgICBzZWxmLl9icm93c2VyWyJxdWV1ZV9uYW1lIl0gPSBxdWV1ZV9uYW1l
Ci0gICAgICAgIHNlbGYuX2Jyb3dzZXJbImF0dGFjaG1lbnRfaWQiXSA9IHVuaWNvZGUocGF0Y2gu
aWQoKSkKLSAgICAgICAgc2VsZi5fYnJvd3Nlci5zdWJtaXQoKQorICAgICAgICByZXR1cm4gTm9u
ZQogCiAgICAgZGVmIHJlbGVhc2VfbG9jayhzZWxmLCBxdWV1ZV9uYW1lLCBwYXRjaCk6Ci0gICAg
ICAgIF9sb2cuaW5mbygiUmVsZWFzaW5nIGxvY2sgZm9yIHdvcmsgaXRlbSAlcyBmcm9tICVzIiAl
IChwYXRjaC5pZCgpLCBxdWV1ZV9uYW1lKSkKLSAgICAgICAgcmV0dXJuIE5ldHdvcmtUcmFuc2Fj
dGlvbihjb252ZXJ0XzQwNF90b19Ob25lPVRydWUpLnJ1bihsYW1iZGE6IHNlbGYuX3Bvc3RfcmVs
ZWFzZV9sb2NrKHF1ZXVlX25hbWUsIHBhdGNoKSkKKyAgICAgICAgcmV0dXJuIE5vbmUKIAogICAg
IGRlZiB1cGRhdGVfd29ya19pdGVtcyhzZWxmLCBxdWV1ZV9uYW1lLCBoaWdoX3ByaW9yaXR5X3dv
cmtfaXRlbXMsIHdvcmtfaXRlbXMpOgotICAgICAgICBfbG9nLmluZm8oIlJlY29yZGluZyB3b3Jr
IGl0ZW1zOiAlcyBmb3IgJXMiICUgKGhpZ2hfcHJpb3JpdHlfd29ya19pdGVtcyArIHdvcmtfaXRl
bXMsIHF1ZXVlX25hbWUpKQotICAgICAgICByZXR1cm4gTmV0d29ya1RyYW5zYWN0aW9uKCkucnVu
KGxhbWJkYTogc2VsZi5fcG9zdF93b3JrX2l0ZW1zX3RvX3NlcnZlcihxdWV1ZV9uYW1lLCBoaWdo
X3ByaW9yaXR5X3dvcmtfaXRlbXMsIHdvcmtfaXRlbXMpKQorICAgICAgICByZXR1cm4gTm9uZQog
CiAgICAgZGVmIHVwZGF0ZV9zdGF0dXMoc2VsZiwgcXVldWVfbmFtZSwgc3RhdHVzLCBwYXRjaD1O
b25lLCByZXN1bHRzX2ZpbGU9Tm9uZSk6Ci0gICAgICAgIF9sb2cuaW5mbyhzdGF0dXMpCi0gICAg
ICAgIHJldHVybiBOZXR3b3JrVHJhbnNhY3Rpb24oKS5ydW4obGFtYmRhOiBzZWxmLl9wb3N0X3N0
YXR1c190b19zZXJ2ZXIocXVldWVfbmFtZSwgc3RhdHVzLCBwYXRjaCwgcmVzdWx0c19maWxlKSkK
KyAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiB1cGRhdGVfc3ZuX3JldmlzaW9uKHNlbGYs
IHN2bl9yZXZpc2lvbl9udW1iZXIsIGJyb2tlbl9ib3QpOgotICAgICAgICBfbG9nLmluZm8oIlNW
TiByZXZpc2lvbjogJXMgYnJva2UgJXMiICUgKHN2bl9yZXZpc2lvbl9udW1iZXIsIGJyb2tlbl9i
b3QpKQotICAgICAgICByZXR1cm4gTmV0d29ya1RyYW5zYWN0aW9uKCkucnVuKGxhbWJkYTogc2Vs
Zi5fcG9zdF9zdm5fcmV2aXNpb25fdG9fc2VydmVyKHN2bl9yZXZpc2lvbl9udW1iZXIsIGJyb2tl
bl9ib3QpKQotCi0gICAgZGVmIF9mZXRjaF91cmwoc2VsZiwgdXJsKToKLSAgICAgICAgIyBGSVhN
RTogVGhpcyBzaG91bGQgdXNlIE5ldHdvcmtUcmFuc2FjdGlvbidzIDQwNCBoYW5kbGluZyBpbnN0
ZWFkLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gdXJsb3Blbih1cmwsIHRpbWVv
dXQ9MzAwKS5yZWFkKCkKLSAgICAgICAgZXhjZXB0IEhUVFBFcnJvciBhcyBlOgotICAgICAgICAg
ICAgaWYgZS5jb2RlID09IDQwNDoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAg
ICAgICAgcmFpc2UgZQorICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIHBhdGNoX3N0YXR1
cyhzZWxmLCBxdWV1ZV9uYW1lLCBwYXRjaF9pZCk6Ci0gICAgICAgIHBhdGNoX3N0YXR1c191cmwg
PSAne30vcGF0Y2gtc3RhdHVzL3t9L3t9Jy5mb3JtYXQoc2VsZi51cmwsIHF1ZXVlX25hbWUsIHBh
dGNoX2lkKQotICAgICAgICByZXR1cm4gc2VsZi5fZmV0Y2hfdXJsKHBhdGNoX3N0YXR1c191cmwp
CisgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgc3ZuX3JldmlzaW9uKHNlbGYsIHN2bl9y
ZXZpc2lvbl9udW1iZXIpOgotICAgICAgICBzdm5fcmV2aXNpb25fdXJsID0gJ3t9L3N2bi1yZXZp
c2lvbi97fScuZm9ybWF0KHNlbGYudXJsLCBzdm5fcmV2aXNpb25fbnVtYmVyKQotICAgICAgICBy
ZXR1cm4gc2VsZi5fZmV0Y2hfdXJsKHN2bl9yZXZpc2lvbl91cmwpCisgICAgICAgIHJldHVybiBO
b25lCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVy
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9zdGF0dXNzZXJ2ZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2MTE5OSkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXJfdW5pdHRlc3QucHkJKG5v
bmV4aXN0ZW50KQpAQCAtMSw0MyArMCwwIEBACi0jIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHVu
aXR0ZXN0Ci0KLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5zdGF0dXNzZXJ2ZXIgaW1wb3J0IFN0
YXR1c1NlcnZlcgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1w
b3J0IE91dHB1dENhcHR1cmVUZXN0Q2FzZUJhc2UKLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC53
ZWJfbW9jayBpbXBvcnQgTW9ja0Jyb3dzZXIKLQotCi1jbGFzcyBTdGF0dXNTZXJ2ZXJUZXN0KE91
dHB1dENhcHR1cmVUZXN0Q2FzZUJhc2UpOgotICAgIGRlZiB0ZXN0X3VybF9mb3JfaXNzdWUoc2Vs
Zik6Ci0gICAgICAgIG1vY2tfYnJvd3NlciA9IE1vY2tCcm93c2VyKCkKLSAgICAgICAgc3RhdHVz
X3NlcnZlciA9IFN0YXR1c1NlcnZlcihicm93c2VyPW1vY2tfYnJvd3NlciwgYm90X2lkPScxMjMn
KQotICAgICAgICBzdGF0dXNfc2VydmVyLnVwZGF0ZV9zdGF0dXMoJ3F1ZXVlIG5hbWUnLCAndGhl
IHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3F1ZXVlIG5hbWUnLCBtb2NrX2Jy
b3dzZXIucGFyYW1zWydxdWV1ZV9uYW1lJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Ro
ZSBzdGF0dXMnLCBtb2NrX2Jyb3dzZXIucGFyYW1zWydzdGF0dXMnXSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnMTIzJywgbW9ja19icm93c2VyLnBhcmFtc1snYm90X2lkJ10pCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQkocmV2aXNpb24gMjYxMTk5KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAjIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUsIEluYy4KICMgQ29weXJpZ2h0IChDKSAy
MDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKLSMgQ29weXJpZ2h0IChD
KSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTcwLDIwICs3MCw2IEBAIGRlZiBtYWluKCk6CiAgICAgdGVz
dGVyLnNraXAoKCd3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKSwg
J2FyZSByZWFsbHksIHJlYWxseSwgc2xvdycsIDMxODE4KQogICAgIGlmIHN5cy5wbGF0Zm9ybS5z
dGFydHN3aXRoKCd3aW4nKToKICAgICAgICAgdGVzdGVyLnNraXAoKCd3ZWJraXRweS5jb21tb24u
Y2hlY2tvdXQnLCAnd2Via2l0cHkuY29tbW9uLmNvbmZpZycsICd3ZWJraXRweS50b29sJyksICdm
YWlsIGhvcnJpYmx5IG9uIHdpbjMyJywgNTQ1MjYpCi0KLSAgICAjIFRoaXMgb25seSBuZWVkcyB0
byBydW4gb24gVW5peCwgc28gZG9uJ3Qgd29ycnkgYWJvdXQgd2luMzIgZm9yIG5vdy4KLSAgICBh
cHBlbmdpbmVfc2RrX3BhdGggPSAnL3Vzci9sb2NhbC9nb29nbGVfYXBwZW5naW5lJwotICAgIGlm
IG9zLnBhdGguZXhpc3RzKGFwcGVuZ2luZV9zZGtfcGF0aCk6Ci0gICAgICAgIGlmIG5vdCBhcHBl
bmdpbmVfc2RrX3BhdGggaW4gc3lzLnBhdGg6Ci0gICAgICAgICAgICBzeXMucGF0aC5hcHBlbmQo
YXBwZW5naW5lX3Nka19wYXRoKQotICAgICAgICBpbXBvcnQgZGV2X2FwcHNlcnZlcgotICAgICAg
ICBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZGlzdCBpbXBvcnQgdXNlX2xpYnJhcnkKLSAgICAgICAg
dXNlX2xpYnJhcnkoJ2RqYW5nbycsICcxLjInKQotICAgICAgICBkZXZfYXBwc2VydmVyLmZpeF9z
eXNfcGF0aCgpCi0gICAgICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9y
b290LCAnVG9vbHMnLCAnUXVldWVTdGF0dXNTZXJ2ZXInKSkKLSAgICBlbHNlOgotICAgICAgICBf
bG9nLmluZm8oJ1NraXBwaW5nIFF1ZXVlU3RhdHVzU2VydmVyIHRlc3RzOyB0aGUgR29vZ2xlIEFw
cEVuZ2luZSBQeXRob24gU0RLIGlzIG5vdCBpbnN0YWxsZWQuJykKLQogICAgIHJldHVybiBub3Qg
dGVzdGVyLnJ1bigpCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2NoZWNrcGF0Y2hyZWxldmFuY2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2NoZWNrcGF0Y2hyZWxldmFuY2UucHkJKHJldmlzaW9uIDI2MTE5OSkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3BhdGNocmVsZXZhbmNl
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw2IEBAIGNsYXNzIENoZWNrUGF0Y2hSZWxl
dmFuY2UoQWJzdHJhY3RTdGVwKToKIAogICAgIHdlYmtpdHB5X3BhdGhzID0gWwogICAgICAgICAi
VG9vbHMvU2NyaXB0cy93ZWJraXRweS8iLAotICAgICAgICAiVG9vbHMvUXVldWVTdGF0dXNTZXJ2
ZXIvIiwKICAgICBdCiAKICAgICBncm91cF90b19wYXRoc19tYXBwaW5nID0gewo=
</data>
<flag name="review"
          id="414010"
          type_id="1"
          status="+"
          setter="jbedard"
    />
          </attachment>
      

    </bug>

</bugzilla>