<?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>107478</bug_id>
          
          <creation_ts>2013-01-21 14:59:14 -0800</creation_ts>
          <short_desc>Add functions to ChangeLog - parse bug desc/changed functions, delete/prepend entries</short_desc>
          <delta_ts>2013-01-22 17:38:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>74358</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Loh">timloh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>timloh</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>812406</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-01-21 14:59:14 -0800</bug_when>
    <thetext>Add functions to ChangeLog - parse bug desc/changed functions, delete/prepend entries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812408</commentid>
    <comment_count>1</comment_count>
      <attachid>183834</attachid>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-01-21 15:00:44 -0800</bug_when>
    <thetext>Created attachment 183834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812410</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-21 15:03:49 -0800</bug_when>
    <thetext>Attachment 183834 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
Tools/Scripts/webkitpy/common/checkout/changelog_unittest.py:478:  invalid syntax  [pylint/E0001] [5]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812412</commentid>
    <comment_count>3</comment_count>
      <attachid>183836</attachid>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-01-21 15:08:13 -0800</bug_when>
    <thetext>Created attachment 183836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812427</commentid>
    <comment_count>4</comment_count>
      <attachid>183836</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-21 15:54:45 -0800</bug_when>
    <thetext>Comment on attachment 183836
Patch

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

&gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:167
&gt; +    @staticmethod
&gt; +    def _parse_touched_functions(text):

I have (perhaps irational) fear of python&apos;s static methods.  They are hard to mock/use-mocks-from.  I&apos;d rather these be at least class methods if not just plain old instance methods.

&gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:171
&gt; +            file_match = re.match(ChangeLogEntry.touched_files_regexp, line)

can we call touched_files_regexp.match directly?  I thought the compiled regexp&apos;s had instance methods?  I guess the r&apos;&apos; syntax only gets you a regexp-aware string and not a compiled regexp?

&gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:198
&gt; +        self._bug_description = ChangeLogEntry._parse_bug_description(self._contents)

self. will make these easier to mock/test.

&gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:209
&gt; +        self._touched_functions = ChangeLogEntry._parse_touched_functions(self._contents)

same self.

&gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:259
&gt; +    def bug_description(self):
&gt; +        return self._bug_description

I never quite figured out pythons @property syntax, or if it was a good idea, so most of webkitpy uses getters like these.  I just need to figure out what official python style/best-practice is some day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812443</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-01-21 16:15:38 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 183836 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183836&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:167
&gt; &gt; +    @staticmethod
&gt; &gt; +    def _parse_touched_functions(text):
&gt; 
&gt; I have (perhaps irational) fear of python&apos;s static methods.  They are hard to mock/use-mocks-from.  I&apos;d rather these be at least class methods if not just plain old instance methods.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:198
&gt; &gt; +        self._bug_description = ChangeLogEntry._parse_bug_description(self._contents)
&gt; 
&gt; self. will make these easier to mock/test.
&gt; 

Sure, I&apos;ll replace @staticmethod with @classmethod and ChangeLogEntry/ChangeLog with self throughout the file to make it uniform.

&gt; &gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:171
&gt; &gt; +            file_match = re.match(ChangeLogEntry.touched_files_regexp, line)
&gt; 
&gt; can we call touched_files_regexp.match directly?  I thought the compiled regexp&apos;s had instance methods?  I guess the r&apos;&apos; syntax only gets you a regexp-aware string and not a compiled regexp?
&gt; 

Yep, r&apos;&apos; stops backslashes from being escape characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812452</commentid>
    <comment_count>6</comment_count>
      <attachid>183851</attachid>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-01-21 16:21:28 -0800</bug_when>
    <thetext>Created attachment 183851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813426</commentid>
    <comment_count>7</comment_count>
      <attachid>183851</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-22 14:41:33 -0800</bug_when>
    <thetext>Comment on attachment 183851
Patch

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

Aside from the self/cls confusion (which I likely lead you to), this looks fine.  You&apos;ll need to post the final patch with &apos;cls&apos; replacing &apos;self&apos; where necessary.

&gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:114
&gt; +    def _parse_reviewer_text(self, text):

This is called &quot;cls&quot; when it&apos;s a class method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813442</commentid>
    <comment_count>8</comment_count>
      <attachid>184053</attachid>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-01-22 14:51:37 -0800</bug_when>
    <thetext>Created attachment 184053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813479</commentid>
    <comment_count>9</comment_count>
      <attachid>184053</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-22 15:34:16 -0800</bug_when>
    <thetext>Comment on attachment 184053
Patch

Attachment 184053 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16067022

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813536</commentid>
    <comment_count>10</comment_count>
      <attachid>184053</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-22 16:29:51 -0800</bug_when>
    <thetext>Comment on attachment 184053
Patch

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

&gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:450
&gt; +        data = codecs.open(self.path, &quot;r&quot;, &quot;utf-8&quot;).read()
&gt; +        codecs.open(self.path, &quot;w&quot;, &quot;utf-8&quot;).write(text + data)

Shouldn&apos;t we be using a FileSystem for this?  I&apos;m sorry I didn&apos;t catch this before.  I guess ChangeLog doesn&apos;t correctly sit on top of our FileSystem abstraction anyway?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813538</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-22 16:30:08 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 184053 [details])
&gt; Attachment 184053 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/16067022
&gt; 
&gt; New failing tests:
&gt; inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html

Flaky tests are killing us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813564</commentid>
    <comment_count>12</comment_count>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-01-22 16:51:14 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 184053 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184053&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:450
&gt; &gt; +        data = codecs.open(self.path, &quot;r&quot;, &quot;utf-8&quot;).read()
&gt; &gt; +        codecs.open(self.path, &quot;w&quot;, &quot;utf-8&quot;).write(text + data)
&gt; 
&gt; Shouldn&apos;t we be using a FileSystem for this?  I&apos;m sorry I didn&apos;t catch this before.  I guess ChangeLog doesn&apos;t correctly sit on top of our FileSystem abstraction anyway?

ChangeLog uses the fileinput module (i.e. the real filesystem) throughout, so I thought it would be a bit inconsistent to add functions which use the FileSystem abstraction. Probably using FileSystem would be better though, so I&apos;ll see if getting rid of fileinput isn&apos;t too messy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813573</commentid>
    <comment_count>13</comment_count>
      <attachid>184053</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-22 16:58:39 -0800</bug_when>
    <thetext>Comment on attachment 184053
Patch

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:450
&gt;&gt;&gt; +        codecs.open(self.path, &quot;w&quot;, &quot;utf-8&quot;).write(text + data)
&gt;&gt; 
&gt;&gt; Shouldn&apos;t we be using a FileSystem for this?  I&apos;m sorry I didn&apos;t catch this before.  I guess ChangeLog doesn&apos;t correctly sit on top of our FileSystem abstraction anyway?
&gt; 
&gt; ChangeLog uses the fileinput module (i.e. the real filesystem) throughout, so I thought it would be a bit inconsistent to add functions which use the FileSystem abstraction. Probably using FileSystem would be better though, so I&apos;ll see if getting rid of fileinput isn&apos;t too messy.

I agree.  This doesn&apos;t make ChangeLog any worse than it already is (in terms of mockability).  We can make ChagneLog FileSystem-compatible later in another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813614</commentid>
    <comment_count>14</comment_count>
      <attachid>184053</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-22 17:38:05 -0800</bug_when>
    <thetext>Comment on attachment 184053
Patch

Clearing flags on attachment: 184053

Committed r140491: &lt;http://trac.webkit.org/changeset/140491&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813615</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-22 17:38:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183834</attachid>
            <date>2013-01-21 15:00:44 -0800</date>
            <delta_ts>2013-01-21 15:08:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107478-20130122095739.patch</filename>
            <type>text/plain</type>
            <size>12581</size>
            <attacher name="Timothy Loh">timloh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMjgxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzg2MWJlMjc1ZmI5OWU0OTgwOWM3ODAzMTQ4ZWFiYmNl
