<?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>53477</bug_id>
          
          <creation_ts>2011-02-01 00:03:04 -0800</creation_ts>
          <short_desc>nrwt multiprocessing: add stubs for manager/worker</short_desc>
          <delta_ts>2011-02-08 16:33:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>49566</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>eric</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>343055</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-01 00:03:04 -0800</bug_when>
    <thetext>nrwt multiprocessing: add stubs for manager/worker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343056</commentid>
    <comment_count>1</comment_count>
      <attachid>80722</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-01 00:03:33 -0800</bug_when>
    <thetext>Created attachment 80722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343057</commentid>
    <comment_count>2</comment_count>
      <attachid>80723</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-01 00:05:56 -0800</bug_when>
    <thetext>Created attachment 80723
add bug # to ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344348</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-02 16:01:23 -0800</bug_when>
    <thetext>grr .. can&apos;t believe I didn&apos;t include y&apos;all on the CC list already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344488</commentid>
    <comment_count>4</comment_count>
      <attachid>81022</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-02 19:15:15 -0800</bug_when>
    <thetext>Created attachment 81022
remove thread stack code, add better docstrings, clean up imports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344995</commentid>
    <comment_count>5</comment_count>
      <attachid>81022</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-02-03 14:10:24 -0800</bug_when>
    <thetext>Comment on attachment 81022
remove thread stack code, add better docstrings, clean up imports

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

rs=me with the change below

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:57
&gt; +    _multiprocessing_is_available = True
&gt; +    from multiprocessing import Process as _Multiprocessing_Process
&gt; +    from multiprocessing import Queue as _Multiprocessing_Queue

For feature detection like this, I think it&apos;s simpler to just try to import multiprocessing and on ImportError, set multiprocessing to None.  You can then use multiprocessing in the code to see what queue you should use.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:109
&gt; +    elif worker_model == &apos;processes&apos; and _multiprocessing_is_available:
&gt; +        queue_class = _Multiprocessing_Queue
&gt; +        manager_class = _MultiProcessManager

E.g., this would be:
  elif worker_model == &apos;processes&apos; and multiprocessing:
      queue_class = multiprocessing.Queue
      manager_class = _MultiProcessManager

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:37
&gt; +try:
&gt; +    _multiprocessing_is_available = True
&gt; +    from multiprocessing import Queue as _Multiprocessing_Queue
&gt; +except ImportError:

Same naming as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345856</commentid>
    <comment_count>6</comment_count>
      <attachid>81307</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-04 15:34:03 -0800</bug_when>
    <thetext>Created attachment 81307
update comments, rebase w/ latest 53158 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346818</commentid>
    <comment_count>7</comment_count>
      <attachid>81307</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-02-07 14:44:56 -0800</bug_when>
    <thetext>Comment on attachment 81307
update comments, rebase w/ latest 53158 patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:38
&gt; +eventually work as follows:

I&apos;d really like to know what this says :)

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:44
&gt; +import Queue

Can you move this import into the no multiprocessing branch below?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:74
&gt; +    by this method.&quot;&quot;&quot;

Not sure I understand this comment. By &quot;this method&quot; you mean &quot;the specified worker model&quot; (i.e. different models will have different sets of options)?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:91
&gt; +            the methods in message_broker2.ClientInterface.

s/ClientInterface/BrokerClient/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346912</commentid>
    <comment_count>8</comment_count>
      <attachid>81307</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-02-07 15:57:05 -0800</bug_when>
    <thetext>Comment on attachment 81307
update comments, rebase w/ latest 53158 patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:53
&gt; +    _multiprocessing_is_available = True
&gt; +    from multiprocessing import Process as _Multiprocessing_Process
&gt; +    from multiprocessing import Queue as _Multiprocessing_Queue

Did the import simplification not work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347092</commentid>
    <comment_count>9</comment_count>
      <attachid>81584</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-07 22:03:10 -0800</bug_when>
    <thetext>Created attachment 81584
update w/ review feedback from mihaip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347093</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-07 22:04:58 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 81307 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81307&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:38
&gt; &gt; +eventually work as follows:
&gt; 
&gt; I&apos;d really like to know what this says :)
&gt; 

Actually, you don&apos;t. That was leftover from a comment that was pretty useless, but I didn&apos;t quite delete everything I should&apos;ve. I&apos;ve updated it to be slightly better.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:44
&gt; &gt; +import Queue
&gt; 
&gt; Can you move this import into the no multiprocessing branch below?
&gt;

No. This&apos;ll be used by the threads-based version either way.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:74
&gt; &gt; +    by this method.&quot;&quot;&quot;
&gt; 
&gt; Not sure I understand this comment. By &quot;this method&quot; you mean &quot;the specified worker model&quot; (i.e. different models will have different sets of options)?

s/method/module. Which should make more sense.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:91
&gt; &gt; +            the methods in message_broker2.ClientInterface.
&gt; 
&gt; s/ClientInterface/BrokerClient/

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347103</commentid>
    <comment_count>11</comment_count>
      <attachid>81585</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-07 22:19:20 -0800</bug_when>
    <thetext>Created attachment 81585
fix multiprocessing import</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347104</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-07 22:21:17 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 81307 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81307&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:53
&gt; &gt; +    _multiprocessing_is_available = True
&gt; &gt; +    from multiprocessing import Process as _Multiprocessing_Process
&gt; &gt; +    from multiprocessing import Queue as _Multiprocessing_Queue
&gt; 
&gt; Did the import simplification not work?

Whoops. Fixed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347105</commentid>
    <comment_count>13</comment_count>
      <attachid>81586</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-07 22:22:05 -0800</bug_when>
    <thetext>Created attachment 81586
fix diff baseline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347531</commentid>
    <comment_count>14</comment_count>
      <attachid>81586</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-02-08 11:02:45 -0800</bug_when>
    <thetext>Comment on attachment 81586
fix diff baseline

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

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:53
&gt; +    _Multiprocessing_Process = multiprocessing.Process

This doesn&apos;t appear to be used anywhere.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:105
&gt; +    elif worker_model == &apos;processes&apos; and multiprocessing:
&gt; +        queue_class = _Multiprocessing_Queue

This appears to be the only use of _Multiprocessing_Queue and it&apos;s behind a multiprocessing check.  Can this just be multiprocessing.Queue and remove the variable?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:35
&gt; +    _multiprocessing_is_available = True

import multiprocessing

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:36
&gt; +    from multiprocessing import Queue as _Multiprocessing_Queue

Not used?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:38
&gt; +    _multiprocessing_is_available = False

multiprocessing = None

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:39
&gt; +    _Multiprocessing_Queue = Queue.Queue

Not used?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:74
&gt; +        if _multiprocessing_is_available:

if multiprocessing:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347765</commentid>
    <comment_count>15</comment_count>
      <attachid>81710</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-08 15:57:45 -0800</bug_when>
    <thetext>Created attachment 81710
update w/ review feedback from tony</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347778</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-08 16:07:51 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 81586 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81586&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:53
&gt; &gt; +    _Multiprocessing_Process = multiprocessing.Process
&gt; 
&gt; This doesn&apos;t appear to be used anywhere.
&gt; 

It will be used in  the future, but I&apos;ve removed it for now.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:105
&gt; &gt; +    elif worker_model == &apos;processes&apos; and multiprocessing:
&gt; &gt; +        queue_class = _Multiprocessing_Queue
&gt; 
&gt; This appears to be the only use of _Multiprocessing_Queue and it&apos;s behind a multiprocessing check.  Can this just be multiprocessing.Queue and remove the variable?
&gt;

Done.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:35
&gt; &gt; +    _multiprocessing_is_available = True
&gt; 
&gt; import multiprocessing
&gt;

Done.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:36
&gt; &gt; +    from multiprocessing import Queue as _Multiprocessing_Queue
&gt; 
&gt; Not used?
&gt;

Removed.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:38
&gt; &gt; +    _multiprocessing_is_available = False
&gt; 
&gt; multiprocessing = None
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:39
&gt; &gt; +    _Multiprocessing_Queue = Queue.Queue
&gt; 
&gt; Not used?
&gt; 

will be used in the future, but I can call it multiprocessing.Queue then. Removed.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:74
&gt; &gt; +        if _multiprocessing_is_available:
&gt; 
&gt; if multiprocessing:

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347800</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-08 16:33:47 -0800</bug_when>
    <thetext>Committed r77990: &lt;http://trac.webkit.org/changeset/77990&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80722</attachid>
            <date>2011-02-01 00:03:33 -0800</date>
            <delta_ts>2011-02-01 00:05:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53477-20110201000332.patch</filename>
            <type>text/plain</type>
            <size>12443</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1ZDgy
ZjIwYjlmMjc1YzJjODlhZGJiZTVmMDY4M2RmNjY4OWM2ZDk5Li5jMmRhOTk5Y2QxNTRlNjliOTc4
ZTYxMzUwZTJlOWFhM2EyYzUwZGI2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDEtMzEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IGFkZCBzdHVicyBmb3IgdGhl
IE1hbmFnZXIgb2JqZWN0cyB0aGF0CisgICAgICAgIHdpbGwgYWJzdHJhY3QgdGhlIGNvbmN1cnJl
bmN5IGltcGxlbWVudGF0aW9uIChpbmxpbmUgLyB0aHJlYWRzIC8KKyAgICAgICAgcHJvY2Vzc2Vz
KS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2Vy
X3VuaXR0ZXN0LnB5OiBBZGRlZC4KKwogMjAxMS0wMS0yNSAgRGlyayBQcmFua2UgIDxkcHJhbmtl
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42YTczYjI3NGQyYjFmZDY4NGQzMzlhZDQ3MmRmOGY4ZmY4ZDgxODJmCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CkBAIC0wLDAgKzEsMTc4IEBACisjIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIiIiTW9kdWxlIGZvciBoYW5kbGluZyBtZXNzYWdlcyBhbmQgY29uY3VycmVuY3kg
Zm9yIHJ1bi13ZWJraXQtdGVzdHMuCisKK1Rlc3RpbmcgaXMgYWNjb21wbGlzaGVkIGJ5IGhhdmlu
ZyBhIG1hbmFnZXIgKFRlc3RSdW5uZXIpIGdhdGhlciBhbGwgb2YgdGhlCit0ZXN0cyB0byBiZSBy
dW4sIGFuZCBzZW5kaW5nIG1lc3NhZ2VzIHRvIGEgcG9vbCBvZiB3b3JrZXJzIChUZXN0U2hlbGxU
aHJlYWRzKQordG8gcnVuIGVhY2ggdGVzdC4gRWFjaCB3b3JrZXIgY29tbXVuaWNhdGVzIHdpdGgg
b25lIGRyaXZlciAodXN1YWxseQorRHVtcFJlbmRlclRyZWUpIHRvIHJ1biBvbmUgdGVzdCBhdCBh
IHRpbWUgYW5kIHRoZW4gY29tcGFyZSB0aGUgb3V0cHV0IGFnYWluc3QKK3doYXQgd2UgZXhwZWN0
ZWQgdG8gZ2V0LgorCitUaGlzIG1vZHVsZXMgaW1wbGVtZW50cyBhIG1lc3NhZ2UgYnJva2VyIHRo
YXQgY29ubmVjdHMgdGhlIG1hbmFnZXIgdG8gdGhlCit3b3JrZXJzOiBpdCBwcm92aWRlcyBhIG1l
c3NhZ2luZyBhYnN0cmFjdGlvbiBhbmQgbWVzc2FnZSBsb29wcywgYW5kCitoYW5kbGVzIGxhdW5j
aGluZyB0aHJlYWRzIGFuZC9vciBwcm9jZXNzZXMgZGVwZW5kaW5nIG9uIHRoZSByZXF1ZXN0ZWQK
K2NvbmZpZ3VyYXRpb24uIEl0IGlzIGJ1aWx0IG9uIHRvcCBvZiB0aGUgbWVzc2FnZV9icm9rZXIy
IG1vZHVsZS4KKworQm90aCBNYW5hZ2VycyBhbmQgV29ya2VycyBhcmUgcmVxdWlyZWQgdG8gaW1w
bGVtZW50IHRoZSBtZXRob2RzIGluIHRoZQorQnJva2VyQ2xpZW50IGludGVyZmFjZSAvIGFic3Ry
YWN0IGJhc2UgY2xhc3MgaW4gb3JkZXIgdG8gdGhlIG1lc3NhZ2UKK2Jyb2tlciB0byBwcm9wZXJs
eSBjb21tdW5pY2F0ZSB3aXRoIHRoZW0uCisKK0V2ZXJ5dGhpbmcgc3RhcnRzIGJ5IGNhbGxpbmcg
Z2V0KCkgdG8gb2J0YWluIGFuIGluaXRpYWwgcmVmZXJlbmNlIHRvIGEgYnJva2VyLgorVGhlIGJy
b2tlciBpcyBtZWRpYXRlZCBieSBhIENvbm5lY3Rpb24gb2JqZWN0IHRoYXQgcHJvdmlkZXMgc29t
ZSBzeW50YWN0aWMKK3N1Z2FyIHRvIHJlcHJlc2VudCB0aGUgTWFuYWdlciBhbmQgV29ya2VyIGVu
ZHBvaW50cy4gVHlwaWNhbGx5IHRoZQorbWFuYWdlciB0aGVuIGNhbGxzIHN0YXJ0X3dvcmtlcigp
IHJlcGVhdGVkbHkgdG8gbGF1bmNoIHdvcmtlcnMgKHdoaWNoIGFyZQordXN1YWxseSBydW4gaW4g
c2VwYXJhdGUgdGhyZWFkcyBvciBwcm9jZXNzZXMgYXMgY29udHJvbGxlZCBieSB0aGUKKy0td29y
a2VyLW1vZGVsIHJ1bnRpbWUgZmxhZyksIG9wdGlvbmFsbHkgc2V0cyB1cCBzb21lIHRpbWVycywg
YW5kIHRoZW4KK2ludm9rZXMgcnVuX21lc3NhZ2VfbG9vcCgpLgorIiIiCisKK2ltcG9ydCBsb2dn
aW5nCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IFF1ZXVlCitpbXBvcnQgc3lz
CitpbXBvcnQgdGhyZWFkCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdGltZQoraW1wb3J0IHRy
YWNlYmFjaworCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworZnJvbSB3
ZWJraXRweSBpbXBvcnQgbGF5b3V0X3Rlc3RzCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBp
bXBvcnQgcG9ydAorCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBp
bXBvcnQgbWVzc2FnZV9icm9rZXIyCisKKyMKKyMgSGFuZGxlIFB5dGhvbiA8IDIuNiB3aGVyZSBt
dWx0aXByb2Nlc3NpbmcgaXNuJ3QgYXZhaWxhYmxlLgorIwordHJ5OgorICAgIF9tdWx0aXByb2Nl
c3NpbmdfaXNfYXZhaWxhYmxlID0gVHJ1ZQorICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9y
dCBQcm9jZXNzIGFzIF9NdWx0aXByb2Nlc3NpbmdfUHJvY2VzcworICAgIGZyb20gbXVsdGlwcm9j
ZXNzaW5nIGltcG9ydCBRdWV1ZSBhcyBfTXVsdGlwcm9jZXNzaW5nX1F1ZXVlCitleGNlcHQgSW1w
b3J0RXJyb3I6CisgICAgX211bHRpcHJvY2Vzc2luZ19pc19hdmFpbGFibGUgPSBGYWxzZQorICAg
IF9NdWx0aXByb2Nlc3NpbmdfUHJvY2VzcyA9IHRocmVhZGluZy5UaHJlYWQKKyAgICBfTXVsdGlw
cm9jZXNzaW5nX1F1ZXVlID0gUXVldWUuUXVldWUKKworCisjCisjIFRvcGljIG5hbWVzIGZvciBN
YW5hZ2VyIDwtPiBXb3JrZXIgbWVzc2FnaW5nCisjCitNQU5BR0VSX1RPUElDID0gJ21hbmFnZXJz
JworQU5ZX1dPUktFUl9UT1BJQyA9ICd3b3JrZXJzJworCisKK2RlZiBydW50aW1lX29wdGlvbnMo
KToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIG9wdHBhcnNlLk9wdGlvbiBvYmplY3RzIGZvciBh
bnkgcnVudGltZSB2YWx1ZXMgdXNlZAorICAgIGJ5IHRoaXMgbWV0aG9kLiIiIgorICAgIG9wdGlv
bnMgPSBbCisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXdvcmtlci1tb2RlbCIsIGFj
dGlvbj0ic3RvcmUiLAorICAgICAgICAgICAgaGVscD0oImNvbnRyb2xzIHdvcmtlciBtb2RlbC4g
VmFsaWQgdmFsdWVzIGFyZSAiCisgICAgICAgICAgICAiJ2lubGluZScsICd0aHJlYWRzJywgYW5k
ICdwcm9jZXNzZXMnLiIpKSwKKyAgICBdCisgICAgcmV0dXJuIG9wdGlvbnMKKworCitkZWYgZ2V0
KHBvcnQsIG9wdGlvbnMsIG1hbmFnZXIsIHdvcmtlcl9jbGFzcyk6CisgICAgIiIiUmV0dXJuIGEg
Y29ubmVjdGlvbiB0byBhIG1hbmFnZXIvd29ya2VyIG1lc3NhZ2VfYnJva2VyCisKKyAgICBBcmdz
OgorICAgICAgICBwb3J0IC0gaGFuZGxlIHRvIGxheW91dF90ZXN0cy9wb3J0IG9iamVjdCBmb3Ig
cG9ydC1zcGVjaWZpYyBzdHVmZgorICAgICAgICBvcHRpb25zIC0gb3B0cGFyc2UgYXJndW1lbnQg
Zm9yIGNvbW1hbmQtbGluZSBvcHRpb25zCisgICAgICAgIG1hbmFnZXIgLSBvYmplY3QgdG8gZGlz
cGF0Y2ggcmVwbGllcyB0bworICAgICAgICB3b3JrZXJfY2xhc3MgLSB0eXBlIG9mIHdvcmtlcnMg
dG8gY3JlYXRlLiBUaGlzIGNsYXNzIG11c3QgaW1wbGVtZW50CisgICAgICAgICAgICB0aGUgbWV0
aG9kcyBpbiB0aGUgQ2xpZW50SW50ZXJmYWNlLgorICAgIFJldHVybnM6CisgICAgICAgIEEgaGFu
ZGxlIHRvIGFuIG9iamVjdCB0aGF0IHdpbGwgdGFsayB0byBhIG1lc3NhZ2UgYnJva2VyIGNvbmZp
Z3VyZWQKKyAgICAgICAgZm9yIHRoZSBub3JtYWwgbWFuYWdlci93b3JrZXIgY29tbXVuaWNhdGlv
bi4KKyAgICAiIiIKKyAgICB3b3JrZXJfbW9kZWwgPSBvcHRpb25zLndvcmtlcl9tb2RlbAorICAg
IGlmIHdvcmtlcl9tb2RlbCA9PSAnaW5saW5lJzoKKyAgICAgICAgcXVldWVfY2xhc3MgPSBRdWV1
ZS5RdWV1ZQorICAgICAgICBtYW5hZ2VyX2NsYXNzID0gX0lubGluZU1hbmFnZXIKKyAgICBlbGlm
IHdvcmtlcl9tb2RlbCA9PSAndGhyZWFkcyc6CisgICAgICAgIHF1ZXVlX2NsYXNzID0gUXVldWUu
UXVldWUKKyAgICAgICAgbWFuYWdlcl9jbGFzcyA9IF9UaHJlYWRlZE1hbmFnZXIKKyAgICBlbGlm
IHdvcmtlcl9tb2RlbCA9PSAncHJvY2Vzc2VzJyBhbmQgX211bHRpcHJvY2Vzc2luZ19pc19hdmFp
bGFibGU6CisgICAgICAgIHF1ZXVlX2NsYXNzID0gX011bHRpcHJvY2Vzc2luZ19RdWV1ZQorICAg
ICAgICBtYW5hZ2VyX2NsYXNzID0gX011bHRpUHJvY2Vzc01hbmFnZXIKKyAgICBlbHNlOgorICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCB2YWx1ZSBmb3IgLS13b3JrZXItbW9k
ZWw6ICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VyX21vZGVsKQorCisgICAg
YnJva2VyID0gbWVzc2FnZV9icm9rZXIyLkJyb2tlcihvcHRpb25zLCBxdWV1ZV9jbGFzcykKKyAg
ICByZXR1cm4gbWFuYWdlcl9jbGFzcyhicm9rZXIsIHBvcnQsIG9wdGlvbnMsIG1hbmFnZXIsIHdv
cmtlcl9jbGFzcykKKworCitjbGFzcyBfQWJzdHJhY3RNYW5hZ2VyKG9iamVjdCk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGJyb2tlciwgcG9ydCwgb3B0aW9ucywgbWFuYWdlciwgd29ya2VyX2Ns
YXNzKToKKyAgICAgICAgIiIiQmFzZSBpbml0aWFsaXphdGlvbiBmb3IgYWxsIE1hbmFnZXIgb2Jq
ZWN0cy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgYnJva2VyOiBoYW5kbGUgdG8gdGhl
IG1lc3NhZ2VfYnJva2VyMiBvYmplY3QKKyAgICAgICAgICAgIHBvcnQ6IGhhbmRsZSB0byBwb3J0
LXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgICAgIG9wdGlvbnM6IGNvbW1hbmQgbGlu
ZSBvcHRpb25zIG9iamVjdAorICAgICAgICAgICAgbWFuYWdlcjogTWFuYWdlciBjYWxsYmFjayBv
YmplY3QgKHRoZSBjYWxsZXIpCisgICAgICAgICAgICB3b3JrZXJfY2xhc3M6IGNsYXNzIG9iamVj
dCB0byB1c2UgdG8gY3JlYXRlIHdvcmtlcnMuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9i
cm9rZXIgPSBicm9rZXIKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKKyAgICAgICAg
c2VsZi5fbWFuYWdlciA9IG1hbmFnZXIKKyAgICAgICAgc2VsZi5fd29ya2VyX2NsYXNzID0gd29y
a2VyX2NsYXNzCisKKworY2xhc3MgX0lubGluZU1hbmFnZXIoX0Fic3RyYWN0TWFuYWdlcik6Cisg
ICAgcGFzcworCisKK2NsYXNzIF9UaHJlYWRlZE1hbmFnZXIoX0Fic3RyYWN0TWFuYWdlcik6Cisg
ICAgcGFzcworCisKK2NsYXNzIF9NdWx0aVByb2Nlc3NNYW5hZ2VyKF9BYnN0cmFjdE1hbmFnZXIp
OgorICAgIHBhc3MKKworCitkZWYgX2ZpbmRfdGhyZWFkX3N0YWNrKHRpZCk6CisgICAgIiIiUmV0
dXJucyBhIHN0YWNrIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGR1bXAgYSBzdGFjayB0cmFj
ZSBmb3IKKyAgICB0aGUgZ2l2ZW4gdGhyZWFkIGlkIChvciBOb25lIGlmIHRoZSBpZCBpcyBub3Qg
Zm91bmQpLiIiIgorICAgIGZvciB0aHJlYWRfaWQsIHN0YWNrIGluIHN5cy5fY3VycmVudF9mcmFt
ZXMoKS5pdGVtcygpOgorICAgICAgICBpZiB0aHJlYWRfaWQgPT0gdGlkOgorICAgICAgICAgICAg
cmV0dXJuIHN0YWNrCisgICAgcmV0dXJuIE5vbmUKKworCitkZWYgX2xvZ19zdGFjayhzdGFjayk6
CisgICAgIiIiTG9nIGEgc3RhY2sgdHJhY2UgdG8gbG9nLmVycm9yKCkuIiIiCisgICAgZm9yIGZp
bGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUgaW4gdHJhY2ViYWNrLmV4dHJhY3Rfc3RhY2soc3Rh
Y2spOgorICAgICAgICBfbG9nLmVycm9yKCdGaWxlOiAiJXMiLCBsaW5lICVkLCBpbiAlcycgJSAo
ZmlsZW5hbWUsIGxpbmVubywgbmFtZSkpCisgICAgICAgIGlmIGxpbmU6CisgICAgICAgICAgICBf
bG9nLmVycm9yKCcgICVzJyAlIGxpbmUuc3RyaXAoKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jy
b2tlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMWM2YWQ4NTA1NTkzOWExMjZiNDRlZWE5NDYxNmYyYTAyYjhjZTg1Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
bWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTA3IEBACisjIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgUXVldWUKK2ltcG9ydCBzeXMK
K2ltcG9ydCB1bml0dGVzdAorCit0cnk6CisgICAgX211bHRpcHJvY2Vzc2luZ19pc19hdmFpbGFi
bGUgPSBUcnVlCisgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFF1ZXVlIGFzIF9NdWx0
aXByb2Nlc3NpbmdfUXVldWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfbXVsdGlwcm9jZXNz
aW5nX2lzX2F2YWlsYWJsZSA9IEZhbHNlCisgICAgX011bHRpcHJvY2Vzc2luZ19RdWV1ZSA9IFF1
ZXVlLlF1ZXVlCisKKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRj
YXB0dXJlCisKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0Citmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgbWFuYWdlcl93b3JrZXJf
YnJva2VyCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQg
bWVzc2FnZV9icm9rZXIyCisKKworY2xhc3MgVGVzdFdvcmtlcihvYmplY3QpOgorICAgIHBhc3MK
KworCitkZWYgZ2V0X29wdGlvbnMod29ya2VyX21vZGVsKToKKyAgICBvcHRpb25fbGlzdCA9IG1h
bmFnZXJfd29ya2VyX2Jyb2tlci5ydW50aW1lX29wdGlvbnMoKQorICAgIHBhcnNlciA9IG9wdHBh
cnNlLk9wdGlvblBhcnNlcihvcHRpb25fbGlzdD1vcHRpb25fbGlzdCkKKyAgICBvcHRpb25zLCBh
cmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncz1bJy0td29ya2VyLW1vZGVsJywgd29ya2VyX21v
ZGVsXSkKKyAgICByZXR1cm4gb3B0aW9ucworCisKK2RlZiBtYWtlX2Jyb2tlcihtYW5hZ2VyLCB3
b3JrZXJfbW9kZWwpOgorICAgIG9wdGlvbnMgPSBnZXRfb3B0aW9ucyh3b3JrZXJfbW9kZWwpCisg
ICAgcmV0dXJuIG1hbmFnZXJfd29ya2VyX2Jyb2tlci5nZXQocG9ydC5nZXQoInRlc3QiKSwgb3B0
aW9ucywgbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0
V29ya2VyKQorCisKK2NsYXNzIEZ1bmN0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAg
IGRlZiB0ZXN0X2dldF9faW5saW5lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUobWFr
ZV9icm9rZXIoc2VsZiwgJ2lubGluZScpIGlzIG5vdCBOb25lKQorCisgICAgZGVmIHRlc3RfZ2V0
X190aHJlYWRzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUobWFrZV9icm9rZXIoc2Vs
ZiwgJ3RocmVhZHMnKSBpcyBub3QgTm9uZSkKKworICAgIGRlZiB0ZXN0X2dldF9fcHJvY2Vzc2Vz
KHNlbGYpOgorICAgICAgICBpZiBfbXVsdGlwcm9jZXNzaW5nX2lzX2F2YWlsYWJsZToKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYWtlX2Jyb2tlcihzZWxmLCAncHJvY2Vzc2VzJykgaXMg
bm90IE5vbmUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhW
YWx1ZUVycm9yLCBtYWtlX2Jyb2tlciwgc2VsZiwgJ3Byb2Nlc3NlcycpCisKKyAgICBkZWYgdGVz
dF9nZXRfX3Vua25vd24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIG1ha2VfYnJva2VyLCBzZWxmLCAndW5rbm93bicpCisKKyAgICBkZWYgdGVzdF9maW5kX3Ro
cmVhZF9zdGFja19mb3VuZChzZWxmKToKKyAgICAgICAgaWQsIHN0YWNrID0gc3lzLl9jdXJyZW50
X2ZyYW1lcygpLml0ZW1zKClbMF0KKyAgICAgICAgZm91bmRfc3RhY2sgPSBtYW5hZ2VyX3dvcmtl
cl9icm9rZXIuX2ZpbmRfdGhyZWFkX3N0YWNrKGlkKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVx
dWFsKGZvdW5kX3N0YWNrLCBOb25lKQorCisgICAgZGVmIHRlc3RfZmluZF90aHJlYWRfc3RhY2tf
bm90X2ZvdW5kKHNlbGYpOgorICAgICAgICBmb3VuZF9zdGFjayA9IG1hbmFnZXJfd29ya2VyX2Jy
b2tlci5fZmluZF90aHJlYWRfc3RhY2soMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3Vu
ZF9zdGFjaywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2xvZ19zdGFjayhzZWxmKToKKyAgICAgICAg
aWQsIHN0YWNrID0gc3lzLl9jdXJyZW50X2ZyYW1lcygpLml0ZW1zKClbMF0KKyAgICAgICAgb2Mg
PSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQorICAgICAgICAjIEZJWE1FOiB2ZXJpZnkg
b3V0cHV0PworICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAgICAgIG1hbmFnZXJfd29y
a2VyX2Jyb2tlci5fbG9nX3N0YWNrKHN0YWNrKQorICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgp
CisKKyAgICBkZWYgdGVzdF9ydW50aW1lX29wdGlvbnMoc2VsZik6CisgICAgICAgIG9wdGlvbl9s
aXN0ID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLnJ1bnRpbWVfb3B0aW9ucygpCisgICAgICAgIHBh
cnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcihvcHRpb25fbGlzdD1vcHRpb25fbGlzdCkKKyAg
ICAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKFtdKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUob3B0aW9ucykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAg
IHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80723</attachid>
            <date>2011-02-01 00:05:56 -0800</date>
            <delta_ts>2011-02-02 19:15:12 -0800</delta_ts>
            <desc>add bug # to ChangeLog</desc>
            <filename>bug-53477-20110201000554.patch</filename>
            <type>text/plain</type>
            <size>12500</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1ZDgy
