<?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>31293</bug_id>
          
          <creation_ts>2009-11-10 07:21:57 -0800</creation_ts>
          <short_desc>Web Inspector: Enable &apos;console.profile()&apos; and &apos;console.profileEnd()&apos; regardless of JAVASCRIPT_DEBUGGER</short_desc>
          <delta_ts>2009-11-17 10:37:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Mikhail Naganov">mnaganov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>162043</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-11-10 07:21:57 -0800</bug_when>
    <thetext>Currently &apos;console.profile()&apos; and &apos;console.profileEnd()&apos; are only available when building against JSC. I want to make them available regardless of engine being used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162044</commentid>
    <comment_count>1</comment_count>
      <attachid>42864</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-11-10 07:25:10 -0800</bug_when>
    <thetext>Created attachment 42864
proposed change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162048</commentid>
    <comment_count>2</comment_count>
      <attachid>42866</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-11-10 07:56:00 -0800</bug_when>
    <thetext>Created attachment 42866
proposed change

Fixed a small issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162195</commentid>
    <comment_count>3</comment_count>
      <attachid>42866</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-10 13:38:20 -0800</bug_when>
    <thetext>Comment on attachment 42866
proposed change

&gt; +#else
&gt; +    bool profilerEnabled() const { return enabled(); }
&gt;  #endif

This should likely return false, sicne there is no profiler.


&gt;  #if ENABLE(JAVASCRIPT_DEBUGGER)
&gt;      typedef HashMap&lt;unsigned int, RefPtr&lt;JSC::Profile&gt; &gt; ProfilesMap;
&gt;  
&gt;      void startUserInitiatedProfilingSoon();
&gt; -    void toggleRecordButton(bool);
&gt;      void enableDebuggerFromFrontend(bool always);
&gt;      void getProfileHeaders(long callId);
&gt;      void getProfile(long callId, unsigned uid);

Why isn&apos;t everything profile related moved out of the if ENABLE(JAVASCRIPT_DEBUGGER) blocks? (Not just this file, other places too.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162471</commentid>
    <comment_count>4</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-11-11 07:39:36 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 42866 [details])
&gt; &gt; +#else
&gt; &gt; +    bool profilerEnabled() const { return enabled(); }
&gt; &gt;  #endif
&gt; 
&gt; This should likely return false, sicne there is no profiler.
&gt; 

No. Since in this case &apos;{start,stop}UserInitiatedProfiling&apos; will never run.

&gt; 
&gt; &gt;  #if ENABLE(JAVASCRIPT_DEBUGGER)
&gt; &gt;      typedef HashMap&lt;unsigned int, RefPtr&lt;JSC::Profile&gt; &gt; ProfilesMap;
&gt; &gt;  
&gt; &gt;      void startUserInitiatedProfilingSoon();
&gt; &gt; -    void toggleRecordButton(bool);
&gt; &gt;      void enableDebuggerFromFrontend(bool always);
&gt; &gt;      void getProfileHeaders(long callId);
&gt; &gt;      void getProfile(long callId, unsigned uid);
&gt; 
&gt; Why isn&apos;t everything profile related moved out of the if
&gt; ENABLE(JAVASCRIPT_DEBUGGER) blocks? (Not just this file, other places too.)

I&apos;ve tried to make more functions to be available, but this requires more additional changes making patch even more complicated, because there are things like &apos;toJS&apos;, &apos;toJSDOMWindow&apos;, which also need to be done in engine-agnostic way.

As for the &apos;console.profiles&apos; property, I&apos;m a bit confused, because it doesn&apos;t conform to injected script approach at all---it needs to be re-done in &apos;getProfiles&apos; / &apos;didGetProfiles&apos; async way, but this breaks the &quot;standard&quot; interface of the &apos;console&apos; object. This is a problem, actually.

So I would like not to submit this patch as is, and continue with profiling interface generalization in small steps. Also, mind that some of these changes will become two-sided for DevTools, so it&apos;s better to keep them simple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162501</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-11 08:59:00 -0800</bug_when>
    <thetext>What do you mean by &quot;two-sided for DevTools&quot;?

console.profiles is used by layout tests, not by the Inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162605</commentid>
    <comment_count>6</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-11-11 12:08:29 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; What do you mean by &quot;two-sided for DevTools&quot;?
&gt;

We call &quot;two-sided&quot; patches that consist of a patch to WebKit and a patch to Chromium. The main hassle is that a patch to WK Inspector can break DevTools because it changes some interface, so it may require a &quot;preventive&quot; patch into Chromium which ensures that on WebKit rollout we will not break, and possibly a &quot;cleanup&quot; patch later.

As an example, if I make &quot;InspectorController.profilerEnabled&quot; and friends available regardless of JAVASCRIPT_DEBUGGER, it will break DevTools&apos; assumption that profiler is always enabled, so proper adjustments will be needed to made in our code.

This is the main motivating factor for upstreaming stuff into WebKit. 
 
&gt; console.profiles is used by layout tests, not by the Inspector.

Ah, yes, sorry. I forgot that console is actually accessed from a page, and commands are only passed from Inspector console in order to be evaluated in page&apos;s context. So making them accessible will not cause a trouble, right.

But can we make them always available as a next step? Because this requires V8 binding for ScriptProfile to be something more that a simple stub.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162895</commentid>
    <comment_count>7</comment_count>
      <attachid>42866</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-12 07:07:47 -0800</bug_when>
    <thetext>Comment on attachment 42866
proposed change

We agreed on a simple approach to this. Clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163056</commentid>
    <comment_count>8</comment_count>
      <attachid>43100</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-11-12 14:35:26 -0800</bug_when>
    <thetext>Created attachment 43100
another approach

Pavel, Timothy,

I found that much easier way is to fork &apos;profile&apos; and &apos;profileEnd&apos; methods of console. How do you like it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163069</commentid>
    <comment_count>9</comment_count>
      <attachid>43100</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-12 14:54:08 -0800</bug_when>
    <thetext>Comment on attachment 43100
another approach

This seems fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163121</commentid>
    <comment_count>10</comment_count>
      <attachid>43100</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-12 17:30:32 -0800</bug_when>
    <thetext>Comment on attachment 43100
another approach

Rejecting patch 43100 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 11616 test cases.
inspector/console-dir.html -&gt; crashed

Exiting early after 1 failures. 9311 tests run.
490.22s total testing time

9310 test cases (99%) succeeded
1 test case (&lt;1%) crashed
5 test cases (&lt;1%) had stderr output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163132</commentid>
    <comment_count>11</comment_count>
      <attachid>43100</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-12 18:16:47 -0800</bug_when>
    <thetext>Comment on attachment 43100
another approach

Crash looks like it might be real.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163232</commentid>
    <comment_count>12</comment_count>
      <attachid>43100</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-12 23:09:15 -0800</bug_when>
    <thetext>Comment on attachment 43100
another approach

&gt; +JSValue JSConsole::profile(ExecState* exec, const ArgList&amp; args)
&gt; +{
&gt; +    ScriptCallStack callStack(exec, args, 1);
&gt; +    impl()-&gt;profile(args.at(0).getString(), &amp;callStack);
&gt; +    return jsUndefined();
&gt; +}

I don&apos;t think that test crash is relevant, but I think you should have borrowed all the logic from the generated bindings:

ScriptCallStack callStack(exec, args, 1);
const UString&amp; title = valueToStringWithUndefinedOrNullCheck(exec, args.at(0));
imp-&gt;profile(title, &amp;callStack);

Btw, why do v8 customs not use profile names?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163235</commentid>
    <comment_count>13</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-11-12 23:15:21 -0800</bug_when>
    <thetext>I&apos;ve seen console-dir and console-dirxml crash on my machine (on Windows, using run-webkit-tests or just straight DumpRenderTree). I&apos;m on a different one right now, but can post a backtrace to this or a different bug if there is one tracking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163263</commentid>
    <comment_count>14</comment_count>
      <attachid>43146</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-11-13 01:01:54 -0800</bug_when>
    <thetext>Created attachment 43146
fixed argument conversion in JSC binding

I think &apos;console dir&apos; test crash is completely unrelated. I ran &apos;inspector&apos; tests for several times w/o any troubles.

I fixed arguments conversion in JSC binding. As for V8, it currently doesn&apos;t afford an ability to tag profiles with custom labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163267</commentid>
    <comment_count>15</comment_count>
      <attachid>43146</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-13 01:22:23 -0800</bug_when>
    <thetext>Comment on attachment 43146
fixed argument conversion in JSC binding

Rejecting patch 43146 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 11618 test cases.
http/tests/xmlhttprequest/abort-crash.html -&gt; crashed

Exiting early after 1 failures. 9146 tests run.
436.30s total testing time

9145 test cases (99%) succeeded
1 test case (&lt;1%) crashed
5 test cases (&lt;1%) had stderr output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163270</commentid>
    <comment_count>16</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-13 01:52:04 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/WebCore.gypi
	M	WebCore/bindings/js/JSConsoleCustom.cpp
	A	WebCore/bindings/v8/custom/V8ConsoleCustom.cpp
	M	WebCore/bindings/v8/custom/V8CustomBinding.h
	M	WebCore/page/Console.idl
Committed r50933</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163387</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-13 11:39:36 -0800</bug_when>
    <thetext>Filed bug 31480 about the crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164243</commentid>
    <comment_count>18</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2009-11-17 08:31:06 -0800</bug_when>
    <thetext>This change broke the JSC builds (e.g. QtWebKit) with JAVASCRIPT_DEBUGGER turned off (this was a supported configuration).

Building QtWebKit with --minimal will result in the following linker error:

WebKitBuildQt/Release/lib/libQtWebKit.so: undefined reference to
`WebCore::JSConsole::profile(JSC::ExecState*, JSC::ArgList const&amp;)&apos;
WebKitBuildQt/Release/lib/libQtWebKit.so: undefined reference to
`WebCore::JSConsole::profileEnd(JSC::ExecState*, JSC::ArgList const&amp;)&apos;


I&apos;m not sure how to resolve this problem.
 - we could either change the semantics of JAVASCRIPT_DEBUGGER so that it only disables the debugger and not the profiler (myself would not prefer this option)
 - revert this change and Chromium can maybe define JAVASCRIPT_DEBUGGER (instead of removing the flags). This is probably not an option either as Chromium will not build in this configuration. 

Maybe we should use the CHROMIUM test for this cases instead of changing the meaning of the JAVASCRIPT_DEBUGGER flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164246</commentid>
    <comment_count>19</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-11-17 08:46:24 -0800</bug_when>
    <thetext>I think, I can make more fine-grained #ifdefs in JSConsoleCustom, so functions will be there, but they will be empty.

The only drawback is that &apos;console.profile&apos; and &apos;console.profileEnd&apos; will present even if &apos;JAVASCRIPT_DEBUGGER&apos; is turned off. But I think this isn&apos;t a problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164249</commentid>
    <comment_count>20</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2009-11-17 09:09:14 -0800</bug_when>
    <thetext>I would change the test in Console.idl to 
#if defined(ENABLE_JAVASCRIPT_DEBUGGER) &amp;&amp; ENABLE_JAVASCRIPT_DEBUGGER || (defined(PLATFORM_CHROMIUM))