NTRjN2FlNS4uNjViMGRhNzUyNDVhMDQ4NmJkZDcyNTE4YzIxOTA0NTAyMGVlZGJlOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEzLTAxLTIxICBUaW1vdGh5IExvaCAgPHRpbWxvaEBjaHJvbWl1bS5jb20+CisKKyAg
ICAgICAgQWRkIGZ1bmN0aW9ucyB0byBDaGFuZ2VMb2cgLSBwYXJzZSBidWcgZGVzYy9jaGFuZ2Vk
IGZ1bmN0aW9ucywgZGVsZXRlL3ByZXBlbmQgZW50cmllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gdGhlIHJvYWQgdG8gcmVzb2x2aW5nIEJ1ZyA3
NDM1OCwgd2UgbmVlZCBhIGZldyBtb3JlIGZ1bmN0aW9ucyBpbgorICAgICAgICBjaGFuZ2Vsb2cu
cHkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vs
b2cucHk6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeSk6CisgICAgICAgIChDaGFuZ2VMb2dFbnRy
eS5fcGFyc2VfdG91Y2hlZF9mdW5jdGlvbnMpOgorICAgICAgICAoQ2hhbmdlTG9nRW50cnkuX3Bh
cnNlX2J1Z19kZXNjcmlwdGlvbik6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeS5fcGFyc2VfZW50
cnkpOgorICAgICAgICAoQ2hhbmdlTG9nRW50cnkuZGF0ZV9saW5lKToKKyAgICAgICAgKENoYW5n
ZUxvZ0VudHJ5LmJ1Z19kZXNjcmlwdGlvbik6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeS50b3Vj
aGVkX2Z1bmN0aW9ucyk6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeS50b3VjaGVkX2ZpbGVzX3Rl
eHQpOgorICAgICAgICAoQ2hhbmdlTG9nRW50cnkuaXNfdG91Y2hlZF9maWxlc190ZXh0X2NsZWFu
KToKKyAgICAgICAgKENoYW5nZUxvZy5zZXRfc2hvcnRfZGVzY3JpcHRpb25fYW5kX2J1Z191cmwp
OgorICAgICAgICAoQ2hhbmdlTG9nKToKKyAgICAgICAgKENoYW5nZUxvZy5kZWxldGVfZW50cmll
cyk6CisgICAgICAgIChDaGFuZ2VMb2cucHJlcGVuZF90ZXh0KToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHk6CisgICAgICAg
ICh0ZXN0X3BhcnNlX2xvZ19lbnRyaWVzX2Zyb21fY2hhbmdlbG9nKToKKyAgICAgICAgKHRlc3Rf
bGF0ZXN0X2VudHJ5X3BhcnNlKToKKyAgICAgICAgKHRlc3Rfc2V0X3Nob3J0X2Rlc2NyaXB0aW9u
X2FuZF9idWdfdXJsKToKKyAgICAgICAgKHRlc3RfZGVsZXRlX2VudHJpZXMpOgorICAgICAgICAo
dGVzdF9wcmVwZW5kX3RleHQpOgorCiAyMDEzLTAxLTIwICBKb2NoZW4gRWlzaW5nZXIgIDxqb2No
ZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBmcmFtZSBnZW5lcmF0
aW9uIHJlbGF0ZWQgbWV0aG9kcyB0byBUZXN0UnVubmVyCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkKaW5kZXggYzVjZjQyYzc5Y2Y5
NTZiYTBjMmZjZDI5ZTNhNTQxZGUwZDU0NDA2OC4uYzRkZWQzNmE2YjgwOGU5ZTY2ZjFkMzU3M2Q2
NjE5YWVlNDExZjQxMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvY2hhbmdlbG9nLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2NoYW5nZWxvZy5weQpAQCAtNjQsNiArNjQsOCBAQCBjbGFzcyBDaGFuZ2VMb2dF
bnRyeShvYmplY3QpOgogCiAgICAgIyBlLmcuICogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwOiBJbXBsZW1lbnQgRm9vQmFyUXV1eC4KICAgICB0b3VjaGVkX2ZpbGVzX3JlZ2V4
cCA9IHInXlxzKlwqXHMqKD9QPGZpbGU+W0EtWmEtejAtOV9cLVwuL1xcXSspXHMqXDonCisgICAg
IyBlLmcuIChDaGFuZ2VMb2dFbnRyeS50b3VjaGVkX2Z1bmN0aW9ucyk6IEFkZGVkLgorICAgIHRv
dWNoZWRfZnVuY3Rpb25zX3JlZ2V4cCA9IHInXlxzKlwoKD9QPGZ1bmN0aW9uPlteKV0qKVwpOicK
IAogICAgICMgZS5nLiBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KICAgICAjIChEaXNjYXJkIGV2
ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IHBlcmlvZCB0byBtYXRjaCBtb3JlIGludmFsaWQgbGlu
ZXMuKQpAQCAtMTYxLDExICsxNjMsNDAgQEAgY2xhc3MgQ2hhbmdlTG9nRW50cnkob2JqZWN0KToK
ICAgICAgICAgYXNzZXJ0KGF1dGhvcnMgYW5kIGxlbihhdXRob3JzKSA+PSAxKQogICAgICAgICBy
ZXR1cm4gW0NoYW5nZUxvZ0VudHJ5Ll9wYXJzZV9hdXRob3JfbmFtZV9hbmRfZW1haWwoYXV0aG9y
KSBmb3IgYXV0aG9yIGluIGF1dGhvcnNdCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9w
YXJzZV90b3VjaGVkX2Z1bmN0aW9ucyh0ZXh0KToKKyAgICAgICAgcmVzdWx0ID0ge30KKyAgICAg
ICAgY3VyX2ZpbGUgPSBOb25lCisgICAgICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcygp
OgorICAgICAgICAgICAgZmlsZV9tYXRjaCA9IHJlLm1hdGNoKENoYW5nZUxvZ0VudHJ5LnRvdWNo
ZWRfZmlsZXNfcmVnZXhwLCBsaW5lKQorICAgICAgICAgICAgaWYgZmlsZV9tYXRjaDoKKyAgICAg
ICAgICAgICAgICBjdXJfZmlsZSA9IGZpbGVfbWF0Y2guZ3JvdXAoImZpbGUiKQorICAgICAgICAg
ICAgICAgIHJlc3VsdFtjdXJfZmlsZV0gPSBbXQorICAgICAgICAgICAgZnVuY19tYXRjaCA9IHJl
Lm1hdGNoKENoYW5nZUxvZ0VudHJ5LnRvdWNoZWRfZnVuY3Rpb25zX3JlZ2V4cCwgbGluZSkKKyAg
ICAgICAgICAgIGlmIGZ1bmNfbWF0Y2ggYW5kIGN1cl9maWxlOgorICAgICAgICAgICAgICAgIHJl
c3VsdFtjdXJfZmlsZV0uYXBwZW5kKGZ1bmNfbWF0Y2guZ3JvdXAoImZ1bmN0aW9uIikpCisgICAg
ICAgIHJldHVybiByZXN1bHQKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX3BhcnNlX2J1
Z19kZXNjcmlwdGlvbih0ZXh0KToKKyAgICAgICAgIyBJZiBsaW5lIDQgaXMgYSBidWcgdXJsLCBs
aW5lIDMgaXMgdGhlIGJ1ZyBkZXNjcmlwdGlvbi4KKyAgICAgICAgIyBJdCdzIHRvbyBoYXJkIHRv
IGd1ZXNzIGluIG90aGVyIGNhc2VzLCBzbyB3ZSByZXR1cm4gTm9uZS4KKyAgICAgICAgbGluZXMg
PSB0ZXh0LnNwbGl0bGluZXMoKQorICAgICAgICBpZiBsZW4obGluZXMpIDwgNDoKKyAgICAgICAg
ICAgIHJldHVybiBOb25lCisgICAgICAgIGZvciBidWdfdXJsIGluIChjb25maWdfdXJscy5idWdf
dXJsX3Nob3J0LCBjb25maWdfdXJscy5idWdfdXJsX2xvbmcpOgorICAgICAgICAgICAgaWYgcmUu
bWF0Y2goIl5ccyoiICsgYnVnX3VybCArICIkIiwgbGluZXNbM10pOgorICAgICAgICAgICAgICAg
IHJldHVybiBsaW5lc1syXS5zdHJpcCgpCisgICAgICAgIHJldHVybiBOb25lCisKICAgICBkZWYg
X3BhcnNlX2VudHJ5KHNlbGYpOgogICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKHNlbGYuZGF0ZV9s
aW5lX3JlZ2V4cCwgc2VsZi5fY29udGVudHMsIHJlLk1VTFRJTElORSkKICAgICAgICAgaWYgbm90
IG1hdGNoOgogICAgICAgICAgICAgX2xvZy53YXJuaW5nKCJDcmVhdGluZyBpbnZhbGlkIENoYW5n
ZUxvZ0VudHJ5OlxuJXMiICUgc2VsZi5fY29udGVudHMpCiAKKyAgICAgICAgc2VsZi5fZGF0ZV9s
aW5lID0gbWF0Y2guZ3JvdXAoKQorICAgICAgICBzZWxmLl9idWdfZGVzY3JpcHRpb24gPSBDaGFu
Z2VMb2dFbnRyeS5fcGFyc2VfYnVnX2Rlc2NyaXB0aW9uKHNlbGYuX2NvbnRlbnRzKQorCiAgICAg
ICAgICMgRklYTUU6IGdyb3VwKCJuYW1lIikgZG9lcyBub3Qgc2VlbSB0byBiZSBVbmljb2RlPyAg
UHJvYmFibHkgZHVlIHRvIHNlbGYuX2NvbnRlbnRzIG5vdCBiZWluZyB1bmljb2RlLgogICAgICAg
ICBzZWxmLl9hdXRob3JfdGV4dCA9IG1hdGNoLmdyb3VwKCJhdXRob3JzIikgaWYgbWF0Y2ggZWxz
ZSBOb25lCiAgICAgICAgIHNlbGYuX2F1dGhvcnMgPSBDaGFuZ2VMb2dFbnRyeS5fcGFyc2VfYXV0
aG9yX3RleHQoc2VsZi5fYXV0aG9yX3RleHQpCkBAIC0xNzUsNiArMjA2LDEwIEBAIGNsYXNzIENo
YW5nZUxvZ0VudHJ5KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2F1dGhvciA9IHNlbGYuX2NvbW1p
dHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKHNlbGYuYXV0aG9yX2VtYWlsKCkpIG9yIHNl
bGYuX2NvbW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X25hbWUoc2VsZi5hdXRob3JfbmFtZSgp
KQogCiAgICAgICAgIHNlbGYuX3RvdWNoZWRfZmlsZXMgPSByZS5maW5kYWxsKHNlbGYudG91Y2hl
ZF9maWxlc19yZWdleHAsIHNlbGYuX2NvbnRlbnRzLCByZS5NVUxUSUxJTkUpCisgICAgICAgIHNl
bGYuX3RvdWNoZWRfZnVuY3Rpb25zID0gQ2hhbmdlTG9nRW50cnkuX3BhcnNlX3RvdWNoZWRfZnVu
Y3Rpb25zKHNlbGYuX2NvbnRlbnRzKQorCisgICAgZGVmIGRhdGVfbGluZShzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX2RhdGVfbGluZQogCiAgICAgZGVmIGF1dGhvcl90ZXh0KHNlbGYpOgog
ICAgICAgICByZXR1cm4gc2VsZi5fYXV0aG9yX3RleHQKQEAgLTIyMCw5ICsyNTUsMjkgQEAgY2xh
c3MgQ2hhbmdlTG9nRW50cnkob2JqZWN0KToKICAgICBkZWYgYnVnX2lkKHNlbGYpOgogICAgICAg
ICByZXR1cm4gcGFyc2VfYnVnX2lkX2Zyb21fY2hhbmdlbG9nKHNlbGYuX2NvbnRlbnRzKQogCisg
ICAgZGVmIGJ1Z19kZXNjcmlwdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1Z19k
ZXNjcmlwdGlvbgorCiAgICAgZGVmIHRvdWNoZWRfZmlsZXMoc2VsZik6CiAgICAgICAgIHJldHVy
biBzZWxmLl90b3VjaGVkX2ZpbGVzCiAKKyAgICAjIFJldHVybnMgYSBkaWN0IGZyb20gZmlsZSBu
YW1lIHRvIGxpc3RzIG9mIGZ1bmN0aW9uIG5hbWVzLgorICAgIGRlZiB0b3VjaGVkX2Z1bmN0aW9u
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RvdWNoZWRfZnVuY3Rpb25zCisKKyAgICBk
ZWYgdG91Y2hlZF9maWxlc190ZXh0KHNlbGYpOgorICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChz
ZWxmLnRvdWNoZWRfZmlsZXNfcmVnZXhwLCBzZWxmLl9jb250ZW50cywgcmUuTVVMVElMSU5FKQor
ICAgICAgICByZXR1cm4gc2VsZi5fY29udGVudHNbbWF0Y2guc3RhcnQoKTpdLmxzdHJpcCgiXG5c
ciIpIGlmIG1hdGNoIGVsc2UgIiIKKworICAgICMgRGV0ZXJtaW5lIGlmIGFueSB0ZXh0IGhhcyBi
ZWVuIGFkZGVkIHRvIHRoZSBzZWN0aW9uIG9uIHRvdWNoZWQgZmlsZXMKKyAgICBkZWYgaXNfdG91
Y2hlZF9maWxlc190ZXh0X2NsZWFuKHNlbGYpOgorICAgICAgICBmb3IgbGluZSBpbiBzZWxmLnRv
dWNoZWRfZmlsZXNfdGV4dCgpLnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGlmIHJlLm1hdGNo
KHNlbGYudG91Y2hlZF9maWxlc19yZWdleHAgKyAiJCIsIGxpbmUpOgorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICBpZiByZS5tYXRjaChzZWxmLnRvdWNoZWRfZnVuY3Rpb25z
X3JlZ2V4cCArICIkIiwgbGluZSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
ICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQogCiAjIEZJWE1FOiBWYXJpb3Vz
IG1ldGhvZHMgb24gQ2hhbmdlTG9nIHNob3VsZCBtb3ZlIGludG8gQ2hhbmdlTG9nRW50cnkgaW5z
dGVhZC4KIGNsYXNzIENoYW5nZUxvZyhvYmplY3QpOgpAQCAtMzc3LDMgKzQzMiwxOSBAQCBjbGFz
cyBDaGFuZ2VMb2cob2JqZWN0KToKICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIk5l
ZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLiIsIG1lc3NhZ2UuZW5jb2RlKCJ1dGYtOCIp
KQogICAgICAgICAgICAgaWYgbGluZSAhPSBidWdfYm9pbGVycGxhdGU6CiAgICAgICAgICAgICAg
ICAgcHJpbnQgbGluZSwKKworICAgIGRlZiBkZWxldGVfZW50cmllcyhzZWxmLCBudW1fZW50cmll
cyk6CisgICAgICAgIGRhdGVfbGluZV9yZWdleHAgPSByZS5jb21waWxlKENoYW5nZUxvZ0VudHJ5
LmRhdGVfbGluZV9yZWdleHApCisgICAgICAgIHJvbGxlZF9vdmVyX3JlZ2V4cCA9IHJlLmNvbXBp
bGUoQ2hhbmdlTG9nRW50cnkucm9sbGVkX292ZXJfcmVnZXhwKQorICAgICAgICBlbnRyaWVzID0g
MAorICAgICAgICBmb3IgbGluZSBpbiBmaWxlaW5wdXQuRmlsZUlucHV0KHNlbGYucGF0aCwgaW5w
bGFjZT0xKToKKyAgICAgICAgICAgIGlmIGRhdGVfbGluZV9yZWdleHAubWF0Y2gobGluZSk6Cisg
ICAgICAgICAgICAgICAgZW50cmllcyArPSAxCisgICAgICAgICAgICBlbGlmIHJvbGxlZF9vdmVy
X3JlZ2V4cC5tYXRjaChsaW5lKToKKyAgICAgICAgICAgICAgICBlbnRyaWVzID0gbnVtX2VudHJp
ZXMgKyAxCisgICAgICAgICAgICBpZiBlbnRyaWVzID4gbnVtX2VudHJpZXM6CisgICAgICAgICAg
ICAgICAgcHJpbnQgbGluZSwKKworICAgIGRlZiBwcmVwZW5kX3RleHQoc2VsZiwgdGV4dCk6Cisg
ICAgICAgIGRhdGEgPSBjb2RlY3Mub3BlbihzZWxmLnBhdGgsICJyIiwgInV0Zi04IikucmVhZCgp
CisgICAgICAgIGNvZGVjcy5vcGVuKHNlbGYucGF0aCwgInciLCAidXRmLTgiKS53cml0ZSh0ZXh0
ICsgZGF0YSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L2NoYW5nZWxvZ191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weQppbmRleCBmYTIzMzlmNDU2NmU1NDk0YmMy
MGYyNGQyYjViYjZmMDIyMGU5NGFkLi42NzRjMDc4NjQ1OGQxMWQ5YjQ0MWI4NmUzZjM0ZGNiMmUw
MTc4NjU3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CkBAIC0yMzYsMTQgKzIzNiwyNSBAQCBj
bGFzcyBDaGFuZ2VMb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgY2hhbmdlbG9n
X2ZpbGUgPSBTdHJpbmdJTyhzZWxmLl9leGFtcGxlX2NoYW5nZWxvZykKICAgICAgICAgcGFyc2Vk
X2VudHJpZXMgPSBsaXN0KENoYW5nZUxvZy5wYXJzZV9lbnRyaWVzX2Zyb21fZmlsZShjaGFuZ2Vs
b2dfZmlsZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcnNlZF9lbnRyaWVzKSwg
OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50cmllc1swXS5kYXRlX2xpbmUo
KSwgdSIyMDA5LTA4LTE3ICBUb3IgQXJuZSBWZXN0Ylx4ZjggIDx2ZXN0Ym9Ad2Via2l0Lm9yZz4i
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzBdLnJldmlld2VyX3Rl
eHQoKSwgIkRhdmlkIExldmluIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50
cmllc1swXS5pc190b3VjaGVkX2ZpbGVzX3RleHRfY2xlYW4oKSwgRmFsc2UpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocGFyc2VkX2VudHJpZXNbMV0uYXV0aG9yX2VtYWlsKCksICJkZGtpbHpl
ckBhcHBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzFd
LnRvdWNoZWRfZmlsZXNfdGV4dCgpLCAiICAgICAgICAqIFNjcmlwdHMvYnVnemlsbGEtdG9vbDpc
biAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvc2NtLnB5OlxuIikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwYXJzZWRfZW50cmllc1sxXS5pc190b3VjaGVkX2ZpbGVzX3RleHRfY2xlYW4oKSwg
VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50cmllc1syXS5yZXZpZXdl
cl90ZXh0KCksICJNYXJrIFJvd2UiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9l
bnRyaWVzWzJdLnRvdWNoZWRfZmlsZXMoKSwgWyJEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWVXaW5kb3cubW0iXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50cmll
c1syXS50b3VjaGVkX2Z1bmN0aW9ucygpLCB7IkR1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZVdpbmRvdy5tbSI6IFsiLVtEdW1wUmVuZGVyVHJlZVdpbmRvdyBjbG9zZV0iXX0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VkX2VudHJpZXNbMl0uaXNfdG91Y2hlZF9maWxlc190
ZXh0X2NsZWFuKCksIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRy
aWVzWzNdLmF1dGhvcl9uYW1lKCksICJCZW5qYW1pbiBQb3VsYWluIikKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYXJzZWRfZW50cmllc1szXS50b3VjaGVkX2ZpbGVzKCksIFsicGxhdGZvcm0v
Y2YvS1VSTENGTmV0LmNwcCIsICJwbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbSIsCiAgICAgICAgICAg
ICAiV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCIsICJld2svZXdrX3ByaXZhdGUu
aCIsICJld2svZXdrX3ZpZXcuY3BwIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2Vk
X2VudHJpZXNbM10udG91Y2hlZF9mdW5jdGlvbnMoKSwgeyJwbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQu
Y3BwIjogWyJXZWJDb3JlOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIiLCAiV2ViQ29yZTo6S1VSTDo6
Y3JlYXRlQ0ZVUkwiXSwKKyAgICAgICAgICAgICJwbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbSI6IFsi
V2ViQ29yZTo6S1VSTDo6b3BlcmF0b3IgTlNVUkwgKiIsICJXZWJDb3JlOjpLVVJMOjpjcmVhdGVD
RlVSTCJdLAorICAgICAgICAgICAgIldlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAi
OiBbIldlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6Y2xvc2VXaW5kb3dTb29uIl0sICJld2svZXdr
X3ByaXZhdGUuaCI6IFtdLCAiZXdrL2V3a192aWV3LmNwcCI6IFtdfSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYXJzZWRfZW50cmllc1szXS5idWdfZGVzY3JpcHRpb24oKSwgIltNYWNdIFJl
c291cmNlUmVxdWVzdCdzIG5zVVJMUmVxdWVzdCgpIGRvZXMgbm90IGRpZmZlcmVudGlhdGUgbnVs
bCBhbmQgZW1wdHkgVVJMcyB3aXRoIENGTmV0d29yayIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocGFyc2VkX2VudHJpZXNbNF0ucmV2aWV3ZXJfdGV4dCgpLCAiRGF2aWQgSHlhdHQiKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzRdLmJ1Z19kZXNjcmlwdGlvbigp
LCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzVdLnJldmll
d2VyX3RleHQoKSwgIkFkYW0gUm9iZW4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNl
ZF9lbnRyaWVzWzZdLnJldmlld2VyX3RleHQoKSwgIlRvbnkgQ2hhbmciKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzddLnJldmlld2VyX3RleHQoKSwgTm9uZSkKQEAg
LTQ2Miw3ICs0NzMsOSBAQCBjbGFzcyBDaGFuZ2VMb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXRlc3RfZW50cnkuYXV0aG9yX25hbWUoKSwgIlBl
dGVyIEthc3RpbmciKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxhdGVzdF9lbnRyeS5hdXRo
b3JfZW1haWwoKSwgInBrYXN0aW5nQGdvb2dsZS5jb20iKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxhdGVzdF9lbnRyeS5yZXZpZXdlcl90ZXh0KCksIHUiVG9yIEFybmUgVmVzdGJceGY4IikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXRlc3RfZW50cnkudG91Y2hlZF9maWxlcygpLCBb
IkR1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52Y3Byb2oiLCAiRHVtcFJlbmRlclRy
ZWUvd2luL0ltYWdlRGlmZi52Y3Byb2oiLCAiRHVtcFJlbmRlclRyZWUvd2luL1Rlc3ROZXRzY2Fw
ZVBsdWdpbi9UZXN0TmV0c2NhcGVQbHVnaW4udmNwcm9qIl0pCisgICAgICAgIHRvdWNoZWRfZmls
ZXMgPSBbIkR1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52Y3Byb2oiLCAiRHVtcFJl
bmRlclRyZWUvd2luL0ltYWdlRGlmZi52Y3Byb2oiLCAiRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RO
ZXRzY2FwZVBsdWdpbi9UZXN0TmV0c2NhcGVQbHVnaW4udmNwcm9qIl0KKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsYXRlc3RfZW50cnkudG91Y2hlZF9maWxlcygpLCB0b3VjaGVkX2ZpbGVzKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxhdGVzdF9lbnRyeS50b3VjaGVkX2Z1bmN0aW9ucygp
LCB7ZjogW10gZm9yIGYgaW4gdG91Y2hlZF9maWxlc30pCiAKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGxhdGVzdF9lbnRyeS5yZXZpZXdlcigpKSAgIyBNYWtlIHN1cmUgdGhhdCBvdXIgVVRGOC1i
YXNlZCBsb29rdXAgb2YgVG9yIHdvcmtzLgogCkBAIC01ODMsMyArNTk2LDM3IEBAIGNsYXNzIENo
YW5nZUxvZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBleHBlY3RlZF9jb250ZW50
cyA9IGNoYW5nZWxvZ19jb250ZW50cy5yZXBsYWNlKCJOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24g
KE9PUFMhKS5cbiAgICAgICAgTmVlZCB0aGUgYnVnIFVSTCAoT09QUyEpLiIsIGV4cGVjdGVkX21l
c3NhZ2UpCiAgICAgICAgIG9zLnJlbW92ZShjaGFuZ2Vsb2dfcGF0aCkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChhY3R1YWxfY29udGVudHMuc3BsaXRsaW5lcygpLCBleHBlY3RlZF9jb250ZW50
cy5zcGxpdGxpbmVzKCkpCisKKyAgICBkZWYgdGVzdF9kZWxldGVfZW50cmllcyhzZWxmKToKKyAg
ICAgICAgY2hhbmdlbG9nX3BhdGggPSBzZWxmLl93cml0ZV90bXBfZmlsZV93aXRoX2NvbnRlbnRz
KHNlbGYuX2V4YW1wbGVfY2hhbmdlbG9nLmVuY29kZSgidXRmLTgiKSkKKyAgICAgICAgQ2hhbmdl
TG9nKGNoYW5nZWxvZ19wYXRoKS5kZWxldGVfZW50cmllcyg4KQorICAgICAgICBhY3R1YWxfY29u
dGVudHMgPSBzZWxmLl9yZWFkX2ZpbGVfY29udGVudHMoY2hhbmdlbG9nX3BhdGgsICJ1dGYtOCIp
CisgICAgICAgIGV4cGVjdGVkX2NvbnRlbnRzID0gIiIiMjAxMS0xMC0xMSAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICBSZXNvbHZlIHJlZ3VsYXIgYW5kIHZpc2l0
ZWQgbGluayBzdHlsZSBpbiBhIHNpbmdsZSBwYXNzCisgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY5ODM4CisKKyAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlcgorCisgICAgICAgV2UgY2FuIHNpbXBsaWZ5IGFuZCBzcGVlZCB1cCBzZWxlY3RvciBtYXRj
aGluZyBieSByZW1vdmluZyB0aGUgcmVjdXJzaXZlIG1hdGNoaW5nIGRvbmUKKyAgICAgICB0byBn
ZW5lcmF0ZSB0aGUgc3R5bGUgZm9yIHRoZSA6dmlzaXRlZCBwc2V1ZG8gc2VsZWN0b3IuIEJvdGgg
cmVndWxhciBhbmQgdmlzaXRlZCBsaW5rIHN0eWxlCisgICAgICAgY2FuIGJlIGdlbmVyYXRlZCBp
biBhIHNpbmdsZSBwYXNzIHRocm91Z2ggdGhlIHN0eWxlIHNlbGVjdG9yLgorCis9PSBSb2xsZWQg
b3ZlciB0byBDaGFuZ2VMb2ctMjAwOS0wNi0xNiA9PQorIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYWN0dWFsX2NvbnRlbnRzLnNwbGl0bGluZXMoKSwgZXhwZWN0ZWRfY29udGVudHMuc3Bs
aXRsaW5lcygpKQorCisgICAgICAgIENoYW5nZUxvZyhjaGFuZ2Vsb2dfcGF0aCkuZGVsZXRlX2Vu
dHJpZXMoMikKKyAgICAgICAgYWN0dWFsX2NvbnRlbnRzID0gc2VsZi5fcmVhZF9maWxlX2NvbnRl
bnRzKGNoYW5nZWxvZ19wYXRoLCAidXRmLTgiKQorICAgICAgICBleHBlY3RlZF9jb250ZW50cyA9
ICI9PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ctMjAwOS0wNi0xNiA9PVxuIgorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9jb250ZW50cy5zcGxpdGxpbmVzKCksIGV4cGVjdGVkX2Nv
bnRlbnRzLnNwbGl0bGluZXMoKSkKKworICAgICAgICBvcy5yZW1vdmUoY2hhbmdlbG9nX3BhdGgp
CisKKyAgICBkZWYgdGVzdF9wcmVwZW5kX3RleHQoc2VsZik6CisgICAgICAgIGNoYW5nZWxvZ19w
YXRoID0gc2VsZi5fd3JpdGVfdG1wX2ZpbGVfd2l0aF9jb250ZW50cyhzZWxmLl9leGFtcGxlX2No
YW5nZWxvZy5lbmNvZGUoInV0Zi04IikpCisgICAgICAgIENoYW5nZUxvZyhjaGFuZ2Vsb2dfcGF0
aCkucHJlcGVuZF90ZXh0KHNlbGYuX2V4YW1wbGVfZW50cnkgKyAiXG4iKQorICAgICAgICBhY3R1
YWxfY29udGVudHMgPSBzZWxmLl9yZWFkX2ZpbGVfY29udGVudHMoY2hhbmdlbG9nX3BhdGgsICJ1
dGYtOCIpCisgICAgICAgIGV4cGVjdGVkX2NvbnRlbnRzID0gc2VsZi5fZXhhbXBsZV9lbnRyeSAr
ICJcbiIgKyBzZWxmLl9leGFtcGxlX2NoYW5nZWxvZworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGFjdHVhbF9jb250ZW50cy5zcGxpdGxpbmVzKCksIGV4cGVjdGVkX2NvbnRlbnRzLnNwbGl0bGlu
ZXMoKSkKKyAgICAgICAgb3MucmVtb3ZlKGNoYW5nZWxvZ19wYXRoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183836</attachid>
            <date>2013-01-21 15:08:13 -0800</date>
            <delta_ts>2013-01-21 16:21:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107478-20130122100508.patch</filename>
            <type>text/plain</type>
            <size>12587</size>
            <attacher name="Timothy Loh">timloh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMjgxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzg2MWJlMjc1ZmI5OWU0OTgwOWM3ODAzMTQ4ZWFiYmNl
