<?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>46086</bug_id>
          
          <creation_ts>2010-09-20 07:18:36 -0700</creation_ts>
          <short_desc>Web Inspector: implement pausing on XHR</short_desc>
          <delta_ts>2010-09-22 09:06:48 -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="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>281526</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-20 07:18:36 -0700</bug_when>
    <thetext>Web Inspector: implement pausing on XHR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281527</commentid>
    <comment_count>1</comment_count>
      <attachid>68078</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-20 07:20:46 -0700</bug_when>
    <thetext>Created attachment 68078
Screenshot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281528</commentid>
    <comment_count>2</comment_count>
      <attachid>68079</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-20 07:24:24 -0700</bug_when>
    <thetext>Created attachment 68079
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281534</commentid>
    <comment_count>3</comment_count>
      <attachid>68079</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-09-20 07:43:30 -0700</bug_when>
    <thetext>Comment on attachment 68079
Proposed patch.

r+ with nits. I&apos;d actually suggest adding one more item into the native breakpoints list: &quot;Any JavaScript statement&quot; that is On by default. In addition to that, you change behavior of the Pause button respectively.

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

&gt; WebCore/bindings/v8/custom/V8XMLHttpRequestCustom.cpp:34
&gt; +#include &quot;InspectorController.h&quot;

Please mind import order.

&gt; WebCore/bindings/v8/custom/V8XMLHttpRequestCustom.cpp:117
&gt; +    InspectorController::willSendXHR(xmlHttpRequest-&gt;scriptExecutionContext(), xmlHttpRequest-&gt;url());

I&apos;d suggest calling it:

InspectorController::instrumentWillSendXmlHttpRequest

And all others will be &apos;instrument*&apos;.

&gt; WebCore/inspector/Inspector.idl:127
&gt; +        [handler=Debug] void setPauseOnEventState(in unsigned int eventType, in boolean state);

pauseOnNextEvent ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282126</commentid>
    <comment_count>4</comment_count>
      <attachid>68079</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-09-21 00:10:25 -0700</bug_when>
    <thetext>Comment on attachment 68079
Proposed patch.

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

&gt;&gt; WebCore/bindings/v8/custom/V8XMLHttpRequestCustom.cpp:117
&gt;&gt; +    InspectorController::willSendXHR(xmlHttpRequest-&gt;scriptExecutionContext(), xmlHttpRequest-&gt;url());
&gt; 
&gt; I&apos;d suggest calling it:
&gt; 
&gt; InspectorController::instrumentWillSendXmlHttpRequest
&gt; 
&gt; And all others will be &apos;instrument*&apos;.

It should be easy to support same functionality in JSC. There is already a bug about missing ScriptDebuggServer::breakProgram implementation in JSC which prevents this change from working in JSC but this functionality might deserve filing its own bug.

&gt; WebCore/inspector/InspectorDebuggerAgent.h:99
&gt; +    bool pauseOnEventState(unsigned eventType);

pauseOnEventState -&gt; shouldPauseOnEvent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282341</commentid>
    <comment_count>5</comment_count>
      <attachid>68246</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-21 09:08:02 -0700</bug_when>
    <thetext>Created attachment 68246
Couple of renames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282349</commentid>
    <comment_count>6</comment_count>
      <attachid>68249</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-21 09:24:43 -0700</bug_when>
    <thetext>Created attachment 68249
Couple of renames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282364</commentid>
    <comment_count>7</comment_count>
      <attachid>68249</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-09-21 09:45:44 -0700</bug_when>
    <thetext>Comment on attachment 68249
Couple of renames.

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

&gt; WebCore/inspector/InspectorController.cpp:2137
&gt; +#if ENABLE(JAVASCRIPT_DEBUGGER)

I think you should inline willSendXHR here.

&gt; WebCore/inspector/InspectorController.h:483
&gt; +inline InspectorController* InspectorController::inspectorControllerForDocument(Document* document)

Can we employ static InspectorController counter here to speed up things?

