<?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>31594</bug_id>
          
          <creation_ts>2009-11-17 11:53:15 -0800</creation_ts>
          <short_desc>bugzilla.py should have an Attachment object instead of passing around dictionaries</short_desc>
          <delta_ts>2010-01-12 04:04:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>164288</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-17 11:53:15 -0800</bug_when>
    <thetext>bugzilla.py should have an Attachment object instead of passing around dictionaries

patch/attachment dictionaries were a great way to get started, but now we really should encapsulate more of the patch/attachment logic into a single class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179770</commentid>
    <comment_count>1</comment_count>
      <attachid>46358</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-12 03:22:39 -0800</bug_when>
    <thetext>Created attachment 46358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179778</commentid>
    <comment_count>2</comment_count>
      <attachid>46358</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-12 03:51:24 -0800</bug_when>
    <thetext>Comment on attachment 46358
Patch

Ok!!!  Please address the verbal comments.  I&apos;m ready for a big explosion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179780</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-12 04:04:10 -0800</bug_when>
    <thetext>Committed r53133: &lt;http://trac.webkit.org/changeset/53133&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46358</attachid>
            <date>2010-01-12 03:22:39 -0800</date>
            <delta_ts>2010-01-12 03:51:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31594-20100112032238.patch</filename>
            <type>text/plain</type>
            <size>57722</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA4NTdhNTY5Li5jOWEwOGQ5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTAtMDEt
MTIgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGJ1Z3ppbGxhLnB5IHNob3VsZCBoYXZlIGFuIEF0
dGFjaG1lbnQgb2JqZWN0IGluc3RlYWQgb2YgcGFzc2luZyBhcm91bmQgZGljdGlvbmFyaWVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTU5NAorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9idWd6aWxsYS5weToKKyAgICAgICAgIC0gQWRkIGEg
bmV3IEF0dGFjaG1lbnQgY2xhc3MsIHdpdGggYWNjZXNzb3IgbWV0aG9kcyBmb3IgYWxsIHRoZSBu
ZWNlc3NhcnkgcHJvcGVydGllcy4KKyAgICAgICAgIC0gVXBkYXRlIEJ1ZyB0byBjYXJyeSBhIHBv
aW50ZXIgYmFjayB0byBidWd6aWxsYSAoYXR0YWNobWVudHMgbmVlZCB0byBhY2Nlc3MgQnVnemls
bGEgZm9yIGNvbW1pdHRlciB2YWxpZGF0aW9uIGFuZCB1cmwoKSkKKyAgICAgICAgIC0gTW92ZSBy
ZXZpZXdlZF9wYXRjaGVzIGFuZCBjb21taXRfcXVldWVkX3BhdGNoZXMgb3V0IG9mIEJ1Z3ppbGxh
IGN1c3RvbSBtZXRob2RzIGFuZCBvbnRvIEJ1ZworICAgICAgICAgLSBNb3ZlIGNvbW1pdHRlciB2
YWxpZGF0aW9uIGxvZ2ljIGludG8gaXRzIG93biBjbGFzcy4KKyAgICAgICAgIC0gQ29tbWl0dGVy
IHJlamVjdGlvbiBpcyBvbmx5IHVzZWQgaW4gb25lIHBsYWNlLiAgTWFrZSB0aGUgbmV3IEJ1ZyBy
ZXZpZXdlZF9wYXRjaGVzIGFuZCBjb21taXRfcXVldWVkX3BhdGNoZXMKKyAgICAgICAgICAgaGFu
ZGxlIHRoZSBjb21tb24gY2FzZSAob2YgcmV0dXJuaW5nICJyZXZpZXdlciIgb3IgImNvbW1pdHRl
ciIgYXMgTm9uZSksIGFuZCBsZXQgQ29tbWl0dGVyVmFsaWRhdGlvbiBoYW5kbGUKKyAgICAgICAg
ICAgdGhlIGNhc2Ugd2hlcmUgd2Ugd2FudCB0byByZWplY3QgcGF0Y2hlcyBpbiBidWd6aWxsYS4K
KyAgICAgICAgIC0gU2ltcGxpZnkgZmV0Y2hfcGF0Y2hlc19mcm9tX2NvbW1pdF9xdWV1ZSBub3cg
dGhhdCBjb21taXR0ZXIgdmFsaWRhdGlvbiBpcyBzaW1wbGVyLgorICAgICAgICAgLSBNYWtlIGFs
bCBzZWxmLmJ1Z3ppbGxhLmZldGNoX2J1ZyBhY2Nlc3MgZ28gdGhyb3VnaCBCdWd6aWxsYVF1ZXJp
ZXMuX2ZldGNoX2J1Zy4KKyAgICAgICAgIC0gTWFyayBzZXRfZmxhZ19vbl9hdHRhY2htZW50IGFz
IG5vbi1wcml2YXRlIHRvIGRlbm90ZSB0aGF0IENvbW1pdHRlclZhbGlkYXRpb24gZGVwZW5kcyBv
biBpdC4KKyAgICAgICAgIC0gTW92ZSBmZXRjaF9yZXZpZXdlZF9wYXRjaGVzX2Zyb21fYnVnIGFu
ZCBmZXRjaF9jb21taXRfcXVldWVfcGF0Y2hlc19mcm9tX2J1ZyBsb2dpYyBvbnRvIHRoZSBCdWcg
Y2xhc3MuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9idWd6aWxsYV91bml0dGVzdC5weToK
KyAgICAgICAgIC0gTW92ZSB0ZXN0X2ZsYWdfcGVybWlzc2lvbl9yZWplY3Rpb25fbWVzc2FnZSBp
bnRvIGEgbmV3IENvbW1pdHRlclZhbGlkYXRpb25UZXN0IGNsYXNzLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbWFuZHMvZG93bmxvYWQucHk6CisgICAgICAgICAtIFN0b3JlICJidWdf
aWQiIGluIHN0YXRlIGluc3RlYWQgb2YgbWFraW5nIGEgZmFrZSBwYXRjaCBvYmplY3QuCisgICAg
ICAgICAtIFVwZGF0ZSB0byB1c2UgQXR0YWNobWVudCBhbmQgQnVnIG9iamVjdHMuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weToKKyAgICAg
ICAgIC0gVXBkYXRlIGV4cGVjdGVkIHJlc3VsdHMgbm93IHRoYXQgb3VyIHRlc3RpbmcgZnJhbWV3
b3JrIGNvdmVycyBtb3JlIGNvZGUuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tYW5k
cy9lYXJseV93YXJuaW5nX3N5c3RlbS5weTogVXBkYXRlIHRvIHVzZSBuZXcgQXR0YWNobWVudCBj
bGFzcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1hbmRzL3F1ZXJpZXMucHk6IFJl
bW92ZSB1bnVzZWQgUmV2aWV3ZWRQYXRjaGVzIGNsYXNzLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbWFuZHMvcXVlcmllc191bml0dGVzdC5weTogZGl0dG8uCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tYW5kcy9xdWV1ZXMucHk6IFVwZGF0ZSB0byB1c2UgbmV3IEF0dGFj
aG1lbnQgYW5kIENvbW1pdHRlclZhbGlkYXRvciBjbGFzc2VzLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbWFuZHMvcXVldWVzdGVzdC5weTogZGl0dG8uCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9jb21tYW5kcy91cGxvYWQucHk6IGRpdHRvLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbW9ja19idWd6aWxsYXRvb2wucHk6CisgICAgICAgICAtIE5vdyB0aGF0IG1vcmUg
bG9naWMgaGFzIG1vdmVkIGludG8gQXR0YWNobWVudCBhbmQgQnVnLCB3ZSBoYXZlIHRvIGFjdHVh
bGx5CisgICAgICAgICAgIHByb3ZpZGUgcmVhbCByZXZpZXdlciBlbWFpbHMgYXMgd2VsbCBhcyBy
ZWFsIHJldmlld2VyIGZsYWdzLgorICAgICAgICAgLSBVcGRhdGUgbW9jayBtZXRob2RzIHRvIHJl
dHVybiBBdHRhY2htZW50IG9iamVjdHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zY20u
cHk6IFVwZGF0ZSB0byB1c2UgQXR0YWNobWVudCBjbGFzcy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3NjbV91bml0dGVzdC5weTogVXBkYXRlIHRvIHVzZSBBdHRhY2htZW50IGNsYXNzLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3RhdHVzc2VydmVyLnB5OiBkaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0ZXBzL2FwcGx5cGF0Y2gucHk6IGRpdHRvLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvc3RlcHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weTog
ZGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdGVwcy9jbG9zZWJ1Zy5weTogZGl0
dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdGVwcy9jbG9zZWJ1Z2ZvcmxhbmRkaWZm
LnB5OiBIYW5kbGUgZWl0aGVyIHN0YXRlWyJidWdfaWQiXSBvciBzdGF0ZVsicGF0Y2giXS5idWdf
aWQoKQorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3RlcHMvY2xvc2VwYXRjaC5weTogVXBk
YXRlIHRvIHVzZSBBdHRhY2htZW50IGNsYXNzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
c3RlcHMvb2Jzb2xldGVwYXRjaGVzLnB5OiBkaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3N0ZXBzL3VwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3ZXIucHk6IGRpdHRvLgorCiAyMDEw
LTAxLTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2J1Z3ppbGxhLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9idWd6aWxsYS5w
eQppbmRleCBiOTExYTA0Li4wMWIyY2FjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2J1Z3ppbGxhLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
YnVnemlsbGEucHkKQEAgLTU5LDExICs1OSw3NiBAQCBkZWYgdGltZXN0YW1wKCk6CiAgICAgcmV0
dXJuIGRhdGV0aW1lLm5vdygpLnN0cmZ0aW1lKCIlWSVtJWQlSCVNJVMiKQogCiAKK2NsYXNzIEF0
dGFjaG1lbnQob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYXR0YWNobWVudF9kaWN0
aW9uYXJ5LCBidWcpOgorICAgICAgICBzZWxmLl9hdHRhY2htZW50X2RpY3Rpb25hcnkgPSBhdHRh
Y2htZW50X2RpY3Rpb25hcnkKKyAgICAgICAgc2VsZi5fYnVnID0gYnVnCisgICAgICAgIHNlbGYu
X3Jldmlld2VyID0gTm9uZQorICAgICAgICBzZWxmLl9jb21taXR0ZXIgPSBOb25lCisKKyAgICBk
ZWYgX2J1Z3ppbGxhKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fYnVnLl9idWd6aWxsYQor
CisgICAgZGVmIGlkKHNlbGYpOgorICAgICAgICByZXR1cm4gaW50KHNlbGYuX2F0dGFjaG1lbnRf
ZGljdGlvbmFyeS5nZXQoImlkIikpCisKKyAgICBkZWYgYXR0YWNoZXJfaXNfY29tbWl0dGVyKHNl
bGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fYnVnemlsbGEuY29tbWl0dGVycy5jb21taXR0ZXJf
YnlfZW1haWwocGF0Y2guYXR0YWNoZXJfZW1haWwoKSkKKworICAgIGRlZiBhdHRhY2hlcl9lbWFp
bChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2F0dGFjaG1lbnRfZGljdGlvbmFyeS5nZXQo
ImF0dGFjaGVyX2VtYWlsIikKKworICAgIGRlZiBidWcoc2VsZik6CisgICAgICAgIHJldHVybiBz
ZWxmLl9idWcKKworICAgIGRlZiBidWdfaWQoc2VsZik6CisgICAgICAgIHJldHVybiBpbnQoc2Vs
Zi5fYXR0YWNobWVudF9kaWN0aW9uYXJ5LmdldCgiYnVnX2lkIikpCisKKyAgICBkZWYgaXNfcGF0
Y2goc2VsZik6CisgICAgICAgIHJldHVybiBub3Qgbm90IHNlbGYuX2F0dGFjaG1lbnRfZGljdGlv
bmFyeS5nZXQoImlzX3BhdGNoIikKKworICAgIGRlZiBpc19vYnNvbGV0ZShzZWxmKToKKyAgICAg
ICAgcmV0dXJuIG5vdCBub3Qgc2VsZi5fYXR0YWNobWVudF9kaWN0aW9uYXJ5LmdldCgiaXNfb2Jz
b2xldGUiKQorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hdHRh
Y2htZW50X2RpY3Rpb25hcnkuZ2V0KCJuYW1lIikKKworICAgIGRlZiByZXZpZXcoc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLl9hdHRhY2htZW50X2RpY3Rpb25hcnkuZ2V0KCJyZXZpZXciKQor
CisgICAgZGVmIGNvbW1pdF9xdWV1ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2F0dGFj
aG1lbnRfZGljdGlvbmFyeS5nZXQoImNvbW1pdC1xdWV1ZSIpCisKKyAgICBkZWYgdXJsKHNlbGYp
OgorICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBqdXN0IHJldHVybiBzZWxmLl9idWd6aWxs
YSgpLmF0dGFjaG1lbnRfdXJsX2Zvcl9pZChzZWxmLmlkKCkpLiAgc2NtX3VuaXR0ZXN0LnB5IGRl
cGVuZHMgb24gdGhlIGN1cnJlbnQgYmVoYXZpb3IuCisgICAgICAgIHJldHVybiBzZWxmLl9hdHRh
Y2htZW50X2RpY3Rpb25hcnkuZ2V0KCJ1cmwiKQorCisgICAgZGVmIF92YWxpZGF0ZV9hbmRfZmxh
Z192YWx1ZShzZWxmLCBmbGFnKToKKyAgICAgICAgZW1haWwgPSBzZWxmLl9hdHRhY2htZW50X2Rp
Y3Rpb25hcnkuZ2V0KCIlc19lbWFpbCIgJSBmbGFnKQorICAgICAgICBpZiBub3QgZW1haWw6Cisg
ICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBjb21taXR0ZXIgPSBnZXRhdHRyKHNlbGYu
X2J1Z3ppbGxhKCkuY29taXR0ZXJzLCAiJXNfYnlfZW1haWwiICUgZmxhZykoZW1haWwpCisgICAg
ICAgIGlmIGNvbW1pdHRlcjoKKyAgICAgICAgICAgIHJldHVybiBjb21taXR0ZXIKKyAgICAgICAg
bG9nKCJXYXJuaW5nLCBhdHRhY2htZW50ICVzIG9uIGJ1ZyAlcyBoYXMgaW52YWxpZCAlcyAoJXMp
IiAlIChzZWxmLl9hdHRhY2htZW50X2RpY3Rpb25hcnlbJ2lkJ10sIHNlbGYuX2F0dGFjaG1lbnRf
ZGljdGlvbmFyeVsnYnVnX2lkJ10sIGZsYWcsIGVtYWlsKSkKKworICAgIGRlZiByZXZpZXdlcihz
ZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX3Jldmlld2VyOgorICAgICAgICAgICAgc2VsZi5f
cmV2aWV3ZXIgPSBzZWxmLl92YWxpZGF0ZV9hbmRfZmxhZ192YWx1ZSgicmV2aWV3ZXIiKQorICAg
ICAgICByZXR1cm4gc2VsZi5fcmV2aWV3ZXIKKworICAgIGRlZiBjb21taXR0ZXIoc2VsZik6Cisg
ICAgICAgIGlmIG5vdCBzZWxmLl9jb21taXR0ZXI6CisgICAgICAgICAgICBzZWxmLl9jb21taXR0
ZXIgPSBzZWxmLl92YWxpZGF0ZV9hbmRfZmxhZ192YWx1ZSgiY29tbWl0dGVyIikKKyAgICAgICAg
cmV0dXJuIHNlbGYuX2NvbW1pdHRlcgorCisKICMgRklYTUU6IFRoaXMgY2xhc3MgaXMga2luZGEg
YSBoYWNrIGZvciBub3cuICBJdCBleGlzdHMgc28gd2UgaGF2ZSBvbmUgcGxhY2UKICMgdG8gaG9s
ZCBidWcgbG9naWMsIGV2ZW4gaWYgbXVjaCBvZiB0aGUgY29kZSBkZWFscyB3aXRoIGRpY3Rpb25h
cmllcyBzdGlsbC4KIGNsYXNzIEJ1ZyhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBi
dWdfZGljdGlvbmFyeSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJ1Z19kaWN0aW9uYXJ5LCBi
dWd6aWxsYSk6CiAgICAgICAgIHNlbGYuYnVnX2RpY3Rpb25hcnkgPSBidWdfZGljdGlvbmFyeQor
ICAgICAgICBzZWxmLl9idWd6aWxsYSA9IGJ1Z3ppbGxhCiAKICAgICBkZWYgYXNzaWduZWRfdG9f
ZW1haWwoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmJ1Z19kaWN0aW9uYXJ5WyJhc3NpZ25l
ZF90b19lbWFpbCJdCkBAIC03MSwyNCArMTM2LDM3IEBAIGNsYXNzIEJ1ZyhvYmplY3QpOgogICAg
ICMgUmFyZWx5IGRvIHdlIGFjdHVhbGx5IHdhbnQgb2Jzb2xldGUgYXR0YWNobWVudHMKICAgICBk
ZWYgYXR0YWNobWVudHMoc2VsZiwgaW5jbHVkZV9vYnNvbGV0ZT1GYWxzZSk6CiAgICAgICAgIGlm
IGluY2x1ZGVfb2Jzb2xldGU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5idWdfZGljdGlvbmFy
eVsiYXR0YWNobWVudHMiXVs6XSAjIFJldHVybiBhIGNvcHkgaW4gZWl0aGVyIGNhc2UuCi0gICAg
ICAgIHJldHVybiBbYXR0YWNobWVudCBmb3IgYXR0YWNobWVudCBpbiBzZWxmLmJ1Z19kaWN0aW9u
YXJ5WyJhdHRhY2htZW50cyJdIGlmIG5vdCBhdHRhY2htZW50WyJpc19vYnNvbGV0ZSJdXQorICAg
ICAgICAgICAgcmV0dXJuIFtBdHRhY2htZW50KGF0dGFjaG1lbnQsIHNlbGYpIGZvciBhdHRhY2ht
ZW50IGluIHNlbGYuYnVnX2RpY3Rpb25hcnlbImF0dGFjaG1lbnRzIl1dCisgICAgICAgIHJldHVy
biBbQXR0YWNobWVudChhdHRhY2htZW50LCBzZWxmKSBmb3IgYXR0YWNobWVudCBpbiBzZWxmLmJ1
Z19kaWN0aW9uYXJ5WyJhdHRhY2htZW50cyJdIGlmIG5vdCBhdHRhY2htZW50WyJpc19vYnNvbGV0
ZSJdXQogCiAgICAgZGVmIHBhdGNoZXMoc2VsZiwgaW5jbHVkZV9vYnNvbGV0ZT1GYWxzZSk6Ci0g
ICAgICAgIHJldHVybiBbcGF0Y2ggZm9yIHBhdGNoIGluIHNlbGYuYXR0YWNobWVudHMoaW5jbHVk
ZV9vYnNvbGV0ZSkgaWYgcGF0Y2hbImlzX3BhdGNoIl1dCisgICAgICAgIHJldHVybiBbcGF0Y2gg
Zm9yIHBhdGNoIGluIHNlbGYuYXR0YWNobWVudHMoaW5jbHVkZV9vYnNvbGV0ZSkgaWYgcGF0Y2gu
aXNfcGF0Y2goKV0KIAogICAgIGRlZiB1bnJldmlld2VkX3BhdGNoZXMoc2VsZik6Ci0gICAgICAg
IHJldHVybiBbcGF0Y2ggZm9yIHBhdGNoIGluIHNlbGYucGF0Y2hlcygpIGlmIHBhdGNoLmdldCgi
cmV2aWV3IikgPT0gIj8iXQorICAgICAgICByZXR1cm4gW3BhdGNoIGZvciBwYXRjaCBpbiBzZWxm
LnBhdGNoZXMoKSBpZiBwYXRjaC5yZXZpZXcoKSA9PSAiPyJdCisKKyAgICBkZWYgcmV2aWV3ZWRf
cGF0Y2hlcyhzZWxmKToKKyAgICAgICAgIyBDaGVja2luZyByZXZpZXdlcigpIGVuc3VyZXMgdGhh
dCBpdCB3YXMgYm90aCByZXZpZXdlZCBhbmQgaGFzIGEgdmFsaWQgcmV2aWV3ZXIuCisgICAgICAg
IHJldHVybiBbcGF0Y2ggZm9yIHBhdGNoIGluIHNlbGYucGF0Y2hlcygpIGlmIHBhdGNoLnJldmll
dygpID09ICIrIiBhbmQgcGF0Y2gucmV2aWV3ZXIoKV0KKworICAgIGRlZiBjb21taXRfcXVldWVk
X3BhdGNoZXMoc2VsZik6CisgICAgICAgICMgQ2hlY2tpbmcgY29tbWl0dGVyKCkgZW5zdXJlcyB0
aGF0IGl0IHdhcyBib3RoIGNvbW1pdC1xdWV1ZSsnZCBhbmQgaGFzIGEgdmFsaWQgY29tbWl0dGVy
LgorICAgICAgICByZXR1cm4gW3BhdGNoIGZvciBwYXRjaCBpbiBzZWxmLnBhdGNoZXMoKSBpZiBw
YXRjaC5jb21taXRfcXVldWUoKSA9PSAiKyIgYW5kIHBhdGNoLmNvbW1pdHRlcigpXQogCiAKICMg
QSBjb250YWluZXIgZm9yIGFsbCBvZiB0aGUgbG9naWMgZm9yIG1ha2luZyBhIHBhcnNpbmcgYnV6
aWxsYSBxdWVyaWVzLgogY2xhc3MgQnVnemlsbGFRdWVyaWVzKG9iamVjdCk6CiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGJ1Z3ppbGxhKToKLSAgICAgICAgc2VsZi5idWd6aWxsYSA9IGJ1Z3ppbGxh
CisgICAgICAgIHNlbGYuX2J1Z3ppbGxhID0gYnVnemlsbGEKIAorICAgICMgTm90ZTogX2xvYWRf
cXVlcnkgYW5kIF9mZXRjaF9idWcgYXJlIHRoZSBvbmx5IHR3byBtZXRob2RzIHdoaWNoIGFjY2Vz
cyBzZWxmLl9idWd6aWxsYS4KICAgICBkZWYgX2xvYWRfcXVlcnkoc2VsZiwgcXVlcnkpOgotICAg
ICAgICBmdWxsX3VybCA9ICIlcyVzIiAlIChzZWxmLmJ1Z3ppbGxhLmJ1Z19zZXJ2ZXJfdXJsLCBx
dWVyeSkKLSAgICAgICAgcmV0dXJuIHNlbGYuYnVnemlsbGEuYnJvd3Nlci5vcGVuKGZ1bGxfdXJs
KQorICAgICAgICBmdWxsX3VybCA9ICIlcyVzIiAlIChzZWxmLl9idWd6aWxsYS5idWdfc2VydmVy
X3VybCwgcXVlcnkpCisgICAgICAgIHJldHVybiBzZWxmLl9idWd6aWxsYS5icm93c2VyLm9wZW4o
ZnVsbF91cmwpCisKKyAgICBkZWYgX2ZldGNoX2J1ZyhzZWxmLCBidWdfaWQpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5fYnVnemlsbGEuZmV0Y2hfYnVnKGJ1Z19pZCkKKwogCiAgICAgZGVmIF9mZXRj
aF9idWdfaWRzX2FkdmFuY2VkX3F1ZXJ5KHNlbGYsIHF1ZXJ5KToKICAgICAgICAgc291cCA9IEJl
YXV0aWZ1bFNvdXAoc2VsZi5fbG9hZF9xdWVyeShxdWVyeSkpCkBAIC0xMTAsMjkgKzE4OCwyMSBA
QCBjbGFzcyBCdWd6aWxsYVF1ZXJpZXMob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuX2Zl
dGNoX2J1Z19pZHNfYWR2YW5jZWRfcXVlcnkobmVlZHNfY29tbWl0X3F1ZXJ5X3VybCkKIAogICAg
IGRlZiBmZXRjaF9wYXRjaGVzX2Zyb21fcGVuZGluZ19jb21taXRfbGlzdChzZWxmKToKLSAgICAg
ICAgIyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGhhdmUgdG8gZ28gdGhyb3VnaCBzZWxmLmJ1Z3pp
bGxhCi0gICAgICAgIHJldHVybiBzdW0oW3NlbGYuYnVnemlsbGEuZmV0Y2hfcmV2aWV3ZWRfcGF0
Y2hlc19mcm9tX2J1ZyhidWdfaWQpIGZvciBidWdfaWQgaW4gc2VsZi5mZXRjaF9idWdfaWRzX2Zy
b21fcGVuZGluZ19jb21taXRfbGlzdCgpXSwgW10pCisgICAgICAgIHJldHVybiBzdW0oW3NlbGYu
X2ZldGNoX2J1ZyhidWdfaWQpLnJldmlld2VkX3BhdGNoZXMoKSBmb3IgYnVnX2lkIGluIHNlbGYu
ZmV0Y2hfYnVnX2lkc19mcm9tX3BlbmRpbmdfY29tbWl0X2xpc3QoKV0sIFtdKQogCiAgICAgZGVm
IGZldGNoX2J1Z19pZHNfZnJvbV9jb21taXRfcXVldWUoc2VsZik6CiAgICAgICAgIGNvbW1pdF9x
dWV1ZV91cmwgPSAiYnVnbGlzdC5jZ2k/cXVlcnlfZm9ybWF0PWFkdmFuY2VkJmJ1Z19zdGF0dXM9
VU5DT05GSVJNRUQmYnVnX3N0YXR1cz1ORVcmYnVnX3N0YXR1cz1BU1NJR05FRCZidWdfc3RhdHVz
PVJFT1BFTkVEJmZpZWxkMC0wLTA9ZmxhZ3R5cGVzLm5hbWUmdHlwZTAtMC0wPWVxdWFscyZ2YWx1
ZTAtMC0wPWNvbW1pdC1xdWV1ZSUyQiIKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZldGNoX2J1Z19p
ZHNfYWR2YW5jZWRfcXVlcnkoY29tbWl0X3F1ZXVlX3VybCkKIAotICAgIGRlZiBmZXRjaF9wYXRj
aGVzX2Zyb21fY29tbWl0X3F1ZXVlKHNlbGYsIHJlamVjdF9pbnZhbGlkX3BhdGNoZXM9RmFsc2Up
OgotICAgICAgICAjIEZJWE1FOiBPbmNlIHJlamVjdF9pbnZhbGlkX3BhdGNoZXMgaXMgbW92ZWQg
b3V0IG9mIHRoaXMgZnVuY3Rpb24gdGhpcyBiZWNvbWVzIGEgc2ltcGxlIGxpc3QgY29tcHJlaGVu
c2lvbiB1c2luZyBmZXRjaF9idWdfaWRzX2Zyb21fY29tbWl0X3F1ZXVlLgotICAgICAgICBwYXRj
aGVzX3RvX2xhbmQgPSBbXQotICAgICAgICBmb3IgYnVnX2lkIGluIHNlbGYuZmV0Y2hfYnVnX2lk
c19mcm9tX2NvbW1pdF9xdWV1ZSgpOgotICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQg
bm90IGhhdmUgdG8gZ28gdGhyb3VnaCBzZWxmLmJ1Z3ppbGxhCi0gICAgICAgICAgICBwYXRjaGVz
ID0gc2VsZi5idWd6aWxsYS5mZXRjaF9jb21taXRfcXVldWVfcGF0Y2hlc19mcm9tX2J1ZyhidWdf
aWQsIHJlamVjdF9pbnZhbGlkX3BhdGNoZXMpCi0gICAgICAgICAgICBwYXRjaGVzX3RvX2xhbmQg
Kz0gcGF0Y2hlcwotICAgICAgICByZXR1cm4gcGF0Y2hlc190b19sYW5kCisgICAgZGVmIGZldGNo
X3BhdGNoZXNfZnJvbV9jb21taXRfcXVldWUoc2VsZik6CisgICAgICAgIHJldHVybiBzdW0oW3Nl
bGYuX2ZldGNoX2J1ZyhidWdfaWQpLmNvbW1pdF9xdWV1ZWRfcGF0Y2hlcygpIGZvciBidWdfaWQg
aW4gc2VsZi5mZXRjaF9idWdfaWRzX2Zyb21fY29tbWl0X3F1ZXVlKCldLCBbXSkKIAogICAgIGRl
ZiBfZmV0Y2hfYnVnX2lkc19mcm9tX3Jldmlld19xdWV1ZShzZWxmKToKICAgICAgICAgcmV2aWV3
X3F1ZXVlX3VybCA9ICJidWdsaXN0LmNnaT9xdWVyeV9mb3JtYXQ9YWR2YW5jZWQmYnVnX3N0YXR1
cz1VTkNPTkZJUk1FRCZidWdfc3RhdHVzPU5FVyZidWdfc3RhdHVzPUFTU0lHTkVEJmJ1Z19zdGF0
dXM9UkVPUEVORUQmZmllbGQwLTAtMD1mbGFndHlwZXMubmFtZSZ0eXBlMC0wLTA9ZXF1YWxzJnZh
bHVlMC0wLTA9cmV2aWV3PyIKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZldGNoX2J1Z19pZHNfYWR2
YW5jZWRfcXVlcnkocmV2aWV3X3F1ZXVlX3VybCkKIAogICAgIGRlZiBmZXRjaF9wYXRjaGVzX2Zy
b21fcmV2aWV3X3F1ZXVlKHNlbGYsIGxpbWl0PU5vbmUpOgotICAgICAgICAjIEZJWE1FOiBXZSBz
aG91bGQgcHJvYmFibHkgaGF2ZSBhIHNlbGYuZmV0Y2hfYnVnIHRvIG1pbmltaXplIHRoZSBudW1i
ZXIgb2Ygc2VsZi5idWd6aWxsYSBjYWxscy4KLSAgICAgICAgcmV0dXJuIHN1bShbc2VsZi5idWd6
aWxsYS5mZXRjaF9idWcoYnVnX2lkKS51bnJldmlld2VkX3BhdGNoZXMoKSBmb3IgYnVnX2lkIGlu
IHNlbGYuX2ZldGNoX2J1Z19pZHNfZnJvbV9yZXZpZXdfcXVldWUoKVs6bGltaXRdXSwgW10pICMg
WzpOb25lXSByZXR1cm5zIHRoZSB3aG9sZSBhcnJheS4KKyAgICAgICAgcmV0dXJuIHN1bShbc2Vs
Zi5fZmV0Y2hfYnVnKGJ1Z19pZCkudW5yZXZpZXdlZF9wYXRjaGVzKCkgZm9yIGJ1Z19pZCBpbiBz
ZWxmLl9mZXRjaF9idWdfaWRzX2Zyb21fcmV2aWV3X3F1ZXVlKClbOmxpbWl0XV0sIFtdKSAjIFs6
Tm9uZV0gcmV0dXJucyB0aGUgd2hvbGUgYXJyYXkuCiAKICAgICAjIEZJWE1FOiBXaHkgZG8gd2Ug
aGF2ZSBib3RoIGZldGNoX3BhdGNoZXNfZnJvbV9yZXZpZXdfcXVldWUgYW5kIGZldGNoX2F0dGFj
aG1lbnRfaWRzX2Zyb21fcmV2aWV3X3F1ZXVlPz8KICAgICAjIE5PVEU6IFRoaXMgaXMgYWxzbyB0
aGUgb25seSBjbGllbnQgb2YgX2ZldGNoX2F0dGFjaG1lbnRfaWRzX3JlcXVlc3RfcXVlcnkKQEAg
LTE0MSwxNyArMjExLDYxIEBAIGNsYXNzIEJ1Z3ppbGxhUXVlcmllcyhvYmplY3QpOgogICAgICAg
ICByZXR1cm4gc2VsZi5fZmV0Y2hfYXR0YWNobWVudF9pZHNfcmVxdWVzdF9xdWVyeShyZXZpZXdf
cXVldWVfdXJsKQogCiAKK2NsYXNzIENvbW1pdHRlclZhbGlkYXRvcihvYmplY3QpOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBidWd6aWxsYSk6CisgICAgICAgIHNlbGYuX2J1Z3ppbGxhID0gYnVn
emlsbGEKKworICAgICMgX3ZpZXdfc291cmNlX2xpbmsgYmVsb25ncyBpbiBzb21lIHNvcnQgb2Yg
d2Via2l0X2NvbmZpZy5weSBtb2R1bGUuCisgICAgZGVmIF92aWV3X3NvdXJjZV9saW5rKHNlbGYs
IGxvY2FsX3BhdGgpOgorICAgICAgICByZXR1cm4gImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJv
d3Nlci90cnVuay8lcyIgJSBsb2NhbF9wYXRoCisKKyAgICBkZWYgX2ZsYWdfcGVybWlzc2lvbl9y
ZWplY3Rpb25fbWVzc2FnZShzZWxmLCBzZXR0ZXJfZW1haWwsIGZsYWdfbmFtZSk6CisgICAgICAg
IGNvbW1pdHRlcl9saXN0ID0gIldlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbWl0dGVy
cy5weSIgIyBUaGlzIGNvdWxkIGJlIGNvbXB1dGVkIGZyb20gQ29tbWl0dGVyTGlzdC5fX2ZpbGVf
XworICAgICAgICBjb250cmlidXRpb25fZ3VpZGxpbmVzX3VybCA9ICJodHRwOi8vd2Via2l0Lm9y
Zy9jb2RpbmcvY29udHJpYnV0aW5nLmh0bWwiICMgU2hvdWxkIGNvbWUgZnJvbSBzb21lIHdlYmtp
dF9jb25maWcucHkKKyAgICAgICAgcXVldWVfYWRtaW5pc3RyYXRvciA9ICJlc2VpZGVsQGNocm9t
aXVtLm9yZyIgIyBUaGlzIGNvdWxkIGJlIHF1ZXJpZWQgZnJvbSB0aGUgc3RhdHVzX3NlcnZlci4K
KyAgICAgICAgcXVldWVfbmFtZSA9ICJjb21taXQtcXVldWUiICMgVGhpcyBjb3VsZCBiZSBxdWVy
aWVkIGZyb20gdGhlIHRvb2wuCisgICAgICAgIHJlamVjdGlvbl9tZXNzYWdlID0gIiVzIGRvZXMg
bm90IGhhdmUgJXMgcGVybWlzc2lvbnMgYWNjb3JkaW5nIHRvICVzLiIgJSAoc2V0dGVyX2VtYWls
LCBmbGFnX25hbWUsIHNlbGYuX3ZpZXdfc291cmNlX2xpbmsoY29tbWl0dGVyX2xpc3QpKQorICAg
ICAgICByZWplY3Rpb25fbWVzc2FnZSArPSAiXG5cbi0gSWYgeW91IGRvIG5vdCBoYXZlICVzIHJp
Z2h0cyBwbGVhc2UgcmVhZCAlcyBmb3IgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byB1c2UgYnVnemls
bGEgZmxhZ3MuIiAlIChmbGFnX25hbWUsIGNvbnRyaWJ1dGlvbl9ndWlkbGluZXNfdXJsKQorICAg
ICAgICByZWplY3Rpb25fbWVzc2FnZSArPSAiXG5cbi0gSWYgeW91IGhhdmUgJXMgcmlnaHRzIHBs
ZWFzZSBjb3JyZWN0IHRoZSBlcnJvciBpbiAlcyBieSBhZGRpbmcgeW91cnNlbGYgdG8gdGhlIGZp
bGUgKG5vIHJldmlldyBuZWVkZWQpLiIgJSAoZmxhZ19uYW1lLCBjb21taXR0ZXJfbGlzdCkKKyAg
ICAgICAgcmVqZWN0aW9uX21lc3NhZ2UgKz0gIiAgRHVlIHRvIGJ1ZyAzMDA4NCB0aGUgJXMgd2ls
bCByZXF1aXJlIGEgcmVzdGFydCBhZnRlciB5b3VyIGNoYW5nZS4iICUgcXVldWVfbmFtZQorICAg
ICAgICByZWplY3Rpb25fbWVzc2FnZSArPSAiICBQbGVhc2UgY29udGFjdCAlcyB0byByZXF1ZXN0
IGEgJXMgcmVzdGFydC4iICUgKHF1ZXVlX2FkbWluaXN0cmF0b3IsIHF1ZXVlX25hbWUpCisgICAg
ICAgIHJlamVjdGlvbl9tZXNzYWdlICs9ICIgIEFmdGVyIHJlc3RhcnQgdGhlICVzIHdpbGwgY29y
cmVjdGx5IHJlc3BlY3QgeW91ciAlcyByaWdodHMuIiAlIChxdWV1ZV9uYW1lLCBmbGFnX25hbWUp
CisgICAgICAgIHJldHVybiByZWplY3Rpb25fbWVzc2FnZQorCisgICAgZGVmIF92YWxpZGF0ZV9z
ZXR0ZXJfZW1haWwoc2VsZiwgcGF0Y2gsIHJlc3VsdF9rZXksIHJlamVjdGlvbl9mdW5jdGlvbik6
CisgICAgICAgIGNvbW1pdHRlciA9IGdldGF0dHIocGF0Y2gsIHJlc3VsdF9rZXkpKCkKKyAgICAg
ICAgaWYgcGF0Y2guX2F0dGFjaG1lbnRfZGljdGlvbmFyeS5nZXQoIiVzX2VtYWlsIiAlIHJlc3Vs
dF9rZXkpIGFuZCBub3QgY29tbWl0dGVyOgorICAgICAgICAgICAgcmVqZWN0aW9uX2Z1bmN0aW9u
KHBhdGNoLmlkKCksIHNlbGYuX2ZsYWdfcGVybWlzc2lvbl9yZWplY3Rpb25fbWVzc2FnZShzZXR0
ZXJfZW1haWwsIHJlc3VsdF9rZXkpKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg
IHJldHVybiBUcnVlCisKKyAgICBkZWYgcGF0Y2hlc19hZnRlcl9yZWplY3RpbmdfaW52YWxpZF9j
b21taXRlcnNfYW5kX3Jldmlld2VycyhzZWxmLCBwYXRjaGVzKToKKyAgICAgICAgdmFsaWRhdGVk
X3BhdGNoZXMgPSBbXQorICAgICAgICBmb3IgcGF0Y2ggaW4gcGF0Y2hlczoKKyAgICAgICAgICAg
IGlmIHNlbGYuX3ZhbGlkYXRlX3NldHRlcl9lbWFpbChwYXRjaCwgInJldmlld2VyIiwgc2VsZi5y
ZWplY3RfcGF0Y2hfZnJvbV9yZXZpZXdfcXVldWUpIGFuZCBzZWxmLl92YWxpZGF0ZV9zZXR0ZXJf
ZW1haWwocGF0Y2gsICJjb21taXR0ZXIiLCBzZWxmLnJlamVjdF9wYXRjaF9mcm9tX2NvbW1pdF9x
dWV1ZSk6CisgICAgICAgICAgICAgICAgdmFsaWRhdGVkX3BhdGNoZXMuYXBwZW5kKHBhdGNoKQor
ICAgICAgICByZXR1cm4gdmFsaWRhdGVkX3BhdGNoZXMKKworICAgIGRlZiByZWplY3RfcGF0Y2hf
ZnJvbV9jb21taXRfcXVldWUoc2VsZiwgYXR0YWNobWVudF9pZCwgYWRkaXRpb25hbF9jb21tZW50
X3RleHQ9Tm9uZSk6CisgICAgICAgIGNvbW1lbnRfdGV4dCA9ICJSZWplY3RpbmcgcGF0Y2ggJXMg
ZnJvbSBjb21taXQtcXVldWUuIiAlIGF0dGFjaG1lbnRfaWQKKyAgICAgICAgc2VsZi5fYnVnemls
bGEuc2V0X2ZsYWdfb25fYXR0YWNobWVudChhdHRhY2htZW50X2lkLCAnY29tbWl0LXF1ZXVlJywg
Jy0nLCBjb21tZW50X3RleHQsIGFkZGl0aW9uYWxfY29tbWVudF90ZXh0KQorCisgICAgZGVmIHJl
amVjdF9wYXRjaF9mcm9tX3Jldmlld19xdWV1ZShzZWxmLCBhdHRhY2htZW50X2lkLCBhZGRpdGlv
bmFsX2NvbW1lbnRfdGV4dD1Ob25lKToKKyAgICAgICAgY29tbWVudF90ZXh0ID0gIlJlamVjdGlu
ZyBwYXRjaCAlcyBmcm9tIHJldmlldyBxdWV1ZS4iICUgYXR0YWNobWVudF9pZAorICAgICAgICBz
ZWxmLl9idWd6aWxsYS5zZXRfZmxhZ19vbl9hdHRhY2htZW50KGF0dGFjaG1lbnRfaWQsICdyZXZp
ZXcnLCAnLScsIGNvbW1lbnRfdGV4dCwgYWRkaXRpb25hbF9jb21tZW50X3RleHQpCisKKwogY2xh
c3MgQnVnemlsbGEob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZHJ5cnVuPUZhbHNl
LCBjb21taXR0ZXJzPUNvbW1pdHRlckxpc3QoKSk6CiAgICAgICAgIHNlbGYuZHJ5cnVuID0gZHJ5
cnVuCiAgICAgICAgIHNlbGYuYXV0aGVudGljYXRlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYucXVl
cmllcyA9IEJ1Z3ppbGxhUXVlcmllcyhzZWxmKQorICAgICAgICBzZWxmLmNvbW1pdHRlcnMgPSBj
b21taXR0ZXJzCiAKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBzb21lIHNvcnQgb2Yg
QnJvd3NlciBtb2NrIG9iamVjdCB3aGVuIGluIGRyeXJ1biBtb2RlICh0byBwcmV2ZW50IGFueSBt
aXN0YWtlcykuCiAgICAgICAgIHNlbGYuYnJvd3NlciA9IEJyb3dzZXIoKQogICAgICAgICAjIEln
bm9yZSBidWdzLndlYmtpdC5vcmcvcm9ib3RzLnR4dCB1bnRpbCB3ZSBmaXggaXQgdG8gYWxsb3cg
dGhpcyBzY3JpcHQKICAgICAgICAgc2VsZi5icm93c2VyLnNldF9oYW5kbGVfcm9ib3RzKEZhbHNl
KQotICAgICAgICBzZWxmLmNvbW1pdHRlcnMgPSBjb21taXR0ZXJzCiAKICAgICAjIEZJWE1FOiBN
dWNoIG9mIHRoaXMgc2hvdWxkIGdvIGludG8gc29tZSBzb3J0IG9mIGNvbmZpZyBtb2R1bGU6CiAg
ICAgYnVnX3NlcnZlcl9ob3N0ID0gImJ1Z3Mud2Via2l0Lm9yZyIKQEAgLTE4NSw2ICsyOTksNyBA
QCBjbGFzcyBCdWd6aWxsYShvYmplY3QpOgogICAgICAgICBhdHRhY2htZW50Wydpc19vYnNvbGV0
ZSddID0gKGVsZW1lbnQuaGFzX2tleSgnaXNvYnNvbGV0ZScpIGFuZCBlbGVtZW50Wydpc29ic29s
ZXRlJ10gPT0gIjEiKQogICAgICAgICBhdHRhY2htZW50Wydpc19wYXRjaCddID0gKGVsZW1lbnQu
aGFzX2tleSgnaXNwYXRjaCcpIGFuZCBlbGVtZW50Wydpc3BhdGNoJ10gPT0gIjEiKQogICAgICAg
ICBhdHRhY2htZW50WydpZCddID0gaW50KGVsZW1lbnQuZmluZCgnYXR0YWNoaWQnKS5zdHJpbmcp
CisgICAgICAgICMgRklYTUU6IE5vIG5lZWQgdG8gcGFyc2Ugb3V0IHRoZSB1cmwgaGVyZS4KICAg
ICAgICAgYXR0YWNobWVudFsndXJsJ10gPSBzZWxmLmF0dGFjaG1lbnRfdXJsX2Zvcl9pZChhdHRh
Y2htZW50WydpZCddKQogICAgICAgICBhdHRhY2htZW50WyduYW1lJ10gPSB1bmljb2RlKGVsZW1l
bnQuZmluZCgnZGVzYycpLnN0cmluZykKICAgICAgICAgYXR0YWNobWVudFsnYXR0YWNoZXJfZW1h
aWwnXSA9IHN0cihlbGVtZW50LmZpbmQoJ2F0dGFjaGVyJykuc3RyaW5nKQpAQCAtMjE1LDcgKzMz
MCw3IEBAIGNsYXNzIEJ1Z3ppbGxhKG9iamVjdCk6CiAKICAgICAjIEZJWE1FOiBBIEJ1Z3ppbGxh
Q2FjaGUgb2JqZWN0IHNob3VsZCBwcm92aWRlIGFsbCB0aGVzZSBmZXRjaF8gbWV0aG9kcy4KICAg
ICBkZWYgZmV0Y2hfYnVnKHNlbGYsIGJ1Z19pZCk6Ci0gICAgICAgIHJldHVybiBCdWcoc2VsZi5m
ZXRjaF9idWdfZGljdGlvbmFyeShidWdfaWQpKQorICAgICAgICByZXR1cm4gQnVnKHNlbGYuZmV0
Y2hfYnVnX2RpY3Rpb25hcnkoYnVnX2lkKSwgc2VsZikKIAogICAgIGRlZiBfcGFyc2VfYnVnX2lk
X2Zyb21fYXR0YWNobWVudF9wYWdlKHNlbGYsIHBhZ2UpOgogICAgICAgICB1cF9saW5rID0gQmVh
dXRpZnVsU291cChwYWdlKS5maW5kKCdsaW5rJywgcmVsPSdVcCcpICMgVGhlICJVcCIgcmVsYXRp
b24gaGFwcGVucyB0byBwb2ludCB0byB0aGUgYnVnLgpAQCAtMjMwLDggKzM0NSw3IEBAIGNsYXNz
IEJ1Z3ppbGxhKG9iamVjdCk6CiAgICAgICAgIHBhZ2UgPSBzZWxmLmJyb3dzZXIub3BlbihhdHRh
Y2htZW50X3VybCkKICAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlX2J1Z19pZF9mcm9tX2F0dGFj
aG1lbnRfcGFnZShwYWdlKQogCi0gICAgIyBUaGlzIHNob3VsZCByZWFsbHkgcmV0dXJuIGFuIEF0
dGFjaG1lbnQgb2JqZWN0Ci0gICAgIyB3aGljaCBjYW4gbGF6aWx5IGZldGNoIGFueSBtaXNzaW5n
IGRhdGEuCisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQganVzdCByZXR1cm4gQXR0YWNobWVudChp
ZCksIHdoaWNoIHNob3VsZCBiZSBhYmxlIHRvIGxhemlseSBmZXRjaCBuZWVkZWQgZGF0YS4KICAg
ICBkZWYgZmV0Y2hfYXR0YWNobWVudChzZWxmLCBhdHRhY2htZW50X2lkKToKICAgICAgICAgIyBX
ZSBjb3VsZCBncmFiIGFsbCB0aGUgYXR0YWNobWVudCBkZXRhaWxzIG9mZiBvZiB0aGUgYXR0YWNo
bWVudCBlZGl0IHBhZ2UKICAgICAgICAgIyBidXQgd2UgYWxyZWFkeSBoYXZlIHdvcmtpbmcgY29k
ZSB0byBkbyBzbyBvZmYgb2YgdGhlIGJ1Z3MgcGFnZSwgc28gcmUtdXNlIHRoYXQuCkBAIC0yMzks
NzkgKzM1MywxMCBAQCBjbGFzcyBCdWd6aWxsYShvYmplY3QpOgogICAgICAgICBpZiBub3QgYnVn
X2lkOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgZm9yIGF0dGFjaG1lbnQgaW4g
c2VsZi5mZXRjaF9idWcoYnVnX2lkKS5hdHRhY2htZW50cyhpbmNsdWRlX29ic29sZXRlPVRydWUp
OgotICAgICAgICAgICAgIyBGSVhNRTogT25jZSB3ZSBoYXZlIGEgcmVhbCBBdHRhY2htZW50IGNs
YXNzIHdlIHNob3VsZG4ndCBwYXBlciBvdmVyIHRoaXMgcG9zc2libGUgY29tcGFyaXNvbiBmYWls
dXJlCi0gICAgICAgICAgICAjIGFuZCB3ZSBzaG91bGQgcmVtb3ZlIHRoZSBpbnQoKSA9PSBpbnQo
KSBoYWNrcyBhbmQgbGVhdmUgaXQganVzdCA9PS4KLSAgICAgICAgICAgIGlmIGludChhdHRhY2ht
ZW50WydpZCddKSA9PSBpbnQoYXR0YWNobWVudF9pZCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
dmFsaWRhdGVfY29tbWl0dGVyX2FuZF9yZXZpZXdlcihhdHRhY2htZW50KQorICAgICAgICAgICAg
aWYgYXR0YWNobWVudC5pZCgpID09IGludChhdHRhY2htZW50X2lkKToKICAgICAgICAgICAgICAg
ICByZXR1cm4gYXR0YWNobWVudAogICAgICAgICByZXR1cm4gTm9uZSAjIFRoaXMgc2hvdWxkIG5l
dmVyIGJlIGhpdC4KIAotICAgICMgZmV0Y2hfcGF0Y2hlc19mcm9tX2J1ZyBleGlzdHMgdW50aWwg
d2UgZXhwb3NlIGEgQnVnIGNsYXNzIG91dHNpZGUgb2YgYnVnemlsbGEucHkKLSAgICBkZWYgZmV0
Y2hfcGF0Y2hlc19mcm9tX2J1ZyhzZWxmLCBidWdfaWQpOgotICAgICAgICByZXR1cm4gc2VsZi5m
ZXRjaF9idWcoYnVnX2lkKS5wYXRjaGVzKCkKLQotICAgICMgX3ZpZXdfc291cmNlX2xpbmsgYmVs
b25ncyBpbiBzb21lIHNvcnQgb2Ygd2Via2l0X2NvbmZpZy5weSBtb2R1bGUuCi0gICAgZGVmIF92
aWV3X3NvdXJjZV9saW5rKHNlbGYsIGxvY2FsX3BhdGgpOgotICAgICAgICByZXR1cm4gImh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay8lcyIgJSBsb2NhbF9wYXRoCi0KLSAgICBk
ZWYgX2ZsYWdfcGVybWlzc2lvbl9yZWplY3Rpb25fbWVzc2FnZShzZWxmLCBzZXR0ZXJfZW1haWws
IGZsYWdfbmFtZSk6Ci0gICAgICAgIGNvbW1pdHRlcl9saXN0ID0gIldlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbWl0dGVycy5weSIgIyBUaGlzIGNvdWxkIGJlIGNvbXB1dGVkIGZyb20g
Q29tbWl0dGVyTGlzdC5fX2ZpbGVfXwotICAgICAgICBjb250cmlidXRpb25fZ3VpZGxpbmVzX3Vy
bCA9ICJodHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29udHJpYnV0aW5nLmh0bWwiICMgU2hvdWxk
IGNvbWUgZnJvbSBzb21lIHdlYmtpdF9jb25maWcucHkKLSAgICAgICAgcXVldWVfYWRtaW5pc3Ry
YXRvciA9ICJlc2VpZGVsQGNocm9taXVtLm9yZyIgIyBUaGlzIGNvdWxkIGJlIHF1ZXJpZWQgZnJv
bSB0aGUgc3RhdHVzX3NlcnZlci4KLSAgICAgICAgcXVldWVfbmFtZSA9ICJjb21taXQtcXVldWUi
ICMgVGhpcyBjb3VsZCBiZSBxdWVyaWVkIGZyb20gdGhlIHRvb2wuCi0gICAgICAgIHJlamVjdGlv
bl9tZXNzYWdlID0gIiVzIGRvZXMgbm90IGhhdmUgJXMgcGVybWlzc2lvbnMgYWNjb3JkaW5nIHRv
ICVzLiIgJSAoc2V0dGVyX2VtYWlsLCBmbGFnX25hbWUsIHNlbGYuX3ZpZXdfc291cmNlX2xpbmso
Y29tbWl0dGVyX2xpc3QpKQotICAgICAgICByZWplY3Rpb25fbWVzc2FnZSArPSAiXG5cbi0gSWYg
eW91IGRvIG5vdCBoYXZlICVzIHJpZ2h0cyBwbGVhc2UgcmVhZCAlcyBmb3IgaW5zdHJ1Y3Rpb25z
IG9uIGhvdyB0byB1c2UgYnVnemlsbGEgZmxhZ3MuIiAlIChmbGFnX25hbWUsIGNvbnRyaWJ1dGlv
bl9ndWlkbGluZXNfdXJsKQotICAgICAgICByZWplY3Rpb25fbWVzc2FnZSArPSAiXG5cbi0gSWYg
eW91IGhhdmUgJXMgcmlnaHRzIHBsZWFzZSBjb3JyZWN0IHRoZSBlcnJvciBpbiAlcyBieSBhZGRp
bmcgeW91cnNlbGYgdG8gdGhlIGZpbGUgKG5vIHJldmlldyBuZWVkZWQpLiIgJSAoZmxhZ19uYW1l
LCBjb21taXR0ZXJfbGlzdCkKLSAgICAgICAgcmVqZWN0aW9uX21lc3NhZ2UgKz0gIiAgRHVlIHRv
IGJ1ZyAzMDA4NCB0aGUgJXMgd2lsbCByZXF1aXJlIGEgcmVzdGFydCBhZnRlciB5b3VyIGNoYW5n
ZS4iICUgcXVldWVfbmFtZQotICAgICAgICByZWplY3Rpb25fbWVzc2FnZSArPSAiICBQbGVhc2Ug
Y29udGFjdCAlcyB0byByZXF1ZXN0IGEgJXMgcmVzdGFydC4iICUgKHF1ZXVlX2FkbWluaXN0cmF0
b3IsIHF1ZXVlX25hbWUpCi0gICAgICAgIHJlamVjdGlvbl9tZXNzYWdlICs9ICIgIEFmdGVyIHJl
c3RhcnQgdGhlICVzIHdpbGwgY29ycmVjdGx5IHJlc3BlY3QgeW91ciAlcyByaWdodHMuIiAlIChx
dWV1ZV9uYW1lLCBmbGFnX25hbWUpCi0gICAgICAgIHJldHVybiByZWplY3Rpb25fbWVzc2FnZQot
Ci0gICAgZGVmIF92YWxpZGF0ZV9zZXR0ZXJfZW1haWwoc2VsZiwgcGF0Y2gsIHJlc3VsdF9rZXks
IGxvb2t1cF9mdW5jdGlvbiwgcmVqZWN0aW9uX2Z1bmN0aW9uLCByZWplY3RfaW52YWxpZF9wYXRj
aGVzKToKLSAgICAgICAgc2V0dGVyX2VtYWlsID0gcGF0Y2guZ2V0KHJlc3VsdF9rZXkgKyAnX2Vt
YWlsJykKLSAgICAgICAgaWYgbm90IHNldHRlcl9lbWFpbDoKLSAgICAgICAgICAgIHJldHVybiBO
b25lCi0KLSAgICAgICAgY29tbWl0dGVyID0gbG9va3VwX2Z1bmN0aW9uKHNldHRlcl9lbWFpbCkK
LSAgICAgICAgaWYgY29tbWl0dGVyOgotICAgICAgICAgICAgcGF0Y2hbcmVzdWx0X2tleV0gPSBj
b21taXR0ZXIuZnVsbF9uYW1lCi0gICAgICAgICAgICByZXR1cm4gcGF0Y2hbcmVzdWx0X2tleV0K
LQotICAgICAgICBpZiByZWplY3RfaW52YWxpZF9wYXRjaGVzOgotICAgICAgICAgICAgcmVqZWN0
aW9uX2Z1bmN0aW9uKHBhdGNoWydpZCddLCBzZWxmLl9mbGFnX3Blcm1pc3Npb25fcmVqZWN0aW9u
X21lc3NhZ2Uoc2V0dGVyX2VtYWlsLCByZXN1bHRfa2V5KSkKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGxvZygiV2FybmluZywgYXR0YWNobWVudCAlcyBvbiBidWcgJXMgaGFzIGludmFsaWQg
JXMgKCVzKSIgJSAocGF0Y2hbJ2lkJ10sIHBhdGNoWydidWdfaWQnXSwgcmVzdWx0X2tleSwgc2V0
dGVyX2VtYWlsKSkKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBfdmFsaWRhdGVfcmV2
aWV3ZXIoc2VsZiwgcGF0Y2gsIHJlamVjdF9pbnZhbGlkX3BhdGNoZXMpOgotICAgICAgICByZXR1
cm4gc2VsZi5fdmFsaWRhdGVfc2V0dGVyX2VtYWlsKHBhdGNoLCAncmV2aWV3ZXInLCBzZWxmLmNv
bW1pdHRlcnMucmV2aWV3ZXJfYnlfZW1haWwsIHNlbGYucmVqZWN0X3BhdGNoX2Zyb21fcmV2aWV3
X3F1ZXVlLCByZWplY3RfaW52YWxpZF9wYXRjaGVzKQotCi0gICAgZGVmIF92YWxpZGF0ZV9jb21t
aXR0ZXIoc2VsZiwgcGF0Y2gsIHJlamVjdF9pbnZhbGlkX3BhdGNoZXMpOgotICAgICAgICByZXR1
cm4gc2VsZi5fdmFsaWRhdGVfc2V0dGVyX2VtYWlsKHBhdGNoLCAnY29tbWl0dGVyJywgc2VsZi5j
b21taXR0ZXJzLmNvbW1pdHRlcl9ieV9lbWFpbCwgc2VsZi5yZWplY3RfcGF0Y2hfZnJvbV9jb21t
aXRfcXVldWUsIHJlamVjdF9pbnZhbGlkX3BhdGNoZXMpCi0KLSAgICAjIEZJWE1FOiBUaGlzIGlz
IGEgaGFjayB1bnRpbCB3ZSBoYXZlIGEgcmVhbCBBdHRhY2htZW50IG9iamVjdC4KLSAgICAjIF92
YWxpZGF0ZV9jb21taXR0ZXIgYW5kIF92YWxpZGF0ZV9yZXZpZXdlciBmaWxsIGluIHRoZSAncmV2
aWV3ZXInIGFuZCAnY29tbWl0dGVyJwotICAgICMga2V5cyB3aGljaCBvdGhlciBwYXJ0cyBvZiB0
aGUgY29kZSBleHBlY3QgdG8gYmUgZmlsbGVkIGluLgotICAgIGRlZiBfdmFsaWRhdGVfY29tbWl0
dGVyX2FuZF9yZXZpZXdlcihzZWxmLCBwYXRjaCk6Ci0gICAgICAgIHNlbGYuX3ZhbGlkYXRlX3Jl
dmlld2VyKHBhdGNoLCByZWplY3RfaW52YWxpZF9wYXRjaGVzPUZhbHNlKQotICAgICAgICBzZWxm
Ll92YWxpZGF0ZV9jb21taXR0ZXIocGF0Y2gsIHJlamVjdF9pbnZhbGlkX3BhdGNoZXM9RmFsc2Up
Ci0KLSAgICAjIEZJWE1FOiBmZXRjaF9yZXZpZXdlZF9wYXRjaGVzX2Zyb21fYnVnIGFuZCBmZXRj
aF9jb21taXRfcXVldWVfcGF0Y2hlc19mcm9tX2J1ZwotICAgICMgc2hvdWxkIHNoYXJlIG1vcmUg
Y29kZSBhbmQgdXNlIGxpc3QgY29tcHJlaGVuc2lvbnMuCi0gICAgZGVmIGZldGNoX3Jldmlld2Vk
X3BhdGNoZXNfZnJvbV9idWcoc2VsZiwgYnVnX2lkLCByZWplY3RfaW52YWxpZF9wYXRjaGVzPUZh
bHNlKToKLSAgICAgICAgcmV2aWV3ZWRfcGF0Y2hlcyA9IFtdCi0gICAgICAgIGZvciBhdHRhY2ht
ZW50IGluIHNlbGYuZmV0Y2hfYnVnKGJ1Z19pZCkuYXR0YWNobWVudHMoKToKLSAgICAgICAgICAg
IGlmIHNlbGYuX3ZhbGlkYXRlX3Jldmlld2VyKGF0dGFjaG1lbnQsIHJlamVjdF9pbnZhbGlkX3Bh
dGNoZXMpOgotICAgICAgICAgICAgICAgIHJldmlld2VkX3BhdGNoZXMuYXBwZW5kKGF0dGFjaG1l
bnQpCi0gICAgICAgIHJldHVybiByZXZpZXdlZF9wYXRjaGVzCi0KLSAgICBkZWYgZmV0Y2hfY29t
bWl0X3F1ZXVlX3BhdGNoZXNfZnJvbV9idWcoc2VsZiwgYnVnX2lkLCByZWplY3RfaW52YWxpZF9w
YXRjaGVzPUZhbHNlKToKLSAgICAgICAgY29tbWl0X3F1ZXVlX3BhdGNoZXMgPSBbXQotICAgICAg
ICBmb3IgYXR0YWNobWVudCBpbiBzZWxmLmZldGNoX3Jldmlld2VkX3BhdGNoZXNfZnJvbV9idWco
YnVnX2lkLCByZWplY3RfaW52YWxpZF9wYXRjaGVzKToKLSAgICAgICAgICAgIGlmIHNlbGYuX3Zh
bGlkYXRlX2NvbW1pdHRlcihhdHRhY2htZW50LCByZWplY3RfaW52YWxpZF9wYXRjaGVzKToKLSAg
ICAgICAgICAgICAgICBjb21taXRfcXVldWVfcGF0Y2hlcy5hcHBlbmQoYXR0YWNobWVudCkKLSAg
ICAgICAgcmV0dXJuIGNvbW1pdF9xdWV1ZV9wYXRjaGVzCi0KICAgICBkZWYgYXV0aGVudGljYXRl
KHNlbGYpOgogICAgICAgICBpZiBzZWxmLmF1dGhlbnRpY2F0ZWQ6CiAgICAgICAgICAgICByZXR1
cm4KQEAgLTQ0Niw3ICs0OTEsNyBAQCBjbGFzcyBCdWd6aWxsYShvYmplY3QpOgogICAgICAgICBz
ZWxmLmJyb3dzZXIuc3VibWl0KCkKIAogICAgICMgRklYTUU6IFdlIG5lZWQgYSB3YXkgdG8gdGVz
dCB0aGlzIG9uIGEgbGl2ZSBidWd6aWxsYSBpbnN0YW5jZS4KLSAgICBkZWYgX3NldF9mbGFnX29u
X2F0dGFjaG1lbnQoc2VsZiwgYXR0YWNobWVudF9pZCwgZmxhZ19uYW1lLCBmbGFnX3ZhbHVlLCBj
b21tZW50X3RleHQsIGFkZGl0aW9uYWxfY29tbWVudF90ZXh0KToKKyAgICBkZWYgc2V0X2ZsYWdf
b25fYXR0YWNobWVudChzZWxmLCBhdHRhY2htZW50X2lkLCBmbGFnX25hbWUsIGZsYWdfdmFsdWUs
IGNvbW1lbnRfdGV4dCwgYWRkaXRpb25hbF9jb21tZW50X3RleHQpOgogICAgICAgICBzZWxmLmF1
dGhlbnRpY2F0ZSgpCiAKICAgICAgICAgaWYgYWRkaXRpb25hbF9jb21tZW50X3RleHQ6CkBAIC00
NjIsMTQgKzUwNyw2IEBAIGNsYXNzIEJ1Z3ppbGxhKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2Zp
bmRfc2VsZWN0X2VsZW1lbnRfZm9yX2ZsYWcoZmxhZ19uYW1lKS52YWx1ZSA9IChmbGFnX3ZhbHVl
LCkKICAgICAgICAgc2VsZi5icm93c2VyLnN1Ym1pdCgpCiAKLSAgICBkZWYgcmVqZWN0X3BhdGNo
X2Zyb21fY29tbWl0X3F1ZXVlKHNlbGYsIGF0dGFjaG1lbnRfaWQsIGFkZGl0aW9uYWxfY29tbWVu
dF90ZXh0PU5vbmUpOgotICAgICAgICBjb21tZW50X3RleHQgPSAiUmVqZWN0aW5nIHBhdGNoICVz
IGZyb20gY29tbWl0LXF1ZXVlLiIgJSBhdHRhY2htZW50X2lkCi0gICAgICAgIHNlbGYuX3NldF9m
bGFnX29uX2F0dGFjaG1lbnQoYXR0YWNobWVudF9pZCwgJ2NvbW1pdC1xdWV1ZScsICctJywgY29t
bWVudF90ZXh0LCBhZGRpdGlvbmFsX2NvbW1lbnRfdGV4dCkKLQotICAgIGRlZiByZWplY3RfcGF0
Y2hfZnJvbV9yZXZpZXdfcXVldWUoc2VsZiwgYXR0YWNobWVudF9pZCwgYWRkaXRpb25hbF9jb21t
ZW50X3RleHQ9Tm9uZSk6Ci0gICAgICAgIGNvbW1lbnRfdGV4dCA9ICJSZWplY3RpbmcgcGF0Y2gg
JXMgZnJvbSByZXZpZXcgcXVldWUuIiAlIGF0dGFjaG1lbnRfaWQKLSAgICAgICAgc2VsZi5fc2V0
X2ZsYWdfb25fYXR0YWNobWVudChhdHRhY2htZW50X2lkLCAncmV2aWV3JywgJy0nLCBjb21tZW50
X3RleHQsIGFkZGl0aW9uYWxfY29tbWVudF90ZXh0KQotCiAgICAgIyBGSVhNRTogQWxsIG9mIHRo
ZXNlIGJ1ZyBlZGl0aW5nIG1ldGhvZHMgaGF2ZSBhIHJpZGljdWxvdXMgYW1vdW50IG9mIGNvcHkv
cGFzdGUgY29kZS4KICAgICBkZWYgb2Jzb2xldGVfYXR0YWNobWVudChzZWxmLCBhdHRhY2htZW50
X2lkLCBjb21tZW50X3RleHQgPSBOb25lKToKICAgICAgICAgc2VsZi5hdXRoZW50aWNhdGUoKQpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9idWd6aWxsYV91bml0dGVz
dC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYnVnemlsbGFfdW5pdHRlc3QucHkK
aW5kZXggMGQ3ODYwMi4uZDU1NWY3OCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9idWd6aWxsYV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2J1Z3ppbGxhX3VuaXR0ZXN0LnB5CkBAIC0yOSw3ICsyOSw3IEBACiBpbXBvcnQgdW5p
dHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0LCBS
ZXZpZXdlciwgQ29tbWl0dGVyCi1mcm9tIHdlYmtpdHB5LmJ1Z3ppbGxhIGltcG9ydCBCdWd6aWxs
YSwgQnVnemlsbGFRdWVyaWVzLCBwYXJzZV9idWdfaWQKK2Zyb20gd2Via2l0cHkuYnVnemlsbGEg
aW1wb3J0IEJ1Z3ppbGxhLCBCdWd6aWxsYVF1ZXJpZXMsIHBhcnNlX2J1Z19pZCwgQ29tbWl0dGVy
VmFsaWRhdG9yCiBmcm9tIHdlYmtpdHB5Lm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1
cmUKIGZyb20gd2Via2l0cHkubW9jayBpbXBvcnQgTW9jawogCkBAIC00OSw2ICs0OSwxNiBAQCBj
bGFzcyBNb2NrQnJvd3NlcihvYmplY3QpOgogICAgIGRlZiBzdWJtaXQoc2VsZik6CiAgICAgICAg
IHBhc3MKIAorY2xhc3MgQ29tbWl0dGVyVmFsaWRhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CisgICAgZGVmIHRlc3RfZmxhZ19wZXJtaXNzaW9uX3JlamVjdGlvbl9tZXNzYWdlKHNlbGYpOgor
ICAgICAgICB2YWxpZGF0b3IgPSBDb21taXR0ZXJWYWxpZGF0b3IoYnVnemlsbGE9Tm9uZSkKKyAg
ICAgICAgZXhwZWN0ZWRfbWVzc3NhZ2U9IiIiZm9vQGZvby5jb20gZG9lcyBub3QgaGF2ZSByZXZp
ZXcgcGVybWlzc2lvbnMgYWNjb3JkaW5nIHRvIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nl
ci90cnVuay9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1pdHRlcnMucHkuCisKKy0g
SWYgeW91IGRvIG5vdCBoYXZlIHJldmlldyByaWdodHMgcGxlYXNlIHJlYWQgaHR0cDovL3dlYmtp
dC5vcmcvY29kaW5nL2NvbnRyaWJ1dGluZy5odG1sIGZvciBpbnN0cnVjdGlvbnMgb24gaG93IHRv
IHVzZSBidWd6aWxsYSBmbGFncy4KKworLSBJZiB5b3UgaGF2ZSByZXZpZXcgcmlnaHRzIHBsZWFz
ZSBjb3JyZWN0IHRoZSBlcnJvciBpbiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1p
dHRlcnMucHkgYnkgYWRkaW5nIHlvdXJzZWxmIHRvIHRoZSBmaWxlIChubyByZXZpZXcgbmVlZGVk
KS4gIER1ZSB0byBidWcgMzAwODQgdGhlIGNvbW1pdC1xdWV1ZSB3aWxsIHJlcXVpcmUgYSByZXN0
YXJ0IGFmdGVyIHlvdXIgY2hhbmdlLiAgUGxlYXNlIGNvbnRhY3QgZXNlaWRlbEBjaHJvbWl1bS5v
cmcgdG8gcmVxdWVzdCBhIGNvbW1pdC1xdWV1ZSByZXN0YXJ0LiAgQWZ0ZXIgcmVzdGFydCB0aGUg
Y29tbWl0LXF1ZXVlIHdpbGwgY29ycmVjdGx5IHJlc3BlY3QgeW91ciByZXZpZXcgcmlnaHRzLiIi
IgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbGlkYXRvci5fZmxhZ19wZXJtaXNzaW9uX3Jl
amVjdGlvbl9tZXNzYWdlKCJmb29AZm9vLmNvbSIsICJyZXZpZXciKSwgZXhwZWN0ZWRfbWVzc3Nh
Z2UpCisKIAogY2xhc3MgQnVnemlsbGFUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBfZXhh
bXBsZV9hdHRhY2htZW50ID0gJycnCkBAIC0xNzgsNyArMTg4LDcgQEAgWkVacGJtbHphRXh2WVdS
WGFYUm9VbVZoYzI5dU9uSmxZWE52YmwwN0NpdDlDaXNLSUVCbGJtUUtJQW9nSTJWdVpHbG1DZz09
CiAgICAgICAgICJhc3NpZ25lZF90b19lbWFpbCIgOiAid2Via2l0LXVuYXNzaWduZWRAbGlzdHMu
d2Via2l0Lm9yZyIsCiAgICAgICAgICJhdHRhY2htZW50cyIgOiBbewogICAgICAgICAgICAgJ25h
bWUnOiB1J1BhdGNoJywKLSAgICAgICAgICAgICd1cmwnOiAnaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvYXR0YWNobWVudC5jZ2k/aWQ9NDU1NDgnLAorICAgICAgICAgICAgJ3VybCcgOiAiaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9NDU1NDgiLAogICAgICAgICAgICAg
J2lzX29ic29sZXRlJzogRmFsc2UsCiAgICAgICAgICAgICAncmV2aWV3JzogJz8nLAogICAgICAg
ICAgICAgJ2lzX3BhdGNoJzogVHJ1ZSwKQEAgLTIzMSwxNSArMjQxLDYgQEAgWkVacGJtbHphRXh2
WVdSWGFYUm9VbVZoYzI5dU9uSmxZWE52YmwwN0NpdDlDaXNLSUVCbGJtUUtJQW9nSTJWdVpHbG1D
Zz09CiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJBZGRpbmcgWydhZGFtQGV4YW1wbGUuY29t
J10gdG8gdGhlIENDIGxpc3QgZm9yIGJ1ZyA0MlxuIgogICAgICAgICBPdXRwdXRDYXB0dXJlKCku
YXNzZXJ0X291dHB1dHMoc2VsZiwgYnVnemlsbGEuYWRkX2NjX3RvX2J1ZywgWzQyLCBbImFkYW1A
ZXhhbXBsZS5jb20iXV0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAKLSAgICBk
ZWYgdGVzdF9mbGFnX3Blcm1pc3Npb25fcmVqZWN0aW9uX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAg
IGJ1Z3ppbGxhID0gQnVnemlsbGEoKQotICAgICAgICBleHBlY3RlZF9tZXNzc2FnZT0iIiJmb29A
Zm9vLmNvbSBkb2VzIG5vdCBoYXZlIHJldmlldyBwZXJtaXNzaW9ucyBhY2NvcmRpbmcgdG8gaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbWl0dGVycy5weS4KLQotLSBJZiB5b3UgZG8gbm90IGhhdmUgcmV2aWV3IHJpZ2h0
cyBwbGVhc2UgcmVhZCBodHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29udHJpYnV0aW5nLmh0bWwg
Zm9yIGluc3RydWN0aW9ucyBvbiBob3cgdG8gdXNlIGJ1Z3ppbGxhIGZsYWdzLgotCi0tIElmIHlv
dSBoYXZlIHJldmlldyByaWdodHMgcGxlYXNlIGNvcnJlY3QgdGhlIGVycm9yIGluIFdlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbWl0dGVycy5weSBieSBhZGRpbmcgeW91cnNlbGYgdG8g
dGhlIGZpbGUgKG5vIHJldmlldyBuZWVkZWQpLiAgRHVlIHRvIGJ1ZyAzMDA4NCB0aGUgY29tbWl0
LXF1ZXVlIHdpbGwgcmVxdWlyZSBhIHJlc3RhcnQgYWZ0ZXIgeW91ciBjaGFuZ2UuICBQbGVhc2Ug
Y29udGFjdCBlc2VpZGVsQGNocm9taXVtLm9yZyB0byByZXF1ZXN0IGEgY29tbWl0LXF1ZXVlIHJl
c3RhcnQuICBBZnRlciByZXN0YXJ0IHRoZSBjb21taXQtcXVldWUgd2lsbCBjb3JyZWN0bHkgcmVz
cGVjdCB5b3VyIHJldmlldyByaWdodHMuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVn
emlsbGEuX2ZsYWdfcGVybWlzc2lvbl9yZWplY3Rpb25fbWVzc2FnZSgiZm9vQGZvby5jb20iLCAi
cmV2aWV3IiksIGV4cGVjdGVkX21lc3NzYWdlKQotCiAKIGNsYXNzIEJ1Z3ppbGxhUXVlcmllc1Rl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIF9zYW1wbGVfcmVxdWVzdF9wYWdlID0gIiIiCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1hbmRzL2Rvd25sb2Fk
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tYW5kcy9kb3dubG9hZC5weQpp
bmRleCBiYjhjMDFhLi40OWE2ODYyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1hbmRzL2Rvd25sb2FkLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbWFuZHMvZG93bmxvYWQucHkKQEAgLTg2LDEwICs4Niw3IEBAIElmIGEgYnVnIGlk
IGlzIHByb3ZpZGVkLCBvciBvbmUgY2FuIGJlIGZvdW5kIGluIHRoZSBDaGFuZ2VMb2cgbGFuZCB3
aWxsIHVwZGF0ZSB0CiAKICAgICBkZWYgX3ByZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJn
cywgdG9vbCk6CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAicGF0Y2giIDogewotICAg
ICAgICAgICAgICAgICJpZCIgOiBOb25lLAotICAgICAgICAgICAgICAgICJidWdfaWQiIDogKGFy
Z3MgYW5kIGFyZ3NbMF0pIG9yIHBhcnNlX2J1Z19pZCh0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaCgp
KSwKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICJidWdfaWQiIDogKGFyZ3MgYW5kIGFyZ3Nb
MF0pIG9yIHBhcnNlX2J1Z19pZCh0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaCgpKSwKICAgICAgICAg
fQogCiAKQEAgLTEwNCw4ICsxMDEsNyBAQCBjbGFzcyBBYnN0cmFjdFBhdGNoUHJvY2Vzc2luZ0Nv
bW1hbmQoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgIGRlZiBfY29sbGVjdF9wYXRj
aGVzX2J5X2J1ZyhwYXRjaGVzKToKICAgICAgICAgYnVnc190b19wYXRjaGVzID0ge30KICAgICAg
ICAgZm9yIHBhdGNoIGluIHBhdGNoZXM6Ci0gICAgICAgICAgICBidWdfaWQgPSBwYXRjaFsiYnVn
X2lkIl0KLSAgICAgICAgICAgIGJ1Z3NfdG9fcGF0Y2hlc1tidWdfaWRdID0gYnVnc190b19wYXRj
aGVzLmdldChidWdfaWQsIFtdKSArIFtwYXRjaF0KKyAgICAgICAgICAgIGJ1Z3NfdG9fcGF0Y2hl
c1twYXRjaC5idWdfaWQoKV0gPSBidWdzX3RvX3BhdGNoZXMuZ2V0KHBhdGNoLmJ1Z19pZCgpLCBb
XSkgKyBbcGF0Y2hdCiAgICAgICAgIHJldHVybiBidWdzX3RvX3BhdGNoZXMKIAogICAgIGRlZiBl
eGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgpAQCAtMTQ4LDcgKzE0NCw3IEBAIGNs
YXNzIFByb2Nlc3NCdWdzTWl4aW4ob2JqZWN0KToKICAgICBkZWYgX2ZldGNoX2xpc3Rfb2ZfcGF0
Y2hlc190b19wcm9jZXNzKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICBhbGxf
cGF0Y2hlcyA9IFtdCiAgICAgICAgIGZvciBidWdfaWQgaW4gYXJnczoKLSAgICAgICAgICAgIHBh
dGNoZXMgPSB0b29sLmJ1Z3MuZmV0Y2hfcmV2aWV3ZWRfcGF0Y2hlc19mcm9tX2J1ZyhidWdfaWQp
CisgICAgICAgICAgICBwYXRjaGVzID0gdG9vbC5idWdzLmZldGNoX2J1ZyhidWdfaWQpLnJldmll
d2VkX3BhdGNoZXMoKQogICAgICAgICAgICAgbG9nKCIlcyBmb3VuZCBvbiBidWcgJXMuIiAlIChw
bHVyYWxpemUoInJldmlld2VkIHBhdGNoIiwgbGVuKHBhdGNoZXMpKSwgYnVnX2lkKSkKICAgICAg
ICAgICAgIGFsbF9wYXRjaGVzICs9IHBhdGNoZXMKICAgICAgICAgcmV0dXJuIGFsbF9wYXRjaGVz
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1hbmRzL2Rvd25s
b2FkX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tYW5kcy9k
b3dubG9hZF91bml0dGVzdC5weQppbmRleCA4MWI5ZGE1Li45OTU5YjYwIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbWFuZHMvZG93bmxvYWRfdW5p
dHRlc3QucHkKQEAgLTgyLDEwICs4MiwyMSBAQCBjbGFzcyBEb3dubG9hZENvbW1hbmRzVGVzdChD
b21tYW5kc1Rlc3QpOgogICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoQnVpbGRB
dHRhY2htZW50KCksIFsxOTddLCBvcHRpb25zPXNlbGYuX2RlZmF1bHRfb3B0aW9ucygpLCBleHBl
Y3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQogCiAgICAgZGVmIHRlc3RfbGFuZF9hdHRhY2ht
ZW50KHNlbGYpOgotICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiUHJvY2Vzc2luZyAxIHBhdGNo
IGZyb20gMSBidWcuXG5VcGRhdGluZyB3b3JraW5nIGRpcmVjdG9yeVxuUHJvY2Vzc2luZyBwYXRj
aCAxOTcgZnJvbSBidWcgNDIuXG5CdWlsZGluZyBXZWJLaXRcblJ1bm5pbmcgUHl0aG9uIHVuaXQg
dGVzdHNcblJ1bm5pbmcgUGVybCB1bml0IHRlc3RzXG5SdW5uaW5nIEphdmFTY3JpcHRDb3JlIHRl
c3RzXG5SdW5uaW5nIHJ1bi13ZWJraXQtdGVzdHNcbiIKKyAgICAgICAgIyBGSVhNRTogVGhpcyBl
eHBlY3RlZCByZXN1bHQgaXMgaW1wZXJmZWN0LCBub3RpY2UgaG93IGl0J3Mgc2VlaW5nIHRoZSBz
YW1lIHBhdGNoIGFzIHN0aWxsIHRoZXJlIGFmdGVyIGl0IHRob3VnaHQgaXQgd291bGQgaGF2ZSBj
bGVhcmVkIHRoZSBmbGFncy4KKyAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIiIiUHJvY2Vzc2lu
ZyAxIHBhdGNoIGZyb20gMSBidWcuCitVcGRhdGluZyB3b3JraW5nIGRpcmVjdG9yeQorUHJvY2Vz
c2luZyBwYXRjaCAxOTcgZnJvbSBidWcgNDIuCitCdWlsZGluZyBXZWJLaXQKK1J1bm5pbmcgUHl0
aG9uIHVuaXQgdGVzdHMKK1J1bm5pbmcgUGVybCB1bml0IHRlc3RzCitSdW5uaW5nIEphdmFTY3Jp
cHRDb3JlIHRlc3RzCitSdW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMKK05vdCBjbG9zaW5nIGJ1ZyA0
MiBhcyBhdHRhY2htZW50IDE5NyBoYXMgcmV2aWV3PSsuICBBc3N1bWluZyB0aGVyZSBhcmUgbW9y
ZSBwYXRjaGVzIHRvIGxhbmQgZnJvbSB0aGlzIGJ1Zy4KKyIiIgogICAgICAgICBzZWxmLmFzc2Vy
dF9leGVjdXRlX291dHB1dHMoTGFuZEF0dGFjaG1lbnQoKSwgWzE5N10sIG9wdGlvbnM9c2VsZi5f
ZGVmYXVsdF9vcHRpb25zKCksIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAKICAg
ICBkZWYgdGVzdF9sYW5kX3BhdGNoZXMoc2VsZik6CisgICAgICAgICMgRklYTUU6IFRoaXMgZXhw
ZWN0ZWQgcmVzdWx0IGlzIGltcGVyZmVjdCwgbm90aWNlIGhvdyBpdCdzIHNlZWluZyB0aGUgc2Ft
ZSBwYXRjaCBhcyBzdGlsbCB0aGVyZSBhZnRlciBpdCB0aG91Z2h0IGl0IHdvdWxkIGhhdmUgY2xl
YXJlZCB0aGUgZmxhZ3MuCiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiIjIgcmV2aWV3ZWQg
cGF0Y2hlcyBmb3VuZCBvbiBidWcgNDIuCiBQcm9jZXNzaW5nIDIgcGF0Y2hlcyBmcm9tIDEgYnVn
LgogVXBkYXRpbmcgd29ya2luZyBkaXJlY3RvcnkKQEAgLTk1LDYgKzEwNiw3IEBAIFJ1bm5pbmcg
UHl0aG9uIHVuaXQgdGVzdHMKIFJ1bm5pbmcgUGVybCB1bml0IHRlc3RzCiBSdW5uaW5nIEphdmFT
Y3JpcHRDb3JlIHRlc3RzCiBSdW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMKK05vdCBjbG9zaW5nIGJ1
ZyA0MiBhcyBhdHRhY2htZW50IDE5NyBoYXMgcmV2aWV3PSsuICBBc3N1bWluZyB0aGVyZSBhcmUg
bW9yZSBwYXRjaGVzIHRvIGxhbmQgZnJvbSB0aGlzIGJ1Zy4KIFVwZGF0aW5nIHdvcmtpbmcgZGly
ZWN0b3J5CiBQcm9jZXNzaW5nIHBhdGNoIDEyOCBmcm9tIGJ1ZyA0Mi4KIEJ1aWxkaW5nIFdlYktp
dApAQCAtMTAyLDYgKzExNCw3IEBAIFJ1bm5pbmcgUHl0aG9uIHVuaXQgdGVzdHMKIFJ1bm5pbmcg
UGVybCB1bml0IHRlc3RzCiBSdW5uaW5nIEphdmFTY3JpcHRDb3JlIHRlc3RzCiBSdW5uaW5nIHJ1
bi13ZWJraXQtdGVzdHMKK05vdCBjbG9zaW5nIGJ1ZyA0MiBhcyBhdHRhY2htZW50IDE5NyBoYXMg
cmV2aWV3PSsuICBBc3N1bWluZyB0aGVyZSBhcmUgbW9yZSBwYXRjaGVzIHRvIGxhbmQgZnJvbSB0
aGlzIGJ1Zy4KICIiIgogICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoTGFuZEZy
b21CdWcoKSwgWzQyXSwgb3B0aW9ucz1zZWxmLl9kZWZhdWx0X29wdGlvbnMoKSwgZXhwZWN0ZWRf
c3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tYW5kcy9lYXJseV93YXJuaW5nX3N5c3RlbS5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbWFuZHMvZWFybHlfd2FybmluZ19zeXN0ZW0ucHkKaW5kZXgg
NjMxYjQxMS4uNGEyMTg2YyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tYW5kcy9lYXJseV93YXJuaW5nX3N5c3RlbS5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1hbmRzL2Vhcmx5X3dhcm5pbmdfc3lzdGVtLnB5CkBAIC01OSw3ICs1
OSw3IEBAIGNsYXNzIEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVtKEFic3RyYWN0UmV2aWV3UXVl
dWUpOgogICAgICAgICAgICAgIi0tbm9uLWludGVyYWN0aXZlIiwKICAgICAgICAgICAgICItLXBh
cmVudC1jb21tYW5kPSVzIiAlIHNlbGYubmFtZSwKICAgICAgICAgICAgICItLW5vLXVwZGF0ZSIs
Ci0gICAgICAgICAgICBwYXRjaFsiaWQiXV0pCisgICAgICAgICAgICBwYXRjaC5pZCgpXSkKIAog
ICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBoYW5kbGVfc2NyaXB0X2Vycm9yKGNscywgdG9vbCwg
c3RhdGUsIHNjcmlwdF9lcnJvcik6CkBAIC02OCw4ICs2OCw4IEBAIGNsYXNzIEFic3RyYWN0RWFy
bHlXYXJuaW5nU3lzdGVtKEFic3RyYWN0UmV2aWV3UXVldWUpOgogICAgICAgICBpZiBpc19zdm5f
YXBwbHk6CiAgICAgICAgICAgICBRdWV1ZUVuZ2luZS5leGl0X2FmdGVyX2hhbmRsZWRfZXJyb3Io
ZSkKICAgICAgICAgcmVzdWx0c19saW5rID0gdG9vbC5zdGF0dXNfc2VydmVyLnJlc3VsdHNfdXJs
X2Zvcl9zdGF0dXMoc3RhdHVzX2lkKQotICAgICAgICBtZXNzYWdlID0gIkF0dGFjaG1lbnQgJXMg
ZGlkIG5vdCBidWlsZCBvbiAlczpcbkJ1aWxkIG91dHB1dDogJXMiICUgKHN0YXRlWyJwYXRjaCJd
WyJpZCJdLCBjbHMucG9ydF9uYW1lLCByZXN1bHRzX2xpbmspCi0gICAgICAgIHRvb2wuYnVncy5w
b3N0X2NvbW1lbnRfdG9fYnVnKHN0YXRlWyJwYXRjaCJdWyJidWdfaWQiXSwgbWVzc2FnZSwgY2M9
Y2xzLndhdGNoZXJzKQorICAgICAgICBtZXNzYWdlID0gIkF0dGFjaG1lbnQgJXMgZGlkIG5vdCBi
dWlsZCBvbiAlczpcbkJ1aWxkIG91dHB1dDogJXMiICUgKHN0YXRlWyJwYXRjaCJdLmlkKCksIGNs
cy5wb3J0X25hbWUsIHJlc3VsdHNfbGluaykKKyAgICAgICAgdG9vbC5idWdzLnBvc3RfY29tbWVu
dF90b19idWcoc3RhdGVbInBhdGNoIl0uYnVnX2lkKCksIG1lc3NhZ2UsIGNjPWNscy53YXRjaGVy
cykKICAgICAgICAgZXhpdCgxKQogCiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBBYnN0cmFj
dENvbW1pdHRlck9ubHlFV1MoQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0pOgogICAgICAgICBz
ZWxmLl9jb21taXR0ZXJzID0gY29tbWl0dGVycwogCiAgICAgZGVmIHByb2Nlc3Nfd29ya19pdGVt
KHNlbGYsIHBhdGNoKToKLSAgICAgICAgaWYgbm90IHNlbGYuX2NvbW1pdHRlcnMuY29tbWl0dGVy
X2J5X2VtYWlsKHBhdGNoWyJhdHRhY2hlcl9lbWFpbCJdKToKKyAgICAgICAgaWYgbm90IHNlbGYu
X2NvbW1pdHRlcnMuY29tbWl0dGVyX2J5X2VtYWlsKHBhdGNoLmF0dGFjaGVyX2VtYWlsKCkpOgog
ICAgICAgICAgICAgc2VsZi5fZGlkX2Vycm9yKHBhdGNoLCAiJXMgY2Fubm90IHByb2Nlc3MgcGF0
Y2hlcyBmcm9tIG5vbi1jb21taXR0ZXJzIDooIiAlIHNlbGYubmFtZSkKICAgICAgICAgICAgIHJl
dHVybgogICAgICAgICBBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbS5wcm9jZXNzX3dvcmtfaXRl
bShzZWxmLCBwYXRjaCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbWFuZHMvcXVlcmllcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbWFu
ZHMvcXVlcmllcy5weQppbmRleCAxODEwOGEwLi42ZDEyMGE5IDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1hbmRzL3F1ZXJpZXMucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tYW5kcy9xdWVyaWVzLnB5CkBAIC01NSw3ICs1NSw3IEBA
IGNsYXNzIFBhdGNoZXNUb0NvbW1pdChBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAg
ICAgIHBhdGNoZXMgPSB0b29sLmJ1Z3MucXVlcmllcy5mZXRjaF9wYXRjaGVzX2Zyb21fY29tbWl0
X3F1ZXVlKCkKICAgICAgICAgbG9nKCJQYXRjaGVzIGluIGNvbW1pdCBxdWV1ZToiKQogICAgICAg
ICBmb3IgcGF0Y2ggaW4gcGF0Y2hlczoKLSAgICAgICAgICAgIHByaW50ICIlcyIgJSBwYXRjaFsi
dXJsIl0KKyAgICAgICAgICAgIHByaW50IHBhdGNoLnVybCgpCiAKIAogY2xhc3MgUGF0Y2hlc1Rv
Q29tbWl0UXVldWUoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgpAQCAtNjksMjggKzY5LDI3
IEBAIGNsYXNzIFBhdGNoZXNUb0NvbW1pdFF1ZXVlKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5k
KToKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX25lZWRzX2NvbW1pdF9xdWV1ZShwYXRj
aCk6Ci0gICAgICAgIGNvbW1pdF9xdWV1ZV9mbGFnID0gcGF0Y2guZ2V0KCJjb21taXQtcXVldWUi
KQotICAgICAgICBpZiAoY29tbWl0X3F1ZXVlX2ZsYWcgYW5kIGNvbW1pdF9xdWV1ZV9mbGFnID09
ICcrJyk6ICMgSWYgaXQncyBhbHJlYWR5IGNxKywgaWdub3JlIHRoZSBwYXRjaC4KLSAgICAgICAg
ICAgIGxvZygiJXMgYWxyZWFkeSBoYXMgY3E9JXMiICUgKHBhdGNoWyJpZCJdLCBjb21taXRfcXVl
dWVfZmxhZykpCisgICAgICAgIGlmIHBhdGNoLmNvbW1pdF9xdWV1ZSgpID09ICcrJzogIyBJZiBp
dCdzIGFscmVhZHkgY3ErLCBpZ25vcmUgdGhlIHBhdGNoLgorICAgICAgICAgICAgbG9nKCIlcyBh
bHJlYWR5IGhhcyBjcT0lcyIgJSAocGF0Y2guaWQoKSwgcGF0Y2guY29tbWl0X3F1ZXVlKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgIyBXZSBvbmx5IG5lZWQgdG8gd29y
cnkgYWJvdXQgcGF0Y2hlcyBmcm9tIGNvbnRyaWJ1dGVycyB3aG8gYXJlIG5vdCB5ZXQgY29tbWl0
dGVycy4KLSAgICAgICAgY29tbWl0dGVyX3JlY29yZCA9IENvbW1pdHRlckxpc3QoKS5jb21taXR0
ZXJfYnlfZW1haWwocGF0Y2hbImF0dGFjaGVyX2VtYWlsIl0pCisgICAgICAgIGNvbW1pdHRlcl9y
ZWNvcmQgPSBDb21taXR0ZXJMaXN0KCkuY29tbWl0dGVyX2J5X2VtYWlsKHBhdGNoLmF0dGFjaGVy
X2VtYWlsKCkpCiAgICAgICAgIGlmIGNvbW1pdHRlcl9yZWNvcmQ6Ci0gICAgICAgICAgICBsb2co
IiVzIGNvbW1pdHRlciA9ICVzIiAlIChwYXRjaFsiaWQiXSwgY29tbWl0dGVyX3JlY29yZCkpCisg
ICAgICAgICAgICBsb2coIiVzIGNvbW1pdHRlciA9ICVzIiAlIChwYXRjaC5pZCgpLCBjb21taXR0
ZXJfcmVjb3JkKSkKICAgICAgICAgcmV0dXJuIG5vdCBjb21taXR0ZXJfcmVjb3JkCiAKICAgICBk
ZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAgICAgICAgcGF0Y2hlcyA9
IHRvb2wuYnVncy5xdWVyaWVzLmZldGNoX3BhdGNoZXNfZnJvbV9wZW5kaW5nX2NvbW1pdF9saXN0
KCkKICAgICAgICAgcGF0Y2hlc19uZWVkaW5nX2NxID0gZmlsdGVyKHNlbGYuX25lZWRzX2NvbW1p
dF9xdWV1ZSwgcGF0Y2hlcykKICAgICAgICAgaWYgb3B0aW9ucy5idWdzOgotICAgICAgICAgICAg
YnVnc19uZWVkaW5nX2NxID0gbWFwKGxhbWJkYSBwYXRjaDogcGF0Y2hbJ2J1Z19pZCddLCBwYXRj
aGVzX25lZWRpbmdfY3EpCisgICAgICAgICAgICBidWdzX25lZWRpbmdfY3EgPSBtYXAobGFtYmRh
IHBhdGNoOiBwYXRjaC5idWdfaWQoKSwgcGF0Y2hlc19uZWVkaW5nX2NxKQogICAgICAgICAgICAg
YnVnc19uZWVkaW5nX2NxID0gc29ydGVkKHNldChidWdzX25lZWRpbmdfY3EpKQogICAgICAgICAg
ICAgZm9yIGJ1Z19pZCBpbiBidWdzX25lZWRpbmdfY3E6CiAgICAgICAgICAgICAgICAgcHJpbnQg
IiVzIiAlIHRvb2wuYnVncy5idWdfdXJsX2Zvcl9idWdfaWQoYnVnX2lkKQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgZm9yIHBhdGNoIGluIHBhdGNoZXNfbmVlZGluZ19jcToKLSAgICAgICAg
ICAgICAgICBwcmludCAiJXMiICUgdG9vbC5idWdzLmF0dGFjaG1lbnRfdXJsX2Zvcl9pZChwYXRj
aFsiaWQiXSwgYWN0aW9uPSJlZGl0IikKKyAgICAgICAgICAgICAgICBwcmludCAiJXMiICUgdG9v
bC5idWdzLmF0dGFjaG1lbnRfdXJsX2Zvcl9pZChwYXRjaC5pZCgpLCBhY3Rpb249ImVkaXQiKQog
CiAKIGNsYXNzIFBhdGNoZXNUb1JldmlldyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CkBA
IC0xMDQsMTggKzEwMyw2IEBAIGNsYXNzIFBhdGNoZXNUb1JldmlldyhBYnN0cmFjdERlY2xhcmF0
aXZlQ29tbWFuZCk6CiAgICAgICAgICAgICBwcmludCBwYXRjaF9pZAogCiAKLWNsYXNzIFJldmll
d2VkUGF0Y2hlcyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICJyZXZp
ZXdlZC1wYXRjaGVzIgotICAgIGhlbHBfdGV4dCA9ICJMaXN0IHIrJ2QgcGF0Y2hlcyBvbiBhIGJ1
ZyIKLSAgICBhcmd1bWVudF9uYW1lcyA9ICJCVUdJRCIKLQotICAgIGRlZiBleGVjdXRlKHNlbGYs
IG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICBidWdfaWQgPSBhcmdzWzBdCi0gICAgICAg
IHBhdGNoZXNfdG9fbGFuZCA9IHRvb2wuYnVncy5mZXRjaF9yZXZpZXdlZF9wYXRjaGVzX2Zyb21f
YnVnKGJ1Z19pZCkKLSAgICAgICAgZm9yIHBhdGNoIGluIHBhdGNoZXNfdG9fbGFuZDoKLSAgICAg
ICAgICAgIHByaW50ICIlcyIgJSBwYXRjaFsidXJsIl0KLQotCiBjbGFzcyBUcmVlU3RhdHVzKEFi
c3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKICAgICBuYW1lID0gInRyZWUtc3RhdHVzIgogICAg
IGhlbHBfdGV4dCA9ICJQcmludCB0aGUgc3RhdHVzIG9mIHRoZSAlcyBidWlsZGJvdHMiICUgQnVp
bGRCb3QuZGVmYXVsdF9ob3N0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1hbmRzL3F1ZXJpZXNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1hbmRzL3F1ZXJpZXNfdW5pdHRlc3QucHkKaW5kZXggYzdmZDdhOC4uZGE3N2Jl
MSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tYW5kcy9xdWVy
aWVzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbWFu
ZHMvcXVlcmllc191bml0dGVzdC5weQpAQCAtNTksMTAgKzU5LDYgQEAgY2xhc3MgUXVlcnlDb21t
YW5kc1Rlc3QoQ29tbWFuZHNUZXN0KToKICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIlBhdGNo
ZXMgcGVuZGluZyByZXZpZXc6XG4iCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0
cyhQYXRjaGVzVG9SZXZpZXcoKSwgTm9uZSwgZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRl
cnIpCiAKLSAgICBkZWYgdGVzdF9yZXZpZXdlZF9wYXRjaGVzKHNlbGYpOgotICAgICAgICBleHBl
Y3RlZF9zdGRvdXQgPSAiaHR0cDovL2V4YW1wbGUuY29tLzE5N1xuaHR0cDovL2V4YW1wbGUuY29t
LzEyOFxuIgotICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoUmV2aWV3ZWRQYXRj
aGVzKCksIFs0Ml0sIGV4cGVjdGVkX3N0ZG91dCkKLQogICAgIGRlZiB0ZXN0X3RyZWVfc3RhdHVz
KHNlbGYpOgogICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAib2sgICA6IEJ1aWxkZXIxXG5vayAg
IDogQnVpbGRlcjJcbiIKICAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKFRyZWVT
dGF0dXMoKSwgTm9uZSwgZXhwZWN0ZWRfc3Rkb3V0KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tYW5kcy9xdWV1ZXMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1hbmRzL3F1ZXVlcy5weQppbmRleCA3MDY0NmI4Li45MjQ1Yzg1IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1hbmRzL3F1ZXVlcy5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1hbmRzL3F1ZXVlcy5weQpAQCAt
MzUsNiArMzUsNyBAQCBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogZnJvbSBvcHRwYXJz
ZSBpbXBvcnQgbWFrZV9vcHRpb24KIGZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCiAKK2Zy
b20gd2Via2l0cHkuYnVnemlsbGEgaW1wb3J0IENvbW1pdHRlclZhbGlkYXRvcgogZnJvbSB3ZWJr
aXRweS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmdyYW1tYXIg
aW1wb3J0IHBsdXJhbGl6ZQogZnJvbSB3ZWJraXRweS53ZWJraXRfbG9nZ2luZyBpbXBvcnQgZXJy
b3IsIGxvZwpAQCAtODMsNyArODQsNyBAQCBjbGFzcyBBYnN0cmFjdFF1ZXVlKENvbW1hbmQsIFF1
ZXVlRW5naW5lRGVsZWdhdGUpOgogICAgICAgICByZXR1cm4gIiVzLmxvZyIgJSBzZWxmLm5hbWUK
IAogICAgIGRlZiB3b3JrX2l0ZW1fbG9nX3BhdGgoc2VsZiwgcGF0Y2gpOgotICAgICAgICByZXR1
cm4gb3MucGF0aC5qb2luKCIlcy1sb2dzIiAlIHNlbGYubmFtZSwgIiVzLmxvZyIgJSBwYXRjaFsi
YnVnX2lkIl0pCisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oIiVzLWxvZ3MiICUgc2VsZi5u
YW1lLCAiJXMubG9nIiAlIHBhdGNoLmJ1Z19pZCgpKQogCiAgICAgZGVmIGJlZ2luX3dvcmtfcXVl
dWUoc2VsZik6CiAgICAgICAgIGxvZygiQ0FVVElPTjogJXMgd2lsbCBkaXNjYXJkIGFsbCBsb2Nh
bCBjaGFuZ2VzIGluIFwiJXNcIiIgJSAoc2VsZi5uYW1lLCBzZWxmLnRvb2wuc2NtKCkuY2hlY2tv
dXRfcm9vdCkpCkBAIC0xNDAsMTQgKzE0MSwxNiBAQCBjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFj
dFF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIpOgogCiAgICAgZGVmIGJlZ2luX3dvcmtf
cXVldWUoc2VsZik6CiAgICAgICAgIEFic3RyYWN0UXVldWUuYmVnaW5fd29ya19xdWV1ZShzZWxm
KQorICAgICAgICBzZWxmLmNvbW1pdHRlcl92YWxpZGF0b3IgPSBDb21taXR0ZXJWYWxpZGF0b3Io
c2VsZi50b29sLmJ1Z3MpCiAKICAgICBkZWYgbmV4dF93b3JrX2l0ZW0oc2VsZik6Ci0gICAgICAg
IHBhdGNoZXMgPSBzZWxmLnRvb2wuYnVncy5xdWVyaWVzLmZldGNoX3BhdGNoZXNfZnJvbV9jb21t
aXRfcXVldWUocmVqZWN0X2ludmFsaWRfcGF0Y2hlcz1UcnVlKQorICAgICAgICBwYXRjaGVzID0g
c2VsZi50b29sLmJ1Z3MucXVlcmllcy5mZXRjaF9wYXRjaGVzX2Zyb21fY29tbWl0X3F1ZXVlKCkK
KyAgICAgICAgcGF0Y2hlcyA9IHNlbGYuY29tbWl0dGVyX3ZhbGlkYXRvci5wYXRjaGVzX2FmdGVy
X3JlamVjdGluZ19pbnZhbGlkX2NvbW1pdGVyc19hbmRfcmV2aWV3ZXJzKHBhdGNoZXMpCiAgICAg
ICAgIGlmIG5vdCBwYXRjaGVzOgogICAgICAgICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1cygiRW1w
dHkgcXVldWUiKQogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgIyBPbmx5IGJvdGhl
ciBsb2dnaW5nIGlmIHdlIGhhdmUgcGF0Y2hlcyBpbiB0aGUgcXVldWUuCi0gICAgICAgIHNlbGYu
bG9nX3Byb2dyZXNzKFtwYXRjaFsnaWQnXSBmb3IgcGF0Y2ggaW4gcGF0Y2hlc10pCisgICAgICAg
IHNlbGYubG9nX3Byb2dyZXNzKFtwYXRjaC5pZCgpIGZvciBwYXRjaCBpbiBwYXRjaGVzXSkKICAg
ICAgICAgcmV0dXJuIHBhdGNoZXNbMF0KIAogICAgIGRlZiBfY2FuX2J1aWxkX2FuZF90ZXN0KHNl
bGYpOgpAQCAtMTc4LDE4ICsxODEsMTggQEAgY2xhc3MgQ29tbWl0UXVldWUoQWJzdHJhY3RRdWV1
ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyKToKIAogICAgIGRlZiBwcm9jZXNzX3dvcmtfaXRl
bShzZWxmLCBwYXRjaCk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2NjX3dhdGNo
ZXJzKHBhdGNoWyJidWdfaWQiXSkKKyAgICAgICAgICAgIHNlbGYuX2NjX3dhdGNoZXJzKHBhdGNo
LmJ1Z19pZCgpKQogICAgICAgICAgICAgIyBXZSBwYXNzIC0tbm8tdXBkYXRlIGhlcmUgYmVjYXVz
ZSB3ZSd2ZSBhbHJlYWR5IHZhbGlkYXRlZAogICAgICAgICAgICAgIyB0aGF0IHRoZSBjdXJyZW50
IHJldmlzaW9uIGFjdHVhbGx5IGJ1aWxkcyBhbmQgcGFzc2VzIHRoZSB0ZXN0cy4KICAgICAgICAg
ICAgICMgSWYgd2UgdXBkYXRlLCB3ZSByaXNrIG1vdmluZyB0byBhIHJldmlzaW9uIHRoYXQgZG9l
c24ndCEKLSAgICAgICAgICAgIHNlbGYucnVuX3dlYmtpdF9wYXRjaChbImxhbmQtYXR0YWNobWVu
dCIsICItLWZvcmNlLWNsZWFuIiwgIi0tbm9uLWludGVyYWN0aXZlIiwgIi0tbm8tdXBkYXRlIiwg
Ii0tcGFyZW50LWNvbW1hbmQ9Y29tbWl0LXF1ZXVlIiwgIi0tYnVpbGQtc3R5bGU9Ym90aCIsICIt
LXF1aWV0IiwgcGF0Y2hbImlkIl1dKQorICAgICAgICAgICAgc2VsZi5ydW5fd2Via2l0X3BhdGNo
KFsibGFuZC1hdHRhY2htZW50IiwgIi0tZm9yY2UtY2xlYW4iLCAiLS1ub24taW50ZXJhY3RpdmUi
LCAiLS1uby11cGRhdGUiLCAiLS1wYXJlbnQtY29tbWFuZD1jb21taXQtcXVldWUiLCAiLS1idWls
ZC1zdHlsZT1ib3RoIiwgIi0tcXVpZXQiLCBwYXRjaC5pZCgpXSkKICAgICAgICAgICAgIHNlbGYu
X2RpZF9wYXNzKHBhdGNoKQogICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CiAgICAgICAg
ICAgICBzZWxmLl9kaWRfZmFpbChwYXRjaCkKICAgICAgICAgICAgIHJhaXNlIGUKIAogICAgIGRl
ZiBoYW5kbGVfdW5leHBlY3RlZF9lcnJvcihzZWxmLCBwYXRjaCwgbWVzc2FnZSk6Ci0gICAgICAg
IHNlbGYudG9vbC5idWdzLnJlamVjdF9wYXRjaF9mcm9tX2NvbW1pdF9xdWV1ZShwYXRjaFsiaWQi
XSwgbWVzc2FnZSkKKyAgICAgICAgc2VsZi5jb21taXR0ZXJfdmFsaWRhdG9yLnJlamVjdF9wYXRj
aF9mcm9tX2NvbW1pdF9xdWV1ZShwYXRjaC5pZCgpLCBtZXNzYWdlKQogCiAgICAgIyBTdGVwU2Vx
dWVuY2VFcnJvckhhbmRsZXIgbWV0aG9kcwogCkBAIC0yMDMsNyArMjA2LDggQEAgY2xhc3MgQ29t
bWl0UXVldWUoQWJzdHJhY3RRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyKToKICAgICBA
Y2xhc3NtZXRob2QKICAgICBkZWYgaGFuZGxlX3NjcmlwdF9lcnJvcihjbHMsIHRvb2wsIHN0YXRl
LCBzY3JpcHRfZXJyb3IpOgogICAgICAgICBzdGF0dXNfaWQgPSBjbHMuX3VwZGF0ZV9zdGF0dXNf
Zm9yX3NjcmlwdF9lcnJvcih0b29sLCBzdGF0ZSwgc2NyaXB0X2Vycm9yKQotICAgICAgICB0b29s
LmJ1Z3MucmVqZWN0X3BhdGNoX2Zyb21fY29tbWl0X3F1ZXVlKHN0YXRlWyJwYXRjaCJdWyJpZCJd
LCBjbHMuX2Vycm9yX21lc3NhZ2VfZm9yX2J1Zyh0b29sLCBzdGF0dXNfaWQsIHNjcmlwdF9lcnJv
cikpCisgICAgICAgIHZhbGlkYXRvciA9IENvbW1pdHRlclZhbGlkdG9yKHRvb2wuYnVncykKKyAg
ICAgICAgdmFsaWRhdG9yLnJlamVjdF9wYXRjaF9mcm9tX2NvbW1pdF9xdWV1ZShzdGF0ZVsicGF0
Y2giXS5pZCgpLCBjbHMuX2Vycm9yX21lc3NhZ2VfZm9yX2J1Zyh0b29sLCBzdGF0dXNfaWQsIHNj
cmlwdF9lcnJvcikpCiAKIAogY2xhc3MgQWJzdHJhY3RSZXZpZXdRdWV1ZShBYnN0cmFjdFF1ZXVl
LCBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0aW9uRGVsZWdhdGUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFu
ZGxlcik6CkBAIC0yNjgsNyArMjcyLDcgQEAgY2xhc3MgU3R5bGVRdWV1ZShBYnN0cmFjdFJldmll
d1F1ZXVlKToKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBfcmV2aWV3X3BhdGNoKHNl
bGYsIHBhdGNoKToKLSAgICAgICAgc2VsZi5ydW5fd2Via2l0X3BhdGNoKFsiY2hlY2stc3R5bGUi
LCAiLS1mb3JjZS1jbGVhbiIsICItLW5vbi1pbnRlcmFjdGl2ZSIsICItLXBhcmVudC1jb21tYW5k
PXN0eWxlLXF1ZXVlIiwgcGF0Y2hbImlkIl1dKQorICAgICAgICBzZWxmLnJ1bl93ZWJraXRfcGF0
Y2goWyJjaGVjay1zdHlsZSIsICItLWZvcmNlLWNsZWFuIiwgIi0tbm9uLWludGVyYWN0aXZlIiwg
Ii0tcGFyZW50LWNvbW1hbmQ9c3R5bGUtcXVldWUiLCBwYXRjaC5pZCgpXSkKIAogICAgIEBjbGFz
c21ldGhvZAogICAgIGRlZiBoYW5kbGVfc2NyaXB0X2Vycm9yKGNscywgdG9vbCwgc3RhdGUsIHNj
cmlwdF9lcnJvcik6CkBAIC0yNzYsNiArMjgwLDYgQEAgY2xhc3MgU3R5bGVRdWV1ZShBYnN0cmFj
dFJldmlld1F1ZXVlKToKICAgICAgICAgc3RhdHVzX2lkID0gY2xzLl91cGRhdGVfc3RhdHVzX2Zv
cl9zY3JpcHRfZXJyb3IodG9vbCwgc3RhdGUsIHNjcmlwdF9lcnJvciwgaXNfZXJyb3I9aXNfc3Zu
X2FwcGx5KQogICAgICAgICBpZiBpc19zdm5fYXBwbHk6CiAgICAgICAgICAgICBRdWV1ZUVuZ2lu
ZS5leGl0X2FmdGVyX2hhbmRsZWRfZXJyb3IoZSkKLSAgICAgICAgbWVzc2FnZSA9ICJBdHRhY2ht
ZW50ICVzIGRpZCBub3QgcGFzcyAlczpcblxuJXMiICUgKHN0YXRlWyJwYXRjaCJdWyJpZCJdLCBj
bHMubmFtZSwgc2NyaXB0X2Vycm9yLm1lc3NhZ2Vfd2l0aF9vdXRwdXQob3V0cHV0X2xpbWl0PTMq
MTAyNCkpCi0gICAgICAgIHRvb2wuYnVncy5wb3N0X2NvbW1lbnRfdG9fYnVnKHN0YXRlWyJwYXRj
aCJdWyJidWdfaWQiXSwgbWVzc2FnZSwgY2M9Y2xzLndhdGNoZXJzKQorICAgICAgICBtZXNzYWdl
ID0gIkF0dGFjaG1lbnQgJXMgZGlkIG5vdCBwYXNzICVzOlxuXG4lcyIgJSAoc3RhdGVbInBhdGNo
Il0uaWQoKSwgY2xzLm5hbWUsIHNjcmlwdF9lcnJvci5tZXNzYWdlX3dpdGhfb3V0cHV0KG91dHB1
dF9saW1pdD0zKjEwMjQpKQorICAgICAgICB0b29sLmJ1Z3MucG9zdF9jb21tZW50X3RvX2J1Zyhz
dGF0ZVsicGF0Y2giXS5idWdfaWQoKSwgbWVzc2FnZSwgY2M9Y2xzLndhdGNoZXJzKQogICAgICAg
ICBleGl0KDEpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1h
bmRzL3F1ZXVlc3Rlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1hbmRz
L3F1ZXVlc3Rlc3QucHkKaW5kZXggNzEwOTZiNi4uNzlkYjEyYiAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tYW5kcy9xdWV1ZXN0ZXN0LnB5CisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbWFuZHMvcXVldWVzdGVzdC5weQpAQCAtMzEsNyAr
MzEsNyBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Via2l0cHkubW9jayBpbXBvcnQgTW9jawog
ZnJvbSB3ZWJraXRweS5tb2NrX2J1Z3ppbGxhdG9vbCBpbXBvcnQgTW9ja0J1Z3ppbGxhVG9vbAog
ZnJvbSB3ZWJraXRweS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi0KK2Zyb20g
d2Via2l0cHkuYnVnemlsbGEgaW1wb3J0IEF0dGFjaG1lbnQKIAogY2xhc3MgTW9ja1F1ZXVlRW5n
aW5lKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHF1ZXVlKToKQEAgLTQy
LDExICs0MiwxMSBAQCBjbGFzcyBNb2NrUXVldWVFbmdpbmUob2JqZWN0KToKIAogCiBjbGFzcyBR
dWV1ZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBtb2NrX3dvcmtfaXRlbSA9IHsKKyAg
ICBtb2NrX3dvcmtfaXRlbSA9IEF0dGFjaG1lbnQoewogICAgICAgICAiaWQiIDogMTIzNCwKICAg
ICAgICAgImJ1Z19pZCIgOiAzNDUsCiAgICAgICAgICJhdHRhY2hlcl9lbWFpbCI6ICJhZGFtQGV4
YW1wbGUuY29tIiwKLSAgICB9CisgICAgfSwgTm9uZSkKIAogICAgIGRlZiBhc3NlcnRfcXVldWVf
b3V0cHV0cyhzZWxmLCBxdWV1ZSwgYXJncz1Ob25lLCB3b3JrX2l0ZW09Tm9uZSwgZXhwZWN0ZWRf
c3Rkb3V0PU5vbmUsIGV4cGVjdGVkX3N0ZGVycj1Ob25lLCBvcHRpb25zPU1vY2soKSwgdG9vbD1N
b2NrQnVnemlsbGFUb29sKCkpOgogICAgICAgICBpZiBub3QgZXhwZWN0ZWRfc3Rkb3V0OgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tYW5kcy91cGxvYWQucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1hbmRzL3VwbG9hZC5weQppbmRleCA1
OGY1ODk5Li44NzBjNGIxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1hbmRzL3VwbG9hZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1hbmRzL3VwbG9hZC5weQpAQCAtNjgsMTggKzY4LDE4IEBAIGNsYXNzIEFzc2lnblRvQ29tbWl0
dGVyKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKICAgICAgICAgICAgIHJldHVybgogCiAg
ICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGNhbGwgYSByZXZpZXdlZF9wYXRjaGVzKCkgbWV0
aG9kIG9uIGJ1ZyBpbnN0ZWFkIG9mIHJlLWZldGNoaW5nLgotICAgICAgICByZXZpZXdlZF9wYXRj
aGVzID0gc2VsZi50b29sLmJ1Z3MuZmV0Y2hfcmV2aWV3ZWRfcGF0Y2hlc19mcm9tX2J1ZyhidWdf
aWQpCisgICAgICAgIHJldmlld2VkX3BhdGNoZXMgPSBzZWxmLnRvb2wuYnVncy5mZXRjaF9idWco
YnVnX2lkKS5yZXZpZXdlZF9wYXRjaGVzKCkKICAgICAgICAgaWYgbm90IHJldmlld2VkX3BhdGNo
ZXM6CiAgICAgICAgICAgICBsb2coIkJ1ZyAlcyBoYXMgbm8gbm9uLW9ic29sZXRlIHBhdGNoZXMs
IGlnbm9yaW5nLiIgJSBidWdfaWQpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgbGF0ZXN0
X3BhdGNoID0gcmV2aWV3ZWRfcGF0Y2hlc1stMV0KLSAgICAgICAgYXR0YWNoZXJfZW1haWwgPSBs
YXRlc3RfcGF0Y2hbImF0dGFjaGVyX2VtYWlsIl0KKyAgICAgICAgYXR0YWNoZXJfZW1haWwgPSBs
YXRlc3RfcGF0Y2guYXR0YWNoZXJfZW1haWwoKQogICAgICAgICBjb21taXR0ZXIgPSBjb21taXR0
ZXJzLmNvbW1pdHRlcl9ieV9lbWFpbChhdHRhY2hlcl9lbWFpbCkKICAgICAgICAgaWYgbm90IGNv
bW1pdHRlcjoKICAgICAgICAgICAgIGxvZygiQXR0YWNoZXIgJXMgaXMgbm90IGEgY29tbWl0dGVy
LiAgQnVnICVzIGxpa2VseSBuZWVkcyBjb21taXQtcXVldWUrLiIgJSAoYXR0YWNoZXJfZW1haWws
IGJ1Z19pZCkpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICByZWFzc2lnbl9tZXNzYWdl
ID0gIkF0dGFjaG1lbnQgJXMgd2FzIHBvc3RlZCBieSBhIGNvbW1pdHRlciBhbmQgaGFzIHJldmll
dyssIGFzc2lnbmluZyB0byAlcyBmb3IgY29tbWl0LiIgJSAobGF0ZXN0X3BhdGNoWyJpZCJdLCBj
b21taXR0ZXIuZnVsbF9uYW1lKQorICAgICAgICByZWFzc2lnbl9tZXNzYWdlID0gIkF0dGFjaG1l
bnQgJXMgd2FzIHBvc3RlZCBieSBhIGNvbW1pdHRlciBhbmQgaGFzIHJldmlldyssIGFzc2lnbmlu
ZyB0byAlcyBmb3IgY29tbWl0LiIgJSAobGF0ZXN0X3BhdGNoLmlkKCksIGNvbW1pdHRlci5mdWxs
X25hbWUpCiAgICAgICAgIHNlbGYudG9vbC5idWdzLnJlYXNzaWduX2J1ZyhidWdfaWQsIGNvbW1p
dHRlci5idWd6aWxsYV9lbWFpbCgpLCByZWFzc2lnbl9tZXNzYWdlKQogCiAgICAgZGVmIGV4ZWN1
dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L21vY2tfYnVnemlsbGF0b29sLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9tb2NrX2J1Z3ppbGxhdG9vbC5weQppbmRleCBmODM5MmFhLi4xNDZlNDBiIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L21vY2tfYnVnemlsbGF0b29s
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbW9ja19idWd6aWxsYXRvb2wu
cHkKQEAgLTMwLDcgKzMwLDggQEAgaW1wb3J0IG9zCiAKIGZyb20gd2Via2l0cHkubW9jayBpbXBv
cnQgTW9jawogZnJvbSB3ZWJraXRweS5zY20gaW1wb3J0IENvbW1pdE1lc3NhZ2UKLWZyb20gd2Vi
a2l0cHkuYnVnemlsbGEgaW1wb3J0IEJ1ZworZnJvbSB3ZWJraXRweS5jb21taXR0ZXJzIGltcG9y
dCBDb21taXR0ZXJMaXN0LCBSZXZpZXdlcgorZnJvbSB3ZWJraXRweS5idWd6aWxsYSBpbXBvcnQg
QnVnLCBBdHRhY2htZW50CiAKIGRlZiBfaWRfdG9fb2JqZWN0X2RpY3Rpb25hcnkoKm9iamVjdHMp
OgogICAgIGRpY3Rpb25hcnkgPSB7fQpAQCAtNDUsNyArNDYsOCBAQCBfcGF0Y2gxID0gewogICAg
ICJ1cmwiIDogImh0dHA6Ly9leGFtcGxlLmNvbS8xOTciLAogICAgICJpc19vYnNvbGV0ZSIgOiBG
YWxzZSwKICAgICAiaXNfcGF0Y2giIDogVHJ1ZSwKLSAgICAicmV2aWV3ZXIiIDogIlJldmlld2Vy
MSIsCisgICAgInJldmlldyIgOiAiKyIsCisgICAgInJldmlld2VyX2VtYWlsIiA6ICJmb29AYmFy
LmNvbSIsCiAgICAgImF0dGFjaGVyX2VtYWlsIiA6ICJDb250cmlidXRlcjEiLAogfQogX3BhdGNo
MiA9IHsKQEAgLTU0LDcgKzU2LDggQEAgX3BhdGNoMiA9IHsKICAgICAidXJsIiA6ICJodHRwOi8v
ZXhhbXBsZS5jb20vMTI4IiwKICAgICAiaXNfb2Jzb2xldGUiIDogRmFsc2UsCiAgICAgImlzX3Bh
dGNoIiA6IFRydWUsCi0gICAgInJldmlld2VyIiA6ICJSZXZpZXdlcjIiLAorICAgICJyZXZpZXci
IDogIisiLAorICAgICJyZXZpZXdlcl9lbWFpbCIgOiAiZm9vQGJhci5jb20iLAogICAgICJhdHRh
Y2hlcl9lbWFpbCIgOiAiZXJpY0B3ZWJraXQub3JnIiwKIH0KIApAQCAtODIsNiArODUsMTAgQEAg
X2J1ZzMgPSB7CiB9CiAKIGNsYXNzIE1vY2tCdWd6aWxsYVF1ZXJpZXMoTW9jayk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGJ1Z3ppbGxhKToKKyAgICAgICAgTW9jay5fX2luaXRfXyhzZWxmKQor
ICAgICAgICBzZWxmLl9idWd6aWxsYSA9IGJ1Z3ppbGxhCisKICAgICBkZWYgZmV0Y2hfYnVnX2lk
c19mcm9tX2NvbW1pdF9xdWV1ZShzZWxmKToKICAgICAgICAgcmV0dXJuIFs0MiwgNzVdCiAKQEAg
LTg5LDQyICs5Niw0NSBAQCBjbGFzcyBNb2NrQnVnemlsbGFRdWVyaWVzKE1vY2spOgogICAgICAg
ICByZXR1cm4gWzE5NywgMTI4XQogCiAgICAgZGVmIGZldGNoX3BhdGNoZXNfZnJvbV9jb21taXRf
cXVldWUoc2VsZiwgcmVqZWN0X2ludmFsaWRfcGF0Y2hlcz1GYWxzZSk6Ci0gICAgICAgIHJldHVy
biBbX3BhdGNoMSwgX3BhdGNoMl0KKyAgICAgICAgcmV0dXJuIFtzZWxmLl9idWd6aWxsYS5mZXRj
aF9hdHRhY2htZW50KF9wYXRjaDFbImlkIl0pLCBzZWxmLl9idWd6aWxsYS5mZXRjaF9hdHRhY2ht
ZW50KF9wYXRjaDJbImlkIl0pXQogCiAgICAgZGVmIGZldGNoX2J1Z19pZHNfZnJvbV9wZW5kaW5n
X2NvbW1pdF9saXN0KHNlbGYpOgogICAgICAgICByZXR1cm4gWzQyLCA3NSwgNzZdCiAgICAgCiAg
ICAgZGVmIGZldGNoX3BhdGNoZXNfZnJvbV9wZW5kaW5nX2NvbW1pdF9saXN0KHNlbGYpOgotICAg
ICAgICByZXR1cm4gW19wYXRjaDEsIF9wYXRjaDJdCisgICAgICAgIHJldHVybiBbc2VsZi5fYnVn
emlsbGEuZmV0Y2hfYXR0YWNobWVudChfcGF0Y2gxWyJpZCJdKSwgc2VsZi5fYnVnemlsbGEuZmV0
Y2hfYXR0YWNobWVudChfcGF0Y2gyWyJpZCJdKV0KIAogCisjIEZJWE1FOiBCdWd6aWxsYSBpcyB0
aGUgd3JvbmcgTW9jay1wb2ludC4gIE9uY2Ugd2UgaGF2ZSBhIEJ1Z3ppbGxhTmV0d29yayBjbGFz
cyB3ZSBzaG91bGQgbW9jayB0aGF0IGluc3RlYWQuCisjIE1vc3Qgb2YgdGhpcyBjbGFzcyBpcyBq
dXN0IGNvcHkvcGFzdGUgZnJvbSBCdWd6aWxsYS4KIGNsYXNzIE1vY2tCdWd6aWxsYShNb2NrKToK
ICAgICBidWdfc2VydmVyX3VybCA9ICJodHRwOi8vZXhhbXBsZS5jb20iCiAgICAgdW5hc3NpZ25l
ZF9lbWFpbCA9IF91bmFzc2lnbmVkX2VtYWlsCiAgICAgYnVnX2NhY2hlID0gX2lkX3RvX29iamVj
dF9kaWN0aW9uYXJ5KF9idWcxLCBfYnVnMiwgX2J1ZzMpCiAgICAgYXR0YWNobWVudF9jYWNoZSA9
IF9pZF90b19vYmplY3RfZGljdGlvbmFyeShfcGF0Y2gxLCBfcGF0Y2gyKQotICAgIHF1ZXJpZXMg
PSBNb2NrQnVnemlsbGFRdWVyaWVzKCkKIAotICAgIGRlZiBmZXRjaF9idWcoc2VsZiwgYnVnX2lk
KToKLSAgICAgICAgcmV0dXJuIEJ1ZyhzZWxmLmJ1Z19jYWNoZS5nZXQoYnVnX2lkKSkKKyAgICBk
ZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIE1vY2suX19pbml0X18oc2VsZikKKyAgICAgICAg
c2VsZi5xdWVyaWVzID0gTW9ja0J1Z3ppbGxhUXVlcmllcyhzZWxmKQorICAgICAgICBzZWxmLmNv
bW1pdHRlcnMgPSBDb21taXR0ZXJMaXN0KHJldmlld2Vycz1bUmV2aWV3ZXIoIkZvbyBCYXIiLCAi
Zm9vQGJhci5jb20iKV0pCiAKLSAgICBkZWYgZmV0Y2hfcmV2aWV3ZWRfcGF0Y2hlc19mcm9tX2J1
ZyhzZWxmLCBidWdfaWQpOgotICAgICAgICByZXR1cm4gc2VsZi5mZXRjaF9wYXRjaGVzX2Zyb21f
YnVnKGJ1Z19pZCkgIyBSZXR1cm4gdGhlbSBhbGwgZm9yIG5vdy4KKyAgICBkZWYgZmV0Y2hfYnVn
KHNlbGYsIGJ1Z19pZCk6CisgICAgICAgIHJldHVybiBCdWcoc2VsZi5idWdfY2FjaGUuZ2V0KGJ1
Z19pZCksIHNlbGYpCiAKICAgICBkZWYgZmV0Y2hfYXR0YWNobWVudChzZWxmLCBhdHRhY2htZW50
X2lkKToKLSAgICAgICAgcmV0dXJuIHNlbGYuYXR0YWNobWVudF9jYWNoZVthdHRhY2htZW50X2lk
XSAjIFRoaXMgY291bGQgYmUgY2hhbmdlZCB0byAuZ2V0KCkgaWYgd2Ugd2lzaCB0byBhbGxvdyBm
YWlsZWQgbG9va3Vwcy4KKyAgICAgICAgYXR0YWNobWVudF9kaWN0aW9uYXJ5ID0gc2VsZi5hdHRh
Y2htZW50X2NhY2hlW2F0dGFjaG1lbnRfaWRdICMgVGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHRvIC5n
ZXQoKSBpZiB3ZSB3aXNoIHRvIGFsbG93IGZhaWxlZCBsb29rdXBzLgorICAgICAgICBidWcgPSBz
ZWxmLmZldGNoX2J1ZyhhdHRhY2htZW50X2RpY3Rpb25hcnlbImJ1Z19pZCJdKQorICAgICAgICBm
b3IgYXR0YWNobWVudCBpbiBidWcuYXR0YWNobWVudHMoaW5jbHVkZV9vYnNvbGV0ZT1UcnVlKToK
KyAgICAgICAgICAgIGlmIGF0dGFjaG1lbnQuaWQoKSA9PSBpbnQoYXR0YWNobWVudF9pZCk6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQKIAotICAgICMgTk9URTogRnVuY3Rpb25z
IGJlbG93IHRoaXMgYXJlIGRpcmVjdCBjb3BpZXMgZnJvbSBidWd6aWxsYS5weQotICAgIGRlZiBm
ZXRjaF9wYXRjaGVzX2Zyb21fYnVnKHNlbGYsIGJ1Z19pZCk6Ci0gICAgICAgIHJldHVybiBzZWxm
LmZldGNoX2J1ZyhidWdfaWQpLnBhdGNoZXMoKQotICAgIAogICAgIGRlZiBidWdfdXJsX2Zvcl9i
dWdfaWQoc2VsZiwgYnVnX2lkKToKICAgICAgICAgcmV0dXJuICIlcy8lcyIgJSAoc2VsZi5idWdf
c2VydmVyX3VybCwgYnVnX2lkKQogCiAgICAgZGVmIGZldGNoX2J1Z19kaWN0aW9uYXJ5KHNlbGYs
IGJ1Z19pZCk6CiAgICAgICAgIHJldHVybiBzZWxmLmJ1Z19jYWNoZS5nZXQoYnVnX2lkKQogCi0g
ICAgZGVmIGF0dGFjaG1lbnRfdXJsX2Zvcl9pZChzZWxmLCBhdHRhY2htZW50X2lkLCBhY3Rpb24p
OgorICAgIGRlZiBhdHRhY2htZW50X3VybF9mb3JfaWQoc2VsZiwgYXR0YWNobWVudF9pZCwgYWN0
aW9uPSJ2aWV3Iik6CiAgICAgICAgIGFjdGlvbl9wYXJhbSA9ICIiCiAgICAgICAgIGlmIGFjdGlv
biBhbmQgYWN0aW9uICE9ICJ2aWV3IjoKICAgICAgICAgICAgIGFjdGlvbl9wYXJhbSA9ICImYWN0
aW9uPSVzIiAlIGFjdGlvbgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zY20ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3NjbS5weQppbmRleCA5YTJm
YzRhLi43ZTA1YTlhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Nj
bS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3NjbS5weQpAQCAtMTIzLDEw
ICsxMjMsMTEgQEAgY2xhc3MgU0NNOgogICAgIGRlZiBhcHBseV9wYXRjaChzZWxmLCBwYXRjaCwg
Zm9yY2U9RmFsc2UpOgogICAgICAgICAjIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcGF0Y2ggd2Fz
IG5vdCBtYWRlIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5LgogICAgICAgICAjIFdlIHNob3VsZCBk
ZXRlY3QgYW5kIGhhbmRsZSB0aGF0IGNhc2UuCi0gICAgICAgIGN1cmxfcHJvY2VzcyA9IHN1YnBy
b2Nlc3MuUG9wZW4oWydjdXJsJywgJy0tbG9jYXRpb24nLCAnLS1zaWxlbnQnLCAnLS1zaG93LWVy
cm9yJywgcGF0Y2hbJ3VybCddXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgIyBG
SVhNRTogc2NtLnB5IHNob3VsZCBub3QgZGVhbCB3aXRoIGZldGNoaW5nIEF0dGFjaG1lbnQgZGF0
YS4gIEF0dGFjaG1lbnQgc2hvdWxkIGp1c3QgaGF2ZSBhIC5kYXRhKCkgYWNjZXNzb3IuCisgICAg
ICAgIGN1cmxfcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydjdXJsJywgJy0tbG9jYXRpb24n
LCAnLS1zaWxlbnQnLCAnLS1zaG93LWVycm9yJywgcGF0Y2gudXJsKCldLCBzdGRvdXQ9c3VicHJv
Y2Vzcy5QSVBFKQogICAgICAgICBhcmdzID0gW3NlbGYuc2NyaXB0X3BhdGgoJ3N2bi1hcHBseScp
XQotICAgICAgICBpZiBwYXRjaC5nZXQoJ3Jldmlld2VyJyk6Ci0gICAgICAgICAgICBhcmdzICs9
IFsnLS1yZXZpZXdlcicsIHBhdGNoWydyZXZpZXdlciddXQorICAgICAgICBpZiBwYXRjaC5yZXZp
ZXdlcigpOgorICAgICAgICAgICAgYXJncyArPSBbJy0tcmV2aWV3ZXInLCBwYXRjaC5yZXZpZXdl
cigpXQogICAgICAgICBpZiBmb3JjZToKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWZvcmNl
JykKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zY21fdW5pdHRl
c3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3NjbV91bml0dGVzdC5weQppbmRl
eCBjNjhkMzY3Li43M2ZhZjQwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3NjbV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Nj
bV91bml0dGVzdC5weQpAQCAtNDAsNiArNDAsNyBAQCBpbXBvcnQgdXJsbGliCiBmcm9tIGRhdGV0
aW1lIGltcG9ydCBkYXRlCiBmcm9tIHdlYmtpdHB5LmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZl
LCBydW5fY29tbWFuZCwgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuc2NtIGltcG9ydCBkZXRl
Y3Rfc2NtX3N5c3RlbSwgU0NNLCBDaGVja291dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFu
ZGxlcgorZnJvbSB3ZWJraXRweS5idWd6aWxsYSBpbXBvcnQgQXR0YWNobWVudCAjIEZJWE1FOiBU
aGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCiAKICMgRXZlbnR1YWxseSB3ZSB3aWxsIHdhbnQgdG8g
d3JpdGUgdGVzdHMgd2hpY2ggd29yayBmb3IgYm90aCBzY21zLiAobGlrZSB1cGRhdGVfd2Via2l0
LCBjaGFuZ2VkX2ZpbGVzLCBldGMuKQogIyBQZXJoYXBzIHRocm91Z2ggc29tZSBTQ01UZXN0IGJh
c2UtY2xhc3Mgd2hpY2ggYm90aCBTVk5UZXN0IGFuZCBHaXRUZXN0IGluaGVyaXQgZnJvbS4KQEAg
LTE2OCw3ICsxNjksNyBAQCBjbGFzcyBTQ01UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgcGF0Y2hbJ3Jldmlld2VyJ10gPSAnSm9lIENvb2wnCiAgICAgICAgIHBhdGNoWydidWdfaWQn
XSA9ICcxMjM0NScKICAgICAgICAgcGF0Y2hbJ3VybCddID0gJ2ZpbGU6Ly8lcycgJSB1cmxsaWIu
cGF0aG5hbWUydXJsKHBhdGNoX3BhdGgpCi0gICAgICAgIHJldHVybiBwYXRjaAorICAgICAgICBy
ZXR1cm4gQXR0YWNobWVudChwYXRjaCwgTm9uZSkgIyBGSVhNRTogVGhpcyBpcyBhIGhhY2ssIHNj
bS5weSBzaG91bGRuJ3QgYmUgZmV0Y2hpbmcgYXR0YWNobWVudCBkYXRhLgogCiAgICAgZGVmIF9z
ZXR1cF93ZWJraXR0b29sc19zY3JpcHRzX3N5bWxpbmsoc2VsZiwgbG9jYWxfc2NtKToKICAgICAg
ICAgd2Via2l0X3NjbSA9IGRldGVjdF9zY21fc3lzdGVtKG9zLnBhdGguZGlybmFtZShvcy5wYXRo
LmFic3BhdGgoX19maWxlX18pKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3RhdHVzc2VydmVyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdGF0
dXNzZXJ2ZXIucHkKaW5kZXggY2MyYWVhZS4uYzE3YjE2MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdGF0dXNzZXJ2ZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdGF0dXNzZXJ2ZXIucHkKQEAgLTU0LDEwICs1NCwxMCBAQCBjbGFzcyBT
dGF0dXNTZXJ2ZXI6CiAgICAgZGVmIF9hZGRfcGF0Y2goc2VsZiwgcGF0Y2gpOgogICAgICAgICBp
ZiBub3QgcGF0Y2g6CiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgcGF0Y2guZ2V0KCdi
dWdfaWQnKToKLSAgICAgICAgICAgIHNlbGYuYnJvd3NlclsnYnVnX2lkJ10gPSBzdHIocGF0Y2hb
J2J1Z19pZCddKQotICAgICAgICBpZiBwYXRjaC5nZXQoJ2lkJyk6Ci0gICAgICAgICAgICBzZWxm
LmJyb3dzZXJbJ3BhdGNoX2lkJ10gPSBzdHIocGF0Y2hbJ2lkJ10pCisgICAgICAgIGlmIHBhdGNo
LmJ1Z19pZCgpOgorICAgICAgICAgICAgc2VsZi5icm93c2VyWyJidWdfaWQiXSA9IHN0cihwYXRj
aC5idWdfaWQoKSkKKyAgICAgICAgaWYgcGF0Y2guaWQoKToKKyAgICAgICAgICAgIHNlbGYuYnJv
d3NlclsicGF0Y2hfaWQiXSA9IHN0cihwYXRjaC5pZCgpKQogCiAgICAgZGVmIF9hZGRfcmVzdWx0
c19maWxlKHNlbGYsIHJlc3VsdHNfZmlsZSk6CiAgICAgICAgIGlmIG5vdCByZXN1bHRzX2ZpbGU6
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0ZXBzL2FwcGx5cGF0
Y2gucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0ZXBzL2FwcGx5cGF0Y2gucHkK
aW5kZXggZTFhMTU1MS4uYWJhODFhZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdGVwcy9hcHBseXBhdGNoLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3RlcHMvYXBwbHlwYXRjaC5weQpAQCAtMzgsNSArMzgsNSBAQCBjbGFzcyBBcHBseVBh
dGNoKEFic3RyYWN0U3RlcCk6CiAgICAgICAgIF0KIAogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUp
OgotICAgICAgICBsb2coIlByb2Nlc3NpbmcgcGF0Y2ggJXMgZnJvbSBidWcgJXMuIiAlIChzdGF0
ZVsicGF0Y2giXVsiaWQiXSwgc3RhdGVbInBhdGNoIl1bImJ1Z19pZCJdKSkKKyAgICAgICAgbG9n
KCJQcm9jZXNzaW5nIHBhdGNoICVzIGZyb20gYnVnICVzLiIgJSAoc3RhdGVbInBhdGNoIl0uaWQo
KSwgc3RhdGVbInBhdGNoIl0uYnVnX2lkKCkpKQogICAgICAgICBzZWxmLl90b29sLnNjbSgpLmFw
cGx5X3BhdGNoKHN0YXRlWyJwYXRjaCJdLCBmb3JjZT1zZWxmLl9vcHRpb25zLm5vbl9pbnRlcmFj
dGl2ZSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3RlcHMvYXBw
bHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3RlcHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weQppbmRleCAwMWZhYjFhLi5iZmFmNTJh
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0ZXBzL2FwcGx5cGF0
Y2h3aXRobG9jYWxjb21taXQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dGVwcy9hcHBseXBhdGNod2l0aGxvY2FsY29tbWl0LnB5CkBAIC00MCw0ICs0MCw0IEBAIGNsYXNz
IEFwcGx5UGF0Y2hXaXRoTG9jYWxDb21taXQoQXBwbHlQYXRjaCk6CiAgICAgICAgIEFwcGx5UGF0
Y2gucnVuKHNlbGYsIHN0YXRlKQogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmxvY2FsX2NvbW1p
dDoKICAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdlID0gc2VsZi5fdG9vbC5zY20oKS5jb21taXRf
bWVzc2FnZV9mb3JfdGhpc19jb21taXQoKQotICAgICAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5j
b21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoY29tbWl0X21lc3NhZ2UubWVzc2FnZSgpIG9yIHN0
YXRlWyJwYXRjaCJdWyJuYW1lIl0pCisgICAgICAgICAgICBzZWxmLl90b29sLnNjbSgpLmNvbW1p
dF9sb2NhbGx5X3dpdGhfbWVzc2FnZShjb21taXRfbWVzc2FnZS5tZXNzYWdlKCkgb3Igc3RhdGVb
InBhdGNoIl0ubmFtZSgpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdGVwcy9jbG9zZWJ1Zy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3RlcHMv
Y2xvc2VidWcucHkKaW5kZXggYWE0YjIxMy4uMjY0MGVlMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdGVwcy9jbG9zZWJ1Zy5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0ZXBzL2Nsb3NlYnVnLnB5CkBAIC00MywxMCArNDMsOSBAQCBjbGFz
cyBDbG9zZUJ1ZyhBYnN0cmFjdFN0ZXApOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICMg
Q2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyByPyBvciByKyBwYXRjaGVzIG9uIHRoZSBi
dWcgYmVmb3JlIGNsb3NpbmcuCiAgICAgICAgICMgQXNzdW1lIHRoYXQgci0gcGF0Y2hlcyBhcmUg
anVzdCBwcmV2aW91cyBwYXRjaGVzIHNvbWVvbmUgZm9yZ290IHRvIG9ic29sZXRlLgotICAgICAg
ICBwYXRjaGVzID0gc2VsZi5fdG9vbC5idWdzLmZldGNoX3BhdGNoZXNfZnJvbV9idWcoc3RhdGVb
InBhdGNoIl1bImJ1Z19pZCJdKQorICAgICAgICBwYXRjaGVzID0gc2VsZi5fdG9vbC5idWdzLmZl
dGNoX2J1ZyhzdGF0ZVsicGF0Y2giXS5idWdfaWQoKSkucGF0Y2hlcygpCiAgICAgICAgIGZvciBw
YXRjaCBpbiBwYXRjaGVzOgotICAgICAgICAgICAgcmV2aWV3X2ZsYWcgPSBwYXRjaC5nZXQoInJl
dmlldyIpCi0gICAgICAgICAgICBpZiByZXZpZXdfZmxhZyA9PSAiPyIgb3IgcmV2aWV3X2ZsYWcg
PT0gIisiOgotICAgICAgICAgICAgICAgIGxvZygiTm90IGNsb3NpbmcgYnVnICVzIGFzIGF0dGFj
aG1lbnQgJXMgaGFzIHJldmlldz0lcy4gIEFzc3VtaW5nIHRoZXJlIGFyZSBtb3JlIHBhdGNoZXMg
dG8gbGFuZCBmcm9tIHRoaXMgYnVnLiIgJSAocGF0Y2hbImJ1Z19pZCJdLCBwYXRjaFsiaWQiXSwg
cmV2aWV3X2ZsYWcpKQorICAgICAgICAgICAgaWYgcGF0Y2gucmV2aWV3KCkgPT0gIj8iIG9yIHBh
dGNoLnJldmlldygpID09ICIrIjoKKyAgICAgICAgICAgICAgICBsb2coIk5vdCBjbG9zaW5nIGJ1
ZyAlcyBhcyBhdHRhY2htZW50ICVzIGhhcyByZXZpZXc9JXMuICBBc3N1bWluZyB0aGVyZSBhcmUg
bW9yZSBwYXRjaGVzIHRvIGxhbmQgZnJvbSB0aGlzIGJ1Zy4iICUgKHBhdGNoLmJ1Z19pZCgpLCBw
YXRjaC5pZCgpLCBwYXRjaC5yZXZpZXcoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAg
ICAgIHNlbGYuX3Rvb2wuYnVncy5jbG9zZV9idWdfYXNfZml4ZWQoc3RhdGVbInBhdGNoIl1bImJ1
Z19pZCJdLCAiQWxsIHJldmlld2VkIHBhdGNoZXMgaGF2ZSBiZWVuIGxhbmRlZC4gIENsb3Npbmcg
YnVnLiIpCisgICAgICAgIHNlbGYuX3Rvb2wuYnVncy5jbG9zZV9idWdfYXNfZml4ZWQoc3RhdGVb
InBhdGNoIl0uYnVnX2lkKCksICJBbGwgcmV2aWV3ZWQgcGF0Y2hlcyBoYXZlIGJlZW4gbGFuZGVk
LiAgQ2xvc2luZyBidWcuIikKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3RlcHMvY2xvc2VidWdmb3JsYW5kZGlmZi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3RlcHMvY2xvc2VidWdmb3JsYW5kZGlmZi5weQppbmRleCAwZDUyZmUyLi4yNWU3ODQ4
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0ZXBzL2Nsb3NlYnVn
Zm9ybGFuZGRpZmYucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdGVwcy9j
bG9zZWJ1Z2ZvcmxhbmRkaWZmLnB5CkBAIC00MSw3ICs0MSw4IEBAIGNsYXNzIENsb3NlQnVnRm9y
TGFuZERpZmYoQWJzdHJhY3RTdGVwKToKIAogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgogICAg
ICAgICBjb21tZW50X3RleHQgPSBidWdfY29tbWVudF9mcm9tX2NvbW1pdF90ZXh0KHNlbGYuX3Rv
b2wuc2NtKCksIHN0YXRlWyJjb21taXRfdGV4dCJdKQotICAgICAgICBidWdfaWQgPSBzdGF0ZVsi
cGF0Y2giXVsiYnVnX2lkIl0KKyAgICAgICAgYnVnX2lkID0gc3RhdGUuZ2V0KCJidWdfaWQiKSBv
ciBzdGF0ZVsicGF0Y2giXS5idWdfaWQoKQorCiAgICAgICAgIGlmIGJ1Z19pZDoKICAgICAgICAg
ICAgIGxvZygiVXBkYXRpbmcgYnVnICVzIiAlIGJ1Z19pZCkKICAgICAgICAgICAgIGlmIHNlbGYu
X29wdGlvbnMuY2xvc2VfYnVnOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdGVwcy9jbG9zZXBhdGNoLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dGVwcy9jbG9zZXBhdGNoLnB5CmluZGV4IGRlMWE1NjMuLmYyMGZlN2UgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3RlcHMvY2xvc2VwYXRjaC5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0ZXBzL2Nsb3NlcGF0Y2gucHkKQEAgLTMzLDQgKzMz
LDQgQEAgZnJvbSB3ZWJraXRweS5zdGVwcy5hYnN0cmFjdHN0ZXAgaW1wb3J0IEFic3RyYWN0U3Rl
cAogY2xhc3MgQ2xvc2VQYXRjaChBYnN0cmFjdFN0ZXApOgogICAgIGRlZiBydW4oc2VsZiwgc3Rh
dGUpOgogICAgICAgICBjb21tZW50X3RleHQgPSBidWdfY29tbWVudF9mcm9tX2NvbW1pdF90ZXh0
KHNlbGYuX3Rvb2wuc2NtKCksIHN0YXRlWyJjb21taXRfdGV4dCJdKQotICAgICAgICBzZWxmLl90
b29sLmJ1Z3MuY2xlYXJfYXR0YWNobWVudF9mbGFncyhzdGF0ZVsicGF0Y2giXVsiaWQiXSwgY29t
bWVudF90ZXh0KQorICAgICAgICBzZWxmLl90b29sLmJ1Z3MuY2xlYXJfYXR0YWNobWVudF9mbGFn
cyhzdGF0ZVsicGF0Y2giXS5pZCgpLCBjb21tZW50X3RleHQpCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0ZXBzL29ic29sZXRlcGF0Y2hlcy5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3RlcHMvb2Jzb2xldGVwYXRjaGVzLnB5CmluZGV4IGQ5YzY0
MzEuLmRiZGJhYmQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3Rl
cHMvb2Jzb2xldGVwYXRjaGVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3RlcHMvb2Jzb2xldGVwYXRjaGVzLnB5CkBAIC00Myw5ICs0Myw5IEBAIGNsYXNzIE9ic29sZXRl
UGF0Y2hlcyhBYnN0cmFjdFN0ZXApOgogICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5vYnNv
bGV0ZV9wYXRjaGVzOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGJ1Z19pZCA9IHN0YXRl
WyJidWdfaWQiXQotICAgICAgICBwYXRjaGVzID0gc2VsZi5fdG9vbC5idWdzLmZldGNoX3BhdGNo
ZXNfZnJvbV9idWcoYnVnX2lkKQorICAgICAgICBwYXRjaGVzID0gc2VsZi5fdG9vbC5idWdzLmZl
dGNoX2J1ZyhidWdfaWQpLnBhdGNoZXMoKQogICAgICAgICBpZiBub3QgcGF0Y2hlczoKICAgICAg
ICAgICAgIHJldHVybgogICAgICAgICBsb2coIk9ic29sZXRpbmcgJXMgb24gYnVnICVzIiAlIChw
bHVyYWxpemUoIm9sZCBwYXRjaCIsIGxlbihwYXRjaGVzKSksIGJ1Z19pZCkpCiAgICAgICAgIGZv
ciBwYXRjaCBpbiBwYXRjaGVzOgotICAgICAgICAgICAgc2VsZi5fdG9vbC5idWdzLm9ic29sZXRl
X2F0dGFjaG1lbnQocGF0Y2hbImlkIl0pCisgICAgICAgICAgICBzZWxmLl90b29sLmJ1Z3Mub2Jz
b2xldGVfYXR0YWNobWVudChwYXRjaC5pZCgpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmll
d2VyLnB5CmluZGV4IGZjYjU3ZTEuLmNjNmQ5YzEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3RlcHMvdXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdlci5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0ZXBzL3VwZGF0ZWNoYW5nZWxvZ3N3aXRo
cmV2aWV3ZXIucHkKQEAgLTQyLDE3ICs0MiwxNyBAQCBjbGFzcyBVcGRhdGVDaGFuZ2VMb2dzV2l0
aFJldmlld2VyKEFic3RyYWN0U3RlcCk6CiAgICAgICAgIF0KIAogICAgIGRlZiBfZ3Vlc3NfcmV2
aWV3ZXJfZnJvbV9idWcoc2VsZiwgYnVnX2lkKToKLSAgICAgICAgcGF0Y2hlcyA9IHNlbGYuX3Rv
b2wuYnVncy5mZXRjaF9yZXZpZXdlZF9wYXRjaGVzX2Zyb21fYnVnKGJ1Z19pZCkKKyAgICAgICAg
cGF0Y2hlcyA9IHNlbGYuX3Rvb2wuYnVncy5mZXRjaF9idWcoYnVnX2lkKS5yZXZpZXdlZF9wYXRj
aGVzKCkKICAgICAgICAgaWYgbGVuKHBhdGNoZXMpICE9IDE6CiAgICAgICAgICAgICBsb2coIiVz
IG9uIGJ1ZyAlcywgY2Fubm90IGluZmVyIHJldmlld2VyLiIgJSAocGx1cmFsaXplKCJyZXZpZXdl
ZCBwYXRjaCIsIGxlbihwYXRjaGVzKSksIGJ1Z19pZCkpCiAgICAgICAgICAgICByZXR1cm4gTm9u
ZQogICAgICAgICBwYXRjaCA9IHBhdGNoZXNbMF0KLSAgICAgICAgcmV2aWV3ZXIgPSBwYXRjaFsi
cmV2aWV3ZXIiXQotICAgICAgICBsb2coIkd1ZXNzaW5nIFwiJXNcIiBhcyByZXZpZXdlciBmcm9t
IGF0dGFjaG1lbnQgJXMgb24gYnVnICVzLiIgJSAocmV2aWV3ZXIsIHBhdGNoWyJpZCJdLCBidWdf
aWQpKQotICAgICAgICByZXR1cm4gcmV2aWV3ZXIKKyAgICAgICAgbG9nKCJHdWVzc2luZyBcIiVz
XCIgYXMgcmV2aWV3ZXIgZnJvbSBhdHRhY2htZW50ICVzIG9uIGJ1ZyAlcy4iICUgKHBhdGNoLnJl
dmlld2VyKCksIHBhdGNoLmlkKCksIGJ1Z19pZCkpCisgICAgICAgIHJldHVybiBwYXRjaC5yZXZp
ZXdlcigpCiAKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKLSAgICAgICAgYnVnX2lkID0gc3Rh
dGUuZ2V0KCJidWdfaWQiKSBvciBzdGF0ZVsicGF0Y2giXVsiYnVnX2lkIl0KKyAgICAgICAgYnVn
X2lkID0gc3RhdGUuZ2V0KCJidWdfaWQiKSBvciBzdGF0ZVsicGF0Y2giXS5idWdfaWQoKQorCiAg
ICAgICAgIHJldmlld2VyID0gc2VsZi5fb3B0aW9ucy5yZXZpZXdlcgogICAgICAgICBpZiBub3Qg
cmV2aWV3ZXI6CiAgICAgICAgICAgICBpZiBub3QgYnVnX2lkOgo=
</data>
<flag name="review"
          id="28605"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="28608"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>