ZjIwYjlmMjc1YzJjODlhZGJiZTVmMDY4M2RmNjY4OWM2ZDk5Li4zNDA1ZWU3NDVjZDllOWIwZGQy
ZDYyYTQ0NGQ5NzRjYmNmNmEzZmM0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDEtMzEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IGFkZCBzdHVicyBmb3IgdGhl
IE1hbmFnZXIgb2JqZWN0cyB0aGF0CisgICAgICAgIHdpbGwgYWJzdHJhY3QgdGhlIGNvbmN1cnJl
bmN5IGltcGxlbWVudGF0aW9uIChpbmxpbmUgLyB0aHJlYWRzIC8KKyAgICAgICAgcHJvY2Vzc2Vz
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM0
NzcKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2Vy
X3VuaXR0ZXN0LnB5OiBBZGRlZC4KKwogMjAxMS0wMS0yNSAgRGlyayBQcmFua2UgIDxkcHJhbmtl
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42YTczYjI3NGQyYjFmZDY4NGQzMzlhZDQ3MmRmOGY4ZmY4ZDgxODJmCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CkBAIC0wLDAgKzEsMTc4IEBACisjIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIiIiTW9kdWxlIGZvciBoYW5kbGluZyBtZXNzYWdlcyBhbmQgY29uY3VycmVuY3kg
Zm9yIHJ1bi13ZWJraXQtdGVzdHMuCisKK1Rlc3RpbmcgaXMgYWNjb21wbGlzaGVkIGJ5IGhhdmlu
ZyBhIG1hbmFnZXIgKFRlc3RSdW5uZXIpIGdhdGhlciBhbGwgb2YgdGhlCit0ZXN0cyB0byBiZSBy
dW4sIGFuZCBzZW5kaW5nIG1lc3NhZ2VzIHRvIGEgcG9vbCBvZiB3b3JrZXJzIChUZXN0U2hlbGxU
aHJlYWRzKQordG8gcnVuIGVhY2ggdGVzdC4gRWFjaCB3b3JrZXIgY29tbXVuaWNhdGVzIHdpdGgg
b25lIGRyaXZlciAodXN1YWxseQorRHVtcFJlbmRlclRyZWUpIHRvIHJ1biBvbmUgdGVzdCBhdCBh
IHRpbWUgYW5kIHRoZW4gY29tcGFyZSB0aGUgb3V0cHV0IGFnYWluc3QKK3doYXQgd2UgZXhwZWN0
ZWQgdG8gZ2V0LgorCitUaGlzIG1vZHVsZXMgaW1wbGVtZW50cyBhIG1lc3NhZ2UgYnJva2VyIHRo
YXQgY29ubmVjdHMgdGhlIG1hbmFnZXIgdG8gdGhlCit3b3JrZXJzOiBpdCBwcm92aWRlcyBhIG1l
c3NhZ2luZyBhYnN0cmFjdGlvbiBhbmQgbWVzc2FnZSBsb29wcywgYW5kCitoYW5kbGVzIGxhdW5j
aGluZyB0aHJlYWRzIGFuZC9vciBwcm9jZXNzZXMgZGVwZW5kaW5nIG9uIHRoZSByZXF1ZXN0ZWQK
K2NvbmZpZ3VyYXRpb24uIEl0IGlzIGJ1aWx0IG9uIHRvcCBvZiB0aGUgbWVzc2FnZV9icm9rZXIy
IG1vZHVsZS4KKworQm90aCBNYW5hZ2VycyBhbmQgV29ya2VycyBhcmUgcmVxdWlyZWQgdG8gaW1w
bGVtZW50IHRoZSBtZXRob2RzIGluIHRoZQorQnJva2VyQ2xpZW50IGludGVyZmFjZSAvIGFic3Ry
YWN0IGJhc2UgY2xhc3MgaW4gb3JkZXIgdG8gdGhlIG1lc3NhZ2UKK2Jyb2tlciB0byBwcm9wZXJs
eSBjb21tdW5pY2F0ZSB3aXRoIHRoZW0uCisKK0V2ZXJ5dGhpbmcgc3RhcnRzIGJ5IGNhbGxpbmcg
Z2V0KCkgdG8gb2J0YWluIGFuIGluaXRpYWwgcmVmZXJlbmNlIHRvIGEgYnJva2VyLgorVGhlIGJy
b2tlciBpcyBtZWRpYXRlZCBieSBhIENvbm5lY3Rpb24gb2JqZWN0IHRoYXQgcHJvdmlkZXMgc29t
ZSBzeW50YWN0aWMKK3N1Z2FyIHRvIHJlcHJlc2VudCB0aGUgTWFuYWdlciBhbmQgV29ya2VyIGVu
ZHBvaW50cy4gVHlwaWNhbGx5IHRoZQorbWFuYWdlciB0aGVuIGNhbGxzIHN0YXJ0X3dvcmtlcigp
IHJlcGVhdGVkbHkgdG8gbGF1bmNoIHdvcmtlcnMgKHdoaWNoIGFyZQordXN1YWxseSBydW4gaW4g
c2VwYXJhdGUgdGhyZWFkcyBvciBwcm9jZXNzZXMgYXMgY29udHJvbGxlZCBieSB0aGUKKy0td29y
a2VyLW1vZGVsIHJ1bnRpbWUgZmxhZyksIG9wdGlvbmFsbHkgc2V0cyB1cCBzb21lIHRpbWVycywg
YW5kIHRoZW4KK2ludm9rZXMgcnVuX21lc3NhZ2VfbG9vcCgpLgorIiIiCisKK2ltcG9ydCBsb2dn
aW5nCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IFF1ZXVlCitpbXBvcnQgc3lz
CitpbXBvcnQgdGhyZWFkCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdGltZQoraW1wb3J0IHRy
YWNlYmFjaworCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworZnJvbSB3
ZWJraXRweSBpbXBvcnQgbGF5b3V0X3Rlc3RzCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBp
bXBvcnQgcG9ydAorCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBp
bXBvcnQgbWVzc2FnZV9icm9rZXIyCisKKyMKKyMgSGFuZGxlIFB5dGhvbiA8IDIuNiB3aGVyZSBt
dWx0aXByb2Nlc3NpbmcgaXNuJ3QgYXZhaWxhYmxlLgorIwordHJ5OgorICAgIF9tdWx0aXByb2Nl
c3NpbmdfaXNfYXZhaWxhYmxlID0gVHJ1ZQorICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9y
dCBQcm9jZXNzIGFzIF9NdWx0aXByb2Nlc3NpbmdfUHJvY2VzcworICAgIGZyb20gbXVsdGlwcm9j
ZXNzaW5nIGltcG9ydCBRdWV1ZSBhcyBfTXVsdGlwcm9jZXNzaW5nX1F1ZXVlCitleGNlcHQgSW1w
b3J0RXJyb3I6CisgICAgX211bHRpcHJvY2Vzc2luZ19pc19hdmFpbGFibGUgPSBGYWxzZQorICAg
IF9NdWx0aXByb2Nlc3NpbmdfUHJvY2VzcyA9IHRocmVhZGluZy5UaHJlYWQKKyAgICBfTXVsdGlw
cm9jZXNzaW5nX1F1ZXVlID0gUXVldWUuUXVldWUKKworCisjCisjIFRvcGljIG5hbWVzIGZvciBN
YW5hZ2VyIDwtPiBXb3JrZXIgbWVzc2FnaW5nCisjCitNQU5BR0VSX1RPUElDID0gJ21hbmFnZXJz
JworQU5ZX1dPUktFUl9UT1BJQyA9ICd3b3JrZXJzJworCisKK2RlZiBydW50aW1lX29wdGlvbnMo
KToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIG9wdHBhcnNlLk9wdGlvbiBvYmplY3RzIGZvciBh
bnkgcnVudGltZSB2YWx1ZXMgdXNlZAorICAgIGJ5IHRoaXMgbWV0aG9kLiIiIgorICAgIG9wdGlv
bnMgPSBbCisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXdvcmtlci1tb2RlbCIsIGFj
dGlvbj0ic3RvcmUiLAorICAgICAgICAgICAgaGVscD0oImNvbnRyb2xzIHdvcmtlciBtb2RlbC4g
VmFsaWQgdmFsdWVzIGFyZSAiCisgICAgICAgICAgICAiJ2lubGluZScsICd0aHJlYWRzJywgYW5k
ICdwcm9jZXNzZXMnLiIpKSwKKyAgICBdCisgICAgcmV0dXJuIG9wdGlvbnMKKworCitkZWYgZ2V0
KHBvcnQsIG9wdGlvbnMsIG1hbmFnZXIsIHdvcmtlcl9jbGFzcyk6CisgICAgIiIiUmV0dXJuIGEg
Y29ubmVjdGlvbiB0byBhIG1hbmFnZXIvd29ya2VyIG1lc3NhZ2VfYnJva2VyCisKKyAgICBBcmdz
OgorICAgICAgICBwb3J0IC0gaGFuZGxlIHRvIGxheW91dF90ZXN0cy9wb3J0IG9iamVjdCBmb3Ig
cG9ydC1zcGVjaWZpYyBzdHVmZgorICAgICAgICBvcHRpb25zIC0gb3B0cGFyc2UgYXJndW1lbnQg
Zm9yIGNvbW1hbmQtbGluZSBvcHRpb25zCisgICAgICAgIG1hbmFnZXIgLSBvYmplY3QgdG8gZGlz
cGF0Y2ggcmVwbGllcyB0bworICAgICAgICB3b3JrZXJfY2xhc3MgLSB0eXBlIG9mIHdvcmtlcnMg
dG8gY3JlYXRlLiBUaGlzIGNsYXNzIG11c3QgaW1wbGVtZW50CisgICAgICAgICAgICB0aGUgbWV0
aG9kcyBpbiB0aGUgQ2xpZW50SW50ZXJmYWNlLgorICAgIFJldHVybnM6CisgICAgICAgIEEgaGFu
ZGxlIHRvIGFuIG9iamVjdCB0aGF0IHdpbGwgdGFsayB0byBhIG1lc3NhZ2UgYnJva2VyIGNvbmZp
Z3VyZWQKKyAgICAgICAgZm9yIHRoZSBub3JtYWwgbWFuYWdlci93b3JrZXIgY29tbXVuaWNhdGlv
bi4KKyAgICAiIiIKKyAgICB3b3JrZXJfbW9kZWwgPSBvcHRpb25zLndvcmtlcl9tb2RlbAorICAg
IGlmIHdvcmtlcl9tb2RlbCA9PSAnaW5saW5lJzoKKyAgICAgICAgcXVldWVfY2xhc3MgPSBRdWV1
ZS5RdWV1ZQorICAgICAgICBtYW5hZ2VyX2NsYXNzID0gX0lubGluZU1hbmFnZXIKKyAgICBlbGlm
IHdvcmtlcl9tb2RlbCA9PSAndGhyZWFkcyc6CisgICAgICAgIHF1ZXVlX2NsYXNzID0gUXVldWUu
UXVldWUKKyAgICAgICAgbWFuYWdlcl9jbGFzcyA9IF9UaHJlYWRlZE1hbmFnZXIKKyAgICBlbGlm
IHdvcmtlcl9tb2RlbCA9PSAncHJvY2Vzc2VzJyBhbmQgX211bHRpcHJvY2Vzc2luZ19pc19hdmFp
bGFibGU6CisgICAgICAgIHF1ZXVlX2NsYXNzID0gX011bHRpcHJvY2Vzc2luZ19RdWV1ZQorICAg
ICAgICBtYW5hZ2VyX2NsYXNzID0gX011bHRpUHJvY2Vzc01hbmFnZXIKKyAgICBlbHNlOgorICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCB2YWx1ZSBmb3IgLS13b3JrZXItbW9k
ZWw6ICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VyX21vZGVsKQorCisgICAg
YnJva2VyID0gbWVzc2FnZV9icm9rZXIyLkJyb2tlcihvcHRpb25zLCBxdWV1ZV9jbGFzcykKKyAg
ICByZXR1cm4gbWFuYWdlcl9jbGFzcyhicm9rZXIsIHBvcnQsIG9wdGlvbnMsIG1hbmFnZXIsIHdv
cmtlcl9jbGFzcykKKworCitjbGFzcyBfQWJzdHJhY3RNYW5hZ2VyKG9iamVjdCk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGJyb2tlciwgcG9ydCwgb3B0aW9ucywgbWFuYWdlciwgd29ya2VyX2Ns
YXNzKToKKyAgICAgICAgIiIiQmFzZSBpbml0aWFsaXphdGlvbiBmb3IgYWxsIE1hbmFnZXIgb2Jq
ZWN0cy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgYnJva2VyOiBoYW5kbGUgdG8gdGhl
IG1lc3NhZ2VfYnJva2VyMiBvYmplY3QKKyAgICAgICAgICAgIHBvcnQ6IGhhbmRsZSB0byBwb3J0
LXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgICAgIG9wdGlvbnM6IGNvbW1hbmQgbGlu
ZSBvcHRpb25zIG9iamVjdAorICAgICAgICAgICAgbWFuYWdlcjogTWFuYWdlciBjYWxsYmFjayBv
YmplY3QgKHRoZSBjYWxsZXIpCisgICAgICAgICAgICB3b3JrZXJfY2xhc3M6IGNsYXNzIG9iamVj
dCB0byB1c2UgdG8gY3JlYXRlIHdvcmtlcnMuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9i
cm9rZXIgPSBicm9rZXIKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKKyAgICAgICAg
c2VsZi5fbWFuYWdlciA9IG1hbmFnZXIKKyAgICAgICAgc2VsZi5fd29ya2VyX2NsYXNzID0gd29y
a2VyX2NsYXNzCisKKworY2xhc3MgX0lubGluZU1hbmFnZXIoX0Fic3RyYWN0TWFuYWdlcik6Cisg
ICAgcGFzcworCisKK2NsYXNzIF9UaHJlYWRlZE1hbmFnZXIoX0Fic3RyYWN0TWFuYWdlcik6Cisg
ICAgcGFzcworCisKK2NsYXNzIF9NdWx0aVByb2Nlc3NNYW5hZ2VyKF9BYnN0cmFjdE1hbmFnZXIp
OgorICAgIHBhc3MKKworCitkZWYgX2ZpbmRfdGhyZWFkX3N0YWNrKHRpZCk6CisgICAgIiIiUmV0
dXJucyBhIHN0YWNrIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGR1bXAgYSBzdGFjayB0cmFj
ZSBmb3IKKyAgICB0aGUgZ2l2ZW4gdGhyZWFkIGlkIChvciBOb25lIGlmIHRoZSBpZCBpcyBub3Qg
Zm91bmQpLiIiIgorICAgIGZvciB0aHJlYWRfaWQsIHN0YWNrIGluIHN5cy5fY3VycmVudF9mcmFt
ZXMoKS5pdGVtcygpOgorICAgICAgICBpZiB0aHJlYWRfaWQgPT0gdGlkOgorICAgICAgICAgICAg
cmV0dXJuIHN0YWNrCisgICAgcmV0dXJuIE5vbmUKKworCitkZWYgX2xvZ19zdGFjayhzdGFjayk6
CisgICAgIiIiTG9nIGEgc3RhY2sgdHJhY2UgdG8gbG9nLmVycm9yKCkuIiIiCisgICAgZm9yIGZp
bGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUgaW4gdHJhY2ViYWNrLmV4dHJhY3Rfc3RhY2soc3Rh
Y2spOgorICAgICAgICBfbG9nLmVycm9yKCdGaWxlOiAiJXMiLCBsaW5lICVkLCBpbiAlcycgJSAo
ZmlsZW5hbWUsIGxpbmVubywgbmFtZSkpCisgICAgICAgIGlmIGxpbmU6CisgICAgICAgICAgICBf
bG9nLmVycm9yKCcgICVzJyAlIGxpbmUuc3RyaXAoKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jy
b2tlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMWM2YWQ4NTA1NTkzOWExMjZiNDRlZWE5NDYxNmYyYTAyYjhjZTg1Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
bWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTA3IEBACisjIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgUXVldWUKK2ltcG9ydCBzeXMK
K2ltcG9ydCB1bml0dGVzdAorCit0cnk6CisgICAgX211bHRpcHJvY2Vzc2luZ19pc19hdmFpbGFi
bGUgPSBUcnVlCisgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFF1ZXVlIGFzIF9NdWx0
aXByb2Nlc3NpbmdfUXVldWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfbXVsdGlwcm9jZXNz
aW5nX2lzX2F2YWlsYWJsZSA9IEZhbHNlCisgICAgX011bHRpcHJvY2Vzc2luZ19RdWV1ZSA9IFF1
ZXVlLlF1ZXVlCisKKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRj
YXB0dXJlCisKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0Citmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgbWFuYWdlcl93b3JrZXJf
YnJva2VyCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQg
bWVzc2FnZV9icm9rZXIyCisKKworY2xhc3MgVGVzdFdvcmtlcihvYmplY3QpOgorICAgIHBhc3MK
KworCitkZWYgZ2V0X29wdGlvbnMod29ya2VyX21vZGVsKToKKyAgICBvcHRpb25fbGlzdCA9IG1h
bmFnZXJfd29ya2VyX2Jyb2tlci5ydW50aW1lX29wdGlvbnMoKQorICAgIHBhcnNlciA9IG9wdHBh
cnNlLk9wdGlvblBhcnNlcihvcHRpb25fbGlzdD1vcHRpb25fbGlzdCkKKyAgICBvcHRpb25zLCBh
cmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncz1bJy0td29ya2VyLW1vZGVsJywgd29ya2VyX21v
ZGVsXSkKKyAgICByZXR1cm4gb3B0aW9ucworCisKK2RlZiBtYWtlX2Jyb2tlcihtYW5hZ2VyLCB3
b3JrZXJfbW9kZWwpOgorICAgIG9wdGlvbnMgPSBnZXRfb3B0aW9ucyh3b3JrZXJfbW9kZWwpCisg
ICAgcmV0dXJuIG1hbmFnZXJfd29ya2VyX2Jyb2tlci5nZXQocG9ydC5nZXQoInRlc3QiKSwgb3B0
aW9ucywgbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0
V29ya2VyKQorCisKK2NsYXNzIEZ1bmN0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAg
IGRlZiB0ZXN0X2dldF9faW5saW5lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUobWFr
ZV9icm9rZXIoc2VsZiwgJ2lubGluZScpIGlzIG5vdCBOb25lKQorCisgICAgZGVmIHRlc3RfZ2V0
X190aHJlYWRzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUobWFrZV9icm9rZXIoc2Vs
ZiwgJ3RocmVhZHMnKSBpcyBub3QgTm9uZSkKKworICAgIGRlZiB0ZXN0X2dldF9fcHJvY2Vzc2Vz
KHNlbGYpOgorICAgICAgICBpZiBfbXVsdGlwcm9jZXNzaW5nX2lzX2F2YWlsYWJsZToKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYWtlX2Jyb2tlcihzZWxmLCAncHJvY2Vzc2VzJykgaXMg
bm90IE5vbmUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhW
YWx1ZUVycm9yLCBtYWtlX2Jyb2tlciwgc2VsZiwgJ3Byb2Nlc3NlcycpCisKKyAgICBkZWYgdGVz
dF9nZXRfX3Vua25vd24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIG1ha2VfYnJva2VyLCBzZWxmLCAndW5rbm93bicpCisKKyAgICBkZWYgdGVzdF9maW5kX3Ro
cmVhZF9zdGFja19mb3VuZChzZWxmKToKKyAgICAgICAgaWQsIHN0YWNrID0gc3lzLl9jdXJyZW50
X2ZyYW1lcygpLml0ZW1zKClbMF0KKyAgICAgICAgZm91bmRfc3RhY2sgPSBtYW5hZ2VyX3dvcmtl
cl9icm9rZXIuX2ZpbmRfdGhyZWFkX3N0YWNrKGlkKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVx
dWFsKGZvdW5kX3N0YWNrLCBOb25lKQorCisgICAgZGVmIHRlc3RfZmluZF90aHJlYWRfc3RhY2tf
bm90X2ZvdW5kKHNlbGYpOgorICAgICAgICBmb3VuZF9zdGFjayA9IG1hbmFnZXJfd29ya2VyX2Jy
b2tlci5fZmluZF90aHJlYWRfc3RhY2soMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3Vu
ZF9zdGFjaywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2xvZ19zdGFjayhzZWxmKToKKyAgICAgICAg
aWQsIHN0YWNrID0gc3lzLl9jdXJyZW50X2ZyYW1lcygpLml0ZW1zKClbMF0KKyAgICAgICAgb2Mg
PSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQorICAgICAgICAjIEZJWE1FOiB2ZXJpZnkg
b3V0cHV0PworICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAgICAgIG1hbmFnZXJfd29y
a2VyX2Jyb2tlci5fbG9nX3N0YWNrKHN0YWNrKQorICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgp
CisKKyAgICBkZWYgdGVzdF9ydW50aW1lX29wdGlvbnMoc2VsZik6CisgICAgICAgIG9wdGlvbl9s
aXN0ID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLnJ1bnRpbWVfb3B0aW9ucygpCisgICAgICAgIHBh
cnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcihvcHRpb25fbGlzdD1vcHRpb25fbGlzdCkKKyAg
ICAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKFtdKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUob3B0aW9ucykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAg
IHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81022</attachid>
            <date>2011-02-02 19:15:15 -0800</date>
            <delta_ts>2011-02-04 15:34:01 -0800</delta_ts>
            <desc>remove thread stack code, add better docstrings, clean up imports</desc>
            <filename>bug-53477-20110202191514.patch</filename>
            <type>text/plain</type>
            <size>10626</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMDFh
NjMwMzQ1ZGQ3YjU2NDg1YWQwYmE0OWQwMzUyOGFhODBmZWIyLi43ZWVmYzRmNzQwMDIyMTcyMjAx
YzE0MDdlNTFhYTUwZjUwNWIwYWFkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDEtMzEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IGFkZCBzdHVicyBmb3IgdGhl
IE1hbmFnZXIgb2JqZWN0cyB0aGF0CisgICAgICAgIHdpbGwgYWJzdHJhY3QgdGhlIGNvbmN1cnJl
bmN5IGltcGxlbWVudGF0aW9uIChpbmxpbmUgLyB0aHJlYWRzIC8KKyAgICAgICAgcHJvY2Vzc2Vz
KS4gVGhlc2UgY2xhc3NlcyBkbyBub3RoaW5nIHlldCBhbmQgYXJlIG5vdCB3aXJlZCB1cCB0bwor
ICAgICAgICBhbnl0aGluZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTM0NzcKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weTogQWRkZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
cl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKwogMjAxMS0wMS0yNSAgRGlyayBQ
cmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jy
b2tlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMmY1ODNkYzc4Mzc0ZjI3ZTJiNWNlNWQ3OWQ0ZjI3MmUyNDFm
YWRmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CkBAIC0wLDAgKzEsMTQ0
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiTW9kdWxlIGZvciBoYW5kbGluZyBtZXNzYWdlcyBh
bmQgY29uY3VycmVuY3kgZm9yIHJ1bi13ZWJraXQtdGVzdHMuCisKK1RoaXMgbW9kdWxlIGJ1aWxk
cyBvbiB0aGUgZnVuY3Rpb25hbGl0eSBvZiBtZXNzYWdlX2Jyb2tlcjIgdG8gcHJvdmlkZQorYSBz
aW1wbGUgbWVzc2FnZSBicm9rZXIgZm9yIGEgbWFuYWdlciBzZW5kaW5nIG1lc3NhZ2VzIHRvIChh
bmQgZ2V0dGluZworcmVwbGllcyBmcm9tKSBhIHBvb2wgb2Ygd29ya2Vycy4gSW4gYWRkaXRpb24g
aXQgcHJvdmlkZXMgYSBjaG9pY2Ugb2YKK2NvbmN1cnJlbmN5IG1vZGVscyBmb3IgY2FsbGVycyB0
byBjaG9vc2UgZnJvbSAoc2luZ2xlLXRocmVhZGVkIGlubGluZQorbW9kZWwsIHRocmVhZHMsIG9y
IHByb2Nlc3NlcykuCisKK0ZJWE1FOiBBdCB0aGUgbW9tZW50LCB0aGlzIG1vZHVsZSBpcyBqdXN0
IGEgYnVuY2ggb2Ygc3R1YnMsIGJ1dCBpdCB3aWxsCitldmVudHVhbGx5IHdvcmsgYXMgZm9sbG93
czoKKworRXZlcnl0aGluZyBzdGFydHMgYnkgY2FsbGluZyBnZXQoKSB0byBjcmVhdGUgYSBCcm9r
ZXIgYW5kIHdyYXAgaXQgaW4gYQorTWFuYWdlciBvYmplY3QgdGhhdCBpcyBhd2FyZSBvZiB0aGUg
Y29uY3VycmVuY3kgbW9kZWwgYW5kIHRoZSBjbGFzcwordG8gdXNlIHRvIGNyZWF0ZSB3b3JrZXJz
LiBUaGUgY2FsbGVyIGNhbiB0aGVuIGNyZWF0ZSB3b3JrZXJzLCBwb3N0IG1lc3NhZ2VzCit0byB0
aGVtLCBhbmQgdXNlIHJ1bl9tZXNzYWdlX2xvb3AgdG8gcHJvY2VzcyBhbnkgcmVwbGllcy4KKyIi
IgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgUXVldWUKK2ltcG9y
dCB0aHJlYWRpbmcKKworIworIyBIYW5kbGUgUHl0aG9uIDwgMi42IHdoZXJlIG11bHRpcHJvY2Vz
c2luZyBpc24ndCBhdmFpbGFibGUuCisjCit0cnk6CisgICAgX211bHRpcHJvY2Vzc2luZ19pc19h
dmFpbGFibGUgPSBUcnVlCisgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFByb2Nlc3Mg
YXMgX011bHRpcHJvY2Vzc2luZ19Qcm9jZXNzCisgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1w
b3J0IFF1ZXVlIGFzIF9NdWx0aXByb2Nlc3NpbmdfUXVldWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoK
KyAgICBfbXVsdGlwcm9jZXNzaW5nX2lzX2F2YWlsYWJsZSA9IEZhbHNlCisgICAgX011bHRpcHJv
Y2Vzc2luZ19Qcm9jZXNzID0gdGhyZWFkaW5nLlRocmVhZAorICAgIF9NdWx0aXByb2Nlc3Npbmdf
UXVldWUgPSBRdWV1ZS5RdWV1ZQorCisKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91
dF9wYWNrYWdlIGltcG9ydCBtZXNzYWdlX2Jyb2tlcjIKKworCitfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoX19uYW1lX18pCisKKyMKKyMgVG9waWMgbmFtZXMgZm9yIE1hbmFnZXIgPC0+IFdvcmtl
ciBtZXNzYWdpbmcKKyMKK01BTkFHRVJfVE9QSUMgPSAnbWFuYWdlcnMnCitBTllfV09SS0VSX1RP
UElDID0gJ3dvcmtlcnMnCisKKworZGVmIHJ1bnRpbWVfb3B0aW9ucygpOgorICAgICIiIlJldHVy
biBhIGxpc3Qgb2Ygb3B0cGFyc2UuT3B0aW9uIG9iamVjdHMgZm9yIGFueSBydW50aW1lIHZhbHVl
cyB1c2VkCisgICAgYnkgdGhpcyBtZXRob2QuIiIiCisgICAgb3B0aW9ucyA9IFsKKyAgICAgICAg
b3B0cGFyc2UubWFrZV9vcHRpb24oIi0td29ya2VyLW1vZGVsIiwgYWN0aW9uPSJzdG9yZSIsCisg
ICAgICAgICAgICBoZWxwPSgiY29udHJvbHMgd29ya2VyIG1vZGVsLiBWYWxpZCB2YWx1ZXMgYXJl
ICIKKyAgICAgICAgICAgICInaW5saW5lJywgJ3RocmVhZHMnLCBhbmQgJ3Byb2Nlc3NlcycuIikp
LAorICAgIF0KKyAgICByZXR1cm4gb3B0aW9ucworCisKK2RlZiBnZXQocG9ydCwgb3B0aW9ucywg
bWFuYWdlciwgd29ya2VyX2NsYXNzKToKKyAgICAiIiJSZXR1cm4gYSBjb25uZWN0aW9uIHRvIGEg
bWFuYWdlci93b3JrZXIgbWVzc2FnZV9icm9rZXIKKworICAgIEFyZ3M6CisgICAgICAgIHBvcnQg
LSBoYW5kbGUgdG8gbGF5b3V0X3Rlc3RzL3BvcnQgb2JqZWN0IGZvciBwb3J0LXNwZWNpZmljIHN0
dWZmCisgICAgICAgIG9wdGlvbnMgLSBvcHRwYXJzZSBhcmd1bWVudCBmb3IgY29tbWFuZC1saW5l
IG9wdGlvbnMKKyAgICAgICAgbWFuYWdlciAtIG9iamVjdCB0byBkaXNwYXRjaCByZXBsaWVzIHRv
CisgICAgICAgIHdvcmtlcl9jbGFzcyAtIHR5cGUgb2Ygd29ya2VycyB0byBjcmVhdGUuIFRoaXMg
Y2xhc3MgbXVzdCBpbXBsZW1lbnQKKyAgICAgICAgICAgIHRoZSBtZXRob2RzIGluIG1lc3NhZ2Vf
YnJva2VyMi5DbGllbnRJbnRlcmZhY2UuCisgICAgUmV0dXJuczoKKyAgICAgICAgQSBoYW5kbGUg
dG8gYW4gb2JqZWN0IHRoYXQgd2lsbCB0YWxrIHRvIGEgbWVzc2FnZSBicm9rZXIgY29uZmlndXJl
ZAorICAgICAgICBmb3IgdGhlIG5vcm1hbCBtYW5hZ2VyL3dvcmtlciBjb21tdW5pY2F0aW9uLgor
ICAgICIiIgorICAgIHdvcmtlcl9tb2RlbCA9IG9wdGlvbnMud29ya2VyX21vZGVsCisgICAgaWYg
d29ya2VyX21vZGVsID09ICdpbmxpbmUnOgorICAgICAgICBxdWV1ZV9jbGFzcyA9IFF1ZXVlLlF1
ZXVlCisgICAgICAgIG1hbmFnZXJfY2xhc3MgPSBfSW5saW5lTWFuYWdlcgorICAgIGVsaWYgd29y
a2VyX21vZGVsID09ICd0aHJlYWRzJzoKKyAgICAgICAgcXVldWVfY2xhc3MgPSBRdWV1ZS5RdWV1
ZQorICAgICAgICBtYW5hZ2VyX2NsYXNzID0gX1RocmVhZGVkTWFuYWdlcgorICAgIGVsaWYgd29y
a2VyX21vZGVsID09ICdwcm9jZXNzZXMnIGFuZCBfbXVsdGlwcm9jZXNzaW5nX2lzX2F2YWlsYWJs
ZToKKyAgICAgICAgcXVldWVfY2xhc3MgPSBfTXVsdGlwcm9jZXNzaW5nX1F1ZXVlCisgICAgICAg
IG1hbmFnZXJfY2xhc3MgPSBfTXVsdGlQcm9jZXNzTWFuYWdlcgorICAgIGVsc2U6CisgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoInVuc3VwcG9ydGVkIHZhbHVlIGZvciAtLXdvcmtlci1tb2RlbDog
JXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXJfbW9kZWwpCisKKyAgICBicm9r
ZXIgPSBtZXNzYWdlX2Jyb2tlcjIuQnJva2VyKG9wdGlvbnMsIHF1ZXVlX2NsYXNzKQorICAgIHJl
dHVybiBtYW5hZ2VyX2NsYXNzKGJyb2tlciwgcG9ydCwgb3B0aW9ucywgbWFuYWdlciwgd29ya2Vy
X2NsYXNzKQorCisKK2NsYXNzIF9BYnN0cmFjdE1hbmFnZXIob2JqZWN0KToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgYnJva2VyLCBwb3J0LCBvcHRpb25zLCBtYW5hZ2VyLCB3b3JrZXJfY2xhc3Mp
OgorICAgICAgICAiIiJCYXNlIGluaXRpYWxpemF0aW9uIGZvciBhbGwgTWFuYWdlciBvYmplY3Rz
LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBicm9rZXI6IGhhbmRsZSB0byB0aGUgbWVz
c2FnZV9icm9rZXIyIG9iamVjdAorICAgICAgICAgICAgcG9ydDogaGFuZGxlIHRvIHBvcnQtc3Bl
Y2lmaWMgZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAgb3B0aW9uczogY29tbWFuZCBsaW5lIG9w
dGlvbnMgb2JqZWN0CisgICAgICAgICAgICBtYW5hZ2VyOiBNYW5hZ2VyIGNhbGxiYWNrIG9iamVj
dCAodGhlIGNhbGxlcikKKyAgICAgICAgICAgIHdvcmtlcl9jbGFzczogY2xhc3Mgb2JqZWN0IHRv
IHVzZSB0byBjcmVhdGUgd29ya2Vycy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2Jyb2tl
ciA9IGJyb2tlcgorICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAgICAgICBzZWxm
Ll9tYW5hZ2VyID0gbWFuYWdlcgorICAgICAgICBzZWxmLl93b3JrZXJfY2xhc3MgPSB3b3JrZXJf
Y2xhc3MKKworCitjbGFzcyBfSW5saW5lTWFuYWdlcihfQWJzdHJhY3RNYW5hZ2VyKToKKyAgICBw
YXNzCisKKworY2xhc3MgX1RocmVhZGVkTWFuYWdlcihfQWJzdHJhY3RNYW5hZ2VyKToKKyAgICBw
YXNzCisKKworY2xhc3MgX011bHRpUHJvY2Vzc01hbmFnZXIoX0Fic3RyYWN0TWFuYWdlcik6Cisg
ICAgcGFzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3Jr
ZXJfYnJva2VyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwOWY3OGY1Nzg0NzllYTc0NTkwMjEx
ZDkyNzViMGY1YjYxZDRkMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5p
dHRlc3QucHkKQEAgLTAsMCArMSw5MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcHRw
YXJzZQoraW1wb3J0IFF1ZXVlCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKwordHJ5Ogor
ICAgIF9tdWx0aXByb2Nlc3NpbmdfaXNfYXZhaWxhYmxlID0gVHJ1ZQorICAgIGZyb20gbXVsdGlw
cm9jZXNzaW5nIGltcG9ydCBRdWV1ZSBhcyBfTXVsdGlwcm9jZXNzaW5nX1F1ZXVlCitleGNlcHQg
SW1wb3J0RXJyb3I6CisgICAgX211bHRpcHJvY2Vzc2luZ19pc19hdmFpbGFibGUgPSBGYWxzZQor
ICAgIF9NdWx0aXByb2Nlc3NpbmdfUXVldWUgPSBRdWV1ZS5RdWV1ZQorCisKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0Y2FwdHVyZQorCitmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cyBpbXBvcnQgcG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0
X3BhY2thZ2UgaW1wb3J0IG1hbmFnZXJfd29ya2VyX2Jyb2tlcgorZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1lc3NhZ2VfYnJva2VyMgorCisKK2NsYXNz
IFRlc3RXb3JrZXIob2JqZWN0KToKKyAgICBwYXNzCisKKworZGVmIGdldF9vcHRpb25zKHdvcmtl
cl9tb2RlbCk6CisgICAgb3B0aW9uX2xpc3QgPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIucnVudGlt
ZV9vcHRpb25zKCkKKyAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIob3B0aW9uX2xp
c3Q9b3B0aW9uX2xpc3QpCisgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFy
Z3M9WyctLXdvcmtlci1tb2RlbCcsIHdvcmtlcl9tb2RlbF0pCisgICAgcmV0dXJuIG9wdGlvbnMK
KworCitkZWYgbWFrZV9icm9rZXIobWFuYWdlciwgd29ya2VyX21vZGVsKToKKyAgICBvcHRpb25z
ID0gZ2V0X29wdGlvbnMod29ya2VyX21vZGVsKQorICAgIHJldHVybiBtYW5hZ2VyX3dvcmtlcl9i
cm9rZXIuZ2V0KHBvcnQuZ2V0KCJ0ZXN0IiksIG9wdGlvbnMsIG1hbmFnZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFdvcmtlcikKKworCitjbGFzcyBGdW5jdGlv
blRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9nZXRfX2lubGluZShzZWxm
KToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1ha2VfYnJva2VyKHNlbGYsICdpbmxpbmUnKSBp
cyBub3QgTm9uZSkKKworICAgIGRlZiB0ZXN0X2dldF9fdGhyZWFkcyhzZWxmKToKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKG1ha2VfYnJva2VyKHNlbGYsICd0aHJlYWRzJykgaXMgbm90IE5vbmUp
CisKKyAgICBkZWYgdGVzdF9nZXRfX3Byb2Nlc3NlcyhzZWxmKToKKyAgICAgICAgaWYgX211bHRp
cHJvY2Vzc2luZ19pc19hdmFpbGFibGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWFr
ZV9icm9rZXIoc2VsZiwgJ3Byb2Nlc3NlcycpIGlzIG5vdCBOb25lKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWFrZV9icm9rZXIsIHNl
bGYsICdwcm9jZXNzZXMnKQorCisgICAgZGVmIHRlc3RfZ2V0X191bmtub3duKHNlbGYpOgorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYWtlX2Jyb2tlciwgc2VsZiwgJ3Vu
a25vd24nKQorCisgICAgZGVmIHRlc3RfcnVudGltZV9vcHRpb25zKHNlbGYpOgorICAgICAgICBv
cHRpb25fbGlzdCA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5ydW50aW1lX29wdGlvbnMoKQorICAg
ICAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIob3B0aW9uX2xpc3Q9b3B0aW9uX2xp
c3QpCisgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhbXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKG9wdGlvbnMpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9f
JzoKKyAgICB1bml0dGVzdC5tYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81307</attachid>
            <date>2011-02-04 15:34:03 -0800</date>
            <delta_ts>2011-02-07 22:03:06 -0800</delta_ts>
            <desc>update comments, rebase w/ latest 53158 patch</desc>
            <filename>bug-53477-20110204153402.patch</filename>
            <type>text/plain</type>
            <size>10349</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMDFh
NjMwMzQ1ZGQ3YjU2NDg1YWQwYmE0OWQwMzUyOGFhODBmZWIyLi43ZWVmYzRmNzQwMDIyMTcyMjAx
YzE0MDdlNTFhYTUwZjUwNWIwYWFkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDEtMzEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IGFkZCBzdHVicyBmb3IgdGhl
IE1hbmFnZXIgb2JqZWN0cyB0aGF0CisgICAgICAgIHdpbGwgYWJzdHJhY3QgdGhlIGNvbmN1cnJl
bmN5IGltcGxlbWVudGF0aW9uIChpbmxpbmUgLyB0aHJlYWRzIC8KKyAgICAgICAgcHJvY2Vzc2Vz
KS4gVGhlc2UgY2xhc3NlcyBkbyBub3RoaW5nIHlldCBhbmQgYXJlIG5vdCB3aXJlZCB1cCB0bwor
ICAgICAgICBhbnl0aGluZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTM0NzcKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weTogQWRkZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
cl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKwogMjAxMS0wMS0yNSAgRGlyayBQ
cmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jy
b2tlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMGE0YjI1NGMwOTk2NWYyODM0MjQ5NzQyYjgwM2FhMmY3MTk2
NWIyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CkBAIC0wLDAgKzEsMTQw
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiTW9kdWxlIGZvciBoYW5kbGluZyBtZXNzYWdlcyBh
bmQgY29uY3VycmVuY3kgZm9yIHJ1bi13ZWJraXQtdGVzdHMuCisKK1RoaXMgbW9kdWxlIGJ1aWxk
cyBvbiB0aGUgZnVuY3Rpb25hbGl0eSBvZiBtZXNzYWdlX2Jyb2tlcjIgdG8gcHJvdmlkZQorYSBz
aW1wbGUgbWVzc2FnZSBicm9rZXIgZm9yIGEgbWFuYWdlciBzZW5kaW5nIG1lc3NhZ2VzIHRvIChh
bmQgZ2V0dGluZworcmVwbGllcyBmcm9tKSBhIHBvb2wgb2Ygd29ya2Vycy4gSW4gYWRkaXRpb24g
aXQgcHJvdmlkZXMgYSBjaG9pY2Ugb2YKK2NvbmN1cnJlbmN5IG1vZGVscyBmb3IgY2FsbGVycyB0
byBjaG9vc2UgZnJvbSAoc2luZ2xlLXRocmVhZGVkIGlubGluZQorbW9kZWwsIHRocmVhZHMsIG9y
IHByb2Nlc3NlcykuCisKK0ZJWE1FOiBBdCB0aGUgbW9tZW50LCB0aGlzIG1vZHVsZSBpcyBqdXN0
IGEgYnVuY2ggb2Ygc3R1YnMsIGJ1dCBpdCB3aWxsCitldmVudHVhbGx5IHdvcmsgYXMgZm9sbG93
czoKKworIiIiCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBRdWV1
ZQoraW1wb3J0IHRocmVhZGluZworCisjCisjIEhhbmRsZSBQeXRob24gPCAyLjYgd2hlcmUgbXVs
dGlwcm9jZXNzaW5nIGlzbid0IGF2YWlsYWJsZS4KKyMKK3RyeToKKyAgICBfbXVsdGlwcm9jZXNz
aW5nX2lzX2F2YWlsYWJsZSA9IFRydWUKKyAgICBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQg
UHJvY2VzcyBhcyBfTXVsdGlwcm9jZXNzaW5nX1Byb2Nlc3MKKyAgICBmcm9tIG11bHRpcHJvY2Vz
c2luZyBpbXBvcnQgUXVldWUgYXMgX011bHRpcHJvY2Vzc2luZ19RdWV1ZQorZXhjZXB0IEltcG9y
dEVycm9yOgorICAgIF9tdWx0aXByb2Nlc3NpbmdfaXNfYXZhaWxhYmxlID0gRmFsc2UKKyAgICBf
TXVsdGlwcm9jZXNzaW5nX1Byb2Nlc3MgPSB0aHJlYWRpbmcuVGhyZWFkCisgICAgX011bHRpcHJv
Y2Vzc2luZ19RdWV1ZSA9IFF1ZXVlLlF1ZXVlCisKKworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1lc3NhZ2VfYnJva2VyMgorCisKK19sb2cgPSBsb2dn
aW5nLmdldExvZ2dlcihfX25hbWVfXykKKworIworIyBUb3BpYyBuYW1lcyBmb3IgTWFuYWdlciA8
LT4gV29ya2VyIG1lc3NhZ2luZworIworTUFOQUdFUl9UT1BJQyA9ICdtYW5hZ2VycycKK0FOWV9X
T1JLRVJfVE9QSUMgPSAnd29ya2VycycKKworCitkZWYgcnVudGltZV9vcHRpb25zKCk6CisgICAg
IiIiUmV0dXJuIGEgbGlzdCBvZiBvcHRwYXJzZS5PcHRpb24gb2JqZWN0cyBmb3IgYW55IHJ1bnRp
bWUgdmFsdWVzIHVzZWQKKyAgICBieSB0aGlzIG1ldGhvZC4iIiIKKyAgICBvcHRpb25zID0gWwor
ICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS13b3JrZXItbW9kZWwiLCBhY3Rpb249InN0
b3JlIiwKKyAgICAgICAgICAgIGhlbHA9KCJjb250cm9scyB3b3JrZXIgbW9kZWwuIFZhbGlkIHZh
bHVlcyBhcmUgIgorICAgICAgICAgICAgIidpbmxpbmUnLCAndGhyZWFkcycsIGFuZCAncHJvY2Vz
c2VzJy4iKSksCisgICAgXQorICAgIHJldHVybiBvcHRpb25zCisKKworZGVmIGdldChwb3J0LCBv
cHRpb25zLCBtYW5hZ2VyLCB3b3JrZXJfY2xhc3MpOgorICAgICIiIlJldHVybiBhIGNvbm5lY3Rp
b24gdG8gYSBtYW5hZ2VyL3dvcmtlciBtZXNzYWdlX2Jyb2tlcgorCisgICAgQXJnczoKKyAgICAg
ICAgcG9ydCAtIGhhbmRsZSB0byBsYXlvdXRfdGVzdHMvcG9ydCBvYmplY3QgZm9yIHBvcnQtc3Bl
Y2lmaWMgc3R1ZmYKKyAgICAgICAgb3B0aW9ucyAtIG9wdHBhcnNlIGFyZ3VtZW50IGZvciBjb21t
YW5kLWxpbmUgb3B0aW9ucworICAgICAgICBtYW5hZ2VyIC0gb2JqZWN0IHRvIGRpc3BhdGNoIHJl
cGxpZXMgdG8KKyAgICAgICAgd29ya2VyX2NsYXNzIC0gdHlwZSBvZiB3b3JrZXJzIHRvIGNyZWF0
ZS4gVGhpcyBjbGFzcyBtdXN0IGltcGxlbWVudAorICAgICAgICAgICAgdGhlIG1ldGhvZHMgaW4g
bWVzc2FnZV9icm9rZXIyLkNsaWVudEludGVyZmFjZS4KKyAgICBSZXR1cm5zOgorICAgICAgICBB
IGhhbmRsZSB0byBhbiBvYmplY3QgdGhhdCB3aWxsIHRhbGsgdG8gYSBtZXNzYWdlIGJyb2tlciBj
b25maWd1cmVkCisgICAgICAgIGZvciB0aGUgbm9ybWFsIG1hbmFnZXIvd29ya2VyIGNvbW11bmlj
YXRpb24uCisgICAgIiIiCisgICAgd29ya2VyX21vZGVsID0gb3B0aW9ucy53b3JrZXJfbW9kZWwK
KyAgICBpZiB3b3JrZXJfbW9kZWwgPT0gJ2lubGluZSc6CisgICAgICAgIHF1ZXVlX2NsYXNzID0g
UXVldWUuUXVldWUKKyAgICAgICAgbWFuYWdlcl9jbGFzcyA9IF9JbmxpbmVNYW5hZ2VyCisgICAg
ZWxpZiB3b3JrZXJfbW9kZWwgPT0gJ3RocmVhZHMnOgorICAgICAgICBxdWV1ZV9jbGFzcyA9IFF1
ZXVlLlF1ZXVlCisgICAgICAgIG1hbmFnZXJfY2xhc3MgPSBfVGhyZWFkZWRNYW5hZ2VyCisgICAg
ZWxpZiB3b3JrZXJfbW9kZWwgPT0gJ3Byb2Nlc3NlcycgYW5kIF9tdWx0aXByb2Nlc3NpbmdfaXNf
YXZhaWxhYmxlOgorICAgICAgICBxdWV1ZV9jbGFzcyA9IF9NdWx0aXByb2Nlc3NpbmdfUXVldWUK
KyAgICAgICAgbWFuYWdlcl9jbGFzcyA9IF9NdWx0aVByb2Nlc3NNYW5hZ2VyCisgICAgZWxzZToK
KyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5zdXBwb3J0ZWQgdmFsdWUgZm9yIC0td29ya2Vy
LW1vZGVsOiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlcl9tb2RlbCkKKwor
ICAgIGJyb2tlciA9IG1lc3NhZ2VfYnJva2VyMi5Ccm9rZXIob3B0aW9ucywgcXVldWVfY2xhc3Mp
CisgICAgcmV0dXJuIG1hbmFnZXJfY2xhc3MoYnJva2VyLCBwb3J0LCBvcHRpb25zLCBtYW5hZ2Vy
LCB3b3JrZXJfY2xhc3MpCisKKworY2xhc3MgX0Fic3RyYWN0TWFuYWdlcihvYmplY3QpOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHBvcnQsIG9wdGlvbnMsIG1hbmFnZXIsIHdvcmtl
cl9jbGFzcyk6CisgICAgICAgICIiIkJhc2UgaW5pdGlhbGl6YXRpb24gZm9yIGFsbCBNYW5hZ2Vy
IG9iamVjdHMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGJyb2tlcjogaGFuZGxlIHRv
IHRoZSBtZXNzYWdlX2Jyb2tlcjIgb2JqZWN0CisgICAgICAgICAgICBwb3J0OiBoYW5kbGUgdG8g
cG9ydC1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5CisgICAgICAgICAgICBvcHRpb25zOiBjb21tYW5k
IGxpbmUgb3B0aW9ucyBvYmplY3QKKyAgICAgICAgICAgIG1hbmFnZXI6IE1hbmFnZXIgY2FsbGJh
Y2sgb2JqZWN0ICh0aGUgY2FsbGVyKQorICAgICAgICAgICAgd29ya2VyX2NsYXNzOiBjbGFzcyBv
YmplY3QgdG8gdXNlIHRvIGNyZWF0ZSB3b3JrZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgc2Vs
Zi5fYnJva2VyID0gYnJva2VyCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisgICAg
ICAgIHNlbGYuX21hbmFnZXIgPSBtYW5hZ2VyCisgICAgICAgIHNlbGYuX3dvcmtlcl9jbGFzcyA9
IHdvcmtlcl9jbGFzcworCisKK2NsYXNzIF9JbmxpbmVNYW5hZ2VyKF9BYnN0cmFjdE1hbmFnZXIp
OgorICAgIHBhc3MKKworCitjbGFzcyBfVGhyZWFkZWRNYW5hZ2VyKF9BYnN0cmFjdE1hbmFnZXIp
OgorICAgIHBhc3MKKworCitjbGFzcyBfTXVsdGlQcm9jZXNzTWFuYWdlcihfQWJzdHJhY3RNYW5h
Z2VyKToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5h
Z2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA5Zjc4ZjU3ODQ3OWVh
NzQ1OTAyMTFkOTI3NWIwZjViNjFkNGQzMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jy
b2tlcl91bml0dGVzdC5weQpAQCAtMCwwICsxLDkwIEBACisjIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisj
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1w
b3J0IG9wdHBhcnNlCitpbXBvcnQgUXVldWUKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAor
Cit0cnk6CisgICAgX211bHRpcHJvY2Vzc2luZ19pc19hdmFpbGFibGUgPSBUcnVlCisgICAgZnJv
bSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFF1ZXVlIGFzIF9NdWx0aXByb2Nlc3NpbmdfUXVldWUK
K2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfbXVsdGlwcm9jZXNzaW5nX2lzX2F2YWlsYWJsZSA9
IEZhbHNlCisgICAgX011bHRpcHJvY2Vzc2luZ19RdWV1ZSA9IFF1ZXVlLlF1ZXVlCisKKworZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRjYXB0dXJlCisKK2Zyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgbWFuYWdlcl93b3JrZXJfYnJva2VyCitmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgbWVzc2FnZV9icm9rZXIyCisK
KworY2xhc3MgVGVzdFdvcmtlcihvYmplY3QpOgorICAgIHBhc3MKKworCitkZWYgZ2V0X29wdGlv
bnMod29ya2VyX21vZGVsKToKKyAgICBvcHRpb25fbGlzdCA9IG1hbmFnZXJfd29ya2VyX2Jyb2tl
ci5ydW50aW1lX29wdGlvbnMoKQorICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcihv
cHRpb25fbGlzdD1vcHRpb25fbGlzdCkKKyAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNl
X2FyZ3MoYXJncz1bJy0td29ya2VyLW1vZGVsJywgd29ya2VyX21vZGVsXSkKKyAgICByZXR1cm4g
b3B0aW9ucworCisKK2RlZiBtYWtlX2Jyb2tlcihtYW5hZ2VyLCB3b3JrZXJfbW9kZWwpOgorICAg
IG9wdGlvbnMgPSBnZXRfb3B0aW9ucyh3b3JrZXJfbW9kZWwpCisgICAgcmV0dXJuIG1hbmFnZXJf
d29ya2VyX2Jyb2tlci5nZXQocG9ydC5nZXQoInRlc3QiKSwgb3B0aW9ucywgbWFuYWdlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0V29ya2VyKQorCisKK2NsYXNz
IEZ1bmN0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2dldF9faW5s
aW5lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUobWFrZV9icm9rZXIoc2VsZiwgJ2lu
bGluZScpIGlzIG5vdCBOb25lKQorCisgICAgZGVmIHRlc3RfZ2V0X190aHJlYWRzKHNlbGYpOgor
ICAgICAgICBzZWxmLmFzc2VydFRydWUobWFrZV9icm9rZXIoc2VsZiwgJ3RocmVhZHMnKSBpcyBu
b3QgTm9uZSkKKworICAgIGRlZiB0ZXN0X2dldF9fcHJvY2Vzc2VzKHNlbGYpOgorICAgICAgICBp
ZiBfbXVsdGlwcm9jZXNzaW5nX2lzX2F2YWlsYWJsZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShtYWtlX2Jyb2tlcihzZWxmLCAncHJvY2Vzc2VzJykgaXMgbm90IE5vbmUpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYWtlX2Jy
b2tlciwgc2VsZiwgJ3Byb2Nlc3NlcycpCisKKyAgICBkZWYgdGVzdF9nZXRfX3Vua25vd24oc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1ha2VfYnJva2VyLCBz
ZWxmLCAndW5rbm93bicpCisKKyAgICBkZWYgdGVzdF9ydW50aW1lX29wdGlvbnMoc2VsZik6Cisg
ICAgICAgIG9wdGlvbl9saXN0ID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLnJ1bnRpbWVfb3B0aW9u
cygpCisgICAgICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcihvcHRpb25fbGlzdD1v
cHRpb25fbGlzdCkKKyAgICAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKFtd
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3B0aW9ucykKKworCitpZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81584</attachid>
            <date>2011-02-07 22:03:10 -0800</date>
            <delta_ts>2011-02-07 22:19:18 -0800</delta_ts>
            <desc>update w/ review feedback from mihaip</desc>
            <filename>bug-53477-20110207220309.patch</filename>
            <type>text/plain</type>
            <size>11772</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNjZi
Zjg5M2Q5NjQyYTEzNjEyZjlkYmVlNjA1MzdjY2NkOGRkMzQyLi5lZTczNDgyOTg3NWNjMDg1MTU4
MmM5ZGM2MDk1MTE2OTk3NDM2YWJiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDEtMzEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IGFkZCBzdHVicyBmb3IgdGhl
IE1hbmFnZXIgb2JqZWN0cyB0aGF0CisgICAgICAgIHdpbGwgYWJzdHJhY3QgdGhlIGNvbmN1cnJl
bmN5IGltcGxlbWVudGF0aW9uIChpbmxpbmUgLyB0aHJlYWRzIC8KKyAgICAgICAgcHJvY2Vzc2Vz
KS4gVGhlc2UgY2xhc3NlcyBkbyBub3RoaW5nIHlldCBhbmQgYXJlIG5vdCB3aXJlZCB1cCB0bwor
ICAgICAgICBhbnl0aGluZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTM0NzcKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weTogQWRkZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
cl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKwogMjAxMS0wMS0yNSAgRGlyayBQ
cmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jy
b2tlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MTgyZjQwYzU5M2I5MWUyOTdhMWU1ZTBhMTAxMjUwZjJhYTUy
NDg2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CkBAIC0wLDAgKzEsMTY5
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiTW9kdWxlIGZvciBoYW5kbGluZyBtZXNzYWdlcyBh
bmQgY29uY3VycmVuY3kgZm9yIHJ1bi13ZWJraXQtdGVzdHMuCisKK1RoaXMgbW9kdWxlIGJ1aWxk
cyBvbiB0aGUgZnVuY3Rpb25hbGl0eSBvZiBtZXNzYWdlX2Jyb2tlcjIgdG8gcHJvdmlkZQorYSBz
aW1wbGUgbWVzc2FnZSBicm9rZXIgZm9yIGEgbWFuYWdlciBzZW5kaW5nIG1lc3NhZ2VzIHRvIChh
bmQgZ2V0dGluZworcmVwbGllcyBmcm9tKSBhIHBvb2wgb2Ygd29ya2Vycy4gSW4gYWRkaXRpb24g
aXQgcHJvdmlkZXMgYSBjaG9pY2Ugb2YKK2NvbmN1cnJlbmN5IG1vZGVscyBmb3IgY2FsbGVycyB0
byBjaG9vc2UgZnJvbSAoc2luZ2xlLXRocmVhZGVkIGlubGluZQorbW9kZWwsIHRocmVhZHMsIG9y
IHByb2Nlc3NlcykuCisKK0ZJWE1FOiBBdCB0aGUgbW9tZW50LCB0aGlzIG1vZHVsZSBpcyBqdXN0
IGEgYnVuY2ggb2Ygc3R1YnMsIGJ1dCBldmVudHVhbGx5CitpdCB3aWxsIHByb3ZpZGUgdGhyZWUg
c2V0cyBvZiBtYW5hZ2VyIGNsYXNzZXMgYW5kIHdvcmtlciBjbGFzc2VzIGZvcgordGhlIHRocmVl
IGNvbmN1cnJlbmN5IG1vZGVscy4gVGhlIGdldCgpIGZhY3RvcnkgbWV0aG9kIHNlbGVjdHMgYmV0
d2VlbgordGhlbS4KKyIiIgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9wdHBhcnNlCitpbXBv
cnQgUXVldWUKK2ltcG9ydCB0aHJlYWRpbmcKKworIworIyBIYW5kbGUgUHl0aG9uIDwgMi42IHdo
ZXJlIG11bHRpcHJvY2Vzc2luZyBpc24ndCBhdmFpbGFibGUuCisjCit0cnk6CisgICAgX211bHRp
cHJvY2Vzc2luZ19pc19hdmFpbGFibGUgPSBUcnVlCisgICAgZnJvbSBtdWx0aXByb2Nlc3Npbmcg
aW1wb3J0IFByb2Nlc3MgYXMgX011bHRpcHJvY2Vzc2luZ19Qcm9jZXNzCisgICAgZnJvbSBtdWx0
aXByb2Nlc3NpbmcgaW1wb3J0IFF1ZXVlIGFzIF9NdWx0aXByb2Nlc3NpbmdfUXVldWUKK2V4Y2Vw
dCBJbXBvcnRFcnJvcjoKKyAgICBfbXVsdGlwcm9jZXNzaW5nX2lzX2F2YWlsYWJsZSA9IEZhbHNl
CisgICAgX011bHRpcHJvY2Vzc2luZ19Qcm9jZXNzID0gdGhyZWFkaW5nLlRocmVhZAorICAgIF9N
dWx0aXByb2Nlc3NpbmdfUXVldWUgPSBRdWV1ZS5RdWV1ZQorCisKK2Zyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBtZXNzYWdlX2Jyb2tlcjIKKworCitfbG9n
ID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKyMKKyMgVG9waWMgbmFtZXMgZm9yIE1h
bmFnZXIgPC0+IFdvcmtlciBtZXNzYWdpbmcKKyMKK01BTkFHRVJfVE9QSUMgPSAnbWFuYWdlcnMn
CitBTllfV09SS0VSX1RPUElDID0gJ3dvcmtlcnMnCisKKworZGVmIHJ1bnRpbWVfb3B0aW9ucygp
OgorICAgICIiIlJldHVybiBhIGxpc3Qgb2Ygb3B0cGFyc2UuT3B0aW9uIG9iamVjdHMgZm9yIGFu
eSBydW50aW1lIHZhbHVlcyB1c2VkCisgICAgYnkgdGhpcyBtb2R1bGUuIiIiCisgICAgb3B0aW9u
cyA9IFsKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0td29ya2VyLW1vZGVsIiwgYWN0
aW9uPSJzdG9yZSIsCisgICAgICAgICAgICBoZWxwPSgiY29udHJvbHMgd29ya2VyIG1vZGVsLiBW
YWxpZCB2YWx1ZXMgYXJlICIKKyAgICAgICAgICAgICInaW5saW5lJywgJ3RocmVhZHMnLCBhbmQg
J3Byb2Nlc3NlcycuIikpLAorICAgIF0KKyAgICByZXR1cm4gb3B0aW9ucworCisKK2RlZiBnZXQo
cG9ydCwgb3B0aW9ucywgbWFuYWdlciwgd29ya2VyX2NsYXNzKToKKyAgICAiIiJSZXR1cm4gYSBj
b25uZWN0aW9uIHRvIGEgbWFuYWdlci93b3JrZXIgbWVzc2FnZV9icm9rZXIKKworICAgIEFyZ3M6
CisgICAgICAgIHBvcnQgLSBoYW5kbGUgdG8gbGF5b3V0X3Rlc3RzL3BvcnQgb2JqZWN0IGZvciBw
b3J0LXNwZWNpZmljIHN0dWZmCisgICAgICAgIG9wdGlvbnMgLSBvcHRwYXJzZSBhcmd1bWVudCBm
b3IgY29tbWFuZC1saW5lIG9wdGlvbnMKKyAgICAgICAgbWFuYWdlciAtIG9iamVjdCB0byBkaXNw
YXRjaCByZXBsaWVzIHRvCisgICAgICAgIHdvcmtlcl9jbGFzcyAtIHR5cGUgb2Ygd29ya2VycyB0
byBjcmVhdGUuIFRoaXMgY2xhc3MgbXVzdCBpbXBsZW1lbnQKKyAgICAgICAgICAgIHRoZSBtZXRo
b2RzIGluIEFic3RyYWN0V29ya2VyLgorICAgIFJldHVybnM6CisgICAgICAgIEEgaGFuZGxlIHRv
IGFuIG9iamVjdCB0aGF0IHdpbGwgdGFsayB0byBhIG1lc3NhZ2UgYnJva2VyIGNvbmZpZ3VyZWQK
KyAgICAgICAgZm9yIHRoZSBub3JtYWwgbWFuYWdlci93b3JrZXIgY29tbXVuaWNhdGlvbi4KKyAg
ICAiIiIKKyAgICB3b3JrZXJfbW9kZWwgPSBvcHRpb25zLndvcmtlcl9tb2RlbAorICAgIGlmIHdv
cmtlcl9tb2RlbCA9PSAnaW5saW5lJzoKKyAgICAgICAgcXVldWVfY2xhc3MgPSBRdWV1ZS5RdWV1
ZQorICAgICAgICBtYW5hZ2VyX2NsYXNzID0gX0lubGluZU1hbmFnZXIKKyAgICBlbGlmIHdvcmtl
cl9tb2RlbCA9PSAndGhyZWFkcyc6CisgICAgICAgIHF1ZXVlX2NsYXNzID0gUXVldWUuUXVldWUK
KyAgICAgICAgbWFuYWdlcl9jbGFzcyA9IF9UaHJlYWRlZE1hbmFnZXIKKyAgICBlbGlmIHdvcmtl
cl9tb2RlbCA9PSAncHJvY2Vzc2VzJyBhbmQgX211bHRpcHJvY2Vzc2luZ19pc19hdmFpbGFibGU6
CisgICAgICAgIHF1ZXVlX2NsYXNzID0gX011bHRpcHJvY2Vzc2luZ19RdWV1ZQorICAgICAgICBt
YW5hZ2VyX2NsYXNzID0gX011bHRpUHJvY2Vzc01hbmFnZXIKKyAgICBlbHNlOgorICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCB2YWx1ZSBmb3IgLS13b3JrZXItbW9kZWw6ICVz
IiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VyX21vZGVsKQorCisgICAgYnJva2Vy
ID0gbWVzc2FnZV9icm9rZXIyLkJyb2tlcihvcHRpb25zLCBxdWV1ZV9jbGFzcykKKyAgICByZXR1
cm4gbWFuYWdlcl9jbGFzcyhicm9rZXIsIHBvcnQsIG9wdGlvbnMsIG1hbmFnZXIsIHdvcmtlcl9j
bGFzcykKKworCitjbGFzcyBBYnN0cmFjdFdvcmtlcihtZXNzYWdlX2Jyb2tlcjIuQnJva2VyQ2xp
ZW50KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyX2Nvbm5lY3Rpb24sIHdvcmtlcl9u
dW1iZXIsIG9wdGlvbnMsICoqa3dhcmdzKToKKyAgICAgICAgIiIiVGhlIGNvbnN0cnVjdG9yIHNo
b3VsZCBiZSB1c2VkIHRvIGRvIGFueSBzaW1wbGUgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgbmVj
ZXNzYXJ5LCBidXQgc2hvdWxkIG5vdCBkbyBhbnl0aGluZyB0aGF0IGNyZWF0ZXMgZGF0YSBzdHJ1
Y3R1cmVzCisgICAgICAgIHRoYXQgY2Fubm90IGJlIFBpY2tsZWQgb3Igc2VudCBhY3Jvc3MgcHJv
Y2Vzc2VzIChsaWtlIG9wZW5pbmcKKyAgICAgICAgZmlsZXMgb3Igc29ja2V0cykuIENvbXBsZXgg
aW5pdGlhbGl6YXRpb24gc2hvdWxkIGJlIGRvbmUgYXQgdGhlCisgICAgICAgIHN0YXJ0IG9mIHRo
ZSBydW4oKSBjYWxsLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBicm9rZXJfY29ubmVj
dGlvbiAtIGhhbmRsZSB0byB0aGUgQnJva2VyQ29ubmVjdGlvbiBvYmplY3QgY3JlYXRpbmcKKyAg
ICAgICAgICAgICAgICB0aGUgd29ya2VyIGFuZCB0aGF0IGNhbiBiZSB1c2VkIGZvciBtZXNzYWdp
bmcuCisgICAgICAgICAgICB3b3JrZXJfbnVtYmVyIC0gaWRlbnRpZmllciBmb3IgdGhpcyBwYXJ0
aWN1bGFyIHdvcmtlcgorICAgICAgICAgICAgb3B0aW9ucyAtIGNvbW1hbmQtbGluZSBhcmd1bWVu
dCBvYmplY3QgZnJvbSBvcHRwYXJzZSIiIgorCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVk
RXJyb3IKKworICAgIGRlZiBydW4oc2VsZiwgcG9ydCk6CisgICAgICAgICIiIkNhbGxiYWNrIGZv
ciB0aGUgd29ya2VyIHRvIHN0YXJ0IGV4ZWN1dGluZy4gVHlwaWNhbGx5IGRvZXMgYW55CisgICAg
ICAgIHJlbWFpbmluZyBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiBjYWxscyBicm9rZXJfY29ubmVj
dGlvbi5ydW5fbWVzc2FnZV9sb29wKCkuIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVk
RXJyb3IKKworICAgIGRlZiBjYW5jZWwoc2VsZik6CisgICAgICAgICIiIkNhbGxlZCB3aGVuIHBv
c3NpYmxlIHRvIGluZGljYXRlIHRvIHRoZSB3b3JrZXIgdG8gc3RvcCBwcm9jZXNzaW5nCisgICAg
ICAgIG1lc3NhZ2VzIGFuZCBzaHV0IGRvd24uIE5vdGUgdGhhdCB3b3JrZXJzIG1heSBiZSBzdG9w
cGVkIHdpdGhvdXQgdGhpcworICAgICAgICBtZXRob2QgYmVpbmcgY2FsbGVkLCBzbyBjbGllbnRz
IHNob3VsZCBub3QgcmVseSBzb2xlbHkgb24gdGhpcy4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvcgorCisKK2NsYXNzIF9BYnN0cmFjdE1hbmFnZXIob2JqZWN0KToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBwb3J0LCBvcHRpb25zLCBtYW5hZ2VyLCB3b3JrZXJf
Y2xhc3MpOgorICAgICAgICAiIiJCYXNlIGluaXRpYWxpemF0aW9uIGZvciBhbGwgTWFuYWdlciBv
YmplY3RzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBicm9rZXI6IGhhbmRsZSB0byB0
aGUgbWVzc2FnZV9icm9rZXIyIG9iamVjdAorICAgICAgICAgICAgcG9ydDogaGFuZGxlIHRvIHBv
cnQtc3BlY2lmaWMgZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAgb3B0aW9uczogY29tbWFuZCBs
aW5lIG9wdGlvbnMgb2JqZWN0CisgICAgICAgICAgICBtYW5hZ2VyOiBNYW5hZ2VyIGNhbGxiYWNr
IG9iamVjdCAodGhlIGNhbGxlcikKKyAgICAgICAgICAgIHdvcmtlcl9jbGFzczogY2xhc3Mgb2Jq
ZWN0IHRvIHVzZSB0byBjcmVhdGUgd29ya2Vycy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYu
X2Jyb2tlciA9IGJyb2tlcgorICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAgICAg
ICBzZWxmLl9tYW5hZ2VyID0gbWFuYWdlcgorICAgICAgICBzZWxmLl93b3JrZXJfY2xhc3MgPSB3
b3JrZXJfY2xhc3MKKworCitjbGFzcyBfSW5saW5lTWFuYWdlcihfQWJzdHJhY3RNYW5hZ2VyKToK
KyAgICBwYXNzCisKKworY2xhc3MgX1RocmVhZGVkTWFuYWdlcihfQWJzdHJhY3RNYW5hZ2VyKToK
KyAgICBwYXNzCisKKworY2xhc3MgX011bHRpUHJvY2Vzc01hbmFnZXIoX0Fic3RyYWN0TWFuYWdl
cik6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
cl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwOWY3OGY1Nzg0NzllYTc0
NTkwMjExZDkyNzViMGY1YjYxZDRkMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9r
ZXJfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw5MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9y
dCBvcHRwYXJzZQoraW1wb3J0IFF1ZXVlCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKwor
dHJ5OgorICAgIF9tdWx0aXByb2Nlc3NpbmdfaXNfYXZhaWxhYmxlID0gVHJ1ZQorICAgIGZyb20g
bXVsdGlwcm9jZXNzaW5nIGltcG9ydCBRdWV1ZSBhcyBfTXVsdGlwcm9jZXNzaW5nX1F1ZXVlCitl
eGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX211bHRpcHJvY2Vzc2luZ19pc19hdmFpbGFibGUgPSBG
YWxzZQorICAgIF9NdWx0aXByb2Nlc3NpbmdfUXVldWUgPSBRdWV1ZS5RdWV1ZQorCisKK2Zyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0Y2FwdHVyZQorCitmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
bGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1hbmFnZXJfd29ya2VyX2Jyb2tlcgorZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1lc3NhZ2VfYnJva2VyMgorCisK
K2NsYXNzIFRlc3RXb3JrZXIob2JqZWN0KToKKyAgICBwYXNzCisKKworZGVmIGdldF9vcHRpb25z
KHdvcmtlcl9tb2RlbCk6CisgICAgb3B0aW9uX2xpc3QgPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIu
cnVudGltZV9vcHRpb25zKCkKKyAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIob3B0
aW9uX2xpc3Q9b3B0aW9uX2xpc3QpCisgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9h
cmdzKGFyZ3M9WyctLXdvcmtlci1tb2RlbCcsIHdvcmtlcl9tb2RlbF0pCisgICAgcmV0dXJuIG9w
dGlvbnMKKworCitkZWYgbWFrZV9icm9rZXIobWFuYWdlciwgd29ya2VyX21vZGVsKToKKyAgICBv
cHRpb25zID0gZ2V0X29wdGlvbnMod29ya2VyX21vZGVsKQorICAgIHJldHVybiBtYW5hZ2VyX3dv
cmtlcl9icm9rZXIuZ2V0KHBvcnQuZ2V0KCJ0ZXN0IiksIG9wdGlvbnMsIG1hbmFnZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFdvcmtlcikKKworCitjbGFzcyBG
dW5jdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9nZXRfX2lubGlu
ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1ha2VfYnJva2VyKHNlbGYsICdpbmxp
bmUnKSBpcyBub3QgTm9uZSkKKworICAgIGRlZiB0ZXN0X2dldF9fdGhyZWFkcyhzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKG1ha2VfYnJva2VyKHNlbGYsICd0aHJlYWRzJykgaXMgbm90
IE5vbmUpCisKKyAgICBkZWYgdGVzdF9nZXRfX3Byb2Nlc3NlcyhzZWxmKToKKyAgICAgICAgaWYg
X211bHRpcHJvY2Vzc2luZ19pc19hdmFpbGFibGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRy
dWUobWFrZV9icm9rZXIoc2VsZiwgJ3Byb2Nlc3NlcycpIGlzIG5vdCBOb25lKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWFrZV9icm9r
ZXIsIHNlbGYsICdwcm9jZXNzZXMnKQorCisgICAgZGVmIHRlc3RfZ2V0X191bmtub3duKHNlbGYp
OgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYWtlX2Jyb2tlciwgc2Vs
ZiwgJ3Vua25vd24nKQorCisgICAgZGVmIHRlc3RfcnVudGltZV9vcHRpb25zKHNlbGYpOgorICAg
ICAgICBvcHRpb25fbGlzdCA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5ydW50aW1lX29wdGlvbnMo
KQorICAgICAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIob3B0aW9uX2xpc3Q9b3B0
aW9uX2xpc3QpCisgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhbXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wdGlvbnMpCisKKworaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81585</attachid>
            <date>2011-02-07 22:19:20 -0800</date>
            <delta_ts>2011-02-07 22:22:02 -0800</delta_ts>
            <desc>fix multiprocessing import</desc>
            <filename>bug-53477-20110207221919.patch</filename>
            <type>text/plain</type>
            <size>24844</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4OTE4