&gt; WebCore/inspector/InspectorDebuggerAgent.h:48
&gt; +enum DebuggerEvent {

NativeBreakpointType ?

&gt; WebCore/inspector/InspectorDebuggerAgent.h:83
&gt; +    void willSendXHR(const String&amp; url);

willSendXHR does not look good as a part of debugger agent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282381</commentid>
    <comment_count>8</comment_count>
      <attachid>68249</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-09-21 10:01:48 -0700</bug_when>
    <thetext>Comment on attachment 68249
Couple of renames.

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

&gt; WebCore/inspector/InspectorController.cpp:2140
&gt; +#endif

Might need an #else with UNUSED_PARAM(url) here.

&gt; WebCore/inspector/front-end/BreakpointManager.js:232
&gt;  \ No newline at end of file

We do want newlines. =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282882</commentid>
    <comment_count>9</comment_count>
      <attachid>68358</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-22 05:19:06 -0700</bug_when>
    <thetext>Created attachment 68358
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282883</commentid>
    <comment_count>10</comment_count>
      <attachid>68359</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-22 05:22:14 -0700</bug_when>
    <thetext>Created attachment 68359
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282887</commentid>
    <comment_count>11</comment_count>
      <attachid>68359</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-09-22 05:40:44 -0700</bug_when>
    <thetext>Comment on attachment 68359
Proposed patch.

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

&gt; WebCore/bindings/v8/custom/V8XMLHttpRequestCustom.cpp:117
&gt; +    InspectorController::instrumentWillSendXMLHttpRequest(xmlHttpRequest-&gt;scriptExecutionContext(), xmlHttpRequest-&gt;url());

Please guard this with #ifdef

&gt; WebCore/inspector/Inspector.idl:140
&gt; +        [handler=Controller] void setNativeBreakpoint(in unsigned int type, in Object breakpoint, out unsigned int breakpointId);

It is unclear how to specify &apos;breakpoint&apos; parameter format. Why does it have url property? Should we merge &apos;type&apos; into &apos;breakpoint&apos; instead? Like

breakpoint: { type: &quot;XHR&quot;, condition: { url : &quot;foo&quot; } }

&gt; WebCore/inspector/InspectorController.h:492
&gt; +    ASSERT(document);

Counter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282895</commentid>
    <comment_count>12</comment_count>
      <attachid>68362</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-22 06:16:19 -0700</bug_when>
    <thetext>Created attachment 68362
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282896</commentid>
    <comment_count>13</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-22 06:17:40 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 68359 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68359&amp;action=review
&gt; 
&gt; &gt; WebCore/bindings/v8/custom/V8XMLHttpRequestCustom.cpp:117
&gt; &gt; +    InspectorController::instrumentWillSendXMLHttpRequest(xmlHttpRequest-&gt;scriptExecutionContext(), xmlHttpRequest-&gt;url());
&gt; 
&gt; Please guard this with #ifdef
With disabled inspector controller, this function wouldn&apos;t be called.

&gt; 
&gt; &gt; WebCore/inspector/Inspector.idl:140
&gt; &gt; +        [handler=Controller] void setNativeBreakpoint(in unsigned int type, in Object breakpoint, out unsigned int breakpointId);
&gt; 
&gt; It is unclear how to specify &apos;breakpoint&apos; parameter format. Why does it have url property? Should we merge &apos;type&apos; into &apos;breakpoint&apos; instead? Like
&gt; 
&gt; breakpoint: { type: &quot;XHR&quot;, condition: { url : &quot;foo&quot; } }
done

&gt; 
&gt; &gt; WebCore/inspector/InspectorController.h:492
&gt; &gt; +    ASSERT(document);
&gt; 
&gt; Counter?
done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282958</commentid>
    <comment_count>14</comment_count>
      <attachid>68362</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-09-22 08:46:56 -0700</bug_when>
    <thetext>Comment on attachment 68362
Proposed patch.

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

&gt; WebCore/inspector/InspectorController.cpp:156
&gt; +unsigned InspectorController::s_inspectorControllerCount = 0;

I don&apos;t see it incrementing.

&gt; WebCore/inspector/InspectorController.cpp:1683
&gt; +        RefPtr&lt;InspectorObject&gt; condition = breakpoint-&gt;getObject(&quot;condition&quot;);

Nit: condition should be optional.

&gt; WebCore/inspector/InspectorController.cpp:1687
&gt; +        if (!condition-&gt;getString(&quot;url&quot;, &amp;url))

Same here, just stop on any.

&gt; WebCore/inspector/InspectorController.h:492
&gt; +inline InspectorController* InspectorController::inspectorControllerForDocument(Document* document)

It is worth checking counter here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282962</commentid>
    <comment_count>15</comment_count>
      <attachid>68362</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-22 09:06:41 -0700</bug_when>
    <thetext>Comment on attachment 68362
Proposed patch.

Clearing flags on attachment: 68362

Committed r68049: &lt;http://trac.webkit.org/changeset/68049&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282963</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-22 09:06:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>68078</attachid>
            <date>2010-09-20 07:20:46 -0700</date>
            <delta_ts>2010-09-22 05:19:25 -0700</delta_ts>
            <desc>Screenshot.</desc>
            <filename>Untitled.png</filename>
            <type>image/png</type>
            <size>92023</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">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
AeH5/z/2PZdl4W0NYQAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68079</attachid>
            <date>2010-09-20 07:24:24 -0700</date>
            <delta_ts>2010-09-21 09:08:02 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30880</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWNmZjY3NS4uZjEwNTczYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMC0wOS0yMCAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgcGF1c2luZyBv
biBYSFIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
MDg2CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0OjpzZW5kQ2FsbGJhY2sp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2RlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjp3aWxsUmVtb3ZlRE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHJJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxTZW5kWEhSSW1wbCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OndpbGxTZW5kWEhSKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNv
bnRyb2xsZXJGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
Omluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uRXZlbnRTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVzZU9uRXZlbnRTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckZvclBhZ2VOYXZpZ2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxTZW5k
WEhSKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3Jh
bSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5h
dGl2ZUJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBlbmFibGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OYXRpdmVCcmVha3BvaW50LnByb3RvdHlwZS5zZXQgZW5hYmxlZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBlLl9jb250ZXh0TWVu
dUV2ZW50RmlyZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRJdGVtKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50SXRlbS5wcm90b3R5cGUucG9wdWxhdGVDb250
ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEl0ZW0ucHJvdG90eXBl
Ll9jaGVja2JveENsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkpTQnJlYWtwb2ludEl0
ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRJdGVtKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGVTdGF0dXMu
Zm9ybWF0dGVycy5zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFu
ZS5wcm90b3R5cGUudXBkYXRlU3RhdHVzLmFwcGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZVN0YXR1cyk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db250ZXh0TWVudS5wcm90b3R5cGUuaXNFbXB0eSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRz
UGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLnJl
c2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUu
X3BvcHVsYXRlVGFnQ29udGV4dE1lbnUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5yZXNldCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojp1cmwpOgor
CiAyMDEwLTA5LTE5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjc3NDkuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4
IGNmZWI1MDMuLjVjNDI1NzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVjhYTUxIdHRwUmVxdWVzdC5oIgogCisjaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCbG9iLmgiCkBAIC0xMTMsNiArMTE0LDggQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogICAgIElOQ19TVEFUUygiRE9NLlhNTEh0dHBSZXF1ZXN0LnNlbmQo
KSIpOwogICAgIFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCA9IFY4WE1MSHR0cFJlcXVl
c3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCisgICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6
d2lsbFNlbmRYSFIoeG1sSHR0cFJlcXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgeG1s
SHR0cFJlcXVlc3QtPnVybCgpKTsKKwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlm
IChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgeG1sSHR0cFJlcXVlc3QtPnNlbmQoZWMpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXggN2RhZDlhZi4uODM0NTk1NyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3IuaWRsCkBAIC0xMjQsNiArMTI0LDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBb
aGFuZGxlcj1EZWJ1Z10gdm9pZCBhY3RpdmF0ZUJyZWFrcG9pbnRzKCk7CiAgICAgICAgIFtoYW5k
bGVyPURlYnVnXSB2b2lkIGRlYWN0aXZhdGVCcmVha3BvaW50cygpOwogCisgICAgICAgIFtoYW5k
bGVyPURlYnVnXSB2b2lkIHNldFBhdXNlT25FdmVudFN0YXRlKGluIHVuc2lnbmVkIGludCBldmVu
dFR5cGUsIGluIGJvb2xlYW4gc3RhdGUpOworCiAgICAgICAgIFtoYW5kbGVyPURlYnVnXSB2b2lk
IHBhdXNlKCk7CiAgICAgICAgIFtoYW5kbGVyPURlYnVnXSB2b2lkIHJlc3VtZSgpOwogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDczMTI2ZDcuLjM0OTcz
OTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0yMDUy
LDkgKzIwNTIsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2Rl
SW1wbChOb2RlKiBub2RlLCBOb2RlKiBwYXJlbnQpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQgfHwgIW1fZG9tQWdlbnQpCiAgICAgICAg
IHJldHVybjsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBkZXRhaWxzOwotICAgIGlm
IChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZUluc2VydGlvbihub2RlLCBwYXJlbnQsICZk
ZXRhaWxzKSkKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oZGV0YWlscyk7
CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOworICAgIGlmIChtX2Rv
bUFnZW50LT5zaG91bGRCcmVha09uTm9kZUluc2VydGlvbihub2RlLCBwYXJlbnQsICZldmVudERh
dGEpKQorICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShET01CcmVha3BvaW50
RGVidWdnZXJFdmVudCwgZXZlbnREYXRhKTsKICNlbmRpZgogfQogCkBAIC0yMDY5LDkgKzIwNjks
OSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxSZW1vdmVET01Ob2RlSW1wbChOb2Rl
KiBub2RlKQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmICghbV9kZWJ1
Z2dlckFnZW50IHx8ICFtX2RvbUFnZW50KQogICAgICAgICByZXR1cm47Ci0gICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gZGV0YWlsczsKLSAgICBpZiAobV9kb21BZ2VudC0+c2hvdWxkQnJl
YWtPbk5vZGVSZW1vdmFsKG5vZGUsICZkZXRhaWxzKSkKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50
LT5icmVha1Byb2dyYW0oZGV0YWlscyk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
ZXZlbnREYXRhOworICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZVJlbW92YWwo
bm9kZSwgJmV2ZW50RGF0YSkpCisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFt
KERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50LCBldmVudERhdGEpOwogI2VuZGlmCiB9CiAKQEAg
LTIwODYsOSArMjA4Niw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURP
TUF0dHJJbXBsKEVsZW1lbnQqIGVsZW1lbnQpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQgfHwgIW1fZG9tQWdlbnQpCiAgICAgICAgIHJl
dHVybjsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBkZXRhaWxzOwotICAgIGlmICht
X2RvbUFnZW50LT5zaG91bGRCcmVha09uQXR0cmlidXRlTW9kaWZpY2F0aW9uKGVsZW1lbnQsICZk
ZXRhaWxzKSkKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oZGV0YWlscyk7
CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOworICAgIGlmIChtX2Rv
bUFnZW50LT5zaG91bGRCcmVha09uQXR0cmlidXRlTW9kaWZpY2F0aW9uKGVsZW1lbnQsICZldmVu
dERhdGEpKQorICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShET01CcmVha3Bv
aW50RGVidWdnZXJFdmVudCwgZXZlbnREYXRhKTsKICNlbmRpZgogfQogCkBAIC0yMDk5LDYgKzIw
OTksMTUgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRySW1wbChF
bGVtZW50KiBlbGVtZW50KQogfQogCiAKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbFNl
bmRYSFJJbXBsKGNvbnN0IEtVUkwmIHVybCkKK3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKKyAgICBpZiAobV9kZWJ1Z2dlckFnZW50KQorICAgICAgICAgbV9kZWJ1Z2dlckFnZW50
LT53aWxsU2VuZFhIUih1cmwuc3RyaW5nKCkpOworI2VuZGlmCit9CisKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA2MDUyM2I2Li5kZDRjYTU2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0yMDAsNiArMjAwLDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsKIAorICAgIHN0YXRpYyB2b2lkIHdp
bGxTZW5kWEhSKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVy
bCk7CisKICNpZiBFTkFCTEUoV09SS0VSUykKICAgICBlbnVtIFdvcmtlckFjdGlvbiB7IFdvcmtl
ckNyZWF0ZWQsIFdvcmtlckRlc3Ryb3llZCB9OwogCkBAIC0zMjksNyArMzMxLDEwIEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQs
IGNvbnN0IFN0cmluZyYganNvblJlc3VsdCk7CiAKKyAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCk7CiAgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKE5vZGUqKTsKKyAgICBzdGF0aWMgSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KERvY3VtZW50KiBk
b2N1bWVudCk7CisKICAgICB2b2lkIHdpbGxJbnNlcnRET01Ob2RlSW1wbChOb2RlKiBub2RlLCBO
b2RlKiBwYXJlbnQpOwogICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZUltcGwoTm9kZSopOwogICAg
IHZvaWQgd2lsbFJlbW92ZURPTU5vZGVJbXBsKE5vZGUqKTsKQEAgLTMzNyw2ICszNDIsOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgd2lsbE1vZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqKTsKICAgICB2
b2lkIGRpZE1vZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqKTsKIAorICAgIHZvaWQgd2lsbFNlbmRY
SFJJbXBsKGNvbnN0IEtVUkwmIHVybCk7CisKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKICAgICBmcmllbmQgY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKICAgICBTdHJpbmcg
YnJlYWtwb2ludHNTZXR0aW5nS2V5KCk7CkBAIC00NDksMTggKzQ1Niw0MCBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQp
CiAjZW5kaWYKIH0KIAotaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3RvckNvbnRy
b2xsZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKE5vZGUqIG5vZGUpCisKK2lubGluZSB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxTZW5kWEhSKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGlmIChQYWdlKiBwYWdlID0gbm9kZS0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAg
IGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpKSB7Ci0gICAgICAgICAgICBpZiAoaW5zcGVjdG9yQ29udHJvbGxl
ci0+aGFzRnJvbnRlbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJv
bGxlcjsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25D
b250ZXh0KGNvbnRleHQpKQorICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyLT53aWxsU2VuZFhI
UkltcGwodXJsKTsKICNlbmRpZgorfQorCiAKLSAgICByZXR1cm4gMDsKK2lubGluZSBJbnNwZWN0
b3JDb250cm9sbGVyKiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0b3JDb250cm9sbGVyRm9y
U2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
eworICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+aXNEb2N1bWVudCgpKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oY29udGV4dCkpOworfQorCitpbmxpbmUgSW5zcGVjdG9yQ29udHJv
bGxlciogSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdG9yQ29udHJvbGxlckZvck5vZGUoTm9k
ZSogbm9kZSkKK3sKKyAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KG5v
ZGUtPmRvY3VtZW50KCkpOworfQorCitpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVj
dG9yQ29udHJvbGxlcjo6aW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQpOworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1
bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKTsKKyAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIHJldHVy
biAwOworICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXI7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHAKaW5kZXggMzg3NWJlMC4uNWY5ZDgxOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTY0LDcgKzY0LDggQEAgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb24KICAgICAsIG1fZnJvbnRlbmQoZnJvbnRlbmQpCiAgICAgLCBtX3BhdXNlZFNj
cmlwdFN0YXRlKDApCiAgICAgLCBtX2JyZWFrcG9pbnRzTG9hZGVkKGZhbHNlKQotICAgICwgbV9i
cmVha1Byb2dyYW1SZWFzb24oSW5zcGVjdG9yVmFsdWU6Om51bGwoKSkKKyAgICAsIG1fYnJlYWtQ
cm9ncmFtU3RhdHVzKEluc3BlY3RvclZhbHVlOjpudWxsKCkpCisgICAgLCBtX3BhdXNlT25FdmVu
dFN0YXRlTWFzaygwKQogewogfQogCkBAIC0xMzcsNiArMTM4LDE5IEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1
bnNpZ25lZCBsCiAgICAgc2F2ZUJyZWFrcG9pbnRzKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV2ZW50U3RhdGUodW5zaWduZWQgZXZlbnRUeXBlLCBib29s
IHN0YXRlKQoreworICAgIGlmIChzdGF0ZSkKKyAgICAgICAgbV9wYXVzZU9uRXZlbnRTdGF0ZU1h
c2sgfD0gKDEgPDwgZXZlbnRUeXBlKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGF1c2VPbkV2ZW50
U3RhdGVNYXNrICY9IH4oMSA8PCBldmVudFR5cGUpOworfQorCitib29sIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnBhdXNlT25FdmVudFN0YXRlKHVuc2lnbmVkIGV2ZW50VHlwZSkKK3sKKyAgICBy
ZXR1cm4gbV9wYXVzZU9uRXZlbnRTdGF0ZU1hc2sgJiAoMSA8PCBldmVudFR5cGUpOworfQorCiB2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVkaXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5n
JiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sKiBzdWNjZXNzLCBTdHJp
bmcqIHJlc3VsdCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogbmV3Q2FsbEZyYW1lcykKIHsKICAg
ICBpZiAoKCpzdWNjZXNzID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmVkaXRTY3JpcHRT
b3VyY2Uoc291cmNlSUQsIG5ld0NvbnRlbnQsICpyZXN1bHQpKSkKQEAgLTE4Niw2ICsyMDAsNyBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyRm9yUGFnZU5hdmlnYXRpb24oKQog
ICAgIG1fc3RpY2t5QnJlYWtwb2ludHMuY2xlYXIoKTsKICAgICBtX2JyZWFrcG9pbnRzTWFwcGlu
Zy5jbGVhcigpOwogICAgIG1fYnJlYWtwb2ludHNMb2FkZWQgPSBmYWxzZTsKKyAgICBtX3BhdXNl
T25FdmVudFN0YXRlTWFzayA9IDA7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjptZDVCYXNlMTYoY29uc3QgU3RyaW5nJiBzdHJpbmcpCkBAIC0yMDUsNiArMjIwLDE2IEBAIFN0
cmluZyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjptZDVCYXNlMTYoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiAgICAgcmV0dXJuIFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKTsKIH0K
IAordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhIUihjb25zdCBTdHJpbmcm
IHVybCkKK3sKKyAgICBpZiAoIXBhdXNlT25FdmVudFN0YXRlKFNlbmRYSFJEZWJ1Z2dlckV2ZW50
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnRE
YXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICBldmVudERhdGEtPnNldFN0cmlu
ZygidXJsIiwgdXJsKTsKKyAgICBicmVha1Byb2dyYW0oU2VuZFhIUkRlYnVnZ2VyRXZlbnQsIGV2
ZW50RGF0YSk7Cit9CisKIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKCkKIHsKICAgICBpZiAoIW1fcGF1c2VkU2NyaXB0
U3RhdGUpCkBAIC0yODksMTEgKzMxNCwxMSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZwogdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShTY3JpcHRTdGF0ZSogc2NyaXB0U3Rh
dGUpCiB7CiAgICAgQVNTRVJUKHNjcmlwdFN0YXRlICYmICFtX3BhdXNlZFNjcmlwdFN0YXRlKTsK
LSAgICBBU1NFUlQobV9icmVha1Byb2dyYW1SZWFzb24pOworICAgIEFTU0VSVChtX2JyZWFrUHJv
Z3JhbVN0YXR1cyk7CiAgICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IHNjcmlwdFN0YXRlOwogICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRldGFpbHMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwogICAgIGRldGFpbHMtPnNldFZhbHVlKCJjYWxsRnJhbWVzIiwgY3VycmVudENhbGxGcmFt
ZXMoKSk7Ci0gICAgZGV0YWlscy0+c2V0VmFsdWUoInN0YXR1cyIsIG1fYnJlYWtQcm9ncmFtUmVh
c29uKTsKKyAgICBkZXRhaWxzLT5zZXRWYWx1ZSgic3RhdHVzIiwgbV9icmVha1Byb2dyYW1TdGF0
dXMpOwogICAgIG1fZnJvbnRlbmQtPnBhdXNlZFNjcmlwdChkZXRhaWxzKTsKIH0KIApAQCAtMzAz
LDE3ICszMjgsMjEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDb250aW51ZSgp
CiAgICAgbV9mcm9udGVuZC0+cmVzdW1lZFNjcmlwdCgpOwogfQogCi12b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZWFz
b24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShEZWJ1Z2dlckV2
ZW50IGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhKQogewor
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHN0YXR1cyA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7CisgICAgc3RhdHVzLT5zZXROdW1iZXIoImV2ZW50VHlwZSIsIGV2ZW50VHlwZSk7Cisg
ICAgc3RhdHVzLT5zZXRWYWx1ZSgiZXZlbnREYXRhIiwgZXZlbnREYXRhKTsKKworICAgIG1fYnJl
YWtQcm9ncmFtU3RhdHVzID0gc3RhdHVzOwogICAgIHNfZGVidWdnZXJBZ2VudE9uQnJlYWtwb2lu
dCA9IHRoaXM7Ci0gICAgbV9icmVha1Byb2dyYW1SZWFzb24gPSByZWFzb247CiAKICAgICBTY3Jp
cHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuYnJlYWtQcm9ncmFtKCk7CiAgICAgaWYgKCFzX2RlYnVn
Z2VyQWdlbnRPbkJyZWFrcG9pbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNfZGVidWdnZXJB
Z2VudE9uQnJlYWtwb2ludCA9IDA7Ci0gICAgbV9icmVha1Byb2dyYW1SZWFzb24gPSBJbnNwZWN0
b3JWYWx1ZTo6bnVsbCgpOworICAgIG1fYnJlYWtQcm9ncmFtU3RhdHVzID0gSW5zcGVjdG9yVmFs
dWU6Om51bGwoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDc5YjBhMGUuLjI5YTdjMmMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTQ1LDYgKzQ1LDEx
IEBAIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsK
IGNsYXNzIEluc3BlY3RvclZhbHVlOwogCitlbnVtIERlYnVnZ2VyRXZlbnQgeworICAgIERPTUJy
ZWFrcG9pbnREZWJ1Z2dlckV2ZW50ID0gMCwKKyAgICBTZW5kWEhSRGVidWdnZXJFdmVudAorfTsK
KwogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3Rl
bmVyLCBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRy
PEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+IGNyZWF0ZShJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5z
cGVjdG9yRnJvbnRlbmQqKTsKQEAgLTU3LDExICs2MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IGJvb2wgZW5hYmxlZCwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wqIHN1Y2Nlc3MsIHVu
c2lnbmVkIGludCogYWN0dWFsTGluZU51bWJlcik7CiAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50
KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIpOwogCisgICAgdm9p
ZCBzZXRQYXVzZU9uRXZlbnRTdGF0ZSh1bnNpZ25lZCBldmVudFR5cGUsIGJvb2wgc3RhdGUpOwor
CiAgICAgdm9pZCBlZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0
IFN0cmluZyYgbmV3Q29udGVudCwgYm9vbCogc3VjY2VzcywgU3RyaW5nKiByZXN1bHQsIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIG5ld0NhbGxGcmFtZXMpOwogICAgIHZvaWQgZ2V0U2NyaXB0U291
cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIFN0cmluZyogc2NyaXB0U291cmNlKTsKIAogICAg
IHZvaWQgcGF1c2UoKTsKLSAgICB2b2lkIGJyZWFrUHJvZ3JhbShQYXNzUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiByZWFzb24pOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKERlYnVnZ2VyRXZlbnQgZXZl
bnRUeXBlLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBldmVudERhdGEpOwogICAgIHZvaWQg
cmVzdW1lKCk7CiAgICAgdm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOwogICAgIHZvaWQgc3RlcElu
dG9TdGF0ZW1lbnQoKTsKQEAgLTczLDcgKzgwLDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBT
dHJpbmcgbWQ1QmFzZTE2KGNvbnN0IFN0cmluZyYgc3RyaW5nKTsKIAorICAgIHZvaWQgd2lsbFNl
bmRYSFIoY29uc3QgU3RyaW5nJiB1cmwpOworCiBwcml2YXRlOgorCiAgICAgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9yRnJvbnRlbmQqKTsKIAog
ICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGN1cnJlbnRDYWxsRnJhbWVzKCk7CkBAIC04
Niw2ICs5Niw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKFNjcmlwdFN0
YXRlKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCk7CiAKKyAgICBib29sIHBhdXNl
T25FdmVudFN0YXRlKHVuc2lnbmVkIGV2ZW50VHlwZSk7CisKICAgICBJbnNwZWN0b3JDb250cm9s
bGVyKiBtX2luc3BlY3RvckNvbnRyb2xsZXI7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1fZnJv
bnRlbmQ7CiAgICAgU2NyaXB0U3RhdGUqIG1fcGF1c2VkU2NyaXB0U3RhdGU7CkBAIC05NSw3ICsx
MDcsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gbV9icmVha3Bv
aW50c01hcHBpbmc7CiAgICAgYm9vbCBtX2JyZWFrcG9pbnRzTG9hZGVkOwogICAgIHN0YXRpYyBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBzX2RlYnVnZ2VyQWdlbnRPbkJyZWFrcG9pbnQ7Ci0gICAg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiBtX2JyZWFrUHJvZ3JhbVJlYXNvbjsKKyAgICBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IG1fYnJlYWtQcm9ncmFtU3RhdHVzOworICAgIHVpbnQzMl90IG1fcGF1
c2VPbkV2ZW50U3RhdGVNYXNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCmluZGV4IDg1
MTg2MTguLjQxNmQ5M2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9C
cmVha3BvaW50TWFuYWdlci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJl
YWtwb2ludE1hbmFnZXIuanMKQEAgLTE5OSwzICsxOTksMzMgQEAgV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnQucHJvdG90eXBlID0gewogfQogCiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisKK1dlYkluc3Bl
Y3Rvci5OYXRpdmVCcmVha3BvaW50ID0gZnVuY3Rpb24odHlwZSwgZW5hYmxlZCkKK3sKKyAgICB0
aGlzLl90eXBlID0gdHlwZTsKKyAgICB0aGlzLl9lbmFibGVkID0gZW5hYmxlZDsKK30KKworV2Vi
SW5zcGVjdG9yLk5hdGl2ZUJyZWFrcG9pbnQuVHlwZXMgPSB7CisgICAgRE9NQnJlYWtwb2ludDog
MCwKKyAgICBTZW5kWEhSOiAxCit9OworCitXZWJJbnNwZWN0b3IuTmF0aXZlQnJlYWtwb2ludC5w
cm90b3R5cGUgPSB7CisgICAgZ2V0IGVuYWJsZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2VuYWJsZWQ7CisgICAgfSwKKworICAgIHNldCBlbmFibGVkKGVuYWJsZWQpCisgICAgewor
ICAgICAgICBpZiAodGhpcy5fZW5hYmxlZCA9PT0gZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB0aGlzLl9lbmFibGVkID0gZW5hYmxlZDsKKyAgICAgICAgSW5zcGVjdG9y
QmFja2VuZC5zZXRQYXVzZU9uRXZlbnRTdGF0ZSh0aGlzLl90eXBlLCB0aGlzLl9lbmFibGVkKTsK
KyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImVuYWJsZS1jaGFuZ2VkIik7
CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuTmF0aXZlQnJlYWtwb2ludC5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFr
cG9pbnRzU2lkZWJhclBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtw
b2ludHNTaWRlYmFyUGFuZS5qcwppbmRleCBjZGE3MmZiLi4yZjhmNmJkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcwpA
QCAtODUsMTYgKzg1LDE3IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50c1NpZGViYXJQYW5lLnBy
b3RvdHlwZSA9IHsKICAgICBfY29udGV4dE1lbnVFdmVudEZpcmVkOiBmdW5jdGlvbihicmVha3Bv
aW50SXRlbSwgZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51KCk7Ci0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW1vdmUgQnJlYWtwb2ludCIpLCBicmVha3BvaW50SXRl
bS5yZW1vdmUuYmluZChicmVha3BvaW50SXRlbSkpOworICAgICAgICBicmVha3BvaW50SXRlbS5w
b3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51KTsKICAgICAgICAgY29udGV4dE1lbnUuc2hv
dyhldmVudCk7CiAgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludHNTaWRlYmFyUGFu
ZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLnByb3RvdHlw
ZTsKIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRJdGVtID0gZnVuY3Rpb24oYnJlYWtwb2ludCkK
K1dlYkluc3BlY3Rvci5CcmVha3BvaW50SXRlbSA9IGZ1bmN0aW9uKGJyZWFrcG9pbnQsIHJlbW92
YWJsZSwgbGFiZWwpCiB7CiAgICAgdGhpcy5fYnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7CisgICAg
dGhpcy5fcmVtb3ZhYmxlID0gcmVtb3ZhYmxlOwogCiAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CiAKQEAgLTEwNSw4ICsxMDYsMTMgQEAgV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRJdGVtID0gZnVuY3Rpb24oYnJlYWtwb2ludCkKICAgICBjaGVja2JveEVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9jaGVja2JveENsaWNrZWQuYmlu
ZCh0aGlzKSwgZmFsc2UpOwogICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoY2hlY2tib3hF
bGVtZW50KTsKIAorICAgIGlmIChsYWJlbCkKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsYWJlbCkpOworCiAgICAgdGhpcy5fYnJlYWtw
b2ludC5hZGRFdmVudExpc3RlbmVyKCJlbmFibGUtY2hhbmdlZCIsIHRoaXMuX2VuYWJsZUNoYW5n
ZWQsIHRoaXMpOwotICAgIHRoaXMuX2JyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcigicmVtb3Zl
ZCIsIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzLmJpbmQodGhpcywgInJlbW92ZWQiKSk7
CisKKyAgICBpZiAodGhpcy5fcmVtb3ZhYmxlKQorICAgICAgICB0aGlzLl9icmVha3BvaW50LmFk
ZEV2ZW50TGlzdGVuZXIoInJlbW92ZWQiLCB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycy5i
aW5kKHRoaXMsICJyZW1vdmVkIikpOwogfQogCiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEl0ZW0u
cHJvdG90eXBlID0gewpAQCAtMTE1LDE2ICsxMjEsMTcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRJdGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CiAgICAg
fSwKIAotICAgIHJlbW92ZTogZnVuY3Rpb24oKQorICAgIHBvcHVsYXRlQ29udGV4dE1lbnU6IGZ1
bmN0aW9uKGNvbnRleHRNZW51KQogICAgIHsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludC5yZW1v
dmUoKTsKKyAgICAgICAgaWYgKHRoaXMuX3JlbW92YWJsZSkKKyAgICAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW1vdmUgQnJlYWtwb2ludCIp
LCB0aGlzLl9icmVha3BvaW50LnJlbW92ZS5iaW5kKHRoaXMuX2JyZWFrcG9pbnQpKTsKICAgICB9
LAogCiAgICAgX2NoZWNrYm94Q2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAg
ICB0aGlzLl9icmVha3BvaW50LmVuYWJsZWQgPSAhdGhpcy5fYnJlYWtwb2ludC5lbmFibGVkOwog
Ci0gICAgICAgIC8vIHdpdGhvdXQgdGhpcywgd2UnZCBzd2l0Y2ggdG8gdGhlIHNvdXJjZSBvZiB0
aGUgY2xpY2tlZCBicmVha3BvaW50CisgICAgICAgIC8vIEJyZWFrcG9pbnQgZWxlbWVudCBtYXkg
aGF2ZSBpdCdzIG93biBjbGljayBoYW5kbGVyLgogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRp
b24oKTsKICAgICB9LAogCkBAIC0xMzksNyArMTQ2LDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRJdGVtLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlw
ZTsKIAogV2ViSW5zcGVjdG9yLkpTQnJlYWtwb2ludEl0ZW0gPSBmdW5jdGlvbihicmVha3BvaW50
KQogewotICAgIFdlYkluc3BlY3Rvci5CcmVha3BvaW50SXRlbS5jYWxsKHRoaXMsIGJyZWFrcG9p
bnQpOworICAgIFdlYkluc3BlY3Rvci5CcmVha3BvaW50SXRlbS5jYWxsKHRoaXMsIGJyZWFrcG9p
bnQsIHRydWUpOwogCiAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX2JyZWFrcG9pbnRDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKIApAQCAtMTgxLDcg
KzE4OCw3IEBAIFdlYkluc3BlY3Rvci5KU0JyZWFrcG9pbnRJdGVtLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEl0ZW0uCiAKIFdlYkluc3BlY3Rvci5ET01CcmVh
a3BvaW50SXRlbSA9IGZ1bmN0aW9uKGJyZWFrcG9pbnQpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRJdGVtLmNhbGwodGhpcywgYnJlYWtwb2ludCk7CisgICAgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRJdGVtLmNhbGwodGhpcywgYnJlYWtwb2ludCwgdHJ1ZSk7CiAKICAgICB2YXIgbm9k
ZSA9IFdlYkluc3BlY3Rvci5kb21BZ2VudC5ub2RlRm9ySWQodGhpcy5fYnJlYWtwb2ludC5ub2Rl
SWQpOwogICAgIHZhciBsaW5rID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5saW5raWZ5
Tm9kZVJlZmVyZW5jZShub2RlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qcwppbmRleCA5MWYzNWE2Li45MmY1ZWVhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpz
CkBAIC04MiwzNiArODIsNDEgQEAgV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICB1cGRhdGVTdGF0dXM6ICBmdW5j
dGlvbihzdGF0dXMpCisgICAgdXBkYXRlU3RhdHVzOiAgZnVuY3Rpb24oc3RhdHVzT2JqZWN0KQog
ICAgIHsKICAgICAgICAgdmFyIHN0YXR1c0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKICAgICAgICAgc3RhdHVzRWxlbWVudC5jbGFzc05hbWUgPSAiaW5mbyI7CiAKLSAg
ICAgICAgdmFyIGJyZWFrcG9pbnRUeXBlID0gc3RhdHVzLmJyZWFrcG9pbnQudHlwZTsKLSAgICAg
ICAgdmFyIHN1YnN0aXR1dGlvbnMgPSBbV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQubGFiZWxG
b3JUeXBlKGJyZWFrcG9pbnRUeXBlKSwgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5saW5r
aWZ5Tm9kZUJ5SWQoc3RhdHVzLmJyZWFrcG9pbnQubm9kZUlkKV07Ci0gICAgICAgIHZhciBmb3Jt
YXR0ZXJzID0gewotICAgICAgICAgICAgczogZnVuY3Rpb24oc3Vic3RpdHV0aW9uKQorICAgICAg
ICB2YXIgZGF0YSA9IHN0YXR1c09iamVjdC5ldmVudERhdGE7CisgICAgICAgIGlmIChzdGF0dXNP
YmplY3QuZXZlbnRUeXBlID09PSBXZWJJbnNwZWN0b3IuTmF0aXZlQnJlYWtwb2ludC5UeXBlcy5E
T01CcmVha3BvaW50KSB7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGRhdGEuYnJlYWtw
b2ludDsKKyAgICAgICAgICAgIHZhciBzdWJzdGl0dXRpb25zID0gW1dlYkluc3BlY3Rvci5ET01C
cmVha3BvaW50LmxhYmVsRm9yVHlwZShicmVha3BvaW50LnR5cGUpLCBXZWJJbnNwZWN0b3IucGFu
ZWxzLmVsZW1lbnRzLmxpbmtpZnlOb2RlQnlJZChicmVha3BvaW50Lm5vZGVJZCldOworICAgICAg
ICAgICAgdmFyIGZvcm1hdHRlcnMgPSB7CisgICAgICAgICAgICAgICAgczogZnVuY3Rpb24oc3Vi
c3RpdHV0aW9uKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHN1YnN0aXR1dGlvbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAg
ICAgICAgZnVuY3Rpb24gYXBwZW5kKGEsIGIpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHN1YnN0aXR1dGlvbjsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGIgPT09
ICJzdHJpbmciKQorICAgICAgICAgICAgICAgICAgICBiID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoYik7CisgICAgICAgICAgICAgICAgc3RhdHVzRWxlbWVudC5hcHBlbmRDaGlsZChiKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgZnVuY3Rpb24gYXBwZW5kKGEsIGIpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0eXBlb2YgYiA9PT0gInN0cmluZyIpCi0gICAgICAg
ICAgICAgICAgYiA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGIpOwotICAgICAgICAgICAgc3Rh
dHVzRWxlbWVudC5hcHBlbmRDaGlsZChiKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnJlYWtw
b2ludFR5cGUgPT09IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzLlN1YnRyZWVNb2Rp
ZmllZCkgewotICAgICAgICAgICAgdmFyIHRhcmdldE5vZGUgPSBXZWJJbnNwZWN0b3IucGFuZWxz
LmVsZW1lbnRzLmxpbmtpZnlOb2RlQnlJZChzdGF0dXMudGFyZ2V0Tm9kZUlkKTsKLSAgICAgICAg
ICAgIGlmIChzdGF0dXMuaW5zZXJ0aW9uKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXR1cy50
YXJnZXROb2RlSWQgIT09IHN0YXR1cy5icmVha3BvaW50Lm5vZGVJZCkKLSAgICAgICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLmZvcm1hdExvY2FsaXplZCgiUGF1c2VkIG9uIGEgXCIlc1wiIGJy
ZWFrcG9pbnQgc2V0IG9uICVzLCBiZWNhdXNlIGEgbmV3IGNoaWxkIHdhcyBhZGRlZCB0byBpdHMg
ZGVzY2VuZGFudCAlcy4iLCBzdWJzdGl0dXRpb25zLmNvbmNhdCh0YXJnZXROb2RlKSwgZm9ybWF0
dGVycywgIiIsIGFwcGVuZCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJl
YWtwb2ludCBzZXQgb24gJXMsIGJlY2F1c2UgYSBuZXcgY2hpbGQgd2FzIGFkZGVkIHRvIHRoYXQg
bm9kZS4iLCBzdWJzdGl0dXRpb25zLCBmb3JtYXR0ZXJzLCAiIiwgYXBwZW5kKTsKKyAgICAgICAg
ICAgIGlmIChicmVha3BvaW50LnR5cGUgPT09IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5
cGVzLlN1YnRyZWVNb2RpZmllZCkgeworICAgICAgICAgICAgICAgIHZhciB0YXJnZXROb2RlID0g
V2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5saW5raWZ5Tm9kZUJ5SWQoZGF0YS50YXJnZXRO
b2RlSWQpOworICAgICAgICAgICAgICAgIGlmIChkYXRhLmluc2VydGlvbikgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoZGF0YS50YXJnZXROb2RlSWQgIT09IGJyZWFrcG9pbnQubm9kZUlkKQor
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZvcm1hdExvY2FsaXplZCgiUGF1
c2VkIG9uIGEgXCIlc1wiIGJyZWFrcG9pbnQgc2V0IG9uICVzLCBiZWNhdXNlIGEgbmV3IGNoaWxk
IHdhcyBhZGRlZCB0byBpdHMgZGVzY2VuZGFudCAlcy4iLCBzdWJzdGl0dXRpb25zLmNvbmNhdCh0
YXJnZXROb2RlKSwgZm9ybWF0dGVycywgIiIsIGFwcGVuZCk7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3JtYXRMb2NhbGl6
ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAlcywgYmVjYXVzZSBhIG5l
dyBjaGlsZCB3YXMgYWRkZWQgdG8gdGhhdCBub2RlLiIsIHN1YnN0aXR1dGlvbnMsIGZvcm1hdHRl
cnMsICIiLCBhcHBlbmQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJl
YWtwb2ludCBzZXQgb24gJXMsIGJlY2F1c2UgaXRzIGRlc2NlbmRhbnQgJXMgd2FzIHJlbW92ZWQu
Iiwgc3Vic3RpdHV0aW9ucy5jb25jYXQodGFyZ2V0Tm9kZSksIGZvcm1hdHRlcnMsICIiLCBhcHBl
bmQpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZv
cm1hdExvY2FsaXplZCgiUGF1c2VkIG9uIGEgXCIlc1wiIGJyZWFrcG9pbnQgc2V0IG9uICVzLCBi
ZWNhdXNlIGl0cyBkZXNjZW5kYW50ICVzIHdhcyByZW1vdmVkLiIsIHN1YnN0aXR1dGlvbnMuY29u
Y2F0KHRhcmdldE5vZGUpLCBmb3JtYXR0ZXJzLCAiIiwgYXBwZW5kKTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBc
IiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMuIiwgc3Vic3RpdHV0aW9ucywgZm9ybWF0dGVycywg
IiIsIGFwcGVuZCk7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZvcm1hdExvY2FsaXpl
ZCgiUGF1c2VkIG9uIGEgXCIlc1wiIGJyZWFrcG9pbnQgc2V0IG9uICVzLiIsIHN1YnN0aXR1dGlv
bnMsIGZvcm1hdHRlcnMsICIiLCBhcHBlbmQpOworICAgICAgICB9IGVsc2UgaWYgKHN0YXR1c09i
amVjdC5ldmVudFR5cGUgPT09IFdlYkluc3BlY3Rvci5OYXRpdmVCcmVha3BvaW50LlR5cGVzLlNl
bmRYSFIpCisgICAgICAgICAgICBzdGF0dXNFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGF1c2VkIG9uIFhIUi4iKSkpOwor
CiAgICAgICAgIHRoaXMuYm9keUVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzRWxlbWVudCk7CiAg
ICAgfSwKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRleHRN
ZW51LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRleHRNZW51LmpzCmluZGV4
IDQ3MDQ1YTIuLmY3N2VlMmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db250ZXh0TWVudS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29udGV4
dE1lbnUuanMKQEAgLTcwLDYgKzcwLDExIEBAIFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2l0ZW1zLnB1c2goe3R5cGU6ICJzZXBhcmF0b3IifSk7
CiAgICAgfSwKIAorICAgIGlzRW1wdHk6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVy
biAhdGhpcy5faXRlbXMubGVuZ3RoOworICAgIH0sCisKICAgICBfaXRlbVNlbGVjdGVkOiBmdW5j
dGlvbihpZCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9oYW5kbGVyc1tpZF0pCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IDljZmYzYTcuLmY4
ZTUxN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Bh
bmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpz
CkBAIC03NCw3ICs3NCw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsID0gZnVuY3Rpb24o
KQogICAgIHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlcyA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVz
U2lkZWJhclBhbmUodGhpcy5zaWRlYmFyUGFuZXMuY29tcHV0ZWRTdHlsZSk7CiAgICAgdGhpcy5z
aWRlYmFyUGFuZXMubWV0cmljcyA9IG5ldyBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5l
KCk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMucHJvcGVydGllcyA9IG5ldyBXZWJJbnNwZWN0b3Iu
UHJvcGVydGllc1NpZGViYXJQYW5lKCk7Ci0gICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFrcG9p
bnRzRW5hYmxlZCkKKyAgICBpZiAoUHJlZmVyZW5jZXMubmF0aXZlSW5zdHJ1bWVudGF0aW9uRW5h
YmxlZCkKICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtwb2ludHMgPSBXZWJJbnNw
ZWN0b3IuY3JlYXRlRE9NQnJlYWtwb2ludHNTaWRlYmFyUGFuZSgpOwogICAgIHRoaXMuc2lkZWJh
clBhbmVzLmV2ZW50TGlzdGVuZXJzID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1Np
ZGViYXJQYW5lKCk7CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQ
YW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuY3VycmVudFF1ZXJ5Owog
Ci0gICAgICAgIGlmIChQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0VuYWJsZWQpCisgICAgICAg
IGlmIChQcmVmZXJlbmNlcy5uYXRpdmVJbnN0cnVtZW50YXRpb25FbmFibGVkKQogICAgICAgICAg
ICAgdGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtwb2ludHMucmVzZXQoKTsKICAgICB9LAogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGlu
ZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpz
CmluZGV4IDE4ODhhMTcuLjdkOTE3YzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC03NzEsNyArNzcxLDcgQEAgV2ViSW5z
cGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBhcyBIVE1MIiksIHRo
aXMuX2NvcHlIVE1MLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVt
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIE5vZGUiKSwgdGhpcy5yZW1vdmUuYmluZCh0
aGlzKSk7CiAKLSAgICAgICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFrcG9pbnRzRW5hYmxlZCkg
eworICAgICAgICBpZiAoUHJlZmVyZW5jZXMubmF0aXZlSW5zdHJ1bWVudGF0aW9uRW5hYmxlZCkg
ewogICAgICAgICAgICAgLy8gQWRkIGRlYmJ1Z2luZy1yZWxhdGVkIGFjdGlvbnMKICAgICAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCA3MTUzMzlkLi5kZGUwNjc5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTEzMyw4ICsxMzMs
MTQgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLnNp
ZGViYXJQYW5lcy5jYWxsc3RhY2sgPSBuZXcgV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQ
YW5lKCk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuc2NvcGVjaGFpbiA9IG5ldyBXZWJJbnNwZWN0
b3IuU2NvcGVDaGFpblNpZGViYXJQYW5lKCk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuanNCcmVh
a3BvaW50cyA9IFdlYkluc3BlY3Rvci5jcmVhdGVKU0JyZWFrcG9pbnRzU2lkZWJhclBhbmUoKTsK
LSAgICBpZiAoUHJlZmVyZW5jZXMuZG9tQnJlYWtwb2ludHNFbmFibGVkKQorICAgIGlmIChQcmVm
ZXJlbmNlcy5uYXRpdmVJbnN0cnVtZW50YXRpb25FbmFibGVkKSB7CiAgICAgICAgIHRoaXMuc2lk
ZWJhclBhbmVzLmRvbUJyZWFrcG9pbnRzID0gV2ViSW5zcGVjdG9yLmNyZWF0ZURPTUJyZWFrcG9p
bnRzU2lkZWJhclBhbmUoKTsKKyAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtwb2lu
dHMuZXhwYW5kZWQgPSB0cnVlOworCisgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLm5hdGl2ZUJy
ZWFrcG9pbnRzID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50c1NpZGViYXJQYW5lKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiTmF0aXZlIEJyZWFrcG9pbnRzIikpOworICAgICAgICB0aGlzLnNp
ZGViYXJQYW5lcy5uYXRpdmVCcmVha3BvaW50cy5leHBhbmRlZCA9IHRydWU7CisgICAgfQorCiAg
ICAgdGhpcy5zaWRlYmFyUGFuZXMud29ya2VycyA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya2Vyc1Np
ZGViYXJQYW5lKCk7CiAKICAgICBmb3IgKHZhciBwYW5lIGluIHRoaXMuc2lkZWJhclBhbmVzKQpA
QCAtMTQ1LDggKzE1MSw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbigp
CiAKICAgICB0aGlzLnNpZGViYXJQYW5lcy5zY29wZWNoYWluLmV4cGFuZGVkID0gdHJ1ZTsKICAg
ICB0aGlzLnNpZGViYXJQYW5lcy5qc0JyZWFrcG9pbnRzLmV4cGFuZGVkID0gdHJ1ZTsKLSAgICBp
ZiAoUHJlZmVyZW5jZXMuZG9tQnJlYWtwb2ludHNFbmFibGVkKQotICAgICAgICB0aGlzLnNpZGVi
YXJQYW5lcy5kb21CcmVha3BvaW50cy5leHBhbmRlZCA9IHRydWU7CiAKICAgICB2YXIgcGFuZWxF
bmFibGVySGVhZGluZyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiWW91IG5lZWQgdG8gZW5hYmxl
IGRlYnVnZ2luZyBiZWZvcmUgeW91IGNhbiB1c2UgdGhlIFNjcmlwdHMgcGFuZWwuIik7CiAgICAg
dmFyIHBhbmVsRW5hYmxlckRpc2NsYWltZXIgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVuYWJs
aW5nIGRlYnVnZ2luZyB3aWxsIG1ha2Ugc2NyaXB0cyBydW4gc2xvd2VyLiIpOwpAQCAtNDY3LDgg
KzQ3MSwxMiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5zaWRlYmFyUGFuZXMud2F0Y2hFeHByZXNzaW9ucy5yZWZyZXNoRXhwcmVzc2lvbnMo
KTsKICAgICAgICAgaWYgKCFwcmVzZXJ2ZUl0ZW1zKSB7CiAgICAgICAgICAgICB0aGlzLnNpZGVi
YXJQYW5lcy5qc0JyZWFrcG9pbnRzLnJlc2V0KCk7Ci0gICAgICAgICAgICBpZiAoUHJlZmVyZW5j
ZXMuZG9tQnJlYWtwb2ludHNFbmFibGVkKQorICAgICAgICAgICAgaWYgKFByZWZlcmVuY2VzLm5h
dGl2ZUluc3RydW1lbnRhdGlvbkVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICB0aGlzLnNpZGVi
YXJQYW5lcy5kb21CcmVha3BvaW50cy5yZXNldCgpOworICAgICAgICAgICAgICAgIHRoaXMuc2lk
ZWJhclBhbmVzLm5hdGl2ZUJyZWFrcG9pbnRzLnJlc2V0KCk7CisgICAgICAgICAgICAgICAgdmFy
IGJyZWFrcG9pbnQgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFrcG9pbnQoV2ViSW5zcGVj
dG9yLk5hdGl2ZUJyZWFrcG9pbnQuVHlwZXMuU2VuZFhIUiwgZmFsc2UpOworICAgICAgICAgICAg
ICAgIHRoaXMuc2lkZWJhclBhbmVzLm5hdGl2ZUJyZWFrcG9pbnRzLmFkZEJyZWFrcG9pbnQobmV3
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50SXRlbShicmVha3BvaW50LCBmYWxzZSwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJYSFIiKSkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgdGhpcy5z
aWRlYmFyUGFuZXMud29ya2Vycy5yZXNldCgpOwogICAgICAgICB9CiAgICAgfSwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCA1MmE4YmQwLi45Y2MwOTcxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC00NCw3ICs0NCw3IEBAIHZh
ciBQcmVmZXJlbmNlcyA9IHsKICAgICBwcm9maWxlckFsd2F5c0VuYWJsZWQ6IGZhbHNlLAogICAg
IGF1ZGl0c1BhbmVsRW5hYmxlZDogdHJ1ZSwKICAgICBvbmxpbmVEZXRlY3Rpb25FbmFibGVkOiB0
cnVlLAotICAgIGRvbUJyZWFrcG9pbnRzRW5hYmxlZDogZmFsc2UsCisgICAgbmF0aXZlSW5zdHJ1
bWVudGF0aW9uRW5hYmxlZDogZmFsc2UsCiAgICAgcmVzb3VyY2VFeHBvcnRFbmFibGVkOiBmYWxz
ZQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCBhYzE4ODI4Li40ODFiNTFmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKKyAgICBj
b25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFN0cmluZyBzdGF0
dXNUZXh0KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBpbnQgc3RhdHVzKEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKICAgICBTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA0N2IwZTYzLi45OGJiNjNmIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0w
OS0yMCAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBp
bXBsZW1lbnQgcGF1c2luZyBvbiBYSFIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ2MDg2CisKKyAgICAgICAgKiBzcmMvanMvRGV2VG9vbHMuanM6Cisg
ICAgICAgICgpOgorCiAyMDEwLTA5LTE5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjc3NDkuCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwppbmRleCAwYzcyNDFkLi5hNjZlMTc0IDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvanMvRGV2VG9vbHMuanMKQEAgLTQ1LDcgKzQ1LDcgQEAgdmFyIGNvbnRleHQgPSB7
fTsgIC8vIFVzZWQgYnkgV2ViQ29yZSdzIGluc3BlY3RvciByb3V0aW5lcy4KICAgICBQcmVmZXJl
bmNlcy5wcm9maWxlckFsd2F5c0VuYWJsZWQgPSB0cnVlOwogICAgIFByZWZlcmVuY2VzLmNhbkVk
aXRTY3JpcHRTb3VyY2UgPSB0cnVlOwogICAgIFByZWZlcmVuY2VzLm9ubGluZURldGVjdGlvbkVu
YWJsZWQgPSBmYWxzZTsKLSAgICBQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0VuYWJsZWQgPSB0
cnVlOworICAgIFByZWZlcmVuY2VzLm5hdGl2ZUluc3RydW1lbnRhdGlvbkVuYWJsZWQgPSB0cnVl
OwogfSkoKTsKIAogdmFyIGRldnRvb2xzID0gZGV2dG9vbHMgfHwge307Cg==
</data>
<flag name="review"
          id="57526"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68246</attachid>
            <date>2010-09-21 09:08:02 -0700</date>
            <delta_ts>2010-09-21 09:24:43 -0700</delta_ts>
            <desc>Couple of renames.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>31164</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODJhZjM0MS4uYzM3ZGJiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMC0wOS0yMCAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgcGF1c2luZyBv
biBYSFIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
MDg2CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0OjpzZW5kQ2FsbGJhY2sp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2RlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjp3aWxsUmVtb3ZlRE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHJJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxTZW5kWEhSSW1wbCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OndpbGxTZW5kWEhSKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNv
bnRyb2xsZXJGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
Omluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uRXZlbnRTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVzZU9uRXZlbnRTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckZvclBhZ2VOYXZpZ2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxTZW5k
WEhSKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3Jh
bSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5h
dGl2ZUJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBlbmFibGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OYXRpdmVCcmVha3BvaW50LnByb3RvdHlwZS5zZXQgZW5hYmxlZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBlLl9jb250ZXh0TWVu
dUV2ZW50RmlyZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRJdGVtKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50SXRlbS5wcm90b3R5cGUucG9wdWxhdGVDb250
ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEl0ZW0ucHJvdG90eXBl
Ll9jaGVja2JveENsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkpTQnJlYWtwb2ludEl0
ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRJdGVtKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGVTdGF0dXMu
Zm9ybWF0dGVycy5zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFu
ZS5wcm90b3R5cGUudXBkYXRlU3RhdHVzLmFwcGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZVN0YXR1cyk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db250ZXh0TWVudS5wcm90b3R5cGUuaXNFbXB0eSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRz
UGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLnJl
c2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUu
X3BvcHVsYXRlVGFnQ29udGV4dE1lbnUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5yZXNldCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojp1cmwpOgor
CiAyMDEwLTA5LTIxICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAg
U1ZHIEZpbHRlciBjbGVhbnVwCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IGNmZWI1MDMuLmJhZWJmYjUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20u
Y3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0
b20uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiVjhYTUxIdHRwUmVxdWVzdC5oIgog
CiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCbG9iLmgiCiAjaW5jbHVkZSAiVjhE
T01Gb3JtRGF0YS5oIgpAQCAtMTEzLDYgKzExNCw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFhNTEh0dHBSZXF1ZXN0OjpzZW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
ICAgICBJTkNfU1RBVFMoIkRPTS5YTUxIdHRwUmVxdWVzdC5zZW5kKCkiKTsKICAgICBYTUxIdHRw
UmVxdWVzdCogeG1sSHR0cFJlcXVlc3QgPSBWOFhNTEh0dHBSZXF1ZXN0Ojp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKIAorICAgIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2Vu
ZFhtbEh0dHBSZXF1ZXN0KHhtbEh0dHBSZXF1ZXN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IHhtbEh0dHBSZXF1ZXN0LT51cmwoKSk7CisKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5zZW5kKGVj
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCmluZGV4IGFlMTM2YjIuLmQxZDE4MWQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmlkbApAQCAtMTI1LDYgKzEyNSw4IEBAIG1vZHVsZSBjb3JlIHsKICAgICAg
ICAgW2hhbmRsZXI9RGVidWddIHZvaWQgYWN0aXZhdGVCcmVha3BvaW50cygpOwogICAgICAgICBb
aGFuZGxlcj1EZWJ1Z10gdm9pZCBkZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKIAorICAgICAgICBb
aGFuZGxlcj1EZWJ1Z10gdm9pZCBzZXRQYXVzZU9uRXZlbnQoaW4gdW5zaWduZWQgaW50IGV2ZW50
VHlwZSwgaW4gYm9vbGVhbiBwYXVzZU9uRXZlbnQpOworCiAgICAgICAgIFtoYW5kbGVyPURlYnVn
XSB2b2lkIHBhdXNlKCk7CiAgICAgICAgIFtoYW5kbGVyPURlYnVnXSB2b2lkIHJlc3VtZSgpOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDVmOGYxOTAu
LmRkYWZhMDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBA
IC0yMDg1LDkgKzIwODUsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxJbnNlcnRE
T01Ob2RlSW1wbChOb2RlKiBub2RlLCBOb2RlKiBwYXJlbnQpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQgfHwgIW1fZG9tQWdlbnQpCiAg
ICAgICAgIHJldHVybjsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBkZXRhaWxzOwot
ICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZUluc2VydGlvbihub2RlLCBwYXJl
bnQsICZkZXRhaWxzKSkKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oZGV0
YWlscyk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOworICAgIGlm
IChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZUluc2VydGlvbihub2RlLCBwYXJlbnQsICZl
dmVudERhdGEpKQorICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShET01CcmVh
a3BvaW50RGVidWdnZXJFdmVudCwgZXZlbnREYXRhKTsKICNlbmRpZgogfQogCkBAIC0yMTAyLDkg
KzIxMDIsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxSZW1vdmVET01Ob2RlSW1w
bChOb2RlKiBub2RlKQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmICgh
bV9kZWJ1Z2dlckFnZW50IHx8ICFtX2RvbUFnZW50KQogICAgICAgICByZXR1cm47Ci0gICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZGV0YWlsczsKLSAgICBpZiAobV9kb21BZ2VudC0+c2hv
dWxkQnJlYWtPbk5vZGVSZW1vdmFsKG5vZGUsICZkZXRhaWxzKSkKLSAgICAgICAgbV9kZWJ1Z2dl
ckFnZW50LT5icmVha1Byb2dyYW0oZGV0YWlscyk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gZXZlbnREYXRhOworICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZVJl
bW92YWwobm9kZSwgJmV2ZW50RGF0YSkpCisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQ
cm9ncmFtKERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50LCBldmVudERhdGEpOwogI2VuZGlmCiB9
CiAKQEAgLTIxMTksOSArMjExOSw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1v
ZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqIGVsZW1lbnQpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpCiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQgfHwgIW1fZG9tQWdlbnQpCiAgICAg
ICAgIHJldHVybjsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBkZXRhaWxzOwotICAg
IGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uQXR0cmlidXRlTW9kaWZpY2F0aW9uKGVsZW1l
bnQsICZkZXRhaWxzKSkKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oZGV0
YWlscyk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOworICAgIGlm
IChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uQXR0cmlidXRlTW9kaWZpY2F0aW9uKGVsZW1lbnQs
ICZldmVudERhdGEpKQorICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShET01C
cmVha3BvaW50RGVidWdnZXJFdmVudCwgZXZlbnREYXRhKTsKICNlbmRpZgogfQogCkBAIC0yMTMy
LDYgKzIxMzIsMTUgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRy
SW1wbChFbGVtZW50KiBlbGVtZW50KQogfQogCiAKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
aW5zdHJ1bWVudFdpbGxTZW5kWG1sSHR0cFJlcXVlc3RJbXBsKGNvbnN0IEtVUkwmIHVybCkKK3sK
KyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBpZiAobV9kZWJ1Z2dlckFnZW50
KQorICAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT53aWxsU2VuZFhIUih1cmwuc3RyaW5nKCkpOwor
I2VuZGlmCit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA2
NzUyMDQ0Li44M2E2YmQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
CkBAIC0yMDIsNiArMjAyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlE
T01BdHRyKEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1l
bnQqKTsKIAorICAgIHN0YXRpYyB2b2lkIGluc3RydW1lbnRXaWxsU2VuZFhtbEh0dHBSZXF1ZXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCk7CisKICNp
ZiBFTkFCTEUoV09SS0VSUykKICAgICBlbnVtIFdvcmtlckFjdGlvbiB7IFdvcmtlckNyZWF0ZWQs
IFdvcmtlckRlc3Ryb3llZCB9OwogCkBAIC0zMzEsNyArMzMzLDEwIEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0
cmluZyYganNvblJlc3VsdCk7CiAKKyAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yQ29udHJvbGxlckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCk7CiAgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JOb2RlKE5vZGUqKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCk7
CisKICAgICB2b2lkIHdpbGxJbnNlcnRET01Ob2RlSW1wbChOb2RlKiBub2RlLCBOb2RlKiBwYXJl
bnQpOwogICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZUltcGwoTm9kZSopOwogICAgIHZvaWQgd2ls
bFJlbW92ZURPTU5vZGVJbXBsKE5vZGUqKTsKQEAgLTMzOSw2ICszNDQsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgd2lsbE1vZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqKTsKICAgICB2b2lkIGRpZE1v
ZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqKTsKIAorICAgIHZvaWQgaW5zdHJ1bWVudFdpbGxTZW5k
WG1sSHR0cFJlcXVlc3RJbXBsKGNvbnN0IEtVUkwmIHVybCk7CisKICNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKICAgICBmcmllbmQgY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsK
ICAgICBTdHJpbmcgYnJlYWtwb2ludHNTZXR0aW5nS2V5KCk7CkBAIC00NTEsMTggKzQ1OCw0MCBA
QCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRNb2RpZnlET01BdHRyKEVsZW1l
bnQqIGVsZW1lbnQpCiAjZW5kaWYKIH0KIAotaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIElu
c3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2RlKE5vZGUqIG5vZGUp
CisKK2lubGluZSB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFht
bEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwm
IHVybCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbm9k
ZS0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKSB7Ci0g
ICAgICAgICAgICBpZiAoaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlcjsKLSAgICAgICAgfQotICAgIH0K
KyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpKQorICAgICAg
ICBpbnNwZWN0b3JDb250cm9sbGVyLT5pbnN0cnVtZW50V2lsbFNlbmRYbWxIdHRwUmVxdWVzdElt
cGwodXJsKTsKICNlbmRpZgorfQorCiAKLSAgICByZXR1cm4gMDsKK2lubGluZSBJbnNwZWN0b3JD
b250cm9sbGVyKiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0b3JDb250cm9sbGVyRm9yU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorewor
ICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+aXNEb2N1bWVudCgpKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KHN0YXRpY19j
YXN0PERvY3VtZW50Kj4oY29udGV4dCkpOworfQorCitpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxl
ciogSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdG9yQ29udHJvbGxlckZvck5vZGUoTm9kZSog
bm9kZSkKK3sKKyAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KG5vZGUt
PmRvY3VtZW50KCkpOworfQorCitpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9y
Q29udHJvbGxlcjo6aW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQpOworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVu
dC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKTsKKyAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiAw
OworICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXI7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggMzg3NWJlMC4uZmU2N2RhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTY0LDcgKzY0LDggQEAgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb24KICAgICAsIG1fZnJvbnRlbmQoZnJvbnRlbmQpCiAgICAgLCBtX3BhdXNlZFNjcmlw
dFN0YXRlKDApCiAgICAgLCBtX2JyZWFrcG9pbnRzTG9hZGVkKGZhbHNlKQotICAgICwgbV9icmVh
a1Byb2dyYW1SZWFzb24oSW5zcGVjdG9yVmFsdWU6Om51bGwoKSkKKyAgICAsIG1fYnJlYWtQcm9n
cmFtU3RhdHVzKEluc3BlY3RvclZhbHVlOjpudWxsKCkpCisgICAgLCBtX3BhdXNlT25FdmVudE1h
c2soMCkKIHsKIH0KIApAQCAtMTM3LDYgKzEzOCwxOSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWduZWQg
bAogICAgIHNhdmVCcmVha3BvaW50cygpOwogfQogCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNldFBhdXNlT25FdmVudCh1bnNpZ25lZCBldmVudFR5cGUsIGJvb2wgcGF1c2VPbkV2ZW50
KQoreworICAgIGlmIChwYXVzZU9uRXZlbnQpCisgICAgICAgIG1fcGF1c2VPbkV2ZW50TWFzayB8
PSAoMSA8PCBldmVudFR5cGUpOworICAgIGVsc2UKKyAgICAgICAgbV9wYXVzZU9uRXZlbnRNYXNr
ICY9IH4oMSA8PCBldmVudFR5cGUpOworfQorCitib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNob3VsZFBhdXNlT25FdmVudCh1bnNpZ25lZCBldmVudFR5cGUpCit7CisgICAgcmV0dXJuIG1f
cGF1c2VPbkV2ZW50TWFzayAmICgxIDw8IGV2ZW50VHlwZSk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6ZWRpdFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBj
b25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGJvb2wqIHN1Y2Nlc3MsIFN0cmluZyogcmVzdWx0LCBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBuZXdDYWxsRnJhbWVzKQogewogICAgIGlmICgoKnN1Y2Nl
c3MgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuZWRpdFNjcmlwdFNvdXJjZShzb3VyY2VJ
RCwgbmV3Q29udGVudCwgKnJlc3VsdCkpKQpAQCAtMTg2LDYgKzIwMCw3IEBAIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJGb3JQYWdlTmF2aWdhdGlvbigpCiAgICAgbV9zdGlja3lC
cmVha3BvaW50cy5jbGVhcigpOwogICAgIG1fYnJlYWtwb2ludHNNYXBwaW5nLmNsZWFyKCk7CiAg
ICAgbV9icmVha3BvaW50c0xvYWRlZCA9IGZhbHNlOworICAgIG1fcGF1c2VPbkV2ZW50TWFzayA9
IDA7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjptZDVCYXNlMTYoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCkBAIC0yMDUsNiArMjIwLDE2IEBAIFN0cmluZyBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjptZDVCYXNlMTYoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIFN0
cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhIUihjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAo
IXNob3VsZFBhdXNlT25FdmVudChTZW5kWEhSRGVidWdnZXJFdmVudCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7CisgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoInVybCIsIHVybCk7Cisg
ICAgYnJlYWtQcm9ncmFtKFNlbmRYSFJEZWJ1Z2dlckV2ZW50LCBldmVudERhdGEpOworfQorCiBQ
YXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50
Q2FsbEZyYW1lcygpCiB7CiAgICAgaWYgKCFtX3BhdXNlZFNjcmlwdFN0YXRlKQpAQCAtMjg5LDEx
ICszMTQsMTEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpmYWlsZWRUb1BhcnNlU291
cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcKIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZGlkUGF1c2UoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQogewogICAgIEFTU0VS
VChzY3JpcHRTdGF0ZSAmJiAhbV9wYXVzZWRTY3JpcHRTdGF0ZSk7Ci0gICAgQVNTRVJUKG1fYnJl
YWtQcm9ncmFtUmVhc29uKTsKKyAgICBBU1NFUlQobV9icmVha1Byb2dyYW1TdGF0dXMpOwogICAg
IG1fcGF1c2VkU2NyaXB0U3RhdGUgPSBzY3JpcHRTdGF0ZTsKICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBkZXRhaWxzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBkZXRhaWxz
LT5zZXRWYWx1ZSgiY2FsbEZyYW1lcyIsIGN1cnJlbnRDYWxsRnJhbWVzKCkpOwotICAgIGRldGFp
bHMtPnNldFZhbHVlKCJzdGF0dXMiLCBtX2JyZWFrUHJvZ3JhbVJlYXNvbik7CisgICAgZGV0YWls
cy0+c2V0VmFsdWUoInN0YXR1cyIsIG1fYnJlYWtQcm9ncmFtU3RhdHVzKTsKICAgICBtX2Zyb250
ZW5kLT5wYXVzZWRTY3JpcHQoZGV0YWlscyk7CiB9CiAKQEAgLTMwMywxNyArMzI4LDIxIEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ29udGludWUoKQogICAgIG1fZnJvbnRlbmQt
PnJlc3VtZWRTY3JpcHQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVh
a1Byb2dyYW0oUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVhc29uKQordm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0oRGVidWdnZXJFdmVudCBldmVudFR5cGUsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGV2ZW50RGF0YSkKIHsKKyAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBzdGF0dXMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgIHN0YXR1
cy0+c2V0TnVtYmVyKCJldmVudFR5cGUiLCBldmVudFR5cGUpOworICAgIHN0YXR1cy0+c2V0VmFs
dWUoImV2ZW50RGF0YSIsIGV2ZW50RGF0YSk7CisKKyAgICBtX2JyZWFrUHJvZ3JhbVN0YXR1cyA9
IHN0YXR1czsKICAgICBzX2RlYnVnZ2VyQWdlbnRPbkJyZWFrcG9pbnQgPSB0aGlzOwotICAgIG1f
YnJlYWtQcm9ncmFtUmVhc29uID0gcmVhc29uOwogCiAgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNo
YXJlZCgpLmJyZWFrUHJvZ3JhbSgpOwogICAgIGlmICghc19kZWJ1Z2dlckFnZW50T25CcmVha3Bv
aW50KQogICAgICAgICByZXR1cm47CiAKICAgICBzX2RlYnVnZ2VyQWdlbnRPbkJyZWFrcG9pbnQg
PSAwOwotICAgIG1fYnJlYWtQcm9ncmFtUmVhc29uID0gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsK
KyAgICBtX2JyZWFrUHJvZ3JhbVN0YXR1cyA9IEluc3BlY3RvclZhbHVlOjpudWxsKCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuaAppbmRleCA3OWIwYTBlLi5kNTFmYjRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC00NSw2ICs0NSwxMSBAQCBjbGFzcyBJbnNwZWN0
b3JDb250cm9sbGVyOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JW
YWx1ZTsKIAorZW51bSBEZWJ1Z2dlckV2ZW50IHsKKyAgICBET01CcmVha3BvaW50RGVidWdnZXJF
dmVudCA9IDAsCisgICAgU2VuZFhIUkRlYnVnZ2VyRXZlbnQKK307CisKIGNsYXNzIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIE5vbmNv
cHlhYmxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50PiBjcmVhdGUoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3RvckZyb250ZW5kKik7
CkBAIC01NywxMSArNjIsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QnJlYWtwb2ludChjb25z
dCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBib29sIGVuYWJsZWQsIGNv
bnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sKiBzdWNjZXNzLCB1bnNpZ25lZCBpbnQqIGFjdHVh
bExpbmVOdW1iZXIpOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNv
dXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKTsKIAorICAgIHZvaWQgc2V0UGF1c2VPbkV2ZW50
KHVuc2lnbmVkIGV2ZW50VHlwZSwgYm9vbCBwYXVzZU9uRXZlbnQpOworCiAgICAgdm9pZCBlZGl0
U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudCwgYm9vbCogc3VjY2VzcywgU3RyaW5nKiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4qIG5ld0NhbGxGcmFtZXMpOwogICAgIHZvaWQgZ2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmlu
ZyYgc291cmNlSUQsIFN0cmluZyogc2NyaXB0U291cmNlKTsKIAogICAgIHZvaWQgcGF1c2UoKTsK
LSAgICB2b2lkIGJyZWFrUHJvZ3JhbShQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZWFzb24p
OworICAgIHZvaWQgYnJlYWtQcm9ncmFtKERlYnVnZ2VyRXZlbnQgZXZlbnRUeXBlLCBQYXNzUmVm
UHRyPEluc3BlY3RvclZhbHVlPiBldmVudERhdGEpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAgICAg
dm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOwogICAgIHZvaWQgc3RlcEludG9TdGF0ZW1lbnQoKTsK
QEAgLTczLDcgKzgwLDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJpbmcgbWQ1QmFzZTE2
KGNvbnN0IFN0cmluZyYgc3RyaW5nKTsKIAorICAgIHZvaWQgd2lsbFNlbmRYSFIoY29uc3QgU3Ry
aW5nJiB1cmwpOworCiBwcml2YXRlOgorCiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbnNw
ZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9yRnJvbnRlbmQqKTsKIAogICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IGN1cnJlbnRDYWxsRnJhbWVzKCk7CkBAIC04Niw2ICs5Niw4IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKFNjcmlwdFN0YXRlKik7CiAgICAgdmly
dHVhbCB2b2lkIGRpZENvbnRpbnVlKCk7CiAKKyAgICBib29sIHNob3VsZFBhdXNlT25FdmVudCh1
bnNpZ25lZCBldmVudFR5cGUpOworCiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciogbV9pbnNwZWN0
b3JDb250cm9sbGVyOwogICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwogICAgIFNj
cmlwdFN0YXRlKiBtX3BhdXNlZFNjcmlwdFN0YXRlOwpAQCAtOTUsNyArMTA3LDggQEAgcHJpdmF0
ZToKICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IG1fYnJlYWtwb2ludHNNYXBwaW5nOwog
ICAgIGJvb2wgbV9icmVha3BvaW50c0xvYWRlZDsKICAgICBzdGF0aWMgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCogc19kZWJ1Z2dlckFnZW50T25CcmVha3BvaW50OwotICAgIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gbV9icmVha1Byb2dyYW1SZWFzb247CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiBtX2JyZWFrUHJvZ3JhbVN0YXR1czsKKyAgICB1aW50MzJfdCBtX3BhdXNlT25FdmVudE1hc2s7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKaW5kZXggODUxODYxOC4uNTIyZWY3NCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpz
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwpA
QCAtMTk5LDMgKzE5OSwzMyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7
CiB9CiAKIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKKworV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFrcG9p
bnQgPSBmdW5jdGlvbih0eXBlLCBlbmFibGVkKQoreworICAgIHRoaXMuX3R5cGUgPSB0eXBlOwor
ICAgIHRoaXMuX2VuYWJsZWQgPSBlbmFibGVkOworfQorCitXZWJJbnNwZWN0b3IuTmF0aXZlQnJl
YWtwb2ludC5UeXBlcyA9IHsKKyAgICBET01CcmVha3BvaW50OiAwLAorICAgIFNlbmRYSFI6IDEK
K307CisKK1dlYkluc3BlY3Rvci5OYXRpdmVCcmVha3BvaW50LnByb3RvdHlwZSA9IHsKKyAgICBn
ZXQgZW5hYmxlZCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZW5hYmxlZDsKKyAgICB9
LAorCisgICAgc2V0IGVuYWJsZWQoZW5hYmxlZCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9l
bmFibGVkID09PSBlbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMu
X2VuYWJsZWQgPSBlbmFibGVkOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFBhdXNlT25F
dmVudCh0aGlzLl90eXBlLCB0aGlzLl9lbmFibGVkKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoImVuYWJsZS1jaGFuZ2VkIik7CisgICAgfQorfQorCitXZWJJbnNwZWN0
b3IuTmF0aXZlQnJlYWtwb2ludC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9i
amVjdC5wcm90b3R5cGU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcwppbmRl
eCA5Njg4ZjNlLi4wOTQ5YjM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcwpAQCAtODUsMTYgKzg1LDE3IEBAIFdlYklu
c3BlY3Rvci5CcmVha3BvaW50c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICBfY29udGV4
dE1lbnVFdmVudEZpcmVkOiBmdW5jdGlvbihicmVha3BvaW50SXRlbSwgZXZlbnQpCiAgICAgewog
ICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7
Ci0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJS
ZW1vdmUgQnJlYWtwb2ludCIpLCBicmVha3BvaW50SXRlbS5yZW1vdmUuYmluZChicmVha3BvaW50
SXRlbSkpOworICAgICAgICBicmVha3BvaW50SXRlbS5wb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRl
eHRNZW51KTsKICAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CiAgICAgfQogfQogCiBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLnByb3RvdHlwZTsKIAotV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRJdGVtID0gZnVuY3Rpb24oYnJlYWtwb2ludCkKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50
SXRlbSA9IGZ1bmN0aW9uKGJyZWFrcG9pbnQsIHJlbW92YWJsZSwgbGFiZWwpCiB7CiAgICAgdGhp
cy5fYnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7CisgICAgdGhpcy5fcmVtb3ZhYmxlID0gcmVtb3Zh
YmxlOwogCiAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7
CiAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2JyZWFr
cG9pbnRDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKQEAgLTEwNiw4ICsxMDcsMTMgQEAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRJdGVtID0gZnVuY3Rpb24oYnJlYWtwb2ludCkKICAgICBjaGVj
a2JveEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9jaGVja2JveENsaWNr
ZWQuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoY2hl
Y2tib3hFbGVtZW50KTsKIAorICAgIGlmIChsYWJlbCkKKyAgICAgICAgdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsYWJlbCkpOworCiAgICAgdGhpcy5f
YnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKCJlbmFibGUtY2hhbmdlZCIsIHRoaXMuX2VuYWJs
ZUNoYW5nZWQsIHRoaXMpOwotICAgIHRoaXMuX2JyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcigi
cmVtb3ZlZCIsIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzLmJpbmQodGhpcywgInJlbW92
ZWQiKSk7CisKKyAgICBpZiAodGhpcy5fcmVtb3ZhYmxlKQorICAgICAgICB0aGlzLl9icmVha3Bv
aW50LmFkZEV2ZW50TGlzdGVuZXIoInJlbW92ZWQiLCB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycy5iaW5kKHRoaXMsICJyZW1vdmVkIikpOwogfQogCiBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dEl0ZW0ucHJvdG90eXBlID0gewpAQCAtMTE2LDE2ICsxMjIsMTcgQEAgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRJdGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7
CiAgICAgfSwKIAotICAgIHJlbW92ZTogZnVuY3Rpb24oKQorICAgIHBvcHVsYXRlQ29udGV4dE1l
bnU6IGZ1bmN0aW9uKGNvbnRleHRNZW51KQogICAgIHsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2lu
dC5yZW1vdmUoKTsKKyAgICAgICAgaWYgKHRoaXMuX3JlbW92YWJsZSkKKyAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW1vdmUgQnJlYWtw
b2ludCIpLCB0aGlzLl9icmVha3BvaW50LnJlbW92ZS5iaW5kKHRoaXMuX2JyZWFrcG9pbnQpKTsK
ICAgICB9LAogCiAgICAgX2NoZWNrYm94Q2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewog
ICAgICAgICB0aGlzLl9icmVha3BvaW50LmVuYWJsZWQgPSAhdGhpcy5fYnJlYWtwb2ludC5lbmFi
bGVkOwogCi0gICAgICAgIC8vIHdpdGhvdXQgdGhpcywgd2UnZCBzd2l0Y2ggdG8gdGhlIHNvdXJj
ZSBvZiB0aGUgY2xpY2tlZCBicmVha3BvaW50CisgICAgICAgIC8vIEJyZWFrcG9pbnQgZWxlbWVu
dCBtYXkgaGF2ZSBpdCdzIG93biBjbGljayBoYW5kbGVyLgogICAgICAgICBldmVudC5zdG9wUHJv
cGFnYXRpb24oKTsKICAgICB9LAogCkBAIC0xNDAsNyArMTQ3LDcgQEAgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRJdGVtLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZTsKIAogV2ViSW5zcGVjdG9yLkpTQnJlYWtwb2ludEl0ZW0gPSBmdW5jdGlvbihicmVh
a3BvaW50KQogewotICAgIFdlYkluc3BlY3Rvci5CcmVha3BvaW50SXRlbS5jYWxsKHRoaXMsIGJy
ZWFrcG9pbnQpOworICAgIFdlYkluc3BlY3Rvci5CcmVha3BvaW50SXRlbS5jYWxsKHRoaXMsIGJy
ZWFrcG9pbnQsIHRydWUpOwogCiAgICAgdmFyIGRpc3BsYXlOYW1lID0gdGhpcy5fYnJlYWtwb2lu
dC51cmwgPyBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwodGhpcy5fYnJlYWtwb2ludC51
cmwpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIocHJvZ3JhbSkiKTsKICAgICB2YXIgbGFiZWxF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGlzcGxheU5hbWUgKyAiOiIgKyB0aGlz
Ll9icmVha3BvaW50LmxpbmUpOwpAQCAtMTgwLDcgKzE4Nyw3IEBAIFdlYkluc3BlY3Rvci5KU0Jy
ZWFrcG9pbnRJdGVtLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dEl0ZW0uCiAKIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50SXRlbSA9IGZ1bmN0aW9uKGJyZWFr
cG9pbnQpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRJdGVtLmNhbGwodGhpcywgYnJl
YWtwb2ludCk7CisgICAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRJdGVtLmNhbGwodGhpcywgYnJl
YWtwb2ludCwgdHJ1ZSk7CiAKICAgICB2YXIgbGluayA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxl
bWVudHMubGlua2lmeU5vZGVCeUlkKHRoaXMuX2JyZWFrcG9pbnQubm9kZUlkKTsKICAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKGxpbmspOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzCmluZGV4IDkxZjM1YTYuLjkyZjVlZWEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFy
UGFuZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJh
clBhbmUuanMKQEAgLTgyLDM2ICs4Miw0MSBAQCBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJh
clBhbmUucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIHVwZGF0ZVN0YXR1
czogIGZ1bmN0aW9uKHN0YXR1cykKKyAgICB1cGRhdGVTdGF0dXM6ICBmdW5jdGlvbihzdGF0dXNP
YmplY3QpCiAgICAgewogICAgICAgICB2YXIgc3RhdHVzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBzdGF0dXNFbGVtZW50LmNsYXNzTmFtZSA9ICJpbmZv
IjsKIAotICAgICAgICB2YXIgYnJlYWtwb2ludFR5cGUgPSBzdGF0dXMuYnJlYWtwb2ludC50eXBl
OwotICAgICAgICB2YXIgc3Vic3RpdHV0aW9ucyA9IFtXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2lu
dC5sYWJlbEZvclR5cGUoYnJlYWtwb2ludFR5cGUpLCBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1l
bnRzLmxpbmtpZnlOb2RlQnlJZChzdGF0dXMuYnJlYWtwb2ludC5ub2RlSWQpXTsKLSAgICAgICAg
dmFyIGZvcm1hdHRlcnMgPSB7Ci0gICAgICAgICAgICBzOiBmdW5jdGlvbihzdWJzdGl0dXRpb24p
CisgICAgICAgIHZhciBkYXRhID0gc3RhdHVzT2JqZWN0LmV2ZW50RGF0YTsKKyAgICAgICAgaWYg
KHN0YXR1c09iamVjdC5ldmVudFR5cGUgPT09IFdlYkluc3BlY3Rvci5OYXRpdmVCcmVha3BvaW50
LlR5cGVzLkRPTUJyZWFrcG9pbnQpIHsKKyAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0gZGF0
YS5icmVha3BvaW50OworICAgICAgICAgICAgdmFyIHN1YnN0aXR1dGlvbnMgPSBbV2ViSW5zcGVj
dG9yLkRPTUJyZWFrcG9pbnQubGFiZWxGb3JUeXBlKGJyZWFrcG9pbnQudHlwZSksIFdlYkluc3Bl
Y3Rvci5wYW5lbHMuZWxlbWVudHMubGlua2lmeU5vZGVCeUlkKGJyZWFrcG9pbnQubm9kZUlkKV07
CisgICAgICAgICAgICB2YXIgZm9ybWF0dGVycyA9IHsKKyAgICAgICAgICAgICAgICBzOiBmdW5j
dGlvbihzdWJzdGl0dXRpb24pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc3Vic3RpdHV0aW9uOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07
CisgICAgICAgICAgICBmdW5jdGlvbiBhcHBlbmQoYSwgYikKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc3Vic3RpdHV0aW9uOworICAgICAgICAgICAgICAgIGlmICh0eXBl
b2YgYiA9PT0gInN0cmluZyIpCisgICAgICAgICAgICAgICAgICAgIGIgPSBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShiKTsKKyAgICAgICAgICAgICAgICBzdGF0dXNFbGVtZW50LmFwcGVuZENoaWxk
KGIpOwogICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICBmdW5jdGlvbiBhcHBlbmQo
YSwgYikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHR5cGVvZiBiID09PSAic3RyaW5nIikK
LSAgICAgICAgICAgICAgICBiID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYik7Ci0gICAgICAg
ICAgICBzdGF0dXNFbGVtZW50LmFwcGVuZENoaWxkKGIpOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChicmVha3BvaW50VHlwZSA9PT0gV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuVHlwZXMuU3Vi
dHJlZU1vZGlmaWVkKSB7Ci0gICAgICAgICAgICB2YXIgdGFyZ2V0Tm9kZSA9IFdlYkluc3BlY3Rv
ci5wYW5lbHMuZWxlbWVudHMubGlua2lmeU5vZGVCeUlkKHN0YXR1cy50YXJnZXROb2RlSWQpOwot
ICAgICAgICAgICAgaWYgKHN0YXR1cy5pbnNlcnRpb24pIHsKLSAgICAgICAgICAgICAgICBpZiAo
c3RhdHVzLnRhcmdldE5vZGVJZCAhPT0gc3RhdHVzLmJyZWFrcG9pbnQubm9kZUlkKQotICAgICAg
ICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBc
IiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMsIGJlY2F1c2UgYSBuZXcgY2hpbGQgd2FzIGFkZGVk
IHRvIGl0cyBkZXNjZW5kYW50ICVzLiIsIHN1YnN0aXR1dGlvbnMuY29uY2F0KHRhcmdldE5vZGUp
LCBmb3JtYXR0ZXJzLCAiIiwgYXBwZW5kKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwi
JXNcIiBicmVha3BvaW50IHNldCBvbiAlcywgYmVjYXVzZSBhIG5ldyBjaGlsZCB3YXMgYWRkZWQg
dG8gdGhhdCBub2RlLiIsIHN1YnN0aXR1dGlvbnMsIGZvcm1hdHRlcnMsICIiLCBhcHBlbmQpOwor
ICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkRPTUJyZWFr
cG9pbnQuVHlwZXMuU3VidHJlZU1vZGlmaWVkKSB7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdl
dE5vZGUgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmxpbmtpZnlOb2RlQnlJZChkYXRh
LnRhcmdldE5vZGVJZCk7CisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaW5zZXJ0aW9uKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnRhcmdldE5vZGVJZCAhPT0gYnJlYWtwb2ludC5u
b2RlSWQpCisgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxp
emVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMsIGJlY2F1c2UgYSBu
ZXcgY2hpbGQgd2FzIGFkZGVkIHRvIGl0cyBkZXNjZW5kYW50ICVzLiIsIHN1YnN0aXR1dGlvbnMu
Y29uY2F0KHRhcmdldE5vZGUpLCBmb3JtYXR0ZXJzLCAiIiwgYXBwZW5kKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZvcm1h
dExvY2FsaXplZCgiUGF1c2VkIG9uIGEgXCIlc1wiIGJyZWFrcG9pbnQgc2V0IG9uICVzLCBiZWNh
dXNlIGEgbmV3IGNoaWxkIHdhcyBhZGRlZCB0byB0aGF0IG5vZGUuIiwgc3Vic3RpdHV0aW9ucywg
Zm9ybWF0dGVycywgIiIsIGFwcGVuZCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwi
JXNcIiBicmVha3BvaW50IHNldCBvbiAlcywgYmVjYXVzZSBpdHMgZGVzY2VuZGFudCAlcyB3YXMg
cmVtb3ZlZC4iLCBzdWJzdGl0dXRpb25zLmNvbmNhdCh0YXJnZXROb2RlKSwgZm9ybWF0dGVycywg
IiIsIGFwcGVuZCk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJlYWtwb2ludCBzZXQg
b24gJXMsIGJlY2F1c2UgaXRzIGRlc2NlbmRhbnQgJXMgd2FzIHJlbW92ZWQuIiwgc3Vic3RpdHV0
aW9ucy5jb25jYXQodGFyZ2V0Tm9kZSksIGZvcm1hdHRlcnMsICIiLCBhcHBlbmQpOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNl
ZCBvbiBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAlcy4iLCBzdWJzdGl0dXRpb25zLCBmb3Jt
YXR0ZXJzLCAiIiwgYXBwZW5kKTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0
TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMuIiwgc3Vi
c3RpdHV0aW9ucywgZm9ybWF0dGVycywgIiIsIGFwcGVuZCk7CisgICAgICAgIH0gZWxzZSBpZiAo
c3RhdHVzT2JqZWN0LmV2ZW50VHlwZSA9PT0gV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFrcG9pbnQu
VHlwZXMuU2VuZFhIUikKKyAgICAgICAgICAgIHN0YXR1c0VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYXVzZWQgb24gWEhS
LiIpKSk7CisKICAgICAgICAgdGhpcy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXNFbGVt
ZW50KTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29udGV4dE1lbnUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29udGV4dE1lbnUu
anMKaW5kZXggNDcwNDVhMi4uZjc3ZWUyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbnRleHRNZW51LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db250ZXh0TWVudS5qcwpAQCAtNzAsNiArNzAsMTEgQEAgV2ViSW5zcGVjdG9yLkNvbnRleHRN
ZW51LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faXRlbXMucHVzaCh7dHlwZTogInNlcGFy
YXRvciJ9KTsKICAgICB9LAogCisgICAgaXNFbXB0eTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICF0aGlzLl9pdGVtcy5sZW5ndGg7CisgICAgfSwKKwogICAgIF9pdGVtU2VsZWN0
ZWQ6IGZ1bmN0aW9uKGlkKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2hhbmRsZXJzW2lkXSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpz
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKaW5kZXggNzJi
MjNlMS4uNzAwNzRlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRz
UGFuZWwuanMKQEAgLTc0LDcgKzc0LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwgPSBm
dW5jdGlvbigpCiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzID0gbmV3IFdlYkluc3BlY3Rv
ci5TdHlsZXNTaWRlYmFyUGFuZSh0aGlzLnNpZGViYXJQYW5lcy5jb21wdXRlZFN0eWxlKTsKICAg
ICB0aGlzLnNpZGViYXJQYW5lcy5tZXRyaWNzID0gbmV3IFdlYkluc3BlY3Rvci5NZXRyaWNzU2lk
ZWJhclBhbmUoKTsKICAgICB0aGlzLnNpZGViYXJQYW5lcy5wcm9wZXJ0aWVzID0gbmV3IFdlYklu
c3BlY3Rvci5Qcm9wZXJ0aWVzU2lkZWJhclBhbmUoKTsKLSAgICBpZiAoUHJlZmVyZW5jZXMuZG9t
QnJlYWtwb2ludHNFbmFibGVkKQorICAgIGlmIChQcmVmZXJlbmNlcy5uYXRpdmVJbnN0cnVtZW50
YXRpb25FbmFibGVkKQogICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5kb21CcmVha3BvaW50cyA9
IFdlYkluc3BlY3Rvci5jcmVhdGVET01CcmVha3BvaW50c1NpZGViYXJQYW5lKCk7CiAgICAgdGhp
cy5zaWRlYmFyUGFuZXMuZXZlbnRMaXN0ZW5lcnMgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlz
dGVuZXJzU2lkZWJhclBhbmUoKTsKIApAQCAtMTcxLDcgKzE3MSw3IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBkZWxldGUgdGhpcy5jdXJyZW50
UXVlcnk7CiAKLSAgICAgICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFrcG9pbnRzRW5hYmxlZCkK
KyAgICAgICAgaWYgKFByZWZlcmVuY2VzLm5hdGl2ZUluc3RydW1lbnRhdGlvbkVuYWJsZWQpCiAg
ICAgICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5kb21CcmVha3BvaW50cy5yZXNldCgpOwogICAg
IH0sCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Ry
ZWVPdXRsaW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91
dGxpbmUuanMKaW5kZXggZTI2MTIzNC4uM2JmMTQ2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTc1Miw3ICs3NTIsNyBA
QCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb3B5IGFzIEhU
TUwiKSwgdGhpcy5fY29weUhUTUwuYmluZCh0aGlzKSk7CiAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUgTm9kZSIpLCB0aGlzLnJlbW92
ZS5iaW5kKHRoaXMpKTsKIAotICAgICAgICBpZiAoUHJlZmVyZW5jZXMuZG9tQnJlYWtwb2ludHNF
bmFibGVkKSB7CisgICAgICAgIGlmIChQcmVmZXJlbmNlcy5uYXRpdmVJbnN0cnVtZW50YXRpb25F
bmFibGVkKSB7CiAgICAgICAgICAgICAvLyBBZGQgZGViYnVnaW5nLXJlbGF0ZWQgYWN0aW9ucwog
ICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDcxNTMzOWQuLmRkZTA2Nzkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMTMz
LDggKzEzMywxNCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24oKQogICAg
IHRoaXMuc2lkZWJhclBhbmVzLmNhbGxzdGFjayA9IG5ldyBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNr
U2lkZWJhclBhbmUoKTsKICAgICB0aGlzLnNpZGViYXJQYW5lcy5zY29wZWNoYWluID0gbmV3IFdl
Ykluc3BlY3Rvci5TY29wZUNoYWluU2lkZWJhclBhbmUoKTsKICAgICB0aGlzLnNpZGViYXJQYW5l
cy5qc0JyZWFrcG9pbnRzID0gV2ViSW5zcGVjdG9yLmNyZWF0ZUpTQnJlYWtwb2ludHNTaWRlYmFy
UGFuZSgpOwotICAgIGlmIChQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0VuYWJsZWQpCisgICAg
aWYgKFByZWZlcmVuY2VzLm5hdGl2ZUluc3RydW1lbnRhdGlvbkVuYWJsZWQpIHsKICAgICAgICAg
dGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtwb2ludHMgPSBXZWJJbnNwZWN0b3IuY3JlYXRlRE9N
QnJlYWtwb2ludHNTaWRlYmFyUGFuZSgpOworICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5kb21C
cmVha3BvaW50cy5leHBhbmRlZCA9IHRydWU7CisKKyAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMu
bmF0aXZlQnJlYWtwb2ludHMgPSBuZXcgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBh
bmUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOYXRpdmUgQnJlYWtwb2ludHMiKSk7CisgICAgICAg
IHRoaXMuc2lkZWJhclBhbmVzLm5hdGl2ZUJyZWFrcG9pbnRzLmV4cGFuZGVkID0gdHJ1ZTsKKyAg
ICB9CisKICAgICB0aGlzLnNpZGViYXJQYW5lcy53b3JrZXJzID0gbmV3IFdlYkluc3BlY3Rvci5X
b3JrZXJzU2lkZWJhclBhbmUoKTsKIAogICAgIGZvciAodmFyIHBhbmUgaW4gdGhpcy5zaWRlYmFy
UGFuZXMpCkBAIC0xNDUsOCArMTUxLDYgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1
bmN0aW9uKCkKIAogICAgIHRoaXMuc2lkZWJhclBhbmVzLnNjb3BlY2hhaW4uZXhwYW5kZWQgPSB0
cnVlOwogICAgIHRoaXMuc2lkZWJhclBhbmVzLmpzQnJlYWtwb2ludHMuZXhwYW5kZWQgPSB0cnVl
OwotICAgIGlmIChQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0VuYWJsZWQpCi0gICAgICAgIHRo
aXMuc2lkZWJhclBhbmVzLmRvbUJyZWFrcG9pbnRzLmV4cGFuZGVkID0gdHJ1ZTsKIAogICAgIHZh
ciBwYW5lbEVuYWJsZXJIZWFkaW5nID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJZb3UgbmVlZCB0
byBlbmFibGUgZGVidWdnaW5nIGJlZm9yZSB5b3UgY2FuIHVzZSB0aGUgU2NyaXB0cyBwYW5lbC4i
KTsKICAgICB2YXIgcGFuZWxFbmFibGVyRGlzY2xhaW1lciA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRW5hYmxpbmcgZGVidWdnaW5nIHdpbGwgbWFrZSBzY3JpcHRzIHJ1biBzbG93ZXIuIik7CkBA
IC00NjcsOCArNDcxLDEyIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy53YXRjaEV4cHJlc3Npb25zLnJlZnJlc2hFeHBy
ZXNzaW9ucygpOwogICAgICAgICBpZiAoIXByZXNlcnZlSXRlbXMpIHsKICAgICAgICAgICAgIHRo
aXMuc2lkZWJhclBhbmVzLmpzQnJlYWtwb2ludHMucmVzZXQoKTsKLSAgICAgICAgICAgIGlmIChQ
cmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0VuYWJsZWQpCisgICAgICAgICAgICBpZiAoUHJlZmVy
ZW5jZXMubmF0aXZlSW5zdHJ1bWVudGF0aW9uRW5hYmxlZCkgewogICAgICAgICAgICAgICAgIHRo
aXMuc2lkZWJhclBhbmVzLmRvbUJyZWFrcG9pbnRzLnJlc2V0KCk7CisgICAgICAgICAgICAgICAg
dGhpcy5zaWRlYmFyUGFuZXMubmF0aXZlQnJlYWtwb2ludHMucmVzZXQoKTsKKyAgICAgICAgICAg
ICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZlQnJlYWtwb2ludChX
ZWJJbnNwZWN0b3IuTmF0aXZlQnJlYWtwb2ludC5UeXBlcy5TZW5kWEhSLCBmYWxzZSk7CisgICAg
ICAgICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMubmF0aXZlQnJlYWtwb2ludHMuYWRkQnJlYWtw
b2ludChuZXcgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRJdGVtKGJyZWFrcG9pbnQsIGZhbHNlLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlhIUiIpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB0aGlzLnNpZGViYXJQYW5lcy53b3JrZXJzLnJlc2V0KCk7CiAgICAgICAgIH0KICAgICB9LApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDYzZjI2NDEuLmE2Nzg2
MTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTQ0LDcgKzQ0
LDcgQEAgdmFyIFByZWZlcmVuY2VzID0gewogICAgIHByb2ZpbGVyQWx3YXlzRW5hYmxlZDogZmFs
c2UsCiAgICAgYXVkaXRzUGFuZWxFbmFibGVkOiB0cnVlLAogICAgIG9ubGluZURldGVjdGlvbkVu
YWJsZWQ6IHRydWUsCi0gICAgZG9tQnJlYWtwb2ludHNFbmFibGVkOiBmYWxzZSwKKyAgICBuYXRp
dmVJbnN0cnVtZW50YXRpb25FbmFibGVkOiBmYWxzZSwKICAgICByZXNvdXJjZUV4cG9ydEVuYWJs
ZWQ6IGZhbHNlCiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0Lmgg
Yi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IGFjMTg4MjguLjQ4MWI1MWYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsK
IAorICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgU3Ry
aW5nIHN0YXR1c1RleHQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIGludCBzdGF0dXMoRXhj
ZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDU2ZjJjNWEuLjUzNWI4ZmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEwLTA5LTIwICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGltcGxlbWVudCBwYXVzaW5nIG9uIFhIUgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYwODYKKworICAgICAgICAqIHNyYy9qcy9EZXZUb29s
cy5qczoKKyAgICAgICAgKCk6CisKIDIwMTAtMDktMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCmluZGV4IDBjNzI0MWQuLmE2NmUxNzQgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9qcy9EZXZUb29scy5qcwpAQCAtNDUsNyArNDUsNyBAQCB2YXIgY29udGV4dCA9IHt9
OyAgLy8gVXNlZCBieSBXZWJDb3JlJ3MgaW5zcGVjdG9yIHJvdXRpbmVzLgogICAgIFByZWZlcmVu
Y2VzLnByb2ZpbGVyQWx3YXlzRW5hYmxlZCA9IHRydWU7CiAgICAgUHJlZmVyZW5jZXMuY2FuRWRp
dFNjcmlwdFNvdXJjZSA9IHRydWU7CiAgICAgUHJlZmVyZW5jZXMub25saW5lRGV0ZWN0aW9uRW5h
YmxlZCA9IGZhbHNlOwotICAgIFByZWZlcmVuY2VzLmRvbUJyZWFrcG9pbnRzRW5hYmxlZCA9IHRy
dWU7CisgICAgUHJlZmVyZW5jZXMubmF0aXZlSW5zdHJ1bWVudGF0aW9uRW5hYmxlZCA9IHRydWU7
CiB9KSgpOwogCiB2YXIgZGV2dG9vbHMgPSBkZXZ0b29scyB8fCB7fTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68249</attachid>
            <date>2010-09-21 09:24:43 -0700</date>
            <delta_ts>2010-09-22 05:19:06 -0700</delta_ts>
            <desc>Couple of renames.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30976</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODJhZjM0MS4uZDMyOGY1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMC0wOS0yMSAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgcGF1c2luZyBv
biBYSFIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
MDg2CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0OjpzZW5kQ2FsbGJhY2sp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2RlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjp3aWxsUmVtb3ZlRE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHJJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhtbEh0dHBS
ZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2Vu
ZFhtbEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
Omluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNvbnRy
b2xsZXJGb3JEb2N1bWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZXRQYXVzZU9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2hvdWxkUGF1c2VPbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyRm9yUGFnZU5hdmlnYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6d2lsbFNlbmRYSFIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZl
QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlQnJlYWtwb2ludC5wcm90
b3R5cGUuZ2V0IGVuYWJsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFrcG9p
bnQucHJvdG90eXBlLnNldCBlbmFibGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludHNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2NvbnRleHRNZW51RXZlbnRGaXJlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnRJdGVtLnByb3RvdHlwZS5wb3B1bGF0ZUNvbnRleHRNZW51KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5CcmVha3BvaW50SXRlbS5wcm90b3R5cGUuX2NoZWNrYm94Q2xpY2tlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEl0ZW0ucHJvdG90eXBlLl9lbmFibGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50SXRlbS5wcm90b3R5cGUu
X2JyZWFrcG9pbnRDbGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KU0JyZWFrcG9pbnRJ
dGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50SXRlbSk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5wcm90b3R5cGUudXBkYXRlU3RhdHVz
LmZvcm1hdHRlcnMucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBh
bmUucHJvdG90eXBlLnVwZGF0ZVN0YXR1cy5hcHBlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGVTdGF0dXMpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVs
LnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50
c1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1l
bnQucHJvdG90eXBlLl9wb3B1bGF0ZVRhZ0NvbnRleHRNZW51KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3Jp
cHRzUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUu
cmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAg
ICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6dXJsKToKKwogMjAxMC0wOS0yMSAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFNWRyBGaWx0ZXIgY2xlYW51cApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCBjZmViNTAzLi5i
YWViZmI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBS
ZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0
dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlY4WE1MSHR0
cFJlcXVlc3QuaCIKIAogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmxvYi5oIgog
I2luY2x1ZGUgIlY4RE9NRm9ybURhdGEuaCIKQEAgLTExMyw2ICsxMTQsOCBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6c2VuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiAgICAgSU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVlc3Quc2VuZCgpIik7
CiAgICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gVjhYTUxIdHRwUmVxdWVzdDo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyOjppbnN0
cnVtZW50V2lsbFNlbmRYbWxIdHRwUmVxdWVzdCh4bWxIdHRwUmVxdWVzdC0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCB4bWxIdHRwUmVxdWVzdC0+dXJsKCkpOworCiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICB4bWxIdHRwUmVx
dWVzdC0+c2VuZChlYyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
aWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCBhZTEzNmIyLi5kMWQx
ODFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTEyNSw2ICsxMjUsOCBAQCBtb2R1bGUg
Y29yZSB7CiAgICAgICAgIFtoYW5kbGVyPURlYnVnXSB2b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMo
KTsKICAgICAgICAgW2hhbmRsZXI9RGVidWddIHZvaWQgZGVhY3RpdmF0ZUJyZWFrcG9pbnRzKCk7
CiAKKyAgICAgICAgW2hhbmRsZXI9RGVidWddIHZvaWQgc2V0UGF1c2VPbkV2ZW50KGluIHVuc2ln
bmVkIGludCBldmVudFR5cGUsIGluIGJvb2xlYW4gcGF1c2VPbkV2ZW50KTsKKwogICAgICAgICBb
aGFuZGxlcj1EZWJ1Z10gdm9pZCBwYXVzZSgpOwogICAgICAgICBbaGFuZGxlcj1EZWJ1Z10gdm9p
ZCByZXN1bWUoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCA1ZjhmMTkwLi5kZGFmYTAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcApAQCAtMjA4NSw5ICsyMDg1LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
Ojp3aWxsSW5zZXJ0RE9NTm9kZUltcGwoTm9kZSogbm9kZSwgTm9kZSogcGFyZW50KQogI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmICghbV9kZWJ1Z2dlckFnZW50IHx8ICFt
X2RvbUFnZW50KQogICAgICAgICByZXR1cm47Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4gZGV0YWlsczsKLSAgICBpZiAobV9kb21BZ2VudC0+c2hvdWxkQnJlYWtPbk5vZGVJbnNlcnRp
b24obm9kZSwgcGFyZW50LCAmZGV0YWlscykpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJl
YWtQcm9ncmFtKGRldGFpbHMpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGV2ZW50
RGF0YTsKKyAgICBpZiAobV9kb21BZ2VudC0+c2hvdWxkQnJlYWtPbk5vZGVJbnNlcnRpb24obm9k
ZSwgcGFyZW50LCAmZXZlbnREYXRhKSkKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1By
b2dyYW0oRE9NQnJlYWtwb2ludERlYnVnZ2VyRXZlbnQsIGV2ZW50RGF0YSk7CiAjZW5kaWYKIH0K
IApAQCAtMjEwMiw5ICsyMTAyLDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsUmVt
b3ZlRE9NTm9kZUltcGwoTm9kZSogbm9kZSkKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudCB8fCAhbV9kb21BZ2VudCkKICAgICAgICAgcmV0
dXJuOwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGRldGFpbHM7Ci0gICAgaWYgKG1f
ZG9tQWdlbnQtPnNob3VsZEJyZWFrT25Ob2RlUmVtb3ZhbChub2RlLCAmZGV0YWlscykpCi0gICAg
ICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKGRldGFpbHMpOworICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IGV2ZW50RGF0YTsKKyAgICBpZiAobV9kb21BZ2VudC0+c2hvdWxk
QnJlYWtPbk5vZGVSZW1vdmFsKG5vZGUsICZldmVudERhdGEpKQorICAgICAgICBtX2RlYnVnZ2Vy
QWdlbnQtPmJyZWFrUHJvZ3JhbShET01CcmVha3BvaW50RGVidWdnZXJFdmVudCwgZXZlbnREYXRh
KTsKICNlbmRpZgogfQogCkBAIC0yMTE5LDkgKzIxMTksOSBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OndpbGxNb2RpZnlET01BdHRySW1wbChFbGVtZW50KiBlbGVtZW50KQogI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmICghbV9kZWJ1Z2dlckFnZW50IHx8ICFtX2Rv
bUFnZW50KQogICAgICAgICByZXR1cm47Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
ZGV0YWlsczsKLSAgICBpZiAobV9kb21BZ2VudC0+c2hvdWxkQnJlYWtPbkF0dHJpYnV0ZU1vZGlm
aWNhdGlvbihlbGVtZW50LCAmZGV0YWlscykpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJl
YWtQcm9ncmFtKGRldGFpbHMpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGV2ZW50
RGF0YTsKKyAgICBpZiAobV9kb21BZ2VudC0+c2hvdWxkQnJlYWtPbkF0dHJpYnV0ZU1vZGlmaWNh
dGlvbihlbGVtZW50LCAmZXZlbnREYXRhKSkKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVh
a1Byb2dyYW0oRE9NQnJlYWtwb2ludERlYnVnZ2VyRXZlbnQsIGV2ZW50RGF0YSk7CiAjZW5kaWYK
IH0KIApAQCAtMjEzMiw2ICsyMTMyLDE1IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
TW9kaWZ5RE9NQXR0ckltcGwoRWxlbWVudCogZWxlbWVudCkKIH0KIAogCit2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhtbEh0dHBSZXF1ZXN0SW1wbChjb25zdCBL
VVJMJiB1cmwpCit7CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgaWYgKG1f
ZGVidWdnZXJBZ2VudCkKKyAgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+d2lsbFNlbmRYSFIodXJs
LnN0cmluZygpKTsKKyNlbmRpZgorfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKaW5kZXggNjc1MjA0NC4uODNhNmJkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaApAQCAtMjAyLDYgKzIwMiw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCB3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkTW9kaWZ5
RE9NQXR0cihFbGVtZW50Kik7CiAKKyAgICBzdGF0aWMgdm9pZCBpbnN0cnVtZW50V2lsbFNlbmRY
bWxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiB1cmwpOworCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgZW51bSBXb3JrZXJBY3Rpb24geyBX
b3JrZXJDcmVhdGVkLCBXb3JrZXJEZXN0cm95ZWQgfTsKIApAQCAtMzMxLDcgKzMzMywxMCBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBkaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgY2Fs
bElkLCBjb25zdCBTdHJpbmcmIGpzb25SZXN1bHQpOwogCisgICAgc3RhdGljIEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yTm9kZShOb2RlKik7CisgICAgc3RhdGljIElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChEb2N1bWVu
dCogZG9jdW1lbnQpOworCiAgICAgdm9pZCB3aWxsSW5zZXJ0RE9NTm9kZUltcGwoTm9kZSogbm9k
ZSwgTm9kZSogcGFyZW50KTsKICAgICB2b2lkIGRpZEluc2VydERPTU5vZGVJbXBsKE5vZGUqKTsK
ICAgICB2b2lkIHdpbGxSZW1vdmVET01Ob2RlSW1wbChOb2RlKik7CkBAIC0zMzksNiArMzQ0LDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxNb2RpZnlET01BdHRySW1wbChFbGVtZW50Kik7CiAg
ICAgdm9pZCBkaWRNb2RpZnlET01BdHRySW1wbChFbGVtZW50Kik7CiAKKyAgICB2b2lkIGluc3Ry
dW1lbnRXaWxsU2VuZFhtbEh0dHBSZXF1ZXN0SW1wbChjb25zdCBLVVJMJiB1cmwpOworCiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ7CiAgICAgU3RyaW5nIGJyZWFrcG9pbnRzU2V0dGluZ0tleSgpOwpAQCAtNDUx
LDE4ICs0NTgsNDAgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTW9kaWZ5
RE9NQXR0cihFbGVtZW50KiBlbGVtZW50KQogI2VuZGlmCiB9CiAKLWlubGluZSBJbnNwZWN0b3JD
b250cm9sbGVyKiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0b3JDb250cm9sbGVyRm9yTm9k
ZShOb2RlKiBub2RlKQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppbnN0cnVt
ZW50V2lsbFNlbmRYbWxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFn
ZSogcGFnZSA9IG5vZGUtPmRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICBpZiAoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKSkgewotICAgICAgICAgICAgaWYgKGluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250
ZW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXI7Ci0gICAg
ICAgIH0KLSAgICB9CisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250
ZXh0KSkKKyAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+aW5zdHJ1bWVudFdpbGxTZW5kWG1s
SHR0cFJlcXVlc3RJbXBsKHVybCk7CiAjZW5kaWYKK30KKwogCi0gICAgcmV0dXJuIDA7Citpbmxp
bmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdG9yQ29u
dHJvbGxlckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKK3sKKyAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPmlzRG9jdW1lbnQoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1
bWVudChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKTsKK30KKworaW5saW5lIEluc3Bl
Y3RvckNvbnRyb2xsZXIqIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNvbnRyb2xsZXJG
b3JOb2RlKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXJGb3JE
b2N1bWVudChub2RlLT5kb2N1bWVudCgpKTsKK30KKworaW5saW5lIEluc3BlY3RvckNvbnRyb2xs
ZXIqIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChE
b2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUKGRvY3VtZW50KTsKKyAgICBQYWdlKiBw
YWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiAw
OworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVyKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5k
KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBpbnNwZWN0b3JDb250cm9sbGVyOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDM4NzViZTAuLmZlNjdkYWQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC02NCw3ICs2NCw4IEBAIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29uCiAgICAgLCBtX2Zyb250ZW5kKGZyb250ZW5kKQogICAgICwg
bV9wYXVzZWRTY3JpcHRTdGF0ZSgwKQogICAgICwgbV9icmVha3BvaW50c0xvYWRlZChmYWxzZSkK
LSAgICAsIG1fYnJlYWtQcm9ncmFtUmVhc29uKEluc3BlY3RvclZhbHVlOjpudWxsKCkpCisgICAg
LCBtX2JyZWFrUHJvZ3JhbVN0YXR1cyhJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpKQorICAgICwgbV9w
YXVzZU9uRXZlbnRNYXNrKDApCiB7CiB9CiAKQEAgLTEzNyw2ICsxMzgsMTkgQEAgdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNl
SUQsIHVuc2lnbmVkIGwKICAgICBzYXZlQnJlYWtwb2ludHMoKTsKIH0KIAordm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uRXZlbnQodW5zaWduZWQgZXZlbnRUeXBlLCBib29s
IHBhdXNlT25FdmVudCkKK3sKKyAgICBpZiAocGF1c2VPbkV2ZW50KQorICAgICAgICBtX3BhdXNl
T25FdmVudE1hc2sgfD0gKDEgPDwgZXZlbnRUeXBlKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGF1
c2VPbkV2ZW50TWFzayAmPSB+KDEgPDwgZXZlbnRUeXBlKTsKK30KKworYm9vbCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzaG91bGRQYXVzZU9uRXZlbnQodW5zaWduZWQgZXZlbnRUeXBlKQorewor
ICAgIHJldHVybiBtX3BhdXNlT25FdmVudE1hc2sgJiAoMSA8PCBldmVudFR5cGUpOworfQorCiB2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVkaXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5n
JiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sKiBzdWNjZXNzLCBTdHJp
bmcqIHJlc3VsdCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogbmV3Q2FsbEZyYW1lcykKIHsKICAg
ICBpZiAoKCpzdWNjZXNzID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmVkaXRTY3JpcHRT
b3VyY2Uoc291cmNlSUQsIG5ld0NvbnRlbnQsICpyZXN1bHQpKSkKQEAgLTE4Niw2ICsyMDAsNyBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyRm9yUGFnZU5hdmlnYXRpb24oKQog
ICAgIG1fc3RpY2t5QnJlYWtwb2ludHMuY2xlYXIoKTsKICAgICBtX2JyZWFrcG9pbnRzTWFwcGlu
Zy5jbGVhcigpOwogICAgIG1fYnJlYWtwb2ludHNMb2FkZWQgPSBmYWxzZTsKKyAgICBtX3BhdXNl
T25FdmVudE1hc2sgPSAwOwogfQogCiBTdHJpbmcgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6bWQ1
QmFzZTE2KGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMjA1LDYgKzIyMCwxNiBAQCBTdHJpbmcg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6bWQ1QmFzZTE2KGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ICAgIHJldHVybiBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6d2lsbFNlbmRYSFIoY29uc3QgU3RyaW5nJiB1cmwp
Cit7CisgICAgaWYgKCFzaG91bGRQYXVzZU9uRXZlbnQoU2VuZFhIUkRlYnVnZ2VyRXZlbnQpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEg
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJ1
cmwiLCB1cmwpOworICAgIGJyZWFrUHJvZ3JhbShTZW5kWEhSRGVidWdnZXJFdmVudCwgZXZlbnRE
YXRhKTsKK30KKwogUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6Y3VycmVudENhbGxGcmFtZXMoKQogewogICAgIGlmICghbV9wYXVzZWRTY3JpcHRTdGF0
ZSkKQEAgLTI4OSwxMSArMzE0LDExIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZmFp
bGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nCiB2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkK
IHsKICAgICBBU1NFUlQoc2NyaXB0U3RhdGUgJiYgIW1fcGF1c2VkU2NyaXB0U3RhdGUpOwotICAg
IEFTU0VSVChtX2JyZWFrUHJvZ3JhbVJlYXNvbik7CisgICAgQVNTRVJUKG1fYnJlYWtQcm9ncmFt
U3RhdHVzKTsKICAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gc2NyaXB0U3RhdGU7CiAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gZGV0YWlscyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgZGV0YWlscy0+c2V0VmFsdWUoImNhbGxGcmFtZXMiLCBjdXJyZW50Q2FsbEZyYW1lcygp
KTsKLSAgICBkZXRhaWxzLT5zZXRWYWx1ZSgic3RhdHVzIiwgbV9icmVha1Byb2dyYW1SZWFzb24p
OworICAgIGRldGFpbHMtPnNldFZhbHVlKCJzdGF0dXMiLCBtX2JyZWFrUHJvZ3JhbVN0YXR1cyk7
CiAgICAgbV9mcm9udGVuZC0+cGF1c2VkU2NyaXB0KGRldGFpbHMpOwogfQogCkBAIC0zMDMsMTcg
KzMyOCwyMSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVlKCkKICAg
ICBtX2Zyb250ZW5kLT5yZXN1bWVkU2NyaXB0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6YnJlYWtQcm9ncmFtKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlYXNvbikK
K3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKERlYnVnZ2VyRXZlbnQg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBldmVudERhdGEpCiB7CisgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc3RhdHVzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKKyAgICBzdGF0dXMtPnNldE51bWJlcigiZXZlbnRUeXBlIiwgZXZlbnRUeXBlKTsKKyAgICBz
dGF0dXMtPnNldFZhbHVlKCJldmVudERhdGEiLCBldmVudERhdGEpOworCisgICAgbV9icmVha1By
b2dyYW1TdGF0dXMgPSBzdGF0dXM7CiAgICAgc19kZWJ1Z2dlckFnZW50T25CcmVha3BvaW50ID0g
dGhpczsKLSAgICBtX2JyZWFrUHJvZ3JhbVJlYXNvbiA9IHJlYXNvbjsKIAogICAgIFNjcmlwdERl
YnVnU2VydmVyOjpzaGFyZWQoKS5icmVha1Byb2dyYW0oKTsKICAgICBpZiAoIXNfZGVidWdnZXJB
Z2VudE9uQnJlYWtwb2ludCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc19kZWJ1Z2dlckFnZW50
T25CcmVha3BvaW50ID0gMDsKLSAgICBtX2JyZWFrUHJvZ3JhbVJlYXNvbiA9IEluc3BlY3RvclZh
bHVlOjpudWxsKCk7CisgICAgbV9icmVha1Byb2dyYW1TdGF0dXMgPSBJbnNwZWN0b3JWYWx1ZTo6
bnVsbCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNzliMGEwZS4uZDUxZmI0YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNDUsNiArNDUsMTEgQEAg
Y2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xh
c3MgSW5zcGVjdG9yVmFsdWU7CiAKK2VudW0gRGVidWdnZXJFdmVudCB7CisgICAgRE9NQnJlYWtw
b2ludERlYnVnZ2VyRXZlbnQgPSAwLAorICAgIFNlbmRYSFJEZWJ1Z2dlckV2ZW50Cit9OworCiBj
bGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIFNjcmlwdERlYnVnTGlzdGVuZXIs
IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5z
cGVjdG9yRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0
b3JGcm9udGVuZCopOwpAQCAtNTcsMTEgKzYyLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJy
ZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgYm9v
bCBlbmFibGVkLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCogc3VjY2VzcywgdW5zaWdu
ZWQgaW50KiBhY3R1YWxMaW5lTnVtYmVyKTsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoY29u
c3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlcik7CiAKKyAgICB2b2lkIHNl
dFBhdXNlT25FdmVudCh1bnNpZ25lZCBldmVudFR5cGUsIGJvb2wgcGF1c2VPbkV2ZW50KTsKKwog
ICAgIHZvaWQgZWRpdFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBT
dHJpbmcmIG5ld0NvbnRlbnQsIGJvb2wqIHN1Y2Nlc3MsIFN0cmluZyogcmVzdWx0LCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+KiBuZXdDYWxsRnJhbWVzKTsKICAgICB2b2lkIGdldFNjcmlwdFNvdXJj
ZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSk7CiAKICAgICB2
b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCBicmVha1Byb2dyYW0oUGFzc1JlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gcmVhc29uKTsKKyAgICB2b2lkIGJyZWFrUHJvZ3JhbShEZWJ1Z2dlckV2ZW50IGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhKTsKICAgICB2b2lkIHJl
c3VtZSgpOwogICAgIHZvaWQgc3RlcE92ZXJTdGF0ZW1lbnQoKTsKICAgICB2b2lkIHN0ZXBJbnRv
U3RhdGVtZW50KCk7CkBAIC03Myw3ICs4MCwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3Ry
aW5nIG1kNUJhc2UxNihjb25zdCBTdHJpbmcmIHN0cmluZyk7CiAKKyAgICB2b2lkIHdpbGxTZW5k
WEhSKGNvbnN0IFN0cmluZyYgdXJsKTsKKwogcHJpdmF0ZToKKwogICAgIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3RvckZyb250ZW5kKik7CiAKICAg
ICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBjdXJyZW50Q2FsbEZyYW1lcygpOwpAQCAtODYs
NiArOTYsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShTY3JpcHRTdGF0
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpOwogCisgICAgYm9vbCBzaG91bGRQ
YXVzZU9uRXZlbnQodW5zaWduZWQgZXZlbnRUeXBlKTsKKwogICAgIEluc3BlY3RvckNvbnRyb2xs
ZXIqIG1faW5zcGVjdG9yQ29udHJvbGxlcjsKICAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9mcm9u
dGVuZDsKICAgICBTY3JpcHRTdGF0ZSogbV9wYXVzZWRTY3JpcHRTdGF0ZTsKQEAgLTk1LDcgKzEw
Nyw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBtX2JyZWFrcG9p
bnRzTWFwcGluZzsKICAgICBib29sIG1fYnJlYWtwb2ludHNMb2FkZWQ7CiAgICAgc3RhdGljIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQqIHNfZGVidWdnZXJBZ2VudE9uQnJlYWtwb2ludDsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG1fYnJlYWtQcm9ncmFtUmVhc29uOworICAgIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gbV9icmVha1Byb2dyYW1TdGF0dXM7CisgICAgdWludDMyX3QgbV9wYXVz
ZU9uRXZlbnRNYXNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCmluZGV4IDg1MTg2MTgu
LjUyMmVmNzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3Bv
aW50TWFuYWdlci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2lu
dE1hbmFnZXIuanMKQEAgLTE5OSwzICsxOTksMzMgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQu
cHJvdG90eXBlID0gewogfQogCiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisKK1dlYkluc3BlY3Rvci5O
YXRpdmVCcmVha3BvaW50ID0gZnVuY3Rpb24odHlwZSwgZW5hYmxlZCkKK3sKKyAgICB0aGlzLl90
eXBlID0gdHlwZTsKKyAgICB0aGlzLl9lbmFibGVkID0gZW5hYmxlZDsKK30KKworV2ViSW5zcGVj
dG9yLk5hdGl2ZUJyZWFrcG9pbnQuVHlwZXMgPSB7CisgICAgRE9NQnJlYWtwb2ludDogMCwKKyAg
ICBTZW5kWEhSOiAxCit9OworCitXZWJJbnNwZWN0b3IuTmF0aXZlQnJlYWtwb2ludC5wcm90b3R5
cGUgPSB7CisgICAgZ2V0IGVuYWJsZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Vu
YWJsZWQ7CisgICAgfSwKKworICAgIHNldCBlbmFibGVkKGVuYWJsZWQpCisgICAgeworICAgICAg
ICBpZiAodGhpcy5fZW5hYmxlZCA9PT0gZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB0aGlzLl9lbmFibGVkID0gZW5hYmxlZDsKKyAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5zZXRQYXVzZU9uRXZlbnQodGhpcy5fdHlwZSwgdGhpcy5fZW5hYmxlZCk7CisgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJlbmFibGUtY2hhbmdlZCIpOworICAgIH0KK30K
KworV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFrcG9pbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGVi
YXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJh
clBhbmUuanMKaW5kZXggOTY4OGYzZS4uNDA1MjlhMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMKQEAgLTg1LDE2ICs4
NSwxNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7
CiAgICAgX2NvbnRleHRNZW51RXZlbnRGaXJlZDogZnVuY3Rpb24oYnJlYWtwb2ludEl0ZW0sIGV2
ZW50KQogICAgIHsKICAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5D
b250ZXh0TWVudSgpOwotICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUmVtb3ZlIEJyZWFrcG9pbnQiKSwgYnJlYWtwb2ludEl0ZW0ucmVtb3ZlLmJp
bmQoYnJlYWtwb2ludEl0ZW0pKTsKKyAgICAgICAgYnJlYWtwb2ludEl0ZW0ucG9wdWxhdGVDb250
ZXh0TWVudShjb250ZXh0TWVudSk7CiAgICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQpOwog
ICAgIH0KIH0KIAogV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZS5wcm90b3R5cGU7CiAKLVdlYklu
c3BlY3Rvci5CcmVha3BvaW50SXRlbSA9IGZ1bmN0aW9uKGJyZWFrcG9pbnQpCitXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludEl0ZW0gPSBmdW5jdGlvbihicmVha3BvaW50LCByZW1vdmFibGUsIGxhYmVs
KQogewogICAgIHRoaXMuX2JyZWFrcG9pbnQgPSBicmVha3BvaW50OworICAgIHRoaXMuX3JlbW92
YWJsZSA9IHJlbW92YWJsZTsKIAogICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsaSIpOwogICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCB0aGlzLl9icmVha3BvaW50Q2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CkBAIC0xMDYsOCAr
MTA3LDEzIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50SXRlbSA9IGZ1bmN0aW9uKGJyZWFrcG9p
bnQpCiAgICAgY2hlY2tib3hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
Y2hlY2tib3hDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLl9lbGVtZW50LmFw
cGVuZENoaWxkKGNoZWNrYm94RWxlbWVudCk7CiAKKyAgICBpZiAobGFiZWwpCisgICAgICAgIHRo
aXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobGFiZWwpKTsK
KwogICAgIHRoaXMuX2JyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcigiZW5hYmxlLWNoYW5nZWQi
LCB0aGlzLl9lbmFibGVDaGFuZ2VkLCB0aGlzKTsKLSAgICB0aGlzLl9icmVha3BvaW50LmFkZEV2
ZW50TGlzdGVuZXIoInJlbW92ZWQiLCB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycy5iaW5k
KHRoaXMsICJyZW1vdmVkIikpOworCisgICAgaWYgKHRoaXMuX3JlbW92YWJsZSkKKyAgICAgICAg
dGhpcy5fYnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKCJyZW1vdmVkIiwgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMuYmluZCh0aGlzLCAicmVtb3ZlZCIpKTsKIH0KIAogV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRJdGVtLnByb3RvdHlwZSA9IHsKQEAgLTExNiwxNiArMTIyLDE3IEBAIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50SXRlbS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9lbGVtZW50OwogICAgIH0sCiAKLSAgICByZW1vdmU6IGZ1bmN0aW9uKCkKKyAgICBwb3B1
bGF0ZUNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVudSkKICAgICB7Ci0gICAgICAgIHRo
aXMuX2JyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgIGlmICh0aGlzLl9yZW1vdmFibGUpCisg
ICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UmVtb3ZlIEJyZWFrcG9pbnQiKSwgdGhpcy5fYnJlYWtwb2ludC5yZW1vdmUuYmluZCh0aGlzLl9i
cmVha3BvaW50KSk7CiAgICAgfSwKIAogICAgIF9jaGVja2JveENsaWNrZWQ6IGZ1bmN0aW9uKGV2
ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludC5lbmFibGVkID0gIXRoaXMuX2Jy
ZWFrcG9pbnQuZW5hYmxlZDsKIAotICAgICAgICAvLyB3aXRob3V0IHRoaXMsIHdlJ2Qgc3dpdGNo
IHRvIHRoZSBzb3VyY2Ugb2YgdGhlIGNsaWNrZWQgYnJlYWtwb2ludAorICAgICAgICAvLyBCcmVh
a3BvaW50IGVsZW1lbnQgbWF5IGhhdmUgaXQncyBvd24gY2xpY2sgaGFuZGxlci4KICAgICAgICAg
ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgfSwKIApAQCAtMTMzLDYgKzE0MCwxMCBAQCBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludEl0ZW0ucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAg
dmFyIGNoZWNrYm94ID0gdGhpcy5fZWxlbWVudC5maXJzdENoaWxkOwogICAgICAgICBjaGVja2Jv
eC5jaGVja2VkID0gdGhpcy5fYnJlYWtwb2ludC5lbmFibGVkOworICAgIH0sCisKKyAgICBfYnJl
YWtwb2ludENsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CiAgICAgfQogfQogCkBAIC0xNDAsNyAr
MTUxLDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRJdGVtLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKIAogV2ViSW5zcGVjdG9yLkpTQnJlYWtw
b2ludEl0ZW0gPSBmdW5jdGlvbihicmVha3BvaW50KQogewotICAgIFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50SXRlbS5jYWxsKHRoaXMsIGJyZWFrcG9pbnQpOworICAgIFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50SXRlbS5jYWxsKHRoaXMsIGJyZWFrcG9pbnQsIHRydWUpOwogCiAgICAgdmFyIGRpc3Bs
YXlOYW1lID0gdGhpcy5fYnJlYWtwb2ludC51cmwgPyBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVG
b3JVUkwodGhpcy5fYnJlYWtwb2ludC51cmwpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIocHJv
Z3JhbSkiKTsKICAgICB2YXIgbGFiZWxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
ZGlzcGxheU5hbWUgKyAiOiIgKyB0aGlzLl9icmVha3BvaW50LmxpbmUpOwpAQCAtMTgwLDcgKzE5
MSw3IEBAIFdlYkluc3BlY3Rvci5KU0JyZWFrcG9pbnRJdGVtLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEl0ZW0uCiAKIFdlYkluc3BlY3Rvci5ET01CcmVha3Bv
aW50SXRlbSA9IGZ1bmN0aW9uKGJyZWFrcG9pbnQpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRJdGVtLmNhbGwodGhpcywgYnJlYWtwb2ludCk7CisgICAgV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRJdGVtLmNhbGwodGhpcywgYnJlYWtwb2ludCwgdHJ1ZSk7CiAKICAgICB2YXIgbGluayA9
IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMubGlua2lmeU5vZGVCeUlkKHRoaXMuX2JyZWFr
cG9pbnQubm9kZUlkKTsKICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGxpbmspOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5l
LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpz
CmluZGV4IDkxZjM1YTYuLjkyZjVlZWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMKQEAgLTgyLDM2ICs4Miw0MSBAQCBXZWJJ
bnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICB9CiAg
ICAgfSwKIAotICAgIHVwZGF0ZVN0YXR1czogIGZ1bmN0aW9uKHN0YXR1cykKKyAgICB1cGRhdGVT
dGF0dXM6ICBmdW5jdGlvbihzdGF0dXNPYmplY3QpCiAgICAgewogICAgICAgICB2YXIgc3RhdHVz
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBzdGF0dXNF
bGVtZW50LmNsYXNzTmFtZSA9ICJpbmZvIjsKIAotICAgICAgICB2YXIgYnJlYWtwb2ludFR5cGUg
PSBzdGF0dXMuYnJlYWtwb2ludC50eXBlOwotICAgICAgICB2YXIgc3Vic3RpdHV0aW9ucyA9IFtX
ZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5sYWJlbEZvclR5cGUoYnJlYWtwb2ludFR5cGUpLCBX
ZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmxpbmtpZnlOb2RlQnlJZChzdGF0dXMuYnJlYWtw
b2ludC5ub2RlSWQpXTsKLSAgICAgICAgdmFyIGZvcm1hdHRlcnMgPSB7Ci0gICAgICAgICAgICBz
OiBmdW5jdGlvbihzdWJzdGl0dXRpb24pCisgICAgICAgIHZhciBkYXRhID0gc3RhdHVzT2JqZWN0
LmV2ZW50RGF0YTsKKyAgICAgICAgaWYgKHN0YXR1c09iamVjdC5ldmVudFR5cGUgPT09IFdlYklu
c3BlY3Rvci5OYXRpdmVCcmVha3BvaW50LlR5cGVzLkRPTUJyZWFrcG9pbnQpIHsKKyAgICAgICAg
ICAgIHZhciBicmVha3BvaW50ID0gZGF0YS5icmVha3BvaW50OworICAgICAgICAgICAgdmFyIHN1
YnN0aXR1dGlvbnMgPSBbV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQubGFiZWxGb3JUeXBlKGJy
ZWFrcG9pbnQudHlwZSksIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMubGlua2lmeU5vZGVC
eUlkKGJyZWFrcG9pbnQubm9kZUlkKV07CisgICAgICAgICAgICB2YXIgZm9ybWF0dGVycyA9IHsK
KyAgICAgICAgICAgICAgICBzOiBmdW5jdGlvbihzdWJzdGl0dXRpb24pCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3Vic3RpdHV0aW9uOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBmdW5jdGlvbiBhcHBlbmQoYSwg
YikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Vic3RpdHV0aW9uOwor
ICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYiA9PT0gInN0cmluZyIpCisgICAgICAgICAgICAg
ICAgICAgIGIgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShiKTsKKyAgICAgICAgICAgICAgICBz
dGF0dXNFbGVtZW50LmFwcGVuZENoaWxkKGIpOwogICAgICAgICAgICAgfQotICAgICAgICB9Owot
ICAgICAgICBmdW5jdGlvbiBhcHBlbmQoYSwgYikKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KHR5cGVvZiBiID09PSAic3RyaW5nIikKLSAgICAgICAgICAgICAgICBiID0gZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoYik7Ci0gICAgICAgICAgICBzdGF0dXNFbGVtZW50LmFwcGVuZENoaWxkKGIp
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChicmVha3BvaW50VHlwZSA9PT0gV2ViSW5zcGVjdG9y
LkRPTUJyZWFrcG9pbnQuVHlwZXMuU3VidHJlZU1vZGlmaWVkKSB7Ci0gICAgICAgICAgICB2YXIg
dGFyZ2V0Tm9kZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMubGlua2lmeU5vZGVCeUlk
KHN0YXR1cy50YXJnZXROb2RlSWQpOwotICAgICAgICAgICAgaWYgKHN0YXR1cy5pbnNlcnRpb24p
IHsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLnRhcmdldE5vZGVJZCAhPT0gc3RhdHVzLmJy
ZWFrcG9pbnQubm9kZUlkKQotICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0
TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMsIGJlY2F1
c2UgYSBuZXcgY2hpbGQgd2FzIGFkZGVkIHRvIGl0cyBkZXNjZW5kYW50ICVzLiIsIHN1YnN0aXR1
dGlvbnMuY29uY2F0KHRhcmdldE5vZGUpLCBmb3JtYXR0ZXJzLCAiIiwgYXBwZW5kKTsKLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3JtYXRM
b2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAlcywgYmVjYXVz
ZSBhIG5ldyBjaGlsZCB3YXMgYWRkZWQgdG8gdGhhdCBub2RlLiIsIHN1YnN0aXR1dGlvbnMsIGZv
cm1hdHRlcnMsICIiLCBhcHBlbmQpOworICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuVHlwZXMuU3VidHJlZU1vZGlmaWVkKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIHRhcmdldE5vZGUgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1l
bnRzLmxpbmtpZnlOb2RlQnlJZChkYXRhLnRhcmdldE5vZGVJZCk7CisgICAgICAgICAgICAgICAg
aWYgKGRhdGEuaW5zZXJ0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnRhcmdl
dE5vZGVJZCAhPT0gYnJlYWtwb2ludC5ub2RlSWQpCisgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJlYWtwb2lu
dCBzZXQgb24gJXMsIGJlY2F1c2UgYSBuZXcgY2hpbGQgd2FzIGFkZGVkIHRvIGl0cyBkZXNjZW5k
YW50ICVzLiIsIHN1YnN0aXR1dGlvbnMuY29uY2F0KHRhcmdldE5vZGUpLCBmb3JtYXR0ZXJzLCAi
IiwgYXBwZW5kKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLmZvcm1hdExvY2FsaXplZCgiUGF1c2VkIG9uIGEgXCIlc1wiIGJy
ZWFrcG9pbnQgc2V0IG9uICVzLCBiZWNhdXNlIGEgbmV3IGNoaWxkIHdhcyBhZGRlZCB0byB0aGF0
IG5vZGUuIiwgc3Vic3RpdHV0aW9ucywgZm9ybWF0dGVycywgIiIsIGFwcGVuZCk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3JtYXRM
b2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAlcywgYmVjYXVz
ZSBpdHMgZGVzY2VuZGFudCAlcyB3YXMgcmVtb3ZlZC4iLCBzdWJzdGl0dXRpb25zLmNvbmNhdCh0
YXJnZXROb2RlKSwgZm9ybWF0dGVycywgIiIsIGFwcGVuZCk7CiAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24g
YSBcIiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMsIGJlY2F1c2UgaXRzIGRlc2NlbmRhbnQgJXMg
d2FzIHJlbW92ZWQuIiwgc3Vic3RpdHV0aW9ucy5jb25jYXQodGFyZ2V0Tm9kZSksIGZvcm1hdHRl
cnMsICIiLCBhcHBlbmQpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAl
cy4iLCBzdWJzdGl0dXRpb25zLCBmb3JtYXR0ZXJzLCAiIiwgYXBwZW5kKTsKKyAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJl
YWtwb2ludCBzZXQgb24gJXMuIiwgc3Vic3RpdHV0aW9ucywgZm9ybWF0dGVycywgIiIsIGFwcGVu
ZCk7CisgICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzT2JqZWN0LmV2ZW50VHlwZSA9PT0gV2ViSW5z
cGVjdG9yLk5hdGl2ZUJyZWFrcG9pbnQuVHlwZXMuU2VuZFhIUikKKyAgICAgICAgICAgIHN0YXR1
c0VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJQYXVzZWQgb24gWEhSLiIpKSk7CisKICAgICAgICAgdGhpcy5ib2R5RWxlbWVu
dC5hcHBlbmRDaGlsZChzdGF0dXNFbGVtZW50KTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IDcyYjIzZTEuLjcwMDc0ZWQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC03NCw3
ICs3NCw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRo
aXMuc2lkZWJhclBhbmVzLnN0eWxlcyA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBh
bmUodGhpcy5zaWRlYmFyUGFuZXMuY29tcHV0ZWRTdHlsZSk7CiAgICAgdGhpcy5zaWRlYmFyUGFu
ZXMubWV0cmljcyA9IG5ldyBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lKCk7CiAgICAg
dGhpcy5zaWRlYmFyUGFuZXMucHJvcGVydGllcyA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvcGVydGll
c1NpZGViYXJQYW5lKCk7Ci0gICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFrcG9pbnRzRW5hYmxl
ZCkKKyAgICBpZiAoUHJlZmVyZW5jZXMubmF0aXZlSW5zdHJ1bWVudGF0aW9uRW5hYmxlZCkKICAg
ICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtwb2ludHMgPSBXZWJJbnNwZWN0b3IuY3Jl
YXRlRE9NQnJlYWtwb2ludHNTaWRlYmFyUGFuZSgpOwogICAgIHRoaXMuc2lkZWJhclBhbmVzLmV2
ZW50TGlzdGVuZXJzID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5l
KCk7CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuY3VycmVudFF1ZXJ5OwogCi0gICAgICAg
IGlmIChQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0VuYWJsZWQpCisgICAgICAgIGlmIChQcmVm
ZXJlbmNlcy5uYXRpdmVJbnN0cnVtZW50YXRpb25FbmFibGVkKQogICAgICAgICAgICAgdGhpcy5z
aWRlYmFyUGFuZXMuZG9tQnJlYWtwb2ludHMucmVzZXQoKTsKICAgICB9LAogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCmluZGV4IGUy
NjEyMzQuLjNiZjE0NjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
bGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
bGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC03NTIsNyArNzUyLDcgQEAgV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBhcyBIVE1MIiksIHRoaXMuX2NvcHlI
VE1MLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRGVsZXRlIE5vZGUiKSwgdGhpcy5yZW1vdmUuYmluZCh0aGlzKSk7CiAK
LSAgICAgICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFrcG9pbnRzRW5hYmxlZCkgeworICAgICAg
ICBpZiAoUHJlZmVyZW5jZXMubmF0aXZlSW5zdHJ1bWVudGF0aW9uRW5hYmxlZCkgewogICAgICAg
ICAgICAgLy8gQWRkIGRlYmJ1Z2luZy1yZWxhdGVkIGFjdGlvbnMKICAgICAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NjcmlwdHNQYW5lbC5qcwppbmRleCA3MTUzMzlkLi5kZGUwNjc5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTEzMyw4ICsxMzMsMTQgQEAgV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLnNpZGViYXJQYW5l
cy5jYWxsc3RhY2sgPSBuZXcgV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lKCk7CiAg
ICAgdGhpcy5zaWRlYmFyUGFuZXMuc2NvcGVjaGFpbiA9IG5ldyBXZWJJbnNwZWN0b3IuU2NvcGVD
aGFpblNpZGViYXJQYW5lKCk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuanNCcmVha3BvaW50cyA9
IFdlYkluc3BlY3Rvci5jcmVhdGVKU0JyZWFrcG9pbnRzU2lkZWJhclBhbmUoKTsKLSAgICBpZiAo
UHJlZmVyZW5jZXMuZG9tQnJlYWtwb2ludHNFbmFibGVkKQorICAgIGlmIChQcmVmZXJlbmNlcy5u
YXRpdmVJbnN0cnVtZW50YXRpb25FbmFibGVkKSB7CiAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVz
LmRvbUJyZWFrcG9pbnRzID0gV2ViSW5zcGVjdG9yLmNyZWF0ZURPTUJyZWFrcG9pbnRzU2lkZWJh
clBhbmUoKTsKKyAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtwb2ludHMuZXhwYW5k
ZWQgPSB0cnVlOworCisgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLm5hdGl2ZUJyZWFrcG9pbnRz
ID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50c1NpZGViYXJQYW5lKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiTmF0aXZlIEJyZWFrcG9pbnRzIikpOworICAgICAgICB0aGlzLnNpZGViYXJQYW5l
cy5uYXRpdmVCcmVha3BvaW50cy5leHBhbmRlZCA9IHRydWU7CisgICAgfQorCiAgICAgdGhpcy5z
aWRlYmFyUGFuZXMud29ya2VycyA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya2Vyc1NpZGViYXJQYW5l
KCk7CiAKICAgICBmb3IgKHZhciBwYW5lIGluIHRoaXMuc2lkZWJhclBhbmVzKQpAQCAtMTQ1LDgg
KzE1MSw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbigpCiAKICAgICB0
aGlzLnNpZGViYXJQYW5lcy5zY29wZWNoYWluLmV4cGFuZGVkID0gdHJ1ZTsKICAgICB0aGlzLnNp
ZGViYXJQYW5lcy5qc0JyZWFrcG9pbnRzLmV4cGFuZGVkID0gdHJ1ZTsKLSAgICBpZiAoUHJlZmVy
ZW5jZXMuZG9tQnJlYWtwb2ludHNFbmFibGVkKQotICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5k
b21CcmVha3BvaW50cy5leHBhbmRlZCA9IHRydWU7CiAKICAgICB2YXIgcGFuZWxFbmFibGVySGVh
ZGluZyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiWW91IG5lZWQgdG8gZW5hYmxlIGRlYnVnZ2lu
ZyBiZWZvcmUgeW91IGNhbiB1c2UgdGhlIFNjcmlwdHMgcGFuZWwuIik7CiAgICAgdmFyIHBhbmVs
RW5hYmxlckRpc2NsYWltZXIgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVuYWJsaW5nIGRlYnVn
Z2luZyB3aWxsIG1ha2Ugc2NyaXB0cyBydW4gc2xvd2VyLiIpOwpAQCAtNDY3LDggKzQ3MSwxMiBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5z
aWRlYmFyUGFuZXMud2F0Y2hFeHByZXNzaW9ucy5yZWZyZXNoRXhwcmVzc2lvbnMoKTsKICAgICAg
ICAgaWYgKCFwcmVzZXJ2ZUl0ZW1zKSB7CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5q
c0JyZWFrcG9pbnRzLnJlc2V0KCk7Ci0gICAgICAgICAgICBpZiAoUHJlZmVyZW5jZXMuZG9tQnJl
YWtwb2ludHNFbmFibGVkKQorICAgICAgICAgICAgaWYgKFByZWZlcmVuY2VzLm5hdGl2ZUluc3Ry
dW1lbnRhdGlvbkVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5k
b21CcmVha3BvaW50cy5yZXNldCgpOworICAgICAgICAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVz
Lm5hdGl2ZUJyZWFrcG9pbnRzLnJlc2V0KCk7CisgICAgICAgICAgICAgICAgdmFyIGJyZWFrcG9p
bnQgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFrcG9pbnQoV2ViSW5zcGVjdG9yLk5hdGl2
ZUJyZWFrcG9pbnQuVHlwZXMuU2VuZFhIUiwgZmFsc2UpOworICAgICAgICAgICAgICAgIHRoaXMu
c2lkZWJhclBhbmVzLm5hdGl2ZUJyZWFrcG9pbnRzLmFkZEJyZWFrcG9pbnQobmV3IFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50SXRlbShicmVha3BvaW50LCBmYWxzZSwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJYSFIiKSkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgdGhpcy5zaWRlYmFyUGFu
ZXMud29ya2Vycy5yZXNldCgpOwogICAgICAgICB9CiAgICAgfSwKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TZXR0aW5ncy5qcwppbmRleCA2M2YyNjQxLi5hNjc4NjExIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC00NCw3ICs0NCw3IEBAIHZhciBQcmVmZXJl
bmNlcyA9IHsKICAgICBwcm9maWxlckFsd2F5c0VuYWJsZWQ6IGZhbHNlLAogICAgIGF1ZGl0c1Bh
bmVsRW5hYmxlZDogdHJ1ZSwKICAgICBvbmxpbmVEZXRlY3Rpb25FbmFibGVkOiB0cnVlLAotICAg
IGRvbUJyZWFrcG9pbnRzRW5hYmxlZDogZmFsc2UsCisgICAgbmF0aXZlSW5zdHJ1bWVudGF0aW9u
RW5hYmxlZDogZmFsc2UsCiAgICAgcmVzb3VyY2VFeHBvcnRFbmFibGVkOiBmYWxzZQogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaAppbmRleCBhYzE4ODI4Li40ODFiNTFmIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
QEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKKyAgICBjb25zdCBLVVJM
JiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFN0cmluZyBzdGF0dXNUZXh0KEV4
Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBpbnQgc3RhdHVzKEV4Y2VwdGlvbkNvZGUmKSBjb25z
dDsKICAgICBTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1NmYyYzVh
Li42NzYyYzExIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wOS0yMSAgUGF2
ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQg
cGF1c2luZyBvbiBYSFIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ2MDg2CisKKyAgICAgICAgKiBzcmMvanMvRGV2VG9vbHMuanM6CisgICAgICAgICgp
OgorCiAyMDEwLTA5LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZU
b29scy5qcwppbmRleCAwYzcyNDFkLi5hNjZlMTc0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vc3JjL2pzL0RldlRvb2xzLmpzCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9v
bHMuanMKQEAgLTQ1LDcgKzQ1LDcgQEAgdmFyIGNvbnRleHQgPSB7fTsgIC8vIFVzZWQgYnkgV2Vi
Q29yZSdzIGluc3BlY3RvciByb3V0aW5lcy4KICAgICBQcmVmZXJlbmNlcy5wcm9maWxlckFsd2F5
c0VuYWJsZWQgPSB0cnVlOwogICAgIFByZWZlcmVuY2VzLmNhbkVkaXRTY3JpcHRTb3VyY2UgPSB0
cnVlOwogICAgIFByZWZlcmVuY2VzLm9ubGluZURldGVjdGlvbkVuYWJsZWQgPSBmYWxzZTsKLSAg
ICBQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOworICAgIFByZWZlcmVu
Y2VzLm5hdGl2ZUluc3RydW1lbnRhdGlvbkVuYWJsZWQgPSB0cnVlOwogfSkoKTsKIAogdmFyIGRl
dnRvb2xzID0gZGV2dG9vbHMgfHwge307Cg==
</data>
<flag name="review"
          id="57740"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68358</attachid>
            <date>2010-09-22 05:19:06 -0700</date>
            <delta_ts>2010-09-22 05:22:14 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>24399</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTJkYmRiNS4uNzc2MzFlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMC0wOS0yMiAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgcGF1c2luZyBv
biBYSFIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
MDg2CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0OjpzZW5kQ2FsbGJhY2sp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6c2V0TmF0aXZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVOYXRpdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2RlSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsUmVtb3ZlRE9NTm9kZUltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0
dHJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1l
bnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3Rv
ckNvbnRyb2xsZXJGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0pOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFj
a1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQ
YW5lLnByb3RvdHlwZS51cGRhdGVTdGF0dXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5yZXNldCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl9wb3B1
bGF0ZVRhZ0NvbnRleHRNZW51KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Njcmlw
dHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuZGVidWdnZXJQYXVzZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUucmVzZXQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6dXJsKToK
KwogMjAxMC0wOS0yMiAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCBjZmViNTAzLi4yMzU1ZDJhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3Vz
dG9tLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlY4WE1MSHR0cFJlcXVlc3QuaCIK
IAogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmxvYi5oIgogI2luY2x1ZGUgIlY4
RE9NRm9ybURhdGEuaCIKQEAgLTExMyw2ICsxMTQsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhYTUxIdHRwUmVxdWVzdDo6c2VuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAgICAgSU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVlc3Quc2VuZCgpIik7CiAgICAgWE1MSHR0
cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gVjhYTUxIdHRwUmVxdWVzdDo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CiAKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyOjppbnN0cnVtZW50V2lsbFNl
bmRYTUxIdHRwUmVxdWVzdCh4bWxIdHRwUmVxdWVzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCB4bWxIdHRwUmVxdWVzdC0+dXJsKCkpOworCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICB4bWxIdHRwUmVxdWVzdC0+c2VuZChl
Yyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCBhZTEzNmIyLi5mNGMzOWQ2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5pZGwKQEAgLTEzNyw2ICsxMzcsOSBAQCBtb2R1bGUgY29yZSB7CiAgICAg
ICAgIFtoYW5kbGVyPURlYnVnXSB2b2lkIGVkaXRTY3JpcHRTb3VyY2UoaW4gU3RyaW5nIHNvdXJj
ZUlELCBpbiBTdHJpbmcgbmV3Q29udGVudCwgb3V0IGJvb2xlYW4gc3VjY2Vzcywgb3V0IFN0cmlu
ZyByZXN1bHQsIG91dCBWYWx1ZSBuZXdDYWxsRnJhbWVzKTsKICAgICAgICAgW2hhbmRsZXI9RGVi
dWddIHZvaWQgZ2V0U2NyaXB0U291cmNlKGluIFN0cmluZyBzb3VyY2VJRCwgb3V0IFN0cmluZyBz
Y3JpcHRTb3VyY2UpOwogCisgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgc2V0TmF0
aXZlQnJlYWtwb2ludChpbiB1bnNpZ25lZCBpbnQgdHlwZSwgaW4gT2JqZWN0IGJyZWFrcG9pbnQs
IG91dCB1bnNpZ25lZCBpbnQgYnJlYWtwb2ludElkKTsKKyAgICAgICAgW2hhbmRsZXI9Q29udHJv
bGxlcl0gdm9pZCByZW1vdmVOYXRpdmVCcmVha3BvaW50KGluIHVuc2lnbmVkIGludCBicmVha3Bv
aW50SWQpOworCiAgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgZW5hYmxlUHJvZmls
ZXIoaW4gYm9vbGVhbiBhbHdheXMpOwogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lk
IGRpc2FibGVQcm9maWxlcihpbiBib29sZWFuIGFsd2F5cyk7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNWY4ZjE5MC4uYjAwOTc3NSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTE3NCw2ICsxNzQsNyBAQCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3Bl
Y3RvckNsaWVudCogY2xpZW50KQogICAgICwgbV9pbmplY3RlZFNjcmlwdEhvc3QoSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpjcmVhdGUodGhpcykpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CiAgICAgLCBtX2F0dGFjaERlYnVnZ2VyV2hlblNob3duKGZhbHNlKQorICAgICwgbV9sYXN0QnJl
YWtwb2ludElkKDApCiAgICAgLCBtX3Byb2ZpbGVyQWdlbnQoSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dDo6Y3JlYXRlKHRoaXMpKQogI2VuZGlmCiB7CkBAIC0xNjcyLDYgKzE2NzMsMjMgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpyZXN1bWUoKQogICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPnJl
c3VtZSgpOwogfQogCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldE5hdGl2ZUJyZWFrcG9p
bnQodW5zaWduZWQgaW50IHR5cGUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3Bv
aW50LCB1bnNpZ25lZCBpbnQqIGJyZWFrcG9pbnRJZCkKK3sKKyAgICAqYnJlYWtwb2ludElkID0g
MDsKKyAgICBpZiAodHlwZSA9PSBYSFJTZW5kUmVjb3JkVHlwZSkgeworICAgICAgICBTdHJpbmcg
dXJsOworICAgICAgICBpZiAoIWJyZWFrcG9pbnQtPmdldFN0cmluZygidXJsIiwgJnVybCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICpicmVha3BvaW50SWQgPSArK21fbGFzdEJyZWFr
cG9pbnRJZDsKKyAgICAgICAgbV9YSFJCcmVha3BvaW50cy5zZXQoKmJyZWFrcG9pbnRJZCwgdXJs
KTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVtb3ZlTmF0aXZlQnJl
YWtwb2ludCh1bnNpZ25lZCBpbnQgYnJlYWtwb2ludElkKQoreworICAgIG1fWEhSQnJlYWtwb2lu
dHMucmVtb3ZlKGJyZWFrcG9pbnRJZCk7Cit9CisKICNlbmRpZgogCiB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0
cmluZyYgc2NyaXB0KQpAQCAtMjA4NSw5ICsyMTAzLDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjp3aWxsSW5zZXJ0RE9NTm9kZUltcGwoTm9kZSogbm9kZSwgTm9kZSogcGFyZW50KQogI2lm
IEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmICghbV9kZWJ1Z2dlckFnZW50IHx8
ICFtX2RvbUFnZW50KQogICAgICAgICByZXR1cm47Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gZGV0YWlsczsKLSAgICBpZiAobV9kb21BZ2VudC0+c2hvdWxkQnJlYWtPbk5vZGVJbnNl
cnRpb24obm9kZSwgcGFyZW50LCAmZGV0YWlscykpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+
YnJlYWtQcm9ncmFtKGRldGFpbHMpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGV2
ZW50RGF0YTsKKyAgICBpZiAobV9kb21BZ2VudC0+c2hvdWxkQnJlYWtPbk5vZGVJbnNlcnRpb24o
bm9kZSwgcGFyZW50LCAmZXZlbnREYXRhKSkKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVh
a1Byb2dyYW0oRE9NQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEpOwogI2Vu
ZGlmCiB9CiAKQEAgLTIxMDIsOSArMjEyMCw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
d2lsbFJlbW92ZURPTU5vZGVJbXBsKE5vZGUqIG5vZGUpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpCiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQgfHwgIW1fZG9tQWdlbnQpCiAgICAg
ICAgIHJldHVybjsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBkZXRhaWxzOwotICAg
IGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZVJlbW92YWwobm9kZSwgJmRldGFpbHMp
KQotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShkZXRhaWxzKTsKKyAgICBQ
YXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBldmVudERhdGE7CisgICAgaWYgKG1fZG9tQWdlbnQt
PnNob3VsZEJyZWFrT25Ob2RlUmVtb3ZhbChub2RlLCAmZXZlbnREYXRhKSkKKyAgICAgICAgbV9k
ZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oRE9NQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBl
LCBldmVudERhdGEpOwogI2VuZGlmCiB9CiAKQEAgLTIxMTksOSArMjEzNyw5IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqIGVsZW1lbnQp
CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdl
bnQgfHwgIW1fZG9tQWdlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiBkZXRhaWxzOwotICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uQXR0
cmlidXRlTW9kaWZpY2F0aW9uKGVsZW1lbnQsICZkZXRhaWxzKSkKLSAgICAgICAgbV9kZWJ1Z2dl
ckFnZW50LT5icmVha1Byb2dyYW0oZGV0YWlscyk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gZXZlbnREYXRhOworICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uQXR0cmli
dXRlTW9kaWZpY2F0aW9uKGVsZW1lbnQsICZldmVudERhdGEpKQorICAgICAgICBtX2RlYnVnZ2Vy
QWdlbnQtPmJyZWFrUHJvZ3JhbShET01CcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50
RGF0YSk7CiAjZW5kaWYKIH0KIApAQCAtMjEzMiw2ICsyMTUwLDIxIEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlkTW9kaWZ5RE9NQXR0ckltcGwoRWxlbWVudCogZWxlbWVudCkKIH0KIAog
Cit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1
ZXN0SW1wbChjb25zdCBLVVJMJiB1cmwpCit7CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCisgICAgaWYgKG1fZGVidWdnZXJBZ2VudCkgeworICAgICAgICBpZiAoIW1fWEhSQnJlYWtw
b2ludHMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgICAg
ICBldmVudERhdGEtPnNldE51bWJlcigicmVjb3JkVHlwZSIsIFhIUlNlbmRSZWNvcmRUeXBlKTsK
KyAgICAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoInVybCIsIHVybCk7CisgICAgICAgIG1fZGVi
dWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKE5hdGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlw
ZSwgZXZlbnREYXRhKTsKKyAgICB9CisjZW5kaWYKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oCmluZGV4IDY3NTIwNDQuLmY2MzVkYWEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTIwMiw2ICsyMDIsOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lk
IGRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCopOwogCisgICAgc3RhdGljIHZvaWQgaW5zdHJ1bWVu
dFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtV
UkwmKTsKKwogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGVudW0gV29ya2VyQWN0aW9uIHsgV29y
a2VyQ3JlYXRlZCwgV29ya2VyRGVzdHJveWVkIH07CiAKQEAgLTI2NCw2ICsyNjYsMTAgQEAgcHVi
bGljOgogICAgIGJvb2wgZGVidWdnZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dl
ckFnZW50OyB9CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVidWdnZXJBZ2VudC5nZXQoKTsgfQogICAgIHZvaWQgcmVzdW1lKCk7
CisKKyAgICB2b2lkIHNldE5hdGl2ZUJyZWFrcG9pbnQodW5zaWduZWQgaW50IHR5cGUsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50LCB1bnNpZ25lZCBpbnQqIGJyZWFrcG9p
bnRJZCk7CisgICAgdm9pZCByZW1vdmVOYXRpdmVCcmVha3BvaW50KHVuc2lnbmVkIGludCBicmVh
a3BvaW50SWQpOworCiAjZW5kaWYKIAogICAgIHZvaWQgZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVu
ZChsb25nIHRlc3RDYWxsSWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKQEAgLTMzMSw3ICszMzcs
MTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChs
b25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBqc29uUmVzdWx0KTsKIAorICAgIHN0YXRpYyBJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KTsKICAgICBzdGF0aWMgSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvck5vZGUoTm9kZSopOworICAgIHN0
YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KTsKKwogICAgIHZvaWQgd2lsbEluc2VydERPTU5vZGVJbXBsKE5v
ZGUqIG5vZGUsIE5vZGUqIHBhcmVudCk7CiAgICAgdm9pZCBkaWRJbnNlcnRET01Ob2RlSW1wbChO
b2RlKik7CiAgICAgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZUltcGwoTm9kZSopOwpAQCAtMzM5LDYg
KzM0OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0ckltcGwoRWxlbWVu
dCopOwogICAgIHZvaWQgZGlkTW9kaWZ5RE9NQXR0ckltcGwoRWxlbWVudCopOwogCisgICAgdm9p
ZCBpbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoY29uc3QgS1VSTCYpOworCiAj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ7CiAgICAgU3RyaW5nIGJyZWFrcG9pbnRzU2V0dGluZ0tleSgpOwpAQCAt
NDAwLDYgKzQxMSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2F0dGFjaERlYnVnZ2VyV2hlblNo
b3duOwogICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBtX2RlYnVnZ2VyQWdlbnQ7
CiAKKyAgICBIYXNoTWFwPHVuc2lnbmVkIGludCwgU3RyaW5nPiBtX1hIUkJyZWFrcG9pbnRzOwor
ICAgIHVuc2lnbmVkIGludCBtX2xhc3RCcmVha3BvaW50SWQ7CisKICAgICBPd25QdHI8SW5zcGVj
dG9yUHJvZmlsZXJBZ2VudD4gbV9wcm9maWxlckFnZW50OwogI2VuZGlmCiAjaWYgRU5BQkxFKFdP
UktFUlMpCkBAIC00NTEsMTggKzQ2NSw0MCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQpCiAjZW5kaWYKIH0KIAotaW5s
aW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNv
bnRyb2xsZXJGb3JOb2RlKE5vZGUqIG5vZGUpCisKK2lubGluZSB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIGlmIChQYWdlKiBwYWdlID0gbm9kZS0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAg
ICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpKSB7Ci0gICAgICAgICAgICBpZiAoaW5zcGVjdG9yQ29udHJv
bGxlci0+aGFzRnJvbnRlbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ29u
dHJvbGxlcjsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRp
b25Db250ZXh0KGNvbnRleHQpKQorICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5pbnN0cnVt
ZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwodXJsKTsKICNlbmRpZgorfQogCi0gICAgcmV0
dXJuIDA7CisKK2lubGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0b3JDb250cm9sbGVy
OjppbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+
aXNEb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gaW5zcGVjdG9yQ29u
dHJvbGxlckZvckRvY3VtZW50KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCkpOworfQor
CitpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVj
dG9yQ29udHJvbGxlckZvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gaW5zcGVjdG9y
Q29udHJvbGxlckZvckRvY3VtZW50KG5vZGUtPmRvY3VtZW50KCkpOworfQorCitpbmxpbmUgSW5z
cGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdG9yQ29udHJvbGxl
ckZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQp
OworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAgICBpZiAoIWluc3BlY3RvckNv
bnRyb2xsZXIpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxl
ci0+aGFzRnJvbnRlbmQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGluc3BlY3Rv
ckNvbnRyb2xsZXI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMzg3NWJlMC4uOTI3NTk2MSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTY0
LDcgKzY0LDYgQEAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb24KICAgICAsIG1fZnJvbnRlbmQoZnJv
bnRlbmQpCiAgICAgLCBtX3BhdXNlZFNjcmlwdFN0YXRlKDApCiAgICAgLCBtX2JyZWFrcG9pbnRz
TG9hZGVkKGZhbHNlKQotICAgICwgbV9icmVha1Byb2dyYW1SZWFzb24oSW5zcGVjdG9yVmFsdWU6
Om51bGwoKSkKIHsKIH0KIApAQCAtMjg5LDEyICsyODgsMTMgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoU2NyaXB0U3RhdGUq
IHNjcmlwdFN0YXRlKQogewogICAgIEFTU0VSVChzY3JpcHRTdGF0ZSAmJiAhbV9wYXVzZWRTY3Jp
cHRTdGF0ZSk7Ci0gICAgQVNTRVJUKG1fYnJlYWtQcm9ncmFtUmVhc29uKTsKICAgICBtX3BhdXNl
ZFNjcmlwdFN0YXRlID0gc2NyaXB0U3RhdGU7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
ZGV0YWlscyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZGV0YWlscy0+c2V0VmFs
dWUoImNhbGxGcmFtZXMiLCBjdXJyZW50Q2FsbEZyYW1lcygpKTsKLSAgICBkZXRhaWxzLT5zZXRW
YWx1ZSgic3RhdHVzIiwgbV9icmVha1Byb2dyYW1SZWFzb24pOwotICAgIG1fZnJvbnRlbmQtPnBh
dXNlZFNjcmlwdChkZXRhaWxzKTsKKworICAgIGlmICghbV9icmVha1Byb2dyYW1EZXRhaWxzKQor
ICAgICAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OworICAgIG1fYnJlYWtQcm9ncmFtRGV0YWlscy0+c2V0VmFsdWUoImNhbGxGcmFtZXMiLCBjdXJy
ZW50Q2FsbEZyYW1lcygpKTsKKworICAgIG1fZnJvbnRlbmQtPnBhdXNlZFNjcmlwdChtX2JyZWFr
UHJvZ3JhbURldGFpbHMpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENv
bnRpbnVlKCkKQEAgLTMwMywxNyArMzAzLDE5IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlkQ29udGludWUoKQogICAgIG1fZnJvbnRlbmQtPnJlc3VtZWRTY3JpcHQoKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0oUGFzc1JlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gcmVhc29uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1By
b2dyYW0oRGVidWdnZXJFdmVudFR5cGUgdHlwZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
ZGF0YSkKIHsKKyAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpOworICAgIG1fYnJlYWtQcm9ncmFtRGV0YWlscy0+c2V0TnVtYmVyKCJldmVudFR5cGUi
LCB0eXBlKTsKKyAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMtPnNldFZhbHVlKCJldmVudERhdGEi
LCBkYXRhKTsKICAgICBzX2RlYnVnZ2VyQWdlbnRPbkJyZWFrcG9pbnQgPSB0aGlzOwotICAgIG1f
YnJlYWtQcm9ncmFtUmVhc29uID0gcmVhc29uOwogCiAgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNo
YXJlZCgpLmJyZWFrUHJvZ3JhbSgpOwogICAgIGlmICghc19kZWJ1Z2dlckFnZW50T25CcmVha3Bv
aW50KQogICAgICAgICByZXR1cm47CiAKICAgICBzX2RlYnVnZ2VyQWdlbnRPbkJyZWFrcG9pbnQg
PSAwOwotICAgIG1fYnJlYWtQcm9ncmFtUmVhc29uID0gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsK
KyAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMgPSAwOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNzli
MGEwZS4uZjViYWFiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaApAQCAtNDMsOCArNDMsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5qZWN0
ZWRTY3JpcHRIb3N0OwogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIEluc3BlY3Rv
ckZyb250ZW5kOworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7
CiAKK2VudW0gRGVidWdnZXJFdmVudFR5cGUgeworICAgIERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2
ZW50VHlwZSwKKyAgICBOYXRpdmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUKK307CisKIGNs
YXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwg
cHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50PiBjcmVhdGUoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rv
ckZyb250ZW5kKik7CkBAIC02MSw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNjcmlw
dFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSk7CiAK
ICAgICB2b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCBicmVha1Byb2dyYW0oUGFzc1JlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gcmVhc29uKTsKKyAgICB2b2lkIGJyZWFrUHJvZ3JhbShEZWJ1Z2dlckV2ZW50
VHlwZSB0eXBlLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBkYXRhKTsKICAgICB2b2lkIHJl
c3VtZSgpOwogICAgIHZvaWQgc3RlcE92ZXJTdGF0ZW1lbnQoKTsKICAgICB2b2lkIHN0ZXBJbnRv
U3RhdGVtZW50KCk7CkBAIC05NSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3Ry
aW5nLCB1bnNpZ25lZD4gbV9icmVha3BvaW50c01hcHBpbmc7CiAgICAgYm9vbCBtX2JyZWFrcG9p
bnRzTG9hZGVkOwogICAgIHN0YXRpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBzX2RlYnVnZ2Vy
QWdlbnRPbkJyZWFrcG9pbnQ7Ci0gICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBtX2JyZWFrUHJv
Z3JhbVJlYXNvbjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX2JyZWFrUHJvZ3JhbURl
dGFpbHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggNmIzMzI0Yi4uNDEwZTE4OSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtNjksNyArNjksOCBAQCBl
bnVtIFRpbWVsaW5lUmVjb3JkVHlwZSB7CiAgICAgR0NFdmVudFRpbWVsaW5lUmVjb3JkVHlwZSA9
IDE3LAogICAgIE1hcmtET01Db250ZW50RXZlbnRUeXBlID0gMTgsCiAgICAgTWFya0xvYWRFdmVu
dFR5cGUgPSAxOSwKLSAgICBTY2hlZHVsZVJlc291cmNlUmVxdWVzdFRpbWVsaW5lUmVjb3JkVHlw
ZSA9IDIwCisgICAgU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RUaW1lbGluZVJlY29yZFR5cGUgPSAy
MCwKKyAgICBYSFJTZW5kUmVjb3JkVHlwZSA9IDIxCiB9OwogCiBjbGFzcyBJbnNwZWN0b3JUaW1l
bGluZUFnZW50IDogU2NyaXB0R0NFdmVudExpc3RlbmVyLCBwdWJsaWMgTm9uY29weWFibGUgewpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQ
YW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5l
LmpzCmluZGV4IDkxZjM1YTYuLjJjNDViMTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMKQEAgLTgyLDEzICs4MiwxMyBAQCBX
ZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICB9
CiAgICAgfSwKIAotICAgIHVwZGF0ZVN0YXR1czogIGZ1bmN0aW9uKHN0YXR1cykKKyAgICB1cGRh
dGVTdGF0dXM6ICBmdW5jdGlvbihldmVudFR5cGUsIGV2ZW50RGF0YSkKICAgICB7CiAgICAgICAg
IHZhciBzdGF0dXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAg
ICAgIHN0YXR1c0VsZW1lbnQuY2xhc3NOYW1lID0gImluZm8iOwogCi0gICAgICAgIHZhciBicmVh
a3BvaW50VHlwZSA9IHN0YXR1cy5icmVha3BvaW50LnR5cGU7Ci0gICAgICAgIHZhciBzdWJzdGl0
dXRpb25zID0gW1dlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LmxhYmVsRm9yVHlwZShicmVha3Bv
aW50VHlwZSksIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMubGlua2lmeU5vZGVCeUlkKHN0
YXR1cy5icmVha3BvaW50Lm5vZGVJZCldOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50
RGF0YS5icmVha3BvaW50OworICAgICAgICB2YXIgc3Vic3RpdHV0aW9ucyA9IFtXZWJJbnNwZWN0
b3IuRE9NQnJlYWtwb2ludC5sYWJlbEZvclR5cGUoYnJlYWtwb2ludC50eXBlKSwgV2ViSW5zcGVj
dG9yLnBhbmVscy5lbGVtZW50cy5saW5raWZ5Tm9kZUJ5SWQoYnJlYWtwb2ludC5ub2RlSWQpXTsK
ICAgICAgICAgdmFyIGZvcm1hdHRlcnMgPSB7CiAgICAgICAgICAgICBzOiBmdW5jdGlvbihzdWJz
dGl0dXRpb24pCiAgICAgICAgICAgICB7CkBAIC0xMDEsMTAgKzEwMSwxMCBAQCBXZWJJbnNwZWN0
b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGIg
PSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShiKTsKICAgICAgICAgICAgIHN0YXR1c0VsZW1lbnQu
YXBwZW5kQ2hpbGQoYik7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGJyZWFrcG9pbnRUeXBlID09
PSBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5TdWJ0cmVlTW9kaWZpZWQpIHsKLSAg
ICAgICAgICAgIHZhciB0YXJnZXROb2RlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5s
aW5raWZ5Tm9kZUJ5SWQoc3RhdHVzLnRhcmdldE5vZGVJZCk7Ci0gICAgICAgICAgICBpZiAoc3Rh
dHVzLmluc2VydGlvbikgewotICAgICAgICAgICAgICAgIGlmIChzdGF0dXMudGFyZ2V0Tm9kZUlk
ICE9PSBzdGF0dXMuYnJlYWtwb2ludC5ub2RlSWQpCisgICAgICAgIGlmIChicmVha3BvaW50LnR5
cGUgPT09IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzLlN1YnRyZWVNb2RpZmllZCkg
eworICAgICAgICAgICAgdmFyIHRhcmdldE5vZGUgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1l
bnRzLmxpbmtpZnlOb2RlQnlJZChldmVudERhdGEudGFyZ2V0Tm9kZUlkKTsKKyAgICAgICAgICAg
IGlmIChldmVudERhdGEuaW5zZXJ0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50RGF0
YS50YXJnZXROb2RlSWQgIT09IGJyZWFrcG9pbnQubm9kZUlkKQogICAgICAgICAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJlYWtw
b2ludCBzZXQgb24gJXMsIGJlY2F1c2UgYSBuZXcgY2hpbGQgd2FzIGFkZGVkIHRvIGl0cyBkZXNj
ZW5kYW50ICVzLiIsIHN1YnN0aXR1dGlvbnMuY29uY2F0KHRhcmdldE5vZGUpLCBmb3JtYXR0ZXJz
LCAiIiwgYXBwZW5kKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVha3Bv
aW50IHNldCBvbiAlcywgYmVjYXVzZSBhIG5ldyBjaGlsZCB3YXMgYWRkZWQgdG8gdGhhdCBub2Rl
LiIsIHN1YnN0aXR1dGlvbnMsIGZvcm1hdHRlcnMsICIiLCBhcHBlbmQpOwpAQCAtMTEyLDYgKzEx
Miw3IEBAIFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZvcm1hdExvY2FsaXplZCgiUGF1c2VkIG9uIGEg
XCIlc1wiIGJyZWFrcG9pbnQgc2V0IG9uICVzLCBiZWNhdXNlIGl0cyBkZXNjZW5kYW50ICVzIHdh
cyByZW1vdmVkLiIsIHN1YnN0aXR1dGlvbnMuY29uY2F0KHRhcmdldE5vZGUpLCBmb3JtYXR0ZXJz
LCAiIiwgYXBwZW5kKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Zm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMu
Iiwgc3Vic3RpdHV0aW9ucywgZm9ybWF0dGVycywgIiIsIGFwcGVuZCk7CisKICAgICAgICAgdGhp
cy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXNFbGVtZW50KTsKICAgICB9LAogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IDcyYjIzZTEu
LjcwMDc0ZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50
c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVs
LmpzCkBAIC03NCw3ICs3NCw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsID0gZnVuY3Rp
b24oKQogICAgIHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlcyA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUodGhpcy5zaWRlYmFyUGFuZXMuY29tcHV0ZWRTdHlsZSk7CiAgICAgdGhp
cy5zaWRlYmFyUGFuZXMubWV0cmljcyA9IG5ldyBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQ
YW5lKCk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMucHJvcGVydGllcyA9IG5ldyBXZWJJbnNwZWN0
b3IuUHJvcGVydGllc1NpZGViYXJQYW5lKCk7Ci0gICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFr
cG9pbnRzRW5hYmxlZCkKKyAgICBpZiAoUHJlZmVyZW5jZXMubmF0aXZlSW5zdHJ1bWVudGF0aW9u
RW5hYmxlZCkKICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtwb2ludHMgPSBXZWJJ
bnNwZWN0b3IuY3JlYXRlRE9NQnJlYWtwb2ludHNTaWRlYmFyUGFuZSgpOwogICAgIHRoaXMuc2lk
ZWJhclBhbmVzLmV2ZW50TGlzdGVuZXJzID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVy
c1NpZGViYXJQYW5lKCk7CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVu
dHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuY3VycmVudFF1ZXJ5
OwogCi0gICAgICAgIGlmIChQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0VuYWJsZWQpCisgICAg
ICAgIGlmIChQcmVmZXJlbmNlcy5uYXRpdmVJbnN0cnVtZW50YXRpb25FbmFibGVkKQogICAgICAg
ICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtwb2ludHMucmVzZXQoKTsKICAgICB9LAog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5l
LmpzCmluZGV4IGUyNjEyMzQuLjNiZjE0NjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC03NTIsNyArNzUyLDcgQEAgV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBhcyBIVE1MIiks
IHRoaXMuX2NvcHlIVE1MLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJ
dGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIE5vZGUiKSwgdGhpcy5yZW1vdmUuYmlu
ZCh0aGlzKSk7CiAKLSAgICAgICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFrcG9pbnRzRW5hYmxl
ZCkgeworICAgICAgICBpZiAoUHJlZmVyZW5jZXMubmF0aXZlSW5zdHJ1bWVudGF0aW9uRW5hYmxl
ZCkgewogICAgICAgICAgICAgLy8gQWRkIGRlYmJ1Z2luZy1yZWxhdGVkIGFjdGlvbnMKICAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCA3MTUzMzlkLi4yOWQ4OWFiIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTEzMyw4ICsx
MzMsMTEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlz
LnNpZGViYXJQYW5lcy5jYWxsc3RhY2sgPSBuZXcgV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGVi
YXJQYW5lKCk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuc2NvcGVjaGFpbiA9IG5ldyBXZWJJbnNw
ZWN0b3IuU2NvcGVDaGFpblNpZGViYXJQYW5lKCk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuanNC
cmVha3BvaW50cyA9IFdlYkluc3BlY3Rvci5jcmVhdGVKU0JyZWFrcG9pbnRzU2lkZWJhclBhbmUo
KTsKLSAgICBpZiAoUHJlZmVyZW5jZXMuZG9tQnJlYWtwb2ludHNFbmFibGVkKQorICAgIGlmIChQ
cmVmZXJlbmNlcy5uYXRpdmVJbnN0cnVtZW50YXRpb25FbmFibGVkKSB7CiAgICAgICAgIHRoaXMu
c2lkZWJhclBhbmVzLmRvbUJyZWFrcG9pbnRzID0gV2ViSW5zcGVjdG9yLmNyZWF0ZURPTUJyZWFr
cG9pbnRzU2lkZWJhclBhbmUoKTsKKyAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtw
b2ludHMuZXhwYW5kZWQgPSB0cnVlOworICAgIH0KKwogICAgIHRoaXMuc2lkZWJhclBhbmVzLndv
cmtlcnMgPSBuZXcgV2ViSW5zcGVjdG9yLldvcmtlcnNTaWRlYmFyUGFuZSgpOwogCiAgICAgZm9y
ICh2YXIgcGFuZSBpbiB0aGlzLnNpZGViYXJQYW5lcykKQEAgLTE0NSw4ICsxNDgsNiBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5zaWRlYmFyUGFu
ZXMuc2NvcGVjaGFpbi5leHBhbmRlZCA9IHRydWU7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuanNC
cmVha3BvaW50cy5leHBhbmRlZCA9IHRydWU7Ci0gICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFr
cG9pbnRzRW5hYmxlZCkKLSAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtwb2ludHMu
ZXhwYW5kZWQgPSB0cnVlOwogCiAgICAgdmFyIHBhbmVsRW5hYmxlckhlYWRpbmcgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIllvdSBuZWVkIHRvIGVuYWJsZSBkZWJ1Z2dpbmcgYmVmb3JlIHlvdSBj
YW4gdXNlIHRoZSBTY3JpcHRzIHBhbmVsLiIpOwogICAgIHZhciBwYW5lbEVuYWJsZXJEaXNjbGFp
bWVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbmFibGluZyBkZWJ1Z2dpbmcgd2lsbCBtYWtl
IHNjcmlwdHMgcnVuIHNsb3dlci4iKTsKQEAgLTM4Nyw4ICszODgsOCBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuY2Fs
bHN0YWNrLnVwZGF0ZShkZXRhaWxzLmNhbGxGcmFtZXMsIHRoaXMuX3NvdXJjZUlETWFwKTsKICAg
ICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnNlbGVjdGVkQ2FsbEZyYW1lID0gZGV0
YWlscy5jYWxsRnJhbWVzWzBdOwogCi0gICAgICAgIGlmIChkZXRhaWxzLnN0YXR1cykKLSAgICAg
ICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLmNhbGxzdGFjay51cGRhdGVTdGF0dXMoZGV0YWlscy5z
dGF0dXMpOworICAgICAgICBpZiAoZGV0YWlscy5ldmVudFR5cGUpCisgICAgICAgICAgICB0aGlz
LnNpZGViYXJQYW5lcy5jYWxsc3RhY2sudXBkYXRlU3RhdHVzKGRldGFpbHMuZXZlbnRUeXBlLCBk
ZXRhaWxzLmV2ZW50RGF0YSk7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLmN1cnJlbnRQYW5lbCA9
IHRoaXM7CiAgICAgICAgIHdpbmRvdy5mb2N1cygpOwpAQCAtNDY3LDcgKzQ2OCw3IEBAIFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnNpZGViYXJQ
YW5lcy53YXRjaEV4cHJlc3Npb25zLnJlZnJlc2hFeHByZXNzaW9ucygpOwogICAgICAgICBpZiAo
IXByZXNlcnZlSXRlbXMpIHsKICAgICAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLmpzQnJlYWtw
b2ludHMucmVzZXQoKTsKLSAgICAgICAgICAgIGlmIChQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50
c0VuYWJsZWQpCisgICAgICAgICAgICBpZiAoUHJlZmVyZW5jZXMubmF0aXZlSW5zdHJ1bWVudGF0
aW9uRW5hYmxlZCkKICAgICAgICAgICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5kb21CcmVha3Bv
aW50cy5yZXNldCgpOwogICAgICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMud29ya2Vycy5yZXNl
dCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2V0dGluZ3MuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKaW5k
ZXggNjNmMjY0MS4uYTY3ODYxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NldHRpbmdzLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
cy5qcwpAQCAtNDQsNyArNDQsNyBAQCB2YXIgUHJlZmVyZW5jZXMgPSB7CiAgICAgcHJvZmlsZXJB
bHdheXNFbmFibGVkOiBmYWxzZSwKICAgICBhdWRpdHNQYW5lbEVuYWJsZWQ6IHRydWUsCiAgICAg
b25saW5lRGV0ZWN0aW9uRW5hYmxlZDogdHJ1ZSwKLSAgICBkb21CcmVha3BvaW50c0VuYWJsZWQ6
IGZhbHNlLAorICAgIG5hdGl2ZUluc3RydW1lbnRhdGlvbkVuYWJsZWQ6IGZhbHNlLAogICAgIHJl
c291cmNlRXhwb3J0RW5hYmxlZDogZmFsc2UKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaCBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggYWMx
ODgyOC4uNDgxYjUxZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAor
KysgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC02NSw2ICs2NSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0OwogCisgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV91cmw7IH0KICAgICBTdHJpbmcgc3RhdHVzVGV4dChFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAg
ICAgaW50IHN0YXR1cyhFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgU3RhdGUgcmVhZHlTdGF0
ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZmNkZmQzYy4uN2RhZjI5OCAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDktMjIgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxv
dkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogaW1wbGVtZW50IHBhdXNpbmcgb24gWEhSCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjA4NgorCisgICAgICAg
ICogc3JjL2pzL0RldlRvb2xzLmpzOgorICAgICAgICAoKToKKwogMjAxMC0wOS0yMSAgSmFtZXMg
Um9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUnVzc2VsbC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9v
bHMuanMgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCmluZGV4IDBjNzI0MWQu
LmE2NmUxNzQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwpAQCAtNDUsNyArNDUsNyBA
QCB2YXIgY29udGV4dCA9IHt9OyAgLy8gVXNlZCBieSBXZWJDb3JlJ3MgaW5zcGVjdG9yIHJvdXRp
bmVzLgogICAgIFByZWZlcmVuY2VzLnByb2ZpbGVyQWx3YXlzRW5hYmxlZCA9IHRydWU7CiAgICAg
UHJlZmVyZW5jZXMuY2FuRWRpdFNjcmlwdFNvdXJjZSA9IHRydWU7CiAgICAgUHJlZmVyZW5jZXMu
b25saW5lRGV0ZWN0aW9uRW5hYmxlZCA9IGZhbHNlOwotICAgIFByZWZlcmVuY2VzLmRvbUJyZWFr
cG9pbnRzRW5hYmxlZCA9IHRydWU7CisgICAgUHJlZmVyZW5jZXMubmF0aXZlSW5zdHJ1bWVudGF0
aW9uRW5hYmxlZCA9IHRydWU7CiB9KSgpOwogCiB2YXIgZGV2dG9vbHMgPSBkZXZ0b29scyB8fCB7
fTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68359</attachid>
            <date>2010-09-22 05:22:14 -0700</date>
            <delta_ts>2010-09-22 06:16:19 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>24404</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTJkYmRiNS4uNzc2MzFlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMC0wOS0yMiAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgcGF1c2luZyBv
biBYSFIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
MDg2CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0OjpzZW5kQ2FsbGJhY2sp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6c2V0TmF0aXZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVOYXRpdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2RlSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsUmVtb3ZlRE9NTm9kZUltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0
dHJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1l
bnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3Rv
ckNvbnRyb2xsZXJGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0pOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFj
a1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQ
YW5lLnByb3RvdHlwZS51cGRhdGVTdGF0dXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5yZXNldCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl9wb3B1
bGF0ZVRhZ0NvbnRleHRNZW51KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Njcmlw
dHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuZGVidWdnZXJQYXVzZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUucmVzZXQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6dXJsKToK
KwogMjAxMC0wOS0yMiAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCBjZmViNTAzLi4yMzU1ZDJhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3Vz
dG9tLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlY4WE1MSHR0cFJlcXVlc3QuaCIK
IAogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmxvYi5oIgogI2luY2x1ZGUgIlY4
RE9NRm9ybURhdGEuaCIKQEAgLTExMyw2ICsxMTQsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhYTUxIdHRwUmVxdWVzdDo6c2VuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAgICAgSU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVlc3Quc2VuZCgpIik7CiAgICAgWE1MSHR0
cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gVjhYTUxIdHRwUmVxdWVzdDo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CiAKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyOjppbnN0cnVtZW50V2lsbFNl
bmRYTUxIdHRwUmVxdWVzdCh4bWxIdHRwUmVxdWVzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCB4bWxIdHRwUmVxdWVzdC0+dXJsKCkpOworCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICB4bWxIdHRwUmVxdWVzdC0+c2VuZChl
Yyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCBhZTEzNmIyLi5mNGMzOWQ2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5pZGwKQEAgLTEzNyw2ICsxMzcsOSBAQCBtb2R1bGUgY29yZSB7CiAgICAg
ICAgIFtoYW5kbGVyPURlYnVnXSB2b2lkIGVkaXRTY3JpcHRTb3VyY2UoaW4gU3RyaW5nIHNvdXJj
ZUlELCBpbiBTdHJpbmcgbmV3Q29udGVudCwgb3V0IGJvb2xlYW4gc3VjY2Vzcywgb3V0IFN0cmlu
ZyByZXN1bHQsIG91dCBWYWx1ZSBuZXdDYWxsRnJhbWVzKTsKICAgICAgICAgW2hhbmRsZXI9RGVi
dWddIHZvaWQgZ2V0U2NyaXB0U291cmNlKGluIFN0cmluZyBzb3VyY2VJRCwgb3V0IFN0cmluZyBz
Y3JpcHRTb3VyY2UpOwogCisgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgc2V0TmF0
aXZlQnJlYWtwb2ludChpbiB1bnNpZ25lZCBpbnQgdHlwZSwgaW4gT2JqZWN0IGJyZWFrcG9pbnQs
IG91dCB1bnNpZ25lZCBpbnQgYnJlYWtwb2ludElkKTsKKyAgICAgICAgW2hhbmRsZXI9Q29udHJv
bGxlcl0gdm9pZCByZW1vdmVOYXRpdmVCcmVha3BvaW50KGluIHVuc2lnbmVkIGludCBicmVha3Bv
aW50SWQpOworCiAgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgZW5hYmxlUHJvZmls
ZXIoaW4gYm9vbGVhbiBhbHdheXMpOwogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lk
IGRpc2FibGVQcm9maWxlcihpbiBib29sZWFuIGFsd2F5cyk7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNWY4ZjE5MC4uYjAwOTc3NSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTE3NCw2ICsxNzQsNyBAQCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3Bl
Y3RvckNsaWVudCogY2xpZW50KQogICAgICwgbV9pbmplY3RlZFNjcmlwdEhvc3QoSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpjcmVhdGUodGhpcykpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CiAgICAgLCBtX2F0dGFjaERlYnVnZ2VyV2hlblNob3duKGZhbHNlKQorICAgICwgbV9sYXN0QnJl
YWtwb2ludElkKDApCiAgICAgLCBtX3Byb2ZpbGVyQWdlbnQoSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dDo6Y3JlYXRlKHRoaXMpKQogI2VuZGlmCiB7CkBAIC0xNjcyLDYgKzE2NzMsMjMgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpyZXN1bWUoKQogICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPnJl
c3VtZSgpOwogfQogCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldE5hdGl2ZUJyZWFrcG9p
bnQodW5zaWduZWQgaW50IHR5cGUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3Bv
aW50LCB1bnNpZ25lZCBpbnQqIGJyZWFrcG9pbnRJZCkKK3sKKyAgICAqYnJlYWtwb2ludElkID0g
MDsKKyAgICBpZiAodHlwZSA9PSBYSFJTZW5kUmVjb3JkVHlwZSkgeworICAgICAgICBTdHJpbmcg
dXJsOworICAgICAgICBpZiAoIWJyZWFrcG9pbnQtPmdldFN0cmluZygidXJsIiwgJnVybCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICpicmVha3BvaW50SWQgPSArK21fbGFzdEJyZWFr
cG9pbnRJZDsKKyAgICAgICAgbV9YSFJCcmVha3BvaW50cy5zZXQoKmJyZWFrcG9pbnRJZCwgdXJs
KTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVtb3ZlTmF0aXZlQnJl
YWtwb2ludCh1bnNpZ25lZCBpbnQgYnJlYWtwb2ludElkKQoreworICAgIG1fWEhSQnJlYWtwb2lu
dHMucmVtb3ZlKGJyZWFrcG9pbnRJZCk7Cit9CisKICNlbmRpZgogCiB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0
cmluZyYgc2NyaXB0KQpAQCAtMjA4NSw5ICsyMTAzLDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjp3aWxsSW5zZXJ0RE9NTm9kZUltcGwoTm9kZSogbm9kZSwgTm9kZSogcGFyZW50KQogI2lm
IEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmICghbV9kZWJ1Z2dlckFnZW50IHx8
ICFtX2RvbUFnZW50KQogICAgICAgICByZXR1cm47Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gZGV0YWlsczsKLSAgICBpZiAobV9kb21BZ2VudC0+c2hvdWxkQnJlYWtPbk5vZGVJbnNl
cnRpb24obm9kZSwgcGFyZW50LCAmZGV0YWlscykpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+
YnJlYWtQcm9ncmFtKGRldGFpbHMpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGV2
ZW50RGF0YTsKKyAgICBpZiAobV9kb21BZ2VudC0+c2hvdWxkQnJlYWtPbk5vZGVJbnNlcnRpb24o
bm9kZSwgcGFyZW50LCAmZXZlbnREYXRhKSkKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVh
a1Byb2dyYW0oRE9NQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEpOwogI2Vu
ZGlmCiB9CiAKQEAgLTIxMDIsOSArMjEyMCw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
d2lsbFJlbW92ZURPTU5vZGVJbXBsKE5vZGUqIG5vZGUpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpCiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQgfHwgIW1fZG9tQWdlbnQpCiAgICAg
ICAgIHJldHVybjsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBkZXRhaWxzOwotICAg
IGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZVJlbW92YWwobm9kZSwgJmRldGFpbHMp
KQotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShkZXRhaWxzKTsKKyAgICBQ
YXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBldmVudERhdGE7CisgICAgaWYgKG1fZG9tQWdlbnQt
PnNob3VsZEJyZWFrT25Ob2RlUmVtb3ZhbChub2RlLCAmZXZlbnREYXRhKSkKKyAgICAgICAgbV9k
ZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oRE9NQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBl
LCBldmVudERhdGEpOwogI2VuZGlmCiB9CiAKQEAgLTIxMTksOSArMjEzNyw5IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqIGVsZW1lbnQp
CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdl
bnQgfHwgIW1fZG9tQWdlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiBkZXRhaWxzOwotICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uQXR0
cmlidXRlTW9kaWZpY2F0aW9uKGVsZW1lbnQsICZkZXRhaWxzKSkKLSAgICAgICAgbV9kZWJ1Z2dl
ckFnZW50LT5icmVha1Byb2dyYW0oZGV0YWlscyk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gZXZlbnREYXRhOworICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uQXR0cmli
dXRlTW9kaWZpY2F0aW9uKGVsZW1lbnQsICZldmVudERhdGEpKQorICAgICAgICBtX2RlYnVnZ2Vy
QWdlbnQtPmJyZWFrUHJvZ3JhbShET01CcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50
RGF0YSk7CiAjZW5kaWYKIH0KIApAQCAtMjEzMiw2ICsyMTUwLDIxIEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlkTW9kaWZ5RE9NQXR0ckltcGwoRWxlbWVudCogZWxlbWVudCkKIH0KIAog
Cit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1
ZXN0SW1wbChjb25zdCBLVVJMJiB1cmwpCit7CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCisgICAgaWYgKG1fZGVidWdnZXJBZ2VudCkgeworICAgICAgICBpZiAoIW1fWEhSQnJlYWtw
b2ludHMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgICAg
ICBldmVudERhdGEtPnNldE51bWJlcigicmVjb3JkVHlwZSIsIFhIUlNlbmRSZWNvcmRUeXBlKTsK
KyAgICAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoInVybCIsIHVybCk7CisgICAgICAgIG1fZGVi
dWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKE5hdGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlw
ZSwgZXZlbnREYXRhKTsKKyAgICB9CisjZW5kaWYKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oCmluZGV4IDY3NTIwNDQuLmY2MzVkYWEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTIwMiw2ICsyMDIsOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lk
IGRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCopOwogCisgICAgc3RhdGljIHZvaWQgaW5zdHJ1bWVu
dFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtV
UkwmKTsKKwogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGVudW0gV29ya2VyQWN0aW9uIHsgV29y
a2VyQ3JlYXRlZCwgV29ya2VyRGVzdHJveWVkIH07CiAKQEAgLTI2NCw2ICsyNjYsMTAgQEAgcHVi
bGljOgogICAgIGJvb2wgZGVidWdnZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dl
ckFnZW50OyB9CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVidWdnZXJBZ2VudC5nZXQoKTsgfQogICAgIHZvaWQgcmVzdW1lKCk7
CisKKyAgICB2b2lkIHNldE5hdGl2ZUJyZWFrcG9pbnQodW5zaWduZWQgaW50IHR5cGUsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50LCB1bnNpZ25lZCBpbnQqIGJyZWFrcG9p
bnRJZCk7CisgICAgdm9pZCByZW1vdmVOYXRpdmVCcmVha3BvaW50KHVuc2lnbmVkIGludCBicmVh
a3BvaW50SWQpOworCiAjZW5kaWYKIAogICAgIHZvaWQgZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVu
ZChsb25nIHRlc3RDYWxsSWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKQEAgLTMzMSw3ICszMzcs
MTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChs
b25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBqc29uUmVzdWx0KTsKIAorICAgIHN0YXRpYyBJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KTsKICAgICBzdGF0aWMgSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvck5vZGUoTm9kZSopOworICAgIHN0
YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KTsKKwogICAgIHZvaWQgd2lsbEluc2VydERPTU5vZGVJbXBsKE5v
ZGUqIG5vZGUsIE5vZGUqIHBhcmVudCk7CiAgICAgdm9pZCBkaWRJbnNlcnRET01Ob2RlSW1wbChO
b2RlKik7CiAgICAgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZUltcGwoTm9kZSopOwpAQCAtMzM5LDYg
KzM0OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0ckltcGwoRWxlbWVu
dCopOwogICAgIHZvaWQgZGlkTW9kaWZ5RE9NQXR0ckltcGwoRWxlbWVudCopOwogCisgICAgdm9p
ZCBpbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoY29uc3QgS1VSTCYpOworCiAj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ7CiAgICAgU3RyaW5nIGJyZWFrcG9pbnRzU2V0dGluZ0tleSgpOwpAQCAt
NDAwLDYgKzQxMSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2F0dGFjaERlYnVnZ2VyV2hlblNo
b3duOwogICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBtX2RlYnVnZ2VyQWdlbnQ7
CiAKKyAgICBIYXNoTWFwPHVuc2lnbmVkIGludCwgU3RyaW5nPiBtX1hIUkJyZWFrcG9pbnRzOwor
ICAgIHVuc2lnbmVkIGludCBtX2xhc3RCcmVha3BvaW50SWQ7CisKICAgICBPd25QdHI8SW5zcGVj
dG9yUHJvZmlsZXJBZ2VudD4gbV9wcm9maWxlckFnZW50OwogI2VuZGlmCiAjaWYgRU5BQkxFKFdP
UktFUlMpCkBAIC00NTEsMTggKzQ2NSw0MCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQpCiAjZW5kaWYKIH0KIAotaW5s
aW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNv
bnRyb2xsZXJGb3JOb2RlKE5vZGUqIG5vZGUpCisKK2lubGluZSB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIGlmIChQYWdlKiBwYWdlID0gbm9kZS0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAg
ICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpKSB7Ci0gICAgICAgICAgICBpZiAoaW5zcGVjdG9yQ29udHJv
bGxlci0+aGFzRnJvbnRlbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ29u
dHJvbGxlcjsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRp
b25Db250ZXh0KGNvbnRleHQpKQorICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5pbnN0cnVt
ZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwodXJsKTsKICNlbmRpZgorfQogCi0gICAgcmV0
dXJuIDA7CisKK2lubGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0b3JDb250cm9sbGVy
OjppbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+
aXNEb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gaW5zcGVjdG9yQ29u
dHJvbGxlckZvckRvY3VtZW50KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCkpOworfQor
CitpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVj
dG9yQ29udHJvbGxlckZvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gaW5zcGVjdG9y
Q29udHJvbGxlckZvckRvY3VtZW50KG5vZGUtPmRvY3VtZW50KCkpOworfQorCitpbmxpbmUgSW5z
cGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdG9yQ29udHJvbGxl
ckZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQp
OworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAgICBpZiAoIWluc3BlY3RvckNv
bnRyb2xsZXIpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxl
ci0+aGFzRnJvbnRlbmQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGluc3BlY3Rv
ckNvbnRyb2xsZXI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMzg3NWJlMC4uOTI3NTk2MSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTY0
LDcgKzY0LDYgQEAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb24KICAgICAsIG1fZnJvbnRlbmQoZnJv
bnRlbmQpCiAgICAgLCBtX3BhdXNlZFNjcmlwdFN0YXRlKDApCiAgICAgLCBtX2JyZWFrcG9pbnRz
TG9hZGVkKGZhbHNlKQotICAgICwgbV9icmVha1Byb2dyYW1SZWFzb24oSW5zcGVjdG9yVmFsdWU6
Om51bGwoKSkKIHsKIH0KIApAQCAtMjg5LDEyICsyODgsMTMgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoU2NyaXB0U3RhdGUq
IHNjcmlwdFN0YXRlKQogewogICAgIEFTU0VSVChzY3JpcHRTdGF0ZSAmJiAhbV9wYXVzZWRTY3Jp
cHRTdGF0ZSk7Ci0gICAgQVNTRVJUKG1fYnJlYWtQcm9ncmFtUmVhc29uKTsKICAgICBtX3BhdXNl
ZFNjcmlwdFN0YXRlID0gc2NyaXB0U3RhdGU7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
ZGV0YWlscyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZGV0YWlscy0+c2V0VmFs
dWUoImNhbGxGcmFtZXMiLCBjdXJyZW50Q2FsbEZyYW1lcygpKTsKLSAgICBkZXRhaWxzLT5zZXRW
YWx1ZSgic3RhdHVzIiwgbV9icmVha1Byb2dyYW1SZWFzb24pOwotICAgIG1fZnJvbnRlbmQtPnBh
dXNlZFNjcmlwdChkZXRhaWxzKTsKKworICAgIGlmICghbV9icmVha1Byb2dyYW1EZXRhaWxzKQor
ICAgICAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OworICAgIG1fYnJlYWtQcm9ncmFtRGV0YWlscy0+c2V0VmFsdWUoImNhbGxGcmFtZXMiLCBjdXJy
ZW50Q2FsbEZyYW1lcygpKTsKKworICAgIG1fZnJvbnRlbmQtPnBhdXNlZFNjcmlwdChtX2JyZWFr
UHJvZ3JhbURldGFpbHMpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENv
bnRpbnVlKCkKQEAgLTMwMywxNyArMzAzLDE5IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlkQ29udGludWUoKQogICAgIG1fZnJvbnRlbmQtPnJlc3VtZWRTY3JpcHQoKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0oUGFzc1JlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gcmVhc29uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1By
b2dyYW0oRGVidWdnZXJFdmVudFR5cGUgdHlwZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
ZGF0YSkKIHsKKyAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpOworICAgIG1fYnJlYWtQcm9ncmFtRGV0YWlscy0+c2V0TnVtYmVyKCJldmVudFR5cGUi
LCB0eXBlKTsKKyAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMtPnNldFZhbHVlKCJldmVudERhdGEi
LCBkYXRhKTsKICAgICBzX2RlYnVnZ2VyQWdlbnRPbkJyZWFrcG9pbnQgPSB0aGlzOwotICAgIG1f
YnJlYWtQcm9ncmFtUmVhc29uID0gcmVhc29uOwogCiAgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNo
YXJlZCgpLmJyZWFrUHJvZ3JhbSgpOwogICAgIGlmICghc19kZWJ1Z2dlckFnZW50T25CcmVha3Bv
aW50KQogICAgICAgICByZXR1cm47CiAKICAgICBzX2RlYnVnZ2VyQWdlbnRPbkJyZWFrcG9pbnQg
PSAwOwotICAgIG1fYnJlYWtQcm9ncmFtUmVhc29uID0gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsK
KyAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMgPSAwOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNzli
MGEwZS4uZjViYWFiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaApAQCAtNDMsOCArNDMsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5qZWN0
ZWRTY3JpcHRIb3N0OwogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIEluc3BlY3Rv
ckZyb250ZW5kOworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7
CiAKK2VudW0gRGVidWdnZXJFdmVudFR5cGUgeworICAgIERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2
ZW50VHlwZSwKKyAgICBOYXRpdmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUKK307CisKIGNs
YXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwg
cHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50PiBjcmVhdGUoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rv
ckZyb250ZW5kKik7CkBAIC02MSw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNjcmlw
dFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSk7CiAK
ICAgICB2b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCBicmVha1Byb2dyYW0oUGFzc1JlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gcmVhc29uKTsKKyAgICB2b2lkIGJyZWFrUHJvZ3JhbShEZWJ1Z2dlckV2ZW50
VHlwZSB0eXBlLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBkYXRhKTsKICAgICB2b2lkIHJl
c3VtZSgpOwogICAgIHZvaWQgc3RlcE92ZXJTdGF0ZW1lbnQoKTsKICAgICB2b2lkIHN0ZXBJbnRv
U3RhdGVtZW50KCk7CkBAIC05NSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3Ry
aW5nLCB1bnNpZ25lZD4gbV9icmVha3BvaW50c01hcHBpbmc7CiAgICAgYm9vbCBtX2JyZWFrcG9p
bnRzTG9hZGVkOwogICAgIHN0YXRpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBzX2RlYnVnZ2Vy
QWdlbnRPbkJyZWFrcG9pbnQ7Ci0gICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBtX2JyZWFrUHJv
Z3JhbVJlYXNvbjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX2JyZWFrUHJvZ3JhbURl
dGFpbHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggNmIzMzI0Yi4uNDEwZTE4OSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtNjksNyArNjksOCBAQCBl
bnVtIFRpbWVsaW5lUmVjb3JkVHlwZSB7CiAgICAgR0NFdmVudFRpbWVsaW5lUmVjb3JkVHlwZSA9
IDE3LAogICAgIE1hcmtET01Db250ZW50RXZlbnRUeXBlID0gMTgsCiAgICAgTWFya0xvYWRFdmVu
dFR5cGUgPSAxOSwKLSAgICBTY2hlZHVsZVJlc291cmNlUmVxdWVzdFRpbWVsaW5lUmVjb3JkVHlw
ZSA9IDIwCisgICAgU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RUaW1lbGluZVJlY29yZFR5cGUgPSAy
MCwKKyAgICBYSFJTZW5kUmVjb3JkVHlwZSA9IDIxCiB9OwogCiBjbGFzcyBJbnNwZWN0b3JUaW1l
bGluZUFnZW50IDogU2NyaXB0R0NFdmVudExpc3RlbmVyLCBwdWJsaWMgTm9uY29weWFibGUgewpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQ
YW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5l
LmpzCmluZGV4IDkxZjM1YTYuLjJjNDViMTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMKQEAgLTgyLDEzICs4MiwxMyBAQCBX
ZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICB9
CiAgICAgfSwKIAotICAgIHVwZGF0ZVN0YXR1czogIGZ1bmN0aW9uKHN0YXR1cykKKyAgICB1cGRh
dGVTdGF0dXM6ICBmdW5jdGlvbihldmVudFR5cGUsIGV2ZW50RGF0YSkKICAgICB7CiAgICAgICAg
IHZhciBzdGF0dXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAg
ICAgIHN0YXR1c0VsZW1lbnQuY2xhc3NOYW1lID0gImluZm8iOwogCi0gICAgICAgIHZhciBicmVh
a3BvaW50VHlwZSA9IHN0YXR1cy5icmVha3BvaW50LnR5cGU7Ci0gICAgICAgIHZhciBzdWJzdGl0
dXRpb25zID0gW1dlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LmxhYmVsRm9yVHlwZShicmVha3Bv
aW50VHlwZSksIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMubGlua2lmeU5vZGVCeUlkKHN0
YXR1cy5icmVha3BvaW50Lm5vZGVJZCldOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50
RGF0YS5icmVha3BvaW50OworICAgICAgICB2YXIgc3Vic3RpdHV0aW9ucyA9IFtXZWJJbnNwZWN0
b3IuRE9NQnJlYWtwb2ludC5sYWJlbEZvclR5cGUoYnJlYWtwb2ludC50eXBlKSwgV2ViSW5zcGVj
dG9yLnBhbmVscy5lbGVtZW50cy5saW5raWZ5Tm9kZUJ5SWQoYnJlYWtwb2ludC5ub2RlSWQpXTsK
ICAgICAgICAgdmFyIGZvcm1hdHRlcnMgPSB7CiAgICAgICAgICAgICBzOiBmdW5jdGlvbihzdWJz
dGl0dXRpb24pCiAgICAgICAgICAgICB7CkBAIC0xMDEsMTAgKzEwMSwxMCBAQCBXZWJJbnNwZWN0
b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGIg
PSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShiKTsKICAgICAgICAgICAgIHN0YXR1c0VsZW1lbnQu
YXBwZW5kQ2hpbGQoYik7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGJyZWFrcG9pbnRUeXBlID09
PSBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5TdWJ0cmVlTW9kaWZpZWQpIHsKLSAg
ICAgICAgICAgIHZhciB0YXJnZXROb2RlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5s
aW5raWZ5Tm9kZUJ5SWQoc3RhdHVzLnRhcmdldE5vZGVJZCk7Ci0gICAgICAgICAgICBpZiAoc3Rh
dHVzLmluc2VydGlvbikgewotICAgICAgICAgICAgICAgIGlmIChzdGF0dXMudGFyZ2V0Tm9kZUlk
ICE9PSBzdGF0dXMuYnJlYWtwb2ludC5ub2RlSWQpCisgICAgICAgIGlmIChicmVha3BvaW50LnR5
cGUgPT09IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzLlN1YnRyZWVNb2RpZmllZCkg
eworICAgICAgICAgICAgdmFyIHRhcmdldE5vZGUgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1l
bnRzLmxpbmtpZnlOb2RlQnlJZChldmVudERhdGEudGFyZ2V0Tm9kZUlkKTsKKyAgICAgICAgICAg
IGlmIChldmVudERhdGEuaW5zZXJ0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50RGF0
YS50YXJnZXROb2RlSWQgIT09IGJyZWFrcG9pbnQubm9kZUlkKQogICAgICAgICAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJlYWtw
b2ludCBzZXQgb24gJXMsIGJlY2F1c2UgYSBuZXcgY2hpbGQgd2FzIGFkZGVkIHRvIGl0cyBkZXNj
ZW5kYW50ICVzLiIsIHN1YnN0aXR1dGlvbnMuY29uY2F0KHRhcmdldE5vZGUpLCBmb3JtYXR0ZXJz
LCAiIiwgYXBwZW5kKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVha3Bv
aW50IHNldCBvbiAlcywgYmVjYXVzZSBhIG5ldyBjaGlsZCB3YXMgYWRkZWQgdG8gdGhhdCBub2Rl
LiIsIHN1YnN0aXR1dGlvbnMsIGZvcm1hdHRlcnMsICIiLCBhcHBlbmQpOwpAQCAtMTEyLDYgKzEx
Miw3IEBAIFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZvcm1hdExvY2FsaXplZCgiUGF1c2VkIG9uIGEg
XCIlc1wiIGJyZWFrcG9pbnQgc2V0IG9uICVzLCBiZWNhdXNlIGl0cyBkZXNjZW5kYW50ICVzIHdh
cyByZW1vdmVkLiIsIHN1YnN0aXR1dGlvbnMuY29uY2F0KHRhcmdldE5vZGUpLCBmb3JtYXR0ZXJz
LCAiIiwgYXBwZW5kKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Zm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMu
Iiwgc3Vic3RpdHV0aW9ucywgZm9ybWF0dGVycywgIiIsIGFwcGVuZCk7CisKICAgICAgICAgdGhp
cy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXNFbGVtZW50KTsKICAgICB9LAogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IDcyYjIzZTEu
LjcwMDc0ZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50
c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVs
LmpzCkBAIC03NCw3ICs3NCw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsID0gZnVuY3Rp
b24oKQogICAgIHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlcyA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUodGhpcy5zaWRlYmFyUGFuZXMuY29tcHV0ZWRTdHlsZSk7CiAgICAgdGhp
cy5zaWRlYmFyUGFuZXMubWV0cmljcyA9IG5ldyBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQ
YW5lKCk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMucHJvcGVydGllcyA9IG5ldyBXZWJJbnNwZWN0
b3IuUHJvcGVydGllc1NpZGViYXJQYW5lKCk7Ci0gICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFr
cG9pbnRzRW5hYmxlZCkKKyAgICBpZiAoUHJlZmVyZW5jZXMubmF0aXZlSW5zdHJ1bWVudGF0aW9u
RW5hYmxlZCkKICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtwb2ludHMgPSBXZWJJ
bnNwZWN0b3IuY3JlYXRlRE9NQnJlYWtwb2ludHNTaWRlYmFyUGFuZSgpOwogICAgIHRoaXMuc2lk
ZWJhclBhbmVzLmV2ZW50TGlzdGVuZXJzID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVy
c1NpZGViYXJQYW5lKCk7CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVu
dHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuY3VycmVudFF1ZXJ5
OwogCi0gICAgICAgIGlmIChQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0VuYWJsZWQpCisgICAg
ICAgIGlmIChQcmVmZXJlbmNlcy5uYXRpdmVJbnN0cnVtZW50YXRpb25FbmFibGVkKQogICAgICAg
ICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtwb2ludHMucmVzZXQoKTsKICAgICB9LAog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5l
LmpzCmluZGV4IGUyNjEyMzQuLjNiZjE0NjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC03NTIsNyArNzUyLDcgQEAgV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBhcyBIVE1MIiks
IHRoaXMuX2NvcHlIVE1MLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJ
dGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIE5vZGUiKSwgdGhpcy5yZW1vdmUuYmlu
ZCh0aGlzKSk7CiAKLSAgICAgICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFrcG9pbnRzRW5hYmxl
ZCkgeworICAgICAgICBpZiAoUHJlZmVyZW5jZXMubmF0aXZlSW5zdHJ1bWVudGF0aW9uRW5hYmxl
ZCkgewogICAgICAgICAgICAgLy8gQWRkIGRlYmJ1Z2luZy1yZWxhdGVkIGFjdGlvbnMKICAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCA3MTUzMzlkLi5hYTZkMmI3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTEzMyw4ICsx
MzMsMTEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlz
LnNpZGViYXJQYW5lcy5jYWxsc3RhY2sgPSBuZXcgV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGVi
YXJQYW5lKCk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuc2NvcGVjaGFpbiA9IG5ldyBXZWJJbnNw
ZWN0b3IuU2NvcGVDaGFpblNpZGViYXJQYW5lKCk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuanNC
cmVha3BvaW50cyA9IFdlYkluc3BlY3Rvci5jcmVhdGVKU0JyZWFrcG9pbnRzU2lkZWJhclBhbmUo
KTsKLSAgICBpZiAoUHJlZmVyZW5jZXMuZG9tQnJlYWtwb2ludHNFbmFibGVkKQorICAgIGlmIChQ
cmVmZXJlbmNlcy5uYXRpdmVJbnN0cnVtZW50YXRpb25FbmFibGVkKSB7CiAgICAgICAgIHRoaXMu
c2lkZWJhclBhbmVzLmRvbUJyZWFrcG9pbnRzID0gV2ViSW5zcGVjdG9yLmNyZWF0ZURPTUJyZWFr
cG9pbnRzU2lkZWJhclBhbmUoKTsKKyAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtw
b2ludHMuZXhwYW5kZWQgPSB0cnVlOworICAgIH0KKwogICAgIHRoaXMuc2lkZWJhclBhbmVzLndv
cmtlcnMgPSBuZXcgV2ViSW5zcGVjdG9yLldvcmtlcnNTaWRlYmFyUGFuZSgpOwogCiAgICAgZm9y
ICh2YXIgcGFuZSBpbiB0aGlzLnNpZGViYXJQYW5lcykKQEAgLTE0NSw4ICsxNDgsNiBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5zaWRlYmFyUGFu
ZXMuc2NvcGVjaGFpbi5leHBhbmRlZCA9IHRydWU7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuanNC
cmVha3BvaW50cy5leHBhbmRlZCA9IHRydWU7Ci0gICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFr
cG9pbnRzRW5hYmxlZCkKLSAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtwb2ludHMu
ZXhwYW5kZWQgPSB0cnVlOwogCiAgICAgdmFyIHBhbmVsRW5hYmxlckhlYWRpbmcgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIllvdSBuZWVkIHRvIGVuYWJsZSBkZWJ1Z2dpbmcgYmVmb3JlIHlvdSBj
YW4gdXNlIHRoZSBTY3JpcHRzIHBhbmVsLiIpOwogICAgIHZhciBwYW5lbEVuYWJsZXJEaXNjbGFp
bWVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbmFibGluZyBkZWJ1Z2dpbmcgd2lsbCBtYWtl
IHNjcmlwdHMgcnVuIHNsb3dlci4iKTsKQEAgLTM4Nyw4ICszODgsOCBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuY2Fs
bHN0YWNrLnVwZGF0ZShkZXRhaWxzLmNhbGxGcmFtZXMsIHRoaXMuX3NvdXJjZUlETWFwKTsKICAg
ICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnNlbGVjdGVkQ2FsbEZyYW1lID0gZGV0
YWlscy5jYWxsRnJhbWVzWzBdOwogCi0gICAgICAgIGlmIChkZXRhaWxzLnN0YXR1cykKLSAgICAg
ICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLmNhbGxzdGFjay51cGRhdGVTdGF0dXMoZGV0YWlscy5z
dGF0dXMpOworICAgICAgICBpZiAoImV2ZW50VHlwZSIgaW4gZGV0YWlscykKKyAgICAgICAgICAg
IHRoaXMuc2lkZWJhclBhbmVzLmNhbGxzdGFjay51cGRhdGVTdGF0dXMoZGV0YWlscy5ldmVudFR5
cGUsIGRldGFpbHMuZXZlbnREYXRhKTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudFBh
bmVsID0gdGhpczsKICAgICAgICAgd2luZG93LmZvY3VzKCk7CkBAIC00NjcsNyArNDY4LDcgQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc2lk
ZWJhclBhbmVzLndhdGNoRXhwcmVzc2lvbnMucmVmcmVzaEV4cHJlc3Npb25zKCk7CiAgICAgICAg
IGlmICghcHJlc2VydmVJdGVtcykgewogICAgICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuanNC
cmVha3BvaW50cy5yZXNldCgpOwotICAgICAgICAgICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFr
cG9pbnRzRW5hYmxlZCkKKyAgICAgICAgICAgIGlmIChQcmVmZXJlbmNlcy5uYXRpdmVJbnN0cnVt
ZW50YXRpb25FbmFibGVkKQogICAgICAgICAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLmRvbUJy
ZWFrcG9pbnRzLnJlc2V0KCk7CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy53b3JrZXJz
LnJlc2V0KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TZXR0aW5ncy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5q
cwppbmRleCA2M2YyNjQxLi5hNjc4NjExIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nl
dHRpbmdzLmpzCkBAIC00NCw3ICs0NCw3IEBAIHZhciBQcmVmZXJlbmNlcyA9IHsKICAgICBwcm9m
aWxlckFsd2F5c0VuYWJsZWQ6IGZhbHNlLAogICAgIGF1ZGl0c1BhbmVsRW5hYmxlZDogdHJ1ZSwK
ICAgICBvbmxpbmVEZXRlY3Rpb25FbmFibGVkOiB0cnVlLAotICAgIGRvbUJyZWFrcG9pbnRzRW5h
YmxlZDogZmFsc2UsCisgICAgbmF0aXZlSW5zdHJ1bWVudGF0aW9uRW5hYmxlZDogZmFsc2UsCiAg
ICAgcmVzb3VyY2VFeHBvcnRFbmFibGVkOiBmYWxzZQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRl
eCBhYzE4ODI4Li40ODFiNTFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5oCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTY1LDYgKzY1LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3Q7CiAKKyAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQogICAgIFN0cmluZyBzdGF0dXNUZXh0KEV4Y2VwdGlvbkNvZGUmKSBjb25z
dDsKICAgICBpbnQgc3RhdHVzKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBTdGF0ZSByZWFk
eVN0YXRlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmY2RmZDNjLi43ZGFmMjk4IDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wOS0yMiAgUGF2ZWwgUG9kaXZpbG92ICA8cG9k
aXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgcGF1c2luZyBvbiBYSFIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDg2CisKKyAg
ICAgICAgKiBzcmMvanMvRGV2VG9vbHMuanM6CisgICAgICAgICgpOgorCiAyMDEwLTA5LTIxICBK
YW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9E
ZXZUb29scy5qcyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMKaW5kZXggMGM3
MjQxZC4uYTY2ZTE3NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29s
cy5qcworKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCkBAIC00NSw3ICs0
NSw3IEBAIHZhciBjb250ZXh0ID0ge307ICAvLyBVc2VkIGJ5IFdlYkNvcmUncyBpbnNwZWN0b3Ig
cm91dGluZXMuCiAgICAgUHJlZmVyZW5jZXMucHJvZmlsZXJBbHdheXNFbmFibGVkID0gdHJ1ZTsK
ICAgICBQcmVmZXJlbmNlcy5jYW5FZGl0U2NyaXB0U291cmNlID0gdHJ1ZTsKICAgICBQcmVmZXJl
bmNlcy5vbmxpbmVEZXRlY3Rpb25FbmFibGVkID0gZmFsc2U7Ci0gICAgUHJlZmVyZW5jZXMuZG9t
QnJlYWtwb2ludHNFbmFibGVkID0gdHJ1ZTsKKyAgICBQcmVmZXJlbmNlcy5uYXRpdmVJbnN0cnVt
ZW50YXRpb25FbmFibGVkID0gdHJ1ZTsKIH0pKCk7CiAKIHZhciBkZXZ0b29scyA9IGRldnRvb2xz
IHx8IHt9Owo=
</data>
<flag name="review"
          id="57866"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68362</attachid>
            <date>2010-09-22 06:16:19 -0700</date>
            <delta_ts>2010-09-22 09:06:41 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25312</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTJkYmRiNS4uNzc2MzFlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMC0wOS0yMiAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgcGF1c2luZyBv
biBYSFIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
MDg2CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0OjpzZW5kQ2FsbGJhY2sp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6c2V0TmF0aXZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVOYXRpdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxJbnNlcnRET01Ob2RlSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsUmVtb3ZlRE9NTm9kZUltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0
dHJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1l
bnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3Rv
ckNvbnRyb2xsZXJGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6Omluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0pOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFj
a1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQ
YW5lLnByb3RvdHlwZS51cGRhdGVTdGF0dXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5yZXNldCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl9wb3B1
bGF0ZVRhZ0NvbnRleHRNZW51KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Njcmlw
dHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuZGVidWdnZXJQYXVzZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUucmVzZXQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6dXJsKToK
KwogMjAxMC0wOS0yMiAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCBjZmViNTAzLi4yMzU1ZDJhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3Vz
dG9tLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlY4WE1MSHR0cFJlcXVlc3QuaCIK
IAogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmxvYi5oIgogI2luY2x1ZGUgIlY4
RE9NRm9ybURhdGEuaCIKQEAgLTExMyw2ICsxMTQsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhYTUxIdHRwUmVxdWVzdDo6c2VuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAgICAgSU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVlc3Quc2VuZCgpIik7CiAgICAgWE1MSHR0
cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gVjhYTUxIdHRwUmVxdWVzdDo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CiAKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyOjppbnN0cnVtZW50V2lsbFNl
bmRYTUxIdHRwUmVxdWVzdCh4bWxIdHRwUmVxdWVzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCB4bWxIdHRwUmVxdWVzdC0+dXJsKCkpOworCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICB4bWxIdHRwUmVxdWVzdC0+c2VuZChl
Yyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCBhZTEzNmIyLi4wOWE0MmJjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5pZGwKQEAgLTEzNyw2ICsxMzcsOSBAQCBtb2R1bGUgY29yZSB7CiAgICAg
ICAgIFtoYW5kbGVyPURlYnVnXSB2b2lkIGVkaXRTY3JpcHRTb3VyY2UoaW4gU3RyaW5nIHNvdXJj
ZUlELCBpbiBTdHJpbmcgbmV3Q29udGVudCwgb3V0IGJvb2xlYW4gc3VjY2Vzcywgb3V0IFN0cmlu
ZyByZXN1bHQsIG91dCBWYWx1ZSBuZXdDYWxsRnJhbWVzKTsKICAgICAgICAgW2hhbmRsZXI9RGVi
dWddIHZvaWQgZ2V0U2NyaXB0U291cmNlKGluIFN0cmluZyBzb3VyY2VJRCwgb3V0IFN0cmluZyBz
Y3JpcHRTb3VyY2UpOwogCisgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgc2V0TmF0
aXZlQnJlYWtwb2ludChpbiBPYmplY3QgYnJlYWtwb2ludCwgb3V0IHVuc2lnbmVkIGludCBicmVh
a3BvaW50SWQpOworICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIHJlbW92ZU5hdGl2
ZUJyZWFrcG9pbnQoaW4gdW5zaWduZWQgaW50IGJyZWFrcG9pbnRJZCk7CisKICAgICAgICAgW2hh
bmRsZXI9Q29udHJvbGxlcl0gdm9pZCBlbmFibGVQcm9maWxlcihpbiBib29sZWFuIGFsd2F5cyk7
CiAgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgZGlzYWJsZVByb2ZpbGVyKGluIGJv
b2xlYW4gYWx3YXlzKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAppbmRleCA1ZjhmMTkwLi42M2YzNGQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBtYXhp
bXVtQXR0YWNoZWRIZWlnaHRSYXRpbyA9IDAuNzVmOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1h
eGltdW1Db25zb2xlTWVzc2FnZXMgPSAxMDAwOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4cGly
ZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAxMDA7CiAKLXN0YXRpYyB1bnNpZ25lZCBzX2luc3BlY3Rv
ckNvbnRyb2xsZXJDb3VudDsKK3Vuc2lnbmVkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNfaW5zcGVj
dG9yQ29udHJvbGxlckNvdW50ID0gMDsKIAogSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9y
Q29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICA6IG1f
aW5zcGVjdGVkUGFnZShwYWdlKQpAQCAtMTc0LDYgKzE3NCw3IEBAIEluc3BlY3RvckNvbnRyb2xs
ZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGll
bnQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0SG9zdChJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0
ZSh0aGlzKSkKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAsIG1fYXR0YWNo
RGVidWdnZXJXaGVuU2hvd24oZmFsc2UpCisgICAgLCBtX2xhc3RCcmVha3BvaW50SWQoMCkKICAg
ICAsIG1fcHJvZmlsZXJBZ2VudChJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGUodGhpcykp
CiAjZW5kaWYKIHsKQEAgLTE2NzIsNiArMTY3MywyOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OnJlc3VtZSgpCiAgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+cmVzdW1lKCk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0TmF0aXZlQnJlYWtwb2ludChQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludCwgdW5zaWduZWQgaW50KiBicmVha3BvaW50SWQpCit7
CisgICAgKmJyZWFrcG9pbnRJZCA9IDA7CisgICAgU3RyaW5nIHR5cGU7CisgICAgaWYgKCFicmVh
a3BvaW50LT5nZXRTdHJpbmcoInR5cGUiLCAmdHlwZSkpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAodHlwZSA9PSAiWEhSIikgeworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjb25k
aXRpb24gPSBicmVha3BvaW50LT5nZXRPYmplY3QoImNvbmRpdGlvbiIpOworICAgICAgICBpZiAo
IWNvbmRpdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgU3RyaW5nIHVybDsKKyAg
ICAgICAgaWYgKCFjb25kaXRpb24tPmdldFN0cmluZygidXJsIiwgJnVybCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICpicmVha3BvaW50SWQgPSArK21fbGFzdEJyZWFrcG9pbnRJZDsK
KyAgICAgICAgbV9YSFJCcmVha3BvaW50cy5zZXQoKmJyZWFrcG9pbnRJZCwgdXJsKTsKKyAgICB9
Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVtb3ZlTmF0aXZlQnJlYWtwb2ludCh1
bnNpZ25lZCBpbnQgYnJlYWtwb2ludElkKQoreworICAgIG1fWEhSQnJlYWtwb2ludHMucmVtb3Zl
KGJyZWFrcG9pbnRJZCk7Cit9CisKICNlbmRpZgogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0KQpAQCAtMjA4NSw5ICsyMTA5LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxs
SW5zZXJ0RE9NTm9kZUltcGwoTm9kZSogbm9kZSwgTm9kZSogcGFyZW50KQogI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmICghbV9kZWJ1Z2dlckFnZW50IHx8ICFtX2RvbUFn
ZW50KQogICAgICAgICByZXR1cm47Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZGV0
YWlsczsKLSAgICBpZiAobV9kb21BZ2VudC0+c2hvdWxkQnJlYWtPbk5vZGVJbnNlcnRpb24obm9k
ZSwgcGFyZW50LCAmZGV0YWlscykpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9n
cmFtKGRldGFpbHMpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGV2ZW50RGF0YTsK
KyAgICBpZiAobV9kb21BZ2VudC0+c2hvdWxkQnJlYWtPbk5vZGVJbnNlcnRpb24obm9kZSwgcGFy
ZW50LCAmZXZlbnREYXRhKSkKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0o
RE9NQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEpOwogI2VuZGlmCiB9CiAK
QEAgLTIxMDIsOSArMjEyNiw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbFJlbW92
ZURPTU5vZGVJbXBsKE5vZGUqIG5vZGUpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQgfHwgIW1fZG9tQWdlbnQpCiAgICAgICAgIHJldHVy
bjsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBkZXRhaWxzOwotICAgIGlmIChtX2Rv
bUFnZW50LT5zaG91bGRCcmVha09uTm9kZVJlbW92YWwobm9kZSwgJmRldGFpbHMpKQotICAgICAg
ICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShkZXRhaWxzKTsKKyAgICBQYXNzUmVmUHRy
PEluc3BlY3RvclZhbHVlPiBldmVudERhdGE7CisgICAgaWYgKG1fZG9tQWdlbnQtPnNob3VsZEJy
ZWFrT25Ob2RlUmVtb3ZhbChub2RlLCAmZXZlbnREYXRhKSkKKyAgICAgICAgbV9kZWJ1Z2dlckFn
ZW50LT5icmVha1Byb2dyYW0oRE9NQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERh
dGEpOwogI2VuZGlmCiB9CiAKQEAgLTIxMTksOSArMjE0Myw5IEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6d2lsbE1vZGlmeURPTUF0dHJJbXBsKEVsZW1lbnQqIGVsZW1lbnQpCiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQgfHwgIW1f
ZG9tQWdlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVl
PiBkZXRhaWxzOwotICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uQXR0cmlidXRlTW9k
aWZpY2F0aW9uKGVsZW1lbnQsICZkZXRhaWxzKSkKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5i
cmVha1Byb2dyYW0oZGV0YWlscyk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZl
bnREYXRhOworICAgIGlmIChtX2RvbUFnZW50LT5zaG91bGRCcmVha09uQXR0cmlidXRlTW9kaWZp
Y2F0aW9uKGVsZW1lbnQsICZldmVudERhdGEpKQorICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJy
ZWFrUHJvZ3JhbShET01CcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YSk7CiAj
ZW5kaWYKIH0KIApAQCAtMjEzMiw2ICsyMTU2LDIxIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkTW9kaWZ5RE9NQXR0ckltcGwoRWxlbWVudCogZWxlbWVudCkKIH0KIAogCit2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChj
b25zdCBLVVJMJiB1cmwpCit7CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAg
aWYgKG1fZGVidWdnZXJBZ2VudCkgeworICAgICAgICBpZiAoIW1fWEhSQnJlYWtwb2ludHMuc2l6
ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICBldmVudERh
dGEtPnNldE51bWJlcigicmVjb3JkVHlwZSIsIFhIUlNlbmRSZWNvcmRUeXBlKTsKKyAgICAgICAg
ZXZlbnREYXRhLT5zZXRTdHJpbmcoInVybCIsIHVybCk7CisgICAgICAgIG1fZGVidWdnZXJBZ2Vu
dC0+YnJlYWtQcm9ncmFtKE5hdGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnRE
YXRhKTsKKyAgICB9CisjZW5kaWYKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oCmluZGV4IDY3NTIwNDQuLjkzYzgxMDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmgKQEAgLTIwMiw2ICsyMDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgd2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIGRpZE1vZGlm
eURPTUF0dHIoRWxlbWVudCopOwogCisgICAgc3RhdGljIHZvaWQgaW5zdHJ1bWVudFdpbGxTZW5k
WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtVUkwmKTsKKwog
I2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGVudW0gV29ya2VyQWN0aW9uIHsgV29ya2VyQ3JlYXRl
ZCwgV29ya2VyRGVzdHJveWVkIH07CiAKQEAgLTI2NCw2ICsyNjYsMTAgQEAgcHVibGljOgogICAg
IGJvb2wgZGVidWdnZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckFnZW50OyB9
CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVidWdnZXJBZ2VudC5nZXQoKTsgfQogICAgIHZvaWQgcmVzdW1lKCk7CisKKyAgICB2
b2lkIHNldE5hdGl2ZUJyZWFrcG9pbnQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFr
cG9pbnQsIHVuc2lnbmVkIGludCogYnJlYWtwb2ludElkKTsKKyAgICB2b2lkIHJlbW92ZU5hdGl2
ZUJyZWFrcG9pbnQodW5zaWduZWQgaW50IGJyZWFrcG9pbnRJZCk7CisKICNlbmRpZgogCiAgICAg
dm9pZCBldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgdGVzdENhbGxJZCwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQpOwpAQCAtMzMxLDcgKzMzNywxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBk
aWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIGpz
b25SZXN1bHQpOwogCisgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyRm9yTm9kZShOb2RlKik7CisgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpOworCiAgICAg
dm9pZCB3aWxsSW5zZXJ0RE9NTm9kZUltcGwoTm9kZSogbm9kZSwgTm9kZSogcGFyZW50KTsKICAg
ICB2b2lkIGRpZEluc2VydERPTU5vZGVJbXBsKE5vZGUqKTsKICAgICB2b2lkIHdpbGxSZW1vdmVE
T01Ob2RlSW1wbChOb2RlKik7CkBAIC0zMzksNiArMzQ4LDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxNb2RpZnlET01BdHRySW1wbChFbGVtZW50Kik7CiAgICAgdm9pZCBkaWRNb2RpZnlET01B
dHRySW1wbChFbGVtZW50Kik7CiAKKyAgICB2b2lkIGluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBS
ZXF1ZXN0SW1wbChjb25zdCBLVVJMJik7CisKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKICAgICBmcmllbmQgY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKICAgICBTdHJpbmcg
YnJlYWtwb2ludHNTZXR0aW5nS2V5KCk7CkBAIC0zNDYsNiArMzU3LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNhdmVCcmVha3BvaW50cyhQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtw
b2ludHMpOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgdW5zaWduZWQgc19pbnNwZWN0b3JDb250cm9s
bGVyQ291bnQ7CisKICAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CiAgICAgSW5zcGVjdG9yQ2xp
ZW50KiBtX2NsaWVudDsKICAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1faW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ7CkBAIC00MDAsNiArNDEzLDkgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fYXR0YWNoRGVidWdnZXJXaGVuU2hvd247CiAgICAgT3duUHRyPEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ+IG1fZGVidWdnZXJBZ2VudDsKIAorICAgIEhhc2hNYXA8dW5zaWduZWQgaW50LCBT
dHJpbmc+IG1fWEhSQnJlYWtwb2ludHM7CisgICAgdW5zaWduZWQgaW50IG1fbGFzdEJyZWFrcG9p
bnRJZDsKKwogICAgIE93blB0cjxJbnNwZWN0b3JQcm9maWxlckFnZW50PiBtX3Byb2ZpbGVyQWdl
bnQ7CiAjZW5kaWYKICNpZiBFTkFCTEUoV09SS0VSUykKQEAgLTQ1MSwxOCArNDY3LDQwIEBAIGlu
bGluZSB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCog
ZWxlbWVudCkKICNlbmRpZgogfQogCi1pbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVj
dG9yQ29udHJvbGxlcjo6aW5zcGVjdG9yQ29udHJvbGxlckZvck5vZGUoTm9kZSogbm9kZSkKK2lu
bGluZSB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBS
ZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCkK
IHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbm9kZS0+ZG9j
dW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb250cm9sbGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKSB7Ci0gICAgICAg
ICAgICBpZiAoaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlcjsKLSAgICAgICAgfQotICAgIH0KKyAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNv
bnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpKQorICAgICAgICBpbnNw
ZWN0b3JDb250cm9sbGVyLT5pbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwodXJs
KTsKICNlbmRpZgorfQogCi0gICAgcmV0dXJuIDA7CitpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxl
ciogSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdG9yQ29udHJvbGxlckZvclNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBpZiAo
IXNfaW5zcGVjdG9yQ29udHJvbGxlckNvdW50IHx8ICFjb250ZXh0IHx8ICFjb250ZXh0LT5pc0Rv
Y3VtZW50KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBpbnNwZWN0b3JDb250cm9s
bGVyRm9yRG9jdW1lbnQoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSk7Cit9CisKK2lu
bGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0b3JD
b250cm9sbGVyRm9yTm9kZShOb2RlKiBub2RlKQoreworICAgIGlmICghc19pbnNwZWN0b3JDb250
cm9sbGVyQ291bnQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBpbnNwZWN0b3JDb250
cm9sbGVyRm9yRG9jdW1lbnQobm9kZS0+ZG9jdW1lbnQoKSk7Cit9CisKK2lubGluZSBJbnNwZWN0
b3JDb250cm9sbGVyKiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0b3JDb250cm9sbGVyRm9y
RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVChkb2N1bWVudCk7Cisg
ICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
ID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIGlmICghaW5zcGVjdG9yQ29udHJv
bGxlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVyLT5o
YXNGcm9udGVuZCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gaW5zcGVjdG9yQ29u
dHJvbGxlcjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCAzODc1YmUwLi45Mjc1OTYxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNjQsNyAr
NjQsNiBAQCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbgogICAgICwgbV9mcm9udGVuZChmcm9udGVu
ZCkKICAgICAsIG1fcGF1c2VkU2NyaXB0U3RhdGUoMCkKICAgICAsIG1fYnJlYWtwb2ludHNMb2Fk
ZWQoZmFsc2UpCi0gICAgLCBtX2JyZWFrUHJvZ3JhbVJlYXNvbihJbnNwZWN0b3JWYWx1ZTo6bnVs
bCgpKQogewogfQogCkBAIC0yODksMTIgKzI4OCwxMyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
Zwogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGUpCiB7CiAgICAgQVNTRVJUKHNjcmlwdFN0YXRlICYmICFtX3BhdXNlZFNjcmlwdFN0
YXRlKTsKLSAgICBBU1NFUlQobV9icmVha1Byb2dyYW1SZWFzb24pOwogICAgIG1fcGF1c2VkU2Ny
aXB0U3RhdGUgPSBzY3JpcHRTdGF0ZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkZXRh
aWxzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBkZXRhaWxzLT5zZXRWYWx1ZSgi
Y2FsbEZyYW1lcyIsIGN1cnJlbnRDYWxsRnJhbWVzKCkpOwotICAgIGRldGFpbHMtPnNldFZhbHVl
KCJzdGF0dXMiLCBtX2JyZWFrUHJvZ3JhbVJlYXNvbik7Ci0gICAgbV9mcm9udGVuZC0+cGF1c2Vk
U2NyaXB0KGRldGFpbHMpOworCisgICAgaWYgKCFtX2JyZWFrUHJvZ3JhbURldGFpbHMpCisgICAg
ICAgIG1fYnJlYWtQcm9ncmFtRGV0YWlscyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Cisg
ICAgbV9icmVha1Byb2dyYW1EZXRhaWxzLT5zZXRWYWx1ZSgiY2FsbEZyYW1lcyIsIGN1cnJlbnRD
YWxsRnJhbWVzKCkpOworCisgICAgbV9mcm9udGVuZC0+cGF1c2VkU2NyaXB0KG1fYnJlYWtQcm9n
cmFtRGV0YWlscyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ29udGlu
dWUoKQpAQCAtMzAzLDE3ICszMDMsMTkgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
aWRDb250aW51ZSgpCiAgICAgbV9mcm9udGVuZC0+cmVzdW1lZFNjcmlwdCgpOwogfQogCi12b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShQYXNzUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiByZWFzb24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3Jh
bShEZWJ1Z2dlckV2ZW50VHlwZSB0eXBlLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBkYXRh
KQogeworICAgIG1fYnJlYWtQcm9ncmFtRGV0YWlscyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CisgICAgbV9icmVha1Byb2dyYW1EZXRhaWxzLT5zZXROdW1iZXIoImV2ZW50VHlwZSIsIHR5
cGUpOworICAgIG1fYnJlYWtQcm9ncmFtRGV0YWlscy0+c2V0VmFsdWUoImV2ZW50RGF0YSIsIGRh
dGEpOwogICAgIHNfZGVidWdnZXJBZ2VudE9uQnJlYWtwb2ludCA9IHRoaXM7Ci0gICAgbV9icmVh
a1Byb2dyYW1SZWFzb24gPSByZWFzb247CiAKICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVk
KCkuYnJlYWtQcm9ncmFtKCk7CiAgICAgaWYgKCFzX2RlYnVnZ2VyQWdlbnRPbkJyZWFrcG9pbnQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIHNfZGVidWdnZXJBZ2VudE9uQnJlYWtwb2ludCA9IDA7
Ci0gICAgbV9icmVha1Byb2dyYW1SZWFzb24gPSBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpOworICAg
IG1fYnJlYWtQcm9ncmFtRGV0YWlscyA9IDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA3OWIwYTBl
Li5mNWJhYWJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
CkBAIC00Myw4ICs0MywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbmplY3RlZFNj
cmlwdEhvc3Q7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmQ7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIAor
ZW51bSBEZWJ1Z2dlckV2ZW50VHlwZSB7CisgICAgRE9NQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRU
eXBlLAorICAgIE5hdGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZQorfTsKKwogY2xhc3Mg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBwdWJs
aWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ+IGNyZWF0ZShJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9yRnJv
bnRlbmQqKTsKQEAgLTYxLDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2NyaXB0U291
cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIFN0cmluZyogc2NyaXB0U291cmNlKTsKIAogICAg
IHZvaWQgcGF1c2UoKTsKLSAgICB2b2lkIGJyZWFrUHJvZ3JhbShQYXNzUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiByZWFzb24pOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKERlYnVnZ2VyRXZlbnRUeXBl
IHR5cGUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGRhdGEpOwogICAgIHZvaWQgcmVzdW1l
KCk7CiAgICAgdm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOwogICAgIHZvaWQgc3RlcEludG9TdGF0
ZW1lbnQoKTsKQEAgLTk1LDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcs
IHVuc2lnbmVkPiBtX2JyZWFrcG9pbnRzTWFwcGluZzsKICAgICBib29sIG1fYnJlYWtwb2ludHNM
b2FkZWQ7CiAgICAgc3RhdGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIHNfZGVidWdnZXJBZ2Vu
dE9uQnJlYWtwb2ludDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG1fYnJlYWtQcm9ncmFt
UmVhc29uOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fYnJlYWtQcm9ncmFtRGV0YWls
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCA2YjMzMjRiLi40MTBlMTg5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC02OSw3ICs2OSw4IEBAIGVudW0g
VGltZWxpbmVSZWNvcmRUeXBlIHsKICAgICBHQ0V2ZW50VGltZWxpbmVSZWNvcmRUeXBlID0gMTcs
CiAgICAgTWFya0RPTUNvbnRlbnRFdmVudFR5cGUgPSAxOCwKICAgICBNYXJrTG9hZEV2ZW50VHlw
ZSA9IDE5LAotICAgIFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0VGltZWxpbmVSZWNvcmRUeXBlID0g
MjAKKyAgICBTY2hlZHVsZVJlc291cmNlUmVxdWVzdFRpbWVsaW5lUmVjb3JkVHlwZSA9IDIwLAor
ICAgIFhIUlNlbmRSZWNvcmRUeXBlID0gMjEKIH07CiAKIGNsYXNzIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQgOiBTY3JpcHRHQ0V2ZW50TGlzdGVuZXIsIHB1YmxpYyBOb25jb3B5YWJsZSB7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUu
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMK
aW5kZXggOTFmMzVhNi4uMmM0NWIxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qcwpAQCAtODIsMTMgKzgyLDEzIEBAIFdlYklu
c3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAg
ICB9LAogCi0gICAgdXBkYXRlU3RhdHVzOiAgZnVuY3Rpb24oc3RhdHVzKQorICAgIHVwZGF0ZVN0
YXR1czogIGZ1bmN0aW9uKGV2ZW50VHlwZSwgZXZlbnREYXRhKQogICAgIHsKICAgICAgICAgdmFy
IHN0YXR1c0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAg
c3RhdHVzRWxlbWVudC5jbGFzc05hbWUgPSAiaW5mbyI7CiAKLSAgICAgICAgdmFyIGJyZWFrcG9p
bnRUeXBlID0gc3RhdHVzLmJyZWFrcG9pbnQudHlwZTsKLSAgICAgICAgdmFyIHN1YnN0aXR1dGlv
bnMgPSBbV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQubGFiZWxGb3JUeXBlKGJyZWFrcG9pbnRU
eXBlKSwgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5saW5raWZ5Tm9kZUJ5SWQoc3RhdHVz
LmJyZWFrcG9pbnQubm9kZUlkKV07CisgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnREYXRh
LmJyZWFrcG9pbnQ7CisgICAgICAgIHZhciBzdWJzdGl0dXRpb25zID0gW1dlYkluc3BlY3Rvci5E
T01CcmVha3BvaW50LmxhYmVsRm9yVHlwZShicmVha3BvaW50LnR5cGUpLCBXZWJJbnNwZWN0b3Iu
cGFuZWxzLmVsZW1lbnRzLmxpbmtpZnlOb2RlQnlJZChicmVha3BvaW50Lm5vZGVJZCldOwogICAg
ICAgICB2YXIgZm9ybWF0dGVycyA9IHsKICAgICAgICAgICAgIHM6IGZ1bmN0aW9uKHN1YnN0aXR1
dGlvbikKICAgICAgICAgICAgIHsKQEAgLTEwMSwxMCArMTAxLDEwIEBAIFdlYkluc3BlY3Rvci5D
YWxsU3RhY2tTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgYiA9IGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKGIpOwogICAgICAgICAgICAgc3RhdHVzRWxlbWVudC5hcHBl
bmRDaGlsZChiKTsKICAgICAgICAgfQotICAgICAgICBpZiAoYnJlYWtwb2ludFR5cGUgPT09IFdl
Ykluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzLlN1YnRyZWVNb2RpZmllZCkgewotICAgICAg
ICAgICAgdmFyIHRhcmdldE5vZGUgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmxpbmtp
ZnlOb2RlQnlJZChzdGF0dXMudGFyZ2V0Tm9kZUlkKTsKLSAgICAgICAgICAgIGlmIChzdGF0dXMu
aW5zZXJ0aW9uKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXR1cy50YXJnZXROb2RlSWQgIT09
IHN0YXR1cy5icmVha3BvaW50Lm5vZGVJZCkKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuVHlwZXMuU3VidHJlZU1vZGlmaWVkKSB7Cisg
ICAgICAgICAgICB2YXIgdGFyZ2V0Tm9kZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMu
bGlua2lmeU5vZGVCeUlkKGV2ZW50RGF0YS50YXJnZXROb2RlSWQpOworICAgICAgICAgICAgaWYg
KGV2ZW50RGF0YS5pbnNlcnRpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnREYXRhLnRh
cmdldE5vZGVJZCAhPT0gYnJlYWtwb2ludC5ub2RlSWQpCiAgICAgICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVha3BvaW50
IHNldCBvbiAlcywgYmVjYXVzZSBhIG5ldyBjaGlsZCB3YXMgYWRkZWQgdG8gaXRzIGRlc2NlbmRh
bnQgJXMuIiwgc3Vic3RpdHV0aW9ucy5jb25jYXQodGFyZ2V0Tm9kZSksIGZvcm1hdHRlcnMsICIi
LCBhcHBlbmQpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLmZvcm1hdExvY2FsaXplZCgiUGF1c2VkIG9uIGEgXCIlc1wiIGJyZWFrcG9pbnQg
c2V0IG9uICVzLCBiZWNhdXNlIGEgbmV3IGNoaWxkIHdhcyBhZGRlZCB0byB0aGF0IG5vZGUuIiwg
c3Vic3RpdHV0aW9ucywgZm9ybWF0dGVycywgIiIsIGFwcGVuZCk7CkBAIC0xMTIsNiArMTEyLDcg
QEAgV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVz
XCIgYnJlYWtwb2ludCBzZXQgb24gJXMsIGJlY2F1c2UgaXRzIGRlc2NlbmRhbnQgJXMgd2FzIHJl
bW92ZWQuIiwgc3Vic3RpdHV0aW9ucy5jb25jYXQodGFyZ2V0Tm9kZSksIGZvcm1hdHRlcnMsICIi
LCBhcHBlbmQpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3Jt
YXRMb2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAlcy4iLCBz
dWJzdGl0dXRpb25zLCBmb3JtYXR0ZXJzLCAiIiwgYXBwZW5kKTsKKwogICAgICAgICB0aGlzLmJv
ZHlFbGVtZW50LmFwcGVuZENoaWxkKHN0YXR1c0VsZW1lbnQpOwogICAgIH0sCiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKaW5kZXggNzJiMjNlMS4uNzAw
NzRlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFu
ZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMK
QEAgLTc0LDcgKzc0LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwgPSBmdW5jdGlvbigp
CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzID0gbmV3IFdlYkluc3BlY3Rvci5TdHlsZXNT
aWRlYmFyUGFuZSh0aGlzLnNpZGViYXJQYW5lcy5jb21wdXRlZFN0eWxlKTsKICAgICB0aGlzLnNp
ZGViYXJQYW5lcy5tZXRyaWNzID0gbmV3IFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUo
KTsKICAgICB0aGlzLnNpZGViYXJQYW5lcy5wcm9wZXJ0aWVzID0gbmV3IFdlYkluc3BlY3Rvci5Q
cm9wZXJ0aWVzU2lkZWJhclBhbmUoKTsKLSAgICBpZiAoUHJlZmVyZW5jZXMuZG9tQnJlYWtwb2lu
dHNFbmFibGVkKQorICAgIGlmIChQcmVmZXJlbmNlcy5uYXRpdmVJbnN0cnVtZW50YXRpb25FbmFi
bGVkKQogICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5kb21CcmVha3BvaW50cyA9IFdlYkluc3Bl
Y3Rvci5jcmVhdGVET01CcmVha3BvaW50c1NpZGViYXJQYW5lKCk7CiAgICAgdGhpcy5zaWRlYmFy
UGFuZXMuZXZlbnRMaXN0ZW5lcnMgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lk
ZWJhclBhbmUoKTsKIApAQCAtMTcxLDcgKzE3MSw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1Bh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBkZWxldGUgdGhpcy5jdXJyZW50UXVlcnk7CiAK
LSAgICAgICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFrcG9pbnRzRW5hYmxlZCkKKyAgICAgICAg
aWYgKFByZWZlcmVuY2VzLm5hdGl2ZUluc3RydW1lbnRhdGlvbkVuYWJsZWQpCiAgICAgICAgICAg
ICB0aGlzLnNpZGViYXJQYW5lcy5kb21CcmVha3BvaW50cy5yZXNldCgpOwogICAgIH0sCiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5l
LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMK
aW5kZXggZTI2MTIzNC4uM2JmMTQ2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTc1Miw3ICs3NTIsNyBAQCBXZWJJbnNw
ZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb3B5IGFzIEhUTUwiKSwgdGhp
cy5fY29weUhUTUwuYmluZCh0aGlzKSk7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUgTm9kZSIpLCB0aGlzLnJlbW92ZS5iaW5kKHRo
aXMpKTsKIAotICAgICAgICBpZiAoUHJlZmVyZW5jZXMuZG9tQnJlYWtwb2ludHNFbmFibGVkKSB7
CisgICAgICAgIGlmIChQcmVmZXJlbmNlcy5uYXRpdmVJbnN0cnVtZW50YXRpb25FbmFibGVkKSB7
CiAgICAgICAgICAgICAvLyBBZGQgZGViYnVnaW5nLXJlbGF0ZWQgYWN0aW9ucwogICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDcxNTMzOWQuLmFhNmQyYjcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMTMzLDggKzEzMywx
MSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuc2lk
ZWJhclBhbmVzLmNhbGxzdGFjayA9IG5ldyBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBh
bmUoKTsKICAgICB0aGlzLnNpZGViYXJQYW5lcy5zY29wZWNoYWluID0gbmV3IFdlYkluc3BlY3Rv
ci5TY29wZUNoYWluU2lkZWJhclBhbmUoKTsKICAgICB0aGlzLnNpZGViYXJQYW5lcy5qc0JyZWFr
cG9pbnRzID0gV2ViSW5zcGVjdG9yLmNyZWF0ZUpTQnJlYWtwb2ludHNTaWRlYmFyUGFuZSgpOwot
ICAgIGlmIChQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0VuYWJsZWQpCisgICAgaWYgKFByZWZl
cmVuY2VzLm5hdGl2ZUluc3RydW1lbnRhdGlvbkVuYWJsZWQpIHsKICAgICAgICAgdGhpcy5zaWRl
YmFyUGFuZXMuZG9tQnJlYWtwb2ludHMgPSBXZWJJbnNwZWN0b3IuY3JlYXRlRE9NQnJlYWtwb2lu
dHNTaWRlYmFyUGFuZSgpOworICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5kb21CcmVha3BvaW50
cy5leHBhbmRlZCA9IHRydWU7CisgICAgfQorCiAgICAgdGhpcy5zaWRlYmFyUGFuZXMud29ya2Vy
cyA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya2Vyc1NpZGViYXJQYW5lKCk7CiAKICAgICBmb3IgKHZh
ciBwYW5lIGluIHRoaXMuc2lkZWJhclBhbmVzKQpAQCAtMTQ1LDggKzE0OCw2IEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLnNpZGViYXJQYW5lcy5z
Y29wZWNoYWluLmV4cGFuZGVkID0gdHJ1ZTsKICAgICB0aGlzLnNpZGViYXJQYW5lcy5qc0JyZWFr
cG9pbnRzLmV4cGFuZGVkID0gdHJ1ZTsKLSAgICBpZiAoUHJlZmVyZW5jZXMuZG9tQnJlYWtwb2lu
dHNFbmFibGVkKQotICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5kb21CcmVha3BvaW50cy5leHBh
bmRlZCA9IHRydWU7CiAKICAgICB2YXIgcGFuZWxFbmFibGVySGVhZGluZyA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiWW91IG5lZWQgdG8gZW5hYmxlIGRlYnVnZ2luZyBiZWZvcmUgeW91IGNhbiB1
c2UgdGhlIFNjcmlwdHMgcGFuZWwuIik7CiAgICAgdmFyIHBhbmVsRW5hYmxlckRpc2NsYWltZXIg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVuYWJsaW5nIGRlYnVnZ2luZyB3aWxsIG1ha2Ugc2Ny
aXB0cyBydW4gc2xvd2VyLiIpOwpAQCAtMzg3LDggKzM4OCw4IEBAIFdlYkluc3BlY3Rvci5TY3Jp
cHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5jYWxsc3Rh
Y2sudXBkYXRlKGRldGFpbHMuY2FsbEZyYW1lcywgdGhpcy5fc291cmNlSURNYXApOwogICAgICAg
ICB0aGlzLnNpZGViYXJQYW5lcy5jYWxsc3RhY2suc2VsZWN0ZWRDYWxsRnJhbWUgPSBkZXRhaWxz
LmNhbGxGcmFtZXNbMF07CiAKLSAgICAgICAgaWYgKGRldGFpbHMuc3RhdHVzKQotICAgICAgICAg
ICAgdGhpcy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnVwZGF0ZVN0YXR1cyhkZXRhaWxzLnN0YXR1
cyk7CisgICAgICAgIGlmICgiZXZlbnRUeXBlIiBpbiBkZXRhaWxzKQorICAgICAgICAgICAgdGhp
cy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnVwZGF0ZVN0YXR1cyhkZXRhaWxzLmV2ZW50VHlwZSwg
ZGV0YWlscy5ldmVudERhdGEpOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwg
PSB0aGlzOwogICAgICAgICB3aW5kb3cuZm9jdXMoKTsKQEAgLTQ2Nyw3ICs0NjgsNyBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zaWRlYmFy
UGFuZXMud2F0Y2hFeHByZXNzaW9ucy5yZWZyZXNoRXhwcmVzc2lvbnMoKTsKICAgICAgICAgaWYg
KCFwcmVzZXJ2ZUl0ZW1zKSB7CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5qc0JyZWFr
cG9pbnRzLnJlc2V0KCk7Ci0gICAgICAgICAgICBpZiAoUHJlZmVyZW5jZXMuZG9tQnJlYWtwb2lu
dHNFbmFibGVkKQorICAgICAgICAgICAgaWYgKFByZWZlcmVuY2VzLm5hdGl2ZUluc3RydW1lbnRh
dGlvbkVuYWJsZWQpCiAgICAgICAgICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuZG9tQnJlYWtw
b2ludHMucmVzZXQoKTsKICAgICAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLndvcmtlcnMucmVz
ZXQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NldHRpbmdzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmlu
ZGV4IDYzZjI2NDEuLmE2Nzg2MTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TZXR0aW5ncy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGlu
Z3MuanMKQEAgLTQ0LDcgKzQ0LDcgQEAgdmFyIFByZWZlcmVuY2VzID0gewogICAgIHByb2ZpbGVy
QWx3YXlzRW5hYmxlZDogZmFsc2UsCiAgICAgYXVkaXRzUGFuZWxFbmFibGVkOiB0cnVlLAogICAg
IG9ubGluZURldGVjdGlvbkVuYWJsZWQ6IHRydWUsCi0gICAgZG9tQnJlYWtwb2ludHNFbmFibGVk
OiBmYWxzZSwKKyAgICBuYXRpdmVJbnN0cnVtZW50YXRpb25FbmFibGVkOiBmYWxzZSwKICAgICBy
ZXNvdXJjZUV4cG9ydEVuYWJsZWQ6IGZhbHNlCiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmggYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IGFj
MTg4MjguLjQ4MWI1MWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
KysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdDsKIAorICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9CiAgICAgU3RyaW5nIHN0YXR1c1RleHQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0Owog
ICAgIGludCBzdGF0dXMoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFN0YXRlIHJlYWR5U3Rh
dGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZjZGZkM2MuLjdkYWYyOTggMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA5LTIyICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmls
b3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGltcGxlbWVudCBwYXVzaW5nIG9uIFhIUgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYwODYKKworICAgICAg
ICAqIHNyYy9qcy9EZXZUb29scy5qczoKKyAgICAgICAgKCk6CisKIDIwMTAtMDktMjEgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJ1c3NlbGwuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRv
b2xzLmpzIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwppbmRleCAwYzcyNDFk
Li5hNjZlMTc0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpz
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMKQEAgLTQ1LDcgKzQ1LDcg
QEAgdmFyIGNvbnRleHQgPSB7fTsgIC8vIFVzZWQgYnkgV2ViQ29yZSdzIGluc3BlY3RvciByb3V0
aW5lcy4KICAgICBQcmVmZXJlbmNlcy5wcm9maWxlckFsd2F5c0VuYWJsZWQgPSB0cnVlOwogICAg
IFByZWZlcmVuY2VzLmNhbkVkaXRTY3JpcHRTb3VyY2UgPSB0cnVlOwogICAgIFByZWZlcmVuY2Vz
Lm9ubGluZURldGVjdGlvbkVuYWJsZWQgPSBmYWxzZTsKLSAgICBQcmVmZXJlbmNlcy5kb21CcmVh
a3BvaW50c0VuYWJsZWQgPSB0cnVlOworICAgIFByZWZlcmVuY2VzLm5hdGl2ZUluc3RydW1lbnRh
dGlvbkVuYWJsZWQgPSB0cnVlOwogfSkoKTsKIAogdmFyIGRldnRvb2xzID0gZGV2dG9vbHMgfHwg
e307Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>