<?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>64508</bug_id>
          
          <creation_ts>2011-07-13 19:41:41 -0700</creation_ts>
          <short_desc>Move webkitpy off of loose mocks</short_desc>
          <delta_ts>2022-02-27 23:44:07 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>dbates</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>436894</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-13 19:41:41 -0700</bug_when>
    <thetext>Move webkitpy off of loose mocks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436896</commentid>
    <comment_count>1</comment_count>
      <attachid>100757</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-13 19:43:17 -0700</bug_when>
    <thetext>Created attachment 100757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436897</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-13 19:43:37 -0700</bug_when>
    <thetext>Still needs a little lovin to pass all the unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436901</commentid>
    <comment_count>3</comment_count>
      <attachid>100757</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-13 19:49:05 -0700</bug_when>
    <thetext>Comment on attachment 100757
Patch

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

&gt; Tools/Scripts/webkitpy/tool/steps/cleanworkingdirectory_unittest.py:39
&gt; +        tool._scm = Mock()

wait!  this is a loose mock!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436915</commentid>
    <comment_count>4</comment_count>
      <attachid>100763</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-13 21:04:36 -0700</bug_when>
    <thetext>Created attachment 100763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436924</commentid>
    <comment_count>5</comment_count>
      <attachid>100763</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-13 21:42:51 -0700</bug_when>
    <thetext>Comment on attachment 100763
Patch

Very nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436926</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-13 22:05:19 -0700</bug_when>
    <thetext>Committed r90978: &lt;http://trac.webkit.org/changeset/90978&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437445</commentid>
    <comment_count>7</comment_count>
      <attachid>100763</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-14 18:07:13 -0700</bug_when>
    <thetext>Comment on attachment 100763
Patch

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

&gt; Tools/Scripts/webkitpy/common/checkout/scm/git.py:111
&gt;      @classmethod
&gt;      def to_object_name(cls, filepath):
&gt; -        root_end_with_slash = os.path.join(cls.find_checkout_root(os.path.dirname(filepath)), &apos;&apos;)
&gt; +        root_end_with_slash = self._filesystem.join(cls.find_checkout_root(self._filesystem.dirname(filepath)), &apos;&apos;)

File &quot;/Volumes/d2/WebKit/Tools/Scripts/webkitpy/common/checkout/scm/git.py&quot;, line 111, in to_object_name
    root_end_with_slash = self._filesystem.join(cls.find_checkout_root(self._filesystem.dirname(filepath)), &apos;&apos;)
NameError: global name &apos;self&apos; is not defined

rebaseline-chromium-webkit-tests doesn&apos;t work because of this error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437479</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-14 19:07:52 -0700</bug_when>
    <thetext>Sorry.  I wish rebaseline-chromium-tests has more unittesting... this is the second typo from that change which broke rebaseline-chromium-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437487</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-14 19:33:55 -0700</bug_when>
    <thetext>Committed r91045: &lt;http://trac.webkit.org/changeset/91045&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100757</attachid>
            <date>2011-07-13 19:43:17 -0700</date>
            <delta_ts>2011-07-13 21:04:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64508-20110713194316.patch</filename>
            <type>text/plain</type>
            <size>30364</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA5NjcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZTUzNWIyNjEwODdkYzA1ZWUyNzgxNjY3OGEwMDAyY2Fj
