<?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>34015</bug_id>
          
          <creation_ts>2010-01-22 12:21:36 -0800</creation_ts>
          <short_desc>Make bugzilla.py and webkitport.py conform to pep8</short_desc>
          <delta_ts>2010-01-22 15:58:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cjerdonek</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>183747</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-22 12:21:36 -0800</bug_when>
    <thetext>Make bugzilla.py and webkitport.py conform to pep8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183750</commentid>
    <comment_count>1</comment_count>
      <attachid>47219</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-22 12:23:19 -0800</bug_when>
    <thetext>Created attachment 47219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183754</commentid>
    <comment_count>2</comment_count>
      <attachid>47219</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-22 12:45:25 -0800</bug_when>
    <thetext>Comment on attachment 47219
Patch

I&apos;m really not a big fan of 80-col wrap, but OK.

We *need* to document our following of pep8 somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183854</commentid>
    <comment_count>3</comment_count>
      <attachid>47219</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-22 15:58:11 -0800</bug_when>
    <thetext>Comment on attachment 47219
Patch

Clearing flags on attachment: 47219

Committed r53729: &lt;http://trac.webkit.org/changeset/53729&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183855</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-22 15:58:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47219</attachid>
            <date>2010-01-22 12:23:19 -0800</date>
            <delta_ts>2010-01-22 15:58:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-34015-20100122122317.patch</filename>
            <type>text/plain</type>
            <size>37243</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAxOGFkZTFhLi45ZmMzNDZjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDEt
MjIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGJ1Z3ppbGxhLnB5IGFuZCB3ZWJraXRw
b3J0LnB5IGNvbmZvcm0gdG8gcGVwOAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzQwMTUKKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIHdlYmtpdHBv
cnQucHkgYW5kIGJ1Z3ppbGxhLnB5IG1vc3RseSBjb25mb3JtIHRvIFBFUDgKKyAgICAgICAgc3R5
bGUgYXMgZW5mb3JjZWQgYnkgcGVwOC5weS4gIEkgd2Fzbid0IGFibGUgdG8gZ2V0IHJpZCBvZiBh
bGwgdGhlCisgICAgICAgIGVycm9ycyBiZWNhdXNlIEknbSBub3Qgc3VyZSBob3cgdG8gd3JhcCBz
b21lIGxpbmVzIHByb3Blcmx5LiAgQWxzbywKKyAgICAgICAgdGhlcmUgYXJlIGEgZmV3IGRlcHJp
Y2F0aW9uIGVycm9ycyB0aGF0IEkgY291bGRuJ3QgcmVzb2x2ZSBlYXNpbHkuCisgICAgICAgIEhv
d2V2ZXIsIHRoaXMgaXMgYSBtYXNzaXZlIGltcHJvdmVtZW50IGluIGNvbXBsaWFuY2UuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2J1Z3ppbGxhLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvd2Via2l0cG9ydC5weToKKwogMjAxMC0wMS0yMiAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsu
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2J1Z3ppbGxhLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9idWd6aWxsYS5weQppbmRleCAzNWVjYzI1Li4y
ODA3NzNmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2J1Z3ppbGxh
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYnVnemlsbGEucHkKQEAgLTEs
MTAgKzEsMTAgQEAKICMgQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKGMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIyAKKyMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICMgbWV0OgotIyAK
KyMKICMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKICMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNCw3IEBACiAjICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
ICMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KICMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSMgCisjCiAjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCkBAIC00NSwxMSArNDUsMTQgQEAgZnJvbSAuQmVhdXRpZnVsU291cCBpbXBvcnQg
QmVhdXRpZnVsU291cCwgU291cFN0cmFpbmVyCiAKIGZyb20gbWVjaGFuaXplIGltcG9ydCBCcm93
c2VyCiAKKwogZGVmIHBhcnNlX2J1Z19pZChtZXNzYWdlKToKICAgICBtYXRjaCA9IHJlLnNlYXJj
aCgiaHR0cFw6Ly93ZWJraXRcLm9yZy9iLyg/UDxidWdfaWQ+XGQrKSIsIG1lc3NhZ2UpCiAgICAg
aWYgbWF0Y2g6CiAgICAgICAgIHJldHVybiBpbnQobWF0Y2guZ3JvdXAoJ2J1Z19pZCcpKQotICAg
IG1hdGNoID0gcmUuc2VhcmNoKEJ1Z3ppbGxhLmJ1Z19zZXJ2ZXJfcmVnZXggKyAic2hvd19idWdc
LmNnaVw/aWQ9KD9QPGJ1Z19pZD5cZCspIiwgbWVzc2FnZSkKKyAgICBtYXRjaCA9IHJlLnNlYXJj
aCgKKyAgICAgICAgQnVnemlsbGEuYnVnX3NlcnZlcl9yZWdleCArICJzaG93X2J1Z1wuY2dpXD9p
ZD0oP1A8YnVnX2lkPlxkKykiLAorICAgICAgICBtZXNzYWdlKQogICAgIGlmIG1hdGNoOgogICAg
ICAgICByZXR1cm4gaW50KG1hdGNoLmdyb3VwKCdidWdfaWQnKSkKICAgICByZXR1cm4gTm9uZQpA
QCAtNjAsNiArNjMsNyBAQCBkZWYgdGltZXN0YW1wKCk6CiAKIAogY2xhc3MgQXR0YWNobWVudChv
YmplY3QpOgorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGF0dGFjaG1lbnRfZGljdGlvbmFyeSwg
YnVnKToKICAgICAgICAgc2VsZi5fYXR0YWNobWVudF9kaWN0aW9uYXJ5ID0gYXR0YWNobWVudF9k
aWN0aW9uYXJ5CiAgICAgICAgIHNlbGYuX2J1ZyA9IGJ1ZwpAQCAtNzMsNyArNzcsOCBAQCBjbGFz
cyBBdHRhY2htZW50KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBpbnQoc2VsZi5fYXR0YWNobWVu
dF9kaWN0aW9uYXJ5LmdldCgiaWQiKSkKIAogICAgIGRlZiBhdHRhY2hlcl9pc19jb21taXR0ZXIo
c2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9idWd6aWxsYS5jb21taXR0ZXJzLmNvbW1pdHRl
cl9ieV9lbWFpbChwYXRjaC5hdHRhY2hlcl9lbWFpbCgpKQorICAgICAgICByZXR1cm4gc2VsZi5f
YnVnemlsbGEuY29tbWl0dGVycy5jb21taXR0ZXJfYnlfZW1haWwoCisgICAgICAgICAgICBwYXRj
aC5hdHRhY2hlcl9lbWFpbCgpKQogCiAgICAgZGVmIGF0dGFjaGVyX2VtYWlsKHNlbGYpOgogICAg
ICAgICByZXR1cm4gc2VsZi5fYXR0YWNobWVudF9kaWN0aW9uYXJ5LmdldCgiYXR0YWNoZXJfZW1h
aWwiKQpAQCAtMTAwLDE3ICsxMDUsMjIgQEAgY2xhc3MgQXR0YWNobWVudChvYmplY3QpOgogICAg
ICAgICByZXR1cm4gc2VsZi5fYXR0YWNobWVudF9kaWN0aW9uYXJ5LmdldCgiY29tbWl0LXF1ZXVl
IikKIAogICAgIGRlZiB1cmwoc2VsZik6Ci0gICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGp1
c3QgcmV0dXJuIHNlbGYuX2J1Z3ppbGxhKCkuYXR0YWNobWVudF91cmxfZm9yX2lkKHNlbGYuaWQo
KSkuICBzY21fdW5pdHRlc3QucHkgZGVwZW5kcyBvbiB0aGUgY3VycmVudCBiZWhhdmlvci4KKyAg
ICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQganVzdCByZXR1cm4KKyAgICAgICAgIyBzZWxmLl9i
dWd6aWxsYSgpLmF0dGFjaG1lbnRfdXJsX2Zvcl9pZChzZWxmLmlkKCkpLiBzY21fdW5pdHRlc3Qu
cHkKKyAgICAgICAgIyBkZXBlbmRzIG9uIHRoZSBjdXJyZW50IGJlaGF2aW9yLgogICAgICAgICBy
ZXR1cm4gc2VsZi5fYXR0YWNobWVudF9kaWN0aW9uYXJ5LmdldCgidXJsIikKIAogICAgIGRlZiBf
dmFsaWRhdGVfZmxhZ192YWx1ZShzZWxmLCBmbGFnKToKICAgICAgICAgZW1haWwgPSBzZWxmLl9h
dHRhY2htZW50X2RpY3Rpb25hcnkuZ2V0KCIlc19lbWFpbCIgJSBmbGFnKQogICAgICAgICBpZiBu
b3QgZW1haWw6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBjb21taXR0ZXIgPSBn
ZXRhdHRyKHNlbGYuX2J1Z3ppbGxhKCkuY29tbWl0dGVycywgIiVzX2J5X2VtYWlsIiAlIGZsYWcp
KGVtYWlsKQorICAgICAgICBjb21taXR0ZXIgPSBnZXRhdHRyKHNlbGYuX2J1Z3ppbGxhKCkuY29t
bWl0dGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXNfYnlfZW1haWwiICUgZmxh
ZykoZW1haWwpCiAgICAgICAgIGlmIGNvbW1pdHRlcjoKICAgICAgICAgICAgIHJldHVybiBjb21t
aXR0ZXIKLSAgICAgICAgbG9nKCJXYXJuaW5nLCBhdHRhY2htZW50ICVzIG9uIGJ1ZyAlcyBoYXMg
aW52YWxpZCAlcyAoJXMpIiAlIChzZWxmLl9hdHRhY2htZW50X2RpY3Rpb25hcnlbJ2lkJ10sIHNl
bGYuX2F0dGFjaG1lbnRfZGljdGlvbmFyeVsnYnVnX2lkJ10sIGZsYWcsIGVtYWlsKSkKKyAgICAg
ICAgbG9nKCJXYXJuaW5nLCBhdHRhY2htZW50ICVzIG9uIGJ1ZyAlcyBoYXMgaW52YWxpZCAlcyAo
JXMpIiAlICgKKyAgICAgICAgICAgICAgICAgc2VsZi5fYXR0YWNobWVudF9kaWN0aW9uYXJ5Wydp
ZCddLAorICAgICAgICAgICAgICAgICBzZWxmLl9hdHRhY2htZW50X2RpY3Rpb25hcnlbJ2J1Z19p
ZCddLCBmbGFnLCBlbWFpbCkpCiAKICAgICBkZWYgcmV2aWV3ZXIoc2VsZik6CiAgICAgICAgIGlm
IG5vdCBzZWxmLl9yZXZpZXdlcjoKQEAgLTEyMyw5ICsxMzMsMTEgQEAgY2xhc3MgQXR0YWNobWVu
dChvYmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5fY29tbWl0dGVyCiAKIAotIyBGSVhNRTog
VGhpcyBjbGFzcyBpcyBraW5kYSBhIGhhY2sgZm9yIG5vdy4gIEl0IGV4aXN0cyBzbyB3ZSBoYXZl
IG9uZSBwbGFjZQotIyB0byBob2xkIGJ1ZyBsb2dpYywgZXZlbiBpZiBtdWNoIG9mIHRoZSBjb2Rl
IGRlYWxzIHdpdGggZGljdGlvbmFyaWVzIHN0aWxsLgogY2xhc3MgQnVnKG9iamVjdCk6CisgICAg
IyBGSVhNRTogVGhpcyBjbGFzcyBpcyBraW5kYSBhIGhhY2sgZm9yIG5vdy4gIEl0IGV4aXN0cyBz
byB3ZSBoYXZlIG9uZQorICAgICMgcGxhY2UgdG8gaG9sZCBidWcgbG9naWMsIGV2ZW4gaWYgbXVj
aCBvZiB0aGUgY29kZSBkZWFscyB3aXRoCisgICAgIyBkaWN0aW9uYXJpZXMgc3RpbGwuCisKICAg
ICBkZWYgX19pbml0X18oc2VsZiwgYnVnX2RpY3Rpb25hcnksIGJ1Z3ppbGxhKToKICAgICAgICAg
c2VsZi5idWdfZGljdGlvbmFyeSA9IGJ1Z19kaWN0aW9uYXJ5CiAgICAgICAgIHNlbGYuX2J1Z3pp
bGxhID0gYnVnemlsbGEKQEAgLTE0MCwxMSArMTUyLDEzIEBAIGNsYXNzIEJ1ZyhvYmplY3QpOgog
ICAgIGRlZiBhdHRhY2htZW50cyhzZWxmLCBpbmNsdWRlX29ic29sZXRlPUZhbHNlKToKICAgICAg
ICAgYXR0YWNobWVudHMgPSBzZWxmLmJ1Z19kaWN0aW9uYXJ5WyJhdHRhY2htZW50cyJdCiAgICAg
ICAgIGlmIG5vdCBpbmNsdWRlX29ic29sZXRlOgotICAgICAgICAgICAgYXR0YWNobWVudHMgPSBm
aWx0ZXIobGFtYmRhIGF0dGFjaG1lbnQ6IG5vdCBhdHRhY2htZW50WyJpc19vYnNvbGV0ZSJdLCBh
dHRhY2htZW50cykKKyAgICAgICAgICAgIGF0dGFjaG1lbnRzID0gZmlsdGVyKGxhbWJkYSBhdHRh
Y2htZW50OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGF0dGFjaG1lbnRb
ImlzX29ic29sZXRlIl0sIGF0dGFjaG1lbnRzKQogICAgICAgICByZXR1cm4gW0F0dGFjaG1lbnQo
YXR0YWNobWVudCwgc2VsZikgZm9yIGF0dGFjaG1lbnQgaW4gYXR0YWNobWVudHNdCiAKICAgICBk
ZWYgcGF0Y2hlcyhzZWxmLCBpbmNsdWRlX29ic29sZXRlPUZhbHNlKToKLSAgICAgICAgcmV0dXJu
IFtwYXRjaCBmb3IgcGF0Y2ggaW4gc2VsZi5hdHRhY2htZW50cyhpbmNsdWRlX29ic29sZXRlKSBp
ZiBwYXRjaC5pc19wYXRjaCgpXQorICAgICAgICByZXR1cm4gW3BhdGNoIGZvciBwYXRjaCBpbiBz
ZWxmLmF0dGFjaG1lbnRzKGluY2x1ZGVfb2Jzb2xldGUpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIHBhdGNoLmlzX3BhdGNoKCldCiAKICAgICBkZWYgdW5yZXZpZXdlZF9w
YXRjaGVzKHNlbGYpOgogICAgICAgICByZXR1cm4gW3BhdGNoIGZvciBwYXRjaCBpbiBzZWxmLnBh
dGNoZXMoKSBpZiBwYXRjaC5yZXZpZXcoKSA9PSAiPyJdCkBAIC0xNTMsMjMgKzE2NywyOSBAQCBj
bGFzcyBCdWcob2JqZWN0KToKICAgICAgICAgcGF0Y2hlcyA9IFtwYXRjaCBmb3IgcGF0Y2ggaW4g
c2VsZi5wYXRjaGVzKCkgaWYgcGF0Y2gucmV2aWV3KCkgPT0gIisiXQogICAgICAgICBpZiBpbmNs
dWRlX2ludmFsaWQ6CiAgICAgICAgICAgICByZXR1cm4gcGF0Y2hlcwotICAgICAgICAjIENoZWNr
aW5nIHJldmlld2VyKCkgZW5zdXJlcyB0aGF0IGl0IHdhcyBib3RoIHJldmlld2VkIGFuZCBoYXMg
YSB2YWxpZCByZXZpZXdlci4KKyAgICAgICAgIyBDaGVja2luZyByZXZpZXdlcigpIGVuc3VyZXMg
dGhhdCBpdCB3YXMgYm90aCByZXZpZXdlZCBhbmQgaGFzIGEgdmFsaWQKKyAgICAgICAgIyByZXZp
ZXdlci4KICAgICAgICAgcmV0dXJuIGZpbHRlcihsYW1iZGEgcGF0Y2g6IHBhdGNoLnJldmlld2Vy
KCksIHBhdGNoZXMpCiAKICAgICBkZWYgY29tbWl0X3F1ZXVlZF9wYXRjaGVzKHNlbGYsIGluY2x1
ZGVfaW52YWxpZD1GYWxzZSk6Ci0gICAgICAgIHBhdGNoZXMgPSBbcGF0Y2ggZm9yIHBhdGNoIGlu
IHNlbGYucGF0Y2hlcygpIGlmIHBhdGNoLmNvbW1pdF9xdWV1ZSgpID09ICIrIl0KKyAgICAgICAg
cGF0Y2hlcyA9IFtwYXRjaCBmb3IgcGF0Y2ggaW4gc2VsZi5wYXRjaGVzKCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGF0Y2guY29tbWl0X3F1ZXVlKCkgPT0gIisi
XQogICAgICAgICBpZiBpbmNsdWRlX2ludmFsaWQ6CiAgICAgICAgICAgICByZXR1cm4gcGF0Y2hl
cwotICAgICAgICAjIENoZWNraW5nIGNvbW1pdHRlcigpIGVuc3VyZXMgdGhhdCBpdCB3YXMgYm90
aCBjb21taXQtcXVldWUrJ2QgYW5kIGhhcyBhIHZhbGlkIGNvbW1pdHRlci4KKyAgICAgICAgIyBD
aGVja2luZyBjb21taXR0ZXIoKSBlbnN1cmVzIHRoYXQgaXQgd2FzIGJvdGggY29tbWl0LXF1ZXVl
KydkIGFuZCBoYXMKKyAgICAgICAgIyBhIHZhbGlkIGNvbW1pdHRlci4KICAgICAgICAgcmV0dXJu
IGZpbHRlcihsYW1iZGEgcGF0Y2g6IHBhdGNoLmNvbW1pdHRlcigpLCBwYXRjaGVzKQogCiAKICMg
QSBjb250YWluZXIgZm9yIGFsbCBvZiB0aGUgbG9naWMgZm9yIG1ha2luZyBhbmQgcGFyc2luZyBi
dXppbGxhIHF1ZXJpZXMuCiBjbGFzcyBCdWd6aWxsYVF1ZXJpZXMob2JqZWN0KToKKwogICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBidWd6aWxsYSk6CiAgICAgICAgIHNlbGYuX2J1Z3ppbGxhID0gYnVn
emlsbGEKIAotICAgICMgTm90ZTogX2xvYWRfcXVlcnkgYW5kIF9mZXRjaF9idWcgYXJlIHRoZSBv
bmx5IHR3byBtZXRob2RzIHdoaWNoIGFjY2VzcyBzZWxmLl9idWd6aWxsYS4KKyAgICAjIE5vdGU6
IF9sb2FkX3F1ZXJ5IGFuZCBfZmV0Y2hfYnVnIGFyZSB0aGUgb25seSB0d28gbWV0aG9kcyB3aGlj
aCBhY2Nlc3MKKyAgICAjIHNlbGYuX2J1Z3ppbGxhLgorCiAgICAgZGVmIF9sb2FkX3F1ZXJ5KHNl
bGYsIHF1ZXJ5KToKICAgICAgICAgc2VsZi5fYnVnemlsbGEuYXV0aGVudGljYXRlKCkKIApAQCAt
MTc5LDE3ICsxOTksMTkgQEAgY2xhc3MgQnVnemlsbGFRdWVyaWVzKG9iamVjdCk6CiAgICAgZGVm
IF9mZXRjaF9idWcoc2VsZiwgYnVnX2lkKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2J1Z3ppbGxh
LmZldGNoX2J1ZyhidWdfaWQpCiAKLQogICAgIGRlZiBfZmV0Y2hfYnVnX2lkc19hZHZhbmNlZF9x
dWVyeShzZWxmLCBxdWVyeSk6CiAgICAgICAgIHNvdXAgPSBCZWF1dGlmdWxTb3VwKHNlbGYuX2xv
YWRfcXVlcnkocXVlcnkpKQotICAgICAgICAjIFRoZSBjb250ZW50cyBvZiB0aGUgPGE+IGluc2lk
ZSB0aGUgY2VsbHMgaW4gdGhlIGZpcnN0IGNvbHVtbiBoYXBwZW4gdG8gYmUgdGhlIGJ1ZyBpZC4K
LSAgICAgICAgcmV0dXJuIFtpbnQoYnVnX2xpbmtfY2VsbC5maW5kKCJhIikuc3RyaW5nKSBmb3Ig
YnVnX2xpbmtfY2VsbCBpbiBzb3VwKCd0ZCcsICJmaXJzdC1jaGlsZCIpXQorICAgICAgICAjIFRo
ZSBjb250ZW50cyBvZiB0aGUgPGE+IGluc2lkZSB0aGUgY2VsbHMgaW4gdGhlIGZpcnN0IGNvbHVt
biBoYXBwZW4KKyAgICAgICAgIyB0byBiZSB0aGUgYnVnIGlkLgorICAgICAgICByZXR1cm4gW2lu
dChidWdfbGlua19jZWxsLmZpbmQoImEiKS5zdHJpbmcpCisgICAgICAgICAgICAgICAgZm9yIGJ1
Z19saW5rX2NlbGwgaW4gc291cCgndGQnLCAiZmlyc3QtY2hpbGQiKV0KIAogICAgIGRlZiBfcGFy
c2VfYXR0YWNobWVudF9pZHNfcmVxdWVzdF9xdWVyeShzZWxmLCBwYWdlKToKICAgICAgICAgZGln
aXRzID0gcmUuY29tcGlsZSgiXGQrIikKICAgICAgICAgYXR0YWNobWVudF9ocmVmID0gcmUuY29t
cGlsZSgiYXR0YWNobWVudC5jZ2lcP2lkPVxkKyZhY3Rpb249cmV2aWV3IikKICAgICAgICAgYXR0
YWNobWVudF9saW5rcyA9IFNvdXBTdHJhaW5lcigiYSIsIGhyZWY9YXR0YWNobWVudF9ocmVmKQot
ICAgICAgICByZXR1cm4gW2ludChkaWdpdHMuc2VhcmNoKHRhZ1siaHJlZiJdKS5ncm91cCgwKSkg
Zm9yIHRhZyBpbiBCZWF1dGlmdWxTb3VwKHBhZ2UsIHBhcnNlT25seVRoZXNlPWF0dGFjaG1lbnRf
bGlua3MpXQorICAgICAgICByZXR1cm4gW2ludChkaWdpdHMuc2VhcmNoKHRhZ1siaHJlZiJdKS5n
cm91cCgwKSkKKyAgICAgICAgICAgICAgICBmb3IgdGFnIGluIEJlYXV0aWZ1bFNvdXAocGFnZSwg
cGFyc2VPbmx5VGhlc2U9YXR0YWNobWVudF9saW5rcyldCiAKICAgICBkZWYgX2ZldGNoX2F0dGFj
aG1lbnRfaWRzX3JlcXVlc3RfcXVlcnkoc2VsZiwgcXVlcnkpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5fcGFyc2VfYXR0YWNobWVudF9pZHNfcmVxdWVzdF9xdWVyeShzZWxmLl9sb2FkX3F1ZXJ5KHF1
ZXJ5KSkKQEAgLTIwMCw4NiArMjIyLDEyNiBAQCBjbGFzcyBCdWd6aWxsYVF1ZXJpZXMob2JqZWN0
KToKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZldGNoX2J1Z19pZHNfYWR2YW5jZWRfcXVlcnkobmVl
ZHNfY29tbWl0X3F1ZXJ5X3VybCkKIAogICAgIGRlZiBmZXRjaF9wYXRjaGVzX2Zyb21fcGVuZGlu
Z19jb21taXRfbGlzdChzZWxmKToKLSAgICAgICAgcmV0dXJuIHN1bShbc2VsZi5fZmV0Y2hfYnVn
KGJ1Z19pZCkucmV2aWV3ZWRfcGF0Y2hlcygpIGZvciBidWdfaWQgaW4gc2VsZi5mZXRjaF9idWdf
aWRzX2Zyb21fcGVuZGluZ19jb21taXRfbGlzdCgpXSwgW10pCisgICAgICAgIHJldHVybiBzdW0o
W3NlbGYuX2ZldGNoX2J1ZyhidWdfaWQpLnJldmlld2VkX3BhdGNoZXMoKQorICAgICAgICAgICAg
Zm9yIGJ1Z19pZCBpbiBzZWxmLmZldGNoX2J1Z19pZHNfZnJvbV9wZW5kaW5nX2NvbW1pdF9saXN0
KCldLCBbXSkKIAogICAgIGRlZiBmZXRjaF9idWdfaWRzX2Zyb21fY29tbWl0X3F1ZXVlKHNlbGYp
OgogICAgICAgICBjb21taXRfcXVldWVfdXJsID0gImJ1Z2xpc3QuY2dpP3F1ZXJ5X2Zvcm1hdD1h
ZHZhbmNlZCZidWdfc3RhdHVzPVVOQ09ORklSTUVEJmJ1Z19zdGF0dXM9TkVXJmJ1Z19zdGF0dXM9
QVNTSUdORUQmYnVnX3N0YXR1cz1SRU9QRU5FRCZmaWVsZDAtMC0wPWZsYWd0eXBlcy5uYW1lJnR5
cGUwLTAtMD1lcXVhbHMmdmFsdWUwLTAtMD1jb21taXQtcXVldWUlMkImb3JkZXI9TGFzdCtDaGFu
Z2VkIgogICAgICAgICByZXR1cm4gc2VsZi5fZmV0Y2hfYnVnX2lkc19hZHZhbmNlZF9xdWVyeShj
b21taXRfcXVldWVfdXJsKQogCi0gICAgIyBUaGlzIGZ1bmN0aW9uIHdpbGwgb25seSByZXR1cm4g
cGF0Y2hlcyB3aGljaCBoYXZlIHZhbGlkIGNvbW1pdHRlcnMgc2V0LiAgSXQgd29uJ3QgcmVqZWN0
IHBhdGNoZXMgd2l0aCBpbnZhbGlkIGNvbW1pdHRlcnMvcmV2aWV3ZXJzLgogICAgIGRlZiBmZXRj
aF9wYXRjaGVzX2Zyb21fY29tbWl0X3F1ZXVlKHNlbGYpOgotICAgICAgICByZXR1cm4gc3VtKFtz
ZWxmLl9mZXRjaF9idWcoYnVnX2lkKS5jb21taXRfcXVldWVkX3BhdGNoZXMoKSBmb3IgYnVnX2lk
IGluIHNlbGYuZmV0Y2hfYnVnX2lkc19mcm9tX2NvbW1pdF9xdWV1ZSgpXSwgW10pCisgICAgICAg
ICMgVGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIHBhdGNoZXMgd2hpY2ggaGF2ZSB2YWxp
ZCBjb21taXR0ZXJzCisgICAgICAgICMgc2V0LiAgSXQgd29uJ3QgcmVqZWN0IHBhdGNoZXMgd2l0
aCBpbnZhbGlkIGNvbW1pdHRlcnMvcmV2aWV3ZXJzLgorICAgICAgICByZXR1cm4gc3VtKFtzZWxm
Ll9mZXRjaF9idWcoYnVnX2lkKS5jb21taXRfcXVldWVkX3BhdGNoZXMoKQorICAgICAgICAgICAg
ICAgICAgICBmb3IgYnVnX2lkIGluIHNlbGYuZmV0Y2hfYnVnX2lkc19mcm9tX2NvbW1pdF9xdWV1
ZSgpXSwgW10pCiAKICAgICBkZWYgX2ZldGNoX2J1Z19pZHNfZnJvbV9yZXZpZXdfcXVldWUoc2Vs
Zik6CiAgICAgICAgIHJldmlld19xdWV1ZV91cmwgPSAiYnVnbGlzdC5jZ2k/cXVlcnlfZm9ybWF0
PWFkdmFuY2VkJmJ1Z19zdGF0dXM9VU5DT05GSVJNRUQmYnVnX3N0YXR1cz1ORVcmYnVnX3N0YXR1
cz1BU1NJR05FRCZidWdfc3RhdHVzPVJFT1BFTkVEJmZpZWxkMC0wLTA9ZmxhZ3R5cGVzLm5hbWUm
dHlwZTAtMC0wPWVxdWFscyZ2YWx1ZTAtMC0wPXJldmlldz8iCiAgICAgICAgIHJldHVybiBzZWxm
Ll9mZXRjaF9idWdfaWRzX2FkdmFuY2VkX3F1ZXJ5KHJldmlld19xdWV1ZV91cmwpCiAKICAgICBk
ZWYgZmV0Y2hfcGF0Y2hlc19mcm9tX3Jldmlld19xdWV1ZShzZWxmLCBsaW1pdD1Ob25lKToKLSAg
ICAgICAgcmV0dXJuIHN1bShbc2VsZi5fZmV0Y2hfYnVnKGJ1Z19pZCkudW5yZXZpZXdlZF9wYXRj
aGVzKCkgZm9yIGJ1Z19pZCBpbiBzZWxmLl9mZXRjaF9idWdfaWRzX2Zyb21fcmV2aWV3X3F1ZXVl
KClbOmxpbWl0XV0sIFtdKSAjIFs6Tm9uZV0gcmV0dXJucyB0aGUgd2hvbGUgYXJyYXkuCisgICAg
ICAgICMgWzpOb25lXSByZXR1cm5zIHRoZSB3aG9sZSBhcnJheS4KKyAgICAgICAgcmV0dXJuIHN1
bShbc2VsZi5fZmV0Y2hfYnVnKGJ1Z19pZCkudW5yZXZpZXdlZF9wYXRjaGVzKCkKKyAgICAgICAg
ICAgIGZvciBidWdfaWQgaW4gc2VsZi5fZmV0Y2hfYnVnX2lkc19mcm9tX3Jldmlld19xdWV1ZSgp
WzpsaW1pdF1dLCBbXSkKIAotICAgICMgRklYTUU6IFdoeSBkbyB3ZSBoYXZlIGJvdGggZmV0Y2hf
cGF0Y2hlc19mcm9tX3Jldmlld19xdWV1ZSBhbmQgZmV0Y2hfYXR0YWNobWVudF9pZHNfZnJvbV9y
ZXZpZXdfcXVldWU/PworICAgICMgRklYTUU6IFdoeSBkbyB3ZSBoYXZlIGJvdGggZmV0Y2hfcGF0
Y2hlc19mcm9tX3Jldmlld19xdWV1ZSBhbmQKKyAgICAjIGZldGNoX2F0dGFjaG1lbnRfaWRzX2Zy
b21fcmV2aWV3X3F1ZXVlPz8KICAgICAjIE5PVEU6IFRoaXMgaXMgYWxzbyB0aGUgb25seSBjbGll
bnQgb2YgX2ZldGNoX2F0dGFjaG1lbnRfaWRzX3JlcXVlc3RfcXVlcnkKKwogICAgIGRlZiBmZXRj
aF9hdHRhY2htZW50X2lkc19mcm9tX3Jldmlld19xdWV1ZShzZWxmKToKICAgICAgICAgcmV2aWV3
X3F1ZXVlX3VybCA9ICJyZXF1ZXN0LmNnaT9hY3Rpb249cXVldWUmdHlwZT1yZXZpZXcmZ3JvdXA9
dHlwZSIKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZldGNoX2F0dGFjaG1lbnRfaWRzX3JlcXVlc3Rf
cXVlcnkocmV2aWV3X3F1ZXVlX3VybCkKIAogCiBjbGFzcyBDb21taXR0ZXJWYWxpZGF0b3Iob2Jq
ZWN0KToKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBidWd6aWxsYSk6CiAgICAgICAgIHNlbGYu
X2J1Z3ppbGxhID0gYnVnemlsbGEKIAotICAgICMgX3ZpZXdfc291cmNlX2xpbmsgYmVsb25ncyBp
biBzb21lIHNvcnQgb2Ygd2Via2l0X2NvbmZpZy5weSBtb2R1bGUuCi0gICAgZGVmIF92aWV3X3Nv
dXJjZV9saW5rKHNlbGYsIGxvY2FsX3BhdGgpOgorICAgICMgX3ZpZXdfc291cmNlX3VybCBiZWxv
bmdzIGluIHNvbWUgc29ydCBvZiB3ZWJraXRfY29uZmlnLnB5IG1vZHVsZS4KKyAgICBkZWYgX3Zp
ZXdfc291cmNlX3VybChzZWxmLCBsb2NhbF9wYXRoKToKICAgICAgICAgcmV0dXJuICJodHRwOi8v
dHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvJXMiICUgbG9jYWxfcGF0aAogCiAgICAgZGVm
IF9mbGFnX3Blcm1pc3Npb25fcmVqZWN0aW9uX21lc3NhZ2Uoc2VsZiwgc2V0dGVyX2VtYWlsLCBm
bGFnX25hbWUpOgotICAgICAgICBjb21taXR0ZXJfbGlzdCA9ICJXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1pdHRlcnMucHkiICMgVGhpcyBjb3VsZCBiZSBjb21wdXRlZCBmcm9tIENv
bW1pdHRlckxpc3QuX19maWxlX18KLSAgICAgICAgY29udHJpYnV0aW9uX2d1aWRsaW5lc191cmwg
PSAiaHR0cDovL3dlYmtpdC5vcmcvY29kaW5nL2NvbnRyaWJ1dGluZy5odG1sIiAjIFNob3VsZCBj
b21lIGZyb20gc29tZSB3ZWJraXRfY29uZmlnLnB5Ci0gICAgICAgIHF1ZXVlX2FkbWluaXN0cmF0
b3IgPSAiZXNlaWRlbEBjaHJvbWl1bS5vcmciICMgVGhpcyBjb3VsZCBiZSBxdWVyaWVkIGZyb20g
dGhlIHN0YXR1c19zZXJ2ZXIuCi0gICAgICAgIHF1ZXVlX25hbWUgPSAiY29tbWl0LXF1ZXVlIiAj
IFRoaXMgY291bGQgYmUgcXVlcmllZCBmcm9tIHRoZSB0b29sLgotICAgICAgICByZWplY3Rpb25f
bWVzc2FnZSA9ICIlcyBkb2VzIG5vdCBoYXZlICVzIHBlcm1pc3Npb25zIGFjY29yZGluZyB0byAl
cy4iICUgKHNldHRlcl9lbWFpbCwgZmxhZ19uYW1lLCBzZWxmLl92aWV3X3NvdXJjZV9saW5rKGNv
bW1pdHRlcl9saXN0KSkKLSAgICAgICAgcmVqZWN0aW9uX21lc3NhZ2UgKz0gIlxuXG4tIElmIHlv
dSBkbyBub3QgaGF2ZSAlcyByaWdodHMgcGxlYXNlIHJlYWQgJXMgZm9yIGluc3RydWN0aW9ucyBv
biBob3cgdG8gdXNlIGJ1Z3ppbGxhIGZsYWdzLiIgJSAoZmxhZ19uYW1lLCBjb250cmlidXRpb25f
Z3VpZGxpbmVzX3VybCkKLSAgICAgICAgcmVqZWN0aW9uX21lc3NhZ2UgKz0gIlxuXG4tIElmIHlv
dSBoYXZlICVzIHJpZ2h0cyBwbGVhc2UgY29ycmVjdCB0aGUgZXJyb3IgaW4gJXMgYnkgYWRkaW5n
IHlvdXJzZWxmIHRvIHRoZSBmaWxlIChubyByZXZpZXcgbmVlZGVkKS4iICUgKGZsYWdfbmFtZSwg
Y29tbWl0dGVyX2xpc3QpCi0gICAgICAgIHJlamVjdGlvbl9tZXNzYWdlICs9ICIgIER1ZSB0byBi
dWcgMzAwODQgdGhlICVzIHdpbGwgcmVxdWlyZSBhIHJlc3RhcnQgYWZ0ZXIgeW91ciBjaGFuZ2Uu
IiAlIHF1ZXVlX25hbWUKLSAgICAgICAgcmVqZWN0aW9uX21lc3NhZ2UgKz0gIiAgUGxlYXNlIGNv
bnRhY3QgJXMgdG8gcmVxdWVzdCBhICVzIHJlc3RhcnQuIiAlIChxdWV1ZV9hZG1pbmlzdHJhdG9y
LCBxdWV1ZV9uYW1lKQotICAgICAgICByZWplY3Rpb25fbWVzc2FnZSArPSAiICBBZnRlciByZXN0
YXJ0IHRoZSAlcyB3aWxsIGNvcnJlY3RseSByZXNwZWN0IHlvdXIgJXMgcmlnaHRzLiIgJSAocXVl
dWVfbmFtZSwgZmxhZ19uYW1lKQotICAgICAgICByZXR1cm4gcmVqZWN0aW9uX21lc3NhZ2UKKyAg
ICAgICAgIyBUaGlzIGNvdWxkIGJlIGNvbXB1dGVkIGZyb20gQ29tbWl0dGVyTGlzdC5fX2ZpbGVf
XworICAgICAgICBjb21taXR0ZXJfbGlzdCA9ICJXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1pdHRlcnMucHkiCisgICAgICAgICMgU2hvdWxkIGNvbWUgZnJvbSBzb21lIHdlYmtpdF9j
b25maWcucHkKKyAgICAgICAgY29udHJpYnV0aW9uX2d1aWRsaW5lcyA9ICJodHRwOi8vd2Via2l0
Lm9yZy9jb2RpbmcvY29udHJpYnV0aW5nLmh0bWwiCisgICAgICAgICMgVGhpcyBjb3VsZCBiZSBx
dWVyaWVkIGZyb20gdGhlIHN0YXR1c19zZXJ2ZXIuCisgICAgICAgIHF1ZXVlX2FkbWluaXN0cmF0
b3IgPSAiZXNlaWRlbEBjaHJvbWl1bS5vcmciCisgICAgICAgICMgVGhpcyBjb3VsZCBiZSBxdWVy
aWVkIGZyb20gdGhlIHRvb2wuCisgICAgICAgIHF1ZXVlX25hbWUgPSAiY29tbWl0LXF1ZXVlIgor
ICAgICAgICBtZXNzYWdlID0gIiVzIGRvZXMgbm90IGhhdmUgJXMgcGVybWlzc2lvbnMgYWNjb3Jk
aW5nIHRvICVzLiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBzZXR0ZXJfZW1haWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICBmbGFnX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLl92aWV3X3NvdXJjZV91cmwoY29tbWl0dGVyX2xpc3QpKQorICAgICAgICBtZXNzYWdl
ICs9ICJcblxuLSBJZiB5b3UgZG8gbm90IGhhdmUgJXMgcmlnaHRzIHBsZWFzZSByZWFkICVzIGZv
ciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHVzZSBidWd6aWxsYSBmbGFncy4iICUgKAorICAgICAg
ICAgICAgICAgICAgICAgICAgZmxhZ19uYW1lLCBjb250cmlidXRpb25fZ3VpZGxpbmVzKQorICAg
ICAgICBtZXNzYWdlICs9ICJcblxuLSBJZiB5b3UgaGF2ZSAlcyByaWdodHMgcGxlYXNlIGNvcnJl
Y3QgdGhlIGVycm9yIGluICVzIGJ5IGFkZGluZyB5b3Vyc2VsZiB0byB0aGUgZmlsZSAobm8gcmV2
aWV3IG5lZWRlZCkuICAiICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19uYW1lLCBj
b21taXR0ZXJfbGlzdCkKKyAgICAgICAgbWVzc2FnZSArPSAiRHVlIHRvIGJ1ZyAzMDA4NCB0aGUg
JXMgd2lsbCByZXF1aXJlIGEgcmVzdGFydCBhZnRlciB5b3VyIGNoYW5nZS4gICIgJSBxdWV1ZV9u
YW1lCisgICAgICAgIG1lc3NhZ2UgKz0gIlBsZWFzZSBjb250YWN0ICVzIHRvIHJlcXVlc3QgYSAl
cyByZXN0YXJ0LiAgIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlX2FkbWluaXN0
cmF0b3IsIHF1ZXVlX25hbWUpCisgICAgICAgIG1lc3NhZ2UgKz0gIkFmdGVyIHJlc3RhcnQgdGhl
ICVzIHdpbGwgY29ycmVjdGx5IHJlc3BlY3QgeW91ciAlcyByaWdodHMuIiAlICgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHF1ZXVlX25hbWUsIGZsYWdfbmFtZSkKKyAgICAgICAgcmV0dXJuIG1l
c3NhZ2UKIAogICAgIGRlZiBfdmFsaWRhdGVfc2V0dGVyX2VtYWlsKHNlbGYsIHBhdGNoLCByZXN1
bHRfa2V5LCByZWplY3Rpb25fZnVuY3Rpb24pOgogICAgICAgICBjb21taXR0ZXIgPSBnZXRhdHRy
KHBhdGNoLCByZXN1bHRfa2V5KSgpCi0gICAgICAgICMgSWYgdGhlIGZsYWcgaXMgc2V0LCBhbmQg
d2UgZG9uJ3QgcmVjb2duaXplIHRoZSBzZXR0ZXIsIHJlamVjdCB0aGUgZmxhZyEKKyAgICAgICAg
IyBJZiB0aGUgZmxhZyBpcyBzZXQsIGFuZCB3ZSBkb24ndCByZWNvZ25pemUgdGhlIHNldHRlciwg
cmVqZWN0IHRoZQorICAgICAgICAjIGZsYWchCiAgICAgICAgIHNldHRlcl9lbWFpbCA9IHBhdGNo
Ll9hdHRhY2htZW50X2RpY3Rpb25hcnkuZ2V0KCIlc19lbWFpbCIgJSByZXN1bHRfa2V5KQogICAg
ICAgICBpZiBzZXR0ZXJfZW1haWwgYW5kIG5vdCBjb21taXR0ZXI6Ci0gICAgICAgICAgICByZWpl
Y3Rpb25fZnVuY3Rpb24ocGF0Y2guaWQoKSwgc2VsZi5fZmxhZ19wZXJtaXNzaW9uX3JlamVjdGlv
bl9tZXNzYWdlKHNldHRlcl9lbWFpbCwgcmVzdWx0X2tleSkpCisgICAgICAgICAgICByZWplY3Rp
b25fZnVuY3Rpb24ocGF0Y2guaWQoKSwKKyAgICAgICAgICAgICAgICBzZWxmLl9mbGFnX3Blcm1p
c3Npb25fcmVqZWN0aW9uX21lc3NhZ2Uoc2V0dGVyX2VtYWlsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfa2V5KSkKICAgICAg
ICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIHBhdGNo
ZXNfYWZ0ZXJfcmVqZWN0aW5nX2ludmFsaWRfY29tbWl0ZXJzX2FuZF9yZXZpZXdlcnMoc2VsZiwg
cGF0Y2hlcyk6CiAgICAgICAgIHZhbGlkYXRlZF9wYXRjaGVzID0gW10KICAgICAgICAgZm9yIHBh
dGNoIGluIHBhdGNoZXM6Ci0gICAgICAgICAgICBpZiBzZWxmLl92YWxpZGF0ZV9zZXR0ZXJfZW1h
aWwocGF0Y2gsICJyZXZpZXdlciIsIHNlbGYucmVqZWN0X3BhdGNoX2Zyb21fcmV2aWV3X3F1ZXVl
KSBhbmQgc2VsZi5fdmFsaWRhdGVfc2V0dGVyX2VtYWlsKHBhdGNoLCAiY29tbWl0dGVyIiwgc2Vs
Zi5yZWplY3RfcGF0Y2hfZnJvbV9jb21taXRfcXVldWUpOgorICAgICAgICAgICAgaWYgKHNlbGYu
X3ZhbGlkYXRlX3NldHRlcl9lbWFpbCgKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2gsICJyZXZp
ZXdlciIsIHNlbGYucmVqZWN0X3BhdGNoX2Zyb21fcmV2aWV3X3F1ZXVlKQorICAgICAgICAgICAg
ICAgIGFuZCBzZWxmLl92YWxpZGF0ZV9zZXR0ZXJfZW1haWwoCisgICAgICAgICAgICAgICAgICAg
IHBhdGNoLCAiY29tbWl0dGVyIiwgc2VsZi5yZWplY3RfcGF0Y2hfZnJvbV9jb21taXRfcXVldWUp
KToKICAgICAgICAgICAgICAgICB2YWxpZGF0ZWRfcGF0Y2hlcy5hcHBlbmQocGF0Y2gpCiAgICAg
ICAgIHJldHVybiB2YWxpZGF0ZWRfcGF0Y2hlcwogCi0gICAgZGVmIHJlamVjdF9wYXRjaF9mcm9t
X2NvbW1pdF9xdWV1ZShzZWxmLCBhdHRhY2htZW50X2lkLCBhZGRpdGlvbmFsX2NvbW1lbnRfdGV4
dD1Ob25lKToKKyAgICBkZWYgcmVqZWN0X3BhdGNoX2Zyb21fY29tbWl0X3F1ZXVlKHNlbGYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50X2lkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9jb21tZW50X3Rl
eHQ9Tm9uZSk6CiAgICAgICAgIGNvbW1lbnRfdGV4dCA9ICJSZWplY3RpbmcgcGF0Y2ggJXMgZnJv
bSBjb21taXQtcXVldWUuIiAlIGF0dGFjaG1lbnRfaWQKLSAgICAgICAgc2VsZi5fYnVnemlsbGEu
c2V0X2ZsYWdfb25fYXR0YWNobWVudChhdHRhY2htZW50X2lkLCAnY29tbWl0LXF1ZXVlJywgJy0n
LCBjb21tZW50X3RleHQsIGFkZGl0aW9uYWxfY29tbWVudF90ZXh0KQotCi0gICAgZGVmIHJlamVj
dF9wYXRjaF9mcm9tX3Jldmlld19xdWV1ZShzZWxmLCBhdHRhY2htZW50X2lkLCBhZGRpdGlvbmFs
X2NvbW1lbnRfdGV4dD1Ob25lKToKKyAgICAgICAgc2VsZi5fYnVnemlsbGEuc2V0X2ZsYWdfb25f
YXR0YWNobWVudChhdHRhY2htZW50X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJjb21taXQtcXVldWUiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICItIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb21tZW50X3RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9jb21tZW50X3RleHQpCisKKyAgICBkZWYg
cmVqZWN0X3BhdGNoX2Zyb21fcmV2aWV3X3F1ZXVlKHNlbGYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50X2lkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9jb21tZW50X3RleHQ9Tm9uZSk6CiAgICAgICAg
IGNvbW1lbnRfdGV4dCA9ICJSZWplY3RpbmcgcGF0Y2ggJXMgZnJvbSByZXZpZXcgcXVldWUuIiAl
IGF0dGFjaG1lbnRfaWQKLSAgICAgICAgc2VsZi5fYnVnemlsbGEuc2V0X2ZsYWdfb25fYXR0YWNo
bWVudChhdHRhY2htZW50X2lkLCAncmV2aWV3JywgJy0nLCBjb21tZW50X3RleHQsIGFkZGl0aW9u
YWxfY29tbWVudF90ZXh0KQorICAgICAgICBzZWxmLl9idWd6aWxsYS5zZXRfZmxhZ19vbl9hdHRh
Y2htZW50KGF0dGFjaG1lbnRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3JldmlldycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJy0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1lbnRfdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhZGRpdGlvbmFsX2NvbW1lbnRfdGV4dCkKIAogCiBjbGFzcyBCdWd6aWxsYShv
YmplY3QpOgorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRyeXJ1bj1GYWxzZSwgY29tbWl0dGVy
cz1Db21taXR0ZXJMaXN0KCkpOgogICAgICAgICBzZWxmLmRyeXJ1biA9IGRyeXJ1bgogICAgICAg
ICBzZWxmLmF1dGhlbnRpY2F0ZWQgPSBGYWxzZQogICAgICAgICBzZWxmLnF1ZXJpZXMgPSBCdWd6
aWxsYVF1ZXJpZXMoc2VsZikKICAgICAgICAgc2VsZi5jb21taXR0ZXJzID0gY29tbWl0dGVycwog
Ci0gICAgICAgICMgRklYTUU6IFdlIHNob3VsZCB1c2Ugc29tZSBzb3J0IG9mIEJyb3dzZXIgbW9j
ayBvYmplY3Qgd2hlbiBpbiBkcnlydW4gbW9kZSAodG8gcHJldmVudCBhbnkgbWlzdGFrZXMpLgor
ICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgdXNlIHNvbWUgc29ydCBvZiBCcm93c2VyIG1vY2sg
b2JqZWN0IHdoZW4gaW4gZHJ5cnVuCisgICAgICAgICMgbW9kZSAodG8gcHJldmVudCBhbnkgbWlz
dGFrZXMpLgogICAgICAgICBzZWxmLmJyb3dzZXIgPSBCcm93c2VyKCkKLSAgICAgICAgIyBJZ25v
cmUgYnVncy53ZWJraXQub3JnL3JvYm90cy50eHQgdW50aWwgd2UgZml4IGl0IHRvIGFsbG93IHRo
aXMgc2NyaXB0CisgICAgICAgICMgSWdub3JlIGJ1Z3Mud2Via2l0Lm9yZy9yb2JvdHMudHh0IHVu
dGlsIHdlIGZpeCBpdCB0byBhbGxvdyB0aGlzCisgICAgICAgICMgc2NyaXB0LgogICAgICAgICBz
ZWxmLmJyb3dzZXIuc2V0X2hhbmRsZV9yb2JvdHMoRmFsc2UpCiAKICAgICAjIEZJWE1FOiBNdWNo
IG9mIHRoaXMgc2hvdWxkIGdvIGludG8gc29tZSBzb3J0IG9mIGNvbmZpZyBtb2R1bGU6CkBAIC0y
OTAsNyArMzUyLDkgQEAgY2xhc3MgQnVnemlsbGEob2JqZWN0KToKIAogICAgIGRlZiBidWdfdXJs
X2Zvcl9idWdfaWQoc2VsZiwgYnVnX2lkLCB4bWw9RmFsc2UpOgogICAgICAgICBjb250ZW50X3R5
cGUgPSAiJmN0eXBlPXhtbCIgaWYgeG1sIGVsc2UgIiIKLSAgICAgICAgcmV0dXJuICIlc3Nob3df
YnVnLmNnaT9pZD0lcyVzIiAlIChzZWxmLmJ1Z19zZXJ2ZXJfdXJsLCBidWdfaWQsIGNvbnRlbnRf
dHlwZSkKKyAgICAgICAgcmV0dXJuICIlc3Nob3dfYnVnLmNnaT9pZD0lcyVzIiAlIChzZWxmLmJ1
Z19zZXJ2ZXJfdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJ1Z19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZW50X3R5cGUpCiAKICAgICBkZWYgc2hvcnRfYnVnX3VybF9mb3JfYnVnX2lkKHNlbGYsIGJ1Z19p
ZCk6CiAgICAgICAgIHJldHVybiAiaHR0cDovL3dlYmtpdC5vcmcvYi8lcyIgJSBidWdfaWQKQEAg
LTI5OSwxMCArMzYzLDE2IEBAIGNsYXNzIEJ1Z3ppbGxhKG9iamVjdCk6CiAgICAgICAgIGFjdGlv
bl9wYXJhbSA9ICIiCiAgICAgICAgIGlmIGFjdGlvbiBhbmQgYWN0aW9uICE9ICJ2aWV3IjoKICAg
ICAgICAgICAgIGFjdGlvbl9wYXJhbSA9ICImYWN0aW9uPSVzIiAlIGFjdGlvbgotICAgICAgICBy
ZXR1cm4gIiVzYXR0YWNobWVudC5jZ2k/aWQ9JXMlcyIgJSAoc2VsZi5idWdfc2VydmVyX3VybCwg
YXR0YWNobWVudF9pZCwgYWN0aW9uX3BhcmFtKQotCi0gICAgZGVmIF9wYXJzZV9hdHRhY2htZW50
X2ZsYWcoc2VsZiwgZWxlbWVudCwgZmxhZ19uYW1lLCBhdHRhY2htZW50LCByZXN1bHRfa2V5KToK
LSAgICAgICAgZmxhZyA9IGVsZW1lbnQuZmluZCgnZmxhZycsIGF0dHJzPXsnbmFtZScgOiBmbGFn
X25hbWV9KQorICAgICAgICByZXR1cm4gIiVzYXR0YWNobWVudC5jZ2k/aWQ9JXMlcyIgJSAoc2Vs
Zi5idWdfc2VydmVyX3VybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF0dGFjaG1lbnRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhY3Rpb25fcGFyYW0pCisKKyAgICBkZWYgX3BhcnNlX2F0dGFjaG1lbnRfZmxh
ZyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19uYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0X2tleSk6CisgICAgICAgIGZsYWcgPSBlbGVtZW50LmZpbmQoJ2ZsYWcnLCBhdHRycz17J25h
bWUnOiBmbGFnX25hbWV9KQogICAgICAgICBpZiBmbGFnOgogICAgICAgICAgICAgYXR0YWNobWVu
dFtmbGFnX25hbWVdID0gZmxhZ1snc3RhdHVzJ10KICAgICAgICAgICAgIGlmIGZsYWdbJ3N0YXR1
cyddID09ICcrJzoKQEAgLTMxOSw4ICszODksMTAgQEAgY2xhc3MgQnVnemlsbGEob2JqZWN0KToK
ICAgICAgICAgYXR0YWNobWVudFsnbmFtZSddID0gdW5pY29kZShlbGVtZW50LmZpbmQoJ2Rlc2Mn
KS5zdHJpbmcpCiAgICAgICAgIGF0dGFjaG1lbnRbJ2F0dGFjaGVyX2VtYWlsJ10gPSBzdHIoZWxl
bWVudC5maW5kKCdhdHRhY2hlcicpLnN0cmluZykKICAgICAgICAgYXR0YWNobWVudFsndHlwZSdd
ID0gc3RyKGVsZW1lbnQuZmluZCgndHlwZScpLnN0cmluZykKLSAgICAgICAgc2VsZi5fcGFyc2Vf
YXR0YWNobWVudF9mbGFnKGVsZW1lbnQsICdyZXZpZXcnLCBhdHRhY2htZW50LCAncmV2aWV3ZXJf
ZW1haWwnKQotICAgICAgICBzZWxmLl9wYXJzZV9hdHRhY2htZW50X2ZsYWcoZWxlbWVudCwgJ2Nv
bW1pdC1xdWV1ZScsIGF0dGFjaG1lbnQsICdjb21taXR0ZXJfZW1haWwnKQorICAgICAgICBzZWxm
Ll9wYXJzZV9hdHRhY2htZW50X2ZsYWcoCisgICAgICAgICAgICAgICAgZWxlbWVudCwgJ3Jldmll
dycsIGF0dGFjaG1lbnQsICdyZXZpZXdlcl9lbWFpbCcpCisgICAgICAgIHNlbGYuX3BhcnNlX2F0
dGFjaG1lbnRfZmxhZygKKyAgICAgICAgICAgICAgICBlbGVtZW50LCAnY29tbWl0LXF1ZXVlJywg
YXR0YWNobWVudCwgJ2NvbW1pdHRlcl9lbWFpbCcpCiAgICAgICAgIHJldHVybiBhdHRhY2htZW50
CiAKICAgICBkZWYgX3BhcnNlX2J1Z19wYWdlKHNlbGYsIHBhZ2UpOgpAQCAtMzMwLDExICs0MDIs
MTQgQEAgY2xhc3MgQnVnemlsbGEob2JqZWN0KToKICAgICAgICAgYnVnWyJ0aXRsZSJdID0gdW5p
Y29kZShzb3VwLmZpbmQoInNob3J0X2Rlc2MiKS5zdHJpbmcpCiAgICAgICAgIGJ1Z1sicmVwb3J0
ZXJfZW1haWwiXSA9IHN0cihzb3VwLmZpbmQoInJlcG9ydGVyIikuc3RyaW5nKQogICAgICAgICBi
dWdbImFzc2lnbmVkX3RvX2VtYWlsIl0gPSBzdHIoc291cC5maW5kKCJhc3NpZ25lZF90byIpLnN0
cmluZykKLSAgICAgICAgYnVnWyJjY19lbWFpbHMiXSA9IFtzdHIoZWxlbWVudC5zdHJpbmcpIGZv
ciBlbGVtZW50IGluIHNvdXAuZmluZEFsbCgnY2MnKV0KKyAgICAgICAgYnVnWyJjY19lbWFpbHMi
XSA9IFtzdHIoZWxlbWVudC5zdHJpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
IGVsZW1lbnQgaW4gc291cC5maW5kQWxsKCdjYycpXQogICAgICAgICBidWdbImF0dGFjaG1lbnRz
Il0gPSBbc2VsZi5fcGFyc2VfYXR0YWNobWVudF9lbGVtZW50KGVsZW1lbnQsIGJ1Z1siaWQiXSkg
Zm9yIGVsZW1lbnQgaW4gc291cC5maW5kQWxsKCdhdHRhY2htZW50JyldCiAgICAgICAgIHJldHVy
biBidWcKIAotICAgICMgTWFrZXMgdGVzdGluZyBmZXRjaF8qX2Zyb21fYnVnKCkgcG9zc2libGUg
dW50aWwgd2UgaGF2ZSBhIGJldHRlciBCdWd6aWxsYU5ldHdvcmsgYWJzdHJhdGlvbi4KKyAgICAj
IE1ha2VzIHRlc3RpbmcgZmV0Y2hfKl9mcm9tX2J1ZygpIHBvc3NpYmxlIHVudGlsIHdlIGhhdmUg
YSBiZXR0ZXIKKyAgICAjIEJ1Z3ppbGxhTmV0d29yayBhYnN0cmF0aW9uLgorCiAgICAgZGVmIF9m
ZXRjaF9idWdfcGFnZShzZWxmLCBidWdfaWQpOgogICAgICAgICBidWdfdXJsID0gc2VsZi5idWdf
dXJsX2Zvcl9idWdfaWQoYnVnX2lkLCB4bWw9VHJ1ZSkKICAgICAgICAgbG9nKCJGZXRjaGluZzog
JXMiICUgYnVnX3VybCkKQEAgLTM0NCwxMyArNDE5LDE3IEBAIGNsYXNzIEJ1Z3ppbGxhKG9iamVj
dCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9wYXJzZV9idWdfcGFnZShzZWxmLl9mZXRjaF9idWdf
cGFnZShidWdfaWQpKQogCiAgICAgIyBGSVhNRTogQSBCdWd6aWxsYUNhY2hlIG9iamVjdCBzaG91
bGQgcHJvdmlkZSBhbGwgdGhlc2UgZmV0Y2hfIG1ldGhvZHMuCisKICAgICBkZWYgZmV0Y2hfYnVn
KHNlbGYsIGJ1Z19pZCk6CiAgICAgICAgIHJldHVybiBCdWcoc2VsZi5mZXRjaF9idWdfZGljdGlv
bmFyeShidWdfaWQpLCBzZWxmKQogCiAgICAgZGVmIF9wYXJzZV9idWdfaWRfZnJvbV9hdHRhY2ht
ZW50X3BhZ2Uoc2VsZiwgcGFnZSk6Ci0gICAgICAgIHVwX2xpbmsgPSBCZWF1dGlmdWxTb3VwKHBh
Z2UpLmZpbmQoJ2xpbmsnLCByZWw9J1VwJykgIyBUaGUgIlVwIiByZWxhdGlvbiBoYXBwZW5zIHRv
IHBvaW50IHRvIHRoZSBidWcuCisgICAgICAgICMgVGhlICJVcCIgcmVsYXRpb24gaGFwcGVucyB0
byBwb2ludCB0byB0aGUgYnVnLgorICAgICAgICB1cF9saW5rID0gQmVhdXRpZnVsU291cChwYWdl
KS5maW5kKCdsaW5rJywgcmVsPSdVcCcpCiAgICAgICAgIGlmIG5vdCB1cF9saW5rOgotICAgICAg
ICAgICAgcmV0dXJuIE5vbmUgIyBUaGlzIGF0dGFjaG1lbnQgZG9lcyBub3QgZXhpc3QgKG9yIHlv
dSBkb24ndCBoYXZlIHBlcm1pc3Npb25zIHRvIHZpZXcgaXQpLgorICAgICAgICAgICAgIyBUaGlz
IGF0dGFjaG1lbnQgZG9lcyBub3QgZXhpc3QgKG9yIHlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb25z
IHRvCisgICAgICAgICAgICAjIHZpZXcgaXQpLgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAg
ICAgICAgbWF0Y2ggPSByZS5zZWFyY2goInNob3dfYnVnLmNnaVw/aWQ9KD9QPGJ1Z19pZD5cZCsp
IiwgdXBfbGlua1snaHJlZiddKQogICAgICAgICByZXR1cm4gaW50KG1hdGNoLmdyb3VwKCdidWdf
aWQnKSkKIApAQCAtMzYyLDE0ICs0NDEsMTggQEAgY2xhc3MgQnVnemlsbGEob2JqZWN0KToKICAg
ICAgICAgcGFnZSA9IHNlbGYuYnJvd3Nlci5vcGVuKGF0dGFjaG1lbnRfdXJsKQogICAgICAgICBy
ZXR1cm4gc2VsZi5fcGFyc2VfYnVnX2lkX2Zyb21fYXR0YWNobWVudF9wYWdlKHBhZ2UpCiAKLSAg
ICAjIEZJWE1FOiBUaGlzIHNob3VsZCBqdXN0IHJldHVybiBBdHRhY2htZW50KGlkKSwgd2hpY2gg
c2hvdWxkIGJlIGFibGUgdG8gbGF6aWx5IGZldGNoIG5lZWRlZCBkYXRhLgorICAgICMgRklYTUU6
IFRoaXMgc2hvdWxkIGp1c3QgcmV0dXJuIEF0dGFjaG1lbnQoaWQpLCB3aGljaCBzaG91bGQgYmUg
YWJsZSB0bworICAgICMgbGF6aWx5IGZldGNoIG5lZWRlZCBkYXRhLgorCiAgICAgZGVmIGZldGNo
X2F0dGFjaG1lbnQoc2VsZiwgYXR0YWNobWVudF9pZCk6Ci0gICAgICAgICMgV2UgY291bGQgZ3Jh
YiBhbGwgdGhlIGF0dGFjaG1lbnQgZGV0YWlscyBvZmYgb2YgdGhlIGF0dGFjaG1lbnQgZWRpdCBw
YWdlCi0gICAgICAgICMgYnV0IHdlIGFscmVhZHkgaGF2ZSB3b3JraW5nIGNvZGUgdG8gZG8gc28g
b2ZmIG9mIHRoZSBidWdzIHBhZ2UsIHNvIHJlLXVzZSB0aGF0LgorICAgICAgICAjIFdlIGNvdWxk
IGdyYWIgYWxsIHRoZSBhdHRhY2htZW50IGRldGFpbHMgb2ZmIG9mIHRoZSBhdHRhY2htZW50IGVk
aXQKKyAgICAgICAgIyBwYWdlIGJ1dCB3ZSBhbHJlYWR5IGhhdmUgd29ya2luZyBjb2RlIHRvIGRv
IHNvIG9mZiBvZiB0aGUgYnVncyBwYWdlLAorICAgICAgICAjIHNvIHJlLXVzZSB0aGF0LgogICAg
ICAgICBidWdfaWQgPSBzZWxmLmJ1Z19pZF9mb3JfYXR0YWNobWVudF9pZChhdHRhY2htZW50X2lk
KQogICAgICAgICBpZiBub3QgYnVnX2lkOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAg
ICAgZm9yIGF0dGFjaG1lbnQgaW4gc2VsZi5mZXRjaF9idWcoYnVnX2lkKS5hdHRhY2htZW50cyhp
bmNsdWRlX29ic29sZXRlPVRydWUpOgorICAgICAgICBhdHRhY2htZW50cyA9IHNlbGYuZmV0Y2hf
YnVnKGJ1Z19pZCkuYXR0YWNobWVudHMoaW5jbHVkZV9vYnNvbGV0ZT1UcnVlKQorICAgICAgICBm
b3IgYXR0YWNobWVudCBpbiBhdHRhY2htZW50czoKICAgICAgICAgICAgIGlmIGF0dGFjaG1lbnQu
aWQoKSA9PSBpbnQoYXR0YWNobWVudF9pZCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dGFj
aG1lbnQKICAgICAgICAgcmV0dXJuIE5vbmUgIyBUaGlzIHNob3VsZCBuZXZlciBiZSBoaXQuCkBA
IC0zODMsNyArNDY2LDggQEAgY2xhc3MgQnVnemlsbGEob2JqZWN0KToKICAgICAgICAgICAgIHNl
bGYuYXV0aGVudGljYXRlZCA9IFRydWUKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgICh1
c2VybmFtZSwgcGFzc3dvcmQpID0gQ3JlZGVudGlhbHMoc2VsZi5idWdfc2VydmVyX2hvc3QsIGdp
dF9wcmVmaXg9ImJ1Z3ppbGxhIikucmVhZF9jcmVkZW50aWFscygpCisgICAgICAgICh1c2VybmFt
ZSwgcGFzc3dvcmQpID0gQ3JlZGVudGlhbHMoCisgICAgICAgICAgICAgICAgc2VsZi5idWdfc2Vy
dmVyX2hvc3QsIGdpdF9wcmVmaXg9ImJ1Z3ppbGxhIikucmVhZF9jcmVkZW50aWFscygpCiAKICAg
ICAgICAgbG9nKCJMb2dnaW5nIGluIGFzICVzLi4uIiAlIHVzZXJuYW1lKQogICAgICAgICBzZWxm
LmJyb3dzZXIub3BlbihzZWxmLmJ1Z19zZXJ2ZXJfdXJsICsgImluZGV4LmNnaT9Hb0FoZWFkQW5k
TG9nSW49MSIpCkBAIC0zOTMsMTQgKzQ3NywyMSBAQCBjbGFzcyBCdWd6aWxsYShvYmplY3QpOgog
ICAgICAgICByZXNwb25zZSA9IHNlbGYuYnJvd3Nlci5zdWJtaXQoKQogCiAgICAgICAgIG1hdGNo
ID0gcmUuc2VhcmNoKCI8dGl0bGU+KC4rPyk8L3RpdGxlPiIsIHJlc3BvbnNlLnJlYWQoKSkKLSAg
ICAgICAgIyBJZiB0aGUgcmVzdWx0aW5nIHBhZ2UgaGFzIGEgdGl0bGUsIGFuZCBpdCBjb250YWlu
cyB0aGUgd29yZCAiaW52YWxpZCIgYXNzdW1lIGl0J3MgdGhlIGxvZ2luIGZhaWx1cmUgcGFnZS4K
KyAgICAgICAgIyBJZiB0aGUgcmVzdWx0aW5nIHBhZ2UgaGFzIGEgdGl0bGUsIGFuZCBpdCBjb250
YWlucyB0aGUgd29yZCAiaW52YWxpZCIKKyAgICAgICAgIyBhc3N1bWUgaXQncyB0aGUgbG9naW4g
ZmFpbHVyZSBwYWdlLgogICAgICAgICBpZiBtYXRjaCBhbmQgcmUuc2VhcmNoKCJJbnZhbGlkIiwg
bWF0Y2guZ3JvdXAoMSksIHJlLklHTk9SRUNBU0UpOgogICAgICAgICAgICAgIyBGSVhNRTogV2Ug
Y291bGQgYWRkIHRoZSBhYmlsaXR5IHRvIHRyeSBhZ2FpbiBvbiBmYWlsdXJlLgogICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCJCdWd6aWxsYSBsb2dpbiBmYWlsZWQ6ICVzIiAlIG1hdGNoLmdy
b3VwKDEpKQogCiAgICAgICAgIHNlbGYuYXV0aGVudGljYXRlZCA9IFRydWUKIAotICAgIGRlZiBf
ZmlsbF9hdHRhY2htZW50X2Zvcm0oc2VsZiwgZGVzY3JpcHRpb24sIHBhdGNoX2ZpbGVfb2JqZWN0
LCBjb21tZW50X3RleHQ9Tm9uZSwgbWFya19mb3JfcmV2aWV3PUZhbHNlLCBtYXJrX2Zvcl9jb21t
aXRfcXVldWU9RmFsc2UsIG1hcmtfZm9yX2xhbmRpbmc9RmFsc2UsIGJ1Z19pZD1Ob25lKToKKyAg
ICBkZWYgX2ZpbGxfYXR0YWNobWVudF9mb3JtKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNo
X2ZpbGVfb2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudF90ZXh0
PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrX2Zvcl9yZXZpZXc9RmFs
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrX2Zvcl9jb21taXRfcXVldWU9
RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrX2Zvcl9sYW5kaW5nPUZh
bHNlLCBidWdfaWQ9Tm9uZSk6CiAgICAgICAgIHNlbGYuYnJvd3NlclsnZGVzY3JpcHRpb24nXSA9
IGRlc2NyaXB0aW9uCiAgICAgICAgIHNlbGYuYnJvd3NlclsnaXNwYXRjaCddID0gKCIxIiwpCiAg
ICAgICAgIHNlbGYuYnJvd3NlclsnZmxhZ190eXBlLTEnXSA9ICgnPycsKSBpZiBtYXJrX2Zvcl9y
ZXZpZXcgZWxzZSAoJ1gnLCkKQEAgLTQxNiwyMCArNTA3LDM4IEBAIGNsYXNzIEJ1Z3ppbGxhKG9i
amVjdCk6CiAgICAgICAgICAgICBwYXRjaF9uYW1lID0gImJ1Zy0lcy0lcy5wYXRjaCIgJSAoYnVn
X2lkLCB0aW1lc3RhbXAoKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHBhdGNoX25hbWUg
PSIlcy5wYXRjaCIgJSB0aW1lc3RhbXAoKQotICAgICAgICBzZWxmLmJyb3dzZXIuYWRkX2ZpbGUo
cGF0Y2hfZmlsZV9vYmplY3QsICJ0ZXh0L3BsYWluIiwgcGF0Y2hfbmFtZSwgJ2RhdGEnKQotCi0g
ICAgZGVmIGFkZF9wYXRjaF90b19idWcoc2VsZiwgYnVnX2lkLCBwYXRjaF9maWxlX29iamVjdCwg
ZGVzY3JpcHRpb24sIGNvbW1lbnRfdGV4dD1Ob25lLCBtYXJrX2Zvcl9yZXZpZXc9RmFsc2UsIG1h
cmtfZm9yX2NvbW1pdF9xdWV1ZT1GYWxzZSwgbWFya19mb3JfbGFuZGluZz1GYWxzZSk6CisgICAg
ICAgIHNlbGYuYnJvd3Nlci5hZGRfZmlsZShwYXRjaF9maWxlX29iamVjdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhdGNoX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScp
CisKKyAgICBkZWYgYWRkX3BhdGNoX3RvX2J1ZyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1Z19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaF9maWxlX29iamVjdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21tZW50X3RleHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYXJr
X2Zvcl9yZXZpZXc9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFya19mb3JfY29t
bWl0X3F1ZXVlPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtfZm9yX2xhbmRp
bmc9RmFsc2UpOgogICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZSgpCiAKLSAgICAgICAgbG9nKCdB
ZGRpbmcgcGF0Y2ggIiVzIiB0byAlc3Nob3dfYnVnLmNnaT9pZD0lcycgJSAoZGVzY3JpcHRpb24s
IHNlbGYuYnVnX3NlcnZlcl91cmwsIGJ1Z19pZCkpCisgICAgICAgIGxvZygnQWRkaW5nIHBhdGNo
ICIlcyIgdG8gJXNzaG93X2J1Zy5jZ2k/aWQ9JXMnICUgKGRlc2NyaXB0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJ1
Z19zZXJ2ZXJfdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBidWdfaWQpKQogCiAgICAgICAgIGlmIHNlbGYuZHJ5cnVuOgogICAg
ICAgICAgICAgbG9nKGNvbW1lbnRfdGV4dCkKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAg
IHNlbGYuYnJvd3Nlci5vcGVuKCIlc2F0dGFjaG1lbnQuY2dpP2FjdGlvbj1lbnRlciZidWdpZD0l
cyIgJSAoc2VsZi5idWdfc2VydmVyX3VybCwgYnVnX2lkKSkKKyAgICAgICAgc2VsZi5icm93c2Vy
Lm9wZW4oIiVzYXR0YWNobWVudC5jZ2k/YWN0aW9uPWVudGVyJmJ1Z2lkPSVzIiAlICgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5idWdfc2VydmVyX3VybCwgYnVnX2lkKSkKICAgICAg
ICAgc2VsZi5icm93c2VyLnNlbGVjdF9mb3JtKG5hbWU9ImVudHJ5Zm9ybSIpCi0gICAgICAgIHNl
bGYuX2ZpbGxfYXR0YWNobWVudF9mb3JtKGRlc2NyaXB0aW9uLCBwYXRjaF9maWxlX29iamVjdCwg
bWFya19mb3JfcmV2aWV3PW1hcmtfZm9yX3JldmlldywgbWFya19mb3JfY29tbWl0X3F1ZXVlPW1h
cmtfZm9yX2NvbW1pdF9xdWV1ZSwgbWFya19mb3JfbGFuZGluZz1tYXJrX2Zvcl9sYW5kaW5nLCBi
dWdfaWQ9YnVnX2lkKQorICAgICAgICBzZWxmLl9maWxsX2F0dGFjaG1lbnRfZm9ybShkZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hfZmlsZV9vYmpl
Y3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtfZm9yX3Jldmlldz1t
YXJrX2Zvcl9yZXZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtf
Zm9yX2NvbW1pdF9xdWV1ZT1tYXJrX2Zvcl9jb21taXRfcXVldWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1hcmtfZm9yX2xhbmRpbmc9bWFya19mb3JfbGFuZGluZywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVnX2lkPWJ1Z19pZCkKICAgICAgICAg
aWYgY29tbWVudF90ZXh0OgogICAgICAgICAgICAgbG9nKGNvbW1lbnRfdGV4dCkKICAgICAgICAg
ICAgIHNlbGYuYnJvd3NlclsnY29tbWVudCddID0gY29tbWVudF90ZXh0CkBAIC00NDUsMTggKzU1
NCwzMyBAQCBjbGFzcyBCdWd6aWxsYShvYmplY3QpOgogICAgICAgICByZXR1cm4gY29tcG9uZW50
c1tyZXN1bHRdCiAKICAgICBkZWYgX2NoZWNrX2NyZWF0ZV9idWdfcmVzcG9uc2Uoc2VsZiwgcmVz
cG9uc2VfaHRtbCk6Ci0gICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCI8dGl0bGU+QnVnICg/UDxi
dWdfaWQ+XGQrKSBTdWJtaXR0ZWQ8L3RpdGxlPiIsIHJlc3BvbnNlX2h0bWwpCisgICAgICAgIG1h
dGNoID0gcmUuc2VhcmNoKCI8dGl0bGU+QnVnICg/UDxidWdfaWQ+XGQrKSBTdWJtaXR0ZWQ8L3Rp
dGxlPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2h0bWwpCiAgICAgICAg
IGlmIG1hdGNoOgogICAgICAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKCdidWdfaWQnKQogCi0g
ICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCc8ZGl2IGlkPSJidWd6aWxsYS1ib2R5Ij4oP1A8ZXJy
b3JfbWVzc2FnZT4uKyk8ZGl2IGlkPSJmb290ZXIiPicsIHJlc3BvbnNlX2h0bWwsIHJlLkRPVEFM
TCkKKyAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goCisgICAgICAgICAgICAnPGRpdiBpZD0iYnVn
emlsbGEtYm9keSI+KD9QPGVycm9yX21lc3NhZ2U+LispPGRpdiBpZD0iZm9vdGVyIj4nLAorICAg
ICAgICAgICAgcmVzcG9uc2VfaHRtbCwKKyAgICAgICAgICAgIHJlLkRPVEFMTCkKICAgICAgICAg
ZXJyb3JfbWVzc2FnZSA9ICJGQUlMIgogICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgIHRl
eHRfbGluZXMgPSBCZWF1dGlmdWxTb3VwKG1hdGNoLmdyb3VwKCdlcnJvcl9tZXNzYWdlJykpLmZp
bmRBbGwodGV4dD1UcnVlKQotICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICJcbiIgKyAnXG4n
LmpvaW4oWyIgICIgKyBsaW5lLnN0cmlwKCkgZm9yIGxpbmUgaW4gdGV4dF9saW5lcyBpZiBsaW5l
LnN0cmlwKCldKQorICAgICAgICAgICAgdGV4dF9saW5lcyA9IEJlYXV0aWZ1bFNvdXAoCisgICAg
ICAgICAgICAgICAgICAgIG1hdGNoLmdyb3VwKCdlcnJvcl9tZXNzYWdlJykpLmZpbmRBbGwodGV4
dD1UcnVlKQorICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICJcbiIgKyAnXG4nLmpvaW4oCisg
ICAgICAgICAgICAgICAgICAgIFsiICAiICsgbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAg
ICAgICBmb3IgbGluZSBpbiB0ZXh0X2xpbmVzIGlmIGxpbmUuc3RyaXAoKV0pCiAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbigiQnVnIG5vdCBjcmVhdGVkOiAlcyIgJSBlcnJvcl9tZXNzYWdlKQogCi0g
ICAgZGVmIGNyZWF0ZV9idWcoc2VsZiwgYnVnX3RpdGxlLCBidWdfZGVzY3JpcHRpb24sIGNvbXBv
bmVudD1Ob25lLCBwYXRjaF9maWxlX29iamVjdD1Ob25lLCBwYXRjaF9kZXNjcmlwdGlvbj1Ob25l
LCBjYz1Ob25lLCBtYXJrX2Zvcl9yZXZpZXc9RmFsc2UsIG1hcmtfZm9yX2NvbW1pdF9xdWV1ZT1G
YWxzZSk6CisgICAgZGVmIGNyZWF0ZV9idWcoc2VsZiwKKyAgICAgICAgICAgICAgICAgICBidWdf
dGl0bGUsCisgICAgICAgICAgICAgICAgICAgYnVnX2Rlc2NyaXB0aW9uLAorICAgICAgICAgICAg
ICAgICAgIGNvbXBvbmVudD1Ob25lLAorICAgICAgICAgICAgICAgICAgIHBhdGNoX2ZpbGVfb2Jq
ZWN0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgcGF0Y2hfZGVzY3JpcHRpb249Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICBjYz1Ob25lLAorICAgICAgICAgICAgICAgICAgIG1hcmtfZm9yX3Jl
dmlldz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICBtYXJrX2Zvcl9jb21taXRfcXVldWU9RmFs
c2UpOgogICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZSgpCiAKICAgICAgICAgbG9nKCdDcmVhdGlu
ZyBidWcgd2l0aCB0aXRsZSAiJXMiJyAlIGJ1Z190aXRsZSkKQEAgLTQ3OSw3ICs2MDMsMTEgQEAg
Y2xhc3MgQnVnemlsbGEob2JqZWN0KToKICAgICAgICAgc2VsZi5icm93c2VyWydjb21tZW50J10g
PSBidWdfZGVzY3JpcHRpb24KIAogICAgICAgICBpZiBwYXRjaF9maWxlX29iamVjdDoKLSAgICAg
ICAgICAgIHNlbGYuX2ZpbGxfYXR0YWNobWVudF9mb3JtKHBhdGNoX2Rlc2NyaXB0aW9uLCBwYXRj
aF9maWxlX29iamVjdCwgbWFya19mb3JfcmV2aWV3PW1hcmtfZm9yX3JldmlldywgbWFya19mb3Jf
Y29tbWl0X3F1ZXVlPW1hcmtfZm9yX2NvbW1pdF9xdWV1ZSkKKyAgICAgICAgICAgIHNlbGYuX2Zp
bGxfYXR0YWNobWVudF9mb3JtKAorICAgICAgICAgICAgICAgICAgICBwYXRjaF9kZXNjcmlwdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hfZmlsZV9vYmplY3QsCisgICAgICAgICAgICAg
ICAgICAgIG1hcmtfZm9yX3Jldmlldz1tYXJrX2Zvcl9yZXZpZXcsCisgICAgICAgICAgICAgICAg
ICAgIG1hcmtfZm9yX2NvbW1pdF9xdWV1ZT1tYXJrX2Zvcl9jb21taXRfcXVldWUpCiAKICAgICAg
ICAgcmVzcG9uc2UgPSBzZWxmLmJyb3dzZXIuc3VibWl0KCkKIApAQCAtNDk2LDcgKzYyNCw5IEBA
IGNsYXNzIEJ1Z3ppbGxhKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5icm93c2Vy
LmZpbmRfY29udHJvbCh0eXBlPSdzZWxlY3QnLCBucj0xKQogICAgICAgICByYWlzZSBFeGNlcHRp
b24oIkRvbid0IGtub3cgaG93IHRvIGZpbmQgZmxhZyBuYW1lZCBcIiVzXCIiICUgZmxhZ19uYW1l
KQogCi0gICAgZGVmIGNsZWFyX2F0dGFjaG1lbnRfZmxhZ3Moc2VsZiwgYXR0YWNobWVudF9pZCwg
YWRkaXRpb25hbF9jb21tZW50X3RleHQ9Tm9uZSk6CisgICAgZGVmIGNsZWFyX2F0dGFjaG1lbnRf
ZmxhZ3Moc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50X2lk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfY29tbWVudF90ZXh0
PU5vbmUpOgogICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZSgpCiAKICAgICAgICAgY29tbWVudF90
ZXh0ID0gIkNsZWFyaW5nIGZsYWdzIG9uIGF0dGFjaG1lbnQ6ICVzIiAlIGF0dGFjaG1lbnRfaWQK
QEAgLTUxNCw4ICs2NDQsMTUgQEAgY2xhc3MgQnVnemlsbGEob2JqZWN0KToKICAgICAgICAgc2Vs
Zi5fZmluZF9zZWxlY3RfZWxlbWVudF9mb3JfZmxhZygnY29tbWl0LXF1ZXVlJykudmFsdWUgPSAo
IlgiLCkKICAgICAgICAgc2VsZi5icm93c2VyLnN1Ym1pdCgpCiAKLSAgICAjIEZJWE1FOiBXZSBu
ZWVkIGEgd2F5IHRvIHRlc3QgdGhpcyBvbiBhIGxpdmUgYnVnemlsbGEgaW5zdGFuY2UuCi0gICAg
ZGVmIHNldF9mbGFnX29uX2F0dGFjaG1lbnQoc2VsZiwgYXR0YWNobWVudF9pZCwgZmxhZ19uYW1l
LCBmbGFnX3ZhbHVlLCBjb21tZW50X3RleHQsIGFkZGl0aW9uYWxfY29tbWVudF90ZXh0KToKKyAg
ICBkZWYgc2V0X2ZsYWdfb25fYXR0YWNobWVudChzZWxmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF0dGFjaG1lbnRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudF90ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfY29tbWVudF90ZXh0KToKKyAgICAgICAgIyBG
SVhNRTogV2UgbmVlZCBhIHdheSB0byB0ZXN0IHRoaXMgZnVuY3Rpb24gb24gYSBsaXZlIGJ1Z3pp
bGxhCisgICAgICAgICMgaW5zdGFuY2UuCisKICAgICAgICAgc2VsZi5hdXRoZW50aWNhdGUoKQog
CiAgICAgICAgIGlmIGFkZGl0aW9uYWxfY29tbWVudF90ZXh0OgpAQCAtNTMxLDggKzY2OCwxMCBA
QCBjbGFzcyBCdWd6aWxsYShvYmplY3QpOgogICAgICAgICBzZWxmLl9maW5kX3NlbGVjdF9lbGVt
ZW50X2Zvcl9mbGFnKGZsYWdfbmFtZSkudmFsdWUgPSAoZmxhZ192YWx1ZSwpCiAgICAgICAgIHNl
bGYuYnJvd3Nlci5zdWJtaXQoKQogCi0gICAgIyBGSVhNRTogQWxsIG9mIHRoZXNlIGJ1ZyBlZGl0
aW5nIG1ldGhvZHMgaGF2ZSBhIHJpZGljdWxvdXMgYW1vdW50IG9mIGNvcHkvcGFzdGUgY29kZS4K
LSAgICBkZWYgb2Jzb2xldGVfYXR0YWNobWVudChzZWxmLCBhdHRhY2htZW50X2lkLCBjb21tZW50
X3RleHQgPSBOb25lKToKKyAgICAjIEZJWE1FOiBBbGwgb2YgdGhlc2UgYnVnIGVkaXRpbmcgbWV0
aG9kcyBoYXZlIGEgcmlkaWN1bG91cyBhbW91bnQgb2YKKyAgICAjIGNvcHkvcGFzdGUgY29kZS4K
KworICAgIGRlZiBvYnNvbGV0ZV9hdHRhY2htZW50KHNlbGYsIGF0dGFjaG1lbnRfaWQsIGNvbW1l
bnRfdGV4dD1Ob25lKToKICAgICAgICAgc2VsZi5hdXRoZW50aWNhdGUoKQogCiAgICAgICAgIGxv
ZygiT2Jzb2xldGluZyBhdHRhY2htZW50OiAlcyIgJSBhdHRhY2htZW50X2lkKQpAQCAtNTQ4LDE0
ICs2ODcsMTYgQEAgY2xhc3MgQnVnemlsbGEob2JqZWN0KToKICAgICAgICAgc2VsZi5fZmluZF9z
ZWxlY3RfZWxlbWVudF9mb3JfZmxhZygnY29tbWl0LXF1ZXVlJykudmFsdWUgPSAoIlgiLCkKICAg
ICAgICAgaWYgY29tbWVudF90ZXh0OgogICAgICAgICAgICAgbG9nKGNvbW1lbnRfdGV4dCkKLSAg
ICAgICAgICAgICMgQnVnemlsbGEgaGFzIHR3byB0ZXh0YXJlYXMgbmFtZWQgJ2NvbW1lbnQnLCBv
bmUgaXMgc29tZWhvdyBoaWRkZW4uICBXZSB3YW50IHRoZSBmaXJzdC4KKyAgICAgICAgICAgICMg
QnVnemlsbGEgaGFzIHR3byB0ZXh0YXJlYXMgbmFtZWQgJ2NvbW1lbnQnLCBvbmUgaXMgc29tZWhv
dworICAgICAgICAgICAgIyBoaWRkZW4uICBXZSB3YW50IHRoZSBmaXJzdC4KICAgICAgICAgICAg
IHNlbGYuYnJvd3Nlci5zZXRfdmFsdWUoY29tbWVudF90ZXh0LCBuYW1lPSdjb21tZW50JywgbnI9
MCkKICAgICAgICAgc2VsZi5icm93c2VyLnN1Ym1pdCgpCiAKICAgICBkZWYgYWRkX2NjX3RvX2J1
ZyhzZWxmLCBidWdfaWQsIGVtYWlsX2FkZHJlc3NfbGlzdCk6CiAgICAgICAgIHNlbGYuYXV0aGVu
dGljYXRlKCkKIAotICAgICAgICBsb2coIkFkZGluZyAlcyB0byB0aGUgQ0MgbGlzdCBmb3IgYnVn
ICVzIiAlIChlbWFpbF9hZGRyZXNzX2xpc3QsIGJ1Z19pZCkpCisgICAgICAgIGxvZygiQWRkaW5n
ICVzIHRvIHRoZSBDQyBsaXN0IGZvciBidWcgJXMiICUgKGVtYWlsX2FkZHJlc3NfbGlzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVnX2lk
KSkKICAgICAgICAgaWYgc2VsZi5kcnlydW46CiAgICAgICAgICAgICByZXR1cm4KIApAQCAtNjE2
LDE5ICs3NTcsMjQgQEAgY2xhc3MgQnVnemlsbGEob2JqZWN0KToKICAgICAgICAgc2VsZi5hdXRo
ZW50aWNhdGUoKQogCiAgICAgICAgIGxvZygiUmUtb3BlbmluZyBidWcgJXMiICUgYnVnX2lkKQot
ICAgICAgICBsb2coY29tbWVudF90ZXh0KSAjIEJ1Z3ppbGxhIHJlcXVpcmVzIGEgY29tbWVudCB3
aGVuIHJlLW9wZW5pbmcgYSBidWcsIHNvIHdlIGtub3cgaXQgd2lsbCBuZXZlciBiZSBOb25lLgor
ICAgICAgICAjIEJ1Z3ppbGxhIHJlcXVpcmVzIGEgY29tbWVudCB3aGVuIHJlLW9wZW5pbmcgYSBi
dWcsIHNvIHdlIGtub3cgaXQgd2lsbAorICAgICAgICAjIG5ldmVyIGJlIE5vbmUuCisgICAgICAg
IGxvZyhjb21tZW50X3RleHQpCiAgICAgICAgIGlmIHNlbGYuZHJ5cnVuOgogICAgICAgICAgICAg
cmV0dXJuCiAKICAgICAgICAgc2VsZi5icm93c2VyLm9wZW4oc2VsZi5idWdfdXJsX2Zvcl9idWdf
aWQoYnVnX2lkKSkKICAgICAgICAgc2VsZi5icm93c2VyLnNlbGVjdF9mb3JtKG5hbWU9ImNoYW5n
ZWZvcm0iKQogICAgICAgICBidWdfc3RhdHVzID0gc2VsZi5icm93c2VyLmZpbmRfY29udHJvbCgi
YnVnX3N0YXR1cyIsIHR5cGU9InNlbGVjdCIpCi0gICAgICAgICMgVGhpcyBpcyBhIGhhY2sgYXJv
dW5kIHRoZSBmYWN0IHRoYXQgQ2xpZW50Rm9ybS5MaXN0Q29udHJvbCBzZWVtcyB0byBoYXZlIG5v
IHNpbXBsZXIgd2F5IHRvIGFzawotICAgICAgICAjIGlmIGEgY29udHJvbCBoYXMgYW4gaXRlbSBu
YW1lZCAiUkVPUEVORUQiIHdpdGhvdXQgdXNpbmcgZXhjZXB0aW9ucyBmb3IgY29udHJvbCBmbG93
LgorICAgICAgICAjIFRoaXMgaXMgYSBoYWNrIGFyb3VuZCB0aGUgZmFjdCB0aGF0IENsaWVudEZv
cm0uTGlzdENvbnRyb2wgc2VlbXMgdG8KKyAgICAgICAgIyBoYXZlIG5vIHNpbXBsZXIgd2F5IHRv
IGFzayBpZiBhIGNvbnRyb2wgaGFzIGFuIGl0ZW0gbmFtZWQgIlJFT1BFTkVEIgorICAgICAgICAj
IHdpdGhvdXQgdXNpbmcgZXhjZXB0aW9ucyBmb3IgY29udHJvbCBmbG93LgogICAgICAgICBwb3Nz
aWJsZV9idWdfc3RhdHVzZXMgPSBtYXAobGFtYmRhIGl0ZW06IGl0ZW0ubmFtZSwgYnVnX3N0YXR1
cy5pdGVtcykKICAgICAgICAgaWYgIlJFT1BFTkVEIiBpbiBwb3NzaWJsZV9idWdfc3RhdHVzZXM6
CiAgICAgICAgICAgICBidWdfc3RhdHVzLnZhbHVlID0gWyJSRU9QRU5FRCJdCiAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBsb2coIkRpZCBub3QgcmVvcGVuIGJ1ZyAlcy4gIEl0IGFwcGVhcnMg
dG8gYWxyZWFkeSBiZSBvcGVuIHdpdGggc3RhdHVzICVzLiIgJSAoYnVnX2lkLCBidWdfc3RhdHVz
LnZhbHVlKSkKKyAgICAgICAgICAgIGxvZygiRGlkIG5vdCByZW9wZW4gYnVnICVzLiAgIiArCisg
ICAgICAgICAgICAgICAgIkl0IGFwcGVhcnMgdG8gYWxyZWFkeSBiZSBvcGVuIHdpdGggc3RhdHVz
ICVzLiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBidWdfaWQsIGJ1Z19zdGF0dXMudmFs
dWUpKQogICAgICAgICBzZWxmLmJyb3dzZXJbJ2NvbW1lbnQnXSA9IGNvbW1lbnRfdGV4dAogICAg
ICAgICBzZWxmLmJyb3dzZXIuc3VibWl0KCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvd2Via2l0cG9ydC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
d2Via2l0cG9ydC5weQppbmRleCBmY2RlNDYwLi5jZDYwYTU0IDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmtpdHBvcnQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93ZWJraXRwb3J0LnB5CkBAIC0xLDkgKzEsOSBAQAogIyBDb3B5cmlnaHQg
KEMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIAorIwogIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQogIyBtZXQ6Ci0jIAorIwogIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCiAjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKQEAgLTEzLDcgKzEzLDcgQEAKICMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIyAK
KyMKICMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwogIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTM1LDYgKzM1
LDcgQEAgZnJvbSB3ZWJraXRweS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQogCiAKIGNsYXNz
IFdlYktpdFBvcnQob2JqZWN0KToKKwogICAgICMgV2UgbWlnaHQgbmVlZCB0byBwYXNzIHNjbSBp
bnRvIHRoaXMgZnVuY3Rpb24gZm9yIHNjbS5jaGVja291dF9yb290CiAgICAgQGNsYXNzbWV0aG9k
CiAgICAgZGVmIHNjcmlwdF9wYXRoKGNscywgc2NyaXB0X25hbWUpOgpAQCAtNTMsMTEgKzU0LDEx
IEBAIGNsYXNzIFdlYktpdFBvcnQob2JqZWN0KToKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRl
ZiBuYW1lKGNscyk6Ci0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFz
c2VzIG11c3QgaW1wbGVtZW50IgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJz
dWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBm
bGFnKGNscyk6Ci0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2Vz
IG11c3QgaW1wbGVtZW50IgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJj
bGFzc2VzIG11c3QgaW1wbGVtZW50IikKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB1cGRh
dGVfd2Via2l0X2NvbW1hbmQoY2xzKToKQEAgLTkwLDYgKzkxLDcgQEAgY2xhc3MgV2ViS2l0UG9y
dChvYmplY3QpOgogCiAKIGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CisKICAgICBAY2xhc3Nt
ZXRob2QKICAgICBkZWYgbmFtZShjbHMpOgogICAgICAgICByZXR1cm4gIk1hYyIKQEAgLTEwMCw2
ICsxMDIsNyBAQCBjbGFzcyBNYWNQb3J0KFdlYktpdFBvcnQpOgogCiAKIGNsYXNzIEd0a1BvcnQo
V2ViS2l0UG9ydCk6CisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgbmFtZShjbHMpOgogICAg
ICAgICByZXR1cm4gIkd0ayIKQEAgLTEyMyw2ICsxMjYsNyBAQCBjbGFzcyBHdGtQb3J0KFdlYktp
dFBvcnQpOgogCiAKIGNsYXNzIFF0UG9ydChXZWJLaXRQb3J0KToKKwogICAgIEBjbGFzc21ldGhv
ZAogICAgIGRlZiBuYW1lKGNscyk6CiAgICAgICAgIHJldHVybiAiUXQiCkBAIC0xNDAsNiArMTQ0
LDcgQEAgY2xhc3MgUXRQb3J0KFdlYktpdFBvcnQpOgogCiAKIGNsYXNzIENocm9taXVtUG9ydChX
ZWJLaXRQb3J0KToKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBuYW1lKGNscyk6CiAgICAg
ICAgIHJldHVybiAiQ2hyb21pdW0iCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>