NTRjN2FlNS4uNjViMGRhNzUyNDVhMDQ4NmJkZDcyNTE4YzIxOTA0NTAyMGVlZGJlOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEzLTAxLTIxICBUaW1vdGh5IExvaCAgPHRpbWxvaEBjaHJvbWl1bS5jb20+CisKKyAg
ICAgICAgQWRkIGZ1bmN0aW9ucyB0byBDaGFuZ2VMb2cgLSBwYXJzZSBidWcgZGVzYy9jaGFuZ2Vk
IGZ1bmN0aW9ucywgZGVsZXRlL3ByZXBlbmQgZW50cmllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gdGhlIHJvYWQgdG8gcmVzb2x2aW5nIEJ1ZyA3
NDM1OCwgd2UgbmVlZCBhIGZldyBtb3JlIGZ1bmN0aW9ucyBpbgorICAgICAgICBjaGFuZ2Vsb2cu
cHkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vs
b2cucHk6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeSk6CisgICAgICAgIChDaGFuZ2VMb2dFbnRy
eS5fcGFyc2VfdG91Y2hlZF9mdW5jdGlvbnMpOgorICAgICAgICAoQ2hhbmdlTG9nRW50cnkuX3Bh
cnNlX2J1Z19kZXNjcmlwdGlvbik6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeS5fcGFyc2VfZW50
cnkpOgorICAgICAgICAoQ2hhbmdlTG9nRW50cnkuZGF0ZV9saW5lKToKKyAgICAgICAgKENoYW5n
ZUxvZ0VudHJ5LmJ1Z19kZXNjcmlwdGlvbik6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeS50b3Vj
aGVkX2Z1bmN0aW9ucyk6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeS50b3VjaGVkX2ZpbGVzX3Rl
eHQpOgorICAgICAgICAoQ2hhbmdlTG9nRW50cnkuaXNfdG91Y2hlZF9maWxlc190ZXh0X2NsZWFu
KToKKyAgICAgICAgKENoYW5nZUxvZy5zZXRfc2hvcnRfZGVzY3JpcHRpb25fYW5kX2J1Z191cmwp
OgorICAgICAgICAoQ2hhbmdlTG9nKToKKyAgICAgICAgKENoYW5nZUxvZy5kZWxldGVfZW50cmll
cyk6CisgICAgICAgIChDaGFuZ2VMb2cucHJlcGVuZF90ZXh0KToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHk6CisgICAgICAg
ICh0ZXN0X3BhcnNlX2xvZ19lbnRyaWVzX2Zyb21fY2hhbmdlbG9nKToKKyAgICAgICAgKHRlc3Rf
bGF0ZXN0X2VudHJ5X3BhcnNlKToKKyAgICAgICAgKHRlc3Rfc2V0X3Nob3J0X2Rlc2NyaXB0aW9u
X2FuZF9idWdfdXJsKToKKyAgICAgICAgKHRlc3RfZGVsZXRlX2VudHJpZXMpOgorICAgICAgICAo
dGVzdF9wcmVwZW5kX3RleHQpOgorCiAyMDEzLTAxLTIwICBKb2NoZW4gRWlzaW5nZXIgIDxqb2No
ZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBmcmFtZSBnZW5lcmF0
aW9uIHJlbGF0ZWQgbWV0aG9kcyB0byBUZXN0UnVubmVyCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkKaW5kZXggYzVjZjQyYzc5Y2Y5
NTZiYTBjMmZjZDI5ZTNhNTQxZGUwZDU0NDA2OC4uYzRkZWQzNmE2YjgwOGU5ZTY2ZjFkMzU3M2Q2
NjE5YWVlNDExZjQxMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvY2hhbmdlbG9nLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2NoYW5nZWxvZy5weQpAQCAtNjQsNiArNjQsOCBAQCBjbGFzcyBDaGFuZ2VMb2dF
bnRyeShvYmplY3QpOgogCiAgICAgIyBlLmcuICogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwOiBJbXBsZW1lbnQgRm9vQmFyUXV1eC4KICAgICB0b3VjaGVkX2ZpbGVzX3JlZ2V4
cCA9IHInXlxzKlwqXHMqKD9QPGZpbGU+W0EtWmEtejAtOV9cLVwuL1xcXSspXHMqXDonCisgICAg
IyBlLmcuIChDaGFuZ2VMb2dFbnRyeS50b3VjaGVkX2Z1bmN0aW9ucyk6IEFkZGVkLgorICAgIHRv
dWNoZWRfZnVuY3Rpb25zX3JlZ2V4cCA9IHInXlxzKlwoKD9QPGZ1bmN0aW9uPlteKV0qKVwpOicK
IAogICAgICMgZS5nLiBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KICAgICAjIChEaXNjYXJkIGV2
ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IHBlcmlvZCB0byBtYXRjaCBtb3JlIGludmFsaWQgbGlu
ZXMuKQpAQCAtMTYxLDExICsxNjMsNDAgQEAgY2xhc3MgQ2hhbmdlTG9nRW50cnkob2JqZWN0KToK
ICAgICAgICAgYXNzZXJ0KGF1dGhvcnMgYW5kIGxlbihhdXRob3JzKSA+PSAxKQogICAgICAgICBy
ZXR1cm4gW0NoYW5nZUxvZ0VudHJ5Ll9wYXJzZV9hdXRob3JfbmFtZV9hbmRfZW1haWwoYXV0aG9y
KSBmb3IgYXV0aG9yIGluIGF1dGhvcnNdCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9w
YXJzZV90b3VjaGVkX2Z1bmN0aW9ucyh0ZXh0KToKKyAgICAgICAgcmVzdWx0ID0ge30KKyAgICAg
ICAgY3VyX2ZpbGUgPSBOb25lCisgICAgICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcygp
OgorICAgICAgICAgICAgZmlsZV9tYXRjaCA9IHJlLm1hdGNoKENoYW5nZUxvZ0VudHJ5LnRvdWNo
ZWRfZmlsZXNfcmVnZXhwLCBsaW5lKQorICAgICAgICAgICAgaWYgZmlsZV9tYXRjaDoKKyAgICAg
ICAgICAgICAgICBjdXJfZmlsZSA9IGZpbGVfbWF0Y2guZ3JvdXAoImZpbGUiKQorICAgICAgICAg
ICAgICAgIHJlc3VsdFtjdXJfZmlsZV0gPSBbXQorICAgICAgICAgICAgZnVuY19tYXRjaCA9IHJl
Lm1hdGNoKENoYW5nZUxvZ0VudHJ5LnRvdWNoZWRfZnVuY3Rpb25zX3JlZ2V4cCwgbGluZSkKKyAg
ICAgICAgICAgIGlmIGZ1bmNfbWF0Y2ggYW5kIGN1cl9maWxlOgorICAgICAgICAgICAgICAgIHJl
c3VsdFtjdXJfZmlsZV0uYXBwZW5kKGZ1bmNfbWF0Y2guZ3JvdXAoImZ1bmN0aW9uIikpCisgICAg
ICAgIHJldHVybiByZXN1bHQKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX3BhcnNlX2J1
Z19kZXNjcmlwdGlvbih0ZXh0KToKKyAgICAgICAgIyBJZiBsaW5lIDQgaXMgYSBidWcgdXJsLCBs
aW5lIDMgaXMgdGhlIGJ1ZyBkZXNjcmlwdGlvbi4KKyAgICAgICAgIyBJdCdzIHRvbyBoYXJkIHRv
IGd1ZXNzIGluIG90aGVyIGNhc2VzLCBzbyB3ZSByZXR1cm4gTm9uZS4KKyAgICAgICAgbGluZXMg
PSB0ZXh0LnNwbGl0bGluZXMoKQorICAgICAgICBpZiBsZW4obGluZXMpIDwgNDoKKyAgICAgICAg
ICAgIHJldHVybiBOb25lCisgICAgICAgIGZvciBidWdfdXJsIGluIChjb25maWdfdXJscy5idWdf
dXJsX3Nob3J0LCBjb25maWdfdXJscy5idWdfdXJsX2xvbmcpOgorICAgICAgICAgICAgaWYgcmUu
bWF0Y2goIl5ccyoiICsgYnVnX3VybCArICIkIiwgbGluZXNbM10pOgorICAgICAgICAgICAgICAg
IHJldHVybiBsaW5lc1syXS5zdHJpcCgpCisgICAgICAgIHJldHVybiBOb25lCisKICAgICBkZWYg
X3BhcnNlX2VudHJ5KHNlbGYpOgogICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKHNlbGYuZGF0ZV9s
aW5lX3JlZ2V4cCwgc2VsZi5fY29udGVudHMsIHJlLk1VTFRJTElORSkKICAgICAgICAgaWYgbm90
IG1hdGNoOgogICAgICAgICAgICAgX2xvZy53YXJuaW5nKCJDcmVhdGluZyBpbnZhbGlkIENoYW5n
ZUxvZ0VudHJ5OlxuJXMiICUgc2VsZi5fY29udGVudHMpCiAKKyAgICAgICAgc2VsZi5fZGF0ZV9s
aW5lID0gbWF0Y2guZ3JvdXAoKQorICAgICAgICBzZWxmLl9idWdfZGVzY3JpcHRpb24gPSBDaGFu
Z2VMb2dFbnRyeS5fcGFyc2VfYnVnX2Rlc2NyaXB0aW9uKHNlbGYuX2NvbnRlbnRzKQorCiAgICAg
ICAgICMgRklYTUU6IGdyb3VwKCJuYW1lIikgZG9lcyBub3Qgc2VlbSB0byBiZSBVbmljb2RlPyAg
UHJvYmFibHkgZHVlIHRvIHNlbGYuX2NvbnRlbnRzIG5vdCBiZWluZyB1bmljb2RlLgogICAgICAg
ICBzZWxmLl9hdXRob3JfdGV4dCA9IG1hdGNoLmdyb3VwKCJhdXRob3JzIikgaWYgbWF0Y2ggZWxz
ZSBOb25lCiAgICAgICAgIHNlbGYuX2F1dGhvcnMgPSBDaGFuZ2VMb2dFbnRyeS5fcGFyc2VfYXV0
aG9yX3RleHQoc2VsZi5fYXV0aG9yX3RleHQpCkBAIC0xNzUsNiArMjA2LDEwIEBAIGNsYXNzIENo
YW5nZUxvZ0VudHJ5KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2F1dGhvciA9IHNlbGYuX2NvbW1p
dHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKHNlbGYuYXV0aG9yX2VtYWlsKCkpIG9yIHNl
bGYuX2NvbW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X25hbWUoc2VsZi5hdXRob3JfbmFtZSgp
KQogCiAgICAgICAgIHNlbGYuX3RvdWNoZWRfZmlsZXMgPSByZS5maW5kYWxsKHNlbGYudG91Y2hl
ZF9maWxlc19yZWdleHAsIHNlbGYuX2NvbnRlbnRzLCByZS5NVUxUSUxJTkUpCisgICAgICAgIHNl
bGYuX3RvdWNoZWRfZnVuY3Rpb25zID0gQ2hhbmdlTG9nRW50cnkuX3BhcnNlX3RvdWNoZWRfZnVu
Y3Rpb25zKHNlbGYuX2NvbnRlbnRzKQorCisgICAgZGVmIGRhdGVfbGluZShzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX2RhdGVfbGluZQogCiAgICAgZGVmIGF1dGhvcl90ZXh0KHNlbGYpOgog
ICAgICAgICByZXR1cm4gc2VsZi5fYXV0aG9yX3RleHQKQEAgLTIyMCw5ICsyNTUsMjkgQEAgY2xh
c3MgQ2hhbmdlTG9nRW50cnkob2JqZWN0KToKICAgICBkZWYgYnVnX2lkKHNlbGYpOgogICAgICAg
ICByZXR1cm4gcGFyc2VfYnVnX2lkX2Zyb21fY2hhbmdlbG9nKHNlbGYuX2NvbnRlbnRzKQogCisg
ICAgZGVmIGJ1Z19kZXNjcmlwdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1Z19k
ZXNjcmlwdGlvbgorCiAgICAgZGVmIHRvdWNoZWRfZmlsZXMoc2VsZik6CiAgICAgICAgIHJldHVy
biBzZWxmLl90b3VjaGVkX2ZpbGVzCiAKKyAgICAjIFJldHVybnMgYSBkaWN0IGZyb20gZmlsZSBu
YW1lIHRvIGxpc3RzIG9mIGZ1bmN0aW9uIG5hbWVzLgorICAgIGRlZiB0b3VjaGVkX2Z1bmN0aW9u
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RvdWNoZWRfZnVuY3Rpb25zCisKKyAgICBk
ZWYgdG91Y2hlZF9maWxlc190ZXh0KHNlbGYpOgorICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChz
ZWxmLnRvdWNoZWRfZmlsZXNfcmVnZXhwLCBzZWxmLl9jb250ZW50cywgcmUuTVVMVElMSU5FKQor
ICAgICAgICByZXR1cm4gc2VsZi5fY29udGVudHNbbWF0Y2guc3RhcnQoKTpdLmxzdHJpcCgiXG5c
ciIpIGlmIG1hdGNoIGVsc2UgIiIKKworICAgICMgRGV0ZXJtaW5lIGlmIGFueSB0ZXh0IGhhcyBi
ZWVuIGFkZGVkIHRvIHRoZSBzZWN0aW9uIG9uIHRvdWNoZWQgZmlsZXMKKyAgICBkZWYgaXNfdG91
Y2hlZF9maWxlc190ZXh0X2NsZWFuKHNlbGYpOgorICAgICAgICBmb3IgbGluZSBpbiBzZWxmLnRv
dWNoZWRfZmlsZXNfdGV4dCgpLnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGlmIHJlLm1hdGNo
KHNlbGYudG91Y2hlZF9maWxlc19yZWdleHAgKyAiJCIsIGxpbmUpOgorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICBpZiByZS5tYXRjaChzZWxmLnRvdWNoZWRfZnVuY3Rpb25z
X3JlZ2V4cCArICIkIiwgbGluZSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
ICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQogCiAjIEZJWE1FOiBWYXJpb3Vz
IG1ldGhvZHMgb24gQ2hhbmdlTG9nIHNob3VsZCBtb3ZlIGludG8gQ2hhbmdlTG9nRW50cnkgaW5z
dGVhZC4KIGNsYXNzIENoYW5nZUxvZyhvYmplY3QpOgpAQCAtMzc3LDMgKzQzMiwxOSBAQCBjbGFz
cyBDaGFuZ2VMb2cob2JqZWN0KToKICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIk5l
ZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLiIsIG1lc3NhZ2UuZW5jb2RlKCJ1dGYtOCIp
KQogICAgICAgICAgICAgaWYgbGluZSAhPSBidWdfYm9pbGVycGxhdGU6CiAgICAgICAgICAgICAg
ICAgcHJpbnQgbGluZSwKKworICAgIGRlZiBkZWxldGVfZW50cmllcyhzZWxmLCBudW1fZW50cmll
cyk6CisgICAgICAgIGRhdGVfbGluZV9yZWdleHAgPSByZS5jb21waWxlKENoYW5nZUxvZ0VudHJ5
LmRhdGVfbGluZV9yZWdleHApCisgICAgICAgIHJvbGxlZF9vdmVyX3JlZ2V4cCA9IHJlLmNvbXBp
bGUoQ2hhbmdlTG9nRW50cnkucm9sbGVkX292ZXJfcmVnZXhwKQorICAgICAgICBlbnRyaWVzID0g
MAorICAgICAgICBmb3IgbGluZSBpbiBmaWxlaW5wdXQuRmlsZUlucHV0KHNlbGYucGF0aCwgaW5w
bGFjZT0xKToKKyAgICAgICAgICAgIGlmIGRhdGVfbGluZV9yZWdleHAubWF0Y2gobGluZSk6Cisg
ICAgICAgICAgICAgICAgZW50cmllcyArPSAxCisgICAgICAgICAgICBlbGlmIHJvbGxlZF9vdmVy
X3JlZ2V4cC5tYXRjaChsaW5lKToKKyAgICAgICAgICAgICAgICBlbnRyaWVzID0gbnVtX2VudHJp
ZXMgKyAxCisgICAgICAgICAgICBpZiBlbnRyaWVzID4gbnVtX2VudHJpZXM6CisgICAgICAgICAg
ICAgICAgcHJpbnQgbGluZSwKKworICAgIGRlZiBwcmVwZW5kX3RleHQoc2VsZiwgdGV4dCk6Cisg
ICAgICAgIGRhdGEgPSBjb2RlY3Mub3BlbihzZWxmLnBhdGgsICJyIiwgInV0Zi04IikucmVhZCgp
CisgICAgICAgIGNvZGVjcy5vcGVuKHNlbGYucGF0aCwgInciLCAidXRmLTgiKS53cml0ZSh0ZXh0
ICsgZGF0YSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L2NoYW5nZWxvZ191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weQppbmRleCBmYTIzMzlmNDU2NmU1NDk0YmMy
MGYyNGQyYjViYjZmMDIyMGU5NGFkLi4xODVkNWY3OTYxMGI0NTIyNDY2NWJhMDFjNzljNzRkMjY1
NGZlMzAyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CkBAIC0yMzYsMTQgKzIzNiwyNSBAQCBj
bGFzcyBDaGFuZ2VMb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgY2hhbmdlbG9n
X2ZpbGUgPSBTdHJpbmdJTyhzZWxmLl9leGFtcGxlX2NoYW5nZWxvZykKICAgICAgICAgcGFyc2Vk
X2VudHJpZXMgPSBsaXN0KENoYW5nZUxvZy5wYXJzZV9lbnRyaWVzX2Zyb21fZmlsZShjaGFuZ2Vs
b2dfZmlsZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcnNlZF9lbnRyaWVzKSwg
OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50cmllc1swXS5kYXRlX2xpbmUo
KSwgdSIyMDA5LTA4LTE3ICBUb3IgQXJuZSBWZXN0Ylx4ZjggIDx2ZXN0Ym9Ad2Via2l0Lm9yZz4i
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzBdLnJldmlld2VyX3Rl
eHQoKSwgIkRhdmlkIExldmluIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50
cmllc1swXS5pc190b3VjaGVkX2ZpbGVzX3RleHRfY2xlYW4oKSwgRmFsc2UpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocGFyc2VkX2VudHJpZXNbMV0uYXV0aG9yX2VtYWlsKCksICJkZGtpbHpl
ckBhcHBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzFd
LnRvdWNoZWRfZmlsZXNfdGV4dCgpLCAiICAgICAgICAqIFNjcmlwdHMvYnVnemlsbGEtdG9vbDpc
biAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvc2NtLnB5OlxuIikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwYXJzZWRfZW50cmllc1sxXS5pc190b3VjaGVkX2ZpbGVzX3RleHRfY2xlYW4oKSwg
VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50cmllc1syXS5yZXZpZXdl
cl90ZXh0KCksICJNYXJrIFJvd2UiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9l
bnRyaWVzWzJdLnRvdWNoZWRfZmlsZXMoKSwgWyJEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWVXaW5kb3cubW0iXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50cmll
c1syXS50b3VjaGVkX2Z1bmN0aW9ucygpLCB7IkR1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZVdpbmRvdy5tbSI6IFsiLVtEdW1wUmVuZGVyVHJlZVdpbmRvdyBjbG9zZV0iXX0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VkX2VudHJpZXNbMl0uaXNfdG91Y2hlZF9maWxlc190
ZXh0X2NsZWFuKCksIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRy
aWVzWzNdLmF1dGhvcl9uYW1lKCksICJCZW5qYW1pbiBQb3VsYWluIikKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYXJzZWRfZW50cmllc1szXS50b3VjaGVkX2ZpbGVzKCksIFsicGxhdGZvcm0v
Y2YvS1VSTENGTmV0LmNwcCIsICJwbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbSIsCiAgICAgICAgICAg
ICAiV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCIsICJld2svZXdrX3ByaXZhdGUu
aCIsICJld2svZXdrX3ZpZXcuY3BwIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2Vk
X2VudHJpZXNbM10udG91Y2hlZF9mdW5jdGlvbnMoKSwgeyJwbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQu
Y3BwIjogWyJXZWJDb3JlOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIiLCAiV2ViQ29yZTo6S1VSTDo6
Y3JlYXRlQ0ZVUkwiXSwKKyAgICAgICAgICAgICJwbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbSI6IFsi
V2ViQ29yZTo6S1VSTDo6b3BlcmF0b3IgTlNVUkwgKiIsICJXZWJDb3JlOjpLVVJMOjpjcmVhdGVD
RlVSTCJdLAorICAgICAgICAgICAgIldlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAi
OiBbIldlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6Y2xvc2VXaW5kb3dTb29uIl0sICJld2svZXdr
X3ByaXZhdGUuaCI6IFtdLCAiZXdrL2V3a192aWV3LmNwcCI6IFtdfSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYXJzZWRfZW50cmllc1szXS5idWdfZGVzY3JpcHRpb24oKSwgIltNYWNdIFJl
c291cmNlUmVxdWVzdCdzIG5zVVJMUmVxdWVzdCgpIGRvZXMgbm90IGRpZmZlcmVudGlhdGUgbnVs
bCBhbmQgZW1wdHkgVVJMcyB3aXRoIENGTmV0d29yayIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocGFyc2VkX2VudHJpZXNbNF0ucmV2aWV3ZXJfdGV4dCgpLCAiRGF2aWQgSHlhdHQiKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzRdLmJ1Z19kZXNjcmlwdGlvbigp
LCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzVdLnJldmll
d2VyX3RleHQoKSwgIkFkYW0gUm9iZW4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNl
ZF9lbnRyaWVzWzZdLnJldmlld2VyX3RleHQoKSwgIlRvbnkgQ2hhbmciKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzddLnJldmlld2VyX3RleHQoKSwgTm9uZSkKQEAg
LTQ2Miw3ICs0NzMsOSBAQCBjbGFzcyBDaGFuZ2VMb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXRlc3RfZW50cnkuYXV0aG9yX25hbWUoKSwgIlBl
dGVyIEthc3RpbmciKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxhdGVzdF9lbnRyeS5hdXRo
b3JfZW1haWwoKSwgInBrYXN0aW5nQGdvb2dsZS5jb20iKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxhdGVzdF9lbnRyeS5yZXZpZXdlcl90ZXh0KCksIHUiVG9yIEFybmUgVmVzdGJceGY4IikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXRlc3RfZW50cnkudG91Y2hlZF9maWxlcygpLCBb
IkR1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52Y3Byb2oiLCAiRHVtcFJlbmRlclRy
ZWUvd2luL0ltYWdlRGlmZi52Y3Byb2oiLCAiRHVtcFJlbmRlclRyZWUvd2luL1Rlc3ROZXRzY2Fw
ZVBsdWdpbi9UZXN0TmV0c2NhcGVQbHVnaW4udmNwcm9qIl0pCisgICAgICAgIHRvdWNoZWRfZmls
ZXMgPSBbIkR1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52Y3Byb2oiLCAiRHVtcFJl
bmRlclRyZWUvd2luL0ltYWdlRGlmZi52Y3Byb2oiLCAiRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RO
ZXRzY2FwZVBsdWdpbi9UZXN0TmV0c2NhcGVQbHVnaW4udmNwcm9qIl0KKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsYXRlc3RfZW50cnkudG91Y2hlZF9maWxlcygpLCB0b3VjaGVkX2ZpbGVzKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxhdGVzdF9lbnRyeS50b3VjaGVkX2Z1bmN0aW9ucygp
LCBkaWN0KChmLCBbXSkgZm9yIGYgaW4gdG91Y2hlZF9maWxlcykpCiAKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGxhdGVzdF9lbnRyeS5yZXZpZXdlcigpKSAgIyBNYWtlIHN1cmUgdGhhdCBvdXIg
VVRGOC1iYXNlZCBsb29rdXAgb2YgVG9yIHdvcmtzLgogCkBAIC01ODMsMyArNTk2LDM3IEBAIGNs
YXNzIENoYW5nZUxvZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBleHBlY3RlZF9j
b250ZW50cyA9IGNoYW5nZWxvZ19jb250ZW50cy5yZXBsYWNlKCJOZWVkIGEgc2hvcnQgZGVzY3Jp
cHRpb24gKE9PUFMhKS5cbiAgICAgICAgTmVlZCB0aGUgYnVnIFVSTCAoT09QUyEpLiIsIGV4cGVj
dGVkX21lc3NhZ2UpCiAgICAgICAgIG9zLnJlbW92ZShjaGFuZ2Vsb2dfcGF0aCkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfY29udGVudHMuc3BsaXRsaW5lcygpLCBleHBlY3RlZF9j
b250ZW50cy5zcGxpdGxpbmVzKCkpCisKKyAgICBkZWYgdGVzdF9kZWxldGVfZW50cmllcyhzZWxm
KToKKyAgICAgICAgY2hhbmdlbG9nX3BhdGggPSBzZWxmLl93cml0ZV90bXBfZmlsZV93aXRoX2Nv
bnRlbnRzKHNlbGYuX2V4YW1wbGVfY2hhbmdlbG9nLmVuY29kZSgidXRmLTgiKSkKKyAgICAgICAg
Q2hhbmdlTG9nKGNoYW5nZWxvZ19wYXRoKS5kZWxldGVfZW50cmllcyg4KQorICAgICAgICBhY3R1
YWxfY29udGVudHMgPSBzZWxmLl9yZWFkX2ZpbGVfY29udGVudHMoY2hhbmdlbG9nX3BhdGgsICJ1
dGYtOCIpCisgICAgICAgIGV4cGVjdGVkX2NvbnRlbnRzID0gIiIiMjAxMS0xMC0xMSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICBSZXNvbHZlIHJlZ3VsYXIgYW5k
IHZpc2l0ZWQgbGluayBzdHlsZSBpbiBhIHNpbmdsZSBwYXNzCisgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5ODM4CisKKyAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlcgorCisgICAgICAgV2UgY2FuIHNpbXBsaWZ5IGFuZCBzcGVlZCB1cCBzZWxlY3Rv
ciBtYXRjaGluZyBieSByZW1vdmluZyB0aGUgcmVjdXJzaXZlIG1hdGNoaW5nIGRvbmUKKyAgICAg
ICB0byBnZW5lcmF0ZSB0aGUgc3R5bGUgZm9yIHRoZSA6dmlzaXRlZCBwc2V1ZG8gc2VsZWN0b3Iu
IEJvdGggcmVndWxhciBhbmQgdmlzaXRlZCBsaW5rIHN0eWxlCisgICAgICAgY2FuIGJlIGdlbmVy
YXRlZCBpbiBhIHNpbmdsZSBwYXNzIHRocm91Z2ggdGhlIHN0eWxlIHNlbGVjdG9yLgorCis9PSBS
b2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ctMjAwOS0wNi0xNiA9PQorIiIiCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYWN0dWFsX2NvbnRlbnRzLnNwbGl0bGluZXMoKSwgZXhwZWN0ZWRfY29udGVu
dHMuc3BsaXRsaW5lcygpKQorCisgICAgICAgIENoYW5nZUxvZyhjaGFuZ2Vsb2dfcGF0aCkuZGVs
ZXRlX2VudHJpZXMoMikKKyAgICAgICAgYWN0dWFsX2NvbnRlbnRzID0gc2VsZi5fcmVhZF9maWxl
X2NvbnRlbnRzKGNoYW5nZWxvZ19wYXRoLCAidXRmLTgiKQorICAgICAgICBleHBlY3RlZF9jb250
ZW50cyA9ICI9PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ctMjAwOS0wNi0xNiA9PVxuIgorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9jb250ZW50cy5zcGxpdGxpbmVzKCksIGV4cGVj
dGVkX2NvbnRlbnRzLnNwbGl0bGluZXMoKSkKKworICAgICAgICBvcy5yZW1vdmUoY2hhbmdlbG9n
X3BhdGgpCisKKyAgICBkZWYgdGVzdF9wcmVwZW5kX3RleHQoc2VsZik6CisgICAgICAgIGNoYW5n
ZWxvZ19wYXRoID0gc2VsZi5fd3JpdGVfdG1wX2ZpbGVfd2l0aF9jb250ZW50cyhzZWxmLl9leGFt
cGxlX2NoYW5nZWxvZy5lbmNvZGUoInV0Zi04IikpCisgICAgICAgIENoYW5nZUxvZyhjaGFuZ2Vs
b2dfcGF0aCkucHJlcGVuZF90ZXh0KHNlbGYuX2V4YW1wbGVfZW50cnkgKyAiXG4iKQorICAgICAg
ICBhY3R1YWxfY29udGVudHMgPSBzZWxmLl9yZWFkX2ZpbGVfY29udGVudHMoY2hhbmdlbG9nX3Bh
dGgsICJ1dGYtOCIpCisgICAgICAgIGV4cGVjdGVkX2NvbnRlbnRzID0gc2VsZi5fZXhhbXBsZV9l
bnRyeSArICJcbiIgKyBzZWxmLl9leGFtcGxlX2NoYW5nZWxvZworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGFjdHVhbF9jb250ZW50cy5zcGxpdGxpbmVzKCksIGV4cGVjdGVkX2NvbnRlbnRzLnNw
bGl0bGluZXMoKSkKKyAgICAgICAgb3MucmVtb3ZlKGNoYW5nZWxvZ19wYXRoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183851</attachid>
            <date>2013-01-21 16:21:28 -0800</date>
            <delta_ts>2013-01-22 14:51:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107478-20130122111823.patch</filename>
            <type>text/plain</type>
            <size>16948</size>
            <attacher name="Timothy Loh">timloh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMjgxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzg2MWJlMjc1ZmI5OWU0OTgwOWM3ODAzMTQ4ZWFiYmNl