MWM1NzE3Li5jODYyMjRhYjliMzMwOGEyNmM4MzU1M2M4NTY3MjFjOTMyZWUwMGIwIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjkg
QEAKIDIwMTEtMDctMTMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAg
IE1vdmUgd2Via2l0cHkgb2ZmIG9mIGxvb3NlIG1vY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzaW5nIE1vY2sgaGFzIGNhdXNlZCB1cyBtb3JlIHBh
aW4gdGhhbiBoZWxwLgorICAgICAgICBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGEgY2xl
YW5lciB3YXkgdG8gdXNlIGl0CisgICAgICAgIChtYXliZSBNb2NrKGNsYXNzKSBpbnN0ZWFkIG9m
IGluaGVyaXRpbmcgZnJvbSBpdD8pLgorICAgICAgICBCdXQgZm9yIG5vdywgSSd2ZSByZW1vdmVk
IGFsbCB1c2VzIG9mIE1vY2sgZnJvbSBtb2NrdG9vbC5weS4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX3VuaXR0ZXN0LnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5X3VuaXR0
ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9lbnN1cmVsb2Nh
bGNvbW1pdGlmbmVlZGVkLnB5OgorCisyMDExLTA3LTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Vi
a2l0Lm9yZz4KKwogICAgICAgICBSRUdSRVNTSU9OOiBHaXRUZXN0V2l0aE1vY2sudGVzdF9jcmVh
dGVfcGF0Y2ggZmFpbHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYyOTQ1CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2NoZWNrb3V0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvY2hlY2tvdXQucHkKaW5kZXggY2I4ODUxMzA3OTEzNmIyNjhlMjNjZjk1MGZkZWIwNDI1
ZGE2NmQ4Ny4uNWQ1YTZjNzhiNzFhZjk0YTdmMzc3MjY2YTllNDBiZGYxYzM0YTFmYSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHkK
QEAgLTI2LDcgKzI2LDYgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9y
dCBvcwogaW1wb3J0IFN0cmluZ0lPCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZyBpbXBv
cnQgdXJscwpAQCAtMzUsNyArMzQsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5j
b21taXRpbmZvIGltcG9ydCBDb21taXRJbmZvCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5zY20gaW1wb3J0IENvbW1pdE1lc3NhZ2UKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0
LmRlcHMgaW1wb3J0IERFUFMKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBt
ZW1vaXplZAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgcnVu
X2NvbW1hbmQsIFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJl
Y2F0ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCiAKIApAQCAtNDMsMTEgKzQyLDE0IEBAIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxvZwogIyBGSVhN
RTogTW92ZSBhIGJ1bmNoIG9mIENoYW5nZUxvZy1zcGVjaWZpYyBwcm9jZXNzaW5nIGZyb20gU0NN
IHRvIHRoaXMgb2JqZWN0LgogIyBOT1RFOiBBbGwgcGF0aHMgcmV0dXJuZWQgZnJvbSB0aGlzIGNs
YXNzIHNob3VsZCBiZSBhYnNvbHV0ZS4KIGNsYXNzIENoZWNrb3V0KG9iamVjdCk6Ci0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIHNjbSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNjbSwgZXhlY3V0
aXZlPU5vbmUsIGZpbGVzeXN0ZW09Tm9uZSk6CiAgICAgICAgIHNlbGYuX3NjbSA9IHNjbQorICAg
ICAgICAjIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgZ3JhYmJpbmcgYXQgcHJpdmF0ZSBtZW1iZXJz
IG9uIHNjbS4KKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlIG9yIHNlbGYuX3Nj
bS5fZXhlY3V0aXZlCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtIG9yIHNl
bGYuX3NjbS5fZmlsZXN5c3RlbQogCiAgICAgZGVmIGlzX3BhdGhfdG9fY2hhbmdlbG9nKHNlbGYs
IHBhdGgpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShwYXRoKSA9PSAiQ2hhbmdl
TG9nIgorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5iYXNlbmFtZShwYXRoKSA9PSAi
Q2hhbmdlTG9nIgogCiAgICAgZGVmIF9sYXRlc3RfZW50cnlfZm9yX2NoYW5nZWxvZ19hdF9yZXZp
c2lvbihzZWxmLCBjaGFuZ2Vsb2dfcGF0aCwgcmV2aXNpb24pOgogICAgICAgICBjaGFuZ2Vsb2df
Y29udGVudHMgPSBzZWxmLl9zY20uY29udGVudHNfYXRfcmV2aXNpb24oY2hhbmdlbG9nX3BhdGgs
IHJldmlzaW9uKQpAQCAtMTA1LDggKzEwNyw3IEBAIGNsYXNzIENoZWNrb3V0KG9iamVjdCk6CiAg
ICAgICAgICMgZXhwZWN0IGFic29sdXRlIHBhdGhzLCBzbyB0aGlzIG1ldGhvZCByZXR1cm5zIGFi
c29sdXRlIHBhdGhzLgogICAgICAgICBpZiBub3QgY2hhbmdlZF9maWxlczoKICAgICAgICAgICAg
IGNoYW5nZWRfZmlsZXMgPSBzZWxmLl9zY20uY2hhbmdlZF9maWxlcyhnaXRfY29tbWl0KQotICAg
ICAgICBhYnNvbHV0ZV9wYXRocyA9IFtvcy5wYXRoLmpvaW4oc2VsZi5fc2NtLmNoZWNrb3V0X3Jv
b3QsIHBhdGgpIGZvciBwYXRoIGluIGNoYW5nZWRfZmlsZXNdCi0gICAgICAgIHJldHVybiBbcGF0
aCBmb3IgcGF0aCBpbiBhYnNvbHV0ZV9wYXRocyBpZiBwcmVkaWNhdGUocGF0aCldCisgICAgICAg
IHJldHVybiBmaWx0ZXIocHJlZGljYXRlLCBtYXAoc2VsZi5fc2NtLmFic29sdXRlX3BhdGgsIGNo
YW5nZWRfZmlsZXMpKQogCiAgICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2Nv
bW1pdCwgY2hhbmdlZF9maWxlcz1Ob25lKToKICAgICAgICAgcmV0dXJuIHNlbGYuX21vZGlmaWVk
X2ZpbGVzX21hdGNoaW5nX3ByZWRpY2F0ZShnaXRfY29tbWl0LCBzZWxmLmlzX3BhdGhfdG9fY2hh
bmdlbG9nLCBjaGFuZ2VkX2ZpbGVzPWNoYW5nZWRfZmlsZXMpCkBAIC0xNDEsNyArMTQyLDcgQEAg
Y2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKICAgICAgICAgICAgIHBhc3MgIyBXZSBtaWdodCBub3Qg
aGF2ZSBDaGFuZ2VMb2dzLgogCiAgICAgZGVmIGNocm9taXVtX2RlcHMoc2VsZik6Ci0gICAgICAg
IHJldHVybiBERVBTKG9zLnBhdGguam9pbihzZWxmLl9zY20uY2hlY2tvdXRfcm9vdCwgIlNvdXJj
ZSIsICJXZWJLaXQiLCAiY2hyb21pdW0iLCAiREVQUyIpKQorICAgICAgICByZXR1cm4gREVQUyhz
ZWxmLl9zY20uYWJzb2x1dGVfcGF0aCgiU291cmNlIiwgIldlYktpdCIsICJjaHJvbWl1bSIsICJE
RVBTIikpCiAKICAgICBkZWYgYXBwbHlfcGF0Y2goc2VsZiwgcGF0Y2gsIGZvcmNlPUZhbHNlKToK
ICAgICAgICAgIyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHBhdGNoIHdhcyBub3QgbWFkZSBmcm9t
IHRoZSByb290IGRpcmVjdG9yeS4KQEAgLTE1Miw3ICsxNTMsNyBAQCBjbGFzcyBDaGVja291dChv
YmplY3QpOgogICAgICAgICAgICAgYXJncyArPSBbJy0tcmV2aWV3ZXInLCBwYXRjaC5yZXZpZXdl
cigpLmZ1bGxfbmFtZV0KICAgICAgICAgaWYgZm9yY2U6CiAgICAgICAgICAgICBhcmdzLmFwcGVu
ZCgnLS1mb3JjZScpCi0gICAgICAgIHNlbGYuX3NjbS5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFy
Z3MsIGlucHV0PXBhdGNoLmNvbnRlbnRzKCkpCisgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5ydW5f
Y29tbWFuZChhcmdzLCBpbnB1dD1wYXRjaC5jb250ZW50cygpKQogCiAgICAgZGVmIGFwcGx5X3Jl
dmVyc2VfZGlmZihzZWxmLCByZXZpc2lvbik6CiAgICAgICAgIHNlbGYuX3NjbS5hcHBseV9yZXZl
cnNlX2RpZmYocmV2aXNpb24pCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9jaGVja291dF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CmluZGV4IGU2N2ZjMTYxYjFi
ZTViNGIwM2MyYWE0YTBlNWY0ZWMzOGM4MWZhZjcuLmUyNDcyNzM0Mjk3NTMyYWRlZGY0ZWQ0ZmJl
YjJlYjdkOTI4NDkzNDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CkBAIC0zOCw3ICszOCw4IEBA
IGZyb20gLmNoZWNrb3V0IGltcG9ydCBDaGVja291dAogZnJvbSAuY2hhbmdlbG9nIGltcG9ydCBD
aGFuZ2VMb2dFbnRyeQogZnJvbSAuc2NtIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbSwgQ29tbWl0
TWVzc2FnZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhl
Y3V0aXZlLCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0
IE1vY2sKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0
IE1vY2tGaWxlU3lzdGVtCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tT
Q00sIE1vY2tFeGVjdXRpdmUKIAogCiAjIEZJWE1FOiBDb3BpZWQgZnJvbSBzY21fdW5pdHRlc3Qu
cHkKQEAgLTEyOSw3ICsxMzAsNyBAQCBTZWNvbmQgcGFydCBvZiB0aGlzIGNvbXBsaWNhdGVkIGNo
YW5nZSBieSBtZSwgVG9yIEFybmUgVmVzdGJcdTAwZjghCiAKICAgICAgICAgcmVhbF9zY20gPSBk
ZXRlY3Rfc2NtX3N5c3RlbShzZWxmLm9sZF9jd2QpCiAKLSAgICAgICAgbW9ja19zY20gPSBNb2Nr
KCkKKyAgICAgICAgbW9ja19zY20gPSBNb2NrU0NNKCkKICAgICAgICAgbW9ja19zY20ucnVuID0g
bW9ja19ydW4KICAgICAgICAgbW9ja19zY20uc2NyaXB0X3BhdGggPSByZWFsX3NjbS5zY3JpcHRf
cGF0aAogCkBAIC0xNDAsOCArMTQxLDEwIEBAIFNlY29uZCBwYXJ0IG9mIHRoaXMgY29tcGxpY2F0
ZWQgY2hhbmdlIGJ5IG1lLCBUb3IgQXJuZSBWZXN0Ylx1MDBmOCEKIAogCiBjbGFzcyBDaGVja291
dFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfbWFrZV9jaGVja291dChzZWxmKToK
KyAgICAgICAgcmV0dXJuIENoZWNrb3V0KHNjbT1Nb2NrU0NNKCksIGZpbGVzeXN0ZW09TW9ja0Zp
bGVTeXN0ZW0oKSwgZXhlY3V0aXZlPU1vY2tFeGVjdXRpdmUoKSkKKwogICAgIGRlZiB0ZXN0X2xh
dGVzdF9lbnRyeV9mb3JfY2hhbmdlbG9nX2F0X3JldmlzaW9uKHNlbGYpOgotICAgICAgICBzY20g
PSBNb2NrKCkKICAgICAgICAgZGVmIG1vY2tfY29udGVudHNfYXRfcmV2aXNpb24oY2hhbmdlbG9n
X3BhdGgsIHJldmlzaW9uKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlbG9n
X3BhdGgsICJmb28iKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXZpc2lvbiwgImJh
ciIpCkBAIC0xNTAsOCArMTUzLDggQEAgY2xhc3MgQ2hlY2tvdXRUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgICAgICMgVGhlIENoYW5nZUxvZyB1dGYtOCBkZWNvZGluZyBzaG91bGQg
aWdub3JlIGludmFsaWQgY29kZXBvaW50cy4KICAgICAgICAgICAgIGludmFsaWRfdXRmOCA9ICJc
MjU1IgogICAgICAgICAgICAgcmV0dXJuIF9jaGFuZ2Vsb2cxLmVuY29kZSgidXRmLTgiKSArIGlu
dmFsaWRfdXRmOAotICAgICAgICBzY20uY29udGVudHNfYXRfcmV2aXNpb24gPSBtb2NrX2NvbnRl
bnRzX2F0X3JldmlzaW9uCi0gICAgICAgIGNoZWNrb3V0ID0gQ2hlY2tvdXQoc2NtKQorICAgICAg
ICBjaGVja291dCA9IHNlbGYuX21ha2VfY2hlY2tvdXQoKQorICAgICAgICBjaGVja291dC5fc2Nt
LmNvbnRlbnRzX2F0X3JldmlzaW9uID0gbW9ja19jb250ZW50c19hdF9yZXZpc2lvbgogICAgICAg
ICBlbnRyeSA9IGNoZWNrb3V0Ll9sYXRlc3RfZW50cnlfZm9yX2NoYW5nZWxvZ19hdF9yZXZpc2lv
bigiZm9vIiwgImJhciIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuY29udGVudHMo
KSwgX2NoYW5nZWxvZzFlbnRyeTEpCiAKQEAgLTE2MCw5ICsxNjMsOCBAQCBjbGFzcyBDaGVja291
dFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgZnJvbSByZXZpc2lvbnMsIHJlc3VsdGlu
ZyBpbiBhIFNjcmlwdEVycm9yIGV4Y2VwdGlvbi4gIFRlc3QgdGhhdCB3ZQogICAgICMgcmVjb3Zl
ciBmcm9tIHRob3NlIGFuZCBzdGlsbCByZXR1cm4gdGhlIG90aGVyIENoYW5nZUxvZyBlbnRyaWVz
LgogICAgIGRlZiB0ZXN0X2NoYW5nZWxvZ19lbnRyaWVzX2Zvcl9yZXZpc2lvbihzZWxmKToKLSAg
ICAgICAgc2NtID0gTW9jaygpCi0gICAgICAgIHNjbS5jaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lv
biA9IGxhbWJkYSByZXZpc2lvbjogWydmb28vQ2hhbmdlTG9nJywgJ2Jhci9DaGFuZ2VMb2cnXQot
ICAgICAgICBjaGVja291dCA9IENoZWNrb3V0KHNjbSkKKyAgICAgICAgY2hlY2tvdXQgPSBzZWxm
Ll9tYWtlX2NoZWNrb3V0KCkKKyAgICAgICAgY2hlY2tvdXQuX3NjbS5jaGFuZ2VkX2ZpbGVzX2Zv
cl9yZXZpc2lvbiA9IGxhbWJkYSByZXZpc2lvbjogWydmb28vQ2hhbmdlTG9nJywgJ2Jhci9DaGFu
Z2VMb2cnXQogCiAgICAgICAgIGRlZiBtb2NrX2xhdGVzdF9lbnRyeV9mb3JfY2hhbmdlbG9nX2F0
X3JldmlzaW9uKHBhdGgsIHJldmlzaW9uKToKICAgICAgICAgICAgIGlmIHBhdGggPT0gImZvby9D
aGFuZ2VMb2ciOgpAQCAtMTc3LDkgKzE3OSw4IEBAIGNsYXNzIENoZWNrb3V0VGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cmllc1swXSwgJ2Zvbycp
CiAKICAgICBkZWYgdGVzdF9jb21taXRfaW5mb19mb3JfcmV2aXNpb24oc2VsZik6Ci0gICAgICAg
IHNjbSA9IE1vY2soKQotICAgICAgICBzY20uY29tbWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbiA9
IGxhbWJkYSByZXZpc2lvbjogImNvbW1pdHRlckBleGFtcGxlLmNvbSIKLSAgICAgICAgY2hlY2tv
dXQgPSBDaGVja291dChzY20pCisgICAgICAgIGNoZWNrb3V0ID0gc2VsZi5fbWFrZV9jaGVja291
dCgpCisgICAgICAgIGNoZWNrb3V0Ll9zY20uY29tbWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbiA9
IGxhbWJkYSByZXZpc2lvbjogImNvbW1pdHRlckBleGFtcGxlLmNvbSIKICAgICAgICAgY2hlY2tv
dXQuY2hhbmdlbG9nX2VudHJpZXNfZm9yX3JldmlzaW9uID0gbGFtYmRhIHJldmlzaW9uOiBbQ2hh
bmdlTG9nRW50cnkoX2NoYW5nZWxvZzFlbnRyeTEpXQogICAgICAgICBjb21taXRpbmZvID0gY2hl
Y2tvdXQuY29tbWl0X2luZm9fZm9yX3JldmlzaW9uKDQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY29tbWl0aW5mby5idWdfaWQoKSwgMzY2MjkpCkBAIC0xOTQsMjMgKzE5NSwyMCBAQCBjbGFz
cyBDaGVja291dFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNoZWNrb3V0LmNvbW1pdF9pbmZvX2Zvcl9yZXZpc2lvbigxKSwgTm9uZSkKIAogICAgIGRl
ZiB0ZXN0X2J1Z19pZF9mb3JfcmV2aXNpb24oc2VsZik6Ci0gICAgICAgIHNjbSA9IE1vY2soKQot
ICAgICAgICBzY20uY29tbWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbiA9IGxhbWJkYSByZXZpc2lv
bjogImNvbW1pdHRlckBleGFtcGxlLmNvbSIKLSAgICAgICAgY2hlY2tvdXQgPSBDaGVja291dChz
Y20pCisgICAgICAgIGNoZWNrb3V0ID0gc2VsZi5fbWFrZV9jaGVja291dCgpCisgICAgICAgIGNo
ZWNrb3V0Ll9zY20uY29tbWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbiA9IGxhbWJkYSByZXZpc2lv
bjogImNvbW1pdHRlckBleGFtcGxlLmNvbSIKICAgICAgICAgY2hlY2tvdXQuY2hhbmdlbG9nX2Vu
dHJpZXNfZm9yX3JldmlzaW9uID0gbGFtYmRhIHJldmlzaW9uOiBbQ2hhbmdlTG9nRW50cnkoX2No
YW5nZWxvZzFlbnRyeTEpXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrb3V0LmJ1Z19p
ZF9mb3JfcmV2aXNpb24oNCksIDM2NjI5KQogCiAgICAgZGVmIHRlc3RfYnVnX2lkX2Zvcl90aGlz
X2NvbW1pdChzZWxmKToKLSAgICAgICAgc2NtID0gTW9jaygpCi0gICAgICAgIGNoZWNrb3V0ID0g
Q2hlY2tvdXQoc2NtKQorICAgICAgICBjaGVja291dCA9IHNlbGYuX21ha2VfY2hlY2tvdXQoKQog
ICAgICAgICBjaGVja291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQgPSBsYW1iZGEg
Z2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1Ob25lOiBDb21taXRNZXNzYWdlKENoYW5nZUxvZ0Vu
dHJ5KF9jaGFuZ2Vsb2cxZW50cnkxKS5jb250ZW50cygpLnNwbGl0bGluZXMoKSkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjaGVja291dC5idWdfaWRfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21t
aXQ9Tm9uZSksIDM2NjI5KQogCiAgICAgZGVmIHRlc3RfbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxm
KToKLSAgICAgICAgc2NtID0gTW9jaygpCi0gICAgICAgIHNjbS5jaGVja291dF9yb290ID0gIi9m
b28vYmFyIgotICAgICAgICBzY20uY2hhbmdlZF9maWxlcyA9IGxhbWJkYSBnaXRfY29tbWl0OiBb
ImZpbGUxIiwgIkNoYW5nZUxvZyIsICJyZWxhdGl2ZS9wYXRoL0NoYW5nZUxvZyJdCi0gICAgICAg
IGNoZWNrb3V0ID0gQ2hlY2tvdXQoc2NtKQorICAgICAgICBjaGVja291dCA9IHNlbGYuX21ha2Vf
Y2hlY2tvdXQoKQorICAgICAgICBjaGVja291dC5fc2NtLmNoZWNrb3V0X3Jvb3QgPSAiL2Zvby9i
YXIiCisgICAgICAgIGNoZWNrb3V0Ll9zY20uY2hhbmdlZF9maWxlcyA9IGxhbWJkYSBnaXRfY29t
bWl0OiBbImZpbGUxIiwgIkNoYW5nZUxvZyIsICJyZWxhdGl2ZS9wYXRoL0NoYW5nZUxvZyJdCiAg
ICAgICAgIGV4cGVjdGVkX2NoYW5nbG9ncyA9IFsiL2Zvby9iYXIvQ2hhbmdlTG9nIiwgIi9mb28v
YmFyL3JlbGF0aXZlL3BhdGgvQ2hhbmdlTG9nIl0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
aGVja291dC5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQ9Tm9uZSksIGV4cGVjdGVkX2No
YW5nbG9ncykKIApAQCAtMjI1LDExICsyMjMsMTAgQEAgY2xhc3MgQ2hlY2tvdXRUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICByZXR1cm4gWzNdCiAgICAgICAgICAgICBy
ZXR1cm4gWzQsIDhdCiAKLSAgICAgICAgc2NtID0gTW9jaygpCi0gICAgICAgIHNjbS5jaGVja291
dF9yb290ID0gIi9mb28vYmFyIgotICAgICAgICBzY20uY2hhbmdlZF9maWxlcyA9IGxhbWJkYSBn
aXRfY29tbWl0OiBbImZpbGUxIiwgImZpbGUyIiwgInJlbGF0aXZlL3BhdGgvQ2hhbmdlTG9nIl0K
LSAgICAgICAgc2NtLnJldmlzaW9uc19jaGFuZ2luZ19maWxlID0gbW9ja19yZXZpc2lvbnNfY2hh
bmdpbmdfZmlsZQotICAgICAgICBjaGVja291dCA9IENoZWNrb3V0KHNjbSkKKyAgICAgICAgY2hl
Y2tvdXQgPSBzZWxmLl9tYWtlX2NoZWNrb3V0KCkKKyAgICAgICAgY2hlY2tvdXQuX3NjbS5jaGVj
a291dF9yb290ID0gIi9mb28vYmFyIgorICAgICAgICBjaGVja291dC5fc2NtLmNoYW5nZWRfZmls
ZXMgPSBsYW1iZGEgZ2l0X2NvbW1pdDogWyJmaWxlMSIsICJmaWxlMiIsICJyZWxhdGl2ZS9wYXRo
L0NoYW5nZUxvZyJdCisgICAgICAgIGNoZWNrb3V0Ll9zY20ucmV2aXNpb25zX2NoYW5naW5nX2Zp
bGUgPSBtb2NrX3JldmlzaW9uc19jaGFuZ2luZ19maWxlCiAgICAgICAgIGNoZWNrb3V0LmNoYW5n
ZWxvZ19lbnRyaWVzX2Zvcl9yZXZpc2lvbiA9IG1vY2tfY2hhbmdlbG9nX2VudHJpZXNfZm9yX3Jl
dmlzaW9uCiAgICAgICAgIHJldmlld2VycyA9IGNoZWNrb3V0LnN1Z2dlc3RlZF9yZXZpZXdlcnMo
Z2l0X2NvbW1pdD1Ob25lKQogICAgICAgICByZXZpZXdlcl9uYW1lcyA9IFtyZXZpZXdlci5mdWxs
X25hbWUgZm9yIHJldmlld2VyIGluIHJldmlld2Vyc10KZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vZ2l0LnB5CmluZGV4IDU2YTMyMWEzNzVmMTBmOTM0
MDVhNDM5ZjUxZDdlNmZhMmJkZDlkMzAuLmZlOTY4MWJlODgxMGM3YjNhNGM1NDQwYzM3MTAyZDYy
MDA4NDFmZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L3NjbS9naXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtL2dpdC5weQpAQCAtMzIsMTMgKzMyLDIwIEBAIGltcG9ydCByZQogCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxvZwotZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0
RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1
dGl2ZSwgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3Nw
YXRoCiAKIGZyb20gLmNvbW1pdG1lc3NhZ2UgaW1wb3J0IENvbW1pdE1lc3NhZ2UKIGZyb20gLnNj
bSBpbXBvcnQgQXV0aGVudGljYXRpb25FcnJvciwgU0NNLCBjb21taXRfZXJyb3JfaGFuZGxlcgog
ZnJvbSAuc3ZuIGltcG9ydCBTVk4sIFNWTlJlcG9zaXRvcnkKIAogCitkZWYgcnVuX2NvbW1hbmQo
KmFyZ3MsICoqa3dhcmdzKToKKyAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgYSBnbG9i
YWwgc3RhdGljLgorICAgICMgTmV3IGNvZGUgc2hvdWxkIHVzZSBFeGVjdXRpdmUucnVuX2NvbW1h
bmQgZGlyZWN0bHkgaW5zdGVhZAorICAgIHJldHVybiBFeGVjdXRpdmUoKS5ydW5fY29tbWFuZCgq
YXJncywgKiprd2FyZ3MpCisKKwogY2xhc3MgQW1iaWd1b3VzQ29tbWl0RXJyb3IoRXhjZXB0aW9u
KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbnVtX2xvY2FsX2NvbW1pdHMsIHdvcmtpbmdfZGly
ZWN0b3J5X2lzX2NsZWFuKToKICAgICAgICAgc2VsZi5udW1fbG9jYWxfY29tbWl0cyA9IG51bV9s
b2NhbF9jb21taXRzCkBAIC05NSwxNCArMTAyLDEzIEBAIGNsYXNzIEdpdChTQ00sIFNWTlJlcG9z
aXRvcnkpOgogICAgIGRlZiBmaW5kX2NoZWNrb3V0X3Jvb3QoY2xzLCBwYXRoKToKICAgICAgICAg
IyAiZ2l0IHJldi1wYXJzZSAtLXNob3ctY2R1cCIgd291bGQgYmUgYW5vdGhlciB3YXkgdG8gZ2V0
IHRvIHRoZSByb290CiAgICAgICAgIChjaGVja291dF9yb290LCBkb3RfZ2l0KSA9IG9zLnBhdGgu
c3BsaXQocnVuX2NvbW1hbmQoWydnaXQnLCAncmV2LXBhcnNlJywgJy0tZ2l0LWRpciddLCBjd2Q9
KHBhdGggb3IgIi4vIikpKQotICAgICAgICAjIElmIHdlIHdlcmUgdXNpbmcgMi42ICMgY2hlY2tv
dXRfcm9vdCA9IG9zLnBhdGgucmVscGF0aChjaGVja291dF9yb290LCBwYXRoKQogICAgICAgICBp
ZiBub3Qgb3MucGF0aC5pc2FicyhjaGVja291dF9yb290KTogICMgU29tZXRpbWVzIGdpdCByZXR1
cm5zIHJlbGF0aXZlIHBhdGhzCiAgICAgICAgICAgICBjaGVja291dF9yb290ID0gb3MucGF0aC5q
b2luKHBhdGgsIGNoZWNrb3V0X3Jvb3QpCiAgICAgICAgIHJldHVybiBjaGVja291dF9yb290CiAK
ICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdG9fb2JqZWN0X25hbWUoY2xzLCBmaWxlcGF0aCk6
Ci0gICAgICAgIHJvb3RfZW5kX3dpdGhfc2xhc2ggPSBvcy5wYXRoLmpvaW4oY2xzLmZpbmRfY2hl
Y2tvdXRfcm9vdChvcy5wYXRoLmRpcm5hbWUoZmlsZXBhdGgpKSwgJycpCisgICAgICAgIHJvb3Rf
ZW5kX3dpdGhfc2xhc2ggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oY2xzLmZpbmRfY2hlY2tvdXRf
cm9vdChzZWxmLl9maWxlc3lzdGVtLmRpcm5hbWUoZmlsZXBhdGgpKSwgJycpCiAgICAgICAgIHJl
dHVybiBmaWxlcGF0aC5yZXBsYWNlKHJvb3RfZW5kX3dpdGhfc2xhc2gsICcnKQogCiAgICAgQGNs
YXNzbWV0aG9kCkBAIC0xMjUsNyArMTMxLDcgQEAgY2xhc3MgR2l0KFNDTSwgU1ZOUmVwb3NpdG9y
eSk6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bihbJ2dpdCcsICdsb2cnLCAnLS1wcmV0dHk9b25l
bGluZScsICdIRUFELi4uJyArIHNlbGYucmVtb3RlX2JyYW5jaF9yZWYoKV0sIGN3ZD1zZWxmLmNo
ZWNrb3V0X3Jvb3QpLnNwbGl0bGluZXMoKQogCiAgICAgZGVmIHJlYmFzZV9pbl9wcm9ncmVzcyhz
ZWxmKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmNo
ZWNrb3V0X3Jvb3QsICcuZ2l0L3JlYmFzZS1hcHBseScpKQorICAgICAgICByZXR1cm4gc2VsZi5f
ZmlsZXN5c3RlbS5leGlzdHMoc2VsZi5hYnNvbHV0ZV9wYXRoKCcuZ2l0JywgJ3JlYmFzZS1hcHBs
eScpKQogCiAgICAgZGVmIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKHNlbGYpOgogICAgICAg
ICByZXR1cm4gc2VsZi5ydW4oWydnaXQnLCAnZGlmZicsICdIRUFEJywgJy0tbmFtZS1vbmx5J10s
IGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QpID09ICIiCkBAIC0zMzQsNiArMzQwLDcgQEAgY2xhc3Mg
R2l0KFNDTSwgU1ZOUmVwb3NpdG9yeSk6CiAgICAgICAgICMgV2UgbWlnaHQgYmUgaW4gYSBkaXJl
Y3RvcnkgdGhhdCdzIHByZXNlbnQgaW4gdGhpcyBicmFuY2ggYnV0IG5vdCBpbiB0aGUKICAgICAg
ICAgIyB0cnVuay4gIE1vdmUgdXAgdG8gdGhlIHRvcCBvZiB0aGUgdHJlZSBzbyB0aGF0IGdpdCBj
b21tYW5kcyB0aGF0IGV4cGVjdCBhCiAgICAgICAgICMgdmFsaWQgQ1dEIHdvbid0IGZhaWwgYWZ0
ZXIgd2UgY2hlY2sgb3V0IHRoZSBtZXJnZSBicmFuY2guCisgICAgICAgICMgRklYTUU6IFdlIHNo
b3VsZCBuZXZlciBiZSB1c2luZyBjaGRpciEgV2UgY2FuIGluc3RlYWQgcGFzcyBjd2Q9IHRvIHJ1
bl9jb21tYW5kL3NlbGYucnVuIQogICAgICAgICBvcy5jaGRpcihzZWxmLmNoZWNrb3V0X3Jvb3Qp
CiAKICAgICAgICAgIyBTdHVmZiBvdXIgY2hhbmdlIGludG8gdGhlIG1lcmdlIGJyYW5jaC4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20u
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtLnB5Cmlu
ZGV4IGM0ZDlhZGI0ZDBmZTFiYzIxZTQ3MjdhYzIwZWIyYWVhZThkZWJiNmIuLmQ4MWUyNjg3NzQz
NDJjMGY2NjIxOWQxNTE3ZjZhMmMxNmY0OGJlN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQpAQCAtMzAsMTQgKzMwLDExIEBACiAj
IFB5dGhvbiBtb2R1bGUgZm9yIGludGVyYWN0aW5nIHdpdGggYW4gU0NNIHN5c3RlbSAobGlrZSBT
Vk4gb3IgR2l0KQogCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCiBpbXBvcnQgcmUKLWltcG9y
dCBzeXMKLWltcG9ydCBzaHV0aWwKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJl
Y2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtIGltcG9ydCBvc3BhdGgKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCiAKIAogY2xhc3MgQ2hlY2tvdXROZWVkc1Vw
ZGF0ZShTY3JpcHRFcnJvcik6CkBAIC02MSwxMSArNTgsMTIgQEAgY2xhc3MgQXV0aGVudGljYXRp
b25FcnJvcihFeGNlcHRpb24pOgogCiAjIFNDTSBtZXRob2RzIGFyZSBleHBlY3RlZCB0byByZXR1
cm4gcGF0aHMgcmVsYXRpdmUgdG8gc2VsZi5jaGVja291dF9yb290LgogY2xhc3MgU0NNOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBjd2QsIGV4ZWN1dGl2ZT1Ob25lKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgY3dkLCBleGVjdXRpdmU9Tm9uZSwgZmlsZXN5c3RlbT1Ob25lKToKICAgICAgICAg
c2VsZi5jd2QgPSBjd2QKICAgICAgICAgc2VsZi5jaGVja291dF9yb290ID0gc2VsZi5maW5kX2No
ZWNrb3V0X3Jvb3Qoc2VsZi5jd2QpCiAgICAgICAgIHNlbGYuZHJ5cnVuID0gRmFsc2UKICAgICAg
ICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlIG9yIEV4ZWN1dGl2ZSgpCisgICAgICAgIHNl
bGYuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtIG9yIEZpbGVTeXN0ZW0oKQogCiAgICAgIyBBIHdy
YXBwZXIgdXNlZCBieSBzdWJjbGFzc2VzIHRvIGNyZWF0ZSBwcm9jZXNzZXMuCiAgICAgZGVmIHJ1
bihzZWxmLCBhcmdzLCBjd2Q9Tm9uZSwgaW5wdXQ9Tm9uZSwgZXJyb3JfaGFuZGxlcj1Ob25lLCBy
ZXR1cm5fZXhpdF9jb2RlPUZhbHNlLCByZXR1cm5fc3RkZXJyPVRydWUsIGRlY29kZV9vdXRwdXQ9
VHJ1ZSk6CkBAIC04MSwxNSArNzksMTUgQEAgY2xhc3MgU0NNOgogICAgICMgU0NNIGFsd2F5cyBy
ZXR1cm5zIHJlcG9zaXRvcnkgcmVsYXRpdmUgcGF0aCwgYnV0IHNvbWV0aW1lcyB3ZSBuZWVkCiAg
ICAgIyBhYnNvbHV0ZSBwYXRocyB0byBwYXNzIHRvIHJtLCBldGMuCiAgICAgZGVmIGFic29sdXRl
X3BhdGgoc2VsZiwgcmVwb3NpdG9yeV9yZWxhdGl2ZV9wYXRoKToKLSAgICAgICAgcmV0dXJuIG9z
LnBhdGguam9pbihzZWxmLmNoZWNrb3V0X3Jvb3QsIHJlcG9zaXRvcnlfcmVsYXRpdmVfcGF0aCkK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmNoZWNrb3V0X3Jvb3Qs
IHJlcG9zaXRvcnlfcmVsYXRpdmVfcGF0aCkKIAogICAgICMgRklYTUU6IFRoaXMgYmVsb25ncyBp
biBDaGVja291dCwgbm90IFNDTS4KICAgICBkZWYgc2NyaXB0c19kaXJlY3Rvcnkoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5jaGVja291dF9yb290LCAiVG9vbHMiLCAi
U2NyaXB0cyIpCisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5jaGVj
a291dF9yb290LCAiVG9vbHMiLCAiU2NyaXB0cyIpCiAKICAgICAjIEZJWE1FOiBUaGlzIGJlbG9u
Z3MgaW4gQ2hlY2tvdXQsIG5vdCBTQ00uCiAgICAgZGVmIHNjcmlwdF9wYXRoKHNlbGYsIHNjcmlw
dF9uYW1lKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLnNjcmlwdHNfZGlyZWN0
b3J5KCksIHNjcmlwdF9uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2lu
KHNlbGYuc2NyaXB0c19kaXJlY3RvcnkoKSwgc2NyaXB0X25hbWUpCiAKICAgICBkZWYgZW5zdXJl
X2NsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KHNlbGYsIGZvcmNlX2NsZWFuKToKICAgICAgICAgaWYg
c2VsZi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkKaW5k
ZXggMWI3MTU2NmMwNzFmZmNkMDNkZThlNDVjZmEwNTU4ZDdkYzNjODlmNy4uN2MyOGNiMjYyNWU4
NjFiMGE3NjE4ZTQzOWIxNWUxMTRhNTBmZGQxOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CkBAIC00
OSw3ICs0OSw3IEBAIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUKIGZyb20gd2Via2l0cHkuY29t
bW9uLmNoZWNrb3V0LmNoZWNrb3V0IGltcG9ydCBDaGVja291dAogZnJvbSB3ZWJraXRweS5jb21t
b24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlciAgIyBGSVhNRTogVGhpcyBzaG91
bGQgbm90IGJlIG5lZWRlZAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9y
dCBBdHRhY2htZW50ICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgcnVuX2NvbW1h
bmQsIFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGlt
cG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
b3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50b29sLm1v
Y2t0b29sIGltcG9ydCBNb2NrRXhlY3V0aXZlCiAKQEAgLTc5LDYgKzc5LDEzIEBAIGRlZiBkZWxl
dGVfY2FjaGVkX21vY2tfcmVwb19hdF9leGl0KCk6CiAjIEV2ZW50dWFsbHkgd2Ugd2lsbCB3YW50
IHRvIHdyaXRlIHRlc3RzIHdoaWNoIHdvcmsgZm9yIGJvdGggc2Ntcy4gKGxpa2UgdXBkYXRlX3dl
YmtpdCwgY2hhbmdlZF9maWxlcywgZXRjLikKICMgUGVyaGFwcyB0aHJvdWdoIHNvbWUgU0NNVGVz
dCBiYXNlLWNsYXNzIHdoaWNoIGJvdGggU1ZOVGVzdCBhbmQgR2l0VGVzdCBpbmhlcml0IGZyb20u
CiAKKworZGVmIHJ1bl9jb21tYW5kKCphcmdzLCAqKmt3YXJncyk6CisgICAgIyBGSVhNRTogVGhp
cyBzaG91bGQgbm90IGJlIGEgZ2xvYmFsIHN0YXRpYy4KKyAgICAjIE5ldyBjb2RlIHNob3VsZCB1
c2UgRXhlY3V0aXZlLnJ1bl9jb21tYW5kIGRpcmVjdGx5IGluc3RlYWQKKyAgICByZXR1cm4gRXhl
Y3V0aXZlKCkucnVuX2NvbW1hbmQoKmFyZ3MsICoqa3dhcmdzKQorCisKICMgRklYTUU6IFRoaXMg
c2hvdWxkIGJlIHVuaWZpZWQgaW50byBvbmUgb2YgdGhlIGV4ZWN1dGl2ZS5weSBjb21tYW5kcyEK
ICMgQ2FsbGVycyBjb3VsZCB1c2UgcnVuX2FuZF90aHJvd19pZl9mYWlsKGFyZ3MsIGN3ZD1jd2Qs
IHF1aWV0PVRydWUpCiBkZWYgcnVuX3NpbGVudChhcmdzLCBjd2Q9Tm9uZSk6CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weQppbmRleCA3Y2Rh
MjU2MDM4NmJkZjZmYmQ1ODBlOGFkMjE5MmYxZTFjYTgwNzVhLi5jYTkwNGMyZDg4MzBiZTgxZWUw
NjA3YjFhM2Y3NDM2ZjhmOTRhMjgwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHkKQEAgLTM1LDcgKzM1LDcgQEAgaW1wb3J0IHN5cwog
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxvZwotZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBydW5fY29t
bWFuZCwgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUg
aW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bSBpbXBvcnQgb3NwYXRoCiAKIGZyb20gLnNjbSBpbXBvcnQgQXV0aGVudGljYXRpb25FcnJvciwg
U0NNLCBjb21taXRfZXJyb3JfaGFuZGxlcgpAQCAtOTIsOCArOTIsOCBAQCBjbGFzcyBTVk4oU0NN
LCBTVk5SZXBvc2l0b3J5KToKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdmFsdWVfZnJvbV9z
dm5faW5mbyhjbHMsIHBhdGgsIGZpZWxkX25hbWUpOgogICAgICAgICBzdm5faW5mb19hcmdzID0g
Wydzdm4nLCAnaW5mbycsIHBhdGhdCi0gICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBh
biBFeGVjdXRpdmUuCi0gICAgICAgIGluZm9fb3V0cHV0ID0gcnVuX2NvbW1hbmQoc3ZuX2luZm9f
YXJncykucnN0cmlwKCkKKyAgICAgICAgIyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIHVzZSBh
IHBhc3NlZCBpbiBleGVjdXRpdmUgb3IgYmUgbWFkZSBhbiBpbnN0YW5jZSBtZXRob2QgYW5kIHVz
ZSBzZWxmLl9leGVjdXRpdmUuCisgICAgICAgIGluZm9fb3V0cHV0ID0gRXhlY3V0aXZlKCkucnVu
X2NvbW1hbmQoc3ZuX2luZm9fYXJncykucnN0cmlwKCkKICAgICAgICAgbWF0Y2ggPSByZS5zZWFy
Y2goIl4lczogKD9QPHZhbHVlPi4rKSQiICUgZmllbGRfbmFtZSwgaW5mb19vdXRwdXQsIHJlLk1V
TFRJTElORSkKICAgICAgICAgaWYgbm90IG1hdGNoOgogICAgICAgICAgICAgcmFpc2UgU2NyaXB0
RXJyb3Ioc2NyaXB0X2FyZ3M9c3ZuX2luZm9fYXJncywgbWVzc2FnZT0nc3ZuIGluZm8gZGlkIG5v
dCBjb250YWluIGEgJXMuJyAlIGZpZWxkX25hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weQppbmRleCA4NWFhOGEzMTgzZDcyNzFjYTMz
NDEyMjc0ZjkyNTBkYWU4MDQwM2U3Li41NzcwMjRmOTNlZTE5YzE3NDUxY2U4NDRhMzcyMTUzZDA0
NGMyMzM1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
ZXhlY3V0aXZlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9l
eGVjdXRpdmUucHkKQEAgLTk2LDEyICs5Niw2IEBAIGNsYXNzIFNjcmlwdEVycm9yKEV4Y2VwdGlv
bik6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmJhc2VuYW1lKGNvbW1hbmRfcGF0aCkKIAogCi1k
ZWYgcnVuX2NvbW1hbmQoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAjIEZJWE1FOiBUaGlzIHNob3Vs
ZCBub3QgYmUgYSBnbG9iYWwgc3RhdGljLgotICAgICMgTmV3IGNvZGUgc2hvdWxkIHVzZSBFeGVj
dXRpdmUucnVuX2NvbW1hbmQgZGlyZWN0bHkgaW5zdGVhZAotICAgIHJldHVybiBFeGVjdXRpdmUo
KS5ydW5fY29tbWFuZCgqYXJncywgKiprd2FyZ3MpCi0KLQogY2xhc3MgRXhlY3V0aXZlKG9iamVj
dCk6CiAgICAgUElQRSA9IHN1YnByb2Nlc3MuUElQRQogICAgIFNURE9VVCA9IHN1YnByb2Nlc3Mu
U1RET1VUCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
ZXhlY3V0aXZlX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5weQppbmRleCAyOGQxMmMyNDBiYzg2YWU0ZTQ5MTBiMWU5
YTA3MDE4YzFlNWE5OGYxLi5hMDg3OGY5Y2U4M2EyNjRjMWYwYjRmNTQ5ZThjZWQ3YzI4YTcxNmYw
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0
aXZlX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9leGVjdXRpdmVfdW5pdHRlc3QucHkKQEAgLTMzLDcgKzMzLDcgQEAgaW1wb3J0IHN1YnByb2Nl
c3MKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIHJ1bl9jb21tYW5kLCBTY3JpcHRFcnJv
cgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZl
LCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9j
ayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkudGVzdCBpbXBvcnQgY2F0LCBl
Y2hvCiAKQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgRXhlY3V0aXZlVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9ydW5fY29tbWFuZF93aXRoX2JhZF9jb21tYW5kKHNlbGYp
OgogICAgICAgICBkZWYgcnVuX2JhZF9jb21tYW5kKCk6Ci0gICAgICAgICAgICBydW5fY29tbWFu
ZChbImZvb19iYXJfY29tbWFuZF9ibGFoIl0sIGVycm9yX2hhbmRsZXI9RXhlY3V0aXZlLmlnbm9y
ZV9lcnJvciwgcmV0dXJuX2V4aXRfY29kZT1UcnVlKQorICAgICAgICAgICAgRXhlY3V0aXZlKCku
cnVuX2NvbW1hbmQoWyJmb29fYmFyX2NvbW1hbmRfYmxhaCJdLCBlcnJvcl9oYW5kbGVyPUV4ZWN1
dGl2ZS5pZ25vcmVfZXJyb3IsIHJldHVybl9leGl0X2NvZGU9VHJ1ZSkKICAgICAgICAgc2VsZi5m
YWlsVW5sZXNzUmFpc2VzKE9TRXJyb3IsIHJ1bl9iYWRfY29tbWFuZCkKIAogICAgIGRlZiB0ZXN0
X3J1bl9jb21tYW5kX2FyZ3NfdHlwZShzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9t
b2NrdG9vbC5weQppbmRleCBhODViNmY2ZGViNjc2YzFhN2VjNWQ3OGE0OWJkMTMyYjVjNjcwOGRh
Li44NGM4MWFmMDE0NTYwMGQ5YjcwZTJlMzhiOTJiNGRkYWIyOTc3ZDRlIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5CkBAIC0yNyw2ICsyNyw3IEBACiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIGltcG9ydCBvcworaW1wb3J0IFN0cmluZ0lPCiBpbXBvcnQgdGhyZWFkaW5nCiAKIGZy
b20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0
LCBSZXZpZXdlcgpAQCAtMzYsNyArMzcsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVn
emlsbGEgaW1wb3J0IEJ1ZywgQXR0YWNobWVudAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHku
dGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAKIAogZGVmIF9pZF90b19vYmplY3RfZGljdGlv
bmFyeSgqb2JqZWN0cyk6CkBAIC0yMDcsMTEgKzIwNyw5IEBAIF9idWc1ID0gewogfQogCiAKLSMg
RklYTUU6IFRoaXMgc2hvdWxkIG5vdCBpbmhlcml0IGZyb20gTW9jawotY2xhc3MgTW9ja0J1Z3pp
bGxhUXVlcmllcyhNb2NrKToKK2NsYXNzIE1vY2tCdWd6aWxsYVF1ZXJpZXMob2JqZWN0KToKIAog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBidWd6aWxsYSk6Ci0gICAgICAgIE1vY2suX19pbml0X18o
c2VsZikKICAgICAgICAgc2VsZi5fYnVnemlsbGEgPSBidWd6aWxsYQogCiAgICAgZGVmIF9hbGxf
YnVncyhzZWxmKToKQEAgLTI0OCwxNCArMjQ2LDE0IEBAIGNsYXNzIE1vY2tCdWd6aWxsYVF1ZXJp
ZXMoTW9jayk6CiAgICAgZGVmIGZldGNoX2J1Z3NfbWF0Y2hpbmdfc2VhcmNoKHNlbGYsIHNlYXJj
aF9zdHJpbmcsIGF1dGhvcl9lbWFpbD1Ob25lKToKICAgICAgICAgcmV0dXJuIFtzZWxmLl9idWd6
aWxsYS5mZXRjaF9idWcoNzgpLCBzZWxmLl9idWd6aWxsYS5mZXRjaF9idWcoNzcpXQogCisKIF9t
b2NrX3Jldmlld2VyID0gUmV2aWV3ZXIoIkZvbyBCYXIiLCAiZm9vQGJhci5jb20iKQogCiAKICMg
RklYTUU6IEJ1Z3ppbGxhIGlzIHRoZSB3cm9uZyBNb2NrLXBvaW50LiAgT25jZSB3ZSBoYXZlIGEg
QnVnemlsbGFOZXR3b3JrCiAjICAgICAgICBjbGFzcyB3ZSBzaG91bGQgbW9jayB0aGF0IGluc3Rl
YWQuCiAjIE1vc3Qgb2YgdGhpcyBjbGFzcyBpcyBqdXN0IGNvcHkvcGFzdGUgZnJvbSBCdWd6aWxs
YS4KLSMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBpbmhlcml0IGZyb20gTW9jawotY2xhc3MgTW9j
a0J1Z3ppbGxhKE1vY2spOgorY2xhc3MgTW9ja0J1Z3ppbGxhKG9iamVjdCk6CiAKICAgICBidWdf
c2VydmVyX3VybCA9ICJodHRwOi8vZXhhbXBsZS5jb20iCiAKQEAgLTI3MCw3ICsyNjgsNiBAQCBj
bGFzcyBNb2NrQnVnemlsbGEoTW9jayk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfcGF0Y2g3KQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAg
ICAgICBNb2NrLl9faW5pdF9fKHNlbGYpCiAgICAgICAgIHNlbGYucXVlcmllcyA9IE1vY2tCdWd6
aWxsYVF1ZXJpZXMoc2VsZikKICAgICAgICAgc2VsZi5jb21taXR0ZXJzID0gQ29tbWl0dGVyTGlz
dChyZXZpZXdlcnM9W19tb2NrX3Jldmlld2VyXSkKICAgICAgICAgc2VsZi5fb3ZlcnJpZGVfcGF0
Y2ggPSBOb25lCkBAIC0zNzcsNiArMzc0LDIxIEBAIGNsYXNzIE1vY2tCdWd6aWxsYShNb2NrKToK
ICAgICAgICAgICAgIGxvZyhjb21tZW50X3RleHQpCiAgICAgICAgICAgICBsb2coIi0tIEVuZCBj
b21tZW50IC0tIikKIAorICAgIGRlZiBhZGRfY2NfdG9fYnVnKHNlbGYsIGJ1Z19pZCwgY2NzKToK
KyAgICAgICAgcGFzcworCisgICAgZGVmIG9ic29sZXRlX2F0dGFjaG1lbnQoc2VsZiwgYXR0YWNo
bWVudF9pZCwgbWVzc2FnZT1Ob25lKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHJlb3Blbl9i
dWcoc2VsZiwgYnVnX2lkLCBtZXNzYWdlKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGNsb3Nl
X2J1Z19hc19maXhlZChzZWxmLCBidWdfaWQsIG1lc3NhZ2UpOgorICAgICAgICBwYXNzCisKKyAg
ICBkZWYgY2xlYXJfYXR0YWNobWVudF9mbGFncyhzZWxmLCBhdHRhY2htZW50X2lkLCBtZXNzYWdl
KToKKyAgICAgICAgcGFzcworCiAKIGNsYXNzIE1vY2tCdWlsZGVyKG9iamVjdCk6CiAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWUpOgpAQCAtNDYzLDI1ICs0NzUsNDEgQEAgY2xhc3MgTW9ja0J1
aWxkQm90KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBNb2NrRmFpbHVyZU1hcChzZWxmKQogCiAK
LSMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBpbmhlcml0IGZyb20gTW9jawotY2xhc3MgTW9ja1ND
TShNb2NrKToKK2NsYXNzIE1vY2tTQ00ob2JqZWN0KToKIAogICAgIGZha2VfY2hlY2tvdXRfcm9v
dCA9IG9zLnBhdGgucmVhbHBhdGgoIi90bXAiKSAjIHJlYWxwYXRoIGlzIG5lZWRlZCB0byBhbGxv
dyBmb3IgTWFjIE9TIFgncyAvcHJpdmF0ZS90bXAKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm
aWxlc3lzdGVtPU5vbmUpOgotICAgICAgICBNb2NrLl9faW5pdF9fKHNlbGYpCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGZpbGVzeXN0ZW09Tm9uZSwgZXhlY3V0aXZlPU5vbmUpOgogICAgICAgICAj
IEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgdXNlIHJlYWwgY2hlY2tvdXQtcm9vdCBkZXRlY3Rp
b24gbG9naWMgaGVyZS4KICAgICAgICAgIyBvcy5nZXRjd2QoKSBjYW4ndCB3b3JrIGhlcmUgYmVj
YXVzZSBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZSBhc3N1bWUgdGhhdCAiY2hlY2tvdXRfcm9vdCIK
ICAgICAgICAgIyB3aWxsIGFjdHVhbGx5IGJlIHRoZSByb290LiAgU2luY2UgZ2V0Y3dkKCkgaXMg
d3JvbmcsIHVzZSBhIGdsb2JhbGx5IGZha2Ugcm9vdCBmb3Igbm93LgogICAgICAgICBzZWxmLmNo
ZWNrb3V0X3Jvb3QgPSBzZWxmLmZha2VfY2hlY2tvdXRfcm9vdAogICAgICAgICBzZWxmLmFkZGVk
X3BhdGhzID0gc2V0KCkKLSAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0KKyAg
ICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0gb3IgTW9ja0ZpbGVTeXN0ZW0oKQor
ICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRpdmUgb3IgTW9ja0V4ZWN1dGl2ZSgpCiAK
ICAgICBkZWYgYWRkKHNlbGYsIGRlc3RpbmF0aW9uX3BhdGgsIHJldHVybl9leGl0X2NvZGU9RmFs
c2UpOgogICAgICAgICBzZWxmLmFkZGVkX3BhdGhzLmFkZChkZXN0aW5hdGlvbl9wYXRoKQogICAg
ICAgICBpZiByZXR1cm5fZXhpdF9jb2RlOgogICAgICAgICAgICAgcmV0dXJuIDAKIAorICAgIGRl
ZiBlbnN1cmVfY2xlYW5fd29ya2luZ19kaXJlY3Rvcnkoc2VsZiwgZm9yY2VfY2xlYW4pOgorICAg
ICAgICBwYXNzCisKKyAgICBkZWYgc3VwcG9ydHNfbG9jYWxfY29tbWl0cyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBlbnN1cmVfbm9fbG9jYWxfY29tbWl0cyhzZWxmLCBm
b3JjZV9jbGVhbik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBleGlzdHMoc2VsZiwgcGF0aCk6
CisgICAgICAgICMgSSBkb3VidCB0aGlzIHdvcmtzIGZvciBhbnkgaW1wbGVtZW50YXRpb24sIGJ1
dCBpcyBiZXR0ZXIgdGhhbiBub3RoaW5nLgorICAgICAgICAjIFdlIGNvdWxkIHVzZSBhIE1vY2tG
aWxlU3lzdGVtIHRvIGtlZXAgdHJhY2sgb2YgcGF0aHMgImluIHRoZSByZXBvc2l0b3J5IiBpZiBu
ZWVkZWQuCisgICAgICAgIHJldHVybiBwYXRoIGluIHNlbGYuYWRkZWRfcGF0aHMKKworICAgIGRl
ZiBhYnNvbHV0ZV9wYXRoKHNlbGYsICpjb21wcyk6CisgICAgICAgIHJldHVybiBzZWxmLl9maWxl
c3lzdGVtLmpvaW4oc2VsZi5jaGVja291dF9yb290LCAqY29tcHMpCisKICAgICBkZWYgY2hhbmdl
ZF9maWxlcyhzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgogICAgICAgICByZXR1cm4gWyJNb2NrRmls
ZTEiXQogCkBAIC00OTEsNiArNTE5LDE4IEBAIGNsYXNzIE1vY2tTQ00oTW9jayk6CiAgICAgZGVm
IGNvbW1pdF9pZHNfZnJvbV9jb21taXRpc2hfYXJndW1lbnRzKHNlbGYsIGFyZ3MpOgogICAgICAg
ICByZXR1cm4gWyJDb21taXRpc2gxIiwgIkNvbW1pdGlzaDIiXQogCisgICAgZGVmIGNvbW1pdHRl
cl9lbWFpbF9mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgorICAgICAgICByZXR1cm4gIm1v
Y2tAd2Via2l0Lm9yZyIKKworICAgIGRlZiBjb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2Uoc2Vs
ZiwgbWVzc2FnZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdl
KHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIHBhc3N3b3JkPU5vbmUsIGdpdF9jb21taXQ9
Tm9uZSwgZm9yY2Vfc3F1YXNoPUZhbHNlLCBjaGFuZ2VkX2ZpbGVzPU5vbmUpOgorICAgICAgICBw
YXNzCisKKyAgICBkZWYgbWVyZ2VfYmFzZShzZWxmLCBnaXRfY29tbWl0KToKKyAgICAgICAgcmV0
dXJuIE5vbmUKKwogICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfbG9jYWxfY29tbWl0KHNlbGYs
IGNvbW1pdF9pZCk6CiAgICAgICAgIGlmIGNvbW1pdF9pZCA9PSAiQ29tbWl0aXNoMSI6CiAgICAg
ICAgICAgICByZXR1cm4gQ29tbWl0TWVzc2FnZSgiQ29tbWl0TWVzc2FnZTFcbiIgXApAQCAtNTI4
LDYgKzU2OCwxMCBAQCBjbGFzcyBNb2NrREVQUyhvYmplY3QpOgogICAgICAgICBsb2coIk1PQ0s6
IE1vY2tERVBTLndyaXRlX3ZhcmlhYmxlKCVzLCAlcykiICUgKG5hbWUsIHZhbHVlKSkKIAogCitj
bGFzcyBNb2NrQ29tbWl0TWVzc2FnZShvYmplY3QpOgorICAgIGRlZiBtZXNzYWdlKHNlbGYpOgor
ICAgICAgICByZXR1cm4gIlRoaXMgaXMgYSBmYWtlIGNvbW1pdCBtZXNzYWdlIHRoYXQgaXMgYXQg
bGVhc3QgNTAgY2hhcmFjdGVycy4iCisKIGNsYXNzIE1vY2tDaGVja291dChvYmplY3QpOgogCiAg
ICAgX2NvbW1pdHRlcl9saXN0ID0gQ29tbWl0dGVyTGlzdCgpCkBAIC01NjAsOSArNjA0LDcgQEAg
Y2xhc3MgTW9ja0NoZWNrb3V0KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBbXQogCiAgICAgZGVm
IGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0LCBjaGFuZ2Vk
X2ZpbGVzPU5vbmUpOgotICAgICAgICBjb21taXRfbWVzc2FnZSA9IE1vY2soKQotICAgICAgICBj
b21taXRfbWVzc2FnZS5tZXNzYWdlID0gbGFtYmRhOiJUaGlzIGlzIGEgZmFrZSBjb21taXQgbWVz
c2FnZSB0aGF0IGlzIGF0IGxlYXN0IDUwIGNoYXJhY3RlcnMuIgotICAgICAgICByZXR1cm4gY29t
bWl0X21lc3NhZ2UKKyAgICAgICAgcmV0dXJuIE1vY2tDb21taXRNZXNzYWdlKCkKIAogICAgIGRl
ZiBjaHJvbWl1bV9kZXBzKHNlbGYpOgogICAgICAgICByZXR1cm4gTW9ja0RFUFMoKQpAQCAtNjYy
LDkgKzcwNCw4IEBAIGNsYXNzIE1vY2tTdGF0dXNTZXJ2ZXIob2JqZWN0KToKICAgICAgICAgcmV0
dXJuICJodHRwOi8vZHVtbXlfdXJsIgogCiAKLSMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBpbmhl
cml0IGZyb20gTW9jawogIyBGSVhNRTogVW5pZnkgd2l0aCBjb21tb24uc3lzdGVtLmV4ZWN1dGl2
ZV9tb2NrLk1vY2tFeGVjdXRpdmUuCi1jbGFzcyBNb2NrRXhlY3V0aXZlKE1vY2spOgorY2xhc3Mg
TW9ja0V4ZWN1dGl2ZShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaG91bGRfbG9n
PUZhbHNlLCBzaG91bGRfdGhyb3c9RmFsc2UpOgogICAgICAgICBzZWxmLl9zaG91bGRfbG9nID0g
c2hvdWxkX2xvZwogICAgICAgICBzZWxmLl9zaG91bGRfdGhyb3cgPSBzaG91bGRfdGhyb3cKQEAg
LTcwMiw3ICs3NDMsNyBAQCBjbGFzcyBNb2NrT3B0aW9ucyhvYmplY3QpOgogICAgICAgICAgICAg
c2VsZi5fX2RpY3RfX1trZXldID0gdmFsdWUKIAogCi1jbGFzcyBNb2NrUG9ydChNb2NrKToKK2Ns
YXNzIE1vY2tQb3J0KG9iamVjdCk6CiAgICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAgIHJldHVy
biAiTW9ja1BvcnQiCiAKQEAgLTcxNSw2ICs3NTYsMjcgQEAgY2xhc3MgTW9ja1BvcnQoTW9jayk6
CiAgICAgZGVmIHVwZGF0ZV93ZWJraXRfY29tbWFuZChzZWxmKToKICAgICAgICAgcmV0dXJuIFsi
bW9jay11cGRhdGUtd2Via2l0Il0KIAorICAgIGRlZiBidWlsZF93ZWJraXRfY29tbWFuZChzZWxm
LCBidWlsZF9zdHlsZT1Ob25lKToKKyAgICAgICAgcmV0dXJuIFsibW9jay1idWlsZC13ZWJraXQi
XQorCisgICAgZGVmIHJ1bl9iaW5kaW5nc190ZXN0c19jb21tYW5kKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gWyJtb2NrLXJ1bi1iaW5kaW5ncy10ZXN0cyJdCisKKyAgICBkZWYgcHJlcGFyZV9jaGFu
Z2Vsb2dfY29tbWFuZChzZWxmKToKKyAgICAgICAgcmV0dXJuIFsnbW9jay1wcmVwYXJlLUNoYW5n
ZUxvZyddCisKKyAgICBkZWYgcnVuX3B5dGhvbl91bml0dGVzdHNfY29tbWFuZChzZWxmKToKKyAg
ICAgICAgcmV0dXJuIFsnbW9jay10ZXN0LXdlYmtpdHB5J10KKworICAgIGRlZiBydW5fcGVybF91
bml0dGVzdHNfY29tbWFuZChzZWxmKToKKyAgICAgICAgcmV0dXJuIFsnbW9jay10ZXN0LXdlYmtp
dHBlcmwnXQorCisgICAgZGVmIHJ1bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5kKHNlbGYp
OgorICAgICAgICByZXR1cm4gWydtb2NrLXJ1bi1qYXZhY3JpcHRjb3JlLXRlc3RzJ10KKworICAg
IGRlZiBydW5fd2Via2l0X3Rlc3RzX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJldHVybiBbJ21v
Y2stcnVuLXdlYmtpdC10ZXN0cyddCisKIAogY2xhc3MgTW9ja1Rlc3RQb3J0MShvYmplY3QpOgog
CkBAIC04MDUsNCArODY3LDQgQEAgY2xhc3MgTW9ja0Jyb3dzZXIob2JqZWN0KToKICAgICAgICAg
c2VsZi5wYXJhbXNba2V5XSA9IHZhbHVlCiAKICAgICBkZWYgc3VibWl0KHNlbGYpOgotICAgICAg
ICByZXR1cm4gTW9jayhmaWxlKQorICAgICAgICByZXR1cm4gU3RyaW5nSU8uU3RyaW5nSU8oKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NsZWFud29ya2lu
Z2RpcmVjdG9yeV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9jbGVhbndvcmtpbmdkaXJlY3RvcnlfdW5pdHRlc3QucHkKaW5kZXggMzZhM2QyYjc2NThmOWZl
ZjJjMDg1NmRjOTRmMmJjMDcyNDk1NzAzNS4uNGM5ZDk3NjczZmJlYmVkODg2YjRkMjE4ODgxNGVl
NWVmYjc5NWI2NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2NsZWFud29ya2luZ2RpcmVjdG9yeV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5X3VuaXR0ZXN0LnB5CkBAIC0z
Niw2ICszNiw3IEBAIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5jbGVhbndvcmtpbmdkaXJlY3Rv
cnkgaW1wb3J0IENsZWFuV29ya2luZ0RpcmVjdG9yeQogY2xhc3MgQ2xlYW5Xb3JraW5nRGlyZWN0
b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcnVuKHNlbGYpOgogICAg
ICAgICB0b29sID0gTW9ja1Rvb2woKQorICAgICAgICB0b29sLl9zY20gPSBNb2NrKCkKICAgICAg
ICAgc3RlcCA9IENsZWFuV29ya2luZ0RpcmVjdG9yeSh0b29sLCBNb2NrT3B0aW9ucyhjbGVhbj1U
cnVlLCBmb3JjZV9jbGVhbj1GYWxzZSkpCiAgICAgICAgIHN0ZXAucnVuKHt9KQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5lbnN1cmVfbm9fbG9jYWxfY29tbWl0cy5jYWxsX2Nv
dW50LCAxKQpAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBDbGVhbldvcmtpbmdEaXJlY3RvcnlUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X25vX2NsZWFuKHNlbGYpOgogICAg
ICAgICB0b29sID0gTW9ja1Rvb2woKQorICAgICAgICB0b29sLl9zY20gPSBNb2NrKCkKICAgICAg
ICAgc3RlcCA9IENsZWFuV29ya2luZ0RpcmVjdG9yeSh0b29sLCBNb2NrT3B0aW9ucyhjbGVhbj1G
YWxzZSkpCiAgICAgICAgIHN0ZXAucnVuKHt9KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRv
b2wuX3NjbS5lbnN1cmVfbm9fbG9jYWxfY29tbWl0cy5jYWxsX2NvdW50LCAwKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Vuc3VyZWxvY2FsY29tbWl0aWZu
ZWVkZWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvZW5zdXJlbG9jYWxj
b21taXRpZm5lZWRlZC5weQppbmRleCBkMGNkYTQ2MDIwYTFjYmM3YjUzZWJkYjkwOGY2NjUxMTQ2
MTg0NjIxLi4yMTY3MzUxZTI4MjRmNTc4ZGJhYzIxMTliODVkNGY1NGYzOTI1Mjc3IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvZW5zdXJlbG9jYWxjb21taXRp
Zm5lZWRlZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvZW5zdXJl
bG9jYWxjb21taXRpZm5lZWRlZC5weQpAQCAtNDAsNCArNDAsNCBAQCBjbGFzcyBFbnN1cmVMb2Nh
bENvbW1pdElmTmVlZGVkKEFic3RyYWN0U3RlcCk6CiAKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRl
KToKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5sb2NhbF9jb21taXQgYW5kIG5vdCBzZWxmLl90
b29sLnNjbSgpLnN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoKToKLSAgICAgICAgICAgIGVycm9yKCIt
LWxvY2FsLWNvbW1pdCBwYXNzZWQsIGJ1dCAlcyBkb2VzIG5vdCBzdXBwb3J0IGxvY2FsIGNvbW1p
dHMiICUgc2VsZi5fdG9vbC5zY20uZGlzcGxheV9uYW1lKCkpCisgICAgICAgICAgICBlcnJvcigi
LS1sb2NhbC1jb21taXQgcGFzc2VkLCBidXQgJXMgZG9lcyBub3Qgc3VwcG9ydCBsb2NhbCBjb21t
aXRzIiAlIHNlbGYuX3Rvb2wuc2NtKCkuZGlzcGxheV9uYW1lKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100763</attachid>
            <date>2011-07-13 21:04:36 -0700</date>
            <delta_ts>2022-02-27 23:44:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64508-20110713210435.patch</filename>
            <type>text/plain</type>
            <size>34313</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA5NjcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZTUzNWIyNjEwODdkYzA1ZWUyNzgxNjY3OGEwMDAyY2Fj