NjEzZTllYzg5ZWRhODBlOTllM2RhMTRkNjc3ODJhODIxYTllLi5lZTczNDgyOTg3NWNjMDg1MTU4
MmM5ZGM2MDk1MTE2OTk3NDM2YWJiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDEtMzEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IGFkZCBzdHVicyBmb3IgdGhl
IE1hbmFnZXIgb2JqZWN0cyB0aGF0CisgICAgICAgIHdpbGwgYWJzdHJhY3QgdGhlIGNvbmN1cnJl
bmN5IGltcGxlbWVudGF0aW9uIChpbmxpbmUgLyB0aHJlYWRzIC8KKyAgICAgICAgcHJvY2Vzc2Vz
KS4gVGhlc2UgY2xhc3NlcyBkbyBub3RoaW5nIHlldCBhbmQgYXJlIG5vdCB3aXJlZCB1cCB0bwor
ICAgICAgICBhbnl0aGluZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTM0NzcKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weTogQWRkZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
cl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKworMjAxMS0wMS0yNSAgRGlyayBQ
cmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0czogYWRkIHNpbXBsaWZp
ZWQgbWVzc2FnZSBicm9rZXIgZm9yIG5ldy1zdHlsZQorICAgICAgICBtZXNzYWdpbmcuIFRoaXMg
Y2hhbmdlIGFkZHMgYSB2ZXJ5IHNpbXBsZSBtZXNzYWdlIGJyb2tlciB0aGF0CisgICAgICAgIHdp
bGwgYmUgdXNlZCB0byBzaHV0dGxlIG1lc3NhZ2VzIGJldHdlZW4gdGhlIFRlc3RSdW5uZXIyIG1h
bmFnZXIKKyAgICAgICAgdGhyZWFkIGFuZCB0aGUgV29ya2VyIHRocmVhZHMuIEZvciBub3cgdGhl
IGNsYXNzIGlzIG5vdCB1c2VkIGJ5CisgICAgICAgIGFueXRoaW5nLCBidXQgdGhlIGV2ZW50dWFs
IHVzYWdlIGNhbiBiZSBzZWVuIGluIHRoZSBwYXRjaGVzCisgICAgICAgIGF0dGFjaGVkIHRvIGJ1
ZyA0OTU2Ni4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTMxNTgKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyMi5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIyX3VuaXR0
ZXN0LnB5OiBBZGRlZC4KKwogMjAxMS0wMi0wNCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGEgdGVzdCBjYXNlIGZvciBlbmNvZGUvZGVjb2RlIG9mIEZvcm1E
YXRhL0Zvcm1EYXRhRWxlbWVudApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93
b3JrZXJfYnJva2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhMTM5MmYyNWI2YWRmNWExNGNkMGM4MmFjYjg3
ZGY5OTViMjdkZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKQEAgLTAs
MCArMSwxNjkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJNb2R1bGUgZm9yIGhhbmRsaW5nIG1l
c3NhZ2VzIGFuZCBjb25jdXJyZW5jeSBmb3IgcnVuLXdlYmtpdC10ZXN0cy4KKworVGhpcyBtb2R1
bGUgYnVpbGRzIG9uIHRoZSBmdW5jdGlvbmFsaXR5IG9mIG1lc3NhZ2VfYnJva2VyMiB0byBwcm92
aWRlCithIHNpbXBsZSBtZXNzYWdlIGJyb2tlciBmb3IgYSBtYW5hZ2VyIHNlbmRpbmcgbWVzc2Fn
ZXMgdG8gKGFuZCBnZXR0aW5nCityZXBsaWVzIGZyb20pIGEgcG9vbCBvZiB3b3JrZXJzLiBJbiBh
ZGRpdGlvbiBpdCBwcm92aWRlcyBhIGNob2ljZSBvZgorY29uY3VycmVuY3kgbW9kZWxzIGZvciBj
YWxsZXJzIHRvIGNob29zZSBmcm9tIChzaW5nbGUtdGhyZWFkZWQgaW5saW5lCittb2RlbCwgdGhy
ZWFkcywgb3IgcHJvY2Vzc2VzKS4KKworRklYTUU6IEF0IHRoZSBtb21lbnQsIHRoaXMgbW9kdWxl
IGlzIGp1c3QgYSBidW5jaCBvZiBzdHVicywgYnV0IGV2ZW50dWFsbHkKK2l0IHdpbGwgcHJvdmlk
ZSB0aHJlZSBzZXRzIG9mIG1hbmFnZXIgY2xhc3NlcyBhbmQgd29ya2VyIGNsYXNzZXMgZm9yCit0
aGUgdGhyZWUgY29uY3VycmVuY3kgbW9kZWxzLiBUaGUgZ2V0KCkgZmFjdG9yeSBtZXRob2Qgc2Vs
ZWN0cyBiZXR3ZWVuCit0aGVtLgorIiIiCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3B0cGFy
c2UKK2ltcG9ydCBRdWV1ZQoraW1wb3J0IHRocmVhZGluZworCisjCisjIEhhbmRsZSBQeXRob24g
PCAyLjYgd2hlcmUgbXVsdGlwcm9jZXNzaW5nIGlzbid0IGF2YWlsYWJsZS4KKyMKK3RyeToKKyAg
ICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCisgICAgX011bHRpcHJvY2Vzc2luZ19Qcm9jZXNzID0g
bXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MKKyAgICBfTXVsdGlwcm9jZXNzaW5nX1F1ZXVlID0gbXVs
dGlwcm9jZXNzaW5nLlF1ZXVlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbXVsdGlwcm9jZXNz
aW5nID0gTm9uZQorICAgIF9NdWx0aXByb2Nlc3NpbmdfUHJvY2VzcyA9IHRocmVhZGluZy5UaHJl
YWQKKyAgICBfTXVsdGlwcm9jZXNzaW5nX1F1ZXVlID0gUXVldWUuUXVldWUKKworCitmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgbWVzc2FnZV9icm9rZXIy
CisKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisjCisjIFRvcGljIG5h
bWVzIGZvciBNYW5hZ2VyIDwtPiBXb3JrZXIgbWVzc2FnaW5nCisjCitNQU5BR0VSX1RPUElDID0g
J21hbmFnZXJzJworQU5ZX1dPUktFUl9UT1BJQyA9ICd3b3JrZXJzJworCisKK2RlZiBydW50aW1l
X29wdGlvbnMoKToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIG9wdHBhcnNlLk9wdGlvbiBvYmpl
Y3RzIGZvciBhbnkgcnVudGltZSB2YWx1ZXMgdXNlZAorICAgIGJ5IHRoaXMgbW9kdWxlLiIiIgor
ICAgIG9wdGlvbnMgPSBbCisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXdvcmtlci1t
b2RlbCIsIGFjdGlvbj0ic3RvcmUiLAorICAgICAgICAgICAgaGVscD0oImNvbnRyb2xzIHdvcmtl
ciBtb2RlbC4gVmFsaWQgdmFsdWVzIGFyZSAiCisgICAgICAgICAgICAiJ2lubGluZScsICd0aHJl
YWRzJywgYW5kICdwcm9jZXNzZXMnLiIpKSwKKyAgICBdCisgICAgcmV0dXJuIG9wdGlvbnMKKwor
CitkZWYgZ2V0KHBvcnQsIG9wdGlvbnMsIG1hbmFnZXIsIHdvcmtlcl9jbGFzcyk6CisgICAgIiIi
UmV0dXJuIGEgY29ubmVjdGlvbiB0byBhIG1hbmFnZXIvd29ya2VyIG1lc3NhZ2VfYnJva2VyCisK
KyAgICBBcmdzOgorICAgICAgICBwb3J0IC0gaGFuZGxlIHRvIGxheW91dF90ZXN0cy9wb3J0IG9i
amVjdCBmb3IgcG9ydC1zcGVjaWZpYyBzdHVmZgorICAgICAgICBvcHRpb25zIC0gb3B0cGFyc2Ug
YXJndW1lbnQgZm9yIGNvbW1hbmQtbGluZSBvcHRpb25zCisgICAgICAgIG1hbmFnZXIgLSBvYmpl
Y3QgdG8gZGlzcGF0Y2ggcmVwbGllcyB0bworICAgICAgICB3b3JrZXJfY2xhc3MgLSB0eXBlIG9m
IHdvcmtlcnMgdG8gY3JlYXRlLiBUaGlzIGNsYXNzIG11c3QgaW1wbGVtZW50CisgICAgICAgICAg
ICB0aGUgbWV0aG9kcyBpbiBBYnN0cmFjdFdvcmtlci4KKyAgICBSZXR1cm5zOgorICAgICAgICBB
IGhhbmRsZSB0byBhbiBvYmplY3QgdGhhdCB3aWxsIHRhbGsgdG8gYSBtZXNzYWdlIGJyb2tlciBj
b25maWd1cmVkCisgICAgICAgIGZvciB0aGUgbm9ybWFsIG1hbmFnZXIvd29ya2VyIGNvbW11bmlj
YXRpb24uCisgICAgIiIiCisgICAgd29ya2VyX21vZGVsID0gb3B0aW9ucy53b3JrZXJfbW9kZWwK
KyAgICBpZiB3b3JrZXJfbW9kZWwgPT0gJ2lubGluZSc6CisgICAgICAgIHF1ZXVlX2NsYXNzID0g
UXVldWUuUXVldWUKKyAgICAgICAgbWFuYWdlcl9jbGFzcyA9IF9JbmxpbmVNYW5hZ2VyCisgICAg
ZWxpZiB3b3JrZXJfbW9kZWwgPT0gJ3RocmVhZHMnOgorICAgICAgICBxdWV1ZV9jbGFzcyA9IFF1
ZXVlLlF1ZXVlCisgICAgICAgIG1hbmFnZXJfY2xhc3MgPSBfVGhyZWFkZWRNYW5hZ2VyCisgICAg
ZWxpZiB3b3JrZXJfbW9kZWwgPT0gJ3Byb2Nlc3NlcycgYW5kIG11bHRpcHJvY2Vzc2luZzoKKyAg
ICAgICAgcXVldWVfY2xhc3MgPSBfTXVsdGlwcm9jZXNzaW5nX1F1ZXVlCisgICAgICAgIG1hbmFn
ZXJfY2xhc3MgPSBfTXVsdGlQcm9jZXNzTWFuYWdlcgorICAgIGVsc2U6CisgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoInVuc3VwcG9ydGVkIHZhbHVlIGZvciAtLXdvcmtlci1tb2RlbDogJXMiICUK
KyAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXJfbW9kZWwpCisKKyAgICBicm9rZXIgPSBt
ZXNzYWdlX2Jyb2tlcjIuQnJva2VyKG9wdGlvbnMsIHF1ZXVlX2NsYXNzKQorICAgIHJldHVybiBt
YW5hZ2VyX2NsYXNzKGJyb2tlciwgcG9ydCwgb3B0aW9ucywgbWFuYWdlciwgd29ya2VyX2NsYXNz
KQorCisKK2NsYXNzIEFic3RyYWN0V29ya2VyKG1lc3NhZ2VfYnJva2VyMi5Ccm9rZXJDbGllbnQp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXJfY29ubmVjdGlvbiwgd29ya2VyX251bWJl
ciwgb3B0aW9ucywgKiprd2FyZ3MpOgorICAgICAgICAiIiJUaGUgY29uc3RydWN0b3Igc2hvdWxk
IGJlIHVzZWQgdG8gZG8gYW55IHNpbXBsZSBpbml0aWFsaXphdGlvbgorICAgICAgICBuZWNlc3Nh
cnksIGJ1dCBzaG91bGQgbm90IGRvIGFueXRoaW5nIHRoYXQgY3JlYXRlcyBkYXRhIHN0cnVjdHVy
ZXMKKyAgICAgICAgdGhhdCBjYW5ub3QgYmUgUGlja2xlZCBvciBzZW50IGFjcm9zcyBwcm9jZXNz
ZXMgKGxpa2Ugb3BlbmluZworICAgICAgICBmaWxlcyBvciBzb2NrZXRzKS4gQ29tcGxleCBpbml0
aWFsaXphdGlvbiBzaG91bGQgYmUgZG9uZSBhdCB0aGUKKyAgICAgICAgc3RhcnQgb2YgdGhlIHJ1
bigpIGNhbGwuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGJyb2tlcl9jb25uZWN0aW9u
IC0gaGFuZGxlIHRvIHRoZSBCcm9rZXJDb25uZWN0aW9uIG9iamVjdCBjcmVhdGluZworICAgICAg
ICAgICAgICAgIHRoZSB3b3JrZXIgYW5kIHRoYXQgY2FuIGJlIHVzZWQgZm9yIG1lc3NhZ2luZy4K
KyAgICAgICAgICAgIHdvcmtlcl9udW1iZXIgLSBpZGVudGlmaWVyIGZvciB0aGlzIHBhcnRpY3Vs
YXIgd29ya2VyCisgICAgICAgICAgICBvcHRpb25zIC0gY29tbWFuZC1saW5lIGFyZ3VtZW50IG9i
amVjdCBmcm9tIG9wdHBhcnNlIiIiCisKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
cgorCisgICAgZGVmIHJ1bihzZWxmLCBwb3J0KToKKyAgICAgICAgIiIiQ2FsbGJhY2sgZm9yIHRo
ZSB3b3JrZXIgdG8gc3RhcnQgZXhlY3V0aW5nLiBUeXBpY2FsbHkgZG9lcyBhbnkKKyAgICAgICAg
cmVtYWluaW5nIGluaXRpYWxpemF0aW9uIGFuZCB0aGVuIGNhbGxzIGJyb2tlcl9jb25uZWN0aW9u
LnJ1bl9tZXNzYWdlX2xvb3AoKS4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
cgorCisgICAgZGVmIGNhbmNlbChzZWxmKToKKyAgICAgICAgIiIiQ2FsbGVkIHdoZW4gcG9zc2li
bGUgdG8gaW5kaWNhdGUgdG8gdGhlIHdvcmtlciB0byBzdG9wIHByb2Nlc3NpbmcKKyAgICAgICAg
bWVzc2FnZXMgYW5kIHNodXQgZG93bi4gTm90ZSB0aGF0IHdvcmtlcnMgbWF5IGJlIHN0b3BwZWQg
d2l0aG91dCB0aGlzCisgICAgICAgIG1ldGhvZCBiZWluZyBjYWxsZWQsIHNvIGNsaWVudHMgc2hv
dWxkIG5vdCByZWx5IHNvbGVseSBvbiB0aGlzLiIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yCisKKworY2xhc3MgX0Fic3RyYWN0TWFuYWdlcihvYmplY3QpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBicm9rZXIsIHBvcnQsIG9wdGlvbnMsIG1hbmFnZXIsIHdvcmtlcl9jbGFz
cyk6CisgICAgICAgICIiIkJhc2UgaW5pdGlhbGl6YXRpb24gZm9yIGFsbCBNYW5hZ2VyIG9iamVj
dHMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGJyb2tlcjogaGFuZGxlIHRvIHRoZSBt
ZXNzYWdlX2Jyb2tlcjIgb2JqZWN0CisgICAgICAgICAgICBwb3J0OiBoYW5kbGUgdG8gcG9ydC1z
cGVjaWZpYyBmdW5jdGlvbmFsaXR5CisgICAgICAgICAgICBvcHRpb25zOiBjb21tYW5kIGxpbmUg
b3B0aW9ucyBvYmplY3QKKyAgICAgICAgICAgIG1hbmFnZXI6IE1hbmFnZXIgY2FsbGJhY2sgb2Jq
ZWN0ICh0aGUgY2FsbGVyKQorICAgICAgICAgICAgd29ya2VyX2NsYXNzOiBjbGFzcyBvYmplY3Qg
dG8gdXNlIHRvIGNyZWF0ZSB3b3JrZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fYnJv
a2VyID0gYnJva2VyCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNl
bGYuX21hbmFnZXIgPSBtYW5hZ2VyCisgICAgICAgIHNlbGYuX3dvcmtlcl9jbGFzcyA9IHdvcmtl
cl9jbGFzcworCisKK2NsYXNzIF9JbmxpbmVNYW5hZ2VyKF9BYnN0cmFjdE1hbmFnZXIpOgorICAg
IHBhc3MKKworCitjbGFzcyBfVGhyZWFkZWRNYW5hZ2VyKF9BYnN0cmFjdE1hbmFnZXIpOgorICAg
IHBhc3MKKworCitjbGFzcyBfTXVsdGlQcm9jZXNzTWFuYWdlcihfQWJzdHJhY3RNYW5hZ2VyKToK
KyAgICBwYXNzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dv
cmtlcl9icm9rZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA5Zjc4ZjU3ODQ3OWVhNzQ1OTAy
MTFkOTI3NWIwZjViNjFkNGQzMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91
bml0dGVzdC5weQpAQCAtMCwwICsxLDkwIEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9w
dHBhcnNlCitpbXBvcnQgUXVldWUKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCit0cnk6
CisgICAgX211bHRpcHJvY2Vzc2luZ19pc19hdmFpbGFibGUgPSBUcnVlCisgICAgZnJvbSBtdWx0
aXByb2Nlc3NpbmcgaW1wb3J0IFF1ZXVlIGFzIF9NdWx0aXByb2Nlc3NpbmdfUXVldWUKK2V4Y2Vw
dCBJbXBvcnRFcnJvcjoKKyAgICBfbXVsdGlwcm9jZXNzaW5nX2lzX2F2YWlsYWJsZSA9IEZhbHNl
CisgICAgX011bHRpcHJvY2Vzc2luZ19RdWV1ZSA9IFF1ZXVlLlF1ZXVlCisKKworZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRjYXB0dXJlCisKK2Zyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlv
dXRfcGFja2FnZSBpbXBvcnQgbWFuYWdlcl93b3JrZXJfYnJva2VyCitmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgbWVzc2FnZV9icm9rZXIyCisKKworY2xh
c3MgVGVzdFdvcmtlcihvYmplY3QpOgorICAgIHBhc3MKKworCitkZWYgZ2V0X29wdGlvbnMod29y
a2VyX21vZGVsKToKKyAgICBvcHRpb25fbGlzdCA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5ydW50
aW1lX29wdGlvbnMoKQorICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcihvcHRpb25f
bGlzdD1vcHRpb25fbGlzdCkKKyAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3Mo
YXJncz1bJy0td29ya2VyLW1vZGVsJywgd29ya2VyX21vZGVsXSkKKyAgICByZXR1cm4gb3B0aW9u
cworCisKK2RlZiBtYWtlX2Jyb2tlcihtYW5hZ2VyLCB3b3JrZXJfbW9kZWwpOgorICAgIG9wdGlv
bnMgPSBnZXRfb3B0aW9ucyh3b3JrZXJfbW9kZWwpCisgICAgcmV0dXJuIG1hbmFnZXJfd29ya2Vy
X2Jyb2tlci5nZXQocG9ydC5nZXQoInRlc3QiKSwgb3B0aW9ucywgbWFuYWdlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0V29ya2VyKQorCisKK2NsYXNzIEZ1bmN0
aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2dldF9faW5saW5lKHNl
bGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUobWFrZV9icm9rZXIoc2VsZiwgJ2lubGluZScp
IGlzIG5vdCBOb25lKQorCisgICAgZGVmIHRlc3RfZ2V0X190aHJlYWRzKHNlbGYpOgorICAgICAg
ICBzZWxmLmFzc2VydFRydWUobWFrZV9icm9rZXIoc2VsZiwgJ3RocmVhZHMnKSBpcyBub3QgTm9u
ZSkKKworICAgIGRlZiB0ZXN0X2dldF9fcHJvY2Vzc2VzKHNlbGYpOgorICAgICAgICBpZiBfbXVs
dGlwcm9jZXNzaW5nX2lzX2F2YWlsYWJsZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSht
YWtlX2Jyb2tlcihzZWxmLCAncHJvY2Vzc2VzJykgaXMgbm90IE5vbmUpCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYWtlX2Jyb2tlciwg
c2VsZiwgJ3Byb2Nlc3NlcycpCisKKyAgICBkZWYgdGVzdF9nZXRfX3Vua25vd24oc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1ha2VfYnJva2VyLCBzZWxmLCAn
dW5rbm93bicpCisKKyAgICBkZWYgdGVzdF9ydW50aW1lX29wdGlvbnMoc2VsZik6CisgICAgICAg
IG9wdGlvbl9saXN0ID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLnJ1bnRpbWVfb3B0aW9ucygpCisg
ICAgICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcihvcHRpb25fbGlzdD1vcHRpb25f
bGlzdCkKKyAgICAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKFtdKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUob3B0aW9ucykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIyLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9i
cm9rZXIyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzNDI1ZTIzODE1ZjYzZjc5N2MxYjlmMmZhZGU2NzIyZGM0
OTQ0M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlcjIucHkKQEAgLTAsMCArMSwxOTcgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24u
CisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisiIiJNb2R1bGUgZm9yIGhhbmRsaW5nIG1lc3NhZ2luZyBmb3Ig
cnVuLXdlYmtpdC10ZXN0cy4KKworVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhIHNpbXBsZSBtZXNz
YWdlIGJyb2tlciBhYnN0cmFjdGlvbiB0aGF0IHdpbGwgYmUKK3VzZWQgdG8gY29vcmRpbmF0ZSBt
ZXNzYWdlcyBiZXR3ZWVuIHRoZSBtYWluIHJ1bi13ZWJraXQtdGVzdHMgdGhyZWFkCisoYWthIFRl
c3RSdW5uZXIpIGFuZCB0aGUgaW5kaXZpZHVhbCB3b3JrZXIgdGhyZWFkcyAocHJldmlvdXNseSBr
bm93biBhcworZHVtcF9yZW5kZXJfdHJlZV90aHJlYWRzKS4KKworVGhlIGJyb2tlciBzaW1wbHkg
ZGlzdHJpYnV0ZXMgbWVzc2FnZXMgb250byB0b3BpY3MgKG5hbWVkIHF1ZXVlcyk7IHRoZSBhY3R1
YWwKK3F1ZXVlcyB0aGVtc2VsdmVzIGFyZSBwcm92aWRlZCBieSB0aGUgY2FsbGVyLCBhcyB0aGUg
cXVldWUncyBpbXBsZW1lbnRhdGlvbgorcmVxdWlyZW1lbnRzIHZhcmllcyB2YXJ5IGRlcGVuZGlu
ZyBvbiB0aGUgZGVzaXJlZCBjb25jdXJyZW5jeSBtb2RlbAorKG5vbmUvdGhyZWFkcy9wcm9jZXNz
ZXMpLgorCitJbiBvcmRlciBmb3Igc2hhcmVkLW5vdGhpbmcgbWVzc2FnaW5nIGJldHdlZW4gcHJv
Y2Vzc2luZyB0byBiZSBwb3NzaWJsZSwKK01lc3NhZ2VzIG11c3QgYmUgcGlja2xhYmxlLgorCitU
aGUgbW9kdWxlIGRlZmluZXMgb25lIGludGVyZmFjZSBhbmQgdHdvIGNsYXNzZXMuIENhbGxlcnMg
b2YgdGhpcyBwYWNrYWdlCittdXN0IGltcGxlbWVudCB0aGUgQnJva2VyQ2xpZW50IGludGVyZmFj
ZSwgYW5kIG1vc3QgY2FsbGVycyB3aWxsIGNyZWF0ZQorQnJva2VyQ29ubmVjdGlvbnMgYXMgd2Vs
bCBhcyBCcm9rZXJzLgorCitUaGUgY2xhc3NlcyByZWxhdGUgdG8gZWFjaCBvdGhlciBhczoKKwor
ICAgIEJyb2tlckNsaWVudCAgIC0tLS0tLT4gICAgQnJva2VyQ29ubmVjdGlvbgorICAgICAgICAg
ICAgICAgICAgICAgICA8ICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICBcICAg
ICAgICAgIHYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnJva2VyCisKKyhUaGUg
QnJva2VyQ2xpZW50IG5ldmVyIGNhbGxzIGJyb2tlciBkaXJlY3RseSBhZnRlciBpdCBpcyBjcmVh
dGVkLCBvbmx5CitCcm9rZXJDb25uZWN0aW9uLiAgQnJva2VyQ29ubmVjdGlvbiBwYXNzZXMgYSBy
ZWZlcmVuY2UgdG8gQnJva2VyQ2xpZW50IHRvCitCcm9rZXIsIGFuZCBCcm9rZXIgb25seSBpbnZv
a2VzIHRoYXQgcmVmZXJlbmNlLCBuZXZlciB0YWxraW5nIGRpcmVjdGx5IHRvCitCcm9rZXJDb25u
ZWN0aW9uKS4KKworIiIiCisKK2ltcG9ydCBjUGlja2xlCitpbXBvcnQgbG9nZ2luZworaW1wb3J0
IFF1ZXVlCitpbXBvcnQgdGltZQorCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKKworCitjbGFzcyBCcm9rZXJDbGllbnQob2JqZWN0KToKKyAgICAiIiJBYnN0cmFjdCBiYXNl
IGNsYXNzIC8gaW50ZXJmYWNlIHRoYXQgYWxsIG1lc3NhZ2UgYnJva2VyIGNsaWVudHMgbXVzdAor
ICAgIGltcGxlbWVudC4gSW4gYWRkaXRpb24gdG8gdGhlIG1ldGhvZHMgYmVsb3csIGJ5IGNvbnZl
bnRpb24gY2xpZW50cworICAgIGltcGxlbWVudCByb3V0aW5lcyBvZiB0aGUgc2lnbmF0dXJlIHR5
cGUKKworICAgICAgICBoYW5kbGVfTUVTU0FHRV9OQU1FKHNlbGYsIHNyYywgLi4uKToKKworICAg
IHdoZXJlIE1FU1NBR0VfTkFNRSBtYXRjaGVzIHRoZSBzdHJpbmcgcGFzc2VkIHRvIHBvc3RfbWVz
c2FnZSgpLCBhbmQKKyAgICBzcmMgaW5kaWNhdGVzIHRoZSBuYW1lIG9mIHRoZSBzZW5kZXIuIElm
IHRoZSBtZXNzYWdlIGNvbnRhaW5zIHZhbHVlcyBpbgorICAgIHRoZSBtZXNzYWdlIGJvZHksIHRo
b3NlIHdpbGwgYmUgcHJvdmlkZWQgYXMgb3B0cGFyYW1zLiIiIgorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsICpvcHRhcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVk
RXJyb3IKKworICAgIGRlZiBpc19kb25lKHNlbGYpOgorICAgICAgICAiIiJDYWxsZWQgZnJvbSBp
bnNpZGUgcnVuX21lc3NhZ2VfbG9vcCgpIHRvIGluZGljYXRlIHdoZXRoZXIgdG8gZXhpdC4iIiIK
KyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZGVmIG5hbWUoc2VsZik6
CisgICAgICAgICIiIlJldHVybiBhIG5hbWUgdGhhdCBpZGVudGlmaWVzIHRoZSBjbGllbnQuIiIi
CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworCitjbGFzcyBCcm9rZXIob2Jq
ZWN0KToKKyAgICAiIiJCcm9rZXJzIHByb3ZpZGUgdGhlIGJhc2ljIG1vZGVsIG9mIGEgc2V0IG9m
IHRvcGljcy4gQ2xpZW50cyBjYW4gcG9zdCBhCisgICAgbWVzc2FnZSB0byBhbnkgdG9waWMgdXNp
bmcgcG9zdF9tZXNzYWdlKCksIGFuZCBjYW4gcHJvY2VzcyBtZXNzYWdlcyBvbiBvbmUKKyAgICB0
b3BpYyBhdCBhIHRpbWUgdXNpbmcgcnVuX21lc3NhZ2VfbG9vcCgpLiIiIgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIG9wdGlvbnMsIHF1ZXVlX21ha2VyKToKKyAgICAgICAgIiIiQXJnczoKKyAg
ICAgICAgICAgIG9wdGlvbnM6IGEgcnVudGltZSBvcHRpb24gY2xhc3MgZnJvbSBvcHRwYXJzZQor
ICAgICAgICAgICAgcXVldWVfbWFrZXI6IGEgZmFjdG9yeSBtZXRob2QgdGhhdCByZXR1cm5zIG9i
amVjdHMgaW1wbGVtZW50aW5nIGEKKyAgICAgICAgICAgICAgICBRdWV1ZSBpbnRlcmZhY2UgKHB1
dCgpL2dldCgpKS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25z
CisgICAgICAgIHNlbGYuX3F1ZXVlX21ha2VyID0gcXVldWVfbWFrZXIKKyAgICAgICAgc2VsZi5f
dG9waWNzID0ge30KKworICAgIGRlZiBhZGRfdG9waWMoc2VsZiwgdG9waWNfbmFtZSk6CisgICAg
ICAgIGlmIHRvcGljX25hbWUgbm90IGluIHNlbGYuX3RvcGljczoKKyAgICAgICAgICAgIHNlbGYu
X3RvcGljc1t0b3BpY19uYW1lXSA9IHNlbGYuX3F1ZXVlX21ha2VyKCkKKworICAgIGRlZiBfZ2V0
X3F1ZXVlX2Zvcl90b3BpYyhzZWxmLCB0b3BpY19uYW1lKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X3RvcGljc1t0b3BpY19uYW1lXQorCisgICAgZGVmIHBvc3RfbWVzc2FnZShzZWxmLCBjbGllbnQs
IHRvcGljX25hbWUsIG1lc3NhZ2VfbmFtZSwgKm1lc3NhZ2VfYXJncyk6CisgICAgICAgICIiIlBv
c3QgYSBtZXNzYWdlIHRvIHRoZSBhcHByb3ByaWF0ZSB0b3BpYyBuYW1lLgorCisgICAgICAgIE1l
c3NhZ2VzIGhhdmUgYSBuYW1lIGFuZCBhIHR1cGxlIG9mIG9wdGlvbmFsIGFyZ3VtZW50cy4gQm90
aCBtdXN0IGJlIHBpY2tsYWJsZS4iIiIKKyAgICAgICAgbWVzc2FnZSA9IF9NZXNzYWdlKGNsaWVu
dC5uYW1lKCksIHRvcGljX25hbWUsIG1lc3NhZ2VfbmFtZSwgbWVzc2FnZV9hcmdzKQorICAgICAg
ICBxdWV1ZSA9IHNlbGYuX2dldF9xdWV1ZV9mb3JfdG9waWModG9waWNfbmFtZSkKKyAgICAgICAg
cXVldWUucHV0KF9NZXNzYWdlLmR1bXBzKG1lc3NhZ2UpKQorCisgICAgZGVmIHJ1bl9tZXNzYWdl
X2xvb3Aoc2VsZiwgdG9waWNfbmFtZSwgY2xpZW50LCBkZWxheV9zZWNzPU5vbmUpOgorICAgICAg
ICAiIiJMb29wIHByb2Nlc3NpbmcgbWVzc2FnZXMgdW50aWwgY2xpZW50LmlzX2RvbmUoKSBvciBk
ZWxheSBwYXNzZXMuCisKKyAgICAgICAgVG8gcnVuIGluZGVmaW5pdGVseSwgc2V0IGRlbGF5X3Nl
Y3MgdG8gTm9uZS4iIiIKKyAgICAgICAgYXNzZXJ0IGRlbGF5X3NlY3MgaXMgTm9uZSBvciBkZWxh
eV9zZWNzID4gMAorICAgICAgICBzZWxmLl9ydW5fbG9vcCh0b3BpY19uYW1lLCBjbGllbnQsIGJs
b2NrPVRydWUsIGRlbGF5X3NlY3M9ZGVsYXlfc2VjcykKKworICAgIGRlZiBydW5fYWxsX3BlbmRp
bmcoc2VsZiwgdG9waWNfbmFtZSwgY2xpZW50KToKKyAgICAgICAgIiIiUHJvY2VzcyBtZXNzYWdl
cyB1bnRpbCBjbGllbnQuaXNfZG9uZSgpIG9yIGNhbGxlciB3b3VsZCBibG9jay4iIiIKKyAgICAg
ICAgc2VsZi5fcnVuX2xvb3AodG9waWNfbmFtZSwgY2xpZW50LCBibG9jaz1GYWxzZSwgZGVsYXlf
c2Vjcz1Ob25lKQorCisgICAgZGVmIF9ydW5fbG9vcChzZWxmLCB0b3BpY19uYW1lLCBjbGllbnQs
IGJsb2NrLCBkZWxheV9zZWNzKToKKyAgICAgICAgcXVldWUgPSBzZWxmLl9maW5kX3RvcGljKHRv
cGljX25hbWUpCisgICAgICAgIHdoaWxlIG5vdCBjbGllbnQuaXNfZG9uZSgpOgorICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgIHMgPSBxdWV1ZS5nZXQoYmxvY2ssIGRlbGF5X3NlY3Mp
CisgICAgICAgICAgICBleGNlcHQgUXVldWUuRW1wdHk6CisgICAgICAgICAgICAgICAgcmV0dXJu
CisgICAgICAgICAgICBtc2cgPSBfTWVzc2FnZS5sb2FkcyhzKQorICAgICAgICAgICAgc2VsZi5f
ZGlzcGF0Y2hfbWVzc2FnZShtc2csIGNsaWVudCkKKworICAgIGRlZiBfZGlzcGF0Y2hfbWVzc2Fn
ZShzZWxmLCBtZXNzYWdlLCBjbGllbnQpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihjbGllbnQs
ICdoYW5kbGVfJyArIG1lc3NhZ2UubmFtZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KAorICAgICAgICAgICAgICAgIiVzOiByZWNlaXZlZCBtZXNzYWdlICclcycgaXQgY291bGRuJ3Qg
aGFuZGxlIiAlCisgICAgICAgICAgICAgICAoY2xpZW50Lm5hbWUoKSwgbWVzc2FnZS5uYW1lKSkK
KyAgICAgICAgb3B0YXJncyA9IG1lc3NhZ2UuYm9keQorICAgICAgICBtZXNzYWdlX2hhbmRsZXIg
PSBnZXRhdHRyKGNsaWVudCwgJ2hhbmRsZV8nICsgbWVzc2FnZS5uYW1lKQorICAgICAgICBtZXNz
YWdlX2hhbmRsZXIobWVzc2FnZS5zcmMsICpvcHRhcmdzKQorCisKK2NsYXNzIF9NZXNzYWdlKG9i
amVjdCk6CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBsb2FkcyhzdHIpOgorICAgICAgICBv
YmogPSBjUGlja2xlLmxvYWRzKHN0cikKKyAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2Uob2JqLCBf
TWVzc2FnZSkpCisgICAgICAgIHJldHVybiBvYmoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBz
cmMsIHRvcGljX25hbWUsIG1lc3NhZ2VfbmFtZSwgbWVzc2FnZV9hcmdzKToKKyAgICAgICAgc2Vs
Zi5zcmMgPSBzcmMKKyAgICAgICAgc2VsZi50b3BpY19uYW1lID0gdG9waWNfbmFtZQorICAgICAg
ICBzZWxmLm5hbWUgPSBtZXNzYWdlX25hbWUKKyAgICAgICAgc2VsZi5hcmdzID0gbWVzc2FnZV9h
cmdzCisKKyAgICBkZWYgZHVtcHMoc2VsZik6CisgICAgICAgIHJldHVybiBjUGlja2xlLmR1bXBz
KHNlbGYpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAoIl9NZXNz
YWdlKGZyb209JyVzJywgdG9waWNfbmFtZT0nJXMnLCBtZXNzYWdlX25hbWU9JyVzJykiICUKKyAg
ICAgICAgICAgICAgICAoc2VsZi5zcmMsIHNlbGYudG9waWNfbmFtZSwgc2VsZi5uYW1lKSkKKwor
CitjbGFzcyBCcm9rZXJDb25uZWN0aW9uKG9iamVjdCk6CisgICAgIiIiQnJva2VyQ29ubmVjdGlv
biBwcm92aWRlcyBhIGNvbm5lY3Rpb24tb3JpZW50ZWQgZmFjYWRlIG9uIHRvcCBvZiBhCisgICAg
QnJva2VyLCBzbyB0aGF0IGNhbGxlcnMgZG9uJ3QgaGF2ZSB0byByZXBlYXRlZGx5IHBhc3MgdGhl
IHNhbWUgdG9waWMKKyAgICBuYW1lcyBvdmVyIGFuZCBvdmVyLiIiIgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGJyb2tlciwgY2xpZW50LCBydW5fdG9waWMsIHBvc3RfdG9waWMpOgorICAgICAg
ICAiIiJDcmVhdGUgYSBCcm9rZXJDb25uZWN0aW9uIG9uIHRvcCBvZiBhIEJyb2tlci4gTm90ZSB0
aGF0IHRoZSBCcm9rZXIKKyAgICAgICAgaXMgcGFzc2VkIGluIHJhdGhlciB0aGFuIGNyZWF0ZWQg
c28gdGhhdCBhIHNpbmdsZSBCcm9rZXIgY2FuIGJlIHVzZWQKKyAgICAgICAgYnkgbXVsdGlwbGUg
QnJva2VyQ29ubmVjdGlvbnMuIiIiCisgICAgICAgIHNlbGYuX2Jyb2tlciA9IGJyb2tlcgorICAg
ICAgICBzZWxmLl9jbGllbnQgPSBjbGllbnQKKyAgICAgICAgc2VsZi5fcG9zdF90b3BpYyA9IHBv
c3RfdG9waWMKKyAgICAgICAgc2VsZi5fcnVuX3RvcGljID0gcnVuX3RvcGljCisgICAgICAgIGJy
b2tlci5hZGRfdG9waWMocnVuX3RvcGljKQorICAgICAgICBicm9rZXIuYWRkX3RvcGljKHBvc3Rf
dG9waWMpCisKKyAgICBkZWYgcnVuX21lc3NhZ2VfbG9vcChzZWxmLCBkZWxheV9zZWNzPU5vbmUp
OgorICAgICAgICBzZWxmLl9icm9rZXIucnVuX21lc3NhZ2VfbG9vcChzZWxmLl9ydW5fdG9waWMs
IHNlbGYuX2NsaWVudCwgZGVsYXlfc2VjcykKKworICAgIGRlZiBwb3N0X21lc3NhZ2Uoc2VsZiwg
bWVzc2FnZV9uYW1lLCAqbWVzc2FnZV9hcmdzKToKKyAgICAgICAgc2VsZi5fYnJva2VyLnBvc3Rf
bWVzc2FnZShzZWxmLl9jbGllbnQsIHNlbGYuX3Bvc3RfdG9waWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZV9uYW1lLCAqbWVzc2FnZV9hcmdzKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVz
c2FnZV9icm9rZXIyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBlMGE4OGQ5MWRkMDhkYTM3Y2U3ODI4Njc3ZDU0NWU0ZDI1YWMzNDcKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9tZXNzYWdlX2Jyb2tlcjJfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw4MyBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5s
YXlvdXRfcGFja2FnZSBpbXBvcnQgbWVzc2FnZV9icm9rZXIyCisKKyMgVGhpcyBmaWxlIGV4aXN0
cyB0byB0ZXN0IHJvdXRpbmVzIHRoYXQgYXJlbid0IG5lY2Vzc2FyaWx5IGNvdmVyZWQgZWxzZXdo
ZXJlOworIyBtb3N0IG9mIHRoZSB0ZXN0aW5nIG9mIG1lc3NhZ2VfYnJva2VyMiB3aWxsIGJlIGNv
dmVyZWQgdW5kZXIgdGhlIHRlc3RzIGluCisjIHRoZSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIgbW9k
dWxlLgorCisKK2NsYXNzIE1lc3NhZ2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYg
dGVzdF9fbm9fYm9keShzZWxmKToKKyAgICAgICAgbXNnID0gbWVzc2FnZV9icm9rZXIyLl9NZXNz
YWdlKCdzcmMnLCAndG9waWNfbmFtZScsICdtZXNzYWdlX25hbWUnLCBOb25lKQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUocmVwcihtc2cpKQorICAgICAgICBzID0gbXNnLmR1bXBzKCkKKyAgICAg
ICAgbmV3X21zZyA9IG1lc3NhZ2VfYnJva2VyMi5fTWVzc2FnZS5sb2FkcyhzKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG5ld19tc2cubmFtZSwgJ21lc3NhZ2VfbmFtZScpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobmV3X21zZy5hcmdzLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG5ld19tc2cudG9waWNfbmFtZSwgJ3RvcGljX25hbWUnKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG5ld19tc2cuc3JjLCAnc3JjJykKKworICAgIGRlZiB0ZXN0X19ib2R5KHNlbGYpOgor
ICAgICAgICBtc2cgPSBtZXNzYWdlX2Jyb2tlcjIuX01lc3NhZ2UoJ3NyYycsICd0b3BpY19uYW1l
JywgJ21lc3NhZ2VfbmFtZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgnYm9keScsIDApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihtc2cpKQorICAgICAg
ICBzID0gbXNnLmR1bXBzKCkKKyAgICAgICAgbmV3X21zZyA9IG1lc3NhZ2VfYnJva2VyMi5fTWVz
c2FnZS5sb2FkcyhzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cubmFtZSwgJ21l
c3NhZ2VfbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5hcmdzLCAoJ2Jv
ZHknLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLnRvcGljX25hbWUsICd0
b3BpY19uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLnNyYywgJ3NyYycp
CisKKworY2xhc3MgSW50ZXJmYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUaGVz
ZSB0ZXN0cyBtb3N0bHkgZXhpc3QgdG8gcGFjaWZ5IGNvdmVyYWdlLgorCisgICAgIyBGSVhNRTog
VGhlcmUgbXVzdCBiZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyBhbmQgYWxzbyB2ZXJpZnkKKyAg
ICAjIHRoYXQgY2xhc3NlcyBkbyBpbXBsZW1lbnQgZXZlcnkgYWJzdHJhY3QgbWV0aG9kIGluIGFu
IGludGVyZmFjZS4KKworICAgIGRlZiB0ZXN0X2Jyb2tlcmNsaWVudF9pc19hYnN0cmFjdChzZWxm
KToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgY2FuJ3QgY3JlYXRlIGFuIGluc3RhbmNlIGRpcmVj
dGx5LgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtZXNz
YWdlX2Jyb2tlcjIuQnJva2VyQ2xpZW50KQorCisgICAgICAgIGNsYXNzIFRlc3RDbGllbnQobWVz
c2FnZV9icm9rZXIyLkJyb2tlckNsaWVudCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2Vs
Zik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgVGVzdCB0aGF0IGFsbCB0aGUg
YmFzZSBjbGFzcyBtZXRob2RzIGFyZSBhYnN0cmFjdCBhbmQgaGF2ZSB0aGUKKyAgICAgICAgIyBz
aWduYXR1cmUgd2UgZXhwZWN0LgorICAgICAgICBvYmogPSBUZXN0Q2xpZW50KCkKKyAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgb2JqLmlzX2RvbmUpCisgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5uYW1lKQorCisK
K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81586</attachid>
            <date>2011-02-07 22:22:05 -0800</date>
            <delta_ts>2011-02-08 15:57:43 -0800</delta_ts>
            <desc>fix diff baseline</desc>
            <filename>bug-53477-20110207222204.patch</filename>
            <type>text/plain</type>
            <size>11703</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNjZi
Zjg5M2Q5NjQyYTEzNjEyZjlkYmVlNjA1MzdjY2NkOGRkMzQyLi5lZTczNDgyOTg3NWNjMDg1MTU4
MmM5ZGM2MDk1MTE2OTk3NDM2YWJiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDEtMzEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IGFkZCBzdHVicyBmb3IgdGhl
IE1hbmFnZXIgb2JqZWN0cyB0aGF0CisgICAgICAgIHdpbGwgYWJzdHJhY3QgdGhlIGNvbmN1cnJl
bmN5IGltcGxlbWVudGF0aW9uIChpbmxpbmUgLyB0aHJlYWRzIC8KKyAgICAgICAgcHJvY2Vzc2Vz
KS4gVGhlc2UgY2xhc3NlcyBkbyBub3RoaW5nIHlldCBhbmQgYXJlIG5vdCB3aXJlZCB1cCB0bwor
ICAgICAgICBhbnl0aGluZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTM0NzcKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weTogQWRkZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
cl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKwogMjAxMS0wMS0yNSAgRGlyayBQ
cmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jy
b2tlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zYTEzOTJmMjViNmFkZjVhMTRjZDBjODJhY2I4N2RmOTk1YjI3
ZGU2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CkBAIC0wLDAgKzEsMTY5
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiTW9kdWxlIGZvciBoYW5kbGluZyBtZXNzYWdlcyBh
bmQgY29uY3VycmVuY3kgZm9yIHJ1bi13ZWJraXQtdGVzdHMuCisKK1RoaXMgbW9kdWxlIGJ1aWxk
cyBvbiB0aGUgZnVuY3Rpb25hbGl0eSBvZiBtZXNzYWdlX2Jyb2tlcjIgdG8gcHJvdmlkZQorYSBz
aW1wbGUgbWVzc2FnZSBicm9rZXIgZm9yIGEgbWFuYWdlciBzZW5kaW5nIG1lc3NhZ2VzIHRvIChh
bmQgZ2V0dGluZworcmVwbGllcyBmcm9tKSBhIHBvb2wgb2Ygd29ya2Vycy4gSW4gYWRkaXRpb24g
aXQgcHJvdmlkZXMgYSBjaG9pY2Ugb2YKK2NvbmN1cnJlbmN5IG1vZGVscyBmb3IgY2FsbGVycyB0
byBjaG9vc2UgZnJvbSAoc2luZ2xlLXRocmVhZGVkIGlubGluZQorbW9kZWwsIHRocmVhZHMsIG9y
IHByb2Nlc3NlcykuCisKK0ZJWE1FOiBBdCB0aGUgbW9tZW50LCB0aGlzIG1vZHVsZSBpcyBqdXN0
IGEgYnVuY2ggb2Ygc3R1YnMsIGJ1dCBldmVudHVhbGx5CitpdCB3aWxsIHByb3ZpZGUgdGhyZWUg
c2V0cyBvZiBtYW5hZ2VyIGNsYXNzZXMgYW5kIHdvcmtlciBjbGFzc2VzIGZvcgordGhlIHRocmVl
IGNvbmN1cnJlbmN5IG1vZGVscy4gVGhlIGdldCgpIGZhY3RvcnkgbWV0aG9kIHNlbGVjdHMgYmV0
d2VlbgordGhlbS4KKyIiIgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9wdHBhcnNlCitpbXBv
cnQgUXVldWUKK2ltcG9ydCB0aHJlYWRpbmcKKworIworIyBIYW5kbGUgUHl0aG9uIDwgMi42IHdo
ZXJlIG11bHRpcHJvY2Vzc2luZyBpc24ndCBhdmFpbGFibGUuCisjCit0cnk6CisgICAgaW1wb3J0
IG11bHRpcHJvY2Vzc2luZworICAgIF9NdWx0aXByb2Nlc3NpbmdfUHJvY2VzcyA9IG11bHRpcHJv
Y2Vzc2luZy5Qcm9jZXNzCisgICAgX011bHRpcHJvY2Vzc2luZ19RdWV1ZSA9IG11bHRpcHJvY2Vz
c2luZy5RdWV1ZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIG11bHRpcHJvY2Vzc2luZyA9IE5v
bmUKKyAgICBfTXVsdGlwcm9jZXNzaW5nX1Byb2Nlc3MgPSB0aHJlYWRpbmcuVGhyZWFkCisgICAg
X011bHRpcHJvY2Vzc2luZ19RdWV1ZSA9IFF1ZXVlLlF1ZXVlCisKKworZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1lc3NhZ2VfYnJva2VyMgorCisKK19s
b2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworIworIyBUb3BpYyBuYW1lcyBmb3Ig
TWFuYWdlciA8LT4gV29ya2VyIG1lc3NhZ2luZworIworTUFOQUdFUl9UT1BJQyA9ICdtYW5hZ2Vy
cycKK0FOWV9XT1JLRVJfVE9QSUMgPSAnd29ya2VycycKKworCitkZWYgcnVudGltZV9vcHRpb25z
KCk6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBvcHRwYXJzZS5PcHRpb24gb2JqZWN0cyBmb3Ig
YW55IHJ1bnRpbWUgdmFsdWVzIHVzZWQKKyAgICBieSB0aGlzIG1vZHVsZS4iIiIKKyAgICBvcHRp
b25zID0gWworICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS13b3JrZXItbW9kZWwiLCBh
Y3Rpb249InN0b3JlIiwKKyAgICAgICAgICAgIGhlbHA9KCJjb250cm9scyB3b3JrZXIgbW9kZWwu
IFZhbGlkIHZhbHVlcyBhcmUgIgorICAgICAgICAgICAgIidpbmxpbmUnLCAndGhyZWFkcycsIGFu
ZCAncHJvY2Vzc2VzJy4iKSksCisgICAgXQorICAgIHJldHVybiBvcHRpb25zCisKKworZGVmIGdl
dChwb3J0LCBvcHRpb25zLCBtYW5hZ2VyLCB3b3JrZXJfY2xhc3MpOgorICAgICIiIlJldHVybiBh
IGNvbm5lY3Rpb24gdG8gYSBtYW5hZ2VyL3dvcmtlciBtZXNzYWdlX2Jyb2tlcgorCisgICAgQXJn
czoKKyAgICAgICAgcG9ydCAtIGhhbmRsZSB0byBsYXlvdXRfdGVzdHMvcG9ydCBvYmplY3QgZm9y
IHBvcnQtc3BlY2lmaWMgc3R1ZmYKKyAgICAgICAgb3B0aW9ucyAtIG9wdHBhcnNlIGFyZ3VtZW50
IGZvciBjb21tYW5kLWxpbmUgb3B0aW9ucworICAgICAgICBtYW5hZ2VyIC0gb2JqZWN0IHRvIGRp
c3BhdGNoIHJlcGxpZXMgdG8KKyAgICAgICAgd29ya2VyX2NsYXNzIC0gdHlwZSBvZiB3b3JrZXJz
IHRvIGNyZWF0ZS4gVGhpcyBjbGFzcyBtdXN0IGltcGxlbWVudAorICAgICAgICAgICAgdGhlIG1l
dGhvZHMgaW4gQWJzdHJhY3RXb3JrZXIuCisgICAgUmV0dXJuczoKKyAgICAgICAgQSBoYW5kbGUg
dG8gYW4gb2JqZWN0IHRoYXQgd2lsbCB0YWxrIHRvIGEgbWVzc2FnZSBicm9rZXIgY29uZmlndXJl
ZAorICAgICAgICBmb3IgdGhlIG5vcm1hbCBtYW5hZ2VyL3dvcmtlciBjb21tdW5pY2F0aW9uLgor
ICAgICIiIgorICAgIHdvcmtlcl9tb2RlbCA9IG9wdGlvbnMud29ya2VyX21vZGVsCisgICAgaWYg
d29ya2VyX21vZGVsID09ICdpbmxpbmUnOgorICAgICAgICBxdWV1ZV9jbGFzcyA9IFF1ZXVlLlF1
ZXVlCisgICAgICAgIG1hbmFnZXJfY2xhc3MgPSBfSW5saW5lTWFuYWdlcgorICAgIGVsaWYgd29y
a2VyX21vZGVsID09ICd0aHJlYWRzJzoKKyAgICAgICAgcXVldWVfY2xhc3MgPSBRdWV1ZS5RdWV1
ZQorICAgICAgICBtYW5hZ2VyX2NsYXNzID0gX1RocmVhZGVkTWFuYWdlcgorICAgIGVsaWYgd29y
a2VyX21vZGVsID09ICdwcm9jZXNzZXMnIGFuZCBtdWx0aXByb2Nlc3Npbmc6CisgICAgICAgIHF1
ZXVlX2NsYXNzID0gX011bHRpcHJvY2Vzc2luZ19RdWV1ZQorICAgICAgICBtYW5hZ2VyX2NsYXNz
ID0gX011bHRpUHJvY2Vzc01hbmFnZXIKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJ1bnN1cHBvcnRlZCB2YWx1ZSBmb3IgLS13b3JrZXItbW9kZWw6ICVzIiAlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgd29ya2VyX21vZGVsKQorCisgICAgYnJva2VyID0gbWVzc2FnZV9i
cm9rZXIyLkJyb2tlcihvcHRpb25zLCBxdWV1ZV9jbGFzcykKKyAgICByZXR1cm4gbWFuYWdlcl9j
bGFzcyhicm9rZXIsIHBvcnQsIG9wdGlvbnMsIG1hbmFnZXIsIHdvcmtlcl9jbGFzcykKKworCitj
bGFzcyBBYnN0cmFjdFdvcmtlcihtZXNzYWdlX2Jyb2tlcjIuQnJva2VyQ2xpZW50KToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgYnJva2VyX2Nvbm5lY3Rpb24sIHdvcmtlcl9udW1iZXIsIG9wdGlv
bnMsICoqa3dhcmdzKToKKyAgICAgICAgIiIiVGhlIGNvbnN0cnVjdG9yIHNob3VsZCBiZSB1c2Vk
IHRvIGRvIGFueSBzaW1wbGUgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgbmVjZXNzYXJ5LCBidXQg
c2hvdWxkIG5vdCBkbyBhbnl0aGluZyB0aGF0IGNyZWF0ZXMgZGF0YSBzdHJ1Y3R1cmVzCisgICAg
ICAgIHRoYXQgY2Fubm90IGJlIFBpY2tsZWQgb3Igc2VudCBhY3Jvc3MgcHJvY2Vzc2VzIChsaWtl
IG9wZW5pbmcKKyAgICAgICAgZmlsZXMgb3Igc29ja2V0cykuIENvbXBsZXggaW5pdGlhbGl6YXRp
b24gc2hvdWxkIGJlIGRvbmUgYXQgdGhlCisgICAgICAgIHN0YXJ0IG9mIHRoZSBydW4oKSBjYWxs
LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBicm9rZXJfY29ubmVjdGlvbiAtIGhhbmRs
ZSB0byB0aGUgQnJva2VyQ29ubmVjdGlvbiBvYmplY3QgY3JlYXRpbmcKKyAgICAgICAgICAgICAg
ICB0aGUgd29ya2VyIGFuZCB0aGF0IGNhbiBiZSB1c2VkIGZvciBtZXNzYWdpbmcuCisgICAgICAg
ICAgICB3b3JrZXJfbnVtYmVyIC0gaWRlbnRpZmllciBmb3IgdGhpcyBwYXJ0aWN1bGFyIHdvcmtl
cgorICAgICAgICAgICAgb3B0aW9ucyAtIGNvbW1hbmQtbGluZSBhcmd1bWVudCBvYmplY3QgZnJv
bSBvcHRwYXJzZSIiIgorCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAg
IGRlZiBydW4oc2VsZiwgcG9ydCk6CisgICAgICAgICIiIkNhbGxiYWNrIGZvciB0aGUgd29ya2Vy
IHRvIHN0YXJ0IGV4ZWN1dGluZy4gVHlwaWNhbGx5IGRvZXMgYW55CisgICAgICAgIHJlbWFpbmlu
ZyBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiBjYWxscyBicm9rZXJfY29ubmVjdGlvbi5ydW5fbWVz
c2FnZV9sb29wKCkuIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAg
IGRlZiBjYW5jZWwoc2VsZik6CisgICAgICAgICIiIkNhbGxlZCB3aGVuIHBvc3NpYmxlIHRvIGlu
ZGljYXRlIHRvIHRoZSB3b3JrZXIgdG8gc3RvcCBwcm9jZXNzaW5nCisgICAgICAgIG1lc3NhZ2Vz
IGFuZCBzaHV0IGRvd24uIE5vdGUgdGhhdCB3b3JrZXJzIG1heSBiZSBzdG9wcGVkIHdpdGhvdXQg
dGhpcworICAgICAgICBtZXRob2QgYmVpbmcgY2FsbGVkLCBzbyBjbGllbnRzIHNob3VsZCBub3Qg
cmVseSBzb2xlbHkgb24gdGhpcy4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
cgorCisKK2NsYXNzIF9BYnN0cmFjdE1hbmFnZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgYnJva2VyLCBwb3J0LCBvcHRpb25zLCBtYW5hZ2VyLCB3b3JrZXJfY2xhc3MpOgorICAg
ICAgICAiIiJCYXNlIGluaXRpYWxpemF0aW9uIGZvciBhbGwgTWFuYWdlciBvYmplY3RzLgorCisg
ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBicm9rZXI6IGhhbmRsZSB0byB0aGUgbWVzc2FnZV9i
cm9rZXIyIG9iamVjdAorICAgICAgICAgICAgcG9ydDogaGFuZGxlIHRvIHBvcnQtc3BlY2lmaWMg
ZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAgb3B0aW9uczogY29tbWFuZCBsaW5lIG9wdGlvbnMg
b2JqZWN0CisgICAgICAgICAgICBtYW5hZ2VyOiBNYW5hZ2VyIGNhbGxiYWNrIG9iamVjdCAodGhl
IGNhbGxlcikKKyAgICAgICAgICAgIHdvcmtlcl9jbGFzczogY2xhc3Mgb2JqZWN0IHRvIHVzZSB0
byBjcmVhdGUgd29ya2Vycy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2Jyb2tlciA9IGJy
b2tlcgorICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAgICAgICBzZWxmLl9tYW5h
Z2VyID0gbWFuYWdlcgorICAgICAgICBzZWxmLl93b3JrZXJfY2xhc3MgPSB3b3JrZXJfY2xhc3MK
KworCitjbGFzcyBfSW5saW5lTWFuYWdlcihfQWJzdHJhY3RNYW5hZ2VyKToKKyAgICBwYXNzCisK
KworY2xhc3MgX1RocmVhZGVkTWFuYWdlcihfQWJzdHJhY3RNYW5hZ2VyKToKKyAgICBwYXNzCisK
KworY2xhc3MgX011bHRpUHJvY2Vzc01hbmFnZXIoX0Fic3RyYWN0TWFuYWdlcik6CisgICAgcGFz
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJv
a2VyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwOWY3OGY1Nzg0NzllYTc0NTkwMjExZDkyNzVi
MGY1YjYxZDRkMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3Qu
cHkKQEAgLTAsMCArMSw5MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcHRwYXJzZQor
aW1wb3J0IFF1ZXVlCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKwordHJ5OgorICAgIF9t
dWx0aXByb2Nlc3NpbmdfaXNfYXZhaWxhYmxlID0gVHJ1ZQorICAgIGZyb20gbXVsdGlwcm9jZXNz
aW5nIGltcG9ydCBRdWV1ZSBhcyBfTXVsdGlwcm9jZXNzaW5nX1F1ZXVlCitleGNlcHQgSW1wb3J0
RXJyb3I6CisgICAgX211bHRpcHJvY2Vzc2luZ19pc19hdmFpbGFibGUgPSBGYWxzZQorICAgIF9N
dWx0aXByb2Nlc3NpbmdfUXVldWUgPSBRdWV1ZS5RdWV1ZQorCisKK2Zyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0Y2FwdHVyZQorCitmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cyBpbXBvcnQgcG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2th
Z2UgaW1wb3J0IG1hbmFnZXJfd29ya2VyX2Jyb2tlcgorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1lc3NhZ2VfYnJva2VyMgorCisKK2NsYXNzIFRlc3RX
b3JrZXIob2JqZWN0KToKKyAgICBwYXNzCisKKworZGVmIGdldF9vcHRpb25zKHdvcmtlcl9tb2Rl
bCk6CisgICAgb3B0aW9uX2xpc3QgPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIucnVudGltZV9vcHRp
b25zKCkKKyAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIob3B0aW9uX2xpc3Q9b3B0
aW9uX2xpc3QpCisgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3M9Wyct
LXdvcmtlci1tb2RlbCcsIHdvcmtlcl9tb2RlbF0pCisgICAgcmV0dXJuIG9wdGlvbnMKKworCitk
ZWYgbWFrZV9icm9rZXIobWFuYWdlciwgd29ya2VyX21vZGVsKToKKyAgICBvcHRpb25zID0gZ2V0
X29wdGlvbnMod29ya2VyX21vZGVsKQorICAgIHJldHVybiBtYW5hZ2VyX3dvcmtlcl9icm9rZXIu
Z2V0KHBvcnQuZ2V0KCJ0ZXN0IiksIG9wdGlvbnMsIG1hbmFnZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGVzdFdvcmtlcikKKworCitjbGFzcyBGdW5jdGlvblRlc3Rz
KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9nZXRfX2lubGluZShzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKG1ha2VfYnJva2VyKHNlbGYsICdpbmxpbmUnKSBpcyBub3Qg
Tm9uZSkKKworICAgIGRlZiB0ZXN0X2dldF9fdGhyZWFkcyhzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKG1ha2VfYnJva2VyKHNlbGYsICd0aHJlYWRzJykgaXMgbm90IE5vbmUpCisKKyAg
ICBkZWYgdGVzdF9nZXRfX3Byb2Nlc3NlcyhzZWxmKToKKyAgICAgICAgaWYgX211bHRpcHJvY2Vz
c2luZ19pc19hdmFpbGFibGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWFrZV9icm9r
ZXIoc2VsZiwgJ3Byb2Nlc3NlcycpIGlzIG5vdCBOb25lKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWFrZV9icm9rZXIsIHNlbGYsICdw
cm9jZXNzZXMnKQorCisgICAgZGVmIHRlc3RfZ2V0X191bmtub3duKHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYWtlX2Jyb2tlciwgc2VsZiwgJ3Vua25vd24n
KQorCisgICAgZGVmIHRlc3RfcnVudGltZV9vcHRpb25zKHNlbGYpOgorICAgICAgICBvcHRpb25f
bGlzdCA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5ydW50aW1lX29wdGlvbnMoKQorICAgICAgICBw
YXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIob3B0aW9uX2xpc3Q9b3B0aW9uX2xpc3QpCisg
ICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhbXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKG9wdGlvbnMpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAg
ICB1bml0dGVzdC5tYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81710</attachid>
            <date>2011-02-08 15:57:45 -0800</date>
            <delta_ts>2011-02-08 16:04:26 -0800</delta_ts>
            <desc>update w/ review feedback from tony</desc>
            <filename>bug-53477-20110208155744.patch</filename>
            <type>text/plain</type>
            <size>11339</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNjZi
Zjg5M2Q5NjQyYTEzNjEyZjlkYmVlNjA1MzdjY2NkOGRkMzQyLi5lZTczNDgyOTg3NWNjMDg1MTU4
MmM5ZGM2MDk1MTE2OTk3NDM2YWJiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDEtMzEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IGFkZCBzdHVicyBmb3IgdGhl
IE1hbmFnZXIgb2JqZWN0cyB0aGF0CisgICAgICAgIHdpbGwgYWJzdHJhY3QgdGhlIGNvbmN1cnJl
bmN5IGltcGxlbWVudGF0aW9uIChpbmxpbmUgLyB0aHJlYWRzIC8KKyAgICAgICAgcHJvY2Vzc2Vz
KS4gVGhlc2UgY2xhc3NlcyBkbyBub3RoaW5nIHlldCBhbmQgYXJlIG5vdCB3aXJlZCB1cCB0bwor
ICAgICAgICBhbnl0aGluZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTM0NzcKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weTogQWRkZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
cl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKwogMjAxMS0wMS0yNSAgRGlyayBQ
cmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jy
b2tlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MDUyNjc3NzlhZjFhMDM0MjM0NmRlNTg2ODgwNWYwMTM0ZTIz
NmE3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CkBAIC0wLDAgKzEsMTY1
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiTW9kdWxlIGZvciBoYW5kbGluZyBtZXNzYWdlcyBh
bmQgY29uY3VycmVuY3kgZm9yIHJ1bi13ZWJraXQtdGVzdHMuCisKK1RoaXMgbW9kdWxlIGJ1aWxk
cyBvbiB0aGUgZnVuY3Rpb25hbGl0eSBvZiBtZXNzYWdlX2Jyb2tlcjIgdG8gcHJvdmlkZQorYSBz
aW1wbGUgbWVzc2FnZSBicm9rZXIgZm9yIGEgbWFuYWdlciBzZW5kaW5nIG1lc3NhZ2VzIHRvIChh
bmQgZ2V0dGluZworcmVwbGllcyBmcm9tKSBhIHBvb2wgb2Ygd29ya2Vycy4gSW4gYWRkaXRpb24g
aXQgcHJvdmlkZXMgYSBjaG9pY2Ugb2YKK2NvbmN1cnJlbmN5IG1vZGVscyBmb3IgY2FsbGVycyB0
byBjaG9vc2UgZnJvbSAoc2luZ2xlLXRocmVhZGVkIGlubGluZQorbW9kZWwsIHRocmVhZHMsIG9y
IHByb2Nlc3NlcykuCisKK0ZJWE1FOiBBdCB0aGUgbW9tZW50LCB0aGlzIG1vZHVsZSBpcyBqdXN0
IGEgYnVuY2ggb2Ygc3R1YnMsIGJ1dCBldmVudHVhbGx5CitpdCB3aWxsIHByb3ZpZGUgdGhyZWUg
c2V0cyBvZiBtYW5hZ2VyIGNsYXNzZXMgYW5kIHdvcmtlciBjbGFzc2VzIGZvcgordGhlIHRocmVl
IGNvbmN1cnJlbmN5IG1vZGVscy4gVGhlIGdldCgpIGZhY3RvcnkgbWV0aG9kIHNlbGVjdHMgYmV0
d2VlbgordGhlbS4KKyIiIgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9wdHBhcnNlCitpbXBv
cnQgUXVldWUKK2ltcG9ydCB0aHJlYWRpbmcKKworIworIyBIYW5kbGUgUHl0aG9uIDwgMi42IHdo
ZXJlIG11bHRpcHJvY2Vzc2luZyBpc24ndCBhdmFpbGFibGUuCisjCit0cnk6CisgICAgaW1wb3J0
IG11bHRpcHJvY2Vzc2luZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIG11bHRpcHJvY2Vzc2lu
ZyA9IE5vbmUKKworCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBp
bXBvcnQgbWVzc2FnZV9icm9rZXIyCisKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQorCisjCisjIFRvcGljIG5hbWVzIGZvciBNYW5hZ2VyIDwtPiBXb3JrZXIgbWVzc2FnaW5n
CisjCitNQU5BR0VSX1RPUElDID0gJ21hbmFnZXJzJworQU5ZX1dPUktFUl9UT1BJQyA9ICd3b3Jr
ZXJzJworCisKK2RlZiBydW50aW1lX29wdGlvbnMoKToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9m
IG9wdHBhcnNlLk9wdGlvbiBvYmplY3RzIGZvciBhbnkgcnVudGltZSB2YWx1ZXMgdXNlZAorICAg
IGJ5IHRoaXMgbW9kdWxlLiIiIgorICAgIG9wdGlvbnMgPSBbCisgICAgICAgIG9wdHBhcnNlLm1h
a2Vfb3B0aW9uKCItLXdvcmtlci1tb2RlbCIsIGFjdGlvbj0ic3RvcmUiLAorICAgICAgICAgICAg
aGVscD0oImNvbnRyb2xzIHdvcmtlciBtb2RlbC4gVmFsaWQgdmFsdWVzIGFyZSAiCisgICAgICAg
ICAgICAiJ2lubGluZScsICd0aHJlYWRzJywgYW5kICdwcm9jZXNzZXMnLiIpKSwKKyAgICBdCisg
ICAgcmV0dXJuIG9wdGlvbnMKKworCitkZWYgZ2V0KHBvcnQsIG9wdGlvbnMsIG1hbmFnZXIsIHdv
cmtlcl9jbGFzcyk6CisgICAgIiIiUmV0dXJuIGEgY29ubmVjdGlvbiB0byBhIG1hbmFnZXIvd29y
a2VyIG1lc3NhZ2VfYnJva2VyCisKKyAgICBBcmdzOgorICAgICAgICBwb3J0IC0gaGFuZGxlIHRv
IGxheW91dF90ZXN0cy9wb3J0IG9iamVjdCBmb3IgcG9ydC1zcGVjaWZpYyBzdHVmZgorICAgICAg
ICBvcHRpb25zIC0gb3B0cGFyc2UgYXJndW1lbnQgZm9yIGNvbW1hbmQtbGluZSBvcHRpb25zCisg
ICAgICAgIG1hbmFnZXIgLSBvYmplY3QgdG8gZGlzcGF0Y2ggcmVwbGllcyB0bworICAgICAgICB3
b3JrZXJfY2xhc3MgLSB0eXBlIG9mIHdvcmtlcnMgdG8gY3JlYXRlLiBUaGlzIGNsYXNzIG11c3Qg
aW1wbGVtZW50CisgICAgICAgICAgICB0aGUgbWV0aG9kcyBpbiBBYnN0cmFjdFdvcmtlci4KKyAg
ICBSZXR1cm5zOgorICAgICAgICBBIGhhbmRsZSB0byBhbiBvYmplY3QgdGhhdCB3aWxsIHRhbGsg
dG8gYSBtZXNzYWdlIGJyb2tlciBjb25maWd1cmVkCisgICAgICAgIGZvciB0aGUgbm9ybWFsIG1h
bmFnZXIvd29ya2VyIGNvbW11bmljYXRpb24uCisgICAgIiIiCisgICAgd29ya2VyX21vZGVsID0g
b3B0aW9ucy53b3JrZXJfbW9kZWwKKyAgICBpZiB3b3JrZXJfbW9kZWwgPT0gJ2lubGluZSc6Cisg
ICAgICAgIHF1ZXVlX2NsYXNzID0gUXVldWUuUXVldWUKKyAgICAgICAgbWFuYWdlcl9jbGFzcyA9
IF9JbmxpbmVNYW5hZ2VyCisgICAgZWxpZiB3b3JrZXJfbW9kZWwgPT0gJ3RocmVhZHMnOgorICAg
ICAgICBxdWV1ZV9jbGFzcyA9IFF1ZXVlLlF1ZXVlCisgICAgICAgIG1hbmFnZXJfY2xhc3MgPSBf
VGhyZWFkZWRNYW5hZ2VyCisgICAgZWxpZiB3b3JrZXJfbW9kZWwgPT0gJ3Byb2Nlc3NlcycgYW5k
IG11bHRpcHJvY2Vzc2luZzoKKyAgICAgICAgcXVldWVfY2xhc3MgPSBtdWx0aXByb2Nlc3Npbmcu
UXVldWUKKyAgICAgICAgbWFuYWdlcl9jbGFzcyA9IF9NdWx0aVByb2Nlc3NNYW5hZ2VyCisgICAg
ZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5zdXBwb3J0ZWQgdmFsdWUgZm9yIC0t
d29ya2VyLW1vZGVsOiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlcl9tb2Rl
bCkKKworICAgIGJyb2tlciA9IG1lc3NhZ2VfYnJva2VyMi5Ccm9rZXIob3B0aW9ucywgcXVldWVf
Y2xhc3MpCisgICAgcmV0dXJuIG1hbmFnZXJfY2xhc3MoYnJva2VyLCBwb3J0LCBvcHRpb25zLCBt
YW5hZ2VyLCB3b3JrZXJfY2xhc3MpCisKKworY2xhc3MgQWJzdHJhY3RXb3JrZXIobWVzc2FnZV9i
cm9rZXIyLkJyb2tlckNsaWVudCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlcl9jb25u
ZWN0aW9uLCB3b3JrZXJfbnVtYmVyLCBvcHRpb25zLCAqKmt3YXJncyk6CisgICAgICAgICIiIlRo
ZSBjb25zdHJ1Y3RvciBzaG91bGQgYmUgdXNlZCB0byBkbyBhbnkgc2ltcGxlIGluaXRpYWxpemF0
aW9uCisgICAgICAgIG5lY2Vzc2FyeSwgYnV0IHNob3VsZCBub3QgZG8gYW55dGhpbmcgdGhhdCBj
cmVhdGVzIGRhdGEgc3RydWN0dXJlcworICAgICAgICB0aGF0IGNhbm5vdCBiZSBQaWNrbGVkIG9y
IHNlbnQgYWNyb3NzIHByb2Nlc3NlcyAobGlrZSBvcGVuaW5nCisgICAgICAgIGZpbGVzIG9yIHNv
Y2tldHMpLiBDb21wbGV4IGluaXRpYWxpemF0aW9uIHNob3VsZCBiZSBkb25lIGF0IHRoZQorICAg
ICAgICBzdGFydCBvZiB0aGUgcnVuKCkgY2FsbC4KKworICAgICAgICBBcmdzOgorICAgICAgICAg
ICAgYnJva2VyX2Nvbm5lY3Rpb24gLSBoYW5kbGUgdG8gdGhlIEJyb2tlckNvbm5lY3Rpb24gb2Jq
ZWN0IGNyZWF0aW5nCisgICAgICAgICAgICAgICAgdGhlIHdvcmtlciBhbmQgdGhhdCBjYW4gYmUg
dXNlZCBmb3IgbWVzc2FnaW5nLgorICAgICAgICAgICAgd29ya2VyX251bWJlciAtIGlkZW50aWZp
ZXIgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrZXIKKyAgICAgICAgICAgIG9wdGlvbnMgLSBjb21t
YW5kLWxpbmUgYXJndW1lbnQgb2JqZWN0IGZyb20gb3B0cGFyc2UiIiIKKworICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgcnVuKHNlbGYsIHBvcnQpOgorICAgICAg
ICAiIiJDYWxsYmFjayBmb3IgdGhlIHdvcmtlciB0byBzdGFydCBleGVjdXRpbmcuIFR5cGljYWxs
eSBkb2VzIGFueQorICAgICAgICByZW1haW5pbmcgaW5pdGlhbGl6YXRpb24gYW5kIHRoZW4gY2Fs
bHMgYnJva2VyX2Nvbm5lY3Rpb24ucnVuX21lc3NhZ2VfbG9vcCgpLiIiIgorICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgY2FuY2VsKHNlbGYpOgorICAgICAgICAi
IiJDYWxsZWQgd2hlbiBwb3NzaWJsZSB0byBpbmRpY2F0ZSB0byB0aGUgd29ya2VyIHRvIHN0b3Ag
cHJvY2Vzc2luZworICAgICAgICBtZXNzYWdlcyBhbmQgc2h1dCBkb3duLiBOb3RlIHRoYXQgd29y
a2VycyBtYXkgYmUgc3RvcHBlZCB3aXRob3V0IHRoaXMKKyAgICAgICAgbWV0aG9kIGJlaW5nIGNh
bGxlZCwgc28gY2xpZW50cyBzaG91bGQgbm90IHJlbHkgc29sZWx5IG9uIHRoaXMuIiIiCisgICAg
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworCitjbGFzcyBfQWJzdHJhY3RNYW5hZ2Vy
KG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlciwgcG9ydCwgb3B0aW9ucywg
bWFuYWdlciwgd29ya2VyX2NsYXNzKToKKyAgICAgICAgIiIiQmFzZSBpbml0aWFsaXphdGlvbiBm
b3IgYWxsIE1hbmFnZXIgb2JqZWN0cy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgYnJv
a2VyOiBoYW5kbGUgdG8gdGhlIG1lc3NhZ2VfYnJva2VyMiBvYmplY3QKKyAgICAgICAgICAgIHBv
cnQ6IGhhbmRsZSB0byBwb3J0LXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgICAgIG9w
dGlvbnM6IGNvbW1hbmQgbGluZSBvcHRpb25zIG9iamVjdAorICAgICAgICAgICAgbWFuYWdlcjog
TWFuYWdlciBjYWxsYmFjayBvYmplY3QgKHRoZSBjYWxsZXIpCisgICAgICAgICAgICB3b3JrZXJf
Y2xhc3M6IGNsYXNzIG9iamVjdCB0byB1c2UgdG8gY3JlYXRlIHdvcmtlcnMuCisgICAgICAgICIi
IgorICAgICAgICBzZWxmLl9icm9rZXIgPSBicm9rZXIKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9
IG9wdGlvbnMKKyAgICAgICAgc2VsZi5fbWFuYWdlciA9IG1hbmFnZXIKKyAgICAgICAgc2VsZi5f
d29ya2VyX2NsYXNzID0gd29ya2VyX2NsYXNzCisKKworY2xhc3MgX0lubGluZU1hbmFnZXIoX0Fi
c3RyYWN0TWFuYWdlcik6CisgICAgcGFzcworCisKK2NsYXNzIF9UaHJlYWRlZE1hbmFnZXIoX0Fi
c3RyYWN0TWFuYWdlcik6CisgICAgcGFzcworCisKK2NsYXNzIF9NdWx0aVByb2Nlc3NNYW5hZ2Vy
KF9BYnN0cmFjdE1hbmFnZXIpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tl
cl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YTMwYmRkNDVmYjQxZjk5YWU5NDNhYjRjZWMwNzNjYzg5MjAyNWZhCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFu
YWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsODcgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAor
Cit0cnk6CisgICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZworZXhjZXB0IEltcG9ydEVycm9yOgor
ICAgIG11bHRpcHJvY2Vzc2luZyA9IE5vbmUKKworCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IG91dHB1dGNhcHR1cmUKKworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1w
b3J0IHBvcnQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9y
dCBtYW5hZ2VyX3dvcmtlcl9icm9rZXIKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91
dF9wYWNrYWdlIGltcG9ydCBtZXNzYWdlX2Jyb2tlcjIKKworCitjbGFzcyBUZXN0V29ya2VyKG9i
amVjdCk6CisgICAgcGFzcworCisKK2RlZiBnZXRfb3B0aW9ucyh3b3JrZXJfbW9kZWwpOgorICAg
IG9wdGlvbl9saXN0ID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLnJ1bnRpbWVfb3B0aW9ucygpCisg
ICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKG9wdGlvbl9saXN0PW9wdGlvbl9saXN0
KQorICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzPVsnLS13b3JrZXIt
bW9kZWwnLCB3b3JrZXJfbW9kZWxdKQorICAgIHJldHVybiBvcHRpb25zCisKKworZGVmIG1ha2Vf
YnJva2VyKG1hbmFnZXIsIHdvcmtlcl9tb2RlbCk6CisgICAgb3B0aW9ucyA9IGdldF9vcHRpb25z
KHdvcmtlcl9tb2RlbCkKKyAgICByZXR1cm4gbWFuYWdlcl93b3JrZXJfYnJva2VyLmdldChwb3J0
LmdldCgidGVzdCIpLCBvcHRpb25zLCBtYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRlc3RXb3JrZXIpCisKKworY2xhc3MgRnVuY3Rpb25UZXN0cyh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZ2V0X19pbmxpbmUoc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShtYWtlX2Jyb2tlcihzZWxmLCAnaW5saW5lJykgaXMgbm90IE5vbmUpCisK
KyAgICBkZWYgdGVzdF9nZXRfX3RocmVhZHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShtYWtlX2Jyb2tlcihzZWxmLCAndGhyZWFkcycpIGlzIG5vdCBOb25lKQorCisgICAgZGVmIHRl
c3RfZ2V0X19wcm9jZXNzZXMoc2VsZik6CisgICAgICAgIGlmIG11bHRpcHJvY2Vzc2luZzoKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYWtlX2Jyb2tlcihzZWxmLCAncHJvY2Vzc2VzJykg
aXMgbm90IE5vbmUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhWYWx1ZUVycm9yLCBtYWtlX2Jyb2tlciwgc2VsZiwgJ3Byb2Nlc3NlcycpCisKKyAgICBkZWYg
dGVzdF9nZXRfX3Vua25vd24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIG1ha2VfYnJva2VyLCBzZWxmLCAndW5rbm93bicpCisKKyAgICBkZWYgdGVzdF9ydW50
aW1lX29wdGlvbnMoc2VsZik6CisgICAgICAgIG9wdGlvbl9saXN0ID0gbWFuYWdlcl93b3JrZXJf
YnJva2VyLnJ1bnRpbWVfb3B0aW9ucygpCisgICAgICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlv
blBhcnNlcihvcHRpb25fbGlzdD1vcHRpb25fbGlzdCkKKyAgICAgICAgb3B0aW9ucywgYXJncyA9
IHBhcnNlci5wYXJzZV9hcmdzKFtdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3B0aW9ucykK
KworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>
<flag name="review"
          id="73320"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>