<?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>95649</bug_id>
          
          <creation_ts>2012-09-01 14:41:04 -0700</creation_ts>
          <short_desc>Web Inspector: CodeGeneratorInspector.py: support asynchronous command implementation</short_desc>
          <delta_ts>2012-09-05 09:52:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Peter Rybin">prybin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aandrey</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>710288</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-09-01 14:41:04 -0700</bug_when>
    <thetext>The generated InspectorBackendDispatcher interfaces should allow asynchronous implementations. Currently the interfaces require that the method must provide command response on return (i.e. synchronously). This could be excessive: some operations imply long work time and the protocol framework allows late response alright.

There should be a way to specify that the particular command should allow asynchronous implementation and the generated interface should provide a callback object instead of output parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710289</commentid>
    <comment_count>1</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-09-01 15:03:09 -0700</bug_when>
    <thetext>New implementation allows &quot;asynch&quot;: &lt;boolean&gt; property in command declaration JSON.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710290</commentid>
    <comment_count>2</comment_count>
      <attachid>161834</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-09-01 15:10:31 -0700</bug_when>
    <thetext>Created attachment 161834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710292</commentid>
    <comment_count>3</comment_count>
      <attachid>161834</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-01 15:41:36 -0700</bug_when>
    <thetext>Comment on attachment 161834
Patch

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

New failing tests:
http/tests/inspector/appcache/appcache-iframe-manifests.html
http/tests/inspector/injected-script-for-origin.html
http/tests/inspector/extensions-network-redirect.html
http/tests/inspector/change-iframe-src.html
http/tests/inspector/modify-cross-domain-rule.html
http/tests/inspector/resource-har-conversion.html
http/tests/inspector/console-resource-errors.html
http/tests/inspector/appcache/appcache-manifest-with-non-existing-file.html
http/tests/inspector/extensions-headers.html
http/tests/inspector-enabled/injected-script-discard.html
http/tests/inspector/console-cross-origin-iframe-logging.html
http/tests/inspector-enabled/contentSecurityPolicy-blocks-setTimeout.html
http/tests/inspector/extensions-useragent.html
http/tests/inspector/console-cd-completions.html
http/tests/inspector/compiler-script-mapping.html
http/tests/inspector-enabled/dom-storage-open.html
http/tests/inspector/compiler-source-mapping-debug.html
http/tests/inspector/web-socket-frame-error.html
http/tests/inspector/console-xhr-logging.html
http/tests/inspector/console-xhr-logging-async.html
http/tests/inspector/console-cd.html
http/tests/inspector/resource-har-headers.html
http/tests/inspector/network-preflight-options.html
http/tests/inspector/inspect-iframe-from-different-domain.html
http/tests/inspector-enabled/console-log-before-frame-navigation.html
http/tests/inspector-enabled/contentSecurityPolicy-blocks-setInterval.html
http/tests/inspector/resource-parameters.html
http/tests/inspector-enabled/database-open.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710859</commentid>
    <comment_count>4</comment_count>
      <attachid>161834</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-04 00:29:59 -0700</bug_when>
    <thetext>Comment on attachment 161834
Patch

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

Please fix the failing tests and attach an example diff of the generated code.

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1871
&gt; +        void sendFailure(ErrorString);

const ErrorString&amp;

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1874
&gt; +        virtual ~CallbackBase();

style: destructor should go right after the constructor

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1876
&gt; +        void sendIfActive(PassRefPtr&lt;InspectorObject&gt; partialMessage, ErrorString invocationError);

const ErrorString&amp; also partialMessage can be just InspectorObject*

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1953
&gt; +    void sendResponse(long callId, PassRefPtr&lt;InspectorObject&gt; result, ErrorString invocationError);

|result| type should be InspectorObject* instead of PassRefPtr&lt;InspectorObject&gt;.

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:2203
&gt; +    sendIfActive(PassRefPtr&lt;InspectorObject&gt;(), error);

sendIfActive(0, error)

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:2208
&gt; +    return !m_alreadySent &amp;&amp; m_backendImpl-&gt;isActive();

In theory we may end up sending response for a long-running command to a different frontend. Consider the following sequence: FE1 attaches and sends request1, then FE1 is detached and FE2 is attached, now reponse for the request1 is sent.

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:2903
&gt; +                                       None, decl_parameter_list,

style nit: the line should be aligned by ( above.

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:2949
&gt; +                                                                     setter_argument)

nit: weir alignment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711180</commentid>
    <comment_count>5</comment_count>
      <attachid>162051</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-09-04 09:36:06 -0700</bug_when>
    <thetext>Created attachment 162051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711184</commentid>
    <comment_count>6</comment_count>
      <attachid>162054</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-09-04 09:41:46 -0700</bug_when>
    <thetext>Created attachment 162054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711224</commentid>
    <comment_count>7</comment_count>
      <attachid>162058</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-09-04 10:49:05 -0700</bug_when>
    <thetext>Created attachment 162058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711238</commentid>
    <comment_count>8</comment_count>
      <attachid>162062</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-09-04 11:01:00 -0700</bug_when>
    <thetext>Created attachment 162062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711244</commentid>
    <comment_count>9</comment_count>
      <attachid>162064</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-09-04 11:02:43 -0700</bug_when>
    <thetext>Created attachment 162064
Diff for sample</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711253</commentid>
    <comment_count>10</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-09-04 11:11:24 -0700</bug_when>
    <thetext>&gt; Please fix the failing tests and attach an example diff of the generated code.

Done and done.

&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1871
&gt; &gt; +        void sendFailure(ErrorString);
&gt; const ErrorString&amp;
Done

&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1874
&gt; &gt; +        virtual ~CallbackBase();
&gt; style: destructor should go right after the constructor
Done

&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1876
&gt; &gt; +        void sendIfActive(PassRefPtr&lt;InspectorObject&gt; partialMessage, ErrorString invocationError);
&gt; const ErrorString&amp; also partialMessage can be just InspectorObject*
Done. As to pointer, the farther API requires RefPtr style, thus making it RefPtr here.

&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1953
&gt; &gt; +    void sendResponse(long callId, PassRefPtr&lt;InspectorObject&gt; result, ErrorString invocationError);
&gt; |result| type should be InspectorObject* instead of PassRefPtr&lt;InspectorObject&gt;.
The farther API requires RefPtr style, thus making it RefPtr here.

&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:2203
&gt; &gt; +    sendIfActive(PassRefPtr&lt;InspectorObject&gt;(), error);
&gt; sendIfActive(0, error)
Done

&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:2208
&gt; &gt; +    return !m_alreadySent &amp;&amp; m_backendImpl-&gt;isActive();
&gt; In theory we may end up sending response for a long-running command to a different frontend. Consider the following sequence: FE1 attaches and sends request1, then FE1 is detached and FE2 is attached, now reponse for the request1 is sent.

I believe the instance of InspectorBackendDispatcher (AKA backendImpl) is never reused in the next sessions. After FE1 is detached, isActive returns false, so the late response will be ignored and dropped and FE2 will never see it.

&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:2903
&gt; &gt; +                                       None, decl_parameter_list,
&gt; style nit: the line should be aligned by ( above.
Done

&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:2949
setter_argument)
&gt; nit: weir alignment
Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711826</commentid>
    <comment_count>11</comment_count>
      <attachid>162062</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-09-05 01:13:16 -0700</bug_when>
    <thetext>Comment on attachment 162062
Patch

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

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1873
&gt; +        bool isActive();

bool isActive() const;

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1956
&gt; +    bool isActive() { return m_inspectorFrontendChannel; }

bool isActive() const {...}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711929</commentid>
    <comment_count>12</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-09-05 04:13:27 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1873
&gt; &gt; +        bool isActive();
&gt; bool isActive() const;
&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1956
&gt; &gt; +    bool isActive() { return m_inspectorFrontendChannel; }
&gt; bool isActive() const {...}

Can you justify this with a positive reason? I don&apos;t see a lot of const/mutable semantics for InspectorBackendDispatcher class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711955</commentid>
    <comment_count>13</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-05 04:54:49 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Please fix the failing tests and attach an example diff of the generated code.
&gt; &gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1953
&gt; &gt; &gt; +    void sendResponse(long callId, PassRefPtr&lt;InspectorObject&gt; result, ErrorString invocationError);
&gt; &gt; |result| type should be InspectorObject* instead of PassRefPtr&lt;InspectorObject&gt;.
&gt; The farther API requires RefPtr style, thus making it RefPtr here.
&gt; 
I would argue that they should be changed as well:)

&gt; &gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:2208
&gt; &gt; &gt; +    return !m_alreadySent &amp;&amp; m_backendImpl-&gt;isActive();
&gt; &gt; In theory we may end up sending response for a long-running command to a different frontend. Consider the following sequence: FE1 attaches and sends request1, then FE1 is detached and FE2 is attached, now reponse for the request1 is sent.
&gt; 
You are right. I missed that we create new instance of the dispatcher when FE connects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711957</commentid>
    <comment_count>14</comment_count>
      <attachid>162062</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-05 04:57:58 -0700</bug_when>
    <thetext>Comment on attachment 162062
Patch

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

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1955
&gt; +    void sendResponse(long callId, PassRefPtr&lt;InspectorObject&gt; result, ErrorString invocationError);

const ErrorString&amp;

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:2058
&gt; +void InspectorBackendDispatcherImpl::sendResponse(long callId, PassRefPtr&lt;InspectorObject&gt; result, ErrorString invocationError)

const ErrorString&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711970</commentid>
    <comment_count>15</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-09-05 05:24:36 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1873
&gt; &gt; &gt; +        bool isActive();
&gt; &gt; bool isActive() const;
&gt; &gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1956
&gt; &gt; &gt; +    bool isActive() { return m_inspectorFrontendChannel; }
&gt; &gt; bool isActive() const {...}
&gt; 
&gt; Can you justify this with a positive reason? I don&apos;t see a lot of const/mutable semantics for InspectorBackendDispatcher class.

Because it&apos;s a constant getter by it&apos;s nature that will not modify the class&apos;s internal state? :) Why not say about it to the compiler and a reader of the code? In fact, IMO, more logical question would be &quot;Can you justify NOT using const here with a positive reason?&quot; :) Can you?

Anyway, I&apos;m not insisting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711994</commentid>
    <comment_count>16</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-09-05 05:58:50 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 162062 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162062&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1955
&gt; &gt; +    void sendResponse(long callId, PassRefPtr&lt;InspectorObject&gt; result, ErrorString invocationError);
&gt; const ErrorString&amp;
Done

&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:2058
&gt; &gt; +void InspectorBackendDispatcherImpl::sendResponse(long callId, PassRefPtr&lt;InspectorObject&gt; result, ErrorString invocationError)
&gt; const ErrorString&amp;
Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712000</commentid>
    <comment_count>17</comment_count>
      <attachid>162232</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-09-05 06:07:57 -0700</bug_when>
    <thetext>Created attachment 162232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712015</commentid>
    <comment_count>18</comment_count>
      <attachid>162238</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-09-05 07:00:41 -0700</bug_when>
    <thetext>Created attachment 162238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712150</commentid>
    <comment_count>19</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-05 09:44:14 -0700</bug_when>
    <thetext>Committed r127603: &lt;http://trac.webkit.org/changeset/127603&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712159</commentid>
    <comment_count>20</comment_count>
      <attachid>162238</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-05 09:52:04 -0700</bug_when>
    <thetext>Comment on attachment 162238
Patch

Clearing r? since this was landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161834</attachid>
            <date>2012-09-01 15:10:31 -0700</date>
            <delta_ts>2012-09-04 09:35:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95649-20120902021016.patch</filename>
            <type>text/plain</type>
            <size>22381</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNkZTZlMmVhMjljMGZm
MWZhMTNhMWVlYzk3ZjA4MjBlMmIyZGJkZi4uZjYxMTRmZGIyZjQzZGJjMmM5Nzk3Mjc2MTEzMzIx
OGZkM2IwYTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTAxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzdXBwb3J0IGFzeW5jaHJvbm91cyBjb21tYW5k
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTY0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEdlbmVyYXRvciBpcyBleHRlbmRlZCB0byBnZW5lcmF0ZSBjYWxsYmFjayBvYmplY3Qg
Zm9yIGVhY2ggYXN5bmNocm9ub3VzIGNvbW1hbmQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKFdyaXRlci5hcHBlbmRfbXVsdGlsaW5l
KToKKyAgICAgICAgKFdyaXRlcik6CisgICAgICAgIChXcml0ZXIuZ2V0X2luZGVudCk6CisgICAg
ICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkNsYXNzQmluZGluZy5y
ZXNvbHZlX2lubmVyLlJlc29sdmVEYXRhKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVySW1wbCk6CisgICAgICAgIChDYWxsYmFja0Jhc2UpOgorICAgICAgICAoR2VuZXJhdG9y
LnByb2Nlc3NfZXZlbnQpOgorICAgICAgICAoR2VuZXJhdG9yKToKKyAgICAgICAgKEdlbmVyYXRv
ci5FdmVudE1ldGhvZFN0cnVjdFRlbXBsYXRlKToKKyAgICAgICAgKEdlbmVyYXRvci5FdmVudE1l
dGhvZFN0cnVjdFRlbXBsYXRlLmFwcGVuZF9wcm9sb2cpOgorICAgICAgICAoR2VuZXJhdG9yLkV2
ZW50TWV0aG9kU3RydWN0VGVtcGxhdGUuYXBwZW5kX2VwaWxvZyk6CisgICAgICAgIChHZW5lcmF0
b3IucHJvY2Vzc19jb21tYW5kKToKKyAgICAgICAgKEdlbmVyYXRvci5DYWxsYmFja01ldGhvZFN0
cnVjdFRlbXBsYXRlKToKKyAgICAgICAgKEdlbmVyYXRvci5DYWxsYmFja01ldGhvZFN0cnVjdFRl
bXBsYXRlLmFwcGVuZF9wcm9sb2cpOgorICAgICAgICAoR2VuZXJhdG9yLkNhbGxiYWNrTWV0aG9k
U3RydWN0VGVtcGxhdGUuYXBwZW5kX2VwaWxvZyk6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJh
dGVfc2VuZF9tZXRob2QpOgorCiAyMDEyLTA4LTI4ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vr
b2xzYWtAZ21haWwuY29tPgogCiAgICAgICAgIENyYXNoIGluIEVkaXRpbmdTdHlsZTo6bWVyZ2VT
dHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5weQppbmRleCA4NTIyMjUzOGI0ZDNkN2U5NmZkM2NlOWUzYmQwYzkxYWYzMTk4Yzc4Li5k
ODM4OGFjMmI3NzY2OGJkNzFhYjJlNjUzMmJjZGRmOTk0MWIwYzUwIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtNzcwLDYg
Kzc3MCw5IEBAIGNsYXNzIFdyaXRlcjoKICAgICAgICAgICAgIGlmIHA6CiAgICAgICAgICAgICAg
ICAgc2VsZi5uZXdsaW5lKHApCiAKKyAgICBkZWYgZ2V0X2luZGVudChzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuaW5kZW50CisKICAgICBkZWYgZ2V0X2luZGVudGVkKHNlbGYsIGFkZGl0aW9u
YWxfaW5kZW50KToKICAgICAgICAgcmV0dXJuIFdyaXRlcihzZWxmLm91dHB1dCwgc2VsZi5pbmRl
bnQgKyBhZGRpdGlvbmFsX2luZGVudCkKIApAQCAtMTExMCw3ICsxMTEzLDcgQEAgY2xhc3MgVHlw
ZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgUmVzb2x2ZURhdGE6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbl9wcm9wZXJ0aWVzID0gbWFpbgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX3Byb3BlcnRpZXMgPSBvcHRpb25hbAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190eXBlcyA9IGFkX2hvY190eXBlX2NvbnRl
eHQuYWRfaG9jX3R5cGVfbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190
eXBlcyA9IGFkX2hvY190eXBlX2xpc3QKIAogICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnJl
c29sdmVfZGF0YV8gPSBSZXNvbHZlRGF0YQogCkBAIC0xNzgzLDEwICsxNzg2LDIwIEBAICR7cmVz
cG9uc2VDb29rfQogCiAgICAgZnJvbnRlbmRfbWV0aG9kID0gc3RyaW5nLlRlbXBsYXRlKCIiInZv
aWQgSW5zcGVjdG9yRnJvbnRlbmQ6OiRkb21haW5OYW1lOjokZXZlbnROYW1lKCRwYXJhbWV0ZXJz
KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+ICR7ZXZlbnROYW1lfU1lc3NhZ2UgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICR7ZXZlbnROYW1lfU1lc3NhZ2UtPnNldFN0
cmluZygibWV0aG9kIiwgIiRkb21haW5OYW1lLiRldmVudE5hbWUiKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Cisg
ICAganNvbk1lc3NhZ2UtPnNldFN0cmluZygibWV0aG9kIiwgIiRkb21haW5OYW1lLiRldmVudE5h
bWUiKTsKICRjb2RlICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAg
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZCgke2V2ZW50
TmFtZX1NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmlu
ZygpKTsKK30KKyIiIikKKworICAgIGNhbGxiYWNrX21ldGhvZCA9IHN0cmluZy5UZW1wbGF0ZSgK
KyIiIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjokYWdlbnROYW1lOjokY2FsbGJhY2tOYW1l
OjokY2FsbGJhY2tOYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBs
PiBiYWNrZW5kSW1wbCwgaW50IGlkKSA6IENhbGxiYWNrQmFzZShiYWNrZW5kSW1wbCwgaWQpIHt9
CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OiRhZ2VudE5hbWU6OiRjYWxsYmFj
a05hbWU6OnNlbmRTdWNjZXNzKCRwYXJhbWV0ZXJzKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyRjb2RlICAg
IHNlbmRJZkFjdGl2ZShqc29uTWVzc2FnZSwgRXJyb3JTdHJpbmcoKSk7CiB9CiAiIiIpCiAKQEAg
LTE4NDUsMTEgKzE4NTgsMjggQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJJbXBsOworCiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjogcHVibGljIFJl
ZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKTsKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogCisgICAgY2xhc3MgQ2FsbGJhY2tC
YXNlOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIENhbGxiYWNrQmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1w
bD4gYmFja2VuZEltcGwsIGludCBpZCk7CisgICAgICAgIHZvaWQgc2VuZEZhaWx1cmUoRXJyb3JT
dHJpbmcpOworICAgICAgICBib29sIGlzQWN0aXZlKCk7CisgICAgICAgIHZvaWQgZGlzYWJsZSgp
IHsgbV9hbHJlYWR5U2VudCA9IHRydWU7IH0KKyAgICAgICAgdmlydHVhbCB+Q2FsbGJhY2tCYXNl
KCk7CisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHNlbmRJZkFjdGl2ZShQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcGFydGlhbE1lc3NhZ2UsIEVycm9yU3RyaW5nIGludm9jYXRpb25F
cnJvcik7CisgICAgcHJpdmF0ZToKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVySW1wbD4gbV9iYWNrZW5kSW1wbDsKKyAgICAgICAgaW50IG1faWQ7CisgICAgICAgIGJv
b2wgbV9hbHJlYWR5U2VudDsKKyAgICB9OworCiAkYWdlbnRJbnRlcmZhY2VzCiAkdmlydHVhbFNl
dHRlcnMKIApAQCAtMTkyMCw2ICsxOTUwLDkgQEAgJGNvbnN0cnVjdG9ySW5pdAogICAgIHZpcnR1
YWwgdm9pZCByZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29t
bW9uRXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gZGF0YSkgY29uc3Q7CiAgICAgdXNpbmcgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3I7CiAKKyAgICB2b2lkIHNlbmRSZXNwb25zZShsb25n
IGNhbGxJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCwgRXJyb3JTdHJpbmcg
aW52b2NhdGlvbkVycm9yKTsKKyAgICBib29sIGlzQWN0aXZlKCkgeyByZXR1cm4gbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7IH0KKwogJHNldHRlcnMKIHByaXZhdGU6CiAkbWV0aG9kRGVjbGFy
YXRpb25zCkBAIC0yMDE3LDYgKzIwNTAsMTEgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlckltcGw6OnNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUGFzc1JlZlB0cjxJbnNwZWMKICAg
ICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnZhbGlkUGFyYW1zLCBlcnJvck1l
c3NhZ2UsIHByb3RvY29sRXJyb3JzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBzZW5k
UmVzcG9uc2UoY2FsbElkLCByZXN1bHQsIGludm9jYXRpb25FcnJvcik7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBsOjpzZW5kUmVzcG9uc2UobG9uZyBjYWxsSWQsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQsIEVycm9yU3RyaW5nIGludm9jYXRpb25F
cnJvcikKK3sKICAgICBpZiAoaW52b2NhdGlvbkVycm9yLmxlbmd0aCgpKSB7CiAgICAgICAgIHJl
cG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgU2VydmVyRXJyb3IsIGludm9jYXRpb25FcnJvcik7
CiAgICAgICAgIHJldHVybjsKQEAgLTIxNTQsNiArMjE5MiwzMCBAQCBib29sIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpnZXRDb21tYW5kTmFtZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFN0
cmluZyogcgogICAgIHJldHVybiB0cnVlOwogfQogCitJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFja0Jhc2UoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlckltcGw+IGJhY2tlbmRJbXBsLCBpbnQgaWQpCisgICAgOiBtX2JhY2tlbmRJbXBs
KGJhY2tlbmRJbXBsKSwgbV9pZChpZCksIG1fYWxyZWFkeVNlbnQoZmFsc2UpIHt9CisKK0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6On5DYWxsYmFja0Jhc2UoKSB7fQor
Cit2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRGYWls
dXJlKEVycm9yU3RyaW5nIGVycm9yKQoreworICAgIEFTU0VSVChlcnJvci5sZW5ndGgoKSk7Cisg
ICAgc2VuZElmQWN0aXZlKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PigpLCBlcnJvcik7Cit9
CisKK2Jvb2wgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6aXNBY3Rp
dmUoKQoreworICAgIHJldHVybiAhbV9hbHJlYWR5U2VudCAmJiBtX2JhY2tlbmRJbXBsLT5pc0Fj
dGl2ZSgpOworfQorCit2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jh
c2U6OnNlbmRJZkFjdGl2ZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFydGlhbE1lc3Nh
Z2UsIEVycm9yU3RyaW5nIGludm9jYXRpb25FcnJvcikKK3sKKyAgICBpZiAobV9hbHJlYWR5U2Vu
dCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fYmFja2VuZEltcGwtPnNlbmRSZXNwb25zZShtX2lk
LCBwYXJ0aWFsTWVzc2FnZSwgaW52b2NhdGlvbkVycm9yKTsKKyAgICBtX2FscmVhZHlTZW50ID0g
dHJ1ZTsKK30KKwogQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6a01ldGhvZE5hbWVzRW51bVNpemUpID09IFdURl9BUlJBWV9MRU5HVEgo
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNvbW1hbmROYW1lcyksIGNvbW1hbmRfbmFtZV9h
cnJheV9wcm9ibGVtKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpAQCAtMjcyNyw1OSArMjc4
OSwzNSBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgZGVmIHByb2Nlc3NfZXZlbnQoanNvbl9ldmVu
dCwgZG9tYWluX25hbWUsIGZyb250ZW5kX21ldGhvZF9kZWNsYXJhdGlvbl9saW5lcyk6CiAgICAg
ICAgIGV2ZW50X25hbWUgPSBqc29uX2V2ZW50WyJuYW1lIl0KIAotICAgICAgICBwYXJhbWV0ZXJf
bGlzdCA9IFtdCi0gICAgICAgIG1ldGhvZF9saW5lX2xpc3QgPSBbXQogICAgICAgICBiYWNrZW5k
X2pzX2V2ZW50X3BhcmFtX2xpc3QgPSBbXQogICAgICAgICBhZF9ob2NfdHlwZV9vdXRwdXQgPSBb
XQogICAgICAgICBmcm9udGVuZF9tZXRob2RfZGVjbGFyYXRpb25fbGluZXMuYXBwZW5kKGFkX2hv
Y190eXBlX291dHB1dCkKICAgICAgICAgYWRfaG9jX3R5cGVfd3JpdGVyID0gV3JpdGVyKGFkX2hv
Y190eXBlX291dHB1dCwgIiAgICAgICAgIikKLSAgICAgICAgaWYgInBhcmFtZXRlcnMiIGluIGpz
b25fZXZlbnQ6Ci0gICAgICAgICAgICBtZXRob2RfbGluZV9saXN0LmFwcGVuZCgiICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc09iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7XG4iKQotICAgICAgICAgICAgZm9yIGpzb25fcGFyYW1ldGVyIGluIGpzb25fZXZlbnRbInBh
cmFtZXRlcnMiXToKLSAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfbmFtZSA9IGpzb25fcGFyYW1l
dGVyWyJuYW1lIl0KIAotICAgICAgICAgICAgICAgIHBhcmFtX3R5cGVfYmluZGluZyA9IEdlbmVy
YXRvci5yZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRlX2FkX2hvYyhqc29uX3BhcmFtZXRlciwgZXZl
bnRfbmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dyaXRlciwgIiIpCi0KLSAgICAgICAg
ICAgICAgICByYXdfdHlwZSA9IHBhcmFtX3R5cGVfYmluZGluZy5yZWR1Y2VfdG9fcmF3X3R5cGUo
KQotICAgICAgICAgICAgICAgIHJhd190eXBlX2JpbmRpbmcgPSBSYXdUeXBlQmluZGluZyhyYXdf
dHlwZSkKKyAgICAgICAgZGVjbF9wYXJhbWV0ZXJfbGlzdCA9IFtdCiAKLSAgICAgICAgICAgICAg
ICBvcHRpb25hbCA9IGJvb2woanNvbl9wYXJhbWV0ZXIuZ2V0KCJvcHRpb25hbCIpKQotCi0gICAg
ICAgICAgICAgICAgc2V0dGVyX3R5cGUgPSByYXdfdHlwZS5nZXRfc2V0dGVyX25hbWUoKQorICAg
ICAgICBHZW5lcmF0b3IuZ2VuZXJhdGVfc2VuZF9tZXRob2QoanNvbl9ldmVudC5nZXQoInBhcmFt
ZXRlcnMiKSwgZXZlbnRfbmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dyaXRlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tlbmRfanNfZXZlbnRfcGFy
YW1fbGlzdCwgZGVjbF9wYXJhbWV0ZXJfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRvci5FdmVudE1ldGhvZFN0cnVjdFRlbXBsYXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yLmZyb250ZW5kX21ldGhv
ZF9saXN0LCBUZW1wbGF0ZXMuZnJvbnRlbmRfbWV0aG9kLCB7ImV2ZW50TmFtZSI6IGV2ZW50X25h
bWV9KQogCi0gICAgICAgICAgICAgICAgdHlwZV9tb2RlbCA9IHBhcmFtX3R5cGVfYmluZGluZy5n
ZXRfdHlwZV9tb2RlbCgpCi0gICAgICAgICAgICAgICAgcmF3X3R5cGVfbW9kZWwgPSByYXdfdHlw
ZV9iaW5kaW5nLmdldF90eXBlX21vZGVsKCkKLSAgICAgICAgICAgICAgICBpZiBvcHRpb25hbDoK
LSAgICAgICAgICAgICAgICAgICAgdHlwZV9tb2RlbCA9IHR5cGVfbW9kZWwuZ2V0X29wdGlvbmFs
KCkKLSAgICAgICAgICAgICAgICAgICAgcmF3X3R5cGVfbW9kZWwgPSByYXdfdHlwZV9tb2RlbC5n
ZXRfb3B0aW9uYWwoKQotCi0gICAgICAgICAgICAgICAgYW5ub3RhdGVkX3R5cGUgPSB0eXBlX21v
ZGVsLmdldF9pbnB1dF9wYXJhbV90eXBlX3RleHQoKQotICAgICAgICAgICAgICAgIG1vZGVfdHlw
ZV9iaW5kaW5nID0gcGFyYW1fdHlwZV9iaW5kaW5nCi0KLSAgICAgICAgICAgICAgICBwYXJhbWV0
ZXJfbGlzdC5hcHBlbmQoIiVzICVzIiAlIChhbm5vdGF0ZWRfdHlwZSwgcGFyYW1ldGVyX25hbWUp
KQotCi0gICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0gcmF3X3R5cGVfbW9kZWwuZ2V0
X2V2ZW50X3NldHRlcl9leHByZXNzaW9uX3BhdHRlcm4oKSAlIHBhcmFtZXRlcl9uYW1lCi0gICAg
ICAgICAgICAgICAgaWYgbW9kZV90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHByZXNz
aW9uX3BhdHRlcm4oKToKLSAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0gbW9k
ZV90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKSAlIHNl
dHRlcl9hcmd1bWVudAotCi0gICAgICAgICAgICAgICAgc2V0dGVyX2NvZGUgPSAiICAgIHBhcmFt
c09iamVjdC0+c2V0JXMoXCIlc1wiLCAlcyk7XG4iICUgKHNldHRlcl90eXBlLCBwYXJhbWV0ZXJf
bmFtZSwgc2V0dGVyX2FyZ3VtZW50KQotICAgICAgICAgICAgICAgIGlmIG9wdGlvbmFsOgotICAg
ICAgICAgICAgICAgICAgICBzZXR0ZXJfY29kZSA9ICgiICAgIGlmICglcylcbiAgICAiICUgcGFy
YW1ldGVyX25hbWUpICsgc2V0dGVyX2NvZGUKLSAgICAgICAgICAgICAgICBtZXRob2RfbGluZV9s
aXN0LmFwcGVuZChzZXR0ZXJfY29kZSkKLQotICAgICAgICAgICAgICAgIGJhY2tlbmRfanNfZXZl
bnRfcGFyYW1fbGlzdC5hcHBlbmQoIlwiJXNcIiIgJSBwYXJhbWV0ZXJfbmFtZSkKLSAgICAgICAg
ICAgIG1ldGhvZF9saW5lX2xpc3QuYXBwZW5kKCIgICAgJXNNZXNzYWdlLT5zZXRPYmplY3QoXCJw
YXJhbXNcIiwgcGFyYW1zT2JqZWN0KTtcbiIgJSBldmVudF9uYW1lKQogICAgICAgICBmcm9udGVu
ZF9tZXRob2RfZGVjbGFyYXRpb25fbGluZXMuYXBwZW5kKAotICAgICAgICAgICAgIiAgICAgICAg
dm9pZCAlcyglcyk7XG4iICUgKGV2ZW50X25hbWUsICIsICIuam9pbihwYXJhbWV0ZXJfbGlzdCkp
KQotCi0gICAgICAgIEdlbmVyYXRvci5mcm9udGVuZF9tZXRob2RfbGlzdC5hcHBlbmQoVGVtcGxh
dGVzLmZyb250ZW5kX21ldGhvZC5zdWJzdGl0dXRlKE5vbmUsCi0gICAgICAgICAgICBkb21haW5O
YW1lPWRvbWFpbl9uYW1lLCBldmVudE5hbWU9ZXZlbnRfbmFtZSwKLSAgICAgICAgICAgIHBhcmFt
ZXRlcnM9IiwgIi5qb2luKHBhcmFtZXRlcl9saXN0KSwKLSAgICAgICAgICAgIGNvZGU9IiIuam9p
bihtZXRob2RfbGluZV9saXN0KSkpCisgICAgICAgICAgICAiICAgICAgICB2b2lkICVzKCVzKTtc
biIgJSAoZXZlbnRfbmFtZSwgIiwgIi5qb2luKGRlY2xfcGFyYW1ldGVyX2xpc3QpKSkKIAogICAg
ICAgICBHZW5lcmF0b3IuYmFja2VuZF9qc19kb21haW5faW5pdGlhbGl6ZXJfbGlzdC5hcHBlbmQo
Ikluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFdmVudChcIiVzLiVzXCIsIFslc10pO1xuIiAlICgK
ICAgICAgICAgICAgIGRvbWFpbl9uYW1lLCBldmVudF9uYW1lLCAiLCAiLmpvaW4oYmFja2VuZF9q
c19ldmVudF9wYXJhbV9saXN0KSkpCiAKKyAgICBjbGFzcyBFdmVudE1ldGhvZFN0cnVjdFRlbXBs
YXRlOgorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBhcHBlbmRfcHJvbG9nKGxp
bmVfbGlzdCk6CisgICAgICAgICAgICBsaW5lX2xpc3QuYXBwZW5kKCIgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gcGFyYW1zT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTtcbiIp
CisKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgYXBwZW5kX2VwaWxvZyhsaW5l
X2xpc3QpOgorICAgICAgICAgICAgbGluZV9saXN0LmFwcGVuZCgiICAgIGpzb25NZXNzYWdlLT5z
ZXRPYmplY3QoXCJwYXJhbXNcIiwgcGFyYW1zT2JqZWN0KTtcbiIpCisKKyAgICAgICAgY29udGFp
bmVyX25hbWUgPSAicGFyYW1zT2JqZWN0IgorCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBw
cm9jZXNzX2NvbW1hbmQoanNvbl9jb21tYW5kLCBkb21haW5fbmFtZSwgYWdlbnRfZmllbGRfbmFt
ZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUpOgogICAgICAgICBqc29uX2NvbW1hbmRfbmFtZSA9IGpz
b25fY29tbWFuZFsibmFtZSJdCkBAIC0yODAwLDcgKzI4MzgsNiBAQCBjbGFzcyBHZW5lcmF0b3I6
CiAgICAgICAgIG1ldGhvZF9vdXRfY29kZSA9ICIiCiAgICAgICAgIGFnZW50X2NhbGxfcGFyYW1f
bGlzdCA9IFtdCiAgICAgICAgIHJlc3BvbnNlX2Nvb2tfbGlzdCA9IFtdCi0gICAgICAgIGJhY2tl
bmRfanNfcmVwbHlfcGFyYW1fbGlzdCA9IFtdCiAgICAgICAgIHJlcXVlc3RfbWVzc2FnZV9wYXJh
bSA9ICIiCiAgICAgICAgIGpzX3BhcmFtZXRlcnNfdGV4dCA9ICIiCiAgICAgICAgIGlmICJwYXJh
bWV0ZXJzIiBpbiBqc29uX2NvbW1hbmQ6CkBAIC0yODU1LDU4ICsyODkyLDg5IEBAIGNsYXNzIEdl
bmVyYXRvcjoKICAgICAgICAgICAgIGpzX3BhcmFtZXRlcnNfdGV4dCA9ICIsICIuam9pbihqc19w
YXJhbV9saXN0KQogCiAgICAgICAgIHJlc3BvbnNlX2Nvb2tfdGV4dCA9ICIiCi0gICAgICAgIGpz
X3JlcGx5X2xpc3QgPSAiW10iCi0gICAgICAgIGlmICJyZXR1cm5zIiBpbiBqc29uX2NvbW1hbmQ6
Ci0gICAgICAgICAgICBtZXRob2Rfb3V0X2NvZGUgKz0gIlxuIgotICAgICAgICAgICAgZm9yIGpz
b25fcmV0dXJuIGluIGpzb25fY29tbWFuZFsicmV0dXJucyJdOgorICAgICAgICBpZiBqc29uX2Nv
bW1hbmQuZ2V0KCJhc3luY2giKSA9PSBUcnVlOgorICAgICAgICAgICAgY2FsbGJhY2tfbmFtZSA9
IENhcGl0YWxpemVyLmxvd2VyX2NhbWVsX2Nhc2VfdG9fdXBwZXIoanNvbl9jb21tYW5kX25hbWUp
ICsgIkNhbGxiYWNrIgorCisgICAgICAgICAgICBjYWxsYmFja19vdXRwdXQgPSBbXQorICAgICAg
ICAgICAgY2FsbGJhY2tfd3JpdGVyID0gV3JpdGVyKGNhbGxiYWNrX291dHB1dCwgYWRfaG9jX3R5
cGVfd3JpdGVyLmdldF9pbmRlbnQoKSkKKworICAgICAgICAgICAgZGVjbF9wYXJhbWV0ZXJfbGlz
dCA9IFtdCisgICAgICAgICAgICBHZW5lcmF0b3IuZ2VuZXJhdGVfc2VuZF9tZXRob2QoanNvbl9j
b21tYW5kLmdldCgicmV0dXJucyIpLCBqc29uX2NvbW1hbmRfbmFtZSwgZG9tYWluX25hbWUsIGFk
X2hvY190eXBlX3dyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5vbmUsIGRlY2xfcGFyYW1ldGVyX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZW5lcmF0b3IuQ2FsbGJhY2tNZXRob2RTdHJ1Y3RUZW1wbGF0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX21ldGhv
ZF9pbXBsZW1lbnRhdGlvbl9saXN0LCBUZW1wbGF0ZXMuY2FsbGJhY2tfbWV0aG9kLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJjYWxsYmFja05hbWUiOiBjYWxsYmFj
a19uYW1lLCAiYWdlbnROYW1lIjogYWdlbnRfaW50ZXJmYWNlX25hbWV9KQorCisgICAgICAgICAg
ICBjYWxsYmFja193cml0ZXIubmV3bGluZSgiY2xhc3MgIiArIGNhbGxiYWNrX25hbWUgKyAiIDog
cHVibGljIENhbGxiYWNrQmFzZSB7XG4iKQorICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5l
d2xpbmUoInB1YmxpYzpcbiIpCisgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgi
ICAgICIgKyBjYWxsYmFja19uYW1lICsgIihQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVySW1wbD4sIGludCBpZCk7XG4iKQorICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5l
d2xpbmUoIiAgICB2b2lkIHNlbmRTdWNjZXNzKCIgKyAiLCAiLmpvaW4oZGVjbF9wYXJhbWV0ZXJf
bGlzdCkgKyAiKTtcbiIpCisgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgifTtc
biIpCisKKyAgICAgICAgICAgIGFkX2hvY190eXBlX291dHB1dC5hcHBlbmQoY2FsbGJhY2tfb3V0
cHV0KQorCisgICAgICAgICAgICBtZXRob2Rfb3V0X2NvZGUgKz0gIiAgICBSZWZQdHI8IiArIGFn
ZW50X2ludGVyZmFjZV9uYW1lICsgIjo6IiArIGNhbGxiYWNrX25hbWUgKyAiPiBjYWxsYmFjayA9
IGFkb3B0UmVmKG5ldyAiICsgYWdlbnRfaW50ZXJmYWNlX25hbWUgKyAiOjoiICsgY2FsbGJhY2tf
bmFtZSArICIodGhpcywgY2FsbElkKSk7XG4iCisgICAgICAgICAgICBhZ2VudF9jYWxsX3BhcmFt
X2xpc3QuYXBwZW5kKCIsIGNhbGxiYWNrIikKKyAgICAgICAgICAgIHJlc3BvbnNlX2Nvb2tfdGV4
dCArPSAiICAgICAgICBpZiAoZXJyb3IubGVuZ3RoKCkgPT0gMCkgXG4iCisgICAgICAgICAgICBy
ZXNwb25zZV9jb29rX3RleHQgKz0gIiAgICAgICAgICAgIHJldHVybjtcbiIKKyAgICAgICAgICAg
IHJlc3BvbnNlX2Nvb2tfdGV4dCArPSAiICAgICAgICBjYWxsYmFjay0+ZGlzYWJsZSgpO1xuIgor
ICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5k
KCIsIGNvbnN0IFJlZlB0cjwlcz4mIGNhbGxiYWNrIiAlIGNhbGxiYWNrX25hbWUpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBpZiAicmV0dXJucyIgaW4ganNvbl9jb21tYW5kOgorICAgICAg
ICAgICAgICAgIG1ldGhvZF9vdXRfY29kZSArPSAiXG4iCisgICAgICAgICAgICAgICAgZm9yIGpz
b25fcmV0dXJuIGluIGpzb25fY29tbWFuZFsicmV0dXJucyJdOgogCi0gICAgICAgICAgICAgICAg
anNvbl9yZXR1cm5fbmFtZSA9IGpzb25fcmV0dXJuWyJuYW1lIl0KKyAgICAgICAgICAgICAgICAg
ICAganNvbl9yZXR1cm5fbmFtZSA9IGpzb25fcmV0dXJuWyJuYW1lIl0KIAotICAgICAgICAgICAg
ICAgIG9wdGlvbmFsID0gYm9vbChqc29uX3JldHVybi5nZXQoIm9wdGlvbmFsIikpCisgICAgICAg
ICAgICAgICAgICAgIG9wdGlvbmFsID0gYm9vbChqc29uX3JldHVybi5nZXQoIm9wdGlvbmFsIikp
CiAKLSAgICAgICAgICAgICAgICByZXR1cm5fdHlwZV9iaW5kaW5nID0gR2VuZXJhdG9yLnJlc29s
dmVfdHlwZV9hbmRfZ2VuZXJhdGVfYWRfaG9jKGpzb25fcmV0dXJuLCBqc29uX2NvbW1hbmRfbmFt
ZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dyaXRlciwgYWdlbnRfaW50ZXJmYWNlX25hbWUg
KyAiOjoiKQorICAgICAgICAgICAgICAgICAgICByZXR1cm5fdHlwZV9iaW5kaW5nID0gR2VuZXJh
dG9yLnJlc29sdmVfdHlwZV9hbmRfZ2VuZXJhdGVfYWRfaG9jKGpzb25fcmV0dXJuLCBqc29uX2Nv
bW1hbmRfbmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dyaXRlciwgYWdlbnRfaW50ZXJm
YWNlX25hbWUgKyAiOjoiKQogCi0gICAgICAgICAgICAgICAgcmF3X3R5cGUgPSByZXR1cm5fdHlw
ZV9iaW5kaW5nLnJlZHVjZV90b19yYXdfdHlwZSgpCi0gICAgICAgICAgICAgICAgc2V0dGVyX3R5
cGUgPSByYXdfdHlwZS5nZXRfc2V0dGVyX25hbWUoKQotICAgICAgICAgICAgICAgIGluaXRpYWxp
emVyID0gcmF3X3R5cGUuZ2V0X2NfaW5pdGlhbGl6ZXIoKQorICAgICAgICAgICAgICAgICAgICBy
YXdfdHlwZSA9IHJldHVybl90eXBlX2JpbmRpbmcucmVkdWNlX3RvX3Jhd190eXBlKCkKKyAgICAg
ICAgICAgICAgICAgICAgc2V0dGVyX3R5cGUgPSByYXdfdHlwZS5nZXRfc2V0dGVyX25hbWUoKQor
ICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplciA9IHJhd190eXBlLmdldF9jX2luaXRpYWxp
emVyKCkKIAotICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSByZXR1cm5fdHlwZV9iaW5kaW5n
LmdldF90eXBlX21vZGVsKCkKLSAgICAgICAgICAgICAgICBpZiBvcHRpb25hbDoKLSAgICAgICAg
ICAgICAgICAgICAgdHlwZV9tb2RlbCA9IHR5cGVfbW9kZWwuZ2V0X29wdGlvbmFsKCkKKyAgICAg
ICAgICAgICAgICAgICAgdHlwZV9tb2RlbCA9IHJldHVybl90eXBlX2JpbmRpbmcuZ2V0X3R5cGVf
bW9kZWwoKQorICAgICAgICAgICAgICAgICAgICBpZiBvcHRpb25hbDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVfbW9kZWwgPSB0eXBlX21vZGVsLmdldF9vcHRpb25hbCgpCiAKLSAgICAg
ICAgICAgICAgICBjb2RlID0gIiAgICAlcyBvdXRfJXM7XG4iICUgKHR5cGVfbW9kZWwuZ2V0X2Nv
bW1hbmRfcmV0dXJuX3Bhc3NfbW9kZWwoKS5nZXRfcmV0dXJuX3Zhcl90eXBlKCksIGpzb25fcmV0
dXJuX25hbWUpCi0gICAgICAgICAgICAgICAgcGFyYW0gPSAiLCAlc291dF8lcyIgJSAodHlwZV9t
b2RlbC5nZXRfY29tbWFuZF9yZXR1cm5fcGFzc19tb2RlbCgpLmdldF9vdXRwdXRfYXJndW1lbnRf
cHJlZml4KCksIGpzb25fcmV0dXJuX25hbWUpCi0gICAgICAgICAgICAgICAgdmFyX25hbWUgPSAi
b3V0XyVzIiAlIGpzb25fcmV0dXJuX25hbWUKLSAgICAgICAgICAgICAgICBzZXR0ZXJfYXJndW1l
bnQgPSB0eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X291dHB1
dF90b19yYXdfZXhwcmVzc2lvbigpICUgdmFyX25hbWUKLSAgICAgICAgICAgICAgICBpZiByZXR1
cm5fdHlwZV9iaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCk6Ci0g
ICAgICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1bWVudCA9IHJldHVybl90eXBlX2JpbmRpbmcu
Z2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKSAlIHNldHRlcl9hcmd1bWVudAor
ICAgICAgICAgICAgICAgICAgICBjb2RlID0gIiAgICAlcyBvdXRfJXM7XG4iICUgKHR5cGVfbW9k
ZWwuZ2V0X2NvbW1hbmRfcmV0dXJuX3Bhc3NfbW9kZWwoKS5nZXRfcmV0dXJuX3Zhcl90eXBlKCks
IGpzb25fcmV0dXJuX25hbWUpCisgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gIiwgJXNvdXRf
JXMiICUgKHR5cGVfbW9kZWwuZ2V0X2NvbW1hbmRfcmV0dXJuX3Bhc3NfbW9kZWwoKS5nZXRfb3V0
cHV0X2FyZ3VtZW50X3ByZWZpeCgpLCBqc29uX3JldHVybl9uYW1lKQorICAgICAgICAgICAgICAg
ICAgICB2YXJfbmFtZSA9ICJvdXRfJXMiICUganNvbl9yZXR1cm5fbmFtZQorICAgICAgICAgICAg
ICAgICAgICBzZXR0ZXJfYXJndW1lbnQgPSB0eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9w
YXNzX21vZGVsKCkuZ2V0X291dHB1dF90b19yYXdfZXhwcmVzc2lvbigpICUgdmFyX25hbWUKKyAg
ICAgICAgICAgICAgICAgICAgaWYgcmV0dXJuX3R5cGVfYmluZGluZy5nZXRfc2V0dGVyX3ZhbHVl
X2V4cHJlc3Npb25fcGF0dGVybigpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2Fy
Z3VtZW50ID0gcmV0dXJuX3R5cGVfYmluZGluZy5nZXRfc2V0dGVyX3ZhbHVlX2V4cHJlc3Npb25f
cGF0dGVybigpICUgc2V0dGVyX2FyZ3VtZW50CiAKLSAgICAgICAgICAgICAgICBjb29rID0gIiAg
ICAgICAgICAgIHJlc3VsdC0+c2V0JXMoXCIlc1wiLCAlcyk7XG4iICUgKHNldHRlcl90eXBlLCBq
c29uX3JldHVybl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0ZXJfYXJndW1lbnQpCisgICAgICAgICAgICAg
ICAgICAgIGNvb2sgPSAiICAgICAgICAgICAgcmVzdWx0LT5zZXQlcyhcIiVzXCIsICVzKTtcbiIg
JSAoc2V0dGVyX3R5cGUsIGpzb25fcmV0dXJuX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0ZXJfYXJn
dW1lbnQpCiAKLSAgICAgICAgICAgICAgICBzZXRfY29uZGl0aW9uX3BhdHRlcm4gPSB0eXBlX21v
ZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X3NldF9yZXR1cm5fY29uZGl0
aW9uKCkKLSAgICAgICAgICAgICAgICBpZiBzZXRfY29uZGl0aW9uX3BhdHRlcm46Ci0gICAgICAg
ICAgICAgICAgICAgIGNvb2sgPSAoIiAgICAgICAgICAgIGlmICglcylcbiAgICAiICUgKHNldF9j
b25kaXRpb25fcGF0dGVybiAlIHZhcl9uYW1lKSkgKyBjb29rCi0gICAgICAgICAgICAgICAgYW5u
b3RhdGVkX3R5cGUgPSB0eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCku
Z2V0X291dHB1dF9wYXJhbWV0ZXJfdHlwZSgpCisgICAgICAgICAgICAgICAgICAgIHNldF9jb25k
aXRpb25fcGF0dGVybiA9IHR5cGVfbW9kZWwuZ2V0X2NvbW1hbmRfcmV0dXJuX3Bhc3NfbW9kZWwo
KS5nZXRfc2V0X3JldHVybl9jb25kaXRpb24oKQorICAgICAgICAgICAgICAgICAgICBpZiBzZXRf
Y29uZGl0aW9uX3BhdHRlcm46CisgICAgICAgICAgICAgICAgICAgICAgICBjb29rID0gKCIgICAg
ICAgICAgICBpZiAoJXMpXG4gICAgIiAlIChzZXRfY29uZGl0aW9uX3BhdHRlcm4gJSB2YXJfbmFt
ZSkpICsgY29vaworICAgICAgICAgICAgICAgICAgICBhbm5vdGF0ZWRfdHlwZSA9IHR5cGVfbW9k
ZWwuZ2V0X2NvbW1hbmRfcmV0dXJuX3Bhc3NfbW9kZWwoKS5nZXRfb3V0cHV0X3BhcmFtZXRlcl90
eXBlKCkKIAotICAgICAgICAgICAgICAgIHBhcmFtX25hbWUgPSAib3V0XyVzIiAlIGpzb25fcmV0
dXJuX25hbWUKLSAgICAgICAgICAgICAgICBpZiBvcHRpb25hbDoKLSAgICAgICAgICAgICAgICAg
ICAgcGFyYW1fbmFtZSA9ICJvcHRfIiArIHBhcmFtX25hbWUKKyAgICAgICAgICAgICAgICAgICAg
cGFyYW1fbmFtZSA9ICJvdXRfJXMiICUganNvbl9yZXR1cm5fbmFtZQorICAgICAgICAgICAgICAg
ICAgICBpZiBvcHRpb25hbDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtX25hbWUgPSAi
b3B0XyIgKyBwYXJhbV9uYW1lCiAKLSAgICAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9h
Z2VudF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiwgJXMgJXMiICUgKGFubm90YXRlZF90eXBlLCBw
YXJhbV9uYW1lKSkKLSAgICAgICAgICAgICAgICByZXNwb25zZV9jb29rX2xpc3QuYXBwZW5kKGNv
b2spCisgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFj
ZV9saXN0LmFwcGVuZCgiLCAlcyAlcyIgJSAoYW5ub3RhdGVkX3R5cGUsIHBhcmFtX25hbWUpKQor
ICAgICAgICAgICAgICAgICAgICByZXNwb25zZV9jb29rX2xpc3QuYXBwZW5kKGNvb2spCiAKLSAg
ICAgICAgICAgICAgICBtZXRob2Rfb3V0X2NvZGUgKz0gY29kZQotICAgICAgICAgICAgICAgIGFn
ZW50X2NhbGxfcGFyYW1fbGlzdC5hcHBlbmQocGFyYW0pCisgICAgICAgICAgICAgICAgICAgIG1l
dGhvZF9vdXRfY29kZSArPSBjb2RlCisgICAgICAgICAgICAgICAgICAgIGFnZW50X2NhbGxfcGFy
YW1fbGlzdC5hcHBlbmQocGFyYW0pCiAKLSAgICAgICAgICAgICAgICBiYWNrZW5kX2pzX3JlcGx5
X3BhcmFtX2xpc3QuYXBwZW5kKCJcIiVzXCIiICUganNvbl9yZXR1cm5fbmFtZSkKKyAgICAgICAg
ICAgICAgICByZXNwb25zZV9jb29rX3RleHQgPSAiIi5qb2luKHJlc3BvbnNlX2Nvb2tfbGlzdCkK
IAotICAgICAgICAgICAganNfcmVwbHlfbGlzdCA9ICJbJXNdIiAlICIsICIuam9pbihiYWNrZW5k
X2pzX3JlcGx5X3BhcmFtX2xpc3QpCisgICAgICAgICAgICAgICAgaWYgbGVuKHJlc3BvbnNlX2Nv
b2tfdGV4dCkgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfY29va190ZXh0ID0g
IiAgICAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkge1xuIiArIHJlc3BvbnNlX2Nvb2tfdGV4dCAr
ICIgICAgICAgIH0iCiAKLSAgICAgICAgICAgIHJlc3BvbnNlX2Nvb2tfdGV4dCA9ICIiLmpvaW4o
cmVzcG9uc2VfY29va19saXN0KQorICAgICAgICBiYWNrZW5kX2pzX3JlcGx5X3BhcmFtX2xpc3Qg
PSBbXQorICAgICAgICBpZiAicmV0dXJucyIgaW4ganNvbl9jb21tYW5kOgorICAgICAgICAgICAg
Zm9yIGpzb25fcmV0dXJuIGluIGpzb25fY29tbWFuZFsicmV0dXJucyJdOgorICAgICAgICAgICAg
ICAgIGpzb25fcmV0dXJuX25hbWUgPSBqc29uX3JldHVyblsibmFtZSJdCisgICAgICAgICAgICAg
ICAgYmFja2VuZF9qc19yZXBseV9wYXJhbV9saXN0LmFwcGVuZCgiXCIlc1wiIiAlIGpzb25fcmV0
dXJuX25hbWUpCiAKLSAgICAgICAgICAgIGlmIGxlbihyZXNwb25zZV9jb29rX3RleHQpICE9IDA6
Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY29va190ZXh0ID0gIiAgICAgICAgaWYgKCFlcnJv
ci5sZW5ndGgoKSkge1xuIiArIHJlc3BvbnNlX2Nvb2tfdGV4dCArICIgICAgICAgIH0iCisgICAg
ICAgIGpzX3JlcGx5X2xpc3QgPSAiWyVzXSIgJSAiLCAiLmpvaW4oYmFja2VuZF9qc19yZXBseV9w
YXJhbV9saXN0KQogCiAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX21ldGhvZF9pbXBsZW1lbnRh
dGlvbl9saXN0LmFwcGVuZChUZW1wbGF0ZXMuYmFja2VuZF9tZXRob2Quc3Vic3RpdHV0ZShOb25l
LAogICAgICAgICAgICAgZG9tYWluTmFtZT1kb21haW5fbmFtZSwgbWV0aG9kTmFtZT1qc29uX2Nv
bW1hbmRfbmFtZSwKQEAgLTI5MjIsNiArMjk5MCw2NiBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAg
ICAgIEdlbmVyYXRvci5iYWNrZW5kX2pzX2RvbWFpbl9pbml0aWFsaXplcl9saXN0LmFwcGVuZCgi
SW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoXCIlcy4lc1wiLCBbJXNdLCAlcyk7XG4i
ICUgKGRvbWFpbl9uYW1lLCBqc29uX2NvbW1hbmRfbmFtZSwganNfcGFyYW1ldGVyc190ZXh0LCBq
c19yZXBseV9saXN0KSkKICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNl
X2xpc3QuYXBwZW5kKCIpID0gMDtcbiIpCiAKKyAgICBjbGFzcyBDYWxsYmFja01ldGhvZFN0cnVj
dFRlbXBsYXRlOgorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBhcHBlbmRfcHJv
bG9nKGxpbmVfbGlzdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgQHN0YXRpY21ldGhv
ZAorICAgICAgICBkZWYgYXBwZW5kX2VwaWxvZyhsaW5lX2xpc3QpOgorICAgICAgICAgICAgcGFz
cworCisgICAgICAgIGNvbnRhaW5lcl9uYW1lID0gImpzb25NZXNzYWdlIgorCisgICAgIyBHZW5l
cmF0ZXMgY29tbW9uIGNvZGUgZm9yIGV2ZW50IHNlbmRpbmcgYW5kIGNhbGxiYWNrIHJlc3BvbnNl
IGRhdGEgc2VuZGluZy4KKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdlbmVyYXRlX3NlbmRf
bWV0aG9kKHBhcmFtZXRlcnMsIGV2ZW50X25hbWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93
cml0ZXIsIGJhY2tlbmRfanNfZXZlbnRfcGFyYW1fbGlzdCwgZGVjbF9wYXJhbWV0ZXJfbGlzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kX3N0cnVjdF90ZW1wbGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yX21ldGhvZF9saXN0LCBtZXRob2Rf
dGVtcGxhdGUsIHRlbXBsYXRlX3BhcmFtcyk6CisgICAgICAgIG1ldGhvZF9saW5lX2xpc3QgPSBb
XQorICAgICAgICBpZiBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgbWV0aG9kX3N0cnVjdF90ZW1w
bGF0ZS5hcHBlbmRfcHJvbG9nKG1ldGhvZF9saW5lX2xpc3QpCisgICAgICAgICAgICBmb3IganNv
bl9wYXJhbWV0ZXIgaW4gcGFyYW1ldGVyczoKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfbmFt
ZSA9IGpzb25fcGFyYW1ldGVyWyJuYW1lIl0KKworICAgICAgICAgICAgICAgIHBhcmFtX3R5cGVf
YmluZGluZyA9IEdlbmVyYXRvci5yZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRlX2FkX2hvYyhqc29u
X3BhcmFtZXRlciwgZXZlbnRfbmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dyaXRlciwg
IiIpCisKKyAgICAgICAgICAgICAgICByYXdfdHlwZSA9IHBhcmFtX3R5cGVfYmluZGluZy5yZWR1
Y2VfdG9fcmF3X3R5cGUoKQorICAgICAgICAgICAgICAgIHJhd190eXBlX2JpbmRpbmcgPSBSYXdU
eXBlQmluZGluZyhyYXdfdHlwZSkKKworICAgICAgICAgICAgICAgIG9wdGlvbmFsID0gYm9vbChq
c29uX3BhcmFtZXRlci5nZXQoIm9wdGlvbmFsIikpCisKKyAgICAgICAgICAgICAgICBzZXR0ZXJf
dHlwZSA9IHJhd190eXBlLmdldF9zZXR0ZXJfbmFtZSgpCisKKyAgICAgICAgICAgICAgICB0eXBl
X21vZGVsID0gcGFyYW1fdHlwZV9iaW5kaW5nLmdldF90eXBlX21vZGVsKCkKKyAgICAgICAgICAg
ICAgICByYXdfdHlwZV9tb2RlbCA9IHJhd190eXBlX2JpbmRpbmcuZ2V0X3R5cGVfbW9kZWwoKQor
ICAgICAgICAgICAgICAgIGlmIG9wdGlvbmFsOgorICAgICAgICAgICAgICAgICAgICB0eXBlX21v
ZGVsID0gdHlwZV9tb2RlbC5nZXRfb3B0aW9uYWwoKQorICAgICAgICAgICAgICAgICAgICByYXdf
dHlwZV9tb2RlbCA9IHJhd190eXBlX21vZGVsLmdldF9vcHRpb25hbCgpCisKKyAgICAgICAgICAg
ICAgICBhbm5vdGF0ZWRfdHlwZSA9IHR5cGVfbW9kZWwuZ2V0X2lucHV0X3BhcmFtX3R5cGVfdGV4
dCgpCisgICAgICAgICAgICAgICAgbW9kZV90eXBlX2JpbmRpbmcgPSBwYXJhbV90eXBlX2JpbmRp
bmcKKworICAgICAgICAgICAgICAgIGRlY2xfcGFyYW1ldGVyX2xpc3QuYXBwZW5kKCIlcyAlcyIg
JSAoYW5ub3RhdGVkX3R5cGUsIHBhcmFtZXRlcl9uYW1lKSkKKworICAgICAgICAgICAgICAgIHNl
dHRlcl9hcmd1bWVudCA9IHJhd190eXBlX21vZGVsLmdldF9ldmVudF9zZXR0ZXJfZXhwcmVzc2lv
bl9wYXR0ZXJuKCkgJSBwYXJhbWV0ZXJfbmFtZQorICAgICAgICAgICAgICAgIGlmIG1vZGVfdHlw
ZV9iaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCk6CisgICAgICAg
ICAgICAgICAgICAgIHNldHRlcl9hcmd1bWVudCA9IG1vZGVfdHlwZV9iaW5kaW5nLmdldF9zZXR0
ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCkgJSBzZXR0ZXJfYXJndW1lbnQKKworICAgICAg
ICAgICAgICAgIHNldHRlcl9jb2RlID0gIiAgICAlcy0+c2V0JXMoXCIlc1wiLCAlcyk7XG4iICUg
KG1ldGhvZF9zdHJ1Y3RfdGVtcGxhdGUuY29udGFpbmVyX25hbWUsIHNldHRlcl90eXBlLCBwYXJh
bWV0ZXJfbmFtZSwgc2V0dGVyX2FyZ3VtZW50KQorICAgICAgICAgICAgICAgIGlmIG9wdGlvbmFs
OgorICAgICAgICAgICAgICAgICAgICBzZXR0ZXJfY29kZSA9ICgiICAgIGlmICglcylcbiAgICAi
ICUgcGFyYW1ldGVyX25hbWUpICsgc2V0dGVyX2NvZGUKKyAgICAgICAgICAgICAgICBtZXRob2Rf
bGluZV9saXN0LmFwcGVuZChzZXR0ZXJfY29kZSkKKworICAgICAgICAgICAgICAgIGlmIGJhY2tl
bmRfanNfZXZlbnRfcGFyYW1fbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgYmFja2VuZF9qc19l
dmVudF9wYXJhbV9saXN0LmFwcGVuZCgiXCIlc1wiIiAlIHBhcmFtZXRlcl9uYW1lKQorICAgICAg
ICAgICAgbWV0aG9kX3N0cnVjdF90ZW1wbGF0ZS5hcHBlbmRfZXBpbG9nKG1ldGhvZF9saW5lX2xp
c3QpCisKKyAgICAgICAgZ2VuZXJhdG9yX21ldGhvZF9saXN0LmFwcGVuZChtZXRob2RfdGVtcGxh
dGUuc3Vic3RpdHV0ZShOb25lLAorICAgICAgICAgICAgZG9tYWluTmFtZT1kb21haW5fbmFtZSwK
KyAgICAgICAgICAgIHBhcmFtZXRlcnM9IiwgIi5qb2luKGRlY2xfcGFyYW1ldGVyX2xpc3QpLAor
ICAgICAgICAgICAgY29kZT0iIi5qb2luKG1ldGhvZF9saW5lX2xpc3QpLCAqKnRlbXBsYXRlX3Bh
cmFtcykpCisKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHJlc29sdmVfdHlwZV9hbmRfZ2Vu
ZXJhdGVfYWRfaG9jKGpzb25fcGFyYW0sIG1ldGhvZF9uYW1lLCBkb21haW5fbmFtZSwgYWRfaG9j
X3R5cGVfd3JpdGVyLCBjb250YWluZXJfcmVsYXRpdmVfbmFtZV9wcmVmaXhfcGFyYW0pOgogICAg
ICAgICBwYXJhbV9uYW1lID0ganNvbl9wYXJhbVsibmFtZSJdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162051</attachid>
            <date>2012-09-04 09:36:06 -0700</date>
            <delta_ts>2012-09-04 09:41:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95649-20120904203548.patch</filename>
            <type>text/plain</type>
            <size>22449</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNkZTZlMmVhMjljMGZm
MWZhMTNhMWVlYzk3ZjA4MjBlMmIyZGJkZi4uZjYxMTRmZGIyZjQzZGJjMmM5Nzk3Mjc2MTEzMzIx
OGZkM2IwYTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTAxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzdXBwb3J0IGFzeW5jaHJvbm91cyBjb21tYW5k
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTY0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEdlbmVyYXRvciBpcyBleHRlbmRlZCB0byBnZW5lcmF0ZSBjYWxsYmFjayBvYmplY3Qg
Zm9yIGVhY2ggYXN5bmNocm9ub3VzIGNvbW1hbmQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKFdyaXRlci5hcHBlbmRfbXVsdGlsaW5l
KToKKyAgICAgICAgKFdyaXRlcik6CisgICAgICAgIChXcml0ZXIuZ2V0X2luZGVudCk6CisgICAg
ICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkNsYXNzQmluZGluZy5y
ZXNvbHZlX2lubmVyLlJlc29sdmVEYXRhKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVySW1wbCk6CisgICAgICAgIChDYWxsYmFja0Jhc2UpOgorICAgICAgICAoR2VuZXJhdG9y
LnByb2Nlc3NfZXZlbnQpOgorICAgICAgICAoR2VuZXJhdG9yKToKKyAgICAgICAgKEdlbmVyYXRv
ci5FdmVudE1ldGhvZFN0cnVjdFRlbXBsYXRlKToKKyAgICAgICAgKEdlbmVyYXRvci5FdmVudE1l
dGhvZFN0cnVjdFRlbXBsYXRlLmFwcGVuZF9wcm9sb2cpOgorICAgICAgICAoR2VuZXJhdG9yLkV2
ZW50TWV0aG9kU3RydWN0VGVtcGxhdGUuYXBwZW5kX2VwaWxvZyk6CisgICAgICAgIChHZW5lcmF0
b3IucHJvY2Vzc19jb21tYW5kKToKKyAgICAgICAgKEdlbmVyYXRvci5DYWxsYmFja01ldGhvZFN0
cnVjdFRlbXBsYXRlKToKKyAgICAgICAgKEdlbmVyYXRvci5DYWxsYmFja01ldGhvZFN0cnVjdFRl
bXBsYXRlLmFwcGVuZF9wcm9sb2cpOgorICAgICAgICAoR2VuZXJhdG9yLkNhbGxiYWNrTWV0aG9k
U3RydWN0VGVtcGxhdGUuYXBwZW5kX2VwaWxvZyk6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJh
dGVfc2VuZF9tZXRob2QpOgorCiAyMDEyLTA4LTI4ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vr
b2xzYWtAZ21haWwuY29tPgogCiAgICAgICAgIENyYXNoIGluIEVkaXRpbmdTdHlsZTo6bWVyZ2VT
dHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5weQppbmRleCA4NTIyMjUzOGI0ZDNkN2U5NmZkM2NlOWUzYmQwYzkxYWYzMTk4Yzc4Li4w
ZWU3OTJmZjBlMThkZTk0OWIxOWNhNWExMzQ5NTllZmZhZDI5ZGMwIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtNzcwLDYg
Kzc3MCw5IEBAIGNsYXNzIFdyaXRlcjoKICAgICAgICAgICAgIGlmIHA6CiAgICAgICAgICAgICAg
ICAgc2VsZi5uZXdsaW5lKHApCiAKKyAgICBkZWYgZ2V0X2luZGVudChzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuaW5kZW50CisKICAgICBkZWYgZ2V0X2luZGVudGVkKHNlbGYsIGFkZGl0aW9u
YWxfaW5kZW50KToKICAgICAgICAgcmV0dXJuIFdyaXRlcihzZWxmLm91dHB1dCwgc2VsZi5pbmRl
bnQgKyBhZGRpdGlvbmFsX2luZGVudCkKIApAQCAtMTExMCw3ICsxMTEzLDcgQEAgY2xhc3MgVHlw
ZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgUmVzb2x2ZURhdGE6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbl9wcm9wZXJ0aWVzID0gbWFpbgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX3Byb3BlcnRpZXMgPSBvcHRpb25hbAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190eXBlcyA9IGFkX2hvY190eXBlX2NvbnRl
eHQuYWRfaG9jX3R5cGVfbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190
eXBlcyA9IGFkX2hvY190eXBlX2xpc3QKIAogICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnJl
c29sdmVfZGF0YV8gPSBSZXNvbHZlRGF0YQogCkBAIC0xNzgzLDEwICsxNzg2LDIwIEBAICR7cmVz
cG9uc2VDb29rfQogCiAgICAgZnJvbnRlbmRfbWV0aG9kID0gc3RyaW5nLlRlbXBsYXRlKCIiInZv
aWQgSW5zcGVjdG9yRnJvbnRlbmQ6OiRkb21haW5OYW1lOjokZXZlbnROYW1lKCRwYXJhbWV0ZXJz
KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+ICR7ZXZlbnROYW1lfU1lc3NhZ2UgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICR7ZXZlbnROYW1lfU1lc3NhZ2UtPnNldFN0
cmluZygibWV0aG9kIiwgIiRkb21haW5OYW1lLiRldmVudE5hbWUiKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Cisg
ICAganNvbk1lc3NhZ2UtPnNldFN0cmluZygibWV0aG9kIiwgIiRkb21haW5OYW1lLiRldmVudE5h
bWUiKTsKICRjb2RlICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAg
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZCgke2V2ZW50
TmFtZX1NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmlu
ZygpKTsKK30KKyIiIikKKworICAgIGNhbGxiYWNrX21ldGhvZCA9IHN0cmluZy5UZW1wbGF0ZSgK
KyIiIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjokYWdlbnROYW1lOjokY2FsbGJhY2tOYW1l
OjokY2FsbGJhY2tOYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBs
PiBiYWNrZW5kSW1wbCwgaW50IGlkKSA6IENhbGxiYWNrQmFzZShiYWNrZW5kSW1wbCwgaWQpIHt9
CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OiRhZ2VudE5hbWU6OiRjYWxsYmFj
a05hbWU6OnNlbmRTdWNjZXNzKCRwYXJhbWV0ZXJzKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyRjb2RlICAg
IHNlbmRJZkFjdGl2ZShqc29uTWVzc2FnZSwgRXJyb3JTdHJpbmcoKSk7CiB9CiAiIiIpCiAKQEAg
LTE4NDUsMTEgKzE4NTgsMjggQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJJbXBsOworCiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjogcHVibGljIFJl
ZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKTsKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogCisgICAgY2xhc3MgQ2FsbGJhY2tC
YXNlOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIENhbGxiYWNrQmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1w
bD4gYmFja2VuZEltcGwsIGludCBpZCk7CisgICAgICAgIHZvaWQgc2VuZEZhaWx1cmUoRXJyb3JT
dHJpbmcpOworICAgICAgICBib29sIGlzQWN0aXZlKCk7CisgICAgICAgIHZvaWQgZGlzYWJsZSgp
IHsgbV9hbHJlYWR5U2VudCA9IHRydWU7IH0KKyAgICAgICAgdmlydHVhbCB+Q2FsbGJhY2tCYXNl
KCk7CisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHNlbmRJZkFjdGl2ZShQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcGFydGlhbE1lc3NhZ2UsIEVycm9yU3RyaW5nIGludm9jYXRpb25F
cnJvcik7CisgICAgcHJpdmF0ZToKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVySW1wbD4gbV9iYWNrZW5kSW1wbDsKKyAgICAgICAgaW50IG1faWQ7CisgICAgICAgIGJv
b2wgbV9hbHJlYWR5U2VudDsKKyAgICB9OworCiAkYWdlbnRJbnRlcmZhY2VzCiAkdmlydHVhbFNl
dHRlcnMKIApAQCAtMTkyMCw2ICsxOTUwLDkgQEAgJGNvbnN0cnVjdG9ySW5pdAogICAgIHZpcnR1
YWwgdm9pZCByZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29t
bW9uRXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gZGF0YSkgY29uc3Q7CiAgICAgdXNpbmcgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3I7CiAKKyAgICB2b2lkIHNlbmRSZXNwb25zZShsb25n
IGNhbGxJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCwgRXJyb3JTdHJpbmcg
aW52b2NhdGlvbkVycm9yKTsKKyAgICBib29sIGlzQWN0aXZlKCkgeyByZXR1cm4gbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7IH0KKwogJHNldHRlcnMKIHByaXZhdGU6CiAkbWV0aG9kRGVjbGFy
YXRpb25zCkBAIC0yMDE3LDYgKzIwNTAsMTEgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlckltcGw6OnNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUGFzc1JlZlB0cjxJbnNwZWMKICAg
ICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnZhbGlkUGFyYW1zLCBlcnJvck1l
c3NhZ2UsIHByb3RvY29sRXJyb3JzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBzZW5k
UmVzcG9uc2UoY2FsbElkLCByZXN1bHQsIGludm9jYXRpb25FcnJvcik7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBsOjpzZW5kUmVzcG9uc2UobG9uZyBjYWxsSWQsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQsIEVycm9yU3RyaW5nIGludm9jYXRpb25F
cnJvcikKK3sKICAgICBpZiAoaW52b2NhdGlvbkVycm9yLmxlbmd0aCgpKSB7CiAgICAgICAgIHJl
cG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgU2VydmVyRXJyb3IsIGludm9jYXRpb25FcnJvcik7
CiAgICAgICAgIHJldHVybjsKQEAgLTIxNTQsNiArMjE5MiwzMCBAQCBib29sIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpnZXRDb21tYW5kTmFtZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFN0
cmluZyogcgogICAgIHJldHVybiB0cnVlOwogfQogCitJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFja0Jhc2UoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlckltcGw+IGJhY2tlbmRJbXBsLCBpbnQgaWQpCisgICAgOiBtX2JhY2tlbmRJbXBs
KGJhY2tlbmRJbXBsKSwgbV9pZChpZCksIG1fYWxyZWFkeVNlbnQoZmFsc2UpIHt9CisKK0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6On5DYWxsYmFja0Jhc2UoKSB7fQor
Cit2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRGYWls
dXJlKEVycm9yU3RyaW5nIGVycm9yKQoreworICAgIEFTU0VSVChlcnJvci5sZW5ndGgoKSk7Cisg
ICAgc2VuZElmQWN0aXZlKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PigpLCBlcnJvcik7Cit9
CisKK2Jvb2wgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6aXNBY3Rp
dmUoKQoreworICAgIHJldHVybiAhbV9hbHJlYWR5U2VudCAmJiBtX2JhY2tlbmRJbXBsLT5pc0Fj
dGl2ZSgpOworfQorCit2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jh
c2U6OnNlbmRJZkFjdGl2ZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFydGlhbE1lc3Nh
Z2UsIEVycm9yU3RyaW5nIGludm9jYXRpb25FcnJvcikKK3sKKyAgICBpZiAobV9hbHJlYWR5U2Vu
dCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fYmFja2VuZEltcGwtPnNlbmRSZXNwb25zZShtX2lk
LCBwYXJ0aWFsTWVzc2FnZSwgaW52b2NhdGlvbkVycm9yKTsKKyAgICBtX2FscmVhZHlTZW50ID0g
dHJ1ZTsKK30KKwogQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6a01ldGhvZE5hbWVzRW51bVNpemUpID09IFdURl9BUlJBWV9MRU5HVEgo
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNvbW1hbmROYW1lcyksIGNvbW1hbmRfbmFtZV9h
cnJheV9wcm9ibGVtKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpAQCAtMjcyNyw1OSArMjc4
OSw0MSBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgZGVmIHByb2Nlc3NfZXZlbnQoanNvbl9ldmVu
dCwgZG9tYWluX25hbWUsIGZyb250ZW5kX21ldGhvZF9kZWNsYXJhdGlvbl9saW5lcyk6CiAgICAg
ICAgIGV2ZW50X25hbWUgPSBqc29uX2V2ZW50WyJuYW1lIl0KIAotICAgICAgICBwYXJhbWV0ZXJf
bGlzdCA9IFtdCi0gICAgICAgIG1ldGhvZF9saW5lX2xpc3QgPSBbXQotICAgICAgICBiYWNrZW5k
X2pzX2V2ZW50X3BhcmFtX2xpc3QgPSBbXQogICAgICAgICBhZF9ob2NfdHlwZV9vdXRwdXQgPSBb
XQogICAgICAgICBmcm9udGVuZF9tZXRob2RfZGVjbGFyYXRpb25fbGluZXMuYXBwZW5kKGFkX2hv
Y190eXBlX291dHB1dCkKICAgICAgICAgYWRfaG9jX3R5cGVfd3JpdGVyID0gV3JpdGVyKGFkX2hv
Y190eXBlX291dHB1dCwgIiAgICAgICAgIikKLSAgICAgICAgaWYgInBhcmFtZXRlcnMiIGluIGpz
b25fZXZlbnQ6Ci0gICAgICAgICAgICBtZXRob2RfbGluZV9saXN0LmFwcGVuZCgiICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc09iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7XG4iKQotICAgICAgICAgICAgZm9yIGpzb25fcGFyYW1ldGVyIGluIGpzb25fZXZlbnRbInBh
cmFtZXRlcnMiXToKLSAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfbmFtZSA9IGpzb25fcGFyYW1l
dGVyWyJuYW1lIl0KIAotICAgICAgICAgICAgICAgIHBhcmFtX3R5cGVfYmluZGluZyA9IEdlbmVy
YXRvci5yZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRlX2FkX2hvYyhqc29uX3BhcmFtZXRlciwgZXZl
bnRfbmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dyaXRlciwgIiIpCi0KLSAgICAgICAg
ICAgICAgICByYXdfdHlwZSA9IHBhcmFtX3R5cGVfYmluZGluZy5yZWR1Y2VfdG9fcmF3X3R5cGUo
KQotICAgICAgICAgICAgICAgIHJhd190eXBlX2JpbmRpbmcgPSBSYXdUeXBlQmluZGluZyhyYXdf
dHlwZSkKLQotICAgICAgICAgICAgICAgIG9wdGlvbmFsID0gYm9vbChqc29uX3BhcmFtZXRlci5n
ZXQoIm9wdGlvbmFsIikpCi0KLSAgICAgICAgICAgICAgICBzZXR0ZXJfdHlwZSA9IHJhd190eXBl
LmdldF9zZXR0ZXJfbmFtZSgpCi0KLSAgICAgICAgICAgICAgICB0eXBlX21vZGVsID0gcGFyYW1f
dHlwZV9iaW5kaW5nLmdldF90eXBlX21vZGVsKCkKLSAgICAgICAgICAgICAgICByYXdfdHlwZV9t
b2RlbCA9IHJhd190eXBlX2JpbmRpbmcuZ2V0X3R5cGVfbW9kZWwoKQotICAgICAgICAgICAgICAg
IGlmIG9wdGlvbmFsOgotICAgICAgICAgICAgICAgICAgICB0eXBlX21vZGVsID0gdHlwZV9tb2Rl
bC5nZXRfb3B0aW9uYWwoKQotICAgICAgICAgICAgICAgICAgICByYXdfdHlwZV9tb2RlbCA9IHJh
d190eXBlX21vZGVsLmdldF9vcHRpb25hbCgpCi0KLSAgICAgICAgICAgICAgICBhbm5vdGF0ZWRf
dHlwZSA9IHR5cGVfbW9kZWwuZ2V0X2lucHV0X3BhcmFtX3R5cGVfdGV4dCgpCi0gICAgICAgICAg
ICAgICAgbW9kZV90eXBlX2JpbmRpbmcgPSBwYXJhbV90eXBlX2JpbmRpbmcKKyAgICAgICAgZGVj
bF9wYXJhbWV0ZXJfbGlzdCA9IFtdCiAKLSAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfbGlzdC5h
cHBlbmQoIiVzICVzIiAlIChhbm5vdGF0ZWRfdHlwZSwgcGFyYW1ldGVyX25hbWUpKQotCi0gICAg
ICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0gcmF3X3R5cGVfbW9kZWwuZ2V0X2V2ZW50X3Nl
dHRlcl9leHByZXNzaW9uX3BhdHRlcm4oKSAlIHBhcmFtZXRlcl9uYW1lCi0gICAgICAgICAgICAg
ICAgaWYgbW9kZV90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRl
cm4oKToKLSAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0gbW9kZV90eXBlX2Jp
bmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKSAlIHNldHRlcl9hcmd1
bWVudAotCi0gICAgICAgICAgICAgICAgc2V0dGVyX2NvZGUgPSAiICAgIHBhcmFtc09iamVjdC0+
c2V0JXMoXCIlc1wiLCAlcyk7XG4iICUgKHNldHRlcl90eXBlLCBwYXJhbWV0ZXJfbmFtZSwgc2V0
dGVyX2FyZ3VtZW50KQotICAgICAgICAgICAgICAgIGlmIG9wdGlvbmFsOgotICAgICAgICAgICAg
ICAgICAgICBzZXR0ZXJfY29kZSA9ICgiICAgIGlmICglcylcbiAgICAiICUgcGFyYW1ldGVyX25h
bWUpICsgc2V0dGVyX2NvZGUKLSAgICAgICAgICAgICAgICBtZXRob2RfbGluZV9saXN0LmFwcGVu
ZChzZXR0ZXJfY29kZSkKKyAgICAgICAganNvbl9wYXJhbWV0ZXJzID0ganNvbl9ldmVudC5nZXQo
InBhcmFtZXRlcnMiKQorICAgICAgICBHZW5lcmF0b3IuZ2VuZXJhdGVfc2VuZF9tZXRob2QoanNv
bl9wYXJhbWV0ZXJzLCBldmVudF9uYW1lLCBkb21haW5fbmFtZSwgYWRfaG9jX3R5cGVfd3JpdGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbF9wYXJhbWV0ZXJf
bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvci5F
dmVudE1ldGhvZFN0cnVjdFRlbXBsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdG9yLmZyb250ZW5kX21ldGhvZF9saXN0LCBUZW1wbGF0ZXMuZnJvbnRl
bmRfbWV0aG9kLCB7ImV2ZW50TmFtZSI6IGV2ZW50X25hbWV9KQogCisgICAgICAgIGJhY2tlbmRf
anNfZXZlbnRfcGFyYW1fbGlzdCA9IFtdCisgICAgICAgIGlmIGpzb25fcGFyYW1ldGVyczoKKyAg
ICAgICAgICAgIGZvciBwYXJhbWV0ZXIgaW4ganNvbl9wYXJhbWV0ZXJzOgorICAgICAgICAgICAg
ICAgIHBhcmFtZXRlcl9uYW1lID0gcGFyYW1ldGVyWyJuYW1lIl0KICAgICAgICAgICAgICAgICBi
YWNrZW5kX2pzX2V2ZW50X3BhcmFtX2xpc3QuYXBwZW5kKCJcIiVzXCIiICUgcGFyYW1ldGVyX25h
bWUpCi0gICAgICAgICAgICBtZXRob2RfbGluZV9saXN0LmFwcGVuZCgiICAgICVzTWVzc2FnZS0+
c2V0T2JqZWN0KFwicGFyYW1zXCIsIHBhcmFtc09iamVjdCk7XG4iICUgZXZlbnRfbmFtZSkKLSAg
ICAgICAgZnJvbnRlbmRfbWV0aG9kX2RlY2xhcmF0aW9uX2xpbmVzLmFwcGVuZCgKLSAgICAgICAg
ICAgICIgICAgICAgIHZvaWQgJXMoJXMpO1xuIiAlIChldmVudF9uYW1lLCAiLCAiLmpvaW4ocGFy
YW1ldGVyX2xpc3QpKSkKIAotICAgICAgICBHZW5lcmF0b3IuZnJvbnRlbmRfbWV0aG9kX2xpc3Qu
YXBwZW5kKFRlbXBsYXRlcy5mcm9udGVuZF9tZXRob2Quc3Vic3RpdHV0ZShOb25lLAotICAgICAg
ICAgICAgZG9tYWluTmFtZT1kb21haW5fbmFtZSwgZXZlbnROYW1lPWV2ZW50X25hbWUsCi0gICAg
ICAgICAgICBwYXJhbWV0ZXJzPSIsICIuam9pbihwYXJhbWV0ZXJfbGlzdCksCi0gICAgICAgICAg
ICBjb2RlPSIiLmpvaW4obWV0aG9kX2xpbmVfbGlzdCkpKQorICAgICAgICBmcm9udGVuZF9tZXRo
b2RfZGVjbGFyYXRpb25fbGluZXMuYXBwZW5kKAorICAgICAgICAgICAgIiAgICAgICAgdm9pZCAl
cyglcyk7XG4iICUgKGV2ZW50X25hbWUsICIsICIuam9pbihkZWNsX3BhcmFtZXRlcl9saXN0KSkp
CiAKICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfanNfZG9tYWluX2luaXRpYWxpemVyX2xpc3Qu
YXBwZW5kKCJJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRXZlbnQoXCIlcy4lc1wiLCBbJXNdKTtc
biIgJSAoCiAgICAgICAgICAgICBkb21haW5fbmFtZSwgZXZlbnRfbmFtZSwgIiwgIi5qb2luKGJh
Y2tlbmRfanNfZXZlbnRfcGFyYW1fbGlzdCkpKQogCisgICAgY2xhc3MgRXZlbnRNZXRob2RTdHJ1
Y3RUZW1wbGF0ZToKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgYXBwZW5kX3By
b2xvZyhsaW5lX2xpc3QpOgorICAgICAgICAgICAgbGluZV9saXN0LmFwcGVuZCgiICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc09iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7XG4iKQorCisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGFwcGVuZF9lcGls
b2cobGluZV9saXN0KToKKyAgICAgICAgICAgIGxpbmVfbGlzdC5hcHBlbmQoIiAgICBqc29uTWVz
c2FnZS0+c2V0T2JqZWN0KFwicGFyYW1zXCIsIHBhcmFtc09iamVjdCk7XG4iKQorCisgICAgICAg
IGNvbnRhaW5lcl9uYW1lID0gInBhcmFtc09iamVjdCIKKwogICAgIEBzdGF0aWNtZXRob2QKICAg
ICBkZWYgcHJvY2Vzc19jb21tYW5kKGpzb25fY29tbWFuZCwgZG9tYWluX25hbWUsIGFnZW50X2Zp
ZWxkX25hbWUsIGFnZW50X2ludGVyZmFjZV9uYW1lKToKICAgICAgICAganNvbl9jb21tYW5kX25h
bWUgPSBqc29uX2NvbW1hbmRbIm5hbWUiXQpAQCAtMjgwMCw3ICsyODQ0LDYgQEAgY2xhc3MgR2Vu
ZXJhdG9yOgogICAgICAgICBtZXRob2Rfb3V0X2NvZGUgPSAiIgogICAgICAgICBhZ2VudF9jYWxs
X3BhcmFtX2xpc3QgPSBbXQogICAgICAgICByZXNwb25zZV9jb29rX2xpc3QgPSBbXQotICAgICAg
ICBiYWNrZW5kX2pzX3JlcGx5X3BhcmFtX2xpc3QgPSBbXQogICAgICAgICByZXF1ZXN0X21lc3Nh
Z2VfcGFyYW0gPSAiIgogICAgICAgICBqc19wYXJhbWV0ZXJzX3RleHQgPSAiIgogICAgICAgICBp
ZiAicGFyYW1ldGVycyIgaW4ganNvbl9jb21tYW5kOgpAQCAtMjg1NSw1OCArMjg5OCw4OSBAQCBj
bGFzcyBHZW5lcmF0b3I6CiAgICAgICAgICAgICBqc19wYXJhbWV0ZXJzX3RleHQgPSAiLCAiLmpv
aW4oanNfcGFyYW1fbGlzdCkKIAogICAgICAgICByZXNwb25zZV9jb29rX3RleHQgPSAiIgotICAg
ICAgICBqc19yZXBseV9saXN0ID0gIltdIgotICAgICAgICBpZiAicmV0dXJucyIgaW4ganNvbl9j
b21tYW5kOgotICAgICAgICAgICAgbWV0aG9kX291dF9jb2RlICs9ICJcbiIKLSAgICAgICAgICAg
IGZvciBqc29uX3JldHVybiBpbiBqc29uX2NvbW1hbmRbInJldHVybnMiXToKKyAgICAgICAgaWYg
anNvbl9jb21tYW5kLmdldCgiYXN5bmNoIikgPT0gVHJ1ZToKKyAgICAgICAgICAgIGNhbGxiYWNr
X25hbWUgPSBDYXBpdGFsaXplci5sb3dlcl9jYW1lbF9jYXNlX3RvX3VwcGVyKGpzb25fY29tbWFu
ZF9uYW1lKSArICJDYWxsYmFjayIKKworICAgICAgICAgICAgY2FsbGJhY2tfb3V0cHV0ID0gW10K
KyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlciA9IFdyaXRlcihjYWxsYmFja19vdXRwdXQsIGFk
X2hvY190eXBlX3dyaXRlci5nZXRfaW5kZW50KCkpCisKKyAgICAgICAgICAgIGRlY2xfcGFyYW1l
dGVyX2xpc3QgPSBbXQorICAgICAgICAgICAgR2VuZXJhdG9yLmdlbmVyYXRlX3NlbmRfbWV0aG9k
KGpzb25fY29tbWFuZC5nZXQoInJldHVybnMiKSwganNvbl9jb21tYW5kX25hbWUsIGRvbWFpbl9u
YW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWNsX3BhcmFtZXRlcl9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdG9yLkNhbGxiYWNrTWV0aG9kU3RydWN0VGVtcGxhdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9tZXRo
b2RfaW1wbGVtZW50YXRpb25fbGlzdCwgVGVtcGxhdGVzLmNhbGxiYWNrX21ldGhvZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiY2FsbGJhY2tOYW1lIjogY2FsbGJh
Y2tfbmFtZSwgImFnZW50TmFtZSI6IGFnZW50X2ludGVyZmFjZV9uYW1lfSkKKworICAgICAgICAg
ICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoImNsYXNzICIgKyBjYWxsYmFja19uYW1lICsgIiA6
IHB1YmxpYyBDYWxsYmFja0Jhc2Uge1xuIikKKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5u
ZXdsaW5lKCJwdWJsaWM6XG4iKQorICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUo
IiAgICAiICsgY2FsbGJhY2tfbmFtZSArICIoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlckltcGw+LCBpbnQgaWQpO1xuIikKKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5u
ZXdsaW5lKCIgICAgdm9pZCBzZW5kU3VjY2VzcygiICsgIiwgIi5qb2luKGRlY2xfcGFyYW1ldGVy
X2xpc3QpICsgIik7XG4iKQorICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoIn07
XG4iKQorCisgICAgICAgICAgICBhZF9ob2NfdHlwZV9vdXRwdXQuYXBwZW5kKGNhbGxiYWNrX291
dHB1dCkKKworICAgICAgICAgICAgbWV0aG9kX291dF9jb2RlICs9ICIgICAgUmVmUHRyPCIgKyBh
Z2VudF9pbnRlcmZhY2VfbmFtZSArICI6OiIgKyBjYWxsYmFja19uYW1lICsgIj4gY2FsbGJhY2sg
PSBhZG9wdFJlZihuZXcgIiArIGFnZW50X2ludGVyZmFjZV9uYW1lICsgIjo6IiArIGNhbGxiYWNr
X25hbWUgKyAiKHRoaXMsIGNhbGxJZCkpO1xuIgorICAgICAgICAgICAgYWdlbnRfY2FsbF9wYXJh
bV9saXN0LmFwcGVuZCgiLCBjYWxsYmFjayIpCisgICAgICAgICAgICByZXNwb25zZV9jb29rX3Rl
eHQgKz0gIiAgICAgICAgaWYgKGVycm9yLmxlbmd0aCgpID09IDApIFxuIgorICAgICAgICAgICAg
cmVzcG9uc2VfY29va190ZXh0ICs9ICIgICAgICAgICAgICByZXR1cm47XG4iCisgICAgICAgICAg
ICByZXNwb25zZV9jb29rX3RleHQgKz0gIiAgICAgICAgY2FsbGJhY2stPmRpc2FibGUoKTtcbiIK
KyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVu
ZCgiLCBjb25zdCBSZWZQdHI8JXM+JiBjYWxsYmFjayIgJSBjYWxsYmFja19uYW1lKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgaWYgInJldHVybnMiIGluIGpzb25fY29tbWFuZDoKKyAgICAg
ICAgICAgICAgICBtZXRob2Rfb3V0X2NvZGUgKz0gIlxuIgorICAgICAgICAgICAgICAgIGZvciBq
c29uX3JldHVybiBpbiBqc29uX2NvbW1hbmRbInJldHVybnMiXToKIAotICAgICAgICAgICAgICAg
IGpzb25fcmV0dXJuX25hbWUgPSBqc29uX3JldHVyblsibmFtZSJdCisgICAgICAgICAgICAgICAg
ICAgIGpzb25fcmV0dXJuX25hbWUgPSBqc29uX3JldHVyblsibmFtZSJdCiAKLSAgICAgICAgICAg
ICAgICBvcHRpb25hbCA9IGJvb2woanNvbl9yZXR1cm4uZ2V0KCJvcHRpb25hbCIpKQorICAgICAg
ICAgICAgICAgICAgICBvcHRpb25hbCA9IGJvb2woanNvbl9yZXR1cm4uZ2V0KCJvcHRpb25hbCIp
KQogCi0gICAgICAgICAgICAgICAgcmV0dXJuX3R5cGVfYmluZGluZyA9IEdlbmVyYXRvci5yZXNv
bHZlX3R5cGVfYW5kX2dlbmVyYXRlX2FkX2hvYyhqc29uX3JldHVybiwganNvbl9jb21tYW5kX25h
bWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsIGFnZW50X2ludGVyZmFjZV9uYW1l
ICsgIjo6IikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3R5cGVfYmluZGluZyA9IEdlbmVy
YXRvci5yZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRlX2FkX2hvYyhqc29uX3JldHVybiwganNvbl9j
b21tYW5kX25hbWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsIGFnZW50X2ludGVy
ZmFjZV9uYW1lICsgIjo6IikKIAotICAgICAgICAgICAgICAgIHJhd190eXBlID0gcmV0dXJuX3R5
cGVfYmluZGluZy5yZWR1Y2VfdG9fcmF3X3R5cGUoKQotICAgICAgICAgICAgICAgIHNldHRlcl90
eXBlID0gcmF3X3R5cGUuZ2V0X3NldHRlcl9uYW1lKCkKLSAgICAgICAgICAgICAgICBpbml0aWFs
aXplciA9IHJhd190eXBlLmdldF9jX2luaXRpYWxpemVyKCkKKyAgICAgICAgICAgICAgICAgICAg
cmF3X3R5cGUgPSByZXR1cm5fdHlwZV9iaW5kaW5nLnJlZHVjZV90b19yYXdfdHlwZSgpCisgICAg
ICAgICAgICAgICAgICAgIHNldHRlcl90eXBlID0gcmF3X3R5cGUuZ2V0X3NldHRlcl9uYW1lKCkK
KyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXIgPSByYXdfdHlwZS5nZXRfY19pbml0aWFs
aXplcigpCiAKLSAgICAgICAgICAgICAgICB0eXBlX21vZGVsID0gcmV0dXJuX3R5cGVfYmluZGlu
Zy5nZXRfdHlwZV9tb2RlbCgpCi0gICAgICAgICAgICAgICAgaWYgb3B0aW9uYWw6Ci0gICAgICAg
ICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSB0eXBlX21vZGVsLmdldF9vcHRpb25hbCgpCisgICAg
ICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSByZXR1cm5fdHlwZV9iaW5kaW5nLmdldF90eXBl
X21vZGVsKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgb3B0aW9uYWw6CisgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlX21vZGVsID0gdHlwZV9tb2RlbC5nZXRfb3B0aW9uYWwoKQogCi0gICAg
ICAgICAgICAgICAgY29kZSA9ICIgICAgJXMgb3V0XyVzO1xuIiAlICh0eXBlX21vZGVsLmdldF9j
b21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X3JldHVybl92YXJfdHlwZSgpLCBqc29uX3Jl
dHVybl9uYW1lKQotICAgICAgICAgICAgICAgIHBhcmFtID0gIiwgJXNvdXRfJXMiICUgKHR5cGVf
bW9kZWwuZ2V0X2NvbW1hbmRfcmV0dXJuX3Bhc3NfbW9kZWwoKS5nZXRfb3V0cHV0X2FyZ3VtZW50
X3ByZWZpeCgpLCBqc29uX3JldHVybl9uYW1lKQotICAgICAgICAgICAgICAgIHZhcl9uYW1lID0g
Im91dF8lcyIgJSBqc29uX3JldHVybl9uYW1lCi0gICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3Vt
ZW50ID0gdHlwZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5fcGFzc19tb2RlbCgpLmdldF9vdXRw
dXRfdG9fcmF3X2V4cHJlc3Npb24oKSAlIHZhcl9uYW1lCi0gICAgICAgICAgICAgICAgaWYgcmV0
dXJuX3R5cGVfYmluZGluZy5nZXRfc2V0dGVyX3ZhbHVlX2V4cHJlc3Npb25fcGF0dGVybigpOgot
ICAgICAgICAgICAgICAgICAgICBzZXR0ZXJfYXJndW1lbnQgPSByZXR1cm5fdHlwZV9iaW5kaW5n
LmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCkgJSBzZXR0ZXJfYXJndW1lbnQK
KyAgICAgICAgICAgICAgICAgICAgY29kZSA9ICIgICAgJXMgb3V0XyVzO1xuIiAlICh0eXBlX21v
ZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X3JldHVybl92YXJfdHlwZSgp
LCBqc29uX3JldHVybl9uYW1lKQorICAgICAgICAgICAgICAgICAgICBwYXJhbSA9ICIsICVzb3V0
XyVzIiAlICh0eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X291
dHB1dF9hcmd1bWVudF9wcmVmaXgoKSwganNvbl9yZXR1cm5fbmFtZSkKKyAgICAgICAgICAgICAg
ICAgICAgdmFyX25hbWUgPSAib3V0XyVzIiAlIGpzb25fcmV0dXJuX25hbWUKKyAgICAgICAgICAg
ICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0gdHlwZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5f
cGFzc19tb2RlbCgpLmdldF9vdXRwdXRfdG9fcmF3X2V4cHJlc3Npb24oKSAlIHZhcl9uYW1lCisg
ICAgICAgICAgICAgICAgICAgIGlmIHJldHVybl90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1
ZV9leHByZXNzaW9uX3BhdHRlcm4oKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldHRlcl9h
cmd1bWVudCA9IHJldHVybl90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9u
X3BhdHRlcm4oKSAlIHNldHRlcl9hcmd1bWVudAogCi0gICAgICAgICAgICAgICAgY29vayA9ICIg
ICAgICAgICAgICByZXN1bHQtPnNldCVzKFwiJXNcIiwgJXMpO1xuIiAlIChzZXR0ZXJfdHlwZSwg
anNvbl9yZXR1cm5fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50KQorICAgICAgICAgICAg
ICAgICAgICBjb29rID0gIiAgICAgICAgICAgIHJlc3VsdC0+c2V0JXMoXCIlc1wiLCAlcyk7XG4i
ICUgKHNldHRlcl90eXBlLCBqc29uX3JldHVybl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2Fy
Z3VtZW50KQogCi0gICAgICAgICAgICAgICAgc2V0X2NvbmRpdGlvbl9wYXR0ZXJuID0gdHlwZV9t
b2RlbC5nZXRfY29tbWFuZF9yZXR1cm5fcGFzc19tb2RlbCgpLmdldF9zZXRfcmV0dXJuX2NvbmRp
dGlvbigpCi0gICAgICAgICAgICAgICAgaWYgc2V0X2NvbmRpdGlvbl9wYXR0ZXJuOgotICAgICAg
ICAgICAgICAgICAgICBjb29rID0gKCIgICAgICAgICAgICBpZiAoJXMpXG4gICAgIiAlIChzZXRf
Y29uZGl0aW9uX3BhdHRlcm4gJSB2YXJfbmFtZSkpICsgY29vawotICAgICAgICAgICAgICAgIGFu
bm90YXRlZF90eXBlID0gdHlwZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5fcGFzc19tb2RlbCgp
LmdldF9vdXRwdXRfcGFyYW1ldGVyX3R5cGUoKQorICAgICAgICAgICAgICAgICAgICBzZXRfY29u
ZGl0aW9uX3BhdHRlcm4gPSB0eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVs
KCkuZ2V0X3NldF9yZXR1cm5fY29uZGl0aW9uKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgc2V0
X2NvbmRpdGlvbl9wYXR0ZXJuOgorICAgICAgICAgICAgICAgICAgICAgICAgY29vayA9ICgiICAg
ICAgICAgICAgaWYgKCVzKVxuICAgICIgJSAoc2V0X2NvbmRpdGlvbl9wYXR0ZXJuICUgdmFyX25h
bWUpKSArIGNvb2sKKyAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGVkX3R5cGUgPSB0eXBlX21v
ZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X291dHB1dF9wYXJhbWV0ZXJf
dHlwZSgpCiAKLSAgICAgICAgICAgICAgICBwYXJhbV9uYW1lID0gIm91dF8lcyIgJSBqc29uX3Jl
dHVybl9uYW1lCi0gICAgICAgICAgICAgICAgaWYgb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAg
ICAgIHBhcmFtX25hbWUgPSAib3B0XyIgKyBwYXJhbV9uYW1lCisgICAgICAgICAgICAgICAgICAg
IHBhcmFtX25hbWUgPSAib3V0XyVzIiAlIGpzb25fcmV0dXJuX25hbWUKKyAgICAgICAgICAgICAg
ICAgICAgaWYgb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbV9uYW1lID0g
Im9wdF8iICsgcGFyYW1fbmFtZQogCi0gICAgICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRf
YWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIsICVzICVzIiAlIChhbm5vdGF0ZWRfdHlwZSwg
cGFyYW1fbmFtZSkpCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY29va19saXN0LmFwcGVuZChj
b29rKQorICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZh
Y2VfbGlzdC5hcHBlbmQoIiwgJXMgJXMiICUgKGFubm90YXRlZF90eXBlLCBwYXJhbV9uYW1lKSkK
KyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfY29va19saXN0LmFwcGVuZChjb29rKQogCi0g
ICAgICAgICAgICAgICAgbWV0aG9kX291dF9jb2RlICs9IGNvZGUKLSAgICAgICAgICAgICAgICBh
Z2VudF9jYWxsX3BhcmFtX2xpc3QuYXBwZW5kKHBhcmFtKQorICAgICAgICAgICAgICAgICAgICBt
ZXRob2Rfb3V0X2NvZGUgKz0gY29kZQorICAgICAgICAgICAgICAgICAgICBhZ2VudF9jYWxsX3Bh
cmFtX2xpc3QuYXBwZW5kKHBhcmFtKQogCi0gICAgICAgICAgICAgICAgYmFja2VuZF9qc19yZXBs
eV9wYXJhbV9saXN0LmFwcGVuZCgiXCIlc1wiIiAlIGpzb25fcmV0dXJuX25hbWUpCisgICAgICAg
ICAgICAgICAgcmVzcG9uc2VfY29va190ZXh0ID0gIiIuam9pbihyZXNwb25zZV9jb29rX2xpc3Qp
CiAKLSAgICAgICAgICAgIGpzX3JlcGx5X2xpc3QgPSAiWyVzXSIgJSAiLCAiLmpvaW4oYmFja2Vu
ZF9qc19yZXBseV9wYXJhbV9saXN0KQorICAgICAgICAgICAgICAgIGlmIGxlbihyZXNwb25zZV9j
b29rX3RleHQpICE9IDA6CisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2Nvb2tfdGV4dCA9
ICIgICAgICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIHtcbiIgKyByZXNwb25zZV9jb29rX3RleHQg
KyAiICAgICAgICB9IgogCi0gICAgICAgICAgICByZXNwb25zZV9jb29rX3RleHQgPSAiIi5qb2lu
KHJlc3BvbnNlX2Nvb2tfbGlzdCkKKyAgICAgICAgYmFja2VuZF9qc19yZXBseV9wYXJhbV9saXN0
ID0gW10KKyAgICAgICAgaWYgInJldHVybnMiIGluIGpzb25fY29tbWFuZDoKKyAgICAgICAgICAg
IGZvciBqc29uX3JldHVybiBpbiBqc29uX2NvbW1hbmRbInJldHVybnMiXToKKyAgICAgICAgICAg
ICAgICBqc29uX3JldHVybl9uYW1lID0ganNvbl9yZXR1cm5bIm5hbWUiXQorICAgICAgICAgICAg
ICAgIGJhY2tlbmRfanNfcmVwbHlfcGFyYW1fbGlzdC5hcHBlbmQoIlwiJXNcIiIgJSBqc29uX3Jl
dHVybl9uYW1lKQogCi0gICAgICAgICAgICBpZiBsZW4ocmVzcG9uc2VfY29va190ZXh0KSAhPSAw
OgotICAgICAgICAgICAgICAgIHJlc3BvbnNlX2Nvb2tfdGV4dCA9ICIgICAgICAgIGlmICghZXJy
b3IubGVuZ3RoKCkpIHtcbiIgKyByZXNwb25zZV9jb29rX3RleHQgKyAiICAgICAgICB9IgorICAg
ICAgICBqc19yZXBseV9saXN0ID0gIlslc10iICUgIiwgIi5qb2luKGJhY2tlbmRfanNfcmVwbHlf
cGFyYW1fbGlzdCkKIAogICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9tZXRob2RfaW1wbGVtZW50
YXRpb25fbGlzdC5hcHBlbmQoVGVtcGxhdGVzLmJhY2tlbmRfbWV0aG9kLnN1YnN0aXR1dGUoTm9u
ZSwKICAgICAgICAgICAgIGRvbWFpbk5hbWU9ZG9tYWluX25hbWUsIG1ldGhvZE5hbWU9anNvbl9j
b21tYW5kX25hbWUsCkBAIC0yOTIyLDYgKzI5OTYsNjQgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAg
ICAgICBHZW5lcmF0b3IuYmFja2VuZF9qc19kb21haW5faW5pdGlhbGl6ZXJfbGlzdC5hcHBlbmQo
Ikluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKFwiJXMuJXNcIiwgWyVzXSwgJXMpO1xu
IiAlIChkb21haW5fbmFtZSwganNvbl9jb21tYW5kX25hbWUsIGpzX3BhcmFtZXRlcnNfdGV4dCwg
anNfcmVwbHlfbGlzdCkpCiAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFj
ZV9saXN0LmFwcGVuZCgiKSA9IDA7XG4iKQogCisgICAgY2xhc3MgQ2FsbGJhY2tNZXRob2RTdHJ1
Y3RUZW1wbGF0ZToKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgYXBwZW5kX3By
b2xvZyhsaW5lX2xpc3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIEBzdGF0aWNtZXRo
b2QKKyAgICAgICAgZGVmIGFwcGVuZF9lcGlsb2cobGluZV9saXN0KToKKyAgICAgICAgICAgIHBh
c3MKKworICAgICAgICBjb250YWluZXJfbmFtZSA9ICJqc29uTWVzc2FnZSIKKworICAgICMgR2Vu
ZXJhdGVzIGNvbW1vbiBjb2RlIGZvciBldmVudCBzZW5kaW5nIGFuZCBjYWxsYmFjayByZXNwb25z
ZSBkYXRhIHNlbmRpbmcuCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZW5lcmF0ZV9zZW5k
X21ldGhvZChwYXJhbWV0ZXJzLCBldmVudF9uYW1lLCBkb21haW5fbmFtZSwgYWRfaG9jX3R5cGVf
d3JpdGVyLCBkZWNsX3BhcmFtZXRlcl9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXRob2Rfc3RydWN0X3RlbXBsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3JfbWV0aG9kX2xpc3QsIG1ldGhvZF90ZW1wbGF0ZSwgdGVtcGxhdGVfcGFyYW1zKToK
KyAgICAgICAgbWV0aG9kX2xpbmVfbGlzdCA9IFtdCisgICAgICAgIGlmIHBhcmFtZXRlcnM6Cisg
ICAgICAgICAgICBtZXRob2Rfc3RydWN0X3RlbXBsYXRlLmFwcGVuZF9wcm9sb2cobWV0aG9kX2xp
bmVfbGlzdCkKKyAgICAgICAgICAgIGZvciBqc29uX3BhcmFtZXRlciBpbiBwYXJhbWV0ZXJzOgor
ICAgICAgICAgICAgICAgIHBhcmFtZXRlcl9uYW1lID0ganNvbl9wYXJhbWV0ZXJbIm5hbWUiXQor
CisgICAgICAgICAgICAgICAgcGFyYW1fdHlwZV9iaW5kaW5nID0gR2VuZXJhdG9yLnJlc29sdmVf
dHlwZV9hbmRfZ2VuZXJhdGVfYWRfaG9jKGpzb25fcGFyYW1ldGVyLCBldmVudF9uYW1lLCBkb21h
aW5fbmFtZSwgYWRfaG9jX3R5cGVfd3JpdGVyLCAiIikKKworICAgICAgICAgICAgICAgIHJhd190
eXBlID0gcGFyYW1fdHlwZV9iaW5kaW5nLnJlZHVjZV90b19yYXdfdHlwZSgpCisgICAgICAgICAg
ICAgICAgcmF3X3R5cGVfYmluZGluZyA9IFJhd1R5cGVCaW5kaW5nKHJhd190eXBlKQorCisgICAg
ICAgICAgICAgICAgb3B0aW9uYWwgPSBib29sKGpzb25fcGFyYW1ldGVyLmdldCgib3B0aW9uYWwi
KSkKKworICAgICAgICAgICAgICAgIHNldHRlcl90eXBlID0gcmF3X3R5cGUuZ2V0X3NldHRlcl9u
YW1lKCkKKworICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSBwYXJhbV90eXBlX2JpbmRpbmcu
Z2V0X3R5cGVfbW9kZWwoKQorICAgICAgICAgICAgICAgIHJhd190eXBlX21vZGVsID0gcmF3X3R5
cGVfYmluZGluZy5nZXRfdHlwZV9tb2RlbCgpCisgICAgICAgICAgICAgICAgaWYgb3B0aW9uYWw6
CisgICAgICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSB0eXBlX21vZGVsLmdldF9vcHRpb25h
bCgpCisgICAgICAgICAgICAgICAgICAgIHJhd190eXBlX21vZGVsID0gcmF3X3R5cGVfbW9kZWwu
Z2V0X29wdGlvbmFsKCkKKworICAgICAgICAgICAgICAgIGFubm90YXRlZF90eXBlID0gdHlwZV9t
b2RlbC5nZXRfaW5wdXRfcGFyYW1fdHlwZV90ZXh0KCkKKyAgICAgICAgICAgICAgICBtb2RlX3R5
cGVfYmluZGluZyA9IHBhcmFtX3R5cGVfYmluZGluZworCisgICAgICAgICAgICAgICAgZGVjbF9w
YXJhbWV0ZXJfbGlzdC5hcHBlbmQoIiVzICVzIiAlIChhbm5vdGF0ZWRfdHlwZSwgcGFyYW1ldGVy
X25hbWUpKQorCisgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0gcmF3X3R5cGVfbW9k
ZWwuZ2V0X2V2ZW50X3NldHRlcl9leHByZXNzaW9uX3BhdHRlcm4oKSAlIHBhcmFtZXRlcl9uYW1l
CisgICAgICAgICAgICAgICAgaWYgbW9kZV90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9l
eHByZXNzaW9uX3BhdHRlcm4oKToKKyAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50
ID0gbW9kZV90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4o
KSAlIHNldHRlcl9hcmd1bWVudAorCisgICAgICAgICAgICAgICAgc2V0dGVyX2NvZGUgPSAiICAg
ICVzLT5zZXQlcyhcIiVzXCIsICVzKTtcbiIgJSAobWV0aG9kX3N0cnVjdF90ZW1wbGF0ZS5jb250
YWluZXJfbmFtZSwgc2V0dGVyX3R5cGUsIHBhcmFtZXRlcl9uYW1lLCBzZXR0ZXJfYXJndW1lbnQp
CisgICAgICAgICAgICAgICAgaWYgb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgICAgIHNldHRl
cl9jb2RlID0gKCIgICAgaWYgKCVzKVxuICAgICIgJSBwYXJhbWV0ZXJfbmFtZSkgKyBzZXR0ZXJf
Y29kZQorICAgICAgICAgICAgICAgIG1ldGhvZF9saW5lX2xpc3QuYXBwZW5kKHNldHRlcl9jb2Rl
KQorCisgICAgICAgICAgICBtZXRob2Rfc3RydWN0X3RlbXBsYXRlLmFwcGVuZF9lcGlsb2cobWV0
aG9kX2xpbmVfbGlzdCkKKworICAgICAgICBnZW5lcmF0b3JfbWV0aG9kX2xpc3QuYXBwZW5kKG1l
dGhvZF90ZW1wbGF0ZS5zdWJzdGl0dXRlKE5vbmUsCisgICAgICAgICAgICBkb21haW5OYW1lPWRv
bWFpbl9uYW1lLAorICAgICAgICAgICAgcGFyYW1ldGVycz0iLCAiLmpvaW4oZGVjbF9wYXJhbWV0
ZXJfbGlzdCksCisgICAgICAgICAgICBjb2RlPSIiLmpvaW4obWV0aG9kX2xpbmVfbGlzdCksICoq
dGVtcGxhdGVfcGFyYW1zKSkKKwogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgcmVzb2x2ZV90
eXBlX2FuZF9nZW5lcmF0ZV9hZF9ob2MoanNvbl9wYXJhbSwgbWV0aG9kX25hbWUsIGRvbWFpbl9u
YW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsIGNvbnRhaW5lcl9yZWxhdGl2ZV9uYW1lX3ByZWZpeF9w
YXJhbSk6CiAgICAgICAgIHBhcmFtX25hbWUgPSBqc29uX3BhcmFtWyJuYW1lIl0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162054</attachid>
            <date>2012-09-04 09:41:46 -0700</date>
            <delta_ts>2012-09-04 10:48:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95649-20120904204128.patch</filename>
            <type>text/plain</type>
            <size>22452</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNkZTZlMmVhMjljMGZm
MWZhMTNhMWVlYzk3ZjA4MjBlMmIyZGJkZi4uZjYxMTRmZGIyZjQzZGJjMmM5Nzk3Mjc2MTEzMzIx
OGZkM2IwYTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTAxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzdXBwb3J0IGFzeW5jaHJvbm91cyBjb21tYW5k
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTY0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEdlbmVyYXRvciBpcyBleHRlbmRlZCB0byBnZW5lcmF0ZSBjYWxsYmFjayBvYmplY3Qg
Zm9yIGVhY2ggYXN5bmNocm9ub3VzIGNvbW1hbmQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKFdyaXRlci5hcHBlbmRfbXVsdGlsaW5l
KToKKyAgICAgICAgKFdyaXRlcik6CisgICAgICAgIChXcml0ZXIuZ2V0X2luZGVudCk6CisgICAg
ICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkNsYXNzQmluZGluZy5y
ZXNvbHZlX2lubmVyLlJlc29sdmVEYXRhKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVySW1wbCk6CisgICAgICAgIChDYWxsYmFja0Jhc2UpOgorICAgICAgICAoR2VuZXJhdG9y
LnByb2Nlc3NfZXZlbnQpOgorICAgICAgICAoR2VuZXJhdG9yKToKKyAgICAgICAgKEdlbmVyYXRv
ci5FdmVudE1ldGhvZFN0cnVjdFRlbXBsYXRlKToKKyAgICAgICAgKEdlbmVyYXRvci5FdmVudE1l
dGhvZFN0cnVjdFRlbXBsYXRlLmFwcGVuZF9wcm9sb2cpOgorICAgICAgICAoR2VuZXJhdG9yLkV2
ZW50TWV0aG9kU3RydWN0VGVtcGxhdGUuYXBwZW5kX2VwaWxvZyk6CisgICAgICAgIChHZW5lcmF0
b3IucHJvY2Vzc19jb21tYW5kKToKKyAgICAgICAgKEdlbmVyYXRvci5DYWxsYmFja01ldGhvZFN0
cnVjdFRlbXBsYXRlKToKKyAgICAgICAgKEdlbmVyYXRvci5DYWxsYmFja01ldGhvZFN0cnVjdFRl
bXBsYXRlLmFwcGVuZF9wcm9sb2cpOgorICAgICAgICAoR2VuZXJhdG9yLkNhbGxiYWNrTWV0aG9k
U3RydWN0VGVtcGxhdGUuYXBwZW5kX2VwaWxvZyk6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJh
dGVfc2VuZF9tZXRob2QpOgorCiAyMDEyLTA4LTI4ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vr
b2xzYWtAZ21haWwuY29tPgogCiAgICAgICAgIENyYXNoIGluIEVkaXRpbmdTdHlsZTo6bWVyZ2VT
dHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5weQppbmRleCA4NTIyMjUzOGI0ZDNkN2U5NmZkM2NlOWUzYmQwYzkxYWYzMTk4Yzc4Li45
ZWQ3NDAyNWNlM2Y3ZWE3YmQzNTQzZGVhZWI1ODZiZmU4NjAxMmM2IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtNzcwLDYg
Kzc3MCw5IEBAIGNsYXNzIFdyaXRlcjoKICAgICAgICAgICAgIGlmIHA6CiAgICAgICAgICAgICAg
ICAgc2VsZi5uZXdsaW5lKHApCiAKKyAgICBkZWYgZ2V0X2luZGVudChzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuaW5kZW50CisKICAgICBkZWYgZ2V0X2luZGVudGVkKHNlbGYsIGFkZGl0aW9u
YWxfaW5kZW50KToKICAgICAgICAgcmV0dXJuIFdyaXRlcihzZWxmLm91dHB1dCwgc2VsZi5pbmRl
bnQgKyBhZGRpdGlvbmFsX2luZGVudCkKIApAQCAtMTExMCw3ICsxMTEzLDcgQEAgY2xhc3MgVHlw
ZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgUmVzb2x2ZURhdGE6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbl9wcm9wZXJ0aWVzID0gbWFpbgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX3Byb3BlcnRpZXMgPSBvcHRpb25hbAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190eXBlcyA9IGFkX2hvY190eXBlX2NvbnRl
eHQuYWRfaG9jX3R5cGVfbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190
eXBlcyA9IGFkX2hvY190eXBlX2xpc3QKIAogICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnJl
c29sdmVfZGF0YV8gPSBSZXNvbHZlRGF0YQogCkBAIC0xNzgzLDEwICsxNzg2LDIwIEBAICR7cmVz
cG9uc2VDb29rfQogCiAgICAgZnJvbnRlbmRfbWV0aG9kID0gc3RyaW5nLlRlbXBsYXRlKCIiInZv
aWQgSW5zcGVjdG9yRnJvbnRlbmQ6OiRkb21haW5OYW1lOjokZXZlbnROYW1lKCRwYXJhbWV0ZXJz
KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+ICR7ZXZlbnROYW1lfU1lc3NhZ2UgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICR7ZXZlbnROYW1lfU1lc3NhZ2UtPnNldFN0
cmluZygibWV0aG9kIiwgIiRkb21haW5OYW1lLiRldmVudE5hbWUiKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Cisg
ICAganNvbk1lc3NhZ2UtPnNldFN0cmluZygibWV0aG9kIiwgIiRkb21haW5OYW1lLiRldmVudE5h
bWUiKTsKICRjb2RlICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAg
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZCgke2V2ZW50
TmFtZX1NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmlu
ZygpKTsKK30KKyIiIikKKworICAgIGNhbGxiYWNrX21ldGhvZCA9IHN0cmluZy5UZW1wbGF0ZSgK
KyIiIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjokYWdlbnROYW1lOjokY2FsbGJhY2tOYW1l
OjokY2FsbGJhY2tOYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBs
PiBiYWNrZW5kSW1wbCwgaW50IGlkKSA6IENhbGxiYWNrQmFzZShiYWNrZW5kSW1wbCwgaWQpIHt9
CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OiRhZ2VudE5hbWU6OiRjYWxsYmFj
a05hbWU6OnNlbmRTdWNjZXNzKCRwYXJhbWV0ZXJzKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyRjb2RlICAg
IHNlbmRJZkFjdGl2ZShqc29uTWVzc2FnZSwgRXJyb3JTdHJpbmcoKSk7CiB9CiAiIiIpCiAKQEAg
LTE4NDUsMTEgKzE4NTgsMzAgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJJbXBsOworCiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjogcHVibGljIFJl
ZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKTsKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogCisgICAgY2xhc3MgQ2FsbGJhY2tC
YXNlOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIENhbGxiYWNrQmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1w
bD4gYmFja2VuZEltcGwsIGludCBpZCk7CisgICAgICAgIHZvaWQgc2VuZEZhaWx1cmUoRXJyb3JT
dHJpbmcpOworICAgICAgICBib29sIGlzQWN0aXZlKCk7CisgICAgICAgIHZvaWQgZGlzYWJsZSgp
IHsgbV9hbHJlYWR5U2VudCA9IHRydWU7IH0KKyAgICAgICAgdmlydHVhbCB+Q2FsbGJhY2tCYXNl
KCk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2VuZElmQWN0aXZlKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJ0aWFsTWVzc2FnZSwgRXJyb3JTdHJpbmcgaW52b2NhdGlv
bkVycm9yKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlckltcGw+IG1fYmFja2VuZEltcGw7CisgICAgICAgIGludCBtX2lkOworICAgICAg
ICBib29sIG1fYWxyZWFkeVNlbnQ7CisgICAgfTsKKwogJGFnZW50SW50ZXJmYWNlcwogJHZpcnR1
YWxTZXR0ZXJzCiAKQEAgLTE5MjAsNiArMTk1Miw5IEBAICRjb25zdHJ1Y3RvckluaXQKICAgICB2
aXJ0dWFsIHZvaWQgcmVwb3J0UHJvdG9jb2xFcnJvcihjb25zdCBsb25nKiBjb25zdCBjYWxsSWQs
IENvbW1vbkVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IGRhdGEpIGNvbnN0OwogICAgIHVzaW5nIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yOwogCisgICAgdm9pZCBzZW5kUmVzcG9uc2Uo
bG9uZyBjYWxsSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQsIEVycm9yU3Ry
aW5nIGludm9jYXRpb25FcnJvcik7CisgICAgYm9vbCBpc0FjdGl2ZSgpIHsgcmV0dXJuIG1faW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsOyB9CisKICRzZXR0ZXJzCiBwcml2YXRlOgogJG1ldGhvZERl
Y2xhcmF0aW9ucwpAQCAtMjAxNyw2ICsyMDUyLDExIEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXJJbXBsOjpzZW5kUmVzcG9uc2UobG9uZyBjYWxsSWQsIFBhc3NSZWZQdHI8SW5zcGVj
CiAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW52YWxpZFBhcmFtcywgZXJy
b3JNZXNzYWdlLCBwcm90b2NvbEVycm9ycyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAg
c2VuZFJlc3BvbnNlKGNhbGxJZCwgcmVzdWx0LCBpbnZvY2F0aW9uRXJyb3IpOworfQorCit2b2lk
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1wbDo6c2VuZFJlc3BvbnNlKGxvbmcgY2FsbElk
LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0LCBFcnJvclN0cmluZyBpbnZvY2F0
aW9uRXJyb3IpCit7CiAgICAgaWYgKGludm9jYXRpb25FcnJvci5sZW5ndGgoKSkgewogICAgICAg
ICByZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIFNlcnZlckVycm9yLCBpbnZvY2F0aW9uRXJy
b3IpOwogICAgICAgICByZXR1cm47CkBAIC0yMTU0LDYgKzIxOTQsMzAgQEAgYm9vbCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0Q29tbWFuZE5hbWUoY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBTdHJpbmcqIHIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJJbXBsPiBiYWNrZW5kSW1wbCwgaW50IGlkKQorICAgIDogbV9iYWNrZW5k
SW1wbChiYWNrZW5kSW1wbCksIG1faWQoaWQpLCBtX2FscmVhZHlTZW50KGZhbHNlKSB7fQorCitJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjp+Q2FsbGJhY2tCYXNlKCkg
e30KKwordm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpzZW5k
RmFpbHVyZShFcnJvclN0cmluZyBlcnJvcikKK3sKKyAgICBBU1NFUlQoZXJyb3IubGVuZ3RoKCkp
OworICAgIHNlbmRJZkFjdGl2ZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4oKSwgZXJyb3Ip
OworfQorCitib29sIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6Omlz
QWN0aXZlKCkKK3sKKyAgICByZXR1cm4gIW1fYWxyZWFkeVNlbnQgJiYgbV9iYWNrZW5kSW1wbC0+
aXNBY3RpdmUoKTsKK30KKwordm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJh
Y2tCYXNlOjpzZW5kSWZBY3RpdmUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcnRpYWxN
ZXNzYWdlLCBFcnJvclN0cmluZyBpbnZvY2F0aW9uRXJyb3IpCit7CisgICAgaWYgKG1fYWxyZWFk
eVNlbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2JhY2tlbmRJbXBsLT5zZW5kUmVzcG9uc2Uo
bV9pZCwgcGFydGlhbE1lc3NhZ2UsIGludm9jYXRpb25FcnJvcik7CisgICAgbV9hbHJlYWR5U2Vu
dCA9IHRydWU7Cit9CisKIENPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OmtNZXRob2ROYW1lc0VudW1TaXplKSA9PSBXVEZfQVJSQVlfTEVO
R1RIKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjb21tYW5kTmFtZXMpLCBjb21tYW5kX25h
bWVfYXJyYXlfcHJvYmxlbSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKQEAgLTI3MjcsNTkg
KzI3OTEsNDEgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgIGRlZiBwcm9jZXNzX2V2ZW50KGpzb25f
ZXZlbnQsIGRvbWFpbl9uYW1lLCBmcm9udGVuZF9tZXRob2RfZGVjbGFyYXRpb25fbGluZXMpOgog
ICAgICAgICBldmVudF9uYW1lID0ganNvbl9ldmVudFsibmFtZSJdCiAKLSAgICAgICAgcGFyYW1l
dGVyX2xpc3QgPSBbXQotICAgICAgICBtZXRob2RfbGluZV9saXN0ID0gW10KLSAgICAgICAgYmFj
a2VuZF9qc19ldmVudF9wYXJhbV9saXN0ID0gW10KICAgICAgICAgYWRfaG9jX3R5cGVfb3V0cHV0
ID0gW10KICAgICAgICAgZnJvbnRlbmRfbWV0aG9kX2RlY2xhcmF0aW9uX2xpbmVzLmFwcGVuZChh
ZF9ob2NfdHlwZV9vdXRwdXQpCiAgICAgICAgIGFkX2hvY190eXBlX3dyaXRlciA9IFdyaXRlcihh
ZF9ob2NfdHlwZV9vdXRwdXQsICIgICAgICAgICIpCi0gICAgICAgIGlmICJwYXJhbWV0ZXJzIiBp
biBqc29uX2V2ZW50OgotICAgICAgICAgICAgbWV0aG9kX2xpbmVfbGlzdC5hcHBlbmQoIiAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpO1xuIikKLSAgICAgICAgICAgIGZvciBqc29uX3BhcmFtZXRlciBpbiBqc29uX2V2ZW50
WyJwYXJhbWV0ZXJzIl06Ci0gICAgICAgICAgICAgICAgcGFyYW1ldGVyX25hbWUgPSBqc29uX3Bh
cmFtZXRlclsibmFtZSJdCi0KLSAgICAgICAgICAgICAgICBwYXJhbV90eXBlX2JpbmRpbmcgPSBH
ZW5lcmF0b3IucmVzb2x2ZV90eXBlX2FuZF9nZW5lcmF0ZV9hZF9ob2MoanNvbl9wYXJhbWV0ZXIs
IGV2ZW50X25hbWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsICIiKQotCi0gICAg
ICAgICAgICAgICAgcmF3X3R5cGUgPSBwYXJhbV90eXBlX2JpbmRpbmcucmVkdWNlX3RvX3Jhd190
eXBlKCkKLSAgICAgICAgICAgICAgICByYXdfdHlwZV9iaW5kaW5nID0gUmF3VHlwZUJpbmRpbmco
cmF3X3R5cGUpCi0KLSAgICAgICAgICAgICAgICBvcHRpb25hbCA9IGJvb2woanNvbl9wYXJhbWV0
ZXIuZ2V0KCJvcHRpb25hbCIpKQotCi0gICAgICAgICAgICAgICAgc2V0dGVyX3R5cGUgPSByYXdf
dHlwZS5nZXRfc2V0dGVyX25hbWUoKQotCi0gICAgICAgICAgICAgICAgdHlwZV9tb2RlbCA9IHBh
cmFtX3R5cGVfYmluZGluZy5nZXRfdHlwZV9tb2RlbCgpCi0gICAgICAgICAgICAgICAgcmF3X3R5
cGVfbW9kZWwgPSByYXdfdHlwZV9iaW5kaW5nLmdldF90eXBlX21vZGVsKCkKLSAgICAgICAgICAg
ICAgICBpZiBvcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgdHlwZV9tb2RlbCA9IHR5cGVf
bW9kZWwuZ2V0X29wdGlvbmFsKCkKLSAgICAgICAgICAgICAgICAgICAgcmF3X3R5cGVfbW9kZWwg
PSByYXdfdHlwZV9tb2RlbC5nZXRfb3B0aW9uYWwoKQotCi0gICAgICAgICAgICAgICAgYW5ub3Rh
dGVkX3R5cGUgPSB0eXBlX21vZGVsLmdldF9pbnB1dF9wYXJhbV90eXBlX3RleHQoKQotICAgICAg
ICAgICAgICAgIG1vZGVfdHlwZV9iaW5kaW5nID0gcGFyYW1fdHlwZV9iaW5kaW5nCiAKLSAgICAg
ICAgICAgICAgICBwYXJhbWV0ZXJfbGlzdC5hcHBlbmQoIiVzICVzIiAlIChhbm5vdGF0ZWRfdHlw
ZSwgcGFyYW1ldGVyX25hbWUpKQorICAgICAgICBkZWNsX3BhcmFtZXRlcl9saXN0ID0gW10KIAot
ICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1bWVudCA9IHJhd190eXBlX21vZGVsLmdldF9ldmVu
dF9zZXR0ZXJfZXhwcmVzc2lvbl9wYXR0ZXJuKCkgJSBwYXJhbWV0ZXJfbmFtZQotICAgICAgICAg
ICAgICAgIGlmIG1vZGVfdHlwZV9iaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9w
YXR0ZXJuKCk6Ci0gICAgICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1bWVudCA9IG1vZGVfdHlw
ZV9iaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCkgJSBzZXR0ZXJf
YXJndW1lbnQKLQotICAgICAgICAgICAgICAgIHNldHRlcl9jb2RlID0gIiAgICBwYXJhbXNPYmpl
Y3QtPnNldCVzKFwiJXNcIiwgJXMpO1xuIiAlIChzZXR0ZXJfdHlwZSwgcGFyYW1ldGVyX25hbWUs
IHNldHRlcl9hcmd1bWVudCkKLSAgICAgICAgICAgICAgICBpZiBvcHRpb25hbDoKLSAgICAgICAg
ICAgICAgICAgICAgc2V0dGVyX2NvZGUgPSAoIiAgICBpZiAoJXMpXG4gICAgIiAlIHBhcmFtZXRl
cl9uYW1lKSArIHNldHRlcl9jb2RlCi0gICAgICAgICAgICAgICAgbWV0aG9kX2xpbmVfbGlzdC5h
cHBlbmQoc2V0dGVyX2NvZGUpCisgICAgICAgIGpzb25fcGFyYW1ldGVycyA9IGpzb25fZXZlbnQu
Z2V0KCJwYXJhbWV0ZXJzIikKKyAgICAgICAgR2VuZXJhdG9yLmdlbmVyYXRlX3NlbmRfbWV0aG9k
KGpzb25fcGFyYW1ldGVycywgZXZlbnRfbmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dy
aXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xfcGFyYW1l
dGVyX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
b3IuRXZlbnRNZXRob2RTdHJ1Y3RUZW1wbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRvci5mcm9udGVuZF9tZXRob2RfbGlzdCwgVGVtcGxhdGVzLmZy
b250ZW5kX21ldGhvZCwgeyJldmVudE5hbWUiOiBldmVudF9uYW1lfSkKIAorICAgICAgICBiYWNr
ZW5kX2pzX2V2ZW50X3BhcmFtX2xpc3QgPSBbXQorICAgICAgICBpZiBqc29uX3BhcmFtZXRlcnM6
CisgICAgICAgICAgICBmb3IgcGFyYW1ldGVyIGluIGpzb25fcGFyYW1ldGVyczoKKyAgICAgICAg
ICAgICAgICBwYXJhbWV0ZXJfbmFtZSA9IHBhcmFtZXRlclsibmFtZSJdCiAgICAgICAgICAgICAg
ICAgYmFja2VuZF9qc19ldmVudF9wYXJhbV9saXN0LmFwcGVuZCgiXCIlc1wiIiAlIHBhcmFtZXRl
cl9uYW1lKQotICAgICAgICAgICAgbWV0aG9kX2xpbmVfbGlzdC5hcHBlbmQoIiAgICAlc01lc3Nh
Z2UtPnNldE9iamVjdChcInBhcmFtc1wiLCBwYXJhbXNPYmplY3QpO1xuIiAlIGV2ZW50X25hbWUp
Ci0gICAgICAgIGZyb250ZW5kX21ldGhvZF9kZWNsYXJhdGlvbl9saW5lcy5hcHBlbmQoCi0gICAg
ICAgICAgICAiICAgICAgICB2b2lkICVzKCVzKTtcbiIgJSAoZXZlbnRfbmFtZSwgIiwgIi5qb2lu
KHBhcmFtZXRlcl9saXN0KSkpCiAKLSAgICAgICAgR2VuZXJhdG9yLmZyb250ZW5kX21ldGhvZF9s
aXN0LmFwcGVuZChUZW1wbGF0ZXMuZnJvbnRlbmRfbWV0aG9kLnN1YnN0aXR1dGUoTm9uZSwKLSAg
ICAgICAgICAgIGRvbWFpbk5hbWU9ZG9tYWluX25hbWUsIGV2ZW50TmFtZT1ldmVudF9uYW1lLAot
ICAgICAgICAgICAgcGFyYW1ldGVycz0iLCAiLmpvaW4ocGFyYW1ldGVyX2xpc3QpLAotICAgICAg
ICAgICAgY29kZT0iIi5qb2luKG1ldGhvZF9saW5lX2xpc3QpKSkKKyAgICAgICAgZnJvbnRlbmRf
bWV0aG9kX2RlY2xhcmF0aW9uX2xpbmVzLmFwcGVuZCgKKyAgICAgICAgICAgICIgICAgICAgIHZv
aWQgJXMoJXMpO1xuIiAlIChldmVudF9uYW1lLCAiLCAiLmpvaW4oZGVjbF9wYXJhbWV0ZXJfbGlz
dCkpKQogCiAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2pzX2RvbWFpbl9pbml0aWFsaXplcl9s
aXN0LmFwcGVuZCgiSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckV2ZW50KFwiJXMuJXNcIiwgWyVz
XSk7XG4iICUgKAogICAgICAgICAgICAgZG9tYWluX25hbWUsIGV2ZW50X25hbWUsICIsICIuam9p
bihiYWNrZW5kX2pzX2V2ZW50X3BhcmFtX2xpc3QpKSkKIAorICAgIGNsYXNzIEV2ZW50TWV0aG9k
U3RydWN0VGVtcGxhdGU6CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGFwcGVu
ZF9wcm9sb2cobGluZV9saXN0KToKKyAgICAgICAgICAgIGxpbmVfbGlzdC5hcHBlbmQoIiAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpO1xuIikKKworICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBhcHBlbmRf
ZXBpbG9nKGxpbmVfbGlzdCk6CisgICAgICAgICAgICBsaW5lX2xpc3QuYXBwZW5kKCIgICAganNv
bk1lc3NhZ2UtPnNldE9iamVjdChcInBhcmFtc1wiLCBwYXJhbXNPYmplY3QpO1xuIikKKworICAg
ICAgICBjb250YWluZXJfbmFtZSA9ICJwYXJhbXNPYmplY3QiCisKICAgICBAc3RhdGljbWV0aG9k
CiAgICAgZGVmIHByb2Nlc3NfY29tbWFuZChqc29uX2NvbW1hbmQsIGRvbWFpbl9uYW1lLCBhZ2Vu
dF9maWVsZF9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSk6CiAgICAgICAgIGpzb25fY29tbWFu
ZF9uYW1lID0ganNvbl9jb21tYW5kWyJuYW1lIl0KQEAgLTI4MDAsNyArMjg0Niw2IEBAIGNsYXNz
IEdlbmVyYXRvcjoKICAgICAgICAgbWV0aG9kX291dF9jb2RlID0gIiIKICAgICAgICAgYWdlbnRf
Y2FsbF9wYXJhbV9saXN0ID0gW10KICAgICAgICAgcmVzcG9uc2VfY29va19saXN0ID0gW10KLSAg
ICAgICAgYmFja2VuZF9qc19yZXBseV9wYXJhbV9saXN0ID0gW10KICAgICAgICAgcmVxdWVzdF9t
ZXNzYWdlX3BhcmFtID0gIiIKICAgICAgICAganNfcGFyYW1ldGVyc190ZXh0ID0gIiIKICAgICAg
ICAgaWYgInBhcmFtZXRlcnMiIGluIGpzb25fY29tbWFuZDoKQEAgLTI4NTUsNTggKzI5MDAsODkg
QEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAganNfcGFyYW1ldGVyc190ZXh0ID0gIiwg
Ii5qb2luKGpzX3BhcmFtX2xpc3QpCiAKICAgICAgICAgcmVzcG9uc2VfY29va190ZXh0ID0gIiIK
LSAgICAgICAganNfcmVwbHlfbGlzdCA9ICJbXSIKLSAgICAgICAgaWYgInJldHVybnMiIGluIGpz
b25fY29tbWFuZDoKLSAgICAgICAgICAgIG1ldGhvZF9vdXRfY29kZSArPSAiXG4iCi0gICAgICAg
ICAgICBmb3IganNvbl9yZXR1cm4gaW4ganNvbl9jb21tYW5kWyJyZXR1cm5zIl06CisgICAgICAg
IGlmIGpzb25fY29tbWFuZC5nZXQoImFzeW5jIikgPT0gVHJ1ZToKKyAgICAgICAgICAgIGNhbGxi
YWNrX25hbWUgPSBDYXBpdGFsaXplci5sb3dlcl9jYW1lbF9jYXNlX3RvX3VwcGVyKGpzb25fY29t
bWFuZF9uYW1lKSArICJDYWxsYmFjayIKKworICAgICAgICAgICAgY2FsbGJhY2tfb3V0cHV0ID0g
W10KKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlciA9IFdyaXRlcihjYWxsYmFja19vdXRwdXQs
IGFkX2hvY190eXBlX3dyaXRlci5nZXRfaW5kZW50KCkpCisKKyAgICAgICAgICAgIGRlY2xfcGFy
YW1ldGVyX2xpc3QgPSBbXQorICAgICAgICAgICAgR2VuZXJhdG9yLmdlbmVyYXRlX3NlbmRfbWV0
aG9kKGpzb25fY29tbWFuZC5nZXQoInJldHVybnMiKSwganNvbl9jb21tYW5kX25hbWUsIGRvbWFp
bl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWNsX3BhcmFtZXRlcl9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2VuZXJhdG9yLkNhbGxiYWNrTWV0aG9kU3RydWN0VGVtcGxhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9t
ZXRob2RfaW1wbGVtZW50YXRpb25fbGlzdCwgVGVtcGxhdGVzLmNhbGxiYWNrX21ldGhvZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiY2FsbGJhY2tOYW1lIjogY2Fs
bGJhY2tfbmFtZSwgImFnZW50TmFtZSI6IGFnZW50X2ludGVyZmFjZV9uYW1lfSkKKworICAgICAg
ICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoImNsYXNzICIgKyBjYWxsYmFja19uYW1lICsg
IiA6IHB1YmxpYyBDYWxsYmFja0Jhc2Uge1xuIikKKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRl
ci5uZXdsaW5lKCJwdWJsaWM6XG4iKQorICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xp
bmUoIiAgICAiICsgY2FsbGJhY2tfbmFtZSArICIoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlckltcGw+LCBpbnQgaWQpO1xuIikKKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRl
ci5uZXdsaW5lKCIgICAgdm9pZCBzZW5kU3VjY2VzcygiICsgIiwgIi5qb2luKGRlY2xfcGFyYW1l
dGVyX2xpc3QpICsgIik7XG4iKQorICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUo
In07XG4iKQorCisgICAgICAgICAgICBhZF9ob2NfdHlwZV9vdXRwdXQuYXBwZW5kKGNhbGxiYWNr
X291dHB1dCkKKworICAgICAgICAgICAgbWV0aG9kX291dF9jb2RlICs9ICIgICAgUmVmUHRyPCIg
KyBhZ2VudF9pbnRlcmZhY2VfbmFtZSArICI6OiIgKyBjYWxsYmFja19uYW1lICsgIj4gY2FsbGJh
Y2sgPSBhZG9wdFJlZihuZXcgIiArIGFnZW50X2ludGVyZmFjZV9uYW1lICsgIjo6IiArIGNhbGxi
YWNrX25hbWUgKyAiKHRoaXMsIGNhbGxJZCkpO1xuIgorICAgICAgICAgICAgYWdlbnRfY2FsbF9w
YXJhbV9saXN0LmFwcGVuZCgiLCBjYWxsYmFjayIpCisgICAgICAgICAgICByZXNwb25zZV9jb29r
X3RleHQgKz0gIiAgICAgICAgaWYgKGVycm9yLmxlbmd0aCgpID09IDApIFxuIgorICAgICAgICAg
ICAgcmVzcG9uc2VfY29va190ZXh0ICs9ICIgICAgICAgICAgICByZXR1cm47XG4iCisgICAgICAg
ICAgICByZXNwb25zZV9jb29rX3RleHQgKz0gIiAgICAgICAgY2FsbGJhY2stPmRpc2FibGUoKTtc
biIKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFw
cGVuZCgiLCBjb25zdCBSZWZQdHI8JXM+JiBjYWxsYmFjayIgJSBjYWxsYmFja19uYW1lKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgaWYgInJldHVybnMiIGluIGpzb25fY29tbWFuZDoKKyAg
ICAgICAgICAgICAgICBtZXRob2Rfb3V0X2NvZGUgKz0gIlxuIgorICAgICAgICAgICAgICAgIGZv
ciBqc29uX3JldHVybiBpbiBqc29uX2NvbW1hbmRbInJldHVybnMiXToKIAotICAgICAgICAgICAg
ICAgIGpzb25fcmV0dXJuX25hbWUgPSBqc29uX3JldHVyblsibmFtZSJdCisgICAgICAgICAgICAg
ICAgICAgIGpzb25fcmV0dXJuX25hbWUgPSBqc29uX3JldHVyblsibmFtZSJdCiAKLSAgICAgICAg
ICAgICAgICBvcHRpb25hbCA9IGJvb2woanNvbl9yZXR1cm4uZ2V0KCJvcHRpb25hbCIpKQorICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCA9IGJvb2woanNvbl9yZXR1cm4uZ2V0KCJvcHRpb25h
bCIpKQogCi0gICAgICAgICAgICAgICAgcmV0dXJuX3R5cGVfYmluZGluZyA9IEdlbmVyYXRvci5y
ZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRlX2FkX2hvYyhqc29uX3JldHVybiwganNvbl9jb21tYW5k
X25hbWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsIGFnZW50X2ludGVyZmFjZV9u
YW1lICsgIjo6IikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3R5cGVfYmluZGluZyA9IEdl
bmVyYXRvci5yZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRlX2FkX2hvYyhqc29uX3JldHVybiwganNv
bl9jb21tYW5kX25hbWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsIGFnZW50X2lu
dGVyZmFjZV9uYW1lICsgIjo6IikKIAotICAgICAgICAgICAgICAgIHJhd190eXBlID0gcmV0dXJu
X3R5cGVfYmluZGluZy5yZWR1Y2VfdG9fcmF3X3R5cGUoKQotICAgICAgICAgICAgICAgIHNldHRl
cl90eXBlID0gcmF3X3R5cGUuZ2V0X3NldHRlcl9uYW1lKCkKLSAgICAgICAgICAgICAgICBpbml0
aWFsaXplciA9IHJhd190eXBlLmdldF9jX2luaXRpYWxpemVyKCkKKyAgICAgICAgICAgICAgICAg
ICAgcmF3X3R5cGUgPSByZXR1cm5fdHlwZV9iaW5kaW5nLnJlZHVjZV90b19yYXdfdHlwZSgpCisg
ICAgICAgICAgICAgICAgICAgIHNldHRlcl90eXBlID0gcmF3X3R5cGUuZ2V0X3NldHRlcl9uYW1l
KCkKKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXIgPSByYXdfdHlwZS5nZXRfY19pbml0
aWFsaXplcigpCiAKLSAgICAgICAgICAgICAgICB0eXBlX21vZGVsID0gcmV0dXJuX3R5cGVfYmlu
ZGluZy5nZXRfdHlwZV9tb2RlbCgpCi0gICAgICAgICAgICAgICAgaWYgb3B0aW9uYWw6Ci0gICAg
ICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSB0eXBlX21vZGVsLmdldF9vcHRpb25hbCgpCisg
ICAgICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSByZXR1cm5fdHlwZV9iaW5kaW5nLmdldF90
eXBlX21vZGVsKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgb3B0aW9uYWw6CisgICAgICAgICAg
ICAgICAgICAgICAgICB0eXBlX21vZGVsID0gdHlwZV9tb2RlbC5nZXRfb3B0aW9uYWwoKQogCi0g
ICAgICAgICAgICAgICAgY29kZSA9ICIgICAgJXMgb3V0XyVzO1xuIiAlICh0eXBlX21vZGVsLmdl
dF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X3JldHVybl92YXJfdHlwZSgpLCBqc29u
X3JldHVybl9uYW1lKQotICAgICAgICAgICAgICAgIHBhcmFtID0gIiwgJXNvdXRfJXMiICUgKHR5
cGVfbW9kZWwuZ2V0X2NvbW1hbmRfcmV0dXJuX3Bhc3NfbW9kZWwoKS5nZXRfb3V0cHV0X2FyZ3Vt
ZW50X3ByZWZpeCgpLCBqc29uX3JldHVybl9uYW1lKQotICAgICAgICAgICAgICAgIHZhcl9uYW1l
ID0gIm91dF8lcyIgJSBqc29uX3JldHVybl9uYW1lCi0gICAgICAgICAgICAgICAgc2V0dGVyX2Fy
Z3VtZW50ID0gdHlwZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5fcGFzc19tb2RlbCgpLmdldF9v
dXRwdXRfdG9fcmF3X2V4cHJlc3Npb24oKSAlIHZhcl9uYW1lCi0gICAgICAgICAgICAgICAgaWYg
cmV0dXJuX3R5cGVfYmluZGluZy5nZXRfc2V0dGVyX3ZhbHVlX2V4cHJlc3Npb25fcGF0dGVybigp
OgotICAgICAgICAgICAgICAgICAgICBzZXR0ZXJfYXJndW1lbnQgPSByZXR1cm5fdHlwZV9iaW5k
aW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCkgJSBzZXR0ZXJfYXJndW1l
bnQKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9ICIgICAgJXMgb3V0XyVzO1xuIiAlICh0eXBl
X21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X3JldHVybl92YXJfdHlw
ZSgpLCBqc29uX3JldHVybl9uYW1lKQorICAgICAgICAgICAgICAgICAgICBwYXJhbSA9ICIsICVz
b3V0XyVzIiAlICh0eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0
X291dHB1dF9hcmd1bWVudF9wcmVmaXgoKSwganNvbl9yZXR1cm5fbmFtZSkKKyAgICAgICAgICAg
ICAgICAgICAgdmFyX25hbWUgPSAib3V0XyVzIiAlIGpzb25fcmV0dXJuX25hbWUKKyAgICAgICAg
ICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0gdHlwZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1
cm5fcGFzc19tb2RlbCgpLmdldF9vdXRwdXRfdG9fcmF3X2V4cHJlc3Npb24oKSAlIHZhcl9uYW1l
CisgICAgICAgICAgICAgICAgICAgIGlmIHJldHVybl90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92
YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldHRl
cl9hcmd1bWVudCA9IHJldHVybl90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHByZXNz
aW9uX3BhdHRlcm4oKSAlIHNldHRlcl9hcmd1bWVudAogCi0gICAgICAgICAgICAgICAgY29vayA9
ICIgICAgICAgICAgICByZXN1bHQtPnNldCVzKFwiJXNcIiwgJXMpO1xuIiAlIChzZXR0ZXJfdHlw
ZSwganNvbl9yZXR1cm5fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50KQorICAgICAgICAg
ICAgICAgICAgICBjb29rID0gIiAgICAgICAgICAgIHJlc3VsdC0+c2V0JXMoXCIlc1wiLCAlcyk7
XG4iICUgKHNldHRlcl90eXBlLCBqc29uX3JldHVybl9uYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGVy
X2FyZ3VtZW50KQogCi0gICAgICAgICAgICAgICAgc2V0X2NvbmRpdGlvbl9wYXR0ZXJuID0gdHlw
ZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5fcGFzc19tb2RlbCgpLmdldF9zZXRfcmV0dXJuX2Nv
bmRpdGlvbigpCi0gICAgICAgICAgICAgICAgaWYgc2V0X2NvbmRpdGlvbl9wYXR0ZXJuOgotICAg
ICAgICAgICAgICAgICAgICBjb29rID0gKCIgICAgICAgICAgICBpZiAoJXMpXG4gICAgIiAlIChz
ZXRfY29uZGl0aW9uX3BhdHRlcm4gJSB2YXJfbmFtZSkpICsgY29vawotICAgICAgICAgICAgICAg
IGFubm90YXRlZF90eXBlID0gdHlwZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5fcGFzc19tb2Rl
bCgpLmdldF9vdXRwdXRfcGFyYW1ldGVyX3R5cGUoKQorICAgICAgICAgICAgICAgICAgICBzZXRf
Y29uZGl0aW9uX3BhdHRlcm4gPSB0eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21v
ZGVsKCkuZ2V0X3NldF9yZXR1cm5fY29uZGl0aW9uKCkKKyAgICAgICAgICAgICAgICAgICAgaWYg
c2V0X2NvbmRpdGlvbl9wYXR0ZXJuOgorICAgICAgICAgICAgICAgICAgICAgICAgY29vayA9ICgi
ICAgICAgICAgICAgaWYgKCVzKVxuICAgICIgJSAoc2V0X2NvbmRpdGlvbl9wYXR0ZXJuICUgdmFy
X25hbWUpKSArIGNvb2sKKyAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGVkX3R5cGUgPSB0eXBl
X21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X291dHB1dF9wYXJhbWV0
ZXJfdHlwZSgpCiAKLSAgICAgICAgICAgICAgICBwYXJhbV9uYW1lID0gIm91dF8lcyIgJSBqc29u
X3JldHVybl9uYW1lCi0gICAgICAgICAgICAgICAgaWYgb3B0aW9uYWw6Ci0gICAgICAgICAgICAg
ICAgICAgIHBhcmFtX25hbWUgPSAib3B0XyIgKyBwYXJhbV9uYW1lCisgICAgICAgICAgICAgICAg
ICAgIHBhcmFtX25hbWUgPSAib3V0XyVzIiAlIGpzb25fcmV0dXJuX25hbWUKKyAgICAgICAgICAg
ICAgICAgICAgaWYgb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbV9uYW1l
ID0gIm9wdF8iICsgcGFyYW1fbmFtZQogCi0gICAgICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tl
bmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIsICVzICVzIiAlIChhbm5vdGF0ZWRfdHlw
ZSwgcGFyYW1fbmFtZSkpCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY29va19saXN0LmFwcGVu
ZChjb29rKQorICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRl
cmZhY2VfbGlzdC5hcHBlbmQoIiwgJXMgJXMiICUgKGFubm90YXRlZF90eXBlLCBwYXJhbV9uYW1l
KSkKKyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfY29va19saXN0LmFwcGVuZChjb29rKQog
Ci0gICAgICAgICAgICAgICAgbWV0aG9kX291dF9jb2RlICs9IGNvZGUKLSAgICAgICAgICAgICAg
ICBhZ2VudF9jYWxsX3BhcmFtX2xpc3QuYXBwZW5kKHBhcmFtKQorICAgICAgICAgICAgICAgICAg
ICBtZXRob2Rfb3V0X2NvZGUgKz0gY29kZQorICAgICAgICAgICAgICAgICAgICBhZ2VudF9jYWxs
X3BhcmFtX2xpc3QuYXBwZW5kKHBhcmFtKQogCi0gICAgICAgICAgICAgICAgYmFja2VuZF9qc19y
ZXBseV9wYXJhbV9saXN0LmFwcGVuZCgiXCIlc1wiIiAlIGpzb25fcmV0dXJuX25hbWUpCisgICAg
ICAgICAgICAgICAgcmVzcG9uc2VfY29va190ZXh0ID0gIiIuam9pbihyZXNwb25zZV9jb29rX2xp
c3QpCiAKLSAgICAgICAgICAgIGpzX3JlcGx5X2xpc3QgPSAiWyVzXSIgJSAiLCAiLmpvaW4oYmFj
a2VuZF9qc19yZXBseV9wYXJhbV9saXN0KQorICAgICAgICAgICAgICAgIGlmIGxlbihyZXNwb25z
ZV9jb29rX3RleHQpICE9IDA6CisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2Nvb2tfdGV4
dCA9ICIgICAgICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIHtcbiIgKyByZXNwb25zZV9jb29rX3Rl
eHQgKyAiICAgICAgICB9IgogCi0gICAgICAgICAgICByZXNwb25zZV9jb29rX3RleHQgPSAiIi5q
b2luKHJlc3BvbnNlX2Nvb2tfbGlzdCkKKyAgICAgICAgYmFja2VuZF9qc19yZXBseV9wYXJhbV9s
aXN0ID0gW10KKyAgICAgICAgaWYgInJldHVybnMiIGluIGpzb25fY29tbWFuZDoKKyAgICAgICAg
ICAgIGZvciBqc29uX3JldHVybiBpbiBqc29uX2NvbW1hbmRbInJldHVybnMiXToKKyAgICAgICAg
ICAgICAgICBqc29uX3JldHVybl9uYW1lID0ganNvbl9yZXR1cm5bIm5hbWUiXQorICAgICAgICAg
ICAgICAgIGJhY2tlbmRfanNfcmVwbHlfcGFyYW1fbGlzdC5hcHBlbmQoIlwiJXNcIiIgJSBqc29u
X3JldHVybl9uYW1lKQogCi0gICAgICAgICAgICBpZiBsZW4ocmVzcG9uc2VfY29va190ZXh0KSAh
PSAwOgotICAgICAgICAgICAgICAgIHJlc3BvbnNlX2Nvb2tfdGV4dCA9ICIgICAgICAgIGlmICgh
ZXJyb3IubGVuZ3RoKCkpIHtcbiIgKyByZXNwb25zZV9jb29rX3RleHQgKyAiICAgICAgICB9Igor
ICAgICAgICBqc19yZXBseV9saXN0ID0gIlslc10iICUgIiwgIi5qb2luKGJhY2tlbmRfanNfcmVw
bHlfcGFyYW1fbGlzdCkKIAogICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9tZXRob2RfaW1wbGVt
ZW50YXRpb25fbGlzdC5hcHBlbmQoVGVtcGxhdGVzLmJhY2tlbmRfbWV0aG9kLnN1YnN0aXR1dGUo
Tm9uZSwKICAgICAgICAgICAgIGRvbWFpbk5hbWU9ZG9tYWluX25hbWUsIG1ldGhvZE5hbWU9anNv
bl9jb21tYW5kX25hbWUsCkBAIC0yOTIyLDYgKzI5OTgsNjQgQEAgY2xhc3MgR2VuZXJhdG9yOgog
ICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9qc19kb21haW5faW5pdGlhbGl6ZXJfbGlzdC5hcHBl
bmQoIkluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKFwiJXMuJXNcIiwgWyVzXSwgJXMp
O1xuIiAlIChkb21haW5fbmFtZSwganNvbl9jb21tYW5kX25hbWUsIGpzX3BhcmFtZXRlcnNfdGV4
dCwganNfcmVwbHlfbGlzdCkpCiAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVy
ZmFjZV9saXN0LmFwcGVuZCgiKSA9IDA7XG4iKQogCisgICAgY2xhc3MgQ2FsbGJhY2tNZXRob2RT
dHJ1Y3RUZW1wbGF0ZToKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgYXBwZW5k
X3Byb2xvZyhsaW5lX2xpc3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIEBzdGF0aWNt
ZXRob2QKKyAgICAgICAgZGVmIGFwcGVuZF9lcGlsb2cobGluZV9saXN0KToKKyAgICAgICAgICAg
IHBhc3MKKworICAgICAgICBjb250YWluZXJfbmFtZSA9ICJqc29uTWVzc2FnZSIKKworICAgICMg
R2VuZXJhdGVzIGNvbW1vbiBjb2RlIGZvciBldmVudCBzZW5kaW5nIGFuZCBjYWxsYmFjayByZXNw
b25zZSBkYXRhIHNlbmRpbmcuCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZW5lcmF0ZV9z
ZW5kX21ldGhvZChwYXJhbWV0ZXJzLCBldmVudF9uYW1lLCBkb21haW5fbmFtZSwgYWRfaG9jX3R5
cGVfd3JpdGVyLCBkZWNsX3BhcmFtZXRlcl9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXRob2Rfc3RydWN0X3RlbXBsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3JfbWV0aG9kX2xpc3QsIG1ldGhvZF90ZW1wbGF0ZSwgdGVtcGxhdGVfcGFyYW1z
KToKKyAgICAgICAgbWV0aG9kX2xpbmVfbGlzdCA9IFtdCisgICAgICAgIGlmIHBhcmFtZXRlcnM6
CisgICAgICAgICAgICBtZXRob2Rfc3RydWN0X3RlbXBsYXRlLmFwcGVuZF9wcm9sb2cobWV0aG9k
X2xpbmVfbGlzdCkKKyAgICAgICAgICAgIGZvciBqc29uX3BhcmFtZXRlciBpbiBwYXJhbWV0ZXJz
OgorICAgICAgICAgICAgICAgIHBhcmFtZXRlcl9uYW1lID0ganNvbl9wYXJhbWV0ZXJbIm5hbWUi
XQorCisgICAgICAgICAgICAgICAgcGFyYW1fdHlwZV9iaW5kaW5nID0gR2VuZXJhdG9yLnJlc29s
dmVfdHlwZV9hbmRfZ2VuZXJhdGVfYWRfaG9jKGpzb25fcGFyYW1ldGVyLCBldmVudF9uYW1lLCBk
b21haW5fbmFtZSwgYWRfaG9jX3R5cGVfd3JpdGVyLCAiIikKKworICAgICAgICAgICAgICAgIHJh
d190eXBlID0gcGFyYW1fdHlwZV9iaW5kaW5nLnJlZHVjZV90b19yYXdfdHlwZSgpCisgICAgICAg
ICAgICAgICAgcmF3X3R5cGVfYmluZGluZyA9IFJhd1R5cGVCaW5kaW5nKHJhd190eXBlKQorCisg
ICAgICAgICAgICAgICAgb3B0aW9uYWwgPSBib29sKGpzb25fcGFyYW1ldGVyLmdldCgib3B0aW9u
YWwiKSkKKworICAgICAgICAgICAgICAgIHNldHRlcl90eXBlID0gcmF3X3R5cGUuZ2V0X3NldHRl
cl9uYW1lKCkKKworICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSBwYXJhbV90eXBlX2JpbmRp
bmcuZ2V0X3R5cGVfbW9kZWwoKQorICAgICAgICAgICAgICAgIHJhd190eXBlX21vZGVsID0gcmF3
X3R5cGVfYmluZGluZy5nZXRfdHlwZV9tb2RlbCgpCisgICAgICAgICAgICAgICAgaWYgb3B0aW9u
YWw6CisgICAgICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSB0eXBlX21vZGVsLmdldF9vcHRp
b25hbCgpCisgICAgICAgICAgICAgICAgICAgIHJhd190eXBlX21vZGVsID0gcmF3X3R5cGVfbW9k
ZWwuZ2V0X29wdGlvbmFsKCkKKworICAgICAgICAgICAgICAgIGFubm90YXRlZF90eXBlID0gdHlw
ZV9tb2RlbC5nZXRfaW5wdXRfcGFyYW1fdHlwZV90ZXh0KCkKKyAgICAgICAgICAgICAgICBtb2Rl
X3R5cGVfYmluZGluZyA9IHBhcmFtX3R5cGVfYmluZGluZworCisgICAgICAgICAgICAgICAgZGVj
bF9wYXJhbWV0ZXJfbGlzdC5hcHBlbmQoIiVzICVzIiAlIChhbm5vdGF0ZWRfdHlwZSwgcGFyYW1l
dGVyX25hbWUpKQorCisgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0gcmF3X3R5cGVf
bW9kZWwuZ2V0X2V2ZW50X3NldHRlcl9leHByZXNzaW9uX3BhdHRlcm4oKSAlIHBhcmFtZXRlcl9u
YW1lCisgICAgICAgICAgICAgICAgaWYgbW9kZV90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1
ZV9leHByZXNzaW9uX3BhdHRlcm4oKToKKyAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3Vt
ZW50ID0gbW9kZV90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRl
cm4oKSAlIHNldHRlcl9hcmd1bWVudAorCisgICAgICAgICAgICAgICAgc2V0dGVyX2NvZGUgPSAi
ICAgICVzLT5zZXQlcyhcIiVzXCIsICVzKTtcbiIgJSAobWV0aG9kX3N0cnVjdF90ZW1wbGF0ZS5j
b250YWluZXJfbmFtZSwgc2V0dGVyX3R5cGUsIHBhcmFtZXRlcl9uYW1lLCBzZXR0ZXJfYXJndW1l
bnQpCisgICAgICAgICAgICAgICAgaWYgb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgICAgIHNl
dHRlcl9jb2RlID0gKCIgICAgaWYgKCVzKVxuICAgICIgJSBwYXJhbWV0ZXJfbmFtZSkgKyBzZXR0
ZXJfY29kZQorICAgICAgICAgICAgICAgIG1ldGhvZF9saW5lX2xpc3QuYXBwZW5kKHNldHRlcl9j
b2RlKQorCisgICAgICAgICAgICBtZXRob2Rfc3RydWN0X3RlbXBsYXRlLmFwcGVuZF9lcGlsb2co
bWV0aG9kX2xpbmVfbGlzdCkKKworICAgICAgICBnZW5lcmF0b3JfbWV0aG9kX2xpc3QuYXBwZW5k
KG1ldGhvZF90ZW1wbGF0ZS5zdWJzdGl0dXRlKE5vbmUsCisgICAgICAgICAgICBkb21haW5OYW1l
PWRvbWFpbl9uYW1lLAorICAgICAgICAgICAgcGFyYW1ldGVycz0iLCAiLmpvaW4oZGVjbF9wYXJh
bWV0ZXJfbGlzdCksCisgICAgICAgICAgICBjb2RlPSIiLmpvaW4obWV0aG9kX2xpbmVfbGlzdCks
ICoqdGVtcGxhdGVfcGFyYW1zKSkKKwogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgcmVzb2x2
ZV90eXBlX2FuZF9nZW5lcmF0ZV9hZF9ob2MoanNvbl9wYXJhbSwgbWV0aG9kX25hbWUsIGRvbWFp
bl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsIGNvbnRhaW5lcl9yZWxhdGl2ZV9uYW1lX3ByZWZp
eF9wYXJhbSk6CiAgICAgICAgIHBhcmFtX25hbWUgPSBqc29uX3BhcmFtWyJuYW1lIl0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162058</attachid>
            <date>2012-09-04 10:49:05 -0700</date>
            <delta_ts>2012-09-04 11:00:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95649-20120904214847.patch</filename>
            <type>text/plain</type>
            <size>22472</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNkZTZlMmVhMjljMGZm
MWZhMTNhMWVlYzk3ZjA4MjBlMmIyZGJkZi4uZjYxMTRmZGIyZjQzZGJjMmM5Nzk3Mjc2MTEzMzIx
OGZkM2IwYTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTAxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzdXBwb3J0IGFzeW5jaHJvbm91cyBjb21tYW5k
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTY0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEdlbmVyYXRvciBpcyBleHRlbmRlZCB0byBnZW5lcmF0ZSBjYWxsYmFjayBvYmplY3Qg
Zm9yIGVhY2ggYXN5bmNocm9ub3VzIGNvbW1hbmQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKFdyaXRlci5hcHBlbmRfbXVsdGlsaW5l
KToKKyAgICAgICAgKFdyaXRlcik6CisgICAgICAgIChXcml0ZXIuZ2V0X2luZGVudCk6CisgICAg
ICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkNsYXNzQmluZGluZy5y
ZXNvbHZlX2lubmVyLlJlc29sdmVEYXRhKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVySW1wbCk6CisgICAgICAgIChDYWxsYmFja0Jhc2UpOgorICAgICAgICAoR2VuZXJhdG9y
LnByb2Nlc3NfZXZlbnQpOgorICAgICAgICAoR2VuZXJhdG9yKToKKyAgICAgICAgKEdlbmVyYXRv
ci5FdmVudE1ldGhvZFN0cnVjdFRlbXBsYXRlKToKKyAgICAgICAgKEdlbmVyYXRvci5FdmVudE1l
dGhvZFN0cnVjdFRlbXBsYXRlLmFwcGVuZF9wcm9sb2cpOgorICAgICAgICAoR2VuZXJhdG9yLkV2
ZW50TWV0aG9kU3RydWN0VGVtcGxhdGUuYXBwZW5kX2VwaWxvZyk6CisgICAgICAgIChHZW5lcmF0
b3IucHJvY2Vzc19jb21tYW5kKToKKyAgICAgICAgKEdlbmVyYXRvci5DYWxsYmFja01ldGhvZFN0
cnVjdFRlbXBsYXRlKToKKyAgICAgICAgKEdlbmVyYXRvci5DYWxsYmFja01ldGhvZFN0cnVjdFRl
bXBsYXRlLmFwcGVuZF9wcm9sb2cpOgorICAgICAgICAoR2VuZXJhdG9yLkNhbGxiYWNrTWV0aG9k
U3RydWN0VGVtcGxhdGUuYXBwZW5kX2VwaWxvZyk6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJh
dGVfc2VuZF9tZXRob2QpOgorCiAyMDEyLTA4LTI4ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vr
b2xzYWtAZ21haWwuY29tPgogCiAgICAgICAgIENyYXNoIGluIEVkaXRpbmdTdHlsZTo6bWVyZ2VT
dHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5weQppbmRleCA4NTIyMjUzOGI0ZDNkN2U5NmZkM2NlOWUzYmQwYzkxYWYzMTk4Yzc4Li4y
ZmEyZTcxNTY0Y2I4NTc5ZjFkNGExMmU0ZDI4MWMzMmNiMTkxYjUwIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtNzcwLDYg
Kzc3MCw5IEBAIGNsYXNzIFdyaXRlcjoKICAgICAgICAgICAgIGlmIHA6CiAgICAgICAgICAgICAg
ICAgc2VsZi5uZXdsaW5lKHApCiAKKyAgICBkZWYgZ2V0X2luZGVudChzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuaW5kZW50CisKICAgICBkZWYgZ2V0X2luZGVudGVkKHNlbGYsIGFkZGl0aW9u
YWxfaW5kZW50KToKICAgICAgICAgcmV0dXJuIFdyaXRlcihzZWxmLm91dHB1dCwgc2VsZi5pbmRl
bnQgKyBhZGRpdGlvbmFsX2luZGVudCkKIApAQCAtMTExMCw3ICsxMTEzLDcgQEAgY2xhc3MgVHlw
ZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgUmVzb2x2ZURhdGE6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbl9wcm9wZXJ0aWVzID0gbWFpbgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX3Byb3BlcnRpZXMgPSBvcHRpb25hbAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190eXBlcyA9IGFkX2hvY190eXBlX2NvbnRl
eHQuYWRfaG9jX3R5cGVfbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190
eXBlcyA9IGFkX2hvY190eXBlX2xpc3QKIAogICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnJl
c29sdmVfZGF0YV8gPSBSZXNvbHZlRGF0YQogCkBAIC0xNzgzLDEwICsxNzg2LDIwIEBAICR7cmVz
cG9uc2VDb29rfQogCiAgICAgZnJvbnRlbmRfbWV0aG9kID0gc3RyaW5nLlRlbXBsYXRlKCIiInZv
aWQgSW5zcGVjdG9yRnJvbnRlbmQ6OiRkb21haW5OYW1lOjokZXZlbnROYW1lKCRwYXJhbWV0ZXJz
KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+ICR7ZXZlbnROYW1lfU1lc3NhZ2UgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICR7ZXZlbnROYW1lfU1lc3NhZ2UtPnNldFN0
cmluZygibWV0aG9kIiwgIiRkb21haW5OYW1lLiRldmVudE5hbWUiKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Cisg
ICAganNvbk1lc3NhZ2UtPnNldFN0cmluZygibWV0aG9kIiwgIiRkb21haW5OYW1lLiRldmVudE5h
bWUiKTsKICRjb2RlICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAg
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZCgke2V2ZW50
TmFtZX1NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmlu
ZygpKTsKK30KKyIiIikKKworICAgIGNhbGxiYWNrX21ldGhvZCA9IHN0cmluZy5UZW1wbGF0ZSgK
KyIiIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjokYWdlbnROYW1lOjokY2FsbGJhY2tOYW1l
OjokY2FsbGJhY2tOYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBs
PiBiYWNrZW5kSW1wbCwgaW50IGlkKSA6IENhbGxiYWNrQmFzZShiYWNrZW5kSW1wbCwgaWQpIHt9
CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OiRhZ2VudE5hbWU6OiRjYWxsYmFj
a05hbWU6OnNlbmRTdWNjZXNzKCRwYXJhbWV0ZXJzKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyRjb2RlICAg
IHNlbmRJZkFjdGl2ZShqc29uTWVzc2FnZSwgRXJyb3JTdHJpbmcoKSk7CiB9CiAiIiIpCiAKQEAg
LTE4NDUsMTEgKzE4NTgsMzAgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJJbXBsOworCiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjogcHVibGljIFJl
ZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKTsKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogCisgICAgY2xhc3MgQ2FsbGJhY2tC
YXNlOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIENhbGxiYWNrQmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1w
bD4gYmFja2VuZEltcGwsIGludCBpZCk7CisgICAgICAgIHZpcnR1YWwgfkNhbGxiYWNrQmFzZSgp
OworICAgICAgICB2b2lkIHNlbmRGYWlsdXJlKGNvbnN0IEVycm9yU3RyaW5nJik7CisgICAgICAg
IGJvb2wgaXNBY3RpdmUoKTsKKyAgICAgICAgdm9pZCBkaXNhYmxlKCkgeyBtX2FscmVhZHlTZW50
ID0gdHJ1ZTsgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHNlbmRJZkFjdGl2ZShQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFydGlhbE1lc3NhZ2UsIGNvbnN0IEVycm9yU3Ry
aW5nJiBpbnZvY2F0aW9uRXJyb3IpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgUmVmUHRyPElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1wbD4gbV9iYWNrZW5kSW1wbDsKKyAgICAgICAgaW50
IG1faWQ7CisgICAgICAgIGJvb2wgbV9hbHJlYWR5U2VudDsKKyAgICB9OworCiAkYWdlbnRJbnRl
cmZhY2VzCiAkdmlydHVhbFNldHRlcnMKIApAQCAtMTkyMCw2ICsxOTUyLDkgQEAgJGNvbnN0cnVj
dG9ySW5pdAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcq
IGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gZGF0YSkgY29uc3Q7CiAgICAgdXNpbmcgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3I7CiAKKyAgICB2b2lk
IHNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJl
c3VsdCwgRXJyb3JTdHJpbmcgaW52b2NhdGlvbkVycm9yKTsKKyAgICBib29sIGlzQWN0aXZlKCkg
eyByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7IH0KKwogJHNldHRlcnMKIHByaXZh
dGU6CiAkbWV0aG9kRGVjbGFyYXRpb25zCkBAIC0yMDE3LDYgKzIwNTIsMTEgQEAgdm9pZCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckltcGw6OnNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUGFz
c1JlZlB0cjxJbnNwZWMKICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnZh
bGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIHByb3RvY29sRXJyb3JzKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKyAgICBzZW5kUmVzcG9uc2UoY2FsbElkLCByZXN1bHQsIGludm9jYXRpb25FcnJv
cik7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBsOjpzZW5kUmVzcG9u
c2UobG9uZyBjYWxsSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQsIEVycm9y
U3RyaW5nIGludm9jYXRpb25FcnJvcikKK3sKICAgICBpZiAoaW52b2NhdGlvbkVycm9yLmxlbmd0
aCgpKSB7CiAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgU2VydmVyRXJyb3Is
IGludm9jYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTIxNTQsNiArMjE5NCwzMCBA
QCBib29sIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRDb21tYW5kTmFtZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIFN0cmluZyogcgogICAgIHJldHVybiB0cnVlOwogfQogCitJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFja0Jhc2UoUGFzc1JlZlB0
cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckltcGw+IGJhY2tlbmRJbXBsLCBpbnQgaWQpCisg
ICAgOiBtX2JhY2tlbmRJbXBsKGJhY2tlbmRJbXBsKSwgbV9pZChpZCksIG1fYWxyZWFkeVNlbnQo
ZmFsc2UpIHt9CisKK0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6On5D
YWxsYmFja0Jhc2UoKSB7fQorCit2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2U6OnNlbmRGYWlsdXJlKGNvbnN0IEVycm9yU3RyaW5nJiBlcnJvcikKK3sKKyAgICBB
U1NFUlQoZXJyb3IubGVuZ3RoKCkpOworICAgIHNlbmRJZkFjdGl2ZSgwLCBlcnJvcik7Cit9CisK
K2Jvb2wgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6aXNBY3RpdmUo
KQoreworICAgIHJldHVybiAhbV9hbHJlYWR5U2VudCAmJiBtX2JhY2tlbmRJbXBsLT5pc0FjdGl2
ZSgpOworfQorCit2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6
OnNlbmRJZkFjdGl2ZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFydGlhbE1lc3NhZ2Us
IGNvbnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0aW9uRXJyb3IpCit7CisgICAgaWYgKG1fYWxyZWFk
eVNlbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2JhY2tlbmRJbXBsLT5zZW5kUmVzcG9uc2Uo
bV9pZCwgcGFydGlhbE1lc3NhZ2UsIGludm9jYXRpb25FcnJvcik7CisgICAgbV9hbHJlYWR5U2Vu
dCA9IHRydWU7Cit9CisKIENPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OmtNZXRob2ROYW1lc0VudW1TaXplKSA9PSBXVEZfQVJSQVlfTEVO
R1RIKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjb21tYW5kTmFtZXMpLCBjb21tYW5kX25h
bWVfYXJyYXlfcHJvYmxlbSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKQEAgLTI3MjcsNTkg
KzI3OTEsNDEgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgIGRlZiBwcm9jZXNzX2V2ZW50KGpzb25f
ZXZlbnQsIGRvbWFpbl9uYW1lLCBmcm9udGVuZF9tZXRob2RfZGVjbGFyYXRpb25fbGluZXMpOgog
ICAgICAgICBldmVudF9uYW1lID0ganNvbl9ldmVudFsibmFtZSJdCiAKLSAgICAgICAgcGFyYW1l
dGVyX2xpc3QgPSBbXQotICAgICAgICBtZXRob2RfbGluZV9saXN0ID0gW10KLSAgICAgICAgYmFj
a2VuZF9qc19ldmVudF9wYXJhbV9saXN0ID0gW10KICAgICAgICAgYWRfaG9jX3R5cGVfb3V0cHV0
ID0gW10KICAgICAgICAgZnJvbnRlbmRfbWV0aG9kX2RlY2xhcmF0aW9uX2xpbmVzLmFwcGVuZChh
ZF9ob2NfdHlwZV9vdXRwdXQpCiAgICAgICAgIGFkX2hvY190eXBlX3dyaXRlciA9IFdyaXRlcihh
ZF9ob2NfdHlwZV9vdXRwdXQsICIgICAgICAgICIpCi0gICAgICAgIGlmICJwYXJhbWV0ZXJzIiBp
biBqc29uX2V2ZW50OgotICAgICAgICAgICAgbWV0aG9kX2xpbmVfbGlzdC5hcHBlbmQoIiAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpO1xuIikKLSAgICAgICAgICAgIGZvciBqc29uX3BhcmFtZXRlciBpbiBqc29uX2V2ZW50
WyJwYXJhbWV0ZXJzIl06Ci0gICAgICAgICAgICAgICAgcGFyYW1ldGVyX25hbWUgPSBqc29uX3Bh
cmFtZXRlclsibmFtZSJdCi0KLSAgICAgICAgICAgICAgICBwYXJhbV90eXBlX2JpbmRpbmcgPSBH
ZW5lcmF0b3IucmVzb2x2ZV90eXBlX2FuZF9nZW5lcmF0ZV9hZF9ob2MoanNvbl9wYXJhbWV0ZXIs
IGV2ZW50X25hbWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsICIiKQotCi0gICAg
ICAgICAgICAgICAgcmF3X3R5cGUgPSBwYXJhbV90eXBlX2JpbmRpbmcucmVkdWNlX3RvX3Jhd190
eXBlKCkKLSAgICAgICAgICAgICAgICByYXdfdHlwZV9iaW5kaW5nID0gUmF3VHlwZUJpbmRpbmco
cmF3X3R5cGUpCi0KLSAgICAgICAgICAgICAgICBvcHRpb25hbCA9IGJvb2woanNvbl9wYXJhbWV0
ZXIuZ2V0KCJvcHRpb25hbCIpKQotCi0gICAgICAgICAgICAgICAgc2V0dGVyX3R5cGUgPSByYXdf
dHlwZS5nZXRfc2V0dGVyX25hbWUoKQotCi0gICAgICAgICAgICAgICAgdHlwZV9tb2RlbCA9IHBh
cmFtX3R5cGVfYmluZGluZy5nZXRfdHlwZV9tb2RlbCgpCi0gICAgICAgICAgICAgICAgcmF3X3R5
cGVfbW9kZWwgPSByYXdfdHlwZV9iaW5kaW5nLmdldF90eXBlX21vZGVsKCkKLSAgICAgICAgICAg
ICAgICBpZiBvcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgdHlwZV9tb2RlbCA9IHR5cGVf
bW9kZWwuZ2V0X29wdGlvbmFsKCkKLSAgICAgICAgICAgICAgICAgICAgcmF3X3R5cGVfbW9kZWwg
PSByYXdfdHlwZV9tb2RlbC5nZXRfb3B0aW9uYWwoKQotCi0gICAgICAgICAgICAgICAgYW5ub3Rh
dGVkX3R5cGUgPSB0eXBlX21vZGVsLmdldF9pbnB1dF9wYXJhbV90eXBlX3RleHQoKQotICAgICAg
ICAgICAgICAgIG1vZGVfdHlwZV9iaW5kaW5nID0gcGFyYW1fdHlwZV9iaW5kaW5nCiAKLSAgICAg
ICAgICAgICAgICBwYXJhbWV0ZXJfbGlzdC5hcHBlbmQoIiVzICVzIiAlIChhbm5vdGF0ZWRfdHlw
ZSwgcGFyYW1ldGVyX25hbWUpKQorICAgICAgICBkZWNsX3BhcmFtZXRlcl9saXN0ID0gW10KIAot
ICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1bWVudCA9IHJhd190eXBlX21vZGVsLmdldF9ldmVu
dF9zZXR0ZXJfZXhwcmVzc2lvbl9wYXR0ZXJuKCkgJSBwYXJhbWV0ZXJfbmFtZQotICAgICAgICAg
ICAgICAgIGlmIG1vZGVfdHlwZV9iaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9w
YXR0ZXJuKCk6Ci0gICAgICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1bWVudCA9IG1vZGVfdHlw
ZV9iaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCkgJSBzZXR0ZXJf
YXJndW1lbnQKLQotICAgICAgICAgICAgICAgIHNldHRlcl9jb2RlID0gIiAgICBwYXJhbXNPYmpl
Y3QtPnNldCVzKFwiJXNcIiwgJXMpO1xuIiAlIChzZXR0ZXJfdHlwZSwgcGFyYW1ldGVyX25hbWUs
IHNldHRlcl9hcmd1bWVudCkKLSAgICAgICAgICAgICAgICBpZiBvcHRpb25hbDoKLSAgICAgICAg
ICAgICAgICAgICAgc2V0dGVyX2NvZGUgPSAoIiAgICBpZiAoJXMpXG4gICAgIiAlIHBhcmFtZXRl
cl9uYW1lKSArIHNldHRlcl9jb2RlCi0gICAgICAgICAgICAgICAgbWV0aG9kX2xpbmVfbGlzdC5h
cHBlbmQoc2V0dGVyX2NvZGUpCisgICAgICAgIGpzb25fcGFyYW1ldGVycyA9IGpzb25fZXZlbnQu
Z2V0KCJwYXJhbWV0ZXJzIikKKyAgICAgICAgR2VuZXJhdG9yLmdlbmVyYXRlX3NlbmRfbWV0aG9k
KGpzb25fcGFyYW1ldGVycywgZXZlbnRfbmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dy
aXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xfcGFyYW1l
dGVyX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
b3IuRXZlbnRNZXRob2RTdHJ1Y3RUZW1wbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRvci5mcm9udGVuZF9tZXRob2RfbGlzdCwgVGVtcGxhdGVzLmZy
b250ZW5kX21ldGhvZCwgeyJldmVudE5hbWUiOiBldmVudF9uYW1lfSkKIAorICAgICAgICBiYWNr
ZW5kX2pzX2V2ZW50X3BhcmFtX2xpc3QgPSBbXQorICAgICAgICBpZiBqc29uX3BhcmFtZXRlcnM6
CisgICAgICAgICAgICBmb3IgcGFyYW1ldGVyIGluIGpzb25fcGFyYW1ldGVyczoKKyAgICAgICAg
ICAgICAgICBwYXJhbWV0ZXJfbmFtZSA9IHBhcmFtZXRlclsibmFtZSJdCiAgICAgICAgICAgICAg
ICAgYmFja2VuZF9qc19ldmVudF9wYXJhbV9saXN0LmFwcGVuZCgiXCIlc1wiIiAlIHBhcmFtZXRl
cl9uYW1lKQotICAgICAgICAgICAgbWV0aG9kX2xpbmVfbGlzdC5hcHBlbmQoIiAgICAlc01lc3Nh
Z2UtPnNldE9iamVjdChcInBhcmFtc1wiLCBwYXJhbXNPYmplY3QpO1xuIiAlIGV2ZW50X25hbWUp
Ci0gICAgICAgIGZyb250ZW5kX21ldGhvZF9kZWNsYXJhdGlvbl9saW5lcy5hcHBlbmQoCi0gICAg
ICAgICAgICAiICAgICAgICB2b2lkICVzKCVzKTtcbiIgJSAoZXZlbnRfbmFtZSwgIiwgIi5qb2lu
KHBhcmFtZXRlcl9saXN0KSkpCiAKLSAgICAgICAgR2VuZXJhdG9yLmZyb250ZW5kX21ldGhvZF9s
aXN0LmFwcGVuZChUZW1wbGF0ZXMuZnJvbnRlbmRfbWV0aG9kLnN1YnN0aXR1dGUoTm9uZSwKLSAg
ICAgICAgICAgIGRvbWFpbk5hbWU9ZG9tYWluX25hbWUsIGV2ZW50TmFtZT1ldmVudF9uYW1lLAot
ICAgICAgICAgICAgcGFyYW1ldGVycz0iLCAiLmpvaW4ocGFyYW1ldGVyX2xpc3QpLAotICAgICAg
ICAgICAgY29kZT0iIi5qb2luKG1ldGhvZF9saW5lX2xpc3QpKSkKKyAgICAgICAgZnJvbnRlbmRf
bWV0aG9kX2RlY2xhcmF0aW9uX2xpbmVzLmFwcGVuZCgKKyAgICAgICAgICAgICIgICAgICAgIHZv
aWQgJXMoJXMpO1xuIiAlIChldmVudF9uYW1lLCAiLCAiLmpvaW4oZGVjbF9wYXJhbWV0ZXJfbGlz
dCkpKQogCiAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2pzX2RvbWFpbl9pbml0aWFsaXplcl9s
aXN0LmFwcGVuZCgiSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckV2ZW50KFwiJXMuJXNcIiwgWyVz
XSk7XG4iICUgKAogICAgICAgICAgICAgZG9tYWluX25hbWUsIGV2ZW50X25hbWUsICIsICIuam9p
bihiYWNrZW5kX2pzX2V2ZW50X3BhcmFtX2xpc3QpKSkKIAorICAgIGNsYXNzIEV2ZW50TWV0aG9k
U3RydWN0VGVtcGxhdGU6CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGFwcGVu
ZF9wcm9sb2cobGluZV9saXN0KToKKyAgICAgICAgICAgIGxpbmVfbGlzdC5hcHBlbmQoIiAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpO1xuIikKKworICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBhcHBlbmRf
ZXBpbG9nKGxpbmVfbGlzdCk6CisgICAgICAgICAgICBsaW5lX2xpc3QuYXBwZW5kKCIgICAganNv
bk1lc3NhZ2UtPnNldE9iamVjdChcInBhcmFtc1wiLCBwYXJhbXNPYmplY3QpO1xuIikKKworICAg
ICAgICBjb250YWluZXJfbmFtZSA9ICJwYXJhbXNPYmplY3QiCisKICAgICBAc3RhdGljbWV0aG9k
CiAgICAgZGVmIHByb2Nlc3NfY29tbWFuZChqc29uX2NvbW1hbmQsIGRvbWFpbl9uYW1lLCBhZ2Vu
dF9maWVsZF9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSk6CiAgICAgICAgIGpzb25fY29tbWFu
ZF9uYW1lID0ganNvbl9jb21tYW5kWyJuYW1lIl0KQEAgLTI4MDAsNyArMjg0Niw2IEBAIGNsYXNz
IEdlbmVyYXRvcjoKICAgICAgICAgbWV0aG9kX291dF9jb2RlID0gIiIKICAgICAgICAgYWdlbnRf
Y2FsbF9wYXJhbV9saXN0ID0gW10KICAgICAgICAgcmVzcG9uc2VfY29va19saXN0ID0gW10KLSAg
ICAgICAgYmFja2VuZF9qc19yZXBseV9wYXJhbV9saXN0ID0gW10KICAgICAgICAgcmVxdWVzdF9t
ZXNzYWdlX3BhcmFtID0gIiIKICAgICAgICAganNfcGFyYW1ldGVyc190ZXh0ID0gIiIKICAgICAg
ICAgaWYgInBhcmFtZXRlcnMiIGluIGpzb25fY29tbWFuZDoKQEAgLTI4NTUsNTggKzI5MDAsODkg
QEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAganNfcGFyYW1ldGVyc190ZXh0ID0gIiwg
Ii5qb2luKGpzX3BhcmFtX2xpc3QpCiAKICAgICAgICAgcmVzcG9uc2VfY29va190ZXh0ID0gIiIK
LSAgICAgICAganNfcmVwbHlfbGlzdCA9ICJbXSIKLSAgICAgICAgaWYgInJldHVybnMiIGluIGpz
b25fY29tbWFuZDoKLSAgICAgICAgICAgIG1ldGhvZF9vdXRfY29kZSArPSAiXG4iCi0gICAgICAg
ICAgICBmb3IganNvbl9yZXR1cm4gaW4ganNvbl9jb21tYW5kWyJyZXR1cm5zIl06CisgICAgICAg
IGlmIGpzb25fY29tbWFuZC5nZXQoImFzeW5jIikgPT0gVHJ1ZToKKyAgICAgICAgICAgIGNhbGxi
YWNrX25hbWUgPSBDYXBpdGFsaXplci5sb3dlcl9jYW1lbF9jYXNlX3RvX3VwcGVyKGpzb25fY29t
bWFuZF9uYW1lKSArICJDYWxsYmFjayIKKworICAgICAgICAgICAgY2FsbGJhY2tfb3V0cHV0ID0g
W10KKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlciA9IFdyaXRlcihjYWxsYmFja19vdXRwdXQs
IGFkX2hvY190eXBlX3dyaXRlci5nZXRfaW5kZW50KCkpCisKKyAgICAgICAgICAgIGRlY2xfcGFy
YW1ldGVyX2xpc3QgPSBbXQorICAgICAgICAgICAgR2VuZXJhdG9yLmdlbmVyYXRlX3NlbmRfbWV0
aG9kKGpzb25fY29tbWFuZC5nZXQoInJldHVybnMiKSwganNvbl9jb21tYW5kX25hbWUsIGRvbWFp
bl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVjbF9wYXJhbWV0ZXJfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3IuQ2FsbGJhY2tNZXRob2RTdHJ1Y3RUZW1w
bGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
b3IuYmFja2VuZF9tZXRob2RfaW1wbGVtZW50YXRpb25fbGlzdCwgVGVtcGxhdGVzLmNhbGxiYWNr
X21ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImNh
bGxiYWNrTmFtZSI6IGNhbGxiYWNrX25hbWUsICJhZ2VudE5hbWUiOiBhZ2VudF9pbnRlcmZhY2Vf
bmFtZX0pCisKKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCJjbGFzcyAiICsg
Y2FsbGJhY2tfbmFtZSArICIgOiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHtcbiIpCisgICAgICAgICAg
ICBjYWxsYmFja193cml0ZXIubmV3bGluZSgicHVibGljOlxuIikKKyAgICAgICAgICAgIGNhbGxi
YWNrX3dyaXRlci5uZXdsaW5lKCIgICAgIiArIGNhbGxiYWNrX25hbWUgKyAiKFBhc3NSZWZQdHI8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBsPiwgaW50IGlkKTtcbiIpCisgICAgICAgICAg
ICBjYWxsYmFja193cml0ZXIubmV3bGluZSgiICAgIHZvaWQgc2VuZFN1Y2Nlc3MoIiArICIsICIu
am9pbihkZWNsX3BhcmFtZXRlcl9saXN0KSArICIpO1xuIikKKyAgICAgICAgICAgIGNhbGxiYWNr
X3dyaXRlci5uZXdsaW5lKCJ9O1xuIikKKworICAgICAgICAgICAgYWRfaG9jX3R5cGVfb3V0cHV0
LmFwcGVuZChjYWxsYmFja19vdXRwdXQpCisKKyAgICAgICAgICAgIG1ldGhvZF9vdXRfY29kZSAr
PSAiICAgIFJlZlB0cjwiICsgYWdlbnRfaW50ZXJmYWNlX25hbWUgKyAiOjoiICsgY2FsbGJhY2tf
bmFtZSArICI+IGNhbGxiYWNrID0gYWRvcHRSZWYobmV3ICIgKyBhZ2VudF9pbnRlcmZhY2VfbmFt
ZSArICI6OiIgKyBjYWxsYmFja19uYW1lICsgIih0aGlzLCBjYWxsSWQpKTtcbiIKKyAgICAgICAg
ICAgIGFnZW50X2NhbGxfcGFyYW1fbGlzdC5hcHBlbmQoIiwgY2FsbGJhY2siKQorICAgICAgICAg
ICAgcmVzcG9uc2VfY29va190ZXh0ICs9ICIgICAgICAgIGlmIChlcnJvci5sZW5ndGgoKSA9PSAw
KSBcbiIKKyAgICAgICAgICAgIHJlc3BvbnNlX2Nvb2tfdGV4dCArPSAiICAgICAgICAgICAgcmV0
dXJuO1xuIgorICAgICAgICAgICAgcmVzcG9uc2VfY29va190ZXh0ICs9ICIgICAgICAgIGNhbGxi
YWNrLT5kaXNhYmxlKCk7XG4iCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9p
bnRlcmZhY2VfbGlzdC5hcHBlbmQoIiwgY29uc3QgUmVmUHRyPCVzPiYgY2FsbGJhY2siICUgY2Fs
bGJhY2tfbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmICJyZXR1cm5zIiBpbiBq
c29uX2NvbW1hbmQ6CisgICAgICAgICAgICAgICAgbWV0aG9kX291dF9jb2RlICs9ICJcbiIKKyAg
ICAgICAgICAgICAgICBmb3IganNvbl9yZXR1cm4gaW4ganNvbl9jb21tYW5kWyJyZXR1cm5zIl06
CiAKLSAgICAgICAgICAgICAgICBqc29uX3JldHVybl9uYW1lID0ganNvbl9yZXR1cm5bIm5hbWUi
XQorICAgICAgICAgICAgICAgICAgICBqc29uX3JldHVybl9uYW1lID0ganNvbl9yZXR1cm5bIm5h
bWUiXQogCi0gICAgICAgICAgICAgICAgb3B0aW9uYWwgPSBib29sKGpzb25fcmV0dXJuLmdldCgi
b3B0aW9uYWwiKSkKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgPSBib29sKGpzb25fcmV0
dXJuLmdldCgib3B0aW9uYWwiKSkKIAotICAgICAgICAgICAgICAgIHJldHVybl90eXBlX2JpbmRp
bmcgPSBHZW5lcmF0b3IucmVzb2x2ZV90eXBlX2FuZF9nZW5lcmF0ZV9hZF9ob2MoanNvbl9yZXR1
cm4sIGpzb25fY29tbWFuZF9uYW1lLCBkb21haW5fbmFtZSwgYWRfaG9jX3R5cGVfd3JpdGVyLCBh
Z2VudF9pbnRlcmZhY2VfbmFtZSArICI6OiIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybl90
eXBlX2JpbmRpbmcgPSBHZW5lcmF0b3IucmVzb2x2ZV90eXBlX2FuZF9nZW5lcmF0ZV9hZF9ob2Mo
anNvbl9yZXR1cm4sIGpzb25fY29tbWFuZF9uYW1lLCBkb21haW5fbmFtZSwgYWRfaG9jX3R5cGVf
d3JpdGVyLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSArICI6OiIpCiAKLSAgICAgICAgICAgICAgICBy
YXdfdHlwZSA9IHJldHVybl90eXBlX2JpbmRpbmcucmVkdWNlX3RvX3Jhd190eXBlKCkKLSAgICAg
ICAgICAgICAgICBzZXR0ZXJfdHlwZSA9IHJhd190eXBlLmdldF9zZXR0ZXJfbmFtZSgpCi0gICAg
ICAgICAgICAgICAgaW5pdGlhbGl6ZXIgPSByYXdfdHlwZS5nZXRfY19pbml0aWFsaXplcigpCisg
ICAgICAgICAgICAgICAgICAgIHJhd190eXBlID0gcmV0dXJuX3R5cGVfYmluZGluZy5yZWR1Y2Vf
dG9fcmF3X3R5cGUoKQorICAgICAgICAgICAgICAgICAgICBzZXR0ZXJfdHlwZSA9IHJhd190eXBl
LmdldF9zZXR0ZXJfbmFtZSgpCisgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcmF3
X3R5cGUuZ2V0X2NfaW5pdGlhbGl6ZXIoKQogCi0gICAgICAgICAgICAgICAgdHlwZV9tb2RlbCA9
IHJldHVybl90eXBlX2JpbmRpbmcuZ2V0X3R5cGVfbW9kZWwoKQotICAgICAgICAgICAgICAgIGlm
IG9wdGlvbmFsOgotICAgICAgICAgICAgICAgICAgICB0eXBlX21vZGVsID0gdHlwZV9tb2RlbC5n
ZXRfb3B0aW9uYWwoKQorICAgICAgICAgICAgICAgICAgICB0eXBlX21vZGVsID0gcmV0dXJuX3R5
cGVfYmluZGluZy5nZXRfdHlwZV9tb2RlbCgpCisgICAgICAgICAgICAgICAgICAgIGlmIG9wdGlv
bmFsOgorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9tb2RlbCA9IHR5cGVfbW9kZWwuZ2V0
X29wdGlvbmFsKCkKIAotICAgICAgICAgICAgICAgIGNvZGUgPSAiICAgICVzIG91dF8lcztcbiIg
JSAodHlwZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5fcGFzc19tb2RlbCgpLmdldF9yZXR1cm5f
dmFyX3R5cGUoKSwganNvbl9yZXR1cm5fbmFtZSkKLSAgICAgICAgICAgICAgICBwYXJhbSA9ICIs
ICVzb3V0XyVzIiAlICh0eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCku
Z2V0X291dHB1dF9hcmd1bWVudF9wcmVmaXgoKSwganNvbl9yZXR1cm5fbmFtZSkKLSAgICAgICAg
ICAgICAgICB2YXJfbmFtZSA9ICJvdXRfJXMiICUganNvbl9yZXR1cm5fbmFtZQotICAgICAgICAg
ICAgICAgIHNldHRlcl9hcmd1bWVudCA9IHR5cGVfbW9kZWwuZ2V0X2NvbW1hbmRfcmV0dXJuX3Bh
c3NfbW9kZWwoKS5nZXRfb3V0cHV0X3RvX3Jhd19leHByZXNzaW9uKCkgJSB2YXJfbmFtZQotICAg
ICAgICAgICAgICAgIGlmIHJldHVybl90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHBy
ZXNzaW9uX3BhdHRlcm4oKToKLSAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0g
cmV0dXJuX3R5cGVfYmluZGluZy5nZXRfc2V0dGVyX3ZhbHVlX2V4cHJlc3Npb25fcGF0dGVybigp
ICUgc2V0dGVyX2FyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSAiICAgICVzIG91
dF8lcztcbiIgJSAodHlwZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5fcGFzc19tb2RlbCgpLmdl
dF9yZXR1cm5fdmFyX3R5cGUoKSwganNvbl9yZXR1cm5fbmFtZSkKKyAgICAgICAgICAgICAgICAg
ICAgcGFyYW0gPSAiLCAlc291dF8lcyIgJSAodHlwZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5f
cGFzc19tb2RlbCgpLmdldF9vdXRwdXRfYXJndW1lbnRfcHJlZml4KCksIGpzb25fcmV0dXJuX25h
bWUpCisgICAgICAgICAgICAgICAgICAgIHZhcl9uYW1lID0gIm91dF8lcyIgJSBqc29uX3JldHVy
bl9uYW1lCisgICAgICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1bWVudCA9IHR5cGVfbW9kZWwu
Z2V0X2NvbW1hbmRfcmV0dXJuX3Bhc3NfbW9kZWwoKS5nZXRfb3V0cHV0X3RvX3Jhd19leHByZXNz
aW9uKCkgJSB2YXJfbmFtZQorICAgICAgICAgICAgICAgICAgICBpZiByZXR1cm5fdHlwZV9iaW5k
aW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCk6CisgICAgICAgICAgICAg
ICAgICAgICAgICBzZXR0ZXJfYXJndW1lbnQgPSByZXR1cm5fdHlwZV9iaW5kaW5nLmdldF9zZXR0
ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCkgJSBzZXR0ZXJfYXJndW1lbnQKIAotICAgICAg
ICAgICAgICAgIGNvb2sgPSAiICAgICAgICAgICAgcmVzdWx0LT5zZXQlcyhcIiVzXCIsICVzKTtc
biIgJSAoc2V0dGVyX3R5cGUsIGpzb25fcmV0dXJuX25hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1
bWVudCkKKyAgICAgICAgICAgICAgICAgICAgY29vayA9ICIgICAgICAgICAgICByZXN1bHQtPnNl
dCVzKFwiJXNcIiwgJXMpO1xuIiAlIChzZXR0ZXJfdHlwZSwganNvbl9yZXR1cm5fbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXR0ZXJfYXJndW1lbnQpCiAKLSAgICAgICAgICAgICAgICBzZXRfY29u
ZGl0aW9uX3BhdHRlcm4gPSB0eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVs
KCkuZ2V0X3NldF9yZXR1cm5fY29uZGl0aW9uKCkKLSAgICAgICAgICAgICAgICBpZiBzZXRfY29u
ZGl0aW9uX3BhdHRlcm46Ci0gICAgICAgICAgICAgICAgICAgIGNvb2sgPSAoIiAgICAgICAgICAg
IGlmICglcylcbiAgICAiICUgKHNldF9jb25kaXRpb25fcGF0dGVybiAlIHZhcl9uYW1lKSkgKyBj
b29rCi0gICAgICAgICAgICAgICAgYW5ub3RhdGVkX3R5cGUgPSB0eXBlX21vZGVsLmdldF9jb21t
YW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X291dHB1dF9wYXJhbWV0ZXJfdHlwZSgpCisgICAg
ICAgICAgICAgICAgICAgIHNldF9jb25kaXRpb25fcGF0dGVybiA9IHR5cGVfbW9kZWwuZ2V0X2Nv
bW1hbmRfcmV0dXJuX3Bhc3NfbW9kZWwoKS5nZXRfc2V0X3JldHVybl9jb25kaXRpb24oKQorICAg
ICAgICAgICAgICAgICAgICBpZiBzZXRfY29uZGl0aW9uX3BhdHRlcm46CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb29rID0gKCIgICAgICAgICAgICBpZiAoJXMpXG4gICAgIiAlIChzZXRfY29u
ZGl0aW9uX3BhdHRlcm4gJSB2YXJfbmFtZSkpICsgY29vaworICAgICAgICAgICAgICAgICAgICBh
bm5vdGF0ZWRfdHlwZSA9IHR5cGVfbW9kZWwuZ2V0X2NvbW1hbmRfcmV0dXJuX3Bhc3NfbW9kZWwo
KS5nZXRfb3V0cHV0X3BhcmFtZXRlcl90eXBlKCkKIAotICAgICAgICAgICAgICAgIHBhcmFtX25h
bWUgPSAib3V0XyVzIiAlIGpzb25fcmV0dXJuX25hbWUKLSAgICAgICAgICAgICAgICBpZiBvcHRp
b25hbDoKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1fbmFtZSA9ICJvcHRfIiArIHBhcmFtX25h
bWUKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1fbmFtZSA9ICJvdXRfJXMiICUganNvbl9yZXR1
cm5fbmFtZQorICAgICAgICAgICAgICAgICAgICBpZiBvcHRpb25hbDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtX25hbWUgPSAib3B0XyIgKyBwYXJhbV9uYW1lCiAKLSAgICAgICAgICAg
ICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiwgJXMg
JXMiICUgKGFubm90YXRlZF90eXBlLCBwYXJhbV9uYW1lKSkKLSAgICAgICAgICAgICAgICByZXNw
b25zZV9jb29rX2xpc3QuYXBwZW5kKGNvb2spCisgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRv
ci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiLCAlcyAlcyIgJSAoYW5ub3Rh
dGVkX3R5cGUsIHBhcmFtX25hbWUpKQorICAgICAgICAgICAgICAgICAgICByZXNwb25zZV9jb29r
X2xpc3QuYXBwZW5kKGNvb2spCiAKLSAgICAgICAgICAgICAgICBtZXRob2Rfb3V0X2NvZGUgKz0g
Y29kZQotICAgICAgICAgICAgICAgIGFnZW50X2NhbGxfcGFyYW1fbGlzdC5hcHBlbmQocGFyYW0p
CisgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9vdXRfY29kZSArPSBjb2RlCisgICAgICAgICAg
ICAgICAgICAgIGFnZW50X2NhbGxfcGFyYW1fbGlzdC5hcHBlbmQocGFyYW0pCiAKLSAgICAgICAg
ICAgICAgICBiYWNrZW5kX2pzX3JlcGx5X3BhcmFtX2xpc3QuYXBwZW5kKCJcIiVzXCIiICUganNv
bl9yZXR1cm5fbmFtZSkKKyAgICAgICAgICAgICAgICByZXNwb25zZV9jb29rX3RleHQgPSAiIi5q
b2luKHJlc3BvbnNlX2Nvb2tfbGlzdCkKIAotICAgICAgICAgICAganNfcmVwbHlfbGlzdCA9ICJb
JXNdIiAlICIsICIuam9pbihiYWNrZW5kX2pzX3JlcGx5X3BhcmFtX2xpc3QpCisgICAgICAgICAg
ICAgICAgaWYgbGVuKHJlc3BvbnNlX2Nvb2tfdGV4dCkgIT0gMDoKKyAgICAgICAgICAgICAgICAg
ICAgcmVzcG9uc2VfY29va190ZXh0ID0gIiAgICAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkge1xu
IiArIHJlc3BvbnNlX2Nvb2tfdGV4dCArICIgICAgICAgIH0iCiAKLSAgICAgICAgICAgIHJlc3Bv
bnNlX2Nvb2tfdGV4dCA9ICIiLmpvaW4ocmVzcG9uc2VfY29va19saXN0KQorICAgICAgICBiYWNr
ZW5kX2pzX3JlcGx5X3BhcmFtX2xpc3QgPSBbXQorICAgICAgICBpZiAicmV0dXJucyIgaW4ganNv
bl9jb21tYW5kOgorICAgICAgICAgICAgZm9yIGpzb25fcmV0dXJuIGluIGpzb25fY29tbWFuZFsi
cmV0dXJucyJdOgorICAgICAgICAgICAgICAgIGpzb25fcmV0dXJuX25hbWUgPSBqc29uX3JldHVy
blsibmFtZSJdCisgICAgICAgICAgICAgICAgYmFja2VuZF9qc19yZXBseV9wYXJhbV9saXN0LmFw
cGVuZCgiXCIlc1wiIiAlIGpzb25fcmV0dXJuX25hbWUpCiAKLSAgICAgICAgICAgIGlmIGxlbihy
ZXNwb25zZV9jb29rX3RleHQpICE9IDA6Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY29va190
ZXh0ID0gIiAgICAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkge1xuIiArIHJlc3BvbnNlX2Nvb2tf
dGV4dCArICIgICAgICAgIH0iCisgICAgICAgIGpzX3JlcGx5X2xpc3QgPSAiWyVzXSIgJSAiLCAi
LmpvaW4oYmFja2VuZF9qc19yZXBseV9wYXJhbV9saXN0KQogCiAgICAgICAgIEdlbmVyYXRvci5i
YWNrZW5kX21ldGhvZF9pbXBsZW1lbnRhdGlvbl9saXN0LmFwcGVuZChUZW1wbGF0ZXMuYmFja2Vu
ZF9tZXRob2Quc3Vic3RpdHV0ZShOb25lLAogICAgICAgICAgICAgZG9tYWluTmFtZT1kb21haW5f
bmFtZSwgbWV0aG9kTmFtZT1qc29uX2NvbW1hbmRfbmFtZSwKQEAgLTI5MjIsNiArMjk5OCw2NCBA
QCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2pzX2RvbWFpbl9p
bml0aWFsaXplcl9saXN0LmFwcGVuZCgiSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQo
XCIlcy4lc1wiLCBbJXNdLCAlcyk7XG4iICUgKGRvbWFpbl9uYW1lLCBqc29uX2NvbW1hbmRfbmFt
ZSwganNfcGFyYW1ldGVyc190ZXh0LCBqc19yZXBseV9saXN0KSkKICAgICAgICAgR2VuZXJhdG9y
LmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIpID0gMDtcbiIpCiAKKyAgICBj
bGFzcyBDYWxsYmFja01ldGhvZFN0cnVjdFRlbXBsYXRlOgorICAgICAgICBAc3RhdGljbWV0aG9k
CisgICAgICAgIGRlZiBhcHBlbmRfcHJvbG9nKGxpbmVfbGlzdCk6CisgICAgICAgICAgICBwYXNz
CisKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgYXBwZW5kX2VwaWxvZyhsaW5l
X2xpc3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNvbnRhaW5lcl9uYW1lID0gImpz
b25NZXNzYWdlIgorCisgICAgIyBHZW5lcmF0ZXMgY29tbW9uIGNvZGUgZm9yIGV2ZW50IHNlbmRp
bmcgYW5kIGNhbGxiYWNrIHJlc3BvbnNlIGRhdGEgc2VuZGluZy4KKyAgICBAc3RhdGljbWV0aG9k
CisgICAgZGVmIGdlbmVyYXRlX3NlbmRfbWV0aG9kKHBhcmFtZXRlcnMsIGV2ZW50X25hbWUsIGRv
bWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsIGRlY2xfcGFyYW1ldGVyX2xpc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9zdHJ1Y3RfdGVtcGxhdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcl9tZXRob2RfbGlzdCwgbWV0aG9kX3RlbXBs
YXRlLCB0ZW1wbGF0ZV9wYXJhbXMpOgorICAgICAgICBtZXRob2RfbGluZV9saXN0ID0gW10KKyAg
ICAgICAgaWYgcGFyYW1ldGVyczoKKyAgICAgICAgICAgIG1ldGhvZF9zdHJ1Y3RfdGVtcGxhdGUu
YXBwZW5kX3Byb2xvZyhtZXRob2RfbGluZV9saXN0KQorICAgICAgICAgICAgZm9yIGpzb25fcGFy
YW1ldGVyIGluIHBhcmFtZXRlcnM6CisgICAgICAgICAgICAgICAgcGFyYW1ldGVyX25hbWUgPSBq
c29uX3BhcmFtZXRlclsibmFtZSJdCisKKyAgICAgICAgICAgICAgICBwYXJhbV90eXBlX2JpbmRp
bmcgPSBHZW5lcmF0b3IucmVzb2x2ZV90eXBlX2FuZF9nZW5lcmF0ZV9hZF9ob2MoanNvbl9wYXJh
bWV0ZXIsIGV2ZW50X25hbWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsICIiKQor
CisgICAgICAgICAgICAgICAgcmF3X3R5cGUgPSBwYXJhbV90eXBlX2JpbmRpbmcucmVkdWNlX3Rv
X3Jhd190eXBlKCkKKyAgICAgICAgICAgICAgICByYXdfdHlwZV9iaW5kaW5nID0gUmF3VHlwZUJp
bmRpbmcocmF3X3R5cGUpCisKKyAgICAgICAgICAgICAgICBvcHRpb25hbCA9IGJvb2woanNvbl9w
YXJhbWV0ZXIuZ2V0KCJvcHRpb25hbCIpKQorCisgICAgICAgICAgICAgICAgc2V0dGVyX3R5cGUg
PSByYXdfdHlwZS5nZXRfc2V0dGVyX25hbWUoKQorCisgICAgICAgICAgICAgICAgdHlwZV9tb2Rl
bCA9IHBhcmFtX3R5cGVfYmluZGluZy5nZXRfdHlwZV9tb2RlbCgpCisgICAgICAgICAgICAgICAg
cmF3X3R5cGVfbW9kZWwgPSByYXdfdHlwZV9iaW5kaW5nLmdldF90eXBlX21vZGVsKCkKKyAgICAg
ICAgICAgICAgICBpZiBvcHRpb25hbDoKKyAgICAgICAgICAgICAgICAgICAgdHlwZV9tb2RlbCA9
IHR5cGVfbW9kZWwuZ2V0X29wdGlvbmFsKCkKKyAgICAgICAgICAgICAgICAgICAgcmF3X3R5cGVf
bW9kZWwgPSByYXdfdHlwZV9tb2RlbC5nZXRfb3B0aW9uYWwoKQorCisgICAgICAgICAgICAgICAg
YW5ub3RhdGVkX3R5cGUgPSB0eXBlX21vZGVsLmdldF9pbnB1dF9wYXJhbV90eXBlX3RleHQoKQor
ICAgICAgICAgICAgICAgIG1vZGVfdHlwZV9iaW5kaW5nID0gcGFyYW1fdHlwZV9iaW5kaW5nCisK
KyAgICAgICAgICAgICAgICBkZWNsX3BhcmFtZXRlcl9saXN0LmFwcGVuZCgiJXMgJXMiICUgKGFu
bm90YXRlZF90eXBlLCBwYXJhbWV0ZXJfbmFtZSkpCisKKyAgICAgICAgICAgICAgICBzZXR0ZXJf
YXJndW1lbnQgPSByYXdfdHlwZV9tb2RlbC5nZXRfZXZlbnRfc2V0dGVyX2V4cHJlc3Npb25fcGF0
dGVybigpICUgcGFyYW1ldGVyX25hbWUKKyAgICAgICAgICAgICAgICBpZiBtb2RlX3R5cGVfYmlu
ZGluZy5nZXRfc2V0dGVyX3ZhbHVlX2V4cHJlc3Npb25fcGF0dGVybigpOgorICAgICAgICAgICAg
ICAgICAgICBzZXR0ZXJfYXJndW1lbnQgPSBtb2RlX3R5cGVfYmluZGluZy5nZXRfc2V0dGVyX3Zh
bHVlX2V4cHJlc3Npb25fcGF0dGVybigpICUgc2V0dGVyX2FyZ3VtZW50CisKKyAgICAgICAgICAg
ICAgICBzZXR0ZXJfY29kZSA9ICIgICAgJXMtPnNldCVzKFwiJXNcIiwgJXMpO1xuIiAlIChtZXRo
b2Rfc3RydWN0X3RlbXBsYXRlLmNvbnRhaW5lcl9uYW1lLCBzZXR0ZXJfdHlwZSwgcGFyYW1ldGVy
X25hbWUsIHNldHRlcl9hcmd1bWVudCkKKyAgICAgICAgICAgICAgICBpZiBvcHRpb25hbDoKKyAg
ICAgICAgICAgICAgICAgICAgc2V0dGVyX2NvZGUgPSAoIiAgICBpZiAoJXMpXG4gICAgIiAlIHBh
cmFtZXRlcl9uYW1lKSArIHNldHRlcl9jb2RlCisgICAgICAgICAgICAgICAgbWV0aG9kX2xpbmVf
bGlzdC5hcHBlbmQoc2V0dGVyX2NvZGUpCisKKyAgICAgICAgICAgIG1ldGhvZF9zdHJ1Y3RfdGVt
cGxhdGUuYXBwZW5kX2VwaWxvZyhtZXRob2RfbGluZV9saXN0KQorCisgICAgICAgIGdlbmVyYXRv
cl9tZXRob2RfbGlzdC5hcHBlbmQobWV0aG9kX3RlbXBsYXRlLnN1YnN0aXR1dGUoTm9uZSwKKyAg
ICAgICAgICAgIGRvbWFpbk5hbWU9ZG9tYWluX25hbWUsCisgICAgICAgICAgICBwYXJhbWV0ZXJz
PSIsICIuam9pbihkZWNsX3BhcmFtZXRlcl9saXN0KSwKKyAgICAgICAgICAgIGNvZGU9IiIuam9p
bihtZXRob2RfbGluZV9saXN0KSwgKip0ZW1wbGF0ZV9wYXJhbXMpKQorCiAgICAgQHN0YXRpY21l
dGhvZAogICAgIGRlZiByZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRlX2FkX2hvYyhqc29uX3BhcmFt
LCBtZXRob2RfbmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dyaXRlciwgY29udGFpbmVy
X3JlbGF0aXZlX25hbWVfcHJlZml4X3BhcmFtKToKICAgICAgICAgcGFyYW1fbmFtZSA9IGpzb25f
cGFyYW1bIm5hbWUiXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162062</attachid>
            <date>2012-09-04 11:01:00 -0700</date>
            <delta_ts>2012-09-05 06:07:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95649-20120904220042.patch</filename>
            <type>text/plain</type>
            <size>22468</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNkZTZlMmVhMjljMGZm
MWZhMTNhMWVlYzk3ZjA4MjBlMmIyZGJkZi4uZjYxMTRmZGIyZjQzZGJjMmM5Nzk3Mjc2MTEzMzIx
OGZkM2IwYTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTAxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzdXBwb3J0IGFzeW5jaHJvbm91cyBjb21tYW5k
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTY0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEdlbmVyYXRvciBpcyBleHRlbmRlZCB0byBnZW5lcmF0ZSBjYWxsYmFjayBvYmplY3Qg
Zm9yIGVhY2ggYXN5bmNocm9ub3VzIGNvbW1hbmQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKFdyaXRlci5hcHBlbmRfbXVsdGlsaW5l
KToKKyAgICAgICAgKFdyaXRlcik6CisgICAgICAgIChXcml0ZXIuZ2V0X2luZGVudCk6CisgICAg
ICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkNsYXNzQmluZGluZy5y
ZXNvbHZlX2lubmVyLlJlc29sdmVEYXRhKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVySW1wbCk6CisgICAgICAgIChDYWxsYmFja0Jhc2UpOgorICAgICAgICAoR2VuZXJhdG9y
LnByb2Nlc3NfZXZlbnQpOgorICAgICAgICAoR2VuZXJhdG9yKToKKyAgICAgICAgKEdlbmVyYXRv
ci5FdmVudE1ldGhvZFN0cnVjdFRlbXBsYXRlKToKKyAgICAgICAgKEdlbmVyYXRvci5FdmVudE1l
dGhvZFN0cnVjdFRlbXBsYXRlLmFwcGVuZF9wcm9sb2cpOgorICAgICAgICAoR2VuZXJhdG9yLkV2
ZW50TWV0aG9kU3RydWN0VGVtcGxhdGUuYXBwZW5kX2VwaWxvZyk6CisgICAgICAgIChHZW5lcmF0
b3IucHJvY2Vzc19jb21tYW5kKToKKyAgICAgICAgKEdlbmVyYXRvci5DYWxsYmFja01ldGhvZFN0
cnVjdFRlbXBsYXRlKToKKyAgICAgICAgKEdlbmVyYXRvci5DYWxsYmFja01ldGhvZFN0cnVjdFRl
bXBsYXRlLmFwcGVuZF9wcm9sb2cpOgorICAgICAgICAoR2VuZXJhdG9yLkNhbGxiYWNrTWV0aG9k
U3RydWN0VGVtcGxhdGUuYXBwZW5kX2VwaWxvZyk6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJh
dGVfc2VuZF9tZXRob2QpOgorCiAyMDEyLTA4LTI4ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vr
b2xzYWtAZ21haWwuY29tPgogCiAgICAgICAgIENyYXNoIGluIEVkaXRpbmdTdHlsZTo6bWVyZ2VT
dHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5weQppbmRleCA4NTIyMjUzOGI0ZDNkN2U5NmZkM2NlOWUzYmQwYzkxYWYzMTk4Yzc4Li5h
NDA3Njc4YmQwOTc4ZDJlNmI3ODljM2MxYjY5ODI1YTUwODhkZjUxIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtNzcwLDYg
Kzc3MCw5IEBAIGNsYXNzIFdyaXRlcjoKICAgICAgICAgICAgIGlmIHA6CiAgICAgICAgICAgICAg
ICAgc2VsZi5uZXdsaW5lKHApCiAKKyAgICBkZWYgZ2V0X2luZGVudChzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuaW5kZW50CisKICAgICBkZWYgZ2V0X2luZGVudGVkKHNlbGYsIGFkZGl0aW9u
YWxfaW5kZW50KToKICAgICAgICAgcmV0dXJuIFdyaXRlcihzZWxmLm91dHB1dCwgc2VsZi5pbmRl
bnQgKyBhZGRpdGlvbmFsX2luZGVudCkKIApAQCAtMTExMCw3ICsxMTEzLDcgQEAgY2xhc3MgVHlw
ZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgUmVzb2x2ZURhdGE6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbl9wcm9wZXJ0aWVzID0gbWFpbgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX3Byb3BlcnRpZXMgPSBvcHRpb25hbAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190eXBlcyA9IGFkX2hvY190eXBlX2NvbnRl
eHQuYWRfaG9jX3R5cGVfbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190
eXBlcyA9IGFkX2hvY190eXBlX2xpc3QKIAogICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnJl
c29sdmVfZGF0YV8gPSBSZXNvbHZlRGF0YQogCkBAIC0xNzgzLDEwICsxNzg2LDIwIEBAICR7cmVz
cG9uc2VDb29rfQogCiAgICAgZnJvbnRlbmRfbWV0aG9kID0gc3RyaW5nLlRlbXBsYXRlKCIiInZv
aWQgSW5zcGVjdG9yRnJvbnRlbmQ6OiRkb21haW5OYW1lOjokZXZlbnROYW1lKCRwYXJhbWV0ZXJz
KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+ICR7ZXZlbnROYW1lfU1lc3NhZ2UgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICR7ZXZlbnROYW1lfU1lc3NhZ2UtPnNldFN0
cmluZygibWV0aG9kIiwgIiRkb21haW5OYW1lLiRldmVudE5hbWUiKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Cisg
ICAganNvbk1lc3NhZ2UtPnNldFN0cmluZygibWV0aG9kIiwgIiRkb21haW5OYW1lLiRldmVudE5h
bWUiKTsKICRjb2RlICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAg
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZCgke2V2ZW50
TmFtZX1NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmlu
ZygpKTsKK30KKyIiIikKKworICAgIGNhbGxiYWNrX21ldGhvZCA9IHN0cmluZy5UZW1wbGF0ZSgK
KyIiIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjokYWdlbnROYW1lOjokY2FsbGJhY2tOYW1l
OjokY2FsbGJhY2tOYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBs
PiBiYWNrZW5kSW1wbCwgaW50IGlkKSA6IENhbGxiYWNrQmFzZShiYWNrZW5kSW1wbCwgaWQpIHt9
CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OiRhZ2VudE5hbWU6OiRjYWxsYmFj
a05hbWU6OnNlbmRTdWNjZXNzKCRwYXJhbWV0ZXJzKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyRjb2RlICAg
IHNlbmRJZkFjdGl2ZShqc29uTWVzc2FnZSwgRXJyb3JTdHJpbmcoKSk7CiB9CiAiIiIpCiAKQEAg
LTE4NDUsMTEgKzE4NTgsMzAgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJJbXBsOworCiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjogcHVibGljIFJl
ZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKTsKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogCisgICAgY2xhc3MgQ2FsbGJhY2tC
YXNlOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIENhbGxiYWNrQmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1w
bD4gYmFja2VuZEltcGwsIGludCBpZCk7CisgICAgICAgIHZpcnR1YWwgfkNhbGxiYWNrQmFzZSgp
OworICAgICAgICB2b2lkIHNlbmRGYWlsdXJlKGNvbnN0IEVycm9yU3RyaW5nJik7CisgICAgICAg
IGJvb2wgaXNBY3RpdmUoKTsKKyAgICAgICAgdm9pZCBkaXNhYmxlKCkgeyBtX2FscmVhZHlTZW50
ID0gdHJ1ZTsgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHNlbmRJZkFjdGl2ZShQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFydGlhbE1lc3NhZ2UsIGNvbnN0IEVycm9yU3Ry
aW5nJiBpbnZvY2F0aW9uRXJyb3IpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgUmVmUHRyPElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1wbD4gbV9iYWNrZW5kSW1wbDsKKyAgICAgICAgaW50
IG1faWQ7CisgICAgICAgIGJvb2wgbV9hbHJlYWR5U2VudDsKKyAgICB9OworCiAkYWdlbnRJbnRl
cmZhY2VzCiAkdmlydHVhbFNldHRlcnMKIApAQCAtMTkyMCw2ICsxOTUyLDkgQEAgJGNvbnN0cnVj
dG9ySW5pdAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcq
IGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gZGF0YSkgY29uc3Q7CiAgICAgdXNpbmcgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3I7CiAKKyAgICB2b2lk
IHNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJl
c3VsdCwgRXJyb3JTdHJpbmcgaW52b2NhdGlvbkVycm9yKTsKKyAgICBib29sIGlzQWN0aXZlKCkg
eyByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7IH0KKwogJHNldHRlcnMKIHByaXZh
dGU6CiAkbWV0aG9kRGVjbGFyYXRpb25zCkBAIC0yMDE3LDYgKzIwNTIsMTEgQEAgdm9pZCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckltcGw6OnNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUGFz
c1JlZlB0cjxJbnNwZWMKICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnZh
bGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIHByb3RvY29sRXJyb3JzKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKyAgICBzZW5kUmVzcG9uc2UoY2FsbElkLCByZXN1bHQsIGludm9jYXRpb25FcnJv
cik7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBsOjpzZW5kUmVzcG9u
c2UobG9uZyBjYWxsSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQsIEVycm9y
U3RyaW5nIGludm9jYXRpb25FcnJvcikKK3sKICAgICBpZiAoaW52b2NhdGlvbkVycm9yLmxlbmd0
aCgpKSB7CiAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgU2VydmVyRXJyb3Is
IGludm9jYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTIxNTQsNiArMjE5NCwzMCBA
QCBib29sIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRDb21tYW5kTmFtZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIFN0cmluZyogcgogICAgIHJldHVybiB0cnVlOwogfQogCitJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFja0Jhc2UoUGFzc1JlZlB0
cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckltcGw+IGJhY2tlbmRJbXBsLCBpbnQgaWQpCisg
ICAgOiBtX2JhY2tlbmRJbXBsKGJhY2tlbmRJbXBsKSwgbV9pZChpZCksIG1fYWxyZWFkeVNlbnQo
ZmFsc2UpIHt9CisKK0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6On5D
YWxsYmFja0Jhc2UoKSB7fQorCit2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2U6OnNlbmRGYWlsdXJlKGNvbnN0IEVycm9yU3RyaW5nJiBlcnJvcikKK3sKKyAgICBB
U1NFUlQoZXJyb3IubGVuZ3RoKCkpOworICAgIHNlbmRJZkFjdGl2ZSgwLCBlcnJvcik7Cit9CisK
K2Jvb2wgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6aXNBY3RpdmUo
KQoreworICAgIHJldHVybiAhbV9hbHJlYWR5U2VudCAmJiBtX2JhY2tlbmRJbXBsLT5pc0FjdGl2
ZSgpOworfQorCit2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6
OnNlbmRJZkFjdGl2ZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFydGlhbE1lc3NhZ2Us
IGNvbnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0aW9uRXJyb3IpCit7CisgICAgaWYgKG1fYWxyZWFk
eVNlbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2JhY2tlbmRJbXBsLT5zZW5kUmVzcG9uc2Uo
bV9pZCwgcGFydGlhbE1lc3NhZ2UsIGludm9jYXRpb25FcnJvcik7CisgICAgbV9hbHJlYWR5U2Vu
dCA9IHRydWU7Cit9CisKIENPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OmtNZXRob2ROYW1lc0VudW1TaXplKSA9PSBXVEZfQVJSQVlfTEVO
R1RIKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjb21tYW5kTmFtZXMpLCBjb21tYW5kX25h
bWVfYXJyYXlfcHJvYmxlbSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKQEAgLTI3MjcsNTkg
KzI3OTEsNDEgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgIGRlZiBwcm9jZXNzX2V2ZW50KGpzb25f
ZXZlbnQsIGRvbWFpbl9uYW1lLCBmcm9udGVuZF9tZXRob2RfZGVjbGFyYXRpb25fbGluZXMpOgog
ICAgICAgICBldmVudF9uYW1lID0ganNvbl9ldmVudFsibmFtZSJdCiAKLSAgICAgICAgcGFyYW1l
dGVyX2xpc3QgPSBbXQotICAgICAgICBtZXRob2RfbGluZV9saXN0ID0gW10KLSAgICAgICAgYmFj
a2VuZF9qc19ldmVudF9wYXJhbV9saXN0ID0gW10KICAgICAgICAgYWRfaG9jX3R5cGVfb3V0cHV0
ID0gW10KICAgICAgICAgZnJvbnRlbmRfbWV0aG9kX2RlY2xhcmF0aW9uX2xpbmVzLmFwcGVuZChh
ZF9ob2NfdHlwZV9vdXRwdXQpCiAgICAgICAgIGFkX2hvY190eXBlX3dyaXRlciA9IFdyaXRlcihh
ZF9ob2NfdHlwZV9vdXRwdXQsICIgICAgICAgICIpCi0gICAgICAgIGlmICJwYXJhbWV0ZXJzIiBp
biBqc29uX2V2ZW50OgotICAgICAgICAgICAgbWV0aG9kX2xpbmVfbGlzdC5hcHBlbmQoIiAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpO1xuIikKLSAgICAgICAgICAgIGZvciBqc29uX3BhcmFtZXRlciBpbiBqc29uX2V2ZW50
WyJwYXJhbWV0ZXJzIl06Ci0gICAgICAgICAgICAgICAgcGFyYW1ldGVyX25hbWUgPSBqc29uX3Bh
cmFtZXRlclsibmFtZSJdCi0KLSAgICAgICAgICAgICAgICBwYXJhbV90eXBlX2JpbmRpbmcgPSBH
ZW5lcmF0b3IucmVzb2x2ZV90eXBlX2FuZF9nZW5lcmF0ZV9hZF9ob2MoanNvbl9wYXJhbWV0ZXIs
IGV2ZW50X25hbWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsICIiKQotCi0gICAg
ICAgICAgICAgICAgcmF3X3R5cGUgPSBwYXJhbV90eXBlX2JpbmRpbmcucmVkdWNlX3RvX3Jhd190
eXBlKCkKLSAgICAgICAgICAgICAgICByYXdfdHlwZV9iaW5kaW5nID0gUmF3VHlwZUJpbmRpbmco
cmF3X3R5cGUpCi0KLSAgICAgICAgICAgICAgICBvcHRpb25hbCA9IGJvb2woanNvbl9wYXJhbWV0
ZXIuZ2V0KCJvcHRpb25hbCIpKQotCi0gICAgICAgICAgICAgICAgc2V0dGVyX3R5cGUgPSByYXdf
dHlwZS5nZXRfc2V0dGVyX25hbWUoKQotCi0gICAgICAgICAgICAgICAgdHlwZV9tb2RlbCA9IHBh
cmFtX3R5cGVfYmluZGluZy5nZXRfdHlwZV9tb2RlbCgpCi0gICAgICAgICAgICAgICAgcmF3X3R5
cGVfbW9kZWwgPSByYXdfdHlwZV9iaW5kaW5nLmdldF90eXBlX21vZGVsKCkKLSAgICAgICAgICAg
ICAgICBpZiBvcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgdHlwZV9tb2RlbCA9IHR5cGVf
bW9kZWwuZ2V0X29wdGlvbmFsKCkKLSAgICAgICAgICAgICAgICAgICAgcmF3X3R5cGVfbW9kZWwg
PSByYXdfdHlwZV9tb2RlbC5nZXRfb3B0aW9uYWwoKQotCi0gICAgICAgICAgICAgICAgYW5ub3Rh
dGVkX3R5cGUgPSB0eXBlX21vZGVsLmdldF9pbnB1dF9wYXJhbV90eXBlX3RleHQoKQotICAgICAg
ICAgICAgICAgIG1vZGVfdHlwZV9iaW5kaW5nID0gcGFyYW1fdHlwZV9iaW5kaW5nCiAKLSAgICAg
ICAgICAgICAgICBwYXJhbWV0ZXJfbGlzdC5hcHBlbmQoIiVzICVzIiAlIChhbm5vdGF0ZWRfdHlw
ZSwgcGFyYW1ldGVyX25hbWUpKQorICAgICAgICBkZWNsX3BhcmFtZXRlcl9saXN0ID0gW10KIAot
ICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1bWVudCA9IHJhd190eXBlX21vZGVsLmdldF9ldmVu
dF9zZXR0ZXJfZXhwcmVzc2lvbl9wYXR0ZXJuKCkgJSBwYXJhbWV0ZXJfbmFtZQotICAgICAgICAg
ICAgICAgIGlmIG1vZGVfdHlwZV9iaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9w
YXR0ZXJuKCk6Ci0gICAgICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1bWVudCA9IG1vZGVfdHlw
ZV9iaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCkgJSBzZXR0ZXJf
YXJndW1lbnQKLQotICAgICAgICAgICAgICAgIHNldHRlcl9jb2RlID0gIiAgICBwYXJhbXNPYmpl
Y3QtPnNldCVzKFwiJXNcIiwgJXMpO1xuIiAlIChzZXR0ZXJfdHlwZSwgcGFyYW1ldGVyX25hbWUs
IHNldHRlcl9hcmd1bWVudCkKLSAgICAgICAgICAgICAgICBpZiBvcHRpb25hbDoKLSAgICAgICAg
ICAgICAgICAgICAgc2V0dGVyX2NvZGUgPSAoIiAgICBpZiAoJXMpXG4gICAgIiAlIHBhcmFtZXRl
cl9uYW1lKSArIHNldHRlcl9jb2RlCi0gICAgICAgICAgICAgICAgbWV0aG9kX2xpbmVfbGlzdC5h
cHBlbmQoc2V0dGVyX2NvZGUpCisgICAgICAgIGpzb25fcGFyYW1ldGVycyA9IGpzb25fZXZlbnQu
Z2V0KCJwYXJhbWV0ZXJzIikKKyAgICAgICAgR2VuZXJhdG9yLmdlbmVyYXRlX3NlbmRfbWV0aG9k
KGpzb25fcGFyYW1ldGVycywgZXZlbnRfbmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dy
aXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xfcGFyYW1l
dGVyX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
b3IuRXZlbnRNZXRob2RTdHJ1Y3RUZW1wbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRvci5mcm9udGVuZF9tZXRob2RfbGlzdCwgVGVtcGxhdGVzLmZy
b250ZW5kX21ldGhvZCwgeyJldmVudE5hbWUiOiBldmVudF9uYW1lfSkKIAorICAgICAgICBiYWNr
ZW5kX2pzX2V2ZW50X3BhcmFtX2xpc3QgPSBbXQorICAgICAgICBpZiBqc29uX3BhcmFtZXRlcnM6
CisgICAgICAgICAgICBmb3IgcGFyYW1ldGVyIGluIGpzb25fcGFyYW1ldGVyczoKKyAgICAgICAg
ICAgICAgICBwYXJhbWV0ZXJfbmFtZSA9IHBhcmFtZXRlclsibmFtZSJdCiAgICAgICAgICAgICAg
ICAgYmFja2VuZF9qc19ldmVudF9wYXJhbV9saXN0LmFwcGVuZCgiXCIlc1wiIiAlIHBhcmFtZXRl
cl9uYW1lKQotICAgICAgICAgICAgbWV0aG9kX2xpbmVfbGlzdC5hcHBlbmQoIiAgICAlc01lc3Nh
Z2UtPnNldE9iamVjdChcInBhcmFtc1wiLCBwYXJhbXNPYmplY3QpO1xuIiAlIGV2ZW50X25hbWUp
Ci0gICAgICAgIGZyb250ZW5kX21ldGhvZF9kZWNsYXJhdGlvbl9saW5lcy5hcHBlbmQoCi0gICAg
ICAgICAgICAiICAgICAgICB2b2lkICVzKCVzKTtcbiIgJSAoZXZlbnRfbmFtZSwgIiwgIi5qb2lu
KHBhcmFtZXRlcl9saXN0KSkpCiAKLSAgICAgICAgR2VuZXJhdG9yLmZyb250ZW5kX21ldGhvZF9s
aXN0LmFwcGVuZChUZW1wbGF0ZXMuZnJvbnRlbmRfbWV0aG9kLnN1YnN0aXR1dGUoTm9uZSwKLSAg
ICAgICAgICAgIGRvbWFpbk5hbWU9ZG9tYWluX25hbWUsIGV2ZW50TmFtZT1ldmVudF9uYW1lLAot
ICAgICAgICAgICAgcGFyYW1ldGVycz0iLCAiLmpvaW4ocGFyYW1ldGVyX2xpc3QpLAotICAgICAg
ICAgICAgY29kZT0iIi5qb2luKG1ldGhvZF9saW5lX2xpc3QpKSkKKyAgICAgICAgZnJvbnRlbmRf
bWV0aG9kX2RlY2xhcmF0aW9uX2xpbmVzLmFwcGVuZCgKKyAgICAgICAgICAgICIgICAgICAgIHZv
aWQgJXMoJXMpO1xuIiAlIChldmVudF9uYW1lLCAiLCAiLmpvaW4oZGVjbF9wYXJhbWV0ZXJfbGlz
dCkpKQogCiAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2pzX2RvbWFpbl9pbml0aWFsaXplcl9s
aXN0LmFwcGVuZCgiSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckV2ZW50KFwiJXMuJXNcIiwgWyVz
XSk7XG4iICUgKAogICAgICAgICAgICAgZG9tYWluX25hbWUsIGV2ZW50X25hbWUsICIsICIuam9p
bihiYWNrZW5kX2pzX2V2ZW50X3BhcmFtX2xpc3QpKSkKIAorICAgIGNsYXNzIEV2ZW50TWV0aG9k
U3RydWN0VGVtcGxhdGU6CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGFwcGVu
ZF9wcm9sb2cobGluZV9saXN0KToKKyAgICAgICAgICAgIGxpbmVfbGlzdC5hcHBlbmQoIiAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpO1xuIikKKworICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBhcHBlbmRf
ZXBpbG9nKGxpbmVfbGlzdCk6CisgICAgICAgICAgICBsaW5lX2xpc3QuYXBwZW5kKCIgICAganNv
bk1lc3NhZ2UtPnNldE9iamVjdChcInBhcmFtc1wiLCBwYXJhbXNPYmplY3QpO1xuIikKKworICAg
ICAgICBjb250YWluZXJfbmFtZSA9ICJwYXJhbXNPYmplY3QiCisKICAgICBAc3RhdGljbWV0aG9k
CiAgICAgZGVmIHByb2Nlc3NfY29tbWFuZChqc29uX2NvbW1hbmQsIGRvbWFpbl9uYW1lLCBhZ2Vu
dF9maWVsZF9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSk6CiAgICAgICAgIGpzb25fY29tbWFu
ZF9uYW1lID0ganNvbl9jb21tYW5kWyJuYW1lIl0KQEAgLTI4MDAsNyArMjg0Niw2IEBAIGNsYXNz
IEdlbmVyYXRvcjoKICAgICAgICAgbWV0aG9kX291dF9jb2RlID0gIiIKICAgICAgICAgYWdlbnRf
Y2FsbF9wYXJhbV9saXN0ID0gW10KICAgICAgICAgcmVzcG9uc2VfY29va19saXN0ID0gW10KLSAg
ICAgICAgYmFja2VuZF9qc19yZXBseV9wYXJhbV9saXN0ID0gW10KICAgICAgICAgcmVxdWVzdF9t
ZXNzYWdlX3BhcmFtID0gIiIKICAgICAgICAganNfcGFyYW1ldGVyc190ZXh0ID0gIiIKICAgICAg
ICAgaWYgInBhcmFtZXRlcnMiIGluIGpzb25fY29tbWFuZDoKQEAgLTI4NTUsNTggKzI5MDAsODkg
QEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAganNfcGFyYW1ldGVyc190ZXh0ID0gIiwg
Ii5qb2luKGpzX3BhcmFtX2xpc3QpCiAKICAgICAgICAgcmVzcG9uc2VfY29va190ZXh0ID0gIiIK
LSAgICAgICAganNfcmVwbHlfbGlzdCA9ICJbXSIKLSAgICAgICAgaWYgInJldHVybnMiIGluIGpz
b25fY29tbWFuZDoKLSAgICAgICAgICAgIG1ldGhvZF9vdXRfY29kZSArPSAiXG4iCi0gICAgICAg
ICAgICBmb3IganNvbl9yZXR1cm4gaW4ganNvbl9jb21tYW5kWyJyZXR1cm5zIl06CisgICAgICAg
IGlmIGpzb25fY29tbWFuZC5nZXQoImFzeW5jIikgPT0gVHJ1ZToKKyAgICAgICAgICAgIGNhbGxi
YWNrX25hbWUgPSBDYXBpdGFsaXplci5sb3dlcl9jYW1lbF9jYXNlX3RvX3VwcGVyKGpzb25fY29t
bWFuZF9uYW1lKSArICJDYWxsYmFjayIKKworICAgICAgICAgICAgY2FsbGJhY2tfb3V0cHV0ID0g
W10KKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlciA9IFdyaXRlcihjYWxsYmFja19vdXRwdXQs
IGFkX2hvY190eXBlX3dyaXRlci5nZXRfaW5kZW50KCkpCisKKyAgICAgICAgICAgIGRlY2xfcGFy
YW1ldGVyX2xpc3QgPSBbXQorICAgICAgICAgICAgR2VuZXJhdG9yLmdlbmVyYXRlX3NlbmRfbWV0
aG9kKGpzb25fY29tbWFuZC5nZXQoInJldHVybnMiKSwganNvbl9jb21tYW5kX25hbWUsIGRvbWFp
bl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVjbF9wYXJhbWV0ZXJfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3IuQ2FsbGJhY2tNZXRob2RTdHJ1Y3RUZW1w
bGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
b3IuYmFja2VuZF9tZXRob2RfaW1wbGVtZW50YXRpb25fbGlzdCwgVGVtcGxhdGVzLmNhbGxiYWNr
X21ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImNh
bGxiYWNrTmFtZSI6IGNhbGxiYWNrX25hbWUsICJhZ2VudE5hbWUiOiBhZ2VudF9pbnRlcmZhY2Vf
bmFtZX0pCisKKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCJjbGFzcyAiICsg
Y2FsbGJhY2tfbmFtZSArICIgOiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHtcbiIpCisgICAgICAgICAg
ICBjYWxsYmFja193cml0ZXIubmV3bGluZSgicHVibGljOlxuIikKKyAgICAgICAgICAgIGNhbGxi
YWNrX3dyaXRlci5uZXdsaW5lKCIgICAgIiArIGNhbGxiYWNrX25hbWUgKyAiKFBhc3NSZWZQdHI8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBsPiwgaW50IGlkKTtcbiIpCisgICAgICAgICAg
ICBjYWxsYmFja193cml0ZXIubmV3bGluZSgiICAgIHZvaWQgc2VuZFN1Y2Nlc3MoIiArICIsICIu
am9pbihkZWNsX3BhcmFtZXRlcl9saXN0KSArICIpO1xuIikKKyAgICAgICAgICAgIGNhbGxiYWNr
X3dyaXRlci5uZXdsaW5lKCJ9O1xuIikKKworICAgICAgICAgICAgYWRfaG9jX3R5cGVfb3V0cHV0
LmFwcGVuZChjYWxsYmFja19vdXRwdXQpCisKKyAgICAgICAgICAgIG1ldGhvZF9vdXRfY29kZSAr
PSAiICAgIFJlZlB0cjwiICsgYWdlbnRfaW50ZXJmYWNlX25hbWUgKyAiOjoiICsgY2FsbGJhY2tf
bmFtZSArICI+IGNhbGxiYWNrID0gYWRvcHRSZWYobmV3ICIgKyBhZ2VudF9pbnRlcmZhY2VfbmFt
ZSArICI6OiIgKyBjYWxsYmFja19uYW1lICsgIih0aGlzLCBjYWxsSWQpKTtcbiIKKyAgICAgICAg
ICAgIGFnZW50X2NhbGxfcGFyYW1fbGlzdC5hcHBlbmQoIiwgY2FsbGJhY2siKQorICAgICAgICAg
ICAgcmVzcG9uc2VfY29va190ZXh0ICs9ICIgICAgICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIFxu
IgorICAgICAgICAgICAgcmVzcG9uc2VfY29va190ZXh0ICs9ICIgICAgICAgICAgICByZXR1cm47
XG4iCisgICAgICAgICAgICByZXNwb25zZV9jb29rX3RleHQgKz0gIiAgICAgICAgY2FsbGJhY2st
PmRpc2FibGUoKTtcbiIKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVy
ZmFjZV9saXN0LmFwcGVuZCgiLCBjb25zdCBSZWZQdHI8JXM+JiBjYWxsYmFjayIgJSBjYWxsYmFj
a19uYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgInJldHVybnMiIGluIGpzb25f
Y29tbWFuZDoKKyAgICAgICAgICAgICAgICBtZXRob2Rfb3V0X2NvZGUgKz0gIlxuIgorICAgICAg
ICAgICAgICAgIGZvciBqc29uX3JldHVybiBpbiBqc29uX2NvbW1hbmRbInJldHVybnMiXToKIAot
ICAgICAgICAgICAgICAgIGpzb25fcmV0dXJuX25hbWUgPSBqc29uX3JldHVyblsibmFtZSJdCisg
ICAgICAgICAgICAgICAgICAgIGpzb25fcmV0dXJuX25hbWUgPSBqc29uX3JldHVyblsibmFtZSJd
CiAKLSAgICAgICAgICAgICAgICBvcHRpb25hbCA9IGJvb2woanNvbl9yZXR1cm4uZ2V0KCJvcHRp
b25hbCIpKQorICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCA9IGJvb2woanNvbl9yZXR1cm4u
Z2V0KCJvcHRpb25hbCIpKQogCi0gICAgICAgICAgICAgICAgcmV0dXJuX3R5cGVfYmluZGluZyA9
IEdlbmVyYXRvci5yZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRlX2FkX2hvYyhqc29uX3JldHVybiwg
anNvbl9jb21tYW5kX25hbWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsIGFnZW50
X2ludGVyZmFjZV9uYW1lICsgIjo6IikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3R5cGVf
YmluZGluZyA9IEdlbmVyYXRvci5yZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRlX2FkX2hvYyhqc29u
X3JldHVybiwganNvbl9jb21tYW5kX25hbWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93cml0
ZXIsIGFnZW50X2ludGVyZmFjZV9uYW1lICsgIjo6IikKIAotICAgICAgICAgICAgICAgIHJhd190
eXBlID0gcmV0dXJuX3R5cGVfYmluZGluZy5yZWR1Y2VfdG9fcmF3X3R5cGUoKQotICAgICAgICAg
ICAgICAgIHNldHRlcl90eXBlID0gcmF3X3R5cGUuZ2V0X3NldHRlcl9uYW1lKCkKLSAgICAgICAg
ICAgICAgICBpbml0aWFsaXplciA9IHJhd190eXBlLmdldF9jX2luaXRpYWxpemVyKCkKKyAgICAg
ICAgICAgICAgICAgICAgcmF3X3R5cGUgPSByZXR1cm5fdHlwZV9iaW5kaW5nLnJlZHVjZV90b19y
YXdfdHlwZSgpCisgICAgICAgICAgICAgICAgICAgIHNldHRlcl90eXBlID0gcmF3X3R5cGUuZ2V0
X3NldHRlcl9uYW1lKCkKKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXIgPSByYXdfdHlw
ZS5nZXRfY19pbml0aWFsaXplcigpCiAKLSAgICAgICAgICAgICAgICB0eXBlX21vZGVsID0gcmV0
dXJuX3R5cGVfYmluZGluZy5nZXRfdHlwZV9tb2RlbCgpCi0gICAgICAgICAgICAgICAgaWYgb3B0
aW9uYWw6Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSB0eXBlX21vZGVsLmdldF9v
cHRpb25hbCgpCisgICAgICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSByZXR1cm5fdHlwZV9i
aW5kaW5nLmdldF90eXBlX21vZGVsKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgb3B0aW9uYWw6
CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX21vZGVsID0gdHlwZV9tb2RlbC5nZXRfb3B0
aW9uYWwoKQogCi0gICAgICAgICAgICAgICAgY29kZSA9ICIgICAgJXMgb3V0XyVzO1xuIiAlICh0
eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X3JldHVybl92YXJf
dHlwZSgpLCBqc29uX3JldHVybl9uYW1lKQotICAgICAgICAgICAgICAgIHBhcmFtID0gIiwgJXNv
dXRfJXMiICUgKHR5cGVfbW9kZWwuZ2V0X2NvbW1hbmRfcmV0dXJuX3Bhc3NfbW9kZWwoKS5nZXRf
b3V0cHV0X2FyZ3VtZW50X3ByZWZpeCgpLCBqc29uX3JldHVybl9uYW1lKQotICAgICAgICAgICAg
ICAgIHZhcl9uYW1lID0gIm91dF8lcyIgJSBqc29uX3JldHVybl9uYW1lCi0gICAgICAgICAgICAg
ICAgc2V0dGVyX2FyZ3VtZW50ID0gdHlwZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5fcGFzc19t
b2RlbCgpLmdldF9vdXRwdXRfdG9fcmF3X2V4cHJlc3Npb24oKSAlIHZhcl9uYW1lCi0gICAgICAg
ICAgICAgICAgaWYgcmV0dXJuX3R5cGVfYmluZGluZy5nZXRfc2V0dGVyX3ZhbHVlX2V4cHJlc3Np
b25fcGF0dGVybigpOgotICAgICAgICAgICAgICAgICAgICBzZXR0ZXJfYXJndW1lbnQgPSByZXR1
cm5fdHlwZV9iaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCkgJSBz
ZXR0ZXJfYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9ICIgICAgJXMgb3V0XyVz
O1xuIiAlICh0eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X3Jl
dHVybl92YXJfdHlwZSgpLCBqc29uX3JldHVybl9uYW1lKQorICAgICAgICAgICAgICAgICAgICBw
YXJhbSA9ICIsICVzb3V0XyVzIiAlICh0eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNz
X21vZGVsKCkuZ2V0X291dHB1dF9hcmd1bWVudF9wcmVmaXgoKSwganNvbl9yZXR1cm5fbmFtZSkK
KyAgICAgICAgICAgICAgICAgICAgdmFyX25hbWUgPSAib3V0XyVzIiAlIGpzb25fcmV0dXJuX25h
bWUKKyAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0gdHlwZV9tb2RlbC5nZXRf
Y29tbWFuZF9yZXR1cm5fcGFzc19tb2RlbCgpLmdldF9vdXRwdXRfdG9fcmF3X2V4cHJlc3Npb24o
KSAlIHZhcl9uYW1lCisgICAgICAgICAgICAgICAgICAgIGlmIHJldHVybl90eXBlX2JpbmRpbmcu
Z2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNldHRlcl9hcmd1bWVudCA9IHJldHVybl90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92
YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKSAlIHNldHRlcl9hcmd1bWVudAogCi0gICAgICAgICAg
ICAgICAgY29vayA9ICIgICAgICAgICAgICByZXN1bHQtPnNldCVzKFwiJXNcIiwgJXMpO1xuIiAl
IChzZXR0ZXJfdHlwZSwganNvbl9yZXR1cm5fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50
KQorICAgICAgICAgICAgICAgICAgICBjb29rID0gIiAgICAgICAgICAgIHJlc3VsdC0+c2V0JXMo
XCIlc1wiLCAlcyk7XG4iICUgKHNldHRlcl90eXBlLCBqc29uX3JldHVybl9uYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldHRlcl9hcmd1bWVudCkKIAotICAgICAgICAgICAgICAgIHNldF9jb25kaXRp
b25fcGF0dGVybiA9IHR5cGVfbW9kZWwuZ2V0X2NvbW1hbmRfcmV0dXJuX3Bhc3NfbW9kZWwoKS5n
ZXRfc2V0X3JldHVybl9jb25kaXRpb24oKQotICAgICAgICAgICAgICAgIGlmIHNldF9jb25kaXRp
b25fcGF0dGVybjoKLSAgICAgICAgICAgICAgICAgICAgY29vayA9ICgiICAgICAgICAgICAgaWYg
KCVzKVxuICAgICIgJSAoc2V0X2NvbmRpdGlvbl9wYXR0ZXJuICUgdmFyX25hbWUpKSArIGNvb2sK
LSAgICAgICAgICAgICAgICBhbm5vdGF0ZWRfdHlwZSA9IHR5cGVfbW9kZWwuZ2V0X2NvbW1hbmRf
cmV0dXJuX3Bhc3NfbW9kZWwoKS5nZXRfb3V0cHV0X3BhcmFtZXRlcl90eXBlKCkKKyAgICAgICAg
ICAgICAgICAgICAgc2V0X2NvbmRpdGlvbl9wYXR0ZXJuID0gdHlwZV9tb2RlbC5nZXRfY29tbWFu
ZF9yZXR1cm5fcGFzc19tb2RlbCgpLmdldF9zZXRfcmV0dXJuX2NvbmRpdGlvbigpCisgICAgICAg
ICAgICAgICAgICAgIGlmIHNldF9jb25kaXRpb25fcGF0dGVybjoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvb2sgPSAoIiAgICAgICAgICAgIGlmICglcylcbiAgICAiICUgKHNldF9jb25kaXRp
b25fcGF0dGVybiAlIHZhcl9uYW1lKSkgKyBjb29rCisgICAgICAgICAgICAgICAgICAgIGFubm90
YXRlZF90eXBlID0gdHlwZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5fcGFzc19tb2RlbCgpLmdl
dF9vdXRwdXRfcGFyYW1ldGVyX3R5cGUoKQogCi0gICAgICAgICAgICAgICAgcGFyYW1fbmFtZSA9
ICJvdXRfJXMiICUganNvbl9yZXR1cm5fbmFtZQotICAgICAgICAgICAgICAgIGlmIG9wdGlvbmFs
OgotICAgICAgICAgICAgICAgICAgICBwYXJhbV9uYW1lID0gIm9wdF8iICsgcGFyYW1fbmFtZQor
ICAgICAgICAgICAgICAgICAgICBwYXJhbV9uYW1lID0gIm91dF8lcyIgJSBqc29uX3JldHVybl9u
YW1lCisgICAgICAgICAgICAgICAgICAgIGlmIG9wdGlvbmFsOgorICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1fbmFtZSA9ICJvcHRfIiArIHBhcmFtX25hbWUKIAotICAgICAgICAgICAgICAg
IEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiLCAlcyAlcyIg
JSAoYW5ub3RhdGVkX3R5cGUsIHBhcmFtX25hbWUpKQotICAgICAgICAgICAgICAgIHJlc3BvbnNl
X2Nvb2tfbGlzdC5hcHBlbmQoY29vaykKKyAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yLmJh
Y2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIsICVzICVzIiAlIChhbm5vdGF0ZWRf
dHlwZSwgcGFyYW1fbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2Nvb2tfbGlz
dC5hcHBlbmQoY29vaykKIAotICAgICAgICAgICAgICAgIG1ldGhvZF9vdXRfY29kZSArPSBjb2Rl
Ci0gICAgICAgICAgICAgICAgYWdlbnRfY2FsbF9wYXJhbV9saXN0LmFwcGVuZChwYXJhbSkKKyAg
ICAgICAgICAgICAgICAgICAgbWV0aG9kX291dF9jb2RlICs9IGNvZGUKKyAgICAgICAgICAgICAg
ICAgICAgYWdlbnRfY2FsbF9wYXJhbV9saXN0LmFwcGVuZChwYXJhbSkKIAotICAgICAgICAgICAg
ICAgIGJhY2tlbmRfanNfcmVwbHlfcGFyYW1fbGlzdC5hcHBlbmQoIlwiJXNcIiIgJSBqc29uX3Jl
dHVybl9uYW1lKQorICAgICAgICAgICAgICAgIHJlc3BvbnNlX2Nvb2tfdGV4dCA9ICIiLmpvaW4o
cmVzcG9uc2VfY29va19saXN0KQogCi0gICAgICAgICAgICBqc19yZXBseV9saXN0ID0gIlslc10i
ICUgIiwgIi5qb2luKGJhY2tlbmRfanNfcmVwbHlfcGFyYW1fbGlzdCkKKyAgICAgICAgICAgICAg
ICBpZiBsZW4ocmVzcG9uc2VfY29va190ZXh0KSAhPSAwOgorICAgICAgICAgICAgICAgICAgICBy
ZXNwb25zZV9jb29rX3RleHQgPSAiICAgICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKSB7XG4iICsg
cmVzcG9uc2VfY29va190ZXh0ICsgIiAgICAgICAgfSIKIAotICAgICAgICAgICAgcmVzcG9uc2Vf
Y29va190ZXh0ID0gIiIuam9pbihyZXNwb25zZV9jb29rX2xpc3QpCisgICAgICAgIGJhY2tlbmRf
anNfcmVwbHlfcGFyYW1fbGlzdCA9IFtdCisgICAgICAgIGlmICJyZXR1cm5zIiBpbiBqc29uX2Nv
bW1hbmQ6CisgICAgICAgICAgICBmb3IganNvbl9yZXR1cm4gaW4ganNvbl9jb21tYW5kWyJyZXR1
cm5zIl06CisgICAgICAgICAgICAgICAganNvbl9yZXR1cm5fbmFtZSA9IGpzb25fcmV0dXJuWyJu
YW1lIl0KKyAgICAgICAgICAgICAgICBiYWNrZW5kX2pzX3JlcGx5X3BhcmFtX2xpc3QuYXBwZW5k
KCJcIiVzXCIiICUganNvbl9yZXR1cm5fbmFtZSkKIAotICAgICAgICAgICAgaWYgbGVuKHJlc3Bv
bnNlX2Nvb2tfdGV4dCkgIT0gMDoKLSAgICAgICAgICAgICAgICByZXNwb25zZV9jb29rX3RleHQg
PSAiICAgICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKSB7XG4iICsgcmVzcG9uc2VfY29va190ZXh0
ICsgIiAgICAgICAgfSIKKyAgICAgICAganNfcmVwbHlfbGlzdCA9ICJbJXNdIiAlICIsICIuam9p
bihiYWNrZW5kX2pzX3JlcGx5X3BhcmFtX2xpc3QpCiAKICAgICAgICAgR2VuZXJhdG9yLmJhY2tl
bmRfbWV0aG9kX2ltcGxlbWVudGF0aW9uX2xpc3QuYXBwZW5kKFRlbXBsYXRlcy5iYWNrZW5kX21l
dGhvZC5zdWJzdGl0dXRlKE5vbmUsCiAgICAgICAgICAgICBkb21haW5OYW1lPWRvbWFpbl9uYW1l
LCBtZXRob2ROYW1lPWpzb25fY29tbWFuZF9uYW1lLApAQCAtMjkyMiw2ICsyOTk4LDY0IEBAIGNs
YXNzIEdlbmVyYXRvcjoKICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfanNfZG9tYWluX2luaXRp
YWxpemVyX2xpc3QuYXBwZW5kKCJJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZChcIiVz
LiVzXCIsIFslc10sICVzKTtcbiIgJSAoZG9tYWluX25hbWUsIGpzb25fY29tbWFuZF9uYW1lLCBq
c19wYXJhbWV0ZXJzX3RleHQsIGpzX3JlcGx5X2xpc3QpKQogICAgICAgICBHZW5lcmF0b3IuYmFj
a2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIikgPSAwO1xuIikKIAorICAgIGNsYXNz
IENhbGxiYWNrTWV0aG9kU3RydWN0VGVtcGxhdGU6CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAg
ICAgICAgZGVmIGFwcGVuZF9wcm9sb2cobGluZV9saXN0KToKKyAgICAgICAgICAgIHBhc3MKKwor
ICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBhcHBlbmRfZXBpbG9nKGxpbmVfbGlz
dCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY29udGFpbmVyX25hbWUgPSAianNvbk1l
c3NhZ2UiCisKKyAgICAjIEdlbmVyYXRlcyBjb21tb24gY29kZSBmb3IgZXZlbnQgc2VuZGluZyBh
bmQgY2FsbGJhY2sgcmVzcG9uc2UgZGF0YSBzZW5kaW5nLgorICAgIEBzdGF0aWNtZXRob2QKKyAg
ICBkZWYgZ2VuZXJhdGVfc2VuZF9tZXRob2QocGFyYW1ldGVycywgZXZlbnRfbmFtZSwgZG9tYWlu
X25hbWUsIGFkX2hvY190eXBlX3dyaXRlciwgZGVjbF9wYXJhbWV0ZXJfbGlzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWV0aG9kX3N0cnVjdF90ZW1wbGF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yX21ldGhvZF9saXN0LCBtZXRob2RfdGVtcGxhdGUs
IHRlbXBsYXRlX3BhcmFtcyk6CisgICAgICAgIG1ldGhvZF9saW5lX2xpc3QgPSBbXQorICAgICAg
ICBpZiBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgbWV0aG9kX3N0cnVjdF90ZW1wbGF0ZS5hcHBl
bmRfcHJvbG9nKG1ldGhvZF9saW5lX2xpc3QpCisgICAgICAgICAgICBmb3IganNvbl9wYXJhbWV0
ZXIgaW4gcGFyYW1ldGVyczoKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfbmFtZSA9IGpzb25f
cGFyYW1ldGVyWyJuYW1lIl0KKworICAgICAgICAgICAgICAgIHBhcmFtX3R5cGVfYmluZGluZyA9
IEdlbmVyYXRvci5yZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRlX2FkX2hvYyhqc29uX3BhcmFtZXRl
ciwgZXZlbnRfbmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dyaXRlciwgIiIpCisKKyAg
ICAgICAgICAgICAgICByYXdfdHlwZSA9IHBhcmFtX3R5cGVfYmluZGluZy5yZWR1Y2VfdG9fcmF3
X3R5cGUoKQorICAgICAgICAgICAgICAgIHJhd190eXBlX2JpbmRpbmcgPSBSYXdUeXBlQmluZGlu
ZyhyYXdfdHlwZSkKKworICAgICAgICAgICAgICAgIG9wdGlvbmFsID0gYm9vbChqc29uX3BhcmFt
ZXRlci5nZXQoIm9wdGlvbmFsIikpCisKKyAgICAgICAgICAgICAgICBzZXR0ZXJfdHlwZSA9IHJh
d190eXBlLmdldF9zZXR0ZXJfbmFtZSgpCisKKyAgICAgICAgICAgICAgICB0eXBlX21vZGVsID0g
cGFyYW1fdHlwZV9iaW5kaW5nLmdldF90eXBlX21vZGVsKCkKKyAgICAgICAgICAgICAgICByYXdf
dHlwZV9tb2RlbCA9IHJhd190eXBlX2JpbmRpbmcuZ2V0X3R5cGVfbW9kZWwoKQorICAgICAgICAg
ICAgICAgIGlmIG9wdGlvbmFsOgorICAgICAgICAgICAgICAgICAgICB0eXBlX21vZGVsID0gdHlw
ZV9tb2RlbC5nZXRfb3B0aW9uYWwoKQorICAgICAgICAgICAgICAgICAgICByYXdfdHlwZV9tb2Rl
bCA9IHJhd190eXBlX21vZGVsLmdldF9vcHRpb25hbCgpCisKKyAgICAgICAgICAgICAgICBhbm5v
dGF0ZWRfdHlwZSA9IHR5cGVfbW9kZWwuZ2V0X2lucHV0X3BhcmFtX3R5cGVfdGV4dCgpCisgICAg
ICAgICAgICAgICAgbW9kZV90eXBlX2JpbmRpbmcgPSBwYXJhbV90eXBlX2JpbmRpbmcKKworICAg
ICAgICAgICAgICAgIGRlY2xfcGFyYW1ldGVyX2xpc3QuYXBwZW5kKCIlcyAlcyIgJSAoYW5ub3Rh
dGVkX3R5cGUsIHBhcmFtZXRlcl9uYW1lKSkKKworICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1
bWVudCA9IHJhd190eXBlX21vZGVsLmdldF9ldmVudF9zZXR0ZXJfZXhwcmVzc2lvbl9wYXR0ZXJu
KCkgJSBwYXJhbWV0ZXJfbmFtZQorICAgICAgICAgICAgICAgIGlmIG1vZGVfdHlwZV9iaW5kaW5n
LmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCk6CisgICAgICAgICAgICAgICAg
ICAgIHNldHRlcl9hcmd1bWVudCA9IG1vZGVfdHlwZV9iaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVf
ZXhwcmVzc2lvbl9wYXR0ZXJuKCkgJSBzZXR0ZXJfYXJndW1lbnQKKworICAgICAgICAgICAgICAg
IHNldHRlcl9jb2RlID0gIiAgICAlcy0+c2V0JXMoXCIlc1wiLCAlcyk7XG4iICUgKG1ldGhvZF9z
dHJ1Y3RfdGVtcGxhdGUuY29udGFpbmVyX25hbWUsIHNldHRlcl90eXBlLCBwYXJhbWV0ZXJfbmFt
ZSwgc2V0dGVyX2FyZ3VtZW50KQorICAgICAgICAgICAgICAgIGlmIG9wdGlvbmFsOgorICAgICAg
ICAgICAgICAgICAgICBzZXR0ZXJfY29kZSA9ICgiICAgIGlmICglcylcbiAgICAiICUgcGFyYW1l
dGVyX25hbWUpICsgc2V0dGVyX2NvZGUKKyAgICAgICAgICAgICAgICBtZXRob2RfbGluZV9saXN0
LmFwcGVuZChzZXR0ZXJfY29kZSkKKworICAgICAgICAgICAgbWV0aG9kX3N0cnVjdF90ZW1wbGF0
ZS5hcHBlbmRfZXBpbG9nKG1ldGhvZF9saW5lX2xpc3QpCisKKyAgICAgICAgZ2VuZXJhdG9yX21l
dGhvZF9saXN0LmFwcGVuZChtZXRob2RfdGVtcGxhdGUuc3Vic3RpdHV0ZShOb25lLAorICAgICAg
ICAgICAgZG9tYWluTmFtZT1kb21haW5fbmFtZSwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM9Iiwg
Ii5qb2luKGRlY2xfcGFyYW1ldGVyX2xpc3QpLAorICAgICAgICAgICAgY29kZT0iIi5qb2luKG1l
dGhvZF9saW5lX2xpc3QpLCAqKnRlbXBsYXRlX3BhcmFtcykpCisKICAgICBAc3RhdGljbWV0aG9k
CiAgICAgZGVmIHJlc29sdmVfdHlwZV9hbmRfZ2VuZXJhdGVfYWRfaG9jKGpzb25fcGFyYW0sIG1l
dGhvZF9uYW1lLCBkb21haW5fbmFtZSwgYWRfaG9jX3R5cGVfd3JpdGVyLCBjb250YWluZXJfcmVs
YXRpdmVfbmFtZV9wcmVmaXhfcGFyYW0pOgogICAgICAgICBwYXJhbV9uYW1lID0ganNvbl9wYXJh
bVsibmFtZSJdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>162064</attachid>
            <date>2012-09-04 11:02:43 -0700</date>
            <delta_ts>2012-09-04 11:02:43 -0700</delta_ts>
            <desc>Diff for sample</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>4000</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">ZGlmZiBzbmFwX21hc3Rlci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgc25hcF9jYWxs
YmFjay9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKMzA5YTMxMCwzMTIKPiAgICAgdm9p
ZCBzZW5kUmVzcG9uc2UobG9uZyBjYWxsSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBy
ZXN1bHQsIEVycm9yU3RyaW5nIGludm9jYXRpb25FcnJvcik7Cj4gICAgIGJvb2wgaXNBY3RpdmUo
KSB7IHJldHVybiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsgfQo+IAoxNzI1YTE3MjksMTcz
OAo+IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpOZXR3b3JrQ29tbWFuZEhhbmRsZXI6Okdl
dFJlc3BvbnNlQm9keUNhbGxiYWNrOjpHZXRSZXNwb25zZUJvZHlDYWxsYmFjayhQYXNzUmVmUHRy
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1wbD4gYmFja2VuZEltcGwsIGludCBpZCkgOiBD
YWxsYmFja0Jhc2UoYmFja2VuZEltcGwsIGlkKSB7fQo+IAo+IHZvaWQgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6Ok5ldHdvcmtDb21tYW5kSGFuZGxlcjo6R2V0UmVzcG9uc2VCb2R5Q2FsbGJh
Y2s6OnNlbmRTdWNjZXNzKGNvbnN0IFN0cmluZyYgYm9keSwgYm9vbCBiYXNlNjRFbmNvZGVkKQo+
IHsKPiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOwo+ICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKCJib2R5IiwgYm9k
eSk7Cj4gICAgIGpzb25NZXNzYWdlLT5zZXRCb29sZWFuKCJiYXNlNjRFbmNvZGVkIiwgYmFzZTY0
RW5jb2RlZCk7Cj4gICAgIHNlbmRJZkFjdGl2ZShqc29uTWVzc2FnZSwgRXJyb3JTdHJpbmcoKSk7
Cj4gfQo+IAoxNzMyLDE3MzRjMTc0NQo8IAo8ICAgICBTdHJpbmcgb3V0X2JvZHk7CjwgICAgIGJv
b2wgb3V0X2Jhc2U2NEVuY29kZWQ7Ci0tLQo+ICAgICBSZWZQdHI8TmV0d29ya0NvbW1hbmRIYW5k
bGVyOjpHZXRSZXNwb25zZUJvZHlDYWxsYmFjaz4gY2FsbGJhY2sgPSBhZG9wdFJlZihuZXcgTmV0
d29ya0NvbW1hbmRIYW5kbGVyOjpHZXRSZXNwb25zZUJvZHlDYWxsYmFjayh0aGlzLCBjYWxsSWQp
KTsKMTc0NWMxNzU2LDE3NjAKPCAgICAgICAgIG1fbmV0d29ya0FnZW50LT5nZXRSZXNwb25zZUJv
ZHkoJmVycm9yLCBpbl9yZXF1ZXN0SWQsICZvdXRfYm9keSwgJm91dF9iYXNlNjRFbmNvZGVkKTsK
LS0tCj4gICAgICAgICBtX25ldHdvcmtBZ2VudC0+Z2V0UmVzcG9uc2VCb2R5KCZlcnJvciwgaW5f
cmVxdWVzdElkLCBjYWxsYmFjayk7Cj4gCj4gICAgICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKSAK
PiAgICAgICAgICAgICByZXR1cm47Cj4gICAgICAgICBjYWxsYmFjay0+ZGlzYWJsZSgpOwoxNzQ3
LDE3NTBkMTc2MQo8ICAgICAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkgewo8ICAgICAgICAgICAg
IHJlc3VsdC0+c2V0U3RyaW5nKCJib2R5Iiwgb3V0X2JvZHkpOwo8ICAgICAgICAgICAgIHJlc3Vs
dC0+c2V0Qm9vbGVhbigiYmFzZTY0RW5jb2RlZCIsIG91dF9iYXNlNjRFbmNvZGVkKTsKPCAgICAg
ICAgIH0KNTQ5NGE1NTA2LDU1MTAKPiAgICAgc2VuZFJlc3BvbnNlKGNhbGxJZCwgcmVzdWx0LCBp
bnZvY2F0aW9uRXJyb3IpOwo+IH0KPiAKPiB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
SW1wbDo6c2VuZFJlc3BvbnNlKGxvbmcgY2FsbElkLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gcmVzdWx0LCBFcnJvclN0cmluZyBpbnZvY2F0aW9uRXJyb3IpCj4gewo1NjMxYTU2NDgsNTY3
MQo+IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OkNhbGxiYWNrQmFz
ZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1wbD4gYmFja2VuZEltcGws
IGludCBpZCkKPiAgICAgOiBtX2JhY2tlbmRJbXBsKGJhY2tlbmRJbXBsKSwgbV9pZChpZCksIG1f
YWxyZWFkeVNlbnQoZmFsc2UpIHt9Cj4gCj4gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNh
bGxiYWNrQmFzZTo6fkNhbGxiYWNrQmFzZSgpIHt9Cj4gCj4gdm9pZCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpzZW5kRmFpbHVyZShjb25zdCBFcnJvclN0cmluZyYg
ZXJyb3IpCj4gewo+ICAgICBBU1NFUlQoZXJyb3IubGVuZ3RoKCkpOwo+ICAgICBzZW5kSWZBY3Rp
dmUoMCwgZXJyb3IpOwo+IH0KPiAKPiBib29sIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpD
YWxsYmFja0Jhc2U6OmlzQWN0aXZlKCkKPiB7Cj4gICAgIHJldHVybiAhbV9hbHJlYWR5U2VudCAm
JiBtX2JhY2tlbmRJbXBsLT5pc0FjdGl2ZSgpOwo+IH0KPiAKPiB2b2lkIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRJZkFjdGl2ZShQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gcGFydGlhbE1lc3NhZ2UsIGNvbnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0aW9u
RXJyb3IpCj4gewo+ICAgICBpZiAobV9hbHJlYWR5U2VudCkKPiAgICAgICAgIHJldHVybjsKPiAg
ICAgbV9iYWNrZW5kSW1wbC0+c2VuZFJlc3BvbnNlKG1faWQsIHBhcnRpYWxNZXNzYWdlLCBpbnZv
Y2F0aW9uRXJyb3IpOwo+ICAgICBtX2FscmVhZHlTZW50ID0gdHJ1ZTsKPiB9Cj4gCmRpZmYgc25h
cF9tYXN0ZXIvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBzbmFwX2NhbGxiYWNrL0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmgKMjJhMjMsMjQKPiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlckltcGw7Cj4gCjI3YTMwLDQ2Cj4gICAgIGNsYXNzIENhbGxiYWNrQmFzZTogcHVi
bGljIFJlZkNvdW50ZWQ8Q2FsbGJhY2tCYXNlPiB7Cj4gICAgIHB1YmxpYzoKPiAgICAgICAgIENh
bGxiYWNrQmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1wbD4gYmFj
a2VuZEltcGwsIGludCBpZCk7Cj4gICAgICAgICB2aXJ0dWFsIH5DYWxsYmFja0Jhc2UoKTsKPiAg
ICAgICAgIHZvaWQgc2VuZEZhaWx1cmUoY29uc3QgRXJyb3JTdHJpbmcmKTsKPiAgICAgICAgIGJv
b2wgaXNBY3RpdmUoKTsKPiAgICAgICAgIHZvaWQgZGlzYWJsZSgpIHsgbV9hbHJlYWR5U2VudCA9
IHRydWU7IH0KPiAKPiAgICAgcHJvdGVjdGVkOgo+ICAgICAgICAgdm9pZCBzZW5kSWZBY3RpdmUo
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcnRpYWxNZXNzYWdlLCBjb25zdCBFcnJvclN0
cmluZyYgaW52b2NhdGlvbkVycm9yKTsKPiAKPiAgICAgcHJpdmF0ZToKPiAgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckltcGw+IG1fYmFja2VuZEltcGw7Cj4gICAgICAg
ICBpbnQgbV9pZDsKPiAgICAgICAgIGJvb2wgbV9hbHJlYWR5U2VudDsKPiAgICAgfTsKPiAKMTIw
YzEzOSwxNDQKPCAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGluX3JlcXVlc3RJZCwgU3RyaW5nKiBvdXRfYm9keSwgYm9vbCog
b3V0X2Jhc2U2NEVuY29kZWQpID0gMDsKLS0tCj4gICAgICAgICBjbGFzcyBHZXRSZXNwb25zZUJv
ZHlDYWxsYmFjayA6IHB1YmxpYyBDYWxsYmFja0Jhc2Ugewo+ICAgICAgICAgcHVibGljOgo+ICAg
ICAgICAgICAgIEdldFJlc3BvbnNlQm9keUNhbGxiYWNrKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJJbXBsPiwgaW50IGlkKTsKPiAgICAgICAgICAgICB2b2lkIHNlbmRTdWNj
ZXNzKGNvbnN0IFN0cmluZyYgYm9keSwgYm9vbCBiYXNlNjRFbmNvZGVkKTsKPiAgICAgICAgIH07
Cj4gICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBpbl9yZXF1ZXN0SWQsIGNvbnN0IFJlZlB0cjxHZXRSZXNwb25zZUJvZHlDYWxs
YmFjaz4mIGNhbGxiYWNrKSA9IDA7CmRpZmYgc25hcF9tYXN0ZXIvSW5zcGVjdG9yLmpzb24gc25h
cF9jYWxsYmFjay9JbnNwZWN0b3IuanNvbgo4NjdhODY4Cj4gICAgICAgICAgICAgICAgICJhc3lu
YyI6IHRydWUsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162232</attachid>
            <date>2012-09-05 06:07:57 -0700</date>
            <delta_ts>2012-09-05 07:00:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95649-20120905170738.patch</filename>
            <type>text/plain</type>
            <size>22482</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNkZTZlMmVhMjljMGZm
MWZhMTNhMWVlYzk3ZjA4MjBlMmIyZGJkZi4uZjYxMTRmZGIyZjQzZGJjMmM5Nzk3Mjc2MTEzMzIx
OGZkM2IwYTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTAxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzdXBwb3J0IGFzeW5jaHJvbm91cyBjb21tYW5k
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTY0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEdlbmVyYXRvciBpcyBleHRlbmRlZCB0byBnZW5lcmF0ZSBjYWxsYmFjayBvYmplY3Qg
Zm9yIGVhY2ggYXN5bmNocm9ub3VzIGNvbW1hbmQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKFdyaXRlci5hcHBlbmRfbXVsdGlsaW5l
KToKKyAgICAgICAgKFdyaXRlcik6CisgICAgICAgIChXcml0ZXIuZ2V0X2luZGVudCk6CisgICAg
ICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkNsYXNzQmluZGluZy5y
ZXNvbHZlX2lubmVyLlJlc29sdmVEYXRhKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVySW1wbCk6CisgICAgICAgIChDYWxsYmFja0Jhc2UpOgorICAgICAgICAoR2VuZXJhdG9y
LnByb2Nlc3NfZXZlbnQpOgorICAgICAgICAoR2VuZXJhdG9yKToKKyAgICAgICAgKEdlbmVyYXRv
ci5FdmVudE1ldGhvZFN0cnVjdFRlbXBsYXRlKToKKyAgICAgICAgKEdlbmVyYXRvci5FdmVudE1l
dGhvZFN0cnVjdFRlbXBsYXRlLmFwcGVuZF9wcm9sb2cpOgorICAgICAgICAoR2VuZXJhdG9yLkV2
ZW50TWV0aG9kU3RydWN0VGVtcGxhdGUuYXBwZW5kX2VwaWxvZyk6CisgICAgICAgIChHZW5lcmF0
b3IucHJvY2Vzc19jb21tYW5kKToKKyAgICAgICAgKEdlbmVyYXRvci5DYWxsYmFja01ldGhvZFN0
cnVjdFRlbXBsYXRlKToKKyAgICAgICAgKEdlbmVyYXRvci5DYWxsYmFja01ldGhvZFN0cnVjdFRl
bXBsYXRlLmFwcGVuZF9wcm9sb2cpOgorICAgICAgICAoR2VuZXJhdG9yLkNhbGxiYWNrTWV0aG9k
U3RydWN0VGVtcGxhdGUuYXBwZW5kX2VwaWxvZyk6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJh
dGVfc2VuZF9tZXRob2QpOgorCiAyMDEyLTA4LTI4ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vr
b2xzYWtAZ21haWwuY29tPgogCiAgICAgICAgIENyYXNoIGluIEVkaXRpbmdTdHlsZTo6bWVyZ2VT
dHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5weQppbmRleCA4NTIyMjUzOGI0ZDNkN2U5NmZkM2NlOWUzYmQwYzkxYWYzMTk4Yzc4Li43
MzFlZGYxMDNkNTdkNTExZmE5MmY1ZGUyOGVlYjdmOGJmZTgwNWI4IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtNzcwLDYg
Kzc3MCw5IEBAIGNsYXNzIFdyaXRlcjoKICAgICAgICAgICAgIGlmIHA6CiAgICAgICAgICAgICAg
ICAgc2VsZi5uZXdsaW5lKHApCiAKKyAgICBkZWYgZ2V0X2luZGVudChzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuaW5kZW50CisKICAgICBkZWYgZ2V0X2luZGVudGVkKHNlbGYsIGFkZGl0aW9u
YWxfaW5kZW50KToKICAgICAgICAgcmV0dXJuIFdyaXRlcihzZWxmLm91dHB1dCwgc2VsZi5pbmRl
bnQgKyBhZGRpdGlvbmFsX2luZGVudCkKIApAQCAtMTExMCw3ICsxMTEzLDcgQEAgY2xhc3MgVHlw
ZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgUmVzb2x2ZURhdGE6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbl9wcm9wZXJ0aWVzID0gbWFpbgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX3Byb3BlcnRpZXMgPSBvcHRpb25hbAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190eXBlcyA9IGFkX2hvY190eXBlX2NvbnRl
eHQuYWRfaG9jX3R5cGVfbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190
eXBlcyA9IGFkX2hvY190eXBlX2xpc3QKIAogICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnJl
c29sdmVfZGF0YV8gPSBSZXNvbHZlRGF0YQogCkBAIC0xNzgzLDEwICsxNzg2LDIwIEBAICR7cmVz
cG9uc2VDb29rfQogCiAgICAgZnJvbnRlbmRfbWV0aG9kID0gc3RyaW5nLlRlbXBsYXRlKCIiInZv
aWQgSW5zcGVjdG9yRnJvbnRlbmQ6OiRkb21haW5OYW1lOjokZXZlbnROYW1lKCRwYXJhbWV0ZXJz
KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+ICR7ZXZlbnROYW1lfU1lc3NhZ2UgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICR7ZXZlbnROYW1lfU1lc3NhZ2UtPnNldFN0
cmluZygibWV0aG9kIiwgIiRkb21haW5OYW1lLiRldmVudE5hbWUiKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Cisg
ICAganNvbk1lc3NhZ2UtPnNldFN0cmluZygibWV0aG9kIiwgIiRkb21haW5OYW1lLiRldmVudE5h
bWUiKTsKICRjb2RlICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAg
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZCgke2V2ZW50
TmFtZX1NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmlu
ZygpKTsKK30KKyIiIikKKworICAgIGNhbGxiYWNrX21ldGhvZCA9IHN0cmluZy5UZW1wbGF0ZSgK
KyIiIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjokYWdlbnROYW1lOjokY2FsbGJhY2tOYW1l
OjokY2FsbGJhY2tOYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBs
PiBiYWNrZW5kSW1wbCwgaW50IGlkKSA6IENhbGxiYWNrQmFzZShiYWNrZW5kSW1wbCwgaWQpIHt9
CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OiRhZ2VudE5hbWU6OiRjYWxsYmFj
a05hbWU6OnNlbmRTdWNjZXNzKCRwYXJhbWV0ZXJzKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyRjb2RlICAg
IHNlbmRJZkFjdGl2ZShqc29uTWVzc2FnZSwgRXJyb3JTdHJpbmcoKSk7CiB9CiAiIiIpCiAKQEAg
LTE4NDUsMTEgKzE4NTgsMzAgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJJbXBsOworCiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjogcHVibGljIFJl
ZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKTsKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogCisgICAgY2xhc3MgQ2FsbGJhY2tC
YXNlOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIENhbGxiYWNrQmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1w
bD4gYmFja2VuZEltcGwsIGludCBpZCk7CisgICAgICAgIHZpcnR1YWwgfkNhbGxiYWNrQmFzZSgp
OworICAgICAgICB2b2lkIHNlbmRGYWlsdXJlKGNvbnN0IEVycm9yU3RyaW5nJik7CisgICAgICAg
IGJvb2wgaXNBY3RpdmUoKTsKKyAgICAgICAgdm9pZCBkaXNhYmxlKCkgeyBtX2FscmVhZHlTZW50
ID0gdHJ1ZTsgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHNlbmRJZkFjdGl2ZShQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFydGlhbE1lc3NhZ2UsIGNvbnN0IEVycm9yU3Ry
aW5nJiBpbnZvY2F0aW9uRXJyb3IpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgUmVmUHRyPElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1wbD4gbV9iYWNrZW5kSW1wbDsKKyAgICAgICAgaW50
IG1faWQ7CisgICAgICAgIGJvb2wgbV9hbHJlYWR5U2VudDsKKyAgICB9OworCiAkYWdlbnRJbnRl
cmZhY2VzCiAkdmlydHVhbFNldHRlcnMKIApAQCAtMTkyMCw2ICsxOTUyLDkgQEAgJGNvbnN0cnVj
dG9ySW5pdAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcq
IGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gZGF0YSkgY29uc3Q7CiAgICAgdXNpbmcgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3I7CiAKKyAgICB2b2lk
IHNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJl
c3VsdCwgY29uc3QgRXJyb3JTdHJpbmcmIGludm9jYXRpb25FcnJvcik7CisgICAgYm9vbCBpc0Fj
dGl2ZSgpIHsgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOyB9CisKICRzZXR0ZXJz
CiBwcml2YXRlOgogJG1ldGhvZERlY2xhcmF0aW9ucwpAQCAtMjAxNyw2ICsyMDUyLDExIEBAIHZv
aWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBsOjpzZW5kUmVzcG9uc2UobG9uZyBjYWxs
SWQsIFBhc3NSZWZQdHI8SW5zcGVjCiAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJ
ZCwgSW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBwcm90b2NvbEVycm9ycyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgc2VuZFJlc3BvbnNlKGNhbGxJZCwgcmVzdWx0LCBpbnZvY2F0
aW9uRXJyb3IpOworfQorCit2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1wbDo6c2Vu
ZFJlc3BvbnNlKGxvbmcgY2FsbElkLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0
LCBjb25zdCBFcnJvclN0cmluZyYgaW52b2NhdGlvbkVycm9yKQorewogICAgIGlmIChpbnZvY2F0
aW9uRXJyb3IubGVuZ3RoKCkpIHsKICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElk
LCBTZXJ2ZXJFcnJvciwgaW52b2NhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE1
NCw2ICsyMTk0LDMwIEBAIGJvb2wgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldENvbW1h
bmROYW1lKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgU3RyaW5nKiByCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OkNhbGxiYWNr
QmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1wbD4gYmFja2VuZElt
cGwsIGludCBpZCkKKyAgICA6IG1fYmFja2VuZEltcGwoYmFja2VuZEltcGwpLCBtX2lkKGlkKSwg
bV9hbHJlYWR5U2VudChmYWxzZSkge30KKworSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNh
bGxiYWNrQmFzZTo6fkNhbGxiYWNrQmFzZSgpIHt9CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZEZhaWx1cmUoY29uc3QgRXJyb3JTdHJpbmcmIGVy
cm9yKQoreworICAgIEFTU0VSVChlcnJvci5sZW5ndGgoKSk7CisgICAgc2VuZElmQWN0aXZlKDAs
IGVycm9yKTsKK30KKworYm9vbCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlOjppc0FjdGl2ZSgpCit7CisgICAgcmV0dXJuICFtX2FscmVhZHlTZW50ICYmIG1fYmFja2Vu
ZEltcGwtPmlzQWN0aXZlKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OkNhbGxiYWNrQmFzZTo6c2VuZElmQWN0aXZlKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBw
YXJ0aWFsTWVzc2FnZSwgY29uc3QgRXJyb3JTdHJpbmcmIGludm9jYXRpb25FcnJvcikKK3sKKyAg
ICBpZiAobV9hbHJlYWR5U2VudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fYmFja2VuZEltcGwt
PnNlbmRSZXNwb25zZShtX2lkLCBwYXJ0aWFsTWVzc2FnZSwgaW52b2NhdGlvbkVycm9yKTsKKyAg
ICBtX2FscmVhZHlTZW50ID0gdHJ1ZTsKK30KKwogQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8
aW50PihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6a01ldGhvZE5hbWVzRW51bVNpemUpID09
IFdURl9BUlJBWV9MRU5HVEgoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNvbW1hbmROYW1l
cyksIGNvbW1hbmRfbmFtZV9hcnJheV9wcm9ibGVtKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpAQCAtMjcyNyw1OSArMjc5MSw0MSBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgZGVmIHByb2Nl
c3NfZXZlbnQoanNvbl9ldmVudCwgZG9tYWluX25hbWUsIGZyb250ZW5kX21ldGhvZF9kZWNsYXJh
dGlvbl9saW5lcyk6CiAgICAgICAgIGV2ZW50X25hbWUgPSBqc29uX2V2ZW50WyJuYW1lIl0KIAot
ICAgICAgICBwYXJhbWV0ZXJfbGlzdCA9IFtdCi0gICAgICAgIG1ldGhvZF9saW5lX2xpc3QgPSBb
XQotICAgICAgICBiYWNrZW5kX2pzX2V2ZW50X3BhcmFtX2xpc3QgPSBbXQogICAgICAgICBhZF9o
b2NfdHlwZV9vdXRwdXQgPSBbXQogICAgICAgICBmcm9udGVuZF9tZXRob2RfZGVjbGFyYXRpb25f
bGluZXMuYXBwZW5kKGFkX2hvY190eXBlX291dHB1dCkKICAgICAgICAgYWRfaG9jX3R5cGVfd3Jp
dGVyID0gV3JpdGVyKGFkX2hvY190eXBlX291dHB1dCwgIiAgICAgICAgIikKLSAgICAgICAgaWYg
InBhcmFtZXRlcnMiIGluIGpzb25fZXZlbnQ6Ci0gICAgICAgICAgICBtZXRob2RfbGluZV9saXN0
LmFwcGVuZCgiICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc09iamVjdCA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7XG4iKQotICAgICAgICAgICAgZm9yIGpzb25fcGFyYW1ldGVy
IGluIGpzb25fZXZlbnRbInBhcmFtZXRlcnMiXToKLSAgICAgICAgICAgICAgICBwYXJhbWV0ZXJf
bmFtZSA9IGpzb25fcGFyYW1ldGVyWyJuYW1lIl0KLQotICAgICAgICAgICAgICAgIHBhcmFtX3R5
cGVfYmluZGluZyA9IEdlbmVyYXRvci5yZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRlX2FkX2hvYyhq
c29uX3BhcmFtZXRlciwgZXZlbnRfbmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dyaXRl
ciwgIiIpCi0KLSAgICAgICAgICAgICAgICByYXdfdHlwZSA9IHBhcmFtX3R5cGVfYmluZGluZy5y
ZWR1Y2VfdG9fcmF3X3R5cGUoKQotICAgICAgICAgICAgICAgIHJhd190eXBlX2JpbmRpbmcgPSBS
YXdUeXBlQmluZGluZyhyYXdfdHlwZSkKLQotICAgICAgICAgICAgICAgIG9wdGlvbmFsID0gYm9v
bChqc29uX3BhcmFtZXRlci5nZXQoIm9wdGlvbmFsIikpCi0KLSAgICAgICAgICAgICAgICBzZXR0
ZXJfdHlwZSA9IHJhd190eXBlLmdldF9zZXR0ZXJfbmFtZSgpCi0KLSAgICAgICAgICAgICAgICB0
eXBlX21vZGVsID0gcGFyYW1fdHlwZV9iaW5kaW5nLmdldF90eXBlX21vZGVsKCkKLSAgICAgICAg
ICAgICAgICByYXdfdHlwZV9tb2RlbCA9IHJhd190eXBlX2JpbmRpbmcuZ2V0X3R5cGVfbW9kZWwo
KQotICAgICAgICAgICAgICAgIGlmIG9wdGlvbmFsOgotICAgICAgICAgICAgICAgICAgICB0eXBl
X21vZGVsID0gdHlwZV9tb2RlbC5nZXRfb3B0aW9uYWwoKQotICAgICAgICAgICAgICAgICAgICBy
YXdfdHlwZV9tb2RlbCA9IHJhd190eXBlX21vZGVsLmdldF9vcHRpb25hbCgpCi0KLSAgICAgICAg
ICAgICAgICBhbm5vdGF0ZWRfdHlwZSA9IHR5cGVfbW9kZWwuZ2V0X2lucHV0X3BhcmFtX3R5cGVf
dGV4dCgpCi0gICAgICAgICAgICAgICAgbW9kZV90eXBlX2JpbmRpbmcgPSBwYXJhbV90eXBlX2Jp
bmRpbmcKIAotICAgICAgICAgICAgICAgIHBhcmFtZXRlcl9saXN0LmFwcGVuZCgiJXMgJXMiICUg
KGFubm90YXRlZF90eXBlLCBwYXJhbWV0ZXJfbmFtZSkpCisgICAgICAgIGRlY2xfcGFyYW1ldGVy
X2xpc3QgPSBbXQogCi0gICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0gcmF3X3R5cGVf
bW9kZWwuZ2V0X2V2ZW50X3NldHRlcl9leHByZXNzaW9uX3BhdHRlcm4oKSAlIHBhcmFtZXRlcl9u
YW1lCi0gICAgICAgICAgICAgICAgaWYgbW9kZV90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1
ZV9leHByZXNzaW9uX3BhdHRlcm4oKToKLSAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3Vt
ZW50ID0gbW9kZV90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRl
cm4oKSAlIHNldHRlcl9hcmd1bWVudAotCi0gICAgICAgICAgICAgICAgc2V0dGVyX2NvZGUgPSAi
ICAgIHBhcmFtc09iamVjdC0+c2V0JXMoXCIlc1wiLCAlcyk7XG4iICUgKHNldHRlcl90eXBlLCBw
YXJhbWV0ZXJfbmFtZSwgc2V0dGVyX2FyZ3VtZW50KQotICAgICAgICAgICAgICAgIGlmIG9wdGlv
bmFsOgotICAgICAgICAgICAgICAgICAgICBzZXR0ZXJfY29kZSA9ICgiICAgIGlmICglcylcbiAg
ICAiICUgcGFyYW1ldGVyX25hbWUpICsgc2V0dGVyX2NvZGUKLSAgICAgICAgICAgICAgICBtZXRo
b2RfbGluZV9saXN0LmFwcGVuZChzZXR0ZXJfY29kZSkKKyAgICAgICAganNvbl9wYXJhbWV0ZXJz
ID0ganNvbl9ldmVudC5nZXQoInBhcmFtZXRlcnMiKQorICAgICAgICBHZW5lcmF0b3IuZ2VuZXJh
dGVfc2VuZF9tZXRob2QoanNvbl9wYXJhbWV0ZXJzLCBldmVudF9uYW1lLCBkb21haW5fbmFtZSwg
YWRfaG9jX3R5cGVfd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVjbF9wYXJhbWV0ZXJfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdlbmVyYXRvci5FdmVudE1ldGhvZFN0cnVjdFRlbXBsYXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yLmZyb250ZW5kX21ldGhvZF9saXN0
LCBUZW1wbGF0ZXMuZnJvbnRlbmRfbWV0aG9kLCB7ImV2ZW50TmFtZSI6IGV2ZW50X25hbWV9KQog
CisgICAgICAgIGJhY2tlbmRfanNfZXZlbnRfcGFyYW1fbGlzdCA9IFtdCisgICAgICAgIGlmIGpz
b25fcGFyYW1ldGVyczoKKyAgICAgICAgICAgIGZvciBwYXJhbWV0ZXIgaW4ganNvbl9wYXJhbWV0
ZXJzOgorICAgICAgICAgICAgICAgIHBhcmFtZXRlcl9uYW1lID0gcGFyYW1ldGVyWyJuYW1lIl0K
ICAgICAgICAgICAgICAgICBiYWNrZW5kX2pzX2V2ZW50X3BhcmFtX2xpc3QuYXBwZW5kKCJcIiVz
XCIiICUgcGFyYW1ldGVyX25hbWUpCi0gICAgICAgICAgICBtZXRob2RfbGluZV9saXN0LmFwcGVu
ZCgiICAgICVzTWVzc2FnZS0+c2V0T2JqZWN0KFwicGFyYW1zXCIsIHBhcmFtc09iamVjdCk7XG4i
ICUgZXZlbnRfbmFtZSkKLSAgICAgICAgZnJvbnRlbmRfbWV0aG9kX2RlY2xhcmF0aW9uX2xpbmVz
LmFwcGVuZCgKLSAgICAgICAgICAgICIgICAgICAgIHZvaWQgJXMoJXMpO1xuIiAlIChldmVudF9u
YW1lLCAiLCAiLmpvaW4ocGFyYW1ldGVyX2xpc3QpKSkKIAotICAgICAgICBHZW5lcmF0b3IuZnJv
bnRlbmRfbWV0aG9kX2xpc3QuYXBwZW5kKFRlbXBsYXRlcy5mcm9udGVuZF9tZXRob2Quc3Vic3Rp
dHV0ZShOb25lLAotICAgICAgICAgICAgZG9tYWluTmFtZT1kb21haW5fbmFtZSwgZXZlbnROYW1l
PWV2ZW50X25hbWUsCi0gICAgICAgICAgICBwYXJhbWV0ZXJzPSIsICIuam9pbihwYXJhbWV0ZXJf
bGlzdCksCi0gICAgICAgICAgICBjb2RlPSIiLmpvaW4obWV0aG9kX2xpbmVfbGlzdCkpKQorICAg
ICAgICBmcm9udGVuZF9tZXRob2RfZGVjbGFyYXRpb25fbGluZXMuYXBwZW5kKAorICAgICAgICAg
ICAgIiAgICAgICAgdm9pZCAlcyglcyk7XG4iICUgKGV2ZW50X25hbWUsICIsICIuam9pbihkZWNs
X3BhcmFtZXRlcl9saXN0KSkpCiAKICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfanNfZG9tYWlu
X2luaXRpYWxpemVyX2xpc3QuYXBwZW5kKCJJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRXZlbnQo
XCIlcy4lc1wiLCBbJXNdKTtcbiIgJSAoCiAgICAgICAgICAgICBkb21haW5fbmFtZSwgZXZlbnRf
bmFtZSwgIiwgIi5qb2luKGJhY2tlbmRfanNfZXZlbnRfcGFyYW1fbGlzdCkpKQogCisgICAgY2xh
c3MgRXZlbnRNZXRob2RTdHJ1Y3RUZW1wbGF0ZToKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAg
ICAgICBkZWYgYXBwZW5kX3Byb2xvZyhsaW5lX2xpc3QpOgorICAgICAgICAgICAgbGluZV9saXN0
LmFwcGVuZCgiICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc09iamVjdCA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7XG4iKQorCisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAg
ICAgZGVmIGFwcGVuZF9lcGlsb2cobGluZV9saXN0KToKKyAgICAgICAgICAgIGxpbmVfbGlzdC5h
cHBlbmQoIiAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KFwicGFyYW1zXCIsIHBhcmFtc09iamVj
dCk7XG4iKQorCisgICAgICAgIGNvbnRhaW5lcl9uYW1lID0gInBhcmFtc09iamVjdCIKKwogICAg
IEBzdGF0aWNtZXRob2QKICAgICBkZWYgcHJvY2Vzc19jb21tYW5kKGpzb25fY29tbWFuZCwgZG9t
YWluX25hbWUsIGFnZW50X2ZpZWxkX25hbWUsIGFnZW50X2ludGVyZmFjZV9uYW1lKToKICAgICAg
ICAganNvbl9jb21tYW5kX25hbWUgPSBqc29uX2NvbW1hbmRbIm5hbWUiXQpAQCAtMjgwMCw3ICsy
ODQ2LDYgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICBtZXRob2Rfb3V0X2NvZGUgPSAiIgog
ICAgICAgICBhZ2VudF9jYWxsX3BhcmFtX2xpc3QgPSBbXQogICAgICAgICByZXNwb25zZV9jb29r
X2xpc3QgPSBbXQotICAgICAgICBiYWNrZW5kX2pzX3JlcGx5X3BhcmFtX2xpc3QgPSBbXQogICAg
ICAgICByZXF1ZXN0X21lc3NhZ2VfcGFyYW0gPSAiIgogICAgICAgICBqc19wYXJhbWV0ZXJzX3Rl
eHQgPSAiIgogICAgICAgICBpZiAicGFyYW1ldGVycyIgaW4ganNvbl9jb21tYW5kOgpAQCAtMjg1
NSw1OCArMjkwMCw4OSBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAgICAgICBqc19wYXJhbWV0
ZXJzX3RleHQgPSAiLCAiLmpvaW4oanNfcGFyYW1fbGlzdCkKIAogICAgICAgICByZXNwb25zZV9j
b29rX3RleHQgPSAiIgotICAgICAgICBqc19yZXBseV9saXN0ID0gIltdIgotICAgICAgICBpZiAi
cmV0dXJucyIgaW4ganNvbl9jb21tYW5kOgotICAgICAgICAgICAgbWV0aG9kX291dF9jb2RlICs9
ICJcbiIKLSAgICAgICAgICAgIGZvciBqc29uX3JldHVybiBpbiBqc29uX2NvbW1hbmRbInJldHVy
bnMiXToKKyAgICAgICAgaWYganNvbl9jb21tYW5kLmdldCgiYXN5bmMiKSA9PSBUcnVlOgorICAg
ICAgICAgICAgY2FsbGJhY2tfbmFtZSA9IENhcGl0YWxpemVyLmxvd2VyX2NhbWVsX2Nhc2VfdG9f
dXBwZXIoanNvbl9jb21tYW5kX25hbWUpICsgIkNhbGxiYWNrIgorCisgICAgICAgICAgICBjYWxs
YmFja19vdXRwdXQgPSBbXQorICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyID0gV3JpdGVyKGNh
bGxiYWNrX291dHB1dCwgYWRfaG9jX3R5cGVfd3JpdGVyLmdldF9pbmRlbnQoKSkKKworICAgICAg
ICAgICAgZGVjbF9wYXJhbWV0ZXJfbGlzdCA9IFtdCisgICAgICAgICAgICBHZW5lcmF0b3IuZ2Vu
ZXJhdGVfc2VuZF9tZXRob2QoanNvbl9jb21tYW5kLmdldCgicmV0dXJucyIpLCBqc29uX2NvbW1h
bmRfbmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dyaXRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsX3BhcmFtZXRlcl9saXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvci5DYWxsYmFja01l
dGhvZFN0cnVjdFRlbXBsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX21ldGhvZF9pbXBsZW1lbnRhdGlvbl9saXN0LCBUZW1w
bGF0ZXMuY2FsbGJhY2tfbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsiY2FsbGJhY2tOYW1lIjogY2FsbGJhY2tfbmFtZSwgImFnZW50TmFtZSI6IGFn
ZW50X2ludGVyZmFjZV9uYW1lfSkKKworICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xp
bmUoImNsYXNzICIgKyBjYWxsYmFja19uYW1lICsgIiA6IHB1YmxpYyBDYWxsYmFja0Jhc2Uge1xu
IikKKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCJwdWJsaWM6XG4iKQorICAg
ICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoIiAgICAiICsgY2FsbGJhY2tfbmFtZSAr
ICIoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckltcGw+LCBpbnQgaWQpO1xu
IikKKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCIgICAgdm9pZCBzZW5kU3Vj
Y2VzcygiICsgIiwgIi5qb2luKGRlY2xfcGFyYW1ldGVyX2xpc3QpICsgIik7XG4iKQorICAgICAg
ICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoIn07XG4iKQorCisgICAgICAgICAgICBhZF9o
b2NfdHlwZV9vdXRwdXQuYXBwZW5kKGNhbGxiYWNrX291dHB1dCkKKworICAgICAgICAgICAgbWV0
aG9kX291dF9jb2RlICs9ICIgICAgUmVmUHRyPCIgKyBhZ2VudF9pbnRlcmZhY2VfbmFtZSArICI6
OiIgKyBjYWxsYmFja19uYW1lICsgIj4gY2FsbGJhY2sgPSBhZG9wdFJlZihuZXcgIiArIGFnZW50
X2ludGVyZmFjZV9uYW1lICsgIjo6IiArIGNhbGxiYWNrX25hbWUgKyAiKHRoaXMsIGNhbGxJZCkp
O1xuIgorICAgICAgICAgICAgYWdlbnRfY2FsbF9wYXJhbV9saXN0LmFwcGVuZCgiLCBjYWxsYmFj
ayIpCisgICAgICAgICAgICByZXNwb25zZV9jb29rX3RleHQgKz0gIiAgICAgICAgaWYgKCFlcnJv
ci5sZW5ndGgoKSkgXG4iCisgICAgICAgICAgICByZXNwb25zZV9jb29rX3RleHQgKz0gIiAgICAg
ICAgICAgIHJldHVybjtcbiIKKyAgICAgICAgICAgIHJlc3BvbnNlX2Nvb2tfdGV4dCArPSAiICAg
ICAgICBjYWxsYmFjay0+ZGlzYWJsZSgpO1xuIgorICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tl
bmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIsIGNvbnN0IFJlZlB0cjwlcz4mIGNhbGxi
YWNrIiAlIGNhbGxiYWNrX25hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiAicmV0
dXJucyIgaW4ganNvbl9jb21tYW5kOgorICAgICAgICAgICAgICAgIG1ldGhvZF9vdXRfY29kZSAr
PSAiXG4iCisgICAgICAgICAgICAgICAgZm9yIGpzb25fcmV0dXJuIGluIGpzb25fY29tbWFuZFsi
cmV0dXJucyJdOgogCi0gICAgICAgICAgICAgICAganNvbl9yZXR1cm5fbmFtZSA9IGpzb25fcmV0
dXJuWyJuYW1lIl0KKyAgICAgICAgICAgICAgICAgICAganNvbl9yZXR1cm5fbmFtZSA9IGpzb25f
cmV0dXJuWyJuYW1lIl0KIAotICAgICAgICAgICAgICAgIG9wdGlvbmFsID0gYm9vbChqc29uX3Jl
dHVybi5nZXQoIm9wdGlvbmFsIikpCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsID0gYm9v
bChqc29uX3JldHVybi5nZXQoIm9wdGlvbmFsIikpCiAKLSAgICAgICAgICAgICAgICByZXR1cm5f
dHlwZV9iaW5kaW5nID0gR2VuZXJhdG9yLnJlc29sdmVfdHlwZV9hbmRfZ2VuZXJhdGVfYWRfaG9j
KGpzb25fcmV0dXJuLCBqc29uX2NvbW1hbmRfbmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBl
X3dyaXRlciwgYWdlbnRfaW50ZXJmYWNlX25hbWUgKyAiOjoiKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm5fdHlwZV9iaW5kaW5nID0gR2VuZXJhdG9yLnJlc29sdmVfdHlwZV9hbmRfZ2VuZXJh
dGVfYWRfaG9jKGpzb25fcmV0dXJuLCBqc29uX2NvbW1hbmRfbmFtZSwgZG9tYWluX25hbWUsIGFk
X2hvY190eXBlX3dyaXRlciwgYWdlbnRfaW50ZXJmYWNlX25hbWUgKyAiOjoiKQogCi0gICAgICAg
ICAgICAgICAgcmF3X3R5cGUgPSByZXR1cm5fdHlwZV9iaW5kaW5nLnJlZHVjZV90b19yYXdfdHlw
ZSgpCi0gICAgICAgICAgICAgICAgc2V0dGVyX3R5cGUgPSByYXdfdHlwZS5nZXRfc2V0dGVyX25h
bWUoKQotICAgICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcmF3X3R5cGUuZ2V0X2NfaW5pdGlh
bGl6ZXIoKQorICAgICAgICAgICAgICAgICAgICByYXdfdHlwZSA9IHJldHVybl90eXBlX2JpbmRp
bmcucmVkdWNlX3RvX3Jhd190eXBlKCkKKyAgICAgICAgICAgICAgICAgICAgc2V0dGVyX3R5cGUg
PSByYXdfdHlwZS5nZXRfc2V0dGVyX25hbWUoKQorICAgICAgICAgICAgICAgICAgICBpbml0aWFs
aXplciA9IHJhd190eXBlLmdldF9jX2luaXRpYWxpemVyKCkKIAotICAgICAgICAgICAgICAgIHR5
cGVfbW9kZWwgPSByZXR1cm5fdHlwZV9iaW5kaW5nLmdldF90eXBlX21vZGVsKCkKLSAgICAgICAg
ICAgICAgICBpZiBvcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgdHlwZV9tb2RlbCA9IHR5
cGVfbW9kZWwuZ2V0X29wdGlvbmFsKCkKKyAgICAgICAgICAgICAgICAgICAgdHlwZV9tb2RlbCA9
IHJldHVybl90eXBlX2JpbmRpbmcuZ2V0X3R5cGVfbW9kZWwoKQorICAgICAgICAgICAgICAgICAg
ICBpZiBvcHRpb25hbDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSB0eXBl
X21vZGVsLmdldF9vcHRpb25hbCgpCiAKLSAgICAgICAgICAgICAgICBjb2RlID0gIiAgICAlcyBv
dXRfJXM7XG4iICUgKHR5cGVfbW9kZWwuZ2V0X2NvbW1hbmRfcmV0dXJuX3Bhc3NfbW9kZWwoKS5n
ZXRfcmV0dXJuX3Zhcl90eXBlKCksIGpzb25fcmV0dXJuX25hbWUpCi0gICAgICAgICAgICAgICAg
cGFyYW0gPSAiLCAlc291dF8lcyIgJSAodHlwZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5fcGFz
c19tb2RlbCgpLmdldF9vdXRwdXRfYXJndW1lbnRfcHJlZml4KCksIGpzb25fcmV0dXJuX25hbWUp
Ci0gICAgICAgICAgICAgICAgdmFyX25hbWUgPSAib3V0XyVzIiAlIGpzb25fcmV0dXJuX25hbWUK
LSAgICAgICAgICAgICAgICBzZXR0ZXJfYXJndW1lbnQgPSB0eXBlX21vZGVsLmdldF9jb21tYW5k
X3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X291dHB1dF90b19yYXdfZXhwcmVzc2lvbigpICUgdmFy
X25hbWUKLSAgICAgICAgICAgICAgICBpZiByZXR1cm5fdHlwZV9iaW5kaW5nLmdldF9zZXR0ZXJf
dmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCk6Ci0gICAgICAgICAgICAgICAgICAgIHNldHRlcl9h
cmd1bWVudCA9IHJldHVybl90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9u
X3BhdHRlcm4oKSAlIHNldHRlcl9hcmd1bWVudAorICAgICAgICAgICAgICAgICAgICBjb2RlID0g
IiAgICAlcyBvdXRfJXM7XG4iICUgKHR5cGVfbW9kZWwuZ2V0X2NvbW1hbmRfcmV0dXJuX3Bhc3Nf
bW9kZWwoKS5nZXRfcmV0dXJuX3Zhcl90eXBlKCksIGpzb25fcmV0dXJuX25hbWUpCisgICAgICAg
ICAgICAgICAgICAgIHBhcmFtID0gIiwgJXNvdXRfJXMiICUgKHR5cGVfbW9kZWwuZ2V0X2NvbW1h
bmRfcmV0dXJuX3Bhc3NfbW9kZWwoKS5nZXRfb3V0cHV0X2FyZ3VtZW50X3ByZWZpeCgpLCBqc29u
X3JldHVybl9uYW1lKQorICAgICAgICAgICAgICAgICAgICB2YXJfbmFtZSA9ICJvdXRfJXMiICUg
anNvbl9yZXR1cm5fbmFtZQorICAgICAgICAgICAgICAgICAgICBzZXR0ZXJfYXJndW1lbnQgPSB0
eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X291dHB1dF90b19y
YXdfZXhwcmVzc2lvbigpICUgdmFyX25hbWUKKyAgICAgICAgICAgICAgICAgICAgaWYgcmV0dXJu
X3R5cGVfYmluZGluZy5nZXRfc2V0dGVyX3ZhbHVlX2V4cHJlc3Npb25fcGF0dGVybigpOgorICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0gcmV0dXJuX3R5cGVfYmluZGlu
Zy5nZXRfc2V0dGVyX3ZhbHVlX2V4cHJlc3Npb25fcGF0dGVybigpICUgc2V0dGVyX2FyZ3VtZW50
CiAKLSAgICAgICAgICAgICAgICBjb29rID0gIiAgICAgICAgICAgIHJlc3VsdC0+c2V0JXMoXCIl
c1wiLCAlcyk7XG4iICUgKHNldHRlcl90eXBlLCBqc29uX3JldHVybl9uYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXR0ZXJfYXJndW1lbnQpCisgICAgICAgICAgICAgICAgICAgIGNvb2sgPSAiICAgICAgICAgICAg
cmVzdWx0LT5zZXQlcyhcIiVzXCIsICVzKTtcbiIgJSAoc2V0dGVyX3R5cGUsIGpzb25fcmV0dXJu
X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50KQogCi0gICAgICAgICAgICAg
ICAgc2V0X2NvbmRpdGlvbl9wYXR0ZXJuID0gdHlwZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5f
cGFzc19tb2RlbCgpLmdldF9zZXRfcmV0dXJuX2NvbmRpdGlvbigpCi0gICAgICAgICAgICAgICAg
aWYgc2V0X2NvbmRpdGlvbl9wYXR0ZXJuOgotICAgICAgICAgICAgICAgICAgICBjb29rID0gKCIg
ICAgICAgICAgICBpZiAoJXMpXG4gICAgIiAlIChzZXRfY29uZGl0aW9uX3BhdHRlcm4gJSB2YXJf
bmFtZSkpICsgY29vawotICAgICAgICAgICAgICAgIGFubm90YXRlZF90eXBlID0gdHlwZV9tb2Rl
bC5nZXRfY29tbWFuZF9yZXR1cm5fcGFzc19tb2RlbCgpLmdldF9vdXRwdXRfcGFyYW1ldGVyX3R5
cGUoKQorICAgICAgICAgICAgICAgICAgICBzZXRfY29uZGl0aW9uX3BhdHRlcm4gPSB0eXBlX21v
ZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X3NldF9yZXR1cm5fY29uZGl0
aW9uKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgc2V0X2NvbmRpdGlvbl9wYXR0ZXJuOgorICAg
ICAgICAgICAgICAgICAgICAgICAgY29vayA9ICgiICAgICAgICAgICAgaWYgKCVzKVxuICAgICIg
JSAoc2V0X2NvbmRpdGlvbl9wYXR0ZXJuICUgdmFyX25hbWUpKSArIGNvb2sKKyAgICAgICAgICAg
ICAgICAgICAgYW5ub3RhdGVkX3R5cGUgPSB0eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9w
YXNzX21vZGVsKCkuZ2V0X291dHB1dF9wYXJhbWV0ZXJfdHlwZSgpCiAKLSAgICAgICAgICAgICAg
ICBwYXJhbV9uYW1lID0gIm91dF8lcyIgJSBqc29uX3JldHVybl9uYW1lCi0gICAgICAgICAgICAg
ICAgaWYgb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgICAgIHBhcmFtX25hbWUgPSAib3B0XyIg
KyBwYXJhbV9uYW1lCisgICAgICAgICAgICAgICAgICAgIHBhcmFtX25hbWUgPSAib3V0XyVzIiAl
IGpzb25fcmV0dXJuX25hbWUKKyAgICAgICAgICAgICAgICAgICAgaWYgb3B0aW9uYWw6CisgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbV9uYW1lID0gIm9wdF8iICsgcGFyYW1fbmFtZQogCi0g
ICAgICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBw
ZW5kKCIsICVzICVzIiAlIChhbm5vdGF0ZWRfdHlwZSwgcGFyYW1fbmFtZSkpCi0gICAgICAgICAg
ICAgICAgcmVzcG9uc2VfY29va19saXN0LmFwcGVuZChjb29rKQorICAgICAgICAgICAgICAgICAg
ICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiwgJXMgJXMi
ICUgKGFubm90YXRlZF90eXBlLCBwYXJhbV9uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmVz
cG9uc2VfY29va19saXN0LmFwcGVuZChjb29rKQogCi0gICAgICAgICAgICAgICAgbWV0aG9kX291
dF9jb2RlICs9IGNvZGUKLSAgICAgICAgICAgICAgICBhZ2VudF9jYWxsX3BhcmFtX2xpc3QuYXBw
ZW5kKHBhcmFtKQorICAgICAgICAgICAgICAgICAgICBtZXRob2Rfb3V0X2NvZGUgKz0gY29kZQor
ICAgICAgICAgICAgICAgICAgICBhZ2VudF9jYWxsX3BhcmFtX2xpc3QuYXBwZW5kKHBhcmFtKQog
Ci0gICAgICAgICAgICAgICAgYmFja2VuZF9qc19yZXBseV9wYXJhbV9saXN0LmFwcGVuZCgiXCIl
c1wiIiAlIGpzb25fcmV0dXJuX25hbWUpCisgICAgICAgICAgICAgICAgcmVzcG9uc2VfY29va190
ZXh0ID0gIiIuam9pbihyZXNwb25zZV9jb29rX2xpc3QpCiAKLSAgICAgICAgICAgIGpzX3JlcGx5
X2xpc3QgPSAiWyVzXSIgJSAiLCAiLmpvaW4oYmFja2VuZF9qc19yZXBseV9wYXJhbV9saXN0KQor
ICAgICAgICAgICAgICAgIGlmIGxlbihyZXNwb25zZV9jb29rX3RleHQpICE9IDA6CisgICAgICAg
ICAgICAgICAgICAgIHJlc3BvbnNlX2Nvb2tfdGV4dCA9ICIgICAgICAgIGlmICghZXJyb3IubGVu
Z3RoKCkpIHtcbiIgKyByZXNwb25zZV9jb29rX3RleHQgKyAiICAgICAgICB9IgogCi0gICAgICAg
ICAgICByZXNwb25zZV9jb29rX3RleHQgPSAiIi5qb2luKHJlc3BvbnNlX2Nvb2tfbGlzdCkKKyAg
ICAgICAgYmFja2VuZF9qc19yZXBseV9wYXJhbV9saXN0ID0gW10KKyAgICAgICAgaWYgInJldHVy
bnMiIGluIGpzb25fY29tbWFuZDoKKyAgICAgICAgICAgIGZvciBqc29uX3JldHVybiBpbiBqc29u
X2NvbW1hbmRbInJldHVybnMiXToKKyAgICAgICAgICAgICAgICBqc29uX3JldHVybl9uYW1lID0g
anNvbl9yZXR1cm5bIm5hbWUiXQorICAgICAgICAgICAgICAgIGJhY2tlbmRfanNfcmVwbHlfcGFy
YW1fbGlzdC5hcHBlbmQoIlwiJXNcIiIgJSBqc29uX3JldHVybl9uYW1lKQogCi0gICAgICAgICAg
ICBpZiBsZW4ocmVzcG9uc2VfY29va190ZXh0KSAhPSAwOgotICAgICAgICAgICAgICAgIHJlc3Bv
bnNlX2Nvb2tfdGV4dCA9ICIgICAgICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIHtcbiIgKyByZXNw
b25zZV9jb29rX3RleHQgKyAiICAgICAgICB9IgorICAgICAgICBqc19yZXBseV9saXN0ID0gIlsl
c10iICUgIiwgIi5qb2luKGJhY2tlbmRfanNfcmVwbHlfcGFyYW1fbGlzdCkKIAogICAgICAgICBH
ZW5lcmF0b3IuYmFja2VuZF9tZXRob2RfaW1wbGVtZW50YXRpb25fbGlzdC5hcHBlbmQoVGVtcGxh
dGVzLmJhY2tlbmRfbWV0aG9kLnN1YnN0aXR1dGUoTm9uZSwKICAgICAgICAgICAgIGRvbWFpbk5h
bWU9ZG9tYWluX25hbWUsIG1ldGhvZE5hbWU9anNvbl9jb21tYW5kX25hbWUsCkBAIC0yOTIyLDYg
KzI5OTgsNjQgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9q
c19kb21haW5faW5pdGlhbGl6ZXJfbGlzdC5hcHBlbmQoIkluc3BlY3RvckJhY2tlbmQucmVnaXN0
ZXJDb21tYW5kKFwiJXMuJXNcIiwgWyVzXSwgJXMpO1xuIiAlIChkb21haW5fbmFtZSwganNvbl9j
b21tYW5kX25hbWUsIGpzX3BhcmFtZXRlcnNfdGV4dCwganNfcmVwbHlfbGlzdCkpCiAgICAgICAg
IEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiKSA9IDA7XG4i
KQogCisgICAgY2xhc3MgQ2FsbGJhY2tNZXRob2RTdHJ1Y3RUZW1wbGF0ZToKKyAgICAgICAgQHN0
YXRpY21ldGhvZAorICAgICAgICBkZWYgYXBwZW5kX3Byb2xvZyhsaW5lX2xpc3QpOgorICAgICAg
ICAgICAgcGFzcworCisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGFwcGVuZF9l
cGlsb2cobGluZV9saXN0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjb250YWluZXJf
bmFtZSA9ICJqc29uTWVzc2FnZSIKKworICAgICMgR2VuZXJhdGVzIGNvbW1vbiBjb2RlIGZvciBl
dmVudCBzZW5kaW5nIGFuZCBjYWxsYmFjayByZXNwb25zZSBkYXRhIHNlbmRpbmcuCisgICAgQHN0
YXRpY21ldGhvZAorICAgIGRlZiBnZW5lcmF0ZV9zZW5kX21ldGhvZChwYXJhbWV0ZXJzLCBldmVu
dF9uYW1lLCBkb21haW5fbmFtZSwgYWRfaG9jX3R5cGVfd3JpdGVyLCBkZWNsX3BhcmFtZXRlcl9s
aXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Rfc3RydWN0X3RlbXBsYXRl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JfbWV0aG9kX2xpc3QsIG1l
dGhvZF90ZW1wbGF0ZSwgdGVtcGxhdGVfcGFyYW1zKToKKyAgICAgICAgbWV0aG9kX2xpbmVfbGlz
dCA9IFtdCisgICAgICAgIGlmIHBhcmFtZXRlcnM6CisgICAgICAgICAgICBtZXRob2Rfc3RydWN0
X3RlbXBsYXRlLmFwcGVuZF9wcm9sb2cobWV0aG9kX2xpbmVfbGlzdCkKKyAgICAgICAgICAgIGZv
ciBqc29uX3BhcmFtZXRlciBpbiBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgIHBhcmFtZXRl
cl9uYW1lID0ganNvbl9wYXJhbWV0ZXJbIm5hbWUiXQorCisgICAgICAgICAgICAgICAgcGFyYW1f
dHlwZV9iaW5kaW5nID0gR2VuZXJhdG9yLnJlc29sdmVfdHlwZV9hbmRfZ2VuZXJhdGVfYWRfaG9j
KGpzb25fcGFyYW1ldGVyLCBldmVudF9uYW1lLCBkb21haW5fbmFtZSwgYWRfaG9jX3R5cGVfd3Jp
dGVyLCAiIikKKworICAgICAgICAgICAgICAgIHJhd190eXBlID0gcGFyYW1fdHlwZV9iaW5kaW5n
LnJlZHVjZV90b19yYXdfdHlwZSgpCisgICAgICAgICAgICAgICAgcmF3X3R5cGVfYmluZGluZyA9
IFJhd1R5cGVCaW5kaW5nKHJhd190eXBlKQorCisgICAgICAgICAgICAgICAgb3B0aW9uYWwgPSBi
b29sKGpzb25fcGFyYW1ldGVyLmdldCgib3B0aW9uYWwiKSkKKworICAgICAgICAgICAgICAgIHNl
dHRlcl90eXBlID0gcmF3X3R5cGUuZ2V0X3NldHRlcl9uYW1lKCkKKworICAgICAgICAgICAgICAg
IHR5cGVfbW9kZWwgPSBwYXJhbV90eXBlX2JpbmRpbmcuZ2V0X3R5cGVfbW9kZWwoKQorICAgICAg
ICAgICAgICAgIHJhd190eXBlX21vZGVsID0gcmF3X3R5cGVfYmluZGluZy5nZXRfdHlwZV9tb2Rl
bCgpCisgICAgICAgICAgICAgICAgaWYgb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgICAgIHR5
cGVfbW9kZWwgPSB0eXBlX21vZGVsLmdldF9vcHRpb25hbCgpCisgICAgICAgICAgICAgICAgICAg
IHJhd190eXBlX21vZGVsID0gcmF3X3R5cGVfbW9kZWwuZ2V0X29wdGlvbmFsKCkKKworICAgICAg
ICAgICAgICAgIGFubm90YXRlZF90eXBlID0gdHlwZV9tb2RlbC5nZXRfaW5wdXRfcGFyYW1fdHlw
ZV90ZXh0KCkKKyAgICAgICAgICAgICAgICBtb2RlX3R5cGVfYmluZGluZyA9IHBhcmFtX3R5cGVf
YmluZGluZworCisgICAgICAgICAgICAgICAgZGVjbF9wYXJhbWV0ZXJfbGlzdC5hcHBlbmQoIiVz
ICVzIiAlIChhbm5vdGF0ZWRfdHlwZSwgcGFyYW1ldGVyX25hbWUpKQorCisgICAgICAgICAgICAg
ICAgc2V0dGVyX2FyZ3VtZW50ID0gcmF3X3R5cGVfbW9kZWwuZ2V0X2V2ZW50X3NldHRlcl9leHBy
ZXNzaW9uX3BhdHRlcm4oKSAlIHBhcmFtZXRlcl9uYW1lCisgICAgICAgICAgICAgICAgaWYgbW9k
ZV90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKToKKyAg
ICAgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0gbW9kZV90eXBlX2JpbmRpbmcuZ2V0
X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKSAlIHNldHRlcl9hcmd1bWVudAorCisg
ICAgICAgICAgICAgICAgc2V0dGVyX2NvZGUgPSAiICAgICVzLT5zZXQlcyhcIiVzXCIsICVzKTtc
biIgJSAobWV0aG9kX3N0cnVjdF90ZW1wbGF0ZS5jb250YWluZXJfbmFtZSwgc2V0dGVyX3R5cGUs
IHBhcmFtZXRlcl9uYW1lLCBzZXR0ZXJfYXJndW1lbnQpCisgICAgICAgICAgICAgICAgaWYgb3B0
aW9uYWw6CisgICAgICAgICAgICAgICAgICAgIHNldHRlcl9jb2RlID0gKCIgICAgaWYgKCVzKVxu
ICAgICIgJSBwYXJhbWV0ZXJfbmFtZSkgKyBzZXR0ZXJfY29kZQorICAgICAgICAgICAgICAgIG1l
dGhvZF9saW5lX2xpc3QuYXBwZW5kKHNldHRlcl9jb2RlKQorCisgICAgICAgICAgICBtZXRob2Rf
c3RydWN0X3RlbXBsYXRlLmFwcGVuZF9lcGlsb2cobWV0aG9kX2xpbmVfbGlzdCkKKworICAgICAg
ICBnZW5lcmF0b3JfbWV0aG9kX2xpc3QuYXBwZW5kKG1ldGhvZF90ZW1wbGF0ZS5zdWJzdGl0dXRl
KE5vbmUsCisgICAgICAgICAgICBkb21haW5OYW1lPWRvbWFpbl9uYW1lLAorICAgICAgICAgICAg
cGFyYW1ldGVycz0iLCAiLmpvaW4oZGVjbF9wYXJhbWV0ZXJfbGlzdCksCisgICAgICAgICAgICBj
b2RlPSIiLmpvaW4obWV0aG9kX2xpbmVfbGlzdCksICoqdGVtcGxhdGVfcGFyYW1zKSkKKwogICAg
IEBzdGF0aWNtZXRob2QKICAgICBkZWYgcmVzb2x2ZV90eXBlX2FuZF9nZW5lcmF0ZV9hZF9ob2Mo
anNvbl9wYXJhbSwgbWV0aG9kX25hbWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIs
IGNvbnRhaW5lcl9yZWxhdGl2ZV9uYW1lX3ByZWZpeF9wYXJhbSk6CiAgICAgICAgIHBhcmFtX25h
bWUgPSBqc29uX3BhcmFtWyJuYW1lIl0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162238</attachid>
            <date>2012-09-05 07:00:41 -0700</date>
            <delta_ts>2012-09-05 09:52:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95649-20120905180022.patch</filename>
            <type>text/plain</type>
            <size>22537</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNkZTZlMmVhMjljMGZm
MWZhMTNhMWVlYzk3ZjA4MjBlMmIyZGJkZi4uZjYxMTRmZGIyZjQzZGJjMmM5Nzk3Mjc2MTEzMzIx
OGZkM2IwYTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTAxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzdXBwb3J0IGFzeW5jaHJvbm91cyBjb21tYW5k
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTY0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEdlbmVyYXRvciBpcyBleHRlbmRlZCB0byBnZW5lcmF0ZSBjYWxsYmFjayBvYmplY3Qg
Zm9yIGVhY2ggYXN5bmNocm9ub3VzIGNvbW1hbmQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKFdyaXRlci5hcHBlbmRfbXVsdGlsaW5l
KToKKyAgICAgICAgKFdyaXRlcik6CisgICAgICAgIChXcml0ZXIuZ2V0X2luZGVudCk6CisgICAg
ICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkNsYXNzQmluZGluZy5y
ZXNvbHZlX2lubmVyLlJlc29sdmVEYXRhKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVySW1wbCk6CisgICAgICAgIChDYWxsYmFja0Jhc2UpOgorICAgICAgICAoR2VuZXJhdG9y
LnByb2Nlc3NfZXZlbnQpOgorICAgICAgICAoR2VuZXJhdG9yKToKKyAgICAgICAgKEdlbmVyYXRv
ci5FdmVudE1ldGhvZFN0cnVjdFRlbXBsYXRlKToKKyAgICAgICAgKEdlbmVyYXRvci5FdmVudE1l
dGhvZFN0cnVjdFRlbXBsYXRlLmFwcGVuZF9wcm9sb2cpOgorICAgICAgICAoR2VuZXJhdG9yLkV2
ZW50TWV0aG9kU3RydWN0VGVtcGxhdGUuYXBwZW5kX2VwaWxvZyk6CisgICAgICAgIChHZW5lcmF0
b3IucHJvY2Vzc19jb21tYW5kKToKKyAgICAgICAgKEdlbmVyYXRvci5DYWxsYmFja01ldGhvZFN0
cnVjdFRlbXBsYXRlKToKKyAgICAgICAgKEdlbmVyYXRvci5DYWxsYmFja01ldGhvZFN0cnVjdFRl
bXBsYXRlLmFwcGVuZF9wcm9sb2cpOgorICAgICAgICAoR2VuZXJhdG9yLkNhbGxiYWNrTWV0aG9k
U3RydWN0VGVtcGxhdGUuYXBwZW5kX2VwaWxvZyk6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJh
dGVfc2VuZF9tZXRob2QpOgorCiAyMDEyLTA4LTI4ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vr
b2xzYWtAZ21haWwuY29tPgogCiAgICAgICAgIENyYXNoIGluIEVkaXRpbmdTdHlsZTo6bWVyZ2VT
dHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5weQppbmRleCA4NTIyMjUzOGI0ZDNkN2U5NmZkM2NlOWUzYmQwYzkxYWYzMTk4Yzc4Li5l
ZDAzNmMyNzM1N2RkNDNkMjhlOTFhYmVlZGU5OTBmODE5NzY1ZGM2IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtNzcwLDYg
Kzc3MCw5IEBAIGNsYXNzIFdyaXRlcjoKICAgICAgICAgICAgIGlmIHA6CiAgICAgICAgICAgICAg
ICAgc2VsZi5uZXdsaW5lKHApCiAKKyAgICBkZWYgZ2V0X2luZGVudChzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuaW5kZW50CisKICAgICBkZWYgZ2V0X2luZGVudGVkKHNlbGYsIGFkZGl0aW9u
YWxfaW5kZW50KToKICAgICAgICAgcmV0dXJuIFdyaXRlcihzZWxmLm91dHB1dCwgc2VsZi5pbmRl
bnQgKyBhZGRpdGlvbmFsX2luZGVudCkKIApAQCAtMTExMCw3ICsxMTEzLDcgQEAgY2xhc3MgVHlw
ZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgUmVzb2x2ZURhdGE6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbl9wcm9wZXJ0aWVzID0gbWFpbgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX3Byb3BlcnRpZXMgPSBvcHRpb25hbAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190eXBlcyA9IGFkX2hvY190eXBlX2NvbnRl
eHQuYWRfaG9jX3R5cGVfbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190
eXBlcyA9IGFkX2hvY190eXBlX2xpc3QKIAogICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnJl
c29sdmVfZGF0YV8gPSBSZXNvbHZlRGF0YQogCkBAIC0xNzgzLDEwICsxNzg2LDIwIEBAICR7cmVz
cG9uc2VDb29rfQogCiAgICAgZnJvbnRlbmRfbWV0aG9kID0gc3RyaW5nLlRlbXBsYXRlKCIiInZv
aWQgSW5zcGVjdG9yRnJvbnRlbmQ6OiRkb21haW5OYW1lOjokZXZlbnROYW1lKCRwYXJhbWV0ZXJz
KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+ICR7ZXZlbnROYW1lfU1lc3NhZ2UgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICR7ZXZlbnROYW1lfU1lc3NhZ2UtPnNldFN0
cmluZygibWV0aG9kIiwgIiRkb21haW5OYW1lLiRldmVudE5hbWUiKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Cisg
ICAganNvbk1lc3NhZ2UtPnNldFN0cmluZygibWV0aG9kIiwgIiRkb21haW5OYW1lLiRldmVudE5h
bWUiKTsKICRjb2RlICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAg
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZCgke2V2ZW50
TmFtZX1NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmlu
ZygpKTsKK30KKyIiIikKKworICAgIGNhbGxiYWNrX21ldGhvZCA9IHN0cmluZy5UZW1wbGF0ZSgK
KyIiIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjokYWdlbnROYW1lOjokY2FsbGJhY2tOYW1l
OjokY2FsbGJhY2tOYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBs
PiBiYWNrZW5kSW1wbCwgaW50IGlkKSA6IENhbGxiYWNrQmFzZShiYWNrZW5kSW1wbCwgaWQpIHt9
CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OiRhZ2VudE5hbWU6OiRjYWxsYmFj
a05hbWU6OnNlbmRTdWNjZXNzKCRwYXJhbWV0ZXJzKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyRjb2RlICAg
IHNlbmRJZkFjdGl2ZShqc29uTWVzc2FnZSwgRXJyb3JTdHJpbmcoKSk7CiB9CiAiIiIpCiAKQEAg
LTE4NDUsMTEgKzE4NTgsMzMgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJJbXBsOworCiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjogcHVibGljIFJl
ZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKTsKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogCisgICAgY2xhc3MgQ2FsbGJhY2tC
YXNlOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIENhbGxiYWNrQmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1w
bD4gYmFja2VuZEltcGwsIGludCBpZCk7CisgICAgICAgIHZpcnR1YWwgfkNhbGxiYWNrQmFzZSgp
OworICAgICAgICB2b2lkIHNlbmRGYWlsdXJlKGNvbnN0IEVycm9yU3RyaW5nJik7CisgICAgICAg
IGJvb2wgaXNBY3RpdmUoKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBzZW5kSWZB
Y3RpdmUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcnRpYWxNZXNzYWdlLCBjb25zdCBF
cnJvclN0cmluZyYgaW52b2NhdGlvbkVycm9yKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZv
aWQgZGlzYWJsZSgpIHsgbV9hbHJlYWR5U2VudCA9IHRydWU7IH0KKworICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBsPiBtX2JhY2tlbmRJbXBsOworICAgICAgICBp
bnQgbV9pZDsKKyAgICAgICAgYm9vbCBtX2FscmVhZHlTZW50OworCisgICAgICAgIGZyaWVuZCBj
bGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckltcGw7CisgICAgfTsKKwogJGFnZW50SW50
ZXJmYWNlcwogJHZpcnR1YWxTZXR0ZXJzCiAKQEAgLTE5MjAsNiArMTk1NSw5IEBAICRjb25zdHJ1
Y3RvckluaXQKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UHJvdG9jb2xFcnJvcihjb25zdCBsb25n
KiBjb25zdCBjYWxsSWQsIENvbW1vbkVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGRhdGEpIGNvbnN0OwogICAgIHVzaW5nIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yOwogCisgICAgdm9p
ZCBzZW5kUmVzcG9uc2UobG9uZyBjYWxsSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBy
ZXN1bHQsIGNvbnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0aW9uRXJyb3IpOworICAgIGJvb2wgaXNB
Y3RpdmUoKSB7IHJldHVybiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsgfQorCiAkc2V0dGVy
cwogcHJpdmF0ZToKICRtZXRob2REZWNsYXJhdGlvbnMKQEAgLTIwMTcsNiArMjA1NSwxMSBAQCB2
b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1wbDo6c2VuZFJlc3BvbnNlKGxvbmcgY2Fs
bElkLCBQYXNzUmVmUHRyPEluc3BlYwogICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKCZjYWxs
SWQsIEludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgcHJvdG9jb2xFcnJvcnMpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorICAgIHNlbmRSZXNwb25zZShjYWxsSWQsIHJlc3VsdCwgaW52b2Nh
dGlvbkVycm9yKTsKK30KKwordm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckltcGw6OnNl
bmRSZXNwb25zZShsb25nIGNhbGxJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3Vs
dCwgY29uc3QgRXJyb3JTdHJpbmcmIGludm9jYXRpb25FcnJvcikKK3sKICAgICBpZiAoaW52b2Nh
dGlvbkVycm9yLmxlbmd0aCgpKSB7CiAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJ
ZCwgU2VydmVyRXJyb3IsIGludm9jYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTIx
NTQsNiArMjE5NywzMCBAQCBib29sIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRDb21t
YW5kTmFtZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFN0cmluZyogcgogICAgIHJldHVybiB0cnVl
OwogfQogCitJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFj
a0Jhc2UoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckltcGw+IGJhY2tlbmRJ
bXBsLCBpbnQgaWQpCisgICAgOiBtX2JhY2tlbmRJbXBsKGJhY2tlbmRJbXBsKSwgbV9pZChpZCks
IG1fYWxyZWFkeVNlbnQoZmFsc2UpIHt9CisKK0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpD
YWxsYmFja0Jhc2U6On5DYWxsYmFja0Jhc2UoKSB7fQorCit2b2lkIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRGYWlsdXJlKGNvbnN0IEVycm9yU3RyaW5nJiBl
cnJvcikKK3sKKyAgICBBU1NFUlQoZXJyb3IubGVuZ3RoKCkpOworICAgIHNlbmRJZkFjdGl2ZSgw
LCBlcnJvcik7Cit9CisKK2Jvb2wgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNr
QmFzZTo6aXNBY3RpdmUoKQoreworICAgIHJldHVybiAhbV9hbHJlYWR5U2VudCAmJiBtX2JhY2tl
bmRJbXBsLT5pc0FjdGl2ZSgpOworfQorCit2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpDYWxsYmFja0Jhc2U6OnNlbmRJZkFjdGl2ZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cGFydGlhbE1lc3NhZ2UsIGNvbnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0aW9uRXJyb3IpCit7Cisg
ICAgaWYgKG1fYWxyZWFkeVNlbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2JhY2tlbmRJbXBs
LT5zZW5kUmVzcG9uc2UobV9pZCwgcGFydGlhbE1lc3NhZ2UsIGludm9jYXRpb25FcnJvcik7Cisg
ICAgbV9hbHJlYWR5U2VudCA9IHRydWU7Cit9CisKIENPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0
PGludD4oSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmtNZXRob2ROYW1lc0VudW1TaXplKSA9
PSBXVEZfQVJSQVlfTEVOR1RIKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjb21tYW5kTmFt
ZXMpLCBjb21tYW5kX25hbWVfYXJyYXlfcHJvYmxlbSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKQEAgLTI3MjcsNTkgKzI3OTQsNDEgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgIGRlZiBwcm9j
ZXNzX2V2ZW50KGpzb25fZXZlbnQsIGRvbWFpbl9uYW1lLCBmcm9udGVuZF9tZXRob2RfZGVjbGFy
YXRpb25fbGluZXMpOgogICAgICAgICBldmVudF9uYW1lID0ganNvbl9ldmVudFsibmFtZSJdCiAK
LSAgICAgICAgcGFyYW1ldGVyX2xpc3QgPSBbXQotICAgICAgICBtZXRob2RfbGluZV9saXN0ID0g
W10KLSAgICAgICAgYmFja2VuZF9qc19ldmVudF9wYXJhbV9saXN0ID0gW10KICAgICAgICAgYWRf
aG9jX3R5cGVfb3V0cHV0ID0gW10KICAgICAgICAgZnJvbnRlbmRfbWV0aG9kX2RlY2xhcmF0aW9u
X2xpbmVzLmFwcGVuZChhZF9ob2NfdHlwZV9vdXRwdXQpCiAgICAgICAgIGFkX2hvY190eXBlX3dy
aXRlciA9IFdyaXRlcihhZF9ob2NfdHlwZV9vdXRwdXQsICIgICAgICAgICIpCi0gICAgICAgIGlm
ICJwYXJhbWV0ZXJzIiBpbiBqc29uX2V2ZW50OgotICAgICAgICAgICAgbWV0aG9kX2xpbmVfbGlz
dC5hcHBlbmQoIiAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNPYmplY3QgPSBJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpO1xuIikKLSAgICAgICAgICAgIGZvciBqc29uX3BhcmFtZXRl
ciBpbiBqc29uX2V2ZW50WyJwYXJhbWV0ZXJzIl06Ci0gICAgICAgICAgICAgICAgcGFyYW1ldGVy
X25hbWUgPSBqc29uX3BhcmFtZXRlclsibmFtZSJdCi0KLSAgICAgICAgICAgICAgICBwYXJhbV90
eXBlX2JpbmRpbmcgPSBHZW5lcmF0b3IucmVzb2x2ZV90eXBlX2FuZF9nZW5lcmF0ZV9hZF9ob2Mo
anNvbl9wYXJhbWV0ZXIsIGV2ZW50X25hbWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93cml0
ZXIsICIiKQotCi0gICAgICAgICAgICAgICAgcmF3X3R5cGUgPSBwYXJhbV90eXBlX2JpbmRpbmcu
cmVkdWNlX3RvX3Jhd190eXBlKCkKLSAgICAgICAgICAgICAgICByYXdfdHlwZV9iaW5kaW5nID0g
UmF3VHlwZUJpbmRpbmcocmF3X3R5cGUpCiAKLSAgICAgICAgICAgICAgICBvcHRpb25hbCA9IGJv
b2woanNvbl9wYXJhbWV0ZXIuZ2V0KCJvcHRpb25hbCIpKQotCi0gICAgICAgICAgICAgICAgc2V0
dGVyX3R5cGUgPSByYXdfdHlwZS5nZXRfc2V0dGVyX25hbWUoKQorICAgICAgICBkZWNsX3BhcmFt
ZXRlcl9saXN0ID0gW10KIAotICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSBwYXJhbV90eXBl
X2JpbmRpbmcuZ2V0X3R5cGVfbW9kZWwoKQotICAgICAgICAgICAgICAgIHJhd190eXBlX21vZGVs
ID0gcmF3X3R5cGVfYmluZGluZy5nZXRfdHlwZV9tb2RlbCgpCi0gICAgICAgICAgICAgICAgaWYg
b3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSB0eXBlX21vZGVsLmdl
dF9vcHRpb25hbCgpCi0gICAgICAgICAgICAgICAgICAgIHJhd190eXBlX21vZGVsID0gcmF3X3R5
cGVfbW9kZWwuZ2V0X29wdGlvbmFsKCkKLQotICAgICAgICAgICAgICAgIGFubm90YXRlZF90eXBl
ID0gdHlwZV9tb2RlbC5nZXRfaW5wdXRfcGFyYW1fdHlwZV90ZXh0KCkKLSAgICAgICAgICAgICAg
ICBtb2RlX3R5cGVfYmluZGluZyA9IHBhcmFtX3R5cGVfYmluZGluZwotCi0gICAgICAgICAgICAg
ICAgcGFyYW1ldGVyX2xpc3QuYXBwZW5kKCIlcyAlcyIgJSAoYW5ub3RhdGVkX3R5cGUsIHBhcmFt
ZXRlcl9uYW1lKSkKLQotICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1bWVudCA9IHJhd190eXBl
X21vZGVsLmdldF9ldmVudF9zZXR0ZXJfZXhwcmVzc2lvbl9wYXR0ZXJuKCkgJSBwYXJhbWV0ZXJf
bmFtZQotICAgICAgICAgICAgICAgIGlmIG1vZGVfdHlwZV9iaW5kaW5nLmdldF9zZXR0ZXJfdmFs
dWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCk6Ci0gICAgICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1
bWVudCA9IG1vZGVfdHlwZV9iaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0
ZXJuKCkgJSBzZXR0ZXJfYXJndW1lbnQKLQotICAgICAgICAgICAgICAgIHNldHRlcl9jb2RlID0g
IiAgICBwYXJhbXNPYmplY3QtPnNldCVzKFwiJXNcIiwgJXMpO1xuIiAlIChzZXR0ZXJfdHlwZSwg
cGFyYW1ldGVyX25hbWUsIHNldHRlcl9hcmd1bWVudCkKLSAgICAgICAgICAgICAgICBpZiBvcHRp
b25hbDoKLSAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2NvZGUgPSAoIiAgICBpZiAoJXMpXG4g
ICAgIiAlIHBhcmFtZXRlcl9uYW1lKSArIHNldHRlcl9jb2RlCi0gICAgICAgICAgICAgICAgbWV0
aG9kX2xpbmVfbGlzdC5hcHBlbmQoc2V0dGVyX2NvZGUpCisgICAgICAgIGpzb25fcGFyYW1ldGVy
cyA9IGpzb25fZXZlbnQuZ2V0KCJwYXJhbWV0ZXJzIikKKyAgICAgICAgR2VuZXJhdG9yLmdlbmVy
YXRlX3NlbmRfbWV0aG9kKGpzb25fcGFyYW1ldGVycywgZXZlbnRfbmFtZSwgZG9tYWluX25hbWUs
IGFkX2hvY190eXBlX3dyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlY2xfcGFyYW1ldGVyX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZW5lcmF0b3IuRXZlbnRNZXRob2RTdHJ1Y3RUZW1wbGF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvci5mcm9udGVuZF9tZXRob2RfbGlz
dCwgVGVtcGxhdGVzLmZyb250ZW5kX21ldGhvZCwgeyJldmVudE5hbWUiOiBldmVudF9uYW1lfSkK
IAorICAgICAgICBiYWNrZW5kX2pzX2V2ZW50X3BhcmFtX2xpc3QgPSBbXQorICAgICAgICBpZiBq
c29uX3BhcmFtZXRlcnM6CisgICAgICAgICAgICBmb3IgcGFyYW1ldGVyIGluIGpzb25fcGFyYW1l
dGVyczoKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfbmFtZSA9IHBhcmFtZXRlclsibmFtZSJd
CiAgICAgICAgICAgICAgICAgYmFja2VuZF9qc19ldmVudF9wYXJhbV9saXN0LmFwcGVuZCgiXCIl
c1wiIiAlIHBhcmFtZXRlcl9uYW1lKQotICAgICAgICAgICAgbWV0aG9kX2xpbmVfbGlzdC5hcHBl
bmQoIiAgICAlc01lc3NhZ2UtPnNldE9iamVjdChcInBhcmFtc1wiLCBwYXJhbXNPYmplY3QpO1xu
IiAlIGV2ZW50X25hbWUpCi0gICAgICAgIGZyb250ZW5kX21ldGhvZF9kZWNsYXJhdGlvbl9saW5l
cy5hcHBlbmQoCi0gICAgICAgICAgICAiICAgICAgICB2b2lkICVzKCVzKTtcbiIgJSAoZXZlbnRf
bmFtZSwgIiwgIi5qb2luKHBhcmFtZXRlcl9saXN0KSkpCiAKLSAgICAgICAgR2VuZXJhdG9yLmZy
b250ZW5kX21ldGhvZF9saXN0LmFwcGVuZChUZW1wbGF0ZXMuZnJvbnRlbmRfbWV0aG9kLnN1YnN0
aXR1dGUoTm9uZSwKLSAgICAgICAgICAgIGRvbWFpbk5hbWU9ZG9tYWluX25hbWUsIGV2ZW50TmFt
ZT1ldmVudF9uYW1lLAotICAgICAgICAgICAgcGFyYW1ldGVycz0iLCAiLmpvaW4ocGFyYW1ldGVy
X2xpc3QpLAotICAgICAgICAgICAgY29kZT0iIi5qb2luKG1ldGhvZF9saW5lX2xpc3QpKSkKKyAg
ICAgICAgZnJvbnRlbmRfbWV0aG9kX2RlY2xhcmF0aW9uX2xpbmVzLmFwcGVuZCgKKyAgICAgICAg
ICAgICIgICAgICAgIHZvaWQgJXMoJXMpO1xuIiAlIChldmVudF9uYW1lLCAiLCAiLmpvaW4oZGVj
bF9wYXJhbWV0ZXJfbGlzdCkpKQogCiAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2pzX2RvbWFp
bl9pbml0aWFsaXplcl9saXN0LmFwcGVuZCgiSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckV2ZW50
KFwiJXMuJXNcIiwgWyVzXSk7XG4iICUgKAogICAgICAgICAgICAgZG9tYWluX25hbWUsIGV2ZW50
X25hbWUsICIsICIuam9pbihiYWNrZW5kX2pzX2V2ZW50X3BhcmFtX2xpc3QpKSkKIAorICAgIGNs
YXNzIEV2ZW50TWV0aG9kU3RydWN0VGVtcGxhdGU6CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAg
ICAgICAgZGVmIGFwcGVuZF9wcm9sb2cobGluZV9saXN0KToKKyAgICAgICAgICAgIGxpbmVfbGlz
dC5hcHBlbmQoIiAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNPYmplY3QgPSBJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpO1xuIikKKworICAgICAgICBAc3RhdGljbWV0aG9kCisgICAg
ICAgIGRlZiBhcHBlbmRfZXBpbG9nKGxpbmVfbGlzdCk6CisgICAgICAgICAgICBsaW5lX2xpc3Qu
YXBwZW5kKCIgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChcInBhcmFtc1wiLCBwYXJhbXNPYmpl
Y3QpO1xuIikKKworICAgICAgICBjb250YWluZXJfbmFtZSA9ICJwYXJhbXNPYmplY3QiCisKICAg
ICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHByb2Nlc3NfY29tbWFuZChqc29uX2NvbW1hbmQsIGRv
bWFpbl9uYW1lLCBhZ2VudF9maWVsZF9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSk6CiAgICAg
ICAgIGpzb25fY29tbWFuZF9uYW1lID0ganNvbl9jb21tYW5kWyJuYW1lIl0KQEAgLTI4MDAsNyAr
Mjg0OSw2IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgbWV0aG9kX291dF9jb2RlID0gIiIK
ICAgICAgICAgYWdlbnRfY2FsbF9wYXJhbV9saXN0ID0gW10KICAgICAgICAgcmVzcG9uc2VfY29v
a19saXN0ID0gW10KLSAgICAgICAgYmFja2VuZF9qc19yZXBseV9wYXJhbV9saXN0ID0gW10KICAg
ICAgICAgcmVxdWVzdF9tZXNzYWdlX3BhcmFtID0gIiIKICAgICAgICAganNfcGFyYW1ldGVyc190
ZXh0ID0gIiIKICAgICAgICAgaWYgInBhcmFtZXRlcnMiIGluIGpzb25fY29tbWFuZDoKQEAgLTI4
NTUsNTggKzI5MDMsODkgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAganNfcGFyYW1l
dGVyc190ZXh0ID0gIiwgIi5qb2luKGpzX3BhcmFtX2xpc3QpCiAKICAgICAgICAgcmVzcG9uc2Vf
Y29va190ZXh0ID0gIiIKLSAgICAgICAganNfcmVwbHlfbGlzdCA9ICJbXSIKLSAgICAgICAgaWYg
InJldHVybnMiIGluIGpzb25fY29tbWFuZDoKLSAgICAgICAgICAgIG1ldGhvZF9vdXRfY29kZSAr
PSAiXG4iCi0gICAgICAgICAgICBmb3IganNvbl9yZXR1cm4gaW4ganNvbl9jb21tYW5kWyJyZXR1
cm5zIl06CisgICAgICAgIGlmIGpzb25fY29tbWFuZC5nZXQoImFzeW5jIikgPT0gVHJ1ZToKKyAg
ICAgICAgICAgIGNhbGxiYWNrX25hbWUgPSBDYXBpdGFsaXplci5sb3dlcl9jYW1lbF9jYXNlX3Rv
X3VwcGVyKGpzb25fY29tbWFuZF9uYW1lKSArICJDYWxsYmFjayIKKworICAgICAgICAgICAgY2Fs
bGJhY2tfb3V0cHV0ID0gW10KKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlciA9IFdyaXRlcihj
YWxsYmFja19vdXRwdXQsIGFkX2hvY190eXBlX3dyaXRlci5nZXRfaW5kZW50KCkpCisKKyAgICAg
ICAgICAgIGRlY2xfcGFyYW1ldGVyX2xpc3QgPSBbXQorICAgICAgICAgICAgR2VuZXJhdG9yLmdl
bmVyYXRlX3NlbmRfbWV0aG9kKGpzb25fY29tbWFuZC5nZXQoInJldHVybnMiKSwganNvbl9jb21t
YW5kX25hbWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93cml0ZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbF9wYXJhbWV0ZXJfbGlzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3IuQ2FsbGJhY2tN
ZXRob2RTdHJ1Y3RUZW1wbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9tZXRob2RfaW1wbGVtZW50YXRpb25fbGlzdCwgVGVt
cGxhdGVzLmNhbGxiYWNrX21ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7ImNhbGxiYWNrTmFtZSI6IGNhbGxiYWNrX25hbWUsICJhZ2VudE5hbWUiOiBh
Z2VudF9pbnRlcmZhY2VfbmFtZX0pCisKKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXds
aW5lKCJjbGFzcyAiICsgY2FsbGJhY2tfbmFtZSArICIgOiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHtc
biIpCisgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgicHVibGljOlxuIikKKyAg
ICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCIgICAgIiArIGNhbGxiYWNrX25hbWUg
KyAiKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBsPiwgaW50IGlkKTtc
biIpCisgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgiICAgIHZvaWQgc2VuZFN1
Y2Nlc3MoIiArICIsICIuam9pbihkZWNsX3BhcmFtZXRlcl9saXN0KSArICIpO1xuIikKKyAgICAg
ICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCJ9O1xuIikKKworICAgICAgICAgICAgYWRf
aG9jX3R5cGVfb3V0cHV0LmFwcGVuZChjYWxsYmFja19vdXRwdXQpCisKKyAgICAgICAgICAgIG1l
dGhvZF9vdXRfY29kZSArPSAiICAgIFJlZlB0cjwiICsgYWdlbnRfaW50ZXJmYWNlX25hbWUgKyAi
OjoiICsgY2FsbGJhY2tfbmFtZSArICI+IGNhbGxiYWNrID0gYWRvcHRSZWYobmV3ICIgKyBhZ2Vu
dF9pbnRlcmZhY2VfbmFtZSArICI6OiIgKyBjYWxsYmFja19uYW1lICsgIih0aGlzLCBjYWxsSWQp
KTtcbiIKKyAgICAgICAgICAgIGFnZW50X2NhbGxfcGFyYW1fbGlzdC5hcHBlbmQoIiwgY2FsbGJh
Y2siKQorICAgICAgICAgICAgcmVzcG9uc2VfY29va190ZXh0ICs9ICIgICAgICAgIGlmICghZXJy
b3IubGVuZ3RoKCkpIFxuIgorICAgICAgICAgICAgcmVzcG9uc2VfY29va190ZXh0ICs9ICIgICAg
ICAgICAgICByZXR1cm47XG4iCisgICAgICAgICAgICByZXNwb25zZV9jb29rX3RleHQgKz0gIiAg
ICAgICAgY2FsbGJhY2stPmRpc2FibGUoKTtcbiIKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNr
ZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiLCBQYXNzUmVmUHRyPCVzPiBjYWxsYmFj
ayIgJSBjYWxsYmFja19uYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgInJldHVy
bnMiIGluIGpzb25fY29tbWFuZDoKKyAgICAgICAgICAgICAgICBtZXRob2Rfb3V0X2NvZGUgKz0g
IlxuIgorICAgICAgICAgICAgICAgIGZvciBqc29uX3JldHVybiBpbiBqc29uX2NvbW1hbmRbInJl
dHVybnMiXToKIAotICAgICAgICAgICAgICAgIGpzb25fcmV0dXJuX25hbWUgPSBqc29uX3JldHVy
blsibmFtZSJdCisgICAgICAgICAgICAgICAgICAgIGpzb25fcmV0dXJuX25hbWUgPSBqc29uX3Jl
dHVyblsibmFtZSJdCiAKLSAgICAgICAgICAgICAgICBvcHRpb25hbCA9IGJvb2woanNvbl9yZXR1
cm4uZ2V0KCJvcHRpb25hbCIpKQorICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCA9IGJvb2wo
anNvbl9yZXR1cm4uZ2V0KCJvcHRpb25hbCIpKQogCi0gICAgICAgICAgICAgICAgcmV0dXJuX3R5
cGVfYmluZGluZyA9IEdlbmVyYXRvci5yZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRlX2FkX2hvYyhq
c29uX3JldHVybiwganNvbl9jb21tYW5kX25hbWUsIGRvbWFpbl9uYW1lLCBhZF9ob2NfdHlwZV93
cml0ZXIsIGFnZW50X2ludGVyZmFjZV9uYW1lICsgIjo6IikKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuX3R5cGVfYmluZGluZyA9IEdlbmVyYXRvci5yZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRl
X2FkX2hvYyhqc29uX3JldHVybiwganNvbl9jb21tYW5kX25hbWUsIGRvbWFpbl9uYW1lLCBhZF9o
b2NfdHlwZV93cml0ZXIsIGFnZW50X2ludGVyZmFjZV9uYW1lICsgIjo6IikKIAotICAgICAgICAg
ICAgICAgIHJhd190eXBlID0gcmV0dXJuX3R5cGVfYmluZGluZy5yZWR1Y2VfdG9fcmF3X3R5cGUo
KQotICAgICAgICAgICAgICAgIHNldHRlcl90eXBlID0gcmF3X3R5cGUuZ2V0X3NldHRlcl9uYW1l
KCkKLSAgICAgICAgICAgICAgICBpbml0aWFsaXplciA9IHJhd190eXBlLmdldF9jX2luaXRpYWxp
emVyKCkKKyAgICAgICAgICAgICAgICAgICAgcmF3X3R5cGUgPSByZXR1cm5fdHlwZV9iaW5kaW5n
LnJlZHVjZV90b19yYXdfdHlwZSgpCisgICAgICAgICAgICAgICAgICAgIHNldHRlcl90eXBlID0g
cmF3X3R5cGUuZ2V0X3NldHRlcl9uYW1lKCkKKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6
ZXIgPSByYXdfdHlwZS5nZXRfY19pbml0aWFsaXplcigpCiAKLSAgICAgICAgICAgICAgICB0eXBl
X21vZGVsID0gcmV0dXJuX3R5cGVfYmluZGluZy5nZXRfdHlwZV9tb2RlbCgpCi0gICAgICAgICAg
ICAgICAgaWYgb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSB0eXBl
X21vZGVsLmdldF9vcHRpb25hbCgpCisgICAgICAgICAgICAgICAgICAgIHR5cGVfbW9kZWwgPSBy
ZXR1cm5fdHlwZV9iaW5kaW5nLmdldF90eXBlX21vZGVsKCkKKyAgICAgICAgICAgICAgICAgICAg
aWYgb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX21vZGVsID0gdHlwZV9t
b2RlbC5nZXRfb3B0aW9uYWwoKQogCi0gICAgICAgICAgICAgICAgY29kZSA9ICIgICAgJXMgb3V0
XyVzO1xuIiAlICh0eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21vZGVsKCkuZ2V0
X3JldHVybl92YXJfdHlwZSgpLCBqc29uX3JldHVybl9uYW1lKQotICAgICAgICAgICAgICAgIHBh
cmFtID0gIiwgJXNvdXRfJXMiICUgKHR5cGVfbW9kZWwuZ2V0X2NvbW1hbmRfcmV0dXJuX3Bhc3Nf
bW9kZWwoKS5nZXRfb3V0cHV0X2FyZ3VtZW50X3ByZWZpeCgpLCBqc29uX3JldHVybl9uYW1lKQot
ICAgICAgICAgICAgICAgIHZhcl9uYW1lID0gIm91dF8lcyIgJSBqc29uX3JldHVybl9uYW1lCi0g
ICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0gdHlwZV9tb2RlbC5nZXRfY29tbWFuZF9y
ZXR1cm5fcGFzc19tb2RlbCgpLmdldF9vdXRwdXRfdG9fcmF3X2V4cHJlc3Npb24oKSAlIHZhcl9u
YW1lCi0gICAgICAgICAgICAgICAgaWYgcmV0dXJuX3R5cGVfYmluZGluZy5nZXRfc2V0dGVyX3Zh
bHVlX2V4cHJlc3Npb25fcGF0dGVybigpOgotICAgICAgICAgICAgICAgICAgICBzZXR0ZXJfYXJn
dW1lbnQgPSByZXR1cm5fdHlwZV9iaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9w
YXR0ZXJuKCkgJSBzZXR0ZXJfYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9ICIg
ICAgJXMgb3V0XyVzO1xuIiAlICh0eXBlX21vZGVsLmdldF9jb21tYW5kX3JldHVybl9wYXNzX21v
ZGVsKCkuZ2V0X3JldHVybl92YXJfdHlwZSgpLCBqc29uX3JldHVybl9uYW1lKQorICAgICAgICAg
ICAgICAgICAgICBwYXJhbSA9ICIsICVzb3V0XyVzIiAlICh0eXBlX21vZGVsLmdldF9jb21tYW5k
X3JldHVybl9wYXNzX21vZGVsKCkuZ2V0X291dHB1dF9hcmd1bWVudF9wcmVmaXgoKSwganNvbl9y
ZXR1cm5fbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgdmFyX25hbWUgPSAib3V0XyVzIiAlIGpz
b25fcmV0dXJuX25hbWUKKyAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2FyZ3VtZW50ID0gdHlw
ZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5fcGFzc19tb2RlbCgpLmdldF9vdXRwdXRfdG9fcmF3
X2V4cHJlc3Npb24oKSAlIHZhcl9uYW1lCisgICAgICAgICAgICAgICAgICAgIGlmIHJldHVybl90
eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1bWVudCA9IHJldHVybl90eXBlX2JpbmRpbmcu
Z2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKSAlIHNldHRlcl9hcmd1bWVudAog
Ci0gICAgICAgICAgICAgICAgY29vayA9ICIgICAgICAgICAgICByZXN1bHQtPnNldCVzKFwiJXNc
IiwgJXMpO1xuIiAlIChzZXR0ZXJfdHlwZSwganNvbl9yZXR1cm5fbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
dGVyX2FyZ3VtZW50KQorICAgICAgICAgICAgICAgICAgICBjb29rID0gIiAgICAgICAgICAgIHJl
c3VsdC0+c2V0JXMoXCIlc1wiLCAlcyk7XG4iICUgKHNldHRlcl90eXBlLCBqc29uX3JldHVybl9u
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1bWVudCkKIAotICAgICAgICAgICAgICAg
IHNldF9jb25kaXRpb25fcGF0dGVybiA9IHR5cGVfbW9kZWwuZ2V0X2NvbW1hbmRfcmV0dXJuX3Bh
c3NfbW9kZWwoKS5nZXRfc2V0X3JldHVybl9jb25kaXRpb24oKQotICAgICAgICAgICAgICAgIGlm
IHNldF9jb25kaXRpb25fcGF0dGVybjoKLSAgICAgICAgICAgICAgICAgICAgY29vayA9ICgiICAg
ICAgICAgICAgaWYgKCVzKVxuICAgICIgJSAoc2V0X2NvbmRpdGlvbl9wYXR0ZXJuICUgdmFyX25h
bWUpKSArIGNvb2sKLSAgICAgICAgICAgICAgICBhbm5vdGF0ZWRfdHlwZSA9IHR5cGVfbW9kZWwu
Z2V0X2NvbW1hbmRfcmV0dXJuX3Bhc3NfbW9kZWwoKS5nZXRfb3V0cHV0X3BhcmFtZXRlcl90eXBl
KCkKKyAgICAgICAgICAgICAgICAgICAgc2V0X2NvbmRpdGlvbl9wYXR0ZXJuID0gdHlwZV9tb2Rl
bC5nZXRfY29tbWFuZF9yZXR1cm5fcGFzc19tb2RlbCgpLmdldF9zZXRfcmV0dXJuX2NvbmRpdGlv
bigpCisgICAgICAgICAgICAgICAgICAgIGlmIHNldF9jb25kaXRpb25fcGF0dGVybjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvb2sgPSAoIiAgICAgICAgICAgIGlmICglcylcbiAgICAiICUg
KHNldF9jb25kaXRpb25fcGF0dGVybiAlIHZhcl9uYW1lKSkgKyBjb29rCisgICAgICAgICAgICAg
ICAgICAgIGFubm90YXRlZF90eXBlID0gdHlwZV9tb2RlbC5nZXRfY29tbWFuZF9yZXR1cm5fcGFz
c19tb2RlbCgpLmdldF9vdXRwdXRfcGFyYW1ldGVyX3R5cGUoKQogCi0gICAgICAgICAgICAgICAg
cGFyYW1fbmFtZSA9ICJvdXRfJXMiICUganNvbl9yZXR1cm5fbmFtZQotICAgICAgICAgICAgICAg
IGlmIG9wdGlvbmFsOgotICAgICAgICAgICAgICAgICAgICBwYXJhbV9uYW1lID0gIm9wdF8iICsg
cGFyYW1fbmFtZQorICAgICAgICAgICAgICAgICAgICBwYXJhbV9uYW1lID0gIm91dF8lcyIgJSBq
c29uX3JldHVybl9uYW1lCisgICAgICAgICAgICAgICAgICAgIGlmIG9wdGlvbmFsOgorICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1fbmFtZSA9ICJvcHRfIiArIHBhcmFtX25hbWUKIAotICAg
ICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVu
ZCgiLCAlcyAlcyIgJSAoYW5ub3RhdGVkX3R5cGUsIHBhcmFtX25hbWUpKQotICAgICAgICAgICAg
ICAgIHJlc3BvbnNlX2Nvb2tfbGlzdC5hcHBlbmQoY29vaykKKyAgICAgICAgICAgICAgICAgICAg
R2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIsICVzICVzIiAl
IChhbm5vdGF0ZWRfdHlwZSwgcGFyYW1fbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJlc3Bv
bnNlX2Nvb2tfbGlzdC5hcHBlbmQoY29vaykKIAotICAgICAgICAgICAgICAgIG1ldGhvZF9vdXRf
Y29kZSArPSBjb2RlCi0gICAgICAgICAgICAgICAgYWdlbnRfY2FsbF9wYXJhbV9saXN0LmFwcGVu
ZChwYXJhbSkKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kX291dF9jb2RlICs9IGNvZGUKKyAg
ICAgICAgICAgICAgICAgICAgYWdlbnRfY2FsbF9wYXJhbV9saXN0LmFwcGVuZChwYXJhbSkKIAot
ICAgICAgICAgICAgICAgIGJhY2tlbmRfanNfcmVwbHlfcGFyYW1fbGlzdC5hcHBlbmQoIlwiJXNc
IiIgJSBqc29uX3JldHVybl9uYW1lKQorICAgICAgICAgICAgICAgIHJlc3BvbnNlX2Nvb2tfdGV4
dCA9ICIiLmpvaW4ocmVzcG9uc2VfY29va19saXN0KQogCi0gICAgICAgICAgICBqc19yZXBseV9s
aXN0ID0gIlslc10iICUgIiwgIi5qb2luKGJhY2tlbmRfanNfcmVwbHlfcGFyYW1fbGlzdCkKKyAg
ICAgICAgICAgICAgICBpZiBsZW4ocmVzcG9uc2VfY29va190ZXh0KSAhPSAwOgorICAgICAgICAg
ICAgICAgICAgICByZXNwb25zZV9jb29rX3RleHQgPSAiICAgICAgICBpZiAoIWVycm9yLmxlbmd0
aCgpKSB7XG4iICsgcmVzcG9uc2VfY29va190ZXh0ICsgIiAgICAgICAgfSIKIAotICAgICAgICAg
ICAgcmVzcG9uc2VfY29va190ZXh0ID0gIiIuam9pbihyZXNwb25zZV9jb29rX2xpc3QpCisgICAg
ICAgIGJhY2tlbmRfanNfcmVwbHlfcGFyYW1fbGlzdCA9IFtdCisgICAgICAgIGlmICJyZXR1cm5z
IiBpbiBqc29uX2NvbW1hbmQ6CisgICAgICAgICAgICBmb3IganNvbl9yZXR1cm4gaW4ganNvbl9j
b21tYW5kWyJyZXR1cm5zIl06CisgICAgICAgICAgICAgICAganNvbl9yZXR1cm5fbmFtZSA9IGpz
b25fcmV0dXJuWyJuYW1lIl0KKyAgICAgICAgICAgICAgICBiYWNrZW5kX2pzX3JlcGx5X3BhcmFt
X2xpc3QuYXBwZW5kKCJcIiVzXCIiICUganNvbl9yZXR1cm5fbmFtZSkKIAotICAgICAgICAgICAg
aWYgbGVuKHJlc3BvbnNlX2Nvb2tfdGV4dCkgIT0gMDoKLSAgICAgICAgICAgICAgICByZXNwb25z
ZV9jb29rX3RleHQgPSAiICAgICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKSB7XG4iICsgcmVzcG9u
c2VfY29va190ZXh0ICsgIiAgICAgICAgfSIKKyAgICAgICAganNfcmVwbHlfbGlzdCA9ICJbJXNd
IiAlICIsICIuam9pbihiYWNrZW5kX2pzX3JlcGx5X3BhcmFtX2xpc3QpCiAKICAgICAgICAgR2Vu
ZXJhdG9yLmJhY2tlbmRfbWV0aG9kX2ltcGxlbWVudGF0aW9uX2xpc3QuYXBwZW5kKFRlbXBsYXRl
cy5iYWNrZW5kX21ldGhvZC5zdWJzdGl0dXRlKE5vbmUsCiAgICAgICAgICAgICBkb21haW5OYW1l
PWRvbWFpbl9uYW1lLCBtZXRob2ROYW1lPWpzb25fY29tbWFuZF9uYW1lLApAQCAtMjkyMiw2ICsz
MDAxLDY0IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfanNf
ZG9tYWluX2luaXRpYWxpemVyX2xpc3QuYXBwZW5kKCJJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVy
Q29tbWFuZChcIiVzLiVzXCIsIFslc10sICVzKTtcbiIgJSAoZG9tYWluX25hbWUsIGpzb25fY29t
bWFuZF9uYW1lLCBqc19wYXJhbWV0ZXJzX3RleHQsIGpzX3JlcGx5X2xpc3QpKQogICAgICAgICBH
ZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIikgPSAwO1xuIikK
IAorICAgIGNsYXNzIENhbGxiYWNrTWV0aG9kU3RydWN0VGVtcGxhdGU6CisgICAgICAgIEBzdGF0
aWNtZXRob2QKKyAgICAgICAgZGVmIGFwcGVuZF9wcm9sb2cobGluZV9saXN0KToKKyAgICAgICAg
ICAgIHBhc3MKKworICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBhcHBlbmRfZXBp
bG9nKGxpbmVfbGlzdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY29udGFpbmVyX25h
bWUgPSAianNvbk1lc3NhZ2UiCisKKyAgICAjIEdlbmVyYXRlcyBjb21tb24gY29kZSBmb3IgZXZl
bnQgc2VuZGluZyBhbmQgY2FsbGJhY2sgcmVzcG9uc2UgZGF0YSBzZW5kaW5nLgorICAgIEBzdGF0
aWNtZXRob2QKKyAgICBkZWYgZ2VuZXJhdGVfc2VuZF9tZXRob2QocGFyYW1ldGVycywgZXZlbnRf
bmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dyaXRlciwgZGVjbF9wYXJhbWV0ZXJfbGlz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kX3N0cnVjdF90ZW1wbGF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yX21ldGhvZF9saXN0LCBtZXRo
b2RfdGVtcGxhdGUsIHRlbXBsYXRlX3BhcmFtcyk6CisgICAgICAgIG1ldGhvZF9saW5lX2xpc3Qg
PSBbXQorICAgICAgICBpZiBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgbWV0aG9kX3N0cnVjdF90
ZW1wbGF0ZS5hcHBlbmRfcHJvbG9nKG1ldGhvZF9saW5lX2xpc3QpCisgICAgICAgICAgICBmb3Ig
anNvbl9wYXJhbWV0ZXIgaW4gcGFyYW1ldGVyczoKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJf
bmFtZSA9IGpzb25fcGFyYW1ldGVyWyJuYW1lIl0KKworICAgICAgICAgICAgICAgIHBhcmFtX3R5
cGVfYmluZGluZyA9IEdlbmVyYXRvci5yZXNvbHZlX3R5cGVfYW5kX2dlbmVyYXRlX2FkX2hvYyhq
c29uX3BhcmFtZXRlciwgZXZlbnRfbmFtZSwgZG9tYWluX25hbWUsIGFkX2hvY190eXBlX3dyaXRl
ciwgIiIpCisKKyAgICAgICAgICAgICAgICByYXdfdHlwZSA9IHBhcmFtX3R5cGVfYmluZGluZy5y
ZWR1Y2VfdG9fcmF3X3R5cGUoKQorICAgICAgICAgICAgICAgIHJhd190eXBlX2JpbmRpbmcgPSBS
YXdUeXBlQmluZGluZyhyYXdfdHlwZSkKKworICAgICAgICAgICAgICAgIG9wdGlvbmFsID0gYm9v
bChqc29uX3BhcmFtZXRlci5nZXQoIm9wdGlvbmFsIikpCisKKyAgICAgICAgICAgICAgICBzZXR0
ZXJfdHlwZSA9IHJhd190eXBlLmdldF9zZXR0ZXJfbmFtZSgpCisKKyAgICAgICAgICAgICAgICB0
eXBlX21vZGVsID0gcGFyYW1fdHlwZV9iaW5kaW5nLmdldF90eXBlX21vZGVsKCkKKyAgICAgICAg
ICAgICAgICByYXdfdHlwZV9tb2RlbCA9IHJhd190eXBlX2JpbmRpbmcuZ2V0X3R5cGVfbW9kZWwo
KQorICAgICAgICAgICAgICAgIGlmIG9wdGlvbmFsOgorICAgICAgICAgICAgICAgICAgICB0eXBl
X21vZGVsID0gdHlwZV9tb2RlbC5nZXRfb3B0aW9uYWwoKQorICAgICAgICAgICAgICAgICAgICBy
YXdfdHlwZV9tb2RlbCA9IHJhd190eXBlX21vZGVsLmdldF9vcHRpb25hbCgpCisKKyAgICAgICAg
ICAgICAgICBhbm5vdGF0ZWRfdHlwZSA9IHR5cGVfbW9kZWwuZ2V0X2lucHV0X3BhcmFtX3R5cGVf
dGV4dCgpCisgICAgICAgICAgICAgICAgbW9kZV90eXBlX2JpbmRpbmcgPSBwYXJhbV90eXBlX2Jp
bmRpbmcKKworICAgICAgICAgICAgICAgIGRlY2xfcGFyYW1ldGVyX2xpc3QuYXBwZW5kKCIlcyAl
cyIgJSAoYW5ub3RhdGVkX3R5cGUsIHBhcmFtZXRlcl9uYW1lKSkKKworICAgICAgICAgICAgICAg
IHNldHRlcl9hcmd1bWVudCA9IHJhd190eXBlX21vZGVsLmdldF9ldmVudF9zZXR0ZXJfZXhwcmVz
c2lvbl9wYXR0ZXJuKCkgJSBwYXJhbWV0ZXJfbmFtZQorICAgICAgICAgICAgICAgIGlmIG1vZGVf
dHlwZV9iaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCk6CisgICAg
ICAgICAgICAgICAgICAgIHNldHRlcl9hcmd1bWVudCA9IG1vZGVfdHlwZV9iaW5kaW5nLmdldF9z
ZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCkgJSBzZXR0ZXJfYXJndW1lbnQKKworICAg
ICAgICAgICAgICAgIHNldHRlcl9jb2RlID0gIiAgICAlcy0+c2V0JXMoXCIlc1wiLCAlcyk7XG4i
ICUgKG1ldGhvZF9zdHJ1Y3RfdGVtcGxhdGUuY29udGFpbmVyX25hbWUsIHNldHRlcl90eXBlLCBw
YXJhbWV0ZXJfbmFtZSwgc2V0dGVyX2FyZ3VtZW50KQorICAgICAgICAgICAgICAgIGlmIG9wdGlv
bmFsOgorICAgICAgICAgICAgICAgICAgICBzZXR0ZXJfY29kZSA9ICgiICAgIGlmICglcylcbiAg
ICAiICUgcGFyYW1ldGVyX25hbWUpICsgc2V0dGVyX2NvZGUKKyAgICAgICAgICAgICAgICBtZXRo
b2RfbGluZV9saXN0LmFwcGVuZChzZXR0ZXJfY29kZSkKKworICAgICAgICAgICAgbWV0aG9kX3N0
cnVjdF90ZW1wbGF0ZS5hcHBlbmRfZXBpbG9nKG1ldGhvZF9saW5lX2xpc3QpCisKKyAgICAgICAg
Z2VuZXJhdG9yX21ldGhvZF9saXN0LmFwcGVuZChtZXRob2RfdGVtcGxhdGUuc3Vic3RpdHV0ZShO
b25lLAorICAgICAgICAgICAgZG9tYWluTmFtZT1kb21haW5fbmFtZSwKKyAgICAgICAgICAgIHBh
cmFtZXRlcnM9IiwgIi5qb2luKGRlY2xfcGFyYW1ldGVyX2xpc3QpLAorICAgICAgICAgICAgY29k
ZT0iIi5qb2luKG1ldGhvZF9saW5lX2xpc3QpLCAqKnRlbXBsYXRlX3BhcmFtcykpCisKICAgICBA
c3RhdGljbWV0aG9kCiAgICAgZGVmIHJlc29sdmVfdHlwZV9hbmRfZ2VuZXJhdGVfYWRfaG9jKGpz
b25fcGFyYW0sIG1ldGhvZF9uYW1lLCBkb21haW5fbmFtZSwgYWRfaG9jX3R5cGVfd3JpdGVyLCBj
b250YWluZXJfcmVsYXRpdmVfbmFtZV9wcmVmaXhfcGFyYW0pOgogICAgICAgICBwYXJhbV9uYW1l
ID0ganNvbl9wYXJhbVsibmFtZSJdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>