MWM1NzE3Li45Y2NkOWQxZmVkNWI2MjMzMjJkMDg0ZTA0OWRhZDVhN2NjMDM0MGM1IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzQg
QEAKIDIwMTEtMDctMTMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAg
IE1vdmUgd2Via2l0cHkgb2ZmIG9mIGxvb3NlIG1vY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzaW5nIE1vY2sgaGFzIGNhdXNlZCB1cyBtb3JlIHBh
aW4gdGhhbiBoZWxwLgorICAgICAgICBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGEgY2xl
YW5lciB3YXkgdG8gdXNlIGl0CisgICAgICAgIChtYXliZSBNb2NrKGNsYXNzKSBpbnN0ZWFkIG9m
IGluaGVyaXRpbmcgZnJvbSBpdD8pLgorICAgICAgICBCdXQgZm9yIG5vdywgSSd2ZSByZW1vdmVk
IGFsbCB1c2VzIG9mIE1vY2sgZnJvbSBtb2NrdG9vbC5weS4KKworICAgICAgICBJIGFsc28gbW92
ZWQgcnVuX2NvbW1hbmQgaW50byB0aGUgb25seSAzIGZpbGVzIHdoaWNoIGNhbGwgaXQKKyAgICAg
ICAgaW5zdGVhZCBvZiBsZWF2aW5nIHRoZSBkZXByZWNhdGVkIG1ldGhvZCBpbiBleGVjdXRpdmUu
cHkuCisKKyAgICAgICAgSSBjaGFuZ2VkIHZhcmlvdXMgZGlyZWN0IGNhbGxzIHRvIG9zLiogdG8g
dXNlIGZpbGVzeXN0ZW0gaW5zdGVhZC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L2NoZWNrb3V0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX3VuaXR0ZXN0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5X3VuaXR0ZXN0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9lbnN1cmVsb2NhbGNvbW1pdGlmbmVl
ZGVkLnB5OgorCisyMDExLTA3LTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKwog
ICAgICAgICBSRUdSRVNTSU9OOiBHaXRUZXN0V2l0aE1vY2sudGVzdF9jcmVhdGVfcGF0Y2ggZmFp
bHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyOTQ1
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2No
ZWNrb3V0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tv
dXQucHkKaW5kZXggY2I4ODUxMzA3OTEzNmIyNjhlMjNjZjk1MGZkZWIwNDI1ZGE2NmQ4Ny4uNWQ1
YTZjNzhiNzFhZjk0YTdmMzc3MjY2YTllNDBiZGYxYzM0YTFmYSAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHkKQEAgLTI2LDcgKzI2
LDYgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBvcwogaW1wb3J0
IFN0cmluZ0lPCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZyBpbXBvcnQgdXJscwpAQCAt
MzUsNyArMzQsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5jb21taXRpbmZvIGlt
cG9ydCBDb21taXRJbmZvCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20gaW1wb3J0
IENvbW1pdE1lc3NhZ2UKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmRlcHMgaW1wb3J0
IERFUFMKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAotZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgcnVuX2NvbW1hbmQsIFNj
cmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBT
Y3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2lu
ZyBpbXBvcnQgbG9nCiAKIApAQCAtNDMsMTEgKzQyLDE0IEBAIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxvZwogIyBGSVhNRTogTW92ZSBhIGJ1
bmNoIG9mIENoYW5nZUxvZy1zcGVjaWZpYyBwcm9jZXNzaW5nIGZyb20gU0NNIHRvIHRoaXMgb2Jq
ZWN0LgogIyBOT1RFOiBBbGwgcGF0aHMgcmV0dXJuZWQgZnJvbSB0aGlzIGNsYXNzIHNob3VsZCBi
ZSBhYnNvbHV0ZS4KIGNsYXNzIENoZWNrb3V0KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIHNjbSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNjbSwgZXhlY3V0aXZlPU5vbmUsIGZp
bGVzeXN0ZW09Tm9uZSk6CiAgICAgICAgIHNlbGYuX3NjbSA9IHNjbQorICAgICAgICAjIEZJWE1F
OiBXZSBzaG91bGRuJ3QgYmUgZ3JhYmJpbmcgYXQgcHJpdmF0ZSBtZW1iZXJzIG9uIHNjbS4KKyAg
ICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlIG9yIHNlbGYuX3NjbS5fZXhlY3V0aXZl
CisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtIG9yIHNlbGYuX3NjbS5fZmls
ZXN5c3RlbQogCiAgICAgZGVmIGlzX3BhdGhfdG9fY2hhbmdlbG9nKHNlbGYsIHBhdGgpOgotICAg
ICAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShwYXRoKSA9PSAiQ2hhbmdlTG9nIgorICAgICAg
ICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5iYXNlbmFtZShwYXRoKSA9PSAiQ2hhbmdlTG9nIgog
CiAgICAgZGVmIF9sYXRlc3RfZW50cnlfZm9yX2NoYW5nZWxvZ19hdF9yZXZpc2lvbihzZWxmLCBj
aGFuZ2Vsb2dfcGF0aCwgcmV2aXNpb24pOgogICAgICAgICBjaGFuZ2Vsb2dfY29udGVudHMgPSBz
ZWxmLl9zY20uY29udGVudHNfYXRfcmV2aXNpb24oY2hhbmdlbG9nX3BhdGgsIHJldmlzaW9uKQpA
QCAtMTA1LDggKzEwNyw3IEBAIGNsYXNzIENoZWNrb3V0KG9iamVjdCk6CiAgICAgICAgICMgZXhw
ZWN0IGFic29sdXRlIHBhdGhzLCBzbyB0aGlzIG1ldGhvZCByZXR1cm5zIGFic29sdXRlIHBhdGhz
LgogICAgICAgICBpZiBub3QgY2hhbmdlZF9maWxlczoKICAgICAgICAgICAgIGNoYW5nZWRfZmls
ZXMgPSBzZWxmLl9zY20uY2hhbmdlZF9maWxlcyhnaXRfY29tbWl0KQotICAgICAgICBhYnNvbHV0
ZV9wYXRocyA9IFtvcy5wYXRoLmpvaW4oc2VsZi5fc2NtLmNoZWNrb3V0X3Jvb3QsIHBhdGgpIGZv
ciBwYXRoIGluIGNoYW5nZWRfZmlsZXNdCi0gICAgICAgIHJldHVybiBbcGF0aCBmb3IgcGF0aCBp
biBhYnNvbHV0ZV9wYXRocyBpZiBwcmVkaWNhdGUocGF0aCldCisgICAgICAgIHJldHVybiBmaWx0
ZXIocHJlZGljYXRlLCBtYXAoc2VsZi5fc2NtLmFic29sdXRlX3BhdGgsIGNoYW5nZWRfZmlsZXMp
KQogCiAgICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2NvbW1pdCwgY2hhbmdl
ZF9maWxlcz1Ob25lKToKICAgICAgICAgcmV0dXJuIHNlbGYuX21vZGlmaWVkX2ZpbGVzX21hdGNo
aW5nX3ByZWRpY2F0ZShnaXRfY29tbWl0LCBzZWxmLmlzX3BhdGhfdG9fY2hhbmdlbG9nLCBjaGFu
Z2VkX2ZpbGVzPWNoYW5nZWRfZmlsZXMpCkBAIC0xNDEsNyArMTQyLDcgQEAgY2xhc3MgQ2hlY2tv
dXQob2JqZWN0KToKICAgICAgICAgICAgIHBhc3MgIyBXZSBtaWdodCBub3QgaGF2ZSBDaGFuZ2VM
b2dzLgogCiAgICAgZGVmIGNocm9taXVtX2RlcHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBERVBT
KG9zLnBhdGguam9pbihzZWxmLl9zY20uY2hlY2tvdXRfcm9vdCwgIlNvdXJjZSIsICJXZWJLaXQi
LCAiY2hyb21pdW0iLCAiREVQUyIpKQorICAgICAgICByZXR1cm4gREVQUyhzZWxmLl9zY20uYWJz
b2x1dGVfcGF0aCgiU291cmNlIiwgIldlYktpdCIsICJjaHJvbWl1bSIsICJERVBTIikpCiAKICAg
ICBkZWYgYXBwbHlfcGF0Y2goc2VsZiwgcGF0Y2gsIGZvcmNlPUZhbHNlKToKICAgICAgICAgIyBJ
dCdzIHBvc3NpYmxlIHRoYXQgdGhlIHBhdGNoIHdhcyBub3QgbWFkZSBmcm9tIHRoZSByb290IGRp
cmVjdG9yeS4KQEAgLTE1Miw3ICsxNTMsNyBAQCBjbGFzcyBDaGVja291dChvYmplY3QpOgogICAg
ICAgICAgICAgYXJncyArPSBbJy0tcmV2aWV3ZXInLCBwYXRjaC5yZXZpZXdlcigpLmZ1bGxfbmFt
ZV0KICAgICAgICAgaWYgZm9yY2U6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1mb3JjZScp
Ci0gICAgICAgIHNlbGYuX3NjbS5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFyZ3MsIGlucHV0PXBh
dGNoLmNvbnRlbnRzKCkpCisgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChhcmdz
LCBpbnB1dD1wYXRjaC5jb250ZW50cygpKQogCiAgICAgZGVmIGFwcGx5X3JldmVyc2VfZGlmZihz
ZWxmLCByZXZpc2lvbik6CiAgICAgICAgIHNlbGYuX3NjbS5hcHBseV9yZXZlcnNlX2RpZmYocmV2
aXNpb24pCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9jaGVja291dF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CmluZGV4IGU2N2ZjMTYxYjFiZTViNGIwM2MyYWE0
YTBlNWY0ZWMzOGM4MWZhZjcuLmUyNDcyNzM0Mjk3NTMyYWRlZGY0ZWQ0ZmJlYjJlYjdkOTI4NDkz
NDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2No
ZWNrb3V0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CkBAIC0zOCw3ICszOCw4IEBAIGZyb20gLmNoZWNr
b3V0IGltcG9ydCBDaGVja291dAogZnJvbSAuY2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VMb2dFbnRy
eQogZnJvbSAuc2NtIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbSwgQ29tbWl0TWVzc2FnZQogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3Jp
cHRFcnJvcgotZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKK2Zyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lz
dGVtCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tTQ00sIE1vY2tFeGVj
dXRpdmUKIAogCiAjIEZJWE1FOiBDb3BpZWQgZnJvbSBzY21fdW5pdHRlc3QucHkKQEAgLTEyOSw3
ICsxMzAsNyBAQCBTZWNvbmQgcGFydCBvZiB0aGlzIGNvbXBsaWNhdGVkIGNoYW5nZSBieSBtZSwg
VG9yIEFybmUgVmVzdGJcdTAwZjghCiAKICAgICAgICAgcmVhbF9zY20gPSBkZXRlY3Rfc2NtX3N5
c3RlbShzZWxmLm9sZF9jd2QpCiAKLSAgICAgICAgbW9ja19zY20gPSBNb2NrKCkKKyAgICAgICAg
bW9ja19zY20gPSBNb2NrU0NNKCkKICAgICAgICAgbW9ja19zY20ucnVuID0gbW9ja19ydW4KICAg
ICAgICAgbW9ja19zY20uc2NyaXB0X3BhdGggPSByZWFsX3NjbS5zY3JpcHRfcGF0aAogCkBAIC0x
NDAsOCArMTQxLDEwIEBAIFNlY29uZCBwYXJ0IG9mIHRoaXMgY29tcGxpY2F0ZWQgY2hhbmdlIGJ5
IG1lLCBUb3IgQXJuZSBWZXN0Ylx1MDBmOCEKIAogCiBjbGFzcyBDaGVja291dFRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgorICAgIGRlZiBfbWFrZV9jaGVja291dChzZWxmKToKKyAgICAgICAgcmV0
dXJuIENoZWNrb3V0KHNjbT1Nb2NrU0NNKCksIGZpbGVzeXN0ZW09TW9ja0ZpbGVTeXN0ZW0oKSwg
ZXhlY3V0aXZlPU1vY2tFeGVjdXRpdmUoKSkKKwogICAgIGRlZiB0ZXN0X2xhdGVzdF9lbnRyeV9m
b3JfY2hhbmdlbG9nX2F0X3JldmlzaW9uKHNlbGYpOgotICAgICAgICBzY20gPSBNb2NrKCkKICAg
ICAgICAgZGVmIG1vY2tfY29udGVudHNfYXRfcmV2aXNpb24oY2hhbmdlbG9nX3BhdGgsIHJldmlz
aW9uKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlbG9nX3BhdGgsICJmb28i
KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXZpc2lvbiwgImJhciIpCkBAIC0xNTAs
OCArMTUzLDggQEAgY2xhc3MgQ2hlY2tvdXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgICAgICMgVGhlIENoYW5nZUxvZyB1dGYtOCBkZWNvZGluZyBzaG91bGQgaWdub3JlIGludmFs
aWQgY29kZXBvaW50cy4KICAgICAgICAgICAgIGludmFsaWRfdXRmOCA9ICJcMjU1IgogICAgICAg
ICAgICAgcmV0dXJuIF9jaGFuZ2Vsb2cxLmVuY29kZSgidXRmLTgiKSArIGludmFsaWRfdXRmOAot
ICAgICAgICBzY20uY29udGVudHNfYXRfcmV2aXNpb24gPSBtb2NrX2NvbnRlbnRzX2F0X3Jldmlz
aW9uCi0gICAgICAgIGNoZWNrb3V0ID0gQ2hlY2tvdXQoc2NtKQorICAgICAgICBjaGVja291dCA9
IHNlbGYuX21ha2VfY2hlY2tvdXQoKQorICAgICAgICBjaGVja291dC5fc2NtLmNvbnRlbnRzX2F0
X3JldmlzaW9uID0gbW9ja19jb250ZW50c19hdF9yZXZpc2lvbgogICAgICAgICBlbnRyeSA9IGNo
ZWNrb3V0Ll9sYXRlc3RfZW50cnlfZm9yX2NoYW5nZWxvZ19hdF9yZXZpc2lvbigiZm9vIiwgImJh
ciIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuY29udGVudHMoKSwgX2NoYW5nZWxv
ZzFlbnRyeTEpCiAKQEAgLTE2MCw5ICsxNjMsOCBAQCBjbGFzcyBDaGVja291dFRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgICMgZnJvbSByZXZpc2lvbnMsIHJlc3VsdGluZyBpbiBhIFNjcmlw
dEVycm9yIGV4Y2VwdGlvbi4gIFRlc3QgdGhhdCB3ZQogICAgICMgcmVjb3ZlciBmcm9tIHRob3Nl
IGFuZCBzdGlsbCByZXR1cm4gdGhlIG90aGVyIENoYW5nZUxvZyBlbnRyaWVzLgogICAgIGRlZiB0
ZXN0X2NoYW5nZWxvZ19lbnRyaWVzX2Zvcl9yZXZpc2lvbihzZWxmKToKLSAgICAgICAgc2NtID0g
TW9jaygpCi0gICAgICAgIHNjbS5jaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbiA9IGxhbWJkYSBy
ZXZpc2lvbjogWydmb28vQ2hhbmdlTG9nJywgJ2Jhci9DaGFuZ2VMb2cnXQotICAgICAgICBjaGVj
a291dCA9IENoZWNrb3V0KHNjbSkKKyAgICAgICAgY2hlY2tvdXQgPSBzZWxmLl9tYWtlX2NoZWNr
b3V0KCkKKyAgICAgICAgY2hlY2tvdXQuX3NjbS5jaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbiA9
IGxhbWJkYSByZXZpc2lvbjogWydmb28vQ2hhbmdlTG9nJywgJ2Jhci9DaGFuZ2VMb2cnXQogCiAg
ICAgICAgIGRlZiBtb2NrX2xhdGVzdF9lbnRyeV9mb3JfY2hhbmdlbG9nX2F0X3JldmlzaW9uKHBh
dGgsIHJldmlzaW9uKToKICAgICAgICAgICAgIGlmIHBhdGggPT0gImZvby9DaGFuZ2VMb2ciOgpA
QCAtMTc3LDkgKzE3OSw4IEBAIGNsYXNzIENoZWNrb3V0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cmllc1swXSwgJ2ZvbycpCiAKICAgICBkZWYg
dGVzdF9jb21taXRfaW5mb19mb3JfcmV2aXNpb24oc2VsZik6Ci0gICAgICAgIHNjbSA9IE1vY2so
KQotICAgICAgICBzY20uY29tbWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbiA9IGxhbWJkYSByZXZp
c2lvbjogImNvbW1pdHRlckBleGFtcGxlLmNvbSIKLSAgICAgICAgY2hlY2tvdXQgPSBDaGVja291
dChzY20pCisgICAgICAgIGNoZWNrb3V0ID0gc2VsZi5fbWFrZV9jaGVja291dCgpCisgICAgICAg
IGNoZWNrb3V0Ll9zY20uY29tbWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbiA9IGxhbWJkYSByZXZp
c2lvbjogImNvbW1pdHRlckBleGFtcGxlLmNvbSIKICAgICAgICAgY2hlY2tvdXQuY2hhbmdlbG9n
X2VudHJpZXNfZm9yX3JldmlzaW9uID0gbGFtYmRhIHJldmlzaW9uOiBbQ2hhbmdlTG9nRW50cnko
X2NoYW5nZWxvZzFlbnRyeTEpXQogICAgICAgICBjb21taXRpbmZvID0gY2hlY2tvdXQuY29tbWl0
X2luZm9fZm9yX3JldmlzaW9uKDQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0aW5m
by5idWdfaWQoKSwgMzY2MjkpCkBAIC0xOTQsMjMgKzE5NSwyMCBAQCBjbGFzcyBDaGVja291dFRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrb3V0
LmNvbW1pdF9pbmZvX2Zvcl9yZXZpc2lvbigxKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X2J1Z19p
ZF9mb3JfcmV2aXNpb24oc2VsZik6Ci0gICAgICAgIHNjbSA9IE1vY2soKQotICAgICAgICBzY20u
Y29tbWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbiA9IGxhbWJkYSByZXZpc2lvbjogImNvbW1pdHRl
ckBleGFtcGxlLmNvbSIKLSAgICAgICAgY2hlY2tvdXQgPSBDaGVja291dChzY20pCisgICAgICAg
IGNoZWNrb3V0ID0gc2VsZi5fbWFrZV9jaGVja291dCgpCisgICAgICAgIGNoZWNrb3V0Ll9zY20u
Y29tbWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbiA9IGxhbWJkYSByZXZpc2lvbjogImNvbW1pdHRl
ckBleGFtcGxlLmNvbSIKICAgICAgICAgY2hlY2tvdXQuY2hhbmdlbG9nX2VudHJpZXNfZm9yX3Jl
dmlzaW9uID0gbGFtYmRhIHJldmlzaW9uOiBbQ2hhbmdlTG9nRW50cnkoX2NoYW5nZWxvZzFlbnRy
eTEpXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrb3V0LmJ1Z19pZF9mb3JfcmV2aXNp
b24oNCksIDM2NjI5KQogCiAgICAgZGVmIHRlc3RfYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChzZWxm
KToKLSAgICAgICAgc2NtID0gTW9jaygpCi0gICAgICAgIGNoZWNrb3V0ID0gQ2hlY2tvdXQoc2Nt
KQorICAgICAgICBjaGVja291dCA9IHNlbGYuX21ha2VfY2hlY2tvdXQoKQogICAgICAgICBjaGVj
a291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQgPSBsYW1iZGEgZ2l0X2NvbW1pdCwg
Y2hhbmdlZF9maWxlcz1Ob25lOiBDb21taXRNZXNzYWdlKENoYW5nZUxvZ0VudHJ5KF9jaGFuZ2Vs
b2cxZW50cnkxKS5jb250ZW50cygpLnNwbGl0bGluZXMoKSkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjaGVja291dC5idWdfaWRfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSksIDM2
NjI5KQogCiAgICAgZGVmIHRlc3RfbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmKToKLSAgICAgICAg
c2NtID0gTW9jaygpCi0gICAgICAgIHNjbS5jaGVja291dF9yb290ID0gIi9mb28vYmFyIgotICAg
ICAgICBzY20uY2hhbmdlZF9maWxlcyA9IGxhbWJkYSBnaXRfY29tbWl0OiBbImZpbGUxIiwgIkNo
YW5nZUxvZyIsICJyZWxhdGl2ZS9wYXRoL0NoYW5nZUxvZyJdCi0gICAgICAgIGNoZWNrb3V0ID0g
Q2hlY2tvdXQoc2NtKQorICAgICAgICBjaGVja291dCA9IHNlbGYuX21ha2VfY2hlY2tvdXQoKQor
ICAgICAgICBjaGVja291dC5fc2NtLmNoZWNrb3V0X3Jvb3QgPSAiL2Zvby9iYXIiCisgICAgICAg
IGNoZWNrb3V0Ll9zY20uY2hhbmdlZF9maWxlcyA9IGxhbWJkYSBnaXRfY29tbWl0OiBbImZpbGUx
IiwgIkNoYW5nZUxvZyIsICJyZWxhdGl2ZS9wYXRoL0NoYW5nZUxvZyJdCiAgICAgICAgIGV4cGVj
dGVkX2NoYW5nbG9ncyA9IFsiL2Zvby9iYXIvQ2hhbmdlTG9nIiwgIi9mb28vYmFyL3JlbGF0aXZl
L3BhdGgvQ2hhbmdlTG9nIl0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja291dC5tb2Rp
ZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQ9Tm9uZSksIGV4cGVjdGVkX2NoYW5nbG9ncykKIApA
QCAtMjI1LDExICsyMjMsMTAgQEAgY2xhc3MgQ2hlY2tvdXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgICAgICAgICByZXR1cm4gWzNdCiAgICAgICAgICAgICByZXR1cm4gWzQsIDhd
CiAKLSAgICAgICAgc2NtID0gTW9jaygpCi0gICAgICAgIHNjbS5jaGVja291dF9yb290ID0gIi9m
b28vYmFyIgotICAgICAgICBzY20uY2hhbmdlZF9maWxlcyA9IGxhbWJkYSBnaXRfY29tbWl0OiBb
ImZpbGUxIiwgImZpbGUyIiwgInJlbGF0aXZlL3BhdGgvQ2hhbmdlTG9nIl0KLSAgICAgICAgc2Nt
LnJldmlzaW9uc19jaGFuZ2luZ19maWxlID0gbW9ja19yZXZpc2lvbnNfY2hhbmdpbmdfZmlsZQot
ICAgICAgICBjaGVja291dCA9IENoZWNrb3V0KHNjbSkKKyAgICAgICAgY2hlY2tvdXQgPSBzZWxm
Ll9tYWtlX2NoZWNrb3V0KCkKKyAgICAgICAgY2hlY2tvdXQuX3NjbS5jaGVja291dF9yb290ID0g
Ii9mb28vYmFyIgorICAgICAgICBjaGVja291dC5fc2NtLmNoYW5nZWRfZmlsZXMgPSBsYW1iZGEg
Z2l0X2NvbW1pdDogWyJmaWxlMSIsICJmaWxlMiIsICJyZWxhdGl2ZS9wYXRoL0NoYW5nZUxvZyJd
CisgICAgICAgIGNoZWNrb3V0Ll9zY20ucmV2aXNpb25zX2NoYW5naW5nX2ZpbGUgPSBtb2NrX3Jl
dmlzaW9uc19jaGFuZ2luZ19maWxlCiAgICAgICAgIGNoZWNrb3V0LmNoYW5nZWxvZ19lbnRyaWVz
X2Zvcl9yZXZpc2lvbiA9IG1vY2tfY2hhbmdlbG9nX2VudHJpZXNfZm9yX3JldmlzaW9uCiAgICAg
ICAgIHJldmlld2VycyA9IGNoZWNrb3V0LnN1Z2dlc3RlZF9yZXZpZXdlcnMoZ2l0X2NvbW1pdD1O
b25lKQogICAgICAgICByZXZpZXdlcl9uYW1lcyA9IFtyZXZpZXdlci5mdWxsX25hbWUgZm9yIHJl
dmlld2VyIGluIHJldmlld2Vyc10KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20vZ2l0LnB5CmluZGV4IDU2YTMyMWEzNzVmMTBmOTM0MDVhNDM5ZjUxZDdl
NmZhMmJkZDlkMzAuLmE1ZmQyMjRlNjBhNjBiZDk5NzgwZjhjZmQ2ZDNlZTAwMzczMThiYTcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5w
eQpAQCAtMzIsMTMgKzMyLDIwIEBAIGltcG9ydCByZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5t
ZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXBy
ZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxvZwotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0RXJyb3IKK2Zyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0
RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3NwYXRoCiAKIGZyb20g
LmNvbW1pdG1lc3NhZ2UgaW1wb3J0IENvbW1pdE1lc3NhZ2UKIGZyb20gLnNjbSBpbXBvcnQgQXV0
aGVudGljYXRpb25FcnJvciwgU0NNLCBjb21taXRfZXJyb3JfaGFuZGxlcgogZnJvbSAuc3ZuIGlt
cG9ydCBTVk4sIFNWTlJlcG9zaXRvcnkKIAogCitkZWYgcnVuX2NvbW1hbmQoKmFyZ3MsICoqa3dh
cmdzKToKKyAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgYSBnbG9iYWwgc3RhdGljLgor
ICAgICMgTmV3IGNvZGUgc2hvdWxkIHVzZSBFeGVjdXRpdmUucnVuX2NvbW1hbmQgZGlyZWN0bHkg
aW5zdGVhZAorICAgIHJldHVybiBFeGVjdXRpdmUoKS5ydW5fY29tbWFuZCgqYXJncywgKiprd2Fy
Z3MpCisKKwogY2xhc3MgQW1iaWd1b3VzQ29tbWl0RXJyb3IoRXhjZXB0aW9uKToKICAgICBkZWYg
X19pbml0X18oc2VsZiwgbnVtX2xvY2FsX2NvbW1pdHMsIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2Ns
ZWFuKToKICAgICAgICAgc2VsZi5udW1fbG9jYWxfY29tbWl0cyA9IG51bV9sb2NhbF9jb21taXRz
CkBAIC05NSwxNCArMTAyLDEzIEBAIGNsYXNzIEdpdChTQ00sIFNWTlJlcG9zaXRvcnkpOgogICAg
IGRlZiBmaW5kX2NoZWNrb3V0X3Jvb3QoY2xzLCBwYXRoKToKICAgICAgICAgIyAiZ2l0IHJldi1w
YXJzZSAtLXNob3ctY2R1cCIgd291bGQgYmUgYW5vdGhlciB3YXkgdG8gZ2V0IHRvIHRoZSByb290
CiAgICAgICAgIChjaGVja291dF9yb290LCBkb3RfZ2l0KSA9IG9zLnBhdGguc3BsaXQocnVuX2Nv
bW1hbmQoWydnaXQnLCAncmV2LXBhcnNlJywgJy0tZ2l0LWRpciddLCBjd2Q9KHBhdGggb3IgIi4v
IikpKQotICAgICAgICAjIElmIHdlIHdlcmUgdXNpbmcgMi42ICMgY2hlY2tvdXRfcm9vdCA9IG9z
LnBhdGgucmVscGF0aChjaGVja291dF9yb290LCBwYXRoKQogICAgICAgICBpZiBub3Qgb3MucGF0
aC5pc2FicyhjaGVja291dF9yb290KTogICMgU29tZXRpbWVzIGdpdCByZXR1cm5zIHJlbGF0aXZl
IHBhdGhzCiAgICAgICAgICAgICBjaGVja291dF9yb290ID0gb3MucGF0aC5qb2luKHBhdGgsIGNo
ZWNrb3V0X3Jvb3QpCiAgICAgICAgIHJldHVybiBjaGVja291dF9yb290CiAKICAgICBAY2xhc3Nt
ZXRob2QKICAgICBkZWYgdG9fb2JqZWN0X25hbWUoY2xzLCBmaWxlcGF0aCk6Ci0gICAgICAgIHJv
b3RfZW5kX3dpdGhfc2xhc2ggPSBvcy5wYXRoLmpvaW4oY2xzLmZpbmRfY2hlY2tvdXRfcm9vdChv
cy5wYXRoLmRpcm5hbWUoZmlsZXBhdGgpKSwgJycpCisgICAgICAgIHJvb3RfZW5kX3dpdGhfc2xh
c2ggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oY2xzLmZpbmRfY2hlY2tvdXRfcm9vdChzZWxmLl9m
aWxlc3lzdGVtLmRpcm5hbWUoZmlsZXBhdGgpKSwgJycpCiAgICAgICAgIHJldHVybiBmaWxlcGF0
aC5yZXBsYWNlKHJvb3RfZW5kX3dpdGhfc2xhc2gsICcnKQogCiAgICAgQGNsYXNzbWV0aG9kCkBA
IC0xMjUsNyArMTMxLDcgQEAgY2xhc3MgR2l0KFNDTSwgU1ZOUmVwb3NpdG9yeSk6CiAgICAgICAg
IHJldHVybiBzZWxmLnJ1bihbJ2dpdCcsICdsb2cnLCAnLS1wcmV0dHk9b25lbGluZScsICdIRUFE
Li4uJyArIHNlbGYucmVtb3RlX2JyYW5jaF9yZWYoKV0sIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3Qp
LnNwbGl0bGluZXMoKQogCiAgICAgZGVmIHJlYmFzZV9pbl9wcm9ncmVzcyhzZWxmKToKLSAgICAg
ICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmNoZWNrb3V0X3Jvb3Qs
ICcuZ2l0L3JlYmFzZS1hcHBseScpKQorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5l
eGlzdHMoc2VsZi5hYnNvbHV0ZV9wYXRoKCcuZ2l0JywgJ3JlYmFzZS1hcHBseScpKQogCiAgICAg
ZGVmIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKHNlbGYpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5ydW4oWydnaXQnLCAnZGlmZicsICdIRUFEJywgJy0tbmFtZS1vbmx5J10sIGN3ZD1zZWxmLmNo
ZWNrb3V0X3Jvb3QpID09ICIiCkBAIC0zMzQsNyArMzQwLDggQEAgY2xhc3MgR2l0KFNDTSwgU1ZO
UmVwb3NpdG9yeSk6CiAgICAgICAgICMgV2UgbWlnaHQgYmUgaW4gYSBkaXJlY3RvcnkgdGhhdCdz
IHByZXNlbnQgaW4gdGhpcyBicmFuY2ggYnV0IG5vdCBpbiB0aGUKICAgICAgICAgIyB0cnVuay4g
IE1vdmUgdXAgdG8gdGhlIHRvcCBvZiB0aGUgdHJlZSBzbyB0aGF0IGdpdCBjb21tYW5kcyB0aGF0
IGV4cGVjdCBhCiAgICAgICAgICMgdmFsaWQgQ1dEIHdvbid0IGZhaWwgYWZ0ZXIgd2UgY2hlY2sg
b3V0IHRoZSBtZXJnZSBicmFuY2guCi0gICAgICAgIG9zLmNoZGlyKHNlbGYuY2hlY2tvdXRfcm9v
dCkKKyAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIG5ldmVyIGJlIHVzaW5nIGNoZGlyISBXZSBj
YW4gaW5zdGVhZCBwYXNzIGN3ZD0gdG8gcnVuX2NvbW1hbmQvc2VsZi5ydW4hCisgICAgICAgIHNl
bGYuX2ZpbGVzeXN0ZW0uY2hkaXIoc2VsZi5jaGVja291dF9yb290KQogCiAgICAgICAgICMgU3R1
ZmYgb3VyIGNoYW5nZSBpbnRvIHRoZSBtZXJnZSBicmFuY2guCiAgICAgICAgICMgV2Ugd3JhcCBp
biBhIHRyeS4uLmZpbmFsbHkgYmxvY2sgc28gaWYgYW55dGhpbmcgZ29lcyB3cm9uZywgd2UgY2xl
YW4gdXAgdGhlIGJyYW5jaGVzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvc2NtL3NjbS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS9zY20ucHkKaW5kZXggYzRkOWFkYjRkMGZlMWJjMjFlNDcyN2FjMjBlYjJh
ZWFlOGRlYmI2Yi4uN2FhMGFjMDAzNmEyMjVkN2VmM2Y4YzRmYzA1OTM2NDJjNjhlYTc3MSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtLnB5
CkBAIC0zMCwxNCArMzAsMTEgQEAKICMgUHl0aG9uIG1vZHVsZSBmb3IgaW50ZXJhY3Rpbmcgd2l0
aCBhbiBTQ00gc3lzdGVtIChsaWtlIFNWTiBvciBHaXQpCiAKIGltcG9ydCBsb2dnaW5nCi1pbXBv
cnQgb3MKIGltcG9ydCByZQotaW1wb3J0IHN5cwotaW1wb3J0IHNodXRpbAogCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBlcnJvciwgbG9nCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNj
cmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG9zcGF0aAorZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KIAog
CiBjbGFzcyBDaGVja291dE5lZWRzVXBkYXRlKFNjcmlwdEVycm9yKToKQEAgLTYxLDExICs1OCwx
MiBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkVycm9yKEV4Y2VwdGlvbik6CiAKICMgU0NNIG1ldGhv
ZHMgYXJlIGV4cGVjdGVkIHRvIHJldHVybiBwYXRocyByZWxhdGl2ZSB0byBzZWxmLmNoZWNrb3V0
X3Jvb3QuCiBjbGFzcyBTQ006Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGN3ZCwgZXhlY3V0aXZl
PU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjd2QsIGV4ZWN1dGl2ZT1Ob25lLCBmaWxl
c3lzdGVtPU5vbmUpOgogICAgICAgICBzZWxmLmN3ZCA9IGN3ZAogICAgICAgICBzZWxmLmNoZWNr
b3V0X3Jvb3QgPSBzZWxmLmZpbmRfY2hlY2tvdXRfcm9vdChzZWxmLmN3ZCkKICAgICAgICAgc2Vs
Zi5kcnlydW4gPSBGYWxzZQogICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRpdmUgb3Ig
RXhlY3V0aXZlKCkKKyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0gb3IgRmls
ZVN5c3RlbSgpCiAKICAgICAjIEEgd3JhcHBlciB1c2VkIGJ5IHN1YmNsYXNzZXMgdG8gY3JlYXRl
IHByb2Nlc3Nlcy4KICAgICBkZWYgcnVuKHNlbGYsIGFyZ3MsIGN3ZD1Ob25lLCBpbnB1dD1Ob25l
LCBlcnJvcl9oYW5kbGVyPU5vbmUsIHJldHVybl9leGl0X2NvZGU9RmFsc2UsIHJldHVybl9zdGRl
cnI9VHJ1ZSwgZGVjb2RlX291dHB1dD1UcnVlKToKQEAgLTgxLDIxICs3OSwyMSBAQCBjbGFzcyBT
Q006CiAgICAgIyBTQ00gYWx3YXlzIHJldHVybnMgcmVwb3NpdG9yeSByZWxhdGl2ZSBwYXRoLCBi
dXQgc29tZXRpbWVzIHdlIG5lZWQKICAgICAjIGFic29sdXRlIHBhdGhzIHRvIHBhc3MgdG8gcm0s
IGV0Yy4KICAgICBkZWYgYWJzb2x1dGVfcGF0aChzZWxmLCByZXBvc2l0b3J5X3JlbGF0aXZlX3Bh
dGgpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuY2hlY2tvdXRfcm9vdCwgcmVw
b3NpdG9yeV9yZWxhdGl2ZV9wYXRoKQorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5q
b2luKHNlbGYuY2hlY2tvdXRfcm9vdCwgcmVwb3NpdG9yeV9yZWxhdGl2ZV9wYXRoKQogCiAgICAg
IyBGSVhNRTogVGhpcyBiZWxvbmdzIGluIENoZWNrb3V0LCBub3QgU0NNLgogICAgIGRlZiBzY3Jp
cHRzX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLmNo
ZWNrb3V0X3Jvb3QsICJUb29scyIsICJTY3JpcHRzIikKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Zp
bGVzeXN0ZW0uam9pbihzZWxmLmNoZWNrb3V0X3Jvb3QsICJUb29scyIsICJTY3JpcHRzIikKIAog
ICAgICMgRklYTUU6IFRoaXMgYmVsb25ncyBpbiBDaGVja291dCwgbm90IFNDTS4KICAgICBkZWYg
c2NyaXB0X3BhdGgoc2VsZiwgc2NyaXB0X25hbWUpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5q
b2luKHNlbGYuc2NyaXB0c19kaXJlY3RvcnkoKSwgc2NyaXB0X25hbWUpCisgICAgICAgIHJldHVy
biBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5zY3JpcHRzX2RpcmVjdG9yeSgpLCBzY3JpcHRf
bmFtZSkKIAogICAgIGRlZiBlbnN1cmVfY2xlYW5fd29ya2luZ19kaXJlY3Rvcnkoc2VsZiwgZm9y
Y2VfY2xlYW4pOgogICAgICAgICBpZiBzZWxmLndvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKCk6
CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgbm90IGZvcmNlX2NsZWFuOgotICAgICAg
ICAgICAgIyBGSVhNRTogU2hvdWxkbid0IHRoaXMgdXNlIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3Q/
CisgICAgICAgICAgICAjIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyB1c2UgY3dkPXNlbGYuY2hlY2tv
dXRfcm9vdD8gIChHaXQgZGVmaW5pdGVseSB3b3VsZCB3YW50IHRoYXQsIHVuY2xlYXIgaWYgU1ZO
IHdvdWxkLikKICAgICAgICAgICAgIHByaW50IHNlbGYucnVuKHNlbGYuc3RhdHVzX2NvbW1hbmQo
KSwgZXJyb3JfaGFuZGxlcj1FeGVjdXRpdmUuaWdub3JlX2Vycm9yKQogICAgICAgICAgICAgcmFp
c2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iV29ya2luZyBkaXJlY3RvcnkgaGFzIG1vZGlmaWNhdGlv
bnMsIHBhc3MgLS1mb3JjZS1jbGVhbiBvciAtLW5vLWNsZWFuIHRvIGNvbnRpbnVlLiIpCiAgICAg
ICAgIGxvZygiQ2xlYW5pbmcgd29ya2luZyBkaXJlY3RvcnkiKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkK
aW5kZXggMWI3MTU2NmMwNzFmZmNkMDNkZThlNDVjZmEwNTU4ZDdkYzNjODlmNy4uN2MyOGNiMjYy
NWU4NjFiMGE3NjE4ZTQzOWIxNWUxMTRhNTBmZGQxOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CkBA
IC00OSw3ICs0OSw3IEBAIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUKIGZyb20gd2Via2l0cHku
Y29tbW9uLmNoZWNrb3V0LmNoZWNrb3V0IGltcG9ydCBDaGVja291dAogZnJvbSB3ZWJraXRweS5j
b21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlciAgIyBGSVhNRTogVGhpcyBz
aG91bGQgbm90IGJlIG5lZWRlZAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGlt
cG9ydCBBdHRhY2htZW50ICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQKLWZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgcnVuX2Nv
bW1hbmQsIFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZl
IGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50b29s
Lm1vY2t0b29sIGltcG9ydCBNb2NrRXhlY3V0aXZlCiAKQEAgLTc5LDYgKzc5LDEzIEBAIGRlZiBk
ZWxldGVfY2FjaGVkX21vY2tfcmVwb19hdF9leGl0KCk6CiAjIEV2ZW50dWFsbHkgd2Ugd2lsbCB3
YW50IHRvIHdyaXRlIHRlc3RzIHdoaWNoIHdvcmsgZm9yIGJvdGggc2Ntcy4gKGxpa2UgdXBkYXRl
X3dlYmtpdCwgY2hhbmdlZF9maWxlcywgZXRjLikKICMgUGVyaGFwcyB0aHJvdWdoIHNvbWUgU0NN
VGVzdCBiYXNlLWNsYXNzIHdoaWNoIGJvdGggU1ZOVGVzdCBhbmQgR2l0VGVzdCBpbmhlcml0IGZy
b20uCiAKKworZGVmIHJ1bl9jb21tYW5kKCphcmdzLCAqKmt3YXJncyk6CisgICAgIyBGSVhNRTog
VGhpcyBzaG91bGQgbm90IGJlIGEgZ2xvYmFsIHN0YXRpYy4KKyAgICAjIE5ldyBjb2RlIHNob3Vs
ZCB1c2UgRXhlY3V0aXZlLnJ1bl9jb21tYW5kIGRpcmVjdGx5IGluc3RlYWQKKyAgICByZXR1cm4g
RXhlY3V0aXZlKCkucnVuX2NvbW1hbmQoKmFyZ3MsICoqa3dhcmdzKQorCisKICMgRklYTUU6IFRo
aXMgc2hvdWxkIGJlIHVuaWZpZWQgaW50byBvbmUgb2YgdGhlIGV4ZWN1dGl2ZS5weSBjb21tYW5k
cyEKICMgQ2FsbGVycyBjb3VsZCB1c2UgcnVuX2FuZF90aHJvd19pZl9mYWlsKGFyZ3MsIGN3ZD1j
d2QsIHF1aWV0PVRydWUpCiBkZWYgcnVuX3NpbGVudChhcmdzLCBjd2Q9Tm9uZSk6CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weQppbmRleCA3
Y2RhMjU2MDM4NmJkZjZmYmQ1ODBlOGFkMjE5MmYxZTFjYTgwNzVhLi5jYTkwNGMyZDg4MzBiZTgx
ZWUwNjA3YjFhM2Y3NDM2ZjhmOTRhMjgwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHkKQEAgLTM1LDcgKzM1LDcgQEAgaW1wb3J0IHN5
cwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxvZwotZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBydW5f
Y29tbWFuZCwgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbSBpbXBvcnQgb3NwYXRoCiAKIGZyb20gLnNjbSBpbXBvcnQgQXV0aGVudGljYXRpb25FcnJv
ciwgU0NNLCBjb21taXRfZXJyb3JfaGFuZGxlcgpAQCAtOTIsOCArOTIsOCBAQCBjbGFzcyBTVk4o
U0NNLCBTVk5SZXBvc2l0b3J5KToKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdmFsdWVfZnJv
bV9zdm5faW5mbyhjbHMsIHBhdGgsIGZpZWxkX25hbWUpOgogICAgICAgICBzdm5faW5mb19hcmdz
ID0gWydzdm4nLCAnaW5mbycsIHBhdGhdCi0gICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHVz
ZSBhbiBFeGVjdXRpdmUuCi0gICAgICAgIGluZm9fb3V0cHV0ID0gcnVuX2NvbW1hbmQoc3ZuX2lu
Zm9fYXJncykucnN0cmlwKCkKKyAgICAgICAgIyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIHVz
ZSBhIHBhc3NlZCBpbiBleGVjdXRpdmUgb3IgYmUgbWFkZSBhbiBpbnN0YW5jZSBtZXRob2QgYW5k
IHVzZSBzZWxmLl9leGVjdXRpdmUuCisgICAgICAgIGluZm9fb3V0cHV0ID0gRXhlY3V0aXZlKCku
cnVuX2NvbW1hbmQoc3ZuX2luZm9fYXJncykucnN0cmlwKCkKICAgICAgICAgbWF0Y2ggPSByZS5z
ZWFyY2goIl4lczogKD9QPHZhbHVlPi4rKSQiICUgZmllbGRfbmFtZSwgaW5mb19vdXRwdXQsIHJl
Lk1VTFRJTElORSkKICAgICAgICAgaWYgbm90IG1hdGNoOgogICAgICAgICAgICAgcmFpc2UgU2Ny
aXB0RXJyb3Ioc2NyaXB0X2FyZ3M9c3ZuX2luZm9fYXJncywgbWVzc2FnZT0nc3ZuIGluZm8gZGlk
IG5vdCBjb250YWluIGEgJXMuJyAlIGZpZWxkX25hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weQppbmRleCA4NWFhOGEzMTgzZDcyNzFj
YTMzNDEyMjc0ZjkyNTBkYWU4MDQwM2U3Li41NzcwMjRmOTNlZTE5YzE3NDUxY2U4NDRhMzcyMTUz
ZDA0NGMyMzM1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZXhlY3V0aXZlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9leGVjdXRpdmUucHkKQEAgLTk2LDEyICs5Niw2IEBAIGNsYXNzIFNjcmlwdEVycm9yKEV4Y2Vw
dGlvbik6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmJhc2VuYW1lKGNvbW1hbmRfcGF0aCkKIAog
Ci1kZWYgcnVuX2NvbW1hbmQoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAjIEZJWE1FOiBUaGlzIHNo
b3VsZCBub3QgYmUgYSBnbG9iYWwgc3RhdGljLgotICAgICMgTmV3IGNvZGUgc2hvdWxkIHVzZSBF
eGVjdXRpdmUucnVuX2NvbW1hbmQgZGlyZWN0bHkgaW5zdGVhZAotICAgIHJldHVybiBFeGVjdXRp
dmUoKS5ydW5fY29tbWFuZCgqYXJncywgKiprd2FyZ3MpCi0KLQogY2xhc3MgRXhlY3V0aXZlKG9i
amVjdCk6CiAgICAgUElQRSA9IHN1YnByb2Nlc3MuUElQRQogICAgIFNURE9VVCA9IHN1YnByb2Nl
c3MuU1RET1VUCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZXhlY3V0aXZlX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5weQppbmRleCAyOGQxMmMyNDBiYzg2YWU0ZTQ5MTBi
MWU5YTA3MDE4YzFlNWE5OGYxLi5hMDg3OGY5Y2U4M2EyNjRjMWYwYjRmNTQ5ZThjZWQ3YzI4YTcx
NmYwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhl
Y3V0aXZlX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9leGVjdXRpdmVfdW5pdHRlc3QucHkKQEAgLTMzLDcgKzMzLDcgQEAgaW1wb3J0IHN1YnBy
b2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIHJ1bl9jb21tYW5kLCBTY3JpcHRF
cnJvcgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0
aXZlLCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1f
bW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkudGVzdCBpbXBvcnQgY2F0
LCBlY2hvCiAKQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgRXhlY3V0aXZlVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9ydW5fY29tbWFuZF93aXRoX2JhZF9jb21tYW5kKHNl
bGYpOgogICAgICAgICBkZWYgcnVuX2JhZF9jb21tYW5kKCk6Ci0gICAgICAgICAgICBydW5fY29t
bWFuZChbImZvb19iYXJfY29tbWFuZF9ibGFoIl0sIGVycm9yX2hhbmRsZXI9RXhlY3V0aXZlLmln
bm9yZV9lcnJvciwgcmV0dXJuX2V4aXRfY29kZT1UcnVlKQorICAgICAgICAgICAgRXhlY3V0aXZl
KCkucnVuX2NvbW1hbmQoWyJmb29fYmFyX2NvbW1hbmRfYmxhaCJdLCBlcnJvcl9oYW5kbGVyPUV4
ZWN1dGl2ZS5pZ25vcmVfZXJyb3IsIHJldHVybl9leGl0X2NvZGU9VHJ1ZSkKICAgICAgICAgc2Vs
Zi5mYWlsVW5sZXNzUmFpc2VzKE9TRXJyb3IsIHJ1bl9iYWRfY29tbWFuZCkKIAogICAgIGRlZiB0
ZXN0X3J1bl9jb21tYW5kX2FyZ3NfdHlwZShzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNf
dW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxp
bmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IDg3NDkwNWUzNDE0MTBh
MDgxZGUzYjBjNTQ4MjBjOTFmZDEzMDA2NTEuLmZkZjI1YmYzYWI2NjJkZDY3NjAwZTdlNmI0MjBm
NWNmZjM3OTY2NDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92
ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtp
dF90ZXN0c191bml0dGVzdC5weQpAQCAtMzU5LDYgKzM1OSw3IEBAIGNsYXNzIFRlc3RSZWFsTWFp
bih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICMgKikgMiBmaWxlcyBpbiAvdG1wIGZvciB0
aGUgdGV4dCBkaWZmcyBmb3IgdGhlIHR3byBwb3J0cwogICAgICAgICAjICopIDIgZmlsZXMgaW4g
L3RtcCBmb3IgdGhlIGltYWdlIGRpZmZzIGZvciB0aGUgdHdvIHBvcnRzCiAgICAgICAgICMgKikg
MSBmaWxlIGluIC90bXAgZm9yIHRoZSByZWJhc2VsaW5lIHJlc3VsdHMgaHRtbCBmaWxlCisgICAg
ICAgICMgRklYTUU6IFRoZXNlIG51bWJlcnMgZGVwZW5kIG9uIE1vY2tTQ00uZXhpc3RzKCkgcmV0
dXJuaW5nIFRydWUgZm9yIGFsbCBmaWxlcy4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMs
IDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZpbGVzeXN0ZW0ud3JpdHRlbl9maWxl
cyksIDM4KQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rv
b2wucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKaW5kZXggYTg1
YjZmNmRlYjY3NmMxYTdlYzVkNzhhNDliZDEzMmI1YzY3MDhkYS4uMjc1Yjc5ZGQxZTFmMTQxNDY1
NWIyMjkxNGYzMmE3YjQ5YjdhOTc0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL21vY2t0b29sLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2Nr
dG9vbC5weQpAQCAtMjcsNiArMjcsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgb3MKK2lt
cG9ydCBTdHJpbmdJTwogaW1wb3J0IHRocmVhZGluZwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5j
b25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdCwgUmV2aWV3ZXIKQEAgLTM2LDcg
KzM3LDYgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBCdWcsIEF0
dGFjaG1lbnQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcg
aW1wb3J0IGxvZwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQg
U2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sg
aW1wb3J0IE1vY2tGaWxlU3lzdGVtCi1mcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBv
cnQgTW9jawogCiAKIGRlZiBfaWRfdG9fb2JqZWN0X2RpY3Rpb25hcnkoKm9iamVjdHMpOgpAQCAt
MjA3LDExICsyMDcsOSBAQCBfYnVnNSA9IHsKIH0KIAogCi0jIEZJWE1FOiBUaGlzIHNob3VsZCBu
b3QgaW5oZXJpdCBmcm9tIE1vY2sKLWNsYXNzIE1vY2tCdWd6aWxsYVF1ZXJpZXMoTW9jayk6Citj
bGFzcyBNb2NrQnVnemlsbGFRdWVyaWVzKG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgYnVnemlsbGEpOgotICAgICAgICBNb2NrLl9faW5pdF9fKHNlbGYpCiAgICAgICAgIHNlbGYu
X2J1Z3ppbGxhID0gYnVnemlsbGEKIAogICAgIGRlZiBfYWxsX2J1Z3Moc2VsZik6CkBAIC0yNDgs
MTQgKzI0NiwxNCBAQCBjbGFzcyBNb2NrQnVnemlsbGFRdWVyaWVzKE1vY2spOgogICAgIGRlZiBm
ZXRjaF9idWdzX21hdGNoaW5nX3NlYXJjaChzZWxmLCBzZWFyY2hfc3RyaW5nLCBhdXRob3JfZW1h
aWw9Tm9uZSk6CiAgICAgICAgIHJldHVybiBbc2VsZi5fYnVnemlsbGEuZmV0Y2hfYnVnKDc4KSwg
c2VsZi5fYnVnemlsbGEuZmV0Y2hfYnVnKDc3KV0KIAorCiBfbW9ja19yZXZpZXdlciA9IFJldmll
d2VyKCJGb28gQmFyIiwgImZvb0BiYXIuY29tIikKIAogCiAjIEZJWE1FOiBCdWd6aWxsYSBpcyB0
aGUgd3JvbmcgTW9jay1wb2ludC4gIE9uY2Ugd2UgaGF2ZSBhIEJ1Z3ppbGxhTmV0d29yawogIyAg
ICAgICAgY2xhc3Mgd2Ugc2hvdWxkIG1vY2sgdGhhdCBpbnN0ZWFkLgogIyBNb3N0IG9mIHRoaXMg
Y2xhc3MgaXMganVzdCBjb3B5L3Bhc3RlIGZyb20gQnVnemlsbGEuCi0jIEZJWE1FOiBUaGlzIHNo
b3VsZCBub3QgaW5oZXJpdCBmcm9tIE1vY2sKLWNsYXNzIE1vY2tCdWd6aWxsYShNb2NrKToKK2Ns
YXNzIE1vY2tCdWd6aWxsYShvYmplY3QpOgogCiAgICAgYnVnX3NlcnZlcl91cmwgPSAiaHR0cDov
L2V4YW1wbGUuY29tIgogCkBAIC0yNzAsNyArMjY4LDYgQEAgY2xhc3MgTW9ja0J1Z3ppbGxhKE1v
Y2spOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Bh
dGNoNykKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgTW9jay5fX2luaXRfXyhz
ZWxmKQogICAgICAgICBzZWxmLnF1ZXJpZXMgPSBNb2NrQnVnemlsbGFRdWVyaWVzKHNlbGYpCiAg
ICAgICAgIHNlbGYuY29tbWl0dGVycyA9IENvbW1pdHRlckxpc3QocmV2aWV3ZXJzPVtfbW9ja19y
ZXZpZXdlcl0pCiAgICAgICAgIHNlbGYuX292ZXJyaWRlX3BhdGNoID0gTm9uZQpAQCAtMzc3LDYg
KzM3NCwyMSBAQCBjbGFzcyBNb2NrQnVnemlsbGEoTW9jayk6CiAgICAgICAgICAgICBsb2coY29t
bWVudF90ZXh0KQogICAgICAgICAgICAgbG9nKCItLSBFbmQgY29tbWVudCAtLSIpCiAKKyAgICBk
ZWYgYWRkX2NjX3RvX2J1ZyhzZWxmLCBidWdfaWQsIGNjcyk6CisgICAgICAgIHBhc3MKKworICAg
IGRlZiBvYnNvbGV0ZV9hdHRhY2htZW50KHNlbGYsIGF0dGFjaG1lbnRfaWQsIG1lc3NhZ2U9Tm9u
ZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiByZW9wZW5fYnVnKHNlbGYsIGJ1Z19pZCwgbWVz
c2FnZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBjbG9zZV9idWdfYXNfZml4ZWQoc2VsZiwg
YnVnX2lkLCBtZXNzYWdlKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGNsZWFyX2F0dGFjaG1l
bnRfZmxhZ3Moc2VsZiwgYXR0YWNobWVudF9pZCwgbWVzc2FnZSk6CisgICAgICAgIHBhc3MKKwog
CiBjbGFzcyBNb2NrQnVpbGRlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1l
KToKQEAgLTQ2MywyNSArNDc1LDQxIEBAIGNsYXNzIE1vY2tCdWlsZEJvdChvYmplY3QpOgogICAg
ICAgICByZXR1cm4gTW9ja0ZhaWx1cmVNYXAoc2VsZikKIAogCi0jIEZJWE1FOiBUaGlzIHNob3Vs
ZCBub3QgaW5oZXJpdCBmcm9tIE1vY2sKLWNsYXNzIE1vY2tTQ00oTW9jayk6CitjbGFzcyBNb2Nr
U0NNKG9iamVjdCk6CiAKICAgICBmYWtlX2NoZWNrb3V0X3Jvb3QgPSBvcy5wYXRoLnJlYWxwYXRo
KCIvdG1wIikgIyByZWFscGF0aCBpcyBuZWVkZWQgdG8gYWxsb3cgZm9yIE1hYyBPUyBYJ3MgL3By
aXZhdGUvdG1wCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZXN5c3RlbT1Ob25lKToKLSAg
ICAgICAgTW9jay5fX2luaXRfXyhzZWxmKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlc3lz
dGVtPU5vbmUsIGV4ZWN1dGl2ZT1Ob25lKToKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHBy
b2JhYmx5IHVzZSByZWFsIGNoZWNrb3V0LXJvb3QgZGV0ZWN0aW9uIGxvZ2ljIGhlcmUuCiAgICAg
ICAgICMgb3MuZ2V0Y3dkKCkgY2FuJ3Qgd29yayBoZXJlIGJlY2F1c2Ugb3RoZXIgcGFydHMgb2Yg
dGhlIGNvZGUgYXNzdW1lIHRoYXQgImNoZWNrb3V0X3Jvb3QiCiAgICAgICAgICMgd2lsbCBhY3R1
YWxseSBiZSB0aGUgcm9vdC4gIFNpbmNlIGdldGN3ZCgpIGlzIHdyb25nLCB1c2UgYSBnbG9iYWxs
eSBmYWtlIHJvb3QgZm9yIG5vdy4KICAgICAgICAgc2VsZi5jaGVja291dF9yb290ID0gc2VsZi5m
YWtlX2NoZWNrb3V0X3Jvb3QKICAgICAgICAgc2VsZi5hZGRlZF9wYXRocyA9IHNldCgpCi0gICAg
ICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0
ZW0gPSBmaWxlc3lzdGVtIG9yIE1vY2tGaWxlU3lzdGVtKCkKKyAgICAgICAgc2VsZi5fZXhlY3V0
aXZlID0gZXhlY3V0aXZlIG9yIE1vY2tFeGVjdXRpdmUoKQogCiAgICAgZGVmIGFkZChzZWxmLCBk
ZXN0aW5hdGlvbl9wYXRoLCByZXR1cm5fZXhpdF9jb2RlPUZhbHNlKToKICAgICAgICAgc2VsZi5h
ZGRlZF9wYXRocy5hZGQoZGVzdGluYXRpb25fcGF0aCkKICAgICAgICAgaWYgcmV0dXJuX2V4aXRf
Y29kZToKICAgICAgICAgICAgIHJldHVybiAwCiAKKyAgICBkZWYgZW5zdXJlX2NsZWFuX3dvcmtp
bmdfZGlyZWN0b3J5KHNlbGYsIGZvcmNlX2NsZWFuKToKKyAgICAgICAgcGFzcworCisgICAgZGVm
IHN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAg
ICBkZWYgZW5zdXJlX25vX2xvY2FsX2NvbW1pdHMoc2VsZiwgZm9yY2VfY2xlYW4pOgorICAgICAg
ICBwYXNzCisKKyAgICBkZWYgZXhpc3RzKHNlbGYsIHBhdGgpOgorICAgICAgICAjIFRlc3RSZWFs
TWFpbi50ZXN0X3JlYWxfbWFpbiAoYW5kIHNldmVyYWwgb3RoZXIgcmViYXNlbGluZSB0ZXN0cykg
YXJlIHNlbnNpdGl2ZSB0byB0aGlzIHJldHVybiB2YWx1ZS4KKyAgICAgICAgIyBXZSBzaG91bGQg
bWFrZSB0aG9zZSB0ZXN0cyBtb3JlIHJvYnVzdCwgYnV0IGZvciBub3cgd2UganVzdCByZXR1cm4g
VHJ1ZSBhbHdheXMgKHNpbmNlIG5vIHRlc3QgbmVlZHMgb3RoZXJ3aXNlKS4KKyAgICAgICAgcmV0
dXJuIFRydWUKKworICAgIGRlZiBhYnNvbHV0ZV9wYXRoKHNlbGYsICpjb21wcyk6CisgICAgICAg
IHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5jaGVja291dF9yb290LCAqY29tcHMp
CisKICAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgogICAgICAg
ICByZXR1cm4gWyJNb2NrRmlsZTEiXQogCkBAIC00OTEsNiArNTE5LDE4IEBAIGNsYXNzIE1vY2tT
Q00oTW9jayk6CiAgICAgZGVmIGNvbW1pdF9pZHNfZnJvbV9jb21taXRpc2hfYXJndW1lbnRzKHNl
bGYsIGFyZ3MpOgogICAgICAgICByZXR1cm4gWyJDb21taXRpc2gxIiwgIkNvbW1pdGlzaDIiXQog
CisgICAgZGVmIGNvbW1pdHRlcl9lbWFpbF9mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgor
ICAgICAgICByZXR1cm4gIm1vY2tAd2Via2l0Lm9yZyIKKworICAgIGRlZiBjb21taXRfbG9jYWxs
eV93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBj
b21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIHBhc3N3b3Jk
PU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgZm9yY2Vfc3F1YXNoPUZhbHNlLCBjaGFuZ2VkX2ZpbGVz
PU5vbmUpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgbWVyZ2VfYmFzZShzZWxmLCBnaXRfY29t
bWl0KToKKyAgICAgICAgcmV0dXJuIE5vbmUKKwogICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3Jf
bG9jYWxfY29tbWl0KHNlbGYsIGNvbW1pdF9pZCk6CiAgICAgICAgIGlmIGNvbW1pdF9pZCA9PSAi
Q29tbWl0aXNoMSI6CiAgICAgICAgICAgICByZXR1cm4gQ29tbWl0TWVzc2FnZSgiQ29tbWl0TWVz
c2FnZTFcbiIgXApAQCAtNTA0LDggKzU0NCw3IEBAIGNsYXNzIE1vY2tTQ00oTW9jayk6CiAgICAg
ICAgIHJldHVybiBwYXRoICsgJy1kaWZmJwogCiAgICAgZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNl
bGYsIHJldmlzaW9uKToKLSAgICAgICAgcmV0dXJuICJEaWZmRm9yUmV2aXNpb24lc1xuIiBcCi0g
ICAgICAgICAgICAgICAiaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIz
NDUiICUgcmV2aXNpb24KKyAgICAgICAgcmV0dXJuICJEaWZmRm9yUmV2aXNpb24lc1xuaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDUiICUgcmV2aXNpb24KIAogICAg
IGRlZiBzaG93X2hlYWQoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBwYXRoCkBAIC01Mjgs
NiArNTY3LDEwIEBAIGNsYXNzIE1vY2tERVBTKG9iamVjdCk6CiAgICAgICAgIGxvZygiTU9DSzog
TW9ja0RFUFMud3JpdGVfdmFyaWFibGUoJXMsICVzKSIgJSAobmFtZSwgdmFsdWUpKQogCiAKK2Ns
YXNzIE1vY2tDb21taXRNZXNzYWdlKG9iamVjdCk6CisgICAgZGVmIG1lc3NhZ2Uoc2VsZik6Cisg
ICAgICAgIHJldHVybiAiVGhpcyBpcyBhIGZha2UgY29tbWl0IG1lc3NhZ2UgdGhhdCBpcyBhdCBs
ZWFzdCA1MCBjaGFyYWN0ZXJzLiIKKwogY2xhc3MgTW9ja0NoZWNrb3V0KG9iamVjdCk6CiAKICAg
ICBfY29tbWl0dGVyX2xpc3QgPSBDb21taXR0ZXJMaXN0KCkKQEAgLTU2MCw5ICs2MDMsNyBAQCBj
bGFzcyBNb2NrQ2hlY2tvdXQob2JqZWN0KToKICAgICAgICAgcmV0dXJuIFtdCiAKICAgICBkZWYg
Y29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdpdF9jb21taXQsIGNoYW5nZWRf
ZmlsZXM9Tm9uZSk6Ci0gICAgICAgIGNvbW1pdF9tZXNzYWdlID0gTW9jaygpCi0gICAgICAgIGNv
bW1pdF9tZXNzYWdlLm1lc3NhZ2UgPSBsYW1iZGE6IlRoaXMgaXMgYSBmYWtlIGNvbW1pdCBtZXNz
YWdlIHRoYXQgaXMgYXQgbGVhc3QgNTAgY2hhcmFjdGVycy4iCi0gICAgICAgIHJldHVybiBjb21t
aXRfbWVzc2FnZQorICAgICAgICByZXR1cm4gTW9ja0NvbW1pdE1lc3NhZ2UoKQogCiAgICAgZGVm
IGNocm9taXVtX2RlcHMoc2VsZik6CiAgICAgICAgIHJldHVybiBNb2NrREVQUygpCkBAIC02NjIs
OSArNzAzLDggQEAgY2xhc3MgTW9ja1N0YXR1c1NlcnZlcihvYmplY3QpOgogICAgICAgICByZXR1
cm4gImh0dHA6Ly9kdW1teV91cmwiCiAKIAotIyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGluaGVy
aXQgZnJvbSBNb2NrCiAjIEZJWE1FOiBVbmlmeSB3aXRoIGNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZl
X21vY2suTW9ja0V4ZWN1dGl2ZS4KLWNsYXNzIE1vY2tFeGVjdXRpdmUoTW9jayk6CitjbGFzcyBN
b2NrRXhlY3V0aXZlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNob3VsZF9sb2c9
RmFsc2UsIHNob3VsZF90aHJvdz1GYWxzZSk6CiAgICAgICAgIHNlbGYuX3Nob3VsZF9sb2cgPSBz
aG91bGRfbG9nCiAgICAgICAgIHNlbGYuX3Nob3VsZF90aHJvdyA9IHNob3VsZF90aHJvdwpAQCAt
NzAyLDcgKzc0Miw3IEBAIGNsYXNzIE1vY2tPcHRpb25zKG9iamVjdCk6CiAgICAgICAgICAgICBz
ZWxmLl9fZGljdF9fW2tleV0gPSB2YWx1ZQogCiAKLWNsYXNzIE1vY2tQb3J0KE1vY2spOgorY2xh
c3MgTW9ja1BvcnQob2JqZWN0KToKICAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJu
ICJNb2NrUG9ydCIKIApAQCAtNzE1LDYgKzc1NSwyNyBAQCBjbGFzcyBNb2NrUG9ydChNb2NrKToK
ICAgICBkZWYgdXBkYXRlX3dlYmtpdF9jb21tYW5kKHNlbGYpOgogICAgICAgICByZXR1cm4gWyJt
b2NrLXVwZGF0ZS13ZWJraXQiXQogCisgICAgZGVmIGJ1aWxkX3dlYmtpdF9jb21tYW5kKHNlbGYs
IGJ1aWxkX3N0eWxlPU5vbmUpOgorICAgICAgICByZXR1cm4gWyJtb2NrLWJ1aWxkLXdlYmtpdCJd
CisKKyAgICBkZWYgcnVuX2JpbmRpbmdzX3Rlc3RzX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJl
dHVybiBbIm1vY2stcnVuLWJpbmRpbmdzLXRlc3RzIl0KKworICAgIGRlZiBwcmVwYXJlX2NoYW5n
ZWxvZ19jb21tYW5kKHNlbGYpOgorICAgICAgICByZXR1cm4gWydtb2NrLXByZXBhcmUtQ2hhbmdl
TG9nJ10KKworICAgIGRlZiBydW5fcHl0aG9uX3VuaXR0ZXN0c19jb21tYW5kKHNlbGYpOgorICAg
ICAgICByZXR1cm4gWydtb2NrLXRlc3Qtd2Via2l0cHknXQorCisgICAgZGVmIHJ1bl9wZXJsX3Vu
aXR0ZXN0c19jb21tYW5kKHNlbGYpOgorICAgICAgICByZXR1cm4gWydtb2NrLXRlc3Qtd2Via2l0
cGVybCddCisKKyAgICBkZWYgcnVuX2phdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1hbmQoc2VsZik6
CisgICAgICAgIHJldHVybiBbJ21vY2stcnVuLWphdmFjcmlwdGNvcmUtdGVzdHMnXQorCisgICAg
ZGVmIHJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZChzZWxmKToKKyAgICAgICAgcmV0dXJuIFsnbW9j
ay1ydW4td2Via2l0LXRlc3RzJ10KKwogCiBjbGFzcyBNb2NrVGVzdFBvcnQxKG9iamVjdCk6CiAK
QEAgLTc2MCwxMSArODIxLDEzIEBAIGNsYXNzIE1vY2tUb29sKG9iamVjdCk6CiAgICAgICAgIHNl
bGYuYnVpbGRib3QgPSBNb2NrQnVpbGRCb3QoKQogICAgICAgICBzZWxmLmV4ZWN1dGl2ZSA9IE1v
Y2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1sb2dfZXhlY3V0aXZlKQogICAgICAgICBzZWxmLndlYiA9
IE1vY2tXZWIoKQotICAgICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSgpCiAg
ICAgICAgIHNlbGYud29ya3NwYWNlID0gTW9ja1dvcmtzcGFjZSgpCiAgICAgICAgIHNlbGYuX2ly
YyA9IE5vbmUKICAgICAgICAgc2VsZi51c2VyID0gTW9ja1VzZXIoKQogICAgICAgICBzZWxmLl9z
Y20gPSBNb2NrU0NNKCkKKyAgICAgICAgIyBWYXJpb3VzIHBpZWNlcyBvZiBjb2RlICh3cm9uZ2x5
KSBjYWxsIGZpbGVzeXN0ZW0uY2hkaXIoY2hlY2tvdXRfcm9vdCkuCisgICAgICAgICMgTWFraW5n
IHRoZSBjaGVja291dF9yb290IGV4aXN0IGluIHRoZSBtb2NrIGZpbGVzeXN0ZW0gbWFrZXMgdGhh
dCBjaGRpciBub3QgcmFpc2UuCisgICAgICAgIHNlbGYuZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lz
dGVtKGRpcnM9c2V0KFtzZWxmLl9zY20uY2hlY2tvdXRfcm9vdF0pKQogICAgICAgICBzZWxmLl9w
b3J0ID0gTW9ja1BvcnQoKQogICAgICAgICBzZWxmLl9jaGVja291dCA9IE1vY2tDaGVja291dCgp
CiAgICAgICAgIHNlbGYuc3RhdHVzX3NlcnZlciA9IE1vY2tTdGF0dXNTZXJ2ZXIoKQpAQCAtODA1
LDQgKzg2OCw0IEBAIGNsYXNzIE1vY2tCcm93c2VyKG9iamVjdCk6CiAgICAgICAgIHNlbGYucGFy
YW1zW2tleV0gPSB2YWx1ZQogCiAgICAgZGVmIHN1Ym1pdChzZWxmKToKLSAgICAgICAgcmV0dXJu
IE1vY2soZmlsZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZ0lPLlN0cmluZ0lPKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jbGVhbndvcmtpbmdkaXJlY3Rv
cnkucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGly
ZWN0b3J5LnB5CmluZGV4IGExNjVkZDIxZjk4ZDA4OTE0NmFhYmFhOTNiMDA2OGZkZGRhZWRmNDgu
LjI3YzUzNjM2MTlkYzgzYjYwMjI0MmYxY2IxZDBmZWE4MGQzNTlmOTcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jbGVhbndvcmtpbmdkaXJlY3RvcnkucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NsZWFud29ya2luZ2RpcmVj
dG9yeS5weQpAQCAtNDcsMTAgKzQ3LDYgQEAgY2xhc3MgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5KEFi
c3RyYWN0U3RlcCk6CiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAgIGlmIG5vdCBz
ZWxmLl9vcHRpb25zLmNsZWFuOgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICMgRklYTUU6
IFRoaXMgY2hkaXIgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgYW5kIGNhbiBiZSByZW1vdmVkIGFz
Ci0gICAgICAgICMgc29vbiBhcyBlbnN1cmVfbm9fbG9jYWxfY29tbWl0cyBhbmQgZW5zdXJlX2Ns
ZWFuX3dvcmtpbmdfZGlyZWN0b3J5Ci0gICAgICAgICMgYXJlIGtub3duIHRvIHNldCB0aGUgQ1dE
IHRvIGNoZWNrb3V0X3Jvb3Qgd2hlbiBjYWxsaW5nIHJ1bl9jb21tYW5kLgotICAgICAgICBvcy5j
aGRpcihzZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCiAgICAgICAgIGlmIG5vdCBzZWxm
Ll9hbGxvd19sb2NhbF9jb21taXRzOgogICAgICAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5lbnN1
cmVfbm9fbG9jYWxfY29tbWl0cyhzZWxmLl9vcHRpb25zLmZvcmNlX2NsZWFuKQogICAgICAgICBz
ZWxmLl90b29sLnNjbSgpLmVuc3VyZV9jbGVhbl93b3JraW5nX2RpcmVjdG9yeShmb3JjZV9jbGVh
bj1zZWxmLl9vcHRpb25zLmZvcmNlX2NsZWFuKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9yeV91bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jbGVhbndvcmtpbmdkaXJlY3RvcnlfdW5p
dHRlc3QucHkKaW5kZXggMzZhM2QyYjc2NThmOWZlZjJjMDg1NmRjOTRmMmJjMDcyNDk1NzAzNS4u
ODQzMTE2ODQ2NGE4ZTkyYWU0NGQ4Mjg2NGU4ZmY1Njc3OWYyN2NjNCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9yeV91bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3Jr
aW5nZGlyZWN0b3J5X3VuaXR0ZXN0LnB5CkBAIC0zNiw2ICszNiw4IEBAIGZyb20gd2Via2l0cHku
dG9vbC5zdGVwcy5jbGVhbndvcmtpbmdkaXJlY3RvcnkgaW1wb3J0IENsZWFuV29ya2luZ0RpcmVj
dG9yeQogY2xhc3MgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgZGVmIHRlc3RfcnVuKHNlbGYpOgogICAgICAgICB0b29sID0gTW9ja1Rvb2woKQorICAg
ICAgICB0b29sLl9zY20gPSBNb2NrKCkKKyAgICAgICAgdG9vbC5fc2NtLmNoZWNrb3V0X3Jvb3Qg
PSAnL21vY2snCiAgICAgICAgIHN0ZXAgPSBDbGVhbldvcmtpbmdEaXJlY3RvcnkodG9vbCwgTW9j
a09wdGlvbnMoY2xlYW49VHJ1ZSwgZm9yY2VfY2xlYW49RmFsc2UpKQogICAgICAgICBzdGVwLnJ1
bih7fSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b29sLl9zY20uZW5zdXJlX25vX2xvY2Fs
X2NvbW1pdHMuY2FsbF9jb3VudCwgMSkKQEAgLTQzLDYgKzQ1LDcgQEAgY2xhc3MgQ2xlYW5Xb3Jr
aW5nRGlyZWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9ub19j
bGVhbihzZWxmKToKICAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKKyAgICAgICAgdG9vbC5fc2Nt
ID0gTW9jaygpCiAgICAgICAgIHN0ZXAgPSBDbGVhbldvcmtpbmdEaXJlY3RvcnkodG9vbCwgTW9j
a09wdGlvbnMoY2xlYW49RmFsc2UpKQogICAgICAgICBzdGVwLnJ1bih7fSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh0b29sLl9zY20uZW5zdXJlX25vX2xvY2FsX2NvbW1pdHMuY2FsbF9jb3Vu
dCwgMCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9lbnN1
cmVsb2NhbGNvbW1pdGlmbmVlZGVkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL2Vuc3VyZWxvY2FsY29tbWl0aWZuZWVkZWQucHkKaW5kZXggZDBjZGE0NjAyMGExY2JjN2I1
M2ViZGI5MDhmNjY1MTE0NjE4NDYyMS4uMjE2NzM1MWUyODI0ZjU3OGRiYWMyMTE5Yjg1ZDRmNTRm
MzkyNTI3NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Vu
c3VyZWxvY2FsY29tbWl0aWZuZWVkZWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL2Vuc3VyZWxvY2FsY29tbWl0aWZuZWVkZWQucHkKQEAgLTQwLDQgKzQwLDQgQEAg
Y2xhc3MgRW5zdXJlTG9jYWxDb21taXRJZk5lZWRlZChBYnN0cmFjdFN0ZXApOgogCiAgICAgZGVm
IHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMubG9jYWxfY29tbWl0
IGFuZCBub3Qgc2VsZi5fdG9vbC5zY20oKS5zdXBwb3J0c19sb2NhbF9jb21taXRzKCk6Ci0gICAg
ICAgICAgICBlcnJvcigiLS1sb2NhbC1jb21taXQgcGFzc2VkLCBidXQgJXMgZG9lcyBub3Qgc3Vw
cG9ydCBsb2NhbCBjb21taXRzIiAlIHNlbGYuX3Rvb2wuc2NtLmRpc3BsYXlfbmFtZSgpKQorICAg
ICAgICAgICAgZXJyb3IoIi0tbG9jYWwtY29tbWl0IHBhc3NlZCwgYnV0ICVzIGRvZXMgbm90IHN1
cHBvcnQgbG9jYWwgY29tbWl0cyIgJSBzZWxmLl90b29sLnNjbSgpLmRpc3BsYXlfbmFtZSgpKQo=
</data>
<flag name="review"
          id="95496"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>