NTRjN2FlNS4uZDkxMjZhY2ViNWU0OTdkZjIyYTJmOTdiZjFlODY3NzYyYWQ1YWYzNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQy
IEBACisyMDEzLTAxLTIxICBUaW1vdGh5IExvaCAgPHRpbWxvaEBjaHJvbWl1bS5jb20+CisKKyAg
ICAgICAgQWRkIGZ1bmN0aW9ucyB0byBDaGFuZ2VMb2cgLSBwYXJzZSBidWcgZGVzYy9jaGFuZ2Vk
IGZ1bmN0aW9ucywgZGVsZXRlL3ByZXBlbmQgZW50cmllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gdGhlIHJvYWQgdG8gcmVzb2x2aW5nIEJ1ZyA3
NDM1OCwgd2UgbmVlZCBhIGZldyBtb3JlIGZ1bmN0aW9ucyBpbgorICAgICAgICBjaGFuZ2Vsb2cu
cHkuCisgICAgICAgIFRvIG1ha2UgdGhpbmdzIGVhc2llciB0byBtb2NrLCBjaGFuZ2UgQHN0YXRp
Y21ldGhvZHMgdG8gQGNsYXNzbWV0aG9kcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weToKKyAgICAgICAgKENoYW5nZUxvZ0VudHJ5KToK
KyAgICAgICAgKENoYW5nZUxvZ0VudHJ5Ll9wYXJzZV9yZXZpZXdlcl90ZXh0KToKKyAgICAgICAg
KENoYW5nZUxvZ0VudHJ5Ll9zcGxpdF9jb250cmlidXRvcl9uYW1lcyk6CisgICAgICAgIChDaGFu
Z2VMb2dFbnRyeS5fcGFyc2VfYXV0aG9yX25hbWVfYW5kX2VtYWlsKToKKyAgICAgICAgKENoYW5n
ZUxvZ0VudHJ5Ll9wYXJzZV9hdXRob3JfdGV4dCk6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeS5f
cGFyc2VfdG91Y2hlZF9mdW5jdGlvbnMpOgorICAgICAgICAoQ2hhbmdlTG9nRW50cnkuX3BhcnNl
X2J1Z19kZXNjcmlwdGlvbik6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeS5fcGFyc2VfZW50cnkp
OgorICAgICAgICAoQ2hhbmdlTG9nRW50cnkuZGF0ZV9saW5lKToKKyAgICAgICAgKENoYW5nZUxv
Z0VudHJ5LmJ1Z19kZXNjcmlwdGlvbik6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeS50b3VjaGVk
X2Z1bmN0aW9ucyk6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeS50b3VjaGVkX2ZpbGVzX3RleHQp
OgorICAgICAgICAoQ2hhbmdlTG9nRW50cnkuaXNfdG91Y2hlZF9maWxlc190ZXh0X2NsZWFuKToK
KyAgICAgICAgKENoYW5nZUxvZyk6CisgICAgICAgIChDaGFuZ2VMb2cucGFyc2VfbGF0ZXN0X2Vu
dHJ5X2Zyb21fZmlsZSk6CisgICAgICAgIChDaGFuZ2VMb2cuX3NlcGFyYXRlX3JldmlzaW9uX2Fu
ZF9saW5lKToKKyAgICAgICAgKENoYW5nZUxvZy5wYXJzZV9lbnRyaWVzX2Zyb21fZmlsZSk6Cisg
ICAgICAgIChDaGFuZ2VMb2cuc2V0X3Nob3J0X2Rlc2NyaXB0aW9uX2FuZF9idWdfdXJsKToKKyAg
ICAgICAgKENoYW5nZUxvZy5kZWxldGVfZW50cmllcyk6CisgICAgICAgIChDaGFuZ2VMb2cucHJl
cGVuZF90ZXh0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9j
aGFuZ2Vsb2dfdW5pdHRlc3QucHk6CisgICAgICAgICh0ZXN0X3BhcnNlX2xvZ19lbnRyaWVzX2Zy
b21fY2hhbmdlbG9nKToKKyAgICAgICAgKHRlc3RfbGF0ZXN0X2VudHJ5X3BhcnNlKToKKyAgICAg
ICAgKHRlc3Rfc2V0X3Nob3J0X2Rlc2NyaXB0aW9uX2FuZF9idWdfdXJsKToKKyAgICAgICAgKHRl
c3RfZGVsZXRlX2VudHJpZXMpOgorICAgICAgICAodGVzdF9wcmVwZW5kX3RleHQpOgorCiAyMDEz
LTAxLTIwICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gbW92ZSBmcmFtZSBnZW5lcmF0aW9uIHJlbGF0ZWQgbWV0aG9kcyB0byBUZXN0
UnVubmVyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9jaGFuZ2Vsb2cucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9j
aGFuZ2Vsb2cucHkKaW5kZXggYzVjZjQyYzc5Y2Y5NTZiYTBjMmZjZDI5ZTNhNTQxZGUwZDU0NDA2
OC4uNTk3YzU1ZWZjMWE1OGQ4NDUzMzU2Nzk3OTlhYmM2ZjVlOTNlMWE2NSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQpAQCAt
NjQsNiArNjQsOCBAQCBjbGFzcyBDaGFuZ2VMb2dFbnRyeShvYmplY3QpOgogCiAgICAgIyBlLmcu
ICogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwOiBJbXBsZW1lbnQgRm9vQmFy
UXV1eC4KICAgICB0b3VjaGVkX2ZpbGVzX3JlZ2V4cCA9IHInXlxzKlwqXHMqKD9QPGZpbGU+W0Et
WmEtejAtOV9cLVwuL1xcXSspXHMqXDonCisgICAgIyBlLmcuIChDaGFuZ2VMb2dFbnRyeS50b3Vj
aGVkX2Z1bmN0aW9ucyk6IEFkZGVkLgorICAgIHRvdWNoZWRfZnVuY3Rpb25zX3JlZ2V4cCA9IHIn
XlxzKlwoKD9QPGZ1bmN0aW9uPlteKV0qKVwpOicKIAogICAgICMgZS5nLiBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KICAgICAjIChEaXNjYXJkIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IHBl
cmlvZCB0byBtYXRjaCBtb3JlIGludmFsaWQgbGluZXMuKQpAQCAtMTA4LDggKzExMCw4IEBAIGNs
YXNzIENoYW5nZUxvZ0VudHJ5KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3JldmlzaW9uID0gcmV2
aXNpb24KICAgICAgICAgc2VsZi5fcGFyc2VfZW50cnkoKQogCi0gICAgQHN0YXRpY21ldGhvZAot
ICAgIGRlZiBfcGFyc2VfcmV2aWV3ZXJfdGV4dCh0ZXh0KToKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgX3BhcnNlX3Jldmlld2VyX3RleHQoc2VsZiwgdGV4dCk6CiAgICAgICAgIG1hdGNoID0g
cmUuc2VhcmNoKENoYW5nZUxvZ0VudHJ5LnJldmlld2VkX2J5X3JlZ2V4cCwgdGV4dCwgcmUuTVVM
VElMSU5FIHwgcmUuSUdOT1JFQ0FTRSkKICAgICAgICAgaWYgbm90IG1hdGNoOgogICAgICAgICAg
ICAgIyBUaGVyZSBhcmUgY2FzZXMgd2hlcmUgcGVvcGxlIG9taXQgImJ5Ii4gV2UgbWF0Y2ggaXQg
b25seSBpZiByZXZpZXdlciBwYXJ0IGxvb2tlZCBuaWNlCkBAIC0xMzcsOCArMTM5LDggQEAgY2xh
c3MgQ2hhbmdlTG9nRW50cnkob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gcmV2aWV3ZXJfdGV4
dCwgcmV2aWV3ZXJfbGlzdAogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfc3BsaXRfY29u
dHJpYnV0b3JfbmFtZXModGV4dCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9zcGxpdF9j
b250cmlidXRvcl9uYW1lcyhzZWxmLCB0ZXh0KToKICAgICAgICAgcmV0dXJuIHJlLnNwbGl0KHIn
XHMqKD86LCg/OlxzK2FuZFxzK3wmKT98KD86XnxccyspYW5kXHMrfCYmfFsvKyZdKVxzKicsIHRl
eHQpCiAKICAgICBkZWYgX2Z1enpfbWF0Y2hfcmV2aWV3ZXJzKHNlbGYsIHJldmlld2Vyc190ZXh0
X2xpc3QpOgpAQCAtMTQ4LDI0ICsxNTAsNTMgQEAgY2xhc3MgQ2hhbmdlTG9nRW50cnkob2JqZWN0
KToKICAgICAgICAgIyBGbGF0dGVuIGxpc3RzIGFuZCBnZXQgcmlkIG9mIGFueSByZXZpZXdlcnMg
d2l0aCBtb3JlIHRoYW4gb25lIGNhbmRpZGF0ZS4KICAgICAgICAgcmV0dXJuIFtyZXZpZXdlcnNb
MF0gZm9yIHJldmlld2VycyBpbiBsaXN0X29mX3Jldmlld2VycyBpZiBsZW4ocmV2aWV3ZXJzKSA9
PSAxXQogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfcGFyc2VfYXV0aG9yX25hbWVfYW5k
X2VtYWlsKGF1dGhvcl9uYW1lX2FuZF9lbWFpbCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm
IF9wYXJzZV9hdXRob3JfbmFtZV9hbmRfZW1haWwoc2VsZiwgYXV0aG9yX25hbWVfYW5kX2VtYWls
KToKICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChyJyg/UDxuYW1lPi4rPylccys8KD9QPGVtYWls
PltePl0rKT4nLCBhdXRob3JfbmFtZV9hbmRfZW1haWwpCiAgICAgICAgIHJldHVybiB7J25hbWUn
OiBtYXRjaC5ncm91cCgibmFtZSIpLCAnZW1haWwnOiBtYXRjaC5ncm91cCgiZW1haWwiKX0KIAot
ICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX3BhcnNlX2F1dGhvcl90ZXh0KHRleHQpOgorICAg
IEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGFyc2VfYXV0aG9yX3RleHQoc2VsZiwgdGV4dCk6CiAg
ICAgICAgIGlmIG5vdCB0ZXh0OgogICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgIGF1dGhv
cnMgPSBDaGFuZ2VMb2dFbnRyeS5fc3BsaXRfY29udHJpYnV0b3JfbmFtZXModGV4dCkKKyAgICAg
ICAgYXV0aG9ycyA9IHNlbGYuX3NwbGl0X2NvbnRyaWJ1dG9yX25hbWVzKHRleHQpCiAgICAgICAg
IGFzc2VydChhdXRob3JzIGFuZCBsZW4oYXV0aG9ycykgPj0gMSkKLSAgICAgICAgcmV0dXJuIFtD
aGFuZ2VMb2dFbnRyeS5fcGFyc2VfYXV0aG9yX25hbWVfYW5kX2VtYWlsKGF1dGhvcikgZm9yIGF1
dGhvciBpbiBhdXRob3JzXQorICAgICAgICByZXR1cm4gW3NlbGYuX3BhcnNlX2F1dGhvcl9uYW1l
X2FuZF9lbWFpbChhdXRob3IpIGZvciBhdXRob3IgaW4gYXV0aG9yc10KKworICAgIEBjbGFzc21l
dGhvZAorICAgIGRlZiBfcGFyc2VfdG91Y2hlZF9mdW5jdGlvbnMoc2VsZiwgdGV4dCk6CisgICAg
ICAgIHJlc3VsdCA9IHt9CisgICAgICAgIGN1cl9maWxlID0gTm9uZQorICAgICAgICBmb3IgbGlu
ZSBpbiB0ZXh0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGZpbGVfbWF0Y2ggPSByZS5tYXRj
aChzZWxmLnRvdWNoZWRfZmlsZXNfcmVnZXhwLCBsaW5lKQorICAgICAgICAgICAgaWYgZmlsZV9t
YXRjaDoKKyAgICAgICAgICAgICAgICBjdXJfZmlsZSA9IGZpbGVfbWF0Y2guZ3JvdXAoImZpbGUi
KQorICAgICAgICAgICAgICAgIHJlc3VsdFtjdXJfZmlsZV0gPSBbXQorICAgICAgICAgICAgZnVu
Y19tYXRjaCA9IHJlLm1hdGNoKHNlbGYudG91Y2hlZF9mdW5jdGlvbnNfcmVnZXhwLCBsaW5lKQor
ICAgICAgICAgICAgaWYgZnVuY19tYXRjaCBhbmQgY3VyX2ZpbGU6CisgICAgICAgICAgICAgICAg
cmVzdWx0W2N1cl9maWxlXS5hcHBlbmQoZnVuY19tYXRjaC5ncm91cCgiZnVuY3Rpb24iKSkKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9wYXJzZV9i
dWdfZGVzY3JpcHRpb24oc2VsZiwgdGV4dCk6CisgICAgICAgICMgSWYgbGluZSA0IGlzIGEgYnVn
IHVybCwgbGluZSAzIGlzIHRoZSBidWcgZGVzY3JpcHRpb24uCisgICAgICAgICMgSXQncyB0b28g
aGFyZCB0byBndWVzcyBpbiBvdGhlciBjYXNlcywgc28gd2UgcmV0dXJuIE5vbmUuCisgICAgICAg
IGxpbmVzID0gdGV4dC5zcGxpdGxpbmVzKCkKKyAgICAgICAgaWYgbGVuKGxpbmVzKSA8IDQ6Cisg
ICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBmb3IgYnVnX3VybCBpbiAoY29uZmlnX3Vy
bHMuYnVnX3VybF9zaG9ydCwgY29uZmlnX3VybHMuYnVnX3VybF9sb25nKToKKyAgICAgICAgICAg
IGlmIHJlLm1hdGNoKCJeXHMqIiArIGJ1Z191cmwgKyAiJCIsIGxpbmVzWzNdKToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbGluZXNbMl0uc3RyaXAoKQorICAgICAgICByZXR1cm4gTm9uZQogCiAg
ICAgZGVmIF9wYXJzZV9lbnRyeShzZWxmKToKICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChzZWxm
LmRhdGVfbGluZV9yZWdleHAsIHNlbGYuX2NvbnRlbnRzLCByZS5NVUxUSUxJTkUpCiAgICAgICAg
IGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgIF9sb2cud2FybmluZygiQ3JlYXRpbmcgaW52YWxp
ZCBDaGFuZ2VMb2dFbnRyeTpcbiVzIiAlIHNlbGYuX2NvbnRlbnRzKQogCisgICAgICAgIHNlbGYu
X2RhdGVfbGluZSA9IG1hdGNoLmdyb3VwKCkKKyAgICAgICAgc2VsZi5fYnVnX2Rlc2NyaXB0aW9u
ID0gc2VsZi5fcGFyc2VfYnVnX2Rlc2NyaXB0aW9uKHNlbGYuX2NvbnRlbnRzKQorCiAgICAgICAg
ICMgRklYTUU6IGdyb3VwKCJuYW1lIikgZG9lcyBub3Qgc2VlbSB0byBiZSBVbmljb2RlPyAgUHJv
YmFibHkgZHVlIHRvIHNlbGYuX2NvbnRlbnRzIG5vdCBiZWluZyB1bmljb2RlLgogICAgICAgICBz
ZWxmLl9hdXRob3JfdGV4dCA9IG1hdGNoLmdyb3VwKCJhdXRob3JzIikgaWYgbWF0Y2ggZWxzZSBO
b25lCiAgICAgICAgIHNlbGYuX2F1dGhvcnMgPSBDaGFuZ2VMb2dFbnRyeS5fcGFyc2VfYXV0aG9y
X3RleHQoc2VsZi5fYXV0aG9yX3RleHQpCkBAIC0xNzUsNiArMjA2LDEwIEBAIGNsYXNzIENoYW5n
ZUxvZ0VudHJ5KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2F1dGhvciA9IHNlbGYuX2NvbW1pdHRl
cl9saXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKHNlbGYuYXV0aG9yX2VtYWlsKCkpIG9yIHNlbGYu
X2NvbW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X25hbWUoc2VsZi5hdXRob3JfbmFtZSgpKQog
CiAgICAgICAgIHNlbGYuX3RvdWNoZWRfZmlsZXMgPSByZS5maW5kYWxsKHNlbGYudG91Y2hlZF9m
aWxlc19yZWdleHAsIHNlbGYuX2NvbnRlbnRzLCByZS5NVUxUSUxJTkUpCisgICAgICAgIHNlbGYu
X3RvdWNoZWRfZnVuY3Rpb25zID0gc2VsZi5fcGFyc2VfdG91Y2hlZF9mdW5jdGlvbnMoc2VsZi5f
Y29udGVudHMpCisKKyAgICBkZWYgZGF0ZV9saW5lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5fZGF0ZV9saW5lCiAKICAgICBkZWYgYXV0aG9yX3RleHQoc2VsZik6CiAgICAgICAgIHJldHVy
biBzZWxmLl9hdXRob3JfdGV4dApAQCAtMjIwLDkgKzI1NSwyOSBAQCBjbGFzcyBDaGFuZ2VMb2dF
bnRyeShvYmplY3QpOgogICAgIGRlZiBidWdfaWQoc2VsZik6CiAgICAgICAgIHJldHVybiBwYXJz
ZV9idWdfaWRfZnJvbV9jaGFuZ2Vsb2coc2VsZi5fY29udGVudHMpCiAKKyAgICBkZWYgYnVnX2Rl
c2NyaXB0aW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fYnVnX2Rlc2NyaXB0aW9uCisK
ICAgICBkZWYgdG91Y2hlZF9maWxlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3RvdWNo
ZWRfZmlsZXMKIAorICAgICMgUmV0dXJucyBhIGRpY3QgZnJvbSBmaWxlIG5hbWUgdG8gbGlzdHMg
b2YgZnVuY3Rpb24gbmFtZXMuCisgICAgZGVmIHRvdWNoZWRfZnVuY3Rpb25zKHNlbGYpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fdG91Y2hlZF9mdW5jdGlvbnMKKworICAgIGRlZiB0b3VjaGVkX2Zp
bGVzX3RleHQoc2VsZik6CisgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHNlbGYudG91Y2hlZF9m
aWxlc19yZWdleHAsIHNlbGYuX2NvbnRlbnRzLCByZS5NVUxUSUxJTkUpCisgICAgICAgIHJldHVy
biBzZWxmLl9jb250ZW50c1ttYXRjaC5zdGFydCgpOl0ubHN0cmlwKCJcblxyIikgaWYgbWF0Y2gg
ZWxzZSAiIgorCisgICAgIyBEZXRlcm1pbmUgaWYgYW55IHRleHQgaGFzIGJlZW4gYWRkZWQgdG8g
dGhlIHNlY3Rpb24gb24gdG91Y2hlZCBmaWxlcworICAgIGRlZiBpc190b3VjaGVkX2ZpbGVzX3Rl
eHRfY2xlYW4oc2VsZik6CisgICAgICAgIGZvciBsaW5lIGluIHNlbGYudG91Y2hlZF9maWxlc190
ZXh0KCkuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgaWYgcmUubWF0Y2goc2VsZi50b3VjaGVk
X2ZpbGVzX3JlZ2V4cCArICIkIiwgbGluZSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgIGlmIHJlLm1hdGNoKHNlbGYudG91Y2hlZF9mdW5jdGlvbnNfcmVnZXhwICsgIiQi
LCBsaW5lKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCisgICAgICAgIHJldHVybiBUcnVlCiAKICMgRklYTUU6IFZhcmlvdXMgbWV0aG9kcyBvbiBD
aGFuZ2VMb2cgc2hvdWxkIG1vdmUgaW50byBDaGFuZ2VMb2dFbnRyeSBpbnN0ZWFkLgogY2xhc3Mg
Q2hhbmdlTG9nKG9iamVjdCk6CkBAIC0yMzIsOCArMjg3LDggQEAgY2xhc3MgQ2hhbmdlTG9nKG9i
amVjdCk6CiAKICAgICBfY2hhbmdlbG9nX2luZGVudCA9ICIgIiAqIDgKIAotICAgIEBzdGF0aWNt
ZXRob2QKLSAgICBkZWYgcGFyc2VfbGF0ZXN0X2VudHJ5X2Zyb21fZmlsZShjaGFuZ2Vsb2dfZmls
ZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlX2xhdGVzdF9lbnRyeV9mcm9tX2Zp
bGUoc2VsZiwgY2hhbmdlbG9nX2ZpbGUpOgogICAgICAgICAiIiJjaGFuZ2Vsb2dfZmlsZSBtdXN0
IGJlIGEgZmlsZS1saWtlIG9iamVjdCB3aGljaCByZXR1cm5zCiAgICAgICAgIHVuaWNvZGUgc3Ry
aW5ncy4gIFVzZSBjb2RlY3Mub3BlbiBvciBTdHJpbmdJTyh1bmljb2RlKCkpCiAgICAgICAgIHRv
IHBhc3MgZmlsZSBvYmplY3RzIHRvIHRoaXMgY2xhc3MuIiIiCkBAIC0yNTcsMTUgKzMxMiwxNSBA
QCBjbGFzcyBDaGFuZ2VMb2cob2JqZWN0KToKIAogICAgIHN2bl9ibGFtZV9yZWdleHAgPSByZS5j
b21waWxlKHInXihccyooP1A8cmV2aXNpb24+XGQrKSBbXiBdKylccyooP1A8bGluZT4uKj9cbikn
KQogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfc2VwYXJhdGVfcmV2aXNpb25fYW5kX2xp
bmUobGluZSk6Ci0gICAgICAgIG1hdGNoID0gQ2hhbmdlTG9nLnN2bl9ibGFtZV9yZWdleHAubWF0
Y2gobGluZSkKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3NlcGFyYXRlX3JldmlzaW9uX2Fu
ZF9saW5lKHNlbGYsIGxpbmUpOgorICAgICAgICBtYXRjaCA9IHNlbGYuc3ZuX2JsYW1lX3JlZ2V4
cC5tYXRjaChsaW5lKQogICAgICAgICBpZiBub3QgbWF0Y2g6CiAgICAgICAgICAgICByZXR1cm4g
Tm9uZSwgbGluZQogICAgICAgICByZXR1cm4gaW50KG1hdGNoLmdyb3VwKCdyZXZpc2lvbicpKSwg
bWF0Y2guZ3JvdXAoJ2xpbmUnKQogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBwYXJzZV9l
bnRyaWVzX2Zyb21fZmlsZShjaGFuZ2Vsb2dfZmlsZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAg
ZGVmIHBhcnNlX2VudHJpZXNfZnJvbV9maWxlKHNlbGYsIGNoYW5nZWxvZ19maWxlKToKICAgICAg
ICAgIiIiY2hhbmdlbG9nX2ZpbGUgbXVzdCBiZSBhIGZpbGUtbGlrZSBvYmplY3Qgd2hpY2ggcmV0
dXJucwogICAgICAgICB1bmljb2RlIHN0cmluZ3MuICBVc2UgY29kZWNzLm9wZW4gb3IgU3RyaW5n
SU8odW5pY29kZSgpKQogICAgICAgICB0byBwYXNzIGZpbGUgb2JqZWN0cyB0byB0aGlzIGNsYXNz
LiIiIgpAQCAtMjczLDE2ICszMjgsMTYgQEAgY2xhc3MgQ2hhbmdlTG9nKG9iamVjdCk6CiAgICAg
ICAgIHJvbGxlZF9vdmVyX3JlZ2V4cCA9IHJlLmNvbXBpbGUoQ2hhbmdlTG9nRW50cnkucm9sbGVk
X292ZXJfcmVnZXhwKQogCiAgICAgICAgICMgVGhlIGZpcnN0IGxpbmUgc2hvdWxkIGJlIGEgZGF0
ZSBsaW5lLgotICAgICAgICByZXZpc2lvbiwgZmlyc3RfbGluZSA9IENoYW5nZUxvZy5fc2VwYXJh
dGVfcmV2aXNpb25fYW5kX2xpbmUoY2hhbmdlbG9nX2ZpbGUucmVhZGxpbmUoKSkKKyAgICAgICAg
cmV2aXNpb24sIGZpcnN0X2xpbmUgPSBzZWxmLl9zZXBhcmF0ZV9yZXZpc2lvbl9hbmRfbGluZShj
aGFuZ2Vsb2dfZmlsZS5yZWFkbGluZSgpKQogICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShmaXJz
dF9saW5lLCB1bmljb2RlKSkKLSAgICAgICAgaWYgbm90IGRhdGVfbGluZV9yZWdleHAubWF0Y2go
Q2hhbmdlTG9nLnN2bl9ibGFtZV9yZWdleHAuc3ViKCcnLCBmaXJzdF9saW5lKSk6CisgICAgICAg
IGlmIG5vdCBkYXRlX2xpbmVfcmVnZXhwLm1hdGNoKHNlbGYuc3ZuX2JsYW1lX3JlZ2V4cC5zdWIo
JycsIGZpcnN0X2xpbmUpKToKICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KIAogICAg
ICAgICBlbnRyeV9saW5lcyA9IFtmaXJzdF9saW5lXQogICAgICAgICByZXZpc2lvbnNfaW5fZW50
cnkgPSB7cmV2aXNpb246IDF9IGlmIHJldmlzaW9uICE9IE5vbmUgZWxzZSBOb25lCiAgICAgICAg
IGZvciBsaW5lIGluIGNoYW5nZWxvZ19maWxlOgogICAgICAgICAgICAgaWYgcmV2aXNpb25zX2lu
X2VudHJ5OgotICAgICAgICAgICAgICAgIHJldmlzaW9uLCBsaW5lID0gQ2hhbmdlTG9nLl9zZXBh
cmF0ZV9yZXZpc2lvbl9hbmRfbGluZShsaW5lKQorICAgICAgICAgICAgICAgIHJldmlzaW9uLCBs
aW5lID0gc2VsZi5fc2VwYXJhdGVfcmV2aXNpb25fYW5kX2xpbmUobGluZSkKIAogICAgICAgICAg
ICAgaWYgcm9sbGVkX292ZXJfcmVnZXhwLm1hdGNoKGxpbmUpOgogICAgICAgICAgICAgICAgIGJy
ZWFrCkBAIC0zNzcsMyArNDMyLDE5IEBAIGNsYXNzIENoYW5nZUxvZyhvYmplY3QpOgogICAgICAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIChPT1BT
ISkuIiwgbWVzc2FnZS5lbmNvZGUoInV0Zi04IikpCiAgICAgICAgICAgICBpZiBsaW5lICE9IGJ1
Z19ib2lsZXJwbGF0ZToKICAgICAgICAgICAgICAgICBwcmludCBsaW5lLAorCisgICAgZGVmIGRl
bGV0ZV9lbnRyaWVzKHNlbGYsIG51bV9lbnRyaWVzKToKKyAgICAgICAgZGF0ZV9saW5lX3JlZ2V4
cCA9IHJlLmNvbXBpbGUoQ2hhbmdlTG9nRW50cnkuZGF0ZV9saW5lX3JlZ2V4cCkKKyAgICAgICAg
cm9sbGVkX292ZXJfcmVnZXhwID0gcmUuY29tcGlsZShDaGFuZ2VMb2dFbnRyeS5yb2xsZWRfb3Zl
cl9yZWdleHApCisgICAgICAgIGVudHJpZXMgPSAwCisgICAgICAgIGZvciBsaW5lIGluIGZpbGVp
bnB1dC5GaWxlSW5wdXQoc2VsZi5wYXRoLCBpbnBsYWNlPTEpOgorICAgICAgICAgICAgaWYgZGF0
ZV9saW5lX3JlZ2V4cC5tYXRjaChsaW5lKToKKyAgICAgICAgICAgICAgICBlbnRyaWVzICs9IDEK
KyAgICAgICAgICAgIGVsaWYgcm9sbGVkX292ZXJfcmVnZXhwLm1hdGNoKGxpbmUpOgorICAgICAg
ICAgICAgICAgIGVudHJpZXMgPSBudW1fZW50cmllcyArIDEKKyAgICAgICAgICAgIGlmIGVudHJp
ZXMgPiBudW1fZW50cmllczoKKyAgICAgICAgICAgICAgICBwcmludCBsaW5lLAorCisgICAgZGVm
IHByZXBlbmRfdGV4dChzZWxmLCB0ZXh0KToKKyAgICAgICAgZGF0YSA9IGNvZGVjcy5vcGVuKHNl
bGYucGF0aCwgInIiLCAidXRmLTgiKS5yZWFkKCkKKyAgICAgICAgY29kZWNzLm9wZW4oc2VsZi5w
YXRoLCAidyIsICJ1dGYtOCIpLndyaXRlKHRleHQgKyBkYXRhKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0
LnB5CmluZGV4IGZhMjMzOWY0NTY2ZTU0OTRiYzIwZjI0ZDJiNWJiNmYwMjIwZTk0YWQuLjE4NWQ1
Zjc5NjEwYjQ1MjI0NjY1YmEwMWM3OWM3NGQyNjU0ZmUzMDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRl
c3QucHkKQEAgLTIzNiwxNCArMjM2LDI1IEBAIGNsYXNzIENoYW5nZUxvZ1Rlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICBjaGFuZ2Vsb2dfZmlsZSA9IFN0cmluZ0lPKHNlbGYuX2V4YW1w
bGVfY2hhbmdlbG9nKQogICAgICAgICBwYXJzZWRfZW50cmllcyA9IGxpc3QoQ2hhbmdlTG9nLnBh
cnNlX2VudHJpZXNfZnJvbV9maWxlKGNoYW5nZWxvZ19maWxlKSkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4ocGFyc2VkX2VudHJpZXMpLCA5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBhcnNlZF9lbnRyaWVzWzBdLmRhdGVfbGluZSgpLCB1IjIwMDktMDgtMTcgIFRvciBBcm5lIFZl
c3RiXHhmOCAgPHZlc3Rib0B3ZWJraXQub3JnPiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cGFyc2VkX2VudHJpZXNbMF0ucmV2aWV3ZXJfdGV4dCgpLCAiRGF2aWQgTGV2aW4iKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzBdLmlzX3RvdWNoZWRfZmlsZXNfdGV4
dF9jbGVhbigpLCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50cmll
c1sxXS5hdXRob3JfZW1haWwoKSwgImRka2lsemVyQGFwcGxlLmNvbSIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocGFyc2VkX2VudHJpZXNbMV0udG91Y2hlZF9maWxlc190ZXh0KCksICIgICAg
ICAgICogU2NyaXB0cy9idWd6aWxsYS10b29sOlxuICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9z
Y20ucHk6XG4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzFdLmlz
X3RvdWNoZWRfZmlsZXNfdGV4dF9jbGVhbigpLCBUcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBhcnNlZF9lbnRyaWVzWzJdLnJldmlld2VyX3RleHQoKSwgIk1hcmsgUm93ZSIpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VkX2VudHJpZXNbMl0udG91Y2hlZF9maWxlcygpLCBb
IkR1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSJdKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzJdLnRvdWNoZWRfZnVuY3Rpb25zKCksIHsi
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93Lm1tIjogWyItW0R1bXBSZW5k
ZXJUcmVlV2luZG93IGNsb3NlXSJdfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRf
ZW50cmllc1syXS5pc190b3VjaGVkX2ZpbGVzX3RleHRfY2xlYW4oKSwgRmFsc2UpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VkX2VudHJpZXNbM10uYXV0aG9yX25hbWUoKSwgIkJlbmph
bWluIFBvdWxhaW4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzNd
LnRvdWNoZWRfZmlsZXMoKSwgWyJwbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQuY3BwIiwgInBsYXRmb3Jt
L21hYy9LVVJMTWFjLm1tIiwKICAgICAgICAgICAgICJXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuY3BwIiwgImV3ay9ld2tfcHJpdmF0ZS5oIiwgImV3ay9ld2tfdmlldy5jcHAiXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50cmllc1szXS50b3VjaGVkX2Z1bmN0aW9u
cygpLCB7InBsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHAiOiBbIldlYkNvcmU6OmNyZWF0ZUNGVVJM
RnJvbUJ1ZmZlciIsICJXZWJDb3JlOjpLVVJMOjpjcmVhdGVDRlVSTCJdLAorICAgICAgICAgICAg
InBsYXRmb3JtL21hYy9LVVJMTWFjLm1tIjogWyJXZWJDb3JlOjpLVVJMOjpvcGVyYXRvciBOU1VS
TCAqIiwgIldlYkNvcmU6OktVUkw6OmNyZWF0ZUNGVVJMIl0sCisgICAgICAgICAgICAiV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCI6IFsiV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZs
OjpjbG9zZVdpbmRvd1Nvb24iXSwgImV3ay9ld2tfcHJpdmF0ZS5oIjogW10sICJld2svZXdrX3Zp
ZXcuY3BwIjogW119KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzNd
LmJ1Z19kZXNjcmlwdGlvbigpLCAiW01hY10gUmVzb3VyY2VSZXF1ZXN0J3MgbnNVUkxSZXF1ZXN0
KCkgZG9lcyBub3QgZGlmZmVyZW50aWF0ZSBudWxsIGFuZCBlbXB0eSBVUkxzIHdpdGggQ0ZOZXR3
b3JrIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50cmllc1s0XS5yZXZpZXdl
cl90ZXh0KCksICJEYXZpZCBIeWF0dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2Vk
X2VudHJpZXNbNF0uYnVnX2Rlc2NyaXB0aW9uKCksIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocGFyc2VkX2VudHJpZXNbNV0ucmV2aWV3ZXJfdGV4dCgpLCAiQWRhbSBSb2JlbiIpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VkX2VudHJpZXNbNl0ucmV2aWV3ZXJfdGV4dCgp
LCAiVG9ueSBDaGFuZyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VkX2VudHJpZXNb
N10ucmV2aWV3ZXJfdGV4dCgpLCBOb25lKQpAQCAtNDYyLDcgKzQ3Myw5IEBAIGNsYXNzIENoYW5n
ZUxvZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxh
dGVzdF9lbnRyeS5hdXRob3JfbmFtZSgpLCAiUGV0ZXIgS2FzdGluZyIpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGF0ZXN0X2VudHJ5LmF1dGhvcl9lbWFpbCgpLCAicGthc3RpbmdAZ29vZ2xl
LmNvbSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF0ZXN0X2VudHJ5LnJldmlld2VyX3Rl
eHQoKSwgdSJUb3IgQXJuZSBWZXN0Ylx4ZjgiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxh
dGVzdF9lbnRyeS50b3VjaGVkX2ZpbGVzKCksIFsiRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5k
ZXJUcmVlLnZjcHJvaiIsICJEdW1wUmVuZGVyVHJlZS93aW4vSW1hZ2VEaWZmLnZjcHJvaiIsICJE
dW1wUmVuZGVyVHJlZS93aW4vVGVzdE5ldHNjYXBlUGx1Z2luL1Rlc3ROZXRzY2FwZVBsdWdpbi52
Y3Byb2oiXSkKKyAgICAgICAgdG91Y2hlZF9maWxlcyA9IFsiRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLnZjcHJvaiIsICJEdW1wUmVuZGVyVHJlZS93aW4vSW1hZ2VEaWZmLnZjcHJv
aiIsICJEdW1wUmVuZGVyVHJlZS93aW4vVGVzdE5ldHNjYXBlUGx1Z2luL1Rlc3ROZXRzY2FwZVBs
dWdpbi52Y3Byb2oiXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxhdGVzdF9lbnRyeS50b3Vj
aGVkX2ZpbGVzKCksIHRvdWNoZWRfZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF0
ZXN0X2VudHJ5LnRvdWNoZWRfZnVuY3Rpb25zKCksIGRpY3QoKGYsIFtdKSBmb3IgZiBpbiB0b3Vj
aGVkX2ZpbGVzKSkKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUobGF0ZXN0X2VudHJ5LnJldmll
d2VyKCkpICAjIE1ha2Ugc3VyZSB0aGF0IG91ciBVVEY4LWJhc2VkIGxvb2t1cCBvZiBUb3Igd29y
a3MuCiAKQEAgLTU4MywzICs1OTYsMzcgQEAgY2xhc3MgQ2hhbmdlTG9nVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIGV4cGVjdGVkX2NvbnRlbnRzID0gY2hhbmdlbG9nX2NvbnRlbnRz
LnJlcGxhY2UoIk5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLlxuICAgICAgICBOZWVk
IHRoZSBidWcgVVJMIChPT1BTISkuIiwgZXhwZWN0ZWRfbWVzc2FnZSkKICAgICAgICAgb3MucmVt
b3ZlKGNoYW5nZWxvZ19wYXRoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9jb250
ZW50cy5zcGxpdGxpbmVzKCksIGV4cGVjdGVkX2NvbnRlbnRzLnNwbGl0bGluZXMoKSkKKworICAg
IGRlZiB0ZXN0X2RlbGV0ZV9lbnRyaWVzKHNlbGYpOgorICAgICAgICBjaGFuZ2Vsb2dfcGF0aCA9
IHNlbGYuX3dyaXRlX3RtcF9maWxlX3dpdGhfY29udGVudHMoc2VsZi5fZXhhbXBsZV9jaGFuZ2Vs
b2cuZW5jb2RlKCJ1dGYtOCIpKQorICAgICAgICBDaGFuZ2VMb2coY2hhbmdlbG9nX3BhdGgpLmRl
bGV0ZV9lbnRyaWVzKDgpCisgICAgICAgIGFjdHVhbF9jb250ZW50cyA9IHNlbGYuX3JlYWRfZmls
ZV9jb250ZW50cyhjaGFuZ2Vsb2dfcGF0aCwgInV0Zi04IikKKyAgICAgICAgZXhwZWN0ZWRfY29u
dGVudHMgPSAiIiIyMDExLTEwLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4K
KworICAgICAgIFJlc29sdmUgcmVndWxhciBhbmQgdmlzaXRlZCBsaW5rIHN0eWxlIGluIGEgc2lu
Z2xlIHBhc3MKKyAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njk4MzgKKworICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyCisKKyAgICAgICBXZSBjYW4g
c2ltcGxpZnkgYW5kIHNwZWVkIHVwIHNlbGVjdG9yIG1hdGNoaW5nIGJ5IHJlbW92aW5nIHRoZSBy
ZWN1cnNpdmUgbWF0Y2hpbmcgZG9uZQorICAgICAgIHRvIGdlbmVyYXRlIHRoZSBzdHlsZSBmb3Ig
dGhlIDp2aXNpdGVkIHBzZXVkbyBzZWxlY3Rvci4gQm90aCByZWd1bGFyIGFuZCB2aXNpdGVkIGxp
bmsgc3R5bGUKKyAgICAgICBjYW4gYmUgZ2VuZXJhdGVkIGluIGEgc2luZ2xlIHBhc3MgdGhyb3Vn
aCB0aGUgc3R5bGUgc2VsZWN0b3IuCisKKz09IFJvbGxlZCBvdmVyIHRvIENoYW5nZUxvZy0yMDA5
LTA2LTE2ID09CisiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfY29udGVudHMu
c3BsaXRsaW5lcygpLCBleHBlY3RlZF9jb250ZW50cy5zcGxpdGxpbmVzKCkpCisKKyAgICAgICAg
Q2hhbmdlTG9nKGNoYW5nZWxvZ19wYXRoKS5kZWxldGVfZW50cmllcygyKQorICAgICAgICBhY3R1
YWxfY29udGVudHMgPSBzZWxmLl9yZWFkX2ZpbGVfY29udGVudHMoY2hhbmdlbG9nX3BhdGgsICJ1
dGYtOCIpCisgICAgICAgIGV4cGVjdGVkX2NvbnRlbnRzID0gIj09IFJvbGxlZCBvdmVyIHRvIENo
YW5nZUxvZy0yMDA5LTA2LTE2ID09XG4iCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFs
X2NvbnRlbnRzLnNwbGl0bGluZXMoKSwgZXhwZWN0ZWRfY29udGVudHMuc3BsaXRsaW5lcygpKQor
CisgICAgICAgIG9zLnJlbW92ZShjaGFuZ2Vsb2dfcGF0aCkKKworICAgIGRlZiB0ZXN0X3ByZXBl
bmRfdGV4dChzZWxmKToKKyAgICAgICAgY2hhbmdlbG9nX3BhdGggPSBzZWxmLl93cml0ZV90bXBf
ZmlsZV93aXRoX2NvbnRlbnRzKHNlbGYuX2V4YW1wbGVfY2hhbmdlbG9nLmVuY29kZSgidXRmLTgi
KSkKKyAgICAgICAgQ2hhbmdlTG9nKGNoYW5nZWxvZ19wYXRoKS5wcmVwZW5kX3RleHQoc2VsZi5f
ZXhhbXBsZV9lbnRyeSArICJcbiIpCisgICAgICAgIGFjdHVhbF9jb250ZW50cyA9IHNlbGYuX3Jl
YWRfZmlsZV9jb250ZW50cyhjaGFuZ2Vsb2dfcGF0aCwgInV0Zi04IikKKyAgICAgICAgZXhwZWN0
ZWRfY29udGVudHMgPSBzZWxmLl9leGFtcGxlX2VudHJ5ICsgIlxuIiArIHNlbGYuX2V4YW1wbGVf
Y2hhbmdlbG9nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2NvbnRlbnRzLnNwbGl0
bGluZXMoKSwgZXhwZWN0ZWRfY29udGVudHMuc3BsaXRsaW5lcygpKQorICAgICAgICBvcy5yZW1v
dmUoY2hhbmdlbG9nX3BhdGgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184053</attachid>
            <date>2013-01-22 14:51:37 -0800</date>
            <delta_ts>2013-01-22 17:38:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107478-20130123094830.patch</filename>
            <type>text/plain</type>
            <size>16931</size>
            <attacher name="Timothy Loh">timloh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMjgxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzg2MWJlMjc1ZmI5OWU0OTgwOWM3ODAzMTQ4ZWFiYmNl