and revert the change made in WebCore/bindings/js/JSConsoleCustom.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164250</commentid>
    <comment_count>21</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2009-11-17 09:10:26 -0800</bug_when>
    <thetext>We should either REOPEN this bug (I do not seems to have permission to do so) or use this new bug (https://bugs.webkit.org/show_bug.cgi?id=31575) to track this work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164268</commentid>
    <comment_count>22</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-11-17 10:37:55 -0800</bug_when>
    <thetext>Laszlo, your proposal for introducing platform check makes sense. And it will actually suffice---no need to change JSConsoleCustom, because:
 - in case of JSC w/debugger there will be both declaration and definition;
 - in case of JSC w/o debugger there will be no declaration and no definition;
 - in case of Chromium, there will be declaration and definition in V8 bindings (JSC bindings will be ignored);

I will make a patch and test it with Chromium, could you then test it with Qt (as I heard building Qt version of WK is tricky due to a need of bleeding edge glibc)?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42864</attachid>
            <date>2009-11-10 07:25:10 -0800</date>
            <delta_ts>2009-11-10 07:56:00 -0800</delta_ts>
            <desc>proposed change</desc>
            <filename>add-console-profile-patch</filename>
            <type>text/plain</type>
            <size>38660</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Yzc2ZDRhZC4uNWE3ZmY1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAwOS0xMS0xMCAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSAnY29uc29sZS5wcm9maWxlKCknIGFuZCAnY29u
c29sZS5wcm9maWxlRW5kKCknIHJlZ2FyZGxlc3Mgb2YgSkFWQVNDUklQVF9ERUJVR0dFUi4KKwor
ICAgICAgICBDb25zb2xlIG5vdyBkZWxlZ2F0ZXMgdG8gSW5zcGVjdG9yQ29udHJvbGxlci4gSUMn
cyBjb2RlIGlzIG5vdworICAgICAgICBlbmdpbmUtaW5kZXBlbmRlbnQuIEVuZ2luZS1kZXBlbmRl
bnQgY29kZSBoYXMgYmVlbiBtb3ZlZCB0byBiaW5kaW5ncy4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEyOTMKKworICAgICAgICBFeGlzdGluZyBw
cm9maWxlciB0ZXN0cyBwYXNzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5i
a2w6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRQcm9maWxlcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnN0
b3ApOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmg6IEFkZGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGUuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRQcm9maWxlOjp+U2NyaXB0UHJvZmlsZSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0UHJvZmlsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFBy
b2ZpbGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6c3RvcCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuaDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q3VycmVudFVz
ZXJJbml0aWF0ZWRQcm9maWxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OnByb2ZpbGVyRW5hYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuaDoKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
c29sZTo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpwcm9maWxlRW5kKToK
KyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaDoKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaWRsOgor
CiAyMDA5LTExLTEwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGI4OTlkMjIuLmUwN2Fh
ZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtNDY3LDYgKzQ2Nyw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRPYmplY3RRdWFyYW50aW5lLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRP
YmplY3RRdWFyYW50aW5lLmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5o
IFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcCBcCisJV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFNvdXJjZUNvZGUuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VQcm92aWRl
ci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGM1ZTFj
MDAuLjg3MjJkNTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC03NjksNiArNzY5LDkgQEAKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9TY3JpcHRPYmplY3QuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0T2Jq
ZWN0UXVhcmFudGluZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVj
dFF1YXJhbnRpbmUuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZS5o
JywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAnLAorICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1NjcmlwdFNjb3BlLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0
U2NvcGUuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0U291cmNlQ29kZS5oJywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IDI5NTgyYzQuLjI1MGU4NzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNzYzLDYgKzc2Myw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIGJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgXAogICAgIGJpbmRpbmdzL2pz
L1NjcmlwdE9iamVjdC5jcHAgXAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdFF1YXJhbnRp
bmUuY3BwIFwKKyAgICBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAgXAogICAgIGJpbmRp
bmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3Bw
IFwKICAgICBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDY1OTM5OC4uYjVhNTY1YSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzODAsNiArMjM4MCw5
IEBACiAJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REQ0RDg0MEZERjRENkQw
MEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLzsgfTsKIAkJOTdERDREODcwRkRGNEQ2RTAwRUNG
OUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggKi87IH07
CiAJCTk3RUY3REZFMTA3RTU1QjcwMEQ3QzQ5QyAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0VGN0RGRDEw
N0U1NUI3MDBEN0M0OUMgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwICovOyB9OworCQk5RjlC
MkM1MDEwQTYxNzhBMDA0MkJGOUEgLyogU2NyaXB0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY5QjJDNEQxMEE2MTc4QTAwNDJCRjlBIC8q
IFNjcmlwdFByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk5RjlCMkM1MTEwQTYxNzhBMDA0MkJGOUEgLyogU2NyaXB0UHJvZmlsZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY5QjJDNEUx
MEE2MTc4QTAwNDJCRjlBIC8qIFNjcmlwdFByb2ZpbGVyLmNwcCAqLzsgfTsKKwkJOUY5QjJDNTIx
MEE2MTc4QTAwNDJCRjlBIC8qIFNjcmlwdFByb2ZpbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjlCMkM0RjEwQTYxNzhBMDA0MkJGOUEgLyogU2Ny
aXB0UHJvZmlsZXIuaCAqLzsgfTsKIAkJQTE3QzgxMjIwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxF
bGVtZW50RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNw
cCAqLzsgfTsKIAkJQTE3QzgxMjMwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9y
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3Qzgx
MjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovOyB9OwogCQlBNzE4
NzYwRTBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAvKiBE
cmFnQWN0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC03NjA4LDYgKzc2MTEsOSBAQAogCQk5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5QTQgLyog
WFNTQXVkaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU1NB
dWRpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdERDREODUwRkRGNEQ2
RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gWFNTQXVkaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0VGN0RGRDEw
N0U1NUI3MDBEN0M0OUMgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5RjlCMkM0RDEwQTYxNzhBMDA0MkJGOUEgLyogU2NyaXB0
UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRQcm9maWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGOUIyQzRFMTBBNjE3OEEwMDQyQkY5
QSAvKiBTY3JpcHRQcm9maWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTY3JpcHRQcm9maWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlG
OUIyQzRGMTBBNjE3OEEwMDQyQkY5QSAvKiBTY3JpcHRQcm9maWxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRQcm9maWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50RmFj
dG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIxMEYyQTVDRjcw
MDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE3MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEcmFnQWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTQzMjUsNiArMTQzMzEsOSBAQAogCQkJCTQxRjA2NkUyMEY2NEJDRjYwMEEw
N0VBQyAvKiBTY3JpcHRPYmplY3QuaCAqLywKIAkJCQk0MTJBNjg0NjBGNkIwM0REMDAwRUE2NkUg
LyogU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAgKi8sCiAJCQkJNDE5NTM2NTAwRjY4MjIyNDAw
RDBDNjc5IC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuaCAqLywKKwkJCQk5RjlCMkM0RDEwQTYx
NzhBMDA0MkJGOUEgLyogU2NyaXB0UHJvZmlsZS5oICovLAorCQkJCTlGOUIyQzRFMTBBNjE3OEEw
MDQyQkY5QSAvKiBTY3JpcHRQcm9maWxlci5jcHAgKi8sCisJCQkJOUY5QjJDNEYxMEE2MTc4QTAw
NDJCRjlBIC8qIFNjcmlwdFByb2ZpbGVyLmggKi8sCiAJCQkJOTM0Q0MxMDkwRURCMjIzOTAwQTY1
OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCAqLywKIAkJCQlDRTU0RkQzNzEwMTZEOUE2MDA4QjQ0
QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQk0MTI3RDUzNjBGOEFBQjFEMDBF
NDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovLApAQCAtMTgwOTksNiArMTgxMDgsOCBAQAogCQkJ
CTE0NzlGQUYwMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5QmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQ3OUZBRjIxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlSdW4uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0NzlGQUY0MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5VGV4
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUY5QjJDNTAxMEE2MTc4QTAwNDJCRjlBIC8qIFNjcmlw
dFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTlGOUIyQzUyMTBBNjE3OEEwMDQyQkY5QSAv
KiBTY3JpcHRQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDIzOSw2ICsyMDI1MCw3IEBA
CiAJCQkJMTQ3OUZBRUYxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlCYXNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0NzlGQUYxMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5UnVu
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzlGQUYzMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5k
ZXJSdWJ5VGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5RjlCMkM1MTEwQTYxNzhBMDA0MkJG
OUEgLyogU2NyaXB0UHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmVTb3VyY2VzLmJrbCBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCmluZGV4
IGM1NzkwODQuLjZmOGI2NWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmts
CisrKyBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCkBAIC0xNTYsNiArMTU2LDcgQEAgVGhp
cyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZWRlZCB0byBidWlsZCBXZWJDb3Jl
LgogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCiAgICAgICAgIGJp
bmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKICAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0T2Jq
ZWN0UXVhcmFudGluZS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3Bw
IFwKICAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCiAgICAgICAgIGJpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggZjA4
MzAzYS4uNmI1OGM0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcApAQCAtMTQ1LDYgKzE0NSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5j
cHAiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCIKICNpbmNsdWRlICJTY3JpcHRP
YmplY3RRdWFyYW50aW5lLmNwcCIKKyNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5jcHAiCiAjaW5j
bHVkZSAiU2NyaXB0U3RhdGUuY3BwIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAiCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0UHJvZmlsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkYTAx
NGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUu
aApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NyaXB0UHJvZmlsZV9oCisjZGVmaW5lIFNjcmlw
dFByb2ZpbGVfaAorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisjaW5jbHVkZSA8
cHJvZmlsZXIvUHJvZmlsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgSlND
OjpQcm9maWxlIFNjcmlwdFByb2ZpbGU7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisjZW5kaWYgLy8gU2NyaXB0UHJv
ZmlsZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlOGYxZGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisjaW5jbHVk
ZSAiU2NyaXB0UHJvZmlsZXIuaCIKKyNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU2NyaXB0UHJvZmlsZXI6OnN0YXJ0KFNjcmlwdFN0
YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBKU0M6OlByb2ZpbGVyOjpw
cm9maWxlcigpLT5zdGFydFByb2ZpbGluZyhzdGF0ZSwgdGl0bGUpOworfQorCitQYXNzUmVmUHRy
PFNjcmlwdFByb2ZpbGU+IFNjcmlwdFByb2ZpbGVyOjpzdG9wKFNjcmlwdFN0YXRlKiBzdGF0ZSwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICByZXR1cm4gSlNDOjpQcm9maWxlcjo6cHJvZmls
ZXIoKS0+c3RvcFByb2ZpbGluZyhzdGF0ZSwgdGl0bGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0UHJvZmlsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xYWJmMDcyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQ
cm9maWxlci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDksIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRQcm9maWxlcl9oCisjZGVm
aW5lIFNjcmlwdFByb2ZpbGVyX2gKKworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQor
I2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorCisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgU2NyaXB0UHJvZmlsZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIHN0
YXRpYyB2b2lkIHN0YXJ0KFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gc3RvcChTY3JpcHRTdGF0ZSog
c3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNlbmRpZiAvLyBT
Y3JpcHRQcm9maWxlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFBy
b2ZpbGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzYWVlN2YKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGUuaApAQCAtMCwwICsxLDQyIEBACisvKgorICog
Q29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
U2NyaXB0UHJvZmlsZV9oCisjZGVmaW5lIFNjcmlwdFByb2ZpbGVfaAorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0cnVjdCBTY3JpcHRQcm9maWxlIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0
UHJvZmlsZT4geworICB2aXJ0dWFsIH5TY3JpcHRQcm9maWxlKCkge30KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmlwdFByb2ZpbGVfaApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdFByb2ZpbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5mYzViYjQyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQ
cm9maWxlci5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOSwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2NyaXB0UHJvZmlsZXIuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordm9pZCBTY3JpcHRQcm9maWxlcjo6c3RhcnQoU2NyaXB0U3RhdGUqIHN0YXRl
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAg
ICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBzdGF0ZS0+ZnJhbWUoKTsKKyAgICB2ODo6Q29udGV4
dDo6U2NvcGUgY29udGV4dF9zY29wZShWOFByb3h5Ojpjb250ZXh0KGZyYW1lKSk7CisgICAgdjg6
OlY4OjpSZXN1bWVQcm9maWxlcigpOworfQorCitQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IFNj
cmlwdFByb2ZpbGVyOjpzdG9wKFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkKK3sKKyAgICB2ODo6Vjg6OlBhdXNlUHJvZmlsZXIoKTsKKyAgICByZXR1cm4gMDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRQcm9maWxlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYTFkOTcKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKQEAgLTAsMCArMSw1MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFNjcmlwdFByb2ZpbGVyX2gKKyNkZWZpbmUgU2NyaXB0UHJvZmlsZXJfaAorCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCisj
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdFByb2ZpbGVyIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBzdGFydChTY3JpcHRTdGF0ZSog
c3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlw
dFByb2ZpbGU+IHN0b3AoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmlwdFByb2ZpbGVy
X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMGM4Y2Mx
NS4uOGYyOTc5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTcwLDYgKzcwLDcgQEAKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKICNpbmNs
dWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgi
CisjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTdHJpbmcuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC05
Niw3ICs5Nyw2IEBACiAjaW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAKICNpbmNs
dWRlIDxwcm9maWxlci9Qcm9maWxlLmg+Ci0jaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZXIuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5o
PgogCkBAIC0xMzYsMTMgKzEzNiwxMyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgICwgbV9y
ZXNvdXJjZVRyYWNraW5nU2V0dGluZ3NMb2FkZWQoZmFsc2UpCiAgICAgLCBtX2luc3BlY3RvckJh
Y2tlbmQoSW5zcGVjdG9yQmFja2VuZDo6Y3JlYXRlKHRoaXMsIGNsaWVudCkpCiAgICAgLCBtX2xh
c3RCb3VuZE9iamVjdElkKDEpCisgICAgLCBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51
bWJlcigtMSkKKyAgICAsIG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKDEpCiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgLCBtX2RlYnVnZ2VyRW5hYmxlZChmYWxz
ZSkKICAgICAsIG1fYXR0YWNoRGVidWdnZXJXaGVuU2hvd24oZmFsc2UpCiAgICAgLCBtX3Byb2Zp
bGVyRW5hYmxlZChmYWxzZSkKICAgICAsIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUo
ZmFsc2UpCi0gICAgLCBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcigtMSkKLSAg
ICAsIG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKDEpCiAgICAgLCBtX3N0YXJ0UHJv
ZmlsaW5nKHRoaXMsICZJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcpCiAjZW5kaWYKIHsKQEAgLTEzODksMTAgKzEzODksMTEgQEAgdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjphZGRQcm9maWxlRmluaXNoZWRNZXNzYWdlVG9Db25zb2xlKFBhc3NSZWZQdHI8
UHJvZmlsZT4KICAgICBtZXNzYWdlICs9ICJcIiBmaW5pc2hlZC4iOwogICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVs
LCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQorI2VuZGlmCiAKLXZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0
IFVTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBVU3RyaW5nJiBzb3Vy
Y2VVUkwpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZFN0YXJ0UHJvZmlsaW5nTWVzc2Fn
ZVRvQ29uc29sZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBVU3RyaW5nIG1lc3NhZ2UgPSAiUHJvZmlsZSBc
IndlYmtpdC1wcm9maWxlOi8vIjsKKyAgICBTdHJpbmcgbWVzc2FnZSA9ICJQcm9maWxlIFwid2Vi
a2l0LXByb2ZpbGU6Ly8iOwogICAgIG1lc3NhZ2UgKz0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVl
bmNlcyhDUFVQcm9maWxlVHlwZSk7CiAgICAgbWVzc2FnZSArPSAiLyI7CiAgICAgbWVzc2FnZSAr
PSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHRpdGxlKTsKQEAgLTE0MDAsNiArMTQwMSw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9D
b25zb2xlKGNvbnN0IFVTdHJpbmcmIHRpdGxlCiAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShKU01l
c3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvZmlsZUhlYWRlcnMobG9uZyBjYWxs
SWQpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kKQpAQCAtMTQyOSwxOSArMTQzMSwxNyBAQCBTY3Jp
cHRPYmplY3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBK
U0M6OlByb2ZpbGUmIHByb2ZpbAogICAgIGhlYWRlci5zZXQoInR5cGVJZCIsIFVTdHJpbmcoQ1BV
UHJvZmlsZVR5cGUpKTsKICAgICByZXR1cm4gaGVhZGVyOwogfQorI2VuZGlmCiAKLVVTdHJpbmcg
SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShi
b29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIgPSBmYWxzZSkKK1N0cmluZyBJbnNwZWN0b3JDb250
cm9sbGVyOjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKGJvb2wgaW5jcmVtZW50
UHJvZmlsZU51bWJlciA9IGZhbHNlKQogewogICAgIGlmIChpbmNyZW1lbnRQcm9maWxlTnVtYmVy
KQogICAgICAgICBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlciA9IG1fbmV4dFVz
ZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKys7ICAgICAgICAKIAotICAgIFVTdHJpbmcgdGl0bGUg
PSBVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWU7Ci0gICAgdGl0bGUgKz0gIi4iOwotICAgIHRpdGxl
ICs9IFVTdHJpbmc6OmZyb20obV9jdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIpOwot
ICAgIAotICAgIHJldHVybiB0aXRsZTsKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzLiVk
IiwgVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lLCBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmls
ZU51bWJlcik7CiB9CiAKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nU29vbigpCiB7CiAg
ICAgbV9zdGFydFByb2ZpbGluZy5zdGFydE9uZVNob3QoMCk7CkBAIC0xNDU5LDMxICsxNDU5LDY5
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5n
KFRpbWVyPEluc3BlY3RvckNvbnRyb2xsZXI+CiAKICAgICBtX3JlY29yZGluZ1VzZXJJbml0aWF0
ZWRQcm9maWxlID0gdHJ1ZTsKIAotICAgIFVTdHJpbmcgdGl0bGUgPSBnZXRDdXJyZW50VXNlcklu
aXRpYXRlZFByb2ZpbGVOYW1lKHRydWUpOworICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9
IHRvSlNET01XaW5kb3cobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSwgZGVidWdnZXJXb3Js
ZCgpKS0+Z2xvYmFsRXhlYygpOworICAgIHN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyhTdHJp
bmcoKSwgMCwgc2NyaXB0U3RhdGUpOworfQogCi0gICAgRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9
IHRvSlNET01XaW5kb3cobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSwgZGVidWdnZXJXb3Js
ZCgpKS0+Z2xvYmFsRXhlYygpOwotICAgIFByb2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2Zp
bGluZyhzY3JpcHRTdGF0ZSwgdGl0bGUpOwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9w
VXNlckluaXRpYXRlZFByb2ZpbGluZygpCit7CisgICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAg
IHJldHVybjsKIAotICAgIGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZSh0aXRsZSwg
MCwgVVN0cmluZygpKTsKKyAgICBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlID0gZmFs
c2U7CiAKLSAgICB0b2dnbGVSZWNvcmRCdXR0b24odHJ1ZSk7CisgICAgU2NyaXB0U3RhdGUqIHNj
cmlwdFN0YXRlID0gdG9KU0RPTVdpbmRvdyhtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLCBk
ZWJ1Z2dlcldvcmxkKCkpLT5nbG9iYWxFeGVjKCk7CisgICAgc3RvcFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcoZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSgpLCAwLCBzY3JpcHRTdGF0
ZSk7CiB9CisjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVXNlckluaXRp
YXRlZFByb2ZpbGluZygpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0VXNlckluaXRp
YXRlZFByb2ZpbGluZyhjb25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxT
dGFjaywgU2NyaXB0U3RhdGUqIHN0YXRlKQogewogICAgIGlmICghZW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlID0gZmFsc2U7
CisgICAgaWYgKCFwcm9maWxlckVuYWJsZWQoKSkgeworICAgICAgICAvLyBGSVhNRTogbG9nIGEg
Y29uc29sZSBtZXNzYWdlIHdoZW4gcHJvZmlsaW5nIGlzIGRpc2FibGVkLgorICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgU3RyaW5nIHJlc29sdmVkVGl0bGUgPSB0aXRsZTsKKyAgICBpZiAo
dGl0bGUuaXNOdWxsKCkpICAgLy8gbm8gdGl0bGUgc28gZ2l2ZSBpdCB0aGUgbmV4dCB1c2VyIGlu
aXRpYXRlZCBwcm9maWxlIHRpdGxlLgorICAgICAgICByZXNvbHZlZFRpdGxlID0gZ2V0Q3VycmVu
dFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSh0cnVlKTsKIAotICAgIFVTdHJpbmcgdGl0bGUgPSBn
ZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKCk7CisgICAgaWYgKGNhbGxTdGFjaykg
eworICAgICAgICBTY3JpcHRQcm9maWxlcjo6c3RhcnQoY2FsbFN0YWNrLT5zdGF0ZSgpLCByZXNv
bHZlZFRpdGxlKTsKKyAgICAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0g
Y2FsbFN0YWNrLT5hdCgwKTsKKyAgICAgICAgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25z
b2xlKHJlc29sdmVkVGl0bGUsIGxhc3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNv
dXJjZVVSTCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBTY3JpcHRQcm9maWxlcjo6c3RhcnQo
c3RhdGUsIHJlc29sdmVkVGl0bGUpOworICAgICAgICBhZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VU
b0NvbnNvbGUocmVzb2x2ZWRUaXRsZSwgMCwgU3RyaW5nKCkpOworICAgIH0KIAotICAgIEV4ZWNT
dGF0ZSogc2NyaXB0U3RhdGUgPSB0b0pTRE9NV2luZG93KG1faW5zcGVjdGVkUGFnZS0+bWFpbkZy
YW1lKCksIGRlYnVnZ2VyV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKLSAgICBSZWZQdHI8UHJvZmls
ZT4gcHJvZmlsZSA9IFByb2ZpbGVyOjpwcm9maWxlcigpLT5zdG9wUHJvZmlsaW5nKHNjcmlwdFN0
YXRlLCB0aXRsZSk7Ci0gICAgaWYgKHByb2ZpbGUpCi0gICAgICAgIGFkZFByb2ZpbGUocHJvZmls
ZSwgMCwgVVN0cmluZygpKTsKKyAgICB0b2dnbGVSZWNvcmRCdXR0b24odHJ1ZSk7Cit9CisKK1Bh
c3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFVzZXJJbml0
aWF0ZWRQcm9maWxpbmcoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxs
U3RhY2ssIFNjcmlwdFN0YXRlKiBzdGF0ZSkKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZTsKKyAgICBp
ZiAoY2FsbFN0YWNrKSB7CisgICAgICAgIHByb2ZpbGUgPSBTY3JpcHRQcm9maWxlcjo6c3RvcChj
YWxsU3RhY2stPnN0YXRlKCksIHRpdGxlKTsKKyAgICAgICAgaWYgKHByb2ZpbGUpIHsKKyAgICAg
ICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQo
MCk7CisgICAgICAgICAgICBhZGRQcm9maWxlKHByb2ZpbGUsIGxhc3RDYWxsZXIubGluZU51bWJl
cigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIHByb2ZpbGUgPSBTY3JpcHRQcm9maWxlcjo6c3RvcChzdGF0ZSwgdGl0bGUpOworICAg
ICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAgIGFkZFByb2ZpbGUocHJvZmlsZSwgMCwgU3Ry
aW5nKCkpOworICAgIH0KIAogICAgIHRvZ2dsZVJlY29yZEJ1dHRvbihmYWxzZSk7CisKKyAgICBy
ZXR1cm4gcHJvZmlsZTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp0b2dnbGVSZWNv
cmRCdXR0b24oYm9vbCBpc1Byb2ZpbGluZykKQEAgLTE0OTMsNiArMTUzMSw3IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6dG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcpCiAg
ICAgbV9mcm9udGVuZC0+c2V0UmVjb3JkaW5nUHJvZmlsZShpc1Byb2ZpbGluZyk7CiB9CiAKKyNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5hYmxlUHJvZmlsZXIoYm9vbCBhbHdheXMsIGJvb2wgc2tpcFJlY29tcGlsZSkKIHsKICAgICBp
ZiAoYWx3YXlzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDIy
YmQwNzYuLjg1NGQ2NzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
IlNjcmlwdEFycmF5LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2Ny
aXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
VmFsdWUuaCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCkBAIC0yNjYsMTEgKzI2NywxOSBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgdm9pZCBhZGRQcm9m
aWxlKFBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
SlNDOjpVU3RyaW5nJiBzb3VyY2VVUkwpOwogICAgIHZvaWQgYWRkUHJvZmlsZUZpbmlzaGVkTWVz
c2FnZVRvQ29uc29sZShQYXNzUmVmUHRyPEpTQzo6UHJvZmlsZT4sIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IEpTQzo6VVN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2b2lkIGFkZFN0YXJ0UHJv
ZmlsaW5nTWVzc2FnZVRvQ29uc29sZShjb25zdCBKU0M6OlVTdHJpbmcmIHRpdGxlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBKU0M6OlVTdHJpbmcmIHNvdXJjZVVSTCk7CisjZWxzZQorICAg
IHZvaWQgYWRkUHJvZmlsZShTY3JpcHRQcm9maWxlLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikg
e30KKyNlbmRpZgorICAgIHZvaWQgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNv
bnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKTsKIAorI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGJvb2wgaXNS
ZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjb3JkaW5n
VXNlckluaXRpYXRlZFByb2ZpbGU7IH0KKyNlbmRpZgogCi0gICAgSlNDOjpVU3RyaW5nIGdldEN1
cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoYm9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVy
KTsKKyAgICBTdHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29sIGlu
Y3JlbWVudFByb2ZpbGVOdW1iZXIpOworICAgIHZvaWQgc3RhcnRVc2VySW5pdGlhdGVkUHJvZmls
aW5nKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrLCBTY3Jp
cHRTdGF0ZSogc3RhdGUgPSAwKTsKKyAgICBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHN0b3BV
c2VySW5pdGlhdGVkUHJvZmlsaW5nKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFj
ayogY2FsbFN0YWNrLCBTY3JpcHRTdGF0ZSogc3RhdGUgPSAwKTsKKyNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKICAgICB2b2lkIHN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyhUaW1l
cjxJbnNwZWN0b3JDb250cm9sbGVyPiogPSAwKTsKICAgICB2b2lkIHN0b3BVc2VySW5pdGlhdGVk
UHJvZmlsaW5nKCk7CiAKQEAgLTI4OCw2ICsyOTcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OlNvdXJj
ZUNvZGUmLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBKU0M6OlVTdHJpbmcmIGVycm9yTWVzc2FnZSk7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbnRp
bnVlKCk7CisjZWxzZQorICAgIGJvb2wgcHJvZmlsZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
ZW5hYmxlZCgpOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVu
ZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQpOwpAQCAtMzE2LDExICszMjcsMTEg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pOwogCisgICAgdm9pZCB0b2dnbGVSZWNvcmRCdXR0
b24oYm9vbCk7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgdHlwZWRlZiBI
YXNoTWFwPHVuc2lnbmVkIGludCwgUmVmUHRyPEpTQzo6UHJvZmlsZT4gPiBQcm9maWxlc01hcDsK
IAogICAgIHZvaWQgc3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nU29vbigpOwotICAgIHZvaWQg
dG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wpOwogICAgIHZvaWQgZW5hYmxlRGVidWdnZXJGcm9tRnJv
bnRlbmQoYm9vbCBhbHdheXMpOwogICAgIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMobG9uZyBjYWxs
SWQpOwogICAgIHZvaWQgZ2V0UHJvZmlsZShsb25nIGNhbGxJZCwgdW5zaWduZWQgdWlkKTsKQEAg
LTM5MywxMyArNDA0LDEzIEBAIHByaXZhdGU6CiAKICAgICBsb25nIG1fbGFzdEJvdW5kT2JqZWN0
SWQ7CiAgICAgVmVjdG9yPHBhaXI8bG9uZywgU3RyaW5nPiA+IG1fcGVuZGluZ0V2YWx1YXRlVGVz
dENvbW1hbmRzOworICAgIGludCBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcjsK
KyAgICB1bnNpZ25lZCBtX25leHRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcjsKICNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBib29sIG1fZGVidWdnZXJFbmFibGVkOwogICAg
IGJvb2wgbV9hdHRhY2hEZWJ1Z2dlcldoZW5TaG93bjsKICAgICBib29sIG1fcHJvZmlsZXJFbmFi
bGVkOwogICAgIGJvb2wgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZTsKLSAgICBpbnQg
bV9jdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXI7Ci0gICAgdW5zaWduZWQgbV9uZXh0
VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXI7CiAgICAgVGltZXI8SW5zcGVjdG9yQ29udHJvbGxl
cj4gbV9zdGFydFByb2ZpbGluZzsKICAgICBQcm9maWxlc01hcCBtX3Byb2ZpbGVzOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKaW5kZXggZmM1ZjU1MS4uYjg1
MGY0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3Bw
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcApAQCAtMjc3LDYg
KzI3Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZFByb2ZpbGVIZWFkZXIoY29uc3Qg
U2NyaXB0VmFsdWUmIHByb2ZpbGUpCiAgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KHByb2Zp
bGUpOwogICAgIGZ1bmN0aW9uLT5jYWxsKCk7CiB9CisjZW5kaWYKIAogdm9pZCBJbnNwZWN0b3JG
cm9udGVuZDo6c2V0UmVjb3JkaW5nUHJvZmlsZShib29sIGlzUHJvZmlsaW5nKQogewpAQCAtMjg1
LDYgKzI4Niw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnNldFJlY29yZGluZ1Byb2ZpbGUo
Ym9vbCBpc1Byb2ZpbGluZykKICAgICBmdW5jdGlvbi0+Y2FsbCgpOwogfQogCisjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCiB2b2lkIEluc3BlY3RvckZyb250ZW5kOjpkaWRHZXRQcm9m
aWxlSGVhZGVycyhpbnQgY2FsbElkLCBjb25zdCBTY3JpcHRBcnJheSYgaGVhZGVycykKIHsKICAg
ICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdGdW5jdGlvbkNhbGwoImRp
ZEdldFByb2ZpbGVIZWFkZXJzIikpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgK
aW5kZXggM2NiOWI4Yy4uYzUzNGZmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZC5oCkBAIC04Miw2ICs4Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBy
ZXNvdXJjZVRyYWNraW5nV2FzRW5hYmxlZCgpOwogICAgICAgICB2b2lkIHJlc291cmNlVHJhY2tp
bmdXYXNEaXNhYmxlZCgpOwogCisgICAgICAgIHZvaWQgc2V0UmVjb3JkaW5nUHJvZmlsZShib29s
IGlzUHJvZmlsaW5nKTsKKwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgICAg
ICB2b2lkIGF0dGFjaERlYnVnZ2VyV2hlblNob3duKCk7CiAgICAgICAgIHZvaWQgZGVidWdnZXJX
YXNFbmFibGVkKCk7CkBAIC05MSw3ICs5Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBwYXJzZWRTY3JpcHRTb3VyY2UoY29uc3QgSlNDOjpTb3VyY2VDb2RlJik7CiAgICAg
ICAgIHZvaWQgZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZShjb25zdCBKU0M6OlNvdXJjZUNvZGUm
LCBpbnQgZXJyb3JMaW5lLCBjb25zdCBKU0M6OlVTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAgICAg
ICAgIHZvaWQgYWRkUHJvZmlsZUhlYWRlcihjb25zdCBTY3JpcHRWYWx1ZSYgcHJvZmlsZSk7Ci0g
ICAgICAgIHZvaWQgc2V0UmVjb3JkaW5nUHJvZmlsZShib29sIGlzUHJvZmlsaW5nKTsKICAgICAg
ICAgdm9pZCBkaWRHZXRQcm9maWxlSGVhZGVycyhpbnQgY2FsbElkLCBjb25zdCBTY3JpcHRBcnJh
eSYgaGVhZGVycyk7CiAgICAgICAgIHZvaWQgZGlkR2V0UHJvZmlsZShpbnQgY2FsbElkLCBjb25z
dCBTY3JpcHRWYWx1ZSYgcHJvZmlsZSk7CiAgICAgICAgIHZvaWQgcGF1c2VkU2NyaXB0KGNvbnN0
IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Db25z
b2xlLmNwcCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAppbmRleCAwYzY2NzI0Li4wMTAxZDdm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdl
L0NvbnNvbGUuY3BwCkBAIC0zOSwxMiArMzksOSBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotCi0jaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0jaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZXIuaD4K
LSNlbmRpZgotCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0
UHJvZmlsZS5oIgorCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFy
YW0uaD4KIApAQCAtMzEzLDkgKzMxMCw3IEBAIFN0cmluZyBDb25zb2xlOjpsYXN0V01MRXJyb3JN
ZXNzYWdlKCkgY29uc3QKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCi0KLXZvaWQgQ29uc29sZTo6cHJvZmlsZShjb25zdCBKU0M6OlVTdHJpbmcmIHRpdGxlLCBT
Y3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6cHJvZmlsZShjb25zdCBT
dHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKIHsKICAgICBQYWdlKiBw
YWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKQEAgLTMyMywyOCArMzE4LDExIEBA
IHZvaWQgQ29uc29sZTo6cHJvZmlsZShjb25zdCBKU0M6OlVTdHJpbmcmIHRpdGxlLCBTY3JpcHRD
YWxsU3RhY2sqIGNhbGxTdGFjaykKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgSW5zcGVj
dG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsK
LSAgICAvLyBGSVhNRTogbG9nIGEgY29uc29sZSBtZXNzYWdlIHdoZW4gcHJvZmlsaW5nIGlzIGRp
c2FibGVkLgotICAgIGlmICghY29udHJvbGxlci0+cHJvZmlsZXJFbmFibGVkKCkpCi0gICAgICAg
IHJldHVybjsKLSNlbmRpZgotCi0gICAgSlNDOjpVU3RyaW5nIHJlc29sdmVkVGl0bGUgPSB0aXRs
ZTsKLSAgICBpZiAodGl0bGUuaXNOdWxsKCkpICAgLy8gbm8gdGl0bGUgc28gZ2l2ZSBpdCB0aGUg
bmV4dCB1c2VyIGluaXRpYXRlZCBwcm9maWxlIHRpdGxlLgotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgICAgIHJlc29sdmVkVGl0bGUgPSBjb250cm9sbGVyLT5nZXRDdXJyZW50VXNlckluaXRp
YXRlZFByb2ZpbGVOYW1lKHRydWUpOwotI2Vsc2UKLSAgICAgICAgcmVzb2x2ZWRUaXRsZSA9ICIi
OwotI2VuZGlmCi0KLSAgICBKU0M6OlByb2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2ZpbGlu
ZyhjYWxsU3RhY2stPnN0YXRlKCksIHJlc29sdmVkVGl0bGUpOwotCi0jaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBjYWxsU3RhY2st
PmF0KDApOwotICAgIGNvbnRyb2xsZXItPmFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29s
ZShyZXNvbHZlZFRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3Vy
Y2VVUkwoKSk7CisgICAgY29udHJvbGxlci0+c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKHRp
dGxlLCBjYWxsU3RhY2spOwogI2VuZGlmCiB9CiAKLXZvaWQgQ29uc29sZTo6cHJvZmlsZUVuZChj
b25zdCBKU0M6OlVTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3Zv
aWQgQ29uc29sZTo6cHJvZmlsZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3Rh
Y2sqIGNhbGxTdGFjaykKIHsKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlm
ICghcGFnZSkKQEAgLTM1NSwyNCArMzMzLDE0IEBAIHZvaWQgQ29uc29sZTo6cHJvZmlsZUVuZChj
b25zdCBKU0M6OlVTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKIAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxl
ciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAoIWNvbnRyb2xsZXItPnBy
b2ZpbGVyRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47CisgICAgUmVmUHRyPFNjcmlwdFByb2Zp
bGU+IHByb2ZpbGUgPSBjb250cm9sbGVyLT5zdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZyh0aXRs
ZSwgY2FsbFN0YWNrKTsKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBpZiAo
cHJvZmlsZSkKKyAgICAgICAgbV9wcm9maWxlcy5hcHBlbmQocHJvZmlsZSk7CiAjZW5kaWYKLQot
ICAgIFJlZlB0cjxKU0M6OlByb2ZpbGU+IHByb2ZpbGUgPSBKU0M6OlByb2ZpbGVyOjpwcm9maWxl
cigpLT5zdG9wUHJvZmlsaW5nKGNhbGxTdGFjay0+c3RhdGUoKSwgdGl0bGUpOwotICAgIGlmICgh
cHJvZmlsZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wcm9maWxlcy5hcHBlbmQocHJvZmls
ZSk7Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYg
bGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7Ci0gICAgY29udHJvbGxlci0+YWRkUHJvZmls
ZShwcm9maWxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwo
KSk7CiAjZW5kaWYKIH0KIAotI2VuZGlmCi0KIHZvaWQgQ29uc29sZTo6dGltZShjb25zdCBTdHJp
bmcmIHRpdGxlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvQ29uc29sZS5oIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAppbmRleCBlYTNhMTYxLi4x
MDQwM2JiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCisrKyBiL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmgKQEAgLTk5LDEwICs5OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNp
ZiBFTkFCTEUoV01MKQogICAgICAgICBTdHJpbmcgbGFzdFdNTEVycm9yTWVzc2FnZSgpIGNvbnN0
OwogI2VuZGlmCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgICAgIHZvaWQg
cHJvZmlsZShjb25zdCBKU0M6OlVTdHJpbmcmLCBTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICAgICAg
dm9pZCBwcm9maWxlRW5kKGNvbnN0IEpTQzo6VVN0cmluZyYsIFNjcmlwdENhbGxTdGFjayopOwot
I2VuZGlmCisgICAgICAgIHZvaWQgcHJvZmlsZShjb25zdCBTdHJpbmcmLCBTY3JpcHRDYWxsU3Rh
Y2sqKTsKKyAgICAgICAgdm9pZCBwcm9maWxlRW5kKGNvbnN0IFN0cmluZyYsIFNjcmlwdENhbGxT
dGFjayopOwogICAgICAgICB2b2lkIHRpbWUoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIHZvaWQg
dGltZUVuZChjb25zdCBTdHJpbmcmLCBTY3JpcHRDYWxsU3RhY2sqKTsKICAgICAgICAgdm9pZCBn
cm91cChTY3JpcHRDYWxsU3RhY2sqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Db25zb2xl
LmlkbCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAppbmRleCAzMTUwMGU2Li5mNmY3YTFkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwKKysrIGIvV2ViQ29yZS9wYWdlL0Nv
bnNvbGUuaWRsCkBAIC01MCwxMCArNTAsOCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgW0Rv
bnRFbnVtXSBET01TdHJpbmcgbGFzdFdNTEVycm9yTWVzc2FnZSgpOwogI2VuZGlmCiAKLSNpZiBk
ZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQVF9E
RUJVR0dFUgogICAgICAgICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10gdm9pZCBwcm9maWxlKGlu
IFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdGl0bGUpOwog
ICAgICAgICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10gdm9pZCBwcm9maWxlRW5kKGluIFtDb252
ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdGl0bGUpOwotI2VuZGlm
CiAKICAgICAgICAgdm9pZCB0aW1lKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3Ry
aW5nXSBET01TdHJpbmcgdGl0bGUpOwogICAgICAgICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10g
dm9pZCB0aW1lRW5kKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01T
dHJpbmcgdGl0bGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42866</attachid>
            <date>2009-11-10 07:56:00 -0800</date>
            <delta_ts>2009-11-12 14:35:26 -0800</delta_ts>
            <desc>proposed change</desc>
            <filename>add-console-profile-patch</filename>
            <type>text/plain</type>
            <size>38672</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Yzc2ZDRhZC4uNWE3ZmY1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAwOS0xMS0xMCAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSAnY29uc29sZS5wcm9maWxlKCknIGFuZCAnY29u
c29sZS5wcm9maWxlRW5kKCknIHJlZ2FyZGxlc3Mgb2YgSkFWQVNDUklQVF9ERUJVR0dFUi4KKwor
ICAgICAgICBDb25zb2xlIG5vdyBkZWxlZ2F0ZXMgdG8gSW5zcGVjdG9yQ29udHJvbGxlci4gSUMn
cyBjb2RlIGlzIG5vdworICAgICAgICBlbmdpbmUtaW5kZXBlbmRlbnQuIEVuZ2luZS1kZXBlbmRl
bnQgY29kZSBoYXMgYmVlbiBtb3ZlZCB0byBiaW5kaW5ncy4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEyOTMKKworICAgICAgICBFeGlzdGluZyBw
cm9maWxlciB0ZXN0cyBwYXNzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5i
a2w6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRQcm9maWxlcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnN0
b3ApOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmg6IEFkZGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGUuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRQcm9maWxlOjp+U2NyaXB0UHJvZmlsZSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0UHJvZmlsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFBy
b2ZpbGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6c3RvcCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuaDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q3VycmVudFVz
ZXJJbml0aWF0ZWRQcm9maWxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OnByb2ZpbGVyRW5hYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuaDoKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
c29sZTo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpwcm9maWxlRW5kKToK
KyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaDoKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaWRsOgor
CiAyMDA5LTExLTEwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGI4OTlkMjIuLmUwN2Fh
ZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtNDY3LDYgKzQ2Nyw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRPYmplY3RRdWFyYW50aW5lLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRP
YmplY3RRdWFyYW50aW5lLmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5o
IFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcCBcCisJV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFNvdXJjZUNvZGUuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VQcm92aWRl
ci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGM1ZTFj
MDAuLjg3MjJkNTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC03NjksNiArNzY5LDkgQEAKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9TY3JpcHRPYmplY3QuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0T2Jq
ZWN0UXVhcmFudGluZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVj
dFF1YXJhbnRpbmUuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZS5o
JywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAnLAorICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1NjcmlwdFNjb3BlLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0
U2NvcGUuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0U291cmNlQ29kZS5oJywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IDI5NTgyYzQuLjI1MGU4NzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNzYzLDYgKzc2Myw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIGJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgXAogICAgIGJpbmRpbmdzL2pz
L1NjcmlwdE9iamVjdC5jcHAgXAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdFF1YXJhbnRp
bmUuY3BwIFwKKyAgICBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAgXAogICAgIGJpbmRp
bmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3Bw
IFwKICAgICBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDY1OTM5OC4uYjVhNTY1YSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzODAsNiArMjM4MCw5
IEBACiAJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REQ0RDg0MEZERjRENkQw
MEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLzsgfTsKIAkJOTdERDREODcwRkRGNEQ2RTAwRUNG
OUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggKi87IH07
CiAJCTk3RUY3REZFMTA3RTU1QjcwMEQ3QzQ5QyAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0VGN0RGRDEw
N0U1NUI3MDBEN0M0OUMgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwICovOyB9OworCQk5RjlC
MkM1MDEwQTYxNzhBMDA0MkJGOUEgLyogU2NyaXB0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY5QjJDNEQxMEE2MTc4QTAwNDJCRjlBIC8q
IFNjcmlwdFByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk5RjlCMkM1MTEwQTYxNzhBMDA0MkJGOUEgLyogU2NyaXB0UHJvZmlsZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY5QjJDNEUx
MEE2MTc4QTAwNDJCRjlBIC8qIFNjcmlwdFByb2ZpbGVyLmNwcCAqLzsgfTsKKwkJOUY5QjJDNTIx
MEE2MTc4QTAwNDJCRjlBIC8qIFNjcmlwdFByb2ZpbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjlCMkM0RjEwQTYxNzhBMDA0MkJGOUEgLyogU2Ny
aXB0UHJvZmlsZXIuaCAqLzsgfTsKIAkJQTE3QzgxMjIwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxF
bGVtZW50RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNw
cCAqLzsgfTsKIAkJQTE3QzgxMjMwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9y
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3Qzgx
MjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovOyB9OwogCQlBNzE4
NzYwRTBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAvKiBE
cmFnQWN0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC03NjA4LDYgKzc2MTEsOSBAQAogCQk5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5QTQgLyog
WFNTQXVkaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU1NB
dWRpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdERDREODUwRkRGNEQ2
RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gWFNTQXVkaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0VGN0RGRDEw
N0U1NUI3MDBEN0M0OUMgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5RjlCMkM0RDEwQTYxNzhBMDA0MkJGOUEgLyogU2NyaXB0
UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRQcm9maWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGOUIyQzRFMTBBNjE3OEEwMDQyQkY5
QSAvKiBTY3JpcHRQcm9maWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTY3JpcHRQcm9maWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlG
OUIyQzRGMTBBNjE3OEEwMDQyQkY5QSAvKiBTY3JpcHRQcm9maWxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRQcm9maWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50RmFj
dG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIxMEYyQTVDRjcw
MDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE3MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEcmFnQWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTQzMjUsNiArMTQzMzEsOSBAQAogCQkJCTQxRjA2NkUyMEY2NEJDRjYwMEEw
N0VBQyAvKiBTY3JpcHRPYmplY3QuaCAqLywKIAkJCQk0MTJBNjg0NjBGNkIwM0REMDAwRUE2NkUg
LyogU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAgKi8sCiAJCQkJNDE5NTM2NTAwRjY4MjIyNDAw
RDBDNjc5IC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuaCAqLywKKwkJCQk5RjlCMkM0RDEwQTYx
NzhBMDA0MkJGOUEgLyogU2NyaXB0UHJvZmlsZS5oICovLAorCQkJCTlGOUIyQzRFMTBBNjE3OEEw
MDQyQkY5QSAvKiBTY3JpcHRQcm9maWxlci5jcHAgKi8sCisJCQkJOUY5QjJDNEYxMEE2MTc4QTAw
NDJCRjlBIC8qIFNjcmlwdFByb2ZpbGVyLmggKi8sCiAJCQkJOTM0Q0MxMDkwRURCMjIzOTAwQTY1
OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCAqLywKIAkJCQlDRTU0RkQzNzEwMTZEOUE2MDA4QjQ0
QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQk0MTI3RDUzNjBGOEFBQjFEMDBF
NDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovLApAQCAtMTgwOTksNiArMTgxMDgsOCBAQAogCQkJ
CTE0NzlGQUYwMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5QmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQ3OUZBRjIxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlSdW4uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0NzlGQUY0MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5VGV4
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUY5QjJDNTAxMEE2MTc4QTAwNDJCRjlBIC8qIFNjcmlw
dFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTlGOUIyQzUyMTBBNjE3OEEwMDQyQkY5QSAv
KiBTY3JpcHRQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDIzOSw2ICsyMDI1MCw3IEBA
CiAJCQkJMTQ3OUZBRUYxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlCYXNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0NzlGQUYxMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5UnVu
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzlGQUYzMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5k
ZXJSdWJ5VGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5RjlCMkM1MTEwQTYxNzhBMDA0MkJG
OUEgLyogU2NyaXB0UHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmVTb3VyY2VzLmJrbCBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCmluZGV4
IGM1NzkwODQuLjZmOGI2NWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmts
CisrKyBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCkBAIC0xNTYsNiArMTU2LDcgQEAgVGhp
cyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZWRlZCB0byBidWlsZCBXZWJDb3Jl
LgogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCiAgICAgICAgIGJp
bmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKICAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0T2Jq
ZWN0UXVhcmFudGluZS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3Bw
IFwKICAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCiAgICAgICAgIGJpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggZjA4
MzAzYS4uNmI1OGM0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcApAQCAtMTQ1LDYgKzE0NSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5j
cHAiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCIKICNpbmNsdWRlICJTY3JpcHRP
YmplY3RRdWFyYW50aW5lLmNwcCIKKyNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5jcHAiCiAjaW5j
bHVkZSAiU2NyaXB0U3RhdGUuY3BwIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAiCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0UHJvZmlsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkYTAx
NGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUu
aApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NyaXB0UHJvZmlsZV9oCisjZGVmaW5lIFNjcmlw
dFByb2ZpbGVfaAorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisjaW5jbHVkZSA8
cHJvZmlsZXIvUHJvZmlsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgSlND
OjpQcm9maWxlIFNjcmlwdFByb2ZpbGU7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisjZW5kaWYgLy8gU2NyaXB0UHJv
ZmlsZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlOGYxZGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisjaW5jbHVk
ZSAiU2NyaXB0UHJvZmlsZXIuaCIKKyNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU2NyaXB0UHJvZmlsZXI6OnN0YXJ0KFNjcmlwdFN0
YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBKU0M6OlByb2ZpbGVyOjpw
cm9maWxlcigpLT5zdGFydFByb2ZpbGluZyhzdGF0ZSwgdGl0bGUpOworfQorCitQYXNzUmVmUHRy
PFNjcmlwdFByb2ZpbGU+IFNjcmlwdFByb2ZpbGVyOjpzdG9wKFNjcmlwdFN0YXRlKiBzdGF0ZSwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICByZXR1cm4gSlNDOjpQcm9maWxlcjo6cHJvZmls
ZXIoKS0+c3RvcFByb2ZpbGluZyhzdGF0ZSwgdGl0bGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0UHJvZmlsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xYWJmMDcyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQ
cm9maWxlci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDksIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRQcm9maWxlcl9oCisjZGVm
aW5lIFNjcmlwdFByb2ZpbGVyX2gKKworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQor
I2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorCisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgU2NyaXB0UHJvZmlsZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIHN0
YXRpYyB2b2lkIHN0YXJ0KFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gc3RvcChTY3JpcHRTdGF0ZSog
c3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNlbmRpZiAvLyBT
Y3JpcHRQcm9maWxlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFBy
b2ZpbGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzYWVlN2YKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGUuaApAQCAtMCwwICsxLDQyIEBACisvKgorICog
Q29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
U2NyaXB0UHJvZmlsZV9oCisjZGVmaW5lIFNjcmlwdFByb2ZpbGVfaAorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0cnVjdCBTY3JpcHRQcm9maWxlIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0
UHJvZmlsZT4geworICB2aXJ0dWFsIH5TY3JpcHRQcm9maWxlKCkge30KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmlwdFByb2ZpbGVfaApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdFByb2ZpbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5mYzViYjQyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQ
cm9maWxlci5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOSwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2NyaXB0UHJvZmlsZXIuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordm9pZCBTY3JpcHRQcm9maWxlcjo6c3RhcnQoU2NyaXB0U3RhdGUqIHN0YXRl
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAg
ICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBzdGF0ZS0+ZnJhbWUoKTsKKyAgICB2ODo6Q29udGV4
dDo6U2NvcGUgY29udGV4dF9zY29wZShWOFByb3h5Ojpjb250ZXh0KGZyYW1lKSk7CisgICAgdjg6
OlY4OjpSZXN1bWVQcm9maWxlcigpOworfQorCitQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IFNj
cmlwdFByb2ZpbGVyOjpzdG9wKFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkKK3sKKyAgICB2ODo6Vjg6OlBhdXNlUHJvZmlsZXIoKTsKKyAgICByZXR1cm4gMDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRQcm9maWxlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYTFkOTcKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKQEAgLTAsMCArMSw1MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFNjcmlwdFByb2ZpbGVyX2gKKyNkZWZpbmUgU2NyaXB0UHJvZmlsZXJfaAorCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCisj
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdFByb2ZpbGVyIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBzdGFydChTY3JpcHRTdGF0ZSog
c3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlw
dFByb2ZpbGU+IHN0b3AoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmlwdFByb2ZpbGVy
X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMGM4Y2Mx
NS4uOGYyOTc5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTcwLDYgKzcwLDcgQEAKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKICNpbmNs
dWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgi
CisjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTdHJpbmcuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC05
Niw3ICs5Nyw2IEBACiAjaW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAKICNpbmNs
dWRlIDxwcm9maWxlci9Qcm9maWxlLmg+Ci0jaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZXIuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5o
PgogCkBAIC0xMzYsMTMgKzEzNiwxMyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgICwgbV9y
ZXNvdXJjZVRyYWNraW5nU2V0dGluZ3NMb2FkZWQoZmFsc2UpCiAgICAgLCBtX2luc3BlY3RvckJh
Y2tlbmQoSW5zcGVjdG9yQmFja2VuZDo6Y3JlYXRlKHRoaXMsIGNsaWVudCkpCiAgICAgLCBtX2xh
c3RCb3VuZE9iamVjdElkKDEpCisgICAgLCBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51
bWJlcigtMSkKKyAgICAsIG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKDEpCiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgLCBtX2RlYnVnZ2VyRW5hYmxlZChmYWxz
ZSkKICAgICAsIG1fYXR0YWNoRGVidWdnZXJXaGVuU2hvd24oZmFsc2UpCiAgICAgLCBtX3Byb2Zp
bGVyRW5hYmxlZChmYWxzZSkKICAgICAsIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUo
ZmFsc2UpCi0gICAgLCBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcigtMSkKLSAg
ICAsIG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKDEpCiAgICAgLCBtX3N0YXJ0UHJv
ZmlsaW5nKHRoaXMsICZJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcpCiAjZW5kaWYKIHsKQEAgLTEzODksMTAgKzEzODksMTEgQEAgdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjphZGRQcm9maWxlRmluaXNoZWRNZXNzYWdlVG9Db25zb2xlKFBhc3NSZWZQdHI8
UHJvZmlsZT4KICAgICBtZXNzYWdlICs9ICJcIiBmaW5pc2hlZC4iOwogICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVs
LCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQorI2VuZGlmCiAKLXZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0
IFVTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBVU3RyaW5nJiBzb3Vy
Y2VVUkwpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZFN0YXJ0UHJvZmlsaW5nTWVzc2Fn
ZVRvQ29uc29sZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBVU3RyaW5nIG1lc3NhZ2UgPSAiUHJvZmlsZSBc
IndlYmtpdC1wcm9maWxlOi8vIjsKKyAgICBTdHJpbmcgbWVzc2FnZSA9ICJQcm9maWxlIFwid2Vi
a2l0LXByb2ZpbGU6Ly8iOwogICAgIG1lc3NhZ2UgKz0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVl
bmNlcyhDUFVQcm9maWxlVHlwZSk7CiAgICAgbWVzc2FnZSArPSAiLyI7CiAgICAgbWVzc2FnZSAr
PSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHRpdGxlKTsKQEAgLTE0MDAsNiArMTQwMSw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9D
b25zb2xlKGNvbnN0IFVTdHJpbmcmIHRpdGxlCiAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShKU01l
c3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvZmlsZUhlYWRlcnMobG9uZyBjYWxs
SWQpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kKQpAQCAtMTQyOSwxOSArMTQzMSwxNyBAQCBTY3Jp
cHRPYmplY3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBK
U0M6OlByb2ZpbGUmIHByb2ZpbAogICAgIGhlYWRlci5zZXQoInR5cGVJZCIsIFVTdHJpbmcoQ1BV
UHJvZmlsZVR5cGUpKTsKICAgICByZXR1cm4gaGVhZGVyOwogfQorI2VuZGlmCiAKLVVTdHJpbmcg
SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShi
b29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIgPSBmYWxzZSkKK1N0cmluZyBJbnNwZWN0b3JDb250
cm9sbGVyOjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKGJvb2wgaW5jcmVtZW50
UHJvZmlsZU51bWJlciA9IGZhbHNlKQogewogICAgIGlmIChpbmNyZW1lbnRQcm9maWxlTnVtYmVy
KQogICAgICAgICBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlciA9IG1fbmV4dFVz
ZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKys7ICAgICAgICAKIAotICAgIFVTdHJpbmcgdGl0bGUg
PSBVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWU7Ci0gICAgdGl0bGUgKz0gIi4iOwotICAgIHRpdGxl
ICs9IFVTdHJpbmc6OmZyb20obV9jdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIpOwot
ICAgIAotICAgIHJldHVybiB0aXRsZTsKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzLiVk
IiwgVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lLCBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmls
ZU51bWJlcik7CiB9CiAKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nU29vbigpCiB7CiAg
ICAgbV9zdGFydFByb2ZpbGluZy5zdGFydE9uZVNob3QoMCk7CkBAIC0xNDU5LDMxICsxNDU5LDY5
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5n
KFRpbWVyPEluc3BlY3RvckNvbnRyb2xsZXI+CiAKICAgICBtX3JlY29yZGluZ1VzZXJJbml0aWF0
ZWRQcm9maWxlID0gdHJ1ZTsKIAotICAgIFVTdHJpbmcgdGl0bGUgPSBnZXRDdXJyZW50VXNlcklu
aXRpYXRlZFByb2ZpbGVOYW1lKHRydWUpOworICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9
IHRvSlNET01XaW5kb3cobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSwgZGVidWdnZXJXb3Js
ZCgpKS0+Z2xvYmFsRXhlYygpOworICAgIHN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyhTdHJp
bmcoKSwgMCwgc2NyaXB0U3RhdGUpOworfQogCi0gICAgRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9
IHRvSlNET01XaW5kb3cobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSwgZGVidWdnZXJXb3Js
ZCgpKS0+Z2xvYmFsRXhlYygpOwotICAgIFByb2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2Zp
bGluZyhzY3JpcHRTdGF0ZSwgdGl0bGUpOwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9w
VXNlckluaXRpYXRlZFByb2ZpbGluZygpCit7CisgICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAg
IHJldHVybjsKIAotICAgIGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZSh0aXRsZSwg
MCwgVVN0cmluZygpKTsKKyAgICBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlID0gZmFs
c2U7CiAKLSAgICB0b2dnbGVSZWNvcmRCdXR0b24odHJ1ZSk7CisgICAgU2NyaXB0U3RhdGUqIHNj
cmlwdFN0YXRlID0gdG9KU0RPTVdpbmRvdyhtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLCBk
ZWJ1Z2dlcldvcmxkKCkpLT5nbG9iYWxFeGVjKCk7CisgICAgc3RvcFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcoZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSgpLCAwLCBzY3JpcHRTdGF0
ZSk7CiB9CisjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVXNlckluaXRp
YXRlZFByb2ZpbGluZygpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0VXNlckluaXRp
YXRlZFByb2ZpbGluZyhjb25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxT
dGFjaywgU2NyaXB0U3RhdGUqIHN0YXRlKQogewogICAgIGlmICghZW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlID0gZmFsc2U7
CisgICAgaWYgKCFwcm9maWxlckVuYWJsZWQoKSkgeworICAgICAgICAvLyBGSVhNRTogbG9nIGEg
Y29uc29sZSBtZXNzYWdlIHdoZW4gcHJvZmlsaW5nIGlzIGRpc2FibGVkLgorICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgU3RyaW5nIHJlc29sdmVkVGl0bGUgPSB0aXRsZTsKKyAgICBpZiAo
dGl0bGUuaXNOdWxsKCkpICAgLy8gbm8gdGl0bGUgc28gZ2l2ZSBpdCB0aGUgbmV4dCB1c2VyIGlu
aXRpYXRlZCBwcm9maWxlIHRpdGxlLgorICAgICAgICByZXNvbHZlZFRpdGxlID0gZ2V0Q3VycmVu
dFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSh0cnVlKTsKIAotICAgIFVTdHJpbmcgdGl0bGUgPSBn
ZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKCk7CisgICAgaWYgKGNhbGxTdGFjaykg
eworICAgICAgICBTY3JpcHRQcm9maWxlcjo6c3RhcnQoY2FsbFN0YWNrLT5zdGF0ZSgpLCByZXNv
bHZlZFRpdGxlKTsKKyAgICAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0g
Y2FsbFN0YWNrLT5hdCgwKTsKKyAgICAgICAgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25z
b2xlKHJlc29sdmVkVGl0bGUsIGxhc3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNv
dXJjZVVSTCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBTY3JpcHRQcm9maWxlcjo6c3RhcnQo
c3RhdGUsIHJlc29sdmVkVGl0bGUpOworICAgICAgICBhZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VU
b0NvbnNvbGUocmVzb2x2ZWRUaXRsZSwgMCwgU3RyaW5nKCkpOworICAgIH0KIAotICAgIEV4ZWNT
dGF0ZSogc2NyaXB0U3RhdGUgPSB0b0pTRE9NV2luZG93KG1faW5zcGVjdGVkUGFnZS0+bWFpbkZy
YW1lKCksIGRlYnVnZ2VyV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKLSAgICBSZWZQdHI8UHJvZmls
ZT4gcHJvZmlsZSA9IFByb2ZpbGVyOjpwcm9maWxlcigpLT5zdG9wUHJvZmlsaW5nKHNjcmlwdFN0
YXRlLCB0aXRsZSk7Ci0gICAgaWYgKHByb2ZpbGUpCi0gICAgICAgIGFkZFByb2ZpbGUocHJvZmls
ZSwgMCwgVVN0cmluZygpKTsKKyAgICB0b2dnbGVSZWNvcmRCdXR0b24odHJ1ZSk7Cit9CisKK1Bh
c3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFVzZXJJbml0
aWF0ZWRQcm9maWxpbmcoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxs
U3RhY2ssIFNjcmlwdFN0YXRlKiBzdGF0ZSkKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZTsKKyAgICBp
ZiAoY2FsbFN0YWNrKSB7CisgICAgICAgIHByb2ZpbGUgPSBTY3JpcHRQcm9maWxlcjo6c3RvcChj
YWxsU3RhY2stPnN0YXRlKCksIHRpdGxlKTsKKyAgICAgICAgaWYgKHByb2ZpbGUpIHsKKyAgICAg
ICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQo
MCk7CisgICAgICAgICAgICBhZGRQcm9maWxlKHByb2ZpbGUsIGxhc3RDYWxsZXIubGluZU51bWJl
cigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIHByb2ZpbGUgPSBTY3JpcHRQcm9maWxlcjo6c3RvcChzdGF0ZSwgdGl0bGUpOworICAg
ICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAgIGFkZFByb2ZpbGUocHJvZmlsZSwgMCwgU3Ry
aW5nKCkpOworICAgIH0KIAogICAgIHRvZ2dsZVJlY29yZEJ1dHRvbihmYWxzZSk7CisKKyAgICBy
ZXR1cm4gcHJvZmlsZTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp0b2dnbGVSZWNv
cmRCdXR0b24oYm9vbCBpc1Byb2ZpbGluZykKQEAgLTE0OTMsNiArMTUzMSw3IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6dG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcpCiAg
ICAgbV9mcm9udGVuZC0+c2V0UmVjb3JkaW5nUHJvZmlsZShpc1Byb2ZpbGluZyk7CiB9CiAKKyNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5hYmxlUHJvZmlsZXIoYm9vbCBhbHdheXMsIGJvb2wgc2tpcFJlY29tcGlsZSkKIHsKICAgICBp
ZiAoYWx3YXlzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDIy
YmQwNzYuLjg1NGQ2NzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
IlNjcmlwdEFycmF5LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2Ny
aXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
VmFsdWUuaCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCkBAIC0yNjYsMTEgKzI2NywxOSBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgdm9pZCBhZGRQcm9m
aWxlKFBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
SlNDOjpVU3RyaW5nJiBzb3VyY2VVUkwpOwogICAgIHZvaWQgYWRkUHJvZmlsZUZpbmlzaGVkTWVz
c2FnZVRvQ29uc29sZShQYXNzUmVmUHRyPEpTQzo6UHJvZmlsZT4sIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IEpTQzo6VVN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2b2lkIGFkZFN0YXJ0UHJv
ZmlsaW5nTWVzc2FnZVRvQ29uc29sZShjb25zdCBKU0M6OlVTdHJpbmcmIHRpdGxlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBKU0M6OlVTdHJpbmcmIHNvdXJjZVVSTCk7CisjZWxzZQorICAg
IHZvaWQgYWRkUHJvZmlsZShQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+LCB1bnNpZ25lZCwgY29u
c3QgU3RyaW5nJikge30KKyNlbmRpZgorICAgIHZvaWQgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdl
VG9Db25zb2xlKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKTsKIAorI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQog
ICAgIGJvb2wgaXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGU7IH0KKyNlbmRpZgogCi0gICAgSlNDOjpV
U3RyaW5nIGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoYm9vbCBpbmNyZW1lbnRQ
cm9maWxlTnVtYmVyKTsKKyAgICBTdHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxl
TmFtZShib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIpOworICAgIHZvaWQgc3RhcnRVc2VySW5p
dGlhdGVkUHJvZmlsaW5nKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2Fs
bFN0YWNrLCBTY3JpcHRTdGF0ZSogc3RhdGUgPSAwKTsKKyAgICBQYXNzUmVmUHRyPFNjcmlwdFBy
b2ZpbGU+IHN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNj
cmlwdENhbGxTdGFjayogY2FsbFN0YWNrLCBTY3JpcHRTdGF0ZSogc3RhdGUgPSAwKTsKKyNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICB2b2lkIHN0YXJ0VXNlckluaXRpYXRlZFBy
b2ZpbGluZyhUaW1lcjxJbnNwZWN0b3JDb250cm9sbGVyPiogPSAwKTsKICAgICB2b2lkIHN0b3BV
c2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7CiAKQEAgLTI4OCw2ICsyOTcsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBKU0M6OlNvdXJjZUNvZGUmLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBKU0M6OlVTdHJpbmcmIGVy
cm9yTWVzc2FnZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENvbnRpbnVlKCk7CisjZWxzZQorICAgIGJvb2wgcHJvZmlsZXJFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gZW5hYmxlZCgpOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgZXZhbHVhdGVGb3JU
ZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQpOwpAQCAtMzE2
LDExICszMjcsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFN0
cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pOwogCisgICAgdm9pZCB0b2dn
bGVSZWNvcmRCdXR0b24oYm9vbCk7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAg
ICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkIGludCwgUmVmUHRyPEpTQzo6UHJvZmlsZT4gPiBQ
cm9maWxlc01hcDsKIAogICAgIHZvaWQgc3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nU29vbigp
OwotICAgIHZvaWQgdG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wpOwogICAgIHZvaWQgZW5hYmxlRGVi
dWdnZXJGcm9tRnJvbnRlbmQoYm9vbCBhbHdheXMpOwogICAgIHZvaWQgZ2V0UHJvZmlsZUhlYWRl
cnMobG9uZyBjYWxsSWQpOwogICAgIHZvaWQgZ2V0UHJvZmlsZShsb25nIGNhbGxJZCwgdW5zaWdu
ZWQgdWlkKTsKQEAgLTM5MywxMyArNDA0LDEzIEBAIHByaXZhdGU6CiAKICAgICBsb25nIG1fbGFz
dEJvdW5kT2JqZWN0SWQ7CiAgICAgVmVjdG9yPHBhaXI8bG9uZywgU3RyaW5nPiA+IG1fcGVuZGlu
Z0V2YWx1YXRlVGVzdENvbW1hbmRzOworICAgIGludCBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJv
ZmlsZU51bWJlcjsKKyAgICB1bnNpZ25lZCBtX25leHRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJl
cjsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBib29sIG1fZGVidWdnZXJF
bmFibGVkOwogICAgIGJvb2wgbV9hdHRhY2hEZWJ1Z2dlcldoZW5TaG93bjsKICAgICBib29sIG1f
cHJvZmlsZXJFbmFibGVkOwogICAgIGJvb2wgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmls
ZTsKLSAgICBpbnQgbV9jdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXI7Ci0gICAgdW5z
aWduZWQgbV9uZXh0VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXI7CiAgICAgVGltZXI8SW5zcGVj
dG9yQ29udHJvbGxlcj4gbV9zdGFydFByb2ZpbGluZzsKICAgICBQcm9maWxlc01hcCBtX3Byb2Zp
bGVzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKaW5kZXgg
ZmM1ZjU1MS4uYjg1MGY0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNw
cApAQCAtMjc3LDYgKzI3Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZFByb2ZpbGVI
ZWFkZXIoY29uc3QgU2NyaXB0VmFsdWUmIHByb2ZpbGUpCiAgICAgZnVuY3Rpb24tPmFwcGVuZEFy
Z3VtZW50KHByb2ZpbGUpOwogICAgIGZ1bmN0aW9uLT5jYWxsKCk7CiB9CisjZW5kaWYKIAogdm9p
ZCBJbnNwZWN0b3JGcm9udGVuZDo6c2V0UmVjb3JkaW5nUHJvZmlsZShib29sIGlzUHJvZmlsaW5n
KQogewpAQCAtMjg1LDYgKzI4Niw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnNldFJlY29y
ZGluZ1Byb2ZpbGUoYm9vbCBpc1Byb2ZpbGluZykKICAgICBmdW5jdGlvbi0+Y2FsbCgpOwogfQog
CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiB2b2lkIEluc3BlY3RvckZyb250ZW5k
OjpkaWRHZXRQcm9maWxlSGVhZGVycyhpbnQgY2FsbElkLCBjb25zdCBTY3JpcHRBcnJheSYgaGVh
ZGVycykKIHsKICAgICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdGdW5j
dGlvbkNhbGwoImRpZEdldFByb2ZpbGVIZWFkZXJzIikpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kLmgKaW5kZXggM2NiOWI4Yy4uYzUzNGZmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZC5oCkBAIC04Miw2ICs4Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCByZXNvdXJjZVRyYWNraW5nV2FzRW5hYmxlZCgpOwogICAgICAgICB2b2lkIHJl
c291cmNlVHJhY2tpbmdXYXNEaXNhYmxlZCgpOwogCisgICAgICAgIHZvaWQgc2V0UmVjb3JkaW5n
UHJvZmlsZShib29sIGlzUHJvZmlsaW5nKTsKKwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQogICAgICAgICB2b2lkIGF0dGFjaERlYnVnZ2VyV2hlblNob3duKCk7CiAgICAgICAgIHZv
aWQgZGVidWdnZXJXYXNFbmFibGVkKCk7CkBAIC05MSw3ICs5Myw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBwYXJzZWRTY3JpcHRTb3VyY2UoY29uc3QgSlNDOjpTb3VyY2VD
b2RlJik7CiAgICAgICAgIHZvaWQgZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZShjb25zdCBKU0M6
OlNvdXJjZUNvZGUmLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBKU0M6OlVTdHJpbmcmIGVycm9yTWVz
c2FnZSk7CiAgICAgICAgIHZvaWQgYWRkUHJvZmlsZUhlYWRlcihjb25zdCBTY3JpcHRWYWx1ZSYg
cHJvZmlsZSk7Ci0gICAgICAgIHZvaWQgc2V0UmVjb3JkaW5nUHJvZmlsZShib29sIGlzUHJvZmls
aW5nKTsKICAgICAgICAgdm9pZCBkaWRHZXRQcm9maWxlSGVhZGVycyhpbnQgY2FsbElkLCBjb25z
dCBTY3JpcHRBcnJheSYgaGVhZGVycyk7CiAgICAgICAgIHZvaWQgZGlkR2V0UHJvZmlsZShpbnQg
Y2FsbElkLCBjb25zdCBTY3JpcHRWYWx1ZSYgcHJvZmlsZSk7CiAgICAgICAgIHZvaWQgcGF1c2Vk
U2NyaXB0KGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9Db25zb2xlLmNwcCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAppbmRleCAwYzY2
NzI0Li4wMTAxZDdmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKKysrIGIv
V2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCkBAIC0zOSwxMiArMzksOSBAQAogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgotCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0jaW5jbHVkZSA8cHJvZmlsZXIv
UHJvZmlsZXIuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5j
bHVkZSAiU2NyaXB0UHJvZmlsZS5oIgorCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3
dGYvVW51c2VkUGFyYW0uaD4KIApAQCAtMzEzLDkgKzMxMCw3IEBAIFN0cmluZyBDb25zb2xlOjps
YXN0V01MRXJyb3JNZXNzYWdlKCkgY29uc3QKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCi0KLXZvaWQgQ29uc29sZTo6cHJvZmlsZShjb25zdCBKU0M6OlVTdHJp
bmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6cHJv
ZmlsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKIHsK
ICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKQEAgLTMyMywy
OCArMzE4LDExIEBAIHZvaWQgQ29uc29sZTo6cHJvZmlsZShjb25zdCBKU0M6OlVTdHJpbmcmIHRp
dGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKIAogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKTsKLSAgICAvLyBGSVhNRTogbG9nIGEgY29uc29sZSBtZXNzYWdlIHdoZW4gcHJv
ZmlsaW5nIGlzIGRpc2FibGVkLgotICAgIGlmICghY29udHJvbGxlci0+cHJvZmlsZXJFbmFibGVk
KCkpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCi0gICAgSlNDOjpVU3RyaW5nIHJlc29sdmVk
VGl0bGUgPSB0aXRsZTsKLSAgICBpZiAodGl0bGUuaXNOdWxsKCkpICAgLy8gbm8gdGl0bGUgc28g
Z2l2ZSBpdCB0aGUgbmV4dCB1c2VyIGluaXRpYXRlZCBwcm9maWxlIHRpdGxlLgotI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgICAgIHJlc29sdmVkVGl0bGUgPSBjb250cm9sbGVyLT5nZXRDdXJy
ZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKHRydWUpOwotI2Vsc2UKLSAgICAgICAgcmVzb2x2
ZWRUaXRsZSA9ICIiOwotI2VuZGlmCi0KLSAgICBKU0M6OlByb2ZpbGVyOjpwcm9maWxlcigpLT5z
dGFydFByb2ZpbGluZyhjYWxsU3RhY2stPnN0YXRlKCksIHJlc29sdmVkVGl0bGUpOwotCi0jaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIg
PSBjYWxsU3RhY2stPmF0KDApOwotICAgIGNvbnRyb2xsZXItPmFkZFN0YXJ0UHJvZmlsaW5nTWVz
c2FnZVRvQ29uc29sZShyZXNvbHZlZFRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFz
dENhbGxlci5zb3VyY2VVUkwoKSk7CisgICAgY29udHJvbGxlci0+c3RhcnRVc2VySW5pdGlhdGVk
UHJvZmlsaW5nKHRpdGxlLCBjYWxsU3RhY2spOwogI2VuZGlmCiB9CiAKLXZvaWQgQ29uc29sZTo6
cHJvZmlsZUVuZChjb25zdCBKU0M6OlVTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNh
bGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6cHJvZmlsZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBT
Y3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKIHsKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFn
ZSgpOwogICAgIGlmICghcGFnZSkKQEAgLTM1NSwyNCArMzMzLDE0IEBAIHZvaWQgQ29uc29sZTo6
cHJvZmlsZUVuZChjb25zdCBKU0M6OlVTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNh
bGxTdGFjaykKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9yQ29udHJvbGxl
ciogY29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAoIWNv
bnRyb2xsZXItPnByb2ZpbGVyRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47CisgICAgUmVmUHRy
PFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUgPSBjb250cm9sbGVyLT5zdG9wVXNlckluaXRpYXRlZFBy
b2ZpbGluZyh0aXRsZSwgY2FsbFN0YWNrKTsKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKKyAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgbV9wcm9maWxlcy5hcHBlbmQocHJvZmlsZSk7
CiAjZW5kaWYKLQotICAgIFJlZlB0cjxKU0M6OlByb2ZpbGU+IHByb2ZpbGUgPSBKU0M6OlByb2Zp
bGVyOjpwcm9maWxlcigpLT5zdG9wUHJvZmlsaW5nKGNhbGxTdGFjay0+c3RhdGUoKSwgdGl0bGUp
OwotICAgIGlmICghcHJvZmlsZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wcm9maWxlcy5h
cHBlbmQocHJvZmlsZSk7Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGNvbnN0IFNjcmlw
dENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7Ci0gICAgY29udHJvbGxl
ci0+YWRkUHJvZmlsZShwcm9maWxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxl
ci5zb3VyY2VVUkwoKSk7CiAjZW5kaWYKIH0KIAotI2VuZGlmCi0KIHZvaWQgQ29uc29sZTo6dGlt
ZShjb25zdCBTdHJpbmcmIHRpdGxlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAppbmRl
eCBlYTNhMTYxLi4xMDQwM2JiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCisr
KyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmgKQEAgLTk5LDEwICs5OSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNpZiBFTkFCTEUoV01MKQogICAgICAgICBTdHJpbmcgbGFzdFdNTEVycm9yTWVz
c2FnZSgpIGNvbnN0OwogI2VuZGlmCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0g
ICAgICAgIHZvaWQgcHJvZmlsZShjb25zdCBKU0M6OlVTdHJpbmcmLCBTY3JpcHRDYWxsU3RhY2sq
KTsKLSAgICAgICAgdm9pZCBwcm9maWxlRW5kKGNvbnN0IEpTQzo6VVN0cmluZyYsIFNjcmlwdENh
bGxTdGFjayopOwotI2VuZGlmCisgICAgICAgIHZvaWQgcHJvZmlsZShjb25zdCBTdHJpbmcmLCBT
Y3JpcHRDYWxsU3RhY2sqKTsKKyAgICAgICAgdm9pZCBwcm9maWxlRW5kKGNvbnN0IFN0cmluZyYs
IFNjcmlwdENhbGxTdGFjayopOwogICAgICAgICB2b2lkIHRpbWUoY29uc3QgU3RyaW5nJik7CiAg
ICAgICAgIHZvaWQgdGltZUVuZChjb25zdCBTdHJpbmcmLCBTY3JpcHRDYWxsU3RhY2sqKTsKICAg
ICAgICAgdm9pZCBncm91cChTY3JpcHRDYWxsU3RhY2sqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmlkbCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAppbmRleCAzMTUwMGU2
Li5mNmY3YTFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwKKysrIGIvV2Vi
Q29yZS9wYWdlL0NvbnNvbGUuaWRsCkBAIC01MCwxMCArNTAsOCBAQCBtb2R1bGUgd2luZG93IHsK
ICAgICAgICAgW0RvbnRFbnVtXSBET01TdHJpbmcgbGFzdFdNTEVycm9yTWVzc2FnZSgpOwogI2Vu
ZGlmCiAKLSNpZiBkZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEVf
SkFWQVNDUklQVF9ERUJVR0dFUgogICAgICAgICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10gdm9p
ZCBwcm9maWxlKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJp
bmcgdGl0bGUpOwogICAgICAgICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10gdm9pZCBwcm9maWxl
RW5kKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdGl0
bGUpOwotI2VuZGlmCiAKICAgICAgICAgdm9pZCB0aW1lKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JO
dWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdGl0bGUpOwogICAgICAgICBbQ3VzdG9tQXJndW1l
bnRIYW5kbGluZ10gdm9pZCB0aW1lRW5kKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxs
U3RyaW5nXSBET01TdHJpbmcgdGl0bGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43100</attachid>
            <date>2009-11-12 14:35:26 -0800</date>
            <delta_ts>2009-11-13 01:01:54 -0800</delta_ts>
            <desc>another approach</desc>
            <filename>add-console-profile-easy-way-patch</filename>
            <type>text/plain</type>
            <size>6207</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWVhNGI2ZC4uZmY4NDdmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0xMS0xMiAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSAnY29uc29sZS5wcm9maWxlKCknIGFuZCAnY29u
c29sZS5wcm9maWxlRW5kKCknCisgICAgICAgIHJlZ2FyZGxlc3Mgb2YgSkFWQVNDUklQVF9ERUJV
R0dFUi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzEyOTMKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0NvbnNvbGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDb25zb2xlOjpwcm9maWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ29uc29sZTo6cHJvZmlsZUVuZCk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21CaW5kaW5nLmg6CisgICAgICAgICogcGFnZS9Db25zb2xlLmlkbDoKKwogMjAw
OS0xMS0xMiAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltIEhhdGNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGJkZGNhYzIuLjUzMGFjMmMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC02NjUsNiArNjY1LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21Wb2lkQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhEYXRhYmFzZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERhdGFHcmlkQ29sdW1uTGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwJywKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcAppbmRleCA5YzQ4NDY3Li5jMmNjNzQ2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNDb25zb2xlLmgiCiAjaW5jbHVkZSAiSmF2
YVNjcmlwdFByb2ZpbGUuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRl
IDxydW50aW1lL0pTQXJyYXkuaD4KIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKQEAgLTUwLDYgKzUx
LDIwIEBAIEpTVmFsdWUgSlNDb25zb2xlOjpwcm9maWxlcyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIGxpc3QpOwogfQogCitKU1ZhbHVlIEpT
Q29uc29sZTo6cHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7
CisgICAgU2NyaXB0Q2FsbFN0YWNrIGNhbGxTdGFjayhleGVjLCBhcmdzLCAxKTsKKyAgICBpbXBs
KCktPnByb2ZpbGUoYXJncy5hdCgwKS5nZXRTdHJpbmcoKSwgJmNhbGxTdGFjayk7CisgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNDb25zb2xlOjpwcm9maWxlRW5kKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBTY3JpcHRDYWxsU3Rh
Y2sgY2FsbFN0YWNrKGV4ZWMsIGFyZ3MsIDEpOworICAgIGltcGwoKS0+cHJvZmlsZUVuZChhcmdz
LmF0KDApLmdldFN0cmluZygpLCAmY2FsbFN0YWNrKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKK30KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmI0NGUwNzQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEN1c3Rv
bUJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSA8djguaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitDQUxMQkFDS19GVU5DX0RFQ0woQ29uc29sZVByb2ZpbGUpCit7
CisgICAgSU5DX1NUQVRTKCJjb25zb2xlLnByb2ZpbGUoKSIpOworICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dF9zY29wZSh2ODo6Q29udGV4
dDo6R2V0Q3VycmVudCgpKTsKKyAgICB2ODo6Vjg6OlJlc3VtZVByb2ZpbGVyKCk7CisgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKENvbnNvbGVQcm9m
aWxlRW5kKQoreworICAgIElOQ19TVEFUUygiY29uc29sZS5wcm9maWxlRW5kKCkiKTsKKyAgICB2
ODo6Vjg6OlBhdXNlUHJvZmlsZXIoKTsKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q3VzdG9tQmluZGluZy5oCmluZGV4IDhkOTZhYWUuLmMyOWY0OTEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCkBAIC00OTMsNiArNDkzLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVj
dG9yQmFja2VuZFdyYXBDYWxsYmFjayk7CiAKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDb25z
b2xlUHJvZmlsZSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ29uc29sZVByb2ZpbGVFbmQp
OworCiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm9kZUl0ZXJhdG9yTmV4dE5vZGUpOwogICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKE5vZGVJdGVyYXRvclByZXZpb3VzTm9kZSk7CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlk
bAppbmRleCAzMTUwMGU2Li41NzdkYzdmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29s
ZS5pZGwKKysrIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCkBAIC01MCwxMCArNTAsOCBAQCBt
b2R1bGUgd2luZG93IHsKICAgICAgICAgW0RvbnRFbnVtXSBET01TdHJpbmcgbGFzdFdNTEVycm9y
TWVzc2FnZSgpOwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVH
R0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUgotICAgICAgICBbQ3VzdG9tQXJndW1l
bnRIYW5kbGluZ10gdm9pZCBwcm9maWxlKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxs
U3RyaW5nXSBET01TdHJpbmcgdGl0bGUpOwotICAgICAgICBbQ3VzdG9tQXJndW1lbnRIYW5kbGlu
Z10gdm9pZCBwcm9maWxlRW5kKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgdGl0bGUpOwotI2VuZGlmCisgICAgICAgIFtDdXN0b21dIHZvaWQgcHJvZmls
ZShpbiBbQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHRpdGxl
KTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBwcm9maWxlRW5kKGluIFtDb252ZXJ0VW5kZWZpbmVk
T3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdGl0bGUpOwogCiAgICAgICAgIHZvaWQgdGlt
ZShpbiBbQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHRpdGxl
KTsKICAgICAgICAgW0N1c3RvbUFyZ3VtZW50SGFuZGxpbmddIHZvaWQgdGltZUVuZChpbiBbQ29u
dmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHRpdGxlKTsK
</data>
<flag name="review"
          id="24762"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="24763"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43146</attachid>
            <date>2009-11-13 01:01:54 -0800</date>
            <delta_ts>2009-11-13 01:22:23 -0800</delta_ts>
            <desc>fixed argument conversion in JSC binding</desc>
            <filename>add-console-profile-easy-way-patch</filename>
            <type>text/plain</type>
            <size>6340</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDg3MGVlNy4uMTM5OTg5MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0xMS0xMyAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSAnY29uc29sZS5wcm9maWxlKCknIGFuZCAnY29u
c29sZS5wcm9maWxlRW5kKCknIHJlZ2FyZGxlc3Mgb2YgSkFWQVNDUklQVF9ERUJVR0dFUi4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEyOTMKKwor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NvbnNvbGVD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDb25zb2xlOjpwcm9maWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ29uc29sZTo6cHJvZmlsZUVuZCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21CaW5kaW5nLmg6CisgICAgICAgICogcGFnZS9Db25zb2xlLmlkbDoKKwogMjAwOS0xMS0xMiAg
QW5hbnRhbmFyYXlhbmFuIEcgSXllbmdhciAgPGFuYW50YUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYmRkY2FjMi4uNTMwYWMyYyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTY2NSw2ICs2NjUsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bVZvaWRDYWxsYmFjay5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21YUGF0aE5TUmVzb2x2ZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERhdGFiYXNlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAnLApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCmluZGV4IDljNDg0NjcuLjgzNjZiMzkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0NvbnNvbGUuaCIKICNpbmNsdWRlICJKYXZh
U2NyaXB0UHJvZmlsZS5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNBcnJheS5oPgogCiAjaW5jbHVkZSAiQ29uc29sZS5oIgpAQCAtNTAsNiArNTEs
MjIgQEAgSlNWYWx1ZSBKU0NvbnNvbGU6OnByb2ZpbGVzKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
ICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgbGlzdCk7CiB9CiAKK0pTVmFsdWUgSlND
b25zb2xlOjpwcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sK
KyAgICBTY3JpcHRDYWxsU3RhY2sgY2FsbFN0YWNrKGV4ZWMsIGFyZ3MsIDEpOworICAgIGNvbnN0
IFVTdHJpbmcgdGl0bGUgPSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4
ZWMsIGFyZ3MuYXQoMCkpOworICAgIGltcGwoKS0+cHJvZmlsZSh0aXRsZSwgJmNhbGxTdGFjayk7
CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNDb25zb2xlOjpwcm9m
aWxlRW5kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBTY3Jp
cHRDYWxsU3RhY2sgY2FsbFN0YWNrKGV4ZWMsIGFyZ3MsIDEpOworICAgIGNvbnN0IFVTdHJpbmcg
dGl0bGUgPSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGFyZ3Mu
YXQoMCkpOworICAgIGltcGwoKS0+cHJvZmlsZUVuZCh0aXRsZSwgJmNhbGxTdGFjayk7CisgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0
b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDRlMDc0Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcApAQCAt
MCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CisjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2lu
Y2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0FMTEJBQ0tfRlVOQ19ERUNM
KENvbnNvbGVQcm9maWxlKQoreworICAgIElOQ19TVEFUUygiY29uc29sZS5wcm9maWxlKCkiKTsK
KyAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRl
eHRfc2NvcGUodjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKSk7CisgICAgdjg6OlY4OjpSZXN1bWVQ
cm9maWxlcigpOworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK0NBTExCQUNLX0ZV
TkNfREVDTChDb25zb2xlUHJvZmlsZUVuZCkKK3sKKyAgICBJTkNfU1RBVFMoImNvbnNvbGUucHJv
ZmlsZUVuZCgpIik7CisgICAgdjg6OlY4OjpQYXVzZVByb2ZpbGVyKCk7CisgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmggYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAppbmRleCA4ZDk2YWFlLi5jMjlmNDkx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcu
aAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaApAQCAt
NDkzLDYgKzQ5Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICBERUNM
QVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRXcmFwQ2FsbGJhY2spOwogCisgICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soQ29uc29sZVByb2ZpbGUpOworICAgICAgICBERUNMQVJFX0NBTExCQUNL
KENvbnNvbGVQcm9maWxlRW5kKTsKKwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKE5vZGVJdGVy
YXRvck5leHROb2RlKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2RlSXRlcmF0b3JQcmV2
aW91c05vZGUpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwgYi9XZWJD
b3JlL3BhZ2UvQ29uc29sZS5pZGwKaW5kZXggMzE1MDBlNi4uNTc3ZGM3ZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbApA
QCAtNTAsMTAgKzUwLDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIFtEb250RW51bV0gRE9N
U3RyaW5nIGxhc3RXTUxFcnJvck1lc3NhZ2UoKTsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChFTkFC
TEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIKLSAg
ICAgICAgW0N1c3RvbUFyZ3VtZW50SGFuZGxpbmddIHZvaWQgcHJvZmlsZShpbiBbQ29udmVydFVu
ZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHRpdGxlKTsKLSAgICAgICAgW0N1
c3RvbUFyZ3VtZW50SGFuZGxpbmddIHZvaWQgcHJvZmlsZUVuZChpbiBbQ29udmVydFVuZGVmaW5l
ZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHRpdGxlKTsKLSNlbmRpZgorICAgICAgICBb
Q3VzdG9tXSB2b2lkIHByb2ZpbGUoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJp
bmddIERPTVN0cmluZyB0aXRsZSk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgcHJvZmlsZUVuZChp
biBbQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHRpdGxlKTsK
IAogICAgICAgICB2b2lkIHRpbWUoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJp
bmddIERPTVN0cmluZyB0aXRsZSk7CiAgICAgICAgIFtDdXN0b21Bcmd1bWVudEhhbmRsaW5nXSB2
b2lkIHRpbWVFbmQoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0
cmluZyB0aXRsZSk7Cg==
</data>
<flag name="review"
          id="24833"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="24834"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>