NTRjN2FlNS4uNDFiNzdmMDFkOTY1YThmMGY5NzU3OGQ5NjZjNGFmMTZkMDFmODE5NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQy
IEBACisyMDEzLTAxLTIyICBUaW1vdGh5IExvaCAgPHRpbWxvaEBjaHJvbWl1bS5jb20+CisKKyAg
ICAgICAgQWRkIGZ1bmN0aW9ucyB0byBDaGFuZ2VMb2cgLSBwYXJzZSBidWcgZGVzYy9jaGFuZ2Vk
IGZ1bmN0aW9ucywgZGVsZXRlL3ByZXBlbmQgZW50cmllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gdGhlIHJvYWQgdG8gcmVzb2x2aW5nIEJ1ZyA3
NDM1OCwgd2UgbmVlZCBhIGZldyBtb3JlIGZ1bmN0aW9ucyBpbgorICAgICAgICBjaGFuZ2Vsb2cu
cHkuCisgICAgICAgIFRvIG1ha2UgdGhpbmdzIGVhc2llciB0byBtb2NrLCBjaGFuZ2UgQHN0YXRp
Y21ldGhvZHMgdG8gQGNsYXNzbWV0aG9kcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weToKKyAgICAgICAgKENoYW5nZUxvZ0VudHJ5KToK
KyAgICAgICAgKENoYW5nZUxvZ0VudHJ5Ll9wYXJzZV9yZXZpZXdlcl90ZXh0KToKKyAgICAgICAg
KENoYW5nZUxvZ0VudHJ5Ll9zcGxpdF9jb250cmlidXRvcl9uYW1lcyk6CisgICAgICAgIChDaGFu
Z2VMb2dFbnRyeS5fcGFyc2VfYXV0aG9yX25hbWVfYW5kX2VtYWlsKToKKyAgICAgICAgKENoYW5n
ZUxvZ0VudHJ5Ll9wYXJzZV9hdXRob3JfdGV4dCk6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeS5f
cGFyc2VfdG91Y2hlZF9mdW5jdGlvbnMpOgorICAgICAgICAoQ2hhbmdlTG9nRW50cnkuX3BhcnNl
X2J1Z19kZXNjcmlwdGlvbik6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeS5fcGFyc2VfZW50cnkp
OgorICAgICAgICAoQ2hhbmdlTG9nRW50cnkuZGF0ZV9saW5lKToKKyAgICAgICAgKENoYW5nZUxv
Z0VudHJ5LmJ1Z19kZXNjcmlwdGlvbik6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeS50b3VjaGVk
X2Z1bmN0aW9ucyk6CisgICAgICAgIChDaGFuZ2VMb2dFbnRyeS50b3VjaGVkX2ZpbGVzX3RleHQp
OgorICAgICAgICAoQ2hhbmdlTG9nRW50cnkuaXNfdG91Y2hlZF9maWxlc190ZXh0X2NsZWFuKToK
KyAgICAgICAgKENoYW5nZUxvZyk6CisgICAgICAgIChDaGFuZ2VMb2cucGFyc2VfbGF0ZXN0X2Vu
dHJ5X2Zyb21fZmlsZSk6CisgICAgICAgIChDaGFuZ2VMb2cuX3NlcGFyYXRlX3JldmlzaW9uX2Fu
ZF9saW5lKToKKyAgICAgICAgKENoYW5nZUxvZy5wYXJzZV9lbnRyaWVzX2Zyb21fZmlsZSk6Cisg
ICAgICAgIChDaGFuZ2VMb2cuc2V0X3Nob3J0X2Rlc2NyaXB0aW9uX2FuZF9idWdfdXJsKToKKyAg
ICAgICAgKENoYW5nZUxvZy5kZWxldGVfZW50cmllcyk6CisgICAgICAgIChDaGFuZ2VMb2cucHJl
cGVuZF90ZXh0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9j
aGFuZ2Vsb2dfdW5pdHRlc3QucHk6CisgICAgICAgICh0ZXN0X3BhcnNlX2xvZ19lbnRyaWVzX2Zy
b21fY2hhbmdlbG9nKToKKyAgICAgICAgKHRlc3RfbGF0ZXN0X2VudHJ5X3BhcnNlKToKKyAgICAg
ICAgKHRlc3Rfc2V0X3Nob3J0X2Rlc2NyaXB0aW9uX2FuZF9idWdfdXJsKToKKyAgICAgICAgKHRl
c3RfZGVsZXRlX2VudHJpZXMpOgorICAgICAgICAodGVzdF9wcmVwZW5kX3RleHQpOgorCiAyMDEz
LTAxLTIwICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gbW92ZSBmcmFtZSBnZW5lcmF0aW9uIHJlbGF0ZWQgbWV0aG9kcyB0byBUZXN0
UnVubmVyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9jaGFuZ2Vsb2cucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9j
aGFuZ2Vsb2cucHkKaW5kZXggYzVjZjQyYzc5Y2Y5NTZiYTBjMmZjZDI5ZTNhNTQxZGUwZDU0NDA2
OC4uNzQ4MTgyZjQyZTMxZGVkOWMxYTQ5ZGQ3NzI1NmU2MTZiMWM1NGYwYSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQpAQCAt
NjQsNiArNjQsOCBAQCBjbGFzcyBDaGFuZ2VMb2dFbnRyeShvYmplY3QpOgogCiAgICAgIyBlLmcu
ICogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwOiBJbXBsZW1lbnQgRm9vQmFy
UXV1eC4KICAgICB0b3VjaGVkX2ZpbGVzX3JlZ2V4cCA9IHInXlxzKlwqXHMqKD9QPGZpbGU+W0Et
WmEtejAtOV9cLVwuL1xcXSspXHMqXDonCisgICAgIyBlLmcuIChDaGFuZ2VMb2dFbnRyeS50b3Vj
aGVkX2Z1bmN0aW9ucyk6IEFkZGVkLgorICAgIHRvdWNoZWRfZnVuY3Rpb25zX3JlZ2V4cCA9IHIn
XlxzKlwoKD9QPGZ1bmN0aW9uPlteKV0qKVwpOicKIAogICAgICMgZS5nLiBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KICAgICAjIChEaXNjYXJkIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IHBl
cmlvZCB0byBtYXRjaCBtb3JlIGludmFsaWQgbGluZXMuKQpAQCAtMTA4LDggKzExMCw4IEBAIGNs
YXNzIENoYW5nZUxvZ0VudHJ5KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3JldmlzaW9uID0gcmV2
aXNpb24KICAgICAgICAgc2VsZi5fcGFyc2VfZW50cnkoKQogCi0gICAgQHN0YXRpY21ldGhvZAot
ICAgIGRlZiBfcGFyc2VfcmV2aWV3ZXJfdGV4dCh0ZXh0KToKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgX3BhcnNlX3Jldmlld2VyX3RleHQoY2xzLCB0ZXh0KToKICAgICAgICAgbWF0Y2ggPSBy
ZS5zZWFyY2goQ2hhbmdlTG9nRW50cnkucmV2aWV3ZWRfYnlfcmVnZXhwLCB0ZXh0LCByZS5NVUxU
SUxJTkUgfCByZS5JR05PUkVDQVNFKQogICAgICAgICBpZiBub3QgbWF0Y2g6CiAgICAgICAgICAg
ICAjIFRoZXJlIGFyZSBjYXNlcyB3aGVyZSBwZW9wbGUgb21pdCAiYnkiLiBXZSBtYXRjaCBpdCBv
bmx5IGlmIHJldmlld2VyIHBhcnQgbG9va2VkIG5pY2UKQEAgLTEzNyw4ICsxMzksOCBAQCBjbGFz
cyBDaGFuZ2VMb2dFbnRyeShvYmplY3QpOgogCiAgICAgICAgIHJldHVybiByZXZpZXdlcl90ZXh0
LCByZXZpZXdlcl9saXN0CiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9zcGxpdF9jb250
cmlidXRvcl9uYW1lcyh0ZXh0KToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3NwbGl0X2Nv
bnRyaWJ1dG9yX25hbWVzKGNscywgdGV4dCk6CiAgICAgICAgIHJldHVybiByZS5zcGxpdChyJ1xz
Kig/OiwoPzpccythbmRccyt8Jik/fCg/Ol58XHMrKWFuZFxzK3wmJnxbLysmXSlccyonLCB0ZXh0
KQogCiAgICAgZGVmIF9mdXp6X21hdGNoX3Jldmlld2VycyhzZWxmLCByZXZpZXdlcnNfdGV4dF9s
aXN0KToKQEAgLTE0OCwyNCArMTUwLDUzIEBAIGNsYXNzIENoYW5nZUxvZ0VudHJ5KG9iamVjdCk6
CiAgICAgICAgICMgRmxhdHRlbiBsaXN0cyBhbmQgZ2V0IHJpZCBvZiBhbnkgcmV2aWV3ZXJzIHdp
dGggbW9yZSB0aGFuIG9uZSBjYW5kaWRhdGUuCiAgICAgICAgIHJldHVybiBbcmV2aWV3ZXJzWzBd
IGZvciByZXZpZXdlcnMgaW4gbGlzdF9vZl9yZXZpZXdlcnMgaWYgbGVuKHJldmlld2VycykgPT0g
MV0KIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX3BhcnNlX2F1dGhvcl9uYW1lX2FuZF9l
bWFpbChhdXRob3JfbmFtZV9hbmRfZW1haWwpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBf
cGFyc2VfYXV0aG9yX25hbWVfYW5kX2VtYWlsKGNscywgYXV0aG9yX25hbWVfYW5kX2VtYWlsKToK
ICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChyJyg/UDxuYW1lPi4rPylccys8KD9QPGVtYWlsPlte
Pl0rKT4nLCBhdXRob3JfbmFtZV9hbmRfZW1haWwpCiAgICAgICAgIHJldHVybiB7J25hbWUnOiBt
YXRjaC5ncm91cCgibmFtZSIpLCAnZW1haWwnOiBtYXRjaC5ncm91cCgiZW1haWwiKX0KIAotICAg
IEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX3BhcnNlX2F1dGhvcl90ZXh0KHRleHQpOgorICAgIEBj
bGFzc21ldGhvZAorICAgIGRlZiBfcGFyc2VfYXV0aG9yX3RleHQoY2xzLCB0ZXh0KToKICAgICAg
ICAgaWYgbm90IHRleHQ6CiAgICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgYXV0aG9ycyA9
IENoYW5nZUxvZ0VudHJ5Ll9zcGxpdF9jb250cmlidXRvcl9uYW1lcyh0ZXh0KQorICAgICAgICBh
dXRob3JzID0gY2xzLl9zcGxpdF9jb250cmlidXRvcl9uYW1lcyh0ZXh0KQogICAgICAgICBhc3Nl
cnQoYXV0aG9ycyBhbmQgbGVuKGF1dGhvcnMpID49IDEpCi0gICAgICAgIHJldHVybiBbQ2hhbmdl
TG9nRW50cnkuX3BhcnNlX2F1dGhvcl9uYW1lX2FuZF9lbWFpbChhdXRob3IpIGZvciBhdXRob3Ig
aW4gYXV0aG9yc10KKyAgICAgICAgcmV0dXJuIFtjbHMuX3BhcnNlX2F1dGhvcl9uYW1lX2FuZF9l
bWFpbChhdXRob3IpIGZvciBhdXRob3IgaW4gYXV0aG9yc10KKworICAgIEBjbGFzc21ldGhvZAor
ICAgIGRlZiBfcGFyc2VfdG91Y2hlZF9mdW5jdGlvbnMoY2xzLCB0ZXh0KToKKyAgICAgICAgcmVz
dWx0ID0ge30KKyAgICAgICAgY3VyX2ZpbGUgPSBOb25lCisgICAgICAgIGZvciBsaW5lIGluIHRl
eHQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgZmlsZV9tYXRjaCA9IHJlLm1hdGNoKGNscy50
b3VjaGVkX2ZpbGVzX3JlZ2V4cCwgbGluZSkKKyAgICAgICAgICAgIGlmIGZpbGVfbWF0Y2g6Cisg
ICAgICAgICAgICAgICAgY3VyX2ZpbGUgPSBmaWxlX21hdGNoLmdyb3VwKCJmaWxlIikKKyAgICAg
ICAgICAgICAgICByZXN1bHRbY3VyX2ZpbGVdID0gW10KKyAgICAgICAgICAgIGZ1bmNfbWF0Y2gg
PSByZS5tYXRjaChjbHMudG91Y2hlZF9mdW5jdGlvbnNfcmVnZXhwLCBsaW5lKQorICAgICAgICAg
ICAgaWYgZnVuY19tYXRjaCBhbmQgY3VyX2ZpbGU6CisgICAgICAgICAgICAgICAgcmVzdWx0W2N1
cl9maWxlXS5hcHBlbmQoZnVuY19tYXRjaC5ncm91cCgiZnVuY3Rpb24iKSkKKyAgICAgICAgcmV0
dXJuIHJlc3VsdAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9wYXJzZV9idWdfZGVzY3Jp
cHRpb24oY2xzLCB0ZXh0KToKKyAgICAgICAgIyBJZiBsaW5lIDQgaXMgYSBidWcgdXJsLCBsaW5l
IDMgaXMgdGhlIGJ1ZyBkZXNjcmlwdGlvbi4KKyAgICAgICAgIyBJdCdzIHRvbyBoYXJkIHRvIGd1
ZXNzIGluIG90aGVyIGNhc2VzLCBzbyB3ZSByZXR1cm4gTm9uZS4KKyAgICAgICAgbGluZXMgPSB0
ZXh0LnNwbGl0bGluZXMoKQorICAgICAgICBpZiBsZW4obGluZXMpIDwgNDoKKyAgICAgICAgICAg
IHJldHVybiBOb25lCisgICAgICAgIGZvciBidWdfdXJsIGluIChjb25maWdfdXJscy5idWdfdXJs
X3Nob3J0LCBjb25maWdfdXJscy5idWdfdXJsX2xvbmcpOgorICAgICAgICAgICAgaWYgcmUubWF0
Y2goIl5ccyoiICsgYnVnX3VybCArICIkIiwgbGluZXNbM10pOgorICAgICAgICAgICAgICAgIHJl
dHVybiBsaW5lc1syXS5zdHJpcCgpCisgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgX3Bh
cnNlX2VudHJ5KHNlbGYpOgogICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKHNlbGYuZGF0ZV9saW5l
X3JlZ2V4cCwgc2VsZi5fY29udGVudHMsIHJlLk1VTFRJTElORSkKICAgICAgICAgaWYgbm90IG1h
dGNoOgogICAgICAgICAgICAgX2xvZy53YXJuaW5nKCJDcmVhdGluZyBpbnZhbGlkIENoYW5nZUxv
Z0VudHJ5OlxuJXMiICUgc2VsZi5fY29udGVudHMpCiAKKyAgICAgICAgc2VsZi5fZGF0ZV9saW5l
ID0gbWF0Y2guZ3JvdXAoKQorICAgICAgICBzZWxmLl9idWdfZGVzY3JpcHRpb24gPSBzZWxmLl9w
YXJzZV9idWdfZGVzY3JpcHRpb24oc2VsZi5fY29udGVudHMpCisKICAgICAgICAgIyBGSVhNRTog
Z3JvdXAoIm5hbWUiKSBkb2VzIG5vdCBzZWVtIHRvIGJlIFVuaWNvZGU/ICBQcm9iYWJseSBkdWUg
dG8gc2VsZi5fY29udGVudHMgbm90IGJlaW5nIHVuaWNvZGUuCiAgICAgICAgIHNlbGYuX2F1dGhv
cl90ZXh0ID0gbWF0Y2guZ3JvdXAoImF1dGhvcnMiKSBpZiBtYXRjaCBlbHNlIE5vbmUKICAgICAg
ICAgc2VsZi5fYXV0aG9ycyA9IENoYW5nZUxvZ0VudHJ5Ll9wYXJzZV9hdXRob3JfdGV4dChzZWxm
Ll9hdXRob3JfdGV4dCkKQEAgLTE3NSw2ICsyMDYsMTAgQEAgY2xhc3MgQ2hhbmdlTG9nRW50cnko
b2JqZWN0KToKICAgICAgICAgc2VsZi5fYXV0aG9yID0gc2VsZi5fY29tbWl0dGVyX2xpc3QuY29u
dHJpYnV0b3JfYnlfZW1haWwoc2VsZi5hdXRob3JfZW1haWwoKSkgb3Igc2VsZi5fY29tbWl0dGVy
X2xpc3QuY29udHJpYnV0b3JfYnlfbmFtZShzZWxmLmF1dGhvcl9uYW1lKCkpCiAKICAgICAgICAg
c2VsZi5fdG91Y2hlZF9maWxlcyA9IHJlLmZpbmRhbGwoc2VsZi50b3VjaGVkX2ZpbGVzX3JlZ2V4
cCwgc2VsZi5fY29udGVudHMsIHJlLk1VTFRJTElORSkKKyAgICAgICAgc2VsZi5fdG91Y2hlZF9m
dW5jdGlvbnMgPSBzZWxmLl9wYXJzZV90b3VjaGVkX2Z1bmN0aW9ucyhzZWxmLl9jb250ZW50cykK
KworICAgIGRlZiBkYXRlX2xpbmUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9kYXRlX2xp
bmUKIAogICAgIGRlZiBhdXRob3JfdGV4dChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2F1
dGhvcl90ZXh0CkBAIC0yMjAsOSArMjU1LDI5IEBAIGNsYXNzIENoYW5nZUxvZ0VudHJ5KG9iamVj
dCk6CiAgICAgZGVmIGJ1Z19pZChzZWxmKToKICAgICAgICAgcmV0dXJuIHBhcnNlX2J1Z19pZF9m
cm9tX2NoYW5nZWxvZyhzZWxmLl9jb250ZW50cykKIAorICAgIGRlZiBidWdfZGVzY3JpcHRpb24o
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9idWdfZGVzY3JpcHRpb24KKwogICAgIGRlZiB0
b3VjaGVkX2ZpbGVzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fdG91Y2hlZF9maWxlcwog
CisgICAgIyBSZXR1cm5zIGEgZGljdCBmcm9tIGZpbGUgbmFtZSB0byBsaXN0cyBvZiBmdW5jdGlv
biBuYW1lcy4KKyAgICBkZWYgdG91Y2hlZF9mdW5jdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLl90b3VjaGVkX2Z1bmN0aW9ucworCisgICAgZGVmIHRvdWNoZWRfZmlsZXNfdGV4dChz
ZWxmKToKKyAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goc2VsZi50b3VjaGVkX2ZpbGVzX3JlZ2V4
cCwgc2VsZi5fY29udGVudHMsIHJlLk1VTFRJTElORSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Nv
bnRlbnRzW21hdGNoLnN0YXJ0KCk6XS5sc3RyaXAoIlxuXHIiKSBpZiBtYXRjaCBlbHNlICIiCisK
KyAgICAjIERldGVybWluZSBpZiBhbnkgdGV4dCBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc2VjdGlv
biBvbiB0b3VjaGVkIGZpbGVzCisgICAgZGVmIGlzX3RvdWNoZWRfZmlsZXNfdGV4dF9jbGVhbihz
ZWxmKToKKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi50b3VjaGVkX2ZpbGVzX3RleHQoKS5zcGxp
dGxpbmVzKCk6CisgICAgICAgICAgICBpZiByZS5tYXRjaChzZWxmLnRvdWNoZWRfZmlsZXNfcmVn
ZXhwICsgIiQiLCBsaW5lKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAg
aWYgcmUubWF0Y2goc2VsZi50b3VjaGVkX2Z1bmN0aW9uc19yZWdleHAgKyAiJCIsIGxpbmUpOgor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAg
ICAgcmV0dXJuIFRydWUKIAogIyBGSVhNRTogVmFyaW91cyBtZXRob2RzIG9uIENoYW5nZUxvZyBz
aG91bGQgbW92ZSBpbnRvIENoYW5nZUxvZ0VudHJ5IGluc3RlYWQuCiBjbGFzcyBDaGFuZ2VMb2co
b2JqZWN0KToKQEAgLTIzMiw4ICsyODcsOCBAQCBjbGFzcyBDaGFuZ2VMb2cob2JqZWN0KToKIAog
ICAgIF9jaGFuZ2Vsb2dfaW5kZW50ID0gIiAiICogOAogCi0gICAgQHN0YXRpY21ldGhvZAotICAg
IGRlZiBwYXJzZV9sYXRlc3RfZW50cnlfZnJvbV9maWxlKGNoYW5nZWxvZ19maWxlKToKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2VfbGF0ZXN0X2VudHJ5X2Zyb21fZmlsZShjbHMsIGNo
YW5nZWxvZ19maWxlKToKICAgICAgICAgIiIiY2hhbmdlbG9nX2ZpbGUgbXVzdCBiZSBhIGZpbGUt
bGlrZSBvYmplY3Qgd2hpY2ggcmV0dXJucwogICAgICAgICB1bmljb2RlIHN0cmluZ3MuICBVc2Ug
Y29kZWNzLm9wZW4gb3IgU3RyaW5nSU8odW5pY29kZSgpKQogICAgICAgICB0byBwYXNzIGZpbGUg
b2JqZWN0cyB0byB0aGlzIGNsYXNzLiIiIgpAQCAtMjU3LDE1ICszMTIsMTUgQEAgY2xhc3MgQ2hh
bmdlTG9nKG9iamVjdCk6CiAKICAgICBzdm5fYmxhbWVfcmVnZXhwID0gcmUuY29tcGlsZShyJ14o
XHMqKD9QPHJldmlzaW9uPlxkKykgW14gXSspXHMqKD9QPGxpbmU+Lio/XG4pJykKIAotICAgIEBz
dGF0aWNtZXRob2QKLSAgICBkZWYgX3NlcGFyYXRlX3JldmlzaW9uX2FuZF9saW5lKGxpbmUpOgot
ICAgICAgICBtYXRjaCA9IENoYW5nZUxvZy5zdm5fYmxhbWVfcmVnZXhwLm1hdGNoKGxpbmUpCisg
ICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9zZXBhcmF0ZV9yZXZpc2lvbl9hbmRfbGluZShjbHMs
IGxpbmUpOgorICAgICAgICBtYXRjaCA9IGNscy5zdm5fYmxhbWVfcmVnZXhwLm1hdGNoKGxpbmUp
CiAgICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgIHJldHVybiBOb25lLCBsaW5lCiAg
ICAgICAgIHJldHVybiBpbnQobWF0Y2guZ3JvdXAoJ3JldmlzaW9uJykpLCBtYXRjaC5ncm91cCgn
bGluZScpCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHBhcnNlX2VudHJpZXNfZnJvbV9m
aWxlKGNoYW5nZWxvZ19maWxlKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2VfZW50
cmllc19mcm9tX2ZpbGUoY2xzLCBjaGFuZ2Vsb2dfZmlsZSk6CiAgICAgICAgICIiImNoYW5nZWxv
Z19maWxlIG11c3QgYmUgYSBmaWxlLWxpa2Ugb2JqZWN0IHdoaWNoIHJldHVybnMKICAgICAgICAg
dW5pY29kZSBzdHJpbmdzLiAgVXNlIGNvZGVjcy5vcGVuIG9yIFN0cmluZ0lPKHVuaWNvZGUoKSkK
ICAgICAgICAgdG8gcGFzcyBmaWxlIG9iamVjdHMgdG8gdGhpcyBjbGFzcy4iIiIKQEAgLTI3Mywx
NiArMzI4LDE2IEBAIGNsYXNzIENoYW5nZUxvZyhvYmplY3QpOgogICAgICAgICByb2xsZWRfb3Zl
cl9yZWdleHAgPSByZS5jb21waWxlKENoYW5nZUxvZ0VudHJ5LnJvbGxlZF9vdmVyX3JlZ2V4cCkK
IAogICAgICAgICAjIFRoZSBmaXJzdCBsaW5lIHNob3VsZCBiZSBhIGRhdGUgbGluZS4KLSAgICAg
ICAgcmV2aXNpb24sIGZpcnN0X2xpbmUgPSBDaGFuZ2VMb2cuX3NlcGFyYXRlX3JldmlzaW9uX2Fu
ZF9saW5lKGNoYW5nZWxvZ19maWxlLnJlYWRsaW5lKCkpCisgICAgICAgIHJldmlzaW9uLCBmaXJz
dF9saW5lID0gY2xzLl9zZXBhcmF0ZV9yZXZpc2lvbl9hbmRfbGluZShjaGFuZ2Vsb2dfZmlsZS5y
ZWFkbGluZSgpKQogICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShmaXJzdF9saW5lLCB1bmljb2Rl
KSkKLSAgICAgICAgaWYgbm90IGRhdGVfbGluZV9yZWdleHAubWF0Y2goQ2hhbmdlTG9nLnN2bl9i
bGFtZV9yZWdleHAuc3ViKCcnLCBmaXJzdF9saW5lKSk6CisgICAgICAgIGlmIG5vdCBkYXRlX2xp
bmVfcmVnZXhwLm1hdGNoKGNscy5zdm5fYmxhbWVfcmVnZXhwLnN1YignJywgZmlyc3RfbGluZSkp
OgogICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgogCiAgICAgICAgIGVudHJ5X2xpbmVz
ID0gW2ZpcnN0X2xpbmVdCiAgICAgICAgIHJldmlzaW9uc19pbl9lbnRyeSA9IHtyZXZpc2lvbjog
MX0gaWYgcmV2aXNpb24gIT0gTm9uZSBlbHNlIE5vbmUKICAgICAgICAgZm9yIGxpbmUgaW4gY2hh
bmdlbG9nX2ZpbGU6CiAgICAgICAgICAgICBpZiByZXZpc2lvbnNfaW5fZW50cnk6Ci0gICAgICAg
ICAgICAgICAgcmV2aXNpb24sIGxpbmUgPSBDaGFuZ2VMb2cuX3NlcGFyYXRlX3JldmlzaW9uX2Fu
ZF9saW5lKGxpbmUpCisgICAgICAgICAgICAgICAgcmV2aXNpb24sIGxpbmUgPSBjbHMuX3NlcGFy
YXRlX3JldmlzaW9uX2FuZF9saW5lKGxpbmUpCiAKICAgICAgICAgICAgIGlmIHJvbGxlZF9vdmVy
X3JlZ2V4cC5tYXRjaChsaW5lKToKICAgICAgICAgICAgICAgICBicmVhawpAQCAtMzc3LDMgKzQz
MiwxOSBAQCBjbGFzcyBDaGFuZ2VMb2cob2JqZWN0KToKICAgICAgICAgICAgIGxpbmUgPSBsaW5l
LnJlcGxhY2UoIk5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLiIsIG1lc3NhZ2UuZW5j
b2RlKCJ1dGYtOCIpKQogICAgICAgICAgICAgaWYgbGluZSAhPSBidWdfYm9pbGVycGxhdGU6CiAg
ICAgICAgICAgICAgICAgcHJpbnQgbGluZSwKKworICAgIGRlZiBkZWxldGVfZW50cmllcyhzZWxm
LCBudW1fZW50cmllcyk6CisgICAgICAgIGRhdGVfbGluZV9yZWdleHAgPSByZS5jb21waWxlKENo
YW5nZUxvZ0VudHJ5LmRhdGVfbGluZV9yZWdleHApCisgICAgICAgIHJvbGxlZF9vdmVyX3JlZ2V4
cCA9IHJlLmNvbXBpbGUoQ2hhbmdlTG9nRW50cnkucm9sbGVkX292ZXJfcmVnZXhwKQorICAgICAg
ICBlbnRyaWVzID0gMAorICAgICAgICBmb3IgbGluZSBpbiBmaWxlaW5wdXQuRmlsZUlucHV0KHNl
bGYucGF0aCwgaW5wbGFjZT0xKToKKyAgICAgICAgICAgIGlmIGRhdGVfbGluZV9yZWdleHAubWF0
Y2gobGluZSk6CisgICAgICAgICAgICAgICAgZW50cmllcyArPSAxCisgICAgICAgICAgICBlbGlm
IHJvbGxlZF9vdmVyX3JlZ2V4cC5tYXRjaChsaW5lKToKKyAgICAgICAgICAgICAgICBlbnRyaWVz
ID0gbnVtX2VudHJpZXMgKyAxCisgICAgICAgICAgICBpZiBlbnRyaWVzID4gbnVtX2VudHJpZXM6
CisgICAgICAgICAgICAgICAgcHJpbnQgbGluZSwKKworICAgIGRlZiBwcmVwZW5kX3RleHQoc2Vs
ZiwgdGV4dCk6CisgICAgICAgIGRhdGEgPSBjb2RlY3Mub3BlbihzZWxmLnBhdGgsICJyIiwgInV0
Zi04IikucmVhZCgpCisgICAgICAgIGNvZGVjcy5vcGVuKHNlbGYucGF0aCwgInciLCAidXRmLTgi
KS53cml0ZSh0ZXh0ICsgZGF0YSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weQppbmRleCBmYTIzMzlm
NDU2NmU1NDk0YmMyMGYyNGQyYjViYjZmMDIyMGU5NGFkLi4xODVkNWY3OTYxMGI0NTIyNDY2NWJh
MDFjNzljNzRkMjY1NGZlMzAyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CkBAIC0yMzYsMTQg
KzIzNiwyNSBAQCBjbGFzcyBDaGFuZ2VMb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgY2hhbmdlbG9nX2ZpbGUgPSBTdHJpbmdJTyhzZWxmLl9leGFtcGxlX2NoYW5nZWxvZykKICAg
ICAgICAgcGFyc2VkX2VudHJpZXMgPSBsaXN0KENoYW5nZUxvZy5wYXJzZV9lbnRyaWVzX2Zyb21f
ZmlsZShjaGFuZ2Vsb2dfZmlsZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcnNl
ZF9lbnRyaWVzKSwgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50cmllc1sw
XS5kYXRlX2xpbmUoKSwgdSIyMDA5LTA4LTE3ICBUb3IgQXJuZSBWZXN0Ylx4ZjggIDx2ZXN0Ym9A
d2Via2l0Lm9yZz4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzBd
LnJldmlld2VyX3RleHQoKSwgIkRhdmlkIExldmluIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwYXJzZWRfZW50cmllc1swXS5pc190b3VjaGVkX2ZpbGVzX3RleHRfY2xlYW4oKSwgRmFsc2Up
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VkX2VudHJpZXNbMV0uYXV0aG9yX2VtYWls
KCksICJkZGtpbHplckBhcHBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNl
ZF9lbnRyaWVzWzFdLnRvdWNoZWRfZmlsZXNfdGV4dCgpLCAiICAgICAgICAqIFNjcmlwdHMvYnVn
emlsbGEtdG9vbDpcbiAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvc2NtLnB5OlxuIikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50cmllc1sxXS5pc190b3VjaGVkX2ZpbGVzX3Rl
eHRfY2xlYW4oKSwgVHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50cmll
c1syXS5yZXZpZXdlcl90ZXh0KCksICJNYXJrIFJvd2UiKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBhcnNlZF9lbnRyaWVzWzJdLnRvdWNoZWRfZmlsZXMoKSwgWyJEdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW0iXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
YXJzZWRfZW50cmllc1syXS50b3VjaGVkX2Z1bmN0aW9ucygpLCB7IkR1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSI6IFsiLVtEdW1wUmVuZGVyVHJlZVdpbmRvdyBjbG9z
ZV0iXX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VkX2VudHJpZXNbMl0uaXNfdG91
Y2hlZF9maWxlc190ZXh0X2NsZWFuKCksIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBhcnNlZF9lbnRyaWVzWzNdLmF1dGhvcl9uYW1lKCksICJCZW5qYW1pbiBQb3VsYWluIikKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50cmllc1szXS50b3VjaGVkX2ZpbGVzKCks
IFsicGxhdGZvcm0vY2YvS1VSTENGTmV0LmNwcCIsICJwbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbSIs
CiAgICAgICAgICAgICAiV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCIsICJld2sv
ZXdrX3ByaXZhdGUuaCIsICJld2svZXdrX3ZpZXcuY3BwIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocGFyc2VkX2VudHJpZXNbM10udG91Y2hlZF9mdW5jdGlvbnMoKSwgeyJwbGF0Zm9ybS9j
Zi9LVVJMQ0ZOZXQuY3BwIjogWyJXZWJDb3JlOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIiLCAiV2Vi
Q29yZTo6S1VSTDo6Y3JlYXRlQ0ZVUkwiXSwKKyAgICAgICAgICAgICJwbGF0Zm9ybS9tYWMvS1VS
TE1hYy5tbSI6IFsiV2ViQ29yZTo6S1VSTDo6b3BlcmF0b3IgTlNVUkwgKiIsICJXZWJDb3JlOjpL
VVJMOjpjcmVhdGVDRlVSTCJdLAorICAgICAgICAgICAgIldlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAiOiBbIldlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6Y2xvc2VXaW5kb3dTb29u
Il0sICJld2svZXdrX3ByaXZhdGUuaCI6IFtdLCAiZXdrL2V3a192aWV3LmNwcCI6IFtdfSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWRfZW50cmllc1szXS5idWdfZGVzY3JpcHRpb24o
KSwgIltNYWNdIFJlc291cmNlUmVxdWVzdCdzIG5zVVJMUmVxdWVzdCgpIGRvZXMgbm90IGRpZmZl
cmVudGlhdGUgbnVsbCBhbmQgZW1wdHkgVVJMcyB3aXRoIENGTmV0d29yayIpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocGFyc2VkX2VudHJpZXNbNF0ucmV2aWV3ZXJfdGV4dCgpLCAiRGF2aWQg
SHlhdHQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzRdLmJ1Z19k
ZXNjcmlwdGlvbigpLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRy
aWVzWzVdLnJldmlld2VyX3RleHQoKSwgIkFkYW0gUm9iZW4iKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBhcnNlZF9lbnRyaWVzWzZdLnJldmlld2VyX3RleHQoKSwgIlRvbnkgQ2hhbmciKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlZF9lbnRyaWVzWzddLnJldmlld2VyX3RleHQo
KSwgTm9uZSkKQEAgLTQ2Miw3ICs0NzMsOSBAQCBjbGFzcyBDaGFuZ2VMb2dUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXRlc3RfZW50cnkuYXV0aG9y
X25hbWUoKSwgIlBldGVyIEthc3RpbmciKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxhdGVz
dF9lbnRyeS5hdXRob3JfZW1haWwoKSwgInBrYXN0aW5nQGdvb2dsZS5jb20iKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxhdGVzdF9lbnRyeS5yZXZpZXdlcl90ZXh0KCksIHUiVG9yIEFybmUg
VmVzdGJceGY4IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXRlc3RfZW50cnkudG91Y2hl
ZF9maWxlcygpLCBbIkR1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52Y3Byb2oiLCAi
RHVtcFJlbmRlclRyZWUvd2luL0ltYWdlRGlmZi52Y3Byb2oiLCAiRHVtcFJlbmRlclRyZWUvd2lu
L1Rlc3ROZXRzY2FwZVBsdWdpbi9UZXN0TmV0c2NhcGVQbHVnaW4udmNwcm9qIl0pCisgICAgICAg
IHRvdWNoZWRfZmlsZXMgPSBbIkR1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52Y3By
b2oiLCAiRHVtcFJlbmRlclRyZWUvd2luL0ltYWdlRGlmZi52Y3Byb2oiLCAiRHVtcFJlbmRlclRy
ZWUvd2luL1Rlc3ROZXRzY2FwZVBsdWdpbi9UZXN0TmV0c2NhcGVQbHVnaW4udmNwcm9qIl0KKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXRlc3RfZW50cnkudG91Y2hlZF9maWxlcygpLCB0b3Vj
aGVkX2ZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxhdGVzdF9lbnRyeS50b3VjaGVk
X2Z1bmN0aW9ucygpLCBkaWN0KChmLCBbXSkgZm9yIGYgaW4gdG91Y2hlZF9maWxlcykpCiAKICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGxhdGVzdF9lbnRyeS5yZXZpZXdlcigpKSAgIyBNYWtlIHN1
cmUgdGhhdCBvdXIgVVRGOC1iYXNlZCBsb29rdXAgb2YgVG9yIHdvcmtzLgogCkBAIC01ODMsMyAr
NTk2LDM3IEBAIGNsYXNzIENoYW5nZUxvZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBleHBlY3RlZF9jb250ZW50cyA9IGNoYW5nZWxvZ19jb250ZW50cy5yZXBsYWNlKCJOZWVkIGEg
c2hvcnQgZGVzY3JpcHRpb24gKE9PUFMhKS5cbiAgICAgICAgTmVlZCB0aGUgYnVnIFVSTCAoT09Q
UyEpLiIsIGV4cGVjdGVkX21lc3NhZ2UpCiAgICAgICAgIG9zLnJlbW92ZShjaGFuZ2Vsb2dfcGF0
aCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfY29udGVudHMuc3BsaXRsaW5lcygp
LCBleHBlY3RlZF9jb250ZW50cy5zcGxpdGxpbmVzKCkpCisKKyAgICBkZWYgdGVzdF9kZWxldGVf
ZW50cmllcyhzZWxmKToKKyAgICAgICAgY2hhbmdlbG9nX3BhdGggPSBzZWxmLl93cml0ZV90bXBf
ZmlsZV93aXRoX2NvbnRlbnRzKHNlbGYuX2V4YW1wbGVfY2hhbmdlbG9nLmVuY29kZSgidXRmLTgi
KSkKKyAgICAgICAgQ2hhbmdlTG9nKGNoYW5nZWxvZ19wYXRoKS5kZWxldGVfZW50cmllcyg4KQor
ICAgICAgICBhY3R1YWxfY29udGVudHMgPSBzZWxmLl9yZWFkX2ZpbGVfY29udGVudHMoY2hhbmdl
bG9nX3BhdGgsICJ1dGYtOCIpCisgICAgICAgIGV4cGVjdGVkX2NvbnRlbnRzID0gIiIiMjAxMS0x
MC0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICBSZXNvbHZl
IHJlZ3VsYXIgYW5kIHZpc2l0ZWQgbGluayBzdHlsZSBpbiBhIHNpbmdsZSBwYXNzCisgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5ODM4CisKKyAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlcgorCisgICAgICAgV2UgY2FuIHNpbXBsaWZ5IGFuZCBzcGVl
ZCB1cCBzZWxlY3RvciBtYXRjaGluZyBieSByZW1vdmluZyB0aGUgcmVjdXJzaXZlIG1hdGNoaW5n
IGRvbmUKKyAgICAgICB0byBnZW5lcmF0ZSB0aGUgc3R5bGUgZm9yIHRoZSA6dmlzaXRlZCBwc2V1
ZG8gc2VsZWN0b3IuIEJvdGggcmVndWxhciBhbmQgdmlzaXRlZCBsaW5rIHN0eWxlCisgICAgICAg
Y2FuIGJlIGdlbmVyYXRlZCBpbiBhIHNpbmdsZSBwYXNzIHRocm91Z2ggdGhlIHN0eWxlIHNlbGVj
dG9yLgorCis9PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ctMjAwOS0wNi0xNiA9PQorIiIiCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2NvbnRlbnRzLnNwbGl0bGluZXMoKSwgZXhw
ZWN0ZWRfY29udGVudHMuc3BsaXRsaW5lcygpKQorCisgICAgICAgIENoYW5nZUxvZyhjaGFuZ2Vs
b2dfcGF0aCkuZGVsZXRlX2VudHJpZXMoMikKKyAgICAgICAgYWN0dWFsX2NvbnRlbnRzID0gc2Vs
Zi5fcmVhZF9maWxlX2NvbnRlbnRzKGNoYW5nZWxvZ19wYXRoLCAidXRmLTgiKQorICAgICAgICBl
eHBlY3RlZF9jb250ZW50cyA9ICI9PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ctMjAwOS0wNi0x
NiA9PVxuIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9jb250ZW50cy5zcGxpdGxp
bmVzKCksIGV4cGVjdGVkX2NvbnRlbnRzLnNwbGl0bGluZXMoKSkKKworICAgICAgICBvcy5yZW1v
dmUoY2hhbmdlbG9nX3BhdGgpCisKKyAgICBkZWYgdGVzdF9wcmVwZW5kX3RleHQoc2VsZik6Cisg
ICAgICAgIGNoYW5nZWxvZ19wYXRoID0gc2VsZi5fd3JpdGVfdG1wX2ZpbGVfd2l0aF9jb250ZW50
cyhzZWxmLl9leGFtcGxlX2NoYW5nZWxvZy5lbmNvZGUoInV0Zi04IikpCisgICAgICAgIENoYW5n
ZUxvZyhjaGFuZ2Vsb2dfcGF0aCkucHJlcGVuZF90ZXh0KHNlbGYuX2V4YW1wbGVfZW50cnkgKyAi
XG4iKQorICAgICAgICBhY3R1YWxfY29udGVudHMgPSBzZWxmLl9yZWFkX2ZpbGVfY29udGVudHMo
Y2hhbmdlbG9nX3BhdGgsICJ1dGYtOCIpCisgICAgICAgIGV4cGVjdGVkX2NvbnRlbnRzID0gc2Vs
Zi5fZXhhbXBsZV9lbnRyeSArICJcbiIgKyBzZWxmLl9leGFtcGxlX2NoYW5nZWxvZworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9jb250ZW50cy5zcGxpdGxpbmVzKCksIGV4cGVjdGVk
X2NvbnRlbnRzLnNwbGl0bGluZXMoKSkKKyAgICAgICAgb3MucmVtb3ZlKGNoYW5nZWxvZ19wYXRo
KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>